pax_global_header00006660000000000000000000000064134360404070014513gustar00rootroot0000000000000052 comment=97ece86dc11f43e87b1ecb1f335c13dbc3ec341e cdhit-4.8.1/000077500000000000000000000000001343604040700126205ustar00rootroot00000000000000cdhit-4.8.1/ChangeLog000066400000000000000000000044511343604040700143760ustar00rootroot00000000000000 CD-HIT ChangeLog CD-HIT-V4.6.1 (2012-08-27): Fix: a minor bug in handling masking letters; Add: a few minor changes and fixings to conform to debian packaging rules. CD-HIT-V4.6 (2012-04-25): Add: better auto tuning (for -M 0) of word table size for both single and multiple threaded execution; Fix: a minor bug for very long input sequences; Add: compiling option to change MAX_SEQ. CD-HIT-V4.5.8 (2012-03-24): Add: handling of asterisk at the end of sequences; Add: a few minor improvements in the parallelization; Add: new options -mask and -bak. CD-HIT-V4.5.7 (2011-12-16): Add: minor improvements to the word table size handling; Add: updated documentation file. CD-HIT-V4.5.6 (2011-09-02): Fix: -M for cd-hit-2d and cd-hit-est-2d; Fix: handling of invalid input sequences. CD-HIT-V4.5.5: Fix: a minor bug in option handling for score setting (-match, -mismatch); Fix: a minor bug in printing logs to stdout for cd-hit-2d and cd-hit-2d-est. CD-HIT-V4.5.4: Add: support for FASTQ file as input; Add: improvement to sequence partition for parallelization; Change: default identity threshold from 0.9 to 0.95 for EST. CD-HIT-V4.5.3: Add: cd-hit-454 program to the main package (cdhit-454.c++); Add: options to change the scoring settings; Add: options to control the length of unmatched region. CD-HIT-V4.5.2: MinorChange: default value of "-n" for DNA sequence from 8 to 10; MinorFix: alignment locations and length; CD-HIT-V4.5.1: MinorChange: default value of "-r" from 0 to 1; MinorFix: alignment length for "-G 0". CD-HIT-V4.5: Remove: multi-level counting; Fix: support for "-F" option. CD-HIT-V4.5-Beta3: Change: default word table size for "-M 0"; Fix: global identity computation. CD-HIT-V4.5-Beta2: Fix: alignment position and identity. CD-HIT-V4.5-Beta: Change: local band alignment; Change: filter threshold calculation; Fix: best alignment band searching; CD-HIT-V4.3: Fix: a few bugs related to multi-level counting; Change: implementation for -M option. CD-HIT-V4.2.x: Some bug fixings. CD-HIT-V4.2: Add: multi-level counting array to improve the speed. CD-HIT-V4.1.1: Change: improve estimating alignment band for sequences with low complexity. CD-HIT-V4.1: Fix: a bug in searching best alignment band; Fix: a bug in handling 'N' for EST; CD-HIT-V4.0: New implementation with parallelization using OpenMP. cdhit-4.8.1/FET.pl000077500000000000000000000061201343604040700135750ustar00rootroot00000000000000#!/usr/bin/perl use Storable; use strict; use Text::NSP::Measures::2D::Fisher::right; my $clstr_file = shift; my $anno_file = shift; my $store_file = shift; my @cls_list = (); my @fun_list = (); my $cur_cls = ""; my %cls2rep = (); my @cur_anno = (); open(TMP, $clstr_file) || die; while(my $ll = ) { # read .clstr files if ($ll =~ /^>/) { # the begin of a cluster $cur_cls = $ll; $cur_cls =~ s/^>(.*?)\s$/$1/; # print "$cur_cls|\n"; } else{ chop($ll); if ($ll =~ /^(\d+)\s+(\d+)(aa|nt),\s+>(.+)\.\.\./) { my @tmp = split(/\|\|/,$4); if ($#tmp == 0){ @cur_anno = (); } else{ @cur_anno = split(/,/, pop(@tmp)); } # print $cur_cls.$cur_anno[0]."|\n"; push(@cls_list, $cur_cls); push(@fun_list, [@cur_anno]); if ($ll =~ /^(\d+)\s+(\d+)(aa|nt),\s+>(.+)\.\.\.(.*)\*$/){ # print "$4\n"; $cls2rep{$cur_cls} = $4; # print "$cur_cls\t$4\n"; } } } } #print join("\n", @cls_list[0..10]); @cls_list = map {$cls2rep{$_}} @cls_list; #print join("\n", @cls_list[0..10]); #print "\n"; #foreach my $i (0..10){ # print join("\t",@{$fun_list[$i]}); # print "\n"; #} #print join("\n", @fun_list[0..10]); #exit(1); my %cls_size = (); my %cls_anno = (); my %anno_size = (); my $M = $#fun_list+1; #print $#fun_list."\t".$M."\n"; #print $#cls_list."\t".$M."\n"; foreach my $i (0..$#fun_list){ $cls_size{$cls_list[$i]}++; if ($#{$fun_list[$i]} >= 0) { # have annotation foreach my $anno (@{$fun_list[$i]}){ # print "$i\t$cls_list[$i]\t$anno\n"; $anno_size{$anno}++; $cls_anno{$cls_list[$i]}{$anno}++; } } } #while (my ($a,$b) = each %anno_size){ # print "$a\t$b\n"; #} #print "COG0171\t".$anno_ my %resu = (); while(my ($cls, $cls_s) = each %cls_size){ my @tmp = (); # $resu{$cls} = []; while (my ($anno,$anno_s) = each %{$cls_anno{$cls}}){ # print "$cls\t$cls_s\t$anno\t$anno_s\t$anno_size{$anno}"; # print "\n"; my $pvalue = calculateStatistic(n11=>$anno_s, n1p=>$cls_s, np1=>$anno_size{$anno}, npp=>$M); # anno_term, anno_size, clsper, anno_total, backper, enrichment, pvalue push @tmp, [$anno, $anno_s, $anno_s/$cls_s, $anno_size{$anno}, $anno_size{$anno}/$M, $anno_s*$M/($cls_s*$anno_size{$anno}), $pvalue]; # push $resu{$cls}, [sort{$a[0] <=> $b[0]} @tmp]; } @tmp = sort {$$a[6] <=> $$b[6]} @tmp; $resu{$cls} = [@tmp]; } store \%resu, $store_file; open(TMP, "> $anno_file") || die; print TMP "ClsName\tClsSize\tAnno_term\tAnno_size\tClsPer\tAnno_total\tSeq_total\tBackPer\tEnrichment\tPvalue\n"; while(my ($cls, $info) = each %resu){ foreach my $a (@{$info}){ #[$pvalue, $enrichment, $anno_s, $anno] print TMP join("\t",($cls, $cls_size{$cls}, $a->[0], $a->[1], $a->[2], $a->[3], $M, $a->[4], $a->[5], $a->[6]))."\n"; # print "$cls\t".join("\t",@{$a})."\n"; } # print "$cls\t$#{$info}\n"; } close(TMP) cdhit-4.8.1/Makefile000066400000000000000000000047041343604040700142650ustar00rootroot00000000000000CC = g++ -Wall -ggdb CC = g++ -pg CC = g++ # default with OpenMP # with OpenMP # in command line: # make openmp=yes ifeq ($(openmp),no) CCFLAGS = -DNO_OPENMP else CCFLAGS = -fopenmp endif #LDFLAGS = -static -lz -o #LDFLAGS = /usr/lib/x86_64-linux-gnu/libz.a -o # default with zlib # without zlib # in command line: # make zlib=no ifeq ($(zlib),no) CCFLAGS += LDFLAGS += -o else CCFLAGS += -DWITH_ZLIB LDFLAGS += -lz -o endif # support debugging # in command line: # make debug=yes # make openmp=yes debug=yes ifeq ($(debug),yes) CCFLAGS += -ggdb else CCFLAGS += -O2 endif ifdef MAX_SEQ CCFLAGS += -DMAX_SEQ=$(MAX_SEQ) endif PROGS = cd-hit cd-hit-est cd-hit-2d cd-hit-est-2d cd-hit-div cd-hit-454 # Propagate hardening flags CCFLAGS := $(CPPFLAGS) $(CCFLAGS) $(CXXFLAGS) .c++.o: $(CC) $(CCFLAGS) -c $< all: $(PROGS) clean: rm -f *.o $(PROGS) # programs cd-hit: cdhit-common.o cdhit-utility.o cdhit.o $(CC) $(CCFLAGS) cdhit.o cdhit-common.o cdhit-utility.o $(LDFLAGS) cd-hit cd-hit-2d: cdhit-common.o cdhit-utility.o cdhit-2d.o $(CC) $(CCFLAGS) cdhit-2d.o cdhit-common.o cdhit-utility.o $(LDFLAGS) cd-hit-2d cd-hit-est: cdhit-common.o cdhit-utility.o cdhit-est.o $(CC) $(CCFLAGS) cdhit-est.o cdhit-common.o cdhit-utility.o $(LDFLAGS) cd-hit-est cd-hit-est-2d: cdhit-common.o cdhit-utility.o cdhit-est-2d.o $(CC) $(CCFLAGS) cdhit-est-2d.o cdhit-common.o cdhit-utility.o $(LDFLAGS) cd-hit-est-2d cd-hit-div: cdhit-common.o cdhit-utility.o cdhit-div.o $(CC) $(CCFLAGS) cdhit-div.o cdhit-common.o cdhit-utility.o $(LDFLAGS) cd-hit-div cd-hit-454: cdhit-common.o cdhit-utility.o cdhit-454.o $(CC) $(CCFLAGS) cdhit-454.o cdhit-common.o cdhit-utility.o $(LDFLAGS) cd-hit-454 # objects cdhit-common.o: cdhit-common.c++ cdhit-common.h $(CC) $(CCFLAGS) cdhit-common.c++ -c cdhit-utility.o: cdhit-utility.c++ cdhit-utility.h $(CC) $(CCFLAGS) cdhit-utility.c++ -c cdhit.o: cdhit.c++ cdhit-utility.h $(CC) $(CCFLAGS) cdhit.c++ -c cdhit-2d.o: cdhit-2d.c++ cdhit-utility.h $(CC) $(CCFLAGS) cdhit-2d.c++ -c cdhit-est.o: cdhit-est.c++ cdhit-utility.h $(CC) $(CCFLAGS) cdhit-est.c++ -c cdhit-est-2d.o: cdhit-est-2d.c++ cdhit-utility.h $(CC) $(CCFLAGS) cdhit-est-2d.c++ -c cdhit-div.o: cdhit-div.c++ cdhit-common.h $(CC) $(CCFLAGS) cdhit-div.c++ -c cdhit-454.o: cdhit-454.c++ cdhit-common.h $(CC) $(CCFLAGS) cdhit-454.c++ -c PREFIX ?= /usr/local/bin install: for prog in $(PROGS); do \ install -m 0755 $$prog $(PREFIX); \ done install -m 0755 *.pl $(PREFIX); cdhit-4.8.1/README000066400000000000000000000026471343604040700135110ustar00rootroot00000000000000For cd-hit Requirements Since 4.8.1, cd-hit supports .gz format input file. This requires zlib library. zlib should be install in most Linux systems, so cd-hit should be compiled without issue. If your system don't have zlib, please install it first. * On Ubuntu, to install zlib: sudo apt install zlib1g-dev * On CentOS, to install zlib: sudo yum install zlib-devel How to compile 1. Compile with multi-threading support (default): make 2. Compile without multi-threading support (if you are on very old systems): make openmp=no 3. Compile without zlib (if you can not install zlib): make zlib=no Having problems to compile Please contact the author For cd-hit-auxtools cd cd-hit-auxtools make Compile cd-hit on MacOS To install CD-HIT on MacOS, first install gcc on your system. To use Homebrew (https://brew.sh/), see https://brewformulas.org/gcc. Then locate the path to your g++ executable, (e.g. /usr/local/Cellar/gcc/6.3.0_1/bin/g++-6, note: yours g++ path is likely to be different), then use command like this: make CC=/usr/local/Cellar/gcc/6.3.0_1/bin/g++-6 For psi-cd-hit please download BLAST+ (not legacy BLAST) and install the executables in your $PATH For more information, please visit http://cd-hit.org Most up-to-date documents are available at https://github.com/weizhongli/cdhit/wiki cd-hit is also available as web server, visit http://cd-hit.org for web server address. cdhit-4.8.1/cd-hit-2d-para.pl000077500000000000000000000304251343604040700155600ustar00rootroot00000000000000#!/usr/bin/perl -w # ============================================================================= # CD-HIT # http://cd-hit.org/ # http://bioinformatics.burnham.org/cd-hi # # program written by # Weizhong Li # UCSD, San Diego Supercomputer Center # La Jolla, CA, 92093 # Email liwz@sdsc.edu # ============================================================================= use strict; no strict "refs"; my $script_name = $0; my $script_dir = $0; $script_dir =~ s/[^\/]+$//; $script_dir = "./" unless ($script_dir); chop($script_dir); my $arg; my $in; my $indb2; my $out; my $arg_pass = ""; my $para = ""; my $host_no = 0; my @hosts = (); my $cd_hit_div_exe = "$script_dir/cd-hit-div"; my $cd_hit_div_pl = "$script_dir/cd-hit-div.pl"; my $cd_hit_2d_exe = "$script_dir/cd-hit-2d"; my $cd_hit_est_2d_exe = "$script_dir/cd-hit-est-2d"; my $clstr_merge_exe = "$script_dir/clstr_merge.pl"; my $seg_no = 2; my $seg_no2 = 8; my $restart_in = ""; my $queue = 0; my $local_cpu = 0; my $queue_type = "PBS"; my $prog = "cd-hit-2d"; my %stable_files = (); while ($arg=shift) { if ($arg eq "-h" ) { print_usage();} elsif ($arg eq "-i" ) { $in = shift; } elsif ($arg eq "-i2") { $indb2 = shift; } elsif ($arg eq "-o" ) { $out = shift; } elsif ($arg eq "--B") { $para = shift; } elsif ($arg eq "--L") { $local_cpu = shift; } elsif ($arg eq "--P") { $prog = shift; } elsif ($arg eq "--S") { $seg_no = shift; } elsif ($arg eq "--S2") { $seg_no2 = shift; } elsif ($arg eq "--Q" ) { $queue = shift; } elsif ($arg eq "--T" ) { $queue_type = shift; } elsif ($arg eq "--R" ) { $restart_in = shift; } else {$arg_pass .= " $arg "; } } ($in and $out) || print_usage(); if (not ($seg_no2 >1)) { die "You are not dividing 2nd input db, parallel mode won't help"; } if ($prog eq "cd-hit-est") { $cd_hit_2d_exe = $cd_hit_est_2d_exe; } my $pwd = `pwd`; chop($pwd); my $work_dir = "$out.cd-hit-para-tmp"; my $restart_file = "$out.restart"; my $indiv = "$work_dir/$in.div"; my $indiv2 = "$work_dir/$indb2.div"; my @commands = (); my @command_status = (); my $command_no = 0; my $cmd; my ($i, $j, $k, $i1, $j1, $k1); # readin a list of hosts if ($para) { open(PARA, "$para") || die "can not open $para"; while(my $ll= ){ chop($ll); $ll =~ s/\s//g; next unless ($ll); push(@hosts, $ll); $host_no++; } close(PARA); } if ($queue) { for ($i=0; $i<$queue; $i++) { push(@hosts, "queue_host.$i"); } $host_no = $queue; } if ($local_cpu) { for ($i=0; $i<$local_cpu; $i++) { push(@hosts, "localhost.$i"); } $host_no = $local_cpu; } die "no host" unless $host_no; if ($host_no > $seg_no2) { print "$indb2 was divided into $seg_no2 pieces, "; print "Your number of hosts ($host_no) is more than $seg_no, "; print "So, not all of hosts will be used\n"; } if (-e $restart_in) { read_restart(); } else { $cmd = `mkdir $work_dir`; assign_commands(); write_restart(); } #dbdiv run on master node? if ($command_status[0] eq "wait") { $cmd = `$commands[0]`; $command_status[0] = "done"; write_restart(); for ($i=0; $i<$seg_no; $i++) { my $idb = "$indiv-$i"; $stable_files{$idb} = 1; } } if ($command_status[1] eq "wait") { $cmd = `$commands[1]`; $command_status[1] = "done"; write_restart(); for ($i=0; $i<$seg_no2; $i++) { my $idb = "$indiv2-$i"; $stable_files{$idb} = 1; } } #main runing loop my $sleep_time = 1; while(1) { #refresh job status by checking output files #check whether all jobs are done or not my $finish_flag = 1; my $status_change = 0; for ($i=2; $i<$command_no; $i++) { next if ($command_status[$i] eq "done"); $finish_flag = 0; my $tcmd = $commands[$i]; my $output = ""; if ($tcmd =~ / -o\s+(\S+)/) { $output = $1; if ((-s $output) or (-s "$output.clstr")) { $command_status[$i] = "done"; $status_change = 1; } } } if ($status_change) { write_restart(); } else { sleep($sleep_time); print "."; } last if $finish_flag; my $job_sent = 0; for ($i=2; $i<$command_no; $i++) { next if ($command_status[$i] eq "done"); next if ($command_status[$i] eq "run"); my $tcmd = $commands[$i]; my $in1 = ""; my $in2 = ""; my $out_done = ""; if ($tcmd =~ / -i\s+(\S+)/ ) {$in1 = $1;} if ($tcmd =~ / -i2\s+(\S+)/) {$in2 = $1;} if ($tcmd =~ / -o\s+(\S+)/ ) {$out_done = "$1.done";} my $input_flag = 0; if (($in1 =~ /\S/) and ($in2 =~ /\S/)) { $input_flag = 1 if ((-s $in1) and (-s $in2)); } elsif ($in1 =~ /\S/) { $input_flag = 1 if (-s $in1); } else { die "Error at $tcmd\n"; } next unless $input_flag; #now input files are ready, wait wait_stable_file($in1); wait_stable_file($in2); my $thost_idx = wait_for_available_host(); my $thost = $hosts[$thost_idx]; my $tsh = "$work_dir/$out.$$.$thost_idx.sh"; my $tlock = "$work_dir/$out.$$.$thost_idx.lock"; my $trm = ""; $trm = "rm -f $in2" if ($in2 =~ /\S/); open(TSH, "> $tsh") || die; $cmd = `date > $tlock`; print TSH < $tlock $tcmd $trm rm -f $tlock date > $out_done EOD close(TSH); if ($local_cpu) { $cmd = `sh $tsh >/dev/null 2>&1 &`; $command_status[$i] = "run"; print "run at $thost $tcmd\n"; } elsif ($queue and ($queue_type eq "PBS")) { my $t = "para-$thost_idx"; open(QUEUE,"| qsub -N $t -o $t.log -e $t.err"); print QUEUE "cd $pwd; sh $tsh"; close(QUEUE); $command_status[$i] = "run"; } elsif ($queue and ($queue_type eq "SGE")) { my $t = "para-$thost_idx"; open(QUEUE,"| qsub -N $t"); print QUEUE </dev/null 2>&1 &'`; $command_status[$i] = "run"; print "run at $thost $tcmd\n"; } $sleep_time = 1; $job_sent = 1; last; } if ((not $job_sent) and ($sleep_time < 60)) { $sleep_time +=5; } } ############ main run loop ######## merge all .clstr file my $out_clstr = "$out.clstr"; if (not -s $out_clstr) { my @indb2_left = (); for ($i=0; $i<$seg_no; $i++) { my @t_clstr = (); for ($j=0; $j<$seg_no2; $j++) { my $tclstr = "$indiv2-$j.vs.$i.clstr"; if (-s $tclstr) {push(@t_clstr,$tclstr); } else {die "No file $tclstr\n";} if ($i==($seg_no-1)) { push(@indb2_left, "$indiv2-$j.vs.$i"); } } #merge my $tclstrs = join(" ", @t_clstr); if (@t_clstr > 1) { print "$clstr_merge_exe $tclstrs >> $out_clstr\n"; $cmd = `$clstr_merge_exe $tclstrs >> $out_clstr`; } else { print "cat $tclstrs >> $out_clstr"; $cmd = `cat $tclstrs >> $out_clstr`; } } my $out_clstr_ren = "$out.clstr.$$"; open(TMP, $out_clstr) || die; open(OTMP, "> $out_clstr_ren") || die; my $no = 0; my $cno; my $ll; while($ll=){ if ($ll =~ /^>Cluster (\d+)/) { print OTMP ">Cluster $no\n"; $no++; $cno = 0; } else { $ll =~ s/^\d+/$cno/; print OTMP $ll; $cno++; } } close(TMP); close(OTMP); sleep(10); $cmd = `mv $out_clstr_ren $out_clstr`; my $reps = join(" ", @indb2_left); $cmd = `cat $reps > $out`; } if (1) { $cmd = `grep CPU $work_dir/*log`; my @lls = split(/\n/, $cmd); my $cpu = 0; my $ll; foreach $ll (@lls) { if ($ll =~ /CPU\s+time\s+(\d+)/) { $cpu += $1; } } print "Total CPU time: $cpu\n"; } sub wait_for_available_host { my ($i, $j, $k); my $sleep = 30; while(1) { for ($i=0; $i<$host_no; $i++) { my $thost = $hosts[$i]; my $tlock = "$work_dir/$out.$$.$i.lock"; next if (-e $tlock); return $i; } sleep($sleep); $sleep +=30; if ($sleep >= 300) { $sleep = 30; } } } ########## END wait_for_available_host sub wait_stable_file { my ($i, $j, $k); my $f = shift; return if ($stable_files{$f}); return unless (-e $f); if (-e "$f.done") { $stable_files{$f} = 1; return; } my $size0 = -s $f; while(1) { sleep(10); my $size1 = -s $f; if ($size0 == $size1) { $stable_files{$f} = 1; last; } else {$size0 = $size1; } } } ########## END wait_stable_file sub write_restart { my ($i, $j, $k); open(RES, "> $restart_file") || die; for ($i=0; $i<$command_no; $i++) { print RES "$commands[$i]\n$command_status[$i]\n"; } close(RES); } ########## END write_restart sub assign_commands { my ($i, $j, $k); my $cmd; my ($idb, $idbo, $jdb, $jdbo, $idbout, $idblog, $jdblog); $command_no = 0; if ($seg_no >1) {$cmd = "$cd_hit_div_exe -i $in -o $indiv -div $seg_no";} elsif ($seg_no==1) {$cmd = "ln -s ../$in $indiv-0";} else {die "Wrong --S option";} push(@commands, $cmd); push(@command_status, "wait"); $command_no++; if ($seg_no2 >1){$cmd = "$cd_hit_div_pl $indb2 $indiv2 $seg_no2";} elsif ($seg_no2==1){$cmd = "ln -s ../$indb2 $indiv2-0"; } push(@commands, $cmd); push(@command_status, "wait"); $command_no++; for ($j=0; $j<$seg_no2; $j++) { #j for db2 $jdb = "$indiv2-$j"; $jdblog = "$jdb.log"; for ($i=0; $i<$seg_no; $i++) { $idb = "$indiv-$i"; $jdbo = "$indiv2-$j.vs.$i"; $cmd = "$cd_hit_2d_exe -i $idb -i2 $jdb -o $jdbo $arg_pass >> $jdblog"; push(@commands, $cmd); push(@command_status, "wait"); $command_no++; $jdb = $jdbo; } } } #### END assign_commands sub read_restart { $command_no = 0; open(RRRR, "$restart_in") || die; my $ll; while ($ll = ) { chop($ll); push(@commands, $ll); $ll = ; chop($ll); push(@command_status, $ll); $command_no++; } close(RRRR); } ########## END read_restart sub print_usage { print < #include "bioSequence.hxx" using namespace Min; using namespace Bio; Min::String Bio::Sequence::GetDescription( int deslen ) { String des = Description(); int i = 0; if( des[i] == '>' || des[i] == '@' || des[i] == '+' ) i += 1; if( des[i] == ' ' || des[i] == '\t' ) i += 1; if( deslen == 0 || deslen > des.Size() ) deslen = des.Size(); while( i < deslen and ! isspace( des[i] ) ) i += 1; des.Resize( i ); return des; } const char *dna_reverse_complimentary = "TBGDEFCHIJKLMNOPQRSAAVWXYZ"; void Bio::Sequence::ToReverseComplimentary() { int i, j; int n = seq.Size(); int m = (n/2) + (n%2); for(i=0, j=n-1; i%s\n", des.Data() ); }else{ fprintf( fout, ">%i\n", id ); } fprintf( fout, "%s\n", seq.Data() ); } } #define BUFSIZE 1024 int Bio::SequenceCache::Update( int max, bool idonly ) { char buf[ BUFSIZE+1 ]; char *res = NULL; FILE *fin = inputFile; String & ds = buffer.Description(); String & ss = buffer.SequenceData(); String & qs = buffer.QualityScore(); Clear(); if( fin == NULL ) return 0; while( feof( fin ) == 0 ){ if( (res=fgets( buf, BUFSIZE, fin )) == NULL ) break; if( getdes && (buf[0] == '>' || buf[0] == '@' || buf[0] == '+') ){ getdes = 0; if( buf[0] == '+' ){ current = & qs; }else{ if( ss.Size() ){ ss.ToUpper(); sequences.Append( new Sequence( buffer ) ); buffer.Reset(); if( sequences.Size() % 100000 == 0 ) printf( "Read %9i sequences ...\n", (int)sequences.Size() ); } current = & ss; ds = buf + 1; while( ds[ds.Size()-1] != '\n' ){ if( (res=fgets( buf, BUFSIZE, fin )) == NULL ) break; ds += buf; } ds.Chop(); if( idonly ){ int d = 0; while( d < ds.Size() && isspace( ds[d] ) ==0 ) d += 1; ds.Resize( d ); } //printf( "%s\n", ds->Data() ); if( max > 0 && (int)sequences.Size() >= max ) return sequences.Size(); } }else{ assert( current != NULL ); *current += buf; while( current->Size() && isspace( (*current)[current->Size()-1] ) ) current->Chop(); getdes = current == & ss || (current == & qs && qs.Size() == ss.Size()); } } if( ss.Size() ){ sequences.Append( new Sequence( buffer ) ); buffer.Reset(); } return sequences.Size(); } bool Bio::SequenceList::ReadFastAQ( const Min::String & file, bool idonly, FILE *fout_log ) { char buf[ BUFSIZE+1 ]; FILE *fin = fopen( file.Data(), "r" ); bool wasEmpty = sequences.Size() == 0; char *res = NULL; int max = 0, min = 0x7fffffff; int getdes = 1; Sequence one; String & ds = one.Description(); String & ss = one.SequenceData(); String & qs = one.QualityScore(); String *data=NULL; if( fin == NULL ) return 0; while( feof( fin ) == 0 ){ if( (res=fgets( buf, BUFSIZE, fin )) == NULL ) break; if( getdes && (buf[0] == '>' || buf[0] == '@' || buf[0] == '+') ){ getdes = 0; if( buf[0] == '+' ){ data = & qs; }else{ if( ss.Size() ){ ss.ToUpper(); if( ss.Size() > max ) max = ss.Size(); if( ss.Size() < min ) min = ss.Size(); sequences.Append( new Sequence( one ) ); one.Reset(); if( sequences.Size() % 100000 == 0 ) fprintf( fout_log, "Read %9i sequences ...\n", (int)sequences.Size() ); } data = & ss; ds = buf + 1; while( ds[ds.Size()-1] != '\n' ){ if( (res=fgets( buf, BUFSIZE, fin )) == NULL ) break; ds += buf; } ds.Chop(); if( idonly ){ int d = 0; while( d < ds.Size() && isspace( ds[d] ) ==0 ) d += 1; ds.Resize( d ); } //printf( "%s\n", ds->Data() ); } }else{ *data += buf; while( data->Size() && isspace( (*data)[data->Size()-1] ) ) data->Chop(); getdes = data == & ss || (data == & qs && qs.Size() == ss.Size()); } } fclose( fin ); if( ss.Size() ){ if( ss.Size() > max ) max = ss.Size(); if( ss.Size() < min ) min = ss.Size(); sequences.Append( new Sequence( one ) ); } if( wasEmpty ){ max_length = max; min_length = min; }else{ if( max > max_length ) max_length = max; if( min < min_length ) min_length = min; } return true; } void Bio::SequenceList::SortByLength() { if( max_length == min_length ) return; int i; int N = sequences.Size(); int M = max_length - min_length + 1; Min::Array count( M, 0 ); // count for each size = max_len - i Min::Array accum( M, 0 ); // count for all size > max_len - i Min::Array offset( M, 0 ); // offset from accum[i] when filling sorting Min::Array sorting( N ); for (i=0; iLength() ] ++; for (i=1; iLength(); int id = accum[len] + offset[len]; //sequences[i].index = id; sorting[id] = sequences[i]; offset[len] ++; } sequences.Swap( sorting ); } int Bio::SequenceList::RemoveEmptySequences() { int i, M=0, N = sequences.Size(); for(i=0; iLength() == 0 ){ delete sequences[i]; continue; } sequences[M++] = sequences[i]; } sequences.Resize( M ); } void Bio::SequenceList::Shuffle() { int i, N = sequences.Size(); if( N <= 1 ) return; for(i=N-1; i>=0; i--){ int rnd = (int)(i * (rand() / (1.0 + RAND_MAX))); Sequence *seq = sequences[i]; sequences[i] = sequences[rnd]; sequences[rnd] = seq; } } cdhit-4.8.1/cd-hit-auxtools/bioSequence.hxx000066400000000000000000000053301343604040700206400ustar00rootroot00000000000000//================================================================= // This file is a part of cdhit-dup. // By Limin Fu (phoolimin@gmail.com, lmfu@ucsd.edu) //================================================================= #include #include #include "minArray.hxx" #include "minString.hxx" #define BEGIN_NS_BIO namespace Bio { #define END_NS_BIO } BEGIN_NS_BIO class Sequence { uint32_t id; Min::String des; Min::String seq; Min::String qs; public: Sequence(){ id = 0; } #if 0 Sequence( const Sequence & other ){ id = other.id; des = other.des; seq = other.seq; qs = other.qs; } #endif void Copy( const Sequence & other ){ des = other.des; seq = other.seq; qs = other.qs; } int Length()const{ return seq.Size(); } Min::String& Description(){ return des; } Min::String& SequenceData(){ return seq; } Min::String& QualityScore(){ return qs; } Min::String GetDescription( int deslen = 0 ); void Reset(){ des.Reset(); seq.Reset(); qs.Reset(); } void ToReverseComplimentary(); void Print( FILE *fout = stdout, int width = 0 ); }; class SequenceCache { Min::Array sequences; FILE *inputFile; bool getdes; Sequence buffer; Min::String *current; public: SequenceCache( const Min::String & file ){ inputFile = fopen( file.Data(), "r" ); current = NULL; getdes = true; } ~SequenceCache(){ if( inputFile ) fclose( inputFile ); Clear(); } void Clear(){ for(int i=0,n=sequences.Size(); i sequences; int max_length; int min_length; public: SequenceList(){ max_length = min_length = 0; } ~SequenceList(){ Clear(); } void Clear(){ for(int i=0,n=sequences.Size(); iLength(); iLength() > max_length ) max_length = sequences[i]->Length(); } return max_length; } int MinLength(){ int i, N = sequences.Size(); if( N == 0 ) return 0; for(i=1, min_length = sequences[0]->Length(); iLength() < min_length ) min_length = sequences[i]->Length(); } return min_length; } int RemoveEmptySequences(); void Shuffle(); Sequence* operator[]( int i )const{ return sequences[i]; } }; END_NS_BIO cdhit-4.8.1/cd-hit-auxtools/cd-hit-dup-PE-out.pl000077500000000000000000000055131343604040700212550ustar00rootroot00000000000000#!/usr/bin/perl my $script_name = $0; my $script_dir = $0; $script_dir =~ s/[^\/]+$//; chop($script_dir); $script_dir = "./" unless ($script_dir); use Getopt::Std; getopts("i:j:o:p:c:",\%opts); die usage() unless ($opts{i} and $opts{j} and $opts{o} and $opts{p} and $opts{c} ); my ($i, $j, $k, $cmd); my ($ll, $lla, $llb, $id, $ida, $idb, $seq, $seqa, $seqb, $qua, $quaa, $quab); my ($len, $lena, $lenb); my %FHZ=(); my $fastq1 = $opts{i}; my $fastq2 = $opts{j}; my $clstr_file = $opts{c}; my $outfile1 = $opts{o}; my $outfile2 = $opts{p}; my $format = input_test($fastq1); #fasta or fastq my %rep_ids = (); open(TMP, $clstr_file) || die "can not open $clstr_file"; while($ll = ){ if ($ll =~ /^>/) { next; } else { chop($ll); if ($ll =~ /\*$/) { if ($ll =~ /\s(\d+)(aa|nt), >(.+)\.\.\./) { my $id = $3; $rep_ids{$id} = 1; } } } } close(TMP); open(INPUTa, $fastq1) || die "can not open $fastq1"; open(OUTa, "> $outfile1") || die "can not write to $outfile1"; open(INPUTb, $fastq2) || die "can not open $fastq2"; open(OUTb, "> $outfile2") || die "can not write to $outfile2"; if ($format eq "fasta") { my $flag; while($lla = and $llb=) { if ( ($lla =~ /^>/) and ($llb =~ /^>/) ) { my $ida = substr($lla,1); chop($ida); $ida =~ s/\s.+$//; my $idb = substr($llb,1); chop($idb); $idb =~ s/\s.+$//; $flag = (($rep_ids{$ida}) or ($rep_ids{$idb})) ? 1 : 0; } if ($flag) { print OUTa $lla; print OUTb $llb; } } } else { my $flag; while($lla = and $llb=) { if ( ($lla =~ /^@/) and ($llb =~ /^@/) ) { my $ida = substr($lla,1); chop($ida); $ida =~ s/\s.+$//; my $idb = substr($llb,1); chop($idb); $idb =~ s/\s.+$//; $flag = (($rep_ids{$ida}) or ($rep_ids{$idb})) ? 1 : 0; if ($flag) { print OUTa $lla; print OUTb $llb; $lla = ; print OUTa $lla; $lla = ; print OUTa $lla; $lla = ; print OUTa $lla; $llb = ; print OUTb $llb; $llb = ; print OUTb $llb; $llb = ; print OUTb $llb; } } } } close(INPUTa); close(OUTa); close(INPUTb); close(OUTb); sub usage { <; close(TTT); my $c = substr($ll,0,1); if ($c eq ">") {return "fasta";} else {return "fastq";} } cdhit-4.8.1/cd-hit-auxtools/cdhit-dup.cxx000066400000000000000000000766751343604040700202760ustar00rootroot00000000000000//================================================================= // This file is a part of cdhit-dup. // By Limin Fu (phoolimin@gmail.com, lmfu@ucsd.edu) //================================================================= #include #include #include "minString.hxx" #include "minArray.hxx" #include "minMap.hxx" #include "bioSequence.hxx" using namespace Min; using namespace Bio; class SequenceCluster : public Array { int id; int abundance; int chiHead; int chiTail; public: SequenceCluster( Sequence *rep = NULL ){ id = 0; abundance = 0; chiHead = chiTail = 0; if( rep ) Append( rep ); } String GetDescription( Sequence *seq, int deslen=0 ); int GetID()const{ return id; } void SetID( int i ){ id = i; } int GetAbundance()const{ return abundance; } void SetAbundance( int ab ){ abundance = ab; } int GetChimericParent1()const{ return chiHead; } int GetChimericParent2()const{ return chiTail; } void SetChimericParent( int head, int tail ){ chiHead = head; chiTail = tail; } void Write( FILE *fout = stdout, int id = 0, int deslen=0, const char *des=NULL ); bool operator<( const SequenceCluster & other ){ assert( Size() && other.Size() ); return (*this)[0]->Length() < other[0]->Length(); } }; String SequenceCluster::GetDescription( Sequence *seq, int deslen ) { String des = seq->Description(); int i = 0; if( des[i] == '>' || des[i] == '@' || des[i] == '+' ) i += 1; if( des[i] == ' ' || des[i] == '\t' ) i += 1; if( deslen == 0 || deslen > des.Size() ) deslen = des.Size(); while( i < deslen and ! isspace( des[i] ) ) i += 1; des.Resize( i ); return des; } void SequenceCluster::Write( FILE *fout, int id, int deslen, const char *cdes ) { //Array & seqs = *this; SequenceCluster & seqs = *this; String des = GetDescription( seqs[0], deslen ); int i = 0, n = Size(); fprintf( fout, ">Cluster %i%s\n", id, cdes ? cdes : "" ); fprintf( fout, "%i\t%int, >%s... *\n", 0, seqs[0]->Length(), des.Data() ); for(i=1; iLength(); int mm = CountMismatch( seqs[0]->SequenceData(), seqs[i]->SequenceData() ); fprintf( fout, "%i\t%int, >%s... at 1:%i:1:%i/+/%.2f%%\n", i, len, des.Data(), len, len, 100*(len-mm)/(float)len ); } } void WriteClusters( Array & clusters, const String & name = "temp.txt", int deslen = 0 ) { String cfile = name + ".clstr"; String cfile2 = name + "2.clstr"; FILE *fout1 = fopen( name.Data(), "w" ); FILE *fout2 = fopen( cfile.Data(), "w" ); FILE *fout3 = fopen( cfile2.Data(), "w" ); char cdes[200]; int i, n = clusters.Size(); int k1 = 0, k2 = 0; for(i=0; iPrint( fout1 ); cluster.SetID( k1 ); cluster.Write( fout2, k1++, deslen ); }else{ head = clusters[head].GetID(); tail = clusters[tail].GetID(); sprintf( cdes, " chimeric_parent1=%i,chimeric_parent2=%i", head, tail ); cluster.Write( fout3, k2++, deslen, cdes ); } } fclose( fout1 ); fclose( fout2 ); fclose( fout3 ); } //liwz //skip fout1 since R1 being modified due to padding void WriteClusters_clstronly( Array & clusters, const String & name = "temp.txt", int deslen = 0 ) { String cfile = name + ".clstr"; String cfile2 = name + "2.clstr"; // FILE *fout1 = fopen( name.Data(), "w" ); FILE *fout2 = fopen( cfile.Data(), "w" ); FILE *fout3 = fopen( cfile2.Data(), "w" ); char cdes[200]; int i, n = clusters.Size(); int k1 = 0, k2 = 0; for(i=0; iPrint( fout1 ); cluster.SetID( k1 ); cluster.Write( fout2, k1++, deslen ); }else{ head = clusters[head].GetID(); tail = clusters[tail].GetID(); sprintf( cdes, " chimeric_parent1=%i,chimeric_parent2=%i", head, tail ); cluster.Write( fout3, k2++, deslen, cdes ); } } // fclose( fout1 ); fclose( fout2 ); fclose( fout3 ); } void WriteClusters_seqonly( Array & clusters, const String & name = "temp.txt", int deslen = 0 ) { FILE *fout1 = fopen( name.Data(), "w" ); int i, n = clusters.Size(); for(i=0; iPrint( fout1 ); } } fclose( fout1 ); } void SortByAbundance( Array & clusters ) { int i, max = 0, min = 0; int N = clusters.Size(); if( N <= 1 ) return; max = min = clusters[0].GetAbundance(); for(i=1; i max ) max = ab; if( ab < min ) min = ab; } int M = max - min + 1; Min::Array count( M, 0 ); // count for each size = max_len - i Min::Array accum( M, 0 ); // count for all size > max_len - i Min::Array offset( M, 0 ); // offset from accum[i] when filling sorting Array sorted( N ); for (i=0; i= min ); return (int)sqrt( (len - min) / 10); } int HashingLength( int dep, int min ) { return min + 10 * dep * dep; } struct ChimericSource { int index; int head; int tail; ChimericSource( int i=0, int h=0, int t=0 ){ index = i; head = h; tail = t; } }; struct HashHit { int index; int offset; HashHit( int i = 0, int o = 0 ){ index = i; offset = o; } }; #define MAX_OFFSETS 5 struct HashHit3 { int index; int size; int offsets[MAX_OFFSETS]; int counts[MAX_OFFSETS]; // number of word hits with the corresponding offsets; HashHit3( int i = 0, int o = 0 ){ memset( offsets, 0, MAX_OFFSETS*sizeof(int) ); memset( counts, 0, MAX_OFFSETS*sizeof(int) ); index = i; size = 1; offsets[0] = o; counts[0] = 1; } void Update( int o ){ int imin = 0, min = counts[0]; for(int i=0; i max ){ max = counts[i]; imax = i; } } //printf( "BestOffset: %i %i %i %i\n", max, imax, size, offsets[imax] ); return offsets[imax]; } }; typedef Hash > HashHitTable; void UpdateHashTables( Array > & middles, String & seq, int id, int shared, int min, int primer ) { unsigned int hash = MakeHash( seq, shared ); int j, k; for(j=primer; (j+shared)<=seq.Size(); j+=shared){ int dep = j ? 0 : HashingDepth( seq.Size()-j, min ); for(k=0; k<=dep; k++){ hash = MakeHash( seq, j, HashingLength( k, min ) ); middles[j][k][hash].Append( id ); } } } void ClusterDuplicate( SequenceList & seqlist, Array & clusters, bool mlen, int errors = 0, float errors2 = 0.0 ) { int primer = 0; int maxmm = errors; unsigned int hash; int i, j, k, K, K2, M, N = seqlist.Count(); int shared, min, count = 0; int max = seqlist.MaxLength(); Hash > wholes; Array > > > middles; Node > *node; String & first = seqlist[0]->SequenceData(); primer = first.Size(); for(i=1; iSequenceData(), 0, primer, 0 ); if( primer < 15 ){ primer = 0; break; } } if( errors == 0 ) maxmm = max * errors2; printf( "primer = %i\n", primer ); shared = (seqlist.MinLength() - primer) / (maxmm + 1); if( shared < 30 ) shared = 30; min = shared; middles.Resize( max ); for(i=0; (i+shared)<=max; i++) middles[i].Resize( HashingDepth( max - i, min ) + 1 ); for(i=0; iSequenceData(); int qlen = seq.Size(); bool clustered = false; maxmm = errors; if( errors == 0 ) maxmm = qlen * errors2; if( i && (i%10000 == 0) ) printf( "Clustered %9i sequences with %9i clusters ...\n", i, (int)clusters.Size() ); hash = MakeHash( seq ); node = wholes.Find( hash ); if( node != NULL ){ Array & hits = node->value; for(j=0, M=hits.Size(); jSequenceData(); if( qlen == rep.Size() && Compare( seq, rep ) == 0 ){ clust.Append( seqlist[i] ); clustered = true; break; } } if( clustered ) continue; for(j=0, M=hits.Size(); jSequenceData(); if( mlen && rep.Size() != qlen ) continue; K = ComparePrefix( seq, rep, maxmm ); if( K == qlen ){ clust.Append( seqlist[i] ); clustered = true; break; } } if( clustered ) continue; } int dep = HashingDepth( qlen - primer, min ); int hashlen = HashingLength( dep, min ); hash = MakeHash( seq, primer, hashlen ); node = middles[primer][ dep ].Find( hash ); if( node ){ Array & hits = node->value; for(j=0, M=hits.Size(); jSequenceData(); if( mlen && rep.Size() != qlen ) continue; K = ComparePrefix( seq, rep, maxmm ); if( K == qlen ){ clustered = true; clust.Append( seqlist[i] ); break; } } } //seqlists[i]->Print(); int start = primer; dep = 0;//HashingDepth( shared, min ); while( maxmm == 0 && clustered == false && (start+2*shared) <= qlen && start <= primer + (maxmm+1) * shared ){ hash = MakeHash( seq, start, shared ); node = middles[start][ dep ].Find( hash ); start += shared; if( node == NULL ) continue; Array & hits = node->value; for(j=0, M=hits.Size(); jSequenceData(); if( mlen && rep.Size() != qlen ) continue; K = ComparePrefix( seq, rep, maxmm ); if( K == qlen ){ clustered = true; clust.Append( seqlist[i] ); break; } } } if( clustered == false ){ hash = MakeHash( seq ); UpdateHashTables( middles, seq, clusters.Size(), shared, min, primer ); wholes[ hash ].Append( clusters.Size() ); clusters.Append( SequenceCluster( seqlist[i] ) ); } } } void PrintChimeric( FILE *fout, Sequence *SQ, Sequence *SA, Sequence *SB, int IX, int GAP = 0 ) { String A( SA->SequenceData() ), B( SB->SequenceData() ), Q( SQ->SequenceData() ); fprintf( fout, "\nQuery = %s\n", SQ->Description().Data() ); fprintf( fout, "Parent A = %s\n", SA->Description().Data() ); fprintf( fout, "Parent B = %s\n", SB->Description().Data() ); fprintf( fout, "Crossover = %i\n", IX ); //if( offset != 0 ) fprintf( fout, "Offset = %i\n", offset ); //fprintf( fout, "LQA = %i\n", LQA ); //fprintf( fout, "LQB = %i\n", LQB ); //fprintf( fout, "RQA = %i\n", RQA ); //fprintf( fout, "RQB = %i\n", RQB ); if( GAP > 0 ){ while( GAP-- > 0 ) B.Insert( '-', IX ); }else if( GAP < 0 ){ while( GAP++ < 0 ){ A.Insert( '-', IX ); Q.Insert( '-', IX ); } } A.Insert( "|X|", IX ); Q.Insert( "|X|", IX ); B.Insert( "|X|", IX ); int I, J, W = 80; int LA = A.Size(); int LB = B.Size(); int LQ = Q.Size(); int L = LA; if( L < LB ) L = LB; if( L < LQ ) L = LQ; for(I=0; ISequenceData() ), B( SB->SequenceData() ), Q( SQ->SequenceData() ); fprintf( fout, "\nQuery = %s\n", SQ->Description().Data() ); fprintf( fout, "Parent A = %s\n", SA->Description().Data() ); fprintf( fout, "Parent B = %s\n", SB->Description().Data() ); fprintf( fout, "Crossover = %i\n", IX ); //if( offset != 0 ) fprintf( fout, "Offset = %i\n", offset ); //fprintf( fout, "LQA = %i\n", LQA ); //fprintf( fout, "LQB = %i\n", LQB ); //fprintf( fout, "RQA = %i\n", RQA ); //fprintf( fout, "RQB = %i\n", RQB ); if( offset > 0 ){ while( offset-- > 0 ){ A.Insert( '-', 0 ); Q.Insert( '-', 0 ); } }else if( offset < 0 ){ while( offset++ < 0 ) B.Insert( '-', 0 ); } A.Insert( "|X|", IX ); Q.Insert( "|X|", IX ); B.Insert( "|X|", IX ); int I, J, W = 80; int LA = A.Size(); int LB = B.Size(); int LQ = Q.Size(); int L = LA; if( L < LB ) L = LB; if( L < LQ ) L = LQ; for(I=0; Ioffset = offset; this->count = count; } bool operator<( const OffsetCount & other )const{ if( count != other.count ) return count > other.count; return offset < other.offset; } }; void DetectChimeric( Array & clusters, Array & chistat, int max, int shared, float percent, float abratio = 1, int minabu = 2 ) { int primer = 20; unsigned int hash; int i, j, k, K, K2, M, N = clusters.Size(); int min, count = 0, maxmm = 2, maxmm2 = maxmm + maxmm; Hash > hashTable; Node > *node; Hash chimap; Array hitMapping; Array hashes; Array hitList; Array parentAList; Array parentBList; Array offsetCounts; FILE *debug = NULL; if( N <= 2 ) return; if( shared < 20 ) shared = 20; min = shared; //debug = fopen( "debug.txt", "w+" ); hitList.Resize( N ); hitMapping.Resize( N ); String & first = clusters[0][0]->SequenceData(); primer = first.Size(); for(i=1; iSequenceData(), 0, primer, 0 ); if( primer < 15 ){ primer = 0; break; } } printf( "primer = %i\n", primer ); printf( "Searching for chimeric clusters ...\n" ); for(i=0; iSequenceData(); int qlen = seq.Size(); int qn = clusters[i].GetAbundance(); int maxmm = (int)(0.01*qlen*percent); int maxmm2 = (int)(0.015*qlen*percent); if( i && i % 1000 ==0 ) printf( "Checked %9i clusters, detected %9i chimeric clusters\n", i, (int)chistat.Size() ); if( qn < minabu ) break; hashes.ResetSize( primer ); for(j=primer; j<=qlen-shared; j++) hashes.Append( MakeHash( seq, j, shared ) ); if( qlen < (2*shared + primer) ){ for(j=primer,k=hashes.Size(); jPrint(); HashHit3 *hit = & hitList[0]; for(j=0,M=hitList.Size(); jindex] = 0; hitList.ResetSize( 0 ); bool detected = false; bool duplicate = false; int start = primer; int dep = 0; int proto = -1; int protomm = max; while( (start + shared) <= qlen ){ hash = hashes[start]; node = hashTable.Find( hash ); start += 1; if( node == NULL ) continue; Array & hits = node->value; for(j=0, M=hits.Size(); j & hits = hitList; for(j=0, M=hits.Size(); jSequenceData(); if( clusters[hit].GetAbundance() < qn*abratio ) continue; offsetCounts.ResetSize( 0 ); for(k=0; k= (primer + shared) ) parentAList.Append( ParentInfo( hit, 0, head, 0 ) ); int best = offsetCounts[0].offset; for(k=0; k<2; k++){ // check the best two offsets: best = offsetCounts[k].offset; if( qlen + best < rep.Size() ){ tail = CompareSuffix( seq, qlen-1, rep, qlen+best-1, 0, maxmm ); if( tail >= shared ){ parentBList.Append( ParentInfo( hit, qlen - tail + best, tail, best ) ); break; } }else{ tail = CompareSuffix( seq, rep.Size()-best-1, rep, rep.Size()-1, 0, maxmm ); if( tail >= shared ){ parentBList.Append( ParentInfo( hit, rep.Size() - tail, tail, best ) ); break; } } tail = 0; } if( (head + tail) >= qlen ){ int X = (head + qlen - tail) / 2; int mm = CountMismatch2( seq, rep, 0, X, maxmm2 ); mm += CountMismatch3( seq, X, rep, X+best, qlen, maxmm2 ); //printf( "\noffset = %5i; mm = %5i\n", best, mm ); //PrintChimeric2( stdout, clusters[i][0], clusters[hit][0], clusters[hit][0], X, best ); if( mm <= maxmm2 /*&& rep.Size() >= qlen*/ ){ if( mm < protomm ){ protomm = mm; proto = hit; } } }else{ int mm = CountMismatch2( seq, rep, 0, qlen, maxmm2 ); if( mm <= maxmm2 /*&& rep.Size() >= qlen*/ ){ if( mm < protomm ){ protomm = mm; proto = hit; } } } } if( protomm <= maxmm ){ if( chimap.Find( proto ) ){ ChimericSource cs = chistat[chimap[proto]]; chimap[i] = chistat.Size(); chistat.Append( ChimericSource( i, cs.head, cs.tail ) ); } continue; } //printf( "debug: %9i %9i %9i\n", (int)hitList.Size(), (int)parentAList.Size(), (int)parentBList.Size() ); parentBList.QuickSort(); for(j=0, M=parentAList.Size(); jSequenceData(); for(k=0; kSequenceData(); if( infoA.index == infoB.index ) continue; if( (infoB.start - infoB.offset) > infoA.len ) break; int XA = (infoA.len + infoB.start - infoB.offset) / 2; int XB = XA + infoB.offset; int LQA = CountMismatch( seq, repA, 0, XA ); int RQA = CountMismatch( seq, repA, XA, qlen ); int LQB = CountMismatch3( seq, 0, repB, 0, XA, qlen ); int RQB = CountMismatch3( seq, XA, repB, XB, qlen - XA, qlen ); if( proto < 0 ) protomm = maxmm2; if( LQB > (protomm + maxmm) && RQA > (protomm + maxmm) && (LQA + RQB) <= protomm ) { //PrintChimeric2( stdout, clusters[i][0], clusters[infoA.index][0], clusters[infoB.index][0], XA, infoB.offset ); detected = true; chimap[i] = chistat.Size(); chistat.Append( ChimericSource( i, infoA.index, infoB.index ) ); count += 1; break; } } if( detected ) break; } //if( (i+1) % 1000 ==0 ) printf( "Checked %9i clusters, detected %9i chimeric clusters\n", i+1, chistat.Size() ); //if( detected == false && duplicate == false ){ if( detected == false ){ for(j=primer; j max2 ? max1 : max2; if( uselen <= 0 ) uselen = max; if( uselen > max ) uselen = max; N = seqlist.Count(); for(k=0; kQualityScore().Size(); String & s1 = first->SequenceData(); String & s2 = second->SequenceData(); String & qs1 = first->QualityScore(); String & qs2 = second->QualityScore(); int n1 = s1.Size(); int n2 = s2.Size(); int i, j, m = 1; if( n1 < uselen ){ s1.Resize( uselen, 'N' ); qs1.Resize( uselen, 0 ); } if( n2 < uselen ){ s2.Resize( uselen, 'N' ); qs2.Resize( uselen, 0 ); seqlist2_modified = 1; } seqlist[k]->SequenceData().Chop( n1 - uselen ); seqlist[k]->SequenceData() += s2.Data(); seqlist[k]->SequenceData().Chop( n2 - uselen ); if( qs ){ seqlist[k]->QualityScore().Chop( n1 - uselen ); seqlist[k]->QualityScore() += qs2.Data(); seqlist[k]->QualityScore().Chop( n2 - uselen ); } } seqlist_modified = 1; }else if( uselen > 0 ){ N = seqlist.Count(); for(k=0; kQualityScore().Size(); String & s1 = first->SequenceData(); String & qs1 = first->QualityScore(); int n1 = s1.Size(); int i, j, m = 1; if( n1 < uselen ) continue; seqlist_modified = 1; seqlist[k]->SequenceData().Chop( n1 - uselen ); if( qs ) seqlist[k]->QualityScore().Chop( n1 - uselen ); } } if( seqlist.Count() == 0 ){ printf( "Abort: no sequence available for the analysis!\n" ); return 1; } if( seqlist.MaxLength() != seqlist.MinLength() ){ seqlist.SortByLength(); printf( "Sorted by length ...\n" ); } Array clusters; Array chistat; printf( "Start clustering duplicated sequences ...\n" ); ClusterDuplicate( seqlist, clusters, matchLength, errors, errors2 ); printf( "Number of reads: %i\n", seqlist.Count() ); printf( "Number of clusters found: %i\n", clusters.Size() ); for(i=0, m=clusters.Size(); iDescription(); int ab = 1; int pos = des.Find( "_abundance_" ); if( pos ) ab = strtol( des.Data() + pos + 10, NULL, 10 ); clusters[i].SetAbundance( ab ); } } SortByAbundance( clusters ); DetectChimeric( clusters, chistat, seqlist.MaxLength(), shared, percent, abratio, abundance ); for(i=0, m=0; i seqlist N = seqlist.Count(); for(k=0; kQualityScore().Size(); seqlist[k]->SequenceData().Reset(); seqlist[k]->SequenceData() += seqlist2[k]->SequenceData(); seqlist[k]->Description().Reset(); seqlist[k]->Description() += seqlist2[k]->Description(); if( qs ){ seqlist[k]->QualityScore().Reset(); seqlist[k]->QualityScore() += seqlist2[k]->QualityScore(); } seqlist_modified = 1; } // write R2 printf( "Write R2 reads\n" ); WriteClusters_seqonly( clusters, output2, deslen ); } if (seqlist_modified){ // since seqlist was nodified, re-read from file, this time use seqlist2 as storage seqlist2.Clear(); if( not seqlist2.ReadFastAQ( input ) ){ printf( "File openning failed: %s\n", input.Data() ); return 1; } // copy seqlist2 => seqlist N = seqlist.Count(); for(k=0; kQualityScore().Size(); seqlist[k]->SequenceData().Reset(); seqlist[k]->SequenceData() += seqlist2[k]->SequenceData(); seqlist[k]->Description().Reset(); seqlist[k]->Description() += seqlist2[k]->Description(); if( qs ){ seqlist[k]->QualityScore().Reset(); seqlist[k]->QualityScore() += seqlist2[k]->QualityScore(); } } // overwrite R1 if R1 was modified printf( "Write R1 reads\n" ); WriteClusters_seqonly( clusters, output, deslen ); } printf( "Done!\n" ); return 0; } cdhit-4.8.1/cd-hit-auxtools/cdhit-lap.cxx000066400000000000000000000263551343604040700202500ustar00rootroot00000000000000//================================================================= // This file is a part of cdhit-dup. // By Limin Fu (phoolimin@gmail.com, lmfu@ucsd.edu) //================================================================= #include #include #include "minString.hxx" #include "minArray.hxx" #include "minMap.hxx" #include "bioSequence.hxx" using namespace Min; using namespace Bio; char base_mapping[128] = {0}; char rev_comp_mapping[128] = {0}; uint64_t base_powers[33]; FILE *fout_log = stdout; FILE *fout_rep = NULL; FILE *fout_clstr = NULL; uint64_t EncodeWord( const char *word, unsigned char W ) { unsigned char i; uint64_t *power = base_powers; uint64_t code = 0; for(i=0; i { int id; int abundance; int chiHead; int chiTail; public: SequenceCluster( Sequence *rep = NULL ){ id = 0; abundance = 0; chiHead = chiTail = 0; if( rep ) Append( ClusterMember( rep ) ); } String GetDescription( Sequence *seq, int deslen=0 ); int GetID()const{ return id; } void SetID( int i ){ id = i; } int GetAbundance()const{ return abundance; } void SetAbundance( int ab ){ abundance = ab; } int GetChimericParent1()const{ return chiHead; } int GetChimericParent2()const{ return chiTail; } void SetChimericParent( int head, int tail ){ chiHead = head; chiTail = tail; } void Write( FILE *fout = stdout, int id = 0, int deslen=0, const char *des=NULL ); bool operator<( const SequenceCluster & other ){ assert( Size() && other.Size() ); return (*this)[0].seq->Length() < other[0].seq->Length(); } }; String SequenceCluster::GetDescription( Sequence *seq, int deslen ) { String des = seq->Description(); int i = 0; if( des[i] == '>' || des[i] == '@' || des[i] == '+' ) i += 1; if( des[i] == ' ' || des[i] == '\t' ) i += 1; if( deslen == 0 || deslen > des.Size() ) deslen = des.Size(); while( i < deslen and ! isspace( des[i] ) ) i += 1; des.Resize( i ); return des; } void SequenceCluster::Write( FILE *fout, int id, int deslen, const char *cdes ) { //Array & seqs = *this; SequenceCluster & seqs = *this; String des = GetDescription( seqs[0].seq, deslen ); String & rep = seqs[0].seq->SequenceData(); int len2 = seqs[0].seq->Length(); int i = 0, n = Size(); fprintf( fout, ">Cluster %i%s\n", id, cdes ? cdes : "" ); fprintf( fout, "%i\t%int, >%s... *\n", 0, seqs[0].seq->Length(), des.Data() ); for(i=1; iSequenceData(); String des = GetDescription( seqs[i].seq, deslen ); int len = seqs[i].seq->Length(); int startQ = seqs[i].offset + 1; int startR = seqs[i].offset2 + 1; int endQ = len; int endR = len2; int mm = 0; if( (endQ - startQ) < (endR - startR) ){ endR = startR + endQ - startQ; }else{ endQ = startQ + endR - startR; } if( seqs[i].revcomp ){ startQ = len - startQ + 1; endQ = len - endQ + 1; } fprintf( fout, "%i\t%int, >%s... at %i:%i:%i:%i/%c/%.2f%%\n", i, len, des.Data(), startQ, endQ, startR, endR, seqs[i].revcomp ? '-' : '+', 100*(len-mm)/(float)len ); } } void WriteClusters( Array & clusters, const String & name = "temp.txt", int deslen = 0 ) { char cdes[200]; int i, n = clusters.Size(); int k1 = 0, k2 = 0; for(i=0; iPrint( fout_rep ); cluster.SetID( k1 ); cluster.Write( fout_clstr, k1++, deslen ); } } int HashingDepth( int len, int min ) { assert( len >= min ); return (int)sqrt( (len - min) / 10); } int HashingLength( int dep, int min ) { return min + 10 * dep * dep; } #define USE_WORD void ClusterOverlap( SequenceList & seqlist, Array & clusters, int min, float minper ) { String reverse; Array clusters2; #ifdef USE_WORD Hash > headHashes; Hash > tailHashes; Node > *node; #else Hash > headHashes; Hash > tailHashes; Node > *node; #endif int i, i2, j, k, m, N = seqlist.Count(); int WORD = min; #ifndef USE_WORD if( WORD > 30 ) WORD = 30; #endif for(i=0; iLength(); int min2 = len * minper; bool clustered = false; if( min2 < min ) min2 = min; String *ss = & seq->SequenceData(); reverse.ResetSize( len ); for(j=0; jData()[len - j - 1] ]; for(j=(len-WORD-1); j>=min2-WORD; j--){ for(i2=0; i2<2; i2++){ String *ss = & seq->SequenceData(); if( i2 ) ss = & reverse; //if( i2 ) break; #ifdef USE_WORD uint64_t hash = EncodeWord( ss->Data() + j, WORD ); #else unsigned int hash = MakeHash( *ss, j, WORD ); #endif node = tailHashes.Find( hash ); if( node == NULL ) continue; Array & clusts = node->value; for(int j2=0, m=clusts.Size(); j2SequenceData(); if( rep.Size() < (j + WORD) ) continue; const char *r = rep.Data() + (rep.Size() - j - WORD); const char *q = ss->Data(); int M = j + WORD; for(k=0; kSequenceData(); if( i2 ) ss = & reverse; //if( i2 ) break; #ifdef USE_WORD uint64_t hash = EncodeWord( ss->Data() + j, WORD ); #else unsigned int hash = MakeHash( *ss, j, WORD ); #endif node = headHashes.Find( hash ); if( node == NULL ) continue; Array & clusts = node->value; for(int j2=0, m=clusts.Size(); j2SequenceData(); if( rep.Size() < (len - j) ) continue; const char *r = rep.Data(); const char *q = ss->Data() + j; int M = len - j; for(k=0; kSequenceData().Data(), WORD ); uint64_t tail = EncodeWord( seq->SequenceData().Data() + (len - WORD), WORD ); #else unsigned int head = MakeHash( seq->SequenceData(), WORD ); unsigned int tail = MakeHash( seq->SequenceData(), (len - WORD), WORD ); #endif clusters2.Append( new SequenceCluster( seq ) ); headHashes[head].Append( clusters2.Back() ); tailHashes[tail].Append( clusters2.Back() ); } if( (i+1)%100000 == 0 ) fprintf( fout_log, "Clustered %9i sequences with %9i clusters ...\n", i+1, clusters2.Size() ); } for(i=0, m=clusters2.Size(); i clusters; fprintf( fout_log, "Start clustering duplicated sequences ...\n" ); ClusterOverlap( seqlist, clusters, minlen, minper ); fprintf( fout_log, "Number of clusters found: %i\n", clusters.Size() ); WriteClusters( clusters, output, deslen ); fprintf( fout_log, "Done!\n" ); fclose( fout_log ); fclose( fout_rep ); fclose( fout_clstr ); return 0; } cdhit-4.8.1/cd-hit-auxtools/mintlib/000077500000000000000000000000001343604040700173025ustar00rootroot00000000000000cdhit-4.8.1/cd-hit-auxtools/mintlib/minArray.hxx000066400000000000000000000137161343604040700216250ustar00rootroot00000000000000//================================================================= // This file is a part of the Minimum Template Library. // By Limin Fu (phoolimin@gmail.com, lmfu@ucsd.edu) // Released under the MIT license. //================================================================= #ifndef __MIN_ARRAY_HXX__ #define __MIN_ARRAY_HXX__ #include #include #include #include #include #include"minBase.hxx" BEGIN_NS_MIN template class Array { item_t *items; item_t *buf; size_t size; size_t bufsize; public: Array( size_t n=0, item_t it=item_t() ){ items = buf = NULL; size = bufsize = 0; Resize( n, it ); } Array( const Array & other ){ items = buf = NULL; size = bufsize = 0; this->operator=( other ); } ~Array(){ Clear(); } size_t Size()const{ return size; } item_t* Data(){ return items; } item_t& operator[]( size_t i ){ return items[i]; } item_t operator[]( size_t i )const{ return items[i]; } Array& operator=( const Array & other ){ size_t i; Clear(); size = other.size; bufsize = other.bufsize; items = buf = (item_t*) calloc( bufsize, sizeof(item_t) ); for(i=0; i bufsize ) Resize( n ); else size = n; } void ResetBuffer(){ // remove buffer from front: if( items == buf ) return; memmove( buf, items, size*sizeof(item_t) ); items = buf; } void Reserve( size_t n, bool extra=false ){ size_t front = (intptr_t) (items - buf); if( bufsize >= (n + front) ) return; // enough space at back if( bufsize >= n ){ // front > 0 ResetBuffer(); return; } void *old = buf; if( extra ) n += n/5; buf = (item_t*) malloc( n*sizeof(item_t) ); memmove( buf, items, size*sizeof(item_t) ); items = buf; bufsize = n; free( old ); } void Resize( size_t n, item_t it=item_t() ){ size_t i; ResetBuffer(); if( bufsize != n ){ items = buf = (item_t*) realloc( buf, n*sizeof(item_t) ); bufsize = n; } for(i=size; i= size ) return; if( n < 0 ) n = size - start; n += start; if( n > size ) n = size; size_t i; for(i=start; i items[i] ){ item_t tmp = items[i-1]; items[i-1] = items[i]; items[i] = tmp; swap = i; } } sorted = swap; } } void QuickSort( size_t partial=0, size_t sub=0 ){ if( size <= 1 ) return; if( partial ==0 ) partial = size; if( sub ==0 ) sub = size; PartialQuickSort( items, 0, sub-1, partial ); } /* Quick Sort. * Adam Drozdek: Data Structures and Algorithms in C++, 2nd Edition. */ void PartialQuickSort( item_t *data, size_t first, size_t last, size_t partial ) { size_t lower=first+1, upper=last; item_t pivot; item_t val; if( first >= last ) return; val = data[first]; data[first] = data[ (first+last)/2 ]; data[ (first+last)/2 ] = val; pivot = data[ first ]; while( lower <= upper ){ while( lower <= last && data[lower] < pivot ) lower ++; while( pivot < data[upper] ) upper --; if( lower < upper ){ val = data[lower]; data[lower] = data[upper]; data[upper] = val; upper --; } lower ++; } val = data[first]; data[first] = data[upper]; data[upper] = val; if( upper && first < upper-1 ) PartialQuickSort( data, first, upper-1, partial ); if( upper >= partial ) return; if( upper+1 < last ) PartialQuickSort( data, upper+1, last, partial ); } item_t QuickXth( item_t *data, size_t first, size_t last, size_t X ) { size_t lower=first+1, upper=last; item_t pivot; item_t val; if( first >= last ) return data[last]; val = data[first]; data[first] = data[ (first+last)/2 ]; data[ (first+last)/2 ] = val; pivot = data[ first ]; while( lower <= upper ){ while( lower <= last && data[lower] < pivot ) lower ++; while( pivot < data[upper] ) upper --; if( lower < upper ){ val = data[lower]; data[lower] = data[upper]; data[upper] = val; upper --; } lower ++; } val = data[first]; data[first] = data[upper]; data[upper] = val; if( first < upper-1 and upper > X ) return QuickXth( data, first, upper-1, X ); if( upper+1 < last and upper < X ) return QuickXth( data, upper+1, last, X ); return val; } item_t QuickMedian(){ Array tmp( *this ); return QuickXth( tmp.items, 0, size-1, size/2 ); } item_t QuickXth( size_t xth ){ Array tmp( *this ); return QuickXth( tmp.items, 0, size-1, xth ); } }; END_NS_MIN #endif cdhit-4.8.1/cd-hit-auxtools/mintlib/minBase.hxx000066400000000000000000000006161343604040700214140ustar00rootroot00000000000000//================================================================= // This file is a part of the Minimum Template Library. // By Limin Fu (phoolimin@gmail.com, lmfu@ucsd.edu) // Released under the MIT license. //================================================================= #ifndef __MIN_BASE_HXX__ #define __MIN_BASE_HXX__ #define BEGIN_NS_MIN namespace Min { #define END_NS_MIN } #endif cdhit-4.8.1/cd-hit-auxtools/mintlib/minMap.cxx000066400000000000000000000312331343604040700212510ustar00rootroot00000000000000//================================================================= // This file is a part of the Minimum Template Library. // By Limin Fu (phoolimin@gmail.com, lmfu@ucsd.edu) // Note: Adapted from Dao Virtual Machine source codes (daovm.net). // Released under the MIT license. //================================================================= #include"minMap.hxx" BEGIN_NS_MIN DNode* DNode::First()const { DNode *p = (DNode*) this; if( p ) while( p->left ) p = p->left; return p; } DNode* DNode::Next()const { DNode* p = (DNode*) this->right; if( this->right ){ while( p->left ) p = p->left; }else if( this->parent ){ if( this == this->parent->left ){ p = this->parent; }else{ p = this->parent; while( p->parent && p==p->parent->right ) p = p->parent; p = p->parent; } } return p; } DTree::DTree( bool hs ) { root = NULL; table = NULL; size = 0; tsize = 0; hashing = hs; if( hashing ){ tsize = 4; table = (DNode**) calloc( tsize, sizeof(DNode*) ); } } DTree::~DTree() { Clear(); if( table ) free( table ); } void DTree::Clear() { int i; if( hashing ){ for(i=0; iHashKey( this->tsize ); id = node->hash; this->root = this->table[id]; if( this->root ==NULL ){ this->size += 1; this->table[id] = node; node->color = RB_BLACK; return node; } } p = SimpleInsert( node ); if( p == node ){ /* key not exist: */ InsertNode( node ); if( hashing ){ this->table[id] = this->root; if( this->size >= this->tsize ) ResetTable(); } }else{ p->CopyValue( node ); delete node; } return p; } DNode* DTree::First() { const DTree *tree = this; return (DNode*) tree->First(); } DNode* DTree::Next( const DNode *node ) { const DTree *tree = this; return (DNode*) tree->Next( node ); } const DNode* DTree::First()const { const DNode *node = NULL; int i = 0; if( hashing ){ while( i < this->tsize && this->table[i] == NULL ) i += 1; if( i < this->tsize ) node = this->table[i]->First(); } if( node == NULL && this->root ) node = this->root->First(); return node; } const DNode* DTree::Next( const DNode *node )const { const DNode *next; if( node == NULL ) return NULL; next = node->Next(); if( next == NULL && hashing ){ int i = node->hash + 1; while( i < this->tsize && this->table[i] == NULL ) i += 1; if( i < this->tsize ) next = this->table[i]->First(); } return next; } #define HASH_SEED 0xda0 void DTree::DeleteTree( DNode *node ) { if( node == NULL ) return; DeleteTree( node->left ); DeleteTree( node->right ); delete node; } void DTree::RotateLeft( DNode *child ) { DNode *grandpa = child->parent; DNode *parent = child->right; if( grandpa ){ if( child == grandpa->right ) grandpa->right = parent; else grandpa->left = parent; }else{ this->root = parent; } parent->parent = grandpa; child->right = parent->left; if( child->right ) child->right->parent = child; parent->left = child; child->parent = parent; } void DTree::RotateRight( DNode *parent ) { DNode *grandpa = parent->parent; DNode *child = parent->left; if( grandpa ){ if( parent == grandpa->right ) grandpa->right = child; else grandpa->left = child; }else{ this->root = child; } child->parent = grandpa; parent->left = child->right; if( parent->left ) parent->left->parent = parent; child->right = parent; parent->parent = child; } void DTree::InsertNode( DNode *node ) { DNode *grandpa, *parent, *uncle; node->color = RB_RED; this->size ++; while( node->parent != NULL ){ parent = node->parent; grandpa = parent->parent; if( parent->color == RB_RED ){ /* insert_case2() */ /* grandpa can't be NULL, since parent is RED and can't be root. */ uncle = ( parent == grandpa->left ? grandpa->right : grandpa->left ); if( uncle != NULL && uncle->color == RB_RED ){ /* insert_case3(): */ parent->color = RB_BLACK; uncle->color = RB_BLACK; grandpa->color = RB_RED; node = grandpa; continue; /* insert_case1() */ }else{ if( node == parent->right && parent == grandpa->left ){ RotateLeft( parent ); node = node->left; }else if( node == parent->left && parent == grandpa->right ){ /* rotate right around parent: */ RotateRight( parent ); node = node->right; } /* node changed, update parent and grandpa. */ parent = node->parent; grandpa = parent->parent; /* insert_case5() */ parent->color = RB_BLACK; grandpa->color = RB_RED; if( node == parent->left && parent == grandpa->left ) RotateRight( grandpa ); else RotateLeft( grandpa ); } } break; } /* insert_case1() as in Wikipedia term: Red-black tree. */ if( node->parent == NULL){ this->root = node; node->color = RB_BLACK; } } void DTree::EraseChild( DNode *node ) { DNode *extreme = node; DNode *child = 0; if( node == NULL ) return; this->size --; /* deletion by coping */ if( node->left ){ extreme = node->left; while( extreme->right ) extreme = extreme->right; child = extreme->left; }else if( node->right ){ extreme = node->right; while( extreme->left ) extreme = extreme->left; child = extreme->right; } SwapNode( node, extreme ); if( child ){ /* replace node */ child->parent = extreme->parent; if( extreme->parent ){ if( extreme == extreme->parent->left ) extreme->parent->left = child; else extreme->parent->right = child; } if( extreme->color == RB_BLACK ){ if( child->color == RB_RED ) child->color = RB_BLACK; else{ node = child; while( node->parent ){ /* delete_case1() */ DNode *parent = node->parent; DNode *sibling = ( node == parent->left ? parent->right : parent->left ); if( sibling && sibling->color == RB_RED ){ /* delete_case2() */ parent->color = RB_RED; sibling->color = RB_BLACK; if( node == parent->left ) RotateLeft( parent ); else RotateRight( parent ); } /* node relationship changed, update parent and sibling: */ parent = node->parent; sibling = ( node == parent->left ? parent->right : parent->left ); if( ! sibling ) break; /* delete_case3() */ if( parent->color == RB_BLACK && sibling->color == RB_BLACK && ( ! sibling->left || sibling->left->color == RB_BLACK ) && ( ! sibling->right|| sibling->right->color == RB_BLACK)){ sibling->color = RB_RED; node = node->parent; continue; /* delete_case1() */ }else{ /* delete_case4() */ if( parent->color == RB_RED && sibling->color == RB_BLACK && ( ! sibling->left || sibling->left->color == RB_BLACK ) && ( ! sibling->right|| sibling->right->color == RB_BLACK)){ sibling->color = RB_RED; parent->color = RB_BLACK; }else{ /* delete_case5() */ if( node == parent->left && sibling->color == RB_BLACK &&( sibling->left && sibling->left->color == RB_RED ) &&( !sibling->right|| sibling->right->color == RB_BLACK)){ sibling->color = RB_RED; sibling->left->color = RB_BLACK; RotateRight( sibling ); }else if( node == parent->right && sibling->color == RB_BLACK &&( sibling->right && sibling->right->color == RB_RED ) &&( !sibling->left || sibling->left->color == RB_BLACK)){ sibling->color = RB_RED; sibling->right->color = RB_BLACK; RotateLeft( sibling ); } /* node relationship changed, update parent and sibling: */ parent = node->parent; sibling = ( node==parent->left ? parent->right:parent->left ); /* delete_case6() */ sibling->color = parent->color; parent->color = RB_BLACK; if( node == parent->left ){ sibling->right->color = RB_BLACK; RotateLeft( parent ); }else{ sibling->left->color = RB_BLACK; RotateRight( parent ); } } /* end if */ } /* end if */ } /* end while */ } } }else if( extreme->parent ){ if( extreme == extreme->parent->left ) extreme->parent->left = NULL; else extreme->parent->right = NULL; }else{ this->root = NULL; } delete extreme; } void DTree::EraseNode( DNode *node ) { if( node == NULL ) return; if( this->hashing ){ unsigned int hash = node->hash; this->root = this->table[ node->hash ]; if( this->root == NULL ) return; EraseChild( node ); this->table[ hash ] = this->root; if( this->size < 0.25*this->tsize ) ResetTable(); }else{ EraseChild( node ); } } void DTree::InsertTree( DNode *node ) { DNode *left = node->left; DNode *right = node->right; node->HashKey( this->tsize ); node->parent = node->left = node->right = NULL; this->root = this->table[ node->hash ]; if( this->root == NULL ){ node->color = RB_BLACK; this->table[ node->hash ] = node; this->size += 1; }else{ SimpleInsert( node ); InsertNode( node ); this->table[ node->hash ] = this->root; } if( left ) InsertTree( left ); if( right ) InsertTree( right ); } void DTree::ResetTable() { DNode **nodes = this->table; int i, tsize = this->tsize; if( hashing ==0 ) return; this->tsize = 2 * this->size + 1; this->table = (DNode**)calloc( this->tsize, sizeof(DNode*) ); this->size = 0; for(i=0; iroot; int compare; node->color = RB_RED; if( this->root == NULL ) return node; for(;;){ compare = CompareNode( node, p ); if( compare == 0 ){ return p; }else if( compare < 0 ){ if( p->left ){ p = p->left; }else{ p->left = node; node->parent = p; break; } }else{ if( p->right ){ p = p->right; }else{ p->right = node; node->parent = p; break; } } } return node; } static unsigned int MurmurHash2_Int32( unsigned int k ) { /* 'm' and 'r' are mixing constants generated offline. They're not really 'magic', they just happen to work well. */ const unsigned int m = 0x5bd1e995; const int r = 24; /* Initialize the hash to a 'random' value */ unsigned int h = HASH_SEED ^ 4; /* Mix 4 bytes into the hash */ k *= m; k ^= k >> r; k *= m; h *= m; h ^= k; /* Do a few final mixes of the hash to ensure the last few bytes are well-incorporated. */ h ^= h >> 13; h *= m; h ^= h >> 15; return h; } unsigned int MurmurHash2( const void *key, int len, unsigned int seed ); unsigned int MakeHash( unsigned int k ) { return MurmurHash2_Int32( k ); } unsigned int MakeHash( int k ) { return MurmurHash2_Int32( (unsigned int) k ); } unsigned int MakeHash( void *p ) { return MurmurHash2( & p, sizeof(void*), HASH_SEED ); } unsigned int MakeHash( uint64_t k ) { return MurmurHash2( & k, sizeof(uint64_t), HASH_SEED ); } int Compare( int left, int right ) { return left == right ? 0 : (left < right ? -1 : 1); } int Compare( unsigned int left, unsigned int right ) { return left == right ? 0 : (left < right ? -1 : 1); } int Compare( void *left, void *right ) { if( left == right ) return 0; if( left < right ) return -1; return 1; } int Compare( uint64_t left, uint64_t right ) { return left == right ? 0 : (left < right ? -1 : 1); } /* PUBLIC DOMAIN CODES http://sites.google.com/site/murmurhash/ http://www.burtleburtle.net/bob/hash/doobs.html */ /* ----------------------------------------------------------------------------- MurmurHash2, by Austin Appleby Note - This code makes a few assumptions about how your machine behaves - 1. We can read a 4-byte value from any address without crashing 2. sizeof(int) == 4 And it has a few limitations - 1. It will not work incrementally. 2. It will not produce the same results on little-endian and big-endian machines. */ unsigned int MurmurHash2( const void *key, int len, unsigned int seed ) { /* 'm' and 'r' are mixing constants generated offline. They're not really 'magic', they just happen to work well. */ const unsigned int m = 0x5bd1e995; const int r = 24; /* Initialize the hash to a 'random' value */ unsigned int h = seed ^ len; /* Mix 4 bytes at a time into the hash */ const unsigned char * data = (const unsigned char *)key; while(len >= 4) { unsigned int k = *(unsigned int *)data; k *= m; k ^= k >> r; k *= m; h *= m; h ^= k; data += 4; len -= 4; } /* Handle the last few bytes of the input array */ switch(len) { case 3: h ^= data[2] << 16; case 2: h ^= data[1] << 8; case 1: h ^= data[0]; h *= m; }; /* Do a few final mixes of the hash to ensure the last few bytes are well-incorporated. */ h ^= h >> 13; h *= m; h ^= h >> 15; return h; } END_NS_MIN cdhit-4.8.1/cd-hit-auxtools/mintlib/minMap.hxx000066400000000000000000000126661343604040700212670ustar00rootroot00000000000000//================================================================= // This file is a part of the Minimum Template Library. // By Limin Fu (phoolimin@gmail.com, lmfu@ucsd.edu) // Note: Adapted from Dao Virtual Machine source codes (daovm.net). // Released under the MIT license. //================================================================= #ifndef __MIN_MAP_HXX__ #define __MIN_MAP_HXX__ #include #include #include #include"minBase.hxx" BEGIN_NS_MIN #define RB_RED 0 #define RB_BLACK 1 typedef enum{ KEY_EQ=0, KEY_ML/*Max Less*/, KEY_MG/*Min Great*/ } KeySearchType; struct DNode { unsigned int color : 1; unsigned int hash : 31; DNode *parent; DNode *left; DNode *right; DNode *next; DNode(){ parent = left = right = NULL; } virtual ~DNode(){} DNode* First()const; DNode* Next()const; virtual void HashKey( int T ){} virtual void CopyValue( DNode *other ){} }; struct DTree { DNode **table; DNode *root; DNode *first; DNode *last; int size; int tsize; bool hashing; DTree( bool hashing = false ); virtual ~DTree(); void Clear(); int Size()const{ return size; } protected: virtual int CompareNode( DNode *left, DNode *right )=0; virtual void SwapNode( DNode *node, DNode *extreme ){} DNode* First(); DNode* Next( const DNode *node ); const DNode* First()const; const DNode* Next( const DNode *node )const; DNode* Insert( DNode *node ); DNode* SimpleInsert( DNode *node ); void DeleteTree( DNode *node ); void RotateLeft( DNode *child ); void RotateRight( DNode *parent ); void InsertNode( DNode *node ); void EraseChild( DNode *node ); void EraseNode( DNode *node ); void InsertTree( DNode *node ); void ResetTable(); }; unsigned int MakeHash( unsigned int k ); unsigned int MakeHash( int k ); unsigned int MakeHash( void *p ); unsigned int MakeHash( uint64_t k ); int Compare( int left, int right ); int Compare( unsigned int left, unsigned int right ); int Compare( void *left, void *right ); int Compare( uint64_t left, uint64_t right ); template struct DKeyValue : public DNode { KeyType key; ValueType value; DKeyValue( const KeyType & k, const ValueType & v ){ key = k; value = v; parent = left = right = next = NULL; } void HashKey( int T ){ hash = MakeHash( key ) % T; } void CopyValue( DNode *other ){ value = ((DKeyValue*)other)->value; } }; template struct DMap : public DTree { typedef Min::DKeyValue DKeyValue; DMap(){} DMap( const DMap & other ) : DTree( other.hashing ){ this->operator=( other ); } DMap& operator=(const DMap & other){ const DKeyValue *node; Clear(); hashing = other.hashing; for(node=other.First(); node; node=other.Next(node)) Insert( node->key, node->value ); return *this; } void Erase( const KeyType & key ){ EraseNode( FindNode( key, KEY_EQ ) ); } DKeyValue* Insert( const KeyType & key, const ValueType & value ){ DKeyValue *node = new DKeyValue( key, value ); return (DKeyValue*) this->DTree::Insert( (DNode*) node ); } DKeyValue* Find( const KeyType & key ){ return FindNode( key, KEY_EQ ); } DKeyValue* FindML( const KeyType & key ){ return FindNode( key, KEY_ML ); } DKeyValue* FindMG( const KeyType & key ){ return FindNode( key, KEY_MG ); } DKeyValue* First(){ return (DKeyValue*) DTree::First(); } DKeyValue* Next( const DKeyValue *node ){ return (DKeyValue*) DTree::Next( node ); } const DKeyValue* First()const{ return (DKeyValue*) DTree::First(); } const DKeyValue* Next( const DKeyValue *node )const{ return (DKeyValue*) DTree::Next( node ); } ValueType& operator[]( KeyType key ){ DKeyValue *node = Find( key ); if( node ) return node->value; node = Insert( key, ValueType() ); return node->value; } protected: DMap( bool hashing ) : DTree( hashing ){} virtual int CompareNode( DNode *left0, DNode *right0 ){ DKeyValue *left = (DKeyValue*) left0; DKeyValue *right = (DKeyValue*) right0; return Compare( left->key, right->key ); } void SwapNode( DNode *node0, DNode *extreme0 ) { DKeyValue *node = (DKeyValue*) node0; DKeyValue *extreme = (DKeyValue*) extreme0; KeyType key = extreme->key; ValueType value = extreme->value; int hash = extreme->hash; extreme->hash = node->hash; extreme->key = node->key; extreme->value = node->value; node->hash = hash; node->key = key; node->value = value; } DKeyValue* FindChild( DKeyValue *root, KeyType key, KeySearchType type ) { DKeyValue *p = root; DKeyValue *m = 0; int compare; if( root == NULL ) return NULL; for(;;){ compare = Compare( key, p->key ); if( compare == 0 ) return p; if( compare < 0 ){ if( type == KEY_MG ) m = p; if( p->left ) p = (DKeyValue*) p->left; else break; }else{ if( type == KEY_ML ) m = p; if( p->right ) p = (DKeyValue*) p->right; else break; } } return m; } DKeyValue* FindNode( KeyType key, KeySearchType type ) { DKeyValue *root = (DKeyValue*) this->root; int id; if( hashing ){ id = MakeHash( key ) % this->tsize; root = (DKeyValue*) this->table[id]; if( root == NULL ) return NULL; } return FindChild( root, key, type ); } }; template struct DHash : public DMap { DHash() : DMap( true ){} DHash( const DHash & other ) : DMap( other ){} }; #define Map DMap #define Hash DHash #define Node DKeyValue END_NS_MIN #endif cdhit-4.8.1/cd-hit-auxtools/mintlib/minString.cxx000066400000000000000000000271341343604040700220070ustar00rootroot00000000000000//================================================================= // This file is a part of the Minimum Template Library. // By Limin Fu (phoolimin@gmail.com, lmfu@ucsd.edu) //================================================================= #include #include #include #include #include #include"minString.hxx" BEGIN_NS_MIN String::String( char ch ) { data = NULL; size = bufsize = 0; SetBytes( & ch, 1 ); } String::String( const char *s ) { data = NULL; size = bufsize = 0; *this = s; } String::String( const char *s, int n ) { data = NULL; size = bufsize = 0; SetBytes( s, n ); } String::String( const String & other ) { data = NULL; size = bufsize = 0; SetBytes( other.data, other.size ); } void String::Clear() { if( data ) free( data ); data = NULL; size = bufsize = 0; } void String::Reset() { if( size == 0 ) return; size = 0; data[0] = 0; } void String::Reserve( int n ) { if( bufsize >= n ) return; data = (char*) realloc( data, (n+1)*sizeof(char) ); bufsize = n; } void String::ResetSize( int n ) { if( size < n ) Resize( n, 0 ); size = n; data[size] = 0; } void String::Resize( int n, char ch ) { int i; if( bufsize != n ){ data = (char*) realloc( data, (n+1)*sizeof(char) ); bufsize = n; } for(i=size; i size ) return; Reserve( size + 1 ); if( at < size ) memmove( data + at + 1, data + at, (size - at) * sizeof(char) ); data[at] = ch; data[++size] = '\0'; } void String::Insert( char *chs, int at ) { if( chs == NULL ) return; if( at < 0 || at > size ) return; int i, N = strlen( chs ); Reserve( size + N ); if( at < size ) memmove( data + at + N, data + at, (size - at) * sizeof(char) ); for(i=0; i= size ) return; if( start + count > size ) count = size - start; rest = size - (start + count); if( rest ) memmove( data + start, data + start + count, rest * sizeof(char) ); size -= count; if( data ) data[size] = 0; } void String::Chop( int count ) { if( size ){ if( count > size ) count = size; Erase( size-count, count ); } } void String::ToUpper() { for(int i=0; i> 4 ]; shex += hex[ data[i] & 0xf ]; } return shex; } static void MD5_Append( String & md5, uint32_t h ) { const char *hex = "0123456789abcdef"; uint32_t k; k = (h >> 0) & 0xff; md5 += hex[k>>4]; md5 += hex[k&0xf]; k = (h >> 8) & 0xff; md5 += hex[k>>4]; md5 += hex[k&0xf]; k = (h >>16) & 0xff; md5 += hex[k>>4]; md5 += hex[k&0xf]; k = (h >>24) & 0xff; md5 += hex[k>>4]; md5 += hex[k&0xf]; } static void MD5_Update( uint32_t H[4], uint32_t W[16], uint32_t K[64] ) { static uint32_t R[64] = { 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21 }; uint32_t A = H[0]; uint32_t B = H[1]; uint32_t C = H[2]; uint32_t D = H[3]; uint32_t k; for(k=0; k<16; k++){ uint32_t f = (B & C) | ((~B) & D); uint32_t g = k; uint32_t t = D; uint32_t x = A + f + K[k] + W[g]; D = C; C = B; B = B + ((x << R[k]) | (x >> (32-R[k]))); A = t; } for(k=16; k<32; k++){ uint32_t f = (D & B) | ((~D) & C); uint32_t g = (k*5 + 1) % 16; uint32_t t = D; uint32_t x = A + f + K[k] + W[g]; D = C; C = B; B = B + ((x << R[k]) | (x >> (32-R[k]))); A = t; } for(k=32; k<48; k++){ uint32_t f = B ^ C ^ D; uint32_t g = (k*3 + 5) % 16; uint32_t t = D; uint32_t x = A + f + K[k] + W[g]; D = C; C = B; B = B + ((x << R[k]) | (x >> (32-R[k]))); A = t; } for(k=48; k<64; k++){ uint32_t f = C ^ (B | (~D)); uint32_t g = (k*7) % 16; uint32_t t = D; uint32_t x = A + f + K[k] + W[g]; D = C; C = B; B = B + ((x << R[k]) | (x >> (32-R[k]))); A = t; } H[0] += A; H[1] += B; H[2] += C; H[3] += D; } String String::MD5()const { String padding; uint64_t n, twop32 = ((uint64_t)1)<<32; uint32_t H[4] = { 0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476 }; uint32_t K[64], W[16]; int32_t i, k, m, chunks = size / 64; uint8_t *data = (uint8_t*) this->data; for(i=0; i<64; i++) K[i] = (uint32_t) floor( fabs( sin(i+1) ) * twop32 ); for(i=0; idata + chunks*64, m*sizeof(char) ); if( m + 8 > 64 ) padding.size = 128; chunks = padding.size / 64; data[m] = 1<<7; // first bit 1 followed by bit 0s; for(i=m+1; i> 8) & 0xff; data[i+2] = (n >> 16) & 0xff; data[i+3] = (n >> 24) & 0xff; data[i+4] = (n >> 32) & 0xff; data[i+5] = (n >> 40) & 0xff; data[i+6] = (n >> 48) & 0xff; data[i+7] = (n >> 56) & 0xff; for(i=0; i s.Size() ) length = s.Size(); return MurmurHash2( s.Data(), length, HASH_SEED ); } unsigned int MakeHash( const String & s, int offset, int length ) { if( offset < 0 ) offset = 0; if( length <= 0 ) length = s.Size() - offset; if( (length + offset) > s.Size() ) length = s.Size() - offset; return MurmurHash2( s.Data() + offset, length, HASH_SEED ); } int Compare( const String & left, const String & right ) { const char *L = left.Data(); const char *R = right.Data(); int M = left.Size(); int N = right.Size(); int I = 0; for(; I=0 ) M = lstart + 1 - max; if( rstart + 1 - max >=0 ) N = rstart + 1 - max; } for(; I>=M and J>=N and (mm+=(*L!=*R))<=maxmm; I--, J--, L--, R--); return lstart - I; } int CountMismatch( const String & left, const String & right, int from, int to ) { const char *L = left.Data() + from; const char *R = right.Data() + from; int M = left.Size(); int N = right.Size(); int i, mm = 0; if( to < 0 ) to = M; if( to > M ) to = M; if( to > N ) to = N; for(i=from; i M ) to = M; if( to > N ) to = N; for(i=from; i #include"minBase.hxx" BEGIN_NS_MIN class String { char *data; int size; int bufsize; public: String( char ch ); String( const char *s = NULL ); String( const char *s, int n ); String( const String & other ); ~String(){ Clear(); } const char* Data()const{ return data; } int Size()const{ return size; } int BufferSize()const{ return bufsize; } void Clear(); void Reset(); void Reserve( int n ); void ResetSize( int n ); void Resize( int n, char ch=0 ); void SetBytes( const char *s, int n ); void AppendBytes( const char *s, int n ); void Insert( char ch, int at ); void Insert( char *chs, int at ); void Erase( int start, int count ); void Chop( int count = 1 ); void ToUpper(); void ToLower(); int Find( char ch )const; int Find( const String & s )const; String& operator=( const char ch ); String& operator=( const char *s ); String& operator=( const String & s ); void operator+=( const char ch ); void operator+=( const char *s ); void operator+=( const String &s ); char& operator[]( int i ){ return data[i]; } char operator[]( int i )const{ return data[i]; } String FromHex()const; String ToHex()const; String MD5()const; static String FromNumber( int i ); }; String operator+( const String & left, const String & right ); bool operator==( const String & left, const String & right ); bool operator!=( const String & left, const String & right ); unsigned int MakeHash( const String & s, int length=0 ); unsigned int MakeHash( const String & s, int offset, int length ); int Compare( const String & left, const String & right ); int ComparePrefix( const String & left, const String & right, int maxmm = 0 ); int ComparePrefix( const String & left, int lstart, const String & right, int rstart, int max=0, int maxmm = 0 ); int CompareSuffix( const String & left, int lstart, const String & right, int rstart, int max=0, int maxmm = 0 ); int CountMismatch( const String & left, const String & right, int from = 0, int to = -1 ); int CountMismatch2( const String & left, const String & right, int from = 0, int to = -1, int maxmm=0 ); int CountMismatch3( const String & left, int lstart, const String & right, int rstart, int max, int maxmm ); END_NS_MIN #endif cdhit-4.8.1/cd-hit-auxtools/mintlib/minUtility.hxx000066400000000000000000000003441343604040700222030ustar00rootroot00000000000000 #include"minString.hxx" #include"minArray.hxx" int BurrowsWheelerTrans( const String & input, String & output, Array & idbuf ); int ReverseBurrowsWheelerTrans( const String & input, String & output, Array & idbuf ); cdhit-4.8.1/cd-hit-auxtools/read-linker.cxx000066400000000000000000000164771343604040700206040ustar00rootroot00000000000000#include "bioSequence.hxx" using namespace Min; using namespace Bio; class SequenceLinker { int minOverlap; int tolerance; int maxlen; int overlap; int error; int count; Array sequences; public: SequenceLinker( int minOverlap = 10, int tolerance = 1 ){ this->minOverlap = minOverlap; this->tolerance = tolerance; maxlen = 0; error = 0; count = 0; overlap = 0; } void SetMaxLen( int max ){ maxlen = max; } int Overlap()const{ return overlap; } int Error()const{ return error; } int Count()const{ return count; } int Check( const String & first, const String & second ); int Link( Sequence *first, Sequence *second ); int Link2( Sequence *first, Sequence *second ); void Reset(){ count = 0; sequences.Clear(); } void Write( FILE *fout ){ for(int i=0,n=sequences.Size(); i%d\t%s\n", i, sequences[i].Description().Data()); sequences[i].Print( fout ); } } }; int SequenceLinker::Check( const String & first, const String & second ) { int n1 = first.Size(); int n2 = second.Size(); int m = n1 < n2 ? n1 : n2; int i, j, k; for(k=m; k>=minOverlap; k--){ error = 0; for(i=n1-k, j=0; j tolerance ) break; } overlap = k; if( error <= tolerance ) return k; } overlap = 0; return 0; } int SequenceLinker::Link( Sequence *first, Sequence *second ) { int qs = first->QualityScore().Size(); const String & s1 = first->SequenceData(); const String & s2 = second->SequenceData(); const String & qs1 = first->QualityScore(); const String & qs2 = second->QualityScore(); int n1 = s1.Size(); int n2 = s2.Size(); int i, j, m = 1, O = Check( s1, s2 ); int error2 = 0; if( O == 0 ) return 0; String locs; for(i=n1-O, j=0; j (int)sequences.Size() ) sequences.Append( Sequence() ); for(i=0; iGetDescription(); seq.Description() += tag; if( locs.Size() ) seq.Description() += " mismatch_pos=" + locs; seq.SequenceData() += s1; seq.SequenceData() += s2.Data() + O; if( qs ){ seq.QualityScore() += qs1; seq.QualityScore() += qs2.Data() + O; } } int step = m; for(i=n1-O, j=0; j> 1; for(int k=0; kQualityScore().Size(); const String & s1 = first->SequenceData(); const String & s2 = second->SequenceData(); const String & qs1 = first->QualityScore(); const String & qs2 = second->QualityScore(); int n1 = s1.Size(); int n2 = s2.Size(); int i, j, m = 1; if( n1 < minOverlap || n2 < minOverlap ) return 0; if( n2 < maxlen ) return 0; Sequence joint = Sequence(); joint.Description() = first->GetDescription(); joint.SequenceData() += s1; joint.SequenceData().Chop( n1 - minOverlap ); joint.SequenceData() += s2.Data() + (maxlen - minOverlap); joint.SequenceData().Chop( n2 - maxlen ); if( qs ){ joint.QualityScore() = first->QualityScore(); joint.QualityScore().Chop( n1 - minOverlap ); joint.QualityScore() += qs2.Data() + (maxlen - minOverlap); joint.QualityScore().Chop( n2 - maxlen ); } sequences.Append( joint ); return 1; } const char *help = "Options:\n" " -1 file Input file, first end;\n" " -2 file Input file, second end;\n" " -o file Output file;\n" " -l number Minimum overlapping length (default 10);\n" //" Or the selection length, if \"number\" is negative,\n" //" to simply join the two ends;\n" " -e number Maximum number of errors (mismatches, default 1);\n" //" -m number Cutoff length when \"-l\" is negative;\n" ; int main( int argc, char *argv[] ) { String first; String second; String output; int min = 10; int error = 1; int maxlen = 0; int i; if( argc < 7 ){ printf( "%s\n", help ); return 1; } for(i=1; i countPairs( error+1, 0 ); Array countContigs( error+1, 0 ); linker.SetMaxLen( maxlen ); while(1){ //cache1.Clear(); //cache2.Clear(); int n1 = cache1.Update(); int n2 = cache2.Update(); int n = n1 < n2 ? n1 : n2; if( n1 != n2 ){ printf( "Warning: the pair end files contain different number of reads!\n" ); } if( n == 0 ) break; //printf("==>%d\t%d\n", n1, n2); if( min < 0 && maxlen == 0 ){ maxlen = cache2[0]->Length(); linker.SetMaxLen( maxlen ); } //Array sequences( n ); for(int i=0; iToReverseComplimentary(); int c = 0; if( min > 0 ){ c = linker.Link( cache1[i], cache2[i] ); int o = linker.Overlap(); if( o > omax ) omax = o; if( o && o < omin ) omin = o; }else{ c = linker.Link2( cache1[i], cache2[i] ); } countUsedPairs += c != 0; countPairs[ linker.Error() ] += c != 0; countContigs[ linker.Error() ] += c; } countInputPairs += n; countAllContig += linker.Count();; linker.Write( fout ); linker.Reset(); count += n; printf( "handled: %9i\n", count ); } printf( "Total input pairs of read: %i\n", countInputPairs ); printf( "Total pairs of read used: %i\n", countUsedPairs ); printf( "Total contigs: %i\n", countAllContig ); if( min > 0 ){ for(i=0; i<=error; i++) printf( "%2i mismatch: %9i pairs of reads => %9i contigs\n", i, countPairs[i], countContigs[i] ); printf( "Overlap range %i-%i\n", omin, omax ); } fclose( fout ); return 0; } cdhit-4.8.1/cd-hit-clstr_2_blm8.pl000077500000000000000000000041161343604040700166220ustar00rootroot00000000000000#!/usr/bin/perl # my $rep; my @non_reps = (); my @aln_info = (); while($ll=<>){ if ($ll =~ /^>/ ) { if (@non_reps) { for ($i=0; $i<@non_reps; $i++) { print "$non_reps[$i]\t$rep\t$aln_info[$i]\n"; } } $rep = ""; @non_reps = (); @aln_info = (); } else { chop($ll); if ($ll =~ />(.+)\.\.\./ ) { my $id = $1; if ($ll =~ /\*$/) { $rep = $id} else { push(@non_reps, $id); my @lls = split(/\s+/, $ll); my ($a, $iden) = split(/\//, $lls[-1]); chop($iden); ### removing % sign my ($qb, $qe, $sb, $se) = split(/:/, $a); my $alnln = $qe-$qb+1; my $mis = int($alnln * (100-$iden) / 100); my $gap = 0; my $exp = 0; my $bit = $alnln*3 - $mis*6; #### very rough push(@aln_info, "$iden\t$alnln\t$mis\t$gap\t$qb\t$qe\t$sb\t$se\t$exp\t$bit"); } } #>Cluster 582 #0 6671aa, >gi|302514050|uid|51... * #1 339aa, >SRS584717|scaffold|... at 2:332:4020:4356/89.32% #2 182aa, >SRS584717|scaffold|... at 1:182:6490:6671/100.00% #3 367aa, >SRS584717|scaffold|... at 1:332:4543:4874/90.66% #4 109aa, >SRS584717|scaffold|... at 1:108:5782:5889/97.22% } } if (@non_reps) { for ($i=0; $i<@non_reps; $i++) { print "$non_reps[$i]\t$rep\t$aln_info[$i]\n"; } } #query subject % alnln mis gap q_b q_e s_b s_e expect bits ##0 1 2 3 4 5 6 7 8 9 10 11 #mHE-SRS012902|scaffold|86.16 gnl|CDD|226997 47.62 42 17 2 164 201 210 250 5e-04 37.6 #mHE-SRS012902|scaffold|109.23 gnl|CDD|225183 47.46 236 122 1 1 236 475 708 1e-92 284 #mHE-SRS012902|scaffold|109.23 gnl|CDD|224055 44.35 239 130 2 1 239 332 567 2e-84 259 #mHE-SRS012902|scaffold|109.23 gnl|CDD|227321 39.50 238 140 3 1 238 324 557 9e-69 218 cdhit-4.8.1/cd-hit-div.pl000077500000000000000000000015551343604040700151160ustar00rootroot00000000000000#!/usr/bin/perl #not like cd-hit-div, this script do not sort input #or throw away seq $in = shift; $in or die "no input file"; $out = shift; $out or die "no output file"; $div = shift; $div or die "no div number"; @fhs = (); for ($i=0; $i<$div; $i++) { my $tf = "$out-$i"; $tfh = "FH". $i; open($tfh, "> $tf") || die "can not open output files for write"; push(@fhs, $tfh); } open(TMP, $in) || die "can not open input file"; my $seq; my $des; my $no = 0; while($ll = ) { if ($ll =~ /^>/) { if ($seq) { $i = $no % $div; $tfh = $fhs[$i]; $no++; print $tfh $des, $seq; } $des = $ll; $seq = ""; } else { $seq .= $ll; } } if ($seq) { $i = $no % $div; $tfh = $fhs[$i]; $no++; print $tfh $des, $seq; } close(TMP); for ($i=0; $i<$div; $i++) { $tfh = $fhs[$i]; close($tfh); } cdhit-4.8.1/cd-hit-para.pl000077500000000000000000000270621343604040700152600ustar00rootroot00000000000000#!/usr/bin/perl -w # ============================================================================= # CD-HIT # http://cd-hit.org/ # http://bioinformatics.burnham.org/cd-hi # # program written by # Weizhong Li # UCSD, San Diego Supercomputer Center # La Jolla, CA, 92093 # Email liwz@sdsc.edu # ============================================================================= use strict; no strict "refs"; my $script_name = $0; my $script_dir = $0; $script_dir =~ s/[^\/]+$//; $script_dir = "./" unless ($script_dir); chop($script_dir); my $arg; my $in; my $out; my $arg_pass = ""; my $para = ""; my $host_no = 0; my @hosts = (); my $cd_hit_div_exe = "$script_dir/cd-hit-div"; my $cd_hit_exe = "$script_dir/cd-hit"; my $cd_hit_est_exe = "$script_dir/cd-hit-est"; my $cd_hit_2d_exe = "$script_dir/cd-hit-2d"; my $cd_hit_est_2d_exe = "$script_dir/cd-hit-est-2d"; my $clstr_merge_exe = "$script_dir/clstr_merge.pl"; my $seg_no = 64; my $restart_in = ""; my $queue = 0; my $local_cpu = 0; my $queue_type = "PBS"; my $prog = "cd-hit"; my %stable_files = (); while ($arg=shift) { if ($arg eq "-h" ) { print_usage();} elsif ($arg eq "-i" ) { $in = shift; } elsif ($arg eq "-o" ) { $out = shift; } elsif ($arg eq "--B") { $para = shift; } elsif ($arg eq "--L") { $local_cpu = shift; } elsif ($arg eq "--P") { $prog = shift; } elsif ($arg eq "--S") { $seg_no = shift; } elsif ($arg eq "--Q") { $queue = shift; } elsif ($arg eq "--T") { $queue_type = shift; } elsif ($arg eq "--R") { $restart_in = shift; } else {$arg_pass .= " $arg "; } } ($in and $out) || print_usage(); if ($prog eq "cd-hit-est") { $cd_hit_exe = $cd_hit_est_exe; $cd_hit_2d_exe = $cd_hit_est_2d_exe; } my $pwd = `pwd`; chop($pwd); my $work_dir = "$out.cd-hit-para-tmp"; my $restart_file = "$out.restart"; my $indiv = "$work_dir/$in.div"; my @commands = (); my @command_status = (); my $command_no = 0; my $cmd; my ($i, $j, $k, $i1, $j1, $k1); # readin a list of hosts if ($para) { open(PARA, "$para") || die "can not open $para"; while(my $ll= ){ chop($ll); $ll =~ s/\s//g; next unless ($ll); push(@hosts, $ll); $host_no++; } close(PARA); } if ($queue) { for ($i=0; $i<$queue; $i++) { push(@hosts, "queue_host.$i"); } $host_no = $queue; } if ($local_cpu) { for ($i=0; $i<$local_cpu; $i++) { push(@hosts, "localhost.$i"); } $host_no = $local_cpu; } die "no host" unless $host_no; if (-e $restart_in) { read_restart(); } else { $cmd = `mkdir $work_dir`; assign_commands(); write_restart(); } #dbdiv run on master node? if ($command_status[0] eq "wait") { $cmd = `$commands[0]`; $command_status[0] = "done"; write_restart(); for ($i=0; $i<$seg_no; $i++) { my $idb = "$indiv-$i"; $stable_files{$idb} = 1; } } #main runing loop my $sleep_time = 1; while(1) { #refresh job status by checking output files #check whether all jobs are done or not my $finish_flag = 1; my $status_change = 0; for ($i=1; $i<$command_no; $i++) { next if ($command_status[$i] eq "done"); $finish_flag = 0; my $tcmd = $commands[$i]; my $output = ""; if ($tcmd =~ / -o\s+(\S+)/) { $output = $1; if ((-s $output) or (-s "$output.clstr")) { $command_status[$i] = "done"; $status_change = 1; } } } if ($status_change) { write_restart(); } else { sleep($sleep_time); print "."; } last if $finish_flag; my $job_sent = 0; for ($i=1; $i<$command_no; $i++) { next if ($command_status[$i] eq "done"); next if ($command_status[$i] eq "run"); my $tcmd = $commands[$i]; my $in1 = ""; my $in2 = ""; my $out_done = ""; if ($tcmd =~ / -i\s+(\S+)/ ) {$in1 = $1;} if ($tcmd =~ / -i2\s+(\S+)/) {$in2 = $1;} if ($tcmd =~ / -o\s+(\S+)/ ) {$out_done = "$1.done";} my $input_flag = 0; if (($in1 =~ /\S/) and ($in2 =~ /\S/)) { $input_flag = 1 if ((-s $in1) and (-s $in2)); } elsif ($in1 =~ /\S/) { $input_flag = 1 if (-s $in1); } else { die "Error at $tcmd\n"; } next unless $input_flag; #now input files are ready, wait wait_stable_file($in1); wait_stable_file($in2) if ($in2 =~ /\S/); my $thost_idx = wait_for_available_host(); my $thost = $hosts[$thost_idx]; my $tsh = "$work_dir/$out.$$.$thost_idx.sh"; my $tlock = "$work_dir/$out.$$.$thost_idx.lock"; my $trm = ""; $trm = "rm -f $in2" if ($in2 =~ /\S/); open(TSH, "> $tsh") || die; $cmd = `date > $tlock`; print TSH < $tlock $tcmd $trm rm -f $tlock date > $out_done EOD close(TSH); if ($local_cpu) { $cmd = `sh $tsh >/dev/null 2>&1 &`; $command_status[$i] = "run"; print "run at $thost $tcmd\n"; } elsif ($queue and ($queue_type eq "PBS")) { my $t = "para-$thost_idx"; open(QUEUE,"| qsub -N $t -o $t.log -e $t.err"); print QUEUE "cd $pwd; sh $tsh"; close(QUEUE); $command_status[$i] = "run"; } elsif ($queue and ($queue_type eq "SGE")) { my $t = "para-$thost_idx"; open(QUEUE,"| qsub -N $t"); print QUEUE </dev/null 2>&1 &'`; $command_status[$i] = "run"; print "run at $thost $tcmd\n"; } $sleep_time = 1; $job_sent = 1; last; } if ((not $job_sent) and ($sleep_time < 60)) { $sleep_time +=5; } } ############ main run loop ######## merge all .clstr file my $out_clstr = "$out.clstr"; if (not -s $out_clstr) { my @reps = (); for ($i=0; $i<$seg_no; $i++) { my $master_clstr = "$indiv-$i-o.clstr"; die "No file $master_clstr\n" unless (-s $master_clstr); my $this_rep = "$indiv-$i-o"; die "No rep $this_rep\n" unless (-e $this_rep); push(@reps, $this_rep); my @slave_clstr = (); for ($j=$i+1; $j<$seg_no; $j++) { my $tclstr = "$indiv-$j.vs.$i.clstr"; if (-s $tclstr) {push(@slave_clstr,$tclstr); } else {die "No file $tclstr\n";} } if (@slave_clstr) { my $tclstrs = join(" ", @slave_clstr); print "$clstr_merge_exe $master_clstr $tclstrs >> $out_clstr\n"; $cmd = `$clstr_merge_exe $master_clstr $tclstrs >> $out_clstr`; } else { #this is the last piece print "cat $master_clstr >> $out_clstr"; $cmd = `cat $master_clstr >> $out_clstr`; } } my $out_clstr_ren = "$out.clstr.$$"; open(TMP, $out_clstr) || die; open(OTMP, "> $out_clstr_ren") || die; my $no = 0; my $cno; my $ll; while($ll=){ if ($ll =~ /^>Cluster (\d+)/) { print OTMP ">Cluster $no\n"; $no++; $cno = 0; } else { $ll =~ s/^\d+/$cno/; print OTMP $ll; $cno++; } } close(TMP); close(OTMP); sleep(10); $cmd = `mv $out_clstr_ren $out_clstr`; my $reps = join(" ", @reps); $cmd = `cat $reps > $out`; } if (1) { $cmd = `grep CPU $work_dir/*log`; my @lls = split(/\n/, $cmd); my $cpu = 0; my $ll; foreach $ll (@lls) { if ($ll =~ /CPU\s+time\s+(\d+)/) { $cpu += $1; } } print "Total CPU time: $cpu\n"; } sub wait_for_available_host { my ($i, $j, $k); my $sleep = 30; while(1) { for ($i=0; $i<$host_no; $i++) { my $thost = $hosts[$i]; my $tlock = "$work_dir/$out.$$.$i.lock"; next if (-e $tlock); return $i; } sleep($sleep); $sleep +=30; if ($sleep >= 300) { $sleep = 30; } } } ########## END wait_for_available_host sub wait_stable_file { my ($i, $j, $k); my $f = shift; return if ($stable_files{$f}); return unless (-e $f); if (-e "$f.done") { $stable_files{$f} = 1; return; } my $size0 = -s $f; while(1) { sleep(10); my $size1 = -s $f; if ($size0 == $size1) { $stable_files{$f} = 1; last; } else {$size0 = $size1; } } } ########## END wait_stable_file sub write_restart { my ($i, $j, $k); open(RES, "> $restart_file") || die; for ($i=0; $i<$command_no; $i++) { print RES "$commands[$i]\n$command_status[$i]\n"; } close(RES); } ########## END write_restart sub assign_commands { my ($i, $j, $k); my $cmd; my ($idb, $idbo, $jdb, $idbout, $idblog); $command_no = 0; $cmd = "$cd_hit_div_exe -i $in -o $indiv -div $seg_no"; push(@commands, $cmd); push(@command_status, "wait"); $command_no++; for ($i=0; $i<$seg_no; $i++) { $idb = "$indiv-$i"; $idblog = "$indiv-$i.log"; #compare to previous segs for ($j=0; $j<$i; $j++) { $jdb = "$indiv-$j-o"; $idbo = "$indiv-$i.vs.$j"; $cmd = "$cd_hit_2d_exe -i $jdb -i2 $idb -o $idbo $arg_pass >> $idblog"; push(@commands, $cmd); push(@command_status, "wait"); $command_no++; $idb = $idbo; } #self comparing $cmd = "$cd_hit_exe -i $idb -o $indiv-$i-o $arg_pass >> $idblog"; push(@commands, $cmd); push(@command_status, "wait"); $command_no++; } } sub read_restart { $command_no = 0; open(RRRR, "$restart_in") || die; my $ll; while ($ll = ) { chop($ll); push(@commands, $ll); $ll = ; chop($ll); push(@command_status, $ll); $command_no++; } close(RRRR); } ########## END read_restart sub print_usage { print <), seq_db.NAAN, sizeof(NVector) * seq_db.NAAN ); seq_db.Read( db_in.c_str(), options ); cout << "total seq: " << seq_db.sequences.size() << endl; seq_db.SortDivide( options ); seq_db.DoClustering( options ); printf( "writing new database\n" ); seq_db.WriteClusters( db_in.c_str(), db_out.c_str(), options ); // write a backup clstr file in case next step crashes seq_db.WriteExtra1D( options ); cout << "program completed !" << endl << endl; end_time = current_time(); printf( "Total CPU time %.2f\n", end_time - begin_time ); return 0; } // END int main cdhit-4.8.1/cdhit-common.c++000066400000000000000000004334561343604040700155120ustar00rootroot00000000000000// ============================================================================= // CD-HI/CD-HIT // // Cluster Database at High Identity // // CD-HIT clusters protein sequences at high identity threshold. // This program can remove the high sequence redundance efficiently. // // program written by // Weizhong Li // UCSD, San Diego Supercomputer Center // La Jolla, CA, 92093 // Email liwz@sdsc.edu // // at // Adam Godzik's lab // The Burnham Institute // La Jolla, CA, 92037 // Email adam@burnham-inst.org // // modified by: // Limin Fu // Center for Research in Biological Systems (CRBS), UCSD // La Jolla, CA, 92093 // Email: l2fu@ucsd.edu, fu@daovm.net // ============================================================================= #include "cdhit-common.h" #include #include #include #include #ifndef NO_OPENMP #include #define WITH_OPENMP " (+OpenMP)" #else #define WITH_OPENMP "" #define omp_set_num_threads(T) (T = T) #define omp_get_thread_num() 0 #endif //class function definition const char aa[] = {"ARNDCQEGHILKMFPSTWYVBZX"}; //{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,2,6,20}; int aa2idx[] = {0, 2, 4, 3, 6, 13,7, 8, 9,20,11,10,12, 2,20,14, 5, 1,15,16,20,19,17,20,18, 6}; // idx for A B C D E F G H I J K L M N O P // Q R S T U V W X Y Z // so aa2idx[ X - 'A'] => idx_of_X, eg aa2idx['A' - 'A'] => 0, // and aa2idx['M'-'A'] => 12 int BLOSUM62[] = { 4, // A -1, 5, // R -2, 0, 6, // N -2,-2, 1, 6, // D 0,-3,-3,-3, 9, // C -1, 1, 0, 0,-3, 5, // Q -1, 0, 0, 2,-4, 2, 5, // E 0,-2, 0,-1,-3,-2,-2, 6, // G -2, 0, 1,-1,-3, 0, 0,-2, 8, // H -1,-3,-3,-3,-1,-3,-3,-4,-3, 4, // I -1,-2,-3,-4,-1,-2,-3,-4,-3, 2, 4, // L -1, 2, 0,-1,-3, 1, 1,-2,-1,-3,-2, 5, // K -1,-1,-2,-3,-1, 0,-2,-3,-2, 1, 2,-1, 5, // M -2,-3,-3,-3,-2,-3,-3,-3,-1, 0, 0,-3, 0, 6, // F -1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4, 7, // P 1,-1, 1, 0,-1, 0, 0, 0,-1,-2,-2, 0,-1,-2,-1, 4, // S 0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1, 1, 5, // T -3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1, 1,-4,-3,-2,11, // W -2,-2,-2,-3,-2,-1,-2,-3, 2,-1,-1,-2,-1, 3,-3,-2,-2, 2, 7, // Y 0,-3,-3,-3,-1,-2,-2,-3,-3, 3, 1,-2, 1,-1,-2,-2, 0,-3,-1, 4, // V -2,-1, 3, 4,-3, 0, 1,-1, 0,-3,-4, 0,-3,-3,-2, 0,-1,-4,-3,-3, 4, // B -1, 0, 0, 1,-3, 3, 4,-2, 0,-3,-3, 1,-1,-3,-1, 0,-1,-3,-2,-2, 1, 4, // Z 0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2, 0, 0,-2,-1,-1,-1,-1,-1 // X //A R N D C Q E G H I L K M F P S T W Y V B Z X //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2 6 20 }; int na2idx[] = {0, 4, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 4}; // idx for A B C D E F G H I J K L M N O P // Q R S T U V W X Y Z // so aa2idx[ X - 'A'] => idx_of_X, eg aa2idx['A' - 'A'] => 0, // and aa2idx['M'-'A'] => 4 int BLOSUM62_na[] = { 2, // A -2, 2, // C -2,-2, 2, // G -2,-2,-2, 2, // T -2,-2,-2, 1, 2, // U -2,-2,-2,-2,-2, 1, // N 0, 0, 0, 0, 0, 0, 1 // X //A C G T U N X //0 1 2 3 3 4 5 }; void setaa_to_na(); struct TempFile { FILE *file; char buf[512]; TempFile( const char *dir = NULL ){ int len = dir ? strlen( dir ) : 0; assert( len < 400 ); buf[0] = 0; if( len ){ strcat( buf, dir ); if( buf[len-1] != '/' && buf[len-1] != '\\' ){ buf[len] = '/'; len += 1; } } strcat( buf, "cdhit.temp." ); len += 11; sprintf( buf + len, "%p", this ); file = fopen( buf, "w+" ); } ~TempFile(){ if( file ){ fclose( file ); remove( buf ); } } }; struct TempFiles { NVector files; ~TempFiles(){ Clear(); } void Clear(){ int i; #pragma omp critical { for(i=0; ifile; } static void CleanUpTempFiles() { if( temp_files.files.Size() ) printf( "Clean up temporary files ...\n" ); temp_files.Clear(); } int NAA1 ; int NAA2 ; int NAA3 ; int NAA4 ; int NAA5 ; int NAA6 ; int NAA7 ; int NAA8 ; int NAA9 ; int NAA10; int NAA11; int NAA12; int NAAN_array[13] = { 1 }; void InitNAA( int max ) { NAA1 = NAAN_array[1] = max; NAA2 = NAAN_array[2] = NAA1 * NAA1; NAA3 = NAAN_array[3] = NAA1 * NAA2; NAA4 = NAAN_array[4] = NAA2 * NAA2; NAA5 = NAAN_array[5] = NAA2 * NAA3; NAA6 = NAAN_array[6] = NAA3 * NAA3; NAA7 = NAAN_array[7] = NAA3 * NAA4; NAA8 = NAAN_array[8] = NAA4 * NAA4; NAA9 = NAAN_array[9] = NAA4 * NAA5; NAA10 = NAAN_array[10] = NAA5 * NAA5; NAA11 = NAAN_array[11] = NAA5 * NAA6; NAA12 = NAAN_array[12] = NAA6 * NAA6; } extern Options options; ScoreMatrix mat; Vector Comp_AAN_idx; void make_comp_iseq(int len, char *iseq_comp, char *iseq) { int i, c[6] = {3,2,1,0,4,5}; for (i=0; i cpu ){ threads = cpu; printf( "Warning: total number of CPUs in the system is %i\n", cpu ); }else if( threads < 0 ){ threads += cpu; if( threads < 0 ) threads = 0; } if( threads == 0 ){ threads = cpu; printf( "total number of CPUs in the system is %i\n", cpu ); } if( threads != intval ) printf( "Actual number of CPUs to be used: %i\n\n", threads ); #else printf( "Option -T is ignored: multi-threading with OpenMP is NOT enabled!\n" ); #endif }else return false; return true; } bool Options::SetOption( const char *flag, const char *value ) { if( is454 ){ if( strcmp(flag, "-s") == 0 ) return false; else if( strcmp(flag, "-S") == 0 ) return false; else if( strcmp(flag, "-G") == 0 ) return false; else if( strcmp(flag, "-A") == 0 ) return false; else if( strcmp(flag, "-r") == 0 ) return false; else if( strcmp(flag, "-D") == 0 ){ max_indel = atoi(value); return true; } } if( SetOptionCommon( flag, value ) ) return true; if (strcmp(flag, "-t" ) == 0) tolerance = atoi(value); else if (strcmp(flag, "-F" ) == 0) frag_size = atoi(value); else if (has2D && SetOption2D( flag, value ) ) return true; else if (isEST && SetOptionEST( flag, value ) ) return true; else return false; return true; } bool Options::SetOption2D( const char *flag, const char *value ) { if( SetOptionCommon( flag, value ) ) return true; if (strcmp(flag, "-i2" ) == 0) input2 = value; else if (strcmp(flag, "-j2" ) == 0) input2_pe = value; else if (strcmp(flag, "-s2") == 0) diff_cutoff2 = atof(value); else if (strcmp(flag, "-S2") == 0) diff_cutoff_aa2 = atoi(value); else return false; return true; } bool Options::SetOptionEST( const char *flag, const char *value ) { NAA_top_limit = 12; if( SetOptionCommon( flag, value ) ) return true; if (strcmp(flag, "-r" ) == 0) option_r = atoi(value); else if (strcmp(flag, "-gap") == 0) mat.gap = MAX_SEQ * atoi(value); else if (strcmp(flag, "-gap-ext") == 0) mat.ext_gap = MAX_SEQ * atoi(value); else if (strcmp(flag, "-match") == 0) mat.set_match( atoi(value) ); else if (strcmp(flag, "-mismatch") == 0) mat.set_mismatch( atoi(value) ); else if (strcmp(flag, "-mask") == 0){ string letters = value; int i, n = letters.size(); for(i=0; i 'Z' ) continue; na2idx[ ch - 'A' ] = 5; } setaa_to_na(); }else return false; return true; } bool Options::SetOptions( int argc, char *argv[], bool twod, bool est ) { int i, n; char date[100]; strcpy( date, __DATE__ ); n = strlen( date ); for(i=1; i= 64 ){ printf( "\n %s", argv[i] ); n = strlen( argv[i] ) + 9; }else{ printf( " %s", argv[i] ); } } printf( "\n\n" ); time_t tm = time(NULL); printf( "Started: %s", ctime(&tm) ); printf( "================================================================\n" ); printf( " Output \n" ); printf( "----------------------------------------------------------------\n" ); has2D = twod; isEST = est; for (i=1; i+1 1.0) || (distance_thd < 0.0)) bomb_error("invalid distance threshold"); }else if( isEST ){ if ((cluster_thd > 1.0) || (cluster_thd < 0.8)) bomb_error("invalid clstr threshold, should >=0.8"); }else{ if ((cluster_thd > 1.0) || (cluster_thd < 0.4)) bomb_error("invalid clstr"); } if (input.size() == 0) bomb_error("no input file"); if (output.size() == 0) bomb_error("no output file"); if (PE_mode) { if (input_pe.size() == 0) bomb_error("no input file for R2 sequences in PE mode"); if (output_pe.size() == 0) bomb_error("no output file for R2 sequences in PE mode"); } if (isEST && (align_pos==1)) option_r = 0; if (band_width < 1 ) bomb_error("invalid band width"); if (NAA < 2 || NAA > NAA_top_limit) bomb_error("invalid word length"); if (des_len < 0 ) bomb_error("too short description, not enough to identify sequences"); if (not isEST && (tolerance < 0 || tolerance > 5) ) bomb_error("invalid tolerance"); if ((diff_cutoff<0) || (diff_cutoff>1)) bomb_error("invalid value for -s"); if (diff_cutoff_aa<0) bomb_error("invalid value for -S"); if( has2D ){ if ((diff_cutoff2<0) || (diff_cutoff2>1)) bomb_error("invalid value for -s2"); if (diff_cutoff_aa2<0) bomb_error("invalid value for -S2"); if (PE_mode) { if (input2_pe.size() == 0) bomb_error("no input file for R2 sequences for 2nd db in PE mode"); } } if (global_identity == 0) print = 1; if (short_coverage < long_coverage) short_coverage = long_coverage; if (short_control > long_control) short_control = long_control; if ((global_identity == 0) && (short_coverage == 0.0) && (min_control == 0)) bomb_error("You are using local identity, but no -aS -aL -A option"); if (frag_size < 0) bomb_error("invalid fragment size"); #if 0 if( useDistance ){ /* when required_aan becomes zero */ if( distance_thd * NAA >= 1 ) bomb_warning( "word length is too long for the distance cutoff" ); }else{ /* when required_aan becomes zero */ if( cluster_thd <= 1.0 - 1.0 / NAA ) bomb_warning( "word length is too long for the identity cutoff" ); } #endif const char *message = "Your word length is %i, using %i may be faster!\n"; if ( not isEST && tolerance ) { int i, clstr_idx = (int) (cluster_thd * 100) - naa_stat_start_percent; int tcutoff = naa_stat[tolerance-1][clstr_idx][5-NAA]; if (tcutoff < 5 ) bomb_error("Too low cluster threshold for the word length.\n" "Increase the threshold or the tolerance, or decrease the word length."); for ( i=5; i>NAA; i--) { if ( naa_stat[tolerance-1][clstr_idx][5-i] > 10 ) { printf( message, NAA, i ); break; } } } else if( isEST ) { if ( cluster_thd > 0.9 && NAA < 8 ) printf( message, NAA, 8 ); else if ( cluster_thd > 0.87 && NAA < 5 ) printf( message, NAA, 5 ); else if ( cluster_thd > 0.80 && NAA < 4 ) printf( message, NAA, 4 ); else if ( cluster_thd > 0.75 && NAA < 3 ) printf( message, NAA, 3 ); } else { if ( cluster_thd > 0.85 && NAA < 5 ) printf( message, NAA, 5 ); else if ( cluster_thd > 0.80 && NAA < 4 ) printf( message, NAA, 4 ); else if ( cluster_thd > 0.75 && NAA < 3 ) printf( message, NAA, 3 ); } if ( (min_length + 1) < NAA ) bomb_error("Too short -l, redefine it"); } void Options::Print() { printf( "isEST = %i\n", isEST ); printf( "has2D = %i\n", has2D ); printf( "NAA = %i\n", NAA ); printf( "NAA_top_limit = %i\n", NAA_top_limit ); printf( "min_length = %i\n", min_length ); printf( "cluster_best = %i\n", cluster_best ); printf( "global_identity = %i\n", global_identity ); printf( "cluster_thd = %g\n", cluster_thd ); printf( "diff_cutoff = %g\n", diff_cutoff ); printf( "diff_cutoff_aa = %i\n", diff_cutoff_aa ); printf( "tolerance = %i\n", tolerance ); printf( "long_coverage = %g\n", long_coverage ); printf( "long_control = %i\n", long_control ); printf( "short_coverage = %g\n", short_coverage ); printf( "short_control = %i\n", short_control ); printf( "frag_size = %i\n", frag_size ); printf( "option_r = %i\n", option_r ); printf( "print = %i\n", print ); } void bomb_error(const char *message) { fprintf( stderr, "\nFatal Error:\n%s\nProgram halted !!\n\n", message ); temp_files.Clear(); exit (1); } // END void bomb_error void bomb_error(const char *message, const char *message2) { fprintf( stderr, "\nFatal Error:\n%s %s\nProgram halted !!\n\n", message, message2 ); temp_files.Clear(); exit (1); } // END void bomb_error void bomb_warning(const char *message) { fprintf( stderr, "\nWarning:\n%s\nNot fatal, but may affect results !!\n\n", message ); } // END void bomb_warning void bomb_warning(const char *message, const char *message2) { fprintf( stderr, "\nWarning:\n%s %s\nNot fatal, but may affect results !!\n\n", message, message2 ); } // END void bomb_warning void format_seq(char *seq) { int i, j; char c1; int len = strlen(seq); for (i=0,j=0; i & taap = buffer.taap; Vector & aap_begin = buffer.aap_begin; Vector & aap_list = buffer.aap_list; Vector & diag_score = buffer.diag_score; Vector & diag_score2 = buffer.diag_score2; if (nall > MAX_DIAG) bomb_error("in diag_test_aapn, MAX_DIAG reached"); for (pp=&diag_score[0], i=nall; i; i--, pp++) *pp=0; for (pp=&diag_score2[0], i=nall; i; i--, pp++) *pp=0; int c22, cpx; INTs *bip; int len11 = len1-1; int len22 = len2-1; i1 = len11; for (i=0; i= 0 ? required_aa1-1:0; // on dec 21 2001 int band_e = nall - band_b; int band_m = ( band_b+band_width-1 < band_e ) ? band_b+band_width-1 : band_e; int best_score=0; int best_score2=0; int max_diag = 0; int max_diag2 = 0; int imax_diag = 0; for (i=band_b; i<=band_m; i++){ best_score += diag_score[i]; best_score2 += diag_score2[i]; if( diag_score2[i] > max_diag2 ){ max_diag2 = diag_score2[i]; max_diag = diag_score[i]; imax_diag = i; } } int from=band_b; int end =band_m; int score = best_score; int score2 = best_score2; for (k=from, j=band_m+1; j best_score2 ) { from = k + 1; end = j; best_score = score; best_score2 = score2; if( diag_score2[j] > max_diag2 ){ max_diag2 = diag_score2[j]; max_diag = diag_score[j]; imax_diag = j; } } } int mlen = imax_diag; if( imax_diag > len1 ) mlen = nall - imax_diag; int emax = int((1.0 - options.cluster_thd) * mlen) + 1; for (j=from; j emax || diag_score[j] < 1 ) { best_score -= diag_score[j]; from++; } else break; } for (j=end; j>imax_diag; j--) { // if aap pairs fail to open gap if ( (j - imax_diag) > emax || diag_score[j] < 1 ) { best_score -= diag_score[j]; end--; } else break; } // delete [] diag_score; band_left = from - len1 + 1; band_right= end - len1 + 1; band_center = imax_diag - len1 + 1; best_sum = best_score; return OK_FUNC; } // END diag_test_aapn int diag_test_aapn_est(int NAA1, char iseq2[], int len1, int len2, WorkingBuffer & buffer, int &best_sum, int band_width, int &band_left, int &band_center, int &band_right, int required_aa1) { int i, i1, j, k; int *pp, *pp2; int nall = len1+len2-1; int NAA2 = NAA1 * NAA1; int NAA3 = NAA2 * NAA1; Vector & taap = buffer.taap; Vector & aap_begin = buffer.aap_begin; Vector & aap_list = buffer.aap_list; Vector & diag_score = buffer.diag_score; Vector & diag_score2 = buffer.diag_score2; if (nall > MAX_DIAG) bomb_error("in diag_test_aapn_est, MAX_DIAG reached"); pp = & diag_score[0]; pp2 = & diag_score2[0]; for (i=nall; i; i--, pp++, pp2++) *pp = *pp2 =0; INTs *bip; int c22, cpx; int len22 = len2-3; i1 = len1-1; for (i=0; i=4) || (c1>=4) || (c2>=4) || (c3>=4)) continue; //skip N c22 = c0*NAA3+ c1*NAA2 + c2*NAA1 + c3; if ( (j=taap[c22]) == 0) continue; cpx = 1 + (c0 != c1) + (c1 != c2) + (c2 != c3); bip = & aap_list[ aap_begin[c22] ]; // bi = aap_begin[c22]; for (; j; j--, bip++) { diag_score[i1 - *bip]++; diag_score2[i1 - *bip] += cpx; } } #if 0 int mmax = 0; int immax = 0; for(i=0; i<=nall; i++){ if( i%len2 ==0 or i == nall ) printf( "\n" ); printf( "%3i ", diag_score[i] ); if( diag_score[i] > mmax ){ mmax = diag_score[i]; immax = i; } } #endif //find the best band range // int band_b = required_aa1; int band_b = required_aa1-1 >= 0 ? required_aa1-1:0; // on dec 21 2001 int band_e = nall - band_b; if( options.is454 ){ band_b = len1 - band_width; band_e = len1 + band_width; if( band_b < 0 ) band_b = 0; if( band_e > nall ) band_e = nall; } int band_m = ( band_b+band_width-1 < band_e ) ? band_b+band_width-1 : band_e; int best_score=0; int best_score2=0; int max_diag = 0; int max_diag2 = 0; int imax_diag = 0; for (i=band_b; i<=band_m; i++){ best_score += diag_score[i]; best_score2 += diag_score2[i]; if( diag_score2[i] > max_diag2 ){ max_diag2 = diag_score2[i]; max_diag = diag_score[i]; imax_diag = i; } } int from=band_b; int end =band_m; int score = best_score; int score2 = best_score2; for (k=from, j=band_m+1; j best_score2 ) { from = k + 1; end = j; best_score = score; best_score2 = score2; if( diag_score2[j] > max_diag2 ){ max_diag2 = diag_score2[j]; max_diag = diag_score[j]; imax_diag = j; } } } #if 0 printf( "%i %i\n", required_aa1, from ); printf( "max=%3i imax=%3i; band: %3i %3i %i\n", max_diag, imax_diag, band_b, band_e, band_m ); printf( "best: %i\n", best_score ); printf( "from: %i, end: %i, best: %i\n", from, end, best_score ); #endif int mlen = imax_diag; if( imax_diag > len1 ) mlen = nall - imax_diag; int emax = int((1.0 - options.cluster_thd) * mlen) + 1; for (j=from; j emax || diag_score[j] < 1 ) { best_score -= diag_score[j]; from++; } else break; } for (j=end; j>imax_diag; j--) { // if aap pairs fail to open gap if ( (j - imax_diag) > emax || diag_score[j] < 1 ) { best_score -= diag_score[j]; end--; } else break; } band_left = from-len1+1; band_right= end-len1+1; band_center = imax_diag - len1 + 1; best_sum = best_score; if( options.is454 ){ if( band_left > 0 ) best_sum = 0; if( band_right < 0 ) best_sum = 0; } #if 0 printf( "%3i: best: %i, %i %i %i\n", required_aa1, best_score, band_left, band_right, band_width ); printf( "max=%3i imax=%3i; band: %3i %3i %i\n", mmax, immax, band_b, band_e, band_m ); #endif return OK_FUNC; } // END diag_test_aapn_est /* local alignment of two sequence within a diag band for band 0 means direction (0,0) -> (1,1) 1 means direction (0,1) -> (1,2) -1 means direction (1,0) -> (2,1) added on 2006 11 13 band 0 XXXXXXXXXXXXXXXXXX seq2, rep seq XXXXXXXXXXXXXXX seq1 band 1 XXXXXXXXXXXXXXXXXX seq2, rep seq XXXXXXXXXXXXXXX seq1 extreme right (+) XXXXXXXXXXXXXXXXXX seq2, rep seq band = len2-1 XXXXXXXXXXXXXXX seq1 band-1 XXXXXXXXXXXXXXXXXX seq2, rep seq XXXXXXXXXXXXXXX seq1 extreme left (-) XXXXXXXXXXXXXXXXXX seq2, rep seq XXXXXXXXXXXXXXX band = -(len1-1) seq1 iseq len are integer sequence and its length, mat is matrix, return ALN_PAIR class band: -101 seq2 len2 = 17 \\\1234567890123456 0 \xxxxxxxxxxxxxxxxx 1 xxxxxxxxxxxxxxxxx\ most right band = len2-1 2 xxxxxxxxxxxxxxxxx seq1 3 xxxxxxxxxxxxxxxxx len1 = 11 4 xxxxxxxxxxxxxxxxx 5 xxxxxxxxxxxxxxxxx 6 xxxxxxxxxxxxxxxxx 7 xxxxxxxxxxxxxxxxx 8 xxxxxxxxxxxxxxxxx 9 xxxxxxxxxxxxxxxxx 0 xxxxxxxxxxxxxxxxx \ most left band = -(len1-1) */ int local_band_align( char iseq1[], char iseq2[], int len1, int len2, ScoreMatrix &mat, int &best_score, int &iden_no, int &alnln, float &dist, int *alninfo, int band_left, int band_center, int band_right, WorkingBuffer & buffer) { int i, j, k, j1; int jj, kk; int iden_no1; int64_t best_score1; iden_no = 0; if ( (band_right >= len2 ) || (band_left <= -len1) || (band_left > band_right) ) return FAILED_FUNC; // allocate mem for score_mat[len1][len2] etc int band_width = band_right - band_left + 1; int band_width1 = band_width + 1; // score_mat, back_mat [i][j]: i index of seqi (0 to len(seqi)-1), j index of band (0 to band_width-1) MatrixInt64 & score_mat = buffer.score_mat; MatrixInt & back_mat = buffer.back_mat; //printf( "%i %i\n", band_right, band_left ); if( score_mat.size() <= len1 ){ VectorInt row( band_width1, 0 ); VectorInt64 row2( band_width1, 0 ); while( score_mat.size() <= len1 ){ score_mat.Append( row2 ); back_mat.Append( row ); } } for(i=0; i<=len1; i++){ if( score_mat[i].Size() < band_width1 ) score_mat[i].Resize( band_width1 ); if( back_mat[i].Size() < band_width1 ) back_mat[i].Resize( band_width1 ); } best_score = 0; /* seq1 is query, seq2 is rep seq2 len2 = 17 seq2 len2 = 17 seq2 len2 = 17 01234567890123456 01234567890123456 01234567890123456 0 xxxxxxxxxxxxxxxxx \\\\\\XXXxxxxxxxxxxxxxx xXXXXXXXxxxxxxxxx 1 \\\\\Xxxxxxxxxxxxxxxxx \\\\\Xxx\xxxxxxxxxxxxx xx\xxxxx\xxxxxxxx 2 \\\\X\xxxxxxxxxxxxxxx \\\\Xxxx\xxxxxxxxxxxx xxx\xxxxx\xxxxxxx seq1 3 \\\Xx\xxxxxxxxxxxxxx \\\Xxxxx\xxxxxxxxxxx xxxx\xxxxx\xxxxxx len1 4 \\Xxx\xxxxxxxxxxxxx \\Xxxxxx\xxxxxxxxxx xxxxx\xxxxx\xxxxx = 11 5 \Xxxx\xxxxxxxxxxxx \Xxxxxxx\xxxxxxxxx xxxxxx\xxxxx\xxxx 6 Xxxxx\xxxxxxxxxxx Xxxxxxxx\xxxxxxxx xxxxxxx\xxxxx\xxx 7 x\xxxx\xxxxxxxxxx x\xxxxxxx\xxxxxxx xxxxxxxx\xxxxx\xx 8 xx\xxxx\xxxxxxxxx xx\xxxxxxx\xxxxxx xxxxxxxxx\xxxxx\x 9 xxx\xxxx\xxxxxxxx xxx\xxxxxxx\xxxxx xxxxxxxxxx\xxxxx\ 0 xxxx\xxxx\xxxxxxx xxxx\xxxxxxx\xxxx xxxxxxxxxxx\xxxxx band_left < 0 (-6) band_left < 0 (-6) band_left >=0 (1) band_right < 0 (-1) band_right >=0 (2) band_right >=0(7) band_width 6 band_width 9 band_width 7 init score_mat, and iden_mat (place with upper 'X') */ if (band_left < 0) { //set score to left border of the matrix within band int tband = (band_right < 0) ? band_right : 0; //for (k=band_left; k=0) { //set score to top border of the matrix within band int tband = (band_left > 0) ? band_left : 0; for (j=tband; j<=band_right; j++) { j1 = j-band_left; score_mat[0][j1] = mat.ext_gap * j; back_mat[0][j1] = DP_BACK_LEFT; } back_mat[0][tband-band_left] = DP_BACK_NONE; } int gap_open[2] = { mat.gap, mat.ext_gap }; int max_diag = band_center - band_left; int extra_score[4] = { 4, 3, 2, 1 }; for (i=1; i<=len1; i++) { int J0 = 1 - band_left - i; int J1 = len2 - band_left - i; if( J0 < 0 ) J0 = 0; if( J1 >= band_width ) J1 = band_width; for (j1=J0; j1<=J1; j1++){ j = j1+i+band_left; int ci = iseq1[i-1]; int cj = iseq2[j-1]; int sij = mat.matrix[ci][cj]; //int iden_ij = (ci == cj); int s1, k0, back; /* extra score according to the distance to the best diagonal */ int extra = extra_score[ abs(j1 - max_diag) & 3 ]; // max distance 3 sij += extra * (sij>0); back = DP_BACK_LEFT_TOP; best_score1 = score_mat[i-1][j1] + sij; int gap0 = gap_open[ (i == len1) | (j == len2) ]; int gap = 0; int64_t score; if( j1 > 0 ){ gap = gap0; if( back_mat[i][j1-1] == DP_BACK_LEFT ) gap = mat.ext_gap; if( (score = score_mat[i][j1-1] + gap) > best_score1 ){ back = DP_BACK_LEFT; best_score1 = score; } } if(j1+1 best_score1 ){ back = DP_BACK_TOP; best_score1 = score; } } score_mat[i][j1] = best_score1; back_mat[i][j1] = back; //printf( "%2i(%2i) ", best_score1, iden_no1 ); } //printf( "\n" ); } i = j = 0; if( len2 - band_left < len1 ){ i = len2 - band_left; j = len2; }else if( len1 + band_right < len2 ){ i = len1; j = len1 + band_right; }else{ i = len1; j = len2; } j1 = j - i - band_left; best_score = score_mat[i][j1]; best_score1 = score_mat[i][j1]; #if 1 const char *letters = "acgtnx"; const char *letters2 = "ACGTNX"; #else const char *letters = "arndcqeghilkmfpstwyvbzx"; const char *letters2 = "ARNDCQEGHILKMFPSTWYVBZX"; #endif int back = back_mat[i][j1]; int last = back; int count = 0, count2 = 0, count3 = 0; int match, begin1, begin2, end1, end2; int gbegin1=0, gbegin2=0, gend1=0, gend2=0; int64_t score, smin = best_score1, smax = best_score1 - 1; int posmin, posmax, pos = 0; int bl, dlen = 0, dcount = 0; posmin = posmax = 0; begin1 = begin2 = end1 = end2 = 0; #ifdef PRINT #define PRINT printf( "%i %i\n", best_score, score_mat[i][j1] ); printf( "%i %i %i\n", band_left, band_center, band_right ); printf( "%i %i %i %i\n", i, j, j1, len2 ); #endif #ifdef MAKEALIGN #define MAKEALIGN char AA[ MAX_SEQ ], BB[ MAX_SEQ ]; int NN = 0; int IA, IB; for(IA=len1;IA>i;IA--){ AA[NN] = letters[ iseq1[IA-1] ]; BB[NN++] = '-'; } for(IB=len2;IB>j;IB--){ AA[NN] = '-'; BB[NN++] = letters[ iseq2[IB-1] ]; } #endif int masked = 0; int indels = 0; int max_indels = 0; while( back != DP_BACK_NONE ){ switch( back ){ case DP_BACK_TOP : #ifdef PRINT printf( "%5i: %c %c %9i\n", pos, letters[ iseq1[i-1] ], '|', score_mat[i][j1] ); #endif #ifdef MAKEALIGN AA[NN] = letters[ iseq1[i-1] ]; BB[NN++] = '-'; #endif bl = (last != back) & (j != 1) & (j != len2); dlen += bl; dcount += bl; score = score_mat[i][j1]; if( score < smin ){ count2 = 0; smin = score; posmin = pos - 1; begin1 = i; begin2 = j; } i -= 1; j1 += 1; break; case DP_BACK_LEFT : #ifdef PRINT printf( "%5i: %c %c %9i\n", pos, '|', letters[ iseq2[j-1] ], score_mat[i][j1] ); #endif #ifdef MAKEALIGN AA[NN] = '-'; BB[NN++] = letters[ iseq2[j-1] ]; #endif bl = (last != back) & (i != 1) & (i != len1); dlen += bl; dcount += bl; score = score_mat[i][j1]; if( score < smin ){ count2 = 0; smin = score; posmin = pos - 1; begin1 = i; begin2 = j; } j1 -= 1; j -= 1; break; case DP_BACK_LEFT_TOP : #ifdef PRINT if( iseq1[i-1] == iseq2[j-1] ){ printf( "%5i: %c %c %9i\n", pos, letters2[ iseq1[i-1] ], letters2[ iseq2[j-1] ], score_mat[i][j1] ); }else{ printf( "%5i: %c %c %9i\n", pos, letters[ iseq1[i-1] ], letters[ iseq2[j-1] ], score_mat[i][j1] ); } #endif #ifdef MAKEALIGN if( iseq1[i-1] == iseq2[j-1] ){ AA[NN] = letters2[ iseq1[i-1] ]; BB[NN++] = letters2[ iseq2[j-1] ]; }else{ AA[NN] = letters[ iseq1[i-1] ]; BB[NN++] = letters[ iseq2[j-1] ]; } #endif if( alninfo && options.global_identity ){ if( i == 1 || j == 1 ){ gbegin1 = i-1; gbegin2 = j-1; }else if( i == len1 || j == len2 ){ gend1 = i-1; gend2 = j-1; } } score = score_mat[i][j1]; i -= 1; j -= 1; match = iseq1[i] == iseq2[j]; if( score > smax ){ count = 0; smax = score; posmax = pos; end1 = i; end2 = j; } if( options.isEST && (iseq1[i] > 4 || iseq2[j] > 4) ){ masked += 1; }else{ dlen += 1; dcount += ! match; count += match; count2 += match; count3 += match; } if( score < smin ){ int mm = match == 0; count2 = 0; smin = score; posmin = pos - mm; begin1 = i + mm; begin2 = j + mm; } break; default : printf( "%i\n", back ); break; } if( options.is454 ){ if( back == DP_BACK_LEFT_TOP ){ if( indels > max_indels ) max_indels = indels; indels = 0; }else{ if( last == DP_BACK_LEFT_TOP ){ indels = 1; }else if( indels ){ indels += 1; } } } pos += 1; last = back; back = back_mat[i][j1]; } if( options.is454 and max_indels > options.max_indel ) return FAILED_FUNC; iden_no = options.global_identity ? count3 : count - count2; alnln = posmin - posmax + 1 - masked; dist = dcount/(float)dlen; //dist = - 0.75 * log( 1.0 - dist * 4.0 / 3.0 ); int umtail1 = len1 - 1 - end1; int umtail2 = len2 - 1 - end2; int umhead = begin1 < begin2 ? begin1 : begin2; int umtail = umtail1 < umtail2 ? umtail1 : umtail2; int umlen = umhead + umtail; if( umlen > options.unmatch_len ) return FAILED_FUNC; if( umlen > len1 * options.short_unmatch_per ) return FAILED_FUNC; if( umlen > len2 * options.long_unmatch_per ) return FAILED_FUNC; if( alninfo ){ alninfo[0] = begin1; alninfo[1] = end1; alninfo[2] = begin2; alninfo[3] = end2; alninfo[4] = masked; if( options.global_identity ){ alninfo[0] = gbegin1; alninfo[1] = gend1; alninfo[2] = gbegin2; alninfo[3] = gend2; } } #ifdef PRINT printf( "%6i %6i: %4i %4i %4i %4i\n", alnln, iden_no, begin1, end1, begin2, end2 ); printf( "%6i %6i: %4i %4i\n", posmin, posmax, posmin - posmax, count - count2 ); printf( "smin = %9i, smax = %9i\n", smin, smax ); printf( "dlen = %5i, dcount = %5i, dist = %.3f\n", dlen, dcount, dcount/(float)dlen ); #endif #ifdef MAKEALIGN float identity = iden_no / (float)( options.global_identity ? (len1 - masked) : alnln); if( identity < options.cluster_thd ) return OK_FUNC; while(i--){ AA[NN] = letters[ iseq1[i-1] ]; BB[NN++] = '-'; } while(j--){ AA[NN] = '-'; BB[NN++] = letters[ iseq2[j-1] ]; } AA[NN] = '\0'; BB[NN] = '\0'; for(i=0; iindex, AA ); fprintf( fout, "%i %s\n", seq2->index, BB ); #else bool printaa = true; IB = IA = 0; fprintf( fout, "\n\nX " ); while( IA < NN ){ if( printaa ){ fprintf( fout, "%c", BB[IB] ); IB += 1; if( IB % 75 ==0 or IB == NN ) printaa = false, fprintf( fout, "\nY " ); }else{ fprintf( fout, "%c", AA[IA] ); IA += 1; if( IA % 75 ==0 ) printaa = true, fprintf( fout, "\n\nX " ); } } #endif fclose( fout ); #endif return OK_FUNC; } // END int local_band_align void setaa_to_na() { int i; for (i=0; i<26; i++) aa2idx[i] = na2idx[i]; } // END void setaa_to_na ///////////////// ScoreMatrix::ScoreMatrix() { init(); } void ScoreMatrix::init() { set_gap( -11, -1 ); set_matrix( BLOSUM62 ); } void ScoreMatrix::set_gap(int gap1, int ext_gap1) { int i; gap = MAX_SEQ * gap1; ext_gap = MAX_SEQ * ext_gap1; } void ScoreMatrix::set_matrix(int *mat1) { int i, j, k; k = 0; for ( i=0; i & ics = indexCounts[i]; for(int j=0; j= 4; } } printf( "%9i %9i %9i %9i\n", n1, n2, n3, ns ); #endif size = 0; frag_count = 0; sequences.clear(); for (i=0; i & counts, Sequence *seq, bool skipN) { int aan_no = counts.Size(); int i, j, k, idx = sequences.size(); for (i=0; i & row = indexCounts[j]; ic.index = idx; row.Append( ic ); size += 1; } } sequences.Append( seq ); return OK_FUNC; } int WordTable::AddWordCountsFrag( NVector & counts, int frag, int frag_size, int repfrag ) { return 0; } int WordTable::AddWordCounts(int aan_no, Vector & word_encodes, Vector & word_encodes_no, int idx, bool skipN) { int i, j, k; //printf( "seq %6i: ", idx ); for (i=0; i & row = indexCounts[j]; row.Append( IndexCount( idx, k ) ); size += 1; //if( k >1 ) printf( " %3i", k ); } } //printf( "\n" ); return OK_FUNC; } int WordTable::AddWordCountsFrag( int aan_no, Vector & word_encodes, Vector & word_encodes_no, int frag, int frag_size ) { int i, j, k, i1, k1, fra; for (i=0; i & row = indexCounts[j]; row.Append( IndexCount( frag_count + fra, k1 ) ); size += 1; } } } frag_count += frag; return 0; } void WordTable::PrintAll() { int i, j, k; int cols = 0; long long total_words = 0; k = 0; for (i=0; i= last ) return; val = data[first]; data[first] = data[ (first+last)/2 ]; data[ (first+last)/2 ] = val; pivot = data[ first ]; while( lower <= upper ){ while( lower <= last && data[lower].count < pivot.count ) lower ++; while( pivot.count < data[upper].count ) upper --; if( lower < upper ){ val = data[lower]; data[lower] = data[upper]; data[upper] = val; upper --; } lower ++; } val = data[first]; data[first] = data[upper]; data[upper] = val; if( first < upper-1 ) PartialQuickSort( data, first, upper-1, partial ); if( upper >= partial ) return; if( upper+1 < last ) PartialQuickSort( data, upper+1, last, partial ); } int WordTable::CountWords(int aan_no, Vector & word_encodes, Vector & word_encodes_no, NVector &lookCounts, NVector & indexMapping, bool est, int min) { int S = frag_count ? frag_count : sequences.size(); int j, k, j0, j1, k1, m; int ix1, ix2, ix3, ix4; IndexCount tmp; IndexCount *ic = lookCounts.items; for(j=0; jindex ] = 0; lookCounts.size = 0; int *we = & word_encodes[0]; j0 = 0; if( est ) while( *we <0 ) j0++, we++; // if met short word has 'N' INTs *wen = & word_encodes_no[j0]; //printf( "\nquery : " ); for (; j01 ) printf( " %3i", j1 ); if( j1==0 ) continue; NVector & one = indexCounts[j]; k1 = one.Size(); IndexCount *ic = one.items; int rest = aan_no - j0 + 1; for (k=0; kcount < j1 ? ic->count : j1; uint32_t *idm = indexMapping.items + ic->index; if( *idm ==0 ){ if( rest < min ) continue; IndexCount *ic2 = lookCounts.items + lookCounts.size; lookCounts.size += 1; *idm = lookCounts.size; ic2->index = ic->index; ic2->count = c; }else{ lookCounts[ *idm - 1 ].count += c; } } } //printf( "%6i %6i\n", S, lookCounts.size ); lookCounts[ lookCounts.size ].count = 0; //printf( "\n\n" ); return OK_FUNC; } Sequence::Sequence() { memset( this, 0, sizeof( Sequence ) ); distance = 2.0; } Sequence::Sequence( const Sequence & other ) { int i; //printf( "new: %p %p\n", this, & other ); memcpy( this, & other, sizeof( Sequence ) ); distance = 2.0; if( other.data ){ size = bufsize = other.size; size_R2 = 0; data = new char[size+1]; //printf( "data: %p %p\n", data, other.data ); data[size] = 0; memcpy( data, other.data, size ); //for (i=0; i XXXXXXABC ------------------- NMLYYYYYY <--R2 // >R1 >R2 // XXXXXXABC YYYYYYLMN =====> Merge into // >R12 // NMLYYYYYYXXXXXXABC Sequence::Sequence( const Sequence & other, const Sequence & other2, int mode ) { int i; if (mode != 1) bomb_error("unknown mode"); //printf( "new: %p %p\n", this, & other ); memcpy( this, & other, sizeof( Sequence ) ); distance = 2.0; if( other.data && other2.data ){ size = bufsize = (other.size + other2.size); size_R2 = other2.size; data = new char[size+1]; //printf( "data: %p %p\n", data, other.data ); data[size] = 0; data[size_R2] = 0; memcpy( data, other2.data, size_R2); // copy R2 first strrev( data ); // reverse R2 on data memcpy( data+size_R2, other.data, size-size_R2 ); // copy R1 to end of R2 //for (i=0; i bufsize ){ char *old = data; bufsize = size + size/5 + 1; data = new char[ bufsize + 1 ]; if ( data == NULL ) bomb_error( "Memory" ); if ( old ){ memcpy( data, old, m ); delete []old; } } if( size ) data[size] = 0; } void Sequence::trim(int trim_len) { if (trim_len >= size) return; size = trim_len; if (size) data[size]=0; } void Sequence::ConvertBases() { int i; for(i=0; i%s...", id, size, tag, identifier+1 ); if( identity ){ int *c = coverage; fprintf( fout, " at " ); if (print) fprintf( fout, "%i:%i:%i:%i/", c[0], c[1], c[2], c[3] ); if (strand) fprintf( fout, "%c/", (state & IS_MINUS_STRAND) ? '-' : '+' ); fprintf( fout, "%.2f%%", identity*100 ); if( options.useDistance ) fprintf( fout, "/%.2f%%", distance*100 ); fprintf( fout, "\n" ); }else{ fprintf( fout, " *\n" ); } } // by liwz gzip version 2019-02 // by liwz // disable swap option // change des_begin, des_length, des_length2, dat_length => des_begin, tot_length // where des_begin is the FILE pointer of sequence record start // tot_length is the total bytes of sequence record void SequenceDB::Readgz( const char *file, const Options & options ) { #ifdef WITH_ZLIB Sequence one; Sequence des; gzFile fin = gzopen(file, "r"); char *buffer = NULL; char *res = NULL; int option_l = options.min_length; if( fin == NULL ) bomb_error( "Failed to open the database file" ); Clear(); buffer = new char[ MAX_LINE_SIZE+1 ]; while (not gzeof( fin ) || one.size) { /* do not break when the last sequence is not handled */ buffer[0] = '>'; if ( (res=gzgets(fin, buffer, MAX_LINE_SIZE)) == NULL && one.size == 0) break; if( buffer[0] == '+' ){ int len = strlen( buffer ); int len2 = len; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=gzgets(fin, buffer, MAX_LINE_SIZE)) == NULL ) break; len2 = strlen( buffer ); len += len2; } one.tot_length += len; // read next line quality score if ( (res=gzgets(fin, buffer, MAX_LINE_SIZE)) == NULL ) bomb_error("can not read quality score after"); len = strlen( buffer ); len2 = len; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=gzgets(fin, buffer, MAX_LINE_SIZE)) == NULL ) break; len2 = strlen( buffer ); len += len2; } one.tot_length += len; }else if (buffer[0] == '>' || buffer[0] == '@' || (res==NULL && one.size)) { if ( one.size ) { // write previous record if( one.identifier == NULL || one.Format() ){ printf( "Warning: from file \"%s\",\n", file ); printf( "Discarding invalid sequence or sequence without identifier and description!\n\n" ); if( one.identifier ) printf( "%s\n", one.identifier ); printf( "%s\n", one.data ); one.size = 0; } one.index = sequences.size(); if( one.size > option_l ) { if (options.trim_len > 0) one.trim(options.trim_len); sequences.Append( new Sequence( one ) ); } } one.size = 0; one.tot_length = 0; int len = strlen( buffer ); int len2 = len; des.size = 0; des += buffer; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=gzgets(fin, buffer, MAX_LINE_SIZE)) == NULL ) break; des += buffer; len2 = strlen( buffer ); len += len2; } size_t offset = gztell( fin ); one.des_begin = offset - len; one.tot_length += len; // count first line int i = 0; if( des.data[i] == '>' || des.data[i] == '@' || des.data[i] == '+' ) i += 1; if( des.data[i] == ' ' or des.data[i] == '\t' ) i += 1; if( options.des_len and options.des_len < des.size ) des.size = options.des_len; while( i < des.size and ! isspace( des.data[i] ) ) i += 1; des.data[i] = 0; one.identifier = des.data; } else { one.tot_length += strlen(buffer); one += buffer; } } one.identifier = NULL; delete[] buffer; gzclose( fin ); #else bomb_error("this program was not compiled with zlib"); #endif } // by liwz // disable swap option // change des_begin, des_length, des_length2, dat_length => des_begin, tot_length // where des_begin is the FILE pointer of sequence record start // tot_length is the total bytes of sequence record void SequenceDB::Read( const char *file, const Options & options ) { int f_len = strlen(file); if (strcmp(file + f_len - 3, ".gz") == 0 ) { Readgz(file, options); return; } Sequence one; Sequence des; FILE *fin = fopen( file, "rb" ); char *buffer = NULL; char *res = NULL; int option_l = options.min_length; if( fin == NULL ) bomb_error( "Failed to open the database file" ); Clear(); buffer = new char[ MAX_LINE_SIZE+1 ]; while (not feof( fin ) || one.size) { /* do not break when the last sequence is not handled */ buffer[0] = '>'; if ( (res=fgets( buffer, MAX_LINE_SIZE, fin )) == NULL && one.size == 0) break; if( buffer[0] == '+' ){ int len = strlen( buffer ); int len2 = len; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=fgets( buffer, MAX_LINE_SIZE, fin )) == NULL ) break; len2 = strlen( buffer ); len += len2; } one.tot_length += len; // read next line quality score if ( (res=fgets( buffer, MAX_LINE_SIZE, fin )) == NULL ) bomb_error("can not read quality score after"); len = strlen( buffer ); len2 = len; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=fgets( buffer, MAX_LINE_SIZE, fin )) == NULL ) break; len2 = strlen( buffer ); len += len2; } one.tot_length += len; }else if (buffer[0] == '>' || buffer[0] == '@' || (res==NULL && one.size)) { if ( one.size ) { // write previous record if( one.identifier == NULL || one.Format() ){ printf( "Warning: from file \"%s\",\n", file ); printf( "Discarding invalid sequence or sequence without identifier and description!\n\n" ); if( one.identifier ) printf( "%s\n", one.identifier ); printf( "%s\n", one.data ); one.size = 0; } one.index = sequences.size(); if( one.size > option_l ) { if (options.trim_len > 0) one.trim(options.trim_len); sequences.Append( new Sequence( one ) ); } } one.size = 0; one.tot_length = 0; int len = strlen( buffer ); int len2 = len; des.size = 0; des += buffer; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=fgets( buffer, MAX_LINE_SIZE, fin )) == NULL ) break; des += buffer; len2 = strlen( buffer ); len += len2; } size_t offset = ftell( fin ); one.des_begin = offset - len; one.tot_length += len; // count first line int i = 0; if( des.data[i] == '>' || des.data[i] == '@' || des.data[i] == '+' ) i += 1; if( des.data[i] == ' ' or des.data[i] == '\t' ) i += 1; if( options.des_len and options.des_len < des.size ) des.size = options.des_len; while( i < des.size and ! isspace( des.data[i] ) ) i += 1; des.data[i] = 0; one.identifier = des.data; } else { one.tot_length += strlen(buffer); one += buffer; } } #if 0 int i, n = 0; for(i=0; i 0)) bomb_error( "Paired input files have different number sequences" ); if ( (one.size > 0 ) && (two.size == 0)) bomb_error( "Paired input files have different number sequences" ); if ( (res == NULL) && (one.size == 0)) break; if( buffer[0] == '+' ){ // fastq 3rd line // file 1 int len = strlen( buffer ); int len2 = len; while( len2 && buffer[len2-1] != '\n' ){ // read until the end of the line if ( (res=gzgets(fin, buffer, MAX_LINE_SIZE)) == NULL ) break; len2 = strlen( buffer ); len += len2; } one.tot_length += len; // read next line quality score if ( (res=gzgets(fin, buffer, MAX_LINE_SIZE)) == NULL ) bomb_error("can not read quality score after"); len = strlen( buffer ); len2 = len; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=gzgets(fin, buffer, MAX_LINE_SIZE)) == NULL ) break; len2 = strlen( buffer ); len += len2; } one.tot_length += len; // file 2 len = strlen( buffer2 ); len2 = len; while( len2 && buffer2[len2-1] != '\n' ){ // read until the end of the line if ( (res2=gzgets(fin2, buffer2, MAX_LINE_SIZE)) == NULL ) break; len2 = strlen( buffer2 ); len += len2; } two.tot_length += len; // read next line quality score if ( (res2=gzgets(fin2, buffer2, MAX_LINE_SIZE)) == NULL ) bomb_error("can not read quality score after"); len = strlen( buffer2 ); len2 = len; while( len2 && buffer2[len2-1] != '\n' ){ if ( (res2=gzgets(fin2, buffer2, MAX_LINE_SIZE)) == NULL ) break; len2 = strlen( buffer2 ); len += len2; } two.tot_length += len; }else if (buffer[0] == '>' || buffer[0] == '@' || (res==NULL && one.size)) { if ( one.size && two.size ) { // write previous record if( one.identifier == NULL || one.Format() ){ printf( "Warning: from file \"%s\",\n", file ); printf( "Discarding invalid sequence or sequence without identifier and description!\n\n" ); if( one.identifier ) printf( "%s\n", one.identifier ); printf( "%s\n", one.data ); one.size=0; two.size=0; } if( two.identifier == NULL || two.Format() ){ printf( "Warning: from file \"%s\",\n", file2 ); printf( "Discarding invalid sequence or sequence without identifier and description!\n\n" ); if( two.identifier ) printf( "%s\n", two.identifier ); printf( "%s\n", two.data ); one.size=0; two.size = 0; } one.index = sequences.size(); if( (one.size + two.size)> option_l ) { if (options.trim_len > 0) one.trim(options.trim_len); if (options.trim_len_R2 > 0) two.trim(options.trim_len_R2); sequences.Append( new Sequence( one, two, 1 ) ); } } // R1 one.size = 0; one.tot_length = 0; int len = strlen( buffer ); int len2 = len; des.size = 0; des += buffer; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=gzgets(fin, buffer, MAX_LINE_SIZE)) == NULL ) break; des += buffer; len2 = strlen( buffer ); len += len2; } size_t offset = gztell( fin ); one.des_begin = offset - len; // offset of ">" or "@" one.tot_length += len; // count first line int i = 0; if( des.data[i] == '>' || des.data[i] == '@' || des.data[i] == '+' ) i += 1; if( des.data[i] == ' ' or des.data[i] == '\t' ) i += 1; if( options.des_len and options.des_len < des.size ) des.size = options.des_len; while( i < des.size and ! isspace( des.data[i] ) ) i += 1; des.data[i] = 0; // find first non-space letter one.identifier = des.data; // R2 two.size = 0; two.tot_length = 0; len = strlen( buffer2 ); len2 = len; while( len2 && buffer2[len2-1] != '\n' ){ if ( (res=gzgets(fin2, buffer2, MAX_LINE_SIZE)) == NULL ) break; len2 = strlen( buffer2 ); len += len2; } offset = gztell( fin2 ); two.des_begin = offset - len; two.tot_length += len; // count first line two.identifier = des.data; } else { one.tot_length += strlen(buffer); one += buffer; two.tot_length+= strlen(buffer2); two+= buffer2; } } one.identifier = NULL; two.identifier = NULL; delete[] buffer; gzclose( fin ); delete[] buffer2; gzclose( fin2 ); #else bomb_error("this program was not compiled with zlib"); #endif } // PE reads liwz, disable swap option void SequenceDB::Read( const char *file, const char *file2, const Options & options ) { int f_len = strlen(file); int f_len2= strlen(file2); if (strcmp(file + f_len - 3, ".gz") == 0 ) { if ( strcmp(file2 + f_len2 - 3, ".gz") ) bomb_error( "Both input files need to be in .gz format" ); Readgz(file, file2, options); return; } Sequence one, two; Sequence des; FILE *fin = fopen( file, "rb" ); FILE *fin2= fopen( file2,"rb" ); char *buffer = NULL; char *buffer2= NULL; char *res = NULL; char *res2= NULL; int option_l = options.min_length; if( fin == NULL ) bomb_error( "Failed to open the database file" ); if( fin2== NULL ) bomb_error( "Failed to open the database file" ); Clear(); buffer = new char[ MAX_LINE_SIZE+1 ]; buffer2= new char[ MAX_LINE_SIZE+1 ]; while (((not feof( fin )) && (not feof( fin2)) ) || (one.size && two.size)) { /* do not break when the last sequence is not handled */ buffer[0] = '>'; res =fgets( buffer, MAX_LINE_SIZE, fin ); buffer2[0]= '>'; res2=fgets( buffer2, MAX_LINE_SIZE, fin2 ); if ( (res == NULL) && (res2 != NULL)) bomb_error( "Paired input files have different number sequences" ); if ( (res != NULL) && (res2 == NULL)) bomb_error( "Paired input files have different number sequences" ); if ( (one.size == 0 ) && (two.size > 0)) bomb_error( "Paired input files have different number sequences" ); if ( (one.size > 0 ) && (two.size == 0)) bomb_error( "Paired input files have different number sequences" ); if ( (res == NULL) && (one.size == 0)) break; if( buffer[0] == '+' ){ // fastq 3rd line // file 1 int len = strlen( buffer ); int len2 = len; while( len2 && buffer[len2-1] != '\n' ){ // read until the end of the line if ( (res=fgets( buffer, MAX_LINE_SIZE, fin )) == NULL ) break; len2 = strlen( buffer ); len += len2; } one.tot_length += len; // read next line quality score if ( (res=fgets( buffer, MAX_LINE_SIZE, fin )) == NULL ) bomb_error("can not read quality score after"); len = strlen( buffer ); len2 = len; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=fgets( buffer, MAX_LINE_SIZE, fin )) == NULL ) break; len2 = strlen( buffer ); len += len2; } one.tot_length += len; // file 2 len = strlen( buffer2 ); len2 = len; while( len2 && buffer2[len2-1] != '\n' ){ // read until the end of the line if ( (res2=fgets( buffer2, MAX_LINE_SIZE, fin2 )) == NULL ) break; len2 = strlen( buffer2 ); len += len2; } two.tot_length += len; // read next line quality score if ( (res2=fgets( buffer2, MAX_LINE_SIZE, fin2 )) == NULL ) bomb_error("can not read quality score after"); len = strlen( buffer2 ); len2 = len; while( len2 && buffer2[len2-1] != '\n' ){ if ( (res2=fgets( buffer2, MAX_LINE_SIZE, fin2 )) == NULL ) break; len2 = strlen( buffer2 ); len += len2; } two.tot_length += len; }else if (buffer[0] == '>' || buffer[0] == '@' || (res==NULL && one.size)) { if ( one.size && two.size ) { // write previous record if( one.identifier == NULL || one.Format() ){ printf( "Warning: from file \"%s\",\n", file ); printf( "Discarding invalid sequence or sequence without identifier and description!\n\n" ); if( one.identifier ) printf( "%s\n", one.identifier ); printf( "%s\n", one.data ); one.size=0; two.size=0; } if( two.identifier == NULL || two.Format() ){ printf( "Warning: from file \"%s\",\n", file2 ); printf( "Discarding invalid sequence or sequence without identifier and description!\n\n" ); if( two.identifier ) printf( "%s\n", two.identifier ); printf( "%s\n", two.data ); one.size=0; two.size = 0; } one.index = sequences.size(); if( (one.size + two.size)> option_l ) { if (options.trim_len > 0) one.trim(options.trim_len); if (options.trim_len_R2 > 0) two.trim(options.trim_len_R2); sequences.Append( new Sequence( one, two, 1 ) ); } } // R1 one.size = 0; one.tot_length = 0; int len = strlen( buffer ); int len2 = len; des.size = 0; des += buffer; while( len2 && buffer[len2-1] != '\n' ){ if ( (res=fgets( buffer, MAX_LINE_SIZE, fin )) == NULL ) break; des += buffer; len2 = strlen( buffer ); len += len2; } size_t offset = ftell( fin ); one.des_begin = offset - len; // offset of ">" or "@" one.tot_length += len; // count first line int i = 0; if( des.data[i] == '>' || des.data[i] == '@' || des.data[i] == '+' ) i += 1; if( des.data[i] == ' ' or des.data[i] == '\t' ) i += 1; if( options.des_len and options.des_len < des.size ) des.size = options.des_len; while( i < des.size and ! isspace( des.data[i] ) ) i += 1; des.data[i] = 0; // find first non-space letter one.identifier = des.data; // R2 two.size = 0; two.tot_length = 0; len = strlen( buffer2 ); len2 = len; while( len2 && buffer2[len2-1] != '\n' ){ if ( (res=fgets( buffer2, MAX_LINE_SIZE, fin2 )) == NULL ) break; len2 = strlen( buffer2 ); len += len2; } offset = ftell( fin2 ); two.des_begin = offset - len; two.tot_length += len; // count first line two.identifier = des.data; } else { one.tot_length += strlen(buffer); one += buffer; two.tot_length+= strlen(buffer2); two+= buffer2; } } #if 0 int i, n = 0; for(i=0; i= last ) return; val = sequences[first]; sequences[first] = sequences[ (first+last)/2 ]; sequences[ (first+last)/2 ] = val; pivot = sequences[ first ]; while( lower <= upper ){ while( lower <= last && sequences[lower]->stats < pivot->stats ) lower ++; while( pivot->stats < sequences[upper]->stats ) upper --; if( lower < upper ){ val = sequences[lower]; sequences[lower] = sequences[upper]; sequences[upper] = val; upper --; } lower ++; } val = sequences[first]; sequences[first] = sequences[upper]; sequences[upper] = val; if( first < upper-1 ) Sort( first, upper-1 ); if( upper+1 < last ) Sort( upper+1, last ); } #endif void SequenceDB::SortDivide( Options & options, bool sort ) { int i, j, k, len; int N = sequences.size(); total_letter=0; total_desc=0; max_len = 0; min_len = (size_t)-1; for (i=0; isize; total_letter += len; if (len > max_len) max_len = len; if (len < min_len) min_len = len; if (seq->swap == NULL) seq->ConvertBases(); if( seq->identifier ) total_desc += strlen( seq->identifier ); } options.max_entries = max_len * MAX_TABLE_SEQ; if (max_len >= 65536 and sizeof(INTs) <=2) bomb_warning("Some seqs longer than 65536, you may define LONG_SEQ"); if (max_len > MAX_SEQ ) bomb_warning("Some seqs are too long, please rebuild the program with make parameter " "MAX_SEQ=new-maximum-length (e.g. make MAX_SEQ=10000000)"); cout << "longest and shortest : " << max_len << " and " << min_len << endl; cout << "Total letters: " << total_letter << endl; // END change all the NR_seq to iseq len_n50 = (max_len + min_len) / 2; // will be properly set, if sort is true; if( sort ){ // **************************** Form NR_idx[], Sort them from Long to short long long sum = 0; int M = max_len - min_len + 1; Vector count( M, 0 ); // count for each size = max_len - i Vector accum( M, 0 ); // count for all size > max_len - i Vector offset( M, 0 ); // offset from accum[i] when filling sorting Vector sorting( N ); // TODO: use a smaller class if this consumes to much memory! for (i=0; isize ] ++; for (i=1; i= (total_letter>>1) ){ len_n50 = max_len - i; break; } } for (i=0; isize; int id = accum[len] + offset[len]; //sequences[i].index = id; sorting[id] = sequences[i]; offset[len] ++; } options.max_entries = 0; for (i=0; isize; } #if 0 if( options.isEST ){ int start = 0; for (i=0; isize; if( max_seg >= MAX_BIN_SWAP ) max_seg = (size_t) MAX_BIN_SWAP; FILE *fin = fopen( db, "rb" ); char *buf = new char[MAX_LINE_SIZE+1]; char outfile[512]; size_t seg_size = 0; int i, j, count, rest, seg = 0; sprintf( outfile, "%s-%i", newdb, 0 ); FILE *fout = fopen( outfile, "w+" ); n = sequences.size(); for (i=0; ides_begin, SEEK_SET ); seg_size += seq->size; if( seg_size >= max_seg ){ seg += 1; sprintf( outfile, "%s-%i", newdb, seg ); fclose( fout ); fout = fopen( outfile, "w+" ); seg_size = seq->size; } count = seq->tot_length / MAX_LINE_SIZE; rest = seq->tot_length % MAX_LINE_SIZE; //printf( "count = %6i, rest = %6i\n", count, rest ); for (j=0; j sorting( n ); if( fin == NULL || fout == NULL ) bomb_error( "file opening failed" ); for (i=0; iindex << 32) | rep_seqs[i]; std::sort( sorting.begin(), sorting.end() ); for (i=0; ides_begin, SEEK_SET ); count = seq->tot_length / MAX_LINE_SIZE; rest = seq->tot_length % MAX_LINE_SIZE; //printf( "count = %6i, rest = %6i\n", count, rest ); for (j=0; j sorting( n ); if( fin == NULL || fout == NULL ) bomb_error( "file opening failed" ); for (i=0; iindex << 32) | rep_seqs[i]; std::sort( sorting.begin(), sorting.end() ); for (i=0; ides_begin, SEEK_SET ); count = seq->tot_length / MAX_LINE_SIZE; rest = seq->tot_length % MAX_LINE_SIZE; //printf( "count = %6i, rest = %6i\n", count, rest ); for (j=0; j sorting( n ); if( fin == NULL || fout == NULL ) bomb_error( "file opening failed" ); if( fin_pe == NULL || fout_pe == NULL ) bomb_error( "file opening failed" ); for (i=0; iindex << 32) | rep_seqs[i]; std::sort( sorting.begin(), sorting.end() ); //sort fasta / fastq int *clstr_size; int *clstr_idx1; if (options.sort_outputf) { clstr_size = new int[n]; clstr_idx1 = new int[n]; for (i=0; icluster_id; if (id < 0) continue; if (id >=n) continue; clstr_size[id]++; } quick_sort_idxr(clstr_size, clstr_idx1, 0, n-1); } for (i=0; ides_begin, SEEK_SET ); count = seq->tot_length / MAX_LINE_SIZE; rest = seq->tot_length % MAX_LINE_SIZE; //printf( "count = %6i, rest = %6i\n", count, rest ); for (j=0; jdes_begin2, SEEK_SET ); count = seq->tot_length2 / MAX_LINE_SIZE; rest = seq->tot_length2 % MAX_LINE_SIZE; //printf( "count = %6i, rest = %6i\n", count, rest ); for (j=0; j sorting( n ); if( fin == NULL || fout == NULL ) bomb_error( "file opening failed" ); if( fin_pe == NULL || fout_pe == NULL ) bomb_error( "file opening failed" ); for (i=0; iindex << 32) | rep_seqs[i]; std::sort( sorting.begin(), sorting.end() ); //sort fasta / fastq int *clstr_size; int *clstr_idx1; if (options.sort_outputf) { clstr_size = new int[n]; clstr_idx1 = new int[n]; for (i=0; icluster_id; if (id < 0) continue; if (id >=n) continue; clstr_size[id]++; } quick_sort_idxr(clstr_size, clstr_idx1, 0, n-1); } for (i=0; ides_begin, SEEK_SET ); count = seq->tot_length / MAX_LINE_SIZE; rest = seq->tot_length % MAX_LINE_SIZE; //printf( "count = %6i, rest = %6i\n", count, rest ); for (j=0; jdes_begin2, SEEK_SET ); count = seq->tot_length2 / MAX_LINE_SIZE; rest = seq->tot_length2 % MAX_LINE_SIZE; //printf( "count = %6i, rest = %6i\n", count, rest ); for (j=0; j sorting( N ); for (i=0; iindex << 32) | i; std::sort( sorting.begin(), sorting.end() ); FILE *fout; char *buf = new char[ MAX_DES + 1 ]; if( options.backupFile ){ fout = fopen( db_clstr_bak.c_str(), "w+" ); for (i=0; iPrintInfo( seq->cluster_id, fout, options, buf ); } fclose( fout ); } cout << "writing clustering information" << endl; int M = rep_seqs.size(); Vector > clusters( M ); for (i=0; icluster_id; clusters[id].Append( k ); } fout = fopen( db_clstr.c_str(), "w+" ); if (options.sort_output) { int *clstr_size = new int[M]; int *clstr_idx1 = new int[M]; for (i=0; iCluster %i\n", i ); for (k=0; k<(int)clusters[i0].size(); k++) sequences[ clusters[i0][k] ]->PrintInfo( k, fout, options, buf ); } } else { for (i=0; iCluster %i\n", i ); for (k=0; k<(int)clusters[i].size(); k++) sequences[ clusters[i][k] ]->PrintInfo( k, fout, options, buf ); } } delete []buf; } void SequenceDB::WriteExtra2D( SequenceDB & other, const Options & options ) { string db_clstr = options.output + ".clstr"; string db_clstr_bak = options.output + ".bak.clstr"; int i, k, N = other.sequences.size(); int N2 = sequences.size(); vector sorting( N ); for (i=0; iindex << 32) | i; std::sort( sorting.begin(), sorting.end() ); FILE *fout; char *buf = new char[ MAX_DES + 1 ]; if( options.backupFile ){ fout = fopen( db_clstr_bak.c_str(), "w+" ); for (i=0; iPrintInfo( seq->cluster_id, fout, options, buf ); } for (i=0; istate & IS_REDUNDANT ) seq->PrintInfo( seq->cluster_id, fout, options, buf ); } fclose( fout ); } cout << "writing clustering information" << endl; Vector > clusters( N ); for (i=0; icluster_id; if( sequences[i]->state & IS_REDUNDANT ) clusters[id].Append( i ); } fout = fopen( db_clstr.c_str(), "w+" ); for (i=0; iCluster %i\n", i ); seq->PrintInfo( 0, fout, options, buf ); for (k=0; k<(int)clusters[i].size(); k++) sequences[ clusters[i][k] ]->PrintInfo( k+1, fout, options, buf ); } delete []buf; } void WorkingParam::ControlShortCoverage( int len, const Options & options ) { len_eff = len; aln_cover_flag = 0; if ((options.short_coverage > 0.0) || (options.min_control>0) ) { // has alignment coverage control aln_cover_flag = 1; min_aln_lenS = (int) (double(len) * options.short_coverage); if ( len-options.short_control > min_aln_lenS) min_aln_lenS = len-options.short_control; if ( options.min_control > min_aln_lenS) min_aln_lenS = options.min_control; } if (options.global_identity == 0) len_eff = min_aln_lenS; //global_identity==0 } void WorkingParam::ControlLongCoverage( int len2, const Options & options ) { if (aln_cover_flag) { min_aln_lenL = (int) (double(len2) * options.long_coverage); if ( len2-options.long_control > min_aln_lenL) min_aln_lenL = len2-options.long_control; if ( options.min_control > min_aln_lenL) min_aln_lenL = options.min_control; } } // when alignment coverage such as -aL is specified // if a existing rep is too long, it won't be qulified int upper_bound_length_rep(int len, double opt_s, int opt_S, double opt_aL, int opt_AL ) { int len_upper_bound = 99999999; double r1 = (opt_s > opt_aL) ? opt_s : opt_aL; int a2 = (opt_S < opt_AL) ? opt_S : opt_AL; if (r1 > 0.0) len_upper_bound = (int) ( ((float) len) / r1); if ((len+a2) < len_upper_bound) len_upper_bound = len+a2; return len_upper_bound; } // END upper_bound_length_rep int upper_bound_length_rep(int len, const Options & options ) { double opt_s = options.diff_cutoff; int opt_S = options.diff_cutoff_aa; double opt_aL = options.long_coverage; int opt_AL = options.long_control; return upper_bound_length_rep( len, opt_s, opt_S, opt_aL, opt_AL ); } void cal_aax_cutoff(double &aa1_cutoff, double &aa2_cutoff, double &aan_cutoff, double cluster_thd, int tolerance, int naa_stat_start_percent, int naa_stat[5][61][4], int NAA) { aa1_cutoff = cluster_thd; aa2_cutoff = 1 - (1-cluster_thd)*2; aan_cutoff = 1 - (1-cluster_thd)*NAA; if (tolerance==0) return; int clstr_idx = (int) (cluster_thd * 100) - naa_stat_start_percent; if (clstr_idx <0) clstr_idx = 0; double d2 = ((double) (naa_stat[tolerance-1][clstr_idx][3] )) / 100; double dn = ((double) (naa_stat[tolerance-1][clstr_idx][5-NAA] )) / 100; aa2_cutoff = d2 > aa2_cutoff ? d2 : aa2_cutoff; aan_cutoff = dn > aan_cutoff ? dn : aan_cutoff; return; } // END cal_aax_cutoff void update_aax_cutoff(double &aa1_cutoff, double &aa2_cutoff, double &aan_cutoff, int tolerance, int naa_stat_start_percent, int naa_stat[5][61][4], int NAA, double cluster_thd) { if (cluster_thd > 1.0) cluster_thd = 1.00; double aa1_t, aa2_t, aan_t; cal_aax_cutoff(aa1_t, aa2_t, aan_t, cluster_thd, tolerance, naa_stat_start_percent, naa_stat, NAA); if (aa1_t > aa1_cutoff) aa1_cutoff = aa1_t; if (aa2_t > aa2_cutoff) aa2_cutoff = aa2_t; if (aan_t > aan_cutoff) aan_cutoff = aan_t; return; } // END update_aax_cutoff void WorkingParam::ComputeRequiredBases( int NAA, int ss, const Options & option ) { // d: distance, fraction of errors; // e: number of errors; // g: length of the maximum gap; // m: word length; // n: sequence length; // alignment length = n - g + 1; // d = e / (n - g + 1); // e >= 1, so that, g <= n + 1 - 1/d // word count = (n - g - m + 1) - (e - 1)*m; // = (n - g - m + 1) - (d*(n - g + 1) - 1)*m // = (n - g + 1) - d*m*(n - g + 1) // = (n - g + 1)*(1 - d*m) // minimum word count is reached when g == n + 1 - 1/d // so, minimum word count = 1/d - m. // if g == band_width: word count = (n - band + 1)*(1 - d*m); if( options.useDistance ){ int band = options.band_width + 1; int invd = int( 1.0 / (options.distance_thd + 1E-9) ); int k = len_eff < invd ? len_eff : invd; int ks = len_eff - ss + 1; int kn = len_eff - NAA + 1; int ks2 = invd - ss; int kn2= invd - NAA; int ks3 = int((len_eff - band + 1.0)*(1.0 - options.distance_thd * ss)); int kn3 = int((len_eff - band + 1.0)*(1.0 - options.distance_thd * NAA)); //if( ks3 > ks2 ) ks2 = ks3; //if( kn3 > kn2 ) kn2 = kn3; required_aa1 = required_aas = (ks2 < ks ? ks2 : ks); required_aan = kn2 < kn ? kn2 : kn; if( required_aa1 <=0 ) required_aa1 = required_aas = 1; if( required_aan <=0 ) required_aan = 1; //required_aa1 = required_aas = required_aan = 0; return; } // (N-K)-K*(1-C)*N = C*K*N-(K-1)*N-K = (C*K-K+1)*N-K required_aa1 = (len_eff - ss) - int(ss * ceil( (1.0 - aa1_cutoff) * len_eff )); if( required_aa1 < 0 ) required_aa1 = 0; required_aas = required_aa1; required_aan = (len_eff - NAA) - int(NAA * ceil( (1.0 - aa1_cutoff) * len_eff )); //printf( "%i %i\n", required_aa1, required_aan ); if( required_aan < 0 ) required_aan = 0; int aa1_old = int (aa1_cutoff* (double) len_eff) - ss + 1; int aas_old = int (aas_cutoff* (double) len_eff); int aan_old = int (aan_cutoff* (double) len_eff); double thd = option.cluster_thd; //double rest = (len_eff - ss) / double(len_eff * ss); double rest = (len_eff - NAA) / double(len_eff * NAA); double thd0 = 1.0 - rest; double fnew = 0; double fold = 1; if( thd > thd0 ){ fnew = (thd - thd0) / rest; fold = 1.0 - fnew; } //printf( "%g %g %g\n", thd, thd0, fnew ); required_aa1 = (int)(fnew*required_aa1 + fold*aa1_old); required_aas = (int)(fnew*required_aas + fold*aas_old); required_aan = (int)(fnew*required_aan + fold*aan_old); } int WorkingBuffer::EncodeWords( Sequence *seq, int NAA, bool est ) { char *seqi = seq->data; int len = seq->size; // check_word_encodes int aan_no = len - NAA + 1; int i, j, i0, i1; int skip = 0; unsigned char k, k1; for (j=0; j= 4 ) { // here N is 4 i0 = (j-NAA+1 > 0) ? j-NAA+1 : 0; i1 = j < aan_no ? j : aan_no - 1; for (i=i0; i<=i1; i++) word_encodes[i]=-1; } } for (j=0; j=4) || (seqi[j1+1]>=4) || (seqi[j1+2]>=4) || (seqi[j1+3]>=4)) continue; //skip N c22 = seqi[j1]*NAA3 + seqi[j1+1]*NAA2 + seqi[j1+2]*NAA1 + seqi[j1+3]; taap[c22]++; } for (sk=0,mm=0; sk=4) || (seqi[j1+1]>=4) || (seqi[j1+2]>=4) || (seqi[j1+3]>=4)) continue; //skip N c22 = seqi[j1]*NAA3 + seqi[j1+1]*NAA2 + seqi[j1+2]*NAA1 + seqi[j1+3]; aap_list[aap_begin[c22]+taap[c22]++] =j1; } } void SequenceDB::ClusterOne( Sequence *seq, int id, WordTable & table, WorkingParam & param, WorkingBuffer & buffer, const Options & options ) { if (seq->state & IS_REDUNDANT) return; int frag_size = options.frag_size; int NAA = options.NAA; int len = seq->size; int len_bound = upper_bound_length_rep(len, options); param.len_upper_bound = len_bound; int flag = CheckOne( seq, table, param, buffer, options ); if( flag == 0 ){ if ((seq->identity>0) && (options.cluster_best)) { // because of the -g option, this seq is similar to seqs in old SEGs seq->state |= IS_REDUNDANT ; seq->Clear(); } else { // else add to NR90 db int aan_no = len - NAA + 1; int size = rep_seqs.size(); rep_seqs.Append( id ); seq->cluster_id = size; seq->identity = 0; seq->state |= IS_REP; if (frag_size){ /* not used for EST */ int frg1 = (len - NAA ) / frag_size + 1; table.AddWordCountsFrag( aan_no, buffer.word_encodes_backup, buffer.word_encodes_no, frg1, frag_size ); }else{ table.AddWordCounts(aan_no, buffer.word_encodes, buffer.word_encodes_no, table.sequences.size(), options.isEST); } table.sequences.Append( seq ); if( frag_size ){ while( table.sequences.size() < table.frag_count ) table.sequences.Append( seq ); } } } if ( (id+1) % 1000 == 0 ) { int size = rep_seqs.size(); printf( "." ); fflush( stdout ); if ( (id+1) % 10000 == 0 ) printf( "\r..........%9i finished %9i clusters\n", id+1, size ); } } #include size_t SequenceDB::MinimalMemory( int frag_no, int bsize, int T, const Options & options, size_t extra ) { int N = sequences.size(); int F = frag_no < MAX_TABLE_SEQ ? frag_no : MAX_TABLE_SEQ; size_t mem_need = 0; size_t mem, mega = 1000000; int table = T > 1 ? 2 : 1; printf( "\nApproximated minimal memory consumption:\n" ); mem = N*sizeof(Sequence) + total_desc + N + extra; if( options.store_disk == false ) mem += total_letter + N; printf( "%-16s: %zuM\n", "Sequence", mem/mega ); mem_need += mem; mem = bsize; printf( "%-16s: %i X %zuM = %zuM\n", "Buffer", T, mem/mega, T*mem/mega ); mem_need += T*mem; mem = F*(sizeof(Sequence*) + sizeof(IndexCount)) + NAAN*sizeof(NVector); printf( "%-16s: %i X %zuM = %zuM\n", "Table", table, mem/mega, table*mem/mega ); mem_need += table*mem; mem = sequences.capacity()*sizeof(Sequence*) + N*sizeof(int); mem += Comp_AAN_idx.size()*sizeof(int); printf( "%-16s: %zuM\n", "Miscellaneous", mem/mega ); mem_need += mem; printf( "%-16s: %zuM\n\n", "Total", mem_need/mega ); if(options.max_memory and options.max_memory < mem_need + 50*table ){ char msg[200]; sprintf( msg, "not enough memory, please set -M option greater than %zu\n", 50*table + mem_need/mega ); bomb_error(msg); } return mem_need; } size_t MemoryLimit( size_t mem_need, const Options & options ) { size_t mem_limit = (options.max_memory - mem_need) / sizeof(IndexCount); //printf( "Table limit with the given memory limit:\n" ); if( options.max_memory == 0 ){ mem_limit = options.max_entries; if( mem_limit > MAX_TABLE_SIZE ) mem_limit = MAX_TABLE_SIZE; } //printf( "Max number of representatives: %zu\n", mem_limit ); //printf( "Max number of word counting entries: %zu\n\n", mem_limit ); return mem_limit; } void Options::ComputeTableLimits( int min_len, int max_len, int typical_len, size_t mem_need ) { //liwz Fri Jan 15 15:44:47 PST 2016 //T=1 scale=1 //T=2 scale=0.6035 //T=4 scale=0.375 //T=8 scale=0.2392 //T=16 scale=0.1562 //T=32 scale=0.104 //T=64 scale=0.0703 double scale = 0.5/threads + 0.5/sqrt(threads); max_sequences = (size_t)(scale * MAX_TABLE_SEQ); max_entries = (size_t)(scale * (500*max_len + 500000*typical_len + 50000000)); if( max_memory ){ double frac = max_sequences / (double) max_entries; max_entries = (options.max_memory - mem_need) / sizeof(IndexCount); max_sequences = (size_t)(max_entries * frac); if( max_sequences < MAX_TABLE_SEQ / 100 ) max_sequences = MAX_TABLE_SEQ / 100; if( max_sequences > MAX_TABLE_SEQ ) max_sequences = MAX_TABLE_SEQ; } printf( "Table limit with the given memory limit:\n" ); printf( "Max number of representatives: %zu\n", max_sequences ); printf( "Max number of word counting entries: %zu\n\n", max_entries ); } void SequenceDB::DoClustering( int T, const Options & options ) { int i, j, k; int NAA = options.NAA; double aa1_cutoff = options.cluster_thd; double aas_cutoff = 1 - (1-options.cluster_thd)*4; double aan_cutoff = 1 - (1-options.cluster_thd)*options.NAA; int seq_no = sequences.size(); int frag_no = seq_no; int frag_size = options.frag_size; int len, len_bound; int flag; valarray letters(T); //printf( "%li\n", options.mem_limit ); if (frag_size){ frag_no = 0; for (i=0; isize - NAA) / frag_size + 1; } if( not options.isEST ) cal_aax_cutoff(aa1_cutoff, aas_cutoff, aan_cutoff, options.cluster_thd, options.tolerance, naa_stat_start_percent, naa_stat, NAA); Vector params(T); Vector buffers(T); for(i=0; i 1000 ){ // first SCB with small size max_items /= 8; max_seqs /= 8; } while( m < N && (sum*redundancy) < max_seqs && items < max_items ){ Sequence *seq = sequences[m]; if( ! (seq->state & IS_REDUNDANT) ){ if ( options.store_disk ) seq->SwapIn(); //items += seq->size; items += (size_t)(seq->size * redundancy); sum += 1; } m ++; } if( (m > i + 1E4) && (m > i + (N - i) / (2+T)) ) m = i + (N - i) / (2+T); if( m == i || m >= N ){ m = N; if( m > i + 1E3 ) m = i + (N - i) / (2+T); } //printf( "m = %i %i, %i\n", i, m, m-i ); printf( "\r# comparing sequences from %9i to %9i\n", i, m ); if( last_table.size ){ int print = (m-i)/20 + 1; #pragma omp parallel for schedule( dynamic, 1 ) for(int j=i; jstate & IS_REDUNDANT) continue; int tid = omp_get_thread_num(); CheckOne( seq, last_table, params[tid], buffers[tid], options ); if ( options.store_disk && (seq->state & IS_REDUNDANT) ) seq->SwapOut(); if( j%print==0 ){ printf( "." ); fflush( stdout ); } } int may_stop = 0; int self_stop = 0; float p0 = 0; int min = last_table.sequences[ last_table.sequences.size()-1 ]->size; int m0 = m; bool stop = false; #pragma omp parallel for schedule( dynamic, 1 ) for(int j=m-1; jstate & IS_REDUNDANT) continue; ClusterOne( seq, ks, word_table, params[tid], buffers[tid], options ); if ( options.store_disk && (seq->state & IS_REDUNDANT) ) seq->SwapOut(); if( may_stop and word_table.sequences.size() >= 100 ) break; if( word_table.size >= max_items ) break; int tmax = max_seqs - (frag_size ? seq->size / frag_size + 1 : 0); if( word_table.sequences.size() >= tmax ) break; } self_stop = 1; }else{ Sequence *seq = sequences[j]; if (seq->state & IS_REDUNDANT) continue; if ( options.store_disk ){ #pragma omp critical seq->SwapIn(); } int tid = omp_get_thread_num(); CheckOne( seq, last_table, params[tid], buffers[tid], options ); if ( options.store_disk && (seq->state & IS_REDUNDANT) ) seq->SwapOut(); if( min > params[tid].len_upper_bound ){ may_stop = 1; stop = true; #pragma omp flush (stop) } if( self_stop && tid ==1 ){ float p = (100.0*j)/N; if( p > p0+1E-1 ){ // print only if the percentage changed printf( "\r%4.1f%%", p ); fflush( stdout ); p0 = p; } } } } } } if( i == start || m == N ){ //printf( "comparing the first or last or very small group ...\n" ); fflush( stdout ); for(k=i; kstate & IS_REDUNDANT) ) sum += sequences[mm]->size; mm += 1; } if( mm < k + 1000 ) mm = k + 1000; if( mm > m ) mm = m; #pragma omp parallel for schedule( dynamic, 1 ) for(kk=k; kkstate & IS_REDUNDANT) continue; int tid = omp_get_thread_num(); CheckOne( seq, word_table, params[tid], buffers[tid], options ); if ( options.store_disk && (seq->state & IS_REDUNDANT) ) seq->SwapOut(); } bool bk = false; for(int ks=k; ksstate & IS_REDUNDANT) continue; ClusterOne( seq, ks, word_table, params[0], buffers[0], options ); bk = true; if ( options.store_disk && (seq->state & IS_REDUNDANT) ) seq->SwapOut(); if( word_table.size >= max_items ) break; int tmax = max_seqs - (frag_size ? seq->size / frag_size + 1 : 0); if( word_table.sequences.size() >= tmax ) break; bk = false; } if( bk ) break; } }else if( i < m ){ remaining = remaining/2 + (m - i); printf( "\r---------- %6i remaining sequences to the next cycle\n", m-i ); } printf( "---------- new table with %8i representatives\n", word_table.sequences.size() ); if( (last_table.size + word_table.size) > tabsize ) tabsize = last_table.size + word_table.size; last_table.Clear(); last_table.sequences.swap( word_table.sequences ); last_table.indexCounts.swap( word_table.indexCounts ); last_table.size = word_table.size; word_table.size = 0; } printf( "\n%9i finished %9i clusters\n", sequences.size(), rep_seqs.size() ); mem = (mem_need + tabsize*sizeof(IndexCount))/mega; printf( "\nApproximated maximum memory consumption: %zuM\n", mem ); last_table.Clear(); word_table.Clear(); } int SequenceDB::CheckOne( Sequence *seq, WordTable & table, WorkingParam & param, WorkingBuffer & buf, const Options & options ) { int len = seq->size; param.len_upper_bound = upper_bound_length_rep(len, options); if( options.isEST ) return CheckOneEST( seq, table, param, buf, options ); return CheckOneAA( seq, table, param, buf, options ); } int SequenceDB::CheckOneAA( Sequence *seq, WordTable & table, WorkingParam & param, WorkingBuffer & buf, const Options & options ) { NVector & lookCounts = buf.lookCounts; NVector & indexMapping = buf.indexMapping; Vector & word_encodes_no = buf.word_encodes_no; Vector & aap_list = buf.aap_list; Vector & aap_begin = buf.aap_begin; Vector & word_encodes = buf.word_encodes; Vector & taap = buf.taap; double aa1_cutoff = param.aa1_cutoff; double aa2_cutoff = param.aas_cutoff; double aan_cutoff = param.aan_cutoff; char *seqi = seq->data; int j, k, j1, len = seq->size; int flag = 0; int frag_size = options.frag_size; int & aln_cover_flag = param.aln_cover_flag; int & required_aa1 = param.required_aa1; int & required_aa2 = param.required_aas; int & required_aan = param.required_aan; int & min_aln_lenS = param.min_aln_lenS; int & min_aln_lenL = param.min_aln_lenL; int NAA = options.NAA; int S = table.sequences.size(); int len_eff = len; if( S ){ int min = table.sequences[S-1]->size; if( min < len ){ if( len * options.diff_cutoff2 > min ) min = (int)(len * options.diff_cutoff2); if( (len - options.diff_cutoff_aa2) > min ) min = len - options.diff_cutoff_aa2; len_eff = min; } } //liwz 2016 01, seq is too short for the shortest (longer) seq in word_table to satisfy -aL option //longer seqeunce * -aL -band_width if ( S ) { int min = table.sequences[S-1]->size; int min_red = min * options.long_coverage - options.band_width; if (len < min_red) return 0; // return flag=0 } param.ControlShortCoverage( len_eff, options ); param.ComputeRequiredBases( options.NAA, 2, options ); buf.EncodeWords( seq, options.NAA, false ); // if minimal alignment length > len, return // I can not return earlier, because I need to calc the word_encodes etc if (options.min_control>len) return 0; // return flag=0 // lookup_aan int aan_no = len - options.NAA + 1; int M = frag_size ? table.frag_count : S; table.CountWords(aan_no, word_encodes, word_encodes_no, lookCounts, indexMapping, false, required_aan); // contained_in_old_lib() int len_upper_bound = param.len_upper_bound; int len_lower_bound = param.len_lower_bound; int band_left, band_right, best_score, band_width1, best_sum, len2, alnln, len_eff1; int tiden_no, band_center; float tiden_pc, distance=0; int talign_info[5]; int best1, sum; INTs *lookptr; char *seqj; int frg2 = frag_size ? (len - NAA + options.band_width ) / frag_size + 1 + 1 : 0; int lens; int has_aa2 = 0; IndexCount *ic = lookCounts.items; ic = lookCounts.items; for(; ic->count; ic++){ if( ! frag_size ){ indexMapping[ ic->index ] = 0; if ( ic->count < required_aan ) continue; } Sequence *rep = table.sequences[ ic->index ]; len2 = rep->size; if (len2 > len_upper_bound ) continue; if (options.has2D && len2 < len_lower_bound ) continue; if( frag_size ){ uint32_t *ims = & indexMapping[ ic->index ]; int count = ic->count; k = (len2 - NAA) / frag_size + 1; sum = 0; for (j1=0; j1 count) count = sum; } if ( count < required_aan ) continue; } param.ControlLongCoverage( len2, options ); if ( has_aa2 == 0 ) { // calculate AAP array buf.ComputeAAP( seqi, seq->size ); has_aa2 = 1; } seqj = rep->data; //NR_seq[NR90_idx[j]]; band_width1 = (options.band_width < len+len2-2 ) ? options.band_width : len+len2-2; diag_test_aapn(NAA1, seqj, len, len2, buf, best_sum, band_width1, band_left, band_center, band_right, required_aa1); if ( best_sum < required_aa2 ) continue; int rc = FAILED_FUNC; if (options.print || aln_cover_flag) //return overlap region rc = local_band_align(seqi, seqj, len, len2, mat, best_score, tiden_no, alnln, distance, talign_info, band_left, band_center, band_right, buf); else rc = local_band_align(seqi, seqj, len, len2, mat, best_score, tiden_no, alnln, distance, talign_info, band_left, band_center, band_right, buf); if ( rc == FAILED_FUNC ) continue; if ( tiden_no < required_aa1 ) continue; lens = len; if( options.has2D && len > len2 ) lens = len2; len_eff1 = (options.global_identity == 0) ? alnln : (lens - talign_info[4]); tiden_pc = tiden_no / (float) len_eff1; if( options.useDistance ){ if (distance > options.distance_thd ) continue; if (distance >= seq->distance) continue; // existing distance }else{ if (tiden_pc < options.cluster_thd) continue; if (tiden_pc <= seq->identity) continue; // existing iden_no } if (aln_cover_flag) { if ( talign_info[3]-talign_info[2]+1 < min_aln_lenL) continue; if ( talign_info[1]-talign_info[0]+1 < min_aln_lenS) continue; } if( options.has2D ) seq->state |= IS_REDUNDANT ; flag = 1; seq->identity = tiden_pc; seq->cluster_id = rep->cluster_id; seq->distance = distance; seq->coverage[0] = talign_info[0] +1; seq->coverage[1] = talign_info[1] +1; seq->coverage[2] = talign_info[2] +1; seq->coverage[3] = talign_info[3] +1; if (not options.cluster_best) break; update_aax_cutoff(aa1_cutoff, aa2_cutoff, aan_cutoff, options.tolerance, naa_stat_start_percent, naa_stat, NAA, tiden_pc); param.ComputeRequiredBases( options.NAA, 2, options ); } if( frag_size ) ic = lookCounts.items; while( ic->count ){ indexMapping[ ic->index ] = 0; ic += 1; } lookCounts.size = 0; if (flag == 1) { // if similar to old one delete it if (! options.cluster_best) { seq->Clear(); seq->state |= IS_REDUNDANT ; } } return flag; } int SequenceDB::CheckOneEST( Sequence *seq, WordTable & table, WorkingParam & param, WorkingBuffer & buf, const Options & options ) { NVector & lookCounts = buf.lookCounts; NVector & indexMapping = buf.indexMapping; Vector & word_encodes_no = buf.word_encodes_no; Vector & aap_list = buf.aap_list; Vector & aap_begin = buf.aap_begin; Vector & word_encodes = buf.word_encodes; Vector & taap = buf.taap; Vector & aan_list_comp = buf.aan_list_comp; char *seqi_comp = & buf.seqi_comp[0]; int & aln_cover_flag = param.aln_cover_flag; int & required_aa1 = param.required_aa1; int & required_aas = param.required_aas; int & required_aan = param.required_aan; int & min_aln_lenS = param.min_aln_lenS; int & min_aln_lenL = param.min_aln_lenL; char *seqi = seq->data; int j, len = seq->size; int flag = 0; int S = table.sequences.size(); int len_eff = len; if( S ){ int min = table.sequences[S-1]->size; if( min < len ){ if( len * options.diff_cutoff2 > min ) min = (int)(len * options.diff_cutoff2); if( (len - options.diff_cutoff_aa2) > min ) min = len - options.diff_cutoff_aa2; len_eff = min; } } //liwz 2016 01, seq is too short for the shortest (longer) seq in word_table to satisfy -aL option //longer seqeunce * -aL -band_width if ( S ) { int min = table.sequences[S-1]->size; int min_red = min * options.long_coverage - options.band_width; if (len < min_red) return 0; // return flag=0 } param.ControlShortCoverage( len_eff, options ); param.ComputeRequiredBases( options.NAA, 4, options ); int skip = buf.EncodeWords( seq, options.NAA, true ); required_aan -= skip; required_aas -= skip; required_aa1 -= skip; if( required_aan <= 0 ) required_aan = 1; if( required_aas <= 0 ) required_aas = 1; if( required_aa1 <= 0 ) required_aa1 = 1; // if minimal alignment length > len, return // I can not return earlier, because I need to calc the word_encodes etc if (options.min_control>len) return 0; // return flag=0 int aan_no = len - options.NAA + 1; // contained_in_old_lib() int len_upper_bound = param.len_upper_bound; int len_lower_bound = param.len_lower_bound; int band_left, band_right, best_score, band_width1, best_sum, len2, alnln, len_eff1; int tiden_no, band_center; float tiden_pc, distance=0; int talign_info[5]; int j0, comp, lens; char *seqj; for(comp=0; comp<2; comp++){ if( comp ){ for (j0=0; j0count; ic++){ indexMapping[ ic->index ] = 0; if ( ic->count < required_aan ) continue; Sequence *rep = table.sequences[ic->index]; len2 = rep->size; if (len2 > len_upper_bound ) continue; if (options.has2D && len2 < len_lower_bound ) continue; seqj = rep->data; param.ControlLongCoverage( len2, options ); if ( has_aas == 0 ) { // calculate AAP array buf.ComputeAAP2( seqi, seq->size ); has_aas = 1; } band_width1 = (options.band_width < len+len2-2 ) ? options.band_width : len+len2-2; diag_test_aapn_est(NAA1, seqj, len, len2, buf, best_sum, band_width1, band_left, band_center, band_right, required_aa1); if ( best_sum < required_aas ) continue; //if( comp and flag and (not options.cluster_best) and j > rep->cluster_id ) goto Break; int rc = FAILED_FUNC; if (options.print || aln_cover_flag){ //return overlap region rc = local_band_align(seqi, seqj, len, len2, mat, best_score, tiden_no, alnln, distance, talign_info, band_left, band_center, band_right, buf); if( comp ){ talign_info[0] = len - talign_info[0] - 1; talign_info[1] = len - talign_info[1] - 1; } }else{ //printf( "%5i %5i %5i %5i\n", band_width1, band_right-band_left, band_left, band_right ); rc = local_band_align(seqi, seqj, len, len2, mat, best_score, tiden_no, alnln, distance, talign_info, band_left, band_center, band_right, buf); } if ( rc == FAILED_FUNC ) continue; //printf( "%i %i %i\n", best_score, tiden_no, required_aa1 ); if ( tiden_no < required_aa1 ) continue; if ( options.is454 ){ if (talign_info[2] != talign_info[0]) continue; // same start if (talign_info[0] > 1) continue; // one mismatch allowed at beginning if ((len-talign_info[1]) > 2) continue; // one mismatch allowed at end } lens = len; if( options.has2D && len > len2 ) lens = len2; len_eff1 = (options.global_identity == 0) ? alnln : (lens - talign_info[4]); tiden_pc = tiden_no / (float)len_eff1; //printf( "%i %f\n", tiden_no, tiden_pc ); if( options.useDistance ){ if (distance > options.distance_thd ) continue; if (options.cluster_best and distance >= seq->distance) continue; // existing distance }else{ if (tiden_pc < options.cluster_thd) continue; if (options.cluster_best and tiden_pc < seq->identity) continue; // existing iden_no } if (aln_cover_flag) { if ( talign_info[3]-talign_info[2]+1 < min_aln_lenL) continue; if( comp ){ if ( talign_info[0]-talign_info[1]+1 < min_aln_lenS) continue; }else{ if ( talign_info[1]-talign_info[0]+1 < min_aln_lenS) continue; } } if( options.cluster_best and fabs(tiden_pc - seq->identity) < 1E-9 and rep->cluster_id >= seq->cluster_id ) continue; if( (not options.cluster_best) and flag !=0 and rep->cluster_id >= seq->cluster_id ) continue; flag = comp ? -1 : 1; seq->identity = tiden_pc; seq->distance = distance; seq->cluster_id = rep->cluster_id; seq->coverage[0] = talign_info[0] +1; seq->coverage[1] = talign_info[1] +1; seq->coverage[2] = talign_info[2] +1; seq->coverage[3] = talign_info[3] +1; if (not options.cluster_best) break; } while( ic->count ){ indexMapping[ ic->index ] = 0; ic += 1; } lookCounts.size = 0; if (not options.option_r ) break; } if ((flag == 1) || (flag == -1)) { // if similar to old one delete it if (! options.cluster_best) { seq->Clear(); seq->state |= IS_REDUNDANT ; } if( flag == -1 ) seq->state |= IS_MINUS_STRAND; else seq->state &= ~IS_MINUS_STRAND; } return flag; } void SequenceDB::ComputeDistance( const Options & options ) { int i, j, N = sequences.size(); int best_score, best_sum; int band_width1, band_left, band_center, band_right, required_aa1; int tiden_no, alnln; int talign_info[5]; float distance; WorkingBuffer buf( N, max_len, options ); Vector > dists( N, NVector(N) ); Sequence comseq( *sequences[0] ); for(i=0; idata; int len = seq->size; buf.EncodeWords( seq, options.NAA, false ); buf.ComputeAAP2( seqi, seq->size ); dists[i][i] = 0.0; if((i+1)%1000 ==0) printf( "%9i\n", (i+1) ); for(j=0; jdata; int len2 = rep->size; band_width1 = (options.band_width < len+len2-2 ) ? options.band_width : len+len2-2; diag_test_aapn_est(NAA1, seqj, len, len2, buf, best_sum, band_width1, band_left, band_center, band_right, 0); local_band_align(seqi, seqj, len, len2, mat, best_score, tiden_no, alnln, distance, talign_info, band_left, band_center, band_right, buf); dists[seq->index][rep->index] = dists[rep->index][seq->index] = distance; } if (not options.option_r ) break; comseq.index = seq->index; comseq.size = len; for(j=0; jdata[len-i-1]; seqi = comseq.data; buf.EncodeWords( &comseq, options.NAA, false ); buf.ComputeAAP2( seqi, seq->size ); for(j=0; jdata; int len2 = rep->size; band_width1 = (options.band_width < len+len2-2 ) ? options.band_width : len+len2-2; diag_test_aapn_est(NAA1, seqj, len, len2, buf, best_sum, band_width1, band_left, band_center, band_right, 0); local_band_align(seqi, seqj, len, len2, mat, best_score, tiden_no, alnln, distance, talign_info, band_left, band_center, band_right, buf); if( distance < dists[seq->index][rep->index] ) dists[seq->index][rep->index] = dists[rep->index][seq->index] = distance; } } std::string output = options.output + ".dist"; FILE *fout = fopen( output.c_str(), "w+" ); fprintf( fout, "1" ); for(i=1; i 1 ){ DoClustering( options.threads, options ); temp_files.Clear(); return; } if (frag_size){ frag_no = 0; for (i=0; isize - NAA) / frag_size + 1; } if( not options.isEST ) cal_aax_cutoff(aa1_cutoff, aas_cutoff, aan_cutoff, options.cluster_thd, options.tolerance, naa_stat_start_percent, naa_stat, NAA); WorkingParam param( aa1_cutoff, aas_cutoff, aan_cutoff ); WorkingBuffer buffer( frag_no, max_len, options ); WordTable word_table( options.NAA, NAAN ); size_t mem_need = MinimalMemory( frag_no, buffer.total_bytes, 1, options ); size_t mem_limit = MemoryLimit( mem_need, options ); size_t mem, mega = 1000000; int N = sequences.size(); size_t total_letters = total_letter; size_t tabsize = 0; Options opts( options ); opts.ComputeTableLimits( min_len, max_len, len_n50, mem_need ); for(i=0; istate & IS_REDUNDANT) ){ if ( options.store_disk ) seq->SwapIn(); items += (size_t)(seq->size * redundancy); sum += 1; } m ++; } if( m > N ) m = N; printf( "\rcomparing sequences from %9i to %9i\n", i, m ); fflush( stdout ); for(int ks=i; ksstate & IS_REDUNDANT) continue; ClusterOne( seq, ks, word_table, param, buffer, options ); total_letters -= seq->size; if( options.store_disk && (seq->state & IS_REDUNDANT) ) seq->SwapOut(); if( word_table.size >= max_items ) break; int tmax = max_seqs - (frag_size ? seq->size / frag_size + 1 : 0); if( word_table.sequences.size() >= tmax ) break; } // finishing word table from this block m = i; if( word_table.size == 0 ) continue; float p0 = 0; for(int j=m; jN Sequence *seq = sequences[j]; if (seq->state & IS_REDUNDANT) continue; if ( options.store_disk ) seq->SwapIn(); CheckOne( seq, word_table, param, buffer, options ); total_letters -= seq->size; if ( options.store_disk && (seq->state & IS_REDUNDANT) ) seq->SwapOut(); int len_bound = param.len_upper_bound; if( word_table.sequences[ word_table.sequences.size()-1 ]->size > len_bound ){ break; } float p = (100.0*j)/N; if( p > p0+1E-1 ){ // print only if the percentage changed printf( "\r%4.1f%%", p ); fflush( stdout ); p0 = p; } } if( word_table.size > tabsize ) tabsize = word_table.size; //if( i && i < m ) printf( "\r---------- %6i remaining sequences to the next cycle\n", m-i ); word_table.Clear(); } printf( "\n%9i finished %9i clusters\n", sequences.size(), rep_seqs.size() ); mem = (mem_need + tabsize*sizeof(IndexCount))/mega; printf( "\nApproximated maximum memory consumption: %liM\n", mem ); temp_files.Clear(); word_table.Clear(); #if 0 int zeros = 0; for(i=0; i word_encodes( MAX_SEQ ); Vector word_encodes_no( MAX_SEQ ); if( not options.isEST ){ cal_aax_cutoff(aa1_cutoff, aas_cutoff, aan_cutoff, options.cluster_thd, options.tolerance, naa_stat_start_percent, naa_stat, NAA); } int N = other.sequences.size(); int M = sequences.size(); int T = options.threads; valarray counts(T); Vector params(T); Vector buffers(T); WorkingParam & param = params[0]; WorkingBuffer & buffer = buffers[0]; for(i=0; i1 ) omp_set_num_threads(T); size_t mem_need = MinimalMemory( N, buffer.total_bytes, T, options, other.total_letter+other.total_desc ); size_t mem_limit = MemoryLimit( mem_need, options ); Options opts( options ); opts.ComputeTableLimits( min_len, max_len, len_n50, mem_need ); WordTable word_table( options.NAA, NAAN ); size_t max_items = opts.max_entries; size_t max_seqs = opts.max_sequences; for(i=0; istate & IS_REDUNDANT) ){ if ( options.store_disk ) seq->SwapIn(); items += seq->size; sum += 1; } m ++; } if( m > N ) m = N; //printf( "m = %i %i, %i\n", i, m, m-i ); for(int ks=i; kssize; seqi = seq->data; calc_ann_list(len, seqi, NAA, aan_no, word_encodes, word_encodes_no, options.isEST); word_table.AddWordCounts(aan_no, word_encodes, word_encodes_no, ks-i, options.isEST); word_table.sequences.Append( seq ); seq->cluster_id = ks; seq->state |= IS_REP; if ( (ks+1) % 1000 == 0 ) { printf( "." ); fflush( stdout ); if ( (ks+1) % 10000 == 0 ) printf( "%9i finished\n", ks+1 ); } } float p0 = 0; if( T > 1 ){ int JM = M; counts = 0; #pragma omp parallel for schedule( dynamic, 1 ) for(int j=0; jstate & IS_REDUNDANT ) continue; int len = seq->size; char *seqi = seq->data; int len_upper_bound = upper_bound_length_rep(len,options); int len_lower_bound = len - options.diff_cutoff_aa2; int len_tmp = (int) ( ((double)len) * options.diff_cutoff2); if (len_tmp < len_lower_bound) len_lower_bound = len_tmp; int tid = omp_get_thread_num(); params[tid].len_upper_bound = len_upper_bound; params[tid].len_lower_bound = len_lower_bound; if( word_table.sequences[ word_table.sequences.size()-1 ]->size > len_upper_bound ){ JM = 0; continue; } int flag = other.CheckOne( seq, word_table, params[tid], buffers[tid], options ); if ((flag == 1) || (flag == -1)) { // if similar to old one delete it if (! options.cluster_best) { seq->Clear(); seq->state |= IS_REDUNDANT ; counts[tid] ++; } if( flag == -1 ) seq->state |= IS_MINUS_STRAND; // for EST only } float p = (100.0*j)/M; if( p > p0+1E-1 ){ // print only if the percentage changed printf( "\r%4.1f%%", p ); fflush( stdout ); p0 = p; } } for(int j=0; jstate & IS_REDUNDANT ) continue; len = seq->size; seqi = seq->data; len_upper_bound = upper_bound_length_rep(len,options); len_lower_bound = len - options.diff_cutoff_aa2; len_tmp = (int) ( ((double)len) * options.diff_cutoff2); if (len_tmp < len_lower_bound) len_lower_bound = len_tmp; param.len_upper_bound = len_upper_bound; param.len_lower_bound = len_lower_bound; if( word_table.sequences[ word_table.sequences.size()-1 ]->size > len_upper_bound ){ break; } flag = other.CheckOne( seq, word_table, param, buffer, options ); if ((flag == 1) || (flag == -1)) { // if similar to old one delete it if (! options.cluster_best) { seq->Clear(); seq->state |= IS_REDUNDANT ; NR2_red_no ++; } if( flag == -1 ) seq->state |= IS_MINUS_STRAND; // for EST only } float p = (100.0*j)/M; if( p > p0+1E-1 ){ // print only if the percentage changed printf( "\r%4.1f%%", p ); fflush( stdout ); p0 = p; } } } printf( "\r..........%9i compared %9i clusters\n", i, NR2_red_no ); word_table.Clear(); word_table.size = 0; i = m; } if (options.cluster_best) {//delete redundant sequences in options.cluster_best mode for (i=0; i<(int)sequences.size(); i++){ Sequence *seq = sequences[i]; if (seq->identity > 0 ){ seq->state |= IS_REDUNDANT; NR2_red_no ++; } } } for (i=0; i<(int)sequences.size(); i++){ Sequence *seq = sequences[i]; if( seq->identity <0 ) seq->identity *= -1; if( not(seq->state & IS_REDUNDANT) ) rep_seqs.Append( i ); } cout << endl; cout << sequences.size() << " compared\t" << NR2_red_no << " clustered" << endl; temp_files.Clear(); } int calc_ann_list(int len, char *seqi, int NAA, int& aan_no, Vector & aan_list, Vector & aan_list_no, bool est) { int i, j, k, i0, i1, k1; // check_aan_list aan_no = len - NAA + 1; for (j=0; j= 4 ) { // here N is 4 i0 = (j-NAA+1 > 0) ? j-NAA+1 : 0; i1 = j < aan_no ? j : aan_no - 1; for (i=i0; i<=i1; i++) aan_list[i]=-1; } } } std::sort(aan_list.begin(), aan_list.begin() + aan_no); for(j=0; j &Comp_AAN_idx) { int i, j, k, icomp, k1; int c[4] = {3,2,1,0}; unsigned char short_word[32]; //short_word[12] is enough int NAA1 = NAAN_array[1]; int NAAN = NAAN_array[NAA]; for (i=0; i lo0) { mid = a[ ( lo0 + hi0 ) / 2 ]; while( lo <= hi ) { while( ( lo < hi0 ) && ( a[lo] < mid ) ) lo++; while( ( hi > lo0 ) && ( a[hi] > mid ) ) hi--; if( lo <= hi ) { tmp=a[lo]; a[lo]=a[hi]; a[hi]=tmp; tmp=idx[lo]; idx[lo]=idx[hi]; idx[hi]=tmp; lo++; hi--; } } // while if( lo0 < hi ) quick_sort_idx(a, idx, lo0, hi ); if( lo < hi0 ) quick_sort_idx(a, idx, lo, hi0 ); } // if ( hi0 > lo0) return 0; } // quick_sort_idx //decreasing can not use reverse of quick_sort_idx due to tie //quick_sort_idxr calling (a, idx, 0, no-1) //sort a with another array idx //so that idx rearranged int quick_sort_idxr (int *a, int *idx, int lo0, int hi0 ) { int lo = lo0; int hi = hi0; int mid; int tmp; if ( hi0 > lo0) { mid = a[ ( lo0 + hi0 ) / 2 ]; while( lo <= hi ) { while( ( lo < hi0 ) && ( a[lo] > mid ) ) lo++; while( ( hi > lo0 ) && ( a[hi] < mid ) ) hi--; if( lo <= hi ) { tmp=a[lo]; a[lo]=a[hi]; a[hi]=tmp; tmp=idx[lo]; idx[lo]=idx[hi]; idx[hi]=tmp; lo++; hi--; } } // while if( lo0 < hi ) quick_sort_idxr(a, idx, lo0, hi ); if( lo < hi0 ) quick_sort_idxr(a, idx, lo, hi0 ); } // if ( hi0 > lo0) return 0; } // quick_sort_idxr /////////////////////////// END ALL //////////////////////// int naa_stat_start_percent = 40; int naa_stat[5][61][4] = { // cover 0.99 { // N=5 N=4 N=3 N=2 { 0, 0, 0, 7, }, // 40% { 0, 0, 0, 8, }, // 41% { 0, 0, 0, 9, }, // 42% { 0, 0, 0, 9, }, // 43% { 0, 0, 1, 10, }, // 44% { 0, 0, 1, 11, }, // 45% { 0, 0, 1, 12, }, // 46% { 0, 0, 2, 13, }, // 47% { 0, 0, 2, 14, }, // 48% { 0, 0, 4, 16, }, // 49% { 0, 0, 4, 16, }, // 50% { 0, 0, 5, 17, }, // 51% { 0, 0, 5, 18, }, // 52% { 0, 0, 7, 20, }, // 53% { 0, 1, 7, 21, }, // 54% { 0, 1, 7, 21, }, // 55% { 0, 2, 8, 23, }, // 56% { 0, 2, 8, 25, }, // 57% { 0, 2, 10, 25, }, // 58% { 0, 3, 10, 26, }, // 59% { 0, 4, 13, 28, }, // 60% { 0, 5, 13, 30, }, // 61% { 0, 5, 14, 30, }, // 62% { 1, 6, 15, 33, }, // 63% { 2, 7, 17, 34, }, // 64% { 2, 7, 17, 35, }, // 65% { 2, 9, 20, 37, }, // 66% { 4, 10, 20, 37, }, // 67% { 4, 11, 22, 40, }, // 68% { 5, 12, 24, 41, }, // 69% { 5, 12, 25, 42, }, // 70% { 6, 16, 27, 43, }, // 71% { 8, 16, 27, 45, }, // 72% { 9, 17, 29, 47, }, // 73% { 10, 18, 31, 47, }, // 74% { 10, 20, 32, 50, }, // 75% { 12, 20, 32, 51, }, // 76% { 14, 22, 36, 54, }, // 77% { 15, 24, 37, 55, }, // 78% { 17, 26, 41, 58, }, // 79% { 18, 29, 41, 59, }, // 80% { 20, 30, 45, 60, }, // 81% { 24, 35, 48, 62, }, // 82% { 26, 36, 48, 64, }, // 83% { 27, 38, 51, 65, }, // 84% { 31, 43, 54, 68, }, // 85% { 35, 43, 55, 70, }, // 86% { 36, 48, 60, 71, }, // 87% { 36, 50, 61, 73, }, // 88% { 40, 50, 61, 75, }, // 89% { 45, 54, 65, 75, }, // 90% { 52, 60, 70, 79, }, // 91% { 53, 62, 71, 81, }, // 92% { 57, 66, 75, 84, }, // 93% { 57, 66, 76, 85, }, // 94% { 64, 71, 78, 85, }, // 95% { 70, 75, 82, 89, }, // 96% { 77, 81, 86, 92, }, // 97% { 82, 86, 90, 94, }, // 98% { 83, 87, 91, 95, }, // 99% { 91, 93, 95, 97, }, // 100% }, // cover 0.95 { // N=5 N=4 N=3 N=2 { 0, 0, 1, 9, }, // 40% { 0, 0, 2, 10, }, // 41% { 0, 0, 2, 11, }, // 42% { 0, 0, 3, 12, }, // 43% { 0, 0, 3, 12, }, // 44% { 0, 0, 4, 14, }, // 45% { 0, 0, 4, 14, }, // 46% { 0, 1, 5, 16, }, // 47% { 0, 1, 6, 17, }, // 48% { 0, 2, 7, 19, }, // 49% { 0, 2, 8, 19, }, // 50% { 0, 2, 8, 20, }, // 51% { 0, 2, 9, 21, }, // 52% { 0, 4, 10, 23, }, // 53% { 1, 4, 11, 24, }, // 54% { 1, 4, 11, 24, }, // 55% { 1, 5, 13, 26, }, // 56% { 2, 5, 13, 27, }, // 57% { 2, 6, 15, 29, }, // 58% { 2, 7, 15, 30, }, // 59% { 3, 8, 16, 31, }, // 60% { 4, 8, 18, 32, }, // 61% { 4, 9, 18, 33, }, // 62% { 5, 11, 20, 36, }, // 63% { 6, 12, 22, 37, }, // 64% { 6, 12, 22, 38, }, // 65% { 8, 14, 24, 40, }, // 66% { 8, 15, 25, 41, }, // 67% { 10, 16, 27, 42, }, // 68% { 10, 18, 28, 45, }, // 69% { 11, 18, 29, 45, }, // 70% { 14, 21, 31, 47, }, // 71% { 14, 22, 32, 48, }, // 72% { 14, 22, 33, 50, }, // 73% { 17, 24, 36, 52, }, // 74% { 17, 25, 36, 52, }, // 75% { 18, 27, 39, 54, }, // 76% { 20, 29, 41, 56, }, // 77% { 21, 31, 42, 58, }, // 78% { 21, 31, 46, 60, }, // 79% { 27, 35, 46, 60, }, // 80% { 28, 37, 50, 63, }, // 81% { 31, 38, 50, 64, }, // 82% { 34, 43, 53, 66, }, // 83% { 36, 45, 54, 67, }, // 84% { 41, 50, 60, 70, }, // 85% { 43, 51, 60, 71, }, // 86% { 45, 54, 63, 74, }, // 87% { 48, 55, 64, 75, }, // 88% { 54, 60, 68, 78, }, // 89% { 55, 62, 71, 80, }, // 90% { 56, 63, 71, 80, }, // 91% { 64, 70, 76, 84, }, // 92% { 69, 74, 80, 86, }, // 93% { 73, 78, 83, 88, }, // 94% { 74, 78, 84, 89, }, // 95% { 80, 84, 87, 91, }, // 96% { 83, 86, 90, 93, }, // 97% { 86, 89, 92, 95, }, // 98% { 91, 93, 95, 97, }, // 99% { 92, 93, 95, 97, }, // 100% }, // cover 0.9 { // N=5 N=4 N=3 N=2 { 0, 0, 2, 11, }, // 40% { 0, 0, 3, 12, }, // 41% { 0, 0, 3, 12, }, // 42% { 0, 1, 4, 13, }, // 43% { 0, 1, 5, 14, }, // 44% { 0, 1, 5, 15, }, // 45% { 0, 1, 6, 16, }, // 46% { 0, 2, 7, 18, }, // 47% { 0, 2, 7, 18, }, // 48% { 0, 3, 9, 20, }, // 49% { 1, 4, 9, 20, }, // 50% { 1, 4, 10, 21, }, // 51% { 1, 4, 11, 23, }, // 52% { 2, 5, 12, 24, }, // 53% { 2, 5, 12, 25, }, // 54% { 2, 6, 13, 26, }, // 55% { 3, 7, 14, 28, }, // 56% { 3, 7, 15, 28, }, // 57% { 4, 8, 16, 30, }, // 58% { 5, 9, 17, 31, }, // 59% { 5, 10, 18, 32, }, // 60% { 6, 11, 20, 35, }, // 61% { 6, 11, 20, 35, }, // 62% { 7, 13, 22, 38, }, // 63% { 8, 14, 23, 39, }, // 64% { 8, 15, 24, 39, }, // 65% { 10, 16, 26, 42, }, // 66% { 10, 17, 27, 42, }, // 67% { 12, 19, 29, 44, }, // 68% { 13, 20, 30, 46, }, // 69% { 13, 21, 31, 47, }, // 70% { 16, 23, 33, 48, }, // 71% { 18, 25, 34, 50, }, // 72% { 18, 26, 36, 51, }, // 73% { 19, 28, 38, 53, }, // 74% { 20, 29, 38, 53, }, // 75% { 23, 30, 41, 56, }, // 76% { 24, 33, 43, 57, }, // 77% { 26, 34, 45, 59, }, // 78% { 28, 37, 48, 61, }, // 79% { 30, 37, 48, 62, }, // 80% { 33, 42, 52, 64, }, // 81% { 35, 43, 53, 65, }, // 82% { 38, 47, 56, 68, }, // 83% { 40, 47, 56, 68, }, // 84% { 44, 53, 61, 71, }, // 85% { 45, 53, 62, 73, }, // 86% { 50, 58, 66, 75, }, // 87% { 51, 58, 66, 76, }, // 88% { 57, 63, 71, 79, }, // 89% { 60, 66, 72, 81, }, // 90% { 62, 68, 75, 83, }, // 91% { 70, 74, 80, 85, }, // 92% { 74, 78, 82, 88, }, // 93% { 85, 87, 90, 92, }, // 94% { 86, 88, 90, 92, }, // 95% { 87, 89, 91, 93, }, // 96% { 87, 89, 92, 94, }, // 97% { 89, 91, 93, 96, }, // 98% { 93, 94, 96, 97, }, // 99% { 94, 95, 97, 98, }, // 100% }, // cover 0.8 { // N=5 N=4 N=3 N=2 { 0, 1, 4, 13, }, // 40% { 0, 1, 5, 13, }, // 41% { 0, 1, 5, 14, }, // 42% { 0, 2, 6, 15, }, // 43% { 0, 2, 6, 16, }, // 44% { 0, 2, 7, 17, }, // 45% { 1, 3, 8, 18, }, // 46% { 1, 4, 9, 20, }, // 47% { 1, 4, 9, 20, }, // 48% { 2, 5, 11, 22, }, // 49% { 2, 5, 11, 22, }, // 50% { 2, 6, 12, 24, }, // 51% { 3, 6, 13, 25, }, // 52% { 3, 7, 14, 26, }, // 53% { 4, 8, 14, 27, }, // 54% { 4, 8, 15, 28, }, // 55% { 5, 9, 17, 30, }, // 56% { 5, 9, 17, 30, }, // 57% { 6, 11, 19, 32, }, // 58% { 7, 12, 20, 34, }, // 59% { 8, 12, 20, 34, }, // 60% { 9, 14, 22, 37, }, // 61% { 9, 14, 23, 37, }, // 62% { 10, 16, 25, 39, }, // 63% { 11, 17, 26, 41, }, // 64% { 12, 18, 27, 41, }, // 65% { 13, 20, 28, 43, }, // 66% { 14, 21, 30, 45, }, // 67% { 15, 22, 31, 46, }, // 68% { 17, 24, 33, 48, }, // 69% { 17, 24, 34, 48, }, // 70% { 19, 26, 36, 50, }, // 71% { 20, 27, 37, 51, }, // 72% { 21, 29, 39, 53, }, // 73% { 23, 31, 41, 55, }, // 74% { 23, 31, 41, 55, }, // 75% { 26, 34, 44, 58, }, // 76% { 28, 36, 46, 59, }, // 77% { 29, 37, 47, 60, }, // 78% { 34, 41, 50, 62, }, // 79% { 34, 42, 51, 63, }, // 80% { 38, 45, 55, 66, }, // 81% { 39, 46, 55, 67, }, // 82% { 44, 51, 60, 70, }, // 83% { 44, 51, 60, 70, }, // 84% { 49, 56, 64, 73, }, // 85% { 50, 57, 64, 74, }, // 86% { 57, 63, 69, 77, }, // 87% { 58, 64, 70, 78, }, // 88% { 68, 71, 76, 82, }, // 89% { 68, 72, 77, 83, }, // 90% { 75, 79, 81, 85, }, // 91% { 86, 87, 89, 90, }, // 92% { 88, 89, 90, 92, }, // 93% { 90, 91, 92, 93, }, // 94% { 91, 92, 93, 94, }, // 95% { 92, 94, 94, 95, }, // 96% { 93, 94, 95, 96, }, // 97% { 94, 95, 95, 96, }, // 98% { 94, 95, 96, 98, }, // 99% { 95, 96, 97, 98, }, // 100% }, // cover 0.6 { // N=5 N=4 N=3 N=2 { 1, 2, 6, 15, }, // 40% { 1, 3, 7, 16, }, // 41% { 1, 3, 8, 17, }, // 42% { 2, 4, 9, 18, }, // 43% { 2, 4, 9, 19, }, // 44% { 2, 5, 10, 20, }, // 45% { 3, 5, 10, 21, }, // 46% { 3, 6, 12, 22, }, // 47% { 3, 6, 12, 23, }, // 48% { 4, 8, 14, 25, }, // 49% { 4, 8, 14, 25, }, // 50% { 5, 8, 15, 26, }, // 51% { 5, 9, 16, 27, }, // 52% { 6, 10, 17, 29, }, // 53% { 6, 11, 18, 30, }, // 54% { 7, 11, 18, 31, }, // 55% { 8, 12, 20, 32, }, // 56% { 8, 13, 20, 33, }, // 57% { 10, 14, 22, 35, }, // 58% { 10, 15, 23, 37, }, // 59% { 11, 16, 24, 37, }, // 60% { 12, 18, 26, 39, }, // 61% { 13, 18, 26, 40, }, // 62% { 14, 20, 28, 42, }, // 63% { 16, 22, 30, 43, }, // 64% { 16, 22, 31, 44, }, // 65% { 17, 23, 32, 45, }, // 66% { 18, 25, 33, 47, }, // 67% { 19, 26, 35, 48, }, // 68% { 21, 27, 36, 50, }, // 69% { 22, 29, 37, 51, }, // 70% { 24, 30, 39, 52, }, // 71% { 25, 32, 41, 53, }, // 72% { 26, 33, 42, 55, }, // 73% { 29, 35, 44, 57, }, // 74% { 29, 36, 45, 57, }, // 75% { 32, 39, 48, 60, }, // 76% { 34, 41, 50, 61, }, // 77% { 36, 43, 51, 62, }, // 78% { 40, 46, 54, 65, }, // 79% { 40, 46, 54, 65, }, // 80% { 46, 52, 59, 68, }, // 81% { 46, 52, 60, 69, }, // 82% { 53, 59, 65, 73, }, // 83% { 54, 60, 66, 73, }, // 84% { 63, 67, 73, 78, }, // 85% { 68, 71, 75, 79, }, // 86% { 78, 80, 82, 85, }, // 87% { 79, 81, 83, 85, }, // 88% { 83, 85, 86, 87, }, // 89% { 85, 86, 87, 89, }, // 90% { 86, 88, 89, 90, }, // 91% { 88, 89, 90, 91, }, // 92% { 90, 90, 91, 92, }, // 93% { 91, 92, 92, 93, }, // 94% { 92, 93, 94, 94, }, // 95% { 94, 94, 95, 95, }, // 96% { 95, 95, 96, 96, }, // 97% { 95, 96, 97, 97, }, // 98% { 96, 96, 97, 98, }, // 99% { 97, 98, 98, 99, }, // 100% }, }; cdhit-4.8.1/cdhit-common.h000066400000000000000000000432511343604040700153570ustar00rootroot00000000000000// ============================================================================= // CD-HI/CD-HIT // // Cluster Database at High Identity Threshold // // CD-HIT clusters protein sequence database at high sequence identity threshold. // This program can remove the high sequence redundance efficiently. // // program written by // Weizhong Li // UCSD, San Diego Supercomputer Center // La Jolla, CA, 92093 // Email liwz@sdsc.edu // // at // Adam Godzik's lab // The Burnham Institute // La Jolla, CA, 92037 // Email adam@burnham-inst.org // // modified by: // Limin Fu // Center for Research in Biological Systems (CRBS), UCSD // La Jolla, CA, 92093 // Email: l2fu@ucsd.edu, fu@daovm.net // ============================================================================= #include #include #include #include #include #include #include #include #include #ifdef WITH_ZLIB #include #endif #include #include #include #define CDHIT_VERSION "4.8.1" #ifndef MAX_SEQ #define MAX_SEQ 655360 #endif #define MAX_AA 23 #define MAX_NA 6 #define MAX_UAA 21 #define MAX_DIAG (MAX_SEQ<<1) // MAX_DIAG be twice of MAX_SEQ #define MAX_GAP MAX_SEQ // MAX_GAP <= MAX_SEQ #define MAX_DES 300000 #define MAX_LINE_SIZE 300000 #define MAX_FILE_NAME 1280 #define MAX_SEG 50 #define MAX_BIN_SWAP 2E9 #define MAX_TABLE_SIZE 50000000 #define CLOCK_TICKS 100 #define FAILED_FUNC 1 #define OK_FUNC 0 #define IS_REP 1 #define IS_REDUNDANT 2 #define IS_PROCESSED 16 #define IS_MINUS_STRAND 32 #define max(a,b) (((a)>(b))?(a):(b)) #define min(a,b) (((a)<(b))?(a):(b)) typedef unsigned int UINT4; typedef unsigned short UINT2; #define LONG_SEQ //if the longset sequence is longer than 65535, I use INT4 #ifdef LONG_SEQ #define INTs UINT4 #else #define INTs UINT2 #endif using namespace std; // the parent containter must guarantee continuous memory allocation. // std::valarray could be used instead of std::vector. template class Vector : public vector { public: Vector() : vector(){} Vector( size_t size ) : vector( size ){} Vector( size_t size, const TYPE & deft ) : vector( size, deft ){} void Append( const TYPE & item ){ size_t n = this->size(); if( n + 1 >= this->capacity() ) this->reserve( n + n/5 + 1 ); this->push_back( item ); } int size()const{ return (int)vector::size(); } }; // for primitive types only template class NVector { public: TYPE *items; int size; int capacity; NVector(){ size = capacity = 0; items = NULL; } NVector( int n, const TYPE & v=TYPE() ){ size = capacity = 0; items = NULL; Resize( n, v ); } NVector( const NVector & other ){ size = capacity = 0; items = NULL; if( other.items ){ Resize( other.size ); memcpy( items, other.items, other.size * sizeof(TYPE) ); } } ~NVector(){ if( items ) free( items ); } int Size()const{ return size; } void Clear(){ if( items ) free( items ); size = capacity = 0; items = NULL; } void Resize( int n, const TYPE & value=TYPE() ){ if( n == size && capacity > 0 ) return; int i; // When resize() is called, probably this is the intended size, // and will not be changed frequently. if( n != capacity ){ capacity = n; items = (TYPE*)realloc( items, capacity*sizeof(TYPE) ); } for(i=size; i= capacity ){ capacity = size + size/5 + 1; items = (TYPE*)realloc( items, capacity*sizeof(TYPE) ); } items[size] = item; size ++; } TYPE& operator[]( const int i ){ //if( i <0 or i >= size ) printf( "out of range\n" ); return items[i]; } TYPE& operator[]( const int i )const{ //if( i <0 or i >= size ) printf( "out of range\n" ); return items[i]; } }; typedef NVector VectorInt; typedef Vector MatrixInt; typedef NVector VectorInt64; typedef Vector MatrixInt64; ////////// Class definition ////////// class ScoreMatrix { //Matrix private: public: int matrix[MAX_AA][MAX_AA]; int gap, ext_gap; ScoreMatrix(); void init(); void set_gap(int gap1, int ext_gap1); void set_matrix(int *mat1); void set_to_na(); void set_match( int score ); void set_mismatch( int score ); }; // END class ScoreMatrix typedef NVector VectorIntX; typedef Vector MatrixIntX; extern int NAA1 ; extern int NAA2 ; extern int NAA3 ; extern int NAA4 ; extern int NAA5 ; extern int NAA6 ; extern int NAA7 ; extern int NAA8 ; extern int NAA9 ; extern int NAA10; extern int NAA11; extern int NAA12; extern int NAAN_array[13]; void InitNAA( int max ); extern int naa_stat_start_percent; extern int naa_stat[5][61][4]; struct IndexCount { int index; int count; IndexCount( int i=0, int c=0 ){ index = i, count = c; } }; struct Sequence; class WordTable { private: public: Vector > indexCounts; // hold index and word counts of seqs Vector sequences; int NAA; // length of word int NAAN; // rows of table char is_aa; // aa is for prot size_t size; int frag_count; public: WordTable( int naa=0, int naan=0 ); void Init(int, int); void Clear(); void SetDNA(); int AddWordCounts( NVector & counts, Sequence *seq, bool skipN=false); int AddWordCountsFrag( NVector & counts, int frag, int frag_size, int repfrag ); int AddWordCounts(int aan_no, Vector & word_encodes, Vector & word_encodes_no, int idx, bool skipN=false); int AddWordCountsFrag( int aan_no, Vector & word_encodes, Vector & word_encodes_no, int frag, int frag_size ); int CountWords(int aan_no, Vector & aan_list, Vector & aan_list_no, NVector & lookCounts, NVector & indexMapping, bool est=false, int min=0); void PrintAll(); }; // END class INDEX_TBL struct Options { int NAA; int NAAN; int NAA_top_limit; size_t max_memory; // -M: 400,000,000 in bytes int min_length; // -l: 10 bases bool cluster_best; // -g: 0, the first; 1, the best bool global_identity; // -G: bool store_disk; // -B: int band_width; // -b: 20 double cluster_thd; // -c double distance_thd; // -D double diff_cutoff; // -s: 0.0 double diff_cutoff2; // -s2: 1.0 int diff_cutoff_aa; // -S: 999999 int diff_cutoff_aa2; // -S2: 0 int tolerance; // -t: 2 double long_coverage; // -aL: int long_control; // -AL: double short_coverage; // -aS: int short_control; // -AS: int min_control; // -A: double long_unmatch_per; // -uL double short_unmatch_per; // -uS int unmatch_len; // -U int max_indel; // -D int print; int des_len; int frag_size; int option_r; int threads; int PE_mode; // -P int trim_len; // -cx int trim_len_R2; // -cy int align_pos; // -ap for alignment position size_t max_entries; size_t max_sequences; size_t mem_limit; bool has2D; bool isEST; bool is454; bool useIdentity; bool useDistance; bool backupFile; string input; string input_pe; string input2; string input2_pe; string output; string output_pe; int sort_output; // -sc int sort_outputf; // -sf Options(){ backupFile = false; useIdentity = false; useDistance = false; has2D = false; isEST = false; is454 = false; NAA = 5; NAA_top_limit = 5; cluster_thd = 0.9; distance_thd = 0.0; max_memory = 800000000; min_length = 10; cluster_best = false; global_identity = true; store_disk = false; band_width = 20; diff_cutoff = 0.0; diff_cutoff2 = 1.0; diff_cutoff_aa = 99999999; diff_cutoff_aa2 = 0; tolerance = 2; long_coverage = 0.0; long_control = 99999999; short_coverage = 0.0; short_control = 99999999; long_unmatch_per = 1.0; short_unmatch_per = 1.0; unmatch_len = 99999999; min_control = 0; max_indel = 1; print = 0; option_r = 1; frag_size = 0; des_len = 20; threads = 1; PE_mode = 0; trim_len = 0; trim_len_R2 = 0; align_pos = 0; sort_output = 0; sort_outputf = 0; max_entries = 0; max_sequences = 1<<20; mem_limit = 100000000; }; bool SetOptionCommon( const char *flag, const char *value ); bool SetOption( const char *flag, const char *value ); bool SetOption2D( const char *flag, const char *value ); bool SetOptionEST( const char *flag, const char *value ); bool SetOptions( int argc, char *argv[], bool twodata=false, bool est=false ); void Validate(); void ComputeTableLimits( int min_len, int max_len, int typical_len, size_t mem_need ); void Print(); }; void bomb_error(const char *message); struct Sequence { // real sequence, if it is not stored swap file: char *data; // length of the sequence: int size; int bufsize; int size_R2; // size = size.R1 + size.R2 for back-to-back merged seq //uint32_t stats; // if swap != NULL, the sequence is stored in file. // swap is opened as temporary file, which will be deleted automatically // after the program is finished: FILE *swap; // stream offset of the sequence: int offset; // stream offset of the description string in the database: size_t des_begin, des_begin2; // total record length int tot_length, tot_length2; char *identifier; // index of the sequence in the original database: int index; short state; int cluster_id; float identity; float distance; int coverage[4]; Sequence(); Sequence( const Sequence & other ); Sequence( const Sequence & other, const Sequence & other2, int mode ); ~Sequence(); void Clear(); void operator=( const char *s ); void operator+=( const char *s ); void Resize( int n ); void Reserve( int n ); void Swap( Sequence & other ); int Format(); void ConvertBases(); void trim(int trim_len); void SwapIn(); void SwapOut(); void PrintInfo( int id, FILE *fout, const Options & options, char *buf ); }; struct WorkingParam { double aa1_cutoff; double aas_cutoff; /* or aa2 */ double aan_cutoff; int len_upper_bound; int len_lower_bound; WorkingParam( double a1=0, double a2=0, double an=0 ){ Set( a1, a2, an ); } void Set( double a1=0, double a2=0, double an=0 ){ aa1_cutoff = a1; aas_cutoff = a2; aan_cutoff = an; len_upper_bound = 0; len_lower_bound = 0; } int len_eff; int aln_cover_flag; int min_aln_lenS; int min_aln_lenL; int required_aa1; int required_aas; /* or aa2 */ int required_aan; void ControlShortCoverage( int len, const Options & option ); void ControlLongCoverage( int len, const Options & option ); void ComputeRequiredBases( int NAA, int ss, const Options & option ); }; //#define MAX_TABLE_SEQ (1<<22) #define MAX_TABLE_SEQ 4000000 enum { DP_BACK_NONE=0, DP_BACK_LEFT_TOP=1, DP_BACK_LEFT=2, DP_BACK_TOP=3 }; struct WorkingBuffer { Vector taap; Vector word_encodes; Vector word_encodes_backup; Vector word_encodes_no; Vector aap_list; Vector aap_begin; //Vector indexCounts; NVector lookCounts; NVector indexMapping; MatrixInt64 score_mat; MatrixInt back_mat; Vector diag_score; Vector diag_score2; Vector aan_list_comp; Vector seqi_comp; int total_bytes; WorkingBuffer( size_t frag=0, size_t maxlen=0, const Options & options=Options() ){ Set( frag, maxlen, options ); seqi_comp.resize( MAX_SEQ ); } void Set( size_t frag, size_t maxlen, const Options & options ){ bool est = options.isEST; size_t m = MAX_UAA*MAX_UAA; size_t max_len = maxlen; size_t band = max_len*max_len; if( est ) m = m * m; if( band > options.band_width ) band = options.band_width; taap.resize( m ); aap_list.resize( max_len ); aap_begin.resize( m ); //indexCounts.resize( max_len ); word_encodes.resize( max_len ); word_encodes_no.resize( max_len ); word_encodes_backup.resize( max_len ); /* each table can not contain more than MAX_TABLE_SEQ representatives or fragments! */ if( frag > MAX_TABLE_SEQ ) frag = MAX_TABLE_SEQ; lookCounts.Resize( frag + 2 ); indexMapping.Resize( frag + 2 ); diag_score.resize( MAX_DIAG ); diag_score2.resize( MAX_DIAG ); aan_list_comp.resize( max_len ); total_bytes = max_len; total_bytes += taap.size()*sizeof(int); total_bytes += word_encodes.size()*sizeof(int); total_bytes += word_encodes_backup.size()*sizeof(int); total_bytes += diag_score.size()*sizeof(int); total_bytes += diag_score2.size()*sizeof(int); total_bytes += aan_list_comp.size()*sizeof(int); total_bytes += word_encodes_no.size()*sizeof(INTs); total_bytes += aap_list.size()*sizeof(INTs); total_bytes += aap_begin.size()*sizeof(INTs); total_bytes += indexMapping.Size()*sizeof(uint32_t); //total_bytes += indexCounts.size()*sizeof(IndexCount); total_bytes += lookCounts.Size()*sizeof(IndexCount); total_bytes += max_len*(band*sizeof(int)+sizeof(VectorInt)); total_bytes += max_len*(band*sizeof(int)+sizeof(VectorInt64)); } int EncodeWords( Sequence *seq, int NA, bool est = false ); void ComputeAAP( const char *seqi, int size ); void ComputeAAP2( const char *seqi, int size ); }; extern Vector Comp_AAN_idx; extern ScoreMatrix mat; class SequenceDB { public: int NAAN; Vector sequences; Vector rep_seqs; long long total_letter; long long total_desc; size_t max_len; size_t min_len; size_t len_n50; void Clear(){ for(int i=0; i & aan_list, Vector & aan_list_no, bool est=false); float current_time(); //some functions from very old cd-hit int quick_sort_idx(int *a, int *idx, int lo0, int hi0 ); int quick_sort_idxr(int *a, int *idx, int lo0, int hi0 ); cdhit-4.8.1/cdhit-div.c++000066400000000000000000000046221343604040700147710ustar00rootroot00000000000000// ============================================================================= // CD-HIT // http://cd-hit.org/ // http://bioinformatics.burnham-inst.org/cd-hi // // program written by // Weizhong Li // UCSD, San Diego Supercomputer Center // La Jolla, CA, 92093 // Email liwz@sdsc.edu // at // Adam Godzik's lab // The Burnham Institute // La Jolla, CA, 92037 // Email adam@burnham-inst.org // // Modified by: // Limin Fu // Center for Research in Biological Systems (CRBS), UCSD // La Jolla, CA, 92093 // Email: l2fu@ucsd.edu, fu@daovm.net // ============================================================================= #include "cdhit-common.h" Options options; SequenceDB seq_db; //////////////////////////////////// MAIN ///////////////////////////////////// int main(int argc, char *argv[]) { string db_in; string db_out; int i, div = 1; float begin_time = current_time(); float end_time; // *********************************** parse command line and open file if (argc < 5) print_usage_div(argv[0]); for (i=1; i), seq_db.NAAN, sizeof(NVector) * seq_db.NAAN ); seq_db.Read( db_in.c_str(), options ); cout << "total seq: " << seq_db.sequences.size() << endl; seq_db.SortDivide( options ); printf( "writing new databases\n" ); seq_db.DivideSave( db_in.c_str(), db_out.c_str(), div, options ); end_time = current_time(); printf( "Total CPU time %.2f\n", end_time - begin_time ); cout << "program completed !" << endl << endl; return 0; } // END int main cdhit-4.8.1/cdhit-est-2d.c++000066400000000000000000000074561343604040700153150ustar00rootroot00000000000000// ============================================================================= // CD-HI-EST // http://cd-hit.org/ // Cluster Database at High Identity (EST version) // modified from CD-HI // // program written by // Weizhong Li // UCSD, San Diego Supercomputer Center // La Jolla, CA, 92093 // Email liwz@sdsc.edu // at // Adam Godzik's lab // The Burnham Institute // La Jolla, CA, 92037 // Email adam@burnham-inst.org // // Modified by: // Limin Fu // Center for Research in Biological Systems (CRBS), UCSD // La Jolla, CA, 92093 // Email: l2fu@ucsd.edu, fu@daovm.net // ============================================================================= #include "cdhit-common.h" #include "cdhit-utility.h" //over-write some defs in cd-hi.h for est version #undef MAX_UAA #define MAX_UAA 4 //over-write some defs in cd-hi-init.h for est version void setaa_to_na(); void make_comp_iseq(int len, char *iseq_comp, char *iseq); void make_comp_short_word_index(int NAA, int *NAAN_array, Vector & Comp_AAN_idx); Options options; SequenceDB seq_db; SequenceDB seq_db2; // next two control how if seqs in db2 is longer than reps in db1 // by deault, only seqs in db2 that are shorter than rep in db1 // are clustered to the rep in db1 //////////////////////////////////// MAIN ///////////////////////////////////// int main(int argc, char **argv) { string db_in; string db_in2; string db_out; string db_in_pe; string db_in2_pe; string db_out_pe; options.cluster_thd = 0.95; options.NAA = 10; options.NAAN = NAA8; seq_db.NAAN = NAA8; options.NAA_top_limit = 12; setaa_to_na(); mat.set_to_na(); //mat.set_gap(-6,-1); float begin_time = current_time(); float end_time; // *********************************** parse command line and open file if (argc < 7) print_usage_est_2d(argv[0]); if (options.SetOptions( argc, argv, true, true ) == 0) print_usage_est_2d(argv[0]); options.Validate(); db_in = options.input; db_in_pe = options.input_pe; db_in2 = options.input2; db_in2_pe = options.input2_pe; db_out = options.output; db_out_pe = options.output_pe; InitNAA( MAX_UAA ); options.NAAN = NAAN_array[options.NAA]; seq_db.NAAN = NAAN_array[options.NAA]; seq_db2.NAAN = NAAN_array[options.NAA]; if ( options.option_r ) { Comp_AAN_idx.resize( seq_db.NAAN ); make_comp_short_word_index(options.NAA, NAAN_array, Comp_AAN_idx); } if ( options.PE_mode ) {seq_db.Read( db_in.c_str(), db_in_pe.c_str(), options );} else {seq_db.Read( db_in.c_str(), options );} cout << "total seq in db1: " << seq_db.sequences.size() << endl; if ( options.PE_mode ) { seq_db2.Read( db_in2.c_str(), db_in2_pe.c_str(), options );} else { seq_db2.Read( db_in2.c_str(), options );} cout << "total seq in db2: " << seq_db2.sequences.size() << endl; seq_db.SortDivide( options ); seq_db2.SortDivide( options, false ); seq_db2.ClusterTo( seq_db, options ); cout << "writing non-redundant sequences from db2" << endl; seq_db2.WriteClusters( db_in2.c_str(), db_out.c_str(), options ); if ( options.PE_mode ) { seq_db2.WriteClusters( db_in2.c_str(), db_in2_pe.c_str(), db_out.c_str(), db_out_pe.c_str(), options ); } else { seq_db2.WriteClusters( db_in2.c_str(), db_out.c_str(), options ); } seq_db2.WriteExtra2D( seq_db, options ); cout << "program completed !" << endl << endl; end_time = current_time(); printf( "Total CPU time %.2f\n", end_time - begin_time ); return 0; } // END int main cdhit-4.8.1/cdhit-est.c++000066400000000000000000000060451343604040700150030ustar00rootroot00000000000000// ============================================================================= // CD-HI-EST // http://cd-hit.org/ // Cluster Database at High Identity (EST version) // modified from CD-HI // // program written by // Weizhong Li // UCSD, San Diego Supercomputer Center // La Jolla, CA, 92093 // Email liwz@sdsc.edu // at // Adam Godzik's lab // The Burnham Institute // La Jolla, CA, 92037 // Email adam@burnham-inst.org // // Modified by: // Limin Fu // Center for Research in Biological Systems (CRBS), UCSD // La Jolla, CA, 92093 // Email: l2fu@ucsd.edu, fu@daovm.net // ============================================================================= #include "cdhit-common.h" #include "cdhit-utility.h" //over-write some defs in cd-hi.h for est version #undef MAX_UAA #define MAX_UAA 4 //over-write some defs in cd-hi-init.h for est version void setaa_to_na(); void make_comp_short_word_index(int NAA, int *NAAN_array, Vector & Comp_AAN_idx); void make_comp_iseq(int len, char *iseq_comp, char *iseq); Options options; SequenceDB seq_db; //////////////////////////////////// MAIN ///////////////////////////////////// int main(int argc, char **argv) { string db_in; string db_out; string db_in_pe; string db_out_pe; options.cluster_thd = 0.95; options.NAA = 10; options.NAAN = NAA8; seq_db.NAAN = NAA8; options.NAA_top_limit = 12; setaa_to_na(); mat.set_to_na(); //mat.set_gap(-6,-1); float begin_time = current_time(); float end_time; // *********************************** parse command line and open file if (argc < 5) print_usage_est(argv[0]); if (options.SetOptions( argc, argv, false, true ) == 0) print_usage_est(argv[0]); options.Validate(); db_in = options.input; db_in_pe = options.input_pe; db_out = options.output; db_out_pe = options.output_pe; InitNAA( MAX_UAA ); seq_db.NAAN = NAAN_array[options.NAA]; if ( options.option_r ) { Comp_AAN_idx.resize( seq_db.NAAN ); make_comp_short_word_index(options.NAA, NAAN_array, Comp_AAN_idx); } if ( options.PE_mode ) {seq_db.Read( db_in.c_str(), db_in_pe.c_str(), options );} else {seq_db.Read( db_in.c_str(), options );} cout << "total seq: " << seq_db.sequences.size() << endl; seq_db.SortDivide( options ); seq_db.DoClustering( options ); printf( "writing new database\n" ); if ( options.PE_mode ) { seq_db.WriteClusters( db_in.c_str(), db_in_pe.c_str(), db_out.c_str(), db_out_pe.c_str(), options ); } else { seq_db.WriteClusters( db_in.c_str(), db_out.c_str(), options ); } // write a backup clstr file in case next step crashes seq_db.WriteExtra1D( options ); cout << "program completed !" << endl << endl; end_time = current_time(); printf( "Total CPU time %.2f\n", end_time - begin_time ); return 0; } cdhit-4.8.1/cdhit-utility.c++000066400000000000000000000404641343604040700157160ustar00rootroot00000000000000 #include #include #include"cdhit-common.h" using namespace std; // information char cd_hit_ver[] = "\t\t====== CD-HIT version " CDHIT_VERSION " (built on " __DATE__ ") ======"; char cd_hit_ref1[] = "\"CD-HIT: a fast program for clustering and comparing large sets of protein or nucleotide sequences\", Weizhong Li & Adam Godzik. Bioinformatics, (2006) 22:1658-1659"; char cd_hit_ref2[] = "\"CD-HIT: accelerated for clustering the next generation sequencing data\", Limin Fu, Beifang Niu, Zhengwei Zhu, Sitao Wu & Weizhong Li. Bioinformatics, (2012) 28:3150-3152"; char cd_hit_ref3[] = "\"Beifang Niu, Limin Fu, Shulei Sun and Weizhong Li. Artificial and natural duplicates in pyrosequencing reads of metagenomic data. BMC Bioinformatics (2010) 11:187"; // char contacts[] = " Questions, bugs, contact Weizhong Li at liwz@sdsc.edu\n" " For updated versions and information, please visit: http://cd-hit.org\n" " or https://github.com/weizhongli/cdhit\n\n" " cd-hit web server is also available from http://cd-hit.org\n\n" " If you find cd-hit useful, please kindly cite:\n\n"; char txt_option_i[] = "\tinput filename in fasta format, required, can be in .gz format\n"; char txt_option_j[] = "\tinput filename in fasta/fastq format for R2 reads if input are paired end (PE) files\n \ \t -i R1.fq -j R2.fq -o output_R1 -op output_R2 or\n \ \t -i R1.fa -j R2.fa -o output_R1 -op output_R2 \n"; char txt_option_i_2d[] = "\tinput filename for db1 in fasta format, required, can be in .gz format\n"; char txt_option_i2[] = "\tinput filename for db2 in fasta format, required, can be in .gz format\n"; char txt_option_j2[] = "\tinput filename in fasta/fastq format for R2 reads if input are paired end (PE) files\n \ \t -i db1-R1.fq -j db1-R2.fq -i2 db2-R1.fq -j2 db2-R2.fq -o output_R1 -op output_R2 or\n \ \t -i db1-R1.fa -j db1-R2.fa -i2 db2-R1.fq -j2 db2-R2.fq -o output_R1 -op output_R2 \n"; char txt_option_o[] = "\toutput filename, required\n"; char txt_option_op[] = "\toutput filename for R2 reads if input are paired end (PE) files\n"; char txt_option_c[] = "\tsequence identity threshold, default 0.9\n \ \tthis is the default cd-hit's \"global sequence identity\" calculated as:\n \ \tnumber of identical amino acids or bases in alignment\n \ \tdivided by the full length of the shorter sequence\n"; char txt_option_G[] = "\tuse global sequence identity, default 1\n \ \tif set to 0, then use local sequence identity, calculated as :\n \ \tnumber of identical amino acids or bases in alignment\n \ \tdivided by the length of the alignment\n \ \tNOTE!!! don't use -G 0 unless you use alignment coverage controls\n \ \tsee options -aL, -AL, -aS, -AS\n"; char txt_option_g[] = "\t1 or 0, default 0\n \ \tby cd-hit's default algorithm, a sequence is clustered to the first \n \ \tcluster that meet the threshold (fast cluster). If set to 1, the program\n \ \twill cluster it into the most similar cluster that meet the threshold\n \ \t(accurate but slow mode)\n \ \tbut either 1 or 0 won't change the representatives of final clusters\n"; char txt_option_b[] = "\tband_width of alignment, default 20\n"; char txt_option_M[] = "\tmemory limit (in MB) for the program, default 800; 0 for unlimitted;\n"; char txt_option_n[] = "\tword_length, default 5, see user's guide for choosing it\n"; char txt_option_n_est[] = "\tword_length, default 10, see user's guide for choosing it\n"; char txt_option_l[] = "\tlength of throw_away_sequences, default 10\n"; char txt_option_t[] = "\ttolerance for redundance, default 2\n"; char txt_option_T[] = "\tnumber of threads, default 1; with 0, all CPUs will be used\n"; char txt_option_d[] = "\tlength of description in .clstr file, default 20\n \ \tif set to 0, it takes the fasta defline and stops at first space\n"; char txt_option_s[] = "\tlength difference cutoff, default 0.0\n \ \tif set to 0.9, the shorter sequences need to be\n \ \tat least 90% length of the representative of the cluster\n"; char txt_option_S[] = "\tlength difference cutoff in amino acid, default 999999\n \ \tif set to 60, the length difference between the shorter sequences\n \ \tand the representative of the cluster can not be bigger than 60\n"; char txt_option_s2[] = "\tlength difference cutoff for db1, default 1.0\n \ \tby default, seqs in db1 >= seqs in db2 in a same cluster\n \ \tif set to 0.9, seqs in db1 may just >= 90% seqs in db2\n"; char txt_option_S2[] = "\tlength difference cutoff, default 0\n \ \tby default, seqs in db1 >= seqs in db2 in a same cluster\n \ \tif set to 60, seqs in db2 may 60aa longer than seqs in db1\n"; char txt_option_aL[] = "\talignment coverage for the longer sequence, default 0.0\n \ \tif set to 0.9, the alignment must covers 90% of the sequence\n"; char txt_option_AL[] = "\talignment coverage control for the longer sequence, default 99999999\n \ \tif set to 60, and the length of the sequence is 400,\n \ \tthen the alignment must be >= 340 (400-60) residues\n"; char txt_option_aS[] = "\talignment coverage for the shorter sequence, default 0.0\n \ \tif set to 0.9, the alignment must covers 90% of the sequence\n"; char txt_option_AS[] = "\talignment coverage control for the shorter sequence, default 99999999\n \ \tif set to 60, and the length of the sequence is 400,\n \ \tthen the alignment must be >= 340 (400-60) residues\n"; char txt_option_A[] = "\tminimal alignment coverage control for the both sequences, default 0\n \ \talignment must cover >= this value for both sequences \n"; char txt_option_B[] = "\t1 or 0, default 0, by default, sequences are stored in RAM\n \ \tif set to 1, sequence are stored on hard drive\n \ \t!! No longer supported !!\n"; char txt_option_P[] = "\tinput paired end (PE) reads, default 0, single file\n \ \tif set to 1, please use -i R1 -j R2 to input both PE files\n"; char txt_option_cx[] = "\tlength to keep after trimming the tail of sequence, default 0, not trimming\n \ \tif set to 50, the program only uses the first 50 letters of input sequence\n"; char txt_option_cy[] = "\tlength to keep after trimming the tail of R2 sequence, default 0, not trimming\n \ \tif set to 50, the program only uses the first 50 letters of input R2 sequence\n \ \te.g. -cx 100 -cy 80 for paired end reads\n"; char txt_option_ap[] = "\talignment position constrains, default 0, no constrain\n \ \tif set to 1, the program will force sequences to align at beginings\n \ \twhen set to 1, the program only does +/+ alignment\n"; char txt_option_uL[] = "\tmaximum unmatched percentage for the longer sequence, default 1.0\n \ \tif set to 0.1, the unmatched region (excluding leading and tailing gaps)\n \ \tmust not be more than 10% of the sequence\n"; char txt_option_uS[] = "\tmaximum unmatched percentage for the shorter sequence, default 1.0\n \ \tif set to 0.1, the unmatched region (excluding leading and tailing gaps)\n \ \tmust not be more than 10% of the sequence\n"; char txt_option_U[] = "\tmaximum unmatched length, default 99999999\n \ \tif set to 10, the unmatched region (excluding leading and tailing gaps)\n \ \tmust not be more than 10 bases\n"; char txt_option_p[] = "\t1 or 0, default 0\n \tif set to 1, print alignment overlap in .clstr file\n"; char txt_option_r[] = "\t1 or 0, default 1, by default do both +/+ & +/- alignments\n \ \tif set to 0, only +/+ strand alignment\n"; char txt_option_bak[] = "\twrite backup cluster file (1 or 0, default 0)\n"; char txt_option_sc[] = "\tsort clusters by size (number of sequences), default 0, output clusters by decreasing length\n \ \tif set to 1, output clusters by decreasing size\n"; char txt_option_sf[] = "\tsort fasta/fastq by cluster size (number of sequences), default 0, no sorting\n \ \tif set to 1, output sequences by decreasing cluster size\n \ \tthis can be very slow if the input is in .gz format\n"; char txt_option_mask[] = "\tmasking letters (e.g. -mask NX, to mask out both 'N' and 'X')\n"; char txt_option_match[] = "\tmatching score, default 2 (1 for T-U and N-N)\n"; char txt_option_match2[] = "\tmatching score, default 2\n"; char txt_option_mismatch[] = "\tmismatching score, default -2\n"; char txt_option_mismatch2[] = "\tmismatching score, default -1\n"; char txt_option_gap[] = "\tgap opening score, default -6\n"; char txt_option_gap2[] = "\tgap opening score, default -3\n"; char txt_option_gap_ext[] = "\tgap extension score, default -1\n"; int print_usage (char *arg) { cout << cd_hit_ver << "\n\n" ; cout << "Usage: "<< arg << " [Options] \n\nOptions\n\n"; cout << " -i" << txt_option_i; cout << " -o" << txt_option_o; cout << " -c" << txt_option_c; cout << " -G" << txt_option_G; cout << " -b" << txt_option_b; cout << " -M" << txt_option_M; cout << " -T" << txt_option_T; cout << " -n" << txt_option_n; cout << " -l" << txt_option_l; cout << " -t" << txt_option_t; cout << " -d" << txt_option_d; cout << " -s" << txt_option_s; cout << " -S" << txt_option_S; cout << " -aL" << txt_option_aL; cout << " -AL" << txt_option_AL; cout << " -aS" << txt_option_aS; cout << " -AS" << txt_option_AS; cout << " -A" << txt_option_A; cout << " -uL" << txt_option_uL; cout << " -uS" << txt_option_uS; cout << " -U" << txt_option_U; cout << " -B" << txt_option_B; cout << " -p" << txt_option_p; cout << " -g" << txt_option_g; cout << " -sc"<< txt_option_sc; cout << " -sf"<< txt_option_sf; cout << " -bak" << txt_option_bak; cout << " -h\tprint this help\n\n"; cout << contacts; cout << " " << cd_hit_ref1 << "\n"; cout << " " << cd_hit_ref2 << "\n\n\n"; exit(1); } // END print_usage int print_usage_2d (char *arg) { cout << cd_hit_ver << "\n\n" ; cout << "Usage: "<< arg << " [Options] \n\nOptions\n\n"; cout << " -i" << txt_option_i_2d; cout << " -i2"<< txt_option_i2; cout << " -o" << txt_option_o; cout << " -c" << txt_option_c; cout << " -G" << txt_option_G; cout << " -b" << txt_option_b; cout << " -M" << txt_option_M; cout << " -T" << txt_option_T; cout << " -n" << txt_option_n; cout << " -l" << txt_option_l; cout << " -t" << txt_option_t; cout << " -d" << txt_option_d; cout << " -s" << txt_option_s; cout << " -S" << txt_option_S; cout << " -s2" << txt_option_s2; cout << " -S2" << txt_option_S2; cout << " -aL" << txt_option_aL; cout << " -AL" << txt_option_AL; cout << " -aS" << txt_option_aS; cout << " -AS" << txt_option_AS; cout << " -A" << txt_option_A; cout << " -uL" << txt_option_uL; cout << " -uS" << txt_option_uS; cout << " -U" << txt_option_U; cout << " -B" << txt_option_B; cout << " -p" << txt_option_p; cout << " -g" << txt_option_g; cout << " -bak" << txt_option_bak; cout << " -h\tprint this help\n\n"; cout << " Questions, bugs, contact Weizhong Li at liwz@sdsc.edu\n\n"; cout << " If you find cd-hit useful, please kindly cite:\n\n"; cout << " " << cd_hit_ref1 << "\n"; cout << " " << cd_hit_ref2 << "\n\n\n"; exit(1); } // END print_usage_2d int print_usage_est (char *arg) { cout << cd_hit_ver << "\n\n" ; cout << "Usage: "<< arg << " [Options] \n\nOptions\n\n"; cout << " -i" << txt_option_i; cout << " -j" << txt_option_j; cout << " -o" << txt_option_o; cout << " -op" << txt_option_op; cout << " -c" << txt_option_c; cout << " -G" << txt_option_G; cout << " -b" << txt_option_b; cout << " -M" << txt_option_M; cout << " -T" << txt_option_T; cout << " -n" << txt_option_n_est; cout << " -l" << txt_option_l; cout << " -d" << txt_option_d; cout << " -s" << txt_option_s; cout << " -S" << txt_option_S; cout << " -aL" << txt_option_aL; cout << " -AL" << txt_option_AL; cout << " -aS" << txt_option_aS; cout << " -AS" << txt_option_AS; cout << " -A" << txt_option_A; cout << " -uL" << txt_option_uL; cout << " -uS" << txt_option_uS; cout << " -U" << txt_option_U; cout << " -B" << txt_option_B; cout << " -P" << txt_option_P; cout << " -cx"<< txt_option_cx; cout << " -cy"<< txt_option_cy; cout << " -ap"<< txt_option_ap; cout << " -p" << txt_option_p; cout << " -g" << txt_option_g; cout << " -r" << txt_option_r; cout << " -mask" << txt_option_mask; cout << " -match" << txt_option_match; cout << " -mismatch" << txt_option_mismatch; cout << " -gap" << txt_option_gap; cout << " -gap-ext" << txt_option_gap_ext; cout << " -bak" << txt_option_bak; cout << " -sc"<< txt_option_sc; cout << " -sf"<< txt_option_sf; cout << " -h\tprint this help\n\n"; cout << contacts; cout << " " << cd_hit_ref1 << "\n"; cout << " " << cd_hit_ref2 << "\n\n\n"; exit(1); } // END print_usage_est int print_usage_est_2d (char *arg) { cout << cd_hit_ver << "\n\n" ; cout << "Usage: "<< arg << " [Options] \n\nOptions\n\n"; cout << " -i" << txt_option_i_2d; cout << " -i2"<< txt_option_i2; cout << " -j, -j2"<< txt_option_j2; cout << " -o" << txt_option_o; cout << " -op" << txt_option_op; cout << " -c" << txt_option_c; cout << " -G" << txt_option_G; cout << " -b" << txt_option_b; cout << " -M" << txt_option_M; cout << " -T" << txt_option_T; cout << " -n" << txt_option_n_est; cout << " -l" << txt_option_l; cout << " -d" << txt_option_d; cout << " -s" << txt_option_s; cout << " -S" << txt_option_S; cout << " -s2" << txt_option_s2; cout << " -S2" << txt_option_S2; cout << " -aL" << txt_option_aL; cout << " -AL" << txt_option_AL; cout << " -aS" << txt_option_aS; cout << " -AS" << txt_option_AS; cout << " -A" << txt_option_A; cout << " -uL" << txt_option_uL; cout << " -uS" << txt_option_uS; cout << " -U" << txt_option_U; cout << " -B" << txt_option_B; cout << " -P" << txt_option_P; cout << " -cx"<< txt_option_cx; cout << " -cy"<< txt_option_cy; cout << " -p" << txt_option_p; cout << " -g" << txt_option_g; cout << " -r" << txt_option_r; cout << " -mask" << txt_option_mask; cout << " -match" << txt_option_match; cout << " -mismatch" << txt_option_mismatch; cout << " -gap" << txt_option_gap; cout << " -gap-ext" << txt_option_gap_ext; cout << " -bak" << txt_option_bak; cout << " -h\tprint this help\n\n"; cout << contacts; cout << " " << cd_hit_ref1 << "\n"; cout << " " << cd_hit_ref2 << "\n\n\n"; exit(1); } // END print_usage_est_2d int print_usage_div (char *arg) { cout << cd_hit_ver << "\n\n" ; cout << "Usage: "<< arg << " [Options] \n\nOptions\n\n"; cout << "Options " << endl << endl; cout << " -i in_dbname, required" << endl; cout << " -o out_dbname, required" << endl; cout << " -div number of divide, required " << endl; // cout << " -dbmax max size of your db\n\n\n"; exit(1); } // END print_usage_div char mytxt_option_c[] = "\tsequence identity threshold, default 0.98\n \ \tthis is a \"global sequence identity\" calculated as :\n \ \tnumber of identical amino acids or bases in alignment\n \ \tdivided by the full length of the shorter sequence + gaps\n"; char mytxt_option_b[] = "\tband_width of alignment, default 10\n"; char mytxt_option_n_est[] = "\tword_length, default 10, see user's guide for choosing it\n"; char mytxt_option_D[] = "\tmax size per indel, default 1\n"; int print_usage_454 (char *arg) { cout << cd_hit_ver << "\n\n" ; cout << "Usage: "<< arg << " [Options] \n\nOptions\n\n"; cout << " -i" << txt_option_i; cout << " -o" << txt_option_o; cout << " -c" << mytxt_option_c; cout << " -b" << mytxt_option_b; cout << " -M" << txt_option_M; cout << " -T" << txt_option_T; cout << " -n" << mytxt_option_n_est; cout << " -aL" << txt_option_aL; cout << " -AL" << txt_option_AL; cout << " -aS" << txt_option_aS; cout << " -AS" << txt_option_AS; cout << " -B" << txt_option_B; cout << " -g" << txt_option_g; cout << " -D" << mytxt_option_D; cout << " -match" << txt_option_match2; cout << " -mismatch" << txt_option_mismatch2; cout << " -gap" << txt_option_gap2; cout << " -gap-ext" << txt_option_gap_ext; cout << " -bak" << txt_option_bak; cout << " -h\tprint this help\n\n"; cout << " Questions, bugs, contact Weizhong Li at liwz@sdsc.edu\n\n"; cout << " If you find cd-hit useful, please kindly cite:\n\n"; cout << " " << cd_hit_ref1 << "\n"; cout << " " << cd_hit_ref2 << "\n"; cout << " " << cd_hit_ref3 << "\n\n\n"; exit(1); } float current_time() { return ((float)clock())/CLOCKS_PER_SEC; } cdhit-4.8.1/cdhit-utility.h000066400000000000000000000003051343604040700155630ustar00rootroot00000000000000 int print_usage (char *arg); int print_usage_2d (char *arg); int print_usage_est (char *arg); int print_usage_div (char *arg); int print_usage_est_2d (char *arg); int print_usage_454 (char *arg); cdhit-4.8.1/cdhit.c++000066400000000000000000000041171343604040700142100ustar00rootroot00000000000000// ============================================================================= // CD-HIT // http://cd-hit.org/ // http://bioinformatics.burnham-inst.org/cd-hi // // program written by // Weizhong Li // UCSD, San Diego Supercomputer Center // La Jolla, CA, 92093 // Email liwz@sdsc.edu // at // Adam Godzik's lab // The Burnham Institute // La Jolla, CA, 92037 // Email adam@burnham-inst.org // // Modified by: // Limin Fu // Center for Research in Biological Systems (CRBS), UCSD // La Jolla, CA, 92093 // Email: l2fu@ucsd.edu, fu@daovm.net // ============================================================================= #include "cdhit-common.h" Options options; SequenceDB seq_db; //////////////////////////////////// MAIN ///////////////////////////////////// int main(int argc, char *argv[]) { string db_in; string db_out; float begin_time = current_time(); float end_time; // *********************************** parse command line and open file if (argc < 5) print_usage(argv[0]); if (options.SetOptions( argc, argv ) == 0) print_usage(argv[0]); options.Validate(); db_in = options.input; db_out = options.output; InitNAA( MAX_UAA ); options.NAAN = NAAN_array[options.NAA]; seq_db.NAAN = NAAN_array[options.NAA]; //printf( "%i %i %i\n", sizeof(NVector), seq_db.NAAN, sizeof(NVector) * seq_db.NAAN ); seq_db.Read( db_in.c_str(), options ); cout << "total seq: " << seq_db.sequences.size() << endl; seq_db.SortDivide( options ); seq_db.DoClustering( options ); printf( "writing new database\n" ); seq_db.WriteClusters( db_in.c_str(), db_out.c_str(), options ); // write a backup clstr file in case next step crashes seq_db.WriteExtra1D( options ); cout << "program completed !" << endl << endl; end_time = current_time(); printf( "Total CPU time %.2f\n", end_time - begin_time ); return 0; } // END int main cdhit-4.8.1/clstr2tree.pl000077500000000000000000000016701343604040700152550ustar00rootroot00000000000000#!/usr/bin/perl $clstr = shift; $fr = shift; # for nr80.clstr $fr = 0.8 $fra = 1 - $fr; print "(\n"; open(TMP, $clstr) || die; my $ll; my $no = 0; my @ids = (); my $rep = ""; while($ll=) { if ($ll =~ /^>/) { if ($no) { if ($no ==1 ) { print "$rep:1.0,\n";} else { my @mms = (); foreach my $tid (@ids) { push(@mms, "$tid:$fra"); } my $mm = join(",\n", @mms); print "(\n$mm\n):$fr,\n"; } } $no = 0; @ids = (); $rep = ""; } else { my $tid= ""; if ($ll =~ /(aa|nt), >(.+)\.\.\./) { $tid=$2;} push(@ids,$tid); if ($ll =~ /\*/) {$rep = $tid;} $no++; } } if ($no) { if ($no ==1 ) { print "$rep:1.0\n";} else { my @mms = (); foreach my $tid (@ids) { push(@mms, "$tid:$fra"); } my $mm = join(",\n", @mms); print "(\n$mm\n):$fr\n"; } } close(TMP); print ");\n"; cdhit-4.8.1/clstr2txt.pl000077500000000000000000000022711343604040700151330ustar00rootroot00000000000000#!/usr/bin/perl my $no = 0; my $clstr_no = ""; my @this_cluster = (); print "id clstr clstr_size length clstr_rep clstr_iden clstr_cov\n"; while($ll = <>) { if ($ll =~ /^>/) { if ($no>0) { process_this_cluster(); } if ($ll =~ /^>Cluster (\d+)/) { $clstr_no = $1; } $no = 0; @this_cluster = (); } else { my ($id, $len, $rep, $iden); if ($ll =~ /\d+\t(\d+)[a-z]{2}, >(.+)\.\.\. \*/) { $len = $1; $id = $2; $rep = 1; $iden = 100; } elsif ($ll =~ /\d+\t(\d+)[a-z]{2}, >(.+)\.\.\./) { $len = $1; $id = $2; $rep = 0; $ll=~/(\d+%|\d+\.\d+%)$/; $iden = $1; } else { print STDERR "***********\n"; } push(@this_cluster, [($id, $len, $rep, $iden)]); $no++; } } if ($no>0) { process_this_cluster(); } sub process_this_cluster { my ($i, $j, $k); my @t = sort { ($b->[2] <=> $a->[2]) or ( $b->[1] <=> $a->[1]) } @this_cluster; my $longest = 0; foreach $i (@t) { $longest = $i->[1] if ($i->[2]); } foreach $i (@t) { my $cov = int ( $i->[1]/$longest * 100); print "$i->[0]\t$clstr_no\t$no\t$i->[1]\t$i->[2]\t$i->[3]\t$cov\%\n"; } } cdhit-4.8.1/clstr2xml.pl000077500000000000000000000106271343604040700151200ustar00rootroot00000000000000#!/usr/bin/perl #usage: clstr_xml.pl [-len|-size] level1.clstr [level2.clstr level3.clstr ...] #purpose: to create xml file from cd-hit or hierarchical cd-hit(h-cd-hit) results #example: # if nr90 from nr100 and nr80 from nr90, with nr90.clstr and nr80.clstr # use # clstr_xml.pl -len nr90.clstr nr80.clstr # to create an xml file my $n=@ARGV; my $option="-len"; if($n==0||($n==1&&$ARGV[0]=~/^-/)){print "Usage:\n\tclstr2xml.pl [-len|-size] input1.clstr [input2.clstr input3.clstr ...]\n";exit(0);} if($ARGV[0]=~/^-/){ $option=$ARGV[0];shift @ARGV; $n--; } my $topsize=0; my $totalsequence=0; for($ilevel=$n;$ilevel>0;$ilevel--){ open(TMP, $ARGV[$ilevel-1]) || die "Can not open file"; $readin = 0; my $gi = ""; my $clstr = ""; my $this_no = 0; while(my $ll=) { if ($ll =~ /^>/ ) { if ($readin and $key and $this_no>0 ) { $nextlevel=$ilevel-1; $childofgi{"$key##$ilevel"}=[$this_no,$key,@members]; if($ilevel>1){ foreach $k (@members){$parent{"$k##$nextlevel"}=$key;} $parent{"$key##$nextlevel"}=$key; } $size{"$key##$ilevel"}=$this_no; $totalsequence+=$this_no; if($ilevel<$n){ $totalsequence--; my $j=$ilevel; while(exists($parent{"$key##$j"})){ $key=$parent{"$key##$j"};$j++; $size{"$key##$j"}+=($this_no-1); } } } $key=""; $clstr=""; $this_no=0; @members=(); if($ilevel==$n){$topsize++;} } #>Cluster 10 #0 187aa, >BPHE_BURCE\1-187... at 1:187:9:195/96.79% #1 188aa, >Q7B113_9PSED\1-188... at 1:188:8:195/96.81% #2 195aa, >Q9AEY4_9PSED\19-213... * else { $readin = 1; #$clstr .= $ll; if ($ll =~ /\*/ and $ll =~ /\d+\t(\d+)[a-z]{2}, >(.+)\.\.\./ ) { $key = $2; $len{$key}=$1;} else{$ll =~ /\d+\t(\d+)[a-z]{2}, >(.+)\.\.\./; $gi=$2;push(@members,$gi);$len{$gi}=$1; $ll=~/(\d+%|\d+\.\d+%)$/;$identity{"$gi##$ilevel"}=$1; } $this_no++; } } close(TMP); #last group if ($readin and $key and $this_no>0 ) { $nextlevel=$ilevel-1; $childofgi{"$key##$ilevel"}=[$this_no,$key,@members]; if($ilevel>1){ foreach $k (@members){$parent{"$k##$nextlevel"}=$key;} $parent{"$key##$nextlevel"}=$key; } $size{"$key##$ilevel"}=$this_no; $totalsequence+=$this_no; if($ilevel<$n){ $totalsequence--; my $j=$ilevel; while(exists($parent{"$key##$j"})){ $key=$parent{"$key##$j"};$j++; $size{"$key##$j"}+=($this_no-1); } } }#end of last group } print < head my @allkeys; if($option eq "-len"){ @allkeys=sort {$len{substr($b,0,rindex($b,"##"))} <=> $len{substr($a,0,rindex($a,"##"))}} keys %childofgi; } elsif($option eq "-size"){ @allkeys=sort {$size{$b} <=> $size{$a}} keys %childofgi; } foreach $k (@allkeys){ printnode($k,$n); } print "\n"; exit(0); sub printnode{ my $ckey=shift; my $level=shift; my ($key,$keylevel)=split(/##/,$ckey); if($keylevel != $level){return;} my $space=" "x(3*($n-$level)); my $mspace="$space "; print "$space1){print "GroupNo=\"$childofgi{$ckey}->[0]\" ";} print "SequenceNo=\"$size{$ckey}\" Length=\"$len{$key}\""; my $nextlevel=$level-1; my $upperlevel=$level+1; my $identitykey="$key##$upperlevel"; if(exists($identity{$identitykey})){print " Identity=\"$identity{$identitykey}\"";} else{if($keylevel<$n){print " Identity=\"100%\"";}} print ">$key\n"; my @ids=@{$childofgi{$ckey}};shift @ids; if($option eq "-len"||$nextlevel==0){ @ids=sort {$len{$b} <=> $len{$a}} @ids; } elsif($option eq "-size"){ @ids=sort {$size{"$b##$nextlevel"} <=> $size{"$a##$nextlevel"}} @ids; } for(my $i=0;$i<$childofgi{$ckey}->[0];$i++){ if(!exists($childofgi{"$ids[$i]##$nextlevel"})) { print "$mspace$ids[$i]\n"; } else{ $newkey="$ids[$i]##$nextlevel"; printnode($newkey,$nextlevel); } } print "$space\n"; } cdhit-4.8.1/clstr_cut.pl000077500000000000000000000007201343604040700151610ustar00rootroot00000000000000#!/usr/bin/perl #keep only top $no proteins in cluster my $no_cutoff = shift; $no_cutoff or die "no number\n"; my $clstr= ""; my $no = 0; my $repout=1; while($ll=<>){ if ($ll =~ /^>/) { if ($no) { print $clstr; } $clstr = $ll; $no = 0; $repout=1; } else { if ($no < $no_cutoff-$repout or $ll =~ /\*$/) { if($ll=~/\*$/){$repout=0;} $clstr .= $ll; $no++; } } } if ($no) { print $clstr; } cdhit-4.8.1/clstr_list.pl000077500000000000000000000062721343604040700153510ustar00rootroot00000000000000#!/usr/bin/perl use Storable; use strict; #my $sort_by_what = shift; # $sort_by_what = "no" unless $sort_by_what; my $clstr_file = shift; my $store_file = shift; my %clstr = (); # an array of hashes for all the cluster my $rep_len = 0; my $rep_acc = ""; my @cur_sequences = (); # array of hashes for all sequences in a cluster my $ll = ""; my @record = (); open(TMP, $clstr_file) || die; while($ll = ) { # read .clstr files if ($ll =~ /^>/) { # the begin of a cluster if (scalar(@cur_sequences)) { # not the first cluster, therefore collect the information of last clstr #@cur_sequences = sort {$$b{"seq_len"} <=> $$a{"seq_len"}} @cur_sequences; @cur_sequences = sort {$$b[1] <=> $$a[1]} @cur_sequences; @record = ($rep_acc, $rep_len, 1, [@cur_sequences], ""); $clstr{$rep_acc} = [@record]; } @cur_sequences=(); } else { # the sequence line chop($ll); if ($ll =~ /^(\d+)\s+(\d+)(aa|nt),\s+>(.+)\.\.\./) { @record = ($4, $2, 0, [], ""); if ($ll =~ /\*$/) { # representative sequence or not $rep_acc = $record[0]; $rep_len = $record[1]; $record[4] = "100%"; } # elsif ($ll =~ / at (\d.+)$/ ) { elsif ($ll =~ / at (.+\d.+)$/ ) {# because cd-hit-est have strand info $record[4] = $1; } } push(@cur_sequences, [@record]); } } if (scalar(@cur_sequences)) { #@cur_sequences = sort {$$b{"seq_len"} <=> $$a{"seq_len"}} @cur_sequences; @cur_sequences = sort {$$b[1] <=> $$a[1]} @cur_sequences; @record = ($rep_acc, $rep_len, 1, [@cur_sequences], ""); $clstr{$rep_acc} = [@record]; } close(TMP); if (-e $store_file){ # already have a cluster file my %old_clstr = %{retrieve($store_file)}; foreach my $rep_acc (keys %clstr){ my $seqs = $clstr{$rep_acc}[3]; # $seqs a reference to the sequences; my $tmp_size = scalar(@{$seqs}); # how many sequences in a top level cluster, each sequence should be a representative sequence for lower level cluster #print "$rep_acc, $tmp_size\n"; my $i; for $i (0..($tmp_size-1)){ my $seq = $$seqs[$i]; if ($old_clstr{$$seq[0]}){ $clstr{$rep_acc}[3][$i][3] = [@{$old_clstr{$$seq[0]}[3]}]; $clstr{$rep_acc}[3][$i][2] = 1; } } } } store \%clstr, $store_file; #~ my $size = scalar(keys %clstr); #~ print "$size\n"; #~ my $acc = 'D8F4YGO02FSTQP|range|2:370|frame|2|len|123'; #~ my $temp = $clstr{$acc}[1]; #~ print "$temp\n"; #~ my $temp = scalar(@{$clstr{$acc}[3]}); #~ print "$temp\n"; #~ my $x; #~ for $x (@{$clstr{$acc}[3]} ){ #~ my $tmp_1 = scalar(@{$x->[3]}); #~ print "$x->[2], $x->[4], $x->[0], $x->[1], $tmp_1\n"; #~ } cdhit-4.8.1/clstr_list_sort.pl000077500000000000000000000021511343604040700164100ustar00rootroot00000000000000#!/usr/bin/perl use Storable; use strict; my $input_file = shift; my $output_file = shift; my $sort_by_what = shift; $sort_by_what = "no" unless $sort_by_what; my @clstr = values %{retrieve($input_file)}; if ($sort_by_what eq "no") { ### Added by liwz sort by No. sequences instead of No. nodes my %rep2size = (); my $clstr_no = scalar(@clstr); my ($i); for ($i=0; $i<$clstr_no; $i++){ my $node_size = 0; foreach my $seq1 (@{$clstr[$i][3]}) { if ($$seq1[2]) { # can be futher expanded foreach my $seq2(@{$$seq1[3]}) { if ($$seq2[2]) { $node_size += scalar(@{$$seq2[3]}); } else { $node_size++; } } } else { $node_size++; } } $rep2size{ $clstr[$i][0] } = $node_size; } ### END #@clstr = sort {scalar(@{$b->[3]}) <=> scalar(@{$a->[3]})} @clstr; @clstr = sort {$rep2size{$b->[0]} <=> $rep2size{$a->[0]}} @clstr; } elsif ($sort_by_what eq "len") { @clstr = sort {$b->[1] <=> $a->[1]} @clstr; } elsif ($sort_by_what eq "des") { @clstr = sort {$a->[0] cmp $b->[0]} @clstr; } store \@clstr, $output_file; cdhit-4.8.1/clstr_merge.pl000077500000000000000000000061771343604040700155010ustar00rootroot00000000000000#!/usr/bin/perl # the order of clusters need to be identical my ($master_clstr, @clstr) = @ARGV; my $clstr_file_no = $#clstr+1; my @fhs = (); my @div_reps = (); my @div_seqs = (); my @div_rep_no = (); for ($i=0; $i<$clstr_file_no; $i++) { $fh = "FH" . $i; open($fh, $clstr[$i]) || die "can not open $clstr[$i]"; $div_reps[$i] = ""; $div_seqs[$i] = ""; $div_rep_no[$i] = 0; } my $master_rep = ""; my $master_seq = ""; my $rep_no = 0; open(TMP, $master_clstr) || die "can not open $master_clstr"; while($ll = ) { if ($ll =~ /^>/) { if ($master_rep) { print $master_seq; foreach ($i=0; $i<$clstr_file_no; $i++) { $this_no = process_this($i, $master_rep, $rep_no); $rep_no += $this_no; } } $master_rep = ""; $master_seq = $ll; $rep_no = 0; } else { $master_seq .= $ll; $rep_no++; chop($ll); if ($ll =~ /\*$/) { $rep = ""; if ($ll =~ /(aa|nt), >(.+)\.\.\./) { $rep = $2; $master_rep = $rep; } else { die "format error $ll"; } } } } if ($master_rep) { print $master_seq; foreach ($i=0; $i<$clstr_file_no; $i++) { $this_no = process_this($i, $master_rep, $rep_no); $rep_no += $this_no; } } close(TMP); for ($i=0; $i<$clstr_file_no; $i++) { $fh = "FH" . $i; close($fh); } sub process_this { my ($i, $master_rep, $rep_no) = @_; my $ll; my ($j, $k); $fh = "FH" . $i; while($ll = <$fh>) { if ($ll =~ /^>/) { if ($div_reps[$i] eq $master_rep) { if ($div_rep_no[$i] > 1) { $j = $rep_no; my @lls = split(/\n/,$div_seqs[$i]); foreach $k (@lls) { next if ($k =~ /\*$/); $k =~ s/^\d+/$j/; print $k, "\n"; $j++; } } $div_reps[$i] = ""; $div_seqs[$i] = ""; my $t1 = $div_rep_no[$i]; $div_rep_no[$i] = 0; return ($t1-1); #return ($div_rep_no[$i]-1); } else { $div_reps[$i] = ""; $div_seqs[$i] = ""; $div_rep_no[$i] = 0; } } else { $div_seqs[$i] .= $ll; $div_rep_no[$i]++; chop($ll); if ($ll =~ /\*$/) { my $rep = ""; if ($ll =~ /(aa|nt), >(.+)\.\.\./) { $rep = $2; $div_reps[$i] = $rep; } else { die "format error $ll"; } } } } if ($div_reps[$i] eq $master_rep) { if ($div_rep_no[$i] > 1) { $j = $rep_no; my @lls = split(/\n/,$div_seqs[$i]); foreach $k (@lls) { next if ($k =~ /\*$/); $k =~ s/^\d+/$j/; print $k, "\n"; $j++; } } $div_reps[$i] = ""; $div_seqs[$i] = ""; my $t1 = $div_rep_no[$i]; $div_rep_no[$i] = 0; return ($t1-1); #return ($div_rep_no[$i]-1); } } cdhit-4.8.1/clstr_merge_noorder.pl000077500000000000000000000041621343604040700172210ustar00rootroot00000000000000#!/usr/bin/perl # order of clusters don't need to be the same # but then I have to read everything into memory my ($master_clstr, @clstr) = @ARGV; my $clstr_file_no = $#clstr+1; my %slave_clstr = (); foreach $file (@clstr) { my $rep = ""; my $no = ""; my @members = (); open(TC, $file) || die; while($ll=){ if ($ll =~ /^>/) { if ($no) { die "format error, no rep before cluster $ll" unless ($rep); if (not defined($slave_clstr{$rep})) { $slave_clstr{$rep}=[]; } push(@{$slave_clstr{$rep}}, @members); } $rep = ""; $no = ""; @members = (); } else { my $id = ""; if ($ll =~ /(aa|nt), >(.+)\.\.\./) { $id = $2; } else { die "format error at $ll\n"; } chop($ll); if ($ll =~ /\*$/) { $rep = $id; } else { push(@members, $ll); $no++; } } } if ($no) { die "format error, no rep before cluster $ll" unless ($rep); if (not defined($slave_clstr{$rep})) { $slave_clstr{$rep}=[]; } push(@{$slave_clstr{$rep}}, @members); } close(TC); } ########## my $master_rep = ""; my $master_seq = ""; my $rep_no = 0; open(TMP, $master_clstr) || die "can not open $master_clstr"; while($ll = ) { if ($ll =~ /^>/) { if ($master_rep) { print $master_seq; if (defined( $slave_clstr{$master_rep} )) { foreach $i (@{$slave_clstr{$master_rep}}) { $i =~ s/^\d+/$rep_no/; print $i, "\n"; $rep_no++; } } } $master_rep = ""; $master_seq = $ll; $rep_no = 0; } else { $master_seq .= $ll; $rep_no++; chop($ll); if ($ll =~ /\*$/) { if ($ll =~ /(aa|nt), >(.+)\.\.\./) { $master_rep = $2; } else { die "format error $ll"; } } } } if ($master_rep) { print $master_seq; if (defined( $slave_clstr{$master_rep} )) { foreach $i (@{$slave_clstr{$master_rep}}) { $i =~ s/^\d+/$rep_no/; print $i, "\n"; $rep_no++; } } } close(TMP); cdhit-4.8.1/clstr_quality_eval.pl000077500000000000000000000066111343604040700170720ustar00rootroot00000000000000#!/usr/bin/perl ## calculate the sensitivity and specificity of clusters ## if the input fasta file has pre-defined classification term ## such as COG, pfam, TAXID etc. ## these terms can be used as benchmark to calcuate ## the sensitivity and specificity of clustering ## sensitivity is the ratio of number of correct pairs in cd-hit to number of pairs in benchmark ## specificity is the ratio of number of correct pairs in cd-hit to number of all cd-hit pairs ## here a pair is a pair of seqs that in same cluster ## the fasta file defline should be ">id||term" ## for example: ">id1||COG00001"; my %pair_status = (); my %bench_clusters = (); my %cdhit_clusters = (); my %seqs = (); my $seq_idx = 0; my @clstr = (); my $readin = 0; my $i = 0; while($ll=<>) { if ($ll =~ /^>/) { if ($readin) { if (@clstr > 1) { #skip singleton $cdhit_clusters{$i} = [@clstr]; $i++; } } @clstr = (); } else { $readin=1; chop($ll); if ($ll =~ /(\d+)(aa|nt), >(.+)\.\.\./) { $id = $3; my ($seq_id, $ben_id) = split(/\|\|/, $id); if ($ben_id) { if (not defined($bench_clusters{$ben_id})) { $bench_clusters{$ben_id} = []; } push(@{$bench_clusters{$ben_id}},$seq_idx); } push(@clstr, $seq_idx); push(@seqs,$seq_id); $seq_idx++; } } } if ($readin) { if (@clstr > 1) { #skip singleton $cdhit_clusters{$i} = [@clstr]; $i++; } } #process pairs in cdhit my $total_cdhit_pairs=0; foreach my $family (keys %cdhit_clusters) { my @seqs = @{$cdhit_clusters{$family}}; @seqs = sort {$a <=> $b} @seqs; my $N = $#seqs+1; for ($i=0; $i<$N-1; $i++) { my $idi = $seqs[$i]; for ($j=$i+1; $j<$N; $j++){ my $idj = $seqs[$j]; $pair_status{"$idi|$idj"} = "C"; #cdhit pairs $total_cdhit_pairs++; } } } #process pairs in benchmark my $total_bench_pairs = 0; my $correct_pairs=0; foreach my $family (keys %bench_clusters) { my @seqs = @{$bench_clusters{$family}}; next unless (@seqs > 1); #skip singleton @seqs = sort {$a <=> $b} @seqs; my $N = $#seqs+1; for ($i=0; $i<$N-1; $i++) { my $idi = $seqs[$i]; for ($j=$i+1; $j<$N; $j++){ my $idj = $seqs[$j]; if (defined( $pair_status{"$idi|$idj"} )) { $correct_pairs++; $pair_status{"$idi|$idj"} = "T"; #True pair } else { $pair_status{"$idi|$idj"} = "B"; #bench pairs } $total_bench_pairs++; } } } my $sen = $correct_pairs / $total_bench_pairs; my $spe = $correct_pairs / $total_cdhit_pairs; print "Total benchmark pairs\t$total_bench_pairs\n"; print "Total cd-hit pairs\t$total_cdhit_pairs\n"; print "Total correct pairs\t$correct_pairs\n"; print "Sensitivity\t$sen\n"; print "Specificity\t $spe\n"; print "\n\nPairs in benchmark but not in cd-hit\n"; foreach $pair (keys %pair_status) { next unless ($pair_status{$pair} eq "B"); my ($idx1, $idx2) = split(/\|/,$pair); print "$seqs[$idx1]\t$seqs[$idx2]\n"; } print "\n\nPairs in cd-hit but not in benchmark\n"; foreach $pair (keys %pair_status) { next unless ($pair_status{$pair} eq "C"); my ($idx1, $idx2) = split(/\|/,$pair); print "$seqs[$idx1]\t$seqs[$idx2]\n"; } print "\n\nPairs in both cd-hit and benchmark\n"; foreach $pair (keys %pair_status) { next unless ($pair_status{$pair} eq "T"); my ($idx1, $idx2) = split(/\|/,$pair); print "$seqs[$idx1]\t$seqs[$idx2]\n"; } cdhit-4.8.1/clstr_quality_eval_by_link.pl000077500000000000000000000044371343604040700206050ustar00rootroot00000000000000#!/usr/bin/perl ## calculate the sensitivity and specificity of clusters ## if the input fasta file has pre-defined classification term ## such as COG, pfam, TAXID etc. ## these terms can be used as benchmark to calcuate ## the sensitivity and specificity of clustering ## sensitivity is the ratio of number of correct pairs in cd-hit to number of pairs in benchmark ## specificity is the ratio of number of correct pairs in cd-hit to number of all cd-hit pairs ## here a pair is a pair of seqs that in same cluster ## the fasta file defline should be ">id||term" ## such as ">id1||COG00001"; ## NOTE !!!!!!!!!! ## this script use independant link instead of pair ## for example ## if a cluster has 8 sequences, it has 28 pairs, but only 7 pairs are independant ## these 7 pairs are independ links my %bench_clusters = (); my $total_bench_links = 0; my $total_cdhit_links = 0; my $correct_links = 0; my %clstr_by_ben = (); my $t_no = 0; my $readin = 0; while($ll=<>) { if ($ll =~ /^>/) { if ($readin) { if ($t_no > 1) { foreach my $ben_id (keys %clstr_by_ben) { $correct_links += $clstr_by_ben{$ben_id}-1; } $total_cdhit_links += $t_no-1; } } $t_no = 0; %clstr_by_ben = (); } else { $readin=1; chop($ll); if ($ll =~ /(\d+)(aa|nt), >(.+)\.\.\./) { $id = $3; my ($seq_id, $ben_id) = split(/\|\|/, $id); if ($ben_id) { if (not defined($bench_clusters{$ben_id})) { $bench_clusters{$ben_id} = []; } push(@{$bench_clusters{$ben_id}},$seq_id); $clstr_by_ben{$ben_id}++; $t_no++ ; } } } } if ($t_no > 1) { foreach my $ben_id (keys %clstr_by_ben) { $correct_links += $clstr_by_ben{$ben_id}-1; } $total_cdhit_links += $t_no-1; } #process links in benchmark foreach my $family (keys %bench_clusters) { my @seqs = @{$bench_clusters{$family}}; my $N = $#seqs+1; $total_bench_links += $N-1; #print "$family $N\n"; } my $sen = $correct_links / $total_bench_links; my $spe = $correct_links / $total_cdhit_links; print "Total benchmark links\t$total_bench_links\n"; print "Total cd-hit links\t$total_cdhit_links\n"; print "Total correct links\t$correct_links\n"; print "Sensitivity\t$sen\n"; print "Specificity\t $spe\n"; cdhit-4.8.1/clstr_reduce.pl000077500000000000000000000017501343604040700156410ustar00rootroot00000000000000#!/usr/bin/perl $file90 = shift; $segs = shift; $reduce_rate = shift; @clstr_nos = (); @segs = split(/,/, $segs); @segs_no = (); @no2seg_idx = (); for ($i=0; $i<@segs; $i++) { $seg = $segs[$i]; if ($seg =~ /-/) { ($b, $e) = split(/-/, $seg); } else { $b= $e = $seg; } for($j=$b; $j<=$e; $j++) { $no2seg_idx[$j]=$i; } $segs_no[$i] = 0; } open(TMP, $file90) || die "Can not open file"; $readin = 0; $this_no = 0; $this_clstr = ""; $ll; while($ll=) { if ($ll =~ /^>/ ) { if ($readin) { $this_seg = $no2seg_idx[$this_no]; if (($segs_no[$this_seg] % $reduce_rate) == 0) { print $this_clstr; } $segs_no[$this_seg]++; } $this_no=0; $this_clstr = $ll; } else { $this_clstr .= $ll; $readin = 1; $this_no++; } } close(TMP); if ($readin) { $this_seg = $no2seg_idx[$this_no]; if (($segs_no[$this_seg] % $reduce_rate) == 0) { print $this_clstr; } $segs_no[$this_seg]++; } cdhit-4.8.1/clstr_renumber.pl000077500000000000000000000003041343604040700162030ustar00rootroot00000000000000#!/usr/bin/perl $no = 0; while($ll=<>){ if ($ll =~ /^>Cluster (\d+)/) { print ">Cluster $no\n"; $no++; $cno = 0; } else { $ll =~ s/^\d+/$cno/; print $ll; $cno++; } } cdhit-4.8.1/clstr_rep.pl000077500000000000000000000010521343604040700151530ustar00rootroot00000000000000#!/usr/bin/perl $rep = ""; $no = 0; while($ll=<>){ if ($ll =~ /^>/) { if ($no) { print "$cid\t$rep\t$no\n"; } $cid = ""; if ($ll =~ /^>Cluster (\d+)/) {$cid = $1;} elsif ($ll =~ /^>Clstr (\d+)/) {$cid = $1;} else {die "format error $ll"} $rep = ""; $no = 0; } else { if ($ll =~ /\*$/) { $rep = ""; if ($ll =~ /aa, >(.+)\.\.\./) { $rep = $1; } else { die "format error $ll"; } } $no++; } } if ($no) { print "$cid\t$rep\t$no\n"; } cdhit-4.8.1/clstr_reps_faa_rev.pl000077500000000000000000000022101343604040700170160ustar00rootroot00000000000000#!/usr/bin/perl # output single fasta file # for each cluster output at least $cutoff seqs $clstr_file = shift; $fasta_file = shift; $cutoff = shift; die "" unless ((-e $clstr_file) and (-e $fasta_file) and ($cutoff>0)); my ($i, $j, $k, $cmd); my %rep_ids = (); #rep_ids to be skipped open(TMP, $clstr_file) || die "Can not open file"; my @gis = (); my $clstr_id = ""; while(my $ll=) { if ($ll =~ /^>/ ) { if (@gis) { my $no = $#gis+1; for ($i=$cutoff; $i<$no; $i++) { $rep_ids{$gis[$i]}=1; } } @gis = (); } else { chop($ll); if ($ll =~ />(.+)\.\.\./ ) { my $id = $1; if ($ll =~ /\*$/) { unshift(@gis, $id);} else { push(@gis, $id);} } } } if (@gis) { my $no = $#gis+1; for ($i=$cutoff; $i<$no; $i++) { $rep_ids{$gis[$i]}=1; } } close(TMP); ######################################################### my $flag = 0; open(TMP, $fasta_file) || die; while($ll = ) { chomp($ll);$ll=~s/\r$//; if ($ll =~ /^>/) { $gi = substr($ll,1); $gi =~ s/\s.+$//; $flag = ($rep_ids{$gi}) ? 0 : 1; } if ($flag) {print "$ll\n";} } close(TMP); cdhit-4.8.1/clstr_rev.pl000077500000000000000000000031241343604040700151630ustar00rootroot00000000000000#!/usr/bin/perl # if nr90 from nr100 and # nr80 from nr90, so I have nr90.clstr and nr80.clstr # but, in nr80.clstr, some gi numbers whose from nr100 are there # use this script, I create a new nr80new.clstr, as it is clustered from nr100 $file90 = shift; $file80 = shift; my %gi2clstr = (); open(TMP, $file90) || die "Can not open file"; $readin = 0; my $gi = ""; my $clstr = ""; my $this_no = 0; while(my $ll=) { if ($ll =~ /^>/ ) { if ($readin and $gi and $this_no>1 ) { $gi2clstr{$gi} = $clstr; } $gi=""; $clstr=""; $this_no=0; } else { $readin = 1; $clstr .= $ll; if ($ll =~ /\*/ and $ll =~ />(.+)\.\.\./ ) { $gi = $1; } $this_no++; } } close(TMP); if ($readin and $gi and $this_no>1 ) { $gi2clstr{$gi} = $clstr; } my $no = 0; open(TMP, $file80) || die "Can not open file"; while( $ll = ) { if ($ll =~ /^>/ ) { print $ll; $no = 0; } elsif ($ll =~ />(.+)\.\.\./ ) { $gi = $1; chop($ll); $rep = ( $ll =~ /\*$/) ? 1 : 0; $iden = ""; if ($ll =~ / at (.+)$/) { $iden = $1; } else { $iden = "100%"; } if ( $gi2clstr{$gi} ) { $aa = $gi2clstr{$gi}; @aa = split(/\n/, $aa); foreach $a (@aa) { $a =~ s/^\d+/$no/; if (not $rep) { if ($a =~ /\*$/) { $a =~ s/\*/at $iden/; } else { $a =~ s/at (.+)$/at $iden,$1/; } } print "$a\n"; $no++; } } else { $ll =~ s/^\d+/$no/; print "$ll\n"; $no++; } } else { print $ll; } } close(TMP); cdhit-4.8.1/clstr_select.pl000077500000000000000000000006031343604040700156450ustar00rootroot00000000000000#!/usr/bin/perl #my $by = shift; my $min; my $max; #if ($by eq "size") { $min = shift; $max = shift; #} $no = 0; $clstr = ""; while($ll=<>){ if ($ll =~ /^>/) { if (($no >= $min) and ($no <= $max)) { print $clstr; } $clstr = $ll; $no = 0; } else { $clstr .= $ll; $no++; } } if (($no >= $min) and ($no <= $max)) { print $clstr; } cdhit-4.8.1/clstr_select_rep.pl000077500000000000000000000010531343604040700165130ustar00rootroot00000000000000#!/usr/bin/perl #my $by = shift; my $min; my $max; #if ($by eq "size") { $min = shift; $max = shift; #} $rep = ""; $no = 0; while($ll=<>){ if ($ll =~ /^>/) { if (($no >= $min) and ($no <= $max)) { print "$rep\n"; } $rep = ""; $no = 0; } else { chop($ll); if ($ll =~ /\*$/) { $rep = ""; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $rep = $2; } else { die "format error $ll"; } } $no++; } } if (($no >= $min) and ($no <= $max)) { print "$rep\n"; } cdhit-4.8.1/clstr_size_histogram.pl000077500000000000000000000014131343604040700174150ustar00rootroot00000000000000#!/usr/bin/perl if(@ARGV==0){ print "Usage:\n\tclstr_size_histogram.pl [-bin N] clstr_file\n"; exit(1); } #$file90 = shift; $step = 100; if($ARGV[0] eq "-bin"){$step=$ARGV[1];$file90=$ARGV[2];} else{$file90=$ARGV[0];} my @clstr_nos = (); open(TMP, $file90) || die "Can not open file"; $readin = 0; my $this_no = 0; while(my $ll=) { if ($ll =~ /^>/ ) { $this_no = int ( ($this_no-1) / $step); if ($readin) { $clstr_nos[$this_no]++; } $this_no=0; } else { $readin = 1; $this_no++; } } close(TMP); $this_no = int ( ($this_no-1) / $step); $clstr_nos[$this_no]++; print "bin_size\tNo_of_clusters\n"; for ($i=0; $i<@clstr_nos; $i++) { if(!$clstr_nos[$i]){$clstr_nos[$i]=0;} print $i*$step+1, "-", $i*$step+$step,"\t$clstr_nos[$i]\n"; } cdhit-4.8.1/clstr_size_stat.pl000077500000000000000000000013251343604040700163750ustar00rootroot00000000000000#!/usr/bin/perl if(@ARGV==0){ print "Usage:\n\tclstr_size_stat.pl clstr_file\n"; exit(1); } $file90 = shift; my @clstr_nos = (); my $max_size = 0; open(TMP, $file90) || die "Can not open file"; $readin = 0; my $this_no = 0; while(my $ll=) { if ($ll =~ /^>/ ) { if ($readin) { $clstr_nos[$this_no]++; if ($this_no > $max_size) {$max_size=$this_no;} } $this_no=0; } else { $readin = 1; $this_no++; } } close(TMP); $clstr_nos[$this_no]++; if ($this_no > $max_size) {$max_size=$this_no;} print "size No.clstr No.seq\n"; for ($i=1; $i<=$max_size; $i++) { $noc = $clstr_nos[$i] ? $clstr_nos[$i] : 0; next unless $noc; $nos = $noc * $i; print "$i $noc $nos\n"; } cdhit-4.8.1/clstr_sort_by.pl000077500000000000000000000014461343604040700160550ustar00rootroot00000000000000#!/usr/bin/perl my $sort_by_what = shift; $sort_by_what = "no" unless $sort_by_what; my @clstr = (); my $no = 0; my $len = 0; my $clstr = ""; while($ll = <>) { if ($ll =~ /^>/) { if ($clstr) { push(@clstr, [$len, $no, $clstr]); } $no = 0; $len = 0; $clstr = ""; } else { $clstr .= $ll; $no++; chop($ll); if ($ll =~ /(\d+)(aa|nt),/) { my $this_len = $1; if ($this_len > $len) {$len = $this_len;} } } } if ($clstr) { push(@clstr, [$len, $no, $clstr]); } if ($sort_by_what eq "no") { @clstr = sort {$b->[1] <=> $a->[1]} @clstr; } elsif ($sort_by_what eq "len") { @clstr = sort {$b->[0] <=> $a->[0]} @clstr; } my $clstr_no = 0; foreach $c (@clstr) { print ">Cluster $clstr_no\n"; print $c->[-1]; $clstr_no++; } cdhit-4.8.1/clstr_sort_prot_by.pl000077500000000000000000000024131343604040700171140ustar00rootroot00000000000000#!/usr/bin/perl my $sort_by = shift; $sort_by = "len" unless ($sort_by); my @clstr = (); my $readin = 0; my $head = ""; while($ll=<>) { if ($ll =~ /^>/) { if ($readin) { print $head; if ($sort_by eq "len") { @clstr = sort { $b->[1]<=>$a->[1] } @clstr; } elsif ($sort_by eq "id") { @clstr = sort {$a->[2] cmp $b->[2] or $b->[1]<=>$a->[1]} @clstr; } else { @clstr = sort {$b->[1]<=>$a->[1] or $a->[2] cmp $b->[2]} @clstr; } for ($i=0; $i<@clstr; $i++) { print "$i\t$clstr[$i]->[0]\n"; } } @clstr = (); $head = $ll; } else { $readin=1; chop($ll); if ($ll =~ /(\d+)(aa|nt), >(.+)\.\.\./) { $len = $1; $id = $3; $len = 99999999 if ($ll =~ /\*/); $ll =~ s/^\d+\t//; push(@clstr, [$ll, $len, $id]); } } } if ($readin) { print $head; if ($sort_by eq "len") { @clstr = sort { $b->[1]<=>$a->[1] } @clstr; } elsif ($sort_by eq "id") { @clstr = sort {$a->[2] cmp $b->[2] or $b->[1]<=>$a->[1]} @clstr; } else { @clstr = sort {$b->[1]<=>$a->[1] or $a->[2] cmp $b->[2]} @clstr; } for ($i=0; $i<@clstr; $i++) { print "$i\t$clstr[$i]->[0]\n"; } } cdhit-4.8.1/clstr_sql_tbl.pl000077500000000000000000000055601343604040700160350ustar00rootroot00000000000000#!/usr/bin/perl if(@ARGV==0){ print "Usage:\n\tclstr_sql_tbl.pl clstr_file tbl_file\n"; exit(1); } #usage clstr_sql_tbl.pl clstr_file tbl_file # 1 if tbl_file does not exist # create a new tbl_file # 2 if tbl_file exists # add 2 new columns to it #format prot_id prot_len cid_level1 rep_level1 cid_level2 rep_level2 ... cid_leveln rep_leveln # if I have db90.clstr db60.clstr then db30.clstr # # run clstr_sql_tbl.pl db90.clstr db_sql.txt #create first 4 columns # clstr_sql_tbl.pl db60.clstr db_sql.txt #adding next 2 columns # clstr_sql_tbl.pl db30.clstr db_sql.txt #adding next 2 columns my $clstr_file = shift; my $tbl_file = shift; my $tbl_file_tmp = shift; $tbl_file_tmp = "$tbl_file.$$" unless ($tbl_file_tmp); my ($i, $j, $k, $ll); if (not (-e $tbl_file)) { open(TMP, $clstr_file) || die; open(OUT, "> $tbl_file") || die; my $cid = -1; while($ll=){ if ($ll =~ /^>/) { $cid++; } else { chop($ll); if ($ll =~ /\s(\d+)(aa|nt), >(.+)\.\.\./) { my $len = $1; my $id = $3; my $rep = 0; if ($ll =~ /\*$/) { $rep = 1; } print OUT "$id\t$len\t$cid\t$rep\n"; } else { die "format error $ll"; } } } close(OUT); close(TMP); } else { add_info_to_tbl(); } sub add_info_to_tbl { my ($i, $j, $k, $ll); my %id2cid = (); my %idisrep = (); open(TMP, $clstr_file) || die; my $cid = -1; while($ll=){ if ($ll =~ /^>/) { $cid++; } else { chop($ll); if ($ll =~ /\s(\d+)(aa|nt), >(.+)\.\.\./) { my $id = $3; if ($ll =~ /\*$/) { $idisrep{$id} = 1;} $id2cid{$id} = $cid; } else { die "format error $ll"; } } } close(TMP); print STDERR "done reading $clstr_file\n"; my @last_cid_2_id = (); open(TMP0, $tbl_file) || die; while($ll=) { chop($ll); my @lls = split(/\t/, $ll); my $id = $lls[0]; my $last_level_cid = $lls[-2]; my $last_level_rep = $lls[-1]; next unless ($last_level_rep == 1); $last_cid_2_id[$last_level_cid] = $id; } close(TMP0); open(TMP2, $tbl_file) || die; open(OUT, "> $tbl_file_tmp") || die; while($ll=) { chop($ll); my @lls = split(/\t/, $ll); my $id = $lls[0]; my $last_level_cid = $lls[-2]; my $last_level_rep = $lls[-1]; my $this_level_cid = "-1"; my $this_level_rep = 0; if (defined($idisrep{$id})) { $this_level_rep = $idisrep{$id} ;} if (defined($id2cid{$id})) { $this_level_cid = $id2cid{$id}; } else { my $rep1 = $last_cid_2_id[$last_level_cid]; if (defined($id2cid{$rep1})) { $this_level_cid = $id2cid{$rep1}; } else { die "at $ll";} } print OUT "$ll\t$this_level_cid\t$this_level_rep\n"; } close(OUT); close(TMP2); if(-e $tbl_file_tmp){ system("cp $tbl_file_tmp $tbl_file"); system("rm -f $tbl_file_tmp"); } } cdhit-4.8.1/clstr_sql_tbl_sort.pl000077500000000000000000000021171343604040700170770ustar00rootroot00000000000000#!/usr/bin/perl if(@ARGV==0){ print "Usage:\n\tclstr_sql_tbl_sort.pl table_file level\n"; exit(1); } my $clstr_file = shift; my $level = shift; my ($i, $j, $k, $ll); my @lls = (); open(TMP, $clstr_file) || die; while($ll=){ chop($ll); push(@lls, $ll); } close(TMP); print STDERR "done reading $clstr_file\n"; @sp=split(/\t/,$lls[0]); if(@sp < $level*2+2){ print "error level\n"; exit(1); } if ($level == 1) { @lls = sort {@a=split(/\t/,$a); @b=split(/\t/,$b); $a[-2] <=> $b[-2] or $b[-1] <=> $a[-1] } @lls; } elsif ($level == 2) { @lls = sort {@a=split(/\t/,$a); @b=split(/\t/,$b); $a[-2] <=> $b[-2] or $b[-1] <=> $a[-1] or $a[-4] <=> $b[-4] or $b[-3] <=> $a[-3]} @lls; } elsif ($level == 3) { @lls = sort {@a=split(/\t/,$a); @b=split(/\t/,$b); $a[-2] <=> $b[-2] or $b[-1] <=> $a[-1] or $a[-4] <=> $b[-4] or $b[-3] <=> $a[-3] or $a[-6] <=> $b[-6] or $b[-5] <=> $a[-5]} @lls; } foreach $ll (@lls) { print $ll , "\n"; } cdhit-4.8.1/doc/000077500000000000000000000000001343604040700133655ustar00rootroot00000000000000cdhit-4.8.1/doc/Figure1.png000066400000000000000000001254171343604040700154070ustar00rootroot00000000000000‰PNG  IHDR’ÉQÐ »sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ 8Bæ-"tEXtCommentCreated with GIMP on a Mac‡¨wC IDATxÚì}TT×¹ÿ¿2"/j%Õá^%Ì€Jļh$4I!Š-´˜kÌõµù¢Õû³š¦‰+銬ؤ&×Q1µ fŘ_¼•TˆÐšRŒÍ‹X &ˆˆ&bšA^aeFæüþàîsΜsæ / æù¬5K‡sæ9{?ûÙÏÞûìýìmAAAAAèćT@AAAÐ@’ ‚ ‚ ‚ $AAAAI‚ ‚ ‚ ‚’AAA $ ‚ ‚ ‚ ‚’AAA $ ‚ ‚ ‚ HAAA4$‚ ‚ ‚ h IAAA|Ÿ¦÷Æ?ýéOxóÍ7qáÂÒA1äñõõÅĉñßÿýß°X,¤‚ ‚ˆdss3êêê°bÅ ÒA1äq8ÈÎÎÆµk×z-ã/ù þõ¯¡££ƒJA iüýý1fÌüìg?ëßäµk×`0°jÕ*Ò2A1äéèèÀÆqýúõ^ËøÓŸþ„¿ýío6l)” ‚Ò‚€ðððþHA!¥¡¡ÑÑÑ8pà)ƒ ‚Òäää`ûöíºï§Ív‚ ‚ ‚ ¯ $AAAá²´õÒ¥Kp8n7  …Á`è÷g ‚€Æ¦F¸º]ðñõAè¸Ð~‘ëp:p©ù 88AAARv»]u³†ÐÐPøøøôZÿòtwttÀn·«–8Ï`4a2™ÐÐÐAÜßFü¯¾àêvi–»’ì:ЃX–š 2‚‚‚ ªéö½:hiiÑL—X–’N‚‚‚ˆ†††u !cB`ô3BI¹k•¥V>Àår¡±±ÑkYbû•ë744nöÜŸô¥nô—½¤ï!‚ ‚èíL[¶l¬V«®{SSSn“É$Øíva °Ûí‚ÕjèN§ÊËËyú³³³…bË–-Š: Øl6¯dÉõ/Owvv¶fÙˆó @HMMìv»`2™ÓÇôÍôï­l=:ÐóËR³AöÙ²e ¿W-ÝÞ|ôêÀSºäö+×É–-[›ÍÖçôzú”——óz%.w­²Ôʇ ‚Ífë•,±ýÊõk³Ùí¹??}©ýe¯é{¾Ï°²cöÞRSS%eIAC•ììl¯ÆQ2#¹sçNdddà‘G:tðÈ# >>¿ùÍo°dÉ’!1ÐŽ‰Ífã³ŲeË0þ|@BBjkkû¤ÿßþö·˜6m`Æ øË_þ‚ƒbÞ¼yøôÓO²²2Ï:tèŒF#âããÑÒÒ‚¬¬,üâ¿à×ÿøÇ?bïÞ½€Ò¿—âoþÏ?ÿ¼b¹¿û‰Á™Ú3˜?—/_V}î‰'úÝlKgDDŠ>(BP`ÏìLÇ•ݲ¸N”=z4Ž•S”œœŒ]»vñ{Ų²²²ðžü?YjúUª±±±ºóqäÈ$$$(êhùòå€ìœlé>qâ yYÉu4þ|Ì™3o¼ñªªª°lÙ2«¦-++ )))š: Õ%Kl7j0ý†††bÙ²eHOOç:(..Ö,Kö[=:¹xñ¢Gû tË—’͉ëNBBŠŠŠ0kÖ,”””’““ÝÊŽ}'n æÍ›‡sçιý}òäÉ8xðà€<³¡±?ÿÙÏÑÒÒ‚ÄÄDlݺµ_äæççã•W^ìÛ·111’þ•+W¢´´Ôíï&“ %%% ìµþåéVz–¸lÄy€gžyÉ$#ñDÅç%&&â÷¿ÿ=’’’ÐÒÒ¢YîJ²Y?IMzËR³A¹N®\¹¢šnoЫOéb²˜ýÊu²oß>À‚ ¬þšL&üÏŸþ‡¯>—»VYjåNž<)I·^YjeÅêÆ¯ýë>Ù'úR7úÛ^‰›Ç€ $CBB0fÌþ]üÿÓ§O£½½ؽ{7ÿûÈ‘#±dÉäç磽½€úúzìß¿_òŒáÇcé²¥0úQ__·ß~MMM€¦¦&äääî½÷^LŸ>ÿîøñãøä“OTe=ËYóvç¡««KrŸYŒôôtL˜0A·Î‚ƒƒù@uذaHMMÅ]wÝÅ;µÞê_¼L®¹¹™WÄsçΡ¹¹cÇŽÅ„ 0•ë(##0aüIºCÆ„ owâââpûí·óߎ9RUßçÏŸ‡ÍfƒÁ`Àøñãáïﯙ¶Q£FIµ£Fr[^îãã£K–X?ªŽkØ0žÞ   ^fL¶VY²ßæçç#::Z¢±ý†††bܸqšö[[[‹?üáXºl©$_r}2Çþ6lØ08NTWWó%±þþþne'þN }ÒÓÓQPP€‚‚þr¡¢¢}ôrrr¼n7ôàêv¡ºº---ˆŒŒì7¹QÑÑÈÌÌÔ]g{ËÃ?ŒÈÈH8<÷Üsp:¼³ìíròôôt|ñÅxíµ×€×é9sç owÁ´|ùrɳmmm¨®®æe×ÞÞŽ?¼ùTWWcíÚµ˜4i¿7776› ~~~X¼x1^ýuTWWÃÏÏ/¼ðþùÏâèÑ£ÈÉÉÁ²eË… ò6¿­­Ë²Ùlü·7n„ÑhäíK'kïíí튲Î;ç&ëÂ… \'¬ï ·“É„ßþö·Š²SSS‘˜øÝ`A,kíÚµ˜5k–D–ÕjUÔ¯RÝ9r¤äYbû•ëäïÿ;.\¸€³gÏJt/¾ø"§™îììllܸ»víRÔQNNþðæœœŒÈÈHdffâÅ_t ···s;Y»v-¸éDÞæé‘ÅüÛ!Z©¬¬V+/^ ???^w˜<•¥Ü†´t²k×.|úé§šö0"@’/5›cu‡Ùóûï¿X²d Î;‹ÅâVv¬ì)Tˆ¸ ÄÒVù°òòr·%¢. V«U0 !""B°ÙlBrr²0fÌþ¬ææfáСCÁb±V«UF-œ©=#t9º„ÊÊJÁb±pYƒA°Z­‚Õjòòòxš.6\²²²ƒÁ *K¡££C˜9s&¿•åeyyyBDD„d œÅb‡š››½šNîîîl6›!YÂxâÄ ¯eÉ—?Ê—^²ï)))Bxx¸âò=‹Å"TVVzµ¼W¼ÌPiy¤|)`rr²`³Ù›Í&dee©.ç§[iytjjªDVrr²Ûr3±N²²²ø½¬ åK¯åéÖ’uâÄ nÇb›“/Ŕצ#fs~~~nK[™=_l¸(±¹'N6›M¨¯¯\.—bº“““…3µg„Ñ£GKêÝņ‹’e³Lßâ|‰ó¼bÅ U;ayÿVËN´d1›«¬¬äþA¾´Õd2 )))šËºµÊ’ùšˆˆ7ˆí—éDË~¡²lYIŸJË©ÙoW¬X!¬X±ÂíYÌ.Ä6E í¥­òz'÷™]Ž.î›l6›ÐÜÜ,¸\.¡¾¾žg´··KîµÙlÂņ‹’ü8qB=z´›¿eí£¹¹YS–¸’ôÈbŸîîî>•Uxx¸›ÿèm¸ŠR–W 5P*;¹Ÿ[±b…¢o²Ùln¾Ün·«ú =~Mnƒâ>–Ü÷˜L&aæÌ™BGG‡bM.[)LA)J²º]¼ wósÌwww{Õ&Éu¢¦#ÖÏ‘·Q[¶láöÜåèÊËË5e©õƒ”Bªäv¡¤_%<ÉR³9-;Ð’­¤_æk<édÅŠšö›••Åý‡¼½óÆæ¬V«íVvì{_|71ˆ—¶êaÜØq8vìâããqúôiÔÖÖbêÔ©øì³ÏPPPÀ—ã­Y³0™L(--EPP***€{Fll,JKK‘˜˜ˆÓ§O#22ÇŽ‡÷Vêç?û9ÊËË©*kÚ´i äKÔØu%[øî›yðì³Ïâ?ÿó?G}©©©Ø³gn466bêÔ©no¤1oÞ<¯déeß¾}øç?ÿ‰´´4·%¥¥¥7n***ÌJJJ0uêTèó†)bY­­­øéOªzï† °yófèóÒ¬¬,þf­èƒ"˜'™½–ÁlnáÂ…8{ö¬ä³çÀÀ@‰Í%&&ÂÇÇãÆCyy¹âf,%%%¸çî{ø2LVï¼Y›^Ý„ÿøÿP´“¢Š`6›57ÞÑ+‹Ùîä<ûì³xê©§z]^Ì×°rï­Nú“M¯nâ³GJv!öcÄ­MÕ—Ux衇ø÷¹sçbÛ¶mHLLDcc#æÎËÛ‚wÞyÏ>û¬ÛJŒ£GöîÝ‹gžy†×±dícÍš5(**R•%n£äè‘ÅóWU…ñãÇ÷Z?ùùùàæ?¬N«ñØcR_þÊ+¯`Þ¼yÒÇRò¡™™™7Äç1{¾|ù2Þÿ}LŸ.ñsÌWUU XöíÛ?£Ÿ[ÅìùðáÃäxþ—+W® 11‘‡,iÙ÷·ß~«j¿6l@qq±Ä·&7dÍÔºuë°nÝ:£¬¬ ééé0  â;¸†‡‡£¤¤“Ì“ðøãóõîv»0ض€€>èîî†D“Ä—«²ûÎ;‡'Ÿ|‹- /¼ ‘Å?K £Ÿ‘Ç`=»0²Î¼8Ý^Ì+j._¾Ü§AÖÚµkñÆo -- o¼ñ_jÁ:ªjy R\VwéÒ%¤¥¥¹}.]ºäuÚfÏž’’”””`õêÕ½ÎãË/¿Œ¼¼<´´´ ¥¥yyyxùå—Uï_½z5nxxxŸìÛápðŽÚêU«ñÁ¸ÝÃlß¾}X·nª¾}}}Ýþ.®+F?#Ìf3ÊËË1zôh´´´ ¦¦ .DMM¢~8À—öÊëcùòåHKKãq–ùùùýŒP·“@i=󄦬ÿµ9y–Ô;£±O ækX¹«éD øóŸÿŒŒŒ 9rDóÞÜÜ\^WΞ=‹„„>|=:¡®oôK m"""pàÀ8N´´´ ¨¨عs'î¼óNØívt^íÄÊ•+ñúë¯cäȑܗ-[¶ ÇŽãþxÞ¼yxçwxýûÛˆˆ@çÕN,^¼EEE¸óÎ;Ue€)Ä$¹Îü­¸í€õë×cóæÍüúæÍ›ñöÛo£¥¥Ë–-ãËõÂ|\kkkO} @kk«ªßë+8|ø°¤­ûòòr„Œ ñìçFhôŒßõ._¾ìJ#öž|‹b¿&÷=⾊R---뻯}¿5kÖÀét¢¬¬ qqqŠ:iiiQ]¦2&åååŠí´Ø‡¾üòËÈÏÏçv‘––†•+Wò~ŽÜ‡ææærîîî†Åbá²¼¤ªÙIYY,K¿Èb6—žžŽ²²2Åpy»í-GŽáuÊ“NFhÚ/ó_ýñ€í dÞè—nØŒäm·Ý†ÔÔTLŸ®èHFŒÁã'L˜Ðïq"žÒÅ:ûƒ… . ²²²_d™ÍfX­V`Û¶mŠoþœN'***€S§Né’[TT§Ó ???Ì;·×úgåþñÇ÷:‘‘‘’ÁvTT”f<ФI“øsGŒÑ'ýFGGóNYQQ¢££ñïÿþï’p???ÄÅÅaóæÍ’^”¸zõ*Ž?Îí@éÆôéÓ1gÎØl6tww£°°;[óÇõ?©©©˜8q"NNVžDL¬{pzmm-· 5ýõÆN€ž8禦&L:•¿œÐ+«®®ŽëãêÕ«}®Ì×Ì™3‡Ç÷öÅÄÆÆ¢¸¸XW£yíÚ5¾Úá¶ÛnÓÜü‰¸õ©¬¬D]]÷¡ì˜—¸¸8øùùñû|}}1-n|ðA=3×¥¥¥¨®®†Õj•øP§ÓÉ}=kG™,±¿e¸º](**R´_±,±ï º?€š?f~©¸¸sæÌñJOv»Ým3"ApðàAþ2¸7$$$`òäɨ¬¬Drr2¯›>>>˜6m>úè#Í¾ŠœŽŽ¾Ÿ€¸ìbccoš%&&¢¬¬ŒÞ“““%±œ kë´úVÌö«««5Û;¥vZìCY{•’’‚ÂÂB‚€ððp?~1±1_ƹùcye0””$i7bbbõ9bÄÄÅÅyul“–,qÿ888Xâôö{¼EI'z±Z­¸ï¾ûpüøqí6kÿ;;;át:ÍW²~T}}½¢]ߓ䫯¾zÓ ÜápÀétJf0¦L™‚½{÷º­è훨$;;üãûMžÁ`€ÉdRœuñõõ…ŸŸ¯¸ƒAÓ…„„àÀˆŠŠBuu5¦L™Âƒ¿å¸\.~¢xC¡[‰ŒŒ ¬ZµŠ;ò×^{ |ðâàˆé@m†988—/_æË‘ØŽ¹Üž8=öÌv}ëèè€ÙlÆ’%KššŠ·ÞzËíÍ![ W__øøx¾1c×®]8xð _×ÙىΫ’—>jv¢g&oÿþýؾ};Ž;Æg^õØœÉdBvv6_:ú(¢££ù[ðŽŽŽ^ép8ø&ªeÀÒîãë£9;"®\¹Òcsê®Î«|YšZº].:;;=ʺrå ××÷õŒÌÇ{ >>>˜1c†ª={6¯¿l³‰¾œ·«Å‘#G””$©¬~˜mõWß’’’PWW‡E‹)Ö ¦oO{ÔÖÖJvÏd~­¼¼Üë´effòU:iii^ÏâŠý\NN—µk×.Íõ¬¿ÆÚ•¾Ì*‰< (++Ãôxi_õXB æ3Ùÿå+x"##±wï^ÄÇÇ£±±‘·¥gjÏÀl6«úc___î·Ä¾Èn·#--ûv“ɤª?±Ègç4íùj'o§½•ÕÙÙ‰ŽŽŽ~ó³gÏÆ[o½…øøxÅÕQÞÚïüùóæñÞ_þò—\ßò>1ø¹å·ÌËË“4Œj­øøø~›ì6n܈cåÇúM^hh(êêê$;k2bccQUUÅ; )))ª1wÞRYYÉ;Î………ÈÝ‘û½®p¹;rQXX¨y]\î/½ô?òv{¶çÞ²tÙRþì””dfdê²%›ò„^›+))ÁÆù÷cåǰtéÒV^zì7((åååHIIÑ]- ß«N@^^Ìf3Ìf34ýšÙlv+K9 \^Þî<õÎAF&Ìf³fº+++uÉJJJò(ëVçXù1ÔÕÕIêøÍ$%%uuunŸÞÔñL£žºÖ_œ>}šÛósÏ=×/~íûBaa!êêê¸N”Úoå±²PkG™?®««ãíÙŒøоˆùãØØXTVVºù"“É„ªª*]ö&¶“õë×ëpedºéD¯¬””˜ÍfÞFõL7r½°°P³_D ndF2++ ~ø!ÿ¾nÝ:<øàƒ’£,.]º„'žx‚o,röìY<ÏfV€žØ·´´4,]º .„¯¯/Z[[ŒÂÂB¾>: ûöíÞ={Íe%&&òe9âëLûíÎ;%1#™™°Ûí’;vàoû€žó?úè#ìØ±CUGŽÁâÅ‹‘»#Ws6 $²ÄñÞÊÊÊÊ’,ݱcNŸ>­[·båÊ•(++ãúÞ¹s'BBB$ ¯¯¯ä»ÅbAYYRRR$:8{ö,Ö®]‹Å‹—-.w’øˆo.|ƒ§Ÿ~ÚcìÅòåË%3Ob;ae‡µëÖ*–ÕºuëpÛm·é.+<¶‚ÙEww7—yäÈÉæ×®]SÔ¯ÜYº™ìM›6iÎ|‹ã€ž£iijé]]]à»8Ræ·V›6mBzz:–.]ÊÛJÖnhÙ‰žUnr}è±9ûfÍ/ém<¦§Á¤ÿÁú™jöËâçÏŸóçÏkÚ‰¼ŸÉúT½ñkVí/3¿&ï(QSSƒßüæ7|<¢¶ZoåÊ•°Ùl SM·¸¯¢&K<þÐ’uË$i졞b똢Å;p*Å[úøø &&³fÍ’^:iÒ$¾ÆZé:söÓâ¦)œ§|øûûóë“&M‚¯æÎÛ«Íq䲌F£.z’%'""‚šy(Jw\\œ›Saqvâ|Í;³fÍ’Ä*É–—•¯¯//Oñ³&Mš¤šf=1˜Þ–#11Q±B‹Ó©W¿rSJwpp°f\®¸Üå1|'Nt“ÉÒÉU½éŽŒŒtË7‹;xðÁù@\¯x²¹°°0øøúè’%FlòA¤œÙ³g+þ]K'ZuƒåIÍ~ňóÀÒ©e'Çw“£7zt¢W¿žlN)ÁÁÁ’²T³o-Y¬ÞiɺÕ8yò¤$¬²²‚ H–utt ¢¢‚Ÿ±×ÚÚÊc„-KφT¾>ü »WkvX³®Æ7ß|ãQ–8f]KÖ b Î‘$‚ :Gò;fΜ)˜L&ÉgÇŽ’{***ÜîaŸŠŠ ɽ;vìp»gæÌ™ŠÏ^´h‘¦,ùu%Yõõõªicç(ÛívÅgÉ«–N=é–ëH¯,%ý/Z´H°Ûí‚Åbqˇ<Ïò²ÒÒ Ó¯\¶Zºåe)~–RÙh}vìØÑ§²ò”no>‹-Ò•úúz‰êëëÝt-.w=ö«&ÛÛX'̆´ê†·e'Ö‘›“ËÛ«^x“çÞØ¯ø:Ó™šÍÉu ·ƒÞø95x£_O6§ä[´|‘8j²ÄúÖë×nö9’Ak]”ˆììläææzµS#AA V؆"%%%½ÞŽ-“VÛ,GŒxƒ!ñl°xVY¼Y‘œ€€É‘LâM—ƒAñxñFIJ²äוd‰7eR#((HñYƒAò[µtêI7›óV–’þÙFTò8]6»ãi#*5ˆõ«,N·¼,Åv¡T6š+ †á7̯×eå)ÝÞ ÞèK+p:š›ˆ‰ë†ûU“í-âg1ÒªÞ–|345YZuCi9ª·vÓŸö+¾.ßXM)]bÈ7“S*;=~Nm‰®ÞÍå<Ùœ’oÑòE§Ž.‡GYLßzýZ“““ƒíÛ·ëï AAŽžN<ÎNsÀ ÑÉtëzˆ­÷tulô¤MëLT¯;´ý(KKÿjò<åYNô¤U«,õ”MoŸ«%»¿ãw=åÓ=kÕ¾Êî« ©ÙAoÊ®¯õ¬¯vÓßö+×™·eÕŸ~Îýzãõøv£ŸQ×™ÐCms®ïG` AAAÑoÜr3’nËCt.Eñ´,@묶¡¤“¾ž9§W–\L¿òe[jËäe§gÙ€Þ%€t‰·:‘/ËPJ'C,»¿ÏôÓsŸÚ™~jéÔS7úÓNú*Kž­å8z—ªõV¿½µ9µtÊëÊÍZæBA¡Ä-7#ùÎ;ï`ÆŒüóÎÞwÜîiljDrr2¿'99Y1–àéuOó{›o ›e, IDAT¨åãÊ•+\'O¯{ºO²äúë÷Ë/¿””øYZe·`Á̘1 ,PûËþòË/µu²·÷:Û…Z:å²õê—Ù§–ýÊŸ¥f¿rèI§øÙJ²ûÓNúC–<¬ÜŲåù(ýöÆæ´Ò)¯+ , ‹ ‚ ˆAÃ-3#ép8ðÎ;ï   MMMxá…°aüÿþû¾;sªüøq”ãØ±cX½z5€ž„¶oߎ… ",, ‡yyyˆŒŒäçòü¿wÿî¹÷^Ä÷rC†›I[[ª««@5ðZTWW£¥¥Eõœ½²6› ÕÕÕ0™L|fgìØ±X¾|9Ö¯_‡Ã!y–XvVV¢££ùµsçÎñkjûC9~§ úööö^ëäá‡Æ„ ø¹¨â-òY:ÇŒƒ^x^é—¥‡¥M¾ý¾ö,±~µt"–•žžŽ÷ߟoÂt ~vtt4/^ ?£ß€ØIȒ烕»X¶<¥ßÞØœŸÑ‹/Fvv6?´›=K,;--M×± !Çn·ãwÞ‘œ}Ë#SPP 9šD̲eË$Gåç磭­ þþþXºti¿ÄžÝ Xžµòa·Û±{÷nÀ½÷ݧÚP“ÅúLÿþþþxì±Ç,‘ £F’ôU>ùßsúÒÓÓ%GĈý“­u|–X–¼,ååΞ%O·ø·}Õ‰^ýŠÓíÉ^•Ò-Ö§–Nz£_½e§–îisje'O·ÍfÃþýûuëD¯~o¤Í7[åø»Ý.X­VO§ü;ÛÖ€@(//ÊËË%ßÕ¶„·Z­Bvv¶ÐÝÝ-Øl6¡»»{Èlq¿eËžG›Í¦¹ >Í­ìõÈo‹@0™L’m˜;::„™3g ~~~Brr²`³Ù›Í&dee ƒA°Z­Âņ‹Yâ²TÛÒY©,µ¶7î‹N.6\¬V«`0„¬¬,ž‡ˆˆÁd2 )))½Ò¯ ‚ÍfãiËÎÎV½éD®_5Èeååå áĉ‚ÍfNœ8!ÂÃÃ…+V ¨ô—¬¼¼<Áb±„C‡ 6›M8S{F=z´b>J¿}±¹+VáááÂèÑ£…3µg›Í&:tH X,!//Î긎ÿ¸Øl6Ád2 ááá‚ÕjåuE^ DDDV«•˜?fí_rr²`µZ…ûî»O¨­­º]C²üÕÚ¨Þø =í»Îê¿Xö˜1c$톼¯ÒªÇ÷¨õƒ¸µËâtoÙ²eÀô+n£´ìÕb±•••néÖê³öU¿â>€V?SÞy«“ÞèWnsârË–÷Uô´g½Ñï´9âÆÿA»¶zICCÂÂÂ`³Ù0aÂRH/ ÄÑ£G‘––†‚‚É[/«Õ:$Ž˜ ŠS§N!** Ï?ÿ<Ÿ€-[¶ðÙîÁÌ’%Kðãÿaaa˜6mšäÚ{ï½×ëãnF>~þóŸÃl6K£€¿þõ¯C"[·nÅñãÇ;"îà7™L(//r»¸ƒV§Ù‘'---ª÷–••)¶oòö¯?ŽOù¾µwj¼ð XµjÕMõ=jX,–›Ò.‹Û(5n–÷ØÊ­z7mî·¿ýíMé« f›#¼ç–‰‘ DéßK‘••…Ó§O#** §OŸFVVJÿ^구ªª*äææ"**ŠËÚ°a–/_›Í†ÐÐP²ž>²sçN:tˆïMYÝl˜Í1Nœ8eË– ™ô‡††Âf³!""›Í†˜Ø˜!Wÿ«ªªœœ =z4ÎÔžRùˆ‰Á™Ú3=z4 99UUU´ÁÑç:^UUåU]HHH@TTæÍ›§û7'OžÄ¬Y³<ž]ø}oïZZZ¸~E»!ö=óçÏGTTâããÑÒÒ‚C‡ÝÔvYÜFñ>YQQÑ ð‘ò~gTT6lØ€ˆˆˆ›Þíܹ'NœÔé¡`sC±/HÉ[§Ó‰âCÅøç?ÿ‰<õÔS AEEŠ{%Ë`0`üøñHIIÁœ9sP]] AÐÜÜŒcÇŽá½÷ޣƲ Á˜1cø÷Q£F!tÜР‡Ž ÅÈ‘#%ž8`Ð;L˜0Æõ,N6l&L˜ ë¬£Á«³þþþßåküÐʇÑψ ã'ð_ýýý1~üø!»[41xêøøñãuÕ…èèhdggcÕªU°X,øøã‘ »ÝFvv6öïßììläææÂn·cß¾}(++s‹©&¤í]ll,6mÚ„ÖÖVTWW£µµÙÙÙ˜2eÊM]u`ô3Âl6ã•W^A`` ª««ñÕW_aÓ¦Mˆ½©í2k£Ö¯_Õ«W£ººÕÕÕX½z5222nº Фädlذ§íþûïÇúõëa6›oj‚)S¦ ;;[Ñænf_EËæ’““‡\_’·‡¯¼ò 0vìX¬Zµ cÇŽÅðÊ+¯ôJæý÷ß9sæÀjµÂ`0`̘1 Enn.¾þúkÞ¸½ãÒ¥KhnnæßÛÚÚÐÐØ0¤òÐÐØ Ù°¥¡¡aHÙ…ËåB}}=®_¿¸~ý:êëëáp:†T9‚€‹/ò }—Ë…ú‹C+§õëárõlÄsíÚ5\¼xQu£‚è‹…‡‡K– †……!!!«V­ÂªU«ðÀ ¥¥ÿõ_ÿŨ ªU«ð—¿üYYYxúé§át:ñÚk¯áƒ>ÀO~òø £¤&L@ff&ÆŽ ¼¯2–®ýŒxòÉ'ùê”   dffšž%K–Hv®^°`êæB7šøéÓñ‹_ü‚à°dÉ’Añ"“ÕÙ¡ds´Lž’· O<ñrrrpêÔ)X,¼ð 8uêN:… Hv¾"z§_qLÛóÏ?ćTH”ÄGN›6mHÙ‹yª­­ÔÖÖ",, '+O©r¸rå ¢££Q\ܳúàòå˸#âŽ!•“•'qGĸ|ù2 ¸¸ÑÑÑ´ú{ï½÷°uëV~mëÖ­’ïZí´Ùl<ž*>>ùùùnyfñ8ju…Õ³¨¨(:`öåö,y:£¢¢4cáNž<©KÖ¼yó<Ê"'Ì¿±zÆêÝgŸ}†¤¤$œX#9f̾›¤Ï Ï‡Ãé@Þî<”••áüùó0™L˜0~‚‚‚ðí·ßò†_~nžÓÉdè9[SélX·<©œ]*GÏ9Äõkt-LOOGTt4é×»Ó§O{úÛ·oÇã?~Ó–‹û*YYYn6—”œ|ÓÎcÔ²9y{çmž¿ùæ >\Õ.˜MÀ½÷Þ«Yïêëë%gkª•e~~>ÚÛÛ1räHÕt?~Ÿ|ò‰¦,Ö'èêêÒ”EÉH2…×ÔÔ`ûöí;v,~úÓŸJ "~útLš4ÅÅÅøàƒ3fÌÀSO=¥¹ó×’%KŸŸÏã-Kÿ^JÁÀ½ ©© »víÂäÉ“@2x5j¬V+`ïÞ½˜8qâ Hþõ¯Eii)O«x³–/ؾ};ýGå@rÿþý8wîσ¯ÿ—ýÍåraÏž=xüñÇí@Ržv ³Á`€ÕjEKKˠ·ÓáÄž={àr¹`µZa2™øÆF£‘çëôéÓp:Ü—‰ë +;9bhmŸ//w±=Ë sK§’/Ö#‹Õ-YÄõk]]]¸ûî»ùKƒÁ‹Åâfc̯\¹«ÕŠöövÔ××ãÊ•+°X,Ї¬_ رcŠ‹‹a2™ð‹_ü&L@}}½äø¨‰“&Þð~Å¥K—PYY‰§Ÿ~@Oì!;&æw¿û^{í5DDDàÇ?þ1BCCùf`7jyöìY~DŬY³øÿKKKQPP€gžy‰?J¼áÛ¸\.444ॗ^Bmm-¬V+O›Á`ÀðôÓOcêÔ©0’‰‰msTmnÒ ´¹àË/¿ì•Íåç磠 &“ .T´ »ÝÎË*;;[³Ÿùí·ßò{ï½÷^Õä+¯¼‚êêjX­VÕÁß'Ÿ|âQ–£ËgŸ}---š²h 9€,Y²Ä£âCÇ…âèÑ£"›Ð&&&Fõl ¡¢_­8¢ƒ‰rPK';k¨ –vŽÖ`G+}­+Þè@o¹ë‰¡ÓJ÷P¬+ߨÙnÞœë+?¯Îd2¡®®ŽÎ=Áâ·µÎízöØ»wï ÷¿O<ñ„æYƒÀw±ó7úüìÝ»w{<çÅ×——ßÐÏlO<òÈ#HMMÅÈæ†€Í4$‚ Bi›Í¢yPŸí–³sçNlÛ¶ ƒÎ=UlWUUñåÛƒãÆð݉Þê»?aeÇ`v!O7KïdÙ²eHOOçßÅ3Ýjé¾Qh•Vºo†Í‰ËîV·9=¾H¬OG xò™ŒÒ¿—ÂÕíÒÔ§Ø.Ôd‰up3ʆ’„"“&Mâq/jÍÇ×sçÎ…ÝnG\\\Ÿd1˜œààà>WˆÄÄDDFF",,LUVpp0O›'ç0qâÄ~Ó‰¼‘e4yÚ&NœèQ'ZúëDKVçãfÙœJ¿ýas1ýŒšo÷=]WãF.Ûj°3n}àÿž‘x3Q+;­tß(‚‚‚Tg·o¶Íi•VºÉæÖæôØ…7:Ðëõ,Öcƒ¡Þ ŠdçÕNÕ ²r]¹r‚ ôë[Q—Ë…ÎÎ΃n5ø,ÝZo—¼‰!’ëÎÜ9’ N]î›!ìÙ³‡ç™Æ:ü#ÐÑчz=ô¿ÖÑÑÁõ-ÏÇš5køÿF¸éS‹ÀÀ@8N¾iƒø,PW·4}¼£>i"_>ÒyµSñ®“9ßéäÊ•+ª÷Šßš±{`0Twd3ðóós»¾gÏ^6Zió÷÷çùp8’{ŲõèäöÛoÇ[o½å–oÒ­×NÄ<ôÐCxøá‡%õPEx’%¶_yYÂyÝ©hϬ¬Hlnøðáºt"Ö¯šý2›c2´ô+¯;W;y½Rò‘ògÑlAô/ÁÁÁ0™L|†P­cg2™¸ïè‹,o>|8®¯¯¯ê}ìyZ/²Ä²ú#Y¬ÿ¢_o`ÏcrZ¿is}Õ¯7øúúz¥½ú½‘6GÜ„‚Îíò²³³‘››«k-õâÅ‹ùv¾rã+//ÁdGG’““y°kÅG8q‚wþ~÷»ßáÉ'Ÿì÷´Ïš5‹ïr¨DUU•Wo(äú—§ûÍ7ßijÏ>«Z6â<Àܹs±mÛ6ÄÇÇ£±±ÑíyLßjùÐ’­•ç?ÿùÏnéÔbîܹ|`¢fƒJ:ñ¤9‡Æ„ ­*û'?ù‰ä:ÓÁŠ+4Ó%Ö§RY)Éî/ôÈö¦,åõðâÅ‹HLLä6¤W–VYy²“ÇóA\_:%½­žìUþ[­gõ§_#¾k7Ìf3JJJz_•––74ŠèÄ/]Õú%â`Z/“õÈòñ ߀€Õ GØ‹(öÂד,o_L{ԉѨºÂ¢?õëm½öôò­?õ; 6×Gýzƒøå¥èÕï´9¢ïäää`ûöíºcgdFrýúõx衇øfìL˜¥K—báÂ…X¾|¹®-ƽ¥¥¥…ú‹ˆˆ”””è™Ý¶mÛ†={öàµ×^:tcÆŒAss3yä,[¶ ÷ÝwŸäà{Oú_¸p!yäþ ²²[·nÅÊ•+QVV†‘#Gâ½÷ÞÃüùóqþüyÉï»»»¹óóó1räH,\¸555øÕ¯~… ð{÷íÛÇw¿•çC^î›6mBDD8€””Øív$$$àÕW_åòXžA@JJ _òÈÒŽüü|ÉL“e·Û¹»ÝÎó ×'\»vÍÍn‚ƒƒQXX¨([œÎˆˆ‡¹]ìÛ·ç™É6…˜PRRâ¦_¥º%y–Ø~¯]»&ÉÇ™3g°lÙ2~fâ˜1cø½ëÖ­lذÁ£~:„ÇKl.&&‚ ð牻nÝ:”••©ÚÉÚµkñÐCqý®]»‹/–Üo 1aïÞ½X³f¦,f7LG]]]neŽ÷Þ{¦æÍ›‹Å"É3ÓÁš5k0}út‰Í±ßêÑIcc£¦ýÚív¸åKÉæÖ®]ËëÎüùóQTT„ŒŒ ìܹëׯ÷¨_¹>‰¡ÇÊ•+%ñIŒ°°0]õ†K—.aÍš5| ¹Þv﮾üò˘éM‡;3#Sâ×Å#wG®W{¹þåéÎÊÊBEE…jÙˆóÌ|Ôý÷ß'žxBñyqqqX»n­f>ÔX²d ï')¥«·²”t¿ùÍo+Ö‘šýjÁt°xñbE0ýê•­Uî555ªù肃ƒ±yóf„„„àÒ¥K’r—×aq½SÒ‰¸ÊÓ­esJeÓyµS¢_¦£×^}MÕnvî܉>ú¨Og6ö¥nè•íÉ.Â÷Þ1 ÉÈÈHI削Šâo<ˆ‡~§'+¿;èÖh4"&&'Ož„ÃáàßÙÛvNÃ××±±±ðññAGG***põêUÀÕ«Wqüøq>ø¯o®¯¯çç³)Éboe*++ÑÝÝ­™O%Y ‹Å¢û QLL &MšÄ¿ÇÆÆòmš ¸¸Ø«©üÈÈHɶûUUUp¹zÞZ•––òYÛéÓ§cĈš²XÙ±Íf³äÍý¿þõ/®÷˜˜˜ÍfÉoƒƒƒ‘’’‚ÂÂB¤§§ãî»ïF\\üüü·Ývâââðå—_bìØ±’ÁzXXߥsĈˆ‹‹ãºí¼Ú‰ÔÔTÅY>“Ʉٳg#>>!!!\ŸjøùùIdwttHÒ)Ÿ±`ß?þøcøùùaîܹ<F?£D¿N§ˆ‹‹ã:e:bÛ^³g©‹ÚÚZ¾7³ƃ>È)¹~+++1~üx®ßØØXœ9sF"*++ù òÁäy¼í¶Û4Óf6›¹ öÕ_^ÇýŒ˜6mšGYbý¨1bÄž¶ & 88Ø-Ï~~~(++“|ÿöäÉ“›cú뤽½]Ó~[[[QYY‰ØØXI¾äuè‰õdi1bΟ?ââbìØ±C—~åú$†&555|V=99ß|ó >ÿüs?~Ü«vC/‡EEEýú‚õFräÈ´´´À`0 %%¾¾¾hmmŇ~ˆ'žxBâ³õÐÚÚÊ_Ú°Ù䈈TVVâÃ?Ä_|™3g¢°°‚ ð£làÂ… |·IVvååå(((@BB‚¤9rD5III’6½¨¨wÜq&NœÈý{bb"¿^QQ‚‚‰ØË&–NÖÞ‰_B*Éb}&KüâJ,‹é -- ]]]ÿ#–mµZ%y±~zúTÝ.nƒbÙrýÊ놿¿¿äY&“ sçÎU­WŸ}öÞÿ}‰ŽÔô«”î#GŽ %%ÿøÇ?TmnáÂ…ˆå3bEEEp:ÇñãǃKÍ=Ç[ð—ár(Ád‰uòÍ7߸Ù\UU1­¤_±ŽÄú‹ŽŽæ:ÈÈÈÀ… Üô+¶!-üãÿÀÈ‘#yžµlŽåK®O±NÄu§¦¦555Ü^}||ÜÊÎl6£¸¸˜ë€¸‰:Ù²e‹`µZõÞ.”—— Byy¹ä{vv¶P__/˜L&þ7‹Å"Øívá¾ûîŒF#Ö•Î+BYY™@0™L‚Éd‚ƒƒ“É$Ô×× ÝÝÝBEE…D–øÞ;vð4utt›6mÒ”%‚`·Û‹Å¯‹Ó-fÇŽÂèÑ£ùu???žŽ²²2áJçÁý29gjÏv»]8S{F Œ=ZX´h‘à 6›M¢¦O«Õ*ù>sæL®»Ý.);“É$TTT¸•ÙÙÙ’rgúdzIMM•|Ÿ7ožP__/X,‰]Ô××KäŠÓÍÒ)&55U˜7ož`·Û»Ý.Ì›7OHMMUÕɦM›ø½‹…çW,[žn%˜M‰õ»iÓ&¡££C’nµº Ö‘Åb ƒ¤ž1»`:Û³¹>”ôk2™Üô+·9qݨ¨¨È\´h‘ªŒ=Zرc‡D¿Zv¢%‹=[\§Å²¬V«àçç'Ìœ9S5Ïr“g¾FÉæÄök³Ù<ÊÛMjjªÛoÅ:Ù²e‹›=ËËÒa·Û¹ßÓSïˆÞÁÊ’ÕÃÞššªê<ùz›Íææ3»»»y½¶Ûí¼‘Aèêê’Ük·Û¹ïAèrt gjÏHü»µwŒ+W4e ‚ ¸\.·{ôÊb—Ëåµ~åþYɇö¦o¢Ç_(ùcµ²“û9q»-·Ífººº$íDvv¶ª¿PÒ§6JÜÇ’û???îõøPyßO-JeÓÝÝÍÓ,,Z´HÑ»\.7ýÊŸ¥UÏÔtÄú9ò6jË–-Üž»»»…òòrE¬dsò6IlOJv¡×^åý3yŸJÍæ´ì@Þ.Ëu ¤_=:Y´h‘¤/ÒåèrëcÉûAZu˜ù=ùxC­n°ï}ñÝ„z?Þ›ñÞMÛ[644uuu°X,zÜ6›ÍÈÏÏÇK/½ÄïËÌÈDJJ L&ªªªPWW‡ÂÂB´´´ ::šÏTUUqY‹uuu¨««ÃÒeK¹¬¤¤$¬_¿‹EUгּ¼¼œ_Wcé²¥8V~Œ߸q#ªªª`2™’’‚ÌŒÌ^éfFü ˜Íf̈Ÿ8V~ ¹;r¤JJJóÈô-že Ígœ™]ôf›ñÂÂB˜Íf˜ÍfÍr€çž{Žß+Ÿíö†¤¤$<÷Üsn²“’’¼’ÃlNü†X<»Ít"¶9f'ñññª›¼0ý²Ù5ýΈŸÁëF]][¹çîÈUµ“cåÇ$õÌZ²˜ÍÅÆÆJüƒ˜7òeŽùšþ°¹þ†ù"³Ù¬h Ä­Oee%÷Mf³™™èèè@||<ÿÎÈËË“Ük6›%¾'owfÄÏàõ_ì#Y{'nkµd=gçÉïÑ+‹}¾嘻#W³ÝÎËËóºèKKîCj¿ %{fmPaa¡›N˜?H»())Ql£˜=Ëí÷û ó5žt’»#WÒÉÛ×§~Pee¥f_†¼Üã?Xì‹A‹ˆˆ€Á`@PPÀeqK“Ì“ðøããÇ?þ1ð8$“ÉÄ·Îe1l---èîî†D“­ÔIs88wîž|òI>½.–%îØßíú¨„Ñψ Àïžc4ùïä1{ÞðÎ;ïHâ«V¯ZíUŒ¤œµk×bΜ9HKKÃo¼>ø€Ç5ªæ1((H1ØZÀعs§×i›={66lØÀãáÔÊÎ/¿ü2ÒÒÒ$±‡wß}·êý«W¯–Ä«ÉãD½éø;NÉßœN§Û22fûûöíãË®•ô­´SšX'F?#Ìf3ÊËËyº[[[y ŸnÜ8óŸ‘‘áõ> Ìϱv›ùT¥R_ ÀáÇñöÛoó¶Rî?<[¨»ÙÚÚŠåË—£®®Žÿmß¾};v¬ª¿ðä[”÷±ä¾GÜW¹}?§Ó‰²²2ÄÅÅ)îTÝÒÒû>zì°˜v___g§Ô^äææâСC¼ïg±XpøðaÍ>ß@³oß>ìÙ³GÓæÒÓÓ«ø¢ÑS¿Ç¬í¬©©ñ¨“€¼ÿ{ùòeÉ^jý OvÂ6KOOÇ< Z7€žsËËˤþƒp ôÄ-¥¦¦bzütE+yºQçÜ£K°/ IDAT°t±NÜ` ¯1’rÌf3¬V+ °mÛ6¾¾^^é+**xVlÝ;‹ì­þ§ÇOÇœ9s0qâD;ãÕàD).W+[¯ÖWX\.‹•Ãâ/7oÞì¶©Šš, '&GéÆôé=:³Ùl<¶…t+Ž3eúMMMuÓ¯q488AAA’8\fÏÓâ¦ñ8hW·Ë-Þè‰×v:Ü׳vT+Ö[_¥Ô.0Ybߟ|ò‰Wþ˜ù¥ââbÌ™3gPè?!!“'OFee%’““yÝôññÁ´iÓðÑGiöUähíç ‹?ôÇßQVV&‰³ïÉ 6Ø­¨¨€ÓéDBBB¯w gmVߊÙ~uuµb{çMiA·è©?äæåm‹oUj7ÄùÉÉÉ^¯œ‘ï—¡Ö?ï ÆS¿§®®ŽÏ4ê±%èÅjµâ¾ûîÓì©!ÞC­nˆ}ñ=H¾úê«7­ÀœN§äÔ”)S°wï^Ig­££ã¦¾‰hØ#‘é—‹"Ö¯˜]»vñ—aaa\–¸\ÕìD϶Þû÷ïÇöíÛqìØ1>óªÇæL&²³³ùÌÇèÑ£=¾T™={¶®£ôì’©Ç~žc;Z[[5ߪgffâÑGå˼º»»ÑÑÑÑ«A£Ãáàg¬jm­®wëúþ<â@ïÙ»âsg¿¯çÇ{ >>>˜1c†ªÍΞ=›×_¶*e –9rD²­?Ïë—¾¬Ý>~ü8âãã‘€òòò^÷/ØìkRRêêê°hÑ"źÁôÍꜵµµ’v€ùµòòrI>víÚ…ƒòr½rå üŒ~nþbõêÕz6bAoÙºu+rrr¸,æë=ÙAZZüüü°yóæ^&Äž„„”••az¼´¬Xÿõ'¼ùæ?"##±wï^~¤kKÏÔž‘l(÷Ǿ¾¾n²€ž•eiiiÜ·›L&Uý‰ó‘™™‰]»vaêÔ©óÐyµ“·ÓJ6'Ÿé“ü¶³ç¼l½þ ''»wï†ÉdÂîÝ»1~üxÉmöìÙxë­·¯yޤ2331þ|> ôT}}}±páBÕ~;1xñ¹Õ3¨'Aïšð¡ŒV‹1e†”””~‹Ÿðq«Àb =-³P‹_ÇݾôÒK’·šy»6®F 5;éMl¡^›+))ÁÆù÷cåǰtéÒ–g=ö«ߪV- {"ŽS‹-R‹«SBû&u‘tþ7öM+Ýâ?-YIIIeÝê+?†ººº>Åüö')))|ñg0Äß,X ŸÙlv‹‡ïK[ºtéR^îIIIšuåfÚA_öI(,,D]]]¿ì¡ækäþC¼Ç…V ŸØÇÆÆ*Êbqû¯ž™‘馱ÍiíJš’’³Ù,ÙA‹—^zÉcfúèý1”ê«+?Lô/2#™••…?ü_·n|ðAIŒ‹³;{ö,€žuûl9øÌ#¥uïJñ|}9‹ëz–u°e9âëLûíÎ;ÝbFìv;¡€;vàoû€ïÎàÙ±c‡æ[½Å‹{<ëjåÊ•<~–/_Η=gÒýÛ¿ý›Wúÿøã%é>}ú´äI¦oû"nè|}}%ß- ÊÊÊ’’"ÑÁÙ³g%çÛ1Ùâr¤ñß\øO?ý4×+{óÉŸï(>—Hl'¬ìägt‰Ëjݺu|;i=eHcp€ž¸¥t¾üòË3fŒÄ~å1¿L¿ìº8ŽQkæ[wÇ—¼•ëêê±cÇ$:céŸùéI¿òåË—###sæÎAyy9Ö­[çf¿,YÉN $úÛ É±4e‰ ”<ävqAAvíÚ%ɳ8Ý555›Só5rû]¾|9®^½êÑ~Ù³äopå:ÉÍÍEMM ¶nÝŠwß}Ÿþ9÷kÿøÇ?4mS\‡Y9²ŽƒÖ,hcc#ZZZ<Æk‹ÏÕz.?çT ñù—Z²úûÌß¡HP`ÐM›ÍÊʬY³Fµ²všµ·êK@µ8°ôôtÜqÇšçãöƯÒCÕ[ZZ4ëÊF+ÝÞà6çæ‹XÿL|&³'º»»y\³ç矞?S+†OÜnËeÉV›6mBzz:–.]ÊÛJµß}ûöIÎwö„\zlŽÅ𲳋ƒƒƒQVVæñEöðáÃu•«ž{ÄýÌC‡).®;ÍÍͨ¯¯‡Á`@hh(ZZZÐÜܬª‡¶¶6446h¶k‚  ¡¡¿ür¹\¨¿X À .Ûb±(úP-ý‹ÓÕÜÜŒ®®.üð‡?”<ëâÅ‹ EXX˜Ä6å繎9¨­­å:è¸Ò—Ë…ðððž6J!òUׯ÷´Qžv.ë–ÜN‚ƒƒ XVìo¬¬ ƒ¢Í1ˆóßÐØW·4ýíí훑ë÷Ò¥Kð÷÷—Ú˜èYÌ~§Nê³×ÑÑ!y–Ü>ÅϪ¨¨p»Î~ÁËA+ÝL¿r›û·ÿ7tuu!22%%%˜9s&ßÔæúõënùèììÄÙ³gár¹Üê³qžÄár››4i’ÛÂ,†—½,W‹­¿té’$Ïòz§¥_ækÔêáÇŒ’’ÞG €sçÎIôÛÚÚªx^ù¥K—ÜìD¬±dƒmyÙ©ùvæªÉdâar_*þ£ýÈã@ŸÝ«5;,ŽYWC|&¨š,q̺–¬AÅ@#IAtޤ zæ<œÃ'ÿÈÓ)>w²3ƒÕÎÙS“%¿ç*}”ÎTeÏR;ÛØSÙxz–7(é_ëlX¥sø<Ù 3þ¼ù(#©÷#?wÏ“þ”lNI¿Júóô× ­|Øl6Ís:½µ9-ÙÞ~ÄeéIzÓ­¦#Oçtê=;SOÖJ§ûU;c*ç—ë)+oe{«=uZë\ToÎÕsκ–ß»Yc.oÏ‘4:÷\ÎÎÎFnn®W;5AÄ`…mTURRÒë [Ø2i=<±ùŠùŒä¥æKŠ¿g³â·åòøR_Å7õ—.]’l#—%¿®$Ki6M> Îf$åÏæ;Lò[µtÊg$Õº(â5of$åú70™L’g‰e‹óÌvÕ•Ï*éD>£ãíñb»P*-ä3’žô§dsJúUÒŸ'ŒF#_­•ÐÐP\¹r…Ûshh(:;;=.ËW³9-ÙÞ".ËÆ¦FMèM·šŽä6%÷JuZ­.xªÓªéÔc¿bYZ¾ˆÙž²òV¶·:‘ëW©NKf/EuCî3•|‹–_ë[M–Xßž|ä@‘““ƒíÛ·ëïÑ@’ ‚ ä HAÄ`ÆÛ¤©Œ ‚ ‚ ‚ðHAAA4$‚ ‚ ‚ h IAAAÐ@’ ‚ ‚ ‚ $AAAqË3L÷Æ¡®®QQQ¤5‚ bÈ#:::¼:‹ ‚ /’wß}7~ÿûߣ»»›´FA y |||ÖûFtØ0ÔÖÖ"''‡JA iŽ9£Ñ¨¿A µA„÷üßÿûQVV†®®.RA1¤1˜û,~ö³ŸáÛo¿Eww7)– ‚ ‚ $Aܪ\»v EEEhok‡ÅbABB†ùz7IßÌû`±XÐÞÖŽ¢¢"\»vKAAÐ@’ nENššš°mÛ6ÜsÏ=˜6m&MšäÕ²V˜øƒ‰˜6mî¹çlÛ¶ MMMp8¤`‚ â–§³³555HKKC~~>Ž9‚ΫX¼x1ÒÒÒ••¥KΡC‡ðâ‹/"33p¹\¤\‚PŒ$ñýHv9ÐÞÞŽÓ§O#)) ¡¡¡1b¿ÞÝÝööv455áÊ•+èîî†&L˜€Q£GÁo˜üüüàïïÐÐPLž<………hooÇØ®±0úIÉAÄ-M{{;êêêPPP€Àµk×àêv¡¨¨---ºå\½zgΜÁÇŒŒŒ Œ¾m4Œ>ÔŽÄ`‡f$‰ï%—/_F]] >>aaaüšËåBkk+ÊÊÊðë_ÿ‰‰‰ˆÇ½÷Þ‹½{÷âlíYI†øøx@]]._¾L &‚ niAÀW_}…ÒÒRøúúbFü DO»îº wÜq®]»†ââb\»z ‚ ’ ‚’1øhiiÁ×ç¿üà?À¨Q£øµÓ§OãСCøå/‰C‡¡­­ àp8ðòË/cÿþý(--å÷5 ?øÁ_ŸÿÚ«·°A1éììÄñãDZwï^,\¸“'OÆøÐñ½’uûí·#..÷ß?^}õU466Âét’’ bCK[‰ï%v»ßþë[>ô÷÷ç×¾øâ |öÙghhhÀ¯~õ+~$ÈåË—±qãF”––¢©© ,øûûóè·ÿúv»LAÜÒ477£¹¹ˆ‹‹Ãˆ#àëë+¹Çét¢±±_|ñΟ?ÇwÞ “É„aÃzº¡Ã† Chh(¢££ñÞ{ï¡©© &“ &“‰M4$ˆÁÅåË—ñõ×=3’A>|8¿vñâE477#>> _ó$3 ¾ùæ¼þúë8zô(.]ºÄï>|8ƒ_ý5-m%‚ ny›šÐÖÖ†#FÀjµÂÏÏÏíž¶¶6TªÂ»ï¾‹?ÿùÏ€Ÿüä'ðñõÁ´NCpp0|†„„àŽ;îè‘ÝØˆÛo¿’AI‚||õÕWØ¿? èÿ³wþaUUùþŸç p@< ¦THò£pd¤_2)=•ø÷ê䨓fãL˜£3óTã}ôšßä6ÕX÷&>%–‰Ú3ÆÜº7¼Š?îTHÙÔÓEAÂÂìÊåPrö÷f­öÞgï}ö9 ñózž:ž}>{íÏú¬Ï{­½÷Z+Ô³ù‡Iý¿ýíoñÛßþ.— ß|ó Ž=ŠÖÖVüýïGww·›-³Ù K¨ðÁàg?û9˜ ‚Ù:ÚØˆÖÖV ­ ·ò§‹b:„û³î—üÛÛo¿·ß~{öìÁÔ©SùcÆŒA||< ¡¡ñññ˜8q"9š h I×---øú믱uëV|ñŰÛí¸zõ*®\¹‚«W¯’ƒ‚ ˆž††|ÿý÷0š¥¸}Öí·ßŽßÿþ÷xà`2™ÐÞÞŽ?þøÃpôèQ\½z<ò 88cÆŒÔ××ã'?ù 9™ h I×µµµøê«¯PUU…{î¹±±±|kuëÖÑAÄ ÏñãÇñÍ7ß ,, !!!0 nÇDFFâ§Ó~Š›nº F£aaa˜6m‚‚‚pðàA´µµñ¤ÉdBpÈ€Ö~õÕWÈÊÊ"' $ bøa6›»Ý—Ë—ËÅï¦;v Ä™3gðâ‹/"%%‹½½½xíµ×Üæ@ ‚—0°yrXX˜d¾%AAŒÔä÷ßäädUÝ C­ |Œ„„à“O>AssóÒÀ@™ƒ¸·µµ‘“ b˜CÛ7$ÉÉÉxòÉ'¸rå ÿîóÏ?Ǿ}û`6›‘––†øøx„††âÌ7gŸF:Nt;æN>ùä“HNN&A7<°X,| ‹Å¢ø,A×a'7"‹±±±¶¹rå BBBùùùˆŠŠÂ–-[ðàƒÂd2ÁårÁét"##_}õ\.ìv;BCCÑÓÓÃ÷ŽŒ…Åb!A7>)É?¼b3vìX,Z´‹-rûí[o½%ùüÝÙïpèÐ!À-·ÜB(A#ž˜˜DDD ßÕ®®.DZ#Ýæ>ži<ƒU«VaÕªUîÑôtL:•¾|ù2:;;ÐMY‚¸^ ÙÎÄ ‰ÙlFtt4žþy©øÓ§OGLL ?¶³³MMM€ÄÄDº)K×ôD’¸!1 0›ÍHLL„ÓéD{{;ZÏ·"::Ú+;mÚÐÞÞŽ+W®àÖ[oE )Pq/-‚ ‚I„Y,ÆÕ«WÑÚÚÊoÄŒÈÉÉÝnGJJ n¹ù¤§§£¿¿ÀÀ“È[n¾!!!àöº»»qþÂùÛaaE[i $ b˜„¬¬,ÄÇÇ£¹¹U‡«œœ ³QÿÅ£G¢¹¹'NÄ]wÝÅ÷À"‚ ˆ‘ÌM7Ý„èèh¸\.|úé§ÈÍÍŨQ£‚;vHŽ-((@AAª-—Ë…sçÎáÿ¾ü?˜ÍfL˜8£#ÈÉ1Ì1‚ ˆ—Ë…Ë—/Ã`4 0 Ðë×R}N\½z‚K@pp0íEAÜ‚€/¾ø»wïÆúõëqøðaL˜0cÇŽõÚVKK ÞyçlÚ´ ÿò/ÿ‚E‹IöŸ$bxB½^âÆnF#BCCâÓÜF³ÉŒà„††Ò ’ ‚¸a0 ¸õÖ[‘••…þþ~|þù種®öÉÖ—_~‰S§NÁd2á¾ûîCШ DÄu½ÚJAAxMxx8âãã‘——‡ððpŸ› Bbb", ƇÀêžÄõ½ÚJAAAx½‹GAAAx…îwþ÷ÿÿýßÿÖÖVòA1bˆŠŠÂøñãñÿþßÿÓuü™3g°~ýzœ?Þë½g ‚ bX û·Ø1c¼ú­î'’çÎÃ'Ÿ|BÞ&‚ F_~ù%>ÿüsÝÇÛvüï_ÿWqv‚ ‚¸ž¸rå öîÝ gŸÓûA¨Þñá‡’Ç ‚ ˆC~~>êëëußçìÃÅ΋øóŸÿ ‹ÅB$‚ ®[š››W¿÷oØÐI‚ ‚ ‚ ‚’AAA $ ‚ ‚ ‚ HAAA×#CatÙ²e¨¨¨pûw«ÕŠ 44ÔïçìîîÆüùóÑØØˆ„„ìÞ½Û/vkjj0þ|ÀÊ•+±hÑ¢!©ˆíÛ·ã•W^Qü®â`b¢c|ö¿¼ÜJç×øš ++ úÓŸ0kÖ,ttt¸ù{Μ9hllÔ¬w%Ûo¼ñ†GèAlK-•|¢VnoÐëƒ?üášåÛRòÉÊ•+‘=;Y3³†41”––"-- ÝÝÝ’zתK­ë€Öó­øçúg¯miÕUÅÁ ìß·Pqã‰Á´¡ˆWâúŸ¹ÝX[IHH@ii©_t·õ|+Ï=C“Zù€å&_ý/nwjç·yñ5û#×[­Vü×ÿb¢cTmûC½±åM.ò&gjùÀ=ôgþõUY?SÞ†åué©ÿ+×V½¶ÄíN^W¥¥¥ ©ËþÔCoÛ†^=ô¯¤‡7À@òÁDpp0^{í5À3Ï<(**¦M›0cæLdL›æ×s ‚€ÆÆFœ:uʯvÇŽ‹¥K—RSS‡¬"RRSùyÖ­[‡¶¶6þ·«(=øàƒˆÅš5k»ví,Z´Û·oÇ®]»páÂ<ÿüóü\V«‚ œN'÷ã3Ï<ƒ‰'bÓ¦M8|ø0rss‘•õC⨨¨@]]`îܹصk_ÙW^ï ,Àرcñä“ObõêÕp:˜ÒÓÓ} Õe‹Å óQWW—[]1ÿ††„"UÔv6oÞŒÚÚZͺd¿Õã“‹/zŒ_“Ù$¹.µ˜ËÏÏçmgݺu¨¨¨À[o½…'žx6› F£Ñ­îØg±ˆë‹”ÔT,X°@¬­¼ýÖÛ˜•íw=·¦þ 4$”·µ”!ÔC±î²6ÍçHO¤Êü€·»½{÷âСChllÄ‹/¾ˆmÛ¶¹å&W¿K’çfΜ‰¢¢"üíoÃŒ3$zØÔÔ„’’Õ\ÏôÕ{rR–.]ê¦ù,ï‰sb||¼$×+å9¥þƒÜËMž´S˶Zeþ^¸p!Lf“›-¹å}yŽ”_‡VßdÅŠUTTà³Ï>“è°Z¹åš#×e±Êû9¬&“ôôtò\Î|ÂPÒ -[J}¹ÇŽ ŠmG«O%ö »æåË—»ùDÞŸ WŒ_¹”bNÜ7Ù¼y³D/]ºäÖG÷©Ä> †‚N6lØ $''ë=\¨ªª„ªª*É碢"¡¿¿_°Ùlü¯¥µEAhim‘|AèuöJ޵ÙlBss³àr¹ø÷§N ‰‰‰!11‘g·Û%å²Ûíš¶A\.—ÐÜÜìvœ[ì¯×Ù+øJrr²`µZùõØl6¯mØl6îo¼î’““?[­V~}žêN̶mÛ„ÜÜ\þ¹¨¨HòÛêêj!))I ìÛ·Ohkkìv»`µZB^^ž$ÆØoå×,.·¸‡0}útÁd2Ilååå &“IHNNæ±$öɆ Ül‹}ÀêW©œr[âxNLL¬V+÷ ³!œn¥g¯« IDAT8-ô:{Ýü+?—¸É}"ö¯ÜGO?ý´ðôÓO»•›Å3‹Wö[%‹¯KîO­8)**ró‰žliÅœ<~õØVóoKk‹›Oäþõ¿ÙÙÙ<°s«ùS+æòòò„¼¼<·ºcŸµüI ž¼¼<¯õMczó±¼­lذÁMYLµµµ)ê’æô÷÷ ‚ HrÓÃÓ §›Í&´µµIÊåÉƒé²ø¯««K—­Áê!Ë嬲œ9=·;­ÏzêNLuuµ0}útÁáp(æ5–O ƒPXXȵI)¯ÉµTOžAÈÍͬV«›-ƒÁ ÑC5}Ó²­–åºÁ4';;[0™LÜ'̶XÕtCé\Z:!÷‘¸o"·ÕÒÚ"tuuñs«Ùò¦¯" ›Í¦ÚPªKO¶”bN«®Ôl«ù·¥µE¢oJ>‘ë¡<~Yß»¿¿_±¯¢7æÄã ¥>«¼ÝƒGÜò–mŽdkk+âââø{<ž53Kòjªk$ÇÆÅÅ!55ÝÝÝüûÛoCCC ¡¡WRR"9oII‰¦-öÊAjjªÛqzl±¿šêšAùgíÚµ¨¬¬ö7"-Z¤ùqZZªªª`µZ1{öl,Y²Ä¯ç Å¡C‡““ãö]NNNž<9d¯Ž)ÅsCCÖ®]ëæ“‹/â¶ÄÛZ¼ñÆ’W¶äñ,߬™Y}â)~÷ïßï–?b°zÈbjÉ’%Šz§¤9­­­n¹ˆéám‰·!..Î-~=Ù·Oz¨fËz˜““ÃÛáp&-- ‡R}˜å“¤¤$¬Y³fH¦(ìÞ½k×®uû÷¤¤¤k¦‡Lsöïßœœ7Ÿ\ =Ôê›èÉý7¢zêŸÉõP¿¬ï-ÏÄÈæGHÆÄÄÀf³!11PWW‡”””––¢°°·lÙ2Ì›78Ýp6› ûöíCGG222PSSƒ´)i8ÝpšÛJLL„ÍfƒÍfÃâÅ‹¹­9sæ`ݺuHLLTµÅ'µµµü{5/^ŒcÇŽñÏ………8Ýp˜7o–-[æ]gâ|+RRRø«¢Œ3fxmK/+¯‘ù;mJÚÆAyy9RRR’’‚^xÁo¶ÊËË5}á…ø±r{˺uë0cÆ À±cÇ$1çÍ€¸¶¶ÙÙÙnß±xމ‰‘ÄÜŒ3’’‚ÌÌLÕLyy9222ø< Öîbb¼ëLlÙ²E5N¼½f-[,æÒ¦¤Iòƒ˜ÂÂBTô}Ë5¬Þ}õ‰?Ù²e ¶lÙ¢¾ÄqýÀbµ¦IË—/—´±;v 6›M’¶oßb½ǘš¶Šm‰uB|.ÅNæ?t8""-ÑÃ9sæx=ÉÌÌtËå¾hë`sÓ`r»/¹)%%ëÖ­»f¶¼ÑN=:Ì4gß¾}ŠyMoßDÜTÓ qŒyÒCµÜïm?GÞ÷Lœè‰9y›“ÚÚZŸç@Ë}Â4g¨û~žü«¦ñ+H‡×â$l°ÉdÂÿøGÜ}Ï=0ˆE`à@ÆŒƒ‚‚ÜrË-˜• &xüÛo¿…ÕjEì¸XX,|ÿý÷¼8N˜MfÄŽûÁV`` bccÝÊÑØØÈßãÞU¶ AAAhjj’؃Á€qãÆ?—‹EÒù Gì¸XF|ûí·°Ùl^ùIü^¼ü.Ï`æg²y7nÄÒ¥K%óc¢cå~‡ÁhDì¸X˜Mf·ï‡âÝ<_÷¤I“PPP0 **PVVæóÝÇ„„Éûü™™™ªÇßwß}|.Æ /¼0¨‰úmmm<®öìÙ£8ç‰Åþßþö7œ={ÖÍ‹¹Q£F¹7RQ<[,$$$`Æ ¼Üf³›6mÂc=æ÷“&M“O>‰U«VýP¯ mãwÞású”ü©'111°X,°Ûíºü¥eKsâü &<<|PwÕY®a7.Ô|¢‡ääd,]º[·nåO€Ô8xð àÂ… HNNÆï~÷;˜ÍfX,Þ¶”â‚9TTTðvVXXˆ{î½—Ç kÿ&“ ¿üå/‘””x饗`6›%z#‰Û††tuu¹ik`` ×N1Ì–ÙlvÓCf‹tu´7¦ÃFãÀýéQ£FIô088Ø+? ‚€S§N¡¯¯Oòï¾h«Z›½ÿþû‘ÀõL-7±A‡RžSÓùsçúœ›X¾`s̼åž{ïźuëø¼º¼¼<äååéÒáâââA­5Ñ××Çû}ô®\¹âvn±ªÍÿމޑÌéSÓ‰ø‰ñxå•Wðúë¯óù‚›6mÂÌ™31M¦Ãzsii)¾øâ ôööÂáp¸éaXX˜êǘ˜„……¹åroõPlKKG5(ûd0šcµZ±víZ¼ÿþû8xð æ± ظq#ÿ±šÍf~ÝJqAÜ€Éÿú¯ÿBpp0î¼óN,]ºTñÎILL V¬XȘ6mH`´··ãwÞáºäää!4›‡MÅtuuùíõ€¬¬,Ì;qqq\€åOá\.š[ša µ¸Mpw»SÜÓM›6¡®®‚ À`0 )) ?ôç^—mòäɼÞø<ÌËËÃM7ÝÄ’óçÏw¹OØy‹‹‹5ŒŠŠâ“ÜÙ¤õ‰'H^XX ðøã{¼Æ«W¯¢¹¹™Çœ°°0¬X±ýë_ÑØØAðÜsÏáöÛo‡Ùl–,Ž0yòd,]ºeee‡ËåBkk«›îر¼îÕüçMœÈ;[Ý=݈ÍÛ^[—.]âþ¸zõê ÛË5ýë_>([“'OÆâÅ‹ï1†*++qâÄ >àÌÌÌįýkR¡ŒÏ>û uuuHNNƯ~ý+ÅŽËlð7”qât:õp°mß\¹rÍ-Íp¹\ƒ¶%n³À=÷Üã6ç&O:Ìôð믿æƒÞ¤¤$þ–Š/¹‰uè}HfL›†›Æçɬ¬,ÍU.Å:\QQ1¨¤Éd¤I“€/$s÷ÝwK4ÇW=TÒ ³ÙŒ_ÿúר®®æ7 ž{î9b‚L‡Å¹ôèÑ\#£"Ýú¬ì¦…§þ„ø•rÝm®Ï‰ŽöÄÄÄðv§×VWW÷Ç•+Wo>ûª‡qqq~±•’’â1†NŸ>7ß|“÷EóòòHi ©Îû￯٩¿Ö$%%áðáÃnwh‡kÖ¬‘¬27Ô°9 â;KªÉ":'Ožäɂͽ¸Qyþùçù g)))X³f vîÜé³OØ<ëØÉaó?âãã1{öläååáÝwß•Çæ‘@ss³ä†‚xóÁHõƒ1%%%|u=ÖîôÚª¶à¯-‚ô²víZÌ›7oÐbMŒœ|1°Z­¨ªªÖz¸ÿ~I®¸Öz¨Ùyþ‡æç磬¬LâÏ#GŽÜpñ““ÃÀÌ'©©©üi÷`õPM'ØúLµt˜å~¦‡UUUn}VÈÈÈðX¾©S§z}M5Õ5˜5kššš$íN-¹j=iÎz˜““ƒwß}W×MXbxcé¸}ûvs3Ø\ 6Gr8PXX¨9Å[´æ)ÍmÌ;÷’„YSã—ù#­ùì{ù¼[ñ\=ñì+âyJóÔâÄ—¹…zcN>OæZÌSò6~µæ·ªµÃÄÄD”——kÎçñ”רœ¦Öó­šy-%%Åãœ26?;%%E27NβeË<ÎCª©©ÑekΜ9mþg=þž3gŽfÝ]kÄó-ýÖ<0ynÏQ÷W>©««ô\ï‘¢‡Zýù\D¹Nèg_Ï¿”çP¥¹È¾Æ‰|M5[r=¼Ö}*¹jÍcTšßª¥ƒÑC±æ¨õã»»»¹æxêCµžoÕ¥LµtØŸÚ:\’'’eeeü 0ð¾ù¹sç$wNؼ‚ .˜3ÄÞ—¾ûž{ø«­lîÛÆQ\\Ìçq°wìÙ*³ÙŒ•+Wòs3[ÀsV®\‰]»vá³Ï>ã¶€W!}ôQþžº³Ï‰m%ÛÐÛÛ+¹‹&ÞøuñâŨ««Ãþýû5綠õÖ[xbñŠs ÅT9‚"[ááá’$â­²²2œ8qBRîððp¾dEE÷÷âÅ‹a±XÜæ¶ˆß‘‹‹Ãúõë±jÕ*‰.\¸ Ù/Ù×;007uýúõHKKƒÓéDII‰ÇùlΞø\쿬î&L˜€‡sV¬+6ÇÕÕ©º:‰•p8’¸`ó#˜ÿÅ1%ÞÇHì_qŒmܸ‘—›Ù~ì±ÇTçCó%Äû¤=ZòjNWW¾üòKIYÄó8âããQ\\ì±Üï¼óŽ=*ñ÷¬ìl$MžŒ 6 ¸¸•••’˜SšÅâD¿òM¦åŸµlIÄ::FòŠxÎãÈ‘#¼®Ùk£Zu)Î5÷Üs[B¿ï¼ó.^¼¨¿ xûí·ñÄâ'Ü^1’ûäàÁƒ=z4-Z„Õ«WãøñãØ¸q#Ÿß þóŸ%¶ÕÚ¼xQµ}fÙ³ŽŽÉ>qJˆçgkíYÉö-ï³'G¼×›–-¶Ï¡–­‘€RÛ`ùB®‡Jñ;a®b=”Ïk.,,ÄÝ÷ÜÃm*é ûÙ™LŠÚÊx衇$ûDnß¾]]]’¼'žóË4V¿r䚣Ess³Ä–x¾¥·zxäȉN‹ÛìÞò}$Åù966Vr.ùš ‹…ÏQû@>ÏK©Äâ~ݺu˜•ÐP‰N¨!Ö3µ<ÇâÄS]±¾ËÁƒ5uXžCå:¬¦‡âº‘ǘ¼Ü=ö˜æÀK¾…\'œN'ªªª°iÓ&·\/^ÂS¹YÝÈû¬?ü0ŸÉôpÁ‚°X,Ês‘ÿ',æÔtXþtÖl2«Ú’롸_…ÈÈH·¶óÁHâÄSŸŠ•Mœk´â—é¡<~Åm\>¿UÞ¦Åíð©§žBjj*×Ù3g"))IqŒ ”?Äš£¶Ï¬7{Í3=ô¤âýÊÕtX¬­Zû_êÑÖj ù׿þü•¼½{÷âòåË’$›W0vìX>¿lÓ¦M|Å’yyy¸õÖ[±wï^lݺ•ÿ^>ßÒl6sa®¯¯ç¶V®\Éÿý·®®NbËjµâÀÜVŸ³;vìàÛÙuÔÕÕñ÷¹þèÏQ[[‹;wòïG ƒÁ€äädtttÀåraÇŽxì±Ç<ŠÝI[Æ#ÿì-¹ÿëêêÐ×ׇE‹áƒ>@cc#ÆŽ‹M›6áçþ‹ERnù«wqqq|žØcÇŽÅ#<ÂýÊl‹ë]^W555غu+¸mñ ‰ývçÎ’2ˆã„Õ]VV|ðAźbçfu¥ä_+‹Ø¶ü;—ËÅcŠ¡ä_qŒÉã{ëÖ­x衇`6›5çåŠë]>O)<<œ×¼œ .00ŸÃS¹™Åþž0a2¦MÊ+P__ŠŠ ·˜S‹¹Åq".£x>ˆV̉Ç…1Àý%ŠÚÚZÉ5²cÕêRžkØ@R¿ÌGZñ+n—qqq’r*ùD'555<¯=ôÐC¼ÌJ¶åmÞ“O¼ñ¯§˜“ç‚äädX­VI]J:E¢øÖ²Å®SËÖH@+äz¨¿YYY\;Åz(ΑJó-•ô.++‹¿¨¦­ì‰‚ØkjzÈæÊs»8Y»cš£Å… 4my£‡rÿ–ieBBo‡±±±’s‰ó £.ÏsYYY|ž—R?ˆåVW­ç[%:!>Wxx¸¢ž©å9'žêŠõ]ÔtXœÇäq¡Ô_“—Gì_¥Û~衇3.F3_ˆs“<™Íf^wòÜòÈ# {v6²ffy,7ó¯RŸ•Í¿dzøHÞ#’øe>׋9O:,Ï{J¶äˆãB©ÿpáÂE=ÔêS±ãŹF+~™ÊãWÜÆÅå4ÑÚÒªªoò8;v,&Lœ j[ž?<õ©˜êñ¯8æ'œ½N¶<=1 EßÕ>‰-VnùoõÌ=q+·Ù “Éäæ#=¶”üo0ŠîînÉÝŽÐÐP´¬ÜòºÒò‰Ø¿rÛJå–×¥ø\rx‚ýVW]õõ¹ù—ŘV¹u7¤øW+Æ $dàZ™BBBøo¥¶¡7~•l{‹Ø'âRkÞÖØGZ¶´Ú†8^õøÄã52~Åß‹}¦srˆmiÕ§<§äoüë)æÔr‹Z._—–-±¿ìùyùùù¨¯¯×=¯ùÈ‘#Šsœôäv¥¶ ¥‡òºS‹A=mÃW[žr¤Rüªåg­xU+—š-]Úª¡ùr­çcv.¥¼¥æ±•tXîy½ëÕ­8ñTWJ}½åöO9“ùÛ`0hæ±ôÆ/³e 4ùüš šOÔÚ†/u'_%[Zñ¬ÔÐò‰¯×¬Vnµ¼%±ÐÐP‚ ©orÝP«;¥ü!×R¹O¼ñ¯§˜SÓCµ¼&ÑVÙØÆ[mJÄëgx»Šý $ ‚ âza(’A1œÌ@ÒHî#‚ ‚ ‚ h IAAAÐ@’ ‚ ‚ ‚ŽÄ‹jooÇ’%Køç¸¸8¾R˜ÂÂBÉ/¿ü²Çeòµ(++“쓞žÎ7Žeç CñæbÍ…/ü¸\[¶lq[.˜è[ðTìv»b¹‹-â«z-[¶L²±½Ü¶žk®¯¯Ç¿üË¿è¶ÝÞÞŽßÿþ÷°Ûí ±-¶å©.•|"ö–myL Æ¿rhÙVó‘¿ý+n;rÛZ×áÉ¿zëNÞvôøW+殕å1§Ç¶<÷èõ/AxBczÚ´Z.÷¶g”Ú¬Vî×êOˆ}"oÿjý‹žË=xîÙç<æ_q¾Ð²¥Vwj¶ôöU”úE,¦´r¨[ârËûgZþÖÒ ¥Ü¯·îôö×ôÖ;×úW׫öMôÖ?bN¯æ{[wÞÄœžºÓÒJµ~‘ÞjgOOÏ@Žu8¼ÖN-[¾äë¼¼<<ðÀ<'ö÷÷s[ýýý^å&yžŒ-¦~ø!233QUU%É×Þê„ØÖáÇ%¶z{{½ÖœàÚßýîwãDsv»Ýg[žâÄ—þšž˜KKKÓÝ÷“ëð`ã„ ¤ßq8ÈÎÎÆáÇ‘””„ªª*Å}b¶•lã  ²²Ó2¦ ê¼­­­<®_¿ºûmmm­_;°þfÊ”)¨­­Ejj*V¯^—^z ø5/]ºtHÎûÄO ëþ,Ü–xî̸F£.—Ëou§Fñæb,Y²3fÌ@jj* ¯¯V«µµµˆŽŽöû9- ªªª°`ÁìÞ½ñññüN¦V<…`Ïž=ä_?ƒ¦¦&ddd`ÕªU’¶3gÎMbÈ©««ãíÌß7‡222°sçN¿Þüù±PÊM,'®:Ìó†/Ú™›› “Éä³vjÙòEÅ9qÏž=üÚ:;;‘››ëUnç¹ÁÚb8p›6mÂsÏ=ÇíùªJ¶ÏýlThçáªÃˆŸïSÌ Öֵ޹Ÿþô§?ZÌǵØNGGúúúÐØØˆÇÿôOÿäöȾ··/^<ÿüóxlÁcX¸p!z.û¶« üµ„­[·âñÇç{’›£~ôÑG(--E~~>,X€ÎÎN<ûì³ø×ýW8pÖHëð£ÑÑÑøè£°|ùrttt ££ûöíÃc=6$p``óÖøøxTUU!""ˆˆˆ@ee%ÒÓÓ‡lžiHpÒÓÓQYY‰¾¾>ttt ==}ô¢££‡ìλÅbÁúõë±oß>îã+Và/ù ,‹ßŸZ«ù·ªªŠüë' , þò—¿`ÅŠ’¶³~ýzMbHyæ™gPUU…àŽ;î@yy¹OzWZZ ``¿Íüü||ýõ×(..ÆSO=…-[¶ 11qDøK)7±œ³Éì³v¦§§ó>Š/Ú©fk0zÈrâ¶mÛxnÚ¶m›×¹Iœçk‹ŠÇ{L’¯}Õ‰ÐÐP,X°@bkùòå<÷{«9ZÚ¯ºé¼VÌùÖZœøÚ_ós¾ôýüsÄð!p$_\yy9pë­·"--Mñ˜ÎÎN|üñÇX²d ÒÓÓÈìðüü|ó§NŠ={öHÞ7¯¬¬DSS ®;F#¦NŠÏ>ûLr·ÊÛK½ì˜Ì˜6m‚ƒƒÁÁÁ~©'=É.==ß3fÌ5¹ã>yòd„‡‡óÏñññª±;Tþ6mÚ_çâ_FZZšäiƵh;ÄMVV233y{3f :::P^^®:çW+~Ïœ9#™ wêÔ)œ;wO=õÔˆò›<7 6'2í3f Àd2ùÜþ•l V'Ož,Y8%%%ÅçEÓÒÒøtÁÚàæ£ÁèD\\œäfáĉ•ûý©‹Å¯:,“ÁhÎp9bŒFâEMš4 ~ø!&Mš„×^{ óçÏW<îÕW_Å«¯¾ »ÝŽ3f ®®nPç-((ÀÎ;1fÌ,Z´H²BÕ3Ï>ƒ_|VëÀÓǰ°0tuuaÖ¬Y8ÛtÎ>ç°÷«Ãሄ£Û1äåfsØälö™½ú1T¸\.þþ>»A þ'‡µ_ß‚ =¼ñÆ’UËÃ9cãÆ\ÃL&L&òóóQ]]=bâYž›ä9ÒWíìïï÷‹vºÙd¾î¹ÜÃçó}­Ëîîn¿ÙÖ´çëÁè„Ó)µåt:•ûÕ´Ó—8a1ç[7ZÌ4¼axîÙçPRR‚/ÿïKDDDà?ÿó?qâÄ œ8qË—/Ç{;ßÖåïîîFvv6Ÿã9ç y¹Ï_8;3¿*\__¬¬,œ8qbHÏ{âÄ deeñ×–÷ïßììì!t<÷ìsÈyø‡UÐ^yåÕ!Cåß;3üëgæÏŸW^yEÒvž{ö9JŒÄuÃ{;ßÃòåËqâÄ $&&âùçŸçVRR2bâYž›XN<áü ´“=ÉíèèðY;•l VŸ{ö9,Z´ˆ^´h‘Ïu9þ|¿Ùb1'Î׃щ÷Þ“Úz饗•ûÕ´Ó—89qâ„ßl)ÅÉ`úkÃ=戟@r66› |ðàž{ïE†¯<øàƒ€Øq±0ˆŠŠâ¯455¡««kXû`çÎ8|ø0rssù²Îë֭î]»x"ð7UGŽàÀþý8uê 1zôh\ºt ………رc233ýzÇQVV†C‡áÌ™3X¿~=‚‚‚ÐÔÔ„¢¢"lÚ´ ,ðû²÷N§Û¶mCEE:;;QTT``éëÊÊJañâÅ rÿ®Y³†üë'ìv;JJJð·¿ý 3fÌ´ŠŠ ¼õÖ[xâ‰'¼žSuä¾øÛß@µÜ욯\¹‚‰'jÖ%+§§’û 99YÀýÝßß/±™——'¬V«`·ÛÏ«æß–Ö¡°°Ð­Ü6›—3;;[hnn\.—›­ªª*MŸ¹Ùv¹\Bss³íVn±í}ûö -­-~ñ¯ B¯³—Ç I;Û>vì˜ÐÕÕåæû—ý›Ü¿ž®ÃSÌõ÷÷ëöo[[›WþÕŠ¹kå_yÌuuu ÇŽãßoذÁÍvDD„pºá´Ðëì´½‰99âzWÊsþhÓrôø÷Z‘——畾UUU ‹rk‘››+ItÆd2 Ó§O‡ ‚P]]-$%%¹éabb¢¦&Émÿò—¿TÔ»áˆR›ÕÊýâ¶QXX(Éýb‘·¹v²ïív»ªvŠÏ%ÎZ¶Äz¨Çû8'ŠókãòÜ$n³â¶b·Û%yN-q¹åí®¿¿Ÿ÷ßäßké„RnÒ²%®;=¶XœèÑN'Z}yÌy²5˜˜ÓꯉϥÕ÷SŠ9½ñ«¤ÃZq"ö¹RÌy£Ãâ8ÕcKÞÏÔÒNVn-Öò‰·Ú:”°rzêc)1b^m ÅîÝ»±víZ444 .. xþùç±{÷nÉ#ôÊÊJX­VÌž=³gφÕjEUU•O¯c¢cpòäI$%%aÍš5¸-ñ6\¼xï¿ÿ>Þxã År:t7nD\\âââ°uëÖ!y¢ç–,Y‚Ù³gkÃüÝÚÚê·ófÍÌš5k4Ù¿?RSSýö:dww7RSS7V3{öldÍÌòÛµÖT×ð¸ÑbêÔ©üÎÖõè_¶Ýÿ.Y²äºö/”””x\ââÅ‹¸-ñ6ÔT×Ð#4¯0Ýc:³ÿ~äääàСC|µÅ´´4TUUIôX NK“ä¶ õîzAoî_³fîÜïOíÔckÿþýºu¸¤¤ÄcNÔ››üçZ[[yÿm°:áO[,Nôh'‹-í 1çMßO³8ñ§Cψ{µuñâŘ7oÿ¬ô¨9&&µµµ|"³Á`P]Æ8mJl6›ª-FÅÁ ÉJx‘Q‘šåܲe Þ|óM^žáЏœrȯٟסfÛ›ºóåf„šmq€1À÷`´lËãÙ_«ÕjùW\úW«îä>ðçk?†=Ùö6_hÙVkwâxöäOq½kå9–ü™3ýc„{œÌ;W³]ÉóžÞ\.¶ímü7´r¿<'êÍýríd> õZ;µl ¶îäq¡v®kaË“¿½Õ -[zÚ†RœèÕNc€Q3¯iÕ¿cΗþš¿cN«î´ú™Þj¼ZŒ‰ëΓ?Å}­¸ÐÓ×¥VÿB¶Ò@òæ1F#Ƨ˞ÙdÖµdrL´wƒ¨ÈÈëCxµÊéí5{5èP±íMÝy‹Á`Pµ­7|A˶žxö·‡ê:µên¤ùדíÁ¶=åÖŠg_ë]OÞªœIxÅbñxsÄ›8ñÖöõ‚–|͉jmÅ`0ø­¿0uçmßÄŸ¶<ùÛ[вåKüjÕ·qr-cΟ}T_cN«îÛÖÞ´;½ýL=åö§¶Ò@’øÑ=z4’““‚ZåNŒÁ`@rr2:::ü¶ÐI\\’““aµZU7{7›Í¼lâýý|J&"[žî.†‡‡{ôÉp÷oBB\3ÿzsz|âOÿzsCå_êëëuëÛ‘#G0kÖ,455˜§rAÄIss3âââ`³Ù¼~>$O$—-[†ŠŠ ··Z­8pàÀ¼ÿÛÝÝùó磱± ’vCMM ßkhåÊ•C²(Μ9sÐØØ¨ú}ÅÁ ¯^Kû_^îíÛ·Kö´“×øš=!¶­vZ¶³²²ø" Jå’û õ|+þùŸþ™ïñ%FlK-½)7£´´T²“’msž|ð‡?üA³\b[ŒÖó­|²ýÊ•+‘=;Û¯‹ýˆ}âɶ7q¢t¾ÔV]U¬Àþ}ûUã†ÙþÓŸþ„Y³f)ž[oݩů–mOè‹¡Ê=ÄУ'¯ ,žPZZêÝ•ç¢CåùØ[ÿ‹s\ãý©wzr½VÎÔŠæƒîînyMÉÖÊ•+1wî\Õßz£¥¾0=_ó`ò¯¸.=]£Øß¬Ÿ©Ö†õ舞þ²?Ë­§]ùOZ꯶Bz8¼’äƒ>ˆàà`¼öÚk€gžy°qãFlÚ´ 3gÎÄ4?ímÅ8uê”_íFEE¡  ’š:$•0wî\”••¡¬¬ PXXˆððptuuñ½„n¿ývÝ{D=øàƒˆå+‹‰÷b{3µ¶¶bíÚµxá…ÐÑÑ«ÕÊ'O;NîÇgžy'Nü!iVTðrì9wî\ìÚµ ~ø¡b½?öØcˆŠŠÂ“O>‰U«V¡¯¯“'Oæ¿¿té?oaa!¾úê+~.6IÜÕï©S§ÐÑÑäädU[6›MbKìOv.‹“É„?þñغu«äsTT”¦óóóñÈ#HlY­VEÿ*µ‰'Âétòë¸pá6n܈ŋãT]d¿ª®®.¼ýÖÛü³øuÕââbø$99™Ç/«¯5kÖ¸ù·°°)©©Ü¿$¿-..æ×¥'ùùùHOOWô #$8 .Ä믿îæïÊÊÊ=¤?áæ#qŒÉý‚”ÔT·r2Ûf³'N„Éd’œ[clå‡z<~ qñâEñ«f[syyy|I8{ö,JJJ ŸŒ/¯;öy8ï3Kh“’šŠ HÚk+¾ì§±ê|ñÈ#!Á!×D?®š#½Ý3Qî£ÑÈsÍÞò½8tè¾þúkž/XncíåfËáp ¤¤_~ù%233UÛ´Z®ké§Ÿ~*Ñ 1]]]Àm9N^¯b=,((ðh‹åzyÞÒÊÇL[ÅzÆ|"Ö¹n0ŸI´U¬‡r-9s¦ä\b=´ÛíøóŸÿŒªª*,_¾ñññØ´iÿìÉ¿b]÷‹<é2‹¹‡~Ø­¿öö[o#;;III’¸øéOŠuëÖñ\¾páB˜L&Åþš7þ÷]X?G¬wgÏžu‹O}ñ¹Ø5¯X±Bsòø-..vëGªõ™ŠÛ•Ø'òëøüóÏ5ëNìb0TûHÊ÷u‘ï-Æö÷alŸœ–ÖÉg¶ÿŒøX›Í&ÙߎíOÃö b{ÛØl6·ýXìv»¦-ñþ>òãôØbâ½—|ÝëQmoö„a¬îäûè(í妵'φ ƒÁÀ÷Δï'ßãH¾OY[[›êþvr¨ùDü[¶/§ÉdrÛ—Èd2 ÉÉÉ<–Ôöó‘û@Ï~>ò}÷ÄûUY­V¾w©Ò~JþûDËJû_2ž~úiáé§Ÿvó/‹g¯j¶ÅûÉ÷AUò‰¼MûºáÓO?-Ü|óͪ>RÚ»T-yª;ù¾Ožüë)~Å{m*í)%9'ýýý’½óòò„¼¼<·ºcŸµüI ÿ}$åmC-.äšÔÖÖ¦¨wJšÃör“ï—˜˜(œn8-Øl6É^yzl‰÷•#ÞsUË–/zè)GV=åz­}µö…«®®–ìÓ)¿Ž^g¯ÐÜÜ,ô÷÷KúTJyM®¥z}ÂöÓ–Ûbº-î[)åL­ª–å}¦9,—Ëm‹s½šn°s‰sªV¿RÞWÙ¶m››³rçææ QQQ¼¯¨G—Õú*jmZï^„ÞúWsžtYiIµ˜kim‘è›’Yü2½“Ûï+©ÔWQë›È÷¸ÕjÉÉÉšû17Ð>’löÇ^—Éš™%ù ì?#>6..N²¿ÛŸ†íÄö¶‰‹‹sÛ¦¤¤DÓ{u"55Õí8=¶ØßHÞ.))‰ïé ù>eþÜøa_Μœ·ïrrrpòäÉk²:¤x¿ªµk׺½Z}-ö |ã7÷rcñìio&ñ~`jû U¹ßÿýa¹§¢§øõv¯M'þÜs•¸þ‘ë!‹©%K–(ê’æ°˜’ï×ÐЀÛoC\\œ[üz²Å`º¬¥‡j¶FºÊó…xŸN95Õ5HMMÒöÏöÓVÓík¡‡LsÔêýZäúE‹©NqÚ½{7žþyÞW¤}|Ú¸§þ‹_5½óvOqñ^šò=n‰ë‡m ÉöVILLÔÕÕ!%%¥¥¥(,,äÇ-[¶ óæÍCDDN7œ†Ífþ}ûÐÑÑŒŒ ÔÔÔ mJN7œæ¶a³Ù`³Ù°xñbnkΜ9X·nUm±ÁImm-ÿ^Å‹ãØ±cüsaa!N7œFDDæÍ›‡eË–ùä›3f %%3fÌ;v [¶l’z¨8X¡xÌßiSÒxƒÏÌÌÄ /¼ 9nݺu˜3gŽÏç///GJJ RRRÜlËý+fß¾}n>Û*//×<ï /¼À­««”×­['©+qÌù±OXœdffª&öòòrdddð×NX»“ïy4cÆ Þ6l6¯wÆ–-[Tãd(®™í ÅÚ´˜ÂÂBT¬¸î’í /¼Àã„]cmm-BCC±eËÅ6ÎrÑPÆñãÃÚevv6pMZ¾|¹¤Ý‰õðرc°Ùl’|°}ûv7më8ÆÔ´UlK¬âs©µY¦-ÑC_ubÞ¼yHIIáyL)÷_Ì›7O²¯ìâÅ‹Ýò륤¤`ݺušþõ¤‡Z¶†¹æˆóœßî"Ÿ°8ÑÒÃë=?(éavv¶Ä¿Zq¢¤,NX?ˆi޼ ß-[¶ J‡Åq"_¥¶!ÎE¤‡Ã‹k²ý[ Ï`0 77&Là{«!00“'OÆøñãqûí·óy6› ß~û-¬V+bÇÅÂb±àûï¿ç Àétì!3NjKiÕ¡ÆÆF´µµÁb± ÙÖŒœ?^b‹•“í!ÃÎ¥„Åb‘tÈÃÃÃ;.F£ß~û­dóUoHHHÀ¨Q£påÊ444 ¥¥ÁÁÁ>ï3“ššŠ»ï¾GŽÁ½÷Þ £Ñ—k`ÎaLtŒÛ@à{ߌ‹…Ù40gD<C|ÍmmmƒšÀ&™Û(~Ï>,,Lu“ר¨(‰?ÒÓÓÑÙÙ‰ÊÊJÞJOO×LÌì¼_ý5úúú|¾†¶¶6´µµZZZí¶Ç‹ýsçÎyœïf2™““ƒS§NÁ`0 ;;û÷ïç17aÂäå塼¼}}} ÃW_}…ôôt·$ؘˆúúúêU¡m°§¬}………ñºö8R‹“˜˜X,Øív¿å ¶/kÓbÂÃÃýrW½ººgÏžåþöe)u«ÕŠììlTWW£³³Ócg >>žûÚl2ó<ÃbÙáp¸ÅÍPí›Jü8455¡ººšw'NœÈÛå¨Q£x½'&&büøñÞ®0%z#iË èêêRÔV¦b˜­°°07=d¶xìêhoL‡ÆûÓ£F’èapp°OþŠÇ˜1cÐßßúúzœ?mmm>롸Í&$$`ÆŒ8~ü¸Ïõéìs*>Ñ’¿±ü\J{Á²~Ë­LW”ü«¥‡'NĬY³¸n$''Kær*Ñ×ׇ£G¢³³V«•Çœ/š.ÖqžSÒCñ5zÒî®.Ì™3{öìá¶Ç9sæ ¼¼œÇóW_}…ÄÄDŸ÷&f}Öžžôõõiö'²³³yÿˆé²¿‘·i1£F’øW+NFíÖ–YÌ}ýõךš#_¥ö'®«¦¦&ñƯò6=”{0×é@ò7¿ù L&&OžŒ;w*.—>iÒ$>17//O÷Dz_øöÛo‘ŸŸ/•²uëVÄÆÆòåxgÏž¼¼<îoyê©§0wî\¾´ï|€M›6¹Ç:±===šöA€ÃáðË÷Ýw¿®¢¢"üö·¿U<ÎÑí€Ãဣۡøýš5k0{ölddd^}õUÍ ødò””Ý‹49„„„H;Pf3éÙ³gcýúõXºt©äì˜1c°sçN<þøã’ÅŠ”`m!%%K—.ÅÖ­[%û;EFFâÃ?Dff&/÷Œ3PYY‰iÓÜüûî»ï"##AAAÝÝÝnw‡#""`4qñâEdddp[!Á!>lj¼³Õçìóé®too/?§¿ €_üâ0¸óÎ;}n[÷Ýw6oÞŒøøx«àç?ÿ9RSSa0àr¹ÐÓÓCÛGÜ`lܸ%%%°Z­())Qì´±|ÁbcÇŽCV»Ý®¨‡AAAÃÂ_,—;ÄÇÇcÑ¢EƒÒCq›=pàæÏŸY³fù\¾ŽöÌš5 +ó‰§þÄÖ­[ñþûïã7¿ù Nž<‰””ö“ûN'¯÷þþ~Í~+‹-ídþÍÌÌT¼Éãz.÷@p Šñ«§Oe00fÌÀO<ÜÜ\ÕñAIìÙ³‡ßÍA’””„ŠŠ ·²È7HýÇ*|}}}Š«‹1êêêtuœýÉwò'©/^üQ|äp8‘‘;wJ:/¾ø"_¥.##«V­BYY:4¤å9pàÔ§¦¦"77yyyxóÍ7%ÇY,TUUÁdFkk+RSSQ[[+9æpÕaÄŽ‹EsK3nK¼Û’w&¼‰1ÛJ¶aÇŽü¹7¬^½/½ô?¿¿`×ì §õƒ¦¦&„††âïÿ;,X€ªª*Ïq¾ó¬V+jkkÝbÐd¦Êò¢M/X°»wïæþŒŽŽÆÑ£G%ÇN™2UUU ÅÛo¿;vø¤¹¹¹<÷ú+'ŠãÀ—'‘Jš‚êêjžç†’âÍÅpõ»¸®^½ÚgfO<ÅSü‰Ø'ÞæþU«Vq=ìììt[Ý×89pà Fm-dñk±X°páBœ9sÆç~8À‚ °gÏddd^‡\“9’!!!°X,?Jp”••¹ÍU4 ¼<,i>ýôÓü•³‘HdT$ªªª©8°®¬¬D__:::žžŽ>úHu`}óÍ7ãÀ¸ùæ›=ž·¾¾ ,@gg'¶oߎ—_~Ù§rGDD ££¨¬¬ÔµÐÏPpþüyô÷÷Kþ-((ˆÇ’Á`à~Tâå—_–Ì=Ò¢´´sçÎUçÐÐPI»²Ûíª¯—Z,˜Mf‚€ŽŽ·»“–д‡Pu[jq¢Srz{{U}RXXˆgŸ}aaanu[ZZŠåË—£££ƒÏ¥ûÄçÎÎ?®Y«3¯'~CBBðÑGéêt°Üc0ÐßßÏ_%ô%¯åçç#??íííŠÇô\îÁÂ… ‘ŸŸ/™w®D{{;·§õ„ °°ùùùX¸p!z.÷¨úL­eË–y´5‘ç‹kI}}½¢¿Åzh±X°råJì-ß;b뀵YèkÓâ'C‹EñÕB£ÑÈëýÊ•+^Y¹ÓÓÓÑÑѾ¾>¿ê!«¥7Q|±e45óÜË/¿¬¹…\åùWÏ!ÁÒ~¦ÓéTõï²e˰yófÜ|óͨªªró_HHÒÓÓQYY‰°°0<û쳚9tîܹ(--Õí_sii)V¬XÁõpÛ¶mššÄâDv†††z¬w¿¬ æßÒÒR¾e¼¾ ‚Ïz(ÖöJµ’2Íñ´~I{{».ídz¨¥ÃþÔÖáÊ<‘¬¯¯çï˜ï›Ëç±y—/_\¾|G޾ÒðÃÜ·£GâèÑ£ ÁÉ“'ù;öìQ¼1ÀÈçˆm}÷ÝwüœYYY0èîîæ¶X'W<8p¹\¨®®F¿ä:ššš¸Ý´)ihokçs]”èììıcÇ0eÊEQaÔÔÔàìÙ³’»Ußÿ=Ÿ;­9ßOÉÿß|ó¤Üu§ê0mÚ4ÔÔÔ ©©‰û(mJ, ÒÓÓù«1cÆðÕ;'qGå󃃃1mÚ4>çEìoñ{ñÌw{öìAnn.îºë.Œ?^bKëŽÄÆÆJÎ,™ ¨VWâÿO›’†¶ m|1%5ÄsDÄŸYœ°ù'Ož”ÌëhjjXô)-McGŽáñÍl¥§§»½ú"÷¯¸nÄå®®®Æ¡C‡°wï^îoq¹f̘„„‰­ÎÎNɱ¬Ül~ Øß‚ ((yyyøôÓOÝâW+Nl6›Ä¿â¶Â>_¾|YÑ¿ü1Ž?޼¼<·×iÓÒÒ${WM™2ÅmÞKss3ŸË¬TwlÎŽ|£8ÆX;Çouu5Ο?¯¿¨®®Æ”)Søk: ¹OΞ=+ñ‰8F•â@+œ={–‹’ü 4Ïcý.”——ëê¬:NnïþûïW=îèÑ£(++ƒÕjå{»Ê±ÛíºlUTTð}ÍÔl”ÚËr=T‹_¦b=TÒ‰ &hêݹsçø÷JÚ*¾ñ#×(§Ó)É{âxfq­Ü.Îkâù×Jz¨”ËõÌWS¢¹¹Y¢Óâ6ÛÐЀ“'Oªæz¹¾?f³™Ï…û@>·P©$oÃÌ6Ó 5Ä}¨©S§ò\c2™ÜæÆ{ª+æ¦ò˜“Û«¯¯ç7•úkb]QÒ±•Î%Þ Y«o˜6% Î^'1æÏ²²2,Y²Ä­îÄkCÈmíÝ»ÁÁÁxøá‡1mÚ4Õ>ë´Œi’y³gÏæþëÄ”)S”œÄÏuöìYTWW«ê°ø\žü+î§¥¥I^ëe¯û* øÄq"ÖN­¾·8×xŠßÎÎN·øו¸œžôMž‹©òü!֜իW«ê!Óœäädz¨G;™jé°X[µæ)ëÑÖaËPì#ùøã V«Uò÷øãKŽinnv;†ýmÞ¼YrìÑ£GÝŽIJJRÜÃkóæÍš¶äß+Ù²ÛíBRR’jù¬V«ÐÜܬx.ùoÕÊ)fúôéÏå JþŸ>}ºâ¹˜mq¹åu%÷¿š-µ?±ä¶ÄçÒª;v®éÓ§û­®ôú_Ïó‰ZŒ±¿£GJ| ÿì©ÜZZ¶ôü‰}ÂbH«mhÕ·ò˜Sk³JmÁÓ¹üqÕ8ÑZñ+þ^ÜîôÖ^ÛÞúÄS›–#ÎÇòœ©”[´òšø:´l1ëÉ‘×ó>’Jq ΞôÐS>ö¦møjËSŽTÊ=jíΓžé9—7hi¾’VêÍ‘Jåû×[ÛžtDɶRÛÑÛŸPˉrÿúrÞh–<÷¨µ…ææf¯ôMË–šÞùZ—žÎ¥•ûõØV‹gOmA®IÞäšÁÔ»\ÿÔêNMÿ<Å–æ¨ùÄn·Kú‘žôPv*ùw(µu¸î#it®^QTT„ââb·»jå#jc€Qò¤-ú¡„Ùl–¬ È&&+½:¡4úg«¯ó<Äw/œ}N8{m©Mb¿ÐwµOb‹•[þ[O¯ôvwwk."êÕ+PJþ7  u;—Ø6+·¼®äþW³åé5%[âsiÕ;;·×uÕ×'µ-Š1o®Cëõ&V.µc¯œ°»¦JŸ=•ÛÓkOj¶ô ö‰8†ÔÚ†VÝy‹<æÔÚ´R[Ðò·Ø¶Rœ(Ř7ñ+þ^ì3oêNmo}¢UW*7y>–çLµÜ¢–×ÄסeKìï{N {%J¾À‘#G0kÖ,455y,»RÛç1-=ô”µtBÞ6|µå)G*åµvçIÏôœKë 7ÿkh¾’VjæHùBì_om{Ò5Ûòøó¦?¡”åþõå:ôƒÁ É=¦@“b[ … ºõMË––ÞùR—žÎ¥•û=Ú–õ‡Åqá©-È5É`0èÎ5ƒ©wyÿX«î”ôÏSÈó‡ø·Z>ÑêGªé¡–v*ùWS[eué­¶%lqO›ÍæõjÇC2$‚ ˆë…¡HAÄpf0I#¹ ‚ ‚ ‚ $AAAAI‚ ‚ ‚ ‚’AAA $ ‚ ‚ ‚ HAAA $ ‚ ‚ ‚ _ Ô=â4ÑÙÙ‰¢¢"òA1bhllTÝ(Z ƒÁ€ÞÞ^{õ;‚ ‚ntuuÁhôíÙ¢îdDDbccQ\\L'‚ F AAA¸õÖ[½:þ¶ÛnömÛàr¹È¬W² %IDATAÄu‹ÑhÄO~òxý[ƒ ¹ ‚ ‚ ‚Ð=%AAA4$‚ ‚ ‚ h IAAAÐ@’ ‚ ‚ ‚ $A\?ô÷÷Ãf³!;;K—.Å»ï¾ gŸÓ+ùÏ¿`éÒ¥ÈÎΆÍfC?9– ‚‘ØívÔÔÔ %%¯¿þ:þþ÷¿{üMww7233‘’’‚eË–ÁÙçĻヒÜÜ\ÒN‚ $A\Ÿôõõáĉ8qâ\.bbb`4x×$¢££ár¹¸¾¾>r,A1"¹páNž<‰S§N!** ¡–P¿§N©S§`³Ù`4ƒ .v $ âúC\¹rŸþ9ŒF#&L˜€É“'{½!kâ¤DL˜0F£Ÿþ9®\¹ÚQ‡ ‚i¸\.œ;wUUU ÁäÉ“16j¬÷O£“'OƸqãH; ‚’qýÑ×ׇ .ॗ^ÂôéÓ‘žžÎ„Þ‡ôôtLŸ>/½ô.\¸§ÓI&‚ F===øê«¯ðî»ïâ¿ø0zôhŸ’&LÀÌ™3%ÚIO% âú#\@܈\¼xß}÷úúúp÷=w㦛n’ "N'lÍ6|~ès|úé§8þ<‚‚‚ðÈ#àž{îÕjExx8ŒF#nºé&Ü}ÏÝ(--Åwß}‡ðÑሉŽ!'A#†sçΡµµF£÷ÝwFƒÁÀ¿oiiAkk+>ùä|ñŸãŽ;pÛm·aêÔ©ns F#RSSa 0rí=z4¢££ÉÑAI‚Þôôô ½½‡ððð‘}N´··ãðÿÆgŸ}†ÿùŸÿAKK ‰ØØXô÷÷óß„‡‡#.6ÐÞÞŽË=—ÉÁAĈ¢££v»’›¯‚ Àét¢ººMMM¨¨¨@yy9Ο?––¸\.ôööºÙ;v,.]ºÄµ³§§‡œL4$ˆáOgg'¾ùæÀøñã%Éö¶v®:ŒG}£F¨Q£`µZÑßß7ß|!!!¸ãŽ;À’ãÇ|óÍ7HHHÀÍ7ßLN&‚ F MMM¸pá‚Faâĉ èB²П^ö4¾9ó ‚‚‚ãÇ£ºº[·nÅ•+WÜìEÇDãòåË\;'MšDÚI×4G’¸!ikkÃÉS'‘‘‘ áßÕÔÔàèWGa6›±aÃ;v §OŸÆ'Ÿ|‚°°0¼þúëØ°a?>$$‘‘‘€“§N¢­­LAŒ(êëëñý÷ßÃhÂØ±cùÉÞÞ^TVVÂÞeGZZJJJÐÐЀ¦¦&;v 6l€Ùlv³7:|4i'A\çÐIâ†äìÙ³8°ÿ 44T"r{öìÁÞ}{‚‡f=„ñqã€à`TVV¢¿¿_r¼ÙlFhèÀèöÀÏ2F&‚ FŸ~ú)þþ÷¿#>>‹…$»»»ñïÿþïhooÇÔ©Sqï½÷"""F£&“ ™™™v[ˆ.$$„´“ h I×===hiiHÚ9wîÎ4žÕjETdL&Ó€è‡`êÔ©n¶ŒF# ,6ÐÝÝM&‚ F---|#Ó<`àÕÖãÇ‚‚‚É5Õd2!22Rr¼švÒI‚¸þ W[ ‚ ‚ Ÿa«·H¦ŠFÉg‚ h IAA0™Lx衇ˆ«W¯Âáp@O+\.9Š h I#ƒI“&aþüù€Kÿ¿½{ymbÃ8þ¤‰MÌL›4÷#Óö˜NE°(BÛÅ#"¢"ØŠt¡nü \ˆ›‚èε WÅ­âY׺ۮ ­  Hz¼4©Åè$“œ…0‡P9ØI¿Ÿm&ïâ·ùÍóÎ{©TZN”;5qJ.\Ð÷ïßõìÙ3U*¹®«ÅÅEMNNêÚµkšžžöŸwk®¿œõìÙ³¦À€Ž211¡ÑÑQ5 •Ëe?v‡»uøða™¦©OŸ>innο7òË—/š]·?R’ªÕjKï´m›"m†=’Ø”b±˜$Iß¾}S­VS$ù2‡l}øçƒ\×ÕóçϵeËE£Q---éÞ½{šœœToì¿ëB굺GÖÀÀ€b±t˲”J¥T©TT­Výk³B¡†‡‡‰DôñãG½xñB‘HD¡PH+++šU­V[7žëºôN€ ´Ã4”Ëå$Ikkk-³¥;wîÔׯ_Fuýúuf5(jß¾}Ú½{·ÿ|µZÕÊÊŠ$)—Ëù§ÐÐ)2™Œâñ¸êõºVWW•J¥ÔÕÕ¥pwXŽãȲ,½zõJW®\‘çyþa:Ñhô§AruuµµwšôN Ý°´›R¢/¡|>/I*‹*—ËþoÉdRŽãèþß÷uñâEe³Yõôôèøñãº}û¶Nœ8¡={öøÏ—Ëe‹EIR>ŸW__t”?·oW&“‘ëºzûö­?É •ËåtëÖ-MOOëôéÓêêêÒ±cÇtùòeݽ{÷§¬¥åå–Þ™èKPd ÍðE›’išÊf³’¤……Ù¶­¡¡!I?N™3MS#»FtæÌ9Ž#Ïó”Íe5²kDÉd²åÉÏŸ?kaaA’üÐ @'Éf2ŠÅbªV«zýúµöïßïo ƒ²m[étZ†aèÀ²,K™LFù¡¼nÞ¼)×uÕßßïW\Zjé¦iRd€ üþ ÃP*•R"‘ÐË—/µwï^yžçßi …”N§uäÈ‘ÿÇó<•J% ¥Ói¿‰ÐI’ɤR©”LÓÔÜÜœÎ;'Ã0ü;#ãñ¸âñ¸×ý÷Ò¥Këzç›7oè@›ci+6¥îîne³Y]½zU=Òüü¼J¥Ò†(_^^Öüü¼žU¡PPOo:¤p8Laɶm=zT’ôøñc-..nxŒºW×̃½ÿžÞ ´¹àÔÔÔeÀf‡•Τ56:¦;vhÛÛüe:¿¢ÑhȲ,;ãS8V  ¸€Î{i µuëV j||\V¿¥ÞžÞ Ól6eÛ¶þuÞ ´ó»t³ÙlRÀ¯bi+€ H’‚$€ A@$¿¡Úà ó‹ª(IEND®B`‚cdhit-4.8.1/doc/Figure2.png000066400000000000000000001242141343604040700154020ustar00rootroot00000000000000‰PNG  IHDR®>ÿMsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ $þÿ4v"tEXtCommentCreated with GIMP on a Mac‡¨wC IDATxÚìÝw€]eÿñ÷¹÷œÛïܹÓKf’LÚ¤‡„Ðe)"ˆ½ì¢,«²«?Tl» ºØë¢è.X•EE]p ) $^fÒ¦eú½3··s~Li $!åóú/™{î=÷yžû<Ï÷<ÍpÇADDDDDDäåRˆˆˆˆˆˆˆW®""""""¢ÀUDDDDDDD«ˆˆˆˆˆˆˆWQà*""""""¢ÀUDDDDDD¸Šˆˆˆˆˆˆ¼vÌÃñ&±XL))""""""/+¾¢ë4â*""""""Ç4®""""""¢ÀUDDDDDDD«ˆˆˆˆˆˆ(pQà*""""""¢ÀUDDDDDD¸Šˆˆˆˆˆˆ(p®""""""" \EDDDDDD¸ŠˆˆˆˆˆˆW®""""""r1•"""GA!Efçfnº­ƒÞáü!_þÞO\ƬÆMA%¥ˆˆ(p‘#À)È÷ñø“´wåùúÅo ¸‰z<-CI*""'M9 òé=mkÈçr¯èú›?üK¾yû2îÞ˜¦Pr” ""rRш«ˆˆÈ—¡ÏßÅ<œùöùœwé<Þ9Ãç K©aÒmOñ®ïãoêc¸£¿»u.“n‘1M9Òqë@=}½Üãr;/‚¿ÙOØçLßB†zøyªÄ3v¯¦<¦[é*""'¸ŠˆˆaÅtšt2ÅvÀÛèÃ_fŽkc¥R.Mft”¾®8ë26Ã!/Ñš ~ËÀ­ÑZ9‰hÄUDDäK Œõã6}\³ †SêCÇqÝàÊ?²âÙ\õ½±(õ¼÷ÕrÉÛ¦1ÉëÒŽÂ""¢ÀõhÊår$“I:;;™5{KM±ˆˆœ( M¢Ï&Ñ¥džŸß|¿÷º Y¿ºJ’N­ö'.朳&ð÷­, ·ŠˆÈQdÛ6ÃÃÃX–…ÏçÃëõž«ã8‹Eb±ƒƒƒ  R*–°K6X*""r"®rÃ6™A‡To‚Ôx¯®‹PÖàåÂÅ~\Ó+™Zå'd)h‘£«T*Çéïï'R]]M4Åí>z.õÀµX,’/ä‰Çâ<ðÀ¬\¹’ööv®¾újlÛV©‘(nuÀI1ô\‰Á§·I0lâví»É„ŽM*Q¤XÇmà{0^?— 6òÝ+š£)DDäµQ,Ùºu+ÿqË0mê4/^ÌÞðÊÊÊ0Mó¨°†ã8Ϋ}“X,6î×.]º”ööv~ýë_³páBÎ<óLN=õTêêë°L CgˆˆÈ ÓÒç`çJ>ø¹5üq9øªgò‹_ÌgjÈ^¯KCj¿xÿßx¸ÃÃææ¾õƒóXPï#âqá³ Ô:ŠˆÈkÅqJ¥===,[¶ŒÇœuëÖqõÕW3}útN?ýôq¿W4=v×­[·ÒßßÏý÷ßϦM›…B,X°€ÖÖV¢Ñ(eeeX–æ‹ÈkÃåráõzihhÐÃ39¼ }!Mfã_ùÀW¶³¤ËGàâÓyðúéLŠXöz¡ ¥ }«×ñÔ}¹|ŽÁ•y͸]n¼^/.—K«¼¬ŠÊŠCÚDб!ŸMc—JpSÑèÃë>@ãk¸À R;£†æÉýL¤ùíò¶O¢ªÑO…ïÅIÂ¥R‰¡¡!-¯‘×L  Ra``€mÛ¶±uëVfΚI.—£²²¯×{ØûTG4pµm›ÎÎNn¿ýv–-[FOO-SZÈd2<üðÃÊq9& ’É$O>ù$‡aŠœÀ–.]Ê‚ Æß–Š$wRÈæ˜XîåÖRíy™3\ƒ“˜rf/Žk?üÖ>úto(:üòÌÊÝ/ଳÎ"+CDDä˜ñÄO°`Á>ûÙÏrÁ`š‡7Ô<¢«Ë墩©‰¯ýëÄb1î»ï>î»ï>‹/æ²Ë.#àñèyí8ŽƒƒC©XRà*/«¢²â^Ç.¥‰w:ä2*7™ bº^þ t¸²†º©³0Í͸îÚÄèö «æT23ª««yúé§5â*""¯Û¶Y³f ÷Þ{/;vìÀãñð¡}ˆÆÆFZ[[ÈfMG|ª°eYTTTà÷û™9s&}}}»ƒÚ¾¾>ªªª¨¨¨ ²²R%@DDN V½€Ïë…|ƃé¶x 6sÊåõã‹T°¸Éà‰mIF†¬Žå™ê·ð˜n·›šš¥¯ˆˆu¹\Ž‘‘FFFH$ÔÖÖ¨©©¡¥¥…h4ŠÏç;"Ÿ}TŽÃq»Ý„B!.»ì2ÎyÝ9ôîìåàóŸÿ< .䬳ÏâÒ7\zDæB‹ˆˆ¼&òi ì|Ðfx¤š:_UapìL›P%á&ƒ»lŸ½'ÆÓƒ®_>À…o¬#`ºµ»°ˆˆuŽãP,Ù¶mO=õ=ö\uÕUL:•… ñ{8ê縖…ˇÂLœ8‘·¾õ­<óÌ3<öØc<ú×Gùâ¿Hyy¹J†ˆˆÿrÒ£qn/@¯+B³YFy\<-LO˜ §4ZÒ±.ƒû;ÛØynÁ€{ïctDDDŽ‚L6Ãz€Ÿýìg̘1ƒK.¹„K/½”@ pTÎp}MWÃ00 ŸÏG}C=ç‹-¶mB¡J…ˆˆœ ™,é‘R%›Ò[jð-®¦Þ€ƒ7ï†inžÄ…á!¼v‚?Å6°¥A/‘ ÒVDDŽ.Ë´˜={6_øÂˆD"»4=š³eÍ×2<–‡ªÊ*ª*«TDDäâPÌçɦÒà€Qï#Xëc¼«~ — SWf2!T„ø;ãyF26vÐ…K ,""G‘Ûí¦ªªŠ¦¦&<–eõ{PÛ'""r˜ƒVHï¢ó¹^ ›«*ü\õÿ- Bu´¾ÎËœ ÆþëßÙÎ#[‡Iíú‘£4º\TUU _“ ÀpÃÙ±XL¹)""²GðZÊçÈgó$²à ù±,“ eÒ{2 ù"£YÀï#è3 z4â*""ǯh4ªÀUDDDDDDN¼ÀUmEDDDDD䘦ÀUDDDDDD¸Šˆˆˆˆˆˆ(p®""""""" \EDDDDDD¸ŠˆˆˆˆˆˆW®""""""¢ÀUDDDDDDD«ˆˆˆˆˆˆˆW9™J‚ãD>Aºc-ør;Û{s‡|ù ßz‹&…˜VRŠÈQ4ÚÃÀö­\ñé‡|iU]„ë¾òNWC¹GI)"rØì\ÅúÍÃ|àk[ùÒéó¹úc—òºz0 %¥(p•}8ÅÙØÛ¶ÅhïÎòõë×÷1ëð7‡¨ ¸0TшÈQPÊ¥ÈÄhkòµ}£%Ö®é¦zn*¼Tù5IHDäpÈ'‡I¾¢º¹è÷±~ýN&ª¨˜”yÔ©®òbØJ.“fçÖMäó†×é3 ºÇQQ8v±À÷??+ß³ˆ‹Þ|*8%ˆÏ­JFDŽ|Ý•ˆ Ñ·­0p‡<¸ÝñÔ?v‰b:ÉW®½›ö›®àì…¼gNPë[DDCÝÜ¿½Ž8fЋe‚×uðºÙ.èmïãæOý–¾o¾‡KZÜÙäSÝ, \åYй,#; ˜‡³ßº€ ß´€÷Î à9H°˜"µùq®ø\OÞßÇ@û&.øéZ‚n¼JX9‚#H“É1Ò9ö?ÿtó[˜ÝámÓü¯õz7ѵv ÞÐý·ne輯ûæl mÎ "òêêæ#݉àyùço¼“ó[‚œVðžaªí V=ßÉßu˜Ÿ|aáNfÒ{šhÔxˆ(p•±:&Ka$ÃàRƒb¾šIµUœÒ!vtmã‹ Ì㣑AŒ¥Ùˆ3œ²iö»ñª÷'"G´îJ“é(0ü˜êᔖ(S‚ƒ¯|Mõ¸)r“¯›»²#$“bhôê ‰ˆ¼B68)bO–ˆ·{°¼u,žab`ðà•«oÚff½|ÖzŠï$‡MÖÏEŽ0….ÇE篈/’Þià èó ¸ÆÕw3Ü&f8L“ÇE•QÂ.( l[É*"Gº”§*‘îs;H4`ç:UÃãÅ 1Ù„ SÀ.(ÇÆ DDä•ö)°ódú!3èÆeˆM|ã\§êL2Áeç)ÙEŠE%«(p•dRäÒ)¶]äÝå}>¢´Á’ˆÛ£d‚x&ÇŽ¢ì"tQæSÒˆˆ¼vu³ ‰Q:s6]¶ÓŒ ¹XJ9öiªðñ·î즣«“.âoŒâ›â'lŒs¶\> ý;øîh‘U¥2j¬r*B`¹•®"r$ãÖ©[yn`ŸùÜßZA™ßEp¼ÜFGHììæS)ƒ˜¯Œ³¬2*‚z`'"òªêæR‘ä¶6~•)²¡*€ó¦(ÓÀ;Þºu°îÞ>>—uQðVô(*]E«ìRÌfÈe2Œ 5>¢A“ñ<+Œ’Œ ±cCŒÎ´Yç£iF!ËÀ¥ÎŸˆÙÈ•B:I*Ÿ#iºhnðãuot‡\¬—î>6nŒ3è@mK˜úI!‚š#$"òêªfÛ¡N+ÚäCnfÕúñº ܽ®D>ÖËŽÍC¬keÈ0˜8;Be¥—€ú”r2®Žãà8†a`èqú¾©Cj$F26„ÛôqyK“BN*Oú Wö¯ø Ï­ìàŸÿË¿ÅEoªåÒ7O¢Ñ㣄åX)û€Ê½œxl‡Ñá>r‰,AO„wL+Ç—/bc“z¹ËŠ9zý-¿z$Ç­ôpùU9s~5ú™ˆ¨’WW5—ŠŒôR*4†LÞØÁÌä)ä /s])3J÷#¿ä³?3x¢Ý…»2Èß_7•S'©VÑ“)p-•JtttÐÜÜŒijxÏ Ò$ú‹$vB)™ã¿oúw™®qí\,ä)ÆjûcsÎõ¼§ÕGínj‘‘F£475+1äRÂvRŒt8¤† ’½ n½î.î0Ç7Û£˜Í‘-€SĹáRÞ~N-§Të/‘ײjšÐ¤àõ¸—Ç.¥‰m;^±gm/ßþÈÿð#kùê8s©,8Ó«áƒçñþS"D¼*r®¶m³aÞþyÖ®]KSSW]u¡PH¹òb*“fôùñ§ÇâØR2OÈŒç꿛é³k¸ñõµê*h {´¾ Ë–-£»»›+Vð¦7½‰ššZZZù}R©7näw¿ûÁ`ææfÞûÞ÷*å„ \Bš¡¿:$·9cuW"Çèx.õšØ/æ‹«xËüJõL[Xª»Dª½½Õ«W³bÅ .¼ðB&MšôªÚ©?þñX–Ess3ïz÷»ðXš¯u|+PÊeü3Ó@Ѧ”ÈÏ¥!öÎäÛ—Ô1sB˜`u9å^—–žD2™ K—.eåÊ•L›6¹sç2sæL\®£·Žç¨®…BR©D"‘ ««‹;v°}ûvjjjvOG‘]ŠYbÃ6CC.°|44zñšûgœ“Ï1´3G²ÓM}CïôjfΪeÁ¼F‚h éW+N322B{{;;vì P(F †‚˜nóe¸ŽãP(H§ÒÄãq:::زe uuuÔ××+qå„«»œb–^H$L ‡¦f/û™Ú%JùƒÝY¸qùLj›ÃøZë˜5»š³+О"ã—Ïçw·SS§NŲ¬±v*Ä4Ç×NeÒb±lݺ•h4:ÖN©‹vü³‹Øù½ÝP°½˜7 žýëæbžB®ÄpoŽQÇ$X¹ ok-sç40»ÖO@©y6í‰D‚mÛ¶aYåååÔÔÔ‡1Mó¨Ìš5œÃ-Æb±q¿¶½½­Û¶rç/î$sÁpþùç³`Á•ˆý*Žt¯à}Ÿ_ËÏ”ÕÍæ×¿^Ä´Z/å{½.E~ ÿyÿßx°ÃËÆæ ÜzûëYXcÖÌëÃ*—˱lù2~øƒîžâ{Ýu×Q__OEEÅKw& yÚÛÚ¹í¶Û¤X,ríµ×2eÊ•°rbÉŽÚº’ùW­b$]Góô~ûûÓh2öyè– ÑÙÁOÞ¼”_QOÕÙÍ|éÛç² n=ÅyUíÔ/ïú%;:vÐÜÔÌ¿üË¿0iÒ¤ƒ¶S[·låî»ï¦­­b±È¯ù ³gÍV;u¢é ¯m³ß³ Wp>gŸ[Ë-ߟG“±ÏàF¢žµ}üâËøž«‰úè\Þý3™V ,_¾œ¥K—òðÃS__Ïûßÿ~ZZZ˜8qâ¸ß#»ëÈÈÃÃÃÜyç<÷ÜsTTTpÉ%—pî¹ç ñú¼š~r 'ù4© KùàWw°¤/€ÿMgð—k¦2±Ì·÷#œb–tO;Oÿ¶%¿èåáÆ|ã»s˜7#¬Eó‡3O‡|>O2™dxx˜'žx‚ûî»úúzæÌ™Ã;ßùN***p¹\8ŽÃÐð+W¬ä±ÇcÅʼí­o£©©‰Å‹ …0M·[gɉ¥”dpÕ_9óÚâ3¦2éu3ùËG¦aŸÎ‘cã2$;6rï—VóÜ:‡•ÓpûOçSçwS¦ºKä·SétšÁÁAžxâ |ðA*++w·S‘H˲p‡X,ƳÏ>Ëc=ƪU«¸ð immeñâŃA,ËR;u‚ÈïÜDçºUœþ¡ìwÇ…³«øÉ•“ˆ°Ï‹NR&E|Ë&~zÍrV›ŒÌžÂm·Í§Æ@|žìå(Ÿ'›Í’J§xü±ÇùóŸÿL,ã´ÓNãÝï~7Ñh”H$rD×#:ç8¹\ŽÍ›7ÓÝÓ͆ hoo§¾¾ž¾¾>:;;±¬“çÄãiÓ¦ )ý ™4¶]Âô¹™V;vœÄ~} Ãô¬® v‚ææ<=¬ÈjðQ]vtÒ¸½½d2yÒäg<§¯¯-[¶L&q¹\¬ZµŠÙ³gãóù0M“µkÖ²víZ6nÜÈÖ-[éííŲ,:;;UóÉqÁår1gΜCZÃbÛ6ùLp(+³h®ñ¸£c¸0,/áúJšZÜôô%ÙÞ1ÀšÁFµ—2ÿ‘ï,Û¶ÍÆÉçóÊl9aÛ©mÛ¶1<<¼»š6meee˜¦Éºuëv·S[¶laöìÙ”——«:Æy<fÍšuH×”Š Ù±3)j|ÔUz|¼¢aáöù)«¯ eºÍæ£<×5Īáñ zzz(‹Ø¶Í~ðÜn7>ŸO5žª««Yºté!Ekk+Ñh”›nº‰ 6ìn§î¸ãLÓT;uŒ›Ñ:ƒþôÀ!\áË$I oŸSÅœæò—®›]^Ìò‰œõ^‹­âËò¾¥ÓXr^ åUÞ—©›Û&“-±çœNÓcârãÞh/6ãmo{›2ú8¨_^ˆï:;;yì±ÇX°`×^{-çž{îa_÷zDWÃ0hnnæ[ßúýýüè¶±bÅ ¹òÊ+¹è¢‹Nªãoü~ÿ!¼zlËò‘‡|å&#AÜô(«¨¡~Ê,L×\wndt{šçO©an<ãíöo`íΗ=aéU-4‡,ÆsÅw¿û]lÛ>iò3ŸÏÓÛÛËòcÚÛÚI§Ó|ìcãüóÏßÝàÿîw¿ã©§žbÉ’%<óÌ3|ô£¥¥¥…3φ9ŽÃÀÀ÷Üs›6mâ™gžá3Ÿù ---œvÚiG$Æ;âQ£Ë墦¦†h4ʧ?ýi6oÞL?Ë–-cÍš5Ì›7ùóç3uêT•€½Z›…Ø kvˆUš¥ªŒƒ®”U™4•¯]±‰ï/`ÕN‹}~ˆ_ž¥ê`‡¿:EH÷ðØÏ7Ðsóö‹ZˆšnÆ;ÑøÐ:·Çï4›Í²téRº»»yöÙg™={6çŸw>“'O¦©©‰@ °{ZeCc]| .dÓ¦M,_¾œ-[¶°|ùr.»ì2©ªªRy—GzTï«ÿlPrj ûƒTŽã”3£ª™¦i.¾yùf>¿¤‡?l«bç†n?-zDo×0 ~í)'^;õôÓOÓÖÖÆ³Ï>Kkk+×\sÍîvê…=êëëw·S[¶laåÊ•,Y²„åË—sñÅ3iÒ$µSÇ}¡Òýô·¥Xûˆê¡*ì¦ü`i\nŒú霳 Ë—.ÙÉusë¦^°¸y^Ùþ¯ÞJ{ÛN¾üã-¼ãúK™Za2)lƒ3D×o×’^µ•?¼ï.kñtäÕ0ŒCZ^'GÏ Ë@×®]Ë£>ʤI“8ûì³¹îºë˜Ð4Ÿ×wÄ&Êpç [$Ož<—ËE0dÕªUìØ±ƒ²²2ªªª¨®©¦,\¦Ã­_`)e³t÷8¤ ~Ê-~ÏØŒà—OlV0ÌÌ&‘@šL*ó)r‹"Ø^×K‰ã”p 9RýÃl]gg1ÄÄr?^—¡ct^x–PÈS,éíí¥££ƒîînz{{¹à‚ ˜:u*Ó§Oßï‡ê±I¤,¢’Ëóã<Œ¸Ê˜l…‰Çz/nO˜æ… êÂXÅýíô\TK0hî}ŒÎ^Ÿ7L²«ƒ;¯zœÿ,:½œë+B¸]š>÷‚6²mÛ6n¸áÞõ®wÑÚÚÊ 7Ü0®Åç–e1uêTn¼ñFFFGX¶lßüÆ7©¯¯gáÂ…|üãWˉ!g(™à¶¢—?JÐï':®M?ÞP95àþEîGbÐÝEç Ô Õv"×ÝÓÍs+Ÿã†nà²Ë.cÑ¢EÜpà D"‘ƒn°fY---\ýõ»Û©Üú"‘ .äÿý¿ÿ‡×ëU"¯ëHœu©4wM\*¢Ae­X Hy}M ê€nÜwí$ÛmÒ}AÍÇè8@’­Ïnfs‰ÂÇ/å‚I&A À F-­WÖ“y>Χ¾¸+þïtÝnÊõ丒ÏçY¶|7~þFX´h?ùéO¨®ª>jK?_³¦n·›E‹1{Îl>øÁ‹Å4]kÏ‘ΌǰK6¥+ëñ-®£Ñ€ñì±i˜&¡æ)\¤ÒˆsOzm; x)?ÀÀ^jã_ùÍŸ{øÏß 3<\bÔ¬f‘¯Ššˆsð©É'‘p8LKK ÷ÜsÍ›ñy}C~²T.ãÜ×ËÂS’J¥( J\9a¤Fb¤FFÀë¢x}3å§D¨çOÄíó8…ù{ø[z'í©zN£¼|ûŒÚ:… É pÓíÃ<½)»ûÿ/y穼þ²œS§¼“ßçßÝN544 …^];µp!©äX;u2qÂ…­¶M¾§ IDAT*>L6†¨Iñ£i¹Ç}\¢'RAuód>juñûÜFE6ïœGcýÞ*u3Z8­ÙÍ-ÕXûÆG”)/Žg†Ë "ZÁ-·ÜB4¥¢¢‚`0xH§·+€×ë›~›~r4¿ø±Í¦Ë‘Ic;Uåjˬqg–a¸0|Aª«Mj«mèÉÒ6˜arŸÉaswðë” ”Ò#¬oË3œõÑ8½šÉµÃ<“cVgjòÉÔ!ðûq»Ýx½^¢åÑW|®aø|>|>~¿ŸL6£Ä•¡kØdFÒdYpCC…°ßd¼¿ÃíÆ il0ˆ dsY6ö¥™ñQæqí~ŸR&AjdU`–˜8É‹åÅf2ÉP[Cåµ”yÁR&'ÇC$k§*¢x¬Wvâæ^í”o¬Ò4áã¸nvФãiò©<¸]4Vùð¸Œñ×ͦ+¤¹‚=yF³YÚ2œUëõû˜F7V¤’²€‹–›ãÖ±¶!—Ì’ÍæpêüX†¦ \†‹p8¼{‰Ûk±ù˜ØÒ×ívS[[«±ûž!9œ [‚ª2/×8-znÖ0õŒ ï(åÿgpûs=ÔT¸™SWIˆ±Évf”tûÜøó .~Ç,¾}¡µñÏ«›0"Õ4‘rŒ¨«;üC8Á`P›È $CÿÖQ†»SÔWøùÇÚ­ÁC¥qY¸Ëj˜w©Ÿí+Üüm³‹ÿxº“3š© ùÇŽmplF¶­¥mõs¼yðBîÿP3 êýmš—,Ï—¸ýÙ.Þ2k ¦ÛÀ‹ð7MÅìÕ£w{”ö•Ûhëʺh2!ÓÀ«ç ÇÓ4™8qâkz†ã8¯zc,SnæàÕ)•(mò%p[‡vöÕ ïaŠ”l‡|0M,ÓÀr/nrâ88v‘LÞ…iº ˜¤ÿÑ_pmîUÜuv•6D‘C¬w ”l(”Àí±0Ýà6­î*å KPtÆê.ß®ó¤ džÄVüf#Ëÿ·—èw>À… ªüØ;i»k-kîÚÎÖ¯þÿ0ÝOCÈ­l‘“¾n~¡^-9¦×Är‡4«ÎqÆê÷\ ÓÏãÂàå7ÏsòiëþÌõÿQ$¬â“_:—Ó+]¸ mºw2{á8®Cž•tÇ"Ãmbº_M¸, `½Ô^ †á¶ø rFzJœ=ÁG8âS…""¯ ÞñŒÕ;¯â=ÜnØÿühÀ@#Ó/« áœ"ž&eÞ]ÇLšd.Ï€cÐöci‘¾ˆÈ^õê+~cì=‡0û<Õµ®õ«¸é§C̾üZg60¿\A«¼r \eŒSÄ.æHÆ r¢›r¯Š†ˆ{/\&ÞÇU$=2ÊÐî¿ÙHÐ;R †›¯[›Ë‰ˆ¼&}J›|*E¬o€Îm½lqÑÄ ¦LŠR÷R¸Ê«–K’ìgŽ6sýÔ–ia˜ˆ{![yþW›yà–MÜZ8À3{w”†–F~K³„ED޲¥Bœõ¿¸‹ß, p+?½÷ Ì BXQ‡(p•øfH'ÒüÜ=‡ÏWi®T’ˆÈ±$O1ÝÏSyŒÎ9Ó¨ý¯«X;sMëì"ÉuKùÕ_¼ü~]9•!°4â*"rô81â›zyê_ÿÆ—úª9ï=3ùþ3XÖï¢ÀU#»X¢X(0TÀò¹ñi¤BDŽ©‘ƒSÌ2Üå`ÏómŒPWûÂ̱¿¹,o™ ê¼x]{Ÿ/(""G¬‚ $¶ Ò·aˆ.O­gRKMµ~¿Ÿ@ ¤\9ÁKöaOmÎ$""""""Ç4®""""""¢ÀUDDDDDDä•2黳Óä IÚ½‡tYØWKÄ[K™¥ >þ•°‡L®ˆßëÅeGà3Jd²E¼^ncç9NRa„öÄN‚¾‰xÍ Õ^·²ENèß…8íIp»,"exP}lGÉç“lK{iˆ”á·,<Ê9î×L£ÃËùÀS7ÒeçO¼™×O~çTû± Cù|r›Bq˜|!Ïúyæ7OÀcî§%'O.?̆ÞÓëêû|/þ¹8Jnè®~ês\>õgLÎåÝMaeœ°A«c§).å¦UAjÃU|úìÓ¨\G >.&Ûèï–÷¯­àæ×ËÌÊ*&¸ô`HDDDöwBN~¤ãÛ|å™÷ò«Žƒ¹¢rù8í@“^Ç£O~†ÿùˇ¹.£Îø˜ÌFwþ‰»ú®¥é.)åå$–ÛJ:þ ¿~úsüý̼»uáXÐz˜êãô>; Z‘Vj›ÎåÖÈ¿roÇþsû ò@DDDÈ<^nôõSî`b°Š³ªü/ý"§ˆ1²œw>Å=}ëøÕ†hò_Èôhš6|\¯Åâ(ùBœ±1Ø#ñ¶] WöÛ¸Û,Ã[y>?û»{wM([ä„ïý-ý£›¸+t3ß®ˆPã7´¾ÒúxNù›¨ v×džáÇò40sêÇðlý=™çx¾êSÌ-»ŠˆˆÈq¸V…fÐXVǬª—9Ö)€;I{b'eƒíÄmÄsg‘. \å•0,Üž*fTV)-俀S •ÞJ"ÝN<8›×"hÞúx´P$¼W}ìÂåò Ï Ê^B&“£3gVØÂ¥e"""²‡kª°aAŹ\<é2~4óRpn%ž‹1šWF‹ˆ¼´dÖ±fgŒuý~¾4}.µ¦‡W5¿àõñp6³}lx¡â4Þ[QÁ›Ì8_m_OÌ.¡j[DDDödžˆ_*Ÿk'•¸ûà/]IÛð:>¹îûýé’)ß`vE+W³g×Í’t®û*›†ãü<÷þíœ9øb`ÇóåøØø€cÍ¢¼òC|yîê<ž½vÉ,åûˆ÷<È·ÔqÆÄZÎmtÑýø¸·d3 „<sÝâ73%¢Ê|¥÷¹'Ù-üé©oðl¦Ÿ{þÉš‘òƒSfìwŸ{Élg(þ<ŸX}ñbf¯?-ª»šyuWðƆž}vüMÜËàΟñ…ž7ñÞù1ÁÆÕþ¾7èÝcNîûfßJkE+sÊÆþ]]ÍèðS||ïiKm¹Ùú\Ýååôú}?o,O¶®¼ŽGâ]Ü—ÙŒÆp}„wNŸÏë§L¦z×Ó»”$Óý>³á¶d{‰ÛC°ý®ëñÓàmâ²™ßçò† Ag”ÌðS|è¹ÿâô‰_dRd:o¬AìIÚF¶pÆßc7}ƒÕÕryUÙËãÈ*úÿÆG6þ/¼› ÁªÝßu,#2{’ëWþ˜í¹á½®X¸læ÷¹ ÖOµçþ\…äzþï©/³¦˜æYgï2ðReuï2°¡ø*Þ¿ò‡ûýiQíÕœÚøæ±t9àçç!ÛΣÏ߯úØtö¸®áR^ÙÉS«ÄúŒ‡§?δÔRi™”  ¶„ÛvžJ>0œÿ&ùÙûs[^Ï#Ï}û›¾Ã»ê'8bOòÇοò“ÎGöûÓ[gþ„Óªê™Uæ=àí¿Òr¼_hX``Ó•|©Û¡«¸÷oxw¹z9ù“C5/]¬ˆØ9ú·ßÄ_²çÑaNáëàv­úØ„©®¾ˆZc%lÿ·Ÿ{ïרNŽÌh}ñ lŽm¤?µz¿wÚ_‡ÇeRçkar8ˆi»†§ ù>ÒéÚs)Fˆ%6²=±†þÔ®‹Ýn¬õl,ƒò(uÀ‹m»D©g{:Ì´d7ñÄ([ÒëØaÈý8ÆØ}f[èï>'†x ×îaôR~t®ŸÎ‘õlI®gK¶‡þ=/v»ÁXÇæÁŠýï(‘I´KnaÇðF6'×B)µ×çoÙˆß;•ÁL‡ ¸Ý»×¦9Å$ÅÜslNO£-VOÚŒcŒ®au’½¬¶Ç» XULUáwSÊQ*ÄiKo{W \ÜÄpú²#Œw]l§)•2 Žl¤}t[ÛéϨ_¼‘öxMC>åµÜ. ÇÆ.ÆÙ–é$žØ•`í¤2ÐV²ImpJ8¥$›S™žÏRùÂg» \Nj#qâÑyÊö ü O.;@<¶•þ”Ç0;mgl×ä|®Ÿlª‹î¡ ¬Nn ›ïÛëú­í±54x'“ F˜ Òö…2°mx=[’ëØ\JÐïì]^²¬âà8²É-Ä[Øñepóè&"¬Ì )Ø« `§Éçcl‹­§}t3[S«wþæÑMT&Ók9Œ¤ºˆg´åKØ» ‡ãØ”òíô¦[È) ü†J¥$‰ÔjÚ²yÅ=w×*Q*¥È&·Ó[OûHÛC±u”›%,£Ž‰¡À~;ß¾ÒrìâÅ|Î&·‘Év±qdÏ'Á.íý¶‡¾è|ª¼nÜ{=*a;y2£mýÅâèîúêÐvS·qœ,‰Dqw”QOA×ᘎ³}ì7Í}êãƒWË[AÀSN}©‹mé,5>/Í'æ³U9‘×B1M¾”"]xé×8NžtׯY²swôÕƒç#4”USÚó5 Ùlxö"nM„Ù\ôÕ¸ß{=Ùõo<Ù»˜Ûû>ÍoÎXD¥iáß«'X‚RŒmm_dC:ÆŸÓ/®Ûr:`ð߸qèÓüý¬3ySë &ïwÄC޾¿±>s??4B8V6HUä,¹Ápc¸üTXQ†íP£Ü&!·o÷È®m'•ÜÎf;ZlWã>k™í±k‹ÿÁƒ[/àÁ®3ùîß]ÃÜ2?ÃÀpù¨ð”3lg¡”ªÀ´ˆzÊñ¸ v%ã•5SUHðÃâ ½›­1ÐPC£±Ïç;=ô ­dÝöGÁó%š"~jü»‚B;Æ`÷oYßþen©·u€~±üïÏW6™Ú\œ7PäŽ^B^sÃQ­s‘ã+p½wÃ{Á0ùúÁ†ì8Ø9°¦ó¾9§1-¦rÏ×ÈFúúþÂG‡È,¨žÇ¿Ï™Föê o¹žõâ ƒŸæÁŽ{8½*ÊÜÈž]Á•Plç{Ý£\4éf¾2ïJΈ¤H¬aÓsWòù‘¯qwïõ,s•sWkÃ^E»ô=–ŽÌ`]á¾þºw23è%èrË‹Ïí¢_Coß_øÔpšTð »ï3ÀÞ#!{Þç’ÎÿæuµÌx€$ƒKéhã_¸ù쫘S½ÇWÈ%×1Ô~îü›bŸayw—7ŽMÁ-åÉìü=_f‡ë*"oâ¶SZ©Üs4 Hôý’û£<Þõs’¹9\TÜ?_Œw0­òT®]t3ü`9J¥aÚ—½•[†~ÃæTŒë·Éý­õTEæQUÖÊoªOåág¾Mûè¿iþ¿žÙH×Ëeá1 †zî 7ö?wàí³þg×w÷îýp.–-ùg–&çáâ6Ö ½‹)~‹7Dpâûùqå"ú†ÖóÇßæ®æŸñÃi“h 0ͱ3'÷ßføu%æÎz¬ÿ6ý©O²#>“Æè^‘ ·ó|ºŸÿ4üoÎi4[^B€ãHwÝÇ#½+øAr2T}‹ÛϦƻ÷ºÂR~€¾õgðõ¾¯²­ÿõ<Ôù ÞÞ´ÿ´ìü€Ä‹eÀºžo¼î½Lô{÷+Ý›¯àãÝ_ccì3Ôw71aÂØ9µ¥Ü ±Î?ìU~~êlì½ãk²÷.:ºnâ£]âñ®;v•dhèolÙúU(¥¡áG,®žË×'ׯ ·ÿ/\³ùÛ‹}à»ð°Ö™þÇhX>ö[~‹«[fòÖ¦ºý~ëýÞÌý}wòËÁÕ<Øñc®˜PE÷%ªÆC)Ç–µ;ŸoèäñD¸>Ã÷.<Ÿ‰a§Ùuce<ÖÎküÊ÷1=¦Æzñ; Žl×wØ<òÔîúêe¿Ã~Qh†Âp;ß°‹¼.bJ0|ÄêãÊÿyÃx|)A2F._A ©‘ã)pÅî{1yIAp]Ë¥-Ó¹pò¦"D½/Œ^Ø@?ƒƒ+Ù¼íq(ÿŸ˜y&s¢ÕTXûO¿4'~³ì<>™þ2w·¯!`Ì !2a¯ Ãäõ“ïàü†y,ІX~¼ÑùÌ]x×>õeOô°ygý­ ”ïîð;@’)³8³áæ†Ë)³^m``÷}¦BÿÎ'fž»û>ÝûtX÷¼Ïßo[OÄ´hˆ4PA‚ÑDš‘Dðà1ƒø¬îqŒ?2‡àÌ%üç°Ìj‚Þ–0H:ÝÆ¦¿¢Ç÷1®˜p oœ0ïþÓ(½5o$šÂM©pÏF9?óëæíNÀYÍçsJõf‡C»¦QpL?3&_O$óK( Tà4L ¦á·¿Àç~ñ „¯ÃWûnŸìP˜F™ÇKÀܳ'íS˜5ùÍlÞùÄvP´wMÆÀ0¼øM~Ó7–ÿ®À®4ò£@º1=eDªOáÝ®ÿa{j˜{‡ú9+úâX•ãø±¤Û¼”yÕ¼n.ò”JÝlÞ|/ö<̪·ñÝù ˜ â1\{…Žiáù{Þo‡ ñ^îo_ÇÙ c3‚ \G_,n>3„ßòîW|³—ðŸÓ^,cv•öÿ£Ç÷1Þ2ao˜0ƒJ+¸_ôÔ¾o`ÿ:ú~ÜUÔͦ"·“¡ä›GË¡ü‹|bòbæF« Xcc‘¾è)xýu|ÏqqËö?ÑvØÎ;*ƒtv<ÂÖá(ÿ_š:­e*-ï~Ǭ4Lù&¯÷üêæ·ík˜Wy:oåxçC*ÇäqìQz{O,× žf>»è¦‡Ê ¹Ý˜8`ÎãÔIo 1²‘ßl½‡ÍñË©0½ÔX&ÐOgÇ#t·ïõ*,ï~õUÔoâY¿»¾šWy:noÙ~¿Ã)Ù92é.’N‘o€zðˆÕÇA·ëe¦ q»ƒDC9YËH2L¾žG µˆˆˆO«5\jÌ=ºÌŽöý¹.p,0&Î`rù,¦ULÞgº›N†L>F<Õ ÑJ¢V‘ ‘ –N°•wE‰6ÝÉâ¹&²Îž=vµ4”ͤ:XC™õb@ãv‡ FfÒdú©Ì¥qr#dˆì3HõE¨U4÷ VpÒ/Þg¤|Ü÷Ù™"žO“uÆÖɾ؉O‘È0lfp½pŸ®0–ÛCYhÓö}K'G±˜`8±‰By˜°Û¤Üd$“<`€d»«‰¸\Œfc”2cßÕÙë»VQª¥.TIÐõbúXB“(s‡ pèEÂãoÁÌ ïO…|Û)0Z‚œé£èöþ2é²0½•4º]ì(fؘNQÜõpÂÀÁ¡@:¹Ž|q–»‘¨g, ;;6I,¹´9O0B••&‘I`Z¤ ®j¼./>'ζä g,W)s’Œdû4<…ñ—xªƒBY˜ 9Vb镇¢«’¨FSce ë88Å4ÉBŽþRÃ7ƒ)¡ršý/F!.³ ¯ß`Fxåfð•û­'2½Œf’©¤ÂÊa”â §ðr£Ã&DîÔÉbœ³OtþŠÊq ‡éô6 Îüž&¦VTp¿Pñà  5óÿÙ»ï;Êrñãß©§×í}³Ùd³é - „Dš’+Hñ‚b×kAE{C¹ èT½xÁ†ˆ"ÂU.*½‡Òë&Ù’­gwO/3óûãl6»›]ÈBÂ…ð|þKvμežyÏy¦¼¯Mžrß‹¨Ø#\öµaïxµ· ±)Ú0v¼JòÆ«—è-§@>ßDðè&]{ ÆãIwŠª¸M Cä Y²–|I !„â –¸^8÷—ÌVrÆØ™7íô?È9O|‹žL¸>ÁON]A…aœìÇlzD>M—½ ú.æ«HÉ>Pv“Ê73œšÑ÷³fƒ~s£¥”{\ûu«¢ ‡ |Öy«“¡ ”ºÆwxÔpSîõ£*ê™ÞWÏN£ží¤sà gt*=5T•ûP¶AÇøÎc?š5_ÏåKøî¢üL˜ˆ%— —Óû¿ÁoW@”.æzÊ@Õh?yA}³ÃµÌMx‡QQÀ]Êñš Ÿw¬¤…8»×]NGÿ߸bì$½ZÕÁ JÅ…æ­g^XgW¢› ÛéZ8ƒ*@'‹mµ³£=G¯Y‡»d!už½¯EpÒƒté[H¥náÝR`+¸v3”²‰xy™µ‰u nL |Ÿ¯=ôýéÇ€=¸/ž?ðN;TfúÙZˆógÕÅ%•õÔ˜®ý–WQ Ÿ¯]õ¼ãâØ¤ÏÊÓ]xú.æã?–ƒ²›x6K"ãNëWÇY{ˆA›Œoîà¼}10†§âtj+à/3?>þbÃHöŽWÖßhÆWS³ 1ÿ壄ÝÂî×b<žŒCóô«“/g!„B¼A×I©(YÁU`ãÀ6._ Àâ’ÙsyÛÌ Wø2}lÍÇùÝAy$ÑJ!ŽË`’ÄÕOÀgàM(LkABÇôÀA©gtÆÕQz?7.à²vH½M7t-ÏÅ}\ÔîÆPVòö¦ã9©qnÐ2ƒÄ2üÂy½@Š\¶‡«>8ai‹d¶í5¸[££ªaª«ßK¤k Ã?gûÀ Ê" [ir[¸Á¶© ”q~E;äÐÎSH÷q›]`à÷ñÞø‘zŸì`ü;»£1ÂPÎàì¦ã9¹q3ÝÀH Üz¨c@ÑÀ]ÊrÝ…?÷”ZéãQ+˃Îtl¯ÞPm˜Îx,„Bñ¦J\Q@õõ5P•K²Àµ›S›Ø°-^N40ñ}< ¿â!á>žV‹®¿l)J#þ ÞqOЩÅÄ…ÉžÆ+>êç8¶ó ~u*ê¾zºŽ¥Õë=ÀzΠÑÀ«ë¤Q\žz*Ã+9%ëÐo)8všLê_¼î€ ¥•-CÔ6PQÄ«¨hŠFˆ¹O¤Ìíg¦ùòs”*Ê,BeøT^“™@séí¤S;Ù4viÅE]èTê<³F'nµ2ÛÙ‘é¦Ï:4§é¯'jn£ÕÞÍöDœ%!º!—ÙI§ÓJ³YJµ×=掦‚¢hDPÐ[ÁÕÀ2Ÿû¢½QƒßP÷MJû2´½1]ÉŠ¼CÒ.Æ@6y«3{cÀJ[‡fÐ0Ø@mec$BŠÎë-”¹}Ì4ÍŽïtÖRQ5Ü(xæ¸@qŸºZNÁµˆ¥>7¦ª½Ì§< 4RâráV_ã[± {Ç«iÃÞñªÄåš0^½Çc!„Bˆ7Mâ:"¸”ÍäÊZ“÷o¿†{Û?Äã3Îèä IDATiƒß.;’ ¢Ÿ¨TpGi4|¬ÔëùMõ7¹¼¥šV¿gë޽]eÙÑ7ÒÆ+à8 â ‹L¾¸¼Ë—¡(àŽì«gÕ—¸¼µyšõÜÇô4Q6û&¾2{¤fù^ú6þ;ßïèå±ôHÍ­Ûyh·Æê˜É +N¢Á$ä q¾7U\Î…õ³¸°*:íò3‡ô [ îú]wqõðÈR2ŠŠO/á‹~IJ¨â$Ðñ?ç»þÅÏ{6üŸêІ·òXîBí\ÅÕÛÖ±¼|!¡|7ýÝ7‚~5M‘…,*óx©ª£»£œ©ª<8›¶ŠwqÝüU®dzš¨m¹‰«ZöÅ@Ïúµü Ë)Æ€cƒ½7 ZN+#1ðN5ÂW\ÎEõ³¸`:1àä!¥¢¡ àPpll&{íÒ± p^â×<&»äضmMx¨Aw”£4ݵ¿T“¯/¬§Ì0^ã¤IE}¯Ûšb’j ›|>KAs¡+ZqÖè‘6DFÆ«C×EñR|Ú>¤ãqXQ˜:Ÿ.ÆÇ„ä…B!öþÂ;<˜¾&jæÞÊWôNÉÜÊPß·ùŸ]qbÙ¾‘Þ0~ÃK¥•‚]›èͦéÅ%®‚Â÷i‹%ˆ¥'ù!ê .WêqERë×õ¶žÐ¾zîÞò*ë9áJ…QBù¼?sÕ©ðàÙñàÙãgU-¬t÷ßÅMٌⲵ€Þ±¡ázy‰•a^sÐEgO‚{ ôgÜ|Ú?¸÷쇹ûô»XQî™,«8³îž=fpø¡CT ¨"ŒÒP•†gèì[Öî-<Úa@Í,‚(eãÎ:Å¡ ˆv‘ïÜAÓpéÕÅ@傇Gcàïgþ‰ŸUµpŽ{ä}ì4£1PãdÑ;¶1/ÆÀ42zpG™i8ÏÊq[×.:²Y&Î+dÛ9Rý«ùgn€{§z8Á¹ƒtþaúÓ`OÂôÐf:‡Ö¤YQÁ¦T3¨ÈÁ®MôòÄ_ûQ E RVñ¦Ö‘­¡==ÉqÎn'5ð(øë œ»z÷ôÆGÇ«RͯUT=Š?x8·Ë29tãqÚz©Q$EÁJ0”°¦^?Y!„oZúáÓ7¦«…£|†]òîMܾéZC‹F–¶P*Buå{`ÏÜôüN–”Îã]­ËipMÈâëØ9¸•ë·>ÚyœÒ0“cë«Ç//aõðëµe¸éX”†94˜Å_™ÄVvlü.·¥w£–”rvyñýF퀒?¨ØWÏžÿâ¦ç»GëYëš0'ÏØzªçprc ÇÕU͵ñìú;Ø6œçiõ4>~ôR*].|¨¨ª¯ø(¤“‚lŒÎ„M.Œæ-ÅïVÑÔRT³”†jp﹕»¶mf×à2.Y°‚&{ì ‘l;™äv¾³î’Ω4Eš9Á¼Z†ãÕ&¯Ž ¶•á­ [K(Wü„G#º\¶uO^ï7±:oÂg5|þ”•]»þÄP©|?µuÞ_VÍ<pÂ"ªZE]•A4öCñ.¾õP?[re/5c°“…¡UübëßÙ¯y9f)QMéåpœ<ä¶óÌú?±m8ÏZcìçTTÕ?ùì`1ò!4O)~£1PW1Œ»çVîܲ™¶Ø2>¸øtjLÆÇ@¦Áá|sý(ê™4Eš¹`A+Qw5å¾­¾]0ð=®oû<Ç•¶ð±š’ÑÏ ­åšMæñÄNpÕŒ?T7^ß9èÚ½ìÊÄøÍέ4(S L'¹6^l{úžšdX«¢¢ÄO•ýôÞÈuOöqZÃQWÛJ9á\^Å¿:Ÿåî=›A{;ïY¸„ÆÐäËáL U SQuîÄ*Ré-üà©Y|騥T¹\øp€;O÷À3ü.×ÉÛÃQf¹}#ã@± –R¯ö¶aYMëþãÕð*vï¯Þ³p u¡[GW]ø<  äèË$ˆ¤Sgÿ:øãñ±GQ®¹§èÛ$V!AlØÁù„}å”»äKZ!„‡]⪢à!™EÉàVt^$6¼“®t3%>/aC\¸\a‚Á™xzž¡m° 7Ç%[ð7»¯’ØEÇОè}Ýs:‹rù Kª@€ÎĺâÕt&"xÝÅÄ5ØEG쟦ã/¶XvžŒ¥Á0ܯ“w…B!‰ëÁ¦è]±Ãëùn¬ƒ+.ç?ÛnaYr1?l..…â/?›¦Ð"®ÏogCÿí|þ+_¢‡j¸òˆ™öS>.]˜ ê™\ü ›:oæ³['Ö¥J®bAÕ|N¬òO»){ëùÍásù~ÿÕósKŽgI´‚rðÌ娙gã >Íí/çÊ_º¼¥5 ¬¬_D¦cx›©œ'WÄWò×þ‡¸#õ_{è;/¹/:š…e ©:ØÇµ° vœÅ¥;`iÍ×9¦öb.¬¯¦ªÜ‡bÆ m’å~&ÍålþæL«”ª‰kÉØý°ó<>·0çñEæÂº|ävĉÔépâ*&xŽ‰Ë¸ì¾‹Ñãçm¦nÞï¸"ùïüÏÀCü1ùW>ø210·Å(¦´öíø£­\þ÷÷ò³®Ëx¾ Þ±vlÜÖóÞú+0÷ÜJ7ã—DRU_ÉbN2ÿJ(þwïy’ï_Þ;j¿ByåÑ|¨ã*~1¡.%3®daô ®O¾“ËúɽÛ~ɽÛ^¢ËÜ ¹òˆ™ç÷„»­#ûT |µoçÒÞy«º†+¦8Õ™PvóJ‚ã–á)™q%ì{¹>vüµaïx5­6èÌè,>¥ªÜ˜Šóœ1Ì¥„Éx|åæ9,‹ÔŒŽÇãŒ.Ã¥?ŒË寇B!ÄÈϥë9  ¤òmÌŸ÷#Þ­€¿óktï¾'c{ß-sa˜´·†ï,¹†«š.˜|W¡«˜ßt¿?ý>N®ðR·ß”§>0æ°ìÈßóÁ–ËùòØßyîå0ó7Ürô2ÞU[ö |ëÙ|̃\ÏÓªJ©SOOù,jþ÷{aWõ$nå“|ù-ó™Å—ðö*†¢Œ¹¦ éˆ;xï‘·rãœ÷ƒ6ÉÌ·ÞK¡ò6n>ãyÎmheAà`K <ó8ºy%§¶¼ôWe3ü.1LÁ±‰Î¸šYsäçà™,“3[¸pÑcÜ~ÒïùϦKy$I $GÕ"Ñ£9½õ#ûÚç¸9>DÆ™Î}· †9“E >IÐ,Áë/åÒÖ#¨Ñµ)’ß‘X­½„#}œÛ~Ÿ9Ƀj#”þ†oŸø8?8ñj–E¦wµio üáè<ÌÏñå·<ΧGb`ìu-M+§éˆ;¸ôˆ_c`ÒBÞ‡·æüîì5“Ä@—gÇœv_˜±‚OŒ]Ð3ò„š~ʹ3ë©ð¸¦H¾çqâ_à‚%ßæ]Êøc{î¼û¹`Ö[XQ=Õ±^¼Á#i9n ¿Zôe.®8iòÍ"?æß?Àïßz'Wì}?úàŽIuó®ãˆeSÄjÕõfýŒ»—- Ö41'´aïxõrm;^M¯ .T­–µ&¡Á]:¶¤w®÷Ùõ© ãñ>éÁÍtõp‡v)ßjlàØp!„BÆd'¯_šÝUɲò•Ô{ßyó8&¢›9]!„BW!„£Lw^K£Yk£/™DQ}üîCöEáØ ¹A:†»ñ•6Ph$$O‰ !„BW!„Sr5á5*yײ¯±ò騖ÒTv,Uš÷JrCéî~š+†¾Îw/b^i‰!„BLêOÎtÊ)§ÊçÑôÃå2ºE6µ›LÞfȉRaj šÄ’¯€vŠ¡dirF55sŠY†ÅkvL CìJ‚ª”|‡ì}S§$ŸO²'m úqëº\MB!Þè¿$‡dl€;3… î÷÷W:9Ó!ý iË—/§··˲£ÃÑ*)^R,ã‰'žàاp»ñèÅK±LË)¾Qõ¸QÛLCU,‹’*Hå‹Ë…].tUÁÒ@S â..S°³Åå’|†1ZÞP6KÞv^Uyƒ#užny·U)–Ëë<ÝòÂîbÇ–ç5t¼º>®<€èË”—.X$óùqå=&¯´¼±Çd:åMuL¦SÞTÇd:å­óØòO£¼±1ðJb¼ù0ñÉbàÿ2ÆÇö‘ÄøôÊ{µ1~°Æñ±17Yy›6mbëÖ­œvÚiòE,„ø?£( >Ÿ¿ÿàN”qHï¸ ñfµzõjÞþoïäîgŸcvEµ«zúÈl4–V”¡) 9ËfUwA—ÁÜ’âU¨öx’öx€¹¥a‚¦‰å8¬êîŲÁÔU––—0œË±¾o€Ú€o´¼õý1†³ùWUÞ ½ýä ö´Ë[TVŠ©©ä,›zû°ìé—·¨¬MQ^¶<€¥Ó/oì1y¥å=&Ó)oªc2ò¦:&Ó)ol_iycë,1þúñ±}$1þÆŒñ±17Yy7Üp7Þx#O<ñ„| !^·d9!„B!„‡%I\…B!„B¼®É<BñºeÃ&ƒ/x÷M•¤86Nn˜ì`–lÁÆÊXhn™*îÃ;G~(I!›Ç¶T9|B!Ĥ䎫B¼nõb÷¯#sÖ<¾ü‡¬ùÕ*:†‹³8¹ÙçnäÉ·¿ƒg/þ Cválé¶7ÅÎÁÐ lùô'Øð_!Õ ¶%ý"„BHâ*„B¼.d)$;éúãw‰íÜHòÕÏ“(„BÖäQa!„x£R5”`#áãÃÔKIDM5pß °- ñ¬BI[…BI\…âðdøpÍ»Å×]8n) !„BˆÃ<*,„B!„âuMî¸ !Ä!cAbm¿|uÇRijYlàY Ï»?u x»Ï'É®{€ ¿|†”^Jℳ ,*›tSÇÊô ´ß—"ÑáÏdH×Ï$uÎûXrL9…õ¿"×¶ŽìßlÚ¾ö=üå*¢#;ÈõQèlgýï&±ü=Ø•¬ù^Øví/tÐùü`¤}Ðý ÙsÕÅ„BæÄ™rí<ÙÍw“~d3ñ§{qκë–ÞÁðÓ? ñ»4… ¨*<írúÈå8õuû>?ÜFn÷.VÿHårä-Åíæé‹?Gý¬Êj|/Ñi6"öà­ ¶µÑõ $Fމê ñÔ[?@ó)Ò÷«3É-dz'É®êg9?„“ÞJvë³$ñùtŒ¦pyA]Jþ¤9XËf`zÆïÇÞþw2On ðø6R{d{œØ¬«¿DÒ ÝgŸ‹}ÚÔ–É$„BHâ*„‡R!…“êÃîí ñÌsXÏo#a“qðq:”zÕgN¯ ÛÂncðÑÇIûfàÌ; &Lò£Ø9Èå°úIn{”ØcC$6ï{¶Ð’"¿ ‹Tƒ»wv÷vHÆ èá±™o;3Àðý1XsŠíà­KBûV2/n wß–}Ûª%8%>â{0œ(\²hgx7VÛz Owa/Ka õ‘cÉ-ÿ$ÿ(X©â¦ý€³ât—»ÄFÉÇ($;Iµo¥ÿ¾‡öíÓëcà˜vÂ~@ÈÀ¡xq`|¹yÈ%±†zImyžÂÚ¸oL…Jé¯>•ÊzÁ?ay ÃØ›ÖcmÎaUKv¨gp™íëÈ=öV"OHc€ÛD«ða4‡°ÊƒŒ¾Äê8èÂÙ±‰ücëÉ>„óÌ“Ø@fÉrRY9…„BI\…â³Ûî%ÿØ÷H]ïदÞ.ýÝ+ X ï¼ÿ{àrE›±^ÜDê?fÍdéܦ5X_ø0†>‹~~7Šÿöéôbwl%ó‘ý³“,»«÷.vœu]ïû$®• VO™áƒ£÷Îëèݽ‘¶?î¿ÅÀÿzÔ2ô+¾‚±áCl{tÜß'l”J¢~û£´p>mËÏ$°²ž‰7z•á6ìµ3ü‘Ÿ3<®¹„æîÂÎ¥ItmÇŽ/žxL H&`þxfÌÂÛPI:Æt—†'hãožÃÐÖJ>Ó;H![À²UÁ1}(ª‚¦¦0|*Š˜&JI)jè~/†|; !„ãȬÂBq%Úï'“ØŒRUúÑÏS3¯šúò i:®9§SyR55§o­Ùñ$N.p*aeqv>Nîá8¹ç*ÑêÎeÖõ'RÖdìÓÈŠ¯ ï¢wsÄ7.&8·îwn¢Ì˜‹ú‘ÏákbDƼ›«xQ"˜§¾¿ÛƒË„Âì$LºX©êÿr*?}<ÕZHHÙû0³‰æ)£âí—®ž‰GÕÀAýÈç)Y~ìøþô„ÑZWÐp†‹Hë&œì£Ø §˜,ز!Û¹™B¨ç½—3÷Ô´.,_—‘å…š?pÍ—6â$ï$·¥«/·ßW§â ã»ì«Ôó6æ4ûPÕ1Ó£”®¸”àüQ±Àê"›Ê“Mɹ!„B¼RrMW!²ÐÉÿEbi‚ÄGSàv£ù´×¼v.Éàúbg2(-M¨_BÔÐ0€Ü~É£ us0|ALU!g¿ÌãÂîÓQÃÍèõ~”ÉžgÕtŸ®b+û¿;Žßï8’@Ÿà„'rUƒ` n—G’p/Go¡†Ìý¾Ê5€§^ÅØl±±bqœ/ b|þ¤vš¨ÁåGV£ù§žËUÝŠ»;‹žÿÖšÝäg”“n0:9°EõœHYC ¾°‹âcÙc¯(£x½hªƒ%§„B!‰«B¼Þ(†\Šw’?:)ìM_ó/ž[§ß±ŽB|Ò9p_…4Ž• ½3…WP\:jYeÊglTÐjQOò¡F¸íeW­ôJ4ßKÔY9Àö*N}—KÇ¥ì7)2(* *Šâ½Õ§¡Lšs*(ª³¯GwT€Â0©‡3ä×vâ¤c俱u^]Sp³ÎÈò;†Édž±ò6ÎcŽL“…}‰+^½O@Çpî­÷Á=¦B!„$®B!6§…Ö`š¬•'m§&²úz(ìÞŽµéI’÷;Åw1z‚cSÀJ+`{@u¡šÚË”ãF‰ª¨•/?9ª4×äï¬N;ËWq<ªª k>åv(îb™Óê.œÞ­zt™‚_!„ÄU!§÷Ñ?’ØÐ¾(úç¿ÎÜ%Õ„Å…Võô‘+Øh8àXÅ%[ò “¯óJyP4?ž/ª‘Áɰ{‡pìò)ÞKuÀÄîÍát†_szÏ *FaÎö<ö …óRËÕÚyÈgqR)Ð °m m!„âÿ˜\DBˆƒ¦NŒÔÿZäփ⿵Ê@qM–+Ú0ÜÆà?ôÞywÓGdîgPÝaœM1ì<Ï@ÞbÒUbm v=Eþ_}dï=Üž'ÖPÔ ž # N"KþI&§\¦'»ùnRw_ËÐùbègOx±—´·BñJî¸ !ÄAæä€Ì5FvÕ|ìhJö­áâ l"ß¹†çþð$©g¶’O‚dQs¡4‡¹ü7¶î!¿úOl¹¬”¦/Ùà“¥ aµ=Ëêoÿ–¡wÌr|xQ§c¢ IDAT4ÿ¢âY÷ jòì{Ζ°Cdñš–×ïÛ®…އÙ~ëô?½'•C[Ø€^Á%a-„BHâ*„‡IŠèè¥>”Î>È´aïì&ÓYJºPL­¾¬ÎÝØ;·2¼¦ÝÐQ+|°'‰c98ë±TEwµ.‚šŒÃ;ˆ?²Ä»kq»ÃX}ì8éÁ lˆa)”8±Ã.sÅ5¡—nF-õb·o$±± Õç'ÝâÆˆaY6'K&³¡íÄw £Ô6¡•нæ!xD¡z…;L!~Û.¾aÜVÃ@ÇH]\Ñ_ ¤Öýáaö¸°¢Bp>æÛ ø*L†>òs”{~Düxæã7ýçÞ,:õS_Á3Ëî?4±¢è~¼u šìVaè|âÀŽ÷}‚¾óÞÍ’9¥„BI\…⥯ó/ÆçOpéSÄ¿ü[œÄødT½à\§ŸÃG5à²Èvï¬)ƒâiÒ€ç`UÆ?mI#{ޤnÍ'Ù~ë‰ÍcfnYˆöþÏsì™-l{䆶¾ÇÅ 6¢ÎüÛÑDºÂÚiÿëØ$Ýž·QóƒsÑçV1hب‡ð®§ê‰:íVû¿ÃÀÓÏŽÖ%Ï öã8~9™„BI\…âÐPL?J¸µ¦ý-Çàµtud9œlf7¡V•à ¹Ñ¬R ¡úòePBócK5Q ?êñˈøf¨ bêÅ’UC 6>þ8L½”DÔ,>"<6YSM0uÔ ßÌ㉼%…Ñèϧ&ÒëghªÂÒQmeêåpÕÅÿÖÑj 3CL}oX̓÷„ãP2•h‘Z2:ûVâQ”`Zcýè2œ¨EŸ,AT7îyóðØCèFUS&_ÐGU1Jß‚¿5EØ‘ðk(ê„-LZ™‚wÖ#Bª‰lÛUsðÎ%ÔT]f8_=ˆÚ2ÍN¡†¢†:ù$ÍÅË(å5hËÄPpMŒ‰ß¸Š†æ©ÀÛ´„lÖƒ/ö¨«©Š@Èœx(…BI\…Bd¾”†0þ«N`ni˜ 9a9Õ)æe¥‹P# \wž€oÌD@Q”p÷ußaIE)¦¦b9É‘ÌÕðášw!‹¯»á\Žõ}ƒcSV°òNãX˜&ã¯aþ 9ËfUwA—ÁÜ’081ìÞüÈr8nTÆå}f)z}9so> `’òÆ2Q= 4\ÿ}4e|yÅ$ÓÀ5ç\<5Ig%ÐÆ$ûÑ@© òÓ—ãÍå)oÒWs8þÂ'(ÔN,obRŸÈŠËš&5ux¡·Ÿ\ÁÆÔU–ެã:œËÑb\ ÌÅõ±*|Ù<š á  &IàUP*ÐN>÷‘'PV&h‚åLHÌ?‘S>…v|Žž+¶¯6à£6à“sH!„ÄU!oN.AvõÍÄ¿t/iO=Ú¿ÿιå`Lrϱa¨ ëñ…‡Cà¿„’Z¾réG!„B¼>È”…BqR W ’)œMk°óSÖ¯í'•ž0k±•Âî[ÃÆ+B|ÕV,·‰sñl‚^ƒ€|C!„âuBî¸ !ÄáHUP¼Qh(}Iœ­klÛC"˜ÇíQ÷-‡£dIY;|l-ù¬ŽS^‚ÒÂÐtÀ’žB!„$®B! Í oÁ}êØûÉÜ7LòñÜ„Í†Ž½ÿ8ë“(ÍÍøO¬EuÉ׃B!$qBqH©@ã¼ÿ‡;Þƒyæ““.Í C”Þô;r¥¶a£2¡­B!$qBñÚ$¯þŠª Õ4]±2yl‡Ñåp MÁ ª«`Ø•&G^ºM!„’¸ !„x™A´'°ô'ïÜoyšâr8Ö÷§Ée¥»„Bñú#sF !„B!„ÄU!„B!„ÄU!„B!„$®B!„B!„$®B!„B!„$®B!„B!Þ(d9œ×P6›Å²-Û‘Î8Ì¥R)À!L’J&H(ÅcžN&ÉZº¢’HÄÑ•¬e‘J%Š'dÁ$á2ŠûH&I¥’$:ªib96édŠ‚cci‰„»ø÷\nt)Õ-/•L’Êå^eyÅ:O·¼¸'ŽKÓÈZÖh§]žÇDSÔ—- žpM»¼±Çä•–7ö˜L§¼©ŽÉtÊ›ê˜L§¼ýêü ʉñ×oŒí#‰ñ7fŒ¹ÉÊËårX–E2™”/bñšRT·ËªÊ=1qãÌqœWEÅb1éÉðíÿ¼†G}”­ë×Igæòù<Éd_(Œ®¨h#ãxÖ²G·qiû÷½ÿ¯ÆÈÿ[¶Maäì44uôñˆÉöaù‘ÿ[^Þ²±»ò@ùbœ^yPpì×eycÿ:åMUçé”7¶Î¯´<‰ñ7^ÌIŒž1ÇÉçó„Ãaù"¯—ÛÍì…‹¸öÛߢeÖ,éñ²"‘È+úœÜq} µm߆ê2ùÁm·Kg!„Bˆ7¼¡_øÐûɤRÒâ’Äõ5”K§1M­ Kg!„Bˆ7¼¾ž=äR)ÂCœB¼$y]!„B!„$®B!„B!„$®B!„B!KòŽë’ƒC+Ÿ#Ãþo¨ ™¸U]®Lˆ ¡cá`“.€©ë¨Š2IŒXX…,¶c“Ÿlª UQq«Ú…Ø8NžLAEÓTtU“8B!„’¸¾ù “Moç¹|š_å‡XãLH ŒZ¨ûÿ=«9^·t—Ø'ÝÆ@l g?× ­Ñeã6Ȭ}òjÖõ>Í&ÛGÍ÷YQ:«š*&-ÂÊv3Ð~ŸÝRÍÉM­œ5{&eÈãB!„B×7ÇÉ“éyGzŸç¯ÝÏÓ›Úʧ°ÿ†…Øù ®íõÒYÈ)Í—± ¦"}øæeAv;Û:dcû³|xîµ4yý„Ʀ¬‰ô <˵Ûÿ—Øjúó½“ïªëzì`uD9sÎWiF¨ríû³f†V,ãÒŽ²fè$nÜà‹õ¥¸I]…B!„$®‡9œ4ÉøVvö¯æéÇPÌ¢š†>1!u drÿbCÌfÀR˜Y‘f¶ß®)r×ëÍʱ)dÛHvÓžN37%¨ƒYü#8y²™×ñdÏý`6cxª(Ÿ$`rùu$Rqþ•ªbNõe”¸”»tFVLtO93ÁpÿóÜUHbW^·æý‚Ê<'I4³”òÖûøÜÌ3øbåj°¾ÅÎÁ$±´ôã›’“¤\Ï»3”èÕ\ÖØ‚Ÿ}W­Ç"5°–õÉüÅháÂEqJÕ,&ß]tÆÕÑz;?ªÄ£þ€Þäs윰‘¢Ax!ÇEù²/ÉOv¬gG:IJކB!„xäŽë&ùp°­ ƒŽMXóã5Kpk“?z© ¡›e”—Ro»XfCØÐ§~Ç5?HovÞÌð~ {g4]øõ)®q89;Mïàn†ÆÌBöÎ"h(øÔlñoF ¦á£ÁcŽùp\b3y¶ê£"PŠGp5ÅNaYYú†v3èšAÔí¦Ì0ZrÉM¤-‡®|ˆšp)jz'V!Eû˜W‡UE£<ØBÐЧ¾:ö¢^ÅGýƒã+ÃD •ñ‹ÀË깋»¿Æ'wÍð*¸hÞ[VÎâhc¿ÄÓÁvòØùarýÿä3Ïü'}™öñ›˜­\2ïwœY¡ÒcâR5¦—¾Zä2ìÙu·«Ws©o>µ“=/®hhŠŠ‚M®$m™dleÊ%oLOµ-7ñ•–—X¼-”—‹¾öël‰ÍÇ­G)‹hr> !„BI\Gšá'X²”wêä±=×ó“Ø?øÉе¯bÉ›©ø:ÚV˜oÄ2ìÎ%'ÝêO.æOí—0³ä,~°d6%Ú˜IxbOpOÛ}|¯íO`Åöû\WéÛYZJÞ*¢^I‘Ëv³õ©wP"¡Ó¹å¨Öñm`3äoà Ýv/û-Œk sí³¿Æ<æfE*™íÙû‡–ÕËÖ§.æá6~Ÿð9»›ÛÖ¾“5—Ñ^w>ÿVá€8ý»þÈÖÿÏdÀÚ¿òù üzÍ™üºýkœT¶/ÍoÆ?’˜>2Ùn¶whP7‹` :aùP otóú·q^×ÿË‹]ÇŠÒùS.ys  oÑèb> ¹¹{ —íZË"rB !„BI\KªÃ?Ÿã›VÒßõ8Ïõ¿0ºäMHsÝÇSz ki ¤jLuo+Óÿ m}Ïòýþ.vû®â3›xkeÙ˜ {Šú·Œþ™{{wñH××9¹"BÔH³{ׯéê},ªoâ+ 5Ìp×EIí¹›'c;øÝîÿB±ã ‚.Éô?Ã@|˸6œZY†oÊ6¬ç‘®ï´aBÏ8°Ná’ùgÒ,§Ñ$ØÊŽŸãºøù垥´dT¾ÛT^Ìgsƒ ußÏûw³>ª÷x®:æè⚥v’Bz3÷?÷mvô¬æ¯¹ –M½ Àq ¤»äÉÞUü~PƒÀ·øö¼f¢¦ÉØËva€¾mpÓàÏÙÒóÛóYVTx'¹{;…D'}ÃíüÚÖ9Ó¦Ñå™ä½†â™ÍŒÊãp 1îØ~;tÝÀƒý’»Æ¬s£† ô>Ò\O£ÏÃ\.Qt7º;L  ¥†I¤¤¨À¼`/„B!$q= i(zˆ’ÐLª’½”§bÄ3ÿbCÖ‡ÐÆkÕóoI79MÃÔ ¼F—º÷.Xd“ %ö°Áš‰ß?‡æÈlZK+ð2þn^o ;Ò«¨ZKÛpœTIˆš“f0±…D!ZþÐ\fG˜åI\s›iKík'1ìƒÜûÚŒ·í×ßm'ŸÓ† I½â³™¦Ð|fE+™éH2uto5Ä7Ó™MÍd÷¦”8V’LbÏæ ÕÓê›ËœÒ…”º“$—ÐØæ® +cm|'9›:SÅrd†·ÑN±Ý™A$8Ù¥-”𿏋V¾—Þ¾ù4 oaW®’ñù ¶´‘KÉÇنʉ†_›ü­hT>O%‘Ê}óHf_$™Hò䨻Èj#ÞÊY•:^ů+Š©iS$ª¢»ð¨`RØù4Y\²¦°B!„Äõð¤(&Þêó8·úlÞžÝÍÖ§ÎåûýÝlÈÙ(u ©Ô-| £øÏúðJ>´ô&Ž‚[(lßñ76DzPv??bÕ.®IÊ,kùœîþ-3¶ÜÌŸeiyÓeRžicãP–v.‚òsøMk%Ú¾pòVŸÇ;< ,ÔqΚ›rOØ@Ûwü}Û ìÇÔ†¹…ëøäH4Oɘå[ÕÇ%sW²$ZJÅè­D?^O³f} ú¾½l·AßÅ|õ¡½£G Ÿ?ú^–”T0Ã3Õ^]¨j€hXÇ=°ŽÔ ÎÌ||7]…B!„$®‡5†ÙHó1rmSpÇ‚ìÖoÿO»FîÂîú_{ü­|õÈÛ˜)¥Þí@fˆ>;OOáYèý¹ß‹K™êžE®0@"o»Ids$Ó dz¹Ç.—piU=!UÝ/˜ 3ˆ×[ÊÁ3ÒÅ6t9;¸ éœ J± èMP›A{' J#x }bæˆî.ã}ªÎïÇý!N¡``Èá#‰«¨vOr¡¡öbΫ>Ÿ³-·À««à°Óƒt±ÔÄÒ÷sQŸ÷%NF‹d¶¤ÝF;Ci›ÁèÖLòQÒÉ  ý;QŽçe?£êæ]GUërìÞ›åùÒñ üå‰Orq«‹ï=w!ç6~‚“ÎåÈð‰«â'Ð1†rrò !„BI\ß,ÅÀt•™×=Cmd-É•,w “ÝÍP¾M©5lK Så PãvÐ œ=NœmÄS#‰ÈK*%ƒí8`[ 9PU<ºŽ:ÉtAŠj é^f¢²í`'®#mØãØÓhƒØÛ†q)6(^\ªŠªìßר*ÞâVcØ8Žåh š¨Š>égU=€𫾅SȰ›'vÉl7ùbÝë)ÛNaÛÀ‹¦(ø^©ŠaF1€}óPi¤•,³ÊWr¢½VŠ|v«’›Ù™ì¥-™äÿ·wßqvÕuþÇ_§Ý~çÎÌ^’™I&=BqAz\T®mu«ìþ~Š® Ý¢»Àª+,È+ X ˆ”Ð)“6™ÉôLËôÛËùýȆdÒÛ$y?ü“¹å|¿÷œÏ÷|η_Äbû…£ ÀÄ0™¤~DDDDD”¸Er[’¤lŠ´éÅ6-cûTÑo3f40cƵ\ Ä{cÍÀ+|aÍÜßÑLÐã¥!\D8=²l†ç±Á,Ëf÷KåDÀôãÆžñ´}X¾".2Mî;Ày+o•á9³tËàÛû2”Ÿ3G.=¯òyÒÁ ½uü»{^QHÄöað0K.“&k˜ä Ÿ5É–;v þ‚.ú‹“¸È¥zêüoþºé^ê¥ÅØÀùÕ‹*¨ˆˆˆˆˆ×cÕ cÃ+yåÏßæ'Eßâêú¹\Q[±Ã"DÛó—HiñµwòÝÑÍ$SqâF !_”³l/Aß»ùMÕ×ùÅÜjJœÝ¥r`ãØfv‡±: Þ*C¹=‹_N»}Ëàl)Ãáìý³l_ 7m–F>NGÙûyxNõžpð:Î\‘7I6Ûβgnäã]¬,ºŒŸœ4 »žƒjy ‰ÔžËgÖ?Âc¼>6Ä8ÛôЊˆˆˆˆ@Ú‘âˆàÃ4<}Í ÝBÛÐ+´ŒAnwiN6I>›`ȇ"x<>ü†‰á‹PjÙTdâÐ×GÜôà:!»ü$àxq ˲ÁWÌ%–…91ÂozÏçw8žLrñ‘Õ<•Kïz;÷Y’Ù×I°Ý^HŽmddd-»Û%po•¡*ŸÜ‹2„þ· ûý›„°¬ ‘P Æšõ3°ÃÎ-óŽ[ZîãÑþ/ÿgÃ&F²Y0- _„j :1†;8Ì„»G¿ c÷qõNÁ˜¹ß1šÊ‘ÜaK] ?ÿ¤cãàí¬…øîN.×…t‚1âžF0²ÃŠÔ[¤É»qb±霫KYDDDD”¸½,ËOÐ_•{…áxݱS2îdÉ€ nšDb˜ñø0› /€Ïv°1Àòã·l‚Ä!ÞM_lŒÑLŠÌd_OO0` '•Ï“3l°CT˜vn”¶ø&úÒÛK>A,9ÄÀx'ÿdÀÀ4 n?ƒ©Y×}kúæ–2ăŒÇ61¼ÝûÞ.CØÈ¼£ é]–¡ÿËp@~_!d71–f – Ë6ÓOÝ™D›GV²~`)K“Ù- iaaØ~‚¶‰/7L:ÙCo|Œ”›Ÿ¤¦\ÈÇI 2d0ž ƒ»Ç Ùv ¶ýVgs“œ/¾¼V?ùÔ ºÇûèK&Édw’´fÈecÄbý ¹ÒއbŸgÒ€’Ò$Ó9rx0MV%®G§ÀÖmYÂN ÏwÞÌw^úï[ÕLs<5Ib‘†DzýŸøÅ_ç.¯¨e~¸ 6ÕT–©._ù/ó—üŒÖ,gCb’^Ü‘ùõòïpÅ—pÅSOòâÐ0› /øë˜Sè¡6ôÿ5Ÿ\ÝJë¶Ç2ò"¿kû5_};ä’“§­†M¨àj»‘¾Ø(ÿ²~%™ô[ÉgM¼²áQþ¸îîINÛ-e˜V³éehÞeÎÚZ†þýþMBx=5TUý%pOµ>Î?¼ü"›xûû³äòƒ4¯øî½—GM‡ïTÔ²l¶lSM]­‡Ò‚_ÿþêÉ»xuh‚ŽÔŽI7›ŸæÛúW<ñ1.ÿãŸhËd™ØÃ£ôûÊø*ÁÍÓg"½ýØXf”†Ÿ¥¢ärH­æ_^<ŽëV<Ë·Ú&ÿÐt+ƒ}KøÅŸoàöx;„£\Q^C˜É†§ÈçÆÉ“ ÌÇ_8‹*¿æ(ˆˆˆˆÈÞÑýã‘Â)ÂWz>?ž×ÇcÝæ¿úŸ‡¶øbŸà6]pô'»Áûn¨ü{®¬­¦Ò÷¿{x×EE—óωOòÕ‘y¤å)žìR°ýGåGéO€w_<þæ}kË”†Å·rñúÿ¡zÝpËöÇ’¥1ø.>T{3FÏ?ò«ÉWLÑżÇó c¯ò‡wlk³¥ g½Âêsøp÷·y`»÷×`òãüóØ{÷¬ V€/žôvöŸåR8í}ük÷}<=þON¼À'Ÿ,xkžç–€Ç$ü'Rr‹ŠÁyëQ‘iú)›û0¦&÷Cn½›¯½ðk¼¦EhÛãwÝ-ÇŸê¥ÀãÝÏsÛ¦¥;¾,ú7\»ÓUŒË¨˜v%¥Õï¦ðåkßy,5_å„r/ç†x¨yg©ŠÞFN^ðqê6Ÿ„ùÊwxÐ5»ú!6¤F·«¢*(þ_:n&s B÷ú¬)Áë-§¶2ŒÝ¾žñ¢ ýU¥Ô;Ö Í¡24‹›vm+nbõÀŸùÎØ$¿q 'ŸÀgO¾‚~vÑûë’Ž÷2<¼ž_—ðÕŠ™,ˆFu!‹ˆˆˆÈÞçB®ëî÷RŸÃÃêÉ=pÝu×1šÍñ/wß{>-G.—$“Ÿl¡žm¶®Ùƒt]7M&Ÿ%›ŸdÉŸî»­<¹\âÇby±3ýlá¡g>Ã}å?d^éñüÛÌÊIËâºy2ÙÙmÊ`Û~Ãòd2)²–Û°ðæ+C>'ﺤó[¶™ÙqSÈ‘Î$É™^0Lü¦5é÷çÝ4©Üv¿ƒåÅ1,cW뻸nšd6‹Ë$‹'™^¼¦…iìùjÂï,ä(É‘Wøïç¾J¶üÓ×^Ãûk»<ž\>AÞÍ“ÉOþ¼Ë4,ÛÙŹå ´?Èú¶øJþ›Ü²x1ó"„ DDDŽƒý½\~Â"–,YÂñǯ ‘²ÓÝ IDATÝ***Ú§÷©ÇõˆeaYA¬0æÕ0e"r”³0í0Ñð4¼f†ÑDñ<{¼¥Î¾É‘‰w3N³Ü¨¦!T@в´Žˆˆˆˆ(q‘ɦ—òºo³Øïrñæo±|b™ƒõmYrù!Z7ÞJo¶œ¢éßã´¨—ï%®"²søç3·þ½œ3ÿ|ëå§išaóAø¦\z3#¿áßÀ9Ÿi¬Äk*ÔˆˆˆˆÈ¾SÈ¡L,‹øÈkV¼yl83H&ÕI{šÌøFƇÖÄût"NÉFFÉ® 5ì`Pt€¿"—d¤¿™ŽeLËt0˜Ý²ä”¡Ú9êŒlÂ0ÔÊËÁ§U…¡o¼‘%K–¨¾DDDDä¨`Û6Ñh”»îº‹yóæ©Bd·öuUa%®‡P"‘ ŸÏ«"DDDDä¨â÷û155Hb⪡‡ø‚‘½£Ç"""""""¢ÄUDDDDDDD‰«ˆˆˆˆˆˆ(qQâ*""""""¢ÄUDDDDDD”¸Šˆˆˆˆˆˆ(q%®"""""""J\EDDDDDD”¸ŠˆˆˆˆˆˆW%®""""""¢ÄUDDDDDDD‰«ˆˆˆˆˆˆˆW9²ÙªÙonbmüöŸ–ñÆÃ<ž5v|UÂÂÅU|þïNan<†ªMä˜k£oÝ ¿ú‡7øEÆ ¹ýßMáHß¾õlê mÊ=ª29ÀâÝô­ÝÄ“ÿð¿ÌŒ¸;Æ!¬¾ÿ£¿`n¥_qHD‰«ò¤ÇÇIŽŽ±±³—¦õ›YÓ“a,–'òL¦½{O~r6¥¶¡Q"²q(N61Êk?û%ß|4Íë½oÅ!ƒŸŠ¹.ùl†± —ü)3ðžÜÈs7ÌfzÀV9@ŠŠŠöé}êð’}ÖûÂc<ü›!þíqƒDnü¨ŠÓÊv|m¬ù–¿Ùɇ¾Ûù?/ñÏÙ8& ^8»” ­–@äh5¾±‰–×^àCÿeHÁ¼“køÒ7®ä¼j°·K^³ã›Xþ'Îû¿=L,ÛHç¦AŽ«+ä™S£Wä¨2EdßâPk›V½ÄgHÓ=óNªás7m‰C~{Ç8[ÿg®øZm¯·’Þ°‰3ê xú/*‡D3%®²2àŽÒñH‚ž7r¤=nüÞ\qzÕE‚“ÌñÍZÌ©3øccÝô/¾8ĺÞnúÎŒRc[h ‰ÈÑÆwˆáUc´=&‘4øâÍW0«®˜sê<ø&éèð•à?í=<þ-¬øM/>:ÀCwvÒßd¨Ð¡XϸDd¯CÑ0C«ÇØxoŠÍcûÛó8é„ÎoðPäÓØ1ƒïáÞmá'Úxõ‘¼·›þy… :”*‰(q•#솔±.H Ù8Áóª¨(òP°“ Ô D(ð:Œ³Üo±¶3…éN˸ä}h›ÈQ)Mz,ÇD›¦™³+©¯Sì›üÕ†åà)(á¸#¤W ÒžÍc6OHäI¸Š"²oq(3–c¢ò®º™åÔ7”ÝE²Ã%ÌŸ7Jâ~z]»uKŠ+‰Vš^(ûÇ®À˜Çìj ÿîºM-Baj}&%ÄÉæ†š€LNÕ(rt·4^ÌÀ"+=L/ÙÍk ‚a"~Óìnv3£ñ ã U£ˆìO²1ýói(î>BD^êl#7Äh<ÃHLÕ(rXÓUì= ŒÅçš„<½$6ŒóûUs¹fA„Êஞ…8`TpÆᄬÁ× ‹‚" ¯¥9*A J.J‘d9O¯™Íüx˜Ëëý»zeÔ}à,ª.<•ó]›‚BŽæˆÈ>Å¡z/¥—g1þ§‰ç›§“ 9»‰C€QJÝû΢ú‚Ó8˵ ú°‡D”¸Ê× ‘êÁâ4ÙLœÖµ½¬psŒ—û™VÄËd£i ÀÂWƧJ98ø#~"µ!ÈO°q}/ÖD‚é‰bfÌ á54BNÀ øªEd?ã¯ÀGdz¦1AGK?E‹ÚX3f‡ñ;;‹C&NÐôP%ŠL DÛáL-®ëâº.†a`S|"EÏ2îýŸV¾sw#ãY Ï,N?«†ïÿ`5x ˱pŒ£ç·Ùzá€ßæíßÀ45j_ŽR£]ôµnàÌÞdd4V˜Pé\~äD*6E–ãs° MQ;u°âP'±M9÷s+héIáÆô6òð£'2³ÌG¡¶Ïƒc*ŒóHd{ûºŽ×)$›Í22:BWWåeåTVVNñÈ–'3ÐÆpG+§}z%cc`8&Á°… \yýé\ðÞyO5 ;ÞlÚ´‰T*E$!‰ìW#îº.£££lÞ¼™x<ÎÂ… uÈÑz„›Noy™s>»ŠÖž4˜¡Ó€ªªÿï¶ë8½нª.‘ýljÅbضM8ƶíý¸t]ÆÆÇ$3oÞ<,ëÛ㺸¹4‰ ¯ðÉo­æ¯M€a,°±Lˆø¸éÇåœ:âÐÑÙ@A¸€H$¢äU¦Lâj}ó›ßüæþ~y2™Ô/° C*•â•W^áOÏý‰Ÿßûs¼/ÅÅÅ”––Níƒ7 ,oq9ï9{—Ìéc~É(¿-G2‘¥«g„寶òôïšès¼Ô¹£Ó[ZZhiiá¶ÛnÃÅe||œòòò½J`S©ƒ<½äiî¸ãzzzðûý466êb£“a`X6ž‚bÎ|W#W_ÆÙÍ<ùjŽØx–¡±VwñÌšxqU?ÉÊJfZXºQÙk›z7±bù n½õVâñ8Éd’òòò½Å•N§éèçé%OóŸwÿ'øý~êëëÜÄÕ00L 'TÄñ'Íà}ç–qÑôfž}3ÇÐH–±‰4­ë{xöéÕ¼¸ªŸ±ò ê l<Ö±‡Ö¬YCSSwÝu†a`šæ~?°Ù–ßïß§÷iŽëa”ÉdH¥R ÒÙÙI{[;]]][‡ l/¦íå¸3Q,7EãL ›&6£í¥V¸ëÖ­céÒ¥üô§?eáÂ…,Z´ˆ«¯¾šh4zä>Õ|Ûx3¯<°†%·®ã–ŒAÖì¦oOþî˽ÅÊår ð“Ÿü„öövš››ùêW¿Ê¼yóhhhØéûâ‰8¿ûíïøÑ~ÀgœÁ Ÿ¾â¢bB¡.96¥ïìàgï]ƒƒyÞÚ²bÿç+3¸îÚiÔèþHdŸÚ©|7ß|“ææfþöoÿ–Å‹ï¶Zòôî¹ç†‡‡9ãŒ3¸þú멨¨8ºÛ©äéáîüÀ3üç`vKÌà"þæ+³ùȵӨ5޽ý#Ó™4½›zùÑ~Äúõë‰ÇãÜxãœ|òÉêB“ý¢9®GJ>7>ÎòåËyøá‡ikk#•Nqé%—2kö, Âýš“²7‚Á Ó§O?8îfHÇ2$ciãyò;¯óÚ+£<”óýþe|}q)×Öyë…º®K>Ÿg"6ÁøØ8MMM<ôÐCX–EYYþð‡™Ù8ã!—˱|ùr^}õUžþyZ[[¹êª«(++£¾¾ž`0ˆeYêq•­Ç!R\\|lØÍãf³L 'Iƺè^½‰‡¿²ŒŸåü8XÀI—/äÑ3¢:1Dö¡ŠÇ㌎ŽÒÔÔÄc=F6›ÝÚNÕÕÕÈår¬ZµŠ¥K—òüóÏÓÞÞÎ\@}}=õõõ‚lËžíÔÛm믰n.Gl$Eb¼“îÕ›xì+˸;ç#÷…̸h>OYBÐ6޹ó(—Ë‹ÅèééaÆ <ôÐC„Ãaêêê¸âŠ+˜5k–îaä&®*|%“I†‡‡Y·nkÖ¬a``¿ßO6›eb|‚L:ÃæÍ›Ùñ”””ìyâêºK°¹cœ‰8 ãßõ2ò†ƒ'äà ú)E™¹¨„‰dŽú7Æii™`¤>B²>¸ßÛâ¤3iV7­>,¿g<§¯¿ÎÎN²Ù,CCC¬X±‚ÂÂB†a°~ýzÖ®[˺u똘˜Ø:<|xxX|dÇ€lÛôõõM©Þ Ó4Y°`Ážßœä¤ciÚc A¢e>J˼LºÞ‰ab8Âe‰bÌXšy§3çÕÚûtµÆHžÅÃÁëíÈçó¬]»–t:­PŽ:Û¶S±Xlk;åõz‰F£†AKKË;Ú©t:=%Û©úúzpöðŹ$éXŠÁö  Åe~Jʼ“ßs†m*ñ n‰C Ί2÷•QÖö'hÙ#qz ~~¯k,£¹¹yÊGƒƒƒô÷÷ÓÞÞŽÇã!™L2cÆ Š‹‹ ‡Ãû<_Qdo©Çõêèì iUßÿþ÷Ù¸q#@€²²2ðù|˜¦yHç Ì›7/|á {˜¸f`¼•ÿ¹ñE–¾æk¿þý©Ì~kùÝGã6zVtñЧ^âßíE|â˳ùðuÓ™¾»á7n×u‰g ü޹]ýôõõqúé§–ßÓu]2™ ‰DbËÅdøý~~øÃRQQAA¤€›¾vííí S]]ͬY³ðxyïô¡9z0DŽ·(L¦qŸíaÕ¦ Ê#6U¥»Z‰îv6¶wrKÒ ÿ‚j gPåß²Øèäwï.Ä;yîÞ5tv¦øÀû.¤È¶v%dÆ!Ms¹½½½<ñÄô÷÷ÓÝÝÍûßÿ~¦M›Fuu5•••ø}þ­O© 8ᄨ¯¯çÌ3ÏdéÒ¥¬\¹’—^z‰K.½„Y³¨««ÓÅ!G3€]è#z~ó·½t U³º7ÉÂðîcZ>g´y ?åY×XˆÿÔ*ªà9ˆãó à àèw“£ÆÛíÔ3Ï<ÃÆéîîæÂ /¤¾¾~k;õö(/زWçÛíÔYgŲe˶¶SçŸ>óçÏ?òÚ)Ó]è£ôb°ÛOÇæ!Vv'™?˻ۭ¶òñ8‰Î&îËðZc)ùE5TïŒCƒkyòùå{¹êKsR¥M¡'îf6ÞõgZϤë]s¸´Á‹cîyâošæ”y¨N§éééáñǧ§§‡‰‰ ®ÿèõÌš5‹h4JiY©F‰×ceY”””‡),,¤¹¹™5kÖ0:2J{{;3fÌ ¨¨hŠÍ0‡@™`¥ù$=½£t—z¨ò(:XÆ$2]—lr‚Í=Ãt÷Œ±2 áé"E^‚öN|º9ÜlšXÿ­M#två™þq?^óðn¡“L&I¥RtwwÓÒÒÂæÍ›ÉçóÔÕÕÑÐÐ@UUÕ¤7Å¡Pˆ@ @8Þ:‡¨½½¶mD ")ˆè£¦Y±=ái>L#ÉÐHŒÎMcôVXDC6–1ùuœKÅIŒÐÓ1Ä›i—t‘Ÿéµ„l´%ŽÈÊd2Äãqº»»imm¥½½|>OMM 3gÎÜ};U¦««k˶míí´µµQRRBQqá‚#(I±°=u>,;ÍÈÈ=£ôVRöàX»ŽC›Ú6³*žc¸ÎÏ´é…„<ÛýuÉŒ ÒÞ;κàsª8~ºC¡'®‡‰Ä«¬ï¡¯+Áùu^lŽ´Ô.‘H011AWW6l`||¿ßOCC„Ãa]lrx²Íqº»»Y¿~=÷ÜsŽãpõÕWsá…N½í]Á›ovrÞÖ?cþÓfóê§)ó˜;< q3iºþx;_úIŠç¶¼…üâ¯8cf˜Y;ËÕ¶[š~¼¦¼û.¨q ÆG-Ï<ó ÍÍÍüøÇ?æóŸÿ<œsÎ9ûÔ ´¶¶rÛm·‘N§©®®æ»ßý®.9z$G‰µ.cÑG—32’…ÂùœÍÒO5Rv˜¬?¡ï¥‡xýµv>zë–[¼¿üìY\yÍ©œ_­êÙS«W¯æùçŸçÇ?þ1ýèGY¼xñ~µSwÜqcccTWWsÓM7MÁÑ`»ŽCô.çôO¬ ¹# >‡üuçðØu3Y\Ø£8ôÁϞťWŸÊµà[’V˜`ÕÝò€UÏå Ùxn9AçSÓñOq÷ã·þ1¯Ÿ<•A ßvýú׿fýúõ<üðÃ|æ3Ÿá¤“NbþüùºÀä€Ñv8G¸l6K6›%c>Ÿoj®Ò–K“ ëõçøà·úè3ÀïPWìÁž´ÇRã£ô »”ϩཟ=—ÏŸQFqЙädlí³üò÷=üôÑa{’Œ™%”Orû—qb¼‡±Ëµ··—T*E>Ÿ§¤¤Çqö©w]—L6Cl"€i™êq•£‹ë’OÅh{ñwÜÿÛAnýU ">j‹=8æä=¨™Øñx–Áœ‡O~ûJΟWÄõa|“¼8Ý¿îµkøð÷ú¶þ_0äåoþñæ•;4¨3@ŽQ£££ŒŒŒÏç)**ÂçóíW;Åq]Ó2°WÞÚ !MÛ‹¿ã¿žèå–_CÊB/~g×q¨®ÿþ•\zB§×…ðm!¶%q~ý ÖY5´†§sU½õŽaÄnûRîx$Å?=kww7™Lز@ŸãqÎVD¢Äu/i¨ðaÛ6¶mOý§™–o DU]ïy·®®Í$‡Gx±9Ž›Ÿäõ¦;«ŒÓçziœYÊ‚ºBB^s‡¤ÕÍeÈÅGYÝœf(飲±”饛yu<ŒY&ìÙÅ|ØC$àõz·Þìkþö\gO‘9J†ÇOÅ´ à¢áQâ½]¼¸!N6³“{ÌéÅ–û¸¬&À†"*Š|;&­®Kj¸—îÁ1ÖL«‹à†›Ç13 ¯ëa(_L±'¼g‹Æ‰e<ø|>¼^ï>ï±¹µ*<‚Û)ÃÛKyM9ó³¹xd‚XËÚlšØuº¸ÄaQC1•Å^ü;Ü)[øŠJ(µBà·Þ1„ò$Æã¤Mp+ü8‰»œ†B!\×Ýzi«L™ËZ=®²?Æ6¼Æ¦U/qí-ÃñI ‡‰/]Ìþ¢‚ãŠv¾ˆSnb3±æçùàÍÅ\pU=W]UNxù|zE-­F!K>6“0Gf r¬Ë&ÆÙôì=|ü6ƒ¶lU¼ál.]TÅí§ïäS\ò™$íOÝÉ/†ëxÒšÏ×5¬m¶Ññ]}•WÆ…µªwÙ&‚dÓô<{_ýÏ4/4ïkÚÕäqó£¼þ³_ò«DÌæw×Í Ücjž¾Èv4TXOCÏáær$30é™dŽƒß6ØåÂz®‹›Ï’H›Ø¶‰edØôÇŸñ…Ô»è TðÚùåèyŸÈ‘(\Ül†ÄÎâ€caš&~{'Wz.Nº¿•Ÿ_ûG¬ËO¥ôÊÓ¸´îí:Òd&zøãåÑ{Á ä.?‰O-ÐJÁ"²](ʤIf!ŸßÇ8´«ÏNÇoú=ïûj†Sß;K¯šË©Q[7/",qÕPaÙ/†ia˜ýÝÆË00,‡€ C>g´'Ç™5>ÒÑ€’V‘#:PŽgÿâ„éÉÖsÙ¿³0„'ºÍî’ù$blʸ‡òOu.";†"ǃÿ l;:´úO tmâwnæüO_Æ™ ÊXThn3ŒXD%®2õ¸YÜlЉaˆN·0¼:MEÄÓ!T&sIŽŒÑûöŸr 2ƒôg-¢–EÀ£I"rÐoVÀuIÇbôwöÑÕÖËš¡WÍŒRSá'¤[%®r HMíåõGò/ô-ô«NDŽu¹8™ üüÏðìP†%Ùí»2L o 7øÃœ¢U…Eä ËËŒ³úç÷óµG‹é´æpç#q|ôìLD‰«3‰k‚Ìè÷Z ¸©4ÈÌrU‰È1ÍfdC¯~ãeR_{?Ÿžä¶²ÿï—‹ ±yÕR®ø^ A_€Â ªLDfL¤í±5¬¹w-ßé+åcßx³æ”p|˜I·ú%®r”Êgsd36—p|Ö¤û8ŠÈ1$—&›H3ÜáŠÑŠ¥o'®y2#1ÒN£Êƒ²ðèÆQDNÆ dYßOǺqÖvšTŸTI]m„Úr¿zZE”¸Ê±Ö(¤ ÆG‡Hœ=—`Ä&¤›P‘c[*A:™¥ß.eQE€Òm&¹Ù b#ÃlXÑOìÝ ñNó)fˆÈAºEÉ‘Ïô°ôïþÌS½Å½OÝY""""""2¥)q‘)Ms\EDDvË×%“Ê’ÏCvÒI6†iàõÙ˜ZXNDDD‰«ˆˆÈ¡Ì[³0ÖÂo¾õ:¯.âÁì$i©]ÆI§Öðÿ¾}sCàQæ*""rÀhq&‘ɳU ÅÐÚõ´¾¶–[—Äè\5Ææá ›&m9=ø‹}·¸”‚3põÉe\4'‚õ¾Šˆˆ¼m_gR«ˆˆÈNòÖ\jŒ¡Þ^ZWµó›ç ʧitv|y.™$‘ˆóòŸÛÉ–3·&Èâº0Ó¼æ;÷y%®"""$oÍfè}á1~r„<¾%óüëo\Æ)'Tsfùޝ­ûo,ëàʯ÷a>ü"·db<–·yîÝ¥e®"""J\EDD¨4¹t?­÷åè]EU¾öo×ðž™ÊC“¿#Ðp'WÎçù-<ü•Wyöùaººé>=JcáQ¥Šˆˆ(q9\²dÆ ›ôá). ¦&LA¼Öä¯7/^+OEeˆ2I8‘&7'‘qå¶¢IDATɹh¢«ˆˆÈ~Ð>®"""“%¢6žb<¾éL‹ºxw÷¸×´0a¦û¨)Ê &˜H@.¯úÙêqم቞gvúíNòÔÊ|°Ñ?díâ}ì@-§ß~'»7 <>K½­"""J\EDD,Ó 3óŒ™Tôv2þæ0÷}ÿ ž/®ãøãÊøôgˆ0i kØ~G ¬ˆˆˆ×£[6›Å4MLS#¹EDô D£”UŒQcã².:¼^â9ƒ‹ûKÈ€À‹×ÒV‘ƒÚ2»®ëîï‡ «&|>Ogg'áp˜ââbUˆˆÈá6ÚA_ó:æ_³|‡?ýågÏâÊkNåì*ÐŽ7"""»WTT¤ÄõH¶víZÖ®[Ë#?¬Y³8ÿüó9í´ÓT1""‡››#—É00œfàõ'Y¹¼‹/Þµ%KõEüD¼DŒ2™ ‰D‚ZZZèÝÔK  ¼¼œ@   ™ ËcQQîÃSWEFmm-`Çv0 Å7Ù7*|„HgÒô÷õsß}÷±jÕ*FGG¹æšk8ûì³)))ÁqLÓT0™òÉ«K.›%›J“ßÈ£_{™—_æ~_÷ï/â'—ññ!Õ“ˆáÍ%—Ë‘ÉdX¿~=Ë–-ãî»ïæÄOdÁ‚\yå•D£QݯÊ!M\5ŠédíÚµüë¿þ+---ŒŒŒÉdåñÇÇëõª’DD ãŽ;Žo¼qïÔ²ïâ¹»Ö±v}–×CuüíßÍ¢ºÈ!4Ù½™a`9–mƒ¯ ¿œcÖ›=ðýµ<ò@7ƒ> !¢ìn`݆ øÖ·¾¥LD¦œÑÑQinn¦¯¯—_~™—^z‰ë?v=3fP]]­J’CB‰ë!”ÍfI$´µµ144D2™Äu]úúúH$8¶£J9€***öâÕ.ä“lnê¡å…4(.àãéeì&6Ø¢õE¤'bÔº.Þ¶8éÑ q¢{Ð!‘N§Ù°aƒ~0™rr¹étÇqbll ÇC<'“ɨ‚D‰ëÑzU-æÑGåÎ;ïdÅŠŒsà 7pÞùçQ-Q%‰ˆ.† ¡0•^›js‚lnˆá‰<‰B(òíÁûý¼u¶‹'7L,‘`$5!v»Éë¼yóx饗ôˆÈ”‹Åèééá¶ÛncÕªUTTTðWõW¼ë]ï¶•Jˆ×£–c;TUUñå¯|™þ¾-‹3=ùä“<ûì³ÔÔÔpÅW0gî<Žg9´L0BDNµ)"Mú…Þ蘠4ìPåÛýˆ˜ÄÆfš›;øZÎfà²:¢ó‹™­Ï$"Gš|>Ïøø8=þ+W¬¤¥¥…‹/¾˜OúÓ”——SPP ¤U”¸í ÃÀ¶m"p· ž1c¤R)š›› ”–•nyˆˆBáò U~rÙ4ízYíwñSÀìr?;vžºùé‘~š7 ±º%ÆfÃ`ö´åE^¼JZEä3>>ÎDl‚Ö–V±,‹ÚÚZ¦OŸNee%EEEX–¥Š’CŸGiUá©¡©©‰¦¦&î»ï>N8á.¼ðBÎ<óLUŒˆÈ¡Ö×ÄŠ]\ycc1—üÉ3˜vÖlžúè ‚ìøÄ7—cÓŸäïîLñB‹IQy˜oÞr §Î3³@Õ)"G–W_}•uëÖqûí·s饗rúé§sü Ç«CEm‡s„Ëçóär9R©D"Š‹‹U1""‡š›'=:@ÇËÏpÍw{ipÁ1)ð[“¯ìºdS)bI¨=®Šùb>q|„BŸ©aÂ"rÄinn&“É`Û65µ5x–eiëQâ*;J§Ó˜¦©¹""‡+wÍeÈÄFiîJ3Ü²ŠŽUËùâ];¹i+ ÿЩüä”( ˃US4±t“'"G D"‹‹eZÚªQ¦TâªÌh òx´0“ˆÈádXž‚æÏƒñ@?‘l3wòââ ™y,\XÆüBmk&"G6¿ß¯J©Ù6«ÇUDDDDDD…}íq5Uu""""""2•)q%®"""""""ûê€Ìq9XÔã*""""""J\EDDDDDD”¸ŠˆˆˆˆˆˆW%®"""""""J\EDDDDDD‰«ˆˆˆˆˆˆˆWQâ*""""""¢ÄUDDDDDDD‰«ˆˆˆˆˆˆ(qQâ*""""""ÇÿxvU?á^‹IEND®B`‚cdhit-4.8.1/doc/Figure3.png000066400000000000000000004016131343604040700154040ustar00rootroot00000000000000‰PNG  IHDR˜=n†ÍÉsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ 'LÛ6"tEXtCommentCreated with GIMP on a Mac‡¨wC IDATxÚìÝwœ]e½ïñϪ»×é-3)“Lz€$(ˆ `ËÑ#XP^åxŠå¾¼WÞ«b;GDôŠÈ9ሂҤ…–ÒH'}23Éô™Ýû^åþ±öLfR–äy¿^;“ÝÛZk¯ïzžç÷H¶mÛ‚ ‚ ‚ ÂßH ‚ ‚ ‚ ¦ ‚ ‚ ‚ ¦ ‚ ‚ ‚ ¦ ‚ ‚ ‚ ˆ€)‚ ‚ ‚ ˆ€)‚ ‚ ‚ ˆ€)‚ ‚ ‚ ˆ€)‚ ‚ ‚ "` ‚ ‚ ‚ "` ‚ ‚ ‚ "` ‚ ‚ ‚ "` ‚ ‚ ‚ ‚˜‚ ‚ ‚ ‚˜‚ ‚ ‚ ÂIN ¼r¥r Û²_Õ}%IBÓ4$I¤pR±,‹r©¯dÙµmUEUÅÏ ‚ ˆ€)§ÙÎs>—£P(`år™b©6”K%,Û ”™L†®®.òùü+ÛÑ[éT•)ÍÍTUWNUU‘EVp¹\ȲŒÛíÆív‹sá Q*) ” Ã0Èò”‹%gý0MúèêéAQ”—ý¸¦iRW[K[K š®;뀮#I k:.]GV<n·[|‚ ‚ ¦ œ|ŠÅ"étšt:M¹\&—Í288ÈÞýûé.— ŸÏ‡ßïÇçó‰/QxÕlÛ&•LO&) Xå2/lÛÆ‹ûö18<ÌáxœU»vaÙ6fW—s'Y†ª*¨­^Ér/A2ƒƒP.ƒ,#76"©*gµ¶ÒÑØH$`AGg.X€ËëÅår…ƒhš&¾0AA8‰Hö«ÙC„“P,cdd„d"Áž½{Ù¾s'[ví"žH2‹SUSÃŒY³˜:£I†ªêZZÚÚ•¶éÓñúüX¶6Îß¿,I IH’D¹T¤ÿp/Éxœ\6KÏÁ”ŠEº;;éÚ€Á>Ü7µUUÌš6¹³;X8o>¡p˜êê*jjj_Q‹’pú`dx˜¾¾>ÖlØÀ=kÖðâÁ.HÄaúthjFŽDpûýZ[‘dßÔiHJe¸¾ ¼šŸ I‚Jc¿$+d;`”Ë”úûIÅãX™ ôôÀÞ}àqÑÐÒ‡–-cÙ™g2kæLB‘ è•PAADÀ„7ÍèîêbõsϱfãFõöÓ6c:s.bÎÂ…ÔÔÖÓ>g†a`[–i`Ù`Y&Ø6–eñú­*Š"NY–‘YQd§ûlow½=Ýìß³‡];¶±kûv<ºÎò³Îâ¼å˘5kííí¸\.ñ… “X¦IçÁƒ8p€Ûx€ÛŸxÂiœ=‡Ð¼y„ZZÐë*Ò?IVe=0­×ü5É•ÀjKÎr/K–ìüß!ÛÛËЋ»àÅ0:Š%Køì»ßÍâÅgÑ>£U´j ‚ ‚˜‚ðF‹ÅãlÚ¸[ïúoöôpæ²eœsþ,ú(¨2›×=O&FÓuU=åæžTÝå²L¶lXO©Tä™gž ÀËT*•NÙ÷648DWOr_F:ƒ¤ëãcÿf’²„](’ëî"½îy2[6“ïëÛ>þóÈN ,%d^ØäÜg׋††À0œë_"È*š†],btv çÐ!± ‚ Â[˜¦D8%ÕÕÖ²ðìsxðÞ{é;ÔCÛôvšÛÚhl™‚ËíÆ²l,ËiYÖIñž$YF–¤ññ˜–e1ØÛKßáCtïßǶ͛©kiaúôbxºº»Xµj—›yóæ1sÖ¬SªH’ß磺½áM²,ümm¸›šP«ªÇ[mÛzÕÝeKCC$V¯&³úYìƒ ½ô2üsç!û|GZ%% Û0I­_GzÇNŠ?8v„åœsÌ›Oäü•Ècó`NléÌtšÂ¡2==$7l`j{;MMMb!A0áaS¦OçÒ~Œƒ»w³eËf{ðй,µõõ´NŸNëô™L™6•Æ)­X†‰m[X¶mÛN7?x«ÇK–¤ Ó9ȲSYVQF‡8ÔÝEÏtíßGoO7²¬¬©¡uæ,>ð™kYõç?!z½¿<›6nâö?ÞKÃŒv[¿âðsçÌfåÊ Xqî¹'ýû³- +Z ‹Î cšd6l@yì1tEAmnÆ7mú”)èÕ5΋±ê±¶ÓÅÕz‰)Ir;üåMX]]ø?ú1ܼEÓ0²YFìüÔ\y%Z8‚mšHºNâ±GýG™7ŸÈ?|5B*•HnÛFâW¿Ä¥ñWPŽÇÈ:D¦«‹â¡C™,¦ßS¦À¹çbwu½ºéRAASþ–ˆDXqé¥ÌY|Ý= õ÷1ÒßÇزa#¥\IUˆVWSU[Ç”iÓðû4´´ Ë2U5µ„¢ÑI¡œ‰êÇNÒØ#棴M³X'¼( d$¤ Ý%É9_.– “ÎÏfè?|˜Þà ¤P( º=øC!Â5ÕœqþJj©ij¢¡¥‰Ê´*ÂËâóziimãÂ÷¾ES9ÜÙE÷ž]üâ–ßò›[nfùòs¹ì²Ëhll gž .—ózƒAç5kºó, L ÐN±ñÔ‚ ‚ ¦ œLûئ5>a¼îvSßÒBã”V$Y¶lrÙ …\–t^X³†Äðð1Ï[ÝØÈŠ‹Þ¢© $É‚AüUQ,ÛFQT¦Ì‹/èL·àv¹QuUÕñú|xÜ^¾`EU±M§Ë®e™”Ëå7ô3ܰn›öîeÙ;/Ãçp²GÌŠBumÑšÊÅ"¶ `ˆðü(3æÎc¨ï,{Ó½w/¿¾í6núùÏ9wåù|àý ©¹ù$ š•Vø±à†ä„¹ÕÏÂãÁà ÛÀÇþ_|ïû@×pÚÝ ==Ø£»wÃÑË¡ª‚ibíßϨÇ‘(Äc`š˜Á ùYÎcÉ2¸ÝÎxÐR ¶mƒéÓaéÒÊÑ!`lŒ¨QyYÛ&¥ª¬.)õzÉV{ò™ãյפK­mƒ"KÔy½xdQ#OADÀÀ¶lLËÄœ°+­»Ý¸<"ÕµãÕf%ÉùÇ4LrٌӢ)Éå2ÅBžáÞ^~ò?¿NcÛT>÷?¿I]S ²"‘I¦xô¿çéî'TSÍ;ÞÿgŒ›$áñxp¹=ض,ɸ¼^t—^ÙµKnN\'Pš†‰i¼¹Ý_Ó©MSZYþ¶‹D#§Ä8Ë´0Mcü­XcEŸ$¨kj¢qÊÚçÍgèÐ!ûûÙºùžøâÿ *âCW}ˆK.½ô$}ãÖ‘ÀÖ× ü¸â=06‡j2 kVî] Ã’Å`šÐÕå\^ß—\ù£¦?‘e‚-[`Î\X°n»Í¹nù §»ëX8[„Ê%ç5­]]ä<ÏKu»¹!—C_³ÖY¯Nô6m›©.nY~͈(’D@QèÚ+¾oÄã¡Îç=îuš$3%  kǬZ–mqéL?Á¼Ÿ†m3+$æADÀ„·Tè´±±8qEY·×Ë„‘“¸=n6­~–î]»øæ¿bÅ%ïÀåñ"IP.4µ¶ñôC²ú¡‡ùä?ý+f¥¥Å¶Ìùg;P*¾õ§Ë«\[*—Æ[üNÝ‚ñPïr»i›ÕAë¬Y̘=›áþúusÇŸà7¿ý-gŸs×~æ3“ï}Ê ¬[ï„Æ/_³gƒZ NF"عÖ®… /t.kj‚yó!—¯× ¤–å‘$ÈdŽ<~8쌛Ìçœó•–z*ÝÈ'½€Ã‡_fÊSÈXŒŽüÕ›n}=ºÒ¾ÚÇTUPNð³+šNð8-£¦mP´ã‡ZhÔuÔLC£* ³¢Ñæ:¯—zsÐË|ªJkÀOÕÓ²™ ¢‹nÉ‚ ‚˜‚ðZ‡Ð# ¤Ï³ôü•ÜôÐ_hž:E×1-Y’ÐtisçнŸÓbjˆ<'ë÷nX’5MM4µM% ³áÙgøËïO¾Xäš«¯>9ßœaÀÒ%0»A’n©’äŒ{lmun7:ì1Mðx`áB¸ãvxæ8ï<ðœërYøý=NwW¨t˵+é‰#-§ÇKô¯ ¸É¥çiM3Ú1_bš!xnt”ÓxM&}V€‚e;!:Ÿ{åAÓ4âKש\••$^âù¶½Ôk‘$èí;q°•tÕÙ°l¿,S£ªãÒ"š†wbø•$¦G#ø«r›¨ËEk0€Rù¾eIbV8L@UÏ€WUh©ADÀa˲©ª«§¶©EQ1ÊeRññ‘ØÏ®-[À²PôSg5“$ EQP ›“¿ sb÷؆ UAÕ4Jùky„‡ïùo’#ü÷ïä[ëž§±¡‘P(t²Æg§JkuB à O‰ôõÁ¾}•D7!X¨ÌŸ‹—Àïî„gžvZ2Çî»ôl˜5ËéZûz4sKM…Ÿòû¸äœ¥/ù67Œ×´(• ” óUÌz f0Ÿ;fÍ‘€¼i±-‘ keIb¸PàéDò¸ë‘eâ£#ÎXÖÍ—³-I”&Ü/$Ž~œãœlxèÈÁƒ±Û¨ê¤íÅMEGϪ$Q£ë“îRíõÒä÷cáTÝŽº\´øý¸UÅ"`ìPj—Sd-ìvÑàñˆ!A0áÔ#É2ÙTЧ|€‡îú£ƒär9²ñ8–yjµXZ¶M|t”Î]»ðC'}%YÛ¶hž6 Ï?^ùwÒ~²¦ár¹Ù¹i#Ï>üO?ö(‹çÏãËŸø{Î8ã "‘‘HäÔør³xî9gle: …‚s:QÄŠDફœ.µ«žp‚¨®ÃûÞ+VÀÝwA4êT‚0㇔I‹¿:ör<ôÛ6aY¦Öí>©>æYUQÊ'hqµl›‚i½’$ Ë¢ôŸOÉ0N85Y.³=?þAÛ¢'›¥3E‘%@"oìɤٟ/ Iª$1šIC6;9ЗËÇ žÃx÷Ñ(€ÝG/ ²ŠÂ¤–lY™t›¨ªâ«<Ž«2V•$°mfVWáÓ4$ Ùï§ÑãÁÜŠÂâš Ë­(LADÀ„·p¸”Èg2üð_þ‰g|™‹ÎཟøÕµõDkë„B\û΋O™÷;mÆt wßÍí?ýš¦ÔïE–$FFFXrÁ…¼÷êO­«Ã2-UAÓtÒ©$«îûÜu'^—Æ{ÞùN¾ößwSUUE8F×ôSe)†\~~#ìÛíí°l¹3V2vvðxýñï Á9ç8ÝeK%' ø|NÉd ¡ÁéN[*ÁÒsœÍtúøÝdsY'„\r)˜ÖË;àq~ÚJ¥À‰xÕ×ï'y~uõ‰Ž´P¶,ʶ=ÞiÙ6†ebÚGây¬Ö/ÆãŒN?.KðÌÐð¤-<:2ÂØ£hÛ$³YȤ'Èò‘1¼•×4é<b’tÜ »!™8r^’'ÚjMêìì„Mr®«ñz™Q2MºάpM’Ñ…ŽP î¢lYÌñ«bWIALAxhºîTнÿÏ|ù{?`ÅÅ—à P$YUPUõ˜#÷'³ËWðû»îÂò!~õƒï …ðz½/ÙâtÒSTgjpÂe0XYf%'@vvN¾½,Ãè(üâF¨­ƒÏ}®ÒâX‰²‡AO¼ííàõ9W]í´xîÜ 3g:c6ÇÖ E_tÎ×Õ‰ ËÉ´øÈ2G¯ºüêZ÷[Ì Ýo-ÛÆ8ªË¯a9Ó6!INq§Êõ©r™­£1,ÛÆ²m¶Äc$Ke,lz²y¶¥R¸d™Ñb‘XCmsóë¶O,IJ$ùߟºš[núK/ Á_Q*•èíí% áøÑT éšçϲ,>ûÙÏrs±äDZVÉÉ)Ô™{òG?tBåÄÖZY†«¯ ë">ÿö#óXÃwÂŽí“ïcÛNà|ßû1˜[){zà¦_8÷xŸ±î“_ýL›ö×ߨŽ\Þ{˜ÿ÷óŸSß ºÔ Ã:rT‹é„¶ûñbKcÿ»eW*Íá\Û¶I”JlŜʖÅêáЦIÁ²Ø=8ð*†HL,|$M¢Ò¤«[Aføý(²Ä²šÜŠL“×Ë´`·¬07Á}*÷¼ALAx³lܸ‘ü—¡vÚt.½êÃ4Ϙ¬(•ñÚ I–îëcõ_掟ý;ÉD‚ý/qޥ½Ã\û®wòåû?¼ëc{ ç´Çw€CC<ýàý<ü»;¹é†¸øâ‹‘O¡±ŸÂ«×yàÿúÍoò‡C½ð¶ ¡¾¾Òb"MÞ©uëàûÀ÷¾÷âEP[ët“ýɰ¹|¹Ó’ƒäæÙ²žöìvº·^t1,^ìt=ÞdCƒ°gÜûG'Ð|ðJ§µ³±ñøUfmÛ9%“ðÔSœg|ÿ;ßaÙÒ¥§Ôáä0Öznÿ•À:ö¿ÑBm±8HЛÍq •ÂÀ¦3•¡'—c¸X¤3™tÖ+Yšø`G?ëË ¤BiØëe^0HHÓ˜u¹˜Ð4æD„]®ñG˜¸.I•Çk— "` Âq˜¦Éþçòóo$W,²ämog̘·oÀ_)(Á‘à)I¼e¦w?”îTo´,Ë0éÚ»‡Ö³~ÕãŒôõó‘ˆo|ýëƒÁSæ»+•JãÝ}u]ÉÐlÛ6Åbq|GÉåúëëJå–ùòÿd_n½ã~ú“Ÿp@’(Ìêp橬®vZÇ–û·Âûë‚8*s9سuÛ6šã1®ýìgùÇ/|·˜Q8õårô¤ÓØÀÖXŒÑb‰¬QfÓhœ²m±f4F©X˜˜t¬7“BéËü³,j#QÜnf´ø}Ô»\t„ÃøT…%55h²SÄhbè”+ÛYI„PADÀNwàþûïç±U«xaÓªë˜uÆ™Djk™µpU5µT76g;d I–Q$çï˜#­ ã~´iL HcE+lË®tɲIÅb ÷õrp÷.úâО=tîz‘íí\¸r%ïyï{Y¼xñ)Ž.¹ä}ôQºººhmm=ámGGG©®LðdÉÖ¯_ÿWÿ3Ÿù 7ß|3kÖ¬aùòåãוËeTU=åZÈÖ®]ËÝ÷ÜÃ?Îh¡@²©™|uµ6gÌpªÃŽ…ÍãÏ …L^á?yìÚÄ9v²,èê‚¡!äÑQj{ºQR)λè"®þÈG¸èâ‹Oí‚K‚ð2–ņ‘LÛfO"ÉP¡@É4Y38„ìN¥èÍç&„NûH £ÖäpzôÔÑp„›Ž@i~M^/¡M^/S~g3Q©þ«T‚§R ¡²èe §%QäG8mLŸ>ë®»Žë®»€={ö°ví:Ì#·ÜÌ@_ñD‚¦¶6t—‡h}þH„pU5mS±m˲©kj&Z[‹¤È¯ºµ3—JqpïEI&ŸÉгåBžXÿ©XŒÁÞÃNùû¶6/>‹w,YÌŸù4gžuÖiÑvb˜x%AïåÎÑYUUÅ”)SœûèúxÐÏårÜvÛm|èC"‰œRŸéòåËǃô@?«Ÿ}–¶ogûŽì|ðl·+"çóù°¨ªrv8jjŽÌuùrI’SÌgpЙöD–!™DŠÇñ‹D’ ¤Bit”©óæ1§£ƒ³.z;çží3ÚņKŽÞq“e–ÕÖpîKþ)š&;ã 2å2]™4ýù» âÅûS)årälò&šø×¶‰%Ä6;ûû'б)^ÜæE#4¹=Ì‹„it»™ Pïñ0=D©´‚ª•ƒVš,#šÊ!§,Ñ‚)X–ÅöíÛ)òtw÷00ÐÏðð0Û¶ï@QE¡ûàAûûù[V`0Èœó1 ˲¨ŠF™?o>¿ŸiS§RU]MGGn·û´ý..»ì2~øaº»»ÇÃàñLlÁ\¾|9kÖ¬yUϹoÿ>¾ý­osÇwüÕç<  000@wO7=]Ýtõö²gÏ$I¢lô8@ylÎÊWòC£È´ÌhÇíõb˜&-ÍÍÌž1ƒºº:ÚgÎ$‰0mút±„7X²\âp:Ëp¡ÀþtšŒa°yd”’eòb,N¼X$kY¤,Ë™6Æ4'‡QÓœ8÷7¡ÝãáÌp˜®qVU” ¦qfU5A]C­PM‘‘‘й¤A89‰LA˜@–e.\À¡}q IDATÙgŸ#>W©T.‘ÍdI§Ó(Š‚ßïÇçó¡g¾7Ó4ÉfÛJ’„ßï' þÍ­´Åb‘t:M.—CÓ4"‘ȤÀ>::J¶Rh¦¾¡žd"ÉG?òQ6nÜ@__ÍÍͧMѤºúzêêëY¸h‘Xˆá4ÒtBQ§Ç4œ „–éI§‰—ÊìˆÇH–Jìˆ%È•Ëì¥$AÌ01l›Œi8ÝrmË™#×2!•d_*ɾþãP¥ªšF]geU” ®±¤ªš*·‹‘²$¡) ª,£É2jåüX+¨ "` ‚pˆÅb<öøcüé¾?ñ»ßý€O}êS\yå•,_¾œ@ 0~[Ã0xvõ³üáž?pã7¢i×^{-_ÿú×1 ãU=¿mÛ$ þð‡?pË-·°víZ¢Ñ(ßÿþ÷9ÿüóiooG–e®»î:n¿ýv¶mÛÆW¿úÕñp °lÙ2†††¨©©_¬ §iÕ˜p~ý±]rMÛfWüéèè ®®ŽuëÖñõ¯íÛ·¿ª×ÐÛÛË7ÞÈ]wÝE(bÅŠìÚµ‹k¯½– .¸€;î¸ƒÆÆFü•‰ÙÇBéÒ¥Kyæ™gÆ[5—-[†ÛíF¯ŒÏAŽ¥Hó¢ÎxõeµÇŒK”J å t¦RŒ‹ìO&‰‹ìO$I ÄKeJ¶MW¹ìtÃ-—Ê_Ódhd˜!ÛfíÑáSQÀç§=d^ @›ßÇ¢H„¯—)~?šªàª´~úTÕ ¢¢Û­ ˆ€)ÂÉò,ž{î9~ðƒFùÍo~ÃW\À/ùK>ÿùÏó³ŸýŒåË–³dÉ2™ ÷ß?ƒƒƒ¼ãïàú^ÏÂN÷ä›nºi|üå+ÇÑu­[·"Ë2–eqà 7pÝu×±{÷n}ôQ®¾úêI÷Éd2|ë[ßbóæÍüùÏà Z9j/‚ ¼:a]'¬ëÌ ­|žlÙ`Óè(†iòÂè(yÃ`ïÈ(EËb¸T¢h[t• lÓtZ>MÓ9å²ìËfØ×ÏäŠÔn7øüœ Ñèv³¤ºŠ‡Ž`¿®£) ^ME•e‚ºŽ^é‚+‚˜‚ ¼…¦Áƒ>8Z/½ôÒñëV®\É{ßû^ü~?ƒƒƒ:tˆ§žz pºÐŽ…Kp¦¹çž{XµjÕ¤çØºm+åRyÒeš¦ÑÒÒ2~¾££ƒ/_÷åñq“²,³téRgGf`€uëÖ0Ç”ËåI¡SLA„×W½Ç˜t†O|tÆä‚_{“)¥{“ F EzÒiF yFÒYR¦Éh¹Ìa3ŒJ«§†Éë’ °mîÝ=az¼^VF"DtµÕ4y¼Lðj.MŧixU—¢àÓ# ‚˜‚ ¼9LÃä†np6,ª:iºÙ³gsï½÷Nº}ww7O>ù$À1Ó¨ªŠÇã9æ9–.YJ©T:æòL&3þ]×Ñ5ý„ÁñåNc"‚ ¼ùÆZ>—ÖTs]¼T¢'“¡;a(Ÿgo2I<Ÿ§/!i –J$L“‘bÑ)8T*Q†d‚§qîÛ=¡èP(Ì4Ÿ³"fü4x<œ¢ª ^Mçi¸U•Ë…[´x ‚˜‚ ¼µLœÛòåNùâ÷û‰Åb“.óz½“î/f^A8=DtH4Ê£z›Ø8]o$SÄŠEö&Œ ôg2$ EF™¾B‘˜i+œO£ ™4éý“çûõz©õ8+¤ÅçcA8L³ÇCµÇƒÏå£(D=nº.‚§ ˆ€)ÂkE–eæÎËÎ;±mÓ4Q*]‹‰/¼ðŠ¢ÐÚÖJ[k@€ÆÆFúúúŽi•´,kR«ã˜k®¹†D"1é²@ €56'› ‚pÚ“€‡†±ž0­Gæ46l{<|Ž ìK$Èe‰åòôfs¤M“Îb‘‘RÉ žù åó<<E:f×®]Ì›7€§žzŠ÷½ï}èºÎwÞI[kííí|àà†n`Íš5œsÎ9TW;] žþyzzzŽyŽýèGÇ}î‘‘‘×ä=L µçÌ<]Ù¶M*•¶m …‰Db¼åY’$Êå2‰DÃ0&µH‡Ãa<Ïxð·m¿ßßïG’$\.—ø|Axs~«$‰f¯—fﱿ¹½¹±B‘ý©$ý¹£ùÝñ8 Ã`¨X¤·Pä°aP*äî¶å2å‘6›U~³, AÚƒAš=–FÂÌ ©óx ¹ÝD\.|šJÄí"¤‰*傘‚pJ²L“X,F,#•J“L§02Ùt˶Ig2ô  ( ùBX²£„iY Æâ”-ó¨ÉŸ%jÂ!ܺvLÀŒ†Âü>,ËÂãqÓT߀,Ëè.^¿ÛM(¤ªºú¸!õ­F–eÎ;ÿ<–.]Êúõëùþ÷¿ÏåW\Ž,ÉÜqÇ|üãç‚ . rÑEñë_ÿšŸüä'”J%Î;ï<ŠÅ"O<ñ»wï~ÙÏ-½FG†çÏŸÏã?ÀC=IJeËÆçÍO¹\®pñÐÚÚÊÂ… Y´hÍÍÍbÃ%›ƧªtDÂtDÂÇ\7Z,’3 ³9Å"ùr™©{S)fs¼J1”NA±8^ÙvÝÄЩª éLóùhr»¨s»iôxh …hôùhöû釨½>„“ˆd‹ŠÂi`ýºu<óì³lݼSVp…‚„jê©mlÀåñCA|~?ªª‡Çwœ'®&–e39EVBÎ ÆJ’4©Ûìøå²<ÞÚ)’$WPŽL:E¡P ›I“Œ%ȤSKE†ûû‰öSL¥1rY¦´µò¶•pÞùç¿ù­>Å"üóá†_“Îdˆ6=óQ›ÿð‡oî‹üã=pß]pí—`ù¹ð_¿…5OÁg¿sæÂ­7Ãîpí¡± ¾ûMh›W:À¯~æÑk>7¼y­V¯ê«øã¹÷Þ{™3gííí477ã¯ì|˜–‰eZoée}ly/ ôöõr°ó [¶naåÊ•\sõ5â è=tˆ6mbãöí  `Ä41$‰UÔ$z<^,IU¡#iÚä)(TÛ}LO“|.ç8›À¶,ôÑQ¨¬;Ó³I¢ºTDª5 o8Ls[gŸy&ó, ©©I|Q Y@ªT"V(,–È–ËÄ ^ˆ²#ždo6öD’ 'tNlåÐtp»iÓuZÜ.\.Ú"f„ÃLh‡hãÚ0áo÷ä“OòÏ_ÿ_úöw™³`ª¦a[Ö1ÅHNv²,·pöêáß¾rŸù»òéOúÍ}akW;á P€íÛ`ÉRç|"=ݰ`¡s~׋P[UUÎùÍ/@ûLGaÿ&ýýý|îsŸcñâÅ\~ù娪Šiš'å”.c-ø¶m³zõjî»ï>¾ñoŒŒN/›7näÞ‡fÿæÍ •Ë ènú¼Š^/Fm-n¯YQÐdIÂå@¥gˆêõ`ËGuy©Ý £[0mÛiaªÜ'ŸtÆÎ—2,Ó$›É &„R)š²¢¥5šÆÔyó¸â]ïâœsÎ_ ð²$Ë%R¥2¹²A¶T$ž/°;fW2ÉÖx‚Õ££I;A&O— tmºN£ËE½K§½ªŠöp˜ö`Y‘0ubL§ð:E~„SÒ¶mÛØ±u M͸Ün§xÈë.mÛÆë÷#Ë2ùlö ßy·, ɶÑtæÖ6÷³~ýú7?`Ž…K·ûH¸‡Ó˜Ùs&ß÷Œ3ÅüˆÇãlÙ²…K.¹ŸÏG.—{YËçØXÞl6û–y/cóªz<ªªªØ¼y3;EÀ<ÍÜüÛßòÈŸÿLw¹Lw$J²c6žHÝï'àõq¹½Þñð'UÆÊ[¶=>lÞ2­ñÖÇW½ã46·"ò;ë‹=¡~¸U,bäóôfÒÌå(&¸õòÈ¿ý-ŠÂ»ßÿ~>ù÷|’í^_!M?f“å¦I¦\&S.“.–H‹H§ynd„çGclI$œa(ù< tI]cÁ³4©ºF½ËM­®3·¶†UUÌ‹F™ ¢‰¹:0áÄ4UeÉùò/Ÿº†Ë>x%_ñj1 Ã9½FaÓëóñý¯ý+÷íå›?þwjêêÞ)+ Š¢ j¹L†gy˜ÿþí-£!jkkÅ I3fÌà—¿ü%\vÙeD"Êå2†awŒ¥¬È|þóŸÇ4M~úÓŸ¾5~¤TUU)•K<ôÐCÜ~ûítttݦO{öïã§?ü ›7oM žP˜@0X)–f‡HÛ0Ž˜xýŽx “æ±Ï"iš®á ‡°‘°m‹rG†žT’=CCl¼ÿ^xá¾óíoSŠ/XxÙ<Š‚GQ¨q»¡Rßg‰eqY[+™r™\%xîM¥X=4ĺXŒ­ñ„Óҙ˂$q°rB’øÓàºîbš®S«k´CÌ«Š0'åìÚÑÊ)ˆ€)Gï\O™>å—\Ês?Æuÿ(Õuõ\xéeÌ]t&s.Ä0 ,ÓIJmç¯e½âÂ&²¢°mÓF¶¯_G©Xx]Þ‹¢(H•ñhc¡²÷PûvlçéGþÂö hnoç}Ÿþ,›V?Çë €@cc#+W®¤»»›k¯½–9sæ°råJ–,YB À4M§Û¬ma™O=õÔ›ÖVž°œ+Š‚alß¾'Ÿ|’µk×2sæLÞõ®wÑÙÙyJÏM*aYÿþãŸp»¬~÷»©GÙ©æmÛØ¦É[nœO%ìZ^™æ÷ 54’Ÿ:•ß®]Ëò‡⪫®zËÏq,¼µé²LµÛMõ„0xF]-—µN!gäËÉR‘±8O ±>gw<™ ˜&¥|žÝ’ÄnY†¡aèÖj­šF½×Ë̪s#UU±°º¯Øö "` §-ÛF’$ÚfϦajïøà•tíÝæµk¸ïwwfÁYK™½huM´MŸÁ”i3p¹]N%Ù±B@àt­µm$,Ó<&„jš6j_ißI®TÏ”e YOaÓÓÙI÷þý öóâ–-lݰI‚úÖVæ/=‡/}à*B‘0Uõ lY·–¾¾>†‡‡©©©Ë8ÐÂÔ©SYºt)çŸ>;wîä¾ûîãúë¯gÊ”)œuÖYÌš5‹ÆÆF¦Ï˜Ž¦i¨ªŠaèº>ÞÒoc¿&•eeÅY¾ÇœŒ…ʱ¿tww³sçN¶mÛÆž={hhh`áÂ…|ùË_¦¾¾žL&CWW¢|ÀËS*—¦©ñä,4sÏïÏŸ|ïWþ _mf©tÂâTR¥ëª]™ëö•.›¶¦;Û]ËÃp¦ž:Ñr&KH²•íÿ_½m·vzkëÈ67óó_ü‚… æ3l<º ¼†¡³Êí¦jÂe jj¸|ÚT †AÑ4ÉçY74̳Ã#ü~`b£€å)Ib»$±=籡APTª5:UeV$ÌâºZ–T×pvm ±u@DÀN›œiZ„¢U„£UÔ553wÉRJ…"Å\–][6s`ï6=ÿ‡z"‰Ð8¥•`4ÊŒŽÜnÍmSñùý˜†É´Y„«¢ã-<^ŸEuV#—ËÛãqö-¤#;ÇS‚B.ÏÞ;*mm†úé;ÜC&™âàÞ} ô1ØÛG¨*B]S3¡hm³;8ÿ=ï#¢ë.<~?nŸ×y:I"Hðìª'X¿n–eñµ¯}+¯¼R,§õ±›P(„ßï§±±‘+VP.—éììd÷îÝÜ}÷ÝŒŒŒ0<<ÌÌ™3)•JÜqÇÌ;MÓÐ4iÓ¦áñxŽ v¶mcÕ†$Kòq_Ǿ}û( ¨ªÊŽ;(•Jìܹ“\.Ç®]»p»ÝÔÖÖ2uêTÎ>ûl>þñãv»ñù|x½^E!›ÍŠpù üææßpã7ÒÒÜ̾ðÞñÎKе“¨Å¬rðmôÑÇð×Õ#ƒP.uì2Ðù¥/‚¢2ý?xù’+2³oñ ØÝ…Þ>ÿ²e„çÍÇÒ5ä£ËRd¬D‚ÌÞ½ÄîúØ6ÚÜyÎ<“à¬d¯ç¸¯YBÒ]” Ò7ôùÐt—XH…7„K–q¹\N `Z0ÈüêjþÎ0øwà W.³#ç¹áaV°vh²0 $F*§É$<Ü‹®i4«*­ËëkY^WÏÙuµT‰yALá´ØÁ¶,l]#"INé‡Ú–V‹N7Á²A¹T&>2Ä`ßaré ìÇ(yô?“ÏæPe…Á>òéôø4j²"120À·®û"¯ØÈÉx—ÇC0&>:BbdsâXtÝE}Kóx…ÌHu-Ѻ| ‹ßþ6¢5uÔ44àöxT§Ë ¦ë¸ÜdYŸ¯Ó¶œÝ{Y†`8Ì•W]Å?^wƒƒƒÜtÓMÜrË-ÜvÛmT‹¹$OëiYn··Û$ITUU±páBJ¥ÒxuÙƒ²fÍLÓ¤»»›UO®bhpˆL&ƒÏçC’$LÓ/äóù˜2eгÓ2¶ómYtww“L&Ç/Óu]×ñù|ÄãqLÓ$›Í2Á|–/[N$áŸøEQÆo?Öuжíñ“ðÊÄb1f-_Á² ߯/︃¯õ«\vÅ|ôÃfá¢Eoùׯ) òÂEX™ ]ßþÞ… ‰^|1žÚ:gÞÊJ÷nkÿ~x%…sd “Ø3Oÿõÿs*^Å®.ŠOth|“ÒÁƒŒ>òâÓ¦3å«_E G°lÛi•ddI¢08ÀèªUä¶oÇöxðΟ‡*º o¢±1c¡³-äâ–fŠ–EÉ4I ¬êà¹áaf(‡RŒ2¥R‘N 3æÉÁAPwQ­(L8·¡žóêê8»¶†ú E±0áÜËvŠ>Œí¤ê.פc€šÆz¦Í™‹m[˜•B(æ„n±Gw‘õøüüëÇ>Ì®™·l9wüürv¬Áé ø‹"Z[7©G’@VÔ ·“‘e¥2Ç¥êœW熞ӶqÆoIQ444P__ÏøC¶nÝÊG?úQ¾ûÝï²téR±œæAs쯢(x½^¼•1»’$Q]]¢(˜¦ÉyçÇwÞ9~ßáááÿÏÞy‡YQžýÿ33§·í…­°Ë.,u齈€%–`ï&Ñ×[â/šhc^IŒ&¶¨I,Ñ7ÁJ4Š  ,J[ê"»,lï§—)¿?æœeEÀ 8ŸëÚëìisÎÌ<ç™çûÜ÷ó½(*.â‰'žÀétØ[»—H$Ò".………¸ÝnTMÅj±òÁðä“OR[[{À÷Y³z ›7mæÉ'Ÿ$//ï€4ó„(6ø’ÍlÆíñ0tüJ† #è°bánúéO‰Üpà œwÞù$%%¯V¿>MÓ¬_Oà×÷ ¸8‡ Å5jö!CQsQDD»;üÞ·+ ¨tU¬¢ãÉ¿b}:i³fbIJB0› 77ÓøÐô¼þ:Ù?ø!¦$¨‚ÉLÓ¼ÿ ÕÔà¼øR§LAt¹P|>:—-Ãÿúk4·üë¯GóùðmÞŒ¯²’Ц¨~? /‡ó΃hšjp|‰QÄ$Š$ªff;%'sUi 1U%,ˬkmeYS3ïÔÕ³½¥YÏ(PDˆEõ(g0ÀšÖVÞº“ 2Øãá”¸àœ–Ó‡4«µ7¦Áw@p8è1™Ånz$œ.7æx”å¹?üžKnº™égKZv6‘@€¥ï¼Íßîÿ_þû¯qçC‹§áku1íóHG‚ àñx˜4i<ò¿ýíoùéOjÔa38¤­ô î¼óÎîöâv»ikkãí·ßæÕW_åÃ?äšk¯% ê®Å=ÓÂI”º#óûöíãwÞ¡¼¼œ+¯¼’üü|$IÂï÷3ÿù¼ðÏX¶l………ߺqO$ᥗ^âÎ;î@‘cîÔ Jgg'×üòWˆ¢„ÓíÁáòð½+®dÖ…R·»š·ß˜Çïÿø ãÆŒáÆodÂøñÇ[TMÓÀd‚ô HO‡3Ðöíÿkþ—_‚]» ±æ\QèX]˜’‚=#SJjw¹’žÛÓD ¹«߆ˆýû“uÑ…XSRö÷íIÉdÝx~˜À˜1$‡`±il ²|)Î˯ ëìslV¢]È>ÖÜ\„ßü»Ö}ŒÖÖýúAQ1œù=ÈËÓ×lÚlPSct@'QÄ’è¬Vδۙ•—ǽ#Ê Ê2•íí,khdAcëô”Z5 ²€ lŒ„ÙØÞÆ#[·‚dbX’‡Y}úpJv6Ósspš )bLƒïÔàû¨4j7g_y5ç_s®¤$ÀåñpÎÕ?@àÙ‡â¬K/cÀðá(Ê7•E‘²²2î¾ûnî¼óNæÍ›‡Ëå2N°Áçrùå—sî¹ç"Ä×À9N®¸â dYfÁ‚L›6ÂÂB/^%IbݺulÛ¶?þñ”••°½Ë.½Œ×_{矞+¯¼ò[ßçH$Âæ-[˜sÓÍœõ‰F¢'w^z IDATŹ4™Môif³³ÙBéС• "ð±aåJn¿û—øÛZ¹êª«¸ìÒKÉËË;¾vDtf6Cq±.ÞN=U7Øin†ûïU¥eñbhmúúÄ#deÝŽfw`ÉÍÅêrmi!²ìCÈÉ¡mÑ¢;~Q„X d™ö7ß \]¬j„7m€@€ÀGËÙýþbho§úôÑ…cz&ÔÕ¡M“&é)´¢¨ÿuGèZƒ'.’("H.³™é99LéÓ‡»4 YÓØØÚÆÒÆFÕ7°¼¾Nÿ}&JÃÉ2›š#ljmåáÊ- ‰ŒKKçŒÜfçå2*=}¿˜50æ77à×>÷~oìì)Ed ¾&&ÌžÓí:@yšÍfÊ'N&zßÿ²qõ*ÊFŒüÆf¢Ý0€üàÜqÇ<ù䓯oÁàs™¨OD85@Ö4Ô³¦¡{×}3S32937‡Ùyy IMAŠOJmǘ_üÂï`UUEÕT½ŽTü±„aSs³nÒ¢ª´´¶²uëÖÒºznËãñPRR‚Û¥¯²Ûl 8°;z“˜Iï.ѳl„Á1’SØÉd:h}¤@N‘>Ÿ÷Üs\vËmú¬ø·€ÍfcÚ´i¬\¹’7ÞxƒóÎ;Ï8i½D‘üüüC&ñ,f ùùù¨ªÊ’%K8ûì³»]g¹¸˜LÝu-EQDQBííí´¶¶²k×.Ö¯_Ïç3øq¡×DI$+¿€«nÿ—Ý|+[>ù„K~ô#´pˆÇy”ÓO?ÓñšÎ–3Š= ×þ  v;ttÀ²eðîBhh„ .ÐåÚæÍ°n-ôïߟrì )¤Á¶­PUÓ§Aa_ø?ÕŸ=ZßöÁò)a¦¶ä]„~ŽÀÜér±³¶öøK—Õ4p¹)w¹#25Àc21%+YSxÜ*Jôs¹Èu:ºÍtM#ßá ÀãÂrË´(½º­‹‡3Ÿwßà8ø)ÆÇ׉s3µO6SûdóóáÃQ5¥õ ,i¨ç­}uT¶µíosª Ñ(Ëëö±¼n¿X³ì.ËÏçê’þŒÉHÇi6#ůQÆ™7æa‘eY–uOUaó¦Í465±}Ûv6mÝJ]CŸíª¢½­ èW\DjzV·8LÉL§_i)êÁ³Ž€ ŠÔÕÕóîòøüH¢D(dÏg»ðûüˆ’‰’¥¤§¥1|Ð DVf&£GÆår!™$L&&ÉdˆNƒ“Gçäpþùçóè£rÎ9翃Eƒã«ÕÊ–-[øáØëó?ü0'N$‹ÑÐÐÀüùóyíµ×ˆF£Ýë3öwüi4MU‰Æ‚^/á Ÿ$·Éáè®÷{BpÑÅ0~üþ´¼Ô48ýt]ì­]ãÆB~>ääÀ¸qÐÒ ~Øìûe’(@Íø:'@4 $‘^ÿõK¸)‹ñ:Ÿ‡)¡ÕÝü>6ø¼ïK÷ÖÛþŒªR™E²ÙDÏnšÙ¨´Ôý¿§$11+ EUQÑH¶X)OOí~®SÅîÏ‘!ÒAQ0ÉÛ}ãÂSNÍÍáÔÜ~7z4~YfI]=KX°¯Ž*¯W?šª·ÓP¹;w0wÇv°X™žÍ9ùyœUOŽÃI1‹¢1Ñ`L…BD"ÚÚÚX÷É'T¬YÃG«*غ¥’C†’š™IÿyêLfgfSXÔ´Ì,=jÙ[Šìç¦É â¡)²‚ ‡©Ù¹“ŽöVvWídáÊU´46±ùÓÿÁa·3aÂD&ÃäI“(..Æjµb³Ùz–èí±÷'MIÔÌ<>Ö=–(¥°°7Þxè‘ipXTUíur-‘Ub±X0›Í‡-c6›E‘öövî¹çvíÚŬY³˜6m¤¦¦’––Æ™gžI 8Ž~Ǫ¢ ÈrÜèçÄG2›«_&ÕÑX„h0LCÍV¾·€Ë—QVZ‹ÿø;C† 9vV‚¡Cဥš¾>²¤Þ_ »«!¿ÜnPÿzV­‚òrýuÑ(´´À¼×¡ñkrz†øýœÓ¯/éÙYGU·SÖµ¶<\Tôhô¥(²­½}¡Ðç¾.¨i¨G\†:õò°î¢wÐûÕ¸p8è|Õ¶µRÛËg-«Ýsd‘ªõpijÛ)KMEÖ@QUƦ¦ÐÇnGÑ4¢šÊ¸ô R-fT bªÊĬLì‰I®ƒLÎLñ±bB˜Jñòfbüƒ¯—ÉÄ9…œSXÀ#@s$Â’}u,®¯ç£Æ&ª~½É Ä¢,­ÝÃÒÚ=ܾ\!==ƒ‹ós9+/Ÿéi8Ì&¬’ÉXÃù]˜²,ãõzéhoçÕyÿá•W_§±µ…á£G3lÌ~öû?P:hf³¹Ûš^ë‘.+™”Båp“xý BÆM™†Ð#E¶¹¡‘OÖTðé'ëøû‹/âëìâ¬3NgÎ9çP^^ŽÝáÀãv­Çàšj÷›«ÏH÷ÔîÜ À·Ü‚“¿õ–ÎØ±cY´h\p±Ó WY__Hšl4e÷îÝØl6fÏžMÿþý™?þaû}MÓX´h;vìàþûïgÚ´iˆ¢xÀz³ã)C$‘ÖõÙÖ­T,zù$˜ªª1jÊTì=&¸º³Ie™P0ˆ·­uË–²þ£e(—]vþö7'níÜ´tPêkM&HKÓÿ߸fÌÐQíðúkðÊË=gHà–[áí·ôÙÄA;ÚÒ9Gz Ð?à㺂< û—w‡°+c×w¸!Rd*š[0÷˜È€¬Pã÷ÑŠtG–$ª½>êƒÁC‚ͲÌÁGKVÕ^ŽaA›˜Qz|ÃXŒm=&v77ðî§'Nãÿ÷ÉîƒI0 åIIdÛ­ˆä;»ÜÈšF²ÅÂð´ÔîþBê!DÍ’ˆO­6‹R÷¾›z¤‹|>™V+—qIqÛ;»XTWÇÜ]Ÿ±ÍëÅ«Èz&‚(ÒÚÑÎ_ÛÛøëú `³sJNgçårAßBÜ 6“ ›:9¦,Ë´··ñéú <ýÌ3¬Û¸‘ÓÎþ>¿yâ¯ô0Iõߊ‚¢(D国ðæó’RS˜õ½³8íœs‘–æF–¾»ß<øMuû˜sÎÙü誫(((Àãñ­è8Äl6£Êò7*ž*–,¡pÀ@RÒÒ$UQ ø},™ÿîÔTʆ@U¿¾6žX›|¤»ÕjeðàÁ¼üòË´¶¶’‘°÷78©ø²m¿¢¢‚¬¬¬nsEQhiié.)RTTD,û\s«ÕÊÎøKZZÚ¦A²,³råJ‚Á`||w”i_ãOÚjµ2yÒ$öÌ˦wœ“/Ÿ¬[˾ݟqéM· ªªðùðuyÙ[µ“ŠwÒ°s;ÓfÌàñ¤|Ĉ“ õ¦-%ÚXO±èrÁ÷¾……°t©î>;~Œ Ù}à­ÿBY™¾ÞRUÁãÑÍ×^¿·ûˆVäš û2é®_#If3ÃâBêó˜™ù¥?«Êë%$ËôôØÝRë÷p&}±ëÛÚâ©®h”-mmzÚ/S5:}ý¦WUu¡š¨£¤ªFP5~žZš÷‹ÓƆà ÑvÌàI"ËlÆ)IŒIN&Éb&¢¨ŒJK%ÝfEV5 Nò]NL‚€ÉdÒ×(Öøÿ&AÀBFôí@&'109‰[¢.dñ¾:×ÕñiK+»Ãa¢²îôL,ʇ5Õ|X½›ÛW®dr~pz^.)6N³»!6OX¶ü#þöÜs´ty¹äšr×£Oàp8‰E£Ä"Ž×¹a-Ñ)ÅÓP’’S8¸àªÐÜPÏ{oý—Ëÿç:Ξ5‹«¯º‚â¢bcæqưòr^~ó-:Z›ÉéÛO¯{¦iÇZRò˜¨«ÝÃ[ÿ÷c§Brj]ím¬z1ÿyæ\rÓ-ä(%Ž|õBBÔ#ïAŸŸ†ÚZ¾7nìß“‘‘ÁÀyï½÷¸âŠ+ŒsâñxŽŽ€C"‡GôUU1oÞ<ÆŒƒÍj£©©‰÷Þ{•+WrÛm·‘“›K(.‡,ËLš4‰?üùóçc±Xpºœ„‚!6nÜÈ¿ÿýoÌf3Š¢à÷ûINN>ì¶}lÀ@QRbð{¬X,Λ3‡óæÌ9iÚÁC=Ä–¦f"‘þŽ:ZZøxÉì\·–T‡]ó#Î:묓k=loé¦=£]Ng\$Ä%$Aù5ZŸŠ¬k’ö6} fÙ ý5ª³fÃ?þ]]àpmºq’‚H$BSC=+¾Ã––ãklæ¬ïŸÃoÿõ"ùù'çN75êu)»'Tݽ{ß>½tÈø º`ˆ„u‡Y«RRL«5™ ©I¾ PŸ†™ðzõÏ8¯W£ÏQûö|5ˆ‚@YÊþ>¤,9é˜ÞUUª½>4ôÝ[[Uj¯—öhUÓhøióAˆ¨*ír ¯ªÒ¢(ûýAyÿD†ÓÛ£·‹.  øwSã~Ús-© €ÝNŠÛƒM’åñd6“b5349³(‘çpïrêåA$ “(b‘$L‚€Ídê£'+’ 0)3“I™™üzD9;¼^–ÖÕ³hï>ªººØ B, ²ÌšÚ=¬©©A`\A!ä1;7t‡d‹‡!6O é÷ûyú™gøt÷nÿ¿c2›‰D"'ÍS…¨¢àpº¸ñg?cû–JîûÓÃüøšrúi§-ê8⡇bîÜóχÿHZ¿þ”ŽMnß~8Ü..· ‹Õ¦—ĉOŽhª½ðT™²òØNÒ³ûpïßžaÉ[ÿeÅÂw)\ÆøSNeШÑÝËEŽIH º²¿# "±XŒ ÏGÀï'ì÷ÓXß@õæ T­ý˜I'2wî\Ä£¸¨8òóóùàƒŒ†rsË-·™™Éܹsñx<Œ9’ŒŒ Ün7n·«ÕÚm ¦i‚ 0qâDE!??Ÿ§žzŠ °aÃFŽÉ„ ())A9Êå ªª’––Æí·ßÎŒ3X¸p!>ŸSN9…ñãÇ“™™IQQ›6m¢¡¡òòòî´Ôh4ŠÏç#ÐÖÖFee%uuuÌœ9“[o½Õ8¹GIqq1 Þy‡V»;n¹…)S§žPß_;ÖŽSQ`ýzHNÖÓZAÏFjl„5CAÁþš™MMðà¡oüä6]h`†B°aƒžYX  LEÑg“’ b•.0=Iº ¬¢èb´b•^ª$;ûÀõ½tðz96C…/XD‘=DéÔ”#÷qÀŽŽNL’HS(D] HLUÄdöøýb1L¢ÈζvBr”¨ í±z„Ô«ªÈš¶¿|™"ëí&¥£­4ù½¥ë&D©ÝN'eN¥Ni3“’H6›š’‚Ã$a5™%»É„I°JVIê¤'<x<\_6¶h”ÿÖìay]•míl‡‰†C‹u‹Í;L&&æpQ~3óòH¶ÛȰٌå¯AÓ¾ºÞMUUV®XÁ5·ý„yK–Å»ÎñdÁl±°ú£e¼ùô“¼üòËŸ›âeðí …øï›o2ÿí·iik%9'‡”>ydö%=;»Ã‰ÕnÅbµát{0[ÌØìv½ÿŽwä½;kš†ÝéD%BAÝ Ól¶`2›º ªdY>pÑàû¡xª– úøFQ„Âá0ÑPˆp0Hg{µµ´íÛKgÝ>L‚È”)“¹ìòËÉÍÍ=¦ã²zõjþð‡?ðâ‹/k‰Orš››yë­·˜?>Ñh”ììlrrrÈÊÊÂétât9±ÛìX,úô邞Š*Š¢^®Édê.+%ËÄvÌf3‚ toGUU$IBUUü~?ƒAB¡­­­ìÝ»—––"‘S¦Lᢋ.¢¸¸Ø8¡ÇH0Äqp:ç BŪUüÏ¿gËèѺó«ò9íïúëôÛÉS!Éè°µV¯†;àò+`ÊT}@Á²åðÁb˜}ôí« J¯vì€U+á’KaÔ(L€&3¼þ:,|&M†1ct!@E¬ý.¸¾wD3¹n2CÕN®ôvñ»;ï ¿°¯ÑH¿CìöùÐ4ØÙÕEW4JDSÙÒÖŽ¦iÔƒt¨4D£h@HQØ‹¡ϘJ¬%Å~|«ªz™³™S’’HµXèç°Sàr‘å°Sìr#ˆ“Þ7»­DÀi6ë"ô\mÑ(KêêYT[˶öv¶…´‡‚‰ì?v6gäçsaA£32ÈpØÉ´Û c¦ãI`vttpï½÷²«¹…?ýã9ßÚ&³™í•›yâÞ_sóu×qée—­ê8¦µµ•µ̆ ¨¬¬¤­µ{R·«ËMjNN·‡” ݸÀn³#™MØND³¤+NMÃj³a±ÛôuaÇð Ò€X4BÈ8Àh" ‹ÆˆÉQ¢‘(Ñp¶ÆF:[š uz‰øºuvbw8(0€òòáŒ3–¢/1ØÞ´i=ô?ýéOqR{ UUU,[¶ŒÕ«WS__ÉdÂåráv»±Ûí N§I’p:Ý"‚ àˆ×D<šKGÂ( îzÆÅ«ªª4M£©© ¯×Kgg'Á`H$BJJ cÆŒaüøñŒ3Æ(õæÎÛoçOuõ0lddè)¨Z/%2ówÀ“…ººýÏÀô0eòþ÷I’¾fòýt‘_ @VL›S¦è¥Kz¦Û¶¶ÀKs¡ºZ– RS¡¨.¿N¸8ˆ¢î0®(ÐÖ ë×óÚEòýsÏÅt"Õ5øF…¨ªitF¢ìòùPT•º@€®h,Ê^¯¨¢ÐáWšäaU£3Ù/@{˜öÖlFJI!E™ž–†U”ä!Ën£,)“$a3™°J‹—ÙŒM’N8Óœ®X”eõ,©ÛÇæ–>õé øõ ‡DârseßBÎÉÏchZ:yn—±^óx˜MMM\zÉ%DÌþ>ïMBñÁÃÉŒÙbaÃÚÕÜ|Áùüñছo6ZÕ FåæÍìÛ·†úz6UVâózimnQD$$³³Ë…h6wG3-N·[OG=&© ut詉 ¨(Á±pM•Ñd«ÍFŸœJJKÉÍÉ¡°o_ÊÊʰÙl_Ù~oÛ¶?ÿùÏ\qÅL›6ÍhßQöîÝ˧ë?eWÕ.Z[[Ù±cGw LI’ºÓh‚Ñétb>ÊqB`ú~äØ~Wçp8¬GøãNÏ999ôéÓ‡²²2† Bß¾}¿Ò¶~¼EY³z N§“‘#G~îëwìØAs³ît9xð`RÂeÕªU(Š‚$ILœ8ñÄhï©á™§žæ…mÛ©ÏÈ€ÌL]Ì%'ÇËBÅ#Ï=«OÜýè=]uͨ©þýu'Øœ½cÏN[’ôøæÍ°u+x}PÔO¯¥™ÝGw(U­Ýˆ×« ÌŠ }›V³nì“—§G4k鄸û½^Ý}¶¹™ìÆF~4twÜq‡‘õdð¥i …hDÙã÷’cìêê"(+ìóvˆFéŠÊø™¶˜L³,ãU¢Ñˆþ3ä‹r°øTU=uÜí¡ÄfchRÝ.úØí¹Ý$Y,ØÌ&œf I$ÙjÅ*Š8óI“®X”÷÷Õónm-[Û;XåõB(¸_ %Ù}¸®¸ˆIYYäyÜä;Fcû¶f[[?ÿùÏYSYÉí÷ü–áct7KE–O¾'H&¾ÎN^{ñy¿ö*¿àæœDoß>|>5ÕÕøý~ĸ»[cSÈr¬;½õhÛMJJ ýúõë6Z±X-äæä’/<Ÿ””ôì[Õ®*ùË#œ}öÙœ~úéÆÉ68Dx†B!¶mÛ֋Ũ©©Áëõ•s¶¦iX,Š‹‹±ÛíÈŠÌСC1›Í”‡õÿ¾IZZZÈŒ—y(++cëÖ­Ÿûúk¯½–gŸ}€>ø€3fUŸÓó|ô¤©¹‰¬Ì¬æx½òê«,}ï=¶vv²\ÜHKÕwœN]pºÜñA³ õˆ¢¡P=ªs°ÀÔ˜$¥¸‹lüµ½-ñI´{AÐ_ŸH q#!U¿ÂaýÖï‡ÎNèìd¢¦2Èãaæ™gráùç#‘ƒo€€,Ó‰ÐÒ ˆÅ¨öú« {::Q5ºP˜˜¦²/Á§ª´G£z:z"•´7ñ©iz ºÃÉ›>V#S’I³Xœ’‚ÓlŽG<-X%‘T› »É„õ8K»­öûY¸w/kÙÒÖÁ'^ï~á­(àöpq~>0 %…’”äãnŽG¾ÒÞMÓ4n7…ʘÿÆët´µ2hx9Ù¹yºkÂ]ëFE$“‰h$BÕælXû1[·m£|⤣/ÀlpÂ7ƒ(++;éöÍl2cµZñz½Æ‰68„üü|JKKƒñ5^O¤¤ÙP¤ç:Ê£-+rÛm·‡ˆƒAV¬XÁªU«¸÷Þ{O˜ãuñEqñE±qÖ,]Ê®ÊJêÙVæ3 b’ ’“ô¢Å¢§¶&nû/Šº¥C vz^ÃLbO¥¾_<&Þëf@±Øþ[Ÿ.*%UaÅ6ÙN'…ãÇ1óÔS9j”Ñð ¾Qœ&N“‰‚ωÀÕ„e…jŸ_,F} @{8DƒO7*jGð+ õÑ({Âa]|Fu—V¼]Tz»¨÷ü-Ùlàt1Êå"ÛfedJ ™6¥76³»ÙDŠÍ†Íd"ÕjÅñ-¥Üös¹øqY?.+cCkÔÕ±¶©‰7ZZ‰ú¼ðóÊöm¼²s³²¹±¸c³²é›ä!;>qjð5 ̆cøèq¼ôäãlÙ°ž¡#GS<` }òò°X­º¹Ã dþ#ÄSÅDQÄçíbÏg»ØQ¹™ÊO7–ŸË¥×ßȲ7^G5Üà N0Ρ''<òÈ!=ùä“ÜÿýŸP3Áðòr†——PWWÇæù¬ºšææfÚêëéêêįª´Ê2 ÑMš†?ÑÏ ‚>ð5[ô(åÑô²áp·Àthù@ªÅL‹»(’j·“ÜwYYY”•”0pð rrr†hp\“Ÿ¥I½þíõûéŒFÙ²×ï£=¡% #¦-£1¡=cW(¤‹ÏpX Ñv>éhàT¯‹$»I)ÉdY,”%%Qàt’l³‘l³â6[p[-¤ÛlßèZÏòô4ÊÓÓˆ¨*gïÞME}«[Ûô}ˆDØÞØÀmûö"¥gpC~³ss˜–Jé7”yö˜ »û¢²Ü|ßïØµy3U›7³ô½…È1™1&2vútròò%ÙL¤ $Ò ÅxAÛ®Žv6®ý˜õkÖP¿w/ÉÌœk¯¥ ¤„ÚÝ»Qe£ ²Áw…`(HÕÎ*,X@cc#%%%Lž<™áÇ÷:iS[[ËêÕ«©¨¨`àÀL™2…ÂÂÂ/~ñ6™ˆÆ¢¬[»Žwß}—®®.N;í4&NœxÀº¾;3H$‚Ífã¾ûî㦛nâ™gžéþN·Ývýû÷ç–[n9!ÏCnnî!ÚÑH„` €ÏçÃà÷ûñû| Šh²L(Dû“Ü‚(âp»õ(¨¦ár¹Hr»±;$%'c³Ù°XE]a IDAT­ÆÃà¤#ßå"Ú˺Љ”eÚÃa²‚7¦3aOÀÏgþÍá0ï¶w D£à÷AÀOWÀς֖ƒ;6°ÙI·ZÉ·Z)tØI·X(ð¸É÷$‘ëtëpRšœôµ–X±Š"—÷ïÏåýûÓ QÕÑÉGõõ¼°§–m­(üµ³ƒ¿nÙBar gæôaVA>çôí‹aG÷5 L]e‚¢ªØl6†O˜@ÿ!C¨­ª¢ao-U[*©Xº‹ÍBnA!ýJJéWZJñ€X¬64UEÕT]pª*ª¦¡}©§‚€$Šz}AQDQD”Dêk÷R½s;»«vR³kíÍ-8SSèSPÈôïÏ!§ €Ü¢ân #5ÖÀÀÀà»C ࡇâ½÷Þ£¢¢¢ûñ‰'rÅWpõÕWκjÕ*~øaV­ZEc£^\}Ò¤IüøÇ?þÂßa×®]¼ýöÛ¼úÚ«ìþl7 .dĈ<ðÀ!úÓŸºßsÏ=÷t‹KÐ]µ{ì1FŒq ÌÞ°X­X¬V’ÂÉÀÀàËá¤ýýÝA%Ïü±±aY¦5"¢Èø"Qjü~šÃa6ttÒ³Ö«§¢‹,Óê÷Ñ ¬×±ZÁj£¿ÕJ«…|»L§“L‡ƒâ¤$ \.ò]Nr¿ÂrLÑ(‘I"Ïíb|Ÿ>ôMN¦ÆëåÃÆ&ÞolYfOG;OuvðZ]=oï®fLV3òòäa·Ï‡$¤Ûlß97Ú¯uoUUCưÙí 9’²ò ^N}m-íÍM´44òñê –,X@4“œLJzE%%dôÉ!=+‹ìÜ<’SSõBõêþz?‰ú„GJKEx*`¼a,¡nï^:[Zij¬gïîÝ´45ÒXWh8Ü’ÒÓÉéߟáS§‘‘Õ‡ìü|<©)(1Y‘AÉdÌU|We™Å‹óÀP\\ÌO<Á€¨¬¬äw¿û¿úÕ¯(**bÆŒ˜ÍfÚÛÛùÍo~Ãûï¿O¿~ýxñÅÉÌ̤¦¦†üã_ø{<ÿüóœvÚiüåÏÁn·³qãFî½÷^ªªª=z4·Þz+V«§ÓI Àétb³Ù˜7oçŸ>äñÇ7œL ¾\f½¬ @ÿâ3ªªF<£Q‚Ñ(­‘0ÚÚÙáõñY0ÀÆÎ.]x†B³ Ø•ˆ\šL`6ã´Ù)¶XȲXȵYÉKI¡ŸÇC‘ÛMÿä$ò>Gt†U•u--ljk£=AQUZ‚AB‘ÍѾ¸‘cTUQÐÓáeUck ÇZìx okW'Ïwvð|í^¦TUQìrQ !d1“jµ’j·S”äajŸ¥œÜýî7"§UU#]P@n¿~ȱÞÎ.|íø:;ñù|t¶6ãmï`óæMW­$ †r’ô¬lÜñÂñ5‘D£‚A6õL—µÙÀb¥$!8ívŠRS)NN¢ÐéMc_0Àºæv··³3b{bí¨^¬\wM”J”:@dû¥$îGÂ|Ôä#UíN§ß¯ºÌ`µ2Ö½“‘éÌÎÏcFn.I'a-Üo<^«È Ь àIIŽG'I$ ñvv ‰†B„‚!d%†¦j´77ðù—ZüW¬B…ޮĘ-VÜ©©$yÜhš†d63xü,v;‚¦as8°X­Øìœ6»W’!.Š5MCU]|çÙ¾};¯¼ò ƒ êvguØ<÷Üsx½^œN'žølýO}z·¸½ŽfBPîÝ»·×‰W€Hë™j,ï0008ÎHµZI=hrlªªÒ‰àÅÆd‘uÁŸùülî줢½ƒÏºº €`B!ªª„0´Ù¬6ŠM&TMcŸ, ‡t#¢ƒÅ¢(( µvãÚ¢WÁÙó1AУš½™i*„C| ðqk ¯Öîebj*?*Àœ¾} ùU i )**ñ \LOguºÝ¸’’ôÚ‚‚ O ÄOm(DŽEãòR# Ðz©C(¢$as81™$44DAÂîrb2™ô™`-nJ„ÖmN‹GZ Æëõ²wï^ýzКš!C†òúmÛ¶uÿo9h¶ÞÚ‹!LWW/½ôÒ!çææbî1Ëméeæ_3œÌ NB¬¢H–ÝNV² ˆÅðÇbtE¢„d™P,ƆŽ6¶·³ÓëãÃöv!C‹ÅØÕ³âµr{E ;9™Æp"ñÌÅX l6Š“Sø¬«S¿z©‡3~?¾ýDôò`e’+qñÙîó2ßïcE{;Ëêëùí˜1'M4ó¸ZqªÅjïînf‹³uÿEÕ é‡ÖLN(̸hìù´ª¨D•¨ñk58"‘H„Ïv†*+ìØ¹ŸÏ‡I2ÑÕÕEÕî݃Á/TâÃd’(,ìKnV²¢`³Ù((( 55—Û}ˆ#¢Á·ÁŽ;P…7‹ÅPT…º}uìÙ³élãUU%##ƒ¢¢", ±XŒQ£GaµX)(,ÀawœPÇ¥§ˆ;šß"z Ö½ìí~âxn;=E¥!&Œ,ËTUUF©¬¬DQdY¦¶¶–ºººcnÇÙÙÙôíד¤OR;“d¢_¿~ˆƒ¯ýk<³{dwLÈéÃâú~¿i“¡LˆIYÖS_5M–’ÄþÖ!==@RF7 BQr2ÿرä¸Á§ÅÊ¢3ÎàïU»x½z7ĽbÒSRiM8äJR\löò9ñk@§ÏË£[·±Óëã·#G2&3Øߴí™Ë¬éŠÑø•|aØWWÇÚ?¦±¹™m[·R³k—>¡a³áð$!š$R³²±ØlhšŠÕf'-;Õrh¡î£@Q4ª››¨üì3QD‘eºZÛ üÄ¢]äõëKqÿ rs6|8ÅÅÅäåå'Íà+£½½;wòÙgŸ±bÅ víÚEgg'‚ œœŒ dee!J"¢ âv»ÉËË;&q#~¿ŸŠŠ b±’$ñúë¯#Ë2@€X,†Õj¥´´”±cÇRZZJIIÉqÛÖ û2kÖ,/^LkkëÏÝu×]|òÉ' 4ˆ{ÔÔTn¼ñFî¹çb±ÍÍÍìמÚ=‡l`Ù@*++y<%%…|Ðh´½ÐÔÔDUU;«v²â£TWWã÷û‘L·I’ÈÌÌD$Q"))é µc¯×ËÊ+QTQ™;w.ªªâõzQU—ËEYY£ÇŒ¦q @Vf–q‚ ¾!Ö5·ðÄÖ­¬ina»ßr¬[TžÖ¿?×S–šÂÛ¶óä–-ÄSuñ©iºà“¤ýuo»'5¶úü¬ik§ÊçU!5%•7¦LIbUs³.8…'Nàü~ýh †˜»{7Oì©Ein‹å0i³ñÏUÖÖ²Íëãÿ¦Narö‰Ýw˜Œæhð]b玬X¹’ŠÕ«Ù²q#ª$‘œ–FNQ1ž”ÆœqsúõC%$IÀd¶ «IÑ4Ý(Ãbµ"Š"_(† iD#Qd9† è}R,EQeTE%‹‚u{öP¿w›jö°hÙG´75 (*-eÂØ±Lš4‰ñãÇ'Õà&7Ö¬YÃ|À|@("55•ôôtŠ‹‹1b)))ˆqA°Ùlú:yAÀd2a±XŽy`.Ë2ÑhMÓݼC¡¾$!CQ‚Á µµµ¬[·Ž ÐÖÖF4eüøñÌœ9“™3g°þðÛ¤ ¿€)S¦°xñbÞÿ}¦NJnn.555,Z´ˆO?ý”©S§v§¿ž}öÙÜsÏ=Üÿý<ø§ñ¸=´´´pÿ}÷²}‡ÝÁàÁƒ{ýì¯bÍdÏsg:Amó£±(+>ZÁ’%KøðÃÑ4´´4ÒÒÓ(é¯×#MJJÒûîí8ÑÍf3f³ù˜Ûq,#‹u¿ïàvìóûØS³‡åË—óÆÞ ­­ ÐKÒÌš5‹iÓ¦õšm``ðåùÃÆü}ÛvªýþýÑJ³™ Jðÿ¢89 ·ÅÂÿ®_ϳñ@ŠV+¿1‚!)É,®oà…ÝÕì>¾FsyS£~_ï(r8hˆDx|ËVê}^Ð4Î,*æúAƒð˜Íy<”¦¦ð“!ƒÙÖÞÎS;ªxû³]º ì™ñÐsí&PÓÙÁœ÷?à…)“9£°á=†À48é©«¯ã¹çžgþ[oarØé?h(}‡ eÊù‘’–h±Yí˜Ì‹k| ¢ÏYõ˜a:Ì í‹`w:ì4âKÏÇ ‹ŠˆF"Ä™h$‚¨ÙUEÕ¶­,üßûi¬ÙÍ”SNáW]Ÿq㌓mÐ+{öìáÙgŸåÝwß%55•ÒÒR®¼òJ²²²0›ÍX,l6V«ué%íóÅɱÒk:iü!UQ)--%w⻺º¨¬¬ä…^àÞ{ïeìØ±üøÇ?fذaßê±t:\ré%¼ôÒK<÷Üs¼ýöÛäääàõz©®®æ”SNáÒK/íÄ àé§Ÿæšk®áoûo¾ù&}úô! 1yòäoüû;n½õV{ì1***8÷ÜsùÅ/~Á„ Žûv\UUÅßÿþw–,YBNN%%%\ýõ¤¥¥é¢ÑbÆaw`6›¿–vœ˜lù¼v\6°Œp$L,C–eÚÚÚ¨¬¬ä¯ý+wÝuWwýÓ“ÁWÀ†¶v~½n-óëô¨£ª‚dâ–aø¦´”<·‹4«•¨ªrûêÕüuë6]€3³xvÂx†e¤Ó‹ñξ:]\ª*¸=LKMeƒÏGWW—þžbp]K —|´BÿL“‰K‹‹ðôÉq§Ü|·›±ÙÙÔÉ£[·òleå~3 :½oj ø9wé2Þ˜>•3 …OfÓà¤%‹qÿïÏ‚w0~æ,nºï2ûä`±Z±Æ q‹¢q“§ÄXDQ¾´ëƒÖ÷†d6ãˆwT‰A¦iôíǸ)ÓˆE#x»ºX¿f5wüúò33xü±ÇH5Š‹ôàÑÇå?óþCyy9?ÿùÏIMKÅbÖe"‚ÕÝþ5 UQ¿¦&¯qðÞsß§OúöíˬY³ðz½|úé§üä'?aìØ±üæ7¿ÁÞÃìá›DŠû—ðꫯ2wî\ιøb~u×]Øì6~õë_1ûœsÉIKëž,2™L\vŤ¤¤ðÊ+¯ðÀ#pé¹çrà 7pÉ¥—òãŸýŒQeex½Þ#~v8¼¿LVoýTÏm$Žw 8àÖf³qÝu×áóùxþùçY¸p!W_}õqߎ÷»ß±xñbÆŽË=÷܃'ɃÕbÅf³u¯¥<Ú±ÝnÇn·w·ãììlŠ‹‹9ãŒ3èììäã?æ†n`æÌ™Ü}÷ݽ®Ã5008:ܸ‰¿lÝFc<‚H4Êœe<0z¹.'îø*¬(\öá2Þ¨©Ö…¢ÉÄurߨ‘¤Ûløe™nÛÎKU»tqét±ä”é OOcGW7,_Á¦–æý3ž‹Ûÿ˜¢ðÃUÜ¿~³rû0+7Óòó°Š"’ f³‘f³ñç ã¸~@)·¬YËš=5zêl·¾ÔºË£È¡ g/]NÅi³¦Ë ÚWèÐÚÚÊoï¿s^ç^yÑðÉ_ÞC2IÔUWóîÿ½Ày³frþ¿øã„óÎ?ŸœƒùÞÅãr¹±Úlˆ’Ô<‘M2„õ™"‘ÑH„ÕË–ðÞ˯0ïÕ—IKK;â6jjjxôÑG™8q"^x¡Ñ`NBî¿ÿ~ª««9÷ÜsÉÊÊêN§ÙŒªi¼U³‡9‹ß×kaZ­ü~Äî(Ž$üzí:î߸¢QÆååó̤‰¨šÆ7W2w÷ný=‰å ‰±Y¼LI¶ÅÊEýú2§ €é¹9|'_,Æ’}uœ÷Ñ øu㡃K ¨*%™|0{&ùn÷ uŽŒ©3ƒ“’üãTîØÁÙ—\JFV66‡AÐTµ»$͉Œ¦iÝûb±Xp{<œú½sì6î¾ûn£°cÇÞ~ûmFMQQQ÷Ú¯©ý'¾«¦i˜Ífrrr7n+W®ä¹çžûv¾ÔÌÙ0|âÒ%8~uœw î×þMÒ¾}X¯º~ý{¸å‡ÐÚ§Žÿ{ f Ŭ©¸'—ÂW’4m ˜1þõçL9¢¸ð¸=ddd‘‘Ñk™’”””îçâ;==ŒŒŒjfŠ¢ˆËå"##ƒ´´´ãZ\¾ñƼÿþûL˜0¼¼¼ºƒ^^¦  €Ñ£GóØc±qÓF£³208vû|ܰì#Þ¨Ù£‹Ëh”³Šû³ãü9\ZZr€¸øåºOtq‰f Ã=#GàŒG7·´wp^Åj](Z¬Ü5t(?6IXTWÇÜ꽉$qoùp§¥2,= _4ª [UåÌ~ý¸t`8]qcD"4ú}<¶u+§¼·ˆ¾¯¼Æ/×­cc[;¢ d±pNßBjΟÃmÇï_ïÙ³_Eªš›¸cí'´öÈ`90Rd NJb±u55lY¿žI§žªG.ObDQ¤jÛV6­[ËÈ— À€––öíÛG(Æl:±»{AP…ÆÆFjkkq¹\ßαXàâËàÖëaÆiºàœ:®<nú /‡ÿ,†3ÆÃÓ/Aa_ø°&Á»!- |¢ß_¶XXa4Öà Ë2ÔÕÕ1`À€ãΘè‹DRc±õõõȲŒÅl1Nò×LGGÕÕÕ456²sçNb±+6ndo]zfbÝîÝ„;:Žæb‹'3“Œ¸ ±”æç3zÈì%%%ddd0`ÀœN§qð¿bÖ6·pKEkššºÍrž2…óûá1[1ÄyvÇNþ°q£..M&~?j$·Œ9>× r߆h œ““ÃÏˇa•$bªÊ¿wìdw{¨*7 ¨ŒtàÓ¶vÖ¶µéQQ≉Èu:yFUÙÞÙÅ‚ÚZþ²³ŠöÎD›RØÓÕÉ6òÀ¦JÊSS¸~@)Qèrñà„ñLÏÉÑ£¨/ ’$^Ù¾éY™\= û r-7¦ÁI‰œváEüûÙ¿ñî¯3óì³™:ëtIBˆ? œ°û—¸°‰¢È¶ X0ïU¶nÚȘ駔”d44Mcܸq¼ýöÛlܸ‘óÎ;Áƒw×ëN€öŸ´+ŠBMM óæÍcíºµ¸´~;WN<ö7ÝZ^Áfƒ¹ÿÝ_ïÌn‡Åëöñv8`ÕnHˆ‰´´ïŸ`µ@¿i7cÆ þùϲjÕ*.¸àJKK‘$©ÛÝøÛd„ X­V–/_~Øõû=ÛñÎ;™7o[·neêÔ©ÇT‹Ó wîʲ"ÓPßÀÚ?æ?ï½Çú­[©Ý±23RR°d÷A$¤¼<¤þ%h‚€ i˜.¹”´¤ä#Ž 4U%ÒÚB]k+š("hû::X¼î”pù_ÿBëìDilÄît’_R©£G3eÂFŽI^^^÷97Ößõø¸¹™W¬b}s“~žÌæŸz ³óó»cO–74rmÅj=¢(Š\]ÜŸ;‡ ë6Ì ) oì®æµíÛ@”–Î#ÊIŠ÷ËÿÝSËüƸuºøá€RÒãkÿçUï¦1Mã’’þdØlXD‹(2"=ò´Tî>Œª./¯îÞÍ»vÑîõêu2Õ𛹱¹…WÌœ¼<î6„³ øÛ”É\¿î=e¶ç>I7®]Çìü<Š<C`|‹#Sì¿ýû³¬_¹‚wßú/üÅÏ™¡…³ÁWÛv, ?ûÙÏhmmåñǧ³³“‰'2yòd† ¢§F ‚>é"ßê€GÓ4TUE‹âdYf×®]¬]»–U«VÑÙÕÉå—]ÎYgÅ¢E‹¾’’_Zdö¤§í|¯÷-Ÿßà°âÁl6sï½÷RUUÅ<@$aú´éLœ8‘²²ÿÏÞy‡ÇQ^mÿ73Û´«]­z[5K.²Ü$wã^À¦…Ä&ÔB(ù’„–„‡’¼$&¼7¡†$ô€ Œ10¶q¯’»z·º´}gæûãY­%Û2 1öÞ×¥ë’vggµ;Ï<çܧܧƒÁ öoïç_@¿µØw£ëø|>öØÏ†õX»v-Á`+¯¼’sÏ=—Í›7íÛ5þ›ûE0¤½­ÿýo^Y¾œ[¶…0 J̈‘Äœ{©?ü1²Õz´MÿœkDb2]é:ÊçèY&ØÖJsm-OWUñ×?-!pð„Bœ5e Ÿs—}ûÛ8â ƯEÀï¿I.—UUñ£uë©g‰µ³|ú4æº2QŽñÝU÷ô0cå{áq#3Ò3xjÆ´H_ ìoïà‡[¶ŠÀ ÙÂw‡ᬰ˜Ž¦ë,+/§­³4»G §ÀéD|šÆ;•Õе7 /ÄÚÇôÚS“¢P”Ï= c¹«¤˜Òöþoïþ¯¢ ¼A6ƒ^«(絊 &¦¥ñøÔ)¼=k&?_÷ ;[[“LI›?íÜÅâ ã"$8J0£ˆâ¿µ1i:“çÍ”ygãîîaÝÊ”mÝÂ+šúº:F)aа¡dºrÈ/FfN‡#Üg-Èfoy­ÈŠ‚Ô+%vÈ?‹aP5íp3xØyÒúˆé‘¸Ž×磮ªŠ}¥»hih`ÿž=”íØ†ÑdbØè1ŽÃÿ|Ž—+²¡E•(ŽtÂ&MšÄ¤I“¨««cݺu<óÌ3ìÛ·ôôtJJJ4h999 <8’ÊÐÇ_:L>ûsB¤±ïï“Íéûxuu5•••ìÝ·—Ò]¥TVV’––ÆØqc¹á†5jš¦QSS]çgè:ž5k³fÍ¢ªªŠ5kÖð—¿ü…òòròòò())!77—ÜÜ\òóóû½¾7cÔ7ˆ"}†ý[×õ~Ùɾkº‡@ @UU•XÇ{÷²k×.êêêp¹\Œ7Ž›n¾‰aCÅx’½{÷F×ñç%õÁ»JËøå½÷²âý÷1Oœ„}ôhÒ¾qRR2²®®2ìýŽ¿lwäùuc|Æ„Dì£Fƒš$£··±{÷nnyã?üä®»¸`ÁºçååE³ÙËýÜöÉêÛÛ@Qbí¬=k@eÕŽ@€y+V‚× À øx^œ3«ŸèL›ßÏŸKK¡» f¤s˨‘‘çw¶µóZS³X?Ž8¾‘C\¸ïý…Ùìvƒ®3.;‡§ó¸cD$À ËŒNLà±)SøŸ x£ªš8ÈêêD™­¦±¾¡žQ¯¼Ê7rs¹½¤˜Gw•²¦¡þ0É4øß;¸~èPòâ„àI1`:E3áQ‚Åáœè:ÄÄÚ˜û­…œ½ðb$IÂçîa×–ÍTîÝËÁò¼ýÆkÔ”WðûHKOÇŸ@¬ÝNV^F“›5Wn› =¤bsÚÉÊ„Ùlô0ñ<ö :šªÒPWá†fE& PW]C{ë!$Y¦£¥•ÊòƒhªÊ¡¦FzººÈ.(`èÈQ$¥§sÎ¥—ó“ûÀ™”!“š¦¢ëâ=䨮ë¨aÅÌÏb¬dY># y("--… ²hÑ¢ˆ3¼mÛ6vìØÁo¼Áþýû±Z­dff¢ëz„ÔÅÅÅQXXˆªª˜L&²²²°Ûíhºv£*áñx¨©©‰¨•VTTÐÒÒ‚bP8°ÿ~¿Ÿ¦¦&Z[[ÉÊÊ"''‡!C†pÍ5×0hÐ ‡Âh@ ê€E÷rTUÅårqÙe—qùå—ãóù8xð 6l`åÊ•”••ÑÒÒBrr2999˜L&†Žªª8NòòòÐ4 ‹Å‚ËåÂf³Ñ;4êX{¸,ËtuuQ]]M0D’$***èêêŠP .ì÷¾#GŽä”=v IDAT?øØl¶È:ƒ§\é× ^¯‡=ÿ×-^LìÂE ºä2d³½—T~cÆ>Û¢âœÄMžLü”)¨ß½š?YÇð /déC±àœs¢e³G 3àÙ={9Îæ%§ðì´©”$[)?¤i\·z ûZZ„_fµ±lÎ,Rû™iºÎææCÐ4®”'w¢° \š?ˆKóQÑÓÃÃ;wñXyŸT•eåYVS͸ä°ÚD¶³ÏüÍ‹>üˆòŽÐ5ž<™C9×Mt—‹âŒ …iª††pг™’³¦2vêôp‰¬(“ úý4ÖÔÐÕÖ†»§›šòƒü~Ün7ï­xwOŠ,ÓÓÙEmE%þ€]UñtvøÖö„$!Íå"9- M×1šLdf矜Œ®i¸fÁW¢( )Y.’RÂRd]×ÐTõ«™Óù_†ªªTU\0žm§F vss3ûüLçÕ4X›Â¡C#s¥p6NQ E’1˜þ›=~_²ƒÞë8ççç3xðàH/›$I´µµñá‡RZZÊË/¿ŒÏç#99—Ë…Él¢²¢ÇsÜ÷’e™P(„Ùlƾz‘››Ë‚ (,,$;;›ÔÔÔ>Á ÃYÏ`0ø¹>§¦iQGí š ²“F£³ÙL{{;---œwÞy“’’‚,ËìÚµ ³ÙLss3k×­Åh0âóù¨ªªŠÌ•e™žžž÷פ¤$rss1äççãp8"ÙO£ÑÈ£=JMu ÿøÇ?X»v-’$‘––Fzzú1£ëøó}¯YËu·ßNÁÿ>  z(Ô§òç$áÙÈ“öšpDXCG2™Hš5 ûر\øƒ°æÅ™4iRôB÷!‹¯WTò»;A–‘ìž9kò€ä`e]=¯TU ‡O1ðŸÓqÄlðF¯—[6oM\š›ÃŒô´Èóººy¹ªZ\SG ²³"%©^/emí"a0° Ë…å Ü£y±±,™<‰»JŠù[Ùnî)ÛMÀëPˆM õ`0Š^MG)dÊ[‰ÿ-ŠÌù<%˜QœÑ„SU5àè,LZVé99Œ›>¤pt[î/*!IÅÀžÛùù•Wô{q8ãQ ‚~?ím­\ø«¸á—wb0¶åpDS×û–‚®©Cê —wœ ΢×ëÅíñøÑC*e{ö°½´”º†šÚÛù`Ç<]û÷ ùo€øxÈÌúlo&KàóAU%øý ËÈYY˜¬V†»\ŒÎÉ!1.ŽÂÁƒ™8~“ gGG¿ùÍo`Ð 0›…½<Ùš š†æ÷ò¸EŒÙŒb¶ ™Œa'ÿ6,BõzÑ~°4™PLf¤OËTKš¦£H11,Y²„^x!zcª®óQCßݸIØ|“™&N`lJÊ€¯é ùɆ ‚®sÓˆ"ÎÍêß+Ð4VÖÔ²«ºÌf&'&ð“‘#_~]g_{ïÖÖpÓ <²ûˆê¼VYÉt¹99ØO’Oh6óËâ1\˜›Ëï·o繚ZB~Ÿø,G/úü}®+ó”Ì^F fQ hctQ¨¨Çqp$Üþ¿üî•xzºøÕÃ0vêtbq´55óÎ+/ñ—_ßÅðâbÎ:{~˜ÐF¢g©µ­úº:Ö­_ÏË|ÀÚ]» ¾rs!7“0Û¬Ø."FQH”Ü[ê"ÒºŸ×3û´,ã©©&ÔÝMeK ;ZZU×Àê5ðóŸ`ÍÊâª3˜1yãKJ°Xm$&$œÒ³?/ººº¸å–[HNNæw¿û………˜Ífêêêx饗xì±Ç6lÅÅÅÇu– eeeüõ¯¥¤¤„k¯½–œœdYÆëõ²jÕ*î½÷^–.]JQQÑIU„mooçñÇgùòå fΜÉE]ÄèÑ£IKK‹Þx§¹t»Ýüìg?#..ŽÅ‹3jÔ(bbbhhh`éÒ¥<ýôÓ)füøñŸº^÷ìÙÃO<ÁàÁƒ¹á†ÈËËC–e|>«W¯fñâżúê« >»ÝÞ¯RUU|ðAzè!ÆŒƒÕf£½­·Þz‹Ç{ŒçŸž[o½õ3õÉ·´´°dÉ>ùä, óæÍ㢋.¢¨¨ˆÄÄÄ3òšŒŠŠŠX³t)mk>Æ1|8²%%Æ"´ t>¿M$ô`ÏÞ=tmÚ„çõe('7uqcŠ…XБD¨£®ÒR:ßuÛ6PLÓ¦ã7Ûˆ쎣ɲ$¡z½„<ºwì@omeäˆÑ;ŒŠînغ:;@Q¸{ÔHÎÎÎb N M×ùãÎ]ìïhM#ÉϯF:ú¾òz¹eë6!Âf6sÅÁ¤÷¹®-~?Ëkë K çgg“¶õš®³ª¶.R{qNvd–æÉBQ¼“¿ÏœÁ¥5µ\½f Í÷?Y,X§.‹Ì(¢øP;·}Bw{;ß»õçŒ6ƒÑˆ§ÇÕËÌ ¾Áêw–SS^Uw ££½êšjÞÿx þóŸ4ÖÖBÑbG&óìsˆIϳû"I‘Ì®Ž~3»:`MJ‚ädôüzU„% µ½_C=-+ãÿþçpðÃ'Là–K.aúÔ©dggŸ6YMY–Ù±cŠ¢ðÓŸþ”¢¢"TUÅëõ’˜˜ÈüùóÙ¹s'µµµŒ7$I455‘––Æ…^Hzz:~¿]בe™ùóçóøãóá‡rûí·ŸÔÏ‘””Ä#<^/¯½ö<ò999\wÝuŒ92šÍ 2 ²,³yófTUeĈýa]×)((à™gž!à÷û*é=™5kóçÏ'  …"?>ŸUSOjYìñ>ÓÂ… Y¸p!ÿþ÷¿¹ýöÛ¹í¶Û˜={vt,Ài°^·mÛ†ªªŒ5UU#×T×u\.O?ý4Á`@ 0àzííõ>}:óæÍ# õ[³½=šþ€?<9:ШP\\L ˆd(5MÃ`0PXXÈÓO?ÍŽ;(**úLe²½0™L\}õÕ\}õÕ<õÔSüô§?åÞ{ïeìØ±gÞ…×4HJ„ùW¶­´nXOë+/á8òó±fe!;(V+²ÙŒl0"[­H}Ë¡9¢úE’ðÖÕÒòû‘òòH¿ù¬YÙH‹ÐWض•úî§59™”+®·ÊÈx«*ñ-ÓÔé¤^~–ü$MÅ]YIÓ“Oâ~}žÂBLé预¶»OU]ååPQ™™0qŒ ¯¾UcGKvùé°¡äÔé ¯ªòëÍ[ù¼ iÌÊÉeÑ ¼£”];ý~nÛ¶]Œ˜2›¹bpö>ûB@ÓØÖÒ"²¦²Ì7³³ÉŽ<¿ª¾^1ûrzfæIÏ^öâ¹ýøáÆÍ"S:Pù«¦ñáC0ËQ‚E§% kß]€#!Y–#³—¼¸»{ÎøïIÓ4vïÝ˵¿ü%,1äýî~Œññhz¢qÊ™W]GSuPµHïgòØq¤ŽŸ@Om —þù¹qëVÿòvvÇ×úI’Äo¼@\\ÜÑ‚°Ã-I^¯—êêêcž'##ƒ¸¸8TU¥§§‡ŽÎêëêiii¡µµ•ÊÊJ¶lÙBSSÓWúù.\Èĉ¹õÖ[±ÙlQ1¯9EaÅŠ8ãœG?UUq»ÝH’D `ïÞ½Ç<Ãá 33³ßzm¨oè·^·mÛFeeåqïÄÄÄ£‚2F£‘¤ä$6mÚÄ•W^ù…?÷5×\Ô)S¸ë®»øÍoÃðÂág&ÉÔ55ÆCW'ìÞM×¾}t}°J<ïÊœšŠ1.kVŠÍFxþŠÙŒd6GÊ-•˜Ú7l íºë±$§ z<à}˜Æì›®çþ…oòdb22 vuÒ±iX­ÄÏ™d6ã.+E‘ŒFÌC‡Úº…æžG·Ù¡KÌS$' à‚ À/ ÛÀ¨œ“È2®ihdoS#( ¥§qqAþq_óŸªj^­«ÙK³™¿LšxT_¢¦ë|Ò|Hd/ÍfÆ:âŽÊ^Ööôð|UخٌNJêwMv¶¶Š¹šªÊ·\™8¿$!ÀHF#º$‰l©®‰Ï^¿½¾ÉŒô´S¶ÿ2J0£ˆâd8:²!rÃGqltuvò¯gŸeCK ƒ»­» õd‹I²,¡‡KF$]d ëî…‘äÃ%.Ÿú‚€5=ƒœýˆ§îú“†çò“à<þ·a4 ƒ‡…¨p쫪ª¸á†Žùüoû[Î9ç|>¥¥¥,]º”÷Þ{‡ÃÃáÀn·ãr¹¨¯¯ÿÊ‘].÷.¾—|#=öyyyÑ›ók¾^? ²,ÓØØÈõ×_Ìçg̘Áþð¼^/»wïfÙ²e¼ûî»Q›ÍFzz:uuuŸKÕ¸7+u2˲‡ Æ/ùKn½åVžzê©3··X Øl0aLš,[W'<ˆ¿¶ÿ{+驨èÿº„”ÂBôX;è:1‰‰x߀ž={é./ᅥ_K ø|´¼ý61ƒákl$°æciY³õƒ £<>ÀéEÔs΂¼<ˆs†E¸ý#Ø¿Š£U–©é£¶}¦@–$l&Eá`g'Þ·_dî,1LÏÈÀi6ã>Fæ_’$:ü~oÛ.Dû$‰ÛG$-ÖvÔñ=Á î*½—s²\(’9N×uöwtòQS£Øìvâb,‘ç=¡¥­m"Ðl00!gœ“ääd.ºè"jjj¾òÏ8¸`0×^{-‹/æÑG=©CQ|…{¯®“™™I}}=@ 2vèXëÕf³ ¸^GY¯üãéîîæª«®bܸq$&%â°;HKKã;ßù¥Ç¹ÏÀQ ¯º®ã÷ù#÷ÅÉ,,))aáÂ…Üwß}<üðÃgvÉw¤_?lc­6( qq°q$$@F˜, ¡®uóf˜;’“qwvA¸¢¢;¬zÜÝ7o"h0‚Ç-HӉ𕱱œ,ÞËî™§‡þ!\.ñX0p\ö’%†=ëÖ¥ì}ZßÇ€EQb%Álæ`w7¥M Ë$™L4{<<ºs'ê1n£$±±µíaFcÀ¤Ã“e» ‘ö|ÜPÎJ¨Á íÚEH)|¯~ÒÜ,Ús…®Pˆï?@H×Q$(ïîae›˜‹‰ÉÄûuuìlmåd‡HÍ²ÌÆæC‘Le][+È CÙç÷ üP¬6zº»1öéKµÚl§”Êt”`FqZBUCýz.¾,„Bfœ{>,[F]ey¹a¥À°zº¦³ñÃp&$‘;l(ºöåf9%Y>%SŒÙÌà‘#ÙøÁÔ-[FʨQ(Éɘ’S™Ó41(ûó|?’„æî¡cíZº×BhË”#±O™‚câDŒÎø£žÒ]ôlßAÏ«¯ÞÇ'¶¤ǤIqÁY–Б@–Ѽ^¼ õ9ôñ§¤àF¯3{¢Ž§¦iœþùìÝ»—ÚºZ† YK’$áóùؼy3©©©äæærßý÷ó<ÁpÚûï¿Ouu5÷ß?3gΌ̶ü´yƒ'îS~þu¾hÑ"^zé%V­ZÅüùó£æ)Í´ÈŒÖþ{oˆ³Ï>›7R[[‹Óéì·æƒÁ ›7o&99™¼¼¼×kïláÕ«W³ÿ~î¹çæÏŸY¯’$áñxŽ TU•ªª*9NQûöíÃn·3kÖ¬~Ð^EÙ/B:/¿ür^ýuÖ­[Ç”)S¢‹¥£è†¥¯Ak+\ù(.[¬ …»Ë`ÉŸÄq&ˆÇKwÁÞ=pñ"°Ä0ö®»}{aýzHO‡ï6o‚?€Q£Qõz]R5ðyÅ9Ìf(Ý‚x~ ˜ÍسûL¾qD$ÐÒÝÅ›6¿ I–ÅkÂs!»~ý±C$ ~Ú²å¨>\Ed8­ÍMl­¯;ü¼,‹ÿK–!<þÿõ|—ÈOßïAQ÷^Ê2 ³ïP3H–ê[[HëéáïÏE~^s»i~óMÜ/<2b$晳@VÐý>:W¼ƒgÏR¯¼sJ*ºª¢) ¾ƒhzìQô¶6 ã' Ø këëéøÛ_ vv’ºp²ÕŠîólïÀßÙ‰Þѯ©‰Ž}û »ÆŒA;t(¢v{*Áf³¡ª*ÁPEQ>5ƒ®i…à Ñ4ï¬ #=ƒøøxt]Çãñ°qãF~õ«_qÛm·1hÐ ¼ÏÀ†Å` £££Á5 ¨ªJWWo½õV¤ó³ÍÞs…B!bûˆ/|Üyç\ÃõÌ›7/ª*{ #55ŸÏ!š}÷”ÂÂBdYfÅŠ¸\.RÂ3ò<Û·oçæ›oæ'?ù ùùùÇ]¯f³™ÎÎÎ~çV%Ò—¹bÅŠH¶ýXëUUU>üðC’““q:(Š‚×ëeÿþý¼ûî» :”¼¼¼HPD–e4]Ãd2}!j³ÙÌM7ÝÄ=÷ÜéGPdhh€æf˜>Cˆè˜ÍB4 † ƒù „­ Åã ‚¹q#””@LxtE0­-ðч½¥ ©½ûio¥:š0IR? ¡™IÉÇmQ8Ò¡¹÷; ©‚¨#Ñ$Há±­8®÷x]ƒ1Bû'I‡³Çº.ÎÙï¼½çêís”Åzé­n‘dñ¿…ý’c¿Ï‰19\¦«@ Þp¯¯¦ «(âçXNž¢P¯†Àã¡{ÏîòûûÓÞÝ]Xì2lVæ ÆÈü| rs‰u:ÉÍÉ!ÓåŠÌ(¢ø¼˜9{6}â 6¬ZŸiÓ±Ç;ÑB*ª¦žÔ,¢ªj¤çäpÞe—ñÂ_Áb‰aÂÌY Z›XõÖä1÷¢ožô~3IYQP >?[×|LcE93¯¿îÔ¼(ª 6+Ì™ ÅÅh;wÒºu lÖ Ø’‰IH@²ÛÁnG1™0ÄÇ#) 11(f3Z¸´µ+Â}ðîžÇj>Ä›•€Dn|>ž‡~˜åËßæ/¿¾{R%SÎbDÉ8‰‰èšèÿÓ4UD•¿çTÕ×Üös†ŽŦÕòëk¯ «`0S,àìo-"#75ôŦ,KȲ‚,KHŠ¿×Ëž­[Ù±þö—ífêÈ"øÍo().>u/Œ®‹H -¦N?h­­twvÒív‹^˜¶6hoGVCȺŽlwˆùg’„ÁéŒl¤ÆØXº7¬E!¶°Ïž=¢ßR×Ñe]U1åà~}­6–„zššñ¬z)1‘žÝ»ñ•–¢$ ÝdBKH€ýûiyý 7ìvÈΆѣ…pCŒUˆ4èúQãTN%Fnºé&Þxã }ôQ)))aäÈ‘X,–ˆÓÝ7ð¡( ¿øÅ/(..fãÆ‘9|EEEÌš5‹¹sç’””ô©ÙÐP(Dqq1wß}7ï¿ÿ>÷Þ{/LŸ>;ï¼“ÆÆFn¼ñF>ùä.üÆ…ýœuEQ$)’Eª¨¨`Íš5ÔÔÔ0iÒ$î¸ã\_0 +I7ß|3÷ß?Ë–-‹nš§(bcc¹ë®»xýõ×Y²d ™™™”””P8l…cÇò³›nbÔ¨Q¬Y³† .»”+¾qƒfÖìÙüðÖ[h¯­CUU¬v;éÙÙìݶ Ù —@Br åeehšÊ…_Œ#!WžžÅ‹sïC±{Ë$M㦟ýŒ'2}Ò$Ö­[GZZc¦LaÏÖ­‘¬äƒ<¯o»‡zˆÎžž{õß464ðãÿ˜‚‚‚Á û÷ïgíÚµ4551uêT.¹ä’O ®|ìv;ßûÞ÷xàxöÙg£ D–¨ºZD«U8çÚ{Vèˆ ™Õ×^+2˜7À«aa )S`xÌ™wßy¹‡3Y½Ný±2”G–=ž€m r~–댽lÏïßÏSÛ·ƒÙÂ7³³ùUÉÀ¾Lyw7ß@ø&ž2™â°bó‘xã?o‰k`4ð»’b.?B•¶ÎíæºzÐul±±ÜQ‚Åi‹¡C†àÊÈ» IDAT`äð"öì݈Õ²ü¥‰±ÛT0WA9ƒ‡îÊÂh2¢††®ëèšŽŽøýÓÊku]D’§Î_@ѸñL[pZ(DbZ)™™8OH}°7# K²(“%ä°*jSm 5ååÔ–¤âÀ~š›šH‹s0fèPνê &NžDjJê×äêè‡KŒìvpĉ*“vl‡Í[àà~4M;j:¥Öl!Þ"B½};È2­{÷†Ëeú@‘ÅL+·›®èJKåMzV6þädüaâJLÌáò”²2Èʸ/¡Tµ>ŽÉ©/ª‘••ŕ߹’¢¢"Ö¯_ÏÇÌ+¯¼BVVC† Áår1dÈH¶FÓ4ŒF#\p“'OæÜsÏE–eRRRHMM%66ö„Īt]Çd21iÒ$ X°`@€ÔÔTÒÒÒ°Ùl$''³äá%$%&a6™‘eY–ÑuÊÊJª««9pàX,ÆÏ\Àرc#¥_'Näûßÿ>¡PhÀ9‰Qü÷‘——Çw¿û]FŽÉúõëy÷ÝwyæùçywHcø••\zí÷)zúoÄø!M••Ì›5‹Ì'¥æçwr`ãFL•¸V¼…ÿÿÝHSy9CUÛ¿_$tùUT––’ö§¹rÞ|2︃ïýüç,Z·šÆýÝ CÆ#ç¿gù /°¯±‘S¦ö›;0Þý;üýï)?޼‡Ïo–,aêÌ™Œpe2eç6²ÿ{ö®[‡5)‰¯¹†ä”&L˜ÀÂ… ?~< 'З÷©NœÁÀرcY¼xqt¡|Q›ätÂÌ™¢:åÐ!á˜geÃönªÂv9"ðèõ ›Ò[fÙk|>ñ3h:’©žÁß¾WUi÷")Ýf;îñ/,g{g'è:ó2]dÛÝ2±·½ƒÃʰ6“™ùÙYGÓäv³¹±$‰‰6ް/š›©ô¸A×™–œ„é3¶T”••qÿ󪳋úŒ ŠF˜‘ 11H¡z¸"@—ÂΠÕFœÑHœÑ!–Ú‰ö|êzX΢ÿ|o£ÓIZb ÐÙɦšj>®ªbûwò³+®àÜóÎ;©Ê´Q‹Åi [l,³çÎeÊÔ©ÌäÝ—_Âíóa‹Ã•“Krzv§“¤”4bí,6+©™™L¦>Äó°AÒûf?e‰´¬,\ƒÄèQÆ¥¡k*&³)Â"¥Þ1¯OuutÐT[‹¦©´47ÓÚÜDkC5åt´·a5›I‰w’›‘Áü±%dff––Nn^‰‰‰_ß‹¤ib”e8Ô «VÏ‹.†”Aø|>زED–ív˜>]lÂ==°âAgÍ ú>eØ¿¶nýgŸ »w‹~šñãᬳD´»×ÁQžâtÂŽmpÞ¹¢ßâkÜã°;˜1cÅÅÅ”——ÓØØÈÞ½{Ù½{7ëׯ§µµ•„„ÒÒÒÈÌÌ$..Žôôt óçÏd9CªŠ®i(ŠrÂâ$F£‘ììl !ž½ŸÚÚZ²\Y:tˆwß}—ææfhllÄn·“™™ÉàÁƒ™7o :ô¤¯s‡ÃAvv6»wïþÂ%·Q|¹p:Ìž=›1cÆPQQA}S[6|ÂÔŸ^Ǭû–÷À=Üüô“üÑã¦ë7÷ãøÙÿãcMaê}÷PsÉwPŸü>CÊ‚ó±-ù=- Éd?ñ4Ì[@UV.EœÙ?½ Ë'kiÖt\Ï?CÜí¿Æþ蟩3™ºüuFÝû Ž?üŽÚŒ\÷ü’>¸„Ø;naÙJ¾ñǸìö»‘n¸ŠŸ,}?ƒ¤Í9‡¤%à‡¿ø9ié <˜øøø“ö½H’D||<ñññ”——Gîµ3›+j¢äõ“uàñ„mŒÔ7†•ÂC!ñ¸ÁxXX%Ó®¬ÃçòûEO§ÅIIâ|6› ›mmb6¢é5ê€_¼.+[Ø'-:Æìxi*m>_D¸'Ö80=é ø¨®>2“òÆaCq Ыùju•¸ÆŠÂüôtŽ8Χªlmm}¸&Cœqd‘<ÐÞ&®¥¦1=%•¸ì¿ÔueË—óðßþÆY٤ΛH~rŠHd„{y\š®“i6£HfIB ?vr|-]r£=–Œ#ц eué.šþù/6íÞÍ®»Žä“øŠÌ(ÎX,†1¼¨MÓhii¡­µ•¶övzº»ioo§²º†¦†ªöíesG'=^/`ˆ¯$ ³ÉDjF&1 ª®aµÅ’êÊÄ&ŸŸzo«:mÍM´·¶ IjH¥¹±žn!n2±[­È’D‚ÓIJ¼“¼¤dæ\p ØÂsÙINJÂtºW(-…Má’K‰´X„c k"Z¼s‡ ‡çœ#šô-Q´m› ž)©âØ0™GÓ wšÑ™P^.·ÛÅ{)o1 RÛÒrü2”¯Ñt83f S§N¥±±‘öŽ:ÚÛijj¢¾¾žªª*9x¨Ø£¾d›–˜˜Hs¯ÍiKÁ Î4UãD’’`ÕûžL˜Öaví•/óî•”d1†dØp?bí´¶ˆæÎpÙå¢eB ‰¬d~>,Þ~.ºHd=5 êjá­7—ÈšÌ|jŒ$t!À¯ÁÔ¨÷øH7(¤Æ Ü㸡¹™F¯t ²\8°µn7•]auh£‰ùY™GÓåðJ½˜9*6–É©ýÛŒv¶µsÀë]gDRq'8îÃçóqÃÍ7Ó:wYE#ÐUõèyÜÙί8£«*ÎLÒ¢E,þ×óŒ6줌=ŠÌ(¢;šÎøxœŸRºäõz …BÈ’D0ÄÝãFᦄ„ÕjÅb± ‡ëgm?­ ¦&‚”aì5ü^¡â×Ü 5µâ÷þž•P œ1SÌ<Û±]ôÆ„TÑ$o±™ú7ÿstf(Š‚ÓéÄétxLww7’$¡é=Ý=ƒÁãÎØÔu£ÑHlll¤·266ö”ɪFñ5Å´˜Œ&R`ælFphgw7º¢02¤Çí>ª§X•e$]GšB²ŒYQ°ÇÚP$?0þˆ9ýèc^‘gcb¾trÙK0cbbNûul±X˜>q"Ï,Y}3l n11pþðäðÌÓ°ú#1vÂëƒÚa7Î:K2U¦MʳÏýÖ¬%°ª&zøÛÚ`Ö13³/IÈÌ­kÖ@m¤&‹×´‚ÆF8ûÈÈAÒKdÃóÛZÉÍË;£ æ·[Ó(ŽCäö¶·‹’U]gAf&޲74†Õƒ%æ%%á0šŽŒWPïq‹k¬(Øc)Jèïèêb¿Oß©II–âiûvîÜÉÚýû)¸ñ§è' Áñ_݃ĥgpÀagåG1¢¨G¯ÖE”`FÅ—˜˜˜~;ñÑ/ådÃï™Ç?†ö6‘èî#At$ÎÎÕŠh3ÀŠÒ¨`PÌœœþ™ÏˆÎgUÿ;CÐWíÒawœVÁ%í  p&#®ï:þ”í^Çúi¾_FæÎ™Ã´W_eõOÀEßq¡`˜Hôùüš.²‡×ß DÛ–¾^q0m:Lš$‚™‡#Mpé%?ÖˆÇÇO€óγ3 †ÃöCÓÄkæ/­k×Á9€Áƒaî";^ÞÙ)2ѺÎh§ó„¦¦i<ýôÓHfËסÐu &¯¼ü2—}ë[Q‚EQœFà•WDŸeBŒññBt'.–üIlöGÂ'ÀðB!ê (âu&lÞ,úe’“E³JŠè¹q»ÃG¨ÿy=â=JÆgÈsQDE_5‰ÎÌÈàé?ý‰ç^~™»ï»† …É“™4˜DåK¯â7ˆÀbZ””ˆýÞlÙÉë„T6cÚ4;VØI½ú6[ryøödÚ4qþÞ±U6›ø‰dÖ$¡h.I¢:G’`w™(É=°ŸGo\pqÇy]šÆ–^¡³™§“ølïöÖ6özá››’BìqZ*þ]W'®±$sQvÎQÏwƒ¼ßÜ ²Œd¶0<±¿¿Ôuw‹†¢Pètb:v%I’% ½±LÆÃŠù§úý¥(„ÚÚ°ÀIQ“Ì(¢ˆâÔ€Á Ô^?úPD…'OƽwtHŒU8GL£épÖ11Q”ÙöF ½^Q^ët ‚©©"êl·‡£’ZYD)“Ç/ˆnfFXœ!šÅŒ"Š(¢8 Ë2ùƒñ³þ?¾±`>+>ø€‡þù/÷í$sÄH¡îš“f‹ …FØa‚¨÷¯déÇ(4ñš˜aGàpfôxUf‹ZöȾPQ‰ÓÖ&FìÛ¥»È+.æg—]Æü¹sqeeÑí2]~?ï?(Z^,1LNKc ·½¥…f远•’LÜD´¬½w˜ð[¬6†8ÎÆyC!ÞiiIb¤ÅÂØÄþs4+»»©s‹÷ÂGœÙ|ÂÃÉââã!&†¶U«H˜>ýH…ûS ŠÑˆ»¢êÉ:ËIÐBˆÌ(¢ˆâñؾMô¸Œ)Dzû& ŠNè-“í%”ª ÿEô[þìæÃ(Qn[ºKÌ´4a(,p8Åø’±c!Î)D@¨VV !¡ÔTáDEQDqJÁnw0jÔhòó ¸lÑ"º;;Ùºc'o¼÷o/›Ž½{Á'ú"3\`1 âÙ;^¤¯ˆŒ®\Êh€êHÒa;$ËÐÝ%ú.›š ½ÚÚ¡£MسKf&‹&OfÞOndòøñØìvœNç¯Ã ê:;ÛÚø ªd™É;‹ Ü‹z ½]d:‰))ØPèý°±!¬(/±(=åe´>Ÿ ÿŠB¶ÕÊÐ#Hè®.*ýžÓp˜O¼¢IR:Œ¶·ÞDÖuâgÏA ‹jÌfz é¥—ÀhDIJ:)çÌ(¢ˆâ+ØÁ$$Y¸ïD„Ø•¬Òï99 D?Ì‹²%ÄÑhçs¹DÍÚµ‡ÕÿBAAH?þXŒùþµ‡Å¬6QJ»l©(Ã7ÃRô»á¥…2h ©ÇË`Jš,%EQDÅ—›Í&F*dd2(¿€眃?à'j×MlÚ¶öÎN>)+£¦¹™æýûÛÁǤ¤ãÛ§¾Ðuh:‡ú¨OÇÇãÌÌdÒ°ad§§1ø¬)ded0fÔ(ì;ŠbÀb6súûè¸yÓñZm,4çYÉ]]T¸ÝâXg<©á±nÇÂ[µõ¢W–8/;ë¨ç½ªÊ'‡Z"ý—ÃâuRÕÕMy¸ÿrBbqŸõºÙí0w.-Ë—Ó³aéßûrR²ðiN¹¨’¢€$ѺâÚ×®#ß:içÌ(¢ˆâKGrJ Ï>›çn¿¦N™Á#%»µpærõÇðÚ«ðþ{Â૪p.‚šjX·NˆþÄÆŠÈñŒP[ ^8t]¼Æb‹¿-zßO×`ÌغÞY¯>Ü+ãv‹,éUW‹žÏã‘KE·›Œú:fΙ½ÈQDEÿE˜L&L}ÈIzz:ªª2oî¿®ë(²LfF9}ˆ‹$ÉÈŠ‚Á`@–e Š‚lP0£}üÁ§ªfϪǽa'Q‚E'º®³uëV¼^ïQsþFEìsÓÎD8ââ¸õ¦›˜:u*·ßsk_yY¨Ä–”ˆ~GƒAl®ÉÉ¢luÖ¬^v*~$I<÷çGÿÝ «UÌ(;ö°ƒÁ 2œR_•Ø>HMç›<ùp±ï{õ%• Ên÷ï‡mÛKwqåÂ…ü~åJ’’’ÎXGÃãõ°g÷ž~ë^’$†NÜ”8"Н ÝÝÝ”•• …"ã>dYfôèÑÑYÅgâ«C­ÛͤwßAdƒ«òr¹zÈà㾦Á톀Ëɉµa ÿruccĦÏÏL?¦0O ¢º­U¸óQ"@íõž°*p¬ÛU”ïU¶Ÿ3Î: µ²’ö­[iåe°X0†­ €Ø 0Úø»¾ÏãB5 »t¾}ûðî?€VY.„GöÔTá#}Ik?J0£8£Iaß¹aªªÒÐÐ@yEìØ¶ ·×Ëî½{iïêÂ`0ppÏZ[ZŽy¾!£F÷+ÏÐ5ƒ{Êðõí÷èåD6ÃŠŠ I"/;›üÜ\â6l™™™dggcîS÷/IÒ)7¨þD!IF£‘©“'óÁ›oRYUÉ¿^x‘§þõ/š:ºä™ÅädQ³Zûo¤ºŽtšò>ÛF)I‡ å±JTjk¡¾^ˆ6”•Bm-öäd®¹øbî|ù%qޝuùÓ‘ë`ëÖ­ôôô°fÍ‚Á kÖ¬! …(--%ô;Þb±““ƒÅbA —œiªFMM ]]]G½çˆ#°Z­ƒAfΜ‰ÉdbüøñX­VÆ¥O¤ùë¼Ö£øïîã›6mÂívGÖïºuëÐ4 ŸßÇžÝ{1S×f³‘““ƒÑhì·Ž+**ð±wK’Ę1c0„Û9sæ`07n±±±Œ;6ò\tGÅÑhñùÿæÛb(0*ÎÉÓ'aøûÝæñˆŒ¢®ã²gþeMmdLÍ‚L×Ñ{Ðàö•y“‰d‹…Ø#Èj‡ßO}Xàgb\ö“5²L–…oSX(Zw‚A8tˆ`e%eet¼ð¼hÊÎF²Z1eº0ć §¦aLLDIME2Ð:;ñ×Öö_4 OY)hÿŸ½óޝª¾ÿÿóœs÷È&{!!ìÈž²DÐj«¶.êj«8ª¶µ­¸¾h먳¢?E«"X**"Ù+Ì03HBvr÷½çœßçæBH‚hez_1ë¬{Îç|>ï×{¼Þêþ *oNŽÖ#¼ _ëóÚÜø 8TÂ3ŒŸ E ýóz½,[¶Œ7²ïða )Ú½›¨Ø8R22ˆŽŽ¡c×\L6;£.¿‹Í†йkQ±±m¦Ó´gB´•ð —‹=; Qƒ×t´¢œ’âbv•áíÿ¥òH%¥dew¢KNY©©äç3xð`bccA´:sÄóª(J+ÃídHOKç÷ÜÃý3gRVVÆÊ•+Y·i› ÙðÚ¿Qõz„¤$äè­2*J«ghþ¼‰‰Ç&ËB*eY#Ž.—v¬ÆF­•‰ÃX]…àt">Œ!"{L “¦N£ï¯o ·OV~¹ˆ%ópÑ¡\ݯ¸þºë‰OˆG'éÎ xsý‘¢(²téRÖ®]ËþýûÙ¹s'999˜Ì&úöé‹$IL›6 ƒÁ€N§#;;“ÉÔŠ”¶e<·Õð]QUŠöîÅår!é$¶mÝF}}=³gÏÆåv±sÇNâââÈÉÉaذaää3hÐ t:’(!…}Ã8n䪢²qãF¾ýö[Ö¯_ÏØ¿?¹¹¹Øl6zöì‰^¯çª«®B’$L&;vÄh4þøq¬(¡hg³SF–e>ÿüs¼^/;wî$99™¼¼<† FAA}úôA”Äófž#ŒÓâ ޏ\\þÍ·­¯A 3"’ÿ7bx»Â>ͨóù¨nvpZmuR»ç(r8‚ß ôéк¶Ò+Ël­ÓÎNOçèÖÃ&ŸŸ}Áóu±[±ô?íÍhV!65¡ÂÔT<¦O×ã‘#¨n7Þòr¼ ÇöÙµ V,_"#´(äñjÆ&j_““µv;ÍsØYpr… f<|>~¿ŸmÛ¶ñÁ‚¬Xó;·ocÀátëÝ‹œƒÍuduÎÆd6‡ŒŠ¶Œ 5(g.þ€—µ½-ÍV+}å·ÞZ8¶¢*Þ·ƒE{©,?ÂkïÏcÆwa _¿¾\yÙeŒ3‹Å‚ÑhœþýúqíôéŒ;½^^¯?ç">Ÿ§ÓÉÒ¥Kyÿý÷ùæ›oHLLdàÀ 4ˆË.»ŒìììPä¥Ý±ßŽ!Þzíl½äåå…~îÓ»O‹mUU¥¼¼œƒ²mÛ6>þäcvîØIÿþý¹êª«¸ôÒK‰ŒŒ<«ã<Œ³ ¯×‹ÓéäË/¿dÞ¼y|ûí·dggÓ¿FŽɯ~õ+²³³OJÿçqLmF¿~ýZl+Ë2eee8p€mÛ¶ñöÛosàÀ ¸úê«?~<‘‘‘ †ð8ãçãRUvÕÕ3êëÅmÐ4b¬6Þ9œ>q±ß»½ÏG“O‹^  F©múRêriDTU‰ŠÂ؆CÇ«Èì ^z=]Ú¨¿¬óxð{nw±Û±ëÏ]jžšÕñ²»ü߯1ÏÂ3Œ ²,ÓÐÐÀsÿz7ßž‹=*†‹§Må÷}„ýú•äTÔ Ñ¡6«ËA´6€ÔæÿBÈìœMV—œ Óét”>ÈÎ-[˜óÞÜq×ÝŒ3š??ø ™YY g'msÇÎÜôП¸öw@ ÈÄRT9 £*ÍNí÷Iéé\w×L®¹ãNÖ.YÌóo¼ÉÝ÷ÝÇuÓ§sÍôé$&&b6›¿W\ât#P[[Ë‹/¾È믿Nnn.cÇŽåŽ;î 22RKT¥*?‘zÜ©÷–¿KJJ"99™ÁC#‰>ŸÍ›7óå—_ò—¿ü…©SîiÂû IDAT§rÿý÷“––Ö" 1Œ @€šÚžšýï¾û.}ûöeô˜ÑÜÿýX­ÖãøtáS!®iii¤§§3räHDQÄív³qãF,XÀý÷ßÏôéÓ¹óww’ž–ŽhžÇöEó3WT% £ðý-¢ "IÒ±šu@ºÀç2Ÿ¢°¶ò(þY¢õ¬âlvÞ1Œa ?˜6é„ö÷{ëêCiîý£¢ÚÜÎY^U ¢H²^OÇ642š|¾P½gNd$g­F=oŸû99ªQ@øžÉ]=Ù}8i„éX„*ó,“&Mb„ ø|¾V"=?j<3)j&š>Ù‡N§ã—Wý’N:ñÔSOѹsgrssÃðGee%³fÍ⦛n"???Tòp.ÕS9"+xe/F£‘o¼‘¯¾úŠ7ß|“™3g~Ðg—Ë…×çÃïõ²·¨ˆ=ûö±¹°õûö±«´uµÖ*Ël†´t­Ï²"ƒÙÉÉè,V„“D.TA p¨>ùüA{Àç…½{´ïm6¢22HŽ‹cB¿~ädgÓµK232ÐéõF¬ †ö„îÎ!ø… —‹;׬åãýû‚Z¤{l,ŒEnÔSwü¸ƒÂ='{›;ÓÒȉˆhý €¯O’$¢ bO¸Ÿu>ŸFTÁñÓ×_† æÙÅjeúÔÉT•iw› WO§[¿~tï7€ä¬¬ ¬¸ö7½ÁÀæU+¹oúUíî?`øHŒAþÈÑ$¦gh}íÂÑÌ ¯ýû5|¾~Ÿ¿Ï‡LIQÏpØZUUJ@E’ÓÒòó7+ʲŒ£± ‹ÉÌË/¿&˜gÚº)¢( uÕÕ4Ö×ãr8éÑ£;±F³Y‹vžaìÚµ‹ 60tèP|~ŸVÛû?¾~¿ŸÊÊJ ‰‰‰gŒd6õ€?€ßïg÷îÝ|þùça‚ù3À‚ ؽ{·Q ø[ÔìžÔñ#Ë”––¢×ëIJJ:mcUUUŠ‹‹E‘”””“^— ¢€ÏçCQ>üðC¦N›&˜g .—‹ºú:\M–®ZÅg+–óå–­xŠŠ 5 ÒÒÐeea0؉“0ÇÄ ÅuÐ"d'>ç2¾NŒHŠ"¨*þúz<åG(ojâé}û໵P|ªªˆÍÍeLŸ>L6ŒÞ=zKlt &³ùœ»¯µ^/ß––qÓúõÔ××k‹¤ÞÀ%))¼8t0©ÿcë£ ¶›¥¸¥º‚)²yQ‘­"˜Eag}½ö¼L&:Ç´øqúý”¸Ü ª ‹ˆÀn0†_– `ªªŠ=*šª²#äöé‹î„&EU)\·Ž¯æ€ª(<=o=ú÷oÁ¥`ñ¯5*ŠN]óZFލ>z”×gÿË?_È=Oþƒ”¬¬0¿¼À‘‘AbFÿ~æL»æ’S3°GFbŒ}úœµwWE$Ž“'¹Ÿ?P¥ÆÇ¢¨=¯ÇK}M55••l^¹’â­›± \wýõL~þ¹³ÖÊÄf³‘žžÎÂ… ±ÛítìØ‘ˆˆŒ&m±TõQ9røÓ¦M£G,øpŽ&Çi%”B0mÌïóSWWGYYŸ}öÉÉÉtìØ1<Ñý œœLZZóçÏG§×‘–šFdT†`T¡­q,MMML™2…„„–/_ŽÓé<-×'+ S¦L °°°U–ÀñãØçóÓÔØÈ¡Ã‡X¼x1Ý»w'**Ü/öLÃérq¤¬ŒE_Í3 p`Û6èÞkD^ÿkRssµžÌªªEA@EQUÔ6ZŽýd¹ÙLDçΨÄöë¯OIDõxpìÛÇüýûyÿ¥—`ß>ºvëÆ]×\øѣIII9'jÒü>Jšxb{!ïìÝj-eµqW^WþÒ÷ÇÛ&YÁ$öIfs›â= °¿!˜"+tn£Ó¯(ìj&½’D§6¢œNŸŸ’àsîhµ„#˜ Á<ÿ˜7Ÿ¨˜XÔã蟪¨T)gýŠ¥¼úø£† µsgþýÏG÷~}é;(“ÅŒÕ-"‹Õªy‚¯fÁŸ cúÉhdÌ©×4“GA8ަVÝN'ަF\N'^·‡¢Ý»ØøÝjöì(dì´Ë1ù„³T¯¡×ë);°—]›6"ËÊy?†$I$6>‘¨ØÄæÇ€(I¡he]UÅûŠØ¾|ÎÊrF_<ž?þëùJ–g ²,Ó­[7, ï¿ÿ>f³™¡C‡’™™‰ÝnÇn·(ˆÁºv5$”mGˆQ‘v»ý'Ëú8Þ?Þ1áp8hjjÂápPVVƪU«(++#''‡˜˜˜3= ãìÁï÷Ó·o_"""˜óÚâââ:t(iiiÚŽˆÐÆc³@K•ب¨¨3’¹‰ ˆ’ˆ€6¦UÁÑäå’’V¬XA}}=™™™X­Ö€XgG+™÷ÑÇÌ|î9IÉÄŽIç»fjdN–ÅånµßyJªŠ"«Íøñ“$öì.ØsraÊ¥>/•……Üòúôœ?ŸY¿ÿ=£‡ År–jü>J›ügÿÛ^w°‡‰1Ñ<: ?cSRþÇsøi ÖpJíô–mòû¨ öÉÄfÇÚéö+ kµ%:=9m”®4ù}lvjÎÓt«›>,(wÁL·ÓÞ`hEül±ÑŒœr)V›Çÿp'ï¼ô=÷¯Vj¼~ŸgSwËÉBo00pährzõbþës˜pÕt¬vûOŸ<ŸüÚÚZôzý9Úãu»¹hÜxFLšÂæÕ«X¿l) ï›I‡ñdtêL§œÒ;vÄ`0b2›1µ¯f‹QƒuºÆPk’àL4ÄÕ¶,å±Ü,òpü˜’¤–½üA<¶l÷SdÛMÀïÇíráñ¸ñy½xÜnTU¡äà!í¡´ø0%‡‹INK¥`Ì~sßDÅÆòúÓÿwVîµ  èߟÕ+Wòþ£p!0wïÞØé¿âªÛïÀd± ŠΦFj++©~{.%ûŠHïÜùÔöWÌ+z½ÙçÓ^\A \ˆyj8Zu”—^|‰€¢ðû;î )9ùÜ%Ã^:½ž~C‡1pä(d9À¾;صeÖ­eÁ{ï¢E"££‰ˆˆ 6.Žø¤$t:Ñq1DÇÄ!Šb¨ÎAUULæ–QZ¤QÀëÓˆ ÏëÅ`Ô fŸ€ äÐAüÁ…,àr8ŽëÀãvã÷ù¨®¬ÄÑä ªª’úêꩯkÀëu‘œ‘I—nÝwÅUdwïAt\Š"ðûñy=gMY&L˜À„ .˜qþÆë¯óͦÍ(²JíÑ£T”–ph×NJ ñ540fÜX¦Í¼›”æ~U窣ÅëE§Ó1dÈFEEE»wïfË–-¼ôÒKšÓÎf#11‘¸¸8"""ˆ'6öXo2N‡Á` ººZ[€].JJJpbº˜ªª!"B†zcc#G¥©©‰òòrŽ=ŠÃáÀëõÒ©S'ºuëÆ´Ë¦Ñ1«cHý¶¾¾>< ÿ áõx1Æ5j&L ¤´„Ý»v³mÛ6þóŸÿP__ÕjeРAdff†æÖ¦¦&ÖoXŠÎ ¢€Ùdn7¥°¹¦Ýï÷ãt:C‘r³ÙŒÁhÀãñ„¢Ž^¯o°ì¡ÙñQ\\ÌÖ­[)**B’$&L˜@AAÓ§O'555Ô «´´4üPÏ0Ö­]ËÒ… Ixð!,â‘lÉŠ HÒ1â×Ú›†tÆi™PŠ–r{’㉢€tÂ…ö ŠÕ´K8]n’¢¨°9¯¿Nï=èØ©Ói¿Õ{êêYX\Ì»÷@S£Ö뉱ÚÏÌ^½ßá';g­ÛÃQŸƒ$µYƒYX_G ¨4Û-2²Ím¼²LCƒ–"£7ÑF‹‡Ïn7ˆ"ñfóê{ÆyN0› IÉíÝ—·Ÿù'‡öî!3'§Å6’¤Ã`2¡(-S >‡öìæÈ¡ÃŒ¾ì2l‘Qáž%?„´ùü*)aý®](‚À´I“è7 ÿY«5;•±¢ÉûèÔ5ì=˜vý 4Õ7Pr`?5GRYV¡ ¬­ªÆÑØ€N’0™- h“¾=* «ÍœtTA¤ª¢œCEEص+tÞÎ]»Ñc€Ö„Ûãhâ­—^+^‡êª*-ª#jâ%n— ½AGl|<¶ÈH’Ó3èܳq ‰$¦g(‰š¡C¤4´¦‰áIð§„Óé¤êh%+¾^DMñajö‘•™É­7ü†‘#GžïmðˆŒŒä¢‹.bèСH’Duu5ÕÕÕìß¿Ÿ#Gްk×.žxâ‰Vû7ï%%%¼þú매æ)I‡ƒ+VP[[Ûæq'MšDNNcÆŒ¡C‡¤¤¤ ûÒʲŠFŸÆÏªªµ%ñûýÄÅÆ1xð`¢££±Ûí,\¸²²2¾øâ "##éÕ«<÷ìsšê|0‰± %NQñûý>|˜Ã‡SYYÙbœvìØ›ÍŠ¹ÝîÐ; ( ååå8p€ªª*zõêEçÎIII!>>>4ŽÃ=\ÏvïÞMµÓ‰XXˆßlF²Ghµ•Šzê6   8¸B´Ù°ff¢4—„¨*‡_E9ª×‹hµ¢ŽF¬µ=‘h j €·©_y¹fWØlè#£ÐÙí¡c¶"¸Áž÷ð!()¦ÊïÇû¨„·‡€¢PîrQîpòŸýûyvÏ^p9CÄ2-"’¡ ñ\‘•ÅԬ̟üüõ^´ô×x“ ckÁþÆ&µf^T$bóG¥Ë>$Ú¬­¶‘U• ·&ðƒÕ†íµkÃó´®4ŒO@–evoÛʨ©ÓZúT”³ö›ÅZd§ù½%ëjÙ²j5öè(&_=[Äùët:9R~„cm{Oà਒Äô[fàq¹™ýâKübÒDÆŒE||¹=lT-zÈqªž:£Îݺ“ÝC›´EA )nJ¢Dc}GŠ# ‚$Pu¤œúÚjEEo0P¸qK>ù„¸äŸ€ÙnÇïñrpïnŽ”Wh†‹^ON¿~üÚym6;);¢Ê ªª`¶ÙHÎÈD…h…¢j⊢¢(r«Tï0N/Ò32¾ü’Ò5«¸hð`®ºÿ>â:t8ï?—¢((Š2Œ­VkHH¯×³lÙ2>þøc:wîLff&’$áv»)//E_l6yyyx<žï±Å4ÅÌÅ‹0pà@¢¢¢EŸÏGQQ%%% :”¾}û†®ït ²„qá@E¾ûî;î¾ûn:tè@^^Ý»wÇãñPYYI¯^½X¼x1™<ùä“>|84î***p¹\-Ò]«;vì ''‡^½z!Š"@€½{÷²}ûvn½õV $‰ØØX"##)((Д““Y»n-½{÷Æh4ÒØØÈË/¿ŒÉdâŸÿü'999§Üb%ŒŸÑÑјºw§ò›Åøª«±gg£ONÆ‹`4jb>ª¢qÀvlBAñ”Sñ§‡Ðõ@æ#€Ë"‚Î];qlÙ‚cþÚ Æ!C‰>SÇN'¤°*^õ+WâܾßòeÚ/;tÀ0(Ÿè^½°öé‹$‰‚_½^¼åø++©\»*+É2‹å§U”•U•R§“ §“Õ5|Vv„ËË¡±A#–#Ù‘‘ ‰ïÀ/³³¹85å´=»ÃMŒ8gG´]_YâtÒœ‰˜i³·VUUŠ‚íGtdE¶Øjôû9ÐÔ@†ÕŠÍ&˜??‚ ¡:¡Ý›7#Iºsý’%¬_²¤ÝÝozà!²ró‚¢ç'Át8|úé§|òÙgDÆÄœöH¬ Ô×ÕSïñ͸˯dg^7æýçöìÝË%'Ò·_¿óª1°ª¨”öÛHH:Ù]B?§uì¬eT‹"r ÀŠ/‘œ•Å-|ˆA£Fc‹ŠÄçñ²cÃ:>zëML6ã.¿p‚ Èã>Añz<¬Y³†x€wß}—nÝ»…j<ÃãûÖ!—ËÅþó233¹óÎ;éß¿?f‹·ËŦM›x÷ÝwCÛ[,233Cûfgg·2>uz=›7mbïÞ½Œ;–_ÿæ×$'%‡ˆç† øÓŸþÄÚµk™:u*6› EQBQI¿ßÏ'Ÿ|ÂC=D—ì.M&êëYºt)¯¼ò ,`æÌ™á(üÙ\ëeì0tÎmÛp~ú ú”Tlii˜bc¢£1DG#Z¬è,”fýU ©ÈjÊ®Ú3Mæc•U8·o§âÅÀëE*(@gÒŸ\u”Šçž%æú_Ñ‚NªŠ(‰ÔmØ@Ý ÿBHOÇ8b$ ¨N'õë¨ür‰ÿk×<üõµÈuuñÕÔа?ÊÑJ(¸:t@ÑéÁ¨€ªRætr¤ÉÁ®ÚZ>?R΂òr¨¯Ó>·ª‚ÙL·ˆHF§$3-+‹ÉI§wRUjÜnMÖ` Åbm3mÕ鄞W”ÑÐæqŽ4;D‘øãtB6µÏLJæàìl±´IdÃø9ÌïArVGމ|œÇPD<7µG²eõjbâ;pјñXì¶óò3–——óÉgŸá6™éÚ»²_>½4Е¨˜:ævÅÙÔH§¼nÜtïý|ñÁûüó•W™ŒS†$Iìܹ“Í›7óàƒ2`€Ö ÊŒJöíÛ—’’Ö­[r¢È²|JcuøðáLž<™¸Ø¸P}¥(Š 6Œ„„6mÚ„×ëÅl6·È|Òëõ̘1ƒnyÝðù|¸]®¨OEEü1EEEtëÖ-üÏ&dl6˜: jªñoÛNݶíàrAdÆ0GDhDÓnG°Ù £ÑdÖ¾onŸ'‰H²¢€ÓIÕóŒFâgü[Ÿ>ˆ+¢$hh ôå—¨ýï‡;vÄœœ¢ˆârQ·`>R¯^D]2…ˆœ\T¿m- «Váøï‡T½÷Þ¡CqWTà©©Ñ„t,6èš ãÆAl¬Xʳýj¼^ªÝjÝn꽊›|[YÉûåPW{ŒTêõ`³3*ÂN~b"22œ˜pFôüêü~*ÜÁl›c;¤¯Îë ¥ ÛtúVN$YU9èp„f’µµê®+ SÌÌIµ˜±†[”ü< ¦ª(8Z(»W~A«fæý‡çÁgþÕ¢M ø½^œMM,ùä#^xäï|FO›T =ÿîCTL ]{÷eÔ%SB)˜§Ÿt©ÈrUÕ<·&›•+gü–#‡±~ù2¾¾ç^.›2…‹Ç_Œ^a¾ :ƒž¯?úWC=æ#êt¡Hxs*nÿ#óLçDQ䃴´®=zh©äA(Š‚^¯gPþ ^yå•û´§ZØ\󙟟ÏСCQ…@ €Ó餱±‘ŠŠ JKKOY((Œ0Ž'sŸ~ú)²,Ó»wïD¯ùû‚‚‚V㻽±*Ë2>ŸþýûSPPªõln/rôèQÊËËCµ•mÁd2ѯ_?|>_èdYÆd2ѳgOæÌ™ÃÒ¥KéÝ»w8Mö¬ª–ni³ÃС0|¸ÖZ£¦o]^— jj`Ï(-ƒÆzD@HH£ ±Q ì(¤ì…¡Z,øwíB×½;޽{qì߯EÜÐZ[¡Ó£Q9gÆŽQ].¼G+Q‚œ\ê¿ûŽú•+‘E $ è?yÓFê:u‚œèߢ£ÁdÖŽT•EUÑ©*¦v2ÇŽ¸\xØUWÏ¡¦FJ›T8t8ÙírqÄå¯G;fsݧÑH—¸LKJd@|2#"ÉŠŠ$æ §–56±2˜-316†h³©Íí>ÍžÊ8³±ù•U…½MMZ‹I"ÝÚ:°äôûÙ,ÑȰZ±‡ æÏ` ÔTV  tíÛEp|¯’€ßÇíjU»&`‹ˆdò5×òÙ{ïòþ«/3hÔ(bÎËZLìÉü³¶p©ŠŠÏã%1- W^ÅÖïÖð÷'ŸD¯×1jôè ’dТġ={0šLZ{’Â0&«%<Ë„q~L©‚ÀÖ­[0´‘^$Š"fÓ±I’(..¥ÍžˆiÓ¦‘¢(466²eËV®\IUU‡ƒÊÊJ***Â7>Œ5VwïÞ­Uƒ!Ôêø¿ßfGE*++™;wn›ÇëÖ­“'OF–ešššØ¾};+W®¤¢¢‡ÃAUUeeeß{]&“©U–Š(Š˜ƒ*äåååV¤<—¬' ’’’ Y¿¦Þxöí¿´ï##‘{õÖo ›MS­¬Y&`µjιëÓ##Àb!PRJ !ìv¨ÑT¹å>} 1Qf³-Ôé ¤6o‚ìlÈ릉ÜÈ ø}­ó–ˆHž9xØú}>jNä`N‰Ëƒ/H0÷º\òx42ÙVF•Á@n\.IL  >žŒÈH2"ìĶ!Šu¦Pívãs:AUÉ‹%ÖÔ6ÁlðzC)²æ6¢œŠ ûœšC3Z’H³Z[mã8tzÆXÂ-J~~Sü>k–,!:.Ž´¬,dE9¥ú†æèRDt46›¢-[ðýX¹ê0Z.¦’HÃÑ6­YMVz©©©t͉ÒlÔ„m†ÿ¯½öëׯà¾ûî£Ó÷È­ßvÛmȲŒÕjåÿøÇ÷¿°°çŸ€3f„DeþlÙ²…ÂÂBV¬XÕjeÔ¨Q´hññ}xúé§Ù»w/>ú(qqqgÕY¥ çïТ(RU]ÅÇÜæß èÚµ+‡ƒwÞy‡O?ýAÈÏϧK—.ÄÄÄÃ_ÿú×pD'Œ>÷£CÂ)6Ahhlhw¬6551uêTÜn7|ð}ô>ŸAƒ‘Mtt4:tàÿøÇI£˜íûø^šaœËdS>f$~þ9ìÚ#GA×®á«o€ýû´tÿA~ IDATZ€„D1B#˜›6ÁúuУ'ôìÙ’¼ ‚¶ÿÒeÐXƒi„ò™j:šI“Úü?A‹NÊ2¬[ݺ»¾6ŒÚ½6O8ÒÒe}¾ÙjÓ’ISd$cãèI–ÍJšÍNœÅBªÍzVIe3|ŠÂ¾úzTëõô‹ÃÖNЬO‘C5¢íÍûƒL³(І(’_–5ò $XÌèáŸÁ%A€=Û¶ñÕüyL¸êjÓÓ‘eùÔÈŒzžêŠ êêÈë?Ó õçÙ6Œ-f$ßx¤‚ö¢ú}¾PQ¹( Mf6,_Æ—óç1qðEL¼óv:vìxJÀùˆ@ Àà1cÙ¶zuÕU$¦g´6\ê³Ì)béÒ¥¼óÎ;Üpà ßK0›{8êõúS"˜%%%¼ú꫌7®Áܾ};©©©DGGŸÒµ:Nž~úi>ÿâs6oÚŠZ¼ÿþûŒ3†;ýûŸÒ±.\ÈÒ¥KxàÁÎÁTU•K/½”ùóçSWW׊$7GwŽÿ¹s§Î<óÌ3m¯cÇŽ¨ªÊ¦M›xûí·™:u*cÇŽ%11ƒÁ€ÁhÀn³óÄO„ f?²,3nÜ8Þxã jjj°Ùl-ÖUU[P)ŠBJrJ»c5::Y–Ù¶mï¾û.Æ câĉ$%'a2š0 ÄÄÆ0gΜv ¦¢(8ŒFã1G à÷û©©©A’$ú÷ïßBˆ0Œs‘gªP\ «V¸‹aÂMH´bj |üѱm%˜-š V+¸=`4jÿšmJQÒ”WQ4rj2iû‹ˆb eûÐïš3¿Ê+´ŸOîñŸ7”2‚Õ f `EFEG10&†Nv;ivv½X‹™(£»ÞÀ¹&ÏXåñ°:Ø9&2Šd«­M—,hþØ'‹:[«Xuú6|¼^íYètØÃ ².Á´XmXmöi‡Š¢p´´”ÂxíÉÇ‘$‰Ë®¿ù~¨7°ØíH:é8n¤)ÂÕ=Ê›OÏæÀŽüîÑÇ0Ûlç­ÆDEi)Ë7ldËšÕ-{~ž( ºæ1tÂ,6;zƒ¦ºzÞþ×ó¸+Žpǵ¿bİaXmgO8éL8 d¿Ÿ> ÁÖïÖÐ¥Woô=ЬjK½žÝ›6†g™SD‹”¶SpI’„,ËDEEÒñ ÄÊ•+È öÌ |ôÑG<õôS¼òÊ+§D0eYæ³Ï>ãá‡F’${ì1ŒÃáàÿý¿ÿÇ[o½…×ëå‰'ž)Wž æã¼­¢pö–wEQ2tóçÏgË–-\|ñÅȲŒªªZÀ€Ÿ;v´Ø>222Ô³-Œ(I,Y²¿ßϸqãèÞ½{è˜z½ž’’’câ+aGqm®9j›ï`~~>o½õ[¶l!+++4ï7G ·oßÞb=°X,íŽÕfåÕ«WÓÐÐÀèÑ£éÛ·/~¿?4VKKJCбm9M}>;vî P~H¨¹ìÖ­[IHH gÏžß+6Æ9€C‡´Ç¡C5r)Ž‘¸”-JÙ<ªª1Œ‹ÓRl—/…¤DèÒ F-òÖPoÏ…æ’€æÈ¢$µ&„'’]Ý÷¬ ‚@†¦ŒA\l¹vlA’¥×é´ž‘‚€(DôD›Œç$™l åoÛ½Mˆ'®V,>þàý2 ­²pTUå¨;Xc*ID™L­–Ÿ¢PærE ˜Ãé±.Á|øÖ[0è-–UU¨®(§²´”¤ôLn}ñ/¤uê„?ÐZÜfÅŸ3ó—¿ pœ¨ø¼^êëjØ»y3£¦]Fþ豌¦óRÅ099™;n¿Â…Î@CXI’8RVÆæuß‘šÊà±³~Ù·|ôÖ›Œ4K¯û]»v=GÚ”âé³Ze9@Ǽ<úÆû/½HRj:C'L$"&¯ÛËæ•+Y4Á™û´‚€¤Ó…•jÛALL ƒnñ»^x§Ÿ~š’’ô§¸˜(ŠBaa!dÛ¶mÜvÛm؂ΓÉÄ{ï½Ç¢E‹wñ8nøÍ gÿ-8Å EQè–×ììl^{í5âââèׯ_¨ŸßÊ•+ùæ›oZísÒñ¦ª$&&PTTD^^f³ŸÏÇž={xê©§B"?>¯¯Ù>Ùç¡…Q.š ÅãDZ,Ëäääзo_Þxã (((Àjµât:ùî»ïøê«¯Z˜'«¢(Ò!Øçvß¾}ôë׫ՊßïçÀ<óì3¡:L¯×Ûʉé÷ûYôÅ"¢"£ÈÍÍE’$ª««Y²d óçÏgâĉdee…2­DQD–ed%L8Ï-† ‹¾Ð¢‡‰‰ÇÈ¥6ái‘ÉÔÔ'O--sÌXx÷?ðÊËÚ6:Ñlh„‹.‚ ¾þtLòtt:˜ž–FfV– ¤,ɧ(l­®FmÐîÙØä$ÍíL?žà;¯×·"ªªr°©Isˆ"ImU·à¨×Ji6éÃ-J.(‚)55¬ 6ç>§ÿŠ1—NcÀð$ge¶è'ˆ Nµ,ûô“Ö†fb2}‡ æ²ëCAÄ%&·Ðjµ2|øpòóóÏØó)**¢ìÕWi¬¯ç­gŸ¡ªh÷Ü|ùùDÇÄœ÷eÒ%—ð¯W_åÒß܈=*Š€ß"+?ù:$é$~s×½Ô×ÕóìŸ䣹ob³Gàñ¸Ù¿s¿ô1V}±ð4?-Z/Ë ë–.å©¿=|Æïwee%«W¯æ7ÞÀh42yòdÆŒCJJJ›DfÍš5,\¸C‡qÅW0mÚ4Œ?²Þ£Ù™qèÐ!>ûì3¾üòK¹ýöÛéÑ£Gèï›6mâ¯ý+ÿûßY»v-ÿûß©­­à–[n!&&†çžŽÌŒÌö'MŽ¿Áo~óœNgˆ\tˆ× Ô††V­\Õ‚`ÖÖÖ²lÙ2>úè#¬V+¿˜K§\Ú®²åÿŠÌÌLdY¦¼¼œÜ®]Cb`'ƒÉdâž{îaÖ¬Yüå/!++ ƒÑ€£ÉÛãæ—ÿ‚ÂÂÂS¾¿ßÏ¡Cøøãyî¹çX¼x1F£·ÛMYYãÇÇf³±fÍOJ0µRÔÕÕý¬ZÈœ Ňãñx~P)‚(Ф¥§Ÿ¶±÷Sbøˆá¼ñÆÔÖÖ’‘‘¢(!rwûí·óä“Oòøãc³ÙHMKÅåtQQQÁ 7ÜÀ† Z™ÊqZ ÍÇ’$ EQèׯiii¼úꫬ^½§Ó‰N§£¦¦†‘#5Eðµß­¥±©‘¸¸8dYÝw½^OŸ>}¸çž{HOOGE>ŒË墠 €éÓ§‡H¥Á` ¦¦†´´4’Îcûã‚%˜µµZ«(…”`wyЖh¡¢B÷îpË Ø°¾ ö`Ï ¶)ȇõk5qPµèeó"ÞÞâ®M¤ß{Ù’ªbÓé.r Pár±¨¬…¸ØXºÆD£o'xÑà÷ã F†;èõ­î©  v@Éh£5¡Û 4(¥×c ÷À¼°¦Ûåâ©wçµëi‘èøŒ&L  ¶È.ðû|äöêÍ«_.n߈²X0[­Xíèm±:kïu:º3ø"جVõõ¼ùüsÜzýõÜýׇ騩Ó9%æ“‘‘Á¬‡fÖïï`ðø Œºt’5±,·èkù¿ à÷“œ•É]³cÍâ¯Y4ÿv®_GvïÞÜõèã 9 €¦ÚÚŸT=P”D$QB§×áv¹Yµè Þíß\9i"C† 9£÷zíÚµÜu×]ìÚµ‹ú wö“O>aÈ!Üwß}\|ñÅ¡mëëëyùå—yýõ×)**`Þ¼yüùÏf×®]?êü‡¯¿þšo¼‘’’’Ðï׬YèQ£˜={6ƒÚÚZ>ýôSîºû.6nÜ"—«V­`Ö¬YßëdIIn›8.9~òòòB«ªªbæÌ™|ýõ×!åÔW_}•'žx‚œ–çb6›¹æškxæ-ò2iÒ$¢££ñûý¡4Õ¶>CNNûûßXòÍ>ÿüsjkkû,dܸq˜L&ò Bg0ðЃ²hÑ"~÷—¿00'‡>}ú0óž{¸òÆyòÉ'©¯«×Æ»¢KJ§Nl]¹^OLb±‰IìÞ°E‘7mö˜>xç>˜?Ÿÿ,\Èʯ¾Â(Iäç"ì8:&&²lÙ2’“È7ŽuK–„œ)wÿõ¯¸ÝnÞ{ï=|ªÊ§K–ðÚìÙŒŸ4‰ÄÄDô~§“ùóç³uëVž|òÉSNñã,à­ÙZZ%;kJ´Ã‡ë¹¡Õõy-e9Ù`À®Á¼°¦"+¤egŸü5zÛ2TEÅb³ÑédÍŒƒûªª© ãÔI¿>}èÖ­·Þr3‘‘‘çäuN¾äº÷èο_ƒû®»†Ø„x†M˜H×^}ÈíÕ›@ €¢È!¯¶¢(?j<(ŠJRz:¯šÎð‰“p»œ˜­V"cb‘tzÞX² Q”ðÿ¥b­°ˆ(J¢€ Jèõz*KJØS¸Õ_ÅæµëÈïÛ›Ÿxœ={b1Ÿ¹Ö(¥¥¥Ü|óÍlß¾›nº‰Ûn» NÇܹs™={6²,Ó­[7RSS ,[¶ŒY³fát:™1c¿ýíoQ…wÞy§U´áTÑÔÔÄܹsyóÍ7IJJÂår1gÎ^|ñEœN'S¦LaôèÑ-Ò¶=n<ò555|øá‡|ðÁôìÙ“ŒŒŒu‡æÙgŸ sçÎŒ3&dx.Z´ˆ¹sçÅ /¼ÀÈ‘#C×ÙL´OFMçΙ3gwÜq999 6Œþýûc³Ùe9ÅiŽn ‚@§ŽHJLbÊ”)ø|>lvQ‘QȲÌܹs1§Ô¿²9:”——GFFÓ¦MC–eìvì6;z½žœÜÞyç¬6+’$!¢("I@€;v°lÙ2V­ZŰáØ={6]»v½àÔ©<ÈâÅ‹ùfÅ Ž–”àjlĉÛfG6ñÚí¸lvÈÏD×lh ’^ߦèÅ÷¢j  )± ªÛ¿¬ ¢`_óz¯ƒÇ¹®»$’°ü|† J¿Îø½™8q"]»vå…^àæ[n&gà þûðÝô›ÿ%Yfök¯‘xõv³cãFƋ헓ØZVÆîÕ«É0€ Ë—£ß´‘ø×^ ÷ÿž£|_Ýêëѽÿ6ê}b÷–-D샩3î$öÞ{¹ûÿf“ÿ蟘ð»{ÙìpÒí¢‹ˆ¿úRŠ6ofsQƒÆ'râPò?]Ê›sçrQAqWNäþù‹2rÓÒI{îÿH|ñeêŠöbëÐûn½•Â;ñxžxâ òòò.X¼ó¢ÆÚÕZí¤ÅJ‹„,ÃqR-öÓ4"h±j„±¹Ÿ¤ hmLœNHMÓ"˜ª iiÚ¾nwk‚©*!•$-U÷g¦@\ãõòßC‡ÀíIbDRÒIUmý>Á{l]tâœwÐál6ªH±´¶“ÜY«ÁÌ‚€NÃïÃ…D0ÿ9º¤ªüdª0Z#66–[fÜ‚(ˆ-ÒÏ5 ºtÉáÁûïçößþ–ÂÂB.ZÄ‹ æsàða\Dçî݉O +'—ø”¢bc‘2*Z½/A'Äñiت¢ œ@DUL3f›Umv‚@zv@E>.EWZ ÙhF5¢úÙåtRvè%û÷QSu”¢í…lZ³AG¯®]™8vOÞÑÑÑÄÇÇŸqceëÖ­ìØ±Q¹ë®»BQ»«¯¾šÙ³g‡RBï¸ãXºt)N§“‹/¾˜|ôôôИ*,,lU7u*°Z­üá wïÞ!©( /¾ø"äý÷ßgôèÑ'8B9ÐTO»téò£îCqq1wÝu‹-Â`0pÕUW…îEUUU(:úÀpíµ×b·Û­.týúõ?š\ŒF#]ºtáü#7Ýt+V¬`áÂ…<ýôÓ¤§§Ó·o_233ILL Õ5;ß QQQÇœqA±Ÿ¬¬¬SæÔæcm¿¨¨¨"JÍcµùUàÀýT”WPTTDaa!;wî$//É“'sß}÷‘˜˜H\\Üc”oݺ•ç^~™mß}‡Ë` )5GJ2BN.º˜$½>T¯gtu:P6 ש*?6ñ_lžˆ‚Ž]%++ØÐW–ñ( u>¾úz¨ªbƼúñǘªªÈêÞ®¿žÉ“&‘ûd2™èÚµ+ûÛ߸óÎ;Yüí·\3gs†ç2𻃘¯šÄ)9üæÖkÉüh1ÆK†³çºÛéyïíä¾ü†ÉÃg=KcfËJÈzø~®» ÷?¥¶çbþp+ÒM·³ýòéôzìO }â9ôÿ~ž=y½Éºï6.zóCŒ×ý‚‘éþ»_“üÙ Œ“†±ýW¿¥Ç¤¡\õÙ —Œ`Ïu·‘óë+¹äå·\ûì³Ð5Ϙ1}°NgÏž=¼ù曡ûÒL.A«“<mIšß´´4¦L™‚ÇãaçάZµŠ7R\\Ì®]»HII!>>ž¤¤$âãã‰%---‰ÌÈÈÀf³ý •fAðz½8pǃ(ŠTWWsäÈêêê())¡¡¡={ö™™Izz:½zõâw¿ûýúõÃd6a³ÚZ<ÓóÛ¶mã–;ï¤Æë¥¡o?¸þ×""ôz"õ$½¤væUýIêɵ#;h4‰çqM̰Æ' fuDöûqø¼Ôûý”îÛdžgžáÞ{îáñGeêe—1çfll,iéi\þ‹_`s»&^Ä‹Y½ùª¼‚wóÑÀ4ì©Åê›ÃG#³& æ‘~£IÙºYQØŸš\¬Ðù±?³íwA ÎåÄ&Ѝ‰‰ìºûÏôäAŽ JÃÐálë7€þ·\Í¡K§SÓ%—¹“®æÚñù|8d»óž9žGwal¹Ÿò'ž¤CáV¾ØÓk,™ô9†Bºÿñ÷¤}ü-ˆ‰Áz3LÂh {DvE¥JUA4’×zÂÒÒXá½w5‚×­›VÙPk×–­'¾”Zm¥ÏË–Bd$¤¥kD²±vÂ?„‹Çk鳂¨í“–Ù9°`¾ÁìÝ[‹‚:š`õjøú+È/ÐúmÊïµË.‡…Ãïç›ò#ZKIbRb"#¾×‘yÌyÖú>¨¨ì ¦›$‰„6"˜~Y¡,˜ŠlÓé0]À=ÜÃ3Œ0~Bèõú”Ô´4¦M›Š,Ëd9@S“ƒ;vàñz)--¥¼¢‚Š­›XüÞ;ˆ’„$Š””–RUUò?îFX­äää¦(ÆDGÓ-'‡«•Á£GCN—¢c¢µZKQ1ê kçq¶Q^^Þb M,:]+Ÿ€,‡Ò*o>ÞÖÏÍ8xð`‹vm-&'ž»y19þØ?EEEmžûx¸Ýn{ô±¹œ1c>úh‹qæóùðxþ˜¹/¾ˆý 9,f˱R€÷q­ÉÌtY& (ˆ>/Oï?@UE¥ÅÅ÷sÏsÎsžÃ~¯Ó¶Jdk+  ?ù‰:3Ób‰0qÌþù•¤¶=ŸÝ®þ>y2'Ìd‹¢úØ;¸bÎâ;$mÏg±ÛyøÛ} ÄÙlLKMýÞrUhðU'‚@p7ý•N¯w«z}3J"ºÁ Ìø.Ðét]\##£HJJòK½²EV:Íꓽ²Úü=^[)"µ_g|¿ ¨ÿŠ‚èïGëÍ8­Q§¨zu÷·º{àžw¶pªq/n·›÷Þ?ýéO˜Ífžyæn¹å–N²Ûžü?$IêRŒP×½o|B§µ'4êÑz—$<'Š"¢$ú×y[Ïå…Ž;vðÜüù?ñ$fƒAí¯jû<{{U‡÷'h4hµZ´&Êì{Yþò˼þúëÜ}çßÙ ú;#"ëq7ŽŒò÷{e¯*–eÿúózÕ6ˆ~æÇ“}ßï‚ï¼é²ŽE o·%‘Â:1â@Õ²7@¯×óÊ+¯pëœ9|µw¯Jø¢c:T3;¬‡„˜3¶o‡M_@U•:†d„öQ#Ç09bc`ëVÕEÖëUå¶£FCV˜ëçÄç<ûÐ<س>ý¤ý®o‚Œ _õ²cË— ª¼29ï-â×7ÜÀS§^{hµÓÉßóòÔj±(2%&†É ñ§µO°òè‹W$ôÝÈ_=² ¾ö:‹VC€^fœÙ“" »ï1žþÍÓ<ôàC(ŠBqq1ÉÉÉ€:Gnذa„„„0oÞÉ²ÌÆ¹ëλ0 <÷ÜsÜyçÝVÜ222˜1c‹/æXÉ1ÿ<€êêj|Ž ½mrà8;x÷Ýw©/-%ÌbVÚ“‘JQÀ× þ]2XþX´ÇÏ!] :';ÎwŸh6ƒ½5«V1ëÖ[Î=Á<É: €ã‘žžÎº¥KykáBžùóŸ)w¹ûöƒ 1ÑwÒøÎ‡ˆ˜8Q%¢Š¢&„4UûòÿSw9;.<µÇ2>®¼²ýIm…é’¤ÉÔThëiöÍaÄO”u?p¹TRyà|»‡T³™ pñÈ=žãÜ«sXÀ®ªjþº?$[צ¥p4ɉm0tIæ* àhQD'ºyNÙë§C} þèÁ €~0Lš8 ­V‹Ãá`áÂ…Ì;­VË'Ÿ|B}}=QQQŒ7P mÆÇÛo¿ÍÚµk™?>÷Þ{/¯½ö6lèòüg»¿´ãEHñ9 ·¦'sã-++còäÉèõzþð‡?pçwúgéè¶IQ/^Ì_þüâbã˜0a---¼üòËìÚµ+°~$ ›#óç“xó-ªï¸@H$šóPö«Gѽ„„ÿ{¥µµ‡ÌJÀ][KÓ¾}Ôþë5hjÂ8þ'…¥ÿ€®cÅå¢õÈaì_~IÓª•`µ¢>˰aX22UÇÚnå³êmåÿùŠ‹I=)èÝ£ÑÈ·ÝÆm·ÜÌ·ßîeÙÊ•,\¶ŒÃ……ˆÉɸ“ &Fý‰íLÛ\aO”äl#‡=MÒµ[mD´ ^¯J&ËËáðat%ÇP**HOOçÊÉ“¹æñÇÈÍ€FÒ\0É”cMMü~÷UV¬Óñ³¤D&ÆÅöèX»»Ýäç„ô#Š, IDATJ¡Ž*Œnî®rª­,hµÿ€Þ‚@\P¾‡4/''‡E‹1sæLž|òIžxâ ßµR"::šG}Ä寧×ë™vÕ4=vˆçž{ŽG}”G}I’˜5kgÍMõD˜5k»víbÛ¶mŒ1‚‡~˜G}´Såñðz½|üñÇx}=¥sçÎeîܹ]wóÍ7óÖ[oa4¹þúëY³f ëÖ­ãÒK/õF÷Þ{/±±±ù¤ŸhizÐKÃá ,,¬Ë}’(ù˜·õJRûmmÐÁƒóÛßþ–gžy†ýû÷ãv»OI¸½^/Ë—/?å€tS‡¾«¨¨(^}õUV®ZÉkÿ|àà`n¸áî¹çªªª¨®®ö=\àD3†Çùõ×”¿ó6”” Lpß¾è33Ûz®/¸Ý(¾`Th#jf¨=8’D(ŠB½¯‘\’$‚‚NnÑìr»hnR-˜-KÜeÙ¿±ž-466úBl6›?óVWW窃ƒƒ_ú¹Žs}n­=•ß}úôáÉ'ŸäÉ'Ÿ<åcƒ¬A̘1ƒ3ftºýÏþ3þóŸ{üšlGVV–}µá’K.ér›Á``Ê”)L™2¥Ç¯«ÓéX±bÅiF©©©Ü?÷~îŸ{§Ûß}÷ÝÀbüñíðjµcÜ8?ZZPöì¡þÀu4Á‘#x¤lÑ»hBBС‹Go AVdD¡=!ètØ¿ù¹¼œ»îÆš;A‘}’/cb"!wÝMÝüWh>CL,²ÛEÓž=P[KøÃ`HL¤n÷7(N'®ªj<Š V+å¿~¢¢ - RÓTã“ðˆy € qqq~Wô‰“&>3»’_ßÀ%ë7€Û ¿HJäÖÌŒÓzž’æÕøˆ5›OÒA)tkä’eÛL5lº³¬È4P°þô‰““¹}fOQp|\¯ÑÀì{Ž3êQ„«¦Ar²j2Õ6'@0ܰÛí~7ÊŒŒ òóóOúø>úˆiWMàÓO?eâĉ§|°°0?ñ;¾jãp8Θ‘ÊСC)ð &nhh ((Çãÿû¬VëIgpv`0°Z­]HWpŽÐÖ³«×ÃðájUP£ƒð»g‰æúzøb£*¥ëˆ¨(°…€ì…¨„ƒùàõÒ¸oÍÇŽuÉj{eÊæ¿¢ÎÚóz ¬ ¼^ª^ü Uz½jN¢×CD¤Z™ÌÎQåÓ§CP°*AóÊj —À÷$—å--<²e+Ô×VË”Ø8~?bx¥±mÏSÑÔ¤î…@¼ÅÜåøS ,Ü^/u.—_)¢ÓœÙ¶÷(Iªäº£‡ƒ(±c¯îëüì:5 ÆÎ$Q«Uï?Q‘hõ*õßiÓaÒ¤“ÑÁü¡Ã¹a±XNýEv0Wè©Uõ˜1c¨©©éTít»Ý=z”U«VuÛWö]Ðéýû Úú÷ï@lllàûþ Š"Z­§Óø0 WM_€Ñ6þ'$BB ®Nu´Eµ‡Ën‡œ>*)Õë¡¡åÛÝx&¼Ýõ‚µÉ¯M&¸v46ÂêÕê0ó§žV3êEQ‡Æÿo³úX«õœ'À…&·›¿ïÛÇòü ×“m á±!ƒˆ8Íâ†C–q¶í]¦®³xE¡Öéô:c7äÑáõr¤Y•ÈÆjµ„ΡÉÏÈ‘pßhut&ŸŽV(*‚¥Ëàƒ÷Õ½~äÈî ¤þô—®NŲ ¥%ðéZ•h¦¥AZzçñ:‚ÀÙÀúõ뻜„kÖ¬aΜ9 †3F0»ƒ$IìÞ½û¼ú¼Ôô@@¼²ŒÓá@AZZë´Z´Z­?ÿ$Šb—Yœç ƒÐÐÐóî{àÜÃåv!ûäGŠ¢àt:»Ó]C§×ù圂 ôŠ1ç öïWÉæƒ©ãD Š‹à?ªÄoäHHJV-¿Ø;wÂØ1E)T],_‡«R×Ò8éé ÓƒoÀx{t …  ((€Š ˆOÎo‚ér¹üm!^Ù‹Ëéêñ:ÖëõþöŽÀ: €ï¯,³öè1~»e+èt`4ñÈÀ\FG~ïiys3Ͳ¬ÎÀ4º5@jpûz%‘ÐnÈ£¬(8}&AVQÄ|.gŠÊ28œªD¸ÓÆ#AV6Ü6 ^_.iŸzüþîrvv!nCLŒ:ŸuÓFøßÿ 3+@0ÏwØívjjjp¹\F‚mÁY»ï£t:Ô××ÓÐЀÉdÂf³!‰ß}q ¢€¢(466R]]×ë%$$„Nóí<è¿Ø¦¥¥±sçN¦MSe¶ÙÙÙäçç£×ëIJJê1kll¤¶®­FKpp0!!!ݞ슢øe³’$‘––†Ýn§¤¤NGttt'“ÇãŸqÒö§ E–iimÅétâr¹p8ê°yǃ"Ë,Ï>û,‡ƒäädfÍšÅ5×\Cvvv' k]]«V­bñâŬ\¹’ôôtn½õV®¿þúïü>Z[ZÙºu+‹-⥗^`æÌ™Ì˜1ƒŸþô§~àŒŒö“¹¹¥™¡C‡úÏËË#++‹¾}ûòí·ßžò5›ššØ¸q#K–,á7Þ@«Õrûí·óÄOøû<;e¯¼^²²²Õ4Åét²{÷nF(Š,X°€[o½µÓ1‡bΜ9¬]»–… rýõ×'â%Ë2v»Ýÿãt8¨ª®&¿ €’ÒRªªk8\RBCSöÆ&š[[@‘IJK#(؆"Ë(Š‚5(ˆÄ”¬ƒ¯Šyj»»øU_oADAÀáh¡°à ^V‡-Ć^¯':"œ”øââbÈÉÌ"""ƒÉˆÉdÂj±b ²ž‘@Üb¶`6›),,ô\øhmm¥¾¾ž¦æ&Zš[ü.‰ùùù”””PVVFcc#v»QIMIÅd2!Ë2:ޤ¤$l6ÛIwA ¹¹™µk×ÒÚÚŠ x< q:ˆ’HTd‹…¬¬,’’’HNN&##ƒÁ€Ùl&88ëi8 ^pˆŠP‡¿·™O¨™<5+û÷Áر` Rû'súÀŠå*LKk—Ô9¢š©àóñ477SßPOsS3­­­S\\LAAÇŽ£²²’ÆÆFš››Ñëõ$&&b4‘e£ÑHBBÁÁÁ§\Çv»Õ«Wãö}n·›ü‚|d¯ŒV«%** «ÕJvv¶ºŽS’INJÆh4b¶˜±ÛünÖðcÇÞÚZ¦oüBM|I®ONâÉ¡C¾óóí¯¯Çåñ€¢06"m7ÿÀÐDÖ-Ëò™¢Y5‚õ½(Ñéõ¨û{x8ÂàAªÂ¤#ŽŸ£Ú~±‡£GÕÿ:ìœU/óŒ²KUFS\\̼yóX±b#FŽ 2"’òòržzê)V­ZÅo¼ANNŽZ p»xùå—ùÍo~À¸qã0 ¬\µ’¼¼¼ïüVV­ZEYYõõõ\qÅTUW±hÑ"-ZÄ{ï½ÇÕW_V«%""‚ªª*$IB#i¸ôÒKùøãÕÐ``âĉäääœòõ<,þ€¹sæÒܬÕ¨¨(öíÛÇãOÂÃÃ‰ŠŠbÏž=‚y£¹¹™²²2êêëÙ³{7Û·o§  €#GŽN||<Œ?ž˜˜BCC‰‹Uý\|I’F‘{fF'ÐÉí´m½ ¢@cC#ÇJŽÑdoâСCäååñÉ'ŸpôèQ"""ÈÈÈ`àÀôïߟ¨è(âãâ¿ó:?o¡Ó«=ENGÇG½Íd†½{Õ~Ìè0šàg?SeT.i'¥’¤‹øxìW'6ƒ8iv¬÷úØívÊËË©­­eÇŽìܹ“‚‚ÊÊÊˆŽŽ&11‘ôôt @TtáaáDFE¢ÈªjäL¬cAüןúúzŽ=Jcc#dûöí,]º”òòr¢££ÉÌÌdðàÁdggM\\Ü;iò#…£µYQhj²ãq{@‡ÓEKKËi_ I"F£ ƒN‹,+˜-tZ-:½¾×WηUVqùú TÖÖ€(2(<œgG Gÿ=TûêêTâ$Ë E{\•NVJÚ” ‚@œÉÔ-Át¸Ô=Ó(‰˜{“¢KVÔ$¢Ñª{ûñ*ß®Óë…ÒRU½2l8ô란ÉÏyQ’¨o¨gÙ²e¬X±‚»ï¾›§žzŠèèhJKK™>}:[¶láßÿþ7=öÁÁÁäð—¿ü€¹sçòÌïž!ÈDcc#?üðw~/<÷Üs <€Ã‡3mÚ4víÚÅ‚ ˜8qby©N§ã£>òKÞú÷ïßãQ ÇŽã×ß ¹¹™iÓ¦ñüóÏû«£/¿ü2K/éÑó˜L&®»î:,X@uM5_~ù%&L ²²’/¿ü€«®ºŠ„ø„=gkk ûöígß¾ýü÷‹/ؽ?£ÅLv¿~ô5–kﺗø”dôz²×‹"ËÈ>âØV©´Ï9‘=ÎQ‰É) d÷ïï'ž‚(2G‹Š9”—Gþ¾oyýƒ)++!5!1#G0bèPúôí{Ú²áÈÈHÒÓÓÙ¶m×^{màD¾ÑÒÒBAA_~ù%6l ??ŸÔÔT Ę1cèß¿?Z­Y–;ý(ŠB“½é¬½/I’HINA äÚEá@þdÛ¶m¼óÎ;Øl6&OžÌÅ_LVVÖ•Ç÷jøæºõˆôy=wÜ ûöÁÿ¾¯.§öí´)I VÝ%©Ý¸§[óE½]§SÍ%øaI¦Ýn§  €/¾ø‚ 6PTTDNNdÒ¤I~Ó¸¶µ{®Ö±N§#==A>|8‚ In·›ýû÷sðàA>ÿüs,X@TT'Md䈑dggÆs]`e™&»–æfjêëiijÂëñàt8((*Âér±ïÐ!šš@(®®fëѣȧáÈìU,zƒââH Ååñ“šJhP‘ááÄGG#iµht:l¶`¬Ö ,f3æ˜EžÕ­ ø¢¤”q¿@©¯Q$#$”§‡ &õ{¼7(jhP{ÕE‘œ4ÝU©éìN"ëñzÕ>FAÀ¢ÑÚ«z¬uÖh ¼¸³¢¥ ÏýñćÃuשIÉ@óüƒFÒpäðv}ó ãÆ#::P+t3fÌ Ý×kçñiÅ—-[æ—Ü<øàƒþÍ   ~õ«_ñü£Ók477³k×®®$!*²SÖjöìÙ~r ””DDDk×®Åáptû74ÚÛG…´½Gÿ}ìÙ³§Ë1999|õÕW>|€»îº«“ôöž{îaÁ‚ÝÛ]À™››Ë„ øä“OX¶lãÇG’$òä±xñbbcc !!©WNeø°áh4µWÞëU+A?©èîº)™™™äää0mÚ4<{öìaÍš5¬^µšË¯¸œY³fõú=7€“ÃétRVZJUu5‡‹‹)(.¦¸´”uûöSxôˆJ´Zˆ‰I„ÄD$£kF&¡c/9½¾8A@q»ÙQQÁ—v;‚Ngç.õ\ml€êZP¼`µ2&3“ÜÄDRãâÈÍÉÁJdD811±çÔ\P>=r”)>W÷A 7"’? Ê”„øïõÜÕN'5§º?™-„º'†îû—ÔÍçí•eð]õ’„®·õŸjÿ<˜Î¦¾O¾¹E5pûßÿÔuwÎ’…‚y† •$òóóYºt©J»hÌ›7¯Ë1ï¼óŽŸì…‡‡wºïøßŠŠŠ=zt—ÛgÏžÍÏ~ö3ÿï¶®¨Ž}ÂwhòÝ·o_·¯½víZ¶lÙÂQŸÆÛvœüJ§Ó–dÃb±pÝõ×ñÉ'ŸðÕW_QXTH|\<_lü‚††.¹ä’™5ÚyòéßÐ"J<úÇçHLIÁãñâõxhnj:/×X[ åîð=y#Æ^‚½¾ŽÿýUæÎû?Þøû«§|§¤¤úµë¸úê«{õgÐÔÔÄŒ3(--å¾ûîãå—_î$•®­­å`éÒ¥Lž<™åË—#Š"GŽaõêÕ¬[·Îކ††2}útFÅeS.ëBVÏw¸Ýnþñ°gÏæÌ™CjjªjxâñœÒؤ·¬õ6ddd0oÞ<ª««ù׿þE~~>üã ;¯¾åtIZsÔÖBHh{æYÒ@UTW«=5!!*!>Ùº•öïÇáõª|d$¡?ý)I±qhm6õ\kS#tT%( ‚òÝz¢­©iíÄ´í(j ŽË³ª’EE|QZ ßîƒý ]P×ôïÏO‡ #;;›ì¬,º‰5ÏèuH–YsäÓ6lTÇnc££ùýÈŒ:×ܽµuTøú/ÇGFv[½Ô1%>wC®eEQ÷¿ÞH.Õ‹¢úc6wßky·Ë²jìs༷ª*áç7v¹ ˜½‰[O‰ŽU¸ãßÝñ'"†ÇWó”³0ûD¯Ý&ã[Ϫå+X½k7F³™Ö–Ö n½)Š‚ÇíÆãv£7yð©ßrÝOÆ0þ|žþù?ORRƒ býúõL:µWWó"""xâ‰'˜={6ûÛßxøá‡IHHðí¥2yyy,]º”èèhî»ï>ôz= ¼öÚk<ûì³DEE1kÖ,´Z-uuu,X°€ ð»ßýŽ_þò—”Gyy9+W®äžÙ÷™•yVe‚çŠp†‡‡3}út~ýë_³nÝ:®»îºóêïÐh4ª«+=Ê"——Ážoaø0µÿFQÔ À–­joÍäKÕÛEQu”]¹îº ð äF•}ÕÔ¨cMúõW«‘²¢VUT‚¹y3Lœ¨/ªcíÁƒ°k'Lœ¤VJOv]…ûø.زe Ë—/çùçŸ'>>žÖÖÞµ—·+9Õ<á6ÂÙÒÒBBBS¦LaáÂ… <¸G^ô´´´ðÙ† ¬\·Ž··ï U¯GÓ·/Q7Þ„9!YÔà½Í·áêï­ü|Ó……é#"( -‡‹ù° €Eï½ÔÚÂÃ'2uÒ$.ºè¢³òY5{<,=TÈM_~å—ŸNJHäÏ#GÐ/4䌼Æú:ªÝnP††† í&U€&¯×GÈŒçrÉ™€(‚½QÝ«‡ õµ,§£{âi±øÚ"dø×kЧ/üä§‚y^@ŠLHH)))u¹Ølݶšêj, ƒ‡ Æd4‘››Ëþýû‘e‡Ã¥ƒ½» ƒÍfcöìÙ]n5jT‰ÙÙì»{íèÕ´Àd2ùGt„Çã9íÀ#..Ž[n¹…§Ÿ~šeK—aÐرcãÇïqŸ`ÞþýH:kW.cÈÅ£‰KLRûrŽ«ŒœÏEQ’Ðh4ÔUW³eÓFêkj¨««;í wذalÛ¶¢¢"233{õß}åUWòüóÏS\\̪U«¸çž{üÞªU«4hãÇÔä·ß~€ &ðú믫q·ÛŘ1cÈËËÃbµàp8.(‚YWWG}}=;¶ï )1‰ÈÈHuþŸO~>%î$IBEª««ùßÿþG]]Mç¡aøˆáðöÛ*3}½' 1µZ8vL­X&%ªAÁáÃðùȤöVj4jusäHÈÛ­Q«žj`RU¥š¹\pÛuj"Ë ˆ>çÙ•˜:íγ55ê\ÍÚZßkh»ïÝ‘$õy¦ïOrV FŠŠ‹hmmeóæÍØl6""":õXþÐX¿~=‚ pñÅŸÒ¶m—––²mÛ6êëë{u6€®äòÕ×_gÞ’!=¸Ÿÿcb"¸Ü(²ïÐjpbþ© ÈÏYs|<¦„D˜8‰ÖcGùæM¼¾ù·,¸.—O™rfÏ[»ÿ*dÞöê~'ŠÌHIá÷#†“~ÍÚÔÕûÇ. Ewò(v(’ˆÝL„Þ¼ðDIM(ÖÕ©†m§³Ïʲªz‰‰Qÿ¿-iè9ûûN€`ž!x<²sr0[,üñd÷îÝLœ8‹ÅBKK ózˆ72cÆ þö·¿a2š¸ãŽ;X¶l---¬Y³†™3g¢Õjq¹]|øá‡Ý¯W^y¥Û×o ¬ÏޝЦ¦¦žðµ]Nï¾û.;vìà³Ï>£ÿþ~Žõë×SQQqZ¯m2™{ÉXBCCÙ½{7 H’Ä!Cz,ý ±ÙÿœâC‡ÈÌéKtB¾ùæ›NÉ˶u,I‚(àhuøÇ¨8p€ýû÷“““ƒÑÇžp8|øŸÿ0ïʼnÿõ“""QÜ.”óH%{e@CTé×Π¡¨|OCB1rä÷~ ·,³­¢’÷îeñ¡C>‚#1+3“ßNô–ƒ64ªdIèl;q³-‘# u£Òjm;wá„2Û ½ª&ñøàâãã©©©9mÙ©p†§j5Z~þóŸ³páB xì±Ç˜9s¦ßïDèÛ·/<ðóæÍã·¿ý-[·n%99Y¡'ŠØí§g #ICáŽ;îà¹çž£¶¶–‹/¾˜Y³fõ8C.{½DÄÄpÍws¬ðÅù|³k ÕU(^™¨¸8Ò2³HÉÊ&$<œä´tdZÙ‘}=Š¢ ø–ãÇ4œù•äÏ ‰>r/ú¥(IT––RQVÊÑâ"Šòó9VTˆËåÁj#:1‘¸Œ4&ΜÉÒ7_ïÖ!­'Ÿùe—]ƳÏ>ËG}Äå—_Þ«íÎï¾ûn^xá¶lÙÂÊU+¹öškùàƒ(//';;›™7Ìô?6''‡·Þz‹‡~˜­[·2kÖ,²²²ÈÈÈ 77—+®¸‚aÆõÈ8ê|‚,ËXƒ¬\~Åå‚ÀÞo÷²}ûv°Z­¤§§“““Cll,111 Ði”CÛy {å³°ÞEß÷%NA¨®®¦¬¬ŒPPP@ee%f³™¸¸8úöíËСCÙðù†óV‰0ÿ¯ÿkÖý—-[ÆŠ•+ .^­¦¤¨„QQ .æÞ¯º¼¦¤Âœ¹PV¦ö……Ah¨ZÝìH¨<Èô‘ÖÚZµ )Ëj%3<\%“>3EÍlge«}™55êqmÄ3.N}}ATcQRå¹GËÔ*êÞ}ôåþ©S™zÅ~S»3~mõz æú믧©©‰ýû÷óõ×_ÓØØˆÍf#++‹ììlbbbˆŠŠBA9§ëXE4 Z­ÖO&QTçóÒÒRÿ:®­­%((ˆØØX†  AƒØµk×Yy_?V”——óÎÂ…ÄÇÇsý–Ï746ðîÂ…`³a óUÍÎpL ’¤EuqVä“¿Ž(‰’YÛœ“å¼7E妰0jjX²dÉ÷&˜Ÿ—•óVÞ~Þ(:¬Jb½^’#£øÃÀ\–vÆ{«Ž67ƒ×‹J”ÙtÂJdE«ÃO¸Ž'˜²¢Pã“ð¢Ñ`9× vQƒ¾3ñÕœ§¼ þû_Øø9üì:µ­¡»x_§oïÅí§òÀâÔëÆØ±çÌI6@0ÏY­–ìœ><÷Üs¼ôÒK\B^­/±¥(\Ÿ•Åýýû1ò,èí¬©á¨ËŠÂ˜Œ'iÿ|Û$©û*ç™,Øœöî…WæCGI³ ¨*”êj¨¨Pûí‡W/ÝÒ ^ëžx¶´¨mÕÕpãMªÄö%µóLÁh„× -fÐì9<ûâ‹Ä½ñãzGî@ÓÓ ùÃo!<Ìg Ü÷ l/Îçö_ü‚É×^KÖ3“±a=q¡a„…†’õçgùlëVL=ÈÔ¼h$Ÿ­ÿ €þýºÂW_}{“ZI U¥e_|ñnÛAE‘ܹ¼øâ‹<ðàè´:RSS{ôç›Íf¦OŸÎˆ‘#¸ÿþûÑétÄÅÅÇŠ+hjVËó&߀[QýïW¯Ów»\tñE|¶þ3$Q"))é;UÔEÁår!”H\J2öºzêêj°×Ôâp8h²7`¯o ¶¢‚m_¢È¸[[iijR%X.7j¦K§×ƒN¯÷Z§ËEss3ÎÖ´:&“£Å‚×ãFöÊþPÆ+ËTWUÒÜØ¨šJ ’N‹F«Ådµ"JA!¡Äfd’‚%(£Ñ„%(˜ ÐPlaሒ€ì•ñÊ^\.7¢øý7ÅÜÜ\n¿ývÞ~ûm'Nì•§›(ŠÜpà ,X°€Í›7³ð…“˜˜Ø­ñ‹F£!77—ÜÜ\íTWUS^^Îã?Ά xøÿ¦_ß~ôíÛ÷ÂK~) n— ¤!%%…´´4œN'µµµÔÖÖªkÖé䨱c=z”C‡¡( õõõ477c³Ùür?£ÑˆÕj=­ê¡V«¥©©‰&ß¹$UUU l6›ßiÚf³1fÌ, &“‰BCC±X,þ¾Q—ÓyV•ç™™ddf2iòdn*-¥ª²’ÊÊJöðu^{vìà@m-^§‚mªÔ5(Ú$•j¥Q–!(H%‰' °ÚöNEQiëê|Ù-Ú£éñ¨ãêÔ~©õ_³V‡¶±‹¦ß53ˆŒŠ¦ø`>‡vì`é²åŒ9[X(Q‘Qçd»\.´Z-ééédffât:©©©á«¯¾âÓO?eÏž=¤¦¥’‘žAxx8­­­Øívõð%^EQÄf³Ú…ài4EÁétb·ÛýëÜl6cµZ©««£¦FMø ‚à7Dóz½lß¾ÇÃÎ;)((`øðáLš4‰¡Ã†„Éhj_Ç.׳Ž{"¢"1&$ðê[oq×M72`@îy^Ôñ"}úÒA˲¥èSŸ>˜rr0&&!êùèõ¢(rÏ+œ‚€£ºš²WÿާàøT_εŸ¢0€°+¦b8¨="àõÒ¸s5¼|PAäšÍfêÓÓ‰¼~&¦¬l­Q% ¥¹™æCiÞ¿ÇÞoqM‘h0 ÿæ~Y|ðkŽcSu•Úçíõ‚ÙÂKC3-%™$«õ¬}ן—”RÝÚ ŠÂO"#NhÞ£(ŠßEV#„é Ý~¿ç>ìÛêëaÓÆ®÷GÇBV&\v¹ÚRa6w%—mc7oîþ5RS¡ÿè×Om{Åsbð ˜gn7rî@ÝðÚ߉×h (˜¬][`Ü8xñÈÊ'æÁËÿ„'þ&]7_‹yÑ ²æÞ 3~΀g o¼×M…[ïfüë¯Âü§|ù¨È¨“^ä‡Úå¶îÆŽè´:ÒÒÒHKK;í@§Ó‘œ”LrRr§Û‡ Ö-A?nüIŸ/ÈtÊÇô<8QeÌ^ß„I£ÅŒ)ÈŠ˜œÚ!aï ¹±‘f{#(joik‹;ZZðze_/M+u••¸].õ¢£‘Øôñ'ìèfƒ%‰çþ’ °p¿ÜVD’ûõÃj³©ÄSÑëõªÄJ£Áh6#J"F‹‹ÅŠÞhB”D¿ìKVd<7œ%•ÃðáÃÑô¼öÏ×Xºt)wÜqƒ êu§Ü°aØ0aëÖ­ãùçŸ÷Ë|cbb:=®¢¢‚þóŸìß¿Ÿ!C†0wî\RSSIMMõËúüÒ¶ Š¢ø•¢(ITT”¿ß±P¶´´°`Á6lØÐm"éæ›oöUÌåí dåÊ•Ý>Þl6óÌ3ÏÕj%((AÚå²ÜÉ8¬·Ë˜‹ó×—ÿ‡ôŸï§¬ŒHZIB”$ZZ›)+)åHQ1 '?ÐdƒN5“4Ôÿ§•D‡ ¾þL¯×Ìv‡f`àðL½úÒä¢ÓëÉ2”ª1—p¤°Íû÷±êŽ;IMMeòäÉ\zé¥ç|oÚ´‰U«VQPP@á¡BŽ=FJJ sæÌA§Óáñxhiiñ›\Õ××ÓØØØ©R¡Óé(**âã?>áLÍ›nº‰)S¦ø«!‹…µk×"IÃG ç©'Ÿ¢Á÷½mß¾––JJJ¸éæ›:‘J±7ŽA¸ 69µú”ѧ/!áa¼ôÏ×xð®»èw ÖiÁÁêŒÙ˜\UU¸Ž¥þÛ=hNô ‰hbbЧ¤`Š‹G²Ùü®(Š?°:̶•o}=¥/½ˆwï^‚n¾sR"Š^âtR¿m;Uá—`é?ÅíFÐji-/£úÃ%ˆZ-á>„6:Q–±ççÓøÎÛT-þ€ˆ™7 76â,)Áyäžê*Ü&‡À°áªB", JJO+á±¹²’ÿ<Ä•|]W«„ùŽ¿¥o_fef2<:ꬺµ:|½ž¸Õ æÄØXŒ')BT»Ôëˆè;ÿdEÁÓ!pN’?^¯ÚÎðм“ÁAª ¬É¤¶(O.=^xø‘ãZ:Úêz5™ÀlQ•+çP5 ˜gr±ÄDرðÎ[êm·Ü¦ÊŠžþ WÏ€œ¾pÏ-påÏàÊi ×\ wý&ù,篞 ÿ÷\t±oÆYg>q¤0o#œm^pX6_¬€ÐAÕž9ôx<´67#{½Íf–ÿûM¾ùz33fßË á#±Ø‚iªoàÛÛy÷ÿ½DCcÓn½I«n"“ ¾}¶œ,¨™OÚ{@=ÏY#“'Bî€\zè!víÚÅ /¼@cc#‹…»ï¾›Q£FõŠQ&V«•o¼‘uëÖQQQAhh(·ß~{—àͤJÔž|òI-ZÄÒ¥K‰¥¥¥…Õ«Uã”{¤Ä¤Íúo3FéÌWԪႠøâ‹/¸÷Þ{IOOG¯×SSSã—\~ùå§$˜‚ PWWÇW_}ENNW^y%ñññH’Dkk+ëÖ­cõêÕ>|˜!C† ŠâYwÃ>ÛØ¹}ß1ì²+°…†ùÏåžB@@%µ·Oè »ï07ïD5=~-ñÄ<´}£ó?q-„¨øDIÄåtb4›HÉÎ!!=>ƒS]QNÁ·»yóý˜ÿÊ+Œ7Žoº‰ÈÈȳúYF.\ÈË/¿Ì-·ÞÂwÞ‰ÙlV“wì`É’%äååqà 7tYûN§§ÓÙIòZWWÇŽ;ˆ‹‹ãª«®"%%I’p8|þùçþù¹C‡Åh4ú“ ¢(âõzyãõ7˜2e C† Áb±P]]ͪիxã7ˆ‹‹ãÊ«®¢õÄ5€3»·)ŠBÿa#ñº½¼ðÊ+<2g}Δ:Å×ErŠÚ—–v;n»wYÂ7»ZZ½2b|<Š^Æ‚>8QQЧ¦úUz[Íùùx÷î%ì—2þ'ƒv¦!-rG+ÕË–aÊÊF4™pWVR¿q#JE†I“QÜn\%%8ÊÊpWT€Ë…gÇÊN”°p•\ÄĨã‹Ìf•¸Øl¾>¿ž™å76òÉÑcl©¨à•Ul²«ªßüÈ~ ‰<= ?£b¢‰6ýV“íÕÕä77ƒ,IBµ[wØîH£÷8¢æVjÚ*’†àîÆ€œlˆÉ }úœ<¡¡(í-Ý=Gf։˯Šï?mÉ ùܪ&óLÂåV áÏonÏ>ÁƒB\‚:»fà xø)Õ`ÄHxìwêl€±ãÔE7ÔWõyqàs=g&Pz¨M7˜LH’†êò2>Y¼„é·ÝÎŒY·…$iðxÜäø÷_û—^s-™rQdÙwÎ+¸œ®^ýy±iÓ&¶mÛFrr2ÉÉÉÄÅÇõª*Òô«§“œ›Ë¸Aƒ¸è¢‹È<¸ËcLF?»îgDDDPÛÜLU]øœÿýŸÿIvjê5¢ä»âÀ,Z´ˆ{©S§b6›·ÛMVV:޵k×2nÜ8âããOJ2u:›6mbóæÍÌ›7 &`0üΉ‰‰lÚ´‰·Þz‹+Î’iOÒ3ÕsÓÜÜLxt4/¾˜ˆÈ¨³2“ø‡IFxüf4j¯·Ú2IDl iiÔMyI)yÛ·qÓM7Ê­³f1qÒ¤3þž$I¢¨¨ˆ÷Þ{Y³fqÍ5ׄ$Ix<úôéƒÁ``ñâÅ >œÔÔÔN •6SžŽ¿ýõ׬_¿žÙ³g3eÊŒ>·KEQHKKcçÎ,[¶Œk®¹Æ/¥íˆ´´4n¹åÌf³ÿ}$%%¡ÕhY¾|9C‡ %<,ü¬™SÉu|!¬YQè7l8‚(òû_âñ‡ '§Ï™ ÚŒRBBTóEQºp8ðº\xm[áÀ\aa´Äƪ.ž[¾Fð‘3Ñá@öùlÔ-þ€†?j'¢^/ri)rK ‡õ‚("# ×TƒÝNó±£4×Öªd1$D5ìºýðÁû(!aª‚.(ȧr0´¿ÿ{·;˜ÂÆF=¶VV‘W_O~m‡›šØÓÒ¢š÷x<êñ ã“’¹;#!QQ¤XONòÎ$6––QÜÚ ²Ìõ‰ âúáòíÅQìB€eEÁÙ– 8ᨓ³B2¿oRÕÛ{“²‚y6àÑáGöq›Úñ=CŽ“¯ø {ûLV4pø@…û¾å×}…øôt¿ùfk—ßp#ÿüýïÈÛµ‹Ì¹jåô<À–-[˜ÿê|ædéÒ¥„„„`2™ úáå]—…Õª9ÈÄ%O=ÈîâbB4´MMp÷Íðî2õ±ù`þ˽4ŸË®¼eã¼»·3%/ÉDÚËÏ£¹ùjv÷GQ)((Àn·3cÆ ÿ(P À¬V+—_~9ÿùÏ8xð '%˜.—‹!C‡ðú¯ƒV«õ÷®I’DZzƒŠŠŠ´Íb±œ±™šmò^ÙåÆãvŸ7çûwd¯Œì•1Ä&§“˜DJvµ&Rv¸ˆ7>XÌß^™Ï˜KÆrÇí·|Æ>碢"***¸öÚk‰ŽŽî´V- W^y%ï¼ó¤§§w"vmU®6¸ÝnÈo¼Add$:¯×ë—§¤¤`±X(..îvÍK’ÄåW\îïOöx<ˆ¢H||<£FâÅ_¤ ¿€ÈQ‘g…` ‚€Édêv~ö ½¾ÝLVè;d(¢(ð›çÿÄo}„̬¬3û¢׃Á¨ÊA+ñù8rD½¯ªJý1™`æ ( >~àß=’„<ë¶®#Ó$Iu^ð/¼}ûAn®ÚCýÉ'¦ö絑+Î7Ö«ר¿‡‡«¯é•O(¥tk$~m4óÎòxd…J— —¢Pèô‘I[=¶˜††ñ@J2Ó“’H±m4žÓÑEakE¹ê \õ$ª*(p8@C7&?Âq @0àƒV§çã%K½^~wÿ½è¦.úv¯¯×bù¿ßdú­³:Ir{+>ýôSV¬XÁÍ7ݬTXƒz×üóßá'ƒá³ðÓ!ðü?èÿí°lL = ·^ú<ý\+<þh~+|ø Iÿ–fXþ¡*]ùy¸ó>qÑz= ‚À¢E‹€öÙ~Ç£Õ'§Z¿~=S¦L9¡TÚåráv» #"<FƒÇã¡¡¡ºº:Ž9B~~>µmc1~@SZZØÐ¾×ôõ¸„EDOd\<‡òòX±à_”V”sõUW1‚©Õéü³¢~øán“^m¦>«W¯æª«®:áZõz½8l6aaaH’„×ëÅn·SWWÇÑ£G)(( ¨¨è„ïG’$RS:WIeYF§Ó‘’’‚ËåâóÏ?ç’qãºuy?É!«ÕÚÉ-þ\ ¦¦†%‹£‘¤î,Ïåþ% ”=F^ÞÆôíç_—‚}©üÇžùxêI222Î^ÖEÒ—›àÍ7`Ôh¸æZµÎáPÇû,zvîPMW,–Ο[Zz׊T›@u dgÃŽPxH½fÅÆµÓ–Ð2[ÔC›6ÂOÆ«­W§ M%@Iiig¾ÒÁ×befR"W%Ä3<2’ƒÛ¤:Ù\YÉžúF5Þ %Õ|êÊi‡Ø¬»¼_ ö ˜Ыòºšj ¾ùæ¤-ÎË;±Ãc/¶mÛXµj3fÌ`Ô¨Q½sfvø×bÛÞ\¦‘ü÷*Ù|ýCuhÛV[×§/,]ÙYZœ ‰¢F.³²´Ï¥ÅÚ~ª«µúG»0݉QuI¨mw.¢.6Âæ«Óá¯×skP m¼½iîéI¨›+®îz}½÷³÷;Aááȧ©á”Dˉ}¬ÊÊʘ5k=zô K—. “\ÚѨ1ü¸Xë÷ZZùÌ?´¦õ7÷‚ví!È–úzÿCÐï.Í« ðßÀÕ¬Õ¤‡8 Ù{teΜ9gL…6™L;vŒýû÷Ÿr}II ’$QRRÂ'Ÿ|ÂòåËiÒ¤ ýû÷' ___xê©§(,,¼¬çl4ë-µPQDIÂ`2b4›¯Š>‡Š,c©®>¥¾¤“Ðë °döOü6k‘!A èÛ—OÆŒÆÍÍ O[››ú†Ì͘1ww÷Ó¦Yëõz Ok«áááH:ÅÅÅL›¦)gGDDЯ_?‚ƒƒñõõ%(8ˆ×^}íŒQÌÓÎkm$àb X ¢€Ñh¬×ÙE¿ÿÎëÓ¦óŸþý°ÊVÏŸÏW®@@ ´°€çîèè1cˆ»±w=ü–¡) ¢Óép1k½‹í$³Y›6ˆCá¹W_峉‰ŠŽ®ï¡õŠMO…>·kïQv¹) IDAT#«U; M‡£S'˜ý:±±‰lÛ-„Å‹¡O­NS–¡¢vî„ïfÔ"Iõn?V™w++xxÈt’„ˆ‚€Q'atD±ÁDø`gV––+ËÜŠ÷YDyTUu´ómçVë½'ËVWk×W§;ëþœpL'œ¸¨°Z-ÜØ§/;Ö­Åj©Æ' ð¤^”‚(¢×­Ö‹’UŸX½z5111ôéÓ§A¨ÄžvriñÚÉ¥6«¤ÚÏŸ•Ë–1gÎÖ¬[Gl›6¼ü ´mÛ£M)¸&222X¹r%_~ù%YYYÜwß}ôë×ï”-~®F¨ªÊ½÷ÞˬY³PT…àÀ“ëREQt¤»F~ÿý÷SîËÞÆdݺu,_¾œ'žx‚^½záæææè©éêævÙíLZ·j;}ûêe!¡¡¬[²„Ù3f é \éÕ<:IâÎûdÀÐGñ D¶ju‰’N‡(Šl_·–¥sfç¦MÜsG?~þf5Âl6;Dr.dY¦OŸ>L:Y–ñóó;‰ÄÖ´Uww÷ÓÚªÁ`Àj±°yóf/^Ì!CèׯŸÃVEQÄÃãÑxÆg'??OOOÑêêj2Ò3$‰[n¹å¢‘L½NOLL ¨¿ñÀj%0<¬© ×2wÜÌXeQ’0MxxyQmWálcÙ©— 4iKßáOðä /ð¿O?%2²ÕÃEQK_-+ƒ¯þæïOA,)•+ o_M‘64 „_Í›Ž÷·­®†€òLÿö¢µ˜oU%ì"ö¬¬/lÎÎaOq‰vC}|iêíuÖˆ£Z;AàtWС,+N±,'Át‰³x¬.2d‹•f­cq÷ógãÊ•ÄĵÃäjF±‰ ‚@Æ‘#<ß½ yö9n»ï~GRCCJJ ëÖ­ãÎ;ï¼ljžõ‰â’b&OšÌ„ ^ý¤ýûùséRî¹ç¦L™Rk¸páBÞzë-vïÞMuµæ‰;v,“'OfĈ¼þÆëô†«ú™Q…6mÚ Š"ÿlø‡:Ríâ5Û¶mã½÷Þã¹çžãÆo<-ATUQ’øçŸe™6mÚàp²èt:ö%&RÙ&¥îîîDGG³óßÄ]`Sönݺ±cûö‘þ[8°?ŸÍ˜AqQ!þÁÁHF™Gò÷âE,úy6Í"#yèû™ñé'VßÑJõ$]–eZ¶l‰^¯gÆ D7ŠvبýßðÊ+¯ðŸÿü‡^½z1#C’$¶mÛFyy9­[·&((È1èt:’&QJ–e¶mÛÆÍ7ß\«Ggii)›7o&$$„˜˜˜‹f‚ àíí··7IIIõVcxb/WíݦÖZnLR¯_ŠjkÛиE >=‚a#F0}ÊÂÃÃëïGlvCy¹öwz£©i€Z­d£hX³6nÔ–Ýÿ´ju¼WmóÇÅvêûÚ\!cÒßéì)Ñæƒa¡øÔÁ‘Ubwî B¶wÂI0pâ´ð ð§|ã&´¾“gð”e+[¶¢g¿;˜;í\ ôü á¡d¥ã`âÞ~$Uååtî~ÓůQDd«—ó ˆÿþû/ÄÇÇ_ñ÷Þjµ²rÅJÞ~ûm5jÄäÉ“éÚµ+»wïfìØ±|ûí·ôë×»îº Ð„*¦NʶmÛ8p 'NÄßߟ¯¿þš1cÆ0~üxúôéCBBÂÕ ÝAªkä\QbccéÔ©S¦LAEn¾ùf\]]9zô(Û·ogÒ¤I4jÔˆøøx,Ë9Š,Óºuk–-[ÆÆ‰ŠŠÂÝݪª*vìØÁøñã)±Mœ***p©cZ’}B[_ÑOI’èÒ¥ ¯úû‚ ¦^¯¯7!›†///­dY%[×®å×o¾"#%…{E¿Ì%:* —‹šNïãíƒÕj­EÎì³G|ûí·èt:n½íV|¼}HKKcÏž=¼ÿþûxzzÒ¹sg¬VëmU–ebbbÐëõlÚ´‰˜˜¼¼¼¨ª®bï¿{ùàÃ8vì˜ÃVOÜ—¢(¬X±³ÙLûöíÑëõ¤§§³dÉ~ÿýwzè!¢££©ªQ&¡ÚÒ9EI¬·ç½M›6¬[·î"ŠØ\PUˆŠ‰á¾g_`ÈO1ó«©„……ÕïŒxVkGw¦ñ·æ˜§×C“&¥K[º&‚ÉÉáôõÕRn5âY^nÛÍYŽåeZ5¡£Vóy•¨YW( ›23¡RkOÒ/< ¿3d؉ó‘›sH‰p¶#sL'œ¸ x}ò Ûׯ£c÷H:õ­¦ª w1pïãO²}ýZ~øü3fù…}Æáèw9eÁb<ýý.ª‡Wàà®Ù´|9ã–,>§ï9z„uëÖÑ£GO ì»š<á„”–¢¢"~ýõWdY¦Q£FÜ|óÍèt:âãã¹ë®»X²d ›6m¢[·nøøø˜˜ÈÑ£Gèß¿?¡a¡ôú÷ïÏ'Ÿ|BJJ 7n$>>þŠ"˜‘‘‘øøøðï¿ÿ…Á`8kdßÕÕ•ádzqãF>ýôS&MšTëÚGDD0nÜ8L&ÓY£1V«•Ž;ËôéÓ™9sf­õ£Fbÿþýüúë¯äæåâééyÆÔ${?ÎC‡aµZéUOýu:<ò÷Ýw#FŒp¦GÕ€(Iع“y?þH·n`ô³ÏÒõ†®˜Mf$Iº$×ꦛnbúôéìÝ»—ÀÀ@ôz=ªªâb42dÈ6mÚÄÔ©Sùæ›o5¯ªªâááÁ§Ÿ~êH×v ”5ŸÛgY–iß¾=íãÛ3{ölæÎ‹$IZËEaäÈ‘dgg3kÖ,rss q¬·;)î½÷^ž}öÙã×NË|ðAGDÔnÇû÷‘@“ÆMêÍ0`ÀÞ}÷]† â´ã:¼¿#cšñàË/ñÐc1뛯 ½°*Ц»i#Øk˧PpµçëÖül·G½^û³“ÅÊ ­M‰··F,UE#¦^ÞPT¤)ÈJ5¦ò¢å•ÇÓkPßê ÅÂ#Gù3צ<îãKKo¤³Ø¹ªª$Û#À‚@ˆ«ù¤mª…œJíùôÑéðt18úx8/W¥a‹"óæÌeÇÒÅ|üâó¬^²Ku%²lAUdê+¦)Ë !ÁLù}!ã§ÏäÆ~w"Ù^ÿû.ßüßJ·j]ÏTUUPd+ªª°oÇ6¦¾óߎË÷3¦Ÿ³'öè‘£¤¦¦rã76è{š››Ëo¿ýÆÈ‘#1 H’„Édâ»ï¾ãرcŽÉ^AAƒÌ˜ÍfGtE¯×;êm’““’þìH… r¤ '''_Ö^ççtxíµ×¨®®f„ lß¾ŠŠ E9í¹¨ªJ“&M˜?>£GvD´½½½yë­·øàƒ®SªŸ,Ë„„„ðßÿþ——^z‰ÀÀ@›óg S§Nå–^·pß}÷áééÉ–Í[NyLªª"+2‹…¤ƒI|úé§lݺ•qãÆ±&î\¯Sxx8-[¶dñâÅÎÁ³"""xçÍ7Ù³s‹þøƒÛn» wt:Ý%#0¢(òÑGqøða>üðCöìÙCYy9Û¶¥Y³fÌž=›±cÇRœ—‹ÙlF¯×3vìXrÒÓ uØ»§»;Ú´AVdE!À߸-P‹ÅBÏn7ðù¤ÉŒ5 ½^Ïú¿ÿæ³I“øèãé}ë­|÷õ×$tèÀ¦M›¨¶XèÒ¡:N‡ŸŸOÊÔ©SéÚµ+âã)ÌÉaô˜1<þøã˜]]‘e™ªª*öîÝË„ ÈÌÌäÎ;﬷ë(Š"5ÂßߟիW;·.oRE%²I3†¼ò<:Œ´ô´3Žó‰ŠS¼› ÖþvïÒ`í=hÄóÅà÷?ŽG7¿üžylm j¡¼vý ¾~šh¢ØÄé‚!õäæW“Mhhß>­çfp°¬ªu2UåïôtŠKK@Qx'¦)ánuúnºãº DºÁT€rÛ;Í €A¸ÌÔHUµTh«Uû÷lµ·öþ¤VkÝ¿s àŒ`:qÕ",<œ_çÎeÉ’%|ÿÃ|ûΛÄ÷èIã6±ÄĶ#¬Ic-ú%Šˆ‚€(I‚¨9µOxgœíÙv1™èн; ݻç“+Ι“ÇÿÑZP)Zj­ª"ÛŒ¼Œ ’vïâàîÝlü¿å„ñÈ!<ò¿©çœªfµZ9tøÞÞÞõ[‡RÏ(--%>>žŒŒ Ìf3î61‹ÅÂСCñóócý†õ4mÒÔÑýL ž³gÏæ‘G!**Šùóç;Òß||}Û¸¸¸8Ò0?ýôSÆeˆÕ@`` _~ù%Ë–-câĉ¤¥¥GÇŽiÖ¬™£fÎ.¼cÿ×ÃÃ^½zÑ«W/ÇÄÞšz.Ê¨Š¢àííÍwÜÁwÜᨳï/00… :ö++2Ь8&ýÉÉÉìÚµ‹íÛ·c±Xxá…¸ÿþûë=’l4ùÜs¼2j½zõºâîóÅ‚Ñh¤wïÞ—ý8‚ƒƒùá‡øí·ßøðÃ9ZQÁúÂítX™ÌFUeÌ‹/"wô¡85›ûöÑ)*º6£ËÚ¬Û¸Qo@Ù¹ó›/ÐþçE9z„æ)Gáý±Ä~:•m{÷"?1„CŸÄüØp^yã |†ÞKüs¯±ÃË&Mš ÞÜM?ÎcsQ1m[µDêE—ÿÛËê5kèÔ¤ t‰bÈú#ĵmK‚§ÖÞx~Õ.دÙÌËo¿Câž=¸]xéÅ—0`@½Ûq`` >ø _|ñ]ºtqÚqÆ(•°ÆMòêhî¾ï~Λ‡ß)DàLf3bcùnöϧ'™²AAß~û zÝ!!ÙLKÓZ”X,йÓñHeÇN°k,] ]»j}3­VHM… ë5’ùÐà ‰y0š Y3øs9ÌŸ½{kÑMY†àÇÀÏ7Ö~ãLc¶ÕŠge!õ"\ÏØ˜•Íß™YÚ9šLÜŽguŽ”–bÆ ÜÕ­Ÿ¥ÅEšÂðï¿Af&4j]®‡ví´tçSM@ÓÒ 1~™«-kÝÚ¶ƒ–-µ´j'Át‰‹ƒÛn»Ûn»òòr,\Àúõøæ×7H=–BÓ6q„F7Æ?4„ˆf1†GâæáŽ`óè ¢€(JŸdo(­ªÚd\”NV¯•¾yò„[‘eÇ>E9>aW´h}òm©¬$=%…ä}{ÉÏÊ"íÐ!ïÙÑh¤C‡Üй3Œyí‚jGRSSIÜ›H—.]ô=œ3w²,óçŸ:"­ªª²ÿ~Z´hAqq1¿ýú£FÂÛÛ›¡C‡òÍ7ßPZZJee%F£EQȲ÷«9¤_©d½{÷¦wïÞ¤¦¦²téR~ÿýw&Mš„ŸŸ111„……FtT´Vf›øJÒ ¶o{JbÝÒ#íHTí{vòhìÄRUURSSIMMåÈ‘#>|˜ÔÔT"""èÝ»7?þ8íÛ·¿h×GEZµjÉ7ÞȤI“xá…®¨tèkýû÷§ÿþ$>ÌÌeËÙ§ –'"ßЄgóQO:­N'ïú ¶|ðÛ¹Q>u†òr²£¢ÙÔç^â¾›¸_'ãÓ÷È»ë~BŒîÕ±ìz}±ÿMË/Á{o³­ï=D½õ2m?þê€[XûÂXbïîJÂâ­T]Å_ï}Gçëýè´:“¢N¾løèw®oïEÂò$w‹äó΃øpPÚ¼û GúÆ5ì ^=š–-[^¼ NG‡X½z5Ó§OgøðáN;®TUÅÍÍO/222NI0Íf3wÞ~;ÿ›=›Ý+W@B‚V#©×s¼RÕRR»uƒ£)°s;lÛR{G<ÿ‚FíèÐAëu¹h¡Ö³¶× †ÈHt‚–&=o‚ùÀ–͵¿£×ÃjDõ¤úKÛ±VWCu5ú¿ÿ¦›¿wÚ4 ¤@UY”’ÂîÂPUžhÖŒp:ßۃŶYQ ¨ÁŠüZ[šo¿ÑÈ¢Ñf³F2ž ë×ÁÀ{ :ºFOuRŽÂøqÚ2³Y›[8»wƒ«+¼òªæà¸ ÂsN‚éÄ5³ÙÌ {1èÞA€ýÚ¸q#»wïâðád–}3ÃRUQ_P®žžÍîøG„"J:L®®…GØúÛɸº¹…ÁÅX'U7E•ÉNK#?'A”««ÉIK£° A)-,$ëh ª"“ŸEUi)bb´Ú ¨Hî×—øøx¼½½ëíšäææ’™™I›¸6 úÞ=:ôQú(ÕÕÕ9r„ÄÄD2³2ùgÃ?TWW3mÚ4F…››={ödÆŒìØ±ƒ3f0`À>Ì÷ßÖèæÕŒ°°0†ÎðáÃØ·okÖ¬a×®],\°ÄÄD\Œ.9RîTUÅd2…¢(èõzÂÂÂpuu=k:Yyy9éééTVV"IéééŽtäôôt***(,,¤  €ðˆpš7oN§NxväHZµj‰Ùd¾tãƒÉÌSO=Åã?N¯^½hݺµsrÞ@ݨ¯?õ<õt‹eÛ¤9´Þ¾—Ì®|Ö«514ÁçÕWñ ¿ Ó;ï‰"+˜}|H nL‡aw2ç¹ñ4öô$iØ„ôtVŽEüëÏ‘q벂Hó]÷dÛÃ/‘˜œÌ’á¯3¢{õ|Œ¬Ù³ù¶Ûc|Õ-„^=ÉåU¼-a¬¹« £úþ‡^íÛ³ÓÕL»ñ¯µ¯˜ñ—èÚøùùñàCòîߥ[·n4kÖÌiÇgšÖ‹ù™üïí7ùìÉgt„GD°vþ|Þ;–Ÿ§~Iz»öм¹Ö_Y’4òˆ EšžxB›üoÙ;ÿ…Êr¸¥´i£‘Ãѧ¯•ܺ¶oÓöÙófhÝ ¼}Ž“KÍ;&3Üt“ÖâdÕJ-Ú pC7°jǤؼ{VËñÊ¢"ع“‡2|øp^9²Aߣ¬Š –¦¦i¤X§£oxç@÷Ù H·†Á´ZÚõëaÿ~͡й3¸{h÷0?¦| æÃ#Cµú[{jÝü?4»{xˆå4¡´TÛ×Ü9°l)<:천•“`:qÍB¯×ÓµkWºvízÒºcÇŽ‘——Gqq1öï§²²’Ò’lßLQQ :ŽÂ‚Ž&'×R<ã"H„„…Š"+è š4nLë–-Q… à`š5k†N§#""·K0–”–PUUUÿ zõíÁT¶oß΢E‹xë­·$ OOÏZ×Èžf0¸ýöÛyþùçùî»ïxê©§xê©§$‰ èÚµk­¥+­¶²>Ѽysš7o^kYyy9IIIX­VÖ¯_ ³yóft:UUU$%%Qqªz¡`4iÒ¤ &“ ‹ÅB‹-hÒ¤ **Æ ÃÍÍððpüýýÄõà³Ï>㥗^âå—_¦åE ¹iéiˆ‚Hppð·­¬¬$/?“Ñ„ÏÙ'cÙYŽVÁAÁL.¬V+•••”••a•­¸\0»šÏéº(ŠBFf†6éÐé ¬¿ ºz @‚cŸB.šØ×áÇ©ªªbãÆH’D^n.sþý—¹íoÅúûïü˜œ\»UŽ¢`quEšõ#⌙Úg÷`Üø‘˜F0 KL‡|}Ã7ð•хȈH¼¼¼ø¥æñÙš—-[´äÕW_eÂûxþùçiÖ´ÙEíKz¥B²ÒÓùîÝÿ2éƒ÷ë]öôðàã?äÙgžaÚW_±hî*L&Rƒ‚)oÖLã± õÁ€pϽ6²§hÑGY9Ý€ -Zjdl-I[ôé#..Z*dûx-‚¥(Zú­Õ••Ç ¥Õ ÇŽaNK#"'7‹…A÷ßÏðéßâUë‹òîWU¶fg³57€wï 8dkcDÂNQƒ©Ö˜£î #I"äÀÞ=š£á†4¢([µ?//-"ýþØ›4RyììÝ > :iΫU‹dvë¦9Ö­…¼<Í./±cÝI0pâTžÊðpGMb·nÝ®ÊsT…ììlL&î úXéÚµ+•••´hÑ‚qãÆÑ:¶5þŽI]Mxyy1qâDúôéÃܹs9xð O?ó4á¼ú꫸ººb°)Åyyy9¢šjt"{Í!€¿¿ÿ5£Êh6›‰‹ÓÚu\ mkÎçÙâû<ùÄ“Üu×]ô»£¾>¾õ&*VgçÆúõë¹é¦›6l_ýõY÷ß>ž´4ÄáQ#•¬¤¤ÄQ¿\TTT°råJV­ZÅgŸ}æxþ}ôQî¾ûn"##ëD`óóóçÝ¢E öîÝ{Ñ§'íÚµ sçÎל·iÓ†çF>ǘÑc8p ½{÷ÆÇǧÎ퀮zr)‰d¤¤òÃÄñ|0î¿´nÕꜾ͸÷ÞcÜ{ï±/q/+W®â÷yóÈÏÎÆêêJ–‡'žžZ$ÒÍM# zýñÖ#š·¥Fºã9B–§=*6ZQPQ‰¡ Ÿ¨’bÜJKËËiÔº5½úöáºn¸¨iÚõÌŠ æ&'k¤Ù``XÓÆ„ŸC««ªB™Áô’$L§PÕµ* 6Á%IÂë’×.ÛÄŸáº.6rY#¥Õ*CX8øøÁÑ#Ю­æ\ÈÎÖî}X¨¶½Ý®E³+{nFøø¢É9 ¦N8q‘QQQANvÎY£( Ó¦Msôsü믿Ç\^qr#kUU©¬¬¤ªªŠøøxºwïîX·páB–/_ΰaÃhÖ´ ©š®\¹’={öPPXàhÖ^QQAµE“.3fŒS0ãBTdsæÌaüøñŒøÏî½÷^âããÑét˜L&|}}ÏÛ$IB–å:EmkŠv™Íu‹Þ|ËÍ$NvühQÈÔÔTfÍšÅ믿^§ýX,,XÀ Aƒ0 ´iÓ³ÙLvv6/¿ü2 ,àÿû_R0k:g¼xÄäjBÛ¶mùúë¯yÿý÷Y¶l  ]»vH’„——žžž×dú¬$I¤9œO>fÂ;oӦͅ•ˆ4oÑ’æ-ZòÔÓOzìÛ¶laÛŽ¤¦§““|˜¢¬,¬ªJ•«+Š ª*ùF…â¹GËDÀ[¶àY]è- H..„…áéãC«ÝIèÐf11ø5 ‘s…¢ªlËÎf¦m<Mì9žËá¢bñˆ>sMQŠlY §oúYHMÈI–µÈ¤ 5k&UMØÉh€¬ÌãdÒ–Ú›ÛÉ‚‚ E2eY«ïm{Éï_½LûäìZĵœjçÄ•Y–±Z­õ™¹˜Ø²e‹£5†}Ò­( û÷í?%q^¾|9«V­B§Ó1nÜ8\\\¨¨¨`ß¾}€– iŸ°ûûû;ÒÇöïÛO×뻢×ëINN¦²BKŸkܸ±³¯Ü5&L˜À?þÈo¼ÁÁƒ‰¥wïÞŒ3攑ó†€Ógœ´lñâżòÊ+>|¸Î3==¥K—ðÖ[o1jÔ(t:))) <˜Õ«Wóå—_òÎ;ï4Øká„Önéƒ>`æÌ™¼ôÒKÊèÑ£0`Àÿ‚M…Z”QUUE=ƒÓFâØ¡Ãü:å3Þóª#[£>NXx8wôïÒ1ùÐ!, ‚(rôȲ33Ïi¢“t‡„ŽÕjÅÇ××ÑêjBFE³ÑÒ}FjÒ蜢—)ee6V.íîvFÒ~V‹Hêõ¶Ö5'؃(:¢°$&j×C”`ù2ûËêT¦&ò°v ô¾U‹_©SELF#•••×ÖdLë'qÎ-"œpâr¢ªªŠ’’’+"¢ðä“O²iÓ&, 3fÌ gÏž¤¦¥òÝŒïðññ!??ßñ’¶ÊV¶nÝʤI“ ¤uëÖÄÅűgÏ~úé'$Iâºë®sœwtt4;vdË–-Ìš5‹ÆãççÇÌ™3IOO§iӦįÆ: æ5†â’b¶nÙÊš5khÛ¶->ø ¾¾¾˜Íf<ˆ‡‡þþþ§}~ªªªÈÍË%7'“É„ŸŸ_j(Ïô~-Ý433“ªª*üýý  pônØ›¸—ªJ­.<..Ž]»wqçwZÚèöíÛ1 ´:KJ N§ãÆo¤ªªŠ^½z9Þo„†j éþùg^|ñÅZ³¼¢œ¼Ü<òòòpwwÇ?Àßùn¼ŒÈÏÏgóæÍlܸ‘Î;Ó¥K<==éԩәɥ¢ ;!J¯×ëË­V+Å%d¥¦R]UÝ&cÍf<¼¼N©»§Óé8š”Ä‚iSyýå/ª2õ)ɸ ШIÇçf11N= ,ŠÂÚô ~H> ÀýÑÑÄJélŽ2[ý%‚@”»[­èCQ4±¦ëºh"?M›j5“vÅ_«vîÔÒŸmçh¤´²òô"“öåÃe¹‡õ:ê›ÍfÚÆÅ1ý·?ŽKÚ_å‘ʪ**ŠŠˆŽŽvŽ N\1e­ý•Á¼ûî»Y¾|9ëÖ¯cÔ¨QŽÉN§Nxíµ×xùå—ÉÍÍ%-Mk®>lø0222˜?>C‡uì'..Ž^x=z8–™L&F…,Ë,_¾œ^½z9öýõ×óöÛoá$˜×òòòH|ß· IDATøá‡X¿~=<ò½{÷&##ƒ… òÝwß±zõjüüüxôÑG8p qmãj‘¼‚‚/^̼yóøí·ßðòòbÈ!<ûì³çéb±Xذa?üðS¦L´LƒæÖ[o%À6ùºµ÷­Ž¾®¥¥¥´këØGQQíÛ·Ç`0œUœ,44”!C†0dÈæB ÕÕ™())qdäääð믿2oÞ<þüóO¢¢¢xä‘G8p Ó¨.ÒÓÓ™5k»wïfèСµÆ½³Ú›ª²}Ý:ªm Êòr¶¬]ƒ”kJÐ~¾¾¬Xó¿——kí·.#A ¼¬ ¿°pz ¼Ÿ€€Z‘LNOò¾D–ÍœÁ+Ï>K‡œÒ€q¸¨˜Ï÷ìÕ”ÞÀƒf>wÁµ#vY ¨Âd’ `.qï9Û·o§¨¨ˆââbLnn.K–,aÉ’%|ñÅ :£ÑˆŸŸŸƒ`‚&ôÍ7ßh“'IbРA”N÷ï¿ÿ’’’ÀàÁƒñ´¥aUUU1qâD>üðCDQ¤oß¾˜L&Ö®]ëHMwâÒ!33“o¿ýNÇ_|qΪäCy„ÍóæðÀ “t >œÕ34;D‘ç^z‰» (  A8ßQ -åKW¬bWT$=ûÝ…¢h)zžƒ‰{YñÓ,ž{òq:vêè4ŒJYfaÊQÖ¦Iâ¦:×¾’Kj´(q==ÁTlqKO„‡Ë¥ŽøÙú§¶j7v‡Í›4q;ÂÃaØp˜ù¦k¯›¶·®9Ýóg_~™œ?õž·Ϋ#G2cö,JKï¤q‹xúø`­®>c^üÅÊu:U!õèQvoX‡œvŒgx!'œ8iH³5¹…+CäÁl2Ó·o_úöí{Òº~øá¤e^^^<ðÀ<ðÀuÛ¿ÙL=ÎÉËïÄÕ…ŠŠ fÏžM^^ãÇk Ë+ÊY¼x1üñ;väó)SHèЬì,î¿ï~V¬XÁôéÓiÔ¨þþþ9r„iÓ¦ðØcñî»ï€ÅbaìØ±çüŒÚ‘““äɓI°E^ÒÓÓyðÁY¹r%³fÍ¢OŸ>'9CdEæë¯¿fÆŒȲŒŸŸß)Ÿ•º"é`'NdÇŽ¸ººr÷Ýw;Ti™ÛmúD ¾ï¾sÞ)G’tìB á½^ÏÝ»Y3oÿö(×]wÓ@ò¼Øž“Ë[»mJÓfWnÚßóT?ÞWRbg[„¹žÚÉbUUò,VÛVZó’C–Ád‚þýµ~–Û¶imFZ·Öþ¼¼4BÙ²¥áTˆˆÐj2-­~óÄ+iF$8¸N½Ú<Á4è ôîÝ[ë4ù36‹!¦}{"›4ÃË×E–‘e+Wšޤ“D EUI;z„É{Ø¿e+ÑÞ¼øêkŽô$'œp '®<(ŠÂ_ýÅêÕ«ùþûï˳³³ù믿hÖ¬ñ¶º­À€@î»ï>7nLhh¨£÷ä¢E‹ÈÉÉà™ÿ<ãx7èõz^|ñEÞ{ï½Zi¥•••¬]»ö¤ãñð¯iïÞ½»ƒ\„„„8Ԕׯ_OiÒ§NŒž–••±aÆ“¶ 8IYóСC¼ùƛ̞=€§Ÿ~š®7tuãܹsçõì³Ï:D´¼½½yñÅ™:uªÓÈ.ªªªX°`GŽqþkæÜ««kÙ¸^¯gÿ®]løãWž|èAºtéâ4ŽÌòr¦îÝKY~ ££ó+?ST•-……ÚQ ì4L«,s¬ºúô‘ÀKAî1Z{‘æ-´ãQduçæj)²Í[hÑNU…ë»j³¬LSŒ­Å/U°“ëøÇ£W2Á´£óu×ñ^@³¾ÿž ¿Ìaod4¡Þ¨ Á‘˜\]QdEQPd¹ÁNQ‘D AÔ .=%…ì´T2ÓÒH;°Cy)·÷¼‰{îX«öƉ«ªªRTXˆ¢ªäçSm± UÕÕc±Z8eóã³Ù– àîá«É„ªªH:îîM&ô}½7vw‰óAQQŠ¢››‹,˨ªJiY¥%%ç”§¢b2šðððÐúª AAˆ¢èXÖžõ”c)L:• &Ô:¦ì¬l.\he 5× >œáÇ×Úׂ (*ÒjÔ|}|k­;•Új^~·ÜrËIË Äk£_s|>U›’Z„ñ<æFééé§üíÁƒóÓO?Õ"Ù~ø¡ƒ\>öØcŒ1¢VÿÜŸ~úÉA0O3ºq£ Eaa!²,“››«em¨ ¥%¥”••³›MfÜ=ÜYAAA‚àHnN’={ö°`ÁÆwM_:½ŽÝ[·±eÑ|† D—믿úd²LiYYíh• Ôê…ÛQ)Ë| ‰™ûöNGS_†´hûy¶„:VV¦õBMf‚ÎPÃ)‚CÜçÒÓAS‰MN†°0ðõKõñuz=dfB~>DFÚ¢•êqõØÜ\ ª‘ kÊËÓ¶õð¸,guQ¥Ý7nÌ[o¿MRRsæüÌ¡µ«9°m žA!„„àëˆw€?ÁÁ¸¨¨¨¶fç*ê%!ž¢$"¢ jdÒöÿܬ,r22(ÌË!/'›Ìä#PR„Y¹ùú®ÜqÇNiö«”–”™™IYy9……”P\\BVNªª’—GUµQÔf~IY­(Ä9 %¢€»«+žF# *:IÂËÃW³ £‹ þþèô:\ÝÜñðôÄÝÍ ?¼¼¼ëÜ Ï 'ê‹ÅB~A>……¤g¤S\TLuu5åååddd ( ‚Y\\LIIÉ9‘BUU1™Lxzz"IŠ¢†N§Ã××OOOt:žžžàãヷ÷¥µu«Õʼ_æÑ¶m[Z·n}aï”z"Ì'’ŸKÙ«æo—––2}útf̘ŸŸƒ楗^"<<ü¼Ï¥Þ'¦••PPX@zZ:¥¥¥TWWSZZJVVV«•L[;EQ(..¦´´ô¼ìØÛÛÛq>ááá‚@@@îîîèõz<½< ÄËÓ ___\Î3µï|PZZÊÂ… éܹ3M›6½fÇ5½NǾÿ²mÉ"ºûn®ïÚõŠi+..¦ºªŠÜœª-²ss­VªN$’@Vn.9ÈŠ¢&UEEšEEa8‘¤ f›cD’DBƒ‚E_??\\\0Ÿc; &ǪÊúŒL^Ù±S[àbddóº½øÆìP K@ÝúgJè/µÓS’4ò8cºVƒÙ«¸ºjÍêj(,€6@Pˆ–+é@¶)ÏúøÀê¿! @û%-56- Ö¬Õ¶ Ô¶¿š¦M›6e̘בe™½{÷šrŒ#GSHZ³’£™äጛ»;!‘øããïGHd4f77Ž¿\UU#¡çõ´yEA°JúÑ#äæ›™IFJ E¤=ŠÉ #" €¨ÐP:6nLXÇ¢¢£¯Ê^C×233Ù¼y{ö&räðaJJË :t®nè]Œ¸yùàíï(‰èõ.x5mŽ ŠDyz¢3PƒÁ€»‡'’îü”’E¥´¤˜ÊŠ A@–eÊJK©®ªÂjµ\RŠªVP”LIaÕ•åXË+Pª*qÑë §eó´iÓæ‚'ÃN\{صk›7ofÇŽØdÏ%„»›;¸¹¹¡ÓéðòòBš4i‚(jŽ8³ÙŒ««ë9‘A¨¬¬¤´´Å6ñÉÏÏGQJJJÈËË£²²’üü|ÊËË©¶¥¹¹ººÒ¢E âããIHH¸hjǪªräÈæÌ™ÃŸþyÒz???ºwïΪU«´ã³T;²V¦Ï˜ÎÖ-[ gÈ!që­·²yófŠŠŠÈÏÏ',,ìø0;ë¤ýûxû°xñâ“–R^V~Qm!88ø´¿ šÒôÇÌ»ï¾K³f͘0a=oêyÊ,‹AƒñÁ Ë2ùùùŽô]€ŒŒŒz?ö-[¶°uëVþý÷_Š‹‹½^››¸ºº¢ÓéðññAEš7o®9“EWWWL¶ ’s±ãŠŠ JKKßËËËCUU ÈÊÊ¢¢¢‚‚‚‡«ªŠ»»;­Zµ"!!víÛ]´Œ'EQصk6l`îܹ×äØ&’NÇöM›h•šÊKO?yÅ´9|ð »þý—“’(ÌÉ¡4/—¬Ê*ª€ E¥ H–$A@Ñé‘Ý\á„ö?¢‹ :—Z©ž‚¢PõÏÆ“kð¬Vô¶ôQÐÜjE‚Eƒ(`6còô$<"‚¶­[Ó²u+.ÎüW6dfñÈê5P^F#oµiÍc­Z^Ð~Wddh ­’ÈMu RUÜt:úè#dYfÊ”)Œ=Ú!òóÙgŸÕËydee±xÉbþþûo,Õ\]] ¡eË–¸¹¹i}7ýýqwwÇàbµ~íØît9¥ÕÕÕP_@ii)%%%äææ²gÏþùçA !!R¯v\ZVÊßÿM·nÝÎY1öêa˜)‡S\RÊÃ/>O“='"6®_ÏÒ•+I?˜Ä±²rÒ‘C’D¥Ñˆì€ÑlFÔë1yx IA¨€¤Ó#™Í Ó!Ö˜‹(6’tªërbLN‘eªmÙZ( G òQ€½ÅÅX­Vm]~AiéD­]KàîN£æÍyð¾û­á8»`r]\ÌÈ ÿp¬°D‘›ƒx¢eK Iü'7×AÆâ|Î<QÐ]ò² ›ŠlË–pרºÖ­³:Щ3ÄÇk$Ôžþj'¦íÚBõý°wÔ¬§ïv#4o11—…\^r‚Y½ÈÈ("#£³ÝûWRRByy9%ÅÅÈV+Õ–j%U¥ªºšÃ»vžSºƒ¢¨øûú¡¥ôÆ·ÇÇÛQqswÇh4âî·7&“É¡ŠçÄ•ßþøƒ9?þ„‹¯/áÍ›_@ ^>¾xûø ÓëiS¨*ªªRUUÙ ŽÝh4b2k/[IQJ ÉÏÏ£ ?Œc©ì?x€gžý;]ÇžyÚYÃéD-ü1ÿ~™û ’N¢E󄆆âëëK@@F£Q›lÛjÓTE=kÄó…‚rF' §§'^^^[·ÊVrsrÉÍË%3#“¤¤$FÍÍ·ÜÌÐG†Ö+Á\´ho¾ùæ)×›L&úöíËš5kX°`Ï<ó ±±±¤¦¦²bÅ Z·nÍСCñóó ::šWF½ÂÓO?ÍÔ©SIMMÅÛÛ›‚‚‚s.«¨¯´¾gŸ}–É“'“››Ë3Ï<Ã!CèØñÌ­JJJX±bùùù¤¤¤0mÚ4fÍšu’swܸqѪU+ÆŽËk¯½Æ„ HLLtÌú ¾;v²jýz¢‚‚6|8âã/ÌùYUÅsþakfˆ"Q^ÞLìÔ‘à ,‘U•…E¶s‰õõ=í¶VYA®¨[æe‘„QM¶cÄ4ÓRf­Vpw×j2]]µhì‰Gçê ×_±±Ð£§Ýó!!ZoMA¼\gtùæI„Ó`À`0œ¶X¾¤¤P±Ze ÎIÏ@UU-%Æf°nnn BX‰‹‹qï½Çþ”ºÜ=ð¨(‚CÂp1™UQ¨®ªj°Ç_Óã^óåàê‡Q›Ð¦]<¹ÙÙ¤¦eëÚµ<=b3¾þÆyó`æÌ™¬X¹‚„„š4iBHHˆÖfIQP…êêêqœvr`'|öɺŸ¿´hÞ‚6qmH:ÄÆ6RZRʈ#êå·­V+»w尿MöDˆ¢HLL ÞŸ@çΙ>}:ß~û-ÑÑѼùæ›Ü~ûí´k×ÎñNÑëõÜÿýFæÍ›Çüùóqww硇â¹çžcÖ¬Y¥Ù³›ƒ@ØÞŸü^´¶›\[–vaµžxò òóó™5k_|ñíÚµ;+Á<|ø03gÎ --üñ”Û½üòËáââ“O>‰»»;óæÍã×_%<<œ‡~˜{Ÿþ€üüüs¾GS¦LaûöítéÒ…FŒ$JÈŠŒª¨ ËŽeµ–3E¦EËÄÅűÿ~þïÏÿ#"<¢ÞÚfTTT’’BóͯÙñÎÇLJ»ï¾ƒ¡a /îÝ·Ï>ý”…EdGDà„·¯^^ ª¢‘HÔlú¢P„­ÕSPPÁųѓ¯ˆ"‚l¥¢°µ¬LIaëÛoóè]wqÿ Axœ‡©R–yuÓf9¢íßÕÏ®ëL;?ß >µyù`ÕÚt4õòÂU§;ÃeP5‚§ª˜DãåâŠ:½–k/ÇSUÑÖî;zCíïØ—+—.7,‚y6ÔŒ*:SV8-ZÄ?ýÌ›Ÿ}NL«Ö¨¶ µ¥LDêƒxʲŒ øB£&Myîá˜2e Ï<óŒÓ®q$''óÝwßѯ_?zöìé •{o¬Ž'ë>>>téÒ½AÏ7_Cdd$wÜqÇÿFRR¡¡¡g¬ñE‘–-ZÆ€(,,ÄËË‹   SF%ÝÜܸ÷Þ{éÞ½;cÆŒÁÕÕ•ÀÀ@üüüظq#Š¢•~œ íÛ·w´±GHkâÃ?äõ×_´È)h*¶6åD»PRL3 ?óÌ3H’T'žèèh~üñÇZ$÷Tˆˆ<Þ{ÓËË‹¡C‡rûí·“§§'ÁÁÁxxx8Îã\Å›–/_ÎÌ™3yüñÇ騱#ªª"˲ƒP_1vl;^_?_ºvÃjµòùçŸãïïÁÑ6Y–9tèaaa×´ª½$I VOQÆÇ|/oÜn¾™??ADU-yY©ÀiׯAµh© ¸xyäã‹Ò¨12ÒymöτѻW/tç öZ&˼ôÏF¾Ù¿_‹Ò\ø¶c½Âë'õvcN¶-]X ›ÿ™~dEJmÌÔ‹âåéƒYÓ•pÎ’çó'Át‰óÂáÇ9š´¹ÚŠ$JXkDH.6A@§×c°©*²LeEÅEù}­–$I‡(Id¥¦²ÿ~§8Aii)û÷ï§OŸ>ˆ’èˆÜŸ«-ëõzG ¢U¶R]U}IMOœ@ªªJbb"YYYõòüdffTÀÃÝæu“ü7DDDQkùÙ"‡5áååEçÎO»¾yó“£Uqqq§¼n¡!¡„†„Öù·=<<èP£ïf]a6›‰ŽŽv^;ÎtgBFFÐ1%é´„Wt:CµÕjµRUUUï¶jψE‘²²²óÚ¿$I(ªBbb"eåe|L²,“““C@ ³wCÅ?üÀ¢¥KñœøF_TY>eÔðdï–€ Óƒ]TÐbE­á$$IkEa®ÄjÕëéìRD z;»ÒÈ㙾S‹)«¨ŠÁ`  e+’þïÿøèÓOiÕªQQQuºŠÂ«˜—rTS<Õëy«M,÷6i|Áu—vìÌ/pDhã}Ï”²(Ú5ÀÅ‹$&w-ÂI0¸*¡×éèÔ«7Ÿ¾û±íãéuGb;Ä£X¬²ÕуµÞÉ%š7lÛêUÌüò ¬V+qñ4ü <<=êe²#¢$¡“$ô..¤¥eÙo¿±î¯åD4kæŒð;¡=z=íÚµãûï¿çСCÜqÇ„ÛêÐ-K"@¬X±‚9sçàbpáºë®ã®»îrÔn^lˆ¢ˆ$IH’Dnn.‹/fÙ²eÄÇÇ×›çææ:ÕÁ0Ìf3:ubÊ”)ìÙ³‡¾}ûŒª¨¶±\±Í»­¬_¿ž™ßÏD%:tèÀ Aƒ0›Íõj«...<÷Üs0yÒdôuˆÚˆ’ˆ^§G233Y¸p!+W®¤U«V].|Bk•­àï$˜ •••¨ŠBÞ_6p ¢Á€lµÔJS=å½--¥pýzJׯCÐpïÜï®7 ØD¬Ê““·üO¬é©¸DEãÑ¡®-Z"ꤓÆxE¡¤„²C‡Èûý7PUŒ1ÍqÅܤ)ªÉˆX‡÷‚ I..”:‡a§®A¿Ìòr_³–Gjiœ’ŽÑqqŒl‹Y’êízoÈÎTEÚž¡þRQUr««ì“+$ÉY>ç$˜N8q¨ŠBPhŒÉöuk˜üîÛ”•VÐõ¦ž´íÜ™æ­cñ D±ÊÈŠF6UE9ïÞ–Ž‰„NÇšeKùìÝwH¶E7®\Áðç_<¯IŽ(I‚€$IŽÉvYY)öìâß­[X³|9…ùù´¹®3C^ÅÚeK‘tÎÇÚ -ÒâããC×®]ÉÈÈà•W^!00Î;Ó¹sg"##E-²iµZ‹]Ù Ë2Ë—/gòäÉŽº¹ôôt† Beeý aÙ[HØm´:ÅmÛ¶±nÝ:éÔ©ƒf×®]õVGŸ••åT`nàð÷÷§wïÞ$%%1räH¢££éÔ©×]w¡¡ZTváÂ…|òÉ'¤§§°sçN†~Ößs¶SQàŸþ¡°°ð”NJ»ët:‡HSFF[·neíÚµ$''ÓµkWú÷ï_oí[Y!77×iÇ &½!¾éé~û-\;vÂ÷ÆîH^^šˆO g‰ì(ååä/]JÉÜ9Z?D Xñ½ívÔÊJ Ö¯#ú·š P¾s'å‹áÒ£'`¨épäü|Ò>ú99Yk”íÜIÙ¢…èbZúì³è<Ër»;[fÞó™Ïëónÿ­¬âþ/6²£¥E—¢Ä3ãÇqe¿ü^m â•e¶…+ä "Ñ^ðªJ›/”:%ˆ3™ucÕ¦ŽÎÑ&¬’•Å9é³Îtj÷³mÃg¼²ðYöWVb±Ú)2˜Â¢"Ò³²IÍÈ"à@mB¢heìÕð}·J³‘‹ú!B /<þe{ö°à_o’žÝW+Ê&Š‘×Š’t HU· ±¢ FZ7 ª+*¨©*§ª´Œâ];Ù³c' 55$¤¥Ò§ÓgÍ&#'‡3–ظ8>ÿt¥~àuzˆÌ´´4†ÎĉÙ³gÛ¶mãí·ß& 2`ÀúöíËСCÉÉÉ!>>>b§^¯—'Ÿ|EQxã_oƒ(ŠÇÃ)‚(  ¢"‰R¤Âf\.ååå¼ùæ›<õÔSôëׯ×KŸ>}ˆ‰‰Áf³QXXH0Äd2‘žžNllì1Ûq‡ËEEy9¢(FZù¼úê«øý~JKKؽ{7‚(’œBvv6YYYL›6ÄÄDŒF#6› ³ÙŒÔ‹¡€ºÿ&$ª&ê!#uÚ4‚t”•ÑñüB¤úzHMEJNÅ>p€¶ßGÔС(>ÁæfÚ7oFLI!媫°$&iOAÀšžzó\ê\FÇÀ¨~?Þ’Ü•¨õõÐÞŽ’–™Y0i2df‚Å¢ý–â’ÃÎ;dU寻÷ðÌÎ]ìloתºª*ƘXþ;a<“ÒÓ°ž€saKsK¤bÒÔ£ä%U•Žð¢©$c6évª Lc¿ðj㟀ÍáÀªHœ”–F^á ‚r8/3(ÓÖÒBMY)²¢Ð´?•UUx½^Vü÷=º<A¤Ëí¦©¾.~¥* öèh$É@}hUzæø1Úª*žvˆ€ àŒ'6>TƒÉDbZ:ѱ±Œ&úŒ#&›#ŠŒ¾¹˜LFDIÒr.FŒF£êS¥U×V#“ Ã!Ë2ƒèèèH¿¾>}úhMµýþˆG~×®]=zB¶µµqã7¢( ’$a±Xz´Ç8áÂ@¢("Ëräýcbb(,,$::‹ÅÂøñã믿‹Å‚$Iš‡î CD(Š¢Û¸>–#Ërľ, ×_=•••‘E¼¯¿þйï¹ç***¨®®Æëõ²dÉ$I"ÐÜÜLgg'¢(FlïPx½^f³™””L&Sd‘£®®I’"¡Ü#GŽdúôéŒ9²‡‡½¨a;ÖÛ¤ÖF `³k·èhèß‚Ad¿÷ïÇÿüB‰Á-[(žýcUEµÙ씯w!¤¥Ñ¶zMÏ÷d¯ZÞ}y9ªÅ‚¯ª ÚÛ 65ÓðöÛøÊ˵(õûQBó–º—þÎxHK…aâ$M‹"H’æ…¥¿GTUŒâ±¹ÔåbIy/îÙËˆ°DQ¸8¿;š › é«ëê´ÖÀð¸#çêËŠB[(üØ I8Ž£®Ž.0utzŽíjX‰˜,ÌߨæLJ"+T6^VdT9"+G& ª ªr _Ób·sÝ´)Ô–—G«)/‹üÉö](‘þ~"‚©Q”Q ‹•¤H¾Ã7'Ñ’tÄ~™:ºÀÔÑ9®1þ`©& B_Œá‡8¢ïDxqù'MFfOOK]-omÚ‚ÙbÀj·ù2£F ëè|õîH’IJeËðù|\tÑE$$$ðÖ[oáóù"­ Õû´\Êšš–/_NŸ>}˜?>yyyH’D—·‹V|ÄsÏ=ǪU«(,,ìá¡Tuƒ×9N|>‹/FE.¸à‚Á K—.ïÁßíÐvÆÄ°³´\ó**‘•pU«#G0'?›Á€á{ïw´´RëõjŸíˆ"'æÈm¥U¥+  ôhA8áâ÷tBÓÐÑ9V!z¤›¢b¶Z±:ˆ!ï¤ÅnÇbÓnGÚ}^­s’aµZ±Z­‘I¹Íf‹äA†=G‡º‰¢ÈÎ;Ù¼y3çŸ>EEE8, qÎ8.½ôRrrrx÷Ýwé U1ÔéI0dÉ’%Øív&L˜Àºuëzͺuë˜0av»¥K—FýôS†ÊðáÃ#¶êt:¹è¢‹4h+V¬ ½½½Çöa®¾újfΜIjJ*V«•´Ô4fϞ͕W^ɲeËØ³gÝ#¢s¼‚æu “ j[,šW1- †„ÖfM\Mš×ÒhÔ¶ijwh|5À`<°bm0h·nE|´ôÐâËqq ‹LM\*Ú„ÆbåÇýúññŒ¸gÏbî€þD›L'\\¬®¯ƒPtÙÕŽ’Vá“eÊB×"›(¥Ÿ¯½†¾'uttttz…@ À´iÓ˜:ujÄËž”+Š‚Õj=!NN©‹²ÁÀ°aÃ;v,Ÿ|ò .dܸq=öçÂ… Y·nÓ¦McàÀšç¸¶† þßlÙ²¥G«—矞gŸ}–¨¨(vïÞMZZš¾“CB>++‹¿þõ¯ а­†Åáá¼ë'MìaϪªb±X>|8¯½ö;vì ??_ßÙ:½‡¢†ò6 àõ×à‹0l¨&>}>M\¾ö*ÔÕ~gbxHk+?=ÿ| ÒÓI¶Xèƒ9Tÿ»Îš_½¿^ºªÊéǶKC÷Qq½Ð—VG˜:::::Ç3·Qü¡‚ß$\Ð$Ü~DVd:Ý´¶¶ÒÜÜLii)[·n¥¸¸Xß‘G!%%…Y³fñÉ'ŸPVVÆŽ;ÐBdO¸Àéßéá’´ÔÈXôýio•ÏBù—‚À”´TÄ£y0ƒ2[=L¢€É /€êSGGGGç;C’$ª««¹òÊ+ùüôéÓ™?>>Ÿºº:>üðCÞxã ººº"…ŒFãA„tÆb±0yòd Y¿~=Ë—/gРAѲ~ýz ÄèÑ£1µÃO?ý4Rìfûömäåæb·Û2d §Õþööv.¼ðÂC>?aÂþüç?ÓÕÕ…Ûífýúõ,X°€¶¶¶ÈB‰ÑhÔ…¡Îɉ¢@T4\|1ôí +–C}=LžãÆAF¦&0ó ´|KU=n{¸\÷ðãß2ñdÈôÙÜÜBϪJV|±&Ó1}ïð5)Êh$9”¢£ LïJd¤Ã6sw:¢HKK <ò›7ofÚ´iL™2…””œN'©©©\wÝuìÞ½[ß™G!99™Ë.»Œùóç³råJ®ºê*V®\‰,Ë\}õÕ=Â]ï¿ÿ~ª««Ùºu+×_w=O?õ4×^{-ƒføðáØíöHÕÞÓQk« €V$è½÷Þã¹çžcêÔ©L:•´´4bccIMMå—¿üå!s`Ìó•#>~¨ø€èèhœN'^¯—¯¿þš7ß|“®®.Ünw$TñX„ex¥¾¾UU#…TNeœN''Nä…^`Íš5FÆÓéìñÚ––š[šÈÌÈ$++‹sÏ=—¹?›KtT4²,ó‡?ü›o¾ù'²E¡¶¶–”””CÚñ‘l:Ü’ä›+ŠBrr2Æ cÓ¦M|ñÅÄÇÇãóû(Þ[ÌÛo¿Mcc#Y–úœ²²2/^̘1c°X,ÔÕÕ±zõjV®\ÉÏ~ö3ÒÓÓ#öÞÝŽƒÁ ¤¤¤­V§IÉ)X~ÚdD!Ô/ò[ *ÓχUŸÂgŸANŽæ©lo‡={`å'ðã+5Q šèŠO€±ã´|M“ FÒò3=X·6l€ /‚¸xðûŽq"‚·‹˜¤Äï½Ï{••´ZxlVÖ1-Ü(À~oèü%b­zY]`êè…¢!EL4‘ÿ¾°QçÏ 3§/ŽX'1ÎX…ì(ÁéóúNØï {dA@DܸÛÚhn¨ç³÷ß%79‰™3gê ƒÓé䬳Ïbñ¿—ŸGœ3.Ò3°{OÀ#q<…NdYfðàÁœþù|øá‡¬Zµ*ò\rr2wß}7<úè£TTT™™yض%b¨Ì}ø;´´´PUUźuë˜ûl–/_N  ;;›øøøH¨¯¢(DÅÇEì´{‡(IØ¢¢hoiFD F#»Wk ²,ž™É¬«®â©ÇçöÛo'3'‡.‡ ÏÇí·ßNl|<÷þò—”——“——GBj*rÈ pÇ=÷pë7òâ‹/0zòdÊvíâæ›oæ’K.Áëõö°c¯×Kkk+eeelܸ‘{ï½—””}°: 8wút¦.ZÄëÅÅЯŸV¤'"4Rx'ØÍ£.ð3y2¸=ðÏס»—<* Î9F ׄd8O8Ô¶)+…5«à“lc·Ã Á0u*u¼@µ×5Õµ¿–‹¯œMü1.žTà“šZ­‡§ªrIŸ,LÇáTÂó5ƒD¬É¬ª.0utŽÎ¯æÍãóÏ?ç‰Geƒ$‘Ú¯€~EÃˆŠ‰ÅêpàˆŽÂɵQùÆ„[U9^gª(Œ™6U›Ð|Ë>AÐþ IPÛ9H§ÛC§»ƒN—›®®.Jvî fçvÚjkùɵ×òãÙ³õ¯áŠË¯  _O?ý46l`àÀdggƒÃá &&&Rø¥»í‡CPÇŒClLìa‹™<R‰åÆodÜøq¬X¾‚¦æ&ÆŽËøñã#mÛ¶ÑÔÔ„¢( †¶šˆ+ŠBGG.— —ËEuu5Û·oàÖ[oeêÔ©§Í1LNJæÇW^IùþýlÛ¸‘™3g’‘}Ðë.¹äx饗Xºr%÷ßä¹ógÎDðû¹úê«ûàú믧°°§Ÿ~šuëÖQXXHff&QQQØ£¢˜çäòÙ³©*+#69 ws Šªb†£²1.žÎövÒœ±dƒlŒ‹ÃÓÒJ–ÁÀíçKVN¯½þ:_3‡Ê::èW81±±4WTÐàraŒŽf8*ûœNFƒ1:š‰ Ľù&¯¿ò .¯üö7¼ºy }SSqÄ9ikhÄåráñxhoo§ªª*’C{çwž‹$:˜7>Ö?þ‘×֮ś ññš t8´ ¿ªðl*¡Ê¯……žq@(‚–g —^y¹°u‹–C™›ÆAZzH¼*=eXjªÖÂdß>Íû©­bÁYgkùšVë7¶´÷Í[)ËÐé–Ø¿ŸAåÌýñ™rÆß«³ÊãaG[›.l¶0>9ù˜ üøe™ú®.mß‹q݃ٛª^ Eç4à‹ øpùrÖ­YƒÁbÑœ„3-´>}±ÇÄhMF,vv‡Q”0[-˜ÌæÐÄ;2ÜFÄèafØXA¤Ëí>ìë¢Q=0Œ# + Þ®.‚~?]¼žNü^]xÚ;¨¯­¦¥º WC=®¦F)âœsÎáìsÎ9î ‘ååå<õÔSŒ?žË.»L7’SœÏ?ÿœ×^{ââbl6‰‰‰ddd‹Õj%** «ÕŠÙlÆd6a1[°Ùm¨ŠJg8g‡c˃Áé‹ ‘eY–›Í†,Ëx<:;; ƒx<Ü7Þ./n·›ÊÊJšššp»ÝÄÅÅ1{ölÎ;ï¼^Ý'Š¢ðÀ`³Ù¸çž{NžƒÕÚ ÕU0xˆöwW'[ßy‡§>ú˜_ÿö·äxÜÚ¤3^¹e3 f3_íØÁƒÄÏž^@}c#E£FñÛéçá-„åÈ[]µj¯½öUUU8âSSùñâLyw#eIÉôm¨çÚý˜Ífbº:ù×?c|b!{E‰~[6Xü:Êoâ3O'É7ÐëF÷þ£É„ø¿C3‘ª)ÓH `Þ˜çÜHEÑ0²;=xï¼ËÝ¿¥¬`}}^|7]‰ù±…”ÄÅ‘×ÔDÝ —òú2v "Ù üiå§4ìßOSS.—‹ÌÌLf͚ŴiÓzuŸtttðàƒ’››ËM7ݤv'9Ï<ó kV¬`·,³Õf‡ÄDˆ‰Ñ<‰‹&,Ãí2ÌMØ…ÃV¿ue´Â>‚ ½N‘{z4¿‰(j·P{#TUónªÝ=©‚öÿÎN­NW—vkkƒ¦&¦t´“›œÌÍ·ÞʨQ£¾÷ýù§­[¹ï«ÍàíbfAþ1y"Žc˜5û|üjã—<¿e vg;†+rszåºò›ùóù¿-[ᢋŽ|F»ƒÅŒÅé$:>Éh$*6Ž(g,’dÀfµE<œ› “ÙÌÿR›!âq¹BYÐÙ© ˶æ&¼7®–|í­<^ü &rrs9gÌh† BÑ!Š|èèޱcÇ2vìXü~?[·neíÚµlܸ‘ŽŽ v»‡ÃÅb!::šØØX FV‹5"­V+F£ñ¸ò85ï»LgggD`úý~ü~?n·›––ü~?tvv0 6Œ3f0bĈcÎÕ°è%ŠªËyiáB-Äí™' p(üä:ؽ< SÏ…+ç0Âç…‡þÀ³7ýΘ›¾‚?Üåö{aâäü®™2e S¦L¡³³“Í›7³zõj9ï:FüêúÞ3Ÿ=7Íàý³¯Ån6åt²qôT¦œ7€¢GÿÅò_Þ@ÝÜyÎùûû(µ™Y”ÕîgÜïç°&ñÿ|…‰@ý¿þΚÿw™óïaìo¦êÁ{Y}Û¯ÉúɹLzy[~z+ïŽaŒàŒ¿ÈšŸœË›—þœ{fO§ÿŸžgß³)&… Æq饗2bÄbbbôH‡[n¹…[n¹…u«WóÁŠ”îÜIcU%»T¨1šÀbÖ¼›&“v3µ{³Y»WU­ØOØãÖ½­ˆ hBáˆ\ͦß^¯&4}>íÞãöv >r,U%Þb¡`È~rÍ5dœ$9ð^YfYeµVY¸6/Ë1ë È2µ]Z‹’I$Ö¬‡Èöª^ÕwÎéFNN999\Ô-Wq×®]´47S\\Lɾ}ø]Ôîùšöö%£PT0Xmˆ3*ß¾o’* t¸PU‘!àÇh4Ÿ”HLL C Ò·o_’’’è?`ÀiÕÃNçÄa2™5jTdåYUUªªªØ¼e3¥ûJilldÿþýìÚµ UU#¡Oa¯ä· ýWæT%"8UUÅn·“žžNBBS§NeРAôéÓëéÞìzHÌ{<ƒ†iÆ«®ƒçŸ²¸ã^xw ¼ù¬[? z¿ï½¯ÿnœ£…ͽ±Þ|®¹ü”˜al6&L`„ ´ƒpí¬ûÓkä—”ÐÔÜLeY)ÛÝö¾œ[<ÊŸ¦^Jü–­¼?â Lo½@—ÕJI‹ €µ•Usüóù,gÛ7m¦sÌYüfÞ-ükØ4j?úˆÖs®ãoÜÇãS®Æ½bkΚäŸáß7=@šÙÌ—w?Dæ;oûÁ§¼«7:G`üäÉŒŸ¬“%ÅÅlÙ¼‰’Ò2ê÷ï§©ºªâš…:E¥^’†Å£$iO£‘ãÎåñûµ±!„Ãï'YQH0H$ & ÖlÆ™‘NfF…ýû3xèÐÃö•ý>ÙØØÄ¶ŽÍK˘¤D Çx ( %7±¢D¢"« LÞfàÀLœ4é ç‚Á eeeˆ¢ˆ(ŠÔÖÖÒØÐñÆ|¢££É •°WU…¨¨è“rðÖ9õ¬¬,²²²zÎëõR]] s­¬¬¤½½ý¸D¦ªª˜Ífrrr°X,(ŠBBB±±±úÎ?ùý`î°ì}¸ó—ÚckWÕ×B^>Üu<8µøã“ð›{à¥74/Æ ¯ÀM×À«okÛþýÍSzw9 xe1×⹇²º:^º|^ª*«p¹\;†îg+ PwÞ¹È U(9ïÆeì y¹¹´˜LüV–IMIÁápðT÷¼òJâu Ö9òòóÉËÏïñXcc#­ÍÍÔÕí§¡¡ÚiLfæ IDATºzêëë‘$ Ÿ×K{SŠ«ë¸?K2›I(èhÅÔÒRSÉHK%>!‘Ôô4œÎ¸LuãwÊÊhñzA–¹/?»áØâýŠÂ×-ýÃi2’b³ê†¨ Lïð$1Èï6ð÷íÛWß):§‹…¼¼¼ÈßúN9A¸ÝnÖ®] @||¼æa0P»…™{kÏ~=?²PU]EÅù3 ~ò ùùdffbxþï‡ü¬pÁ™êêjÌf3¹¹¹¤¦¦ž²QÑv;E¹¹‘¿vß§::')‰‰‰$&&Ò¯}g‚F¯—Ok÷kù©3³³°G±!YV´Ð`A Z2 {0u©£££££s*±ÿ~¦OŸÀ9çœÃ‡~xLÛµ´´°dÉþýï³lÙ2.ºè"Î;ï<.¿ürâââ"¯UU•­[·òÎ;ïðßÿþ—/¿ü€+¯¼’³Î:‹sÏ=—ÔÔTý`èèèœô,.-å+— T•þ)©äDG#GT™_–ÁÛ¢ˆÝd<¦Ö&:ÇŽ¾7uttttt¾gº‡ÛÛíöcÚÆãñ0þ|~úÓŸ"o¾ù&ï¼ó6›¹sçrÕUWáåZ©ªJqq13gÎdþüù <˜÷ߟW^y…;wríµ×2þ|<~0tttNjj:;y­xø´ðØÇ‡=®"=²ªRávi¹›F#©Q}§ö2ºSGGGGGçȦM›xéûÜpÃ Ì .ËÊÊbÅŠ|ðÁlÞ¼™‰'¢( ëׯ§¼¼œ””n»í6† †,Ë4·4sÇÏï`Æ ”””PTT¤ï\“–kjXÛÞ²LAJ*ý¸hù—n–¯.HµÚôÚËèL“ˆp.ä‡~ȼyó¸ûî»Y¶l@ ÇëÞ~ûm*Ê+zäÊ4›M›0…«+ŠBYY6»~ýùè_ åxy<jkkõ ££sÒÒ)˼_V] rË€þÇÝbįÈTx<‘¶.É6]`êSGGGGG禼¼œgžy†+®¸‚‡~˜'žx‚Ûn» ÐÒÒy]ii)r¨‰w÷=ÝÛÉ,X°UU‘e™W^}“Ñi#B¤ÏhYY+W®Ô€ŽŽÎIËû•¼ÝЊ1±LKK=æÞ—a‚²BYȃ™d0ÜË­±Eáj–þ=¢ôÒûè!²::::::';wîdÇŽ¼õÖ[ØívV­ZŃ>Èþð²²²¸øâ‹1 œy晬]»–––ºº´+{,Ã索*ªªRº¯4"*»·š ‹SY–©©©Ñ€ŽÎ)JSc#ííí¨¨¨ŠJEY---Gl¹¦ª*&£‘´ôtQPÈé5ñ]á‘e—”ô¸!ä¦ÜÒŽãîIîWö…òÓã$‰´^ö`&%&BW×ÒF ½TìH˜::::::'ä¶Ûo‹´Ó0`^¯—x€Õ«W3yòd’’’˜4iIII´´´ðöÛoSTT„(Š,]º”†††cþ<•Ú¥ãôèèèœ<ø|>ÊJKÙ»{7_—–RQYI[SžÆFTYÆB­})RDfF: :l(6½Ú™N/Q^QÎúuëÙ¾};ûöí£¸¸£ÑˆÃáÀápàŒsb ¤¤¤€¢(˜L&¦œ1‡ÝÑÃóuÐEÎÎNêêêðù|‚€ªªlÚ´ À·Ë íôx<¤¥¥‘——ǰaÃ9r$ýû÷?m½i¢(²7ÝÃaM&7Ýtýû÷ç­·Þâ•W^aРAüýïgÏž=lÙ²å Â@‡;VaüǸ`v2±wï^>[÷»v¤„òòrÌ3ÑQÑØívœN'ƒääd’’’P‹Å™gž‰Íf;ª»=nêö×`0Ⱥuë™NO'­­­tuuÑÙÙIvv6ùùù >œ#FŸŸ¯4:½ŠÛÕÁo¾Å{ï¾KuSíIÉ´&&œ<cT’Á€d6c4špHªÙtè ¿ªsΨ©§ž›# * ²Ï‡ª(|^ý~êü~²Œ\UÅšÝ{xkÍbZ[IÍÎæg?ý)gžsÎqÿîÿ”—óz]½–{éŒãü¬,lßÂ{ ÐÜÕ¥µ81™ˆ±Zz9_Òa·³äå—qåU0óG“ ~ßÉiPttÀ?ÿÉÂ;ï`ÜØq=R(t©£s:»:ù`é¬ÿ|_mÜHSC=IÙ}HÉÊ$>1…ÑçžOrz:QÑ1ˆ’„$JHFC$?Él2#†WúTQ’0›ÍGÌ]ø&ùýµ _hUQðù¼¨Š–3ðûQYQèìtS_UKå¾b*¶ngñß§¦¬‹ÅB¿‚&M˜ÀÎ =M÷þ襥¥,]º”µkײ{÷nl6999$''3jÔ(.»ì2Œ&#FƒI’´Õf!dû¡ Ž ˜L&$I:êÄ\Qü~$ ËÛª–ï"÷µµµÔÔÔðÉ'Ÿ°hÑ"Z[[INNfÊ”)œ}öÙŒ5ê´9N‡Sº?Ö}FGG3cÆ &NœÈïÿ{, IIIŒ?ž@ ÀÝwß(Š n¿ývž~úéÛ´··Z{“p«““™]»vñÁ°nÝ:Š‹‹q:ôéÓ‡””Î8ã ²³³E£Q³c£Ñx‹¢ˆÉdBÅ£Ú±,ËøúQU54ü«x½šç3 FìØçóQSSCmm-ï½÷Ï<ó .—‹ÌÌL&OžÌyçÇàÁƒõHç[Îaºxö™gøÇk¯ÑÖ§/ƒcÊÎF2‰2[0X,ˆ’ˆ²Óîf-ÈÊÿ\¼Eùæ›vC y V+áõ*QSÓ~Z½^šººØSYÉÖÇ'ãøÙÝwsù1Ž7û:\¼º·B¹—@?g,ßF…Jw¨ß¯$‘|¢ÅA`Øà!¬yþy¦Þt3Áàÿ] y2å“Ä›)Š`4Áî¯á¿ÿå‰oàÊË.Ãb±ôŽnÕOYS–/çÅE‹Ø±mý‡ ï€ÌºóNÒÓ³LFŒFF£“É„!4!QC"²Çpª<°~s¢vÔóÙ`ÀòpkhpºMi´ILn^#Æ'( øüÈÍÍT––²~çv¾ð76×_-sæÌé•U'S¥K—òÔSOár¹8p ÇçŠ+®Àf³a2›0›Ì‘s ;ªzèÉD¸*é±ðÍ÷ _¼zˆ(233ñûý‘›Ï磺ºš;w2oÞ<ººº¸á†¸æškNùãÕÑÑËå"***òXcc#^x!}úö ¾¾ž²²2>ýôSn¼ñFúöí há¡•••€–ÏTáÿû|>ILL$ ÒÔÔ@rr2'í~Y¼x1 ,@–e ™8q"×\s f³‹Å‚ÑhÄh2a2{̃{ÃŽÍß¡ë^…·;Ù}úðûñù}üº¼]T”Wðõ×_sÛm·!sçÎåòË/×&c¦ª¦†¹óæñ…ׇtãM˜b,V$£á@ú¤ª¢ÈÊ÷ó»ŸcjXªF#“ C(§OMNÁ7p »ZZøÅ c×_òøCõí_Ù³‡eµ5 ( ÊÈdFß>ßÚ{éU¶·¶Fz`fõB¾ááDæø±cùúÿðç… yæwÁEÃè1š×P‘5oìwŠ …à @}=¬XÁ`TžXðãÇŒéÕ9]`ꜲÔ×Õqûwâò™|Þt®¹wf‹£ÉŒÉl ’Ç1áø¶ƒ°z˜ùPS É`ÀD--15•¼‚L<ól‚sý”•”°ü½wyáå—yâ‘G3fŒ~ðuhjj⡇¢´´”‹/¾XËñµÙ"b2¶žl+'àbw¤É}[—$l66›-ò½RSS)**ÂçóQYYÉòåË#UÓÒÒNÙã¶qãFžþyî¾ûnAà³Ï>ãÙçž`âĉ‘œÕ-[¶0oÞ½ox8DQ$/'‡‡óæ\z)üå/,þÅ]0v  yù`BûH=‚SQAÔDeG|õlßF¬ßÏ]×^ËW_MBbb¯§¤èSç”eÎ5×0õ’+5e26« c7OʉšLŸ˜±Yí!NAÐVéÍf†ÄÆÒ¿p0å¥Åüô湬\±<Ò×Nçôæá‡Æd2q×]wáp8"p‘©ÃMš¿o[ßw111äåå±víZ~ýë_óØcwJ·ø„xvïÞMrr2&“ ·ÛM{{;×_=³fÍÂjѼg&L`Ò¤IlÚ´‰»îº‹‡zUUill$ðä“ORп ´>%PTTÄ#<Â=÷ÜÃõ×_Ï}÷ÝG  ®®ŽœÜ~ý›_÷JõÀÞDQî¹÷òró˜­--üçí·A¢£Q<žCFTQP…PŠ„ªyGÐ"°ñ€TEó²v›Ë ìjŠ‹ùüóÏ+0뻺xzûjÚZA–¹uèPƧ¥"ýÑZ~Ef{{;F9ßÁ˜ÅÈ‘#Yôì³<öÀüëí·ùÇâÅìZø  Ù} ;[»™Lßð«G®òQ³BÏYU…ÖV(/‡’(+Gìhã² .`ÖïÏøq㈎ŽîµX]`êœ<ñøãìØ½›_NšDL¬UQNºIH¯LbTQ±Úm C´X¸ÿþûyá…t#8ÍÙ¼y3ï¿ÿ>¿øÅ/HHHÀï÷ÿ Ïðwèèh²³³ùÛßþÆ«¯¾Êí·ß~êœÏÝbÌO>Aff&‹-B’$~÷»ßqã7’šš Ët8üö·¿eÒ¤IÜzë­ÔÔÔ0|øpn½õV¦M›ÆÐ¡C1ˆ«ÕÊ-·Þ°aÃxå•WøÇ?þALL ?þ8\pyyyÇ•Sþ]ð׿þ•Õ«V3}útbcc‘eùaÇ¢$‚z ¢»;N²³³ùË_þBQQ#FŒÐ,Ã"I±©©ðá‡T>ùiW\Î8DE9qBSPƒA¼µ5t|ú)îå"$%aŸ:ÄiÓ0DE,4E¹µOI Í_„ÒÚŠa`!öÑ£‰:cBb䥾ÊJª>Glb"™™™‡ü ž`W÷îeÁÎ]d'%ó“~ýHøQ@VØÚ¦ Ì(ƒ‘tûwE Šb¤€Þ·ÝÊm7ßLKK Ÿ¬\É'Ÿ}ÆgDÉΖ†h± ¤¤‚Å)){P¥ž?*ûöiÐÚðz¡º“ÍÆ¸Q£8wÚT&Œϰ¡C1˜Bé`']`꜒Øä Ÿ¾ø<×Ý~'&£ñÈ'çAXñî;”íÝÃӦꠃÅbAQÖ­[Gn^.qθŒ×þpg—ËÅW_}Egg'III§ÔñÊÍÉT‡%“Ñį~õ+î»ï¾È$S’¤ƒ`\\3gÎä‚ .ˆ´‚é~û&6«iÓ¦1eÊžþyAÀ`0²ríÉ@||<>Ÿ5«×ž–NTTÔImÇ¢(R[[ËÅ_̨Q£x饗ðx<=žoiiaÓ¦MÄÆÆb³é!²:G[}R­V˜0 ŸÃAÙ=¿D0ijÎÂVÐÿØÚŒ¯¸ôûi]÷­Ïü%ÒÇQ-/ÇýòKtmü‚ÄÏÆÞ¯@ËçSUDIÄ×ÜLõF  øåFÚ¿ÜH»$‘òàCêêhùøcÔö6¸`ÁÊJå‹TT•÷ÊÊøÅ† *`¶ðçQ#–˜Àÿ:JÉŠ¢ âR¾‡sÐd4a2š°Ùl\9{6?ž5 EUñuu±gï^\.Ûvl§¥¹…­ÅÅ”}½KûÞ‡ÁjµrÞ„  ÆŒ¾«ÕJA¿~ÄÅÅ!¯ ºÀÔÑ9YfêE?Â'Ëüø¬©œ=cg]x}sóµI”("ÀI9¡:úµæ@HXSc=Ÿ¯ü”7ÿñ2}òó9kæ0Ÿ pã'Œ§¶¶–{ï¹—1cÆpá…"'³ýwìììä“O>áã?FQ¦M›vÊ…Š¢xP¨’Á`Àp “GQ*Bs´×‡«¬þ8ûœ³Ù»w/wÝu“'OfÆŒØívAˆÜN6Û ª‚^Ìööv>úè#V¯^ @QQÑiÛŠGçx'5 ج0e мcu¯½uû‘ ‰R„½OLéá± T·!²¸~¬ç‰,ãÚº…Ö§ŸB,èOÊÍ7cINA0›Q:;©zòqÿù:†›çbÍÈ@ *’–÷—¢ã˜ù#œçœŠ‚§¢‚¶V lÚDÝý÷Á¸qpöÙп?tvByÅAß)˼ºg7­ý,â¡ýÛØÑÌÈÎúV=/{ü4UeO{‡&šÍfœV+ß÷è^<0›LŒ9€3Î8£Ç˜rä5á ÿßã¢.0uNMTQ˜uó-\tÕ–/Y̯o½™áã&P8t‡%=+[ËQ@¥Èj¹‚l¯Bƒ‰¢ª¨²¬52FK’oknf÷Îíìܲ™¯Ö}FÃþýŒš|wÿñr äµgèÇ^§ÛB‹©.¼téRæÌ™CFFãÇgÔ¨QôéÓç€÷*´èö’}aˆá `8ì1\ÕSQêëëùòË/ùòË/Ù±cÇgΜ9ÄÅÅñŸÿüç” y×9¼X ‚Ì;—ŽŽ–-[Æ¥—^J¿~ý˜0a#FŽ 3#QµIš B<Ía³Ý¿_ø|QEk7Ôzú|>JJJXµj_|ñûöícäÈ‘Üpà H’ÄÚµku;Ö9Þ3l6=Z«Fêê@..¦mÇNÚ–}55šŠ”Õ)>£Í†¥OE¬¹¹CùÛG ÁN›6!¤¤róÍXÓ3PeÕïG0™H¼ô2êŸ^@û ¶·£t•–á^¶¡o_<Å{q¸L ïLN†‚þ +?éçkBÖ…F¯—Ç·nãñ­[µ6À%}ûri^Þÿ”w& (ìå_b0Pç<éŽðÉ"u©£s”ÉIlr2³æÞ¬¹·P»¯”­?gúµ¼´àiÚZ›4d(©YY¤e¦ÓP± ñddf£(JÄË#H"‚ jƒ»zÀðmÂnUEÑ*Õ ®Š,£åÀk+Ý·‹Ê}¥”îÝCmu•eeïÜ‚B¿ÂÁÁMó~C~Q’Á€"ËÚ`¤OVt¾yÑÉËË㦛nâºë®c×®]lذ‡zˆ††ÒÒÒ(**"''‡ø„xІEì[è6QžÄŸÐí™7§„r¢EAŠKŠ©­©eïÞ½ìÚµ‹êêjL¡•Ü)S¦pÇw@UU•~POCùùùäååqã7²uëV¾øâ –,YB{{; >œ¬¬,2dŠ¢DLº‡†Eþ>F;B6 {T{OeYFVdJŠK¨««cÛ¶mlß¾Ÿÿüç 2„3Î8ƒÛn» §Ó‰Éd¢¸¸X?¨:ÿ»ØŒŠ‚á#`äÈPjª‘++‘››ñ·µãYú¾æ±+-…W‡RRý¶~”•ÑHí_Ÿ?P`F´íëê ³×?áÊÊ‚è-Œµ³5) ÆŒ…oÒ„°ªjß«ª V} ••œràZ ø€6¿ŸWŠK¸}ópuh¡·¢Èœœ7–è^ж( ;ÃS2­›‘.0ut¾µÊŒ”òNÍéKz^.̾AðxÜìÞ´‰Úª ꫪyé™§iki¡®ª ‹ÕJrZŽè²ss±9쨊æULJM#)%ƒÁxÄ&Ý…¶ÖV*÷• „&>¿ŸýUU´47ãjï ¾¶›ÝFFßr ‘š‘Á “È/„31 AWÁ•Q9(‡&;ú¡Ö9<²,#Š"C† aèСÌ;·ÛMuu5Û¶mcÛ¶m477ó«y¿ oß¾ZGA’A™&£‰ÌÌL¢¢¢ŽÉó">ŸŠŠ :»:0ŒlÙ²…ªª*êëë{¼~øðáœuÖYLœ8‘ÄÄÄB4 êá„§ýP®y¸%IbäÈ‘Œ=Qioo§²²’-[¶ðÅ_ÐØØÈŽ;0dee¥0µAÒb¶‘‘Ãá8¦Ð3A(Þ[̺uëØ¼ysä9“ÉDBB---FòòòÈÈÈÀétFìùÙgŸåã?æå—_¦¤¤„©S§2}útLfÓÞC¡s ÍH•QYp©©Ý&B;\.M(~IÒú#¾ødf³´‚1Œ^«xúÒ‹°?Üp#dfÁêU°{7ŒŸýhß©{Ë·P¿oºù‚@gTs•¹//Ò€EQ»™LÜ]PÀïGÂÞ‹ã¾_–YÙЂ@’ÑHAlŒn>ºÀÔÑé…aXQ‘92A:a؈ Z˜`huÛãrQSZŠÛÕAEI1.‚ yv*k«ùê‹ ~8Ž~A‰KL$3//äµT1™, ™0 gB¯—ËE{{»ßy¾o{u¹\Ìž=›+¯¼ǃªª}ìõ@±y8"""8p ®în­§Ïç#((ˆŒŒ Þÿ}!0gá…!CF\û_°ôCxú©ýÙlð³[(çÚµD$O®Á YÓ >C™*^Mc}SsOƒ…œˆq®…ÀÁÙŒ,Ëttt1í/))‰€€¼^/.—‹ÖÖVjjjhnn¦±±‘;w²qãFñE Θ½vvvR[[{ØÇ±Ûíø|><­­­ÔÖÖÒØØHss3»wï>¦½Z­V"""èììôoÓu›ÍFTTªª )8 Ñ:Ì  3Ö¯‡];æA&@¿~°a=$%BSÓŒKèÛØç@z·GÇîÕΪ®QØf,b)&rBESL@ œÕX,6nÜÈïÿûÃ>þÜsÏ1xð`|>›6mâ­Eo±ní:¢¢¢°Ûí“’’BSS“ø2§³ÙLaa!¿ùÍoûø_çÿ•Q#Gáñxزu ï¾ó.+W®$""‚ÀÀ@‚‚‚HJJ:fåáºÔöÖ$ g'=ãNÀèF{ùF¤RÓ ¡ØÚ mí†à´ZÁã1Ƥ¬]ô˜8€®.#5uÚT£ÁÏ÷€WÕXQW²LŒÙÄ ³p¦˜@ €ªªÄÄÄ0yòäÃ>‚,ËìÞ³›yóæÑ¿î¼óN† FHHaaa˜Ì&¦Lž"¾LÁ±×èèè#ÚkDx’$QQQÁïø‘‘‘Ì;—üü|BCC %88˜ .¸à¨â²·áÏhš†ÛíF–ȩh¾ŸàÜæÌ-HHF—Ø}û ñ˜’^ïþN²Š š›&?îŸul¤Ï¶¶öŒQ8°)"--Æöï©k«®ëFƒG˜ÍÄYm$Úí°„ÀÁÙŒÇã!77÷n½ô:Ô‹ß[Œªª<ðÀdeeõé+¢—‚3…Ïç#;;›'žxâ¨öºtéR:;;yâ‰'6lX{=0õõptvuR]]M\\œ¿a•Éd¢««‹òòr iz‚cI>I¤(=Zê|¬(FM¡¦9TLÆÓ}*‡$¢šL½Bßí²¼ðoã±~gˆBI]W7ô΂MK3D¥ªBL $$QÌ~ýŒš&“ñžÛÛaÕ*㹉‰~0%ô3Pƒ©ê:« ±k210*R–˜ÁI8ªI–4|ªÐ1[,Ȳ‚×ãFëÓæ[Çbµ"I2·«O·nI‹Õ†®kxÜnNf¼Éqýɲí 0¬±Ç4ŠA×u, ²,ãñxY!·Z­èºŽÇÓwZoÔEÓ4<ÿø½³±éÅbµRßP¤ ª*,Z´h¿Cp¤ZžÞnùÂÎÏ zgK‚‘Öj2™k¯‹I’p»Ý‡8ç‹å{í™G³WI’hllìsõÚkKK ï½÷žßg¯ÍMÍ|óÍ7Ìœ9“ÀÀ@ÿ Îââb¾þúkú÷ïO@@€8É‚£b dØÀ^Yô®!Åu² ••†€KN6fPöÞvî0æLfdÀÁ¨ŠŠ Ç$;§¯øÔt ‚Ù—À›oÀ{ïÂà\0Ra++ñ%ýȘªfì £FÂ+/Ã;oرFTÓã¢bøæk˜>¢¢Œ×Pðù0·µ’ž9àôû„ºÎº¦&ã3K2¹¢Á˜ÁÉœ”ÌG_ƒ$ƒ¢˜PâDœÐc2³mÓ&ÚššÈÊË#4<Ü/2“‰oW®ÄÓÝMÞøñ(¦ý©O>¯— Ë—c  oܸ#ÎÞY­6þç†ÿBõzy¯°”ÀP³q?—Àåìæ·7ÿÅl櫚œ¾ïÞ9P–%Å„l2ÑÖÜĆM_ámieÒ¤IÂ$$$––Ɔõ #..0"Bš¦aµZy衇hjjâí·ß&&&Æï°kšÆ¼yóX³f?Š)Ë25µ5Ì›7œœ^~ùårØUU¥  €9sæ°zõj>ÿüs¢¢¢8p ÷ß?«W¯fÁ‚ìÚµ‹ÜÜ\4MCQ$I¢µµ•uk×ÁàÁƒÅI>((( 11‘­[·ò /P]]Ío¼App°ßödYöÏ¡üꫯúÌÖÖVæÍ›Grr2‹/¦««ë¸_Ûãv3ëŠ+ØSQÁòÏ?çàºÛncÅÒ¥$''qß}÷áRîúÉOرsùÃG“œLuUñÉÉÜüóŸsïí·óòË/c cöWÐP_OZZãÆ#2B8º‚c“––Îü‡bþ‚|¼v-ÍFºiR’qŒ÷ÏwD×ôÖ “ ©Ñˆ>̤ÉFäáj;5ÍØgêT#ú¹kÔ×ÉÁƒ¡ÿýQÔ÷ …K/…Q£`Ëðx”Ûáà AìrAqTW“­j\3(‡ŸßùßG̲9•8½^ö´µÙlb°hð#¦@p2„‡‡ó—§ŸfÅòå¼û÷gqª>æå3høpÒ²²‘]U g[×ÑŽStº»]ÜrﯹìÆ[HJÏèã\»ÝnþßÂWðt»°Ùö/ê`³ð§þƒ%ÀvH ×ñŠII–‘eI–1›ÌT——S²y#Eß~‹£µ… GäÉGþHvv¶0f³™»ï¾›+VðöÛoãt:)((`èСDEE¡é:?ü0]]]„††)|ì±Ç‰|jšF|\<=ö¡¡¡'lËš¦ÆÏþs®¼òJ*++Ñ4~ýúƒÕj%>>žÌÌL¢££±X,tuu±aÃ6lØ@ww7³gÏfê´©$%%‰“|Ä<ÀŠ+ ¡¶¶–ÒÒRÂÂÂüv«ë:O?ýô!‹º®Îc=FPPnåñâµZ÷ÆBæÿïÿòÙ%— „…qÅgKÙ¾l•55äKÔ ÿò/i­®apVáþÈ÷ÞÏù ÒÓµå[â?ÿœÕŸ}Æø@;CZšøèg?£vçN.Ÿ3‡`‘"+8.@fĈ¼0t(Å[·²{ÏnÖóo‡ƒ· V¬€ØXã/2Ò¨‰¼â C@z½}ë3u n¾Åxì ˆ>‚Q’ =Ý™½]eumÿcJ„üÿáFíep°!Jáë¯Áífxj?f ÂN£F23ÏÈw§é:_ÕÖÛ&3ÃÂà 5‹Y˧I½²ç0ªª²iófv”mcKq)%{öÐêt’œ’Bÿ¬,úgfIRÿ4$YBÓ4ÃÑÖ4ô‡]ïÙn¨E‹Å‚¤(xÝžƒêÀt,6’$áq¦Óf3jÚ\.®Á”I’e $CPƒÀMÔT¶ŽÚÊ}ìݹò];1¡“™’BÞÀ ÈÌddAA'6¸wï^æÏŸÏرc™3gŽ0–søغu+[ ·²ní:¶oߎÍf#33“¡C‡Ctt4’$¡÷Øz¯@Õn§óGçp5˜'‚ÉdòG’¸î€††ÚÛÛ)))¡¬¬ŒúúzÒÓÓ9r$yyy >«ÕzjMãá‡Æn·û#¶‚³ŸÏGaa!%%%¬\¹’;wLVVÙÙÙ$&&’˜€ÛåîcǺnÔÍ«>n·û„ìU3™Ûô-Ã6­¥ã‰¿²àïìöxI¯¯¢õ‰¿þÐý쉈%ÍÕIûo$ôþ_R•Ð$tœ?ÿæ_ÜÆ»%¥\óÓÛq̼åч¨±Úé_0Wö@TÕ¨UûŽtttð§?ý‰ôôtn¿ýva,ç ìÞµ‹–¦F*«kظ};ÊËÙÚØhŒ 1™ &ÖˆlÆÅƒb4¸!)iŠÈH°>’y £úŒcvvÇkm5j?uZÛÀé0kkI&82‚qÉÉdf’ݯq DÅD“”˜DDä™Ú{4»×®åŸ…E`±ð§ü|þwØPa@§ÁœÓ(ŠBÁˆŒÁĪ*ªªªhin¦|ï^víݡkVãpvÓápDJjBÂÉ%À@lR2vRR°Pó£ëFCŸ#aµá>-`· ˆ ¯×Cc]]mmt´µRW]…Çí¡¡jµÕÕ´·µa·X°ÛHމapJ?.7†ˆˆâè—Ò¯Oýœ@pð5ŸŸÏСC?~*ºŽsâd¶‘óǨO¦ù’‹áÛõ¤ÿîXÑíeßÈL¾^ðwnüÅmüjÙì9ŽŒOÞå‘Íë¹{cñ?¾™Úê*âÿöî›n%ÿäcTUEô–6г'„-%$ÕëcPl,éQÈ’LÖàD†„NBl,6»»ððp"£¢?#i°Gãýšºž¨«Â¸ØXa.ìX 8?X^דkR˜•”(¾!0‚³Y–/½J 8ǰZ­"mU ìX œý¾š$ñƾª^Ç©‰ âK9Sß½ø @ Á¹Äæ¦fšÚÛA’H "Gô¯S @ N†O««…i ñXDO !0@ 8ÝôÎÿ„ ç/ì.ï½@¸ºñ…œAD ¦@p:::رcªê£¤¤”ÎŽdE¡­­mÛ·Óåè:É!óf22ÒIŽO@Õ4lV+iiiDEEBFF†øòß+¯‡â¢bTMãÛ ðx=hªFEE»wïFéé¤y£GÆf³‘––FØ÷œ²ÔÙÙIt´èèy.âp8(++Ãív³iÓ&TMÅçõQ^^NEEÅ Ûqbb"™™™ÈŠ :Œ7Îÿ3`@Ÿ.gMÓp:‹“.8¥´´´P±w/íí”—#®ÚÚ(*+£­½ý„ºÜË’DZÿþ䦧£ëv FĤ˜ÈÈpÊGœìs8ØÙÚ€bµqAœ˜)¦@p†Ø½{7•û*YóÍjªêê(,ÜÂŽÒ2‚ÈMLDV̤¤§ˆ¦i‘;a2V[ÀI­kšÚ}U|»sŠ"ãõxyç“OèhmÃítP»ošª’–9€¬œ¤%'3øà< ´··HNN\p$;;›¬¬¬Óþùu]§££ƒððpa ?`ÊËË)++cÛ¶m|öÙgìÚµ‹öövHJJÂb±––†,Ë(ŠBtt42œ°755ùçÄ,Z´Ÿê£¶¦–îînBCC2dãÆ#++‹Aƒ‘ššzFfgW'¡¡¡Â'EIq1;wì`KQïþ9m••¨n7£…„@@j¬1jG³Y!6µ_*Ò ú@[š›yå*ã?¼^”¿ÿÝŸÍÍàñ`‹ˆ`p^“F&;3“ÜÜ\âN®1Ï«»vƒª,suBâã? 99™ä”d&L˜Àüc"##‘eÙ¿q ­Ÿ¬ÝëºîwÊÔžÁÞš¦¡ë:‡ƒ]»v±mÛ6V¯^MEELž<™Y³f1sæÌÓe¬¨¨ _¿~Â8~@8N–-[Æ'Ÿ|§Ÿ~J`` aÇÉÉÌž=›äädÿ¢Á™²cMÓèèè`çÎ~¡[QQAWWÓ¦McÖ¬YL:•ˆˆˆSþ}¨ªJ]mÉ)ÉÂ8ÇEss3ï/yŸEÂÆU« <=.91mú ¬±±˜ì IÈ=zïõ#Ip²bMÓÐzD©„ަéþíèŽÖV¾Ú»—•ËWÀo@UÁfW^5‡+/¹„Ç=æí…Ý{ K’¹6-Mœô3Œ¤‹¤}Á9NMM ÿzþß¼úúkXíAŒž8‰ì¼aääæÙÇáz©Gù}/W¥q÷‹ÎœšnW7»Ë¶Qºy[×­cGQ1S¦Næ¾_þ’!C†œPts÷îÝÌŸ?ŸiÓ¦qÉ%—C9‡Ù¶m/¿ü2‹-"%%…‚‚ÆŒCLL Š¢ôY49Ù…“ïŠÖãxôÚ|gg'7näÛo¿eãÆŒ1‚_ýêWŒ9ò”½¦Ãá ##ƒŠÊŠSžž%8õòâ‹/²xñbrrr>|8cÇŽ%<<Üo¿.Ž|ov|À}»½½ 6°aÃŠŠŠ¸à‚ ¸çž{ÈËË;e¯Y^^ÎE]DII‰Èp•U«Vñäsϱrùrô!C± HPn.ئ,²Œ$Ë~?䌣ëÆâ»¦®£é:Þ–fÜëÖãÙºsg'¿¼õVî¸í¶£.Ölhhd䇂ÏG`H-WÏ ~„ÀNó8ÿ™gø÷¿_dæUW2í’ËHHJ6n ð½9Òßýþ«û3»:ÛÚX·r¯/xŽA9Ù<þè#¤öK=®ã”n+åÏOÿ™›o¾™ñãÇ ƒ9ñz½üå/aÑ¢EŒ3†K.¹„ˆˆt]ÿA8¢z³áv»Y½z5ï½÷#GŽä‘GÁðÝçÐ._±œ'ÂÍœø|>|ðA>ûì3&NœÈìÙ³ Äð‡vÜû›´jÕ*Þÿ}f̘ÁC=ôß¿×ëåƒ>`Ñ¢E¼þúëÂX‡ÅÙíäê[ocyi)L tÜxÃê]P?ÛÑ4$\ õ´ù%jqï?û,S'ND>L-õ«×ðli)h:ó† åñ‘„ÀNc}Éå—“œÃÍw݃ÙrnG'Eá³—ðÜc²qݺãª)+**â©§žâ®»îbĈÂhÎ14MãÞ{北£ƒo¼‘ðˆp4UûÁ~Y–q8¼ÿþûÔÖÖòÏþ»ý»‰Ì_þò— 8[o½UÌY,.o¹å¸æškúC´ãÎÎNÞxã FŽÉõ×_B͆¦³³“yóæ1iÒ$®¹æa0‚ÃúC£.¸€=£F9n<Ò¼¬FVd55ÔÌŸÏÇóÿÊô /ì³PÓävýÖÛÐíE¡äòË!êìÏøy_à\ä¹çžcÇ®]\ýÓÛ°Úlç…˜¸ðâKˆKJæw¿ûÝqíãp8èèèõgç(EÅE¬\¹’ñãÇýƒ—½6ˆ#(**⥗^úNÇëèì`Ñ¢EÜ|óÍÂXÎb.\ÈæÍ›¹à‚  9ëÄ剦•kšFDDÃG gÁ‚~§×onnfùòåB\ ŽÈÓO=ÅŽ–Â Ž³~ñ$/†ý§qMÕ°§ôC4˜?>ú(ÕÕÕ}ª°|]ø:ÚÑt¯÷X+-hn7¾Žvc§ÓØçhI•=ïY÷ùð4Ô£î(#ØfÃt@@Cw7O”mU$‘/ à{B´Ÿœ“HÀ´Ë®âýwÞäËO?bêÌ1dÔHlÖ¬6+«ÅdÚ_PNOÇú³0cÜïHIÆ ¸×íÆívãó¸)ß³›ÏÞŸ]e¥Œž:å¸ïnW7g¤…¾àûA–eÆŒÃòåËÙ¹s'Ó§OgÀ€b±Z1›L}†³Ÿ Õ½¶Þû¯ÏçÃívãr¹¨¬¬dÙ²e3yòäï4w°¼¼œ>úˆ÷Þ{OÊÙLL™2…Å‹SXXÈŒ3HKKÃf³a³Ùü ß—O™<€­[·ú»ÊlÇ^¯ÇCww7ååå,[¶Œ;w2zôè“^àÐum¥ÛX·nK—.†"8"+ÒØq4¿ò2ƒs‰?[L ²Ù‚lµBÏ\WNÆ’$Ü5Õ8JKiý×ðz‘22ž4™°1c0…„Mƒ´]ǶRZ7mÂóáÆïÕà\BÆŽ%(7kbÒ¡öîñ {½øœœ%%4¯ü €è´4“!05]ç©¢bttQññLOL ¦@pêÐ5 «ÕÂ#ÿ~‰«VñéÛoòìS“_0’Ayydä $&.U" IDAT“Å„ÕjÅl6c2Y°Ú¬ûÅæ7ÛÉϓudYyïŽþw¯Höz½x=¼ŸÏC[k+{wì ¤p+ß®þ«ÕÆÌk®æöß?Äëÿxæ¸F»µ4·PVVƨѣ„±œ«×€®£( ÷Þ{/ ¼ôÒKø|>† Bþð|RSS±Ø1™Mج6, &³é°³´õ“±ûƒmþÐkÀH{r¹\¸Ýn¼^/n·›ÚÚZ¶nÝʦM›hmm媫®âÒK/eéÒ¥'*ép8øÃþÀ}÷ÝwZFFN-š¦¡( ¿ûÝï(++ãïÿ;f³™¡C‡2|øp’““ý÷ð€€Ìf³ápêõ~}ªìX–eL&²,£££úÔ>vìr¹¨®®fëÖ­lܸÇÃÕW_ͬ‹f±~Ýú“þiiiáÉ'Ÿä·ÿûÛf Ü}Þ5k¨ÿó_ >–Àœ„„d2¡˜ÍH«Q£)KàðtWì¥öñ'Ðë‘¢cÁb·›ŽEoѵj%Ñ?»• þiû£¥ºNÇæM4=ñ8"¥¦QɦFÚžÿí11Äßÿ[l±q¨.ºêCëîÆ¹{7%%x·•Bl\} ”–ö¹~¶45ódoôR’øÓð<4]7ƪ„ÀN¥ƒÝíp2rÊÆ^8öÖVÖ¯ø‚ÂuëXüÖt;ºINM%}@±ñ DÇÅ“–•ºŽÉl –7™Í˜L&$YÁj± ) è:²"cµÚN*MËãñàõz‘zÞ£ÇãAS}蚎×ãAÕT£Õ½ê£f_õµÕÔì«b_ùöíÝK·ËMFNƒG ç þM|j*ºª¡ª¾ãvºëêêØ½{7÷ýê>a(çø5 ª*ãÆcâĉìܹ“µk×òæoRWWGBB‰‰‰dee‘’’Bxx8v»Ý°}“ Ť !€®ëH’Ô³sü?š¦6Þ“Úèv»QUÃÆÝn·ÿèì줢¢‚]»vQUUEuu5‹…üáùÜtÓMäå烮³§|ÏI;å¼úÊ«ôë×OŒæùÙ±ÏçcêÔ©Ìš5‹¢¢"Ö¯_ÏóÏ?Ogg'©©©ÄÅÅ1pà@ Åj1 Í=÷rY–ûرÅb9¡æ:ªªú팙²½÷[]שªª¢»»›ÎÎNÊËËýv\UUEpp0ÇgîsÉœ @éAÎñ‰ŠË_|‘üü|&Oš, Dpü\x!̘ %Å8JJqôDIIÁGPFæØXLÈ&“±®(FRQLf$t$“Õá îŸÿ@wtuï}„Œ(ÀŒl2㮫¥âá?ÐüÖ[Øq7¦à 4ŸŠ·³ƒæW_èhbn¾…À!C@Vp××ѼlîO>¦þ×±çDZs'ZM 45BB ÌY³ ¬§¦²¸Ø¸Æ%™6‡¹«×€Ë𯄤d¦$$q)¦@púðy½ø<^lö¦^r^~HÐÚÔDyi);JŠØ¹{«¿^IÅŽ]Xm„GE + ‘‘„†…aµÙˆOÀ€®ªŸ”„ÅfC×tÃá>ÊL×4TMEW5êkkhknF–e¼> uutu´ãóùhnhÀÑÕ‰Ëí¦¥±‰¸ä$â“HHMeòW‘ž•ElJ &EÁ§ªø¼^ÜÝ.dùøn¤^¯—]»vNb‚H9/®Ÿ—ËERR×\s ×_=ìØ±ƒÊÊJ¶nÝÊ’%KhooÇáp Ë2iiiDFFb2™:t(ªªb2™ˆ',, ýX±rÝHÓíî¦‡Ã¢(ìܹ¯×‹®ëÔÔÔàóùhhhÀjµ’––Fvv6ùùùdffƒÏçCUUºNCœddee%ï¾û. <úè£Â(~ vìv»IOO'++‹Ÿüä'lÙ²…¢¢"ÊËË™?>uuuÄÆÆ¢( þ(gÿþýñù|X,bbb ÙoÇ:}æÁˆ$ItvvRUU…ÏçC’$öîÝ‹ÛíöϽ|ðÁ©¨¨ ¥¥…ä”dÆŽËÅ_̰aà ÛoÇÝݘL¦“—ååå¼þúëȲÌo~óa‚½ˆdgCÎ@¯†Ö(/ÇS[KË'û…aa`³!'$a °Ax8)) ëXBCñ65¡UUaŸ2kL ®šj¨6ìZ6™¿p:Í–¶Õß`ÏÈ@íè eËôêj¬3fÒ¶{­EEx»ÐÖHºf >Õxyy’ö@ÐTð©FŸÞENY¦ÉåâŸ{ÊÙÐÔh<Çbåo£G!¤¥˜ÁA×t</`Ÿ1tÌXòÆ_€$KÈ’„$+´·´P]¾MÓh¬©¡¥¹ w·“]»vâìq¾ÔÕTãq»1™ÌìØ¼é˜¯Ÿ1tHKxt4º¦a¶š‰MJ!9>³ÙLlbÁa¡“Ø? Y‘ÑTM×UËç;|uuu¬\¹’9WÍFqž¡ª*ªªâñx0™Läææ2tèP.»ì2Ô²w|}}½¿Å‹÷9NVV–¿Þìˆ?.&µµµ´··òX\\C† á†n 00ŒŒ ,‹?âÚë´;Ž“þ¬—ËEss3ÕÕÕüë_ÿ"%%…GyDÂ9bDz,óÓŸþô°Ïéµ_¯×ˤI“hooç›o¾Ál6ãv»ihh ««Ëÿ|EQ¨¯¯§­­íˆ¯;vìXÿÙŒŒ l=ÊEaîs©ÚWÅ;ï¼ÃÖ­[ !::š˜˜˜ïÔHª7ݶ±±‘ŠŠ ,XÀ¨Q£¸÷Þ{…!¾ËEôÜÃaè0È#FÀoþÇØÞs-huu~ŸÃ0 BC`ó&PUœk×àÜ´ÔM4 uÁs´FGCP¸î®îŽvˆŒ{¤§Cl¬±H¿w/¼õ&̘ÀçUów…탢PÆ-ë6ðM[«‰ULŸ¹Ñ5žY´ÞFC=ÛáòÝNç)ÿÌ>ŸââbšššøÑ~$Œà|^péI;<Y–™2e nwßóææfÊÊÊ0›ÍÜsÏ=ÜtÓM¸\®cÿ­·Þâµ×^#<<œž¨½—½å{Y¶lS¦LaðàÁ¨ªŠóÙ»³ÛÉö²í”””ÐØØHII ÜÿýL™2EœøsLhþèG?ê# %I¢µµ•’’®¹æ.»ì2<1½§ƒ¦DßšJM×YüÞ{¼öÚkŠ$I¨ªJee%ÕÕÕ\|ñÅLš4 “ÙŒ¦ªèºÎ“O>‰®ë”m+ãùçŸ'55•qãÆÑÕÕÅ3Ï<ƒÍfãÙgŸ%==ýëíh8J·m£¸¸ˆÖ–V6oÞLkk+øÃ>|¸8ù‚Sé ‚°wѰ'û€»946B}½!Foü1dçÀ_ž†Õ«aîÆlßf3Ü~«ñØÜ; ÇiáŒãÜxX¬Æ±õž×¨«§*÷Aÿþû߇¾%,¾ŠŒ4Rh5 ¬6æfgñßsDj¬˜ÁYèxk:>íÎ~ñ‡?!+û;¥iªÆ¯-¤hÍjrGáÒßH{[ëI§÷*xçwøÉO~"N´à0~†Æã?Þg[ww7¯¾ú*eeeLž<™iÓ¦ÑÚÚzÔz_“ÉÄæÍ›yöÙg¹ð ¹å'·ˆ"˸\.Ö¬YÃ<À»ï¾K^^ž?t*hmmåù矧»»›¤¤$®½öZ¦M›&Nî9ˆÛíæÁ‡ê“ çñxxóÍ7)))aüøñ\|ñÅ8ŽcÚkaa!ÿüç?5j·Ýv‰II(²ŒÛífý†õ<øûyë­·2dˆ‘Z{@Š«¦i,\¸G}”@{{;_|ñÿøÇ?xóÍ7™7o^Ÿ®ÍÇ¢±©‘¿ÍŸOPP±±±Ì;—qãÆ‰“.8ÞUüÕ¯{WkŒ¿æ&X¼šš`ÜxˆŽ†ÎN 5ž×Ù ÝξbPQŒÔ[€ ëáÆm+–ƒÍfˆKßA£L„„Ç)Ú “'GðÅ$ «Ë£QQ °Ù¸.#ƒßÏâRLà\Aêm4›ÍoXÏ÷ÜCJV÷üéQ"bbP}ê÷ú.}>¾Ý€ÛífæÌ™â´ ËÁ‘Ä•+WòÜsÏQPPÀܹs :®HŒËåbܸqÌž=›¨È(Ü®ÞZa™É“'ÍúõëOºì‘HLHäÙgŸ'ò|¸óJ}j¢°fÍþö·¿1xð`îºë.‚ƒƒÛ^ ¸ä’Kˆ‰‰éc¯'L$))‰-[¶Ýï}ÎÝwßͰaÃðx<8Nl6Ó¦M£©©‰·Þz‹K/½”Aƒw3µ_*/¿ü²8É‚3‹¦ÛÕkØFJëòåðÕ C\NŸnEM…Q£`ý:(,‚ÄD0©®û­YcÀ#‰ÙÃnÖ÷‹Íc!ËŒìèà²ìl.HëÏø˜qþ„ÀÎM“BKS# çÿ…°ØXîøßßÓ?;ç„R£N%%%¼½èmQ»#8n罪ªŠ_z‘þýûsÛm·o¤ÊòëÊ|>^¯—1cÆ0qâD½\ïè‡ÃËå:fŠ­@p"ȲL]]/¼ð ÜqÇ$''»{ºÆŽ^Û9r$ãÇGÓ4|>Ÿ¿¡Óéôw9î½.¹ï+ ¹¹¹x<„RÓ4L&ÙÙÙ´··³eˆzVüÇñ `ˆÍ;á‹Ïað`£.24t*ll¬Q·ùÕ c¬IV–‘ër©®ÛËŽœâzj~¤Èîìà¿d)N™˜Á¹êàHxº]¼õÜ?زf5·ÿöFM™rV8eee¼ýöÛÌš5ËßÄE 8š¸loo祗^¢±¡‘_ÿú× :”îîn£¾¸£ƒÒÒÒÃ‘Att´¿®²®®Žòòrhmm¥¢¢‚ÂÂBšššÄ-8eöêp8X¸p!åååÜ{ï½ >·Û$I8NÖ­[wØ}#"#ÈÊÌòÛk}}}{Ý·o………}š^îõÃÃÃûÜëuÝè.aŒT(,,D>hà¼@pVS] ,1ê.g΂¤dðÐbÐb1ÆžHlÙ Ÿ¶{ÿ4¸åxäOF$ô…鈢ÑX¡9>aªJ.ÕGˆ8[B` 笓ƒÄ†¯–óæßŸåŠ[ogú•sð}i±:1^¯—õë×óñÇ“™™Éu×]'N”à˜ø|>¾üòK–-[ÆwÞÉ„ èîîŒhMUU¿þõ¯»ïÃ?ÌŒ3p¹\lذŋ³nÝ:’’’ %$$„Ñ£Góé§Ÿâ=¨Á–@p2hšÆÊ•+Y²d ?ýéO™6mš?•U–eh¯'NäÉ'ŸÄét²yóf/^Ìš5kHHH ,,Œ   øòË/OªÕÉŽ#¾Oo†®Nøê+سn½  è+.ÁˆNFFÂe—Á°aPXÝÝ› ÆhU…¡yûë9†A¾ÃÝûuðô¼FLìþtY˜ÁùŠÕfeýò/yrÞ<®¸õv®¿ó.‚ÏøýQ’dšY¶l•••¬Y³†~ýú1gΆ*N”à˜(ŠÂ_|Á³Ï>Ëܹs¹üòË‘eÙï(«ªJRR=öØa÷ÏÌÌD×u6oÙ̃>È„ xúé§INNÆf³aµY  §°°ÊÊJñ… ¾f³™+Vðç?ÿ™[n¹…«¯¾ºÏœIMÓˆŽŽ>¢½FEE¡i………<òÈ#äååñä“O’œœL@@V«•ˆÈ®¿îzgÚÃÑÙÙ‰Ýn÷¿®$Iø|>ÚZÛe™áÇs´@pVˆK· >ÿÂhÎó³[Ñ%FÛûƒ~,LFtÒj5Òc³s Ù[W_±×¨Å쟺?Š9q¼ù†Ñ '(ø€cJFêmg'Øí0dÈqG1B` g UU{ƈœ‹Èd¢~ß>^xú)†Œ,ટýŒ°°3¿ø&Itv´³~ÕJTŸðˆ®ºê*† BbB¢0ŠóŒÞò'2 L–eÊËËyþùç¹è¢‹¸ì²Ë°X,}ñèºNHH“&M:ì1zѽêk³fÍbÔ¨Qø|>Ú`UU•?Ât²³ÊDdè<±cýÈv¬( •û*Y°`'NäÊ+¯Än·b¯v»ýˆöÚûܵk×ÒÔÔÄôéÓ3f ^¯1RJQjkjévuñ}¨ªJYY#GŽôGåEÁét²uëV"##ÉËË;D`ê½#ª‚ÓìiòñÜg%CÔmÛ+WÀÌ‹ q)ËûEãârã·°u \8’“ˆJJFšìž=F35u3*ÊØVQaÌÞìÝG‘¡ÛmÌÁ 4j=umœ@Wf˜Á)!¹_?>^õ5&³Y–ÑTí´¼Ž$Kt;,xüÿÌÏÿý2rÓÓun‡óô}` Ì+ª×Ë”)S˜;w.¡a¡BXžÇù˜(ŠrÌZàÞºËùóç3xð`æÎkÔRäXèšFww÷1Ç>„‡µgäåå€×ëeïÞ½<óÌ3þš6—ÛE@Ï@îc¯¡H “Ýn'ù< ..ΰ7]C–e¿H“$‰®®.þïoÿG¿~ý¸óÎ;‰‹‹C;ØáÔuœNça»¿öb±X óÛ«ËåÂn·ãõzÙ·o ,`ÏncαÛã>äþ®ª*Ÿ|ò ááá 0“ÉDKK «V­âwÞa„ ¤¥¥ùß{oƒÙl>b³,àT‘”œL¨£‹&Eá°‘Èý7wØ·Þ[ “§ÀE³Œq"GÞUŸÿÚbõj°Ú`æLˆŠ“ÉH¯Ý³>þ&M6Æšô.ÌôëFmgHˆ1ëRVŒ}6| +¿‚#!&´£ˆGÅ^/A(²"N²˜Á™aâĉüã_ÿâ<Ë•?»°È4ŸŠ×ç=¥³(MŠ‰Ò¢"Ö}þöà`þýäãH’Œ®÷u¾ƒ‚øåcOâ;Å5gŠIÁd6£zU>~ã5ªwíä鮟‚óÜ1#))‰?þ˜¨¨(Ø#¥éI’Daa!ß~û-©©©üõ¯=ìs“’’˜;wîQ»ÀªªÊèÑ£Yºt) ,`Æ Øl6\.ûöícĈŒ3†5kÖÐÑÞAXhØQ#™²,cµZéèèàÓO>Ål63zôhq’Ïòó󉌌äÃ>ä†n <<ÜßvõêÕ|óÍ7$''óÌ3ÏÐÐÐ@TT”ß[[[ÉÉÉáî»ïö/Š(ŠáŒjšæPªªJ^^ÉÉɼøâ‹âr¹P…ÆÆF† BAA6l £½ƒ¸Ø8TUÅd2ùísðàÁ<ðÀ¤¥¥!Ë2ûöí£¥¥…rà 7 ( º®c±ZinjâÓO?eæÌ™$&ŠE@Áéå‚ ðÿGÓÊ•0uª!}êABSJJ ®JmÐÒ žÃø,Ó¦5™¹¹0û£ËìÞr7„_W'ÔÔ@R’ÑyÖjÝ¿¯ÝS¦ÂÛ‹àùAB‚!0»°c‡ùœpH2‡©(†èÝ^k×0ûŸÿ$$4Tœä³IñeÁ9JÙöí,Y²„w–}FVîòÇ_@ÞØq(ŠŒªih>Uõ}§TV{P󮻆ÕË>=æsWÔ5âq¹Oþb•Œ´+YQe³ÕBÙæÍlúz¾^EAN67ßx#ù¢K¬ ‡ªª*Þ}÷]Þÿ}’’’¸è¢‹HMME–e¼^/š¦ù#‘f³™9sæP]]}Ôc&&&²dɺººŽb«>ÕGqQ1_~ù%‹/`ðàÁL:•É“'S__Ïí·ßÎwÜÁœ«çôY…–$ EQPI’¨¯¯gÙ²e2uêT®¿þzÒÓÓÅ >OØ»w/‹-béÒ¥dffÂ,!èôtÒããý–O׬aƘ1þý–|õ—LœÈ† L&ÓÓ)Z³“ÙLXTQ‰‰l߸“ÙD¿Y½â+ÞzõU–,Y³ÿù›×®Eöù˜8q"#¦L!/+‹«.¿œk®¾šQÓ§SøÍ7L™<€êÎN™7Eo¿MK[¯ZÅ‹ý+—^vñññØl6ª««ùôÓOÙ±c3fÌà¶ÛnóGú‚Óɶ²2æ¿ø"Ï}ô  #GBh˜‘úªkF4²© îÿͱvëm0f¬‘NÛÙ EE°~=õþHÀ¨17̈DLW|û-n5m/3gANdg÷¾Šbü©>C„®ZÉ€à`¾õV.¹è"‘Í"¦@pæimmeÇöí|õõ׬Z¿ž²Ý»ÉÌÄ€Ü\2å2 7— àžú0Ð5MÕÐÑníè—‡bRØ]R‚Çå:zFQÈÈÍ=æñ@‘e$IF–e$Eîq¶M¸œN*vídgq»JKغq#1áጞÏÄñ㜛KRR’8é‚>ôŽY±bK—.Åår‘M~~>¹¹¹„†…AO-XIi º¦÷žc³ÙHOO?fÃI’Ð4ŽŽ›ñy}„……ÍfÃëóR¾§œÐÐPâãã‘eÙ/(].ÅÅÅSZZJ{{;Ó§OgÆŒ <Ø¥œ_÷òÒÒR¾øâ –.]J—ÉÄæøPÊ~ÿŸù%ãfÌ`ÔŸeý}ÿ˦•+7j¹ócõoÿˆ§¦†ðÚ†n\CåÃOP½£Œ|ŸëÒ%ì½w»6ofÔ;o`¹ú:VI2º=€© Ÿ§åÚ)t{È5šÄ_Υ䆟QXQÁ”+® ö¦9´ÿûu^_¸QãÆ‘÷äÃÔ<·åï½G~Z9o¿Ê–_ÞOÙª• 9’_r ¶@;Ó/œÎ…^È Aƒˆˆˆ'Vpƨo¨§dk!¯.]Ê K–@`!æ²²ŒTU$¨¬0ÄfZ cì‹nÔgz<†hìè0{‚‚ŒJ›íÐÚÍ^GÇÛ³O[›±Éb1ê3ív#¢Ù[³ÙÕiÌâ,,„Ý»ÈÌÊâî+¯dÒ¸qdfgû³B` ß ímm465ÑÖÖFQqÅ¥Û(Ú¾í»÷`±Z8d(a‘‘¤ @JZV«•ȸx"¢£z„¦fÜ%Ð4} ¬®c2™‘ŽQ@¯ëzŸ8I’Œ:ý@a©àq»i¨®¦½µ•ªŠ½T•ï¡¥¾že¥t´·“Ï Ì ÊÊbD~>‘‘DFF}ÒÍRçmmmÔÔÖ°¯rÅÅŬ^½š’’dY&))‰Aƒ‘žžNDD111DGGôšš¦¡é:êqÎv•$Éoë½h{käYÆétRYYIGG{öìaÇŽTVVÒÖÖFVVùùùäçç“™™I\\œÿ= Î_ZZZ¨­­eOe%«Vò_—ãø`%A×_Æí_®ä¹‹fàzé-l7\Îæ¼±ä•ogÍ߇¹­ÄÕ«ˆw»p]#æ?ü–Æœ!D¶5±îÚ›¬¬`È»¯£ýÏï1úÕ^‰…p=ñ ¶¿>Ξ”4Ò¾þç ob¿ëVv›Lú²%t¿úÿÛ»—и®;Žã¿ûÒÍC‘3Õè9’‰!(޲胓E¥….º)JB /Zº*d•Ewí2‹nÚm)ŠÁ´…fÓ›°k·’%Ë#[ÒŒ5£‘tgîÜ™ûèâÊBP'X-M“ðýÀ] 3‹{áœß9÷üÿ¿×à^ÕÕñоyøH_½«þ·/ëÊß®ë×o¾¥Æë?–ñÓ7uí+Z™›Óøø¸Æh ÿgЬÕT¯íimý®þzýº~ûÞ{:¸s'=91='Y*¥g$‹ci`<4£èLpLÒ ÌÙ^—g꓆ô2ÍôJé°%ÕëiHÝÚJ{p>Hߦyñ¥õýW^Ñ—WWU.—UžœPv]K&ðãû¾¼ãcyí¶:í¶:Ž>üè#5šM­mlh}kKý^OæÚ¾¯Ñâ˜fççÒ×j£X3Ó*–JÿU•Úöѱ6ïÜ–iÛ2 CÞ±§µÊ0-G†5RÒÜìŒ.ÎÎh¼ô%-//é™ äf\åsyåòy n&Î-Žcyž§V«%¯íé y jµª7nhccCûûûªÕjòÏM#`Ÿ/NGaÊ÷}u»Ý“Ǿâ(V£ÙÔúúzzþÑ´´ý`[»µZÚ å?Ü5ÖòâbZ>IDATë+ì‡ê÷ûŠ¢Hõz][[[§g6777ÕjµÎý,º®«……e³YEQ¤R©¤é™éÓ*š¶e+“É(›Ë*ãfN«lOåîºÂù‹êŽÛm=ÓlèÞ`Vq¨EªíìèÁö¶ Ç‘Ùéèðößu3Nä$‰Ó”qòºwlÛš8:Ô‘›QÛq›¦f[z”/¨+i Ÿ×w*³z˜/(Œ"•§¦ôry\΀,K¶ei²ëË›žQÖueö{édz¶Â=ÂçbѦÛíªíy z=…a¨( Õ m?|¨½=Ù¶­Ýz]÷ªUuƒ@æ9ǂё½°¼œزmUffTºpA¦•,´mKÙÁ¬³Y¹g‹€ |Ñ$I¢ N'Õý^Oý§|Eðã<Iú2-‹]|&'ûú%Iò‰Uh?q 1 ¹®{í“EàÓzŽ{½ž ÃPÇ úýo½ðø»†!#Id<á³išr\WÖÉXàœ´Á¾è¢(RxR½9 ÃÓ>±çeZÖip4 CŽã°xNÀàã±ô `˜&L@À0 `˜&€€ @À0 `˜&€€ Àý x#Zl:ŽIEND®B`‚cdhit-4.8.1/doc/Figure4.png000066400000000000000000000741031343604040700154050ustar00rootroot00000000000000‰PNG  IHDRٰ͉ùsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ (H¯"tEXtCommentCreated with GIMP on a Mac‡¨wC IDATxÚìÝiŒ\×yàýÕ½µïÕU]Õ]½‘½M6w‘Z^[‹%oY&ŽãÄŒßù ‰í`Æ3Þ̇|‰0dˆ“ÀÎ$Þ¢$’)YŽdR¤DJÜÄMj6Ùì½ö}ßÞå:bqí&)ÉVž@X®î®ºuÎ}î}î¹Ï=ÇÐn·Û!„B!î£4B!„’d !„B!I¶B!„’d !„B!$ÉB!„B’l!„B!$ÉB!„BH’-„B!„$ÙB!„BH’-„B!„$[!„BI²…B!„$[!„BI²…B!„’d !„BñóJ¿ßoØl6i4  …ºIG×uœ'‡ƒV«E³Ù$™LR­V;™¾ÑH?‹E½G"‘ ÑlШ7Ðu`0ˆ®ëFjõ™t†V«E­VC×u<&³ ³ÉLµZ¥R©P©V¨”+X­Vl6‡MÓ(—Ë4 òùÔu]µq£Ñù“É„ÍfÃ`0P,i4KEZÍÖ m\¯×i4¤’)Z­š®©~6 ´Z-ªµ*ñX\µ±ËåÂír«ý=—Ï‘Ïçi6š †ú9“ÉÐl6)•JFÜ7ºÖiÃv»M¡P ^¯S,1·íç*–\.«å#Kfƒl&{W±Fï*–L&SOûÜ,–jõõZR©D©Tº¡ŸïK,Õj$“IZ­F—Ëu×±Ôl4±Ûíhš†ÇãÙP,%IÕÏ^¯dz¡XªÕjT«Õ»Š¥r¹|Ë6^o,­­­õ´ñFb©T.Q.uŽëµZmC±t}7›Í»Š¥n·[mÚíö†b  P,Ðl4Éçów<^­7–ú}XÌŒF#­Vë¶±ToÔoÚÆë¥›µ±ÑhÄëób6™oÙÏýýýhš¦ÚYˆ-ÉîžH‰kkkX­V¬6+áp‡Ã¡‚gmml6«vb·ÛÝs0[]]¥R©P«Õ:Aìva5X1ÍÔkub±Õj•b±ˆíg|‡ÃÙd¦R©ÉdÈd3dÒ¼>/~Ÿ‹¥Èår™J¥ÂòÊ åR ‡ÃÝnÇíqc2˜h6›Tª©ÕjX,\n>ŸO}ÏJ¥Â‚ Äááaìv;ºÞiÒB¡ÀZtb¡H«ÕÂh4ªƒ@6›¥X,’H$0„B!¬V+» sÒ+X^^FÓ4|>‡§ÓI»Ý¦Z­ª66™LhšÆÐð:˜µÛmÖ¢kdÒ™uµ±ÉdÂb±`±ZÔÁ,™JR)WH§ÓØìv"ƒƒêÄp};NœN'@›ÕF­Ú9‘¬®®R(p8X,¼>ï mÜ=©Y­ý¤ëú~‡Ãhš†ÅbA×uÕÆÕJ•r¹ÌÈÈv‡“Ù„®u‡r¹L,£ÑhÜÐÆ•j…j¥Êââ"Íf“ÉÔÓÏFƒb¡Èüüü{m<4Ô“dçsy–––¨×ëê¤qm?§Ói*Õ ©d £ÑÈÈÈ‹«ÕJ»Ý&›ÍR*•ˆÅbèº~C?±Ä`0|è±Ô=©ÝXªV«\½zõ®b ¸ëXÒuýޱT¯u“D"A"‘èég»Ý~_b©Z­²¼¼L­V£^¯300p×±T«Õð÷ù±Z¬$LÓÖK×öóØØXO’}§XJ¥Räóyòù<š¦m(–ÍFOÛl6,Vˆb©Ñh°´´¤Äî¾¼ÞX*—Ê$ •„n$–tMïiãîÅ–ÛãÞP,uÛ¸ÙlÞU,åsy*• +++7=^ÝM,Y­V4·†Édºs,Ý¢×K7kc‹Å¢r‡[õ³Ïç£M³Ñ,Y£øp“ìî~âÄ Ž=Š×ëÅëõò±}ŒPˆJ¹B¾çÕW_enn»ÝÎàà :àV*~ò“ŸH$(•Jx<B¡}}}˜t™l†W_}•l6K,£¿¿ŸÇœááaœN'±XŒ‹/rùÊeæ.Í111ÁÔÔ‡]×YYY!‘HpäÈõ÷¡Pˆ¡¡!tGç„’Édxá…Èf³8&&'ß<ަiê€ÿOÿôO”J%ž|òI<ÉŸŸçµ×^cmmv»Í¿ûwÿŽÈP„H$‚®ëœ?žååeΟ?¦i<ðÀøý~ü~?š¦qõêU–——9tè‹…ññq"‘¡pˆF£A4Uml±X°X,|êSŸ"2é$¨õ:¯~‹/®«N'Ï>û,>Ÿ§ÃI>ŸçÍão’L&™››# òÈ#ðûýª¯\¹Â¥K—$³wï^|>étšL&ÃË/¿Ìòò2ýýýx<FGGohãt: @ `×®]ª¯ïç°oß>V«Uµq&“!“Éðä“O‡±Ù:}pùòeÖÖÖ8}ú4år¹§u]'ON§ù—ùJ¥6›Mõswuyy™ï}ï{ª?ùÉO‰DÔþ~éÒ%^|ñEÊå2š¦ÝÐÏ'Ož$•JñÎ;ï`6›yâ‰'ðù|x<šÍ&çÎ#sêÔ)¬Vë ý¼¶¶öÇÒ#<ÂøøøÏE,éº~_b)NsðàÁ»Š%à®cÉfµÝ1–Òé4 œ?ž3gÎôôs0¼/±Ôýþù|žr¹Ìƒ>x×±T(زe ~¿ŸP(„Ùl^w,=÷Üs”Ëe>÷¹Ï1::º¾XÒ:±Ôݫպ¡XªT*ÌÍÍÝ´×Kår™ƒ’H$ðù|Š¥ååeNœ8ÁÚÚ+++Š%ƒÕÐÓÆ…B»ÝÎäÔä†béÒ¥K¼ôÒKêbl#±pñâER©¯¿þúMW%›ÍƯÿú¯£i.—뎱t«6^O,ú7mcǃÏß¹X¸U? ãrº0é!>Ô${mm£Gò'ò'ŒŒŒ022B$áÀ”Ëe²Ù,Ï?ÿûÙÏò…_ý‚ÕH&“üÕ_ý©TJ}‡Ý»wwFlpåÊ~ðƒpòäI&''1™Lôû1`àìÙ³œÚ¹šÆTÛív¼^/›6mâÑGUWã/½ô?üá×ÕÆCCCìÝ»—F£Áèè(ù\ž×^{ùùy^xávìØA  V«133sC?ðÀlŸÙN?Û·o'•N±º²ÊøCŽ=ÊÎ;æ _øÂ m|éÒ%¦§§ù/ÿ忨}éú~þßù"‘V«•¾¾>ÕÆ ,,,à÷ûÙºu+c›Æ°˜-ÌÎÎrñâEþáþAÝJï¶±Ñh$³¼¼Ìÿþßÿ›••‚Á êçî-ôÅÅÅž6ã±ÇSÛ8;;Ë_ÿõ_DZZ­7ôó±cǘŸŸç¹çžÃår ‡fzzšf³ÉéÓ§¹téó7C ¸¡Ÿ?ŒXêž°>J±´¸´x×±Üu,E"‘;ÆR*•bvv–ý×åÛßþvO?ïÛ·ï¾ÄR:æÿþßÿËòò2©TН|å+wKKKK<óÌ3ŒñÄO ëúºcé/þâ/ÔHñÄÄŸüä'×K˜àرc¼ú꫼õÖ[±T.—oÙÆ‰¥¿û»¿ãÂ… jû7KKKK¼òê+¼}æmNœ8±¡X2›Í=m¼´´D?¿ôK¿´¡Xšå[ßú™LƒÁ°¡X8{î, Wøã?þ㛯6K‡}ìcôõõ©rŽÛÅÒ­Úx=±´{Ïî›¶ñðð0O<ñ„º¸Y?ÿÚ ]Óq:’d‹ ‘#!„B!$ÉB!„B’l!„B!$ÉB!„BH’-„B!„$ÙB!„BH’-„B!„$[!„BI²…B!„$[!„B!I¶B!„’d !„B!I¶B!„’d !„B!$ÉB!„B’l!„B!$ÉB!„BH’-„B!„$ÙB!„BH’-„B!„$[!„BI²…B!„$[!„B!I¶B!„’d !„B!I¶B!„’d !„B!$ÉB!„B’l!„B!$ÉB!„BH’-„B!„$ÙB!„BH’-„B!„¸ ]š@!„⣭R©P¯×‰Çã âñ8år™¥¥%jµZ')Ôu‚Á ‡ƒP(„Ãá c2™°Ûí †›¾w&“!“Ͱ´¸D>Ÿgee…b±€¦iD"œN'£c£Ø¬6Ð4í¶Û[­V‰F£ŠV–WˆÅb$ Ün7.—‹ÁÁAðy}x<ž›¾G»Ý¦T*‘Íf9øâAêµ:[·nÅív³mÛ6Ìf³$ÙB!„bãZ­­V‹L&C¾çüùóÄ¢1N:E*•â¹çž£T*©$ûñÇ'³oß>úûûÙµkN§“ÁtMÇh|¯¢ÙlÒh4X[[ãòåË:tˆååe^~ùeVVVT’ýK¿ôKD"žzê)ü~?.— ›Í†Édº!qo·Û´Z-òù</^$räÈÞzë-Ž?ÎÄÄããã<òÈ#<ðÀLNNât:17}¯l6ËÂÂð@.›ãw÷wfbbB’l!„Bqw öÚÚ™L†¿þë¿æÜ¹sd³YÊå2©TŠZ­F¹\V¿ßh4xóÍ7±Z­œ&'&ÕïŸ;wŽ'NpúôiŽ;F,£T*F{ñ£Gb³Ù8qâ~¿Ÿ§Ÿ~šp8Ìg>óGÏ6—J%æææ˜››ãÏÿüÏI$ÄãqR©W¯^%‘H0??ÏÁƒyöÙgyê©§˜œœ¼á½šÍ&çÏŸçÂ…  EœN' ‰`¶˜ß÷ö—$[!„â#¨Ýn“ËåˆÇã?~œŸþô§êgÝòŸÏ×ó7Õj•J¥ÂÚÚšz-—Ïñ‰O|B•x´Z-Úí6‰D‚ .pêÔ)Ž9‚®ë œNgO9H¡P ›Í²¸¸ˆËåbóæÍ‹EªÕ*6›­gt¼^¯“L%Y^^æðáÔËeœN'º®ã÷ûiµZ4›Mæææxçwصk±XŒÑÑÑž$»û{‰D‚••t]ÇårèëëC3j’d !„Bˆ«×ë¼òÊ+œ={–ùùyõz0ä÷~ï÷èïïgllL•MÔj5æææ˜åÿðU­öÊò /¼ð;vì`ÿþý¤R)bño¼ñßýÞwI&’üʯü £££<þøãƒAõž‡baa¿ýÛ¿¥P(ðÏÿüÏlÞ¼™'žx‚P(Äàà ºÞII‹¥"Î_`nnŽz½ÎîÝ»ùê×¾Jd0‚ßï'•J‘J¥xþùçù?ÿçÿ077Ç‘#G˜žžV Ý2‘l6ËücNž<ÉÓO?M$!2Áçõõ$ö’d !„Bˆukµ[,//óÎ;ïÍfÕë6›­[·288ÈÖ­[ßK²ë5l6ív‹Å¢’ìb±Èââ"@ç!ÊL:C4åòÜeõ¾CCCŒ³{÷nõ»µzX,†¦iØl6ŠÅ" FR©6›ð@¸ç ‹‘L&i·Ûx½^f¶Ï0::J?ñxœX,ÆéÓ§H§Ó=ov“ìr¹L>Ÿgaa……ž}öY†‡‡qØï{-¶$ÙB!„å$»Ùb~~ž7ß|“\.§^7›Í@OY‡®éLNN’Ïç{^7›Íôõõáv»H&“ê¡ÄkíÙ³‡™3¸\®ž÷Ü>³`0ˆÓé$‘H¨ÄýÂ… äóy6mÚ„ÙÔI|³Ù,Ï?ÿ<ËËË4 œN'###x}^<^v»¾¾>Ο?ÏÊÊ _ýêWÕgvk±ççç‰Çãx-¶$ÙB!„qÍf³g”:#ÜÝYGjµº®«¤Újµb±XT9…Á`Àî°ãñt’Ûn‚FÉçó=ïëóù‚7Œ{=^Ú­¶* Έu"‘Àn·Ól5ß{½VgnnN=è¨i‡C%áf“¹óïgŸQ,)‹ÔëõÎw»¦{ii‰f³ÙS‹M»ó€g³Ù¤ÝnÓh40jFŒ£šñä~”“H’-„Bñd±Xøò—¿Ìã?ΟýÙŸqêÔ)®\¾Â¿øEù­ßú-‘HƒÁ@,ãâ…‹T*\.{÷îeûöíüÆoü†ª³>{ö,ÿóþO …BÏçB¡PO‚j4éëëÃl6c2™Ôë¥R‰S§N‘Ífùüç?_¾o«Õ"N“J§øþ÷¿Ï‘#Gxúé§™žžfll «ÍÊÙ³gÉf³¼ñÆ$ :„®ëlÙ²…‘‘>ñ‰OزeËçò–$[!„âß ƒÁ@0¤Ñh0<ÁÔÔÏ>û,^¯—ð@ø¾N{×h48vìårY•z@§ääóŸÿ<—/_æ»ßý.ù|žùùyFFF$ VWWY]]àÁdß¾}ø|>ͧOŸfîò±X ‹ÅÂ<À¶mÛ˜%‘Hðo|ƒ……2™ Íf“J¥B¥RáÈ‘#¼ùæ›üø¥³ÿ~¾öµ¯ …ضm›$ÙB!„¢—ÅbéÔ5;8NLz§æ¸;Z\«Õ¨T*=õÕÝzå.ƒÁ€Ñ`¼å²êw«^¯÷,†Ó½0d2ŒF#år™ÕÕUL&õz]%Ø™L—ËE?ƒF½A2™dmu ³ÙL8Æåra·ÛYYY!“ɰ°°ÀÊÊ ƒƒƒ˜L&5›J¥R¡\.³¼¼L$!™Lb³Ùîí"Gv?!„Bˆ®V»ÅÊò2—.]âĉ,//ó¹Ï}N-ÞR,ùÎw¾C±X ‹ñÿø 277ÇÌÌ _ú_Âåt©FÞ/‡ƒ;w¢é&“‰ãÇóÛ¿ýÛª¦»^¯S«ÕH&;ssŒŒ°wï^jõË+ËüË¿ü‹ªÅcjj ·ÛÍ;ï¼ÃÂÂÅb‘ÁÁA¾ùÍo200Àðð0õzååeΟ?Ïý¯ÿ•X,Æ¡C‡˜™™á¡‡’$[!„B¼§ÝnS®”)—Ê$SI‰™l†z½N8Æãñ i…BíÛ·“N§UÍv6›%²°°€ßï'›Íb4q»ÝhZ'n6›=õÔÕI¾–¦kx<ü>?›6m"™L’L&©T*ª.Ûb±`·Ûñûý<µjM%ßÝZìP8„ÕjÅ`0J¥H&“Ôëu5Ê=00Ààà õFv»M<GÓ4Êå2ñx¼gnqI²…B!õFW_y•Ë—/ów÷wœ?žt:ͦ͛xúé§ ‡Ãjdú×ý×)‹¼òê+Ì]šãÏÿüÏÉçó9r„l6K0drr’/|á >þñ3u¾g1š % ºÎï™uÄép²sçN"‘n›èZ”cÇŽqòäINœ8ÁÎ;™™™azzšÉÉI¶lÙÂÔÔäÊü•žZì»vâö¸Ées<ÿüóœ={–b±ˆÕjedd„ÁU>:6J"‘Àd2©‘ü{%I¶B!ÄGP»Õ]ZZbeuEÍbÒM¸\ÒÇtœ)‹ E†(ŠhšF½^§^¯“J¥XYYÁï÷`±ZðûýÄb±žÏëÎQm4öÖow_¿–ÑhÄëõâv»o˜òÏb±àt9Ĥ›ÔœÜår™©©)ÆÆÆ&‰àõzÑut:}C-¶ËéB×tÚí6™L¦§îÜl~oæƒÁ€ÙôÞƒív›R©tC½¸$ÙB!„‚z½ÎóÏ?Ï÷¿ÿýž<º ®×ëUɰÝnÇn·ó¹g>Çà›ƒüÑý‘šÚoaa¿üË¿äßÿûÏoýÖoê±ÿ~*• gÏžUï›H$ˆF£µXL«Õ"™L’N§{¶Án·³{÷nFFFÐM7¦£.ggŽîv»Í'>ñ‰Î:ÍF£±óO3¢;¥.kkk|ÿûßç§?ý)_úÒ—gëÖ­ô÷÷ß—Ee$ÉB!„ŠÁ`Àáp ‰F£j4¹ÑhN§±Z­x½^5òÜjµ¨UkÔëõæ®îïïÇét`³Ûö{–OH§ÓÄ9¶¯]õ1“ÍÇÕêŠÐ©Çöûýx½Þ›N h0ÔÜ××®y½r¹L,#›ÍR©Tèïïg02ˆÕjU ¶Q32<ù$333ÿßb×Î]D"‘žÏ;yò$o¼þFOYF£ÙàÜÙs=z´g…H›ÍÆøÄ8›7oî©Éިť%>L"‘Àb±°k×.<ð`Ï,(V‹•'Ÿ|’§Ÿ~§ÓIµZeqi‘¥¥%år¹ç{ ñË¿üË8pàžÚ_F²…B!>‚ŒF#är9Ž;¦^¯T*¼ûî»är9V«€Z­ÆÜÜ—.]¢Z­b0ðx—ç­·ÞâOÿôOùÍßüMÆÇ;#ã}}}=µØ&“‰©©)6›ååeþÛûoÆÎrê­õz]}oŸÏǶmÛ”$[!„BÜÈápÐh4Ø»w/º®“Ëç¨Vª¤R)jµÑhT­îh0P#ÕÁ`Ý»w3>>Ž×ëÅn³«ß3 ¦§§©Õ:sTÇb1J¥ROý7@ Àf³100€ßïgÛ¶m„ÃaµåÝ(KÄb1õ@åÍj±»Œš¿ßO½QgÿþýD"b±•J…h4ŠÑh$ a·Û ƒÌÌÌ ñx=’d !„Bˆ^F£‘¾¾>|>_ûÚ×ÈçóÌÎÎÇ9uê©TŠçž{ŽR©tꤟ|òI‚Á Ûg¶Óìg÷îÝØíö›–Nlß¾-[¶ðÐCñÉO~’C‡±¼¼ÌË/¿ÌÊÊ Ð© øá‡‰D"<õÔSøý~öîÝ‹Íf»çZì×enn€]»v±k×®›®Hi6™Ù²e ###|íw¿F*™âÕW_%óÜsÏáõzyòÉ'‰D"<ôðC„úCìٳ瞶O’lñ ­»"UwËî“ÁíV[G|$´Z- ù‚Z :·]‹Å¢y’XâO¹\¦Õja·Ûïªy£‰¶Á` ¯¯·ÛÕj¥X,²yófÊå2=ö˜:¾˜ÍfFGG±Ùlþ>?º®ßt*èv,•Jê„ÐjµTüÕj5~úÓŸrùòeÎ;‡ÉlâܹsD£Q‹åþnK½F½Vÿðڣݙj+N«‘¦J¥Òqn4b©ÛÆÅb‘\.÷¾ÄJ£Þ ‹©iÅ …ÉdR-´Q©T(—Ê÷õz'Ù\–ÅÅE^xáœN'W¯^%N“/ä!ÇJµÂüü<ñx¼sl©×ÕÃn÷ób0N«Ü R©‹ÅÖ—4¶;ûuëpÛí6Ùl§Óù¾÷{«Õb~~žl6Ëìì,ÅRgUE·ÛÏëë™OZ|´¼ïIv±X$•JñöÛoc0( ”Ëå’ì7ÞxƒÅÅEJ¥ù|ž¥¥%uÌçó;vLMËljEc*вÙ,gÏž%•J1??ÏüÕyæ.ÍÝU’ÝjvV&J$je¢R©´á ,—Ê,,,Ðl6U’p?“ìT*¥æ›l6›wµ·M¾ju®\¹Âòò2ív›z½N&“é™ãòZ+++¬­­qåÊ^~ùe¦¦¦°Ùl$“É÷5»v.Îîmô+¡m4=z”sçΩ×õzý¾ÞÚ¿Ÿš&kkkD£Qµ/U«Õ4Ù¸Y¿‹EµÔo÷iïV«E£Ñà‡?ü!6›­s{Òj¥R©Ðh4Þ—~¯U;Ûrí*eôˆW>ŸW(u÷ór¹|ßËE>¬Xê¶q¡P¸åEü=ÏêuÖÖÖÔÀL¡P@Ó´ž —b±ø^Le3Y®^½ÊùóçiµZ¸Ýn ¹lî3É.W¸téRϱä~_°·Z-R©étZ âÅb±u-ÒjµT’Ý-‹J§Ój!’÷õÜÐlpéÒ%®^½Êw¾óùò—¿Ìøø8333’dK’½~V›¯ÏËÐÐ{÷î%•J‹Åx÷Ýw)‹T«U5Z­NôÍ&gΜaaa¡3‚R­ô¬_©T8sæ 6› ³ÙL¡P •J©ßéòÇâ1Á`@ Àêê*©TŠh,J"‘è©QªV«,,.à°;Tpîܹ“r¥ŒÇíadt«ÕªV%ê&ív£ÑˆÕjÅn·c4Ñ4ááaªÕ*±X —Ë…®é,-/¡;³ÙÌ<€Ýn' ›t–––Èård2™ž6H¥R\½zU|úûûÙ»w/n·›t:­~žN§Æl6Ójµu ï&ÖÝäÂd2ár¹°Ùlx<6oÞÌìì¬JZ­–ºðéþM³ÙÄçó±cÇÆÆÆ0™L Ìf3§ƒ‰D(•J °´´¤>#™L200€ÉdÂl6ãt:) Ä~6R’Éd0´Ûmõ™Íf“ÕÕUµZ•ÝngË–-ª¬ÛÆ&“‰\.G­VcÏž=lݺ•@ ÀÖ­[;õkFf‹¿ßÏSO=¥ž¤nµZª »ý¼cÇrùµê{OWW«U F;wìÄf³±wß^v Ôj5–––h¶š˜ÍfO=õn·›íÛ·3<<Œ¦i躎×çe|bœO}êSø|>5bsõêU2Ù ù\žp8|Ç~Öul6K  “É`¶˜)—ˬ¬¬P.—Õ‰°Ýn«‹¸«W¯’Ïç;O„°wï^"‘f³™h4ªFœÛí6›7oÆl6344¤b)ŸÏ“ÍfÉf³lÙ²…þþ~FGGUߊÑhì©ÿ³ÛíD"æçç©T*ê驺“““6mÚÄàà z@ @«Õâ‰'žÀd2 U,ÕuòùÕj•\.ÇÂâ‰xÇÃÐÐ=öccc àóûp:„Ãa&''ùØÇ>¦æzíÎÛšÏç©Õjªìv;f³™¥¥%u·¨ÛÆ~¿ÇÃðð0Fí½6¶;ì<òÈ#$“Iâñ8^¯÷®biëÖ­ ±}ûvÐM:£·ÛMµZåá‡&‘H ë:>Ÿ¥¥%Œš‘\6G¹\f×®]=ê×¶ñµç„v»­\–W–Ñ5‡ÃÁØØ˜ª«¼Y,ùý~}ôQ<Û¶mS±d0zf1Ðu³Ùܳœ®ë·½mo2™xøá‡"›Í Éf³¬E×(—Ë7¯†††h·Û*–Êå2}þ>6oÞ¬Žùõz]ÝùT‹slÚ´©'–2Ù ¹\ŽjµÊôô4ápÇ£Ú¸;Çq÷¼Ô½˜0›ÍÄâqŠ¥"™LM×xä‘G¨V«ªŽÖãñ ëúÏKº¦ãt:Ù¿?‡£ç¼‹ÅH&“ªW×u\.¹\®ç˜yíyÉétªD¹R­P,o}^2Ô¹£[s«if³Y-É}»XZ\\TÏ\›ø·Z-VWWñù|ê<:55…ËåÂãñ000€ÝfWç®õŠÆ¢D×¢\¸xt*ÍÙ³g‰ÅbÌÏÏ«ýÝív³°°pÃzâç‡Åb!¨¥Ü?ü$ÛbÅëñ‰D˜™™áìÙ³ÌÏÏsîܹž¾ëGk®$ý†Ñ¶fó¶?¯×ë\¼xñ†×GFFÔ¿áááN’m4â÷ù0Ðy*Öï÷£i‡ƒÕÕU «+«Äb1êõº:8W*ÕÁ,“É055…Á` 3<4|C’ݽ:6 Øl6ìv;š®a4BÓ45õŒËåÂh4²¼´ŒÑh¤Z­b³Ù˜žžVKjFÅÅEò…üM“ìd2Éüü¼™òûýju&«ÕJ&“Q?/—Ë àõzq:x½^u0»6Ùº6™q:ê`àv»¥¯¯¯§kµZÏEŽßïÇï÷³uëVÆÇÇÕÁÑbµàrºØ¹s'ƒƒƒ¤R)ìv;‹‹‹êª>“É …Ôö¹\. ÅD¡T,’N§Ñ4M%YÝ ›µµ5u›Òn·366F­VÃétª6î&DµZééi ³¢ÕèèhçA£†ÍjÃçóñàƒö”ûtÛ°û™“““êçÇgee…R©„Á`àÀþØívœN'6› MÓ¨V«,--Ñjµ0™LôõõñÀàr¹˜˜˜ «DÓëñ²yÓf~øa, f³™v»Íüü<år™J¥Ò³Š×­úÙétR©T°Ùld2šÍ&éTZmk7±êö{w_ÊåsX­V¡0í™6¡P“ɤn½w“ÏááaU“çõzY]]Ål1S)WÔ6õz©©)ÕÆ·K²5MÃ`4¨¤2c·ÛÉd2ª¿¯½Se0سgáp˜±±1‚Á z`0ˆÉdbïÞ½´Z­Î7?‹¥V«¥’ì™™ÕÆÝ~. Š•vO²kkk*V®oc«ÕJµZí,̰¸D¡PPK »\.Âáp'ÉþÙIÝát3>>N&“A×ut]§Þ¨w.¦2™žA›Í†Õjeyy™|!ßÓÆ‘H„þþ~Á@Ï2Å»ƒÝ»w“Íf‰F£ø|¾ Ç’Ãá`óæÍ´Ûm•ЛtšQÃívÓjµØ½{7©TŠJ¥‚ÇãaqqMÓ(—Ë”Ëe¶lÙ¢JR€ž6¾6ÉnµZ*É^Y^Á`0`·ÛÁétb2™nK~¿Ÿ]»váñxزe êähµZÕñÇd2a±ZÔ…ˆfÔT2~+f³™»:Ç«X,†ÅbQûc:Õ)a¸þxÕM| årçA«v»Ýn§P(N§ÕÀIwyë‘áõ*–Ìf²Ù,Õj•ññqµŸuÛ¸û½ºç¥î]`³ÙL,Ål6w’QMg×®]ª½T’}§óR76N'ÓÓÓꢦKñxœD"¡’l›Í†ËÝI²¯=f^{^²X,”Ëe¢Ñ¨ºˆ¸ÕyI3j`@}—n’mµZ1›ÌwŒ¥ùùùb©;p²ººªÎm¥R‰±±1B¡ýýýôõõ© Ûˆ®E9yò$û·Ë… ˆÇãêsu]'™Lât:YXXPy…øùÓ½˜íîÿ~’ý³ÅæÍ›ùøÇ?ŽÉdÚPÙFwŸX,Ö3oãààà†ŸDݹs'SSSlݺ•‘‘ÎH³Á`Àï÷c±X…BÔëuNž¨.ººW~¿Ÿýösìc=z”h4Ús±¸¶¶ÆÊÊŠõ¿¶ÞàÂ… j¢{“ÙD<W'Çv»M4e``€ÇŸÏ§FÜ»Oƒ{½^¶nÝŠÏçcaaùùyΜ9Ãk¯½¦>óòåËjäêVýÜ}Þ¡{'¨;uR4U'd€h4Ê‘#Gx÷Ýwñz½är9²Ù¬úßÅÅE¼^/gΜé9ñ¯®®R©T°ÛíØl6VVV:'·Ÿmãòò2‡ýû÷n˺®w"½k@€;vpþüy*• ™L†V«¥F•ƒÁ zïp8ÌæñÍxÜ52 ; á0±XŒcÇŽ¡ë:.\茘–KÄ¢1¢Ñ¨:)Çb1Ξ=KµZ¥Z­ª©¨ºåi/½ôgΜ¹i›L&2™ V«›ÍF­VcuuÇÃŽ;…B„ÃaUsîttFߺñ+++,--qõêU|>sss¤Óiu‹¶lÙ‚ÇãQm^¯W%RV«·Ë­ö1³Ù|Çùz- <òÿÅøÖ·¾E.—£P(¨‘ÕëWV«•ÕÕU\.v»t:M2™¤T*Q(¨V«=3ÅtÍB¡€Åb鉥î…J¥Ò©{îîgn·›µµ5µÝÝóR·Óé4ï¾û®º3Ö××G__ 2Äåt©X¹Ýy©{a[©TX[[Ãd2õœ—òù<çÏŸWå"Ýdûõ×_WÇ'€óçÏ÷œ— …‚ºpj4·=/iÆÎ€XwF“ɤòõÄÒìì,ÉdR}~w_|ñE‚Á ´›ŸŸÇårub)ìÜ5ÝþNG*•"‘H¨ãôüü<—/_î V\÷¬A³ÙäìÙ³¬¬¬‹Åîyš8ñþ™˜˜èä¶›çwx’Ý=hãr¹¨V«*èÖSØ=$“Iu Ðuééé _ííÚµ‹™™¦§§V¯û|>œN'¡Pˆr¹Ì¥K—8yòäM·çÚ“è¥K—nø¡¡!>ö±Ýv;º+*¹œ.4MSIv0Äh4R,y饗nYï|»öºö¿>Ìk¯½vËß?~üø ¯MMM±eëVô½—üt`Ýà7›Íƒ™Ë©®îº·¥7oÞÌÒÒ’JDŒF#ÆÆÆT’4::Ú3*Ô½ýk2™¸|ù2W¯^åÈ‘#wõýNŸ> À+¯¼²î÷ðù|ü§ÿôŸèïïgß¾}=ÎY,|>{vïáô©Ó=ztÃ}Ò=9ÝΧ?ýi¾ò•¯àïó {®–»í<99ÉáÇվzðàÁ õóµ®ÿ×ns&“¹í{ßîâÓÓÓìÙ³G%—·K²Íf³ÚƒÁ ;vìàÍ7ߤ^¯sþüyµ4®ÍfcjjŠþþ~Ÿ'ŸÏó­o}ë¦m¼oß¾ž»Ý${ïÞ½,..òöÛoóæ›oöôózc©¿¿_•~]ûn—‹Ù¦±Md3YNœ8Ñ“XÝÌõÇÜk·¡Õjñ£ýhÃûÚÔÔ›6mÂï÷399©âYÓ5<*E³X,*±ëŽl›-æÛŽTY,ö?ðÑh”o~ó›\¸pÿøÇ÷TíߦR)u½®oã/}éKŒ³eËvìØqÃïßëyéÚïÓ±æ'?ù ÿú¯ÿz_ÎKÝ«î1Äl6ãv»ÕÅÓFc©û¬Ñßÿý߯;–n%™J2;;ËO~ò~ðƒH$zžs¸¾Nœ8ÀË/¿,™ìϱOúÓ<ûì³}жñ¿ß|ôú¼Ýïã‰'žX÷(v2™$‹ñõ¯]­{?44Äÿïÿ}]7\Ën·c³Ûp:œ7=ñ;N|>ãããj¸ÕjQ(¨Õjjf ]ïÔvëû®µÑéc®ß†p8L³ÙdÇŽêªúNšÍ&Åbñ† îŽmÄðð0V‹åŽõˆ·233ÃoÿöosðàA¾óï`6›á?ÿçÿÌô¶i,æÎ{ßì@e0vÊh\.—uÚˆ••õ${7°Ûí8ŽußõðxLÛãøn“ìx"®¦m4ª_»õýï¿ßÃá¸íññnÏKÝ®ºËk›L&u~ÝèàϽž—ÖK݇hT‰Ýzcéfù„Ïç£?ÔyÀ;•J100@2™¤V«õ$ÛÝ‹~§ÓI$¹oâý‰£füùK²ÞišÆÄÄ£££LLL¨ÑÇjµÊ»ï¾ËZtoüÁ7H&“LNN²wï^~çw~§'ù‡ÎSû÷2"òÙÏ|–z½Î3Ï<³îÛŽù|žK—.ñüóÏóío[ÍüñÅ/~‘_ýÕ_ÝÐ6˜L¦N›ô{^Ùèn¾ÿðð0áp˜ßûÿ~oÃÓÆýÃ?üüÇL>Ÿ§^¯ó…/|ÉÉI&&&ÔCGë9az<ž[ÖÓ›t>ŸOúÓìß¿ÿö£Â¥ßøƒ?àСC¤ÓiL&_þ¿L8fjjê–s8Ûív¡ð¼# ðÐCÝ·©ÎΞ=Ë™3gÔÅÚÌÌ _ÿú×éïï¿éÒ´ww5Ù™•àV£Ì³ÙÌÎ;Ù²e ûöí[w¬år9òù<¿ÿû¿ÏÑ£Gq¹\„B¡Îš;$ö7ۿ߯ڻÞèè(}¾žþ­7ê{ãKKK|ç;ßáÒ¥KÌÌÌ044ÄW¿úÕ÷澦o·ï{¼>þñ³oß¾ž}h]±dè< Ø}€óVñ_÷´hÝ6þÁ~ÀŸýÙŸ©‹ß¯}íkê¹Ï\.–Ÿ‚¾\.¿ù›¿I½^§ÑlÜõ|åo¾ù&‡â…^`eeEõëüÿ‘‘‘‘÷eÛNgÏ,Q÷ó¼´ººÊ?ÿó?óÆopôèQÆÆÆ˜ššâ3Ÿù =öØz^Zo,]{7lbbbC±t³mÖu=»÷01>Ág?ûYÒé4?þñYXXàСC,..Òh4ÐuÏ|æ3lÚ´‰'žxBfù9f·Û;wîò‚ïßl’m0T];]­VÕUx÷AÉîTEÓÓÓ÷5ŒFㆯð²Ù,FCw·uhhˆmÛ¶ýBõA·=7Z*¨‡M»œ 266ÆÖ­[ïêýnµf“™p8|Ǿ*‹øý~55˜Édbxh˜H$¶mÛîy¡”n½áýÔ­m¾6˜˜œ 2¹omøóÀh4ª„t½5–ÝXËd2êXÑ­Ÿ˜˜¸ï±v³þ­ÕkD×¢jFŠîX__[·nÝð4³É|Ó²»ûKÝx¶Ûí=³­·¯Ý®nÙÒÏãñL×u6mÚtÏï“L&¹xñ¢z¨¯Û¯ï%|R¬ÜÍy©;sN7Vìv;>¿ÑÑѼ×KÝmìÞ »×mì^ tg…éïïW“˜Íf._¾¬}ê>ˆ=22¶mÛ$Éþ“{B!„÷Qwdû©O>E¥\áÓŸþ4¹\ŽW_}•D"¡æEÇ m%I¶B!„X—îÈv¨?D»Ý&¨9Á»SzZ­Ö÷íÙ!I¶B!ÄGZwA:³ÙÌSŸ|Šz­³f®ë÷\F($ÉB!„ø7«»òh¨?$ño©ß¥ „B!„$[!„BI²…B!„$[!„B!I¶B!„’d !„B!I¶B!„B’l!„B!$ÉB!„B’l!„B!„$ÙB!„BH’-„B!„$ÙB!„BH’-„B!„$[!„BI²…B!„$[!„Bq7ti!„Bˆ;šÍ&‰D‚jµJ<§\.sþüyªÕjÏïY,úúúèïï硇Âd2Ýôý2™ ™l†¥Å% …ËËË”J%ŒF#CCC8FÇF±Ym  iÚm·±Z­F) ¬,¯ÇI$¸\.Ün7 àóúðx<7}v»M©T"—Ëñ£ƒ?¢^«³mÛ6\.ÓÓÓ˜ÍfI²…B!ÄýK²WWWÉår¼ýöÛÄb1þ×ÿú_¤R©žßóz½<øàƒ<øàƒì{`ß­“ìl†+W®ðê+¯²´´Ä~ô#–——Ð4gžy†ááa>õ©Oá÷û ƒwL²+• W¯^emmÇsüøqŽ=Ê–-[˜˜˜àÑGeÿý°‰Û&ÙÅb‘ååeþÇ7þ©TН|å+ŒŒŒ°yófI²…B!Ľ©T*Ôj5.\¸ÀÚÚÇ'—˱¼¼L¡P ŸÏßð7Åb‘Ë—/³iÓ&Ú­ö ?_XX`~~ž .ðöÛo3;;K:&N«ßiµZ¼ûî»Äb1Êå2>Ÿ\.‡Ïçc×®]X,–ž÷ìŽ`/--ñÿøÄãqæææXXX ö|þÇý8áÞ«ÕjquaK³³”Ëel6ÓÓÓD"‘[^0H’-„B!Ö¥ÝnS©T( >|˜Ó§Oó½ï}O•tÜJ½þÿ·w§ÁmÝ÷½ÿߨ÷•H¸Š›(.’(K²ì¤–ã&©“iÓ&ît¦äI—LÛ;IŸÜΤOú¿î2·ít’δ÷ßdz3mãÔQc_»±ã8–-Y«µP¢DQ¤¸ A;p°ü°<1L9–%’–äïkÆã!žƒsˆó9?|Ï÷§011Áž={¨×7‡ìééi~ò“ŸpêÔ)^}õÕ\÷ØØo½õ.—‹R©Dkk+½½½›‚ñÆöØØßþö·Éår ÿžJ¥H¥R\¿~FC ÀãöÜ9dOO3>>N¡PÀëõÒÅÒ\´ IDATÕÕE(’-„B!î¢(üä'?áæÍ›¼ôÒKܼy“B¡€Ïçãßø~¿ŸH$‚ÉdÂbµ¢yßï;¬V«úóòò2ñDœ·Þz‹ÿóýÿÃÊò Ï=÷­­­|úÓŸÆï÷P.—yóÍ7™™™áŸþéŸH§Óüû¿ÿ;=z”ææfB¡zýz$Íæ²ê¨x¹\fdd„?ùÓ?! ãõzI&“$“I^zé%¾÷½ïqãÆ ÞøÙtuv©e#õzT*ÅÚÚ/¿ü2.\àË_þ2áp˜H4‚ÇíA«ÝþÞ²…B!QµZ EQ˜åÚµkܺu‹¥¥%¬V+ÍÍÍôööÒÒÒBWW&“ ›Í†F£ù¥Ë,‹¤VSÄb1nMÞRßµk  ×C¶R&£Óé°X,är9fffÐjµ$“I, -Á–† ‚x<ÎÊÊ õz·ÛÍÀžZ[[ $ âñ8/^`uu•¹¹9Ê岺Œz½N¡P “É033ÃÌÌ ¿ñ¿A$Áfµm{-¶„l!„BˆG<`ÏÌΰ²¼Â©S§xë­·ˆÅbêv8ftt»ÃŽÅlA«Õ~hÀXYYa||¼¡>`dd„½8Ž_Mž={ðûýØív–——õzïk×®‘ÉdhooÇhX¾kkk¼ôÒKÌÏÏS©T°ÛíD£QÜ7.· «ÕJSSW¯^eaa?ù“?Q×Y­V¹zõ*ÓÓÓ$ ìv;$c4wlÿKÈB!„xÕëu²™,«««,..²°°€Åb¡³³“P(„ÝaÇd45´ïÓh4èõz4Z zÝzT|oyE.—#‹mºYÒãñà÷ù7»]n굺Zë#ÖËËËX­Vªµê//+LNNªNt:6›M áFƒqý¿ÿZG.—#—Ë¡(Šza±Ñ¢pnnŽjµŠÃáÀçó­ó:T*ªÕ*õzJ¥²¾}:-ZƒÁ€F£Ù’r ÙB!„ j­ÊÜÜ·nÝbmm­!DFEáÇÿñcÖÖÖxë­·Ô› £££‡±Ym455©Ásbb‚ï~÷»ÄãñÆ0ívÓÔÔÔ¦µZ-.· ­VÛðx±XäÚµk‹E*JeË.*ÖÖÖX[[ãÕW_åôéÓŒŒŒÐÕÕExW›ÕÆÄÄ™L†Ë—/“J¥¸pá:ŽÖÖV‚Á ÄíqÓÙÑyßA[B¶B!Ä£¨¾Þ#S,Âh¹\&ŸÏ311A<çøñãêÈt[[V«•l6K0¢â®àñxÔМN§ß´:£Ñ¸©Ã¬>›L¦†R”J¥B2™ÄãñP«Õ., :Žju}„»V«Q«ÕÐjµÔj5êõºÚíD£Ñ ÓéÐh4›j±¯_¿Î3Ͼ°°Àÿüÿ'zžx°Þñccäø½õÔùu X,–†Çtz.— ¯ÇK{{;+++¬¬¬P,©V«èt:L&V«¯×‹ÏçÃårQ.•ÕðH$ðx<4·4c6›Ñh4$“IVVVP£ÑHKK Á`P(„RQ¨×ë$ t:…BD"Ñp³¨„l!„BñKiµZ¬VkCÀ0›Í<ñäØívÌf³:íúìì,ÿüÏÿ̳Ï>ËýÑáóùxâ‰'˜¾=Ý0ÍG  z=¤³³³¡,Ãn³388H8Æér[Šqúôi.\¸Àùóçd``€¾¾>vïÞMOOÝÝݼòÊ+LMOÇ1™L8p€Á¡Aœ.'éµ4/½ôW®\!—Ëa6›‰F£CA z½žÖ¶V–——1 Äãq~ô£Ý÷~–-„BñˆÚ¨K~í3õÍÏÕh4X-ÖMBêõ:ù|^½AÑd6áõz7µðÛèQýþIm6Ðw»Ý8Ά ¯Õj1™LØvBÁ½AíÉ](èî­H$B8Æív£×ëY]]eiqI¥v88ìô:½:Íú{ûzFµ÷¶F£Áh0ªac{ …‚„l!„BÑÈ`0ðôÓO‡ù×ûWuÔ¹V«±¶¶†ÕjÅår}h›:‡ÃÁ¾}ûèèèÀïó322B.—ãÊ•+êó’É$‰D¯×«NS«ÕX]]%¹šT'Œ°Z­ FÑ6ÇÑíj­Ê‘#GP…J¥‚^¯G¯×c00  b±/¾øbC-vww7~¿K&•‘-„B!T­—{½ížÅü‹Úg¥¢ÉdÖG{5ˆÖëu ÅBÃì°^Fâ÷ûq:Àz·ÛÍfkx^.—#“Íàt91ò‹Yóù<ÙL¶a4[¯×ãt:×ׯÙ„7F´¬ënc6›%“Éܱ[§Ó­ï·ÛÃáPG³Ëå2e¥ŒÑ`¤V«Q©TÔ‹FƒÓéÜ´}²…B!:­Ž¶¶6Ì&3n·[}<µšâÇ?þ1Ñh”ßþí߯ápë³0¾ùó7¹zõjÃä5¡Pˆ§žzŠööv‚Á £££LNN6¬ïìÙ³¤3i>÷ÙÏ©Á¸R­pñâE&oM6”kX,úúú‡Ã÷Õ*ïöíÛœ9s掵Øï½Høüç?Ïž={øþ÷¿O±Xdff†J¥B4¥\.399É­[·P…H$³Ï>ËÀÀ€„l!„BÑH£Ñàr¹¨(ëaraaÙÙYòù<7oÞ$—ËqöÜYö_„ìK—.155…¢(èt:𛛉F£´µµÑÒÒ¢䦦&‚Á ¬,¯°¶¶ÆÔÔµZ–æuÒšr¹ÌØØ333 4 ‘H„öövü~?¯çžJ:*• Õj•D"Áµk×ԑꦦ&Ü.7ý/‚»N§# Q©T0™Läóy®\¹B<'S.—™™™abb‚R©„Õj%‰$d !„BˆFZ­–h$JÀà©§ž¢¹¹™^xééi~ðƒ Ñhøßÿû7„ÜÉhE! qìØ1†‡‡9zô¨ÚnÏívãr¹Ø·o¿õ›¿ÅéÓ§ùÙÏ~ÆóÏ?F£á;ßùŽZªñþe:ž}öYZ[[éïïÇår5<÷nå y2é çÎãïþîïøýßÿ}:;;éèè ©©©a› ÝÝÝØl6, óóóüùŸÿ9Z­ƒÁ@­VCQªÕ*årÇC?¡PHB¶B!„¸sÐÖôD"êõ: 4·4“\IR*•˜U»Žh4‚Á f‹™&o¡Pˆááa:::0™LèõzõyŸÏG__ßz}s¹L<'ŸÏ‹Åê¯}>‹…`0ˆ×륿¿Ÿ––L&Ó=l€|.O<guuEQ„Â!Ìfó¦‘q­N‹×ëE©(ŒŽŽ‡ÕiÕc±Z­–ææõ‰yü~?øý~\n—„l!„BqgFƒ‘_yêWPÊ ,--ñî»ï²¼¼Ì÷¾÷=µVÚb±pìØ1ZZZØ·oÍ-ÍØ“ɤv y¯={öÐÓÓáC‡øÌg>Ûo¾Éüü<¯½ö Àz©ÆáÇ ‡Ã<ýôÓx½^öíÛ‡Åb¹¯ZìÙ¹9N<©Ö… 144¤Þœùþíïéé!ò§ÿíOI®$yã7H$?~·ÛͱcLJÃ:|ˆæ@3###2­ºB!„øð ­×éñù}èt:ŠÅ"©TŠ/~ñ‹är95dŒŒàñxصk^¯«Õú£Í:N‡Ûí& ÑßßO À`0L&õR½{÷âóùÖ'˜q:±X-jê{e·Ùƒ Q¯× Øl¶_úZ&#Íf,f {÷î%•J¡Ñh°X, àóù…¸Ý. Ã}·ÿ“-„Bñ  Õjéìè¤ÖVcxx˜z½Îïþîï6C½FƒN§Sÿÿa~¿Ÿ¾¾>êõ:Õjµaâ›e½wÙ÷«»»›ÎÎN>ÿkŸ§V­©e"¿,oŒh×ëuFFF¨×ëT*•†íÝx[Ñ_[B¶B!Ä6Ú˜ñ0¹šD)+Fôz=n·{Ç'Ky}ÿìŽ÷ºÌ0½S6FÑßÛûnoãbb»IÈB!„Ø&õzB¡@¡PàÕŸ¼Êââ"­­­¸\.žxâ µc‡xô<!;›Írúôiššš¶}]Š¢pãÆ ‰…Bz½Îêê*³³³¼ýöÛ˜Íæ»ZÎ{´—J%®^½Š¢(¸Ýî;Þ<ðQär9&''™››{àŽ•¢(d³YÎ?×Ðt~;LMMa4Õ™¦¦¦Ô÷ËýÎÒt/òù<‹‹‹‹EjµÚCù°¼¼Ìùs癙ݱ}8>>¾iv±»‘N§I,'8wîœZû·Õr¹™L†ååeõoy§Þß°>+ÛµñkÄ–bèt:ZZZhjjÂëõn鈑Íf£­­L&ÃÚÚ6›íŽwèï”R©Ä»ï¾Û0ÆýH&“\¿~¥¥%õo5•JqõêUNœ8A2™$N«Çy;^Ãû]ºt‰™™²Ùì#.Òé4K‹K\¹råŽ7¢Ýëg~b9A:V×qãÆ ²Ù,V«õCÿ–®\¹Â‚úûÛ©V«Q¯×#™LróæM’É$ï¾û.Ùl–§Ÿ~½^Oº$Q ÙÿëÏþsuF¢íT©TXZZ"N“ÍfÕ=5=Å믿~×wšŽ7Ï .°´´„Íf»ï¯(ŠÅ"ñxœÛ·o?pǪZ­²ººÊ;§Þaæö̶®krrRýšË`0pëÖ-R©ÓÓÓ÷}!s/Êå2sssäóù‡öayy™“'Oâp8îú‚ò~ÍÏÏä]¯×Y[[àä{î.ßjÅb‘b±Ø²wêý½q¢^\\$“É Óéðûýø|>šššÐh5[²#‘ét—Ë…ÝnÇd2}¬!ûwÞÙ²„l6Ë7Ônù|žd2ÉåË—Ñh4d³Y …¦½•¯áý¦oO355µ#k‡T*ÅÜÜ.\زÏÄx|˜ÕÕUÒé4ÝÝÝx½^ì6{ÃóÌ3n›öövŽ=Êüü~l6ËÛo¿ý±¼¿ßÏáljìŠ`6™7•CØívªÕ*ííí”J%–––X[[ãäÉ“;öëõ:Š¢ìøû[«Õò¹Ï}ŽH$¾}ûèêêÚòIÿž~–—°Ûíh4J¥ÒŽ„lN‡Ùd& 2<<ÌÜܹ\ŽÓ§OoÛ:«Õ*ù|ž±±1ÆÆÆ>ðXoçkØXjmmÅï÷ÓÑÑAGGÇC²Í&3‘H„h4J4eff†……… ¿÷{|ýúõ{Ú碴µµa±Z¶ä³¡R©0;;ËéÓ§9yò$¯¼òŠ:êþþ÷ß;#ÕjåüùóÛ7FâÃíÛ·l6Ûò5 f“—ËÅã?N"±^{•J¥¸ŸÉdÔ:k€H$BKK :nÇFQ7¦5exx˜p8¼¥'u“ÙD6›ennŽr¹ÌíéÛøþ†0o6›q»Ýôööb±Xðx<[2*p7VWWY^^&›Í’ËåÔÙš|>ߎ|ëñ'³™cÇŽ‰DðüX,4šs$Ûårñä“OÒÞÞN>Ÿ'—Ë‘Ïç7>褒J¥(‹,--‘Ïç±Z­Øl6ÚÛÛ?òHxgg'O?ý4áp³ysÈÞ(µ:xð »"»0 ,.,îØ{íýÛi6›immÝ‘÷»Á``hhˆæææm aÉd’×o055Åää$‡ƒ|>O×î.\¸¶uÛ6ÚeuvvrìØ1EÙ±R¸X,Æìì,¥R ­VK[[ÛŽ~¦ÓéhkkÃëõ288H0|xC¶ÙL4exx€ÙÙYõ>™{U.—¹qã†Z¶åp8ˆF£F¬Vë=}®nìsÇÃèè(---›¾¡½Ë+ËÄ–b\ºt‰“'O211A.—ûÀÏÒT*E>Ÿ§T*=°ç­­­Tªjõ{pxàBöF[›Ñƒ£¤×Ò,--=!;³´´¤Ö’vuuÑÛÛ‹Ñhܱz`ǃÛífdd„ÁÁÁ­=Z ³…z½Îôô4Ùl–öööõ‘­÷¬Êd2a2™Ø½{7Ñh“ÉtWm+ÌÎÎrëÖ-VVVXYY¡­­ —ËEggç¦÷>Ù<~ôqv…wa·ÛèQ §ÓÉáÇimm%™Lªß\ÜÍ1|o½ðƽ >Ÿ·ÛÍèèèG =zôÿÝn·cµZ×§øíì@)+jív›ŸŸß´V«•‘‘¼^ﶯ_¯×ÓÑÑÛíÞ¶=vuŒË—.sþüyõëþr©¼#Û¦×ëioo§©©‰ÔZŠP(´#Çu||œb±H>ŸG§ÓÑ×ׇ×ëÅãñìÈçø{ëÀÀÀ޼—¶‹Éd"‰P«Õ°Ûíܾ}›–––ûZf>Ÿ'›Í²¶¶F>ŸÇï÷388ˆÕjÅãñÜS8}ï>ßʿߕ•®_ãüùó¼òÊ+är9umã\ñàJ$T”Ê=×Î?7>nŒhã‚Çüž:l·7npüøqõd£žÐf³íXW†€ÛÜÒ¼åË®Vª¤R)–——™¥R©°ººúH£Q]]];6sæÌ’É$©TŠT*…Çã!óøãã÷û?¶÷†N§#à`2™š ‡ÃÁÁƒÕ仡T.]ºDl)Æøø8ét¯×‹ÃáàÉ'ŸÄåúh# wó|FƒÍfÃ`0pðàÁëÌpîü¹MÛi±Xxì±ÇhmmÝöõkµZœN'&³é‘m÷¥×ë±Ûíìß¿ŸîÝÝ;²NEQxçwÈd2˜L&:::hoo§µµuG>ÇÅãêv»ÕÑùŽŽŽûZÖêê*'Nœ X,’N§ ‡ÃêÅHkkë=uØÙ®}ðØ»w/N‡“ÁÁA¦§§¹yó&gΜ!7|®j4öïßÇ㡳³sÇîÝÆ ÁxoÇè Ù#£££äŽ7›Í õ®é`0ÈþýûÕއ]µZemmd2Éää¤Ú5äƒBÍ{G£ÚÛÛwä5¦Ói.^ºˆV«%ŸÏãõz ‡Ã8p€H$"Ÿ1dïÛ·ï#ýNY)£”,æõU6›UO`Ü– F£~K±“£~ù|~ÓvnŒd÷÷÷Ëh‹B¶^¯ghphÇÖ9>>N¹\&“É ( íííìÙ³‡Gâsüãàr¹¶lßÅb1L&år™l6‹^¯§··—`(ÈÀžøäÃø|>|>Ý»»ÕÏ;G¡PàÖ­[Äãqòù<Š¢ Ó騻w/Ñh”£GJŸìüÜh·Ûïù½&“Ñ!„BlN‡V«¥§·‡p8Ì¡C‡ÔÊgggyýõ×YYY¡¥¥…h4JÿÇ2¯ƒ¸ûãi0îù[i ÙB!„[@£Ñ Ñhp:œ8N|~¥b‰•ä &³‰‰‰ ŒF#§Ó‰ÛíÞ±fbçIÈB!„ØŽ¥Ó£³ê8úøQì?À§žüår«ÕŠÑh”zl ÙB!„â£Úè.ÕÔÔ€?à§V­‘Ïç©T*T]¹-„Bñp†.tëµ¾uê2„l!„Bq¿6Bµ„ëOÈñ–] „B!„„l!„B!$d !„B!![!„B!![!„B ÙB!„BHÈB!„BHÈB!„BB¶B!„²…B!„²…B!„-„B!„„l!„B!$d !„B!$d !„B!![!„B ÙB!„Bˆ{¡—] „BñèªÕj$“IŠÅ"+++ 2™ år™ÙÙYEix¾Ó餻»«ÍJÀÀl6ãv»Ñh4w\~*•"µ–bnvŽl6Ëüü<ù|­VË®]»°Ùl´¶µb1[ƒètº_úšK¥±XŒl.ËÂü‰D‚ååeN§“`0H0Äãöàr¹î¸Œz½N>Ÿ'Nóò+/£”úûûq8ôõõa4%d !„Bˆ{S¯×‰'â¤VSŒ“H$˜ŸŸ'•JñüóÏ«xCoo/¿÷{¿GK°…¡Á!Ün7.—ëƒCöZŠ©©)ÞøÙÌÍÍñòË/3??€N§ã‹_ü"‘H„gžy¯×‹ßïÿÐ],¹}û6KKKœ8q‚3gÎpòäIzzzèêêâÉ'Ÿdôà(´óKCv.—c~~žÿñÿü’É$üÇL4¥££CB¶B!„¸wŠ¢ðæÏßäÚµk,--‘ËåH&“ J¥Ò¦çÇãqÞzë-cWÆhkkãWõWq8´´´¨Ï›™™azzšk×®qùòe&&&X]]euuU}N­VãÆÄãq …‡t:Çãahh“ÉÔ°îì¹¹9~ô£‘H$˜œœdff€X,Ö°þ'ž|€`KpÓ²jµ·gf¸91A¡PÀb±Ð××G8Æ`0lû~—-„Bñ«T*¼üò˼ð wõüd2É‹/¾¨þ|äÈ:::…B !{zzšŸüä'œ:uŠW_}õŽËª×ëŒðÖ[oár¹(•J´¶¶ÒÛÛ»)oŒ`ñío›\.×ðï©TŠT*Åõë×Ðh4ššš ¾^ÂR­V©×ëT*•õm×iÑj´ 4MÃöKÈB!„÷¬¬”¿6ÎÄÄDCïì`0Èg>ó:::˜˜˜à»ßý.ñx¼1LÿW­÷{ôV«Ååv¡Õj/‹\»vb±HE©lÉë¯×묭­±¶¶Æ«¯¾ÊéÓ§¡««‹ð®06«‰‰ 2™ —/_&•JqáÂt:­­­ƒA<ˆÛ㦳£ó¾ƒ¶„l!„BˆO ëõº|—––X^Y^¿)ò¿F°ý~?»víRK4Òé4ããã›–g47uø€õÑg“ÉÔp³a¥R!™Lâñx¨Õjêã‹Å‚N§SkÀkµµZ ­VK­V£^¯«¯Y£Ñ ÓéÐh4Ôëuu¢™™®_¿Î3ÏO6“mÍÖëõ8NZÍæ ¼1¢ `µX?pÛ²Ù,™LF­¹öx<4·4c6›ÑétÀúHµÛíÆáp¨£Ùår™²RÆh0R«Õ¨T*êE€F£ÁétnÚ> ÙB!„BU.—ùáÈìì,‡¢¥¥…p8ŒÑhÄb±¨á¹T*qæÌÆÆÆ(‹êïG"ž}öY€õ GGG™œœlXÏÙ³gIgÒ|Sƒq¥ZáâÅ‹LÞšl(×°X,ôõõ‡ï«UÞíÛ·9sæ ñx“ÉÄÄérªÏ1›Í|þóŸgÏž=|ÿûß§X\¿A²R©F)—ËLNNrëÖ-EÙ´½²…B!Ä&µZD"¡NêR«ÕÖëMF¬V«:’\,™ŸŸ'‹5Œf[,ZZZð6­w!1™L8œN'.—‹\.G¥Rayy§ÓÉ‚Úu¤T.±´´ÄÒâ’:Rìp8hjjÂáp¬w+Ñjîi›êõ:™L†………;ÖboÐê´x½^²Ù,ƒry½ÝßFw“r¹Ìââ"‰DBí÷ù|¸Ýn ÙB!„âΪÕ*çÏŸçøñã¼ôÒKFµüã½å"õzt:M±XlɃêä4‡ÓÁ¡C‡øêW¿Ê¹sç8qâÿò/ÿ‚Édâÿñn"L¥R”ËeÖÖÖ°Ùl<÷ÜsD£Qq{Üô}$;—Ë‘Éd8}ú4û·Ë—¿üå¬Å6Œô÷÷ãr¹°Ùl,,,ðgög , µZB¡@©T"ŸÏãmò2<Ÿ›ÍFWW^ïz€miiÁf³©>î%dÇb1âñ8Éd’P(D{G;V«U­ÅV·_§%P§Îèèhôê·oß^ï²ÒÜŒÃá ££ƒZZZðx=²…B!ÄF¾üå/ó©O}Šééi–——¹té©TŠ'N¨ý õz= ¼+ÌGŸÀç÷ÑßßÃîÀï÷7´åسg===:tˆÏ|æ3¼ùæ›ÌÏÏóÚk¯±°°€N§ãðáÄÃaž~úi¼^/ûöíÃb±ÜW-öìܧNžT뇆†ÂétnÞ~ƒ‘žž¢Ñ(úßþ”äJ’7ÞxƒD"ÁñãÇq»Ý;vŒp8̡Çh4322"Óª !„B< E¡NZµF­^Ãb¶l ®ÛA«Õâmò¢×ëÑétø|>ŒF#Ùl–ææfJ¥°^kÝÕÕ…ßï'âöxhò6a47õ¾ÞÐ:·ÛM(¢¿¿Ÿ@ €Á` ™Lë]IöîÝ‹Ïç#ãt:±X-÷<‚½Án³ ¢^¯°Ùl›F±ßûZ&#Íf,f {÷î%•J¡Ñh°X, àóù…¸ݮ†n*²…B!PmôÊå2ù|žZ­Fkkë¦iÅ·+dwvtR¯×©ÖªP_ïú¨³=ªÏÕiÑjÖ§-×h4 mð>H Àï÷Ó××·¾Žjµaºõeéõú†eÞîîn:;;ùü¯}žZµ†ÙlÞTcþ~#Úõz‘‘êõ:•JE}Mï}[Ñ_[B¶B!Ä6P…Z­F2™$ŸÏ³°°@¡PÀáp`6›ïØz;ƒöFàúXoõ²wÂÆ(úGݎ׸7²…B!¶A6›%›ÍòÒK/qóæM^}õU’É$ð@WW===ê̈âÑ#!{‹‹E2™ÌŽÔVi´Œ£:µ¨ŠR©D.—caa¡¡ýÓÃ.‘HL&ÕºEñè©V«$“Iâñ8óóó¤ÓiÙ)Àß]¡Xh˜ŠûaxUkU²™,étšÙÙYÖÖÖ¸qã333ÌÏÏ“J¥H$8Nfgg±Z­r°PF“_“ïžËG$¡m‘x<Îõë×±ÛíØíöm]—ÉdÂï÷ãñxîx­‡z½Îòò2z½žüàÛþw°“®_¿ÎÊÊ ËËËr QŠ¢ðÎ;ïpûöm.^¼ˆÅb‘ò1Ëd2,Ì/Ífê{dÅb‘l.ËÙ3gyûí·y饗˜žž&—ËQ«Õ¨V«hµZ.^¼Èââ"«««2’ýÛµk_øÂ0™Lêï²w€Ífã©§žbvn–3§ÏpåʪÕ*f³ùžÄGa0p8Øl6Ìfó¶¬#™LröìYâñ8Õj•D"Á;ï¼ÃÒÒÒ¶oߦ7©^ÝnW›ço˜œœ¤¢T…BX­Vº»»‰D"Mòµ´šõ´ŠÅ"‹E‰ œ8qâ‘:qlôSÕëõƒA‰F£Ì”Õj%ØÖûÙŽŽŽ‰D°Ùlô{¸¹¹™OúÓ¼ñÆÄb1ÆÇÇ™››ÃápÜwë.qÿJ¥+++èõz>Ìàà ^¯»Í¾#ßKKK,..róæMnܸÁÔÔLLLËåž[«Õ˜šš"‘HH$äéØàà O?ý4Z­VBöN²Ûí8p¯×Ë…ó8wîgΜyd·wmmŸþô§Øl6&&&v|_G"u¦¦ ËËË(ŠBss3tuu0›Ìò݉­ÕâñxÔ;ä …‚ZVñ³Ÿýì‘Û^FCkk+^¯—þþ~ÚÚÚ°XÑN›ÍFKK .—‹¶Ö6FFFÔ‰"e---Ík¯½Æ¿ýÛ¿}èó§§§åÀ>$ŠÅâ=hJȾ?ú'žx‚P(ÄÙ³gÉçóäóù-Yv½^'“ɨm~´7ÛÌÌÌŽ®Ód2±šZÅb¶4ŒŽf³Y2™ ?þ8ýýý´··ÓÔÔ´m£ûbsèôx<F†††p¹\d2™-T«UªÕ*ñx¼áNüæææýVEoÐ3°g€ææf†‡‡‰D"ØmFIL,ãÌ™3är9òù¼:Q„×ëÝño®vR(âÈ‘#œ?@ýÜ}Ø•ËeVVV¨V«Ôj5t:&“ ›ÍöP–Á„ÃažüÔ“D#Qµgóƒ6’ E§Óát:¹yó&ccc$“É;v±Z­FÇ·-âü~?zƒöÞŽ‘„ì{ät:9rä~¿ŸÝ»w“Íf7MMz¯jµ‰DB=á=HªÕꎇl~Éàù§?ýizzzhooW§|;²½^/N§“þ={ðx–¯‡kµkkkjú¨_×vvuâö¸¥®íc¢Õj ‡B¸].ž3<·å]r¹¹\Žï|ç;Œëßn|å+_¡³³sG/*ü?v›‡Ó!þò©O}Šþ=ý”Kåí[¼M?øÁ˜™™aff†öövº»»¤¯¯ï¡Û›ÍöД.555Ñ×Û‡Óádpp .Ç9}ú´Ú#[«ÕòØc‡9pà€|ûúóù|Øív Æ{»GCRÉ}òz½|ñ‹_|è^w,ãÕW_%ŸÏS*•ðz½üÚ¯ýMMM;þZ*• ±XŒb±ÈÜÜÜG>Éu´wàvIÈþ8Cv(`÷îÝ[¾üµµ5R©?þñÕmµZyæ™g8pà€qߎ9òHmÏÍ›7¹ðîµ¼/«7p=zTø6‡ì¦¦&º»»ˆD#ÌÎÌ’H$Èf³”J%t:ƒƒƒôööò…/|á‘¿÷á“LR‰h`0…B;Z#V«Õhii¡R©¨Ó~ÍÍ͸ݲ…Bìv;:NvÎCÈbµ°w`/n—›]»v±gÏ:::p¹\²s„-„ël6V«•ÿþÿZµ¦>¾¸ÅýÙ7‚Çã¡R©P©TèëëÃétb6›eç<„‚-A¾þõ¯S¯×©ÕjhuZtZz½œò…-¶ÿÀëõôõõáp8X]]Åçóáv»±Ùlh4ÙAâ¡ÑhÐh4X-ª·íBÆj#РV­Q­U±Z­ ´Z©(|iµZ,‹ì!>îóW½^¯Ënøä)•J\¸pB±@¹TÆh4Ò×ׇÙlÆårIÐâ¤V«ñÞSÁÆ…|!Ľ“‘ìO(­VK“¯ ¥¬P©TÐô˜L& ƒœX…ø~!„ØZ2’ý V­Vïx¢•-„B!![!„BˆŠ|G(„B!„„l!„B!$d !„B!![!„B!![!„B ÙB!„BHÈB!„BÜ•ÿ§A_ щ“IEND®B`‚cdhit-4.8.1/doc/cd-hit-otu-miseq-Figure-1.png000066400000000000000000003513071343604040700205520ustar00rootroot00000000000000‰PNG  IHDR׬?¸žA iCCPICC Profile8U]hU>»sg#$ÎSl4…t¨? % “V4¡´ºÝÝ6n–I6Ú"èdöîΘÉÎ83»ý¡OEP|1ê›Ä¿·€ (õÛ>´/• %ÚÔ (>´øƒP苦ë™;3™iº±Þeî|óïž{î¹gï蹪X–‘š®-2âs‡ˆ=+„‡ ¡WQ+]©L6O wµ[ßCÂ{_ÙÕÝþŸ­·F qb³æ¨ ˆð§UËvzú‘?êZöbè·1@Ä/z¸ác×Ãs>~ifä,âÓˆUSjˆ—ÌÅøF û1°Ö_ Mjëªèå¢b›uÝ ±pïaþŸmÁh…ómçϙŸ>„ïa\û+5%çáQÄKª’ŸFüâkm}¶àÛ–›‘?ÜÞš¯¦ïD\¬Ûª¾Ÿ¤­µŠ!~ç„6ó,â-ˆÏ7çÊSÁØ«ª“ÅœÁvÄ·5Zòò;À‰º[šñÇrûmSžòçåê5šË{yDüú¼yHö}rŸ9íé|èó„–-ü¥—”ƒăˆ¡FAöçâþ±ÜJjåI.’£[/ã]m¦èÏK 7ÔKëúR ÿD³‹r€¯Y«QŒOÚ-¹êëùQÅÎ|Ÿ|…6«¾ ³ (˜0‡½ MXd(@ߨh©ƒ2­Š_¡fçÀ<ò:´™ÍÁ¾Â”þÈÈ_ƒù¸Î´*d‡>‚²üެÓeñ«…\c?~,7?& ÙƒÏ^2Iö‘q2"yŠ@ÿ«g Ÿ|UP`þo pHYsgŸÒR@IDATxì|eÆßÙBMB¥ˆˆbïëÙ±‹]»wz* * ¤R” êØ=õ<±wÅ{/Ø(*U¤&¡†dwçžwfgw¶%›¾Ižß03_}¿ÿlÉ>óÎûÂD$@$@Í›€Ó;0bŠkq¾ÛîØÚ¹Ê*pü ¶ÞØzºòõð;lØvÑWZŒcíc„ _WΫï~–8¯~îòûÃy-ð»¶iýÍŽ ·-°9×{      B 5æiFlÿ Ìý‹ˆüüIùÚ~¶“bä_<ŽΘ¬ÂyðuÎCßOÿÁ¦‰ïÁ~–„X8ŸÙü, gÂÏ’pü,©ÿ¿Kâsúlcô›‰H€H€H š@jtsH€H€H ÙŒ™œŒm(6õºrÒ²ÀÁhì;9™Øo ?…ý·®|=\‰m#¶óõÄ•¾Âq9¶È|ŽÍ„¬øºrÞ:|ðýá¼ø¹ýZàû#š ¿?çûc Þ¨Wa›ä¼a¹'     h9 1Uõls‡~i9³çLI€H€H€H æZ¡©þ5±æ]°% 4o‡–‰H€H€H€H€H€H€H€H€H€H€H (®W«’ €`Ìu¾H€H€H€H€H€H€H€" èš2bÓug˜H€H€H€H€H€H€ZLÌ·6£…Í›Ó%   ÚпŸÅÖ§¶±= 4W)Íubœ €ÀŽØöÂö+6?6&    Ä肦K°mÃö¿Äš° ´,Œ¹Þ²®7gK$@-À˜ðóØ2ZÚÄ9_       ú%@q½~ù²w          fH€âz3¼¨œ @ýH­ßîÙ; @$à…Í·`û¢ ÚN“I€H€H AP\oÌ„H€H ‘h¼õ_°•5Òø–H exÓMwMù[ߎ­Û®|¬NÁv¶+\ùz8›.À|·ž¸Ò£8~ÇA!+¾®œWßõ÷Ybò—hîI€H€H€ P\çÁ3  æEàgLç7l*d1‘ @}ÐE“Û`ëƒÍ-®/ Ø5P8•òÀA‡ˆ|Ín…Í#?S ‘zas/ÒÌ1lîœÀdÍ„¯«p&|&öYbà=µ¶¥Ø>ÀÆD$@$@$@$@$@$Ђ¨·¨z\µkAsæTI€žÀ0 ©Ÿ5*®3‘ @s! 7eô³-òIšæ2?΃H€H€jM€ šÖ!;       fGÀyçÀf73NˆH€H€êˆÅõ:ÉnH€H€H€H€H€H€H€H€H€H€ZŠë-çZs¦$@$@$@$@$@$@$(]\YÓ:{ÇÿI€H€H€" P\$Âs  æDàLælÍiRœ @Òø égͦ¤³Œ‘ @Í 8 Âëg @2Pg1¶¢ê² ´Hô\o‘—“& Cà˜éØÚ´˜s¢$@Aàb ªŸ5=cpŽI$@õDÀD¿;`ÛVOý³[  hò(®7ùKÈ TB ÊöÀÆï»J ±ˆH Ö:£ý¬I«uOì€H€’‡€ó™vHò˜DKH€H€H ¹PlH®ëAkH€H€H€H€H€H€H #Ò“ÁÚ@$@$@ÉH€âz2^ÚD$@$@$@$@$@$@ÉAÀ—fÐ   H>דïšÐ"  º#°]éB\þºë’=‘ @äèg7ª„$@$Ðt ”Lÿ¸éN–“ @Ãh…á~ÃVÔ°Ãr4  h:è¹Þt®-% ¨>Áh2›þ8d" ú"p:ÖÏšŽõ5û% F"Ð ãnk¤±9, @#(ÄØ&¶vh‡&hþ†aŠúYÓ§ùO•3$hAÚ`®úÙör š3§J$@$@Õ"@Ïõjábe      hR³ìÚ"fËI’ @ P\¯46!      &N@C¾ü‰M~_†­=¶DÓhTÔOu!ç»mÄz$@$@$ÐÜÍmBœ 4i3¤ ~âhÜÞMzÉbüK²›Ì‘]åVydõÇSí R|XÎô4Ò¬ È`[}â-Åõ Ô)¿Ü‚þZckZŸGÀâðYÓ^Nlb–«4æÍºX!Åu@`"F mÄ|Âù1ØfGä;"º“ý"ó2œBîI€H€H % ¸Þ’®6çJ$ü|Á* ÛUWK%:ݘꆀñ0úÇtÝôÍ^HÀ& bMÓûüSßNÝšfÒ÷5 @Ë$ƒiÏÂæåº [lî´ÑurޏÎõp¶•y<%  A€âz‹¸Ìœ$ $ K:àgü·x>c‚€\Žc}R#±4Yº#èÆ£¸i2ª—™ cäëÄjå#P&üŠÛ'!ÆÕ°!qOéq²‚ =$íd¸l’Iè'ÿ¾ôžØ®@FbD•cÂþ4Øpeµlá£B p¸móaÜÄÔÊ—«ûÿ†í/hÿ÷jÙ0Nzðaz™"©r;zÔ0L$@$@MƒÀÿ`æWØt™ÛÇúý0›s³Só4©øþ¯À^Ï5é÷çëˆÿ‘ @ $@q½^tN™H€H€…@ü?Á§bÓç*¨{¤Àwÿ–=E’%¥ò6êî)[­ÇÖÓ!îyýpȺ ê£Bº_&Zu}A6ã\EÿªÓÄ”­Q;Âú1اc>É2Hn“…Uw€¸¡à‡m'‡ÃVœþ#WùîÉFõ4Ü=ÈAäPp¿TÞ8Pš!Ý”q3F ص û‘¼Êw¤K€Ãθ‚ߣ¯V¸û8,®¼1KI€H€’ˆÀ°åwl).›rp<›£8žê÷!/rÑÓ7‘W½ÌhÀD$@$@Í…€óøWs™çA$B9 ÂÎ^VUùi»Ž-’Å.K$—㇛Ò"Õ‰ chpvX˜Ùð²ÖhöÕK…ðÎöË x}»¼Û}ds! W–ìÅ~g¡ýa1ª-— ä²<°c²òå´ÿ/ÎO¼P],ȼ\Yº¾êk‡ÖDtíè´܇Á'~Et‘+§P·™q8ZV¸ªGN‘¶²YÔÓðà¨2õ@·mX£,”•/`ü'‘‹Ãhp˜ªãh:žì¿§ ™ ¾#°f½«Nè0¡WD^G};:·ø´¦¬BÞÞÁJ<èsåîà¹û`&lŸgÍÁ}sC•SÁÃá°·͵î¦Áã|‹¡²L³ò x+šR‚ã=‚u ùl˜Ïõ}íËês4ö]»â3ã\Q“‰ê‹€~~«ˆÞÎ5€>Õ¤ßÓßb{ [?l‡`s§<œä»3xL$@$@-€óC¬¥Í›ó%  ¨.ý™m"ζ)×El'à§õ\ø}ïÕe~˜ûEÅx[X¹©r|ŸEÞ®úSЇ «áÉ„h¼RþñBºá7à„6 ¥Sò¶¨Wud/oõš ëëÐö8ÈË<ßUýÌáB×¹}¨bp±<·°>¾¤g£ý°`}óß^½Ë#Ó8ij5å%l¶°.à ØÐÁ²a®«zlø«ëÜ>Tó-os·°þOË\謹 ‚»¼‰Hðí]yöa<ÊMy›#¬¯±8¤[6ü¬oÊ?q-Î ž;ïáÊ-“gpz”“…ýTñC0—P8B}9n"èÓ‘©^ÿóðÏ›ѯ£ë"«óœH€H Aè7¼>9©{'©à®ŸùšT7ˆ|bJofSXW:L$@$@-š€~a2‘ ´4ùÖcŸƒ­i›aDWŸDuŒÕ;ÇwÿˆQBYØÜâY,jÌ#Æ! á#b…u,1ªÞƼ°Óà¹íÄý.”Ñâc”u¼òìqX€ôSë\'ÝŠrSv´Îíðç@¬}1P_¶ÿån}&Ê/ÀX¶—|‚ÁøV&”>”>ï/³b¹ërl»#ø‡è#;0ÆF´ÕÅ;¿²Î'Éö¨©6ô táEùãuë\½± äa”‡„Cž@û¡(±ß¿ù¸M´¥ÿÉ®28èi:g– ¬*Ÿ·møÂ:Ÿ„pP¶ ;ºðBÎ?O„žÈÇ¡¦ë‘}bŽ\´¡TýR4Á@Ø–lܸÑÙ5ÀCß/ïãH?c4mÀµ:KÖ©G¢ }oÔT½¬s{Êg¬¼e+‡|y Ç!áßÀ²9rEІ|Äp7­Eð¬&ÈWøT¹}i02ò.޲P¶u£o8¯%«ÿköûzƲߗîA׸;¯:ÇüŽüޝ=}šÆn?ï"†…©;Ö®)_Ѱ¿«±¾õû¶ [Ûˆüq>Ë•ÇC  h‘(®·ÈËÎI“ $-Ù?al±+i¤a-–€-ÂýŽù?çb0Ð`H@)Vž†[I‡Àê“O[¬u:(”|Ï@ûmuO†¨;bnåb­ÓGžµ8hÈsZä5%9b{ÃZãQ};mu_(;l訷s:ÂñG°áN´¿)XÝ@X–#à54${wŠ ·¥¡RÂûûˆ÷6‡íÕËÑ÷)âßq7‡ ;lèÈ/Ñ“Àá}Ø06ÜêªÿftFP´v ò¤‡!Oz§ü®ð*_Æ6‡nÁ¾=r"æ÷ÓÔÚO]Pï#Gß É—i°A½d÷)øåÉ¿PáoN%ìí›!°­-¬w´ÊT¼7­›K\uõðZlÑï•xZ‡ì÷õÓ¸EtIöÊ®H€š& ¦‹“V¥è ê›æi5 Ô-ª¾4ëv4öF$@$P9Šë•óaiãPN zG.hZ€Ïüò8ÊìpsÇÛ€Lëx¤«×›p+¹ÁÇËÃç¡Þå–Ðk ¯‚À&†<ñux°¢!ŸÁ úXÊê%òà].ry°Àƒ~kÁÍ~VžÚîÐ<‚s¬¤ï=ÞÞ¦dê—†'ÐGh} 6ö†(íxÅ»û±=ÜŸ@û‹‚Ù)ˆQë·ÂÁìÈÓÈÖçÁ÷͉`uxv«­‚wÈ»\½ÃÃEíJæxÄußj8²mÐúCƒe˜›rÎûòÔ3ÿ,\ ?4ŒÍÁñ*/A¥'±…8èk #n€8^ñî^4|M¾›÷ü`¶!Ïâøôëxî«W¼^‹g¾S™ š:$nOq½áXs$h^ƒ™ƒ+1UÿèƒíJê°ˆH€H€Z ûGp‹™.'J$@$@$Pc*ÞÆJ9_=½ê­ÖUr¿.®°®ý–Ÿ.f0Úotßû¶!º@æà¸Âº6ÚU®ÆÿWÝN~ˆ·öâkvhC®Œ+¬k‹™ƒñOÅf‹Ö*²»…u]Ð-aRb ëÚ^ç~„\нNFó|ÚMxÅ;IÅÖµÎhÄ WvhÍé€ö!oqÞ„ðz%¬kmÛ†+±YO­dZ±ÓûZÇZnàDì'´¶Ãa>â´Ÿ„[%›*íBc¬÷°æð‰Uω¯\S/ßS¿ÒŽXØ ôi& ÐÝãC§aGúùeXOH€H€H …ˆíÖ¡pú$@$Ðhì°*îuh480 TFÀƒæce~Ü*ùXà²â‰o³â¥¯AçP¼ò¸\…ð8÷ÉÍv ;¢ö)Ö»jT~xŸ´“5XHÓc…S9•BÌSy£ˆÒ|ËãüZˆÙa˘ÏÉX6õ·ˆZñO'Âë½ ‹¼¥Ê½“uÁ·åàpkü1J n›–÷~!ö“aÃ`pX£fì¬Iù·Â†,„êƒý"ó`CnìÊqró^Æ„ˆ’‚ëà— ðš?³X§vtv¼ÞKñZ0·Þ~Š`1,x&º¢+'_þ1÷våð°þ è7Ï4\›Gë(Ž@$Є¬‚­]]öš8¾Û#®<’ Ô9•ët«Irœv5eP·6ÔÜ394šõá´¯.?Ö' hlÇÃ}rIEuÝbc"          ¨‚À(Wa]Eö½ª¨Ëb           èM×Z -ÖM,$@$@$@$@$@$@$@$@$@$@$@U…m«¬Å $@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@MŽ€‘L›¦ÙötL&›h 4S› Ãø­™Î­éOk¢ô¿´kúá š%N²T®‘-ÍrnœT㘠`D·Æ7¤…YÐNÉ ²­…ÍšÓ%    ZH­uuÔ„õ tµ›î™H€ê—ÞræÎØ­ßaØ{µ Ü!ý o,S’êægµçÁÍ—ÀŸò,&wnó gÖ¨Êå{Œ¿]£ÚÐ_/÷bÚ×·Ä©sÎ$@$@$@$@$PžÚ4®ã¶­Ð…õ:†ÊîH n3ã”1»1 TàºPXoÌ+À±+'àGqVåUXJµ"]«Öl\|_ׄÛ $“¸Î B$@$@$Ì Üú©mš$=eœô’GqC½@öªQwrÕnœì/3%¥Ú}hè¥ñÒCfHذGµÛkdž9Tªÿ÷Ô$Ù¶“©Ò¶ìÙ(6Œ“>»›L‘¶Øï^+ÆÉ¼1X#‚ߨ.Þ×? ZP²oÍÎ̺9mï.y]²®9³ëº%9*3;sXÚ¾]nnÛ=//¯úßÓuk{# hÆ’&ìBT¨mI3fÍ©‘@²8aa¾N6£Z¼=²â­Ûâ9@r0ÄÃfK®_#§b]•ò!ÚvÀ¶Û.€t´äÈœ„ûË—ë âÞ 9ûìOÅö„äÉ ·Ÿ ]¤\>Ƹéh³íw49RFËO ÷Q #ð>½ }<ö§£Ý°áº„Ûk\ñ ùõÛ`[>v ØðCÂ} B¶_î‡ç±W ×$Ü^Eõ ‹ƒã—b.½Ñ×á2Væ'ÜG¾ÜжQÿ9´?Ç÷Á†n«bžlF¶raj(ú¾6åi\»KjHŽ“Üö›±_Úâs®Áﳿཽ—©Ÿ“vÒ¬‹ñò{ò!‚šb Jþ  WÆ;j?ܽ˜³HôÓû}°ï‰u¼éû$ÔG¾\…6*¬k‚ãìo|Üza"æB@ôÕnÓ›W5ßôÉœš8Ççï¯åõ¨ÑEd#¨‚öÒ9¬E:dó°o¼4^âóåEüàw‹0çYoòw…ÀþŽL’Aðƒ^¯ H×'£Þc–ÐeW*ÃÎY«e$´¬ƒ¼#öFw£ah~“WP°¯«Ð±¡§eÃdØp‹üé*?̇w¶¼ý‚ïS· c6Ä÷¢œ.­d½¼„>öwu¬O¨0ÝÝÅA½úc§|Ë[ÿ:ŸnFl°ÅÿX=hš òŠör;¶Ç·Â;¸U1Hn†G}¼T1Ý'÷»ŠC6˜øf±¯Å½®òèC½ë¤]TÁ¦¨f4 qc䂨¡B¯õ¨¢„2b}Ç×¶Ï„®£JùuÔOm»™‰ÏŽsq[®žSϼžm6—¬œ…a잆,À%|Êä"i¬†`Û¢zSÌ«ñ98"l/¯×ûz—á­^S´ma=›Çî†|ƒ¯€/œSg/Ô4¿‰ÏUÃÜO¯¶ \«¼¬á)¿•ùuêEîq1 ÑÏñÄ’áP­_É—LÓ?Vé'ÿå›fÊFŒõ´["Ó‰?ù&A‹H€H€šŠëMî’Ñ`¨>¿Ïö:kG£&Žß¨ø98 T›€_Ž’M²&¬aY ðÃ|,BKDÆoV¯Íù~äçj£a]>CÞ“Ø´E´ž%–ävH®‘iÄ^BØžêZºRÓ‰šFÞ>Vu?¼¶ ]ç DKdzÞåÂÿÓDø'VX—yøÉý°•eÊŽ²ÞÜE¨3XÏ9(€m~ÌÃö–WVá¶ÅIàð(ú°År?¤qÛ{^N[ÝÏÀ‘•à(àJÑÏb´·¹iˆš-ðp=£.&2åã:úä)dëµálƒa—†ØÕÊ3ñŒ€mƒÖ Oöëá"ÜèȘÓà ­³z 1cf9ô6í]íäÔݾ±¿ãën&-¢§-¥^…‰îdOÖ˜Q2Õ÷w„/‰ºŠçÌ&VýdÖ-[í'ôp ÙJa=öµd. @]°ÕEOìƒH€H€H e0*ÅÁµbqdʇ¤k‡O±K ÔË…Ÿ{Ž%Æ^¬®aR*äMDí÷f/{CÌ} }´ÔÝY÷D¹ qÚÛ`/òK°¿ü 6œ<×ï?D»·{sÿû\KXWKŸ=÷Y_ÿ]ö†ÃÀ æ¹oél;mÔóTÔ&‚u[š·4qoëz¶+™ºÿæšo*J§ùoÇm}RJ¿ÓË·–šL6Ö£-]­¾Mã÷zƒ]“ @z®‡áà ´C÷zÑ×k¿žÁ(Ê#©ZRjÙ¾©ŸZÇó÷A`,PÈDM‰€ð„6åzˆ§eko±ÌÏC°‘+ƒS1 !—B„µ?wr!¥ Ö·­4iüñ5±§CÖ03w &¸ÆHרìv*ƒˆ{ªŒ ,€ª¡K&“ºL>AñöØ<èë ˆº%ð¢Ÿe5É·b“_b7·þþÕWÏsáÁžLˆÌv:ÞÝÏC`? ˃V ¯èóMÙ¢?D'ø Ÿ\u4jZÞÜ£Nwô£žíÿEÞI°á} ú¿ÿ_ª‡ô |Яpq¸"·zbæÊ†÷ø‹ðQ?Å Q(;#Fú[(Ó…`5mÁLO±Ä}= ö;`Ã6‹COËõ$χGy®¼«Up¬±êCa? yíÿ†r;åâZÙn¶2LÛÿ¹ð†…Û´¯ì[[÷–òòCÂ'Ãð¤|»W»C罟÷¾×'Þ~ûáÛ·Þ"ŽÃ¾VÃXÔÞl3gyцè'ä":©®íÍyJ$@-†€>š «Ñëç¨/½¤0ŽF@ó$p¼¾nžSk³*€Ç¨a"˜H  ¸'ŒÛ¸<³Ë!:«W·ßOÝ€Ì*¡C ^â—.ÖöZGH´8¡¸)7§l@HÁ¹>ç"}ù^ä Áúµ`=ç@pŸU·³•¥¸±Ù„7µÆw’¡9‚s¬øðùˆ!nBN¥ÿÂOý6Ö!Ëú1}9l85(܇êªwû` öfYÙ¤i²´ ïz>ß¡ô>‚àœ_ÿhË|¹u¯ UE— ¹ 5Õ†ÞV¾Á_À?×ü]Uq¨¸mƒ õš6Aâþ 8ª×þ+Çþon0œ3†s>p¿“ôIfì½yÐÓÊ6@E\½SW÷ú¤¯熈glGž†œ°“Ù> Þëi6[±ÞÛ8Õ¸oú¾6ò( å2µhXüòaÄè¾*ÄhµKiQÙâÊ€¨ðVžº-»¼mëu®Åíéž5Üs~ßý"çG©iWT¬ÓÐ^ÇGô·_áe­7 ÃÚÿí/ÁçÇúÒ"3¸øgV^V–YRZ¬• ‘_2ÕŸÖ'ÙÃRó¾;1ÞÁ‘e°çS‘róú©ÞO#Ëô¿÷3«•Ló_æ”e 3^†§Yç:V/,ŒÓKbû¬žM¿y%Ø¿†;"cL¿÷]´t®©éñ/žêŸáôÖixëí¼R¦OœE¾^T4Ÿ‹>.)™Z1Ç©ßqDê¡w©7Ùc'ØTZäåV·ÿ°vfÙr=O3Rð¾kt^N9l[¶ã.ûîä¼>j:ŽÞŒØ´uÓZí7Å“r˜Ïo”†÷9ÜüÚÁËÚ²:ER.Y_ä–8Ñ›ë–.‡÷ÑUh«ZK0A rcZ;é9!ÖM£šÚ€$@$ÐÂxZØ|9]   Úðc±ËÍÁM½¦ÛC@6ÞäÚ· 1Ö-¬‹|¡úԘºÖ×ð(&ÅI&Dt¯¨wa_+K=Ý=£c ëZa,B¤B°VA[“ ïjSþ‡-Ï:·ÿû˰žSX×òÑØÁ3íªÖÿçCJ×®Ë _Œ±bþˆEûaÃ`Ôßbµ6AÅo‰Ìã¬sýO¡k 1#–°®å9ðü+\Žžiéù{ìma]ƒÇðüŽ%¬kíˆxÕëÍ;éÙ8t 럃ÎY1…um37 ×Ó3¦\„Q•ƒ#¬ë – ‚ñÚÆFãZ§À«ÞÜDÑô~xÔ‡ ëÀ?ö+¾¾ûµ¤ÇL$@F^ÖoOÙöNöð”óÕ[7žAêùºzʶEêìÖ#êgAXŸÏ€ã!è­€ þDÈñ¡^³XÍ)™Ã=ÿŠhSãSˆãõ‹ï=Œg ëXSãéS7ò1š)‡úMßÿ: O;Ð=Èny»¥Cp~Þæ¸Á Ðf#¶`ç[ØÖ¢¿T´½pÁ·Ÿv¿­]w[ç7î„°~λ¡Û×èc¶ ™w0„uíÏ/æ4ªÇ½ÏôëÓVœæ:ǵƒVÖŸÁøŽ°®¦fJÊŽMoJ=Âúúz äý ~¯`Ó¿ |èc7Óô~ާ&‚7Ã}†± œ—è†:˜ªÞ€°®Ÿg†Ö0©IÿÚ_dòŠo¨[X”çëu5âå—Ò{˜÷c8|‡×P¹5ž)]}â{3릔3"í˾5;sÍ’EâÉ’‘h› ›±é ëf µƒè>f“ü¡7±Ðm(Õ•í¡yD$@ÍŸÅõæ9C  ¨*qÇJºh<ÅE~Š*6äWˆ¹'Ä\Ó©¬â¹†IÁh' {ÛÜθÂñ“®²èÃ1¢O✎ÖãÓèÑíý<QÂO†Oø¦è†pˆç5u’é²Á°B¨<ëÅÜ‘OÑþ,lN8…vÁz†ü F'É­Á×rè!—¢½ AN q0äàð_§ æ>G¾ÀUÒÚÎï¶®z?AÖ9Ùº1âÊ ;<rü@kaÂÿóÃ=Þ®‚°þb°,ÖÁËËýyÅ­ƒÕT¬jƒ›×nB xÐh4d €@v‡^¯B€³ßߦôó›þ§ßùô¹µYÃg3G¤\ÕõæV;V„½=ðɶ?äΧ;÷Û±<Í/.)2Ïjëi·3^xZý™æß ŠÛ^ÔÕÀU?sxF?„A¹Y¸9 kRRRN„×ûŽï”þ÷ía¤xÎÆ«Ý ›ZûLïóîË7ÌÁÑ)±`è¿%3³7Úö'aëûoEŸú”Çþee[îp kfK="åMz†?JJ«hwúøKVVŸ.¸ùðúßSǶÔóû®ÛÈn¸ÉìW›­d¤zô;2fÊðúÒtÔD67³˜U–iàI*‘ÁçeÃã9Ûe`=­dJÅwÚ¬c^Ç>Ÿïq0îˆëô§Çã\:ÍP2Í<Û^xšb^3*¼§C4¾Ûy=–ÞUñ 8÷Ó í¬¿€÷ 'OFL®MÿÚ62á k1Öjñ£ÄH9}‚i¤Ü£õj:È1ôóÔô<†ç4°è û´Íì‘­OmXõõï2¿ÿfëØõŸ¿¼t28Y7ô†VZfçîà1}jd´Ú×àU­Ž×ãŽ7¥\í4­KÛ>¹' –@wà™H€H€’†@ª,‡$ö3ìÉL›h „ÆÔ ˾^ãåXÈ©àÝ(;?<7‹ù8ˆ¹«ÃêÆ:9-•óä7+¶øèC½ÔðcZò æZ?Xc5 ËËE¨‘BŒëG8C–¢î(_ Ž·¼¤Ã*Ç8Ñë3 ޝ”wPª^z³`Oô5 6<£EtV.Äù|+¼ÆÐîWذöŇÛQ¾ª¤6LE¸”–Ȫÿˆ>”ÃؘwçXxíç[¹z.Aûžh¿ ~—Ç#ÐMqU&X^íS 2mA¢˜‰¸ê*é⯹¸J‰¤\Ü (¡h§7E¾Ç^o¬ÀÓz“cs%]”¡Ì}c¤’ª,ª#\[û¦TuÈnš&] ñž‡L+-˜ ¡øFá,ü7BímþrÐþ;äãÙ†i<ÛoàÞ³OÝJglÈ—Ëqa©kÝåwm\ ïÚÓ¤¼d¾LôŸ‡>Ü7X+í2V¡a–çÂ^K¼6Œ”sÖßåÕï"+ì|^ò`V×¢Þöï~ñâ±(|»ó°6=¼æÖÑÈÓôNq‘ïÒHO|h3GxpÖœaõ²Ì›Òþ¥¢®ÝDħcëAYZj›ã8óšXxõ¯™Ã`©cÖKRq|Ñ/s{¾ŠAeÞÕ£1ÈNÖ@ð¾/¹Óû~¼A˼›W-œÿm¼â°üEÆœG‘qyXf¢'ö úÏŽ;dÈÙº(nd3i‰N”=’rnñTïGî:¦ ç“ Á±k¹·ü.”[7DÜõâ×iÿ˜‹'Åsiñ]¾7õ¡2$ܶöR§ã c,å2´¤È«O¡YiEÞ }B./s˜¡§œ€÷Ï¡]nnÛÝyÍÙ7™¶]¥•q3â}½¡…{Mzj¥’‰eK;Žh}OÊ4|^ž¶¸3´°®m×>™H€H %Hm “äI€H É°Å·]šŒ½4”Ü4DÌ Ù×òJ#?BƒŒ‘eî*•k¸”é›R*Ga Ï×eDæª<µ#;+/A`?~‹A®ß?‹aÑÕâž«GõYR.‡bñÕ·áWy6e©OZ¿sO‡Ø_aÙ°6@J0i\ú‰£SE?wFlõšpÈEh—|„×ÉÆŽÄbW;]|5Ѥ!Z¦B߈XúÝ!¬B_9aasªî)!n Á³#ÚC<ë€Þ*{z@{L³bÄïPuç¬Qg<*¯à© &ˆëªCÜògMÄäÁx…tvà@Èë¹o(ò‡.Zðí2„¤Vr—ï%§<ÖÈyêô™t1RÍŽþÆ@˜Þ£o^ߌ€YµÊsõ¨žõÙs§ÀVõbdPXw7ÎHi“¿Í»¥á‘_üc•–ù??sŸ”P‹°£ŠYŸ-Ó'šö7 Ój£¥]oÉèï0ñ†ê&¬™}¢‚?<ÿ·¢®å]£JbY‹‚Ù¥WZÙŠËm¥¦u¯‚teuaóm°©²'Š‚Íá°=ßñÐfVãÀ“šòK¬-³¾|µ7.Y†v…P1Ÿ3sH¼k ÿûì…opƒÁµÜ,ÓëPåÓquÞ¿>™#Õõ8`±0Þk¤–:e)>Óõz0·LC¤ã:ó“gåÙ–ŠOóßçèû3sdÆõy œ±¸' æH€âzs¼ªœ Ô’@À‹[=´u›ÔzÿVë–.ù þyso»{s<Ý? òa#B°^ð†ËwNý7QqÉkúµ¿‰ë†éïfu¢ÿÆoÁãLÊ1È×,^T6kñ¢ª[™+¨Y^áÝ+ØÀc,Ç8ÀZ¾SŒ¢„³à’ü1æø~X]³ÃÔE[!¸¦z–yÚ¶_¼>o=nV¯ «ëÄߪýŒÒ‰¥U‡ ³Û7$bõ“H^ºd®õÀ@XõÓ;À~@º7Íñ³>}n|X…8'XTTY~§8˜]×ýǽëz¼^–'qàI‘Íþ4¼|=®bë½€GVÄzJÀU/ì°®mëœ'$@$ÐÌ P\oæ˜Ó#     º °ð†…Ÿÿ£òŽšõ]é‡áÙ~“öë7ü£]½ÝÃÄA+TEX¦ëÄ(O-ÄÀ²’iöuUëÐç33Ÿ«V”ÊØ£~/ÛÚ•YÅ¡iÈöNaö÷:@nÜñn6¬“Z‰ë*¬—ùÇÆE×õñ‹©œ·¬ºsULy\¿^53+±vuÝ?n1¬‰eo]ƒ×‹®CRÝd¿Œê½êÚöêÍú$@$Д P\¯åÕË{í6yaNõŸÖ¾áè›åÊA×Ört»ùò’ßåä{ްNF˜'04Øïè—o’WxA2[gÉG#çó«:¨¬ÏªÚ6¥ò¥ëKßNý¢L¾ã­]¦8‡™ÃS®€½fŠáùqÝ]Cc ¸¹? Ø5ý€uzãÀ©›ÐÞ¯¡`luÝð˜½+m£qꙢ¤¦¥þR^Qnç›fïÕ6W­˜[µc:Â7xÿ΀õ=gœÊö†ÇXˆp9'àõÜO˜¤Æ{=wÑj€W*°°±D2Û¿—ºyk½^ƒÊlf 4u×ëð Ù÷Éj“P{÷Ú/¡z¬T?Ƽ2Rùä~éÑ¡~`¯$@$@$@$@$ÐD`¡Êœ…&¿üÒÝòv{|nÞÜ€Ú{Y7eô1}Ûv×Ry b×’VYÃÓŽFÙìXå>$_a¤vxË,ƪVežzÚg7Ôƒ<bþ h«‘ÆŒ_»dÑ=XÄ´µWÌ¡ÎWˆM½À–Æ¥Õ¥‹¼·bµÝoÆ~i‹|û.æº1·?)™æ/Ôz©Y?(/][†±3ÄôŸ…¬Ç4?2uº)í80ñÇG$œïÖö%sJ?(C,ÖjÆ5ï†LÖˆ”KMÓ Dáe#u|qQù1º ˪ïþÁjg¼8{Ü,²RJe¯g¯¿â<°.¼áÓ7Wl—$¶Ç™³I€H ¹ à馺"0êÄ\¹óì{ÚŽÙùøº–ýÔ€€Ï_=‡” Á&$@$@$@$@$Ð$”NóÎF\]´T…òC——Ìû°ãˆÖq=À;ÞÒz{ño{<89çáàqÄaøòÔ{="[:OGè ó|͇'ùkÅ“Škõh/ïûcÔñ¦TØ£Òº%‹¯ÂüZkAJŠçEݧ¦g< ã,·wŸøîV^ó#Ó¢sþ¶‡#ÿÃ#ÁkòÖlÂØÏi}”ŸÚqdê!‘mõº%ÆÇ*kéyê]¼~¦œ="õÒXL²ò²²Äïχ0Dáã[gv^«^d^}÷ïŒ×Pã8ãÅÚ·mÕö)¼ž±–ÖBߨXï½Î·tnWëåZu?_3eóŸÉ`»ÚÃD$@M‘=×›âU£Í$@$@$@$@$@$P‡ŒÔÔ+Åëý1„79Èç/›“5Ìó*Ž¿5RŸek |Šu¬ÿA75­ÓÙ*`3Ýïvå´;mÓÖMkºåg¼Ç»ˆéëh¿úúE¥Ee‹ÝÍjrlÅ€™z\Äÿ‹ŸÝ ¤?=­4ÿ!Ä…ÿâ~_Øe)²<½M›sŸ=÷Y{RÈì?pŸ¢Eóç Ôù¢í>bz¿Ëf¬AQɶŠò{ Ê—ˆ'õç&“¿vòÚ“s ¼ù¿Dû®ó2DÍâ¬áÆJ³´tÌYo"|€úY(ßËi— {ÄçέŽ©³õë\\_Ÿ·~^àúY¯?ÜÌ·fÉ¢<0ü¥¤tYpkëØ‰›®¿Ë7Á˜Š+’`ªïþ3jg¼XûwÞç¾E?ÏÙ×ö"¼öN.¯Ø²ï=}yýÛÊvÄ>EÛy‡€¦;@IDATÄ»þ.opñØd°]íb" ¦F€âz\1w÷§ßq"“Ïš.Wþ˜V=‰Å7G½8Ì*û!g‰ôÎî³^Ce®,]!×ý÷r™½`VÔ{ì&3.zBö„ЙJ¶Ë}­ìY7~Ñ;C†>6D–®[VµKû®òú8zçãÂòåvóóÿ·ç½n éN~ZJšŒ<^Îßÿ’à8/ý}–5àXyà£{dÜcª² À:¶Œðz¾¸ãð”Wü¦öÅ+®Ÿ«Þü#eØú"oÔùƶÝe#I€H É ¸Þd.Ur:ûçYrÅJñfÛ“~Ç.;ÉÎÝÊoë—Êü?çÊü•såØi[7 .=äê¸Æ´ð=¹ûÝÉ–GyǶd{x¾/X5Oʽ岞èg?p’Ò‹ þºúgËÆçÌ„sE…<6tfB^öáÖðŒbðé“ÊVR“‰’‹€!êåç¼F“Ë6ZÓ\è닟 {5ƒÞ» ;,GKVê… Ûruë|K›ž~oEoxwFÔôtÃg¬JkÓjáê ›W9  V5@莿"–ùUë/ÝßT3mÁº¢­øC^5íèTRäÿ+ru K%¶(øŠ­Oëâ¦htÞ93ÏI™ýÅË;ùM_ñ¤ü–Ù®ç/Kó––ÂQ‡õëœOó½Žã×»ìÖÖk®ßÂd71S–¥§d/VÏøªB×BɯñêöfçC¶tìÛ÷ mRj9|[1Û1DlÛ;"÷%EÞWé¼#ÛTv^2Í ÿqUYåZ–•Lõ_….tK(®ñå¸sEöÈÖ½ ©ØÕc³'%mñºI[þPQ=^¢Ò"SoÎ"Åç[Óþí×kâ× ¦ãžŠ¨òZßå{Õ )öûh}‘o& gfŽÊÌ6¶mÞïáÔ´Ôôù É c5ø¯¦¶GtÃS h1(®·˜K]wÕð({j¨%¬kX—{ÏXŽxRpõ@¿ø‘3å§?È­/ÜhyŒ÷íä¾Q¬*…¯±BÈÇÕ’‡$@$@1 ˆ>‚Õ?O¿ÅóCär‡ ŠÙÈ•9YºËy¾Í#žw<lž cäkWªóÅþÒðȯ¸]p$¤«aCü_â‘=Ž“íž_"2KàM‚œƒVlÞȪqÏ d$Fl…òŸ°? 6\Y-ÆKü–~$Àá´Í‡ s⎫ _F#B“ü†í/hÿ÷jÙ0Nzðaz™"©r;zü)ÖPÌ#hšlN Ĺ“ŸÙ“ȱ ̨÷‰]·f}$2ŽS'öeαù¤X–:EUîm!]¾²+êý'ÜK¨FZ?uë郞›¬—…Õhɪ€gú2œë†äcr@s¶3jõ}÷ï×Pã8ãÅÚ—N,-FþvYâï½d°=Ö|˜G$@ÉF€âz^‘#ïÚÁô*w¶j“ÞV~Îøû´mhˆ®&¿] «7®õúVíCú V=ÃߺácÙg|Ëû|ôË7ÉS—¿VÇ}ò¯ —#v::˜¥ñÒG+_-ý\Þ]ð¶|8ì:žÆMפ^óŸ/¶ÿ.¿þè‘aº–ïÝk?yéïïÈw…Wyâ3ì»Ñ¦\ƒÏ¢õðܾ½RÓíÅ~_C=õÒûÎR±{">ÏFYØñ»É—s`ÿ\n„°¼žÛ®²èÃû૾q©Mëv²mÀÂy»ßûað‰¯üz¡œpuîØp]€CŽ«,úp tÛ,o `÷@¡cC‹ƒmÃò膮œ|¹s¸×•c™rS€ÃWYôátK”¶ïpò=r$ÞÕhóæ40PÿôYŒ¾ÿÖ^ÅàùÖ¢aǸò§Kž¨Çû ho‹á¦ì&áU>"úÍð/w§qr ¦¼„¬Vìõä“ö²m>D»ò‹6èœCI9X7ŽeÊ?aÃuÈ¿î äï‚à.o‹þxÑ뢄¡T€›~ܤܬÐdàvÍa}€ƒã‰þO0/Áµxƪçü÷®ÜVÞQNöSQO=ÞG`öÍB}¹¼Ž+s,žKØâª+¨wnèMµ#òu¤UÃëk @“#€¯‹ßðó5>xS É]=L$@$@$P׫C‹ueyñï5¢ð•2Ò­%Vitž×ïµ2Õ’¶ˆ__Yê‘YYqBeC¿©?mo¢Ù­³?Àžüè©Ýê,ËŽÉ? ˜ÜâY,jÌ#ä"`BJÈ妼 ïñ#‚q¿ 6Äg…i0x äÙÁXôòë|2Dö­ò1ÚíˆMH<u_ N°Àò’??x.2â÷µtû Öv„`|‡UnÊ>ç_…<‚\fÅrøaïQû ôoiœ õc!—kš„÷[™eCË^Ýùýs!kR» `— u'òÆa[m˜ŽúQ®iýƒ «¿+#ŒƒýØÕÙⵆrigÕ1PÓÑv®u²akµnJXU`Ãý(;Ç>ÁÿÄþÄhÏÃqDv›ƒz·jÚsz–雕S}¿hX6Ö¹àDªœˆkñ³u>¶Yôæ‰Û°¡6hø›C>ì„÷q’Ò9ð‘ÏCFDv›ƒ}×Ý”Cð´Á ØO…À^a5o÷ +V|ì¿óaJöuÐ8ùŸF™ÃïøÚ½Jëîoœ&'P—ù§àõ¤ 4kדìòº=´#M+óÚáX"óò¼{‡Ááî¿èqùË.'Ï+;h›në •ÕI¤,Õ“*=³¶³öåq{§Ÿx‚¾SÞÒ÷³.™5žù_·tI7ÿˆƒ~ŠëIw]h›ÀRœ¨×±“@(l ¥{¼BfCê>¢z¶wPÉŽ—fàÜ#g#ªsHÀӸ܅ðÞöAÔ¬7 áRT4.„ð<ýäcÁM o:É€gzw¹uBágrm=‹Œ†â<aKž•÷ †Ž0)åsM,ªÉ€|ìA•±ò•u®ÿÝ*Ë]6tEŽþmô,Äê „ý´¿L«ZÉ€x$u‹Ž¹°À¶áZÇBºÿöó°¼èö– lZ6j± îg¢ï/uÕ†.º#?LžAžÞx&†«‚õB}wfCXÙ6 ³ê™r4n4ü6 ‘E²F}ùzóNS8œaý[ûÿk¼ú øì)Çœõš™ðn÷!ÜË8\½fR„ü¿ë n „MáÆlø›UÏÕðR7ã}båÛ  :6èÝu '³ÄÕ§^qÎÓ†!ð)®Ý% 3G!    æC µùL¥éÎÄãQ1;•ûB±ÅÁ\Åù ן ÙÚlëäÂG¼"¾)YY&n$ü &~„ƒQ&vòãöÁE°Ao:„§±ÀCT€ÎpxíotUþˉ‰É!¡Yl†êŸ‘ÿ)´?çÝy^Ìã\ˆû¸ú´oG$ô}Ú  fú:ت@â ¸ñÑ,c-°˜‹P/ù–ˆïT.ÿ÷2oåOñªU;ÿ°þGZm4ŽûÇ‹¢µ§ÃÇ?Ð9ŒÚkìMµ}Z7ªcf @s&`/Ü=ȯȽ޳Šê~„zq’‚kdün§L÷£å'øjFûÍìvØÛØšaÈXÊs0Fˆ{WÄ_+®º¶P9þïg«]†\ 1÷%ë<Ö92uNŶÕ*V‘Ý-¬ ¼¼³áíí„›‰ìCÇ8B.EûЗ£Bº);«*£±a^ÿÁ"ë@Ãå(‡PÜñhÖ ù’û)ÐmÃ[+'µáJì_™ðžékÛ.ǵx5Xy#ßàZjèçq9úCº¯ÿ.XHÖ 7Ù^Ÿ*èay¸¿,Òp6!Ï}½1q^La=Ø€$@$@$@$@$@$Ð4P\O‚ëÔ¹]i®Nrx>úÛ§es¹£-„Œ{æë'壅ï‡2éHð¼jÐuÖè_-ý\žúò±˜–”–•ÊoæŠÖ™ýó,Ù¡sHc‰Ù ™DZY­õ·¾Hʆ² Q­ûì™óÛ×QùNFFšÍ{Ó¶M¢qÜ™H i¤À£“‰’—€þÝûC3GBÙõ–é!‘\}ÙGÃKúþ*§4A\4\Š6Å}÷s1çä6,4ZYR/êŽr!„åw­j*$;É@\ðyÌ9»×00øc‡æh‡Ÿ1àƒžÏöÈ…R#;Röö’ +´Š-v;u<þb3rrbï5K ¼ÞÕ»ÛNNœ…‡Qˆƒ^YRzë\ðô€¦pà ¬?aåWöŸ†¢1ЇzûÛÉá0ÁbN­’M•5·¼ê{XsøÄª ããÅÜ.€ /VÚž… K@Ëe"    ¨†…©¶ºm¤‹fž½ÏùòäÊïµrý¯”‘Ç–]{ì.¿/“7~|Yƾr³å1^î6¦n­ŠßÛ¨óä9ÜXµáO6óùsà ¹þè‘ÖŸۼÛäÃ_gˤ· ¬¹h/×}“´ˆÙñ{M¼$ •Ž8îvÉyåQoþ£¦î/7{»ìµý¾–-/÷œ<ñÅ#•v˜çMӔɳðwàIÒ©mgé×¹¥íXHõNàv,pX` cê},@5!à±â£Çn™+÷!$H»¼ƒèæ/} å ±+ÇÈÍE»Bx{ûæE—ÕÅðÒá©}"w'’Ô›ú>ÄT_ƒøâºØ¦È±Ø†©‰4·êŒÅ¢Ÿùð@7ž$±Î}ˆ ß 1àG¡×D’z•O„|b½§`1V/DyA\÷™œHs«Ž."Z`y«÷~!l™ ƒÃª„úPïúIð>ß eP„kWj…À¹×£ŠW깯í Äa7eowW<®wúdÇìz… @3$@q=I.êuG×~|IJ¶Ë sž±6õÎ.ÙZbY¸]Öö2áŒ"úØ9nqûVíåá¿>-W=q‘¬,Ål¯‘;ÞÊ“þ]@P_&›·…<ï/>è2Kø®k£o€˜¯^ô*°/^³P®{úò°!úvî'gìuŽL{w’•ïxª;•ÛÑ-£ç“ß.´¶!û^ ]ò”S…{h¶—é338G%: +[½˜XpSSžõâÿiØá]ÔÛÙ”7­}â­Åòª6åð@ûGªÝ^Çʵâ”?èãõj÷¡Þå¦hÿ$ö!/úDç’ƒÅHM,GZS·ÊF´?,ÐþqkŸèØN½\ÄŒ7áénÛðZµû.%hPµÚå†-šêXÂ= $%>š$—e`÷Ý䣑s䈎¶Dc5K…õŒ´ 9rÀ1òöŸÈ.ÝwMkEAœþ|Ô\Qñ¼}F{ñú¼²àÏyAa}§®;Ë?!÷œ§Qê']wäpyùÚÿÉ¥‡^-{÷Úײ〾[žòïøZ”©“:ÀÛÝ”ó¤³î–nº³Y5?xÌ  ZPA¹&¢²ë„qöÕ5Åiçì«Û¾nm¨¾°îØëØïìüD÷N;gŸh;w=§­³w—%r\Óv‰ôÍ:$@$@$@$@$@$ÐÈìUÙá9Tý´Ý´“ÀžÆ4akÅVùaùË„}zïo…[iL{[ÃÙü¼jž´Io+};õ“ž™Û%Ò¬^ë<øñ}róóvøßŸr—ÉöY½bާÞ÷ÎFŸHKI‹Y§™f`FüÀôÍtÒœ Ô†…© Šu܇Æ'?h‡Cë¸×úí®WvoÑ­!ÒKß=+.|OÔ;þêAÿzúGŽýÉ¢¬¬¬6Ù•Šý=2{F6å9 TJ€âz¥xX˜Œ ,ûÈ'÷[¦©§üЃ¯Œ2󭹯ÉKXØTÓ‘;#ºh, ÔŠëuE’ý4ƒw8L2[gJéÖR,¦:Zþ(ù]ŽÙùxÙ·÷²nÓZygþ›RøÆhËžôÔtyü˜³‘ ´ Œ¹Þ2®s³›åÿ¼%ç=xªøü¾¸skÛª­Ü{þÃræÞçÆ­Ó s½…¿8}        š ¸^svlÙÈ–®[,ÓÞ$oÏ{]þܰRŵ,êžÙCÎØë¹æðëe‡Î;6²•I=<Åõ¤¾<4ŽH€H€H€H€H€H€H€H ™ P\Oæ«CÛ&Pî+—µ›ÖH§¶¥Uj«„ÛµðŠדõ0Qz‹_Ú%«y´«…è$KåÙÒÂ)púõE`‚tB×Ýê«{ö‡@;Y$7ȶ8¥Ì& ê˜)é²@®–,y°É¶aÃ¥¤zX›H€H %`Ìõ–tµ›ñ\ÓSÒ¥gævÍx†œZ‹!p‡ôƒ¼±PLIš›Ÿ-†='š?åYTd¼­Äh±Vu ”Ë÷hÂ/ôêr«mýõr/º¸¾¶Ý°= X–K Eî‘õr›ÈMRd'û‹W eƒÌÅœFòÊ’ @<žxÌ' h’Ia½¸sÈD øQ1+ÑʬG5 ]ƒ6lR;|_׎[“ Ä'Ð3 ²/†Èþ™.Éÿˆqì!yò"„õ¯0­ñwyJü鱄H€H€D(®óU@$@$@$?1k›&IO'½äQÉÀí½jÔ]dµS¯²™5øÑ«¡—ÆK™!m`õ²¡@•êÿ=5I¶‡ídª´†-{6Š ã¤Æî&S¤-ö»×ʆqr o Öˆ`ã7ª‹÷uãÏ‚ $7äÙ egÉ—ÿâ»LŸ :#ˆÓ¨ÁßÁÆ<  h ¦%\eΑH€H€’ÀTé(eLé ¿É ìw¸}´äÈœ„ÍË—ëàw/Ú½ >9UæÉh{EÂí'H)“wx)]þ”uø½„å#e´ü”p26Ü…áÏc:ö íu ·×¸âe‡6à±6ì°á‡„û(@[¿Ü Ž  í5 ·WQ½BþìK±ï‡ß—±2?á>òåVØ0~ÏáZœ ÷¡í ·gE Æ!ÀÐsý%Zw²ŽÈž<áb4$c9þñËÅø>ŽöR•wz T ïá$ɤÈZl­°mÆ–†m¶TlØôŸ7°÷aïÁ¦{ýg¢–{ÍÓ½ÞDpŸ;ùÎ^Ë•…³´wŽãí%ÐF±äá/-& h¦’&¦¯iš™`Üb ÙP¶A–­_"ý:÷—¶ém›ôË«dk‰,[·Dzdö”.íºŠa$Í˪Ismã¹ i@®ö²þ°ý¶ÚíØ€‚€Ÿd"³%Wޝöpê½EÞÅ3Ûë<ÔÁjüôQ÷×PVœ£¹íŸÄùEs'~´Ý§U({:Dýõò2ö eZG+6,‰È>Í—Ëùp ÆÁ†±Ñ "r&I{Ù †¯ûðôgÀ†EáÙ1Îòåä>úo‹Ñ"Í—«Ð^o*„'äBf¯iʃ< x¢€©áèûÚ”§qåôuÅä&ýYã.Mä8ò³*‘6¡:Ï>ëε>{Cùµ9Ê“UhÞµ6]°- Ô!w'&»>AV†o<ÓºAŸwN†üˆ:D ɉˆËñDgÍ×ön±º²ºîzÚ®é%/¾cÒšžÙ´˜H€#P»?ø#¡Z -®ßüÂõòäÈ=ç=$Cö½ !?_ò‰¼ùÓ+2ç÷¯eÞÊŸ¤[‡î2 Û@ùÛá7ÈA;Zi^¿Wýt†|ðË»òÓŠïe)ÄhM*D÷íÔOöè¹—Ð÷¹rеÒ:­u¥}%Ká#ŸÞ/}üO™ÿç\Áõ³Ì~ì(Éü¡X»ÏÚþðäøáümž•\:‘@ãPÎ }žfD:ü¯o€\/Í„oÕ|y ?"sUÑ8Ïv8bnDÝ[!îÆK…r2n<½„>œge¨z¯x *çÀ‹:^Ò04¿É[h¤«ŠÛ†EÐ2Hn?{¼”ïlÁ‚®!/¶H†Ã†iñš[±f×Ë(?ÆULJcÛSÎ%êÕ;åÃ[ß„×~èÇu¤ 7Æ;c7F®†¡Ù`yÍrÕqsø×wnU¬v•‡Ê¼žA¦'Ò†ëaƒ.?éõX'í¢*l²„}ŠëQ`ê1Ã×õÛØþcÎ=T}|Ç×¶O·}-åxWø¥ž ßÚºH×ë‚"û¨{¿@2>R÷ußuDö“[·ã3ï|ê% øó›ä©~¿äÿfˆ5…ðßCÑ5¢¿Ÿ¢ë0‡H€@Ub fXCŠëoÎ}U.|ø KžqÑ¿å¼ý/®ržw¾3^&¼•+~¿þþŒN—r•L;wFtr~+^&gߢüºúç˜åîÌí³{Éã—>+ûõ>ÐtÇoÏ{]Îè´ ¨îøÀÅOȹû]äœrŸÄxàùzå×Il!M#H:¶ýÈ´Çòú*ƒßöÓQÆ#/@dtSÎvÍç^ä~†¼ºù= aIn‡ä™ÆAìõA6! Ûi5~Ÿ©I=È÷ V÷à‡rN oê÷ð“ýCÒ&„i'ëb ¨Œ}„Òðé>R†Çx’®?úýÆ↬Dû“÷$šÛñÊmqò2ü€|<ÔeàHcÃÏCø”ð8®w£ÿ³wpNTÛûÌ 6¬`{÷ý­X@Ä‚ {{by6°#ew³Kµa}OìíY°ë³+¢Ø»¢€ Q@β»ùßÜd’L²Én’MvÏÙßÙÛË|“df¾{æÜ/ÑçƒP÷žÌ‘ïaÛ~Ï,ˆë£s«Å]Tp`Ús¨‚{¯º#ý0ïq¹]³±@!X¨ˆÈ(Œ< í#VèÜô´‚»žp+,±P"™â€q¤7æõRÝBy|>sø¯I{ÿ¹ŸÞ(´G?·y‹Bñå•\÷&kYEøvÑ€Jþ" äzþžYÃpð¶R.ÅZbQxÌkXg)¶®”#ñ›7 ãÆ¾½•bVͽw£qßRŠNcbóÒI³½_¿~}”Ë¿|³|Ô†(£.Î…ò^€bIuzóLý§(Š@> `Ì}.¹"×ßžúº!ÖWU»v©ëý9MžþòqƒÑž÷‘ãv=IþÑe?ùñÏ©rý•òóŸ?š²Ê£oK»_…åŠÕ+d¿v‘_æ¹o»o³Ávræ>ý¤Ëº[*ó—Γió–?º;ÜÏ:ku”·|lêDu–G‰#ïì.ïÿü®”—ÈÀžerX×#¤¨¨H6_§‹´[£]ÍT§’%×!£ùŠ€"Däº#ïãñg?<`ÝBõ²¨öårÒýÂy×R¯$¢é?=è±pvä3Y$öŲ4\¸ì‚G· ¨G÷q”Å æB_a#ÎõñX>yÛ˜Áãr‘œ‚²q¡4Ëû!ôº¼¸¯'ŸkêäJ”Ý®/ò!¶:= 4½}°´ß=G6¦ž# A×`ü´scÔjù}t •Ñýxàð‚Ióçû;›É<Œ:g‡pè:^‹÷áDçPXÓEŠ+ÃáÊfµqic/²‹B8|c6%]s ²•©ÌóT;סÆÂÝmï’Ú\Ì8ÅÍÀç¦LÎ7iúOz,ÿù†B[é ’E¸þ0Ù=¿…z®?; !-€Ã ,psÖƒÃæ¡úôòz,æ@"ÞÎ!€…‘3¡=¤ó¯ÄV#ÞÊÐÁÿVWCׂ®‚® ­‚žup÷’¿B.Êê5ˆðLõÄ'A¹Íз¡¼±${lˆ"E@PfC®/¯Z.•¯ –±o²>¯‹\á›gä¬Ý·ßÏúG?¹µoİ‹§äù!cö6nbÖh±†LþW”[—»Þ»M>7Àœásþïsâ|Ïvm°V®yö2ãf…èªæÞ3â ¾|7BæÎ•[Àgü éÑíw^ä¹¹¦¢CÖ;>½ã´Kߺt2n»ìÍIýzâÖ6 ‘B¿$ÃÇ_#]ç3 TÛ*YC ¹îÐå]ç*”r<4K(δ#/ƒŠí›èj&T€ ¯òÑ=ÛžaÜÌŒY\eˆû BµWâ³'^/”ÐÁ›Ág*¼6 åUáaô(ºo˜t96ý”(ÂÿYØW÷Åj] à.å«ü5PæGƒ`_M>»b~QÞÑT¦•]1ˆï!ò±mŽ:[¢7’Û´º¢¬D^˜Ã“*‡•¼€¦ŽÈ‹°A?> ‡rƒAi¸ŠƒMW»ÂºŽ® *eÛÐÖ •/Çx Çãve¤tÆC5Ó™ ǸéésÁRž‹;ñÿ"ç?îmJåä¨ï€\ã¼ÚS'r¾*d{̸¯*_Š9Œ>> םį¬.ë›<ÂÎW©Á‹÷¡ÿsÂõý#Ë‘­–ëþØd'×ý^¿„ÏìUq4ôG›È†HCÇoè=FCÇoèñ·á—ÌeVCðÕ¶Š@¶p]ñ÷‡G«þxt"™Û9”o m¯1u×5Y|xwŒû’è·ÜVCÞÛÒ.LüüÃä.Ô½ \—p­@¸¯2ÖþĽ§2ˆãCäs{“íàÕfôyîk‚°ëŽÈÙÄû9 àc%+þ ìö#ò4<“_‰š‘µ™Év@ø ð/ƒ]¬øà%rp< U‡xª¿†£ qïÉ4р܋9œÎ&©PÒÁ%Íý‰ûpeDbß4pàZÆÅá_è÷¼pUVø-໿E ËŒ¯w%×Ã@å â’뺡i Ö!fƒ@,¹ž¤zìɆåÿ\+£÷‡a­'p'yë+¶¦ëƒy(*‰t,Ô¡4 ö­¡Ý ;@n µò;"w…t!B%Ù-2*Š@£!À±&-°hŸÿ>Æ3÷9WNÙó,éuûá¼D‘©s&båW68!1Þ.Qn;ééØf]éÖiǨîæ.žcÒt—’ŒXg%–÷Úá(C®×ÔÖÈTlºÇæ{Gõ—,±pùYºj©±œ_·Ízƪžnp­XhÜØpÀO-_(“°Éê õ7n¿©ì¸ñ.-iQUS%öx8?ÊŠÕËå·…3M¼ÝškËÚkðZ-©öo[ÑŠÿ÷E³LrÃv¤Eq ã‚縡Ùó:xÛ&ÏÖ·aºãpÖY‹~3͹9mËâ–&μO§(+«WÊΛì&ÛmÐÍ,vØq…+W¯”¦M4ý¬C×?;o¼«´oÝ!Q“p~ºs7Ôˆ" (¹G 6Ê] Iô1 ÃmŠõ-_ƒ¨>*Êň·¼^Π½]w!|L:„pw¤-QMÇ*ç WÿW¥†Â_û0Ö5fmÑžnKÞBè%i?Å«Ò}@]»~á¼ã3^ «nwîj¹Àª» Çeç@—3,׬E||ûI˜CoÌûMµÆØœÇÄ#«äŽ|²üh_bý•Ê¥¡9œÊ$äPχ"tqpçp&êÅë¬] í°úbÁÅ€ ãQB<¬ÐåÌq¾Ä:ktÅÃãýxÓ (§áÈDܽÀ» ,§„-âM%Ï¿Áò5p8ãº>òéÎ'h,ê× ×rä]ØøåzÇ–Ûˆ†Š€" (€%Õ[äЧz}AsߊëkØ^!’ Ó¤€I«dK°Óz¼µ´ :9¤ãÒ8`;h/èéС•Pº`8JÃk½nCd©(Š€"øÖ¤eÉªÅæø¶Z);r¤µã±òͬ¯R:æwz;\ïЮ|¾ö—Ö-[Ãú¹¾…{uþ‡!˹™éŒ¿¦KçŽ]|ëÙÌ_+gÿã|éëz?¢ÚÖó Ëÿ7Púè^9|û#eÈÄVóÖBßqã’†}[™ý÷rñÿ”ñSß°Yá°k§íeìiÈN Ú­|ýÛÒãÖ}mÒ„O|öˆP)¹Vʱ•tû·íHàïXÑÙ$'\ñ™<ðÑXs\¶|³u6—/ÿ^¬¨ï8\t°ã¼ÑÿiU²\~ÃÁŽ·^Ûõån`Ñ}ÛÈ"-cÈE‡a¯ Áï‘¿Wüí-¾yð¯È•‡º Š•úÎ=¶M+Š€"è3›B±Â @GÀR¼ÊÉ´2Šˆ#?jî B>ú2Rƒ®AØ1Ÿ Ê•$òÑ¡"K(3ÙÄñ£¡|ÿ`ˆ|búôE¿¨­ ^b}26K;"Ê—{l/ôK:ms ÜÓä6çx!å§b›E¥‡À_{ĵÈKŸˆ^býäô‚gó%Qm¼ â0VÎÍ¡w¨(‚ƒ#—‡'¼Mââ¥ò 5û€xe-Ñ£—Xÿȳ8ÝÝ匓SñXËö‡šÂˆ¿{&ÏÏ™üDÿ†ÀENVéx¹Ê{M/±>g¦·/±ž¨?ÍÏ.v3Ý쎢½+Š@sB ×T«±B ÕcÏËùYGc±zg-Ùýî|b[iºac’ì^µ¸“,Ÿ½z'”÷GA»Boò­C’Cù¹³¢$»EBCE@È:Mž\ïÔn#¹ïÌÇä¸]NÌéÈ”Ùß™ê[¬·•Ù|” n„úù¯ŸÈ§3>”uÛ¬/»lº»ìÐi§„}Rþ‘Oî—Õ5«¥Ï]‡IéÃ¥Ï.'J‘ÃëF¼ÐÊ9Kçø–‘Îñœ‡N ë,¡•öî+øñ?¼!ç>rª,\¶À4¤Uû¶t•™ fÈXÌO™ý½zË>rýq·²Ÿ•Z–´ /Ðß:ûl»F[鸖û~‡ÖÖ «H}ú7‰ù÷ØgEë,¦e½} SãLüù¹õíëeñÊÅB·A›À‚êÜÉRU]%ó–ü)ÇßÝK9çé½Ã1Q3dýcïê!_üÊ{0˜ÂýçW[[‹ÏÈGæM‚Þ&?aóÛÏÕ6SsêT…@‰ÌAùĵ-ü#Ò#hzðá%^asËá c«A‘¡´ü¦k”bîWWñm¼9ôÃþ€œ$3å5d€>¾E¸3ú(™Ëªº¥ }%Æ­•§Ñ*ã}>æÐ¦¹þà’õBëcAŽÏ6Öçû *op‘—˜Ã=Éš†ËÊäuËg ýÚý„9lŒp¡ÁaÌ ×Kán1½ýˆpE{ú C0‡ÿ$j•?Vûä"OB§£ýFh?4w8ºYU×/A?ï7€ _ xGö@ûÉп sxÀ¯I\^Èù 9 íEÙ7¹HðÞà"Dz¸ú‘ ºËiIj,pÑÌÿŽ ®C(Š@DÀu¿vmAY)®]‚ëñ(½'Ïây$NåkñTKØ0„ ÓV™f>ßb| z2ôj(Iöw •ÐQPöÃzº)ý¯(Š@–°?^Yê>õn³és=v´\?ð¦ÝMv2Ÿë½ï8H>øå=Ùg‹}åµK'ÊÍo”ѯW‚ÝÛ'Ëï>ýQÙ¬ÃæÞl'ÑÝ$öKßFŒ¼Ú¯Ù^ÚöPXB÷·>„õqíê“ÑÜù†ˆ.**2änï‘Ó÷þ§Ð]Ìw¿##úÜlº]²j‰ì>|ùsÉ\¡;”;N¾OëÚ+<$-ìO¿ÿXã§uúšã†×´ºAé·ßErãñw„Û2ÒÐþiÍݵÜuKÃc!yñAWÈ.›ì.$ÁfÄ­¡ã—.ƒÝ…Λ®pn:á߯òŸinV{ëøëeÔk&eï.ÿ'¯_ö¾‰ÛžºPüðn“ì»Çix;à.Y«¥k$8sá¯r-6©}õ;^û±¬Þ÷®ðBECçn:lø?õ¹Þp µE@ˆE`,ˆÑ @Ë—Ý@r¯€•)±U’¦o“v°q?[x¾,SñP[—¥¶_g•p9Ò~Ê«ÑKdòPÜéÈH¸¨©’ÿÅÿ:<¹B™$uzR «·–xØ[mæ°sà¢Yê‡ùÕØ\m[Xâׇ\ñtÀBÇ"lFê`c¨ü’úPófl^º¾ô7Y?®zJaÓž®ÐŠ~´_ˆãi‡Þ.ƒ¡dâúlï’¬Š–e"|KÖÀ[©,‚exhíNPš(|Ó×ÒT¶›(zXIðæÅ¨I£O*ãVI¦Çª—¿"‰Îï (ߤd'éN BZ±“\W‚ ¨(Š@3A€ä:4'òõo_×à…K“„cbsQSç¤{Ž zþ oyQp×á[³w°Ó5k…ûÙtàÚÁoÿÚ·/X1>7 \׎mÃí›ÿõØÙÁ׿9 wß>RɼìÉóÂcvËÿáÝ·Ù®2õ:\Qü𗉾u–¬\Üjè¦Þ©÷õ‰«³ÁÕkš²+Ÿ¾8®¬¡ýÿ±è÷ðq£7§¼73:\æDóîã}Ç9î®ÃÃõà²&\gúüiA~8Ç#ïèÎ÷Ff-ü-h±:ô–„‹:÷pG ‹ìÑL~^ô0E@PE@PE WpCÓr,¨à4n„tÌÕ°'€…å€g“ïŒЬ;$QNòœ¤zKèšP’åm¡|ƒ—{ñð³³>´”Öw›A¹¿eH·@ØÚºJ"ý{(ËÙ/û÷òHª(Š€"yøc£’¥°ð¦¼óÛrç„1fsÑ/ý _úQÞð±Ì¹H.?t ÐºšîAú?y¾q•ÛÝÑŒì3ÆX=Ÿº×YfãSo°òاIß{Ž”Ý†o-/÷‚·¸^qZzû¹žáf¡÷¼OWe"܈õ[ìçÛ?}…Ÿ»ï¿LÙË“^ùKë~“•3Ý·N;È¡Û7ÇL³gç}`ß=nfìºi„ƒž·ôÏpWpžÀm›ôu½á|o„ÖðÃŽ¾Q.‚ßõÓö:ÛÔÏôܽãi\PE@PE@P<@  ¨Îëð&ØŒ‚#ÙØ#%€½\‚ò,pÜ>°lªSàÃ4-Ìi…¾:¤ÜД®Êè&ŽºÂ£Ìg9벉sZº¿í í}ÚÊ2%Ø‚Š" d®æ©Ô]»pÍ/z[¸y©úý.ë=~µ—È=ï”/g~&O|þˆœ²ç™¶JTH·"TÊ׳¾” ?¾%zG>žþ¾,[µÌäÏ\ð«œvÈ-ý¾ÚäÕç7põ“ßÎ4î\XÆÍVIô&ºa±òó¼ác~=›Lfºú‚÷“L³Åº[ù cò6[§s¸l5|°[ùhÚD-).‘}ºÐ-®¿ÐuŽWxŽéR‡’sàK㊀" (Š€" (Š€" 4"–d¿„õípÛvSÞº‹©”ƒAóV‚TwÚ Zд_“Úë®…qå–0gœÂä¸U’åä°¸ië)Ü4×ï-Û&6ÌôÜcû×´" (Š€" (Š€" (y†@þ’ìÃ@¦×È0h÷8Ì%×ã0aFÄ÷`3 Ú ºÚºÚZ-®†ÒÿPl°î/±„·M[‚Ýî$ØiánÕ’ì–hg9_·? ú$”ûËÐC s ¶_"KEPÌ  äzI®[ñº±y6lߺƒÙÌ”DüÔ9ßÛì”ÖÅ-͆¢cƒÓòÿ ”Û߹ɴýÏ{·†-ÝSî i]ïµ°÷¶¥ šúÈï‹Rk—éþ;&°–Ïô8k´X#mX¯üÛ´éØ&²)j*dz©uE@PE@P)‡Õ°`{aE ›,¡šX,ÉÞ–ì·6ª%{…ðUíؽGÂée]l™¹#ލ´n1hâbØ@»aô±û…$æiùž(¤åul-±“µñÖgûTëúÕóßÛ¿_[0ÖäÑ°Ñ Å¾ìMç-Ǹq¡_õdKz3M‚݆–d·äº ™O%ÉÎÏ}¯Ÿ}º5ô hO(]ʰ %v,7Wÿ+Š€"PO”\Oýe[iÓŠûj$–õÛnh¬Ü½¾Éoy{´<ûÕ“òײù2ñª¯dµ:&î%ÅEÅrÝá¹÷ƒËŠªòýß&­_ŸÂ Ûq/Wî:í!9d;^gê–µZ¶©»jd»;‰\cÇó 7Z{™2û{±ì~uüòòaî~óÒ!I_?ñÎØíÌ£ZRÝÆZ‚}>âgBŸƒÒÅÏpèµP[Ñ0ÂŒ«(Š€"Ð ”\O߯í7 —~1óSñ’íá‚PdæÂ&¶Qûˆµ;}µ[7//MzNÎÚ§_l³¸4-ÎéÒeòìïd5ÜÅdZ¼¾ØgÁÿúzm2{oíþ-¹ÇŽçn±ÞVòöÔ×eîâ9RS 3,Žø ]ê¼6ù²ù:]dlššs÷›§æ)Š€" (Š€" (Š€"SYûä?¥ƒ,ÏɸÒ´ìXŒE7"*…ƒ‰q+$Ö™¶êMÓBž<×L(7±»zôCèóP ëS¼}º9ú_Pz  äzÐŽÜéXúâÕ ¹W 7¯¹÷ýKïûÈ~[×¢ü¥á¼“vç›–®+å]6Ý]¾þí ùdú‡Òëö䡳ŸJhÿÇ߿˿;Ë6—3ö97ÏT„ÖÕçíw±Ü9aŒ|6ãcù/HÿÓö:;®û¿áO|ä«eB²ÿ§?;O¹?®Ž_F¶û·cæj;ž_Øw÷Ó F‹V,’ëߨô%×—®Z*~âb·çæûÈúm70]eóøÍUó ±Ò[î܆«?Ô:mÍlªÏH™Ù(ª™¶nN¨R<òÖ½šŸ“É4«AÀ÷úÕfuÄÍõ`KeTs=t=î"p³¬)‹ëŽÌ!{}ÎIuïá—Ê'Hg!»€.E¼®=vMoMÆŸÀïã±™šnT,‰^‹YX¢Üæqbö\’ïâ>Bi7zÔ¶AÔĪ(Š€"Po”\¯º+½Îд^?ýþãä®S’îÛ&­JZÉŠÕ+dàsý_uvS~äHÙnÃnQ=Þ~ò½rHõ%+—Èç¿~"û߸«ôÚþ(Ùy“Ýd§MvÅÆ£k™MPi­þÐÇ÷ÈÂe®›9ŽqÔŽÇFõ•©ÄÀÃËåé/7îLŒ»@æ,þC.í~±î ;@IDAT•pcUº²yï§ñ2úõ C¬sÌK»_)k¶X3åá³Ý¿H®Æ±ãņZ¯#×^&×=w¹Y<é{Ï‘rÇÉ÷… ôYØöÒ'úɯ f«õk{ò¾Í•Æž»‡†yˆÀ|Üø…+köf1'©SjÆð굡O6c ôг‰@­\ƒîyÓá}HÎæˆÚ·Å ÙèMÉuý4(Š@öÈR=öèË×È:”k7l¹9ñ“ñ{H‹çˆpO•|EÀÞ+ð¹‰BRݪM3ä[ ¼w=ú_èD(ÛÚv¶d©(Š€">J®×YçŽ[Èãç¾ ù½VQE ;ä#©{¤ƒd2²N‡“šr¸6ákég‚zuý¹Æ’í±m5ÝØXbœD9]ÄP,ÁÎû Æ¿„’\?Z= ÊúlkÛ#ª¢(Š@ýPr=Üzt;BÞ»òKé?î|ùð—÷dyÕrùîoMËö­;H¿}/’Á½øí/t%óÙuSåöwn”¿}F¦Ìþ>®"‰tº 9wßÉI{D\ËÄUÌPçôñÀïeðóWÈ ß ÒƒòïP]>P:ø» s¸*¥ö#d½Û¢Ý*ôÕ áìÓRêïR¹ðõ¹Ö~Eš—%Üô‡½æYA»U憯óâºËJ³1²«åÿpm|&ÝkŸGÀê\¡!)HÖ0dÞ@h?èÐîPÞCÑÚ÷bJ®E@¨üñÉ )r=/ÀÒI(@àìçϾé¡oú ·¾ ûH¼ùOj³Ôñ£ñÊF¸µëŸxZKÈ1 !×+a]+Ïâóoæ€..3¾N»Ùïh¿¯O¥YxtÚL´ÀN,9íŸ@Z1EKfPj^ŽÎ÷¦î„­ú|>öôf‡â3`Á½/ìÜþð)‹dU·k­ŒK€C¥™E¤v|ìY ôó[( åU¬Ì ÍaVlAT: §`üG‘ç‡Ã`à0"ª~lâ6¼y°@ÞAön±EHO5¾/<§Ïñ)«;KÉõº1Êt ÷{= wñäQ¡_ã]ËÅú#–/ÇßMÊ¥¯±Æ¬ÿ±hKE@Pš|¶âýM ”®}H®SiÑú.”{»ô„¾¥•;­ÝI®+ÁTE }¢IôÛg¬…’ëƒR;RRB`Ï»÷”Ïg«ázJ`i%E@p(ÂÃGÐÇ/FAâ`s¨¡ò È9ZþÄK¥„–Ü,‘7¤»H¼þ޾v7i7ï*Ë7…ÓÞÈX<Í‘P¿W8»HžÃhÇ m âÕô ™®ãTÂÚ¾F^B®8‡ßñ>úÜ٤ݼK0‡;Ãioä6X=-Wu°'ûYôs,úpï§ù^ÚÊpXãîNî©h¢¸^yõiAÅ9ÌF|.b»˜´›7s¸5œöFÆaî“Í1ôðd?‹8_s¶8LÅÀþ°?Ÿï©‰ †Ä’œœÃoˆóÍÁMÚÍ»s°ÖýályçðWs. ¸¤ìqèÇâ0 3=–ü Ãu¼‘qX`™ +û ;b%;Gµ\E%»i~¯k}½²;ªöžÝð›Ñ×XX¦ÓJë*‡¯3å.\ †¥üVWãÍ6ñȼö/‘­ÕåYbˆò°„÷"TÞñ^‡÷}–`'á>Úú$ô<¨Z¯E@höA¬a½hkE@PE@hú¸6=›‚½8F{Âã÷÷°ûÞ>„ èµB2Þ%Öé®ÖBíäP乘¸n@$V£%ˆ‡£Ùò0Æ‹ët%S ð"¸6‰È6°=z]hU+Ã`åM«ù±þÚ†G®Cðø5ÅSývéž´%¼PGÂK¬ß&år<ÚGÜÉqüK@ÀÓº¼P–ƒž= ~hRÜœtʃ²¥I»î)NYûœIó_Do0ŠD‡òS0–k%_g0µxlÈ{²9È{ëçu8ü’WÃ?y~Ê)èodr©|fÒ£elZÆ9lnÒ|ør` ^r˜Bkì øGw-ªÝ*Ž<‚ög¡Äýþ@qÑ""oI7é¶4Ôj3¾ŽÌ9,ƒrŸ˜ôh¸ƒrçÐŤ9‡b÷CÍ¢„›ÀÆ¡Acaå¦ý¥rZx@µV*Cí9Æ;8â^rü¡S*`¡_+ão e1ÎUwXã}iR£d3Ô$›š´ƒÁ•ÏP³á—‹ ñÿ6–-•sÃsÀB1h6I5] ÿuœá£@Oð¡V°ýìnˆ½X{”-AÝøûY2 ô_Np¿×¿b,÷{éÔ~ƽyéÄõ{O=~Ýö]ñ-R·0éa§µ›ávc±¹7pçá^ßÍ{Kv.¦O‘Ó1é2|ûì5ù\å/o\@uôz @®‹÷¬%ЖÐ5¡4p ÁóPî[CÀ»¡¼W"Ï{ˆýn£E@h~ð'/DÉõ¼8 :‰æ…€nhšç[74Ídz¢s²¸$ÜoH>m³n¨7EøC2èw<€G”ÕÐïOÖšÊøW‰‡W—€ßÈdqsÌ"9¤îxëÉÉZÛG9lÅÝ$›ó?8%9V>a\eãNq}Ûš +ñÊ·;‡õCõVà8z‚8žˆ9܈c¸2\Ý[–`5ßÝX@…³ñà};—„3è*¥+¬¿yïâ°q¨¬ }‰Çö7Ãu©Äƒ;‡ Cù+h/à0s…9\ë©ÿ ¶Xë&­mA¹ŒA4bIχÇn°*ÿ»8lî»HÇñ½k›šp„l‡z_ È-˜CO}·ïX¯\þƒ:z깋!#° ­K¬¯cÊHÞÍâÁtO]F/‚Æ[¼ÇTÒdp¿×º¡i!Õ®f@,¹nÉW’ 镸fÍbù¶vº&tp}/ÃRµJ¡!@®‹Jr„ºu C¢ý|(77=ºj-Û]ã d¨(Š€"*J®§Š”ÖSšJ®çã9Ur=ÏŠÎÉ"à>ÇCf›e XyÕÊCˆ»îæèÇÛM[²H§%w+eÆ¥HTS“ uùjCôºÄ«À±‰#÷à!7b)æÈG°‚>„2­äã¥Öå"ÿ a Öl¸¹…ÉãÜ‹@45ÖJájá¿{AX{eíPý¿1‡GЇ—0týáa«øpcD\ ÷GžÎ.†/úZãfëP=[Ÿ„9x'ÂÕaÙMú]dD¬ËiMj¿W2=à×}E¤a(æÎõÏ —9À<({#Ý9”GËüãp.^ ×ñFèÆÇÅÁZ•/Bñ£Ð|] Ö*ÞÛžîk8n‘“ÃÙŽ<…øÁè·£És­ây.è.(ZtCÓhÅ­Áw]Ä:ë+÷á†6CöÁfÇz²m!«%º'YÖñ$ÿ)ÖW±¿ªNbõè¦ÄoäÝWƒùd‡'%ÖÙž®bÚʉ{"“Qs(‚[—ºˆu¶¡?zú[§u·+öõäŸ ɈuÖç63VãLóhÔI¬³]Ñ8èÃ%=˜cq˜Ú¼WRbµéc½“9†˜D?öhƒwJBbÝTÖ9G€o¨(Š€"ÐЪÙÝøôi8‚Û8'S¨À"u¹q[÷J Ä:§´!tÔÝánwF¸®P¾™¶ÂÍn‚nèÖGÈ7µÚ#ä[`­Ò×7­¼›±ŽÇq“Ün á½$•÷!\ȱʴ{¯Æsë’ï¼6ÏóƒWQ†!7?j¹Þ°©­z  –ëõ-ëMxÓ]aȽvYKPêƒ@|˜Åv_‰$  V°¼^eü¥ÏÃ앉ªúæWÂuK\m¾ _ê-áŸü:™æ[×/óNi#ó`}^dÜ©Š*?ƒÌâW5a^®]‚x¼¾Îk°Yj+¸@(3Ö-×2+aU"w€ê¦õö,àpmlµ¤é ÛAã?Vu×c½ÃŒ¤m¼…£ñ@¿s(ÆÛ5˜¿À®¿H¤#¸— â„bœ‡Z{¯Ãq³Rîb ˆ…¿ñYpà·žäƒà<&r d; ÈÃs›Ô0'ðÊs ÎÍ9Mi\Êå{œïõw:z³@ ˜ÂçÌ1ŸÇ ÜW<…Ï%IÐìËHÙ ÷(×a¼30b‹ìØ€Ü7‹j0×ÌÕ?¤A@¢²TòÙ>Yÿuõá¤8~™qß×0êÝÔZ¯— .rXëõ>ˆß åÆî|#s%”Öë$à­Q¢*Š€" Ô€’ëuc¤5¦Š€’ëMõÌêq)ù€€µÎªÏÃ2-iiílÃtǶ³aºíYß¶µaº}ØvÄ¡>dv.žéC&çPŸ±µ" (Š@a"hCS{4AªÛ±m8 ïy­Ä’±—mÉIö÷qWr§!°‹@¼ÖB½¡%·½y¬COéü+ñ„Õˆ·€2l IN¯…ø*èºÐ*èùÐÈ[_vÆÖr^TZÏ[×0k"ÎEÿw¡$Ô»@—@WAù†&zr³ØƒTE ðàL^ˆZ®çÅiÐI4/”\o^ç[VPE@PE@È>‰Èõ| Õc~8\¹Tã¹ œšùíw"òÞü:-¶™¦ º|¡òMZ®“\§ûgPºð9ú9”ä:ÝòÑr]Éu€ ¢(©!ÀE@PE@PE@PE@P2Iõ"9 {ìWï7º2?3ÁÎ0³áë Ø4wƼFbˆè˹‘©J¡#`-Ñ’8·®_f„¬3Brc4>ÍTÌEEP %× äDé4E@PE@PE@P‚A ŸIõXaÇ–2„]S6ÍZ†â¦JãmÆ;CM7ëVI´Û}d6GÜë6løhÚƒ" 4”\o6§ZTPE@PE@PE@È2kÁÑJ¾Zª×uè—Ë"X×WÀq-ÙBÿª«‰–ç=$Ò­Z—/ ½ä:¹1/?¦ìyZu‚Š@þ 7?ð¹NßW|+¿wìΟs§3QŠ@WÇq¦6´m¯(Š€" (Š€" (Š€" ä1$ÎéâÇëwý¤+¡¯BÏ‚®„ÒïºuCB^EP:(©³FŽ*€ä[ ‚½†[/GCê0Š@sF`‰ëÍùôë±+Š€" (Š€" (YBà)‘d/"fiíVHk¹î —…:iä;OóÆ547 E ÈrXìûUEPE@PE@PE@P ¯`\ z= oÂV¸¼ Iö‘Ò6ÌWj­‚ö@¡oB,¹N·0^r]‰õ„i" Ô…@^‘ëuMVËE@hŒ’ͰÕN›fq¬z…‡@G™!Èò›¸Î¸ !1Ï b®Mi’mä¹Ì¼ ß”ŽJEP ’ý°‚"ÙGK[8JýJÀ·6tLcèãg ëæÅ†tC¡åº%Ù-*Š@Ê(¹ž2TZQP 0R¶½ñ3¶ÜÑWs·QæÈShÕ·-µ‰"P7Uò *m\wE­‘QÈèïÒŒö©)Š€"`(’},Ö¹r ˆõkpÎ…^W‚ÆO·MiXøXËu†U¡Ã!/¦¤záŸ[=E ÑPr½Ñ ×E@ðA`5,d”X÷F³ò¾BÛ>Oæ¢Óhšthš‡•×G¥ßë¼>=:9E  !$ûmÒJá¼92÷àñoN9M\ç³ÆSÆÇx±,„üE8Æ–ÐÐÐ*h t5”Õ1a ÒEÐZ¨ &ãÞ<[ *OçÙ'ÙZ¯ÛiYÃ&Ú| E@¨%×ë„H+(Š€" (Š€AÀÁcgCe´ldÖ6–yò›l+¥ÆR9½^+do´ûD†É²|;úš´: ë¥Ìb]ùVj[¢¯Iiµge;‡ ÙŒ_à1•eê2Z6Á ‚°“[€‡Ù­e°|›zãP͆Îa˜lŽy¯ÄõRµ„•Ú_x¼ê"ÃåÀ´ˆå ¹s¸ ÛÏ <áÝÿâ4æÐs ­ÇŸ˜ÃÖ¡9¤N°WÀCv­Ü ìîG¤<‡á VË[À¡áß7“JÙ SRî# ×b£¤Ì5r,p¸mû§Ü^+*Š@c °]¿1Ö1›±”e¢C&ÙÏÁƧ¿'ªš±üq À§Èé2wwŒuËÁ¸NS]‰ ™kóBUÂi›_Wèí£®º±åõik癫¤~ˆE/?f£³P&ƒ@Q“9=E@PE@È_nµ@$¿‚Îí¡›B÷†® rö5º[§4ñ 9õn7ukå8´oø?AîÞRûÛ@êWa<½{P:CwG|˯c]RêƒÖkA¹ÑÔ Êñi¨pæP™R{n”Æ9Ð.Ëñ ,ßéjÇÖ)õ3ÐîS·6<‡ó1‡‘)µÜ«qÌ"[¡ »"ì‚ü ¼ °yJ}ä<´ª{â|p¾ {YJíµ’"PÐuBôíë¯$©*Š@SFÀÁÛÅX*αN§È™øÏ{‰Tˆu¶hîR‹_BÚ±¯D¸ áb„ ÎG8!%f">áÏ@8á$„_#ü¿ƒŸ!žoK´«Õz¾!"P@èH,ª"1r=nrÎ3ý9¸åiˆð¡³!¢ãGãçâ¹FC Õ¶Š@Öp@¿:2öÖ'FÑ´ùeØŠ7‘Œƒ•øù~wóTáKÄî"¿#¿Ê²ì gyÊ££•rˆøçÑ uÊJhä»R$×ÁÍ’½¦BÔ¿Pw¦!µôä{çð‹¬‰9\{öD€u¶ÀK©K$³Vì.Ç\ÒÛ¯úu]€\Døò´KžñÁÔŪþ€µ~Vû.©Ï:±s¸spÉ¿nÆQ.6Vóûyн8ü„ó»Ÿ\ ‹úDR)'à“ð$ŠÝó?‡K1n™Xx>þ’6q–â³@‹~•Ü!Àï5¯=~.}²qohŸ¹C&Fê†ß޾X–Ë„¤¾¹­2Ñ•ö¡$D ˆë~­¹N$¬bî'Šáç|ˆ¼Ÿ¸R–JFJ|£.CïýñûW×^s1×ɨÇ{ þ^Ƈ‚%ëDe‰ò‹<}±½_¿ÉÚÖ¢=û`Èö¶?›gCzCç_ILØéjhK(½ªW!l ]Ý*ÐtÝîeéte¨[>sQK ü ä=$ïÇž€rAàèr(﫸˜@ b xd©(Š€"@4©_®9Š€"Ð(7Ö—4ÅCÓcR,"à>äÅ[Q·,+áRäq<¶D?ˆÐj³¶—®•·ÜÈýyBÝ{ô{ ¸%Ê5V†ì¥Uuİ+â±èp<Þ‡¼]ÃÕ‹à¥Ô¸h g™È;xz„tÄ´n]ø°\‹>"ò-lº”˱µW¬Tâ¬ÖXÞ»¤”ƒÊTµ8‘Lu÷ØÏíöC±Íõédão´O¸Ì[G¾Ä¼„Z¾ÇÃíp<³ \ÏF*07ZúÛEZŒµÄªä´ßÙVCOý0ïq¹Eô/; ‚…ŠˆŒBýihO×6®8pÓÓ îzÂ]L¬°@ÄB‰`dŠƒWøéy=†T·P?g`ÿ5iï?÷óp²Ú£ŸÛ¼E¡8l•\÷&kY.ÿ½ÎÚ€ÚqÚd’\O{pm Ôw!—¿çñâZª—7 ©;¾M¶ nÝ‚¸êá6ÎO\ËÊàFF¥Ðà}UÉõB?“:E °Gy85’" (Š€" A¸J©ÅÃgÈâX ÈX<°Ò}Š+îCêe ÁIÆ^j³Q§+ì„^…×îhkæá² ˆuZ½[b}1ˆùÃa§þ(ØÃÑþÇpµòÌ¡o8ÍIë÷ä~„b].“«0‡ûQz•§þN “_ÆŒ£É]nZZ#/ K¬/Ä£Y´ÿtuô1Ýôáä÷Á5Ê1ž>Ý9L–{‘!ÖEF{Zº?ŒüËÃõé6g1æ@7:^.»ã‘EK+Ê"ŒÛÓàP‚¯bGd,œÔI"FR{Ž!ý#ĺ#÷H9z(Cè€J·Â‹Uò’ñÊ0ÙÉç –XÿË?q |B¸`P)Gš´ýÇ9ÌBÀÃ(~ûÁÖÑPPE i"@R½‹èerh^ëDùZ¼yÇ·Þ6”θBñZüGø‘·ÕâŠ4CPE@ \¹SQæ†À0Ùß~×:ƒ/76DŠؾÐÇ/Éðñ×€`lP¨¢ä#‰,×½su@ —Á¹ ¥\Fã¿gÚi|æîxýØJkkA¹Fd<¼ aÜÌŒ„Oð*¼.Äæ›®¬ÄƒyO<”¿®> q®”Þ$”W…×›‚ý&]n¾úmåYØW÷zÕ9 #0Æu¶Âפ“ ;øÕ ˆ»b~QÞÑ”Óßh±!>ׯ”-A¾¿ô†¡¼•¨Ó s˜`Òå°’XÅEäEØ …C¹Á 4\ÅÁ¦«]ANÓD¥lšƒµª[€ä>Û•‘ V™ôF&ÃAJ`Q^2ƒRn6½ÈÄùÏ{›R9!]¸⺠»Ú&£ÎWHÿZƒû:¡ò¥˜ÃÁè#âG•¾ó]Ö7uY>z¢ñs°ðÁ7 Î ÷ïYŽìèÅ ÿzš›)ÜïõKøÌzšÜÞz££ƒ†HCÇoè=FCÇoèñ·á—ÌeVCðÕ¶Š@¶ðZ®ç“¥z]ÇK÷m‹ÌÞ*ñíÛÜTçõ²,fá¾®~´< ÷E-ª[˜|ø¦A5>#ܬ–âà]‡!ï¼pUGÞÕû‰Ðh–_ïJ®‡ÊAÄ%×Ç7匌¦C(Š@s@€äú¼UŒ_–Æð©ÞPŒ]wrüM¼×®I8ŠÈx í[Û7J®7ò:®"Ð Pr½œd=DE@( ”\/ “Õ §ê’ëãAìöˆ:ú1ðŸ½XÆãtרüHâkÄùúðfZ5àFDäL&C²¡%ªYãLX@?j ãÂa²`Ρ­)s°)U0ÊúS¼¯s¨ë¥qm™áº,y±¾árökÁÐÔ¹Kï2X°%’aò –ßD±%‡9VÄÍ#_‡îæ5t¿>\xŒ§zŠ#8pErpàæ[þREŽ ‚!·2\h°q·ÅÇ(9–.óí`¨)Ø„.Ú•ÏßH[²œ ,'º‡ñ—xù\P‰¸˜qä]Øø¥ Z©GK¹™—Å/ºLSÙA@Éõìઽ*Š@á#ÀkâOX<,_þÁ4û#Pr½ÙE {¨Ïõìa«=+Š€" (M Ð~ @[ÀR\仸b¥kÁbÝosL[™º4ÖÒô)nÅ%ÖÝTÿ¤Ä:ë ‘Ïñÿàt‡B²ÜKÐN†—ð#ë¬O÷(°a™#¯3i$B¬³ü¤Ä: ‘Qï8èj·ƒ(bý`Ô+!±ÎÄ¡“œðåP{¹$)±ÎÚ¥ò ÎRĪ˜D^ßíßÁÿˆ„Ä:ë÷ÅEWCî¿Å¤K¬»©ó’ë¬ãZ)žˆ˜uÿã%Ö'âÌôö%ÖÝþõ®ࢎŠ" (™F )ü¶ðš¨Äz¦?ÚŸ" (M½™nr§THP °­­2. \+Ñ‚>|“D€›`–Âõ“áð^ «ä TŒ?ï%°ùÚdë¯~Õãò€]÷Lø;xfÊ·wíWŽñqueT‚X®•§Ñnú ôù¡9üž¨IT>73m¬Ï÷A> vB_1úOMrÆ~ í~BÈ=.†æð[J¸¯Ó“äß: }‡!˜Ãð”Ú³RÀ¼Âþ$bÓÑ~#´Ÿ /£û‚$˜RÜPu9,༔Éп s ÿøÔ¤$}мmð B.ü_¸žI9Êå/Ô³~ÝSGk5þðˤ_Ã;ÒE@®ÏõOqí àêõ ® Û¡±@åÞ/ÕСæÞ¤±f¡ãfr_Ôh+(7ˆ?Ê·€åutWG# ¾©W˜Ÿ[L\EPr‹\TE@PE@È $§éîc¸ì’{H§¤ÕñmÒ^ºÂž/ËT¸Iæ%QǕش©ªÑKÄöPÜéÈHxf¯‚‹—`ÅþHê2¸IIW*±!jKø_mæ°sàƒ[ê2 nXVËþhýj½qÀ¯z,t,Âf¤|™•_RŸjÞ ’{ ÜÌl(oš?çb\ZíY™‹ë ýBO;ôv%×g{—dU´,Ãá[²Þº¸Úø»ÏpçÚ" 4K¼šr¡ºÐHvw³ô¡8wgCoÃ2ÿ•Íò<6­ƒVr½iO=E ¯Pr=¯N‡NFPE@PE@PE@(`¢Éu{ ùO²‡s¶Õ2>ÚÒLÜ‘[±È>À„†‹€’ë{êtâŠ@þ#àï;5ÿç­3TE@PE@PE@PÂ@`8Úx Žb¾Å[M'à™ü1ô£[ƀ܈7Þø†×%P—X'®AØÝ«(Š€" (I ¿)E@PE@PE@P¦Ž@@ÎÂ!z7|nêG¬Ç×,…s¶ÄbIö@²iTŸìc°Èbì'R%ý1Ý6¾Sv<ä:& = Ú ºÚZ?Þ«–@WCùW kAòϦk·ùôθÍ󆟲í½u$…6ÑõK’öï­ë7Øñcëެ *Š€" 4Qògµ¸‰¬‡¥(Š€" (Š€" (Š@^ PŽDÖÏ‹¹è$Ü»‹-mA†÷åK_êÜp;±8 Ãƒøs cåO#•¬„äzc¿ na’!-S! naŸ6VE@PE@PE@Pz!àHWÜGËlŸ ©Ó±Ýú4ŒY‰á’뜭¶]Ël%Ö‰GýDy§ú᦭E @P·0r¢tšŠ€" (Š€" (Š€" 4GÞFûº Å ¢89 JϤ8Ð"\ä1Ô¬”¡òSÒº™,l¿ï‹¤æw tóLvÕ—kñ^‹wZ¾× ɤZׯÛ§2Ž·­xæ•ÎøEhW õ†lÏ<:¾ñ–1Í?E@Pš0ºúÚ„O®š" (Š€" (Š€" (Š€"Sn–5áË|¹ï˜$wƒTÌXø…Ÿ+g€.CÑf±Åá´#/À¯úU ŽkТƄ-Cá« m¡­QÂøùP½ªäê&ßΈÎGhB¨åz:™z(Š€" (Š€" (Š€" (Š@Þ!/¤ºæl=*r¿Œ“‡dªœ«ïAÐímq8 Ê2¹N~§ëŠ\PW-WE@hj(¹ÞÔΨ" 6ca÷2GnÃA´+ìÑÙ7až×“MøøôÐ )¹±CcN¡™Žý¾×¯6Óc×ÃVl"o¤zì±ö…¥9-éƒò¸TÈqˆF|WO5åL<`hTPE ½PÄc¢9Š€" 4óeÜП‹ ðuÒ`ãMDGV|à†TkC•\÷…G3Œ@-|à Ü èï_ƒ¡L¹ÇøF^…úJ®§ šVT:ÈwR=ösßý ²Ÿ‘€ôFjâûÀÅ 74UQE@P" äzBh´@PF@€^]!‰©¢äýŒæ×Üt6M~¾ô÷/·gS7šË-Þ:š"ÐôØÞÇ®9ݨ4“¨–ÉËèîeì‡ Ü-“]k_Š€" (M%×›Þ9Õ#RE@Pò €ÉµÃ2Ò—x?ã8ùgZ]/b‹´`Û|…¬”á°'Û²ÏÓ:à€\kêÉOx¼Üaœ9¤þ¦È0ÙÛ–Ý+märY*£A—âï›´æPÍÑ‚Ò m¾Cx4æÐ/­9 —Nð{‡‘hÀ¾Jk¼ú.@Qd&ô´ÿWZs&›‡»1‡èå)¿ÚÁ8E@Pæ€ëjå§‚¡LÞÆ1PUE@P„(¹ž-PE@PŒ"P!g‚H¾Jëdº>*‚S’»¦4Îi/Ë먻“¬ƒ¶¹»?èõýAëNM© éµ2ÊÔ­ ÏaÒ$ýë–Ò¤ö›¨Øĺ;‡ ì-#e¿”7<«À‚B-ÈhW,+¼$”—<)d•¼J;„qù?à°pø1yãPiDzP†…R\Xpp.–"¼*”—<!ë…pØgðôÕ çbÓ’7ÖRE@P&À8\Ÿ§âÚ¾)`Ï1×ùÂ=\^s¯“……{:sE %È nª9!ï UE EôÕîÒjŠ@“B R±³³9&Ç\õ?<—$«{?úw8(¤ê_@µ¥"E\·0ãaeÝ#íQ*a]+Ïâóï»Ô%[Z8™¸›ý¾öûúT›%k  ±Àö)eäD´©¢¸JE˜A)èådr'lÕçËxô±§Oµ°àÞ6ñø”E²*±YZ­ŒK€C¥™E¤v|ìYK–É[(Ø'¾ÇïÎa–OY$+ §`üG‘á‡Ã`à0"RÙ'vÞJ^ ”¸Xá}Ü¡ÿ†&2šè‰²±Ð†È hlß@½qž 7·O…à_ õ¾gÈèÙÐ\ÈÍ„ /‚î’‹ÓcKÔÿ%Í6™ªÞ}êì„Ô&/ »álòðè*Mr¹G–š…d…@KPê@4‚†<~1ªµƒ›ï¡ò Yj£òm‚ z5f³D>Èðц7ì¿£¯ÝMÚÍ» ¯7…ÓÞÈXi/ ~¯pv‘<‡ÑŽAÚÄ?ÂNŽ–ÛóÂu¼‘J,ÔÈKÈji²Œ/ Êƒ¡…Ff:ø],“;Myì¿ÛðÀ±@^A¶½éggÑæXôáÞO9¸¹o+ÀaÍ‚Øæ&íún}õ݇’A™‹²ÈM¹ ú2¹Õ·=-'›cèá)ñ>P‹ÃT,ì`¾§N$0Ë&Ó‘ß_„øŽáJ¬ Ë<,=€‡Ñ_͹<ÈSŸ¤ìqèÇâ0 3=0¡¥ß8,°LŹ b±#V‚æ!OÉõX\²™æ÷ºÖgÑ+›cjßé!Ð ¿}áÃZE(,¹nç[H${î jÍbûÑ¡éß‚å­Ëí¡hX°ð…ê%×»#ý$”oýñþ®¹ë¼åçÚÞ?"ê+¼·ç}éÕP.8x…÷ŸÏy3êßm>µûÂÞ¡øÚ‡âÉ‚6(\ªÀÙHV9ƒe£¯3 ¼çï˜Á~ÚJ¡ÿ„®×ÐÎêÙ¾=Ú- µ ,Å›tPשI¼œ" (Š€" ¤íw‚°? ÊÅ1Ú¿¿Ç£èöq½U€@¯’ñ.±N é ÛçC‘g­Øìôq#QÄMÿlyãEˆuÄo)ÈÜ"¸6‰È6°3z]hU+Ã`åM«ù±þÚzù܃f“TÓù¯ã %˜×«i#µbo£°=Ê– nü€ý,¹=èÿ\ à~¯ÅPî÷Ò;¦ýŒ{óÒ‰ë5>öŸzüMtÛwÅ·(Sna¸P÷zVQ²‰À¯ Ï—%qéO–앸©Å5<ˆkª¿/²ókñ—‹þm­ÂÝÕ „-L¼©b\o‹Íï(øgÃÄ‹ |cɆA´°ñØ‹ ¼÷KÒ<¶û·møY+Çûl+üÝ£–@ièÀž¡ÜG‡oûí]mÊnaxü$½ÿ¥ÐÍàùÐéLøÈ6Èã½è¶¡²ÇÆ¡„ cŸŒ åÑõË31å~Iµ\÷C%½¼{P½t14v1$½žê_›Ÿ3û¼Á,~§š¼ð UE@Pò Ù7».Ù•/sÒy(—„û ɧmÂmð¨ÒÛñ|˜‹îÝ…ˆ C™+ñXÚ 8LÀFa×F*Ã:¾,im ÊÍC f¬<Zÿx\ìÂaƒPÁJ`|8Žï][Ñ„#°‘UŽÙo1$‰ÑûA¸}Ç~åò´¿ÐÓ¯»2›ÐºÄú:¦Œä}Ð<°Å>Ð]„òx‹wO‡Í0î÷úqgd¸gí.(7®¨Üߺ|œŸÎ©y!И$û0,&×à*4îHVû }®qm´D±_èG.Ç’ÍÉÒlïׯ_ÿÿ¹çOn5®1-y:侨^räñûPZo“@nêäúÙ8Æ ÞËŸhbÉÿÑ8…„|×P5¶ñ>„²ã%×ã ÉIF>ë99Ð|DÉõ|;#:E@hÞ(¹Þ¼Ï¾=I8黡i…œŽE¡‡P溛£o4mmÈ"]s`éRf\ŠÄ%­ËW¢×%^¹‘#÷àa–¯¡ºâÈG°‚>„2|â¥Öå®A·¬7þµfÃÍ-Lç^¢y(\³ø ¿{AX{CVŽü9<‚>. Ww0ÇÍ@J[«øp"®…û#O gÃ}­q³u(v\'aþ%à ý.êZkŘÃ賸O>¶ÃÛ-WÀF-VÜ9°þYá"Ǽâ¾7ÒCy´Ì?çâ¥po„n|\¬Uù"? àÀÏÀ:X±VñÞö´Š ˜ °Ng;æÕâƒÑ¯µÜ§U<Ï­¡¢E74Æ#)%×srþŒ¡äzþœ ‰AyŒw°~÷ff%>ËÓ«Í&ê´Øm™•1´ÓhøNYè1º$—)r_T’ë<ïtCƒ†o¡A(ïCie[å’î[’ˆ4á½åP.®ò^z;( fR‘}Q‰ÆÄo ´´.€ …f¹ÎÏÄþÐÎPÊ/Я  ˜ˆ‘‡‘>Ê2÷þÖ­ÀÏׯnÔ”- ÅcÞgÛçþîEí¸µ‰÷nЭ ëA†N†ò¼ñ3ëZ©ó‚òœãî¥ü åý|¬pQ‘ L»@ׂ~ýÿŒLëobb®;~O¸èr tô (óø<¸)”Âq9¾3ß³¹¡L¾E²;t'è4( çAë¾ÂóÅïîRèGÐéPŠgâsLN–ÿñÄ«(Š€" (Š€"P7$oy›+¥ _+ðzmи.á#ý²G¤¯S—& ÖYk0nä†Áú½¯§ÍÍ]äw@«±–(OD¬³b7¼Ö:ÙÜTgÚÕ‚¼µÂ9xE2±Îz¥¸y®€ ú… â‹${0ŠPþnVŽö%ÖÙžc¼#gÃùK{Äz3 Ç!Ú™.Â$"ÖY>xÄ¡ÚXµÓz»úŠënz[ÁêÝXg{wýBs8†Yh’ ùå\€HD¬³N)üpVâ8#жGn„XwàNg]l${qÈÝ Ûx…îzÆÂuÌls.7EÑ—òá /z›i\PE Y"ÀÅô;qå¿1áFÜ™†¥ÚUû¡Ûæ@¬Ó¸.ýjê Iî¥ZׯÛ''Óç±áýñžˆÄ­ÖI,’4$qÙT…D0‰u X´© -×_‡ò¾Žd*IÐo¡MEHÒƒž%Ií’¶·@G@‘ÎÞú›!ñK(ã2„·{ =ñ"Î~)] 3ñÈш†nçɳQÙlÿ¦Í@x)´Ò“&=#”ŽpH(n¶mg3B!ïÓ9nº:”g.FÍ%öDx´_(ÍàWèÖP~Ÿf@)ì§œ‘0Íç Ο§Û Ä=ö÷ø¿È»Jüý„oº…rN^áAè@(ç÷!t_hÖ¥$ë#芀" (©#@‰MÉF"õ#ך…@¦É›®x)•{qûÔ wàál°xcEBy0Û»L<Ù¿!pâ€+ºtá V®…Ì4Øõ„§Î…ɚķÁ:~!|¥ÍìÁ1m¸Ùf©<˜´= é¦ÒôôR¼Gâ·±½ü€—™‡¥öb¤ ]ÅÜŒWl—‚~´‹Ì¡n]ˆQ]Bô•ð·ÎM`ÝGÝ9ÐZ…8 Œ²þˆïsx+¿bSS‘ƒ¢æÀÍWKa_—¸®hNFµg0‡b„‡)À¡ˆõD7ºnÏtW3Ç0,AÜÐ’p§E;?;Åð—?ÔãSßm¡ÿ÷Ü4æ tì\"ÐjôǬ¢dZ,¸¯’Ÿ’ ± W…ÿÀ Øèœ‘êv2îž*/ãZ{$®NCp}ÚÛù†6l¸cóÇE>„u]ä²%¤Ù¶:¸FÆæ£ÿJbÂHWC[Bé„oM¯æ5Æ—÷cݶù\³Ìäý%ÕÊ,D¶…nÊtïC‰&·òФ>º$C)'B› ¹N2×{A)\lùÊûÖ@iðCbš$w_¨÷³ƒdV¤z}Êg‘åÐO¡|ÚÚ º ”‹—Co…RA§C×…’Xç½û¯PŠ÷Š$ö“PÐZ¸óxyÜ{@Ù~0´'ôè<¨Ÿœ…Ì~1ìguL^¢$Ÿ9 |¶œ å³ã¦PÊiP~f9§X̯GÞÕP Ûò³¸º'tgègP»Àhn„'KEPE _„ø ó*Wì*r¾ÌPçÑÜ(2¾)ýQ(ƒõY¯ùµ‚5Â*³¹å<¹#ü+ûäÒy%n¦jpÃÄmD¾Ô[âá÷:ØA§"tSr'nçᆓîTndHJ—‚òNU†‚ÜÈÙ¸»·´£0—‘8ž#@j'º¹Œî™Vå£`¿7êÅXh¨6"³0Þ¦&ÜD´Âl: *1—ë1‡ÞÀanJÐmÍhXŸ¯ÀŠð6A¹9žŒ9Ð:$5)“€Ã¹¨ÜÇqnÑG€*9K¥Ôß2ƒs÷·±L¹çc ´›–ÔrŸÓW}мžšÒ0Z)#pj|FzÒNòÁ)þžæÿ‘è ó›A÷®ò`î-Õ}§L^ï¹ _‰{—d?0AÕ¯ñÆ×5 Ê4»p aGý jÉuMS$Öyrä"@IDAT\i©Üʺõ¿‡Cã<."ð8½Dj:S$™ËöÔ‰)4¤ˆ­| õYåž6©šñ|Ùq^a'iȨ[ eûw´£%õŠP Fö `=.zÙÅ’ô‰Þ*湤»˜œJINGÓÁE@PE@PE@PE é"Pb„¤z.7*Íš¥Æ_ï12›6®†ïa}+SÈæC?–LdH%gÉIúÔ^JRÑ®ˆ6 Yí9 úµ®ÐêÙâ² >äa›ýCs"›ÌÂùÎÎVòïAƒÒÇýTèSÐ× Ì'ñÎùÖ‡<Þí($ðIŽ3á#ü¼°|¨m[í§ØŒz¤NЦ ù³¡\"¡neDlšX$’_Qð tÛD²‘¯äz6PÕ>E@PE@PE@Pæˆ÷@Xª² 6›äËí ù0tîqx‰uƹŸ ‰<’Ç{Bß‚’D¶D2¢/$KyœB»@[@™—Žlå©ü»'žÉ¨wN©r•\±âmoó’…„ ÿ@H(ù"ý0º¸Ùº)ôŠ.GøôyèÓP¾MŽX¢œ ,+Sl¸u‚z‰ˆñÕã²ùÝã[‰„ ZÏ[±VëLϰ™ ÂéÈÏ)¹îh‚9i¶" (Š€" (Š€" (Š€" () @kï|ö¯žÂ!„«\f|‡“iØ£ÒráD(¥'”™åÉšÁnÉP’Ö[@Ó/¹Nâ2²ÐÓiª‹Z\±’.Ù¼v¨á|ÛAž„31}¡£ Þ… ºˆé ½Ê:} é‰úte“ æ%ÈO5›ß=Z¨§#=•-ùîÉŠŠúùœªé„ýÑÈt¿ÚŸ" (Š€" (Š€" (Š€" 47ÆH+8˜‘÷›˜&;/Ü”= ÇK…ЊT¥é à%ÖIðQi­Né%GFR½©qeÏà˜¬ð8Ó•#= h9 ñ’ëS !äú¬ÐÖ‚=Å!S®–ì3´F½¾JBœûðM  PkOßéÏB‡¦*³C'!ä[ ©(ýºç‹ÌðL¤®…‚ºÊ=]e&šìdgfíEPE@PE@PE@PšAx\ʵI²`Z!_`þOC»5Ÿ“Öä”Ä:…¡%Ö¾¥¯ëÍ ôël v’ìMÅzýI •RM•¼fý¡Ç2™ýÐÄ2ÿÏZ׳gúûNE¼®?~H¥§Ž$s‰'?6º 2èš…´-ŒI[Œ™Ý2¦Ì›\Ç›HçgõkèhhwèzС~6ûšXjÿ~ Uãñü¥« T4ԬуŸ<3èì‰ûEë*÷kÓ <%ן6VE@PE@PE@P_ ‰dÈ! ?õú?(­EIÃ&ÚôÏ÷p53ï Yi•D(•Äú;PÊéP/¹n2›À?Z- ‰]’µ© â1žŠ7!Nü²!o{:½qúO&ün^æ©ð®'žJÔ’ÍìçÐ$ NBûih]ç+=ý$[ÀØËSÏ¥Û¾0ê]8°uþF„í–hþ‡-…öÜø- M Õi…0ÙñÒ'ÿ{Ð× C¡ù"\dXšÌùI&E snqŸlu&É\µHPE kŒ‚ÕD­´ÉZÿÚ±"Ð:Ê ¹@¸¡ŽŠ"yFKª 2ß±ö˜6ò OW%­£…Š€" 4’ìb,Ù/»•;ºQ®’ù é2cm‡É~ØÎp(Ããút”\Äô«7°i ]«ß%¡øJ„%ЪP¸!É꡸Î䀴Äz âL?=z"´ J÷$(-IÉ:….×à‡vž ¥6IÊP?Ù™AÝ…&‘7ÿ·_Å å‘ìþº”còœôòÅ ?W$~· |‰pr(žjð_T @‰ûz{žé~åŸPÊÇÐ9&–øß<q±fMè)ÐaÐ¥P¯œÄAÞ Oœäü1¡4?‡§zÊl”xØyrN^áØr $É­æÝåg€e·Bw‚úÝû]‚üý¡”wÝ /þsaáfh9ô@èÉP~F¼ÂQÞŒ\Å•\ÏÒ:Ž" (© 0̬’Ÿq¹´7r©´Ò:Š@î˜#Oa°¾¹PGjVTÉ78Þ›Õ1çÃÁ.Ñ%ri>LEçeÊb»,¢Ý7wH´&’É~)h­Û•d¯=qÏ=Rªa±žXÖ…‹˜qDÅ øŠAƒ–uC›¦K ›ç IÌÓò½®ímI±­ÏíSÇÛÆ[ß;~¢:±ù¤$c…´ ¥Ê €«+Ž!øh/Bb’ê%Ø?@z:´ ôxèPŸÉX·)I^ÛËÐN¡øÞï„’œþ ÊE°Ý {Ay_ÀM4)S¡ç@³Å…c"”¸ ý:ÊóCò}3èÐs¡;C)<$„ÓÛ_h€Ò2ÿÿ ÿƒ²ß9P ǺÚÊ1* u ‰o¾ÄʶŽø$hg(‰ó ü–ø}'& ´3ô$èx(?‹ì—Â…’ÇÛ0yÁ Âÿ…b¡ÐW¡ó¡´tÿZ å[ lÿ”óä½7eK( 뺌¹ÛÄòçÏ?#Bƒî%\ÔØÊcÞšsQr=ç뀊€" $A`µ¬Û^ U|D€7–¼©SQ²…@‡lu¬ý&D@¿× ¡i’§â¨Öo’G¦•?¤Bq iGŸì®%{ NƒŒàìÇpXlVƒ(« [ˆ&3‚‹Ê_JJlh)/–Ù¸ -u…lkë0N±éTÃú´±}×§-Û¤*ùåZ‡GÍg-žIž)*ãÌ:zôQ(Éu–±¾-$ V¾ÂÌ÷€>%¹ t$4™,>Jr>ÛBýlè]PZïÒËú çD qÅõ.,Ó |sa6t”çžds1”2úº‰ÕýÖÕ} ¼§%AN%émŸ¡f!Îã¡ÁR¬ðóx,ô}(:îÞmí ]Ja>ÏWÞõ$8gêãP^û)$§»Bφî ýJbšóÛj…éžP.@ä“Ð-Ì>Рül\Ra¹1b¸tE87Ë‘¢,÷¯Ý+Š€" (Š@SAÀÉÀƒÅhøÀ‹‚pcHK°úÈÿ³wr”åÿöî’\HB/)„^¤#(-tA± ÒQÿDIE HÄJ/BB¤wHB¡—„ôÛ›ÿï™ïnvnvoïv÷n÷î}“ç¾o¾>ÏÌNyæo&¹mÃj“¹þSÛEoé-iꥳðØù-7ö“Ü'J¯+éÇózëúõÔO¸™™Œ‡öÜ8è&¿;Vî&»Ñô½ rÆÂMº3øóÛâ“ìºù4«7*ñ»®·u¶ñÆ@í0¸8{¼ÁYy~ j’;ÙìqÎYŸë‘þú{'¹sŒêZ2 傯%1SP\B¥ÄD‰ªòàÕõ ë›¾t#f ”€{Ašiºyï$^÷„°N7¡]Ã_yÎ_$ò¦™Ò/ˆoI+PbÚRÊ}HŸdc<»%¬?$2Ÿ Jµ§)¨qMÚ·dËE@|ož…ìq2´}nÚ/‡Ý3m€gÀ7ÀIÀ·O44µ| •Ål" SX4¸¿î~ï&„¯p–P™"gs¹oLø*æ{Ô_‹ËÔݩ᥵1É}Ÿßéù´ñêëæüRÆ Ï‰ÒLóŠ/ _yÕ«¶oÓÆºÑž,­JM«ª•ùCÎóî ÆptÉõ%ª/ yh  £hkGü[tQšMdîÜ |5õÏÔÿ<ñKƒ.è»oBqÅ¿‚Üýv¬fé èwàÕ4!¼Q+½ž•¬O&qÓØw]êsãÕÕ¨5MÉ)EGœaÊ g呜CE§¢Å+š©ã­3™ð:¢¸&’›Òdë“¥¼Ž—…Cy»vV¦X¾êk?^W¢Z|YõJé¿r­ -ÌÐ=¨´-OƒrzѾ¡kbݯ”cº¦•P-û/èꘗ¥Îh0hzÝ+”º]Ö ì 0,i6„ÄÀ*@œ¾ zæA'UÑÄ•ö—+ÁUì§­éL[Ì"Æ€1` ½Ï€‰ë½¿ l…ÐMœ<.º#®Ë;z»‡Û’m¼ÍÍÚˆº/%Ò;.Nâ•Æ€×t;zHŸç&¸t¬H¹QÿýЋDsIÆíh Ó㉩ñ‰¡·Çå)c˜ÌNO­Oü‰Æ%±¼J¶Ž'3Ã+‰ôŽ‹Côê”1œËŠ‹jí\¦ŸZÌŠ‚oÌæVbä]\·‰¼¤ÌØag´ÍÕX¼´\×ÓX©nZNœ1q=åŽÇš´RÅÒʻ׺1ô• {ÍŒúa@oeÍ-øñó7aÒ+¢z’ÁÜô0ã9Ÿ}ž,ïé˜,u-g¶o$m¹îÐö$®K€”À.H 4}ÖYà ÁY{ÀÌ0z˜]S] t¿&õi Í6!ñ©(ãDÂ Ò U:­¼ ¾JÆÚ3Œža`¢û)—G…e¢·îö\î§õŸÎñ© ;3c ö—ÁãzwPÞàâ~\OŒ?á ôAÛ#VO¯9ænd3ˆ¹Íˆº? =+bEbÑ3™±•ù!ƒð&Hzµ²ý·Ò€¨<¾È×á5 Íkîêïk5>†WvÀ§óÍX~~tbxó}#mè5QYr '0†_ä²Rþ^ÄÍÛûî6rvåJ4˵—áb1ÇCa/™‰¡—Ý_©Óµ‘ÃÃy±öó£9Áã.wˆeÄyx‰í»*ÞŽåçGÏt_dO¸ÄÜöëÈñŒá—ù•KÚï¥xÏ~ ûº±5ë)râºÎÆ ò­çørÛÌaÿXÚˆcÇ— zõl-ë‹tq½vDõ$›gó&ÝÒp®m=Ä÷çø\© oöœÑ6_q²¦-×/ºÓuŒ®§ä­kJAbû~@×sºÆúxH\×õ’ ì`f ôOÓïÆ`X$=òuü~ldŸªSuËuªÞu` 5ÁÀ„p~²cjb,6cÀ¨r"\þM§FßN˲¿í?vèr'13zàŒ­¨¦uy„´v/ô òû¦%Iû˜ÙdÄÞ¬»‹òzeWö6RÓg¸œ’¹ÕRã8Q÷Ò\‘Øß)Ü8ÝM#ã“3á´.Ïr›t¹O"|ŸîùÄЇ±´\ôLñV„ñ€žeæ÷˸½I“…<$”¦®Ã¹ ¿:\ŽÿÑÜðϺ?“¤¹s–aZ— Ó@î*»&Ë0â0·ϼ…“[+üC½R?1,á•Ǹz†WšÏÈ[¯\¿…á9á¬öikS~ì^{¡g˜¦gÓõü(ežÂ‰< Bo݈j_û2®ëXÚ(Jß` —ãrûÃ×HZŽv.ŠgEñ„&®§Sµ¤ÜÔ×UëÐî2&®w™2«ÐË ä‹ëµ+ª'i:‡¹–—pö Ü¡dåÎsŽk˜ á|ÌÉÒ¶\ß èºKÐùO»×u§4]î ûMç!‡/°53Œfà'ô§9Õe·‚ÁÝ`.Ø(Ï;)ïK GÌ{õHgÖ‰1` Æ€1` ôAåV„ÔIˆÅI›ÈgCãÂz†rgàç>>cm+ðåú¥îvfíÚ–¦ÈYnsneäõî…õ¹ˆèŸÁOýH°Ÿ¡Ä‹må[ݯCþE”DëûÝÔ—’·+ÃIŒá rOò‰„›"'ß~è4–H›Û0†ІÖ?à6lOê?\½'mL‹çòË™Eó°·›ÒŸu¿#¡]XwîêËÓýÒOh+à1—1h¸å¶„ã›HÒÍŸìCZÝ+ä¡)üÐÒ˹äðïoÝ™î ±eùY5à“/Ñ¿]XϸË N‹ËhëGmåõÀb±»9üØj["‘ÉáÇ•þFÌ ëï…ë/ćÞ@i}õÀàÌðcIaR”Þ7zp ð¾íù3ŒcÀèK HT?žÙ‚׿\wQÏ«Þ&Oáaóî[œÓÖ¡ºÞÀZÄÍ>v‡ËÚ¯#GAb¹ ÏtAºÒǃ`Gðc ^ú™剚Æ@3pýÝõ©‡^W×Á<ðàï/$¸ ô˜éÀ`f ýÉn . V W[Ÿå)Çˬ_ïýësMåXrý³Œ¹/]—ÓªÕ5ªÃ@!Ïõxodá3"‚ Ì©Úî] Û‘[ñÉ>Ÿhݼäl7/­ystßËgO÷ §™9‡›[}|4?²£ò‹¸µÙ‹9ÁïjËïz©±¼f”¶„Ûàýð¢¿+\ž þǵ•wx°o„ŸÃx"TËÿðÚn5·?~ðKˆ7d|¿BØF†ü4ºÝô¶6ÏD8È2ÎÜÇ–”¼ˆ2{3†©Z@À>Ÿ¿ßã¹?7á u`Bt#—³ ^"Nk*ˆ3yí17†Üq[7{ ¡¸¯õÎÙ9n ‚¸–W2¡‡Õ¾l‹{Âå <¶pî»a\2xzŒw_!Ô eÎrS†ýÀ/æm¯Iˆþ­!ï#¢üî´¡ ٜɇYs<¬&d˜]^ƇüexH¡7 ÷Å „º‘5ÏõäT%9÷»¾™}6þ )×U¹ç8}š¯+·ÿä9¶«c)·ÿr×@Ä_±)³ººNVÞè ôõ*H÷ô‡J+½n?å#Š‹Ý§9Ÿk:6³¾Ç€ô0AP9ȉAÎÓ÷]+i^~][êVË:¿•wŽ£3cÀè2úm~èþn#àï–\ ~ÚïqX¨¶é@bf Æ€1P+ ØMkeKØ8Ò猗‰yf/ÁÓ\^Ý­±•fƒõ¥ù 6ºæj†Ðúý”/ÜOd^Ëï6o÷7nsŽçöE"ú˜(¹…´Ïsƒ{‹/ÖJφeW Ó$€gÂéKö¤Ý må2ÍËójoÚüðÝo({t[Yç®çÖênª -]¸F8þh¼Ë…É<(2ÈçÞõ>ßí6/¾½S‡‰xÉîÿÚ‹2L³;©^c¦gÂj}ÑüöX¹\4Mor»Á£¼öO‹•¿‹KÑýBá>–F'âa„Óüärô¦A¬çDótá>Þ†Þ4ha ˜`G–á]€ß!í¨¶¢>6ï’¬]Üæ‡s½û‹äxŽÅ«Å@N\·šV‹_k×0Œc –&&t vØ%® Š+}"ÐtvÀSÀ ìD¹º13ŒÞd@ÎGú¾…½2×{…vëÔ0Œ ˜¸^€K® râú½»{æççÊsݽ\Ö´ÏžWÀ=ÎmʸÔ9¼UNnÝUÄÑbdš÷Ü Õ*qÐ×úÌád·5°Æ0,ÌËàÝ´y2(éß¼¯³ÒõÇê*AÓ¦LdÎøøÜ|¦^ ¢1Èû!ƒ§÷áÜ~©M ¡šÛ-½†èÅaõÕ>ÍMÆ= »ðáV½ºØÑr±ìÅr=`94=Lºuœ#!ý´>ÜïÃpeÈK=ß&„ãòüåçÙRu0q½:¼Z«Æ€1` õÀ€41/°KPOz¯"M×f[‚×Án`:Ðõ÷`'jf ý™=‰33ŒcÀ0Œc s$@§™>:Oñ´¯±gÜKˆ¹{ÖÕžfèÞ9ô–¾)Ö|NXÏ%_TXW™ÓÜùû9ÚÒ§$–ÇÚg¹UÚ§ °®òše5÷uÂ;µZ»°®üoÖUá4÷0å¾–æÈÖ_€£½ ëª Vs‡ÞÕWÐÎCÆSTXWéñî_l¥ˆéÕHñ0$ sžÆŸ‚ºÊhºœ CqÿŸmõ¼°žK8ª¨°®2§…SäDLž]²¸°þ[fßTa=WÖþö4z¨cf Æ€1` ôOäñê!Á\×.ºŽ$žëzêHðXè Ê1 èºØÎ¡`f ôwì@Ðß÷[cÀ¨-ÎÆ·vI8DÎK´¶Fg£1t qâêøT*Îbnô¼’ƒðC3šÏ{·Û#¶ÎL-ŸL¼¿î×Ü$ïDOnFèob²hÁå3–[™N%ãfÐÆª”{7ƒ¼:·ß"ýÎ ½Ï·£ðÓ`SÚúcÐüñ¥ÙD÷eú¾Žz/êDc˜UR FÏ Eþí)ÿmˆ‡ÓÃY%ÕW¡‰Ìéîð@—wUÀ<ì÷/äc¤æ2?ݽRú(yŸ–Ç43«º"Ížmñ§.ÕWa=ìAýXŸá´v³Üœík+byf =´™·.~Îw_áÆ­9cÀ0Œc .6&HHoñéaDyú`û`ð8èmC ìÞûÝvÈ03ŒcÀ0ŒcÀ0ŒcÀ0ŒcÀ0ŒcÀè? xq]bº¦Ô[w«y«kƒMÁÃ@"z+¸h > òæ½HOÔÌ0ú zåÅÌ0ŒcÀ0ŒcÀ0ŒcÀ0ŒcÀ0òð‚¹ÄsÍÅ~ ¾%Øìô¦æ,7Õ«[žAnôÀ@›7ï{H¨Q³mU£Ɔe Æ€1` Æ€1` Æ€1` Æ€1` ôw¼.GT͹.]‚¦¾ã÷`—'û¡à 1Z¸¬äÅ®úµîÉþÆø¾_‡sˆwf+R`F„ïvV¸Êùkhb4¾®M‰X ±Hî¡ÛŒcÀ0ŒcÀ0ŒcÀ0ŒcÀ0Œc ¿0 ]¸DòÎö-(s h¨þŒš^Æ‹ìq¡Ý ød÷š}–žã¢º׿^ˆ4UŽ/ÿ£ÊW£ˆzüèáFš]L¢ßiùõ”V檧õ´±Æ€1` Æ€1` Æ€1` Æ€1` Æ@` À.ay$X ÈkZö÷/:+|üì 4‡»÷hOÜÉîQ›Jo£¦¹9 hŠ›ÍÁ² 3«qý× Rãÿ¨À`û’¸>5Z×îl«ôXr¥ÐÛÌ0ŒcÀ0ŒcÀ0ŒcÀ0ŒcÀ0r­xw·LB®L¡ ty¦Ë#]b¹¦ù&è~88Hxÿ^ £/€'Á, Qøð8ø7ðæûñËÕ GG ßE8¹ZT±Ýþ¤eÖû¶ªânP;M÷§²vX·‘Æ€1` Æ€1` Æ€1` Æ€1` Ô*^èöÓ§hœJ”æv‰ë‚„ö×À ¹Ëw'yºKˆß$A›ItלÚë)[9êHB¿Ym3`Ûª¶·O8:×ë`#ÙcÀ0ŒcÀ0ŒcÀ0ŒcÀ0z”/°Çø¸îv J»4¶O‚¯‚€æ›Dô·€<×ç‚ÿ€,0ïƒÅ’MÞò…3À M4×üñú0«Lc•iºšÑa,7¦£xWƒTØ"ÂtByãË3¿J!C qÉ»ÿ°$MÓÖ,TG–¥Ž8e·µ/îÓú ¹S[ƒê¿ Äã^@J/‚4Aâf@ëªm¤7*¹­JmŸnCßkFñ9„K€Æ¶3˜ ôfƒÒ’ÖÕ~´ë!“ìM°8Œå>üiâÍà1ð,hÙ` ìÆD_!üx?Z.tuìÅÚ²X ¨ü*@b¬DZ ß:}?D;5 Åx>þéÛ%ZˆéóÓÂså -jܾþˆï$Êû4…zèpYÈÄá©àc¯«¸ÖŸ•‰›æ‡O–õË“c/ŽÊ©=ð8d£4_^¢±¶ tÕ.£‚Ú¹H,7ZVšÖýh·5X¸ø¾ãáÓ¤ëÁDܺº­ºÚ¾ïKõüX¶&î×Ë§Í Mû»·îö£‡¾M­Û–àÕXšÏÓïeOPÈô;Ñ~‘ÜßT8 iÖݱ§µeiÆ€1` Æ€1` Æ€1` Æ€1` Æ€1мð-Ü ìÆ÷H½@8Ÿ¸DÛCÀ¶@žì.7› ìcÁš`% j‰È%Þ«ŸÎì0 ÄÅâé,ß 4¯»Ä]EÂò·­ˆHÐ|™¹±´“‰—bqqýq*øq¨o‰Í¯υƵ!Hš<½“œéAÁ 1ùúòdÖÃoÇÑø}õí×éD_ˆðb 6”ÿ@×ò ð$ç´ïã¯ÄÅ}WÌ‹ÐwQ)ù@Eíj[{Û‹È{À÷÷"ñ€'€¶‘Ò5ž£·®l«î´ïû‘àìÇå9óË ÿî –ÓÏ ±~N%þQ´¬‡ò8om³@Ò–%á_Àïc₇ciÊ»$CåŒæÌŒcÀ0ŒcÀ0ŒcÀ0ŒcÀ0Œc ’âºDf y^ìûøO÷Ì݆¸„uAb©<œ7ëƒrÄõ1Ô÷âò⻀¸mÉÂ+@ã’ˆ®ñ$m! Ê¿$™QÂr\\W‰—q;‰‰¤Ê¿;žÅ/Šò”ØîÍ{š+O¸ÃgÄB/nK¤M³¤P,1{½XÁQÄãBí—by¥D}ÿ~%Bï?ÞôàäM õж’—Ü´HdWþ"°6HZ±mUnûkЙçYëòø!Øœv²rû‰‹ëêoÐC)oÚþ€‹´$í·$øük‰ëÁ–·1Dn>ÿhŸAXîØcMYÔ0ŒcÀ0ŒcÀ0zŒ®îÏo€95ñ¸#Æ:2ŒcÀ0ꤰ¾+«ðàz_E¸XÈ;]Búæ6Ò6 \ŒòZ—H½<Fàû!ZÐî%GýJ •XŸf«“8¨Üã@mÇ­˜`/—׸ծÇ^i…H;?Vf§X™‰·Fy7ÄÒ“Q‰Ô¾/&2½¸ýQ"Ý/ÆÅõILN/£rÚ.¾ý_)¡ æûW}yN'ùõMGDe´­vô‰‰p˵UN"}ÒŠm«rÛ‹ëêïdçÑr¹ý$Åuý~ÒLR4aÕX=„ðûÌ”Xz<:’ÏÕ#±ŒrÇkªp´©p–寀1` ôœMŽ¢o]tÕºé®_r(ï 3cÀ0Œv¶#ªÝ(ײéFÞufÆ€1` Æ€1Б/x+”ˆz ‡ºâ¯‚cÁsѲÒ4Õ‡ŸîC‚ „U…JSÜ×óË:Ë|˜[Êÿ»‹»DIòÞ}&?»mé b‚S€„~ç§J›„ë; 4ú3ÒÿèÁÁaà~ û<—ZïÓ@!“çô7Äç#ÁŸAwL"ý¢”ŠO’ö!§z`Ð]»€ŠZ—¤i_ÐúËn„±Žæ‘ôkpøX¼ :³J·¯iznOé´Òýh?¼7¥%ýø‡5âáM%bâEûŒL<¥Ù,õÆÄ:àyÐT§šÛ€æsÖä#Æ€1` Ô\M a$—ÖÆhJ….&ÿVRI+d Æ@ÿb@7Èþf V×\7üfÆ€1` Æ€1Бà u¹à »H蓳‘H™ó¸ î…óxšâÊ÷q]3ÅlƒXfšË]‰ë²õDÍJ[!a]ýH•ȹPÿÞü:¼LÂK>1%|—´ƒÝ@¼~JÑ¢I/ÉÕC‰ëË)ÓYÖ‹ Œ"½9Ê{„Ðï#iÅ%júšRÄõJ·_h[Tºm÷B6#–10ß1Šë÷•6eŒ/z‰DáZ„ÕÜmÝéà`f Æ€1P[ ÔÛ±¹ÞÆ[[[ÛFc Æ€1` Æ€1` µÆ@\X—0z%°.ülp2XTNùR ¡}!XæGP\Pº<¨UFõTÞ‹ë‰ê mC!œ‹§E§Ç˧cÍtˆÎè’Ÿ0+Z”`ìͯà ŸP$ôë wp‘r…²Äk!ÑXuÄ¿LÛ°»öJŠñu–¾„áBÐ|áÞÖõ‘NÂJ·_Hô®t?3‹¬—~3ÞâÃ*Qâ„~›ùrÅÂJ½`_æ¹^Ë0ŒcÀ0ŒcÀ0ŒcÀ0ŒcÀèg $…õ‹XÿƒqM=q3ðžÈû¼hª|Å•&Ht—À«P¦¸àÍÇ}èÓ …#cy7ËóÛÛJ>Rá0ÞGZÓïE‰Ã ½€½F”ÖÙøUÌ·/¡ux]‰]0ñ®‡Õ2ÿ%­ýø¶JË/”Vj½RË%û)TïdÁh¹PùÅÛ’ ÕK›¢§­Rˆ³ÀïŠuH.4† ]®gâz‚A[4ŒcÀ0ŒcÀ0ŒcÀ0ŒcÀè— $…õ3`á[@BíñàN ±W‚x\T÷ºÒTVP/œû¤Ð’Ë>½XøZ,suâ¯Æ–“Q/b+Ý‹ÜÉ2å./ßI«EùÓ ýúÎ&>hüYO¬CgcènþœXÅC‰k¿)Å>.¥eªÝ¾FOõãûK µÏl ¼{Z™´´{ÜÍ>m –f Æ€1ÐÎÀöDõ„ýƒ{®[öéI“= |šÂ*»ÄÓ×kn:é~°lîËóDëþâÜՌԯOÛzÄÒ”W®¬÷’ö+ãʸb¨øñÊö«ÂûÕýÎí?fÆ€1` Æ€1P? $…õƒú)ÑðO'”@ª2Î%¦/òÄO÷"q= â{\h—È,tÇ^ŠU‹§Eãùo¥¨@Úª´1:Ê9VίØXZ¡¨/3—⸞ìÅØ`G×6(ñ©QbMtˆV»}ßaOõãûK ýþ£ý­˜“¸¦ù>ÐGs5—~½Ø ‡™1` Æ@Œõ‰ë•º›€¾,®“£ž,k9nÕewøÓüWÃTç#Å}  °হÆÁ>£ÖCÎpÿaŒÞ‹¢m=ã® WÖGÈ@Iû•qe\Á@ÅW¶_Þ¯8øë¡bW=l”Ú¢1` Æ€1` ôÍe 刪oþ È.׃¤°¾„4‰ìÔ%  ^<ﮀN-.Jø¿¶`Iç¾Ë»/¯dt_ûy7%ÝÏyíïUô°; ¶º7N3 óÛFÉñ{nµ=jÕ¦30íÜÞ;ñtðã&šg‡±t4˜ Tî)ЙU»}ßOõãûK ý~¯©˜´ïÜ‘Vˆ4íó“€~‡k€Z;Ã03ŒcÀˆ3°3 º€O¬tß¿=àóªMŸ?‰ø§ÀºÀ[­ˆëÃР±ê©`5ƒ}À4à×EùI+¶­Êm¿Tq½Ü~Ê×ÅÉ÷€çéVâš"ÆÛ("zP£ü,Ø x+wì¾ cÀ0*ÄÀþ´£)Pä¹P5ãŒ`âzÕØµ†cÀè8–›¸Þ3T[/Æ€1` Æ@9 xa\µ„OMU²H¨û($¬KLîia.C;€¿ïQû˜-+M1Ý ¤Y1Á6­|<-.®ÿ†ŒE@ý©oMÿ"qÓëFâIOl’œ¼Œÿ|9…3ÁK‰´ËXÖöIÚ®$Äë*~]¬P­ˆëÒ8ð:ðã]Jü #>Má m];ÛVã¨×ÝöK×颬õ¨„¸®ßÛµ ÎÙ+,¿ô†‚Oÿ1ñ¤#¡»%Û²ecÀ0Œ28‚ú:h¢ÌvŠV§׋2d™Æ€1` Ô>ËM\¯ýÍd#4ŒcÀ0$hJ$—úðÐ=ßÝ@ÂúX0¬ üT0ú¼°N´Wl5zý+X4^ š’eSPÈ:l ÕSz\\ß›å]ÁtàûW(ÿc@gvf€x]Å_§€4±™äÐŽãïàëþ/—þ­%q]ÒÔ/Ïý~Ì Ÿ_ ÍJÙVÝm¿+âºÆÖÝ~*!®{n¾Dd:ˆs¨¸ìì YwÇ^¨=K7ŒcÀè&GPOn×á"<ì&ŸVÍ0Œ>ËÇÈ‚V y×k:–_Óg7„­˜1` ô8SšÁ?€<€ëÖÿp°MÝ®€ ¼$ÞJԔ׺¦yù<`³‡žà;J\ 4…¦;‘v|*{Ý$ò¯öŸšV¥7lM:•Ø>¦‹Ûêo´N¥šâ±@Û¥ÖMû›ö'­çN@œ{€@v—¬ÚíûÁôT?¾¿´PûÌÎ`7°zZiU» fÆ€1` Æ€1` Æ€1PY~As/V¶ÉªµöǪµl Æ@d@âÅþ*¥¬yOvÆ,ûï·bã׃R³¾É€Duy­kŠy¤kº 6½›ôÆ‚¼¡åY¼ôÊ& z‚™1` Æ€1` Æ€1` Æ€1` Æ€1` •cu2M\¯Y‘ñß³§5w³Yßd@¹<Ö‰ç÷v§t® FM£¹š5eŒDx‰ñ&¬C‚™1` ´3 §nfÆ€1` ¥1 y4œÞ,­Š•2ŒcÀ0Œc 6@5Ú™‘Ôü´µA˜¢» ÛÇüt1wÐø©¨”½6] ¿ «ú âx0¤™ÊtË¢öU¿»^ÓݺªW+õ[ÙÎÛu‹ÄêU’@.H,Wkƒ]€¦{¹. 5Œ¦„4õŠŸ †Mkf Æ@;:˜˜Æ€1` ”ÆÀ»l ž*­Š•2Œc îÌÖ%gU.ÆH/a©Æ€1` T–Ž;oÑâÊ•mÕZ3Êb Ççdçw AUÓ=Nëb¦y}ß`»Šbíö§¼,×:µæØ)-LûÆ¥‡A“Áq`*8HP_ E¡„v‰ë‚™1` y ÔÚ.op¶` Æ€1` Æ@f`$ëv7ùS Ïä.ïÞ>¼®¶jÆ€1` Æ@òd_sá—9VýÄô³/ý 6ILJÚò¤ fÝg@%jÍ$®{]ã;0àõ„Ðå©.½?`ʰ̌c –0q½–¶†Å0ŒcÀ0úÞûi+=Žþ‡'q§wW"ÁÖÕ0z”Wéí£íÑ:ë H´\§„˜2(|w e+UDÓÐÜ ÖC*Õh™íp йt“ðân2½ÔåZ©_&E­®ýSæ§„Ù’ø@2½èú,Λ–µ3cÀ0:0`âzJ,Á0ŒcÀ0ŒaÀ‹ë¾³í‰ÜÉÛ¿ %²ßê3,4Œc  p\ùT%Ú±6Œb pÓÇ)Ó¢z8~sˆœÄå½~8Ùï!ÿg T1;Y..Ò&óÂeÆd¢-÷°A{(®K`ß'ê[º¦‚Ñ6óðÂzTÄcÀ0ŒcÀ0ŒrÐWäå…3°œF¬®1` b€;é@P’wÐ  ™1` Æ€1P pÞ\àÜöé{ÔÒJ0žåÀéà=vNþC-ׯR$¨ËÑt )žl~w"VË=$R9»ƒ3cÀ(Ì@$7lEôŽsq–˜™qSõÐÌèW n«Î=?"·ÒËÌϸw>îWô•å8~ÌT^ óúÆ*ÙZô\ÁëÂÞCçc÷a©i*_jÙ´r…êûù1ýx •+”žÖWZZ®¯uË‚ÎL7}g‚¿@ nþÌŒcÀ0Œše€UÒs½×<ÕK%‰1¥ìwÁ÷Á*±z7pîýJlÙ¢õÍ€®E‰æºÓýù«@×½Û7€>b*È‹]o˜÷:$˜Æ@atP©¸.È´¸Á»ÑøQÜîˉªí5+ÒZX~¥Á5üªÁ­riÆÍÐAËÌè17Žé´52nÑÌît¸ÁÛf]pX)u݈3îð•HêmßâZÌÕËLà^JV¦¦8‚Ñ\6OUkd#%¶­ tŒ–ðGZZ'=7i¼”šÖÓüyÑšMkf t‰Rzvì…]ªe…cÀ0Œd€kY/®×¼¨ž¤%;:†ûXü™óîAÉr¶\· øû‰ëƒÀ®ào@¢ú` Ðu–t*}ÐÔ‹ëDÍŒcÀHg@”Šâë7 ªoω©ƒ‘¦>×ou­îÍ®ù«ˆœ÷w(h Æ@`Û±Å=r w®¤ùŸw§‹ìÇþýíÒê~|*åŠÍ7XZ3Vª¿1ð5Vø’þ¶Ò¶¾Æ€1P·Éù øµ ë9² cÀ0ŒÚa@¢äžœ³î®!•6’è<{ºÅo¨qX¿´šVªŽð»l¶ŠÆý8¡$,‰é^Pײ`f Æ@Q**®G½7süYI½f\f6G­_®áÉF×0ƒcÔrxün€g»^·Ú’puŽZ·n™]3nÁUÇ̨²j‹k)ûANÆ›ë ˾hžÑî"Ö¨sd™%ü&fñûÀk>| î3,4’ $?r˜Ì·ecÀ3à/úµÏ$¡¼RÒtƒ¡W¡õÆ„n2¼}Hd6ˆ·Qj›ªSjÙ´rý¥þðt (d¡¨]ÄFš_¨¥÷ø1è÷(è·˜DZz©ij«PÙ¥dhê!3cÀ0*ÂÇ”ª;a=¾ò¬ƒ<˜/§Y¼O0 s¡‡Þ&Ý$Z+ã×¼þZ4ʶ ÆÀpâcÚ†{/–nQc ß2P1q=pË/›u ÿ„` ë¯ÎitkOȸgtRŠÛC,\žuͧ·º`7ò®õöÀ­86ãÞµ9ŒãLY¼Â ´êäYËl‘ÓŒ2lr‹Ž,Þ`û¬G<@úOàVÚ(ëæ"Xe$Z™…Ð ‰æøKKMó„i‰¥¤Yý矻m£n;’.ŒOˆ a=i·Ñ‡Þ¢0ë&p¬›·¸@š\Ö‡´ÒLçÝÐ_ôjò*´UL÷Q¨\¡ôä˜ •+”nõó·q!ž ¥{þt¢xoØ tª=fÆ€1` T„ÎYhHžë·V¤Á^l„uid=bS½8ëº\üyV¡Î˨¨Ñ™„º¶Nz­³ ˜E ìBxð$”ü"8Ü¥³ª0 }ôþ¨å „WEñž ®§£íŠt¦ß´ =hÑÔ¹×€G@šmLbwÏ ïPw›´Fk!­bâ:ÂúÅëÑ)s6óIŸêÜ3×±Ñ-:³Å5¯MCÁŠ­n¾DÊnMÓQ°Ë0*Ì@à†®Ôâ–®®fñ`ïòÛY7'] qýŸ ͚뤛£ÀìjvÇÕÞïh_03*ÎÇ y©~†é`}Ê~|ó¡0~3âÓKMëõ‹Ð[4k9rOŽP´ e`@¿M3cÀ0*É€tÞPïy&r¡Ð]1¥’cêR[Œ]÷|hN¼šõ tÝê¯]ŽŒVë5B‰„›ß¦ƒƒ¸éøÒX‚¦¾•“ÈzàN ‡œë€YåÐñttÔl±{·Ê÷œkQxöýwÖÇöÐÊÏ}Át·,”ÚV¼žâúFBÍš6RÙÆt«d]ËÁjˆi/^Ãc}b1aÝwˆÀ8Ç‚_™ƒ]?Ö‚â:se¯•u e\v­À5ÎhtÁ·p–o+n8_}^Ž׸(ãæ¿¥üÀivî­­èkSŽ˜¯6¹eÜÇzúQÔTWFPÝœ;±ËÌgŠ›gÑ#žÏ¸·æ­ej,-nÉf .رÏbì×êØ7lEf,–l->ÆÁœ„(0?ãæ½›ä&œ¨†lÉ4@ëd\ëJðýrSÈÛ‚Yì#lòò-7¿°>¼"i»d^dJÿ—ž˜åû~À«úDÞšX>JcŸ-ýæÚ| ®ñQ/%dú£-².û¸=n =É+¥)+Ó{ ¼Jׯy’šuÅ^]~8ÖwjšƒR03Œúc@×Zâ(”ö~ý­žØ0ê„mg]‰ì(WfÌr@ø@?(¬QgVŸ HTtm¼R´ Ò–âçL%ë¼iæÜ:paDÄc„rÒ™öÜ¥³ü Üô0ʬï2ðVM¿“¸ÉIC·öƒÝÁ°!¸ |š¡D^î€Rmn©{£\EÄuÄê¯pÔA+ÅõKR¦‚I]7DÍ|üôË ‚ÙFÿs®£V‰ ¹U‹k½ˆH²QjÖò —ºAÏ#ØŽP©vžeÝÒ‰¼Ç Æß¸ ŸÉºŸ\”usŽ¢¾ž”„†PJ;Íhtþqï|ìÓ}¸ónÁ/hKOáæö €:YŽÄÔ½ªÑ =¾Ðt6ñ-nñžj3W¿mìÏ4¹Æo0Uëo½9vú¾Þ—ÓÖ ù#k_b*Ÿ'ár¹Œ[z5©‡µçh‚½eö‡}xm¥ç¶™Ò[ámðl¶ÛÜâ»ãuºgŸù­²O´ê ZÄ«¶‹zZBØ|c£k<Ö?TQ¶Ã+¬W¸j™ú§³ÆÜ¸7U»T§Æ‡P7g×™x)Î OòÌ Ó:íšf²?þˆ©d~Ûžf±:càÆ{9Øèd`f ÔºØÑƒìR„õzZ¯þ0V]B:Ñù¸ÓÒºRÖêwä´nùãú¿3cÀ0jŽšÙ9.kr@pˆ³Y›Åî!ÛÒ,R¿ pª …u ‚^ïДîtM‹f0 }pÄÄx‡¢øÍ„¿§e~çÝÖy¨kVû ÈQ«Øµæ–äÿH Üœ ¾Òl ‰Ç§eÔcZEÄuDËýüÊ#Èüíã™fæl•IeeÝ97~‘:Pñ8Ï aÌ#U–ðk-n.åÁÖqêÀm5 ëžù é#d/PÿE<¤—g:íhî‚óîã·ÜVˆíyOè÷BнŽú#rÕøæ]N@IDATÕî9ê!ܘpcÖmZÖ :®Ñ-N[)Ó+cÆÛ­€õæABVÛ´‰õ\ÀVû7<}@gÁj`MÒï̺Á'4º…þégÉ}±OÀiëWUv>d{ðCð! 6³ÁôqÜnË6d?y<,=òƒÈ ·;ÛZ>Êå•þ—ú[¨4ý<Íó¶ÏàãÏ'é-Ú<ÎÎúGMO¶šqsÕgê¶N–µecÀ0*Íǧ›8vÝJ»ƒSÁúôñùÃóÄ\šÈ[.$BJ·ú]àmVìⵓÍgÙÆ€1` Æ@Í1Ps";&ÃaIâÏ÷¤UD3I6ÚSˬŸ´= è.´þÝ­«z!\ÓH„ímc¡)üCt‹¿= 4Ç5GÎÌnÀÉ~ʦzÙr>¤Œ&{KDÛÝ Ûž²eݳŸ#OiœND¾@q™>ÞÚâL"аŒmu ¿B\¯G„y¼_MÞ¾ÙäÜÖžß</ë¿1®MI»0pƒþ™q‹_ñùíaϽ½ïnÇð|—°ž™ ß[ËŒo2ÛôçŠ;75ü[ÊÚÝ\娿o5Lg9zxBŒéÀAàšœTè¡I)ýXcÀ0ªÁw:æþžã”< tá#O“Ašý‹ò_H˰4cÀ0Œúd€ãÿ¹½ÁTŸ›¯žF-ᲘõºÈÎoax,ø1À^È6£¬„÷î ÌÒ\º[WõÊ©¯ºµ`rr¬q]\ø}S¡×5å'›¹í-A¢á²B3çþ#áâ?-ï‹?‹—•H/Ý­ÏÍÏ‚ç£8A§¶%äD$¨þ‹à%ðH3i:Àöƒ·£òÔgö ·§~šÎ©ýg{°6xÈ))ÍS¸FÙ[`ÐoSë¸5Pq§õ,×´.› Á,ðxô˜é ÿ×€tby¯‹ÛyÀ¬3ZÜ >™&ePÚŽÔYõÔ|Äî{£6³á©7þˆ©«Óç|•#ÖêäS‡\¥“×|ŸO‡ˆ­Ûù2ô×&Ž«Œ¯Oú[ñv}ýÀ­4”¼7éáÕ>]!mž§vÉcìÍ;Æó|QW£¶Á`gÖG0¾8‡º ¼sS&,Ù0Œc Žà8ϽM‡ã}òøoËÆQOïÿb¿” Vu£ÞfvÇ9ðõôzö×þôFco›Ät‰œ€DQM s `7…Q‰ŸJSžÊ¨¬YŽU $R‹+ Ð^Çù,q ÅJ¿ ”kzÈuX ÔfÚ‡”'¡¶}‰ œ[óêÅÛøy«¤T¾8ªs;á@p HŽAíî dÒ¢®K@¼} çÚ§’¦ýÊ—Û•øÀ¼XšÏ»›´õ@ÒÆ’àˤêläëøyg¬œ/¯YÜ »6…о½6͵“ÆîˆÕ+«qø¶.Œ¥[TÓ§ÄÅç+ÁÓ¬,çÛD°Ì®“í#jžíËJ,÷ùùõ ½|z< ÜÆH³ªOø×xíNŒÒ[‰ïÏóq äø+ë ÝfâikaT÷æ¶Œ”íNhûЕ}‘Þ»ú‡ï2ÄõP|^”[÷fÞ X}¿N>”(ž–îó‹…ð5ŽñÅœîû+ÿEcøc¼\ùâúàOúíÅ8æð!_½ygŒmoú< Zȇ´ƒc^[¨+vf´×ÿä¹®oƒ5 1ÀŽDvÞØrÿþƯÉ…º´tcÀ0Œ^`€c¼‰ëíç9¾³°÷8ieŸämôžs\¡¯¯Ûï íZ/¹ï·ÀÍb°ÌLÃêÞ:nàçprs3ß3Ó”¹á´·O>ÿÓÀCà~0üHhëmKŠëzƒGb,à ½¢×$”* ÃÄuHHØI,‹+áu GF ÞZ~¬Ê1q.qÙ÷!mQ÷"€¥±ôWˆ/’v ¾.Ó»©ào@Þä €Ï›I\}Åíb”ÀîË>K|Vlù]âë9 ©Œ8ü|-+M¢ü: nÚ¯|›W×›Z§xÔ›>ÿmâIG¾ÎÄuéïÅÚx‘ø?À@}ùqM¼;6…J~|¥Šë¯Euæê·ç­ÏŠëzâR–iNkÄĹ0=ÆÆH\îÊTé/Öä÷‘e´s´&—¹©>NQ¦‘YŸ`Z²0+©W4:˜>¼*‘”ýDOyÆ Ðî´;žõÊ0—÷]¬ãí¬ß­ .s‡ŸO;÷!Óø~¢nEfŘ:ä‘4¯wåɲîÖGƒð ýpI"¬~HyÖ³cÏëºË 7{!|ÞŸš¾…ȾÿÛäæí”åÕ F<ÄSu`Ï3¦ÿ¹oüõÿ­ö>«}óð¼B¶PÏ ÜÇà3c O1À™ŒCVxö"û?4ô©•¬Á•ëQ «þulf Æ@O0ðy:É»ïé‰N­~Ç€ö1yQ2]wÜ NãøT¡BÕH§¿kéü/´ý-ð - ˜I\ûà6°ÛÐýoMׇ ¥ýÁXÕ<±/¾ÎÚ/e>Ì-Ù_1p>ø×õêà( » Þ×Bö9êîÕ?‘ð‚X[ËŸŽcÁWÀo€·=ˆ|5Z¸‚På$|{[È•`/ koÕÿ=HÚNQÂÕ„§‚×£åc/+¯t|›ÎÉïG@y'ƒo4;„Dqu ˜ ¼}ƒÈe@)4ÖO‚VЙ §€Æ;È»þ›à6àM|é!æàBðO𠨦iÝGF=ú±S.¾†Åü&~,±P¢1s‹Þ6¥½½bå4]MIÐ:û¶zkìêŸqtÛs]õádëütr½áw>¸…öÔ› *Û]Óœö´s}üLÛø+„mÓµø¾I“°ßfñ}¥;Ó´5ÔIDo30¦÷¢q<ÖIqË®/ög¸º¸^§¾†m£5ºÎWA¶Ÿw¶.Õ€ã]¼Äþ47¢™1` Æ€1P÷ pN ’^ÑZîqOõbd2žàÛ`:H¯Ò®-Ö†åÕ Õ€´¡¡@"æ—›8ô\_ƒPå`ÐTÖ¬ ØÏñåqw{vÙ1‰×jWS«HtMš¶™Äã@brÜnaAugm»4[“D?ny‹ÇÍ÷­üAšàûé¾þ5ñÊQ\û×óQµ·XðuîÏŒÅψ•“îàM¹¯¯q;åéáÝŽñŒX|qñªrÝ™ösJTWõÓ¶ Ény°%ÐC%@eõp@dâ÷\W™®`T¼¡Z‹Wä€Á^ÔæqÅGB7êÊJ"xŽ”è¯C{þ)ÉAoîxY4¿ë—©§dÒZ塞L,e™^žÇ–Þt¼ÕÃÕWÓ„Z\ë4Ü›õSŸAÙØØ}jçaþ:·•ïѱ·õZF„ʾÖä–Ùž‡ÁçÂÅë¾)x\ì‹ð|Y–2LŸr€ÏëJˆWøø¬›ÏëhÁÕÔ;IÛ‡øXBޘȼ–q ¿‚ËøSÊ®4_‘²ŒCa:øê‘ø†ÅÞ^¨H‡ÖHO2 ×·ºè23ú4¿^îÓ+X+§‹N]¤ ôZõ àµ14…1` Æ€1P18½¹?ƒÍ¸¾8ªýEd£sAêß‘ÚÁ±7*)ÏrÏí'Skç'êØôQ’Ú| ?»mImþ:ZÒ+·åt=ò!UÔ^‹XÖö{hÐ>#ûx$Œõƒ?M•XGŽL·°'}Vm1…ÊÆzí $c*—sGÆË÷¥&×ø•Œ[ ¹º^k¯œYø«íËÉØì6ažzï%sË]àßIwÊÛ:ëï†Øÿ–?ØõäKY>ÛâÜOt3-ó€sŽ×áYmtª_‚ å`¡}²rÖõ±Çû:{ðN}¯áã÷ÁGÄO£óPx³V׺qx ¶‡¯`XÆeÿЇþAMná_|½ÎBÞL˜È´/ãUŽ}Žuæ68~”´'›\Ó“÷qø †wÖVµóß|ÖS†pò'@Š™1` Æ€1Ïç‡6Óy÷Kà Îò*9“3ÇÿÚr-b Æ€1` Ôº%ÒýÞ$ÎiOÕê𛹫ì5„:Ÿ 62 XfÆ@d@zá_A¨õN‡i_ºV•È!¡ùq ÑXËJ—ƒÎ½àVPªI7Ô†„üÛêߦ™Ý4›J¢fƒHÔoyÐ[ ²b:h¡ko/þ«¾Ö/ͼ“§ú,dÅ8ùJÏ€í€<¼;³QðºœDìbÇ* ßÞÖ#Ò‰³/Ú!Ú!¥cÂ$î똕—r?KÎK)¾ðAñì>¸eVGÐäßá(O•꩸•†Ro¾ê1Æ»¹y³%XÞ>jKé_/F‚뮾l|ªØÔ*:Q4ê†SÚ0=é)ÙãvŒm¦ï;pCõ±_×§áe}ZÉ Æ öÖØ5Öé*_Û%6¤¼hàÖì×Qåó2‹,Èßz?‹Õ½¡Hñ¼,¦Z!¶= ÿk戴ïùr„:´™Þð}Ç÷•¶DX×ohÛòúþ¸bdñ8#êë±Nšµìúbà†«›„OÔ×°m´Æ€1P‹ p0Ùz ]é7mjqì6&cÀ0Œc œ»šA~¨´ÐXº“ÎØõ¡÷€>ô®‡fõÏ€DÛ uX |°‰Û¦…Yžø` {}•ïïv ˆáÀ{$ ¿Ïäóf±,oè€O»šxWí$*´߆Ÿ'í°-(fÃÉ<ÈcZúÞ+@z oLJ7’·‹YðyñuŒ—‘ç·Ê,Ž'&âZg•I ×+DéÊÓøŠ™42•{=Vhl”¦ôccé{ÅÒ•W*µQJtJ¬íÉÄÏL@ºç¡`g0èwVÈôÐÀóÂB…ê1½¨@Xê ámþbâõpôUêðQÉ›¾CøËÎêgÝx™«Óøbî7æÄßkséÿf8 jËÈøØè}¹Xy%œfÝ´_ÑîF´ÿT“[¤õÉ3¦?aJ˜æÓI¼ZL‡ó)‚ç˜fhzÆ=²„º9*h”³4MˆÊ$ú‡‘q4}ÌÄÃróË~š_ÞØÃ†îóŒ‹i\Æð‘µárþØßýdþrn‰©^ö…‰£¨»~“x@ÆÍ{!^NíŒï”÷ÈçH_ˆ³’ ~w¢]¨ ©—ÀÿìôŠ·líË‘ŸØ¿ó¶CØVzé©´»û¥N0Ø´Kùs_MüáAËF|Èt”’Ùö&®'ø©óE=tÒ‰.íU±:_5~=1ÀñH-qè˜_V<-­PzZÙ´4«ŸÎkWiiIþ:óþØí¸ÛûByýÉ+ÅÌ0ŒcÀ¨i8_éR÷ñuiŒŸSoèûw"ëÔåJØ òÐuìø¨ ÔG‚ø=ðd–7_r|DÌóèîÎC©óhCšØ÷ÀÀ{b¯O\8ܾ>qÓXOØ“ö ªw(’ÌŒ-g‰Ç×1–ÕÕ±¡{³“Êò^—­€bãéÖ”Ô´ÙÝzTugñd–` !>&r»°Øè2?`ŠÝ¿ÈâÉÞèÿ*­ çL«[æ$¦ 9Zùð«¹Ø—ezwžùŠwðuÚÚ?pÍ;fÜ¢|¾õñÔ¬[rD´ü’¦”ñyå„7•c6oÈ9u{ÚùbéEŒ ἃµíT®išrsu]B”~°Ò‡¿äYnš™E)ƒ›á@±,ë!Ý®<+gìê™#èL8­ÕÍ9ŠHÛvQbàVÖâæý<,ø¸V]DI8ç×¶ô ‚ƒÏ·)p&G†ÐBÎòó .5ûœÖsXñÖÀˆ·ø2_޵ÑÁ(fúãSÉŒˆe”½‹‚?RaVâtöÏû“N7¡!ëν˜ÌÀåÒF7ð'•žî§ÔÁZ¹ª0p­ U5ö›µÏë¢Fb\i饦©­R˦•³ú½Ï›Ð¬Ÿ1ðÖ—)éB¯¡¯òÃä|ff Æ€1` Ô&ºbdMü)& Õæà£b^N$Ù¢1ÐÉJ®­è=„ï$VšŸy(VKôÞìÀ½îT¤¦zÂr`7^JÀ—}Ü6ÓBd ýƒ‰ÓòZ<Á{’§èS”¨œq¸èÔ<§… ®eÌ%ììø9'ÖÈ¡ÄKåüãX=‹Ö"â_c*Ž¥~ê ꇘFã`M•¸U† †oÀòA¤ÿ×—¡ü"Äó’ëÃT3«‘7Wå?¦íoø©8$`â%½iïæò›ßAß$ÞF¹S«Ðö7ýï}´v¼}ÒÆQæÍ¨ÿ—ây1œ¼9ÑØ—0=Ì©íSÞŒifìûPšo_ùñú½;öæµà;}ž¶—uŸ1ïÆzM‰òçÂæ«üØsS²4Oò³”=2>E(öåGu¿æëvÂÿ:Œ+œzˆðC¦xá¡Ç‰|þØ_¶d|ÿñmçÂæiñv·Õêòà$ìÿyBæ‚oÞ9>Æxù´8õÿîû`]~¯éj|9Æ4’´»}>á/|ž…}†mX“ŸU«¹F\©|›*ÂòŒÛú×>°€cÂù`åj{¬mcÀ0Œc  p¾ ¦½ÕœpxªD=Ócß|¾gz³^ªÌ€„Oé6-LiDoN1vÿ¿-RE:Ùû±²ªó"å»›µg?¦ £†¤Çà¦?KèEø(»-h$æËýµ-5‘C©ÚmI¤Ç•‘Ci!»† µãÅ|_Ncôã>Å'ŸˆÊêÁ€·±D|ýc}"ằôÓb镎N‰õ#˱-¨ì×åÂrªµºó\׊1}ÊŽ?âc•7ÀÖ2pöi¼{?71¹B¾áõË0sS|ÜŸŸ£GÝ æÐÖ!×zm,O[×dÝ#—"X¾˜u猥ýðUjµÁ”*»ãYþt²r–Y—ËJw¡oà`'<•_dyý¾ËQy ÒWÕAÿ3èÿ‹ñ¾2î} 4ãY–ùåV“7kBnìsFS¯íUÊ\Ùàž{¸o¥ûñòƾh:ëyëŒ0.Ž[ÿÄô=Køv„IØù`4H¬÷ÙÀ ù¯fì<Èq_d;ñPg«÷èÒ\Þ£<øi~HÛ“e=a½£…ßu“»CñU¦3käM„·ðaÊmÈvý:oN|™q½@¿CÓZ±ú?krûsà,mýbõ,ZÛ |‚átâ|³ŠCe63ªÎ€ö3]d 2ÃW/zãØ¾RåË(Œ×é,=­lZZ¡vÓʦ¥Õs}],ëœZÈ´ .“Ù0Õ<æêßÒëˆ~úý6DˆÇ‹¥)¯•ÂoÕѪÚPc >Ã0/?æøÄý®»ŠcMx_F¼¦ñnÄ'‚ÞÚþ03úϳ²Ò€$¦Ž‹B-'ít-«ib¼½ã#%†Ò%5ë…~wO4q~駃«ìS@³Kì8´„v gGñd°5 ¾\EuÐdG,ïMþ9Êl@ºw¾½@™xòtt¯ Fû‚³‡¯T;ŒÔ£ÁL râÙ¬‚ T|§jr nÁ‹/ãVÍ%~´DèäxIgîíÌ%•?Õ<ÜÉ|¿L[Ìq¶Ì¿².«‰^‡L¸©öÚÐû6„íÓ˜«<þT‡äÊX£[ûˆV÷ò4Æz2ë1’ýt4-K§ÿÌ{,Oit¾ÃÜâï&{àMÅS{ã¬[tå¾Ha”ÙHu#“ ;¹Ñýè:ÂX²Ï./,gìˆóG1­Ï“¬÷¬÷ N?V­óLpq£[x>¢öŸÒ~·l‹Çy‹€épZÆ“ u‡SÕ¿²£mö mœK×vUxnr›œÜêžÃô3¼ à†3¶Uhoö +ÿc„'ÒîyÛ“çÁˆ¬{î3äÝ Bkr_nqÙ3.Ø–6(‘ýkC‚Ãüɸñš_g‹V7ûû´ mh»nB\ûd+ËÏe\Ãä&·ðú®®_'][vÿb@ûtWݯM(U}¡Ô´®”MkÓê—ÎuMð¯t p§Ãh´?SŽÌfÕb€a«mëBùr ‹ï7oh…×@l’6ñÔ ¦ ÓÒKM³úõÏ_¹^D/°é†ÎÌ0Œj00†FëBdç\»c¾ t~”•{ŒÍµbúb@ÚSÁn`= Áû— i_ a|"ñ:–u˜ôOk[”Ǹ4™íD󋀄ó¤IOò6-Š4û´ûerVñê@~¡‡ÃéowðÏ”~'¦ã‡"÷GЙ‰7i¥'€íÀaàJ4M±3Œëƒ#€Y…ÐWÕ,7mÇO@ƒ‘ü Öhtžê /Ê+½«æ¦î¸c„Ðõha»‰v:ŠÚ]m·”ò¹¾o^“²£²®a8ý?…·ýk¥ÔU„Wx¬º5ºÖùÜýê܂׫!ª'ÇTþØ›×bܰÎO³Î³’í[ÜòËò m4sñ¤> Vx2ãf/,V§”<}h•ØZÇp¥ó&ÇJû®µ››¦çͱl‹·ÙØŸºn9no“uë³~sÑûÿ—qo±}Íú0:IðÚTíi/gS]$ :±êÂ$Ži`”ff ”Ä; ‡ÎðC@“ un+d’¡‹Û†tÝ_öñ´ôRÓÔF©eÓÊÕs}m 9xó¿e­§™1ÐS ðÝ¢ðÆ¹§ú³~Œc 3ÀÉLç¶Vségƒ«8öÔ„';ãÍxN‡‚&·_2Îcã ïð«ï‘ôª1„ðzSÛwÐýÖ®àz ‡Ì»í³•µ_"aõú˜B¯š<É£u?ªßÈ@žéÂ?ôÛÐõ¬Cye~¿pÊ,ɾI©ßE%ï'<¼-+´­ä`ù2XÈÖr”Ôö•ãîÞà_@ãmšÞæ·@žëÞ”ïÇ©´‹Á1@Û<ùû')´_ó÷Û`1о“f×ø ~VŽXxÜ!íÈôFŒ~ÃÆpéaäÑa,÷g,çâ8â*ëMuµÿ® ´ßNç?Î]‰ÛÙià¬0VúŸ)?â©»¶µŸÈ7…±ÒÿÜAÑ'K/Þs%µšÆ€1` ”ÆÀ»l ž*­Š•2jƒ®ÜÉW.°äbf Æ€x…Ýœšõ8èÆ\ðÍŒj2 fR'ÌŽÊôšÈÎïauÆp*8 i&¡ëD ±;Ý©çëô…ú-œg ñ ==bÒ¾ñiâzé”™¢—a±*‹ˆÇæ×Xþh*Áx_ S¹Ñàm-”`×RF‚¼Lâø, Qz ñX6žÞ~Nä{~ð-ð4 ŽÃghWóWç¾/‚÷Ú[ d«{J\׸7ú}ÞݧÉî‚yZˆl,a!q]EÆ?Ïdz°ñ"÷ñóý•,pèë’M¡ô¸¨†~?•×£&»Iié15g"ÆÌ0Œc 4n¤ØýàµÒŠ[)c ¦ÐŤ<ÑGÔÔ¨l0Õf@7'º˜öñx˜–^jšÚ)µlZ9«ßûü•s“Tíý×Ú¯<§ÒdÜ£®ò=X‹Æ@i ¬I1 ×=>';'£•è÷Gà» .²ØÁ¾EŠ`Ö}$$šÕ'70ìGÁïÀ§Áà3³‰ßôðé= ÓýÆ@=z˜[ª°NÑÐ[}áÉ`$ l áw€÷¸©ü óÛp ïvAטÿŸê4>Ý }Ü zÚþL‡ïoÁ°‰§ ÁOÄñ®ØT o .Z?=Ùx{ÈdpàðgV ôäÎÌ0Œc 4t’ßH`?M.­¶•2z™®¦t±õàû@7–Åì2_º0õЙÇôôRÓÔN©eÓÊYýþ¸À/fÆ€1` ä1ÀAT}&®ç±b ½Ì€¼[%²ŸÅ¹«+B\·†Íoàp*^ âÝjË*•ÎÛ–ÿ½jê_ƒ©y®woS ¤šDÜ5€Dë×A!Û™Œû ev’®‡1zø6 H, ”âÜ&Ñ0¼ ž AoÛ À?8¸„n™×Äãs`±Ë4íãâMâú|ð*Pûº‡2«":°˜Æ€1` ”ÆÀ»H`×IÞ̨+¸ÚšÇ€ÏåêêbÂoƒyv¤ÙTÊ!-ÃÒŒcÀ0ê–¿2rÿš|Ý®„ ¼æ8ö¥NF)!IÞ›çr½!¯Óž²«éH‚þ¦g(×$Ze;Q´”euÂ;ó`pšâ ßX‹k>œ•=C+Üè>•q zõ å]!>pCVɺ–ßeÝ9;p‚_Nu3nIkàÖšq³k‹õ¾žü튔¡`1-ê+èO5ºÌ5·ð‘´òöÇ­iy¥1îw¸EÛtV®/ç/uƒžÌ¸Ìpø¾a€[üþ¼®¶nÆ€1P{ p–׎÷ÜÑvRÓT¾Ô²iå¬~>#Šì%šôÛà›l·kÏÐWŠ”·,cÀ0Œc VÐG@'€ïqûá/8‡}DX7Ƹ÷`°“Áऺ¸ Ô0Œc ÇèWâºDÍV×::ÇrP7_ýÜVZÜ3aÜú‚yÌ2Ó;֣« æFë«Þ!J)úhqÁ·Ÿkr™}3nÑôüb­x!”ÒV~--Áÿ Ž©ý+…‹Ê‘ð·\¬Ð¿Ö¼æ×v#ä“[Ró# ßk\¼ŒÇ‹ ¦&næóVŒ«4Në¿ØdÑ:a`ãÔÇå7ÿ{ÂÿcÇ,úP½NÖˆi Æ€1Ð÷SØP7";çÚ¯Dõìá\`cÀ0Œtú•¸žNAí§"¬ïÀ”¬‘°žyaöÂF×ôiºáî’Q÷7èJ­ù•‰EßÁª„»sA¡v7Dd¿)p+~:ãÞ—_¾m驌kГü’ QynI­1Ðs Œ¦«Ÿ‚öϯ€»@!“×èÀ‡… T"ßà‘´s>èLÜ­DwÖ†1` Ô>œ²ÿÔ„õÚßX6BcÀ0Œ Ô¼ÈΉv[F}&Ø#1úÆÄ²-Æ€1` y ˜¸žGGm.p#=JwÕ²&×pÓÙü'·Ôõ¿n¿c2îÆl¡š[fË—•x¸ؤÅÍÓÆ÷ ”ŸÒä_ Ï’Zf`0ƒÓ´<'ÅeË íÅÄõûȪmzÀ5¼ÚXûÆ@ è´¤µÉe¥§¥JO+›–Ö×ê„§bS„‰ƒ€Ó¹xšÐÌ0Œ²à ¢ë9Ö˜Õd@ßI3/²ŸÀ¾x!.àüöQZÁžJc›Ó×$°_>{M\glÐÃŒ¶’r¡âÝAo×׊|‡±›Æ€1Ð'0q½6+Þæ+‡¶„cÍ̪æîc~÷/µ¸–'£~v©fÖ¶1Ð DŸçQ)}/MI‹'íÏÂéà«àåxF…ã{Òº"Xv¥,÷mâ«êy¤¥—šfý§‹ÖÝåoÛE™tc™´H8øí†Ü©/³ 0‘[ÓL!qý&ò΀ïÇ»Úíveú¢®”e8móô«žGZz©iÖú[J=ÅŸDšèLNfýƒçYÍ•ûǪÚZÖ0úÐéxpç¬_öøœìô»ýNzƒUÇÜB¦7»¯#³;¢¶¯Ó]q»Ø¸ ·ÓåÜgâz-n“1` T„ªˆë>¢Å-Ù¬Á®qV£ ç™Ea•gªcæ×Ïíã™q†x)ãæ½—>¦aìK‡Rf¡Ö#p«/“uì·Ë7º¬Û<êç[¹Û ¿µŠ-mJKòW ÅwIÿ^<Ÿ¼"‰aì#Uµ?Óú#@¿ïPÐL„i饦©½¶²ìpŠ›õ3Øè»³Êç‚­Š¬:çf·øé¡“ŽÇCÝüÅ—/5­+eÓÚ¬çúiÇ’…p÷1ÐÀïHðÝÙúë&ÞÌè*ú ™Æ€1Ð ,G§À×9ßã$÷zµA?ëÐÇà`PÊño=Ê fÝg V¯Oü¸Ø-ÌŒcÀè>×%Ú! ^Ñâï©!IÁAvRµù@æ3M®ñxFÿ/LŽýAŸˆ¨Èt%Ù»7á3Y÷“‹²nÎQáúbÞ´Óü‡F7ìÛ÷Žn:;¢óhú¿$ëïCÝPun¥ÿŒ{dn‹|X‡ ±„Àžu ~ÁX¾FòÀÜØúTýú¾ªÑ =¾»"3Ó­lÕâZ/BÔü´8ɽ۸yõpDöi±!Q*û{xÉ›óñ<êË4¹µtS¾È/W8|Žö4 K`™WáöKhî–Uák† 6¹éÛ° Žf?82WvÜ+3ùØëºqÁ›2GdÝM?gÜmSjä¶á;-K]óOšÜÆãåsmåþ"ܯÄöÿUÖ½s ö¥¶o'íϼÍ~tSáܯgÝ ïfÝìñ¤­’Û‡ZÙ‡„A·6º!g]ág4-n™ýÿO¨zåúvaýŒ<›ßÐÜâ»ãýu%ÎØ¿Ä±¶òÐÆÿ>µ«§%„Í7ò àXÿ€Ë· 'ç²™qKoáÏiY÷þ=,‡|²nIÀ:§Ñ-þ­/_Î6ðmT8Ôþ{&8ø ¨x:Dýœ>ˆgôVœO:RvôÖ˜¬ß¾Á¿öq¬É$°c k¤óOÞ9¨„:V¤|tnÌŒžb q©§ÆbýÆ@ÿb@Î-çK¸þM½Ç¯rÞúÚ±OÞáÅ {žbùå•[ŸîkÎpè MŽ fÆ€1` t›Š‰ë{!_‡è&!K†'¬{Žù1„nŒ: !—+šûK™AYwÎ „_¤ŽÞxŒg†ÐæH• üZ‹›‹7|°uÒ‹7pÃÖGDôsk¨,ùoü²x »õðþs«Ë´ Ó*ã v@Ö=óÊî¥éõØñê]>ã‚í¨OÁáY÷1ÓËm…Øþ¡¯[JˆØxë~9eÃ8c›A{ÏÒ.ÞÉn] ð’~0ëšÇ7ºEgÇÚ|“²ÓY^ޱ-¯t–_#Љk¢jÕL¯ÉÑŸ.rÒ'±^4ö­Cá Öý@ôFDΓÃÀZ¬I_ûÌÆéC+"ѲØ[çÕÏ¿äÞ¤§Dõ^ú›Jd*'£í O{bö8™7‚rÅåªÕgt~5ë:Þ™ûo3cÀ0ºÏ@EÄõÈëûjĹˆ¿or½öÍ&·à6?,„˱xÇþX8-Càý3ã¿âóÛÃ`'ÝqÑÆL7q²Ÿ¦BS |ÞNû£ÉÞ¡P"xž/Í—q¿†PèZ3®áÈŸúvégÔh¦Yôе7Šæ,ëžým«M®4N¤îQw€Ë/ÛâLb™ùà‚±­náWˆÿÆçwÒ÷„á‹X¯qCxp“[4Å×ÓDÖoTÛŒo2ÞÿSñ`Xù”;D!‚êÉ?Wq„L,øéq^VRÅ ñø[­m422n†ÝÑà¹Q&:椧¤ ¶ée;¦¶~—q¼ .`lzH² ƒº×—ku¯ê£8‘°ž¹¦Ñ5ó–AûC8<qùlxÜš}éêå õ\éÀo°;ŇL#³wò-‚œ×wëµô1ü€v.‹ó‚Wü®ÔGXí©F—ù\Æ-š®%Mq”uo^JoP×[Ûþ%\@Âzf&û>pÚ§haÙ‚}DÞâ<` Xƒ¸-üQZßî÷ n$¬ë·µìqñiŽh5Ú¿’2®×x?µ”ß Ow]prEWÞ6hï§"±q´røDÖf®íõ×ù…’õêÁë`i¡–n Ô*üvÿÈqæÆ÷C c n|‹Ù"2ߺa‹C‡²ø²â¥¦u¥lZ›}­¾ÖQÌÓÖ5-­GÖŸ}Eý˜Æ@d€ß·‰H}p»ÖÚ*qÓ¹-ÍzÃS=mr8zˆŒÏ0Ö­ Oû’;Ø3$žÝ!ÕúËD+!Ïu]w™Æ€1Ð{ Èc0uÊ ¬<€ÓF¢y»ÅߊÊý=^áòb¥çÐ|_<ÏÇ·óeh'OÜFØÜÅçþÂ׉‡Ôß!V&`y¤Ï÷ýk|¹¹¢}N. ÜJCÉ{“õ[@xu~nñ%Êß«~sÜ Ý8­4âæêäÏÆ÷xr ×ýØ5uIZÅÒÔöúšÇ¼£nÙå%ôSö7ŒeI4æVxúT¼´„^ßVWCÚo«³8å׈÷Á´){§Õ‘8Ì˜çæÆÜ|‚oÚEQø"WFûé2[ù¶ˆoíûáÍ y:§ÜüΗ£ÎêñBìƒ÷Em/dê”Uãy>Ný»}}â—ûtÞºXѧÓÿ±>=²œÄ:¶Rï úÞ2ž×Yœz·äÆÖ<+pãšÒÊÃõš~ ô‘ç•Ïòe>õ|8¹ª=ÆTÖ6HS7Ó´ý)RîIIqH?t&*RÄÌè» ð£à§‡zóçÄTtõáSß%ÌÖÌ0ŒcÀ0Jf€ë ÞŠÍ»¶x‡eÆÜÐ’éႌíàzÀ½bÞØ¯ïá¡XwÕa@´½Á9 ¬ ätÇæ–#¦Óý½f 7»î™S5ÒÍŒcÀèÀ@ªÐÖ¡T‘ mÌqý:"a·á­+¯¸¦¹ÊæÂy)‹§øÐ•Ó?òx*<–š¾ŒØ«×5=G»5¸Ì6x3ëè·¯ãóÚsÚcx"?ˆH8áu\{j.Fš<ó°`¥wó8"÷hÉ›æxçáÀº¼ÙöqÜ[Ùç ™Bf¹·p—\~æZÖ÷™´²ÌCÿÜ\Hÿ§¿™s·lC8-­l¹il«[“Í hq‹:$ÂõÏàí‘dá^Z~š·!nOë›ÞÁXu‚älÙpJ¡mÔàV¹0ps&POòà›4jï ¼ð¿Èþ³vƒüGMq’f´û ûJ”Õö§‰ùxûo•Ëi¸Oî7Óês&ŸŒ‡üîó–Ï>¶˜úƒØ‹ù^Àê—gÜy^E n[½ø«dzǶ:¦Ðæy¬Þæ L34•!t4¶ól= ` ÃÉm[·dI8¸ Ík¾Û ÙUW—u$oÜ“½/Ù†~ׇƒ£voÏù=8ü?{g'GUíÿSÓ“ÌL–°„=ÂŽˆD$(›ðTT@Y]qùûpAP‘ðEEDW”UÔ‡>İ *;Av°„% KH !É$éžúÝ}gjzª;=Ó=û9Ÿ9soÝåÜs·º–_ݺµuH$\…ž‰î‡†qcóe?"LgÒ]Ç„—qò+üæÏ%üzZzÃËùÖÅpGÀp#°šº?¿ˆk>]þ¥»ãߨó1®Î Ô}ùѨø]ÿ» êv⌊Ñê a²¤ÞJ‰~q„Kó±®ÿėȦ$Y¿Òùwû ò²ßŠÎ/šj&T?vAŸGB+-»Ev»lOLj¨|‰>†V#Ýõ=ØÔol7Tøo€>‹jì5†Cö7¦§F™¦^j°9BEÓÓfµ†rvýƒqûb¹mI5ä…‡|ác’« Ç!bíìzÚØ.›ÚY4JÏ‹$lÏ(‰àŸ––™R’Ì3ú;ËÖ|‡úëOß Éx#{Ãõö7…¥= 2Õ>ÒY©¹(Q*1rñá|ÐI„âíî yõ éc)y’fþQüaY•ÖÛÓ2;Ò¢;,þsÇöšb£±~û𠥿ƒü3©$Ò'íK:CrÞäñØÞVîhulÓ§¯þÅù:…zË_"ü‹âiþi&:˦ì;sp¡ŒþljßÎÚ“ðat12c“}‹™íÉßÈæ­`ߦ^¬å[惡O1S\ëúÝÔh›ßÁC¥•ER<ô;^ÃÖk½"Ò.Û¤&³—væáÔ–ÍY(ì[ç*<¼ÐÁ¸‹Ô:] v?áýTù2ZŽX—EPu@?Mî#×±}zú^4ˆnÎD÷F¿ µŸŸØö¨#0hษó0ËMÙ÷ ¿‚~] •íâ8Ž€#à8Ž@·ÈQC×ÜžT/í?O“v<×FºPÂuQiQßÜè:w³btÈç%„ÅMz€€~3ZQâh´È1´[¾—¢ºw/G^‹óûz Z*3H8}¸4#±­qý%zš¼ŸÑýý'Ñ'Ñ@0oI|6*ÑÖçò1–…&üi1^œH‚ú'IÖ/¤þ÷´gR]÷c· âŸ.D?–âø{Ò>‡ªOi²7‰ç¡{¦dÞCÚ×Q…iÒSßeë¨î+·×F‰ˆ«vê›K)€u,–vYs™xB°Õ±,K3Ów*ÝiB19nzZmAPÞОH„´Ç éÍÿH¦—Æiç(•“² ÆæÉü°ìFÈO„":yu¾åÉòÕÄÕÇ`‡úi;u»òK 4·=ƒH=—…a†üÙèYIeÖõ·ñõ8­M¯5âc›Úl?gùä²0̶ï=éŒIÓʵD_¦œ« éïœ4{gð>…ü˰{ûÚâ4›¼yѾÄûÕá¡ õß•f7¤Qn¦Êbÿ·!M!õ¶ =¿[…rMËðá:ÊJoB$ët7®o#`çXìþP¿!âÏf“íÛ±ß.”k_&¶ñá!B{¾"õƒN†»·±>Å…æP´Kuiç£ãÑQ åC^&ÓQ¯)Éôă•BEÿï øÑ°D˜MEùà±M*ý¨ýc>XÞõu²ê¯ûå8Ž€#à 7ü<=dF<¢'´]Ý…2Ävdq[éÊ×ýžÊ»tTy*\¥O¡CïDW£!]$v¿qé¯%ÊiroáÛ£h¶˜¾’ð³hšlC¢HÜÐŽHtõj_|€¸‘æ!"ñ [ é_ ‰)¡ „rSòkéCðív슗Q;ÂM^(n‡¶d;m?=–tõ5”Öס iˉ¿-•Z|?caŒ™øj·¢ÿ‡¾„_Úˆ ?—RDú•’sÕlCè~'ØJëú±”즒ë„­R°ùOe+“8%ø™¹yiYò¢?7¦ŽûMÓôÓÒzå¶ÕÇŽöšõC-+šAÊŠÌL¬'¹^éÍ‚d›åâýE®ƒž¬¥ xÍ ØU2Æ:¨¶‹Èrö»ÓêSv%müƒðúŸ$×ñíÔDúíFS"´q›Êbï·¥ÙÚ·Èÿ^¹þÐþ¬;Xi½j¶µ/RIð3ÒÞ~ƒ‘ÿfÁ·ü¬ùv³äçÉuòu€L•r>'Û)c¯Ó¤îYâÛ¨¦“g8€—†óÉû$Zö!y.ŽÀ°F€ÍÚè!Ä>è<¿}ý2èõAËÞ„#à8Ž€#Ð{pNË z¯·ìt‘"ÍEž‹Ô +¢]5¿t‰Èvq=MhM#-IvY‡“/L¥_))+|5A3ä®$-¶_)æ¿LXz/"NM$»ê·¢[£¥r ÊÉ{š”=ØÝо‰hÙy=%×kíC ׃âÖ Šoš†üˆ'E}q®üWуРzðña4às‰k_R«ïcHíÎF“>³iâh^G•ÿ"šl—ÍÁ/u —´sæ…eWŽk´ÆªÑ[ûG¡^ía´H6¥+Ù¿q•òGØÊ¿7Zëû2Ö²~a îèbêè©W^°ÿ_Y[~GØ^SHù:ÊD›tÄÓbó6 ©Ô{-Ä=\3àöÁÿT³ï©LÆÛÇCZr–ý;{Ð; ­E÷þ€±ÿewÉØÎcØ/ögŸ¸9Ý›¶üþ§¼¬e+QvŒlÑ–p9-c+6§Ý·5Xéøpguü´åAëÿA„DÛÕ „ý™,ûr&õ×ÂÖbl^…í¯r½p@£Oß&4ÚŠ/`/ßNµv“åjƒ¤­:ÄÆÆ>èQhûï7awCâ£÷¡Å1OäzÔpt7±½Á¡èutS· z:‹céWÑÔ7„zÝoÀpGÀ¨zýÎi¿B'ÔÏlßYÂïFô“h%’­ïò–ê…—¸yâ|·b8›P÷óh'êRûëŠØ‘ž”%l| Õd·è^hR4Wo™k,ŽDKïEž'M+ÈvZÊ)îMZhÿçÄ&E<χ’ ½¯µI—Ä=~MòƒšÁþ±D¡Rnè ò„#ˆÃsµ‹øžÿC]LÙŒpÿb\A-¾kж4.IŸ•,ŽF+tpHÍÿþÞJè’D ¶µ¶ 3Rµ¼H2¯Úx­3×!ï/̸mž]©MfŸ|M›¹^®.e÷ÔìÞŽºcô´hB½½Cê¢RúðžPV~&˲ýÇŒé ’yÕÄiûÖŽúGÔô„h€Î\ÿ½úÇLèÖØ¦èit·„º? ø€5¤sºˆ¤åX‡}—PŠÙ䇆t°>>¤§…ø˜Ÿ=N¹.3×ÓÊ+­0£½é‡‰6þT®lizlcףͶbÝ'Ø'uí"z£!”#Ô·]𵚙ë5A{cõˆ¤:ÕÉ[òRÕ‰û Tä–‹#à8}Š$–c³¸D°}*:¶OñÆGÀp:!À9¬%qn[E|ÐìøÚ€~Õãϯ,n¦ÐÄRÍÜ…jÂÛ÷Q†×®A·@ųèÚK†Ä™ˆ„wé>gRE¸ê>û½eª çR|…y¸gŸV¦^HžJDmH7Dƒ|™ˆÒD"§òÅ‚"œCý‰Å4[¡!ýK‰ôÒhhGe'&2ëчŸb/øpPÂv2ª}T«¨\’»Qû¯ÓÿEXN„Ùe¨tìZ,T«ï"ôõ6|ºÕï¬TÄÕ¥¥—–”Û:ÀÔ(»ÍâW±JFøõÊK$íöE’z/駇a Y%affGB¬§FePA0@IDATÐ>2ùêí!îáš»§TŠ_qSÖ¦wã`!¶É#ç;ç›xÔ>žäOQft¿Ú`ËË^<ÑÎÛU® ýÌØèÛÉÓ‰?\»þgßÜ×*Í9¡ýWð'!÷+Í׌öFÛë4ÒŸ)æU¹ÿ鈛}7mâ^~ >(T×íÊQT½nIÆ [íu£ð2Êê¡ßލ.œJEØèÁ×Ó詨N*.Ž€#àôºñ(Íüø:›ãòéèÚ¥|ÛpGÀDˆÐü : g²ë^Õ’ÿA¯@'¡¿?(à0TþëþO<ØÞÅ=LÈÐçU×e!^Ìö ›ü½X^8ߌ^‡ž„n‰YJD8'e 6´dd:ªß]9}P…вmˆ¾­ŸK8/‘^•O½!õèCÒ¯g“‰¸ø×—‹Û"ÚƒhæxX)áö˜¾JÚqè9è#ÅüZ}׃‘;ж&G÷#ô´ •dÑåùØü×m­ƒÈnÓ/"ÙÖñžÌü=žø%¥åô1ÆœµžI-ÚŽ{ÅÍÄ{Õ.,¡qUÎVŸÂ¯sdÎÚΆd?¢´Ó•»{e­íÒÖ þ7ï€_:¸îÅÌð #{óÉÒrlëÉP^XRDdû; r¯Ä=ùþ Ý'²Ö;K+ŠPÍÙ*ðÈË3‘-¨´Œo—G€%N~ã?†R?aýú]"{vei6{‚¯.ÇûhÇ`ÿHlŠñx,Ü÷zdëC2þ3,­¢ƒDQb]$æ%²o2ÎƶÆùýÚ× ±uBè$ì›guJ(nðÐGÄüµÉ~|ÁQŠw–[Ùÿšåº¤ªý¯P´ý¥‡_ŠiÞ>—µ•¿éHŒÚûÖ‘V9V‡1¨Ü@í¹³0¡û£?AE¶'EûÎ÷ÐÑ/'3<î88EÄt3BÅ“š–^mZ9»C½¾Ž9åDÇÿƒ~ ìµlÌ€±¨\aOwGÀp8ºÇÉ~çµK¿ËymÎ@ðþ ?t¯fq&ÝÊ$7†[lt-& jÑŒ$ Ѿ†Q}ªkεÑ0qîvâÜ*ç•î¶“¾Š»t{¨òuô¨°>´¨ù m7þ ý·’$ÉÏ!]ZlC¡»Šw+†•ˆuy¡X®ÞA=ú|Òþ77l¤„LÆAƇawûXß?E»_‘ü›£_)ªõ[Ñ¿¢ðf¶rÒX5Úè©9[þqHä8ý "r“Ûì<œ±MlÎÙ«ïÉZëwȃXÏÕ~ÙK¸."2ró³Ø¿¦ý?C~:²7^g;ÊÙè÷Al^Q®1޲—²ç¾ m`Íì_ÆÖtbd+Ÿ å™í<…¸žºpDŽž¥½'¯F2ÖpJÎrÄöØœÅ|,µù¤Œíù‘ú±MmÈÙ…PÅokÄöBˆ{À.¼p5MõC™h2SNéNð7E¶ì±îÔYSYF¼„gARŸ²ÛfmîtÞŒ8vU]Æsë6‹>Fþ™Úçù 6â×a²9Û÷±ŸlË´0Ø{zdKêŽ]¿Í²GS·ÓŒvÔ¬«ü óù¬-ÕÅØÎìkŒó¨c3¶l¶ãâƒ%^…Œ å“a£½ÿ¶œM›MþD¼ý(ûÈ¿2öþK"»:ÿ@§P¿å\ê„ÞµÉú•âk»#ø`ûùg þ¯1ûÆ¿#›Ú¦ýsÞ®Y[õ+l¼%Ø¡l§¾…ôJa­cPÉvóþ½·¢_@§¢ë Iù_N& Õ¸ö ú¦“qRkI“¯ßÏî`Ò²i8×»~¸bWißGˆºôzã‰k(;™ÁøáYìšââ8Ž@·à8ò;*‰Xrqz]—”“@²ŸXÜûd§ýpR÷Y”KóySÊM!#\õ$ïÒ“z¡NÖ¯4–ix¥¥­&qdZF§©/ÒýQí‡3Ñж¢2Ôy aqÓƒn"påõÈ£úi?–lWÔ“ 5{\o/A%"c{"Éz› ¼¾C/­!¿§ÙI_ºc#­žöIÍPïŽ$Ïíy>«•Ó|¨¦z²ž~Kš´¬ŽA7E%£ÐðE¼Ú±è_Q—4D@C ¾Ø±.tÓjâ3Xîâͦ2¿á´QëšëÁ>œÚ¢Ýñ'hïµB»M«hçç!’1¹ð~Bó•!OuÙž½_îHoži+b®[Ñzv^ï°Ó´‚ø£´³´#­ùµr¶!Žêšëqð¿Ú>Y-xŒÑ¦Á.èégYÑ’/ؾ$”WÈö«„3;§5-*Å™7 &0‹B¹Â¾Ó|ÛϯWŽ­¹9kú\(ƒ?_-u¦`§y~(C¹~ÚÁªù6ÂG'ï·ÉúøÉÝñ[!®µÙU–Gùý%`}žÖGOÖ]S?V›AiûôØ]œH»”í«µMûâd]lä…í5®¹®‚µŒA¡¥>ÿ¿>-êÁBÕ”ô´ßGxXi¬‘oO¡O£zö9”cÍA_@ç¡/¡¯ ¯¢ QÆÎØÇm º]†.G[Q­wÉC=ãÁJ—5žõÆÕ1ð}``ïwò;Òï(wÀp5Gæû9߯yØ>Ödg¢^ßý×ÛÌ·0†òu˜î·úSD¨ëE ª‰d"vþü¤… „šñ«É M¨îµ;ñUl»ôMfûª7åç¢Â=è£Äƒˆ| é"_5&Õèè`€ðT6îK¤¥Eµ"Ahkb¢ÀV‰ôJ(—¬_>ü´h[K¨T’§ÉTnHÚ³˜¦ôO%Ò«‰ÖÃ÷d;ú íŠ «[Q=(˜ëÁö‰!%:ÀÔEFXëm̰݉¥_xj,±a; ½¢<Í,Þ³3vêUšÍë6ÚŠÓÚ¬E„³»âõ°½¡f*ó#nø,³5 'ÛìäCƶ>±Íž½—Ò,/C¼Ç(7A…¨ÿÛ·flÄIaFsÑFUA£-ÿ+ëmÿ›ìQá`lê ¾KÁvžØ»!c™o×{FwUÎ ‘B‘=¨§á'ð ƒ·r¼5aÛ1Ž&ÕÙ‘üèrΔgƒól¥a©ÈÊÑSŸSg?Æ…“o¼W1_OR/ef:³ÙêaÈ—ØÞ±ÍÚŽ"üQ±L>(Ú9;?ÄΨNÜÒ•ìCËØúÇemáÍØVùü?E$øôK±¬Rö;d}„LÜÃ]ŒÌÀƹÖz¥ÙÕªRµ4ÚΧ°$ÎËìÿß’]üÊŸ¤ÀDµ‡iý«Ø½•‡OGÄo7—³'u™Vu#¬e ºÓNËêi.o¼ä¿"®ø«è…è@]„ì0q^@@Ç?’š–¦ü´ôjÓC} ' •D7\#Ø-• yž#à8Ž€#0H˜ßw¡ úÂ."D:i‚W—ú" k/Ý»¦i}[ªÞ—PyÑxKu/|`>ÅìzÂÒëQ]gºÔŘúKQeUðŸÐ-Ð]PÝó>‰ÎDƒ(o~ØèFø e'£ÖP§\¾ö… •Þ´ •„õèC‰Énm>›( §YQ>I®öõÿ ÷£õö]¶)ê÷ ×F¿~ ÕoòHTûÅ‘p ©k‡ ç°Û²EÎvdYŠe`÷<“'_„À½.ZŠžlGŽèg,~Œõ¯õ„¬*)Ì ž¦×IäÿZÔÿõ_¨ªr… öoš»-¶_ãêÌžöU45¬‹Ä6~4wµŒÏX4‡åØŸl>ûbeá!È&œ_·ÎZ<ºÑ ´«ßw’–õf6¶k´h9oÃ<˜¶|²|2ÛºxVM`¡ÍÙG €×cž·"Y¦'ñÂïb!û^ÛD2¼Â·.è_ívËùÒÓ1(go8¥s éÿËAÒg]„Hu|ñd˜–^mZ9»^¿+Öi˜TƒßÖŒ›ö·ýÐRѶ¯ Éñ¬Æf²|»_\èFË%àìΦ.hÓD³oη䌔´ruMçpóIÓíñ¦0-½Ú4¯?0ñ›Å¾»®;’°ðÿÎémG 7Ð$>*•d™g L¾ëÛk~ÛÑî7Ñ£PùZIt©I9ºŽÑlR…=Õ![¿¯Ç1¨VÂ5ŠÆ¹ ý:*’ïATßJT÷Ú­¨&ìilu-ëÒ}„ñÏÑQ‘¶'¡ir,‰—3DòþU]ýÖDjß‹¾å§š*Ç“ªû—9è9¨Ú’| =;3Û—ðŽb¼4ø?>TLÜ’pv1®I//ã:~ZŒ—·’0¥˜˜¬_>ü»_DµÊ^9ÑÌõmÑÑC…^'® žÿF÷L¤'£ú,B[Ð_ ŸGkõýPl|Ý= •¥¢6ž@·AÅÑn‰†LO¼#Ž€#à ¸ŠÐ‰f'´ ÕE…¤V›Ö«õ9È—Aˆ·3nŸ…~-w-p-y_FEˆ&Uå“ÛŠW›Ö²i6‡Z}½¥$‚=)º±x ]‚–âÜ›ýÏ$ðø°Bà~lºAsqG .p!Òfycš]ªk>'ÕKýÁÏ-Iv<*R/M®äyLZ†§ µ”–=ՃŇÐ-PÍ ÕÌÙÖ„†‡~(=”;©÷.T÷¡ºßx-•£I¸²˜¨{^®’óÑ“ó1³ /)Æ“Þð~ÕŠ Þ ÇÍ(×ñEáè~¨üHÊd64±…Ÿu^t ˜]ˆæ—ZJ\ǯPùö&š .O$$ë+¹Ö>ÔJ®ëت‡G’ƒÑ¿çcÿ‰¼W;’Ñ[ò±Ú|/6þQ´óB=¸,aþªkΫÑ#QGÀpGÀpÜ)lþÍ¡CymOïÕïºuqG npÑ’r1“´cÐLݪ“!|Ú ½Õ·ŠJÏWÕ©7Ó÷ˆÌÓþ¦'cÐ/  qþM„EÐnˆŽE5›WeUÇ¥ç|’ªÂXz;º5š”)lð}>¿ôúC“N^.æ­"üªq‘4£š¡­YíÁ¾òKåK$„üˆk|ƒˆH^€†|…ѤüŽÿGâo)fN$Ô¤#ù¥·B™‰Ä“RkDzËv6i4%®™á*§>&e4/¢Ê{ýÚ€J´oŸ€.G•¯ñÑ>¤ßeg*»šuÿ)4i[E~‰*_z4:¤Dàº8Ž€#à8ŽÀG€«˜ÓÅ+Ðä…Îïµw¯ŸÐE³f …Pñ Õ¦yý¾Ão97õÓ¾âÍ:ŽÀD€}r溴³Ð~Ÿ©¾&¨ñ{D³Ð“2…ߣ›E2ÏD5n"Žƒ\Bä“héXi¬EP•(_õ×C×GåÏèÛQÉ–èlEв3¡f½¯£"‡%óPÍ®¿ZHi}¥MA{ÚùþETû¢úRND®kø¨:$e z0 ã™DoÅê8<MöCoÏÎG“2…žú¾+uïBÃ8‰ÜŸ…êÉD´•üýª>‰†LO¼#Ž€#à8Ž€#P®.ßFÓÑÃÐj¯tQˆÑîžÝ)[ÚFh/-½Ú´ÁоÆ@7 ¡¿¥aµ}M+×/ý§Cj×ÅpG`#ÀIIäºH³AAª—þkY‰ÿF5 öŸœÛ/-ãÛ]cIEPŽ@?‹ŠÔ{Ýá(R=ëÉë1’]j@@o |=ݼÄÎklߊê–÷4|>ªßÝØ’"•ÏF¯B+]s~œü ›¡Aæù<º zA1qKÂÙÅx&¹}7ª‡3’Vôôt :•¤ÕWzOûPr]íëAÂEèûQƒh?ÿ9zº8$–„=õ]fôpâ;èGÐ0cžhžHŠð\ôJ%¸8Ž€#à8Ž€#0¨ˆyÅý3Ziy˜ÿÔtçGÀpG _àú"B)Õ/>Ô£Qú°6z`=l¹>G@ÄžˆuÍ–Ý }e8󤢶EºŠ€Q:Õþ¡.õC@˜N@÷AE·@»#Õ*¢[cÖÝ1Ò øƒQÙ ¢å]´/H'¢åd{U³¯{"õèCOÚ u4Û£ÿ…î‚ê÷P­ÔâûÚ4¢ö4îï@“?›.Ž€#à8Ž€#à ¸¢Üý=šEK×½fˆtÓ»á8Ž€#à8Ž€#0|)(RQ¤¹–¨øÊ¥®=ŽjÖòDtcTKˆô /2^õ\†>Õ’ëC ïaÝÐÄÅpGÀp†!ÜA<‰jMÄÐËP½*į:Ž€#à8Ž@ÕÀb6£ÓÐÉUW€ñ_3×ÃÚÌÐCw)äAE°‚‰j}çoCÅuÍ+mCæv%êâ8Ž€#à8Ž€#à8Ž@àÎb+ô7è*tZLx•n Æ"tèâ8Ž€#à 8·µ á¸AG²ãûô4ôuTët» ©®™èZÆC“GÂr0¿&¾5: ³Öµì‡Öc÷Yë€0ŒÄg®£Áö®:Ž€#à8Ž€#Ð/p#9=¦_F‚ñ{ÐGÑÃQ'Ù‡ÑØ{WGÀÊpNK’냆dÇo=ôþ ú*ü>ÊC6Tú¦k©°Œ>Êx?ÊPÚC¨ÖÞ ÕºÝZk]ʯò~ ÃHœ\Fƒí]uGÀpGÀÂp··_âæýqâC}9ž!<æÞ5GÀp†œËÒÈõ@V¸™ìø;ý<ú"ü áO‡Ã˜ >b]3ѵÎúŸQ†3?sý]„"Ö' ¡"Þ}­u@¦ò1ú­/R}ðÔŨBW3„nÀpGÀpî#Àß¾Ôº­¤æÓlŸƒ^ÅEšÖuqG npÜ™‚1ÍÖtqz}Hòokhàfò¿É¹îÁ5”ëµl~Z>ä8ôttB™†~Ÿ/“W6ÛâZ4+ZªvB¼'á`¯Fo®]/¬“x_Èö§ÑUè'Ñ騮©´½mEW£J k®uqG gèäâ8Ž€#à8Ž€#ÐÇpã½MÞQ¦ÙçHÿ.z9kúà–‹#à85#Àqg>F6¬Ùpê‡Àu˜šÊ¹®ÏHv~zKìãj„V’Ed.D»KŠ;×Òj0ô€ 7D8K5¦jã<ô ¨Hóÿ‡Þ„2äíĺÈu‘ì¥3%ÉÅpž!àüžáæµGÀpG J¸£ 7=ºñIƵ4-½Ú´rvzý ôÿÄ5À8‡|‘ì—ÒÝ º8Ž€#Ðc8;¹Þcô¼b/"p'¶?ÎyîÅ^l#ošßÀù>ºco·åö;`lù«»È¦T×Zæåwèá(ÃlßD¯.ÆE¤‹TÄz˜µ®rRGÀpjB 7p59ä•Zˆm*'×óvà<ËIsÔ‹‘Í_V«M¯ï8p.bu!›Ô´ôjÓd§Ú²iå¼~}ñÓëÜÍ芒1.‡óšÒ1ãR#s©/2àb~º9tqG Ûp¿›Jëu»¢Wpº‡€®Õ¶­¢Ê]”™JáVQ¶.Eø ŒÇÐ×ÐÏ¡cêb´v#Zž¤I\M¹reú­>c|Mí0µ[Ðþ%Ñõ§t3ô toT¾Ž^JÔg¥r=뾌Ðqqº Ju1ÖS#«­éüÈ¢Ç/a+w vb·VΖ?¦mò/ÈØŠa÷¥î¬5Ÿ@÷ÏkØ+²å/+Þ‰m ¯GÝ»id­sºSo°•môøœe/ÆïwqѤ”ˆ©kËØc"›'‚ÈŰÿ¾Gõc9ÂRÇîp1™ ÓÒ«M«¶-Ùsq¾GàšüTk±ë†ÐÅpGÀp-«YÄË+8×ç¤z©/ø¨‡LÿžŒŽ.ÍOlÿ“øPÖu'§ýœž@ºº¨îE‚j©Ý7ý‡.E?ƒêC•Y)±®1 ×Qì.Ž€#àÔŽ€Ö¤êw8_b}áØÎδ5(]iõòdiçü¡¿&kµY[PÐÉ£[[ó>Y›~Qƒ5\BÅw«ò *ÛäY›ñ\ÖÓê„D³œXOÀáÑÁ‚Àf8ºÿ`qÖýtú0ËHa©r©Ðã´rv«µÙÓúºÔëé•d6™g¢Wp'©›DGÀpG`°"Ðï¤zŽsêkÄOçD¯5º¿ˆŠdO{«c>eo&Ï¥`ò&mΖ>ÿñB²iR¦–¼PÜÖ5“f©‹\—†#º¶“„°°åÿGÀ¨A®×à¿W­€3¹7ÊZöŽ E†LÄú»8?‰õènJü$c’6bÈtÒ;2œQ7d(£É>TKĦ•ë)9[kûzp}z Zz¼¼…4Ý´$Û(çg¹ô´¾¦¥U¬?TIe€Ø|Ë‘ësŠø_BÿuC8à…þè†7©ºNn+^mZwʦÙôúÕc=upqG ·0¤zi9þ-!íÎaž„~Ý Òí n¡¢‡5# ó»DaÐu‰ ý ª7t]ùKôübœ }Æz ÖE²ëZ*\oªŽ‹#à8uC`€“ë‹–4Ú:šÕ…¬Ë²³ó1ÿW-¬ˆ2L„3íá Ùh '³|Nxl˜ àÝbÜN>† @…IÕîžÜñ´ôjÓd£Ú²i媮ÏïUe]úP7§¡ŸE›Ê¸¢]w£µ’£:‰¸vtsâ!LKS^>C¹ö´ëWQ¶¿ê§ÍÓkô3ѹèûÑ‚þk\\/"*\GÀè ,©^ÚY.–‘vçÜŸ~ =ÕìèasOM_ûSt-–”°­PªÐ~ý–ñù7ñ³Ð'Ðp-"=9c]»f±‡{†ØÅpú"0 ÉufëÀ·¨Ðe=PvqÒ`_Ù%„Š™‘ G`Ð"ÀÕãS8/uqêŠGÉ 0ø T7'Zµ’|ŒL©Kß"0Šæv-jß¶ì­ W!1\ûïývú# rs®iÿYÓ½kŸ[iág\3ýšðXtûÞmqØ[q.Q˜Œ¯Í¶®‡Fõ–_rD¦_ˆÞ„êá‡Îc"D¢‡Ùê E´+Mª|©‹#à8uG WÈõØZ6ÍZ¼][´,cÑL³Æg"[ªYpUKlS9Hž»y¡BËâÈ¥2ì±MjÊÚ¼}(¼í½™±x:z±­ÅÌ÷Uc9殌lÙ+¡ñζ7{%²gõõhÊ·lÁ‘÷Äš3–yÈl'"»MåŠÛÔoÜ6g9Nñh>>ú(ßÔx¼Úõ¾ñs›œ­Þ-²¶q –aÖõÛ©¦ÝrN±Öúò6 ùm¯[L㌕þaSò·ÌYÃŽ‘å¶Œ-3lE‰ê&Ó6+ø°õË‘ÍXÛ˜Úlõ¾ØŸ—±-oVZð1„³¬­z+ûÏ”›‹`‘î‡>bʹ²™ý-1û/Þ„¾gb®x¡ø&˜gŒ»?V±Åþê1ìÇ+"{óÕØ6•³E1ÖëflÄ]ìÛì㥻íÔ{Ÿ”7ø½=y}+W)q%ñ"ûåL~uö´ëVw}ïjÁSG` !À1@DùÅh˜í3Ð\t!À®ÚþfN2®gaÖYˆ‡0­\wÊ÷úoxGÀpê…÷ºþg½ìõ‡ú ûT]7¹ôI"} Mhy²uP½M%"}š=°ùú;To©‹T|–ÎùÚçÂŒu…R‘êRç¥.Ž€#àô á€VãYk9’cÖ…Ì †ðì*œWCX ro~27kÍ—Sçò_o´Öv’4¶uÖÉÚŠâÌõèÌÖ:5YOñœ5}B‘ÄíDr±Ì£Æ‘ôTòxí=º‡ú{‡ú"K!pj›eDHZsÖögÊnÊ(Ä'ˆÔø˜¶òædz2Žÿ'Òïs´^+™¸Y|û~£ítfdêàÞEDxç,¾ˆŒC¨ß>D¸Ñi8žp >hz*âçæÌóºIIÈZm§¿ÂÖh{H÷±šœµ¶ éÃ;SL=E»'Ðî½)y“ YÚòþ6Zfðý,X~*TÛ9Ûi›€ÊƒÅï(£µKe6ØG–?œÌû›)@2-o´["›ÝÒz:VÔû|g<®c-÷oóåŸlç÷UÒbô¤Œ­üU-íÔsŸ˽yàp®í|ê£{øm|1½§#­#ÖSŒ:,xÌp*œÅ·ÓÑwô‘4ÙN”V"BÓÊ rT7†ê§nà>É0 —jÓ~œK峋#à8ŽÀ G€•–ƒ;˜ãú´AÞ1²ôCÄ­K}Ö<ÿ¡YçZ‚çœóâ´ôË-èíè T×Nª+Ñ5‘ÈóRb]ÛJ×B*çâ8ŽÀÀGBîªÕÖK!v­¶æÛ¯!¼pyG^óœØ&ëdÛ.Ô½¼P¯¹ÓÌv‘ë¡v¦¶W(FÈûAȧÕÄÄÖ-Ä+øêÝ[(Ó|w²¾ˆÌP7gÍߢΒb…„³½2äÏemÔaÉúŠÇ¶ÓHòèc{¿ß ½;h÷ÆBÛ…tÒîgƶ^Åï$ø°åæuÔo~EuÙ~Zij—º÷…|ÓÍ:¨°gÐB]⯡ÏKc›Òª²}|¡Ð‡æYl_/ÛŠ~dÁ蛡Nµ¡ÈòŽö[~â!Äþ_ƒ-Ò’!p&ù×>J˜U:áJ¦ð ¤C¨s¹ú„¾êŸSL£¯“ò3Øk+ìý¦àCóÍ„O…¶BÈ ú]åU-íÔcŸ”øz,X­ ¾±ýÛ×jß¿ÑåŒÏÛU>H-¾:ŽÀà@€;ŒÑûи‚Þ@Þ¦èÆèxtt=tºº:…¶ Mè4ƒ†›žÁˆ{é8Ž€#à8uC€ë]èãTßt‚ß›¡¿@¿;èœøë:Q¤ºx ݯ¿ÕIÏBÿ÷²º9:ÝÝ Ýº¨ŠODÅh’¥&½i¢£–։ʮìûõ( ¸8ŽÀ AÂî€Ò®ù·±ïôÊ93£7†Ø»)Qæ˜d×Èë6¹žl“øc±5M 6E“vAh¯–'וs!ÐÛOüZöb{j‡ÎõÕVÎZ¾ò©™Šù§tÃÍ'ó_h»)‡-=­mf´ï‹M‚¾‰‹“\ª–$¹ý“K+ÒÆDüã@¾ÿ/ãÏ~É2ŒÛnøð\ÑÇ6ì¥ÍlOVéO¶O;< hž_À¬yÚ:}¯*Ä6n-ò^ ~0‡$ áçVä=Zô£•±ÖIµ“$Ç"íAF2Ÿ¶º=VÔ)’ëzà‘'úÿŠŸ ýx¶œ©¥$¹^h£ûû¤°ëüÃ,|{;ßôP‹·K>L¾Då÷ùÂò/…µøÚðÐpÜ0¾½ M#Ù¯\½qoGÀpG` ÀuE ×ÃõÅ !Ùñ] .@¹ïÌ_‰ôu©/"½3¨&]Š_ÕdÄMPqÑ-Ñ$¡.@ÛP‘ê£ë£â`X¾ÕšQÙ“]'ÖÁÅpu×uu³¢“Ý€hÝLeŠå~̃ì¹Þ<½`«ii™*ûؽ4´ ‘[væz¡Ló{’>…86Ú 0;¹}é™ÂƒvbZK“èÑEa)rY˯„"²;|kº ¤'C0{W¢LÝÉuúö/Ù/ø6f§dÛ!ŽÏ›¿¬èÇ#I26”)&ÉõB;£ôDº‹w^‡Íût)@BlëÅßùÅr--pV~éþPëX©-ÚΓë²ÏØÝ“†C­í”’ë´Ó­}²èçe…Có¾¥8Ê´\ÊæÉ÷Z}OkÇÓG`ð ÀÍã>è-h¸ Vxíàé{ê8Ž€#à8®!JÉõp}1`Iv|Ö›yç¢ËÐà¯ÂŸ \‡\×,sMÌÔ:ëâZ±.=éŠOD·@7EU.ê|[ÏZÐÒÙê©Ü å\GÀèÚ—©Å:늟ÇÑ‹›ð> z[6Í–Ö ‡¤}ƒ““^×ÑA°Ç¢å+röìnØ‚t~Ê&¤ã‘å9³£)·†~F÷²û¿ÒlP÷ÒÃìß ‰ç?ŠÊ:è'’—ï‰<õÃåNi°ñ?‰íå©d6³žø')ð  5X´Õ{J«©ÏÚØ]Ìî‚Ô½ â~J×ÜÚRŠëÙïW°] †3Ò,²ÆùK¼\Pħ‘ÿV–߃°Ûë¯SçñF[~ci"©sö·/Á»­ÞYZFÛ‘-\Š¿ ze?¾¡>,šV¶4­Ö±*µÇXŸÙÕìZ¥¾ítŸ,`9í¿ä>Þ –·wö°°ÅwÎd_þ7“çÎ7[ÉbtµíÏiíxš#à 8èØ{Ç×½OGõ0´uéEÀ»ì}ñ^ÄØM;Ž€#à (4ÙìoœÿtOÌwÉúMv|Ѭ铋*®¢TÖÀ%”8Ûô ˆó×sP#yNDaOU8ô´n„#&Xb+)¸š¿ ×D!L¦ëþ[*¾)ÄUNq•K*›.Ž€#àôu9Q@L߆ËÒ.RXóú¥!’§ÄÖ¦'ŠH\c»³væÈlÝQ°Ùõ?äâfæ>GÎv]s;R8Ð?Û±Õ9FÞl¥ Û̹·UùËx{éñØÞ¦Mš¬ŽmÚãÔØÍ×Q!sˆê¼çõàAñ4$½±7ÈuÕí;Ú‹ºÞy: G7ðqL‘뜹baÙmrœžIÚìˆOÛ|›µM_§§ÍesvýƒqþÜ©”œ°¬Š\Ç~McÚ!Cf†x2¬g;=Ù'Ín؉}eœ|¢þíIß’ñâC‰ã’iõô=i×㎀#0¸àØ1õmÎYö®Áåý ô–k#ûžŸUÄ~PvÂvÁƒÇ‘šëÝÓAЧµŠÒï$;¿͘þ¨îsó“æÊx¼+e¿J^-䲸‚þ¨?P&Jˆ/%×Z¤@ŽËÏÕ¨ÈòàsÈWZ Ñ“¡â¡ŒBI [þßp>B F’»³—Z;;g˃à{ gS–‰¶ËÙÜ áÊÏ T¹•³¶ÝBÑF9[3oË „í,ü©H®ãßœrõéäy8FÇá@¯”’ò?Í^ZZ羦•HKë«d.¶–G6?uŸ«g;=Û'Öæí¢» ŒYõROß«oÕK:Ž€#0ìm±¿”3âí„ÿÃqù_JtqGÀp†0º¼Õy¯×‰õ"Ž!üZ ±^¬2,]“h‰•Jš]C~¥ºI5î y;y®mµ¯´ J“(,Õ|F1=Ä=tG ß¨ ¹ÎZØg2ëø;êGÃÅügíìèAÒk´ÆÇÂÚØ¬¹~T=zJ³Ã‘{"YËN§œòë.Ø}£ú ÆèãÕ7fÙG‹8Gl„+ÕG>¬’èm¥ÂÝÈÃ"<‚D›{>lu 穟y¡^Ň¡\õa8ê¬}':ŽõÀÿ^]Ý1oVûLŸk«ê<ê«vÊyÃt¾k¤­}{H©ö·ï•|óäZÎ/êÎ#o#êoQ®ŒÒÉײ:u—ŒE`X°Ì+ià®r€µòó‡Xùfý$c3³íäºmÙ²*í§NOu k«T£)‰}ÕNJÓŤÆgÍVåãŒìæåË骰ù“äÇü^ÿÃGkïïß+yëyŽ€#0œàxÆ!*ÿš0/õ´‡Õ¦©NµeÓÊõvým*ŒíÞäÝDÿµ<ÏTœ»¾BYÏrG *8–tûÛIUöBŽ@Î]-‰Íd”¬ö™ê}Jª'àw 7׊3¿"<Õ1[¡ir'å?‘–ái5# ý!H2Ò–KO–ñ¸#à8ýŠ@ÍäzβïæhÇù&Ç{Q±^èáu»‡rlרnË#‚o`o-fu{WÚèü?k£å˜š•]w¡ÃOé(6emúþDoJk$¶É#²6㟔g9»;c­gË©<˜Äç£&ÓŸÓë·Év%’‹Aòc6XfÇgñ¤_Ù‘×9FÅCë·wέuk·Y‘M_…ý‘Lßc¼âs˜ÁšëdBøx2>‹?s˜áN¹eÿéT Ìåk«2–;'÷U;[íØŠléB0Z†ë’zzFGnGLæ[º˜láÁÊ/ȹÞ'uxá±áŠû] HÙíÚã•Òz›Ü m—k§\úP÷$ã3]ŠVÛ×´rµàWÓƒxü*²;¹ŽßÎC„º†¸ ÙtqGÀp :o…å_úT/E‹ó©f&ýç.!< = ÝMŠ_$Ñè¸_×ô®nÕpúIî¼—ú H^ G'„x2Œm­qY[ù›Ž´hDG¼û±È-a÷ó!§r¹oÖZ>Öh+þ˜´¤õY[un2­žqÖÿ-Äý)œÆ`÷'–»DöìÊÒ6Úì‰/âã>:[@ßòYJ檜­Vý‘| õlúrH)©[Ë^Yk;$Ôé~8bExË%zÆ%ë³TψØ+i÷øðØš÷‰¬õÎdÅÁq;ÞL8±˜þ ts_7ÑŒÿÕÖtO¦µ=sÖr<ñKJˆmurÖz&e˜émg¶6>-+-–º]ëX¥MIì«vRšnOb,…å·ÁéàzÐ[Ùe96›ûiÊåg“°Fû5ª<|oï„GÄš½ŽÍM€æÚ¿*":­\-ä¦êÖ³¾üsqž!0jœÿ¬ ÕŒ;GÀpG` #ÀeíÀ#ÕKAã•—µírœÕ„³ÃÑo¡» '× 8øGÀpÞB ¶¦I¬¥Þ‘.!ÛT‘1DS˜•½k²ß¯üm¾7é$ïå…úÍÖ󡚨35Y'¶qkQïåB½¦6öŸ? ¶Ñ»’þiô…Žºj»Yk—¶‹È÷Q™.Øýx(GßÞž,|JÈ#|ˆ¶ßòÁekì~ LDƒMó+j3ä+$íøPŸrÑC¥CxG̺?„ü×B¾BÚ¯¸Ô‡ê&¥0k¾Ð>õŸB‚DßWKô¨c³1í¾!Û„oÒÞ1±MÉ?pÑØáÃûI[XÈo^Û˜“ö×ÇßMUW V_/W¾d,W 7Í®VùØ&6 ÆïÞ[ͺØé$ØÿFÈÇÏ :e²Q‡±úìƒSEF¿–vê±OÆ6~4cöbÑ×7ôà©ã÷¨ýªùú°¼€Uóía_^µø^Š·o׆ö'¡üæ]ßê¸ä°µ]‰¶¢ËÑ7Q½ Çõ‹ñ潆r¾³ùèËèKè<ôt6ú<ú,ú ú4ú$:ýúúÊõ€=€Þ‡þŽÞÞ‰rܵ[Ñ¡ÿ@ïE×ô[—_œóók;¸xmGÀpG àœÕŒþ Ý©š«{ø­W©™€–?—k}vGÀpG ,5Ï\lå³u?¡…ÿæä³63­ï‰ìÜùxçì{Z &¿Î:³²/ãþq4Û‡ódx¿‘=¸º¬gkȈìun†›÷ä󵨄ÔnûU¾Í?tn¯üCÚýdõ$Údw}¥Ávüql3vÀþñX~m?B¿¹)ãë¨âBÛ‹YÆä –íèôð ÑZ/…4Þžrß ä‡s¶ò0°|’s<6ÆQoud ¿`vñIyCÝü'| âwSU³ÝnÒ:ëv“â3™…þ2Äõ±‘µýŽöXJ$¾Fdf©¦‘žÕ¦¥’£´Ñ^߉RÐpqGÀpGÀpGÀpz Ø&XmÍ·1ƒ=®¤¬¹~3Ê\§·üp»Ž€#à8ŽÀ`D&;ƒƒ>…Æ)zÍ`ì—ûì8Ž€#à8Ž€#à8Ž€#à8U Û”FÈóc ÙïÏZÓ²@²_)â¼ãb›ª×­]GÀpG Hõôcèã%ûµ)Å=ÉpGÀpGÀpGÀp†"|ÀtƒØÆ®¯žÅþyŸGÀpÞBb=BG)’ìÓz«-·ë8Ž€#à8Ž€#à8Ž€#à8Ž€#à8Ž€#à )Š$û ÏR€ã}Ћѭ {î’#à8Ž€#à8Ž€#à8Ž€#à8Ž€#à8Ž€#0ð€TßÕz÷«ÑKÑmž—î‘#à8Ž€#à8Ž€#à8Ž€#à8Ž€#à8Ž€#0€€LßM~L6ËöïÑ›îŠ#à8Ž€#à8Ž€#à8Ž€#à8Ž€#à8Ž€#0p€Dײ0Ir=Äs¤ÿ }ËÀñÖ=qGÀpGÀpGÀ(EÀ?üYŠˆo;Ž€#à8ŽÀ@rºŽèZGaR«Mëíú;ã×ÑrBìoè™8üp¹Bžî8Ž€#à8Ž@#ÛT®›Îãí»hµÙ¨#›¿¬¿}òöGÀè œ\ï ”½ GÀpš(¥ (ähð§ [.} ûßÈ€­‹.A«õ5­\õ?Só7ð \‡KÿÈ÷<×Ü#GÀŒd­å"^ž9T¾g¬ñ푽ùêšúÛøÑ9[2£Xî¶Fk=>Ô‰mÜZ9[þ˜¶#‹.ÈØŠ B^­ájkÖCÆã°“£Í­kµ7믶¦óÁýñŋGØÊ]C«—ئpÞ¿wÓÈZç„zvF F9kþר'ª4ûæÄε†ÇVl£Çç,{1½}X¬£^ó{mËØc"›·bx à½tጀnž]GÀp\”¾w>€Š˜ì/r2´=Ú—.ŽÀpGàxžãÃãܰúêpß¼ÿŽ@]ˆ7€ˆP0V•´E¡Ç¢ ;Wiky`ëœßó-Hãq±µM Í\Ï­ íš`´¾ð'Û¹§•Ç%¶æ}²6ý¢k¸„z?î\×·„@%ŒÚ,G‘âïhøáÛäY›ñz¾wçÞG³œXo9ŽÀÐEÀÉõ¡;¶Þ3GÀ¼ì†ëß¼î»çŽÀC %Þ¨Ó¶òÒÒÊ¥‡²#©·ZIV‘ù[ôH¥+ôz&ÔQ}{³8»¿£~zÙ–M³oGÿ¶§e‹xÖøLdK_K+_.­Ü¸°Žøêlê±vøºÅ4NÒ­sB¼º±\— «˜¹ür°Y)Lë‡1ÛÞ îñ¤ùyÞ„¸+²ùË*Ù yø»%c¶cd¹-cËÌf¿z4²eÉÞØŽà!í´Í õ·~9²«b³C›­Þ—úó2¶åÍfÏmL~YŒT7¶µ×5[¹–â•>óqOÆ~ǜźþÊd¬á1^œQiŸM`ÔÊïa¾Úˆmb³ÙüÉmÖ¶K£ñ1âÊ«Uºƒ¡ÆŠ1of]¯£Ýxl°HV¼P|°SØôÿŽ€#à atsëâ8Ž€#à8CˆòƒèâÑ· ñ®z÷ž ÀO¤ým!½= MK+—žV6-m Ö•‚ï÷4¯3¸ÈZóÿ2ãT\YÎ!³I5¤¨¬½‘'ŽÙonl´•‡b[g¬­(Î\Îa­SC^sÖôyˆâÓi·°,æ=ÚhÑa|­ôTò> MyõÛ?˜µ–ŸòAÓ/Òf.c{AèM?—øÉüÈÚ±ÍrZÑ5Ûú¥¡Íµl–³¶_Rçlc² DÞ¤©OBˆ>Éå¢Â,Ú2u¶âŠ[A2>§8ý¿Œ­ü©â¥’³–/CŠ^ ôdýd9úz$/ÈË®ayuÆ2_ dk(Áx^Nú½Þh­í„g¹qÉZ ‚¹«4Ú^|¤òÞ{ðcì-ÓÊaª‡%9›û ¶Ö¡ì/iû¤®»¦„1æ;mÌ¡9{óÏø`²$ö^CÏÍØŠ²oÒÅ6jrÖÚ.Ä×w&ëãO±TÉ ì÷–æ1Ö<¼h›§töÿ=÷ÏÒþ§B9ÚƒÍÍ*a¤‡+«­IãùeÕa<*‘ámöÊW±™‡@IDAT}¶F'³)œ#íǶñé‘ÍnMæ)0—[2vêÁ9û>ýlû4uF&Ë’ÿûŒý\d ØO»/=Áýífút@¹ÖèSKZŸÊ•÷tGÀp3>s}0žûî8Ž€#àTÀ}½Õ¬Âuª¯6(KrT×aZ¾F³;¹W¶änwçî”MôS}àîâ8}€$äø~]‡;~{"vƒ|í=ˆ¿•ãý„y‚º‚;¤ï­ä¿‹²Ø‰˜a¿=fw‹pŒÌÙ³#b›rd˜U^ÁV§,f o“³U·bgÓbưÿÛÛ`÷¢ÿ€?ïT©Î–WñA˶ £Å Åìëxᦄ;ãK ý="g¹w0‹~Rdò@¡§Í¢&ìm. …±ÈŸò™1)ãÅØÄëæìùCIÔ5DÉÙ‹À¯üu³ë/ëR` 1eÞüïŽ/QüVâ£ðˆäñzèÁeë4ÒžôãÁâ·ÔÉ?d¡þlê>?`cÛni~WΚ¿“±Öï–s…ÙäÇÑN;±^(?‚«+aTÎ^Hm“QY{Y×_;) [ËËGyøOÆ?Þd°¯QæPÐÞàPÙ¤PŽßûááÔÕÛ,ÝÆçüØÍC¯…!Ū—0|…¶fÑÒ:´Ëìýü>ô?Ic·ü(ÔñÿŽ€#à8Ž€#à8Ž€#à p¸ÓYý6º+ètò>„~}?ÊŸ½==Ý}:}7ºº7ºÊM¿nÈmwt7tWtTÄÀŽ(7€y"D7¾[£¼ÂmQ}K³Äx­Ø6BÇ£ Ü\¯«ç}K8…6£#QÝÁePî9]GÀpªARí!¼c)ñã²6êkÖ–#;ê4ÝlG3¤CÞjkžšÌ#ý€Ž¼¦Ç´ìJȇo$ï‚D>>5ßòjo2ŸY×ׯ6vÛP†YÈ[Pçß¡LaöwÈ­.¤þmªíÕ̰ï4ûš™½{€ÑËÁ¾BÈЉÁ²f®‡<ê~)¤—†š¹Ê%ë«éíÑÖocßi–3>lLúM¡>ñc’öÙ¾\y„–©4.š½ìáÛÉI{Zî,Z 6›þ’ÌKÆ)3­hãÉdúšâ]ÇT&—áÅÆ®Ï˜ÜüÓ¾™´)ühû‚›æý:çÚ ,ž+úßF_;ÍlOö;9Ê΃o`gôô½²—,WŠ‘ò±ß¾ïj;)ôñÂÿ›'²=ä÷ûóù7…¼¦`Ä~16ñV˜ð{v°AXv&y°™ kÅP¶ ˜Ž#,«³AÒ¾ÇGÀpGÀpGÀ²@D‹ æõ{{M#ÙSg¨ Y@¼cŽ€#à 3 åÚÉõ9—'Û«Ù†ì¹Þ<]6©³´‡?—v´[‰\o¾«°îtçc è]B}HÉnÍ0‡@Ý;Ô%üIgË…-Êì™(Swrl®“}p˜+ⵌ›(÷ëd¶ëJ®Ë66ÿXð©©U$}²=Å5–ø½Ze YO-ͯ´Ý™8nþwZÙØÖ]û‹‹}Öw`ÚßþUô¥UÆäg†·g#<Ø„úËŠõ)¬³^ÈL’æ;£ÞWZ_ÛÉrÝ!×!®÷¥í¶‚íæ?¥ÙVù?.úÇØ·ž,W‚ÑíɼOî—`¢%ª–Z1TCN®W ·t!Œ@ûuC¸Þ5GÀpGÀ(A€)Þo¢ç’<ýZúá8¿FGÀpÚˆm§‘,i²›¬°$ÆOË}|‘Å¿Ï༔ÿ@h¥YŠâÇik9³9ËÌØâBݶÔõÊËÙeù“Ý•§öY£û‡iå´n7mßœ–W4°9ûŸa…“Ï—[ÒæáãÅö´¤H¯ Ë}\¢xϲ$­ùõù“ ¶Yîãä5âS W$óº¬ajZy}WûŒòhã-ᡊˆ~|Û¯P'º’}jFzýå/Q?<,y«Ùu{¤•#íñF[~c™¼%³¿Þþ‹ð›ïŒüv9#6òÊ,-ä—.M“¬—YÖf+>hš_VŽÂñ†É•â½€a¥æ<Ïp!@êñ!Ýcïœ#à8Ž@݈ãxÌk¯½¶vÝ º¡>G øîøï»ï¯£O?ý¨†ùó?o¹ÜFqKKËÂûî ëÎö¹_Þ #0Xo½õ^Š¢î­;úí}|ðqÍwó ˆkö<7:k¹Ö\.Yb––YH‰ïHæ$ã¬7=‡¼Ï‘¶]2½4ÎÇ<Ÿ.M Û´óqfXGݺ6¨}[ÁF4Wv°Wòà:Ú8°4½Û|Àõ6ìH»Ha¹”—vn³x k²,{ý^¾ÑN»%gçÎ-Ùv4Žý&éþ[ØŽþn/&óªC ¯ÎØ)7›Z¦J|—2hŸþ¾ú¢÷›­Ü¾£pT‘gß¾¢û4•gmuí[]>nŠÏtØ«OŒ%Ûƒ›ü~6²7ÊÚléBf³.{¬ehÊîûtþÙ4Ïô¡Yê¿LýMÉ/îi%KÓê‹a©ußvG`8!À1ÚÅpGÀè .ü{ê ¯žYôZý…ÀªÝw·U7vº?=ÀÚÚæõ—?Þ®#0DM?–‘¾x7†4 €K!è*KlŒé˜8]¹lÈ僒ùYëÚf–îlˆÑÕ%„œY–`„…«Ü¢2•g”½âÇ5ѹz¡ÍâÌz«xÞ‹-óBGÕÛïNÉØÆ­•³å‡áÓ[èÄN<(Ø.gs'Ðq&÷÷­D6•eMš/§Õoò`ï«´l‰ˆ1;fmõä‚GÑ¥…°'ÿ#fãOååti´/ÐN>“}iW"÷C’ïJÊì/Î é`˜ºo‘^v‡ u{æ}dŸž]EÝ¢1ßžÙ¬%²y+’u ûý¤¹f©ôEá/+–oHÖ«¯7†•ÚòûýŒU)é=Nª7†=vÄ+:Ž€#0pr} ¢wÁpGÀpGÀpˆ$Þì„_ R4‘ZŒB.VÌïZ£>)´û¼,±>÷&•,²$Îz•ò y •î±›ËÕg†ø™,³r&¾¬f‹!Ó¯‚ôý*TòÌÞßh­mŨ_˜Æ]ÎPÓ KšDwÉl›µ}B¡Èc|9?¿RÙ:ç'®É.ýÊ—ç7Ò>Ö»¦ú=É$ö¤k^Çp>GÀÉõ>‡ÜtGÀpGÀpG`¸ ÐòˆHCõõ3åzµQ‡’¿ÆY¾åê×’Ž«>ío[ó»ËÙ‚=(=/ÓÒ™}^vv;3šßÊ%ÜeYÏÜp#¿.ÈEå?ªzÝî¡E“6zïôÁå|ûiv26æj2óËÑ´Yö0>úb¹™øzOZjÓèOSÖZö+_>>\y´Ï‡O›ÿY(—™ÙQ>>¢#Þ5F½†TÈõÛC¼ú°:ŒºÚ‹ž.¤iYŸQù5ý»–Ñ>×<+ï(æõÀ¿4«Õ¤õ%†ÕøãeGÀ¼8¹>xÇÎ=wGÀpGÀpG`@#Ù¢%Ê県÷…HýX©Ãš¹[îÜÒô¾Ún°‘¿ÀÇüzëÌt>+¶©]î“!HõñÎÃÒ}:d$nþ#”„/|øµsɬ5y?¥sjûVûr1LŸÐžšˆÄ¶Ö¸¬µý¦#)ÑïilDû‡3y(:«^–#[¸”ÿVœr`PqÈêËÖA¦‚ Ðu>šÊ]ã°¿\§}I%˜ÉÞÑ•ŠC΂zÅK…ýŠ˜Æ'ÓŸ‰lùC¥eÖ¼]F¥v2–á!‰­ÖÃ>ÄznÚ>¥:¹üþfÅ·¢?•Úé­í¾Å°·závGÀt¹hn¹Ž€#à8Ž€#à8Ž€#à8CõcÈÐâ‡+Û®‚`ÿÙjk: ¶Ñ»B::g«¦Ÿ;÷W_YWüufO-´¿;gß»bwÃà¾Az“ˆÒ– #»Ž4ú£Ò ‰·ÈÙÒ‹éÛ[ ÛÍsÖòer~KåUÉz!ž±¶ûÉÃ|¾ÏÄÖ²W cjæsÖVýì¼M•£ðº k“IoÒ.¾KâÃéçAÕû—Ÿ)$ÿ³Í%Š‚Óž;Q¯ rýŠbvA¼sý«²C¬A¿?3úo¥Ÿ ´µ‚eL¾ò²tÎ)¤Cú«ñ…‡Sò³ù…oB¼Ÿýênê7²ï-dÝú«l÷¥zŒ’¶!¯Ÿ¤í •Æ>q@Îν‘qÍ/¥SH»>>ÿ¼c´ÍÇjÁR@¿W¼¯¤ï0ì«y;Ž€#àôN®÷îÞª#à8Ž€#à8Ž€#à8ÃÈ^rV¤ì£ެ³Ñ¦sÞœµìË¿F7gû‡ Ï ‘© ûRl/Í^ÿ¥ÚÄÇ÷A̾Ùüè’ ¶5³;º¯œOk<Ÿú‹ õãҷDzִˆ%Tf±ÖúÔe½ï†£ÓêG¶òYÚüI¡®­Í õ{ c_¢í@ô¿Î‡T¤ýݱØägnÛäšf¯Gö 3«£»‹>1ËÛnÂßÛ¶.¦%‚wÐþó¿Bbô/–„™›(У(Æ´^ý#Øý@ÎV-ó'é7.oa¿Ø€|ö…†£#k}>Ù³Ð_†b?V˜Sw4e/ÏÙô¥ÔÌ–ð&ÄßHc-ûèuf‘ïÙ_ú'i£šx÷0êl±ÑÆž‰ÿS*¾ȸΥosÐgxX²€´ü¬||¼8cËõ›èSé+ û´SÞ˜#à8ý€€“ëýº7é8ŽÀ°A -¶Ìs³¬aöÝU¸8©Do,µÌf˜½™_Î5µŒ':Ž€#à n Gç4Ú:{3ÛùÛŽ,ñ½ŒÎ#þ—È2‡°•§ÐÃâýiœ_þ£/{ÙmYfŸÄ â£äW‘DÞt}¶¹É¼߯*ç“È[ ¼²·Ò§ülpl¬C¼•´1ózoHÞ'ÊÕo´Oi°†oPþ •¡Ýñè{‰ŽE™Ù½ÿŽ¢ÿe[ùãröäÁŠ×"–ù(¶ï¢ÝÕÁNÎr;„xéƒÖm¹4l&ã‰änGãF[ooì_AMÍìßž¾åg°“v˜½«ÑV\“fµÑ–ÿ•ÙךE º¼µ¼Î.„cØÎ¡Ó¨¿_dËM«_mZµ•ÚÓr:¶òƒôã8tŽòéÛè$ÅI›Ë>õM>\ûâ¸Ý÷ÒWö}ϼEGÀpúÎ7.Ž€#à8Ž@ÏX°`Á×â8þa²væÉ§­é’Ë-óø k|âI³åËóÙñèÑ–ÛqËí´£­:âÖÝcr²Ú°Š·œ~¦¼þ&‹×^ËÞ¸Uoy÷Œ¸å_6êßjo0=ÊÞø>Œ¨î»h#î¹×F}ñäöú+ÿµ~S|HAZλÀF^UX2tÉCÓCrçp5sù.»ÂFÜy·ef¶º”ðõ“j0ªÔZlk¯k¶rçœ5Œá¡ûÔûž.,)T©Vßåõ†}×oÉp¾C º;é¾óÇ[rGÀÄ´œ¡5ÿàG¼à«7|;K´l™5Þÿ@^›.½ÜVû [þƒï2‹Ûªa& ¯/²†yó,~s>ïy´bE¾ídÃwÜiÙ÷î—L*ñçk:ÕoX¼¤sÙE…¾uNìØjxa®ùè'x£¡ÓÛÝífÏæM‡Ù6âú­é7¿³e¿ý¥e'ù‰öRƒ#Ò°`a'¬Ê{ýœ5ÞwþCn›IöæU—YÛ„-:V¯®ÒV§jùhUê¿] єވÐï-/¹âÒÂC´¯Þ-G` "YÎ[®dZî,Sf¬¯¸7ÍOÖ8ß9k«ÃŒå-á‘f·§i,™ñu¥Ý–È^ÒCµâr+ù•nª¶ÙìV «ÿE úæù\ñ³"Ê Äúñ…܆«j!Ö˵Pô¡ˆ[¹RééE’úir¥½"Õ`T©áÈ–hÙ ;;Ê\ݱ¾ÀptÓ]pG î8¹^wHÝ #à8æ+®²æs‹“ØGŒ°U‡ØV¿sOkÛx#Þ¤f~ÎÜyÖ8ýßÖô¿, ÁÕtù•7´çœ9<@½núÛõÕ‘ëÌ8yÝ =÷|ù sÄQ–™5;o#7ik[õ‰£,7q/ݯgÑk¯çóF²odžg9¡—^ÊÏÖ~C³·Ú²ç퀚+;†IÅÕ‚?<„ñÍŸo#î¸Ë,›µÌ3ÏÚ˜cN´¥7\kñ˜Ñ¡d§P³Ü³{¾£SZ¥xì˜JÙžç8Ž@¯" å.Xû­4r·ŽŽm§í"›Ñ驟fÌfmÚï‚# –¹9Ä=0Óü#Ì4Ï/ÃUݯ†Wî…#à8Ž€#Ðÿ8¹Þÿcà8Ž€#0øh]i-ßgÆ:¯µ–-½îËm¿m—~­úضò Ÿ³±‡fÑ’%Ö|ñ%¶êøc-·ÍÖ]ÊzBï#Ð6~¼5ˆØ½á&³óÎ]ãÒ0#n¿Ó¢Å‹ÍZXª…ði²â[§Zë׿’–eÍWþ¡XÏ¿¹ðÃïiÁÑN¢_[?û)õÍï°¼Ðe|¦lQ~ßZö«Ÿu*7Ø6–Ÿ{6™JÈõD'{ÜF}î‹–yö9Ë<õ´5ïe<­Þ{/[ñÝÿIÔö¨#à8­Mµ³Ø'æìÙÿcù—«!hoá;”¬/¾lûœM;…+ˆ=Ô Èø«{úñÉ s0gͧáòk|ôtg^Kü¬Üç´}}­k˜2Ü]GÀpG "åïò*VóLGÀpG ? ¯æZ¿xR*±Jç¶dË1ǬÏýÇåa#°ê‡æ[ÔƒŽüÌé5´?òškó%VðÞò%Y#=^gí¼–qãß I£FÙòïÕ…Xo/ ½üì©Öùmú·«,s($û¥¬gþbÖÞXJx?ÛG(bý–Œ5Fq—þG ÍâãÑ_1cýKŒÛHÆgVÆFœÐÿž¹Ž€#à8ŽÀÀAÀg®œ±pOGÀ´D¯.h÷=·õVíñr‘Õï;(¿TŒ–‡i|â©rÅòé /¿b šÍ‹Æ²mØÏ±DH<ŽoB¥I[l /¾¥™ÙÆ#% ,E¢eiâ 7dI·§.¹‘yneîÍ·£¥7r;l—Ö³©Cö¾ÉÇ(GZ\ü8¢0h¼ÿAkà!CŽõ²³ïx;òøžY-’k˯M®ÃF|VƒÍnO-͵Xm¯›ÃǶi7XÃ+¯˜ìÕïÒž×%ÂÛ ùîd¬úða6òo×u)¢„ˆ5Ø£¥Kóym›oÖ©Lx“Ûbó5Î’7>°ºú òˤh ÍæÎî¾['{É IfÆ–™ùŒµmº©åvÞ‘p“d‘òñU«­ñžé–™=ÇÚÖ[±Ûƒýdƒ|ùhák¦uêµïÅ|´7%·ãöyßµÿfž|*ÿ@¡ÜÒ0½é‡±ßiIIø ef>›Ç¨m“Mlõ”w·ÿ®:ùQëþº¢5¿~ëÑ‚¬;?!¿PUû ŽdžŸm™Çþ“Û!÷¶]-»óN|Ï.ÓÉŲ°FÔÕq"Z¸Ðr[N´¶í¶ÍGéÛemx†#à”E ²WÇ6eÿœÝûq~nÿ/²xGÂüI’™Ð«˜=ð’ŒzEdSÛÊêç |žÏ™î‚ –¶ég×z¥yÈô‡x² ÆõºÚ­k<…· :.újh•ñ~qLY-ÈÅpGÀ¼8¹>xÇÎ=wG`À ðÿÛ;0)ª¬ Ÿê®žéI$E °¢ºæ€Ys@t]ÓªkÆU 1ìê*(ʺ®ºŠk*®bTŒÈš³¿ eRÏt¨ÿ;·ºº«{º{fè&|çyŠºuSÝûVÍß=u®_ô ½4C¢Ã÷+86 —Κ!ÄçDÏÜ"yÉ“SMhÙrYô€ý¥ðžêÕѰ%Ý·ÚÞ\V?û”X R>òì”Xh ^…Ûš»n7¡:ì·fKÅɧK`þ|¯sŽ&µ—âôÌÜx´ìú¥ô®‰…8]ûнRyÂ)bÏ|9£­ƒyEÎ:]"§Ÿ’‘ßÒ‹Ò'IÙ¥cŒˆŸÑc¯?s¤zt1æX–¨÷zøŽ»Äx•GÿžWô½8]tSZWU|Îgán”06"U[²pnFµØà­ŒX®âi@…lÄZ/d̳áè#±ÒË„ÊUW_*ÎÕ„¿ÖC­ûç-Û"k+½ç>);>õå…W-6d'©¹çN©8´Ù\µñðC¥vÂ^ñr;' t‡ðU‡†ÄYâº.¥~†žFJþs¿”>ðPjΉ¾}å··^ÍxWŠy_u£âÂK$ôô3©{øΪ«š¯]ÿ0ÜŸJë~åÚï¨ßœÊJ<³›üY9Ó¡ç^²«þjð²+$ÖXCjo+1]P ‘ EÀ’™1tp_ò€{%V1-h«KCÄÅYmŒù³½þaK½~n×e>¹³%‚Å^ø‡L¯w3φ6{4ø×Ì èL th Ó¡O$@타zÇ! ª•"ÌKù¹š L .¾Þ:’XžåØÔ4Û*N9C*Fœf¼W5†{tûíD½Ýc›c?´°ëµ‚çt·½!¶a“Í|fCl«<üÏFXW¡M=¿¥´Ôl¨ª^ØeWÿMìW_“*­a]ECõŠ÷Lžò1×x—MÎ¥K¥ò ÃŒ°«¾$ÑýöAH”n¬ð+¯‘òó/nÒ®`¼¨+EÌñsF¹ÞñFÄí¶«™ÕÛ¿lü©Úï@xØ..ØUK £8ÀT3¡aS=Ÿ•NyÊ¢ü²Xl÷]Ýfظ³êУ¤ä ô oç|¦‹‰uú‹Ó½ô—¦µìé3¥Û.{¦„uõ6ÖE“ø†Øo-€íð>ÿBªö.¥‡sYÙ••ò .6º¾Ñ=v3^ù*¨Ú¯Î’Êiƹî//€1Ãs×÷qe[ɤG3„u~ _+ò} ½ù¶t²{JXãËŒ(Âņ¿z’Wœ<› ?àÞÓ÷g𫯱‡ÃA)aÝéÝ[ôgEŽõë’ÊN–УûZd&í/Kåñ#\a{ ÄvØÞü 'V[ÍTÔß U‡…(wÁ(³5¯H€Š! ЖTÿœÖ‹ém—K~Yê ëËëì—H€H€:6äÿŒ:ö$8z  •O î¯WJåq#ŒwséýŠq„eˆîº‹Dw"±­·(œ‰=óˆ®nlï†#wã³û«,”гÎ{ÆLãá«u;8'€²qãÅ©ª’š{ï’ØN;APÛWz¤»iä?o7›ªªW g#¢' £Âªzð–<WFø_wº^äÚïa‡ˆr5âr²rxÂmRö×ëÄ~ÿ)»æ:©_œÓ—~u "n`Þ<ê%ºGR÷ñÎCÏ¿hr¢ ³¬Ö¸×R‚Å]Ø|÷Tœr:FK ‰î´ƒÓ[Ò¿U áôÌsÍ«ê§vüXˆã鱫g¼¾ÁO>•òK®èÎ;eômÏz]·þËÜJmjñŽ˜Å͉ťü¢K!ææå[2¾e©£â±Ž%ºé&9´_ ¡ -*5¹·'„7)h>£ôî{D=Ç#§ŽØf›ˆr‹ ÁÏRÒŠ}_ÃW_+ÖâÅæË„š‡ïkúG¿`©8íL<lxëíø’á¨ .e9ß„5Ë’úKGKäÌÓ¼¡Ièõ7¥B¿*yïýTžà‹¿•_Ža±`¥?K_üoF¸)ûÃ¥ò‡›Í—K'üS"'g¾tñ·gšH€H€H€H€H k çz×~þœ= ´H«§>rõTŸ+< Qªê#¤ç€ ¥røÁ¾ùV |Ÿ.$Õ Q¢¦ÞÃuã¦Ä'¬›|Ä8¯½ézSGÿ°áùZÈjo› 1üž§mí#çžn‚xÞµwߑֵ@½ê민̭1.ðåWéúY©b;×Þþ”°®Å›»öþ‰FØ×ëðõãôÔ¬©ð¾éS/¶ËÎ&¤…_X×ë/¾ÐÔ)}hDöMº˜?Üß471Õቜm%Ï=GŒ7°n¼¹Ì.•°ŽŒ8!Õ…ïó…ÀyJ÷m‡H÷Í·• ˆæ¡â#KÕËN„ÇÞd¾lPQµöß·eëZWCÎèû¨Â°46JùWgtQ6ÏL qókï»;-¬kât×½ïÍP½Z®¦1êí>’òQ£ ïÝ,réE^²ÉYïžk­Óâ#0ï‡&}´8ᅥV‰œ5Ò,‚D.¹PbX¨P+ö}µßûû¸¡‹ë/Ã" z²Mß͆Ã1Ùo¾Á=¤ª¨ÐzËýùœt|†°®•¢;lgBû¤d%tL¿nP‹œ6"CX×< '9¾8؈éO#     ?Šë~L“ E ¾Ñïeé«/Iý_¯UøLY4j„0õºî>x)Gœì\aM"§ŸjDõºëÿ–w3Bõ"×0jú!ŸÅ¶ÚR¢{íޤ؄ IæªÇt|ÀºMëèÆ¡I '#œçUË8;ݪD?5[=ܱ!hs¦q«5®¹Z½Š«>|þ¶‘“OtÃÛ@ð+y øÐ¯©Ð0*t¿2Ë+“ö¾$Pý¢-cxãW?ý¸hs§î7õÜ.™ôˆTu¬ÛCÿæ/vÓ%¾û?&­¡\¢Ø 6—i¼òÈqG›¢¬E?§ªáù¯Öð§Ã°i§$U˜LÔŸç[„É.låµ..õ\gƒÌ£ïzÒcÐÆRµÇ¾®—<¼³Õ"gœ†/=¶jå–Ou¦e÷¡9;/ö}Õ/t߃úË.6áxrÞ™ ßÏ¢…¯(<³ßMz¤Û¶4à÷F.ÓÍ‹5ÔK.ÓMjuqE­ä¥™"uº__¦EN9I–|û…üöÑ)ja)³[^‘ t ÓI$§A$@í…€zZGFÀ‹‡µäW#Öª‡©=ë5„[ù:5LõºÖ° ÕSÏ7c;n/zä´†F±?û\ì×Þ b½š…ù,¾In/ëDî©&ñuú§Òþ„S^–¾Ä¦¨9 ¢ž†½Ég©?1FØc[l–¯ªÉx| úÅTPÌ<2åÆÏ´`ç 5ÜG¢l2ú­”<ùt†¸zV‡ªG­˜0Ù·W6†¢tØ|(6⽇ð\mõD®«3Õ5TMåq'ñÕîCó%ùLâ[ÎÏ ½Ä7Û4uke뽪ùrBcÌ«±cÛ vãçc“Ü¢-¹hR¨Ý@ÔãºE·Û¶ÙMƒýíu€eµ„o‚ì>Š}_U\O`óã¦ßJ¸w²ð%‡ýö;š>3}ëä„f“žäñµ—3l“×HÃ2Ù¯¿á]¦Ïea‰a?ûåWÄž>Cºï0ÔlðÝm¨É7ažðƒØ¾ßéÖL‘ €P\çK@$@$°Ü膔ÖÁ ;øî{)¹ÿ!)ÓX×ÉLÜí3þ"Õ4ݨPcjk˜k„ ®qÐsçÂ5ÿ˜ÙIèF˜Í˜n€˜Ó°!fs–XsMÄÆÈã^ŽÆŽoCJ ‘ÓbqârÏ~ë5w{Søú›Õk®RžSÙÍÿpã½kh˜’iRò̳PÕ£&~~|`ËÆÔܽ2ÊOÅ}=4ôˆ`%„MfËþöwQfjºñ¬ ÝÞbEJÔEYõôh‰Vðd" ‹g¹bé{ezNô]K‚m ®×kxÿ—èÛÂæºqý ãwý$Žû˜ L ¼OÞ¸to€_h/yœó->é½RÏ¡ ÞW{λÀß4aZ_|i¬êê‚SòÄuG X¡g¬!¦*8ƽ/¾šÐòz67b‘O7(n>,c߃·b @#@q½‹=pN—H€V&YÇ/Ý*gÞë2ðÃ^²ÅgoÌ7ÈSQŸ‰Šë&:¼È£{îfj–<ñ”9·IH˜<÷ÎÈÆ¦°º1©†ëQQ=|Û¦8|çÝRowµàó͹µxí‚óJ5mΫ[Ÿ1|—‹¶È…£:äf˜Î*«ä{[¼¯ÁϾrÄÛ÷b¯gÜL¿Ð€—¾ƒ…žÐK32Šô"øÍ·&/E¼B–Ú¨6G%]<©~fŠ„o¹UJ&?ænŽªõêë%ôâts”]v¥ÔÞz3„ö½sôÀ, è¢Rz£%Öq~ Ib÷Ñ–•X~–ÝÀrXºá,kglG$@$Ðá P\ïð  •K@C7TžxªÙ\2 O+¼™!ilö†#“²o65ƒŸ|š×Ã'áqãM¾Ó­„ÖÝLh؆ˆÆJwÖC­ä±'ò…$7åEÿxæÍY"²€OÄ•"¥×‡Æþüô“Ä¿¼ùô²WÈYŸI|ÀzüêÿÜÐ0×5F¹†óQk<耢ơÙjÈÝDréôç̦¯;D8ŽzijO¼×l¦ðm&™èÓ'ÕT7Û,š'U §¢Â\jÏtSÎ86®Ìg‡–›@±ï«Šó•‡•´c›o&±v0?çú³8ÀlD¾ãîœâº.ŒX Šþ*džªéþú{«þ’‹Ìס/›P4öÛ³Í6º‚†'ÒøðQ„±¡‘ @G$1xUˆÁkã\ÕÇߞƌîúe°Ì¿Ýẕ̌ ,W×—+^vN$@Ÿ€z¶Úÿ{סàù©UKTo/²ÆF“´~Y"eIa]…µÌ9C: ¹zX+s=ÕÿrJ~øŠ-:ÏÆòy¢kØæ,±Þº"É8êf£O÷¼­Q½×ÇÞ$ºù§ 4LÉÓϘ0<±m¶6áQŠŠ…gì…y)A¸Ÿ†£l¾»Šr‰÷_Û„²¢îfŸÚÈpJ¶‚q#¼Ë[cþ8â&ÔPÆ…6³-ЬKû¾–"<”.&©Õ¹L"#OÎÍmÉ’t¾ïç=¾ÆêbC\×w µøâçXZôÐEÖÒj c0Œ¯hÔÌ~× ¡f t9Í”írH8a  V€ÝjKÓD…2 ¥Ð+ñÕK¨‡*Ì~ã­TÓ†ŽÍ-¬k½÷ÞOÕÓØí+Í {žÝ¹Æ`Äi-°m‰í¼S®*yÑ~±Éb^ƒÐ\9ü`©:üh,F¸Þÿyë¶¢ zàpSÛ„†AÜóГSÍu±^ëÚI±Î=+y!}4®{3˜;ÏëZ-> I‹#F¹ dˆšýÂKîG²,ûTòÐd©Ú÷@©1R‚Ÿ|fŠMûdÈ ’§°€Ç‚}b<£ówùìbßWÝÐXÍYuU‰œ–GXGyèÝôÏ»cÝxTM7¸µßÿФsý‘ïg)ôÂt©<æDé¶ÃP|±‘ÞlÙëÃõh-^ÜyûÿyE<“ €!@q/ @ÑÎÄF”IÓð ¥wÝã]æ<—Þ÷ ”<>Å”i”ØnèO«¡!U?0^á9LC<”Ÿ{AªÄŠÅSé•‘_cNqWcI—<ñ¤’ƈW¡®9k8êO"ÉÐ%å—\a6÷ÌÕ& ¾¡·Þ{ÆLq‚mçÝ®qïõy¨•Þs¯„ÞÄb6vm<`ÿ\ÃhU^lÈŽÛtÓFãkWp°ŠÙ@\õrlvëYÃQGxI(êA‰`ñEÍžó?)yhRºÌ—²~[*ex>Z'4óãoŠÃ;rÆi&i¿öºØ¯ÌòµJ'Ëþ>6}ÁTE¿¯‘ˆéS÷V°~Éb©ôÞÄž>#}ïhzQ&zðA©E–²koÈùshÏž“3¤Œvè ¾¿~¥¡¡Â7àç8—éÏWr_†ø`w1W5æ‘ tM Ó5Ÿ;gM$@mJ º×îÒxèÁRòÈcpQŽJùèË$4åi‰Ã[9¶ÉÆ’4P,ݼ—j«R[o¾%›xwŽ”®kgüå² (å¯Zòsµ['ý§#UƒâE«÷øÐ’šÒ¥é”#Ýzá7Vêƒ –Ôš˜ZŽTôÁwÀWÇ¿¶¥Ç,KÔ¦[µ>åÈ¡XU|cŠÃóÁ©Jà}‘^Y2¯¾õ½¹-0GÄ&VbI¼ó[èÈšåqY‚]¢žAümIõÙ}·Å8)[+&ÎúŽáká>ö—¸ßâìûe_;2 4&swƃ]Ï‘ÀB<Œ³fav½|׎T®“èæh¿®{o}ÿª>+öùä»óI€H€VŠë+=ïL$@Š@íxxùÂódò£f^*:ë‘×à¡] ±U-Ï4vää%|Ç]8«¥jØ ìö–øëK¡`4O­ñðCŪ«“b‚qNãq‡VÂ_i˜¯ÆŽW!ºÇ›š Au“SË‹ a½æ¶ ’@Üð–ZäÔøïûWRòðd³˜Ðm·½!8®" x¾!®{¦›½VOº?%è{ùÅž&|íõ©nŠÜÈ4Õ˺æþ‰R…‡À‚†“γäa­ÌtlÈNR3ñwÅWäTUJÍíÿHõ¥c_?Nâˆ[oblãýð¬‚iý9Xìð„öÚ»o—ŠãO6q¿+Fœ&å••’XkMÃ_ ólƒÿ÷µýMWvZ7Ú4›m¶b ºðÓÖâºÞ¾˜÷µ~ôùzþE³BéîÂÚýf1M΃Ÿ»:Kb5$ò—3¥ü‚‹Ílu.¶û®©™7bcdãy>áŸzæYéxþº1o`ÑÏîâ ðŽ;Æ|‰‘jä%‚©¹çNé6üÐÛêÌ1e—_% Ýð_ÑçÎ3g­®ak:ÐkÉ3 @;&“òbX†ÆͧXž’ì×"eó¢RzBHÜä¬y@í ¡ûŸqYt0ÚA 7kuø3.1ÍƤì,[ê'e6×"î·šgË×Û9XYÇwu÷!‚»ŽRµT#]éÓA9àPK‰CøÝâÿÃ1iì«í´žŽu Jé)–,Íø¤ãº‹g ¯WYuX\jI̬úysŒËo‹ãX®Ä–àøGYë ÜNˆËS7¡¿n^kwÞ‹bQ0µe£+s-.xuó1öë0ö“,‰NÅ‚À¥qùå%\CpW2N\JO JÃí^ûbÇgtxÞžft,<À”¯’jÄ9üÄò3±H±ÀeýñŒŒË¼Ë‘ÝÇm«ÏÅ<›g‚Rqd\ò¯_8Ò«[\êÆcÎG¡}IúÞúþüêàÞ÷¥òì\ -YÃà% @!À°0äAq˜$@$Ðî @Ü®ýÇMRýÄd‰î g¤dx“ìqëF >R~{m†4þaxv±Ô_q©Ô_v±8:Õ¬E‹Ä~u–hèˆØÆIõ㓤v¢"°)‡'khúL“^á@\_:õ ãµ/%%Fäó„õØn»J5Ê¢Ãöiݰ”ã-ã¤æÿ‘P[‹§…u ü“,1éÑÞº®_·¿áljaNÑý÷+Ü •¥±·—¥o¼,õç#ñõåm¼Þ§ñRýØCx*rÖ3}Íš.*ž;ú¾a³Ëà_¡T¨Ð^{ëÍfÿ£mb±­¶¥3¦¹ï+æªï˜uÁX…T}¶òiñ¾&úõ•ê)ˆz×ö;sÌ3pªª$2âYŠß Ç-q|ý¢zì söÿQéh‰Œ¾þør}èâ”~õXsM©¹o¢4î¿oº:~fý¦ >KŸ}J¢ìoÍ;ðñ'ægY¿ÂÑwTß¡ú+/Ky´ûÛ3M$о@8‡Ø £‚ǹÔÁK}&ÎOà<_G A·/®§A€>;{äć@Bÿòë!8ô—¼µe*Ú>ã»d{x±'ŽKøäìöÞ5Üý š?‡{õCû¥Èçú´q“§®ƒP½<Χ¹ã1}»+Ѝ¬÷‡à\@wzĤf:Úî…qýˆãô¯süy«$$qÜV}ÞäÈF%õŸ@û»pÿnèÞ <í­çpü¬cÇÈ.‰Éǯë„7×ÖŸ-xƒÇ&é8½¶èÛ ˆý–^·Å80÷ñŒô}0|Þh½Œóœgãl¼ïQv(–;Þvd+wo08ã AüÖd{xoXï€Át´­ÁX‡Å¤öUT+õ5I%µ?ë¡íñ¨«ÿ€øížFðz—˜ÎU˰0òž#=ð™H€H 3Àïx ,E‹rÁŽs6¬TR†5Nº ¤NŸ>Æ ]à1Ú¬!´‡zj릖Îj½%¦BlY¸Ùf+¢BùèËW~"¼©²ä§ïÜ[6`RÝh¯ºÑcbÕÛf(µubC0¶à‰›è»–ÄÕ«¶¢¼mún½~Z€ )€$°Îd&M|þæ™·jxø«nlüâ+þE9©×s.Q=g¿x_5ìÆýêa÷ÿÍ=ld<«õk ]Ô¡5C`ßW}‚ß~'B%ð¥Š~AÐjÃï ó³‚Añ 7huÖÒjóûFãý«§lÃßý;§wïÞ–e¥?£hõ¤Ø€H 5 ŒjH• †~‡p#[ùÃ8R¾mõ˜î‰òƒ2üwêAîõÁû5È»±"¿"ʾ–Ô¿é•éÙõ†NÜ¿nBhÿ¼ÃáŒK…«VúÏšVC¿¡à0[6ž¡žÞ¸÷ðE'ËPþ¥-öŸá=<˜>4<ÌLŒo ´O` kc ø„Æ5ÜDã3¼kÜû¡ ô=Þ’¯4cXaH°°àì¬×–Dð½§4­Ñù^ô}4ÚýbK$%nk.„(¦Q~oPÂð¬NÇáBù¸÷ß0æ ÊïBû“´nK ÷¾÷†çºù3ÁþžDWwã²ò7×ѾŠžÿžèF9ë<îJ÷³üaXô9à˜ˆ{ ÄÔ9s¹OÓjºè~/¹Wò¡-Ö–D¾ÑkGúãk„ŸîP†Érs´?Ñ»Æ3ÂÂLâ½Hà<¼#©88Ò³{Lê®BÑYn¹¨·þ¿4M# èØð÷H€H€–@Aq}Ùºì­rŠëbädk P\o-1Ö÷ ¸î§Á4 ,_®¸Ü¸Hï‚%ü³ \NȾ#ÄÛQ?ûÌú âõþ–ÔýOë@t ñ{¶¦ÑöTˆÍó "ñ¿!®1Õ–àZhÿ£–ùÅuü[5è lOõÚéÂëá¸÷ÚFhPJ6øÿ¹^{†:G¢Îîµµ'¶ß~ÑWæ×­·Q¶­WæUÀ…çôw@wä½ ÑzK¯,Ÿ¸î ÎñÏѦ ‚ô „÷Æ—™æ ß*#¤Ê6˜ûœÌù¯ 㟔íÖ±d&<Ï3 áxú"ÄË\ÍE½;!ާ¾B€¸þ2F²3æ Šönl{˜Ë xöH¶¿;K\7Ïý"Fûð5›Î±w%ÂÁ À醻?‚¶ÇúûfšH€H cÀ¿h$@$@$@$@$@$@$Б t¯…(šôâ¶öÓM3³gmÇe•Jˆš>]a=YáU‡ÀÛøÂ€T<”Ýλ†hú±—†€^•N§Sؼò­la]K!H®%5“)¬»u©ÍL1—µ}õ3’똌Œä…%Kà1o™E´ßD½­sÕóçÁcýÒf.Xp9ⲩ¤ÏÍ*:£0€°7)oí¦5 ç ÿ³EgmÑãÀÜÇ¢ˆå‘¹„u½~ €yh¸µÔ3„`nYâlåf&æÖµ,(r[§éŸèã7×é“§‡f×°dQ â­ J¤‚Âz6^“ @Ç%`wÜ¡sä$@$@$@$@$@$@$ ¢é¼zx¿¯à=!rîƒM3?C˜ Ññœ-ý^Ñð)IÁµ‰7sÒý1—£ Ë›p®Žp";j¿é'çÿ¥!î¾›®ãOy«zi ¼—sY,µS&„Þœq½! Ãëý‚i"cru€üçBôèjöZj½z¥’L¬t›Îž=ûÕ^½z¥ŸOñCrã¯~ô³Ÿuñ4Ù ,gIÁr4„õ‹E*7C,qF8a]$„wÆÇ桇ÚRoBÁÀ[½_\bµâŠñ`g#=én¬ô >³dN^ÉgÃ+¹ ¸^äô 16Tè]¸†˜­yüåUØÀc>jh›m±÷,\Û_jÂÛû3ŠJ·Å8°!é•ð¿\NXd°þ‹g8y`nXR³PË n©çLK¤¾8À"Ë(û4³ÜåüÇ6’Å»$ÓéÑ#. pÆ0á„öÁ{h%0×ýcR§¡gRÞòþÞ™& èX(®w¬çÅÑ’ 4C¢*4Ly/yüíÝ!h^ŠëQ(И؇!mÄuxBÚˆÒØÔt¼ÇáÚgsL"­OTu=de˜OsÝ|3÷ƣ؅óT± IDATlTÃáÃ<¿óÒùΡ¿@½Á8#,ËÖ‹“qéóU_nùŎѪUâÒx™>tاˆí¾—n^ê^¦ÿtäÐ`\žêžÌI=CG‚¨7ÙËïÒ-š¦P®!fšµdø!}ÇÌ{†Eœíð|&áùiÿ›âk „ª) â7{ V  h4H€H€H€H€H€H€:,„zä)Éñ)„V Á‘aêÑnËö£‘ùe²`{_…¡š†`½0 u7úò3’U·Igø7ÃLç.ïDÝRxÝïšÿ>Î!Z†±bãÓðKùë¹%¨÷™¦Ü~ߨ#_}G¶ Á3ülûB¯\–¯Þ²æ;|y°3æ€nL°ó[s ëîØ¦öêá:ål”Š—Ñ8ÊËù£[·éŸŽ”oö&䌿ԑ¡6ØÜF³p¾Í_æ¥1¦7‘N±Ã˜ýï Wg  F€âz{`. @^úù{mÞR tZ×èy &¸6§¼"÷Dg¨k2ªS¡Ó³°›pª ›®âeúÏ”OvÃËx¹NÈK­„óõ^Ͼ¯ÆÇôþ”ÌŸÚ’˜ÞðÔ¿ Õ$ÛÜìÈ€Òì~õ:!Ÿœ¾‡à¾{ã2–«N1ym0Žä3Ô±ÊÚ¹ÆâH·^øJáÎt™•z†–,ëQ-à 2^æ9…ol{uº}:¥ÿh÷{´ÞÞ•J¤sš¾ƒÆ‚bûßA/›g  F€âz{`. @^}P¢^‰4  .FÀ–á3áyþ­;mçpxŸ¤!@< nüë2õ(FøcO&Ïê±þ¶¦!Ž–A˜¿žï«zešvc­;ÞÈi{zuVüÙ±ІBñî é=à =s@,¯Š5Ê++t¶¤îGKž`<(&sßp¤" Ü‘Òõp¯K°xqƒöV º£PŸËRVì8‚’˜ycúÆ}âvÙöŽŒ1z‡žáq¾eL§¡xo|¨œñ ƒR9ei9Dôgñ5ÄÞ"†¾?x§4¤‹..ä4Üÿ-Ðg€¸íÿRvþŠxFCq=NóÀñ+„„ùDÓ4      h®Â †µ‡p $@$@+žDáͦ¡a=þ ç÷4T Òõ^>Îc3…÷ðÚ(_â•#‡ú:®?B:¡ùVçÆ¥ôT¯÷ó¼ªÈÎk\÷&†±õI×)»¨Id8^7]§T…Þ”!Ì-sÇVún2­cÃÜÂ?{íP^‡º¥&¨s¯Û&¼8»LC¾ |¢×G²ÞBœ¿ÈÌ+]âÞ³ûÉw¾ïtû,-øuY±ãÀ=nÊoø'ÜûE0ùÕËÇõ=¸~ÄOx±ÞÓ?n<¼ á¾ú¿ ýq’;Þ«ðL\ë;¥ïÄ]þ¶šFÞýé¶¥q\‹6ïàÏ$@$@Ÿ¾\¢‘ @§  âú­8Îê³á$H€H€–™€#=»‹4®§_PìɱÊ–Ì«o®CˆÓk"j÷z1q*l |ŒM(ç6×fE”«ç:B³œÿÀÇmi0qºñÑŒ±†m±>ÃXh‹±8Ò§B¤zCü¥Úáe¾©üÚ’½ÎÛâ¾Ù},ë8éøë?@h—þˆ ô“H/<ÇæŸ}Óû—õÛõÁ¶Nd­9–|Õ]'ßµûeÄÓ}Qþ»¸ºáüÏçû|õ™O$@$@$@$@$@$@+›=×WöàýI€H€– _X˜Ør¹;%  X&ÜÐt™°± @W&`>'ëÊ8w   NC`SÌä—N3N„H€H€H€H€H€H ] çz»~< @+¬ŽºÝZQŸUI€H€H€H€H€H€H`™ P\_ftlH$@$@$ÐÎ<ñœÞÎÆÄá @Ѱ‘)6ôÞqpÝ;        ,ÜÐ4 /I€H€H€H€H€H€–z®/?¶ì™H€H€H€H€H€H€:2Í0x8ÎÓH€H€H€r ¸ž‹ óH€H€H€H€H€H€H kaú“qÛµ1pö$@$@$@$@$@$@$Ðù ŒÄ‡tþir†$@$@$°BŒÂ]óqT­;ò&$@$@$@$@$@$@$@+…€»ò«¼•‚ž7% èdú`>¿áPq]pÐH€H€H€H€H€H€H€:)nhÚI,§E$@$°Â LÄ=a]Ï 8­ðQð†$@$@$@$@$@$@$@+„Åõ‚™7! èä¶Áü8ü⺦ŸéäóæôH€H€H€H€H€H€H Ë ¸Þe='N$@$ÐF,ôó&ŽlaÝ»ÖF÷a7$@$@$@$@$@$@$@íˆÅõvô08  IàXŒÚÒs¿@yI‡œM$@$@$@$@$@$@$—Àd”œ·”$@$@$@…T¡p>Ž\¢º?ïüB°ŒH€H€H€H€H€H€H€H€H€H€ºë1Y¿ˆî¥çeå/Åõê] çJ$@$@$@$@$@$@À˘à9}’œ ,ÑgOP׳n`ªç{pdopªy4       NB€1×;Ƀä4H€H€V8©¸£_XW¡}}·â8Ç]8üå*¶o‹ƒF$@$@$@$@$@$@$Ð P\ï‘S  XáöÅý¹¦¯ËÅj¸þ-«Þ[¸¶²êñ’H€H€H€H€H€H€H  ¸Þ‡L$@$°R „p÷ÏqøÅõq]‰£Ç8FáP;‡¿ž¦ÃA#      èà`ü×vð9pø$@$@$°" ¨pž-˜“@i²ÌóbW!þÓ¬úóq]…ƒF$@$@$@$@$@$@$@$@$@$@]‚@Ì2;ÔËÈóB½d‹ë eÙbüõZ@#      è¸®ÂЇuÜásä$@$@$°B \»ù…rݤtkßr‰ëZü»:\—iH€H€º@W›0çK$@$@$Ði \‚™íÝiglj‘ @ÛPñÜo÷àb¶/CôOp,ôåiRc¯7úò4\LÐwÍ$ @#À M;ØãpI€H€V*µpw/†ú¤{µb4'£nGÇE­hǪ$@$@$@$@$@$@$@íÅõvøP8$  vM@㫯‰Ã‹³î¬‹;püÑŸéKëF¦=|×L’ @—#À°0]î‘sÂ$@$@$@$@$@$@$`hè—qè9Û4ÔËÛd$¯«qþ5O³I€H€H KЕh t›b¿t†‰p$@$@$@$@$@$@íŸ=×Ûÿ3âI€H€H€ZF`uTëÖ²ª¬E$@$@$@$@$@$@Å ¸^?¶&  h?žÇPNo?ÃáHH€H€H€H€H€H€:3†…éÌO—s#  ®G`}Ly/*´ï€cm~›Œ‹uplíÏDz&ŽûãðÛ§¸xÇA8¾‚ÅHó> H’ß+ïàÏ—xù{·ãþý¡›œêß©¯ëƒ¤‘ t^º©šnÈöfrŠ%¯5Ï;T ?Åwíåïƒ<æ½kï|òÔæãðòôÌ{dòP&dÕ” ß«¦LÂxWø3˜æÂß%iÞïXþ.iʤ=ü.Á.H€H€H ›€®DÓH€H€H€H 3è‡I¬C=Ð?Á±ŽUpøm6.VÅ¡Þë~û 8tST¿ýˆ‹y86ÇQâ+à=ÈÊ÷:ß+þ|xï—ð÷®÷.t¶¿?¼yñL$@$@$à#ðÿÕ‡ïì†íVÄIEND®B`‚cdhit-4.8.1/doc/cdhit-user-guide.pdf000066400000000000000000014671221343604040700172370ustar00rootroot00000000000000%PDF-1.4 %âãÏÓ 120 0 obj <> endobj 144 0 obj <>/Filter/FlateDecode/ID[<3F236C86A7B44F8483A8D7BDA3A25FA7>]/Index[120 95]/Info 119 0 R/Length 122/Prev 420971/Root 121 0 R/Size 215/Type/XRef/W[1 3 1]>>stream hÞbbd```b``ý".€HF.É¡f+Ù-6„d‘{öIÆÉF v~ˆdÙ$™î€Õôƒdg©ƒÅ'H‡° µ Òà(œÍh0ÄfZ$ÿue`ºŠìFz"ïég×0 ÿ3010.²S endstream endobj startxref 0 %%EOF 214 0 obj <>stream hÞb```b``Nd`e``O`f@a + Ç 't Èà4^ƒA3ƒîæ' œxW1Ø&°s0Š1H=`5cèpàJ`lgà:ÀÌÂÈà|©…!ÃAR‚q"ƒÒ¶ 8 R= v€Ý•ÁáÚ¦ sž[ž+F'ž![,(°.[lÉ‚g5ÊšTc®éz:žùá¼ÀÅi皨IÍ3?ô,w˜â_±U•Ý„SÒ¯Q0ê»a–_†Ñ\&¥‰g“®L‘9ß’jŲ¨zÖÑ•– ÐøŽ Þ `ãEúà®G6Þ%ÈîúŽ%HÆÇ‡¸^ázm¸ñœ.ßÁ®w˜4^»ëqäú@A$ã5ï€ô‚]8H®WìkY™“Ýõ#¨pƒH40C 0!& !Æ ˜Lˆ¡¦+ܬ ˜hLHnLˆÉ&$ ×Ät=ܳ®ÇT%¤i<\ˆ.ŽéGxàÀäh‘­€(30r1Éf†ò ØÄvoò‘Že¹»-AF+¥„]ÀÎÁ²{ݾ¤X@ô÷‹Œ l´/[¦<„Ïp Àboˆ endstream endobj 121 0 obj <>>> endobj 122 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 123 0 obj <>stream hÞ¼—ÙnÛF†ù(sÑ …4ûfA½Ô©€: ¢,^Ð+3•ECbçúØmÿ3C)vܺNÐÆpކ³œõZË“Æ15zÏŒ¤>0'¨,¼³˜#T„ !¸A1)¥…€iÚÒÔ6˜h-SÆyŽ)+ Ï”w4'0íö°‘iO':Át U5ÂcC§˜QØõÑ#~ˆ6å/ŸO¨í]ôýÕç³ùè¢íÇÝz±ÿø1?êÖóf] X!*~Ü­úfÕoö~ÿ£¸(zü]Ç߬˜#Œµ]±.ûülïä@ é…Rz«ÚçOÏö„r„‡ØçÏ›Y_5†¹^ª1ü#•Ûà™‹q윫øôíy}ÕðÛÕ¯üI‡«U×?~üw¼oÚÝj±lGËúüK y_40â#F»bU,Š%~ð¬‹ó&ÃT”c‡P¸`Ç.70ÑEÅœWcoâWØöfö®ýR‹Þ 8ï`ÅCµWÛ°81VÈß­öV¹qök´¿¬Ûeß,Û÷¿ÛÌ7³q3{¿ —px ·÷Pú á=‚ò]±Ažm`ÐašoÿÑ}+ÇœãˆjAe…ÑÌÙ0F…ÝoÊ÷ú'Ó¾îÈO¦2U«`Ï¡þ)Æà©JÕ‰1~ªS&ѤZË3Ÿ­»Ù´éKþì䔿h>ô|rY/š£ÜçnRñŸ:u±éi—vš(B@‰ù¨ ö×:‹(k­² h™EØ©EAà%‰ Œ Y­dÞÑÚ­/ë%?>d2¿3™Ïj&Ó´Ÿ(Ríj±÷òxJ>]´›~}½w8ïΛ}øïêjÙ\"zLäøofô#ªÀ뫚vqÑ3¯"?iò›‘ÒŽŸ.ëņ™äÈ££îC9Š2°‘Ià#PJç«ôö´]6pƒÉ¦ÑÈÓú²ágðçáá·'Í›úÕÛi½Ú ‡æÍjÓÌù¤¯—íìh˜à?6õÚC:k7H¯ÛyÁ¬|Ú7—¯Xð®—ägõªÛ4{Å·¿„£o(M“OèLR~Ý^õÝšÿ<ØdÏn¬7 M¹O¥ãÉÉôzƒã&«_º{2£/º'““³ú æ0ž¼NªÝ>3Ý ôv›­XI3H=õIIþºÔªTÁá.`ŽaÙi½bW‡ ׇg§S3ÈfzŸæ+›{¡+\Q(Z…|¦ë÷¶CFÓl§Kã‹#–“6²Êáʱ¸¾¬$c7“³©Ù(j”yï0®¡æÁ\ê¶^â7`IÀÄž!ÒÞ.¡O C êIRœšÅoZkâ°ÞiZG²¸"s³J¦>x—Æ-ù¼Vã·q0’0GïPMÕG=5Cn@£ó©Çù®Ö­“+*tI6zê]Ió¶ú‘Œ2é<Ò›œœÆ†÷iŒ®i7Ø3œE{Óï4ž×W2 #Ù€s¢Lâ #ýöÉo2†’lD<*…s”È1QAC>stream H‰lÁjÃ0 †ï~ ÛCqÛs”–B[Dz=€c+ÁÐÈFqyûÉn×B©À†Ÿ_Ÿø%}lN ùú‹ƒm1AïÉ1Naf‹ÐáàIíöà¼MwU~;š¨´Àí2%ꃪ*ý-Þ”xÕÁ…×J_Ø!{`õ{lE·sŒW‘lU]ƒÃ^æ|˜øiF]°MãÄ÷iÙóìøY"¾èÝ-‹ §h,²¡Uµ•ª¡:KÕ É½øwªëß´ÃMeêßÏòštvf–`å%QÎâ çŠ!fª¼?]qŽ endstream endobj 125 0 obj <>stream xœµYÛrÛ6ÅôQ_—N›ŽE$ÁK¦MÒÆI&“:±SO'Ƀ,QŽê]ì:¿Þ—,ÞÚ’ãŽG” â²{v÷ì.Å¿rŸ_ó(ðdàóÈ=?ŠùÔ~ìÅ™à—2ð’Ø5bí] ÎÏøŒ÷p„—…a㺼èµfKá{A$x_d±JÉ—9ó·½·Xáû>?ê ú¾è~±êùžŒ~Ýóùé²÷áÙgüé)?|ð”–œŽù§$mÀ¹Z¡¦D¡B„ÔÇ<Áç?³€ùL°„â[ÒU0N#q>â§—Ø’Y9‰ô2?jí,°[ÈäN;DI†¡´µÃ3ö;ë³ì%;…LïÙŠålÉ~Â7gGlÃ&lÄòíý}/‘¾BŠN©_ß);¤™ÄA‘—ú!lH‰gY9Rð“^À_õÔx"³ÚÌP^à‹ÆL5–IQ›¥%Lec–µiÛ–½ÞWmg#`ùÕgà{8íýïÞ!àŽYd pˆ¿àÃÙ1° À¯ Ÿ³1®g¸›°oì3îgxÆÙkÜkã¼Æìs|Ø×W0ä_0"‡19æ¯ñ·€{âﺵK»>®j½‡±%ÆÍ}³µ<‡÷3z =&ÊFQìE°Öä2J<‘ˆú¼ÌCÄÖçIé{B†µ9ÆÞµ9]æ~ËÕ)öΘEˆš]¬Y»vp˜Wï‚;ì« (I"Ø9ù¾s‰~[t›£ƒ ð¦æhå#+ò ¼aD¾’ãû1Fn'%¿›RôU‹µtHà#‚ãÀHÐôÄ!Îîcl‚1ãy»Q—Þ:†‘4[cù®»„ZSˆÙ>F¤&‡CßÜFE#ŒÞÃZ'°¯ÄºKí ^ k ·wnX× gAë %ôŒÔ,£w±£X%Gy«Ø—0ØDíñWˆqFefo¥ô5@ø ¸ðb_e¥M‡ï‡Š'åá •­ /Éš\[ã5Žê`±ÆîØžG ð¹ÖQ o(øVÆ-Ÿ²b4kMÜ01^zN¢´b‚9üÏi¯¯˜cÖФ‹5æp¬ÌÒ¹c^õ|FT Fonw;£²rP¶VÙúÜ hu®hó5œ''• Z±©9&/3ÚÜÌ[:T³ÚŠóöa"»ÊÈi™k"BNBMM}¶‹94¢M»Xû­)œg·ÚbHhkÂÕÈiJYMÇŠF]í7h'«ˆéØ2}Ýô#·©1úñgb¾ü›ß) <ºWé@¥€j¼baÓ6›Ñ²H¥Vµ¢ ³ €×=# ŒÍ).‰ïUQæ‰Ø:  s+ð+·Ô]Cy ï龪ਖk|£ ¨%V x¸=5.Þö­œ2ˆÎëWÆSº]”‹Ò …‡u[U ¡))¸6(kwÓòd$Û5åÑ!®Ü¸òc«’n– glº±% ,aÔ37¦ŽX•ÀêõSƒ^'eÁžYœÖ2Âl Ñ:ÒML-Ýhn]X´RCõšŒªñ1=ÉkFà:"µ(1V½"öÞÐJÕƒò¹Qñðž„Eh¤( iq–ƪŠx¶\iAÂ~1}€ªãuüiŒo¶ÈŠ*¹zUuкïÃgFŽÑœ¼¡k¼k•ö•;ØÉÖàãHÚ´¼-Tm;RlEEÑíÊD(M#Çøˆèg{\•X®ñ?÷{ÂÚÇ-§ØoeóyÃò‹‚öÙ){Fàé´äé%† „R¤ãxI›­ ÃêH?&a š¡cø3%¨qû†æTm³æ7=]bõ¹r]üÿ”ÎÊÿýswTDQ³"j–zþv©'½Z†iêÅ‘­úiÎÍß³­tš:  ÔUrvË‚ñËr¶-‡õï.yùéa¤’èq£´Sª€ìø¬ÅÇ¡­¢aY"°²ËRMpËäFé$ Qgʺí\¤ÐíKõÒLjö¯ ŸýHzn(–Æl¼¿lè1T—×…š&+ÛKÂdF茉6æ&‰éy‹2‡ê"qt´|„iÜmGM‰Ýéç…i,Ö&¡Ž Å)yýÄôªyY1(?˜˜ÚRíY ¦¦œþm‚4ö¢8îÔFÿýµ±ë¿CÂD ñëöå{›Nï\²wì {Bl®²û=Η º°°“aÏœeh[[ö ^sBCÛÓDðþ’!ÓÅI·ílšw#ãª:u´ë òÁ‚¼P罪vÝ”û4jÜýuP«%uë63µ–ý˜$Z•-* óÜfc]04Þ8ì*ƒ@Á”Ö-üÙÁ}/T'\–TýW/=×C½õièex¾ÃÃZ!Ûî mëb›þvM§€[ГZn_ L ¨Óõé‰ \íªW¦Á±ú¤õÒ§Ý4 J\è÷žSŒ¢ìÛ¥t1ŠšÄ/_|ªÔ Ì(ÓÆ_ÝÝ®V^‹ª,Èfº²ƒ^ó„m7¥ªJ{nØVõÚƒ²< …Ö& ,dª1ù²ÅZ.Û¹ʨQ§Ýty§C‰bª¤µAû|ºØCwÃ9 2ÎQì*§Ö¯%l™R=]”¶ÜåKEìÚ!7´ªæÌiÇ!Í[) ´£sÛï-£ð3/,C<Àæu’Âxº_¤Ù£]•¶ãgê‰ÌfúìoêÆ9Žè ‹¶öÄ(®=  å‹7f¥­ærZe¸a·êm^³ßT^8£™úɹyWñ©Øü®Â¡è,â×PçŸW¼z:Oý®%’Þ,š‚Ÿ¨Eô3 °(P‹„Ee7hïñëݽÖü!ké´ endstream endobj 126 0 obj <>stream H‰lÁjÃ0 †ï~ ÛCqÛs”–B[Dz=€c+ÁÐÈFqyûÉn×B©À†Ÿ_Ÿø%}lN ùú‹ƒm1AïÉ1Naf‹ÐáàIíöà¼MwU~;š¨´Àí2%ꃪ*ý-Þ”xÕÁ…×J_Ø!{`õ{lE·sŒW‘lU]ƒÃ^æ|˜øiF]°MãÄ÷iÙóìøY"¾èÝ-‹ §h,²¡Uµ•ª¡:KÕ É½øwªëß´ÃMeêßÏòštvf–`å%QÎâ çŠ!fª¼?]qŽ endstream endobj 127 0 obj <>stream H‰lÁjÃ0 †ï~ ÛCqÛs”–B[Dz=€c+ÁÐÈFqyûÉn×B©À†Ÿ_Ÿø%}lN ùú‹ƒm1AïÉ1Naf‹ÐáàIíöà¼MwU~;š¨´Àí2%ꃪ*ý-Þ”xÕÁ…×J_Ø!{`õ{lE·sŒW‘lU]ƒÃ^æ|˜øiF]°MãÄ÷iÙóìøY"¾èÝ-‹ §h,²¡Uµ•ª¡:KÕ É½øwªëß´ÃMeêßÏòštvf–`å%QÎâ çŠ!fª¼?]qŽ endstream endobj 128 0 obj <>/Filter/FlateDecode/Height 120/Length 818/Subtype/Image/Type/XObject/Width 120>>stream xœíœËŽä ׫ýÿ_î=ø‚„ ¥ „ûqÙP*»¦(°×ëõGöó÷é ü ¡Ð ¡Ð ¡Ð ¡Ð ¡Ð ¡Ð ¡Ð ¡Ð ¡Ð ¡Ð ¡Ð ¡Ð ñoyÇq„-ÛÓhçSÉù´¶ÿ³}ûlõ÷ÌÜ– £!Ö;údìˆÖY½ËrßǪ|Ïm!:b—£Ozwônj}×Çß¼Ÿ~ܳMÕòjŸ“èhˆ½ŽN¨²ˆên{½º2þ}<‚ކxÞÑcWöo©2–*ßx ±×ÑùJ¯ÊFª–‰gÇ£ÃN×Ñ»=¿¾ªVt•‹wT<¢£!Ž7ù§Üs/0ëøuÖ;zÇyqÞ¦oYEíq{ì £!ˆ8(É%ªÞZªì"ñìÖÚˆŽ†Ø›G½sÕYI9öêÎË$:boÖ1Ž˜ýõ–ÄËɪo¦Þ² ÁåÑ}žp¯]õ“ô0žÃVt4W똯ºµíOòuf5‡±÷¢£!vÅè«YAžY·O]CòÿÃZÇgóy1ºê9!És6¡£!vNbt¿Ÿ]õVQU*îE|cô7@×£ûë'ù4òÌwœ5_ím AÔ£¯ÖZª»I#©GW#.GGC<óVVâš™“sU´½·ã³ ±7ë¸z6£¿>î-ßOÆ2þ薾彽ðü\Gr%™í$:‚{s6‰¡Uö=¿S^Ò·4F6ÄKKrÒ£º{õJÒó¸åBt4÷VVë£$F·=\Í’±úVsX‚ކxþ–™Ór=¹Cáõ¡Ž†x—o*åçNûZs{wœó̜ڞDGC<ÿM¥ªå8cIvO®îšGÏS)‰ŒUvœìžT3IžZˆŽ†xþ 4'yÕ¢ZõU¿ŒüLéVt4Ä»8zìÄ“Êõ3'Tï­Ko £!žÿ¦RKrš)?#ÚÏ!Ù#߄ކx—o*å9CÕ¾¿›Ç_÷ ¿‡çëÑ?‚ކPh…†Ph…†Ph…†Ph…†Ph…†Ph…†Ph…†Ph…†Ph…†Ph…†Ph…†Ph…†PhˆÿO,úà endstream endobj 129 0 obj <>/Filter/FlateDecode/Height 428/Length 48071/SMask 130 0 R/Subtype/Image/Type/XObject/Width 1495>>stream xœìÝy|TÕÝ?ðϹ3Ù ™„°ƒ,‚ ÖºP+.ˆ[ÕÚþ´-tѺ´*m}Ä$  @2IØ%k+î>v3¶Vkm•ºï;ÖÊ¢‚¬²“LH ÛÌ=¿?nîõn3¹“m&™Ïû•×0¹sîùžs™Lf¾9 @DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD€Htˆ¨÷XìNtåI` 0ÈNtK¥,Ñ  Î«d¢Û Y ¼ü œè–ø '""¢áOtˆ¨÷ØŸ4ázÞùÀ #…¯õj¢`88ÈMŽ(‘Í ""¢ÔÀ, yIt( ÈJt…ƒ&©Ëe‰nQ"0 CDD]­ (õÇY²€&ÀÌ÷¢  ÌCˆ…@è4 Pê!„1Gz ±hÕ{!¼…(7Ý÷r¡´^h!üÀ<!ˆˆˆˆ(™(‰nõ-ZòB"€Ô321T‡€ÂÀbo!¤>>«Ý‹õ’ ,ñBÕ£x ±h ÷BzèE¹^Rz»PF/šô Õn/ˆˆˆˆ(Ép 9¥ªJ}‰„xâ]> /Õ/¹zBJÒž×.­Ô“¶¢®-ùì|^es£œRîV>Æð–»£,i”̉rJ¼½Xr;#D¼½X Ô¸ÏnŽrŠSÐsÉ”"L·†d{)ŽWÏ´"0=ΉˆˆR³0”ª‚‰nQo¡¸å#¸ý©4-¤=*Mß:S¶Œb]>6¸µÓ!œÉ c)Vä%ŽSÊMÕÚÖmu Q ¬s4ôfw:ÄCÀVkóééÀ-n­ÚàøcÕ•’Lë÷.ÌÂÅ3’ˆˆ(&éöUî˜ASaý(ëú[ ”[¿•À.k¥ÔúK©Xi=e¡)„ Íš ²5©¨µ šÊK Xî!­­ê3„Ö;B˜{ÑÜf-Pa ¡õ"ÝÚ*Û…zÉš‚u‘ ´«!Ö™fTIk§ˆˆˆˆ(q˜…¡T%ô¯Ÿèñ+Õê§T`¬Yk,}b›Â£-[ d[n˜ó ¶tF©~kü^’@ ðþí"}¡èOÎÀ­@¦)„j ¡åGœ#eÌ‹àJàP­»Ø:ÐF›TâQií…kóo×&S:É™«Òz‘aýq3BHàÓñh½ØmJÄ,êèt˔嚟êí/Å=S?Å¿B‰È³ ŽÛOIÂmF’y:LÄšQ€¦Â•ŽÔÆëª(Ì0´†›¼ ´x!€RGˆ3©QB`ð™©0å;œ!ø½04f/&›L½€c˜Å@‹é[?0ßÂ6Ä¢ X¬/ ·ÿ8r¥]¨`¢›ADDD©Y"òŒY˜Ô¤ý¢0§$*¬3ƒ„õ[ç²&‹L©X³ÎŒ&hº¯8&"-p”·Mó±5éàjkyiÆâ³Žåñ¹…ˆÑ ýKÌHÇH™v×1÷©˜éa^dväz¡‚QjNqÌÂQâŒ$""ŠÉ™Ðfܘ'éh”(»Íünim(3`¢é¾-ããÌ@Ÿ¡ãl€|G úè£Ië×Z/ æôJ¦Û*¿¶æò®)8¦2™«èHÁhLJZ›dþÏrí%³0Dä™/Ñ  äaL¥1² 1vY0ßtß¼|ŒssÍt @¯Ü!b†p¦0´,3y¡™ ä:B´Û Ÿ#侩öTàScŒ;1¶ý^àXqCiÀõQÊφ:záó¼³8󶈈ˆ¨G1 CDžÝÿŠüê_®¿+´zŒeec$/ŒòZ"Oè'΋Y~&Ph*/<„0öÏöë!œ{]›•LF!„¨Ý^\ d0]C/ z«Ù^/f˜¶£ÒmŒh/tÊâ•!"""""¢Þ!®]¥é¶;ʧx"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""ê¢Ç"I){,‘BôÜó¿ïX ¨‰nõ¼ÀŒD·:oq¢´ú3Ý"""J þž à %!)%1ñY4üiNA»Ýê-‰n@ÒªItˆˆˆ(e(‰nõ­LÁu³0DDSFŒÝ,*<Ÿ¢•\T{+¿X¬Š?D…çd¢Ö‹À¢n ±X,?ÄB¦D»ÇD&«ü9ù›Ò&º!”`ysóòŠÒÞ” Ý"¢.ÐCo=8#‰’g$ŧ‚‹Â¤$í§¤Ìsù@½õôÒöN)$ @°½ò‹½aHæµwŠöìzòÂKˆVý~\!ýǤÝ‹€V½IP€íR®·_x»P6ñ–O»˜Ô=&­šôņ5RJ˜ß< @Bä†ì îìdˆ@±öZƒPU[€‚`ZW B„V$þ÷\ XBԶט‚’4U†]’Bh¯¬BÍÈ­[ZgR¢Àóûs¥¶*â±pÊ/Q¤jj¥uU‰ÿ""ê$Ž…!"¢®³¨×“)Ú— TÆ<ÅÌ¢zK‘¬Ô×7‘zùÖöBÉ ã½|ì·-¦.ÄÂø€;ÄR lj’"ÀBo!Œ³Êc–§T&»ù«Úó°µxæfn\ÿ¡*¥„=? @®Û5`vZçIiL¦B•Ò{F¢ûIxl*¥Ô Û¾ ]C UJ4 9Þó«QÏu©M$àêä—øTÕrþñŒˆúŽ…¡Ô5ùþÉï|ùNÜ?ñ>—ûRýü9NM@¶éHz” eªõnÏdsÜN©4%_Ì”(#h¶E ‘ÜìvŠ–ªðbe”µZcô¢<ÊOG´+€ƒQBd7¹=T ¸þ:Z¬G¢”LqÆp$³N¾§È«åD`z—U6,8ìPhWÛ7ŠP¤PÛr2_%NÒEú¾ªæ +ÚX›:},L ¡:BIޱ0EBBˆP{ã>Å~)#€ö ´< @Õ²'úuB ™Æ³hQÙÞ{ EQjïptÓ}ÅBʶ'ƒ”>‘¡ô«½­¶‡›ADÔåzh$¢$Q#@÷¿WfýÔ¨Öð P,p$élë¡(¦¿œ7‹[­Õ."¦S2ô(ZÄ G~á%àUSy-=¤êÑU@±õs–Ç\^;¥Ü1ÓªXgúVèÑ^¬J¬§˜gê ÝÚ gˆUÀ.ëcž”Ö‹¥À\krS ÆK/´ÿ ×t9ÿÅÁKÝi‡ëŒÍØDhEÄ6exZõ´ÕoýUãÑ"[gwJmYmà–€@f~[º¶òž!àž²™´jÒÆõk´\Œ„:èÖœ½‹ÙÊÈL—ùJ‰HNé?V¡*UoS0DÔpFÅIêY³rk~¤ÌšC‘@+p·éÈ"k Fn±Ž¸±…Ö ôæOjuÀ*Ó·¦ð¥@šiAX'õHk @©£åÖ^˜?›àÇ8ÌS™¤uÛo2S/$Ð ¬0•Yh-Ÿ”~S/¤#DyW¤ˆzš ÆM8ѹjÛãÓw̉FÉ› »0°¢ni]ÝÒº-Á-]Xm2ø`ÆuwªBÏó¶46%¸AÐî@"¢Þ†3’(uýæÝßÜðü îƒücðÅY>Ùêw\$Ê}J"úçy¡ÂZž LÕ¿µ-ê\Ì–˜ŒðóõûKóÇŸ¾f­9¬S!l‚†3£`|¦¶Ù=ÑBL1õÂÖÁ ÀtÇt*óä %@³©<¢\(sÉ–ÆÒ®¡íê™CT:È”ºH¢viÏpÛko¼/•ñÎÕèÌKqwÔoûµµY\'èuT^QÛ¤šÐQŸÁù%ŠªJ>Å_³¢mD̈âþ JKšâÛ·ü€A·æ´46 !…PÒÄ€=·ï±U✑ ï¬_ @ø³\'¼ ˜•.eD•RJ¡ø}µ··Dká´êi/¾ÿ”‰¨ø}J–:xGÕŽ½·r\ÍÖ-RU¥"2DÖžÛСI± Š}Rª!jõbÆŒ$dö÷0¦}ÃoÉ=ÔÒš!ü{nov¸nüðï_aŸ>6¢¸ƒ8,¤ !ÒkV4š·rÜþ­;ÈH³Ö5(é› †¼×£™V=íßï< `xî‘kƒkÜœ®¶†!İþǬ ®·6ã©R8jÄÆ™äÏÉBK‹Šïø~§½|9ÚõQ<â0vG´h!reöŽ*×¹©^CD½³0”Ò¸GR|¸GRjÒ~JŒQ*-@Ä:ÖôA®cÎŽ-¿à³~äó9ör椵†|ÇÂ4¶DL†) âÂ6È9'epuÌ™¦l‘ë6R¶Ÿ¿ãƒ®sM Û…R¬×Áb¶Î·²]¨4ýÓ²Æ>p¤d(RÚ–0uUîC6F÷oñ7·ädÕ–Õ¿Áµ¬Šð§ hm=àÈBŠº;-¿ºâZ&¿È¯Šˆ­N! _Í {î*P⃖%úª( Ÿ '~0ãgwò‹ëâ³J^¾ªíÚ,LAIZD C›¸tgwea%ŠT¥€ðKõ«‹£(_mö4 8+Œ&çõ„ð‡ô´ZA‰¿mθiƒ$/õ|UR6Hþ°ˆHýÿGyÌIÚÿ‹÷چߒÛÐØÀ§ø"ª"lùðÁWSebŒ[9îÀ–/¤´|ÒöÁê‡a¶<÷ÆQïÅIDDäÁMú×< ×:ƒÆ–þ(qœk›Ôc¼A¶=óÇŒsˆB·µm+ȘÿP-ÜB”š Hëm¡ß«ÝN13Hn;y—ŠéBÙ>Sä¸-k:Ázam©.gˆy€Ït¡l½Üjús]ô—(iHÅxö7çû¦UOs–ÙQupïòæP0äúG-#¡!ŒŸ&™WÜÁ·»ŸŠˆ‘è4bJ UF•ã<6xl HHU•€ÐJ‰QÈ>rK?{åF F´U.´šCµ]þGÒˆl{5é?ŠJ s €ôµ4+˜å7çŒÿ")!e8¿¤í¿)"„0]mí¾0ÊôXM_¥`4Z ¦cµI¨aã?ÐxŽ ˜eY—?'ßæMª*µ½Ã¿zRÊ|iÎÍt¬1DÔëpu^""ŠI:ÆM‹­™ Öþ>x xÅí¡hûûÌÊ݆¨¤×G ± ØmZæÖ8îL^˜CÀZ¿6~Äuž…-„ùx´^”šÆõØrU®jºuy`Û"8®æ»íW­ý_̈r Ùp´nrÈï?2T·µmse¨ÿ~ó/b!…’áóï]ÞþŽHú'YQ8v¬6UdجÜÑ @Ê@‰/´"¾i]yÅ™mq}>_Ía“VMÚôÙGRU¥DáiÕÓŸþ8€×·…‡@^câL^‘HH45¶T^dŒaôeÔÝÞ`tpt¨n›4¶Ñî¢gæàÙƒ›Â{ÛšçWœƒZ3Ñq«&ŨalþX­›ž@jy(TZÞ   X Õj¡ÔêÿyÅ™B6K UÊA7eì]Þ\wG«þ€„„1FÆU­]²-E' @•B®MU¥¡ÔVE ;|p·T%$ Z®°ÚR×6ÆKiýì ‰æfmð=kÓáÆQ¯Ã”*yÆ´-n5-s }žQŒÑSQ¦¿ë!f~DS¦%QôýŽ]–ÌfC¬G¼„0JBïEì¹zcŒSb‡Xà(ŸÜ½üt ÇÔk½P¬×¶#_âÄÉ©I`KpKQ^™1ÈEj‰Umnm ‹@±’_ä›3Yº;U-`çõ"#ÐVŸŒ{>­-m#D[ À3>ÝÑž1xá¿(,Êz¨¶*b^»¤îNŠVXæÍújìŒ@ÛöÒiþl-£]P•ÚUÏÆI«&feæùŒ B·»¬Ô>´qý‡1¾þýÖ_ã,à¼SZ ­ˆ ÔºÖ¾ZSF¬®ªÉŸ>@ëuK8ê‚;†Ž×#¡(JÝ µ®*\W¥Ö­w²U¾Z}çïÁÆ\6)1ð¦í~^q¦– @h…ª¥`„–6)"S«ß˜•ÖU—ˆˆ’?T‘g1>R š¬fèûÍo¯üÕÀJ 8Ø}üˆÙ HÓW?i7Ä }Ýß3WÛK^hÊ€J hõ¢X ´ÆÓ‹2 ÈB€æµWþ&`P öx ¡ º)jþQ† A¿’d£™‰n‚Á €ü"¿ª¶µ²FjZ 7mø00˺Ã}T‹¢(¶¹µ·ÕŠ­‚ÑÁÑÞ·@šV=mõ[ÑÆt„Ë|dú²›Ã‡…U"JS[’ÇçwN•ÊïDmÝVH Ñ»#óKH@ mEa3ŸŒ1| (²„Þ¸þC˜Ç HdXçRvÅ6v¦íz¨u\ÏýËöJmÙ”Á³ûiK»êL=¨µ>s:Õ*:Ç)Æ$´°¾™º@KÛ϶"jV4æ)Ú¶`°líĵ]r‰ˆ¨W`†ˆˆ:J›óÒnZÁà\Ï¥]Î%]b‹1̤«BÌ?„—|™smvyé…÷ÿ)¢Ä©½3 @J˜*…h›p$%QóŠÛ‚»šsË,+ЉD Q_ÿ¥÷6<ÿîSú´ áœdú ¬Bg# G:¿úD8¬~k+¡/†;èæL­;ŠÛê6¡ªp XH{ÌöÈè˜áO+Ø¿l¿ëãŠh'œ„Ë<¦¿Ï–[ýîÓm³r ¦UÿÀyÊóo=¡õ EÆÊuªÇÅîLm.O # ㋵8ï”K‡}VW­þ4"˜7;³K.õ ÌÂQr1*·rÜ-›åWÛÉü"¿–¬1•oJc¯Ç§hƒPÂñLJFa{)J!!!%ö}±iõ›¢—kû·¥Uo¹â^yvÕ6ܱ|¯Íƒñ+JNnM°pOÁP3rÛÛ#)¾ù\éÈ,„ûdXËʨR®~ó/1ε- kÓ™zœy“ÎÔæú¤ø mîd_=L¢Ý…uºêQ¯À, %/m©—³‚g}T÷ª¶¡Œ*ìyh™ ÑâZc•pÑÇ2xY¤ÅuP„“ÔëRDÛçhÅç¾>£1ö'QwªŽ5qÖÕ)ØsûÛÁHÄ{b•ìL=ΫәÚ^{¸f[ÍVŸâKTȈˆ¨w1vg>$Ç(¶çö=Ú´.#$¤”ÎÅqÃÆˆ(Ó\eŠÌCh€i1›¼bŸð åÀ­ZZEJLL?ùåàËí×®êó…”(ŸÑûÜXš¿¥µ¤Ü»Ø¾ ±U¬G»ªžî¨Í•P„T¥”8+x–ó¹QX’F+¤@^®ÿPcw7†ˆ’GÊea ?8éÇìüNs7Ä”7ÿï³|ãžþ™ýÝ"""êÝ$Ú¶7R=6xìÚàZ×bY™2ÒŒ(C Åi΃ƪµÂߨõØžwÔç -³ã|tÜÊqû7o’*ÂZ2EñqÝëΓVMÚ´áC)! ´m›ý‚–ºýîûg˜•ŽôµÍÌŽÍ9uMÝ+ÐÖÏqK–J|RªBþÚª¨›1wU=ÝQ[l®Ï°Ú*!!dú¡Öžl %\êfaæ^P6nàQ‰nE/QûÚ["""Jˆº;ÃzÖ;Bë J²jV4ÚÊÜœ¥¶ê»Ã86¥ DÄöñµ 8=‚VB ö6¯)˜¶ÚôìJÁ,Í–÷<6¡%g|>Pýé™á–F D·rœ¶ŠaÓ†5Za¡/³/¸/P¬hž‚ÙþšÛ-•÷½ €—ƒ/k]†D~‰ýÓG @¨„ÌÊ+¬ÅÎî®§;js•“‘s¨±A*ìOΛ Ã-`ßòC/£ÛCDÉ#u³0DDDD”$„ßpXKXDÔ¦@‘@ø)…€ªJim2¦ê÷wÙ”ZJä+ÃoÉýrI=€¼bD¶¥`$2€øö÷Íð lï•€ªFò‹}7æ-ƒRÊü¿„ @çœréãx|ÿ²ÃyEŠ6ìfÿæM’´ÐŠVƒnÊh´;;egäÔ¢m²¹?­ Ür@j$(ñÕÞB‚Yw°#;$uŽh©Ï+r_'Ø (¨]Ñ©Ul”¼@¤®Rªù%Ê€Ñc7ÎÜ8:8ºîàv5Ô¶€"ÄÎ`;ù…®ª§;jsúrI} D*¥D DxSξå‡äÏÉjm>ŠâÂ=Ð"JÌ´/¢FvÖ} ?» _F?Û£ Í µ‡k ËÞ3‹¡„×þwç>Û³~x`äqÃOá,#¥ÜÚ`pÿ!é¾t;BÛßÝüfS¸éø'3xbŒ¦~±ãÇ_~´¿~ïÄaÇ8òYiYFmƒrgø36¬k 547Ûk·蟕——™ç¬­¾¹þ£í|¾wÃ1CŽ=iäÉ™i±Ö£d· Øè6P¢”%ºÔy}p½‰.Ãgx¢…–·fûE¸m«mŠŒD`}Ú Ú—M©õ±+ Ú°ÈÚVQêªâKÁ@[ƒf¶ሔPï¬+‰üâ¶¥\žml?Žg›ow5Áš¶ë ¨ªÜ·yS X„ê¶=BÔÜ+ÚY¾§«êéŽÚ\yô‰›>]#U ‰–ÖÃyÅ€ÚÜö„T Œ‘V=Ð"JÌ´o{í¶ `Ù÷V^÷?ÿk{ô÷ï<8÷oE>.Ý|Dþ¨nmÉ®º×ÿùg/nXm>8a豫.{ôëÃO0 5ÖW1ÀêßÈðg^ùð¶Øl<:0wн—=:õèólõo¯ÝvÓ_ÿ÷¹uϳ Ó|i ¾½èGßø©VÛ“¿\}ÖQçÞûÚ] ÿ¹@+PßT¯=4û¼yó/ª4×Q#Á̽û•*UUÚ.þú¥÷^öhšÏeæ6õûùލ7K•ýXâäqŸaê~¡ÛÃ…7†[kྠ”PUØïò˜Dv`èáºÝÒX退”þº;[;Üža³r©‡„¹=yý÷CFÉf| ¿È§ ÕötB #=´Ôž ÝÑ(I“2¬5^_½Fôðù¥¨ Ý¢î öÿk¾NТܨs1”n­§;jsÒžÅ>UKw™ø„¯¦Ê2­»CDI‚Y˜^ãÅOWÿüÑŸÔªpäÀñGž°­fËúÝk×ïZ{î“—}oåU§^ç<ëµ/ýú…e›ä ¹aϺ–p˾ú½ß¿÷ÂG¯þë·¿öÿŒ’›ö}þßž½3ô%€¹ƒŽqÒŽÚmŸîY_ú÷›ßØôŠ¹Î¼¬ÀècÚ_ßT¯(Š–{²-u,!/¾{ê[_¼àˆ‚Q¹™ý?ßûiK¸åokªÃ‘Ö‡¯¬æ&J½’}>¥¾å#¢ž²Y[†¥ðæl5Ü*¡JiÙ{Šý{H›©1nå¸_lQøeÚªFÀž‚ UÙ󑡯ò)öܶmö´êi/¾ó”*#P|yý†m nBp¨½3`ðìÁaY£JÒ—îËßsûžh“¡´‰K%YÙê(=zãÌuØ­1.5|õ>îTbèÎ.Î>†c®óÚ3®¿öŒëo¬¾î‘·îï—Þï£ù›œ VUõ­/^¿èkß­üîò#ް#´ýʇ§}°õݧ?þÛÓ?qÉ ÓºîòQ’©@J=äq–‡,  ðó=„(€¶mUÊ<„X„~@ ¥Bów¤·‹€V½Â[ˆrÓ}/Jë…ÂÌó‚¨wڿ̶eµ×5kM‹ãvÙ2·ÆÌ# R‹-± ï¹}QØ«(ÀX‡¸c—ì3¬:ÂbY“ý]UOwÔæªniQÂCD ÔÎZ\}Ø”;&¼%Ïõëè²a‰nݲç*öÖïQåá+« €ÑÆ<;óõ¹ƒšÃÍóžšåzîï~òˆ–‚•–5÷[eçó-ïl~so}Û›ƒ?]ýöo¸aêl#à„‘“žüå¿ý¾Ždë&=ý¡+ÓR0FF®üá}Úý×6¾Ü ‰¨wÐ’*¤ž‘‰¡ Ð>m5‹½…úßÅÛ ±X/ÙÀ!T=Š—Kô¿}6êgµÛ‹r½¤ôv¡Œ^4éªÝ^Q’Iݱ0‡šE{Híüd]J•ê}¯ß àü :ö Û£ý2úýüô_.}¶ü™ÿ>µ¿a_a¿æGO=ùÌñSm§œ8ò/lxÀ¾†½ƒrxwË[ZUEgßl+<¶pÜåß¼úá·î‹·Ù¿šRœáÏ09vèq¬@¨1´¯¾ý? õ€«ž¼ åñ϶ˆwo_ªŸK'P»*õä…AåÑ—>u]ò¹X ÌrJ¹c}-…mìÉÝŽ%$Ð Ü̉rJ¥[ˆ½XØ~¥H %fˆrÇTì^¬jL%¡÷b`Ù¦ø G,Ù^ŠãÕ3íŸLóD""¢”—ºY˜Ÿþ‹9…®i› %íµÛšZ›|sô©®¢FLÒîlÜ÷™- 3¶pœ³ü£µ;­á¶Õûÿ³ãCÇ 9Ö¶¼‹æÌñgw 3~ÐÑ΃Cò†…C›êœõ¼µ{×~õ‡îîÃú©·zÂ|dÛǶJÓ¢ Ú£F¾À5…¡¥`Œç˜bÊ}4‹[=‡P£„X ìsëŽbPâ8¥Ü”H2¯Û­ÕÀ:ÇAM#p;0Û-„³=1zñ°Õz ô³%À-n­Úà–è!'áHv@o¿¶½½ýDDD½Gêfa~5¥hÜÀ£Ý O6íûL»Sñ̼Šgb-°ißç“Çœn>2ÒmÛ¦œŒ펑ÓѲ0FvÆfÔ€1ñµBs‘Ì´Ey%ßîõ"®ÉÊrÇÀ ëø? ÔYO1眙Rk%­ÀJ`¦©ÌBk F|@«©y¶&Uë­ÍZW{©–7YC˜gë ¨Â9“(híEƒcDŒùQg/œ¹ž—Ë é@™µ-À*`†5D´ÄQŸ#Á®ˆˆ¨7IÝuaz‘µÛ=–ü2d/™™–ÙîYa5¬m”“žãZ fžÇ¡$Û"§ü¬üŽlþ"âüJµú)Ÿÿ¥Ol‘´…c‹lëÀ sÚÅ–¼(ÕoßK¨Ò¿]¤/4ýɹ¸È4…PM!$°ÞÔ$¡§6Ì‹àJàP­»Ø‘å)J!*­½p aþíÚ¬4•·åª´^dX܌Қ‚‰Ö‹ÝÀ*Ó…RõÂä…ë§÷ÞþRÜ3õ'‡º*µ®JÖuõŽ?DDDÝ$uÇÂt€ël ¦°ûîƒ]hHÿ¡Ú{.{D[X7šœô~¨ß¯ø‡†ï }¹Ã‘ÄÑ8“;}Ã꟮¶.AOí©p,–A©IèdZ%@Ä‘¼069ºÙ4‡H¨XWEÀÓ'ºRXöâÜ ¼¼ ´˜R0 °@/0Ç:M úp[~äLSˆ2kˆõ@5ð™uX Lc^l!"n½@ô^hé¤j`Ðb*¯˜69š ,ÖÕV^Ìwäª&Dé…véy1û©äM0Ñ ""¢ÔÀ,Lû¥íoš-‘磡Ã5΃]kÜ ¶™S;j· ì7¨;BY8~gèËm5[\Ýr`sw%¢^CXçÈØ¦Ãk2båT,зp†ž_p¦`fXO Z?¿æ˜Âã aìšdlid>å`ªõÛ¤žO­cy|1{G/ôwô¢Ìš Zo-/ ñÞjê€0´žRàX µ,úð"× %g$µ/Óß6©§æÐç£l}·»0ª`Lº?Àsëžq-ðÇ÷9ï×§ýìÿ~¼n×' qú¸)6íûüõM¯8}äm—¥y¸Â Q*pþ”k3nÌ“t4J”]„æ~·ù Hw$/4M÷ÍùáÈ,MnM\íÚ<:&bê¦3yaî…ÁœHÊt[å×Â\^D¹P¥Q~- ` u‰ãøPk“b¤Ãˆˆˆˆ( 0 Ó¾Â~³Ò³üõÃ?j±lFúØû¿mãËÝÝŸâ»öŒë¼·åí?¼û°íѺ¦º%ÿ*{oËÛ/~ºzLá‘ ñË)E¬€²§çl:h~èá·î]³í}ç)™iYšÂjØù(õM¾D7€’‡1ŽÃÈ2(ÑwY†iެËÇ87÷ÑL ôÊÎñ#¶&Ù~§iYgòB3Èu„h·>G:É}Sí©À¦Æw¢íx }ó)s¤×G)?êè…/f²á_ˆˆˆ¨1 Ó>E(ß?ñG¶×n»áÏ×hãM¶Õn½çÕ•ÿûçŸk£TºÛÜ ‚ƒûPT=ãŽçks£šÃÍÿ^ÿ¯ïßsÁöÚmn˜:++-«cõçe敜w+€¶¾{ÖŠoüá݇?Ùùñóž½áÏ×UÿÂý”¬)å²Õ•ïm}û‹ý;šz“[ã_ñ‘_}ãËõwE LËÊÆH^åµDžÐOŒµç0(4•Bûgûõν®ÍJ€ ¦ £ÇBÔn/®´fãz¹PÐ[%€Ìöz1è¯ß×mŒh/tÊâ•!""¢žÂua<¹þ¬’ü÷ÉÐáÚ'Ö<öÄšÇYPcÀðÀˆÅ—T]ùð´în@nFîWüéÚG/ÛU·³ò™ùKž ŽxÔöÚ­‡šÛÆæ\~ÊÕ³Îý>½3§Îö)¾Ò¿ßüž×ÿégÆñÑ…c/9~Ú/Ü}ü‹æô#§hw–=W¹ì¹Êœôãûú‡Î4€z~P!-_  %z(¿@_£Wz{:]gy­Iq27þ¥qž2§û{Qì­$È%ÇÂx2aȱ¯Í^sæø©>Å ÔÊLËœrÔÙÏÝøÆ1C&¶{z—8ãÈ)oÏ]{ù)Wçfæ†#á »×i)˜ñƒŽ¾÷òGïúáýqý”â§~õüU§]wÂÈ“r3sO=ù†©³^.yÂcµæ-«Ï?õ¶ïýZ¡à³=ë;ß"ê•D<:aºíŽò)‚ˆˆˆˆ’[½k“²ÌºnlmüxÇ'ñt_OÌErµ½vÛ§{Öe§çŒ0vXÞðîwßëwßô×|R¶uD`¤íÑ]u;›ÃÍÃ#Ò|iÝÝ’.Ǫ‰ˆˆˆˆˆ¨ÇpFR|²Ò²NsZ¢[‘ùGŒÌ?¢ýrž=ùÑã¯n|iü £¯;ãµñ>folz@ ;ß5ã34oX¶„ˆˆˆˆˆˆ¨¯b†@åÁ7îžsåäkÌ=»öO~ôSÆŸ­Na#""""""ê fa&9=/+¯®±®ò™y_†¶Ÿ}ôù'qò†ýÿ^ÿ¯ÊÎîOŸ}þüvë!""""""¢h¸. µy~ó?¼ï;5â|('#ç7?zàÒ¦÷|«º×…!"""""¢Ã, }eË/î|á¶çÖ=³ûà.í¿lHÞÐKŽŸ6ãnSxd¢[×-˜…!"""""¢Ã, ¹h‰´ìoØ7 §0ß‘è¶t/faâ¶PÝêy€‰nuÞâD7 iõf&º D½T5°$ßQPœè6¹áº0ä"Ý—Þ`Sï³h˜SMA»Ýê-‰n@ÒªItˆz¯€ ÔI“‹Y„ƒ‰nQÌ‘g­LÁ‘›dÈÅT*Àw,D”¼¸ñ0ÅÔy{· ‡€ ϧh%ÕÞÊ/«âQáù­¹Ö‹À¢n ±X,?ÄB~Àè:œ™JÔ…Œ\ÌÊž[ ”[_ù£MDÉŠëÂPJãº0ñ©à¢0)Iû))ó\~Po=½´½S´·Î  Û+¿hÑ&4`^{§hÏ^¡¿G÷¢U¿WEÿ1i7Ä" Uo’`A{§Ÿ1„· eoùѱ‹IÄ7†}FUô¹?JŒ‹Y¢O·t>©‚ÝÚL÷éÀ~ 8¤Í€h|@ð@"€¦ßÂt_±—¦_^æomyüíFDI€Y˜¨6ÜZ³ylḜôœD·Å"ÔÚz`óмaû b¡“xãÃ,LjŠ+ ³8ìx+ì‹™_¨Ð“/fÁèåWº­â;D9€xBÜ4vsˆ¥n«,ùù1CØÊ‹x²c±Û“Êúd¦»ßv=˜ÞÑÓƒ]Õê º/sÐýÙˆ–Åp½…çÂÉ#˜è‘½8 sÓ7üþïúáý?8éÇ1н½ù}ò÷5Ûß_·ë“Áý‡5xÂ/þgæ)cNs-Vý¹ê•Ï^ødç¶Ø @1zÀØã†òèS¯9ãWYiY]Þï|óžû_ÿíúÝkµëY|îܲosÇ‹Ž›|ÿäw¾|'î‚xŸË}©þ¤zŸA=FÈ6Iò~ºXïö<@&0Çí”J@u;E‰2‚æ!`[”YÀÍn§¸æGb„pÍò f/œù‘Ø!VDùÓ±vor{¨ˆÄÀCÀ둆(%Sœù—¡“/Å)òj9±£‰˜`×¶ƒzƒØYæx™Ç’!ÞÔ<%HoÍÂükíÓ?yà)åªËþï‡ß¸ßûi´ÚFä|äªÇ'ñÍδ¼Ãž[÷Ìîÿ®ùJÞ{ù£Ó']–Æô 'ß{òû»ÞOt+ˆ’žóm®¶¤ØG’ζŠ1ÃH«$ ¸ÕZÏB b:%h1}ëÌ/¼¼j* ô!܆<Ǿ¤æ,­¼ëŸj`é[¡wߨ!(±žRa­3ÝÚ ç{âUÀ.ëa-Ÿ̵(Þk×^H}ù~>ñBá(¿Žb†Ú¥½¾¥;^ÿ;)Z?™ur¸Çá<Áöˆ¼ê•Y˜6<÷“.i7ˆ‘…¹æÑËþòៜpÆPæè€Óp•E¦åcŒ›Ú|±õ¸†¶ eÎõ˜sUF2Ë–ÀòYCØzA±1 ÓaÎÂ,ä.}ˆŽòkþ½ E‡hn€-åá<èzk¬ÌýŽ´.×¢­ðâ×oÃ@Ö3é­@Ð -Àu\*˜ˆ,zYæpËáÊÎ[õÚ]Æð–hY˜§þó×+žàÊS¯ùõô{ã­çT²n×'™i™›0fÝóêʹ+põi3ª¦ýÎV›*Õ›Ÿ˜yÿë¿ðƒ“~|ÿOÿÐ%݉Ëñ•c·Öl9âEÕ×þ£ç£÷I¿y÷77<ƒû ÿ|q–O¶úã}ã‰rŸRGŒ!ßF!h=x&0UÿÖ¶œP0S_LѨÖož3¥rþ„‹Vþð¾ý '=Î8¸çàn£ Ƹ¦`øÿ…_ûΧ{ÖGÔȆÝk¿1ê”Ø ®=\ÓÐÜ•–UØo`ckã ž 5Öž:æŒ#Ž·• ®ýïÎÿ|¶gýðÀÈ㆟0<0ÂühK¤Ek[Dhl=¼½v€þYyy™yÞëѨRý2´ÀþCÓ|iŸíÝðÆÆW†Fœ}ôùi¾´xk“Rîm0¸ÿt_:€¡íïn~³)Ütüˆ“Ž<ѧD×ÑÔÚôÖ¯m­Ù`Lá‘Ç?1­°—ÆQ÷2/«íKª½Ùµ½åÍp¤`”šæÈHS2BK87Z`z?íŒbžÖäú®¥FgˆR`¡Þ[þE[…÷j·SÌ!Ìv„Û¹¥ÖíŸlcrܦrL0-o,Û[üÀ<ë…²õbˆir–&計¨Khù—n›6ÚÑ6…“ˆ()õš,L}óAãUvñ’ïwév¬‰Qø•Ï_Ðîœ;áç£ÙéÙWLþ¹íà7GŸúéžõŸïýtËÍ£Œq­¶èì9Wz]~Î[úÃUðsyëþ ޽xþE ¿ûÛs´‘;Bˆªi¿»êÔë´2»êv^ÿ矽¸aµùÄ C]uÙ£_~‚öíGÛ?8ÿ×§þù½GÿüÞ£ŠÎ™¼x‰÷z4{î>®b4€—KÞ{è­U¼u¿vüˆ‚QÎû\Ë@y¯-ÔX«Õ¶úÆ72ü™W>üm¤’f`î {/{têÑçÙ®LK¤eá?ç?òÖ}uuÆÁ~ý~9¥hÖ¹·f¦eš {o uéx/[ ,¶f:s¼¼âöP´ý}æånCTÒÝR0ZˆUÀnGÖ&ƈôùnãØµñ#®ó,l!ÌÇ£õ¢Ô4®Ç6TÇõBM·.l>¥Ý^Øš”íHÁP4œÀEÔÚ‡‰æ_Ì´\LE/\»—ˆR‰’èx5´ÿ°®øã{s×ç¸KÛ-¼~×'Æ7°ß Íáæ76½ZõÂÒGßyð¿;ÿã:=êœ h´^rÏyO¬yL•.ó.Ùù£Œõ’‚14‡›¯~ä‡Z €”r’>ˆæÅOWŸ¶üëZ~áÈã/úÚw¿6ìë>Å·~×Úsïœüð[mkÙ¤û3F3zÀmîLnf®öm~vA\õØüñ½GŒ €ã†Ÿ ¥`:VÛk_úÎÝS·Ø\3àëÃOH÷§ØW¿÷û÷^øÌ'O™Kl:xá]g®|ñöºÆºœŒœÉcOÿæèS447,_½ð¼Â\¸c¡nÔkÒ¶ÔýnÒ¬‹ú¢d4SQúàã”Ø3öËEŸ˜#ôåuc¼ËŸ ±ñÂ( ½±Cäê1N‰b£|pKôòÓS¯=öB±^Û˜ÿäÄ¿™uØL ˜)C)2Û-GD”½i]³ÿìX3åŽIˆ².Ì·sÖ›^<öôgoxmÅóKn{®BÛPI3yìé÷^þû#òG™Oi7_óèOžþøoÚ·¬ÀYGŸ;õèó§Œ?{ô€±háÕ×=òÖýŠ¢¨ªúíãþßå§ü¬öpÍ'_þgñ%+Ô7×OZtÔÞú=ƒûùÍ8oÂ…ÚY[l¾üÁK?Ùùq†?ã¹kÍ¡‡ÜœÝÔÚtÍ¿ºýû¿1Æ[Ï®º‚#(Š2 §ðú³JN1éµ/9þì)ãÏŽ·¶ÚÃ5cæj÷‡FÜñƒß^pìÅ[ýⲥϖ8eÌiÏÍ|ÝhpÑã¿xøÍ{LÿÆeUÓîÉIϰ­vëœ'fþë“§Ü9ým¬P.Qp]¢NY̪۬§•@p4°!úø›J}ã é-„¶îï™À«ž×e¬ÒVÏ!–­qö¢ÈBQ¦G9­ê!Àžx.TP ôw,šcXÿ"¬©@2™·"ê( ,I², ]í£í扼"ñç÷u>zú²ãóŠÄïûέO–ä‰@±râ¢ñgW2ôæí¬‘só>þò#ÛYªªÎý[‘VÀüulù¿üãUÏ­}¦5Òê½…3»V;ý¼;O‹¨Û£óŸšW$òK|onzÍöP}Sý¸ƒóŠÄO¸Ä||ðMYyEbÖ_®ïL=;C_ýú÷úu²U5‡µ½òÙ‹¶S¾wÏÚC{îÖŽlÞÿE XÉ+ÿfª­ðŽÚíZϽóÔ_¢HôOQo¶åÀâD·Ä¬Üm¶&Qrè53’âÒÐ\à¥Oÿ}÷ËUßuÊ·~úá­Ÿ½Pôö¶%¡âsç*Šr°éà]gû.„XrIÕs3_ÿÉ7¯ЯÐ8¾£vûß}dú}Ÿ´h¼m~ןU¢ËuV¥zßëw8ÂE§Ž=ÃV¾_F¿ŸŸþKÏü÷©ý ûbÔÜ™z&ýÚ¹ÇXÍéLm'ž|æø©¶ƒ'Žü†vg_Ã^íÎ??yJ»æ·\hÿÅ8<0báwoÿÕ”¢Ë¾y•”²«.u; ´$G.¦Ü±¥Q’éËË<4‡›(õ÷_½Þ¶Ãª_ñ—}{qCsý}¯Ýýá¶÷þüþ£?>ù ÛY§Œ9í”1§øhLJ/öükŸ¿ôöæ×5°­fëe\ZþÛn<;ŽËãe;²½v[Sk€oŽ>ÕušFLÒîlÜ÷Ya¿ÑjîL=έš:SÛØÂqÎòGŒÖî´†ÛÖð|ë‹×ø}þÉcNw–¿æŒ_÷·Õlí’KDDDDD=ÄÈÅ$d±ÞJëfÕLÄQ²ê›Y˜¡yõÍzn½°ÂHÁæ]PñÀ¿SUõÝ-o9³0†Fœtˆ“ŠÎ¾¹%ÒòÊg/T>3ïã/?PöôœÉcN×25^Œp¤íȦ}Ÿiw*ž™Wñ̼çnÚ÷¹k¢óõ8ó&©m¤u‘MNFŽvÇH£ì­ß`hÿa¶ÁAn!ºæQêù\Œ¶AuÄz°ï-ý'—ÿ@H4 ðdzº%ZŸÍÂhwŒI1fìü#òGm9°yÃîµ^jK÷¥Ÿ7á³>?ø¹w½t€ß½úkY˜ìôlghGív/çø2«dgêà?Ò™ÚlÛKGs°©€y¶W4]u‰ˆˆˆ(éÝêBõQŽ÷L.¦@”uÇ%Pø€ * R¿c»€t»…ã[×bÆm»b×ûÖ6¡¿ 8oÕ«"¢Þ ofa†Fhwúe五;dËÍÆ’"w¾pÛk;phÿk³×ä p=ŧøn¹ üþ7~ÛØÒ¸vçÇiÞþCµ;÷\öÈ9Ç|+FÉœô~=POwÔæjXÞˆõ»Öj#bÞ""""ê¬ØŒ\L.PÒ¥q+p™¶nb0ßB5c¾•Qn߯(ìzJ׎“°ˆz‰¾š…©Ýù`Û»FFÆl[íÃmCfšÃÍÚl£§ÿû·+'_­Úìôì1Ž\·ë“ÖHKgšg¬³£vÛÀ~ƒ^OwÔæjìÀq/lxnÏÁÝ5âS|¶G7íûüÙuÿU0æÆOíÆQ·€ò»´ÎŠöò/DDI¬oî‘tñ×/Mó¥A_Öf[íÖÝu»œtÄ7µ#§ŽýíÎß}¸5Ò­ÚíµÛÖíúÀøAÇt¦y£ ƤûÓ<·î×|ï‘ó~}ÚÏþïÇZ¸î®§;js5nàQ"jäåÏžw>úÄšÇæ=9늇ÐÜÚÔ!""¢ÄPôOæüê_±ÿ¯J«»ô)TêíCŒp»u=ã6®ÂŠþôörëÓÛãÓoÀoºM ð€È²t ? ú‰@sýˆz¾9fD`äO¾âÿÞ~àþ×ûíã.9ãÈ)æGƒOÏÕîüpÒåÚ3ÇO=a䤶ðÎæ7/¼ëÌG®zÜ9‚fgÝ—¿üã•ÚýŸNþygšçS|מqýÝ/W½·åí?¼ûðeß¼Êüh]SÝ’•m¯ÝöùÞOïþñƒ=POwÔæjú¤Ë–ü«,ÔZ¶ºÒ6Ϩ¡¹á÷ï<àäQ“åÐÝ¡ŽXìNt(QÊÝê¼ ŽWŽÏðžTšèPZtÔ’ #»:ùb¦=‹é‹Â¸¾¸ñ皈’Rß  äÜ[|Н5Òzùƒß{ví?šÃÍ[o¬¾î‰5^¼ä˜!òwýèþÜÌ\ïo}çn?ñú?ýìÞ×~óöæ7>þò£êþüÇ-§/?þõ¯˜zôyß9îÒN6oîÁÁý‡(ªžqÇó‹["-šÃÍÿ^ÿ¯ïßsÁöÚmn˜:++-«gêéŽÚœò³ æ\PàÍoN¿ïbc˜¡í?}èû[k¶(Š2ç[¥=Óêˆý€äWª~Q &úY”œ_à3œ¨ëˆnÿâjP¤¹Ê‰=H‡ˆ(qúæX£ŒýÓÏŸšñÇ+jÕüèþïf§g-÷éžõÚ„£_œ9³èœ9æòÇ ;þO×üýÚG/ÛU·³æÐ?¼ûðÞ}ØYíYGóèÕ¢³¯ë¹¹\ñ'-\å3ó—<7ð¨íµ[5Ò \~ÊÕ³ÎmAù®ª§;jsuíׯÙþ~õûX½îŸG•]8Ö¯ø7ïßQ#æ_XyöÑç÷Xc(n‘ö‹PÄ7²DDÔ®ÿö~p‰¾a³«D”ÜúlÀù/zuÖ‡7V_÷æ¦W·þdçÇÙùלþ«yV8ËŸqä”÷nÙp×K·ÿýã¿®ßeÙÄZqò¨É??ý—?üÆå]Õ¼3Žœòöܵóž,yê?©oªß°{v|ü £o:þ´“~ÒÃõtGmN~Åïe^tìwËžž³µfË–ý_hÇݳ.;=gô€±Ãò†'¼žî¨Í)ÔZ»óã°>zðckênLç‡5¥nIš´Ÿ’2Ïå+¬“˜D{çVuÖ#éú6c„0?Û ±hµ6)]¿ÞU!–ÍÖòiíõ¢Üú§Zï½úm»½° ÆS8uh×3˜èfõRx8Ñù'm½ˆˆzPJdaˆ\]õäU|üHÜ?ñ>—ûRý\$5Å•…©Ô±ÕítmÉgçó*˜å”r·ò1†·Ü­/id“Ìq)Äß‹åÀ!·ã1BÄÛ‹•@Ûñlàæ(§8=—L)¶ÍP4ÉöR¯žiÿD`zœ'¥bÛ/JÓâAÚ£±GÄØR0Šuø‰ëˆ˜xC8“B?E¹@‰ã”rSµÂÃp•j`ã ¡0»Ó!¶Z˘OwS lpüÇñW±+…£ü:ŠYð°-þ¡yÝm%PÏi›D”¤úìIDDÔ5\·•)×1ئðøþÖåÖo%°ËšC)µþRjVZOYh ¡mÑfMÙšT ÔZMå%P,w„°M§ê3„Ö;B˜{ÑÜf-`ž±¥õ"ÝÚ*Û…zÉš‚u‘ ´«!Ö¹íˆDDÔåjõ¢r`I¢`PÔè;X%fa(uågåwd4˜ˆó+Õê§T`¬Y»X?b›Â£-[ d[n˜ó ¶tF©~kü^’@ ðþí" bJ^hãqn2M!TS-?â)c^W‡€jýÛÅÖ6Úü GˆJk/\C˜»6™ÒIÎ\•Ö‹ ë›B¯˜ŽGëÅnS"f‘‚?¿¹æ§zûKqÏÔOdI‹©ÊMC,™z&¢dÕC¿B9#‰’WçWçMMÂmF’y:LÄšQ€¦Â•ŽÔÆëª(Ì0´†›¼ ´x!€RGˆ3©QB`ð™©0å;œ!ø½04f/&›L½€c˜Åú«?0ßÂ6Ä¢L_Á×è÷z!¸:/Q'¬Zhï­zrŽ’*ƒþWç%¢$Å, ¥4faâÃ,LjÒ~JÌïe+¬3ƒ„õ[ç»ÞE¦Ô¬Ùg F4ÝW‘8ÊÛ¦ùØšt„cÿiÆâ³Žåñ¹…ˆÑ ýKÌHÇH™v?T8>E˜3!ÌËÌÃŽ\/T0JÍ)ŽY˜ž·ÈšÖ¤^M‰2÷GûÉÊèþ\Œëzêè\F/ÿš à4~ ðaÀDˆ˜îPõßAŠãVX÷¹3¯f;(ÝŽ‹˜I&žˆz fa(¥1 faR–ók¾ Æ? ­ãeb¯,‹(KÞã\\EKa8“š—€Wãܨh¡Û‡ dDÙÑÉ5„3«eVéöéT…ÀõnåW»ÜŽ»¾F šâ˜…éyÁD7€zL·Ž‹ÑÒб?dÄ›Å0§Bzfaˆz ® CDžùÝJFžÂÈdÆH^˜oºo^>&Úûòé@^¹"F ŽÕX gy\S0¦¹ŽíöÂçøû…?ú¦ÚS#L1îÄx—¼À±â†Ò¢¤`̆:záãñxôÒ[D½‚±^ÌÂ.­¶z[w\Zo¥ÛA×ÛÞ¨÷¶œ(Å0 CDžÝÿŠüê_®¿+ÊaZV6FòÂ(¯%ò„~bì=Dg…¦òÂCcÿl¿¹׵Y À”aôBèÚíÅÕ@Ó5ôr¡ ·J™íõb†i;*­aÎéTÆ£äŠW¦ç%üe_]øû?ZËnÏY,^izå‰"¢ßÆxÈõ6®ÂÚõŒqKD½Aý°rF%'ÎH"êÆô"……idx——OñDD=̹:¯FËG,èΗ¦¥@“þRéJ¤c}8j«ºøõÛ0„t  h à:¾ØQg1 C)Y"""¢ŽsÝ#©»ó/f‹€p”DL°G@D'¢@DDDDD½Ÿ9ÿÒîìË®¢M ] ´:¶¢#"JJÌÂQ'$$ÿb¦­ŸUÔëû9r >%+ÎH¢”ÆIDDDD· ØÓƒó¼¸ hÀÝâˆ(I1 C)Y""""""ê1=´S5?ëRâÓ’ˆˆˆ¨S^&º DD½ ?…Q‡h{$ ÀÌOtc4K€f@pF%)®ÎKDñXª/zG)e0#Ñm Î[œè$­~ÀÌD·¨W“@(Ot.F[¦%q "ò€Y"òLûãWyJA»ÝêüdMM¢@Ô7$0£-Üdz—·+D”¬˜…!"ÏZùž†ˆˆˆbêá\ÌJ ìv¼EIòu$ð8 é@#´~ ðaÓmPôñÈŠé[Ûí‚Dö‰ˆÏÄûCïo¸¾T?»§& Ût$=ʆ2ÕÀz·ç‰29n§Tš’/fJ”yFÛ¢„Ènv;EKUx±2Êøö½(òÓ-„¶±«kˆlà&·‡*£ 5ÀCÀ둆(%SœyÞ¡“/Å)òj9ÑÛüA§rþ°‘Ñ7OìÖí«—˜2òÑtrÒϤ$óú,ÐÏ5ÔÖvñ›nÓ€0ø€ hFèèOõÌÂPª &ºD½…óÏkÚǧŽ$]…µ¤bK"€4àVk= ˆé” }Šqº-¿ð𪩀–2¿ûÏŠ­§˜³<¶òZãˬå«u¦o…Þ}£†\ ÄzJ…µÎtk/„#Ä*`—õˆ°–ÏæZ ”Gïµk/¤>Â(Er¤Dÿ I±u8 C}‰kZ¹[ó/f·éT]³óe.g%ÿADDqÒþòYa=XîH=”ZOiî6YdMÁ(À-Ö7¶Òš‚œ ªV™¾­0…€(ÒLØ„uR´¦`”:zqXní…ù¼nq,|ožÊ$­Û~ ”™z!f`…©ÌBkù4 ð›z!!Ê£|&!"ênÚ‹mYOíT=(†¸}¦ák %+Ž…¡TµPúÇ»ž|¼KZ'[ýñnŒ‰rŸRGŒ©æÆ_ƒÖƒgSõo+¬yŠ`¦>’ܨÖoz¿¾h2•÷éûnšCÀúGxÛ„ ¡ÿŸ½»‘%;ïûþ=UÕwºçe÷î›–o×ä•¥å2¤•,2¤UŒ p,‰ãË‚,EA’u"A€„Xâ‹HÎÝî’”(ƒˆ3qBëJLÄQŠsCÙ!%yã Ö’”½WÜÕ’Ë]êîî½wfîíªzòÇéSSÝUÕ]ÝÓÓ/Ó¿÷ÎtŸ>çTuO½rìöP™NYþ$‡âÓ¨Úþw€† z²iб0 ÿÒÄ/Y]½¨±0"²’…‘ÖиýäOÅ(¿fÐÈŒ˜rø :gg$¾ßòAB5¾`Ã5ÜRIL3ˆÙ*Aj›™Fä*ƒG^ ?9¶‰n)ZT;-hä÷%©ÜèVgsŒì¨hx?T›(VYªÝ ?p¦S* ©á÷Ûþ²»!²¦>W–)ósWÑ﵈¬.EaD¤5Ea6SõþÿWàå†ÝJN™ښ]CrÙ‡†'•Ûº~jR#™VjÿúPÃßÿ›²ð6mÍ)rþ«ly+vê²ðޤ7.g‘¤y+²º÷ÂÁ+àþá÷ú¿á…9{>ÿÞµìnˆˆÔQ^«z‡ÿ³Ã#,<;u!ÿÔ5TÞ´¾Ï/†Žtà\]Æ—|åpv•âñ¦é¿Â@#õtæYŒ4Q~¼i+ÞS:ÍŽ Õ©]émpwéÇ‘$8µjÿøì×Zº¿î)©Ò.‘ZÁ_¢·)#"«KQimÚDr†½³”æ–0Ϩ6²àý0¼v8ê1qÆþ{! s\ÈøøÎæò÷Ã+†iÓDQ’°ã›Ø )^2¾‰wWÊwàÍåß;¥­n¹Ñð¾½}ì{!U,2³Á%xpÅb1 §-Y%ºî‘Y}îë½{rq> /ÁwÁ—›ÇŒx:!ûI›&|Þß„ϵÎËø œƒ~ë&…þ”[q nÁµkÂçYx<7ÍŽº.ÃM•¤9…‡§Oº "è*n%2«òJÕqf¸DåïûK쇈H#EaDDDDDd&å(Œ·¬XÌÃÐ/ý¨5’DdUiF’ˆˆˆˆˆÌI¶ð9JïƒK•±~+5CJD¤DcaDDDDdš–“u䯮ŸxÚãbƬÙWŒ…1x þ lÁ‹p2¸ ô!†bÈ ‚¬ô}¡ôcñ¯_^­ö_J?Ò\¬\f|1õÔ³j»ZDæGQY ýew@ì4b1ï‡ëc@#በ±¿ìˆH ZòDDDDDDN‡,ó¾¹ÖùN*c¥EDV‰¢0""""²@Š}Æ4E:üµ[n*çáE°9YÚÌjYl⤡j±–õL‰rˆKÆaò”ˆ¬<EDDDDd&Õ5’8ÍøKÙGà¹æIIÎA HÃ÷]¸{° 7à¿Ó͈,<"""""2“‘(Ìbâ/eƒ/7Œ‹Ù_TDD¦¡I"ÒÚGàËîƒ,Ë{—Ý9¹”"¡™>á"'´øø‹÷6 ߈ˆ¬6EaD¤µtq#²ÎÆ,&²É6m ‘¹[Vü¥ÚàR)ÍŠˆÈJRFDZSַͤ YiòøÓ¥Æ_Føqm—–Ü ‘1…‘yóÃÂýê¤ïiÇù@Ž †_lÑ„¿ÂŽ ƒ÷¶hâ!Ha®BïiÑD1ÇÚ5ñ0ôÃV¸vM”ïÚì(¿¾‰ÞÕ¢ ‘Sõ¶ew –æŠÈ ‹–Ý9[|ð"‡¬4QŒ_Á …÷µkÂÂø¬‰M¼/”¼ €Á#-šÈKé'6ñô°Öb+.…’ÖnG[qvÔÄ­9mƒà£ËîF•Ž"²ª4Ð\6Õƒ!E´¿Ó¦8Kõ×.@ gžÿ ´ü»âƒ!x1RCÓË}Êçêçª ooxÉ¥ºòc†·üjCJ£üBÃK¦ÝеºÇÇ41íV|þ²îñmøù†—Tí·.¹Q\éߪЧµ˜þ¿aUÇAÈ"ù5’8øvøÉe÷‡0lpÌA[Dd©…‘Mµ¿ìˆ¬‹¨.ñîºȃ¥äAþY+ýX½ ÁDÃécÏÁ;OÜD5xQ¤bu°?WyÉ¥Rµ#y[k›ø|±ò`aþÇ7ñQøóá2å—ŸƒwÔõêË•7NQÔZ‘òÏJQax¥ê¥ÇbþuÞ_R7DDÆÒŒ$Ëê¾.UfÐŒ\û&pÓp‘\‰_Ž¡¼gø¤Ô‡¿ä¡R"è ƒFºô1¸<üÈ~©¼Áø`¥ îÕMc›0øR¥‰òV\…÷x Ô„ߊsýÙQŸÁ0œ¤Æà|¤ÒÄK3ªlx£DDN‰ŸŽúµeÌQzö+Am‘•¤ã“lªâ>gÕ†¯{ýrö4­ãë †«<8¼„V2ì~ äI¡2³idJNY‰æ¼6üMõaHKUéoßò¤½òMX)½.¡¼«kºø{þû ß¢‰¸´È¥†&Ý?S·ua÷Q¸>šywØŠrP¦i+¼î;ªÔïoµ;jÝÅ‹©ÿîYÇÂ||¦Ê úó†)™ S;‡ÔÛ?å¦Ë>À3°7à:pèC iéß,ŒÂ‹BçË?úý¡©ö_†ÌKDZEn²ˆÌJQiíÛßHÕ{Ôò¤žs…D¼ G¼‘9DþÙ¦‚·?ÜÜÁàFë&|¨b¤‰„nhÂÁÝðoK[AefÐH˜)®lðʱ[ñøJi+¨dyÜ(ýè#YM£Ú&ÞIÅ&( Ó†ßQûËîÆFÙ_vdaN5óÐðq»ÚtË(ÆÄÇ×¶RGÚýew@DZPFDZSf3Œa¡2Ðà ÿXMkòp)4Àð5k5ãí—¾*‘Þ])?2Íg¤KßQ¹)ÿ)5®kbÌV7URÌTãLÌÿRÞŠª[Àšr##ehŽU¡«óŠÂ,Þþ²; ‹WŒ‘œ‹‘²xµgY=Ê #""cUƒ>KqÏ_Ä;¢†ë¿wARö÷Ciª!à ¥ïG">ÕøažNµKÀ-uƒõ£cŠ.•ÿšZå)¶¢P¯të²üŽ4Q.ßt¡üž†Ó²ƒ;*!ÿø+‡»T~³j·BDdÁìÎ5¤s­m1ÜØ'ù·öÁ••#"Í4FDZÓŸž6VmÔàÒð`ì1«,—Ë—YQj}.OÙÄȼ!WÊ\SëCpeú&FŒßŠ†ÜºSí(†£6ã·¢Xjªh¢v,€0Öþ²;°QŽiÊZËázÃSl×­7/c2ÂP™yM3)©6KKùGŸÛ%)ýÛÎAzp®Ãk-%&"£…‘Ö¬²@Œlˆ¦á!—`+¤•ÝoQ’ø3OíúÊ#~ž/-•Ýf µõøkâ-xû¤òÂ$á/«û-š(ælµØŠ÷Ãa¸doÙ„ß ?Oª ¿0©ü¯ÀK¥SzÓŽªÂÄÓ0~‘™•Wª.8Ø9ÍøKYS,F¿×"²ª…‘“)‘´,\þSäÜËox"" 6…Ydü¥ì¡ºiJû H *""'3ÕÍÿÈ4ø¹—ßð&DD–eYñÏçy`xg‘•¤(ŒˆˆˆˆˆÌ$Yvü¥ÌgÝòiì4SDDDDDDDd>¼ìˆˆˆˆˆˆˆˆÌ“Á/-»""k%^vDDDDDd=Ý Wá‡áGàÿ\vg<¿ÔôŸ]vODDêDËˆˆˆˆ¬-ƒkpiÆÅ\‚B—DDV’²óŠˆˆˆˆÈÉø¨‡Å,%Yï¥áà‹¢0"²ª…‘i< ù²û ‹wÜ¿ì>ÈɽoÙXY»ð3ËîƒÈÙ°”XÌCUÂ.go¥jƒÿÎÁ\sp Ü€ú¼{É}‘6…‘ÖëúãÒFúƲ; sqcÙXY¹ìlšýew@æèJ݃ ‹ÅøÉGió³1dAQøžðcñ¯kþ—Ò7cŠÿ¶,V­ü¿—†·îö4T""ë@Qi­¯Œˆˆˆ”Œ¹0(Çb:ðι¶û0¤cÇçúÙI¾@ùß,ÈJÿÚØÞÌñ…mšbSžHi"kBÙyEDd¬þ¶ö~x> ´~‰/ù|¬]ùGáaøÈôM<Ðú:ÕoŇàáSkâ!x>8}éj{~ô×c‘Så‡r¼r®u>©ƒÃt(Yú}‘ÖPR˜äOïm]þCÃÔ¼gÒK.……EýŸ.÷'•Ü(úîÀ»&½äÒ˜sÚ5ÑßOÕD~M&6ñ0ôK£Í£óù/ ]ŸØÄˆiËoˆÙv¦œDûH¥¬…¦wÓƒo‡Ÿ<…FGŽêµ­3y@íçѺþ¨2%*WúÑO¤ŠKß'ARØ‚>Dp®Ã¿÷é®Ndè÷UDZSf3M…ù T®‰ã±ñ…Ú%E÷›Ë¸.‹Çø&ü\úöM¼O¹‰Gë²,%ð‹c›¨æžlߟMv&£0§ãø8o;åVd-|^®{<:µøKÙÃcÅìŸrë""3QF6UùOÊS™öÒö,Õ¯?]n&ÿÇÌíÒ#ç”ù|©îsâ  ¿P÷’!¯{IÔ0‚æ£ðµ†&zðóu/©Œi¢6ÊÃØ­¨ÆGÆ7ÑtÓâ÷ó߯{êÁR.ƒ6M…o ?rµ¡ä†+ÿ»pÂCñ†-ß @ŒÔÐ)+F/–õ¦S‹ˆ,ŠòÂȦ*§C›êk††ÎLý²±r¸Zúz±nBUB0Qi÷QÝ2É ‡`¶J·²y]—χ`\é$fp¿RyɃáÙ‘òþÁK•òÁ¸ÊV|¨ò’†»4²Õ&>R¹c)Êû­x´ò’K¥L›­ð~mø]S¦IñþÎñP,²™"x-¼g±!àð^8§?‰ÈzPFDD¦duQ’KÃÁˆ÷Ñ0èï–y²ÒK"xÇðˆ›‘& >7|Uí›(_s¿)ýø@©  ¼:¥»n†C_Þ¨÷T¶âeøàðV”§é9xGeùÁ‡køÆpù}xïp æúp¬ç¡áòx$ñƒ‘&.) "‹µ¬øKÙ;ཥ#°Fü‹ÈªÒñI6ÕCáã_;ÈŒxÊò«Vÿ´ËÓg ßËæŸûÐ÷Þ~ðá‡Ã#é„n…ŸGàF©Úr>”Gá¨T¾ÈÆRn‚á©#‚^ ÷Ïur—š™ÝÓÔÄ•¶bdU¦S•'=×KåiØQå(ÒHËïѽWnâÁá2¾6SÞÓéùOøÈ±wÚCe:eù“ŠO£þiûß&èɦ1øÇK ¾Ôú\o‘ò\Dd…‘Ö”w3ùE1Jåd¥OBy\‰ÿq~n¸†‘øB<|ËWÍz[/Øp ·TÓŒb¶JAÚ&ÞW<òÚÊMÅHÝR´¨6ñÈïKR¹Ñ­æÔÙQÑð~¨6QNKY»£:ánÙ»†Ô8“ÙyEDDdU) #"­) ³™ª÷ÿ¿/7 ¸èÂÛ+Öæ.¡4‚£ê¡áÉDå¶î€ŸšÔ„F¼·RÞ7Qû÷ÿ¦,¼M[AsŠÜòòO#[±S—…w$½qy­Sš·"«{/¼î~p¿¡ÿNQY å…‘±ªwø?;<ÂÂs°S‚ñOýPCåMëûübxáHÎÕ…`|ÉWgW)¯ ^ø&\å~üHí<‹‘&Ê7mÅ{†ó¶BzÜ]úq$ N­Ú•­ýZK÷×=%UšÀ%""" ¤(Œˆ´6m¢9ÃÞYJsK˜gTYð~^;õ˜¸†è{ÃúDQxaïl.?¼bø‘6M% [1¾‰½Ð™â%ã›xw¥|ÞÑ\þm°3¼6SûUìÛÛǾR¥‘Á"""²(ºî‘Y}îëµI‚øax ¾ ¾Ü<~dăРÙOÚ4áóþþ |nRð¢ÜÄ9è·nâQèO¹—àx\»&>WàðÜ4;êV¸ 7U’æž> ë&ˆ «¸•ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈqËˆˆl4[vÐõˆˆˆ,J²ìˆÈšÑý’ˆˆˆˆˆÈl¢ew@DÖÉ*„`DDDDDDÖ”¢0""""""""‹ (ŒˆˆˆˆˆˆˆÈ"( #"""""""²ŠÂˆÈn^v€¿³ìˆÈ|}nÙYEaDd ç–ÝàËÌ×-ËˆˆÈÂh½W™ÂЬ‘¤#—ÈY² UDDDd14FDDDDDDDd…YEaDDDDDDDD!YvDDDDDd-yV*¹’ïÕJuID¤ (ŒˆˆˆˆˆœÈŠ>V!Û·ˆÈxŠÂˆˆˆÈ2-ý¶MDæe‰±Å_Dd]èÊGDDDDDf1&ö±°ÛŒ¦>è>GDV“ŽN""""²8³°QNõfcüg©}Ógæ3©[;‘µ _U‘z+’æ@äŒ93w¼ÒÞܤúÕÒ Kd-h¥j‘qL—û""'3ߣ¨ŽÉ"²Ö”WDDd2‹™Žœ""e:*ŠˆˆÔSÆG‘ñæ•™eîMÏ‘Žù"2_:ªˆˆˆÔ›x‰¯“¨ˆl¸¥G«Wa‘&‘©ÌóèdìA¼ÙñØk–ÍaÜ _`Ûñü’{#²Tš÷¾.t¡/"«zªZÊ!±öŒ©ƒ³ˆ¬¦“ Ké9+ "¢ˆ;O° YAÆ}ðÇQëò½lìeÌ­Žg}É”×i]¿,Œâ"µt­/"›©|a°ô#áÈUÊÒû#"RëDG'£—Ž];Âábh¯.kÁè¦XDsØò%}ºãïß¶/£(ÌÊSF¤Jú"²±V0syùÃ""+hö5’ÂèÎÅDe˜a€aÛŽƒ¹uY–ÊØII§}•Ãlp.l:!ÆEY‡Ó‰SDVŸŽT‹tzQ`½"3[Á_Ÿì’ˆHÙŒQã–ŒC áï˜×;ž)“ÑÍ1ƒŒÜ¸ÝñÂɺ*+"ŸéU~ššK‡·…rÆ/ë*2­ig”Ѱ0óí½F‡‰È†[Á±0ž­d¯DD˜9 SÁt8¢‚bŽRº†–sí”õfì¦ô×î†%ãš•ÆÆÈJÑÍÙ0ñWQÁio¥b1:…‰ÈŠ›% cìd¤ Ò¾¼¾6ãÅAÞ0€ÂèfDŽÌˆcÌÕå1n‚;®Æ]ð\NžCBÇqµ¹Ÿ»)ý Ážã¹±ÛuSÊ[VgŒ=èƒkhºÇ•áÇ v2Ì ºÁ›é<èýD˜áb$•¶ºÅ÷9朘÷LJ`€¨EhÅØÎÈšv‚ˆœ®MEDä”,=£sœˆ¬…h†×ääá 몑ÊG%D oyÊØîÓM1#ËÁÈRò>[Fo¤dF?Å22c?¥—ñõ”ÜuRú)]ãŽJå·¦t3ú@>XÈ)Ëx1¥kÜ^í§ÑKé¦\îÌö";*¯?ƒdä)–…ˆƒF·Sº)™w#ÏèõÙª­¤I:ØyØ–’§ÜHé;¥>XzP³K1ã¾ñ•GD NɯjÑ—ÄòòŠˆÈ ¹Ö_"2GãVî8[ŠˆÌf–k?ÏÈßáúl5+[ûT¬V$ ±9*î987TÌYé`›pTŒþ0îÍx¢xÖ…×2¨¼ëx±xmŸ­rmE7BgˆKÛxªñ;Ö5$OIÙòmÏöÙ*úYôÅù’q­×0*ÞÐR÷F:yãqo¡ð`cÞäx¬Mý ;9‡Fn8¿o#-¡%²pºN=9Ý·‹ˆxãÏ) 8Z®KŽ³Åœ|Wj“E¤É,¿ªÅ8‹„h†i#F7„0œ•F=Û¹aâRÍ!ðá»ëâ0%ÇØÍH«ñ ¢|y)eã–4¬Ó•+Æ­>öQÊøÅ˜Dap•ÊO£33DaFº1¼]Ì[ÿvï¦ÃÅÜ\Ì“*êa¸Ñb%éö+Uý$Dp Õ8—ˆ,ÆÒ¯›Edc)¼iN霢R•Nß"ka–I.ü;[æŽ, ߈IÊO1‘Ñ‘’«-'áÇÕ8jªiP.âGJ?^N¸)¬¨}\8åZˆû”–Óv%ìù8QV¿óïÌTŒ½P›•³·8|Í|zb=áÝt1o*§ªqÄó8’¯qƒo¬4ÀÈ…  9d•ih"rÚ4CDDcîÓ…4ÿHDÖÚÔQã^|3 ã|±¸R5—­ã •øTÍ«G½ÎUž õ[Ê'‡+>f7æ¨4¬ã¢;~vtø‰ã…bKÝÓîÌônÑ gÃùV"~ æ¶„#WŠ+5±A@$ªÎ*rÎã&í[¥™MI‡#ÿ•päˆÃ&äEPIDI±YkDD ³å…Ù ƒYÞ:qÂˈb>‹#JV ³`ŠI=IifP©3~Éñ$£¢$qµÉGŠiG.â-ÕŸ62Js¯N¯3L?#©”ÏÅ…Ä+ßîx²¶ò©àÙ3rÿ^W·¨åŒ$㸒AŒU÷XF7¯Lz‘e)BȺ\ö–¾Þ‡È™¤Q EÓ‘ÚЉFd£œ0/̹‘•Œ'*%j­Ï)SÜäƒë”¢0b.T—d 9GŽÃ@FÏÂBNe#¶_Hh$$taú(Li_ýü?’x¢R~_•;|’(̤v-£ç?³ez‘¹3]#GB±Üä¸Êq&"ëhö¼0@F:±°Ñ+/>íÊÏÔ{u¥dñÚq«b—Åú€ÅH%)yÊ–qK¨°íÁy™ã0a»È±B˜%kXÆaZYf»IF7ãš…ø—‡G§}öò™w,ÏTÍ$"K ËÖZJC "ÒÒ¦»j^­ˆ¬£d†×¸ãAÚ“¯H3̰>[ ±ã ô‚¦cæ3þ¿^ìúÆùŒë â ƒ(Czœ-%ò¹w.&[ß.'˜/Ó®3…)6Ýq9Ô¶›–4²7KéÕNû*ëÏ Âtr,!ñY{ÒÖÃ…fæŽ7øc:“ŠÈŠÓ%‘1–rx yEDÖÃ,ca¢T5ÇÆ_0î dý€WŲ;Yá²]Íã0îx1á0á(á(!*Ùâ„rà¸6öë¹Æ6æÔ™ñŒ×Œðé×bŽâ0ÆŠÆU»W„Òb¢„£˜ÃG>3—Á))Ý”^J׸olO¦š$"²\#"2béÃR–Þ‘–f›‘tPår>1¦dÆ•°Ì…¬±Å“ú+Øâè9[Ƹ/¥Û§›Ò­Ô|<*$Ì¥úÞN*3RTeìœ~gŠWaÜU©ì…Jß¶S¶úl¬.东ðæ–=ÌHýfGõ뎪îMšî}±ÁH_¨{v·§‘Ù™¾Ná«Í>ÙdnÅ«֑ªY¢0@²œdu“VÊYW. CÇU¿m`•Ø„±W\Ó¶Ye¹Êñ˜ úecƘøQ0¡0`Y)yMèÌùÁÿ7Ÿvg(0r¾>Ü“ÛÓÊ¥~‘ñ7£_©ò³Óv5¯—uÂK¦»ûÈ`$Ôeìû0ƒ˜sSÕ&˲ô»b}5}ɲhÿ‹È&[Ùc 1"²²fŒÂ8ÁùŒ9ôé¦ôŒ›Œ;½”^J/+4ÇP^›99_3¬˜¨bì§lgômµé̼IEx(%µR„¨‚>çgÜ ;a†et €qWÊvÊQˆ"áxv‰†Ê÷ŒÛ }ºW©œKÞRô<¥[Ì2ÎW#JMbòb m£gìƾ±r£(6|r½zb}¶¬Ôt­Ga£|`n/ÔÙËx´Èãx¹eŸEDV®õEdíZ,fÕú#"Rv¢KÇ”mÈÆã\5AlÊ6ƒY*ƒä¬¥Œ¿.&v\+,Ô­d\»8t±¶Ï8ê·ÚúûtKÏu&”?,æËœvgŠÂ”"2Å!DU¬T½SL)*íÀã—$¼Õññj?«}.6ÖWlÇ?ÖKйÇñx±Çʧ¶‰ –çÓð(¶Â†j˜ÜOYº¦)SüeeMu°Òû(2³êïÚr¡Êýѯ¶ˆ¬¦ÇÂx 1qy¥ä‚8Ä kô$ø1EÈÀÂΑ¨Älb^…UòAæ×ŠŽéŒÔßá(¦ëÂÐFC0o?aÊ’©:“p…hˆ…€EDÔázõTâ¸Ó)÷¼ô”ëp½Mh#áQdX)8âÃ=ƒa,_*½Ä¿éÙø&/&|{4´‡-ŒÁ‰ZöSDæküqÍé«ÝåûÒg¢é«éKD–eY¿ƒúÝ‘Íâç°½”žÑµ°LO‹^4öR¶­4We~½ºht®¯¿Ey …»’Ú,¯3mKÆ-ÆNد™©{w»)ÛÆvËŒ ÆîTïšqÑØ ý¼s†~ÊÒéæçlXú²¾ôµR_"2³UøåÒ¯¶·›,²¦4RODdƒèM¤JC ¦Ѧ9½_1}–Fèh&²’ew@DDDDDÎ,+™o€@ñY_ŠÂˆˆlj)9múˤˆÈ|éD&"kMQ‘Í2²þÚ˜2"""'§sŠˆH™ŽŠ""›«)£sƒˆˆ´±Ä˜þl#bt‚‘¥ÓHDdÓU/dun‘6V!š¿ }iO3’DD6]›9J›é42JŠˆœm‹?fê,&"ëEQ]Å6S,FD¤å'u‘u¡«J‘zš«%"2ÞjÆ©W³W""žŽN"""õ”k@DDDDæ+ZvÎcߨ5öŒ;—Ý9u¦Aï""@8®à!q»$"â­ßßóRºþ›˜Èq°ÜÎ;)¥q1w8ž©-\ô¼®ç Æ9+ÏîúVÚu‰G- ¯¦>[gX‡ëËî‹È¤ ÓùZ¿ó¨ˆÈüŒœSVáXti:#"Rµ~Ùy.'–~+aÜ›òÄðc®)^2¦Ïfb}¶œФäc_8܃õ?ã80ì lÈÒí½l e),÷¨ëY ë…Y)O燋IZünøôdÅ¿6¨ÙŒÛ/Ô½vÂ$²öñ‘èã%R¥ŒˆHÙâc1º>‘5¢(Ìì\8â'SΊy‹ããÕÇí”ÌŸr¥öµIe¾’ˆˆ,‹â/"3Ð ó†XL,f)§•ý ë¬$²…™Ï]2øv>;ië0""‹±±Wuc®³[î“•½R—²ý„‹,ÀéÅb&`u‘ÕtÒ5’Œ›út3¶R¶^S£kì„ï2z[}¶ŒÝ‰õ§ô2¶Œmã¾I…wûlel¥tí™W,2º)Ûc6ÊØ1ºùñ±ÝŒ®Ñ=ùl Ç5ŸÅqû kkb\ ¾‡Aö_¿±÷Ô•ÜMé…]úšI5¿ÆØñoYʶ±gÜ;¶ü…ð–õZ|ÌØN?<½™w¸Ñ ŸÛ®Ñ3öêÊì]ß+ãUa'Œ–œvɧ¯%}MÅ6õëäûDDD˜÷ñPXYkÓ^Š3zV½ NˆG¦ç¤ôŒÜábÞžñ~È˯q¸˜=Çó•ú»Ç©RB_#>;oBT,'dÜšq6\3àbvk¬4lÔvJ^=°—ÛÒ†€KÂ+O5U^¼*á­µ3’*Å9zË3•æ²lÑKû0ÎJ©.æÇãEOª»ÔpI©L©ÎÝŒ>•}ç“àÔN¤ÊزãñDƒúcv2®8\RJQœ²ma'”+Ÿv)¥”uŸ[‡‹‰×J%»†9ˆI22ÿ7èäõ¢Lû]$²"tå*2bö‹!™‰ŽBh¾¿eú5ÑÑLd-Ì8¦ÏV9ãJÿfd[Õ—døâ/·Œ«Æù6•ÒÍðÍúFË•gÃëL½*¾w¸9ÎðrÀé§€©ÄÑÌÇŒ{R¶ü. ûÓ9œXÊ#ãVŒnFZü] ½kf•½ôÙÊÁ‡9Bý¤¥8H¹0d¥š)*w5 ªJéy©Ñâ_ÿQÉêF´ØKÉ »HdEèÊUDDi†˜K©sŽÖe «ˆ,Ë,Q?ð$¬%%aä‹ÑMC(ÄØr£#üýª‹é8®0=1¸¿M‡ïÒSú`Q|<ज़ùÿ‡e|ÑW ¾%å0,oÎðCol0¼‚b†±F‹˜Ñó#bü³Y˜“8®ðäĆÆËÂD'+Ey Žhü`Ê!¹„FãüYˆ§¸˜®ãÅнžbdÃÉkR`0lddÐPÏ}²AÄd°E}ºEkññŸ»2¾aÃCK #Fßš‹c†…F·Âxs³ã¹‘z ËF—'D倘AçÚ »HdE8bV›®¡eès~–Œ9§œöþ¶´ˆˆÌf–(Œ­à †òä#Ç‘q{ÆUÃF§Ž„" G„‡ãªÑKÃqQ¨¸E·á%GEùšªq?B¸w\6îȸf-ÂÙà>¿RñõÛ™AJÞænÆÍÐ/&9ˆëúlä)2©ªžk=ˆÆq®ƒá·³ÁÀsX~kb}”ÌØvƒ8×`”ƒ‘¦Ü#$*„½}-üøu³½Œ½”€Ã\ié(ÇAF/œ|?=qcÝq(çMŽÇÊõŒù\€YÖjÚ]$²R&^¶¢+W9EžDÚœÔDDVÊÔ3’Œ‹ÅÕ•Òv„G^ca¨›‘Q=B¾ÎUžŠpà§÷ŒvÏ ßñ†WÚLùäpáçcvcŽ’J?+5œ/V;*‡`B=¥8ΧÆWÕFÆ'R¶†¿ŽR2;I4Î8=I%L‡Ä=1QuoGÜéóËÊù\¢ˆ(ªÄYНÅþ?ÃÜ൑«Ì?Škúxs8¿:ãUÃù˜ÛŽÚ;Â𢨂 <s¹àp#¡·v‘ȪÑÐe™»e\tR‘52ÃX˜O1Œ‹Õ§3>²¨Žˆ©6æx"-MNñ, „©D¸á|®@‚K“‰,eËA&¹8^hwL.&OÕöM0§ûêñUIyë¸hrvÚ'”©ÝÚRzWßSWà“åäô¥Èáp±rêßÒvßLئ”±¸Èø›q˜²Ý²ÇÝŒkÅ`«0rލi«y|û×H²N4œ»‰¶‰ˆ4YÙ#¤Îh"²²f˜‘qœ—tüØ‘]&%diàhX(‡ºI^‡ë€q>ã:¥q餤!¥êšŽØÏTJžYÅ6&“?~Ÿ÷2ÒÒߌ-|6¾ÛñxHU[6ø±i°Línv\fðžî–c=Ž,¥—LôÔëOùQ0~e¨$$cNë–Wo2í.Y#ºlm¢q1""MVêY\§­HDDFL…‰IJ ⌦V6þÙFããã—Y-ON1zÙ`uŒÝjÚÝB<)íK-ˆ6àxÖ¾¿Mâ•4DUÊ+…ð8WòÂqäë@ÃSÇ/*-FŽ›3ö2n”Rꎤ°¹˜^WÛÃö»HDÎŒ•ºÓY)K?BnŸKEä ˜zF|¯?¶æ “ƒRº}º)]«[1§=ìn¦ÉÈÀ 㾢ő’å;í¬qØ…W êiZ{`C¢0 Æ}¾ú¬q¯ßÛÙðw¸¨nÌQu¶WÌNua¬R¡í‘GS¶S¶úl{Ã5_Nxóøm)d¤ƒe™ê³>jªÓöl»HDÎŒ•/"²tK9Bê°,"kd†¼0…cœeôFž5Îþ¸y¶>%$þ.wx…_ooäúãç§TׯˆÇŽúq\õƒ, ¬rçlìÕ­tfE¥$)Æ…‘gs¾Ha4Ì঑‡2ºÕ5’Ïs¼·G?BÙèô%мËEZß’ÏŽÛ’:£µƒqSzüp«(Û¬»HdýØfµÙ9""RµÈ#ä™<ŸÆiKDVÄ caHØ C,£ëïB»R¶SŽÂ G8ž­OŽ«á.Ýדÿ>e»vÆPi`Bj¥ìýOq¸1Ó‘¼8ÜWgXJ׸0öS¶3ú—Йm‹æÇeô&~p’ãÀ…FÊÓEmÆVF×Er¸(ì"€•Ñ/†«{½r$¢é ñ²Œú2Ò–ÑÍJï‘…—{½¼ÆN1¥¨ô¦÷©Í.í—"tEXÇŽ¬—sãqÂûÕô¹j%º,©:ûSUEæJ§’Í4ßC¥>Eµt>Y ³Œ…:Åtý:Äþ 8‚y{û­›$F8‡ õ›ÃAܰRõë£Á0aõó݋鴼N8ð#bÊåwÔ­â8g†ãñ„#GL)žEX|:Æ•÷†ã(&)FÄ”O‹1»qaäÓG1qxÕq,#áöº•ª¯ÅtÊŸ·ÒS®Ãõ6Q­„73‰lhÆ÷DþñŒ/M¬Š)w‘ˆœUZÞ[Ddñ‚‘µvÒ«Gà—Åäàààäñ—áúï‚ofcuIUG _„OQ›òcëù½Œ,Æ q\™­ž³Á¸®dã`×ñ\sÉmÈS,©,B4¶þ^Š%8xµãÉI…ocp› +ˆ·gÜ/dä1À­3ÔPWgÛ]tèºGÆ;c!‰1øÓØRý~-ËûÜ®>}Ô7˜s§£–ÈZÓ¯°ˆLa¹=:`Íц_¿Š”éØ"2³ñg“ÓþåZnë""³·rˆÈ]МŠ¿ˆˆÈi[ÌC±F‡ˆÈQFDdƒèRUDDNÕâÿ`£XŒˆ¬ýa[Dd³è:õÌÐ)\D–®|NY…ƒÒªõGD¤JG'‘M¤¹ô""rrþl²jgÕ안ˆ§£“ˆÈæjŠÅèÜ """"rt¥-"²éª±DD¤â ²R'…‘U¦ì¼""›Ny ›è:^D¤¥9`ê\&"«OQÅbš­È­…ˆÈê[âSç/Yºª©§¹Z""ã‰},쀩g"²^tt©§+{‘Ó 1 åT˜sYïï,} uzY úU©§õ¼ENÃYºé•–æ~ÀÔ§¨–NL"kA¿ª""2›yM¬ó¨È´6óX!s[gX‡ëþãÖŒÀábЇ¹Kéúob"ÇA›—÷ÁG§Ø­ù1v2RJ71w8žYn¯dé ©¥{ ÙLKœ¹¹˜kÞEdáC0nè –fX¾¶÷t~£ ky 0º)ŸÏ×äHnÜ›’ o›SFD¤Êé]D¤bÇÆ‰M¸y|‰ˆÌf$-‚±“’.»SHy¢ãp1‰Æ@ˆÈÜ­þÕí*gçÕAyŽVÿ£(²Fü å›Ó!QDÖȲ¢0—Îp <µ¤>,R¾ìLÇ…“YÒz¾•ÈJÑ=ÕD«pÁº }8‰u￈È|-ñä«XŒˆ¬‘åDaJ³“^ZJdg€.REDd¾Väò@±Y 'Í côút3¶RºFÏØk÷ª}£kt[ꞽЧ›ÑMéYH‚kÜdtºJ.Ié¥tã¾±¸hì†ÂÛÆk&uø¦”^Æ–±=¾æº×v‹ïsÌ÷¹¶XÊvÆVʶћ²‰‹aWÜ»¡ž{ªÞ¯úVŒ£[Ê×c¡f.Öj{FרŒW…ò£’6µäíö=IéeôRzåOQ]Éé>"ëEצ""2G+˜;o–2Χƒ¥‘\gxÍ Œ-;ˆ1à20¬\ÞØK¹$Dà2òò«FVeîy¬Ü€Ã%Üãx|¤°ÑÍ0J·. r“3˜³3n™§”­êmO›…&¶SòêÍÑÄšK쥃ÎÄåýàpqØ(£—Õ½_ qyÎQZ ¸„b¯taîXûÞzb’ŒÌ×ì+.]Ÿª¶™ßn£—Ö$Qv ®º{§úlˆ¬)b6“nHDä4¬ìØi[É^‰ˆ0óX˜”®‘ûlp¥1,#3î¡Ú>[9„jq¡ÎlìmC>hq° SÑ )Ûå’Æ=)[†…ã²s8‡3KyÂÚ(•ßóMÛ 3ŽAOòiVwrÅ ,Z,žKéfaûŠí [gu£fƨÄYÌÇúl•Ÿn%ËØên}‡¦ßE•)iѺAt‚ÚÚ¿Ý vo^Þ½aÓ,#/šuÓDÖÏÜÿB8—E(ôuÚ_""§§í¢¡ ±R©š% Óg+ jp1ç;%\ïp‡8…e<1CµÅ÷1t¸žpóf£`§9Î'u¸sƒn`Ãiqsþ,ì]L¯ÃQÂQÂQDä,^É(¥ïoï#"_²ÃõdpAÛöðžp‡ `? (áÈ„±0òÂáѹ¿?'¡ãÂÔÇc®»IÕ$aZãÙÎqÁŠ$ ƶ¿Kw¸˜CÇ‹ÅËcÝ`W˜…ñ}º„¹HqiêŠ+EUN( £%c’òÌ,ÇA")y)˜È¢˜ÃGþ H¹¦ï%¿! {>Ü“µª|º8Ü+óÖ„:9Im´{») ¡òA½Pþñ„CÿÉ7,å'ìŒÈZSEDDæk)¡Å_DdÌ…±Á•¨ÈlRpÎvAoÜã!ç¸:òl<á>a4¹ uâœ<Ü“GÕ°NÄÅøˆðHÝKŽÃ‰¡‰ŒóÅ:DÕMvØqŸj_m2¼°´q±¨ÅUö’ãc⌛iwàpCÎññ9ÕÖêí.BWWÝp?Ú(Â%$'Ü4‘3@±˜&ú™ÍÂÂ"k±E}‰ÈZ˜e¥êê=0`\€gs,Ì ™ö8ðÕð‚Ú{ø£þpî’ágë©°”<ìUÆ÷T_b|²|³0¦6E®«¤ž^‘J¶þö'Á¥ÓÜü×UôÉb¢M혚ŒOÛ`(Ì„1ÓîÀ²¸Éš¹¶–o7ün‘ ¸®üPØë$›&rf F”-¹+§t|‘ùÐqfsœê!tâIŸ4YM³Da<ãÖŒƒ"AoÆÓ'9Òe!£GÂ9êVºõhh·¸1ŠÂ¤< OOìR‘ûfšF§PÄVâÉ=i«Z2 åXÎ'Úôg|åíwà°]JËf¤¶–owÒ¸´Ù{'Û4‘3Eá†ZŠÅˆˆÌlî‡P…WDd­Í¸FRF7ãZ1Z$¬,ãÜ •éÔJÓ©s ¶Ü†Ö³6åO<¦\SU¯nÓ“²¨fòTÛWO,7í,¿°œ?脵µ~»‹‚“_1sgDd£hDœˆÈlÅ)Ì2¦O7?žëá.Ç?Ë#mž:4ÆÄ5‡N~á[ÔLÞj?Ç5µ{òI¥7˜ž©”œAä§9\i"²š¦ž‘”‘Zxe]ÚÚOÍzaÝ Óš R¶ç5È åóÕg{ûtSºÝáÇ›Kž<Â¢ÒøˆbdJý¦¯9I¾×¿8oÜ·]¿áå5žÇôgÚ¸˜Úêê¿2f6–q̰¬”Á÷ô:# 6Û²úZð×ÙpÆ6GDd.¶ôžÖø‘u4c^ê¦y7¥ÇOwHt\÷Ì–Ò®vÏ&-ßÓFTÊYc\y6ç‹`å8EBâËgä#ñ £7å5w'´rü:ÇU¿ÉV¹½7öŠ {7¼øôT…&-Þ±€q~ð?ÀÍ㫚v.²¶ZņWØÊC2iM[@gÎŒ¥ßºoÎí½ˆˆÈÚYJXD±Y/SGabr˜sƒ`Ä>`ìÛ)7Šb3ÜEl‡@LžÒë³eì¤t3úÓWVÃqPdlMyºúaletýݸÃE!bâ¸Ê Jb]ã&ÿ}Êvû¥£ƒ áÜ`}¶Œ®_4:7ÿ–Ò5îŒý”팾Ã%¡?3KØ)"\]e0îJÙN9*–sv<;¾žiwà"k«•p³ßpéñgÕïêA/Þº˜ÎˆÈY¥«Và`¸ôˆˆ´4ËÁª<² ¸½·ãë%ÅÜãxHéæpIHþjœO³™\§”Öè¦ Ÿ w¸’=÷‰pq%­lJÏß<'¥ä5ƽOƒF2ì:ˆIF’§ôéâvÜ ªÖ?v§u˱©„sŽ+@Ê6a¬M‘¤Ø™1ñ¤d.~»ziÓ×u¦O×Am+¡¡ÃòüŒ^>غŽOºšn†·ž¤.©íTµÍðvßð‘Ý;Ãgc3i¤‰,ËR®­Çà×år_¿¶­Ë[)"í™~µEdUͲFRÂs¾häVº¿À%¥ô|X!ãKÓÖì82îÌyÉŽœqÂA:˜³s¢‹ÉÚ6²âæ<ôßÅuùkszÅ–úHP‚i/!NÉ\WeaŽU±í sd[Þ2ÓF‡#ã|ÆQ/Á¼½å‚Ö3ìÀ…ÕV«Ã‘±—Ñ/o¸ÄÄt/.²3²²6ó*m.ñ…EÞÞ¯`(a»$""ÞfžÜEd-Ì~€2î‚2òàV–U>%Õ5'dÜ W2ˆq°ëxnlá»à›ÄX›‘/Íõ\€o€óa†Ÿº¿—‘Å$Õsaô2¢˜´Œ¿ÔU5Å\pmuõ»×Áާ–Ø‘åRì@d„îÖDDDdaVåÂðŒžA‚«†9ŒÝ”>Í3nDD¤ …`DªVåbHDDD6Àìk$ÍWHÃafÜS~ʸ˜’úï£ãÕEDDäT¸ ûY˜ºö(’þ†LìÀµì8yíܦ#‰ˆl²%ŽˆY¡³ŽˆˆˆˆÈ­ÊX áþúÜË g)/§dE&$è‘™ø÷ :9 +…q<žð&‡çŽ\XÇçÅæW‹ˆÈtY°Õ½7vÁÁË3/â#""-ÌQÒaWDDDDä4èJ[DDŠXŒÎ žvˆˆˆˆˆÌ—.,EDDêiˆˆˆˆˆÌ—.)EDDêÕ.&¥§ˆˆˆˆÌL“"""õÆ,é­Ó§ˆˆˆˆÌ`…ÖH©eKúšØ%‘¥0ö]cϸsÙ}‘éèy"²Ñt#-'§S©ÈlRzþ0“8®63îÌxÉŸp¼5ãp¸˜ÃÙ:Ч놫=3úl9œa®ûGÆì1ã>ø‚;s;ºMËèúSÿú¾éÆNFJ¸†qs‡ã™åöJDÚK–ÝY'ŠYˆT™1"32œXò±År_ÌÕ=x’“Ãù™üýõ!7´Ïê÷˜ÑMù|tÈ×nZ¾æ×2ƽ)O ?æ‚Y/ŠÂˆˆˆÌîLÞ¿‰È†0vRÒe÷âTœÕMKy¢ãp1‰þF&²v…‘³f^‘‘ñ¶g2þ²™×ògò­Ü—Îp <µÜ®¬‰Ú=6~ÒZ«ß´„Ûà@˜«µ^\8P'DŽƒ%÷FDf¢(ŒˆÈÎÌÝÚâã ‹¼½_L[›°Y¥¹6/-³ëC{Ìs<»ì.œˆŸk6øVDÖÓœ*"§Çmü×ÐfqŸ¯7$"2-cßè]ã–ºg/ôéftSzF7,ôã:ËÝdlÙñx—aåò)=Ÿ7æÍ)Ÿw¥ƒ¤p1¯w£™P½ŒœÑJ¢˜È'(Ip~±£›b@qe^LF/'/—/øU¥ªwÝ»ÁD_²ë³ó–V•Ýc)[Õ“B›S¾æ6߸ñ´A¹òZ~÷‚KØÍ¸Zî¶ä4©YÜÊØNɫ竄È.íÔK;*ÎBîa£~¬vÓõÙò?v†÷¼qWÎ7lø…þ#‘ðJ7<ë-|r\ÌÛ3Þùð«\ÌžãùÚÝ2ó&§ —j÷DdÅi,ŒˆˆˆÌhéÃÓ4ÆMFôÙÊÁ0ÿÎ:œÿ&†NùƒõÎáÞÛ°Œ'›¤Œ0nʰbèŸ;þpåÙœr¯¤twŒÿä„õÛeƒ—tÂ'g7#õïT5ÆTóúi6Ù?›ÑóõÇ$nð«ñäĆDd¥h,ŒˆÈÆ™ø÷ÿ¥MБb˜‘5µb F²$t\…8ëp}üPp1¯ô7Ò€ã0!ž¦ÿ=Âýy†‘ã õ€‘ Š¡=1o*B0óm¢TçKÅ1ØË*~$=‰¦»‰p G. Wzá¯Çñl0‰˜¤<ËÌqù‘))¹qq¤vˆb;ù¯iúæóãä€ôóÙÐîc〚¥õéiüKŠOÎÕâí˜ô‘ƒl²ˆ¬5EaDD6”""r–÷¸A(ĹÊð™xìÏáF2k8®…ò“c@ùà%$•KkÇa›»ñ‰l0÷$r•ŽÃ¹Ì-•²áˆFNæ£ÓÅ`jvËe;žüu`œ/–þ©¾}Ž;ÞŸª6‘œ`Íæ4LDŠ9WWó¹Ðpípªêƒ¯[¾üÊm²ˆ¬/ÍH‘ubfßúÖ·–Ý‹3ÅïÍäþhçÝ{Ž,³^ï…?ú£%wK6Ìm·Ý朢‚›+ÁA§ùù,mš2ä«á®·æî×qTž¯4"®ùj™üÉ,ÝK×LÒqu™b§U;¾Ã¸ÏæX.4·ù¦ ïÈxÔ*=ÏÇni-1?û•gø&Àñ¢úžàü £¬&9ñ‰ø<5Ž—ëž½’ÒmÚ·Õ[)ÇcÊ›}“Ed­) #"ëä…^°9\Íʨß÷}7>ó™ãŸóùä’i'*ætTwPw{<¢H‚›pŽÊÂC„›íºÇWœ$¹†jŸóŠLÝЭE‚^¿VÑipì÷é2! ò’»)ýÁóÓTæjB0$t|mþ+ g‚U7y.;¡Å%3^ãx¦ôà5ËHµêÑI6YDÖšf$‰ˆˆˆÈÚ+Ý©¦Ó¾Ö,¿iXY©þfyŠ3cet3®Ÿ0|Ã9¢ÓH–pÎ7TDåýzÛbnk_Os!/(mBÓ+^ÍhÉ)“Ô ñp'•)þÛ~!óª“l²ˆ¬5EaDDDDdíMÉpjM‡»ôú.ŒNÕöR¼O·XGÙá""p „£dеЦàxÙïÔœœÒâßàÊãAZÔ3A„cèÝizÅ Ñù¾¥5ÅÇ”)Ü9Ǧ—µÉ"²tŠÂˆˆˆˆÈÚ+†œ4Ŧ£­Cí#ƒ7ÐØ®>gt›æšØÜ7YDÖƒ¢0""""²ö—CüÂFnû=›S~ÜZç|Ó)Øp&ÚÚ{øO‹á3Æå'Rºc¢EÕÄéÆMéñÃ3Ü«wB͵ñ ¤¤Aò”™Ã#eìrÖ¹ 8®º05©Ì2öJå[.J=nÓÊbb7X–;·J"álšÕ²¦r ›,"ëAQ9 "¶C &OéõÙ2vRºÙ`eŸÓâx9 —°ŒGŒ]ÿxŸ­Œ¼p|œÁí·e\1v£›Ñã8ýʱ˜¼µéùH±ol§Ü(ŠÍ4`ãBhÎúlÝ‘ùMñ ÝÁ¸•Y£0–Ñ5öü}º~tžß‡4ÖÒ5îŒý”팾OEœŒ[Ñ|ºM+8®†Ì>–ñ¨…ž±WÅQR·Xø Í{“Ed=hx›ˆ¬“çŸ^+U‹œ=wÜq‡sº&Ù8Å-nB<æ¯ýÆ)/’°µq>LqÒí±ÑMÂ~¥j‡+n§SzF^®¶¬ÏƒÛàɷ߯}_wìØqs>k¯ßLçBUÆnFjǃŠä#œ‘”÷Ḡ`¥— ÖKйÇñ8aß–;ß´ÇútËœ„såUà Ëè…íjµ+ Åî-òª»…ÁMH4’Z8eòáÝx¼gbbǵRßz~PD×Í“ªÝ´bOvJoºq{Æ•¢h¢R¼;.æ°øxt|b Y; #"gBnñW¾=õçZH`¹—¯Äÿæ ®^›\TDädG ç#œ¬â쿉K·Ü§ržp<–p䈮Xáp׎q\=ôÉ îº]\·¶u£0n†òÝúÈHÄ bò¥i{žÃq4žºå˜C|4á¶"„QtbâêêN ~xH‰{†j<¢E»ã6­ÌñBÂuÿ¡´‡.ª„`æk¾›,"kAw‘u22&þÒŸn}ô×ã?y"ùâ—88lg'{ÃÝÙ=o¸qño¥ßïòzzR½w_:÷éß³›ozù³¿?÷Ê;ÿìŸoÿ»ü÷¶³ýò?ÿ}:ɸòÿ÷¶úgý÷×ÿö~ôΟtò—þÁ¹ßú'ÀKÿÏçG_ÓO·~í7:ð/ã'¾}íkþ±ü®»²{îN¿ïÞ£Ÿüq¶k“5.ÇÎû?$ÿëš'¢ÈÎuìÖ[³»¿ûÆÛþ‹ê'*þò¿ÝýÑŸhÙJ~Û­WþÙ§OØÕ%:÷[ÿ¤÷Kÿ¸ò™ßÉïü¶ùV®±0²Õá!§ÄØNÉŠ‘,¥Á Çc[J…_—xµãÉI5ß/dä1À­S­=©æ ð på0žï¿ƒ˜;¦jqdÀˆqþ"ÅÜÄ¿ÆEø½Œ,Æ ©öª½1›ÖPþf¸žÅDð7Ÿ¹é©Ìq“EdÅ»ìYe½}¸û_&JVè®]Kþø_%ü¯¶þñ¯_ÿñ;øÀûÂß×Lô——£gž±«çO£rwx=s|%|îÒ¿þÃcÊwþéoå£_:~âòår=…èkOïþ—?åÏFê©è©§:ŸþÌÖÿò¿]û_ÿazï÷̼ ó=ÿBí†_Iþè·~í7²ï¼põ·~-íwO¸~ì ‡¸7&ZaÑÕkƒÍN1Ë©ÈÌÂÜjoòÝ”>u+ÍÝT¹Tφo'„`])yž[Ç€ÂÊÙÑ ƒ>cLÃ…çû˜ª]ÀQ:Í-*Ã\7YDVœ¢0"²–¶~ã·º~ Ó¹ñ·ÿVÿ?xSþÊWÇÑÓÏ$ŸÿíýS²lë×Ó¶Î>|iÙ]u[Ÿøô¸(L?=÷©ß¢ºƒÃÝ‹?õ) »ðú?ö£Ù]¯µÛosßúËø«Oûõߌÿì«Ñ³ÏîþèO¼ü™ßÉ_÷WNÚû¹ºþ—¨4W7ÏÝî¹ç:Ÿû¤iüïžÜý»ÿõ•ßýÛÝyav÷w§oúñ•ÛÞîÜ;,"‡óù820îqª›ï#Müx V‘9QFDÖÐÑõÞû°›nºò©ßξû¯–Ÿ¼ñw.^ÿ©¿·÷7ÿ3÷ÒKÝôÑÿÕgßùú%utÕåwÞ=÷\çw_z´iRRçÿú÷â‹ôzŽþmùð]o?úû?7ò`÷7ÿw‚¹þã?vðÁGÊuîÃÑýÿÍö;ß³õÑ_s—/÷ÞÿË×>ò?ÍqsNîàчˆkî4’ÿïO¶ÿÞOÇO~%þòŸvù@5´×ÿß|ø¾ÒG™À°Œ'Sº1ìÀµŒOÒ|(¡i]y…siJ” DDd>Õ‘õÓù×ÿ¯ûæ7£ŸþïGB0^öW/ø[b³s¿õ,¸{käÆ[ÿ&à^z©ó¹ÑTæÜoÿpã?þë5Ïm÷ìüÍvþæòcÏü>ÀööÁ#Ö ü£ƒ‡ö³ï¼œûOº5IÙ›þûo¼öþ¡ÿ¾ó/+IpDd5$¼1¬a)YÊË)Y)#lwÙ}\9–cF–^ÒbÉ""s£±0"²~Ü7Ÿ÷ßd¯]S™þßøOˆc²,ùâ—k D_ÿFôäWâ'¿bÛÛùë_—½î¯Ø­·ŒÊ-ú‹¿ò;ïä\ˆ¾úTòù?´oû¶ôMmdZJü•¯&Ÿÿ‚mogwwv÷wöùò‹îêU;wÎîü6¿ É?}ó›Ùk¿#ý¿ÆÎöT{€ìÿoï¾ã£(ó?€ž™ÙÝÙ’ÐA J—°¡ÒDнP<9õôlXðÐ;QËêÙQ@쨈•;=)ŠÊQDQð8O¤ž$›Ýì”ç÷Çìl6»› ågôó~ñÒÝÙgžyfvÄÌ7ÏóýÚêÆMêÊU¢¬ÌÊïbvêm-¬§Û³>Vvíò~4Ë8«†ÑrÏÇsÄ~5Ô;svêIí? JJØÇæUl,(`wl•=šqÞ9êú °muÍZóÔSÒ›ˆ¢ýêªÔuëí–-­®]ì–-ª;˜¡-ùZÝò£Ý¨‘Ùã4Ù´ ±g¯ˆDd 5¬nß³ºt²[¶T¶oWW¯¥áôEI‡‡e+;vÀ½åÔu´%_Û-ZýÏtîÀä–ÙÝ‘¨ºi³ºa£(,´[µ²Û¶©î;ÔM[ÔÿEEÖÉ'™]ó¡U»ˆCB[ñ_eó±gÕ¦µÝñx»eK £O`¹[1¢¢3$„TÜ#0îèJÆG:ôëOQQ±*´ÚM r®ã›òšÑãôð;ÓB×ݤ-\T1Ô ¢·Ý½õ¦ž¾ïí÷ü÷¥I?«jdÔÈè]wT_ê("6ø"ý•)žO>…ñDúîžyóE8l·haö8-}wý©gôW§(*ØšØhžÚ]]¿AݰQÙò£ÝºUÆãFG,¿ê Ù°¡ÌÍMùHÙ¹+xûÉ×€Õñø²ž5»å§wå{ýMÿø‰Nè'>€¾g”¾þj𮱞9ŸÄ† O~¦ºK ûøÊöíR¡(ŒRP¿å>›ã}cºï­wâ‡ÎË;°tqâ Êê{öÇÜ癕ZžI6n\öèC±¡ƒRǰu[`Ì}žyó+Z†Báɪ³gîçþ‡Q7lLÞh7ož4Þìf NšèpX˜x-Pìfä÷ÿ2¤ôzÌ?}¢ †PQä;;jžëøQmñW9ëìÜiçåYn®YϬ9qIïG).]r™¶p‘ݬYìÒKŒ Ï—õë‹¢"ÿƒ ÜuïÁÏ”X¤ì.Þ6Z[°PÙ¾ÝûáG±Ë.MÙÑÿôD™“S:mŠyFx4ewAhØêšµú /ë}ÍjÛ&ü³V×.Ô›CC~­xß}?2f´Ý¢yr?êê5b— ?ûŒ{÷¯½ÑóÍRßog 0Î?§š³Ö_zÕɺ»ì×e<(ëÅ'’è“_ô?ò¸öý ÿ_/›øTVWÒ<õ;/OÙ¶Í;s¶qvåJI¥aÏgó¿Zócçží½ð|ÏÇs• Þtkà®±f¿¾Fÿ33zÛmZW³£() ºCìß/›6 OŸŒ²åÇÐ5#ÔVîû³qæ‰N´/—èÏ¿À<éÄð´)ö1ÍÀ´÷Üï›–¯9t¾io93¡Œº¥?Ó [fŒßU’ÍL%ßÔ×eãÆÑ›G˜'vÓ¾\böíãlÏöÐ~LìÝ+ssKß}3yñ—÷£ÙÁ[FÁ4õç_.¿êÊÄùÿx—²k„ˆÜ?6:ê–øÀ—|¼î&í?ßÇÉŠ?=˲óòŠç}œXÓ§ýwUèWÞÉ/D¯¿&cÂc"""¢_&þ`DDu’Ù¯oÉìícŽqÞª+Wé“_Èùõå Úw ºTŸô¼ò¿­é{é¯L`7o^öôÉ©XìfMÞt^kß,ËxÄð‹“Íýœi»YÓè·»;Ûᩯ8!V»6‘)•õ~‹hž|Røåç3td£†áé¯Éœú“OWsÊÊî}³Ì~g†'OH<~ˆŽº%rï¾wÞÓ¾ÿo5dr1ÏÇs3’·{ç~†hÔjÛÆ<¡kÝé¾Ò©¯DG\ç¼ÅÅžYs£ÇÔëÑ·ÞI=‚£îð|>?cÀB?ABˆð__LŽÙ­[•ÌþP6nŒX,ðç‡ÛýŸ¯7üæÔx€¦–ÌÐ?‹WKì? ­X¸slàžû-ÑûïIoæ›úzƒ–mªÿ£l۞ť Ož½m¤Ù¯oô¾1æ™g û{@ûÏ íÛˆ<06%ÿNlÈÅå—ý€²y³²{w¼ý—K­Jù‹ý“žó|ò)b†SÙ;ç†Õ5ßêPÝáNÀ<±›yb·èm#Qó,þÊÿèêÊUü?jž~ªRÜÀþèú£OTÓŸ²i3zž®®Xé¼Í/`çµT³ÂDþ0*9±ðù¬ÍåqÇZy-í¼¼ŒßÃêÚ¥Ü]„uX¤G÷p÷€¶ü;mÉ7êÚuʺõêÆMN}ñtNF¶È\<ã¥Ox2tùÕêÚuÊŽúK¯ê/½ ¿ßèÓ˸ðüØ ‹dÕÿáý21 CD?7v«ã¢÷1†]ñ;eçNmÑêÚõVÇΧþñ}/¼œ²ìÈnÙÒ8÷lß{3œ™é„¿êßê׸x»iZÈxX™ÒÙ8”í;ªú¨R³5j–Â:Ø?é9Q\ìY´Ø8g ï‡3Q»åHÕðy³ýÏô?ü¨þâ+ôW§–ö8 €ºcçÁvŽsZª;w9o«š`b7m’ºê¬¢cîü‰¤’•¥o¬Å= ®Y=ÆÉSÁã1{ö^çŸ ’7«›·°TqIÉw’7æµ,™óýÙç½ïÿ]Ùµ "ϼùžyóý<~~’qáy53|BBzj[ºŽúÅž8ý1 CDuŒØ]ºþfQXh º(’)OªÃÊï\~ùeþg&PXíDaô'žÖŸž@ææg´N<ÁìÒÉêÒY6i Àû÷O9Ó¤ 2)”½û2owc Èôìí°›5Uví²:w*™ñö¡/+¿³Õ¾ºa£÷£YÆ9Eáí˯Ä.œU?ú¤ç½Í{÷ÏŸ+5ÌÜHS#wÖ_›†hTqS·ÚÍâOøáÉ2.ÚJÁ «ÕqÎ[ewÕ-?½™Ø «‘× ÙÞÊö¡Ë®t‚#æI'šgô¶ºt¶ºt¶:´‡GÓ_™š…‘õë‹‚±» co¢(óÜ"™›¹ÿžÈ}÷¨+Wy,òÌ_¨-û¦)ÂáÐ57”Nyù kµˆè¨q"¿ÀêÝøež8ý1 CDuŒlÔHû÷w0Mñþß#÷eÈQš`åÇë! öùŸžÀêоtÆÛ©Ë+,[@¦¼0‡‹²};$2Ô9vç8Xy-«Ú×n×߯P7n’ ¦g>t±¡ƒýã'xæ~†˜á5¶mž~š]õx2±˜³ÚÈûñÜò«®¨²]0`µn¥®Y+ÜbIv»x†cuûŽX3†’%Ò¦([3Ïʘ¹®Ëöð=ÿ’‚‰Œ{ :òÆÔ‹Šâ/Ü{Þj~ŒVP V1ãæ —TÀê–ouËÞ6R—èÏLÒ_x€÷£YŒÂ%ü$æ]eASî§PvíòÌ›_MC¯û©Ý¡=íë¥ÎÛòë~—žáBûÏ÷ñWf†"ʇM,æÌ1Iá54Í)Hœ‘sˆÅ´E_døØ0Cƒ.Í~•ÿéIµš1dœJI‹¿ò|4ÙO„(oä}wFJÝëdÊÖmêšµ奬㎅Ç@ûüŸÈ4—ÈûÎû9 Ž©þ°&ÞÞïà9'½±ºòQyBG–í=àYò Ù¸qô–´ àù.~Ï'2RûP¶mËXï<ý žÏ燮¾>·wuC¥œÐ27'rÿX'µö¯×è܈ˆˆˆ~…!¢º§|ÔHçEèš|S^ÏØÆ÷æÛÞþÀêÜÉ<ù$­X¤¤ýJ_íÜqwüµyçÂП|&%Ê ®YçÔ„6Î=[ææTµcù•¿A0 pߟQKívÊ랥˴ ¥ZËi2VÇVçN|¯Oó|³Š|q¶˜}û˜'t }û¯œÁ—fÌc¢ìØøý×åW^ߪ©Ñë~@[þoï;ï¥ì"ûŸ|F[þoÏÂ/¬Ö­Àë‰þþÚWK´Ê¶øŸŸíÈ넬ïh€(-ûR—Âù¦½¥Íw—#ñx™qé%N,ÌÿØS)w©öíò”åK¤Ïë™û™ºa£þÔ3©cUU'e’uê)Ùž&ÑÏ£0DT÷çžv)F`ì¡A—úyÂ3sŽºf¶`‘þÒ_s†_=ååд²¿ŒsV™'ÅKû¦½¥}»¶[j+V†.»R]½&Þ{-ÊgótYèêëľøbmÑâœK.ƒ”Ðõ²q÷W³£}L³È·P7mι`°º2žQEÙ¼Å?a²ÜÃd“&åW_Yë±Cð|ú9¤4ûžá¤ËÉVÙ„§œÔ-Ú¿¿Ëx~ð¶Ñ¾W§jß,Óþ»Ê;ãÿÃåö?×óõ7Ì~g]Ø1z÷hÙ´)€à÷ø'LŽG¢åžy Bëlß |äMp Gn½ÙnÞ@ÎÕ×{?ší|¡¢¤48òvϧŸ×ú"ÔŽ¶b¥>ùŃþQW­>”£d{X§œ ѨÿññÂÍI$öîÓ_™¸klE¿î=oß><þqÚü¡ënŒ'‚‘ðÌ[ºòšôñ˜}zÛÇ Àû™¾éï$Šg‹Żƪ›6ˆ2Ñÿ; )0á·à3à“ðËŒö*ÚçIö&9ÝÓÚŒ“Ð%t‰|w‹Ï„n" ‘ú¯DŽ Ý„_"”ép¹ºDÐ}Lj†ŒÚ;Ùa!~ºD@"/ËÝs$tgœ-Ü~R»P‹£Hø è|&t zŸ•·7à³à«ê¢¥µ¹íñd}݈ˆ²Â¼0DT'…'އÞ÷ÿÀ³t™gé² ‚Áð„§Ì¾}œwvÛ6ѯ×_™"JJr.*›4±:uTÿó½Sµ76|˜(+óÌš£nÚ Ã„çÈüõ(„•ßÅóéçõ;`µo§ìÝ'œÜº^úâdÛ™åQµèÍ#Ôõ¼ï¾¯­\•;ð<Ù¨‘›ãÔµ ssKÞ›.6¨õèbCé=é¼.Ï~9’Ãê–_:ýµàÍ£”Ý»EQ‘÷Ý÷½ïfhfö=£ôµW’k?ËœPéËÏ9;ê=©?ù´Õ®­ºm{¢pUìòá‘?Œªè"àO}9xíÊ®]Á·B!»e uýض•ßEݸə rth˾Ֆ}{Ðf²a+¿ó¡(«{ 2ö.ÏgóDq±ï7}Ó¦›ÝO%%êÚuìæÍ£¸û^ÚÚõæYœ]b—_¦nبO~Á3ç“úϵڷS ÷ˆýû¡iå×\í{}Z¥Ñ¨Jéë¯æúÊÊwÜíÿÓCv«ãP^®n݆òrÑ[n<Ìe¶ˆŽ.ºóZÆ·Ø~¾ôR;! †…BYÑÞ2a ¬2á×Ijû´ @Ã& ÝLH@–…>ƒfHø-HÎÄ7iÂ6áSá(NtdÁ€%ÑØB© 31T ,øÕJÇ­þdu 3eÅ[K Ð€®!_`yMzp#`H-ìsÂUb|ª{¹²=Š ¿sîìøu@Ì„®B§Ága›ÛØv/ZÐJk @¢¡…2 FRç–À~ºŠÀžšœ5Q¶8†ˆê&~nBɇïœç¬ÑH&6,ÿí¾Z:(y{äÏ÷G¸W†BDa¡¶øKQZjvÍ/ùà½ðägbNb”ýû=ó©a Q<ûÃØ°Káõª6:!sà€’ÙðÝ=ZøÙ§KßzÃj߀ػ7þø­iåWü¦xþ\«k—ê;¨žÕ¶µÙ5¼^ãâÚgT5ûô*þzQdô¬ŽÇgøôÔîáç&–üýJýâÌ>½Š¿œ»|¸ aYêºõNÆj×6üü¤ð„§R›ÝO.^ð©qÁyðzEi©ºv4-vÉâÙJ¯·ÖãÿIËæ°Í+ùÇ ³OoRû×ruí:™“q]ñW ʯ¹Ê:¾Ïß?L>Bäþ±Ñ±wË ¥º~ƒØ¿ßnÑ¢ôÍ×b»—’ª³[Ýò‹?™i ¾BˆÒRuÕê†0 «ãñáç'E|à'Rù›¨ ø €„óOÄKíÀ‚?¹±„nÁ”nÄÝ%Þ^¶ÜhN2Ò‚t:D¼Ž$`b¦Ý‚RÖGRW#:Ÿ˜(u'†*!mØf¦ã¦îŒ|> é¦w:2ÞóªšÌ(I"L˜‰CP Õî(&t¿pÿê‰ÿ$!-X)óŒ øl÷ rûw®gÆLw eÒ­k˜è\Æ;/•¨ŸÍYÕ«µQ]RXX(Óë@Ç uÃF±w¯(Ú/CAÙ¬™Õ©cuÏ~Ñruóeë6Ù´‰Ùñxøþê¡ Œý“oÊkP”¢]?@yLûÏ÷(/·;´·›S›ÃeÚºõ¢p×Òju‚Ã;àÃEÙµ[Ù¶]ì+B,&›4¶Ú´–5( eÛ6uÝüV«ãìæÍòÿ«˜¡­\%ÊË“O‚îP¿}¾(.Ž žœ–²äg£Æ÷€²k·ºåGÛ:Ú-[Ô¨óh¹¶n½Ø]`uéT“]Dq‰²u›²c§lØÀìÒ9Ûÿ¬š4i"&¡Ÿ>B…G ÄÙ(HGT ˜á6Ö)ŠHš~bÂØ2ÞOÄËä¸3\â‘ ]–KLX•·kÎt‰w¦I¥C˜ðK¸‹!Tä lpa8A!UC™Û^w¯¡b¶ ¿ ÛíAØŸØ.ÝÁ'·¯ŠÛy¢  ØÒ™7”íQœëﶯ'°;å+@å]œ¯Ày­ADH´¶°+JnŸ¸t ”ÄŒ!‰¦{­@M›ñDDtèøÕ%™£0uAj†Ž°_Dæg„Qú©IJÒÅ­øÓ»P¡”HDO2>·;± T·}¼s'T‘‘ )4 ÞDô•.“JHÞèžB eÎÿ2=I ‚R¢0 VJœ(ùdmØPÝÁW#q¦€Ð’BTµ;Š ŸÛ¾§ÀÂʧæ7Ý€NJFªºJXz&%š@¢‰…'”T“ØQ¶8O˜ˆˆˆˆ(E=w勨4LA4D“£ŠEAêBK¸ë˜©5ì$„V9´¡&µIÁPÝŸÛ3,EÚOõEñi5­3ívDD‡£0DTÇhZü‹ËûÝ÷2'uvüG_Û¶m;tèðé§ŸÖnw¡j2'dzj5/8ÕŽ@D¢‰ˆpÃ%´1H^L$2ašIÁŽD%  Ê|fÕ¦Èb.FÕÓ@ìƒ5¨.´SÓƒ¤u˜È¤{ˆG± ['UþŽçvÜèIZÿUÅa2 AEÄ€O¤}Gn}ë€@QFMD” ε#""""ª’„Bv|mQracEC€„ß)8í~âTPRN˵4xJQ)õ¯PSSê4É…{ÜtgnNràDŠÙŒIL’ÒÇ{KÏΛ(-¤ì·³éùVR$j$ii)Škq”Ä.‰²Ó6¤͹†nîÞø±,øÜXj–b··xÅ«*.T} åî®äUQ¬‘DD‡CHDDDDT¥äì-‰JÆ2)?Kb LZèd9»ê¼0‡tb+)[Én:FÀié)o—l"‘c!–”Ð7% 5ÌÂÌÊ[TÀBÕ¿a®~2Nòú²ä˜šDÈ úF¬‘DDDDDT‰‰€ ŸŸDNòv" ½2î" ”Lµœ“âG* #þ*>qr÷êUíë–‚‚‰¯3íßÝ€nB·ªî¡&²=Š3^ñÈ”¢evÊ¥Tt¯s†‹,©[ú›Ðƒ¦ µâpÖÁ2ûÕ£0DDDDD•$’¶&Ò¾&YPåNÈMÙdA¯¦FÒá•’ëW"”8b5ùM(¢b—ö)ŸÚø‹­j¯ÖGIÏ*,‘›”G¸ÿ*t^K@¦¤Ò“ ,tÍH‰PUÃV¹n€ˆŽFaˆˆˆˆˆ*Ñ0È]à#MèÜíõ­´‡|á>ÿ[0sg$r,ø“# fÕ…ŠiAOÝ€îL'€Zm"H2á>˜Ø*ŒwŸÝ)- xepÙE…-â;BÂ/1€Ä8‰€“RÇݽ‚êS,Ø&î’¢úf¥@Xòâ=˜0%|‰í†;;F@p9 ÌÎKDDDD”J"˜X“È*’œ^DÃ`$t+)k¯Œ'èu2¡éD_YcŽ@vÞJò"¯m<…°Û>5;/‰îV%B‰ÝÝ·P¡45/ªÍÎ[‹£I‘‘DDLV¼uÊ ùË—Èrç9ý»WF$ê+%Ÿx"@ã$–ñvñ–*Ôšœ5Q¶8†ˆˆˆˆ(•@X…G@¤'v”;!QZbFLrs¡DÄÄ>’sa44JdçMŽ#h’ª¤X®!* ") xÍi¡B–`D¶GÑÐ5±ŽIVZ¯äDRg»…ÕI‡ˆªPÝ/¢"Ü£¡qÆß=«h§Äã5p `IçWáa†ˆˆˆˆˆˆèh“h 4ðKäUÛ2 ¡ð¥§&9BLø øLwÚˆD{ ¿½Öh&0J4;|#­åQ$ZK„L$Õ_üÊ{Å/BzšL‡Ièºó×ðDDµÆIDDDDDuRbERÆE@DDôÄIDDDDDDDDG£0DDDDDDDDG£0DDDDDDDDG£0DDDDDu’[b™©‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆè'àÿNÜ]ó endstream endobj 130 0 obj <>/Filter/FlateDecode/Height 428/Length 37450/Subtype/Image/Type/XObject/Width 1495>>stream xœìDkoÇ3333“Ìd2I’$I’$I’$I’$I®+W®\I’äJ®+ùI’$W’$I’$I’$É$3I’$I2óüÞ?çœý©³jk­ž·Îûž§÷¼çÜí{Þó¼ïyA@âM!EÈ ?³;-èÍôg"îÀ¯ÚaÒÅú3 _=þ ;äç…ð›RËèÏVÜ;^³#m¬;ÖŸiùâ”4ÖÖÖæ %äg¥I~Ö­ô§CS‹;pÇËw$ÀïX¨ä‹ÓÆXwùTèP×$Æ ®#‘uAb ê:YP×$Ö ®#&')Ö=@/Ž ¿„HdɷǺòÅI¯Öƺ ȧý0kЃDÔu‰5¨ëHdA]GXƒºŽDÔu‰5¨ëHdÑü,Œuä‹“Õ€ó¦O²¸²²2 ô‘ŸKB ù¹’–JÖâŽçv,£®#HlÑ[b݃‹Þrp||<.Œ’ŸB3ùyœ•A¶ û¸ãÉNï±þŸC/úažäàBìW ƒ¿±î‚|qPןuýUa;Ö]@/êú“ ®¿ Ôu‰5¨ëO‚ºþ* °ë. ȧj³–=AÉ8Î)¿\¿Ž ò¹Ð»þĺ òÅù~hˆu>* ‡¶Xw!Áñ:‚Äô¯? ú×_…6bÝùâ ®? êú«Àõ0kPןuýUa+Ö]@/ÎSô¯?AÓ)ú×_ú×A>º3\ƒ ±¥|ׯ?AÑ0®_8^GXƒþõ'Aÿú«0ÀB¬»€ _Ôõ'A]¸Ab êú“ ®¿ˆ¤KpÓÏ’¨ë]/ÆëEu ã³çæ#ßhm¬¯Ôô¼è,öaéEöe±>½Ø² À]#äg:)9Ö}BOxãX‰õ•z‚û¨žõT¬O/¶lS%/¦ºNó%9iÉë>!ÈÇ' âïj¬¯ÔÜGõ¬¿¸®—Ћp!®‡©§…“Xw A‸Õõ=“EÙºœ6Ÿ£4èì¬S–mËi ™ÊŠŸ]•ãÊ2ia!KYÑÕQ3ª,'-§.f^@Ôõh²C¯B— ‡IA¸£Û™êƒ _žxÕõFR Õ5À#\¥ù*Z©b–ÍrL .S|ÍÔ`DÑÂ!m!ÕWÑF;ä+'8‰Á…#ࢮG«—\…G=7ý^L¯Ä7Eíí?TèPá§ „¿Ñ”¥ ë•^V; • [¬|&¯6©á=RÙ¸ËÊ.ù5þjnÐ'·À|¹àN’*ê¸A—T6í±òi€ƒ7ºº¾ßŠzUè B#|PÆèeX ºžÈT ñÍp4õ"þðžòDý)z¸ :ÛÁËÚe²=O¾ùÎ^Qúp~@*¿ñ²nlÏ‘GâûžÅÄàbŸT´‹+Ô€´p,¶Pæ!·‰CRÙÊËúu±…CqE†¦öh$ººÍÆ•|Ü„™÷% ¦Ùm·GÝA>2¨ë~p…ë=N§×&›|Ùo2ÍT·›hYólR× ì›hEQÛë4Ë1©¨gódë¯ÐN~î°!_.iá:ÝrD*™Á,Ù¾‘Ÿ»lñ}>iá*5ÁIŽÌVXj€:e:ÈÏmÖB޳Ÿu u=º4Óîý†«XwAÞH˼ s*¨-Žž!¬¼—r¼®p÷p™*©Wd+_¬§¤¾Š\+êz!Cù_ä÷†^2nîr!É à)'duU÷’ß«DÃÒ¯I ¹‚`sƒJ?îÿ#¿»ÉïubIZ¸Íû1 ‹È'ÉŽ ò›ŠùŠ–ÜZnàNìR4Ïút*“*L¨0ćõà»ì2—ƺ/Äͼ©kppp¨û¹#IÒZ!ùà±XÖZA$[‹ZÇ«&¤\<C¬šVЧ 9þ] -SÓ‡"á7©^bÈÖ¼†ý]!-§ñ{È_VM+ø=$‹Ü³×â8×ÃDŸ%éb`èz øÒu¡…—Ú¤îçqY•æ2Í7h’ XyÏ$–µ¢J´Hù¼…Ù`4HE¼…])æ ›£%².Þ9P×£á‘_ŒquSA(Ï ËÇa™÷÷uhwùú_ò^åÚC¶ðEZ&C©ði™ A¿I :}eÔà$Ñg°N Ú}•^bpì‹›nØ"e8Þ®®õ8œv)îbÝ ‰j[âé•£fûÔ²ÿ5;åÇÊw…Œ[-3ýJƒú­Š#eEÓNô_–†ºò£de ÛM³½JƒÆÍÊ£$EÙ¼[ûKC6uEšD.©®7Ǻ‚¼Aól9„AÄ[@¢J)‘õÓXwA‰;AäSaõb`AOÅ/ ƒ ‚ ‚ ‚ ‚ ‚ òÖôO‹]ýì#‚=Ö'&uâÌÕ³þ¸ñs$Zè¢úwlIQ?ÿàˆõi†Ëì»\Ž—sÕ³Žõé!È»cŠêw*Æä¨Ÿˆ³¸_Œû… ‘uýÍÄ­®Û’ôþ¯ æ 9~ï÷Û­†Œg ’lj-$µt¿†®›²ŒêFs¶C=Ä1¨ëo&^uÝrt¶s›¥¨øse$×§kïZ)ËÄ`DÙ±{÷F)ìíÄ`TQN<9Ý¿NSTt¬÷oàüüº®ý>ï"}9ûùÄÇ÷ùir»¼¤ÙC·2úZž[ää`é›uyÌíG}˜ ·Ñ¬´êvÈGuýÍÄ©®vhå¥o¢žY ú>4«5œûâ461ƒ>¹lÜ¥å _(ÈfàÓMŸ g¾ùkû=0ur<êº&ˆgŒ“rw΂W(SpM~šzCî~‚¿€ê…ÊÓ~àyÁÿb´†×n3nP7D>*ŸZ×ïnnU¸Sá^…J¬O3L¼ë iyˆnXÊS·>·ÜCÔ€ÔýËú n Gf¯òriHÉâ´“:—”„§Blá§ÔÂ&7#³×ˆ-|—>}zÚ£„èêzh" §×ÝNŽ;ªò+;ˆ¾_‡œÌ®ïPÆþÑû‹OLt}|ÄGAxín€§;;ˤnˆ|T>µ®#J¸–5ógq–i˜ÑÅt4+ÒeÖ>Hƒ:í"Ù¢©ìø3}ñ#›gÒôFÞÂ<ÙüÛH~ñ Y tˆÎã|³¼Jtˆ¾Ï%¢„´pžyD*Ä>4|g]Š®®G³q%Oëz;€èœÒŒðÜÞAp]ÌfýK¾¼Aº.=Ki¼ðHï¦D×Í!þP`Œ°8uýËÀn“/ü#›ÓÔ¥.¦§cYL³„D§”ùt XÚ´òk‹:…sh’Ò Áê",-éÙ3ÉD‹§FÍ&-Üd ‰4óiµ f1£.u1ó)M¸w.ØÜbæSÍ$°ÄKŸ^××á^+njÁjúTÔõò¤® ¹mÓ,ƒ¯Óõ{U7B>2ŸZ×ë³2UÈPAí¥—4Bu¬O3Ld…„ßä×›`é¤S. IÙ~ðX*4õõe­vMô7”IJH†Hým¡—l¬ê„Ô+bOÊÉ礅bA CS˜¥- òc¥ÓÙtƃ«€ßÑÕõyG(’U°«ÄÓß±c8”·É…§WÑb· BbU[©8Êu]c·KδÚöߌ´&­®%G1”ו´U'>«ëM|¦ä]·ØCUsªX*úVÁOAg·?”Ýn¨gÝÓ imºÐ{{]S¦Vn__ÚÚZìK}¨4G¢Î§Öuœ7Uâ]3 ‰t¶´OCsŸOr‰ch"(TŸóz€É=e”lþKåžqCô9»‹Ô®ó˜€Ûé(¼Œ•™€çö‘ÚÞÂ8Ùœ–ä^ž èú…tÉó¦/a<òܲÅÁôr6+´{×|2"À¿ž¿Íú¾•Ïÿ¨ù––<ý’h~cYí–LÏèzÀ„ð¬®Áb&ùŸbn7ë ÑÕQùâ…ûPOJäEÿ×ÜÚÀ=€ül­¸äA7Èú|×Ç?#þæHÔA]3q£ël=ŒyŸ—ö¥‘á$)©–—?P‡ UÚÑ_ ™á^)Ít>ÙKl`Or(L‹ub9÷ž·°-F™/Ÿ|ͽU¢õåÓùÓ nðÙu½à´Î½Ì0îÂùô<ÖÿhÙ_×=ä/–ȾºzF7O®÷æ2¹ßîòÜáäQɳ»vOëz3Ÿ¾~V×WÙ2"µ¥äP' ^x$"Ÿír‘ã¹\õLׇé_,í!ºÞu ×ûÒ²‰ î·è݉½ä`ŽDÔõ7/º|£…N}úÖ¨Z¾N^£"=Òò‘ü­åc­Ù ÔCËÎÙ`‰´É%¬…CYQØÚq…£œµ°)êþg×u=a¾™mQä§úø<Í$lÐÙ ?]w<Àöj«=p¦a“ôRvz¹Œ“K›LZg@d ºN—à L×µ2~÷–1ðÂBeÓ¢—pQN{¬ÀÞR¬'ºî½ì,é/ÚCtÎÈóž¡—åÕ%9O¯_—G×µ²S¨i{†ÆÛçºT/ëzО@]o—ûÜ ^kðhƒºŽ Ñe`G\ퟴÁ†çT×7YEº—­1ñÓõ>ºlò D°Ý“ß~ð ÊS<Ä [+ ]þHOf7Üøü0Aõ²®í ÔuË =I0ºèFÐhƒºŽ Ñ%ëàzâ{AVÃïk€Uº¾oº`„’+x  ÍýtÝpw4î@Ólð÷M÷3ÁÑå…Kú°ñn+‰1÷vúhSìòéºé<]:A_¾üí2é}Ó€zŸ®î Ôuz Z²’§“Uð–†8mP×ߌa|6>¨U?—˜ÐÕ³.‹õé B‘bMË[X> Þ}€c†½¨ä¦èà~ÿàŒ¾Ä£ vu, 2ÅNvßyaã ]Wr¦ØåÓuÖ?Ï]]Ïß\u=°Þ§ë{‚t]Kc:½¢Ž‰6¨ëo&멜< Xy—Ëñrî£zÖ±C†Ø½Gü¹-FW#ºn˜¢Qt–ù»¤ñfhX4Ï_чR~LÿÖ3.¥$̤ñvgõ›ÒuÁ<Á^Ru6ð·‰$]¨WèzÀž ]„ZÝ\òH´A]3ñ÷+0oõ‡á³ÇýbØò*ªóåwè‡éJt]~±í)sMZE¦"àº!§"Cé˜N*É:Ç«°—† þTýs{8æB¿ÓS3G" êú›‰[]ÿÑS1©?Y—Óæý.Yggõ˜²l[N[ÈTVüìªô «EZXð ±ÝÕQã—z'i9u1hAÄ—Ðu˜®#H´@]3ñªë4…’BuÍðWŠˆ`­Ô௯l9&—Šˆ`ÍÔ`DÑÂ!mA¬wÈWNpƒ‹ÀP­¨ëY>µ®µÿP¡C…Ÿ*ÐEc}ša ë•zœlÏJÃxzz·dÜMÅ|C\OM_%œ>!<˜SÕÞ èÀ|ÆET[ #Î|>´…5î«`>ŸÙkqœÿ%×à HTA]3ñ¥ëR–9TH—Ui.SÐÌq9¯MÁ+ïI9x´KÜ@>›Ï[8 Ä·$ƒ"Þ®”¨šÍÑYï¨ëYP×ßLF¬O3\–y¿Q‡¶"üRÉ#x•kÙÂi™ ¥ÂC ¤e2ý&5èô”Qƒ_Bb¶ðEZ&C©ôƒc‹\6l‘²GïGW×?Dy_P×ßNmK| ½rÔlŸRö¿f§üXù®q«e¦_iP¿UqdW”M; Ó¿•u;åGÉŠ²q»i¶WiиYy¤|‹Ü¼[ûKC6uE0Ÿ&òõ@]G y¶ â- 1P×A>¨ë‚ Ÿ ÔuAÏê:‚ ÈçuAäsºŽ ò¹@]Gù\ ®¿{z|`P?•˜`‰êYG8èç@÷ýŗŬn‚|P×ߌ#Ö§.³ïr9^ÎyTÏz8Ö§÷ÑÃùË”=gyHÝù0 ®¿™8‹ûõñÀ¸_\™({Æ<ÀŸhö‰0¨ëo&nuÝ–¤Ïô«ÈrüÞï·[ Ï$ÙÔZH j!7袮¿;zvmÂTöÔjŒÏ=ñêú›‰W]·íÜf)*¾Áœg\QNpºö®•²ÜA F”-»wo”ÂÞN FåÄ“Óýë4EE'Ìzÿ^@ÔõwG/^0”Ý1Ém¨2´zƒÉœhKJv¤¦edfçæ—”•WVÕÔÖ745·~ûþ££óWwO_¿zkÈkA]3qªë†Zy™"WÔ3«AßGƒfµ†s_œÆ&fÐ'—»´|á ÙÀ |-Ðô©pæ Éc¿÷\ÀxÔuM!Œ.£ybBEÙ“F=¢ááð£ãSÿfææ—VV×7¶¶w÷ŽŽONÝg—×7w÷žgˆ'*ÿ1ãSëúÝÍ­ w*Ü«ð@‰õi†‰w= }‹u«ÀRžº¥ð¹åä[IOå—XÖop92{•—üZXã.›XQ!¶ðSja“È‘ÙkľKŸ>=íQBtu=4‘?PyŒ]pÚ‚{.’ø÷1Š~‘P!/âSë:¢„kYs=ûgY‘†é]LwA³"]f퓊VVÖ.’Í¡fò〯p+&_ñ‹ÌCRÑÈ[˜'›É#ÞB!kÑ›y 4¯Ò¢ïóLJ%¤…óÌ#R!ö¡á;ëRtu=š+‰S]¿ÿÜq‰Šƒ×7ì}|¸»½¾º8sŸžìïîlm®¯­,-ÎÏÍü›šûO<ˆ5+ÅøÄòZP׿ \á6ùØÙœ¦.u1=Ëbš%$:¥Ì§SdÏ8u©lÑ…ï94Ii†`u––t‚왤.u15j6iá&SH¤™O«1‹éu©‹™Oi½ëtÁæ3Ÿj&%^ú¼ºn³TRÄNß=£ê”Šéüކ~ôõvÿêìøñý[kKSc}]MueEYIqaA^nvVFzjJ²Ý–˜`6ôÚ°UZ£ùE?_¬4¢¶GŽO­ëõY™*d¨ öÒK¡:Ö§&²Â ÂoòkIKþÿ{€¥“N!CˇBR¶Ÿ<– ÍC=G¿fdcY+¤]È#eDZ,„!R¿@[è%«:!õŠä“rò9i¡XFHý,ma+&Ȧ3ìXüÆÀˆ®®Ï;B‘¬‚š0&»ïð+àó¦ÏŽÕ%JøÍ—Ž¢F×~Í?™÷‹õ:Töñ©uçM•x× C"õÉch.àóI.q -iTŸóz€É=e”lþKåžqCô9»‹Ô®ó˜€Ûé(¼Œ•™€çö‘ÚÞÂ8Ùœ–ä^ž èú…tÉó¦qÕõ°TRH§bà_T:¢Ñê–„”²Ž ò ƒóîTöˆ€ºþfâF×Ùzó>/‰>oA˜$"ÕÐ –©Ã…*펑—53ÜÀ+¥™Î'{‰ 쉴hP'–sïy ÛbàæË'Zî­ ¨/ŸÎŸnpÔõwG¾ªSr£õ¶²Fg0'RU’­xˆ<È]·ëQÙ#êú›‰]¾ÎÑB§>}kTíÛ)¯QŠØq2”¬0ƒÙ ”­gsʺÀ&HÚdƒÖ¡Q„­½ðe.g-lŠººþîè^¢ê”ÌÙ¨éºÅš”Ì\cöäïÇÇá;ç‘§@]3 ΋ø@\yžè½=÷­)§ üÖ”WyOïÝŠÅo†-ït* j½Î»3…CY¿I ºÕÞ“{—ÕW6ìx¡CaPû®-i¼ÕòM+äõ˜ÔM^Fk0%X“ìÉ|ÖÃÞy žt³¿Ôõ¯‡AÈV¾*˜*5u~¦ÜeÙ\®­õ3¨4æ¤úµPÔBžCY¶”´Pe´ÉB‘UM$EÝæ]Ðhu“%Áj¥=9}`=‡ìouA¾ú»*{UstzB„]o0šÌ–DqÔžÜ~Gö·ºŽ _=À‹”½l/jñ5DÙuz¢íDÚmTÙ“K.à<…ýM ®#È—ƒ­_[Ù‹·ˆuP¸¶ˆ¡!Ò®¥ÃvUv2dÏsÂY û[@]G/‡Ï1,eÏ_g¶áÅsTE«c#sêtQVSmgÊÎÇd:á$ …ý  ®#H”û¨LH_‘{5eÏ^-g2²hÔÝ¢âÒ²ŠÊꚺúƦu÷ggWwoßÀï¡?Ã#£cSÓ3³ó KË«k›Û;{û‡ÇÎS×ÙùåÕÍíýƒGÕ!0ž#•v½Ñœh#ž{[Fö׃ºŽ Q"â~=?f§‰’¢…7øpluLõÅÝÂßD™A@]G(º~ñCÿä ´D3jZ]ØÝb%ÂÞP«Ca-¨ë%~õT~K_‘ËgT]àD½ˆ8oúÜX]$KòļW<Vg´ØìŽT'LpÀþJP×ßLÖS9y>°ò.—ãåÜGõ¬1>L˜®‡¡ê”ôiæ‰N<ǰ»-ÙQP‚.öW‚ºþfâ%îW`ÞêÆýzwôa«:%eÜ0ÍþøA„Ý””ìøÛFôļÔõ7·ºþ£§bRùµ±.§Íû]²ÎÎê1eÙ¶œ¶©¬øÙUéV‹´°¥¬èê¨U–“–S3/ êú»£ªSì#sÑêK0TØíŽÜ¨Âûë@]3ñªë4…’BuÍðWŠˆ`­Ô@ñš¡å˜\*"‚5SÅû*æCÚ‚""X=à$~ÁÔõXð"U§X«£Ñ' QÙ­ÉŽ1ØÃûëøÔº>ÔþC…~ªÐIøëÓ “]¯äkؤ²a‹•Ïä¾5Ü@ŽàkÜee—Á·šôÉ-l³²[Žà[Ç ä¾¦=V>UDð¥DW×÷»CÑ£B¯ }A þDΘäÈy€Rœ:}ŸZ×%Þ³Bžø5)z¸ :+†E×.“íy¯/_Fé#À9ÍGÿ—ukd›f>’2nƒ š}©]4 o&ΑŽÅÊ<ä6A³x´ò²~]lAʸ¡)¤=ù´y«?.úÉu#?tAî³h"zbf`ì¯uýËÀ®÷8þ¿gßÜdš©n³4Fšdk”º^Ä yyDm¯Ó,Ǥ¢žÐõn…vòs‡å9Ê%-\§[ŽHE#3˜Däù¹Ë2fÐ|yW© Nrd¶Â’%f:@Ê—ãìg]B]wôà}‘²k[φԭ"Í£dK®„‡d°¿†O­ë ó*Ì© ¶8z†°¢Þ‘˜õ.S!•f§Î멘vô?²k†|~‘ßz1;uŽ $Ñ|ÔåÄ`øæ^ò{UdzSßç ‚ÍE *Éš‡š®…ë&¿×‰A&iá6[ìgbFkšHu‚ü¦b¾¢%·––&5Úº~:ŠI&T"®Ô‡®s _Ù5ä?9ZqzŸ€Ø¡ì¯áSë:Λ*ñºˆºŸ;’$­’Ï‹e­„A²µ¨u\°jBÊ%ÀC0ĪiÅ0ÙšÓØéß•Ð25}(èŒKÌàÙš×°¿+¤å4~ù˪i¿‡d‘ƒgŽtiçMßþ^R˜Ê^ç¤ÆÃÑî“?|À>kf\ó P×ßLÜè:›7m Â~v*ùFÈÀœÈë•âm1‹ô8Ùž•†ñôônɸ›Šù†¸†bšlOŸƒ^fsªÚ›¢˜Ï¸ˆjWð2óùÐÖ¸¯‚ù|f¯Åqþ'^“•óQ)®Î´ª²WrÓÿBí¤qºÌ ‰¶¤dGjZFfvN^AaqIYyeUMm}CSskÛ÷¿º{úúþù;òߨÄäô¿Ù¹…Åå•×䨀½íèˆy¨ëo&¾t]há¥6©ûy\V¥¹LA3Ç š$ƒ‚VÞ“ò‘j—¸A‹dÏ[8 ¸AƒdPÄ[Ø•U³9Z"ëâãÓêz<ÄýR³—íI†Û»{‡Ç'§î³‹Ëë›»ûGÏüüÅãKbN¡1¯uýÍdÄú4Ãe™÷÷uhwùú_ò^åÚC¶ðEZ&C©ði™ A¿I :}eÔàÄ— š-|‘–ÉP*½ÄàØÖ°EÊq¼]]exÐur?¶=y…[Ñ<ðóO£Õ›­É0fÖk#üÿò@];µ-ñôÊQ³}ÊoqCÍNù±ò]!ãVËL¿Ò ~«âÈ®(›v¦+ êvÊ”éoŒÛM³½JƒÆÍÊ£$EÙ¼[ûKC6uEš„˜qtõa‘¿#GÏEƒcÂÃûøpw{}uqî>=9>:ØßÝÙÚ\_[Y^œŸ›ù759>ößÈß?ƒ¿ûûzº~ýìhÿÞÖª–[£3%ÚÛaÏ‚Ž˜—ƒºŽAól9„AÄ[@Þ1žãóªN±HʾYWS]I£îäåfge¤§¦$ÛmֳəMÖ`I*„G:b^ê:‚|9¸®«ª:Åú‡ûɦ£Þ©¨#Æ–| Å&=êúKA]G/Õõ°T’0p ïÏQBCWÄìA3:Ø_ê:‚|9ôá«:ÅÜs ³QëÌSÐ1öèCûËA]G/‡ö¥¹³Œ£êFF£5$$Àd‚uý¥è߸õC“¦~þ‚|LèÄ©­–pâôå¤ä}ZÞ5‚ÄÚüX÷ èÄéØH4¡®#‚¨ ‡Õ—)»¹¿GÝ(ÒÐ7“Za׊ºŽÄ{z|`ˆõ…zKTÏ:®âç¾t=Ì ”ÝØ}ûÞñ)½ÉÚGV.ˆAÞG¬§ÂåýW4„ÇyTÏúãÆ|ýz˜Ênè¼P&D|/è§uà´âBGäý‰³¸_O÷ëã"½o†²ëÚy˜›UËPht£Ù’hM²;RÒÒ3³rró ‹JJË+ªªkÂøc¦ë6Ôuäý‰[]·%é3ý*r…?G¦ÝjÈxÖ É¦ÖBbP ¹AðÓêúÚþGå@¾>*Ê®m•‚—­5µ´~£Qw»º{û~ý¥Qwgfç––W×66·wööœ§®³óË«›Ûûϳɪ<ª×O£3&Ö¢®#1!^uÝrt¶s›¥¨øsžqE9ÁéÚ»VÊr1PÛ,ÇîÝ¥°·å:çÄ“ÓýkåjÓN˜õ=ÐZ]xŽ«OÇsÔ4žFñÀª×u‰qªë†Zy鋾]Ϭ岉…Þ>÷Åilb}rÙ¸K˾P Ì`ÀמùBAòØï++âQ×5A„0Š ]_+xú,›î"w¯çáþöæêòÜí:qîïí¨_d1u `ðææV…;îUx Dî³U¼ë iyˆnXÊS·>·Ü@Oå—XÖop92{•—üZXã.i¼W!¶ðSja“È‘ÙkľKÿCzÚ£„èêzh" ënʪ>*µR¯7ŸQu¸‘,/×WW–hÔÝ驉ñÑÿ†ÿ ô÷Ò¨»?Ú¿µµ476ÔÕVWU”—äçæde¦§¥8ìIÖD‹É¨ÝBEÔu$ÑÿòÆ3\ËšëÙµaY‘†é]LwA³"]f퓊VVÖ.’Í¡fòã€gR*~$cóLš­‘·0O6ÿ6’G¼…BÖ¢óÈÚ,¯Ò¢ïóLJ%¤…óÌ#R!ö¡á;ëRtu=š+‰«õ”â¼éscuã/1Vû»ÇsD]GB‚ºîW¸M¾ðo Ø7õˆééXÓ,!Ñ)e>"{Æ©K`‹.|Ï¡IJ3«‹°´¤dÏ$u©‹©Q³I 7™B"Í|Z-ˆYLǨK]Ì|Jî]§ 6·˜ùT3 ,ñêúûÃt= U§~°…¨ÿ¢Ü¥ ®#!°eeeª¡‚ÚK/i„ê÷RŽ7"+Ü  ü&¿–è—¥X:é”K€‡BR¶Ÿ<– ÍC=GžÈƲVH»&ú›GÊŽ bY$C¤~¶ÐK6VuB*ÖÝÓµÉD‹a„ÔÏÒù±Òi‚l‰«€ßÑÕõyG(’U°«Dì>ç¯@¶ªStmý€ºŽÄޏ™7]3 ‰t¶´OCsŸOr‰chAH£úœ×Lî)£dó_²(÷„Œ¢ÏÙ]¤v·ÀÜNGáe¬Ì<·Ô®ðÆÉæ´$÷‚ôl@ŸÖ-¤K†xœ7sô/Puжéd.J]yÔu$vÄ®³õ0æ}^}Þ‚0I tr¬A,S‡ UÚ#/kf¸Wz$Ÿì¥ë$öDaZ4¨˹÷¼…m1póå-÷V‰Ô—OçO7¸êz ÉR·‰ø1Qב˜/º|£…N}úÖ¨Ú¶S^£"=Ò²8J V˜A‹lPÊb;;dƒ%fÐ&”°ÍR™­½ðe.g-lŠººŽ„u‰ ΋ø@\yžè½=÷­)§ üÖ”WyOïÝŠ—U [ÞèTÔzwg ‡²~“t) ª½'÷.«¯lØñB‡Â ö][Òxÿ:šºÊ7­ý¡ú[üþ¤”E¥#Ï‚ºŽ ac²ý2Ž˜*5u~¦ÜeÙ\_§Ò˜“ê×BEP yeÙRÐB•Ñ&9‚„¬¨.ÕN ôäqê%Ênó E­3O‚ºŽ .lcØÊn~ŒQ8Õ”ÝÜ/ƈù´4ênB¢-)Ù‘š–‘™“G£î–•WVÕÔÖ745·¶}oïèüÕÝÓ×ÿ{ðÏß‘ÿÆÆ'§þÍÎ-,.¯¬­oníìî9O\îó‹«ë+Õë‡ºŽ ÈG#.â~=;f7vËña¼‘ÎpïU½~¨ë‚|4âB×½SÖ'O á*šGV½~¨ë‚|4þ-TV|ªžòÌ è¾¹Ÿº<>ÜÝ^_]Ш»ÇGû»;[›ëk+Ë‹ s³ÿ¦&ÇÇþùûgðw_O÷¯ŸíßÛZ››êkkª*ËËJŠ óór²3Ÿ90uA$\ôá¨:EÛ,)ûBJ²ÝfM Qwµ¯ŠºûrP×AÂEžªS4õGL×1N/ò¥0ŒÏƵêçz¢zÖ1xOòã£WÕÕ4¦ÐL4ûÔu$vd=•“çƒ+±¾ROpÕ³Æø0!п@Õ)åÛ€ñ‘/E¼Äý Ì[ýaÀ¸_ïŽæEªN)þ©niPבØ·ºþ£§bR9f]N›ÏQtvV)˶å´¿U ?»*ýÂj‘üâ¹vuÔŒ*ËIË©‹u ê:;âU×i %…êšà®ÁZ©",ˆå˜\*FzÍÔ`DÑÂ!mA¬W0*ÁI .ü"‚ ¨ë1@×®韘ÕM"M„t]›‘aT·Bâ…¢öö*t¨ðS…NÂßhÊR ÐõJžo@*¶XùLŽà[à 侯]VvÉ|«¹AŸÜÂ6+»å¾uÜ@ŽàkÚcåÓ€a¢«ëûÝ¡èQ¡W…¾ Þií_dÐÃÅË”=w%Nã9NìÓlCâh¢ÔyBp»}Âop»'Ÿnîû ¬ÃŽ]0¹Ý?Âj óVûá=!ä‰úSô@>ìTgŰèÚe²=ïõåË(%_‡óRù—ukd›f>’2nƒ ºR¢]4 /»Ì‘ŽÅÊ<ä6A³x´ò²~]lAʸ¡)¤=Á¼Õï]çøeÏ\øÍþ„æíº®’ÿÿ½Ø'¿*ðÿ-_–ä Ñ‚`ùé§à:ŒÃ~«¿1ô†Ó$¨ë~ðOxïq:½6Ùw7™fªÛ,‘æÙ¥®1C^QÛë4Ë1©¨gó@cµÒ€Q;,ÏQ.iá:ÝB772ƒY²5"|#?wÙè‡æË»JMp’#³–,1ÓÐR†¼g?ëêú»ÃßK SÙÓh&ÄXÅs¬€³×ëz*ùtÞ´ääÔÎ’ÏÁý`g²¡Äy8]á[Ž(èúpû¼êúhYX˜WaNµÅÑ3„•g¿î®p÷p™J>ð4;5©XOÅ´£ÿ‘]3d@ó‹üÞЋ٩É#jÍG]N &Èêªî%¿Wu<;õ}® Ø\Ä ’ì y¨ÿ‘ßÝä÷:1È$-Üf ‚ýLÌhM©NßTÌWÈ5ûîÄ.Eó¬O§B1©Â„ ãA„ðÃh>,ñê„¡ìŽ)þÁQ3dg¬ÓÍ–Dk’Ý‘’–ž™•“›_PTRZ^QU][×ÐØÜÒö­½ã篮žÞþ0Z3&”ÀÕëu}›|V“ùfª“x,–µVÉÖ¢ÖqÁª )—«¦ô)hNc§WBËÔô¡HøMª—˜Á²5¯aWHËiüò—UÓ ~É"7ÏéÒà§7‡¸_*Êž4&=ðŽŒŽMLNÿ›_XZ^]ÛØÜÞÙÛ?¤QwÏÎ/¯nnï5ZCB’ê_©ëÿd+Ë­Š5¹á뺉\û-º„—útžÐõRܯÏ_ðOýw×x].ò ÒÍ“ûÁæòÓÐëLt­åXd]ߘÏñ©ÛcÍ ’{ÀÞê-\í ®ÇœÚ–ø@zå¨Ù>å·¹f§üX¹ÞÖ¸Õ2Ó¯4¨ßª8²+ʦ†éßJƒºò£de ÛM³~óý›•GŠGbÁ¼[ûKC6uEš$¾æÙ±ºDÉ×õXÄsÔ,I«ð땺NÆ'~/S¥)‚—…¯ë£|0¼ÈÖë>¡ëGণ–¬8§=•üë“´ ^ ïe]÷^v–ôût`œüaš€ŽôKÈss yž¥^MÔuähͳåoyOôáª:¥€­øú§ni˜®ÂT‚ñUg³—DL7¥í°uHø:ÛHz€í§t=A*ÿ„ úˆ êºõÄw;Á›Ítʤ®ˆº¾ÁÊyÀÞüÞ†;þ2‰ºŽ È Ñ‡¯ê”œåÊ’wƒêº­ _¥ë€}ÿ§´¶®ÃB¾õíO«æ ]×?Â2[v å‹D]ï’Aúš÷›èú!/ût½”•u^˜'?¥×¿íÔuA^†î%ªNÉœ‰® Z½Ùš »é5º®8ñ« ²º-m‡­ëóàQû ?Ì*ÀÙP‰üjš¨ë“p¯_Ø…5ÖynàÓuÑzK‚- çÁ‰ºŽ HÔ1©›DÞdM¾€š×-`¿ßŸ‚/ˆ¼Ÿ®Ïøæô輦-p+ÛxB×í,§ÔýR w苺¾­œ¿w3]äæÓuñ^à¤7“iluA—¡yáp=Fht¦Dû Œ½nât UYn–e5@×'ÄÅŠŒLeܯ#q¥ŠÈSëMç|*š­Ýuý\©ë^¦ëb{Y×½b»L×û¤Å3¨ë‚¼ ýýK1Õ-ê6‡-`ow‚á5Ž˜²úræY/yŸOׇ” "KA›ZXse²®‹«x;}·„¬ÎuðfE]ß…ÃDêºÞâëàê:‚ /Cð"e/ßEqšöE¯š8µzáÚç_¡n—\ðÓõ69ä¨ÀFàߌ€Wtæ¤vT™E]O–ú·r¨/˜ùRJQ×§áÑϤ¦ë…bŒ=õQ×ylýzØÊ^LÅÕí"8M^‚qÓ«ìÿøÒyéö•‚í§ë©ûb As ®h£]žËì¯UÔu+€øþÆ:Óõò…cîñÑžÀ™@uýŽÿ…ô·ÚÍ•nu]7ÝŠË…r\ç{ìéñAýTb‚%ªgWñsß ½øºi8Ê^À_L +ž£*­Þh²$Xmöd•ÔÜœ:ØàÖö*»Ñ0'ŽØÓˆ¬+·ûéºp°ÈÛ×ô‚¿CÝr#*,ilKòÃh€gâh¦ëÅòò~'[ú€Þ‡lwàÔI‡û¥®ëB@;è!êzÌq¼ú÷w&+ÕÂá\½ëo qÃ%þGóý LJWGUÙsÖDË™Ì으ü¢’²òʪšÚú†¦æÖ¶ï4ênwO_ÿïÁ?GþŸœú7;·°¸¼²¶¾¹µ³»pt|ârŸ_\]ßÞ=<ú|Tç(:Ø.hÝ›IYg¿J’«ß+œùëz>éÎÁŸêŒòïÞ<¿6ˆå’• ÞVÁ[*Çsœ ×#CHn÷<2]׸ÀÛB:håžrsèËKaÞ÷ýL¢]^¸´„¡ë&Òß‘’¬Xu=ÆÄYܯÆýŠ%÷¿-OŸAæBôì}ú°2dxo¶%÷éEÿªP¶]ßñþ)“œúëºÐø ›ÝUø7¡¥ñKO^SIÔušžÈ¿³î_Ï"ŸáÛƒcÒÊíf1;ùÛ òûê„ÚÒˆcªº.Øx'Oèzw$–Ä­®Û’ô™~¹BŽß—Çn5d`wlÀæë–ÄÄ¿–mƜٻx퀺îW¸M¾ð¦ãš¦.u1=Ëbš%$:¥Ì§SÀ^êè ¿¶¨{0‡&)ͬ.bÀÒ’N ¤ÑbjÔì[6ëŸH3ŸÒ))–ÅtŒ­õâ™Oi½ëtÁæ3Ÿj&%^B]ô/PuJÒðC¬æñø€½ð^—]#žÐnHŸ¦U³ºõWÅ–••©B† j/½¤ªßK9Þˆ¬pƒl`Kt"ªX:é”K€gÚ~ðXÊÞ¬€9ú5¢3lËZ!íšè/uþ9.ˆe‹© ´…^²±ªR¯ˆn‘|NZ(¦/`“Ama+&ÈÎ!ev¬~c`DW×ç¡HVÁ®Bpj¹Ø}Î_ËTb­V·‰ ­Álµ;~áÄç÷ÄhvÉ·áq£ñ³Ÿh7ó¦kƒ!‘ΖöÉch.àóI.q -iTŸóz€É=e”lþKå^àKwï²»Hí:o ¸ŽÂùKÓLÀsûHí oaœlNKr/HÏô‰aÝBºdˆÇySäÝ`ödÇ4\ç|~O !!>bm~zâF×Ùz³˜b~_ЧM_=¤kwÅ•·ÌáB•vG|C3à ¼Ršé|²—ØÀžôžÇ´hP'–sïy Ûâò.æË'Zî­ ¨/ŸÎŸnpÔuä4Z½)ÑîHÛƒóÔ/!ìȇ ^t]̵HcO(Ö¨Z¾DÙÑ´è‘–ä·µ,½%øâ´–Òp¤à”‡l‚ M6(a-Ê.B¶öÀ—Aºœµ°)ê>ê:òt »5Ù‘å„vä½Hp^ÄâÊóDçèí¹oM9]Ðxà·¦¼Ê{zïV¼‡aØò@§Â Öë¼;S8”õ›Ä KaPí=¹wY}eÃŽ÷ÐoAn=ì»¶¤ñþu4u”oZ!q‰VgL°%;òÜpþ5\1òr B¶òPÁT©©ó3¨0åú½Mm.×ÖúTsü2ј*‚ZÈó ×g) h¡Êh“«eUE“D‰s˜'&ÉáÈ;†Û*]œ½† ‚C×Ä$ÚŽÌm€áÏ¿ÜAäó£Ñ±ÅŽŽÔq€Ãb틆ìælë{ÝÞñP‚ qŽ$ìŽÆ+€ÙÔð•½.C%¸Ýßž³&pÿa¯ûôÅ}ô?‚ ò­$ìYS^ðÎià µVÁæÎ¥5¼B¢/þQh ¿¯Øïá°ÂÃ?w(AäY˜°'&%;É%4àÜéŸbƒV=Žæxº³³ä)zU]ÿgœ~® Ay.ì¶d¢hоóà9œþý«-ïYewÁ’²¨ªëc¯×õ€C!‚ *h4:ƒ)ÁjONIq8Ò¾Ÿ‰ï'x Ï û=(ó¼DU×… ‚¨¢Ñê–Ĥä”Ô†eö’òƒû`óO`4°äòïü¥9ÝþSv»/6"Óu]n[©"\¢1·±9‡‡:2ÙÿÁ³gºn*j+ f±' †ªfñí KÑ·‡òÕ“NÛí:!­­Bz`¯kÊô¥‚Ò—¶¶ûÎ*ÍA>!DØ©“ý§“húåÌÏŠÔä¤D³\öì-6Š?¦±GóÅ!ýoy/Õõò[Z·(Ч¾‹Ý!¼ƒTÀ»¹}?Óuí€ê™ñ À<‹™ôýhš¤ÀÆleJYÏ’šæÐwnmà @~¶‹V\òz‚nõí®ßMüÍA>#tÄ^qp?Ó˜››“•‘êHJ0)ìM4×Í"ÐE4ÞETóÎåòÅÀ º~àçâ9±bï\hc[ëwäN,ß]wàu¹:˜®o->|˜W&VƒUzS"µ¥DßOHs­~‡ò«gºÎA,í!ºÞu ×ûRH<ÓíÌ6ˆY5ÌA>#mâ,Àí`~vNnnvfz ®'ßÁEù}JÆÂ´â”‰Ö©®Ã ÿôò0xDr' ‚ X¡eŸ(qª ؉Ô*#`Œ*›þ¾„‹rRã8€G‡âPõD×½—%ýÅA{ˆ®ÃY¹·ôlÑ?˜6’“XdÏA@ONøÑÎÚcÝW$bh´ÅgàÌJÍÈÌÊÊÌHK¡~eBëu𦳠Û=ÐêºÎ}DÈ ¡PÎï÷€¢Vèús†dü§h` `[#6à-`ÆK:—XOtÊBþÕuž‘`ÀJ`“`;Äw¦¥7\ºpykDX ?ž#Æéý,h4º/œ–'§¤¦¥¥¦8’“¬‰“A1\7³ÔŒŒêbÖõM¾e}„ šUÆ+F¸K¸cv…®‹ ¢n@™pŒË?éÌ,Šud¸(*¨žèúaè¿ º¾ÍËý™‚ðƒÝj(ßþ´j‚€¼/†ðEªÔ›CÔY ;m)Æ_ÿ,h´:2¨žMs¤I·MO0›Œ½Ná]ÏâŠðüêÁºÞ-nPßÇ 8¥]kàüt=ƒ×Áš¢1¦À„d€. § @>TP=ÑõùÐa‘-9‚0Å pð÷Åø]U–ÈOêú—ƒÈú4@?}/‰ˆº¨é:­_¤˜&>H§Øx¨–`]—^ô_„+Aps¯:e ¼z?]×Áê:ÏSê÷)k’Toc …Cí±°•7”:€\AØ·âHÁ@ÞÔõwuý«Ad}<í4Ž@’Õb2ŠšîG @šaÔŒ ¡t½LÜœ„GAðúÜt¶Pï%êú=ßhñû”õȇ ª'ºþ3ô_X䇮ëG°§8Rð÷uýÝA]ÿbYo¬ÛÌFê} ¦Éç°pðµäÁº.9j˜ Æíí)ý t½ 1QÆ *¨^Öõ =º¾çŠ#‰ùW77%ŽB¯pL~® c´ o¼¹y®ßó¿x²)ÜÖêú—‚Èz@¬sUe–ïs³üBéúqÓIù¬‚Žw“)zغžâóÔ‹ðCÕ˺´'P×GÀ+.•Oí¨2‰Ͱ0™™8I¨þ’Ÿ=B-è '§_ ëëì/¡›Âáí¸@]ÿRht™w0Be®k|2úzÈ+G²…Pº.ªt&s{p+‚ý‘-?ƒ;VTÕuí£´˜EhÚžÉT/ëzО@]o—DÝ൉…ÓOj@?Ì»ƒ~˜/…Fg:‚mº²1ÁdÐ=“oJrĤzà„þÖu/_2¾÷6AHóÀªFúËz.|6fVÕuºàOfšÝpãóÃÕ˺´'P×-7üõ$Áè¢A@ÞÔõwuý+¡Ñêà2—ɺ^÷´ª ‚õî´‚¦â®Ø7Ä{I÷•ZÁ< ÐK+è{¦d¼–ðO|ý¨ //%]7]€§K'èËwº‡ ¬÷ézàž@]§ Ø—¬äÑa¼¥!€DƒÊÝ”'ö ®¿;¨ë_ ­.ûÚ¸¬«$­®ºx8¸¸æË̃u}ôîŽÉÇg– ä3â>¾z†¹åþ…£ëBÑ9€çˆF ›ð;T@½O×÷麖ztO^QÇ€DƒfxÊÇ…ºþî ®!4:Ã&¬:I‰&ƒŠ¬“ûüý__ä²jc±‹\~—ªÝôcr&…eo¿ØK×óÄýSgƒÆÿPþõ ]ؤë‚PKûÇ¥!€DÔõÄxÃã„B¿ý¿0åD¥#a Ñê«à¡Àa·ú…‚yÚ>µ"?áY‹¤²deÑ\P–®h׿ÐþÁ“ØË Cκ=Uÿܱ3…Ŷ˜#ouýQñ_ØàØ!мHÙ ¿®‡¢Ö4:ãŒ9’mc8²Ž /¡ö<í‰=Z·'\î_:LB( §cŒ°•]ÿãàoT;ô4­¡îsI F½VÝAäk¢çOa)»¶íœÚG½S¡!Ãõ5¥^µ9Sy99ƒÖXw‰/ K>*å’_pYMÙ5M.nù_@½No4Y¬6{rJjzFVNn~AQqiYEeuM]}cSKÛ·ö?;»º{û~ýþot|bjzfv~aiyumcs{w'¬kH†ëYà-L¶YÂr®#ÈËxÚ¿þ…IAïõ3\¾`â%f<;f×Ô9%»ç‰Ë}~qu}{÷ðör¤gð>s\EtÆ¿°î°'ª.qDW€º‚bX/Žu>.q¡ë°e{òÊ£yàp.¡F«7ŸC+®£¬#Qu=ETJcÝ‹Êöɇŧê%Ïœ€uè> }ö<ÞßÝ\_žŸ¹NLJ{»Û[ë«ËK ó³3ÓSã£ÿ ÿèëíîêüù£ý[[KscC]MXKÃÈp½îÓèpe‰¨ë!(d_ìòX÷yúpT’Ð/)ûZiIQa~^NvfFZ*ÏAg6tQ^¢¢Ñ›†`ÙÞu$JSÂ]áËP ~é÷0¿_\¡OÕ)æîkf<õN…@£5˜¡#™.†‰Åñã„,Gœ_'mb¢ñ]˜Tþ¾Ç V§ÓŒ&³%!Ñjµ%Ù“)©ié™YÙ9¹yù…EEÅ%¥e•UÕÕ5µuõ MÍ-­­mß¾·ÿèøÙù«««»§·¯à÷àÐП¿Ã#ÿŽOLNNMÿ›™›_X\ZZ^Y][ߨÜÚÞÞÙÝÛ?8<:vžœœºÜgç—W·òÃøAM¬/>úpUbì¤3QíÐhtF»r“ð•$uJf賕ÇÙ®uOžEk÷/çúÞ!4°ú}ïÚ§ý0&*¥™Y²”—)-§RJ”T’Ò¶o²”v÷HRJ”T’Ò©iYJ—W$)%J*Ié©K”Òë›Û»»û‡ÇðSK¼«ûã„(Ї¯ê̼ý f£Ö™gÐèLUp޳¦a`Û’¿‰ç…±îÌ3þð¯è÷IˆåCéú·ˆè‡ã²e=~оDÕ)ºÖ˜ÄÐêÍ}°”l5¡F…Ü+¼¬<=¿yà.fÁ|T±ú2V‰,Á½4›o„œ3ïûær}Z×Ûb­© ¼žÇ‡û»»Û›ë«Ë‹ó3÷Ù Ößìïííîlomn¬¯­®¬,/-.ÌÏÍÎüû7=591>6úßÈððß?Cƒ¿úûz{zº»~uþìøÑþýû·¶Ö–æ¦Æ†úººÚšêªÊŠò²Ò’’â¢Â‚ü¼Üœñ°7¿bø_£¥Þ(ÑeK²Kî¨Ì¬ììÌö y#­Á2öÄH¹aLY–ˆ´óá0¹Ä Àn€«ç3±éú9Œ+‹Foû{öç]o¡Rz{#I©ëôäÄy|D¥twG–Òå%IJ‰’JRú÷,¥Ý]’”%•¤´¶F–Òâ"QJ³³232ÒÓRSÉö$›Íš˜`1›ŒšŸ=è³oêáðÈÏyq)5rUÿF”T’Òœ\ÉUZV.¹£êEwÔ÷ö’;ª·¯_rGü7*º£þÍÌJî¨Õµuɵp(º£Ügç’;êþáñÑ£r£sFüÔ?Ú—¯`Š…D£3&ìA[R„Ü0Et9¾3ZËrínwÓsûgÜ×ñÖy¼*ÝíÇîë>Ð/&ƒ´óã¤ë mÊr9ä½k‡R[Ìïz¼·cìºÅm*©$¥¿e)—¤”(©$¥›²”KRJ”T’R÷£yöŸã$Öÿ =ì¾LÙm#ýêFG£3%^A¹Í]o!:³Xÿö¦BáøþÜþuåÇò˜E Îòÿ¬^¼ú؉^pû–ë%{áXÚ,ÿ^!úµØÉÿ|~[©/Šqbi[C¶âQÛRô-\ó»d˜d-²k¿—LŠ2lÅmyüAÉž ÐgW•(½FY7aœoÑâkæÆÐyõnâùáàî¨Û›ëëð¢|5èz˜({âŸøÅî<…FoJȈŒ{=åöò5pZºþßΈeòyH=%D×G|¼^ÑÚ:Åê\~½²ù\ê1êfä‘VLs7i‚•`BôÚØVXñ(+ó)¸v“ôWå1Û{8uS+¾v=Kn‚8$Tüwþr¹¥õÕáuÄÛ{I•¾w ߯G’Ò«Ë Ñå<>ÝQÔ%º£¨7JtGMŒ‰î(êÝQÔ%º£Zš›DwõF‰î(êÝQéi©¢;Šz£Dw.œ¾~=Le7ÐQn,âôjõælx´'š"á^'ÚGÏ·॓Æá†®Kg‘}̯gV¤.ëZÈ“j"*êZr’/'Ë«7 ³à9>#ÿ™{´¬]p.n’›Ì)»Ó•^“ÇÛ…/<¶†a¨ë¥¸_Ÿ¿ Öþþñ7ó»n¢æ'¤¹k—K«Ü¿oú9»7Ûå—ëäýˆ7]4 r̦sêØŸñÍ‘ŽÈs¤²”þho÷Í‘ÖËs¤²”ææHRJ”T’R³ ¥4.‘Þ7 CÙ¥9šUK4Z½ÁdNH´%%;RÓ22³só ‹KÊÊ+«jjëšZZÂhÂ`)„›M›þ Y+¢åˆy® BuŒá‚Ó*%ßÁEù} /P¡·Bš›ßj:È/Ó_îá6]Âý88àÑ¡n¨ëGম–¬8Wþg•F¨çÆJž„þõcpóßîÞ{¤Î‰;]§ÑøŽø×w>Ö=ùšìº>*nù9KEÙ Ò«g[?uõôö ý¥Qw'§þÍÌÍ/.­¬®olmïºÏ..¯oîîU§³ ÕëGu½ Î#ôVR÷UY þ"ú™aÑÏ\ÜÂÓêJÛJL¼wv»^Ðæ´Õ¥s;…®+ÝÔ2J]Üà5FP×ïá6¸r¼¼k¶{8Ð0¡Þ`å<€Q–/Y‡Œ—T˜‡ÀË£³/aAP5ÐõéìÂ…2BèœñÁyO ¨ëzòLáÙê ~®¤w#uPs@¿B ±îÆ×$>â9î<ÏQ×ÍSP½~T׫á4BËa¬÷ð-T<Âbàž@?³ŸG˜èÙ²nŠ\– Ú zúd!Ë,ÅÕleÂj*-˺î練YWê:1±GN×µ¡Ö}™û½ @™¡ækt^6Òë%'ÀÊì´5ò…!;ÕÌu]ÿËìÆ¨õ_ñ\ÔR!nÝÂ?!X×s.ØZä²xH}ù©¿™ÂéøL [¹ÁŸdä=ˆ ]Ÿ}f¸Ò™3ð>>ÜÝ^_^œ¹OOŽöww¶6××VT¯Ñõ„ZpFj™ãO€ó1€ÃÀ¤Ö~f0õ3/P?óuÊÜïß<¦L×'½ž­1òýº¢×PÒõ7µÌºR×ÏàNˆàxýƒ®f׉›L¨¼|K{µÓ»Ô&¹µ“º4œ €5ó ? ¹ˆgC%OÅÐÒew<°W–uÝXÐ(¥•ÜX_zÞ_šò¥h5mÅ6nÈ/ú¨”J’»ðüC¨¾ý\²<››ý7=916:2ügè7ºû«³ãÇ÷o­-Mõu5Õ•åe%Å…y¹ÙYé©)Év[b‚ÙdxK6 º|=‚º.ÌÑó˜z3)Àqè¦~æIòLóè9ôhí÷(]‡kê¿nx„=¬ënj¥®·rÑõ­×Ÿ™ è›ØòJp"¦ìDt’ù2ýõ“ýÇ:ÿäÒB©ß­¸IÍ0zõ±ºˆ®ÍÅmcÏQÔu›%2©’JèB¼ÕàúÇq G˜èÛ« >Åv8aKàºÎ''z*e]tSËȺnÎõpÍ X¿jíwx,(#ª&Ùx¯¤ûŠŽÉ°œ¢Jj¡t™¯;\4ñÕý>zỖ×9šøàÎ?¶«8íî¹WÓõ-xˆÁŒøô¯G™"òl6ƒ×%îЇ©êm[Wõ/Ê] ¤ë Ò«¸½^uà8ôË~æé šy8˜®‹/G˜ïèËž\׃ÜÔ2D×ï(Ü—ÿ›VEL×Éø¿[Qœ†“l:^—²T:Øñ‚…št½zŒ.d< ïyBc¢ŒAÍœèúXù ûñ³:×éüƒ2c ¹7Ó%‰TþUt}î_wöou=…ìó8Ÿ¥n‰|$ôa«:ESw±ˆçI]×’!íº½à1W†”«€Ç"²GxX’çÿ¸a ®¦ë’–nS4×õ 7µÌºBÁxÄE¢ëß}¼>¨ QËCßX×x×:zZ bE1ÓPBMÉs¤ )þ·5saRRa½o~–`ô éL.Ò1Ÿ—ÔðeyºÞ0<-ýçºcâ‡A]”WcñãCB ª3ªöæ¢Ó“爤®Xв˜Xg‰…~Jè8ôK¯Gþ|ÿ¤¤ëâÌÀ¹¤ëAnj¢ëý}„îÆÂdQƒ#6oJçz}‹çG†ØÊÃ_EvPkǶþãÅF€fAûÛâî¦mú þ¼9m“GpåW³|á˜{øµ'ìiF¤ àßÊåË7l|2Cf@Œ*œþÀÞ‰ÚóïI¦Á¸ä4¶$9ÍF¦/ÍFq±/6¼œf£Í—f£»Û^N³1åK³±¼ì‹ ¿»·ï{§uù}£õ ïM f—"©ëWàaë`æÈ°}ŒùÃø9Ž=²¾ëºBl”J?×õ 7µÌºr= 'rºn»¯( ô6uC]:SÒóBª‡…I €o‚—KZ=@º ü‘nCf7Ü„ðØÿï$Æ}¦ëŲ§Î©|´«dòÈG[1+” Ì“»Æ64kàùX3˜ZEˆØd_ˆØ9ÍF©/ÍF½œfã{»œf£×—fcDN³ñoFN³±êK³±/§ÙpŸÉi6î?Dš À?ÄE8ó꺀¯«4²eçëñŽã@p°®Ë~éÅÕ%úZ×õ 7µÌz4u]¨÷lÕ§ÒjöÙØz÷ ZASqÍb u3ÀY-ºd²oºO—NЗït©›'{á®Æ¨+^‡Gªëx[Èù™GýÞçM¸ÍÓšì]àÓZ/8K b`Ê"I«± U!ä ZŸØƒy5C‰O\äã¡wµ¼P*³bÁ6‚ºžÅß™$8n 2¬wy„ŸÑõ_â_À¡¤ëAnj™õ¨êºPq/¯Å‰Ë*rªw¤‚½ùä0Ÿðº÷.\lÑ9€çˆ63Ž9yêÇ€¡YæÕÊ"x{pL+”§Ižàr<MÎÂ5ýoÜ =T,Ê4“£ºHå`L‘ÄG^¼öB÷£/6ü©Þ—fcyÙ^N³ñ×—f£»Û^N³QKCÈtˆÇyyê¦ÄØðü ï6¡Ð“/çK”=}b/)‚º®'ÃDQ6ºÈçU™Œ7Àqä~F×7y9ÍK—›p]rSˬGW×kïû.Þö›äªù*‹<¹LPë¾Óg¸žßÔ2O°×g š°Ì¿Ó¸.îëº1K]Þ#i²–£e(¼ûEô5ºÐÈJ_SºÁt¿îØßÕ 1ái]o R)D¬œfÃ)§ÙØÞ’Ól,úÒlLÈi6†å4¿|i6Zä4ÕUršB_št9͆5QN³¡Õjm µµÇÙ\ÕÿKÒJù³Ew”#%UN³‘—/§Ù¨¨”Ól4Éi6:~þ ~Ì~>Tlø#_løK_løÀ;æÕ[ç¶²§L{còIÿúš4±XM×z”KñüÇAágt] ¢8%¯_tSËD[×Éõ²æVú°4©ùï×*wÛ ÊýVWÚË Ÿy­>Ð<¹ÌÏØ”YžìŒÕgTäøÕêÒ^ Ó8Ê b–oíi]×бšÆ3QÜ6kä9ÒVyŽT–ÒÁ!9ÍÆÄ¤œfcQ–Ò­m9͆óDN³qM¥ôáÍOÑój„B|/),e·³g¾áè÷*Hêzº¼]VMá/ÜßÝЬ»§'G‡û{;¶í­õÕ•¥¿ ós³3S“¿ÇGG~ ýøþ­¯÷ËçOÝ]m­ÍM ïëÞÕTU–—•äåfgφj]-É~#‘"u]äYE_ ij6VžZ¯)û|rRb‚éUu ;1©ëäÚ³û }5æGª:å7µõ|Ž!u=.ˆQ]'ÊÞy6]O ‹D/æG«:¥j<’ô½¨ëHØÉñ2‰Œ%ÁË<ªû!ÜЃ˜Ÿ ê”²eˆñ|Ž¡Çb³aüJìcLÀ0/*(…ò8 OþÌŠºƒ— 5Ñ­ëH\³ó0ᤂÍÓŽbLP×£C^NÄöø¿¨ë>P}5ÆŸoá…DS¿%x!O"pU†ºzÚíö§|’©‹7.Ì?gçœn«† yvl/íà¾}ð¥U<‰ØÓu–×PÚlX…ÍF¡´Ù¨–6ÍÂf£[ÚlôK›Qa³1+l6¶EPódVð!Ñ‚nž¦ìÕÿb;Ÿ#¢ò à W×F %sq¬»od8dÖº=³/íàÍ«¸&%ŠÍdÒu±,¯¡´Ù(6ï¤ÍF«´Ùø,l6~H›qi³1/l6Ö¤ÍÆž´Ù86ŽHØl8§ÐW#f qŽOPöŠM€ápöÇ7¨ë¡çiº^ °Õ˜“'Ž×ÆÇãSËN€}ºŸèúþ˜äçK;øºnsÝh^W³þÞN5ElÄ‹"Ê\ÔÛ"¾/é‘Ê^²J Çx>G„ó4]oðp.^—9nŠy’áç~]7§Iö‚–‹b_ Znxi³q|,sà ›%i³1=-sà ›>a³1¨Õ¼k“T¯ARr´’®~l·ßƒ*{á"/:¤œÑœ`IJIMÏÈÌÊÉÍ/(*.-¯¨ª~Wû¾¾±©¥µ½ãC÷ÇÏ=½_¿õÿ!W¢Aß?ÔõÐó4]ÿà1¿î–»,ŸkcÌéz#÷¤ÐÞÛü¹ª~ÿ¸„ÍÆÕ¥°Ù8”6›Âfãï‚°Ù˜”6ƒÂf£÷‹°Ùè6ï…ÍFy™°ÙÈ6Í»¬sáJÆUÌ_åßBG a³‘*l6r¥ÍF¹´Ù¨6Òf£WÚl ›Ii³ñWÚll ›Ci³qåf³I_XÈûdÌž7¯<ú3÷ßÂâÒÊêúÆÖ¶fÝ=>±Ÿ]\^ßÜÝ?8ŸÑòkçsŒw’+»ë4ÉN¶¦’qiYWÛ¾Á즮b£ÔõÔš®Ö"‘.™µµjR­dÜVdu‹‰XwÏIiWb@]7X­&%·«ŽÏer›;ÝÓ©™ š>ÖæÈOÖTÝÕê¦ëEMßù ÇH¯êj+M–¯3¡¾#Çg>)Xçß¾«2õÿóëÉ~RÄF<¯aõŽú'´J'ö…”64J›.a³Ñ'm6†¥ÍÆŒ°ÙX’6ÿ„Íûés\±‰}ŽE‘%’¾± ëäJ÷û²gÂùi}ÿ¨®·À!êú#H_aïéaª'ΟU³ÐZ—èÑm½ªë–)žVJ—¤¶ˆ'8dÁ.«ê%µrÝ]×I‹Ö€ºN® ‹© ª~|4û18Ô2E0\j'Ýì¯eÉ¢êúûCvú¬ZWg“úG5ÏöCNÀbÍGþÁ»Ÿ$ñ/´sTl2¹x˜ÊͰýEÆ‘ôÕˆ]¿ê ~ºrý9Uºw·×Wgö“ãý]Û¿­Íõµ•åÅ…ÿæþÌLONŒ  }ÿ¨®wÀ.êzpjˆºÿÝsÁ•8¢ëóà<¤iåwØùœs"¡ËGà²1]7É>Z¤N£'»èÛ‰ì.‘ÏZ=ÍœÞQ>=•‰ˆ×Ýuý î”`º>J¿É`|ànsù ÀÆ.!ÊɽýÅ:.dV~±µ­ÝÁžƒézîרaë'*ÿ+Ì›Cý±˜€UæTèÕ€/ ݪ'Åš›”Çš®7?„à¯>T°Ù(a³q&m6v…ÍÆÚª°Ù˜“6cc27¼°Ùø$m6ZZdnxa³Q,m62ýFÃOBb´’¢~.W_ƒ˜ ”­hán_oÏçÝ:ÛÛZšiÖÝꪊòÒ’¢Âü¼œìLkzZJ’%ÁÊ‹Tªëݰ…ºË%\Ô’ÿ³öàS9LV”\»êÁº ®^ò_µd ºÞÐCŸ6ÐåVMæ\T’ÿ‹NØJÜ¿UébD9 ÷&µƒ6X“%ÒVÈ%B¶l™Ï¯“aûÙ¯jŽÒ¦¢ûB]/Ø€FÓÚëA…R•5r{§PÿvG ê:ù> Ü¢®#:LOQuJæïˆøjXR7 '-ôº®ñŒ&!—ù,zä®) ÓÍ‘šF fúx‚wøIϰ±Uæ³~ÁÏ¥ÆcÈÜÎt]ÕÄ#XVètµ¦u-<æ +y4ì‘Á»ÒY‡èÎQº>ðƒð­­"S^ ¼n:Äïm»÷ÏÎ*é¶±ªëì׈qÌtÝzÀæL–¼’£[Ú†–OXP‹ªë þð$å· 3œš`RLäÖL.bõZ0éûMØ|5’üý¢"ñF>iƒÙ’v Mi–Pëº>DM¢dŸìOm:]£~t=XøI­z‰r”ø(î/ØãÙtzèz?í¶;€ëúƒ˜F«Tã×k–¹Î-ºm_è£|ÅÄ篭›ªÖõ/üÞ¹{ÿh×òx<åÃÚÓõ¯Úêå_÷´üäϹ«÷¨²ŸÿØÇîU]¿÷Ó€7…j|àeG¼,øYjÃUsÕù§˜_…x‹b"ÿ¦ÑœD.Ð Ó,¦ÿ%êÂAôÑ$D[œôñb*½¾t=XøI–®jHÿœpfð.î'ØãùÔ´¥ ¼uý6Õã±ß4©a‚þ¹í§o—£æ,>{*]·Á¾ì_*¹":llÉgû¤òXlM•ú¤}ÏRØ»N÷»¹G¯|¸™í©fÛ—ÙzK>½®ÛÄÜÄg<¥v9Pf¯»U½[ðY ®ÏƒÇ%×ÿaU˜R°¦võÔ­{œ¢eÈcÁ>à÷ÞÀ§î…®ëðM€ºz:Éðç ‚¾IAƒ ‘hà ðe7´G Ÿ£Á˜< Ö”ÄPëºg8ˆW4É'=²âS׃…Ÿ®aŸNî+ô*î/Øãù`[½Û¾=—ï­ë?D¸ÈÕuãÄ–3Ò ÍüRäJÜoþ„Péú7-àQ1n®Ÿ =¸TË,³†Å[TÌâajÿòÜÆc8“Ö¨¶]%Àž t]߀?2¸°ß}—ɘ° új\{²MIXüú£•½‘.b…4¹Ó£ ºž²ý) ¡ÞáâM2 §ê©>u=XøI›ãxìñ†µñn’n|ÌÃä>°ÿøHۦćé-lDcF›ˆÉQ· …J×Óïàˆ¿^r½ð•öÊÁ륹µJxË|Év…é:¹\ø£õß-«Y[ˆMÞö‚„®ëðOõ׬×ÿ>‡ ¯Üð™27|±¯Üð-27ü'_¹áÇÆ/jK·ßcÖÕû-Â÷%=NÙëxî¸`ùƒb4%$&%§¦eX³²sóÈ·.Ø ¦Ä,'T¤'‡\×=ÃA¼¢IöÅlô{Ÿº,ü¤ZÎ*ø¬ßo°Ç³±\€³Ï¤˜kÿ‘ßÅ[×éÔùÉd|Íu½`ƒþU^z$PJ»ƒûV£b¨»†+¶»þqº¾Õë†[l§ÔuZÑ.9“Õç‚Ëd&ãã¤â”Otñ–´÷áö=ùYš¦ë†Spu’–’ÈuC‹¬0›M©A1ÙH±Š›®ë€ñ‹y< X(0"¯¡°ÙÈÎ6¥BJkë„ÍF[»°ÙèR:ðSØlüž6ÿ ›õ a³± l6.„ÍÆƒë²qÝýÄTSÿE+ Ú§TÙEʪšwuï›[ÚÚ;iÖÝ/½}ß¾ÿø9økxtì÷ÄÔÌìÜüÂߥåÕµÍí;»û‡G'§gç—W7·÷_@g°·Ï`¶|€£Ì0„9z†ƒxE“܈éˆbŸº,ü¤ Î­-¯âþ‚=^@%©Ðy@·!NÑC/]WÉ%Êá58Çùüú,9´ï\y+p¯¦žHžcïŽ\ó‡§ëÈiw]7N‘SWÇ俆Öl¥îzÛäçí¬Ki·^’S.ØØcóë…ä¥Üî:~¹7H®Kàrí`z®îº®k ,æq*X)¥ùðH¦ˆ½¾ŽÎ¼†ag³2èõÖˆ…¼_DÙìË(ß_ÃÁòôŒæ¤% ò)C†ƒxE“ìˆäÜï4]W{Ùq°ð“R€N·–¼ŠS|{¼ìåL±ˆG­ì½òÖu¥ÕÏÞUq]7}d±!×óº$Yi teѵX ^oht¼ ,fß9Ég¿xºÜÛ‘Då@ - Ù#æÍ›|Ý4ž ¨ë UqÇØKã]»•êo§Ôu})þ|m#v|5tÈÜðÂfãHÚllmÉÜðÂfcJÚl þœÒªúª-ñDLèúq«Õì ÏàÄåtÜßÞ\y÷ ¦„\'¼Ëý²©€‡ƒxE“ü«z´ùtUŸÙq°ð“€ïêqGG±wq]°Ç‹±¾«d™a.ªu?m°–×úºV3äÔ•ù͈ø"Šëò¥š¦—¿Óõ6£ºÌ}ÍÁRP[â=`ίó›cݳÈWÃë-m6.„ÍÆÁ¾°ÙØ6ÿ ›‰ßÂfã§´Ùè6ímÂf£NÚl”––7­³f³Enøäæ†W}5lä Fi³‘&l6òò…ÍF…´Ùhh¹á…ÍÆWi³ñë—Ì /l6¥Íƶ°Ù8:f×P›zfºz¢•^í y@Õž@@åÞ~rt¸¿·cÛÞÚX_]Y¢Ywgg¦&Žüú9𽿯÷ËçOÝ]m­ÍM õuµ5U•åe%Å…y¹ÙYÖŒ´”dK¢ùÑ"m0Y~ÀNV¦×uá ^Ñ$}Z˜¢²Àt@ÆÙ™Ÿœê~Ó á' çp×LzÝî`?ºâ~‚=ä4G±ªó‰}a³a?6;ÒfceEæ†6£Òf£¿_æ†6ÍÒf£š]C…fC_¼a~´ªSXVÐ×ÎÓˆë?3Ãå袋&QŒãäîѸþqϧ‘qäßY£š&Xø ùÁ€û]úŒTÅý{ È#(\ð–ÒÛ!¥'ÇÇrTØl,I›éi¹F*l6ú¤ÍÆj ­NìkRZU)m6ò…ÍFzš°Ù0¡ÍF4`~‚ªS’Üü®¾øÆ`JèË<+MúúoŒ>Ä3šDQS‰Økµ<_Öu2Jr¬Yó´|ŽÁÂORæèEŽs$Égý¾ƒ=äQäÿ§ŽÙÑWñäÉRi© G7üb0š³n ?+lÑ0^á úh’tš]äåUÊÊtDƒ„Ÿrë Ü7<‹ûö@G‘;ëB]Gb2\Ÿƒƒl¶jÁ <©ëMdÓH5ôÕ@<0/>uÝÁR¼Lè ÃõFp½ßpý‘ ®#ÑJÖ„3l¾x)›˜ž¤ì‰_o~…­3>0šro`"‹ ×ñjúxPבèŶõ™ª½ÆpU„çøhe7÷\½nþ;ƒ)É»¹®£®#o’J€ƒf p‰9Ô}IRvS7KR5öN Æ„ÿà¦<ËáÙuEi¶ÙÐysTxF‡!TÖD+uZøëJ0e7vØyÉqÝã¦KRJjzFfVNn~AQqiyEUõ»Ú÷õM-­íº>~îéýú­ÿÇÀàÐðÈØøÄÔôìŸùÿþ..¯¬­oný³Ù|7È&×'à¡5‹Æ®Gv¸Ž oÕWã¤#VM½ÃJLäý 8f7´kånŽOìg—×7w÷Î@>ù‰¬«;++#%,±ëÇh¹á…ÍF–´Ù(‘6µÂf£UÚl|ÖRÈLj¤öð«vbB×aÓÿLCÝA8öݦÁ˜8ð5+ËšáES$¤òrâÔ YØl¤H›\a³Q&m6ÞK›a³ñEÚl J›Ia³± m66¥ÍÆááѱý’%ã6aIÆuÖÊ®cë(jÛfU€ÀÃõ฻½¾º8·ŸìíÚþmm®¯­,/þýoîÏÌôäÄøØÈðÐàÀþ¾¯_z>}ìúÐÑÞÚÒÔèÛSÂ`ÌÜ‚‡ODÖÓpæÙ Û÷È­Ånÿü¢jÚívÏäüƧ¹»‘ºH­4b*~®ÎOŠXž×ð­Øl×uƒÕjáǦê-™Š’lMã›ÅÚÜ^ ¯² ¹ÍÙM]ÅF®[K~XÕ•ÓÌÚuút–¬âÜ®:@‘\Ù­•Hµ©Oõh*Ùšª$ÔwäxñÕI%·éScß>¿ šïƒj^´ NìK›a³a“6ËÒfcFØlŒH›oÒf£KØl4½‹ôç€ÆP5þg…í}r.7RUÏÌ@Y:MjPí<3òÐͯwÓ‰4ØËü [ä( ¬è”>r©%_î¸eÀ€ª¡Vv~[ï©ëêµ6-SÄ–Aá°Ô£d<_ûüf ®[Á¤ôæZÚlI›-a³±(m6¦¤ÍÆ&¥ßû¥ÍF§&¥ õÂf£BÚläI›Ta³aÄ¿ßH`¬{úSÂÐ …®¶ô±/äÙr©ªgYÓS“Ð}å‰ü¸ÙX°9¸¨êt}ˆÈßÎê-\ýÓt½ï®wˆ °`SÓÀÝæò€ùŒäœ5]>—ÍC×Ï®OOIýíDâO—ŽÈóûÜ;At}”~–¥†ˆõñß=×ç²q|°nAY*Õ“tÓO%Ó$ºNNîg“æ:ØU˜dÂùø¾óc¥`š;õº`’o‚«—üWAí]}ͯgÞÁE%ù¿è„ ª=Ï».{«ªË%\Ô’G²öà!Km"ÅWSà‚¿ïÛ‡½Îxu2ËWdänlp™Á»¢·EÕÓuôÕ@< ñ0OPöÔ‘KG ÆKJzF&õ,kFZJƒAYKpƯ§2&®oÃÒNK]çë++l53íVy5½à*b1‰Ê[ø£xêºéÔk-«SÓõmþÀ@¢ô¨ÊhvÐôn½àTÕ|ݧ®“j§ÕG~”zœßgw Ð,Èp›Îø«º®oŠê:Ïô­?£ï¤áÖùqêt_¡wEoÒe›¯þÆ&Ú~ÓG(»å;[Ÿ‚±'6A;1)95-Ú•›WPX\RVQY]S[WßÐÔÜÚÖÑùA-•”šžÁc€“-LÕñKõ\LE=ê®ëEÚ šºj«º>Ã;YTù4Ü› ¬)ʬîõ©ë¥Íê#dDßæqžÏ dô©5Ö”+B×õMQ]ç.ú3úNô»uÅ«¢·Hñ˲D j¹4x¡7ËŽ=Z9 èA”=á«–!f«§·ïÛ÷? Žý¦Ywçæþ.-¯®mlnÿÛÙÝ?8:9=;¿¼º¹½wbâÓùòüv§Óãs¦ãlU×õM]¿çÏÕŸÑw²À}âUJ*èÛºñÔM.o…˜Ðõ¹I;ZBò \NÇýíÍÕå¹ýôøè`wçßöæÆÚê2kÂ`0š(ê/à;ÀÍlOuª¢Üø¯kA+[>uÝû©E¹€Mµ|ƒ¿ñz¹úHÀ Çy®ëµm²F: Wu]ß”Ôuý}'K:ݺâUJT_­šàEß ¥ÑJµ¦¹ S1Ñ*öÿæfg¦&Žüú9ðfÝýü©»«³£­µ¹©¡¾®¶¦ª²¼¬¤¸° /7›†¶ðùò b­N“¢¨?"‚‡\€ |ŠÛ]×+ZÔrç>u}<6'ØÄÄÆgŸº^Æc))U™„®g‹4T]×7%u]Fßə죣ػ"Ä7"7|²Ì Ÿã+7|Ì ßÞ1¨ýÕÛj#ý'`>VW1užð²¯‘ÏyõÝü^ ° w]·ÜÂ?Y >uý›XX5n®3?D¬É’—®÷(Lbµ»ß¢¨zžëºñA fQÚ·çò¡ëú¦¤®ëÏè;I.Dþñc €ñª(z0…ÍFjš°ÙÈRZ^!l6ê„ÍF§°Ùèý*l6†~ ›)a³ñwQ³ÙØÞwË $sÇÔfcÇ·O˜©êcÍÜÂÂçè¤Y[°LÞ ó[ñëýjü =éK×Óïàˆ§t!ã󯊒û|ެ\ÒÄaíÿ‘ÿkiâw]7ºà¨¦Â@7Ý·CÝ5\å»—ºNštö™3ÍeÂR ¸í7õhJèºþŒW'Îá®Ù@:ç€ ƒwEa N|5t¸œÂfãBÚlìïËÜðëk"ÍM_bxÞ\$˜Ÿ êŒ÷¶ÿÂÓ$ñ1\®ÝLÏõQŸƺÇÿH‡ŽY£—d§ÈÉ+êP~ÃÉÉŸÿá58Çu~Il÷zŽ¢Ôß8öîÈ`®Àý´Ôu¥òÀy@÷³M±cM×õMI]×ñê¤RyIS‚“–ÏR}õ9ô<ßWÃ[J÷ÂfãÌ.l6v¥Íƪ°Ù˜û#l6Æ¤ÍÆwa³ñéãÇîO ,«ãV‹Ì _#sà ›Li³‘ø¤2ª¯Æíw˳ß=6±Ÿ sà ›Bi³Q]-sà ›ni³Ñß/sà › ~ õÔí4ˆ²‚A"…±—Æ9ºv+Õx@]>Ç„¾Å‹³ÿÞ+'@½%S©eSmÎÉLµ>æ‘uö®J§ëi›N€÷ôÎÍîZô”T7]W’¦ØÆ‡#ÕSÓu}SR×ug|t2eŽ6êIòUQ(ò“"¶QØlTI›a³‘‘.l6ÌáÙ<Ð{ÅuW77ª®‘J›,a³Q\"l6ÞI›Va³ñé³°ÙøA¤tšÖþ`›Ô¤”(©:µ²º&m6ö„ÍÆÙ¹°Ùp¼Êtúj os~]ð\ä×êèÙ Åuù nÕÕ곫3L¹ê¤‡!§®,H"Eë» ŸuèšzÔµÑܺ·¬x|â¶©Ä¡I)QÒø›Ùúj oœÙu{h>gAb™†‹HKêsñ‘þXæ†ßö•~Zæ†6}_é5T{ðw Aâ™8e¡#@~°ÂH”cúpúx%Rzuy)×H…ÍÆ¦Ò¿ Âfcrbâ÷äŸØRÚûEØlt´ ›÷Âf£¼LØläæ›”Ì áa`©-=±xƒšâc»]Õíu!¥Ôë]¬‘¢”"HÜcÜÐÆo«I‘î  ­Ìd }5äíblµÝ±$ÖH¥ÍF¤4ªˆ°¯†/]7X­ªm ©úCK¦¢$[i¦ë–Ê® ƒù즮b£b´ZtùÒªzÉ&²cFzUW[©jeÃu·b-øaµ*V«èFšÕMWYÓ©õ]5n*™µë4£R‹IÉíª3i)IVíÚ,±¤­Cxô$[SÅ\ÖUã#‰[…©ÖA€"kÈ.ïämQ³iI 27¼°Ù8’6[Òf㯰٘’6½‘ýίw3듽ÌßÌ&žèºñýuΙ<+ÉX¢åîšòȯ@ÀGþø'vLhR±æYìûüºú»m´ÁZ©éÆeÕ£°™¸BK\kΔEl]¹Ç¥OC»V‘˜_7÷1ë\×Y­hÕ0ö@™Õ9˜{T¸ª~¨¸ÆŽ Ï!éûÍó•TÚl\H›}a³±¡IéòÚÒfã·*¥Cƒ?¥ÍF´Ùh6uÒf£TÚld ›ä¸±Ù¤ëCDÂwVoá꟦ë›D@÷‰8.ÝëÈ>ØŸÚtºFýèú€››ƒ<›>Ñ]×ψdŸž»êù“JeÝ£°oƒóYº ÃÕ¾øéÒùôÑC¢ë£ô+ñW«HÓõ„€û­õ;"Ø™¼¢yp’R°ãñxV8sJ¾•öÓSÝ/‚ ÄòíVêm>±_#ÖH¥ÍF¦´ÙHŒ)*ˆ®·½×hòÐõj¢ÖÙŠb$B©ê:‘ÏE±þhr¯cœ]ä¿b:º÷¥ë¤¢I:’FÞ­Š.FOz`Vô„E8t«›6ú‡ˆlÊ7šÏ¼ƒ‹JòÑ @ºë²·z J̯«ºNž8E5þXÑ*šLV”\;@µ[ú Ýœéy‰_¯˜®£¯F¤˜×] ¹éú6Üq›º¾Å¦' À}¦D)awJýèúœññ}À„â[ו9x`q,)NøêV9iô»c¹…]òß:¸xbú=ìØÓáÀC×+æx ü¢ ­—¿ÝÐWˆºŽ /&¡‡ŽòÐW#Rø×uÓüäe¬NM×ø7ÚØšñ œê¢ãŠo]¯ì¬S‹Þ²È'Ÿº^ÐÉŸãrßi0ªÉ¶òœfú¤iõÌO6_Cž¾Ï=u}\Ùüñ”;6`'Õ°c“Ë}áU!ê:$¦¿:Yß.`õõ› 3‘þ  Ñõò\"w]/Šªiº®¦O;€5·*¦áT½÷Ñߺ)ÃTÔã`ÆÄ>uÝpÆÇÓ;|ÚDcœêÄ[ +'ƒífõL9@{ºªÒžº¾"H×XÿHïÕTüç°$ë÷ªu‰?¾b%o”ÿuÓN-¿ñ²¦ëêj⾇®ïæzï½?]·´ -Ÿ°ˆ¿º® X%Oê,cTühäÒ}»\T%OüÉn‡Ä±›®ÛåÏÃKö"{ä¤ïU!ê: ®‡ˆØ×u¢³Zøœ£{êú˜F+ö£ëý|}Ü>v@׳N¬­Gˆá(l«÷Ò”~1êVLl²ž<] €ôÔuÌhUüHwg®{UˆºŽÄ¨ë!"öu½S!lÔõ°©÷Þiºþ‰÷r]ÿp3ÛSJü뺲 Šr汨IÕ6nÓ‚dx]®“fýëº]vq†E£ûÑu¯ Qבøu=Dľ®W´¨ŸÔõ?p©ÞûÀt0—¯d~r>°ãl€ÛRƒb(²ßdä¡ëFÕT0 ® ç]Šl“k²¢T_ƒ.p¦ÝÁ}«Q1Ô]ú”º®U¤î7¥ûLI])ÔMTþt]_!ê: ®‡ˆ8ÐuźÇ_ËÐ1Óq¿ºn'…Ž®Àõëz>MüCþ5òãarx¹v 0=×F½_Òm"‡Ut°ªëitàðÀÁóÇÔ“Š{w×ôPêºV‘ªë‰É‘æžÐ*RËy꺾BÔu$þ@]ñ ëJBßâÅÙï‰ÞÒý¥~u]Qšé˜Þ^«Å5Z×]D+׬yüØØKã]»•4§W^×Ó6<õ‹¢|“Kµ¤Ñ„š†qY.WÒ´¶E®Ânº®V$ü’Úìôƒ8û**RËét]W!ê: ®‡ˆXÑõGq SÁФ¿³ºï/M(+sψhί+öŸùÖ”«&fïÕ¯+ª›ÊªÜ7ðrêÊ|J¯¨H%©ü]ÞcÒÄù­AâÔõº>; îÄÌ!+AðÌðt=ò‰1BfÒ„ oÔõº~< ¹Á&Ãá…ºÞP  uA^ êzˆˆ]XjKO,žçY]ÁKtýë‡Ñ÷„\*¨ëòbP×CDèºqC{1«I{ÆKtýˆ´sê=ÉºŽ /u=DÄ®+ÆVÛ=ÀÃFÛc-ªšm¶g'(þ÷KyÞ±ý{n‚pP×CD<è:%åÕâD,h)Š áu=DÄ‹®#󠮇ÔuA¢ÔõºŽ H”€º"P׉P×Cê:‚ Qêzˆ@]G$J@]¨ëÁ¶ï…ºÊ}û`¨«D˜u=D ®‡çë )70ê*$æA]¨ëÁA]GWu=D ®uA^ÔõºÔuyP×CD¼ëzQÓGê¤a.húX›cd÷ V«IQ²ÚkÙaNg³š½=Ùš¦(©õ]5ê›#uÝÛÜée¨”lMUê;r|—H¯êj+•öH¦ê®†T7]O­éj-Š÷AêzˆˆoIyÈ^äY5?L™ç/ú²‰%”TPÃSç‚A)£w`ž ð(l&®ÐÃknI*t½ƒúŸ‚sÀèÑÈ,\“Ç?ø(ÑtÉ[œOåÇÝìxÉ¢êºeêžJ 绀 1êzˆˆk]¯qÂýúÂy™ŸèaùÀþâ µ‰¦Ltý»n÷CU÷`§™Õ™?ê(ìÛà|vˆ5ó»SuÝ´p·¹L*±y$œ€UúT(ô.ñàfcÁFZ°3¥ÿE4ß¶v¤MªëÆU€£Ejc}òÈÌñÏ ®‡ˆ¸Öõ°Óxá œÓÔì[pÜP›œp¬0]‡Û£’¶ð°_ (9àÊP¨®ü1‘áýÀ{Eèz/À4•ß^—çäø¸àïûöaïÕ“ô N#£ÿVòù]ÉTó i€h䆬–€®WzK$ŠA]ñ¬ë)Ù/pQ¤(Å|˜N˜Hçº^G›È(šÍŽ·Ð¢ëÜ$Ãr »Š¦ëiw°ÊŸÞ ®"·f&¶™£‡W‰%8ã2ä¿ p¤±ãU®ë£pÉž˜xé˜ÃëGu=Dij®›`™½>#»MoèµðŸr˜®o³Ã\P K :¦ëïxÁà4kºÞ ª¹ÙÁçgTˆ®7²;^%*;ëÔ2·ð‡ÜÞkÏ«àºþ Šãô:‚(¨ë!#žu‹Ï~UëýÒVò˜®s™Maw²ºªëNÕQ¯ XÓõi¸786Xs«èz»ã¯„©¨ÇA-µ³šÕ‡øüz€k©ëÙV«g ®‡ˆ¸Öuë}‰÷KÚªdIï´E¬¨º>À%ºþ•ÝÉÔtýT-OFòš®o»¿mv·V&´wÑG KÛÐò‰‹ϳéôrõ9Ç|ž†KÂ÷ Hì^öÆ^ôüDZ;âãÁÃÉWhúñ<Öê96±ügC]z­Yf¢‹–p¾ ‚„ ×h¤{€(Jaﺓgƒ¢dݵ ¶ä•O~t]ÌëO.ø¬éº öS%n-]÷*ñàf¶§šíC"ºþA›NW”}R“Ô0ACçCž1Ap€º%X†æe„G*Lo êúƒúÌzöƒÀu}Œ^US„®ëK3Ø=À‚¢Ô´«§n=B%Kír$ H4ƒºajÿòÍýÆc8S”=¸TO,³À•º®«gÁiÑtý›ˆ’1n®|skF躾D=¯ŽP°¨(‰zK)fñ0Ɖ-5>¦â í\þŒtÞ8UÀ¢ Gtä|è( ¬ë›ì8ÏE‡Ùª®§ßÁ­ù¬•ç]×—hb‡Éûˬ"`£”ç¸ .>LoaC‚ H` §àê4(JÒo€¦ªãDØS>Ñ¥Êwuþ&+Jõ8²÷ý¦»¤PŸ .“Ýšº®/‘ p[jP E6à;÷áö=éÏp]ïØ  T^Š}A¢šµ‘îÁ[§ðž(ëÞ¡à‘wë €kûଋʹÐu×.Àá5€ƒÅѨºnœ"r|uLnn Ü[‘º®/1Lî]®ÝLÏÃ5z·^’S.ØØãó볤Gö €S‰Vp~=âäÏÓ±¹ë •¬ÓÂÛ‘Dåvëz M´¸Ì·Š|޵,=¤sÒs'‘Ôu} c/stíVÒÐu¶õ´`•ZΛ7¹®›>²4’×ó‰Ä‰ZP×£KAm‰L‡ž^þ.#øsFi𹩬*ÝûTBq]~à­\ž%Ìùuº|íÕeî` ÖòZ«‚ HŒ€º£Œzl;B ®Ç(¨ë‚ø!/-Ò=@žê:‚ ~¨Ê‰tgºŽ ˆp&Fùbûé.  ®#‚Ĩëq î B7 êzGºHHɦJK0MÅ}:ÒA$àüzœ±ÄbÇÞORa/‰to‰¨ëñÅ;*çƒ ß›˜òAÞ"¨ëq…ñˆ¨ùE¢éø‹ÒCÓÄ Èäòg¤{€„/TÌÛ²™ÄGºG‚ È `“/Û Óu>%ƒibäíñw%ÆýTÊ‹U]WÉÃé>!òÚàüz<ñ“(ùùßtУðG'NÄ È›u=žH?„dyøáÁù5rA$B ®ÇéìÖ8ÑÀþOLŠd_‰ ¨ëñŸ_Gäm’‡9DâÔuyËT¡­N‚ºŽ oœ‡‰GP×ä-ãZ©QÊš †lz›–Ho •zr‹'böDKuB¤¿X‚DŒ[ø§ü¡»YÌèí»ž7ê‚%±{A7KFIž’UBPRè­ÅLo3”Br‹'bù'ü›è'% endstream endobj 131 0 obj <>/Filter/FlateDecode/Height 262/Length 28043/SMask 132 0 R/Subtype/Image/Type/XObject/Width 729>>stream xœìÝYp×™8úÓû‚nlÄÜ)R¢(‰Z¼\/²¥ØIFqÊ™ì¹U“™‡Te±§2É<Ü™‡yIþUS5)×M¦²ÌT%“¤&Îd±%–-o±¬Õ’¬]¤$.AľÝènt߇ãàrH-Ôf&•ï÷ ›@wóÃ×ÝNŸsš°, ¬r­wÑ ÀZ‚Zk j¬%¨E°– ÀZ‚Zk j¬%¨E°– ÀZ‚Zk j¬%¨E°– ÀZ‚Zk‰¾“7·ÛmÃ0êõz½^§š¦iÉ&Ùl6Ó4Ûív¡PhµZ!’$}>Çqø-ù|Þh†nÐ4íõziš&IRÓµr©lš¦¦i4M;†eX†mµZªªª-UUTžçA°ÙlE)ŠbF­V3 ƒeYš¦Ýn7I’ív»Ýnçr9Ã0h†æX/GµZ­l6kš&BÈn·Ûív‚ H’l4õF]ki!§Óɲ,Ã0AÔj5MÓšÍ&A’$Q4%Ù$‚ EÑ4­V«Áó<˲²,[–¥ë:EQIØe»,Ë!Ó4s¹œªª7EQî.7MÑ,Ë꺎ÿ.UUiš–e™¦iAÞ …ªªªÊ²,˲‚(ˆ‚¨éZÛh—Ëe]×Y–%IÒãñ, Bˆ¦é`0ˆC±4Ú’$áÒ4Ca†¡‡ƒaA‚h4†a4š ³m. …®ëFÛ(ЦiR4…£M„iš-­•Ëæp(dY¶Ëvœ3ÕZµV«µ6AK£].—Ûív³Ù$IÒî°Ó-‚eYõz]×õF£A’ä5£}wO–eŽçþdÏh•re•‰‡Êd2«L<†a:ײÄÓtM×ôf³Ùl6—FûvOÓ …‚iš†aȲ¼úÄkmQ)Šr87M¼B¾€£ít:ÇMOÓ´V«µÊÄSee(nœxétºŠ›&^Si*MEÓ4MÓnšxKCÑn·W™x8–iY–uÓÄCÕõ¶Ñ®Õj×;oœx]ž.ŽåH’4M󚉧ú²PÜ8ñ–…‚$I§ËÉ2ìÊhû|>Š¢p4ÀŸ¸;ªEði+ŸÏ§Óižçy6› g[:®T*!š¦ív{çÈ\\\TUUÓ4–ee»ÌB•J¥Ñhäóy’$ý~?Ïó6цj4õz=™LRår¹l6›$I–eµZ- †a(ŠêŽtã#Ó²¬t&].•o †a8Žãx™…bAUÔR©$ˆb8§¤¥¡$I’$Ç#ð‚ÖÒ4M[\\¬×ë6›ã8§Ë¹4øüÈó| À¡Xí@ @QÇq4MãP´Ô–¢(ÑhT´‰ ËÐÝh4EÉf³†a, …ÚR[jkaa¡Ýn3 Ó‰¶az#‹½ŠîîN-R«Ö‰„®ë¡¥Ñ.•JjK-Š$IF£QŽãxž·,«R©4›Íl6KÓôÒhᜎ ‡BAÜëÄÃçÇÛH¼V«5??¿ÊÄC­>ñhš¾^âéš^¯×óù|>ŸïD[ÅÛH¼V«•L&5MÓu= ®>ñ4Msw¹yŽ—$‰¢¨'^'Ú½½½Zäz‰W,kµZ­V£(ꦉg´N(AàxgF"‘Àfœ7N<¥©äóy|¿iâÑÝ ®íûM‡¢Ýn¯2ñjÕšªª©TjÙ1¸ÊÄãyž²S Ã\7ñV„âÆ‰·,Çá‹ÅÊh»\. Y,ÉÞÁU¼Oî¨Á‰rêÔ©£G:N§ÓùÐCù}~UQkõÚfggB¢(†B!|RPUõÍ7ßÌçóÍfÓápøýþ®®.†fÊ•ò*•J6›õù|;wîŒD"’$e³ÙK—.Í]›™¶Ùl4M§R©|>äÈüz¿ßßÝÝMÛèF£Q.—_~ùåJ¥b³Ù‡ú(ŠB‹ÅßýîwÍf!´k×.‡ÃÛb±ØáÇÓé´eYõWî‡Ãaš¦'''“Éäää$EQÛ¶ms»Ýn·›¢¨ùùùd2yðàAŽãÂá°?à7 #“ÍàPpÇqÜO<…Bº®>tøÒ¥K7…$IO?ý´Ëå’lR­V;yâd¡P˜õz½>ø Çãq»Ý8W¯^™™ …B@`bbÂår•J¥r¹üÆo$“IŸÏçp8zzz–†¢T*!„<ϦM›p(–F{ÇŽ[·nõx<<ÏãP”Ëår¹¼k×®@ ‚(ˆsssétúìÙ³Š¢tBAÓt>—/•J/½ôR³ÙGãO&“¿þõ¯q(>ð„Ãaœ3333¯¾úª¢(E-öéÓ§‹ÅâåË—Y–}ì±Ç\.—Ãáh·Û/^ÌårgΜáy~i´Óéô½H¼|p``à}H<š¦o#ñJ¥ÒþýûW™x¡Õ'žÀ ×K¼R©Ç'''Ï;׉¶×ã½ÄÃû_«ÕE¹ï¾ûVŸxõz}ݺun·Ûï÷³,{ãÄÛ»w¯¢(¡|ä#===7J<Š>}ú4Þ Ïó7MóŠ¢dY¾^â­ Å ÏÓåY ‡Ãár»l6ÛÊhG¢Y’š!âN®tà}p§µH:>zôèw¾óh4FÃáðŽ;E©T*ûöí{õÕWBn·ûãÿx__BHQ”ßýîwSSSÙlv```Ïž=¢(J’T)W^yå•………sç·ÃaI’"‘H&“y÷Ýw=úꫯ>ñÄŠ¢lذA’¥T*‹Å~ñ‹_à×oذᩧžE±ÙlæóùŸýìg³³³~¿ÿCúÐ'?ñIü¥P(üçþg±XÄ»´yóf𦑀®^½úâ‹/ž>}!444Ä0ŒÏë#qáÂ…Ó§Oã ªaÑžèöíÛMÓŒÇãçÎûÎw¾ãv»wíÚµeË–GyD×ôl&‹C!Š¢Óéìëë{ä‘GB†a¼öÚk¿ùÍonŠîî Ã0zzzjÕÚáÇc±ØË/¿¼qãFÇ£iÚØØØÒPlÛ¶mÃØŸÏ·aÆb©¸˜ZüÍo~sôèÑñññH$òÉO~ri(fffB£££ÿðÿ€?¸¥Ñþò—¿‡yžïêꡈÇãñxÜívŒŒôöõr,7==}éÒ¥_þò—¸á‡‚$É\.—L&ò“Ÿ¤R)¯×‹£›Ü:¡èíí}ôÑGñ¦§§§øÃær9žç—Fûøñã±XlïÞ½²,ûþHwdtt´ÝnŸ={vffæ¿þë¿<ÏÒhߣÄÃ'Á?ÙÄ[H,¬>ñB«O¼p8|½Ä+‹ÓÓÓøÃ~ö³Ÿu¢½uëÖÛH¼R©ô?ÿó?Éd²X,~å+_Y}â%‰§žzª··÷±Ç£iúƉ÷ƒü·O ~à¸Aâ!?~üÀï¾û®Ûí¾iâ)в27M¼ŸÿüçSSSxnšx‰Dâ­o?wþÔ©S7M<–e;¡H$>ŸïÃþðMozzúG?úQ¹\&⦉‡ºpñB|>þío{Ù1¸šÄs8=ôPWW¾·rÍÄ[Š$Þæ-›—…"‰<öØc¸ ZíO}úS4EK’µÈŸ>¸‘€µµÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µD¯õ)TUÕu=—ËÕëõ\.§(J"‘Ð4 !DÓ´×ëµÙl~¿ßf³†aDQ$bÙJÊår¹RN,$jµZ*•j4!Š¢Âá°$I=½=/ƒAŠ¢®¹­V+“ÉÔõT2•Ífóù¼Ýn—e9 CA—Óåp8–½Å²¬f³Y©Tö¿º_×ô‘‘»Ý¾~ýz–eïJX î9Ó4MÓ,—˵zmrr2›Éž9s¦X,îÝ»·Ùl"„hšÞ¹sg غu«ÏçÛ´i“$IÁP¦h’|ï&F»Ý6 #NÏÍ͸mÛ¶¡¡!I’H’\öÆJ¥Ç¿ñoT+Õ¿ÿû¿D"ƒƒƒP‹LÓL§Óårù‡?üáÅ‹+•Š¢(ÅbQÓ4EQðk Ã8yò$Ïó§OŸÁårŒŒ|ö³Ÿíòt á×\¼xñÔ©SgÏž=~üx6›m6›™LÿªÝn=zT„S§N¹Ýî={ö~ðƒ6›­³Ífsvvvvvöûßÿ~>ŸÏårÅb!4??ŸÏçc±ØþýûŸ~úéÝ»w -}c»ÝžœœœššjÔ’$íØ±#³ÜÝ)DÔ"À½fYVµZÍår'Nœxûí·ñB|ÿÅåru^ÖjµTUM§ÓøÇj­úøãã[-¦iZ–•Ï秦¦Îœ9säÈ𦠂$©s/¦^¯W*•……Y–ûûûF«Õ¡Ó¬¢ëz¡XH&“‡RE’$š¦Ýn·išív{vvöòåË›6mÊf³===Zÿ6ŸÏ§R)š¦eYöx<]]]yí{@·jàÞÒuý­·ÞºpáB,ÃK¼^ï?ýÓ?ù|¾ÞÞ^|§CÓ´ÙÙÙéééý×Å=HRÉÔË/¿¼qãÆíÛ·‹Ål.ûÎ;ïüê׿*ä ¡¿þë¿îééÙ¹s§×ëÅo?xð`<ÿñ\¯×ÿûß÷÷÷?öØc~¿? Ñ4j4S“S³³³º®oÞ¼ù™gŸ ‡Ân·»X,‹Å}ûöýô§?=räÈèè(.’ðÝ™J¥òú믟>}zÏž=áp8Üv9]çÎA-Ü[¦e&“ÉË—/W*¼D„‘‘‘P(422ò^-¢k‚ X–Åq®EÆÂÂB0D©ªZ.•3™ÌÜì^Cww÷ÀÀÀæÍ›ñ 4]Ëf³E ‚Ðh4âñ8I’ÅbQ„@0€ß¢ëz6›- –e9α c===>Ÿ/—Ëe³Ù³gÏ"„J¥R§;-BȲ,EQjµZ<ÇãO?ýt$±‰¶»ÕSƒZ¸·Ì¶‹ÅNžŸG5©©©Z­Ö××Ç2,B¨R©ìÛ·/™L†!IR4uºœ!‡Ó!ŠbWWBhrr2•J=óÌ3xµ¸§H,Ëår÷¢§È{;wW€•Úív§±!dZx`©iMÓ¸þàyžã8|ïƒ Ñ&:QBF#“ÉÔjµÎ\.—×ã]Ú>át8-Ó·cBº®çóyQÛfû½%š>;;‹û«Re³ÙpÂ2,˰xUF£Ñh躎–ôI$ív»ÓSYÈ0Œv»mY–a!’"I‚ÄÃvnãÞ Ô"À½ÅqÜç?ÿù;w~ï{ß;sæ BèêÜÕOúÓ¡Pè‹_ü¢Çã ‡ÃAdsÙKS—TU•eybbbÆ Ÿýìgqw .üÛ¿ý[½^ï¬ÓãñøýþÎ…Ÿ$É®®.–e†ÁKšÍæ™3g*•ÊÇ?þñÛØgÓ4K¥R±T|á…Ž9²gÏžÑÑÑÞÞ^^à/\¸P©TÞyç|>ðàAš¦×­[FüqdznݺëMmr=P‹÷A^¯×0ŒH$’ËåÊ岦iW¯^­Õj‰DBUU„I’ét:—ËÙív|% á™BB­V ·gt$¹ì’¿l žÎ¤Z­š¦‰—PÕÕÕ¥ªj³Ù´,KÓ´v»MQTûBx‚5¼žf³Y¯Õ …B.—s¹\ïu’miétºP(à‘ÀçÎc†aÜ'Æ4Íh4Êr,nqY%¨E€{‹¦éõë× ˆ¢¸¸¸¸ÿÕý3Ó3ï¼óN¡PøÖ·¾Å0 ¾±b†Ûí~üñLJ‡‡Ÿ~úi§Ón{è¬aÇWßpA¹\®üãsss¿úÕ¯jµZ,‹F£'ŸÏ/....."„î»ï¾­[·º\.£mœ={vvn6›Ír·mÛ¶õë×OOOçóùo~ó›ñx¼\.·ÛmUUUU=räÈÉ“'_íõíÛ·?ûì³~¿ýúõ·ŸÛû °zÇQe“$I’š!7Qhš¦ªj§#î„ÿOI+ç€_=]×;s©!„hšöx<år™$IEQ†Ñu"år!$˲Ïç#ÂÐB¡^L³,dYE1•J•Ëåx<žJ¥B¡Ã0xìªªŠ¢$“Ép8\(A¸¥ý„Zx?˜–™J&gffN:•L&?ò‘àùÄÆóÏ?+“ÍfûÛ߆B¡ÙÙÙ±±±Ïýߟ“%¥¹s6›m||œ¢)†aNœ8ñ¥/} ÷/Ñu]Ó´B¡€ŠF£š®%SÉ—^z ÷éíí¶Ûí—/_ŽÇãF# =÷ÜsÁ`0‰èºžL&'''¿þõ¯g³ÙƒŽÝÿý«ß1¨E€{˲,EU”¦R(òù|¹RÖu=8Š¢êõú† J¥îGR©T2™L<w»Ý•J…$H»ÝNQÃ0ív»Óùc5p»EçGЦ‡Ûåîëë+ …BAUUÜe„ã8QÝn·Çãq8ZKÃÕ î)âøyž'¢X, ]×qcI0 …Bº¡[–•Ëå(ŠR%—Ëu¦QY%¨E€{K7ôo˜››ûùÏ>99Y*•úúûð#cp›Çg>ó™F£ñÖ·fgf¿ÿýï×jµ#GŽT*¯×;44ôÉO~Òãñ<üðñùXg®³›¢izÇŽ‘5’M‡Ãv‡=“Î?~üôéÓ§NZ·nÝðððþýû¯Æ®vzŠŒo·;ìÕJuß¾}.\h4<ÏG£Ñ`(ˆ;»ôôöäóy†ap»Î­ÆjàÞ²L+—Ë%‰Ôb ‡ahF–e»Ýîp8B,Ë6îpw£Þ (J×u]׋Åb*•r»Ý!ŽçÜnw6›í¬Oþ±ôºxIç$I:N»Ý¾tÜ/Çq’,…‚!†fð„%Š¢ ÷ööF"‘p8ìt:iš.•JK{ŠÈ’LS´eYår¹Óµ…eß,C˼7–ز¬f³¹´“Êj@-Ü[º®ïÛ·ï…^è iÁ…‚ÓéÄ•„(Š¢(~ä©„N†¾õ­oáQ¾ñxü?þã?>ö±}ñ‹_ôûüÛ·oWUõÂ… x ù|>“Éx<ß-Åç–9@Q566¶k×.¿ß—ÔjµwÞyçĉjKÅKŒ¶1==‹Å:÷Yü~ÿ®]»ÆÆÆB~ŸÓø¦p8ÜYçéÓ§ß9öN玉Ñ6.^¸xôèÑÎܬ‚ ô÷÷wú‹¬ÆB"qèС|>ÏqܦM›îÛq_gÏñ»víÚ³g$I­Vk!±H$ ÃP¥³çÝÝÝýèGwìØqKñvàÞ"I2 V«ÕãÇã%ªª^¹r¥Z­Úl6žçBš¦ÍÎÎÎÌÌ´Z-‚ G8 …C!ŽãœN§ßïïè/ä •J%‘HPuæÌ™d2‰ßŽÜ*ŠBD$éëëërw9œŽUÎP‚1S,fgg].îËb³Ù:s¹’$éñxšÍ&Ã0ÍfóÒÔ¥b¡X(4M‹ÇãxÏyž÷ûýN§ó–âµpoÑ4}ÿý÷ 8pàòåË¡r¹üÜsÏ‘$‰}‡µZ-ü=‡Ã±mÛ¶7>ýôÓ.· !ät:ÇÄÄÄÇÿúãÇë­·~ýë_ñƒü S+4›Ív»­ëº,Ë{öìéééY¿~=6¼šl*ÍZµöî»ï~÷»ßý¾000ÐßßßÕÕÕé)Â0Ìðð°Íf!™Lþã?þ#I’ ئ©ë:Þs—˵~ýúP(tkñ¹¥Wà6Øl6Ã0&&&hš®Öª-µU,5MËd2x¢U‚ ‚Á nÿðz½›7op:¢ âßáñxFGG5MÓ4-›Í6›ÍN„Çã! ºÝîõë×<Ùë*÷°Ùhf³YÜûuYOŒ¤H·Û­úöíÛÃáp6›UU5“É$é÷ûEQôz½ccc^¯×átÜRp î-ü]—Ëõì³ÏÖjµééé\.wæÌ™b±¸wïÞf³‰a×®]^¯wÃØŸ×·yófQ—ÝìØ°aúuëî¿ÿþ|àL&“o¼ñF*•BQõÀ„ÃáÝ»w»Ý Anµ§È±£GgggB›6mÚ´iÓ²ù^Y†ÅÏã}öïŸ-ŠÈår{÷îu:»ví ‡Ã÷?p¿ßçß²eË-mA-–Âóýáqá¸S´eZk½SàO‘išõZωj6›F£ó[‰þ)Šbš¦(Šwò8˜¥ð`™®®.»ÝÎó|£ÑèïïWåÑGÅÇ˲===‚ x<›ÍæîrÓ4½l$-EQE^àív{­V{ôÑGñäñE…ÃaI’zz{^$iõ-"X(ܱcGww÷Î;ׯ_ïîr¯,)(ŠahpHéVÜnw£ÑxôÑG† …B²,‡B!Q†¹ÕÀP‹€ÿŸa•JWèø¡Òm³}Ów¿@²ªÕj¡PhµZø±XªªZè6 H<ð§Æ²,EQtCánÕ"è#{B·Úµs<1IoOïÝÙ­? ‡ÃKÇé\EQÝÝÝ¡¡Á¡»µé»V‹(ŠR.—''':T,«Õj>ŸÇ¿jµZgΜQUU×õB¡Éd*•ŠeYõzýÌ™3‹‹‹N§s~~>—ÏU«U„PµZ½|ù²eYÕjõÌ™3±ùXgU7Ö6ÛÅb±X,†3IÓ´›~WST%N·Z-–eñ)õ–fûÇ Ã(—ËødªiZ­VëŒð¾Uš®-,,¤R)˲4M«V«xµK-..’$¹ÿ~|¿°ÙlÞêäÿ×Þ´¦•J¥V«…jµZªªší[Åê·…Û'§§§išÎårø[È=ÚÜõ膞Ífóù¼eYøá×Kg-¼ë4Mk6›øddš&ÎOMÓÞ~ûí¹¹¹‹/2,sñâÅL&cÇq·¿!]Ó5ýþ-ªÕj¥R ŸÃè¼ÝRäÞ&E£Ñ¨V«w˜`†nd³Y<„²^¯ãgy üç7•Û>䯧R­,,,¼üòË’$ÍÏÏ—J¥Z½vw7qÛÔ–‹År¹BH×uÜeòöV…§ÙÀUU³Ùì®Ó*—˸›‚eY•JE’¤»yÓ4c±X¥R™žžn4Ýán»Ýîrº:³w€{ç®Õ"F£X,ž?ž ˆz½®(ÊÒZäwÞYXXh6›µZ-‘Hà¸V«?~ÊårÙL§c¥R¹páB±XŒÅb±ùØìÌì*k³m …|>gk6›«ÉQ¥©ÄãqüÀ!üìæÛ«EŠÅ"ÕÝn·W¹ékÒ5ýêÕ«ÉdÒ²,]×Ëårg°xG*•J§ÓW¯^}ã7†‡‡AÀÏW¼C¸ŠÂÿÇ­î÷®80 ãèÑ£/^Ä?Úl6]×o»‘ÿ¶µv:Îd2¡v»Ýjµîúe)MÓžò÷97MÓ0Œßüæ7‚ žçUU5 ã#¯µ´F£Ñ™~ñ®³,«V«ážw!<åóÜ£¹w‰‡CQ¯×WÖô·J×õt:¿2ÕëuŠ¢:¥X£Ñ¸ë•_¥\™ŸŸŸœœ4MÓn·Q­Tïî&n›ª¨333çNŠxÓ4‹Åb©TBœeëÓd™¦‰k|G¯T*ቶnoÓËmcfff~~þùçŸ_XXøüç??00066µÈûàŽj^à.gww÷ÄÄD±XÌf³W®\i4­V 7à—µÛísçÎÅãñV«¥¶ÔÎ4õªªž;wN–eëõz±XÄ¿Âýz²¹¬ãª#ŸÏãB$ööööôôpG¤ËínµZ.—Ëëõz<žÅÅÅb±˜Éfòù|çÞ[«ÕŠ/Äm¢ !T*•ÆÇÇUqØÑž(ÏóxÊ9|1°,‹$IžçEQ$I’¢¨H$Òjµðäÿ²,ÓH&(’Ò4eÙmÛ¶‰¢èñxh†N$Õjµ\./¿X,ÎÏÏ#„Eñù|!»Ý^*•ðòR©‰DX–5MÓãñx<|ºÁ%¾Š0 #Ë2~Ê¢ÃáèïžFY–eš&.ÝðËÚí¶ËåÚ¸qcoo/Ã0A°,k“l;vì‡ÃÍf3 & ¼ªB¡ †aYV’¤z½žÍåBår™$I˲ðjÛíöââ"žPÅuëÖᛑ8 ÃT«UMÓ¶lÙ222âñxFFFH’$H‚åX·Û½{÷nÜñÛ4Mü'ãhoܸ±Z«â‡@f³ÙV«EÄøÆqA&¶NØDMÓ‰DÛl³,ëñxvïÞm·Û7l؉D(Š¢iÚér <ñÄ.— ‹šŸŸ/Wʵj-\/Ú4MW*ÇS.—YŽU%•J)Š‚O£–eášr~~¾V« ‚ '&&Âá0˲™L·jX–Õßßϲlww7N¼Z­V©T*•ʺuë|>_OOÅÊC†$ÉÎ `QÃáp,SU2!š¦q1444äñxúúúB¡~‹Çã1Mó±ÇcÆëõâÄÓ ½V«I’411çÆÑ^zõ%‚$ÉÅÅÅ•¡p¹\­V«Z­Æâù\Þáptww?ú製½½Á`Ðåv#„$I CCC=ôžrÏ%P«Õ4MáE‘eÙD"›èp(Ün·ÃáˆD"$õ^(D›øàƒâ':ÎU&ÞÈÈHww÷† ‚Á ÍÐIØíöV«õÀäóyš¦].W"‘ )²Z©*вiÓ¦NùÞ Eçt„–Q«Õ’©$MÑ6›­··ß_–xn·û‘Gq8ëׯljGDgTMÓ,Ëv&£¤iúš-ù Ã<ðÀÝÝÝø!g•J%I+вôìîî¶, 'ž¢(]î®þþ~|ÚÑu·}†B!¾†áx—YIáJeå'Î²ìø¦ñP(„ŸwŠ?ëR±T©T–ƒ¡R©D„¢(n·Û²,Qëõz©TÂ_uðLáÑH¿å½ÄcÙJ¥Òjµð§‰C÷Ÿñp#4˲ÙL†eY–eiŠÞ´iþƒÁ ®E®wÆÃI+IÒèè(®Ïpâår¹|>kAd»\­V;‡yçŒÇqœ¢(™L×L+ÏxI!áCQÅó<~ÜÚ5/‹-M<üUgqqŸ$›Ífoo¯ßï÷ù|]]]¸D^ù¡,“IgNŸ>ýãÿxjj*—Ëá5Ó4]($IŠÇãø n ®ŒBïK-ÂóN§³¿¿ÿá‡fæ¦wRðœnÙl¶3–: ­¦£ïøøøðððÈÈH4åyž ·ÛÍqœßï×uýôéÓ•J%•J¿¤â.ýõz}vvöÅ_ÄGfµZ½téÒðððîÝ»Ãáp§éÀ‡œl—iŠ&I2‰È²|üøñz½~äÈ’$Ï;GD¥R©×ë‹‹‹4M_½zUÅ©©)| »zõ*úc£Å»ï¾‹sºÝn_¾|¹\.#„hšVU_4M›žž¶ÙlŸúÔ§¼^o—§ w’"‚¦i†aTUå8wºF9ÎÞÞÞp8ìñxpƒÞm<ª;z½ÞM›6õõõ1,CÏñ†ÍèëëáÔ©Sx íf³Çñ·üt:}ùòeŽã8Ž;sæ n"B]¼x1•Je2žç …¾éfÆââ"ÏóçÎ#IÏîçv»ƒÁà}÷݇ëB\ºÝîí;¶çøÑ£G3™L§BM§Ó©T 7ütnú"„¦¦¦ð„9 Ëär9|Vµ,+“ɃÁ;wº\.Ü*ƒû¢;Α‘—ËÇc±Ø¹sç>ŒW;77‡¿ ®Œ6î´„Ûáðh·L&ƒOÖ¡L&säÈ‘+W®8ÎjµZ©Tð¿ N§óܹsSÿâ⢪ª¢( ‚J¥hšÆ›N&“‡cûöí皉MÓ4Ïó Í „<ÏÆ'''UU-—˦i⠯׋WúúvþÎíõzyžÙlöøñã4MOMMY–ÕTšÙL6“Éàóu6›½páB«ÕjµZx¤¾ïùÚk¯;wnY(†)—Ë<Ï ‚ iÚââ¢ÃáØ¸q£ßï¸_‹d“®éS©T"‘˜ŸŸw¹\³³³¥R 7­—J%Ã0öîÝ+B'v»ý£ý¨×çëh²,ïØ±#›Í>|xnnîìÙ³7M<Ü•µ«« —eøk®l—I’ìè'âÕW_eY6N¡ë:>êqYS­V§§§q(:Ó4íСCW¦¯ˆ‚HÄÂÂî’ERä²Ä! ¹\®uëÖ9\G:N|ÙãyÞ.ÛñGɲìõfqà8îÁÿ¯\6û£ý¨Z­Öëuܰôäy~qqQ–eQK¥R¡Ph6›õz½Õju(áËy½^ç8®“x¸üRU5‹áOÓn·§Ói¼'øŒ‡CQ*•®\¹‚Û»ººººº‚Á`( …C²$ã»æ!”ÏçUUM§Ó ÃtÎxµZmrrߣÁɱcÇðq‡šœœìœñêõ:.õ øæ")›Í†‡«0 ƒ‹•$Þôôt¡PÀëÇ›~õÕW½^/BH×õX,&ËòG?úQ¯×+IÍ\»½ªX,æóy|öˆÅbsss±Xli¢v»}áÂ…T*•Ífoux*@ F£Q^X~½ž;ªEðyd``@–åV«…óòzpgRUU …>þ ½^ïÆOž<©ëúää$žVY„ááaŸÏ·ã¾^·¿¯¿s€x<Qý~©TzóÍ7WÓû¡ÓÞ£ëú¯~õ«k¾æØ±cKܲeËÎ;ý~?n BÙl6›Íær¹DQÌår”Xš-µZ­V«ýèG?ZŠ­[·vš©B²,OLL,,,œ?þäÉ“hß8ñ|>¾ùØY•]¶s,××ÛW)WN:Õ¹.³ô´ÐÙ„iš¯¼òʵãõ¿ ÷õõ¹Ýî¡¡!œÛM9|£“ã8|‰E1 Ãrì5¿ÿq·}Û¶L&óÜsÏMMM½þúë·Ô«¦óbü”y|Ô߆¥¡ÀO^]·nÝÆ—¾æVÏx}ÃàÞ|óÍ?üá+_vÓ3þˆ–eív;®öV“x¸GÝ/~ñ üãõo¥B±0==ýæ›o¾øâ‹ù|¾Ó]ié_wêÔ)„Ðo¼qã8€kzòÉ'Ÿ~úiŠ¢°ª×ß…¾«N—Óf³¹Ü®Ç{ì/íßÙlök_ûž<¿»»ûŸÿùŸWó4?QQlÒÒ…AH’är¹p „išõz]Ó4<…¦i›Í†oôvÞµšKK7ÚíöÆq~=ív»Ñh,ÍiüÍò¦›ˆD"<Ç]ïfóJccc_úÒ—öïßÿüóϳ,F¿ú՝ޮåXަée‡A‚ ȲŒ¿ØÝtå©T wŒGù|>Q—>‰àšþîˆï;,Ý4nå¿æÛíö•+W:­;¡Pw^YyBF£¸aùš!²Ùlø^Æõ6tcFcvv¶Óí¦¿¿·.ÜÆª(Šòx<ÑhtY(®Çï÷;UU‰Äw¿ûÝsçÎõôôƒÁ¯}íkCCC¸ `Y 3~D…×ë¿q-‚Û gggñÍ>‚ ®W!-500€ ýeÑÆw”:qÆÝ•4MÃmÚ<Ïs×ÝÝC× Å5#‰û»,ýÈnx¸á­··wÙªpn;α±±_5;ͱør¾úPD£Ñ@ °2·oMÓ½½½xnÊÕ÷ñÄÍr¥Rɲ,aÜ»ùw& 9Îk®gõg¼V«U(pà+x"¯›nýVÏx7N<<ÙFOO._nœxKù¼>–añ0‹óçÏ;vle§u·Û-‚ËåºÕY:B(ÞÒ,#w¡a–eX›ÍÝè2ßn·Óé4ð²$I’x»ËV…sÛf³á®Ù7 E«ÕÂɆZe(þ޾2·oîzŒ'«X}-’ËçðÔ†aàãŽ>w¸3n·Ûf³]ó¸^ýÄ3‘3 ƒÏëùöu«g¼'ît ñ­Ø'ÞR<Ï»\.Ÿß×ÓÓS,ƒÁ ~À[§"Áu¿$Iápøö¾œü…s»Ý$µÚŽ«èÏz®3Š¢{zzñ×ëV«uåÊ•t&ýÍo|³P( MLL|ùË_îT?!Ñv =¢išþÐ?¤ëúSO=uã–ÕZ­633³oß¾Ÿýìgxð˧?ýéO|â7ÝÃ0áp˜f–O®wWÐ4‰DÀ?ý?ÿ´š¡ª¿üå/¿ýío×j5]×?ùÉO âŽu×C’¤ÃáXÙù†¡—Ëõä“Onß¾ýšol4›ßüÆ7à ¯œTCÅ€?p½¾½½½¯çþû�›.\8wî® ÇÆÆ¾öµ¯ù|¾eÓ¯hŠ^Ù˜q±,;>>¾nݺ­[·Þ8!«Õj­Vû—ù—£Gʲì÷û¿úÕ¯^¯ÄY¶ ·Û;r.]ÞÓÓÓåéêÄY7ôãïO$Ï?ÿüÌÌÌØØXww÷3Ï<óÞÌ Å5“Çát<üðÃ[·ní|d7J<Q$…{Ô.] ÎmÇ300pã!8/¾øâ÷¾÷=„$IÏ>û,îYycxÿ9Ž»óK‘,Ë_øÂt]7ÚÆêga9yòäÁƒ_~ùåT*…#ü7ó7ÑhôwF’¤Îè¼eVÆ[\\üýïÿÎ;ï=z´··wxxøƒüà£>zÓ­ßêïÆ‰×iJDè&‰·l7hšÞ²yËàÀà‡>ô¡R©ôúë¯Çãñƒ.,,†AÓô?øÁ¾¾¾Ç{ ÆÑÜQ].×ê‹Î?ãZ„ œp¦ŽV«…‹tÜ¿@½íL"Ir5•>B¨R©†›+ðtww¯_íæŠ÷ þZÍ „îÒ‹{5†B¡ÞÞÞ‘‘‘U¾wå¦Y† × `£Ñp»ÝxT$Ã0‘îH8^¿~ý­Nð…o*߯b¸—þ¿,˃CƒáPøöþä÷I’øbã{á¡J¥R.—ñ‚»¡ ÞIB.‹³¦k™t÷Àß »ººFFFVÓîÈ2ì²;³·‘x8·EQìŒ,»ŠÎñ¸÷ùؤiº¯¯ïVßU(.]º„;xâ¾wѽ7VÆÃƒ­p‚‰¢èr»ð#aïú.Ý ñÐ’¦Ä[Ý4®„ðˆ$ŸÏ‡°,;77‡gÞÃýÄ£Ñèúõë¡yü×"ÀÂm$»?°[UÔ'Ÿ|²Z­8p ŸÏã9]îøX¨EüåÂm$~Ÿß²,ǃ'DÁãÛyž¿óÞB`5 Þ›î’eÙÝØ­k:˲4MßÉc¡ÀêA- „ž]×ï»I,p×Ýý±«µÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µµÖÔ"XKP‹`-A-€µD¯õqÚív>ŸoµZ¹\NQ”ÉÉÉV«Õù-Çq]]]>ŸïþûïgfÙ{Ëår¹RN,$êõz2™l6›!’$»»»m6[OoÀ Á`¢¨knºÕje2™z£žJ¦r¹\>Ÿ—eÙn·ƒÁ`(èrºDz·X–Õl6«Õê+û_Ñ5}ýúõ²,ŽŽ²,{W¢µð~k·Û‹‹‹ÕjõüùóÙlößÿýß‹Åbç·N§ó¾ûî»ï¾û¶nÛzZ¤R¾zõê·$‰W^y%™L"„(Šzê©§"‘ÈO<áv»½^ïõjUUçççÓéô¡C‡Nœ8qôèÑuëÖ >òÈ#ÛwlG}èšµH£ÑH&“ÿç›ÿ§X,~å+_‰F£ýýýP‹fTUÕ4mjj*NŸ8q¢Z­&“Éz½^«Õ–¾¬ÑhÌÍÍõõõY¦µty<ÅbSSSçÏŸŸžž.•J¥R ÿÊ4Í+W®d³YEQ\.WµZu¹\›6mâ8®óvÜ"’H$~ûÛßær¹ÙÙÙx<ŽÊd2õ?üÈá` ¸ô¦iÎÇã3ÓÓŠ¢‚0::‡WI· jàý`Y–ªªõzýСCgÏžýõ¯o¯¬¤ëúôôô† ,ëÕ"±Xìµ×^;vìØë¯¿¾rå/^D>|Øáp´Z­žžž‘‘‘¥%n¹xñâ÷¿ÿýF£ÑY^.—ËåòåË—BAø|>—Óµ¼‰Å.]º¤(ŠÛí …BP‹ft]íµ×ffföíÛ733£(ŠÇãùú׿îõz#‘Çq‚(K^/˲(Šøÿù|>›Ë>|øgÏÿ¬/ „>õ©OõôôìܹÓëõ"„4M;xð`<ÿñ\­V_|ñÅþþþ‡zÈï÷‡B!š¦BõF7¨hš¶eË–gž}& »Ýîb±X,÷íÛ÷ÓŸþôÊ•+Þ:080ˆïÔX–U.—+•Ê+¯¼rúôéO|âáp8¸œ.’¼kÃ_ î9Ó4u]_XX˜ššš››K§Ó¢(úýþ‘‘‘@ 088ÈqœÍf#âšoWUµ\*g2™¹Ù9¼¤»»{```óæÍÁ`!¤éZ6›¥(J„F£ÇI’,‹‚ ‚ü]׳Ùl¡P°,ËétŽmëééñù|¹\.›Íž={!T*•‰„¦iø-–e)ŠR«Õâñx<úé§#‘ˆM´Ý­ž"Ô"À½ešf|!^ÈŽ;vøðáL&ƒ[DÂáðöíÛ%Yx$Éë"¡B¡péÒ¥NÇ„Ж-[Æ6ŽÉ²Œ¤)zÃØ¯×+IR>ŸG5©©©Z­Ö××Ç2,B¨R©ìÛ·/™L†!IR4uºœ!‡Ó!ŠbWWBhrr2•J=óÌ3xµív{rr2‹år9I’vìØ‡Yîn"jà^³,«^«—J¥ÅÅÅT*…a``  I²Ä±\g@/A4M$AS4B¨s¤Ñhd2™¥]\].—×ã]Ú>át8-Ó·cBº®çóyQÛfû½%š>;;‹ìPe³ÙpÂ2,˰xUF£Ñh躎2M=N$ív[–eÇÓÕÕ…,dF»Ý¶,Ë0 „I‘$A2 CÄmÜ»Z¸·Úf;‘HÌÍÍU*¼„ –eu]ÿýï~_©T>Œ;“ú|¾íÛ·û|¾ñMã6ÑÖÕÕ…/íÓÓÓ?ùÉO²ÙlgN§³«««Sy$ép:H’ì,QUujjJUUC7ncŸ-˪T*•Jåõ×_?~üø–-[ÃÝa›h›žž®ÕjçÏŸ/—˧OŸ¦(ª§§' îØ±ÃérôÜj9µpY¨\.g³YUUß[`Yš¦5›Íééél6»wï^ÜæÑÛÛ+Šb½^†B†Óp¹\!’$«Õê¥K—–®’eÙ¥C]B,Ãr×¹ÑcF±Xt¹\¦iâ%A‚@QT»ÝF™¦iš&I’¦iZ–…ÇìAQAK{Š\¾|ù‰'žˆF£<Ç#„²¹l±P<þ|.—Û»w/Ã0Û·oïïï‡Ãív;‰2 sKåÔ"À½¥ëúÛo¿ýæ›oÆb1¼$•JýÛ·þ¦èl6Ûjµêõ:^Ž'ÿ°Ùl{÷îݼyó—¾ô%‡ÃGÊÜ*Ã0NŸ>­i¾‚r8ûØÇb±ØK/½Ôh4æçç»»»].W±XÌæ²¸3ʶmÛ6nÜèp8–öá8nË–-ëׯ¿zõj©\úöÿûíT*…K+EQE9yòäåË—Ïž;;¾qüoÿöo=^ÏÐàÐêwjàÞ²,kqqOàµÛíKS—:½+pûG³Ùl·ÛW¯^í¼¬T.Ó íE·S‹ „*•J©TêLRÂq\$iµZ$I*Š’Ïç%Ib¦X,f2™jµŠr»Ý=== Ã,ë)âv»].W,Ëf²'NœH&“6›$I¼çº®çr¹……„P6—½Õ©G Þoýý?þ¯û~QI‚D5›Í\¹rå¹çžÃCjS©Ô+/¿<¼n¸·§÷®lT’¤-[¶°˲ì±cÇ>ÿùϳ,Ë0Œ®ë𦠄PooïŽ;4][H,¼ð GŽÙ³gOooïèè¨ÃᘜœŒÇãF#?÷ÜsÁ`0‰èºžL&'''¿þõ¯gÒ™7ßxslllÛ¶m«ß1¨E€÷C3þ€? ‚€›FE ‡Ã•J…¦i\‹(Š’N§=Bˆ¢(ÜVÑéü±ª­0Œ )šr8n—»¯¯¯P( UUÛí6EQlj¢èv»=ÃáÐZ®Nr¹œËåòü<ÏQ, …‚®ë,Ë`0 …tC·,+—ËQ¥(J.—ëtÑ]%¨E€÷I’¢(v „Ïó?ò°$I<Ïã¹áþû¿ÿ{Ïž=_üâ=ÏÃ?›uæ:»)š¦wìØ100йc"Ù¤ñññp8lwØ3éÌñãÇOŸ>}êÔ©ñññ±±±ÑÑÑ¡¡¡uëÖ ïß¿ÿjìj6›å8nÛ¶mã›Æí{µRÝ·oß… ÏóÑh4 2 CÓtOoO>Ÿg&›Íþö·¿½Õh@-Üs¸ËÅÒÞè=j! âÒ¡1–e5›MÜó”ã9·Û½tL/žücé ixIç$I:N»ÝÞ)wH’ä8N’¥P0ÄÐ ž°DQ”áááÞÞÞH$‡N'MÓ¥R)½˜Æ²,Ë’LS4ž¾3Ç Ë²xz‚ X†ÅÞgEQn)8P‹÷Ã0»wï‡Ã¿øå/pÆiš•JEE‡Ãq½á¯²,OLLô÷÷#„¼ï–-[Æ… ðo‹Åb.—s»ÝxŽ2Ó4K¥R±TÄÓ”!„DQ‹F£4ó¿®õ¸u¤m¶|ðA]× Ã iš¦i†a†Q%“ɼôÒKž"ÃÃÃ^¯÷.>}f%¨E€{‹ ‡Óáõzþ½Þº¡×j5Y–eYÆ—y˲UéLÀŠâyÞëõÚív„ÇqN§Óf³u~Ûh4jõšÝagÑ{S¯6›Íz­Þi¡iÚn·Ë²ŒûÆvàÖ„(ˆ+wµ^¯×jµe=E(ŠBát:eYÆM#š¦iºÆ2¬iš†aàˆ »Ý¾t?WjàÞ¢Hª··—çx§Ó‰—”Kåßÿþ÷ÑhôÓŸþ4~¦Œªªß>899Ù™- =þøã}}}¡`0¸}ûöÙÙÙÎ:Ož¯F£ÙÙ¦BR$ÏóbSœ˜˜ðù|x ød2I’¤ËåÒét‡chhÈáp˜-æ=]È"Àa`ö«/UlˆCCC‰DâîÝ»™LæŸÿùŸñ­V{ñâE·Û}âÄ —Û5~rœã8ŸÏd2iuZ¼øÇîôzÇ322¢(ŠÓéÔëõŸ[–c]N—V£. xïß¡¡!»Ýîõú,ó^7éEE€ÃD’dwW·Ü)ŽŽ*ŠòÛ¿ýÛ­oÑ4MEQø¿O*Áét:ŽEQ$Ij-ž†ßØ*d¯ëíííîî~ãëoÈ’Œ{g>7RàÖEQÆÆÆEi6›­:ãSïc%È"B¿Z·4—ω ‘eYš¦-˳XãkçÇüÎ…Vwÿv„Ð>ÒÆÓáF—Öj%O?!„²´d)ŠR­V«ÕêåŸ_ŽÇãÁ`Ðl6¿ð ;÷–ψšY¤\.OMMÙl¶v(Šâòòr:®V«Š¢äóùh4zýúuFó”wµ–Ž©×ë<EÑb±<6\è U*•ÕÕÕÍÍÍý×~ïDQ,—ËÓ3Ó­•mhmmeY¼^ÞÚÚB¨\.ïuù¼]!×jµ=í9ùLe2™™é™èF´½?òâââÎ…Ÿ¢X,¦3éééiÜû{•J¥T*e2„P½^oïï BHlŠ ‹ ÉD’¢(·Ûm³Ùxžß÷Sš^¯ïìì,•JÛÛÛz½þ±¡ûíU¯×ïÞ½ÛZKjOr¹ÜÒÒR"‘@ ‚P(à)všÝØØ(—Ë,çY+‹‰xâþýûsÜ¥µµµt&],qQËËËårY§ûœõ@BbS¼ÿþÖÖ>¾-dYVe~~>—Ë=|ø0—Ëݽ{·\.¿òÊ+4M+íž 5³H±XüÅ/~×›k‹f³™H$ŠÅb¹\ÆYd-²våÊ•§è]\\Ä_ˆ¢xçÎD"¡×ë÷ÚôT«ÕR©Ôúúúþk¿w’$åóù›7nn¬o´¥ÀÕÕUÜZÈ0Ì£G …B$Ùk,Û¥F£±¹¹‰÷¢|Nd2™ÉÉI£ÑøôðºW±Xl7YDQ¼Ëö䝯±D­V«Õj­,ÒÞß„,Ëñx¼T*Qåp8ìv»Íf#Hb¥éõz¿ß_,Íf³Á`à8î™f‘›7oîﱡ\.///ã9 ‚ är¹¹¹9‚ ÊårµZÝ™Eö}Š"둵µµ6&Èg¤P(lnnÞ¹sgΩT*•Lmooã?Äãñ'E I’=z”Ïç÷º%ýSà~™™™™åååÿøÿX^^E‘a˜'N8NE†,r/‹ÁqœÞ ?yò$ÏóÓÓÓ•Jezzz]eO‚·ªÕjFCQ”b±¸ݼqãÆÓƒÅ£GZo_\\ŒÇã,ËîõV(Šb©TÊårx/¢žž—˵¿ŸB§×={6ŸÏ‹ÅÞÞ^žç zCë»­Æbµ„B¡ .Äb±ÍÍÍ{³÷"‘ÈþÎõ˜d2™N§ñ’5 ƒA«Õ¶±Gp'eYÁÖ&“ißfû¦×ë_~ùåèftfz¦X,Þ½{—㸽ÎF{ºB¡ I’Ùl>}út Ðh5;/©Ao°Z­}}}‚ Äb1üLvð€.Š¢(ŠÙl!$IR¥Riãï Bo×Ùl6Íf³Çã9}út(ÒpûÌpv»}dd$›Íf²„P{[ËhšÖh5>Ÿïܹs÷îÝ·7죨z½žL&ñF©õz½P(,//W*•z½ÞºÚ!I’ö}Šr¹\*•Òét<ÏãmTŸŸÎ–cƒÁ`ggg h6›Éd’¦éýµçá;'ÞÖµT*=zôH«Õ¶‚ÝcdYÎd2µZeYLJÀ“Qž·…Äãñx<¾µµµ¹¹999ljD³ÙÄBggg³Ùl½^oïÃÉa·ÛÏœ9ðÌ.çòj»˱½appÐh4ÎÏÏW*•«W¯>»Ó ‚€ïï»<^Q”{÷îäŒ:Îb±ôôôœ:ujßYD¯ÓãÍËå²Çã±òVƒaGá4³Åï÷ŸN‹ÅB¡phgG•J%<!ä÷ûÝn7EQí}èÇkôNLLŒŽŽú|¾ýB’$§áÊåòææf£ÑX¬;œŽV²Ñh4‹¥¿¿_«ÕZ­Ö}<ŸÏd2år¹R©àEôìv{®>K£Ñ\¼xÑï÷;œ­VK‡Ý.b6›_|ñÅP($B¥Raçýè1¸1 V«% At:^¯…B»iGéîîÆ;†·v¼Äp‡à©S§:ü ËÄ·âíùÁBåóùµÕh4Á`°¿3 ÃŒŒŒ¸\®~Fær¹å¥åµµµÕÕU£Ñ(Bϱ3ÚÛºO‚'vww_¼xQÅöv¤&“Éh4Z¯×I’ìììl{S"EQ<χÃa×óe&ŒŽŽ"„¢Ñ(^¶{Fcyy÷$Æ@ À²¬N§Ûå_«Õ:11áv»w¶ïR&›I&’³³³“““+++•Jå³ø…BA„z½~ø÷¥/`0Ø”š²²Û‡ŠCÍ"xŠÔÄ©‰âv1‘HrI¥R‰D÷Ü÷ôôô÷÷³,ÛÞÁV«Õb±Œ…Ãá}B„V£U%‰”ËåP($Ë2úUyÇqwìØ±@ ÀqÜS>8÷!>zô(›Íf³ÙÎÎN³ÙÜÝݽ³U¦í4Íù ç;|ƒA•‡“ÉtöìÙ`0˜Ëåp[ÔS.ikd·Û-ËÄÄÄn>!ººº.\¸ðÙ× ƒN§íêî"‹Ð.±Xlgmu:ÝØØÏóí*Ÿ¦é®®.‹Årð,2ÿ`~nvnff·ù7ê6V’¦éP(d³Ù Û…½n“ñt‹‹‹µZMŠ¢xž·Z­m¼«´®ðÐÐPÿáŽã8¿ß/˲Á`X__Ç›·íž åry{{[‡Ã‡u:ÕjÝå§~ë²ìû÷9›Í.,.ÌÌÌ|øá‡•J?£~¶’x„ò>Êétº)6w?Úæ°Ç®âÖdFçÏŸßåä‚vY^^¾téþÅÂÇz½¾½3&pPp¹÷Ù;ƒIM©P(d2™h4Úl6óùügÿØð£^OOO{Ÿ“nݺ•Ëå …B¡P°Z­>ŸïüùóxÈg„¢(§ÃÉqœºOF£ñÔ©SxŒÅS›âììl2‘\\\,‹<ÏÆ_|Ñlþâ'ø§C„^¯gæÔ©Sí41=3½³¶Z­öôéÓÁ`°]å“$i2™8 ÷ü<¯? MÓƒáäÉ“½ÇzÛX¬(Š7oÞ,•JÇuuu…B¡`0ØÆ»Ês~…- n¶éêêÚÓóùüµk×jµZ±Xôù|8iƒÁ]NÅ:øeq:œÃÃÃ&£)G"‘‡Þºu+•JµîAœŸo||Üï÷·ñÏ'£Ñxâĉ/<¬!6ƨÕhBårßO:uÀ¸Fn|jûƒ¯ ;k‹ÛEÛ{–_ øOf$<ÒÞbF©TE1 ?~|hhè9¼«<#f³y?l2™ä8®Ñh”Ëeš¦ûûû=^ÏÐñ¡¶/Þõ$v»Ýn·÷ëÅcT§§§«Õê£Gðns¢(R5<<ZÛä‚=1ƒa÷ÿ °Ö€£ˆ¢(’$ûúû|>ß™3gðèõh4zåÊ•l6ëv»Àààà3ZcéË¢(†avßà YÀQDA&£Éd4Ùöz­žÍe9 ·²²Â²¬Õj5™L‹¥½SÀç‚,ਣ)šÒQÎ_?9þÒ‹/5 NDz, 9EuxÞ“ÄátÈ’,B³Ù<´!,GdàÐ(DQ”‚Xèìp@þÎB\k¨ ²ÔYj‚,5A€š ‹@ME &È"Pd¨ ²ÔYj‚,5A€š ‹@ME &È"Pd¨‰V»À‘ Ër.—«ÕjÙl¶Z­–J¥F£FEQlc2™z{{uzÓáÔh4‹… ˆÇÊ) …íÂft³\.Çb1AB$Ivttèõú`gP«Ñz<Š¢>·õz=™L–+å­ØV:Îd2F£Ñd2y<×cµXÍfócoQE„b±øÁ‡ˆ qppÐh4 °,Û–+Y8 Š¢¤Ò©B¾°¸¸˜N§c±X¡Pxçwp˜Àúûûçw~Çíq„G,‹Ùlþœ,²]X[[»úñÕÍÍÍ>ø ‹!„(Šzë­·ü~ÿk¯½Æó¼ÃáxR©Õjëëë‰DâÚµk·nÝšœœìëëëééyñÅ'NM úÜ,R©Tb±Ø_üß¿Èårø‡ººº ‹¿NDQüäŸ,,,$‰J¥’ËåªÕj½^ßyL*•úå/i4çïÏwvvþÆoü†Ñht»Ýø»‘Hdaaannnee%ŸÏçóyü-Y–———S©TµZµZ­ÅbÑjµŽŒŒp×*·ˆlnnþìg?K§Ó«««¡d2Ù*ÿ…_@yÜžo”ey}cãáÊJµZÕjµ>Ÿa˜v]È"Àah6›|ðÁ»ï¾û”cr¹Ü{g¿>wî\WW—×ëme‘H$òóŸÿüÆ—/_~슢ÌÏÏ#„~ùË_šÍæz½ ûûûwF Ü"2??ÿ·û·•J¥õz¡P( KKK!‚ œN§Õb}<‹D"‹‹‹Õj•çùžž¯× Yø5C’dww÷… úûû-‹Ífc†fh’ BÍfskk+‹ýÛ¿ý›$I¡l6{ûöí¾¾¾ÑÑÑb©X*––——oܸñhíBèÂ… n·;[,üö¹¹¹T*õ_ÿõ_•Jezz:›Í¾þúëFƒçy’$Bµz-nmm‰¢ …¾ùÍoÚív£ÑX*•ŠÅâÔÔÔ•+W‰Äƒ…þ¾~ÜSƒGŠ”Ëå{÷îÍÎÎâ“âw}¶óhß ‹‡$É@ ŠâÅ‹;::‚Á ˲z½…F£1;;;wîÒ¥K¸Ñ"™L^¿~ç’R©´¹¹ùàÁƒV‹ÈÉ“';öÍÿóMŸ×‡ß~éÒ¥•••ÉÉÉ\.wíÚµÍÍÍxŸŸššº}û6)b³ÙŒFc¯ dà0°,ûío»^¯›ÍfŽãX–%I„MÓýýý‚ |nßG&™ŸŸÇã­W&&&††‡Ì&sëí#£#çïþîïr¹B¨R©ÌÎÎær9¿ßÏ2,B(_È¿ûî»±X¬ÙlÆP(dµZBV«Õ 78„ÐìììÆÆÆïÿþïãb%IšD"©TÊd2?Þçóqµdà0$éõzŸò]­V«Ñhv¦Žãp4©T*Éd²T*µŽ·Z­»cçL‹Ù¢È MúÉ.Šb&“Ñét’,}úJC\]]ÅI…¢(½^3 ˰,Ãâ¢*•J¥RÁÓŒeY–$)“ÉlnnJ’d4ív»ÍfC j6›’$)ŠÒl6B$E’É0 A­úïd@} ±±¸°¸²²ÒZnÄãñ¼úê«]]]¡•••ú§J¥R­ãñˆ“Vò IÒl1“$Ùz¥V«-,,Ôjµ¦ØÜG}EÙÞÞÞÞÞ¾|ùòÔÔÔØØXOO¯Ã§×éWVVJ¥ÒÜÜ\¡P¸sçEQÁ`Ðãñœ:uÊbµtwuï5Ž@ÔG†*Š‚ªÕj‰D"“Í0 ƒ[DGGGî:)‹‹‹‹;ß˲ìΩ.!–a9Žk )m6›¹\ÎjµÊ²Œ_!B«ÕR…ǠȲ,Ë2I’²,+Š‚«AEQA(Š‚dÛØØXZZzíµ×€†Ó „RéT.››››K§Ó—.]bfbb¢««ËçóI’ð†ÙS,¨#—ËýøÇ?ÞÚÚBɲœÍf†yá…ÇÈȈÏç;{î¬V«Ý_áÍfóÎ;Fw£ „ÌfóoþæoF"‘÷Þ{¯R©¬¯¯wttX­Ö\.—J§ð*#ãããÃÃÃf³Y’¤D"‘t:ÍqÜØØØàààÚÚZ¾ÿËÿ÷—[[[©TªV«U«Õjµzûöí¥¥¥{³÷ÂÃáüàv‡ýXϱÝW² ŽF£qåÊ•………Ö+^¯÷âÅ‹N§³§§ÇápðV¾Õç²ÛÛÛù|7x „8Žóûýõz$ÉjµšÉd Ã0¹\.™L‹E„ÏóÁ`a˜ÇFŠðú¨¯¯ÏãñÔëõ@  Õj C[ ×étƒƒƒAÐ4}ïÞ½ÿøÇƒA£Ñà¶H$‚êèè‡Ã ±‘H$Z#E|>_ww·Ñh\]]F£ÕjÕårýÙŸý™Óéôz½Íf3¯¬¬üùŸÿy6“½yãfÿøøøî+YPA<Ïó<ÿ·^¯K’´µµ¥×ëq£E¹\VÅ`0‚´9vYþÎf†a¬V«Õju8ÙlvrrÁ“_ðÌ<$¶)6kÕZk¤Hgg§Ñh¤i:›Í¦ÓiQÍfsÿ@¿Ïë …B¢(®¯¯+HaF„ÍÍM<Æe÷ ‹êp:ïüôY’BõF}iqiaaáG?úÑÇÿê¯þ* ÎÏÏüÁ÷àt:¿úÕ¯FÖ#Ví²pš¦OŸ>ÝÝÝÝê11 'Ožììì´;ìÉDrjjêÎ;333£££CCCÇŽëëëëííýðÃ×"kñxœã¸³gφGÂf‹¹¸]|÷Ýwïß¿_*•:::ºB]¯´íîé. ÃÄãñwÞy§5Be·UÝÓÑh’$]Nþº!6ŠÛÅL&CQ”¢(¹\Ža˜X,ær¹Bœ†ãy~çœ^¼øI’­‰3ø•…[,“ÉÔšÒB’$Çq£Áëñ24ƒ,©V«½½½~¿ßçóY,š¦óù|"ž`YÖívF£ÁHS´¢(…B¡µÆ ˲xy‚ X†Å‰Ï ªV«{ºEõ14Óßß_©TZÍ©Têg?ûþÚawŒU*•û÷ïãWr¹\:æy¯Q&Ër>ŸÏås­åIt:ÝÐÐP  ™ÿõYoÐÂá°$KçÎE±ÙlÒ4MÓ4Ã0 ÃT«Õd2ùÞ{ï]¿~ýÍ7ßììììííu8ûXÁl÷ ‹‡AQ”r¹,IÇqMÑÚù/IRk-¬µPÇq‹E¯×·¾U©TJå’ÉlbѧK¯ ‚P.•[M#4M›L&£Ñˆ÷ÞkÁ­#!V÷ÙJ–ËåR©„Ç…X­V—Û¥Ñh(ŠBa±Xð^z¡F£Ñ,ÃʲÜl6q"Âd2í¬çn@C£ÑøéOFÏœ9ãv»}>˲Z­§z½~ëÖ­ùùùZ­†÷ûýo¾ùæÐÐBÈãñLLL¬®®¶J»}ûv±TüÚë_Ñ¢)5ïÝ»·úhµÕ‡¢Õj|>ßžfØ®¯¯ßºu+•Jq7>> ›Ì&ü-FóÆo?~ü_þå_jµÚÆÆF³Ù FcuuõÑ£G¢(î¬óîAƒ,Ëét¯0&Ë2A,Çêt:ÜnQ«Õb±X2™l5hµZ·ÛÍÛx„ÇqF£Ñd2™ÍæJ¥Òl63™ŒÉdÚÚÚÂ3kêz"‘Hĸ}Âh4âÝt A»¬ž¢(¥Rikk뱑"ø’"yž/—Ë Ã4D"çé4x<žN§q“Ýn·X,{º2E€Ã IÒÌÌÌ¥K—Þÿ}–eqÿK«FQ”b±X«ÕZí"¯{†²Z­F“ñÌ™3ßÿþ÷§§§¯]»ö¯ÿú¯ÇýÃ?üCkÐh¡Ph4ÛÛÛz½þ{ßû^ ‡Ã«…¡wÕ.R©TJ¥ÒÔÔÔ_ÿõ_ç;ßùìH–aÍf³^¯ßÚÚúã?þc†a´Z­,ËÕjµ^¯ ‚ÀÛøÑÑQŸÏ·§+Y8 xŸÞp8\.—kµZ>ŸEq{{»u€ÅbÑét£££Z­Öl6;N³ÙŒßË’¬Çã%B–åT*%ÂÚÚZk€ˆÝn×ëõ===<ÏŽŽºÝîÖN¼»·N¥R¹\Îëõ†ºB:ù´þét:¤LLL´Ö€___'IÒårÆ®®®¡¡!·Ûmå­{º2E€ÃÀ²ìw¾ó—^z)‰d2™ÙÙÙB¡píÚ5¼MÓããã¾ß ^°;샃ƒFƒÑáp´¦ì"„Ž?Þ××wæÌ™W_}õ“O>‰Åb}ôÞΆ¢¨³gÏú|¾W^y…çù'NhµÚ=‰nnÞ˜œÄCRFFFFFFL&Óÿª?ÃöõõþÑsÙÜÕ«WñÞx‹åâÅ‹>ŸïÌÙ3.§kll Ö€öOE)²$ËŠ¬ÕhwF"I’·ñ4MSe·ÛY–-—Ë.—«^¯#„8ŽÃ{ЋÕjãm,Ëî\>!DQEQ‹Åëõ:N¼› Bˆa˜ááa»ÝîóùL&“V§Ý}‹fÐë=ÏÈȈ¢(N§S¯×ïliU€åX—Ó¥Õh‡‡‡ …ÞûwhhÈn·{½>‹Å¼×Mzd O»m4‚ Ȳ ²5ÝcH’ìîêVE’%¤ ¦ÔDáEW?=€"I‚¤(Š ˆÖ4ÚÏ–ãt:ÇÀÀ€¢(’$µV…Ço¤iºõö=éíííîî~ãëoÈ’¬ÑhvŽeÙ ·Ž(Š266¦(J³Ùħkz+‘@pÔ‰¢(Ër.—akk«Z­FFóØj‡?§qPh­ rBÚ7ºì¦VøÔmLiEuår¹\.¿ÿþû>¼|ùr.—û½ßû½žžž¾¾>¼ª)x¦Žh©Õj¥R©½€I° ‹—ÑmW™à9W¯×+•ÊÖÖVkÞó&Nçr9Ü ž)I’r¹\*•ŠÅbÅbQíê<ïÒétµVm-U®I’$Y*—ÊÅb1noo///ollÄb±B¡N§M&S4Õé>gqRðt,ÇÚmöÝ÷×ÑÎT*µ´´d0 C[ ä8ÎápX­ÖÇFƒ/+EQ2™ MÓo¿ýv»~‹Únii)›Íf2µ+òå'ŠâÍ›7×××ïÝ»§ÕjÕ®Îó®T*mŶÊårk ƒ*jµZ¹R¾}ëöõë×ßÿýH$R©TZÎÝ»w/çóyhÙ‡ŽŽŽo|ãÇáÅæ¿ÐÊ"z½þå—_ŽnFoMݺÿ¾$If——é 1 c4õz½F£9`Q¹\îöíÛ©TJ’¤t:}óæÍD"Ñ®zîDÓ´Á`ÀëíàWVWW›bÓëõêtºÞÞ^¿ßÏrðGø?H‚äy¾V«uww×jµt:½µµuíÚµçöV…gÿÓ4íñxÂáp x>Ÿðt:ÇíAÙíö‰‰ ¿ß¿×Í,Ôâr¹¾ò•¯\½z5™L...nnnƽÎf<‚êõz6›¥iúìÙ³áp˜çyƒÞÐÆ†ê/”H$âñøÃ‡———×ÖÖVVVVVV*•JëY–×ÖÖÒét:†Öî}‡Ã¯¼òJkã›/t„.±Á`çyþÎÌééé[·n©]£/¶½½ýßÿýßz½~ee¥í… ¿ßWÐïd2Q].WwwwOOÓéÔpV_&$IZ­V<´¾Z­â?þXíz= AÁ`çùÁÁÁÎÎN­îy|d×ëõn·Ûl6w;ÇÆÆðMjWjWÜn÷©S§ÒéôÒÒ’ºOù¿vÌfóÉ“'ûúú¬¼õãñøÔÔÔG}ôïÿþïO:&‰b¾„jµÚîÎP1›Í/¼ð‚×ë½}û¶ ‚ 주V?žîÕö> Þ‚¨íÅr—/äµmë±oÏxþüùÁÁÁP(d³ÙÞÌóeB„ÕjeYvddÄl6—J¥ƒü»H’$IR*•j Ôw¹\mo£zèøËåõûýýóØ”L&oݺU©TAÀ 4ñ<ÿ,ÚÛÎëóž;wnff!„ï j×èqF#›ÍâÝ_)Šâ8N¯×?'½H>ŸïÅ—^ øx!ÃlÁûÌQe2™>|8??ŸËå›2£ÓéX–5‡Y±/ ‡ÃA3ô.÷ÁAG*‹˜L¦sçÎ9ŽcÇŽ•ËåËîîÞÙß4Û^Ã'‘$éYd„ú¼Ö–¯|å+}}}¡P/< Z‚àyÞd2 ?nµZ×"k)M’$Q …úJÞ‰ªM•ý˲ýýý^¯wxxx¯;DšD"qåÊ•B¡ ·¾õ-›Í†—¡|þù¼>Ÿ××ßß_­Vóùüs8ŠY„Z­†‡AàMçyžßë¾eÏH 8wöœÃá8üS»Ýn·Ûm0NÇ'¿ø$“É‹ÅÇ¢$^ŽÝétîcµ `³ÙhŠÆ{þíÆÊ"˜Ífû­ßú-Q÷w³S¥V«I’tð,R,ÿþïÿ>×j5¼Ñ3j—–ey{{ìí¦ ¹»§Ûbµ@é“$éóz-fó÷˜ïdÆD¥R©T*?ùÉOæççBÇ}÷»ßíîîn_MBˆ ‡ÓaÐŒ¦6§ÐòÒK/ lÔm_‹âà‰ÄÛo¿½±±±±± …z{{ÃáðÀÀ€ÚõB!½^¯ngœÍfè0MápøÎ;©Tjjj /.B’äéÓ§}>ßøø84ïƒÝn7 »Û±SGîó†çù·ÞzKíZ „P2™¼|ù² õzçù¯ýë6›íYœ¨Ùl&“ÉZ­¶¹¹¹›{eW¨Ëb†,òDxw+„бcÇRÎööv¡PøÏÿüOœEt:Ýk¯½6>>ÞžZ‚CtîÜ9µ«ðD>¼s÷îçõù|xDá… Ô®×sÁf³Ùl¶ÞÞ^„?ànDÓét¹\®×ëE…Ãáþþþo|ã¿.£—~­ÁçÍs„a¯×Ûö¾IY–Ýnw³ÙÄ«ö~áñ.—Ëb,8BB¡Ýf×étÙlvnn®\)ã…»ñ>ož#Eùýþ¶/ë àé:ƒ¡ááaQ¯]»–J¥,‹V«ÝýˆpE€OÑ4=::Ú Í$ùÜ®ô%Yøžº¯v-Žh}€š ‹@ME &È"Pd¨ ²ÔYj‚,5A€š ‹@ME &È"Pd¨ ²ÔYj‚,5A€š ‹@ME &È"Pd¨ ²ÔYj‚,5A€š ‹@ME &È"Pd¨ ²ÔYj‚,5A€š ‹@ME &È"Pd¨ ²ÔYj‚,5A€š ‹@M´Úàˆ¢(J£ÑLLLèt:„Ñh4jWJ6›mbbB„J¥b·Û EQjWêKB«Ó [Ì–ŽŽŽãÇwuu™Ífµ+Àã ‹ ½^¯ÓéþôG*K2~‡’#hìĘÕjm6›Ífs``Àd2i4µ+õ%áq{þàþ@QY–IФHЦá¶ž;ðK©š¦ŒFc>Ÿ·Ûí‹E¯×¡v½À!!‚ öˆæô:½Óå”%Y’%NÇ0 IB÷q{$©ÕjÕ®_€PEí:QõzýÎ;ÕZµQo°,;00 ÑhÌf3ÄpÔȲܺ¿¢n•‡ ÚETC’¤Ínb³Ù¤šã8†aà Ž hàˆƒv5I’Ôúߎ!‹8j ‹@MÐ4 5A€š ‹@ME &È"Pd¨ ²Ôôÿ,Èc endstream endobj 132 0 obj <>/Filter/FlateDecode/Height 262/Length 716/Subtype/Image/Type/XObject/Width 729>>stream xœíÒA 0 ÀÀú7ݪƒp§ ÌBÑü€'œM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦÉÙ49›&gÓälšœM“³ir6MΦév‘Wt endstream endobj 133 0 obj <>/Filter/FlateDecode/Height 317/Length 121724/SMask 134 0 R/Subtype/Image/Type/XObject/Width 920>>stream xœìÝw|\Ž7þïÌ){¶W­z—,Ù–-ãn¹ÒÁ€C $Z¸É%¤Aàþò·|ùsï¿ÃÄIöš{a¡˜“ @©þ ˆöùÞùs(€Fˆ` i¢»»o#ìÝÿüY³n»øâ™3gTVTò¬ƒ–aæ4Ä‚,slÁPhë–ÍϼôÖŽŽéóæÍ]´¤vÆLÄqDÓ4M£„hš6& Ç1Æs/ˆBKÓ «ß_·zµÄsßXvÉ’3Ï,).“†1GE"oÜxß_ÿZà®›_0ožåE i”hpܳ¿(Œ˜ãÇ‘D·ySrýúr£ôàüÇÂÅ‹³\®QjÃ0 s’° Ë!ä7þvõÇ_òÍ«ž}ŽÀ‹Šªhª:Öí: Žãxž †­õ_{îY+À~ÈápŒu»¾ê!~ê©{_|95¿®xÆ ÊñTUF/¼~„Ï@pÿ¾ÄÊ•÷^´ô‡·ÞbµÚƸU Ã0ÌçÁ‚,s õõõ\°ôõM›]n,˧Šà ‚d”–Î8ãçwÿô;7~g¬›óU×ÝÓ}ÙׯÜyÞù%sçjÉÔÚFaà8 ¡„eø,B#Š9@A”B?c”-’¤Ps“íÉ¿þéþû/^¶ì 5a†]lAæV­Z<Þ^ÿq<D‘ãùñ\Þ•ã8Ñ` DÛ±y“,gÖ®];Ö-:µdYë&[_[GîéQcq$ŠúèÕÏ !Àˆ¦3Éö¶XýÇñÛS=Ý@é‘{ÑÃáø¶­±úã{Óýý ª€vÒbÄ ÍdÔ–– Ï×ÑÙy" c†aÆ+¿ÅC¶×[;gîŠ×_ïéì()¯,()É+,2H!”BÈš”ó!Œ1Bú`YBH_wwOWg{sÓ®íÛ³ ËË+ưm§Z[{ÛêÕ«©¦¦fBUÕ¸Üf1›=••[·ôb))‘òóy·Gï.¥”ÿ¹¿?¼n]|ÝG´µ¸ÚZ×…K-“k°Ù<ØáŠUµè¦úØî=™·Wp7w®µfŠsÑb¬×‘î¯Ðb±tgG¼£#²ysiee~~þ)9~†aæ”aA–9MU‹ÊË/¼æÚÖ}ûvìØþîŠå™d›“S\^^\>¡¨¬4¯¨˜¨¥„PJ)¥„ÀIªWpŒ94T\ c„âx.Ð×ßÙÞÖqð`[sSwG;Æœ-+«xBշܺúÍ!NØÖ-[Ÿûç빕ïnÚœèŸøÒ‹±‰Ý €$Ñd2üþûÜœ99ß¾ÞXZ†)M÷ö`—«ÿ`s|åŠMSûû /€Ån7TWCNdeA_47õcÄ0 Ã|n,È2Ç…jDN§­v‡cš{âôé‰X,DƒÁX4DÂ,ݰf¦È‰x(%š Aðdç$‰Pj2™r DIÂ'b±H8ÔÖܬW?(P••-ˆ¢f !½½¡@a¬)J` ?•LR˜CÏñ‚A²X,N»Õå*¨ª¶Úf«ÕîtÚ].›Ó…Òˆ¦È >ê˜Èϯµ­í±Gééꇻ››¬E%¼ –——TL˜xÆ´¾®ÎŽ–Öu{ö®z÷Ýü¼¼eË–-^¼ãñ1ž X­`·¥‰@$¢ÅbZ: Ñ(´´D~N–ج¼hÌ .'hžç“ë>ÂV«–JEÖ¯×G³`„´dT5úþ{(&'Ô÷rÕÕÁ—_¢ª ²¢ˆð±Ù ¥%ÞÕÓ§ƒÁV+Øl`·ƒ Ñ€Ð4 ŒãÁß Ã0ÌQ± Ë|D#z™zQ’r óŠŠF”Ðd"žN&b¡ˆ¢(ÉDŒR*§Óš¢¦3™Ð@¿’I#Ì¥Óé†Ý»0½=ÛÖ¯ ŒÜ³'/oþ9çqÂV›ÍâvJ9Ž/š<Ùl³€dx‘çyÑd6›¬VÉd6Û¬ÏSPJ ÑE9釼¹¾~ëó.Xj¶XÇ[’Êqo¶++KÉd(«Íî˜âª˜\Óß3£¯»«ýÀ¿>ûì>º`ñ¢+.¿"¿ `¬Û zœ%0%Áë>‚÷Þ…¾¾á.tý‹Ì¥—(¥ÐÞÔj ìÛ#ÿÊ<šFš›F#8] ‚¦i6[ªªD0I„@–a×.(/‡Ù³ô¥Â ª€1PåùuéŒÜÑyÔŽ|•ÐI‡IN`ø¥Àa”m2ÇÉ; †a˜/d™A Õˆ¦ æ %É`4:=^Ðk €¦jÉDœh* ¬*J&èî~ø¿îÉ+)ýîý<;¿s(‰®zí•5Ëß²gyλü B) d4 ’‘RŠ6˜L¢AJ)P€ÁQ „Rª©š¦žÚñ±h4¿¨¸î¬s¬.ç8CI4¢iªÞ.¢O¼CŸŸWTTY3¥¿³³¯·wçömïÿ?ÝNû7®úÆù^8ÖM¢ÇYŒ¡§Þù78œ°ìk ýD`ý:hl»fÍMƒ¶6X¿ròàüó!5¢€Æ0Ð;vÀ¤É0u*<û,@Ý|¨®<´¼-(2ÖÃ9çÀ§,Þ¤G’Iqýr´¿2¡´Ô`0>±3€CÈÊqVñ¸sÙfÓ7 Y­VQÙ:B©Ó –¢ö­Ji•Äeæ+Yæ$ „R ŽR¾@2™†>¯E’QÚºî£öÆÆŸ?ö—ùçŸg0šEQó‹KÖ¬\±nåÛßùñ]Ñ`0³RÐs¥rfÌŠLéÅdEÖ{=Oô|o¤’ªêâªªŠ‰z}½íÏ¿¹üoO?=gîÜ[o¹ÅjµŽuCsP¿ ÚÚàwÂĉÀ ªN'ìÙ6À™g‚ª@~>ÔLdL&p8€@‚x|p?deA* `³Œ\³s]]ŸÕŽ‹ÿ§ý|çxpü¿ÎóÀ}âÊŒÑvxŸ®F©•ãr?±¸®'Šü'ÊœñWõ‰ÕË8„²M¦£‘RJÌ<_lµ˜y€j„–Úm"qÁ0Ì8Æ‚,sjÑC\4JÍ^´ø‰•ÿ.(-çDQ#FH…²É“ ½¹I#§¼‡õ«ƒª!ÈÊÏÏ/)µ;›?ZûïW^Ie27ÞpÃX·nˆªÂìY0±òòa A}máÀP šF#ÔÖÂóÏÁÚµ°p!X¬ iLÀ+¯Â®]úˆ €¿>Ò`q®Ïh–å…‚_Q©­œœ°1ðiê àÒ„B<©äqÅYMÈåv”Œ~â¶B¾£ís×Qï!èîùĘy¥Œ³x^¯À)¦áôŒP¹Ëiæ8@\C±ÍÊŒP•Ãaåy @Lê®(@JUOxÂPTU;¾Š¹c±¾Trä¦ ¥‘]ápBUGæSŒÐ@:½&9bFŒC?ÈòQróQÇ‘#$mü­Ã¿~w ðÝ‚þ#žú ¼Ho6P–(oå1™ò-”Rp …‹Äs”RB•Ýæ1H„R‡dÈ5õØ0 ÃiœFæË aœˆF?\±|åK/ú|Éd2 ‘O¶8JC@Kc£Åfo… (%eeF³Eñ1:BÀ ‚Á íٺ壷W®ywÕÌ)5?¸þÛgœq†Óét:cØàO•ˆÃư~ÄbNC:ý‰-(8pÕU0q"¬~šš@á²Ëaþ|xù%p¹@)¡©GíyEði£cu¥Œ½ú¢ cªÊíR>Ñ+L(MkÚ‘g B*!òÑŽKVÕOö(JC0tÄ%‰DK,Áa€Rªº?kN¥„x„ñ$‡Â½¢ÀÑb.h‡o<öø)`8îP¿¸¾z0¸xÞŒ1²rP:Áã6 (°XòŒF qÜ̬,•‰ãÊmãcT Ã0ã ²ÌèA¥âñßþôÇ­X1aÚ—^½Ç›ãòf[íö[/8w¬[wteåé—_~î÷¿>1qla„ü~ÿ¬%g^zÃw\ÙÙD#Ï ‚‹FV¿ñ¯å/½`2_»à‚Ÿýãe·Ûíp:DAë&‚d} šöCe%Ì«› @~ûà‘ÛÚí0w.ÔÖ‚,Ǿ W<¹¹`4‚,Ãì¹Ðرؑ£ ’ Àο´ÏZ…n,W¨Cˆ*±<’‰? —ë)Ï‘7Qª¢PªGKB©J4MÏœÊáK÷í …CÖ1‚µýÙ;¡¨«ü~ýI’¡4’H@<6X•Á1Í@顯‚A4¢‹6GÂ0´öÉp8öàì€,“©Üa—5Í!ŠU»€°ÈqÕv›M4(„TØm–“ñˆ1 3αç93zQ\õÚ+kÞzó¿~`þ¹ç›lVaÌs<ÏÃx­L4¿nþ+/½¤Ë>ã+–¿³ac:•EºsÆ¿òmõ_xæ™üï_Mœ8ÑjµšÇùPEžƒ  i?Üt3Lš` ƒ|Äô>ýSl 0.))îõ¥”OuÄb(iBZ¢±t Bõ$“-ñ¸<ôÓþÀ€, w„ÃN¥ ª02Ý"þÔ`Ò퇡È ¯éïJÆ#Œ»ugD¬C•Ã! Dffy$#„ŠMæB‹…C¨Äfey—aNkì ÌŒA׬XÓçÍwçdkš†0ÇíÛ±c¨ mÜÍEÑívu+ŽÎåt$coï¦V/á…ÒÂÂk¯þÆ_øµÝn7™LGíÕw86¬˜4 l6 Phi9´ ÆÀã7¾û]ÐÈ`¢ÅtvBGœu6˜Ì@x<`·Ãž=0a˜Lƒ'ÇÁÞ½@dgÅ~©p<«D|¼ÝüÅV«64>P:rd·ª/gFˆ>†!ª(;AB)¡tG(‘´#‘Ú0d2ÁPpp´Ã‘—R‚þèPޣݡ ¾ÉËm­ƒc¬_mDŒMY8®Òápˆ¢…ç'9ÆÉPmw@ËifI—aÆ1öüdŽAE¢i'¥ªªSçÌÙôÞ»ðþ%ùùF“)LnÿxÍýßÿP ©D\”¤“5¥ !DŽ6ýKà Iß]µòÕ×n»ù;ÿzù¥’ÒI’ÆáŒ1?%UkL®ÎNر,ŽƒDà©¿r0ƒ*&Àšàã¡¶L&Èd µÞ| ,„I“# ²¼P; Þ{l6X¼ìvÈd`ëVxù%¨¬„ÂBøôsK/ôvJŽŸÀáÃgnì6‹, #:}õ\‹(P}äCFS[¢±þTŠGxw8Ü“Jñ÷%S±XRS5€~?¨*PzØP“ïe2€ F¨+<4žaä–4ß岋¢Äóµ.§ˆq™Í–o2b€yì ÃŒ)4Þæ¯0ãM4]¼dÉÍÿ÷¾ÊÚi}¡Ïulù?·~§­©IE„1%„(ÊÝ¿ÿã–u½ÿÆëÿûÁZoAÁ?%‚h8òoºá©'Ÿ5sæÝÝx%Ërww·Ýn·X-/ ñZï“rÛm·=™‘aÁ‚Á×aCWüî·HÀp2Æpðy45Á/5Xv`^xv7ÚŒR¨­…Ë.‡ÜÜC¯ðÄã00ph3ýóî»eeŸÚÄÝ»/éîú>š“ˆœNȈ^Þ¡Î| C%¨éÐË[[4Ö•LRJò¼3¤ !ëüMK²¯Ïw|C›†ç®éy Þ‚Š­¶ ‹…Ãh^V–Äá|“©Ìf“07Ùå”N‹ÏFæ´Å‚,sl[¶lùáOê-+¿ðªoTT`ŽCÃñÏ a4ÐÓ³îßo?ÿ§?DÂákÿóŽ…^TRYÙÕÒrëEüà—ÿ}ѵמh)ÙÁ—­pÿšo½ýâ O<òȹ瞋ÇëèÛ¯”–ƒïúùÏ_ë솳΄œÀxDÇ‚€êëaù[ ipÙå0mx½ÐÒ?7Üuu ª’ ر>Þû÷Av6œs.Ìœ &óáý¬úû`ÿ~xýŸH|ýJ˜4 òòެf /º‰À‡.ÔÔßüêWófÏ·o˜/Bïn?â¥n8ëÿ ¤Ó»‚!@ÐHŒFU -ÑxG29É´D" ªƒù•Qûä«çáaó®Ãdª±Ùì‚0Ùaw 5‡U&9ƒ n…ý>; æó`A–9.š¦ýýïô±Ç’™Ì¬³Îž™a¾RØd/æó)//¿óÎ;ï¼óNØ¿ÿ† ë;;»ÞyêI_OO(Î/) FWN¶Åét¸=y%¥”j„Ðìü—׋8|ü]¶Éh´õÀ~ŽÃ€p*ïhnRÒ©`¯/ öuw!„ŠKJfΜqÞ¬™gÜróô3Æyxi893n~vñZ·Û]TT‚(¥4™L>ûì³ßøÆ7ÆéÂPWW§Çn_oïº>ÚÖÐа{÷žË©$»=i±Ífbµ‚Û ”ÇAVÖ`ÉØÏ†d2Ðײ C$‚B!K&㌄Q:ÒššIÕÕ3Î9{Á¢…••£q¨ÌWñ<¯mîWFÓö„ÂqEi‹ÇzSé}áp(#7G£Éd’R•CïÁ†ÿKi0†éžÞ^€¡€«×“Œ5.g¾d¬q:ò$©ÂfÍ1Ëm6c„ $`Œ„ÓçªÈ0'ŒõÈ2' !¤¡¡!Nµ·wø|½»vsÇq\{kk_oïç:Ùl6Û¤©STU#„¸]®)55f‹¥¬´ÔíñTWWKã`¦¶téÒ·ß~ÚÛÛõ$z„áÙºººõë×çn›š›îûÅ}Ï?ÿü§ívœëóù|>_{G{G[{[w÷þýûBŠªv<¨è…`q¸°¢R2™TM+,(˜XQ‘]9a‚Óé,+/?Õíg˜Qä®Xb nŽÅ⪺݉¶7 e2 B¢„¨”‚¦Jºšv(Ôñ_‡³ÒhœîpØEa†Ûe„énMxŒB‡1 ‘ã0Ï.ó%Âzd™“c\[[ sæÌë¶ŒY‘ñD,ã8Îb±˜Ífþ𪓚¦%‰X,†²X,6›íóvg2™X,–L&Ap:Ã!>$ ÈÉ͉„#×\}Í–-[ §§ N£^jÈÎÉÉÎÉ©6m¬Â0£Ç.ˆv—KàÈŠEéˆÅB²²;ŒÈòî`8©(ûAPÕTJãš „%  D#MÑH“ïð\ÎíÉÅÅn—Mf¹=nÉ0ÕéÄ Çc,`Ì#$pœÞ‰Ë0§dæÄƒÁwß{÷_oüëÅ_€›nºéÊ+¯¬««³Z—ƒWUõ£u½öêk=ö˜ ·Þzë=÷Ü£ªêqîŸR‡_{íµ§žzjÆ .—ë7¿ùÍ¢E‹*++1ÆwÞyçsÏ=»víºûî»õ óæÍ€þþþ¬¬¬“Ì ÃŒ » Lq¹`QÎaÃ4JCᘪ6ƒ1YÞG3™–`(FišÒ>U• M  ©@ˆuRúÜpÀÕÿI’×á¬0™&Úm…Fc•Ã^b¶d%c‘ãDŽ8läxž¾eÆ=dæE£Ñ|ððxþüÆÆÆ[o½uÉ’%Ï?ÿ|^^žÅbÑ7£”Ξ={íÚµzí¼yó$IÅq·2Ã0_‡PË ó¼‡½S Ër*Ýú3™æH$˜É4‡#ÑL:$+2¥mŠ¢R Š@AQ@Óúýý”n€é–ãÀl©´Ùj¬Ö‹yšÓ™k2Y,Ï8ŽÇØÌó"lj§ÕG=Ì— ² s"!7n|à\.×ßþö·eË–ÀŸÿüçÛo¿ýOúSݼºY³fÅãñ·Þz«¯¯ï¼óÎ{ð·ÖN­€'žxB {Ôc<{ölðù|õõõ#ƒ¬NQwÇYeF—c4‚ÊmV¸¦âЬÇ‘hX–DÂþt¦#ó§SþX"ªiEéWÕ ª‚¢€¦‚ªB$\ ¥¯ï*f4É´ØétŠâ|¯'ßh*·ZM‚`x³ ˜xÞÀqFVØŽ,È2̉ÐTí‘Gžç‡‹dMœ8ñõ×_Þ¦½½ýƒ>€‘Űxž7^{ö¬Ù²,¼%ë_ˆ¢( ‡F GÕÏ.ËÅ0 sLzßíì,ÏÈC²Ü·Çâý©ÔH$”JõÄâUí“å°¦ù3 È2¨ DÂkÂ!xcßÐÄ2»£ÌlžátVY-¹Fãt—‹ç9“ ˜Aây»Á ±^[æ`A–aN•á2±Ÿ]wÌb±ƒÁáoM&Óðö¬:Ã0£É)ŠN—«vÄG:À—JŒDƒ™ÌpØŸN÷Æãát&¬*=éLPÓ‚é4¨*¨ Äc-±h‹¯÷PÕg“Ék±Î°Û Íæ©GÑè1̓‘ã\FÉ*Š,Ú2_ ² s"0Æ“'OÞ³g¥TÓ4}ƒp8¼mÛ6ŽãŠKŠKŠK¬Vk^^^OOÏÈWBÈpǪîÆo ‡ÃÃßZ­V2¼<Ã0̘B¹Fc®þ9Rñ`j•R=Ý2é¦pÄ—L“©îD2¦i-™Œ_–AU!•„tº?•z{ `hЭÁ ØíS¦Yîr‹µÄlö˜LfQ”xÞ-œ¢ÈŠ$0Ÿ ²Ì)…0ÇÉr&‰ªŠúÊá„’@ ¨ª* ]³€Óé9Ñcl³Z&%D4ˆF£ilŽáSð<ÿ£ý覛nŠÅb555ðá‡^vÙe¢(¾ð %Å%•••W\qÅ#<²~ýú¹sçêk|üñÇ#wõ»ßýîˆûýþhÒp>>­W‹ÐQJ£Ñ(¥4N‡Ãáá5çE ‡Ãªª÷v;£Ñ¨GJ©Åb±X,!ƒÁð%xf|â*0™ L‡]–»“É`:Óô&“Tº= «j&ÓÎt©ªœN,ƒ¢(~ÿV€­„€ÕVi³³Ž v[¶Ñd—$§Á`x§d° ¬ú s ,È2_Ñ´`0 £ÑX$ÕT%‹Jcñx¯ÏÇq\*†BEŒ#€4Bú‚!…h#Þz£,‡] ýÄ»ì«ÅL1¥üœ\Œ±h0˜,£$Ùm6·ÇsDöMã…‹Ξ={Ó¦M¿ùÍo.Yv Føù矀뮻nÉ’%àr¹Î9眿þõ¯?ü°,Ë .Ìd2ï¿ÿþ¾}û>{çÇ\ºö¨¦L™òÞ{ïÀÊ•+çÍ›§×š=ýŒ2Y‘£‘h0ôù|ªªÆb1UUÃá°ßï§”& ¿ß?d3™L Ð4mø×=ÑhÔÇ`PJív»Ãá@ÆÜÜ\Œ±þ­×ëu:‡Ãl6Ù¡2Ì—Z¾É”o2MqšPÕÎX¼#‘ð§S#Ñ@*J¥º’©¦mÇA΀,C"Þ”ˆ7| ÿB`³Ï±Ù M¦Iv[µÝî’$‹(zM&»Atˆ"+þÅYæD455íܹsWCCoWWFQ€°Á J&ÁdâÁîv ‚(D[ùB‰M*lvnÄzW!—Ûƒy†‡€R‡#?s'„Äc±L:…)ªÚ @"†Bšœ–Ói-•Eáxóó&VUOœ8qâĉÃ+œj¡ÊŠÊ—_~ù…^ØÙÐà‹Åï¼ù櫯¾ú™gŸ=ïâ‹Ýð<¿tÙ²gþþÌ3O?SXUõ—§žÒÒé{ï½÷›7Þx÷¾ÕÙÚJèч F£#op©T ’ÉäÈÛò“ŸH’ôë_ÿúÆo¼ãŽ;~ý›_›ÆY7ö°H$²{÷îÍ›7ïÛ·/™LRJA0zî”$É`0Øl6ðz½µµµÃˆ v»ã¸áä‰F2éÌpÒM&“úeYnjjBù|>BH*•R…b4‹‹‹kkk§M›VPP0†Ã|é™y¾Úé¨v:FÞÈd’ªÚ—H†3™”¢ŒFD£­‰ä¶h´?…LF/’P¯oð<b™Ùœ/²%)Ïh,´ÛóÌæ‹¥Úa÷²^¾ò›M¿Mõõk?úhçöíæ v›=+Ç›—k0š¬6«Õf·Zmf‹…çy«Ã¡G᳋ pØ™F?1 !‡÷D¢¡%BR©d<M§Ó‰x, ÇcÑŒœèí õõf¢15™(*)>kñ’…‹òŽ·L~ò}x䯱x<ØÚZü¿O¾óµ+'––楒ü¿þ ?¾`ÇvØ\/ßtk[WWÅ+/¶WM"5SÊJJЃÿ³©zrÐhZ´`þQ³¦,Ëz¹«ÕZWW7|»ßïߺu+äææN:u箾^Ìœ9ÓívSJûûû÷îÝ+ËrAAAuu57ÎÊß(вaÆ•+WvuuqgµZsssív»Éd²Ùl‡ã8»Ã.Pqòvª‘þ ‘Ø¡áP  @ @ ƒÑh4G"ŸÏ‹Å2™ŒÇã9óÌ3Ï:ë,=43§¯öö6¢j€PŠ8®¤¤d¬[į !¡t:ª(‘L&’ÎÄe¹9Û w$›qeä8+ý™ŽHFÑ`¨4JÆ“”c±Z,v{‰ÕR6Z}ÌøÁ‚,s\>úè£ÿýûÿ&4Å™›_Z=Éæpx²²¸ë¿àÉ¿@alZÿçÀã9ö}YlÚ´é™gž ‡ÃEEEùùùYYY^¯7++KÏCÑ*%ôä^”0Æ€#<œq€ßï÷ûýÝÝÝ­­­˜Ã_¿âë_|ñI¼SædéìèH¥R{dUݶ{7¥T“åpo/Œ¸ÈÈ”e™ Œ)!À%ŠâÈwŹ Ç@ÝôéÏWUUM¦Â¢¢Ñ?"昒šH§²WäP*Õ›L5Çb[‚Á÷Âa%‡d†GèÝ¢¢¡R’ò †|I,´ÙËÎR«¥Ân/ZþùcA–9¶G{¼~û¶ÉsêŠÊʼ¹¹Þœ\=yPBÆÃüzŒ±žkõPëëîêëéÙºöC—Qzè·¿=µ÷ýÏWá—àÖ; nüïÓ°þC¸í˜4žyöí[¿yùpÿÏ¡¤n¸ZÂ_þğo‚-[ ¦¬_•ŽÀþ󟯿þú¤I“*++ ôÅu5¢m ÎŒ±~ΤÓéîžîÖ–Ö;w,^¼øÆnýÆ0Gèîìܶuë–††Ÿ/êóù5MEÈÇ BFAxNv8 ªñÄóFIùyN*™„©)!b €òDœCÈ#g ˜Ž‚’’9Ó§×LšŸŸ?ºÇÊ•å`:ÉÈ E ¥ÓÛ‚Ý¡ÈD|W8‘0`|¨³$©D %C®ÁPâtV8åVk¥Ã^Ȇȱ ËÃ|ð“{~vÇ}÷Oš:JÈÈ©6ã ÆXï©íéìøåî¼å[×Ü|óͧö.7¬ƒºé44ì‚Y³Âaèh}5¯Æ½àÍ·`û6¨œ_±N‚ÞÞÞï~÷»3gμä’Kxž×4m<¼ÿ½GŸRºnݺ7ÞxãÞ{ïÕgé1£oû–-¯¿ývóöíýŠâ¥“1c2©^¯d2aŽ­VŒÁb„0ƼÉHñˆa3G}Ù#K©뛥"aãq¢i‰xœ‡íÑh~"î’å,A(­©YvÑEsçÎ=ŇË|!EŽÊJRQr&”Jï‹Å#‘¡ðº@â1дCÑ  %¢˜g0äÄJ·»Òᨴ٪œŽl6¾öKMöbŽa×®]»wîÈÍ/0H’¢(ä‹¥XJ©ÉbÁ§‰S‘f!ˆRA ŠK|]½›6m:åAVO± Iƒ)p Ío˜8éÐÆgL?µ—B¡ÐŽ;Î?ÿ|³ÙœL&?ãï®lN$£Ó0½°Ñht»ÝÛ·ooimaAvô=ùôÓï¼ùf»¢´;]‘ê‰F§S´X¬&³Ó`À&“ž>P ”ê#í‰FàsöåóCËéÙ-f 0˜rH&£¦RÝñXk2™ ‡ Ýïüò—…wñå—çÛ߯ãl”9£³ âȲ\ušW”¸¢Ä2r,“9‹môû?w„ËB*étBmz´íõ ”ŠBŽAòŠâdoÖT·»Æåš`· ¬„íé‰Y枟µèÌŸÞtãÒ¯_yysó4UÕTõÄúeMfóo~vWkÓŸ?ô‡¬ì쓘e1ÇqÇ B2_ûÎÛÿxú)›ËîõzOÖþ™†ª¨¨øóŸÿìóù–.]êt:EQUõˆƒ0‡o¿ývMÓ~ÿûßB«xžçy^Vä•+W>÷ÜsÕÕÕ¶¯ÌHqbsÓïû»•þ`ÍSV–Ñî°ÚlcTϬTUõ-OÂç†ÃsµÃv†AƒÃNQJ”êxG4²¿¿Ë[Ë·mÛö«ûîsX㊟Œgä¸,I+À,B––Ç%©(±Œ| ]×ß_ î …!ƒdjE¨!@è_}>Q4”‰¢W mö·s’Ó5Ç›Å:kO#,È2Ç€**/¯;ÿÂï½{çu×x²sμpéäiÓ'ÕÖªªJ4PJ4r<ÃT0ÇíÚº¥aS½œIÁ†q‡0Æëùµ»³£iwÚwþݰysAeåe7ß¶uÝ£iœÖŸúªÉËË[¼xq{{û­·Þ:iҤŋÏš5Ëjµjš¦i¡„húðÃOݨŸ¯½½}Ïž=»víÚ¿nnnmmí~ðƒœœœx<ÞÖÖöåž0 +òÀÀ@~Þx™Ïôê+¯¼¹b…éG?6{³5Yþä´?d4M¥Žgo˜ÃT! T•r”³!Ì À§nF©Þekòf' }üñÚ©S¦èƒÝ™Ó“ˆ±[’ÜCßNÍʺ¤¬4­ªMó§Rõý ø_ñù PA‘£5 Ô½Ûßï„lž¯r:ff{gy²æx³¬‚ðY÷ÇŒ:d™ãB5bw¹.wv~ÁäY³åt&“L4îØ~ðÀþ­oôuvúNg^Q±Í媨®–$cAI©ÙbÑT­¬ªÚávé=m&³¤¯Œ`0H’ÑH) ŽU£ôÈ"²ÒÉÔ=» !”Ð~_oOWG<m=ÐÔïëéëî±»Ùùv—»dbõ¢¯]fw¹DÑ`´X$³I¯# ‡?Zýþ¦úzBÈÏ~ö³+¯¼rô7f˜¾ì–ÅbÉËË›?¾¢(---ûöí{ùå—ý~ÿÀÀÀ„ dY€çŸ~òäÉ‚ ‚PVV6¼p×ð~舚1ÂGÜKSSS:æy~÷îݲ,ïÙ³'™L666J’äõzKKKçÌ™sÝu×I’d6›M&Çq‰DâËbàoOþí±Ç+,(øÞ÷¾wÞç‹c¾ò'B¡Àªw-Ù9ØfErØŸ åŽïÇ—?ðÀ1J[ „Ä›šBË—gÚÛÄÊ –yó5Sˆ(à¿H8LÂáøÁ—^J…É5ÖéÓmUÕØd<â~#$”p8¶e‹ÍlDÃÉû¬ç«Tºu¼Ñ{ë%I’$ !äv»kkkeYÖë´¶¶®_¿^Ó´öööÕ¬îïëÇãf³!¤iš>KÌl6 ƒÙ‚ÒÞÞ‰DôoEQEÑl6‡B!MӉĔ©SêæÕ9Î믿Þh4r'ÑÛ3rÙŽ/·`0XU7Þ™gýùùçï¹ûî¥Ë–]óÍoÖN›6Ví8×N#ñxÛ}¿0ÕÖºÎ=×èÍ&ˆ=¹’æf8æ\+Œ@Õ‚kׄþúÿ €L[[æý÷b z¯ºÊ›7¼™æ÷wÞÿ+ÚÙ©—å’[[ïü;TV^t÷Ý‚ÃI(Ŧc„Ò}¾ÀêÕɆj4š¦Ôðì3å/5}|­žkKl¶s 2„ÈšN§W÷ú6 ¬êè‡@΀ªÈr¦ %û ¯øFÇ•[­ rsfgÏñfå M(dF ²ÌçD­¡* ѲòrÊ&M¦”hªªÏ×79´Àh¶Üuí7·l©™W÷ü£$‡"p÷øò•.oöp¬@0ÇýcÌ!Œ9Žç8Œ9N_Åg°QT_<ì0xhí¨œœœßþö·;wî¼æškî¿ÿþÙ³g3v†W—å8Îd2™L&@é+{iš¶páÂ^xAßx``ÊÊË}ôQ³ÙœH&:;:3™CkÒ[­VB‰A4¼ÿþû?þxGGÇð}Õ\ß°«áñÇ/((ÍBOåšã– V›mÊÜy•S§&ã‰uo¯üÞ¨$ßýîw/¿ü »Ý>Ú ÒŸ¼K–PJÛ·'~þÕl®™b™1ÃXSÃéí#„^tŽÜB ‘ÈÆ ¡Ç3œwûÜsD» Bº¿ß÷»‡^}5ç†y» E¼Ð÷Ú?i[›ùßt-\ˆ-- ¯Yõßò…·ÝFc±XCCl÷îÔ®$‡Úipùå ËÐç퇅;<Æ<Æz¥Ù“©Ìáøö„J…´ªnñû×ôõ¯èîÙ7Њ Eö#äO&êýþ‡öîåžl³™›³0;{q^®ÛÀ:òG ²Ì@ŸMŒ0/`?ý9l¶XQ€§~óëo~ïûK.þš;''“H|¸â­¿ÜÿË=÷Ü]¿{H‘åO¿ÃÁ Ìô¨/lŸÜ^¯ÝƒÍf›?þþð‡ûî»ï‡?ü!«9NÐCoEèð‚ºwÝu—þ7²Z­@à­·ÞúÇ?þñÁÜtóÍ©dÒëõÂðˆszŸ}WW׊+¦M›vÝu×rÇ—¯Xþ÷gþ¾fÍšâââS=—+“ɼøâ‹wýô§šªj߸‡oú¯ÿcÎlµ™,¶‹®½îÜ+¯ìni}ëõ×~ýÀƒsfͺýöÛçÍ‹F³’RàyðdÇgE»ºâÍÍñ—^„æfÐǵkZèãØé4feñNy½¡”bN„c;v⊊쫮48úOÌvGöíßõ=üPbÖ,ûì9H3¾ÞÌÚÍߺ6û’eœdÃ53äç'ŠŠÒoü³yË&@i)”•ÃÒ‹  $ ÚÚFï¡`ÆcQ: KÆs ~qÆ´¤ªî×ôúVúú¶øzAUÈ "`g&½3øÃÞ½ÀñSí¶sssÏÌÉY’ŸgæYÐ:µØãËœ|Ÿ‘0‡rÉu×_qÓ­»Xl¶e×߀üí¡ß]|õ5UµµÚ)Xð cýôÓ×]wÝ©nv&“iسç²ï}ÿŠëo”3Ÿúfl ñCOOAAœ0eJÙÄI©DlÇúõ?º÷¿âÿ·¿ýík®¾º  `ôš…”—Ci)œ}6ýýpÿ¯€wßÿôôèFÙÙ`4R£IÌÏ7X,òÀ@fÍ—Xµ † cPPÕ௧[[UBÓ»v@"‘øhmË{ïB0f3äæ‚$Ç ÝÝtÑb˜?°Šþ¡Búãî­3†8Œ9à8‹ ,ÉË[˜›{¥*¥;ý}¾U=½k{ºÁõäTuWf—ßÿÐî=Àá9nÏ…ùyçäÏðxD6Råû {Ä4ŽOÛlä$÷ã™ðÎŒsóÎ;Ïlµ f[A¦Õ-õËo˜xÆôSd!TUUuà 7üô§?}üñÇÙ‰4>-X°c<ý7Þhll,--=ê¯d2™¥K—^pÁÇéV}ð€ÅbÍ¢Z„RQ &§I!}„y[®K/šÁ…==«^ýdzΩ()þŸû5µ¶VÅÑ{š 78.VOÒK–À–eÚÒÙÙpÑÅr,&G" ‚¦¢%âqPGT¶x @<· ¡¹-†ª*p¹£*¥ÐÞÛ¶€(‚(‚z”wHfË£mí®dê3Æ¢P€Z—Óùy&Ï©”Nu9=Ÿ^©ôó>æGlÏ®k§F#¤W.¨ËÉž—í½{ê °±¯Cß{½¾÷{ôžZ  ‚õ½=õ½½¿Ø²DaQ–wi~Þy5.'§¿áã£ù2½ «_!„ ƒßêSŒûúûB”¿ïÞ½Üáü !6›­²²Òj±JŒ’T]]­w§¡!úÊé¬ äi$¯¸”ãù[Q^Y)¼öÔS×üç@QNÑýJ’´xñâõë׿þúë—_~ù)ºæ„aŒ G¾§±°°²zõêK.¹DþÄÈžçñh©D* úýþæææíÛ·Çb±Ñ=‚ÓBq8»°èÛ?úÉ5ß¿cÏÖ­ßüÎwh:õ§?üñ‚ .àGÿ³Qýõ]ÓàO„›oÉ“Áh„PÖ¬¿ ½>øú×(44À–ÍPQ—^êðEPhÜ MM°d1—À0s&6>õsõû°hñQƒì‹å@GǨŽ1 ,Öi ÷‰„Cl<¿0Û«R2|‹s¥K¾Ù¤_J5J M¦"›EQÍ#tDM˜#^)ñˆŸb–¬>¤—‰Dåæ,Ê͹»¶–PúaOïêÞž7»ºwƒÓ8@–×vw­íîúY}=M×^_Y1+ËcN__}Œætuj/OªªªªªišF´†] ¾¾¾}ûvíÝÛÝÛ{°¹) Òò2—'BN¯§t¢¶d¸»»çßk?JÄâæRédûÁæx,Ž9¾²z‚Çí®4iò¤IÙ^ïÌ™3- Çs<ÏóÏr-sTyyyW\qÅÿøÇeË–Á+4s¢ Þ={n¼ñÆ#n衇êêêEéíí]¾|ù+¯¼"˲>p–ý}B@ ‘-¦“q»ÕÆ™L˜—̼ê0wîà'¶.7\p¨*l®‡9³¡°òò`Îè‡x $=¤RÀÚÚ᤼¡cq1J¬áõÙ0½„í'S#Bíˆjã?ììø´jÌH„y³?Ü¥ìÄn×`ÙC3ÇÕegk„ Ñ0ÍãÒ€ „õ½q#27¢‘c/²Ÿ€8„ÎÎÏ;;?ï¿gÎŒ«êêîžÕ½½+»º›¢Q (B •|áÀþöïѰ$'gYaÁÅE…y&±€1{;ñ¹œ’«|*•Êd2@`ËÖ­ëë?Ú°qïžÝÕ5S\^oEUÕô³Ï9Ï›S\Vêöf#„ŽZpôÑáÆ „ÒétÛ¡ ¿¥éÀÛë7 øú¶Ýb2çÍ«›?{Ö‚ùóËËË ƒ$I[/{ü¡ôÈꨦšýÿÙ;ïø(êüÿ¿?3;e{v7½÷B(I-t¤¨§(b—S¿ê©g½ó¬w'êOôÔó½žX¥‹ @( )¤÷l¶×)ŸÏïIbèHKÄ}þ‘Çfv泟Ïìgg^óþ¼ËÙp]ÍÌÊLJJZ¶lY(¹ìc|ÈS¨²€Ã²,Ã0‡'Pc†¢(›Í¶páÂÚÚÚY³fM:5""Âl6[,– /¼ÐëõžžB°,Ë’$KgjIáT æp=¦$ÿÄ à ´74n^½¢ìÇ9™¼ùÆðáã› i1~v4"Àó‘ëÖB]=$$‚^Y9ð¿`ËÈËžA€înXútœr„†{[úå§Ÿ}ÑaíUX8r̘ûÿñLæ°á ÃôÖ|êó1~Ñò±|è ¡ôaÃÀ¸ÉSQŸkAW{ÇÎmÅ»v–¼ñÁn‡ó¢ Ο7wn^^žZ£1èõ§o¬!N•ΦÆè¸8è[ÿBMÕÕ°àî»eñÜNŽpKøØ±c׬Ysùå—‡œ”†ã¶¶¶Þ‚ ÔÕÕñß@ Q—$ ¡„ñÁCîÇÊ3Ü÷É¢XÙ÷0P×ÕÙ¿÷k‡«^ $&:F…ƒPžÑ­æ(@ ZMšN/Ʋ£,f@Ñ}2—é­ÀGŠV:¯ê[£?W‰ä¸«ÓR¯NK€ýçšÖÖ%µ*].—,$EYí¶Wm=¯î.^==6öâø¸Ë““ô,Ë«T|ÈwtN•$ÉfëÙµ»ôµ·Þ*)+›sñ¥½òjJVMQ²,cY–e9(þÃ11Ñ`0œönœÛ0 ƒ%é´«½âõ듲²M–pDSXÆ^{ý·ßèÍæœQùŸ†©¢x]MÄp—››ûÉ'ŸX­ÖPÛ3Í/<ÅÅÅQQQJ˜‘,ËÝÝÝJþ¬ÔÔTQvÃq\uu5X,–þ@1I’6oÞìóùà˜¤§':†ã¸I'6.Y²gÕŠ!øt´³dGKÝkî¼!„1ñºÝn§«¹¦ºxÕÊöêýSgÌxù¹çòò󻛇sا|•ý U§ƒßý’’`ðvÃø 0v,DÇÀ7_CN¨Õ€1 `³a¹O™KzýÑ2­D‰¿Ègàt`d˜‘óÑÞùK¬q¹ü’ÔŸ‹¡ÙëkòxúGåÅÝ==4BWöõô…@ÄÄ!Ë€pa,a JÞ;Œ¶ø*—hïîR¶Õu´ÿünÿ‹¾d`0F1Œ–¦Ç„…Y&(ãÑs8ÏI˜$iµ :­ !•J…§R!B MÀ¹džÌ3f‡ïÉÖêó­mi]ÛÚº«ÛZ’’¢ðCCýõu÷mÞ<)!ñʤÄóããL<¯euHÑÆi²^¯wã?½þÎ;ÝN×Õ7ÿß#/¾¢ÑhEAƒÁ³o” ÊïM’ÀfºlÁõ—_cW{Ûêo¾¾î·^ù껵+69¥¯Òih¶µ©ñ›ß;uz˜Ùâ´õlY·öË·Þ¼úλ²2…@ðTZF¢(Êçö´75ýnÜQkDDDdgg¯^½zÁ‚§òq!Ž‹Á`@Ùívh+=555K—.3v Ïñ«W¯Þ¼yó½÷Þç÷ùŽxˆ$I'Nüᇾýö[–eµ:­ßç/++û裆‘eÙãñ„……~ r)ðz¼²,›®N–e/›7ï²yóN¥‘3ÇóÏ?¿¯³+ zìv{w÷öõßW—ì0 7Ý|ÓE]4t‰YÓï7jµÐ_ᚦ!/FB K@l=àvCÎ0 iÀ2Ìš o¾N'h4šÂ d™2NÇÃó%ã`óÍpó ÍsLH•É(„:|¾&ŸW”1B¨'¨÷¸SÙÁ&§S‚»d$€e¹•À½2d¹÷±ÁéèBêÚÛ”z ÞŒÁndMO³XTJÕju:†¢ Ã-J\'CÓ€¥iÅi§i„óë4èÆi47ffܘ™!²µ»{}kÛú–Öj§-A,ojlØÔP5.!ñªÄ„Y±±áµžeCéiû9¥Aq:Ÿ|þù_|¹à¶['MŸ‰ ‘D1pן³ Æ ˜Â#ÜvûÜ+¯úøwî{è¯ ~pTÞ¨Á/5þ+aìØ±yòW}øÁ”y—™Â# &ËóŠ7óɉZÅ¥äÆ?ß÷ö3Oÿï…ÿ(áWßy÷ ºO<)‹¨Þü²$¹ìNÝ^òÃ:.˜ô¼&“)--­´´4$dÏ4±±±………[·nå8...Îh4ªT*ŒñáH’$¸á†î»ï¾Å‹+îºë®yóæMÅ*Ž=zöìÙ6løî»ï”QQQÿûß÷ïß¿xñâæææ~!ÛŸícìr¹:»:·nÝ:lذiS§‰á‚Á`g{Û¦•ßíûéGwG×E—Î}â$$$v¿ŽGgÄÄô-…#Ehi–…ñË €Ý&óÏ*tv‚݉IÀ²@¿2— bbjÜåšƒáØ¡\¿M(„rL½?™œ°ã~0®w¹ €„ñv«•B aRïrÙÒîõôx|€Pc›$Ò€\w+E Yê},‘DÀ\N'€à#¥²Z¿AW S«MzOÓ£ #Ø8fDXCÑñM‚NK!ÄÐ´Š¢XšV!Ä«TŠÒ=ƒgê4A#412rbdä£ùyU.׆ֶ5Í-5Nç^ŸD$i[S㶆z@h\bÒå‰ñ³ãâÃ5ê0–Õüæí)ßãñ¼öÖ[»êê^þð#çdH;s`YdY£Õýñþû÷ï+òŸÿºãæÿ;ΜÁîׯ†çŸ~É’Þû׳–”ôÌÑ…qÉ)½A£Óéô:–ã1éͤF09î®,K9yù¼Fóøëo­ÿæëM+W¥ææŒŸ~Þ°Ñ…ŠÎ „)Q´QˆEÑçv{=ž€ÇÓÑÖ^¿·´fÇö‰EEK–,¡Ž~ýÒh4 ßÿý/=!N‚»ï¾;22rÉ’%ƒ¡   ""B¯×ëõzŽã”ˆOBB¨¨¨H–å„„„Å‹¯X±¢´´´  `„ ò1}“0Æ‹å¾ûî›1cÆÊ•+Ýn÷ôéÓÇ™ššºgÏžööö¼¼ ŠÞUk@«ÍÑj2µ: Ëda 3ÂdÒ¨hNÅP4¥V©Tq4ÍÑ´"vÏð‰9² †,ƒá¶œìAøº¡ñÇÖÖòÛÞ@@øAEû€JU”xeBüÌøø05Áóç’ëÅ/ô:1Æxó¦M7ßû§¥ë7 ¢x¸»êЄaÙ­?müêµÿ~òÉ'G\j q4ü~ÿ×_}õíòåÝ=Ö°ØXSL|TRrxt´Z£åÔËñZ½a^­&JéZB–°í7⪵ZŠ¢ý>/0 «bTJäŸ$I?ß3N@Q­Ȳì÷zý^o üþ€Ïç°õt45õ´4;Z[TˆšŸO3pm}P)Þ²åOÿc_a!$$ÎÕÏm·LšFdeË‚Õ [·Bu\·&OQ„€6þ߯…Ùs 9\.¨ª‚-›áêk`ôh UT |ñ¬ü&N‚1c@­¯Š‹aÇv¸ü øÝE f…Q1PSý{—ó©HHJ>Óg#Ä!Թ݄@µÓé„ Áûzl„6ŸÏáõbí‚@ü²Ü(ŠXYåS^õõП‹Íl†Ô4¸î:Ðh)£(@È2ôXa÷îϯ¼âÒK.Q z2ÝSçvcBA¡Öí–1nõz‚à…f—[e‡ zd¹S˜8‚Á^Û”v„¿ C›L&DM³X8Šf4D©ùc˜Š¦y•Š£i Ë膧é¡hå…më[[övwïòø^(6 ŒA§ÿ}rÒÜ„ø–ðx½î·ãD{òB¶³³óš«¯2ìK¿ò{½§'èÌðl鎭w]>ÿÙgž¹ó®»»;çå{÷¶´´´·µí)/w»\Ö®. (DÓ4Ã2:Å0Š1–Õê4z=EÓ' dIÀçóÛí!‚d,û¼b@ X"’Äñ|LllFff\llRrrNNôJǦ²²òßÿþ÷‚ ¦Nzr-„8uš››wíÞU[SkµZ«ªª”$²4M+^ HÛcgæW„¬Çë‘ÄÞ @c,IB(666&&&''gøðáÉÉÉ'=aÎ>‚(lÛº ´ZmAAÁ÷©ªªêêê€ÜÜ\óÑãx¶lÙ"Ë2MÓEEEg¨·¿”ºÆ†·¿ö~åþ¶ˆˆŒ³ÂÂQ½‰Qßy‚›n»¶mƒ†HO‡œˆL~–ž4 ¢{÷BE¸Üš#F@tLoÑ~h\.¨¯‡âbÀ8¦L…øxP«{=/ŒÁå› ºº¢;:n1ü-ÜýêèðûmA¡ÑãñKb­Óé“ä—Ó+NAòÈR(uI’K–! 0 ¤g ºÅ8ô† ža4fëu1juª^odYžQi–¥©0Žã(J;HÏ9NQX×Ò¶ª©©Âfßârß×+ÖÊˆŽ¹5-ubTT¼AŸ ÕJ÷Î&'/d{zzzè¡måå÷-|bÔ˜± ÿ’ŒÐg„­R¹ŽÏ?xwíçŸýãé§ç Õøâs€––·ÛÝP_ïñx”Ú¡’$¢ãå:B™L¦””%ˆåظØ8“Ùl±XŒÆãÇœ85µ5/üç…‹/¾øüóÏ?͆8Eš››ý~ee¥âQ ŠbCCƒËå:F²B˲iiijµ$Y1bÃ0g7èi§»»;22rrr***ޏÏ-·ÜòöÛoÀ÷ß?cÆŒ£5Õï«3ðšßÙÕu:{üËùô³Ï6¬^]ápüHô°˜A¯­ÂÂ@§‡€J’² $d¨h h@¨w‡C\Ý”™ƒP4(²!EÀ2x<€Ç8àp<Ì`˜yá…WÌŸOýflZ¿¼’Ô ¶{}~ŸWë]î–íLH«? ܺ1¶ ÈRïÂ=fÁeYÐh‡ô1_` ³°l®É¤e Ëè–£)3Ï«U*î,z&Ô{<+››·utìë±ït¹z¥¹,ƒÞpUBÂI‰Y&S†)ìlvé,sò¿RBˆF¯OÊÊùvÙöë°QyÑqñc¬Ä!%(Š¢U*!¬Ù[Vºc{Eee^ÑÄã¤ÈqjÄÇÇ@NNÎ`wäX0*†ã8—Ë5Ø q ™™9Ø|úµ»ÉtÔè™~·×c§Ðº÷Þ{@¿5ÚçómÚ´iË–-?þøééëÉrÕ•W^uå•e¥¥ë7l¨-/ooo«¬ Ò*3‚Z , <ßûWé?EV }pE«¾K:¢@ÕwÏF¨W­*{à÷ƒ(öþu{À㡱<HÏGkµIãÇÍ<ï¼‚Ñ£ÏæqvЪTZ•*ñHÊ&¯7 Éõn·[Û¼^[ÀßîöxE±+ôÈr› 4 K  Iàr–»œåk•ƒ1ž­n´NÍs&S$Ïgô<ꕉçy•ÊÌqš3æ–¢ÓÝ‘“sGNN©µçûÖÖ˺­‚Û^ϧû+?­®ÊŽŠþcZÊØ¨èd£!Z­>CÝDNõq3kÔÈQ…ã>þïËûJw((LËÊŽ‰g9N’¤AÿBEÓ4EQn—³ñ@mUùÞò]¥–„¸knûãÆe_½`ˆßJ°ü`÷"Dˆ3Î /¼0ðßÿþ÷¿‹-JKKt!«0*/oT^´¶¶î-+;P_ßÕÕÕÓÖæt:<[%©]; ñ(¿V„€çaá°Jׇ‚(!«!$ÀÌ21,«¦(³Z–<,***'##;wXlìñ#DCœ“(ê6ÓxhÔo³Çㄯ¯Ùã¶‚Ý^¯=èÅŽ@Ð&е~?È  ØvÚmð]ÿÁZQ­žh ‹bÙ£1Q« ãù0žÓ3¬žcÃyþ´{Üæ…[òÂ-AŒ/®«+nkßjíÙi·A0¸¿£ýÞ–f:<âö„øÙqqÙsæi]ÛtN5,!$5'û®'ŸªÝ»·fïÞ «WJ¢4fBÑØiÓbã(„dŒ±,+kħ«ÓÇ@YŦh!ä´ÛÊvlß½m[[ssXDDZnî¼[nIÌÈhª«ÃÒ¯#ÇBˆ!Î|~_MuÍŠ+:::222&Mš4jÔ¨Cž£ššš¶nÝZ\\œ=yò䤤¤o_¥R ¢P²£dÕªUN§sΜ9EEEý.ž>ø`0äyþÉ'Ÿ¼óÎ;ßzë-åãî½÷Þôôô»ï¾û4ŽôTˆ‹‹˜rD}^¯Ûíöx½ÇãvEIòû|äÄl%ˆ¢4z=P¢ÓéŒz½Z£1†…ñ<ÏrÜGˆs.`ÄÁ®ç>Yvƒ>I²IvŽ`°Ñë9àñv«lvYÀã¯Çéõ¬°vÿ|¤J¼:œã8.I£gÙDƒ>Á`ŒÓjâ4ÚÌ0ãiÉÆQÔuéé×¥§wøý5vÇOmmï76U÷Xe‡ýU‡ýÕ}û’ÂLÆÆÌJL˜›œ<øÁk§ƒSv" cÌóü¨ Ò‡oª©ionªÙW^¼a˳q‰I)™)™™iYÙ,ÇŒ1Á½!§¸¸MQ€EQBˆ¢(šjkj®¯Þ_WSÝP[këêÖšM1‰IÓ.›˜—š¦D„„œ B„q–ñz½Ï?ÿüêÕ«‹‹‹•-EEE ,¸á†ú}¶lÙò¯ýkË–-0qâÄ;î¸ãÄ?¢¶¶vùòåŸ}þYÝ:X¹re~~þÓO?ššŠúç?ÿ©ì¶páBEÅ€Õj}饗òóó‡Ž=–ãXŽ ;±bT!Bœ44Ýû›·Ñ#ŠQ H’ÕçÊ’;(4x<]@©ÝÑìp¹ÀëQI²zÜV€Ý€pp|:ÇÅpl‚Z©ÕFj4iFc¢N— ÓÆl²<» ؃A–¦ãõºñ11Éaa .×ë:ÚA’í¶Åûç­mËëêÇDE͈Ï2êÜn¡pžÿ5æ:8==Ƙ`AäÕêa9yùÙ£òÚššl]ÝíÛ·¯_±Bú aa¦ðˆÔŒŒˆ˜Øð¨¨è¸ø0³! ¸7ë›’yôh+þE!@BHI2* ÁÖæfG·µ³£­¹®®»³££µ€hôcxxlzú¨)S#¢b¢ f“,J’,Zun<„âWƒ$Ik×®}úé§ÓÒÒ^y啬¬¬òòò§žzêïÿ{jjêŒ3†±Ùl=öغuëRRR>øàƒÈÈȆ††7ß|óÄ?åÝwß3gÎþýµZ]VVöøã×ÔÔÞsÏ=ÇiµZ¯×«Õjyž_ºtéüùó ;;ûå—_æ‡qŠèFÇ0Þ§nŒ¶Ú ‚O¬Á@i­Êå>àó–9œàõ€ß@-@­b‹U©€a´¼:e£X6ŽçâM¦ƒ!U¯O3ÆI×0.éîÞÓÓc eŒ»}>0Ø%ˆnID€Œe3ËH˜Txû<Åi¬NÇ»û»MÍ“kjÒtºz¯—dd3Ç™ÕêT£aJLì0Ó¯ãÊp:¥7ÆDDˆNLŒKI‘DÑåpºí6·Ãáv»Ö.—;wïߖͯ7èó+Ú5<*Zo4BÈh2Å&&RŠQ(àóu4·ø}>DQ‚ìjo‚A XÅr¬š×èõFs„)6.{ÌXV§ 3šL³Y­Õac,ýÓ8Ì!B„øE¸\®Í›7 ‚pÓM7Ý|óÍ<ÏM,Z²dÉŽ;^{íµÑ£G‡‡‡—””üøãðüóÏ_zé¥E ‚Àq܆ ŽÝx¿×Ö¤I“n¹å–ððp(**úôÓOKJJ^~ùå[n¹…°†NÓôìÙ³•×ááá3gÎ<Câ7KQ,ˆ±ìÀ3ƒnQô ¢K\Á`­ËµÇé,wºJÜî€ÝÁ ‚×çÛÓïcÀóÀrЍU«SÍæ´0c’V„´ø¼%]Ýu6[µÏ¿_ñÖ%¢²Ü›NNÉ+×B00qò:ø©Ý÷ÆŠïMï[*8n¬¾º "|vBüŒ¸8ãÐN¥|FlȲ$Ë’ŒLaaf3BÑTÐïø|.‡3è÷ ~¿ßç—d‘`bëêì«§@<^ïöâ-ˆ:ØM„†åôf³Ñ '„Ð “;~«V#Bx†å8^­Ñ ¼Z£3€RÂcYª%sC„ñ›bÿþýŸ~ú) 6LÉ QkÞyç—Ë¥Õj•Âr¯¼òŠ 0sæL%Y˲s®¤]__ÿ·¿ýmà– .¸ ß3aÚ´iŠŠ­V«ˆ×ææf|˜3U9ñÃß "Ä™ÃÌqæO•S0vƒQô‰’7lõy¸={Žb›ý€Ó >/ø|à÷× T£HRžGŸ¦RaBZ$IøAR¨õ³$UR2C_ñÞ¢¶ÿ_„€¦á°3‚!àßîón·vÖÔ\d6ß”“5/9ùÌ–Sä :CDÆ0€Eiõzш@ñ @ü^Ÿ$ @€‚ôzÉÁyFEÓ¼F«RÑ…hµN«R©”¨¤¿ò)!¢ ž¹á„"ÄÉár¹š››áà YǸOee¥ò‚`ÂáŽFr:üñÀ-qqqý¥"؃m?C- bˆ!£¨(µ:ª/%ðŠ¢GAÁ/I~Q,µÛËl¶j—û› ü>E"еj¹Ã\ZQtXXG Á€(ϧ…™8 Š’-ˆb¯ÌU̱ï•`4 6·ë[{“Ͷ±­í‰1c†¦iöìyõ*zð¡q¦ Ë0\ïõW €Â#­ü„úò#ômÀ2dB U‚ÁàºX’«ª«Ün·ŠV9Κº:ŸÏw‚¹®T*:))9.*J’ežçÍf³N¯Îâ\¥ªªJ–å²²2Qe,·¶´666·–,Æ8"""55•eYQGŽæX.1)Q£>É€‰ÓHÿÕëó_è«°:°îÃ!5 7  ‚Я_Ïaå*IRMM ååå²,K’ÔÔÔÔÚÚz"³":::9%YE«!cÆŽQѪ”””cŠ bP@}¾¶Ñ}Ë,bcÖ¶µÿcÏžÞ Ìõ•! RMC¯Ip ¤ÃëíËL‡n><5,ìͪjdÀXnͼQSûE}`„„›ÌV%µMEÚE€Ãíz±¢²Úå~¢ `LdÄ> ¿˜ÁO#ú=3ÀáJ7ÄP¦£½½¥µuÇöí]]• µµÀð¼Æ`¤T´9*šåyB0Ç«-ÑqŽ…»×Ê2©ïê,?pQ”,IN«-àõˆBÐët ñ)Éié‰qq#GJKKSŠ/„ø5b³Ùª««8°iÓ¦ÚÚZ‡Ã CEEEQ4E!J¯×ÇÇÇW¥!„<Oqq±(Š4MñÅ’$y½^Q9ŽËÌÌ;vlfffFFÆÙŸ0IÉI³fÍZ»v­ÕjíßøÈ#ìܹsذa .4›Íüã.\(ŠbWWW›¶““]^^>p‹Édzî¹çÎÂÎ&555Õ5Õ›~ÚT__ïñxhmÐhšŽŒŒD¢)Úh4žà¬p¹\›7m–±L!jÉ’%c—Ë…1Öét999…c ÓÓÒ³²³½ÂYˆ‡PÒÕýJEŶ®îý7H¢¢_礧ߚ––c6½R¹ÿ¿ûöõÖs–$ ( hº7wrï33©p{¶õØjÜ.À²Ùd^6yÐô–®.Àdù¹¢ óSR¬>ÿ’ººW›ä®N`ÙÃ< PÈòʦ¦J—ûÃ)“'E­Ëà Ù¿:ª«ª6mÞ\¼uë¾²2LÓaKljšÁdsÁEóRR(Цi¤bX„Ëq4E4M³GQÔ‰šŒ‚‚$‰JýsQd,a‹¢ZÛš÷44®Ùø“­³Ýïõ¦ffN;vâĉãÇ?£cqêȲ¼mÛ¶ï¿ÿþûï¿÷ûýf³9<<<---??ßd2QŲ,Bˆçy„BH¥R±,{"’E’$A”"~¿Ÿ"Š¢,Ë>Ÿ¯©©©¤¤dÅŠ===‚ Œ?~æÌ™3gÎÔœl‚›_DbBâäɓ׮]»nݺ)S¦ÄÅÅ544¬Y³f×®]S¦LQü.¾øâ… À¢E‹žûçs½¡»»{Ñ“‹¶£Qkrssiü$ü\ûO汋MQØôÓ¦õë×ÿðÄ‹Åb ·d¤gLš4Éh4"„úg „†aæDf…(Š¢(*{œn»±¡ñÇ\ö岞ž˜8qâ¬Y³¦NÊ…òˆlž)+{£r½ÇÓk‚e˜Ë3³þ’;,-̨gÙÿ·{÷Ûµµ² ÷p~þpSØÚ¶ö÷ëêAönG(êÇÎŽÞŠÍ¥j4íÁàËû*ÚÜ. äÂÔ´Û† 30LªÁi6ýixn¥Í¶¸ªfùZ úW-ú½iöyë¾ò¤ ’‡N%¡¡r 1ôimk}çw¿ýæ•F>lDòð“ç_i²DP*ŠçÔ*†fYŽë+€Ùgcÿù6óK×=ÕZíÏ¿„~vNJM‚AQ–„`PD¯ÏÛP[SSY±òÿ-êh¨›<}ú×_?nܸ“jˆ3CccãÛo¿½jÕ*³Ùœ™™ùûßÿ>**Ša–eyžç8®7;ÞÁ3åÍœC×î–qfff P4Óé,//ÿý÷üñ±cÇÞqÇ#GŽ<Õ±­V{õ5WüñÇï¼óÎòåËccc].W}}ýôéÓ¯¹æELgee½öÚk7ß|ó믿þÕW_ÅÄÄøýþI“&‰þh4š{î¹ç¥—^*..¾ä’K~øá &œ‰:jjjÞxãõë×ÇÆÆfddÜvÛm‹…a†e4j Ã0§8+”'¢ƒ6õÍŠœìœ@0 ¢$I===åå対úê#<¢dðÍÎÎ> à âRÚc{´dÇ·­í €1Ъ»G޼933^¯³pœ€ñ}[·¾ZQ ’Ù‘QoO?2"Ü!Šßµ´‚ŒAo˜j6—ºÝN§$©_‰–tw_ýÓ&•êš´TCŸZ cÙ0–MÐëÇFG·.x±¢âíòòÞP°^z}¬^Ï%6.›6åÂÄDjhÔÅ ÙÇGÅEÿøÇŠïVŒŸ9ëÎ'ŸŽŒ‰e9Žã8–ã(ŠV\˜€È§±.ñÑïT4ÃhúT !$19eÜä©¢t9»·m}àÑ… ‘/¿ô’9”G}ÈðâK/~¹ô˼¼¼‡zÈl1³ Ëó¼bì?„`ùTƒè6kxžï4111ÉÉɳfÍr¹\»víúÓŸþ4vìØÇ{L}ƪ#„ÒÒ3>ûì³%K–̽꪿?ò¯æÿþèßgϽ$ÖbQn*•êÚ L&Ó§Ÿ~úô /\sÉ%·ß~ûÕ×\sÇý÷ÎÉq¹\Gk<èM/xȯ¯ÿåœx½Þþ¿<Ïßzë­n·ûÝwß]¹rå 7Üp&F}"<õÔSk×®;vìÂ… FÇr<Ï+ž¯gaV¨ÕjµZ­ÌŠèèè´´´ .¸Àáplß¾ýöÛoŸ9sæ_ÿú×CÜ”C„8£ŸÏï÷S¥TI8#?&÷ÝwŸ ^x¡Åb:³Bñ=èééùæ›oÎ?ÿüK.¹d°úâ7E½Çó—-ÅËZZz} 8þý¢ §$›ú]0!ó×­ÿª¾° óÈȑ˥eLÈ7 óÖ®YŽûG~þy£h„ÝQ²¨¬ a\|Â[‹0!Ïî-_RW²Ô[ßT¹iÒ4Ðt4Ë]™’|tD8ØÕcÛÑÓXŠ~¥hBœVûÆûÎMMÿ©®±9”¯Ont:ž.-{zOyžÙt[Væ©©I:ÝsÆO‹·vÝA¾ê4ýéþÊiQ‘7deªõÂ>´n*!† `ÎW~ôöë«–}1óâ‹§Ì:Ñ4Râ%††£·‚r‰¤(ª²´tÅÒÏ*ö”™6Ýh4v¿B!dܸqË—//++»ì²Ërss™.΃Õ%e¹¡¡aéÒ¥;Jvôg8S¨TðÒë½uwx–|Ý›µQ­†µ%½YÍ5ØRŠr²X~~=RážvB3fÌxï½÷¶lÙrùå—gffÒ4­ä©8£Ÿ;aÂŽã~üñÇÃúûgEuuõÒ¥K+**¦L™rÜTµçJ I–ÚÛÚwlßþåêÕ»+*šªª$:2™Llt ¢i:>žNÏ !BTW_c1†íŽ@0Z»[­VBQˆ»}mÉN9þ÷?âpÈj­6!#ã¼ÂÂÉ&ÄÇÇ+§ýœwP&Û»ºþ¸iËî®N@öÛó¦ÏNH`øí·oU*Ü–þàÈ‘J”•_–—ÕÕ¾¿(j˜%üÁü<#ÃÀ×Mßvt! Õý_Vf¸Z Këë:~ äêŒôžg)Š¥¨üpKžÅü਑5N×guu¯ÔÖÚ\.À°XÚÕõÇ®î?nÝ>/>þ‘Ã/JJ|}ò¤ÛJv‚×ósšþ㎒٠ñ©ÃÙ>w ÙǃµFóÄoïÞ¼iÕ7_?ûðC“fÍÎ-›ŸŸšžAP…BÕï¥zV:Eú=Bí­•e{*Jwÿ°r…Ñb™uÙüþëgo¼6¤¤öoÅßãþûï·Z­/¿ü²Ãá(**š4iÒðáÃyžWô,BèŒÞ´!c@0–$©¶¶vÇŽ[¶lq8×]{ÝE]´fÍš3^¯u Ñb`Bþƒ^³G~}Î1fæñǯ©©yú駃BpÚÔiEEE999*• Q‚ÞkËéý\Aú¿èþY„šÚšíÛ¶oÙ²EÅ \xá…;wîj>TgBˆ(‰v›ýÓ¥K¿XµjÇ®]‚$±YYêá#Ôþ.ꎻ(æ Ëû 5@qò7l‡¢D[OWKË»¯ÿçá@-HÒÄ¢¢+æÌ¹æÊ+ F£bñ¡÷ÌA¾nl¼³x[›ÃN¿jÊä™ñqôÁƒmòx¦®û„ šûÎÔÉTßá5vÇ»vMÇß•91: 0!_×ÕÙœÀxáðaéaa €ñê†&ÀøÏÃr4}×"åÚËÒt®Ùô¸yô£ùûìŽ×ªö¿Vß~`¢°¬¾nY}ý¸èè7'­œ>íÁâ­{{¬½Z!ðyÿ³·|ÑØBãà]¯BB6Ä A0™0kvѬÙ^·§xÝšŠÝ»¾xÿݶÖÖ‘y©ÙYqñIi9ÙqIIƒÞ¸+ÅA©0Ü[¡¹3ÉCßcŒûËH¯…øÖÆÆê}åÖööšýû+ö”2,›=*/'/ïÙÿ-‰ŒW~œ¿;ÐÐGù.Æ?~üøÖÖÖâââ÷Þ{¯ºº:&&¦   555)))##C±ÉÁ€ü¦ýê¶ÿ­£µ1îsï7­õoijjjhh¨ª®ÚW¾¯¡¡!::ztáèÛn»mäÈ‘ãæææÐl9û(ç|úôéÓ§Oollܼy󫯾ZWW—’’RPPœœœœœœ––Ö¿¿b¥ëæAÇ»žBúÍ®ýÓCÁçó ‚ÐØØØÐÐPUUU^^ÞÚÚ_XXøçûþœ• UUU¿Y!ˆBù¾ŠGž|rÍúõܸñúQ£¢/¹…GP÷.&+§ât Êí˜̌٢9 `D»­²²ò/Ë¿½çÑG/¾à‚=þxjJÊ9f'5Nç[··Ùm@ÓH§ß2cúáI‚0kÍ:ðû Õdúô¼éýû¶`ð¥}ûÀí•j~lÌ_FŽP¶ïµÙ—uv!`0^’˜ddYø¤öÀN¯)LLJ ;bÚ, ¢¨Qó⢢çÇŽ]ÞØôQío[[Ë€ñ¶ö¶‘_|yIròÃùÿ-ß·¹½­W˪T¯ìÙskVVŠQ,­bϺ=$dCœ(Чóð¶õæp  :>>":°l\b’)"‚`Ÿ‘qÁu hšŽLˆ7‡Gb,+šŒeùtæ¯=ÃȲ,‚,ËcA !X)œ ÐÕÕU}àÀq[Àë´Úœ¬,%ï)¢i„MÓ*M#Šavh×%ê·“Q•–––‘‘ú°Ùl7nÜ·oßçŸ""" >>žå؆úŸÏwÄ)Š’$‰ã¸`0¨äI€äää .¸ '''111** ú,µŠeNÅì-Æø\º}YúgMÓ Ãpg·Û­Vëï~÷»üüüÈÈHŠ¢ÊËË9ŽëêêÚR¼…Q1@ ±±QI£KQ”Çã9ü:žœœÌ0LZZšÁ`PÌ· Ãüwñ››š?üðÃ-[¶ „¢££cbbIûp Î¥Y1Þ´yË~8ý•ÿÏI"§r9=ØÔz’»0IJáÓ§ëGž{ûí›?ýôœ)Ü(aüM}ÃS{÷E!½á½‰W±°®µí‹ÆF´êÛ©S†H‹Þá÷ÿeçN†½:9ijL´²½Öåþ¼± ƒñ‚Äe¹¿ÃﯰÙA–A¥º !žÿ%S7E§{aÂøG òߨ¨|¼¢Rðû@’JÚÛ@ÅM&(ªÎÚ $éO@%ŸvBB6Ä)@@–1ÀAF²è„„˜¤$(œ2  @@ýÀRѪý{Ê\pôÂL´J%ƒv[ÏÜß_Û#W1*B€ôÚgþõb XŒqÀï?Ë=!~¿ßëó BHrÅþýeûöµ¶·wÚíöìñ ‚«¦]e2A\Âñ[¤ÐØÁ P•Àj4ÃâãG%%YŒÆœŒŒqcÆÃÂ(šÖj4jµúÄoÏgÅÖÿoeeå³Ï>«×ë###išöù|Á`pâĉ×_ý1¡(ꫯ¾zë­·†‰ˆˆPtuu-^¼ø?ÿùOXX˜ '×=Y–÷íÛDz¬F£ÑétF£1d¾=£PUZZz÷Ýwó7vtdäá»yDñží;@?Ͻ0ágcãuÍ-åMMÀq,æ{F W¶cBªí¶µ--ðçԔľ¬e {|> dfR’þ¤nŽ{$?onròseeKš[¤`àç }¯/Œ;ËæX Ù§Œ `d8Âc=E!oPxä†>ëo/¾é^…‡‡¿üòË€1^¶lÙË/¿œ””ô‡?üaĈ!Óìi‡¢¨½{÷À]wÝ•——§,e˜L¦9sæ”””4557îhÇvuuY,–¹sçÆÇÇ÷ÏY³f}ðÁÅÅÅ@@? þEQ÷ßÿøñãAðû|Z­öâ‹/v¹\_ýõE]”}l£lttô‡~‚ ,Y²dÑ¢Eùùù·ÜrKFFÆé;g¤VCîÛæM¶ ,EEšÌLÄq´ZCñùä“£G>-§âlƒ1„[àüPº»gû¶ž/>‡Ì,CZš&!2h†â8JÅP ê÷å€ËGù[[¬Ï=‹RRbîû‹&!ñ<‘e_éî¶gþÑyÝu@!„(cC`ÕJvÒ”¨k¯áÓÒ–½ o¿íýæk_N#ûýØíö56ºêê ¾ââ`Üx1¾üòÜÈ Qãp¼P¹_I˜uovVÊ‘ê»úeù±»¤€0žž”|yjÊÀ$Î`ðÒ2P©€ã®ËH×÷ý"ŒK­Vp:€¢æ%&&ö•wù¡­}ß„L‰‹;s¬Â’šÚ;vì„`÷ÀøŽ¬Ln0ÜlBB6ÄYE¥RmY» f EQ¸Ï} câu{µk§ŒqeUÕ-<²W§<õÆd‚@úäÔY½ ‚e2V¼o#FFëii¾ú¥WîÞ½{Ñ#ôƒ™¿úpBË—/€CjX(¢!ä÷û›šš9*66Öh4ʲìñxNG[k›ÕjíééihhصkWggçiïçüùóÇwÿý÷kµÚs&ôdˆ@Óôš5k Ì6PzʲìõzB‚ TUUr”Á`ˆ‹‹ëŸímíýs ´´´¡¡áðBY,–ÏK ÄG„@IIÉ‚ ~iÏoºé¦¢¢¢G}ô‰ÿ÷İœa¿ôð!Æ@0ŒyùàrBe¥«ºÚµáÀ⸨(ÆhÔ$$ÐZ-ч8Nù’hµÚ¾};DÿáV>"RöùÀ넘Ä$ÃWº–|˜0A'ºœŽ’ÐhLçÍ@ç­ØGD1 —•%íÞÕõÉÇD«—0†¤dHO‡‹/†0` ‚¿b7ä>DŒ7·wTuvM_}EzÚwû¶±éËÖ$à¸WÇÿöÎ;0ŽêjûÏ™íU«U]uK–,Y.’»ånƒiÆÀýM‚J ^òB(!$|JHÆL/ƽàÞU¬Þµª+mß™¹÷ûcdYÍ]26Ùß_ÒîìÝÝÙ;3Ïœ{Îs&÷N9¥Œ}ÓÜÒÚÒ &ßl鎭óxVT×€É<ÖnïyÍ¡¶6„‚åkÖs®.s¹ˆJÅ,ƒQH’2€±Yq±ç?Aa!æüÃsp&ÙW]ÿþç?w¶¶füßSÔÝ%ŸKQ!Gáŵ}à#„ë^*:áfJu ‹Oþñ_ÿÕ£S²³—ùÕz¸Q©T¢(²Á?ÏóÕÕÕ÷ÜsO¿ÇÿïÿþïÒK/ GŽùàƒ¾þúk³Ùl6›M&SBBBCCÃpØY$$$<ùÔ“Ëï]þÊ+¯¤¦¦ùøÿͨN1â8®©©éî»ïî÷ø¬Y³žþy¿ß_TT´fÍš¯¾úJ)À2 qqqõõõ§éP¡üÎ:c$++ë—¿üåÏüÙ믿~gQËdÀ`À¤I˜2”¢«ååÁººà×k=••Ç·´ÙøQ£˜ÑÆt‘‘þu_ð—¸+*z6á€@k+ÖÏ>Ó¥¥ššB[·@[·n•7l€«¾¤¬Vð< …pét¤¦ÂbFA)Äã‹*mW{Ì“äâ‚#Ä jž/ïìüãÑRp´º™ññVÆÛ7öOqƒOí?€`„übLn¬ÑÐ{(>wøT*¼ÄžåYÆX©«s“³ À,“É¢Ó*û$éH[;D‚m³ÉŒyOoµáD_D˜» „8¬ ²ÌD’eLŽû¶šØ‡…l˜ó £4:!;wŠÁ`ï¥"B R«©LOsQïÂÄÕÙ¹nÝ:0„T+!ò‰”å) „‰bÀÕ!67žl6•5‚ÓjûØâJ%¿/ÔÔÄ¢Õ ‹Êl!jõ ’WY VV„ÚÛ9r._s˜HNN.**C"¯=~6$„¨T*ƘÙlž?~¿—(¾ZõõõÏ=÷œ,Ë·ÝvÛ„ "lV‹5**êꫯ®­­Žš‘žqçw>õÔS/¿üòð6¶ýo‚1æp8B¡b-§Ð3 ÃÀ90fÌõõõ¿ÿýïÝn÷-·Ü2a„H{¤ÙdŽýþ÷¿d°Ù …z[ 0Æ‚ €˜˜˜³^ÂÎËË[ºtéÓO?ýÒK/]Üi'ÝIüè Èˇł];a³!>j-dõõòž=˜¿QQÞÎ.8Üuuý‡òºˆ{v‹‚ >/‚AX­rb"ŒFDEÁfƒÉ YÆ ÏC’‘“¹·x=!+µºâí;†½ýÞPÃ-Ï4mM¹Û}ÄÙ޳«ÕÍ>ߡÉ}皊]mí] j†× ‹zoâ …¶46€€È¢øÊáÃcß47ÃïÏwIÒêÒ2‰1ž ÂíYÛÞB V¯«¯?ÔÖv.wöŽÛÕÜ¢Ä_ëÛÛÀñ###ƒ IÐ5…¢¬K0ÊvmÜ`µÙS²2Ù»–³ƒpÜy>ëé4šŒÜÜ]6Ô¯Y=f ¥ŽŠ&j5(eŒ´¡B¨×ãڶͽãiï^üè\Ó´iæÉ“UÖˆž­¥¾#‡=zÞ[¥<"L˜hÌË3O™¢2[”ª/Ž# Gý~cƒØÔÔ²e«9>þL5Ê‘’B úüå‡?tÃ÷nýÙC#²GIô\—ƒ J£ñuvšcñç>cL­Æ¸ŸÏãñDGGËTæ%”{<ž×^{mܸq‚ ÔÔÔìÞ½ÛétÞÿý6›MEFãõz<”­´—;M8Ž3f !¤°°0;ûâ¬úê!¨ªB[RR ×£;–Á@®ûH(Cr22³ðîJ¸:Jáv£¦ÍÍ Áó­~ÿµ‹³‹-µ€Ìh½×··­íõÂBÉVë]#Gªy®ßETE¸×Ë+·´@’  —&8ÔB/ÕȰ©¹å“ªJ€¤DDüÏÈŒÙï—äµM[jª!¨¦ÇÆ^™œ¤”wŠâߎ–µvuB¥¾TVœAÊË6Ñj4``÷ÁCû K|Á`+Ï5hµ¨TàøcíäEg5ÚDF7ÎNó'ô‹€×ëivvy½¯VUÉŸ}ŽÆ&»Õz͸13ÆŽu$&ŽÌÌtÄÇŸõŽí!,dÜ‚ˆˆˆ—^zéóÏ?ûóÿ>f²Ûó¦M7ÁɨL)£T¦”žÑM²,K·?ôóÌÜ1»7oüß;o˜žQ°hÑ%×\Ÿ’*Kg&d9ŽpÏq„ðBÐï/Þ·ïàŽoJ ‹ rsžýõ¯óÆ?£Ñ†Æ K0QP€‚tvÒ¶6wg§Ûë…Ó‰övttp²Ä1Æ™ÌD§!‚Õªö*£Ñ½sxÞ8j”¯¸˜É2cÇdY="Ýûáš6ƒAk³yœÍ¾õëHd¤§¨(pä …B„0µšÚl(-mýð#LȇɄ¤$Œ «:=cø6š¢©Tªûï¿ÿ£>zùå—###óòòrssµZ­¢Kzn]xžøá‡Ç¿k×.ŧ3''gΜ9óçÏ·Ûí' åJ’4~üøÇ|ݺuO>ù$€ôôô™3g>öØcMMMË—/ÿæ›o®¼êÊÃëè+ËreeåÖ­[kkk§L™òÈ#$œa€òÀ<óÌ3kÖ¬9û½óߊÑhüÕ¯~õᇾøâ‹‡#//oTVÖ¨üüûî¿̘1[·n½âÆnºêꌌŒ9sçþègvÔÕ˲¬7™â’’JöïçÞb³Ù¢¢+ )•¯¼î:³Í¶jÅŠ§žzêÉ^(Ú»—Pzÿ}÷žúøS0•ð›¼ñËz9Ô{½Õ7€1ƒÑøÀ˜Ñפ¤(¯oh|»¬¢U–ÇÅE>4nl\ß΃#Ëÿü×?K¶Sïõµèõ|LL¤Ý®‰átz0ÊRäöÀë @¥ŽÐhL‚ á8ªœÆ B©T¦„b• Ž¥¡ö¶·ÿ¶{á‹/óei‚Ãq÷ÿüOæ¹e»……l˜S“9rdB||nvNqIÉÎÍ?_ùŽÎdJKÏHHOOΗ¨R«dJ5³g Œ1v¢<ÆÀq\ÁÂE9&ÎX´˜JRdll´ÃaµEž¤¾X‰¶àGG8ÂpÖÕÖVTÔU”W–•6;±ó¸ÌÌËn¹iòÔ)1Ñ1ôCNÖ½”f2ÁlÔ<€={Q^JûæcçÌ…b;ÕÖ†Àqm%%è­éy.x½]»vvÅÆ!„ÏÇ“‚QQA„@§ë^÷),Db" Ž‹W™»ä|k(‰‰‰7ÿ朜œ;vlÙ²eÕªU‰‰‰#GŽLHH9r¤B£”ªTª+®¸bêÔ©—]vÇqÑÑÑ111F£ñ$%€Œ1µZ=eÊ”ôôôE‹…B¡˜˜˜ØØXƒÁõâK/Ú#íµ†ã8¥IiUUUMMMYYYee¥V«8qâW\‘ŸŸ=X—ÈS2yòä;î¸C’¤þ¦aNIjjê­·Þš››»cÇŽ¯¾úê+V|52yܳ¨¬ªºáÎ;rÞø[ÄÆÎªªsæ8^}¹öç•íÚ¥®ªLøòÓà—;+*2eÙ°úiÙ-UGŽÄþë›,t<òÈm?ÿùµÛ77ýøGE!qä„ É¿ÿíçÿùÏѦ¦ÑÓ¦ÅþúÕã¿yî·¿?qBêK¿ýõ‹/Ìž=:Á1íÐþ¤ßþ¶dûv½Ý¾üöÛ£¢£'Mš´téÒ‰'ÚNœ²y"AÈÏÏê©§†c]À0X­˜=99hiÇ!1f3ÊË 1’³IIðû v¯†A €@ii0O¢e‡Þä<â—åŽ`Tª8ƒaÐmÞ-¯8ÐÙ Æ8’LýÓœJ:\[œM jͤ>Ì^&2Ù`˜Ôë<¶³¹¹Êçc3¢ìêÓH*,,|楗Öwv5ÄÇÛrFGÆ; ÓIb”*áFB 7XT*‹J¥HXzò¼[¦,ßw:WY­±‘väŒuvî®­ÙR]}à±Çî»é¦Ë/>kÓƒðÉ7Ìia0çΟ?­ `vyy}}}SScyUMñ¦_½»Ò˜,–„䔨¸X“ÕjŽ5šÌZƒ>ÆáÔêcÒV±žð-GbÒRPJe™2*«5j „(¶SÊŸº\.g]¥rkss[³³­ÑY[Yáêh×k4ÑÖ”øø…ùyG|ll\Jjê…Õ.’R€‚ãÐÒŒõëðáÚë žG €½{±k'L&Ìœ BàñàË/ ÓaÎôÎ7â8”–bß>¨Ô¸äaÓFLœˆéÓÑÝI…ÇÃjÅÁýX|Õyö®=9f“yÖ¬Yãǯ¨¨hjj*)))**Ú±cG[[›Íf‹u8‹%..N„… *ÁZI–¥<ÏŸ¼ìF¥R%%%¥¥¥AYq¦@]]]bBbKKËW_}ÕÜÜÜØØØÔÔd2™GFFÆ‚ âãã333Ïe¶˜Í椤¤¢¢¢3MK£`µZçÎ;nܸÊÊʧsïÎo ~zל§_L}ö‰Þxí÷>oׯŸ1ß÷Ã-”/xú‰Úë¿/­Àˆ·þ½èrË¿mµE%½ú—Æ‹ªSrÞüûÜŸ>¤ýf[3e +þaùÅÿš^þc½ *øüÃ1O>g~þ7uñÉ OüòGϽh|äÁ5eUWýþÙñ8¹ç–Ÿ|ðþïE1vÞ¥öŸÿÑÃ?OËÈȈˆˆ8õ§ BHDDDDDDEE…2!/nEr2¾ÙŸ”ö €J ¦Ü®3ªî G»_ ¢±Z-ìvP ƒ‰‰hoG(u/¯PÁ “ ÓnEìņDåö@@©å2Öĵ3ÚTß ¾.ÏÊ4È }¯¦’ž_gëõl@–÷µµ!€Z=Òjqô »–u´#¥3£c,'MeŒ­ùüó—þö· ‰I1 &ˆŠVN£{ÿ”1‡Fâ!„§°'‚2FE*“1~t.™¹ùÈaç[ÿÞ]Tôã»îŠ:ó[G„…l˜3B«ÕfçädçäPJ[[[ÛÛÚÚ;:Ð4c¾Ù–úøCXºlÌ´¹;÷í™ðƒž®¬_aõî[›¿ÞL3JÒ] ‹>ÿðþÊÆ˜³¢¶ùEªRœí?züáoÚ:ÖŽŸ¬«j|øáŸ¾S|tMæÝ¿ÖÚtïûïoÍœ¸wÇ u÷õEãâïÉû^󓻎\rÅ’»– õµ#Þü+n¹mÙÔéçþu8ŽKHH¨¬¬üNY†ädØí¨¯Gn.´ZP<þ³j5.¹z=>þ õ¸åÖã÷ÏJakq1´Z$$€Q¨Tˆ´£¤ÍÍHIí^&ÔT£¥yùøî.kˆ”5+MæxÞ8˜¦üÆÙ¼·« ²œ;Ö©àô·£eŠþ^jJïÇ]Áàç MJ®êh»½gÑ­5¨÷ø”œ4³I8±õcìÈ‘#?ûÝïêæÍ‘™ExLÏq´_ɳ†2F%ÂóIãÆ7ÅÄ<»fMLTÔ-×_o8AÄú$|gçM˜aEYöíYeŒuº\^¯7x}>1’dÙï÷1Êü>_CS“ÏççyÎëóÕÕTw‰âIV¸9ŽKˆŠ;:G‘/±1—*­žT*•N¯'„èt:ƒÁ`4¬ÖˆófS7Pééxðgp8 VC’Áp’S ÕÂå:æÝLšŒmÛ°v-æÎ…5²Œ€bջdž:–mÖóGO› £Ñ˜žž®ü-˲Ûívuº‚ ÇãaŒ¹=n~Ÿ¿´¬”çxI’êêêœNç ¿8¥T¯×;V­VËTNp$DDDŽèuzžçu:^¯7™L&“iÈ=_ !ÑÑÑÃÑBì¿“X“ .…V‹³–‰¡Ž… ÉÁý‹‰—tvŠ·¤³.·§«²¢DG,P·ÔÔ%¥ðMMš’Þllp¦ŒlóùÄé«­jšuÉĤD6kÖ®¶–…7Þ±Ô §*5ƒ7<ò¤I­Òju¨¯MžVÃqðû‘‘‰I“‡ä[pÙܾÇ!%³fãƒ÷qðÌfH2¼hµ˜9 Ÿ|Œ3,†»(àyÞjµZ­ÖO¹ÝnBeÔãöˆ¢8¨­ÒbÔh4*Y°F£ñ|ÚÑFwï_0̹3cµJc³aöܱžït»Ï犢Çëí?-saŒc €Äqž7 <á‚ÀÄ^ÞjÇåjjj÷£:ÝP©XÇétº‹eVhµÚ™“'ÿãÅqõ¸ÝƒHI—_×^Å?ÞÀæMÐhà ®))˜>j5d3 PU…·ßÂÖÍ0 StºÐÞŽ9ó0iÒñ"‡'bëVÔÕ#& 2Ek ššpÉ¥ˆGK- P«ÑÞ–r1wÑ)-ózAˆ•lƒÉÊ’Žƒ`l‘Ãa²ÝÒØ™dÝnVÏ+`@ƒÏ‹Nx>Ýḏ¿—uu• ìö‰ ÇG`ìСCÛJKÓ—ÿ”^¼á€‰¢%.¾ÌlZ»iÓèœsßFå§$,dà ;½›ôX­g™yö!ÄÁƒØ²íðûávcà¹C§Ãå—#9›7bÿ~¸âJäæBñÉÇHN>»(×N§þ÷¢¢§fÜl2»ŸäDB.ºnC;–žYqz¼3^ª,½µ5ؾn7ŒFpfÍB]Þ|«VB¥cðù Õâºï!+«{LF1nöíÅŸcËæî 3¯¢ˆ[~‹epËsðzãêgÏ›w^öG˜0a.VÔjµú˜êŠ‹‹“eyÁüŒRQ’¨Òê‰u§ TVU765žDö0ÆxŽsÄÇ'“b„pÏ ‚ÀqœÀóœÀ«UßÁ´þ€,¿\X´¿±7Él¾kTÖÀm¶·ñúÀØ¢è(‹¶¿è”û¼±`àøyñq½Ÿò‰âºÆ&pœ ÑŽëȬììDÀ ×b˜«0„ .K—¬züWªñy1—]¦q$I¤t°pû9ÂÂñŒÊžÃ‡ZW¯’ &,^ŒÄDlÚLΪp6,dÄ2xžŸ7wîÓwÞþȳOãÊ«0jáx®XL,îý1öìÁ‡k ˘6 S¦"- ؾû÷#6„@¯ÇM7!7Û¶¡¤<Å—cÜ8ÄÇ¿E¦ññ¸ãN””à“ár@ÁLLœ€´´¾âA0ˆcxî7O1a„ sz(žU'èi:ãe¡þh.”±mmîÙB ÑÞ•=j ¯€·§=c³££Öms6K’ /ÒnïëÛå]]] d„J5ª¯wa½ÇQ„ $›LÂé{ ˜<‰Ê íÞ]ûÌÓ¼Ñhž1Ó2q¢`"T¦ŒSŒ–Ž€މ¢§¬Ü½m›÷.¹ó‘ѽy¶„…l˜oÆØ¾}ûü~o¿Ï1cÆýL_t˜-–ŸÝAAÁ/žxbÛªw‘?yyˆ‰ €2DEaÁÌ™ »Ø‹DEáêþ[A¯Ç¤IÈÏï.•tg,ô=ÄÄ * S§vß1÷ Ø IDi)öï玾yéÒß®]k·Û/ÞˉÏï+.*î™9„ììlËzµ„ùŽáv» %IRL¯8Ž;vìÅž[yñߦPO“:¯wÊW_C–!·¤¦ü`dÆ ›5z½$ ú ²››š”ÓûBG\?¡’¤šö61ZMï"°ŽP¨Áç£Ép¦ö5ŠIμy˜>]®ªêØ·¯cÕ»ÐjU™Y†ôtã¤IšhöDmÓ£r(ä>r8pô¨¿´ŒVU 2cÇáŽ;Ž;a3ŽÓ&,dÜ=Œ±¯DY–+*+].×Áýû½~QIIGW— åÅÅm­­ý^;rÌXu¯cŒQV^\èIºè †¬œ" ðO!D¥RLºá“Oªª«þýŸw^ÿ÷¿®®Ðˆ4ÄÇ#* ÐëöŒ Lc:ÛnñÚoé§® p:Qxuu¦¨¨Û¯»î±wWš-æ jý®÷ü°oß>dzuëVQ·nÝ …$I:räH(t¼¯V«MNNÖjµ”QT¦µµµ]]]½‡=z´^¯EqöìÙjµzâĉz½~âĉÚcñŒ j„éG¿³ÊîÝ»½^¯2¶oßN) ÅEÅb/fƒÁœœ¬R©zfEee¥¯×É„2nÜ8AÌ›7O„ &Æüü|á˜tÏŠ0CHk 0ñ“Ïàqc±¾4uʉšÄ¶û|E0– ÌA¶¶N±?[äHèý8½>øýP«£´Zc/ì ‚A06Ùb1#ÇA¯Ç¨QÈÊ‚(¢¥E¬ªrºþ³n7’’ˆ^¯v$J $JU‘‘|L ÚÙ¬«ëi<é+<JYy98™™HNÁÔ)¸áz(>ÐCwó²aÎ zŒ`0¸qãÆ={ö”UW>|¸´¸Øiw$'GDØÒFei¦¹K¿§7eIJ•mŒì·ö4ðŠÑoÑ‚Ÿ¯äÈaF)¥´¹©±¶¦¦¨¾á­Õï;ê›jëR3FŒÌÌLMH˜:eÊôéÓ###AˆÀóç'6@)OÕ%)1é?ûÙÃ>X__¿eË–{÷î=|x÷«g*‰‹“#l°X`µ".®ûŽ…©¿Wö (ùµ ðùÀqèêBs3<®µ…x½ruµÚl6Ùl‹¯^’÷ƒÛ³ÆßòÅçëV­žV0ãÖ[n¾õ–[£c¢^ø#(J‚¥ôðáÃ6lرcGyyyaaaff¦V§ÍŸÇóü’%KÔjµ Z­¶·Þí§6úÙÎSÆJõù|¼À¿¯ðH¡ÝnÏÌÌœ9s攩S&Ož,Ïñ|ØÞá€R*É£lÏž=ëׯߵkWEEEyyyVV–Ñh3fŒJ¥ºá†xž×jµiiiæ f¥JÈÀ¾}ûdYþôÓOƒÁ`aaa|||vvöÌ™3§N:~üxŽç¾Ý£#ÌÅ|¾¥_¯ovu€³å³g ¬ñRè…Z•uƒQ#ô?1 Ôã@ÆGõÉ‚ ÊòŽA•Þ·§¦;$–…BFš FõàÙ §…â2¡Ñ ! ˜>Ë–1440¿?ØØìììÞ¬¨›7!$ÁbFLÌqoŠE—ã®[ÝϽbXȆ9]B¡(Š|wõêÍÛ¿)ø(15M–$14\úUé°LÏ6¬Ë(•Y–5Zí¢k¯]põUß›33+#cáÂ…Cú1/zdI–!GØí·Þ÷À÷—ßwà›íO¾ðüán|ôÑG~öÀÖ¾«TC‚ßïéÅ—/^¼hÑ¢P(Ô»xë4Q®XCŸ@e’C‚ \Ãõ#FŒøÝï~—žžž•5ˆÑc˜áÀét>õÔSwÞyç”)S”´¥“l<´à$£Q™å F£¹ãŽ;¾üòË7ß|óÁ´Ùl· Ó›@ àóù‚¡ ---)+Ûwøð®²²¢º:±µÐ阭T†NøxAo ƒÅ¢!RU >ü¢ ¡ Ž–€ÑhMNŽ·ÛåçgfdŒ92%9YP©4A¯ÿ(ˆ”6ù|Ë·ïXS^¦ôÝùî¼¹YÖS»©x%Ñ/St§ˆõ§ÚëË4›{?΀Î`7x>B­ŽìõÝ;B¡£]] „˜Ìç” {Qq^…¬Þ`Xvõå-õ ŸZt㲜üüÑùãSS éžÞ*µzßÖ-?_vÃÀí'Κ3qÎì)sæÅ&%ƒ#Rû»Æ«5’ÄPH …8žW n†ü]cµ•ÇÅ'&ËøJé±,Ëž.·^«ûË_þ²ý „ã(¥­­].—ÏãÍÍ©Qëu:yx‚aEEE»wïž1cFH àL§(ŠN§S­VÇÆÆ­–@‘DIÅâââO?ý4,dÏ«W¯...–eY”Äž<æA·”e¹®®N¥RÅÅÅû`ŒÕÔÔpçp8}GBáH(¢”¾÷Þ{W/Y²'Âçóu¸:|nφ­[?Ù¼é‹ý¥¥HHDb¢šj˜8)ò²Å:›·GÒ>K¨§ü{G[9Œ‰.W ±¡Ñí~¡¬ ßì@M5ZZ"³²æ¿xæÌq¹¹6{dd„M«Ó ËW=íÁàúºú;wír¹\ *õÇË3¦'œ¡û›†pŸ÷·¶)]'²­–ÞY‰ÒB— ”B«M·õ©ôòŠb­ÏÆfšÍ&õw¤;Ú)9¯B–1f²F´Ô7dÏzåäQÆïÜùåªw¥/¬\;aBÏ|çy€Áj1*ûx¬Ž µ¹ùõç»éÓöÜï©©a;|$''Ç&'þýÅß/¹é¦ø„d“Åb²XºSc)*QKeyÉ”‰ö·užiÒ9 ø|]®.WÇ'ï­vû¼ãÇ’7Å®’Mmúö¡T¦Ì«9ŽB‚ «­µÍéÜ·eKÍ}ú–[o½üO>g.£Ñ˜””ôñÇ›L¦´´4³Ù¬Ñj0ÊN98žk¨nX²dInnîê÷V{Üžsÿ<Çf ÄØÑÑQ__ÿÉ'ŸÄÇǧ¥¥ûàaN“øøøÄÄÄU«V *!1!ÑbµªÕ* ˜„·Û}å•WÆÄÄlÚ´ÉëõžãûÊ”^yå•>Ü{q gV„B¢»««ªºjíÚµ£G¶žF\í¿¯Ï×P_ÿùW_½¸zuÅÁƒkÈ͵Üúƒ„¬,(½ (¥Dù=ûú*ž‚NgNOg ‘ùÀqà9xÊÊV•—¿óÊ+(+•“sÿM7]2ožÃá8ùîb¨¶Óýì¡Ãÿ>Z¢¸(Z Æû³G=žw€Lý”‚±8®_9Ê;»@)Iï›#+RZ¤èfžÑ7Xë ‰µ>€4ƒ>‘^~¿r•ÕÙS·Ã(kmhܵyÃßžùÍ/o¹éÏ|œš-õZiš¿äšÇÿü—€¿û` ×ÕÞ¾oËæÿýá=_¾÷îõÿó#½ÑΗ&¤Phâ¬Ù ééÿÃl6ûèü¼¼ÉS´zÁh6šÍzƒ Ê]#뉩°S ”A±ØN‘Q¤¨Õã~„pç÷z=î.Ÿ×ôJ‹‹ö|³­äÈáK–ξü 2lIT*•ª¾âhÑÞ=²<Ä1Âs‡ç¹ÈèXk¤ „@8žWB°--5e¥‡6mô:ç]ºðÿïO=…áÇ,Ë999z½þwÞÑét3fÌHII1™L&“Él1s„cŒ)u|ƒº^Ž0™Lg·ðÒ#Pzn9<Ûíöx<õõõ[·n­¯¯ÏÌÌ´ÙlCî sDQÌËË3›Í¯½úšÝnŸ1cFbb¢Éd2›Í¦c&tÊ5B9Ü­Vë®Y,ÂŽç” eÔãö(£¶¶vóæÍ.—+%%Å`0°áï8ÑÑÔì\ùÁšÿøG).>röœôûÇA– •©bÅŒ¡ÜwŒQ™8Þú›SÆHSf®¼Š„‚ÎÇï~ý1«V=õӟΛ9C?l¢b¨Îíy»¼âéC‡ð+»&Ú"~3q‡㠇»d„ðlŒÝb¨]ÁŒ&C_].Rº§½„˜Ufßd0·ÚçõH2ŒChYpaóí|O¿×£R«{Ÿ”Œ‘s®¼Ê`4=sßò¿òçGÿøÿzÿ¦b(äu»þãGˆJ­ž4g^æØ±«^mÑ Ë &Óp¬w_8ˆ¢ØÞÞ®R©¾•E® ß?í’…³_¹oÛÖ]7|üó£¢¢“G¤ÈÌLJKS«5ZN­Ñhu:ÞÀqœF«U+.Ý? QDJŸA…QÙ1”‡yþ¸µ'!\÷™B•å€ß/‰¢ßç ü¡`0à÷3Fk+«*JKêjªk«kâ¦ÎŸÛÏiŒ|ý…ßÓ!„Lœ0aÛ–-ïüæÉ 0 [\\2ÙÍ7üø^­^Ïq¼×ÝÕît: wlo*)ŽŽŒ\~çóæÏ?Ÿ) Ο?éÒ¥;vìøòË/ÛÚÚGFFFvv¶Á`Áh4juZZ£V«{:0Æxžç9QüËøSÜ™pÝÚ½ûWEÑçóI’äóù|>_(òù}åeååååUÕU<ÇÏž=ûöÛo«V­únŸC.4c@àŠ+¯¸âÊ+¶mÝöÑGy½Þ„„„ÌÌ̬¬,^§Qkt:N§óûý8Öj¤·GL&‘n³;Ò“®Àë-zd;].—+H’äö¸K––••ÕÔÔètºÙ³g´¶¶nذ!<+úá÷û{ò©×ŠKü™6:’ÄŽ¶Ï÷žRê}e¢È±ÎµåçWìÙsåOï[ýì3—_vÙWúv„Bµ]î•••¿9R¨¤¨‚çÓMæ›2GÞ?f´å̵dF%00£Q«û†]*:Ý]”‚±ù‘ý/ú¢,ohk!q*!;¢õ‰’×çb4˜„pDöüB%™pdÜô‚kî¸sÍ[ÿª-+MJO?Ùö”êô•J-‡BL–éÞùÝ¢¹¥ù•—_‘(ýé½÷ÆÅÇŸÿ C‚J•?cæ¤9seY*;r¤hÿÞÝ;w¬þÏ ã,f³9ÒnŽ‹u„Ýa³s§¤+1Æ´ºã•yJ|, üþP0¨Öht:Ré%ÉRmU¥ $Éçñ³{”~¿ µ:·§¥Åéjmëìt¹::ƒA_|rÊȜї\wCÆèÜ»RYÅP00|®„E‹-Z´h˜Æ?GÞxýõ¯÷î£2konnª«­**¬=|8ÔÙ9ÿ’K|À‘pê!†`0(BAAÁܹs›ššŠ‹‹÷ïßÿÊ+¯0±±±v»Ýl6GGGGFvÛ. ‚ V«[[[ø|¾ÚÚZßI×(cŠl•$I‘/]]]ÍÍÍn·»±±±¹¹ÙãñƒÁ#Fäää,¹fIZjšâŸàr¹ÎÃ3` ¨±kæÎ»hÑ¢ÚºÚâ¢âƒ¾ýöÛ.—Ë`0Lž<9%%E9 ¸Ýî]»w)a{ÂV7pùXÉEÑëõ*ñuN§Ö¨€X ƒÁ`€rëRSSsàÀÒÒRžç-Z4uêÔeË–%$$(N‚uuuç{w\ ìܱcÃÇÇ<ò¨>*Z>ý40BÏ£—ÕL7!t›8bÐø7!GáŽoƘ)#ûüq“&—>üÚë¯ËÍM1âŒ¿Þ h J:\×Ô<[\w8*•Í`œýàØ±“££ÎnØv 9$‚5Ï÷Ë‘=ìê¨ Çbé÷TP–;;] ĦR'÷õÞò„BðûÁqÑ:Ý)½Û¿3\(BÝÑ.k\Þ[/þ¡êhIJffÏS³X,J/ƒ¦¦¦?¾ôGµZ­Äé•6½Çá8NÅêêêêêj§Òm0 iiiF£Q Îùý~e QJ+**ZZZŒ;6==ÝápDGG+³"l*|"Š‹‹[½^îðaQ§ãMfF逷~B½^ug4RR¨’ŽE“<ÞPS# 9ƒA!X,úÈYB˜$Ý]¡ÆFŽ*‹U0™”—÷ÞLI$ VW¡¶¦EƒgîŽ2‰ÒFŸ¯Ñã}»¼ü¥’£ðy ›h¶Ìˆ‰¾.5õêÔ”sß @ÁX´V«é{"*ïrC¦`,ÛjéªeŠÁV(&Öhèý”ÌX“߯`0/¤näÃÍ…t¬2ð¼#ËrñÁs¯^ÒSÝÕTW³ã뵡`@ù—p|WGûþ­ÛLÖËo\f4_Xy^¯·¡±Ai‚1$ ²¢‚ñü²»ï øüÏ¿üʵ‹/›?ontôÉœ–‡Æ IRO*A£NÏ‘KÇq„SÊÒyŽïru4ÔTó„'ßÞ½{W¬X¡l£×ëSRR”ûõ)TªÿÏÞuFQ¦ïgfvf{²»)»é½J%AzI¨RTl÷ó ( žŠ¨œíD<ñ+rˆˆ JGŽÞ¤„’PRHBzHÛl/S~Lˆ›H€Ü‘çŸìÎ~óÍÌæÛ™ç{¿÷}žã999iiiN~40 P¤¶G}íµ×~ÿý÷ñãÇ«T*žçÅ€«Ûí^¿~ýßÿþ÷ؘX©LVo4îÚµë‹/¾øùçŸ_|ñÅŽ }+8j/ô`=uʺa=¬ ‘ùøZ-£Õ’ ¥D¡àÅ AU @’ (¤LÞHÀš™Y±xœNªO‰L€«ºXñÉBݤG½zö"$I‘uGÖ-ú” • †¬VöÈáÊ­[ o¾¥Lèä6Öruu¬É䪩©?ž¿X‰>wÁϗТJ„R«µÌl9[[»¹¬üçòrë@QÈå‰^ÞCƒ'DD h“o’„»<† R(›eXݬøj¤L³½ÊÄ™IúËšHé[\®|‹@´B¡¼“–þ;.50"²÷àÁÜ¥Y2A‡½öâÅèüýî6B¡VµÞÃ-CyyùúM›ì2yBRwÎÝ6žOàA£ÓEÆ'Xͦ¨N‰O¼ôò¯«~üç_Ž:dÔ¨QÞÞíQ FÐèzÅ@Óô¹ŒŒƒÛ¶<>ó•>ii”Db·Ú{¥\,-ݱæð¼Ûåü‚ùð„R©üoa± "+++77wþüùݺuã8În³Ñ4Ý»wïÂÂÂãÇ ¼ÐŠl¾X9$&.k4§ÓIEQƒ R(øŸN¡ÿ_EQgΜ9~üøìÙ³{õêÀn³‘œœ\\\|øðaü•}°Å0pàÀ1cÆøúøŠ‰°$I0@¯×gdd8N¹\Þ¸vGÓôÔ©S;%º\.»Í&xUTT¬[·.77711ñV]÷'8*ÆO@MµûTfÝ©LØlðö’úùɽ¼­–T« •ŠbB*%erŠaQp“")†áxVkÕªŸ©ÔêSªîÝI…’¤(¶¾¾äóÏj×ü"Œ”$y›­îçÕT·nš»ÇzÅÅ n—»¶¶~ÿ~Ëš_ª~øÁÙ¿¿½¢ÂQS‹ ⑞_ìÝþZ¾5NgµÝQk·Ž"³egeå娫mà¯4 •zˆ—:Õ`Ö× oÔµ:·»Âî•Zzï¬s:Å •„öœ³q‚P`±ˆD6@ÙD™ÁÆrå€`…\yÇho¡½Yç­3€n©}<µÙ{8ûãOå·@ÀítZÍæë×.zçmÖÅ0‘JÛI~F§KHJr÷Xq‰¼­ DZ‚·Û-S)ïŸúTYaá‘=»·Í|éž±c‡NÓí}àJzÛÚ_lõ殽SI‰DŒ£‹‰ =µ‹ ÎÜ.$¹jÕ*]ºti4)åyž¦é”Ô”/¾ø¢±Ùå•ÈbÞmjjjÿþýEç[«Õj2™***JJJZ¯ë@;MÓ6là8.))©‘nŠ/úôéÓØ¬ÅÀqœËåêÙ³gŸ>}ÄŒ[QHëâÅ‹åååbl3Èd²=z¸\®FZ™LÖµk×%K–ìÚµ+))©#»à*8P©Ñ¿?„ÃŽšg]ÓfCM ²³QR “‘½Ri2`Og•.úTP(ÜõõÜÙ³’Î-99–óçE’¢ ¡ùÜÜÊ%K¤‘‘‚Íæ¼X)".Þxèqß>ޤ@‘`ôìÅe«‹ŠB\zö„V ™}ú4j]] ,ÈÉÉðî»ïúú^űâF r—VœÒH’¬ª®Z·n]³í}úôIHH°X,+V¬Ø°aA©©©±±±:N§Ó½õÖ[ѵÿ ˆr%Ä•I$Aõ¦úË€Ùl?~¼Ýn_µjÕÚµk].WJJJLLŒV«õóóûè£Z Ê^ÞyëN¹hBƒO `ófœ=‹ÁC‰ÆzœÏƒ¸0¢7`Ð ØíÈÈÀ‘ÃèÒ]»þÁ&  ví†Éˆ” øøŸÐ¿?Dž'ʃ€Û ŽÃáÃHìŒË³M!G¥š—_‚çàrA¸LWA|Ë02oïQ>¾5Þ*eˆJí«P«”7•¿Špñ|žÑ· 4ì뫺,µÀÅsbnn³í<ÏŸ7›Ar’Ð7-hssœz…œ¾“&cí…È’IÈ>uê·Õ?|ð!Ch(Çq­13´„®®¨¨¯«ëÔ³—Ì#ù鶃 †‘JrÊÕv_/žçÝ.—˜ÀN’„T&?ºg÷ÖÕ?ê{רéÏDFF¶òh'`Y¶ï°´Sö×UWBýWÏž­ì¸qãÆ]»vxuö«7È ‚0nܸիW×ÕÕyrk1ÌÖø::*úã?n¶odd¤ ß}÷ÝøñãÓÒÒ Ã0Œ”Q«ÔsçÎí ²íÇ¥§§/]º´¦¦F¥R5ÞÍAh¬ðãy>(0èò Õj9Ž;uêÔÊ•+ 0jÔ¨€À™TÆ0ŒÎG·dɒˉ,Ïó‹E*ú¶ˆa·»¦¦†¢¨ž={òWÈÄíÀU (*Âþ}HŽ‘#¡öA€u#8ëÖ64 $+ ¥v¤RH¥ ´’¤`ªxØlÉ@I“$ TCQ Ê+p¥Zg’„Ë)¦4lQ*!W€”$‡h5½uº(µ:D­RÓŒB®‘2jš¹•uÓUÇêj:oM RÕ¬ÒËÆq¬xâ-VmV¤RB7«èªw:Á²HÔw’dn‘U(UJ•ºqe™çù‹%%YÇŽ~=ï}Š¢î™ô ‚óà¥4Ã(ÔjJrÉð „Ë媹xqÙ‚ùù§OÏx÷=¹JÕ^h,PQR²çè±ðלoÞ:<•ЩÿÈ‘ •šfsñ»Oÿe¯({ö‘ÿ4`€RukÝÚp†À¹ÝÝïê§ÖéN:Û-‰fhžš>—q¬­ŽÒ>ñÇòè•§gEq§ij9Ø )))ûöí€eÙµk×~¸àÃ/¾ø¢"ËqܦM›Þ|óMŠ¢Þ{ï½¾}ûZ,–ÿûßß~û­Óéœ;w®X Þ"ä—B¢iÖMÏóýú÷[½zõ‰'†Îqœ $IºY÷éÓ§Ûx{{‹²²ž`Y–¤¨;v¸ÝîôôôÎ;‹»Ó4]\\ÜPÔÞgywšùrq—ššúí·ßž8q"""€hiADfffÃ.‚ P(.¢êÅêë뇚œœìv»ÅPR\Òh 湋Ëå:}ætjJªX&ŠŸp{©ž\N§±®&çøñ!îIšÆHeí¤*900ðÙgžÉ:Õ††E••–?|HÜ7mø‘Ý;×~»lXJïqý¿„„„["¿Emá/Àqld§N= øñ³ÅÁ¡ýGŽòÒivçñ}û¶¬þùÆû÷A”Dò¿'€ ÓéúöíÛøvÑ¢E ,(..¦[½sñ<Ÿ••Õ»wïS§NM›6M¥RÉd?üðÖ-[Ò‡§?6ù±›}æ­¯ð<ŸØ)1&&æë¯¿öõõíÑ£‡¨î¹oß¾ÿüç?žÍZþŸ ‚Á`››Û©S'¹\îr¹²³³?üðC±ØËåtÉ/[¤ó<7‚ X¶-«3;Ð:½dÅ·ÇÅÅÅ%''/]ºT¯×÷éÓG©TZ­ÖC‡ýöÛo{ ‚Ðâ IÒÏÏ@^^^=”J¥ÛíÎÏÏÿxáÇbš¬Óéôœ“»Ýî-¿nÑxkâããEWŽ;v¬^½zÔ¨Qâz I’Çqm¸# Øò+hC‹ÀóJái(ÈóË1, +¿ÇŸ#8 ìÔ›p×]ÈÏÇ :íD¤ÕòpHHxD„¢]fܹxþduµPo`¸ìÖdr¹‚ÀŸ¦= ˜Í Id@SúkçØ‹N‡˜ž!£ÛËbû­Á-½Z‚ L55oßÞì£Qÿß°qz Þ¨ ‚`9@mEÅî ë=Ûë ÉýúÞ3ir—”>¾†¶uk(•ʦ¦¦¶aŸAäææ–~ù¥ÉhüváÇU¹Ù3Ÿ|¢OjªV×Ü‚ùf`ôÝwúå—ã&?®ÖhX·»Á”åOA@I¨ÉÏ¿d¬3.|}öÚåËTj/‡Ã~þÌéçÞ}oÿ¯Ûä„ 4Ãpx×®ÿñf›ôÙ •••Xºt©T*3f̰a‚šˆcó<ðàÁ7Nœ8q„ ÒkNºg&………›6mÚºu«Á`xæ™gºté"nÏÈÈxë­·¼ýöÛ¿ÿþûÛo¿-YM™2E§Ó}ò¯OÂÃÂ/ïS"‘L}jêäÉ“­V«êRüÞÏß@}}ýþ}û‰lmmíîÝ»×®]«T*‡>nì¸÷+ç8®¼¼<>!A,…l±™L&›9sæœ9sÞx㈈FÊXÌ»Ã~ß½÷eeeµ~·Ûݯ¿uëÖ}òÉ'Û·o—J¥v»½´´tĈ*•êàÁƒ&“©E"KÃ0&“©®®î¿N³¬E]¸àp8®šhD’dHhh››Ñ_;¸téÒÚÚÚ°°0žçE–ùÌ3ÏÌ›7ïý÷ßW©TÁ!Á6«­¢¢â±Ç;zôh㎂ ð—*(Ä)Šây¾G!!!_~ùå¬V«D"©©© í~?ô»Élòõõå8NüfhšîÞ½ûÌ™3CCCI’¼pá‚Íf-jEþÊ0LMMMHHH@{z¾´wjk!“¤D!‚K Ь™й3¦LÅѣعâ⑞Ž>©8ò;ÔjH$€1)èòÁ,niÅçOTIûd±*l¶-¥åày_Ÿ–¾,Uïv»‚àGÓž—Ï…3dXSÕQ»›-±ÚhhZq'‰ÈâY»ÍöáÊŸ.ŸO“©õ÷c¤2™Bá¹”ív¹â»%}¹µ9ë S(äJ¥RíEKAÚI8V„D"is{C•Ri1—ýë“§'Mzá­7#£¢nYiWXXØœ7ßœóܳ}GŒ2n‚_€A´÷lÔˆ½.°nw`DøósÞ;¸}Û–Õ«Î9“”ôü»ï÷<€¹¶öO× “I‘”„–Ømöý[~ýñë¯î=ª_¿~®·Vðûï¿?ÿüógÏž5Ö¯_߯_¿Y³f >\l`4?ÿüóo¾ù&77ÀO?ýôú믟½äÇ{U8ŽmÛ¶=þøãÅÅÅâ–ƒ2dþüù ÃÔÖÖnذÀó/<ìØ±F;Öýû÷˜3gN‹}Øœj]( T*;uê$n¬ªªzñÅ·mÛ&ûùå—sçÎÍÏÏ¿ö/§EÈåò¿üå/üqiiéèÑ£µZ­ÛíWÿ›R\\Ü?ÞþÇŽÿìØ¼ysmmmß¾}§Ü?E§Ó0›Í­3Žã"#"çÌ™³sçNQÆ«OŸ>S¦LéÓ§OqqñÁƒ÷íÛwï½÷zî"þN].×æÍ›÷ìÙ3eê”+å.·C=r¤´¨¨¦®.¿¸¸°¸ØT^n¯¯À6†á(мZF!ŒË%´\î¡Éâcb}}}ýý»%%ÝlC8½¿þÉ'Ÿ\¸paAAAzzºL&ë”’"a˜¿Ïž½eË–o¼Ñ;.®{÷î/ΜyÿãÏ›7ÏXgä8Này/Ÿ ¨¨“ûöIhZgÐûÎ=Êó\ú„ jnÕŠ«V¯þ~ãÆ}¿ý&¥¨ÔÔ”Ô´ôHƒa÷î݆€ÔôôÃ;vp»Ý/¼õ–Ýnÿá‡\‚°aÇŽ¯çÏ1z´Á` Æmµ®^½úäÉ“óæÍk=Õ§-ãê·q4ƒèhbàÀaZ//ˆ"±± IÒÒ±åWØlðLŸãˆþ|½SpåU¾Ý”Í\ŽR³euI €‡ƒƒ#¼¼.o`r:m<ÀWÊx~• nÂOÞDêÇÅóu.7!aî([/Üb"Ës|HLL‹ v,=-MõÀè“¥¥çˆïÕëèž=tÆ1ÿ¯ÅðIy^n¢Ñ(ùñ;aÖkçNœð~ñÙñS§û¼ôÒ ÌO}÷µ‘3^:n±&Þu—ÿCãr?ž››2b„÷¨þ©v-[¾ü®>}|ïõòê-ýêòɆş×忍üüf=ýtÖ™Ó#†˜;wn§NÚm;IbÀ@<€z#J4F˜8Í<ùH4–…B •ªA½• PY «Á!H  »½ ‘x8 ( meŸy+Qãt®),„ÝŠТB‚Éíb€ÃxŽ@^ ,Vñù¤hòt³³\©Í‚„ävû}ÞbÜêøóõ†ñ<Ý¡îdøøøL™:…$HÕͬ뺆‰›ýòËÏ<õTVVÖÆ-[ÿ¼:ÿÂ…^}îŠîÜÙÇ_ï¤ññáXNop˜mô˜åyOaA€L!—«”Aç0‰îRêAüQE€ IRü#¾¶Y­¥……Åçójª.æffe<(a$ÝF¥¥Ï{y–V«õ÷÷¿O “'Ož>}š$ÉçŸ^ d>ôÐCóçÏ—ãŸ}öÙúúú]»vY­ÖáÇϞ=;44€OVV–gª_+P*•ûÛß’’’DÎÊóüâÅ‹ ~üñÇ¡C‡66ãy^¯×ë.¥—DFFÆÆÆ^ãU=ÿüó[¶laæÁ/¤ªªJ ë¾úê«<òˆZ­ ÓéŽ9rí,üJJ¥±±±¯¼òÊO<±wïÞ7.X° 444999<<Ü`0ˆ©Šâä”aFÓ8W%I2""Bœ/µr±¥F£i,z€xhÈÏ?_Q^‘›››••uæÌ™N:3fÖ¬YƒÁ××·}ò•“'O~òùç§²1Œ98ÔHÄÅKt:ЦÅ$N†’H%ЦI±V®=õ‡DCäŒçx>"8Öíä8Ï×¹\.£UUGûrÝ:YUUDçÎMš4fôè6¼:™L–ðücúôéÛwîüË’ì%ã{*?8ziPÜä§ _»]z÷Àì¿>Óõ¥gâ?ÿ–3œ³ÐQPZñæËú¿>aÿèÝÚ®½t{šzâ™Ì{îöÞkýç~Bõ¯ìNI³¦Ýµìé_ïË<ªóŒG7핎ùOuÝÿÁM{™»eÿuZÜ£÷ßýù·ìðÞ åúç^ÉùÜK¥ãõž4ã½÷ß7 :®}ŽŠÛŒÖÇXçÎØ³çΡw X7$x·) òÏ㛥xðtîr)›–€”A^l6„…A"/Àß²³aø£tÌéĹsP(àãƒëïíêMóÏe0xk:ét-N;ÅØ*­´IE/9Ë%7„&DÖÍs•. ÃÜQþ´h?ò[h$Iz©[X€¸•ÐjµZ­6((¨oß¾N§Ófµî?pðdff^~ÞÚ¥KÊË*yqññR¹\¤ñõÕúú‡ÅD Ïs¼!,ÔG¯'IòªI ‰TV“éü™“”„IZM¦‚ì³v›­²¸ÄX]]p>Ïl6‡„ÇEFüýîî×w΋óñõ•2R¥RÙJMÏãÕW_óóâããÅ-]ºt)))µJ  ¨¨H”Ç à @hhh°g­Ð,í€h @&“5²XÊK’×&“éòói\Äà;;;<<<44´[·n3fÌèÑ£‡L.S)UʦŠâí§Nš2}zÓYŸÜ“e¼¼(šö¦ЦA]ö;„?‘¼Î13R*@â’*;¥¿^ˆˆäÜn‹Ëit»KòòŽ~üñK3g¾ÿî»ãï¹çF.­||||||BBCî½ï>•ÝFºkqDÒoå?;·¶wH¯ìZ¥kI?‹iÎè¾ïôtò$ÇóçƒÃ¸">ú½×OÍxQg³ªHR0ξðzÏwf—õê_ß੽zNy¨pÜÃ5±ñËG?ôȈÔ_ú>{¡è¹ÿ»}cÓÊÝåsçùeü5;ñ/ŠðeïüÊs!ëvþM§S¶õJÎÿÔ^^j^¨š­Âbca0à‡•P(˜’B½¿ÿŽ'=Ú P«ár`÷.x{#$ Lõ8…5¿`ø‚ !!ˆ‰ÃÏ«¡R!) 4‹`ÛoHí½GIYS$Ù>'!·û?åe°YAQ£ ú(ï–ë·;²©ÞŠ!Ûj £(}Óˆ¬›ãKY€J"‘µãÅ¥›"ÛëMÓ¯à ÆsDz,DZf³åôéÓ§³¤¤¤¼¢¢âdÆöVE‘dqIIUU5=¹Ì^Je\\Ëq<Ïë´Úĸ8RÙwè`]\lœV§¥HJ"‘)¥ée¶(7 åååâ‹F¢)‘H<+½XŽWÀõÕ›½QPPÐ(*$“¨y*Q4&€_û}977·Yç°Ûíï½ûžÈb§Núî»ï6þ7].—ÃáhvôËÏüÆ!“ÉD1²€€€¾}ûŠù²,ÇäTVVåååýºåW’ ÅÚók´™¥(*&&F.—sÖ©S§qãÆi4šN:I$Š¢hš–J¥íÜoî'Ÿ|¾l™sü&4L)•R Ót(’›‘OÕ\.š–0ŒD©”‚VÇvK2ÖÕNýtѿ׭[¾x±ºMç ¹¢!èÇ-ÈäsËó¤Ë¹à|~UEEIQÑ;¹9™••>ûL"‘8œÎNgñN—eíoà8$ÉóxŠRY­Î•ëÜ ÂËjµmÚC(q:­4Zk·o ‹û6%åÙÄÎ:&>.N ák©L&‡ƒÖéÚõÈhšžõ¯åA«4»«Ëåxü |ý>YØ3àrÁ`ÀÈXúMCŽƒ¯/î‡_Vãý÷ P4ÄYív$%cÈÈ—† ‰´aX¼_~qvÍq0›¡Vcøðæ‡@’à8Ï3}zð¥8B»B‘Ù<+ë "H£y½9Pïr„wÓDX'ǹí6rŠd:ˆl:p`ƳêÙß_&.s<'ðB£„'Ïñ}_‚ ( Õp7#JB ( E¤˜ìئ—r­¸ºBÓ‡ÍNø¦Jô_ItÌívÿðã~ø¡R©|çw&Mš¤kIøâ–}·EyDý|ýxžþ<ÀåeaWAE‰ÏV’$IŠG‹˜{S®á& ##cÞâÅÞ¯½¡”É@Q #êvå6ZÅJ$4MÓ …0í™u ~óÍ7OM™ríZ×?µÇ»~þz1‘šã9žãyžÿ¿Ç hékñdü€š ’’PI’âœíû EG öêJ¥‹-ztúô§OcÈ.…f/ý/BB0}Žþ½¨ªÂ°4 Ö ¨å©É•š‚À9‚;ÀqèÜ}û!.JäZèÜ/ÎDf&~ÛÚ°íÿAL ôO/ ŽGQ~Xùúùûîvø“¯v:??wõFäÈ€€á!ÁWÙAZˆ­²,Š€´iþËó`9*ZÒî®ü&£ƒÈv -Ñær í oýã­_xQ„ÂÂBÑD //¯W¯^Z­væÌ™Ó¦M ~ä‘G–/_^WWg6›Å5úÚÚÚfÞBÛ¶mk–ñ)k» òÑcG//¼ãy~Ïž=S§L•ÉdóæÍ›2eJ³¨dLLÌĉW­ZURZÒè«W]]]_‹L×Dbñ??„®Šï¿ÿÞXVæ£R‚¿ÌWSI@¸fj+;1pÖÊ.Ñ$¸ÖbKA@*•0×oÞ¸qò£“n ‘mŠFºÙöƒèèèíkÖ,[±â *\.>±3ºvEhhƒïAÀÏii2¤ÁÔ@"·7~Š‚ëR9/I", ÁÁ;¶¡EµàÔEQˆ‰Ad$ÄülÑÆ¶Þ ¸\(*Bv6²2#•Ê%K–Ü•šÒº®ömœ¨ªþ×Ùs ˆ0ö¾¨¨ËU·.‡A&óŒ,à°ƒ$‚5ÝýiI’¹óÜ_îôgF:p]HOK§iÚáp¬X±bÆŒ4MoݺÕh4êõúAƒÐétƒZ¾|ù¶mÛ/^üÌ3Ïøê«¯D—×F´U"ïNž<Ïó¼øÈoQ«¡¼¼|øðáR©ôý÷ߟ2eŠ(½Ùø)I’âBÿªU«>ZðQP`аaÃl6ÛÂ… Oœ8Ñ&§Úk„V«…FS´xqè_'A.÷T2"(Êš“]þê+ÒC^š%Øí­uDîÚZË™3µ_‹E>xˆWß¾ª.]›H#„àrÙ‹.˜÷ï·lܵZÚ;EÕ«—*&VâåÕ¢=}Å/?£°0º_? Õñø¸CA„\.ŸòØcMúkVÖéµ6¬X»öB~>î C@ø+ .Ÿ«‹¬´õ¹«8Eš+‚ãPT„Š \¸À”–••ÑÑÑc‡¿÷ï³»uë*¡$ísæSb±¼w*N'æþ°Ð´ ÀV›/ù™µ°>Ö¸HÒts•Ó4í}3«DÚ':îD¸Óq]¼ +W®|衇Þxã×^{ EQƒáåW^kÿ¥RéøqãÏÏ>?oÞ¼W^yå•W^¡(jòäÉ1117^û9&Ož|âĉ£G¦¤¤Ìš5ë•W^iѨ–ã¸-[¶pg³Ùf̘1cÆ ÏOÿú׿.[¶L.—?øàƒ›7oÞ¾}ûˆ#ÄK{æ™góòòÚüÌ;p%Î]Ý>ºóÏN“öNÑöë§ì”(ð>„¿¿‹’8Àóðö†ÁŽƒ\H¥-þ 6**Àq ”–Âj/xU–Ã媫ÜfspLL·ÄÄwéÕ»wBB‚Z­¾ÙümËþz¡hgþyPÔ?¿§:'¶®‘Wí°‹‚ Z©´‰³×Úó€S,÷¤(Ù·¨uÇ]p:ЩTªR©®wé|üøñÇŽ[½zõ?ÿùO//¯™3g>ÜSúJ§Ó½üÊËIIIß}÷]ffæsÏ=÷ÄO¼ñÆ"”\9sËÏÏÏápøøøxn¤HJ”dÓI)ªá­¸ŸœœüöÛo¿óÎ;gÏžýå[ì™ã¸uëÖ]IÚ]q)5P¯×öÙg6nøê˯¼½½~øá§Ÿ~ºªªªººM‹À:psA‘è?½{;ÿ½â»å(-%º'{'&JccI1/Pààv ‚ DŠ?B5F£ÑˆsÓºº:$IÞz…ÿ ˆ5ìöÖ×g[B§NÞxã7ÞxãJ ¼Ô^'Nœ8qbã– ,X° õn%<'þE 8Ðó­L&9räÈ‘#[ï™a˜õë×·ÞFDddäs3ž{nÆs[¾ÿþûkÙ±m R) ÂàÁ°Ù„ÌLcv6¶ý†¢"l^^ùÊï%Z-íåÅK5Z^àI¢a¦A0ŒùäI¾¢B;õ)u·$‚"y§€<4T;õ©ºÅ‹,½{Ëy·Ë’™‰ÚZßY/ËBCëNœNWU5+ðP«+^ z=¢¢…é3àëׂÜR:pe‰Š.iéé·û\n ÇX?pç.¸]Hž }4¶e[(O”ZmàxJeKÔhVæây“X@,‘h˜6Z-¡$È=‹ç·ðQBº%!&z}óa‰ÓžÆå&ä$‰qãޏ¸aµ6E‘½n˜Íf±Ö;&&&''§Å6¿þúëøqãüöÛoiiiWêÊÇÇG¤žž4‡Ãñçê~zöì)š0Õ××{yy±,+ž§Z­nQ‚´2™L­V{òÂt }AÌc–JÑ»7RR!‘ /sÞá Êj4bï”–þÑX¯‡F žƒ>€ÈËǙΜ±–”xHX‡<_¾xh‹òrp\Õ??ª’J ©~þð÷G|ärL˜/o<8:Xl:p]€ ›íåÃG`¬M z/¥÷U÷ ÒbÏV)ÉfÅ^-ÁÍqu.—¸>ô¡hxhŠ‚·7k*H%%ÈÉÇáþз/dò?¸)MƒãpylnÓF?éé-0ÝC‘½~\T­˜l5–A´®Ò¿ÿšššÆ­Ûí...Þ¸qc³ÆkÄçÓP9JtéÒ@``kIåw2H’¤iÚym¦¸èÀíÏ78ˆpZohµ¨«ƒŸH6Ìf$tBïÞJQ_/dÀÉ\³LD1?D¡À}a2aÓ&جxó-P’?T‚€Ý»pè L&¨ÕmþÔé@îXÜîÏÏœY—“ ©4^£Ý£»ß5D©<&RÍ‚ Ô:"¹”7e«Ž+²ÚÒ´¯¬­‹½RSñìtØ o ; °f-~úR)RS›Wì}øQ žGY)~Û†M…¨è+9Yü9tÙÛ‰;w6¾aóæÍÓ§O—ÉdŽÈ6EQ§Nºñ~nn·›ãXqfÇñ¼Óá \VpÙ MÓ4->{I’dšÊ>·!d2™N§kßRZ„Ëí «Ap:­XÔ’$ÉHqm ˆ[ u›qö,X/¼ˆ°0 ðËÏ8t©© ‡L†½{pü8ô‡¿¾ÉB^]Ö­Å… ˆŒBY)²Ï!:ŒvË //俢²Á!@û"².—KÌÈâxÎåtµ>*¤R©˜guGŒŠ´'p<¿­¸äíÃGÀ0+^NêÖOMÙ½V«•ç!2¹¬Y[½Û©kÊVyAp <5I*Û\@—çápÂí‘,KRˆ‹Çc“ñÍü¼ºAÖ×ó>ãr¢Ùi 5ûöàÐ!ÄÆuÙ6†Ùl®©©q¹\r¹Ü[ã}¹¬Óé4õõõ …B£ÑPäuŒ‚$A0™LÕÕÕljJ™yyyâ9**êøñããÇŸ““#•JÃÂÂZéÙív›L¦ÚºZZB{{{kµÚf#^1Ó€¢¨¨¨(³Ù\ZZÊ0ŒÁ`Pxè~³,+j…úùùµ(-xÞf·;N—Ëåp:8Ñ©‰ežÏË?_W[GRI&³¹ð‡ÓI\™È’¤÷óãA¹\-•JI‚0 E’ ÃȤRF*U*•7X~$‘HªªªÜnw;·zúßÏóv»Ýf³‰Cˆã87ëæX.;;Ûjµ’$ér¹ L&S‹…É‚ ¨Tªˆˆ™L&'&&JeR’ †!)R!WÈä2™LÆÐ7kRt«aĽ÷!2 nx‘¸ç^|¶ÐëAéÃqê²²¢lÐðâx8E$Ïl3ˆ[nky˲v»Ýf·¹œ.qT°ët8srsvEQ6›­°°Ðjµ¶¸» ÞÞÞ4M ‚@ÓtçÎEG†a(ŠR(2™L.—wHwàfàduͽ»vƒ¢ ¡gÇÅ^Kj¬ˆ¬Úºr–ê­¡È&w¼Æ$ßô7ëd¹2»€š¢Ô·âY&€uCoÀØqøøŸÈ;Ÿ«È¨á’áH½±ÍK¾îÜ0A<ÏŸ?þÇ|÷ÝwGxxøäÉ“ï½÷ÞøøøÆ”€ººº7®ZµjÆ ÑÑÑ>úèƒ>xíG±ÛìGŽY¹råÇ ࡇš8qâСCÅ*±˜˜†‘mµY{öì)¾>wî\\\\bbbVVÖ•ºµX,{öìY½zõÒ¥Kiš~üñÇ_{í5®é Çqqqq†q:§NêׯI’K–,yôÑG›?~úôéÛ¶m[±bŃ>xÔçyó%8ŽªêêœÜÜÒ²²ªêš ¥¥õ‹Ùd±Úmø°¨(/oÀó‚ ¨½¼B#"Ô2™på\oçOUý~˜ H‚ [~nDz Íh´©Tjðó Hˆóóó“)ä …B­R«½Ô‚¦¨”*¥R™ŸŸ/~W¸e°ÛíF£ÑbµØ¬6±º9''§´´´¼¼Üd2™Íf’"##" Ïó Ä……i4še‚°Z­Û¶m³ÛíA°,›ŸŸït:IŠÔûëU*U\\\XXXxxxLLŒL&S*•ÞÞÞê«·kèýŠF8·Ðëqö  €Ú ÁÁHè„õëÀqˆŠjH?(*¶ßàÊQÌÛ «Õj¬7Z-V»Ý^XXXXX˜››[RRrñâE“ÉdµZ¥Rihh¨\.çy^.—‡„„x{{_iT˜ÍæM›6‰.zn·;'7‡çxš¦õz½Z­Ž  —ËåJ•Rã­Q¶©ïnîXœ®­°g/œP’ÃÃÞèÙãÚ÷=k4ºX‚0ÀÏ—n8kÐØdMS Ü<Þé –H¼¥·jºÎ±†¯/òó‘Üž&žº¿"ìv@Ï^mŽÅKd $YXX8sæÌõë×§¤¦øûùWTT¼ùæ›7n\ºtiBBI’.·káÂ…ÿøÇ? 4H&“mظáܹs×~œ7–——Æ1cÆTUW­\¹råÊ•?üðÃ=÷ÜCÓ´ŸŸ_UUEQJ2bĈ-[¶Édiii Wê“eÙŸVý4cú «ÕÚ³gO½^æÌ™¿¿ö÷üüüÛ‹9²]»v2eÊ—_~ùÙgŸ=ðÀ¢ ?ÇqܶmÛ}÷ÝwWß»®Êb].WYyYMuMyyù™³gOçäœË;_k4j4š¨Øø€àˆýÆOP{k|üüõ<Ï ‚ÇÔQxž¿ªpIR𘆊Ö>6‹¥¨°Àa³W]¬(.(8š›¿rݦښ*/µWDhH§èèÄN aa¡>>>z½áJj—Ã××W¯×gffvÙ[«ÕZ^^^g4fž:uìØ±ÜÜÜ¢¢"__ßààà˜˜˜ÁƒètºÀ @ày¾‘£ðßZ©+Æš}$I$aª7•”–XÌ–óçÏŸ;wnëÖ­ÅÅÅ~~~111III]ºtÑôÁAÁ×>ZÚ)J8/e­A€B …§OÃl†!rî¿?¯ÆÏ«ø.E!0³^ÆìW[(Åh·JcËl6WTTÔÖÖfdd?~<77·¼¼Ü`0„††FGGwíÚUoÐûúøúëýq¥æúGAâýÍh4›L¦¼¼¼cÇŽ­Y³¦¢¢Â`0ÄÆÆ&''ÇÇÇ †   ÿîyÎ-v;/‹™u³ àpºl6ÛUÇ¡P)—+d Íó‚R¥bhš‘JoW¬ýèŪÑ;w]¬­Iv÷õ}7¥·ôz7ÎÔÕcÁóÝu:Ú#xÉ B©¸þ@AMí”Ý<ïp¹È)RyËVyj/ÈåÈËƒÛ Ïd‡üü&D–ãPV†Ã‡Ñ«7:w­tÛw(‘%)ÊXo\»víúõëŸzê©7ß|Ó`0”••M˜0áðáÃß~ûíìÙ³½½½ssr?úè#3fÌxgÎ;^j/“É4kÖ¬k?Pnnî¼yó’““\¸paüøñ'NœX²dIZZšç:>Ã0¿þú«¸lÚ¥K—Ö•’JJJ–~³ÔjµŽ?þƒ>ú .\½ju+{)Šx`É’%Õ5Õû÷ï6l€‹/îß¿À¸qãB‚CZÙÝn·9söÌ™³ÿÙ»÷ÔÙsr•2¾sçÎ}Ü7õ™àˆp©TÆsœ òVžã¯æ6µ6%"4<ߥ‹Hm ’øâ‚ÂóçÎåœÉúæ§ŸËËK#CBú§¦¤ôìÙ)1ñZ2%üýý£££=zß}÷µáÙvàrØl¶ÜÜÜýû÷ïÚµ+'''22²{÷îýû÷ïÒ¥ MÓ¼A°˜-7~DŠ¢"Â#‚èÞ½»ÈcAÈÎÉÎËÍ;zôèwß}§Ñh†~×]wÅÅÅý鼚Û¡%÷ZÏ-‹À <9gÎàÐïàÜ811 •[Ý“Ás ¨†Z®æå\8 ©´Í…ršÁl6çææîÝ»w×®] IIIéééb¡ª8ÚvT0 MDïÞ½ ‚ (ÊívŸ={6//o÷îÝK–,Ñëõiéi©)©ñññÂ…7<Ï[Ìf›ÕZc4Ú,ŽeGnAÓå:sþ|½Å‚(¬®>R\Ì_M.ƒ•”é¦Ó¹X6!2Rçååïël0P4-aÆ[­öR)•Ê+—h· `oiÙ ={cH2F«{«Gräõ” êëÁ² É­VÒ”S—xm³Ô–ãàr‚ T‰îÖå‚ `H$¨(ücuHļ¹-4÷öÆ@¡ìˆÈ¶ $”¤èBщ“' <È`0 œ8qbtt´T*eYÀÚµkÅe©^xAÌõòòzõÕW¿øâ‹Æ®¬Vk3O½ãDpÚ´i"‹æçç`Û¶m‡Ma27(d‰‡nØh2effz6KHH8pàÀ… L:µ19áé§Ÿ^²dI³Æž (ª[·nÆ ÛºuëÚµkLQÔ¹ìs«V­ LNNnE`áBQÑömÛ–­úY­Ó 1òñWfûøùsÇó<Dzœ›µºÌWÚ·­ ‚˜;Ñì‘ëo0‚‚¤¥Q‰Íf;yäðÞíÛܰaBzú˜1cºtîÜz·J¥2&&fß¾}&³éòôè[»Ý~üøqA¢££õÕ<ÏËåò¤¤$ñäp8.^¼XUUåp8¼¼¼|}}}}}Û‚oeeåæ_7ÿøÃZ­vذaÿûßår¹ÛíæyÞív»ZÔܾa4ŽÏßTDxDtTôèÑ£yž?{öìæÍ›7nÜ8jÔ¨‰'†‡‡ßŒÓ¸)àQçp,8 @Q ©=z w °,8çóÀß •"%™§`³‚f.qV, “ ‰‰ð÷¿©AÙÒ²Ò ë7üôÓO!!!w½»w¯Þ‰„ã8Ñ‚î&´±8¬qT›0~üx–e3337oÞ¼iã¦ÑcFOž<ùvÝþWát:ËËʪª«/æ–•m?s6¿¸n7hA H„†Rr9A«0ðê)•!¸Ý••ûÍf‚‘²ÇOÀd‚©Õµ8¨Õýcc»…†FuKHPëtþ~¾m^FÌ¿ܵ6+¢›Ÿÿû½zŽ ¾®NªÎ‡‚¥J'kNIÝ—~TÓï„»ä\ ¥(æV¦¶_éþœì‘Ð €‡Õ» ‡ Ô¶3ä;”ÈÒ•““³fÍž÷©™3gz6ûî»ïDÆéëëÛ¸Ñó5€‚‚‚~ýúyn™6mÚý÷ß/¾Öh›,á5¦±^£™Þ™3gšu¾m۶Çð´Q`æªË(*•êغuëò òƒƒ‚÷îÙ[__?pàÀV ËLfÓoýÃFR¯ÌÁ²DzVK„FÚâcOœ ‘œÚ'eÀ@³±îÛÏ?›1󥥟vUv°}Ûö{î¹çæŸo °X,'N,++{öÙg.\ؘàQ[[ûüóϯY³føðáëÖ­#I²¨¨hÓ¦MÛ·o‡®N§›0aBß~}G¥¿¶zØÛ·ÛýÅ_dffNŸ>=22’ã8–e¯T£s³!ñuLLÌÌ™3«««¿þú뜜œ¹sç6³U»-¸&Ïd«µµÐêb”UU¨®FÏ^ÐjÅE¨¯Gd$¤²Å.±ÂRLS …Àƒ¢ ÕÂfƒÉ½¾¡EÂnG]¼¼Á07ÈÚl¶~ôÏÒÒÒÙ³g±,˲¬»Y\ç–@œðˆ£‚ ˆÄÄÄäääÒÒÒ¯¾úÊ×Ç÷ž{î‘ßyæõ7ee¥ùçóOŸ9³õÈ‘_Ïžupƒàï¯:4,0ˆÖh@Q K ‚@×šÏ­ŽŒj ¼â-” @p¹U3 ö–•!ë ¾þšñòº·K—¡½zÅÇÇÇÇÅù4} ÿi¸y~sQÑø]{à°ƒ  復ô½þÛòéÚºJ–… ö÷—\FIk/‰Ez7eá¼ €eq‹Y,аž£T6ψ}fz“-â¢!A©RÍ;÷Ô©Siii*•Êf³Í|ñÅ={öLœ8ñÓO?UÈO>ùäÚµkm6ÛæÍ›zè!š¦]n×Ï?ÿìÙUPPТE‹šõ/R?Ï€nddä廜®ï¿ÿ>##cÇŽ]ºt‹TvîÜYYYyÕΠŀD€úúzŠ¢zôèÑúâ»V£Iî×wßîÝ…çÏÇ&$B‚ƒBÂü Q¿Œç8ào¯%I’ ‚$)’$%’ºêê²â¢ò’ₜÜìì3añ ­kñ6"**ªW¯^¿yþ ­ (0hâĉóçÏÿ÷¿ÿ=iÒ$…BQQQ±lÙ2¥R9nÜ8‘¡6j–eeeýûßÿîß¿¿^¯Ÿ>}ú­?Ûë…T*íÚµë™3gœNgllldddHHˆJ¥£_"ƒ¹5g"’$IŠt»Ü…¹9¹§OŸNJJjy<)5uÙž=ˆ‹Cp0$ô&±¸¤œe@Joü°¿n©}0l4ÚK ˜p¶oæóM DFáðGu—L†ôáìډ߶6lŒ‰Á¸ñð÷¿Äb P$‚€‹‘›;Èßoü˜17øKñR{õèÑãèÑ£&“)&&&***(8X©PÜìQñì³Ï8yòdãl\E$á°;þŸ½ëŽ«ªîÃÏwoÆeoQpkj¦™+WŽ45µ²RKÍL+ËÒJ{_µ^Í2SKËܹµrp ¦ˆ2.{Ý —;Îxÿ8H¨ˆÈP+ž?øpgüÎåwÎyÎw< û•˜˜"“7ÕÔ‹eë¶m3—,ñ|ï}©³ž·ÛøGÖãXàÀ0R—À¡ÃJR’GMŸ~P§k×¾ýƒîÊÎqçrr—ÄÅm¾qŠ´°][×zÔ¢$—ÁØA-5Új"²ÂkI¨oO– “™ î®Fh (0vüñX¾¾ éûEÏ €‡,л4lÍÒ¿”Ȳ ëææÖ­G÷óçÏ/^¼øÔ©S~~~ƒáرcááá³gÏ a;tèðþûïÏž=ûÅ_Ü´i“§§gAAAm2ûµ,­ -zþùç7lØ””4gΜ‘#G }»w£eË–o¾ùæÌ™3çÏŸöìY___“ÉD’¤ÉtÿŽ+Š¢"ÛDNš4é³Ï>+,,ìØ±ãøñãkެp,ëìæ6ä¥W2’o¤^Kºt1¶$?g9€ `¿àæ:''߀@Ža9Žãø &žã€Ûä“ê’¢ˆ[¿¨ #•k0ädÒSSR®]ËHI¶Ù¥ƒÖÕÛÛ£YÀS#Gn_ûW»£SõÌ3Ï,X°`ß¾}}ûö}$¢-¯¼òÊâŋϜ9³k÷®¡C†nÚ´);;»yóæ#GV Y·nݬY³Îž=;~üøàààfÍš…‡‡÷ë×/::ºf3äG ŽãTjUß~} ‚ˆ»wþüù’’•Jâîîîææ•ÊJÂ,âØzñ’"I D~~~VVVbbbRRRnn®B¡ðððhÙ²eTTÔ‘£GŸ<Ê/¿òÛïßîØ±s×Nxx" ~~ÐêÀóððÀÔiP©àç)S‘•†£# ý•­cÃÓ……((ÇÁÙNNJ«hð h7‡·7 PXR)<< R A$sÒ³pó&â®¶ôtŸÖ¿ÿ~ý„Ùú€eYF3bĈÒÒÒøøø˜˜£Ñ¨Õjƒƒƒ›7oîæææââƒoðYA’$MÓ"‘H`®à‘››k0„YQXX¨V«ÝÝÝ###[·n}ñâÅzñï‹ìììõ6xzzލG½M‰±äÇ  ÕJÁ²ÕWªÔAPh<–å¹ê÷FR$AÑI’‚ØÅ=V XLÊK ¶lÙò DöhVöº„ø5)7a³‚e}õ.ŸD„ ¨O•jžÅ’^V–%t. ùÝ4"§Â'ö6"Ëñ|Í ‚M+#C’Vqº&”›‘…ßDZ£xn8¼¼îlÈKî´S±Zp-›7ÁÁ]»69{5xŽƒHÔ<¤ÅgŸ}¶téÒŽ={~¹tiÁ0gΜþÇ· تD"yyòd™L¶uëÖñS§N}ñÅaC‡N~õÕ¡ãÇ?×§O iëÊÒ‚;ÒRFc…4pSÎËËí0‰D2mÚ4£Ñ¸k×®O>ù$<"ü^DV$ 4H$mÙ²eË–-† 6oÞ¼ƒV”=Ü~ÙæææVý¨T*»wïþÙgŸèرcm’éËÒ´¨UÛvÁá­ó23s ™%E…9†Ì¸Ë—O;ÂXíx…JãéãíîãC„VçàâáAQ”»·\&«`“_Õ ˆ¿¦>ÏßQzL ¢`Ÿ ÀØ™¼ì,S‰±¼Üœ‘a·Y³32³2Ò‹ 8Ž£Äb…Z£uvnÕ¹‹ÖÁÁÉÕÕÅË[¡Pp܃Et´ZíèÑ£W¬XáààÐ¥K—ÚoØPðõõ0aÂêÕ«ÿ÷åÿºuë¶råJ…B1iÒ¤ÊfD±HܹsçU«VÅÅÅ%%%ÅÄÄìÞ½{÷îÝœ1sFÿþýå2y͇x„àXND‹š‡„øúú2 999yyy†,C\\œÅbaÆÇÇÇÍÍM«Õ* ///Š¢|}}v.˜Üàðà+-jIŠLIN±Ùl¹¹¹EEEeee7oÞä8N"‘hµZ½^ê¬wöôðÔêt)ÉÉlCKÖr™¼ÿþ̓ƒ_½qãÂåË;Ï;}ô( ž^ðð€›œœ@Ópp„“3€ ›.ž«xxp<Àƒe ‘ÂÓ ^Þ„Çÿ-KTH5 —¡J ­ATÅ%i± ? 2‘› –í>e޻͚ õá8Ž¦éˆˆˆ€€€ŒŒŒ¼¼¼ÜÜÜ”””?ÿü“çy’$ÝÝÝU*•R©tww‰DÞÞÞ‚Œ€;f^ø(¼¹@x£æùJ‹ZIIIDZ,»oß>“Éd0rssY–¥(J¥R¹¹¹µiÓF¯×»»»kµÚ¸¸¸G^óa*5Ž9“¶}GhË–¡÷“¹(’rtsCb¢aõ·ªÎåAAE,ÃqÕéÇÝ$I0efóµÄâ'!©Zµ’‡„ˆõ.|ÕZg‚Ç•¥¥•œ>ÍääÒŽÒÀ@E³f"­@UF$(аZM/=ÊéõµÌ £q]Bâæ›i …à8ðüˆàài­BÛ×»ãöBAAºÍžïr—ð–òVEݬP‡ Úý‡å+PYžA0›‘Ÿœô~mÛ‚ÝI;V¯º“ÚšÍÈÈ@~>F»;ôýð_Jd!“aÿ^2=µõ«S,Yâ±fU·Ó-áÞºOæÃÉîðúDí’&Nì=thðGs›9ìáàèèàüŸ‡Îž•ß;~Ó¾CûC‡hzýꫯL¥&ŽŽŽ?ngìDm#Ã#—,Yòæô7Å"±¿¿ ÃW(ƒ j׾ݴiÓÄb±‡‡‡‡‡ÇÎ;KËJ´$I cˆo«Â&I²CLJ¢HÊÇǧ–ÑGžçm6AÀÕÇÛÃÏa**.**0Z,–RS‰©¸¤0'ç\L Ïsöòrsi)Ïó¬ÍÏ‹%½«›X"ž+"š¶ÚleeeÖr³H,–Ë2¥’eìË sŸå¸ü¼Ü2£‘@€ (J,¢E"¹JER”ZçàÞ,¨¹ƒN©VËdr¥Z£vpÐ::‘Á±˱6›$øzŸ0aÂ?ü`±Xžzê©ݼž IrÔ¨Q«W¯>}úô†õRSS½½½ïè=¢i:<<<<<Üh2æçågggÏ;÷È‘#³ÞšÚ2´eË–yÌžçí6MÑ~~~V«µ°°°°°°¬¬Ìjµfdd¤§§ß¸qƒçùâââ²²2­V+ä|e2™J¥ºo¸T$•––––– s,//O*•jµZAÐC«ÕvéÒE©TÊårNçàà T*…R]›ÕÚ yƒG³  fAA½z÷c0äåææææÆ%%Å$$\ŽM,,d­h´Ë¡Ö@H;;C*ÇA­†J]Á¬p±ó<ÊJQT‚à / »Å%°ÛPR»M!‹Œ%"Ú„¦wqM½~íFlìö¿´oß^ëèà¢o0‰ áÆ"‰ƒ‚‚¬VkAAÁ©S§ÞwÅ&“£Y3R*•Ô®Í÷ºÑ¸ùú½é'òó`³e¡P.l󬟯OC8hÍ4ä——ƒç{èïnçây^P-  ÂQ"½íªÿ±«…p}ãıۖ»º#8ÏôEp0ŠÛX¬ -zúô»ò÷G«0„†¢Y3dÚ þ[‰¬ÝÎ…G€³cÕJOš†Z|ñ ºuÃ’ÅÁ»3±ì¼ûzõà C?í žú†=¶à=¬Ùˆáý1î•îß}…«ïµ{½Kµ÷úJZwHk‰E €€€€ÚœX,öõñõõñ­\]u’$»wë^í¶j•ú^ª<–aY°dJ…\­"}ýoq,eFc™É6«­Ü\Êó¼ÅlfYŽ KyyQn®Ýf#ЦNì?{û…ARÔè©o¨„š‚"}CCUZ-ÇrIJ$‘HDÑ´L¡ )R¦T*•*‰LNR¤yäxŽaì¨w²¢mÛ¶©dÕ7«¶oß>iÒ¤Ö­[×w‚èèèž={þöÛo‹-ªÜÜÜ*ÿš““óÍ7ßÄÇÇGFFN:Õßßßßß_ÈðV$Iÿày^ÈW$©×ë]\\„:¼šÍæÕ«W9r¤ê& …â…^P(5„ÇÄbñõë×wíÚuÇ: …â£>òôôT©Tjµš ˆŠ<5ÇUöJ>ªªŒÔ›©_.ûâÆõë|÷tŠ¢DER”¹¼,+Ó–’šs/«¹R18@*…T|»Žãí°Ø`1Ë¢º’¤2 ¢m»þƒ‡†…‹%’æ‘Qy]žHKN>u÷¤—üýý{÷îýôÓO?ÈéÖ„ª³âĉ»wïNJJ|#9#=ÃÏÏoÊ”)b±˜a³Ù,4 ÆÊø“X,NIIÙ¿ÿÝ´cÆŒéÓ§ÊR*•¿þú+EQmÛµ÷þ¼’’çÏŸ7›Í™™™c^SÉ_ë,óÏ‚ šµh©sr\úͪé/¿z$áýöÃC£AÛvps³ååÙÒÒ‹¯\Y­/oÚÍMâç'÷ð¤´ZARCäêJrœéÚ5ãúò6or9Š3­™™Ö´4&?Ï.—C£Ct[89ÁÑ™†û¾´œÎÍÝvýÆñœÜ˜¢BX­B|wl˖ヂںº4ˆ†€…ãÎåäÂnÏ?åî.«.Æ”o³ ªVaÏ3·Þòí‹eáé‰3«ù“Z ¥r9Hê6˰˜õö]+IB£\…$ÑàÙÿV"˲psE—®X¿ƾC&>xm;að0„´Ää±ð< W y/¿^OC&ÃàÞxk:t„®.Êÿ$p®‚Ô (Jãè¨ur‚B­Hç‚a˜ò²2Žee Å/߯½szØ«¯µnÛ^©Õ”—\‰=ÿãKKŒ%ÏŽ›@‰(€'@Jår±¤BƲBRà«Ôà2 Sæz7ÂÃÂg̘qñâÅÅ‹F¥RùÊ+¯têÔé!(s©TªÑ£GÿöÛo999&L¨ú4U©Unnnï¿ÿþO?ý´}ûvwww³Ù¼gÏ“'Oöñ®U[ÛãƒJ·B tõêÕÇíµ×_’‚‚¡‚€`aPí®‚(**:uêTHHÈ€<==)Š*//ÿí·ßöìÙsóæÍÈÈH’$JK¤¡pá|ì•””ègúiùZˆe H’")’$nUæÜÒÚ¼sU¸ÏÉjXî­ËUØ…Z«sñô")ÒfµÊr¿æ!^-Z·ÉÏÉNºòçÚŸ7­X¾¼[·n£ÇŒÑëõµ8ÝûC&“mذaÙ²ecÇ}饗 Eqqqllì–-[Fõ×ùñ¼ÕjµZ­•eEEE±±±ôóó£(Êb±=zTP\ŽŠŠ’ÉdÂ; I’,Ë®ùnMŸ>}"##•Je~~þî=»×¬Yãáá1`àÀòFóbøÛAøÆZE·gíìâåËßž2¥EÝÒ>‘¾~ðòB@L&»ÉdÏÊBr2.]¤Ìf’åHOO^"¡µ:‰FMò¼Äß_H H´º²kר¸8Ç7ÞÔuïAH¥‚ܬ4 0ÛRž¿c‡<¸9)—Ûss‹ãsr¤½zóv»-3Ó’•eÏÉÍÆÄÆf[­¼£J¸¹!, Ôjhµ Ô(ývÍh<žq&'çܼë¥&Øíày0L¨—÷a­:¹¹ºÊ¬ ë|~þµ²2pœÞYï¥V‘Õ TòT¶ }´ó|¥hMCÚzñ+ТEu^9ø»¼xWæÜzK©Ÿ&iµø·Y6;t:<ÿ¨ÕP«1}6<¼ ‘ ¢5f̓ Ø®=æ|ŒÈ(èÚ r¢¢ }ÇG7ôÇ<¾Æª©\NQt~vÖÍ[½8aØø ..E3Œ=$2R©Tþ¼ê맇 çGBž·Y–>ËíP«Õ'Nœ8w¯¯¯¯¯‡§ÇC Ú <È7<¼[ëÖ:t¿å '@.“?7ü9ggç²²¼¢¢·_À÷Û¶yêõÍýý[í­Ú#11ñ§Ÿ~š}zæÌ™={ö”J¥‚¤†··÷‰'Ö­[ׯÞ-ö5 ² óAQVVæäêѱ£³Þ¥ž‚ÓžçY–Z8Žç8;8¸èÝݼŠ;uÎÎ4$œ?7fÌ'‡qãÇ?Õ«W}GQTJJÊÆÇ?dȵZMQÃ0-Z´J¥›7onÛ¶­à¦!¬/4lUþsøðáW_}µOŸ>‚Ïó.\رcÇ!C„ƒÊÃŒ;V¡PGñññÑ¢_~ù%*:ÊÉÑ©þmužxž'I"4º-A’ —,;ãÍê˜M-vTÑߣÓÁÁ<??X,°XX›MKù³HL´9:šÝÝ¡wÁ™ÂnÏ“ WT hó¦’ýû*ÈI‚e9ƒ3›o¾ó6A’® &SYFzYa!:¼½1a"6ýÌëÑ­ÔjH¥J+ÆsëfB²[„,Ùh42ÌÙܼ„ââk…E7KK/›Í°YÁ0à8ÐtwßWšDº¸ø©ªçšuÆ1CVjy98n„·—ú÷+ÇP’dUÍñ¼Uxq%p·bWýÀãAßÿÚ~¶6øYU Ö›W¹>«ÖEV©ˆº-}߄ڃçx‚ÆÍÄ„ä«WÞûr¹g` Ðþ%T¡R÷5ú›…'\¼~_gíFÅ™3gV|µ""þÅñ6GŠBVV˶ Ex8ŠŠpàtŽx¦/(ƒ¢À0سb1œœ —ƒåîN|Ûiê=™bý/;ŽÏµÙl<Ÿlµ‚aÀØÁ²”×ÁñM?ßA>>~Z«LÖà*W ÏŸÍɆÕ ¯§§ªº $Y, ÞÞìETYç_ˆ=‘mÂC„H,Ù¿e DzO{M"“W-”a9À/߯4n|e¹ÂÃÇÁƒwîÜù˜¢¢£ªÇúV¢GŠÅ“‘Xôu«i°ã7ôéŒ9 0n8>ÿ>x#Æaî[¢çÇaëFDµoe.Ã/[Ѷ–-ÂK¯£]}Íi-‚øé§ŸpKæ³*ۧÇ÷éÓçî›Íf·Ûœišf¦¤¤¤¨¨(--íÚµk…‚¤TcB£Ñ †Æ>Êc¡V€£³ÞÕÃSïáy#!açêo 9Ùƒ¬‘‰Å‚D÷¬Y³îxo¼öìÙ3pàÀ»'˲‹E«Õ:::RŲ¬Éd***JOOOJJJII¹ûXEùûýÜå8N,ûùùÙl¶£G>Ñ­[=MH’T©T•5 ˆ‚‚‚-›7ÓugKxCƒ ‰ÌôŒ„„Ä.-Cð<-ZG’$9ç£?™÷~³fÍê}”'O`ítêŒ!C¡ÑÀbÁÍ›øéG\ˆEh(”Ê¿Î4 ð¶hŸÐª ¿Í›#6É7ЮÜ=*V^J¨T8q =ºC&»ÓË2 †¿ªt*=r•ª‘>Þ½<Ûêõ:©TÛh‰Ó¹¹—‹à8èüµš{Æzo=4ïxóý'ÿë&"Û„‡‚ Š ò$]ºTí © Õ´Z?,œ;wn÷îÝÆ ëÔ©ÓÖ’mÞßnF×VX»þ˜»OFâ»­ðòFi)&ŽÄòµpÖ£Ô„Ï?ƧK¡TaÆkhÛ žE—®P×…:®e_ò=A’ÈËűãèÐ Ï<$ އ·7”J¬]ƒ„DD€$Ñ·öïCn*˜I‚a x•Áñ°Ù`·WˆÊU ÀSh6ÛýŒ8:Gšv‰žvu Óéšk4J…B,V‰DõQ‡­ Žge_/+ǽìå©«.Ijª¼Ñ±<_f¯ð.iØj‡¿ šˆl*8†°tëW//ö®šZŠ$ì÷ð@ol”••­_¿¾{÷î;v|$†ðÀ{áéQÑøþxx@Ï^hÝ®n0j ú? Açå£ÅPÈ!•ÂÍýŒ¶ „Á6mÚTm!‡L&KOOOLL¼c¹Éd¢(Êd2-Y²äàÁƒƒ ÒëõŽŽŽz½~òäÉÅÅÅ:l©LZ·$2Çq$E‰eR©\þê•r,k·Ùî(Ê hJ$—íÛøÓöõë}Ü]÷ë·dî¥R©ÑjëY#0˵kתTª»«AD"QqqñÝÀËË‹¢i£Ñ¸jÕªíÛ·{{{÷ïßßÍÍÍÑÑÑÕÍõÙïT”½‚îGƒt$!•ÖqVسcÇ»«Ö¼>¨?Ã2{wîüæ×CˆÒâ¢7ô5wnø]Ÿ}aœýaôð4MK¤ÒʵÀeƒÂÂȱãÞ˜=ûËE‹|ýüê¾{‚Dn. èû <<Á0àyP€D‚ví°ñ'ܸV­@’ˆˆÀžÝØ»}ûBï–E¹—.aÝZõN û±¥ü…±ciŠ"’ ¤4%¦hqD블“«,ûŒ‡‡î [<Ï âVäíµv–-¶ÙC„{mûÏF‘mÂÃÃØŸèÛïâÉŒÝæ w©z— HR$³ ó¨œÍ;Ü·o߇ NpO,AT°X"‘ÍÉùð›6m:~òd«°°·¦Oˆˆ:9UÝ4++ëðáÃ_}õUNNÎÈ‘#û÷ï‡ÖÛcžçŸ{î¹õë×s<çær[ɯ`ÅÄ0ŒT*ݱcÇ ²\'Ož„~ý ÁÇbÛœ=S¡”l³A¯ÇØqXó]ýµœ@Çóž ![7œÍÍ‹3šÀóppl¦ÓÞ+ªJ°Û@wŸp…ˆÁ-+šˆlîƒl”aíLPh+•“sÌáÃÁá­e 9Çñ‚ ²RSßùÜØ©oô9êá{,¥¥¥yã7žx≻‰)Ïó$EýñÇ,ˆ……éõzá]ˆ¦é„øxKã?ïU*•ŸŸß¥?/…? b|×®]/^¸ðøøâVŵÄÄ/×®5–;»¹QR:ûæÍ£{÷ìùycϘçG­]ºDàˆõ Áò·sw–e[´h!‰NŸ>íçï'ü녟׮]{ûí·_ýõ^½zU›-¡(*66Öl6‡††ººº WMÓIדªíÃcY666¶gÏž•âµ¥¥¥gÏžuww®ÿ„ N§Óé’’’êVKZUZ˜ãx‚à+—T8ö>ºA1 $dè«S&L™²fùr//¯ûnU=l60›Q­äYå?‚¢Ð£;üýpübb@Qõ{sšÕlnßíÉ«ý"H–a$µ#¦þùgVVVdddúáÀ0ÌáC‡?øàÿ/¾ø¢sçÎW®\™?þwß}׿ÿgŸ}@AAÁÊ•+ccc‡ºhÑ"ggço¿ývîܹ .ìÛ·ottô#—v"v5ÇÚ9ŽkÕªU»ví–/_N’dÏž= ÅÍ›7/\¸°lÙ2ÿÈÈH»Ý^íœcÙÐÐÐÄÄÄøúúªT*«ÕzñâÅ… šL&ååå’3n5¨[ø–¢¨Ž;=rôA‰¬H$ª[_ÔC€V«¥(ÊRf9âĶÕßd¥¥ 8pÏ–Í~¾¾‰¤Ajot ÃT²FÈvïÞý»ï¾£iúé>O;è233ãââ>ûì3FÓ¾}{†aª,Ë‹D¢3gÎkµZ«ÍzõÏ«‹?_œžž ¼¼¼ê†Ç:tH.—·iÓF$ †}ûöíØ±c̘1~~~•N¬˜ËPV†è¶P*CÁ´þ(ç¸3ÙÙ°”ƒãú{y:U—CÀ©¦R Iï¿¿Øbâ‰È6á>:tØ–,¹pêdÛnÝ)š®O$ÏC$?÷Ò+NØð¿/7~µœž_¾k¯ÆÙ©A" ë—ÿ¾Âô¡ẩ*é¡’’’mÛ¶±,ëïïß³gOš¦###Ÿ}öÙ}ûö9s¦k×®ñññ7oÞ0hÐ O±HkÖ¬ÄÄÄmÛ¶åäk4šj“n‚Zí7†éU'%Tš¦Ç7räÈ)S¦ücòz$E]»tië?víÒeÎÔ©»t–ËäE5à >ùä“kÖ¬¹zõª‹‹‹H$ây^"•Ž;öÌ™3+W®\½zµP7Ìó¼Z­^ºté_Ön•N·~gY¶M›6m"ÛlܸqóæÍE æmÓ¦MËÍÍ]¿~}~~¾»»»°EQÏ=÷ÜÔ©S+N–$…%£G¢¹Â¬HˆOˆŽŽ ¬ÃÙiµÚÁƒüñÇcÇŽýÇÌŠ;Àóð ýÖÌ1“&­_ý­‡àë^{pBCq&B»ôvI¡ˆ¡òwTô¢âm“€¥YYÐéà➃D­%%`P·ˆ IÀl©¨CxD~÷ÅîÔ›¿æ€ƒc uÙÂó|Š&wÅm. 6ŽË³Ø8дFò÷HÁ5,þõ.|M¸H’ܺióÅý{ÿ;ãÍcûöÙm–µó[·ø,Ërzw·å;v/\óýýR"€×ç¼ú·Ã-CëAbyžç8–áy.ábìÊç}·`þk×Ô&Np3õfFFÆOYYY‚Ó¦›››PHàêê*ÔH¤¤¤<~ñA¼óÎ;6›íÓO?½páByy9ÇqwŒçùÀÀÀ;wΙ3GˆŽëtºyóæ-^¼ØÍÍ­†„/˲îîî}ôÑÌ™3]\\ :tåÊ•OõzjäÈ‘æÜÙswŽçy–cív{Òõ¤¥K—ž?~Á‚ÕÖSÖæì¼¼¼Z´h±wïýßšþ.ðööþðý÷ã.]ÜóË/}úôQ«Ô4M7,!#Iò?ÿùOrròçŸWf6·ˆ Ú¸qãüùóùr¹\$ÍŸ??Ïéáá!ÌJÆrËqzg§ðŽãìv{®]þ·ì‹Y³f‰D¢SG~¹lÙþûßÞO?½îÛo££¢Îœ9c³Û;FEÑ4MÓ´““Ó+ãǯ\¹²sçÎQ‘‘ÅyysæÎ}饗ä ˲V«õêÕ«Ÿ~úivvöÀëvÖ$Iúûû;;;;vìþkÿmÁs¼O`ÐØ·ßyþÅ ™†Ìjï6DÕÛ·†›ÜÜpå2ns]&P\Œӱ㗊0íW+ðÚ«wZp™Í¸ü'àꎃT 77d¤#?•݉„äåÁÍ "Q ϬGõ²ÁñüQƒÁXjÇ}ÜÌK­¬aeCÅ7@ø(o‹Èr€™eˆ ˆ‰F&u<–ÀeïY,(ï2Ì}Vk84Ed›pxzymÛ¼yß¾}?lØð݇ïGvïÖ*¸UkÏÀBP'’¢‚$ˆ*·Š{Ü4x™,ª[·ènݰt™°¨Vt‹¨øÁóàyŽcYð<Ëq ²²’®\¾~åJÌoÝ]]Ç;î땵I€2 s#ù†N§«{™W=PZZ™••%—ËU*»Ý>~üx''§S§O5 l&|»Õ¶´oܸqܸq¾¾¾;wîò§Žî‰DÈ’/]ºtáÂ…²}í\\\¾úê«,Z´(333<<¼mÛ¶AAAB¥Ð›%üT«Õ½zõêÕ«—ðh’þ÷mêç8N§Ó 0`À€Ba¥°­‹‹ËîÝ»…=°˱œÀ{RRR._¾|á»Ý>}úôQ£FÕ'n-•J§½ñÆÛ³fõêÕëqø¶ë©TÚ»wïÆ>Š››Û† ¶oßþùçŸß,/?U|!êpJ ÏÏ1ƒmë`ÌÈIHhçëƒÎAO\;CŠÄÜ¥ ò÷§·ùyOêÍÔæi7ñÙüVKWÆ^½Ê¾<6jü+òIß~ï=‡ñÏE¾ñÎEµ600ìuæÇ­gKŒ-[P};þvõØñãíÑÑwì©Ôðˆˆhšéõæ‘ËÉ×åò·>ø0>.N"•Ìœ1sðàÁõ™...£G^±bEÇŽÿ³¢Zpï8vöœ!#GíÞºÕéö&T™\ÕªÕº?WÃeY®®ˆŒÂöm (ôz îî()Af&֮ݎöí*â¯mÛáòeìßΡрa‘Ó§`6cÌ  H°,¤2á׃ع½{ÃÅ,‹k×ðã89! "QõŒŠa4–r÷ú”FÔ19¹G³sÀ²ÉžñòÒÔØÒZZ ‚Ax)jâ»ÆܸÛ‘ tì„Ö­¡¼}0<ÌLÄÇcËf EDk´hGÇÆY‘mBmѧOŸ>}ú˜Íæ]»w:uzõ¶÷2ÒÓš……{ø8{¸{»xù(Õ*BHŽ“IR%!H’$AÞž9ù+Ÿþ×2Žã8–6á8®‚Äp<[!gÈÛ-CZZJÂÕœœÌ7’ã®H¥Ò¨¨¨.íÛ/žûÎUkeddÄ_ïØñÑoÚ¼‰eÙ_ýUˆó<Ÿ˜˜b4·oÛ>kÖ,N7~üøÕ«W—––Z,©TÊq\Ž žx £ÄeïÞ½{÷î‘‘±ÿþ;v,[¶ÌÉÉ)88ØÓÓÓÓËÓÏצi:–B“Ь)¯-DXÁ¶ @ˆá ?322222RSS“““322¼½½{÷îýÒK/µ¹Ý¸n I²eËO<ñIJe˦OŸþÈk9þ^4hРAƒR’“¿?p`Zß°vãÙ.¯EøO”¦Ý1CA'×s‹··o­4¯<$6›s}ýÎô}.ò…!á3ÞÍZúIÁ³£<^AÏžùÝ­>šÓbÊL|òAl¿a¾óÞŠøï×üà§NLŸßjHçè½ç­|ÿd]ûNNíŽe—´s<ýŸÚh£&%wõù_ûáŸïöñ’Ô~‘¾Þ{wΜÕúË? hšŽŠŠ:vìØš5k&Nœøž<Ï+•µF›••u‘•ËåŸyæë¯>„èhÐ4D¢[5¬<( ]»âf.]@칿6‹ñæt¸¸T|ŒŠBNöìÆþ*‚Í..>>>¶<½=žÄÎ_pîì_«‰Dx~44šÛ d €‡Í›MtôhWg§Ï>ÛÐßÊýÁñüž´´+ÅEàù—ƒ‚¼Ô5Yðð<Ýh’p}Í^ÊÍøn5âã!•B.Gv6~ÞˆS'1tüün ÀH»‰… @’¶m×®áÊ(x{6ÜÝï¶Uk4Ù&<ärùðç†n8»ÝsåÊåä䔫W%_¿n-/wruUh4R¹ÊÙÛƒ¤h™Báêå-•Ë9ŽU(Un>¾b‰´†SŽgs33 ór ’bm¶¼ÌÌ⢂ K‹‹sn¦ñ[˜›c--õnÓ¦M_Ÿú÷‹ŒŒÔétu;üüüììì°ð°:~õËã_|qü‹6›-555>>>;'ûÓ°Ùl«V­š5k–R©ìÑ£ÇÚµk/^¼¸víÚÁƒ'''ÿðÃ÷ Óþ-àéé9qâĉ'HHH8~üøåË—wïÚ/‘J\]\…´,Ïó2™Ì××—ã8‘Häéé©P(î•»4›ÍƒÁb±Pe0„Z ƒÁP^^^\\\TTäåíÕ¼yóvíÚM6­eËr™üîýÔr™|òäÉ/½ôR¯^½BCCÿÁ¬¥‘àçïÿîäɘ<][Å.ÛzáÂL¹âË^¡Át˜=ÛÁëIÙ‡úøúp,'wpHr ˆš0pÓ 4š¤ SƒÀá)³"ß}#ëéÁ9zפ¹ŸtÑ#ö…™ñ))û&¾;¥›÷zLÊÙ¸ñ»®“¾éêÞË»GáÛ³uvÏãÏvœÕïõ^mÚ\RÈ[/|×7Á¸°AOÊÉÉiô˜Ñôq×®]ƒ‚‚þ‘³‚ ‰Â¬ì¯?xÿËÏUûàåí}bçÎçÏÿyåW†Ömм9T*PÄb€€R‰—_FÚMœ;‡KÂbÆS½½þ¶½ô퇠 œ? ±P©Ð£'B[Bç€J­4ŽƒLŽ'Ÿ„‡ŽFFt銨(¸¸€¢ÀñÆ^‘ò.)Á¥K!7®Oœ8qú´iý-U‹œòòý™°Ù@Óý¼<]îGO ‚ðQ>äˆ,–Á©SHLÄðhß*5( …Xþ?ìÚ‰qã¡ÕU$awþ±/ŒEëÖJQZŠS§°yìÇ‹i|MD¶ u‡H$êܹsçΫ.LOO/((0×-K©ÉtíÂÙ’MÓÅEE7SR¬5ZåîéááåÁ±œH, mÑ‚ã8W7·   𦽽½• w›JMV«µ^-·õÇq.\سgϼyó(ŠÒh4•§&ä"Åbñ3Ï<óæ›o®[·nòäÉ“'O¦(**:ªsçΕµwClѼyóæÍ›W~4›ÍIII Ü:uŠ £ÑxöìYš¦­VkRRRùErU •Je2™Ýn äÁO˜0A©TzyyÕÙnê ×ë¿üòË™3g¾õÖ[-êÇ•3 ™H‚tss«v‹ÅRPX@&•988Ük?9¹9‚”›«Ûƒ²(†a,KYYÃ2±D®ß÷Œ8ŽËÊÎ@Ó´‹Þ¥æ•ï‰c—£èŠ»Êò| ¤¤$99ÙjµÆÄÄPUŸ¿éÏ?7·yšÙ±ãÇ””¿Ö8ήPPë$×~޳«ÜT~ ö÷‹Å¢GD¹»G;:3ñô7R‰·V«°¥ò¸Ï ¯ã€kD‹³gÏþô³Oß|óÍ fA ¢¹ûø€$‰ƒaÝÇ-[üY alZýßÏ?ŸúÚk«¾ùfÏæMå2Y†«›9(:]Eÿ–«+ưç@Qà8ðî²ËAóæiÆË‚çÀ²w6K$ˆh6‘ Ipìv0vX,ä•až.ÏÌôÎËUÚíÃGš¸æ;m]ƒ õÇóçssÏççì~¿{Ü0›ˆ ÒóöYþÖS@JRºzÚ(ùE¸‡¾ýÐ¥ ¤R° XZ-žÏ>ÅÕx´†XŒôt\½ŠÑ/ ];p<r9ºvEI Nž@AtºÆ(™m"²Mh`xyy õ¦]»v}Ôc¹8ŽËÍÍ•ÉdjUM9ÆC|||çÎ-KHHÈ‚ B[…êõÂóµZ­vÑ¢E}ûöݼyóõë×_}íUo/ïÙ³g+ ±D,¬ hù[¹³JIggç¿Qá¹\à1”B« ¼¼¼>[ôÙ+/¿òì³ÏöÐßÑÁ±n dž·ì0îõ–rêÔ©'Ÿ|À„ ¾ýöÛ{í'²Mdff&€’’õ­Ä¥ÉdRÝOû½¼¼üðáÃGŽùòË/…ùùâ‹/2ÄÇǧB\XX(Œ<$$äêÕ«5¢öÐh4­[·о}û†ÚçÃDXXØÓÞ˜;gîСC{÷îíààP³Üß$Ef¥elX´pñ‚B[¶¼ïú¾~~ >ùdÁ'Ÿ$Ä_=|øÈŽ­[ ss…"G­ÉÒh RA©„V ‘¨B] M?€i9ËVd®9,‹òr¡Ü".*ô5•¥¥¤ÙìÚ«_ß]º4HõH}]^¾9%Œbñ„f^÷SÔbxe¥´%»]á¸"»€š¢´RM ¸ññèÐRé_å O/88áf*ZG@"An.8žŠpH²¢|9+ Ž@‘mBåååy¹y÷ z=¬ZµJPWýý÷ß…a˜ËoçyÞb±X­ÖÈÈÈnݺ wïÞ}ðàÁ &5 0tèÐÇÇÅÅ òååå6» ÀܹsÿÁ]&'|}|7mÚ´páÂ)¯Oyî¹ç"##iš–ÉdŽŽŽµÿ_PŲl äÊFF¹¼¦(iϧz¦$§àVÍ1Ã0ëׯ÷ÝwkØÊn·ïÚµkøðáb±8,,L.—çææ¾õÖ[»víúúë¯kH‘W¾5Õ¹Ô矊ˆˆˆo¿ýö³Ï>;pàÀàÁƒ[·nMQ”V«Õh4ÓzŠ¢2SS7-ùï§~ö`¥YÍCZ4i1ùÕWd¤§Çž;{ñb†Á—’\’“Ãð¼U¡à‚äùB©¬˜¬Uˆ‘t¬]c³q€Èn——S‰ÞÓSãàв{·è¨¨ à`§‡’™© 8žÍÍý>9Àp_¿VµXr‰~w½…rWÂ0¸Frv ˜Í`YˆÅ H ²Î•‡T©9ÙÌÕ`¥ò¶®‚€\–ENB[5ÆëEd…§fC å!ãomBƒ€eYÁøôQ àܹs‚ª”ÀK8ŽKL¸ÍJ¾¼¼üàÁƒGŽ¡izÁ‚‰¤¼¼\0DÕëõ‰qvvò•‰ ‰;u‰D)))–r €€€€¿ïú÷…Z­þôÓOüñÇ÷Þ{ïúõë­ZµêÝ»÷ܹs?¬]³¶êǽ{÷¾ýöÛÉÉÉ5YƒÁ°ÿ~óæÍ›5kMÓiii#FŒ8vìØW_}õá‡>üùÀÕÕuñâÅßÿýÌ™3F£‡‡Çœ9sü ÷Bù¨“MÃç¹êLhšJ¿‘¼mù—Î-¤Pê O//O/¯ƒU9&Ÿrã†Ýn'Hòfjjnvö}Ö}úôîÝ» e2Ù¬Y³X–=xð àM%‰:uêôÁx{{7Ù‡Œ‚‚‚ 6œ:ujܸq½{÷ÎÊÊÚ½{÷ºuëŽ;æääôâ‹/:4<"¼’kíÝ»wëÖ­Û·o×jµcÇŽ:ujíóEv»ýôéÓ6lX¾|9€>}úŒ1âé§ŸÖëõžîý´ 1\ZZ!lRRRÒ¦M±X|¯¶K±cÇŽ;¶r Çq‚å•Édªt¦ÈËËÛ¶mÛÖ­[ýõW__ßqãÆ :´ߨ¿ƒaýúõW®\?~|å•{/ØyþÂÉ“¶²2³ù܉ã`2–prt=ú?Ëqv"Zt=þꡟֿñÊKmÛµmì1ü#aaÙÝi7Od¤ƒ¢žtwoëêZË SL·´·ÕY< M©Å¢–E¡eK<Ñ gÏà׃‹½¼0a"¾_‡ôôŠž|øðúõëûöí[õM†åØo¿ývíÚµ,Ë:99Ý1ÁjFÒõ¤E‹]¼xQ¡P 2DP<ˆÿâ‹/Ìš5ë½÷Þ“ËåEEEsæÌy€ïëßâââüQ"‘¼õÖ[µÜäÓO?­ü]˜U1bäÈ\H»y3)=¸Õk%‰®]¹r|ë¦×'¼Ø¡C‡‡3†xàB^þ¼+W@®x¡Y c­õ+L&áy—­ÃóvPô’òÉ0hZ·Fl,JJŠÐPhµ`´h±ooÄÇÃnÇm­|…Õ°›[ òõA½ˆ¬X$îÝ»·F­þï_^ nÓÆ'0Hëèȱ,Ë2C3ESIq<Ÿy359>.ñÜy?zÆìwôµ«JiBšÐ„Ú€ã¸ßÿýرc?üðƒ°$77÷÷ßÙ¦ ½ËÈ‘#<<<y×={öäååxíõׄ›’H$š1cÆ'Ÿ|R™Á·X,'Nœ¨z,g½se<¾[·nÑ·2¼îîî‚öÅ©S§Jïï«î-++;}útÕ¿êõúªMè7nÜxÿ½÷7nÜàÕW_íÜ¥³pèÍ›7 #œ:uªÐt¨Óéf̘±råÊýêþÁ°Z­»víJMMHÿß V›­rªˆD¢ÄË—Oÿ²í•1£•â?ÙfóÊ«WË Oôòä_ÛúFŽçÏIxÞ‘eX6Ýf«&Ú @R Bó'Åü|”–¢y( ÓãÉaÆŠk´3nBýÁó|Iq1ÇóE……6»$«Íf4íŒýNýê{€$•Z­Éxž§hZ­RIe2‘XÔà†LMx QRRÂq\~~>˲<Ï—–••šL÷M§òàeR™Z­&I’ã9Á!LøØØæy>-=måÊ•Ÿ~úiåársrwïÞ @*•V.¬´4°k×.Á„ÌÑá/#ò;4 žzꩪK†þΜw„ßïßú‹¤Öî¡f0îØùˆ#~úé§ŠSÈÍýüóÏ;iÒ¤)S¦T*.ÿôÓO‘­Úšö@mjŠââb–eóóóyžçx®ÔTZVVV›Y!—ÉUj•xquu%B¨Žhlp·k×® <„Ã5h}å|ì¹=;'ŒÞ±S§G=œÚ‚cÙÒ²²¿B€¡®Ñ¶±aaÙ®%}Ÿšnæà86$DUk=¾ô²2”—ðÉ]««©%B8ÏÆ¡ZÊJ‘’OO8:Ân«X(!;……ðñHðzùùpu½UH@< A­n¤6L“i@@À¼>HJJÚ´éç'Ž]‹=§qu×»»;:»èôÎz77‰TÊ Jσo@jKR$A$A$‚ 2?''/+«¸ ¯ /7;%¦9EöìÔyÀ€Mª1 ŽòòòR“);;»Ìl...2ŒFSN^Ïó¹V›$ «ÍVh*ck]"C„J¡ÐH¥xš¢´jB.“J$.ÎδˆV(UjF¥T:;;iµºš¥4›ð8Ãn·² Æ£Íf3›ÍYYYÇeee DÖh4šL¦ûòQÁÒV£ÑPÅqœ§§'MÓŽŽŽ†¦iF£×ëtº†Ÿ0 Ãlݲ5"""44ô6¬É®ÊÞ\F°r祥¥kÖ¬Y»v­““Óˆ#fΜ)Ôr`õÅb)****.2dJKKm6[iiiNNÃ0ÙÙÙBEÑh,--­å¬ÐétÂØ¼¼¼‚Ðëõ*•J$i´­FëèèØà&¥¥¥»wïnß¾}³fÍvÏ"šN¸øgì¾=c† éÔ¹ócÒ °§¡ñ¾;Áa©ô}SJ¾¼¾b[êëÇ@7uR†±’¢|®†ÄÇAh(L›Ë—AÉIð’‡jjAÊÀƒ@@À™P«Œ½¾üêê * HÜ.(= ­­ðäS P\¿©çA’djjßÔÔ¾¯§¾®®¹Ù`hn®¬ª²X¬5•åû0Ùl­Vž¢¨ð¨h„#‘„ÅÄtå”Ôj0˜ ÍÀÐØhn5cÌ+¤…Tæ¯ñ Óëã"Ã' ÏÕétþbw™žÅår­[÷ã¶m[[L&©Vé« JMK”Êd:__©Læ£Ñª}4Âí/ í:1Æ—›å­óók»ûGˆ"„€Åb±š[v‡ÙlrXmæÖÖ¦úºŸ÷î]·á')I¤eôŸ4ab/ö빃!??ëÖ­v»]¡PÅÅÅ)UJ•Råçç§V«·R8´7ܵ)ðÑ£3w!V‡^¯×Üj6™LB¯¥¥¥´´tÿþýK–,IOOŸ0aBDDD·'ÅqÜÆ‡ vÞÂe``àèÑ£·mÛVZZzøÐᬬ¬¦¦¦åË–oٲ塇†7vìØ?úÐl6 <^Ï‹>h¿v!“ÉFuÞ‡nß¾½{C…sÃÀJ¥òƒÀ¾}ûÞÿýÌÌÌÿûßm-åÚ3a„·ß~›ã¸Å‹Ï›7O(öZ´hQ7FÕØØ¸á§ Û·o÷z¼ …"888))I©TªT*•JÅHÀÝ· á¾Hxü»Ux<S«Éd4Ùl6«Õj0Š‹‹÷îÝ‹ÊÊÊ?~|ppp7¦#`³Û¶oßž››Û™‚넪ÊÊ,VÛ´§ŸŒ=+ìzÙWP°qëÖºS¥ÕvG-"N“¤K*åü¤r9AÓ2µš$É µMÊå@QÄÙ pþESØËsœÇbàù “‘8f±°,ë±XÀh ª­‹Üµ+ @¥ŠNH¸çî»CÎÞj^.eËßöì­n5AÜôpRs™qÓ½ƒà)¦é:öjA êªdRa IHJ‚;ÿ û a÷n²s #BCÏäÇAz?ðLcÅЖ|Ÿ;  >þ*y±pU[Ô24 G¸ýµZ­‡Ãj±p,ëñzN—WÆn§¬èð%×,xûûê"Ãà 0£¿N«%B©RI¥R•J¥Ñje2Ù%{ˆ‹tµßÿÝʯ%¾¾a ©aá~¯V§£hZXéŒ1Æn·ë F*•Êdz@HˆØñÊðÚk¯%''¿òÊ+/¼ðÂ믿~üøqÁ‘í†Óöõ×_¯_¿^"‘¤¦¤êõzÁ*†9c<1z:ô8!Nççë‡By½Þæææ–––úúú'N<ûì³·ßqû¤‰“ºwp»Í^PP èWÜ øøøL?>  W¼Øÿûß};v”ºÝG%R[@€"&N®ÑøªT”TF(BW#ÀæÏ'æ8¸TúÚy¯Òg› h…B€`Ì;n‡½Äl>d±xFßC‡·D=ðàƒ™—5ƒÛýÄž½ûê "5Ú7²è/3µ‰Ãøp«©¾¾îÀr<çtBøjåÈð<0 È‚ø>`4Ë‚J¾¾ PîÇ*0x0¤¦Âˆ<‚€à`P*Wotר Ã0 Ã\˜boµZ0Ër&“é’'fŒ±B¡Éå T*oÐÕ7"¯-XPRU5è®ña‘‘úàP‰L&\`0Ï{®ØóèmQ™¶³’B¥RªÕ‘1±}Ó3 MM5U•ûwízlö쥟~ví‡'r!_}õÕ–­[²²²bccƒƒƒ)Šây¾Mfÿj#xEp6$‰òó÷ HLHì›Ö·ôdé¾½ûlVÛìÙ³»qp–e=za‹#‚ âãã_ÿÏë999_|ñÅçŸõòË/=:==]8}Ñ4=eÊ©Tºzõê~øA¥RÝ{ï½O<ñÄòåË@4¸Ø‡ ìBãʳXÏhô€ êm0Î~?ò°Ñh\¾|ù‡~˜žž~1G¶¬¬ì«¯¾€ÚÚÚ•+Wž÷ê³Ï>$‘Hyä•Jµzõê5kÖ„……M›6m„ ß~û-ÆK~o°xñâƒ4(::Z¬' ’ã9Ìãkgn»óAèõúĤĴ´´’’’Ÿ7ÿÞ=©)§ÓYUU•˜Ð£C¾¦ètº»îº‹¹jݘ.Ʊ'½÷ÞºVsSx¸2(Hëë¨ÑBó<Æ€·3+õŒÎª…âs]\$‘È¥™¯âXgkë®úú­UUûçÏ¿ÿÎ;§Lš¤îÚ=›‹ãžÿµp}ER( ÌI÷ëÀíœÃ-F¡­kœF£è¨y1ð<`,#éÕó‹x(@ÈÕʇ “Byhæ÷Ý„-üUô±áš9²£-€*¦\·¬_¿~Å×ß¾¼èƒøäÌó<Ï{¯Éeæ²\[ŽãBþÁÁѱqOL›ºxñâY³fõöèþì”——ùå—cÇŽÍËËüW¯·çÛmwöŒN§4hÍП}úYDDÄí·ß~¹‡*-- é0×– ˆ¤Ä¤ÐÐпþõ¯­­­&((è¼€«R©œ8qâðáÃ_|ñE…Bèçç·oß>žç;éøÚ¿A6Kˆì¶ñÖ[o½ôÒK t.\·nÓ鄳âñ}â_ÿÏë³fÍ"I²“Ê­¨¨¨•+W²Y 8#O«Ñhf̘1zô覦&½^¯V«…Qu¥œ.??ÿ«¯¾š9sæ€0Æ\o·Ô9c¾~¾¹¹,Ë~ðÁþþþ—’ä8îôéÓ¡¡¡7´BI’׾ޖçù¿öÚ­òæ›Ãýü"0æ1ÇÁUõƒ.c‡$MΗŽ9Y_÷Â7߆Ý:r$u)Í;Ç=³wßg%%€10’Ïd ëNr¾æ&Àåúw\éÅñ<¸œ@ÄÕÒ‘=îZSƒ.îÖcˆ­±E.AYYYei çaI‚dÏF¶z „EÓŒD<ǹœÎ+<¾0>’¤’l¬©)))é¡‘Št›ÍVRRò—¿ü… !–É·µ>Â3˱·§ÇËóÛ Ic|üøñÆÆÆKï}.ㆆ† NÛó¨UjuBgº?R©4<<¼}ÿ‚‹ÅJÛÐh4999nOH8'˜––Öþ)I’!Á!!Á!\­Vw±û¨\.ŠŠjßî»ÃQuH}}ýÉ“'1Æ$I^è4#„(Š”X–u»ÝWbÂjAv»½‹Ç!I’ÇüñãÇíû¥÷>Žãš››EµòËfÅŠë7nôyãM©Îs>? B B±—ÅgïIM µàÀ²˜ã:(Ï "H`hŽŽëx·6xŒy1L@RréÏ?¿ýÞ{ÉÉÉ‘‘‘LÄÉóÓ·l[]U)tøGßÔ‰±1—›+pØh"ǾÇû¼<‰º÷Ú­÷.¢#+r hŠÊyë{¯þ#µÆÈÛÇ¥ffð,Ïr¬ |%GFÏرí«>dY6-#sÒƒ«}Ôݸb!„’¤H’–Hj«*7­]»û—üð>}ÄHÿõMÓéééË–-;}úôí·ß^¯·“œÓéܲeËw«¾“0’ÞyçB6mO ‰ ’$I’4 6lØ´iSFFF÷¬Å`0ˆº(Ý@.—ggg/^¼¸¸¸x̘1ú`=æ1˱‚UxY¶  à«e_‘™™™9iÒ$¹\ÞmH$O<ñ„©Õ´ðý…ôÅiIÐjhhøñÇ·nÝšœœ,•\¶sÀr¬Éd ðÙËÆåražoùå—Ðñã †áX/\¤W(k³µØ v#šQåäh‡ E08ÊËZò7³u5’È(uf¦"1‰ Èö§ž$ÀjµŸ>Ýòkci|‚*5U‡eRââg$D’H"qœ>e§™°°Îãž ÇÌ»ÖUVÏIÍKKû[ßT9ÙUÑžóØÓÔ € úu” Ëclð¸"É?i¾¥èÈŠ\ÌóA!¡Sgÿíàî _o·9‡Ü”×/''!%Õ7 g9ŽçxžÇ<ßu™X‚¢vnÚ¸èÕ–—”À¾­[|òé.^«’D‘$)x$v»ídqÑ‘ý¿íÌÏo5ûÌ™þÌÜ]›6’_œ¹f`Œu:Ý!CêëëŸ{î¹ÀÀÀœœœœœœˆˆ‚ xžgYöLÉ p—ŸŸ¿páB!Õ²®®núôé.×Õ šM‚Á@ssóvïÞ}üøñìììÉ“'u/í¾±±Q”Èèþþþ·Þzkiiéßþö·¨¨¨ìì솄„À?þøî»ïÖÕÕÀáÇ|ðÁ‹¥:tD ½{÷¶¶¶žwï-XEQBñ\}}ýþýûwíÚU^^>dÈqãÆuOPŒçxƒÁ ZE7Ñ4ÊÈtÖÕ•Íÿ‡b@¶ï°á¤F£³w8ñ‡qãFëªïÀã IøŽ].SÁn㟃юÇÖKFäüõ¯LÛMBœÑXûö[\y98`?|ؾþG*>1dÎJ­æÛ_€B!HzyJN¶nu46‚BéF‘½²üXUý¯…GFày ÈŃNí×mU,ǤÑÿÜ<"ãV·€¤tLk!ß(ˆ—y‘Kƒ…‡ ™}º¸¸øôéÓ'Nœ°Z­±±±}ûö½ë®»´Zm«¹µ¨¨¨{?›Í&¶äèB^hhhRRR^^ÞÑ£G<¸råJ’$SRR~þùgƒÁ°dÉ’>}ú`Œ†2@0ÆÏ eÌ_:ÓI° Š<“¥À0ŒD"¬!d±XJJJŽ;VVVvüøq¯××·oß)S¦hµÚºººÚÚÚnLçy‡Ã!Æé» Æq&“¥¨È:ïyÒ/@žš*Oï§ŒþŒXë°[W}‡‚ƒƒæüÉH†An·å×}Æ>d²sünº‰ÐhEy›>XÔ„PÐ=÷RJðÑtÓºu\q±üö;´C‡‚B‹aÛ6÷ÆŸ ›6†L›†Ü áv:íÇŠ-ÅÅîâ£,ËARÜq;¹ãµ³ì«½s¢Äã°Æ@Ó‹srî‹ï#¿‚xÊ¡–àXˆÑh$Åt9ž7 ýi’þY7Òi‹\.<ÇË•J…Ré¬NŒw;]n·«¥±¡òäÉ#‡ýòÓ“ÁÐRW§Öù†GÇP$¥õ ”)¡‘Ñr¥³œÂG#•JÛüZ©\fln€ì¡ÃJ%œ­Ùâ9®¶¦º¥¡‘„×ã®­¬2µ4{=ÞšŠŠV£Ñf³Tž<©Öétþ!!¡1qãxP!“Ë) #W((šœèËU®¹ªyŠr¹\§Óõë×ÏãñÆÒÒÒººº>ú¨¾¾Þn·§¤¤(•Ê   ³Ù¬Ñhš±Ùl$IÚl¶67·CB6›­¦²Æåv‘YZZj6›ÇÉ“'9Ž;vì„„„DGGëõúAƒéõzš¦e2™Ð?¶UècÞÝy]'íŽnD„NJ¥R«ÕfffºÝn«Õ*4˜€÷ßúôéãr¹"##}||äryrr2˲ Ä„„h4šÎ­ÂbµVVT!(»-_¾Üãñ”••À‰'‚ƒ"""ÂÃÃóòòüýýiš–Ë剄ìîBpÛ¼D«è&<…üý!4ç展•–òrËÇKÈÆFÐëÉ@½")Àã!u:U¿~¼Û±--惉   {î‘úB8ÂÂah.„…T ”žºðÊÂaüß%‹‹›ÍÀzcÚGóãàACC‚eWfH‡ZŒB™Ûˆ‹¤\³[„û|’ô‘ÜÀÅ…W‚èÈŠt•³…^H®TÊU*ŽMNa½^NH™e¹V£±¶¼ŒãyC}}UuµËåÚüã:§ÝŽá´Ù Âú æy…ZM’Tcm-Œ” `»Ù BZ__¯`žbÿàµFCÑLTjªÒG-WªB£b†&H’ IЦiš&)JÐÿÃxCÏuËéY8Ž£(J­V *ž‘‘‘,Ë ·0ÆÇŽkdmmm9s&Ïó$IJ¥Ò6a©ój‚à8N8ŽOrr²Ð^aРA¡x@*•’$IÓ´ð?EQmû¢©ô.‚dðw”J¥<ð@UU•pO{üøq¨««›;wneeeMMËåZ»v-I’^¯·¥¥Åáp!üqÏ;¬Ëåòz½‰$((ˆaá^¥¡¡$I!±$33sÔ¨Q™™™mV!}€çyQÞ±7Á\r¨Õ,Ëy<ÐÔÄÕ×{>^"ôëb*r7ÂËåH¡äCÁÁ­;vþ~q.x½Æ¾÷TT`©Ô]] f3khiZ³Æ]QùÆz¾¶>ÿ ´¾¬‡Ä$2üý €$a€ ÛÆF`LgNeVëÚŠÊOKNž°Xxþθ>ïå •ËÉ+¶¢ €yè‘VÏ·z<@‘¤òRB TDGVä²ÁøLÇ„F*•´«”Ô„ÇÆÇs˜R ¸³ˆóg’h¥ ÅýyÃê**„§µ僵EÇø3JŸ"„å? !P$)$-µ¿haÀ¿Iä†@X#n“&h[š8p`ûLkA5<<|éÒ¥6›íÂã0 ³k×®?ü°½p©Ñh¬¬¬|óÍ7SRR„Ê’$Û¼ÕóD‰\?VQVVvž8.ÏóÇw8ÂÝŽ ²'¤-QU]]½dÉ’œw´yóæ È@‘BH*•Nš4É`0äææ>þøã‚ýú믇JLL\°`B¡„á®ÝlE.  I I Õ‚¿?|óõ™×y74`ˆŽÆ}âáhöz-MMÂZüh0æÌ~þ •B}¸v·[™™g: èt`6ÃÂ÷aè0È<$ gávÿ`¾H­ûwÉIÃÉÓE&Ó«¼^àX!çAê£ù"+clD„¢‡|ÊíM‚Vë}Ç}æ<<ßàvBj’ìPeöÏÀŸtÚ"=Æùm"IÑ@ € ã`BŸæo¡zÊàAƆºUI¤2)}Âù‚¢ËúG¢ýÒ0I’7nt»ÝwÜq‡ŸŸßªU«Ün· Äta¿+‚ jkkóóó###çÏŸK’¤ÓåüyóÏ}ôÑöíÛ“““Û"¯WO½K¤q»Ý«W¯&b̘1,ËnذAØÎq\›2û~³6›­°°°ªªêÝwß'IÒårmß¾}É’%………ÙÙÙ†çy©T*¼kΜ9>úè¡C4>šVsëú×/[¶låÊ•³gϾÂjB‘« €3N碠¡^{ââá™gÀ剎ˆímmz?µäœ:¹¹Ï?p×xÉ~Ou%ìÙ yyð{ÊŽNûø—U>«ó/¤±Éä‹23¦ÅÅÊ)ª§úÄ5šê\.À”ªhŸŽ%üxŒ^Ôõ”÷|Ã!®žˆ\MÎþÆÏÿÇc‰L&S* €T¡ÊR¹¢Ã¯­¶H/#“Éd2 „är¹ÆŠ;‚ ˆââ⃎=:--M©TJ¥RV7~üøèèè~øÁápôölz–e×®]«P(\PPÐþ¥‚‚‚Áƒ+Š 6‘EƒÁ°zõêiÓ¦iµZ™L6kÖ¬ÿýï¿÷úº.ÁËd²¶½ì,íïCÚ !ÔÔÔ´mÛ¶~ýúõïß_0­V{Çw¤¤¤lÞ¼Ùl6·í/¼÷Þ{ï7nœ>H/“É‚õÁS¦L™:uêÆKJJ:i?!rH¥ ‘PH¥ •IBp0ôÏS ¸Ý@3@Ó@Ó ‘€Á6EEŸ‰‚PPT[Qr ‹Z0>ÛÔ ƒTvwŸ>¿Œk›2ùÑÄ5Ãô” ;€çàÞÐPê"PnŽ+w8@Nª?« ÿI§-""r£ãõzóòòFŒ!Û…çy™Lv…•:×-E¥§§çäälÙ²eÉ’%l›û’%K òòò’’’‚¨­«ó—1‡jSûøã?üðC•JuâĉààŽ—)o,X– ÿïÿ+|¸´´´W†z  šxðà÷Þ{ÏétÚl¶={ö,Z´¨µµU¸½¡iZtIÿtð<¨Ôpç›ó¡±r‡ÁÀ‚¸xÉã39 fÌ [ºœcz òݶkÝnÀ8Ü×Osñ~ @8Ý©h:P&»úãºY‘ë’"/Ô–×jµˆ ŒFão¼qðàÁ¼¼¼aÆiµZ½^ÿý÷Ÿ8q¢WF{  œ0aÂüùó·nÝzÏ=÷ÀÖ­[9Ž»÷Þ{Ûr^xá…šššÃ‡?pÿ ß_8cÆŒÔÔÔþýû+ŠNz´^Ÿq¡øùù€Ûí^·nÝG}4bĈ#Fk4½^ÿì³Ïž—C,p¡.°å¼4\‘І¬,ÈÎ8뛚[Áfƒ>ñ@QÀ±pÛ(øìS°X }̃٠wÓ9нÊÚŠ –eãé‘äÅ3XžªÓþÌ"‚¢#+r Äó»H/Âq\HpÈ?üpávÖëݹsço¿ýöÜsÏ;Vd€?¼¨F£ÉÍÍ•J¥EEE‚»VTT$—˳²²T*•°ÏàÁƒßzë­þóŸ555ÕÕÕO<ñdçd?ýÔÓcÇŽ•Jo˜\:Œ±Z­¾Ð„„“ªªªµk×>ü•W^!IRðJÛ¤*.¤¶¶6..®íU–eOŸ>M’ä¸qãºÒ=Näzë› hJàÏ:£$ÐÚ áá@Ó€„ˆÍC{ïÐf’µú:©-æ1ÞV['xÕ£BB.–WÂ˜Û >4-ÿƒÖ\’?ø_äÊ‘H¥œ×‹®V:ûÕ‚ QÕü:¡­¹h÷ÞÎó¼ë¼^/I’••• ÕjÛ>ÂëõîÚµK¨Íïâ'¶ÕKÝ@Ö’œœ|ÿý÷ nÜÚµk«ªªfϞݯ_¿öûÜ|óÍ;wîܾ}ûÊ•+ßzë­¬¬¬}{÷Mœ8qéÒ¥½4ês`Fð;/ybÁ_hGè<ÜÐРR©hšTf½^ïž½{jjj #(((°Ûí!Á`ŒFãÖ­[ÃÂÂâââÎKGikc{c÷þ¤$ÔÕÁK/ÂgŸÏ 3ÒZ^= <@3€y• öìAÒDØÍb}{A«…  ¡û@g Ä_ýàN©ÙRlµσB™æï׉#ëå8`Y IêÏêÅ‚‘¹$™²¾^½¦±º&,6†¤(Œ1毛֎@A`Œ[š››kko˜ÓÛ#©TZSS%„Íz$ÌϲlFFƦM›~úé'µZ­Õj].×ñãÇ¿ûî;§Ó 6›MX€¾!ᆧ±±c,ÔýÜhµÚ!C†|òÉ';w ¤ÕþÞûÇh4¶[ ,4,<<üÖ[o}ô±GÕ*5Çqÿú׿yä‘^úY’““yž¯«« :Ï*:4öM_…Ç<Ϧ§§8pà×_õõõu{Ü¥'K׬YÓÜÜ v»ã¸öG+//_½zuvv¶T*mhhرcÇÖ­[{ì±Áfà¬U°,ÛÔÔ¤Vw¬ß)r5 ’y=­‚®_h0~~0j4lß»wCt4Ð4˜ÍPR[·ÀÝSAH¹áyðõƒœ°9dLv;ì}ûàö;@ç žóË Ïàrúø_m±¶uUU­^/`<=<¼“[) Þå Hì†YféqDGVä¤õM1tÈŸ,É=6,:J©Ñúh5€Ð-Ç+sjÝ®NÏ]Cˆ#„DØ,[kkKSãîõ?ÄŒ7îÊ/r…hµÚ›o¹yõÿV@l\¬N«„BÛA;|×%ëu8ŽKMM=zô¦M›¶oß.l |úé§›››ß|óÍÊÊʰ°° ¥¸‚® Çh4VWWäææfff^áL¯4M4pÔ¨QšûøñãÓÒÒÚï°uëÖéÓ§Ûíö Œ5Š¢¨'NAÇçž{®w}.qqq·ÜrK~~¾×눈ðõõxžWùê„¿~Û¢ A’r•Êll!AÑ´T¡°šŒ‡BÂÂ&ßsÏûo¿=gΜ°èh§ÝκÝsæÌÑøú>÷ì³±±±~z=çr |bîÜÇgÎüôÓO`@nnù±c<òÈ]wÝår¹Ú¬Âår™L¦òòòÂÂÂçž{.((¨7¿¦?·Ž5béÒ•¥¥Ð§¨ÔgÝÙ‹Ôf±g£§B¥Wn.ØìðõJh ®«T0òVÈè #ôÇ–…Ü\(/ƒÛaËÏgvS( %FŒ€‹žsx<`¨SÕ×Ý9uŠo§wÈWØR[^/`|Wd8sñ•"–盄k(EjÉÕÒuŽèÈŠ\šçÍÛ»wï;o¾¹$õ}âû¤¥«|42¥R©V)Õ>BF†vNI×–‘1Ïgç0[º¾¤‹ÐÙÕ>„ „DZ›Ýa³8¬6§ÓyªøhmqQk]Ý}3fÜ=eÊLZ¤'™4qR|Ÿø… îÛ·/)))""ÂÇÇG©TúøøµGmÆ#,ñgçdk|4· Åk4š™3g4psþfC‹!';gРABtíÈ‘#ƒAèbú»ÉðyÝÛüa˜7¾ìõ×WìÚ劈__P©@©„ã31ZƒDÉÉ m§ŽÆß±1pøØl ééú}7À ×ãÁéÓ°}MÃÍ·@x8ÈdívC@ DÇÃF#Ô×§TVýry|b”Ûå~xªä­%§tºXƒ¡á¡»‚Vn<ˆˆæ¦ÿlÝÖT_o0¬VkXXØäÉ“óòòº=‹ÅòꫯÆÄÄ<üðÃ=ø-ý©X¼xñÎÍ›OpÜa¹üýÁÇŠ3=½‘)‰8îL&@û…AŠ’„€ã€ç C%>¡¡Í` ,Û®‡$Ààp€Û N'8ÐÚ Ã0‹9&0ð‘ÇÏÊʺÚsÿÏáÃÏï?.ç¸ø„¯r‡(/~-kq»_,üíãC‡ZÝg9Ù“b¢/÷³xžÿûüùÿ>tãïêšAQ°}ÇD†zçÿ ½¼·^¥!‰ü!= ;ÊÊÊŠ>xèÐÁÖzÜnZ¡¤¤©V«öõ#iZ¥Ñ©´’¤ä2¹©•ÊåŒDrYU¬—µ[­!Äq^‡ÃÉz<­-—Ýf5Ýf“×îò8,4ÅDÇÄŒÌзoß´s‹]D®Crrrrrr<ÏáÇwíÚUXXh±X(ŠR(B‹QµZ­Ñh(š’IÏ4ª•Éd4M_ò–!ÄqœÃáYÇãñxl6›Ñhôx<‹Åápx½^š¦ÓÓÓÇŽ›‘‘ÑyíuJu¼»žš‘‘°ô󴚊ϗ,ò2Xü$÷ƒûî‡'`Ñ›0âV˜:-Ãí‚×þõáÃáyp`?üëéœç`HnoÏá|† 6lØ0‡ÃqðàÁ;v¼qÛý/>5w~ÉÃc×ß2C!‘¨´ÚÂ#†Ý–˜öæ·ùÏ>Ôðè¼äi­ùͺ°ðòºúÿœ;ãR|¿^6 ñÛ/wþeBØü¹9_Pýês;f¿~ß­C¿ØxèÁÛ¶¾ðQú˜Œá_nÚyß­ßÿÛÜ)£þóñéw𠜞>~üøŒŒ ŸÞþ>D`Ö¬Y³fÍ*رã§Í›ËŠ‹›««Ža¨¥JÀ×h$`ÀH„¨d›„Bp±Ð)˵cðxÀå–·Xìv0›)·;žcÃ1ö•Jãûö½oúôÐk’Cïâ¸U5Àz`Fl´´Ó./ÇÕ9]àC‰˜Z "r9DGGGGGßq6õرcÆ––ÒÒÒS§O{¬–º’ãf³Ñ4F(™œJðåhÝaŽõZ¬Â<^MK|ü}||ú%'EEE$$&Þp¢˜"À0LVV–ÛÀWWWxðàÁƒ€‰eaƤ‚ÿ¬ˆ;uÊÐÒRU^Vd³Ÿ0ññEoþgÄxßC‡×g gV­§LvÊh€]UÕlLûÞ뻣SŠtdßü÷y³¾MÏ«ûùgÓÈû?{åù·‡ÝkÛ¼yçÍÓ†~ºø¿,‘üöôka߯Òü´í|q/‘ëƒA¹¹ƒrsàTi顃N••7Ö×jjìÛjáù7’$+x«$ Ðtý.Äã›Mx¨ôxyÞ"ýb4‰64$,449!!µ_¿ 5Œ¯*…͆# pøh²ü©NO}^ž?e·B‚ôÿ§ˆŽ¬H””C†m¿‘eÙòòr‚ ‚¨««knjBe]<¦Z­Ž‹ã8c^¥R_㳉È5!Þ~£Ë媩©²ªªªÌfó%}YŒ±D"‰ŽŽ–J¥<Ïûùùi4š«9ðÞ#®<úl\O> °kL±qðÔ\xu>¼0´Zxý]øû\øü@>YO‡åk¾ü®W‡ÞU´ËVÏ8w£Ån/ohø!§ÛU]UmµZ«` ¦ð<h¸íÖxŽOœºmdË)¤Òؘ#üÌqú  ¥R ï·têTßk91‘n×ö´¹¹ÙÔÒÒÐPßÔÔT×ÐØØØH’¤Ûå2 ¼ÕÙ•’‰_| "X¯ ÖûúùëC‚µZ]ïêT|_^nt¹€ãž‹UP—Óxxþ¸ÝZ†’ßà·èW€èÈŠ\-(ŠŠ;{ꉊŠêÝÁˆÜXH¥ÒØØXáq|||ïæzÀf³íÚµ |}}³²² 1 “μöèã¿ï÷Ò|p¹\Õ5Õ•£Ç±[¶ÄÇÅ………QyÞ…ª¦šš‰D£×ë¯ÿÅ µB‘# ½=¦ÙåÚVW7PÔ¸ˆpÙ¥JÊ8Ž— R“”Ÿ‘¹n©¯¯5jŒ9rÓ¦Mìi4×®]û¿ÿýoãÆpÇwÜvÛm'NÔétÂãÇÿý÷?þøão¿ýS§N½ùæ›o½õV½^õ§"""Ò1«ËÊö[­€qB>Z­î¤‚€‡ãÀå‚P0t'*]xþ¼3¹QhËÉQ(ìf·ÛçÏŸÿàƒ"„¾ûî»ï¿ÿ^.—?úè£÷ÜsÍfŒqiié¸qãæÏŸŸššº~ýúeË–Ϙ1cþüùv»ýZLFDDäjŽ¥§ÁíŽ{»¿KoqWÚ¬Àq@Óz•òÚ òúDŒÈŠˆˆˆüA8pàÀú ëࡇº„‡‡oÞ¼ù§Ÿ~:xðà!Cxžß³gOEEEPPÐìÙ³ÓÓÓ9Žk1¶<ñ·'öíÛwêÔ©ó+ˆˆˆ\~©­Ýe6ÇÅéÓý/Q枯´Ù! )½L~my}"FdEDDDn„LÖM›6Í›7ïé§ŸÞ¸q£×ëm{uÍš5••Жaœ’’"ôQ´ xž///¹BÞ§Ï™b—„ø°Ûíuuu×|B"""àà¸õåàtËÎJL芖–‡ç*ívAb,P.:²"""""7‹/ž4iÒ‚ ÞyçÙ³g/Z´Èh4 ¯–•• }hÛ*·ÚÄË-Z„1æ8nÙòeÀÐŒ D†ôtËËË·nÝÚ+“ù“³¾²jMS3ð<øhò‚õËÇ °_n³Bxª‚<ÏÃei¼_M:ëåxqÄÔ‘†âââ£G®ZµJ¡Plß¾ýÕW_ý׿þ~çwRuÓM7íÚµËh4:gDˆ„(¬ðF¡pÙé2@µ)š ^/Çqµµµ½4-‘k‡¡¹Ùl6cÀ˜Ç•ååF£±C]HŒ1CÓÁ!!~þþ<`PôÙ…ŽžÅÎq«Obí6`Ù‡c¢ƒ•Ê®ø•ž?m³€Ž$ƒ¯ "àïÎ.i–].™PÑñ»z|"""""W‰¤¤¤Ùsf âS‰‰‰.—ë•W^Ù±cGnnn@@ÀСCŒFãš5kÒÒÒ‚ذaCSSSçÇlkMv!$"r£àv»ËËÊNž8q¼¬¬²ªªÕ`°77c޳x) 0€Y*eÉ9MnÛ bY…×#²w0Vq €F¬T«ÓûÄÅEFG‡GD\É8×WT®nj޵Ï}±±>]ÂórÜ»ò¡(½²³ÐN@ 8Þ~²—[Ô’47',(=_¢#+ÒÃÔÖÖšL¦†úúªêj8QRb0¶ˆ@YÍ–ºšj¯ÇÓÉÛBþz}@` =R(ä‰ ‰ £V©cccåJE°>¸óÂm‘»Ý^]]ÝÔÔtºì4ÇrEEEv» ·Û]YYér».öF©D&“É0ÆA¤§§K¤N£ÕjCBB®å,®*ÁÁÁ‰ ‰Âc­VÛ?£?¬X±bòäÉÉÉÉ÷ßÿܹs,X°{÷n’$÷ìÙ“ššZXXØ«£¾"Z[[kjj+«*=nOqq±Óé$ÂétVWWwb2©,"2‚¦h (*33“$IÿØØXF#öXùCR[S³uÛ¶}”=ju8œ2™E¡°)”V¥âä‚$iš&ÎÞ³‘ êD®c£Çƒ½^@Î6ÄN'˜L¤ÍþÓ/[T?ü °Û.<<1%妡C³sr†éú€í,û}Yk³˾šœ”ê«»¤ê–‡±ÐœLM’þÝíO‹JLJ ÷÷¯:U 11À²—~ÏÕ€$ÁØÕUC>­ºü†¢#+rEìß¿ÿø±ã凩«¨py¼ µT&Sjµ>¾: 1<ŽR)o e ÀE[ò}º´´”¦i¥R©T*µ:-ERAAA~~~<Ï3 3lø0¥B‰;²Èáp444¸Ýn„ÆøÀ¯Çåt ‹ìv»=888666===333!!áÆ =Ñ~TðÒÚr †yøá‡V­ZµlÙ²”””/¿ü²¤¤äСCíkÂÎmíéô&óšqòäÉÝ»;uêTEE…D*Q«Ô …B«ÕRÀó¼T*½é¦›ärùŬÂf·5Ô7x½^¡E\AAÇs»Ãd29N‡Ã׿ÿŒŒŒ¸v£Dn8lVË7ß­Z÷Ã5ƒ9 ÐäïÏæ£U*’¢H‰„¦-M“…%ÌùNÆçeíSH1 ÌóœÛyÞëv5{< —ã¸êê'JVíÜéc2é#"{ðÁ›FŽìÊÈÿ¯¢beC#ðI’IÒ”x'a$„p¿‹1A’‰ä’]jãâ¼Â0æy·Û…yÌó¼×ãáyŽãy‡ÃÖX]Wuº´òpÑê××–—I¥Ò>ññCsûØà?NøíIYYÙ† víÚuâÄ ¹\˜••5aš¡iŠ&I’a@ a$ÂI !Ä0 I’sYxž÷x>çÀwá4BP”´ÝZL¡820Æ1±ñƒ±ëu{8¯·¥¥¹ª¬lOqÑ’O>SÊå<0cÚ´iݸ±¹ªlذáý÷ß·Z­IIIýû÷Ÿ4i’\.g$Œ„‘&Ô¶'Æç_9„ŠûNÞþíÂÙðwŸAXX˜ç,n·»¦¦¦¸¸xÞ¼yN§ó¡‡š>}zOÍñjc±X¬V«J¥ž677Àí·ß åååÛ¶m›9s¦Ðºµµµªª ’’’€ áÛínnnö÷÷gYÖ`0@```¯t^½zõ¢E‹8ŽKNN2dÈôéÓ%‰T*¥›`è6/¢V!i·äÚ¦Òж%"2Òëñ¸=n¯Çët9++*?>{öl„У>:qâÄžš£ÈU¢º¶öÑyó~u¹É™3J¥TFÒÔ™|WŒy®{Eð] Í1Ñ4Å0”R 80È”tÌh|æ“ÏöýöÛÛ¯½v±Ã,+)ÙXW <Ÿ66*²ëáXÏ™L‚ˆløå'•žBhPNÎñïÿï½%K?óÜq' ÈŠžƒËöü»ô@’€aóæTÀï,zPvv·WVEGVäÒ464ÌyòI«‡Í½mÔôçæI¤Rš‘0†"©sÜÖK]TºÊy׫önñYHŠR¿y„€¿^Ÿ8ä¦[ØG=å§Nå¯ûá“/¾xç7²³³{`<"WŒÁ`xíµ×ÊÊÊî¼óÎØØX¹\.x)B&´+®ï6z9mI’”Ëår¹\øD½^Ÿ––æv»«ªªòóó…òÿààà+Àµ¡°°ðã?~úé§B»wïþð£`È!Bð¡C‡æÍ›wôèQŸ‡~˜ ˆï¿ÿÞjµ@VVAc¡åÉdÚ¼yó”)S\.—ÐÌV¥RÅÄÄ\˹455Í›7Ïb±ÜsÏ=‘‘‘2™Œaš¦Ï±Š+óE:· Š$évV’™™ér¹***V­Zµk×®×ÿ󺘶tÝâp8Ö¯[·þÔ©è'ŸFB²Æ|‡e[×|fmQ”D£•øhœcdk—~qË!·uáî§,–OO—× ñj¿´MWñÀrÜ)› b(*òò“J/„ ˆØèèÿû´ñãßøàƒÕÏ<9¡_?ˆŠŒã+sjÀbýû¡èˆÆãyjÆŒ™÷Þëçï%é^¢#+ri¦MŸ>â®IYÃrå29}6îuåžÇræ‚„1@Ñ ÃH$€P_&!9µ¢¬ôÁGݺ9_ÐÈé],XÀ0ÌSO=¥T*…>Ë5C›oíüZŸØØØ]»v½ôÒKo½õ–N§»fãé¾~¾'Nœ dÆf³™Íæx`òäÉ2© 4¼è³& ¥PÖ––îÝ»÷BG¶Ñé\Xt´¶Õ÷x¿~ƒ‚õäå,!zx®Èl„Bi*ºç~¶*•*33s釾õÊ+ß®YóÕêÕÇ–|©©  Ó.;V{ Ðï¹ÅƒÉpê”W–Ö cÆLþç? ¨V«»—NÐÑ‘¹ï¼ýöÑ'ž:ÔG£Å<-¯1— Æ0&!SÈ“ÓÒ ©ô…^øä“Oz{\v<¸~ýúgžyÆÏÏÏãñ\'&$ !¤V«#"">ûì³åË—Ï™3§·ÇÕ1mi ©)©ï¼ûNXXØÒ¥KI’üÇ?þ1sæL½^/¬˜+•Ê—_~yèС?þxmmmÿþýüñ¼¼¼~ýú1ôoL&“Íz|Vzzú²e˾úê+Ÿ·ß~{̘1±±±—Ì_ïAþûßÿîØ¾cÔ¨Q†ã¸^´ ‚$ŸÉzj³ ­VñÁ¤¥¥eddôÖØD:$I^›6U½ûNð¤I Õ<ßî,B˜e]uµ–mÛlù›P@€bDž^¥RãΈ3™ì§Nµ|¹”7™¨¤dÅ€>ýúÑ~þÂëš%iüýÃÂÂÎû;Ë.?yrQñ1ˆ¼¯O¿Ëtæ¼¸Õ ©(:DÑ“‹A·OÎ~|ö#Æ-[·nÙ½{÷/?Ÿ*.†à`B*åƒô •BPh47Sðzáôiày¨«— jj¹|`VÖ­y#”Þ¯EÓ M÷TÑ­èÈŠ\…Rɱž¯?ýøþ9O24}ý´é„Ðæ¾/?Y2&oDoE¤R)Ïó1±1:­®wùçA„ÕjÝ¿¿Ãáèíá\”˜èA—€ †f^|ñÅçŸH’$I²½ªÓéÆ7fÌA‰¬öG“ËäyyyÆ ûøãBB÷¯kéÅ€¯¯¯ÛíÞ¹cgHpˆJ¥ê« ¢®®îÎ;ïÌÊÊúüóÏív{Ûv£ÑxàÀF#ÿs7ÿ¼®Á˜É`ðP·RY>÷Y21Éÿæ›åñ Éi]„°Çc*ØmZü «Š+*l_|î,üÕÿî)Š>ñ@’€1Aî––š×ð‚»ÀþVhþ­ÐL’A¯¾æmh0þò 6·Â˜±lUÕyVãuååÏì+̃Dú^Vfº¿ßåþö8ž» ò¥© «c¢ Í04#—˧N™r÷äÉ<Æn§³ääI«Õzäh‘±Åx¸´ôÿÙ;ïø(êüÿ¿?3³}7›Ýôd7½CR)¡w<Á¨_ –;N=9½ãÎ;==ïôgÃ;<ñ±vQA” @BK%¤÷žl¶—™ù|~Lˆ1”H ê<Ê#;;å3“wf^óþ¼KÍéÒó¦Ï)ŠùÙÙ ÃŒÏzP¡PÄÅÆêõz¡ ˹·£+G²"ƒ€y~Æ 7»yþÿfϘ³páìE7DDÅ „€¢Ð99Ô׊¾éÈÎŽ¶#{÷}¶ñÝð˜˜Ù7Ý,»â9 ‘aaRö¤æææ?­þÓøñã-Z¤×ë™uMì§oþÚápìÙ³g÷îÝã™3gŽædŠ¢úOÀ1 Ã\øiMQ”l°º’ÂãD2ää’‘`ÎÜ9ååå>úèÔ©S.\¨R©ÐY®Ú!BþœME5›Íßÿ}NN¤¤¤üt+µý"À” ˜6 RÇñÅÅ­~­-ô˜1šäUx¸4Ä€„?Á¤»º¸uñ¼µà”éÕµT\|àŠò€@$“a‡£á_k:>þˆY±Ra0`#šéÞ¶WT¨oºY7w.`l¯«ëùþ;|âDëㆉaΈ‡jëúïÞÁóœ9óÀÁC‚çøí Y ÃB‡X8ö‡1rÆlž™L§PŒô_‹ð¶ 2©4##¦OŸ.|u¡‰”¾?á³~dÇ( Y‘Á „Bè¶Þpç²]›¿xâ¡ói³ÇŒKM7.$4 A! QÝ×÷ò¼% ®áïAˆÍ%„ð<Ƙ=]]e%E%§NÏ=ÔÞÒ’9uúcÏ¿™øáºÿ ÛÑE® Ìc¡ŽÄöíÛ—-[f0&Mš”™™Þë¤( 8‡q–Y¸ 3×B†;Ƹ­­íرcÇŽ+..NKK[¶l™^¯ß²eË(‰yø…@áXnåÊ•‹åÛo¿]²dIlllvvvzFºÑ`¤(Цi@ˆB¨/|ö²Õÿ9Jl cŒ1f9Ünweeåþýûóòòªªª222î¿ÿ~š¦<(ZÅOJ%deAÖx°ZøŠŠžâ’žow@SÑ¡á´^¢TÊÃâQQ¹BØì\Å9ì–'P``àŠŠáyâñ ©ÔoÉÒ¶WÿcÎËçÌf̲ÎêÛ·ÛQD„½¢Ü¶ó[Ë! ââAë {÷À‚ë à‡Z;ž1îp¹Ö®)(Š€ÅK¢£/)4V€Å¸Ìl„€aâôºË½h—ÃÕ¦—Š(dE†!Ä; à¶•Þ¶òÁæªê‚ü#Gs¾óŸW{L]c“Ç…†CâǦxûúŒacÁÙ†h !JðëPÚÁ˜çùÞûÌóäláj»ÍZ_U]]~¦¹±¡¾¦¦¢¤Ž“4&-ý¿<“’B3 æy„Ð0Çþ‹\ÇEGG?ðÀ÷Ýw_iiéÑ£GŸ}öÙöööààà”””ÈÈH_Ÿ”äÁNÐYù" hšAû…ZbŒ±‚ª¨¬hnj.///--mll”J¥Ó¦M[µj•V«€†††:k‘‹Ã²lLLLttôòåË òòò6oÞl6› CZZZhh¨¯¯orr2ÆXxÉé›”ìýù¢V0ÆÇõUSܽ<Ï󘯬¨lmm-,,€¢¢¢Gy$99yúôé?ü°N§“J¥#}ú"à ÒÒ!#DAS#__ÏwuyzÌöíۀ硺ÜnµƒîÀ㆚Hš×¿Ù›ÉD!p»¡µëÆ÷¬¡¡à¥‚Áá þþ0~,”J ‚†Ø¿êë! Pئ Çãy¿¢òw'OÕ4 µ,2òʼn¼.kJ„ŸD²4©†’?uD!+2dÎV6 ŠŒ‰Žºþö»Bv»­ìĉ憺¶†ÆwÖ½ÚÓÝÝÚÐ W(‚ƒÕ^Ú°¨(¥ZE0!<ïìÄ0’óV/pœ“©¾ªÑ4BˆõxZº»º¬fK[s“R¥4DDFd0$gO‰3VççPEǘðƒM‰\+xž§(*99yܸq+W®´Ùl………………]]]ýË_ ""B¡PÄÅÅÑ R‰Ôh4j4š‹øÆBB[‡ÓFrêÔ©†††¶¶¶¾uÒÒÒfÏž=yòd??¿>™Ëqœ8w|m<å4MgdddeeQe6›ëëëO:•——×ÑÑQ\\,‘HBCC5Mtt4¢ÈerƒÁ V«/2¹‰(TQ^‘››{òäIa¡T*õõõíîî–H$ÑÑуA§Ó@ZZÚ믿¾{÷îwß}·²²rÆŒ ,ʤ£Íó$24ú²éy„  ³ÏÔ÷€Õ ­­?ÚŽ¦¡­ 6¼F#Üz¸Îv?–J!,ÞÙ--pÿr0†BÎ~(+ƒIÙŸ@ ¯î¤Ð› ï¶ƒC£Y‰ÉÊwߌ¢€¢@*},.îïY™ªË½óxx~o{ ä/‘Äyk/o'?'D!+rÉLxÌóÀ€T*— “…E n»ÕÚT]m³Zê*+V«á]ßÜx<ï(ÇzL¸œ B”ÞÏÏyž‘JåÉÙSt¾>z_¿àˆžÇ„`À˜Àcžç¸ öÞ³º “É¢££cccW™PèôÌ™3N§³¬¬Lp¤±,{øða‹ÅrUAQ(Z/­ ŒôzýéÓ§…º¤Çœ:u*99Y§Óª„3>«P*•‰‰‰cÆŒéëàŲlyE¹Ýf¯¬¬¼ì.—ëàÁƒ6›í¼V!lR\\lµZ}}}F£`ÍÍÍÿûßÿ„ý455mܸÑb±lÙ²å•W^V.((Ø»w¯J¥ºë®»D-ûçÂ%¢JP8Q “MƒR áÀöëØìqƒ‡…êjho‡Ð08<Z-PèGû×zÆðõV¸áà1.Ð p,Ð 0Lª·÷R’oм’Sb1.ïé„$’oï+ÙÕÏQÈŠ\„€àíMÓáqq€Pòø PoÄlofÏÐB >[{Œ B0vØìÃ;~‘k‹º:@V eù“““û– %-¬/…‹‘HNž8ñæ›oÞ~ûí·Ýv›ŸŸ Ôc2mݺõµ×^Û¶mÛÃ?, ÙÑÌyûuÅÆÄ"„úWºˆU0 SXX¸jÕª¥K—ÞqçÁAÁ€ÍjݶmÛš5k¶lÙ)D@q•••_|ñÅk¯½– “Ë[[Z6oÞüÁ´ð؉ü¬8Wãðò‚9s!ï(ÔÖ@P0P¨©Žv€³“}toßõóìú»Z1ç9™Þ'R£^ywlÌf쀇lVÉüårŸÁÒ: ˆBVdø!x€àµ¹$sÙ]âB±±±¿ºþWÆår€R©\¸pák¯½¶}ûöU«V±¬èÅÿ‰qIö “ÉÊË˃ƒƒ.\¨×éJ¥ .\³fÍæÍ›{ì±þë<üðÃãRS]N§Óáðõõ]²d‰Ùl.**ê«É%ò €€\ññ°û{øj Ìœ:p˜ÍðÝ.¸¬HzÏ?ÊÐ/]<\Cä0.4uEMG‹q Y‘Ÿ(Âxžw»Ý‹/¾í¶ÛÜn·–αœËå2›Í0škl‰\*²—˵páÂÅ‹{<žçûl OÑØD¯×'&&ºœN!â–ã8µZýÕW_‰Bö—¢ :nû?Øö ¬y¹w¡\¿¹¼¼àÈ‘³ÞÖ¡fK0Ñ ëü‹q^g 40ê;^D!+""òÓƒ¢(‹Årî̯Á`P(,˺\.“ÉÔÜÜÜÕÕÕÑÑQQQqüøñk2T‘BhfÑÒÒ2`yHHˆR©ä8Îãñ˜L¦–––ŽŽŽ®®®ªªª Ù€L&ÓëõV«UøH‘Ëå¾¾¾<Ï‹Bö™ ¦N…ØXÈËƒÊ „©S!, òóÀ`//À´ÞçÎKü~¼Çá„'¸°Ç jšIЊYQÈŠˆˆü‘J¥ÇÿÛßþ6`ù›o¾9vìXŽãNœ8ñ٦ώ9êëë«T*5Mhhhggç5­ÈH ‘H …gýù÷ÚÏïñxNœúò‹/srrôz½J¥R«ÕƒáBa¯ªôõXù…QAApÓÍ@Ó€1ð<˜LÐc†€@ÉÀ㌠8r,àmµÙ€¢`ö,àG* Ÿåñ¾ÖV ( 3æê‘µˆBVDDä§Ïóþþþ3f lAìååEQTUuÕêÕ«#""zè¡qãÆyyyy{{3f挙×d´"#Ïó~~~çÚ€^§GÕÕÕ=ùÄ“>>>+V¬HKKÓjµZ­V£ÑL™2åÜ]B„¬¯>0Æn·ûš7?¹8Ãý²ÀㆆÉ 4X¶·pÍ@Wt´CbboÉXär0™c è¾„fèîŒaÄ* B:N°Û@" ”ÉCÄþÉ Y‘Ÿ"'))©»€ >¶lÞÂóüO<×W @tÇþÌà8.>>þÅ_°\°mÛ¶Y­Ö_|qܸq}6Ð<0«ÍÚÔÔ(d2 c³ÙjjjBBB´âìíh!ÄÐ4ò£b8BóŒä+¥@ÿ£y~¡Ésÿ Ýï¼ O< ÞÞ€( \NJGF‚\<þþl€#‡!, ŒF` Ìf8pär é"Pˆ _Œ,OHnGP0L¢¯Ïpíö§Ž(dEã94äŽ\€H¤RŠ¢YÿPî„He2„(ÛÕ÷RHerB°Çíb¡®‹€(J¬²4¼&çVJ"„H¥RŠ¢<OÏŠL&#„x >x¾ø&N<(*†Caî<ðõL€¦ã$=¦¨Ø˜á:eŽ£BÓ²$1Óë,¢£Á¸ýà!DM3üùžƒÂ0’Ó'NôtvÆ¥¦ju:AËÒ s,'Çãt¦NžL3½“wËæïÝ+U(R³³Ï-O;t(š’Je=]]I‰ —½‘áB¥RqÇr,Ã0ýe‡D"9qâ„ÃáHMMíK$'„äää0 “™™)h„Íf+**òòòJJJ:¯péDzóæÎ;zäè|0sæL‰Db³ÙNœ8Q^^îíí-¤ïZYX_¨ºïñx4͈œ¿Èù°Ûí4Muww'''+•ʾwžÜÜ\BHff¦°2BÈét9rD¥R7npษS§îÙ³ç£>êììä8ŽRXXxúôi•Jåñxìv»J¥ê/g6nܘ@©««ËÏÏojjš>}ºR%ÎÞŽR4¯®»îË]ßå:±±àã %ìØùyðàC–Þ+d¥2x{tvÂ?Ÿ?ÿdë¿ÿ°áí~9[d2HM› „C‡zûùÁì9ž2YïÊ<©©ÐÔ§Ëà·{WÓë!5æÎDö@C=TV.KM:múp2OÈw­m€T"I=²g…¬È L›1ãý?>¸c{ò„I!áá€1Ïóü¥D²Ëòw^~áØ¾}k¿Üâ3a¢ÇÀL&ÿÓÿdzìæÂR•VËáüË=wÑÉþævwÉÉÂ…h𡦧«3ÿÄ~¶Û4}úôK݉Ȱ™Ÿ—ï­õ „³=œd2ÙÓO?ÝÙÙùùçŸûûû "c¼zõj8|ø°à”¥(ª¹¥yõêÕ ï¿ÿþ "†çùÌÌÌ¥K—æææ~ÿý÷àë뛘˜øøãçææ®_¿¾²²2)) cLÓ4BÈd2=rT¯×;vį…ÈY233CBB Þy禦¦O>ùD£Ñ¿\Š¢„:¯û÷ïV~M«W¯6[¶l±Ùlß¹Çí^póÍÕuu{¿ÿþ‰'ž¸}ùò}Û¶†Ç{ÌEÓßw_yEyZz†¿ÑØÔØAFã=¿ýí£<ðþûï+½½Þ|s{[[dddvv¶^” £—ÈȨµO?½výúGŽt©T¨Õ$TZB€ã`êtèì€Îõé3€¢65À ˜5 ¢£¡²ÚÚ@£±c!"¢×éÛ·šV 7ÜãÇéSàaBž>>àrAq45ÅóøÖ1 ¿}èÁalç`Ùêžð“0cÅL¯³ˆBVdt:ݿ֬ٷwï—¯¯sð\bjÚ˜ôôȸxDÓ„ç1Ƙ|Q]ëvºî}ô7.»×ݧBÜn÷ÿÛøÇé’+½oÈäJÅ?ßùŸT!ï?¥x(JhK!Š’0’¦šš’“Ç‹Ž³›ºçLÈzéÙÄÇÇ_éù‹\1‰ä‘GÙ·oßçŸîp8233SRR|}}1!Ï<óŒÍfÓjµýý£Ï?ÿ|ß-Æ8(0èùçŸ×jµC1 Œ±··÷oûÛÅ‹×××cŒÃÂÂüýýe2YPPPll¬ŸŸŸT*µÙlùùùùùùN§sáÂ…³fÏ2 #xD~ŒZ­~â‰'öíÛçååÕÒÒRZZêíí-X!dÍš5ýßX!:îùçŸW«ÕB-Ø‹ÃÊdÙŸl\û׿~·híí}ówÛÎìÚUßÜœ:i’ï?žˆØ»ÇÔÔ<6.N÷Êÿ£}üÅýkjTäøSÇ‚¾ÿ>÷»ï&«”ÉÝÛó›–ŠŠ›–.Õˆ¡£Š¢222ÞII).(¨ª®Ê+*~Ûnïv»`ß>€€ðñ¸ùf Xö‡ÀY‚áž{èÂÔ Æ€DEAtto¡Ó$B½ ½Pïÿ ÓÀFmmÐт۶ 9yÊœÙÑÑ1±±Ãx²˜ý-­àv#§Ói%bIì^XaDd(ð<âäÉò²Ó§ŠKKª«M‡144".."6N«÷1DD" aŒ !€1 ÁD*•"šfÝž~aˆD*—#„<®ÇÈÊå„ËÕ?F–¢)„DQB…¢i¦¹¾¶³¥µ¥¾¡¶âLMe$644511&66+3S=ØLqmmíÚµk'Mš´téÒ¸f"?‚çù‚‚‚‚‚£GŽž9sF.—ÇÆÆ¦¤¤øûûûùù!„úzÕJ$àt8ú¶=7FvP†¶Bè¬e´··›Íæ’’’²²²¶¶¶¨¨¨¬¬¬ÔÔÔôôtÙeuzÄ?óÌ3J¥Rð"‹\*Ç–””äääTTTh4š¸¸¸øøøà`·ËÝg„‰TÊsœÛíÔ0ÃxŸ86îÄË‹¯z­½ÊÃFµ5š^|U÷ôãÕú€H—Õüç§´ÿ¾18ÌÄñÛßI~·üË’Ò[ý€}þuôsO7Ë”™Y®øDÏÃÄI—zR‹åŸÿügTTÔ~æL~MMAGX,À0àA@SÀ0`0ô&~øø€Ru¾f³ÏÅV+P˜L`6!`ꇬVè1¢4>úl£1366>,,08Ø×ßÏbÐû ¿#߃ñ#G޼QXRé?ÓÒþ:.eØñEôÈŠ š¦332232¦56666vwuÕÔÖVÖÖ~s8×îpZì•Fá¥óÖù(䊃Q¡R‡†ÊÏÆ½B¤çÓ 2ù@‡BH¡T"Šˆe=­­¶žK©µ©Ñãö´76´45™{z”R©R©0úû »){¢^¯  »7BhšNKKKII™¾¾:n£ÎËWÍ­BO¯ì€€Á×þÅ Y‘KÃ`03°‡£«³³««ËårÙm6«ÕZ][g¶ZÚJŠœONG‡ËÍZ6þìƒÆÛ[ëã@3Ì N!–žž¶~uË•R™J©ÐªT>z¹L–r]f†^¯Wk4 …Bëååã㣱Ò}"ÃMÓ1Ñ11Ñ1„ööö¶¶6‡Ãa·Û¬VkYYÆøÈ‘#§»»[x*P¬ê“/Àãñ455 aµ!­V‹ —Éd:.&&F.—+•J?????¿ËsÁŠŒ‰$>>>>>cÜÚÚÚÑÑa·ÛGmm­Íf+++ãy>''‡eÙžžž¾ZÊ‹ÔÑ$„Õh|>ßx*<ÑóÙ¬Bž—ë˜9—Ú°!2n iiÒÿññëUê1¿ûƒ¹»ý ¾¾Œ¡¹I–ž!€ÿ»Z[Á`¼jAd‘Éd!Fcˆñ‡_ŸÃnÇ„,îêâ1Æw›L‚Öípàs˘ô#•22`¬R*{Óh4¹L.—K¯âä>èt¹Zº»!_‰4ÓÏ÷ªzô# Y‘ËD©T*CC¡¡}K,‹Ëår8<ÇÙìvŽe]N'y!H «««½£ƒå84X]-D!o­—!¤7`!$“ɤR©T&S©” ͨ5FCu¿‰üAœõ+xXÇíéêê"@Ì=fžçûzX–mhh°Ùl÷vÈd²ÐÐP¹\.|ê(iµZš¡½4^r…\©ÓÏG;ÂKKpp°ðÑåryXOww7ÁÄl6÷oëv»›í6ûŬ‚É”)·††Jhx‰D+—#­·7‘H|Ôj¹\.Ìø¾M‚‚zðõ_¿9I‘kàÈW«ÕÂÇÈk:˜Ë€r¤µ 0=N§S1¢xûñZˆ ^^^^^^úcìr¹0ƃO½ $•Jņ:¿(¤©T"í}Ì„ üÖív³,{É2”À‘Ÿ‚ÐôÒœÿ®"Z…È/н­­€0ôCÈàkÿ’…¬ÈU‚¢¨‹ÍŠˆ\™L&Fˆ @´ ‘_BŸ44PÔ¬àk=œÑ…89+"""""""2z9ÙÙÕi6BQ*u‚˜òcD!+"""""""2zÙÙÔ(tâ$óC~Œx9DDDD.¡îµ…ÈèB´ ‘á媄n‰ˆ¸Öcuˆ1²"ÃÅb)//çy®¤¤Ôj±P4ÝÓÓsúÌ›}Äó>Fe æ1–Ëd‘‘‘¾¾¾/¯èè葼ȵÅÃzŠ‹ŠyŒåç{Xæq]]]UUMÓßc+•J9Ž›0a‚\.ŒŒôái8«Õêç'¦·,v»½¬¬ÌívŸ8q‚Ç<Çr555uuuC±ŠØØXЦ€@vv6MÓ111}Ùë#ÆØáphkÈ"2šéî­5[Ì¥Å%„öžž¢²²³yÐj9B‘IQQ„`…B™9>‹¡™èؘ+©ÕÕ`·W˜º€–ɧŠd" Y‘+¢ªªª¾¡þð¡ÜÆÖÖÂÂSå¥e ñö ¡hIhT¤B¥Â«Ôꤩ3drŽs- Ç**išb=ìß~k1õ¸ö–†Ìó‘±1q ‰‘FczZZLllLLŒXŠë'JSSSiiiyyùîÝ»OŸ>ÝÕÕ%‘HÂÂÂhšŽŠŽ’0„¯¯ïì9³«> !“ÉTUUŲ,MÓ_ýµÇãZy©Tª„„„)S¦$&&ÆÇÇÇÅÅ ×ø !‹E§›ž'555eee§OŸþî»ï*++Íf³B¡0 R©422’¢(š¦ýüübbc†bB}bØ´iÇs-Í-N§S«Õ&''gggÇÅÅ3&<<|¸Æ1¶Ú¬Z­v¸v(2Ò”W”—Ÿ**úêûï{êëy·4ìå X.ƒ€@>, ávª«ë«œ,K¿þ:P]]àñÈõú±©©Ó'LˆMJJ jÎÖ‡•UÀc ¨[‚ƒ$âÃîD!+rÉ”””|»sgÎÁƒ§ŽWyiBBâÇÓ‡GÞ;÷ºˆØDÑ€B!„h !Dh+K ½ë Àù5fñ’¥‹-ÊÈ̼x¹Éwªª ê¶ÈŸ\Ü«Ç#2Tš››ßÚðö‡$Sª'L›Ÿ:.!)É[çg*Hx´ tþ¾ÕÃBguíÙç“Óå¬*;]zòDÁÑ£åEÅ3gÍxì÷¿ONNÔM[UUµvíÚÙ³g/Z´h¤,ÒÓ§O¿ÿþû›6m ÍÌÌœ8q¢¿¿?MÓ}ï9#×àã^‹!„X­ÖãÇ;vìøñãøÃ²²².o·v»=::º®¾îjöøù™QXXøî»ïnÙ²%!!!==}Ò¤I:N°‡¾·šBP´ÂÄl6ççççççM™2eÕªU©©©—·Ûšššë®»®¤¤Dœ)8pà¥7ßÌÙ»—$§HÕII P ïIˆ¢`äÚÌ M•1\2lw—ûhž§à¤Äjýýý÷¯\¾ü¼oPùíYß|§òòê¾e©˜éu.¢»Ý¾öµ×Þ~ûÝùKÏ^tc°Á…Fº¯ôÐéë¹níé9š³ïãõoŽIˆá¹gÃÃÂ/²UééÒWÖ¼rÏ=÷Lž<ùª ó— ˲ÿú׿6mÚ4qâÄE‹éõzBÈ5|ÌB!n·;77wóæÍYYYÏ>÷ìe´þÚ»oï‹/¼(¸–E.Žãžzê©ï¾ûnÚ´i .º_[«»Ý~àÀ¯¾újÞ¼yO?ýô¥Ž‡eÙ¯¿þzÓ¦MüñÈ Säòq8·Ü¿|oi©bÊTmödès¾\+0„\ímæ={øâ¢¯Ö­›5mõãÈï‡r¯+-LVKy!+óZt4# Y‘A`YvÑM7ãîyx•DúÓp;Ñ4ýÝ7[ß|þ¹ãG^$~±¨¨èå—_~øá‡322®æð~i`Œ}ôQ‹Å²lÙ2^‡y|­GôEÙíö¯¾úª¥¥å7Þ¸Ôž¿ÿýïï¿ÿþÞÏŽãî½÷^ooï[o½U£ÑôÍþ(вZ­Ÿ|òIVVÖwÜ1hJY¬VëêÕ«§OŸ~ë­·ŽÜE.–eÇO™R=~‚Oöd4Ê"Ð(š²777¯]»cí¿çΙÓ÷úÔévû}ö98@Ó%7Ý”¨Ãñσ裄7ß|³¼²ò–_/—íb?úÁϹ~Q Áøä“O^d5»Ýn±XÄÇ‘¦¨¸(''gòäÉ~~~£JÅÆØËË+##£¨¨è½÷Þ»¤m-V˦M›î¹çžÙÏ7žK.SÈä2©LF3Loô:Á¯óL¸!„0ƬÛív»9»¦ºê»¯¾ª,+0kæE¤‰Ó嬫«Æš;"‚¢¨‰&îÝ»·¢¢bîܹ111*•J*“I¦¯nüUˆq Fø—ã8·Ûír¹êëëwíÚU\\YVVöúë¯K$’”””ôôt£Ñ(ÜR …D"¡º¿UK¿Ÿ ° Š¢†¡(Šá9¾Ï*\.WSSSAAÁñãÇ=Ï-·Ü²àºyGó†~×êîî~饗þò׿\’WäªA@"…GV±‡·½ò/ P%$jÇŒ¡ýüÃÐ ’ÊÃ…úm0g]mË /’Ž6äRÜn˦Ïlrü~s¿:"²×ÅKˆåä‰Î_• …‡B¤³£gÃ[fÿ Çÿ"ä].ÂsØétTUYKJØÓ¥·Ü ¥¥}övª³ë%Á‹Ð?ÓS1!Ô(˜ÈˆBVdp!N»#kæÌIsæšM¦¼}» ÝòÙ'N»Óì„0 Bˆ‘H†A-“JM!MÉdò!Îz<–e!Äãñ`ž#˜°yŒ1æ¹æ†Æ¶–¦æ†Æ†šê†ÚZ§Ë06#ýëß '<æyî⺤µµµªªê±?<6LIäbBxžÏÎΞ6mZEEÅ‘#G>ýäÓÖÖÖààุ¸ÐÐPN§T*B ÃÐ ) BBH"‘ Zcìñx„Ij·ÛÍó<ÆØív &dµZëêê*++›šš¤RiZzÚÝwßš–„T×T]¯X¬–?ø0,,L¬Úv…B8Ž›5kÖ‚ ŠŠŠòòò6lØ`µZÃÃõÞZ™T‰D¡}V!•JMÃây^°p¹\Â=ÒØØèt:­VkMM`&==}ÅÊIc“ ´Ÿª”îîîwß}7--mÆôWtQD®sæÀ¼ùPRl/)µ¿µXBC¥êèhI@£RQ !šF4 ‚ o··¾ñ_b·ú>ú˜WF&㥡‰»µ¥î™¿w}ö™òw05æxÖjéúððóó¿ç^Ur2P´»­µk×.÷·;Ú>ùX™–n¯¨ÀÍÍÐÙÁHL€ À[P\ Dõx<+rƒËO5g‹*ö"ˆBVd¨p,ËyX¹R1kÑsnZL5¥¥å%EU•¹sêÊ+er…ÎWOÑ´ÞÇGëí-“Ë‚‚å áy…Zd0Hår‚ Ã0ç N"ó˜'>> 䤤ð<Ï0LPP··7¹P'E9Îææf»ÝNÓtEE˲„ææfŽãÚÛÛe2Yddd|||ZZZll¬¿¿?Çq<Ï;š¦mÕG}}ý—_~ÙÞÞþÜsÏ ×eù…#„yDEEÅÅÅÝwß}§N***ª©©Y»vmkk+Ð4-8k#""8Ž“J¥þþþ^^^½Vq¾®+!«ÕÚØØÈqB¨¶¶Öív µcŸzꩺººîînc¨qÒÄI×_ý¸qã¼½½{­Âédfè*¶¦¦æã?¦(êÏþó\!‘á†ã8ˆ‡„D nS7ÔÔxZZº¿Ý!HIðö¹œ 60 9ètŠÐP DªÕ²¸±Q9s–ÌßßÕÜM(†ÑÍ™ÛõúºžÜCÊèhÞbé>uŠ45ÉæÍ頻6±6;ôt ÐëùÇ­ ‰š ¡¡ TæãÁãá]¢:]®7ªkò;;ó •½:a¼¨a/Ž(dE. ‚‰Çð R«S&NJ<QˆBQ´¹»»©¦cÜÑÜÜÝÕév:*++v;EQ«µµ¹Éãv3Œ¤üä‰ í?:e ðóÐùùŒ%2I€!Ô/‘HB o­J­ ‰ˆ¤h ó<&ó<æyËí¹”³hmmÍÉÉYºdé_‘K†çyžç=Ã0III)))7Þx£àˆJзµµ knÙ²¥o«¸¸8!¨ñ\†iii1›Íý&''ßyç*•*::Z*• ^aAÇØíö¡Øãñ¸\®®®®¦¦¦·Þz+44ôÙgŸ½äÓ¹(‚UPõë_ÿzÀW‚=°,;}út³Ù|èÐ!‰Dâv»ÛÛÛm6›°MÓmmm===çîyÒ¤IBÝâèèh¹\.¬¼båŠÆ†Æ/¾ø¢  ÀKãåçççïïIy{BLBGGG]]ÝúõëÇÿè£^æÉ‹\x€Ðh e¤¥CFüùO==€[[…ÇŠbâ@ë'OÏ;Žvœ8|ß{…Lëß4ùùZ n7¸-fðñ¥¢¢ ‚ÚZøìS˜7¢c€cÇBE‚ éF­÷½Góõ˜€ef^ÎÌHòцìØÑŒ(dE.Œ Æ,ôËٔȤQ‰c .9Îöj:Û¥E ¹Rñü£«šª«…MB³¹èp.ÜùûÇ~úŽc !@½Mi !@ÎþD°ÓḒasW\\ÜÙÙù«_ýêJö#r…3Ë})Šš9s¦Ûýý«««¬¬L"‘¬Zµêî»ïv¹\ÚÏgŸ}öÑGét:///Š¢XŽ­­©Ýµk×Ì™3ÇŽËó¼ã²lÆátœ);SRRÒÑÑQRRRWW÷øãÏœ9ó2v%2xžÿÕ¯~Õ§GB&“©¤¤n½õÖo¼ÑãñP4-¤œ÷ïÉ‚ Ù²yóG}¤V«µZ-Bˆçùúúú¦¦¦ë¯¿~úôéŒD"t½~饗!e§Ë6lØžm³Ù^{í5¹\¾nݺ¨¨¨þ6y^ìv{ééÓÅÅE¦nÓÉ“'M&Óßÿþ÷ôôô½2"#Æ„÷ä±Iý¾ ÐÑmm ÑÀ²» >þµrsaÅJˆO€þv"‘À÷C|¬X ÁÆÿA[,»¤2a΀´¶‚Ãõ ç¾–©t¿tvÆ “¯ˆ{01A *QÈŠ 'ö°Z~÷÷Rto‚'æñ×m,:œ›4aâ w-3÷˜†>Ï{y´··ñÅ÷ÝwßÈFäÁ¿ð }Nç‡~XVV6cƌٳg›L¦ó=3 sòäÉuëÖÍ™3çÞûî ¡)Êår>|ø‰'žøòË/SSSå—[Ùd2mذÁét †Ûn»möìÙ—yn"CÃív?õôÓ}ÏmÇóé§Ÿ–””Lž<ùú믷Ûí²ÂÂÂ7ÞxcüøñË—/1hŠr»ÝyùyOýí©Ï>û,99ÙËË«/Tc¼qãÆçž{.11Q¡P˜ÍæÝ»wÿ÷¿ÿýôÓOW¯^ÝWIãBttv¼ºv­Z­X±bEvvö0_‘køÃÎíê„-[ ³²'ƒŸX­à¥°ZÁéøA‰Ò4˜ºòó`Ù2 iØ·ärÊ€ëW™‹fÀË xŠ `Æ €s”Àf‡|}cäòÛ££ÿ–ž&ªØ¡ Y‘«ês©J$’âü¼W­ ‹[õÏçôþþ|øð«¯¾:vìØ‡~X£Ñ\Ü233-ZäïïßgÓ¦N3 §Nêïæ¾zä‘GÆçñx‡\.Ÿ={vggçgŸ}và 7Œ3æâNÙð°ð÷ß8NWd”1¸]n7ìÝ û÷Aöd˜;h0ãÇCÞQ(,‚Ðé! Ün8|Î3çsÎëð‚D_XwQT–Årc|ü”ȈÉþþÃwb?sD!+rÍ º»³cãÚy¬üëß"âÔ»rJJJ>ßô¹Í6šA566¾û޻˗/ òx<EÂÈq˲'Nœ6mšd)TײÛí.—ëB¡"£Š¢Z[[ßyçààà•+WF–e…JÖ~éYYY“'OÆs'd9¡Z ¨Å@ÓtRR’Çã<¯c†aâããÍfó©S§RRR®ÂHdƒc¨¨€ÝßÃØ±0ohµ½–û÷… .$p¹ µΔ'TàrŽŒâ­–c¢½||†ao¿D!+rm (äqº>{ó¿§ç>ð—'ÆÏœyeeeŸþù‚ „¤"‘QBÈl6¿÷Þ{íüãSRRœN'BÈb±”––X9::ÚÏÏOmmm­©©ioo7™Luuu………×äD®„Ýn߸qcMMÍ£>šžžîv»B‡ãèÑ£VÖûèãbãhkk볆††Â¾ÄÁû×ét}7BÃ0:½ )Jlxù‹§© ¾Þ  Ì_#°gs‰¥R˜3‚S'áûïz—DD½÷³ÿŠúq5žs¢„oñÅ$/‹ç¼†íL~ˆBVäÚ€åïßûéëën¾ÿ¹‹—r#QÐ÷LbY6//oÇŽ±±±·ß~ûHKdXà8nÏž=»víz衇¦Nêt:€¦éÆÆÆ?þñV~æ™gæÍ›çr¹òóó·lÙrôèQƒÁ Õj½¼¼&L˜°sçNöBÝ#EF1㜜œ­[·þú׿ž={¶@QTGGǹ60mÚ´—^zÉápœû쳩©©/½ô’ÑhT(2™Lãö;„¢°Z­J¥RØ3Bˆã¸SEQéééªò&ò Ûßï†ü<øÍý‘€~êJ3@Q “A\Ä'B „à×Õ‚Û á½NÙiÓáÓOÀfµæìæ8¬VP*!9ùâNY‘KE²"ƒÀó<Ö¹6†aÚÞYórrVæ’ßüÆËÛ{DÞN²ZÌyrxŽÓéõK–,INIÛ\„ò3ƒ–B¤(ª¦¦fÆ ×]wÝ7Þ(•Jûò´!^^^Ó§O°‰Pèþàƒv»}Á‚ãÇç8N˜)nll˜ddEAÿTQšãÇ àÌ™ FãY‡+©ª«ç!<¼×#ëë <uu2®w5š§jkA¥­ö‚ÙÁ*fˆœQÈŠ ‚1,lǃŒDBQæ/?\QÈé°¯áÿ©5šßþíé°è˜ÍÓö+ª{ö0 ‘Êx–9sæŠ+´ÞZQÂ^CÔ*µ‘CÓô…"¡…ÐØµk׎;vÅŠ~~~|¿GÁØét^¨ô’N§€ºººÔÔT…BÁ²lmmík¯½&ÄGºÜ.…Bq‘á!„ÏóJ¥òŠÎSäR t:˜`Š¢íˆ²Ùlÿyõ?aaa=ôP`` îÿP'Äáp ¨? •J½½½ ®®Îår)•J–eÖ¯__]U n»ÿ}†çùo¿ýV§ÓÅÄÄ0 ÓÝÝ}àÀ/¾øbêÔ©‘‘‘Â`„¨$‰DrI]DF3£Qk·uÒô@?«ÁÐЛ·ÀŒ™pÝÊ~”¿Ås„@n.Èä0>øúÃ€Í ÕU°c;LŸ~~½Q°aa ×Ã×[ÁË ""€¢Áf…üc³2²ÀßðùÔ*Í˪ š¤ñ²ÈD!+2Ó¦Mûï[o}òßu‹³ÜÛG9žåØË.õÊÐLiQÑÑï¿Sj4o¿ôB!?¨•Zýûç_â® ®‘fhF"áY~Ç'5UV¬y÷݈ˆˆËޛȰh0vìØáëë+” 8wö!TXXxìØ±ðððÿûßV0 +V¬8ožç'L˜°mÛ¶õë×çççËår—ËÕÐБ‘1qâÄÇ[Ìo­÷yý²EÉd2‹Å²óÛ‰d„ ÃxÖ"'--ÍÇÇ盯¿¹óÎ;u:P” 77÷СCF£ñµ×^koo÷õõžçM&SBBÂ#<"¼ÏÐ4 cÁóÊó|jjªÑh|÷Ýw ].MÓÉÉÉ™™™ùùù³%0 Phw E;ö‰'žˆŒŒ¤(ª¡¡¡»»;11ñÎ;ï¤iš"•ɺ:;wîÜ9þüñøg”©ScþóŸÎœ˜5 8¾ŸœEàqCI ´6C©º»ÀóãÇÐìÙII°pìþjk@§š›š›Á`€yó@&ë]Y©„™³àóM°á-ЧÊËA*…©SQ‹ÈÒ4Hep¦ Ž^øÆ^Zíˆ_‹Ÿ¢[dpÊΜٺu뻾‹KJN›<%uR6MS<Ƙãyž»$ RªÕ«o¿5w×Î ­°¯µÃã:ÓåB 4MS4MQ´D&-;yòÄÁùd&Äß³lYšX`tÐØØøå—_~õÕWƒáºë® §(ŠeY¡a,H$’¥K—655wó­[·öõ#íBˆã¹â¢â={ö-mÇŽ;kÖ¬3f´µµ=ðÀ+W®\zËÒ>'Bˆ¦iš¦Bmmm»ví*,,œ5kÖwÜ5b@ä<ÔÖÖnÚ´iÛ¶m±±±óçÏ ö‹ŠŠ »zõ¦Ï?ïîéÙqàÀ»ÿþ÷ 7Þ$—Ë›ššvîÜY^^>oÞ¼åË— þ~‘Ÿ§ËÊÖ¾ûî›Û·Cr deÖ0‚èì„Çÿ|Á-ï_'æÁj…¢"È˃â"€?RÇÁ€²¯6;…Т=$$@|üÙ5Ð4Ð4ð”—Üæ™ûï_tÝuâÔÐ¥" Y‘!a2™ÊÏœÙð༼²ªªØ„11II±c’b’’Ô^Žã‚yÌccLÎ;u@3tUI‰Çå:¿‡Œ¦£“’.´-  ) !Š¢(DS!šf\G]eEEqQeiIÁñãþ:Ýäô´i“'MJ2 ÃxD®¡~Ö¾}û¶mÛær¹âããÓÒÒ’’’´ÞÞB(bIi Á¤OÚöG.—GEE]( !„1¶X,Ëy{{ëõz¹\ÎrlMuV« ¢(J¯.—«¸¸¸¸¸¸´´Ôl6Ï;wÞ¼ycÇŽœ"W“ÉTZZº{÷îmÛ¶Ùæd¶ìoÏ¿gOö¼yã_y.ﱿžÈÉÉ?>iíó¹ù‡§¹Y×Òœrüpý3/6•—¥qœlÛÖÚGWWž<9þ‹O¤·Ü~QD©˜µqC÷mË Ýž¸ñB~¿¢äÎßÖÕͼù总—šßþøãÇgg§¾ôLó›÷nÞœ™ðù‡§~ÿxÙœ1YYw-Z$W)çΙ;gΜ1cÆèõúk}…D†™¶ö¶’‚·m{gëVP©!>ââ "A}ÒûÆ?Šdõ÷•€EÇ6X,Àó VƒV r9 ¼k!`=`³ÐoY*__P*¢{ãhmV¨¨€ÂB¨ªŒ‹{dñâéÙÙ±ññ¤È%! Y‘KÀÜÓÓÑÙÙÓÓST\T\zºèÌ™3UÕR™419ÅÛÇ'4&&42Z&“ùéý|1Æc0&½!„0Œ] âžÒC‰¢(ª/㓦hÛÝÞÔd6™ëjkª»ÛÚ*ÊJ-f³!0hLl̘¸¸Œ´4½ŸŸßÐS|D®&===Í-Í õ ÅÅŹ¹¹%%%E †1cÆDEEéõz???8›Ä#ü€ á/Zf!$ŒPè@ˆ­¤)ÊápÔ××[,–êêêòòòúúúžžž¸¸¸´´´´´´ØØØÀÀ@áp"×îîî–––êúzëœÿ;¾×þuŽúŽØ“óæuó\ï}&¿ó¦“©“RkÎ~ð1IOOHî ·ËuÇ2ÉßÿÒ‘ìÓÓyô¶»UõuÉ_~Œÿô7ÉÎíM,R˜ïzñ5ù¿_¨Œ<ø½ãO•ß_•=#j×V燛Ë–ì _`îp¼ºž½~ÚªÃùï<ø»®ßüýñÁ]ËW%GDúˆéÖ´µµµ·µ–WTîÏÏÿ 'Çtú4èõaaàï^^ ÷µú9Ëóg¥*@?”Œí¾Ô*EE!`îöv°X ¶šš ± RÓSï˜3g|ZZPPPPH°R!:b/QÈŠ\N§ÓfµÚìv‡Ýîp8Nœ:ÕÕÝ]^UUQ[Ëz<]Ý&»Ó©Óû„EFðc‡õþþ—TýÀn±VŸ.¥†BÈfµU•ŸA­÷Özk¼"ÂB£ÂBýâý|}er™Z¥V©ÕfäNYdÁÛl¶žž›Ýfê6Õ××;v¬ªªª³³³­­Íf³ùøøFBˆD"1 *•jÐ;BÈãñÔ××;NŠ¢:;;›››† Q«ÕñññÉÉÉáááAAA*•ÊËËK£Ñˆy<£ Œq—ÍæS_GýáîUOníèôìØvo}ÑâÊöb¥FUWƒÆ¥…sVë¯jK÷´ÎÀxëäÿ¿½»ém£ˆ0>»3ëµ7Nã¸ÅJJ“˜ :¤ªhU.€@U?7¾w®\9õÀ+WΜ‘*ÚsU!.-Õ4 qã·ÈÆNã—}™+!!z0R£jšçwòŇÕZÖ³£ùõNêÛFJuðçWÃÖ}­~ºrÍïvnÐ…Ÿß¿a=üV¾|ÔüýÆGúÎw>¼òéýÇÞ'7ov[·ßY»ûù¥÷> Å÷ß™¯¿Ñ—ÎŒ4M_ÆãÙdÒév{òäÞƒ¿<Ý;ÄÑ‘˜ÍÄúº8^h#έˆêªXð·Ç¢ÝBmD¯#Q©V.®mÕj·®_ÿàêÕíz½Z­.--­V«årùT¯ñ, dñ L§Ó,Ëf³Ù|>·ÖfYj´ ‡ÍfSJéû²õ¼Õéõ´Ö‹/”VVVvwv´ÖÆØs+Ë;—RJ©””²†a±X‚R±òúȇÊÎæ³,ÍÒ4ÕZ÷ûýýýýü=Ú½½½Ñh´ÈðÑhDQ¤µ®Õj›ù®s%U±XŒ–¢bXdn“þhfÛï¦qüb2yk8xVŠL'Z÷Úíç­–þt:~üëCck­ï{Z !ŒRÇÇaqÆ÷·F•—çBÊåÏê[‡ååLëõK—n­¯= )•”oÏg'›Qúi"Úm±UÝWŽ×Æ3ŸÏ'''q’dY¦³,‰ãÖáa»ÛUJuúýgó8öø#Z­T®íîZk¥RõÍÍÚ… ¾”*”’Q)*EQøÏ¶0¼ „,N‹µ6,)„H“$ýŸhó`µBk})Y<;SŒ1ùŸÖÚ—žrðRžç…a˜§ªR*ßÛŽ7†1&IÏó´1qšþwº½ñ<ÏZïߟ}ßÂPzž"žd°8­u–¦ùÈŒü|âE¾åK™§ªçyA°ÚrÚY8‰gS8‰€“Y8‰€“Y8‰€“Y8‰€“Y8‰€“Y8‰€“Y8‰€“Y8‰€“Y8‰€“Y8éoæd:Œ endstream endobj 134 0 obj <>/Filter/FlateDecode/Height 317/Length 939/Subtype/Image/Type/XObject/Width 920>>stream xœíÓ10 €°ú7Ý ˜€q$ x˜ræwð2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ AÆ„ cB1!ȘdL2&‚Œ A\J endstream endobj 135 0 obj <>/Filter/FlateDecode/Height 318/Length 39220/SMask 136 0 R/Subtype/Image/Type/XObject/Width 942>>stream xœìÝw`Õµ0ð3mgvf»V+­Vݲ-YîÆ€iLï GyÑn.6[©QóÔ4»ŸIê_žµ:$`™VS„š$pT!„š,ˉd+ïÌ6v”gàô´¬Äb}‘ÅYx§G2sƒCÈ!´‡pT!„rt îgXáÚùž^Ë(ëfÖýkí×mWÌA€ɸ¦i@Êl5Q§Ì9y¡ï¡óЬøÌBhòÒ4­¹¹ù÷ÿ~zÅôÅ‹ŸqÆ6›eÙ ˆ)Böx­Îp8<ú+V¬ðûý/½ôÒÂ… —,YrÄGä{ó9–£pZ „––†žu×übó¿Ö€[õì³ó*<‚}Ç»2$Ûž½ê³ÛM Å¿ýã‰ó½‚ÝD öª¡ÉŒ¢ëzww÷êÕ«?ýôÓššš+¯¼rÆŒGuÔèt:ã,b"Cáæææþþþ·ß~»¾¾Þb±ÌŸ?¿²²ÒétÚl6ŽÃÜ„öš¦yž/((À«ÍÃQe¥î?WßÛº¼SO;ê½›g”Ú9qÇÛèJߦšUoµüv¤iÁŸýlfU¹äÂGMªªÆb±p8¼¥fËÚ¯×Æb±¼¼¼sÎ9'''Ççó û‘ñ‡Â– ¡ªjoookkë§Ÿ~ÊÊÊ\.— éLz 00Q¥ „vÇÐ Ïó4Mc(|hr可|h˜IɆ®ƒÈ¸|ÏìÜ;S4°RÞLOqY¡(¿ºf 5Têö™]¶ä]׃Á æ¡!„&1Qí6ûÀÀ@KKKsssÕ¬ªt:““Ãóü¾üýML(lFGGÇ“O>¹zõêîîîòi劢|øá‡²s„ÐèTUM$_|ñÅ^ÜäAÀŠ+æÏŸ?ú6†®Å=j*]âàÿ{a^®i¸I…¥ÒiKz ]û§ßn¾ñËü34òÂ’œì;ÇsL$™øÚ#„Ð!éóÏ?Ÿ?þ­·ÞzòÉ'³ìÞ´ Ó4]TTô›ßü&¿õÖ[o½õ–(Š‹/>ûì³EQ4™p5„ö#B¢k:†Â‡&WŽk¬M2†.G:HZ‹ƒ-qJ,=ü‡5Ç“_1‹eèçëc­ÊÆÙ9U0Q››ûå—_â¨0Bh3 cóæÍ¯½öZ[[›Édºîºë|>_eeå>>B7a ǹ\.³Ù\UUÕ××4M÷õõ¹Ýn—Ë•““3Q!„Ðdc¨F&î…ŒbbN4x¯æÍ‚ݵ¸ˆú¼% Æ7…3fÎÄR Ãx<ž[i„:@Òét4F£ñxû¸ãëíé}÷Ýwo»í¶… sì1gžqæ>fr „Ф•‘ÕP`Ý{F(š›/¸ÜV`Fš Í’c-¢~~öÚ[_0ݼf`éYù"‹«k „&§ì:---«V­Z¹råÀÀÀW\QQQ±pá‰*b¿Ì+l³Ú¬kIIÉ7¿ùͯ¾újåÊ•Ÿüç“_þò—‡c‡B‡·´"Ç"OªÐKÛ‹Y›Ã#äGÇš¬… |–å]TÂü®¥ç·$2ö‘6G¡Ã™’RÞ}çݧŸ~zæÌ™§Ÿ~ú™gž)ŠâÄ®²±_BaŠ¢(ŠÁ[à=ñ¤-Zd†ÅbÙe!„ÐáNURr4šÔ ý°8×KÁÈÝ6ДB’Ñ.ïÆÂïþïœT.éñ?9ÙøùÆ ß½/ô—;k­7–•^Räñ¬ICá}@RjT ¬ ´Lniž{A¹Ýj¥GÊ""‚]çÞh¼–kã‘PÒ(63<þý"4!ˆ¬´«¡• Åy”;+ $iä¡^±ÈË€v‡Ðõ|*šHØÃ øÌøÇ†ÐbI†¿Ð#~Çç/®°—xI±¦O«Jñ·r«~—ÅÞH |#^k£ÃÆbû€hFF“{(¢$ðvqä›+òVk‘‰vSº¡«šFÆ«)B“œ‘Q“ºÜG#9EÖ:jú/eây‹¥Œ‰¨†®ªVO„С€02J?(†fE§Ä £¦ÿ2¢(Jb) ´‘Ñ MÓXEÑ€¡ð>P’i9ÙªÑÆ! ‚S|¡ƒ€HÄ#JºMc(Öí”h›p°«„:”ⱎ´Ñi˜XÖé´Ð"w°«„LØ{JOW{gÇ9Ë)L3[©Qo±fRÐßöPLÛ¨Û<œÃeŽ9`5Eh2#DO¶5¯<-0Ú7]63=ò}NˆEã=]?IRaÁv gsIx‹ÐÔBt-ÑÒøE«u‹ä\§¥øÑ;@_Woß/R´Ê»$AtH¨žèÀÀPxïi)%­(1Š*ðN‰å’Rá`[m¸C6Ø|¡h¦ÍÂQ£¥S „ÆUN$3éK˜y†±_#$îèê««‹ä•[½¥œ?¡©†D•ãaÍÈX˜Yyfž¦F›"†ž ÷¶5kü± E•TÛsrxÿ¾'— B!EQ“jì…$£áD8ȰÂ9å¶R G’y„Mû×~´~]û÷þ3wê¹ygž_ê3Ñ8µÿxB`r9h¢$êKÇS’Éþíé!£`$‡ÝPKwòê?>N?ú.’éœ+J–Ì+ðàÁ…IØûí?†®ÅzuòYسÊí¬’Q3”:Ü–ºëúø…[Ÿ¦>÷ÓLŽôÝ›*Ž(“r±M&— ëºÞÞÞ^\\̲“fšÈñ~-Þz"ý·;Þ|ž¥G™BS3šJ€ñƒÓŽ;Ú{I¥Ù„cÂãFcñXqQñÁ®:déIFÛI2D%zãÞôüSìh·\´T:¥ɑȲ3/<.oA.NiˆQÙÞ¯¨°£á‰–1t9Ü Zº·ô>xýßçF[@KSɹp͉W-°ÛÇÈ¥@‡Ÿý›†Q[[»aÆ-[¶]qÅ‹eÿw`@äØ=ò%=‘Q”Q¶þÆì#ª=·Ÿ’'æ»|VÓ”ŠƒW¯^ÝÕÕµvíÚsÏ=×ãñ”——çSÉd²®®îõ×_—$©¸¸ø²Ë.ÛßõD‡-¨rð?$ÑB€€OÇFÙ–gÓ_½Ø}Á¼Ñëša帩t2¢Ìï÷oÚ´iíÚµK—.---Ý£Þï_ÿúÇqÅÅÅ]|‘‰Ã›ˆKÕÓJàÐdÍÐãéÑ–›³ÆK<=¿ªÐ*å:<}Ʀ(ÊŠ+Ö­[7}úô9sæTUUÑô§µí—PXUU]×ãñxggg[[[kk«ÇãÉÞë™$-Á œPàãyv§Ÿ’dÒÁžtB•e¼?#·jVÞü¹>iêÍÙ!Ër4õûýmmmªª:NÉ"± ;ì¡LQ5UNÊ‘H¤½½½©©)??ßëõøj£Ã!DK ôB<ÎR&SQ1¿Ó0¯¡ë5ЕŠC l^±U¨ÌŸU;¿Ú…Ͻ ý-“Éd{¿ŠŠ ŽãœN§$I,;Zï§ÈJ8nooonnv:^¯§ú›x†fdÒ½] <+2¦: -£¦õPo:FXÉÁ;Šm|eÞœÙÕyfñ`Uxj#„Äãñ––Žã‡Çã±Z­,ËN`¢µj8}¿ßßÜÒüܳÏE"‘“O>ù¤“Nš?þÞÖ𤥡kíå·my÷+Ê–_ýÒK‹¦çñŽï&3þ¿_õÙ{í|]qá£Ož²ÐÃZ'MnÈžK§Ó«×¬þÓÿ”Mu¸é¦›¼^¯ËåÚ}ËŒšñ7ú{ì±@  iÚ 7Ü0mÚ4ŸÏwà댩h²yݼ+6Fåüâ対qd5äº4=ïhÿËù+þ^÷±Åw?xÂ|+à’çè€Éö~/<ÿB[{[qQñÿþïÿ–––ŽÔû575¿øâ‹š¦]sí5Õ³ª±÷Û/¢í}õÕ—l¤¥yÇž÷ðæ ]o2ÞØ½¥ïÙ«W?BýÏs.þ¯ªyÖƒXW´Íš5kV¬Xñá‡z½Þ«®ºª¼¼¼¤¤dô8Îqî|"Cáh4 …ž{î¹õë×»\®ÓO?ý„N$‰øIv‡dädíŠkîk[Þ'šÏ=ú£k+JlÜŽ™L !ZJîöùªù³½úæßÿÐì¹3­S6Ñž’Éd‰D(úüóÏßzë-¯×;{öìï|ç;.—‹¦iBH0\·vÝÊ•+×®[û­o~«¨¨hñâÅ‹…eY†ÁiçЈôD °ñ?Knh̬(=¾ê£ë§Û‡Þ{!Q•D{ÝkwoZ_CÖ͘ÿä_çå›ÛT=Ñ–íýdYŸþù{ï½—“““íýìv;Çq„p8üõ×_¯\¹rãÆK—.­¬¬\¼x±$IÇaï·?dzê;j6u]»qщK«Ý¹´Ô>t¹I¢êJ2ÒTÿ×k×lb}Ñêi=6ÏCÁ¤ bC™L&•J%åä§+?ýàƒÂáð‘GyñÅ;N»Ý>ìGÆ OÌX%!$N744tuwÕÖÖúý~¯×Û×××ÑÑÁq‡Ù¼ÕÓ§O—¤1îBTE6 ˜éyfž¡vºÝEQ+H¹®¼B¡¸8ÓÝ>°u@±¹¶‰ü)ü~"‘˜À‘H¤¯¯¯©©)‘HÐ4½qãÆêêjAX–ݲyË–-[êêêš›š{{{9Žëèè8ØõEMÓ³gÏ3'Ì0ŒŒ"›+öð»þ]Q4ÅñVoNQ9ÓÝ—hmØHS¹¼Í°±‡ûÙ†à G9Ý#Í?L4»W>Së3žZîd™ÑÓ)Æ%*!©TjÅŠ]]]_ýuuuõI'žTVVVTT$Šböx¯àÔÓN]¸pa}}ýš5kšššÖ¬YsöÙgû|>·Û}°¿:TÉdopÓ”Nò¬f)gäÙ)wqÑtúsn[Þýf‹»§Öóä‘ãM#EQ">YŽFíý¾üòËÆÆÆ¯¿þº²²òÚk¯Íö~Ùg!Àëõf{¿¦¦¦uëÖ-_¾|Íš5§vZii)ö~ŒÈýýÉ-3çq[™—P¦Ê;ã¸ù©»Oï¹ýý®GëN¹»æÚvÚ&Ôìoì¹ç‰¦oß|f…‹-µ@‚¯n‘76¿yùqg—ó# S5f&ÚE6 wË–-Ÿ|òIiié±Ç{ÓM7 ¼°ïC®9d›Û¢¬¬Œ¦iI’6nÜØÖÖf³ÙÜnw®'×fµM’y MO¥ººIR5;8Ál‚¿kâ$kU‘É.ÊJRùº=™^d7øaçÑщšNö‡šk"=š¥ÄaæijrL»–Q3šªõöö¶··wuuõööž|òÉ3fÌzøš8“;Çm·Ù†Ù¸qc<ƒíííÇñuÈ>{Ú×××ÙÙÙÚÚÚÙÙ9oÞ<ŸÏW]]Ͳ서û%{¡¤¤¤¤¤dÉ’%«W¯^±bÅ]wÝuÌ1Çüø'?¶Û†Êï0“V”Xä‰ Di[guJ0ò=c²/,Þï¤6¥˜ÛºOÍ“$Ö±û†éP¢³ý¹+>ý[@³å¸ÙeaèIr¿µ®¶®¥¥eÙ²e]tQeeå²eËFIoç8®¢¢âöÛoÆ¢«W¯~àþ¼^ïÂ… øÃàj£ÃC<LÄÓÚì”Ìfçhƒ³fÞâ(YTÀ<ÛÉ|†®ÎŽó ¼`J&Úºº»Ö¯[¿lÙ²³Ï>{Ñ¢EË–-³Ûí#= Êq\yyùÍ7ßœíýþøèívûÂ… ÿßÿû FybYKñ´sì*ò²¼±±g¾Sä;q&ëþóÊÝ~= é16w‘àöØÉˆI‡«ÕZ^^þòË/— ¼ Šâx®álVÛ ÇŸ°pÁÂd2©ªÃ® $£ád4 <­Ý\ìX`÷Žzd1‚ÙY2í:s÷gr?©ÖvéÈaÈ@2Q•DíÇw<ú²>•}åôïqÊÙóËߟßM^fÁœíý ,Ëžõ~ &IUU»Y˜eÄ0’‘PJ–ÁÉj7–X˜Ñ'95Ù]¹Åe7ro¤›bq­¡g®Ï»cð+fù‘ÅÌî\nÈ\å¢Õ.Ú†ßÚ;M¹œ®‡~Øétº\.I’Õæñ<Ïó¼E²P5áU?H 5V¢²AˆÛaʳq£ÿ‚ES‚”›ËæåÐj (eùæ2+›ž‰®êrtkc&”|3rËòB_Å­l®h%éâpc6›†áyÞépŽŽLŠ¢AÁl6+©QÖ´FS0”¨œŠ§€—`5³£^ð’ä+ œššJ§êúäÙvÁf¢³ŸÒ•x2Ø8¬C,)å9 %ÙD"ØØtäÙx˜¸™”ÐTa2™ìv;ÏóN—sü“ëïèý³’R0;bâ š‘3É 0´Ï-˜hjŒNƒ5q’T\ Rw&–J5(Çä ô¶éSΞcér ³=&F:‘J¥Ò$ßÌQ˜11hжZ­ÙTÉý”c} ¦w`&//ï´ÿ%Š÷·ÄÝ6þ4x¤s¬g×($OÅÑ–8sü›zr}·ÇÅÌÎϱP†“ýŸßþŒë´oÏúÃÍ.Ë–÷¿·©ˆ²çK¤aˆüü}R“$ /@#Pú›c¡®¤×eþï<±RkðŒæ›gî™æÖµÌg ôï¿ì8º 8Çb–€Ñ–-›ÖŸXúöuÅó½f‰oüêņÕ÷¼ýÉcלà7æR =d·ÛGšü<°÷›h1”>$ÓËrÄËóDaÌÛ¯&ÉäÊ]p¾P¼œZ“ÑŸüºó‚YÓX†âÍEf€Á !Ĉù×µ4vf,§–YXŠÇ«˜‰À²ì˜ Ëí£ý²ðò¤Fˆ®ëš‘ÑáÆž>0ûCÕtƒd4–åXŠc¶_æB MÉÐ,Kƒ–èÿäÙÒljnßóǺñ Bh,ÄPUÝUÆÄ± 0cŸ=£j:h€eŽ¢)Š"ě־R·æŸ½Îß]½´r›) =ÏoÙü|kó}ÿõ_3Ì\÷ ¡Ãݶ@'˳=ö˜;!ÄPÕ´(ŠeMð¸-ÉÈñšnþ½‘Ü?¾û„£rhfÌ•Ðþt W››J(ŠaYf~8Šæ8`˜Y‚)Šb8Ñ ªšV¢Ýú±…‚Õ.àɃÐ8P4g¢ö$•’bL&`§s‘¢@ôÍ8ÛUpœf*¢m$š®©j0OäFÀñ'„Bˆ– uc®àôÙóó„m¯j)š3x ù´¢Ä•˜rbždgEüÓEè€1t"§zÀí¶ÛË=Ûs“ˆ¦¥#Më{¸28Æju„ДCtCíÞðÐ꯾L?[0çÅß-òЏ°Üa /ar´'ØUÓ§H’ÀL’Eù:,0,eµ”P݉PpC§œ}- 4/åº2íÀgµ†Â¡´”ÒõÑ?ÿ¯>™7íOYT!2vŒƒg8*| ŠÜžJ~×\-ºX¼‹ÐıfÏÑ,Þ°:¸ú×ÿ¼Ü€«ÀºøÄSïýŸ÷ß'éÏûÀŒÃ¡md-jz*h Õrò}¿8²c~b¶xæ¬Üï}¿Ü«Í>0>$ÐŒY0ÛgZLc/~ƒšHE Î*«)!Fþ>A\`÷Ωtv†„^ƒ2öx!"„ФEˆ¡;¼^*n@¨3òÅÉvOF=huC{W›C!„B“ÊøW›Ã1H„B!4Ea(ŒB!„¦( …B!„Ð…¡0B!„š¢0F!„BS†Â!„BhŠÂP!„BMQ #„B¡)jbV›3 £±©)%Ë{±`B!„B{Çl6‰fqï>>1¡p*úñ/nkغUN&'d‡!„BŽeØÓÊyä‘ÊÊʽÜÄԃ¤~Ãú»žøëÌ9s&d‡!„BNI&/=ùÄT*µ×{˜˜P4MÌfQ´LÔB!„¦ûòq|l!„BMQ #„B¡) Ca„B!4EMX®ðž1䌚ðÇ{ÇÜÐ*äÙù<wê4Õè!JZ3óÌ”˜º¦Å2jìóò€ºa¨i5ì4— kãsNzú¯IB Ïîå0hJ‰ô¾Ú«Þr׃.»ÇÌ˜í87O³}E™9SAUÅLÍot(ë7¸2Ç82ŒBhÐA…Ý–™>[þ,÷p³˜„?Þc øÃñÆHúYÀPøpAqŒÉ=3Ç}°ë ˆš”›ã²?"U[xNÚ­g_S5뎾‚¦i“dé6–+JºCÎ̲r4f[!„ÚîN 8ppZéÙW äÑH:Ëì*!„ö ”šÍ=áš~óÝ3æä±¦=»°s_J);õ®#/s¹Îe#÷ù·† ;„Bƒò¨ð˜2i2þâˆoÇÖ5†j~\óìÐ×NŸvµ«òžÁ?S ÑQs_}(òLú’Ÿ7Ûx ío÷D( Ü,GÎu÷Ì™–o2 >]®gú"Ýïý²)ÿè’¼|t×§w¾¦& Àb:í¦ÅçO³XÜìøKߎ$!ÕôΪû¿Vú×¾ÆÍû5\0shé;(­ÁȆmz*¢)ƒ¯-Ê¿rnþygXLC¶¯zž¾³ûÜËæZȆhÿOŠP½Ûó.¯~´ÒU9Û Æ6ÅB«~XûRc²ˆ Íÿ}e'”wè> €Dóº›>Žt¾¥ì4vFÑ×gƼS¦•åІžPº^ùiíËM©Þˆ„Ökoê6ðEgWýáœI"1%´êºõÿwTÉ/Kí3ÎòZ üEc´iYíFÑý×åçã¶íòu3ÑýÏ®¯{óû _,”ܳß' „¿¸yÝ­éÐàÆv®ðìª?œœgÎ5û&I5±õß«îÙ¬É_oÏ öÒ-ÁÈÆ«Öýièk‹ò®<ÂwþYÞ݆'IRþO6<¶5\ûÙ¾eÁ™§Ø{Vmz|«bZåûáïËór8VWþëë9"#Îýïyg”šaGÑéæ@hëÇëy»èwyKwý•Â_ü«ã?éøxèk߬úË‘nï,¿KuÆT ¥«õ—ÞÝE:·'çŸ>íþm-8¬ªTfñ sŒ€éþÖ;>JØÎNû ˜½ºB¹¯ ¬¹¹§æQë õ¶Í¡—fXØâáò,BMA‡r(l詾 2ФD /ìHñ3 ’Vb}‘Ú†p]rÓÐ5EjL4›/”—Y%–ÊNîEÔLŸ,øÓÉX¼6¯koîOà p[6p8óEÑ´½d]´ÊÖ鉮H<Ö$×Ôf¢Aú) P”at*ÞÔ­ô«h¢è캞 ÈéþŽèÖ¦ÄÖ¦TwÿàÖ TMCÀµSé@t%ÞN4µ…ê[@O~¢!Zgæ+ꤙeV«È0ÙŸ„h -½¾AžÞöÊl„ŠmÞ”€Á,`¤KäÜe·™¢§u5Ò(·‚¡hõ! úRјF Yו@´Î«mŠ·ö§wnºÎ±Ñ‘'24E C‹´(‘Ì€îO*ШqÍ €èDO4$ëfdR9Ù3M2æd}{4qÚ3`z€L:5 7÷'yBe›™t*Ù٬ݔ¨Meú?ÐÏÅýáÍ|YR²Jâ˜Çq¶ ZB[›5 z¼0EzØ!j*ÑŽ7µíÖÄ ±z»X·UœYd› 9“ ·„·úc ÍÉMÙý7Äê]bY/G¢ÉÎHJlÌè ÄÐ3þ^¹õѸµA€ó ýà?ÿ¢wñ“}·¼rô¢–3ïøÖA·4þ²V û¶¥’vüüöà-ßµäÜÊ™e;͵”îøl«òöŸ( á,`*rºææ›MZQSmõë/y8œ¥ôg˜ç‘¢Hjàú¯ojxXÛÎÛ·CôæÛWÝwé¬%TVl Ü5bD7}ÿÝpó›)ÐàƒhмØ~åõþGZpdµÃfÛf¨`<ÿÜ–W2ë }ÿlü÷ÖpÀmÿö| CÑfç i ¨\`X #dǘ”?™h}ã“kŸ£ò Ú7$3ÛÐ@ûý{Í'¿×¹ä¡o\;Çf)Š¢—É2R ÇÜÀrN“ÔÍÄÜýq<[±[_MqwöÖÇ\–²ÒÝ\WÓú ˜î.²›=f ĺ^Ýê¿çö¨nçŸNþWÃ7ÿÕwÿÂÜ…wÏ›ã#ÞÚÞ¯ãvèXh;~~{è–Ëf-9¿²ªpÛn4]ënÜôýw"ÍÿTvi2h ¿Ðùà}¿}hþÜíM@ ¹-üâʵ÷ƒN•, M‘W{ã‘Ä÷9EQ©½vq9º±~ýEˢΠ1íRŸ[®ù°÷j»ëü¿1?ãvN§×QaÈþÚm wwÞ»=âÖ \6"M}ÑqëªÞ4ûò¥e.+»mÄ–q5Ý]ûõ©#U Ø%Ùsp·*í.­ë]­=j2ßgµyFØhü}Åöãg'‚­,/9´§z-<=ÇêÄta„BpÐCá×j/ŠýÍH£@FŒ4p3.Ÿ}ätÑš³ýe5Z××÷Ñ!ûíósçþjöt `ð-ÔtóÖwî Üò^ûËG¹sìƒÄë@ó?Ò;µô®{ç^z´’Éèæúõ—Þýõ‹½7¯¦ÏWlß8m謈άQ—ýæøïTI¼DÓ@óCk‘ͽ}ý$$'¥;³¥‹Cr®K_Þñ·ãó|sì&€Ä@`E߀¨ÿ½ëØ+fX­¹Ûk”NÔýç}¿ã×õ៮é*:Çg1Q”ž(=oÜ µÑWØ}ç>¶ 2gpè Þ÷Â@×í×vÝøiç3‰ôìSó¥~1êÛÓsޏaÑy3ÍÀQi]ùWóáà+ ÉðÍ-KÞ®ôºísݶÊWrøð«ý±WŠ©ÊçáÍ4Í™(*ØýToøýg\8ëïÇçùæØï¹ë«—oEâÓµ–ÍÁ‹¦™9 o‘J®z"gQ_pë¿Ö>ø|ñÓš^Z)‰,kæ(jçé$²ò%QŸ3ëÛ°õÁþäÛ"U>çöwˆ!ÿ¹ÿϬõòÙGs¼€Uî|ëãÞµL”û·O.®öð;RHõÌ@ßÖ£Ów_Kÿ)ïwÜaÑN#»FñmMÀÝ|ÿñ—•˜ù¡MÐÕpÞ»~]þ©·«¨°Ð z:îxs° ž9¢Z„Ó$zŸoï¼ãÆÎë>í|*‘ž}j¾?kj¾t _œ;ç7ey‰¬ííÿèÚ†5­„¥#TolJÿÊÆ57†œ¿½²¼ê›EùCøþÚóßî{î…À¦÷ÚŸ8¯Ðíáw;©Ç<*8.ûk?9Ðñi¼èŸ>²ô¤Q°R5~õ ?ìnË+ss.Ÿaµz¸mU DëF©RCtUö¾JC©ŠòßohÇ‹–iÒˆóO¿¯È?»â­&ÁîátÆ•!á!„ÐÔr°ï}ÃÏG+}Ùå3––M«íN>;eôëZ>Ç#?ªZ2Û™ëâvº?Ζüµøcùžý›Ejf½p0†Š=¥ì©“ æ.rZD̼sÞœ…ݰêžOãÝ =íý•ŽmAHLsÍZRpú«ÃÆeƒQ` [zÒò«U- –þFËV;ËØ \Ååh\0™XIà²E˜í³¥ªåž›+ñ"G@@–ëëþÑ-üà¼ÂgÎ(àwºëÍ{βX¦Ý‘¼þíîºxÚÇÇÐmšR''5€B@•5mÇøœ&–¢@7ŒD8Ñ"³³M’ÝÍÉqEÞyÔ×:—§yDZ…À8–`Ñ€$¢©þe¢²?ÈÈMI¶«6«Ä²&–wi¢Ñ9Nbɰ®DS„MN¨é~]¤„™Ó,Žbó¶ ‹fm¼™ši-t°Ò8›`7ˆWzcJì9..M鑼ó&”ƒ¢­P»’ MM“!a;ÀøŽ @Z–[T2ßl*ªpåˆL¶k €¶8-Ũi3 ¬RöÌV)¼[•ÏÁ„¦¦v­ÒÎßhªpšY“™yÎß=î+vým .»þƒQ6õÕO§ÈÛq€ó¨H#Š)©Z°Uok‚íÌygæÁ?§]¿ý-[¥ì98j•¤l•†œƒÃ0´p"ö,P×9§cäK­=ï+v!rŒd³Ðm#„BSÍÁÞm†œ¥[¬Õ…š–m½ÿúõËgÌ:}Ú‘B ð«ñöæv³T‘ÝÌò;L,EY¬'&(sºQB@ íE鮲_/r÷ îâ›;A½Œ>°6.}·SਠÎ-?îÄÒy¥0©H8úË>/··äLº¿eÝ5CfÝÒ“éÖ‰BciÚQPðßΞM±ÈÍ¡¥¹N`u%jüƒaø¬¹åù¶E¥†ª) -4A?E¶ ¥/¾± vä1ok;GyNùq'•Λ&¤"áT虉jŠÁ}Ë[2°|o>¯C*ð™žþè »!ä¨Ò˜}B!4‡X( ТK*ñf’søŽÍr}KÜÙ÷¸¬C“5h eNÇU™y;;ÒW`)ª´ÔbwÜq¥Xz×[µ€¢g³_ÇQAz[éü’*Qµô²R‹Ud€ 9o.Îw\pršuŠJJþÏF¥ 4iTUc´´8R’—g)š¡'@XøF®`™fñá{Šš^bÏ•èQî<ﱌҬÈmõƒ³nQ|‘ý”"óôì\zª¹%ըװ˜5YŠ]¦¦*££9_`—X#•Iµu“ª “»@¶ÎRÅ8±UÀ—-8ZHAŽ™óY8šu .&Û® –ª$iPÄPÒÉ÷7¤²MÀUî–•DJ óE3c§Ø(l® MnºáíUœ^bÏÇœú‹f öv[ €€biÆÏ[( &zø Ì@•æð¼p –Ía ²çà(UÊžƒ9Ø5ð¹Bô—>é`6„MXzb o³óö‹(xWŒlp3Ï85·Ùyû·hçßò–}·xúÅc6QA¦ ( 1 »dÆCÓ€ —*¬Ðv¹#†nì´ ‚k1cbù¹ÿ,øÕs‹s9n?ÄyPt6E }·É?t†ª¦5†g)ÆDQÙ*9Ùâ¿OL•(Š4 ÃL;2†áú E {04³!„‚Cváe“Tî›õÌmlÎÉ©g¢»ÿÕ§³‰ˆ 'æë2´×¤•àìuh¶†aeè‹:!±pL‹Sżsn¡øÑ~ Ìöm¥w4îaé;°\ާú{Nùô£s>ùèœwóμ@¨zwT64Îjì…lWS4€á&%Û/t€žîþD[o ¸{ò´ïž³ò­3Þ\êmd'aèí}#-?z|¯Óæ*ñ*úª;°©±¯ñ³.|ÓmVWîàV4K‰N/€+Ò£v·ôÀxžŠÛ,—“?ge¶ >8ëµÇ¼3ÏBªÞU Û>’f»šbñÐÀ˜û¢(\Ó8ë·õÌ‹=í]éôÐGÈ ##7|œ ½»û]òŠ¢® *` ic%ÚЭّžAÑ :Ü ——ŽB{}¿¦ÆwÛÍD0Q”-ÇA‹rM:¼©SÙù×N7Ë¡Ï^þ÷ñn¨y{ ž=Ý —=÷½J4ë²Ø¾ äÅp:Úó«ºÝû e÷`@ÖôD4¡3ã5B¡)ìLüÌÅs~ØÞýÙŠ¾ú—ê7VÙç™x›h¯Ýê,òôBïŸ_ß¶À]ýªJø!A}¢¦-âÄÿ!0ß>¹dÚ’â‚9éýÏmùw¬| URYb9•ð·ÔÝ÷¢ÒAç¸Ïñø,ÌhÑ' ·­ôþ¿>¾¾/[z!?äy­ÁÒéóO*yLQ¾+ÓúõÖWšbêú´ë\˜ÏóÐ4- 4‘!îNÁŒƒÝfh7mr—€ÐûÌ›M í‘£/Ÿ³´ÜÌ ƒƒYéÎT²ùÞšW’ä”rgÅEsªG™¦jéÄCOAÌÓx(‹cÛÑȤ5_Þÿ\¤~ƒªOĽgF²ÌÉͽÚ_‹½²ü·Á^•[Pm± ¹ áiÚ[äå\áO¢ñž»> ~Á™¹fÑ7øC“4D×ýÅÿAmDÓ™ÿ{ÔBÃÿlQ!ÓüÕÖךbênpKš¦-Ù&PÓ‘î„TíŒÙmá!ÛEy1¡ÿ™×ZÃG_3ÿ Ÿ v4Aª3«ûÕÖW(ú¬rgÅÅsª\BGrVIíúí#­?9Æ=óû¾œì–±è–ûëßø"ÑüŽE(hZ¥óYæÝöTøïmþ [I.Í™ˆ ™ÖÍ­m ¬R{À›—cñkaàÏ¿û2pZÉâc «ŠLCøØºÿtýVo0ç^1wA©}×ÉÔÆ§)Gž÷ÛBb¬4>´zúÏ—,ôò¼@înûG_è«2Ýç:\Ó €ÎVI§z¡w[•ŽöUítÆÖµÅ:²çàsÙG›L¥yÉ\T&J8œ{ºÉ®}Å’¼ÅFØíGHêZ"ãÁ6Û!y<».SBhŠ:dCaš³Ý9='âgas8ÖÖ£TäH¢ƒcxžwØlÓÌý_µFÊŽIÎ5œçJ´wEkW |ȚϘ—Q‡¤¶ÒÖîDcO¼ ;á•D{WøãõPz$o/ÍcýÔ`é…õ­‘Šlé¼Ün¥S‰sÓš„j2ÙØŠ¬Ò§Ÿ( uaÇÜþFÒ]½jF¡ÄÎ.0@ƒ X«Õ>»8°y«l_i¸NŽWKÄ$î_éPâö¿ Ü<ÎT¤·¬Û¸i C²‰3Û8Ú,²,ÃPLW Ñg‡$Ùwö§•ž¶þwVeKb ™Æ®Å Ê %s‰ì°»îÀrN“PHCm8ÙÕå*¿Ä,8vJ¼¦)ÊlµUä¤ÙøÆMý³:ãóuÝbŒ` …Š7m~¾.!æYOÔÈ(7× él|ÄÌ}trþï+¼`ñœSnŸ÷Hø¸ßG^ª ¾ô“oæã¬ïÖEߘå°xv òÎú¬ïÚþ^ßýäüC rCÎ=s¼³¿á×úSÙÒ»ðÁàh¥ÿxÁq \y ÀÝ{ëÙQ*ʾ٧‹o¸â¾Ö¹êÿuîmóâ‚Û9'\Ûvן¬ÈWú£™ÞóL~ᦞ'ߪ{ò­º‘¶Ò:óGsO›f·x—0!‚\pÑUÁ¥gÓ·„‡¨´²šæsö—ió•þÈ‘ùÚƒ‘S÷Rß58zH¼$z+o¤ô%¾Vè½ \ý {ÅvNïÉï»Wìµ»L!v·Åb=Øâv!„Ž5¹o„8|9Ÿ›>í÷_!`oÿIWËC«"}£-‚XRuòÆ»»÷®²/ ]Îu×ô²Wþ~îÛgdÛ =·/ƒ0uþ¼¿ÿoÕ÷oëÿkk]å}ê„ù—dù¯£EK*N\ºÿµŸ“ë/سv)pÞ¬Šë^?é·%oðÜ@n¸í”•ß}åE¹²°û¥r<€£lî?¾6ïéG¦~†¼ÕÂvä<÷Äyë/-®ž±Ï—ÔîÒ´*ŸUõõ¾¯Ë¤ŸMôêÌô–ÞSY³ôñÚ=.V}yÖŠçOÿû¯Ê®º$¢Š®'û&Y§z¼'œ[ýÍÝq2ý‰x,ÍFíšt bù¬78EŸÍzn>Ï Ëž €ÃWp弓V>7óYü;-ÿ_ïšÀfsΫ:yã_fݶ$ûô¡=uöÿ~ösgdÛœû¬82*à(œöÀÜùÃN€Ü•¾6F8°š†­ïÜWHý×àB²P® ´@tE›õ¶úƒ>è^Í7¸Wì–Šîluÿƒ»ê%Å'¹÷[€!„Ðdr„z…9oÉ™X\$I^q?•–(Ç»¬rYe`ñé DGŽ•ëªJDK¶ÇQ–oó™A 9*¦¸ó³lYÒКJ@´Z²]Ž©œÿ’ù`)—ݹÙVIæì *òRÉÉYg9òÜüðÁ±}kÏÚÿÚ­¾gPÎ&Z¼~GùiY‹ºÔ½Oð©.täz-¶A/*ˆ~§½$G / \˜4üM·N—íE9r¶L¹þGÅ«ó‚EYÃkiàì>ÏœR?ßnÝ“j ¢M.rX à*”%ž ^ ¤¿è[+²àŸâÌÉr€æ™WR ;¿§Ú9ÞétOÛ'ï›ÀD –ì³²>WjwåX†bŽP«ÕU}jÖ9 •;l‘¾–QŽwX(—åª>#ëœ6àGêWQ=Ïg‘Æò¼¾Cå¬<+p^b@…>I¨*täú­¶Á5¿xAô;íÅ9êŒÝ{©ŸuºßU°e[w¿£{ÏbµåÜóbŸß7²Ø9-àÎvÝr ¢$e{\•S‹1HÈ‚¿Êï‘â¹yÅg:Ùbÿ9A ±ˆ–lŸsJeFÏw³ºÊ*]yY’Ï:ø„?À³¨ z)vxËöœ,Ëѵ”ºŸ¦8³FºGDlŽ99¡¡5…ÒºÏÂAT~¯XÄÀµ÷^ ÀȤ»R™¨"–¬‚ŸÈ]!„+ÂÆXOw€Hdèûš’ÉäŒ3~óÜóÕ3g¢À! ^¿þ;›»ƒ÷d®쬅%6v ¡Ã„e µõß«î^¯X_+þåkSs³„ƒï¹=vé l}gõ]íñ`²æ¥+‹]vž;teÏ `‘ë°9¦üÞzÇ 'T»ûF"!„:ú)Jââys_ÿç˳gJA=Ï[ÀÞ„ÐÇmÚŒ\÷Ìlí™ö¦ÃPF_dÌLz>y*~UwßZ^ã¦æÁ!„úMàÇæB“à¼9WðöÆ‹?ùesôÑ”ì«ÓS¬£R5=ØRÿpH¾Ìá˜v¢‡û,ÞP‚Bèè…©0BhB­Å6ƒ«àCÉ$¡²n·ŽÿöÄÌ´®FÛz»d±ßQâÂÁ)!„ÃT!41XÊlBÎåó²xõ†l§¿,ë¤ÜqáRcÛ»ºVßûé/gÏšæ?t¯£A!t¬8dÍy晊¦qüÄìu12JKZ3cÌ›åp‰ÙσèR L%–ìN™  yù’8¬šˆkN¥BÀ!P/Ó“š–ìL‰^§ÝÊóøÕ!„Ž1Œ±d$üòË/Ïœ9sàçclîÐüià8náÂ…Á`Ð0ê]W‡Cõ‘,‰|ôÑG'-:ËaµJ<‘tÚ`@¼’•˜ Âé4”¸,Pt]Ñtp[,<% œJ3Ž€ÇjÝdÑLdAèk3–Éh&; 6£é´ÁÆÔ¦Çj¥L‘tš­M·ÕJ´ixÏ÷· Þ}´™Ò¤¦õ·Ù¿»ÆÞfÿîµÍá»kÔ6‡ï®QÛ죿ÍÙ£µÙÆxªTLøSeÈ!øLO•þM;N•QÛ<ÐSåàî*ý‡uH›;vìØµk×9çœs`÷D„Ð „Ȳl·üó%‡¦W¡ƒöé§Ÿ^ôù/¼¶fí”ìì‡ ëºCªnrædgq„¨†¹®+N‹Pãó@k<ÙO@ßíEƒ±u]Aѧs~èUÕ­¡(8ä¾6·öDz3Úµ¹!Ø£êæXÚœ•å9ªæ†`È0ÇÔæ¬,GȾÚ€9Ùcj³w½ÍþÝ5j›Ãwרmß]£¶ÙÆØÛìO•ƒ8Uú7 O•CuªôÖ!m>ôÐC<òÈG}t@·D„Ð!ÅÔB!„¦Â!„Bh’ÂÇHBÁS5ýiÀaÛî'Ü3™Ú›‰f2ºi¤ ΊO¨ŽSÕbI=£™¡¸;BèPÃ^a„ÐAš=[Ò|iåÂßnü˺¶^0S™µ¬ºèâ5K¾[ÞÁtóHÇyt#¦ ± µß¹~Û·oWÚÁœ°%#„ÐQ Sa„š˜2z²½ãÅ_Fš¶'üùf„Bc$B‡刳Ä}êÉ"ïOxEÀ"ÊãÂÀ4ôx·¡g0F¡Ï¦Â¡CG-Ó¾<û/÷WžB!„&2 B!„&)ìF€‰†Æ'—Ò†N…A<“1M k$‹ô•ë °ckFKf¶üwÛ“Ÿ(¼?±àBǬ¬!Ó™‘Ž/ÿaëÛJ¢ÅÓH•+—\}܉}ë_ÔÆ-™7ÍÆŸÜox²½ †ôöÖ­?~-±ðÌ1Ýuo·nhk_ß ñLÆoŸÙy×—KX0µÌÎ×R² ®2ÈßÖ»ú7‰gSz(…Õ‹ë›ßgE…»çïmT[š?ýõ¿UÕ F¬ÖÕK~PTéËÊ—GÚN@‰,}:ÚØØñ $2Ó*»>>ûšŠ3KÀÅ ’µ™?¾œìPéÜóÒ_t±Ô®Ì®5É?}¤¥ô4GÐ9ÚéSù¥¢´w)³þ?éUÛô•uJg"ÓMXd›qÏ­I+t]x©yÎyC÷+B¡ƒ„©0B“ž®0%dÛŸ¬5Ö×%Œ½SÃÒÜ xH‘Heqô¦Lƒõ6F—¯LÉ¥lÚ90àa/bª ªf¸'Y·<²"–ع{±^¥h3:”bÙ î0»>Ò?`ɸλ÷,ÆT3î}çýhþyÄd¶Â$´îJoÚ¦¾]»{êc>9ÞÖ)0/8,{#aŒõ¶[õÕæ|ň…ThNÖ¾«-Cè`‹¾Ä[ì¦Ï$ZDO¶+­»zÞ~÷â69|b«ÛÎ9\4ä™i &XP©]¯oÞ~{Ï6ºü=ygåTYxÝ> ð½×ܱը©9'ebAmN×oQW|l$4 XE.[*\FÀ lwðè` ;´[µÝ­ÇØ'«L€ôq •ÌèÇ!„Ða*ŒÐdg6¾¥­¸_y1e„©©_ÞN?|áû×f0ç8V“ØilÚ¡\ÿðFœ[îØhüðË]ßã¿ØEöóy4ÛviOü9óOsA³Ç¾ÒpÁ+Wß`Yü%š7|IX$øòÁ–í/š¾åÛôøùü-· Û®­[Uÿ3`š’¤w~«qÁžïX\4°»™ô6š›?èýæã½CÖ ‘'nÞúÐãçó·þRÊ2Y5ÓÍmOÝ£lÇV ü\ƒô[Æÿ½e¾•¯Þv¿áö€B6˜ #4¹µ¾§°5õc)ðÞ÷ˆ\S]žÇ6‡Âªar¦VÙþúއ—Å6öÀË÷eNTwxÇ:Rb ®¾ý'u{³p|£ü ­Uî–PäL°°ùíu·?aü#dŸ•èKOÄP­6rû}%59Å¥ØjδíÔ^¹'óS_kÐëÖZ˜! Y2¦¿¿·U8ß~ÂÿÌXsBK(lši.Õéÿ×ÍmÿeʦOµï~KOÇì_¼.ûÆ/–ç±Úpo<ÒblyE¹ÿ}¶¾‘&?ÕÎ*¢¶=Â:´>Jÿæ`ßü‰gv͌㳶…#ªaŠz²²ãõ­XÛÔþ¡zï<Ó=`pEg {ù™n.¼Úñ¿“€”9R!kÝ¿¥{Ekφüz]oU.ç‘d*pS/³ž-]ÑæûÏÏÛߌ§½séõ?’r ?7+? (Væ@¡CSa„&5½·Áˆt›QJ¦Ï–‹óùYR8B9Ýä˜&‰ráÇZ¸Ki ™iiõÊ Æ 1["fG¤RÇ‚2{qž˜m瀀 ó?Õ{b}dmL ëûl$§Jæð…K^@ÊöiÎè5K+y~—‘TÌ`”C^Éfa~µ²Ø–à!¦Êgˆ£j¦¸ª^mIèíPsœ˜WÚ·íHk›ÛY*¢ý¬n‹Mä9Â`O15 «-Ð{µH¯¡™lEXŸ—Êì©f#|¡äàë L¸/’qì^„Bã‚©0B“ÓAWŒh*ch)Q#Ô­·Ô;V%ßaL…ñ%j0ÝH0% *rûhÍJ¼”æìûÃÔ œeè8à± ”I¥„ŒÐíJ(+ì+¨A0Íèbf4ÉŒ$[Ù6GÏÞÿµBH5ÓÆÞ¤—R V*|5BM(˜ #4Ù‘ÞFVûQüú?¯éM†«Ëê`˜ "„š80Fhrk}/óʲø_–±ø€¨ú¿=«·1Eåfó¹Ëþ[D!t¤a*ŒÐ¤ExÞ/“ö¤ͦ®t»?¥ÛÀ…ö³iWïÆ.^ài¶ If0vp¿øV-ôÐd>jˆXŸøJÕê6BaÐÍx*ÚÞ1ˆN<À"‡v) ®2Þ¿“úmfëöÄöF*ÛSUV#1 Sg™tº.¶½5ÞÐK ʸ€ƒ·‰ãûÝ¡D ªÊzB¦:ªUüA!„ L…š´,@ròn>[}qeäéuäÁúààéV™]}où¼£mÃ7^f¡8(×mK\âç®Õóvè/?¬Çª[òPÿ´^€6«Ì®¾×âýQ6f~;ÇH Îéâçt9[Œ}óqòúïã¯Ã'?Û;ýݾ¹fÍ£7Þ.UÚyûÈÍŒ™…ðv[!á$07¬3¯ýb áêëC—}帎q6B¨¦ÂMj–éKdÛtçœã·ý%öfºôKWZνdîñÅRÌÈ´S íQ=žJí}}Ú²OáŽ+q¼>¯pã õOÇ;÷‘¨šÉ}ýæ“ίªûð±ÚqoÏg9Kèt‡óͼï?¤oÞÔúFî.ƒô¹üß\Ê×äF“ŠŽ[*y]ç<]Òswxõš¾eâiìel¼Y6B¡>˜ #4©ÑNÜš_Ÿr¢Í$<%Ïd`JÍõÙ\VÎðë.•_8ò]œÜŸß‰D°ÓSç{ärGSäaw Êg‰ûÔ“EÞŸðŠ_‰Ì¨"O³©\~ªçE(añtø¢rGY®ÍÅS“ŒPLˆÔ굟}/äé宑:¥)p’mÁÉ$Ãy ÒüžBm„g!W’âOÈb^+ZÖŒX­Ó¦IfŒ¼”öÞJÿ)öjÅ-¸vŽÐÓ‰¢Ìe[åqDð(úž/sV‡­ÆU–gúݽJdïŠx'­ªáL…º¼‚@Gz_ž…ò¹…óZlqŠÂÀ»2á8)ÛVv\&#ñq,e¹—ˆ¯)A¡CSa„&=9Ÿ»íw-¨ñ»â€bj”ðÏ¢žŽæ€ä÷<æ%n‡õ»Ëö‹5kO0A¶Lûòì¾Ü«ª[CÑ=+``hJ1ƒ(:N½wú¢溮8-BÏ ,b5ÖVJaoæ)úù¢@ÍçÀà6û‰T*.~ð×ÙÛ&,S/•ò“Ž ’À9„ÁKq@²s¾ó}›ªÆBQVL‡pVÇ©÷º‚mîEìžE79E1ÿ[lC°GÕM‘§sþ¾8»”þpÔX®Ë•3GÁí´ˆê¦H6wÆ…Öyg@–ßíÁØ;H„±{μ‘;Uíþ| rCé("„:˜ #„>[LMd>}"~ë[)©ˆûê·Ù¥÷j2bÆÊ„þ ìWú $9p„bE!4ÉàcÈ¡Ï!œÅფÂvl4ÿúÇ­›{”Ô€J†b†6nÿÑâëvV‘-™â´ ¼3!„:,°W!ô£„ؼààH(ÉvmŽ6v&œšU¢»‹©‘Œb4EWlÖ2< øH…Kà `é¨BM˜ #„>cœŠO±žõˆ¹½'ývoòú+Ö˜Ø °ûuËÜ@**ì§P Þ—B&ø'!ôY£Ná²ßYãÝâù«†Tmêtù{Võ ¦`Ò= B¡ÃSa„Ða@Áî!”pù%ÞE !­™ úŠ© ±»Ü®Âì^KJíHljBhrÁT!t¸ˆN®tÁœ?|a`á3§E¨ñy`kOJ^W!„ú,ásÚ!„Bh’ÂT!„BMR˜ #„B¡I Sa„B!4Ia*ŒB!„&)L…B!„Ð$…ÅÔ†Êd2†i0“é@& EQX*™T’‰aJ&3†ÁšHÄ9B3†¡( àu1a@I&% ÉOEÑ`f*©èÌ48.‘°@RUûQ(ëkSI&U=À6“ÃK›q)nḌaô…1¦6%‘#t_m@¬ñx\Ó4·Û èØb±Z§Ìœuß¿¨ª¬<Ò± }òxÒ „Bh uwªŠr?ª£‰ ‡¹ „B¡I Sa„B!4Ia*ŒB!„&)+|¨0º¡© =D­”Çï3˜)Dž§„ >4†¡gLfjC¡J¨•rÃÚ2ÓÒ:å8ÊS2B!ttÁTøPéͤê×.ûÎ_´ØF6 #  ðþÿ«,žj³¹ØÐ`©Æp¤öµpï©'V{=Y{'hí›Wݳ%¸ú÷CÉÿõ"ÿ´»Ê²‡|ldºÂ­¯¯6ïŒ²ê ¦”gáï,!„ÐQSáñbLKw/ý0¸þ®õAeWÓMÖÃÐô³û‚¶jÏÌ3+nšá‘¡@€™úº¶¥Û[×|£æ¾2›Ýµg‚–Ø ¯¹¯þßáȧ=Zpèr.íñmÞó§ÞQáôäZv̉.göü«Ú~»1vú#MŽù­“a„B訩ð8™ÀRÉø®¦žOW‡W±ÊËqüÀd—éiõ½m3lòìÔ»•ç0W:r˜©gZÃÉ®ÖTªÆëuò 0`Z&ÝnYÕýˆ‚”|TmKB‰¿§äNÍ»Égq,üî¡Dä¥@©ßdt~ëRt¯(àÛ‡B¡£¦Âãc&µø§ïîøÛÆd=±Î¼íøžâ·»…½Óuµ«{Ûyw6·}ë¼ÿãÿVœ·¨Äfs¹x'9“eº¾¿6µø5ß®ð‚m÷Ǥ·×µ½ûÁÎ'àÓÿ83kæ\× ƒ;¿¹%øÊÛR®ÿP™~¢ÇY™»{ ÏQ_Yùu9õoD¿÷QÖÐ!„Bv`‹¡%z{Ö¿¢'Íœï_;íO ²$çà4ˆýê·P~Þs>ãMÑd$u„bE,©'·~Ô’öñy7•TÙ÷|dÌP›·&›^ª¾÷–ã—šãö ‹™†‘Šu¿ÒÐò“Zö|Æe_1í哲³½aPjËL¦™Z¯Úóîw?ùU(ݺwŠX}å´gÏÏóäH¢…rcH‡ 5ÝÖÙ|×óôž«äéC©Ž#”€©êÉ”!¦M2¼nš(•T=v{Õð– €ÍᨠdÄoþimdº•÷fy†—]C!„Єƒ©ð¸p‚Ýé›óþÅþ!²ì±û¤nš¢Ä·4~úŸEÒ-jrÈ´—¶-y©õÊrß¿9nŠÛóVä£×ß¾¿ñ%0"çìð_4Û5G3t/EÍtíúø û Éã:÷©ã«÷†°´‡~øþS`a`Qe£÷¾5ψ'~©Ò“3EêûH7Œà®—ü··ñ¯ñsš]ÏmþBCþM­…_ü|Aÿèïi~qWÃï¾Nƒ¶í™ç?Óú“Ó³fÞ:½Â0Z6JgºêÛ8(¬t:¼ ¨!œÍ;cZOÝeÿ~fãùÏDXäŸ>¼nÚþ ¶\¯wö5œõµp°ž Í÷Øâ!„:"0* öé§–-îéX¹¶gC_Ý4Wÿˆë©~×)×U»(7¼“0ÝóIchͯ{:Zä»../;;'Ë6`jOýuïFÿùV°ùÃŽŸž‘íñ ji~¦#¸ yÝ^œ_jµ€ÒùÚªHó-&f¼wØZHºç“p¼¶?¤³r²äBÚúaÇýgd{¼Â€mb:g^9ýüg ÄÉTbWÃö<ñÉÎ9Uiú˲j4ÖõÎÃ=-[µÔvê]'ž@ͤžÚùÎÚ;º?}CÍž™ua‘ÆôT×ÒUÁuràøÅÓ*¼¢Øÿ%ÃÔáº/=}¼¶û”ß[”mö?R"Ñêm}ÆäÏ·»K,Òàž{ŽHSJsNfzäõÏCÇCK{<Éæ=õÒ¨ \×|³¢¨D–öó‡ðVÞêÎà”ÞD*¡@¶Gâ#„B¦ÂãÄÞås•ç&ƒ%O¿·-cîíµ¹mFÑç“V•ãDN° ^ íë¼dF&ÙKtn3Êíö©ž)ÕþlÛ€®Í`OUCj]Nlsco\ñ¹\p,MÔ&ôpevWÍoq¥ÍŠº³Qé£)æ86dwHÉxãÀäa!¹“k÷„4 ¿'+Ê\Ó+½9åVH("ÏÛò ¾³=“Ȥ3`2#™NÔ­QÀUË5Sý3³x–T\5»#Ùo «f¡H05Ý[וRêY©Ç9mŠ¿Ê/Šýß - M/ë­mVsšâŠ–-q°¿*u¦šHkñ: § ‚}è[áPY–r²=UyZ2³)™H®êï´¦% Ÿ}Ao#vP›Å+rÜ— o‘(ºbj©  F!„&ðù7ŸðÖq¾ìRixJ^7o oQ¢r{zº,ŽF!„&8L…‹ –Tœ¸ôÓÔ3 S»µþÍU O½ÂšcË~²òì;æ=7Íã/²2HÇB¦Ö­¯àß|Çf!Ã{4 U'4 %‘Q“)éàë¦îpû®Ê-rQ:ðÈ ¢Óf+2ž£É  ™ZkÚH)ÕҒȨ½iÈÝøV÷…~M'ðÖ¬«)ÿ÷½Åu=ŽYÀ=ÏëÌÍ0Ú€ÑV°ä²¼/^h0«à°ñ˜n¦¢å‘Ô;W„F,É`$3I³„ÖXÊtpî{¤“ËSÉmÀ}Õ+ñÒ>g£ŽÂiäVÿꤾv­;ßöêG7¼Î FÇýk¿|iÉõ§_:Ï=dY %v—ƒbDÝg!„šX0>T!‚hÉÚS¢Á>]à™Q•\¼A:ÓÓB;”u‰Þ\Ù‘oeœž3½›¥€Õňï³ÙÍf2¦cà Tây:ø!1BŽ·•­;øøèé0Ó;™9ZH2@_HýŸ@lJéà €RÀ€"m&c¦Á8 "%ü™)ï°Ø÷†c0=Ý f˜EÀ …‡>Â78rÐLƒžØÆ4ÓLظRü¨ z€=ùq)’© ,>AÐP´LúäΦd°1™œí–¹AÏêJ(PB=0ƒ1ÓÐ3*µð”ÈÀ,ˆKYyyYyù’ÅJç«Û‚«¯ßöç¿5×Ê¢¥Ìáq¨Ñuº¶x àø}?aå* „ŒòS;o嬞s)}æ 7…¨ÑuºöЬý†dSHãd†ý§iª µÃH£sw#noK5µ}Ó MÕ 5‰`å·Äû%§ÿÜÓæ `dÚÃ-¿aËSkÂud×Ùù³d¼~B¡£þ)PodÓêñˆçç——V_\˜#—˜[B¹Ÿlÿó]±žtFQˆßnõ-à-²uá[yw<_ïö•X^àªGà3}M!`õ-à-Ùü”=¶ß@xá³íþäÞ꿚ò«\W7¾ðâÔü}ÏJ‹0B9ç±IëzÓºwo~—œºÉsá#ójdyŒ/gq» }kçKï¤z×ö†ãý=Ç!„:ja¹§ñ°R"ÊÖÚpøwáÕu½`ìc>¢§M=0í.Q´J„«+‹ãs4ºº*2Ánù?Ù&XB9Ž«÷|Ž£‰è[Áö¸i\—–Å£[ß4Ô‘‹©±÷ÒúÚh  i€toC4ºýŽŸ°º²8>ÏL’}wH¼»ì'»ìèÝKv¨5 S[W÷Ì++~ôÝ]Q]Ê«+À—èe¡HB°[ö·‹DFyéœÕv‚d›ÆÛ±Œ‘T™# Ù¤^P_m=¶-ʾŽ"c ¦z(¢È.ÛЯ=ªÉ”dÒPýÔ@!„ÐD‚©ðx'ÉRg¬Ž(mÉ`(£ilH&Ä€©©T$®Dzd«ÍÊ <à$‰ãeP@iëJöÆ´Œ6¤m3¥¨Ñ  *JÆ4 ÂoÏ¡oÄ•Ž.uÀŠÌT2ÆÛ`h„7@sŠu‡2õ-À©J*OvDÌÙ’ƒhý! }ükwHÝ»C:˜ÝeµYÝ wô¦"ÁdJïßË -ÕÚÝ´3¸jUZ×p„—džZˆšnïTz3{^4½wÇšJ4 *¡’Ò€í¿’ÏûyÞ ÐœÒÁLjmV¿…ë63Ûâ]]éTTö²¦z2™ì3MD¯U†^<:€šV DJE¬B0[_É0‡P°¼åî;?ºôó›kk•Ì Y˜ ©-ﯽ÷ùõw<Ë࢜Âi· <üÜ€œŸ½ÌïÿhÙŸžÝ¶aWjp§rtåëî¼ø_ç_üæ+Ñb©dª[,4Ÿ‚î®ÙZ_ß¿¢èÊ·_¿zëc`¤‡ÄGow^.ð•]ÉØý;75U0 µeõ®Wþ»ãÉóR€üÜ€\TÐÑRíÈ!-è ©û€w—Ý"äå} à™7ë_ûéÇ+; ¯}Ý0Cµoú°óéW¨pgN¡ã,”æ—ŠYÎ*ñŸ~ó'> 'šîZ3=KñþUÿ몋þû~£¦'ö»nɰYs™­ÉxBØÏQ_Yùu9þ‹ ³õþ•3¯ÜøÞÏ›‚C—WëC]ËžÿðÚÇ”&pø.Î.p G‘1ÞpÔLÛ¦Iî)yŽ=B!„Žø÷z|5ëì?Ôt½Úöá_»—Cãµ7¶Kò Q´ Xª;Ý–…ûÃÅ…ù¹ÖÝEm½¥wÌò\t_êš[£Ï½T÷æͲsàrf¬[‚¥èÆÙgLsz|@eswÍŒÓ y^Ü×Zû8 ™Ðw@ý}¢7Û%Ï‚µÜxpŸ|n1_%Z¾½ýIhÿɪ.ù’ ÅYJ5’Q⇂ßP8í¢yHó ¥õt¬ ×æÈµÙíø-!„:`*ÃîÉw‰‚¸'Qæ¯$•äû.9ÃhXŸê )uƒ:uùù¹z¶³¨Ä!K\ßÀ\*Xr<®êÿ9ÇE—®ï_‘õ´ÖüJ§¿³ƒœ¾JEo¾{j¯®¬‰­ô•H#¼C>+Ë–ëçø®Á³s‚W`dÿ!ÕȾ! Âó‚7×{V%ÝZݰ5¹§dáÁrz–£êDOžmo¡8Ê‹Ù.ûÔ"ßùÇ›õŸ$v(LWö6%|¥{FµwF¡Ý*ÑRO*‰‚-Ç F*žÒ¼*À€Ô™•d);Ç=}~à‚dbmDmnZ¾­ø¼©¾J§·¨HvØø¡k3´¦&:Yq‰ä,¶Z1F!„Ž ˜ !‚”}î9ÙgœžikX{í#‘ðju`Wª èç¿>ãò_nÉÐwœÙ¬öéeÇ=þÖg_k[þPǪA}ßY2BUŠ@NÑâ¬ü…î—ì]QÁ­Çe[Ùƒ/ÔOÀ8°T?ýê’žytõÏ19ï—¦Þ{¾/j3:þYŸçæx‘ö/hDÛþCº¨0Ç> $JÝ<¯TÎŒD!+‹éÞ´™£Ô_2ów¾Îgg´þúš–þV\Pü³¯åæ\p jdOÎÅ®¬3~Ùò×ë¶¾°+Û;‘Ëïm7ͬ˜ê´ë¡‘ßbÉ.ÌuðM;ã¹;/«`ðƒv‚}j®}Êo‹.lÜxûÖà‡wöÞ™äüã½Ç]wüÅåŒÔýÌT¥3Ùù<9ÿÖœŠé¾ƒè1G!„Ð@ØÐǼF‰DFŸé¨uå•WÆtãþ'Ÿ>ðE ÃHkæç·öTCÛwÉÆTÍÔusðr#Ô*îgFjïŠ8 ¯uCºî…w¿õLö5Y³[‘;x~ƒ1SÓ3{ž#Ò± }òxGèØ–lìÚúçO×?¯‘ôÀÏ©ÕáÊùѧ—ºùlñH‡Ð1AiëÚÞñÆO×ÿC'Q6àsjÎÏçUçJx•¡£¦ÂGSÇÓ±Þ†–Î-;{¶ÕöÖCRaÊÛÅM›Ú2®%àð£Iƒ1CKv[»Úw„·ÕF·èÄ8Š—°yS[o®#ß'UeK~aDè@0Æt¥+ÔÒÖÙ¼5¸¥6ºIò…S$lÙÜ®&=9^ij¶U ¯24ÁÆØès ‰D>‹PШ˜mYµ~Dz5_¨¼(Ô:øcꚦ™©3¯XðÃsKþç„@¶@p š ˜™JG»×>þÂu/…ŠvÑ6äÔgÌÔ´Þ¤i_Q´pê×TeñwâÙŒwº­BhŒˆÍVjɺH'/oY^[lØ…}\e$«äó òÏ™¿€ñ·•Ç« Ml˜ -€àÊ·Ë^U×”úí™Ï–ŠJeËПžgõ:†ýr…Ð1L\’«Ðf¢ag'—H§¼åSíJ†Ýã8ÁÆ 6«|$¢Dèh&XVW±“’Ds]·Gä “žò*‡$ ¿Ê¨ K‚,ÙŽD”(,¦vcŒ1BÈ«“ؾîé—ëï|²5׉8å¤÷üzz‹Àq'LÈÁXý'ØAì´¾”âH4šXkWý®S®ý43€sسª_|in®÷pD° <ÁÁŠèp;ï~±–dGâoo¬kÏ0pPK勯̭XÝx«(Ðcá*ÏQCÊØ‹©a*óô)çOíšæýg‘Né­íÑ ŸÔ/}{K·Ý,%Î 4®®®®î¡‡bÀâñxvvö¨ q&“ †‚K—-}üñÇÛÛÛ%Iª¬¬<<Ñ¢£!„ãE§÷”S+/;;pzNíŸɸîÍìÚÚúî;[VnîNçæ–»9ÿ¼¡Ã¢£³cã†>ø ¢(ét:;;{ÔUUív/]¶ôÿžü¿––I’JKK'P*L¡œ`÷ÌžWþùEs‹kßûÔGõÞ„Z¿³ý½¥[WnîîÍÎ)qò"w´^eÛ¶mÛ²eËOŸoCh¬««¦Ú¥F‰/ážVAzÃPµ¦U›ò‚ÿ ±9v§Û!È2?a’ tÌb&Ëd2ÍÍÍMMM’$¸\.QÜçÝ/N‡Ãá®®®¦Æ¦––§Ó9!ï~¬ÎŠ g‘‚ª{Úâ ›LÓÚ×µl3X^0ã˜cs¼¢ÍÆ¥FÿQs8²]ö¸=‹{ˆa8@bvìØ±jÕªG}tÆŒ³fͺüòË}>ßú‚Þ'^»úÙmËÜñ;è €wQëÔ7Þ>¡2Ûâ>Ò¡õ1 # >òÈ#MMMµµµ·ÞzkMMMYYÙð9•”òö¿ß~øá‡àä“O¾ö×z=^»Ý~ØCFÇŠL0ÞÒü§K–=§‘³¯Ô¬ïþ üÊ%Eøw }öúî~Ï=÷ܧŸ~Z[[û½ï}oΜ9ûºû-[ºì©§žŠD"'Ÿ|ò×¾öµœœœ£ãî—ª‘ö?_úîÿ…ô€Ê³¾óƒª¯.)*$GeÅVUS;;:~øá;w*ŠróÍ7üñn÷ù‹ŠÆ Ç K<ß°aË/¾ØØØ˜Q3œÁ”ª)N‡Óf³Ðx¯Qɲ\\\<ÞV˜¦&µtRMÅÞ¸síšÕ± ‹ïž µ¤tB<%Ï3M3‘LÄ{ã[¶lyá…8Ž _ùÊW**+DA4 cÆ Ÿ|òÉòåËëëë/»ì²@ PZZ*Ë2Çq²_d2Áçóy½Þ#È`&ÓõD$N¶¶míxñëþdHÂ¥Óç]4ã•“}G:8tìë»û)ЋŶlÙòꫯêºÞw÷+))±Ùl†alÞ¼yÕªUË—/ojj:çœsJKKKKKm²çøÃp÷ë» « f0ÃHF3©xKÛÖŽW°îIÃj\:£üÜiožâ—'à#,£aŒ†‘L&ÛÛÛwíÚõ /8Ž’’’‹/¾xÊ”)ø'éh1öTø(ýùâ3”N§#‘ÈŽ;¶mÛ %IÒu=OhªÖÓÓsh×å÷ûGI…#ÕÓO(iä²5Dí‚(KN»¯b–?‘6J×ÇëêÑRWºT>Ð’jª¦nݲõ+EQºº»ZZZt]‡Ã7nt»Ý6›²sçÎí;¶ïر#‘HôK‰D"Çü—®£ Ïó]]]‡­›ŠR:}úôQþê)5©›’!"ûÖ¬€eèC;„AtDGÊK“jÍ|ïÔO¢MÝ©ÖúdúdŸx(^2dšæöíÛUUwKèXÖ÷K&“}w?‹Åâóù!uuuýw?UUóݯ´´„ýÎa¤Õd&Ô”ÙüËÐ?+„#}ú\““sÈ¿Ž>ì˜P°;r,|M2£'gŠÜû©V#ÉVÙ^*€hD”t:š€"û>^þÞ½­;Ÿ·Ô³ìÊŠìB“@`Ó¦Mµ5£ë÷nÚ¸éÑGÕ4-++ëÛßþvÍ´Q !ûÛß6nܸbÅŠ'Ÿ|rêÔ©‹-% B‡ÆÌþò|púÒ…Qf’V9YÂ3b†“©¼XÀ±ï™9ž8œÅâK¤¶‘p2À¸GþÛl¶—^zé°ít”ê»û=õÔSñx¼ïîWYY)Ë2!ä±ÇÛøÿÛ»óè¨îëà¿·ÍòfŸ‘4£Ñ‚vb7«1)cŒÁq€ÐØÆK ŽÝ¦§ŽÓÓØõ©S×I{ÒÔ&7`BmS⤆ƒÁ‰—‚²„v¡™ÑhŸ}ykÿ±Ñ†Ð|?ÿ!=ÄÕÞïÝwßïÝ{ºòÈ‘#»ví***š>}úÒ¥Ky?:½°uº¯ºþe…°ÄdÉÕÑ$&)Ý0‘ô—e!O¬µqéSç:CRïýµwN²Ïv^¹.}É”)SnÜåiP>Ÿ¯ººúÕÿ~•c¹²²²x`Ò¤I7¬há&‚T¸?Š¢4œÆáp¬Zµjîܹ^¯÷äÉ“¯mÍfµ-Y²dΜ9_½pŒh8„æ-3kBPùªZ#N ëÎò<Œ{››[^NPíwæXKÌn=¤² ª$Örøó--Éo}s¹e.ÿqEx*˲ßïß¿{{»×ë½ï¾ûòóósrr²³³õ:}oñÃl6Ïœ9³°°páÂ…ÇŽ;sæÌÑ£Gï^ywYiYAAÁÈÆãͳVc™BÿÞïéÎ9çOLzÌ¢‹kÏÿ"ª\(µêç¹sx¢‰·EñªCè]ý<ØØØèõz—/_^XXØ»úõ>l$„˜M—V¿E‹UTTô®~Ë–-+//«­g­ºÌ„ý}ûÅ®î3ÞDy™v¨Ž„J,o9ûFH¿'EFžçM&Sïž¹æææ¦Æ&‹Ùb³Û,fËŒn^,«áLù:šJt¢-­!¿‹qY†êÿ¿ZNÆâ¡€ïb÷ç‚*ØôòÌFöú+ÂW"Šb,óz½ ÍÍÍŠ¢äææ–”” ¹ú™M§³³³¹¹¹©©)##Ãf·™MæTç^ «áÌ:†H‹/èwY& 7 _gïYÖÚÔU“{ ôù¬FÍ›T1ÐÙìè!ßšèž1³jd¢j"ñ5¾@›'¾¬@ËŽauñx<‰x<žºººp8¬×닊ŠJKKM¦+ùdË–-6l˜5kÖU­~Û¶m …B999Ï=÷Üè>ŠL"Hü§ó-ï?XìÔÐØ¾#$Æ-U‘UYNˆ¤ÿçFÂqz–ü\UU).Ð,K3”ØúÑkO%ooá]'—9qÏ ã‡ªª’xvB8†¦iýÀÁWrLhoxó˜{æe®ž¿² · $ˆßG÷ìõß9S¾göcSÐ àKª($$¢(¾1ÔY6èbá³|ó‡â¼oL^¹fÒ<}Ž¥ƒ1 $Æ-Šf(šá¯¶­!EQ Çë !¢"Ä‚>ya®NpðXy`\¡(ŠÓ\ÝÙAë8G᪟¯£­Fã/OC™Ä£­¢Ji8§q,l_C(N£¿¾ÖºÝçþÔái}~{ײM«NÉšn¥‡9eàF@*œfTI•’‘â˜ÀPZ|ú¡9c–IÕD äïýš;#íã`~Dš!½Sz„h´½¥ÍÓä?ßm\SâÈué¸AJá?`šIFä ÿÔÅ>Uï°bŠ:¤=9&vÔ½ù­ƒ‡ºÅ?J—¦hJ›»Qoš‹#F”Åð¹7w=û޽…™¸}Ï]3L#3éàz N3ɸ ½ÁLy.ÓPâLu0©¥öê|'ž?ž|ö¾Mù†ÍY—úÊÑc÷¾”aÐñV ÿjgÓÞóçߨþ׶̇Ÿ¿½lbÆ á°/ƤÂéE‘dI»œ<§ctxYÒœ,Hq¡ÇGL.‹ÃÅ».4WÄ@TàÊ­aŒ—j€ë¥"jÚ/^W·Ð9³³ ò,yN=êÁ0F N+j2»ã‹',¬×xHsɸÚÙÌé.>ó/ÛU) ôÔU¶G¿6U›¯Ãip½TY}Ç~ðñ{~ûa÷Ô·þóÖ"ƒnÝ0và¦,­Ä‚­]-Ÿ·ÆÝƒŽ1¦:€Ót.Wòžºñ/åè¨øÃŸßÿàÑÝ´ä6éÍZœ&×IJĽØûbÐlx`ò–×n-á‘ÃØ‚ªp:Q㱋‰žCêcOòvvðÄi„¶š ¨ù/Mó¼öÁÛ„ú¹†"„ÌY^’YýÊCÇ6vÆ’Qsœt¸vjPŠêw=Þýsåéó6FýrˆWt÷½yKïÈÊ3Óæ !N/4£×è,·5:ËÇ މYÖD}]P®“ !dgËËP§Ò–Y^ÆÄ«A}(„¨Šl-Σ:T¹Ûè¾ì{”6Œ ”0ª0mÆ•áO›CiÒRaHSØ+ pã¨DUŤ¤(Dê¿¢hJ«ciŠàV€TA* pè Õÿî…S'Žu¿%õÍxÙ¬ÙórÿéG·M2 òH¼60âTB’ÝÕ5 '«_ùc´¥*ÔÕ#¶ö_k5z»nÚ¬LóÂ)kçdÝ5Ñ¢'(ŒŒá¿6‡ª0ÀHS‰œ uûý UÍ¿;L™³L†|C)×ç9‘ˆÇcÇ?nV¬ÎI¹†Y¦|-M!]H…F˜*‰þ#{wütEùÛçWÍ™³ÐÙç˜è…?}Vqqõ?·Ñ»?}YŒîUØÃ_Ë4pÈ…FRa€‘%ÈB{ÃNÙ_Eln˳ÿµþë%¼sÀg¾hþœìòÏÊëwÿÄ¡Oz¼^ïGÇhR1@ÚB* 0ÂT"‰!"%t»97×d扖é ÅiµŒâÊ6fihS\{bqQ•UìUè+ 0Â(BQ,¡4vnB¾CÕUs Š7åÛu¹6ÅbˆGâDVF5N@U`d1gpÜA›¸¶ 7ñÞ™)ëJõz〲0!„hX>oÁÖç¨D¡(ŽeP]H…FM3¦’ÛJ\þ–ðç=;¼ÿ{ÁŒiY›ž(rP¤FLQ¬žÃB *X¯Ž$I4MÓ46–ÀP(Šfy‡#Ë*p„+<µÚ˜L­hÏ áy­ž×jl 0bã*(ŠÒÒÒb2™ìv{ªc€1/x±­öBùúÓ—íÛO,Z½~Þb7AÛ4€gø#6 Kuuuõ…ê=»÷”••-[¶lþüù©ŽÆÕqÀÍ€b ãrê4î˜À®XJˆíòÄZµ 9wÞÏ*7n/,5ê9 k1ÀX`0ŒF#Ã0 Š¢$“I—Ë¥Õj±1rCUxpªª ‚ÐÞÞÞØØøë_ÿ:çåå­[·nòäÉ ZàÀÕSi¬ØSóáöº]I¥3"ɪIŸ5éÍ·fOÊÖeÒØ00&„B¡ŠŠŠmÛ¶B²³³~øá¼¼<ÞÀs,Ga6úÍ$®‹ ímí;wª ƒëׯ_¼xqFFÇq4MãL€k¤ª²$IIA7¾óìñãG{véxõïú霬GŠÌ£€TPUU–eQkjj***vìØqë­·N™2eõêÕ‡9ÀÍ$®]ggguuõÏ~ö³úúú@ Šb0Ü·oŸV«Muh2Ó¦M{æ™g®t„*‘˜çð//T×H§Œÿðƒ²gìwѤ(†ã–%º¢åOËeŸûÈ«÷üÊÛ©ÓuÔCêêê^xá…úU`X‚Á`gggmmm[[ÛñãÇ=úÐÃçää¤:4IH…û“$)755uww' UUÛÚÚâ‰8Çr© RÆår}Õ!*Q]g}õG„íæG9‹ ±hPayG¡MˆDóTUÛ‚bL%Ž¡‹M‚ ÔÕÕ]sðp dYã¸îîîP(¤Ñhbј(Š©Ž FRáþ\.—Ýaçw¶oß^YY‡7nÜxDz;2© Æ0Š&FS¶–Í¡#’ÜÝQâVbÓ }¼ž×ò|«jäžh<ˆ’\#ªÛðäÉ“=zcâ€ÁE£QŸÏ·yóæªª*—Ëõøãß~ûí,‹Äi¼Á':ŽåÜn÷Óߺ½­½±±ñÀ‡ÊÍͽ÷Þ{'Nš¨áðÚ DÊh™ÇÚˆ ñ}v1’iâܺ!Ÿ&Åkkk/>+³« åö|#Á‹sc¢(ápxï¾½g*ÏÔ×ׯX±bÓ¦MN§Ól6#—ð¡‚¢(–e-f Q‰$IÅÅÅ---Éd²¶¶–çù̬L‹Ù’ê` âLNƒÙ­—%¡¹ÎN¯ê‰ù§žé[íUY´×ÖuŸ«vQÔ-ù§M«E 0„ÃáH4ÒPßÐÙÑÉ0L^^Þ„ ²³³m6ÃôŸ›ã:H ËÙ³gÏž=»sçΙ3g._¾|áÂ…©ŽƤ¶³••žÕÏœ EUeNqþ¢[ÞÛPlè[uã¡ÖßúÁöä‘zÚæ4ýËËëç›JÌ) ¾pâĉ .lݺuåÊ• ,˜1sŠ_7)4SaŠ¢È²œL&;::, /ÀàTEv\<~pý‹þ¦•p´YÏôï ¡ªR2M¼iîï<½âÑ«ŽÆî€± ¶¶VE–esór5œ†atO»I!¾QA i»…`(ª,ŠÑ`­G詯ºXuºwÞrV^ùëy¯ÎuLuln»Ó@3¸ÖŒ ñx\%*C3è z³C_á£æàÊ(†Ó˜3Ê'“0ßn‘l¥%ްÄÉ®©S³Ê­hÑ0¶èõúT‡£ UaW†_j¶À8‡TÒRaHSײW`@UÒRaHSH… M!€4…TÒRaHSH… M!€4…TÒRaHSH… M!€4…TÒÔÿyþPú endstream endobj 136 0 obj <>/Filter/FlateDecode/Height 318/Length 942/Subtype/Image/Type/XObject/Width 942>>stream xœíÓ1 0 À°ò'ÝRØ7E²äÉ,1¿€Wv… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îaWȰ+dØ2ì v… »B†]!îq+ïÖ endstream endobj 137 0 obj <>stream xœÝ¼ XUUÚ8¾Ö^{ïs…sár¸sH ˆŠ7(Š`€Š¦&r‚r‹‹†Ž©ãç-Q2 Òl4§±ršr¬Œ´AS¬Ì³´¦Û8MÖd‘õ5j¥°ü¿kí}¸8ÕÌó}ÿßó{ž‡}öÚk¯õ®÷þ¾ëÝFy£Õˆ E‰É-=‹BO73˪Kër›¿ªDgÁ!—-m´_j×òàH*¯[T}‡°äBâ¯`üS‹Jê>H ׯEUÍå?8öÀõ„Rߪp—ºz®O?‚ÐXm‡P×ãàzHEuãÝ2\p½Ök©ª-+múâ¿JÇðy­ºôî:Y'Æ 4þ9¸¶×”V»\ür\ŸC(¯®¶¡ñætBóÙx{]½»n̫ǟ;gM0ÂâY|’Ÿi¬¦œÉ{¨\°EYG´¢ ˆŸ£è›o¡o1JÐôòlr"ûÍ›²/õÅ;5ÕøÓ_¸p)?D=‡¨íøÆü,¢8ËpÆH@÷Ø}nÞd¸±óÍOÿVÀG)DÀLîi‘é‘‘HÆ„ÌÈ‚¬Èù"?äl(¢  °CQ Gv"Q‚(ÅÆ±è6‡âÑ0”€QŽ’Q RÑH4 Fih ‹Æ¡ñhJº2P&šˆ²P6ÊA“Ðd”‹¦ ©(MCù¨MG·£BT„ŠÑ 4ÍB%h6š\ž‹æ¡ùèN´•¢…œ†tšûñ68—óž Â* Ûóé@'à¾ÀÇuàÓx> í}¨¾×¢ï°ž¼ŠGA«æ–ˆÐÛŠvñ™­ä¨‰¼„ÞA§Ð‡ÐúN#0¿ƒ"ð€¶©Ò W'à{é$%8W£ÇðÓq¬Y‹V p ò›âYè}m€Ïvôª…6Ãl-àÿ1zmFWÐCÂ% ö9t|(H„¯Ï£ki¿0ôw3: Ðv¢x-:@Ôzù‰t^ˆ¨Ï8´K:/=ÄøçóÒ·p¡P¹CöÕDŒoûðKx¸Þù+P1™Kî"âub”¸Œ\B­" ÐbtF:/û¢VMj•Ëq³¸€V0ú„eâ¼]˜ Ép˜íâ#ôœP(åKù@s9ôíâß­Ê·lFo’ëÀ÷mœŒwVˆyè!´fÆgª%©°z-Z!mQ>h?|†I[HÀçÜÀ)Âx´K(Ç›ÛkÀÍZ’WŽB¥Ëh~ðFš•¨A:@_ÐÈ’HŒâíæ‚#×uÀy{‰ýµÙÃâo¹´›5öhú¯f{ÇÍ›ÓKÄ`iö)äqhˆŽ¨O~îæ'Ãâ§N/±w`[v– 6{At•@“]A7ôggñ{lÕ’~s°—UØï5ß5æ^³{Ì0 _ËÀz ´*h›X!=m  ‰Ø—9ö=„µÒZAD‰]纇#ó¹îsÝI>–‹#ÂQ!¢žÜómÓxÿð]½Ël¼ |LÁúu(Üi"äõh£V$Ld¤7Ÿל–6%^ìéNÂ)E,)~Q‚xÚïQ¿Ó§¥ó½wч±»·ƒ‚V’ýô‹ãêô–ð&`!QEQ è|ݺ“°%ŠȪ§Ï> @@WÙÁµ‰oJàaÂÑgRˆMÓBP „Ãüt->&ƒÅ+<,4$8(Àæïcµ˜MÞ^F½N«2Höµ›Ï½acèŽ;7n\Ï8öÝ•Ü ’Ÿ’âÁ(Ÿ(8"R#ø£HŠðTÅÕÊ=•Wè?Š¯Ó {*¯Uî® ÇÓk8±k¯_“:i)ÞMKwÒƒ;èBüvìÀù;ñîÞWéA º“¾#Î-“Áw&"—3M;tÒĈßD³Í;6Ù>´5Ìw³ÏVÜêfå!Úx ä`i¨Ýf3M’ùœm\·-¹g\·¹çâe ç•ä®Ë×.›/¿rí²ÅšfI³Xmp¤#'àÔÑ1oìçëd%à˜Ô0l³$@÷ÈQ©)6¸ðƒNK 5Âs5¿ªûkESõ9.?µÐuºìµ×ß9êÂ{‹g<:ýϹô’EóI£kÞ¢³ø±nþL×cx˜”ûÜ„L¿~¨í‘#Þ_}%…ý!.Q¤·‡ß¹óÏ:¦KD$/c€Q Ít&† b &ºûM‘÷Ú>ôþ„m¦íäþ€à8¥¬÷3 ½Ñ¡a×ÇǘAw{ºÍ—éå4F “åe œíNw£Ú×?%y$Ð)kFŒLIö·qò¢"£q ¶9~þ¶ÐQ™?mIU^~冎õΆ„„äÃ6¢“£Dkl­²`ZUÕ´iK6tlp6 6üðú 8=ñ’iÓªlx1)!±1}ÝápмwÁg•pcÉâ|¸1lXSÆú;¸M¡´›ŸŠ'ÁÇÞÞçYçB‹Y°šlF/£·ÍËË8,^Hˆ³AäMN‘:R>ʆ1ÊeÔÉXÒ˜†{ 8©ÞnŒp´‡µYwh¼ÐP¬‘I„Q+ŽŠ‹lŠ}´C­ÁZ/sp‚Õo´ù£î®ž.ó+ “˜~pFŠ0þ½rñÚåwÿ ·±ØÒ’ÀiÌÞ_C³ï$}ÍhÎŽÔa¦T‰8…iŒ-*ÆGE"¦N\©;A£€· q®wÀíQð(! &ø±)S÷ŸÏ/:¼ø/ôó{7''½ú‡Œµ9cWf—Ö9÷Ž×¾mn|p”™lî=;¼­Âž£‰yôŸ%ŸUçda¯76}éš|虜§l/Ä8î˜6vÍ™ÜßÎm5Àf²yo±`&û…Nîc¬/`´Qï"š¹»»ÒÅ݊Щ:& Œ÷ÓïH“l‹ï&ïB{{i±Ê(@ï ó’»-LÇÌ̻ɂŸ¯Õ-¤Ž°Ž"MëÖ®]·§ýÚeëE:öóÏè˜Ï/㻀»ºî\€ã«ap5Ø E¢Õp{º“ûá¦ø[ý|MÔHkêÏå0÷tÙÚMÇ]ø„Žëþ¿òéEü à‹ö SÄ8Ð ÊwÆ›½ H4ê4@£–<"YŒè±w›UkÔl!˜(Ð$t^²•»êà°qçÀÂzºX\'a/¬q¤˜ax”dI±8Ä8º—§Ñ ô@.§;Óðô<]¼püÄÂÓtn>½ðÄñ²Ó¸™n8Íx ¹×]b³¸ì;Æé‹Õá=Ò£b‚D¢ ÒËF†ø,{xá‹‚›µ/á?щOÐ,ü’¸fígýø%àåvú‰ðNà4ߢ½2q(’Y{ÃÃD?ðØøZÏÉe8ñ ]ƒW)òuá ¤ZX ú`9„ö"F ]<ú%aX»]ï÷ÂÚÇ`ì%0ÎÏðpk>„ö °„¢:‰<´EáK==x8=Ãi-¿™)Žâz8  h8 aDäQUÕ¶ˆÍ=—J笆‘ëÀîó@vÈ“£°ÞD~§³¶‡ÛÚÂv ñ –#Pp¤),"|ÐpÌàÚͯÀùÜå$绉(' ‰$QL”åDM¢6Q—¨O4¤£tœ.¤“t1]J—Ó5éÚt]º>ÝP€ pP /0܉îÄw wêï4ìF»ñna7Ù-î–vË»5»µ»u»õ» Ï gð3Â3äñéùÍ3ÚgtÏèŸ1EGñQá(9*•ŽÊG5GµGuGõG 9?‡Œº¹S¼SºS¾Ss§öN[øç ™‡çaî5ì)XÌÖ”dˆÞB ÿŽâ=øÓi#GO/H=uÝ–Í›·lݼyë7W¯~óÍ•+ÂåQÓ§Ÿ'ì¢oÑSôuúNÂ#ñ(œ´‡ÞM×Ð_Ó»ñF|^…7rÙ]ƒ8”²Ó£h§/i…vi£µë´QrÉ@ˆ]=\ðÉWX’ ’”êHaÊŠ½ñú4žþ:ÙóÚ~±)¯cÊõóû¹®A>ŠÄ(oºÝ‹B’,[°C–¥L³åq¯vß6µ Ȭ°>Ìi&CBÍ=°Ö±càyÕ¯¼¡ø_Éãxmɳ#°v*lx8gq+uNI™öƸIxº§éHuål_}Çku‹^-ýf»FŸß¿ÿIœ0ay{ÁÊ­™ßž|éO Ž5f|ÎðÝú8 ðŠ&¾>í~úͺ}^írøfû¾ö¨6y‡ß“±þ>ˆø†E›ÃHd¸¯.<ð„Ïu[¸éõd Ê’p",ŽŠ E–d(16§öÛ>¤‰vû.úÕÕEï.*eᾃÚ¹só®mëgwV4ÿ)÷,m"á1¯>øç¯¢‡œJѶå×;ö-¯nX1tèa»ýÃçW<¦ÄQØÃ‰µ G¼l¦3{/DˆW&"M»„ÉF6êQ˜V”MÆ!ÞæžæðxÈ»ÈZV5Ή§€É§XXƒìe¯Ü! h,~/âËW_=Õ»A íùŠ¼Ù“òÝ…]GïZwÃ`íP4Þ)jBƒÚ5–Íæ­¾í^B;ÚèµC³?Œ„!È+ô‘ÈƄܥÚóE•_´ 0ðaqùù¢AŒcü:#\é튛ÿ6ÓO¿_v2îáÒÇŸ?òøí;A÷Ómf½üe7ýÖn3yø½{:À Ÿ €]÷xg”&<°]ÞnÖÿ^„­ÏV±Ý¿Í¼Ã†¢½"5rö w0wÓs±[ñ6€Þgfž*$aÈŽ RQv0E‘ìytW%Ò·N;öJÒþš¿|}åcÚóŽÂ¾S ¯yà5ë7n”ž;숡è?\Kè÷ÿüæ&¼ /Ç[Â{«?öØá?þáéÜ~6ƒ<™O•Qª3PrD Q3%à(‘q$ ×®]2Áᑺ0ct óEHž»=Atð*—²E ‡pý³ZXNÇ»•I2ãâ5Û·ƒ87|¤}2‘IûŸÅâwôcúUîB›G”½›@Ü8º–`ý•ÿÆ:z/­¥hC8à¬ÄX1†ïƒ^Â^ô”¸W–p¨ˆ´||R1Cˆƒ!…äåCtþ>:ÿ<p¹6e C‘h…3Ó»ad”ADɘ$ ¢hBáæÍ¦-ÆvŸ¶ðõ²=Ð_'Á¶Ù®CëbýMØN£Xl<ÇR¶U°*.¶ »F¯\6¿ VâÙ>ˆJø•=ŽsHǃÃ3DÔPØ~ûE OuŽ/ž3!qmuþÁ…óVþxâü’ìè“§Oãm;n*œ=¶døìšì¬—ÒF{4oíÜ™™Åãéw”ÛB0}YÜ)5€-Œ@uÎáCã†Ùˆ·Q<‚«}WûÉ,Q­ŒÝ'*•ÙN´ºâä"î4G޲Á»raõ½W/Y²fÍ’%«[îs¬-|ôw¾~Èm×èÇx ¶Ž¬JKJ_1†>Lçá»ñ¸³×…ˆ5?¼æ×?L¿¨MÏú¾ËŸ¾«ò›é t¹¯ß†Àü6nÁëñŸéµ¿O û§x|Ô£‡œÈÉ/¨¶C5pÈIu¢×Âz¢Gâ§⧦€ð)²È¼v¢“õà‘R<£òO-÷½åw@K þø †`<ϤG&Ô ‘`ƒ £¨ÓÈÚõx“ ‡æaÁå%Tœ‡ýدâSgkz¯V•¢zEòôõ8¼Ž®`>|ÐsУ…ÝE¶@Ô®×µ[7âvýÃ-†Àp­ !ï0)9d¸…Y“"˜áªÙ Ý<[a…Õ1OÃ1À}Çb|×7Ú~óÄ7_Ý¿vÍt >üÙk×nœ^£?ÒáTïÇ+¶Ü¿I(§êVÞåÚ÷Êó›~ãëfÏé3,Ž_6ˆœAÏ¢ƒþíÄëYãAs»®ìòI6¢árRC­?ä‚7Nrô뇺‡Vrá‘£ÄáÓöÞA?¡'p:½cï´)ûgžìê:Yòdnjl,nÃu¸ïˆ=3Þ )ð›ôÏô-çxn›€g…*φ:ýävÝFÔn’‘I§!ÉÆáš0s’éaû\…Aà|ö‘stD”Ňc‹-ø9tóõS7Ñž‰³èKt?=»ïžŒ§Þ¸±LJ¤ÐÕf?ÈJ§„5ó¡i@±N™å×h£¶]ü£KºáH‹RŒ\,]]}éó…ì8I–ö [{ë…£=ËXž“³¿÷S5džø!–lâôQa‹çÊÐ+€:‚ºDj{ç îÞ‡O3ˆ“÷÷ŽR÷qŸŠÓAV¡hœ3"0ù“ öAò  3¢‘>ÉrjãT¯ žSÊm¿ 9KTj„8ýöÓKéEÚ…8tþSÓoßçÉ“G_™èŽ}ï\1unǵL€©#ÏLË¥g@|§èùð¼mÇ‘Ép2ç'ìW´íÂE´Q/½Òpl;“nòÐ9î"4’|`«Â‚'|Gm:-Äž>Ýû«Åî\×ã„W{Ó^ž¸2‡ QTÏ¥$¶C,EÂ4h”ÎÈê X¶-Iîc&lÖ#N‘ñôUœÖs§ÑW£7Víß/®QàVßü”¼p-(Þi3j´ÛMÚvýFÓ«Nf@© sç<|Õÿ3h_Ò(5õåÕ3Û Vßq¼¢õ.ºV˜ôÎ÷ :Çwß~ûƒ§IÖþ+ýüËxÔÇ›Sœ†vg„Ö¡Ó¦Kã€í–VAÏéeVý•q?£ÌÇ'Æ ܇õ¹+­ÈÜUžFò—lÚh)Z;RÈf³´%:—°\jÖ®Ðy †j$$ 6(FŠ—ã4ÑÚ1$—L’'iî ³¤¹D3K»„,'wklàà@8E‰©† cÙ×½G„™WhàN&‘ á¡Þßôlºëíàô¼ô4ðz{€ÓÈ•‡‘áh„læ‰[âEEº~ïÎö¸¤ó|÷‰ÑL˜× óŒh3^ ©³†A¬œ©×ipéàÏ%½,‹‰z%y)ÆïaIW_õO:¥ìŒ<»£ƒ&=FóœC$­^gÃĦ ÐEãX­ÕÄid¤v´ÎÛ¤žÀ–Þ'¶S @·%j&ÄxÒwÓzm½z× ?\“bz¾&>×ßWsÿn×ÕÎȺ° käL†ös R¬,âp%é=ÎJÁ7mÀNdXÚ0“a´MÐÄ ÑšÑšY‚KX¬i–kô2 ,çà\y^„+d~|" Xà+j3Fø‡7ÕžÎßHß¼'¾y#|høˆ¹žºÓG×n"í~m¦(Ù8RN¶¦p¤<Úœ„=5 H¤}´É¦ ;wlذcç†w¾ïí½ö}Oï÷Â%œ‹ƒèçÁ;èç8çÒåt5¾oÄðjºšûpæO›¸÷AqÎÜnFàÆ­f½V‘”ì5Ú‚Ât)¾ŠPDÉËx@hƒM·TâÖ/[Ùµ…æáç®cÞ¼ñåëRbï™Ö­Û¾ïÓ?þ{ïÊÞ¢‰~Çi¶ð®…™-¦àvâÇ]¢%Ì`6šP€àqŒL*^R6wqF¤ñb¼)G ¨éhlš<Z5AÚëß3^lÚüZ»Ùá`¯†L†36ÓèŽÉ.òý`n±'¯À›³À‚;GCÂBô²ƒˆDrˆ"É”EäGDÀ6æ ¢dñ×ÉDO,(Ä›è“EËp_}˜1)T Œy–4‹ZǘhUˆèÛgz«él¶ñ§)Œ§Î^¹ÝÂù5…§ß?8mEÙ˧ñžkX~´÷­·mm¿OxÙ·v­ÀÍÎëÝ$ÿëÛf÷^þõú5›Ô¼a ð<ý—s¼—Qð68ÂÂô:A£w„‡‡eê aá"ö{Ö÷ñ€v ~=.¶;Ú,;††é áÁœæ=ÜW“™4”í‘{º/²$|ÛÚ—büdqŸ¹>™^ƒ4`jD#`–™õUñ⮓ˆÙžwä¸äÊÜç·î«~pñÛÇè=•ç–4¼Y±cÓ¶ª·^Â^fvJ{ß;nÝ]eQÃß~þü߆ {/7kÓŠº¥öÀÄÎ=¯ýw ОrÜ rÔ §·¬8¾1ÑÇHìÉ /Æõ… `x¢Ø@‡¦qy®Ÿ—”Z>ÚüÏk2±N›‰X‘ˆuí;Ìxc˜)Ì2\€Ög©Ñ3|Àú}ÙóåE*»d%5FkÞ~Úh²7Ïœuw„ÉøzZNæþÅ•û'fÆ“‡zŒÕóÇŽ76pn¹ÖSñÙËécÇŒ;ᤂ „Xñ!^ËÈsÆbVË@²kAÍÂyö‰$ü v›B¢”Ķ™6¥ 8@å´_{ÒìÙ‘–+ã¡ßy–N½J§žÝ/Å#åyRmÁˆ>qfAÔéu¢^Gô=¸SƒìB›?‡(iµÁA#2b2fê!Tj‰ ÑAkdDåÁ·AƒÕ‡¥=ãúâÂ`„àÌÆE -ó¿:¦HóÃI¸®gÕá8=+LÖÏæH›!Z¸8ÄÛ¤¡Ú8ÃmLÆTqŒ4V;F7Â0ÒXŒŠñ¡„ÌgJwÈwh µ³t%†yÆEÚ c3Y*6ë–¢@9-)Á˜ý’(Ž:Ùºÿ§ZO^8zúõ£à»³HdÏGbçõ8²¬‡Ù•øÒÉs„WœSuà‡8a`'O¾;lßaAb'"˜ƒ ™È$DC:Ù܃ý…8VNDcõ,›¸ØsÑrK6a¾•C·Šðà(ÒÑ^’hbðP+EJ w ÍÒ2ƒ=ã6iMZ_!H{µ8­Ã YÈlm‰Á-4f\!Ÿ`)Ë*f¾Yxþû4_xŸÞO›>ÀW ¼¾)¤ôfö\Öö®$6¦ž½ Ív&ÜJ«i­ÚLn!µ!’ˆ5H'…¡q·?u÷û‹ÊÉÑbþÐñ®ÂKÞ§,Å©¶÷œê](ü†ÛÅ.ÀcóÙέRã­ÌÔ²_»9 ‘Ìâ<$Ú–¾-É BßA­´Œm/籚KIqÄArªç HÞ |ß.ßy£vÿNq{t†~G–ɾà[œ&ñü‚p=[2ždzxA¦‡"ü¢,)~ø ~âÛoi‰ìÛúcOë¿>ïÁ<-Ðàç=LØA¬=_³>òv¶öX[ð¬Má$¶6/ 앇.¾TÖ†´RöT"Ð’o¿•}øk«,*kO&Oˆ›¸/ pê‰«å’Æ|î ^zä¡*ƒð2~í ÝFï?ˆ_Ö¿ƒ7Ó&a÷ 4TŒ^ñ8âyŠ:õ€®xêïâ;J^„ÁÎѳ»Â?Æ;鹜nÄw«5è(qÛ¢çmY‚ìÆ“ дX#6Û†¶ é´îðÂb ·^6fÙEÙoÂmæ+,t%+ÏG!‘è¹¢Ö_-ijù%4)<Éž‘¹íÁ{„=ú=†½þ{l{öî òž‡ûj1£RÙöËSŽ‹Sy@SkOàó…ÎñþvyÕCOã_ûìêß¿qãŸßãõÛ绣üHÉæ“ã£íBÊ]uîºwÇæõ®Ùçºóå½Gއ®o9¢#&¦°0y»’+½ ´‚®­!(É`Ô‘“®Åo‡©3øá@dµN 0ÊrPN(Жœ¬ú@¸»°6‹ßЯèÉYE[Ø+L|Àû@”è 2nö:fF›ù·s‹®“ ¬F$çÎzêfV¼»úS'EÇ”G iý;°xûÎüÜíóþpøÈS ÊH‹‹Ã£±/|FßÿrƘ¿½u擱_VV@ɬðEB¾A-Þ¾-ÚÞøaba5Éb5Lf|a"̶å²S2Eÿ/u9 ;\§/}ùº{'5m\·nóæuë6’³ÂÄ»·ÍÂc±¶àQ³¨áÝ>:wþÃ<ø”_üŸlg4ìõ±~³n‹ìË-^øåÀŸN¯¡D1ëüe”b5«¸u)¯š0V]dÊh¾r™oûÁvTþøy8Ô(j&–ô|zôé’cÕ•'î 7èØþí»ßwˆÛ6®{Ê,ÌŸ#¿ðÚè´€yiر“þõäÞ'ìbò|óA#€kflÔ’q zØ[>®|4H'É^&ƒ/«%CdVß¿Jf…îd+㜬Šûž¬³J¤s¶l^CWuÐó8îÉgeß·/*kíI$g[ó;žVôx,ZU›ìŒ 4†Çèˆu³¿®%Ì¿ÅDÀbÃL'†¿-&ÉÆI²Õ1 ¶K•žùâÅ.ÅXÍçY]$íVýöñúsÈñÂáÚRSÈœ k6lmݸjCÇåäí+Z¸gâƒãªîúòË®ª¶Ä!íÌ{ï9óþôãÚ|(!~ïíÊùsñ¬ÁZa|;ëeÁz:ä…œÚCÈØ¥—…C"É3`YÊCSõoØEåýˆ¡êƒ‰¾‚ Nñ‹‚è{¸º§WÓOpxG‡¸ '±µ•d Ùct˜Î$fXÇ ve£¡Âú->DÌ]Þ“ãÚVƒVÐ &QöFÊë]]ªÚòÅ»’xyÅWVžËò—õJè |õÙßÑ/ç€Yù’ÏZo´œxg×Jùw—~v}¹;飵)9“ r& r›FKÉ&C)ˆ6Èp•ÒËqô°Z{ÑaYÎBÙFàxw²']ºxKº¿b_²Ä"¼†å‘…² Õú R€6U!ÔæåB“°T«Õ‚ å M€v(‰‘†jÆ’±¥Ó4£´SH®f¶<[³„TŠ•r¥¦™Ü-5ËÍš[*2ÝøÓ¿ÑI˜~Bnê”}{Và³tNo޹†¦í{€v½<†?"úCÆ“äI;’ y:öŽPÏJ–Â7Àìݳ±Ì£yKXuÇì÷.ýîyú>¾€Û~uÏ®sÇÉ÷±{v ¶‰~ëŒ °št¢…Ë?c‹t4kŤ&ç[¦™òC¦eG±àk„àkáÁ7èæ±Ñ³{Æõ(Éc긋Wøn¶ö:'%‰IR’œ¤IÒ&é’ôI†tÿt[z@z`zPzpzHzhzØj²ZTfhWëVëWZý[m­­­A­Á­!­¡­aQxLþx€ô[Š¿)<Y9eCí©9ÓÇ>‘6%7íñÇ#ÊÒóÜäòäì³ôBï2aÍ× +>ë]%¬ù¶ŽÅ Æ¥çôÙ+ðâV{=þÓözñ'íÕïߨ«¸à n®¬&q`2÷s¼ž#·XQ‹‘å":«)‹Xý&p§ß_Ïð¤wà+)BEË}÷µl¹ï¾-—¾¿öå¥k×È…Þ=ÿá‡çßý`}›þtê< ³Ýs[·“΋a]Sœ!}ñ°Ó{>AއB,œÄ£â€Ll·/$:úèTs„A¹Ã²_d!ñ_¼^¾»AÉ6lé=%ë[‹fÑWè—&œš…¯ª©ƒâó7ÑB1\\ÆsÀ©/wé4í>x<”g.“ ‡™Ð¥â40*ãÁÝ…ó6¬[·iÓºu„ a;ܧ.}ñ:¤//¾(Ä1 *÷Þ[4‚HíÇÌ*jýñÏ?ƒ>¬>YPHGc ÈBÚ½;uÇ5zYFZðm]¼* Hœ{ƒ©{’ÓaFfl¶Ø‘Û-I( §˜“,NäÄÍNËt4O7O·Xça%¥é×›¸vìòܧÍZ:’4'Üö—7zß|¸lUäÅÿ}‘ŸÔätòºŒM-ËØÂÂÃ2CÃxeÆmÆÇDßÍ~ÇZ,b‹£Ó²ch¨Rš)–½s5²odöP%\*͘éU–}©¯ì(ÏxŠM·bä…˜DÁóîy³`OÑÊs_˜²iK÷ÛE‡/z©xùú«ÚìÝ÷ðúœ}bÚs ·Må´kå¾#QQ©©e³W¼Ã·¯zô™NëZà½Vú Øâpg€·¤…= ²àãÚCz­A'€rš­Þƒ3î+ãºøëŒêÛ|ƒüŸE(Ç{éüùMg>9³Ÿ¥ÒoèñÖÞ=¿Z¸}ßiaA+ž æ«Áâü[ì‡72ÛŸN€Û¿ò,B­ÜxJ7ü‰'UŒ>ѱ¤î×÷¾øâð'ïzê üsÌü…æ{Ÿ(u}¢ÈÓ4V‹ `?åvÆB M°MÙ C<“‘ŒaÇ,³½ðq‰=yÇ’˜‹²5üY;_ÿg¶¿cøÆÞ›Ñ´D+Š’àÏvG¹Žâlœs”Ö q½˜÷þÏ‹<ÎÑ0È}4å¸R³7kd \ô~ú1âýq¦^ 4ê„(¾wçÓZÜqžvÐÏãZûŽÅ1â‚Þ/z;ðË4]˜,Ð%øA…Ö ˆ%k€V+ÚãÌö²y{1Õ1:#ËÀ,6+d€6“±“Åìåíe²y{{eš}¼·®EsÂâ}ÜÇb6y±Š¯UkÍõÎöaoå>naiƒÊÞƒiå¥cž¦¶ò'ü¢y©YÐZ´Ö@c W´w´i´%×’kí¥gudY#h¼±’pŽb”B®Ÿ0©,2áÞ¹Tß>w-8ó𤸢é(ýaL~þÎù]b~ϤJ¡õ4{‡E\ùu‰3„0{ÐÚ–gBÇ!Ó$â\$gë™oMþ¹šÑhV3rú$£µÙdŠv)ѺÉbmY®Õ(#}J†õ®ÖöÖö>(.|¢ç£¶ýÄÁñø˜$W ‚Ê©&?ƒìЙýB ’=‚ Ã!:„_ѽêwÈçy‡Q§—†ø¢P½ä#ø"{àx½Irô;N¥ž¦þ ƒ¹GÙ÷Bð¼œÏn$IÌŽÇž—(¡5r¬º»ã/*„²èK®8|rIË„ [?ù£3§eÆ5µsf´tÞ÷ÀÇß´7¶Ö·}ûñöÖY[xdk`ðÖ]?´ÎäïÉ[i¨Ð)‡ªïÉ??à=ùž7Ô÷䟒C@Z„n¡}±sT¸#ØßhÒüM¢d'(ðP0:õJð«¦C–ç!A~&ö¶S_”UDAá~ãÍÈ rê“Y-Ùúóô+ÛF…I6•èQ ¸ þ¡ž ›s!œµeæœÚš;fnÉšðãK¶8[–<ñã„Î’-?ìÚ¸õ‘¶”´nÿøÛ¶úÖÆöo>~@¡§w‹ÍĈ‚!¯·bƒhBÞâž@°&CòŽ 1ó‡ÓçzÆcï‰ò¿¤a;üÈöT`@ >€£Ø<µµ`Î]þ†i‹R ¶äæß_”êšbôkœ—³‰Ÿ;*E/FŒMzÜHÿpI?j<óû°þY¡™¿k.B½"F‰¯(ï²³(Ê rBóWÈÓféÿ¹†~p§iÜU®ˆäÏéï=ã9߸·KÚp©Ež˜§©¦¡,¾Ü¸÷¦¯ÔÙ÷לžŸ2ñ,ªP"çDñ,.„¶G'€ Jƒ~3ôï‡c.\ÚÛápÁq‰ýÕëà¸ÇCplRûZÕþÍp¬…c•2žÍe0úŽ+pÃáPáoVaœ„ß]Ÿ‚£Zm¿ÇLul“:¶I]“õ%±]ÁŸÓgUáï‚õÏ(0ñ8OVîc›ŠëËpœ€c…zœp>Ça8@zhŠË ŸNåŒÃù¼J/»çR×Ïcü†ã4O­Ê™ÓÏ~¢ÕOªAo€G|K¸GhŽ —É8RAÖ“]ä yC¼O|Iò•¥ƒ©Ì•hò5uššcš¿keír¨«ÒÓËz§¾FߦÿÂàkp–þj¸nœc|Âø…W¤×R¯¼çxÿÊû¸wi£YoÎ7o4ï7¿bþ¢·Ø-™–ˆYÖëß|B|VûtøtûõÝçû¶_‰ß}~oøûû/ðÂf+±Ýg{7àWßV>d º-èþ ·ƒ¾àZViJZ–»L+¥YØ‚$Äþ¶Ú{÷éâè˜ÚÆÁgªm<ú<µ ‚ÿKm‹Ð~AmKý]mËÈ[ðRÛZdœjÛ€B…­jÛK·ÝïœÚöF#Âßf-²?Mëä«°6fûµ- -.RÛúªmÚªm à×Ô¶ŒBð7j[‹"…µm@c„Bµíå-<¥¶½QExšˆjQjFõ¨-klDv4•¡X8'#ØÉ h-„v” cQõÈJQ5ЇÞ\Ж2”­ T;*ìƒÕÀ¯ÜpvÜ¥ðí‚‘z”­Åa&j‚e0¶ ,â#íÐfðí¥¾ë`ÌB€[ ãì0¿Ö-å÷ôM¬­k®¯\TÑhZkONJJ±/l¶gV664Ö»K«ãí¹5e öŒª*{!Õ`/t7¸ë—º] ú,÷âÒ™Mö²ŠÒšEî{i½Û^Yc¯kZXUYfwÕV—VÖÀƒ1-âx2§5ì/U0E¥5 öiµ5Г ݵ |(³¶vÉÿÂÿ`ÊLÎáàK-çZ2ð™ýU;šé®o¨¬­±''¤Œ Ù÷¨ èO¡Q·)2mTåïA¤¼¶xÛG\î µ1(‘ý•© c)ÀH€¹µp®Iº9¼z.ó€ë†9¨¢±±nLb¢ €.mJh¨mª/s—×Ö/r'Ô¸ávÎ <:âÑÕÕMvé›ë¯4¨-ƒ±LSÿÿÑ?¦ÉúŸ\Y‘F)´âü¯¶¦GÃþ¶úÿ ûýin÷Ó\©rÑÎï—r¨æ\]}µ ù‡ £l:‡WÍ¡õëµ»‚ßs«t-â«Ôp­tq8åü®»o5EжÅs¼j9†5|~j;Ê µµQ•p%× …–2•Ó˜‹ÁvQ £Ê¸†Ô©Ð=ØhwE“ÜÜô Ž %‘\rl®‹Ÿ8^e0§T¥OÑÁ2ÐÊj¥‘ßñð§ZUªíñæNþ` Šž³ûyÂzêà»Viâxöcãâ4r][wù]Ï?¿B¼jKe€Y‡¢ðd× îUÎTó¾yà×ÒJÛ&ÎÃøÒaíj.O¬ûí·fÇÿ ñ}t&r¿dç{P`Wª\,ý_¦ÚÃ9Ûº>n¼Eëú)ZÆùQý­à±†rîSkT ÝVtño¶F´”k¢»ž5nåOÿ¥i s Ò°R.£ŸÂà—1¼Þ­|ù)ãU¹Wñy•¿àÕëUäæøU‚ëéièÓLÝÜEܪ¿s’À2N•‹Ïü‰¸ÙG÷­3ØxOÔ mŠíäÝgr»¯€k“jI,…»•?Á17º›ó¹Fµè:ø(Q¬”{VwߌòWpþe‹©àžÞÎÏ *Žn®Q?¯/ u?åÃÙÝ&>j0‡Š«öœ(Ãÿ©Í6pïé‰ÙýVç±(–ATõå õêŒÁë¸F/ïEªÄ”¸XÃy{kþñÂcý·¯GÑÇ\NëD•· LEïÈÀ݉œF&ÙÛaÕlU§28ïS¡XÿŸ Eê÷Ä<ë—~¾*݉}².àZö¯\™Åm1›Êà².êãB·ßi*æ3h˜GŽ3Tý,èÃl0=vä÷Ÿø–gíÁÌâú”§bXÔÇWñ]Ù×Êø~§±ÏoŽÜ³Çþ¬t`þ?À×Ì/<‰­¾e\¯âŸ•˜Õ¿ç˜ÃýTäòì’•œ¾?ûõdŠïVöF³_ÏÓ•\°¡/+QâGm_f²ŒßíéÊn°š¸ßkàë*”5©3n…¥ä—¥<[`«5ü7)BݺC¬ãñ^Yeo7ª™ £¯IËú—ß²+®¿eWõïdà¡åßñ¿žË»NÝSUr³|2A…[<û³~ž0(Õ¯ê[¤Þ¯} ÚtkÊx°hæ.UâJ%­©G(‡ãX=“ÕDûj¡ö¡ n·}¡»ªvYl‚ý?¨~&èõý“gºëKí 侚«~Ø/þèõÿóê¬ý–•+E{c}©Ë]]Z¿Ä^[~+½~º»¾º²×:at…»Þ k-ª/­it»âíåõ@=£°8w⌼ŒBûô…Ó Š²F€ÍÏÍÏ)„U²§ehbÁôÙ…¹“&Çäb茷fdeOË(œÏ0,’ í|H` 0ìÙ3Ùä¢ÉyyöÌÜâ¢âÂìŒil,ãΤü‚iŒG3ò³2Šs òí™Ù@JFf^¶‚21/#wZ¼=+cZƤì¢þEØ0•œ~v° “²ó³ 3òâíEÓ³'æ²ð1·0{b1 ¼Näqt'äeß>:`œg Èäl¾¿9fœü| —Á).(,îCeVnQv¼=£0·ˆ¡SXè2y Fã à'^¾Š/“ëûWí€Ql¶J`VvF,bhüËXЮì»ËÜuL·UãVÜ#w¥ŠÿŒçZ«8PáI5`¸Jo‚>ƒeñÈ£x¸~ãb!9^u¿Ì}€vC4Rܯk©¼`s%`µÌ™,«là–a°ºV{ ¥U°Ìêþ²´ ¦5ô¡9Ø <±®¾¦,«¯lgb/m‚ÞúÊåj(®WCÕ­°UnÅ¿ÞÝP‘ªr©»ª9ÆÖ³xÆ1©¬)¯­¯VIçì+kãñ¡öE¸ ¯­_”`×ÿožŠ&ò,x ‰Fâm‘÷Þ#ðìœM ¥¤w%é¡ä%דÉGÈ+É÷×Z¤ï)ùþ˜xíêléZ ¹¶Z¼z%Zº:›\uŠW¢É?¿K”þy|—Hþ›’o)ù&™\ö%_·‘n@±›’g7ů&‘//¹¤/ÛÈ%ù‚’|,ýƒ’σÉg”\\B>¥äïGÈ' ”>¹NþH.´‘¿Rò1%}è'}Dɇ~äƒ6òþ_ü¤÷)ù˃ô?òÞJòîr.Î!ç(yçm½ô%oëÉYJÞ¢ä̽éLù³?y“’7ÚÈéÍé4%¯Srj%y’W)y…’“;½¤.JNPrœ’—)9ðŽù’£FÒù§#R'%zižô§#äO«Å—Ž8¤—æ‘—œâ9LÉ‹m¤£5Cz’Cp:t<°ž£äY9è"ô&¬äJž¦Î^òJž¢ä÷V²Ÿ’'Ÿð–žL&Ox“Ç÷Y¤Ç‡’}ò»Ç†I¿[IF~KÉ^J¥dÏî@i‹ìþYÚH~c&èÉ.J†E¦d§ÙñP‚´ƒ’‡H;¬ßÞFÚ<"µQò èÖƒGȃ«ÅîsHÌ#8Åí”ÜOÉ6¸Þv„Üç ­ÀŒÖ ²¨ÝêK¶H t´¸Èf`Úf¹×B6Q²‘’ ”¬_g‘ÖS²ÎBþ‹’µ”üÚ’)ýºˆ¬¡dõÝdÕ=+¥U”ܳ’¬ #¿¢d…7YNÉ2J–RÒÔh”šL¤©#çb£‘4¬¤Á)ÖSr%u”ÔÖIµm¤¦z¨TSDª‡’*J–$“Å”T&“ŠëdÑRN‰›%e ä2J"³´0Œ”R²€’;)™?Ç Í÷&ó\dîk丸×Ì1Ðè_2‹’™”Ì”f$“bJŠ()¤äö•d:%¾$Ÿ’ix˜4’¼#dêP2%7@š2ŠäN´J¹drv€4™’Ip5ÉErà*çÉ YБ5ŠLÌ´H­db‡àtêÄÌ “”i!™‚« §·”a"ø\9Ó’Ó›8;ðj¸J7ê¤t#IïÀN§Kœ@Éx@aüu2Ž’±CÉJÒ€Ái.2zx4z*EÉÈa¾ÒHJR§’IAÒˆ©$N)”$ÃÀdJ†ÃíáA$)ˆ$B+1€$èü¥„#dX¼4Ì— ëزñf‹ïCâºmbÜm)Ž’Û`äm+Œ‘b)JI %Ñ&âðÏ”Ùdˆ‰DQi2I‘”D؇I+‰} ŸJÂ`å0JB) Þ†P R $A”R@‰ Ørˆ¿ß0É?“øùš%¿aÄ×L|`œ/±Â|+% Ü’Ḭ‚ÙBÌ ïLÞFÉd"&…wÞ^zÉÛH¼Þyï¼ôÄ x÷œhÔ#Ó­Q¢=P¢§DçO´f¢¡DÐ2%’/!@¹NèÆ àa™ îÀ®u[pÜÿ;?èÿ6ÿËŸPôÿS endstream endobj 138 0 obj <>stream xœíÏ R@Ñ?ƒ’-"Ù"”%²‹²K–ìdkAî‡hF3æ½ü_›´­ííh Áv6Ô®v·§½ík¸ýh¤ƒj´Ãu¤£ëx'ïd§šètg:ÛdSë|ºØt—ºÜLWºÚµ®w£›Ýêv³ÝénsÍw¯û=èazÜ“ž¶Ð³{Þ‹^öª¥^÷¦·½ë}úا>·Ü—¾ö­ïýh¥ÕÖZïg¿úÝÆfçàŸú³ÕÀÿï/òÓñ endstream endobj 139 0 obj <>stream xœí} |EöpUW÷$t2äàG'!$$ˆä\ääÊ$3I2‡3¹Å[QEŠˆˆ€ Ȳ‚DWX–Ũˆ¨¬ù+bÈT¾WÕ=Éë½û}¿/î®®zõî÷êueF¢ˆ Ò¼Âq%ËûBÏ8KÊ-{SqÐl„pœºò.åæ×ù"$dÃYTa¯´L¦ŸGH\ ð/Wœvä’`ùWVϪØi9)Ãóx„Â?ª2ŒÂ°±ÓŠãCª #à¢îKx®‚çžU×m›úM„çÞƒÕ¶rCAÔ+BQ`|ŸÅp›]·Vô‡çÏáY±,¦G+zÀTx±Ïnsºš¢[2ìcãv‡É>ǰê+x>…Ï‹‹=„:$?ñÒ“@¡»z'¢ ¡Häç«#:Qįµéè‡&¹gi_)þùéF¤ ¥©IBCp­QŠp]ð¢Ý»jí®pÅü."éàŽ‘€æ]ÆMMŒ7voúB2p(ƒˆ$€óœíŒü? Ë´GAH: `‚BQêˆ:¡Î¨ ÜÝPwÔøŠ@‘( ”z¡Þ¨ê‹n@ýP êbÑ4 Bq( F hŠnDÃP"ŽnB#ÐÍh$JBÉ(¥¢4”Ž2P&…²Ðh4e£”‹òP>‹ P!*BŨCãÑÐñD4 MFSÐTTŠ ¨Œ‰€+p<®@uèkh@«Pé2 ¨zÙýe\žU‡Êr¡x.‚»E\Ÿ/Ž\·B+Z\ëÐvtf/Ä‹¥QÒ- šëŠáº(íÅç¥aÂ04^´ˆ#ÄÍâBq3@ÔˆâB´ ®Ã„ÃâÓâlñ8gœálv2>P-£P­P‹Ópgœ&@{8ÿ#q-.½+½‹êQ=ÎÈ—ÑLAÆïà x7ì‹è"îO B>‡¿ŽŸ@‡ÉxIFµèaÜžêÐàû$º€œ`ö ô°T/ô“êÑ^t}ýMÃ\»‘þR=çÑZ4 4s R½.Ä'B¬.¡3x‘°F¸„£°GÜ´9…KÅwÄû`´ƒOz¸NbR=®.Nè*ð,€cÇlÍÂ^aȸ ¹€º0I˜-Ô¢ãxÞ#tÞ –ú”‰á¨VW+ŽGç˜nÐaáè#Ÿëãô€nº(êÐy’KŵLc(ZÚƒŽð­ë€–ãÑ>‹@D†¢Ùà­íÇHÚ£å«ë†–‹½É à]æzô†g¡Â0R†žæÇ2¼ -CÛ Òk«N‰€QŒ´IˆÎ2nJ;^Ù7!¢ÌJ² åo ˜¥lkjÊ/†K6I]7‘hßMbtÔ‰k žè3&¼² ÷IOÓЦ—¦Agáxh²'è†þô4>ƨn’¢á7«t“R^¥ÜtTâýA¦ÄþÜ3}‘N 5‘.'¥ÕІŒ¬ÐGGè#&‘' ï¹Óå>—.8t}¹×ƒ7™à!Ä>èSO¢Lˆ»§ÅžŠÅi´Nªwï¥Sð*÷{ôi56’õDs8~¬âÑ×o—rƒÃ±“ÁÍ…|÷ ´ 2dJLâƒãI|h‰€3*8Š üÄQàGƒKÎŽ{gÜOôÛ1¢‡KÞÇ}%—qï‘,ÁÎ<'í¢óñB:¿žžû.ÄóÙù!îPº×Ósj.{„ïÖ…@Vº²̱¸·¾;î¨ï‹‰ãCá)”õvìŽCCt>D÷°`ýÍÐKxo)¾õŸÆÊ÷-Ý?üë'ðÒ[¶Ü¿]On;öéÒ¤œÌrsGÑ#¸¿Ûë†ñPÝ [Öýe»¯¾ð §7 è ]Ÿ[·½HR°$¦' O¥¯ÒÓ8%%-•ñ(¡áM_èÜ{~SÃ!oÆŸ‘:`!>npÐ;. ØŠŠììB ÆGx=wô‚“MÊÈHJNÏHZ»{÷Úß|Óm}‡ŒÚw™òÇÝ»_äÙBÕl‡söl§cöÚvîp„;'`_zÇø)‡kÎÒO,íÕó䮂WK‹•‘soâMON¿ÉÜŸ|FoÎØ`}þÏtºË’‘†C-=1-aZâóouëFOŒ>$r=2`f¦sUß¾<Ñ3ßÃwqß㞇ïÒ|Ž­ „­˜'÷w`̇†t¶Òî¿ó®û°ŸÓå¤~Ä ¼ç‡³tøñã4‘ã]s_Vçé0XèÖ!4DðyÔ ?Øï¾;ÝO/œÃ;~¿}ö:òØ1šú£ÊSOÈ"Ï‚Îôð€}¢/©wÚë©þ' øÊø¦/Ä—4?F8¨xƒ>ˆùB Òó+ÉŸj³Oj·–â[èçô½H?Ç –±/V„3¸ÓÉ“ô=yêîDS ^†Ø…—Q Ð>õÝ@[æ|I<é#>ÂqôoøFXGã‹°LÞ…u£.'Ћ\Î%0§xêijY„ó Î| ¼ããDðB°×8ŸN9߬zw#"{±¼¢†b?œ 6<„FˆL¼ç!z~\ù ÃîÉ÷/]¾ìþ¥w,˜ã(Z_\¹ß€uXœC¢{ïyìÓ¯¢£qß!C§•W˜/Mœ\2冾¸‹¢¼±{Ñ‹<& @¦  yg; +ŠéB/¼HïÄsñÂÝ»éëî—Å'Ü“ ôkzáѪ<¼ßó»©ö eŠ@¡!¨•Œó½dŠ{kïü~qúýÑñ¹Íúö¸yK–Ì½Þ ÕÓ“_ùÐo¿¿@Ï ŠÃ22î«™qo¿þêšà+¥sà =[g3¬¦ F E©Ž&<5~&Mœˆó‹õÔ+Ã{ÈMOž£ ôÎÇ='oN,Ò~„ôLÿ~oÔ D¿?zž~†ïÃfìÀ/*Ü6 ;ȧcò…â1›üàþžnÀçݳ¤ú£—Eq;[ìÀãî¯QP¶â2Ú“Õ˜¨öUzBO°Dî(«ª*+­¬¤ÏÏžC/~ïž{û}Ðée`øû?žP8vüø±…„§gX­55V[Íü¾ëçïüÛÛ»æ¯ï{ÃÎG>ýâ‹OÙ‰‹'”–N˜0µt6øY :ëÄt6TµÄP–g!u¡xUO‘½°‡>0»­ðñÑO½Ò~Äcºq—³Ø+t#=6õpB1mzÌüFþÝ–N¼åë;_ä—ÞJ¼o ýÈé¼íö[¸ÿª¿ã,[jý˜þ%„Ï~èáÛg-^LoÉÌûiß¾†üÌEî1ÁûŸ1n̺ýÎÃËèþ¿>F/Ë*§ä¯2T.š;gí| ž;çÞ—ž+;9~Gß粂õ¥û!Î|XFfióƒ£î•ÐÕð¦ò ¾@Ÿwÿ¶oÅAô¼TßÐOˆ Xì­ƒm„¹¾°J² ÕÒ¦>ØÓP³j_Xôf!aoAqqÁïšáç]!À~;ý‰~ïÞ#øâN—'’eù¹9cé[ngY¹Á@g {¾¹ø£÷¥úºC–'Õœ7bëøAgxUKx’ŽZ´0õ3Ý‹GJÙé&z¾çÛ•vTnÿýí•; CoÄÏa¼˜=wãPúnV½tê+z)-‹éd‘j¹,lÝÓk&ÇŠØQ­t ‡ ÎyÿóÏêi_lÅq¸ßô©“&M­¦ÿ„c©¸¹ñÖÓŸ}z G\&zéÅuôG“Ë òÍôdÜ~-QÉŽuäE÷¡¯ûC¡´1RñqzÎõêúÍæŒ…9í¼ç4Ï /xàÝ÷4ëF2ðAÑà}më†-0’áúõ£\AãIw_´Üú©ýÐç½3drÏ#BW[Fב¯`:ÊÌ Mßž¥´}Žd¯œ/iJ²à‰¸ Š53ÞÜïÃÀOf1îøATë`–Á4°ú®é ZÁÇT|,D¸îÌ·ôLæj@ÖÁÚwGÝ}G³>¥Í5Ž€å«,ü/^æ¾Mø;ÍuŸæl|&D¸G4ž²Ý[¼ì yx‡)ªî/ç2­k¸u ÆŸÁ´SË(Žýu0ù`¼n£ï~Bߥ[¥úƤGC?1­ñ‰¾\×ÂÛÝ0íb“á¯ñ(È¿ø<$"˜‡µýf»½Í5—f-V¯OÁWÒ~ÅÆ+žÝ¸ñYœ†mt ­£;é#Ø.¥g¾¡Xüæ qGj¤ÑåÔˆŸÆÓðtü´êÛ8G›þ‡¾€'¾a²ZAQîÓß¸Ý â.:Õb4Vk¼ÒzÎk{xËART3ƒ!ì…‚ó¦ñ>8–…‡±§âL\½ç5Üž¾F›Vl|iŽŸÀÕŒ=ZE—4ÒG'ÑM:9ߤÊ<1YÉc²kKvé,DhéÖôŽÁð.%,¯ž:µz)}AÐcùÇwdÞ:¬Ž>ü|\EyKeÅxº^t¿+ÕÿíƒGwõï0!ön¯;!§¬yz³¨÷¼üôð”ƒ=[j©˜•ËÃÄ|ë‘)sfæO[v¢2Øw hÓÂ…çí·Î*˜}÷þX¼`;-­¡o ½1;ÿ¦ÔNqïÕýøÝœžS”›‘Ý=bà?7v>hƒˆŸóÜÛKíÄh*}¦°ø¾œ+næ>þ1àôN]ôšâÁ‡-³çX ^NÐcpü ükáëÏ>û:™ß¸î¥ÇCðÕ7=¹^§ù6‹œIìåx2 ¤å›Å\–;!Ÿmž8ÇìGøáˆ¡8ûÔW8÷ËSx4 ·ÿ…*íò^q;Á©m——ðùQ@ˬÆu;¡ê/YŽÿI§£ûécÐJíÇt¡Á­Ã” BƒpŒöÀ'Ž&xý—²¸ýÑ‚\ßφ8ŒÃs(â~Fi\é~@¨š¬¦þÒ{¡,vpD•hv¾¼l»Ó¤ú¯‡Òã_“ýžw˃º­JıBàv»ëBN4¬v”>LùBaïBNv#µô7 H µôØ®]œV‘xN(ÐUð±à(Œ !‹oÑUÐ{ñm<^òÀ—Lj³!Σ½*á8á©\"â½ßh„©¦Š‚¬‰sXe”¼ÊõÌÞï±´kÖüªÍ9U‡«°þ¾”=:-g‰¥ï=î…k*&¿»êím]‹óbc±¾k·oÍZ Yòû±ö*k 9Ð @·w(+ËþRe±TUÚl¶ÔUæíçÏo7¯J¥»pÊWkW®\»îÙg× õe“éVê†cëä²U€d™ÈßA¦ÎÞñÉ×2¯ €ìO¾+óžåËïɾwؘ§saåxRµ>¯VA?‰¸ñ™g6Æ ¢ÇzôÀC¡Ì ÅC{¨ï`¬V2A<¿°ðãjôAÈ·0Yìý9uå´íß~»ÝüÜR&I…ÅBê„ñ?YU> gaGÖäÆýLvjö¸Od»—áÜšjqèÅ8’T[ˆ÷¹Ûû-žWQowœt@>ŒoÀÒ9Üþuú¸É5í…øŠyóRÓ虃 Fîˆ;àDú沊¹5Vä‰5r3*€¯V³ x4«UIÜæ´!8˜ž¥;W®Ü¶GòÍдÜ&Ô¸’”b”»u£ª š!.g&ú¨Õ{aéÀëÜõÅ“ ‰×+Élûî»mÓV¦‚†ÐO¦¼:¡xUÁŠGë¶êJ“ݾ«lNm¸Œ“'•¯iÔÓ ô %w’P»šèV/¯}võcËW3j!v—€ ¼úŠHÐC]­Z›KÂk|ñZçœÜ×äd~“µº|Ã_…õî~r™µKTïWžtÕ…¸×–M>§®U€œ­Þ‡žÂ)l6Ý%–^^© ¡Ÿpئ7i‡õƒ•gYöþ¯Íyóõgoœ˜®ÍÛrâì7“îÑ!>Yåý,Ìm]À$ìÄ3hˆLgÑ™t—.¤ñUü¸÷*|„öWçiüqî8gºŸÎ0œPòê¾ßa‘¬¾áp5x‚7B¯º¦Þóî&&XkÚð­ÃxdæD£@ëGO2ÁcÚðÚÉUÏ‘5U–s_¸K„Q]»Ìœ¾öY÷ǨíÓ×=ã>*–®žZj÷Øh¶iƒÐcƒ§–xlø˜ Tÿ_ ø´ºÆËm¼êáöévûôi6Û4,ážôxõn¤Gqo2û¥çž{‰Ñ}ô ûð8Ž™mi‰X¸yìF73¨%œ`ïÍŠãŒÓ朳 2P%Äï*÷¼Ú+ã¡, ñÐåñPÂãç5oÞƒ½R‹Á™ 0Z´ü ÆB™éIî~Í"Âà§‹ª®É½À?Û_¼RÉɽý û͹›ñ}ós·õêI„…¾ú‚»Q,Ýf5 æO…¼xæ·Q·°må+ëöÆJ6Tî)ž4!uü—^:wÆXo/}·jJiJÙ°_ùä‹ oA®>†Á™ÕœõøÆÝb)ËëÁ w+Õ·ç„æDÜëœ&´Ioc±‘õ|Ù†­x‹ð²}"={ÏÌð¨^/?)ô½¼ró7̲¬ø8àÔi5 ŽèŠS.7àTê¢+ÄÒÆ¢»¼à’ ¶*îÊÚ&[·¬_‡Ñ‹ô¹—ÖÑ•0«‘ˆnQh¼¼’”óÎèÜóÕÚ&œ€Ïó±P5ðÎK9?Öü—ÏO¹X€&ò¥m=œ ÁcFaìFu¾h®$ G|† áºLd£d4Zç2²õ„ñ½B*ܨîuÂsà5ç!8—À9Î8‚Ó¡=Ûáœ*œ@át1žSìæùÄ£YÒRÔNšƒÖI£ÐD©­¿QO隨ӡuÂ+ìlzRzú—£u>7 u¬_×à3´û?Ý)~ ¸>‚6àôù ‘£(iHÓ9éFTÀda<Ã}.ÐßNØg2ž„ÚùÊ“z£Z1ß Ä¡<ó -)¨V˜ÉΦ½â~µí³=ÉúÅ ê<GÃsšJnE`ìñU®[ƒ’ÄÕ(Úaâ@ŽëK šÝ™üR ó¦Qš‡þ‰ÚŠçàZ¼ Š/ ²ÐIè% ŒÂ-_ò‹ó»Åï^¿m~§ü}ýÓü«ü—ú¯ñÿ›ÿ—º€îùS Øp†{Y9ÉEýÐm=X}“˜WJl?×—}uïñÅ'pœÖÆ(ÿ¨µ$ µ6A]„­-Bûy­-!á#­­CˆÞéI‘ÖöCÝÈ*­Ðá™>Z; ¾IÔÚAÈ鈴Z[ošÍ>I#²¿ŠäÔY£ð»Z[@¾B€Ö&h°ÐUk‹Ð¶hm uvim(œÔÚ¾(’ ÔÚ~(‘Thí€èDˆ;µˆª†×jí vÓ0­­G]ošŒR‘ ÙÑ,ä@fT‰ª )P—£¾pψâ¡U JrÂé@&d@½YÈ ð±ÐJFÕp(°Vxp9ù“ î&˜3®F€”Õ!ÍT‹€Ò  5 æXšña€9¿Œb´¦Á¼TåkàØL|†K¤+\íSxͧÀ|P7ð1¨¶SmöYse•KéSÞW‰ƒêE)›¥¤˜]N—Ãd°Ä(YÖòX%¹ºZ)`PN¥Àä49f˜Œ±òUS‡°©E†–i6k¥’b¨ºÆÄ4Ó4CIR^e°VšœŠÁaRÌVÅ^SVm.WŒ6‹ÁlÎZ‹XÈdÂ¥rÅaÔÊÕbPa¡ÁêTRmV£Éê4Aw @V³ñ[µñ— TZ¦¶‰Zùƒ–p+;Á66n¹8°5ûœ*19œf›U‰‹Üš®‡êÕ4û_I“‘l¦Ø¿-*8Õë\ZLx®°YÁˆ.ð Ä=Ó~•ˆÀaÔp̱0×wøš‰ãsp¯Œ¼&˜ƒª\.{â€F@:£&Öi«q”›*lŽJS¬ÕÃ^x¼ØIWÇ+cšxt™@Xš °,–~Ÿa˜2adÀTñ™f³s¹\ši+ mãÜ$s¬3®Ðä•r´d€šVàZÒÈp´%»ê-hykíê\$ƒ+üúCþYùí÷ϪmÛ»Ef3ŒÈ¼åâ=Ì -\×Ó¡Ïøw¼0Éò9> ÇÖwfÎS3irUr*VÍê1šÝUk©ÔTSý=†óeãÖ·òùv-¶U 6ÀêÒ|̬yãP5-k8]œ‹+ý©œÃ1?T±{00h•wÕ—=É€Y+ÒËK"¹å Í<¶P`ÉñïÿU½ŸQlÑ ë±ó¨1…r>ÛÑKàâ¾V£.>ªÒ¯C!F‹ærଆcQu2“û@ÏJ.M3Þç-‘GG+¯T¹­á:Œñ²k[¸=U[Ë^Ä ³c®!GL³œxQ8f5TÜfM«­­}©=šS¹µ7{´‹óÕâu-Íäú°ü, žh¨àYݪIhò¢häWF#†ß™&¦D9ǧÂxìWÁ—$5³y,T®-]æf{8aeaÑY¤qÇ>Ïl㙡ÅÞ¹¨EWg+À»´hp¶‚õÄJ‹Æ¼s€÷<…ËlàœË<7·ö5UêZb¸Ž=m|T4Û[ø½%ü[¸øJÄVVƒ&Ql+M]o.ÓÉ,mmQ©3Wpš'Us?u4÷¨œ2½lîíužÔÀWD3ÏÕüIn–ÈÈ9eö²zi£²ÕºªRòäP÷Õw=4®ÔóßÊäáRÖ$hñ0·ÑÏç 5+õÑo1š½«ù<ó5²¹ÜlϳžWZðzzœÍ鉗+W“–çL\ ¥™\*#ŸÙÆzÙ,÷•3d󬶑^^¦ÆLöëKw›¯5ZxüdŒšÛИ Þƒ]Úàíp¨«—gTSó o»«<{zä6#¥Šgx…ß&îI×òO®k+wùJ –ØÞújK«²—æ¼møkcÕ©òŠ&‰'Ú<‘Ä*‡êæÚáÍhÑÎ=z:\+5‹©ë!ó*¹9«þ‘™êÚR•i1âÒÖÊfMBéœNÊ…'F'žŠÐ8¨# øXô)PÇÀH <±oͤq»$ó6É£q´Æ«¹GõÇ,.kª¦k§ê÷ªOd{i7•ËÈ,;¨¦k>•Ìu×Z f§qœÿ)T $k×T/µX?W³®‡Ÿ"N¹¨ ­Œã±˜Î¡’¹­ ›c$ƒÇoŽÆyq³‡µä€bÍ?óš9k­_Oyà~NîPqyh·¶`÷§lÃÂfm¨òuðª¹+ÖµrþžãjÎÛ­Wn缾¥õ®;c¼r­w% fáLk¹®¥W}[R׬–wïÚ­­7lÏÛ±ZË{ªÞ–êCÍÝ5Í[žª×Èësµt6W%6^Úš+“™|´eM·k{'¶VïyŒ²¯ý1Í´ò¯ØññÞ¥ù=w|äß´ãsõ;Û¯Ûñ‘½v|®·ïð{ìи®ÂŸ„ZvdN‡=Å"”Á? Å>LÇ>Ž×ü >¥ÓdRÊLÕ¶™}c•ŸñÑ»X%³z–½Ê©˜-v›Ãe2*›EIv˜fhóÐàõ«Q?êçMF–[¨—˜Ee­ùó‚rÿëþÈW²ðg(Q¹‚²Ù)—Ã`4Y ŽéŠ­âJ,²œorXÌNþñ:³S©29L@«Òa°‚è1 ;ˆÓ@cŽJSŒâ²)ë,Ånr8a‚­Ì3ƒ J90-¤«ÊäÑSy¹Íbpàªì eöé;¥O$WId_@fT N§­Ülz²ÑV^c1Y]ã§Â\ FêÃ0ò J¡­Â5ÔÙ—sâ0Ù6cM¹‰£1šA0sYËÄx[Mˆ3—W×'3Í®*[ ˜±˜5BŒ‚CU% ­q<'F±˜˜Ô2wgUŒFs€Í¡8M`€6«šøWfÌZ;S´KVUÇ Í¬Ǻj3CEà M|¢Ñ¦8m1г¦lš©ÜÅz˜|¶jp6&P¹Íj439œ‰²\è e¶&.êEœf'°Ú\`§ÚˬboñuLqVª«å2“¦5`¢ÄÐJN›ü¡XlS›b+®YvS…ŪLµµfA´Àt£¹ÂÌÍPí׃ 5\rUu,@ ૦Úà!£Éi®´r6*ÕX…IÌC å€ÄÉfxøq^I‰¡”W˜¡ºmÚ-Ø€=kõ,Åìåæ2Çabÿø#‡e 'S$³‹'¶:ÎC"F7*“’á7•sÆÅÏqž¢¼‚¢fVÆe¦Ç(ÉY…Ì"yÀ.³g^÷€bÐ'3^®Æ/³ë»Ú;ŠÍÖLKO΄…Œ è[Á‚w¥ßVn²»˜okÁ­¦FžFÕÜýVMà™V\µ7aY‚È⫎šÝZl¶Ǩ©—§ðî§–z3L,•ز%“™f'tX-6uÍSœ†j ³Xq(È•†j˜ælf³U@ÉžÅÐî0Ô™³ ’‰b¨^‡ùvmvhË—@i‘€QiI*ÿ“Ó«”y†©zV,À:ØZÆ91[+l‹&:W_¹+ÑS*¸”JŽÜhsÉ6Ge¬"˼âúÍ¥ÓÏýRÆïSÉj¤üš:Hn©ƒ”_YÉW×AZ’/瘜ž5£µ¥`‘K­¤xj%ù¿£V’U;üaµ’¬ìoª•äß±V’[j%åWÖJr«ºàWÔJòµj%åç×J²W­ä¾­Ê%XÏ!Iü^å’¬•KÊo*—äVìò÷Æß»d’­6å7—LòïZ2ÉZɤüú’I¾²dR~MÉ$·Y2)¿¤d’‹’KrFç1¶“GýªêHn‘ü·TG²§:R~Ku${WGʯªŽä6«#å·TGÌY[Jsá#_³ðQ~Aá#_¿ðQ~Fá#ó§uíðï —>‰ r,ÜbËwð}»épà{gFþW½Xþ÷U;ôµþkáõ¿a8`¦yºy€’Õm±ö*û-c^뻜ÞßÖD×ÿ^ç•ßåÔþ‚¦yìÿ?¸ú'ùNaî…("8éáÚG€n$Ü5ÀS ƒk¤ÖÉáX›`…÷@;àÚÜvEᎺõ ïé̯øµ#¿†ñk(A€5”?±6ÁÁ¼Ý_Ûã@4ÆÛó'Ö&8û£¡/€÷ ÝHÄþØM€>6Bàºúü°ŒzA!pM‚>ÖCp;>Ó—_}?¿²ºÍÇJÉÁXÇå’øUäP„K$ð̯(©i.iº™PJ/ÇH”\Ž! ”üt)Súi.¹”I~l )ù’ï)ùßä%ßQrž’o»“s”œ=#Kg)9#“3Iâ7§eé›8rZ&_7SK¤S”|Õ@¾l 'áá$%ÿCÉ”ü‹’”|NÉg”|Ú@ŽÒI:n$Ÿt"ÇVv—ŽÉÇG£¥ÈÑhòÑáhé£òá!Ò‡aäƒú éƒRDÞ?â'½¯#~äŸñÏrðŽ&ÿxÔ_úG9t0D:Ô‹<ÐA:Bt ïÁð{ÝÈ»!äïûwH§dÿ¾ÉÒþdÿq_RÓ;ÑÒ¾Éd_’øN4ù%oÉ[IoQ²·+y“’=”ì~#QÚÝ@Þx%\z#‘ìÚÙEÚGvÖé¥]HÝŽöRžìØî/íhO¶û“רë”l£dk(y­ù+%[(ù %›;’W;“Mad#àÙØ@6ÀmCyà_ '/Ãíå¹ä%JÖ÷"ë(YKÉ‹”¬¡ä™¬¦äùUÒó”¬ $«’Äç@QÏ5•0eewò,Üžm +@ø]É3”<ýÔéiJžª,=µƒ<µ@¬}8ZªLj“Ä')y¼ã J%ËaâòîIMä1˜ú˜Bõ'Ë kÙ²nK)YzXF "G“‡(YLɃ”<@Éý”ÜGɽ÷DK÷RrO4¹›’»(¹3Ž,ZNî d!% :“ù2™GÉ\JæP2»ÜÞ@fQ2sÆi&%3ÖW¸TÓ@\áÄÙ@sÉ­”Øm1’-†Xˆ¥T7é”L£ÄLIU¹¿TG*)©ˆ#&£,™(1ÊĘ$–—ÉR¹?)“‰¡4T2,'¥X/•†’©2™BÉdJ&Áó$J&Þ.M¤äxº%œL d|GI <'5•PRLIQwRB Æv– ÈXÛ™äçu–òH^®^ÊëLrõ$§;É"e‡’1£õÒ˜2:+P­'YdTÉÌ‘2CIFIo i©RZ{’HR’£¥”’ 8“£IÒÈöR%#o”F¶'7’7H#ÂÈMd¸‘$R2,„ÜHÉÐ`2$¡‹4$š$ ‘º„Ýâ`9@B/ããü¥øŸ$Æù“A×Hƒ(ø®!üIl0é“(õo 1¡ÑRL"ég$7I_Jú„’ÞõRïB¢»“žQ €~=»“(=‰DRd‰hO"’D%„ôI÷î¤[×ÎR·hÒµ}°Ôµ3éº rÆ1<€t阴ß-‘ÀbŒ4ÿ8â¢ù…¿¢@ä$±%¾”øP¢“dIG‰$)I1f ²W€„õ¼ ïZŒûý¿ñƒþÓ ü?ÝÐÿWòüÈ endstream endobj 140 0 obj <>stream xœíÏçV@á{JVD²"”Ù¢lÉÈ&«¼ÿCxˆÎÑß÷÷Ö&mk{;h° µ«Ýíioûné`‡ípcéhÇ:Þ‰Æ;Ù©&:Ý™Î6ÙTç:ß….6Ý¥.7Ó•®v­ëÝèf·ºÝlwºÛ\óÝë~zØ£÷¤§-ô¬Åž÷¢—½j©×½émïz߇>ö©Ï-÷¥¯}ë{?ZiµµÖûÙ¯~·±Ùy€ÿŸ­àßù JÒñ endstream endobj 141 0 obj <>stream xœí} |L×þø9÷Ü;áf!‹¨Ör#b©ˆ±+‘L$d“ÍRK&™ÉB’Ig&!T©µj‰Q¡¶jh¨ªj(ª --ºyZ­j•¢ª¯¯<ÌÉÿ{ν“™^·×÷~ŸÏ?Ó;sî9ßóÝ¿ßó½_3ï!ŒòB3Aé É]»êb=3?•–™o(¦^CG•–YlSPn«> «ážffç?Ú£xB"Ü£-Ùk!rƒ’¢áÞ#;¯$ë™çß÷)µÚšc2ÑÒáéÂ2ê™ݤ+pßîÛåäÛ&v1t+ÜüûòÌ™†UC6\@(p 3ù†É…âWâ#pî•C¾é‹¸§?G¨=¬XXh¶ÚjŸ@£ÊÜÈÖ -¦Â~nÿ€aæAà!aR— Æ¡ÒJ ÐZý$Ÿ£,Á¤r×éH#QÄ‹¨ öcd¯•Û¥w‘⑘¥7¢AH©­ÕùQ?\î–Ï¥#\ûM-RÿˆöÙR·„wÌ?Eô1|ú¡¦0#¢ÇÑ:ÅWi¡´ ø´­é–HkkE›mÉg›­=WûΙÄ3ÃÎÄ|½ük"åb3ÇwçÃ*!h½jŒdäŽ<'X´ PôF>Èh7Cþ¨9ºµ@÷£€§V¨5jTP[0E;„Ú£¨#ê„DQ0ê‚BPWôꆺ£PÔ…¡ž¨êú ¾¨ê ‡Ñ@ÐG8Œ"P$Ò£(4E£4 C±(Å£”ˆ†£$”ŒRP*JC#ÐH4 lóƒÆ¢qhØ÷qÓ‰HŒwŠIânñ¢x õ­â11]´âP²AJ“*àêCÞŸxô´ƒ¬h¹DBÉ>1RôBßc¤*àK@£mDS?°Òtaª3‡¤c¨^fX?†×àãÀÝ< @ÏQˆFkð ëºf‘a:2TÈþ®c°¿YÁ°'°Œ¨Ðæ€{ •Áß[‘.Ò þº†¦å´Q·[ççT˜Æ*ðü£n)Z‡Ž“1äQr ÏÅÍb4*U5@ÒQ)à.g{tY¸dg¯© »0ILǕ蒘î–¸ßeÍBH”…öÁ5I×dê‡çùÀ)[m…޹ »Â~Àà6 ¤FÈLÂÀžfX߆v .¤ •&.¯®—tv®¿™Kñ"á:F"Áÿ²Ä+ kpYT†Ð.7$£`¥év!(Ƹ}Ðð‘ÊáQ]‚o»Ušº)ÛQâvÏewmmâHñiÔv©åvÔh»øíÝ¿í<,q¤²Ý®Ô°êÓ#a.y$ ÙLü>’¯1¢Û¥ ø/&}»’™£<Õô©À¾O55õíÂÜU€ ž Œ¡e䆴Æ }½¼ƒ¼Æ•5 Gí=h™›×ÍŸ,ºNlöO?&ØÆÙB›z‡z“@‚ýwíÚåóŒ/¥Ò û£t6ÞWH¥°–Ã^옽ñЕøïÏÔ ¡3»n1ä¸Ç¤ý×àH€;ð %Íøè˯°~‘m´zv0ëÆ/‹[ЃCqºì’1ô—±O£ßá±ôk¬CæÐd5àµÔPNw¬¤x »Vâør¼–墕ô8©ÑùAféá@‚;„µÆÍ½CpXž½ÂB›ÁM3˜ôn›ùé܈·|ú7÷~ÖÛ æÑxüãÇì3zíàîÑÉÏ ö\òÑ·½5:7ßtÄb3Ó㸋ХËÎAán·µìù}^—¿Û<ðòƒ!"M ܹúÅM ó–{N™–~‚&xŒ™ùÑT{Nghq‡<¹.xk«¡Ý{ÝÝý™À¶íG×ù Pèë²&õ5*>nÔ¨¸Å›_\´dÓæš+q£FÆ'Œ-|³¤f×’–¥/¾XZZ±IxzÙì™Ë—Ïœµ|úW{÷ž:µwß)Á°|æìeËf?Q6ý—êóÎÀAB©ýæ¨#–Ù”>NÏ-5û~>ãÛÌÓúox·]»ª®ÝÌ#C³Yfþ†‡qãÞž¦º[[Cúë|à´AX'4óóiØ^ëáÓKè_RT©ó¹@¾x‘ö;¿wæ|ðGžØÑRØÛMÝëêïÓÌOp ìéÖCX¶dÞܹó–L*.ÖùüHûs†ö½|¿{ñ"~‡íë) %™ +o¸ñÄnAÀ“Ô¡ î%AÌ‘LúŽ£ŸfÑOzàúFÜ5 ‡ˆß¼s ã‡KŽdx'ó.¡óŽ®#Q’>²AT°h ð&‰ø:u_Ae|CíÇ+íÇ….•B•ïŵ>¸ Qð(Ô+´ÄÐÉýËlCéVúÄÖGão„AÂ,¦/_@9Ÿ§³6ò½ïÂÛ,ØKøÞÀw÷倫ͣÚÁB¾¦cð7ü·•4ÔüK>øFIí9HWªß‚Ç ÞM}B»ûx7:ð÷@># ]¸xñÂEðwöÊ•³pI‰ô= ×1@Š{àÐuÔJçÒyÔŠá</º@À^º2ðà-……2-œÇè><¸ wª©®­Ñ»£«OTrþçüiàjœ ƒš€-ø¡[ØÃ8”lj›NÀ”š-Ù8+d„¾¬$u^Á› ŸÜ|8©ù?*++'á§û毈™T68âh·îß¿3æ…ÂVô2Ç¿dGV™Aˆs,w¨¡Ø‡©ƒzä„g.¥WkR_MÝ™±åՊ嫟Ÿ[ºtþ°Êìì×?úi jspÉ韂‚të^V:{yŤBëÔvíw*Ê';Û¢fm¨ÅЃÀ¼±1$ËPo–„™7¯Ó0|ä¡óo¾ùš}½TsŽ« ÝL×áô8G~†½­T{{3¾P3?TuÆñ!áûW:~‹ÝèO7R_7ü¥ôÕUU«cž†ðª¤Ï4iB¯üðz]QŽt{¨jõêªvío3@'Üþíêg,_žÂ²ðកºû éSJK§L--½¹0rç~ϰuéG._?zéAµ‘ I¿=ÖïÝ»~ádw»öô'zuÄXzõòúw üBkkØú&È¥ãrS¬ éô¾7ðö©Ò‰´ê'¤Î¼öœü5çüò|ïš;¹ŠyOöjõu€Z„¡3—-› ™’.šyþðûßÍ´ÍZzõ믯. ŸY\4{vQñLáÝòyóÊWÍWž¦ì˜ñêÇ¿:c‡Òö½Ò/¾ÿþ‹Ò÷°Á6s¦ .5Š~ÀË}LW½¸ö}|YædI‰G 3 vÐF?ÐsõXgøàòõ#—nÐãµú…¸5(o*(± è’ŒOÚÜäòìÏCh-}¤µ°Â¡Cî?'Aî21P=“{ñó»YàÉýûY|‹”Ãð¼Áa³ŒÇaxöØÏò@Ù¿¨Ë!Ð8)J¬`ºo,4ÃaXÒ׌'ëo=.Î$×èÓtiþ¤ÂñÀéRÙ Õàìu@œÉ€o=N6l¾¦Æ® Nß0Ìr ²–\«¢]+h×*œÏðÍ£& Ó!«E|ÁdñÞN*78¬pú®]¯l ><4¤Ø0dýÈÔmc*ÞžÐ9ÐMÒQŠŸ.7ÍL6®Û¨‚¨ˆ}}z¿³6v~ZZ×°Íú÷P㯄®Ö½*mŠV]¼3ãµ×¼°PµDèоãC=px„õj®ƒTÑ®ƒzøôlÚ]„…fM‘›°m†Ù<}fAþ üCÏcW½ýNùØ…aOÌZÞ§Ï8úÏ5æ£i‹ÖådŒûe‘í̸áÒͯ '­ÖÉSµán•ûñsÄz¶FhQúüÆÅ _ØH£ãb~9|¸zXì,»âÿÍ+÷%ÎZ>(‹¾ööZúÄœüÃ͆ìYÓ¦á˜7ªðÐiÓçm[—qa*ý…~¬9½ Ï|Íó d\LX²'P‡ ÅÿÂWéúôÆTû†)oI^öd[ug<>Ábl'ì+€}àÔSøY¥*¨nàdx"\ºhÑRz{Ι5k€?þø[ká¼e×ÏÒÖÂûöÓó,œ#dч͖G +Þzeþ?åȳ‡¿?ɆÚöotÔ ÃOœž½š-¤¦ñù1]¸~ýBÑÇcÆVL?„Òcî>ù3)ãÄøqô=I¿ ‡Æ?×âlœƒ×©A©&Hª¢ àŸ0žx ûcBíôjÆExÎgŸJH]oMÂ÷ጛWÐt-eÀ+ÓKsÀç®å^íz ·›„öÂÖš5,·FUÚÏUªðdÀ7v|ˆöB3ûå*]iïÅã…é‚ ¯ñªÀEü殊cèçøt.]BߥÏáLÜoÖߦsÓnܼyðâ~ºÂ>=9¯Äù¸¯ŒŽú||:¨ëú)ý0i2Ti2Àñ U /é_«–UUÙó`ɾZ0VwÙûhðx¢Z+<ÀDug~Õ®£Y|MÅÕT§˜¯U½~Tß»$¡êú¹²ìîõìXÚR<'ûÈ ¼®Ú§2Òó…IöèšsÂGönšþ~=’Ê+hºJX\³ð²¯K³`݃éÎQV/r¬¸ Gâ&¯Ðªè Û¥5ÈÍêÎR›$¢êozئÙ&35°×…”í×í[aÇ­6â·ÕÅooµQsØGŠl°.R­Äß…ÏÞ»té½÷¾ÿþ=üN¢Ûèyx½„“¥XºFènèôº†åv¼N@8‘ê¯b Ü_ë[gàOünú‚ÓAíåg/^<û]•ÔÕþÑ3óæ>SqîÔé³öÍŒOzSã³U}>À¼ªwr+ÔqÛçê©C­Û4Qyî€÷}w²\ý=}Uð ØÀæÔÐÅßGo_V©A%ÕÜ—=…uæO‹œ÷:YH÷~½_?¸uð´¼÷ªpùųEöÃßÍž;w¶°ÏÉã4O/˰ϗN|vrÑ!Á~edµîaui0ÈÕÁ‘'ØqÚ¦²­+v”äËìÝ©Ë×O,Ë?ú6½eOÿÜjþ[öªÊ) ޾vë«ñ¥ïöê9£8ÓÔ¦Eç/ª¾8óP×õQO>^ðX›ûº¼µå½ïÚ3¯Ùò@68íˆV²Kb! ¬¢¿Õ'$5Ð:àï€ó澪ž)àU¬@Þëv=÷òË«wºji xcѵãǯ‘5cèWô3ü n§âpäk83X„„b¡‰½v?®Ä[Þ€'€·š‹—´ØCÒÓ|Ÿ2è@ª»ÁZ÷ƒÝ¿›¾ÌüïÛï`§x…]M«¯ñç×<À÷³ÝØvÇãÄ4;ÅǬƒøŒö˜ZsS˜jŸCZ©±_û'p_E„͈± [Òv,”Ë…¬šŸì}„C*¿I¬g[— 1+çq@ŽØ¦æe’uk^sP:Q~Ë\Y.>Ïz-á¹^­2Xõ°?~ò$©ó+ý¥¦ô¶ç_à}%aÏ1º¥Ç«ü™ÏOí\Ày&t£3?ÿ\çwóëRXÊ겞ɸÎ51øÒkÔFm¯áK Çq¼€±§1\{…¶"[éVþÜü“­5ƒéÖÒRNk¥xMˆÑeñ5ß@Œ‡Ò§è)]} óüQuûq*ä¿ —ªuîL9ªŽ~õkaòû«lƧ***z¿8uUÕ¹³ß—=™¶1ö‘-ÃOB³¦fX¿ØÙ)ÖþDe–áí o¼å3}AHHe‡5œÞ&ðÇÝǤ£þ’˜ðüQ®}¦XòDÙ¬Ùee³g•ÙõXkÞ}þünóÚ›6 ]\¼x.!Éh ûèMxí37R×òÌyZ¸Æ£ãÜnË’ ‹ÀYQ‹¢7ìØ±!zQ”~yòwôg(lãžövî|îØ±s;W¶k yaÜ7óÍð^Ö±îuKž5õ¨yÌßµX#úŠŠk w?¿«p-E ÄŠ ©Æýòãf£GâFðŠ4Ðfš ~ÑøöCp+ª Ó>n\7Ñîs}cú«#GíMÿ‰^ÄîçŽü½BX6eÁ&aÜèý‡zôØö`0îeì þ§®Ø¹mêë¡­ ËâÍW+¬fŽÀ°P–™„­kFë±7½Z±víêJßÊÄœÌÒš®ä“Òø½[84\Ýù“©‹íš«VSsÝ좨V‰~ùÜ9Ë–Í™»¼âü#VÅÄ,úü†Ðu…{ΞÝS¸.´Bpø«¯úê«Ëô,½Ôªõ«Á¾ñæ#™¸/&XÄ}32YͲ âùgw`Y%îÍ:„Ü'ÉÏ…湫6mê·~ÂK¯ íc„5k×ìßhŸ§ó³¯1¯2þ_‚½)€C}F`ÔõÛ^€?1ýÖ:ß%$Ô~MÓ8Œ;j¢fLGõ Â>óüÀàqz¾aágo­6¬Ôu¼Äu ü‰ía_ý:bÓ&|åoöKB—“mÒùÕäâsöŸí[…@ûiØãä‡sœèü~ÑúB€O— ºn 7꓆«ÔNñ›©â︵hÍ–MYf”UdOœ¾|Ó¦>kò ÊÉüÇŠ¯ŸeÊX¿š)CX³aÕ›ÏÛç‰éÛ²3C½;ôÚìßèPpµj¾K¸_4¿½›èÒ›é1gUùÜ9ååsNþë_'¿¸~|sñý÷/~øÐ¥Õô0ý‘þÂ}Àgýpo–'hš8y¼Õ1¤%ˆz‰#~Ó¦ºü€kIc³}›N®tÉør]¸Õóå– ÿƒ×ÇlnëØ1%ePL€×ƒ+篮 Ü6jø°Ä &í–Ï\³µ5§Û øÞ$­Qý¥?ÿ~,Y´ciÂ'áTº%"{Ë–7Ÿ))‘ÖÐwJíëæÇ—¯ýTH/Å«5éjàý÷)?Öów);´3?÷B¡yÞªŠŠþk'¼´¯Ã{„ »aíÚý…©·ÖmÍʼF6kµ€‡˜ÎŸÕÕB¢×˸î·ÎýVL¯I![o­c<ÇA½½àxÍñfÿá@wWñч>ú°‚Þ<ðÅ—`G™À®[ëHYÍ5΀†ìug=†@~Ô)ò3]Ч §è—ð“tåAìŽÝÅtû7ö·ñn- ü飘Ó=ÁO-$/¬æŠ˜×=Âð¨9…³ ‘±!­iŽÊxÎá)åÑsSÄøše$ÓO€ø+ýõê,âcF(¨ù\0Û7‹é›kN-ÝL‚8üºƒ¼ 9J3‰™evtaÔ³Ÿ–×ù3p+æÖd[ï3ÏfôêõDú³gz˜—”i7}ÿ’e§¯®°•Z—_;½´t䢛Ï-nñÀâÕ7?ÐVx–®U]¯{ÖJ]«›¬¢ªO¿¹F´W®ãŸurÑ_øxÜp#||`Ÿ3+ Ó{÷žnXq¦Ïþ´Ò›«?Ðbñs7(]zúÚrk©mÅÕÓËx—¢H7þ¤ÀOÀíÙ«®iîÏ^@]Ò[?2s–,é<¦$–¿~DæœF’›ç‚Ô¸gI· ‘ýDHÇ%ïHÐ÷çÃXÞ›¾D %u½iá‚ý~¡d‰Z/Š7;žíXgêÖ—’N]I—ìÀ>öC••uu‚ÔBµq½:ÁY+p »±–z¤kFEñÂöáµÃskF· ćêŽBbeÇŽ9™¬ rZÇþU¾…óßð\~ §.ùJÅ»jC+PUT°ãÚq×ËŒÞq©Žw 'âÞ·—9B|¬‚žtV:ìÌ•¦Þ^ëÝPÀÓ uQµ IÛ«g¯:æ:q©¡$à—ÕQLüøCŠžÕùLM7dYE¨EÕBjKߌ}‡8„Kš,œ‡öõ8èz›\·•pªæ¹õ­RGu‹«ÀuB³oU#äY㯤ŽoÒÿ:jÓˆ­âßoq|ÞÜT³ÍãþÆ©HAê¾wûÜò)ĪÇã77UŸó¸ÿŽïg˜Å$ôp0!®³ØŸ$ WtÐbqZ©û™¤ç W£W„и–’•¨'¬øÅÂJ4>ßò![/C%p}×<¸Â5.†g\+àš— `Oµ˜áp\äS4Û-öÿˆ¼Äkh§ä†²¥h§¸®vp¿ î' BvÕ®wü€vêzÂZ\•([¡~B‚Ø)>¸Lµ·$=ZÇpºµFÄ+¨'ÌÙá3‰ËÂÚÉ¡W9ý•µW@®•b.*€½›Èud‚O“X€L“èA>^‚6 ½$ ÚoÄÎêØ Ml^Ìæð›œpö¿…2…OQ7X[-F=¥s(>ÃØ˜B  ‡ @ÿö©éU—ëÈÈIpÁ|.[¯ýùꥻ¡^šýüµW0„C‡±?6b ^‚·âOñ¸F¡$LÊ…Ï„ŸI;’Nld¹!6[‹=ÄhqŒX&ÉR{iŒô”´Cú@:£óÓëúêutStÏê¶ëκ‰n»ºmu{Ëí¬ÛÍF÷5êÝ(±QN£)žj´ºÑŽFo5ú¸q£Æ½/kü^ã r;9J)ÛäÅòjùcù'÷–î±î¹¯v?é^íÑÚ£»G¢G¡ÇÍ_z|ïy¿çPxôÌñœí¹Æs¿ç—^^^½½Æx­ñúÌë3î­f’‚:£¨ ¨8W2ï!ƒÀ'û^ËýPØ8|úYÜ]cÔ ÿK Hškc‚š ÑÚX„ñSÚXBÂm¬C¾ÂUmÜy“ÚØµ"EÚØÓ繎ic/Ô£ßçÚ¸)rïßN{£Æý#Ù7¬D¨ðCœ:CîÀG´±€ žÚ˜ …–ÚX„ñ8m,¡û„uÚX‡Ú ‡´q#Ô–mìŽú’>ÚØ3¨/Yª½PN¿|mÜù÷÷ÐÆÞȧÿC(™Q!*A8ÍØ7›l;:¢LÈ« ꎂW(Œ2BAƒƆ¬pY P>xœ‚bPÀ‡À(åÁKAIu¸¬üΟ&ØS ïF€”ÕžuTS€R1ÐbßÐ)hƇöü6Š‘0šûÒP@d¬c3ñ.‘X à½`2o.À)°ß Ô | Îésa‰%7;ǦtÌì¤tè¡P%£Dœk³Ú,&C~°S¢„çå)I ʪ$™¬&K±É"ß±µ'Ûšb(Ο`.ÈVrî²1Ò4ÁV¤dæ ²MVÅ`1)¹JaQF^n¦b4çr €³ú"&s™p\qìËk\-FU& ¬J„¹Àh*°š`z0@šÑD˜Íÿ „C·£´oæ¶éÖdßôCi&‹5×\ t íQŸƒÌ]‰0we2‹ïRɦ¹¹ƒ¹,sØÅfFÜÙlà*}QWx5Å€#öšáÓîcâø,ÜÑB¯ ö ›­°o×®F@Z\b5Y2MYfK¶)¤ÀËQ.8Ów† [cÒ™xÀ˜ÀmÍhÀ²ðøsœža+%“ÃwæÂZ!—ËÆõÊ´fá;XH2¬Å·iòv9œA]T/¨ï& ¯†dWÝÃ#W­Ý™^d(ÿKþU)ëÏO” ÛÛ)s.¬È|dã3Ì ó¹®'œ,ðïxa’%r|ù›3Ðr9O9|ͤɕͩhVÖì®ZK¥¦ú˜êïÁœ/3·~ß_¨³JÁ Xmšåj^`à8TMËNçâvÊäpÌUì 6þõ\£ú²#ú™µÚºxI[n9ÏìÓÊùÊ„=M>™GA&xh>Çbã+ýdÁ(O‹¤Žu<:)°tÇø·ÿªÞÏ(:uÂf yÔB&ßíàÆÈ%°q_Ë€U_UiÈ÷ ¬Es&pVı¨:™Ä} ‡g%›¦™|>ç*‘CK=¯T¹-â: v±çs{ª¶–]2ˆvßEŽà:9»ò ¢pÌj<¨¸s5­Ö·þ½¥vhN嶰Σmœ/§×9%šÄõ‘ÿ«(8¢!‹gõMB“ E#g4‚ù'ÓÄ€ÈäøT‡ý˜çi™Ía¡Lí¬Ê­³‡N)wì+èfžœ6pÍEN Ü™ Þ¦Eƒµ¬#VœsÍ®û.³s.óÜ\ß×Tm¨g‰áö4óSPÑlŸÏ?ùã×ØÂÆO"v²4‰Bêiê^{™NJ´³E¥ÎtžÅy4jž”ÇýÔR7£rÊtjt±¹«×9NP?syÎÈãwrDFÎ)³W‹6²ë«*%G5pïQ}×AãvýXÿ­L.eM§‡¸~=õéÜ®†x ÖìÇ÷åÞ%›ËuÖ±ðÆBîÑá=[³˜z2¯’ë²ê2SÝ]ª -FlÚy˜U§©h¤çtP<Ü1: p—‚F@™Ä×b`N:. VÒàŽýÐ)’Û%œ¯°õ¶<GÀ˜aL@©—Š# ÞîQ0Ãp+üžÝ øxÀÅöêÑHNCØ’³3Üq0 Ÿz Žíˆ€™T¸gã!ˆU¡*=ös«;lãEå4æTësÃ):8‹ƒ»$À­­²ŸvÅp|Œÿ`^±q¼Æ§ª¹$Žéˆaf8#€£X~ÇfSá3à’¹>ùÌ*·ñ\†(XWeÑsTK¨EðŸâìÇe)\ ŒRŠÌíÈä‰äûÕaJå,A³2;±„hºTù`úO«£œÌå…—ÂåOá?_c¶ ü¼ßÂ10¾e®T._8×C§0˜Ã1-2}ÆÖy\’‹U"¸¾˜Ý瑜R8×Hrƒ’8°¹Z§!ïë( áò鹦b9t2èQð1u3ª?ÆpY#4]«8U¿W}"ÖE»\FfÙá@U¯ùT8×]})˜FpþR¨×Þ#\tæ´~¼f]?)œrJZÁcQϡ¹­“ëb$ŠÇoœÆyj‡9s@ªæŸ uœÕׯ#Žp¿&w¨¸´ë[0’ûS¬Æar6TùxÕÜ¥‡s-“?çØêòvý“ÛµjtV£®ug°K®u­Ô,<„ÃæßçœUŸ–Ô3Ëù¬ãZ»5ô„íx:VkyGÕë¬>ÔÜ]¤u•œU¯‘×çj h­«J̼4×U&“øªóL/Ôz'æzÏyŒ²ŸýÁu´g‘—ZWxµÀ¨YÐæÝO(ùŽ'ÃB~Þ«T&ñ±M«L˜|E,›ŸrÛÓ°£ÿs§ ”mॡÊÁUÿnïBíY*—k˜Õ“!^ r<—9uÂ4 öÝòo³ºÓû¶¾èö®ÓA¶ çF®k©=&>* ¨èãô  ŠHH•3$:%6¥Àd°œ’© O¬²9Iá !À%àPôilsrtxl¬28&%9%IÇ`™v†Ä'Äéå¨„ÔøÈ𔘄xe°D «WyQ"bÃcâ‚•Èð¸ð!L¦ŠãT‡Ì6 ÑÇë“Âcƒ•äD}D €c’ô)tšˆåìF$Ä'뇧ÂÀ9HË#¢õœÿEpθøñ .Ó’”RÇʈ˜d}°ž“Ì,•”ì2{&DqH}2ãÅkü2±¹;½ ØnMÀH}x, LflÀ„\¼K?9ÓThc¾­·šyUsg0÷Z5 € )€ÀUçøŽ%ˆ,~ê¨ÙÍy`³ã8XM½<}€wÃI¤¦^c± 2 •¥³E6³d2)×Ê#ŽÀ|³zæ)VCƒ],Š8äJCl³Ö±Y/ dÇaXhÉ…-“,¹6H&Š¡f-¹S´cØ¢S\Å)£âL*ÿ“µN©ÜbS^IÀZØYÆ9É-È2[ò5ѹú2m}¥‚MÉæÈf›l¶d‡(²Ì+®?\:ýÚßYü9u¬ÖAÊ暑dg¤üÎ:H¾³Ò’|&Çduœ ¨Î‚Eþ#µ’⨕äÿZIVíð«•d5`ÿP­$ÿ‰µ’쬕”ßY+Éõê‚ßQ+Éw«•”__+É.µ’køÖ+—à<‡$ñg•K²V.)¨\’ë±ËŸÿì’I.0+¸d’ÿÔ’IÖJ&å÷—Lòí%“ò{J&¹Á’Iù-%“œž74±ý»ª#Ù)ù©ŽdGu¤ü‘êHv­Ž”ßUÉ VGÊ©Ž˜³Ö ”ºÂG¾ká£ü†ÂG¾wá£üŠÂGæ…OýÚáß46ü ^4È!ðòG~3Ø•÷í&ÂÕ•÷ÎŒü_õBø¿¯Â\ý-¼÷/ »NʘÛ5’ÕäϨZƼۯ5]™‰úQ¥ËO)µÿw‰ÚÇÙÿVñ»…ƒjoQRíG~ "7»“•‘^ä:%?SòÏ ò“ùG¹D®>.]¥äJù{ù±š\®&?Pr©/ù~0¹HÉ…îäüwÉÒù2ò~—LÎí*«&g»’o)9CÉ7ÝÉ×~ätùŠ’S>äËi䋽ä$%ŸøgÓȉ¿ ‘NL#BŽú€tœ’O ŸPò1%Qò!%ÇÊÈÑ#­¥£”iM>èNÞ§ä½9ÞÒ{-É»þä %(y‡’·)y‹’7)ÙOÉ”ì£d/%{¼Éësƒ¤×)Ù½k¯´›’]Uc¥]{É®bÕkARÕØAµ¤jøZÙIÉ«ed%¯P²’—)Ùf$/y‘­[‚¤­F²¥ÒGÚD*}È‹Àô‹Õd3%›(© ä²‘’ç7xIÏw'¼Èz#Y ëÊÈZJÖ<ç!­¡ä9²zU iµ‘¬*o*­jAÊ›’•2y–’ežÒ JÊ<ÉrØ´¼Œ,[ê%-ëH–z‘gªÉÓKöJOS²¤t¬´d/Y2C,]$•Ž%¥ƒÄÅAd% „H )YBž1Ÿ 'óŸt—æû‘'ÝÉ<˜˜g$sASsƒÈo2›’Y3½¥Y”Ìô&OP2ƒ’é” ª}|Ú4éqJ¦M#ÉÔ”fÒÔ 2…’J&{‘I¤X&E”ت‰µšXªÉ£Õ¤3%”䉔Lð,MH&¹”äL#Ùp“E‰‰#%™”dPbèKÒ«É82–’G(Mɨ‘²4ªšŒ”ÉÿÒˆî$’T œ:˜¤4#ɸ©”|Iò#ÇúJÃ)It' ”ÄÇ5•â)‰kJb)+Ã(ÓTêKbZyJ1MI´'BITÑ—‘HJ"„.RD5¼—„#ƒ(HÉÃ|¤‡ýÈ€þM¤>¤?O©ÿ Ú&¤Ÿ'éKIJz÷ò“zW“^=›J½üHÏ0w©gSæNz´&¡ž¤{7w©;%ÝÜÉC]Ý¥‡ÒƒA¤“éØ!HêN:‘öAîRû&$È´£$’¶MHÈàC#iSMZƒ­¤•'i lIÉÕäþÁ¤Ü´ ä>#išjN‰?lòoAšQâG‰/%>àC‰7Èê=˜4Fš‰%žþ’'%íáOÜ)‘›’Æ”4°F”¸ù‘ˆ°(‚4#0K(à^èBpS‚(Á»±qÎ"ÜùÿÂúo3pÏ¿Vÿâbr‹ endstream endobj 142 0 obj <>stream xœíϵ®P@Á“àîîîîîîîîúÿ%„Š’ä7„™b³ÕælШF7¦±k|šØ¤&7¥©Mkz3šÙ¬f7§¹Ík~ ZØ¢·¤¥-ky+ZÙªV·¦µ­k}ÚØ¦6·¥­mk{;ÚÙ®v·§½ík:Ø¡w¤£ëx':Ù©Nw¦³ë|ºØ¥.w¥«]ëz7ºÙ­nw§»Ýë~zØ£÷¤§=ëy/Fúüw/à ø5¯~Ú_ÿ˜oz;L ügÞ ðOx?tЇ>ö©Ï}:øK¾À°¾æ× endstream endobj 143 0 obj <>stream hÞœXio7åOá·¶@Mó>€ @'M€&1r  CQ·ŽPYvtäøómé•CR»Ô6¬=Âå{3ó83¤°Šr*¬¦Úáb¨ðWK¥¸:ª¥ÇÕScâÿê8ž§Þ(\ &>ã0ÃK©â¦BaVá0¥öøÖY|/ã›øÑ¾ôiL ’óˆÍ©“yA¥µÈFª4PQ©ƒÀ¦Ò|î •ŽÇ1‘múÜQ x{OOƪDdr £q#¨Rc‚¤ÊhŒ Š*IM… ƒ¡*H`K5Wq0'ÁÃ#(0…ÖREâTp–\Pm]|#©ö"¾QTš\SÃ]|c¨‰ŸJn©QĹ£&úGòèão5“IÁ©ñqŒÔ»1©åB(j£)÷î>^¬7ÛAN_žþ4Ë^¾éNxv½Û.«nsÿ>†?¼Þ­¶”Ÿžu›íïBÊ4ð—_ÃÕËà$ºÚ-—ÜÍkòymz8Ÿ­»U|T·0‹í²ûöŸÉCrFNÈò”¼&”¼!Ò‘5ùWJ~$;² ’î»c4¬’LÃQ·4žwŸ¶I`°.Ÿ’Ùê;2Çý÷«(e2$- s2T»Ü`?„{¾î>¤Åаþˆ|ÂÝ5þ-Éæ%$S{N%jãŽJÔG|¸õGÍË–Tæðà y/lq>¹  ]FÀ¨Àª=¼M`‘‡ßxÏb‚.ƒ²ÏN·AQG ì÷WéùNÃ)"„W,TCÂëiØCÎA¢p—Òe´}ª*T ‹\åT(©˜7˜"ÓÓ9üô’<€–¡*Qº–m@ût4Oh XD)@]´JÏààeŠóIR@ Â,æüQr“êÖeZ¶Wƒ*y¡@Âtí|?NÆó–41ø›ª™«@Î8Ú”‚Hh-"P0z5 %‚<V:¦TŽÞÊa`yx2_zÖq›¯²±ø¼:¢øÀÜD´µ ý]‰'Šò±º¯¸d^–P¡·ÿÚ‚fCQËãÖÕÍç~«’ÖKÈñ¯$É.¥¯np}ØB–ÈNT%Ëç=Ï©º©)Ø„V_à÷ ®Ï`ý+0{?ÄL·u·9¼·_íéb…hɤ“•§}Ö°í‹nh†,Ôó¯1YÕÙq'>ÔvÑÔ™l¦ÔIÔ–yƇ hµ?ò-®¯’ª>Ä߯±»ÊÛ+*ÈLQAeŠ ¼ÁM·¸m›…‚‘¶1¨”T ¹öB½#XÀöïSß3Ô¤å‡|5 íЋJc=lo­¯9,“š×È€ŸPë–ãHEòEÞªZÑ!ß–›û_4ü_u"À#V]°‘bÉ„c7r—[z¸Rûu„ÏSue5Õ©…¶ˆ¶Cnå§óæ:˜ZWCÍnR{Ú ,SÇß‘çh‚hZŠïñM+Ïu#n„Bµ º‘Lõô„SM¹X6Ê〠†ÄÞû¢ÊÚW€ù]àn߇]ôöNRºÁFL¹*ê~”@<‘ýE*d˜ ÉPÙ°b–öt¼M*¥PĽAоÌ3¼AAŽS¸J°—)«”èÖ©žHEZ¨’ŠhPQS¨L‚ÖJ2D -Ðzz“ìÞâî¦O ÈçiDLÀ>¤ì ÷v1Sˆ4áó<$aÊè^7b¥†›”v"ä2‰q ´hš¤²ÌðªÙ÷CMSŸfª ȋг´ßZô”ñ`•þo“UŠ7³Ô{Å\±ÞŸ: ȺȈRTGC»ÀÚïÿiZo1Òù·Ü W}ü«L¸ßwž¤ó‡UÊŠCÝ6í÷þ(rTðVã›Ø¡£HU´Â3¡Ey*Dv*ä—‚¿7s˜ú¿_½§c¦Ê¢XùæžÅ³ÖäßyRO—jl—îZçÒ¬ž©Pýí¡zúÜwéLé¶ÞÏú8éèȱN±?‹]e¨ôËÇ}ËļÜMú¥Xb‹;ÿ'À+àÉÓ endstream endobj 1 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 2 0 obj <>stream xœ½[[oÇÞ¢oüûT8€4ÚÝÙ«‹ pšÚ‰‘v¥Âhë>P-1&E[$­*ýãyé¹ÎÌ.—äR© CäÎÎõ\¾s:NL’$ñ«QJß×£³Wçi|½%¦(«ø~”Äw£þ+Nâ+í‹¿¹ˆÏ^fqMS.>Ĺ}Žy¡ë8Æ8$·ÆfI\'0.…—Wqü,ú!G«hÅÑ&ú]AkM£çÐ΢$J£*:ƒï‚>Sx‹ožC;ù*¾ø6Šßºöl™¥)˼³çö9n¢ìu û®`Ç;xº†çôM­mÓÆÀºµo`Í5PòN|ÝÃʳèx»Œnaý9´Nás]FÞÝÁ»3iŸÂèYôþÎà KxÚÀ˜O0÷Sô':××9ybª"A¹ÑùÃÏ¿¾噩›HÈ/€a…ÉëÆ½™Çç£,~=BFf¶ FÚ´6¥µ­‘È[Û`TQdð¦hR ëjÖhô™µNè¾Ú/ÓÔ4|O£'×Õ´4¶Éÿ—¢¤Zy^›¬ÊÚÛ¿%g°âã €ÛB‰}œ>d…ImEBÎM–VúBµ_7eŽ«LUgá8ÔÂf~ŒªB0f—&¼qm‰ÄÒô€È2S€Èª4ئ´ k’Bæ&Zdâ轉£?Gß‚l¾‹¾. uO`šÂ ÆMhÖ¥°{FìÆ5¦»4a 8gÏè®RîQÆ>2*!£ö¥…‘‚JÅÑ»ŽÊÅ`=gÑ }o@½Ð’þ­×ðtc°5²V¤zqôø{A6vO¯`ÄŒ@Å4ÄŒ9Y”5‘4“–À¬˜,Î5|Σj-a…%´–ÄÜ 1™òž§0s‚Lò, ZSשpŸP_)W€g?c^Ƕ²2 ò¦Ìè”{aáE—`¤Òš¹I ¿,LF½ÜœŒà!ËJßoMÎÖ&¯ÃõEj28¸›˜<\›0\w—~=›ÌnŸ}½Ý'°@MZ‹ü×À嘔ó 8$K;óŽÚºHR“¦vkë pdÜdžUDx»,“E²ÿD/tOï°"8N¹¥†¢ ×Кýú;x3&@~:xZkpžñV:xB³†~4=<µ_à§³µÉ«{xÚ ^Ôžñ¬ÎMOí׳ÉìöÙÂ<`•©y^‘@Þ¯$Ó»Íé“A4SˆÖBWðz$@@GÙ!r@“6MgÞ‘ïݤ[[? IbÒ¬‘Eì€ö>îFÆŽ)ˆÐÌ…ExM°\áE¿ Œ žØ‹°ýDª }¡b ð×$^Pš§k‚+5X1R‡^á)¡_á$MVí0êlmòê¬ G˜n6¢/X›¬Ú¯g“Ùí³kYвtDzº%¿ŠÆuIÀºr2hÅ4Ç€±d0fðï9@²„x¼-â§æ(@f©©mB2‡µšª3ï8[Wµ7[[? e•˜Æ*ªsb&Âo!¢x ËžƒQ8*‹Ÿ Å=ÿ  ßrþÅo¸ïœà9¦Pé¼óPë½éd ì Ú{YŽþIÐO²ÊMÙ”„%„HeãÚ²*Á*– m:º~™›­M^ݰ¬¬(Ån6¢*X›„®_Ï&³Ûg?Â’YÛ¸LŸiÔö>ÿM¦õš¤í#NzÛ°ÔÙê9C4U™‘¿´ð¢€×§òD^“J1³èù^œ)‰·*Ï\ΖÀQð³Ï/»„½hë ² GÀ3Ëj“”Ý­;–a0³Ê¤y)Ó báßc¿V3÷ƒÓÏxE0<é÷± DXoØSçyú—¢wÑú|rˆZ0]IQˆ#›$u…8²J<ˆ¤é!ªýA­M^ÝC4ÃÌCši°º4=Dµ_Φ³Ûg?Ѿóýݽ°†sU`F©ÆüQ>ô$„h‚5Ò4 ¨&G90`QžÔâøÎhÚ™wÌÆumj[mmü(ÏY4•i +‹”ÂÂ]@ìó©çä'çâ5Ï)K<Æ ŠïP0”;ÎD¤:ë–„¶!ë<'[‰¹Ï\„¿&aSåìé` }•Ú– â¬r°„±€~Ž4=,µ_`§³µÉ«{XBFQ¥Â²hgnum:Xº~=›ÌnŸý,‹Ú[”.|}ÊAŸÄ ÀXòPÎ5”FŒÅ“.I/&[ÞòG0ºÇ‚óÌ”BÛòÌ# @I–vV²IÞ™wÌÆ€¢¼èrô±,kS•zïS,ÿæîe_ûZå3Ýe÷ŠâOÐB¸åZTˆ¸\Z@øh)Y6µ!Ti/Ìg‚‡˜*µ\®»:¡7JéX0ÒÌORAÄRÑ\˰Ò1)låÛ{o{\¾¶¹¾ªÚâ.¤ÌC8l«ÆT•¿ƒè¦Y¨«w„˜’2­±,[²8 ‚ &Œg¯d >Ú¢£$kÉØìø}”Ýo*ïê¯,uwîwLD6ØÏTí'øÇ;Ùb[‡UâÚÞ{Jð ¡ ‰Å‡•pJ$X¿‹OÔ˜ObgUopý/½ˆòz‚¸œ²ö ",gQke‡—¼“{½.Áñ+—Y¥Ç¤Tþ®p[K˜M¡K`F´ev¹ú+ º‹D&XÈÆYÈË-ÿª©x—ìº× ëH«üû‰Mï‰xõ‰mOØv%Ê®%•+[¢D>XK,³3ùXýTèóºc¸ÏþŒï§”¨ÿb7p+½d òHS OÄT†úÆd_Ö7tã©¿‹iiŠBfÙIiªF•{?‘â{hóõV ·e ±}k†lâÂÿÆý=7v³¢2CÈΚ̤Mé|#Ç&ûêÕ¿+6NTX÷((«æQþ4ÃÄ©Rµüf kŠ@T-¼O #œ“ˆ+¶±{Œbæ4ëFÖÂ59àbÏ«¿r»n]Áô|‚±Sì=±„rƒä¶¶t¶vJqßLdÑÃ7MA†ý0-ˬ©\Vó= ;žL·²ðCK§x]^¤µ1Ëû1PƒÃ±+VÂp»/`[9[úx¼ðf䣃…ø¦Û”‹jè¡?– ŸJ ’KÒ@‚ÝÙƒÆüþV¡üRކlÓ˜¹Øg?9ñ¬XÁòd(Âüè7­Ñ6{)ÙAh]ñ /³>ñŠ)Y !9…H¶¨´¦°¤¨sIÖDg)vé†PyÓÚHí¸èÍ‚·÷}zÐÎMNZä©…ÁëS›ÌŽù>y F"xR©{;‰úÓñ^«6.èbÿ& |êò7M’ú™èChP¼9S˜|Œ¾Ž²è?Xëè^Bí!,«­WÔ “{\¼†Å± ãyü-¨ñ ‘ÆJRÁUÔ—kÛ³“}Ù‘c¨3íäZkZ :ÃÃo7ˆ©­MîÊfç}Ù!ÄsÞüxÓhsº1iñ‚ÖïY9lñS:ÍX˜Á? áÌg-NnãLì±8#Ô35z¹G៛,ˆùì™? Ò°òµ³òáô®-”q·¤ÁöcE%ºy`C½^SÆâ 4í}Iöáž,8G»™Éû^ÒúK§Œ¥|ì׈è ÂÁþûêÝDò ³¢.$(é2áÂÅ¥s§Èz7±¡ÇÚ½Ž$Jùgš»gÉÑ´fÍc1}}”ß ™:3¶Ø‹ ±Öa˜t>stream hÞÜWMo7åOáɰ"9ü¦;pÛK¦§=A ]­ìM¥]yµ²ãüø´oiKIŠØ²c;5 ‚_ÃábñfÞÌ0$®xTÜâ‘x‰G͉TàÑprÎñh9Åyt\ƒ½çÚòÀu‚ŽŒvÐOÜ8('|-:Ï_¼Gè¯åŸÇ¿}÷´ïûRu[7Ó¶›ûº\Švµxß®ºf<ú;‘åI-»jÑÕM/)H#uÔb1™îÊŸÚnRuoþY½•?·M_5ýr÷Óßì”õh ¶Ï$ZÁjÖ¢7lйcs6ÆiÍJ¶d’4ß繃Θͮå;Áíc¹côºü{b£A×,¢ œNØtO¾Úýe_+ Ê)¢àŒÕ{ò÷W»J)= öäqUöolp™ȃ³‚´ç6Y5@·$ŒÖoåëUÑ_.*ù[Ýü%ÿVGMÓö‡‡7Ayqq!š²¨E3›‹¦>'í¹$]õQž­ªîRLçËr>98®ú®®Î«Iq°Xój²3iýÁQ±ì»qÙïÌêeÿnUO–D:Ùì}¿ÈM©2£?¬fÀ}˜kè `Ú²shVÍÛØÁv—И^#ÿóȰcœõÙîVlÒònЩ°d-$=äG.ó1¾Ñãl†»ƒänÔÐ\B‹Ð4KÌž·Ú®í‡SAd6ös°›7áö»¢$ÂsaBÌ£‚áÎ<Ð$‘Èó ­HÆ€IPJ<®éñ ¯é̓ˆxæÁº̆NØDû9ë…"÷ûý›°žÜH­%IÞÅÇd‡kùä;ø Ñ>˜"ø¿Ú  ¿Pë(”çÞ‘H¨08-ð3È Ö?y,)ú3¶sz.‘¤ÀxÆš#ÓVÃÚ ½VENxÄh¯ky¬0r1¤†ÿ›hŸ(3~IñÁ«4ðˆ¨Ø¶g©¸F$FQ­q: ㊼ ”C8ÏDÙÎ7lDa&ÉiRnD4¢xïjmÑ•‡]!Pn‚ãàC"soþ æ,矡®%6ÊY}@n”3ý(gû»Wké‹W‹Â+Å%#œ·ùÕb”å.*ü£;–‰QkúQŽ58UÌé{+ÕhóŒKAX·ÁÃDüð<Šº¸-Ê£ÔñÒ;ßU|w4¿ªc|îŽù­À¬ßG8dêÁ$!xŠÕy t 2ÿ0aP% endstream endobj 4 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 5 0 obj <>stream xœµZK“·F*7^s«C*Vewv æ¡J²ɲ˖6v¹â(.EÑÞ—H®6ò!?2G—|h  É¥†*m±ÈaãÑhô×Ý#Ë¢,KyhsOžüvòû(Çƺ±EWVkœ ¸aq¨šE퇇â‘8ÿOÅ dú§XŠ©Xˆ¿à)ű¸sq*¦›üË¢±¥Ó’ÿ¾8Uºh;‹ª¢-<—ÚZÔu±äL¾iùläÊÛe-Ò….U¯¥+ë¬ÊZY« ÓÚ^+ÆtËÑè­Ç9ýB¥0ž“óÑ[‡ª ÓU€¡â_ñ•â;13¨ß©þR¼Æï æâ7ñôê¤xÚƒó­_á9+ü>?D 0%Ú¯ð¹‚yás³Æå Ô!~]ÿe ”ú­½Ì9·ðÈ\á3 .2ÈÇ8Aßi(½ MÅ[RÈ)p›Ÿ/ƒ% d5"³5:²ó`jï°«ÁqšMu›iò2~‚Üæ4ú“~|ŽÛ[ì)ÿœÇ†OóÿÚ¶E­Øœ£öOóIÝ×ìæ”Z“â>ÙðÇ”{Câ»]ng ^aK²<AÎIñ>PßjßKäÿ5ÖïR±/¤¡–1ú“ÉÊ?ŠØ =–_ ä],ù†Jbý“--~â6ìVTîZŸˆ“µÖ™/]_Ê&aÍñˆÝÝ­Hy~…_š,¢qÅÑ*w‰p”§sQ•oEåÎëôÌ|Ó¨'.?ˆ0åÛÑœ/CØœ~ø=zÏ¿|¡õ¿×d‘×  #º·ºÞ@7xrf€kóºÿasÜ|Üÿ,yư9=û åíòœ47'ËíÅÌ[†]ó¸]GÃ0¼ÁÞ¼jâðÛ‡ãµíão#¤n~ÃǶÈûVo“×óN×âÚ„8¹Ño_Öý~5t¹…Çø'Nª!@[§å#q/±÷¯ϪêlQ›jKDpG°)ÅêõÍË6ù%ܦ žÿ.WPˆr# š¢mU~ª¹%Ƴ´Ø"þŸÉ°K¬›¢$™±ÍÂÙí\†„qÞêd­ª@ªB¡¾¶…¦ZONFu…‚:Õ欷'™;šsA‹Ÿ žÔ»êšÂ&îL¢¹=Ö³°¡w_ö‰|=„O ™f>ÕøÔÂêîði±ËìÚ„O…MIÓiƧjkh¨ dÄ'Öýso&=÷„O ÁË*âÓê¢Ë¹{2áÃõ,[èÝ—}0>àZUj>f|l†O}wøà°ë’V ŸÆ9DñÁÜÊRE 2áÃõAÿÜ›IÏ=áSw(h">µsˆÄ= ®²qï¾ìƒñ±ªh«]ñMïO•ácýÖ2å–”/pg»%e¬&èxH›šÕ¶íågCÓ"‚—Y4¬¬sŸ +Û@Ÿ)^2¡Éõ-îͤçžÐ´v»*¢iûdÜ=™Ðäz–-ôîËþQ4ÃÂWéªètÏr¯Gâ[¬þ{.|¦sie³š›†áv‚‡´#n ]tá;^±„5Î@/uÑÔÉ…KSXÔ3,L s}•{3é¹'бD6MË ,b]âÎd=Ö³l¡w_ö¡.l¡«x¾Ú†T‹Ýw·JeæÈ]~!ñ™q2­KgÎiÚ¶PutNGvMt&#N±Þã{3é¹Gœ VNÕFç4X9MÎÝ“ '®gÙBï¾ìƒqBànU»§fŒZ|2Œî!'}Óe5Î5LD¨© £.ê0 !®po&=÷„KÛÚˆPã\#ãîÉ„׳l¡w_öÁY7ꮘWï…P¾]^w‡–¨®Í¢±Î-b´3¶+š6Å£@&Œ¸>`À½™ôÜFX»6E;ëÜ"ãîÉ„׳l¡w_öÁ™®¨õ®h·Ï¬íEºö.#»,lë £ ŽÑ–£ÊBKuÔb F\0àÞLzî #ìL—"]å#ãîÉ„׳l¡w_öÁi‹~»"Ý>‡²¦ïGw‡náy¤ÓÎ-R¤3%t”bQ B\àÞLzî !Ýà$•"vn‘¸2!Äõ,[èÝ—}èFQcw§”Ž× SJãø¤ '„8>ÞÈ[Pê&íÞ%å]ßïHíN–¯gh8}þ7؉K„of]:èa&Á!YΠí’Û%Ÿ½b±ûâIºð·ªgñÊ~=—ïÄÕø^8õL!¡¿¡šQÃKJ¦'8ÝÊèç{Ù¥VÊ9O(ëì²Îèe™TÍ7Ï5Én‚v¤Sq¤p¡qº)Fnð»-»’§ûås±ŠÁË8Ùô”fµ ÷1¡ú¹²·ô.Agã`y®Õâ®á®(E~*|Bü4»•ž’V¾…žÜsJ×õ Ö½šrM7—þfú9=§áJ­~óÃÚÛô1º=G¥&;öŽR˜ŠjŠºaÛûl—4þËJý rs8 ·ëWÞꊿâÃ.“°` \ç?Æ4 oåðú“\|™]}íuTî°­9–ž’\/Œ w² y\l™5EºMö¿Þbù¥šÂêÑÕý1ùý exChÂÑ5½4¡è³ý½¡#Šã>†‘Œ)¸|äÉ2Ïž Y¨wwåã¨Ðþ‚qxg‹x§Ñ&­áE°ox ïê 6¬±Š 8×úõ™{Êó«w‡Ùë¸î2¾žŠK7׉BÏž¼~ݾÝÄl¡kŽï°,º\µû†·Ý¿[%E‰•]°»%è·} ¹Æ&°f7uñ„]&FºšŠt¹ê.eOñw´uèa½Ÿ¼àøzæÿçâJ~qg¶¸°IK¶R;ü+¶º×"¦Š¶ÂµÞ¸g <ßh+èbLÜèÕÿÄ×SÑV¸6Hzöäíïñ>áíÆOêó’ðY¹ endstream endobj 6 0 obj <>stream hÞŒÍjÃ0„÷Q|´Õ®ü—ØCÚ^ MI{ 9ͰDÉX2¡yø¶k–Yv¾¦’E»îY'ü:¾­Šu“¯ôÒŠÎÝð®ÌC;;Œ»^›€³ÕÕ+Ÿ4 >»¹W󙸋.øâlP6øø÷4ž <Ô€<öhA@nLï ˜?˜;°œÙ!{&kaæÄȺr“Ÿà!~­S’*HÊM‘åi‚‡˜ˆ²'^”àQuáœÊLäUI"Qm¢<ËDQÑv+dY^ð´´ágRønì7~®×ÞZšæ_€f÷I¹ endstream endobj 7 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 8 0 obj <>stream xœÍZKoÉî\yÍ5 4²¤V¿gFÀ"È>¢d#±- ‡8Š%îò!“´ï!<—|]Ý=/Rɵ…`Îô«ºª¾ªêªów\òGnµpZr罦äóºÃH¡­ã3ßÙ“ÍúTfœÿ“/ø[ˆÊ˜ÎïênЛíT ¬ø¹q¢¨0ã–Oø«Á«ï°¨e)Ti­ÆÙ?[yɬOã0óìšAåµ(uUsˆRJ~5Pô¼\\½Qün=Âù‚?$¿^ þõoˆ1Îcü›k~ñgÍKZr=áß_D€ó°"L±F°P‚©Ð9æü+ö76dk¶aœ½glŒÖ†Ý²K´5“L±‚]àéèW¡7ô\¢-_ðë±xÎîØR;/¼·½=GØçœÝ³)ö:Ǿkì¸ÂÛÞ§»=ˆ¶Q•Ýí{ÐÜ@’Kp|ÁAyÊ~Fï’-@†Ö9~‡ì† ô­Ðw‘Úç˜=e?áßxXâí=æ<`íû#ñõõ)œKQ8p#þÛ¿¯¯‚U”•ƒ¢;ÔÎ [VuÏŒ¿hþà (R›ª5Ó¨RxØV{fP‰)MkV0[SºÎ¬la}Ë ÞE«K Ön§R¢rxŽæƒÏn«Ê SÙO íA¦em)t¡»Ûÿ$§Ø*øÇž¶}ÎKÌiö P¦ ­ÐªÈÙBwå‹ö¼B¥nÏ öáŒnædShÍyÊ^ñ°Kn%Ä”jAvò»]ĨX”°z£êðpÔ¦·PåJ_áyÃ>2ÎG.È{ŽøY`îéßy‚$¼IÀ ˜â_40$aŒ(K•dÙ%_æõ*ó ‰~Û?ð$”/„$Î+¡* õæŽJ"À{ŽƒH+KÍ ãÞ FCs4ðVûfÜÛ^š‰:¦çUÉóê²€6ÔSÓÓîy<3›VwyñÉ`¯;d” )Jãj”–loœÂÇN ž@k ìVÀpŽÙ 7GÏOì–¾GBîos„ÎÞƒ÷†ž¨ õ`œ½ý*ÄU6Agœøö;#÷[mÓ¦þ<ÄÛ×x.?'ú…þÚ _8tÈý"W㓚 úy<¡›Wçf¤Þ _ᥪÑ.E›zl6èçñÌ[ZÝå=¢¿u:yÊ„zÆm 06‡¡ãäÓ‚ã®Øšbh4Ž>Á¿'ø^"Þ¾}qP´ÎŒZ%¼Õ­£&‚ýoKâfýùÌY£•í `ÎMP°…вqÛÔlÌ"'Øóê܌Գ°MP°çõØlÌ"gÞÒê.ïuö© °Wÿ»BÃçÃ¥F)} £ÐѸªÑЊ¯µ–š &y<é<¯ÎÍH½ÁD#9UºÆMÙ¢žš &y<ñ–WwyïbBÚ0\!e(öeR'“¥°UÂé[öðø û+»Þv±]jÞ—,¥ ^8ç·7 3˜Q²¼¡ty]ŸÊáÔS«åÎÙÊb¼¹Å_xRÉ’pÿû (ܦ 3ÅÌ)e+2¾‰JˆOk 7!%ï1o†¿0kØ(d°¦@–kŽÀÄ; qkDvOµ 7èû›ŒèÈë ÈI¸uÊ(ÃêÀäCb5R¥4Úß-оN‡oPâCФS¢9ÜR6OUÞ(Å™‹ƒ„ÖHʽIBORá6˜Ðiá¤vw,lÿ®Ú»:Q†]JcwãoSü.È,ÏÉûB&-©gDŨÛÁœ½½¤O#ã¿%ÍÇY!”Û~ŽO8™4Å>Ç8@2Ÿá½jq)Áeu,ììS…C'= ‘Ó¦{²ÛÞùö€Ûäl¥qrdÌ ëÖAù!ç`»¶G(G‰äªÉ5”º7.ÒD•³“ù/ áuÑð°:ZNɲG,ËÐ3§ó‰ó[Ö•hËÞæµ„žîŸdo…+}oÿQz{þžê©K²î˜­ÂàPî,|®ìbwœ¦+Àv¶Üß³}ðšù%}ö]"Ä É9ž—ïK¢fˆnÊ†Ýøy¨DÆ S™žD rÞ›” çºád”øÒ%å‚ì#dÁÓtdD;R@¼£OY´òxî´Eå{ÜéÊ,ò$¿©qaú} 5Ñ6ïÒgºnŽÖ±ªo0{š?žS‰ôLÊžÝ^¥·œÃ‹ö.ËUGó†èeâ)©#_ ÆT[¦´ûž˜hØLŽbúiå'iQз…_§zäRJe¢û sCÍQ8þ¿.œ²æÿFü’ endstream endobj 9 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 10 0 obj <>stream xœÝZms5Ögÿ ñÎ$›ÓÛé3-/¡ JRú2Œc;ŽÁv]¿4”_Ïj¥³ït—Äç¤3…¹ñ½ètÒ³»Ï®¤•ùžñk®%™qër0*ç³²@PFó)7F‚Í[ ÊO¦iSÎ_ò9ïaà”ª—ã^RÛˆ ¤üØ¢|9â—üyï9~‘e?í ºŽ{'§g‚W½ Lnùu/ãçËÞo¿£ÃòrÎO¾•¼ OÎ/ù7çƒàÜá«h !ÖX8äüS&YƳ쯆΂q*ù ŸÕ#~þ'6‡ÈJ- KkÀe:iÙ·¦˜Ù«mI _±¯Ù1ûŽ=eçˆé[±[²OðÊÙ)Û° ²Q³ý ¬É¼¦¨—êù—So‡ÂìHC‘)´¼4ß¹mÉ”Ÿõ$ÿ¾çË­q•šJH™¨ÕôeΈJ-OU˜Z­Ò¦©-{½7ÁÎàöR/ûÀë`Ö{ïì9(§£^¢ŠÿÂg?³>£ú½ê_³K<¿Ä§ û‡]áóßqö>ãü€µ/ðÚgk<†üÈјë¯ñX ½Nð¸NZ™âÓ1žý÷€eK,;‰ÏÇX;à99ÌèÒ€PÖÛHç ¥( J“mAXQ­ç@£ +õŒÉ@U©í]©s“¹ŸsßKùDfÑÞ¸M»TÏ˪‘ >Š´ÑJ<?²ŸÐQ¾aÑÁÑ9¼N?!lÈy¼NñœQÉõê-ê-öën*õúd‰1Ö™áóœÚ`·ä‚ ¡Ä¿[âuÊV;«¤4m£ç¾²Ú eY=ÊqqýOÇŠäë#ûŽèîñö®Ïζeg;”û"09HUÔ¿ýq­ÏQ×;‡ˆæjë#M-‘]Fø¶ºž’^1wǤäZ&˜žÅ;ßÛŒ¼ç>y 3üù¾^}Š7s¼yÆž°Wðæ’êqÂí5º kŽÉʳV¼ò'cŸG•ß>•=­ñ›!û¼»\ÒB¦M"×y¼›c/3Ôøˆz :ö¸—XÒÇþV­xa½&\W„ú(ÚfŠ×¯0¶½ îø¡ì‚4|aØ]´v‰ óxwMúò|™'Æ„ª ·¡Ò’é›Úð7.‡¿ŠE_ãûIŒÈ(qgô¹³P˜”YÓxWÅ\·Àk”ìD¿wxçѾA”¾þ€âL»mºs?/àèœ \Ç»5Å¢¥BÏ; -‰•ò×òm«GvÇ”›ÔæÃ[´6$ Ó¤ÃxtOÀ7Q)¶züjã¡¢Gn4d¹Lbê„py»­£K_™Ä’>޾aPF dEoJdS’ Œ!sÒÀŠÚZÐwaFàåYR¹»ÀÒAu"·¯ GçWäÃKŠŸËX¿îEœ´;"͆V.Ñ_X•` Ö™R4 Öqˆñã[ü~½jAçUåúÄç·q„®Öõ¬ÞPÛ(_gÔÆÈmjñ³-^úZŸÆ¬9éÒ3ÑÇÕ66¸ÝÑyS¡"Ûƒyô¹RcûHuA-\/æ]ØÔ]ŽgÎE“7óÈÇ{2‚žû$ƒ·Çš•cñͣƱŽÿ6ÔÊðOƒKî¢HYäçA–}f¾é¬i×/íz~¸Øb”éöáQ3¶´I6‹º¯Ê¸ªø}ÝV‰\ÝÑK ¹S‰æwÒ|}Íñ–põ£»T>iálßNýå¶èšJà[öÒ4 ?êŒV;>™PGz«ÆŽÛÙ¼òKöža¡µEuL‚Òê"Ä€ ͺ‰7Ú”ZJ}õì¾zWT|8oÕ¹•íÃŒÑ[q Vˆ†·vÑý]ÞÚÙÝ¥P„(t__×2#þ3¾žp2Í}¨¾®œ%S_ÌÊœ†Ÿ£ùüBŸ˜ô0ü» YÆU‹îÛ׫Ýc€²9XY4fLûyw©w1pá-}»©E¶[¤èŽ7— Têõ›8F{íÿMVð™˜õ™Ñìn@õL_òÁvæ÷P3&qP VÚ‚iäoŠÁ¢ƒÛ¤ó,oWëè#TH˜Ä·‰—°„Ú=ï‚@Ÿ–òeùŸýÂøÕ£îr) N¥¼Úq¨>ÙÀ«ÎÅ{5”(@é&Θ?‡Œâ2(S`õÿA²p ô‡Ç i5˜FòÅßÝ º+³zßY€4œÙ‡"YÍÐ| Íî4oÕ•aGduÐØ#U6O-ÿ$Þ bÚ’•YÉæýˆz×xWæÑÓLZ?J2”ËhúgϺK rINò&f´¡º SàÆ½’|ËOéŽ0`Ùɰcø#!KGæ j±µÃP»s¿¢ÈÁÙÔ¶‹}mÛ½?+AÙý-± †™XÛ쬜‘MÉÁnÍÓwÇj,X›îŒßŸn´ÑÈâÏ`ûÇ4Û\ǽ¦´?¯1! ;j³¸Î¹yýRÏñUs×»}„¸#Ð]Y€)R;§YÅ£Â,{´µþÕ6~…µË­†! —[ic¸Ö,|z#“ZwR»Ë%¸F¦o·G™Jöhƒ«šÑŽ`Øi »³SŠ"÷ÔQgyœåRÊ¡š}ÆÝgå—ÔwX“m"Þ)í*< Ô ¶‘›+{Eù«~öiËO â7Þêâ®,÷î2—d“~‹Íº6™¤îŽi‘“ºBˆnt³uíýÕfôÞ¶—Þ#‘ì7µ¯I > yVÒá&À¾ÛAÜÝ_Õ¦Bqv×ö? ßa§?HôÍ¿ñêhG endstream endobj 11 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 12 0 obj <>stream xœµX[oÛ6æ^õ+ø2 Ý†wJÖ¡ëÚ¬ÅÐ6u²bX‡Â¹{ubÇŽ´è?ïË>K²$Û±­´0LQ¼œó+ů¹ä·Üjá´ä!óÂÏ/Ëé„wž÷¹sZ¿p$ßÔoRésþ–_ñ,DfL­'ÕNI¡­âÛ™iÈøè”Ÿñýd?á5ˆZi¡ŒœA´Ng+xæŠ-ý&õ«K€Ê{‚/b‡”’ï%ŠžçÉÎ^Gñóq"…óß&’Œ’þ…'Åÿí€ï<Ó<¥-güéÁ œÇq‰5ÂB*±Nað„óìOÖecvÃ8›°!;ÁÛ ;e»x×L2ÅÛÁÓQ«0Gvñ.òƒÿÀ˜ „ Xjç…÷¶Áó|¶Ùë×6øŽÁq„Þ9ú=Ì®EÛ¨L€nƒöhÞ@’] Þa· ÜcŸ1:`W ßÇÛ6Ú.;bc#ŒíäïÛXÝcð߆z¬bïýJ¸~iƒ\Šàd´᯶oö¢W¤™ƒ¢ø¡vNØ4+Gú¼“hþ"‰ŠÔ&«¬4*¾U]UbRSYÝÖ¤®¶ªð°¦g%ÉõÔër€å£>¨”ȞǗÉw÷Uå…Éì·4íZ®em*tÐuö¯A²V1>N ‘íª(1íüA;$‰@F¶B«P Þ‡3ªë‚©®®‹þጞ­)\¡²f™'ìóÈ¥x#‹Ùh÷y“UÛQUƒN¤1§pg£r òü×cghcìļsMFm‘N'dâ ÍÃ|ÊN1ÊÆ9bŸÐ"Î07BsWÌÏ©÷¹Mï\ä•ëÊpŽW“cϨ7&w‹ˆÏòlÚ…'ýëw]ž1zï@ˆ »ÄÂéÔ TÑ5ÆO1{ŒvÌÞ=$=E DúPŒ|%ۚɽ®L”RÒ\¦+²B! étsŠV ouKkÏ {·½—hssÔ:i›¶=¯èÝRÔß•âØ1 Ãüϰ®_XS‘x£©iìÝÃÍ‘¢x°6k ½È{Ã2?E-Ç3*jðŒûl8Ÿ‡ò<\‹ê»Râ´~ñ©†Ó&~LY÷L/ÉlÓ °¤’.fNó‘87³Ïv×ËÀ9;‡F¶é€Üi.ž_ sw”Û&Ê9€½¶f+ .*œ-ê=.{]Pâh¯(Ç™™kHžÁŽ v—2üQšžõ'¥±:zeôîOŽÝÕ*™·ûÁ-Î U˜z›³(úÚqάK"|¤Ùf@ÍDäF ÃNäÉ­ª¢NE!u{ÎÐô‰ÆyŽñ„õ¾2â‘S^Klí…Ò…{Qθ%«_}±9fQ§#*¹ ð}Ê»Ò` ê ¾ó\óßÍàZrdÎKm%NæÒØÑc9jMÎÞÌå½îz18=)ԌޕU°ph§({ê°8Ž´¤åò˜µ¬›Ïä!Wj!—B‰l$l Y[Á |A‰ÔÏôÝÉñuZêÛø ·œ{ë»kªïÎZúŽ·,;Ów)O®ïå*õí,œûëu-iÜVÛÁáÂj&CMÜ^Û!£Ú¾jλ×U”£¯÷ÅT(*¦¿Ò¿;•°YßÀÊe!'qx_]K\(Kjªµ®k 8û¹S溮aÒmu­3\îBqÔLÊ$u¸I¦Ó©¢¯7‘NƒHgþLiWwiDbê {U)œ7ª§4jÝ gÖ”ÌA~žÖëpA•í˜øXcõóÃ}@ßDÆÔ—éß:îqSTn°ºÐä#ö¤Q]Ëys¬¢˜Ô…Ê$‹wõÀ2üºøÅJðîôÏ0ci4…äž}A¸½†‚Ÿ`õ{´À1Þ°§°fÜíO v´‚~œý´92¯æf©¬jsŠÎˆÌøš¬—;'«òøuB ýÂöñþ7þ’½‡þbÏ!í!¤U´ QHÚ%ÿHAåÇÍ"C[|¥S%B·á+Œdx“w tsm„ÚR=—ç•aXS‡Ñ/–! ÷ñ” ÊùΔ¸ü¸öØ[ä$¿—ÿ&šËœp®0­GÁ²^@`E«Ãó€ç°V7ÀÅý›ƒK¥ÈÜòXÓô87\h„šÄµ¼‡ä(ª!oš›#:zSâ6¡æ“õH“`³àsÀ:$ƒ¼Àó%Þ_VüERŽœóãÙ×ÿ·Úó? üZ endstream endobj 13 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 14 0 obj <>stream xœÍY[oãÆž¾ê7´À À¦›ÂÏä>hšf³A‚ìf,ŠnQÈ–í0¥¥]I®Ó¢èïK¿9œ¡†”ì¥T·(‘šá™3ß¹Ÿ¡ø{.ù·Z8-yQyáŒç7Ý„·BZÃß;5C. çoø‚O°…¨Œé]WדµSRh«øÔha+P\ò+þjòjÂ{{£¶R—Ú35C.ã &ê¢VBUÅ}+D!õ¢‘…0*×Ùž™¸¨r1Qw¦’÷AÔ¾²È ­¥ô[@{fâ¢fÈeÄDÝA„'U¥¿¢òF”Îl!Z'Œ³ž‰´¤ò0Qw•*áŠU‡+¤”üùDÑýzrúüµâ×ë‰Îün"ùÙjòÇ?AŒyzÆ?;ã§_h^Ò’³+þû3‚A 8+‰5ÂB)A§09çü)ÓL2Å vŠ»£«bœfžal>ág?%{ë‰JÚçÀÓ07Šƒ-*L•¿cŸ³)û’½`gÀô=[³K¶b¿Æ³çì–ÕlÎ.wùKQ84E»ä×ïž;”•ÃFV”2X^;‡gU7Óð×Í¿š„ùÂU¥QZh©z”a®r*£ ŽbJ×£J6Úr2yßÚ9ìnýIäšÊá~q3ù¯{‡òˆi ð*þ ¾œ½d3v õÕ/Ù®o0ªÙßÙ/ðŒ³¯1nó5¨ÏqŸ± ®_Á?ÀˆÆä ßàóîuŠÏÝ€KƒÑ×°^`n…¹Ó8ž‚ºÅszœÑµÊÁFÖ «UšH&w¶ªP9]%,l˜Ñ9$=åLFíÑÜgîW<ì’FdŒ»k—üºÊäDêYéP}TÂßÈô4c' ‹} Á,pý{…ñ Øâ{<ù3û†ý–ù£SDz·ŸP´½ ×É,ñ¯_DÎI¯Cͯ‰~Ñ1Ê]°ÅÖÔÀYSç2(»ù¹}qxDÌ;Öœ¶_‘huç­"B!j°"ˆtֹת¹í εüT–D¿"Ú ¡º¢‚wÓáÌÜrŒè®¬Ð'Qô%¾6lӸϢB2ñY ß¾€cl¶ ú툲oŒV¼=¹d?‡5ÝÞ[® Å-T9JèDOŽ?°Ï‡‰"Áû¸QŒë`#‹vÞ¦þé3ÒjÍRÄÝD¹ŸÝêÇõ‡­“å/ÀJùnCñ>§Î«Î„ #ÙpÚYF“õBúnh> —†ŠFAAŽ~Íi>üú†Ž #gB³^>V*³e~"ØSqRÛv…V%û>¬ôYùÐðù+ò˜ƒQèCå>Tú`T(•Úï¢JA¹Íakvr´ö\)JUä8·þr8b4±•0M¥=O_Çãµq‘údò㣭ÝcÕïœ*°~²§ 9ÙiTò²[ÇcÓNí9ZZ] ¯“éÝÁ’ⰣЛôÙ %XÓqm[î¨fÍÉ‘VjQÈÔD¿¤ŒßÌT;úàœ:º ÚP¥nA¿!ÕæyŽÓù±!Ê®b™ ¿&¸1ŒêG†­‰§ÔËXÏÂŘºdÅ”R]]zhcE½Ç(Z‚P·QAKxOð¯eô½){MP—iŠ9Ý•Ú60WzEJJjm-ÚWh¾çyv¿å’Tu‡Ñ»„p”ÈHDNm"mµo5û¸ÕÏX#tUþ?U¿Ìƒ¬3V&]"FÔ(™ô@&Õ“I=¢LoŸ&O8\ e…’./¼Y˜ÚâÇêtiDY–Ý(dÖeAYÞêe4oF©SFêçtíë¸Úá‹tÜã*Fóî©dWàþO2“`ò`[hS Y¸Þ¾vÔ¾>îKßW[a‹ª·¯µ¯Ëöõ‡ï++xC_ÏzÔ¾6ÛwÏ›ìãœS(°hÕZ8ßöúã:˜ ï/mÕ•rÞå ÎúÇÚ+:&…‚”ü?)'…êÃÇÕPW±¬Õôk~°™”±¢tz­>­þß ÕRhçh—ñWÿô=Äû(ûK'¼Úö"þÚ÷ânøŽl×íOvÚ‚cëWoõ¦.ï=ú=åpË<é¶(|D ,aÜ•±‹÷Qìc\oé @èæ1±?;X pRó~ Ьoèª+,9‹wF¯!ä3ÌÖ1ÅÔ]›UCÀùV ΫöícÜœ^Y¶p‚ÜçÑÛ€ Z àZǼ¦'ù;Û¶Eþ‘ÂfEè}ßß0ÿ?uÔšÅê` endstream endobj 15 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 16 0 obj <>stream xœÝZmoÛ6ægÿ îÃÐHñMStC:t†µ[›û°…â·¸³×všu¿~wGÉ–i9±Th#6EQäswϧð<á·Ü(aUÂO…Õ)Ÿ”Æ m sk•piMGùÈ8žcÌù|Ê;°€ðZo|χh´•‰PFòcg¥™äó>ðWWðD’$üyGÒï°sòü\òᢓ›:~ÛIøÅ¼óç_ F¯¼ÇŸ^ð“ŸÏè‘‹vA0hÎñ b´Ð!K`œ„ÎçÙ¯,g ¶dœÝ°ëÁÕ’õÙ)\+–0É;_Kßz±ç®“Güâ=,˜K„5K*›Š45Ñš]Xç˜]±¬u ë.`Å9´†ÐÁ½þ^skéÌÍ}s.A’S@|Ânaæûz¯ÙæÃÕ1|çì’ è›CßIq} £Gìoø; ×к13xvÆ~$\OÚ O„³ ÚðW¿_?GVdÞ‚DÑÀCe­0™_õŒùyGñ_:¨H¥}e¤–™H[Õ‘¨éÊ(¤­ÎìÆ¨’a1³:uÀÕÏf§”Â[øíN:_œ«2Ú›Cšv/j“ åÔæò¿Ã”#X ý£ž€ËÞç%º”R;2²Jº²£dvûÔUÇ9á2U‡ü°Z­Ç”T¨ŒÙÅ„WW)¯Èbí¾m²ê÷¼ªA+2 wÐYËBƒœ>ÇìyÑ þÃÉx×`¦~9õ}€{}Ðo—î“g‘æÑï>±#èÞÁ؛ʸ-Œdók­‘Ã~у÷æð;f‹ærH%Œñ‘ˆ OZ›‘qaÏ!8¢ÖÙª•³óUßyc©w"³*òýË¢…Þ>=¾£ÐÜ۰涆ê<^Us}1eZÀazQ´pµ mŸˆg#b?®õöaAùì){û·fÞŒ,5$ NjñfÀ„=.8R>¸R®¼ýqs¹RH¬äº¸ÃÛ÷zròèÚˆJXo ×Õ*¡m02üûáâŽ}—¤‰Àó^s¬IóeZ´nI_È—ªÿ×á¶Ô[2½ÌÑÖUžV±@—Rˆk¸?¢y1º5©ö¤i„~\´vÅ,äÌ-È”Ãw¬{·µGì²M î+HÓ˜#Ë¢µ¤8"P¹;•š+oÈ_Ë»µÙƒœŽ0õîÐZtÒ¥\lÃÊIÀ1gæ„Ds*zXoEêÒ½³QÑ“CêÙ'þ•ÑbPœºò²1Iö‡)i`AsÍ蹜fByæÅimwpGî7—"ƒÄ(K"/juÞ#éÄ‹uÖ‚¹É’ì1¨Õmvh¡Ý4…£ÞK»‚ùJ¾…÷¯ˆ«Ë"Æm{'í†|"ÌrÙFwpZϲ˜Á:cЦÁ:0~‡ß÷ ¯šÑ÷¢ØårâóÇb‡®ŽEVßÐÜ _sÔÚ åc‹Ÿ·´ø:ûÛÎ ëØàןæÈ•©ß‡éF¾ŸT—4Ã-ñbÚ„MÍåÀ…w[¼™|üLF°pj˜˯I+—…„˜G ‹1øl•¶ðOãµÀs7TK•»KPÊ»\›8b\&|b"]‡3Äæ G+Û®Ï4 g?°';àˆœòÆÏõQ“¡“˜!wG¿]Ø'”Kpö¾ÀSJSF¥Z©š#6^8ŸíÏ[ò¡viŽI[!å7g{•+÷±}åva+-ãrÂ8.Êcq¨•½9òÄ ¯bàY2Ä·}NºñIjq{—oh/…V1WöË7ê$›¬¼m-ã¢âu›ñ;’«9z— §²Hóg4¿Yc8„%üæ§¹T©2ªÞí ñzWÆUWC :™5Gkœ°[ÕÁu p?¶„:ÄMX¨Þ@“ TqyÁˆNbmr­•ð:fL^äí|õ¾Lé€Þ*3¡Í>Ìø*½5Ñ™¸îtÖH÷÷ykc[4–Be^HS2ès}]9#¬k¿_«¯+녷ߊ¯+zo×zÎXYçÄ=DÙÂø`ü»¤“ÇUîëkXÍc€Ò‰pi̘}½»Ôû’Þß">Ò³7‘í)šã•©[5Á›bFíÿCVÀêl¨OèÄ×%"Óg„¼»: *cjw²R‰6ª îŽÁr#×I‡,®*xà}PHH¥{«bl(«¬¯×A §ò^Ù?„k,–½}ÔX.™¥Â»˜Wkmž©Ã‚>«fÓò‹ìÒ)¡Ý6ÎÌŸ6»x;Ië„sÿC-äVíò+`Ê„Íb½YởA÷½mùÜ,@J-|T›¬g„Œ*|_3¼z«lÙ”á%é¢ÕÖ“á¢zã1{Z´$ñlÎÊ÷Ûú»¯j²Y[Ï Â;‹yaPYx yÇ‹æï¯¡’ýhQj¤@Œ+ºÛ#ñæ¡ÀÚâU€H“ØÄá¿^°xWÆÿ¯›­âl/Œ®ûÿ \°ÑÿTµzæ?\“…= endstream endobj 17 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 18 0 obj <>stream xœµYYs7ÆÖ¾ñW ò’¸Ê„pÎá·Í±JRIÖ‡vý°ÞJQ$EÓ"¥(ÎCþx^¶» gÀ¡5Ã8ÅÒ¦ûë}@ü–KþÀ­NKž—™p&ã«8Ù\è\òŠ;§EžuĪ”JÅùk¾æ#`!JcZ×Ýb”¬vJ m+[ e|7ç7üÅèň·0ÚÜ åÊF«-à(ˆ:FÂGUJ¥ƸºÆè¤0¥<ÑDÒˆºTÂ8Ót<?ªR*ý ÆÕ5ÄÒ •—§ jàªTÃÒÖÛTY:?©RýÆÕ5@-3 «k„ð…”’_ŽÝ£‹ËWŠ/ö#)\–ó‡‘äW»ÑÿbÌâÿòŠ_üSó‚>¹ºáß\ "À9~K¬ Ö)œqþÓL2ÅrvwGWÅ8<ƒwó„_½r€,âè ¬Á1JiÊ%P3Ìõ¢`󆊄ÂWìk6fß²ïØ`ú7Û³9Û±ÏáÎÙ%»gK6cócúRäN¢¦ˆKóúòíP”YQH–×ÎÁ\YTüÕHóïG8ž»²±Ò(-´T­•8V:ÕX…ŽnØZmšÚr4ºõvë[{P)à÷éjô—{‡Ê`OÛ`€× â÷ðÇÙs6a P?ª~ÃnàúÞ–ì7öÞ×0ÇÙðî󬾆û„ÝÁõ{0äÀˆŒÉaýü¶à^ð{H¨Tð6†+~/`lcá} «=ž‹óŒ®!~™md3aµŠÑ䢺ÊUs]),ذ±ÎAÐSÎ4Ö{7Öœ2÷ Ž\â™Å¢qíÒ¼îšFr¢ÀlaάÄé7ú'E6ÚÁU²§p…M›À†©Èò ½ÔºÜ¨/¦\ŠÂ¸&¶B_Á‹œïâCT[@¸›ß‘Ÿ Ýð¶‚•~lÃ~¡í޶ߥ5\›ÂÈV |70Z5C@_¬.Ú‰þÃõ×—ŸU"³:ÑÍ5û×)Ѓÿ/¶ß=)?Ô΂áš· £§4êõz ëPgS¸¢–öD³‚QÔjp£îñûyÐÜW —EçBÚÔÎmŽžßýhÑh}Ïï;Š%¸ë+B÷æ yO ÛÄÞ<«sˆ§<)ÒEÚ€¦v@h5\.ˆäÖ–‰\äaU‡„KÂá=¸©Ù¼y1ö0»¢ï'ôÅŸÒÑ`y²2…K}ô< S²#æsrÄû¸fAtÃ7O†ó-Œ€ÜyäëžÅ<ø°×@s§¡®1|\u³¦œsÐ jdôâãа¤HqÈL7d•I‡ÕöÃ¥É ‘¹2‰×@ý=!ö{Ò+û¸m;l"•·À£æ,½;+d¦¤oÃS3ÚÞQ´ÙS.žËíq6 %C+7µæ ‡íRä«'B郎°ÐÇWtcö {Å®†1?ÍÈåÓs{šÑ±7„(º†±)YgCÞ4#;ÍÈ·&uÄ9ìôc*];)߇’uŒ4ÿøPð±¸Ѓ>tÆÅ§Ç^Ð!xÉ%σàÈòžœ¿"¢§ÒÄ,l ÏìUØd(è6l×e­¤¯ÙOìPн¤{·zxÃ'ôŒ>¾ ŠÁÍcÚÖÈcp ÅÛÏÚòº‹ö(Ü`²…b¸=tYeÛö°Qäm]|ªm«³\”:6+ÿ‚X…¥…Ï÷Ÿv{j“ h˜“fcÉâ¡Ï¡‚Œ6d«º¾<])âß…äºô‡ÃM¤ ²·Ñ½; ÝEý|ËÒš6óG= FöÇ^MNTá—D©hÑ-!ñ@g Sh(ŸCÅñæICžá®* øNz\æËÛ£|y[çËfEÿ3}qȘ霦±Žšï1”y)ŒÎAù±¬>åp|™¹N 6á©Ýó¤¾÷)<_áé´1Gü·=øŸáÏŒÿµ>iýS´-Í4<=ÞÕv¶Ô¬ë¼åœ¤¨4TìV&¾x8\YÖGóžÇǾŸÑ¿?6tTõ’ï3æû¶*tbþ<Ï7«­ˆßW"™AÙg‰ÖT×_‡ƒ¬Mð„’iÀ;¡#5y;…-kßY³ŽÎo0ºRAöO·þŒzw¿®ÍÞlCyÒ†z!â*ï»ú¬.Qüð“亙xíexŠ=öP[wù­~H…‚K Üõ?Ù8Y_7`#èé Ч”w%güƒó¬oþÚ1Up endstream endobj 19 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 20 0 obj <>stream xœÝZmoã6ægÿ Þ‡¢] fÄwq‹Þ¡{Ø.PtÛn“â>t…b;Ž{¶ãµãM·¿¾Ã!)Ë´’HNöú#EQä33Ï G£Ðw´ ·T ¦EA­3LKC©Ci&µ¢sªµ`Ö´t¤GæùsJÿC—t 0'åÞq=d£5/˜Pœ­æŒ—œ®'ô’¾¼'Š¢ ¯ÏÓÁé«3N§›AÁ´±ôvPÐóõà§ÿ‚ãt¾8§§_ Zâ#ç—ôå9ÂÀ (õOø!J2 ÊÆqèSúù†TdCn%[²"c¸º!ò®)'–œÂYã‘C¯ïy×Å3zþ ,˜–%…6Ì•­9‚u†äŠÌ`­!¬»×КB{÷&æ–Ü1˜7›û æ¼IžâSr 3ÏÈoÐ{M–0ÿ®†p¬Èaз†¾Óx=„Ñ3ò?ø; ×ÐÚ˜<»"ÿB\_ƒ¼`VÞnˆ¿yüá•gEé4ˆ @ <Z3UººgNÏ‚~=ðŠÒ5FJ^2ÜjŽô*‘¥lŒò´•¥Þ•–3k0xXÖ§ýNΙÓp-«Ü0éÔSš¶µ”*™°bùïaÊ,åýc žà—}ÈKäq|šqiÑÈŠ nSGbƒïvÆ6ÇYfKÑçù¡¥ØIThŒ¹‹ o¨_%]¡Å”·û¡ÉšÇuSƒš•>Ü•@gÉ£iü-Á[`ï;^—pDïAíÎÀË*0…ã5~íŽÙàØ%öx“O¡½Oîtó²]%°+¥Î$ÃÊï#fÏ… òŽ7@Æ œçˆgŠ×I¾tïÔ]a((3Dß’ïÈ9yIþ?ŠlI>‘}ƒkÉ+8سD”Ôç»mŒ;À}#ó-VÁIìñ÷Öpž“M9gF‰L`‚Z[!üÄ^Á^u‚­/ëVEÎê¾³þ„e…Ú·ílZ0ûôø3ñž55t‚:ŸÀÝ ô8G‰æ.ÙL)—az[~µ·ȳzˆ_ëígÑ-^“äí3h\â¸óVh©)ZpÑŠ·näóÈ‘ô|àJZ)D¿Ï{Ëeœe¥™\ç÷D{ =z}^ŽXo×¢>‰¶ñÑãß±Dîø¡ï5x>î/C)lЙ ËØºE}y¾4ý¿w@š¸žòˆOmK4l0ÂmîîÏpfûGc eÐ9·æ±uWÔò¬¹©*8VÀ»Ÿí;@éÇ0ŠÜ!e„Z±Âä,߃pŒëpoÞEŒ´G0¸3ÇüvÚœáOå«F:¦ŒÉ"Ø qyÝ ¯kfÎbO©Èm|ó2fáUlŽ„h¼D lp®>WáL^žuÌÞ7pÇï‘“þRH MΊM«ÎÇ(Ý%²5Yß³s‹Øü6Ý`‡#´ë_‘¬ì¤]F®œô¹AYc´ZÇñûŒ¥¨Ý°{‡Y.ŽÐvš›3 Xgޱ+XÇÆOîñ1Ùkt…ÇMÜS*äóû¸6ÇzVoqn¯?ꣲÈ,~v¤ÅwùØa¶ÖÆ·ûõGn ¼uᄉ>מ“µKu3Ü"/–}ØÔ_xë/ËCÞ,#ɼ®Po’v¾ ÌZ¦qŒ6Œ2Gø§–– —³ÈgiA–.9dž£ÌãË\»žŸ.¶h!˜qÇÅ–6ÉQ÷M7 ¿ß·U&Wô¾âál¦ù/{i~?{ K¸ý_o©”“Ì׺ûvî/÷E×\?³·Âœ÷¤?Z[2W¨ mX­;îgKðÊ’/à( fòÔÅ\>ÄQ·GÅe“EΘ*Æüã|õ¡¨øtÞ ïCÌò¼ŠðWñV%5ã\xkÝ?ä­½mÑ_ Q0̓íë…fNt±èŸÁ×¥ãLŠ¿Š¯Kk˜åßRÁçhþm>ÕØž‚˜e\µè¾ýݰ F0~PIìêÝIï7X»÷\xÏn÷"Û=RôÇ«,Ó2¯lãíµÿ+ZÁ×=BeÙÝ5꙾Bä£:ó{ªŒ‰ƒ¥ÌTïŠÁ|/·IçY>­ßÖÁ& ÄŽë"Gx…Ú]ï‚@…¯ò© ×þÅøí³þrñ’I•ójÇ¡ýü9ÔÞ&¤™;ó²kÈB2{P›ÜÆ]ãéøsÌ.~ƒDéW? «˜ÖyûgÐŽ¹ƒjå5¾‡ôPó±Y€À¯ë®#xö6ÿ§æƒ,˜5åCøþ°9jïÜ0žÕ%‡äElqdÚš¤ªäaŽ~BÒ­ý{©fWÒª(A¨P®£=BUèÈ<^÷— àL›nÌhCu¦À+¼;FùÖ¡žÒ!/ s6·røöö-"Ëwfÿÿ«:ÖŽÃèþëZÁ¤Ímû}­¡%¬±Eý¬ÒIòI$ú[ÿ!ûå.Ó¼ûëJúF\bw¬ ÷G­-³¶»=Wuõt÷}ÄË9CFqlÿ‚mQ?Ù”}—Éyaw•ÿþ¾Ä•d<«8c¿’ÃZiÀákû¾nç9xYï«7È´EÌ¿§X–BOŠÿÝÞ£OR$é/‘(™®k®þ³qÉœëRµÑY ßÿ|sŽQ'Ø{ÿûÈîK‡Æè8ǹƒv7d÷_‘½åpŽÉº øØ­·TÌÔçF(ÛÇáLðƒŽÌéÿMº`¢.Ì¥íë±ÄÑš™¢KöÿÊ› Ë¶ÿÚñbôúO§£žùA–yÓ endstream endobj 21 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 22 0 obj <>stream xœµYK“Û6Æ^õ+pÊÄ Cq>›Hº¯&—Ï^J¾ÚO2a]Îï'¿ª'ÿýp°ˆïø—WüòkÅ šruÿº"´ç8‡-4(2'¡sÁùçL±ŒI–³K¸[ºJÆ©ç ´õ#~õ ,È"Ž…Un¨«¿²„ß%ÓÌž´†ÉKè*’5þÁž²)û'û†]ªŸØž-YÍ.àÎÙ3öž­Ù‚-×ÏDn3”Qé^|†z(J „Œ(2 zWHkÙôTüåDño'ØŸ²3RËB”ÆõFjY WºÎ(4]ØÞ¨¨ÕT›“É;¯é°¹õ;¥¥…û|3ùËíC:¡Kð DüþœýÀflâGÑïØ \_AkÍ~go ½…wœ}m¯œï`ô5Ügì®ß‚"ÿ Jä Lãïàw v ¿ûd• ZS¸â|}5ô]†öF{<—ç)]Y!uŽ:2N%cGT¹5¹¹ìŽ+…vÆY› iugLÐwgÌ1u¿àH%¶H-•{¨—îµî*É‚o?\XaÀf½–p[¼ƒí° λ"5–!#9•bž›¶"¿%èhÔìœýJ®#ƒŸoÿ÷‚Z7¤IZŸöj˜· Ù[ºc{Oûù©¨¬ ‚GÕÖº¥§YÓ ¨lˆÖ!ؼÖð¼&‹ã€ï{è© >?¦ùà\ù $[ÑÜŒú·0~`ÖxìF gT"Ñ5í-Ô(R¼#Z’èÞÁY5ô®ˆîÚ¸'*øE)ÏiTb´+ýj­Tâþ¼†÷+â|M{ð =¨\d&µŽ{B¼Éʵ"ÛYÀ³Gþø€/†4:©T˜2±˜Ûð$‰~ÝèúÀFÓs˜ØÓµŒÒX[²ßû@A° V¾&ù Ðq¬í-b9k¡…²6‘Íꯓ+„³e"›kÒýÖŸ‚…àNõ1%¥‡ÒY¢5ÙÒ†PÍl¥´§5+èE)-äemñ†¼Óþ »r’ —ê¹OÑÓñ{5µïiã½&{ÇXXº×ŸË{Ø_ìõ#ò»ßŒóãùÒ;ØÙÑ礮 ‡·à®d7äwïëZk²àúSe4žY™Kmä< sRñ%âû¸b÷ 4ÃׯÓÅ„?×¶îI,ƒ { twÊ=âE0”Í–2±V*(‘Û ï'fß>ôòµÒÊl@kãý½-­p¹K?ðü[ v;wBÖÔZ׃ÉÎ9ÖeòB”™I¢D8I ú}ã+÷tR·0dC©{ݸøÃ¤²„aø›­‹×ñ¼8#t-áb¤;ç»}Ïgḛñt±*#åÉùt‡Ç$;Œ3È{ÿTíçIeÂʨoŽœ¼Æ¯˜YQªs59t¾}H—G¤9µ.¥Ð*ÕmŒ ÝÓÛEÄ…YZÅnkV¡0׫õÞiÇÕ"¨jjÿ¸dSêÖM§ì+ö’îŠ=á89U‚'ÓåÇÈ1_'ÙPݧZÂøæ;'?°#ûY]/(’΂öC6³µÊ`Æ×0¹9÷øsÆ"d€ë?þÖT9Þ­€øÓ²_¨{Ò t‡¶0Àxn¯)Ú¤Go®1o–æD¾&Ö<€Ã£ž ,æM8¬n3÷bÃ÷´öSÈkþîâGºŸ.²ÈzërböDéËI¬;ð¼&fs1ÕŠÒîïÎ6è¦"vŸt`„wÇØG´Æ|Enèd™ª#fꜼå*žúIì[pêMá¨QÑ&÷²O ;©%‰eJcÞg ‹h _‡ìcOE±xÈ›‘Ëõ…;\khã=>Ò7äzè°4À®ocƉu–I/¦Ü[2 Þ®îÕR£¡·qôP Uò‘1Oœö™(€“Z8MñËàèç»Ùe?9âïÎ+ºËB ƒMÊÓ¨¦ÄÔÉxA?™l@,xàþF½˜ü;4c?#}·|ó3‰û…_ZÇ .XÉ,µ·ÌÞáyt@“®€{Tô‚ñP¾ÿ­é¨œï{8}…+ÆS°F(åN–›ß|^ohÃNÙ/½7ªóÆË3îtVÿ]wÞn<'º»ËYáª]ݤÔwtÐ×EòóE“5;N7ŸßeV #ußßÐþßwüô=ùëæ¥ÑÃ"Ûñûʾ bdŽNí¸غÇáJ˜æTú}úŸë¬ªHškS×6nÇÃä¶a5:ÎèïŒÇäÅëà6ó¡Ož£¿Ÿ5çÿÖÇe® endstream endobj 23 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 24 0 obj <>stream xœÕZmÛ6ægÿ ^âZ`—+¾‰bŠ^‘ÚEÛk²[܇ë!ÐÚÞS¿­½›Eúë;3¤d™’ÉÙ)ŒH_Ÿ™yf8ä†ßñŒ?r£„Uw>Vç|QU+´5|έUÂåÕy:Çœóÿò%ÁÂk½÷ÜÜŽ’ÞVfBÉÏ•B’o¦ü†¿½„Y–ñ#IïÛÑÅ‹KÉo·£LØÜñÇQƯ6£ÿýĘTmüÛ+~ñ½â ¹ºáß] š€s]Œ ô“P9áü ö#+Ù–Ý3ÎØšMàëžMÙ3øV,c’9voKO µXó ¾³/ùÕ[X0W;–T6yn’5ǰÎ9{Ãf°Ö9¬»…7Pº…ò Ú¦½æÖÒ ˜7™û Ìy’<Äìfž±? vÅ–0ÿ¾ÎáY²k& nuñûzÏØïðï0¬ ô}Ö0v;!\_Ÿ‚<Îfh7Âß|¾z¬(¼ ˆ¢‡ÊZa _×ÌùåHñF¨H¥}£§–…È[Íž¨]èF/¤­.ì^¯Ša)³F£»Àº°~íWJ)¼…÷x1ú˹*s¡½yJÓö¢–1…PNí/ÿ L9ƒ¥Ð?&à ¸ì‡¼DŸÆe…ÔŽŒl„’®ª¨Ø€Õ>wÍ~N¸B5û!?¬V»>}1á%ÇUª/²˜A»·MÖ|nš´¢ÀpWµŒäô;-**¡6×à9}nàkš]‚ÁðÆ4"]_Sÿéû&Æ«²î± ˜ußwGžˆ¥ÉN÷)O»øÙW"—‰BÛD¢·´>¾ûH–JrQ—ï©vZxE3£\%hdK³Ü$+•ؾ“º¯DZŠ(Ñf‰úƒ5¾CúÇ~û²!ÏvøJFŠÜ¨=ÝUŒv–P~O«ÜE6[T£%°(°£=j¿­9nE¾û@¡Ÿ¯ilhY—I9‘™Š鼊ÖÚ ŸU*aŒï©©ò ¦ÊOHS¹w¢°ê¦†ÏWhÛe≫XjÎßöÁ£Ñ¢ïú9lÀÖ·Ö_÷Xÿ¿†÷_雹5"ËU"Í8–¶QW¸æ8ư }ÝS.ôjîa+Fl[Ú’çÐ~FÌš eÉ€_~8:í…ÉóÄî) :ÛÆïiǚͬíŸÔó3JVÀúÞ}äûŒæÁÞcš·¬óŒÜφK¤ !ËS_ÂÜ @5%n¬"vHÆ/²²¢ò˜úl륤dèÊ‹0r8:<ž8 ›À¬ï"”üº¶{`4êѦßRK%EÕ+°cCÚÛ´5?©õVä.Oxû"–B†Î[»‹¹r8¶Ž"K´ü1Ü“^VägµŽ– ܈z<õaŽòXjóŽ#)>–Z8;E޳ô7Ÿ‘vBùÔâ?³ÿ°+Ñÿ §Óå"Ñ}ÃÒ³Õ,C ']½§dׯ…‘l¾‰Ñ%´Lc ¶m(ß ¬R"÷©ÝÁ”´¶&;ã[Â^²cü¼.•ì²®»ŽOõÞ%~}Kèɸû½¦ƒÝdÏšm uy³jÞ`ôÄd¼xòÝÇôS,áj Šmï‰g3b?®;t üOìÛjŸ»ż5Yê–,¸èÄ[72öUäH5>p¥Z)xûWÃår…ð™Iäº:âíÕ^r–ÎhIX ×›:•q‡ø7¤,¿w)c™“M§5χgc&7Bg)_–±ôHúB¾4ý¿w@Zq½ºã yC}ÏÓ°Á˜v´´ÏhfŒoÃ#dûÂÉô¤<¥CQ YóR•ð,w¯[»Ä!ëœÀ~m…”)K&GNhý1Ý›ì"Fÿ´ÌéÔ»a»ÌõÉ|UÁ!_ºÞ{ï,Ö”ìwBÝÌkv7Ùœ$Ñ8äà[škMãªs;fêáfuK™û)Ùɬð*eŶSç’î†ØºËÆt†XQË¡||¸vµ—B+ÓK»ï7²›f€$Ý’¼oRÏr}‚î´Ë…SE‚1XgN±+XÇÆÏøbF®ãé&ì)%ñù]Ü›}‘Õ4÷ô„“¿Î•­³Ë-¾ËµÚ™Xüî7¹qÂ&7cÝœÈ÷òÝ~R]Ó Ä‹å6 —C+áu›7ËÈÇd 9ú’X¾"­\G 1k¹}pl蕟⟲Ú´ã†:‘EÍ»Xy`G9)ŽdZ8“r&dìû+œÕ¶Ý Îþž>к»7.©Guûòq>ª /¤Ir<ú¾ }›³·O%M•:¥ŽØamz»sy":÷‘ᘬÞþílONïmŽE¹CØ*Ëc¿’0Î㟲ÒÐ)ûpä:®uÇ'·ßúœ+ÓsË>â4ö>]¾¡d.dëþ¯_¾Ñ%Ù¢ö¶ŒÛ†×¥wVwG¥2)lr×NÊý5¿¢ Køýß`©d‘ ïÒ¿æó„t=~OؾíB :Ÿ Gë”Юëy?Ÿ8Ζ°S‡˜£ î¨s”Î÷!/À,ëá¤DZ'œKSÆ<ð4_ýP¦ôtÞ*²ukøwñV© a‹ôFùù ÝÈ[Ûb¸R _ßD~¬¯{/të:ðSuõÂçÓ“ÿ§êé.ªu¥øœUWЏáÏ(U˜?ù®éØñ¦CóÝ—EÀµ"ÏRºôõìJ뻿±{Qíˆ]ÿçúJ'ù²bd endstream endobj 25 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 26 0 obj <>stream xœÝZI“Û6Æ\õ+0‡™v*šØ¸$§É$ã8åqyé¤Sç –ØjÙÔbRJÇó×s™‡€ H;¤We¦TM –·|oÁCÓ·4¢÷T ¦ED“,fZÆtë;D”1™HZP­Kâ¡?©W)(½¦;:ƒ-X&eçY®gÁhÍ#&§s&ŒÇ‚–9½¥ÏgÏaFEôÑŒã{=»|ô’Óu5‹˜Žz?‹èU9ûég`då£_]ÑË šâ”«[úÍ’ Pjf˜!J2 $¤Œãй¢ô$"œ$äÞŸœPìùÚò3zõ–Ê< ‹DaWweN$¬'‰µ†J2èJƒ5þI¾&sò-yL®€ªïIErR’ xSòˆœÈ†¬HÞ_?b‰ŽŒ¬p—öóÅ#£‰4Ó°‘bi$AûBÁÖ’×=}9ô»™éORÞ)yÊ2wFJž±8‹[£ Tdª;£¼VCmÎfo­¦õ«ÛÉ9Ë4¼—ÛÙ'Ǚ̔SÀ5ˆø üQòŒ,ÈÄoD¿'·ð¼†Ö†ü‡ÜA{¿QòÚV9O`ô ¼äÏï@‘?€)(“Âø#|°KøÜ«КÃÓÌgÐWBߥkÏa´¥çò<¥ ͸LŒŽTÌ”à¾Ã«\+°Æ„·ÇeL[ã´Žײ5Æé»5æ}ê~NÍ.¾…jQF¹}½´Ÿe[I𥯤š)À¬ÕÅÏ â ~Û‚´~)m¡g íHv‹ºX‚œs0 ò7¦´„çú­n)èÕHœB϶ §•{ù½…ÕÌ3ó!ô¬ô¨kZ‹í„p‚éXž“ˆ¥Rwx¦Àå­£ìˆtïá ©ó| I „÷æ)yõš¿ÂÏ ^A·…t½‹V{ï.¼€¾¢î_Cûd¼ú¬á},_:fB¦_Fwò´ Íû9Ù¢†rÇÛiçÀñßj»ô<ÚšN—â,V¢‡±—0Æ*´ýÚg£l,G"a‘ú?DL©ìO‡ 8KXªC}_Ó÷û*pï5R4„ƒ¬û™Na*™Ðca$ô¿‚‡8NY¬?æ÷J¡šN†”05ÿ•ûÆi%ÚÙVmï y×ûíဨPˆ¥CìÑq³B=^^Oç@BäãQÈ¢ê}4YlÜá¯+䯄U9Ǻä—q¨å¿Â‡’§HY½O¨CíkWvôô}ÍÙE]Ý>«%´ƒ=N(ŸBÚsž; ƒ]<#ß®Åc¨>€ƒÊ™Dᢇ1’éÒÒ™fq2^Ÿg¨•³vûžc.ü<'¯ñ»¨g¶y¿A»#™­é>Öt ÉSò^‚k¡‡ôt¼¾(1¼­ãê‘¶…w1Þ—y×ãýÿ˜luƒžd:G1dß©GP@×ôÕ4gi:F³:ðáØy’(¯­³Í½ŽÕwÕ{‹H¶þS£w,pm+ÝæTTc`:2a"ózþØØ«…€sih¥KäîÓ ÆZÂHìLçDzÄñã#ØÇbGe’™ƒõŸ ;VšÓ¹IR–EêBŠ“QÈ&‡Ìx 2¹BÔBWŠ-ŸåÇ€ÚïO§ÊTexxò=‘™Åôý$빚7JÔãíȤskÌs×·7±Æ˜Þù…ašX!žÏqJÀñš'lÖŸN6‘f™àllÞ¶„õç€ÿ ¬mkBá~F:k¤hƒ–²Eª>ÄH©Â5 —Ãæ5¢¬ì{–6™™q&E¨çîŽ>C6ÔoÑ[;þð©²çÙÂç:·˜D{‹Aþc¬èñ{‘4èi¦ó•Ä,auáV p¸A:,‚Û’5§ËF…wƒ.?VFÓù‰ã2ÄÈy„,7ψ'G°I„ï†gœ©¤J˜îUŸü¹Ã°•@ÛÒŒ¬Ml¸p°'¬u-ÜyÓ‹¯•í© nQ+‹­M÷¢R –5§9R<ÆSð÷žÏL{OÚÙïçäþ(ù»û>ô‹gpÀS&UˆƒáZÎCÒŽÏž"ëmýñ»GÓtŠ"É’ º4ÇA¹Us ·ív9  `Õ  ±Íô§äGçö­e cáãÆ^¦²p3/ÎÁ¼H3ÆUˆ’¦êÑpdÛž§ ZöÄ;„a¹ä¤I®\YÈSüÚOÏ¢8QL÷*N[Œ!Ý´×?Žþù™™ÐËtˆµËü{ÓÝh:âétÀ[•!OÇËUÇ=¶m(ªêªÖïÑħÓ$#–ôjE¦öô½§Í¬C7Nþ Ö1úqÇŸ°kt}¸ÄtºxÌxPš×xjg~GD“±gãá rèßW¹K¹ÎíOç7I¹`iò¡;{©Ì!ÄëºÔ¾3ÕVpXCÒ¶—à‰Ÿu^»|më*(ÞÃçÎËöONKô½…ÑÎò}}eåV3~ÞFŸî³ÁUü.~VS]òѪČd‡UÚ~/kkÃû˜`X€£¯ 2žÔ¥k¼ö×=¢Ú%Ênª`LÌ€úè‚S›Å¥ öÇa2e RËÚ<Ì{AlêækÎfÔÞ °àfç¾sáo¥@M‹¿@q!mΙ $Žbm±Br¬·øÒn-Ú[o™vý¡rØ_‘^‘ÍoÄåøF6ÛðÉ\÷¶hzlW·oÜIà„¨z׉í÷Nƒ÷œcA”I=â=¯ÔËU¨«•áÛÉ@†â÷7y‰É Áé ïbÂè”ûü`ƒ9G!XA{g“‰¦ÏÇSSú½AñÆOõGŸk«A¿Ø—@ñ,ã- X8in ü©ÍZ÷oú›[A:À†‡zÈŠ1ªoväPÞC’±þ×µã[Õ~àäv®pík7ÖÑ9†ÿX·þKbXS›š£U}2Ú»g=þ Ò=ïzdF”8ßRyefÿöÇqßó5{>FNN®*¶ a}¸¶=Úÿiˆ×u%λ¿•‹Ê¯8ôS< ¶/u—µB»·ZÍI˜ý&ýkËYsþ + i endstream endobj 27 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 28 0 obj <>stream xœÕYÝnã¶浟¡ˆE»hÌEI)zºýY´hÐn×E/ºÅB±Ç]ÿ­í$mŸ¾3CR–h%±²9À) Û"Eq¾™ùfHŽø;.ù-7Z¤Zò̪‚/ê“ £>çiªEf;{üCóx–9ç¿ò%€Q$Iëw3D£S%…6еªÈø¦â—üåà倷!ÊB¨Üî!ª,JɠÞðÐ<žåHˆ~t 1M´™­1ÂRJþb è:8}ñJñév Ej3~;|´üö;(2 ÷øó?ýVóœ]òoFƒ&àŸÀ!& @È%ŒFÎ?e?°’mÙŽqvÍÖl­«Ø´5“L±ŒÂJ¿ z±ç Úòý‚s@Ø!R§VXk"™c3dWl²† w 7p5…ëÜ«Žš;Q…€y£¹¯`ÎhrˆOÙ-Ìê({¡½$"HºžÐ=¼:§^ -é{8Á7?¤J—áïc­w€r¹WóG˜(…lÝ6þµ…!Ö9Iœ>΀øÁXYC^ĵåZs0ÙŒ¶€wûÝêSÒ5í‚V h£‰ßQ^Å«Éù±èr Km¡[ù«!» ߓȷ©H!•·åýÕÖÏŽ2ÇÞ"j툒AÏ色·”äæpqá(´Û5ôìjÊåýñ¥°9)ÚÞs2gDx÷‹žùˆÒë i ÿÇ`ÿˆÂG gYgÍ’f=ë6Á\œFh—0ûpá*Œ>½Œ°Œ=bô*2nE×c³­YXÒâ1…ë…{²?:ØifE¡›À¬7ê~Q{µ"ΡecÞ”î-Â(çû ÙoÓiûÏà;ÖlÛ·Ì„–q_ø« ŸªßÐò9iá;°Y'7UsŸx$¦´ÐÂJa:÷W(mAù‹,7#Ï¢¬×ŸzwžÃªóúYQö¶\Ck˜7ć.¼9%åÏ}²Ï_ô{IŽÉŸ÷×+Ã=OœF÷09Ä¿[hºí‹Xo ס>ñ¾A^}{–_ˆç·”ßæäÓŠ4Ú>*§¥6F%‘KuKöB¾4}/¨QìñlØ'„¶ÞM7|0¦8XÑfgÆØí§)lìrs«„Sïä´Û´Ü¶î4VÍý´;>ïÊØˆ‹ö‚ZF9fFLA©;´ªW„“Æ.Ídõ¶Žhýžÿ¸#µôêŽ&VÇÌù²—åÇdéEñüI>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 30 0 obj <>stream xœµXKsÛ6F¯ºö`|i2cAð‘œâ¦uI2uì6ÓIr MY–C="ÊQÕ¿ÞK‹A‰V¤Œ;QÂ\ì~ûíbAú…FtEeÌTÑ8JY'tâQmhØÏ:;ÙÚyœ{ã`~Eô´ÇñwÔœ^p:ª{SIJW½ˆ^.z>¥»GO.éàטføÈå ýå@”ê'ô)˜²æq–”>!1‰')À¯Â+'%Ï`,žÒË;P–9;:Ç©DQ[3G}‚¨½tÈ4Q¶¡ãgò’ôÉoäŒ\‚Uš É‚ü¿”œ’{2&%nëXª"®^ßê8d¹‚…$Ë"q%,-¸—Tô¢ÓW=-O3Ì\õó d 츳=ƒï z É&R#™0s'p!W2e<åἜIˆa0O©ˆq%‚96ÞÁœ‡Â}Nõ*n„a”ƒm©‹‹ çA¬ºæuÅϘ4LIÙ‘A}â ò޼hÀÛdÓušÖº'Ú÷v˜ˆ%•[?t L#—¦À 0üЀ‚ü4G~,AV’c”ŽaÎ5Œ)Hoñw3+iViÙ¤….ð¥0·ù-ÜÕ<½é5èœà“ù ß±å^2F>9è,p|Ãz¾ïàûŠ6NJ&¹Þú”È!}¹—Côcˆ4âN“‚RîÀ:ß ñèB•’Bí"€Ç¶@Ô®•1 ¹´¸™¬]rSœ¢t¼1îcMX¢Æ©Õ8‡ë¾¢Vafˆ9ƒÿg8»†Yj¨ƒhisXWÏ(Ñ}…ÿycSCà0DúŠÌÂÐô I´ËmfÞ=CcæÐjª`TÛñsœ7Õû÷ø5ZÖà ڰåô 5}µµ`‰¤/<©Gh‡Ö‡DÜ€$ˡň-á2ÚÔ1HR H ¯íwo_ÐtT/;"ØplÏίÑõ’¼.€‘o‘“.â:ÚM(nPò½œ†^$‘Žü7¸ÐÄÚÆ¤wŠñ6…c¥±·H×°M¼þžÛõss¼jç8Gœ¯8G˾ÀC[šêÀ’×’¿µZ+„ϳ—ë Ü‘¹'|HÉ:¤Ì·KH"ìeŽ:&´ [[(ÁµÚ6ÏêÜÁèÊ6 MÞ„&=»F„jXœ×kL,aºòÍágž7èÞÛ<ÑúÖv•É^¸A½T¾^~|Eò„\«\@¯ùKàû­©ÐFo½™||j«ÛÔ>º¶Ù¦ pdW½ŽÞ•Jì† K”ÂÞ3Ë”!‡P“#ð‰Ö@gVXìå4TÇ\8²¬0O>{Kø·ÀÍp‰wÖv#­ý6©*ìFé"\atÆíŽá„T©>Ó…„4µ¥½w¹Ú¦M©cê=Æ ÄÐÝ‘pmÓ ãñ%kLÇ–îí©¡Š@'iKèôŸB¼Ü'F*‰¡IM¬Ó Q†Ø݃1:ôz;P¯ÙÀCòmF§Äú4öP“¯+ly*wéÿ»¼n²¹µ/m¹{Xt…b*rd<ÛJ/SNÍÒŸÚ'³Žì¡ ´nW‡{-ڥἩra—QÙlF®Z;óħxÿ J¥ÅÐl\%fi8kO« éH4†ÚN:8p>|èðC¥Leñ†|Oü-2‡b'ì i¸-Œ+[á|?ðˆî´-Št'ÍáëèÔÕÌôAe‰{ºiDfÖÅEC}Ü-0jÆéÀùÇt´e«8ÐÑļapŽê6dè“?ìÝ\}ê¡éó›t/1Û†éhËVy £p掣Äit­¹ÂØ„G=Ó™ã^ý˜¦·VWݦ»z|xªXƹ})'‚^OèàLÒ—³½ŠbÃyßïÐ'¶†\ûZ;±A}¶m º'»Ý ¯‹pU0Y¿ýÉc–ø¶Mw&bXžõËýbh ²œD8žÙqbÇÚÚæ'8ÒY(ñ_ü¡ØÕöÌ£eºçJˆ|ÀŸƒÏÁ\oŸ>l+×Änã˜:ÔÉlãA$'[ û&KÙV´ƒ?1ùÞo…àß’®÷ͳSÛŒmÒ~ï ãyì½»ønïBE& Þ/—¨SHÒ nÙ ß»6ïvm¼®ûuo†B=í¾Ú5©CÛöýœ´Æ¾|Licxyî7­7¸·˜þxî˜ú‘ó5MX”:.õñ ;mÐksb8j¥òq'ð£Îóü>£Û}è5uKÇvû SÎd&SOpÛŽ¨9Ml~[IrÜõê÷àwâßõÌÌ7Õ endstream endobj 31 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 32 0 obj <>stream xœÕYkoãÆ~Õ¯ì§X9É Š"nÒMƒ4ˆwEZ›–åR帛¿ž/=sg†¤(Ê–Ô,à@0Ãyœ{ï¹ó<áÜ(‘ª„g…©¶|¬VÂf†Wàm¶‡2ÊsQh6ï«+âÊ‚lQŽXe¨(Òâ5qîšë´ó÷ÀÇ~eȦQc÷cÐî¯&I<÷ÙÇÝñÏçèX*aPí".ÉþáÞÞ±/Ù?p¿ ^Vb­kúB<>yM[d"OUÇOÞc®ïüÄi`†Ö’lS7V®ƒ'oƒÝ¼·pö»ìXrÈs,3§ã¥Â³ë×WüºeSÄù€÷E@êÛ\$+é¯}Žl¬aOÏÐÅoä÷Ö"í§}û~À:ýÙ_ß*‰±`á:’–‹ŽsÎî |õ6$ç†ð¯HŽF'§#OQúÚ.K&´Þ' +?§ÁWÈ×à׫ðöž½e_“ÅH3ƒã¶ÏÕCš§YN—AÂXÛ‘á]ÐÃ8¥_ÍÉ£_7š¾!|·!VÅ(»¡Úû®‘bó~Å*¦ü»óMs8}ž=UNùÝGZ d¶‘<…{Ù7_ܽý€Ð€ðpˆ¡a„EȲâǧ`4Ù~I¬¬B©çu8l皘s¸ìÙ¿Vw¢kÛPÄ» véÖôœüßgì&ö†Š‚CÔæÈ„ßãï[ÞŠ„ª‰ ;I„Â$ÉšTYn• (ªî]aŹŒª¹zJOSåq_ã²Á”xå ZÇ.Á~:¡±´Í\`K+©pˆ-Ï"<†OH¡°¿µæyÊ5¶ž’¯)§¯Cœ½£}i¬^êžÕÜLÞú»­Þ+ýWŸEüìkòTªЧêÄ?AÙ|»“‘ꓚܴ9DORR«Ýo­ñ¦jöÅ3Å"øy¡öZ5ÂöËÏ~áôõ[ºÙ~ýî~–O¤”’vQe«‚cÄ6E"Š,Öü+ZØ/¿[•Mol·|lð¯^½éÕ«ÕéN¥¿£@·Ö¤oÛ&ú̹¥ÍæÒÏx”2l³Hû¯P }‰Í¡£ù÷”Œ<¶oÃQÌ´)ÍöÁ> »JmßåÿªQcM‡8ÓÝy÷6á”$`IH–ÔgKwŠ5ŸŽ}@Hù‚#ºgYÞD­eÈ}œtø_¸¢"moY»—êÒ³fâ¸-{X^d¸H¾K’|Ž)£,¤72ÜyÛ\“llÒÁã­è›‚ŠÛÒÎ)¡m³"M?’ê†nîÛjðË¿a×8ƒ“-Áì–Þ =ù¢ÖO¸·Éɥކ'&²[hÅ_5ÏʯtZÕp؈:E™Òœø=ífèlíÿ0™V…°²¿³S>â{³¯5÷#Ì«&Æô¿v£ jÕÓÕ/S‘Èþþ¾ýõëÙAt§¯š €PýºÓÊ%=ÅÊvIZ9ìÃîP®¦ˆºä*w÷¾eÚßg==:c†"Jõwaq_ÿRΈèô]÷­Ùþ^öi‘B4H´=ˆþ%Ÿ)• £ûüh/ùI¹ÍäÞ)]ûû¼gI²È…2}«Ç”sþ©’ :¼ÁاO”Ôé˜sô? |j<³ ÕÓó˜óÓ1ÛB$©À|u0‚½¼Ó0™aÒÃ1â÷p.&µ;”I,1 qî÷tB&U*”âÕ;³÷g8+;L„µû|ÓÌžÞϺùåŽ6ÕëÓÊÛ3þ7zÖ˜ÿtSa@ endstream endobj 33 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 34 0 obj <>stream xœµXÛnÛFݾêZ`P hDk.Éå%hÄIã8H¦Q›‡¦d‰¶™R²-ÉvÕ_ÏKÏÎ.©¥D râBɽ͞9sÙ!銺¥8”: ( s©£œ&uG’G2ªHëP¦IWO½¨Z—R½§)õ°…Ì£¨uõÖfkÈ0VÔ´LsÌ(è”ÞöÞö¨1ѱÔ1Šd¤"âf[T­KÙb=»*©òtDÇ2H“D­bç> Ž·¨Z—²Äzv1«ÙŠE,‚€ŽzŠïg½ƒ£wŠÎæ½@ê$¥Û^@ƒYïÏ¿ Ç¸£Ã¼ )ã%ƒSúyÀ(X‘Ya¦Ä`²ó:ÇDE(¡D*p×|U‚¸ç ÚÑ#|‚8 «qtÓ˜»Ú’­ÔHè½dÄà!²5ÏŠѯıÕïb. 1?àNâH\‹RŒE±)?© W¼‹ýíÈ"Ë56ŠeD0~cëH5=½ë…ôºgúÓLy3#•É1åÏŒT.“<ñfO‰2ÝšU[uÝš½Þ•µ´ØÜÚJÉ\ã>šôþwÿP‰ŒòØà=(þ¿Š¡8ý†ú qŠë{´Jñ¯8G{Š1oжÆyƒÙ'¸Å××0ä0"Á˜„ù ü.á`øÝ®I©ÐêãjÖKôÍÐwàÚ}̶x¾Ìè¡–*JâDÆ¡ª;j“ë8•*Uþ¼\ư¡7Oë@*ysœ½½9ÛÌý–Ì.uË™E)Ï.Ü‘Þt—­\NÎ"©ãÚXÇ p 1Á ’‡ ŽÐW!Væh›è) Í+úÖýi‡uÞÓd¬e¤UÒxDÉ^Rà\,ñ´€¥ °‡°nÁãݪ\ÃoÆìUf–ñ†<Ǩ8†wœs›à/~»$7†/‘xÉþdöý2&Uáùɦ/±¢q[Ñ+Úô¬™¯­–™ÑV7ÐNÛ)ïgµ5H jÛgµ0^=ä´VGUÅí³qÁšŸ¯ðí‹!€£Ìahät )À!ñþWà¶`Öý·Xíó‚ùœw#û:IÒ¹'ôü¸“ñ­%Z׸Ï0>½gã%1b;¨×vª>§AKHŸÝÕ<ç81M{„k'˹eðk~s¿yú…ÏÕ­Àõ lϽ‘ä2Ër~°i­}#¦ÏÐxÍ÷m·3yÜå’†”Û¸õ‰¯É.1B-¿î»üQ÷ôß¾'Óì«M¢QÞír nŒmô÷êTû"DZ†"¬A>\ =‹é)~-î¾^²leëŠýj&>²Ï͸¾œ•Wö–Þ¼.öÚãO9OœÛ½‘»#Å›C˜%kltHÞਠÄÞÌ]úÝW"ˆsÌO6ÁÐ/±ížFÞq0A€Ûö©Ë¹ƒ7@ý$1µáÏóŒ” #ÎÄ –`Y{ÀY)ãÖ—œTlå~ã—¹;ú*>†Ú)†yÓW³Zn¡fïB)ÖŠ_³,%¯ HÁ°g »d Wø-ï”ñîn…;¼âÚ¦/c Ï¥+IúnûKNÙ¥ƒbËžqcÕ1í¿'ùIþ’×rÙ3a«tªçÒ¿ŸrA~\'¼®/>á^zÖ7Áºà‚},o†Ö¦ÚQžÉ´y§¸uŒÅÏø¬Y)7w ηX¨Ó9Ð;pµ“TSH¬nÁtÌùíÂÏ˹¿rµh᪡m³íèˆMuÁ”1¹{‘Åü1Â’0f‡câ¤Ã¿wÒ)r“Úï[ˆ[6A½-”/˜ï¾ÇN—C¬¹®V}ÂìLØ9 áwÝØðnÊD¨ü’ØS¦pbËÆlβÙb"ü²eXeÀßpÿ’ YBZÉuæLtÁÏÁ”ÝéPØ”eCA{/Dæ^n€÷ƒ4©kó’Ïl,ÊÏ š:æ}ñóo0Ƈ+v¨UmßæfÔ¦c¾+¶ð¬j*‰,ïÊ•?<´_Y”á}Ùd3áÃ#<ü„ŽÚäÁžé Pü–]WûÏ¿èûöö'¿`‡fTüØŒZ×´YÏ:=,õù¦¨Ðʩ͖›Y˜„ÕÉdË]£ß£ÓÒ8u>pË~R54ÙlÙ’¹â¨(¤N³Ó·â9}ç+‹žCôøÛMAµÍQj}LXkN9kÙ7Ì•‰êLiíç[×ÂÞÏÓ¾âŒÜA@ªdžfÍAP«ÉÑÃI}•Äç‘ß™Xê©(æHe8^QÃ6/D2NRMèà8¡­EwþŠöEkþ1‡× endstream endobj 35 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 36 0 obj <>stream xœ½XßoÛ6æ^ýWð±jF$Eý° ÝÖu6¬i3ô¡-ÕvwJìØNÒî_ßË>žH‰’GqÓ"ˆ,޼»ï¾;’â—<â7‚ ‘kݺ®NGm##¡bÉÇJ ™§|5ã'üht4âm£\È,i\L²TäY8´-ñƒÊî,]tÚ]LQjtà¢J…1Ièâ¶Ä *»³ sÑktÑd™Ðø­]4I*d+­=7¨ìÎ2ÌE¯=ÔE©…Êã\‰(‡¶%~PÙe ‹N{ ‹2³ÉÀE#´iyØø!ewŽazíÚAKÌÛxˆQñç#I¿§£ƒç¯$?]"„ò›QÄW£7ïÆÔ¿ã?óƒŸÏhÈñ vLnМÛV%Ö”¾,‚ž„pÊù#ö;+ØšmgWlɦxÚ°;ijb“,eø5t•ZÉ!ž£Çüø ÁgïaIe‘$qÇævÆìŒÍak »kX\áî÷s¼› š[Ë\`ÞÎÜg˜sƒHáñ»ÁÌsö/¤ vùK·¬Èrƒb„bŽ2FÄh}^RòW#ÅY •ÎM-3‘€[¡¦…Dg:в´Õ™iiy†u™5]V¬sÖ?m¡”"7øœ¾8We"4úævµb4c•ª¶ù˜rS¶>¦¨kö®*ÑûñA!uJIŽ…’©x6Xqž¤¡^*ÒL…z–F«FÇS!й GÜZñO.cRÞ‘2·Öf`°–´Ó9þ €5E¹6€tɳƒ4• q¿ áuúcDfýAE)izZÇÝ× $ÖÞ/Ü}†$Úç ®¸”Ñ“M¶¡»)ÉíÝ”êO‘“W’í´÷¸‹L…Dç™s~Cޝaâ¼ ÞSõëÐñ êF"HI=~u‹[û›ä1qn7°LnÒ7©Á¿6¸X˜@9³nÕÖC÷7ä~?èÉèÉ—]ÇBǹóy s³ß.Ye+I'º“‚ž&µ' Xd¤V;MîToª¿  &Õ"Úƒ³ÁþÆÿŒ]×pöTSº!ý.ФýÁ6X"“Ü3¡ß»D•ìîJJņÒa“q‰¤Xð'¸ZÙ ôm§nBšZô–TÔ·ƒS USJë¥qA£Ni¹,Hãn›ëôÛ4ðì]á8©:ô¹7§.ÒmµV/Zn]ÑÂ^ùßÀ±Ù™Úgqž‰ GС<Ûò¦¿zÙ6X1÷æ\œ`Ï™„œÛvg_Î%_…s5)ªôa[lb¥:úþHk»•4vOq” ¥òz÷ôLüÂ~¥¥ï)bùˆ»þ`î¡’ª‘T™Ë!& À5_Á»!àOHb5ç”ôY,)Á§ÔßÏiœMVá[P½¾§äU+Ä´^ì™tíèÓ¤¸p©ýäÞyÛþ½]K>k!ÚharßöÛ ÑÜmíÛü™Ó)ƒ»#r¤s€T…r…‘+ÒÛ8îÏiL‰7SǼm0Nˆ³œFžãþº¶a%Á1¥c¹uâɵ­°×.^‰wsŒZ ]gÁž²BзáÛãÒ]GÖ®À8û€_û¶kzLáO;c,C&LÜ^8ï¤wW…ÊsadßVs\!ôPµ )pˆ¾ÝP§æHÜÒ­#W%»ۗΰöS®AÔ6ÈòçŒ2²¬éê[žsY×Ñ”20Ã\ƒªBʼnH•ouEÐsGËö3 {FývÒrÏÖÄk*Æ rá¦é´A¹zÊTßG›‚žÂ¶PÔÝ»Z¾+(ìˆ Aáçô6êÙ…­•ʯÍ7ÔÅʺ7M_Ÿ¯ ÷;mí0<ª3· Χԙ®Ù{×5×d/ ºj×Õ÷¤ 'n0ÇiØO7AßëaÕ °e*ŒŽêlWæÃlO)€—d¸)yo¶ÝÑbVÛ¬* S ¼êŒÕ> z_R`Ëú“ ¯GùÙýî¡Y`®)ÇÕrᓊ'ƒB}˜mN*3W·6ó Å{ø {@™*‘ÊÔYý .´ôn»|×Lk¶êÿžêûTulJF ¾‚ùƒ`¸öoÞÐNú¬fiî;HÞ>ª[[›ìaíþ ¿–ሽ}|ÿ¸p¨1u×å­q]>t\O÷ŠKaÍU逸^2D4gŠdjG”ãΘéj¨>4…®[ÆN$_°gÉ ìRßÀ¢À~ú;cvX|&€Yõñõ³ðۋƈ<öøýÙ2ÜÓäöø°¿×˜ÿiÄéö endstream endobj 37 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 38 0 obj <>stream xœÝY[sÜ4¯û`FoЙDÑÅ’mx*”–2…Ò6Ðʃ³—dÁ»Iw7¤å¯óÂÑ‘d˶6u¶å2ÌN¼±,Kçœï;ŸŽ´ô5åô†f’iÉi^¦•¡«Ð …f%´¦ZK–›TKx©îRSú’®é¦`¥Rëæ|Òë­g2ôXœ¥éfNôÙäÙ„vlÌtÁ2žµ6fR2#b‹-þ¥º?Ê8CïÆF¥Y^ª}&J1YÈÖD©ã…‰ J´ø—êþ(ãL ½Û0 &Ê|Ÿ‰"/™Ôª5Q€‹\Ç%ZüKu”q&†Þ#MÌ5ãŠG\T¬P*¦b¿Á¿Q÷FÉC×yŸqПsNM~ŸON½ô|;áL›œÞL8=ÝL~þ<˜…gôËSzòPÒ_9]ЯOÑ€Rû†í’)¦À€‚C?3J?#’p"HNNà[ãUŠ-ŸÃ½ºGO…áÀ²`Gb`™gØÔYÆSD#Ð8/zc|Ecò yLNÁªÉ–ÌɆ| ß”<"×dIfd>Ÿ³\s+œ%¾>dq(J e¬à–™2ƒ©•hZjúb"é·Ûž"ê©DÁÊÌtz*Q2Sš¨—¥‰*t§W@µædòÚ!í l¾ºB°RÃ÷t5ùÛù! Seæx !þ þ(ùTäÂoCIp} wKò¹€û5<£ä Ü;pž@ï3ø®È®ß?ˆÀ¤ÐŸ+ Ø |nz£Ôpw Wû>ƒ¶ ´øûcèíì99 t©™P¹Å(3,“"4Èu–3‘‹¸_ Ьâ~Zs&´Šúx¼£>ûà~Fí,áaÉ,¸C\âë&I³ÂªH¡Yœu(Qÿ9F¤ºŸÇÕ+H‹Ãž×oJ^}F’ûääÕ3t×ÐrŸ¼ºG¾h#ܧ\ŠjcíÎ9ˆ©NØ-{v¿;§È‰Ü-ßß‹±jä*^"ûíé[uÀŒ™`&“‰û1IÏhÿs®?‡7˜_æŒgCLf`þOa®%X±ƒ«Å‡¢6wwň ¨2U¡5šÊÉ\wðâ5tœ¢,Ìy°¯Í½C˜`ww„dYVzn`¼%ΰ3+˜ÏŽ>…Ö Æ·÷;\G^Ý»óD¦ÌY¡‡X]bõ¤§˜W0éÝ|ƒn[N¡q׸´¦·!©à®‚ ¾…çKTÖ½ÑEÜÝ¡BA±À_à˜5î ÆS® eÕƒø ¼2¦`F—ƒÈ­‘ûi1Ÿ ˜å84 6ë}?&¡ßa¶B‘ËÍåyÒÖ8Lkü>CzÞö{Š>ì¬ÉUã¥[S+ ü%®‡³ClV°R3°y1°ù!ê†Kk“S“)&Í [—pg[jä¥ë¹½[üÛ§‡! ¡v2C¶lØŒI5DÜ®#+ø8µ²F½F'Ö^¶^\ZôvˆÃûWÃèÜÝ[îçÊûcgªÈìΣèR3“÷1N}*¿nÎQîÚHXYÜ¢9×þ>¡*Êëʪ`»c8S]@Qð¦ÕÀúû€Á5zP5M‘§Ö‹EÚ^»o¹A/n!õ""ÿ‰r„>5ïÞÝ-¥d 3ãaÑÓ‚Å0¿ÏFEoƒj³lVœ>¿c>ÐÀψG‰hûÝÝ•3Y&$±<,Fö@¦Tƒ] bô5x‹þ,qw±AøßzµX£Ð]“¶ºífv½ »¿-ëÔÿg*½7ˆ÷G°Š«,÷Ž?íg3„»BS·qØ%ËÜ™Àÿ¦PÊd‰gs‡Jc"¾bU–L⇞“Wìk“þNië‹n +äó9*ÁÊË]ü¶äøÍ÷±y°sÁ»AuŒ0 òçGà.8 òãC3–î¸æ¬;ÚqÛ¨CžÓeØëÞfr£Ý4;ŠŒùžÆÌYy~c–\ø¢È1Î%þÊËßÖ§xí5H¤ë;Ãë>62”eŠKl±Ùù{|ru‹÷¦desó;{íÃ\_úS™8í·X}NÉbå*Ì`\ªBŠYâ¢ÛM»À‘5†eƒõT\]„pXGãˆU'HÎÂ-‚¿qŠ9Êy­™*éwX¦­;NÇÎùû]SÜ~J¾÷R-ÝÏœ¹S/g{ôÏaßßb¶ImHûöGqEÂÕôºnÈ™¶TîwÝV2¬D¸ÈÚ¬–©±†o„büíž”j+— ú(7¹ýa,¦1r}î§M‹{½x w&û28ÎñdbF{çáâÐÍŠÂæ'£t÷}î]`rõ¹×/àSJç|œ{À˜È¾cÆ+F†3#ÿóçÝcTꀟôzç/o±C endstream endobj 39 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 40 0 obj <>stream xœµY[oå´6¯û7€äÇ©uãÜœÌÑ‚s˜‚a*ñÀ ”îKȾL²w;å¯óÂòò%Nâ¤i)ªºwãØ^·ï[kÙ¥h@ïh²$ ¨Hs–òœníÏYæ´¢I2‘zGô¢ª¿KEéÏtG ‚åQÔù¬¯½Ù Xszž,ÊZ¯é†¾]¼]ÐŽŠ)¼Î‚ U1å á(äÑ‹ªþ.óT4³­ŠQÂD©‹„e‚·*ÆqÀ‘9 yFô¢ª¿Ë<Íì™*F‚³4ÎZ#01N¸£gD/ªú»ÌSÑ̶*†œñ\XaAN~³àø}½¸xóŽÓëf°$ônÐËzñ˯`Çʼ£_^Ò‹×!ÍpÉå†~u‰Zà”ÊrJ±4ȘÇapEé ò)HCŽ„’9<Éš¼‚ç„A.à;ÁO£rä</éåï t6zD†IÊÒ4îÉ\‚œsrCJurXÃ_×ðw ïÖ³öŽ€ƒ°ooïØó–¼/Èì\’?atOv°OçðY+Â`¬†± ý|³Kòü^€{øës°ö@>G½þûÍ&’@Æ õw?z#A‘å ˜ƒ)1Lg¹©è»EH¿]HG†QîÌŒxÆR€–;Sº$Ê"g–Dm”%Ya}d-ê´‚ö«;È9Ëø^nÿ:Vy Y0~ÎÐ΂Vg,aWü°e ¢$?VÀ)ö!–DOÃC˜0 rÌB.Ì€AƒÎSáÎLd¡;Oâ#‰ÂvŽ‚3g o©”bžtÄ8 dº’e€àˆk§]"Yt×\Wj·5ð´:•}ßòýÌ\ÃŒ¤ÅR˜»Çät„o ó ­É=¾?á›÷+ $+¤¥’P@ä)&¶5HÒëAV…#µ³~‰nq´„'9R!µÕ̆°6ˆ}ÀO]¹-ö»Íý¬]Bý’>„,òDûêŸsôS÷ç{„¤Ôÿ¿4_#¤¥´gï¶ÖókòfËyKø”#7èWë+Œ‚d×Z{và£ÖsíBŸòLÛ#%A¼¿K˜² {^ñýHLH[¤œ¥ã ‰éöw§Ÿß¿¹¦à˜ a“Ïà{Ûs°äûû—ä?Cbûh2•ctW•ƒq õ A»ÇR  Gõþ€Ÿ6¡@Øßb0Ù–ìFÕ$Úßè€=î·Ã•Š,C"È=*$[iÝçÂEívÔ°3}Rx\égakÓwèà+ËÎ b±@#›AÆPH½×â|æÕ½A”¼2Ž#cK­ÿ"¨Eëð¾“æ›ŸBoÄ œ}¤¢I~GPô„"7 N:+‘ôLfϨÒHVÈa¢*”üÂuBZ6ñ,1Ë€lü$äNÇóõ¾»Ž8C¢ÚµÎ4)4å"Ïm»ú°ÄçL IÎY’`|esX›JM½~ö’ºm_upo*ãÐñ.×Îtí-µµ·â õ²r…G… W(¹M J»ÒhËæp!)˳Ô{>Pâ(f©;ø¼wŒ?aX\…e8*{K̆cª›rq@3•![gÏá*ŠP=ÚT`J«j7dù†lfžÊ¦¬Íûq¥õ±ŠåÙˆÉåÀ9+›@dÚ¾1¨Ñ“]­ÝUõU·9g޳”ô]«É,scre®¬b{ O ›n5t+¬EGÝä)Å÷@ÅÖl°å ¿Â‰Ì%uc*^"ÛÌÛX÷aÜ ¡¥vòN“_Õa(³Œ"8êû&•—.Ø£30©ÓOÉoc£ŸÙ’>åwOòŸP7€#g8ü˜Ç¡4nu´TaTçä•“$)ÕSËTì<¶FjÛ 2ð»FE»ÙD CÞM3NŸ¡Ò‹*6nßÑšÿ¼Å5N9‹ÓtP\¯f×ÚÀßÓ»[[ ¿=};ïÑ5ŽS– &o©ÎÃÉ=M¢GB§ˆô¯:kÆ;ÜÛp¤èì›…á dA"´áWšž]¡2‘Íï‰)}TkßVŸƒ†G•¤ôkÝ‘¸NvzÔÚ÷sŒ2 &ÛÍåÞVâF‰`aˆ{÷ÿˆËµ*ñ²ªÆ0Ü“¶{©±$LäNO;:ÒM?'Å¢PÀiÜ í[ÕÝ‹Jü« óL¡Ph99÷÷Ä´bKK'È-®R¥]%'Åc¡‘ưú`¼¢o‡’ÚSÞ—Z?ÇC³ÇCçrËફlâüU±{ž @u[øþ†z¸ÄkêH:Ì_…¦k…³T‹·Ömù¾S´<:Ïq@˜ –E±mÔmåÃ*Ôr] ½Eÿ«CkÛÜ•HÏZG~Mܦl/rŽºt¸AB¨ò®Z‡ۉ1‚Gs¯5Ã$cInàþ®›n¶v{ÀƬPÞâ§|ò0Ôzsïªb½¤’Ÿé(Oöº`mo9îtkÝ&È-¨îD¤ÁÖ|=ÈÝ{Ÿì~ÿƒÄvN¾†¬p‰ÿJBtÏ‚W3‘Æm›°ÓòÕmÞG< uvy@G­µ{Lß!­±Ó>'{ì«]¢ ûÇâþ2¸&¾“Õû—s çyÀxêÞŽ]ñ5³ßÞ©âS*ê²`} Ƭ3hh=®’§JI{‹ê;™ªÄbz‡)ÍgÝp‘°Dð¿Ön=ày¢¶@PU÷lVèhwXS=!&á ÈEx:$muþ /žZÍLþžž,æ:­2}Ô0já0nÃËŽñ¶gp)H(Vp§@h™.ÖüGæÖô'Hœå 80D"³I°o\?>¥.ã­ìÐlß½À4m†œùÇ……‚ñ˜ÛÛ¾˜­O))Oøwì“Öü Ì­ÑL endstream endobj 41 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 42 0 obj <>stream xœÍYKÛ6fÑ›C ð–XsÅ—(%·¼¶ ‚¢IÜæPôൽ»Neï®ë¤=—‡¤D=ìh+YÔpøÍÌ7áBoiBwT ¦EBäLe9]”ˆJH&ª ªD0nL¨cÄO*šZúA Ò=½(yθæD‘–kj„IESK?ˆAº'DÔÍ’"ÌKCløIESK?ˆAzD˜$ =p¼_NÏÞsz¹$L§†î ­ÿvLÃ;útDO_ šá”Ñ}1B¨€R;Ê(ˆ Èã08¥ô"HB81äPy ÏòW:úêYÀÑ¡X…CMÍôI¢{éP&‡¡¬¡ãyN†ä7òŠŒÕŸdMfdEÁ’3²%s2%³¶þ„X_á*ñõÝ™ D–kXHA l! ––¼)èû ¯vÜd<’”&¸¾†@þA¤L òøw;…»†–ž†pµóŒ­`ìÔ?AÚá9}XÐ…f\#•2%x!×Ê@Ñä±\ÎÄ0’Ó:"##ïHf_¸ßR»Jxòaá<Š ŽI uL •ß{3À>VÏ!!nÐôû |ý®ö×®sëáÊoM" P'ÒCÉìá7%Ô:ïÀX„;6mµ´ÙÂuîÉ™ 4ÃX$ºß+ø[x“V û¸M„ªêPoi›«¯fvK†%H‡w†@Ë9¬6ôx-m2XŒ70²ŠZŒvüc‹Ô†ëd÷vbš¥Ð¼dÔSò¹åš\x ¿í»¼ƒ„uçà» ã8ud7ÞñEôn‚ZÖ^ÆŽMñízO¸Œ¿²•€þæ/èϨßJ¯1Dv}ë” \ÇŽtkª\uÀ F0a„wƒ-‚?Gèc|ºÆb2-¶Æ¶Í¿oÔ¡øë]t‚z¶òÎ(|9²sœ{CÈÑMMûÙ º¿ü@>ÕÜîÜÑåt‡Wëe¾6,5šk¬–+Ÿ>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 44 0 obj <>stream xœµYko7å¢ßôZ€ûi>æ -Òbl´Mb4 l,ÉŠZÉR%¹nú×󥇗ä¼4#l‚5ν—÷qî!9æpÉïy¤E¬%³D$yÄ—Å@‹(Où‚DZiÒ:â•M+ Î_ó[>À"7¦ö½™ Ò±’BGŠ_h%&ØLù 1x1àuu"4f-]”±ITuhÄ+-šVzºè¥{º!E™NK£(‰Q‡ZF¼Ò¢i¥Ÿ‹Aº§‹&1"ËTé¢Nr‘J]qh$(-šVú¹¤ óH¨4ïrQ+D”䥋J¦Bæ¦âÐþHPZ4­ôs1H.*™‰4M ¡!¥äÏŠ®³Áå³WŠÏ¶)â$å÷ɯ6ƒÿýLÂ3þÍ¿üNóŒT®nø¿¯È 2À¹Õ°"‘.d˜Q* N8ÿ”=g#¶e;ÆÙ[³ îvlÊžà^3ÉKÙ%®1}+ŒÚ‘'¸—Ÿñ«ß0|¶L©c´¥>çó\°·l޹.0ï3nðk†ßs<›ö²mT.`·aû-lîÉx|ÉîayÎþÆèŠÝÂþwø±k&0¶ÁØ¥¿¿€ôœýŽ¿Kø°Â¯;Ȭ¡»f_“__>Äs)ÒXÚº‘ÿÕï—Ï,*²8VU" ˜ûŒ¥í­(Ê„Nu}úŸarŽ©lLÐ vÚc]b† eR*r$´JÃ@@ƒΓ´*—Š4ÓU9‹ØèR&@¡"Ó…„ÜÎî|Å”:R2ÇpicáqI{…Æ£F)›£]¶ø^âÏÖeCmôÏìŽñ)‘Ñž¸_ÓÓô§¸®©ÙÆø¾%ÂZ±Ò²ÚK"®1IZ[7„ɵçÚkouDX™áÙÒÛÚ1œ}çuFø›AâOû´,àS)2ûënŽ` ÎóÙšÿ~ ß6˜iI¬!2wP‚È ýúz7ÆÄ5K²8ǧԌ(Œ%ñMÄR#zÂ) N¯37Óמ¸{*ÊÛ2ìÐÛÂ'nÊ|ø#˜G±¹ºmÈÁ¹ïÑi%„!ÕgDá- 3$$ì|h5פL¼ÿ#sïü‚fhC”EËŠÒà¼hŸY”á…8@Y‡B× \­}è@Kºº W!Ô ë±Ç¸,ºqw·®ñ=‰ÍÈê´'{U­ ½ÆŒ*ïÚkLÀCsáWy× ÛÐb½ æIu€zBîT:ñ5ÝO)¡¿ÇTµ -¤ÎÁà 0ò)úíµvÏ][žYÙ‚ô WJ¡tîÃm‡Z·û–TþcëÛZ™wqç›Ä¹éˆ@A7fŸSç÷F\—.ð âv"E=÷æ»%îÿ8À“Ô`j|ÔÈïªpdLÉ¡®|ÿ¯ĺ+9,’蚦$¶)û‹’µ#‰{š§lŒKéPå8œxÂã0Ô|X)ÐÂkJúT?‰±ÅR%¯ÛÉÊ…'˜-1N´U;v,¸¥­ dØí ±óîAs!÷ ÇG©òZè¥{~‘(–ßQx_ÔÀwʪ='>˜ѽ-Ò²£FzÚHɘhÐ"mE+õ¦‹Yz…  PkÂëЊ[OAþÁU¶NW{œÖ¯W™ø@¾mEO.<á8®¬ºb—§LyG2!|·>;-{²ï m£öíaõ{SõÖ¾KPY"²$ké}°žâî9º@wöeü½ ìæ>U±ªÓ-Æ©HÒx/Öè(Oöû nU‘…ø1±Fg„¬3V}ºE‰(Ûç·ä¿=e/ék\»bÕ,C¼ˆUÙÿ²ÆŽã2#’ѯjï0ê{ÏòUPóÌc® °VÉ"¿%çôzÁþýB‡]ß°Û’Éü§íA:ÿµ·o endstream endobj 45 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 46 0 obj <>stream xœµZ[oãÆž }Òoh›¢ÙÔsH/ m²Û ’ͺ݇lPȺØl%‘+Éënÿú¾ô›33äð"‹ò¶DšÃ3ç~™¿åàq(TðDe"‹"¾v qŠ8ÍøŠ+Š4Zq›V],+Î_ó Ÿ€„Èñì_··“´’cÉ/džˆH)¾]ð%9y9á-C)… ÆGI¡¢Ü㨿â6­ºXÆñè kÓ\¨,ªYĆ ø‹‰¤ûíäòÅ+Éow“@¨$å“€_o'?ÿ9æîÿó5¿|òŒ¶\/ù××Ä!à\ïÐ q$"p€“Xœsþ YÀ$KÙ%’qZ¹ÂsôŒ_ÿèÀ™ãcq˜Æ´ÔÅ_ÄÔ(1ôYÇ_ØWì‚ý•}îÁÕߨŽ-Ø–ýwÎ^°{V°9[ôñ"UÖQñ¯?½Ð†ÈrB±Èí a Ò‘¬WVüÕ$äßNôzšI2’™Èã¤É\$yâAiO‰2Õ‚rVíZs2yk,m¬oíE8M®pŸ­'ÿwÿˆ™<¶x ÿ _Î~dSv õkÕ—l‰ëk<ì?ìϼãì;<ã|èܧlë·0äßaDcrÀïñ©à`—ø#Þ§–B¿\â:£8YS¼ÌHCš«7ϹO3àX,pHˆU•^½%ar÷ÃŽ”» Àtë&D yGBo „)ðhUxx”øÈReVü¶Mw$Ì7V·wƒv?'‹OIíœm¡­Œ «ÓùÌ”qþ‚¨èªíº!Ñ´Á$ü·då6ì¸è€%G_Œ=@«„VôçµûZaŽ9'1!9Yçµ—QÕâÃ'ˆ¶åvt[!µL¡(³gÇî?üŠv˜0Ñv–êå ~<Ö´Iì\ß9m 2±Ž©&ZÙŸórv³ûÆÆáÆÚÛÄð–Ô¸©¿°ªÐW_%`ö¤† í™R-¹§Ø®úâQš‹Ûiî-ï×”­/¿™–?ŽQSr+ÿϤ­Š¸X ˆúrÊ‚.jw¨Ø/ìS¬ Ô¹GÓõX>Âm°sÄZú¿:›T"ŒœU¹ý\POÐþèÈ®¬Î—”9ì‹ÓéH¢¼G¯ìÑûh}Î3'Îô>FWF–EÓ•äØM3ø¾cü'ù_ŒV™¸ZÐå{”¯Ì݉î*Ñ›E»–DÀ×—†§ä`769»’mÒ÷;bº¨7vªÈ‡=>…šŒÛ®Ós›âµZVÄ“¡6:Ï…9z¹XÖ=ÉžPn¼ÝTîîÑɹçÒ¥Çúy+¾½Ö•r£'À¨Š¨³\I«Üöš3››öˆ©Ý „ÔB’­PPŸJö‡~SÏK6Z+¦;[Ûs ýþ¼9Öiˆ³±g;æN¹ž³?Áá®qu‡@nåeÕÐ5ëN§Eu¼Ù‘˜ã8«Ï@‡îÚÝža³ýã‡ÏÚ-?gúŽm,yc-¸µÓ¦í¬×>)nÃXÿ"&{§<íY¼áõx¬?¢t <šìœ,jxá5¨mƒv,?X¦4\Üb=eÊ0y}RQ¬­»  oÔ1õÐIEÝjÛ­Ì:*ùes>¥®ƒÄøŸ[éISéÜóK¨ÕwPLf'O 2 … ‹è#/ýI™¢ØÔFø’Iö’Vë…ø;Á5†Ì‚äþütšI 9ËÈQ4S¬$,¯©w•ì « WI§ô»èñ•%¤¾þþtU(òÐé9ÅaN4—Q‡GÍõqg¸ÍÁÝÅÇs¡ƒ¬£QJXM3<õõ¨ÀÛnÐãÇ2È„”ÝÓçYÇ™×4Q¹Vèw䜅m{Ú/4MžëSö[­ÂfÅîOCMØüœcòR %óÖÜØn'|¹›B8Ì«ŸxŽéOÚy h¨`ê½+ÊÅþðli#3oí¸¦÷7¿ÃíFýæ’!¤œÃý÷9|\×Íà7棶lßw¾ Ùƒ‘$ïƒA ´(çc¤NbÕ©î8Ÿá8 ´,‘ÔÀ@ëð„PxÒžÿ¶3Ó0 endstream endobj 47 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 48 0 obj <>stream xœµYYsÛ6F_õ+ðÐÌ4 &‚¤Üétêæh:IsX>$y%YVB&¥¸é_ÏKw J´"ËÎẖ׷ß.a~Å#~Íc%ŒŠx*cÑ‹Ÿù$J„LRžsc”H“¶ÿR¾¹JÎù?|Î; Bô´n‹Igc¶‘‘P±ä]e"M^ŒùÓyÓá ¥ê‰( t”Q*², 4jq/囫짣Ÿ]騤½ô&“L$q¯Ö06B›8PgkÀ½‘o¬°Ÿvnr­œªg*å`~EüYGÒyÒ9~v&ù¤ìDÂ@ ¯;ïwÀ‚‘ÆOûüø©â½Ò¿àOú¤-À9¾Sb-4(AÄ" ƒ#Îb/Ø€•lÅ8[³%ÁÝŠÙ Ü+1ÉRv gCG £8r÷ÑCÞÿ‚@g¯a‹He‘$ñ†Ì!Èé²K6Y][‚Ä®&p=…gã½ÖÖ²'`ݵ/aÍXr³kXyÊþƒÑ›Ãú9Üuá8`çLÀXcÇî¾ ³§ìüƒ ¸ZÜ%¼»d¿’^¿¢y$RaÜHÿðøöb"ƒàgQ ¦hÀ 2FÄY¯ÉùYGñ?;èH¥{ÁL-H€¬p&ºDg:˜…Õ™iÌòÛDV§seQç¬NÍA)EÏÀy8ë|w¬ÊDè^|Ÿ¡Ý Zqœ •ª¦ø×°äDa~Œ Pì·²D†e„Ô)9J¦~À£‡{IÎKE ”ÌC|­ê9 Áœ›ð†£GÓ@«"K}È\¥ ÂØ6¯Í¹®’dZ˜Ø;·§(¹rrò'L¬Úy›@Û°VÕvÅÚ©C,/w©qBÆsxÂÙgùW%ŒÎ–9Œp8€Œ 0Ê- 8 -CÇ®swÆÙxGU^rIÒæîý’®'N®5†1×ω»Kbï%Á~ER/C.Úa¶F<gö,ÃoAù‚QØ–›’Ð’lšü7ý}Å·á]„ÒÈPzÔ™“þŽÜ„®\“{ºLøÇ‰v=éŽÈÔìGpß@Ξš$™¡¾Æjòê&›÷]-•BÇÞ«ÜýºD °® cø{’¬ÝõŒ#w]¸m!òóíµÚ‘B˱©ºµ6Xî,”GwѰ'ÚÒgq£>¯H—M¬RaÌv\r8ÎaõÔ ›èþ÷’0… ¾¦t^¸ÄǺ‚ ç³$'oL(ñ8{ÿö è^ËIi @~ÿðO{f;zã:Ø¿ÎÍY P‹ÓuAtQZ}gÄm3b¦!²ÜaÈ·íhZq7Ö5tÔAÚÍAÊÏ_?–•â!?â¬ã?¼*è;’Ó<›8È׳ƒyM¤séÞoúgD®]Ð3tä^|k ý—q⠶̃g·ŒÝ™g ÿcaƒ²r…3gÎ ÍBâ)nˆ§ÆÈììÓœYð£#UuJg@!]ö;{ Ç?àºO$žSǼ"Hû‚Q 0R‰ï%úΗ¶ŽÐÃÝ]R•UþlªéK>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 50 0 obj <>stream xœÕZYo7æ³~_Š&€E-¯å2H[ —“ Iã6MȺ¬V‡-Év\ôÇw8$W«=RÓvÒ„÷ ¸ÃoæÎrfM/hF¯©L‹Œ›3-sºŒJ3©]P­3yKG|dQ—± ô-]ÑLÀ¬”ÇͬW­yÆ„â´o4g¼àt3¡Súº÷žÈ²Œ÷8žg½ÁñNgÛ^Ætnèu/£'›Þ¯¿ãøýö„~´ÀGN¦ô‡„(uO¸!J2 Š ÆqèSúˆ’N ÀY㑊=Oà^>¦'¿ƒ8@q´FaW]²“'‰¾• e,t5ß‘ïIŸ<#ÏÉ  ú™lÉ„lÈ—p¦ä˜\’9“IS~ƌΜ­p–êñ§cÇDa5L¤X‘Ià^(˜Zò²gAßô}Ñsý¦à•‘’̪ü`¤ä–å6¯Œr®" }0*²Zg³×»ðL€åé°“sf5œGËÞ'÷ž3iU à-˜øø£ä’˜ß™~M¦p| wsò'9ƒûüFÉK¸÷伄ѧp’_‘¿‰Ȥ0~ílíº&ew}8ºçôm oîû0ÚãÜt¡—Æq¤r¦‘r­ ã†WÇY¦€ÃÊ8­3Ƶ¬Œ |WÆtÑýšºYâÒ¢¹M^ªÇM•$Í G Íø¬g‰†ÖG¦(Wä=,S8É,|½8_à¢qWã½ë.ÕæJ·Åe2VHÝÀµÆófߥ »í¬:gBYx^€LçY;ð±÷è»ïñz××p=„ãÜÀÕ6àpãGèë„xfý ôfN²t„°LUíâ¸9œç/`–-y’.— ¦”mh>Âóä^‚܆ÍyX¥Í™)y÷¨¡<õÑîvpµ½{Üj Ö©LFž[à -ZOR‘ŸbxØ"˜ ù¡ev]xûÀàQ:ÞB2¡ëžÛ%;VOÁ`͹ý¸1 wZ¬ ZºûK4þ!ø6mï€:/X®ëþÛ)®GŠQÕÍFaö5Ì7GʯÓ _ [LçVÏ Žn×ù¢Á™¶¨ñïç0nŽDm‚|Ð,] [¼î5±9ûO‚ÌÖM‹#·{ÒÇþéˆ%¼Aò¼áçÇxïå¸ë_Ýû{ ®!F°:úoÚbR:.»“¼Ë3vàë’ÇjDtïöø¾ôsXüøóAü<ËÖn„Ú¹•áìüm¹AÜ C>L±Â;?vé"rºNnWmdÐé dx^;Íࢺa¼¥\m5ËMÃØ†¸g™øePœ7Ü/ÅžmÝZÏÀ ¯ ;Ĩ-znzü×¼´‹¬™gãõ‡«¥ë”ÃÞ¬ˆ,î½­æ‹ér!Õ*Š.ÛÛ_·hÝOºZ:vi˜°‘ç[-ºô9„€LF~6û< u\ÒhM@~_?QV2—lÝÇ~yS\{·CÔ:>!b_:nÙi¦> ÇÊ“™ù ¨³« ðzö›÷?QÞÿW㬒°òè/Õ·ò½W€’§qúš;W³5Þ]®} ­ë™ø”_=02q¦™¼5¾úÍÉØoO’%KË™·]•O;ZÝ.ë°«îä,X¬£¥karfDñ@V*Ãt£JÒv ÷®e< } Ì|6âö^SÌW\¦â~w#FpßÇÛ ³¶ ;Ôtm¤`¶¬>¬p¿â*W8»ËxΡÅ6lüÒgᓪ+æcÆ0ëÈ(ùЏœã“·t­2ÉLYyxù¢°Œ«zeè¡ZâšLGoÓIlng<êdÜsÞì÷(cïÖÑ9q5Y—Áœ!æâŸD_MG­-³©”¸ùo°HÃÞuòôæœ1 ö9r†ùÑ]yñÛls®^†îlw†soË1¾>V„êɺÔùªÌ}œ¸©ùÎõ!O[ÂÒõ3J‰GÛž³ŽÊ˜å+ý.j®/Þ[!«Öxöoœ®Ú`zµTðœñFÍ$V’&¡2³òíAeªM³e¨MUut Yxþ‹Æš¸÷ªÍ8ÓÊJô†»Y~ïŸÚö¼È™5u¿ù¿ØžÁd£RÓÇ7ïaµ­ÕbéóiÌ鮯ޠÞc@p†1Ì«Ïëì6C~}Õr‰è†-<ÇxXo1p]±ä¿¦lï°cåJ2^tÕê•Þ}äÝW_÷o—Özý´¬Ö VÜžûy‹¯ñ½Ÿ¥ë# ¦ËºÏAå:]—ÌÚ®ÚÀ5V¸-VŠï¯U¥%ÖÛý^¡Z!O°s²Ö2Y–yî_à.3¶+×¶‡ ÊTÙ ü ÙvØâ å:˜aŒuâô/`Åš8ÓáçNb±?CÒÖ凘y‚p$éc•íýçð)Ò;l¡?}³¯5˳ú tßÆÜšá¾3)ší¿C» “þyàNÏü 2’_l endstream endobj 51 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 52 0 obj <>stream xœµZmoÛ6ægÿ ¢ûÒ6#’¢^‚uà ôÃ6¤M€}XöÁ±Ä;²4Ã~ü,ÉRjª)Ôè…¢ÈçîïÎåw<âÈ#‘šíFø«çOï‘Yn@„DÑÀCeŒˆ³¼lYðÓâ¿P‘J畞Zf"nU{¢Jt¦+½¶:3µ^žaMf w–u`y©7J)r×ÉÍà»sU&Bçñsšö jÅq&TªêÓŸÀs˜ ×ÇVNûµU¢ûñA!uJFŽ…’©oðlÀæhZEí é¾€Ö1µãû;XcØ{ç5´é<›pÞ’©‹–¾bgƒ&_Ûxz¨di$2m:$»,b rf Ø8Ð-Ù áG W„y -è;¬L(ó¾TCsëttMÔ/êcî¤O Ì!çìü¼ý_µÏQ׎ÌÄ"J±ú!Øž—ÎEœ$âÂî|ëFì§ ÿF–mö‹¡_ùU8Ba^r˜MÛNm}]ãáh1 Juo´‡`}N¼&7"I»ìo×½êÀú-žÀû‚¯{pƘ ‚¡,êeƒþ>·×5I©Q?¶ôܯzîZrú,«ód3-Á‚Øë†‡©S¡ò};Ê‘ç/!”X¸„~å‚Fÿ|KÏH+ʉ|{½× Þ®Øù+j†|–] ŒB7õnáø•I¾o=Ä¿ÓÏ%ÅD3·šÆdkz;&Íí¡ ÇÕ‚<}’E/Õg¸jÂ÷ÎïèŽâDH.#—å@#k!pàÓ}ùô"WœkYõ¾~¦¥n¸«ÏŒ)¿XžKŠÚmv€º³ñ;²áv‘Sö{«%±ráûáu…¹E8æ4ywêò°mÆ®cŠÈ1ZS†·uèÇäÏl¬\´Ê‡ïl8§xø†äµ9zÂ=Ù<eº§w J÷Ãs¢8‰…Ž<;þ`ŸXÖ#3€8Z¤r?빈~·Ž¾Ïc i¾ì¶çy;»£Çe¥Õ3½ÚÖƒï ’o¹¿q¾µõe’Ê)à‹öùíÆ‘¹êªD¬€/+Ò@Õ6eêvÎ5­µ‚8Ç]hYZlíø;'nȦ¶FtI6;^Îi\Ó7S’«°œ –GçRhåí ÚÚM²!ÑÏŸ¿ 5QB6ê5~mme8|Ì8¦¥R‚Œûkí;RõQSä ¹‹V뗯ñh%ò²æÑ¶&6TÝ]³æŽÙvAù¶¯>¡]¯)Ÿ_Ðý„Þ¯*u¬ßÖ85¬ÍPÿÚÂå‘™Ðq«ñ˜¹å犮vϸqu†²à±í£“»½×Á ùéY­3Y8êH‹´³rÂYµ²Q¥Es?ñ»È {;ö8eïÙ[’zÃ&Á¸T– ï³cDEfënaÖªØåúöo­°:ë«•ÆÂ´T¢»¥UTXÐCÖùçëÀ›¬kžÖWÔ>ÃÓE÷ê —ƒ~ã{*göˆÑ_I“(ÑU+Øž›~Í[Nz´ëVþz øjµµ­×qØj \&‰´¬ 8>ŠL„|²Þ±‹×Q¢éÞmWíôR[{ÖwÓïfãH SÖEfå\ÁŸ·HQ“ÄÖ¼í.}_2váê¶Ž™Ád–ˆ<õù¡ä‡¥NØ/ìŒ}5UB—‰ê¨ Ò¹õê> x Ñì1ÅktŸÍ¤"Mó–ÙîJ›Y.o{D4ReÂÔ²f;bxÄ!¥ù^®<¢8»ølE÷ÍøÌzNû Ǧ•ßX-غ1Š2‡Z’oµ¶Í»Ú¬0\ãy.tKÒì·ö{ñXa^:h>€±?—­w XÛÏiCöTÀãCÏb‘væÙ‡è×eA7zÇ«fƤ†eo™FBí¥Þ£=] ‡îÝØ%ßvãëèÝ£˜$’¨‹sâoÓpºCß9t|_R,0uñçŒôeÉÛ”íÍÝ©)ÀÜÕ€Û~ÓFðAÿ ×7ÿ\Vw endstream endobj 53 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 54 0 obj <>stream xœÝYKsÛ6ÆY¿“™N› ˆÁzhN3i›‡ÛšNF–h[)m)”5ýë½t±(’cÑv§mÆc>€ÅâÛý‹E?PN×TeLgœæ…aZzŒÌšœVTëŒåfWKT¥Z*JßÐK:€)X!et­Ï‰´œeJСŠSꤧôåàå€FµÔLk¹Á¨rÎt„h»% ªR-ûa Ò-F£XaÍU•LJ¾(aR© í–0¨Jµì1Hï 1ã Vˆ D&J®;€¶[ *Õ²Ä ½'Dˆ nl‡g€£#¥ ~D•hØnÁiÎr¡Zp Ï9§G÷³ÁáÑkAσ&ÔÖNëÁ¯¿“ÐG¿;¦‡O2jqÈñ)}|Œ P¥n„Q’I`9È hœPú É'‚ääPlyïò>=~êYÀ±Cq–+lJ5;­’è½t¨¼€&›èxH‘!yJ¾'Ç€êg² %©É×p§äˆ¬È”LH¹­\ª¹óÎÒ½¾:r<ØBÃDŠYîÖw¦`j)Ú–Š¾dôÙÀµçVt$¥°¬P&’”¢`¦0)&ÒêH*°š²9|h˜öÛ[Ü(+4Üǃ<>dŒByÞ€‹‡J^9÷;×ÏÈ)\ßÀÛ”üIÎáýú(yï 9ÏAúî#²„ë3 ò ‘™ä—ð7‡;„¿u¢¥‚·!\Ýxm5´ú÷!H7xoFz¦™¹ãH¦2åZåLä¢+W0vä4¬X¡eGÆóÝ‘¹Šî—ÔÍÞåÈÝæ¥{­»$ifÝnf5ƒTìY¢Éß–Å9x{ŠÞ¥äø°F—Ð[#;îù|·ßÛx8 ¹]¡¶/nØ2­Ô n‡éÔ#)ï&Æ& O..|4`4,ðy‚m.6F˜°­„#HʸÇ¡Ç]ùƪ}kÃ2i¯ðôQÎÝ â´†Y/à} 3¯¼5΂IŠm-ɸ –¥·õô|D›'%j;EíaL ”`FeWX0Ý3À{€ñr‰X¯÷ú "œ!¦Q‹x Òe|Yθڎ‰gx³œ ºæéàš–†ë’üs/ÀŽü>ÅÞq+í"©ÂœQ¢­.¶øÜµgl-q…TäSü"cJWø÷ù‰üYÑm`+?·ã{ÃûÔÇ;ÎÞJMã' Lgn¼“­ÈioԦșÕiT ÁS”¼ý*W ¼½oÎwnUÆ>sÖ­ïæx¥7é:ì¿öŒ±ÌèÔ³CØ‹.gB6‘0F#D Ùl{—ð[a”s£>IN›nŸôg– Ê#=¸Ç0½#e~‹‰ Ø?®ŸWPÛ0ï ‰%n¢—[©ÇµõÃò™‰5LlÂ:}ÊkœÈq½Æ¸ñ=˖ŸXÈo!†è™€äÍhÆÁ¯PÆÅÒ%f˜ew…FÝl'Õ™`B…ü#båÓd»{3ßòŽ˜Ç‡˜m8쟾9ôŸ\E$ðé%ÜÓˆ¼öÒÖë›´}óVþŸ >ÿp£•£9œvÛÕým„™³nXì©S® Õ×xjã—§Lâ)ÓzJýëžRyÇ»bËSf—§n·€”«.Ûøa² šm„›ÙÔ—ÂÍbša^Y5’wü Šý"3Ë ïÏÁ0¢˜af‹‰6[DË„héßJ¤©„g³ƒÜ.í›Pð ½?¡Êñ,êÃ|•G2óÅ MoÍÒæ,—²ã-—Ôƒ5Øîô~lýÔ]n©8¸ºí!ð܈aÚßi.a/1{#Ý9kÄêuh‡©Ô]- ÷B:ŸúŠú`¯ ¹WQιlW¡è£ YìY ï°<ü‹p -qMœû•+woS¸¦ëh®´Äh\u eïɬÞ1»œµÃB3m³ÄBAX/÷pgÜ,a)vp†ËèÄ/£+wãÛ›!Éú™‘YÃlûå(Î0]co ‹#<œAû…7ÈI®|;öG1Ç õ Ïü1õ™ ™Êåæ”·ÂP¡*,›CÞ µï”ñØZÙÓUpÏD—&å Ü +0W鯼‹Æþ5º¬DÍÿïÀfÄÔJ öŸ¡Æ#©ÆÃÜŸpš¾æÓè^øoî,9ÅóFM’êñ.ÝyBõt#(1"oóJgoA÷„r¸)P\ÜÕ‡4öÔg‡î¡jý5è:¿K##œº§‘J2žñÖÈ«¶‘5²UµË ÆDé¿C5=¡ækÇ×ÍÂG`‰O¡¯Ä¨Cgà™¾Ñò)†ôs{wE›=Ý~|€L,¸º¶ÆKªº-£0«¬ý6CñKÑ |úöþÖÂÂÝæ_Tý'rÁ²"ÐGÑ’^lR 6ï.¯Ÿvœý[Þ!#ÍÉ“`DÚ0Ó~Rÿ/×p:a¼È¿„ºQ€>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 56 0 obj <>stream xœÍXßÛD^^ý7€´âµR³çõzmïIÑÂEQ.U¹Ä—|I.?zÀ¿Þ¾ïÚŽã¤I:5¶Ç³3ßÎ|3;.à!äq$tòÔ$B«„ßW‚4‰2¼àZG"M:%nQѶRpþ Ÿò.„Qjãw1ZÚZ†"Š%ïÉTd&勜ßñWÁ«€o@LL¯i 1‰´H3ÙÔ!q‹Š¶•à zí b “%» ê ;Šu ÛRë ‰[T´­ÑkWu(” wAT‰2Ëjˆ 1S¦ ¨Câm+‡AôÚD…4µ ¢Ì¤Ð‰ª!J…õiÜÔ!q‹Š¶•à zí£h$Ö7¨¨‘Ô¸ gKàV- ‡¡sÊ»âý0 ùu é:.®o$/ƒ{Jùcòþ"øõ7ì`äßñç}~qñŒ–ôïø·}A8·+¬J¬„€,„ž„pÄùö°%[1ÎÖlÎFxZ±œ]â9b!“,e¸jú•ZÉ%žÃ§¼ÿ;³GØá2Bì’$nùÂO½eøêÁï¸ã~‚wùA¶•4v[¶ßÂæ ;¹â öËö7¤36…ýO=üØ-- »pÏ=hOØøw 3Ü­¡3ÇÚ9ûŠp}y r4Ú¼þæïÏ×–ª3 clÅVI¤µˆ3SI ~DüûÀ2R¦¡©¤májCÓ†Deª¡e)«2½¡åÖfV<”¬s«Ë¦P‚À×á}ð¯sU&¨Üøœ©=ˆZqœ‰(6Ýÿ“¸²õ1B%X·ªuд%µ$%cÉÔ <¬Ø$iS/Åa5õ,?´ŠjO…†Î.&¼âÖ‹¢ŒÅ6ïÛ)kþ.šÔ"³cA:+é"ø€zY#œjhæúNFÏCJY^=/¡q‡;¿æ IÞPôïA‚Âu*«k×Y[ÜY‹#ÒWÈ…Ø|Wg£ÍÜ=Œ c7ö¿$ ¯cŸ"÷¬Ý³©þN§07$IΚÔä q bç^WÀšî¥s^oC2çb¸ S‘ƦÝYÎJ œZù¯‚Èî1¡<¹î(´ÿוï*‰ã¿F0±*Ÿ'ÝnKzŽ©wÖ®?òÃü„ÿ5>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 58 0 obj <>stream xœÅX[oÛ6æ^õ6€À¶3ëDCvËZôa]½åaŠ&v“l¶“Úî‚í¯ïe%ŠRÇö’‚%ÃCò;W™¿ã’ßp«…Ó’We-JUóyË(U%¤³|ÆÓ¢*7qÚI³á*3ÎOø‚ØBÔÆôîËób í”Ú*>RXו%_Nù[þ²xYðF'0Úw­×B!ºÍi'͆«ì†±•Nµª®î‚hŒFʢє4  œfÒl¸Ên[é!ªÊ]©¢ÒZxŸÛl§™4®²ÄV:AtR˜Z&ˆ˜ ¡Áq¡èy^¿Rü|UHÄCÅo ÉÇËâ×ߠǤã_ùÑ÷š{š2~Ë¿ Z€ó0#ˆØà?ɽ„œsÂùçL3ɫ؞ŽîŠqâ<m¾àãß±µ86,¬+K¬áÊ5Ö3Ìí´†­j°ü`oØ·lÄ~`ÏØ¨~f+6eKöžœ³÷ì’MØôöúRTN[Ñ.ùý§ãà_;ld…Gð͹¶ØÚ¨Ä™ñW…æÏ‹À¯¼Ê$ò¢¶eOÒ(¤n]fR!RŒw=©Ö«CoÅ»èé`zô™J‰Úáy6/=>T‰€´N`â?ðãìGö†ÃüÁôWì-î' .Ùßìôcœ½óÒ§x¾akܟÑ¿À‰Îä_ãºF€áº¬25Â=Ìà-Á;jè¤#ž£Ãœ®jb|dKaµj­ËEEªT.W fr«œÉdg2w¹û%»´Tã¥îñKsFx',Â4:æ6˜c†‹ÃœK¼/ˆ;ÁÛ osŠ,YãŒÛ:î 3Þ“DȦ¹iYœòëƦ Ïg?éL=Œ½-1•³›•ËïË\S'|ÐÔ9¡•k4}Eá1’x}šp¶tÐ'êË©vIŠCõ‰ã%ÑŠÙ†£08œ@E‰ºáhâÞ{vÝi¿+z+q–û½J¸ã¥§DUTxÛDÂxÂ{8÷\Nï¡A\cõ/i5ê vûºh`¢WW¶û¸¸bs\±ùYåÎ41Öã[AÛ´×V?@¯#\SÃÖ3¸W¸?íItëd²åO뼨d•>.ÈOÓ`wþq€Ã?˜98Áx«ä£UêÕb§¹¦™ßrç·ð¢Öjk„‡vøêqbÝxȧ3üþXßÔS‡¾}M3” xb=„û3Å>™aœJé’&”àºÜšü·%?.éãå懮(«zïüˆ@cnÜŠ‹ÿš:ø°6òbNðÂ×ûƒf‚Ve”ϾH»­V”ÿ7Tº®ÈMszNïˆì¸œòéVÅhV˜¤üXàmJ¶\Óú§4‡þ ¢oàĶú^9 |-¤·$ ¬/«ä« Ú¦ * #4 A±ýë2jª¡tCk¢¯ŒqC¼3j¢5#*!û7HÊZúƒòd¦‡Ì<42]#éìýñ=°L¿VäÈú#OÓ¼ ãÙ²Õ¨üV½^SÐ%ÁÃvoJxïþ‡4žÐª ªôáÁ7ìOšµwRð§èAsþQó³• endstream endobj 59 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 60 0 obj <>stream xœ½X[oÛ6Ö^ý6€-P3¼ˆ`°a-6 ŲØÃ:‰í$^mǵìdÝ_ïË>’ºYNìÀ+‚Èâåß9üÎ…b™`,UÜ(Áò¬à™,ؼêWª`3fŒâyÖÛ„fÝUfŒýÁl€-x¡u빺tf)¸J%Áu!Øj®ÙÙàlÀZ3a¸i ÑØ”ka€¶{¢Ð¬»Ê~ãì ¢’\ù.ˆi.¸±ª†uxQ4m¶Ý…fÝUöƒgWóm½ ¢J-VÖ•T\Ù¦Ízz‚Ь»Ê~ãì ¢6¹à¹îÜóùûG [¨B "*cxj‹ªgÆÞ ûeà ©tј©¥å¨ÕœéL¢­nÌr¬ÕÖ´fE†u™5|ô¬ «Ÿv§”¼0øÍÿ;We†(˜óh÷¢V 'U¹joÿ–œb+çcx‚Ûö)/ÑÏãƒ2\êœ9åJæ±#²ÁuYÞœ—ó¯1ÏñÃhUωThÌÙÅ„3æv‰­pbR>qd!“Y0XË`´a¦9þ.a¬1Üå´6H—<ÆCHû!4Ÿ«&íÃRÒô†E9D‹á튎εTh+jßU­ŽþúFx 𬠖#‚©5ÛY*óí³é2}ld*ãB© ÙŒRÄ*¹ÀINȳ&x_`çgcês¡rÖ±oȶ‘¶G¾«äzÆ·]¨­1Ͷmþ4Y3›ñT™Ež€Ù@å«ZÁÃÀ<²±‹0ˆÞ~ãŸ)w7,Ñç mTìñžÄ(õ|Ę“áéÆˆ=·¦úd}ËöŸ¿Âû„Ö½3Yã”°{ºu'á}Io®T˜R,÷‹ªAuÔZfOˆ#8¿)P£ QíUŸoïé-Ñ¿î¡h=å¿M‘(½uMŒûãRÓHä^)[ÔÑ)]‘&†»ˆIÈè×Í]b¶·×º_êú¤Ö%eóEè“¢ê’y_„ޱyAäð‘Ø½ˆ½ÇŠÂiŠS·ò‰ÝãŽAÖAUÒà ¶/<6x×ÀÑv™ˆfÛ‘âÈbΊN°#}8R銛xRK¬2%ôÛ,ëØLwl¦Þ_(ÀоŒ¹m©G5o ê·›ÞÏnÇBÚXÜ÷#œË} 2`Žˆ8£Tp’ÒQïœN³¤ü7¢‚|YåÎKŠ,dªþðô*„%FÙmQå±:¨9|Àòý ¶öWäËF»yÑí:¢`×ζ.KÞ‡·ý:yŸKº·Lb.ßæZŠjsf ÁûÙ+ãSߪ-x_(l¹ÇèwF¡ßAÿó0˜óŽŒ·!ùõãŽH"JÏ 3²¯á0n}Á¾ EA,œ¼»–9^¸W¤¬¿-+´ñ˜ÈI÷1‚*·‹þ4œ¼ë¢h2l¼®NdMÊzþ»ªüH[;xùZ“ѹ0Ró¤Í€)ÝJ=3Ëà"%ýuÅ ;§Èf’U¦qQÔ_$ ¢LåYž?’†\éÞ¼ŽÜQ´# Ññ†Þè·J\X±o,ªÊå‹€µFÙ²µü0HÐ ÿX±LZËm?(¸BiFັ¨/æTõ;˜»“8¼íâuœÚ¾ ÔeÚœæLÿ/«Ïþ ä¾ßÇmežr•Eþ¼&¥ëëŠ7€ r#œúNÕ6ð·¤èC¸Šx7~¸ ë]†d»iÀ¿ƒ1|ˆo¯ÉwœîÞ‰Qê”ç:-ÒIÁ¿çh5jBûD6Q¾y§ìU»Îe‘!Ý¿fÙ2Ìì_¡$žùzÄïäPy6¯(;NñôG²3²îÃ$+yQÕXÞ¶‘ásòŸÒnƒVúZ¸i䃒æÆÄxEÒe5#\ìöÞñþåUçÞï_6lÖÎù1³7qÔ—ÆöÛG÷,oÜzæa•è8íìU“‰¤¿¢o¥>uc͘j"ïùÑR¯’f.ìgM?n©äˆ_è38]õÜø'ZÁi÷9©XFœÁJ+Z·ÇŸñaùY2ÿ—ŸnÒ endstream endobj 61 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 62 0 obj <>stream xœµZKwÛ¶ÆÝêt‡]›s"Š >ºKÛ¼zÚÛ&QâE“-Ñ6[½BQv|Oÿy7  AQø“"HæñÍ7Èü#ù £@E!O“D ò”×%¿à¯&¯à…0 ùó‰Àóådöüà—ûI¨$å7“ÏëÉÀŽ¥½Ç˜óÙ³ˆgøÊü‚?£(€sý†~$– ²ž0¸äü;± –²œã8ò=\ËG|þ'ˆͬ‚£4Æ!_²)38ªQ2â4‡¡¬'ãGö›²ì%›ƒVoÙž•¬fß™³çìÀ*¶då±ü0HU¨}…³t¯Ÿë@d¹‚‰â %?Šaj)ÜÈŠ¿™Düç‰O3ÑyRŠ,ÈãÄ{R hžtžÒH‘™òž²QíGs2ùh"M º“?(D+8/Ö“ÿ;>DÈ<¦œ‹ÿ‚?Î~g»÷k×oÙÏàªbÿcWp½{œý×&8¿ÀÓçp.XÇŸ!ï ˆ‚Éáù>;Ø >7=)+¸šÂQ¿ÀX c3ºžÂÓFŸÙ—=R©ŽQœ@^ ;`C®â4©è>—1İóœRa ”ì@ø »B¶h¹ÈwFój#whäµ)ly§&Ö×*’(%E0E‹8 ]À†hÈ(" ‘ úûFD‘z”ã›õ‰èh#Ÿ¡‹ŽÕß äîè”=hÍÙc?=ÏŸÖc:ß¶pµD Zö|ãÉ(³c¸#©ìþóÉcRX_ k±K4°B/é‰0}‰‘)Ñô%^5ˆ‚[Ñ®QRkÜk`ºÃˆÇ’\¹G÷øˆàг÷ß úÅÜ~ÿȺd”Ñ‘fÔØq˜Î‡OQÛ¢ÁÅÝÄ|ßó¶qÃ9ÚFF«ÿ´Žlÿ޵¢?›w„2™5Û2+“©ËÕ Ehx¥}µBŸ­PyãýŠê¹6S;B»A¢:úþN›7®©3J¨Ly$îà¯)‹¡ÛŒ?Ëcší·Èhy$Y_Á¯d´$ Ò8íÉð×ýJ’Ф¦6¦6PGL>T©‰sheNÓ¼@÷&(¼Ûim` €36” kˆ†qV#78ºt¼m»Æt¨QâÓΠÖÖŽßÃ5æQÛ˵ѻÀ|Za.¶ ¼B º6åk‰]f°¦r`M1e¿Áñ-œ…éõºâãCѼXˆTu*rE}ÍI‚?ÂçåÆp² –€Ê(¯Ù¡å”[mwl8˘¸ïÈ[#ÁVH5%µ„MI4™VcsŠY;2Š•fd¸Ÿ”/1ØT`ƒ¬âü>PËLû}ŽÓ¤ä’˜qƒ©Û8@;×ÖǼÙmi{ì§Ô6Bïû;\¼4ÊÔ0ò,"Sk4u‰Jë(Á&& $ò&õá>õ=\“ºüÔ•m×#"Œ²Dç±ííðŒÎ¡‡.±Œ17ÊîÂsw0½“öräÞФM'Å%ÿËù†Ô7«ÉsZpt·o O[rÇŠªS·£¹$~³q­œƒŽ”ÚÞ…Ü9ÊT Œ4³MZ˜†nkd…gªÕÇDÀ·X†–]G$D•ËðÅFÍì¶/i0ÎÖ¼íCøi…©1Êè$ D4zÜŠ$%aÀQšôV$;Äé_´ÑÙby˜áŽ¡aûÃ-¶3œý ß*ôyÃø|íñß!Ò`ïáAÄ.ƒ,Äë#÷ U(È{ßFqOO&iî-7ü ‡º¥4-m“ôsn‡¹Øvì&ËÇu}GÚRÐ'2` E²tìÄñWŒÎ3D”Âïn½þ>õÜu}z‡/a f¶Â»e*YyãZÉyáš|]z^yÿˆ–a ÄL¹mqµíØ;ä~˜’6uî…œgBgÔ¬qVbÍÛ¸5[AŠl©›ó×dºâÙµ›á̓Çà zA§]ÓcO?æì“ÀEïXlözZoÌìên·œ/‰Å{$óÕ0ðý"ÇÁ@kg޵µ‰¬¤åÍ‚ØÚßiêò„Ÿ,ô7Š·‡­•Þ ÒÒÌ6Ê4àæ(—÷2M›eâmwÛåõ;*ƒ2»`Þ2»l²F,‰ŽÍê7Úkw̺bçOà†-¶$kÚI~‹´Ü|fÍš§þÄgÌ8Ú¦!h÷ôÚ­Óãø‹¢¶Ï5Œï/n5ÅÝ/3eˆ°ý™ô óÒøc1¶)(ÿa¬¤]ôk׌uvm*l{èo·}Ñ%m°ÿÙvœpûÎfùCf g<2#8‡íbøxoæ^Ûš@*K{=ÄKbãˆÒ>»¸«_ú)c8‹«No¥±´òv N—aŸVýFXñoÆtaÀayº½2¿m~ÿ;`¡ðêc·€uïÐûgmŠ?îèÑg+÷HÝÒ€YaØ »KoÛ_/ìFíw–y‹¶cÝýƧõÔqËc“Ógæv•vš*ûDúS©c9ð]šw³qGëÇÔl¹¸óÂÓ@øs ã¾à?¾èû:åÜ endstream endobj 63 0 obj <>stream hÞÄ»jÃ@D÷S¶” ÝÇ>µÂì¤ Ä)ì¸2n" KVBÞùù$ë"mÚÌ0pïÀ'(I2hÉÁÊÍ·9G<žî)Æ”–±ë«qJ0¯×²mq7¯ý°ž)ïè‚sLCL·âë[Œ"e/¢˜Ý‰^T¹›rb«¸–¸/Eìɳ·Ú¨_ö‘抲J< ]:+cœ–Î0š¥V8¿ÎSþ‚Ç·ô¹ ø<Åw|½_ÛçÔ¶ÿÀ¿ÀÕÒ¬‚Ô®o¼´5ƒVö„8hË endstream endobj 64 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 65 0 obj <>stream xœÍZ[o[Ç>é#_ûÚ‹´5`-Ï^ÎÍ…¤u£8hÚ:Ru!ÐEѦD‰”";Ý/ýfvçÜHJ¤Z!îmvvç›ogçH]«TÝ)oufSåÒ\—.URa³\{Ÿª¹Ê2«‹|S š÷¥Ì•úI]ª¦Ð•sïåtÐë™T[oÔA–jW¥j9QgêÍà ¤iª†ŸÓÁððȨéjê,/ÔÝ UÇËÁ¿þuœJ›úã±~kUÉCŽÏÔŸY   .Þi Êý *O•ú}ò—d”¬’›D%·ÉUrŠÒM2I^ l“41I‘ ñÌøÛ –j^ œ>SÇï1t 7LIÛ—ç¾7çó$çÉ s`Þf\â׿gh›ì$Û™JCnOö9dÞ`%/ ñ0¹ƒäYò jÉ%äÏQ:À÷(y—hÔ-Q7Œåôž%ð7„ üºEŸ+Œ½J¾f½^>FóTYJvcýÛß?(Ê*Ã<–âD›eÚ—U]3WG«¾ÐFZWµz:SêÐj÷¤-q¥kõ"Ôº2ëô„õ‘5\ÔEëG·Ò]exŽ/OŽU“Ã9üÿÒ´;AËûRÛÂv§ÿ;DÎ0ùÇ)<¦}ÈKÜãð`3m\ÁFöÚšB* T]åE»_¡‹Ò¶û>2g›>…VŸmHx£h)E‹Ó2™Xüº&2¬BŸë´È…sp›Ï )jøºT¯؆.j :ˆ‘FžØ)ƒM)îÃJœ ›âóh„ɲþX4¾…ðe¤Q¢Ž;L>ÇsÄ@¡DÏYG%•œ4¯6­( |„šøžîH…ETÊÃý³"*µ®È.ñ™0ŠUò§ä¦ý{uÌj¢®™îºƒÍ°;Ë6µ§}•÷&]E/òšÎ11yåª\lñÝ!ïB؃!+9Ç߈)vµ®V‡+œÎà5]Mžó(HøIЋdv÷û ‘¡àtYšˆ„MèE ö=´ù^Epç…Nəӯ”p½ºÂ£ÂªØ1ž‹ÚóLÛØJÅñ ‡ÓÛ¼iÇF·GK1HGw©°ÚX¯êÑF»¶ôPDw™=¶‹nqtW÷±:lÜtœóˆŠLÜóŸ+çø³Øß@~5|4£‰ç4ùe/dÛT›\Üí 'Q /õóѸwrJý†[G Pî¬oúý†Ä_óI‰ß³äJ}ùtбNW6kAǪ: ñíbÜXl #í2ZŠAzk¦¦5t,a¡%=èH»èGwuÐÙÁ¶iÆä/±á9æ”myÊĪ@ŸØžãÈc{Øð)­”‚plÛÁq:Û88¤Û¸`,6V’öh‹Qzc%ºÎ5žØ¿Fz,6V’vQ6Žî꾫•|…›Laj+-˜NgÑ碢f‰–)¾‰nW-Ë] æC2Q_¶=µtÞpèF5K¦üS>*§hKÇØŽ;Šß>cb_tPesýŸn¤ÛK<Oh}_úœi¬ï+rº\¬Ã˜ûH±¶~ݬ[–b^[ßW…ªG“Óµ¤‡bmýº]t‹£»º?DïaŽ«Ã±ÛƸÙÍz!H^ 9î [qÀÑø·h¾l¿}¶Ïás£‹¢l]0û4Aúˆ_ Öfõt°€E2×"Ĥˆ‹aPí\í¶Rl`!íÑì2ZŠAz Ë|M >';·¤‡b iÝâè®î;“‚/´)·‘½û¿‰žÎ&¸ˆTÞ¶l‚à§r«Rní²k±ØØDÚãžËh)éMˆV¾¬m‚¢iIÅÆ&Òu“Ñ]Ýw¶‰Ã×¼`“vˆÿ:Nþç°ÉltÍ>9æ‹íl³âkÀ’­n+œÔàÚMϹLä;çõº ©†1m2–Ø5¤ÏŠõ9@<9z:$8šoVÞ‘»Õ•w%lQ‡>Rl íÑÒ2ZŠAzƒ—áJbj$8r·–ôPl í¢[ÝÕýA$Ä;ªG`•çåÎH¸öPh#D\à³`ï$Š·îSÁV·ÌÕcÆ•FŒ‰òjæºd.35¯™áÇÜ‘ïO6Ü•CbåŒG]ì~•Ôj…¦:Dég‹è£ya¦ùZ®ḩÒ0ùš/€¾ä¬íĽ·Q‹cÝWUO›²ì¾&gp~³eQ÷_¯IɋϿâC•œyøˆed¦ÐyYôæ'CþÔNJlGŸCèà á¡sþÃ)¼ÿ¹æ”1‡lŸöO?€0qôô§yLаƒ˜Å”DCm |ßâyQÓÕð@È]V=õ>qÃaeâÃd> ¯ÎxÇþš²'_°w®¢7wx”Øó'cS—9íp¯¬ÙÔeNØÔe™6tï |'ÅšMëöÀ–õh)é5›:Ê`Ò½SFµ¥‡bͦu»èGwuß•Mq3Ó9ÎaI7Ù)ż5‹/Q<ÛP·³åø²3cÆ”+Ö { ±ä° çð%ÏõbKrÓo6nû»Ã¦™.é].Þ hÇçÇIšÓ=Á9bÞ[1b£ç3Ý­ºFŠ!ÖŒc¢Kv¬ ³í¹[q¦L^£t—𜱵ˆŒÌQËZ<ÜÎm(öçÀ!+ÎoŒ“Ùç/˜©—lÁúUç¤ óRÃâ.ëË‚“ÚÝ8iÿŒluÉË?ÝiÙÆsŠ(,û†—¸ýeV+ÎGÔÍ~*‰Ü%ªeÅ%›`q}þuü´u 5Ëø_ Q¯Öv¬b²)¤£v“þX(À÷vó»ëéÚ4+¨"‡/&Ô¬'­À¾¯ðýïÅ,…îØäŽ"uötŸ«Hª³¢êÊ9{p9!¸¡½{ÇÐÖ¼˜"æœ^JÙîTdÀn¼ÕÛ‡]Е:·Üõ«¢&‡±i '½·´PŠ;ˆ®Nøe·|¹xÕ{môœã ¯¬äåÔ¿¥óÿ·\¶××m¾Ç?^>stream hÞì•MsÛ6†ñSpÊØâ‹?<±=i{éLÓCÒž29@DaL ŽÒüø¶/Q9­7ªÜ+€Å´Ï¾X6´Ñ´¨$mJZ5m**…jhSS©š‚6 •¥@'•ÊaHª$v¿|É_¡½å?¿ù~m»÷Wœœÿ´ c×û¬7¦ŽcÌþÎóÞo¸ûè¸uÑøžíwû[o¯[›í|Ì–ÙMY·xë^ ÎzsïqÉ?»ÙÖwËä2Éöcwysÿ “uÓ;(Ä{þm£ã|ñëodG"ž=¹"Ï8âÉ'xIGzÌ2ô†lƒo‚çv{r‡ÆÓ¾ FG>¢qbÑGìòXaøöÚ-f–\“}ÇŽŒ,dÆÞ VÛ§“/È€Þbf¾ØÐ/Ìד`oa¯§'Ì3"Ó/âß_ò×ß])!+¡…”•Î uÉ|}!D®2Ï%ãÚø®PL+Z5%ÓyIµV¬*i©+Ê÷üí²‰¿ìÿÁwü§Õz5Ž!ÞÜ<™Öyí|Ü-Ö†á/)æ­EŠøäzgf7ÿ³¤ÌÇ´t)øB\ÓÐÂð7Éâ ×°xÒ£™„j> D(™³¢YQ4L—}ž3 ùë¢y.”Uë‡[fc]/õv˜ùíÞtî:N~Â`¢oÏÓêú°¤ “tÓ¡Ô fŒ·8eàqÐSÄš‡H æž´'ѨZ)„dªj¨‚f Üü¼®YQé©–è‡m¿ÄÉñ³‘|])1¼ž%…ï’ï9ò#†\*ÖHù„–+ëê¹ ž®†6Æ>›Y \äø_Ø,¬Ö{Œ&•›È˜ã½úZâ'ÙGv’5P•@–ÓBÕ,¯¡¡*guÕüî túÁ퓵dBkšƒ\¥Ö÷nÍ”~NYê&çÆÎnf³kÃha‡Á¥Ûxp>V—n—K ÖUÖ0Û„Ïý!½âþ¼¡ñ®Õå$5 v®P@FIZ Vªú ÛÇ<ßNaãÜ ¹lOÆ¿¦ºÅJ€d>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 68 0 obj <>stream xœµYÙr7E^ùxKR%‚  Ñ‹Þ2Yœ¤2Û¢­šš¤\ŒDÒtš¢ÌŲóëó2{%Ù”5Õ¥î=¸; þGüÇJñTeBF _†$WBKÍ nŒiÒ5M*ç×üŽÀBäZ×Þëù 1ÛÈH¨Xò¡6"Í1cÊgüåàå€× -Ee%ÄX)‘iUÔ ‹Š&•~Ãì=De"M“Cu¦…ÉM‰Qk-I$ êñ‹Š&•~Ãì=F G‡ *HÙdº„(3#d^Õk{$,*šTúA ³{B”Q,â8®hÚm⪢›aIѤÑ`˜]ÌE”å{€XE6ÔΣgW’Ï7ƒH˜$僈׃ÿü]܆oüc>úIñŒ–ŒgüÇ1¡ œÛvJ¬…‚ †I Þrþ S,b’¥l„ÖÐ[2N#—èëoùø=ÈYÀÑAX¥1 Õ)k<#ü™^4âr€ý×i|Ï~`Cö3û…ê5Û°)[³¯ÑröŒí؂ݲi›~$RYY—êûÕ3«ˆ FœAYd­SÅ`­å~¤àWÅØñ4“•™Zf"“ÚL-s‘äIe–µ™Ú¬ Õ¦6ƒNÓྩJ)rƒöf9ø¿Û‡Là1±WÀ5Düþ8{Á&lñ[Ñ¯Ø ïkôìoöý;|ãì7ôr~Ãì?ÑNØï_¡È7P"‡29æoñÜÃÀFxT ô†xÛõckŒ|ˆÙÏèqJW7:µ:Š+‚ÊMœ ™Êê¼\ÄÐaežAH‘FWæx}WæR÷Kn¹„žW‹”'ôâ“be 3uŠ™ãy ?Õxü­ ÒD?B;aŸH˜+¶dŸ1’ã 3Þ¶¾ Œ|"5M0v‹ö0í5”uë‡Ûå (Í@cC茡Ô)­áP™5‹I©¶`¿G6œFȱÆoxÃn@jö[X'†SŒM¨µàþIL¦ììD²„]alNì§dYö=Å7»Í;Ì U0QB Z;âJÇàÂr™í#—•îÒËtÃ.ÛKê»Õ_}¯«¼ŒÈ,/©E)Ï«Ï6­ë-Žêöñv3dïËÝõÜA’ç(ÉÌIkîoqÇŠòB[–ò”‡´¾²ê€VNyZùI’‰ iÜmÇ>¯Y¤ƒ ’äÞ…}ΧÇB)yçó/“²W¢NÉây·,¾¬ŽÐ¹MœY­Ž¸óÁ¯ ×ÜøxPÏg“Yë|w- ÷’FÝmm-±¢ª¡ ÓØô‰ÝV'( óS*–èùx³Ô&¦k­S¦ÿdüt.ò<;i^'ù=}¥#wåÑ,¢™Å+ôf>…¹’£Ltvšæ„R¢­"Q>áø—È¤É];pJÊNhKB³Ý@®˜]Ñ™gK9f[)ˆ7´jáѯj÷Ÿ=7ô*£TŽ#,'èqá«øzÅÙïßP“,ßÐ‰ä ‹ÙïßRò]Ó±Êm`F¾VÐ=ˆ;Èl)!‡º UUe$)Ò$˜Íu%<œ+¦…¿ÃÞÑqgMóÝágIÆRI›nGlõ5R¨šm|æ”—TuÙ0Xôñ?I7ÐÁ¾\~ çÞf8 (Z9E÷ÕÞlóÐ}ïñuêØåP¿"CªH(“´Š 틌OÔÍ,ö’}_ý/Èû5%ö‚ÂÖì!Եdzç#:Çj¶:v—®Î?SX}Ò jáéà/PŒÙÏ1ux$¦>‡É!Ø%ÙØ¿¯ÙOû㣴ώ>©q®¡ÎÖÿ%ÌM+ÔÎÈÿ¦ôu|þUu$²8Ù{¤½Æ½ôžqé=ãÒG»ÔÿŠè‘èÕå5<ÓGO®ïú7ØÙÿ|Ôšÿõy0 endstream endobj 69 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 70 0 obj <>stream xœÝZëoÇßö#ÿŠ I!®n÷"PyYŽ‘&±ÍšB HŠRL‰2O´jÿëþÒ™Ùç)ú([Zâݾfgg~óØÝãoxÆï¸Q"W/ëBäºàW¡¢¬D¡k¾äy®DYì¬qƒ–]*KÎ_ñk>€)D­uëw½tzç2ÊH>”¥¨ê’¯çüœ?<ð‹…„gUFsSŠ"ˆ¶kü e—J?}ïÀbaD]÷±hT.´®"‹&3B¸ÈÐŽ7hÙ¥ÒEß;°¨¤‰a@"9Hz.Ç'/%_4ƒLäEÉï¯ÿú7¬cæÛø7c~üDñІŒÏù÷câ‚pŽ#°‹ÑBUý$TÎ8ÿ’ýÈ&¬a·Œ³ »a3(ݲ9AY±ŒIV²cxæô+¡kFPξâãßa"àÙs¸cJ•¢(LgÎ)Ì3dìæ¼ ̸†·¼_BÛ¼m-kt;´/€æ-¬d³; |ÉÞCíŠ]ý%”†ð;agL@ÝêŽ]y½/Ùkø?Vð¶>70ö†ýøúÛC8ÏD™g¨7â?ý}q‚ ¨ê–``)€¨ò\˜ª5Kþr ø³ Ré:é©%Ú·nõD‘èJ'½µºÊ[½<ºÈ ÞXÔ9ã])¥¨sxN¯ŽUY]›Ï©Ú^Ð2¦ªTíé’—0ÚÇ ,§ý˜•è‡á|„Ô%)Ù%K_áÑ€ÕuQ¦ýJQV*í‡øÈµŠ}<’>÷!á9ÇY|‰4fPïÛ*KשsQąÎZ ~Ïjø ð   ¿ø|rÌrÝ=ƒß;’6ÊzVvåØÅܬ ÖZœïS» t`ƒJæŽé;@¹uŠ–q¨º&Ø`{p`ø‚žó žS(_²·T³„_Ä)ö8‚rb¨aÉz4ÉÈŸÙ˜ýžS±!×òʱ>u5(×a)Š:sxNiì Z‚,"‚“P'lÖÏhÝ¢¤e¦Ü¢ÆÄHC ¬€¡«0z„%üq`—€¬ÚàÇpð´­ ŒÄEÜ@[“,ñ9û6a××zíùr\^oW@& ±x±>‰;މkß]|éŽEêR¨" ¾— ˆTCŽv¦±¤q‹òn²-7‰§²V°¡è€±%‰ NGZT•t*Ú¥6Ïõ‰çö¿Ãžq·Ý(J‘¡ò2IÏ+*”ȤáìÝáÅŠb­P®‹ÓA›ÙºDµ…ýX¼"öÎôŒÍ]€<ÈȤÁ“°"Üm¶ïÝ8ûÊGôÜÀªqýï¡ôÌ]<`iS6$ξ mÂŒ¼0g'tMñž>Á Ä·;¯Ý­ßG}-à×Jô‚ÌwE Z®š{bèóÁfH¯è*Õ‘†LE¹G„ ™°²›²KKâ¹À%‰Ê/wI\PÝiÝ’è¯i_3!wzöÑ(¼oȧaÄ£¹; Î~û’¾–Ácÿß¾bþ#Å*øÒS£ûßÞšB “×Åý¾cOö£µWfTgÜaSW•È´Ùš¯ˆ¯Ú \|Kèhì˜.Níb¯É•£U¯³°ˆv$:ÅŰ¢KN¼@ÎÁC÷Vˆd…_+vVÒÉRG£ÛÛ8ÏD®óîÄBrn„ÑÞ~ ¨y Ô&ô~DÂÓ7×ú”6ÔGœ@ëʹóKº±GE>¡ËVÏÝ–b­á;PÃSH+ÇPzIŸû¶Ñ2ð“•3§üµûxÅYÅgÄqKfW2÷€/ƒ4æ¿‚ƒ|± endstream endobj 71 0 obj <>stream hÞÜUËnÔ0õ§dUµ ìø»êØ QV¡Iâ™1L$N§íÇ'i¢ôD,û^ß$ò¹÷Ø<IšðT&ÂX•h'aõès &áÒX8YÂ-a›®LrpÀŽÐ_°W'OǾ»Š±í÷[†¸rZ4Ûøp±jêå:°zÙT¡è7‹½ÃCö¨éJß½Nñëô {ÜÔÑ×±ßýø‰¬HDkIOö C[’€ùŠ $'”¤!Ð ñÀ/€7¤FÌ36yãz@\˜Å;Þ}²/Rž¥:å<ÓR‰=öüx7M¥zâÙc'¾ˆ¯¹0T —+¨tY"eJ¹²‰1Ž‚7ìÅÇóÖ³g¡~Ï^ŽÞQ]7ñðð‡,€„<4¡^4]5Ø5m†ö]3tõ| ¿[²bXçÛ.Ô‘ñŒI&ðç¶¼%9—ÔäØhƒ^“l‡Ï±z¹y d@ä»Évˆ™ƒ¤K¼M Qˉ´T¶ÇïDÌ9É0JtA,:Åjy *ù•ʪ´CÕdÔ›(Ëi¦PZBQ+Ô=¨Ül6´.ò@ëuEë°¢Ëæ”’Î_°ƒïÎét>,ªrvâcü©ß)óY;ä•/wʦ³£¼Ý¼ˆ;ëÐÇ·C(ûç©̩»0¾™SÅÄþè­ÁûhbéT€§ˆô›#·˜}@ 01m˜ endstream endobj 72 0 obj <>/MediaBox[0 0 595.28 841.89]/Parent 118 0 R/Resources 149 0 R/Rotate 0/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 73 0 obj <>stream xœµYmoÇÞ|½_±ßšÑi_o÷ EÝÄj ·ˆ#¥ÒôƒLR¶bR²õ×ýëý’gfwŽÇ“D“†wœáìì¼<³/#ýAýQ‡ÜÚÜëÎumA¯tHmi`„®M&2Ùõ‘Æñ`žé[ï3¬Ë:„*ñfÒfä͞Ä}ÛEú=à‰t¾Æõ:¸¶¤o=枣ëÈWÄ]©³mo»1iS'>m F/†íÛ¾O¢ŽH;™.ÚÜÆdŠudN´©Í9ˆ±D²xq&Z„Ä[/ÎÙNB-|ÏC¨ˆŒ†CÕUñØ:›%ÐDÌ^!äLG˜Þœ%s²÷'2|­1øÕÙÑ”ÄéC7Ø£©#ŠÉ1"tfìq®Áé]kÂ:&D{ׂFœÎú!ªD§nô®Y™ IÜrƒC™’x™u ±K #v ²Ä³5ôÄwÁ¦ÄF +Ñ[c[â+à—øKmH†„žM«i©õ+}¡”ZÛcàøyõ¦ð[ÕYÓº`õµ¶M " }¦_6/1ÂÀ•£ÆòûMsxtlõ›ëΣO®šÿ=—ßôÓ}øÌéÌCNÎô÷'l+КF îaB6³`εþZ9e”UIâùi•fÎÐþ}òÔÁ2±ãÅ.fmjö¬Ït„Ôƒ•':þ¦¾Sêïêu«~V×j¡®ÔŸðÖêHݪs5W‹»ú¾h(V<ËøùÓe"÷…6UÐ !œ¥>nœ~Þ?e;’ô(‚ÑXÒú˜µ8Ç )Éê4›Mó¡dº8¼6™Iñž­š?X|j^!ÄïðÑêGuªÞ üúKu†ç+Pçêê-è ü¦Õ Ð%9/ ýïSuƒçs$ò_H¢F25äoð÷;Äßlj–%¨€t±çðË’N „O”#,ÐÁYaHÊ©Êm²c¹¾ ÈáHŽÖýH¦æ{$óPº_jšE¨šk·ç%•¥#åØÀ´$f†Ü"Ô7\ç5§xÏñž!p+„øtôÛk|»Ä¨KPç8ÅwÍõššqz[pŸ²,<ã¬8‘4êZ}‹ß•…è_¿áNuHh§2Xzœ‰(Ž^1×!(ûMç~DÙ?»«d<ò–ãÍqûLœ3Ö÷tgâ[Äi…8Ìת¦·¥Ò¶¥/LëDOõgœ0JÎ?AÝrh©†Vz­žUÞ1ªãéZp%ãûÅ(Ù÷×!û+R‡´ýÿ+$î¼&\F]pJo!Qøs|ÏÕ7ã_J¥ÃŽu *^=¶ÂuGÇÔÆì&1ˆªÝšc \ÄùÅç:è½ú“/'¸Œ_>…+ëEŠryS—® ® rÜ=e~Aû?°@í‹úoyŸ´@½êÓ^àK8;C›®í€úçÈ8 Éci#6«éÄ÷ ~D«JîÃíÃ(ÿh]0÷cEõ/Œñ‚ösNÍ%cûv'¤ OxÄŒ—³%/Ϥû˜ˆÞˆA·#¢]âóì¶•ü†DeºPÿåM´ XÜ9çL×o½‰îQíÕx®|O< ¨‡@„ØAýæX÷œ5?ÙÉiëpê«ÓTC-?{(<¬›ÓýFÒ¯7xGÄ7’»ãÝyËwŸÍÉ?_h{|Àá~sÜ~S£Äèô8ú‹J­Cáçè†CÙCe°_>\hÏÁ{ËZ^áÛ%—Ñ'ÎøÏø~Ã$׌̇Î"K¼/™Ch^©ëG,¼Íˆ¤Ý ¯Ë¸ôG)¼‚´‡·ˆéѨ„‡Üú„ß·£9¸ÀKn×=sï²£­Än'%×1âð¡cÕžåÖuwãmåöšß¯aŽá»Úض‰Žºýd’IYÉåã¾:®ÊΠD¢œ½žñ¾¾ºÏ½·³¢'ö¾ƒžG¾^Ü·:P¤ï'óòåf‚pÿY8;ì©›úð¨×®;U÷Ù«aípŠë£ñ¢¢ø‚+‚&X2¾ßS¶ÍíÏ¥1zîÑ=b¹bÞ¡†[hz‹Ï_¸eðgTároyi:àÅ‹¼;€–;M…=ƒ†|®óøbX#ép=¯‘'_€ Ìy'ú·woÌv'ÖÛN_óƒ¿ú5 &L‘“¤g+}øC¯¿»mW¶ –ïAmÆYvüÄ…ÛèßðyηåØ÷¥W‡u{Ž9j·.X¾bGn¤Q'³çN\_éDS3Ç×V›1¥7—Bi¦YêáŽzsDÏt3jÎg â6ƒû®CH%HǤÌÊýRŒ qÃæ@ÎØÁ)LxÜ .û¡qÔ8„€®û;Å©jäV¬§0Õ¹[›¼ØCd0Qì%Ò{‹?Ôüí 7œ#†?©7œ‰„½Ôñ0]XKÝHX…%a’˜õ¤’:±JR+FKòūNjÓN`8ç˜áœ§&VŽ›Ç]rÜÖ§Æœë?%|,ÿe‰ÅËÜ‹Î.ŒÉò_†¦r"8!d’p`oD!uÀ!£LH-ól™ "†+È!s)"”ÏIÚ!@Ó˜¯¸=n¨M^ç$:¸n0‰Ûé)Œl&Nïüà7àqØŸÇtió7ÂêÀ ØÏ–cV ®h•ØË¼ëäˆe’=±\’;]L¶‡kÚ|[Ó{wP›ß Ñ@c endstream endobj 74 0 obj <>stream hÞ¼•KsÓ0ÇõQtl–´zYî@f€Ã!~4MlãÚ ðá¿•´H[:FZiµÖdó׊TÁ'RÜèKÜ+ «y¡ XÃI'‡åä4rœòbõ\«@˜ä\£ø£Gò)ú;ùáí˹­Æ±?‘²Œ]lϺa³cu!º¯˜×Ÿ»ihk,‡¥¬–QM?Äv”åøE)sIǧ§ò›á£Â?TŸäó®›v¼8úñ“­ØˆÖ³&ÑJY‡Þ²3ØmØ»‘Uì‚ x¾îý5û ;aÖ"b½ßØgT#ìÀœ;¤ÓÆtöȾ0…fØ%£cùúèʼnV”+§º3VË7¯ð§]¦ð;–o›jüh½VžNxSp` âyÐ"÷I¾›Êñ[ßÈW±=—ïçÙÓ¶íÆÓÓ¿qÜn·¢­Ê(ÚõF´q%–Ý¥ì§rÓÔR+åL°ö6Ô¶© äY%‚ól v³ˆ Ò!g‰/&Dl@¦ÆJ'<³Ì$BWDB@æù5§ aüÿº BŠÃb-ªn#«]Ʋ¯Ï$Ùœ2MÊeD…\ÀyF;…íTgm ICëyG&;û›½rzÄžÁ(å3£D.ƒ¥4ìˆ]äAŽúŠcypœf=·E.¬ãø@x«ï]X&­é¡„5‹*`¦opṎSJ¸Â_q– ØÝÜ bí5¦ƒÔFrêáëÕŸjÓÀ6£²SÚ=@mHh€Z ïPÎ6>stream 2017-05-01T17:53:42+01:00 2017-05-01T09:52:20-07:00 2017-05-01T09:52:20-07:00 mPDF 6.0 application/pdf CD-HIT User's Guide uuid:2909c9cd-75a7-c245-b7d7-5152e22ee9ed uuid:79bc2a57-fc80-834b-8f15-2534984d747a endstream endobj 76 0 obj <>stream hÞ,Ï» Â@…áWÙ7ØÌm£Ò¤L#b'BB°Q!¦ðí#ûÛœ9_1#rHMêº<¼¶ç'Yäñ1­WQý­ÏIjzͶæ‘=…#(D! QˆB bƒÄ þ¿â‡8$  H@R …G ]¡kë§·|ù¾ç|º/óÚ÷» µ7 endstream endobj 77 0 obj <>stream hÞ24´T0P°±Ñw.JM,ÉÌÏsI,IÕp±22047050447561Ò60T70P×Ô÷ÍOAS``ijdd k`QP”ŸRšœZ¤‘àâ¦`¦g ©’Y’“ªáì¢ëá¢ZœZ¤^¬à^š™’ªig`Ø!’ endstream endobj 78 0 obj <>/Filter/FlateDecode/ID[<3F236C86A7B44F8483A8D7BDA3A25FA7>]/Info 119 0 R/Length 232/Root 121 0 R/Size 120/Type/XRef/W[1 3 1]>>stream hÞbb&FV.&F+ÉwD²dEÞ‚Hn'Éä "îH®8°ì}ÉQ f?‘ìËl°z0›S ‰¤Æ Áæ\ƒ¤FÁæ’F_ˆ¤÷ ›Áf»†$w’]{â‡Ô+"Ø\‹‘Ä‘ü8 I\Îfä8€¤†É= Hââ`ö7°ùÜ`¶9˜T‹€ÅYz‘Ìo³@$oˆdÎÇ…XlóT°ì°ÊÇ`ò*0NMûÈ£”dþ "-‘LcþOš ¬?‰¶ë9.dú" e§8@ endstream endobj startxref 116 %%EOF cdhit-4.8.1/doc/cdhit-user-guide.tex000066400000000000000000001137251343604040700172620ustar00rootroot00000000000000 \documentclass[12pt,a4paper]{article} \usepackage[latin1]{inputenc} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{scalefnt} \usepackage{titlesec} \usepackage{hyperref} \usepackage{cite} \usepackage{graphicx} \usepackage{wrapfig} \usepackage{xcolor} \usepackage{fancyvrb} %\usepackage{tikz} %\usepackage{pgflibraryarrows} %\usepackage{pgflibrarysnakes} %\usetikzlibrary{decorations.markings} %\usetikzlibrary{patterns,fadings} \addtolength{\hoffset}{-4em} \addtolength{\textwidth}{8em} \addtolength{\voffset}{-4em} \addtolength{\textheight}{8em} \setlength{\parindent}{2em} \linespread{1.1} % also in front page \renewcommand\FancyVerbTab{\textcolor{tabcolor}{$\mid$}} \newcommand*{\justifyheading}{\centering} \titleformat{\section} {\normalfont\Huge\bfseries\justifyheading}{\thesection}{1em}{} \titleformat{\subsection} {\normalfont\Large\bfseries}{\thesubsection}{1em}{} \usepackage{listings} \lstset{ % language=C, % choose the language of the code basicstyle=\small\ttfamily, % the size of the fonts that are used for the code numbers=left, % where to put the line-numbers numberstyle=\small\ttfamily, % the size of the fonts that are used for the line-numbers stepnumber=1, % the step between two line-numbers. If it's 1 each line will be numbered numbersep=5pt, % how far the line-numbers are from the code backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color} showspaces=false, % show spaces adding particular underscores showstringspaces=false, % underline spaces within strings showtabs=false, % show tabs within strings adding particular underscores frame=single, % adds a frame around the code tabsize=2, % sets default tabsize to 2 spaces captionpos=b, % sets the caption-position to bottom breaklines=true, % sets automatic line breaking breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace escapeinside={\%*}{*)} % if you want to add a comment within your code } \title{CD-HIT User's Guide } \date{} \begin{document} \scalefont{1.1} \maketitle \vspace{10em} \begin{center} Last updated: 2012-04-25 \href{http:\slash \slash cd-hit.org}{http:\slash \slash cd-hit.org} \href{http:\slash \slash bioinformatics.org\slash cd-hit\slash }{http:\slash \slash bioinformatics.org\slash cd-hit\slash } Program developed by Weizhong Li's lab at UCSD \href{http:\slash \slash weizhong-lab.ucsd.edu}{http:\slash \slash weizhong-lab.ucsd.edu} \href{liwz@sdsc.edu}{liwz@sdsc.edu} \end{center} \clearpage \tableofcontents \clearpage \clearpage \section{Introduction } CD-HIT was originally a protein clustering program. The main advantage of this program is its ultra-fast speed. It can be hundreds of times faster than other clustering programs, for example, BLASTCLUST. Therefore it can handle very large databases, like NR. The 1st version of this program, CD-HI, was published and released in 2001. The 2nd version, called CD-HIT, was published in 2002 with significant improvements. Since 2004, CD-HIT has been hosted at bioinformatics.org as an open source project. Since its release, CD-HIT has been getting more and more popular. It has a significant user base, I estimated at over several thousands users. It is used at many research and educational institutions. For example, at {\bf UniProt}, CD-HIT is used to generate the {\bf UniRef} reference data sets (\href{http:\slash \slash www.pir.uniprot.org\slash database\slash DBDescription.shtml}{http:\slash \slash www.pir.uniprot.org\slash database\slash DBDescription.shtml}). It is also used in {\bf PDB} to treat redundant sequences (\href{http:\slash \slash rutgers.rcsb.org\slash pdb\slash redundancy.html}{http:\slash \slash rutgers.rcsb.org\slash pdb\slash redundancy.html}). In 2006, the 3rd major updates were published and released with abilities to perform various jobs like clustering a protein database, clustering a DNA/RNA database, comparing two databases (protein or DNA/RNA), generating protein families, and many others. The CD-HIT web server was implemented in 2009, which allows users to cluster or compare sequences without using command CD-HIT. The server provides interactive interface and additional visualization tools. It also provides pre-calculated and regularly updated sequence clusters for several widely used databases. CD-HIT-454, a special version of CD-HIT was implemented in 2010 to cluster artificial duplicated reads in pyrosequencing (454) data. Currently, CD-HIT package has many programs: cd-hit, cd-hit-2d, cd-hit-est, cd-hit-est-2d, cd-hit-para, cd-hit-2d-para, psi-cd-hit, psi-cd-hit-2d, cd-hit-454. I also developed some utility tools, written in Perl, to help run and analyze CD-HIT jobs. This program is still under active development; new features and new programs will be out in the future. It can be copied under the GNU General Public License version 2 (GPLv2). \clearpage \section{Algorithm } Algorithms for CD-HIT were described in three papers published in Bioinformatics. \begin{itemize} \item 1. Clustering of highly homologous sequences to reduce the size of large protein databases. Weizhong Li, Lukasz Jaroszewski \& Adam Godzik. Bioinformatics (2001) 17:282-283, \href{http:\slash \slash bioinformatics.oupjournals.org\slash cgi\slash reprint\slash 17\slash 3\slash 282.pdf}{PDF}, \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash entrez\slash query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=11294794}{Pubmed} \item 2. Tolerating some redundancy significantly speeds up clustering of large protein databases. Weizhong Li, Lukasz Jaroszewski \& Adam Godzik. Bioinformatics (2002) 18: 77-82, \href{http:\slash \slash bioinformatics.oupjournals.org\slash cgi\slash reprint\slash 18\slash 1\slash 77.pdf}{PDF}, \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash entrez\slash query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=11836214}{Pubmed} \item 3. Cd-hit: a fast program for clustering and comparing large sets of protein or nucleotide sequences. Weizhong Li \& Adam Godzik. Bioinformatics (2006) 22:1658-1659 \href{http:\slash \slash bioinformatics.oxfordjournals.org\slash cgi\slash reprint\slash 22\slash 13\slash 1658}{PDF}, \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash entrez\slash query.fcgi?db=pubmed&cmd=Retrieve&dopt=Abstract&list_uids=16731699}{Pubmed} \end{itemize} I suggest that you read these papers if (1) you want to understand more details about the algorithm or (2) you want know why it is so fast. If you don't have time to read these papers, the algorithms are summarized below. CD-HIT web server and CD-HIT-454 are described in these two papers: \begin{itemize} \item 4. Ying Huang, Beifang Niu, Ying Gao, Limin Fu and Weizhong Li. CD-HIT Suite: a web server for clustering and comparing biological sequences. Bioinformatics, (2010). 26:680 \href{http:\slash \slash bioinformatics.oxfordjournals.org\slash cgi\slash reprint\slash btq003v1}{PDF} \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash pubmed\slash 20053844}{Pubmed} \item 5. Beifang Niu, Limin Fu, Shulei Sun and Weizhong Li, Artificial and natural duplicates in pyrosequencing reads of metagenomic data. BMC Bioinformatics, (2010) 11:187 \href{http:\slash \slash www.biomedcentral.com\slash content\slash pdf\slash 1471-2105-11-187.pdf}{PDF} \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash pubmed\slash 20388221}{Pubmed} \end{itemize} \subsection{CD-HIT clustering algorithm } Clustering a sequence database requires all-by-all comparisons; therefore it is very time-consuming. Many methods use BLAST to compute the all vs. all similarities. It is very difficult for these methods to cluster large databases. While CD-HIT can avoid many pairwise sequence alignments with a short word filter I developed. In CD-HIT, I use greedy incremental clustering algorithm method. Briefly, sequences are first sorted in order of decreasing length. The longest one becomes the representative of the first cluster. Then, each remaining sequence is compared to the representatives of existing clusters. If the similarity with any representative is above a given threshold, it is grouped into that cluster. Otherwise, a new cluster is defined with that sequence as the representative. Here is how the short word filter works. Two proteins with a certain sequence identity must have at least a specific number of identical dipeptides, tripeptides and etc. For example, for two sequences to have 85\% identity over a 100-residue window they have to have at least 70 identical dipeptides, 55 identical tripeptides, and 25 identical pentapeptides. By understanding the short word requirement, CD-HIT skips most pairwise alignments because it knows that the similarity of two sequences is below certain threshold by simple word counting. Another reason why CD-HIT is so fast is the use of an index table. I just use very short word with size 2~5. For instance, the total number of possible pentapeptides is only 215 (each position has 21 possibilities, 20 amino acids plus "X"), and the index table requires only 4 million entries, which just matches the RAM scale of current computers. Index table makes the counting of short word very efficiently. And a longer word is more efficient than a shorter one. \subsection{Algorithm limitations } A limitation of short word filter is that it can not be used below certain clustering thresholds. In a worst case scenario (figure below), when mismatches are evenly distributed along the alignment, the numbers of common short words are minimal. So theoretically, pentapeptide, tetrapeptide, tripeptide and dipeptide could only be used for thresholds above 80\%, 75\%, 66.67\% and 50\% respectively. \begin{figure}[!h] \includegraphics[width=\textwidth]{Figure1.png} \end{figure} Short word filtering is limited to certain clustering thresholds. Evenly distributed mismatches are shown in alignments with 80\%, 75\%, 66.67\% and 50\% sequence identities. The number of common pentapeptides in (a), tetrapeptides in (b), tripeptides in (c), and dipeptides in (d) can be zero. However, biological sequences are not lines of random letters; proteins usually have more conserved regions and more diverse regions as the result of specific constraints of evolution. Situations such as in above figure are very rare in the real world, and the actual number of common short words is much higher than in the worst case scenarios. We did a large-scale statistical analysis on short words. We found, for example, even at 70\% identity, sequences still have statistically significant number of common pentapeptides. Current CD-HIT is based on this short word statistics. But the short word filters are still limited to certain thresholds. The reasonable limits of clustering thresholds for pentapeptide, tetrapeptide, tripeptide and dipeptide are approximately 70\%, 60\%, 50\% and 40\%, respectively. There is another problem introduced by the greedy incremental clustering. Let say, there are two clusters: cluster \#1 has A, X and Y where A is the representative, and cluster \#2 has B and Z where B is the representative. The problem is that even if Y is more similar to B than to A, it can still in cluster \#1, simple because Y first hit A during clustering process. While this problem could be reduced by multiple-step clustering (see following sections). \subsection{CD-HIT-2D comparing algorithm } The above short word filtering and index table can also be used in other sequence comparison tasks, for example, comparing two data sets and reporting the matches between 2 datasets over a certain similarity threshold. This is a very common job, so I developed another program cd-hit-2d for fast comparison of two dataset. \subsection{DNA/RNA clustering \& comparing } The original CD-HIT was developed for protein clustering. But the short word filtering and index table implementation can also be applied to DNA/RNA. Therefore, I wrote another two new programs cd-hit-est and cd-hit-est-2d. I believe they can be very useful in handling DNA sequences. \subsection{PSI-CD-HIT clustering } The lowest threshold of CD-HIT is around 40\%, in many applications, people need a much lower threshold, like 25\%. I am planning to develop such application (may be called CD-HIT-LOW, I don't know yet), but for now, I use PSI-CD-HIT for this purpose. PSI-CD-HIT is actually a Perl script I wrote, which runs similar algorithm like CD-HIT but using BLAST to calculate similarities. Below are the procedures of PSI-CD-HIT: \begin{enumerate} \item Sort sequences by decreasing length \item First one is the first representative \item Using 1st one blast all remaining sequences, pick up its neighbors that meet the clustering threshold \item Repeat until done \end{enumerate} \subsection{CD-HIT-454 clustering } We implemented a program called cd-hit-454 to identify duplicated 454 reads by reengineering cd-hit-est. Duplicates are either exactly identical or meet these criteria includes: (1) they start at the same position; (2) their lengths can be different, but shorter one must be fully aligned with the longer one (the seed); (3) they can only have 4\% mismatches (insertion, deletion, and substitution); and (4) only 1 base is allowed per insertion or deletion. Here, (3) and (4) can be adjusted by users. We allow mismatches in order to tolerate sequencing errors. \clearpage \section{User's Guide } \subsection{Installation } Most CD-HIT programs were written in C++. Installing CD-HIT package is very simple: \begin{itemize} \item download current CD-HIT at \href{http:\slash \slash bioinformatics.org\slash cd-hit}{http:\slash \slash bioinformatics.org\slash cd-hit}, for example cd-hit-2006-0215.tar.gz \item unpack the file with " tar xvf cd-hit-2006-0215.tar.gz --gunzip" \item change dir by "cd cd-hit-2006" \item compile the programs by "make" \item you will have all cd-hit programs compiled \end{itemize} \subsection{Installation of multiple threaded version } You can take advantage of multiple-threaded function of cd-hit to speed up calculation. Please compile the programs by "make openmp=yes". OpenMP is supported in most recent Linux systems. There are some macros defined in a cd-hi.h that control some basic parameters. I believe, in 99\% of the case, that these setting are fine. But you can change them also. I list some of them here: \begin{lstlisting} #define MAX_SEQ 65536 Max length of sequences. #define MAX_DIAG 133000 This number should be the double of MAX_SEQ. #define MAX_GAP 65536 Max allowed gap length in dynamic programming subroutine. #define MAX_LINE_SIZE 300000 Max allowed length of a single line from input FASTA file. #define MAX_FILE_NAME 1280 Max allowed length of filename. \end{lstlisting} Please note that, the above values may not reflect the actual values used in the program, please refer to the source file if you want to know the exact values. \subsection{CD-HIT } CD-HIT clusters proteins into clusters that meet a user-defined similarity threshold, usually a sequence identity. Each cluster has one representative sequence. The input is a protein dataset in fasta format and the output are two files: a fasta file of representative sequences and a text file of list of clusters. Basic command: \begin{lstlisting} cd-hit -i nr -o nr100 -c 1.00 -n 5 -M 2000 cd-hit -i db -o db90 -c 0.9 -n 5 \end{lstlisting} where\\ \texttt{db} is the filename of input,\\ \texttt{db90} is output,\\ \texttt{0.9} means 90\% identity, is the clustering threshold\\ \texttt{5} is the size of word\\ Choose of word size: \texttt{-n 5} for thresholds 0.7 ~ 1.0\\ \texttt{-n 4} for thresholds 0.6 ~ 0.7\\ \texttt{-n 3} for thresholds 0.5 ~ 0.6\\ \texttt{-n 2} for thresholds 0.4 ~ 0.5\\ Complete options: {\bf The most updated options are available from the command line version of the programs. Running the programs without any argument will print out the detailed options.} \begin{lstlisting} -i input input filename in fasta format, required -o output filename, required -c sequence identity threshold, default 0.9 this is the default cd-hit's "global sequence identity" calculated as: number of identical amino acids in alignment divided by the full length of the shorter sequence -G use global sequence identity, default 1 if set to 0, then use local sequence identity, calculated as : number of identical amino acids in alignment divided by the length of the alignment NOTE!!! don't use -G 0 unless you use alignment coverage controls see options -aL, -AL, -aS, -AS -b band_width of alignment, default 20 -M max available memory (Mbyte), default 400 -n word_length, default 5, see user's guide for choosing it -l length of throw_away_sequences, default 10 -t tolerance for redundance, default 2 -d length of description in .clstr file, default 20 if set to 0, it takes the fasta defline and stops at first space -s length difference cutoff, default 0.0 if set to 0.9, the shorter sequences need to be at least 90% length of the representative of the cluster -S length difference cutoff in amino acid, default 999999 if set to 60, the length difference between the shorter sequences and the representative of the cluster can not be bigger than 60 -aL alignment coverage for the longer sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AL alignment coverage control for the longer sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -aS alignment coverage for the shorter sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AS alignment coverage control for the shorter sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -uL maximum unmatched percentage for the longer sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -uS maximum unmatched percentage for the shorter sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -U maximum unmatched length, default 99999999 if set to 10, the unmatched region (excluding leading and tailing gaps) must not be more than 10 bases -B 1 or 0, default 0, by default, sequences are stored in RAM if set to 1, sequence are stored on hard drive it is recommended to use -B 1 for huge databases -p 1 or 0, default 0 if set to 1, print alignment overlap in .clstr file -T number of threads, default 1; with 0, all CPUs will be used -g 1 or 0, default 0 By cd-hit's default algorithm, a sequence is clustered to the first cluster that meet the threshold (fast mode). If set to 1, the program will cluster it into the most similar cluster that meet the threshold (accurate but slow mode) \end{lstlisting} Alignment coverage control: See the figure below, the -aL, -AL, -aS and -AS options can be used to specify the alignment coverage on both the representative sequence and other sequences. -s and -S can control the length difference between the representative sequence and other sequences. \begin{figure}[!h] \includegraphics[width=\textwidth]{Figure2.png} \end{figure} \texttt{ aL = R$_a$ / R\\ AL = R - R$_a$\\ aS = S$_a$ / S\\ AS = S - S$_a$\\ s = S$_a$ / R$_a$\\ S = R / S\\ U = S$_1$ + S$_2$\\ uL = U / R\\ uS = U / S } Output: The output .clstr file looks like \begin{lstlisting} >Cluster 0 0 2799aa, >PF04998.6|RPOC2_CHLRE/275-3073... * >Cluster 1 0 2214aa, >PF06317.1|Q6Y625_9VIRU/1-2214... at 80% 1 2215aa, >PF06317.1|O09705_9VIRU/1-2215... at 84% 2 2217aa, >PF06317.1|Q6Y630_9VIRU/1-2217... * 3 2216aa, >PF06317.1|Q6GWS6_9VIRU/1-2216... at 84% 4 527aa, >PF06317.1|Q67E14_9VIRU/6-532... at 63% >Cluster 2 0 2202aa, >PF06317.1|Q6UY61_9VIRU/8-2209... at 60% 1 2208aa, >PF06317.1|Q6IVU4_JUNIN/1-2208... * 2 2207aa, >PF06317.1|Q6IVU0_MACHU/1-2207... at 73% 3 2208aa, >PF06317.1|RRPO_TACV/1-2208... at 69% \end{lstlisting} where\\ a "$>$" starts a new cluster\\ a "*" at the end means that this sequence is the representative of this cluster\\ a "\%" is the identity between this sequence and the representative \subsection{CD-HIT-2D } CD-HIT-2D compares 2 protein datasets (db1, db2). It identifies the sequences in db2 that are similar to db1 at a certain threshold. The input are two protein datasets (db1, db2) in fasta format and the output are two files: a fasta file of proteins in db2 that are not similar to db1 and a text file that lists similar sequences between db1 \& db2. Basic command: \begin{lstlisting} cd-hit-2d -i db1 -i2 db2 -o db2novel -c 0.9 -n 5 \end{lstlisting} where\\ \texttt{db1} \& \texttt{db2} are inputs,\\ \texttt{db2novel} is output,\\ \texttt{0.9} means 90\% identity, is the comparing threshold\\ \texttt{5} is the size of word Please note that by default, I only list matches where sequences in db2 are not longer than sequences in db1. You may use options -S2 or -s2 to overwrite this default. You can also run command: \begin{lstlisting} cd-hit-2d -i db2 -i2 db1 -o db1novel -c 0.9 -n 5 \end{lstlisting} Choose of word size (same as cd-hit): \begin{lstlisting} -n 5 for thresholds 0.7 ~ 1.0 -n 4 for thresholds 0.6 ~ 0.7 -n 3 for thresholds 0.5 ~ 0.6 -n 2 for thresholds 0.4 ~ 0.5 \end{lstlisting} More options: Options, -b, -M, -l, -d, -t, -s, -S, -B, -p, -aL, -AL, -aS, -AS, -g, -G, -T are same to CD-HIT, here are few more cd-hit-2d specific options: \begin{lstlisting} -i2 input filename for db2 in fasta format, required -s2 length difference cutoff for db1, default 1.0 by default, seqs in db1 >= seqs in db2 in a same cluster if set to 0.9, seqs in db1 may just >= 90% seqs in db2 -S2 length difference cutoff, default 0 by default, seqs in db1 >= seqs in db2 in a same cluster if set to 60, seqs in db2 may 60aa longer than seqs in db1 \end{lstlisting} \subsection{CD-HIT-EST } CD-HIT-EST clusters a nucleotide dataset into clusters that meet a user-defined similarity threshold, usually a sequence identity. The input is a DNA/RNA dataset in fasta format and the output are two files: a fasta file of representative sequences and a text file of list of clusters. Since eukaryotic genes usually have long introns, which cause long gaps, it is difficult to make full-length alignments for these genes. So, CD-HIT-EST is good for non-intron containing sequences like EST. Basic command: \begin{lstlisting} cd-hit-est -i est_human -o est_human95 -c 0.95 -n 8 \end{lstlisting} Choose of word size: \begin{lstlisting} -n 8,9,10 for thresholds 0.90 ~ 1.0 -n 7 for thresholds 0.88 ~ 0.9 -n 6 for thresholds 0.85 ~ 0.88 -n 5 for thresholds 0.80 ~ 0.85 -n 4 for thresholds 0.75 ~ 0.8 \end{lstlisting} More options: Options, -b, -M, -l, -d, -t, -s, -S, -B, -p, -aL, -AL, -aS, -AS, -g, -G, -T are same to CD-HIT, here are few more cd-hit-est specific options: \begin{lstlisting} -r 1 or 0, default 0, if set to 1, comparing both strand (++, +-) \end{lstlisting} \subsection{CD-HIT-EST-2D } CD-HIT-EST-2D compares 2 nucleotide datasets (db1, db2). It identifies the sequences in db2 that are similar to db1 at a certain threshold. The input are two DNA/RNA datasets (db1, db2) in fasta format and the output are two files: a fasta file of sequences in db2 that are not similar to db1 and a text file that lists similar sequences between db1 \& db2. For same reason as CD-HIT-EST, CD-HIT-EST-2D is good for non-intron containing sequences like EST. Basic command: \begin{lstlisting} cd-hit-est-2d -i mrna_human -i2 est_human -o est_human_novel -c 0.95 -n 8 \end{lstlisting} Choose of word size (same as CD-HIT-EST): \begin{lstlisting} -n 8,9,10 for thresholds 0.90 ~ 1.0 -n 7 for thresholds 0.88 ~ 0.9 -n 6 for thresholds 0.85 ~ 0.88 -n 5 for thresholds 0.80 ~ 0.85 -n 4 for thresholds 0.75 ~ 0.8 \end{lstlisting} More options: Options, -b, -M, -l, -d, -t, -s, -S, -s2, -S2, -B, -p, -aL, -AL, -aS, -AS, -g, -G, -T are same to CD-HIT-2d, here are few more cd-hit-est-2d specific options: \begin{lstlisting} -r 1 or 0, default 0, if set to 1, comparing both strand (++, +-) \end{lstlisting} \subsection{Multi-threaded programs } Multi-threaded cd-hit programs were implemented with OpenMP. Option "-T n" will enable cd-hit to run in parallel in a single multi-core computer. The default value of n is 1 (single thread). "-T 0" will use all the cores in that computer. We have run cd-hit on 4-core, 8-core to 32-core computers and have observed a great speedup. \subsection{CD-HIT-PARA } CD-HIT-PARA is a script that runs cd-hit, cd-hit-est in a parallel mode. It splits the input database; runs cd-hit or cd-hit-est in parallel on a computer cluster; and finally merges the outputs into a single file. You can run it as you run cd-hit or cd-hit-est. The input is a protein or DNA/RNA dataset in fasta format and the output are two files: a fasta file of representative sequences and a text file of list of clusters. There are two ways to run jobs on a cluster: by ssh to a remote computer and by queuing system (PBS and SGE are implemented). In any case, you should have a shared file system, the path to your working directory must be same on all the remote computers. This script can also be used if you are clustering a very large database and your computer doesn't have enough RAM. In that case, all the divided jobs will still run on a single computer. Implementation (see figure below) \begin{enumerate} \item divide input db into many small dbs in decreasing length \item clusters the 1st db by cd-hit \item run cd-hit-2d for other dbs against 1st db \item repeat cd-hit and cd-hit-2d runs till done \item Combine the results \end{enumerate} \begin{figure}[!h] \includegraphics[width=\textwidth]{Figure3.png} \end{figure} Basic command: \begin{lstlisting} cd-hit-para.pl -i nr90 -o nr60 -c 0.6 -n 4 --B hosts --S 64 \end{lstlisting} where\\ \texttt{--B} hosts is a file with available hostnames\\ \texttt{--S} 64 is the number to split input db into, this number should be several times the number of hosts More options: \begin{lstlisting} --P program, "cd-hit" or "cd-hit-est", default "cd-hit" --B filename of list of hosts, requred unless -Q or -L option is supplied --L number of cpus on local computer, default 0 when you are not running it over a cluster, you can use this option to divide a big clustering jobs into small pieces, I suggest you just use "--L 1" unless you have enough RAM for each cpu --S Number of segments to split input DB into, default 64 --Q number of jobs to submit to queue queuing system, default 0 by default, the program use ssh mode to submit remote jobs --T type of queuing system, "PBS", "SGE" are supported, default PBS --R restart file, used after a crash of run \end{lstlisting} \subsection{CD-HIT-2D-PARA } CD-HIT-2D-PARA is a script that runs cd-hit-2d, cd-hit-est-2d in a parallel mode. It splits the input databases; runs cd-hit-2d or cd-hit-est-2d in parallel on a computer cluster; and finally merges the outputs into a single file. You can run it as you run cd-hit-2d or cd-hit-est-2d. The input is a protein or DNA/RAN dataset in fasta format and the output are two files: a fasta file of representative sequences and a text file of list of clusters. Basic command: \begin{lstlisting} cd-hit-para.pl -i nr -i2 swissprot -o swissprot_vs_nr -c 0.6 -n 4 --Q 20 -T "SGE" --S 2 --S2 20 \end{lstlisting} where \begin{lstlisting} --P program, "cd-hit-2d" or "cd-hit-est-2d", default "cd-hit-2d" --B filename of list of hosts, requred unless -Q or -L option is supplied --L number of cpus on local computer, default 0 when you are not running it over a cluster, you can use this option to divide a big clustering jobs into small pieces, I suggest you just use "--L 1" unless you have enough RAM for each cpu --S Number of segments to split 1st db into, default 2 --S2 Number of segments to split 2nd db into, default 8 --Q number of jobs to submit to queue queuing system, default 0 by default, the program use ssh mode to submit remote jobs --T type of queuing system, "PBS", "SGE" are supported, default PBS --R restart file, used after a crash of run -h print this help \end{lstlisting} \subsection{PSI-CD-HIT clustering } PSI-CD-HIT clusters proteins into clusters that meet a user-defined similarity threshold, which can be identity or expect value. Each cluster has one representative sequence. The input is a protein dataset in fasta format and the outputs are two files: a fasta file of representative sequences and a text file of list of clusters Basic command: \begin{lstlisting} psi-cd-hit.pl -i nr60 -o nr30 -c 0.3 psi-cd-hit.pl -i nr60 -o nr30 -c 0.3 -b hosts \end{lstlisting} \begin{lstlisting} More options: \end{lstlisting} Options, -l, -d, -s, -S are same to CD-HIT, here are few more psi-cd-hit specific options: \begin{lstlisting} -ce clustering threshold (blast expect), default -1, by default it doesn't use expect threshold, but with positive value, the program cluster sequences if similarities meet either identity threshold or expect value threshold -L coverage of shorter sequence (aligned / full), default 0 -M coverage of longer sequence (aligned / full), default 0 -R (1/0) use psi-blast profile? default 0, perform psi-blast / pdb-blast type search -G (1/0) use global identity? default 1, sequence identity calculated as total identical residues of local alignments / length of shorter sequence -be blast expect cutoff, default 0.000001 -b filename of list of hosts, to run this program in parallel with ssh calls \end{lstlisting} \subsection{Incremental clustering } It is easy to make incremental update with cd-hit /cd-hit-2d. For example: \begin{lstlisting} nr is the nr database of last month month is the new sequences of nr of this month \end{lstlisting} In last month, you ran: \begin{lstlisting} cd-hit -i nr -o nr90 -c 0.9 -n 5 \end{lstlisting} This month, you can run incremental clustering \begin{lstlisting} cd-hit-2d -i nr90 -i2 month -o month-new -c 0.9 -n 5 cd-hit -i month-new -o month90 -c 0.9 -n 5 cat month90 >> nr90 clstr_merge.pl nr90.clstr month-new.clstr > temp.clstr cat temp.clstr month90.clstr > this_month_nr90.clstr \end{lstlisting} This approach is much faster than runing from scratch. It also preserves stable cluster structure. \subsection{Hierarchically clustering } With multiple-step, iterated runs of CD-HIT, you perform a clustering in a neighbor-joining method, which generates a hierarchical structure. \begin{figure}[!h] \includegraphics[width=\textwidth]{Figure4.png} \end{figure} Commands: \begin{lstlisting} cd-hit -i nr -o nr80 -c 0.8 -n 5 cd-hit -i nr80 -o nr60 -c 0.6 -n 4 psi-cd-hit.pl -i nr60 -o nr30 -c 0.3 \end{lstlisting} This way is faster than one-step run from nr directly to nr30. It can also helps correct errors by one-step clustering (see last paragraph in algorithm limitation section). \clearpage \section{CD-HIT tools } \subsection{cd-hit-div, cd-hit-div.pl } Both the executable binary program cd-hit-div and the perl script divide a FASTA file into pieces. The difference is that cd-hit-div sorts the sequences before dividing them while the perl script does not. Commands: \begin{lstlisting} cd-hit-div -i input -o output -div n cd-hit-div.pl input output n \end{lstlisting} where "n" is the number of output files. The output files will be named as output-0, output-1 etc. \subsection{plot\_len.pl } This is a script to print out distributions of clusters \& sequences. Commands: \begin{lstlisting} plot_len.pl input.clstr \ 1,2-4,5-9,10-19,20-49,50-99,100-299,500-99999 \ 10-59,60-149,150-499,500-1999,2000-999999 \end{lstlisting} where \begin{lstlisting} 2nd line are sizes of cluster 3rd line are lengths of sequences \end{lstlisting} It will print distribution of clusters and sequences : \begin{lstlisting} Size # seq #clstr 10-59 60-149 150-499 500-1999 2000-up 1 266312 266312 36066 103737 103285 22727 497 2-4 208667 81131 1229 14680 44607 20006 609 5-9 156558 24198 118 2148 12026 9388 518 10-19 155387 11681 30 596 5024 5462 569 20-49 176815 6007 6 139 2212 3135 515 50-99 106955 1568 0 24 410 955 179 100-499 154209 896 0 3 124 597 172 500-up 43193 40 0 0 1 14 25 Total 1268096 391833 37449 121327 167689 62284 3084 \end{lstlisting} \subsection{clstr\_sort\_by.pl } This script sort clusters in .clstr file by length, size Commands: \begin{lstlisting} Clstr_sort_by.pl input.clstr no > input_sort.clstr \end{lstlisting} Where, "no" means by size of the cluster \subsection{clstr\_sort\_prot\_by.pl } This script sort sequences within clusters in .clstr file by length, name, etc. Commands: \begin{lstlisting} Clstr_sort_prot_by.pl input.clstr id > input_sort.clstr \end{lstlisting} Where, "no" means by id of sequences \subsection{clstr\_merge.pl } It merges two or more .clstr files. The cluster orders need to be identical. Commands: \begin{lstlisting} cd-hit-2d -i db1 -i2 db2 -o db2new -c 0.9 -n 5 cd-hit-2d -i db1 -i2 db3 -o db3new -c 0.9 -n 5 clstr_merge.pl db2new.clstr db3new.clstr > db23new.clstr \end{lstlisting} \subsection{clstr\_merge\_noorder.pl } It merges two or more .clstr files. The cluster orders do not have to be identical. Commands: \begin{lstlisting} cd-hit-2d -i db1 -i2 db2 -o db2new -c 0.9 -n 5 cd-hit-2d -i db1 -i2 db3 -o db3new -c 0.9 -n 5 clstr_merge_noorder.pl db2new.clstr db3new.clstr > db23new.clstr \end{lstlisting} \subsection{clstr\_ renumber.pl } It renumbers clusters and sequences within clusters in .clstr file after merge or other operations Commands: \begin{lstlisting} Clstr_renumber.pl input.clstr > input_ren.clstr \end{lstlisting} \subsection{clstr\_rev.pl } It combines a .clstr file with its parent .clstr file Commands: \begin{lstlisting} cd-hit -i nr -o nr90 -c 0.9 -n 5 cd-hit -i nr90 -o nr60 -c 0.6 -n 4 clstr_rev.pl nr90.clstr nr60.clstr > nr60_from90.clstr psi-cd-hit -i nr60 -o nr30 -c 0.3 clstr_rev.pl nr60_from90.clstr nr30.clstr > nr30_from90.clstr \end{lstlisting} \subsection{make\_multi\_seq.pl } This script reads the .clstr file, it generates a separate fasta file for each cluster over certain size and saves it in designated subdirectory. To run this script correctly, "-d 0" option should be used in the cd-hit run and it is better to use "-g 1" in the cd-hit run to get accurate clustering results. For example, Commands: \begin{lstlisting} cd-hit -i db -o dbout -c 0.6 -n 4 -d 0 -g 1 make_multi_seq.pl seq_db dbout.clstr multi-seq 20 \end{lstlisting} will generate fasta files in "multi-seq" directory for clusters with more than 20 member sequences. Files will be named as "clusterN" where "N" is serial number of a cluster. \subsection{clstr2xml.pl } This script converts a cluster file or combines multiple cluster files from a hierarchical cd-hit run to xml format. The output is sorted by sequence length (default) or cluster size. The input cluster files must be in the order of being generated, that is, the cluster file with higher identity cutoff comes first. Command: \begin{lstlisting} clstr2xml.pl [-len|-size] input1.clstr [input2.clstr input3.clstr ...] \end{lstlisting} \clearpage \section{CD-HIT Web Server } The CD-HIT web server is available from \href{http:\slash \slash cd-hit.org}{http:\slash \slash cd-hit.org}. All basic functions of CD-HIT are provided through tab-based interfaces in our web server. For CD-HIT and CD-HIT-EST, users can upload a FASTA file, select a desired sequence identity level and other parameters. CD-HIT-2D (CD-HIT-EST-2D) can compare two databases uploaded by users. H-CD-HIT and H-CD-HIT-EST in our server performs hierarchical clustering up to 3 steps. The CD-HIT-454 web server is also available from \href{http:\slash \slash cd-hit.org}{http:\slash \slash cd-hit.org}. \clearpage \section{References } If you find cd-hit helpful to your research and study, please kindly cite the relevant references from the list below. \begin{enumerate} \item Clustering of highly homologous sequences to reduce the size of large protein databases. Weizhong Li, Lukasz Jaroszewski \& Adam Godzik. Bioinformatics (2001) 17:282-283, \href{http:\slash \slash bioinformatics.oupjournals.org\slash cgi\slash reprint\slash 17\slash 3\slash 282.pdf}{PDF}, \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash entrez\slash query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=11294794}{Pubmed} \item Tolerating some redundancy significantly speeds up clustering of large protein databases. Weizhong Li, Lukasz Jaroszewski \& Adam Godzik. Bioinformatics (2002) 18: 77-82, \href{http:\slash \slash bioinformatics.oupjournals.org\slash cgi\slash reprint\slash 18\slash 1\slash 77.pdf}{PDF}, \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash entrez\slash query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=11836214}{Pubmed} \item Cd-hit: a fast program for clustering and comparing large sets of protein or nucleotide sequences. Weizhong Li \& Adam Godzik. . Bioinformatics (2006) 22:1658-1659, \href{http:\slash \slash bioinformatics.oxfordjournals.org\slash cgi\slash reprint\slash 22\slash 13\slash 1658}{PDF}, \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash entrez\slash query.fcgi?db=pubmed&cmd=Retrieve&dopt=Abstract&list_uids=16731699}{Pubmed} \item Ying Huang, Beifang Niu, Ying Gao, Limin Fu and Weizhong Li. CD-HIT Suite: a web server for clustering and comparing biological sequences. Bioinformatics, (2010). 26:680 \href{http:\slash \slash bioinformatics.oxfordjournals.org\slash cgi\slash reprint\slash btq003v1}{PDF} \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash pubmed\slash 20053844}{Pubmed} \item Beifang Niu, Limin Fu, Shulei Sun and Weizhong Li, Artificial and natural duplicates in pyrosequencing reads of metagenomic data. BMC Bioinformatics, (2010), 11:187 \href{http:\slash \slash www.biomedcentral.com\slash content\slash pdf\slash 1471-2105-11-187.pdf}{PDF} \href{http:\slash \slash www.ncbi.nlm.nih.gov\slash pubmed\slash 20388221}{Pubmed} \end{enumerate} \end{document}cdhit-4.8.1/doc/cdhit-user-guide.wiki000066400000000000000000002313461343604040700174250ustar00rootroot00000000000000====== CD-HIT User's Guide ====== Last updated: ~~LASTMOD~~ [[http://cd-hit.org]] Program developed by Weizhong Li's lab at UCSD [[http://weizhongli-lab.org]] and JCVI [[http://jcvi.org]] [[liwz@sdsc.edu]] ===== Introduction ===== CD-HIT is a widely used program for clustering biological sequences to reduce sequence redundancy and improve the performance of other sequence analyses. CD-HIT was originally developed to cluster protein sequences to create reference databases with reduced redundancy (Li, et al., 2001) and was then extended to support clustering nucleotide sequences and comparing two datasets (Li and Godzik, 2006). The CD-HIT web server was implemented in 2009, which allows users to cluster or compare sequences without using command-line CD-HIT. The server provides interactive interface and additional visualization tools. Currently, CD-HIT package has many programs: cd-hit, cd-hit-2d, cd-hit-est, cd-hit-est-2d, cd-hit-para, cd-hit-2d-para, psi-cd-hit, cd-hit-454, cd-hit-dup, cd-hit-lap, cd-hit-OTU etc. There are also many utility scripts, written in Perl, to help run and analyze CD-HIT jobs. Briefly: * cd-hit Cluster peptide sequences * cd-hit-est Cluster nucleotide sequences * cd-hit-2d Compare 2 peptide databases * cd-hit-est-2d Compare 2 nucleotide databases * psi-cd-hit Cluster proteins at <40% cutoff * cd-hit-lap Identify overlapping reads * cd-hit-dup Identify duplicates from single or paired Illumina reads * cd-hit-454 Identify duplicates from 454 reads * cd-hit-otu Cluster rRNA tags * cd-hit Web server Cluster user-uploaded data * cd-hit-para Cluster sequences in parallel on a computer cluster * scripts Parse results and so on * h-cd-hit Hierarchical clustering Recently development of cd-hit, especially the multiple-threaded version introduced in 2012 (Fu et al), enables clustering of very large NGS datasets. For example, it only took cd-hit less than a day on a 32-core computer to cluster a few hundred million protein sequences from a metagenomics study. ===== Algorithm ===== __**[You can skip this session if you are eager to use the programs, no problem].**__ Algorithms for CD-HIT were described in these papers. *1. Weizhong Li, Lukasz Jaroszewski & Adam Godzik. Clustering of highly homologous sequences to reduce the size of large protein databases. Bioinformatics (2001) 17:282-283, [[http://bioinformatics.oupjournals.org/cgi/reprint/17/3/282.pdf|PDF]], [[http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=11294794|Pubmed]] *2. Weizhong Li, Lukasz Jaroszewski & Adam Godzik. Tolerating some redundancy significantly speeds up clustering of large protein databases. Bioinformatics (2002) 18: 77-82, [[http://bioinformatics.oupjournals.org/cgi/reprint/18/1/77.pdf|PDF]], [[http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=11836214|Pubmed]] *3. Weizhong Li & Adam Godzik. Cd-hit: a fast program for clustering and comparing large sets of protein or nucleotide sequences. Bioinformatics (2006) 22:1658-1659 [[http://bioinformatics.oxfordjournals.org/cgi/reprint/22/13/1658|PDF]], [[http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=pubmed&cmd=Retrieve&dopt=Abstract&list_uids=16731699|Pubmed]] *4. Limin Fu, Beifang Niu, Zhengwei Zhu, Sitao Wu and Weizhong Li. CD-HIT: accelerated for clustering the next generation sequencing data. Bioinformatics (2012) 28:3150-3152, doi: 10.1093/bioinformatics/bts565 [[http://bioinformatics.oxfordjournals.org/content/28/23/3150|PDF]] *5. Ying Huang, Beifang Niu, Ying Gao, Limin Fu and Weizhong Li. CD-HIT Suite: a web server for clustering and comparing biological sequences. Bioinformatics, (2010). 26:680 [[http://bioinformatics.oxfordjournals.org/cgi/reprint/btq003v1|PDF]] [[http://www.ncbi.nlm.nih.gov/pubmed/20053844|Pubmed]] *6. Beifang Niu, Limin Fu, Shulei Sun and Weizhong Li, Artificial and natural duplicates in pyrosequencing reads of metagenomic data. BMC Bioinformatics, (2010) 11:187 [[http://www.biomedcentral.com/content/pdf/1471-2105-11-187.pdf|PDF]] [[http://www.ncbi.nlm.nih.gov/pubmed/20388221|Pubmed]] *7. Weizhong Li, Limin Fu, Beifang Niu, Sitao Wu and John Wooley. Ultrafast clustering algorithms for metagenomic sequence analysis. Briefings in Bioinformatics, (2012) 13 (6): 656-668. doi: 10.1093/bib/bbs035 [[http://bib.oxfordjournals.org/content/13/6/656|PDF]] ==== CD-HIT clustering algorithm ==== Clustering a sequence database usually requires all-by-all comparisons; therefore it is very time-consuming. Many methods use BLAST to compute the all vs. all similarities. It is very difficult for these methods to cluster large databases. While CD-HIT can avoid many pairwise sequence alignments with a short word based heuristics. CD-HIT is a greedy incremental clustering approach. The basic CD-HIT algorithm sorts the input sequences from long to short, and processes them sequentially from the longest to the shortest. The first sequence is automatically classified as the first cluster representative sequence. Then each query sequence of the remaining sequences is compared to the representative sequences found before it, and is classified as redundant or representative based on whether it is similar to one of the existing representative sequences. In default manner (fast mode), a query is grouped into the first representative without comparing to other representatives. In accurate mode, a query is compared to all representatives and grouped to the most similar one. Based on this greedy method, we established several integrated heuristics that make CD-HIT very efficient. **Index table**: Most sequence alignment tools use short words or k-mer (k is the length) to speed up computation. For example, BLASTN uses 11-mer and BLASTP uses 3-mer by default. An index table, as opposite to a hash table used in most fast alignment methods, uses a unique index for every unique k-mer, therefore an index table is much faster than a hash table. In CD-HIT, we use k=2~5 for proteins and k=8~12 for DNAs, because the all the k-mers can be indexed in computer memory. **Short word filter**: Two sequences of a certain identity must share at least a specific number of identical k-mers. It is possible to tell that the identity between two sequences is below a cutoff by counting common k-mers. The filter checks the common k-mers and rejects unnecessary alignments. **Short word statistics**: It is the key for the high efficiency of a short word filter (Li, et al., 2002). Through statistical analysis of real alignments, we identified the distribution of common k-mer at different sequence lengths and identities, and applied the results to short word filter. **Banded alignment**: The short word filter not only filters out unnecessary alignment, when alignment is needed, it also identifies a narrow band for banded dynamic programming alignment, which is much faster than regular dynamic programming. **Reduced alphabet (to be implemented)**: This is for protein clustering. In reduced alphabet, a group of exchangeable residues are reduced to a single residue (I/V/L==>I, S/T==>S, D/E==>D, K/R==>K, F/Y==>F), and then conservative mutations would appear as identities in sequence alignments. It improves the short word filter for clustering at low sequence identity below 50%. **Gapped word (to be implemented)**: Short word filter using gapped word allows mismatch within a word such as “ACE†vs “AMEâ€Â, “ACFE†vs “AMYEâ€Â, and “AACTT†vs “AAGTTâ€Â, which can be written as “101â€Â, “1001†and “11011â€Â. At low identity cutoff, a gapped word is more efficient than an ungapped word for filtering. ==== Algorithm limitations ==== A limitation of short word filter is that it can not be used below certain clustering thresholds. For proteins: * word size 5 is for thresholds 0.7 ~ 1.0 * word size 4 is for thresholds 0.6 ~ 0.7 * word size 3 is for thresholds 0.5 ~ 0.6 * word size 2 is for thresholds 0.4 ~ 0.5 (also see psi-cd-hit) For DNAs: * Word size 10-11 is for thresholds 0.95 ~ 1.0 * Word size 8,9 is for thresholds 0.90 ~ 0.95 * Word size 7 is for thresholds 0.88 ~ 0.9 * Word size 6 is for thresholds 0.85 ~ 0.88 * Word size 5 is for thresholds 0.80 ~ 0.85 * Word size 4 is for thresholds 0.75 ~ 0.8 Because of the algorithm, cd-hit may not be used for clustering proteins at <40% identity. Cd-hit-est cannot cluster very long sequences either (e.g. genome sized sequences). In such cases, please use PSI-CD-HIT, which will be introduced in following sections. ===== User's Guide ===== ==== Installation ==== It can be copied under the GNU General Public License version 2 (GPLv2). Most CD-HIT programs were written in C++. Installing CD-HIT package is very simple: * download current CD-HIT at [[https://github.com/weizhongli/cdhit/releases]], for example cd-hit-v4.6.6-2016-0711.tar.gz * unpack the file with " tar xvf cd-hit-v4.6.6-2016-0711.tar.gz --gunzip" * change dir by "cd cd-hit-v4.6.6-2016-0711" * compile the programs by "make" with multi-threading (default), or by "make openmp=no" without multi-threading (on old systems without OpenMP) * cd cd-hit-auxtools * compile cd-hit-auxtools by "make" ==== CD-HIT ==== CD-HIT clusters proteins into clusters that meet a user-defined similarity threshold, usually a sequence identity. Each cluster has one representative sequence. The input is a protein dataset in fasta format and the output are two files: a fasta file of representative sequences and a text file of list of clusters. Basic command: cd-hit -i nr -o nr100 -c 1.00 -n 5 -M 16000 –d 0 -T 8 cd-hit -i db -o db90 -c 0.9 -n 5 -M 16000 –d 0 -T 8, where\\ ''db'' is the filename of input, \\ ''db90'' is output, \\ ''-c 1.0'', means 100% identity, is the clustering threshold\\ ''-c 0.9'', means 90% identity, is the clustering threshold\\ ''-n 5'' is the word size\\ ''-d 0'' use sequence name in fasta header till the first white space\\ ''-M 16000'', to use 16GB RAM\\ ''-T 8'', to use 8 threads\\ Choose of word size: ''-n 5'' for thresholds 0.7 ~ 1.0\\ ''-n 4'' for thresholds 0.6 ~ 0.7\\ ''-n 3'' for thresholds 0.5 ~ 0.6\\ ''-n 2'' for thresholds 0.4 ~ 0.5\\ Complete options: __**The most updated options are available from the command line version of the programs. Running the programs without any argument will print out the detailed options.**__ -i input filename in fasta format, required -o output filename, required -c sequence identity threshold, default 0.9 this is the default cd-hit's "global sequence identity" calculated as: number of identical amino acids in alignment divided by the full length of the shorter sequence -G use global sequence identity, default 1 if set to 0, then use local sequence identity, calculated as : number of identical amino acids in alignment divided by the length of the alignment NOTE!!! don't use -G 0 unless you use alignment coverage controls see options -aL, -AL, -aS, -AS -b band_width of alignment, default 20 -M memory limit (in MB) for the program, default 800; 0 for unlimitted; -T number of threads, default 1; with 0, all CPUs will be used -n word_length, default 5, see user's guide for choosing it -l length of throw_away_sequences, default 10 -t tolerance for redundance, default 2 -d length of description in .clstr file, default 20 if set to 0, it takes the fasta defline and stops at first space -s length difference cutoff, default 0.0 if set to 0.9, the shorter sequences need to be at least 90% length of the representative of the cluster -S length difference cutoff in amino acid, default 999999 if set to 60, the length difference between the shorter sequences and the representative of the cluster can not be bigger than 60 -aL alignment coverage for the longer sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AL alignment coverage control for the longer sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -aS alignment coverage for the shorter sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AS alignment coverage control for the shorter sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -A minimal alignment coverage control for the both sequences, default 0 alignment must cover >= this value for both sequences -uL maximum unmatched percentage for the longer sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -uS maximum unmatched percentage for the shorter sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -U maximum unmatched length, default 99999999 if set to 10, the unmatched region (excluding leading and tailing gaps) must not be more than 10 bases -B 1 or 0, default 0, by default, sequences are stored in RAM if set to 1, sequence are stored on hard drive !! No longer supported !! -p 1 or 0, default 0 if set to 1, print alignment overlap in .clstr file -g 1 or 0, default 0 by cd-hit's default algorithm, a sequence is clustered to the first cluster that meet the threshold (fast cluster). If set to 1, the program will cluster it into the most similar cluster that meet the threshold (accurate but slow mode) but either 1 or 0 won't change the representatives of final clusters -sc sort clusters by size (number of sequences), default 0, output clusters by decreasing length if set to 1, output clusters by decreasing size -sf sort fasta/fastq by cluster size (number of sequences), default 0, no sorting if set to 1, output sequences by decreasing cluster size -bak write backup cluster file (1 or 0, default 0) -h print this help Alignment coverage control: See the figure below, the -aL, -AL, -aS and -AS options can be used to specify the alignment coverage on both the representative sequence and other sequences. -s and -S can control the length difference between the representative sequence and other sequences. {{ :cd-hit-figure2.png }} '' aL = Ra / R\\ AL = R - Ra\\ aS = Sa / S\\ AS = S - Sa\\ s = Sa / Ra\\ S = R / S\\ U = S1 + S2\\ uL = U / R\\ uS = U / S '' Output: The output .clstr file looks like >Cluster 0 0 2799aa, >PF04998.6|RPOC2_CHLRE/275-3073... * >Cluster 1 0 2214aa, >PF06317.1|Q6Y625_9VIRU/1-2214... at 80% 1 2215aa, >PF06317.1|O09705_9VIRU/1-2215... at 84% 2 2217aa, >PF06317.1|Q6Y630_9VIRU/1-2217... * 3 2216aa, >PF06317.1|Q6GWS6_9VIRU/1-2216... at 84% 4 527aa, >PF06317.1|Q67E14_9VIRU/6-532... at 63% >Cluster 2 0 2202aa, >PF06317.1|Q6UY61_9VIRU/8-2209... at 60% 1 2208aa, >PF06317.1|Q6IVU4_JUNIN/1-2208... * 2 2207aa, >PF06317.1|Q6IVU0_MACHU/1-2207... at 73% 3 2208aa, >PF06317.1|RRPO_TACV/1-2208... at 69% where\\ a ">" starts a new cluster\\ a "*" at the end means that this sequence is the representative of this cluster\\ a "%" is the identity between this sequence and the representative ==== CD-HIT-2D ==== CD-HIT-2D compares 2 protein datasets (db1, db2). It identifies the sequences in db2 that are similar to db1 at a certain threshold. The input are two protein datasets (db1, db2) in fasta format and the output are two files: a fasta file of proteins in db2 that are not similar to db1 and a text file that lists similar sequences between db1 & db2. Basic command: cd-hit-2d -i db1 -i2 db2 -o db2novel -c 0.9 -n 5 -d 0 -M 16000 -T 8 where\\ ''db1'' & ''db2'' are inputs,\\ ''db2novel'' is output,\\ ''0.9'' means 90% identity, is the comparing threshold\\ ''5'' is the size of word Please note that by default, cd-hit only lists matches where sequences in db2 are not longer than sequences in db1. You may use options -S2 or -s2 to overwrite this default. You can also swap db1 and db2: cd-hit-2d -i db1 -i2 db2 -o db2novel -c 0.9 -n 5 -d 0 -M 16000 -T 8 -s2 0.9 cd-hit-2d -i db2 -i2 db1 -o db1novel -c 0.9 -n 5 -d 0 -M 16000 -T 8 (swap db1 and db2) Choose of word size (same as cd-hit): -n 5 for thresholds 0.7 ~ 1.0 -n 4 for thresholds 0.6 ~ 0.7 -n 3 for thresholds 0.5 ~ 0.6 -n 2 for thresholds 0.4 ~ 0.5 Options: -i input filename for db1 in fasta format, required -i2 input filename for db2 in fasta format, required -o output filename, required -c sequence identity threshold, default 0.9 this is the default cd-hit's "global sequence identity" calculated as: number of identical amino acids in alignment divided by the full length of the shorter sequence -G use global sequence identity, default 1 if set to 0, then use local sequence identity, calculated as : number of identical amino acids in alignment divided by the length of the alignment NOTE!!! don't use -G 0 unless you use alignment coverage controls see options -aL, -AL, -aS, -AS -b band_width of alignment, default 20 -M memory limit (in MB) for the program, default 800; 0 for unlimitted; -T number of threads, default 1; with 0, all CPUs will be used -n word_length, default 5, see user's guide for choosing it -l length of throw_away_sequences, default 10 -t tolerance for redundance, default 2 -d length of description in .clstr file, default 20 if set to 0, it takes the fasta defline and stops at first space -s length difference cutoff, default 0.0 if set to 0.9, the shorter sequences need to be at least 90% length of the representative of the cluster -S length difference cutoff in amino acid, default 999999 if set to 60, the length difference between the shorter sequences and the representative of the cluster can not be bigger than 60 -s2 length difference cutoff for db1, default 1.0 by default, seqs in db1 >= seqs in db2 in a same cluster if set to 0.9, seqs in db1 may just >= 90% seqs in db2 -S2 length difference cutoff, default 0 by default, seqs in db1 >= seqs in db2 in a same cluster if set to 60, seqs in db2 may 60aa longer than seqs in db1 -aL alignment coverage for the longer sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AL alignment coverage control for the longer sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -aS alignment coverage for the shorter sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AS alignment coverage control for the shorter sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -A minimal alignment coverage control for the both sequences, default 0 alignment must cover >= this value for both sequences -uL maximum unmatched percentage for the longer sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -uS maximum unmatched percentage for the shorter sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -U maximum unmatched length, default 99999999 if set to 10, the unmatched region (excluding leading and tailing gaps) must not be more than 10 bases -B 1 or 0, default 0, by default, sequences are stored in RAM if set to 1, sequence are stored on hard drive !! No longer supported !! -p 1 or 0, default 0 if set to 1, print alignment overlap in .clstr file -g 1 or 0, default 0 by cd-hit's default algorithm, a sequence is clustered to the first cluster that meet the threshold (fast cluster). If set to 1, the program will cluster it into the most similar cluster that meet the threshold (accurate but slow mode) but either 1 or 0 won't change the representatives of final clusters -bak write backup cluster file (1 or 0, default 0) -h print this help ==== CD-HIT-EST ==== CD-HIT-EST clusters a nucleotide dataset into clusters that meet a user-defined similarity threshold, usually a sequence identity. The input is a DNA/RNA dataset in fasta format and the output are two files: a fasta file of representative sequences and a text file of list of clusters. Since eukaryotic genes usually have long introns, which cause long gaps, it is difficult to make full-length alignments for these genes. So, CD-HIT-EST is good for non-intron containing sequences like EST. Basic command: cd-hit-est -i est_human -o est_human95 -c 0.95 -n 10 -d 0 -M 16000 - T 8 cd-hit-est -i R1.fa -j R2.fa -o R1.95.fa -op R2.95.fa -P 1 -c 0.95 -n 10 -d 0 -M 16000 - T 8 Choose of word size: -n 10, 11 for thresholds 0.95 ~ 1.0 -n 8,9 for thresholds 0.90 ~ 0.95 -n 7 for thresholds 0.88 ~ 0.9 -n 6 for thresholds 0.85 ~ 0.88 -n 5 for thresholds 0.80 ~ 0.85 -n 4 for thresholds 0.75 ~ 0.8 Options: -i input filename in fasta format, required -j input filename in fasta/fastq format for R2 reads if input are paired end (PE) files -i R1.fq -j R2.fq -o output_R1 -op output_R2 or -i R1.fa -j R2.fa -o output_R1 -op output_R2 -o output filename, required -op output filename for R2 reads if input are paired end (PE) files -c sequence identity threshold, default 0.9 this is the default cd-hit's "global sequence identity" calculated as: number of identical amino acids in alignment divided by the full length of the shorter sequence -G use global sequence identity, default 1 if set to 0, then use local sequence identity, calculated as : number of identical amino acids in alignment divided by the length of the alignment NOTE!!! don't use -G 0 unless you use alignment coverage controls see options -aL, -AL, -aS, -AS -b band_width of alignment, default 20 -M memory limit (in MB) for the program, default 800; 0 for unlimitted; -T number of threads, default 1; with 0, all CPUs will be used -n word_length, default 10, see user's guide for choosing it -l length of throw_away_sequences, default 10 -d length of description in .clstr file, default 20 if set to 0, it takes the fasta defline and stops at first space -s length difference cutoff, default 0.0 if set to 0.9, the shorter sequences need to be at least 90% length of the representative of the cluster -S length difference cutoff in amino acid, default 999999 if set to 60, the length difference between the shorter sequences and the representative of the cluster can not be bigger than 60 -aL alignment coverage for the longer sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AL alignment coverage control for the longer sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -aS alignment coverage for the shorter sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AS alignment coverage control for the shorter sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -A minimal alignment coverage control for the both sequences, default 0 alignment must cover >= this value for both sequences -uL maximum unmatched percentage for the longer sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -uS maximum unmatched percentage for the shorter sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -U maximum unmatched length, default 99999999 if set to 10, the unmatched region (excluding leading and tailing gaps) must not be more than 10 bases -B 1 or 0, default 0, by default, sequences are stored in RAM if set to 1, sequence are stored on hard drive !! No longer supported !! -P input paired end (PE) reads, default 0, single file if set to 1, please use -i R1 -j R2 to input both PE files -cx length to keep after trimming the tail of sequence, default 0, not trimming if set to 50, the program only uses the first 50 letters of input sequence -cy length to keep after trimming the tail of R2 sequence, default 0, not trimming if set to 50, the program only uses the first 50 letters of input R2 sequence e.g. -cx 100 -cy 80 for paired end reads -ap alignment position constrains, default 0, no constrain if set to 1, the program will force sequences to align at beginings when set to 1, the program only does +/+ alignment -p 1 or 0, default 0 if set to 1, print alignment overlap in .clstr file -g 1 or 0, default 0 by cd-hit's default algorithm, a sequence is clustered to the first cluster that meet the threshold (fast cluster). If set to 1, the program will cluster it into the most similar cluster that meet the threshold (accurate but slow mode) but either 1 or 0 won't change the representatives of final clusters -r 1 or 0, default 1, by default do both +/+ & +/- alignments if set to 0, only +/+ strand alignment -mask masking letters (e.g. -mask NX, to mask out both 'N' and 'X') -match matching score, default 2 (1 for T-U and N-N) -mismatch mismatching score, default -2 -gap gap opening score, default -6 -gap-ext gap extension score, default -1 -bak write backup cluster file (1 or 0, default 0) -sc sort clusters by size (number of sequences), default 0, output clusters by decreasing length if set to 1, output clusters by decreasing size -sf sort fasta/fastq by cluster size (number of sequences), default 0, no sorting if set to 1, output sequences by decreasing cluster size -h print this help ==== CD-HIT-EST-2D ==== CD-HIT-EST-2D compares 2 nucleotide datasets (db1, db2). It identifies the sequences in db2 that are similar to db1 at a certain threshold. The input are two DNA/RNA datasets (db1, db2) in fasta format and the output are two files: a fasta file of sequences in db2 that are not similar to db1 and a text file that lists similar sequences between db1 & db2. For same reason as CD-HIT-EST, CD-HIT-EST-2D is good for non-intron containing sequences like EST. Basic command: cd-hit-est-2d -i mrna_human -i2 est_human -o est_human_novel -c 0.95 -n 10 -d 0 -M 16000 - T 8 cd-hit-est-2d -i db1.R1.fa -j db1.R2.fa -i2 db2.R1.fa -j2 db2.R2.fa -o db2_novel.R1.fa -op db2_novel.R2.fa -P 1 -c 0.95 -n 10 -d 0 -M 16000 - T 8 Choose of word size and options are the same as CD-HIT-EST: Options: -i input filename for db1 in fasta format, required -i2 input filename for db2 in fasta format, required -j, -j2 input filename in fasta/fastq format for R2 reads if input are paired end (PE) files -i db1-R1.fq -j db1-R2.fq -i2 db2-R1.fq -j2 db2-R2.fq -o output_R1 -op output_R2 or -i db1-R1.fa -j db1-R2.fa -i2 db2-R1.fq -j2 db2-R2.fq -o output_R1 -op output_R2 -o output filename, required -op output filename for R2 reads if input are paired end (PE) files -c sequence identity threshold, default 0.9 this is the default cd-hit's "global sequence identity" calculated as: number of identical amino acids in alignment divided by the full length of the shorter sequence -G use global sequence identity, default 1 if set to 0, then use local sequence identity, calculated as : number of identical amino acids in alignment divided by the length of the alignment NOTE!!! don't use -G 0 unless you use alignment coverage controls see options -aL, -AL, -aS, -AS -b band_width of alignment, default 20 -M memory limit (in MB) for the program, default 800; 0 for unlimitted; -T number of threads, default 1; with 0, all CPUs will be used -n word_length, default 10, see user's guide for choosing it -l length of throw_away_sequences, default 10 -d length of description in .clstr file, default 20 if set to 0, it takes the fasta defline and stops at first space -s length difference cutoff, default 0.0 if set to 0.9, the shorter sequences need to be at least 90% length of the representative of the cluster -S length difference cutoff in amino acid, default 999999 if set to 60, the length difference between the shorter sequences and the representative of the cluster can not be bigger than 60 -s2 length difference cutoff for db1, default 1.0 by default, seqs in db1 >= seqs in db2 in a same cluster if set to 0.9, seqs in db1 may just >= 90% seqs in db2 -S2 length difference cutoff, default 0 by default, seqs in db1 >= seqs in db2 in a same cluster if set to 60, seqs in db2 may 60aa longer than seqs in db1 -aL alignment coverage for the longer sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AL alignment coverage control for the longer sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -aS alignment coverage for the shorter sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AS alignment coverage control for the shorter sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -A minimal alignment coverage control for the both sequences, default 0 alignment must cover >= this value for both sequences -uL maximum unmatched percentage for the longer sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -uS maximum unmatched percentage for the shorter sequence, default 1.0 if set to 0.1, the unmatched region (excluding leading and tailing gaps) must not be more than 10% of the sequence -U maximum unmatched length, default 99999999 if set to 10, the unmatched region (excluding leading and tailing gaps) must not be more than 10 bases -B 1 or 0, default 0, by default, sequences are stored in RAM if set to 1, sequence are stored on hard drive !! No longer supported !! -P input paired end (PE) reads, default 0, single file if set to 1, please use -i R1 -j R2 to input both PE files -cx length to keep after trimming the tail of sequence, default 0, not trimming if set to 50, the program only uses the first 50 letters of input sequence -cy length to keep after trimming the tail of R2 sequence, default 0, not trimming if set to 50, the program only uses the first 50 letters of input R2 sequence e.g. -cx 100 -cy 80 for paired end reads -p 1 or 0, default 0 if set to 1, print alignment overlap in .clstr file -g 1 or 0, default 0 by cd-hit's default algorithm, a sequence is clustered to the first cluster that meet the threshold (fast cluster). If set to 1, the program will cluster it into the most similar cluster that meet the threshold (accurate but slow mode) but either 1 or 0 won't change the representatives of final clusters -r 1 or 0, default 1, by default do both +/+ & +/- alignments if set to 0, only +/+ strand alignment -mask masking letters (e.g. -mask NX, to mask out both 'N' and 'X') -match matching score, default 2 (1 for T-U and N-N) -mismatch mismatching score, default -2 -gap gap opening score, default -6 -gap-ext gap extension score, default -1 -bak write backup cluster file (1 or 0, default 0) -h print this help ==== CD-HIT-454 clustering ==== We implemented a program called cd-hit-454 to identify duplicated 454 reads by reengineering cd-hit-est. Duplicates are either exactly identical or meet these criteria includes: (1) they start at the same position; (2) their lengths can be different, but shorter one must be fully aligned with the longer one (the seed); (3) they can only have 4% mismatches (insertion, deletion, and substitution); and (4) only 1 base is allowed per insertion or deletion. Here, (3) and (4) can be adjusted by users. We allow mismatches in order to tolerate sequencing errors. To find duplicates in Illumina reads, please use cd-hit-dup (see later sections) Basic command: cd-hit-454 -i 454_reads -o 454_reads_95 -c 0.95 -n 10 -d 0 -M 16000 - T 8 Options: -i input filename in fasta format, required -o output filename, required -c sequence identity threshold, default 0.98 this is a "global sequence identity" calculated as : number of identical amino acids in alignment divided by the full length of the shorter sequence + gaps -b band_width of alignment, default 10 -M memory limit (in MB) for the program, default 800; 0 for unlimitted; -T number of threads, default 1; with 0, all CPUs will be used -n word_length, default 10, see user's guide for choosing it -aL alignment coverage for the longer sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AL alignment coverage control for the longer sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -aS alignment coverage for the shorter sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -AS alignment coverage control for the shorter sequence, default 99999999 if set to 60, and the length of the sequence is 400, then the alignment must be >= 340 (400-60) residues -B 1 or 0, default 0, by default, sequences are stored in RAM if set to 1, sequence are stored on hard drive it is recommended to use -B 1 for huge databases -g 1 or 0, default 0 by cd-hit's default algorithm, a sequence is clustered to the first cluster that meet the threshold (fast cluster). If set to 1, the program will cluster it into the most similar cluster that meet the threshold (accurate but slow mode) but either 1 or 0 won't change the representatives of final clusters -D max size per indel, default 1 -match matching score, default 2 -mismatch mismatching score, default -1 -gap gap opening score, default -3 -gap-ext gap extension score, default -1 -bak write backup cluster file (1 or 0, default 0) ==== Multi-threaded programs ==== Multi-threaded cd-hit programs were implemented with OpenMP. Option "-T n" will enable cd-hit to run in parallel in a single multi-core computer. The default value of n is 1 (single thread). "-T 0" will use all the cores in that computer. We have run cd-hit on 4-core, 8-core to 16-core computers and have observed a great speedup. ==== CD-HIT-PARA ==== __** [CD-HIT-PARA is no longer supported, since the multi-threaded cd-hit become available.] **__ CD-HIT-PARA is a script that runs cd-hit, cd-hit-est in a parallel mode. It splits the input database; runs cd-hit or cd-hit-est in parallel on a computer cluster; and finally merges the outputs into a single file. You can run it as you run cd-hit or cd-hit-est. The input is a protein or DNA/RNA dataset in fasta format and the output are two files: a fasta file of representative sequences and a text file of list of clusters. There are two ways to run jobs on a cluster: by ssh to a remote computer and by queuing system (PBS and SGE are implemented). In any case, you should have a shared file system, the path to your working directory must be same on all the remote computers. This script can also be used if you are clustering a very large database and your computer doesn't have enough RAM. In that case, all the divided jobs will still run on a single computer. Implementation (see figure below) - divide input db into many small dbs in decreasing length - clusters the 1st db by cd-hit - run cd-hit-2d for other dbs against 1st db - repeat cd-hit and cd-hit-2d runs till done - Combine the results {{ :cd-hit-figure3.png }} Basic command: cd-hit-para.pl -i nr90 -o nr60 -c 0.6 -n 4 --B hosts --S 64 where\\ ''--B'' hosts is a file with available hostnames\\ ''--S'' 64 is the number to split input db into, this number should be several times the number of hosts More options: --P program, "cd-hit" or "cd-hit-est", default "cd-hit" --B filename of list of hosts, requred unless -Q or -L option is supplied --L number of cpus on local computer, default 0 when you are not running it over a cluster, you can use this option to divide a big clustering jobs into small pieces, I suggest you just use "--L 1" unless you have enough RAM for each cpu --S Number of segments to split input DB into, default 64 --Q number of jobs to submit to queue queuing system, default 0 by default, the program use ssh mode to submit remote jobs --T type of queuing system, "PBS", "SGE" are supported, default PBS --R restart file, used after a crash of run ==== CD-HIT-2D-PARA ==== __** [CD-HIT-2D-PARA is no longer supported, since the multi-threaded cd-hit become available.] **__ CD-HIT-2D-PARA is a script that runs cd-hit-2d, cd-hit-est-2d in a parallel mode. It splits the input databases; runs cd-hit-2d or cd-hit-est-2d in parallel on a computer cluster; and finally merges the outputs into a single file. You can run it as you run cd-hit-2d or cd-hit-est-2d. The input is a protein or DNA/RAN dataset in fasta format and the output are two files: a fasta file of representative sequences and a text file of list of clusters. Basic command: cd-hit-para.pl -i nr -i2 swissprot -o swissprot_vs_nr -c 0.6 -n 4 --Q 20 -T "SGE" --S 2 --S2 20 where --P program, "cd-hit-2d" or "cd-hit-est-2d", default "cd-hit-2d" --B filename of list of hosts, requred unless -Q or -L option is supplied --L number of cpus on local computer, default 0 when you are not running it over a cluster, you can use this option to divide a big clustering jobs into small pieces, I suggest you just use "--L 1" unless you have enough RAM for each cpu --S Number of segments to split 1st db into, default 2 --S2 Number of segments to split 2nd db into, default 8 --Q number of jobs to submit to queue queuing system, default 0 by default, the program use ssh mode to submit remote jobs --T type of queuing system, "PBS", "SGE" are supported, default PBS --R restart file, used after a crash of run -h print this help ==== Incremental clustering ==== It is easy to make incremental update with cd-hit /cd-hit-2d. For example: nr is the nr database of last month month is the new sequences of nr of this month In last month, you ran: cd-hit -i nr -o nr90 -c 0.9 -n 5 -d 0 -M 16000 -T 16 This month, you can run incremental clustering cd-hit-2d -i nr90 -i2 month -o month-new -c 0.9 -n 5 -d 0 -M 16000 -T 16 cd-hit -i month-new -o month90 -c 0.9 -n 5 -d 0 -M 16000 -T 16 cat month90 >> nr90 clstr_merge.pl nr90.clstr month-new.clstr > temp.clstr cat temp.clstr month90.clstr > this_month_nr90.clstr This approach is much faster than running from scratch. It also preserves stable cluster structure. ==== Hierarchically clustering ==== With multiple-step, iterated runs of CD-HIT, you perform a clustering in a neighbor-joining method, which generates a hierarchical structure. The third step use psi-cd-hit, please see psi-cd-hit section for details. This way is faster than one-step clustering. It can also be more accurate. There is a problem with one-step clustering. Two very similar sequences A and B may be clustered into different clusters. For example, let the clustering threshold to be 60%, IAB (identity of AB) = 95%, IAC ≥ 60%, but IBC < 60%. If C was first selected a cluster representative, then A will be in cluster “Câ€Â, but “B†will not, resulting near identical AB to be in different clusters. Hierarchically clustering will reduce this problem. {{ :cd-hit-figure4.png }} Commands: cd-hit -i nr -o nr80 -c 0.8 -n 5 -d 0 -M 16000 -T 16 this generate nr80 and nr80.clstr cd-hit -i nr80 -o nr60 -c 0.6 -n 4 -d 0 -M 16000 -T 16 this use nr80 to generate nr60 and nr60.clstr psi-cd-hit.pl -i nr60 -o nr30 -c 0.3 this use nr60 to generate nr30 and nr30.clstr clstr_rev.pl nr80.clstr nr60.clstr > nr80-60.clstr nr60.clstr only lists sequences from nr80, script clstr_rev.pl add the original sequences from nr but not in nr80 into the output file nr80-60.clstr clstr_rev.pl nr80-60.clstr nr30.clstr > nr80-60-30.clstr nr30.clstr only lists sequences from nr60, script clstr_rev.pl add the original sequences into file nr80-60-30.clstr ===== CD-HIT AuxTools ===== CD-HIT AuxTools is a set of auxiliary programs that can be used to assist the analysis of the next generation sequencing data. It currently includes programs for removing read duplicates, finding pairs of overlapping reads or joining pair-end reads etc. ==== cd-hit-dup ==== cd-hit-dup is a simple tool for removing duplicates from sequencing reads, with optional step to detect and remove chimeric reads. When two files of paired end reads are used as inputs, each pair of reads will be concatenated into a single one. A number of options are provided to tune how the duplicates are removed. Running the program without arguments should print out the list of available options, as the following: Usage: cd-hit-dup -i input.fa -o output.fa [other options] (for single reads FASTQ) cd-hit-dup -i input.fq -o output.fq [other options] (for single reads FASTA) cd-hit-dup -i R1.fq -i2 R2.fq -o output-R1.fq -o2 output-R2.fq [other options] (for PE reads FASTQ) cd-hit-dup -i R1.fa -i2 R2.fa -o output-R1.fa -o2 output-R2.fa [other options] (for PE reads FASTA) Options: -i Input file (FASTQ or FASTA); -i2 Second input file (FASTQ or FASTA); -o Output file; -o2 Output file for R2; -d Description length (default 0, truncate at the first whitespace character) -u Length of prefix to be used in the analysis (default 0, for full/maximum length); -m Match length (true/false, default true); -e Maximum number/percent of mismatches allowed; -f Filter out chimeric clusters (true/false, default false); -s Minimum length of common sequence shared between a chimeric read and each of its parents (default 30, minimum 20); -a Abundance cutoff (default 1 without chimeric filtering, 2 with chimeric filtering); -b Abundance ratio between a parent read and a chimeric read (default 1); -p Dissimilarity control for chimeric filtering (default 1); === Option details === -u Length of prefix to be used in the analysis (default 0, for full/maximum length); For pair-end inputs, the program will take part (whole or prefix) of the first end and part (whole or prefix) of the second read, and join them together to form a single read to do the analysis. A positive value of this option specifies the length of the prefix to be taken from each read. If a read is shorter than this length, letter 'N's will be appended to the read to make up for the length. When this option is not used or is used with a non-positive value, the program will use the length of the longest read as the value of this option. For single input analysis, only a positive value of this option will be effective. It also allows the program to use only the prefix up to the specified length of each read to do the analysis. In case that a read is shorter than this length, no 'N' is appended to the read since it is not necessary. -m Match length (true/false, default true); "-m" specifies whether the lengths of two reads should be exactly the same to be considered as duplicates. -e Maximum number/percent of mismatches allowed; Maximum number/percent of mismatches can be specified to control the similarity between two reads for duplicate and chimeric detection. For duplicate detection, any two reads with number of mismatches no greater than the specified value are considered to be duplicates. For chimeric detection, this option control how similar a read should be to either of its parents. -f Filter out chimeric clusters (true/false, default false); This option specifies whether or not to carry out an additional step to filter out chimeric clusters. -s Minimum length of common sequence shared between a chimeric read and each of its parents (default 30, minimum 20); A read or cluster representative is considered as a potential chimeric only if it shares at least the number of bases specified by this option with either of its parents. This option is effective only if the option is set to true for filtering chimeric clusters. -a Abundance cutoff (default 1 without chimeric filtering, 2 with chimeric filtering); Each read is associated with an abundance number, which is the number of duplicates for the read. cd-hit-dup always assumes the input contains duplicates and perform the duplicate detection step. If no duplicate is found, the input is assumed to have duplicates remove in advance, and then, the program will try to obtain the abundance information from the descriptions of the reads, it interprets the number following "_abundance_" as the abundance number. The abundance cutoff is mainly used for chimeric filtering to skip chimeric checking on reads with abundance below this cutoff. -b Abundance ratio between a parent read and a chimeric read (default 1); This option specifies the abundance ratio between a parent read and a chimeric read. So for a read to be chimeric, either of its parents must have abundance at least as high as the ratio times the abundance of the chimeric read. -p Dissimilarity control for chimeric filtering (default 1); Internally dissimilarity is measured by percent of mismatches with ungapped alignments. By default the percentage cutoff is set to 0.01 (one percent). This option specifies a multiplier to this percentage cutoff. A higher value will increase the dissimilarity thresholds in chimeric filtering. === Output files === cd-hit-dup will output three or four files. Two of them are the same as the output files of CD-HIT: one (named exactly the same as the file name specified by the "-o" option) is the cluster (or duplicate) representatives, the other is the clustering file (xxx.clstr) relating each duplicate to its representative. For paired end reads, another file by the "-o2" option is the cluster representatives for R2 reads. The last file (xxx2.clstr) contains the chimeric clusters. In this file, the description for each chimeric cluster contains cluster ids of its parent clusters from the clustering file xxx.clstr. === Examples === == Duplicate Detection == Remove duplicates using default parameters: cd-hit-dup -i input.fa -o output By default, only reads that are identical are considered as duplicates. If "-m" is set to false, duplicates will be allowed to have different length, but the longer ones must have a prefix that is identical to the shorter ones. cd-hit-dup -i input.fa -o output -u 50 This only compare the first 50 bases of all sequences, considering that in Illumina reads, sequence quality are better at the beginning of the reads. Remove duplicates with a few mismatches: cd-hit-dup -i input.fa -o output -e 2 cd-hit-dup -i input.fa -o output -e 0.01 The former will allow each duplicate read to have up to 2 mismatches when aligned to its representative; and the later will allow up to one percent mismatches. Remove duplicates from paired end reads: cd-hit-dup -i pair-end1.fa -i2 pair-end2.fa -o output -o2 output-R2 Each read from "pair-end1.fa" and "pair-end2.fa" will be joint to form a single read to detect duplicates. If they all are of the same length, the full length of each ends will be used in forming the single read; otherwise, the default value of option "-u" will be used to determine how the single read is created. cd-hit-dup -i pair-end1.fa -i2 pair-end2.fa -o output -o2 output-R2 -u 50 This only consider the first 50 bases from both R1 and R2 reads. Remove duplicates from paired end reads with control on how the paired end are jointed: cd-hit-dup -i pair-end1.fa -i2 pair-end2.fa -o output -o2 output-R2 -u 100 With explicit "-u" options, any reads shorter than 100 will be padded with 'N's, and the longer ones will be cut down to 100 base long. Then each pair of the 100 base long reads will be jointed to form a single 200 base long read. == Chimeric Filtering == cd-hit-dup offers a very efficient way to detect chimeric reads. The basic idea is to find two parent reads whose cross-over is sufficient similar to the chimeric read, while each single parent is sufficiently dissimilar to it. Such dissimilarity is measured by the percent of mismatches for no-gapped alignments. For a given percentage "p" (from option "-p"), a chimeric read must share at least "p" percent mismatches with any other single read, namely, it much be sufficiently dissimilar to any single read. For more robust detection of chimeric reads, a background percentage "p_bg" is calculated as the mismatch percentage shared between the candidate chimeric read and the single read that is most similar to the candidate. If "p_bg" is greater than "1.5*p", "1.5*p" will be used as "p_bg" instead. For a read to be classified as chimeric read, there must exist two reads/parents such that, the leading part of the read is sufficiently similar to one parent, and the rest is sufficiently similar to the other parent, with at most "p+p_bg" percent of mismatches in each part. And the crossover between the two parents must share at most "p_bg" mismatches with the chimeric read. Chimeric filtering with default parameters: cd-hit-dup -i input.fa -o output -f true Chimeric filtering with specified similarity level: cd-hit-dup -i input.fa -o output -f true -p 1.5 Chimeric filtering with specified abundance difference: cd-hit-dup -i input.fa -o output -f true -a 2 which means each parent of a chimeric read must be a least as twice abundant as the chimeric read. Chimeric filtering will produce a cluster file named like "xxx2.clstr", in which each cluster entry is a chimeric read/cluster. For example, ...... >Cluster 4 chimeric_parent1=2,chimeric_parent2=8 0 256nt, >FV9NWLF01CRIR3_abundance_23... * >Cluster 5 chimeric_parent1=2,chimeric_parent2=0 0 250nt, >FV9NWLF01B4TBX_abundance_21... * ...... here "Cluster 5" contains a chimeric read "FV9NWLF01B4TBX", whose parents are identified by cluster numbers "2" and "0" from the associated "xxx.clstr" file, >Cluster 0 0 252nt, >FV9NWLF01ANLX2_abundance_2239... * >Cluster 1 0 246nt, >FV9NWLF01C3KOB_abundance_1465... * >Cluster 2 0 260nt, >FV9NWLF01AQOWA_abundance_1284... * ...... So the parent reads of the chimeric read "FV9NWLF01B4TBX" are "FV9NWLF01AQOWA" and "FV9NWLF01ANLX2". ==== cd-hit-lap ==== cd-hit-lap is program for extracting pairs of overlapping reads by clustering based on tail-head overlaps (with perfect matching). The basic clustering strategy is the same as that in standard CD-HIT programs. In this program, each read is clustered as either a "representative" or a "redundant" read. For each "redundant" read, it must have a prefix that is identical a suffix of its representative read. The options of this program can be obtained by running it it without any arguments: [compute-0-0 cdhit-dup]$ ./cd-hit-lap Options: -i Input file; -o Output file; -m Minimum length of overlapping part (default 20); -p Minimum percentage of overlapping part (default 0, any percentage); -d Description length (default 0, truncate at the first whitespace character) -s Random number seed for shuffling (default 0, no shuffling; shuffled before sorting by length); -stdout Standard output type (default "log", other options "rep", "clstr"); The two options "-m" and "-p" can be used to control the minimum overlap that is required to classify them as overlapping reads. Each pair of overlapping reads must have overlap length no less than the threshold specified by "-m", and must also not be less than the length threshold computed from the "-p" option. Since the overlapping reads are searched using a greedy strategy, so different sortings of reads may lead to different result. So it is advisable to run the program multiple times with read shuffling by different random number seeds, and then collect and merge the results. Sometimes it may be more convenient to pipe the results of this program as stdout directly to the stdin of other programs, to do this, the option "-stdout" can be used to choose which type ("log" for program console information, "rep" for representative reads in FASTA or FASTQ format, "clstr" for the clustering output in CD-HIT format) of results to be writen to the stdout. The output format of this program is the same as the standard CD-HIT. In the .clstr file, the alignment positions indicate how the reads are overlapped. For example, >Cluster 0 0 75nt, >1_lane2_624... * 1 75nt, >1_lane2_7169... at 1:65:11:75/+/100.00% 2 75nt, >1_lane2_36713... at 69:1:1:69/-/100.00% 3 75nt, >1_lane2_141482... at 1:56:20:75/+/100.00% The cluster member #0 in cluster #0 is the representative of the cluster, and it overlaps with each of the other members in the cluster. For cluster member #1, "1:65:11:75/+" tells that the first 65 bases of member #1 overlaps with the last 65 bases of member #0; "69:1:1:69/-" indicates that the last 69 bases of member #2 overlaps with the first 69 bases of member #0. ==== read-linker ==== read-linker is a very simple program to concatenate pair-end reads into single ones. It support the following options: [compute-0-0 cdhit-dup]$ ./read-linker Options: -1 file Input file, first end; -2 file Input file, second end; -o file Output file; -l number Minimum overlapping length (default 10); -e number Maximum number of errors (mismatches, default 1); Only the pairs of reads that share at least a minimum overlapping length with mismatched no more than the maximum number of errors, are jointed to form a single read. ===== PSI-CD-HIT clustering ===== The lowest threshold of CD-HIT is around 40%, in many applications, we need a much lower threshold, like 25%. Also CD-HIT-EST can not handle very long sequences (e.g. genomes, scaffolds). PSI-CD-HIT clusters proteins at very low threshold, it also cluster long DNA sequences, through blastp, blastn and metablast. PSI-cd-hit is a Perl script, which runs similar incremental algorithm like CD-HIT, but using BLAST to calculate similarities. Below are the procedures of PSI-CD-HIT: - Sort sequences by decreasing length - First one is the first representative - Using 1st one blast all remaining sequences, pick up its neighbors that meet the clustering threshold - Repeat until done ==== Installation ==== please download either legacy BLAST or BLAST+ and install the executables in your $PATH. The programs required by psi-cd-hit.pl are blastall, megablast, blastpgp and formatdb for legacy blast, and blastp, blastn, psiblast and makeblastdb for blast+. ==== Usage ==== Basic command: psi-cd-hit.pl -i nr60 -o nr30 -c 0.3 More options: input/output: -i in_dbname, required -o out_dbname, required -l length_of_throw_away_sequences, default 10 thresholds: -c clustering threshold (sequence identity), default 0.3 -ce clustering threshold (blast expect), default -1, it means by default it doesn't use expect threshold, but with positive value, the program cluster seqs if similarities meet either identity threshold or expect threshold -G (1/0) use global identity? default 1 two sequences Long (i.e. representative) and Short (redunant) may have multiple alignment fragments (i.e. HSPs), see: seq1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Long sequence |||||||||||||||||| ///////////// i.e. representative |||||||||||||||||| ///////////// sequence ||||||||HSP 1 |||| ////HSP 2 /// |||||||||||||||||| ///////////// |||||||||||||||||| ///////////// seq2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Short sequence << length 1 >> << len 2 >> i.e. redundant <<<<<<<<<<<< length of short sequence >>>>>>>>>>>>>> sequence total identical letters from all co-linear and non-overlapping HSPs Glogal identity = ------------------------------------------------------------------- length of short sequence Local identity = identity of the top high score HSP if you prefer to use -G 0, it is suggested that you also use -aS, -aL, such as -aS 0.8, to prevent very short matches. -aL alignment coverage for the longer sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -aS alignment coverage for the shorter sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -g (1/0), default 0 by cd-hit's default algorithm, a sequence is clustered to the first cluster that meet the threshold (fast cluster). If set to 1, the program will cluster it into the most similar cluster that meet the threshold (accurate but slow mode) but either 1 or 0 won't change the representatives of final clusters -circle (1/0), default 0 when set to 1, treat sequences as circular sequence. bacterial genomes, plasmids are circular, but their genome coordinate maybe arbitary, the 2 HSPs below will be treated as non co-linear with -circle 0 the 2 HSPs below will be treated as co-linear with -circle 1 -------------circle----------- | | seq1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx genome / plasmid 1 \\\\\\\\ ///////////// \\\\\\\\ ///////////// HSP 2 -> ////HSP 1 /// <-HSP 2 ///////////// \\\\\\\\ ///////////// \\\\\\\\ seq2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx genome / plasmid 2 | | -----------circle-------------- program: -prog (blastp, blastn, megablast, blastpgp), default blastp -p profile search para, default "-j 3 -F F -e 0.001 -b 500 -v 500" -dprof database for building PSSM, default using input you can also use another database that is more comprehensive like NR80 -s blast search para, default "-F F -e 0.000001 -b 100000 -v 100000" -bs (1/0) default 1 pipe blast results from into parser instead of save in hard drive (save time) compute: -exec (qsub, local) default local this program writes a shell script to run blast, this script is either performed locally by sh or remotely by qsub with qsub, you can use PBS, SGE etc -host number of hosts for qsub -core number of cpu cores per computer, default 1 -shf a filename for add local settings into the job shell script for example, when you run PBS jobs, you can add quene name etc in this file and this script will add them into the job shell script e.g. your file may have followings #PBS -v PATH #PBS -l walltime=8:00:00 #PBS -q jobqueue job: -rs steps of save restart file and clustering output, default 5000 everytime after process 5000 sequences, program write a restart file and current clustering information -restart restart file, readin a restart file if program crash, stoped, termitated, you can restart it by add a option "-restart sth.restart" -rf steps of re format blast database, default 200,000 if program clustered 200,000 seqs, it remove them from seq pool, and re format blast db to save time -J job, job_file, exe specific jobs like parse blast outonly DON'T use it, it is only used by this program itself -k (1/0) keep blast raw output file, default 0 -P path to executables ==== Examples ==== == Protein clustering == First, we use cd-hit to cluster the input down to 60% identity cd-hit -i db -o db_90 -c 0.9 -n 5 -g 1 -G 0 -aS 0.8 -d 0 -p 1 -T 16 -M 0 > db_90.log cd-hit -i db_90 -o db_60 -c 0.6 -n 4 -g 1 -G 0 -aS 0.8 -d 0 -p 1 -T 16 -M 0 > db_60.log Cluster on a single computer ./psi-cd-hit.pl -i db_60 -o db_30 -c 0.3 -ce 1e-6 -aS 0.8 -G 0 -g 1 -exec local -core 16 clstr_rev.pl db_90.clstr db_60.clstr > db90-60.clstr clstr_rev.pl db90-60.clstr db_30.clstr > db90-60-30.clstr Here, -ce 1e-6 and -c 0.3 means cutoff at either 30% identity or 1e-6 e.value -G 0 means global identity -aS 0.8 means that alignment must cover 80% of shorter (redundant) sequence -g 1, slow but accurate mode, allowing sequences to be grouped to its most similar cluster -core 16, use 16 threads for blast search -clstr_rev.pl will combined all the cd-hit runs, see Hierarchically clustering Cluster on a computer cluster (with qsub) ./psi-cd-hit.pl -i db_60 -o db_30 -c 0.3 -ce 1e-6 -aS 0.8 -G 0 -g 1 -exec qsub -host 8 -core 8 -shf qsub_sh_template clstr_rev.pl db_90.clstr db_60.clstr > db90-60.clstr clstr_rev.pl db90-60.clstr db_30.clstr > db90-60-30.clstr Restart: ./psi-cd-hit.pl -i db_60 -o db_30 -c 0.3 -ce 1e-6 -aS 0.8 -G 0 -g 1 -exec local -core 16 -restart db_30.restart ./psi-cd-hit.pl -i db_60 -o db_30 -c 0.3 -ce 1e-6 -aS 0.8 -G 0 -g 1 -exec qsub -host 8 -core 8 -shf qsub_sh_template -restart db_30.restart In case of program crash, it restart from where it stops without re-running blast searches. == Clustering very long DNA sequences == ./psi-cd-hit.pl -i db.fna -o db90.fna -c 0.9 -G 1 -g 1 -prog megablast -s "-F F -e 0.000001 -b 100000 -v 100000" -exec local -core 32 ./psi-cd-hit.pl -i db.fna -o db90.fna -c 0.9 -G 1 -g 1 -prog blastn -circle 1 -exec local -core 32 Here, First example uses megablast Second example uses blastn -circle 1 means consider circular genome (see psi-cd-hit options above) ===== CD-HIT tools ===== ==== cd-hit-div, cd-hit-div.pl ==== Both the executable binary program cd-hit-div and the perl script divide a FASTA file into pieces. The difference is that cd-hit-div sorts the sequences before dividing them while the perl script does not. Commands: cd-hit-div -i input -o output -div n cd-hit-div.pl input output n where "n" is the number of output files. The output files will be named as output-0, output-1 etc. ==== plot_len.pl ==== This is a script to print out distributions of clusters & sequences. Commands: plot_len.pl input.clstr \ 1,2-4,5-9,10-19,20-49,50-99,100-299,500-99999 \ 10-59,60-149,150-499,500-1999,2000-999999 where 2nd line are sizes of cluster 3rd line are lengths of sequences It will print distribution of clusters and sequences : Size # seq #clstr 10-59 60-149 150-499 500-1999 2000-up 1 266312 266312 36066 103737 103285 22727 497 2-4 208667 81131 1229 14680 44607 20006 609 5-9 156558 24198 118 2148 12026 9388 518 10-19 155387 11681 30 596 5024 5462 569 20-49 176815 6007 6 139 2212 3135 515 50-99 106955 1568 0 24 410 955 179 100-499 154209 896 0 3 124 597 172 500-up 43193 40 0 0 1 14 25 Total 1268096 391833 37449 121327 167689 62284 3084 ==== clstr_sort_by.pl ==== This script sort clusters in .clstr file by length, size Commands: Clstr_sort_by.pl < input.clstr no > input_sort.clstr Where, "no" means by size of the cluster ==== clstr_sort_prot_by.pl ==== This script sort sequences within clusters in .clstr file by length, name, etc. Commands: Clstr_sort_prot_by.pl input.clstr id > input_sort.clstr Where, "no" means by id of sequences ==== clstr_merge.pl ==== It merges two or more .clstr files. The cluster orders need to be identical. Commands: cd-hit-2d -i db1 -i2 db2 -o db2new -c 0.9 -n 5 cd-hit-2d -i db1 -i2 db3 -o db3new -c 0.9 -n 5 clstr_merge.pl db2new.clstr db3new.clstr > db23new.clstr ==== clstr_merge_noorder.pl ==== It merges two or more .clstr files. The cluster orders do not have to be identical. Commands: cd-hit-2d -i db1 -i2 db2 -o db2new -c 0.9 -n 5 cd-hit-2d -i db1 -i2 db3 -o db3new -c 0.9 -n 5 clstr_merge_noorder.pl db2new.clstr db3new.clstr > db23new.clstr ==== clstr_ renumber.pl ==== It renumbers clusters and sequences within clusters in .clstr file after merge or other operations Commands: Clstr_renumber.pl input.clstr > input_ren.clstr ==== clstr_rev.pl ==== It combines a .clstr file with its parent .clstr file Commands: cd-hit -i nr -o nr90 -c 0.9 -n 5 cd-hit -i nr90 -o nr60 -c 0.6 -n 4 clstr_rev.pl nr90.clstr nr60.clstr > nr60_from90.clstr psi-cd-hit -i nr60 -o nr30 -c 0.3 clstr_rev.pl nr60_from90.clstr nr30.clstr > nr30_from90.clstr ==== make_multi_seq.pl ==== This script reads the .clstr file, it generates a separate fasta file for each cluster over certain size and saves it in designated subdirectory. To run this script correctly, "-d 0" option should be used in the cd-hit run and it is better to use "-g 1" in the cd-hit run to get accurate clustering results. For example, Commands: cd-hit -i db -o dbout -c 0.6 -n 4 -d 0 -g 1 make_multi_seq.pl seq_db dbout.clstr multi-seq 20 will generate fasta files in "multi-seq" directory for clusters with more than 20 member sequences. Files will be named as "clusterN" where "N" is serial number of a cluster. ==== clstr2xml.pl ==== This script converts a cluster file or combines multiple cluster files from a hierarchical cd-hit run to xml format. The output is sorted by sequence length (default) or cluster size. The input cluster files must be in the order of being generated, that is, the cluster file with higher identity cutoff comes first. Command: clstr2xml.pl [-len|-size] input1.clstr [input2.clstr input3.clstr ...] ===== CD-HIT Web Server ===== The CD-HIT web server is available from [[http://cd-hit.org]]. All basic functions of CD-HIT are provided through tab-based interfaces in our web server. For CD-HIT and CD-HIT-EST, users can upload a FASTA file, select a desired sequence identity level and other parameters. CD-HIT-2D (CD-HIT-EST-2D) can compare two databases uploaded by users. H-CD-HIT and H-CD-HIT-EST in our server performs hierarchical clustering up to 3 steps. The CD-HIT-454 web server is also available from [[http://cd-hit.org]]. ===== Use cases ===== Here, a use case is defined as a sequence clustering related problem or application that cannot be easily solved with existing clustering approaches, such as CD-HIT. However, it is feasible to solve such a use case by customizing current clustering algorithms or utilizing current approach in a very intelligent way or non-standard manner. In the last years, we have developed many use cases in addressing various problems. We will release these use cases after additional testing. These use cases will be described in the following chapters. ===== CD-HIT-OTU-MiSeq ===== This use case is developed for clustering 16S rRNA genes into OTUs for microbiome studies. In recent years, Illumina MiSeq sequencers became dominant in 16S rRNA sequencing. The Paired End (PE) reads need to be assembled first. However many reads can not be accurately assembled because the poor quality at the 3’ ends of both PE reads in the overlapping region. This causes that many sequences are discarded in the analysis. CD-HIT-OTU-MiSeq has unique features to cluster MiSeq 16S sequences. - The package can clustering PE reads without joining them into contigs. - Users can choose a high quality portion of the PE reads for analysis (e.g. first 200 / 150 bases from forward / reverse reads), according to base quality profile. - We implemented a tool that can splice out the target region (e.g. V3-V4) from a full-length 16S reference database into the PE sequences. CD-HIT-OTU-MiSeq can cluster the spliced PE reference database together with samples, so we can derive Operational Tax-onomic Units (OTUs) and annotate these OTUs concurrently. - Chimeric sequences are effectively identified through both de novo and reference-based approaches. The most important unique feature of CD-HIT-OTU-MiSeq is to only use high quality region at the 5’ ends of R1 and R2 reads. For example, the effective read length can be 200 bases for R1 and 150 bases for R2. The effective portions of PE reads are clustered together with spliced PE sequences from the reference database to derive OTUs (Figure). {{:cd-hit-otu-miseq-figure-1.png|}} ==== Installation ==== First download and install full cd-hit package * download current CD-HIT at [[https://github.com/weizhongli/cdhit/releases]], for example cd-hit-v4.6.2-2015-0511.tar.gz * unpack the file with " tar xvf cd-hit-v4.6.2-2015-0511.tar.gz --gunzip" * change dir by "cd cd-hit-v4.6.2-2015-0511" * compile the programs by "make" with multi-threading (default), or by "make openmp=no" without multi-threading (on old systems without OpenMP) * cd cd-hit-auxtools * compile cd-hit-auxtools by "make" * CD-HIT-OTU-MiSeq scripts are inside a folder like cd-hit-v4.6.2-2015-0511/usecases/Miseq-16S CD-HIT-OTU-MiSeq uses Trimmomatic for sequence quality control. It can be downloaded from [[http://www.usadellab.org/cms/?page=trimmomatic]] or [[https://github.com/timflutre/trimmomatic]]. We also have a copy at [[http://weizhongli-lab.org/download-data/cd-hit-otu-miseq/]]. * modify NG-Omics-Miseq-16S.pl Please edit usecases/Miseq-16S/NG-Omics-Miseq-16S.pl, in the top few lines: $CD_HIT_dir = "PATH_to_cd-hit"; $NGS_prog_trimmomatic = "PATH/trimmomatic-0.32.jar"; #### where you have installed Trimmomatic ==== Download reference and sample datasets ==== Reference database and sample datasets can be downloaded from [[http://weizhongli-lab.org/download-data/cd-hit-otu-miseq/]]. The reference database Greengene-13-5-99.fasta.gz was processed from original Greengene database, so that sequences with more specific annotations are at the beginning of the file. You need to download and gunzip it. You can also download Greengene and generate it. You should download Greengene from [[http://greengenes.secondgenome.com/downloads]], or [[ftp://greengenes.microbio.me/]]. Please download file like greengenes_release/gg_13_5/gg_13_5_otus.tar.gz, unpack the tar file. You may find gg_13_5_otus/taxonomy/99_otu_taxonomy.txt and gg_13_5_otus/rep_set/99_otus.fasta. There is a script: usecases/Miseq-16S/greengene-ann1.pl. Commands: /greengene-ann1.pl -i gg_13_5_otus/taxonomy/99_otu_taxonomy.txt -j gg_13_5_otus/rep_set/99_otus.fasta -o Greengene-13-5-99.fasta The Miseq-otu-example.tar.gz contains two Miseq 16S samples. You can download and unpack to test. ==== Usage ==== **Step 1. prepare fastq files and sample file:** Most projects have multiple samples sequenced at the same region. You should already have paired ended fastq files for these samples, put them in a working directory in similar way as the testing datasets, where the R1.fq and R2.fq are placed in separate folder for each sample. So in the working directory, you should have files: sample_name_1/R1.fq sample_name_1/R2.fq sample_name_2/R1.fq sample_name_2/R2.fq ... sample_name_N/R1.fq sample_name_N/R2.fq Then, please prepare a sample file in the working directory. The file should look like: sample_name_1 R1.fq R2.fq sample_name_2 R1.fq R2.fq sample_name_N R1.fq R2.fq **Step 2. Reference database preparation:** We implemented a tool that can splice out the target amplicon region (e.g. V3-V4) from a full-length 16S rRNA reference sequence database, such as Greengene, RDP and Silva, into PE sequences. If there are multiple samples in a project sequenced with the same amplicon of same variable region, only one spliced reference database is needed. To run: path_to_cd-hit_dir/usecases/Miseq-16S/16S-ref-db-PE-splice.pl -i sample_name_1/R1.fq -j sample_name_2/R2.fq -d Greengene-13-5-99.fasta -o gg_13_5-PE99.150-100 -p 150 -q 100 -c 0.99 Where Greengene-13-5-99.fasta is our re-formatted Greengene sequence file. This program will output spliced PE files gg_13_5-PE99.150-100-R1 and gg_13_5-PE99.150-100-R2. **Step 3. Run sequence QC and OTU clustering for each sample:**. In the working directory, run PATH_to_cd-hit-dir/usecases/NG-Omics-WF.pl -i PATH_to_cd-hit-dir/usecases/NG-Omics-Miseq-16S.pl -s sample_file -T otu:150:100:0.97:0.0001:PATH_to-gg_13_5-PE99.150-100-R1:PATH_to-gg_13_5-PE99.150-100-R2:75 -J write-sh where: 150 and 100 are the effective length, 0.97 is the OTU clustering cutoff, 0.00001 is the abundance cutoff, 75 is the length for chimeric checking at each R1 and R2 read This command will generate shell scripts for QC and for OTU for each sample. The scripts will be in WF-sh folder. You can first run the qc.sample_name.sh and then run otu.sample_name.sh NG-Omics-WF.pl [[https://github.com/weizhongli/ngomicswf]] is a very powerful workflow and pipeline tool developed in our group. It is not fully released yet, since we need more time to document this tool. However, you can try to use NG-Omics-WF.pl to automatically run all your samples. First edit NG-Omics-Miseq-16S.pl and modify cores_per_node around line #36, then nohup PATH_to_cd-hit-dir/usecases/NG-Omics-WF.pl -i PATH_to_cd-hit-dir/usecases/NG-Omics-Miseq-16S.pl -s sample_file -T otu:150:100:0.97:0.0001:PATH_to-gg_13_5-PE99.150-100-R1:PATH_to-gg_13_5-PE99.150-100-R2:75 & After the job finished, the OTU results will be in sample_name/otu folder, important files include * OTU.clstr: file lists all clusters and sequences * removed_chimeric*: chimeric sequenced removed * small_clusters.list: low abundance small clusters removed **Step 4. pool all the samples together:** Please run PATH_to_cd-hit-dir/usecases/pool_samples.pl -s sample_file -o pooled_sample. This will pool sequences from all sample and re-run OTU clustering. We can pool hundred of samples without problem. After job finished, additional files will be available from pooled_sample directory * OTU.clstr: file list all clusters and sequences from all samples * removed_chimeric*: chimeric sequenced removed * small_clusters.list: low abundance small clusters removed * OTU.txt: spread sheet list number of sequences in each OTU for each sample, it also show annotation for each OTU. * OTU.biome: OTU.txt in biome format ===== References ===== If you find cd-hit helpful to your research and study, please kindly cite the relevant references from the list below. - Weizhong Li, Lukasz Jaroszewski & Adam Godzik. Clustering of highly homologous sequences to reduce the size of large protein databases. Bioinformatics (2001) 17:282-283, [[http://bioinformatics.oupjournals.org/cgi/reprint/17/3/282.pdf|PDF]], [[http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=11294794|Pubmed]] - Weizhong Li, Lukasz Jaroszewski & Adam Godzik. Tolerating some redundancy significantly speeds up clustering of large protein databases. Bioinformatics (2002) 18: 77-82, [[http://bioinformatics.oupjournals.org/cgi/reprint/18/1/77.pdf|PDF]], [[http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=11836214|Pubmed]] - Weizhong Li & Adam Godzik. Cd-hit: a fast program for clustering and comparing large sets of protein or nucleotide sequences. Bioinformatics (2006) 22:1658-1659, [[http://bioinformatics.oxfordjournals.org/cgi/reprint/22/13/1658|PDF]], [[http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=pubmed&cmd=Retrieve&dopt=Abstract&list_uids=16731699|Pubmed]] - Ying Huang, Beifang Niu, Ying Gao, Limin Fu and Weizhong Li. CD-HIT Suite: a web server for clustering and comparing biological sequences. Bioinformatics, (2010). 26:680 [[http://bioinformatics.oxfordjournals.org/cgi/reprint/btq003v1|PDF]] [[http://www.ncbi.nlm.nih.gov/pubmed/20053844|Pubmed]] - Beifang Niu, Limin Fu, Shulei Sun and Weizhong Li, Artificial and natural duplicates in pyrosequencing reads of metagenomic data. BMC Bioinformatics, (2010), 11:187 [[http://www.biomedcentral.com/content/pdf/1471-2105-11-187.pdf|PDF]] [[http://www.ncbi.nlm.nih.gov/pubmed/20388221|Pubmed]] - Limin Fu, Beifang Niu, Zhengwei Zhu, Sitao Wu and Weizhong Li, CD-HIT: accelerated for clustering the next generation sequencing data. Bioinformatics, (2012), 28 (23): 3150-3152. doi: 10.1093/bioinformatics/bts565, [[http://bioinformatics.oxfordjournals.org/content/28/23/3150|PDF]], [[http://www.ncbi.nlm.nih.gov/pubmed/23060610|Pubmed]] - Weizhong Li, Limin Fu, Beifang Niu, Sitao Wu and John Wooley. Ultrafast clustering algorithms for metagenomic sequence analysis. Briefings in Bioinformatics, (2012) 13 (6): 656-668. doi: 10.1093/bib/bbs035 [[http://bib.oxfordjournals.org/content/13/6/656|PDF]] cdhit-4.8.1/doc/dokuwiki2latex.dao000077500000000000000000000303531343604040700170270ustar00rootroot00000000000000#!/Users/min/projects/dao/dao load sys; const latex_head = @[latex] \documentclass[12pt,a4paper]{article} \usepackage[latin1]{inputenc} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{scalefnt} \usepackage{titlesec} \usepackage{hyperref} \usepackage{cite} \usepackage{graphicx} \usepackage{wrapfig} \usepackage{xcolor} \usepackage{fancyvrb} %\usepackage{tikz} %\usepackage{pgflibraryarrows} %\usepackage{pgflibrarysnakes} %\usetikzlibrary{decorations.markings} %\usetikzlibrary{patterns,fadings} \addtolength{\hoffset}{-4em} \addtolength{\textwidth}{8em} \addtolength{\voffset}{-4em} \addtolength{\textheight}{8em} \setlength{\parindent}{2em} \linespread{1.1} % also in front page \renewcommand\FancyVerbTab{\textcolor{tabcolor}{$\mid$}} \newcommand*{\justifyheading}{\centering} \titleformat{\section} {\normalfont\Huge\bfseries\justifyheading}{\thesection}{1em}{} \titleformat{\subsection} {\normalfont\Large\bfseries}{\thesubsection}{1em}{} \usepackage{listings} \lstset{ % language=C, % choose the language of the code basicstyle=\small\ttfamily, % the size of the fonts that are used for the code numbers=left, % where to put the line-numbers numberstyle=\small\ttfamily, % the size of the fonts that are used for the line-numbers stepnumber=1, % the step between two line-numbers. If it's 1 each line will be numbered numbersep=5pt, % how far the line-numbers are from the code backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color} showspaces=false, % show spaces adding particular underscores showstringspaces=false, % underline spaces within strings showtabs=false, % show tabs within strings adding particular underscores frame=single, % adds a frame around the code tabsize=2, % sets default tabsize to 2 spaces captionpos=b, % sets the caption-position to bottom breaklines=true, % sets automatic line breaking breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace escapeinside={\%*}{*)} % if you want to add a comment within your code } @[latex] const open_doc = @[latex] \date{} \begin{document} \scalefont{1.1} \maketitle \vspace{10em} @[latex]; const make_toc = @[latex] \clearpage \tableofcontents \clearpage @[latex]; const make_fig = @[latex] \begin{figure}[!h] \includegraphics[$(size)]{$(figure)} $(caption) \end{figure} @[latex] class TextSection { var tag = ''; var name = ''; var output = ''; var subsections : list = {}; routine TextSection( tag = '', name = '' ){ self.tag = tag; self.name = name; } } class WikiParser { routine Parse( source :string ); routine ParseBlock( section :TextSection, source :string ); routine Formatting( source :string ); routine HandleIndentedCodes( source :string ); routine HandleTable( source :string ); } routine ToHex( self :string ) => string { const hex_digits = '0123456789ABCDEF'; hex = ''; self.change( '^[\n]+', '' ) self.change( '[\n]+ $', '' ) self.iterate::{ hex += hex_digits[ X / 16 ]; hex += hex_digits[ X % 16 ]; } return hex; } routine FromHex( self :string ) => string { ch0 = '0'[0]; chA = 'A'[0]; decoded = ''; for( i = 0 : 2 : self.size()-1 ){ ch1 = self[i]; ch2 = self[i+1]; ch1 = (ch1 >= chA) ? 10 + ch1 - chA : ch1 - ch0; ch2 = (ch2 >= chA) ? 10 + ch2 - chA : ch2 - ch0; decoded += ch1*16 + ch2; } return decoded; } routine Convert( self :string ) => string { self.change( '__(.*)__', '%1' ); self.replace( '_', '\\_' ); self.replace( '&', '\\&' ); self.replace( '%', '\\%' ); self.replace( '#', '\\#' ); self.replace( '<', '$<$' ); self.replace( '>', '$>$' ); self.change( '%*%*(.*)%*%*', '{\\bf %1}' ); self.change( '([^:])//(.*)//', '%1{\\it %2}' ); self.change( '\'\'(.*)\'\'', '\\texttt{%1}' ); self.change( '~~LASTMOD~~', sys.ctimef( 0, '%Y-%M-%D' ) ); return self; } routine WikiParser::Parse( source :string ) { const pat_nowiki = '( %< %s* nowiki %s* %> (.*) %< %s* / %s* nowiki %s* %> | %%%% (.*) %%%%)'; blocks = source.extract( pat_nowiki, $both ); source = ''; blocks.iterate::{ [block] parts = block.capture( pat_nowiki ); if( parts ){ source += 1; source += 'nowiki'; source += 1; source += (parts[2] + parts[3]).ToHex(); source += 2; }else{ source += block; } } const pat_marking = ' %< %s* (%w+) %s* %> (.*) %< %s* / %s* %1 %s* %>'; blocks = source.extract( pat_marking, $both ); source = ''; blocks.iterate::{ [block] parts = block.capture( pat_marking ); if( parts ){ source += 1; source += parts[1]; source += 1; source += parts[2].ToHex(); source += 2; }else{ source += block; } } const pat_headline = '(^ | [^=]) (={2,6}) ([^=].*) %2'; const pat_headline2 = '(^) %s* (={2,6}) %s* ([^=].*) %2'; blocks = source.extract( pat_headline, $both ); top_section = TextSection( '================================' ); cur_sections = { top_section }; first_sect = top_section; all_sections = { top_section }; while( blocks.size() ){ block = blocks.pop( $front ); tokens = block.capture( pat_headline2 ); if( tokens.size() == 0 ){ ParseBlock( cur_sections.back(), block ); skip; } tag = tokens[2]; title = tokens[3]; while( cur_sections.size() and cur_sections.back().tag <= tag ) cur_sections.pop(); if( cur_sections.size() ==0 ){ io.write( 'ERROR: too long headline for \"', block, '\"!\n' ); return ''; } cur_section = cur_sections.back(); sub_section = TextSection( tag, title ); cur_section.subsections.append( sub_section ); cur_sections.push( sub_section ); if( first_sect == top_section ) first_sect = sub_section; all_sections.push( sub_section ); } title = ''; tag_section = ''; if( cur_sections.size() > 1 && cur_sections[1] == first_sect ){ title = first_sect.name; if( first_sect.subsections.size() ) tag_section = first_sect.subsections.back().tag; } all_sections.pop( $front ); all_sections.pop( $front ); front = '\\begin{center}\n' + first_sect.output + '\n\\end{center}\n'; output = all_sections.reduce('')::{ [sect,text] headline = ''; if( sect.tag == tag_section ){ headline = '\n\\clearpage\n\\section{' + sect.name.Convert() + '}\n\n'; }else if( sect.tag < tag_section ){ headline = '\n\n\\subsection{' + sect.name.Convert() + '}\n\n'; } return text + headline + sect.output; }; const pat_hex = '{{\1}}(%w+){{\1}}([0-9A-F]+){{\2}}'; blocks = output.extract( pat_hex, $both ); output = ''; blocks.iterate::{ [block] parts = block.capture( pat_hex ); if( parts ){ switch( parts[1] ){ case 'code', 'file' : output += '\\begin{lstlisting}\n'; case 'sup' : output += '$^'; case 'sub' : output += '$_'; case 'nowiki', 'del', 'latex' : } output += parts[2].FromHex(); switch( parts[1] ){ case 'code', 'file' : output += '\n\\end{lstlisting}\n'; case 'sup' : output += '$'; case 'sub' : output += '$'; case 'nowiki', 'del', 'latex' : } }else{ output += block; } } head = '\\title{' + title.Convert() + '}\n'; head += open_doc; head += front; head += make_toc; output = head + output + '\\end{document}' output.change( '[\n]{2,}', '\n\n' ); #io.writeln( '=========================================' ); #io.writeln( all_sections ); #io.writeln( output ); return output; } routine WikiParser::ParseBlock( section :TextSection, source :string ) { const pat_list = '^({{ }}+ ( [%*%-] ))'; lines = source.split( '\n' ); blocks = { lines.pop( $front ) + '\n' }; while( lines ){ line = lines.pop( $front ); line2 = line[]; line2.trim(); match = line.match( pat_list ); if( match.start >= 0 or line2 == '' ){ blocks.push( line + '\n' ); }else{ blocks[ blocks.size() - 1 ] += line + '\n'; } } blocks.push( '' ); heads = { '' } output = ''; while( blocks ){ block = blocks.pop( $front ); head = heads.back(); head2 = ''; match = block.match( pat_list ); if( match.start >= 0 ) head2 = match.substring; if( head2.size() > head.size() ){ begin = '\\begin{itemize}\n '; if( head2[ head2.size()-1 ] == '-'[0] ) begin = '\\begin{enumerate}\n '; output += begin; heads.push( head2 ); }else if( head2.size() < head.size() ){ end = '\\end{itemize}\n'; if( head[ head.size()-1 ] == '-'[0] ) end = '\\end{enumerate}\n'; output += end; heads.pop(); } if( head2.size() ){ output += '\\item '; output += Formatting( block[ head2.size() : ] ); }else{ while( heads.size() > 1 ){ head = heads.pop(); end = '\\end{itemize}\n'; if( head[ head.size()-1 ] == '-'[0] ) end = '\\end{enumerate}\n'; output += end; } output += Formatting( block ); } } while( heads.size() > 1 ){ head = heads.pop(); end = '\\end{itemize}\n'; if( head[ head.size()-1 ] == '-'[0] ) end = '\\end{enumerate}\n'; output += end; } section.output = output; } routine WikiParser::HandleTable( source :string ) { lines = source.split( '\n' ); lines.append( '' ); output = ''; last = ( size => 0, fields => {} ); lines.iterate::{ if( X.match( '^ [%^%|] .* [%^%|]$' ).start <0 ){ if( last.fields.size() ){ output += '\\hline'; output += '\n\\end{tabular}\n\\end{table}\n\4'; } last = ( size => 0, fields => {} ); output += X + '\n'; return; } fields = X.extract( '[%^%|]', $both ) io.writeln( fields ); if( X.size() != last.size or fields.size() != last.fields.size() ){ # new table: if( last.fields.size() ){ output += '\\hline'; output += '\n\\end{tabular}\n\\end{table}\n\4'; } output += '\3\n\\begin{table}[!h]\n\\begin{tabular}{'; fields.iterate::{ if( X == '^' or X == '|' ){ output += '|'; }else{ # TODO alignment output += 'c'; } } output += '}\n'; output += '\\hline\n'; }else{ output += '\\hline\n'; } fields.iterate::{ if( X == '^' or X == '|' ){ if( Y and (Y+1) < fields.size() ) output += ' & '; }else{ output += X.Convert(); } } output += ' \\\\\n'; last.size = X.size(); last.fields = fields; } blocks = output.extract( '{{\3}}[^\3\4]*{{\4}}', $both ); blocks.apply::{ if( X.size() and X[0] == 3 and X[X.size()-1] == 4 ){ return '\1nowiki\1' + X[1:X.size()-2].ToHex() + '\2'; } return X; } return blocks.sum(); } routine WikiParser::HandleIndentedCodes( source :string ) { lines = source.split( '\n' ); blocks = { '' }; indented = 0; while( lines ){ line = lines.pop( $front ) + '\n'; if( line.match( '^%s%s%S' ).start == 0 ){ if( indented ){ blocks.back() += line; }else{ blocks.push( line ); indented = 1; } }else{ if( indented ){ blocks.push( line ); indented = 0; }else{ blocks.back() += line; } } } blocks.apply::{ if( X.match( '^%s%s%S' ).start != 0 ) return HandleTable( X ); return '\1code\1' + X.ToHex() + '\2'; } return blocks.sum(); } routine WikiParser::Formatting( source :string ) { const pat_link = '%[%[([^%|]*)(| %| (.+)) %]%]'; const pat_figure = '%{%{ %s* (| wiki) %s* : %s* ([^ \t\n%?]+) %s* (| %? ((%d+) (|[xX] (%d+) ))) %s* (| %| (.*) ) %}%}'; source = HandleIndentedCodes( source ); parts = source.extract( '(' + pat_link + ' | ' + pat_figure + ')', $both ); parts.apply::{ [text] tokens = text.capture( '^' + pat_link ); tokens2 = text.capture( '^' + pat_figure ); if( tokens ){ url = tokens[1]; url.replace( '/', '\\slash ' ); if( tokens[3] ){ return '\\href{' + url + '}{' + tokens[3] + '}'; }else{ return '\\href{' + url + '}{' + url + '}'; } desc = tokens[1]; if( tokens[3] ) desc = tokens[3]; }else if( tokens2 ){ size = 'width=\\textwidth'; file = tokens2[2]; caption = ''; if( tokens2[4] ){ size = 'width=' + tokens2[5] + 'px'; if( tokens2[7] ) size += ',height=' + tokens2[7] + 'px'; } if( tokens2[9] ) caption = '\\caption{' + tokens2[9] + '}'; return make_fig.expand( (size=>size, figure=>file, caption=>caption) ); } return text.Convert(); } return parts.sum(); } routine main( file : string ) #{ Usage: %P input_wiki_source_file #} { source = io.read( file ); parser = WikiParser(); output = parser.Parse( source ); file.change( '%.wiki$', '' ); fout = io.open( file + '.tex', 'w+' ); fout.write( latex_head ); fout.write( output ); fout.close(); } cdhit-4.8.1/license.txt000066400000000000000000000432541343604040700150130ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. cdhit-4.8.1/make_multi_seq.pl000077500000000000000000000032061343604040700161600ustar00rootroot00000000000000#!/usr/bin/perl #note you have to use "-d 0" in the cd-hit run #note you better to use "-g 1" in the cd-hit run # this script read the .clstr file, it generate a seperate fasta file # for each cluster over certain size # for example, if you run cd-hit -i db -o dbout -c 0.6 -n 4 -d 0 -g 1 # then you will have a dbout.clstr # now run this script: # ./make_multi_seq.pl db dbout.clstr multi-seq 20 # my $fasta = shift; my $clstr = shift; my $out_dir = shift; my $size_cutoff = shift; die unless (-e $fasta); die unless (-e $clstr); die unless ($out_dir); $size_cutoff = 1 unless ($size_cutoff); if (not -e $out_dir) {my $cmd = `mkdir $out_dir`;} open(TMP, $clstr) || die; my %id2cid=(); my $cid = ""; my @ids = (); my $no = 0; while($ll = ) { if ($ll =~ /^>/) { if ($no >= $size_cutoff) { foreach $i (@ids) { $id2cid{$i} = $cid;} } if ($ll =~ /^>Cluster (\d+)/) { $cid = $1; } else { die "Wrong format $ll"; } @ids = (); $no = 0; } else { if ($ll =~ /(aa|nt), >(.+)\.\.\./) { push(@ids, $2); $no++; } else { die "Wrong format $ll"; } } } close(TMP); if ($no >= $size_cutoff) { foreach $i (@ids) { $id2cid{$i} = $cid;} } open(FASTA, $fasta) || die; my $outfile_open = 0; my $flag = 0; while($ll=) { if ($ll=~ /^>(\S+)/) { my $id = $1; my $cid = $id2cid{$id}; if (defined($cid)) { close(OUT) if ($outfile_open); open(OUT, ">> $out_dir/$cid") || die "can not open file to write $out_dir/$cid"; $outfile_open = 1; $flag = 1; } else { $flag = 0; } } if ($flag) {print OUT $ll;} } close(FASTA); close(OUT) if ($outfile_open); cdhit-4.8.1/plot_2d.pl000077500000000000000000000071241343604040700145270ustar00rootroot00000000000000#!/usr/bin/perl use Image::Magick; $file90 = shift; $segs = shift; $out_file = shift; my $image_xx = 800; my $image_yy = 600; my $border = 20; my $border2 = $border/2; my $lab_margin = 30; my $scale = 200/10; my @seg_colors = qw//; my @seg_sizes = qw/1 2 5 6 8 10 12 14 16 18 20/; my $p = { magick => Image::Magick->new(), border => 2, grid_color => "#eeeeee", gif_file => $out_file, height => $image_yy+$border+$lab_margin, width => $image_xx+$border, }; $p->{magick}->Set(size => "$p->{width}x$p->{height}"); $p->{magick}->Read('xc:white'); my @clstr_nos = (); open(TMP, $file90) || die "Can not open file"; $readin = 0; my $this_no = 0; while(my $ll=) { if ($ll =~ /^>/ ) { if ($readin) { $clstr_nos[$this_no]++; } $this_no=0; } else { $readin = 1; $this_no++; } } close(TMP); if ($readin) { $clstr_nos[$this_no]++; } @segs = split(/,/, $segs); @segs_no = (); for ($i=0; $i<@segs; $i++) { $seg = $segs[$i]; if ($seg =~ /-/) { ($b, $e) = split(/-/, $seg); } else { $b= $e = $seg; } $no1 = 0; for($j=$b; $j<=$e; $j++) { $no1+= $clstr_nos[$j]; } print "$seg\t$no1\n"; $no2 = int($no1/$scale); $no2++ if ($no1 % $scale); $segs_no[$i] = $no2; } my @covered = (); my $xmin = $border2; my $xmax = $image_xx+$border2; my $ymin = $border2; my $ymax = $image_yy+$border2; $p->{magick}->Draw(primitive => 'line', points => "$xmin,$ymin,$xmax,$ymin"); $p->{magick}->Draw(primitive => 'line', points => "$xmin,$ymin,$xmin,$ymax"); $p->{magick}->Draw(primitive => 'line', points => "$xmax,$ymin,$xmax,$ymax"); $p->{magick}->Draw(primitive => 'line', points => "$xmin,$ymax,$xmax,$ymax"); my $no_segs = $#segs+1; for ($i=$#segs; $i>=0; $i--) { $size = $seg_sizes[$i]-1; $c = "#000000"; $no2 = $segs_no[$i]; for ($j=0; $j<$no2; $j++) { $x1 = rand($image_xx)+$border2; $x2 = $x1 + $size; $y1 = rand($image_yy)+$border2; $y2 = $y1 + $size; if ($x2 > $xmax) {$x2 = $xmax; $x1 = $x2-$size;} if ($y2 > $ymax) {$y2 = $ymax; $y1 = $y2-$size;} if ($size) { $p->{magick}->Draw(primitive => 'Rectangle', points => "$x1,$y1,$x2,$y2", fill => $c); } else { $p->{magick}->Draw(primitive => 'point', points => "$x1,$y1", fill => $c); } } $x1 = $border2 + int($image_xx/$no_segs)*$i; $x2 = $x1 + $size; $y1 = $ymax + int($lab_margin/2) - int($size/2); $y2 = $y1 + $size; if ($size) { $p->{magick}->Draw(primitive => 'Rectangle', points => "$x1,$y1,$x2,$y2", fill => $c); } else { $p->{magick}->Draw(primitive => 'point', points => "$x1,$y1", fill => $c); } } $p->{magick}->Write($p->{gif_file}); #build color index my @colors = (); for ($i=0; $i<$steps; $i++) { $j = $i/$steps; my ($r, $g, $b) = get_gradient_color_255_old($j); my $c1 = uc(sprintf("#%2x%2x%2x",$r,$g,$b)); $c1 =~ s/ /0/g; $colors[$i] = $c1; } # return color sub get_gradient_color_255_old { my $ratio = shift; my ($r, $g, $b); if ($ratio >= 0 and $ratio < 0.2 ) { $r = 255; $g = int( 1275*$ratio ); $b = 0; } elsif ($ratio >= 0.2 and $ratio < 0.4 ) { $r = int ( 255 - 1275*($ratio-0.2) ); $g = 255; $b = 0; } elsif ($ratio >= 0.4 and $ratio < 0.6 ) { $r = 0; $g = 255; $b = int ( 1275 * ($ratio-0.4) ); } elsif ($ratio >= 0.6 and $ratio < 0.8 ) { $r = 0; $g = int ( 255 - 1275*($ratio-0.6) ); $b = 255; } elsif ($ratio >= 0.8 and $ratio <= 1.0 ) { $r = int ( 1275 *($ratio-0.8) ); $g = 0; $b = 255; } return ($r,$g,$b); } cdhit-4.8.1/plot_len1.pl000077500000000000000000000042161343604040700150600ustar00rootroot00000000000000#!/usr/bin/perl $file90 = shift; $segs = shift; @segs = split(/,/, $segs); $len_segs = shift; @len_segs = split(/,/,$len_segs); my @clstr_nos = (); my @clstr_len = (); open(TMP, $file90) || die "Can not open file"; $readin = 0; my $this_no = 0; my $this_len = 0; my $max_no = 0; while(my $ll=) { if ($ll =~ /^>/ ) { if ($readin) { $clstr_nos[$this_no]++; $max_no = $this_no if ($this_no>$max_no); if (not defined($clstr_len[$this_no])) { $clstr_len[$this_no] = []; } push(@{$clstr_len[$this_no]}, $this_len) } $this_no=0; } else { $readin = 1; $this_no++; chop($ll); if ($ll =~ /\*$/) { if ($ll =~ /(\d+)(aa|nt), /) { $this_len=$1;} } } } close(TMP); if ($readin) { $clstr_nos[$this_no]++; $max_no = $this_no if ($this_no>$max_no); if (not defined($clstr_len[$this_no])) { $clstr_len[$this_no] = []; } push(@{$clstr_len[$this_no]}, $this_len) } print "Size\tNo. seq\tNo. clstr"; my @tlen_nos = (); for ($j=0; $j<@len_segs; $j++) { $len_seg = $len_segs[$j]; print "\t$len_seg"; $tlen_nos[$j] = 0; } print "\n"; my $tno = 0; my $tno1 = 0; for ($i=0; $i<@segs; $i++) { $seg = $segs[$i]; my @lens = (); if ($seg =~ /-/) { $no = 0; $no1 = 0; ($b, $e) = split(/-/, $seg); $e = $max_no if ($e =~ /up/i); for($j=$b; $j<=$e; $j++) { $no += $j * $clstr_nos[$j]; $no1+= $clstr_nos[$j]; push(@lens, @{$clstr_len[$j]}); } $tno += $no; $tno1 += $no1; print "$seg\t$no\t$no1"; } else { $tno += $seg * $clstr_nos[$seg]; $tno1 += $clstr_nos[$seg]; push(@lens, @{$clstr_len[$seg]}); print "$seg\t", $seg * $clstr_nos[$seg], "\t$clstr_nos[$seg]"; } for ($j=0; $j<@len_segs; $j++) { $len_seg = $len_segs[$j]; $no1 = 0; my ($b, $e); if ($len_seg =~ /-/) { ($b, $e) = split(/-/, $len_seg); } else { $b = $e = $len_seg; } foreach $tlen (@lens) { $no1++ if (($tlen>=$b) and ($tlen<=$e)); } print "\t$no1"; $tlen_nos[$j] += $no1; } print "\n"; } print "Total\t$tno\t$tno1"; for ($j=0; $j<@len_segs; $j++) { print "\t$tlen_nos[$j]"; } print "\n"; cdhit-4.8.1/psi-cd-hit/000077500000000000000000000000001343604040700145615ustar00rootroot00000000000000cdhit-4.8.1/psi-cd-hit/README.psi-cd-hit000066400000000000000000000022131343604040700173770ustar00rootroot00000000000000 For protein sequences (1) Please use regular cd-hit to cluster your database down to 60% using commands such as cd-hit -i db -o db_90 -c 0.9 -n 5 -g 1 -G 0 -aS 0.8 -d 0 -p 1 -T 16 -M 0 > db_90.log cd-hit -i db_90 -o db_60 -c 0.6 -n 4 -g 1 -G 0 -aS 0.8 -d 0 -p 1 -T 16 -M 0 > db_60.log (2) (a) option for local execution on a single computer: ./psi-cd-hit.pl -i db_60 -o db_30 -c 0.3 -ce 1e-6 -aS 0.8 -G 0 -g 1 -exec local -core 16 ./psi-cd-hit.pl -i db_60 -o db_30 -c 0.3 -ce 1e-6 -aS 0.8 -G 0 -g 1 -exec local -core 16 -restart db_30.restart (to restart if program crash) ./psi-cd-hit.pl -help to see all options (b) option for running on a cluster using a queueing system (qsub) ./psi-cd-hit.pl -i db_60 -o db_30 -c 0.3 -ce 1e-6 -aS 0.8 -G 0 -g 1 -exec qsub -host 8 -core 8 -shf qsub_sh_template For very long DNA sequences ./psi-cd-hit.pl -i db.fna -o db90.fna -c 0.9 -G 1 -g 1 -prog megablast -s "-F F -e 0.000001 -b 100000 -v 100000" -exec local -core 32 ./psi-cd-hit.pl -i db.fna -o db90.fna -c 0.9 -G 1 -g 1 -prog blastn -circle 1 -exec local -core 32 ./psi-cd-hit.pl -help to see all options visit http://cd-hit.org for more info cdhit-4.8.1/psi-cd-hit/cd-hit-div.pl000077500000000000000000000015551343604040700170570ustar00rootroot00000000000000#!/usr/bin/perl #not like cd-hit-div, this script do not sort input #or throw away seq $in = shift; $in or die "no input file"; $out = shift; $out or die "no output file"; $div = shift; $div or die "no div number"; @fhs = (); for ($i=0; $i<$div; $i++) { my $tf = "$out-$i"; $tfh = "FH". $i; open($tfh, "> $tf") || die "can not open output files for write"; push(@fhs, $tfh); } open(TMP, $in) || die "can not open input file"; my $seq; my $des; my $no = 0; while($ll = ) { if ($ll =~ /^>/) { if ($seq) { $i = $no % $div; $tfh = $fhs[$i]; $no++; print $tfh $des, $seq; } $des = $ll; $seq = ""; } else { $seq .= $ll; } } if ($seq) { $i = $no % $div; $tfh = $fhs[$i]; $no++; print $tfh $des, $seq; } close(TMP); for ($i=0; $i<$div; $i++) { $tfh = $fhs[$i]; close($tfh); } cdhit-4.8.1/psi-cd-hit/clstr_select_rep.pl000077500000000000000000000010501343604040700204510ustar00rootroot00000000000000#!/usr/bin/perl my $by = shift; my $min; my $max; if ($by eq "size") { $min = shift; $max = shift; } $rep = ""; $no = 0; while($ll=<>){ if ($ll =~ /^>/) { if (($no >= $min) and ($no <= $max)) { print "$rep\n"; } $rep = ""; $no = 0; } else { chop($ll); if ($ll =~ /\*$/) { $rep = ""; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $rep = $2; } else { die "format error $ll"; } } $no++; } } if (($no >= $min) and ($no <= $max)) { print "$rep\n"; } cdhit-4.8.1/psi-cd-hit/clstr_select_seq.pl000077500000000000000000000007561343604040700204670ustar00rootroot00000000000000#!/usr/bin/perl my $by = shift; my $min; my $max; if ($by eq "size") { $min = shift; $max = shift; } $rep = ""; $no = 0; while($ll=<>){ if ($ll =~ /^>/) { if (($no >= $min) and ($no <= $max)) { print "$rep"; } $rep = ""; $no = 0; } else { chop($ll); if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $rep .= "$2\n"; } else { die "format error $ll"; } $no++; } } if (($no >= $min) and ($no <= $max)) { print "$rep"; } cdhit-4.8.1/psi-cd-hit/fetch_fasta_by_ids.pl000077500000000000000000000006601343604040700207230ustar00rootroot00000000000000#!/usr/bin/perl my ($gi_file, $seq_file) = @ARGV; my %gi1 = (); my $gi; open(TMP, $gi_file) || die; while($ll = ) { chop($ll); $ll =~ s/\s.+$//; $ll =~ s/^>//; $gi1{$ll} = 1; } close(TMP); my $flag = 0; open(TMP, $seq_file) || die; while($ll = ) { if ($ll =~ /^>/) { $gi = substr($ll,1); chop($gi); $gi =~ s/\s.+$//; $flag = ( $gi1{$gi} ) ? 1 : 0; } print $ll if ($flag); } close(TMP); cdhit-4.8.1/psi-cd-hit/fetch_fasta_exclude_ids.pl000077500000000000000000000006601343604040700217420ustar00rootroot00000000000000#!/usr/bin/perl my ($gi_file, $seq_file) = @ARGV; my %gi1 = (); my $gi; open(TMP, $gi_file) || die; while($ll = ) { chop($ll); $ll =~ s/\s.+$//; $ll =~ s/^>//; $gi1{$ll} = 1; } close(TMP); my $flag = 0; open(TMP, $seq_file) || die; while($ll = ) { if ($ll =~ /^>/) { $gi = substr($ll,1); chop($gi); $gi =~ s/\s.+$//; $flag = ( $gi1{$gi} ) ? 0 : 1; } print $ll if ($flag); } close(TMP); cdhit-4.8.1/psi-cd-hit/psi-2d.pl000077500000000000000000000316231343604040700162240ustar00rootroot00000000000000#!/usr/bin/perl my $script_name = $0; my $script_dir = $0; $script_dir =~ s/[^\/]+$//; chop($script_dir); $script_dir = "./" unless ($script_dir); use Getopt::Std; getopts("i:j:b:o:c:l:d:q:",\%opts); die usage() unless ($opts{i} and $opts{j} and $opts{b} and $opts{o}); my ($i, $j, $k, $cmd, $ll); my $db1 = $opts{i}; my $db2 = $opts{j}; my $bl = $opts{b}; # $bl is output file that blast db against db2 # formatdb -i db2 -p F # blastall -n blastn -i db1 -d db2 -m 8 my $output = $opts{o}; my $circle = $opts{c}; my $cutoff_len = $opts{l}; $cutoff_len = 0 unless ($cutoff_len); my $cutoff_idens= $opts{d}; $cutoff_idens= 0 unless ($cutoff_idens); my $cutoff_idenq= $opts{q}; $cutoff_idenq= 0 unless ($cutoff_idenq); my @id_db1 = (); my %id_db1_2_len = (); %id_db1_2_len_nN = (); my $db1_no = 0; my @id_db2 = (); my %id_db2_2_len = (); %id_db2_2_len_nN = (); my $db2_no = 0; read_db1(); read_db2(); open(OUT, ">$output") || die "can not open $output\n"; open(BL, $bl) || die "can not open $bl\n"; my $last_qid = ""; my @bl_sbj; my $bl_data_no=0; while($ll = ){ next if ($ll =~ /^#/); chop($ll); my @lls = split(/\t/,$ll); if ($lls[0] ne $last_qid) { if ($bl_data_no>0) { my $bl_data = { 'no' => $bl_data_no, 'sbj' => [@bl_sbj], }; process_this_bl( $bl_data ); } @bl_sbj = (); $bl_data_no = 0; } my $frame = ""; $frame .= ($lls[6] < $lls[7]) ? "+" : "-"; $frame .= ($lls[8] < $lls[9]) ? "+" : "-"; $bl_sbj[$bl_data_no] = { 'qid' => $lls[0], 'id' => $lls[1], 'iden' => $lls[2], 'alnln' => $lls[3], 'ms' => $lls[4], 'gap' => $lls[5], 'qfrom' => $lls[6], 'qend' => $lls[7], 'sfrom' => $lls[8], 'send' => $lls[9], 'expect' => $lls[10], 'score' => $lls[11], 'frame' => $frame, }; $bl_data_no++; $last_qid = $lls[0]; } close(BL); if ($bl_data_no>0) { my $bl_data = { 'no' => $bl_data_no, 'sbj' => [@bl_sbj], }; process_this_bl( $bl_data ); } close(OUT); ################################################################################ sub process_this_bl { my $bl = shift; my ($i, $j, $k, $ll); keep_strand_with_top_hsp($bl); if ($circle) { reset_alignment_coor_for_circle_seq($bl); } filter_short_hits($bl); #### remove hits based on total lengths #### still need to remove based on co-linner hits return unless ($bl->{no}); my $qid = $bl->{sbj}->[0]->{qid}; my %hit_ids = map { $_->{id}, 1} @{$bl->{sbj}}; my $hit_no = 0; my $text_data = ""; my @hsp = (); #### [id, len, qfrom, qend, sbegin, send, expect] my $hsp_no = 0; my $hit_len = 0; for ($i=0; $i<$bl->{no}; $i++) { my $p = $bl->{sbj}->[$i]; my $id1 = $p->{id}; if ($hsp_no) { if ($id1 ne $hsp[0]->[0]) { if (($hit_len >= $cutoff_len) and ($hit_len >= $cutoff_idens * $id_db2_2_len{$hsp[0]->[0]}) and ($hit_len >= $cutoff_idenq * $id_db1_2_len{$qid})) { @hsp = sort {$a->[2] <=> $b->[2]} @hsp; $text_data .= print_hsp($qid, @hsp); $hit_no++; } @hsp = (); @aln_lens = (); $hsp_no = 0; $hit_len = 0; } } #check whether overlap with previous high score HSPs my $overlap_flag = 0; for ($j=0; $j<$hsp_no; $j++) { if (overlap1($p->{qfrom}, $p->{qend}, $hsp[$j]->[2], $hsp[$j]->[3])) { $overlap_flag = 1; last; } if (overlap1($p->{sfrom}, $p->{send}, $hsp[$j]->[4], $hsp[$j]->[5])) { $overlap_flag = 1; last; } } next if ($overlap_flag); #check whether this HSP cross with previous high score HSPs my $cross_flag = 0; for ($j=0; $j<$hsp_no; $j++) { if (cross1($p->{qfrom}, $p->{qend}, $hsp[$j]->[2], $hsp[$j]->[3], $p->{sfrom}, $p->{send}, $hsp[$j]->[4], $hsp[$j]->[5])) { $cross_flag = 1; last; } } next if ($cross_flag); push(@hsp, [$id1, $len_sub, $p->{qfrom}, $p->{qend}, $p->{sfrom}, $p->{send}, $p->{expect}, $p->{frame}]); $hit_len += abs($p->{sfrom} - $p->{send}); $hsp_no++; } if ($hsp_no) { if (($hit_len >= $cutoff_len) and ($hit_len >= $cutoff_idens * $id_db2_2_len{$hsp[0]->[0]}) and ($hit_len >= $cutoff_idenq * $id_db1_2_len{$qid})) { @hsp = sort {$a->[2] <=> $b->[2]} @hsp; $text_data .= print_hsp($qid, @hsp); $hit_no++; } } print OUT ">$qid\t$id_db1_2_len{$qid}\t$hit_no\n"; print OUT $text_data; } ########## END process_this_bl sub print_hsp { my ($qid, @hsp) = @_; my $hsp_no = $#hsp+1; my ($i, $j, $k); my $print_hsp_return = ""; my @str1 = (); my $aln1 = 0; my @str2 = (); my $aln2 = 0; for ($i=0; $i<$hsp_no; $i++){ push(@str1, "$hsp[$i]->[2]-$hsp[$i]->[3]"); $aln1 += $hsp[$i]->[3]-$hsp[$i]->[2]; push(@str2, "$hsp[$i]->[4]-$hsp[$i]->[5]"); $aln2 += $hsp[$i]->[5]-$hsp[$i]->[4]; } my $sid = $hsp[0]->[0]; $print_hsp_return .= "\t$qid\t$id_db1_2_len{$qid}\t$id_db1_2_len_nN{$qid}\t$aln1\t". join("|", @str1). "\n"; $print_hsp_return .= "\t$sid\t$id_db2_2_len{$sid}\t$id_db1_2_len_nN{$qid}\t$aln2\t". join("|", @str2). "\n"; return $print_hsp_return; } ########## END print_hsp sub overlap1 { my ($b1, $e1, $b2, $e2) = @_; my $t; ### if ($e1 < $b1) { $t = $e1; $e1 = $b1; $b1 = $t; } if ($e2 < $b2) { $t = $e2; $e2 = $b2; $b2 = $t; } return 0 if ($e2 < $b1); return 0 if ($b2 > $e1); return ( ($e1<$e2)? $e1:$e2 )-( ($b1>$b2)? $b1:$b2); } ########## END overlap1 sub cross1 { my ($q_b1, $q_e1, $q_b2, $q_e2, $s_b1, $s_e1, $s_b2, $s_e2) = @_; my $fr_q1 = ($q_b1 < $q_e1) ? 1 : -1; my $fr_q2 = ($q_b2 < $q_e2) ? 1 : -1; my $fr_s1 = ($s_b1 < $s_e1) ? 1 : -1; my $fr_s2 = ($s_b2 < $s_e2) ? 1 : -1; my $fr1 = $fr_q1 * $fr_s1; my $fr2 = $fr_q2 * $fr_s2; return 1 if (($fr1 * $fr2) < 0); # one ++ and one +- my $t; if ($q_e1 < $q_b1) { $t = $q_e1; $q_e1 = $q_b1; $q_b1 = $t; } if ($q_e2 < $q_b2) { $t = $q_e2; $q_e2 = $q_b2; $q_b2 = $t; } if ($s_e1 < $s_b1) { $t = $s_e1; $s_e1 = $s_b1; $s_b1 = $t; } if ($s_e2 < $s_b2) { $t = $s_e2; $s_e2 = $s_b2; $s_b2 = $t; } # after above transformation # 0 q_b1 q_e1 q_b2 q_e2 qlen # query 5' ==================================================================== # match |||||||||||||||| ||||||||||||| # subject 5' ========================================================================>>>>>> frame + # 0 s_b1 s_e1 s_b2 s_e2 slen # match |||||||||||||||| ||||||||||||| # subject 3' ========================================================================>>>>>> frame - # slen s_e1 s_b1 s_e2 s_b2 0 if (($fr1 > 0) and ($fr2>0)) { # both ++ return ( (($q_b2-$q_b1)*($s_b2-$s_b1) <0) ? 1 : 0); } else { # both -- return ( (($q_b2-$q_b1)*($s_e1-$s_e2) <0) ? 1 : 0); } } ########## END cross1 ########## let the top hsp to start at 0 for both query and subject ########## i.e. the begining of HSP to be new original - coordinate 0 ########## then reset all other HSPs' alignment coordinates sub reset_alignment_coor_for_circle_seq { my $self = shift; my ($i,$j,$k); my $last_id = ""; $j = 0; my $hsp_count = 0; # number of HSPs for a subject for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); if ($id1 ne $last_id) { if ($hsp_count > 1) { # it is necessary to reset coordinate when at least 2 HSP my $p_top_hsp = $self->{sbj}->[$j]; my $len_q = (split(/\./, $p_top_hsp->{qid}))[1]; my $len_s = (split(/\./, $p_top_hsp->{id}))[1]; my $ref_q = ($p_top_hsp->{qfrom} < $p_top_hsp->{qend}) ? $p_top_hsp->{qfrom} : $p_top_hsp->{qend}; my $ref_s = ($p_top_hsp->{sfrom} < $p_top_hsp->{send}) ? $p_top_hsp->{sfrom} : $p_top_hsp->{send}; for ($k = $j; $k<$j+$hsp_count; $k++) { $self->{sbj}->[$k]->{qfrom} -= $ref_q; if ($self->{sbj}->[$k]->{qfrom} < 0) {$self->{sbj}->[$k]->{qfrom} += $len_q;} $self->{sbj}->[$k]->{qend} -= $ref_q; if ($self->{sbj}->[$k]->{qend} < 0) {$self->{sbj}->[$k]->{qend} += $len_q;} $self->{sbj}->[$k]->{sfrom} -= $ref_s; if ($self->{sbj}->[$k]->{sfrom} < 0) {$self->{sbj}->[$k]->{sfrom} += $len_s;} $self->{sbj}->[$k]->{send} -= $ref_s; if ($self->{sbj}->[$k]->{send} < 0) {$self->{sbj}->[$k]->{send} += $len_s;} } } $j = $i; $hsp_count = 0; } $last_id = $id1; $hsp_count++; } #last subject if ($hsp_count > 1) { # it is necessary to reset coordinate when at least 2 HSP my $p_top_hsp = $self->{sbj}->[$j]; my $len_q = (split(/\./, $p_top_hsp->{qid}))[1]; my $len_s = (split(/\./, $p_top_hsp->{id}))[1]; my $ref_q = ($p_top_hsp->{qfrom} < $p_top_hsp->{qend}) ? $p_top_hsp->{qfrom} : $p_top_hsp->{qend}; my $ref_s = ($p_top_hsp->{sfrom} < $p_top_hsp->{send}) ? $p_top_hsp->{sfrom} : $p_top_hsp->{send}; for ($k = $j; $k<$j+$hsp_count; $k++) { $self->{sbj}->[$k]->{qfrom} -= $ref_q; if ($self->{sbj}->[$k]->{qfrom} < 0) {$self->{sbj}->[$k]->{qfrom} += $len_q;} $self->{sbj}->[$k]->{qend} -= $ref_q; if ($self->{sbj}->[$k]->{qend} < 0) {$self->{sbj}->[$k]->{qend} += $len_q;} $self->{sbj}->[$k]->{sfrom} -= $ref_s; if ($self->{sbj}->[$k]->{sfrom} < 0) {$self->{sbj}->[$k]->{sfrom} += $len_s;} $self->{sbj}->[$k]->{send} -= $ref_s; if ($self->{sbj}->[$k]->{send} < 0) {$self->{sbj}->[$k]->{send} += $len_s;} } } return; } ########## reset_alignment_coor_for_circle_seq ########### if a hit has multiple HSPs on both + - strands ########### keep only the HSPs, whose strand is same as the top HSP sub keep_strand_with_top_hsp { my $self = shift; my ($i,$j,$k); my %id_2_strand = (); my @new_sbj = (); my $new_no = 0; for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my $id1 = $p->{id}; if (not defined($id_2_strand{$id1})) { $id_2_strand{$id1} = $p->{frame}; } if ($p->{frame} eq $id_2_strand{$id1}) { #### this stand is same as the top strand push(@new_sbj, $self->{sbj}->[$i]); $new_no++; } } $self->{no} = $new_no; $self->{sbj} = [@new_sbj]; } ########## END keep_strand_with_top_hsp ########## remove short hits sub filter_short_hits { my $self = shift; my ($i,$j,$k); my $qid = $self->{sbj}->[0]->{qid}; my %hit_len = (); for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my $id1 = $p->{id}; $hit_len{$id1} += abs($p->{sfrom} - $p->{send}); } my @new_sbj = (); my $new_no = 0; for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my $id1 = $p->{id}; if (($hit_len{$id1} >= $cutoff_len) and ($hit_len{$id1} >= $cutoff_idens * $id_db2_2_len{$id1}) and ($hit_len{$id1} >= $cutoff_idenq * $id_db1_2_len{$qid})) { push(@new_sbj, $self->{sbj}->[$i]); $new_no++; } } $self->{no} = $new_no; $self->{sbj} = [@new_sbj]; } ########## END filter_short_hits sub read_db1 { my ($i, $j, $k, $ll, $len, $id, $len2); open(TMP, $db1) || die "Can not open $db1\n"; $len = 0; $len2 = 0; while($ll=){ if ($ll =~ /^>/) { if ($len > 0) { $id_db1_2_len{$id} = $len; $id_db1_2_len_nN{$id} = $len2; } chop($ll); $ll =~ s/\s.+$//; $id = substr($ll,1); $len = 0; $len2 = 0; } else { chop($ll); $ll =~ s/\s//; $len += length($ll); $ll =~ s/N//ig; $len2 += length($ll); } } if ($len > 0) { $id_db1_2_len{$id} = $len; $id_db1_2_len_nN{$id} = $len2; } close(TMP); @id_db1 = keys %id_db1_2_len; $db1_no = $#id_db1 + 1; return; } ########## END read_db1 sub read_db2 { my ($i, $j, $k, $ll, $len, $id, $len2); open(TMP, $db2) || die "Can not open $db2\n"; $len = 0; $len2 = 0; while($ll=){ if ($ll =~ /^>/) { if ($len > 0) { $id_db2_2_len{$id} = $len; $id_db2_2_len_nN{$id} = $len2; } chop($ll); $ll =~ s/\s.+$//; $id = substr($ll,1); $len = 0; $len2 = 0; } else { chop($ll); $ll =~ s/\s//; $len += length($ll); $ll =~ s/N//ig; $len2 += length($ll); } } if ($len > 0) { $id_db2_2_len{$id} = $len; $id_db2_2_len_nN{$id} = $len2; } close(TMP); @id_db2 = keys %id_db2_2_len; $db2_no = $#id_db2 + 1; return; } ########## END read_db2 sub usage { <){ chop($ll); if ($ll =~ /^>/) { $seq =~ s/\s//g; if (length($seq) > $len_t) { add_seq($des, $seq); } $des = $ll; $seq = ""; } else { $seq .= $ll; } } $seq =~ s/\s//g; if (length($seq) > $len_t) { add_seq($des, $seq); } close(DBIN); ($NR_no >=1 ) || die "No sequence readin"; print OUTT "Total seqs $NR_no in $db_in\n"; return; } ########## END read_db sub add_seq { my ($des, $seq) = @_; $des =~ s/\s.+$//; push(@seqs, $seq); push(@dess, $des); push(@lens, length($seq)); push(@idens, 0); push(@passeds,0); push(@NR_clstr_nos,0); push(@in_bg, 0); $NR_no++; return; } ########## END add_seq sub open_LOG { open(OUTT, ">> $db_out1") || die "can not open $db_out1"; select(OUTT); $|++; ### file handle flush print OUTT "Started $date"; open(LOG, ">> $db_log") || die "Can not open $db_log"; select(LOG); $|++; ### file handle flush select(STDOUT); return; } ########## END open_LOG sub write_LOG { my $txt=shift; print LOG "$txt\n"; } {## use static variables my $last_NR90_no=0; my $last_NR_passed=0; sub watch_progress { my ($i0, $NR90_no, $NR_passed, $NR_no, $flag) = @_; my $i1 = $i0+1; if ( $i1 % 10 == 0 ) { print OUTT "."; $flag = 1 if ( $i1 % 100 == 0 ); } if ($flag) { my $t1 = (int($NR_passed/$NR_no*10000)) / 100; my $t90 = $NR90_no - $last_NR90_no; my $tno = $NR_passed - $last_NR_passed; my ($tu, $ts, $cu, $cs) = times(); my $tt = $tu + $ts + $cu + $cs; print OUTT "$i1 finished $NR90_no clusters $NR_passed passed $t90/$tno clstr/passed $t1% done $tt cpu\n"; $last_NR90_no = $NR90_no; $last_NR_passed = $NR_passed; } return; } } sub close_LOG { my $date = `date`; print OUTT "Completed $date\n"; my $total_cpu = total_remote_cpu(); print OUTT "Total CPUs on remote hosts: $total_cpu\n"; close(OUTT); close(LOG); return; } ########## END close_LOG ###### need to change to read dir because sub total_remote_cpu { my ($i, $j, $k, $ll); my $tt = 0; for ($j=0; $j<$num_qsub; $j++) { open(TCPU, "$seq_dir/host.$j.cpu") || next; while($ll = ) { chop($ll); $tt += $ll; } close(TCPU); } return $tt; } ########## END total_remote_cpu sub job_parse_blout { my ($i, $j, $k); my @hits = process_blout_blastp_blastn($job_file); open(BLOUT2, "> $job_file.out") || return; foreach $i (@hits) { print BLOUT2 join("\t", @{$i}), "\n"; } print BLOUT2 "#\n"; close(BLOUT2); return; } ########## END job_parse_blout sub write_restart { my ($i0, $i, $j, $k); open(RES, "> $restart_file") || die; for ($i0=0; $i0<$NR_no; $i0++) { $i = $NR_idx[$i0]; print RES "$i\t$NR_clstr_nos[$i]\t$idens[$i]\t$passeds[$i]\n"; } close(RES); return; } ########## END write_restart sub read_restart { my ($ii, $i0, $i, $j, $k, $ll); my @lls; open(RESIN, $restart_in) || die; $NR_passed = 0; $NR90_no = 0; $ii = -1; $i0 = 0; while($ll = ) { chop($ll); @lls = split(/\t/,$ll); $i = $lls[0]; $NR_clstr_nos[$i] = $lls[1]; $idens[$i] = $lls[2]; $passeds[$i] = $lls[3]; $NR_passed++ if ($lls[3]); if ($lls[2] eq "*") { #rep $NR90_no++; $ii = $i0 if ($lls[3]); } $NR_idx[$i0] = $i; $i0++; # idx of sorted , see write_restart } close(RESIN); $ii++; # $ii to be last rep processed return $ii; } ########## END read_restart sub write_db_clstr { my ($i0, $i, $j, $k); my @NR90_seq = (); for ($i=0; $i<$NR90_no; $i++) { $NR90_seq[$i] = []; } for ($i0=0; $i0<$NR_no; $i0++) { $i = $NR_idx[$i0]; next unless ($passeds[$i]); $j = $NR_clstr_nos[$i]; next unless ($j < $NR90_no); push(@{$NR90_seq[$j]}, $i); } open(DBCLS, "> $db_clstr") || die "Can not write $db_clstr"; for ($i=0; $i<$NR90_no; $i++) { print DBCLS ">Cluster $i\n"; $k = 0; foreach $j (@{ $NR90_seq[$i] }) { my $des = (split(/\s+/,$dess[$j]))[0]; print DBCLS "$k\t$lens[$j]"."aa, $des... "; if ($idens[$j] eq "*") { print DBCLS "*\n"; } else { print DBCLS "at $idens[$j]\n";} $k++; } } close(DBCLS); @NR90_seq=(); return; } ########## END write_db_clstr sub remove_raw_blout { my $NR_sofar = shift; my ($i0, $i, $j, $k, $cmd); return if ($keep_bl); for ($i0=$NR_sofar; $i0>=0; $i0--) { $i = $NR_idx[$i0]; next unless $passeds[$i]; next unless ($idens[$i] eq "*"); #only reps have blout my $fout = "$bl_dir/$i"; last unless (-e "$fout.out"); #removed from last call if (not $bl_STDIN) { $cmd = `rm -f $fout`; } $cmd = `rm -f $bl_dir/$i.out`; } return; } ########## END remove_raw_blout sub remove_raw_blout_bg { my $NR_sofar = shift; my ($i0, $i, $j, $k, $cmd); return if ($keep_bl); my $tmp_sh_script = "$tmp_db-rm-$NR_sofar.sh"; open(OUTRM, ">$tmp_sh_script") || die "can not write to $tmp_sh_script"; for ($i0=$NR_sofar; $i0>=0; $i0--) { $i = $NR_idx[$i0]; next unless $passeds[$i]; next unless ($idens[$i] eq "*"); #only reps have blout my $fout = "$bl_dir/$i"; last unless (-e "$fout.out"); #removed from last call if (not $bl_STDIN) { print OUTRM "rm -f $fout\n"; } print OUTRM "rm -f $bl_dir/$i.out"; } print OUTRM "rm -f $tmp_sh_script\n"; ## remove self close(OUTRM); sleep(3); $cmd = `sh $tmp_sh_script >/dev/null 2>&1 &`; return; } ########## END remove_raw_blout_bg sub fish_other_homolog { my ($i, $j, $k, $i0, $j0, $k0); $id = shift; # real idx, not sorted idx my @hits = (); wait_blast_out("$bl_dir/$id.out"); open(BLPOUT, "$bl_dir/$id.out") || return; while($i=) { last if ($i =~ /^#/); chop($i); push(@hits, [split(/\t/,$i)]); } close(BLPOUT); my $rep_len = $lens[$id]; foreach $i (@hits) { my $id1 = $i->[0]; next unless ($id1 < $NR_no); next if ($idens[$id1] eq "*"); #existing reps next if ($lens[$id1] > $rep_len); # in opt_g=1 mode, preventing it from being clustered into short rep if ( $passeds[$id1] ) { #### if this hit is better -g 1 mode my $old_e = (split(/\//,$idens[$id1]))[0]; if ($i->[3] < $old_e) { $idens[$id1] = "$i->[3]/$i->[2]aa/$i->[1]%"; $passeds[$id1] = 1; $NR_clstr_nos[$id1] = $NR90_no; } next; } $idens[$id1] = "$i->[3]/$i->[2]aa/$i->[1]%"; $passeds[$id1] = 1; $NR_clstr_nos[$id1] = $NR90_no; $NR_passed++; } return; } ########## END fish_other_homolog ########### if a hit has multiple HSPs on both + - strands ########### keep only the HSPs, whose strand is same as the top HSP sub keep_strand_with_top_hsp { my $self = shift; my ($i,$j,$k); my %id_2_strand = (); my @new_sbj = (); my $new_no = 0; for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); if (not defined($id_2_strand{$id1})) { $id_2_strand{$id1} = $p->{frame}; } if ($p->{frame} eq $id_2_strand{$id1}) { #### this stand is same as the top strand push(@new_sbj, $self->{sbj}->[$i]); $new_no++; } } $self->{no} = $new_no; $self->{sbj} = [@new_sbj]; } ########## END keep_strand_with_top_hsp ########## for blastpgp -j no (no>1) ########## keep hits from the last round sub keep_hsp_of_last_round { my $self = shift; my ($i,$j,$k); my @new_sbj = (); my $new_no = 0; my $last_score = 9999999*9999999*9999999; # a big one for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my $score = $p->{score}; if ($score > $last_score) { ## this is new round of hits @new_sbj = (); $new_no = 0; } $last_score = $score; push(@new_sbj, $self->{sbj}->[$i]); $new_no++; } $self->{no} = $new_no; $self->{sbj} = [@new_sbj]; } ########## END keep_hsp_of_last_round ########## if a query hit a subject with multiple HSPs ########## only the top HSP is kept sub keep_top_hsp { my $self = shift; my ($i,$j,$k); my %id_exist = (); my @new_sbj = (); my $new_no = 0; for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); next unless ($len_sub >0) ; if (not defined($id_exist{$id1})) { $id_exist{$id1} = 1; push(@new_sbj, $self->{sbj}->[$i]); $new_no++; } } $self->{no} = $new_no; $self->{sbj} = [@new_sbj]; } ########## keep_top_hsp ########## let the top hsp to start at 0 for both query and subject ########## i.e. the begining of HSP to be new original - coordinate 0 ########## then reset all other HSPs' alignment coordinates sub reset_alignment_coor_for_circle_seq { my $self = shift; my ($i,$j,$k); my $last_id = ""; $j = 0; my $hsp_count = 0; # number of HSPs for a subject for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); if ($id1 ne $last_id) { if ($hsp_count > 1) { # it is necessary to reset coordinate when at least 2 HSP my $p_top_hsp = $self->{sbj}->[$j]; my $len_q = (split(/\./, $p_top_hsp->{qid}))[1]; my $len_s = (split(/\./, $p_top_hsp->{id}))[1]; my $ref_q = ($p_top_hsp->{qfrom} < $p_top_hsp->{qend}) ? $p_top_hsp->{qfrom} : $p_top_hsp->{qend}; my $ref_s = ($p_top_hsp->{sfrom} < $p_top_hsp->{send}) ? $p_top_hsp->{sfrom} : $p_top_hsp->{send}; for ($k = $j; $k<$j+$hsp_count; $k++) { $self->{sbj}->[$k]->{qfrom} -= $ref_q; if ($self->{sbj}->[$k]->{qfrom} < 0) {$self->{sbj}->[$k]->{qfrom} += $len_q;} $self->{sbj}->[$k]->{qend} -= $ref_q; if ($self->{sbj}->[$k]->{qend} < 0) {$self->{sbj}->[$k]->{qend} += $len_q;} $self->{sbj}->[$k]->{sfrom} -= $ref_s; if ($self->{sbj}->[$k]->{sfrom} < 0) {$self->{sbj}->[$k]->{sfrom} += $len_s;} $self->{sbj}->[$k]->{send} -= $ref_s; if ($self->{sbj}->[$k]->{send} < 0) {$self->{sbj}->[$k]->{send} += $len_s;} } } $j = $i; $hsp_count = 0; } $last_id = $id1; $hsp_count++; } #last subject if ($hsp_count > 1) { # it is necessary to reset coordinate when at least 2 HSP my $p_top_hsp = $self->{sbj}->[$j]; my $len_q = (split(/\./, $p_top_hsp->{qid}))[1]; my $len_s = (split(/\./, $p_top_hsp->{id}))[1]; my $ref_q = ($p_top_hsp->{qfrom} < $p_top_hsp->{qend}) ? $p_top_hsp->{qfrom} : $p_top_hsp->{qend}; my $ref_s = ($p_top_hsp->{sfrom} < $p_top_hsp->{send}) ? $p_top_hsp->{sfrom} : $p_top_hsp->{send}; for ($k = $j; $k<$j+$hsp_count; $k++) { $self->{sbj}->[$k]->{qfrom} -= $ref_q; if ($self->{sbj}->[$k]->{qfrom} < 0) {$self->{sbj}->[$k]->{qfrom} += $len_q;} $self->{sbj}->[$k]->{qend} -= $ref_q; if ($self->{sbj}->[$k]->{qend} < 0) {$self->{sbj}->[$k]->{qend} += $len_q;} $self->{sbj}->[$k]->{sfrom} -= $ref_s; if ($self->{sbj}->[$k]->{sfrom} < 0) {$self->{sbj}->[$k]->{sfrom} += $len_s;} $self->{sbj}->[$k]->{send} -= $ref_s; if ($self->{sbj}->[$k]->{send} < 0) {$self->{sbj}->[$k]->{send} += $len_s;} } } return; } ########## reset_alignment_coor_for_circle_seq sub process_blout_blastp_blastn { my ($i, $j, $k, $i0, $j0, $k0); my $blout = shift; my @blhits = (); #### need $len_rep my $len_rep = 0; my $bl = readblast_m8("", $blout); if ($blast_prog eq "blastn") { keep_strand_with_top_hsp($bl); } if (($blast_prog eq "blastpgp") and (not $prof_db)) {keep_hsp_of_last_round($bl); } if ($g_iden == 0 ) { #### Local identity keep_top_hsp($bl); #### local alignment, only the top HSP for ($i=0; $i<$bl->{no}; $i++) { my $p = $bl->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); my $frame = $p->{frame}; if (not $len_rep) {$len_rep = (split(/\./,$p->{qid}))[1]; } my $iden = $p->{iden}; next unless (($len_sub >0) and ($len_rep>0)); my $cov_aS = $p->{alnln} / $len_sub; my $cov_aL = $p->{alnln} / $len_rep; my $exp1 = $p->{expect}; if (($iden/100 > $NR_clstr or $exp1<$NR_clstre) and ($cov_aS >= $opt_aS) and ($cov_aL >= $opt_aL) ) { push(@blhits, [$id1, $iden, $p->{alnln}, $exp1, $frame]); } } return @blhits; } #### END if ($g_iden == 0 ) else { #### Global idnetity if (($blast_prog eq "blastn") and $circle) { reset_alignment_coor_for_circle_seq($bl); } #### get colinear non-overlapping HSPs my @hsp = (); #### [id, len, qfrom, qend, sbegin, send, expect] my $iden_letters = 0; my $aln_letters = 0; my @aln_lens = (); my $hsp_no = 0; for ($i=0; $i<$bl->{no}; $i++) { my $p = $bl->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); my $frame = $p->{frame}; if (not $len_rep) {$len_rep = (split(/\./,$p->{qid}))[1]; } next unless (($len_sub >0) and ($len_rep>0)); if ($hsp_no) { if ($id1 ne $hsp[0]->[0]) { #### 1. parse previous subject's HSPs my $iden = int($iden_letters / $hsp[0]->[1] * 10000)/100; my $cov_aS = $aln_letters / $hsp[0]->[1]; my $cov_aL = $aln_letters / $len_rep; my $exp1 = $hsp[0]->[6]; my $frame = $hsp[0]->[7]; if (($iden/100 > $NR_clstr or $exp1<$NR_clstre) and ($cov_aS >= $opt_aS) and ($cov_aL >= $opt_aL) ) { #push(@blhits, [$hsp[0]->[0], $iden, $aln_letters, $exp1, $frame]); push(@blhits, [$hsp[0]->[0], $iden, join(":", @aln_lens), $exp1, $frame]); } #### 2. init some values @hsp = (); $iden_letters = 0; $aln_letters = 0; @aln_lens = (); $hsp_no = 0; } } #check whether overlap with previous high score HSPs my $overlap_flag = 0; for ($j=0; $j<$hsp_no; $j++) { if (overlap1($p->{qfrom}, $p->{qend}, $hsp[$j]->[2], $hsp[$j]->[3])) { $overlap_flag = 1; last; } if (overlap1($p->{sfrom}, $p->{send}, $hsp[$j]->[4], $hsp[$j]->[5])) { $overlap_flag = 1; last; } } next if ($overlap_flag); #check whether this HSP cross with previous high score HSPs my $cross_flag = 0; for ($j=0; $j<$hsp_no; $j++) { if (cross1($p->{qfrom}, $p->{qend}, $hsp[$j]->[2], $hsp[$j]->[3], $p->{sfrom}, $p->{send}, $hsp[$j]->[4], $hsp[$j]->[5])) { $cross_flag = 1; last; } } next if ($cross_flag); push(@hsp, [$id1, $len_sub, $p->{qfrom}, $p->{qend}, $p->{sfrom}, $p->{send}, $p->{expect}, $p->{frame}]); $iden_letters += int($p->{iden} * $p->{alnln} / 100); $aln_letters += $p->{alnln}; push(@aln_lens, $p->{alnln}); $hsp_no++; } if ($hsp_no) { #last record #### 1. parse previous subject's HSPs my $iden = int($iden_letters / $hsp[0]->[1] * 10000)/100; my $cov_aS = $aln_letters / $hsp[0]->[1]; my $cov_aL = $aln_letters / $len_rep; my $exp1 = $hsp[0]->[6]; my $frame = $hsp[0]->[7]; if (($iden/100 > $NR_clstr or $exp1<$NR_clstre) and ($cov_aS >= $opt_aS) and ($cov_aL >= $opt_aL) ) { #push(@blhits, [$hsp[0]->[0], $iden, $aln_letters, $exp1, $frame]); push(@blhits, [$hsp[0]->[0], $iden, join(":", @aln_lens), $exp1, $frame]); } } return @blhits; } } ########## END process_blout_blastp_blastn sub overlap1 { my ($b1, $e1, $b2, $e2) = @_; my $t; ### if ($e1 < $b1) { $t = $e1; $e1 = $b1; $b1 = $t; } if ($e2 < $b2) { $t = $e2; $e2 = $b2; $b2 = $t; } return 0 if ($e2 < $b1); return 0 if ($b2 > $e1); return ( ($e1<$e2)? $e1:$e2 )-( ($b1>$b2)? $b1:$b2); } ########## END overlap1 ## modified on 2013_0818 to hancle +- frames sub cross1 { my ($q_b1, $q_e1, $q_b2, $q_e2, $s_b1, $s_e1, $s_b2, $s_e2) = @_; my $fr_q1 = ($q_b1 < $q_e1) ? 1 : -1; my $fr_q2 = ($q_b2 < $q_e2) ? 1 : -1; my $fr_s1 = ($s_b1 < $s_e1) ? 1 : -1; my $fr_s2 = ($s_b2 < $s_e2) ? 1 : -1; my $fr1 = $fr_q1 * $fr_s1; my $fr2 = $fr_q2 * $fr_s2; return 1 if (($fr1 * $fr2) < 0); # one ++ and one +- my $t; if ($q_e1 < $q_b1) { $t = $q_e1; $q_e1 = $q_b1; $q_b1 = $t; } if ($q_e2 < $q_b2) { $t = $q_e2; $q_e2 = $q_b2; $q_b2 = $t; } if ($s_e1 < $s_b1) { $t = $s_e1; $s_e1 = $s_b1; $s_b1 = $t; } if ($s_e2 < $s_b2) { $t = $s_e2; $s_e2 = $s_b2; $s_b2 = $t; } # after above transformation # 0 q_b1 q_e1 q_b2 q_e2 qlen # query 5' ==================================================================== # match |||||||||||||||| ||||||||||||| # subject 5' ========================================================================>>>>>> frame + # 0 s_b1 s_e1 s_b2 s_e2 slen # match |||||||||||||||| ||||||||||||| # subject 3' ========================================================================>>>>>> frame - # slen s_e1 s_b1 s_e2 s_b2 0 if (($fr1 > 0) and ($fr2>0)) { # both ++ return ( (($q_b2-$q_b1)*($s_b2-$s_b1) <0) ? 1 : 0); } else { # both -- return ( (($q_b2-$q_b1)*($s_e1-$s_e2) <0) ? 1 : 0); } } ########## END cross1 ## modified on 2013_0818 to hancle +- frames sub cross1_before_2013_0818 { my ($q_b1, $q_e1, $q_b2, $q_e2, $s_b1, $s_e1, $s_b2, $s_e2) = @_; my $t; if ($q_e1 < $q_b1) { $t = $q_e1; $q_e1 = $q_b1; $q_b1 = $t; } if ($q_e2 < $q_b2) { $t = $q_e2; $q_e2 = $q_b2; $q_b2 = $t; } if ($s_e1 < $s_b1) { $t = $s_e1; $s_e1 = $s_b1; $s_b1 = $t; } if ($s_e2 < $s_b2) { $t = $s_e2; $s_e2 = $s_b2; $s_b2 = $t; } return ( (($q_b2-$q_b1)*($s_b2-$s_b1) <0) ? 1 : 0); } ########## END cross1 sub readblast_m8 { my ($i, $j, $k, $ll, $no); my ($q_seq, $filename) = @_; my $fh = "BL" ; if ($bl_STDIN) { $fh = "STDIN"; } else { open($fh, $filename) || return; } my @this_sbj = (); $no = 0; while($ll = <$fh>) { chop($ll); my @lls = split(/\t/,$ll); my $frame = ""; $frame .= ($lls[6] < $lls[7]) ? "+" : "-"; $frame .= ($lls[8] < $lls[9]) ? "+" : "-"; next unless ($lls[0] and $lls[1]); $this_sbj[$no] = { 'qid' => $lls[0], 'id' => $lls[1], 'iden' => $lls[2], 'alnln' => $lls[3], 'ms' => $lls[4], 'gap' => $lls[5], 'qfrom' => $lls[6], 'qend' => $lls[7], 'sfrom' => $lls[8], 'send' => $lls[9], 'expect' => $lls[10], 'score' => $lls[11], 'frame' => $frame, }; $no++; # BLASTP 2.2.24 [Aug-08-2010] # Query: gi|388328107|pdb|4DDG|A Chain A, Crystal Structure Of Human Otub1UBCH5B~UBUB # Database: pdbaa.fa # Fields: Query id, Subject id, % identity, alignment length, mismatches, gap openings, q. start, q. end, s. start, s. end, e-value, bit score #gi|388328107|pdb|4DDG|A gi|388328107|pdb|4DDG|A 91.81 171 9 3 6 171 1 171 6e-89 323 #gi|388328107|pdb|4DDG|A gi|388328107|pdb|4DDG|A 96.51 86 3 0 235 320 155 240 2e-41 166 } close($fh) if (not $bl_STDIN); my $self = { 'no' => $no, 'sbj' => [@this_sbj], }; return $self; } ########## END readblast_m8 sub blast_formatdb { my ($i0, $i, $j, $k, $len1); open(FDB, "> $tmp_db") || die; $j = 0; $len1 = 0; for ($i0=$NR_no-1; $i0>=0; $i0--) { ### from shortest to longest $i = $NR_idx[$i0]; last if ($idens[$i] eq "*"); ### last if reach rep next if ($lens[$i] < $opt_aL_lower_band); next if ($passeds[$i] and ($opt_g==0)); my $seq = $seqs[$i]; $seq =~ s/(.{70})/$1\n/g; $seq =~ s/\n$//; #print FDB ">$i $dess[$i]\n$seq\n"; print FDB ">$i.$lens[$i]\n$seq\n"; $j++; $len1 += $lens[$i]; } close(FDB); while(1) { opendir(SEQDB, $seq_dir) || next; my @leftseqs = grep {/lock/} readdir(SEQDB); closedir(SEQDB); last unless @leftseqs; sleep(3); } return(0, 0) unless ($j > 0); my $cmd_line = "$formatdb -i $tmp_db"; $cmd_line = "$formatdb -in $tmp_db" if ($bl_plus); my $cmd = `$cmd_line`; ((-e "$tmp_db.phr") and (-e "$tmp_db.pin") and (-e "$tmp_db.psq")) || ((-e "$tmp_db.nhr") and (-e "$tmp_db.nin") and (-e "$tmp_db.nsq")) || ((-e "$tmp_db.00.phr") and (-e "$tmp_db.00.pin") and (-e "$tmp_db.00.psq")) || ((-e "$tmp_db.00.nhr") and (-e "$tmp_db.00.nin") and (-e "$tmp_db.00.nsq")) || die "Can not formatdb"; return($j, $len1); } ########## END blast_formatdb sub remove_blast_db { my ($i, $j, $k); $cmd = `rm -f $tmp_db`; $cmd = `rm -f $tmp_db.p*`; $cmd = `rm -f $tmp_db.n*`; return; } ########## END remove_blast_db my $common_usage = <> << len 2 >> i.e. redundant <<<<<<<<<<<< length of short sequence >>>>>>>>>>>>>> sequence total identical letters from all co-linear and non-overlapping HSPs Glogal identity = ------------------------------------------------------------------- length of short sequence Local identity = identity of the top high score HSP if you prefer to use -G 0, it is suggested that you also use -aS, -aL, such as -aS 0.8, to prevent very short matches. -aL alignment coverage for the longer sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -aS alignment coverage for the shorter sequence, default 0.0 if set to 0.9, the alignment must covers 90% of the sequence -g (1/0), default 0 by cd-hit's default algorithm, a sequence is clustered to the first cluster that meet the threshold (fast cluster). If set to 1, the program will cluster it into the most similar cluster that meet the threshold (accurate but slow mode) but either 1 or 0 won't change the representatives of final clusters -circle (1/0), default 0 when set to 1, treat sequences as circular sequence. bacterial genomes, plasmids are circular, but their genome coordinate maybe arbitary, the 2 HSPs below will be treated as non co-linear with -circle 0 the 2 HSPs below will be treated as co-linear with -circle 1 -------------circle----------- | | seq1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx genome / plasmid 1 \\\\\\\\ ///////////// \\\\\\\\ ///////////// HSP 2 -> ////HSP 1 /// <-HSP 2 ///////////// \\\\\\\\ ///////////// \\\\\\\\ seq2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx genome / plasmid 2 | | -----------circle-------------- -sl, length of very long sequences to be skipped, default 0, no skipping e.g. -sl 5000 means sequences longer than 5000 aa will be treated as singleton clusters without clustering, to save time, especially when there is -aL option in place, very long sequences will not be clustered anyway. program: -prog (blastp, blastn, megablast, blastpgp), default blastp -p profile search para, default "-j 3 -F F -e 0.001 -b 500 -v 500" -dprof database for building PSSM, default using input you can also use another database that is more comprehensive like NR80 -s blast search para, default "-F F -e 0.000001 -b 100000 -v 100000" -bs (1/0) default 1 pipe blast results from into parser instead of save in hard drive (save time) compute: -exec (qsub, local) default local this program writes a shell script to run blast, this script is either performed locally by sh or remotely by qsub with qsub, you can use PBS, SGE etc -host number of hosts, ie number of qsub jobs -para number of parallel blast job per qsub job (each blast can use multi cores), default 1 -blp number of threads per blast job, default 1 number of threads per blast job X number of parallel blast job per qsub job should <= the number of cores in your computer if your computer grid has 32 cores / node, do either of the followings -para 4 -blp 8 -para 8 -blp 4 -para 16 -blp 2 -para 32 -blp 1 -bat number of sequences a blast job to process -shf a filename for add local settings into the job shell script for example, when you run PBS jobs, you can add quene name etc in this file and this script will add them into the job shell script e.g. template file for PBS #!/bin/sh #PBS -v PATH #PBS -l walltime=8:00:00 #PBS -q job_queue.q e.g. template file for SGE or OGE #!/bin/sh #\$ -v PATH #\$ -q job_queue.q #\$ -V #\$ -pe orte 8 job: -rs steps of save restart file and clustering output, default 5000 everytime after process 5000 sequences, program write a restart file and current clustering information -restart restart file, readin a restart file if program crash, stoped, termitated, you can restart it by add a option "-restart sth.restart" -rf steps of re format blast database, default 200,000 if program clustered 200,000 seqs, it remove them from seq pool, and re format blast db to save time -J job, job_file, exe specific jobs like parse blast outonly DO NOT use it, it is only used by this program itself -k (1/0) keep blast raw output file, default $keep_bl -P path to executables EOD sub print_usage { print < $seq_dir/$id") || die "Can not write"; #print SEQ "$dess[$id]\n$seq\n"; print SEQ ">$id.$lens[$id]\n$seq\n"; close(SEQ); $k++; last if ($k >= $total_jobs); } if ($exec_mode eq "qsub") { for ($j=0; $j<$num_qsub; $j++) { my $t = "psi-cd-hit-$j"; my $cmd = `qsub -N $t $remote_sh_script`; my $qsub_id = 0; if ($cmd =~ /(\d+)/) { $qsub_id = $1;} else {die "can not submit qsub job and return a id\n";} print LOG "qsub querying $j, PID $qsub_id\n"; $qsub_ids{$qsub_id} = 1; } } elsif ($exec_mode eq "local") { #my $cmd = `sh $remote_sh_script >/dev/null 2>&1 &`; my $cmd = `sh $remote_sh_script`; } return; } ########## END run_batch_blast3 sub write_remote_sh_script { my ($i, $j, $k); my $local_sh = < $remote_sh_script") || die; print RESH < $remote_perl_script") || die; print REPERL <> $seq_dir/host.\$host.cpu`; EOD close(REPERL); my $cmd = `chmod 755 $remote_perl_script`; return; } ########## END write_remote_perl_script sub wait_blast_out { my $out = shift; print LOG "waiting for $out"; while(1) { if (-e $out) { my $last = `tail -1 $out`; chop($last); last if ($last =~ /^#$/); } sleep(1); print LOG "."; } print LOG "\n"; return; } ########## END wait_blast_out sub SGE_qstat_xml_query { my ($i, $j, $k, $cmd, $ll); %qstat_xml_data = (); #### global $cmd = `qstat -f -xml`; if ($cmd =~ / all.q\@master BIP 0 0 0 0.08000 linux-x64 ... all.q\@node016 BIP 32 0 32 42.59000 linux-x64 ####### running jobs in this section 3535 0.51468 cd-hit ubuntu r 4 ... ######## pending jobs in this section 3784 0.60500 cd-hit ubuntu qw 32 ... EOD my @lls = split(/\n/, $cmd); $i = 2; #### skip first 2 lines for (; $i<$#lls+1; $i++) { if ($lls[$i] =~ /(\d+)/) { $id = $1;} if ($lls[$i] =~ /([^<]+)/) { $name = $1;} if ($lls[$i] =~ /([^<]+)/) {$state = $1;} } if (defined($id) and defined($name) and defined($state)) { $qstat_xml_data{$id} = [$name, $state]; } } } } 1; cdhit-4.8.1/psi-cd-hit/psi-cd-hit-local.pl000077500000000000000000001344061343604040700201620ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################################ ######### PSI-cd-hit written by Weizhong Li at http://cd-hit.org ################################################################################ our $pid = $$; our $db_in; ################### our $db_out; # input / output our $len_t = 10; ################### our $NR_clstr = 0.3; # our $NR_clstre = -1; #thresholds our $g_iden = 1; # our $opt_aS = 0.0; # our $opt_aL = 0.0; # our $circle = 0; # our $opt_g = 1; #################### our $blast_exe = "blastp"; ######################### our $bl_para = "-seg yes -evalue 0.000001 -max_target_seqs 100000"; # program our $bl_para_u = ""; # our $bl_STDIN = 1; # our $keep_bl = 0; # our $blast_prog= "blastp"; # our $formatdb = "makeblastdb"; ######################### our $exec_mode = "local"; ####################### our $num_qsub = 1; # our $para_no = 1; # compute our $sh_file = ""; # our $num_multi_seq = 50; # our $batch_no_per_node = 100; ####################### our $reformat_seg = 50000; our $restart_seg = 20000; our $job = ""; our $job_file = ""; our $date = `date`; our $restart_in = ""; our $pwd = `pwd`; chop($pwd); our $db_clstr; our $db_log; our $db_out1; our $seq_dir; our $bl_dir; our $blm_dir; our $restart_file; our $tmp_db; our $remote_perl_script; our $remote_sh_script; our $bl_path; our $bl_plus = 1; #### use blast+ our $bl_threads = 1; our $skip_long = 0; our %qsub_ids = (); #### a list of qsub ids our %qstat_xml_data = (); our @blm8_buffer = (); our %blm8_data = (); sub parse_para_etc { my ($arg, $cmd); while($arg = shift) { ## input/output: if ($arg eq "-i") { $db_in = shift; } elsif ($arg eq "-o") { $db_out = shift; } elsif ($arg eq "-l") { $len_t = shift; } ## thresholds elsif ($arg eq "-c") { $NR_clstr = shift; } elsif ($arg eq "-ce") { $NR_clstre = shift; } elsif ($arg eq "-G") { $g_iden = shift; } elsif ($arg eq "-aL") { $opt_aL = shift; } elsif ($arg eq "-aS") { $opt_aS = shift; } elsif ($arg eq "-g") { $opt_g = shift; } elsif ($arg eq "-circle") { $circle = shift; } elsif ($arg eq "-sl") { $skip_long = shift; } ## program elsif ($arg eq "-prog") { $blast_prog= shift; } elsif ($arg eq "-s") { $bl_para_u = shift; } elsif ($arg eq "-k") { $keep_bl = shift; } elsif ($arg eq "-bs") { $bl_STDIN = shift; } ## compute elsif ($arg eq "-exec") { $exec_mode = shift; } elsif ($arg eq "-host") { $num_qsub = shift; } elsif ($arg eq "-para") { $para_no = shift; } elsif ($arg eq "-shf") { $sh_file = shift; } elsif ($arg eq "-blp") { $bl_threads = shift; } elsif ($arg eq "-bat") { $batch_no_per_node = shift; } ## job: elsif ($arg eq "-rs") { $restart_seg = shift; } elsif ($arg eq "-rf") { $reformat_seg= shift; } elsif ($arg eq "-restart") { $restart_in= shift; } elsif ($arg eq "-J") { $job = shift; $job_file = shift; } ## blast path elsif ($arg eq "-P") { $bl_path = shift; } else { print_usage(); exit(); } } # speical jobs if ($job eq "parse_blout") { job_parse_blout(); exit();} elsif ($job eq "parse_blout_multi") { job_parse_blout_multi(); exit();} if (not (defined($db_in) and defined($db_out))) { print_usage(); exit(); } #### for blast+ if ($bl_plus) { if ($blast_prog eq "blastp") { $formatdb = "makeblastdb -dbtype prot -max_file_sz 2GB"; $blast_exe = "blastp -outfmt 6"; $bl_para = "-seg yes -evalue 0.000001 -max_target_seqs 100000 -num_threads $bl_threads"; # program } elsif ($blast_prog eq "psiblast") { $formatdb = "makeblastdb -dbtype prot -max_file_sz 2GB"; $blast_exe = "psiblast -outfmt 6 -num_iterations 3"; $bl_para = "-seg yes -evalue 0.000001 -max_target_seqs 100000 -num_threads $bl_threads"; # program } elsif ($blast_prog eq "blastn") { $formatdb = "makeblastdb -dbtype nucl -max_file_sz 2GB"; $blast_exe = "blastn -task blastn -outfmt 6"; $bl_para = "-dust yes -evalue 0.000001 -max_target_seqs 100000 -num_threads $bl_threads"; # program } elsif ($blast_prog eq "megablast") { $formatdb = "makeblastdb -dbtype nucl -max_file_sz 2GB"; $blast_exe = "blastn -task megablast -outfmt 6"; $bl_para = "-dust yes -evalue 0.000001 -max_target_seqs 100000 -num_threads $bl_threads"; # program $blast_prog= "blastn"; #### back to blastn for blast parser type } else { print "Unknown blast program: $blast_prog\n"; print_usage(); exit(); } if ($bl_para_u) { $bl_para = "$bl_para_u -num_threads $bl_threads"; } } if ($bl_path) { $blast_exe = "$bl_path/$blast_exe"; $formatdb = "$bl_path/$formatdb"; } my $bl_ver = `$blast_exe -version`; if ($bl_ver =~ /blast/) { print "BLAST version:\n$bl_ver\n\n"; } else { die "BLAST program not found: $blast_exe\n"; } (-e $db_in) || die "No input"; ($db_out) || die "No output"; $db_clstr = "$db_out.clstr"; $db_log = "$db_out.log"; $db_out1 = "$db_out.out"; $seq_dir = "$db_in-seq"; $bl_dir = "$db_in-bl"; $blm_dir = "$db_in-blm"; $restart_file =" $db_out.restart"; $tmp_db = "$db_in.$pid"; $remote_perl_script = "$tmp_db-bl.pl"; $remote_sh_script = "$tmp_db-bl.sh"; $cmd = `mkdir $bl_dir $blm_dir $seq_dir`; write_remote_perl_script(); write_remote_sh_script(); return; } ########## END parse_para_etc sub read_db { my $des = ""; my $seq = ""; my $ll; open(DBIN, $db_in) || die "Can not open $db_in"; while($ll=){ chop($ll); if ($ll =~ /^>/) { $seq =~ s/\s//g; if (length($seq) > $len_t) { add_seq($des, $seq); } $des = $ll; $seq = ""; } else { $seq .= $ll; } } $seq =~ s/\s//g; if (length($seq) > $len_t) { add_seq($des, $seq); } close(DBIN); ($NR_no >=1 ) || die "No sequence readin"; print OUTT "Total seqs $NR_no in $db_in\n"; return; } ########## END read_db sub add_seq { my ($des, $seq) = @_; $des =~ s/\s.+$//; push(@seqs, $seq); push(@dess, $des); push(@lens, length($seq)); push(@idens, 0); push(@passeds,0); push(@NR_clstr_nos,0); push(@in_bg, 0); $NR_no++; return; } ########## END add_seq sub open_LOG { open(OUTT, ">> $db_out1") || die "can not open $db_out1"; select(OUTT); $|++; ### file handle flush print OUTT "Started $date"; open(LOG, ">> $db_log") || die "Can not open $db_log"; select(LOG); $|++; ### file handle flush select(STDOUT); return; } ########## END open_LOG sub write_LOG { my $txt=shift; print LOG "$txt\n"; } {## use static variables my $last_NR90_no=0; my $last_NR_passed=0; sub watch_progress { my ($i0, $NR90_no, $NR_passed, $NR_no, $flag) = @_; my $i1 = $i0+1; if ( $i1 % 10 == 0 ) { print OUTT "."; $flag = 1 if ( $i1 % 100 == 0 ); } if ($flag) { my $t1 = (int($NR_passed/$NR_no*10000)) / 100; my $t90 = $NR90_no - $last_NR90_no; my $tno = $NR_passed - $last_NR_passed; my ($tu, $ts, $cu, $cs) = times(); my $tt = $tu + $ts + $cu + $cs; print OUTT "$i1 finished $NR90_no clusters $NR_passed passed $t90/$tno clstr/passed $t1% done $tt cpu\n"; $last_NR90_no = $NR90_no; $last_NR_passed = $NR_passed; } return; } } sub close_LOG { my $date = `date`; print OUTT "Completed $date\n"; my $total_cpu = total_remote_cpu(); print OUTT "Total CPUs on remote hosts: $total_cpu\n"; close(OUTT); close(LOG); return; } ########## END close_LOG ###### need to change to read dir because sub total_remote_cpu { my ($i, $j, $k, $ll); my $tt = 0; for ($j=0; $j<$num_qsub; $j++) { open(TCPU, "$seq_dir/host.$j.cpu") || next; while($ll = ) { chop($ll); $tt += $ll; } close(TCPU); } return $tt; } ########## END total_remote_cpu #### process m8 format output from multi-query search sub job_parse_blout_multi{ my ($i, $j, $k, $tfh, $ll, $t1, $t2); $tfh="BLM8"; open($tfh, $job_file) || die "can not open $job_file"; @blm8_buffer = (); my $last_id = ""; my $this_id = ""; my $tquery; while($ll = <$tfh>) { next if ($ll =~ /^#/); ($this_id, $t1) = split(/\s+/, $ll, 2); if (@blm8_buffer and ($this_id ne $last_id)) { #### blast results of last query my @hits = process_blout_blastp_blastn(); $tquery = (split(/\./, $last_id))[0]; my $no1 = $#hits+1; print ">$tquery\t$no1\n"; foreach $i (@hits) { print join("\t", @{$i}), "\n"; } print "#\n"; @blm8_buffer = (); } push(@blm8_buffer, $ll); $last_id = $this_id; } if (@blm8_buffer and ($this_id ne $last_id)) { #### blast results of last query my @hits = process_blout_blastp_blastn(); $tquery = (split(/\./, $last_id))[0]; my $no1 = $#hits+1; print ">$tquery\t$no1\n"; foreach $i (@hits) { print join("\t", @{$i}), "\n"; } print "#\n"; @blm8_buffer = (); } close($tfh); return; } ########## END job_parse_blout_multi sub job_parse_blout { my ($i, $j, $k); my @hits = process_blout_blastp_blastn($job_file); open(BLOUT2, "> $job_file.out") || return; foreach $i (@hits) { print BLOUT2 join("\t", @{$i}), "\n"; } print BLOUT2 "#\n"; close(BLOUT2); return; } ########## END job_parse_blout sub write_restart { my ($i0, $i, $j, $k); open(RES, "> $restart_file") || die; for ($i0=0; $i0<$NR_no; $i0++) { $i = $NR_idx[$i0]; print RES "$i\t$NR_clstr_nos[$i]\t$idens[$i]\t$passeds[$i]\n"; } close(RES); return; } ########## END write_restart sub read_restart { my ($ii, $i0, $i, $j, $k, $ll); my @lls; open(RESIN, $restart_in) || die; $NR_passed = 0; $NR90_no = 0; $ii = -1; $i0 = 0; while($ll = ) { chop($ll); @lls = split(/\t/,$ll); $i = $lls[0]; $NR_clstr_nos[$i] = $lls[1]; $idens[$i] = $lls[2]; $passeds[$i] = $lls[3]; $NR_passed++ if ($lls[3]); if ($lls[2] eq "*") { #rep $NR90_no++; $ii = $i0 if ($lls[3]); } $NR_idx[$i0] = $i; $i0++; # idx of sorted , see write_restart } close(RESIN); $ii++; # $ii to be last rep processed return $ii; } ########## END read_restart sub write_db_clstr { my ($i0, $i, $j, $k); my @NR90_seq = (); for ($i=0; $i<$NR90_no; $i++) { $NR90_seq[$i] = []; } for ($i0=0; $i0<$NR_no; $i0++) { $i = $NR_idx[$i0]; next unless ($passeds[$i]); $j = $NR_clstr_nos[$i]; next unless ($j < $NR90_no); push(@{$NR90_seq[$j]}, $i); } open(DBCLS, "> $db_clstr") || die "Can not write $db_clstr"; for ($i=0; $i<$NR90_no; $i++) { print DBCLS ">Cluster $i\n"; $k = 0; foreach $j (@{ $NR90_seq[$i] }) { my $des = (split(/\s+/,$dess[$j]))[0]; print DBCLS "$k\t$lens[$j]"."aa, $des... "; if ($idens[$j] eq "*") { print DBCLS "*\n"; } else { print DBCLS "at $idens[$j]\n";} $k++; } } close(DBCLS); @NR90_seq=(); return; } ########## END write_db_clstr sub remove_raw_blout { my $NR_sofar = shift; my ($i0, $i, $j, $k, $cmd); return if ($keep_bl); for ($i0=$NR_sofar; $i0>=0; $i0--) { $i = $NR_idx[$i0]; next unless $passeds[$i]; next unless ($idens[$i] eq "*"); #only reps have blout my $fout = "$bl_dir/$i"; last unless (-e "$fout.out"); #removed from last call if (not $bl_STDIN) { $cmd = `rm -f $fout`; } $cmd = `rm -f $bl_dir/$i.out`; } return; } ########## END remove_raw_blout sub remove_raw_blout_bg { my $NR_sofar = shift; my ($i0, $i, $j, $k, $cmd); return if ($keep_bl); my $tmp_sh_script = "$tmp_db-rm-$NR_sofar.sh"; open(OUTRM, ">$tmp_sh_script") || die "can not write to $tmp_sh_script"; for ($i0=$NR_sofar; $i0>=0; $i0--) { $i = $NR_idx[$i0]; next unless $passeds[$i]; next unless ($idens[$i] eq "*"); #only reps have blout my $fout = "$bl_dir/$i"; last unless (-e "$fout.out"); #removed from last call if (not $bl_STDIN) { print OUTRM "rm -f $fout\n"; } print OUTRM "rm -f $bl_dir/$i.out"; } print OUTRM "rm -f $tmp_sh_script\n"; ## remove self close(OUTRM); sleep(3); $cmd = `sh $tmp_sh_script >/dev/null 2>&1 &`; return; } ########## END remove_raw_blout_bg sub fish_other_homolog_multi { my ($i, $j, $k, $i0, $j0, $k0); $id = shift; # real idx, not sorted idx my @hits = (); if (defined($blm8_data{$id})) { @hits = @{$blm8_data{$id}}; } my $rep_len = $lens[$id]; foreach $i (@hits) { my $id1 = $i->[0]; next unless ($id1 < $NR_no); next if ($idens[$id1] eq "*"); #existing reps next if ($lens[$id1] > $rep_len); # in opt_g=1 mode, preventing it from being clustered into short rep if ( $passeds[$id1] ) { #### if this hit is better -g 1 mode my $old_e = (split(/\//,$idens[$id1]))[0]; if ($i->[3] < $old_e) { $idens[$id1] = "$i->[3]/$i->[2]aa/$i->[1]%"; $passeds[$id1] = 1; $NR_clstr_nos[$id1] = $NR90_no; } next; } $idens[$id1] = "$i->[3]/$i->[2]aa/$i->[1]%"; $passeds[$id1] = 1; $NR_clstr_nos[$id1] = $NR90_no; $NR_passed++; } if (defined($blm8_data{$id})) { delete $blm8_data{$id}; } return; } ########## END fish_other_homolog_multi sub fish_other_homolog { my ($i, $j, $k, $i0, $j0, $k0); $id = shift; # real idx, not sorted idx my @hits = (); wait_blast_out("$bl_dir/$id.out"); open(BLPOUT, "$bl_dir/$id.out") || return; while($i=) { last if ($i =~ /^#/); chop($i); push(@hits, [split(/\t/,$i)]); } close(BLPOUT); my $rep_len = $lens[$id]; foreach $i (@hits) { my $id1 = $i->[0]; next unless ($id1 < $NR_no); next if ($idens[$id1] eq "*"); #existing reps next if ($lens[$id1] > $rep_len); # in opt_g=1 mode, preventing it from being clustered into short rep if ( $passeds[$id1] ) { #### if this hit is better -g 1 mode my $old_e = (split(/\//,$idens[$id1]))[0]; if ($i->[3] < $old_e) { $idens[$id1] = "$i->[3]/$i->[2]aa/$i->[1]%"; $passeds[$id1] = 1; $NR_clstr_nos[$id1] = $NR90_no; } next; } $idens[$id1] = "$i->[3]/$i->[2]aa/$i->[1]%"; $passeds[$id1] = 1; $NR_clstr_nos[$id1] = $NR90_no; $NR_passed++; } return; } ########## END fish_other_homolog ########### if a hit has multiple HSPs on both + - strands ########### keep only the HSPs, whose strand is same as the top HSP sub keep_strand_with_top_hsp { my $self = shift; my ($i,$j,$k); my %id_2_strand = (); my @new_sbj = (); my $new_no = 0; for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); if (not defined($id_2_strand{$id1})) { $id_2_strand{$id1} = $p->{frame}; } if ($p->{frame} eq $id_2_strand{$id1}) { #### this stand is same as the top strand push(@new_sbj, $self->{sbj}->[$i]); $new_no++; } } $self->{no} = $new_no; $self->{sbj} = [@new_sbj]; } ########## END keep_strand_with_top_hsp ########## for psiblast -j no (no>1) ########## keep hits from the last round sub keep_hsp_of_last_round { my $self = shift; my ($i,$j,$k); my @new_sbj = (); my $new_no = 0; my $last_score = 9999999*9999999*9999999; # a big one for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my $score = $p->{score}; if ($score > $last_score) { ## this is new round of hits @new_sbj = (); $new_no = 0; } $last_score = $score; push(@new_sbj, $self->{sbj}->[$i]); $new_no++; } $self->{no} = $new_no; $self->{sbj} = [@new_sbj]; } ########## END keep_hsp_of_last_round ########## if a query hit a subject with multiple HSPs ########## only the top HSP is kept sub keep_top_hsp { my $self = shift; my ($i,$j,$k); my %id_exist = (); my @new_sbj = (); my $new_no = 0; for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); next unless ($len_sub >0) ; if (not defined($id_exist{$id1})) { $id_exist{$id1} = 1; push(@new_sbj, $self->{sbj}->[$i]); $new_no++; } } $self->{no} = $new_no; $self->{sbj} = [@new_sbj]; } ########## keep_top_hsp ########## let the top hsp to start at 0 for both query and subject ########## i.e. the begining of HSP to be new original - coordinate 0 ########## then reset all other HSPs' alignment coordinates sub reset_alignment_coor_for_circle_seq { my $self = shift; my ($i,$j,$k); my $last_id = ""; $j = 0; my $hsp_count = 0; # number of HSPs for a subject for ($i=0; $i<$self->{no}; $i++) { my $p = $self->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); if ($id1 ne $last_id) { if ($hsp_count > 1) { # it is necessary to reset coordinate when at least 2 HSP my $p_top_hsp = $self->{sbj}->[$j]; my $len_q = (split(/\./, $p_top_hsp->{qid}))[1]; my $len_s = (split(/\./, $p_top_hsp->{id}))[1]; my $ref_q = ($p_top_hsp->{qfrom} < $p_top_hsp->{qend}) ? $p_top_hsp->{qfrom} : $p_top_hsp->{qend}; my $ref_s = ($p_top_hsp->{sfrom} < $p_top_hsp->{send}) ? $p_top_hsp->{sfrom} : $p_top_hsp->{send}; for ($k = $j; $k<$j+$hsp_count; $k++) { $self->{sbj}->[$k]->{qfrom} -= $ref_q; if ($self->{sbj}->[$k]->{qfrom} < 0) {$self->{sbj}->[$k]->{qfrom} += $len_q;} $self->{sbj}->[$k]->{qend} -= $ref_q; if ($self->{sbj}->[$k]->{qend} < 0) {$self->{sbj}->[$k]->{qend} += $len_q;} $self->{sbj}->[$k]->{sfrom} -= $ref_s; if ($self->{sbj}->[$k]->{sfrom} < 0) {$self->{sbj}->[$k]->{sfrom} += $len_s;} $self->{sbj}->[$k]->{send} -= $ref_s; if ($self->{sbj}->[$k]->{send} < 0) {$self->{sbj}->[$k]->{send} += $len_s;} } } $j = $i; $hsp_count = 0; } $last_id = $id1; $hsp_count++; } #last subject if ($hsp_count > 1) { # it is necessary to reset coordinate when at least 2 HSP my $p_top_hsp = $self->{sbj}->[$j]; my $len_q = (split(/\./, $p_top_hsp->{qid}))[1]; my $len_s = (split(/\./, $p_top_hsp->{id}))[1]; my $ref_q = ($p_top_hsp->{qfrom} < $p_top_hsp->{qend}) ? $p_top_hsp->{qfrom} : $p_top_hsp->{qend}; my $ref_s = ($p_top_hsp->{sfrom} < $p_top_hsp->{send}) ? $p_top_hsp->{sfrom} : $p_top_hsp->{send}; for ($k = $j; $k<$j+$hsp_count; $k++) { $self->{sbj}->[$k]->{qfrom} -= $ref_q; if ($self->{sbj}->[$k]->{qfrom} < 0) {$self->{sbj}->[$k]->{qfrom} += $len_q;} $self->{sbj}->[$k]->{qend} -= $ref_q; if ($self->{sbj}->[$k]->{qend} < 0) {$self->{sbj}->[$k]->{qend} += $len_q;} $self->{sbj}->[$k]->{sfrom} -= $ref_s; if ($self->{sbj}->[$k]->{sfrom} < 0) {$self->{sbj}->[$k]->{sfrom} += $len_s;} $self->{sbj}->[$k]->{send} -= $ref_s; if ($self->{sbj}->[$k]->{send} < 0) {$self->{sbj}->[$k]->{send} += $len_s;} } } return; } ########## reset_alignment_coor_for_circle_seq sub process_blout_blastp_blastn { my ($i, $j, $k, $i0, $j0, $k0); my $blout = shift; my @blhits = (); #### need $len_rep my $len_rep = 0; my $bl = defined($blout) ? readblast_m8("", $blout) : readblast_m8_buffer(); if ($blast_prog eq "blastn") { keep_strand_with_top_hsp($bl); } if ($blast_prog eq "psiblast" ) {keep_hsp_of_last_round($bl); } if ($g_iden == 0 ) { #### Local identity keep_top_hsp($bl); #### local alignment, only the top HSP for ($i=0; $i<$bl->{no}; $i++) { my $p = $bl->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); my $frame = $p->{frame}; if (not $len_rep) {$len_rep = (split(/\./,$p->{qid}))[1]; } my $iden = $p->{iden}; next unless (($len_sub >0) and ($len_rep>0)); my $cov_aS = $p->{alnln} / $len_sub; my $cov_aL = $p->{alnln} / $len_rep; my $exp1 = $p->{expect}; if (($iden/100 > $NR_clstr or $exp1<$NR_clstre) and ($cov_aS >= $opt_aS) and ($cov_aL >= $opt_aL) ) { push(@blhits, [$id1, $iden, $p->{alnln}, $exp1, $frame]); } } return @blhits; } #### END if ($g_iden == 0 ) else { #### Global idnetity if (($blast_prog eq "blastn") and $circle) { reset_alignment_coor_for_circle_seq($bl); } #### get colinear non-overlapping HSPs my @hsp = (); #### [id, len, qfrom, qend, sbegin, send, expect] my $iden_letters = 0; my $aln_letters = 0; my @aln_lens = (); my $hsp_no = 0; for ($i=0; $i<$bl->{no}; $i++) { my $p = $bl->{sbj}->[$i]; my ($id1, $len_sub) = split(/\./, $p->{id}); my $frame = $p->{frame}; if (not $len_rep) {$len_rep = (split(/\./,$p->{qid}))[1]; } next unless (($len_sub >0) and ($len_rep>0)); if ($hsp_no) { if ($id1 ne $hsp[0]->[0]) { #### 1. parse previous subject's HSPs my $iden = int($iden_letters / $hsp[0]->[1] * 10000)/100; my $cov_aS = $aln_letters / $hsp[0]->[1]; my $cov_aL = $aln_letters / $len_rep; my $exp1 = $hsp[0]->[6]; my $frame = $hsp[0]->[7]; if (($iden/100 > $NR_clstr or $exp1<$NR_clstre) and ($cov_aS >= $opt_aS) and ($cov_aL >= $opt_aL) ) { #push(@blhits, [$hsp[0]->[0], $iden, $aln_letters, $exp1, $frame]); push(@blhits, [$hsp[0]->[0], $iden, join(":", @aln_lens), $exp1, $frame]); } #### 2. init some values @hsp = (); $iden_letters = 0; $aln_letters = 0; @aln_lens = (); $hsp_no = 0; } } #check whether overlap with previous high score HSPs my $overlap_flag = 0; for ($j=0; $j<$hsp_no; $j++) { if (overlap1($p->{qfrom}, $p->{qend}, $hsp[$j]->[2], $hsp[$j]->[3])) { $overlap_flag = 1; last; } if (overlap1($p->{sfrom}, $p->{send}, $hsp[$j]->[4], $hsp[$j]->[5])) { $overlap_flag = 1; last; } } next if ($overlap_flag); #check whether this HSP cross with previous high score HSPs my $cross_flag = 0; for ($j=0; $j<$hsp_no; $j++) { if (cross1($p->{qfrom}, $p->{qend}, $hsp[$j]->[2], $hsp[$j]->[3], $p->{sfrom}, $p->{send}, $hsp[$j]->[4], $hsp[$j]->[5])) { $cross_flag = 1; last; } } next if ($cross_flag); push(@hsp, [$id1, $len_sub, $p->{qfrom}, $p->{qend}, $p->{sfrom}, $p->{send}, $p->{expect}, $p->{frame}]); $iden_letters += int($p->{iden} * $p->{alnln} / 100); $aln_letters += $p->{alnln}; push(@aln_lens, $p->{alnln}); $hsp_no++; } if ($hsp_no) { #last record #### 1. parse previous subject's HSPs my $iden = int($iden_letters / $hsp[0]->[1] * 10000)/100; my $cov_aS = $aln_letters / $hsp[0]->[1]; my $cov_aL = $aln_letters / $len_rep; my $exp1 = $hsp[0]->[6]; my $frame = $hsp[0]->[7]; if (($iden/100 > $NR_clstr or $exp1<$NR_clstre) and ($cov_aS >= $opt_aS) and ($cov_aL >= $opt_aL) ) { #push(@blhits, [$hsp[0]->[0], $iden, $aln_letters, $exp1, $frame]); push(@blhits, [$hsp[0]->[0], $iden, join(":", @aln_lens), $exp1, $frame]); } } return @blhits; } } ########## END process_blout_blastp_blastn sub overlap1 { my ($b1, $e1, $b2, $e2) = @_; my $t; ### if ($e1 < $b1) { $t = $e1; $e1 = $b1; $b1 = $t; } if ($e2 < $b2) { $t = $e2; $e2 = $b2; $b2 = $t; } return 0 if ($e2 < $b1); return 0 if ($b2 > $e1); return ( ($e1<$e2)? $e1:$e2 )-( ($b1>$b2)? $b1:$b2); } ########## END overlap1 ## modified on 2013_0818 to hancle +- frames sub cross1 { my ($q_b1, $q_e1, $q_b2, $q_e2, $s_b1, $s_e1, $s_b2, $s_e2) = @_; my $fr_q1 = ($q_b1 < $q_e1) ? 1 : -1; my $fr_q2 = ($q_b2 < $q_e2) ? 1 : -1; my $fr_s1 = ($s_b1 < $s_e1) ? 1 : -1; my $fr_s2 = ($s_b2 < $s_e2) ? 1 : -1; my $fr1 = $fr_q1 * $fr_s1; my $fr2 = $fr_q2 * $fr_s2; return 1 if (($fr1 * $fr2) < 0); # one ++ and one +- my $t; if ($q_e1 < $q_b1) { $t = $q_e1; $q_e1 = $q_b1; $q_b1 = $t; } if ($q_e2 < $q_b2) { $t = $q_e2; $q_e2 = $q_b2; $q_b2 = $t; } if ($s_e1 < $s_b1) { $t = $s_e1; $s_e1 = $s_b1; $s_b1 = $t; } if ($s_e2 < $s_b2) { $t = $s_e2; $s_e2 = $s_b2; $s_b2 = $t; } # after above transformation # 0 q_b1 q_e1 q_b2 q_e2 qlen # query 5' ==================================================================== # match |||||||||||||||| ||||||||||||| # subject 5' ========================================================================>>>>>> frame + # 0 s_b1 s_e1 s_b2 s_e2 slen # match |||||||||||||||| ||||||||||||| # subject 3' ========================================================================>>>>>> frame - # slen s_e1 s_b1 s_e2 s_b2 0 if (($fr1 > 0) and ($fr2>0)) { # both ++ return ( (($q_b2-$q_b1)*($s_b2-$s_b1) <0) ? 1 : 0); } else { # both -- return ( (($q_b2-$q_b1)*($s_e1-$s_e2) <0) ? 1 : 0); } } ########## END cross1 ## modified on 2013_0818 to hancle +- frames sub cross1_before_2013_0818 { my ($q_b1, $q_e1, $q_b2, $q_e2, $s_b1, $s_e1, $s_b2, $s_e2) = @_; my $t; if ($q_e1 < $q_b1) { $t = $q_e1; $q_e1 = $q_b1; $q_b1 = $t; } if ($q_e2 < $q_b2) { $t = $q_e2; $q_e2 = $q_b2; $q_b2 = $t; } if ($s_e1 < $s_b1) { $t = $s_e1; $s_e1 = $s_b1; $s_b1 = $t; } if ($s_e2 < $s_b2) { $t = $s_e2; $s_e2 = $s_b2; $s_b2 = $t; } return ( (($q_b2-$q_b1)*($s_b2-$s_b1) <0) ? 1 : 0); } ########## END cross1 sub readblast_m8_buffer { my ($i, $j, $k, $ll, $no); my @this_sbj = (); $no = 0; while($ll = shift @blm8_buffer) { chop($ll); my @lls = split(/\t/,$ll); my $frame = ""; $frame .= ($lls[6] < $lls[7]) ? "+" : "-"; $frame .= ($lls[8] < $lls[9]) ? "+" : "-"; next unless ($lls[0] and $lls[1]); $this_sbj[$no] = { 'qid' => $lls[0], 'id' => $lls[1], 'iden' => $lls[2], 'alnln' => $lls[3], 'ms' => $lls[4], 'gap' => $lls[5], 'qfrom' => $lls[6], 'qend' => $lls[7], 'sfrom' => $lls[8], 'send' => $lls[9], 'expect' => $lls[10], 'score' => $lls[11], 'frame' => $frame, }; $no++; # BLASTP 2.2.24 [Aug-08-2010] # Query: gi|388328107|pdb|4DDG|A Chain A, Crystal Structure Of Human Otub1UBCH5B~UBUB # Database: pdbaa.fa # Fields: Query id, Subject id, % identity, alignment length, mismatches, gap openings, q. start, q. end, s. start, s. end, e-value, bit score #gi|388328107|pdb|4DDG|A gi|388328107|pdb|4DDG|A 91.81 171 9 3 6 171 1 171 6e-89 323 #gi|388328107|pdb|4DDG|A gi|388328107|pdb|4DDG|A 96.51 86 3 0 235 320 155 240 2e-41 166 } my $self = { 'no' => $no, 'sbj' => [@this_sbj], }; return $self; } ########## END readblast_m8 sub readblast_m8 { my ($i, $j, $k, $ll, $no); my ($q_seq, $filename) = @_; my $fh = "BL" ; if ($bl_STDIN) { $fh = "STDIN"; } else { open($fh, $filename) || return; } my @this_sbj = (); $no = 0; while($ll = <$fh>) { chop($ll); my @lls = split(/\t/,$ll); my $frame = ""; $frame .= ($lls[6] < $lls[7]) ? "+" : "-"; $frame .= ($lls[8] < $lls[9]) ? "+" : "-"; next unless ($lls[0] and $lls[1]); $this_sbj[$no] = { 'qid' => $lls[0], 'id' => $lls[1], 'iden' => $lls[2], 'alnln' => $lls[3], 'ms' => $lls[4], 'gap' => $lls[5], 'qfrom' => $lls[6], 'qend' => $lls[7], 'sfrom' => $lls[8], 'send' => $lls[9], 'expect' => $lls[10], 'score' => $lls[11], 'frame' => $frame, }; $no++; # BLASTP 2.2.24 [Aug-08-2010] # Query: gi|388328107|pdb|4DDG|A Chain A, Crystal Structure Of Human Otub1UBCH5B~UBUB # Database: pdbaa.fa # Fields: Query id, Subject id, % identity, alignment length, mismatches, gap openings, q. start, q. end, s. start, s. end, e-value, bit score #gi|388328107|pdb|4DDG|A gi|388328107|pdb|4DDG|A 91.81 171 9 3 6 171 1 171 6e-89 323 #gi|388328107|pdb|4DDG|A gi|388328107|pdb|4DDG|A 96.51 86 3 0 235 320 155 240 2e-41 166 } close($fh) if (not $bl_STDIN); my $self = { 'no' => $no, 'sbj' => [@this_sbj], }; return $self; } ########## END readblast_m8 sub blast_formatdb { my ($i0, $i, $j, $k, $len1); open(FDB, "> $tmp_db") || die; $j = 0; $len1 = 0; for ($i0=$NR_no-1; $i0>=0; $i0--) { ### from shortest to longest $i = $NR_idx[$i0]; last if ($idens[$i] eq "*"); ### last if reach rep next if ($lens[$i] < $opt_aL_lower_band); next if ($passeds[$i] and ($opt_g==0)); my $seq = $seqs[$i]; $seq =~ s/(.{70})/$1\n/g; $seq =~ s/\n$//; #print FDB ">$i $dess[$i]\n$seq\n"; print FDB ">$i.$lens[$i]\n$seq\n"; $j++; $len1 += $lens[$i]; } close(FDB); while(1) { opendir(SEQDB, $seq_dir) || next; my @leftseqs = grep {/lock/} readdir(SEQDB); closedir(SEQDB); last unless @leftseqs; sleep(3); } return(0, 0) unless ($j > 0); my $cmd_line = "$formatdb -i $tmp_db"; $cmd_line = "$formatdb -in $tmp_db" if ($bl_plus); my $cmd = `$cmd_line`; ((-e "$tmp_db.phr") and (-e "$tmp_db.pin") and (-e "$tmp_db.psq")) || ((-e "$tmp_db.nhr") and (-e "$tmp_db.nin") and (-e "$tmp_db.nsq")) || ((-e "$tmp_db.00.phr") and (-e "$tmp_db.00.pin") and (-e "$tmp_db.00.psq")) || ((-e "$tmp_db.00.nhr") and (-e "$tmp_db.00.nin") and (-e "$tmp_db.00.nsq")) || die "Can not formatdb"; return($j, $len1); } ########## END blast_formatdb sub remove_blast_db { my ($i, $j, $k); $cmd = `rm -f $tmp_db`; $cmd = `rm -f $tmp_db.p*`; $cmd = `rm -f $tmp_db.n*`; return; } ########## END remove_blast_db my $common_usage = <> << len 2 >> i.e. redundant <<<<<<<<<<<< length of short sequence >>>>>>>>>>>>>> sequence total identical letters from all co-linear and non-overlapping HSPs Glogal identity = ------------------------------------------------------------------- length of short sequence Local identity = identity of the top high score HSP if you prefer to use -G 0, it is suggested that you also use -aS, -aL, such as -aS 0.8, to prevent very short matches. -aL alignment coverage for the longer sequence, default $opt_aL if set to 0.9, the alignment must covers 90% of the sequence -aS alignment coverage for the shorter sequence, default $opt_aS if set to 0.9, the alignment must covers 90% of the sequence -g (1/0), default $opt_g by cd-hit's default algorithm, a sequence is clustered to the first cluster that meet the threshold (fast cluster). If set to 1, the program will cluster it into the most similar cluster that meet the threshold (accurate but slow mode) but either 1 or 0 won't change the representatives of final clusters -circle (1/0), default $circle when set to 1, treat sequences as circular sequence. bacterial genomes, plasmids are circular, but their genome coordinate maybe arbitary, the 2 HSPs below will be treated as non co-linear with -circle 0 the 2 HSPs below will be treated as co-linear with -circle 1 -------------circle----------- | | seq1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx genome / plasmid 1 \\\\\\\\\\\\\\\\ ///////////// \\\\\\\\\\\\\\\\ ///////////// HSP 2 -> ////HSP 1 /// <-HSP 2 ///////////// \\\\\\\\\\\\\\\\ ///////////// \\\\\\\\\\\\\\\\ seq2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx genome / plasmid 2 | | -----------circle-------------- -sl, length of very long sequences to be skipped, default $skip_long, e.g. -sl 5000 means sequences longer than 5000 aa will be treated as singleton clusters without clustering, to save time, especially when there is -aL option in place, very long sequences will not be clustered anyway. -sl 0 means no skipping program: -prog (blastp, blastn, megablast, psiblast), default $blast_prog -s blast search para, default "$bl_para" -bs (1/0) default $bl_STDIN pipe blast results from into parser instead of save in hard drive (save time) compute: -exec (qsub, local) default $exec_mode this program writes a shell script to run blast, this script is either performed locally by sh or remotely by qsub with qsub, you can use PBS, SGE etc -host number of qsub jobs, default $num_qsub -para number of parallel blast job per qsub job (each blast can use multi cores), default $para_no one qsub script can run multiple blast jobs -blp number of threads per blast job, default $bl_threads number of threads per blast job (option -blp) X number of parallel blast job per qsub job (option -para) should <= the number of cores in your computer if your computer grid has 32 cores / node, do either of the followings -para 4 -blp 8 -para 8 -blp 4 preferred -para 16 -blp 2 -para 32 -blp 1 -bat number of sequences a blast job to process, $batch_no_per_node -shf a filename for add local settings into the job shell script for example, when you run PBS jobs, you can add quene name etc in this file and this script will add them into the job shell script e.g. template file for PBS #!/bin/sh #PBS -v PATH #PBS -l walltime=8:00:00 #PBS -q job_queue.q e.g. template file for SGE or OGE #!/bin/sh #\$ -v PATH #\$ -q job_queue.q #\$ -V #\$ -pe orte 8 job: -rs steps of save restart file and clustering output, default $restart_seg everytime after process 5000 sequences, program write a restart file and current clustering information -restart restart file, readin a restart file if program crash, stoped, termitated, you can restart it by add a option "-restart sth.restart" -rf steps of re format blast database, default $reformat_seg if program clustered 200,000 seqs, it remove them from seq pool, and re format blast db to save time -J job, job_file, exe specific jobs like parse blast outonly DO NOT use it, it is only used by this program itself -k (1/0) keep blast raw output file, default $keep_bl -P path to blast executables EOD sub print_usage { print < 0); open(SEQ, "> $seq_dir/$id") || die "Can not write"; } #print SEQ "$dess[$id]\n$seq\n"; print SEQ ">$id.$lens[$id]\n$seq\n"; $k++; last if ($k >= $total_jobs); } close(SEQ); if ($exec_mode eq "qsub") { for ($j=0; $j<$num_qsub; $j++) { my $t = "psi-cd-hit-$j"; my $cmd = `qsub -N $t $remote_sh_script $j`; #### pass $j to qsub command my $qsub_id = 0; if ($cmd =~ /(\d+)/) { $qsub_id = $1;} else {die "can not submit qsub job and return a id\n";} print LOG "qsub querying $j, PID $qsub_id\n"; $qsub_ids{$qsub_id} = 1; } } elsif ($exec_mode eq "local") { #my $cmd = `sh $remote_sh_script >/dev/null 2>&1 &`; my $cmd = `sh $remote_sh_script`; } #### wait finish all submitted if ($exec_mode eq "qsub") { while(1) { SGE_qstat_xml_query(); last unless (%qsub_ids); my $wait_flag = 0; foreach my $qsub_id (keys %qsub_ids) { if (defined($qstat_xml_data{$qsub_id})) { #### still running $wait_flag = 1; } else { delete $qsub_ids{$qsub_id}; } } if ($wait_flag) {print LOG "wait submitted jobs\n"; sleep(1); } } } #### read in all parsed blast output %blm8_data =(); opendir(BLMDIR, $blm_dir) || die "can not open $blm_dir"; my @bl_files = grep { /^\d/ } readdir(BLMDIR); closedir(BLMDIR); foreach my $blf (@bl_files) { open(BLMTMP, "$blm_dir/$blf") || next; while($ll = ) { next if ($ll =~ /^#/); chop($ll); if ($ll =~ /^>/) { my ($id, $no1) = split(/\s+/, substr($ll,1)); my @hits = (); for ($j=0; $j<$no1; $j++) { $ll=; chop($ll); push(@hits, [split(/\t/,$ll)]); } if ($no1>=1) { $blm8_data{$id} = [@hits]; } } } close(BLMTMP); $cmd = `rm -f $blm_dir/$blf`; print LOG "parse and then rm $blm_dir/$blf\n"; } return; } sub run_batch_blast3 { my $i0 = shift; my ($id, $i, $j, $k, $cmd); #### wait before qsubs if ($exec_mode eq "qsub") { while(1) { SGE_qstat_xml_query(); last unless (%qsub_ids); my $wait_flag = 0; foreach my $qsub_id (keys %qsub_ids) { if (defined($qstat_xml_data{$qsub_id})) { #### still running $wait_flag = 1; $cmd = `qdel -f $qsub_id`; #### at this point, all running jobs are not necessary, print LOG "force delete un necessary job $qsub_id\n"; } else { delete $qsub_ids{$qsub_id}; } } if ($wait_flag) {print LOG "wait submitted jobs\n"; sleep(1); } } #### delete seq files from last batch opendir(DIR1, $seq_dir); my @files = grep { /^\d/ } readdir(DIR1); closedir(DIR1); foreach $i (@files) { $cmd = `rm -f $seq_dir/$i`; print LOG "remove un necessary seq file $i\n" } } my $total_jobs = $batch_no_per_node * $num_qsub * $para_no; for ($k=0; $i0<$NR_no; $i0++) { $id = $NR_idx[$i0]; next if ($passeds[$id]); next if ($in_bg[$id]); next if ($lens[$id] < $opt_aL_upper_band); $in_bg[$id] = 1; my $seq = $seqs[$id]; open(SEQ, "> $seq_dir/$id") || die "Can not write"; #print SEQ "$dess[$id]\n$seq\n"; print SEQ ">$id.$lens[$id]\n$seq\n"; close(SEQ); $k++; last if ($k >= $total_jobs); } if ($exec_mode eq "qsub") { for ($j=0; $j<$num_qsub; $j++) { my $t = "psi-cd-hit-$j"; my $cmd = `qsub -N $t $remote_sh_script`; my $qsub_id = 0; if ($cmd =~ /(\d+)/) { $qsub_id = $1;} else {die "can not submit qsub job and return a id\n";} print LOG "qsub querying $j, PID $qsub_id\n"; $qsub_ids{$qsub_id} = 1; } } elsif ($exec_mode eq "local") { #my $cmd = `sh $remote_sh_script >/dev/null 2>&1 &`; my $cmd = `sh $remote_sh_script`; } return; } ########## END run_batch_blast3 sub write_remote_sh_script { my ($i, $j, $k); my $local_sh = < $remote_sh_script") || die; print RESH < $remote_perl_script") || die; print REPERL <> $blm_dir/\$host.\$instance`; } elsif ($bl_STDIN) { \$cmd = `$bl2 $opti $seq_dir/\$id | $script_name -J parse_blout $bl_dir/\$id -c $NR_clstr -ce $NR_clstre -aS $opt_aS -aL $opt_aL -G $g_iden -prog $blast_prog -bs 1`; } else { \$cmd = `$bl2 $opti $seq_dir/\$id $opto $bl_dir/\$id`; \$cmd = `$script_name -J parse_blout $bl_dir/\$id -c $NR_clstr -ce $NR_clstre -aS $opt_aS -aL $opt_aL -G $g_iden -prog $blast_prog -bs 0`; } \$cmd = `rm -f $seq_dir/\$id`; \$cmd = `rm -f $seq_dir/\$id.lock`; } (\$tu, \$ts, \$cu, \$cs) = times(); \$tt = \$tu + \$ts + \$cu + \$cs; \$cmd = `echo \$tt >> $seq_dir/host.\$host.\$instance.cpu`; EOD close(REPERL); my $cmd = `chmod 755 $remote_perl_script`; return; } ########## END write_remote_perl_script sub wait_blast_out { my $out = shift; print LOG "waiting for $out"; while(1) { if (-e $out) { my $last = `tail -1 $out`; chop($last); last if ($last =~ /^#$/); } sleep(1); print LOG "."; } print LOG "\n"; return; } ########## END wait_blast_out sub SGE_qstat_xml_query { my ($i, $j, $k, $cmd, $ll); %qstat_xml_data = (); #### global $cmd = `qstat -f -xml`; if ($cmd =~ / all.q\@master BIP 0 0 0 0.08000 linux-x64 ... all.q\@node016 BIP 32 0 32 42.59000 linux-x64 ####### running jobs in this section 3535 0.51468 cd-hit ubuntu r 4 ... ######## pending jobs in this section 3784 0.60500 cd-hit ubuntu qw 32 ... EOD my @lls = split(/\n/, $cmd); $i = 2; #### skip first 2 lines for (; $i<$#lls+1; $i++) { if ($lls[$i] =~ /(\d+)/) { $id = $1;} if ($lls[$i] =~ /([^<]+)/) { $name = $1;} if ($lls[$i] =~ /([^<]+)/) {$state = $1;} } if (defined($id) and defined($name) and defined($state)) { $qstat_xml_data{$id} = [$name, $state]; } } } } 1; cdhit-4.8.1/psi-cd-hit/psi-cd-hit-old.pl000077500000000000000000000112261343604040700176400ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################################ ######### PSI-cd-hit written by Weizhong Li at http://cd-hit.org ################################################################################ our $script_name = $0; our $script_dir = $0; $script_dir =~ s/[^\/]+$//; $script_dir = "./" unless ($script_dir); require "$script_dir/psi-cd-hit-local-old.pl"; parse_para_etc(@ARGV); open_LOG(); our @seqs = (); our @dess = (); our @idens = (); our @lens = (); our @passeds = (); our @NR_clstr_nos = (); our @in_bg = (); our @NR_idx = (); our $NR_no = 0; our $DB_no = 0; our $DB_len = 0; our $DB_len0 = 0; our $DB_len_reduced = 0; our $DB_len_reduced2 = 0; #### for write_restart etc purpose our $opt_aL_upper_band = 0; #### sequences < this length will not be submitted unless reformatdb our $opt_al_upper_bandi= 0; our $opt_aL_lower_band = 0; #### sequences < this length don't need to be searched my ($i, $j, $k, $i0, $j0, $k0, $ll); read_db(); our $NR_passed = 0; our $formatdb_no = $NR_no;; @NR_idx = (0..($NR_no-1)); @NR_idx = sort { $lens[$b] <=> $lens[$a] } @NR_idx unless (-e $restart_in); our $NR90_no = 0; our @NR90_seq = (); $i0 = 0; if ( -e $restart_in) { $i0 = read_restart(); } ## restart after crash elsif ($skip_long > 0) { #### skip very long seqs for (; $i0<$NR_no; $i0++) { $i = $NR_idx[$i0]; last if ($lens[$i] < $skip_long); $NR_passed++; $NR_clstr_nos[$i] = $NR90_no; $idens[$i] = "*"; $passeds[$i] = 1; $NR90_seq[$NR90_no] = [$i]; $NR90_no++; $DB_len_reduced += $lens[$i]; } } #### set init opt_aL_uppper/lower_bands if ( ($opt_aL > 0.3) ) { die ("option -aL > 1.0") if ($opt_aL > 1.0); #################### ################### ################## ################# ################ ############### <-upper band ############## <- seq below not submit, unless band change ############# ############ ########### ########## <- lower band ######### <- seq below not in format db ######## ####### ##### #### ### ## # my $total_jobs = $batch_no_per_node * $num_qsub * $para_no; my $space = ($total_jobs > $restart_seg) ? $total_jobs : $restart_seg; my $d1 = $i0+$space; $d1 = ($NR_no-1) if ($d1 >= $NR_no-1); $opt_aL_upper_band = $lens[ $NR_idx[$d1] ]; $opt_aL_lower_band = int($opt_aL_upper_band * $opt_aL); $opt_aL_upper_bandi= $d1; write_LOG("set opt_aL_band $opt_aL_upper_band($opt_aL_upper_bandi) $opt_aL_lower_band"); } ($DB_no, $DB_len) = blast_formatdb(); $DB_len0 = $DB_len; $DB_len_reduced = 0; $DB_len_reduced2 = 0; for (; $i0<$NR_no; $i0++) { $i = $NR_idx[$i0]; run_batch_blast3($i0) unless ($in_bg[$i] or (-e "$bl_dir/$i.out") or $passeds[$i]); if ( not $passeds[$i] ) { # this is a new representative $NR_passed++; $NR_clstr_nos[$i] = $NR90_no; $idens[$i] = "*"; $passeds[$i] = 1; $NR90_seq[$NR90_no] = [$i]; fish_other_homolog($i); $NR90_no++; $DB_len_reduced += $lens[$i]; $DB_len_reduced2 += $lens[$i]; } watch_progress($i0, $NR90_no, $NR_passed, $NR_no, 0); if ((($i0+1) % $restart_seg == 0) or ($DB_len_reduced2 > $DB_len0/10) ) { write_restart(); write_db_clstr(); remove_raw_blout_bg($i0); $DB_len_reduced2 = 0; } my $opt_aL_format_flag = 0; if ( ($opt_aL > 0.3) ) { #### formatdb maybe needed if current length of seq.i0 close to opt_aL_upper_band my $total_jobs = $batch_no_per_node * $num_qsub * $para_no; if ( ($opt_aL_upper_bandi - $i0) < $total_jobs ) { #### seqs left for possible submission < total_jobs my $space = ($total_jobs > $restart_seg) ? $total_jobs : $restart_seg; my $d1 = $i0+$space; $d1 = ($NR_no-1) if ($d1 >= $NR_no-1); $opt_aL_upper_band = $lens[ $NR_idx[$d1] ]; $opt_aL_lower_band = int($opt_aL_upper_band * $opt_aL); $opt_aL_upper_bandi= $d1; $opt_aL_format_flag = 1; write_LOG("set opt_aL_band $opt_aL_upper_band($opt_aL_upper_bandi) $opt_aL_lower_band"); } } if ((($i0+1) % (int($NR_no/10)) == 0) or ($DB_len_reduced > $DB_len/10) or $opt_aL_format_flag ) { ($DB_no, $DB_len) = blast_formatdb(); $DB_len_reduced = 0; } #if ($formatdb_no - ($NR_no-$NR_passed) >= $reformat_seg) {blast_formatdb(); } } ## END for ($i=0; $i<$NR_no; $i++) watch_progress($NR_no-1, $NR90_no, $NR_passed, $NR_no, 1); if (1) { ### print NR db open(DBOUT, "> $db_out") || die "Can not write $db_out"; for ($i=0; $i<$NR_no; $i++) { next unless ($idens[$i] eq "*"); my $seq = $seqs[$i]; $seq =~ s/(.{70})/$1\n/g; $seq =~ s/\n$//; print DBOUT "$dess[$i]\n$seq\n"; } close(DBOUT); } write_restart(); write_db_clstr(); remove_blast_db(); close_LOG(); cdhit-4.8.1/psi-cd-hit/psi-cd-hit.pl000077500000000000000000000113011343604040700170560ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################################ ######### PSI-cd-hit written by Weizhong Li at http://cd-hit.org ################################################################################ our $script_name = $0; our $script_dir = $0; $script_dir =~ s/[^\/]+$//; $script_dir = "./" unless ($script_dir); require "$script_dir/psi-cd-hit-local.pl"; parse_para_etc(@ARGV); open_LOG(); our @seqs = (); our @dess = (); our @idens = (); our @lens = (); our @passeds = (); our @NR_clstr_nos = (); our @in_bg = (); our @NR_idx = (); our $NR_no = 0; our $DB_no = 0; our $DB_len = 0; our $DB_len0 = 0; our $DB_len_reduced = 0; our $DB_len_reduced2 = 0; #### for write_restart etc purpose our $opt_aL_upper_band = 0; #### sequences < this length will not be submitted unless reformatdb our $opt_al_upper_bandi= 0; our $opt_aL_lower_band = 0; #### sequences < this length don't need to be searched my ($i, $j, $k, $i0, $j0, $k0, $ll); read_db(); our $NR_passed = 0; our $formatdb_no = $NR_no;; @NR_idx = (0..($NR_no-1)); @NR_idx = sort { $lens[$b] <=> $lens[$a] } @NR_idx unless (-e $restart_in); our $NR90_no = 0; our @NR90_seq = (); $i0 = 0; if ( -e $restart_in) { $i0 = read_restart(); } ## restart after crash elsif ($skip_long > 0) { #### skip very long seqs for (; $i0<$NR_no; $i0++) { $i = $NR_idx[$i0]; last if ($lens[$i] < $skip_long); $NR_passed++; $NR_clstr_nos[$i] = $NR90_no; $idens[$i] = "*"; $passeds[$i] = 1; $NR90_seq[$NR90_no] = [$i]; $NR90_no++; $DB_len_reduced += $lens[$i]; } } #### set init opt_aL_uppper/lower_bands if ( ($opt_aL > 0.3) ) { die ("option -aL > 1.0") if ($opt_aL > 1.0); #################### ################### ################## ################# ################ ############### <-upper band ############## <- seq below not submit, unless band change ############# ############ ########### ########## <- lower band ######### <- seq below not in format db ######## ####### ##### #### ### ## # my $total_jobs = $batch_no_per_node * $num_qsub * $para_no; my $space = ($total_jobs > $restart_seg) ? $total_jobs : $restart_seg; my $d1 = $i0+$space; $d1 = ($NR_no-1) if ($d1 >= $NR_no-1); $opt_aL_upper_band = $lens[ $NR_idx[$d1] ]; $opt_aL_lower_band = int($opt_aL_upper_band * $opt_aL); $opt_aL_upper_bandi= $d1; write_LOG("set opt_aL_band $opt_aL_upper_band($opt_aL_upper_bandi) $opt_aL_lower_band"); } ($DB_no, $DB_len) = blast_formatdb(); $DB_len0 = $DB_len; $DB_len_reduced = 0; $DB_len_reduced2 = 0; for (; $i0<$NR_no; $i0++) { $i = $NR_idx[$i0]; run_batch_blast3_multi($i0) unless ($in_bg[$i] or (-e "$bl_dir/$i.out") or $passeds[$i]); if ( not $passeds[$i] ) { # this is a new representative $NR_passed++; $NR_clstr_nos[$i] = $NR90_no; $idens[$i] = "*"; $passeds[$i] = 1; $NR90_seq[$NR90_no] = [$i]; fish_other_homolog_multi($i); $NR90_no++; $DB_len_reduced += $lens[$i]; $DB_len_reduced2 += $lens[$i]; } watch_progress($i0, $NR90_no, $NR_passed, $NR_no, 0); if (($i0+1) % $restart_seg == 0 ) { write_restart(); write_db_clstr(); } my $opt_aL_format_flag = 0; if ( ($opt_aL > 0.3) ) { #### formatdb maybe needed if current length of seq.i0 close to opt_aL_upper_band my $total_jobs = $batch_no_per_node * $num_qsub * $para_no; my $opt_aL_upper_band_old = $opt_aL_upper_band; if ( ($opt_aL_upper_bandi - $i0) < $total_jobs ) { #### seqs left for possible submission < total_jobs my $space = ($total_jobs > $restart_seg) ? $total_jobs : $restart_seg; my $d1 = $i0+$space; $d1 = ($NR_no-1) if ($d1 >= $NR_no-1); $opt_aL_upper_band = $lens[ $NR_idx[$d1] ]; if ($opt_aL_upper_band < $opt_aL_upper_band_old) { $opt_aL_lower_band = int($opt_aL_upper_band * $opt_aL); $opt_aL_upper_bandi= $d1; $opt_aL_format_flag = 1; write_LOG("set opt_aL_band $opt_aL_upper_band($opt_aL_upper_bandi) $opt_aL_lower_band"); } } } if ((($i0+1) % (int($NR_no/10)) == 0) or ($DB_len_reduced > $DB_len/10) or $opt_aL_format_flag ) { ($DB_no, $DB_len) = blast_formatdb(); $DB_len_reduced = 0; } #if ($formatdb_no - ($NR_no-$NR_passed) >= $reformat_seg) {blast_formatdb(); } } ## END for ($i=0; $i<$NR_no; $i++) watch_progress($NR_no-1, $NR90_no, $NR_passed, $NR_no, 1); if (1) { ### print NR db open(DBOUT, "> $db_out") || die "Can not write $db_out"; for ($i=0; $i<$NR_no; $i++) { next unless ($idens[$i] eq "*"); my $seq = $seqs[$i]; $seq =~ s/(.{70})/$1\n/g; $seq =~ s/\n$//; print DBOUT "$dess[$i]\n$seq\n"; } close(DBOUT); } write_restart(); write_db_clstr(); remove_blast_db(); close_LOG(); cdhit-4.8.1/psi-cd-hit/qsub-template000066400000000000000000000001731343604040700172700ustar00rootroot00000000000000 #\$ -S /bin/bash #\$ -v PATH #PBS -v PATH #PBS -l walltime=8:00:00 #PBS -M liwz\@sdsc.edu #PBS -A camera ## PBS -qsmall cdhit-4.8.1/usecases/000077500000000000000000000000001343604040700144335ustar00rootroot00000000000000cdhit-4.8.1/usecases/Miseq-16S/000077500000000000000000000000001343604040700160605ustar00rootroot00000000000000cdhit-4.8.1/usecases/Miseq-16S/16S-ref-db-PE-splice.pl000077500000000000000000000334241343604040700217130ustar00rootroot00000000000000#!/usr/bin/perl ## =========================== NGS tools ========================================== ## NGS tools for metagenomic sequence analysis ## May also be used for other type NGS data analysis ## ## Weizhong Li, UCSD ## liwz@sdsc.edu ## http://weizhongli-lab.org/ ## ================================================================================ my $script_name = $0; my $script_dir = $0; $script_dir =~ s/[^\/]+$//; chop($script_dir); $script_dir = "./" unless ($script_dir); use Getopt::Std; getopts("i:j:o:r:e:p:q:c:d:N:t:u:d:M:T:S:",\%opts); die usage() unless ($opts{i} and $opts{j} and $opts{o} and $opts{d}); my ($i, $j, $k, $cmd); my ($ll, $lla, $llb, $id, $ida, $idb, $seq, $seqa, $seqb, $qua, $quaa, $quab); my ($len, $lena, $lenb); my $fastq = $opts{i}; my $fastq2 = $opts{j}; my $ref = $opts{d}; my $output = $opts{o}; my $trim_R1 = $opts{p}; $trim_R1 = 100 unless ($trim_R1); my $trim_R2 = $opts{q}; $trim_R2 = 100 unless ($trim_R2); my $clstr_cutoff = $opts{c}; #### post clustering my $full_frag = $opts{S}; my $prime_len = 45; my $output_R1 = "$output-R1"; my $output_R2 = "$output-R2"; my $session = "OTU-session-$$"; my $output_S = "$output-single"; my $consensus_db = "$output-consensus"; my $cd_hit_2d = "$script_dir/../../cd-hit-est-2d"; die "no $cd_hit_2d" unless (-e $cd_hit_2d); my $cd_hit_est = "$script_dir/../../cd-hit-est"; die "no $cd_hit_est" unless (-e $cd_hit_est); my $format = input_test($fastq); #fasta or fastq my $cdhit_opt_M = $opts{M}; $cdhit_opt_M = 16000 unless defined($cdhit_opt_M); if (defined($clstr_cutoff)) { die "Clustering cutoff $clstr_cutoff is not reasonable, should be <=1.0 and >= 0.97" unless (($clstr_cutoff <=1.0) and ($clstr_cutoff>=0.97)); } my %FHZ=(); my %ref_map = (); foreach my $f (($fastq, $fastq2)) { my $R = ( $f eq $fastq ) ? "R1" : "R2"; open(OUT, "> $consensus_db.$R") || die "can not write to $consensus_db.$R"; my %con = (); my $num_seq = 0; open_files_z_safe("TTTa", $f); if ($format eq "fastq") { while(1) { ($lla, $ida, $seqa, $quaa, $lena) = read_next_fastq("TTTa"); last unless ($lla); for ($i=0; $i<$prime_len; $i++) { $c=uc(substr($seqa, $i, 1)); $con{$i}{$c}++; } $num_seq++; } } else { #### fasta my $seqa = ""; while($ll = ) { if ($ll =~ /^>/) { if ($seqa) { for ($i=0; $i<$prime_len; $i++) { $c=uc(substr($seqa, $i, 1)); $con{$i}{$c}++; } $num_seq++; } chop($ll); $seqa = ""; } else { chop($ll); $seqa .= $ll; } } if ($seqa) { for ($i=0; $i<$prime_len; $i++) { $c=uc(substr($seqa, $i, 1)); $con{$i}{$c}++; } $num_seq++; } } #### END fasta close(TTTa); my @cons = (); #which letter my @cons_v = (); #abundance for ($i=0; $i<$prime_len; $i++) { my %t = %{ $con{$i} }; my @k = keys %t; @k = sort { $t{$b} <=> $t{$a} } @k; push(@cons, $k[0]); push(@cons_v, $t{ $k[0] } / $num_seq); } ## set minimal consensus to be 30 for ($i=33; $i<$prime_len; $i++) { if ( ($cons_v[$i ] <0.75) and ($cons_v[$i-1] <0.75) and ($cons_v[$i-2] <0.75) ) { $i = $i-2; last; } } my $trim_len_new = $i; print OUT ">$R\n"; for ($i=0; $i<$trim_len_new; $i++) { print OUT $cons[$i]; } print OUT "\n"; close(OUT); my $cmd_line = "$cd_hit_2d -i $consensus_db.$R -i2 $ref -d 0 -c 0.8 -n 5 -r 1 -p 1 -b 5 -o $session.$R-vs-ref -G 0 -A 30 -s2 0.01 -M $cdhit_opt_M > $session.$R-vs-ref.log"; print "running $cmd_line\n"; $cmd = `$cmd_line`; my $parse_template=<Cluster 0 0 45nt, >R1... * 1 1479nt, >1111882... at 1:42:4:45/+/95.24% 2 1500nt, >1111856... at 1:42:4:45/+/88.10% 3 1426nt, >1111848... at 2:44:3:45/+/90.70% 4 1530nt, >1111847... at 1:42:4:45/+/85.71% 5 1497nt, >1111839... at 1:41:5:45/+/85.37% 6 1492nt, >1111819... at 1:42:4:45/+/88.10% 7 1482nt, >1111782... at 1:42:4:45/+/88.10% 8 1496nt, >1111776... at 1:42:4:45/+/88.10% 9 1500nt, >1111768... at 1:42:4:45/+/85.71% ... >Cluster 0 0 45nt, >R2... * 1 1428nt, >1111883... at 483:440:2:45/-/84.09% 2 1479nt, >1111882... at 511:468:2:45/-/88.64% 3 1336nt, >1111879... at 435:399:2:38/-/86.49% 4 1402nt, >1111874... at 469:426:2:45/-/84.09% 5 1500nt, >1111856... at 513:470:2:45/-/84.09% 6 1530nt, >1111847... at 532:489:2:45/-/86.36% 7 1497nt, >1111839... at 509:473:2:38/-/86.49% 8 1492nt, >1111819... at 514:471:2:45/-/88.64% 9 1482nt, >1111782... at 502:464:2:40/-/84.62% 10 1496nt, >1111776... at 516:473:2:45/-/84.09% EOD open(TMP, "$session.$R-vs-ref.clstr") || die "can not open $session.$R-vs-ref.clstr"; while($ll=){ next if ($ll =~ /^>/); next if ($ll =~ /^0/); chop($ll); if ($ll =~ /^\d+\s+\d+(aa|nt), >(.+)\.\.\./) { my $id = $2; my @lls = split(/\s+/, $ll); my @lls = split(/\//, $lls[-1]); ##516:473:2:45/-/84.09% my ($query_start, $query_end, $rep_star, $rep_end) = split(/:/, $lls[0]); $ref_map{$id}{$R}=[$query_start, $query_end, $rep_star, $rep_end, $lls[1]]; } } close(TMP); } my %ref_cut; foreach $id (keys %ref_map) { next unless (defined $ref_map{$id}{"R1"}); next unless (defined $ref_map{$id}{"R2"}); my @R1_info = @{$ref_map{$id}{"R1"}}; my @R2_info = @{$ref_map{$id}{"R2"}}; next unless ($R1_info[4] eq "+"); next unless ($R2_info[4] eq "-"); my $p1 = $R1_info[0] - ($R1_info[2]-1); #### 1-based, can be -1 value for V1 my $p2 = $R2_info[0] + ($R2_info[2]-1); #### 1-based, can be longer than len($seq) $ref_cut{$id} = [$p1, $p2]; } open(TMP, $ref) || die "can not open $ref"; open(OUT1, "> $output_R1") || die "can not write to $output_R1"; open(OUT2, "> $output_R2") || die "can not write to $output_R2"; if ($full_frag) { open(OUT3, "> $output_S") || die "can not write to $output_S"; } my $seq; my $des; $id = ""; while($ll = ) { if ($ll =~ /^>/) { if ($seq) { if ($ref_cut{$id}) { $seq =~ s/\s//g; my ($p1, $p2) = @{$ref_cut{$id}}; my $len = length($seq); my $seq1 = ""; my $seq2 = ""; if ($p1>=1) { $seq1 = substr($seq, $p1-1, $trim_R1); } else { my $pad = 1 - $p1; #### add NNN at 5' $seq1 = "N" x $pad; $seq1 .= substr($seq, 0, $trim_R1-$pad); } if ($p2 <= $len) { my $p2a = $p2 - $trim_R2; #### 0 - based substr idx if ($p2a < 0) { #### not long enough $seq2 = substr($seq, 0, $p2); } else { $seq2 = substr($seq, $p2a, $trim_R2); } } else { #### add NNN at 5' my $pad = $p2 - $len; my $trim_t2_t = $trim_R2 - $pad; $seq2 = "N" x $pad; my $p2a = $len - $trim_R2_t; #### 0 - based substr idx if ($p2a < 0) { #### not long enough $seq2.= $seq; } else { $seq2 .= substr($seq, $p2a, $trim_R2_t); } } $seq2 = reverse_complement($seq2); ### now have $seq1 $seq2 print OUT1 "$des loc=$p1 len=", length($seq1), "\n$seq1\n"; print OUT2 "$des loc=$p2 len=", length($seq2), "\n$seq2\n"; if ($full_frag) { if ($p1 < 1 ) {$p1 = 1; } if ($p2 > $len) {$p2 = $len;} my $eff_len = $p2-$p1+1; my $seq1 = substr($seq, $p1-1, $eff_len); print OUT3 "$des loc=$p1:$p2 len=$eff_len\n$seq1\n"; } } } chop($ll); $des = $ll; $id = substr($ll,1); $id =~ s/\s.+$//; $seq = ""; } else { $seq .= $ll; } } if ($seq) { if ($ref_cut{$id}) { $seq =~ s/\s//g; my ($p1, $p2) = @{$ref_cut{$id}}; my $len = length($seq); my $seq1 = ""; my $seq2 = ""; if ($p1>=1) { $seq1 = substr($seq, $p1-1, $trim_R1); } else { my $pad = 1 - $p1; #### add NNN at 5' $seq1 = "N" x $pad; $seq1 .= substr($seq, 0, $trim_R1-$pad); } if ($p2 <= $len) { my $p2a = $p2 - $trim_R2; #### 0 - based substr idx if ($p2a < 0) { #### not long enough $seq2 = substr($seq, 0, $p2); } else { $seq2 = substr($seq, $p2a, $trim_R2); } } else { #### add NNN at 5' my $pad = $p2 - $len; my $trim_t2_t = $trim_R2 - $pad; $seq2 = "N" x $pad; my $p2a = $len - $trim_R2_t; #### 0 - based substr idx if ($p2a < 0) { #### not long enough $seq2.= $seq; } else { $seq2 .= substr($seq, $p2a, $trim_R2_t); } } $seq2 = reverse_complement($seq2); ### now have $seq1 $seq2 print OUT1 "$des loc=$p1 len=", length($seq1), "\n$seq1\n"; print OUT2 "$des loc=$p2 len=", length($seq2), "\n$seq2\n"; if ($full_frag) { if ($p1 < 1 ) {$p1 = 1; } if ($p2 > $len) {$p2 = $len;} my $eff_len = $p2-$p1+1; my $seq1 = substr($seq, $p1-1, $eff_len); print OUT3 "$des loc=$p1:$p2 len=$eff_len\n$seq1\n"; } } } close(OUT1); close(OUT2); if ($full_frag) { close(OUT3); } close(TMP); if (defined($clstr_cutoff)) { my $output_R1_tmp = "$output_R1.$$"; my $output_R2_tmp = "$output_R2.$$"; my $cmd_line = "$cd_hit_est -i $output_R1 -j $output_R2 -d 0 -c $clstr_cutoff -n 10 -p 1 -b 5" . " -o $output_R1_tmp -op $output_R2_tmp -G 1 -g 1 -M $cdhit_opt_M -P 1 -l 11 -sc 1 > $output_R1_tmp.log"; print "running $cmd_line\n"; $cmd = `$cmd_line`; die "Can not run $cd_hit_est" unless (-e "$output_R1_tmp.clstr"); $cmd = `mv $output_R1_tmp $output_R1`; $cmd = `mv $output_R2_tmp $output_R2`; $cmd = `mv $output_R1_tmp.clstr $output.clstr`; if ($full_frag) { my $output_S_tmp = "$output_S.$$"; my $cmd_line = "$cd_hit_est -i $output_S -d 0 -c $clstr_cutoff -n 10 -p 1 -b 5" . " -o $output_S_tmp -G 1 -g 1 -M $cdhit_opt_M -l 11 -sc 1 > $output_S_tmp.log"; print "running $cmd_line\n"; $cmd = `$cmd_line`; die "Can not run $cd_hit_est" unless (-e "$output_S_tmp.clstr"); $cmd = `mv $output_S_tmp $output_S`; $cmd = `mv $output_S_tmp.clstr $output_S.clstr`; } } $cmd = `rm -f $session*`; # need %FHZ # open one or more files including zipped files # above open_files_z may have broken pipe problem # so this safe sub, open each file individually sub open_files_z_safe { my ($fh, @files) = @_; my ($i, $j, $k); my $no = $#files+1; $FHZ{$fh} = { 'files' => [@files], 'no' => $no, 'open_idx' => 0, }; my $f0 = $files[0]; if ($f0 =~ /\.gz$/ ) { open($fh, "gunzip -c $f0 |") || die "can not gunzip -c $f0\n"; } elsif ($f0 =~ /\.bz2$/) { open($fh, "bzcat $f0 |") || die "can not bzcat $f0\n"; } else { open($fh, $f0 ) || die "can not open $f0\n"; } return 0; } ########## END open_files_z_safe sub read_FHZ { my $fh = shift; my $ll; $ll = <$fh>; if ($ll) { return $ll;} ##### read from existing opened file #otherwise, last opened file reaches EOF if ($FHZ{$fh}->{open_idx} < $FHZ{$fh}->{no} -1 ) { ### still file not opened yet close($fh); #### close last open file $FHZ{$fh}->{open_idx}++; my $f0 = $FHZ{$fh}->{files}->[ $FHZ{$fh}->{open_idx} ]; if ($f0 =~ /\.gz$/ ) { open($fh, "gunzip -c $f0 |") || die "can not gunzip -c $f0\n"; } elsif ($f0 =~ /\.bz2$/) { open($fh, "bzcat $f0 |") || die "can not bzcat $f0\n"; } else { open($fh, $f0 ) || die "can not open $f0\n"; } $ll = <$fh>; return $ll; } else { #### no more file to open, return undef return undef; } } ########### END read_FHZ ########## read_next_fastq sub read_next_fastq { my $fh = shift; my ($lla, $seqa, $lla2, $quaa, $ida, $lena); $lla = read_FHZ($fh); return unless ($lla); chop($lla); $lla =~ s/\s.+$//; $ida = substr($lla,1); $seqa = read_FHZ($fh); $seqa =~ s/\s+$//g; $lena = length($seqa); $lla2 = read_FHZ($fh); #read ID $quaa = read_FHZ($fh); $quaa =~ s/\s+$//g; return ($lla, $ida, $seqa, $quaa, $lena); } ########## END read_next_fastq sub reverse_complement { my ($in_seq) = @_; my $opposite = reverse $in_seq; $opposite =~ tr/ACGT/TGCA/; return("$opposite"); } sub input_test { my $f = shift; open(TTT, $f) || die "can not open $f\n"; my $ll = ; close(TTT); my $c = substr($ll,0,1); if ($c eq ">") {return "fasta";} else {return "fastq";} } ########## END input_test sub usage { < "qsub-pe", "cores_per_node" => 8, "number_nodes" => 64, "user" => "weizhong", #### I will use command such as qstat -u weizhong to query submitted jobs "command" => "qsub", "command_name_opt" => "-N", "command_err_opt" => "-e", "command_out_opt" => "-o", "template" => < "sh", "cores_per_node" => 8, "number_nodes" => 1, }; $NGS_batch_jobs{"qc"} = { "CMD_opts" => ["100"], "execution" => "sh_1", # where to execute "cores_per_cmd" => 4, # number of threads used by command below "no_parallel" => 1, # number of total jobs to run using command below "command" => <\\SELF/qc.stdout 2>\\SELF/qc.stderr perl -e '\$i=0; while(<>){ if (/^\@/) {\$i++; print ">Sample|\\SAMPLE|\$i ", substr(\$_,1); \$a=<>; print \$a; \$a=<>; \$a=<>;}}' < \\SELF/R1.fq > \\SELF/R1.fa & perl -e '\$i=0; while(<>){ if (/^\@/) {\$i++; print ">Sample|\\SAMPLE|\$i ", substr(\$_,1); \$a=<>; print \$a; \$a=<>; \$a=<>;}}' < \\SELF/R2.fq > \\SELF/R2.fa & wait rm -f \\SELF/R1.fq \\SELF/R2.fq \\SELF/R1-s.fq \\SELF/R2-s.fq EOD }; $NGS_batch_jobs{"otu"} = { "injobs" => ["qc"], "CMD_opts" => ["150", "100", "0.97", "0.0001", "path_to_spliced_ref_db-R1", "path_to_spliced_ref_db-R1", "75"], "execution" => "sh_1", # where to execute "cores_per_cmd" => 2, # number of threads used by command below "no_parallel" => 1, # number of total jobs to run using command below "command" => < \\SELF/seq.nr.log #### cluster at 99% PE and SE for R1,R2 $CD_HIT_dir/cd-hit-est -i \\SELF/seq.nr -o \\SELF/seq.chimeric-clstr.R1 -r 0 -cx \\CMDOPTS.6 -c 0.99 -n 10 -G 0 -b 1 -A 50 -T 1 -M 8000 -d 0 -p 1 > \\SELF/seq.chimeric-clstr.R1.log $CD_HIT_dir/cd-hit-est -i \\SELF/seq.nr.2 -o \\SELF/seq.chimeric-clstr.R2 -r 0 -cx \\CMDOPTS.6 -c 0.99 -n 10 -G 0 -b 1 -A 50 -T 1 -M 8000 -d 0 -p 1 > \\SELF/seq.chimeric-clstr.R2.log $CD_HIT_dir/cd-hit-est -i \\SELF/seq.nr -j \\SELF/seq.nr.2 -o \\SELF/seq.99 -op \\SELF/seq.99.2 -P 1 -r 0 \\ -cx \\CMDOPTS.0 -cy \\CMDOPTS.1 -c 0.99 -n 10 -G 1 -b 1 -T 1 -M 8000 -d 0 -p 1 > \\SELF/seq.99.log $CD_HIT_dir/usecases/Miseq-16S/filter-chimeric-and-small.pl -c \\CMDOPTS.3 -k \\SELF/seq.nr.clstr \\ -i \\SELF/seq.chimeric-clstr.R1.clstr -j \\SELF/seq.chimeric-clstr.R2.clstr \\ -a \\SELF/seq.99.clstr -f \\SELF/seq.99 -g \\SELF/seq.99.2 -o \\SELF/seq.99f $CD_HIT_dir/clstr_rev.pl \\SELF/seq.nr.clstr \\SELF/seq.99f.clstr > \\SELF/seq.99f-all.clstr $CD_HIT_dir/cd-hit-est -i \\SELF/seq.99f -j \\SELF/seq.99f.2 -o \\SELF/seq.97 -op \\SELF/seq.97.2 -P 1 -r 0 \\ -cx \\CMDOPTS.0 -cy \\CMDOPTS.1 -c 0.97 -n 10 -G 1 -b 10 -T 1 -M 8000 -d 0 -p 1 > \\SELF/seq.97.log $CD_HIT_dir/cd-hit-est-2d -i \\SELF/seq.97 -j \\SELF/seq.97.2 -i2 \\CMDOPTS.4 -j2 \\CMDOPTS.5 -o \\SELF/seq.97.ref -op \\SELF/seq.97.ref.2 -P 1 -r 0 \\ -cx \\CMDOPTS.0 -cy \\CMDOPTS.1 -c 0.97 -n 10 -G 1 -b 10 -T 1 -M 8000 -d 0 -p 1 > \\SELF/seq.97.ref.log $CD_HIT_dir/clstr_rev.pl \\SELF/seq.99f-all.clstr \\SELF/seq.97.clstr > \\SELF/seq.97-all.clstr $CD_HIT_dir/usecases/Miseq-16S/filter-nontop-ref.pl < \\SELF/seq.97.ref.clstr > \\SELF/seq.97.reftop.clstr $CD_HIT_dir/clstr_merge.pl \\SELF/seq.97-all.clstr \\SELF/seq.97.reftop.clstr > \\SELF/OTU.clstr rm -f \\SELF/seq.chimeric-clstr.R1 \\SELF/seq.chimeric-clstr.R1.log \\SELF/seq.chimeric-clstr.R2 \\SELF/seq.chimeric-clstr.R2.log rm -f \\SELF/seq.97.ref \\SELF/seq.97.ref.2 \\SELF/seq.97.ref.log mv \\SELF/seq.99f.log \\SELF/chimeric-small-clusters-list.txt EOD }; $NGS_batch_jobs{"otu-pooled"} = { "CMD_opts" => ["150", "100", "0.97", "0.0001", "path_to_spliced_ref_db-R1", "path_to_spliced_ref_db-R1", "75"], "execution" => "sh_1", # where to execute "cores_per_cmd" => 2, # number of threads used by command below "no_parallel" => 1, # number of total jobs to run using command below "command" => < seq.97.log $CD_HIT_dir/cd-hit-est-2d -i seq.97 -j seq.97.2 -i2 \\CMDOPTS.4 -j2 \\CMDOPTS.5 -o seq.97.ref -op seq.97.ref.2 -P 1 -r 0 \\ -cx \\CMDOPTS.0 -cy \\CMDOPTS.1 -c 0.97 -n 10 -G 1 -b 10 -T 1 -M 8000 -d 0 -p 1 > seq.97.ref.log $CD_HIT_dir/clstr_rev.pl seq.99f-all.clstr seq.97.clstr > seq.97-all.clstr $CD_HIT_dir/usecases/Miseq-16S/filter-nontop-ref.pl < seq.97.ref.clstr > seq.97.reftop.clstr $CD_HIT_dir/clstr_merge.pl seq.97-all.clstr seq.97.reftop.clstr > OTU.clstr $CD_HIT_dir/usecases/Miseq-16S/clstr_2_OTU_table.pl -i OTU.clstr -o OTU.txt rm -f seq.97.ref seq.97.ref.2 seq.97.ref.log EOD }; ############################################################################################## ########## END 1; cdhit-4.8.1/usecases/Miseq-16S/NG-Omics-Miseq-16S.py000066400000000000000000000141201343604040700214270ustar00rootroot00000000000000#!/usr/bin/python ################################################################################ # NGS workflow by Weizhong Li, http://weizhongli-lab.org ################################################################################ queue_system = 'SGE' ########## local variables etc. Please edit ENV={ 'CD_HIT_dir' : '/home/oasis/data/NGS-ann-project/apps/cdhit.git', 'NGS_prog_trimmomatic' : '/home/oasis/data/NGS-ann-project/apps/Trimmomatic/trimmomatic-0.32.jar', } ########## computation resources for execution of jobs NGS_executions = {} NGS_executions['qsub_1'] = { 'type' : 'qsub-pe', 'cores_per_node' : 8, 'number_nodes' : 64, 'user' : 'weizhong', #### I will use command such as qstat -u weizhong to query submitted jobs 'command' : 'qsub', 'command_name_opt' : '-N', 'command_err_opt' : '-e', 'command_out_opt' : '-o', 'template' : '''#!/bin/bash ##$ -q RNA.q #$ -v PATH #$ -V ''' } NGS_executions['sh_1'] = { 'type' : 'sh', 'cores_per_node' : 8, 'number_nodes' : 1, 'template' : '''#!/bin/bash ''' } NGS_batch_jobs = {} NGS_batch_jobs['qc'] = { 'CMD_opts' : ['100'], 'execution' : 'qsub_1', # where to execute 'cores_per_cmd' : 4, # number of threads used by command below 'no_parallel' : 1, # number of total jobs to run using command below 'command' : ''' java -jar $ENV.NGS_prog_trimmomatic PE -threads 4 -phred33 $DATA.0 $DATA.1 $SELF/R1.fq $SELF/R1-s.fq $SELF/R2.fq $SELF/R2-s.fq \\ SLIDINGWINDOW:4:20 LEADING:3 TRAILING:3 MINLEN:$CMDOPTS.0 MAXINFO:80:0.5 1>$SELF/qc.stdout 2>$SELF/qc.stderr perl -e '$i=0; while(<>){ if (/^@/) {$i++; print ">Sample|$SAMPLE|$i ", substr($_,1); $a=<>; print $a; $a=<>; $a=<>;}}' < $SELF/R1.fq > $SELF/R1.fa & perl -e '$i=0; while(<>){ if (/^@/) {$i++; print ">Sample|$SAMPLE|$i ", substr($_,1); $a=<>; print $a; $a=<>; $a=<>;}}' < $SELF/R2.fq > $SELF/R2.fa & wait rm -f $SELF/R1.fq $SELF/R2.fq $SELF/R1-s.fq $SELF/R2-s.fq ''' } NGS_batch_jobs['otu'] = { 'injobs' : ['qc'], 'CMD_opts' : ['150', '100', '0.97', '0.0001', 'path_to_spliced_ref_db-R1', 'path_to_spliced_ref_db-R1', '75'], 'execution' : 'qsub_1', # where to execute 'cores_per_cmd' : 2, # number of threads used by command below 'no_parallel' : 1, # number of total jobs to run using command below 'command' : ''' #### cluster at 100% PE $ENV.CD_HIT_dir/cd-hit-est -i $INJOBS.0/R1.fa -j $INJOBS.0/R2.fa -o $SELF/seq.nr -op $SELF/seq.nr.2 -sf 1 -sc 1 -P 1 -r 0 \\ -cx $CMDOPTS.0 -cy $CMDOPTS.1 -c 1.0 -n 10 -G 1 -b 1 -T 1 -M 8000 -d 0 -p 1 > $SELF/seq.nr.log #### cluster at 99% PE and SE for R1,R2 $ENV.CD_HIT_dir/cd-hit-est -i $SELF/seq.nr -o $SELF/seq.chimeric-clstr.R1 -r 0 -cx $CMDOPTS.6 -c 0.99 -n 10 -G 0 -b 1 -A 50 -T 1 -M 8000 -d 0 -p 1 > $SELF/seq.chimeric-clstr.R1.log $ENV.CD_HIT_dir/cd-hit-est -i $SELF/seq.nr.2 -o $SELF/seq.chimeric-clstr.R2 -r 0 -cx $CMDOPTS.6 -c 0.99 -n 10 -G 0 -b 1 -A 50 -T 1 -M 8000 -d 0 -p 1 > $SELF/seq.chimeric-clstr.R2.log $ENV.CD_HIT_dir/cd-hit-est -i $SELF/seq.nr -j $SELF/seq.nr.2 -o $SELF/seq.99 -op $SELF/seq.99.2 -P 1 -r 0 \\ -cx $CMDOPTS.0 -cy $CMDOPTS.1 -c 0.99 -n 10 -G 1 -b 1 -T 1 -M 8000 -d 0 -p 1 > $SELF/seq.99.log $ENV.CD_HIT_dir/usecases/Miseq-16S/filter-chimeric-and-small.pl -c $CMDOPTS.3 -k $SELF/seq.nr.clstr \\ -i $SELF/seq.chimeric-clstr.R1.clstr -j $SELF/seq.chimeric-clstr.R2.clstr \\ -a $SELF/seq.99.clstr -f $SELF/seq.99 -g $SELF/seq.99.2 -o $SELF/seq.99f $ENV.CD_HIT_dir/clstr_rev.pl $SELF/seq.nr.clstr $SELF/seq.99f.clstr > $SELF/seq.99f-all.clstr $ENV.CD_HIT_dir/cd-hit-est -i $SELF/seq.99f -j $SELF/seq.99f.2 -o $SELF/seq.97 -op $SELF/seq.97.2 -P 1 -r 0 \\ -cx $CMDOPTS.0 -cy $CMDOPTS.1 -c 0.97 -n 10 -G 1 -b 10 -T 1 -M 8000 -d 0 -p 1 > $SELF/seq.97.log $ENV.CD_HIT_dir/cd-hit-est-2d -i $SELF/seq.97 -j $SELF/seq.97.2 -i2 $CMDOPTS.4 -j2 $CMDOPTS.5 -o $SELF/seq.97.ref -op $SELF/seq.97.ref.2 -P 1 -r 0 \\ -cx $CMDOPTS.0 -cy $CMDOPTS.1 -c 0.97 -n 10 -G 1 -b 10 -T 1 -M 8000 -d 0 -p 1 > $SELF/seq.97.ref.log $ENV.CD_HIT_dir/clstr_rev.pl $SELF/seq.99f-all.clstr $SELF/seq.97.clstr > $SELF/seq.97-all.clstr $ENV.CD_HIT_dir/usecases/Miseq-16S/filter-nontop-ref.pl < $SELF/seq.97.ref.clstr > $SELF/seq.97.reftop.clstr $ENV.CD_HIT_dir/clstr_merge.pl $SELF/seq.97-all.clstr $SELF/seq.97.reftop.clstr > $SELF/OTU.clstr rm -f $SELF/seq.chimeric-clstr.R1 $SELF/seq.chimeric-clstr.R1.log $SELF/seq.chimeric-clstr.R2 $SELF/seq.chimeric-clstr.R2.log rm -f $SELF/seq.97.ref $SELF/seq.97.ref.2 $SELF/seq.97.ref.log mv $SELF/seq.99f.log $SELF/chimeric-small-clusters-list.txt ''' } NGS_batch_jobs['otu-pooled'] = { 'CMD_opts' : ['150', '100', '0.97', '0.0001', 'path_to_spliced_ref_db-R1', 'path_to_spliced_ref_db-R1', '75'], 'execution' : 'qsub_1', # where to execute 'cores_per_cmd' : 2, # number of threads used by command below 'no_parallel' : 1, # number of total jobs to run using command below 'command' : ''' #### before running #### concat seq.99f seq.99f.2 seq.99f-all.clstr chimeric-small-clusters-list.txt $ENV.CD_HIT_dir/cd-hit-est -i seq.99f -j seq.99f.2 -o seq.97 -op seq.97.2 -P 1 -r 0 \\ -cx $CMDOPTS.0 -cy $CMDOPTS.1 -c 0.97 -n 10 -G 1 -b 10 -T 1 -M 8000 -d 0 -p 1 > seq.97.log $ENV.CD_HIT_dir/cd-hit-est-2d -i seq.97 -j seq.97.2 -i2 $CMDOPTS.4 -j2 $CMDOPTS.5 -o seq.97.ref -op seq.97.ref.2 -P 1 -r 0 \\ -cx $CMDOPTS.0 -cy $CMDOPTS.1 -c 0.97 -n 10 -G 1 -b 10 -T 1 -M 8000 -d 0 -p 1 > seq.97.ref.log $ENV.CD_HIT_dir/clstr_rev.pl seq.99f-all.clstr seq.97.clstr > seq.97-all.clstr $ENV.CD_HIT_dir/usecases/Miseq-16S/filter-nontop-ref.pl < seq.97.ref.clstr > seq.97.reftop.clstr $ENV.CD_HIT_dir/clstr_merge.pl seq.97-all.clstr seq.97.reftop.clstr > OTU.clstr $ENV.CD_HIT_dir/usecases/Miseq-16S/clstr_2_OTU_table.pl -i OTU.clstr -o OTU.txt rm -f seq.97.ref seq.97.ref.2 seq.97.ref.log ''' } cdhit-4.8.1/usecases/Miseq-16S/NG-Omics-WF.pl000077500000000000000000001323311343604040700203110ustar00rootroot00000000000000#!/usr/bin/perl # =============================== NG-Omics-WF ================================== # _ _ _____ ____ _ __ ________ # | \ | |/ ____| / __ \ (_) \ \ / / ____| # | \| | | __ ______| | | |_ __ ___ _ ___ ___ _____\ \ /\ / /| |__ # | . ` | | |_ |______| | | | '_ ` _ \| |/ __/ __|______\ \/ \/ / | __| # | |\ | |__| | | |__| | | | | | | | (__\__ \ \ /\ / | | # |_| \_|\_____| \____/|_| |_| |_|_|\___|___/ \/ \/ |_| # # =========================== Next Generation Omics data workflow tools ======== # # Workflow tools for next generation genomics, metagenomics, RNA-seq # and other type of omics data analyiss, # # Software originally developed since 2010 by Weizhong Li at UCSD # currently at JCVI # # http://weizhongli-lab.org/ngomicswf liwz@sdsc.edu # ============================================================================== use Getopt::Std; use POSIX; getopts("i:R:s:J:Q:r:j:Z:t:S:T:",\%opts); die usage() unless ($opts{i} and ($opts{s} or $opts{S})); my $sample_in = $opts{s}; my $sample_command_in = $opts{S}; #### ';' delimited samples, ':' delimited entries, e.g. sample1:R1.fq:R2.fq;sample2:R1.fq:R2.fq or sample1;sample2;sample3 my $input_conf = $opts{i}; my $this_task = $opts{J}; our $G_NGS_root = $opts{r}; my $queue_system = $opts{Q}; $queue_system = "SGE" unless $queue_system; my $subset_wfs = $opts{R}; my $subset_jobs = $opts{j}; my $second_opt = $opts{Z}; my $opt_file = $opts{t}; my $opt_command_in = $opts{T}; #### ';' delimited jobs, ":" delimited entries, e.g. JobID_A:opt0:opt1:opt2;JobID_B:opt0:opt1 my $pwd = `pwd`; chop($pwd); my $sleep_time_min = 15; my $sleep_time_max = 120; my $log_dir = "$pwd/WF-LOG"; my $log_file = "$log_dir/LOG"; my $log_fileq = "$log_dir/LOGq"; my $sh_dir = "$pwd/WF-sh"; my $sh_bundle_dir = "$pwd/WF-sh-bundle"; my $subset_flag = 0; #### run only one job, subset of jobs, or jobs in sub workflows my %subset_jobs = (); my %qstat_xml_data = (); my ($i, $j, $k, $ll, $cmd); ######## scan through WF configration ######## and generate job list require $input_conf; my %job_list = (); # as $job_list{$t_job_id}{$t_sample_id} = {}; my ($t_sample_id, $t_job_id, $t_execution_id); my ($t_sample, $t_job, $t_execution); task_level_jobs(); my @NGS_batch_jobs = sort {($NGS_batch_jobs{$a}->{'job_level'} <=> $NGS_batch_jobs{$b}->{'job_level'}) or ($a cmp $b)} keys %NGS_batch_jobs; $cmd = `mkdir -p $log_dir` unless (-e $log_dir); $cmd = `mkdir -p $sh_dir` unless (-e $sh_dir); $cmd = `mkdir -p $sh_bundle_dir` unless (-e $sh_bundle_dir); open(LOG, ">> $log_file") || die "can not write to $log_file"; ######## parse NGS_samples my %NGS_sample_data = (); my @NGS_samples = (); if (defined($sample_in)) { open(TMP, $sample_in) || die "can not open $sample_in"; while($ll=){ next if ($ll =~ /^#/); next unless ($ll =~ /^\w/); chop($ll); my ($id, @data) = split(/\s+/,$ll); push(@NGS_samples, $id); $NGS_sample_data{$id} = [@data]; if (not (-e $id)) { $cmd = `mkdir $id`;} } close(TMP); } elsif (defined($sample_command_in)) { my @lls = split(/,/, $sample_command_in); foreach $ll (@lls) { my ($id, @data) = split(/:/, $ll); push(@NGS_samples, $id); $NGS_sample_data{$id} = [@data]; if (not (-e $id)) { $cmd = `mkdir $id`;} } } else { die "no input samples"; } my %CMD_opts = (); if (-e $opt_file) { ##format example ##CMDOPT JobID_A:opt0:opt1:opt2 ##CMDOPT JobID_B:opt0:opt1 ##CMDOPT JobID_C:opt0:opt1:opt2:opt3 open(TMP, $opt_file) || die "can not open $opt_file"; while($ll = ){ next if ($ll =~ /^#/); next unless ($ll =~ /^CMDOPT/); chop($ll); my ($i, $opt1) = split(/\s+/, $ll); my ($job_id, @opts) = split(/:/, $opt1); $CMD_opts{$job_id} = [@opts]; } close(TMP); } elsif ($opt_command_in) { my @lls = split(/,/, $opt_command_in); foreach $ll (@lls) { my ($job_id, @opts) = split(/:/, $ll); $CMD_opts{$job_id} = [@opts]; } } ########## processing subset of jobs if ($subset_wfs) { my @wfs = split(/,/, $subset_wfs); $subset_flag = 1; foreach $i (@wfs) { my @jobs = @{ $NGS_batch_sets{$i}->{"jobs"} }; foreach $j (@jobs) { $subset_jobs{$j} = 1; } } } if ($subset_jobs) { $subset_flag = 1; my @jobs = split(/,/, $subset_jobs); foreach $j (@jobs) { $subset_jobs{$j} = 1; } add_subset_jobs_by_dependency(); } if ($subset_flag) { my $job_str = join(" ", keys %subset_jobs); write_log("Running subset of jobs: $job_str"); } my $verify_flag = 0; foreach $t_job_id (keys %NGS_batch_jobs) { if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} $t_job = $NGS_batch_jobs{$t_job_id}; $t_execution = $NGS_executions{ $t_job->{"execution"} }; my $pe_parameter = ""; #### setup pe parameters if ($t_execution->{'type'} eq "qsub-pe") { my $t_cores_per_cmd = $t_job->{"cores_per_cmd"}; $t_cores_per_cmd = 1 unless ($t_cores_per_cmd); $pe_parameter = "#\$ -pe orte $t_cores_per_cmd"; } if ($t_job->{"cores_per_cmd"} > $t_execution->{"cores_per_node"} ) { $verify_flag = 1; write_log("$t_job_id needs $t_job->{\"cores_per_cmd\"} cores, but $t_job->{\"execution\"} only has $t_execution->{\"cores_per_node\"} cores"); } my $cmds_per_node = POSIX::floor( $t_execution->{"cores_per_node"} / $t_job->{"cores_per_cmd"}); my $nodes_total = POSIX::ceil($t_job->{"no_parallel"} / $cmds_per_node); $t_job->{"cmds_per_node"} = $cmds_per_node; $t_job->{"nodes_total"} = $nodes_total; if ($t_job->{"nodes_total"} > $t_execution->{"number_nodes"}) { $verify_flag = 1; write_log("$t_job_id needs $t_job->{\"nodes_total\"} nodes, but $t_job->{\"execution\"} only has $t_execution->{\"number_nodes\"} nodes"); } my @CMD_opts = (); @CMD_opts = @{$t_job->{CMD_opts}} if (defined($t_job->{CMD_opts} )); @CMD_opts = @{$CMD_opts{$t_job_id}} if (defined($CMD_opts{$t_job_id})); #### command line take over default foreach $t_sample_id (@NGS_samples) { my @t_commands = split(/\t/, $t_job->{"command"}); my $t_command = ""; foreach my $c0 (@t_commands) { my $c1 = $c0; $c1 =~ s/\\SAMPLE/$t_sample_id/g; $c1 =~ s/\\SELF/$t_job_id/g; # take it easy, assuming maxium 20 input files $c1 =~ s/\\INFILES\.0/$t_job->{"infiles"}->[0]/g; $c1 =~ s/\\INFILES\.10/$t_job->{"infiles"}->[10]/g; $c1 =~ s/\\INFILES\.1/$t_job->{"infiles"}->[1]/g; $c1 =~ s/\\INFILES\.11/$t_job->{"infiles"}->[11]/g; $c1 =~ s/\\INFILES\.2/$t_job->{"infiles"}->[2]/g; $c1 =~ s/\\INFILES\.12/$t_job->{"infiles"}->[12]/g; $c1 =~ s/\\INFILES\.3/$t_job->{"infiles"}->[3]/g; $c1 =~ s/\\INFILES\.13/$t_job->{"infiles"}->[13]/g; $c1 =~ s/\\INFILES\.4/$t_job->{"infiles"}->[4]/g; $c1 =~ s/\\INFILES\.14/$t_job->{"infiles"}->[14]/g; $c1 =~ s/\\INFILES\.5/$t_job->{"infiles"}->[5]/g; $c1 =~ s/\\INFILES\.15/$t_job->{"infiles"}->[15]/g; $c1 =~ s/\\INFILES\.6/$t_job->{"infiles"}->[6]/g; $c1 =~ s/\\INFILES\.16/$t_job->{"infiles"}->[16]/g; $c1 =~ s/\\INFILES\.7/$t_job->{"infiles"}->[7]/g; $c1 =~ s/\\INFILES\.17/$t_job->{"infiles"}->[17]/g; $c1 =~ s/\\INFILES\.8/$t_job->{"infiles"}->[8]/g; $c1 =~ s/\\INFILES\.18/$t_job->{"infiles"}->[18]/g; $c1 =~ s/\\INFILES\.9/$t_job->{"infiles"}->[9]/g; $c1 =~ s/\\INFILES\.19/$t_job->{"infiles"}->[19]/g; $c1 =~ s/\\DATA\.0/$NGS_sample_data{$t_sample_id}->[0]/g; $c1 =~ s/\\DATA\.10/$NGS_sample_data{$t_sample_id}->[10]/g; $c1 =~ s/\\DATA\.1/$NGS_sample_data{$t_sample_id}->[1]/g; $c1 =~ s/\\DATA\.11/$NGS_sample_data{$t_sample_id}->[11]/g; $c1 =~ s/\\DATA\.2/$NGS_sample_data{$t_sample_id}->[2]/g; $c1 =~ s/\\DATA\.12/$NGS_sample_data{$t_sample_id}->[12]/g; $c1 =~ s/\\DATA\.3/$NGS_sample_data{$t_sample_id}->[3]/g; $c1 =~ s/\\DATA\.13/$NGS_sample_data{$t_sample_id}->[13]/g; $c1 =~ s/\\DATA\.4/$NGS_sample_data{$t_sample_id}->[4]/g; $c1 =~ s/\\DATA\.14/$NGS_sample_data{$t_sample_id}->[14]/g; $c1 =~ s/\\DATA\.5/$NGS_sample_data{$t_sample_id}->[5]/g; $c1 =~ s/\\DATA\.15/$NGS_sample_data{$t_sample_id}->[15]/g; $c1 =~ s/\\DATA\.6/$NGS_sample_data{$t_sample_id}->[6]/g; $c1 =~ s/\\DATA\.16/$NGS_sample_data{$t_sample_id}->[16]/g; $c1 =~ s/\\DATA\.7/$NGS_sample_data{$t_sample_id}->[7]/g; $c1 =~ s/\\DATA\.17/$NGS_sample_data{$t_sample_id}->[17]/g; $c1 =~ s/\\DATA\.8/$NGS_sample_data{$t_sample_id}->[8]/g; $c1 =~ s/\\DATA\.18/$NGS_sample_data{$t_sample_id}->[18]/g; $c1 =~ s/\\DATA\.9/$NGS_sample_data{$t_sample_id}->[9]/g; $c1 =~ s/\\DATA\.19/$NGS_sample_data{$t_sample_id}->[19]/g; $c1 =~ s/\\INJOBS\.0/$t_job->{"injobs"}->[0]/g; $c1 =~ s/\\INJOBS\.10/$t_job->{"injobs"}->[10]/g; $c1 =~ s/\\INJOBS\.1/$t_job->{"injobs"}->[1]/g; $c1 =~ s/\\INJOBS\.11/$t_job->{"injobs"}->[11]/g; $c1 =~ s/\\INJOBS\.2/$t_job->{"injobs"}->[2]/g; $c1 =~ s/\\INJOBS\.12/$t_job->{"injobs"}->[12]/g; $c1 =~ s/\\INJOBS\.3/$t_job->{"injobs"}->[3]/g; $c1 =~ s/\\INJOBS\.13/$t_job->{"injobs"}->[13]/g; $c1 =~ s/\\INJOBS\.4/$t_job->{"injobs"}->[4]/g; $c1 =~ s/\\INJOBS\.14/$t_job->{"injobs"}->[14]/g; $c1 =~ s/\\INJOBS\.5/$t_job->{"injobs"}->[5]/g; $c1 =~ s/\\INJOBS\.15/$t_job->{"injobs"}->[15]/g; $c1 =~ s/\\INJOBS\.6/$t_job->{"injobs"}->[6]/g; $c1 =~ s/\\INJOBS\.16/$t_job->{"injobs"}->[16]/g; $c1 =~ s/\\INJOBS\.7/$t_job->{"injobs"}->[7]/g; $c1 =~ s/\\INJOBS\.17/$t_job->{"injobs"}->[17]/g; $c1 =~ s/\\INJOBS\.8/$t_job->{"injobs"}->[8]/g; $c1 =~ s/\\INJOBS\.18/$t_job->{"injobs"}->[18]/g; $c1 =~ s/\\INJOBS\.9/$t_job->{"injobs"}->[9]/g; $c1 =~ s/\\INJOBS\.19/$t_job->{"injobs"}->[19]/g; $c1 =~ s/\\CMDOPTS\.0/$CMD_opts[0]/g; $c1 =~ s/\\CMDOPTS\.10/$CMD_opts[10]/g; $c1 =~ s/\\CMDOPTS\.1/$CMD_opts[1]/g; $c1 =~ s/\\CMDOPTS\.11/$CMD_opts[11]/g; $c1 =~ s/\\CMDOPTS\.2/$CMD_opts[2]/g; $c1 =~ s/\\CMDOPTS\.12/$CMD_opts[12]/g; $c1 =~ s/\\CMDOPTS\.3/$CMD_opts[3]/g; $c1 =~ s/\\CMDOPTS\.13/$CMD_opts[13]/g; $c1 =~ s/\\CMDOPTS\.4/$CMD_opts[4]/g; $c1 =~ s/\\CMDOPTS\.14/$CMD_opts[14]/g; $c1 =~ s/\\CMDOPTS\.5/$CMD_opts[5]/g; $c1 =~ s/\\CMDOPTS\.15/$CMD_opts[15]/g; $c1 =~ s/\\CMDOPTS\.6/$CMD_opts[6]/g; $c1 =~ s/\\CMDOPTS\.16/$CMD_opts[16]/g; $c1 =~ s/\\CMDOPTS\.7/$CMD_opts[7]/g; $c1 =~ s/\\CMDOPTS\.17/$CMD_opts[17]/g; $c1 =~ s/\\CMDOPTS\.8/$CMD_opts[8]/g; $c1 =~ s/\\CMDOPTS\.18/$CMD_opts[18]/g; $c1 =~ s/\\CMDOPTS\.9/$CMD_opts[9]/g; $c1 =~ s/\\CMDOPTS\.19/$CMD_opts[19]/g; $t_command .= "$c1\n"; } my @t_infiles = map { "$t_sample_id/$_" } @{$t_job->{"infiles"}}; my @t_injobs = @{$t_job->{"injobs"}}; my $t_sh_file = "$sh_dir/$t_job_id.$t_sample_id.sh"; my $f_start = "$pwd/$t_sample_id/$t_job_id/WF.start.date"; my $f_complete = "$pwd/$t_sample_id/$t_job_id/WF.complete.date"; my $f_cpu = "$pwd/$t_sample_id/$t_job_id/WF.cpu"; $job_list{$t_job_id}{$t_sample_id} = { 'sample_id' => $t_sample_id, 'job_id' => $t_job_id, 'status' => 'wait', #### status can be wait (input not ready), ready (input ready), submitted (submitted or running), completed 'command' => $t_command, 'sh_file' => $t_sh_file, 'infiles' => [@t_infiles], 'injobs' => [@t_injobs], 'start_file' => $f_start, 'complete_file'=> $f_complete, 'cpu_file' => $f_cpu, }; my $v_command = ""; foreach my $vf (@{$t_job->{"non_zero_files"}}) { $v_command .= "if ! [ -s $t_job_id/$vf ]; then echo \"zero size $t_job_id/$vf\"; exit; fi\n"; } if (not -e $t_sh_file) { write_log("Write sh file to $t_sh_file"); open(TSH, "> $t_sh_file") || die "can not write to $t_sh_file\n"; print TSH <{"template"} $pe_parameter my_host=`hostname` my_pid=\$\$ my_core=$t_job->{"cores_per_cmd"} my_queue=$t_job->{"execution"} my_time_start=`date +%s`; cd $pwd cd $t_sample_id mkdir $t_job_id if ! [ -f $f_start ]; then date +\%s > $f_start; fi $t_command $v_command date +\%s > $f_complete #times >> $f_cpu my_time_end=`date +%s`; my_time_spent=\$((my_time_end-my_time_start)) echo "sample=$t_sample_id job=$t_job_id host=\$my_host pid=\$my_pid queue=\$my_queue cores=\$my_core time_start=\$my_time_start time_end=\$my_time_end time_spent=\$my_time_spent" >> $f_cpu EOD close(TSH); #validate_cmd_line($t_command, $t_sh_file, $t_sample_id); } } ########## foreach my $c0 (@t_commands) } ########## foreach $t_job (keys %NGS_batch_jobs) die if ($verify_flag); if ($this_task eq "log-cpu" ) { task_log_cpu(); exit 0;} elsif ($this_task eq "list-jobs" ) { task_list_jobs(); exit 0;} elsif ($this_task eq "snapshot" ) { task_snapshot(); exit 0;} elsif ($this_task eq "delete-jobs" ) { task_delete_jobs($second_opt); exit 0;} elsif ($this_task eq "write-sh" ) { exit 0;} elsif ($this_task ) { die "undefined task $this_task";} ################################################################################################ # _____ _ _ _____ _____ _ _ _ _ _ # | __ \ | \ | |/ ____|/ ____|| | | | | | (_) | | # | |__) | _ _ __ | \| | | __| (___ | |__ __ _| |_ ___| |__ _ ___ | |__ ___ # | _ / | | | '_ \ | . ` | | |_ |\___ \ | '_ \ / _` | __/ __| '_ \ | |/ _ \| '_ \/ __| # | | \ \ |_| | | | | | |\ | |__| |____) || |_) | (_| | || (__| | | | | | (_) | |_) \__ \ # |_| \_\__,_|_| |_| |_| \_|\_____|_____/ |_.__/ \__,_|\__\___|_| |_| | |\___/|_.__/|___/ # ______ ______ _/ | # |______| |______|__/ ########## Run NGS_batch_jobs for each samples http://patorjk.com/software/taag ################################################################################################ my %execution_submitted = (); # number of submitted jobs (qsub) or threads (local sh) my $sleep_time = $sleep_time_min; while(1) { my $flag_job_done = 1; ########## reset execution_submitted to 0 foreach $i (keys %NGS_executions) { $execution_submitted{$i} = 0; } my $flag_qstat_xml_call = 0; foreach $t_job_id (keys %NGS_batch_jobs) { my $t_job = $NGS_batch_jobs{$t_job_id}; my $t_execution = $NGS_executions{ $t_job->{"execution"} }; my $exe_type = $t_execution->{type}; $flag_qstat_xml_call = 1 if (($queue_system eq "SGE") and (($exe_type eq "qsub") or ($exe_type eq "qsub-pe"))); } SGE_qstat_xml_query() if $flag_qstat_xml_call; ########## check and update job status for submitted jobs foreach $t_job_id (keys %NGS_batch_jobs) { if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} my $t_job = $NGS_batch_jobs{$t_job_id}; foreach $t_sample_id (@NGS_samples) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $status = $t_sample_job->{'status'}; next if ($status eq "completed"); ########## check file system to update job status ########## in case this is a restart run check_submitted_job($t_job_id, $t_sample_id); next if ($t_sample_job->{'status'} eq "completed"); $flag_job_done = 0; } } if ($flag_job_done) { write_log("job completed!"); last; } ########## check and update job status based on dependance foreach $t_job_id (keys %NGS_batch_jobs) { if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} my $t_job = $NGS_batch_jobs{$t_job_id}; foreach $t_sample_id (@NGS_samples) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $status = $t_sample_job->{'status'}; next unless ($status eq "wait"); my @t_infiles = @{ $t_sample_job->{'infiles'} }; my @t_injobs = @{ $t_sample_job->{'injobs'} }; my $t_ready_flag = 1; foreach $i (@t_infiles) { next if (-s $i); #### non-zero size file $t_ready_flag = 0; last; } foreach $i (@t_injobs) { next if ( $job_list{$i}{$t_sample_id}->{'status'} eq "completed"); #### injob completed $t_ready_flag = 0; last; } if ($t_ready_flag) { $t_sample_job->{"status"} = "ready"; write_log("$t_job_id,$t_sample_id: change status to ready"); } } } ########## submit local sh jobs my $has_submitted_some_jobs = 0; foreach $t_job_id (keys %NGS_batch_jobs) { if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} my $t_job = $NGS_batch_jobs{$t_job_id}; my $t_execution = $NGS_executions{ $t_job->{"execution"} }; my $t_execution_id = $t_job->{"execution"}; if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} next unless ($t_execution->{'type'} eq "sh"); next if ( $execution_submitted{$t_execution_id} >= $t_execution->{"cores_per_node"} ); #### all cores are used foreach $t_sample_id (@NGS_samples) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $status = $t_sample_job->{'status'}; next unless ($status eq "ready"); next if ( ($execution_submitted{$t_execution_id} + $t_job->{"cores_per_cmd"} * $t_job->{"no_parallel"}) > $t_execution->{"cores_per_node"} ); #### no enough available cores #### now submitting my $t_sh_file = $t_sample_job->{'sh_file'}; my $t_sh_pid = "$t_sh_file.pids"; for ($i=0; $i<$t_job->{"no_parallel"}; $i++) { $cmd = `sh $t_sh_file >/dev/null 2>&1 &`; } $cmd = `touch $t_sh_pid`; $t_sample_job->{'status'} = "submitted"; write_log("$t_job_id,$t_sample_id: change status to submitted"); $execution_submitted{ $t_execution_id } += $t_job->{"cores_per_cmd"} * $t_job->{"no_parallel"}; $has_submitted_some_jobs = 1; } } ########## submit qsub-pe jobs, multiple jobs may share same node foreach $t_job_id (keys %NGS_batch_jobs) { if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} my $t_job = $NGS_batch_jobs{$t_job_id}; my $t_execution = $NGS_executions{ $t_job->{"execution"} }; my $t_execution_id = $t_job->{"execution"}; next unless ($t_execution->{'type'} eq "qsub-pe"); next if ( $execution_submitted{$t_execution_id} >= $t_execution->{"number_nodes"} ); #### resource full my $t_cores_per_node = $t_execution->{"cores_per_node"}; my $t_cores_per_cmd = $t_job->{"cores_per_cmd"}; my $t_cores_per_job = $t_cores_per_cmd * $t_job->{"no_parallel"}; my $t_nodes_per_job = $t_cores_per_job / $t_cores_per_node; foreach $t_sample_id (@NGS_samples) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $status = $t_sample_job->{'status'}; next unless ($status eq "ready"); my $t_sh_file = $t_sample_job->{'sh_file'}; my $t_sh_pid = "$t_sh_file.pids"; open(TID, "> $t_sh_pid") || die "can not write to $t_sh_pid"; for ($i=0; $i<$t_job->{"no_parallel"}; $i++) { my $t_stderr = "$t_sh_file.$i.stderr"; my $t_stdout = "$t_sh_file.$i.stdout"; $cmd = `qsub $t_execution->{"command_name_opt"} $t_job_id $t_execution->{"command_err_opt"} $t_stderr $t_execution->{"command_out_opt"} $t_stdout $t_sh_file 2>$log_fileq`; my $qsub_id = 0; if ($cmd =~ /(\d+)/) { $qsub_id = $1;} else {die "can not submit qsub job and return a id\n";} print TID "$qsub_id\n"; #### $cmd returns qsub id, write these ids to pid file for future qstat $execution_submitted{$t_execution_id} += $t_nodes_per_job; write_log("$t_sh_bundle submitted for sample $t_sample_id, qsubid $cmd"); } close(TID); $has_submitted_some_jobs = 1; $t_sample_job->{'status'} = "submitted"; } } ########## END foreach $t_job_id (keys %NGS_batch_jobs) ########## submit qsub jobs foreach $t_job_id (keys %NGS_batch_jobs) { if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} my $t_job = $NGS_batch_jobs{$t_job_id}; my $t_execution = $NGS_executions{ $t_job->{"execution"} }; my $t_execution_id = $t_job->{"execution"}; if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} next unless ($t_execution->{'type'} eq "qsub"); next if ( $execution_submitted{$t_execution_id} >= $t_execution->{"number_nodes"} ); #### resource full my $t_cores_per_node = $t_execution->{"cores_per_node"}; my $t_cores_per_cmd = $t_job->{"cores_per_cmd"}; my $t_cores_per_job = $t_cores_per_cmd * $t_job->{"no_parallel"}; my $t_nodes_per_job = POSIX::ceil($t_cores_per_job / $t_cores_per_node); my $t_cmds_per_node = int($t_cores_per_node / $t_cores_per_cmd); my $t_jobs_per_node = int($t_cores_per_node / $t_cores_per_job); ########## 1. this loop process jobs need 1 or more nodes per sample, ie. bundle within a sample, e.g. blast against refseq foreach $t_sample_id (@NGS_samples) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $status = $t_sample_job->{'status'}; next unless ($status eq "ready"); next unless ($t_jobs_per_node <= 1); #### unless need >= 1 node, including jobs use between (51%-100%) cores per node last if ( ($execution_submitted{$t_execution_id} + $t_nodes_per_job) > $t_execution->{"number_nodes"}); #### no enough available queues my $t_sh_file = $t_sample_job->{'sh_file'}; my $t_sh_bundle = "$sh_bundle_dir/$t_job_id.$t_sample_id.$$.sh"; my $t_stderr = "$t_sh_bundle.stderr"; my $t_stdout = "$t_sh_bundle.stdout"; my $t_sh_pid = "$t_sh_file.pids"; open(TID, "> $t_sh_pid") || die "can not write to $t_sh_pid"; open(BSH, "> $t_sh_bundle") || die "can not write to $t_sh_bundle"; print BSH <{"template"} cd $pwd EOD for ($i=0; $i<$t_cmds_per_node; $i++) { print BSH "sh $t_sh_file &\n"; print BSH "sleep 3\n"; } print BSH "wait\n"; close(BSH); for ($i=0; $i<$t_nodes_per_job; $i++) { $cmd = `qsub $t_execution->{"command_name_opt"} $t_job_id $t_execution->{"command_err_opt"} $t_stderr $t_execution->{"command_out_opt"} $t_stdout $t_sh_bundle 2>$log_fileq`; my $qsub_id = 0; if ($cmd =~ /(\d+)/) { $qsub_id = $1;} else {die "can not submit qsub job and return a id\n";} print TID "$qsub_id\n"; #### $cmd returns qsub id, write these ids to pid file for future qstat $execution_submitted{$t_execution_id}++; write_log("$t_sh_bundle submitted for sample $t_sample_id, qsubid $cmd"); } close(TID); $has_submitted_some_jobs = 1; $t_sample_job->{'status'} = "submitted"; } ########## END foreach $t_sample_id (@NGS_samples) ########## 2. this loop process jobs need less than 1 node per sample, ie. bundle jobs across samples, e.g. qc my @t_bundle = (); my $available_nodes = $t_execution->{"number_nodes"} - $execution_submitted{$t_execution_id}; my $no_sample_can_be_processed = $available_nodes * $t_jobs_per_node; my @t_samples = (); my $t_batch_no = 0; foreach $t_sample_id (@NGS_samples) { #### same loop as next, to find out @t_samples and last sample can run my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $status = $t_sample_job->{'status'}; next unless ($status eq "ready"); next unless ($t_jobs_per_node > 1); #### unless a node can host 2 or more jobs last if ( $t_execution->{"number_nodes"} - $execution_submitted{$t_execution_id} <=0); push(@t_samples, $t_sample_id); } my $last_sample_can_run = $t_samples[-1]; @t_samples = (); foreach $t_sample_id (@NGS_samples) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $status = $t_sample_job->{'status'}; next unless ($status eq "ready"); next unless ($t_jobs_per_node > 1); #### unless a node can host 2 or more jobs last if ( $t_execution->{"number_nodes"} - $execution_submitted{$t_execution_id} <=0); push(@t_samples, $t_sample_id); #### bundle @t_samples to one qsub job if ((($#t_samples+1) == $t_jobs_per_node) or ($t_sample_id eq $last_sample_can_run)) { my $t_sh_bundle = "$sh_bundle_dir/$t_job_id.samples-$t_batch_no.$$.sh"; my $t_stderr = "$t_sh_bundle.stderr"; my $t_stdout = "$t_sh_bundle.stdout"; open(BSH, "> $t_sh_bundle") || die "can not write to $t_sh_bundle"; print BSH <{"template"} cd $pwd EOD foreach $i (@t_samples) { my $t_sh_file = $job_list{$t_job_id}{$i}->{'sh_file'}; for ($j=0; $j<$t_job->{"no_parallel"}; $j++) { print BSH "sh $t_sh_file &\n"; print BSH "sleep 3\n"; } } print BSH "wait\n"; close(BSH); $cmd = `qsub $t_execution->{"command_name_opt"} $t_job_id $t_execution->{"command_err_opt"} $t_stderr $t_execution->{"command_out_opt"} $t_stdout $t_sh_bundle 2>$log_fileq`; my $qsub_id = 0; if ($cmd =~ /(\d+)/) { $qsub_id = $1;} else {die "can not submit qsub job and return a id\n";} foreach $i (@t_samples) { my $t_sh_file = $job_list{$t_job_id}{$i}->{'sh_file'}; my $t_sh_pid = "$t_sh_file.pids"; open(TID, "> $t_sh_pid") || die "can not write to $t_sh_pid"; print TID "$qsub_id\n"; #### $cmd returns qsub id, write these ids to pid file for future qstat write_log("$t_sh_bundle submitted for sample $i, qsubid $cmd"); close(TID); $job_list{$t_job_id}{$i}->{'status'} = "submitted"; } $has_submitted_some_jobs = 1; $execution_submitted{$t_execution_id}++; @t_samples = (); #### clear $t_batch_no++; } } ########## END foreach $t_sample_id (@NGS_samples) } ########## END foreach $t_job_id (keys %NGS_batch_jobs) #### if has submitted some jobs, reset waiting time, otherwise double waiting time print_job_status_summary(); if ($has_submitted_some_jobs) { $sleep_time = $sleep_time_min; } else { $sleep_time = $sleep_time*2; $sleep_time = $sleep_time_max if ($sleep_time > $sleep_time_max); } write_log("sleep $sleep_time seconds"); sleep($sleep_time); } ########## END while(1) task_log_cpu(); ################################################################################ ########## END Run NGS_batch_jobs for each samples ################################################################################ close(LOG); ########## sub write_log { my @txt = @_; my $i; my $date = `date`; chop($date); foreach $i (@txt) { print LOG "$date $i\n"; print STDERR "$date $i\n"; } print LOG "\n"; print STDERR "\n"; } ########## END write_log sub SGE_qstat_xml_query { my ($i, $j, $k, $cmd, $ll); %qstat_xml_data = (); #### global $cmd = `qstat -f -xml`; if ($cmd =~ /(\d+)/) { $id = $1;} if ($lls[$i] =~ /([^<]+)/) { $name = $1;} if ($lls[$i] =~ /([^<]+)/) {$state = $1;} } if (defined($id) and defined($name) and defined($state)) { $qstat_xml_data{$id} = [$name, $state]; } } } } ########## check submitted job by checking pids, or qsub ids ########## update job status from wait|ready -> submitted if pid file exit (in case of restart of this script) ########## update job status from wait|ready|submitted -> completed if sh calls or qsub calls finished ########## these pids or qsub ids are done sub check_submitted_job { my ($t_job_id, $t_sample_id) = @_; my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $t_job = $NGS_batch_jobs{$t_job_id}; my $t_execution = $NGS_executions{ $t_job->{"execution"} }; my ($i, $j, $k, $flag, $ll, $cmd); my $t_sh_file = $t_sample_job->{'sh_file'}; my $t_sh_pid = "$t_sh_file.pids"; # status won't change unless there is a pid file return unless (-e $t_sh_pid); my $status = $t_sample_job->{'status'}; if (($status eq "wait") or ($status eq "ready")) { $t_sample_job->{'status'} = "submitted"; write_log("$t_job_id,$t_sample_id: change status to submitted"); } my $exe_type = $t_execution->{type}; if ($exe_type eq "sh") { $cmd = `ps -ef | grep "$t_sh_file" | grep -v grep`; if ($cmd =~ /\w/) { # still running $execution_submitted{ $t_job->{"execution"} } += $t_job->{"cores_per_cmd"} * $t_job->{"no_parallel"}; } elsif (validate_job_files($t_job_id, $t_sample_id)) { $t_sample_job->{'status'} = "completed"; write_log("$t_job_id,$t_sample_id: change status to completed"); } else { $t_sample_job->{'status'} = "error"; write_log("$t_job_id,$t_sample_id: change status to error"); } return; } elsif (($exe_type eq "qsub") or ($exe_type eq "qsub-pe")) { my @pids = (); open(CHECK, $t_sh_pid) || die "Can not open $t_sh_pid\n"; while($ll = ) { chop($ll); next unless ($ll =~ /\w/); push(@pids, $ll); } close(CHECK); my $finish_flag = 1; foreach $i (@pids) { if (($queue_system eq "SGE") and %qstat_xml_data) { if (defined($qstat_xml_data{$i})) { $t_sample_job->{'status'} = "running" if (($qstat_xml_data{$i}->[1] eq "r") and ($t_sample_job->{'status'} eq "submitted")); $finish_flag = 0; $execution_submitted{ $t_job->{"execution"} } ++; } } elsif ($queue_system eq "SGE") { $cmd = `qstat -j $i | grep job_number`; if ($cmd =~ /$i/) { $finish_flag = 0; $execution_submitted{ $t_job->{"execution"} } ++; } } else { $cmd = `qstat -r $i | grep $i`; $j = (split(/\D/,$cmd))[0]; if ($j == $i) { # this job is running $finish_flag = 0; $execution_submitted{ $t_job->{"execution"} } ++; } } } if ($finish_flag == 1) { if (validate_job_files($t_job_id, $t_sample_id)) { $t_sample_job->{'status'} = "completed"; write_log("$t_job_id,$t_sample_id: change status to completed"); } else { $t_sample_job->{'status'} = "error"; write_log("$t_job_id,$t_sample_id: change status to error"); } } return; } else { die "unknown execution type: $exe_type\n"; } } ########## END sub check_submitted_job # WF.start.date and WF.complete.date need to have non-zero size sub validate_job_files { my ($t_job_id, $t_sample_id) = @_; my ($i, $j, $k); my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; return 0 unless (-s $t_sample_job->{'start_file'} ); return 0 unless (-s $t_sample_job->{'complete_file'} ); return 0 unless (-s $t_sample_job->{'cpu_file'} ); return 1; #### pass } ########## END validate_job_files sub print_job_status_summary { my ($t_job_id, $t_sample_id); my ($i, $j, $k); my %job_status = (); my $job_total = 0; foreach $t_job_id (keys %NGS_batch_jobs) { if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} foreach $t_sample_id (@NGS_samples) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $status = $t_sample_job->{'status'}; $job_status{$status}++; $job_total++; } } print STDERR "total jobs: $job_total,"; foreach $i (sort keys %job_status) { print STDERR "$i: $job_status{$i},"; } print STDERR "\n"; } ########## END print_job_status_summary sub validate_cmd_line { my ($i, $j, $k); my ($t_command, $t_sh_file, $t_sample_id) = @_; my @cmds = split(/\n/,$t_command); my @warn_path = (); foreach $i (@cmds) { my ($key_cmd, @opts) = split(/\s+/, $i); if ($key_cmd =~ /\//) { if (not -e $key_cmd) { push(@warn_path, $key_cmd); } } @opts = grep {/\//} @opts; foreach $j (@opts) { my @opts1 = split(/,|;|>|<|\|/,$j); foreach $k (@opts1) { $k = "$t_sample_id/$k" unless (($k =~ /^\//) or ($k =~ /^\./)); if (not -e $k) { push(@warn_path, $k); } } } } if (@warn_path) { print STDERR "File or program doesn't exist in $t_sh_file: ", join(" ", @warn_path), "\n"; } } ########## END validate_cmd_line sub add_subset_jobs_by_dependency { my ($i, $j, $k, $ll, $t_job_id, $t_sample_id, $t_job); while(1) { my $num_subset_jobs = scalar keys %subset_jobs; foreach $t_job_id (keys %subset_jobs) { $t_job = $NGS_batch_jobs{$t_job_id}; my @t_injobs = @{$t_job->{"injobs"}}; for $j (@t_injobs) { $subset_jobs{$j} = 1; } } last if ($num_subset_jobs == scalar keys %subset_jobs); } } ########## END add_subset_jobs_by_dependency sub task_level_jobs { my ($i, $j, $k, $ll, $t_job_id, $t_sample_id, $t_job); my %job_level = (); while(1) { my $change_flag = 0; foreach $t_job_id (keys %NGS_batch_jobs) { $t_job = $NGS_batch_jobs{$t_job_id}; my @t_injobs = @{$t_job->{"injobs"}}; if (@t_injobs) { my $max_level_injob; foreach $j (@t_injobs) { next unless defined ($job_level{$j}); $max_level_injob = $job_level{$j} if ($job_level{$j} > $max_level_injob); } next unless (defined($max_level_injob)); $max_level_injob++; #### one more level if (not defined ($job_level{$t_job_id})) { $job_level{$t_job_id}=$max_level_injob; $change_flag = 1; } elsif ($max_level_injob > $job_level{$t_job_id}) { $job_level{$t_job_id}=$max_level_injob; $change_flag = 1; } } else { if (not defined ($job_level{$t_job_id})) { $job_level{$t_job_id}=1; $change_flag = 1; } } } last unless ($change_flag); } foreach $t_job_id (sort keys %NGS_batch_jobs) { $NGS_batch_jobs{$t_job_id}->{"job_level"} = $job_level{$t_job_id}; } } ########## END task_list_jobs sub task_snapshot { my ($t_job_id, $t_sample_id); my ($i, $j, $k); if ($this_task) { my $flag_qstat_xml_call = 0; foreach $t_job_id (keys %NGS_batch_jobs) { my $t_job = $NGS_batch_jobs{$t_job_id}; my $t_execution = $NGS_executions{ $t_job->{"execution"} }; my $exe_type = $t_execution->{type}; $flag_qstat_xml_call = 1 if (($queue_system eq "SGE") and (($exe_type eq "qsub") or ($exe_type eq "qsub-pe"))); } SGE_qstat_xml_query() if $flag_qstat_xml_call; foreach $t_sample_id (@NGS_samples) { foreach $t_job_id (keys %NGS_batch_jobs) { check_submitted_job($t_job_id, $t_sample_id); } } } my $max_len_sample = 0; foreach $t_sample_id (@NGS_samples) { $max_len_sample = length($t_sample_id) if (length($t_sample_id) > $max_len_sample); } my $max_len_job = 0; foreach $t_job_id (@NGS_batch_jobs) { $max_len_job = length($t_job_id) if (length($t_job_id) > $max_len_job); } print <=0; $i--) { print ' 'x$max_len_sample, "\t"; foreach $t_job_id (@NGS_batch_jobs) { print " ", ($i{'status'}; if ($status eq "completed") { print " +";} elsif ($status eq "submitted") { print " -";} elsif ($status eq "running" ) { print " r";} elsif ($status eq "wait" ) { print " .";} elsif ($status eq "error" ) { print " !";} else { print " _";} } print "\n"; } } ########## END task_snapshot sub task_list_jobs { my ($i, $j, $k, $ll, $t_job_id, $t_sample_id, $t_job); foreach $t_job_id (@NGS_batch_jobs) { $t_job = $NGS_batch_jobs{$t_job_id}; #my @t_infiles = @{$t_job->{"infiles"}}; my @t_injobs = @{$t_job->{"injobs"}}; #print "\tInput_files:", join(",", @t_infiles) if @t_infiles; print "$t_job_id\tIn_jobs:[" , join(",", @t_injobs), "]\tJob_level:$t_job->{'job_level'}\n"; } } ########## END task_list_jobs sub file1_after_file2 { my ($file1, $file2) = @_; # if not exist file1, assume it is in future, so it is newer if (not -e ($file1)) {return 0;} if (not -e ($file2)) {return 0;} my $mtime1 = (stat($file1))[9]; my $mtime2 = (stat($file2))[9]; return ( ($mtime1 > $mtime2) ? 1 : 0); } ######## END file1_after_file2 sub file1_same_or_after_file2 { my ($file1, $file2) = @_; # if not exist file1, assume it is in future, so it is newer if (not -e ($file1)) {return 0;} if (not -e ($file2)) {return 0;} my $mtime1 = (stat($file1))[9]; my $mtime2 = (stat($file2))[9]; return ( ($mtime1 >= $mtime2) ? 1 : 0); } ######## END file1_after_file2 sub task_delete_jobs { my $opt = shift; my ($i, $j, $k, $ll, $t_job_id, $t_sample_id); my ($mode, $c) = split(/:/, $opt); my $tmp_sh = "NGS-$$.sh"; open(TMPSH, "> $tmp_sh") || die "can not write to file $tmp_sh"; print TMPSH "#Please execute the following commands\n"; foreach $t_sample_id (@NGS_samples) { my %job_to_delete_ids = (); if ($mode eq "jobids") { %job_to_delete_ids = map {$_, 1} split(/,/,$c); } elsif ($mode eq "run_after") { die "file $c doesn't exist!" unless (-e $c); foreach $t_job_id (keys %NGS_batch_jobs) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $t_sh_file = $t_sample_job->{'sh_file'}; my $t_sh_pid = "$t_sh_file.pids"; next unless (-e $t_sh_pid); #### unless the job is submitted #$job_to_delete_ids{$t_job_id} = 1 if (file1_same_or_after_file2( $t_sample_job->{'start_file'} , $c)); $job_to_delete_ids{$t_job_id} = 1 if (file1_same_or_after_file2( $t_sh_pid , $c)); } } else { die "unknown option for deleting jobs: $opt"; } # now %job_to_delete_ids are jobs need to be deleted # next find all jobs that depends on them, recrusively my $no_jobs_to_delete = scalar keys %job_to_delete_ids; while(1) { foreach $t_job_id (keys %NGS_batch_jobs) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $t_sh_file = $t_sample_job->{'sh_file'}; my $t_sh_pid = "$t_sh_file.pids"; next unless (-e $t_sh_pid); #### unless the job is submitted my @t_injobs = @{ $t_sample_job->{'injobs'} }; foreach my $t_job_id_2 (@t_injobs) { $job_to_delete_ids{$t_job_id} = 1 if ($job_to_delete_ids{$t_job_id_2}); } } last if ($no_jobs_to_delete == (scalar keys %job_to_delete_ids)); #### no more depending jobs $no_jobs_to_delete = scalar keys %job_to_delete_ids; } if ($no_jobs_to_delete) { print TMPSH "#jobs to be deleted for $t_sample_id: ", join(",", keys %job_to_delete_ids), "\n"; print "#jobs to be deleted for $t_sample_id: ", join(",", keys %job_to_delete_ids), "\n"; foreach $t_job_id (keys %job_to_delete_ids) { my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $t_sh_file = $t_sample_job->{'sh_file'}; my $t_sh_pid = "$t_sh_file.pids"; print TMPSH "\\rm -rf $pwd/$t_sample_id/$t_job_id\n"; print TMPSH "\\rm $t_sh_pid\n"; print TMPSH "\\rm $t_sh_file.*.std*\n"; #### find the qsub ids to be deleted my $qids = `cat $t_sh_pid`; $qids =~ s/\n/ /g; $qids =~ s/\s+/ /g; print TMPSH "qdel $qids\n"; } } } close(TMPSH); print "The script is not delete the file, please run $tmp_sh to delete files!!!\n\n"; } ########## END task_list_jobs sub task_log_cpu { my ($i, $j, $k, $ll, $t_job_id, $t_sample_id); my %cpu_info; foreach $t_job_id (keys %NGS_batch_jobs) { if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} my $t_job = $NGS_batch_jobs{$t_job_id}; foreach $t_sample_id (@NGS_samples) { $cpu_info{$t_job_id}{$t_sample_id} = [$t_wall, $t_cpu]; } } foreach $t_sample_id (@NGS_samples) { my $f_cpu = "$pwd/$t_sample_id/WF.cpu"; open(CPUOUT, "> $f_cpu") || die "Can not open $f_cpu"; print CPUOUT "#job_name\tCores\tWall(s)\tWall_time\tCPU(s)\tCPU_time\n"; my $min_start = 1402092131 * 999999; my $max_end = 0; my $sum_cpu = 0; foreach $t_job_id (keys %NGS_batch_jobs) { if ($subset_flag) {next unless ($subset_jobs{$t_job_id});} my $t_job = $NGS_batch_jobs{$t_job_id}; my $t_core = $t_job->{"cores_per_cmd"} * $t_job->{"no_parallel"}; my $t_sample_job = $job_list{$t_job_id}{$t_sample_id}; my $f_start = $t_sample_job->{'start_file'}; my $f_complete = $t_sample_job->{'complete_file'}; my $f_cpu = $t_sample_job->{'cpu_file'}; my $t_start = `cat $f_start`; $t_start =~ s/\s//g; $min_start = $t_start if ($t_start < $min_start); my $t_end = `cat $f_complete`; $t_end =~ s/\s//g; $max_end = $t_end if ($t_end > $max_end); my $t_wall = int($t_end - $t_start); $t_wall = 0 unless ($t_wall>0); my $t_cpu = 0; if (open(TCPU, $f_cpu)) { while($ll = ) { chop($ll); if ($ll =~ /^(\d+)m(\d+)/) { $t_cpu += $1 * 60; } } close(TCPU); } $sum_cpu += $t_cpu; my $t_walls = time_str1($t_wall); my $t_cpus = time_str1($t_cpu); print CPUOUT "$t_job_id\t$t_core\t$t_wall\t$t_walls\t$t_cpu\t$t_cpus\n"; } my $t_wall = ($max_end - $min_start); $t_wall = 0 unless ($t_wall>0); my $t_walls = time_str1($t_wall); my $sum_cpus= time_str1($sum_cpu); print CPUOUT "total\t-\t$t_wall\t$t_walls\t$sum_cpu\t$sum_cpus\n"; close(CPUOUT); } } ######### END task_log_cpu sub time_str1 { my $s = shift; my $str = ""; $str .= int($s/3600); $str .= "h"; $s = $s % 3600; $str .= int($s/60); $str .= "m"; $s = $s % 60; $str .= $s; $str .= "s"; return $str; } ########## END time_str1; sub usage { < 0: max_level_injob = 0 for j in t_injobs: if not j in job_level.keys(): continue if job_level[j] > max_level_injob: max_level_injob = job_level[j] if max_level_injob == 1: continue max_level_injob +=1 #### one more level if (t_job_id in job_level.keys()) and (job_level[t_job_id] >= max_level_injob): continue job_level[t_job_id]=max_level_injob change_flag = 1 else: if not t_job_id in job_level.keys(): job_level[t_job_id]=1 change_flag = True if not change_flag: break # print job_level for t_job_id in NGS_config.NGS_batch_jobs.keys(): NGS_config.NGS_batch_jobs[t_job_id]['job_level'] = job_level[t_job_id] return #### END task_level_jobs(NGS_config) def add_subset_jobs_by_dependency(NGS_config): '''add dependant jobs''' while True: num_subset_jobs = len(subset_jobs) for t_job_id in subset_jobs: t_job = NGS_config.NGS_batch_jobs[t_job_id] if 'injobs' in t_job.keys(): for j in t_job['injobs']: if not (j in subset_jobs): subset_jobs.append(j) if num_subset_jobs == len(subset_jobs): break return #### END add_subset_jobs_by_dependency() def make_job_list(NGS_config): '''make sh script for each job / sample''' verify_flag = False for t_job_id in NGS_config.NGS_batch_jobs: if subset_flag and not (t_job_id in subset_jobs): continue t_job = NGS_config.NGS_batch_jobs[ t_job_id ] t_execution = NGS_config.NGS_executions[ t_job["execution"] ] pe_parameter = '' if t_execution[ 'type' ] == 'qsub-pe': t_cores_per_cmd = t_job[ 'cores_per_cmd' ] pe_parameter = "#$ -pe orte " + str(t_cores_per_cmd) if 'pe_para' in t_execution.keys(): pe_parameter = "#$ " + t_execution[ 'pe_para' ] + " " + str(t_cores_per_cmd) if t_job[ 'cores_per_cmd' ] > t_execution[ 'cores_per_node' ]: fatal_error('not enough cores ' + t_job_id, exit_code=1) t_job[ 'cmds_per_node' ] = t_execution[ 'cores_per_node' ] / t_job[ 'cores_per_cmd' ] t_job[ 'nodes_total' ] = math.ceil( t_job[ 'no_parallel' ] / float(t_job[ 'cmds_per_node' ])) if t_job[ 'nodes_total' ] > t_execution[ 'number_nodes' ]: fatal_error('not enough nodes ' + t_job, exit_code=1) CMD_opts = [] if 'CMD_opts' in t_job.keys(): CMD_opts = t_job[ 'CMD_opts' ] if t_job_id in NGS_opts.keys(): CMD_opts = NGS_opts[ t_job_id ] for t_sample_id in NGS_samples: t_command = t_job[ 'command' ] t_command = re.sub('\$SAMPLE', t_sample_id, t_command) t_command = re.sub('\$SELF' , t_job_id, t_command) for i in NGS_config.ENV.keys(): t_command = re.sub('\$ENV.'+i, NGS_config.ENV[i], t_command) for i_data in range(0, len(NGS_sample_data[ t_sample_id ])): t_data = NGS_sample_data[ t_sample_id ][i_data] t_re = '\$DATA\.' + str(i_data) t_command = re.sub(t_re, t_data, t_command) t_injobs = [] if 'injobs' in t_job.keys(): t_injobs = t_job[ 'injobs' ] for i_data in range(0, len(t_job[ 'injobs' ])): t_data = t_job[ 'injobs' ][i_data] t_re = '\$INJOBS\.' + str(i_data) t_command = re.sub(t_re, t_data, t_command) for i_data in range(0, len(CMD_opts)): t_data = CMD_opts[i_data] t_re = '\$CMDOPTS\.' + str(i_data) t_command = re.sub(t_re, t_data, t_command) v_command = '' if 'non_zero_files' in t_job.keys(): for t_data in t_job[ 'non_zero_files' ]: v_command = v_command + \ 'if ! [ -s {0}/{1} ]; then echo "zero size {2}/{3}"; exit; fi\n'.format(t_job_id, t_data, t_job_id, t_data) f_start = pwd + '/' + t_sample_id + '/' + t_job_id + '/WF.start.date' f_complete = pwd + '/' + t_sample_id + '/' + t_job_id + '/WF.complete.date' f_cpu = pwd + '/' + t_sample_id + '/' + t_job_id + '/WF.cpu' t_sh_file = '{0}/WF-sh/{1}.{2}.sh'.format(pwd, t_job_id, t_sample_id) t_infiles = [] if 'infiles' in t_job.keys(): t_infiles = map(lambda x: t_sample_id + "/" + x, t_job[ 'infiles' ]) job_list[ t_job_id ][ t_sample_id ] = { 'sample_id' : t_sample_id, 'job_id' : t_job_id, 'status' : 'wait', #### status can be wait (input not ready), ready (input ready), submitted (submitted or running), completed 'command' : t_command, 'sh_file' : t_sh_file, 'infiles' : t_infiles, 'injobs' : t_injobs, 'start_file' : f_start, 'complete_file': f_complete, 'cpu_file' : f_cpu } if not os.path.exists( t_sh_file ): try: tsh = open(t_sh_file, 'w') tsh.write('''{0} {1} my_host=`hostname` my_pid=$$ my_core={2} my_queue={3} my_time_start=`date +%s` cd {4}/{5} mkdir {6} if ! [ -f {7} ]; then date +%s > {7}; fi {8} {9} date +%s > {10} my_time_end=`date +%s`; my_time_spent=$((my_time_end-my_time_start)) echo "sample={5} job={6} host=$my_host pid=$my_pid queue=$my_queue cores=$my_core time_start=$my_time_start time_end=$my_time_end time_spent=$my_time_spent" >> {11} '''.format(t_execution['template'], pe_parameter, t_job['cores_per_cmd'], t_job['execution'], pwd, t_sample_id, t_job_id, f_start, t_command, v_command, f_complete, f_cpu )) tsh.close() os.system('chmod u+x '+ t_sh_file) except IOError: fatal_error('cannot write to ' + job_list[ 't_job_id' ][ 't_sample_id' ][ 'sh_file' ], exit_code=1) return ### END def make_job_list(NGS_config): def time_str1(s): str1 = str(s/3600) + 'h' s = s % 3600 str1 = str1 + str(s/60) + 'm' s = s % 60 str1 = str1 + str(s) + 's' return str1 def task_list_jobs(NGS_config): for t_job_id in NGS_config.NGS_batch_jobs.keys(): t_job = NGS_config.NGS_batch_jobs[t_job_id] t_injobs = [] if 'injobs' in t_job.keys(): t_injobs = t_job['injobs'] print '{0}\tIn_jobs:[ {1} ]\tJob_level:{2}\n'.format(t_job_id, ','.join(t_injobs), t_job['job_level'] ) def task_snapshot(NGS_config): '''print job status''' queue_system = NGS_config.queue_system #### default "SGE" this_task = True if this_task: flag_qstat_xml_call = False for t_job_id in NGS_config.NGS_batch_jobs.keys(): t_job = NGS_config.NGS_batch_jobs[t_job_id] t_execution = NGS_config.NGS_executions[ t_job['execution']] exe_type = t_execution['type'] if (queue_system == 'SGE') and (exe_type in ['qsub','qsub-pe']): flag_qstat_xml_call = True if flag_qstat_xml_call: SGE_qstat_xml_query() for t_sample_id in NGS_samples: for t_job_id in NGS_config.NGS_batch_jobs.keys(): if subset_flag: if not (t_job_id in subset_jobs): continue check_submitted_job(NGS_config, t_job_id, t_sample_id) max_len_sample = 0; for t_sample_id in NGS_samples: if len(t_sample_id) > max_len_sample: max_len_sample = len(t_sample_id) max_len_job = 0; for t_job_id in NGS_config.NGS_batch_jobs.keys(): if len(t_job_id) > max_len_job: max_len_job = len(t_job_id) print ''' Job status: .\twait -\tsubmitted r\trunning +\tcompleted !\terror x\tunselected job ''' for i1 in range(max_len_job): i = max_len_job - i1 - 1 print ' ' * max_len_sample + "\t", for t_job_id in NGS_config.NGS_batch_jobs.keys(): if i < len(t_job_id): print ' ' + t_job_id[-i-1], else: print ' ', print '' print 'Sample\t' + ('-' * 30) for t_sample_id in NGS_samples: print t_sample_id + '\t', for t_job_id in NGS_config.NGS_batch_jobs.keys(): if subset_flag: if not (t_job_id in subset_jobs): print ' x', continue t_sample_job = job_list[t_job_id][t_sample_id] status = t_sample_job['status'] if status == 'completed': print ' +', elif status == 'submitted': print ' -', elif status == 'running': print ' r', elif status == 'wait': print ' .', elif status == 'error': print ' !', else: print ' _', print '' print '\n\n' return ### def task_snapshot(): def task_delete_jobs(NGS_config, opt): '''manually delete jobs and its dependant jobs''' mode, c = re.split(':', opt) tmp_sh = 'NGS-{0}.sh'.format(os.getpid()) try: tsh = open(tmp_sh, 'w') except IOError: fatal_error('cannot write to ' + tmp_sh, exit_code=1) tsh.write('#Please execute the following commands\n') for t_sample_id in NGS_samples: job_to_delete_ids =[] if mode == 'jobids': job_to_delete_ids = re.split(',', c) elif mode == 'run after': if not os.path.exists(c): fatel_error('File does not exist:' + c, exit_code=1) for t_job_id in NGS_config.NGS_batch_jobs.keys(): if subset_flag: if not (t_job_id in subset_jobs): continue t_sample_job = job_list[t_job_id][t_sample_id] t_sh_pid = t_sample_job['sh_file'] + '.pids' if not os.path.exists(t_sh_pid): continue if file1_same_or_after_file2(t_sh_pid, c): job_to_delete_ids.append(t_job_id) else: fatel_error('unknown option for deleteing jobs: ' + opt, exit_code=1) # now job_to_delete_ids are jobs need to be deleted # next find all jobs that depends on them, recrusively no_jobs_to_delete = len(job_to_delete_ids) while True: for t_job_id in NGS_config.NGS_batch_jobs.keys(): if subset_flag: if not (t_job_id in subset_jobs): continue t_sample_job = job_list[t_job_id][t_sample_id] t_sh_pid = t_sample_job['sh_file'] + '.pids' if not os.path.exists(t_sh_pid): continue for t_job_id_2 in t_sample_job['injobs']: if t_job_id_2 in job_to_delete_ids: if not t_job_id in job_to_delete_ids: job_to_delete_ids.append(t_job_id) if no_jobs_to_delete == len(job_to_delete_ids): break no_jobs_to_delete = len(job_to_delete_ids) if not no_jobs_to_delete: continue tsh.write('#jobs to be deleted for ' + t_sample_id + ': ' + ' '.join(job_to_delete_ids) + '\n'), for t_job_id in job_to_delete_ids: t_sample_job = job_list[t_job_id][t_sample_id] t_sh_pid = t_sample_job['sh_file'] + '.pids' tsh.write('\\rm -rf {0}/{1}\n'.format(t_sample_id, t_job_id)) tsh.write('\\rm '+ t_sh_pid + '\n') #### find the qsub ids to be deleted pids = [] #### either pids, or qsub ids try: f = open(t_sh_pid, 'r') pids = f.readlines() f.close() pids = [x.strip() for x in pids] except IOError: fatal_error('cannot open ' + t_sh_pid, exit_code=1) tsh.write('qdel ' + ' '.join([str(x) for x in pids]) + '\n') tsh.write('\n\n') tsh.close() print 'The script does not delete the files, please run ' + tmp_sh + ' to delete files!!!\n\n'; return #### END def task_delete_jobs() def file1_same_or_after_file2(file1, file2): # if not exist file1, assume it is in future, so it is newer if not os.path.exists(file1): return True # otherwise file1 exist # if file2 not exist if not os.path.exists(file2): return False if os.path.getmtime(file1) >= os.path.getmtime(file2): return True else: return False def SGE_qstat_xml_query(): '''run qstat -f -xml and get xml tree''' global qstat_xml_data qstat_xml_data = collections.defaultdict(dict) t_out = '' try: t_out = subprocess.check_output(['qstat -f -xml'], shell=True) except: fatal_error("can not run qstat", exit_code=1) qstat_xml_root = ET.fromstring(t_out) #qstat_xml_root = qstat_xml.getroot() for job_list in qstat_xml_root.iter('job_list'): job_id = job_list.find('JB_job_number').text job_name = job_list.find('JB_name').text job_state = job_list.find('state').text qstat_xml_data[job_id] = [job_name, job_state] return #### END def SGE_qstat_xml_query() def print_job_status_summary(NGS_config): '''print jobs status''' job_status = {} job_total = 0 for t_job_id in NGS_config.NGS_batch_jobs.keys(): if subset_flag: if not (t_job_id in subset_jobs): continue for t_sample_id in NGS_samples: status = job_list[t_job_id][t_sample_id]['status'] if status in job_status.keys(): job_status[status] +=1 else: job_status[status] =1 job_total +=1 print 'total jobs: {0},'.format(job_total) , for i in job_status.keys(): print '{0}: {1}, '.format(i, job_status[i]), print '\n' def run_workflow(NGS_config): '''major loop for workflow run''' queue_system = NGS_config.queue_system #### default "SGE" sleep_time_min = 15 sleep_time_max = 120 sleep_time = sleep_time_min while 1: flag_job_done = True ########## reset execution_submitted to 0 for i in NGS_config.NGS_executions.keys(): execution_submitted[ i ] = False flag_qstat_xml_call = False for t_job_id in NGS_config.NGS_batch_jobs.keys(): t_job = NGS_config.NGS_batch_jobs[t_job_id] t_execution = NGS_config.NGS_executions[ t_job['execution']] exe_type = t_execution['type'] if (queue_system == 'SGE') and (exe_type in ['qsub','qsub-pe']): flag_qstat_xml_call = True if flag_qstat_xml_call: SGE_qstat_xml_query() ########## check and update job status for submitted jobs for t_job_id in NGS_config.NGS_batch_jobs.keys(): t_job = NGS_config.NGS_batch_jobs[t_job_id] if subset_flag: if not (t_job_id in subset_jobs): continue for t_sample_id in NGS_samples: t_sample_job = job_list[t_job_id][t_sample_id] if t_sample_job['status'] == 'completed': continue check_submitted_job(NGS_config, t_job_id, t_sample_id) if t_sample_job['status'] == 'completed': continue flag_job_done = False if flag_job_done: print_job_status_summary(NGS_config) print 'job completed!' break ########## check and update job status based on dependance for t_job_id in NGS_config.NGS_batch_jobs.keys(): t_job = NGS_config.NGS_batch_jobs[t_job_id] if subset_flag: if not (t_job_id in subset_jobs): continue for t_sample_id in NGS_samples: t_sample_job = job_list[t_job_id][t_sample_id] if t_sample_job['status'] != 'wait': continue t_ready_flag = True for i in t_sample_job['infiles']: if os.path.exists(i) and os.path.getsize(i) > 0: continue t_ready_flag = False break for i in t_sample_job['injobs']: if job_list[i][t_sample_id]['status'] == 'completed': continue t_ready_flag = False break if t_ready_flag: t_sample_job['status'] = 'ready' print '{0},{1}: change status to ready\n'.format(t_job_id, t_sample_id) ########## END check and update job status based on dependance ########## submit local sh jobs has_submitted_some_jobs = False for t_job_id in NGS_config.NGS_batch_jobs.keys(): t_job = NGS_config.NGS_batch_jobs[t_job_id] if subset_flag: if not (t_job_id in subset_jobs): continue t_execution = NGS_config.NGS_executions[ t_job['execution']] t_execution_id = t_job['execution'] if t_execution['type'] != 'sh': continue if execution_submitted[t_execution_id] >= t_execution['cores_per_node']: continue for t_sample_id in NGS_samples: t_sample_job = job_list[t_job_id][t_sample_id] if t_sample_job['status'] != 'ready': continue if (execution_submitted[t_execution_id] + t_job['cores_per_cmd'] * t_job['no_parallel']) > \ t_execution['cores_per_node']: #### no enough available cores continue #### now submitting pid_file = open( t_sample_job['sh_file'] + '.pids', 'w') for i in range(0, t_job['no_parallel']): p = subprocess.Popen(['/bin/bash', t_sample_job['sh_file']], shell=True) pid_file.write(str(p.pid)+'\n') pid_file.close() t_sample_job['status'] = 'submitted' print '{0},{1}: change status to submitted\n'.format(t_job_id, t_sample_id) execution_submitted[ t_execution_id ] += t_job['cores_per_cmd'] * t_job['no_parallel'] has_submitted_some_jobs = True ########## END submit local sh jobs ########## submit qsub-pe jobs, multiple jobs may share same node for t_job_id in NGS_config.NGS_batch_jobs.keys(): t_job = NGS_config.NGS_batch_jobs[t_job_id] if subset_flag: if not (t_job_id in subset_jobs): continue t_execution = NGS_config.NGS_executions[ t_job['execution']] t_execution_id = t_job['execution'] if t_execution['type'] != 'qsub-pe': continue if execution_submitted[t_execution_id] >= t_execution['number_nodes']: continue t_cores_per_node = t_execution['cores_per_node'] t_cores_per_cmd = t_job['cores_per_cmd'] t_cores_per_job = t_cores_per_cmd * t_job['no_parallel'] t_nodes_per_job = t_cores_per_job / t_cores_per_node for t_sample_id in NGS_samples: t_sample_job = job_list[t_job_id][t_sample_id] if t_sample_job['status'] != 'ready': continue #### now submitting pid_file = open( t_sample_job['sh_file'] + '.pids', 'w') for i in range(0, t_job['no_parallel']): t_stderr = t_sample_job['sh_file'] + '.' + str(i) + '.stderr' t_stdout = t_sample_job['sh_file'] + '.' + str(i) + '.stdout' qsub_exe = 'qsub' if 'qsub_exe' in t_execution.keys(): qsub_exe = t_execution['qsub_exe'] command_line = qsub_exe + ' {0} {1} {2} {3} {4} {5} {6}'.format(t_execution['command_name_opt'], t_job_id, t_execution['command_err_opt'], t_stderr, t_execution['command_out_opt'], t_stdout, t_sample_job['sh_file']) cmd = subprocess.check_output([command_line], shell=True) if re.search('\d+', cmd): pid = re.search('\d+', cmd).group(0) pid_file.write(pid + '\n') else: fatal_error('error submitting jobs') execution_submitted[t_execution_id] += t_nodes_per_job print '{0} submitted for {1}\n'.format(t_sample_job['sh_file'], t_sample_id) pid_file.close() t_sample_job['status'] = 'submitted' has_submitted_some_jobs = True ########## END submit qsub-pe jobs, multiple jobs may share same node ########## submit qsub jobs, job bundles disabled here, if need, check the original Perl script #### if has submitted some jobs, reset waiting time, otherwise double waiting time print_job_status_summary(NGS_config) if has_submitted_some_jobs: sleep_time = sleep_time_min else: sleep_time *= 2 if sleep_time > sleep_time_max: sleep_time = sleep_time_max time.sleep(sleep_time); #### END while 1: return #### END def run_workflow(NGS_config) def check_pid(pid): '''Check For the existence of a unix pid. ''' # opt 1, this doesn't print OSError to stderr return os.path.exists('/proc/' + str(pid)) # opt 2, # try: # os.kill(pid, 0) # except OSError: return False # else: return True def check_any_pids(pids): '''Check For the existence of a list of unix pids. return True if any one exist''' for pid in pids: if check_pid(pid): return True return False def check_any_qsub_pids(pids): '''Check For the existence of a list of qsub pids. return True if any one exist''' for pid in pids: if pid in qstat_xml_data.keys(): return True return False def validate_job_files(t_job_id, t_sample_id): '''return True if necessary file exist''' t_sample_job = job_list[t_job_id][t_sample_id] if not (os.path.exists(t_sample_job['start_file']) and os.path.getsize(t_sample_job['start_file']) > 0): return False if not (os.path.exists(t_sample_job['complete_file']) and os.path.getsize(t_sample_job['complete_file']) > 0): return False if not (os.path.exists(t_sample_job['cpu_file']) and os.path.getsize(t_sample_job['cpu_file']) > 0): return False return True #### def check_submitted_job() def check_submitted_job(NGS_config, t_job_id, t_sample_id): ''' check submitted jobs by checking pids or qsub ids update job status from wait|ready -> submitted if pid file exit (in case of restart of this script) update job status from wait|ready|submitted -> completed if sh calls or qsub calls finished ''' t_sample_job = job_list[t_job_id][t_sample_id] t_job = NGS_config.NGS_batch_jobs[t_job_id] t_execution = NGS_config.NGS_executions[ t_job['execution']] t_sh_pid = t_sample_job['sh_file'] + '.pids' if not os.path.exists(t_sh_pid): return status = t_sample_job['status'] if ((status == 'wait') or (status == 'ready')): t_sample_job['status'] = 'submitted' print '{0},{1}: change status to submitted\n'.format(t_job_id, t_sample_id) pids = [] #### either pids, or qsub ids try: f = open(t_sh_pid, 'r') pids = f.readlines() f.close() pids = [x.strip() for x in pids] except IOError: fatal_error('cannot open ' + t_sh_pid, exit_code=1) if len(pids) == 0: fatal_error('empty file ' + t_sh_pid, exit_code=1) exe_type = t_execution['type'] if (exe_type == 'sh'): if check_any_pids(pids): #### still running execution_submitted[ t_job['execution'] ] += t_job['cores_per_cmd'] * t_job['no_parallel'] elif validate_job_files(t_job_id, t_sample_id): #### job finished t_sample_job['status'] = 'completed' print '{0},{1}: change status to completed\n'.format(t_job_id, t_sample_id) else: t_sample_job['status'] = 'error' print '{0},{1}: change status to error\n'.format(t_job_id, t_sample_id) return elif ((exe_type == 'qsub') or (exe_type == 'qsub-pe')): if check_any_qsub_pids(pids): #### still running pass elif validate_job_files(t_job_id, t_sample_id): #### job finished t_sample_job['status'] = 'completed' print '{0},{1}: change status to completed\n'.format(t_job_id, t_sample_id) else: t_sample_job['status'] = 'error' print '{0},{1}: change status to error\n'.format(t_job_id, t_sample_id) else: fatal_error('unknown execution type: '+ exe_type, exit_code=1) return #### END def check_submitted_job() if __name__ == "__main__": parser = argparse.ArgumentParser(formatter_class = RawTextHelpFormatter, description = textwrap.dedent(banner)) parser.add_argument('-i', '--input', help="workflow configration file, required", required=True) parser.add_argument('-s', '--sample_file', help=''' sample data file, required unless -S is present File format example: #Sample data file example, TAB or space delimited for following lines Sample_ID1 sample_data_0 sample_data_1 Sample_ID2 sample_data_0 sample_data_1 Sample_ID3 sample_data_0 sample_data_1 ''') parser.add_argument('-S', '--sample_name', help=''' sample data from command line, required unless -s is present format: Sample_ID1:sample_data_0:sample_data_0:sample_data_1,Sample_ID2:sample_data_0:sample_data_1 ''') parser.add_argument('-t', '--parameter_file', help=''' replace default paramters in workflow configration file File format example: #parameter file example, TAB or space delimited for following lines JobID_A opt0 opt1 opt2 JobID_B opt0 opt1 ''') parser.add_argument('-T', '--parameter_name', help=''' parameter from command line format: JobID_A:opt0:opt1:opt2,JobID_B:opt0:opt1 ''') parser.add_argument('-j', '--jobs', help='''run sub set of jobs, optional the workflow will run all jobs by default. to run sub set of jobs: -j qc or -j qc,fastqc ''') parser.add_argument('-J', '--task', help='''optional tasks write-sh: write sh files and quite log-cpu: gathering cpu time for each run for each sample list-jobs: list jobs snapshot: snapshot current job status delete-jobs: delete jobs, must supply jobs delete syntax by option -Z e.g. -J delete-jobs -Z jobids:assembly,blast ---delete assembly,blast and all jobs depends on them -J delete-jobs -Z run_after:filename ---delete jobs that has start time (WF.start.date) after this file, and all depending jobs ''') parser.add_argument('-Z', '--second_parameter', help='secondary parameter used by other options, such as -J') parser.add_argument('-Q', '--queye', help='queue system, e.g. PBS, SGE', default='SGE') args = parser.parse_args() if (args.sample_file is None) and (args.sample_name is None) : parser.error('No sample file or sample name') NGS_config = imp.load_source('NGS_config', args.input) print banner read_samples(args) read_parameters(args) if args.jobs: subset_flag = True subset_jobs = re.split(',', args.jobs) add_subset_jobs_by_dependency(NGS_config) print 'Running subset jobs:', print subset_jobs print '\n' if not os.path.exists('WF-sh'): os.system('mkdir WF-sh') task_level_jobs(NGS_config) make_job_list(NGS_config) if args.task: if args.task == 'list-jobs': task_list_jobs(NGS_config) exit(0) elif args.task == 'snapshot': task_snapshot(NGS_config) exit(0) elif args.task == 'delete-jobs': task_delete_jobs(NGS_config, args.second_parameter) exit(0) elif args.task == 'write-sh': exit(0) else: fatal_error('undefined task' + args.task, exit_code=1) run_workflow(NGS_config) ################################################################################################ # _____ _ _ _____ _____ _ _ _ _ _ # | __ \ | \ | |/ ____|/ ____|| | | | | | (_) | | # | |__) | _ _ __ | \| | | __| (___ | |__ __ _| |_ ___| |__ _ ___ | |__ ___ # | _ / | | | '_ \ | . ` | | |_ |\___ \ | '_ \ / _` | __/ __| '_ \ | |/ _ \| '_ \/ __| # | | \ \ |_| | | | | | |\ | |__| |____) || |_) | (_| | || (__| | | | | | (_) | |_) \__ \ # |_| \_\__,_|_| |_| |_| \_|\_____|_____/ |_.__/ \__,_|\__\___|_| |_| | |\___/|_.__/|___/ # ______ ______ _/ | # |______| |______|__/ ########## Run NGS_batch_jobs for each samples http://patorjk.com/software/taag ################################################################################################ cdhit-4.8.1/usecases/Miseq-16S/README000066400000000000000000000262311343604040700167440ustar00rootroot00000000000000CD-HIT usecases: CD-HIT-OTU-MiSeq (http://cd-hit.org) Please also check https://github.com/weizhongli/cdhit/wiki, which offers most up-to-date documents. ================================================================================================ Introduction of CD-HIT-OTU-MiSeq ================================================================================================ This use case is developed for clustering 16S rDNA sequences sequenced with MiSeq platform into OTUs for microbiome studies. In recent years, Illumina MiSeq sequencers became dominant in 16S rDNA sequencing. The Paired End (PE) reads need to be assembled first. However many reads can not be accurately assembled because the poor quality at the 3’ ends of both PE reads in the overlapping region. This causes that many sequences are discarded in the analysis. CD-HIT-OTU-MiSeq has unique features to cluster MiSeq 16S sequences. * The package can clustering PE reads without joining them into contigs. * Users can choose a high quality portion of the PE reads for analysis (e.g. first 200 / 150 bases from forward / reverse reads), according to base quality profile. * We implemented a tool that can splice out the target region (e.g. V3-V4) from a full-length 16S reference database into the PE sequences. CD-HIT-OTU-MiSeq can cluster the spliced PE reference database together with samples, so we can derive Operational Tax-onomic Units (OTUs) and annotate these OTUs concurrently. * Chimeric sequences are effectively identified through de novo approache. The most important unique feature of CD-HIT-OTU-MiSeq is to only use high quality region at the 5’ ends of R1 and R2 reads. For example, the effective clustering read length can be 200 bases for R1 and 150 bases for R2. The effective portions of PE reads are clustered together with spliced PE sequences from the reference database to derive OTUs (Figure). ================================================================================================ Installation ================================================================================================ 1. Install CD-HIT package * download current CD-HIT at https://github.com/weizhongli/cdhit/releases, for example cd-hit-v4.6.2-2015-0511.tar.gz * unpack the file with “tar xvf cd-hit-v4.6.2-2015-0511.tar.gz –gunzip†* change dir by “cd cd-hit-v4.6.2-2015-0511†* compile the programs by “make†with multi-threading (default), or by “make openmp=no†without multi-threading (on old systems without OpenMP) * cd cd-hit-auxtools * compile cd-hit-auxtools by “make†* CD-HIT-OTU-MiSeq scripts are inside a folder like cd-hit-v4.6.2-2015-0511/usecases/Miseq-16S 2. Install Trimmomatic CD-HIT-OTU-MiSeq uses Trimmomatic for sequence quality control. It can be downloaded from http://www.usadellab.org/cms/?page=trimmomatic or https://github.com/timflutre/trimmomatic. We also have a copy at http://weizhongli-lab.org/download-data/cd-hit-otu-miseq/. 3. Modify NG-Omics-Miseq-16S.py Please edit usecases/Miseq-16S/NG-Omics-Miseq-16S.py, in the top few lines: from 'CD_HIT_dir' : '/home/oasis/gordon-data/NGS-ann-project-new/apps/cd-hit-v4.6.8-2017-0621', 'NGS_prog_trimmomatic' : '/home/oasis/gordon-data/NGS-ann-project-new/apps/Trimmomatic/trimmomatic-0.32.jar', to 'CD_HIT_dir' : 'PATH_to_cd-hit_directory', 'NGS_prog_trimmomatic' : 'PATH_to_Trimmomatic/trimmomatic-0.32.jar', #### where you have installed Trimmomatic 4. Download reference dataset Reference database can be downloaded from http://weizhongli-lab.org/download-data/cd-hit-otu-miseq/. The reference database Greengene-13-5-99.fasta.gz was re-formatted from original Greengene database, so that sequences with more specific annotations are at the beginning of the file. Please gunzip after download. You can also download Greengene directly. You should download Greengene from http://greengenes.secondgenome.com/downloads, or ftp://greengenes.microbio.me/. Please download file like greengenes_release/gg_13_5/gg_13_5_otus.tar.gz, unpack the tar file. You may find gg_13_5_otus/taxonomy/99_otu_taxonomy.txt and gg_13_5_otus/rep_set/99_otus.fasta. There is a script: usecases/Miseq-16S/greengene-ann1.pl, please run this script to re-format greengene: PATH_to_cd-hit/usecases/Miseq-16S/greengene-ann1.pl -i gg_13_5_otus/taxonomy/99_otu_taxonomy.txt -j gg_13_5_otus/rep_set/99_otus.fasta -o Greengene-13-5-99.fasta 5. Download sample datasets Sample datasets can be downloaded from http://weizhongli-lab.org/download-data/cd-hit-otu-miseq/. The Miseq-otu-example.tar.gz contains two Miseq 16S samples. You can download and unpack to test. ================================================================================================ Usage of CD-HIT-OTU-MiSeq ================================================================================================ 1. Prepare fastq files and sample file Most projects have multiple samples sequenced at the same variable regions. After your samples are sequenced, your sequencing center should give you two paired ended fastq files for each samples. Put them in a working directory in similar way as the testing datasets, where the R1.fq and R2.fq are placed in a folder for each sample. the folder name is the sample name. So in the working directory, you should have files: sample_name_1/R1.fq sample_name_1/R2.fq sample_name_2/R1.fq sample_name_2/R2.fq ... sample_name_N/R1.fq sample_name_N/R2.fq 2. Prepare sample file Next is to prepare a SAMPLE_file, a text file, in the working directory. The file should look like: sample_name_1 R1.fq R2.fq sample_name_2 R1.fq R2.fq ... sample_name_N R1.fq R2.fq 3. Prepare reference database We implemented a tool that can splice out the target amplicon region (e.g. V3-V4) from a full-length 16S rRNA reference sequence database, such as Greengene, RDP and Silva, into PE sequences. If there are multiple samples in a project sequenced with the same amplicon of same variable region, only one spliced reference database is needed. Please run: Path_to_cd-hit_dir/usecases/Miseq-16S/16S-ref-db-PE-splice.pl -i sample_name_1/R1.fq -j sample_name_2/R2.fq -d Greengene-13-5-99.fasta -o gg_13_5-PE99.150-100 -p 150 -q 100 -c 0.99 Where Greengene-13-5-99.fasta is our re-formatted Greengene sequence file. -p 150 specify the effective clustering read length for R1 to be 150 -q 100 specify the effective clustering read length for R2 to be 100 -p and -q option need to be consistent with parameters in OTU clustering in step 4 see next section for suggestions in choose effective clustering read length This program will output spliced PE files gg_13_5-PE99.150-100-R1 and gg_13_5-PE99.150-100-R2. 4. Run sequence QC and OTU clustering for each sample In the working directory, run PATH_to_cd-hit-dir/usecases/Miseq-16S/NG-Omics-WF.py -i PATH_to_cd-hit-dir/usecases/Miseq-16S/NG-Omics-Miseq-16S.py -s SAMPLE_file -j otu -T otu:150:100:0.97:0.0001:PATH_to-gg_13_5-PE99.150-100-R1:PATH_to-gg_13_5-PE99.150-100-R2:75 -J write-sh where: 150 and 100 are the effective length, see next section for suggestions in choose effective clustering read length 0.97 is the OTU clustering cutoff, 0.00001 is the abundance cutoff, 75 is the length for chimeric checking at each R1 and R2 read PATH_to-gg_13_5-PE99.150-100-R1 and PATH_to-gg_13_5-PE99.150-100-R2 need to be full path e.g. /home/user/myproj/PATH_to-gg_13_5-PE99.150-100-R1 This command will generate shell scripts for QC and for OTU for each sample. The scripts will be in WF-sh folder. You can first run all the qc.sample_name.sh and after all these jobs finished you then run all otu.sample_name.sh NG-Omics-WF.py https://github.com/weizhongli/ngomicswf is a very powerful workflow and pipeline tool developed in our group. It is not fully released yet, since we need more time to document this tool. However, you can try to use NG-Omics-WF.py to automatically run all your samples. First edit NG-Omics-Miseq-16S.py and modify cores_per_node around line #36 to match the number of CPU cores of your computer, then run nohup PATH_to_cd-hit-dir/usecases/Miseq-16S/NG-Omics-WF.py -i PATH_to_cd-hit-dir/usecases/Miseq-16S/NG-Omics-Miseq-16S.py -s SAMPLE_file -j otu -T otu:150:100:0.97:0.0001:PATH_to-gg_13_5-PE99.150-100-R1:PATH_to-gg_13_5-PE99.150-100-R2:75 & After the job finished, the OTU results will be in sample_name/otu folder, important files include OTU.clstr: file lists all clusters and sequences chimeric-small-clusters-list.txt: list of chimeric reads and low abundance reads not used 5. Pool all samples together If you have multiple samples, you don't just want to stop here. It is important to pool all sample together and re-run OTU clustering so that all samples can be compared, run PATH_to_cd-hit-dir/usecases/Miseq-16S/pool_samples.pl -s SAMPLE_file -o pooled This will pool sequences from all samples. We can handle hundred and more sample without problem. 6. Cluster pooled samples, run PATH_to_cd-hit-dir/usecases/Miseq-16S/NG-Omics-WF.py -i PATH_to_cd-hit-dir/usecases/Miseq-16S/NG-Omics-Miseq-16S.py -S pooled -j otu-pooled -T otu:150:100:0.97:0.0001:PATH_to-gg_13_5-PE99.150-100-R1:PATH_to-gg_13_5-PE99.150-100-R2:75 -J write-sh This command will generate a script WF-sh/otu-pooled.pooled.sh, you can run this sh script. When it is finished, OTUs will be in the pooled directory: OTU.clstr: file list all clusters and sequences from all samples in CD-HIT format OTU.txt: spread sheet list number of sequences in each OTU for each sample, it also show annotation for each OTU. chimeric-small-clusters-list.txt: list of chimeric reads and low abundance reads not used ================================================================================================ Choose effective clustering read length ================================================================================================ The key of this method is to use the high quality portion of reads from both R1 and R2, so how to choose effective clustering read length depends on the actual quality of the PE reads. In our paper five pairs of effective clustering read lengths (225, 175), (200, 150), (175, 125), (150, 100) and (125, 75) were selected for samples sequenced at V34 or V45. Two pairs of effective clustering read lengths (150, 100) and (125, 75) were used for samples of V4 region. All these settings gave good results. You can try some different settings and compare the resutls. Also, programs such as FASTQC (http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) can be used to scan the raw reads to help choose the effective clustering read length of R1 and R2. ================================================================================================ Other topics ================================================================================================ Questions, comments to the author Weizhong Li, liwz@sdsc.edu cdhit-4.8.1/usecases/Miseq-16S/cd-hit-otu-miseq-PE.pl000077500000000000000000000244021343604040700220150ustar00rootroot00000000000000#!/usr/bin/perl use Getopt::Std; my $script_name = $0; my $script_dir = $0; $script_dir =~ s/[^\/]+$//; chop($script_dir); $script_dir = "./" unless ($script_dir); getopts("i:j:o:p:c:s:t:m:e:Z:a:f:d:R:",\%opts); die usage() unless ($opts{i} and $opts{o}); my $input = $opts{i}; my $input2 = $opts{j}; my $dir = $opts{o}; my $abs_cutoff = $opts{a}; $abs_cutoff = 0.00005 unless ($abs_cutoff); #5e-5 my $otu_cutoff = $opts{c}; $otu_cutoff = 0.97 unless ($otu_cutoff); my $chimera_f = $opts{m}; $chimera_f = "true" unless ($chimera_f); my $debug_mode = $opts{Z}; my $fast_mode = $opts{f}; #### use cd-hit-dup for stage 1 and 2 clustering my $cdhit_opt = $opts{d}; my $restart_n = $opts{R}; $restart_n = 0 unless (defined($restart_n)); my $LOGf = "$dir/OTU.log"; my $cd_hit_dup = "$script_dir/../../cd-hit-auxtools/cd-hit-dup"; die "no $cd_hit_dup" unless (-e $cd_hit_dup); my $cd_hit_est = "$script_dir/../../cd-hit-est"; die "no $cd_hit_est" unless (-e $cd_hit_est); my ($i, $j, $k, $str, $cmd, $ll); $cmd = `mkdir -p $dir`; open(LOG, "> $LOGf") || die "can not write to $LOGf"; my $f2 = "$dir/seq"; ################################################################################ #### Stage 0 ----------- clustering at 100% - stage 0 ################################################################################ my $clstr = "$f2.dup.clstr"; my $clstr2 = "$f2.dup2.clstr"; if ($restart_n <= 0) { nice_run("$cd_hit_dup -i $input -i2 $input2 -o $f2.dup -o2 $f2.dup.2 -u 100 -d 0 -m false -f $chimera_f > $f2.dup2.log"); nice_run("cat $f2.dup.clstr $f2.dup2.clstr > $f2-stage0.clstr.tmp"); nice_run("$script_dir/cd-hit/clstr_sort_by.pl < $f2-stage0.clstr.tmp > $f2-stage0.clstr; rm -f $f2-stage0.clstr.tmp"); nice_run("$script_dir/clstr_sort_rep.pl $f2-stage0.clstr $input > $f2-stage0-rep.fa"); # # /home/oasis/data/etc/git/cdhit/cd-hit-auxtools/cd-hit-dup -i qc/R1.fa -i2 qc/R2.fa -o otu/seq.dup -o2 otu/seq.dup.2 -u 100 -d 0 -f true > otu/seq.dup.log # no work # /home/oasis/data/etc/git/cdhit/cd-hit-auxtools/cd-hit-dup -i qc/R1.fa -i2 qc/R2.fa -o otu/seq.dup -o2 otu/seq.dup.2 -u 100 -d 0 > otu/seq.dup.log # # what if cd-hit-est # /home/oasis/data/etc/git/cdhit/cd-hit-est -i qc/R1.fa -j qc/R2.fa -o otu/seq.nr -op otu/seq.nr.2 -sf 1 -sc 1 -P 1 -r 0 -cx 100 -cy 100 -c 1.0 -n 10 -G 1 -b 1 -T 1 -M 8000 -d 0 -p 1 > otu/seq.nr.log # /home/oasis/data/etc/git/cdhit/cd-hit-est -i otu/seq.nr -o otu/seq.nr.R1 -r 0 -cx 100 -c 1.0 -n 10 -G 1 -b 1 -T 1 -M 8000 -d 0 -p 1 > otu/seq.nr.R1.log # /home/oasis/data/etc/git/cdhit/cd-hit-est -i otu/seq.nr.2 -o otu/seq.nr.R2 -r 0 -cx 100 -c 1.0 -n 10 -G 1 -b 1 -T 1 -M 8000 -d 0 -p 1 > otu/seq.nr.R2.log # /home/oasis/data/etc/git/cdhit/cd-hit-est -i otu/seq.nr -j otu/seq.nr.2 -o otu/seq.99 -op otu/seq.99.2 -P 1 -r 0 -cx 100 -cy 100 -c 0.99 -n 10 -G 1 -b 1 -T 1 -M 8000 -d 0 -p 1 > otu/seq.99.log # /home/oasis/data/etc/git/cdhit/cd-hit-est -i otu/seq.99 -j otu/seq.99.2 -o otu/seq.97 -op otu/seq.97.2 -P 1 -r 0 -cx 100 -cy 100 -c 0.97 -n 10 -G 1 -b 5 -T 1 -M 8000 -d 0 -p 1 > otu/seq.97.log # do not sort 99.clstr, always trust cd-hit-dup ordered sequences # /home/oasis/data/etc/git/cdhit/clstr_rev.pl otu/seq.nr.clstr otu/seq.99.clstr | /home/oasis/data/etc/git/cdhit/clstr_sort_by.pl > otu/seq.99-full.clstr # /home/oasis/data/etc/git/cdhit/clstr_rev.pl otu/seq.99-full.clstr otu/seq.97.clstr | /home/oasis/data/etc/git/cdhit/clstr_sort_by.pl > otu/seq.97-full.clstr # # combine ref # /home/oasis/data/etc/git/cdhit/cd-hit-est -i seq.99.wref.R1 -o seq.97.wref.R1only -r 0 -cx 100 -c 0.97 -n 10 -b 5 -T 1 -M 8000 -d 1 -p 1 -G 0 -A 50 -g 1 # } if (not $debug_mode) { my $no1 = count_seqs_from_fasta_file($input); my $no_clstr = count_clstrs_from_clstr_file($clstr); my $no_clstr2 = count_clstrs_from_clstr_file($clstr2); print LOG "Number_contigs\t$no1\n"; print LOG "Number_unique_contigs\t$no_clstr\n"; print LOG "Number_unique_chimaric_contigs\t$no_clstr2\n"; } ################################################################################ #### Stage 1 ---------- clustering at 99.25% #### distance 0.75% ################################################################################ my $seq_n = `grep -c "^>" $input`; $seq_n =~ s/\D//g; my $cutoff = int($seq_n * $abs_cutoff); my $c1 = 0.9925; if ($restart_n <= 1) { if ($fast_mode) { nice_run("$script_dir/cd-hit-auxtools/cd-hit-dup -i $f2-stage0-rep.fa -o $f2-stage1 -d 0 -m false -e 3 > $f2-stage1.log"); } else { nice_run("$script_dir/cd-hit/cd-hit-est -i $f2-stage0-rep.fa -o $f2-stage1 -c $c1 -n 10 -l 11 -p 1 -d 0 -g 1 -b 3 $cdhit_opt > $f2-stage1.log"); } nice_run("$script_dir/cd-hit/clstr_rev.pl $f2-stage0.clstr $f2-stage1.clstr | $script_dir/cd-hit/clstr_sort_by.pl > $f2-stage1-all.clstr"); nice_run("$script_dir/clstr_sort_rep.pl $f2-stage1-all.clstr $f2-stage1 > $f2-stage1-rep.fa"); } if (not $debug_mode) { $no_clstr = count_clstrs_from_clstr_file("$f2-stage1.clstr"); print LOG "Stage1 clustering at $c1\n"; print LOG "Number_clusters_stage1\t$no_clstr\n"; } ################################################################################ #### Stage 2 ---------- clustering at 98.50% #### distance 1.50% ################################################################################ $c1 = 0.985; if ($restart_n <= 2) { if ($fast_mode) { nice_run("$script_dir/cd-hit-auxtools/cd-hit-dup -i $f2-stage1-rep.fa -o $f2-stage2 -d 0 -m false -e 6 > $f2-stage2.log"); } else { nice_run("$script_dir/cd-hit/cd-hit-est -i $f2-stage1-rep.fa -o $f2-stage2 -c $c1 -n 10 -l 11 -p 1 -d 0 -g 1 -b 3 $cdhit_opt > $f2-stage2.log"); } nice_run("$script_dir/cd-hit/clstr_rev.pl $f2-stage1-all.clstr $f2-stage2.clstr | $script_dir/cd-hit/clstr_sort_by.pl > $f2-stage2-all.clstr"); nice_run("$script_dir/clstr_sort_rep.pl $f2-stage2-all.clstr $f2-stage2 > $f2-stage2-rep.fa"); } if (not $debug_mode) { $no_clstr = count_clstrs_from_clstr_file("$f2-stage2.clstr"); print LOG "Stage2 clustering at $c1\n"; print LOG "Number_clusters_stage2\t$no_clstr\n"; } ################################################################################ #### Stage pre-3 ---------- filtering ################################################################################ if ($restart_n <= 3) { nice_run("$script_dir/clstr_select_rep.pl size $cutoff 999999999 < $f2-stage2-all.clstr > $f2-stage2-rep-big.ids"); nice_run("$script_dir/fetch_fasta_by_ids.pl $f2-stage2-rep-big.ids $f2-stage2-rep.fa > $f2-stage2-rep-big.fa"); nice_run("$script_dir/fetch_fasta_exclude_ids.pl $f2-stage2-rep-big.ids $f2-stage2-rep.fa > $f2-stage2-rep-small.fa"); if (-s $clstr2) { nice_run("$script_dir/clstr_select_rep.pl size 1 999999999 < $clstr2 > $dir/chimaric.ids"); ## save chimaric ids nice_run("$script_dir/fetch_fasta_exclude_ids.pl $dir/chimaric.ids $f2-stage2-rep-big.fa > $f2-stage2-rep-big-good.fa"); ## exclude chimaric reads from $t1-pri-rep.fa nice_run("rm -f $f2-stage2-rep-big.fa"); nice_run("$script_dir/fetch_fasta_exclude_ids.pl $dir/chimaric.ids $f2-stage2-rep-small.fa > $f2-stage2-rep-small-good.fa"); nice_run("rm -f $f2-stage2-rep-small.fa"); } else { nice_run("mv $f2-stage2-rep-big.fa $f2-stage2-rep-big-good.fa"); nice_run("mv $f2-stage2-rep-small.fa $f2-stage2-rep-small-good.fa"); } } if (not $debug_mode) { print LOG "Min_clstr_size\t$cutoff\n"; my $no_seq = count_seqs_from_fasta_file("$f2-stage2-rep-big-good.fa"); print LOG "Number_clstrs_above_min_size\t$no_seq\n"; } ################################################################################ #### Stage 3 ---------- clustering at 97% ################################################################################ $c1 = $otu_cutoff; if ($restart_n <= 3) { nice_run("$script_dir/cd-hit/cd-hit-est -i $f2-stage2-rep-big-good.fa -o $f2-stage3 -c $c1 -n 8 -l 11 -p 1 -d 0 -g 1 -b 5 $cdhit_opt > $f2-stage3.log"); nice_run("$script_dir/cd-hit/clstr_rev.pl $f2-stage2-all.clstr $f2-stage3.clstr | $script_dir/cd-hit/clstr_sort_by.pl > $f2-stage3-all.clstr"); nice_run("$script_dir/clstr_sort_rep.pl $f2-stage3-all.clstr $f2-stage3 > $f2-stage3-rep.fa"); nice_run("mv -f $f2-stage3-all.clstr $dir/OTU.clstr"); nice_run("$script_dir/cd-hit-otu-table-faa.pl -i $dir/OTU.clstr -s $f2-stage3-rep.fa -o $dir/OTU-dist.txt -f $dir/OTU.fa"); } if (not $debug_mode) { $no_clstr = count_clstrs_from_clstr_file("$dir/OTU.clstr"); $no_seq = count_seqs_from_clstr_file("$dir/OTU.clstr"); print LOG "OTU clustering at $c1\n"; print LOG "Number_OTUs\t$no_clstr\n"; print LOG "Number_seqs_in_OTUs\t$no_seq\n"; my ($tu,$ts,$cu,$cs)=times(); my $tt=$tu+$ts+$cu+$cs; print LOG "Total_CPU_time\t$tt\n"; } close(LOG); sub usage { <" $clstr`; $n =~ s/\s//g; return $n; } sub count_seqs_from_clstr_file { my $clstr = shift; my $n = `grep -cv "^>" $clstr`; $n =~ s/\s//g; return $n; } sub count_seqs_from_fasta_file { my $faa = shift; my $n = `grep -c "^>" $faa`; $n =~ s/\s//g; return $n; } cdhit-4.8.1/usecases/Miseq-16S/clstr_2_OTU_table.pl000077500000000000000000000044451343604040700216750ustar00rootroot00000000000000#!/usr/bin/perl # use Getopt::Std; getopts("i:s:S:o:f:j:",\%opts); my $input = $opts{i}; $input = "OTU.clstr" unless $input; my $output = $opts{o}; $output = "OTU.txt" unless ($output); my ($i, $j, $k, $str, $cmd, $ll); my %count = (); my %count_t = (); my %count_s = (); my $OTU_2_ann = (); my $tree_flag = 0; #### for greengene header format # >4360486|k__Bacteria;.p__Firmicutes;.c__Clostridia;.o__Clostridiales;.f__Lachnospiraceae;.g__Roseburia;.s__faecis open(TMP, $input) || die "can not open $input"; my $OTU=0; while($ll=){ if ($ll =~ /^>/) { $OTU++; } else { chop($ll); if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { my $id = $2; if ($id =~ /^Sample\|([^\|]+)\|/) { $sample_id = $1; $sample_id{$sample_id}=1; $count{$OTU}{$sample_id}++; $count_t{$OTU}++; $count_s{$sample_id}++; } else { $OTU_2_ann{$OTU} = $id; $tree_flag = 1 if ($id =~ /\|k__Bacteria;.p__/); } } else { die "format error $ll"; } } } close(TMP); my @sample_ids = sort keys %sample_id; open(OUT1, "> $output") || die "can not write $output"; print OUT1 "OTU"; foreach $sample_id (@sample_ids){ print OUT1 "\t$sample_id"; } if ($tree_flag) { print OUT1 "\t", join("\t", qw/Kingdom Phylum Class Order Family Genus Species/); } #print OUT1 "\tTotal\n"; print OUT1 "\tAnnotation\n"; for ($i=1; $i<=$OTU; $i++){ $ann = "None"; if ($OTU_2_ann{$i}) { $ann = $OTU_2_ann{$i}; } print OUT1 "OTU$i"; foreach $sample_id (@sample_ids){ $k = $count{$i}{$sample_id}? $count{$i}{$sample_id} : 0; print OUT1 "\t$k"; } if ($tree_flag) { my ($tax_k, $tax_p, $tax_c, $tax_o, $tax_f, $tax_g, $tax_s); if ($ann =~ /k__(\w+)/) {$tax_k = $1} else {$tax_k = "";} if ($ann =~ /p__(\w+)/) {$tax_p = $1} else {$tax_p = "";} if ($ann =~ /c__(\w+)/) {$tax_c = $1} else {$tax_c = "";} if ($ann =~ /o__(\w+)/) {$tax_o = $1} else {$tax_o = "";} if ($ann =~ /f__(\w+)/) {$tax_f = $1} else {$tax_f = "";} if ($ann =~ /g__(\w+)/) {$tax_g = $1} else {$tax_g = "";} if ($ann =~ /s__(\w+)/) {$tax_s = $1} else {$tax_s = "";} print OUT1 "\t", join("\t", ($tax_k, $tax_p, $tax_c, $tax_o, $tax_f, $tax_g, $tax_s)); } #print OUT1 "\t$count_t{$i}"; print OUT1 "\t$ann\n"; } close(OUT1); cdhit-4.8.1/usecases/Miseq-16S/filter-chimeric-and-small.pl000077500000000000000000000142571343604040700233450ustar00rootroot00000000000000#!/usr/bin/perl use Getopt::Std; my $script_name = $0; my $script_dir = $0; $script_dir =~ s/[^\/]+$//; chop($script_dir); $script_dir = "./" unless ($script_dir); getopts("k:i:j:o:p:c:s:t:m:e:Z:a:f:d:R:g:",\%opts); die usage() unless ($opts{k} and $opts{i} and $opts{j} and $opts{a} and $opts{f} and $opts{g} and $opts{o}); my $input0 = $opts{k}; ## nr.clstr my $input = $opts{i}; ## R1 only clstr my $input2 = $opts{j}; ## R2 only clstr my $clstr_99 = $opts{a}; ## seq.99.clstr #### can be any 2nd -preclustering e.g. 98.5% my $seq_99 = $opts{f}; ## seq.99 - fasta file R1 my $seq_992 = $opts{g}; ## seq.99 - fasta file R2 my $output = $opts{o}; ## seq.99f my $abs_cutoff = $opts{c}; $abs_cutoff = 0.0001 unless ($abs_cutoff); my $output_2 = "$output.2"; ## seq.99f.2 -- R2 my $output_cls = "$output.clstr"; ## seq.99f.clstr my $output_log = "$output.log"; ## seq.99f.log my ($i, $j, $k, $str, $cmd, $ll); my $num_total_seq; my %seq_nr_size; my %seqs_of_nr; open(LOG, "> $output_log") || die "can not open $output_log"; open(TMP, $input0) || die "can not open $input0"; if (1) { my $rep; while($ll=){ if ($ll =~ /^>/) { $rep = ""; } else { chop($ll); my $id; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $id = $2; $num_total_seq++; if ($ll =~ /\*$/) { $rep=$id; $seq_nr_size{$rep}=0; $seqs_of_nr{$rep} = [];} $seq_nr_size{$rep}++ if ($rep); push(@{$seqs_of_nr{$rep}}, $id) if ($rep); } } } } close(TMP); my %seq_R1_clstr; my %seq_R2_clstr; foreach my $f (($input, $input2)) { open(TMP, $f) || die "can not open $f"; my $rep; while($ll=){ if ($ll =~ /^>/) { $rep = ""; } else { chop($ll); my $id; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $id = $2; if ($ll =~ /\*$/) { $rep=$id; } if ($rep) { if ($f eq $input) { $seq_R1_clstr{$id} = $rep;} else { $seq_R2_clstr{$id} = $rep;} } } } } close(TMP); } #### open $clstr_99 first time open(TMP, $clstr_99) || die "can not open $clstr_99"; %rep_2_otu = (); $OTU = -1; while($ll=){ if ($ll =~ /^>/) { $OTU++; } else { my $id; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $id = $2; $rep_2_otu{$id} = $OTU; } } } close(TMP); my %chimeric_ids = (); #### those ids are candidates, if they are recurited by other non-chimeric clusters, #### then they are not chimeric anymore foreach $i (keys %seq_R1_clstr) { my $rep1 = $seq_R1_clstr{$i}; my $rep2 = $seq_R2_clstr{$i}; next if ($rep1 eq $rep2); next unless ($seq_nr_size{$rep1} >= $seq_nr_size{$i}*2); next unless ($seq_nr_size{$rep2} >= $seq_nr_size{$i}*2); my $OTU1 = $rep_2_otu{$rep1}; my $OTU2 = $rep_2_otu{$rep2}; next if ($OTU1 eq $OTU2); $chimeric_ids{$i} = 1; } #### parse seq.99.clstr my $cutoff_clstr_size = int($num_total_seq * $abs_cutoff); $cutoff_clstr_size = 1 unless ($cutoff_clstr_size >= 1); #### singleton will be removed #print LOG "cutoff_clstr_size\t$cutoff_clstr_size\n"; open(TMP, $clstr_99) || die "can not open $clstr_99"; open(OUT, "> $output_cls") || die "can not write to $output_cls"; my %good_ids = (); my @seqs_this_cls = (); if (1) { my $clstr_txt = ""; my $clstr_size = 0; my $rep; while($ll=){ if ($ll =~ /^>/) { if ($clstr_txt) { if (($clstr_size > $cutoff_clstr_size) and (not $chimeric_ids{$rep})) { print OUT $clstr_txt; $good_ids{$rep} = 1; } elsif ( $chimeric_ids{$rep} ) { foreach $j (@seqs_this_cls) { foreach $i ( @{ $seqs_of_nr{$j} } ) { print LOG "$i\tChimeric_cluster\t$rep\t$clstr_size\tP1:$seq_R1_clstr{$rep}\tP2:$seq_R2_clstr{$rep}\tOTU1:$rep_2_otu{$seq_R1_clstr{$rep}}\tOTU2:$rep_2_otu{$seq_R2_clstr{$rep}}\n"; } } } else { foreach $j (@seqs_this_cls) { foreach $i ( @{ $seqs_of_nr{$j} } ) { print LOG "$i\tSmall_cluster\t$rep\t$clstr_size\n"; } } } } $clstr_size = 0; $clstr_txt = $ll; $rep = ""; @seqs_this_cls=(); } else { $clstr_txt .= $ll; chop($ll); my $id; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $id = $2; $clstr_size += $seq_nr_size{$id}; $rep=$id if ($ll =~ /\*$/); push(@seqs_this_cls, $id); } } } if ($clstr_txt) { if (($clstr_size > $cutoff_clstr_size) and (not $chimeric_ids{$rep})) { print OUT $clstr_txt; $good_ids{$rep} = 1; } elsif ( $chimeric_ids{$rep} ) { foreach $j (@seqs_this_cls) { foreach $i ( @{ $seqs_of_nr{$j} } ) { print LOG "$i\tChimeric_cluster\t$rep\t$clstr_size\tP1:$seq_R1_clstr{$rep}\tP2:$seq_R2_clstr{$rep}\tOTU1:$rep_2_otu{$seq_R1_clstr{$rep}}\tOTU2:$rep_2_otu{$seq_R2_clstr{$rep}}\n"; } } } else { foreach $j (@seqs_this_cls) { foreach $i ( @{ $seqs_of_nr{$j} } ) { print LOG "$i\tSmall_cluster\t$rep\t$clstr_size\n"; } } } } } close(TMP); close(OUT); foreach my $f (($seq_99, $seq_992)) { my $fout = ($f eq $seq_99) ? $output : $output_2; open(TMP, $f) || die "can not open $f"; open(OUT, ">$fout") || die "can not write to $fout"; my $flag = 0; while($ll = ) { if ($ll =~ /^>/) { $gi = substr($ll,1); chop($gi); $gi =~ s/\s.+$//; $flag = ( $good_ids{$gi} ) ? 1 : 0; } print OUT $ll if ($flag); } close(TMP); close(OUT); } close(LOG); sub usage { < $output_log") || die "can not open $output_log"; open(TMP, $clstr_99) || die "can not open $clstr_99"; if (1) { my $rep; while($ll=){ if ($ll =~ /^>/) { $rep = ""; } else { chop($ll); my $id; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $id = $2; $num_total_seq++ if ($id =~ /^Sample/); if ($ll =~ /\*$/) { $rep=$id; $seq_nr_size{$rep}=0; $seqs_of_rep{$rep} = [];} $seq_nr_size{$rep}++ if ($rep); push(@{$seqs_of_rep{$rep}}, $id) if ($rep); } } } } close(TMP); my %seq_R1_clstr; my %seq_R2_clstr; foreach my $f (($input, $input2)) { open(TMP, $f) || die "can not open $f"; my $rep; while($ll=){ if ($ll =~ /^>/) { $rep = ""; } else { chop($ll); my $id; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $id = $2; if ($ll =~ /\*$/) { $rep=$id; } if ($rep and ($id =~ /^Sample/) ) { if ($f eq $input) { $seq_R1_clstr{$id} = $rep;} else { $seq_R2_clstr{$id} = $rep;} } } } } close(TMP); } my $cutoff_clstr_size = int($num_total_seq * $abs_cutoff); $cutoff_clstr_size = 1 unless ($cutoff_clstr_size >= 1); #print LOG "cutoff_clstr_size\t$cutoff_clstr_size\n"; my %chimeric_ids = (); #### those ids are candidates, if they are recurited by other non-chimeric clusters, #### then they are not chimeric anymore foreach $i (keys %seq_nr_size) { next unless ($i =~ /^Sample/); my $rep1 = $seq_R1_clstr{$i}; my $rep2 = $seq_R2_clstr{$i}; next unless ($rep1 and $rep2); next if ($rep1 eq $rep2); next if ($rep1 eq $i); next if ($rep2 eq $i); next if ($seq_nr_size{$i} > $cutoff_clstr_size); if (defined($seq_nr_size{$rep1})) { next unless ($seq_nr_size{$rep1} >= $seq_nr_size{$i}*2); } if (defined($seq_nr_size{$rep2})) { next unless ($seq_nr_size{$rep2} >= $seq_nr_size{$i}*2); } $chimeric_ids{$i} = 1; } #### parse seq.97fwref.clstr #### do chimeric checking for sample-only clusters open(TMP, $clstr_99) || die "can not open $clstr_99"; open(OUT, "> $output_cls") || die "can not write to $output_cls"; my %good_ids = (); if (1) { my $clstr_txt = ""; my $clstr_size = 0; my $rep; my $refonly = 1; while($ll=){ if ($ll =~ /^>/) { if ($clstr_txt) { if ( not $refonly ) { if (not $chimeric_ids{$rep}) { print OUT $clstr_txt; $good_ids{$rep} = 1; } elsif ( $chimeric_ids{$rep} ) { foreach $i ( @{ $seqs_of_rep{$rep} }) { print LOG "Chimeric_cluster\t$i\t$rep\t$clstr_size\tP1:$seq_R1_clstr{$rep}\tP2:$seq_R2_clstr{$rep}\n"; } } } } $clstr_size = 0; $clstr_txt = $ll; $rep = ""; $refonly = 1; } else { $clstr_txt .= $ll; chop($ll); my $id; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $id = $2; $clstr_size++; $rep=$id if ($ll =~ /\*$/); $refonly = 0 if ($id =~ /^Sample/); } } } if ($clstr_txt) { if ( not $refonly ) { if (not $chimeric_ids{$rep}) { print OUT $clstr_txt; $good_ids{$rep} = 1; } elsif ( $chimeric_ids{$rep} ) { foreach $i ( @{ $seqs_of_rep{$rep} }) { print LOG "Chimeric_cluster\t$i\t$rep\t$clstr_size\tP1:$seq_R1_clstr{$rep}\tP2:$seq_R2_clstr{$rep}\n"; } } } } } close(TMP); close(OUT); foreach my $f (($seq_99, $seq_992)) { my $fout = ($f eq $seq_99) ? $output : $output_2; open(TMP, $f) || die "can not open $f"; open(OUT, ">$fout") || die "can not write to $fout"; my $flag = 0; while($ll = ) { if ($ll =~ /^>/) { $gi = substr($ll,1); chop($gi); $gi =~ s/\s.+$//; $flag = ( $good_ids{$gi} ) ? 1 : 0; } print OUT $ll if ($flag); } close(TMP); close(OUT); } close(LOG); sub usage { <){ if ($ll =~ /^>/) { if ($clstr) { print $clstr; print $best_ref if ($best_ref); } $clstr = $ll; $best_ref = ""; $best_score = 0; } else { if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { my $id = $2; if ($id =~ /^Sample/) { $clstr .= $ll; } elsif ( $ll =~ /\/([\d|\.]+)%$/) { my $iden = $1; if ($iden > $best_score) { $best_score = $iden; $best_ref = $ll; } } } else { print STDERR "format err: $ll"; } } } if ($clstr) { print $clstr; print $best_ref if ($best_ref); } cdhit-4.8.1/usecases/Miseq-16S/filter-refonly-cluster.pl000077500000000000000000000011211343604040700230330ustar00rootroot00000000000000#!/usr/bin/perl use Getopt::Std; my $script_name = $0; my $script_dir = $0; $script_dir =~ s/[^\/]+$//; chop($script_dir); $script_dir = "./" unless ($script_dir); my ($i, $j, $k, $str, $cmd, $ll); my $num_total_seq; my %seq_nr_size; if (1) { my $clstr = ""; my $refonly = 1; while($ll=<>){ if ($ll =~ /^>/) { print $clstr unless ($refonly); $clstr = $ll; $refonly = 1; } else { $clstr .= $ll; my $id; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $id = $2; $refonly = 0 if ($id =~ /^Sample/); } } } } cdhit-4.8.1/usecases/Miseq-16S/greengene-ann1.pl000077500000000000000000000041721343604040700212160ustar00rootroot00000000000000#!/usr/bin/perl ## =========================== NGS tools ========================================== ## NGS tools for metagenomic sequence analysis ## May also be used for other type NGS data analysis ## ## Weizhong Li, UCSD ## liwz@sdsc.edu ## http://weizhongli-lab.org/ ## ================================================================================ use Getopt::Std; getopts("i:j:o:r:e:p:q:c:d:N:t:u:d:M:T:S:",\%opts); die usage() unless ($opts{i} and $opts{j} and $opts{o}); my ($i, $j, $k, $cmd); my ($ll, $lla, $llb, $id, $ida, $idb, $seq, $seqa, $seqb, $qua, $quaa, $quab); my ($len, $lena, $lenb); my $file1 = $opts{i}; my $fasta = $opts{j}; my $output = $opts{o}; my %id_2_ann; open(TMP, $file1) || die "can not open $file1"; while($ll=){ chop($ll); my ($id, $txt) = split(/\s+/, $ll, 2); $txt =~ s/ /./g; $id_2_ann{$id} = $txt; } close(TMP); my %id_2_seq = (); my $id = ""; open(TMP, $fasta) || die "can not open $fasta"; while($ll=){ if ($ll =~ /^>(\d+)/) { chop($ll); $id = $1; $ann = $id_2_ann{$id}; $id = "$id|$ann" if ($ann); } else { $id_2_seq{$id} .= $ll; } } close(TMP); my @ids = keys %id_2_seq; @ids = sort {length($b) <=> length($a) } @ids; open(OUT, "> $output") || die "can not write to $output"; foreach $id (@ids) { print OUT ">$id\n$id_2_seq{$id}"; } close(OUT); sub usage { <){ next if ($ll =~ /^#/); next unless ($ll =~ /^\w/); chop($ll); my ($id, @data) = split(/\s+/,$ll); push(@NGS_samples, $id); } close(TMP); } elsif (defined($sample_command_in)) { my @lls = split(/,/, $sample_command_in); foreach $ll (@lls) { my ($id, @data) = split(/:/, $ll); push(@NGS_samples, $id); } } else { die "no input samples"; } foreach $i (@file_list) { my $target = "$output/$i"; foreach $j (@NGS_samples) { my $source = "$j/$job/$i"; if (-e $source) { print STDERR "cat $source >> $target\n"; $cmd = `cat $source >> $target`; } else { print STDERR "Warning, $source missing\n"; } } } sub usage { <){ if ($ll =~ /^>/) { chop($ll); ($id, $ann) = split(/\s+/, substr($ll,1), 2); $ann =~ s/\s/_/g; $id = "$id|$ann"; } else { $ll =~ s/U/T/g; $ll =~ s/u/T/g; $id_2_seq{$id} .= $ll; } } close(TMP); my @ids = keys %id_2_seq; @ids = sort {length($b) <=> length($a) } @ids; open(OUT, "> $output") || die "can not write to $output"; foreach $id (@ids) { print OUT ">$id\n$id_2_seq{$id}"; } close(OUT); sub usage { < "qsub-pe", "cores_per_node" => 8, "number_nodes" => 64, "user" => "weizhong", #### I will use command such as qstat -u weizhong to query submitted jobs "command" => "qsub", "command_name_opt" => "-N", "command_err_opt" => "-e", "command_out_opt" => "-o", "template" => < "sh", "cores_per_node" => 8, "number_nodes" => 1, }; # $NGS_batch_jobs{"qc-pe"} = { # "CMD_opts" => ["20"], # "execution" => "qsub_1", # where to execute # "cores_per_cmd" => 4, # number of threads used by command below # "no_parallel" => 1, # number of total jobs to run using command below # "command" => <\\SELF/qc.stdout 2>\\SELF/qc.stderr # # perl -e '\$i=0; while(<>){ if (/^\@/) {\$i++; print ">Sample|\\SAMPLE|\$i ", substr(\$_,1); \$a=<>; print \$a; \$a=<>; \$a=<>;}}' < \\SELF/R1.fq > \\SELF/R1.fa & # perl -e '\$i=0; while(<>){ if (/^\@/) {\$i++; print ">Sample|\\SAMPLE|\$i ", substr(\$_,1); \$a=<>; print \$a; \$a=<>; \$a=<>;}}' < \\SELF/R2.fq > \\SELF/R2.fa & # # wait # rm -f \\SELF/R1.fq \\SELF/R2.fq \\SELF/R1-s.fq \\SELF/R2-s.fq # EOD # }; $NGS_batch_jobs{"qc"} = { "CMD_opts" => ["20"], "execution" => "qsub_1", # where to execute "cores_per_cmd" => 4, # number of threads used by command below "no_parallel" => 1, # number of total jobs to run using command below "command" => <\\SELF/qc.stdout 2>\\SELF/qc.stderr perl -e '\$i=0; while(<>){ if (/^\@/) {\$i++; print ">Sample|\\SAMPLE|\$i ", substr(\$_,1); \$a=<>; print \$a; \$a=<>; \$a=<>;}}' < \\SELF/R1.fq > \\SELF/R1.fa & rm -f \\SELF/R1.fq EOD }; $NGS_batch_jobs{"clstr"} = { "injobs" => ["qc"], "CMD_opts" => ["0.95", "path_to_miRbase", "path_to_spike-in_db"], "execution" => "qsub_1", # where to execute "cores_per_cmd" => 2, # number of threads used by command below "no_parallel" => 1, # number of total jobs to run using command below "command" => < \\SELF/seq.nr.log $CD_HIT_dir/usecases/miRNA-seq/filter-small-cluster.pl -i \\SELF/seq.nr.clstr -s \\SELF/seq.nr -o \\SELF/seq.nr-filtered.clstr -f \\SELF/seq.nr-filtered -c 1 $CD_HIT_dir/cd-hit-est -i \\SELF/seq.nr-filtered -o \\SELF/seq.95 -r 0 -c \\CMDOPTS.0 -n 10 -p 1 -d 0 -G 1 -b 1 -T 4 -M 8000 > \\SELF/seq.95.log $CD_HIT_dir/clstr_rev.pl \\SELF/seq.nr-filtered.clstr \\SELF/seq.95.clstr > \\SELF/seq.95-full.clstr $CD_HIT_dir/cd-hit-est-2d -i \\SELF/seq.95 -i2 \\CMDOPTS.1 -o \\SELF/seq.95.ref -r 1 -c \\CMDOPTS.0 -n 10 -p 1 -d 0 -G 0 -A 20 -b 1 -T 4 -M 8000 > \\SELF/seq.95.ref.log $CD_HIT_dir/cd-hit-est-2d -i \\SELF/seq.95 -i2 \\CMDOPTS.2 -o \\SELF/seq.95.spk -r 1 -c \\CMDOPTS.0 -n 10 -p 1 -d 0 -G 0 -A 20 -b 1 -T 4 -M 8000 > \\SELF/seq.95.spk.log $CD_HIT_dir/usecases/Miseq-16S/filter-nontop-ref.pl < \\SELF/seq.95.ref.clstr > \\SELF/seq.95.reftop.clstr $CD_HIT_dir/usecases/Miseq-16S/filter-nontop-ref.pl < \\SELF/seq.95.spk.clstr > \\SELF/seq.95.spktop.clstr $CD_HIT_dir/clstr_merge.pl \\SELF/seq.95-full.clstr \\SELF/seq.95.reftop.clstr > \\SELF/tmp.clstr $CD_HIT_dir/clstr_merge.pl \\SELF/tmp.clstr \\SELF/seq.95.spktop.clstr > \\SELF/miRNA.clstr $CD_HIT_dir/clstr_sort_by.pl < \\SELF/miRNA.clstr > \\SELF/miRNA.clstr.s mv \\SELF/miRNA.clstr.s \\SELF/miRNA.clstr rm -f \\SELF/tmp.clstr EOD }; $NGS_batch_jobs{"clstr-pooled"} = { "CMD_opts" => ["0.95", "path_to_miRbase", "path_to_spike-in_db"], "execution" => "qsub_1", # where to execute "cores_per_cmd" => 2, # number of threads used by command below "no_parallel" => 1, # number of total jobs to run using command below "command" => < seq.95.log $CD_HIT_dir/clstr_rev.pl seq.nr-filtered.clstr seq.95.clstr > seq.95-full.clstr $CD_HIT_dir/cd-hit-est-2d -i seq.95 -i2 \\CMDOPTS.1 -o seq.95.ref -r 1 -c \\CMDOPTS.0 -n 10 -p 1 -d 0 -G 0 -A 20 -b 1 -T 4 -M 8000 > seq.95.ref.log $CD_HIT_dir/cd-hit-est-2d -i seq.95 -i2 \\CMDOPTS.2 -o seq.95.spk -r 1 -c \\CMDOPTS.0 -n 10 -p 1 -d 0 -G 0 -A 20 -b 1 -T 4 -M 8000 > seq.95.spk.log $CD_HIT_dir/usecases/Miseq-16S/filter-nontop-ref.pl < seq.95.ref.clstr > seq.95.reftop.clstr $CD_HIT_dir/usecases/Miseq-16S/filter-nontop-ref.pl < seq.95.spk.clstr > seq.95.spktop.clstr $CD_HIT_dir/clstr_merge.pl seq.95-full.clstr seq.95.reftop.clstr > tmp.clstr $CD_HIT_dir/clstr_merge.pl tmp.clstr seq.95.spktop.clstr > miRNA.clstr $CD_HIT_dir/clstr_sort_by.pl < miRNA.clstr > miRNA.clstr.s mv miRNA.clstr.s miRNA.clstr $CD_HIT_dir/usecases/miRNA-seq/clstr_2_miRNA-table.pl -i miRNA.clstr -o miRNA.txt EOD }; ############################################################################################## ########## END 1; cdhit-4.8.1/usecases/miRNA-seq/clstr_2_miRNA-table.pl000077500000000000000000000030551343604040700222150ustar00rootroot00000000000000#!/usr/bin/perl # use Getopt::Std; getopts("i:s:S:o:f:j:",\%opts); my $input = $opts{i}; $input = "Cluster.clstr" unless $input; my $output = $opts{o}; $output = "Cluster.txt" unless ($output); my ($i, $j, $k, $str, $cmd, $ll); my %count = (); my %count_t = (); my %count_s = (); my $Cluster_2_ann = (); # >4360486|k__Bacteria;.p__Firmicutes;.c__Clostridia;.o__Clostridiales;.f__Lachnospiraceae;.g__Roseburia;.s__faecis open(TMP, $input) || die "can not open $input"; my $Cluster=0; while($ll=){ if ($ll =~ /^>/) { $Cluster++; } else { chop($ll); if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { my $id = $2; if ($id =~ /^Sample\|([^\|]+)\|/) { $sample_id = $1; $sample_id{$sample_id}=1; $count{$Cluster}{$sample_id}++; $count_t{$Cluster}++; $count_s{$sample_id}++; } else { $Cluster_2_ann{$Cluster} .= "$id\t"; } } else { die "format error $ll"; } } } close(TMP); my @sample_ids = sort keys %sample_id; open(OUT1, "> $output") || die "can not write $output"; print OUT1 "Cluster"; foreach $sample_id (@sample_ids){ print OUT1 "\t$sample_id"; } #print OUT1 "\tTotal\n"; print OUT1 "\tAnnotation\tSpike\n"; for ($i=1; $i<=$Cluster; $i++){ $ann = "None"; if ($Cluster_2_ann{$i}) { $ann = $Cluster_2_ann{$i}; } print OUT1 "Cluster$i"; foreach $sample_id (@sample_ids){ $k = $count{$i}{$sample_id}? $count{$i}{$sample_id} : 0; print OUT1 "\t$k"; } #print OUT1 "\t$count_t{$i}"; print OUT1 "\t$ann\n"; } close(OUT1); cdhit-4.8.1/usecases/miRNA-seq/filter-small-cluster.pl000077500000000000000000000034671343604040700226130ustar00rootroot00000000000000#!/usr/bin/perl use Getopt::Std; my $script_name = $0; my $script_dir = $0; $script_dir =~ s/[^\/]+$//; chop($script_dir); $script_dir = "./" unless ($script_dir); getopts("i:s:o:f:c:",\%opts); die usage() unless ($opts{i} and $opts{s} and $opts{o} and $opts{f}); my $input = $opts{i}; ## nr.clstr my $fa = $opts{s}; ## R1.fa my $output = $opts{o}; ## nr-filtered.clstr my $output_fa = $opts{f}; ## nr-filtered my $cutoff = $opts{c}; $cutoff = 1 unless ($cutoff); my ($i, $j, $k, $str, $cmd, $ll); open(TMP, $input) || die "can not open $input"; open(OUT, "> $output") || die "can not write to $output"; $no = 0; $clstr = ""; $rep = ""; my %good_ids = (); while($ll=){ if ($ll =~ /^>/) { if ($no > $cutoff) { print OUT $clstr; $good_ids{$rep}=1; } $clstr = $ll; $no = 0; } else { $clstr .= $ll; chop($ll); if ($ll =~ /\*$/) { $rep = ""; if ($ll =~ /\d+(aa|nt), >(.+)\.\.\./) { $rep = $2; } else { die "format error $ll"; } } $no++; } } if ($no > $cutoff) { print OUT $clstr; $good_ids{$rep}=1; } close(OUT); close(TMP); open(TMP, $fa) || die "can not open $fa"; open(OUT, ">$output_fa") || die "can not write to $output_fa"; my $flag = 0; while($ll = ) { if ($ll =~ /^>/) { $gi = substr($ll,1); chop($gi); $gi =~ s/\s.+$//; $flag = ( $good_ids{$gi} ) ? 1 : 0; } print OUT $ll if ($flag); } close(TMP); close(OUT); sub usage { <