summaryrefslogtreecommitdiffstats
path: root/perl_checker.src
diff options
context:
space:
mode:
Diffstat (limited to 'perl_checker.src')
-rw-r--r--perl_checker.src/.cvsignore1
-rw-r--r--perl_checker.src/Makefile7
-rw-r--r--perl_checker.src/lexer.mll2
-rw-r--r--perl_checker.src/parser.mly409
-rw-r--r--perl_checker.src/perl_checker.ml30
5 files changed, 253 insertions, 196 deletions
diff --git a/perl_checker.src/.cvsignore b/perl_checker.src/.cvsignore
index fe1e303..9d76706 100644
--- a/perl_checker.src/.cvsignore
+++ b/perl_checker.src/.cvsignore
@@ -6,3 +6,4 @@ gmon.out
*.cmo
*.cmx
parser.ml
+parser.output \ No newline at end of file
diff --git a/perl_checker.src/Makefile b/perl_checker.src/Makefile
index fcabe3c..1c73153 100644
--- a/perl_checker.src/Makefile
+++ b/perl_checker.src/Makefile
@@ -3,14 +3,13 @@ CSLC = ocamlc
CSLOPT = ocamlopt
CSLDEP = ocamldep
CSLLEX = ocamllex
-CSLYACC = ocamlyacc
+CSLYACC = ocamlyacc -v
CSLFLAGS = -w A -g
CSLOPTFLAGS =
LEX_FILES = $(wildcard *.mll)
YACC_FILES = $(wildcard *.mly)
-TMP_MLFILES = $(YACC_FILES:%.mly=%.ml) $(LEX_FILES:%.mll=%.ml)
-TMP_MLIFILES = $(YACC_FILES:%.mly=%.mli)
+TMP_FILES = $(YACC_FILES:%.mly=%.mli) $(YACC_FILES:%.mly=%.output) $(YACC_FILES:%.mly=%.ml) $(LEX_FILES:%.mll=%.ml)
ALL_PROGS = perl_checker_debug perl_checker
@@ -61,7 +60,7 @@ $(PROG_OBJX_WITH_CMI): %.cmx: %.cmi
$(CSLC) $(CSLFLAGS) -c $<
clean:
- rm -f $(ALL_PROGS) *~ *.o *.cm[iox] $(TMP_MLIFILES) $(TMP_MLFILES) .depend .compiling TAGS gmon.out ocamlprof.dump
+ rm -f $(ALL_PROGS) *~ *.o *.cm[iox] $(TMP_FILES) .depend .compiling TAGS gmon.out ocamlprof.dump
tags:
ocamltags *.ml
diff --git a/perl_checker.src/lexer.mll b/perl_checker.src/lexer.mll
index 49f5102..6abbbc2 100644
--- a/perl_checker.src/lexer.mll
+++ b/perl_checker.src/lexer.mll
@@ -112,7 +112,7 @@ rule token = parse
| space+ {
(* propagate not_ok_for_match when it was set by the previous token *)
if lexeme_start lexbuf = !not_ok_for_match then not_ok_for_match := lexeme_end lexbuf;
- (*SPACE(pos lexbuf) *) token lexbuf
+ (*SPACE(pos lexbuf) *) token lexbuf
}
| '#' [^ '\n']* { (*COMMENT(lexeme lexbuf, pos lexbuf)*) token lexbuf }
diff --git a/perl_checker.src/parser.mly b/perl_checker.src/parser.mly
index 37ec3ce..0157714 100644
--- a/perl_checker.src/parser.mly
+++ b/perl_checker.src/parser.mly
@@ -2,8 +2,12 @@
open Types
open Common
- let parse_error msg =
- failwith (Info.pos2sfull_current (Parsing.symbol_start()) (Parsing.symbol_end()) ^ msg)
+ let die msg =
+ failwith (Info.pos2sfull_current (Parsing.symbol_start()) (Parsing.symbol_end()) ^ msg)
+
+ let parse_error msg = die msg
+
+ let warn msg = if false then prerr_endline msg
let to_Ident = function
| BAREWORD(name, pos) -> Ident(I_raw, None, name, pos)
@@ -99,199 +103,254 @@
%%
-prog: lineseq EOF { "" }
-
-block: BRACKET lineseq BRACKET_END { $2 }
+prog: lines EOF { "" }
-lineseq: /* A collection of "lines" in the program */
-| {[]}
-| decl lineseq {[]}
-| line {[]}
-| LABEL lineseq {[]}
-| line {[]}
+lines: /* A collection of "lines" in the program */
+| {()}
+| sideff {()}
+| line lines {()}
line:
-| if_then_else lineseq { [] }
-| loop lineseq { [] }
-| SEMI_COLON lineseq { [] }
-| sideff SEMI_COLON lineseq { [] }
-
-| sideff { [] }
-
+| decl {()}
+| if_then_else {()}
+| loop {()}
+| LABEL {()}
+| SEMI_COLON {()}
+| sideff SEMI_COLON {()}
+| BRACKET lines BRACKET_END {()}
if_then_else: /* Real conditional expressions */
-| IF PAREN expr PAREN_END block elsif else_ {[]}
-| UNLESS PAREN expr PAREN_END block elsif else_ {[]}
+| IF PAREN expr PAREN_END BRACKET lines BRACKET_END elsif else_ {()}
+| UNLESS PAREN expr PAREN_END BRACKET lines BRACKET_END elsif else_ {()}
elsif:
-| { [] }
-| ELSIF PAREN expr PAREN_END block elsif { [ $3, $5 ] @ $6 }
+| {()}
+| ELSIF PAREN expr PAREN_END BRACKET lines BRACKET_END elsif {()}
else_:
-| { None }
-| ELSE block { Some $2 }
+| { () }
+| ELSE BRACKET lines BRACKET_END { () }
loop:
-| WHILE PAREN expr_or_empty PAREN_END block cont {[]}
-| UNTIL PAREN expr PAREN_END block cont {[]}
-| FOR MY SCALAR_IDENT PAREN expr PAREN_END block cont {[]}
-| FOR SCALAR_IDENT PAREN expr PAREN_END block cont {[]}
-| FOR PAREN expr PAREN_END block cont {[]}
-| FOR PAREN expr_or_empty SEMI_COLON expr_or_empty SEMI_COLON expr_or_empty PAREN_END block {[]}
-| block cont {[]} /* a block is a loop that happens once */
+| WHILE PAREN expr PAREN_END BRACKET lines BRACKET_END cont {()}
+| UNTIL PAREN expr PAREN_END BRACKET lines BRACKET_END cont {()}
+| FOR MY SCALAR_IDENT PAREN expr PAREN_END BRACKET lines BRACKET_END cont {()}
+| FOR SCALAR_IDENT PAREN expr PAREN_END BRACKET lines BRACKET_END cont {()}
+| FOR PAREN expr PAREN_END BRACKET lines BRACKET_END cont {()}
+| FOR PAREN expr_or_empty SEMI_COLON expr_or_empty SEMI_COLON expr_or_empty PAREN_END BRACKET lines BRACKET_END {()}
cont: /* Continue blocks */
-| {[]}
-| CONTINUE block {[]}
+| {()}
+| CONTINUE BRACKET lines BRACKET_END {()}
sideff: /* An expression which may have a side-effect */
-| error { [] }
-| expr { $1 }
-| expr IF expr { [ (*Binary("if", $1, $3)*) ] }
-| expr UNLESS expr { [ (*Binary("unless", $1, $3)*) ] }
-| expr WHILE expr { [ (*Binary("while", $1, $3)*) ] }
-| expr UNTIL expr { [ (*Binary("until", $1, $3)*) ] }
-| expr FOR expr { [ (*Binary($2, $1, $3)*) ] }
+| error {()}
+| expr {()}
+| expr IF expr {()}
+| expr UNLESS expr {()}
+| expr WHILE expr {()}
+| expr UNTIL expr {()}
+| expr FOR expr {()}
decl:
-| FORMAT bareword_or_empty ASSIGN {[]}
-| SUB word subbody {[]}
-| FUNC_DECL_WITH_PROTO subbody {[]}
-| PACKAGE word SEMI_COLON {[]}
-| BEGIN block {[]}
-| END block {[]}
-| USE word_or_empty revision_or_empty listexpr SEMI_COLON {[]}
-
-formname: {[]} | BAREWORD {[]}
-subbody: block { $1 } | SEMI_COLON {[]}
-
+| FORMAT BAREWORD ASSIGN {()}
+| FORMAT ASSIGN {()}
+| func_decl SEMI_COLON {()}
+| func_decl BRACKET lines BRACKET_END {()}
+| func_decl BRACKET BRACKET expr BRACKET_END BRACKET_END {()}
+| func_decl BRACKET BRACKET expr BRACKET_END SEMI_COLON BRACKET_END {()}
+| PACKAGE word SEMI_COLON {()}
+| BEGIN BRACKET lines BRACKET_END {()}
+| END BRACKET lines BRACKET_END {()}
+| use {()}
+
+use:
+| use_word listexpr SEMI_COLON {()}
+
+use_word:
+| use_revision word COLON {()}
+| use_revision word {()}
+| use_revision {()}
+
+use_revision:
+| USE REVISION COLON {()}
+| USE REVISION {()}
+| USE {()}
+
+func_decl:
+| SUB word {()}
+| FUNC_DECL_WITH_PROTO {()}
listexpr: /* Basic list expressions */
-| %prec PREC_LOW {[]}
-| argexpr %prec PREC_LOW {[]}
+| %prec PREC_LOW {()}
+| argexpr %prec PREC_LOW {()}
expr: /* Ordinary expressions; logical combinations */
-| expr AND expr {[]}
-| expr OR expr {[]}
-| argexpr %prec PREC_LOW {[]}
+| expr AND expr {()}
+| expr OR expr {()}
+| argexpr %prec PREC_LOW {()}
argexpr: /* Expressions are a list of terms joined by commas */
-| argexpr comma {[]}
-| argexpr comma term {[]}
-| term %prec PREC_LOW {[]}
+| argexpr comma {()}
+| argexpr comma term {()}
+| argexpr comma BRACKET expr BRACKET_END {()}
+| term %prec PREC_LOW {()}
+/********************************************************************************/
term:
-| term binop term {[]}
-| termunop {[]}
-| anonymous {[]}
-| termdo {[]}
-| term QUESTION_MARK term COLON term {[]}
-| REF term {[]} /* \$x, \@y, \%z */
-| MY myterm %prec UNIOP {[]}
-| LOCAL term %prec UNIOP {[]}
-| PAREN expr_or_empty PAREN_END {[]}
-
-| variable {[]}
-
-| subscripted {[]}
-
-| PAREN expr_or_empty PAREN_END ARRAYREF expr ARRAYREF_END {[]} /* list slice */
-| array ARRAYREF expr ARRAYREF_END {[]} /* array slice */
-| array BRACKET expr BRACKET_END {[]} /* @hash{@keys} */
+| term binop term {()}
+| term binop BRACKET expr BRACKET_END {()}
+| term LT term {()}
+| term LT BRACKET expr BRACKET_END {()}
+| term GT term {()}
+| term GT BRACKET expr BRACKET_END {()}
+
+/* Unary operators and terms */
+| MINUS term %prec UNARY_MINUS {()}
+| TIGHT_NOT term {()}
+| BIT_NEG term {()}
+| INCR term {()}
+| DECR term {()}
+| term INCR {()}
+| term DECR {()}
+
+| NOT argexpr {()}
+
+
+/* Constructors for anonymous data */
+| arrayref {()} /* [ 1, 2 ] */
+| BRACKET BRACKET_END {()} /* empty hash */
+| BRACKET_HASHREF expr_or_empty BRACKET_END %prec PAREN {()} /* { foo => "Bar" } */
+| SUB BRACKET lines BRACKET_END %prec PAREN {()}
+
+| termdo {()}
+| term question_mark_ colon_ {()}
+| REF term {()} /* \$x, \@y, \%z */
+| REF BRACKET expr BRACKET_END {()} /* \$x, \@y, \%z */
+| my %prec UNIOP {()}
+| LOCAL term %prec UNIOP {()}
+
+| parenthesized {()} /* (1, 2) */
+| parenthesized arrayref {()} /* list slice */
+
+| variable {()}
+
+| subscripted {()}
+
+| array arrayref {()} /* array slice */
+| array BRACKET expr BRACKET_END {()} /* @hash{@keys} */
+
+
+/* function_calls */
+| func parenthesized {()} /* &foo(@args) */
+| word argexpr {()} /* foo(@args) */
+| word BRACKET lines BRACKET_END listexpr %prec LSTOP {()} /* map { foo } @bar */
+| word BRACKET BRACKET expr BRACKET_END BRACKET_END listexpr %prec LSTOP {()} /* map { foo } @bar */
+| word BRACKET BRACKET expr BRACKET_END SEMI_COLON BRACKET_END listexpr %prec LSTOP {()} /* map { foo } @bar */
+
+| term ARROW word_or_scalar parenthesized {warn "term->word_or_scalar(expr_or_empty) -> function_call"} /* $foo->bar(list) */
+| term ARROW word_or_scalar {warn "term->word_or_scalar -> function_call"} /* $foo->bar */
+
+| NEW word listexpr {()} /* new Class @args */
+| print listexpr {()}
+
+| word {()}
+
+| NUM {()}
+| STRING {()}
+| REVISION {()}
+| COMMAND_STRING {()}
+| QUOTEWORDS {()}
+| HERE_DOC {()}
+| PATTERN {()}
+| PATTERN_SUBST {()}
+| diamond {()}
+
+diamond:
+| LT GT {()}
+| LT term GT {()}
+
+print:
+| PRINT bareword COLON {()}
+| PRINT bareword {()} /* print FH @args */
+| PRINT scalar COLON {()}
+| PRINT scalar {()} /* print $fh @args */
+| PRINT {()}
+
+| PRINT bareword BRACKET {die "use parentheses around print"}
-| function_call {[]}
-
-| word {[]}
-| value {[]}
-
-function_call:
-| func PAREN expr_or_empty PAREN_END {[]} /* &foo(@args) */
-| word argexpr {[]} /* foo(@args) */
-| word block listexpr %prec LSTOP {[]} /* map { foo } @bar */
-
-| term ARROW word_or_scalar PAREN expr_or_empty PAREN_END {[]} /* $foo->bar(list) */
-| term ARROW word_or_scalar {[]} /* $foo->bar */
-
-| NEW word listexpr {[]} /* new Class @args */
-| PRINT argexpr {[]} /* print $fh @args */
-| PRINT word_or_scalar argexpr {[]} /* print $fh @args */
+subscripted: /* Some kind of subscripted expression */
+| variable PKG_SCOPE bracket_subscript {()} /* *main::{something} */
+| scalar bracket_subscript {()} /* $foo{bar} */
+| scalar arrayref {()} /* $array[$element] */
+| term ARROW bracket_subscript {()} /* somehref->{bar} */
+| term ARROW arrayref {()} /* somearef->[$element] */
+| term ARROW parenthesized {()} /* $subref->(@args) */
+| subscripted bracket_subscript {()} /* $foo->[bar]{baz} */
+| subscripted arrayref {()} /* $foo->[$bar][$baz] */
+| subscripted parenthesized {()} /* $foo->{bar}(@args) */
+
+arrayref:
+| arrayref_start ARRAYREF_END {()}
+| arrayref_start expr ARRAYREF_END {()}
+| arrayref_start BRACKET expr BRACKET_END ARRAYREF_END {()}
+parenthesized:
+| parenthesized_start PAREN_END {()}
+| parenthesized_start expr PAREN_END {()}
+| parenthesized_start BRACKET expr BRACKET_END PAREN_END {()}
+
+arrayref_start:
+| ARRAYREF {()}
+| arrayref_start expr comma {()}
+| arrayref_start BRACKET expr BRACKET_END comma {()}
+parenthesized_start:
+| PAREN {()}
+| parenthesized_start expr comma {()}
+| parenthesized_start BRACKET expr BRACKET_END comma {()}
+
+my: /* Things that can be "my"'d */
+| MY parenthesized {()}
+| MY scalar {()}
+| MY hash {()}
+| MY array {()}
termdo: /* Things called with "do" */
-| DO term %prec UNIOP {[]} /* do $filename */
-| DO block %prec PAREN {[]} /* do { code */
-
-termunop: /* Unary operators and terms */
-| MINUS term %prec UNARY_MINUS {[]}
-| TIGHT_NOT term {[]}
-| BIT_NEG term {[]}
-| INCR term {[]}
-| DECR term {[]}
-| term INCR {[]}
-| term DECR {[]}
-
-| NOT argexpr {[]}
-
-myterm: /* Things that can be "my"'d */
-| PAREN expr_or_empty PAREN_END {[]}
-| scalar {[]}
-| hash {[]}
-| array {[]}
+| DO term %prec UNIOP {()} /* do $filename */
+| DO BRACKET lines BRACKET_END %prec PAREN {()} /* do { code */
-subscripted: /* Some kind of subscripted expression */
-| variable PKG_SCOPE bracket_subscript {[]} /* *main::{something} */
-| scalar bracket_subscript {[]} /* $foo{bar} */
-| scalar ARRAYREF expr ARRAYREF_END {[]} /* $array[$element] */
-| term ARROW bracket_subscript {[]} /* somehref->{bar} */
-| term ARROW ARRAYREF expr ARRAYREF_END {[]} /* somearef->[$element] */
-| term ARROW PAREN expr_or_empty PAREN_END {[]} /* $subref->(@args) */
-| subscripted bracket_subscript {[]} /* $foo->[bar]{baz;} */
-| subscripted ARRAYREF expr ARRAYREF_END {[]} /* $foo->[$bar][$baz] */
-| subscripted PAREN expr_or_empty PAREN_END {[]} /* $foo->{bar}(@args) */
+question_mark_:
+| QUESTION_MARK term {()}
+| QUESTION_MARK BRACKET expr BRACKET_END {()}
+colon_:
+| COLON term {()}
+| COLON BRACKET expr BRACKET_END {()}
bracket_subscript:
-| BRACKET expr BRACKET_END {[]}
-| COMPACT_HASH_SUBSCRIPT {[]}
-
-anonymous: /* Constructors for anonymous data */
-| ARRAYREF expr_or_empty ARRAYREF_END {[]}
-| BRACKET expr_or_empty BRACKET_END %prec PAREN {[]} /* { foo => "Bar" } */
-| BRACKET_HASHREF expr_or_empty BRACKET_END %prec PAREN {[]} /* { foo => "Bar" } */
-| SUB block %prec PAREN {[]}
+| BRACKET expr BRACKET_END {()}
+| COMPACT_HASH_SUBSCRIPT {()}
binop:
-| ASSIGN {[]}
-| POWER {[]}
-| MULT {[]} | DIVISION {[]} | MODULO {[]} | REPLICATE {[]}
-| PLUS {[]} | MINUS {[]} | CONCAT {[]}
-| BIT_SHIFT_LEFT {[]} | BIT_SHIFT_RIGHT {[]}
-| LT {[]} | GT {[]} | COMPARE_OP {[]}
-| EQ_OP {[]}
-| BIT_AND {[]}
-| BIT_OR {[]} | BIT_XOR {[]}
-| DOTDOT {[]} | DOTDOTDOT {[]}
-| AND_TIGHT {[]}
-| OR_TIGHT {[]} | XOR {[]}
-| PATTERN_MATCH {[]} | PATTERN_MATCH_NOT {[]}
-
-value:
-| NUM {[]}
-| STRING {[]}
-| REVISION {[]}
-| COMMAND_STRING {[]}
-| QUOTEWORDS {[]}
-| HERE_DOC {[]}
-| PATTERN {[]}
-| PATTERN_SUBST {[]}
-| LT GT {[]}
-| LT term GT {[]}
+| ASSIGN {()}
+| POWER {()}
+| MULT {()} | DIVISION {()} | MODULO {()} | REPLICATE {()}
+| PLUS {()} | MINUS {()} | CONCAT {()}
+| BIT_SHIFT_LEFT {()} | BIT_SHIFT_RIGHT {()}
+| COMPARE_OP {()}
+| EQ_OP {()}
+| BIT_AND {()}
+| BIT_OR {()} | BIT_XOR {()}
+| DOTDOT {()} | DOTDOTDOT {()}
+| AND_TIGHT {()}
+| OR_TIGHT {()} | XOR {()}
+| PATTERN_MATCH {()} | PATTERN_MATCH_NOT {()}
variable:
-| scalar %prec PAREN {[]}
-| star %prec PAREN {[]}
-| hash %prec PAREN {[]}
-| array %prec PAREN {[]}
-| arraylen %prec PAREN {[]} /* $#x, $#{ something } */
-| func %prec PAREN {[]} /* &foo; */
+| scalar %prec PAREN {()}
+| star %prec PAREN {()}
+| hash %prec PAREN {()}
+| array %prec PAREN {()}
+| arraylen %prec PAREN {()} /* $#x, $#{ something } */
+| func %prec PAREN {()} /* &foo; */
word:
| bareword { fst $1 }
@@ -301,29 +360,23 @@ word:
| Some s, name, _ -> s ^ "::" ^ name
}
-comma: COMMA {[]} | RIGHT_ARROW {[]}
+comma: COMMA {()} | RIGHT_ARROW {()}
word_or_scalar:
-| bareword { [] }
-| RAW_IDENT { [] }
-| scalar { [] }
-
-block_or_scalar: block {[]} | scalar {[]}
+| word {()}
+| scalar {()}
bareword:
| NEW { "new", $1 }
-| PRINT { "print", $1 }
| FORMAT { "format", $1 }
| BAREWORD { $1 }
-arraylen: ARRAYLEN_IDENT {[]} | ARRAYLEN block_or_scalar {[]}
-scalar: SCALAR_IDENT {[]} | DOLLAR block_or_scalar {[]}
-func: FUNC_IDENT {[]} | AMPERSAND block_or_scalar {[]}
-array: ARRAY_IDENT {[]} | AT block_or_scalar {[]}
-hash: HASH_IDENT {[]} | PERCENT block_or_scalar {[]}
-star: STAR_IDENT {[]} | STAR block_or_scalar {[]}
-
-expr_or_empty: {[]} | expr {[]}
-word_or_empty: {[]} | word {[]}
-bareword_or_empty: {[]} | bareword {[]}
-revision_or_empty: {[]} | REVISION {[]}
+arraylen: ARRAYLEN_IDENT {()} | ARRAYLEN scalar {()} | ARRAYLEN BRACKET lines BRACKET_END {()}
+scalar: SCALAR_IDENT {()} | DOLLAR scalar {()} | DOLLAR BRACKET lines BRACKET_END {()} | DOLLAR BRACKET BRACKET expr BRACKET_END BRACKET_END {()}
+func: FUNC_IDENT {()} | AMPERSAND scalar {()} | AMPERSAND BRACKET lines BRACKET_END {()}
+array: ARRAY_IDENT {()} | AT scalar {()} | AT BRACKET lines BRACKET_END {()}
+hash: HASH_IDENT {()} | PERCENT scalar {()} | PERCENT BRACKET lines BRACKET_END {()}
+star: STAR_IDENT {()} | STAR scalar {()} | STAR BRACKET lines BRACKET_END {()}
+
+expr_or_empty: {()} | expr {()}
+
diff --git a/perl_checker.src/perl_checker.ml b/perl_checker.src/perl_checker.ml
index cc5bb19..fbb3f4d 100644
--- a/perl_checker.src/perl_checker.ml
+++ b/perl_checker.src/perl_checker.ml
@@ -1,18 +1,22 @@
open Types
let _ =
- let file = try Sys.argv.(2) with _ -> try Sys.argv.(1) with _ -> "/tmp/t.pl" in
- let lexbuf = Lexing.from_channel (open_in file) in
- let _ =
+ let args = List.tl (Array.to_list Sys.argv) in
+ List.iter (fun file ->
try
- Info.start_a_new_file file ;
- if false then
- let t = Lexer.lexbuf2list Lexer.token lexbuf in
- let _,_ = t, t in ""
- else
- Parser.prog Lexer.token lexbuf
- with Failure s -> (
- prerr_endline s ;
- exit 1
+ let lexbuf = Lexing.from_channel (open_in file) in
+ let _ =
+ try
+ Info.start_a_new_file file ;
+ if false then
+ let t = Lexer.lexbuf2list Lexer.token lexbuf in
+ let _,_ = t, t in ""
+ else
+ Parser.prog Lexer.token lexbuf
+ with Failure s -> (
+ prerr_endline s ;
+ exit 1
) in
- ()
+ ()
+ with _ -> prerr_endline ("bad file " ^ file)
+ ) args
xK.}X"G`OCщ%dpJTZXeϭ4.<K=آN+/AX1sIls*:WP/rz%h4N5Mb{9"&|\WqҷT;@  0DZnBtϷ!}82_na,dWҝ7HojԚ,ThRۻ)E ?#,N^}* d4d{l E4o1c<1j$up:JOj#4sGW>dG;,D[n8@9b\gZ9cީ,G89Fʤ2mK>M>f1l5G1a5*"n5y/>5*ci>9Vqq4 @A9W}沤8`kt Q)~:, `<'Kحzye\Ò-eDа{"sFU{# Sfj~ s6וJRP̙zѶ|w5 Bbe .*Y˟,sAtZ78'ja ՒoZ=m>O@+o [1fCaA}l)#o0o#Y<ruDP.p_Hh~*ee u m e^l m˓C40L˷EH}\ OSR񥜺վRn> .X<:mgfyQRr5ĪxKCf PSYђ3€Z4GAb\we䜗O$ ThN=NBTF04-.@D݀U%YHabO<(/gf.'naTm ,ΰ$R?sD^q|v\^AB [+<E(3 ;jCnc2Cuo'޽ޑ]g<+#gT=[;qF5ߚv(Ig_-] \NݒARL۴>Zm^J=@/N߇g쐌ep5$yɚfSfT?m]x-Y2.rN(CS_XށzRֻFA3򘜁&z%: `g:k-F6oW׵*|I%vؿ=8jEzfſ@J ˩{MYCt.+v( iR\n˧NYMT<}lApm|-& T;U!ǭil7sT7@!U=1pu-1%"ҏμ-inaCq \ev;MBjGK@,K:H;Ï̀ ݀>[杧CnÐ0:2OԆi@]9@2 k "ԅ}.ķLOMgq*4p"b(x1,X(SIbj%[PRK&+=E찻#&z'{Q vZM0f-hpe̊3M6/|``Qh20o-ݼIkxUS ݸREOs'{GrHPU cj?Yk٫r(-xB:n ]m6;6Z6JkuDwƙl nOD~]Za*W0,)4ѯbG\kK/UOzF#5cD,YdsAL VL$UY},FkKe53NMAvޱN;ZNG)K84@-O -MΦ{޺8š!Kr8ΰ#.wTWIסY9V͇akly43d.9~Liw(?`1(Y+*ʿ4Rl̺ٞA~E@4OJ2 A\)YNȯBXi]]ܬ=rPQs$?['X;n7(B[ ~`DJܒ|Ureq$2Ol~ptt!aHx\pmgvcʛ kó)! !KV1 JԎ:rUǽNbv_0V*>fx:sCcg㶲)/XM997nt̕bۖ^wlɋm{1[ Q",^~/%Krkյ="(^xkr҄l؈ D Q53!%gvESw?ÀuwWLb.I1<˩`Dhu"]Pm{m.(5#t}$|/W!O!;E/Cm8 Y*NtGuIdcO6z(ߜI$)}x+ )d qQ15O#!z&ь-n;KP@A!G6oďRp}oE<;XcFL5Ћ67T 5C+K v 2xߵp#'zEҬ ~dƭt{RzٚAl3Nq^ vWȝvBA6Yu5s,> f~'^ƾzuڵM'/(aoYxϭzb͎12a#m_(1^A鶪kؒU[b105!R6wVٍ_<z]?‹iOZ:30aTƿM\զ|I۔䚟Ro[0ʠnQʐfexF8YLw<+yytbe&q Rx8q0yTp'Ch 䵓v5~9S R@!uxG;)l>JzQ'95!t *y-l|Aʋ2LV$s(Z$<ۋ`c$td=P w /TjzO65S9n[c@A3lثεiE?XOEqFj#;Af%2_ajdCSƸˠ_ޠ@y DMi=L])ak?{zt }~;\ Z`i->RaOqwȘ輶u\Rn3gXTnzy RyP6]V1Ch9-_wqBA< <7{P.TD%vqSװDV #T8GA$|ǡsGVZ$>r_n\P{-*VtdD#Hڝ02{qkv%k%߶@W/ݷ8˰RҬa bseب|֘9Ĝ,~DPg3|>E <@S22?{28/۳}(]Vj/|-_b[Q~#8:,@BQR)<{޿~cvwDH-@b  9D46 A2?IV\6)Ͽ"mAghY@~g'j-Ծz[7<ReLi{rJ[buvى`p]mkՁf >yk3X7nmCA QOPƙ-#|>Lja e *7N6 50F4x\ͷšZiN@. p BZ_~ֶ|;Gzd2BHJDo*Tᐉ> Ir7aKs\YbD>'Vk%t7RsyXLh:+ur(U Wȶ;3vT{*vNCy~X KoW-9kaF ~Ce1@QafIRc-XLtA(";O('VΎh∗+ӽv,_jnRdV6ҮP$_Sj&ZMpk%2%IX)LF"+U*lCH0>5C {iзtV)d ^ 2\>m;K/H*F]af_,ZPu&鴤3,Y8v+9.+>> )٩J֦eY)aV9fHr.gGpWξdJ  evD^YfG$TVzc7au^P(kIPwyG*ؿc7HF*,hE,? 8 wazrrw9ç 2SFca#ddDS nc{P} %'<-1;%\~GV1ڀmpN*]%1,J]!*WH=ɝߝqscƦnB&TVZ{_?ŝg7{Zc`(6 z=ЀjhWBd{ --E3~ x<U}8Yȷ".Ab¤e9b= 7(Ao+Ђ9EkMEiGϊRYnrSVYFDpf [k1!x,ߧ7%쎙SI1qlÆmW {hn lpz؂>o?C`%yhTc\Ea$N `MCP=$8էwm@L?`hHvJT׫v_ӫyg2SvČ2yP XIt5:tpfSo+SɬJ A 61M{A%1|WI ;Uf0GPn^Х;hv ApkIQ wI>g;uFUpQ;@s>lkθ\?Z⁔|4^5ƭsPB!X*o*"&K[g~]4+.U ?#)1Ej f5> LDg-^Q^7>[T=t4z'9bVcK!DVF| a*g & ΀<ڴMohevDh y6OϨ.LY@:TTY NLC]4oVyjrjlg*.1/aNI ֗CnfkLZW"6~UշlT4")J`Suj淤{cl•if<vm %cOYwSs:Q<͖Ž?^|@I;$n*6o7.x櫟2``N$`[?vWt>DIR.qt:FGII/}쀿}ZRm iKt 2`2Ul"N#+l)Gې|۾LsXGaIH>BhWA Z[uRcgz Dj/$U4Mx!t?2Phx{oӾ*]Xd=XiC S Z)9FA+M@4AOiϛHPo{+@Oe$D98sJQD*|:U t 'ܙ~QlT(a션%^mp`lݔ[- 19dԫv,WV|kߘ|,Ck* }ӒHn";1\UUi̭@spEwa3DRd{{4͝7oi[#1vp:Z{+*P[6D<}<~W~V.yecmO u6(N1NRwBzvO] d:l[z^wplgXz?y ].iLyDV00F9޺ͬ%|3gae=n,h<=_Bh7++N B".p'V!QUWJ83vQpyGUc*>+;1;lx&v(8AA]G&ӘUk34NC;l,n4SrxfMUOԞ4M4^|juݕD}igcuoV:Ii$%%0&Z[q۳ nb>^0ǙX[FT-dz:mb3)T8\;-ʘ:(Sڽ SCjyB(%_M(/=}}ֳ{Zs6]{ςaE{9ؠJצǩ2+p A3'*rK-R|t? G5L0H]cocθP:wm`@;}v W{R⪔9=u$9SKTMl⍚7I4Ov6#_orUz7ᤅɢ}Y\B&iEt`ʆ)89=H@wZ4B8=3".{&{|#hi$w='z 9AYH"rTX wף-;Vw~9X@u5i_i2THܠDRAJtO <չUee$_;u*)F[|@1`]UlRTD{ lXI ]>d~0EvhGDK9:)xh/ЗKٺ &l%Z$j5ʠ)^ m󮮌T%i_2.twp"]3ho8"DdP NwȘ,t\z, XRGl+l0%78\I#2>(ikk'r{LHbX'חR$UcTwRVk|n[iZGm4HhCi Zpʬ96w9 ~V JA>F\r{^73b)UơUTm?F;f)Ǟ}|F35ߐ]dG 46~ۡ5!? .-l$sk ֲAHz4؆jf GppW F'ypf.^3UԷ@g KiMƺC&x<7g*&kO!tZ7ε1W`&͘^mZ,)nNKMN_~ׯQwMM]8d^;w$2\_I PX؏y`eߛ+|r⽕TL^v[ ];a{\|N߀avV %'' Lɸ fulNauML$IR`8v-.aO[b` R0+XH02F],@`̶f#Tj] 6ZG3:Ku`8@CBK%A.lc^Q_&j,>X'(كK-(Pe{Ղ7rQdTd=ˤSǛS!9aX@ZP:ȊOX+boL…Dy wo1'T-$[ Q+r\Izu ǁ<([DiT?|@(en*{ty-kQc?|'8`R -VG`Uݾ RypMi?$Au ㇍إnPt ,N235mT&uSqnMO-!} {>:{1Ebc'*u$10mg&t(C 9c [Z]_B@u׈,EFEV)6m"-^y>gnvahJ;Xax"wVEHzaZn! -c]ápd}NE>@X`r5MCa?1Cb!$#P(hU4ݪJTY.Χ8Nv 7gwdϒp0Io[ *00c}1E؃/9?Qm, JYLE<#{3DmRhjdt- R<>X;{+ nVdU5aMN䠰trL݌vgFhub2KAjCRDW՟|JNPd,1 y4x9r6X>F$*< VjڢKϳ}_)r/͌MAb1pXeNk3ÅL.JQ9$x6V djN!uYŁF; D? vM̢4j$}-^ 6-b:8s!+"\5M@6ݾ|X4\xvOL:6[q҉=gnG7==%+AyDyƛ{-h1D~-dpOZڼ1ˀ\E&X~>/?iեvr7ݮ]GP l|?kH|}$z>=J6縈+sp\Tfeӎ.2jĽ'BtBZ^"FO5%:8q MohBpnf`<b!x܀?YnPYYT:@|+;W$FsZ/_~-ߥٟœOQ`C|SZM JUʓH\JZ~"U>!r^/vw!I~}v[7`.Z 4,אÞ@DS֓{b{H\,{N1{AnBlDB9 ML()~m>]1Z0Z5͐G<`gY\J_oyQU >^kD Ko)DG$[iۢ>坸,'P` צsSĠτI(˻ev 1yW㾋vdދTˑ2vِOĥa##M?:w%dKyT)*,{Jva2:ascsE8䮻vQzEKu+){7 0n!gOi:mGdoJfz?pvu${Xd*&f0lsZ'!ؼ̳854há>G D6\^K(`;Nh[E8Wjw_,2 s] ZyLnF[~m9\ .)*BG(Lŵ]kn w4o(Ϣu>^w@t7V0MT;@]NSJ8tpXm(zJ Wyli]N?ZgX_5%6VnX(83Js7"lxWy1~E)<\}6mN幱vx~Z3 I{<Be,dmrno!$m\)jz{7Ne\hXΕp%| ^y ,I尥 G}xr{ Ty,c=;9/+[ES D$/ɕEeFgmU|Γ~4"R$(µj2DZ<|p#'O4ca4TTjyCE'Y #ÑW}^ Y'w;:5ix'l/G2R55*a1^tAX,s-4lHۀ')&w.V閩lƕȧȐZaj?c_b`OKxLRlw+Mf,Q4omfQ]0T| ?s5/x)s큡a/xVa miuA;I*^_zv>l3vs]d$&T$ZI= !À:'!tdG/HlƜշ x UT_KS켝[ nspzJ^eLG|IZWiR7zn0;^um1QEnT=Ic6ccL dzQm$o` P7yRFX#ruMn&b PSG8߂D[&Un8Q/3Qr_. T3RCZ0Y@eujX)ր}T* wJ[;JN'I@Y̼am6?AM=~#_ NJb[kufik@Zeuv#xy^G Nփؖ*`ۨJuĉ2wE>JHS?+2mq7 ?=B  ?iQVH}%v?.Z뛌{ʯԱC;SɝLO*x) .y!(k b5T HWh@%A#D5ڒyF}2V=dG:0!a_t2C ׄM> D{U=m]GiJSX: %hՅ}QYvHVQCfL5IUǪsqA0N5fߑİP,gUc,j xw-Ǹ{F+;I!B Zog`3VsiTѣ1d(U ,Yo%'lLg~v m梊J0 qB5> N-KPcB"E J_۸{*;yvFٙdc-!DЍNX -fsc/$t)Q ^7!I+>5VDEiOАL!JyVtѕ^Rt03=5Q'_[}xKVnߗ+ /A{U3 ؇ѤWyMNhO`f2@ ꬵįgtbk | >rV1N}t8agn"`CPѤvi@ A5)]9e0M|f%T^_!QGW|0#s 'h(?u-{Z.j(8꯾ƨд8WÑ(C^`8wKӬ3X)< 8.+AZC5 {7`Ψsɣe^$y*}{@0C!BY8e,ix0>s#DZ)x>i(L#t㸘F3ݗylyziΥ)ҺCI5-ʣo-wtS(^?hcs[Ƙ4Bg1AJ&3xi _Ak _mڋ9&O>ے%VpJY8v03dF/BΞxQ_"dOr[}D\8.j&I잨GRCV9 !ypQ%;Ǯ,[NʇbZR>eWֿ8N* :Kjl{fj+ӫX jh?FZߵUlǕ⧝~Cٓt !$'Fٍ V t=S *G@O3; EGS+ > j;|Fj%L_oSfe4v?xU#ɂDZi [7wv3kVA$cW/I+ k.ʹ,i؍p+RVfչ!I*-/\GՏƣ凐^}ci awDHƥޣlOY :H^y/Og3 :†{I/yFVtظzAvD*M?|96^s zO?r 0LHe}NAPr< wF笶Ҏ0gɝRz$ 4#;q fYΐ ;nX\oj#PGе_b0,M>ђ tpL-a6݇{=3Z%?}I)pC&",Ay}ȜL64fW]9dۑ*1<xśiPphν3#KH/pr )vc{X*.cI/lvE`[eJ^Junw$t;z$t3Gb6 we+:?|%2U=7`H(KMW嶯=e/@2FCFy FV3WAt33cz^ EV{F4e8ˍ3GbvfeHFPkaʔ07л"%C{03B ",+~7?֡s_Tm,Ks!`sv;ėF/=(ݚg>h/ψOsOI%h?2b&> ; R`K,o)84r`IHL$=M'r'T)PÎJ=M0LAf/k 統?нeSM?Rt;Q!)lRؓ/<|%>Jl`սc~Ⱦ5PiAo'Ihf|Sf2zI =Eb_0k9կmcvnYǭYdbT-~]EBjdMb \IFR gfkRx V- A<:#p%$t$ab fYό+g](m 2c݉՚qy\lT◶rZu;B{ڀ320N"; `GUv o^涨:Vf/-7fk4xJc7YTSj½!o5LyZ$dل_60Y&nXCnQ鷺 ~4Q~Ovc knxk TO-wyɐ{ A6+f'nXp\|ey-T{O@O?tlaYt:UO69y,}]װ\-?B{DG`Ͽ]&8(2IF35~w?>=TT*" f쫹/r-lϳ"3jtMrk) Q,RJn*WmQ3f[s]5苚;6' mSlTe6%F1Ą5X^KǎDc˾A9+:hkp)ۛ2Mpq>quD:S.3`bBf.<9A ska#v0ʟ@ @,U2A Lg%K DŽ_2icoaƫ32g( "ۏ܊Dtcf2A>!Sq&7 dy`?x{<ݥ篼fo" ;F1Q&C$pPpjS8db]L%j}m᭫jrE_67|bp7pLǶL%PJ BvʳF`us|)PJz;שiRNFi?qW@H(B`JJ{SVgb\}th<'jZ']<_( "3%Z>AT>O܋&01 ,SFtQid z}Hvf<}AHmvs$ |ؐAɠu8cx3W}O/CAۀJo5Ʀ!(cMF<%>&ӢEVxFRgw4*%ܞ2!w4ȇ{DP"NsF![#v/8R&j!9{}ٽ|Yfӷ,}kZ)kěp[QϧyRZ>hب>ϵY'7nTܩN8[xmn$#~au騲~ˊՎ-g eI\r\ /'S)|6.!)ȣ.j4r[?H!/CKjQ72;{/W%Q;*1U7:r6- +ՇA#m$#3_y>5U_07FZYgMÜ9T > 5vCq]7Y}"HyW^3"D*5OCHAѬYL&Ё^IGUDrq 8A& oGwn'N[TM(l /[Ɏha9hvX<Q&FH7c[ ] ~T8r0cЯ,[(NW"C2:MYC+ݓI&Ne5\WᣠF皊L,afK8vUj 8SUY.ƮЕi(dwŹe{lZ ]sN|Z 7&ΒCZQ{*3|"UK+#"4/TWTy6fXֽzӉy[h9?T؅XUA,-rc42 r{0q`H[z-wKՇ!3Bjuv!]ӡe*)eB~Ĝ7vT%j8p튌9gBaDvƷ?!%]<@=YصnnQP+>.#Q1j $c g.䒹d 4 %~+iFgLkfb`Z92a6 Gc&p0hIF?jk5!6,_~4 e$yq @h`<XsThχ fs b]\K=>&jKF8 gGlw~od?"o+ꮾr1vV6}D؈g?>Y:O2+UjKT*=xy(4by };`{ c\MΩb^ϰ[O=SKQ&mO;SDfh.\KOc 'PE䤸5R]?|wpHmaң[tJNEgߊڗ+O]Ϟge"޺ ž绝*@.b5Q;hGԙu9'@[)bB)I]L1^ QIZ+~,O _uoC9sOw7&80VO[-!*C@yغ!{Jl uxr 7 }pȕ f}y Hؕ}8'T~.b41{\X̅yqzHZ!],zT S9U0䵞s1'#fۇaئ!]ufYML4I'1ͼӡ'=Ư],-eܭqNiC $ ̇}pf+c{I.Pve%~z+H| @"i@ٶz\!d Ov^vfNa +q>2pZcqhwd2jg<@k.ln✢>('g.9?xN?x x϶¶s FDi>P!Uuop.g6>ypʑ-b+A09r(;+# '(Rگ햺 ;!>/D 6Qie]}~R@_n9E1ΊM}7LIk1 MAQ25}HV$Ÿa+pƧo6<iߑ+V4qsU>Ņ}6LiOM* NXsS쵚sIR-2VJ ؛6@_d5@O.{Pp19g[`%nT|yTԬN54TIMgڞ$_FLm+BCA|ǐ>=R-R/l}b@Õwr Waa 28^HG&G{iv jǥP9LtH9 Y cd92îRc~ ?BEmUOhFO_*9ލ=On j_V]I__l¨DB"+6WTNXcU^$`E@Dc^ ȊQ[6/9Qظ ݝe5`ߦH"WM1' h5͋s-}Ie1u4Gt8Y%AX5ƀujī#愲HoN`epbNj6N1ANt0Wc2_:?Ԩ1zcj-wjLv V0Rc4],dXp+M5K :#6Cs#z`q[VxRXÇ3RWE^r@'D#s^)Ԑ kq}|6Q0k&Q N\p&66;2 'jlcN؂ڌ3%0|~ַWw|N!]c0U^ w `)XF5+gSEsRdX9079~ ހU%G}[=(D>RcznӪif+Ѿ-0=GZL撾;%óuRdh6ܪ/WqV.m_Vgq8 m< T&t K1=ֲٝ/pKTXGN2Yw!m|yKpHGt?J,稻>^mԗ$æ& Wb\P Z1 4"+*EN5qE 4SE%gSQ4ρTn]^xL X [`AAH9/q>?g".=RZb#,`/#Ka(j4kN(-/qj3'ۗ>Sbd>LF[J1 X& )+DT.䰔_J!-.i]bP Sx۩\Ф(A{̅wKNB{4$$;GKH!-Fߥ.Ev?!ha`xoo8V>"wvɱCg# *">1XrǁD& d+T6>9}if [a-F+eA%^܃uϠ* jnp2d%]oQ`řm43 PS6`1?8BjX-y_B_$ŐTFY߄Рѓ]!2c+" g93<1Nۦ =|0Z*fB }GeKgR,µƍD# 9$R]g9Hg:FZw\WXf$}YY xev@8pZ8G5n5x/҄jGbIOQ dxrJ|F-FN|Y8CLv(+xW}JtZo&Jg`2q1f\6I2(N2I=X҉,-˄y g8x/bD~n}JY@ Tw *g bwNiʌp.LH(!M2D`4:#ՒsB>^ϒ[:T=s^Nam,8T[ -X޸T=~A1홆`}i䌁 6nWH3Tś WVy|停xU+_Ulm&xE j :G3"޽on %6h;z4jj2Um'sG]DǮs5C'x4EcSN);(A+*",+gKQrh#`尦ݲdPlW1)hQ{Cጘ"`ml,/ iysBXZxTCկtf#fc #Nn. w"M}vVySLEhs ϣlCȌE]Z_yAC\rCS'@Ol0q26]YЫl ѣ8KIt,ؓ?:8$DOV0 b8<ۯfgfq@icA4G~JR_j@9ۏHg˝>Tj}kHҳ#}e)nx]]A؞MYP`"?2I֥ށwm*3· h%=Fz # WD NLtDΰ]Cg$>?}@˜"#  O|+Xky栠DHGɭ|M (3!g[%lB۩aT^pˊȦ.q@91Bt'0lί=Wnp <$WQ _B;&2Gf> te{CYuyU2>6"4LW4bb<)~=rPyj,'ԛZEzQ&y/Li#]JHj2ukwXwW;B&ozv;tuR0VY_6:+@m @T̋X v?Zcw$:$a??!ŏ/6߮K)cTr`s z9.W9l,x:C%zJ\*T1΅`1!ol'0 ی!+? [/emzKt Ou4ߠ>3 7}ugr7)Cr,izp/.f_6 ';ް.B}ETĦ< # 6P~!g,-ml ڢ`y9Xagp:";M\bK7ޡ-ɽ Gp̉,-zW:<8ZaL+!von]z|_AiêRBP˧GXm;u~"޻:[vCPQ*ʼn֤ʉ^Q(j_ۡ KJaD\<~ٰ;'ֵ6c5J]:>5ƪ3]Cg][m݁6_u_%(YD_u|ǩ7)/q^oqY C>: U Wps(xa\j`VӂhARĔvtԍ(6盫cVY~j N@h{l&Jئ*-1-D@l*\}E5787dc!Hƿ@v :%PC;T*yH=B7eL]$6`]bo ހC@H ^qIV(N zTTܭ$Zmb^us!ɀg kHt!,cU%oHN;Z ZFU8N8Tx [q [TܣOM~C D0ԩV.Um;2H?$1f,&I&]ƒ]w$s=q,tEz+ċMJ͜}KO aq4XTv|  w9*(AZk3%5+CvfhjhڢL@3]&ώF٦ =] I,,ro̊5S{'Th >3TS!frFw K3]vtDX~)YZprؕם:!%#3dWK8wKEq=z7 ~=-Ⱆ~__r8sDK:jQ9;N$-<ϳ2f8|Eݘø=C# ntμEOu3"hժEa%C\j? g^@k@eG<cGUJq=& [ Imi?6UMwou 2lt?%0U>9"mEr8(?ps3o<]M"[4 ?#KJI4/a>VL j1gAskpoaeql#\͵0&Z#d*M4IP=z4c`aPfL]9lCNp,IgI03y'h>pk;t1t{/ bFw2#󒒐1#hfn X?ʣu+).۩'1'|_#vnL_[4m"Zj/8[KAЕ{j',1hwfbˀ?-ա"SEE2A/*[й~rrd-8*ltQ0!!i K2ZU~\lj C:!Y{'Dfְ.mn>"C MwBq4MۿSP83>1^Ȋ皫Y0 it&tnV;Wr@xM.6mJ, FpTJ+VZi ~h{ ]rEQEOQGoQ3&QԄIκQck40tZ'ſ˜ef[&(:g{YnTM3I>%`L${txcӗ|05ff0gI2 }/AeЌ\V _zH$W7XG5h+uBJSIQ+4yTh:zߣpdEo*2qN$9+Zn&; )M㻘)ypA1{Y5 50G+83 `YKWBV@tq1eT5εMlp01lH[:gCn9;'-VDK͍2 0 = UtǺq)+U'3(udjz~>mvE㇃ErTP8 VĘna zIauf/!rpD (5@rYY5!oFEfX9bV6RʋxG_6t!%/(`RO}1/$3K}1*NI}!jL3҅\%+ [|C E>] Dkb^Ě%:! χ(ޗFNij d9Aag,'6!n*w<}1ᩁ>ěisy,EAIS{˯V?dkҍ$X|HNbF U]?G{ɕ;~zffQ/`2?ѷޣiš>\x%Dd3Yb/>{4Lƪ.&-ZjZ*@"l,!9rfZ-(GcPsMSK9£RӭCԥ@hKBh^'bǘjUF(hW]9-.dz|-,BNih(. m <~=G͗|J!Pvby#hAt'>7,[MGEi/ܣq&,{{Vfff^2cva7ͼLɇ- ,JĬ_8y@V!Lhy-7,L}վ︅m9E`'z=opd( K׾b5{퐗sStGxDMԷ,v3a﫦dX$#o7TyԶ%7oU°M @}o.&.NY)a6NV߇UM5+dAU)̒N%be0wѳ;Kd;RKٲjqm+0iӊ£ZqW$(SP5Ưʦxs8-aOB}?Lm}yH^ݜN>$7=Ex-ߑ&# (p%S D>#'Yn|H(8>)Ω ƚRƕsZnߍߪɨZtwjy}! ܨ$k<287Nͪ-Uem2rACl2D-]6H5q{qוߜJAץyTs4%՟tIJy7T?.& 310p#93C+XTUxyF@4x2QUE1XsH EL'tit>rw?RuzPYJn9% c/P\t]0e23bӄ}'3^畈jeEnokΜBڲ/jLd>rvfpj~WǛ|UT5$"*t5'@*!0*믲i1WlCjhn?B-uu7dW~%sߊu:.j6 *{4#Yn@|SpgSk3 YMT1|lQ!4kNPbZѮ<1}qKKd&ievd`eNȁ2b?i{7n!xW-(nK4Pa ,?Y^q։4k!htSOY |TF rFJǷܘ.Vrq i -FhWK׫vaۋhR0z5G[ L30g#y.6S`kq,*!>uM^h=WN݂ Δc:vAT=M[h*|vıAU;&;\H3LJD|7,S0f59]+lcmI!te*1 `ӫ#z837%t% 7K*ѩΨ?8C ǁz'ʖԻĿe=":oDq<1E kN >4 |Sц-K.s7̫y 6gs@8S?8LFe|Ij Iv3t ®)hQxEƠrBF'f,bh,K8K5{g=bϲ=e)[;]`"Kdӌu%݂ثn}G/F *{p]I ca  hP@º_3+ i՟_7qʽ3ls.*y|UX@3;d>ߑ*1~h>&=ai**̳.e՞W.I|DפmyM!y 9]4} X F4e/B~ ,O4<ݽۄ7=|ן(<_xE(>y:f:k;>hנ]Ku!i,JG>7VUVsC+悡NEL~MJg*s@~=?٫l߆*=l.`+H?hkL PX6y ކtHN5z6daS={HKZ*4tzϦFjQ|֯LU)jX7bm݈ۤų#Ǹ-+5u)b)++°8ї(%vJFf }sk8:<&qē?Q=aKFv~Ij $f!_[DwxGMȊ͡<=Ii!&ŒSry>^+|p~MiZXʗ> "jv@J/E|wHj~`0vTj'wan9}gxm5CޢG䛡`INm~U߆'F}Oĸ:w77#!~?te pws;İ$Hd$ B3NdsܬH:BV&}<A8mے=_l`LT)^Qь DZ78utxM+dӜ Xkשjm:CQfSzzy{GrteB\UQZiT@~07KQxsh@&JqVNtbRԣ]q]nvͿ uMprT1}E|NvCwV6*UPxi1 |4&dNÎbreȇ'% .1ݓtUϬn_ߴwtٯV:o+,u [n\ E87^םȉ@_'MZV਀7&gf-P%4WFBtggzKb "諦&5 9tɮz#j3. fL8yO<:pJȱwjH $]DJ`R_P#@PXcovY}O-%yXotQxL- Uj[7Vi,WFDS>yp"g#)fyt̿$TK[IVˍ**( ρ|yIFfd({t9Ǎ=o3GkS(TY&Vnig B.-3eyJa\O`$䎪V2%PEOV *'T-=yYb? x5b?Vq nb.pڇE:vC~Lt[P(S}"J)omV?opA>,`׮.x˿1B)?2mғ\b\ d(2Ma#k/WʣZ}i&6?v'"y~nEAW i| `0v@"z-۔:^Ve!@,p $܄Y E٠g`T @A1SF?GTcyҒUk̆b7]ta DxUy*yΣ'8  1Zuvc1b y31~$$*R9~YJwSUи}v55>dâJCmnݴO^6ȑ d\3-{ nP\!(v 9OÝeнm8Ҡ/oԿz,LJT>ػ"}So hE+bwOS!^,1^1vov"ڄB|{{JȎpvQjVvi6#k6&Nn1\Ň d ndq&8I ±S!޻^'S<^!iAX S2E`lC -zxͷjOE1ck+leCsB0i &YϼZRÙ_!QPylZ7#⧆\١[Etƃ(S]bX!}@ch2밼8qoɗ=pM1I+)8DdPd]pǵEʢɞ$*=lЍaP5GICYn/ M}%y*dkk o'һ=um2 s4B˴['f] ɳ8K] ӷIgYwkI)ql@f<.MA'֫0qb2'oid 7V"BVc}[qofldxZI|4t, )? tUR~Z&";cGן]a)C $!!U !nq y7|+w?̃ѣe\DE{ :E* ?G XX{˩`d * Ե5Fyd;6Hɢaݽ1/̼q`I*gt4~TM4z@JW)",uA:GLqS x|I,Ķ#'a0k= ):}FC_L<礎% #h󇢖 YB{Zr2ӅbG*h{#iC=-2Zsm5¥4a#cD}HòO{^~$$TcF`CWr*d|amzFj)v,Se#iw L/ dr=oc&W[E={Ag{] h権USru-8> qyeU<|/.LD+m9ZSI{pG i- D0Eq]H4@ ο07ZȖjKOe-N=ZkG1g;n\U%Fj(2*C#v`ETO͕ĴR`bQsv{<Ԛ<5"a"a gR,C2ʹäY}&$.GS$R1'&4tf8E:BTԡ+7nV8x^ *$Z-3!wN=׊zwѡ QMyWμ!8UWK>tV⩆5ϻ>y&X~5˒)s_(ObX ZPSᖦc&dtiV>'mJd7} &ހ'(K5lbCsU{c%bYƦm#21R9ԱNKkdDzn=rPP-UBSLɀiޥUi*m+=YLCr{<)3uώye eӮ i8m A0bSP fגֻQVWLnI #7"PP-<)Μ$P^`+[yȓTo^&,?!m{EFT4b|mr@!pMm̱+~މJQY[1q bߧZWK)v`mҙS=mBypr(ṸÙOpj-ώ1`Y@B+e w8L{KAh#{-< SUo*&MOz8'@rEmM"a?*/11o", oH^]l `´Jd^Qf3PWu+hqH(\]%f;v6Ociɸ9 2/<=uImY:BuCqbtn¦*JX9j}d LU0v)qS/ IX qqYNg _ݬf i')C\HFb񊺀"8j} D: `F- I`jp}Jo)mU bLnvj>:`kd%|!c:Tgk%T %Ur*3]#>n6K[Ke.Y 5fq'!Q s0!foTr1І_} R+xr7">i+Nxz;PN=7JxBfMOZ 6椫FQJPyͪ+exBh\rE^Qj>ڜ (TyvD ISJBQީE8\RµGm*m!FvF=d>'/,uj.ѿl^_~ 1vQi\S3gBR$JKR] qVԄ'd_iج!pf볜":ޑ^@~$ʾzfzr$蕴-M1a4mxGtbqOr P,]`v"c]?W]eG%ta?hgQ+EtmeT?올YgyFIOGMrW`Ĉ*2]&vuYL!!C&ar`XvDlsp{hO:w ߳b >S#xNqm]K멖k;̦BDޮ ܔ=7 \et :rls{+ YUeF@l|Cs8V:M\輀cpXʧtqE+>CLC Ejt7 5rq?4*oBSUQ,w\13\ʚc]?Kuˡ/+h* :7y%\7 +zcբ4ﮡd(a]?ɀn+7dp[4Ujvb'SWsm,LgQ08v N!dP!?bN3:(Uq$YSK_Ϟ^'xTz6g֐c3K[ r.()LC("rɌW!0]Y& P|RT o!MŸ;ď9y}/qPv9_Se":`onNq!nm Nc :;jЦn39+l&DS0BrBPR1sK^R/smJVy?=Rdh(瀐XD,QuDUZp(NdyplxU O,]6~Dꎜw94QԊzK !&w)򸠞Wz05260FpY$/R o8@t*^߁MVߙ^z,,&>cȈO.6PS| tk2&&rⷶ3)JcL:qk!\m7 dP/ }t6U3)˚r{,rkJ9> ~. 㳝[Pl7P9_`g~=&La2 /ζ)Kc;nĪvŖFC\ʀb<88 Fd]!. H:{Wmm_?"S@8[NuN!>/jmX!qC4StFt*lEL:n?~λ=8V)(lUlrԺٞeg+ɪB4-@6N'W! %R 6jl*}߰(&_ZSTtDy.$Ix\ |ob,8{Ý:-Wz GmZ"XCx.JA&ҹ7Reo|k@9`W r-Xo3޲&#j02/tME3ܺ BX6\l< ud0^q6sHRCGhVKUkNG@o0&etU_|# u$%m: k" PrhB$%6j O:ƻXT#=kl2ԈU7f(.@~7>g.w~)[HŨ`Dա$+dq 6v c1zriUҀGYeIE<~WA" P:l4zD`cx2DcI߰ & l-9G_͜Nn%T~u|鍥;ӈ3[ߴ}U 1{Z-pOg%J[1uyدE?-*\{`)pz>hnM[gk^#AXcK\/g_I3 ffN%N|1pêI~MHMޜ"}G }176۩Ar2 KF\Pߌ*}5ڄ` ~ &S4tLj Q60Ϳ ߩKkr]\\\oS' C.MX #M VS#ɓ';^[yi-ʳaLJ],g u[EBaG8/ζ& 5 S#.~({&u$8^b̀}bJU/R(Iܣ:Af[ z'z_^m/%ooT%ŕ8&W-7SWiS|.󢥱@[툦 .>*'I![C仄_.Z!^?)bxQQ%aو5$}9I/,ՅTrE$/:z/ʝfuP#Nt|^cVLkGq7Td݊ gڑ%9 ]"2M#|d :nm)zuN8D\& : iߝf0& ׀n2sSC)p=u ^٥g$SZ]t* W[Y!@85hR^}M<2.ӘRJ&:1c~@D=P4P!j1wGz=F;h֞|T8i5cFIbδ|,fs¹}4S3^v!/]놼>j8TܵYm`e s %6W=ýӴ#EK/᷻VcߍM=TO)޵,v. f!u@\NRZr*+K05."Mof g819] xt\VSV L|@lGY85/@8Xapɍ 6+Yn-pO_6LLG$'<{, \@?Rʥ@Nstj 8xOh%IR"Q-;J@-h5dD_I 2:}]FnQL0 )a9{1w,. FfC4y#^ ILqm2=ٓ 5 w~Hhx_)(o󵪬(!k뿉_ (*^: drM*oK9~R7oŬ ׳ن<=})ȣn܀W#I`YpS,7m ԃ[jreurE QPҳ_= HGAcuhb[ԦtchU}4!hN:]]Т⟗r*Ch2a(+_8iy\滆/sF2I0ߚzB܇ 9f|V*~n %2nJdJ<Ng%0JyDͮ7ia̦Gj T`n, m^m_<R (Sߪӓeбcg?E.6:zM q9K6gdv>rRjNIyF$ĊVs6`sM]FHͺ mMf4A;l&o-\nWHjB `Sd6A~ טydE{(6@J2!924hmPohL]Tn1D8WF%§.7&I~7dVBP~eEn\QDIj5_]O^Y]$7G̀X.- i1$g P[6 G4VduUjlh LmoKoa|Q_?of %&+I/%o9L:׺Z"0'8 Tj!R=1*~T }jD=_7G0&N. QIpPNOj)-i+a 7;*JDžO˦:@/F쯡e댲(#QX` 5#-iNի2H>?)xN%`$rxmv믴YEkҢG@=EvJMRlD!qm <Ҁ{t $aS7p4p -MM$jn8$BD1 JCNs`TXn\"שϕtg1hp/QUKuLY0oo@%"*7 )og% ZAi77+> '9åOuM \cs,xu2{6.yA`|)J=>1ꖩ`3 *0Vъ%)8!kS&D/{(aW DفiNV9#gA|KkXO"+Y-#=qb/.E]*3+xW8.w-`!hLQZeBnRCe/l)qKxc$9hj_N5Z |G!AʬNErĢu2Ex:_MD4mX-ŗ ӏe!l*4vV{O?T"v[+ζf~LHq,^0FЈϡ;7HÅUsgUhݤR=ZTIj}lNd>g4"㼫CKZ OגHP\ےo@h>E QJ #HQc)@v`6 gzZcP0VD)"Je~aEI4_w ?n$n{߉|Z5xX!|Egٽ 3!dC=-q,.';JV=;,]qHJª%b6jy[[3#ZVzpJRN+; \+S jYV}}'@ly1UZ?O#7n2l~N*2@ƁVqJF#40nCxD7ϸi#ʔ// nh^pE=h'}-%9D({/ ɭqW#8J@o*,[Ü1JgK1˅a{J/E V$V8"Jx+.HTΤ`]DGdƬpFU*1; qg>FvB )Ch?e@ lX~ˋ,q )R2_J›25Cn9F1N lD ]<&yС`Byœ+57?ls;?>>:1Ն9s  0mBS!3:"]V._ޥc\A_4MdD5a LHZh:_ #&NE^=@1׻/kWܴpAGL*m;fx̸oAM&\#Լ؈o7,z ).٢;0W&}j_S ,|ɕ TׂrЅz |OĒ>r6x=?C܉ {ld ՝.XrX O8ȓZ>t nӓ*>-i7[=Z_ٚU!*H@0Ie^6 ?Ck!McduCFɴc}է1:G!a,|w2']ÂWJ?x 8P2o!@b烍 Onˠe \3q;s" oA<}9?; 08o;?Z-jK]#D]Q/Gim:vG_8)oev{HG~݁BNʊ%:lA{85M-Ėc h '1a WUCaI.|gT?ʆYIk"JnV8Z5 xr@YDdȜ_e@0E\Б:ц#+5:!:z_}  n5 A-DӺ= Ibw,+MRE1=ٳ527uLwkzO=~1?{B*|bY$NY H=uy0a✖<|_]1ZalM 9Ϛ`?b:AG{B-'s >*'j{t`5' 8~rH~ bt:_Vw;u :~Ru qQ̿h3^TEИaZ @R4JzNK=æMSp%2W!y'&PC\oR$ bV N ~A *P-[;ʷ…&F⿡:oF\sM ѻb~ζC 6wjK8`oˈU6ӗh"+cx?w ܓһyny*|8SjeEtp5(*ُc+4Hw;aqX#mdu<XN_9]Xs bƮNqW*3j:Ѯ9A_\r2m82Se=mxeJ snQSXkQϴ-ra Q&Bpb7Te9yߛb,k?ihɮΘc.y#X|Bz*sM]\rMҵLg֟Տa Cq5:$/fR)עLүvAJǎMf-N1TlWG6"[Q)M vp컼 <;TG@*&0k#?Zi_m O.y>H( 5DoeンD8:#TvFieIOC<-I%4ף^LTj_Ǩk_=iZ%?lYw"NeBQ/>rPz@2mAWfڝ}9#J~s+wg4,+PͬQovQ-#7.I5"F2;Ϡ7jV K'Y[.M]$uxK=r:cë=|1(}tdWEihA/n41>5Y[kQw_9WL/FBՏV,Lo~/dm= {('\y-N-Lzu,^xh~-A>"鍜acA[Kɑ0E3bf|5c CB f‹\lfNe]:¯s*aaЩ"rXD.Pf ᳩs+5K޲/p dLѭ{…$Z gƯ (  GL+$B^n`Ku^*Aj+hVLu,_gs}6s1j^DV^rQNszr T']TيՅk?vO,b.$d-Ê%L*yN~vPC|-DяftPL2+ dtex#[ہ@ߎ 8<7!|eJx--Bvw}CVR:AҚZ.?ٟ ݾ9+>sUeW(ؘ;;mPm~*ڳׁB!%zǣtf7'5jaD?y[GqG]m`7S:^|*(4KiVcKL^zBt\MfN$U|ʷIX3MOFi1LksQr <#X'H=Ɣj]m^"M xfQ>9.[}4>ܱ\8-C3`#loK7a8H%_<)zx gFmr0+r~Fy1S8 W ul&hOP|RɜX>|ڻoloN̐X/叭k#ÔQjW,frœHS3!kq P7U(e0l*4e"l0kY% 0j!+XҔ[;n^BPjE17ƻ¿Bm'ylT@_A9ևڨ%`磾pRq,{3ÞuBU$ڧb&i>8_tB(3kGOo+!6Wz{{ v`G)]5~7cwHXU_inn)`B Ϧ׿o@䡄W ȂiY5FL`Ȓk[9~/CSj$雃el21jn;5}Vd!$| (Mxdj,ZSD3v#:]-\_UhBgɣ8njlDBX襹u~+FFㇴPsWztkT͉Z>Tk1 ?@*W7WI.N9,ѣ~+ j `fz'Y%&5e'HyeFryz&zd;HMK)Q)){?.[<3a4{pwC!ɪ ( { ֣k13Yȡ?|2tUYYA!lę߬&XoAJ*NQKNe(TZ0 [MPt{ۡ^sX,("ˏ )[͔A"jIL/{;tǒ'V;x> U*okFrޖ|}KRkb /(s桌 gN: 7ʉmHR ~?07xӊ+mU3z7={|2HӒCK +TySyW ˡfG^%>>gki^Nȅju95xBnPރPi_F Z,~8H,1KR0Ͻt ]N cʣ6pb Yw; 4ѺNdVmHn`԰{!bCɀ$4~(sV87E'ACC\"47"hm +ykCT_:׻Moky!RD=J>iQo=Bˀ?uBE<&PT((%=B"LJ!A}Yx5rV`F~=/ocMt.r2g7agφJE9:;d#E{IF6~1.ߵ?)6{"DKqU)y^z3ec{0wh}?J:[nQ*VG^kA# 7ӵҵ:H8ȼ c7RnIu8/.+)kJ #! 75۰ Q}8 w@:Yp_ZKĥaSZbHGɇ/}ˋ],dt)f=OvTmt4vw 8P~@t'}D[+@DIm&9`$)]c&3v{؋P (mmt%5%( vOϭ5дdzRK,t(_߁S߂x*m?OΙظp|7 K'BJ;dMÑS BA每aKo]=^;_Fx+r DSf\ "@X:t Б&OgMhSH0H`'rzȞ2Nlkɔd8ZS/Wxjsj#T\.%!A^aԾןD[T|aiM2"|Cr.+ ڻՂB68rJWpYAـ["4"OHwNhB{/]KtZ"x :sn>bG9Ifɶ}jrYVZ'޻/A߀=Oda¸̺<81F{)uaVCSt}%[!"yF_ FM9Q,K]dzJkaQZ0/Q]gK#`saA$MX.ծAYKX*rMGK];yqtk0F/iJKq#7hf ?gï@}n-ֽF#vh߻q:;T.5@mGR{3, Ď9lp!Cv h;A NƧ"Ѥm>&FFfa I`M9 15e.7Wã< *)Kq@GMb/(?4ꟹ ƹKTUghSR/RCbnd+HmwKV"O1*X ۨb{tʴ"9HDNCn OXoO{jA4e@B8*!dqgtR YH#O$(uߓ2ԇ"t \mpv)4d܏c4Meabb={՞x OJM>9iLs: 84k]qf|iDўvvvVua$]!lp&)`scߴFM竩F? $R|nylśԱYb_ ntQ[k(Tlc,aU?Tm"N ɭB]Ƞvyz{dٽZz9Qtňn `mE.@~.~9,K;Ľ0H2J)z)6Z%AyEn2LEc,ucF70z_=S @FoL>lK7峴Ba(y9-6oX{ΘhgrJB@2M9I@f0 #Hm};tha)Kf$J3ˀ+jo)t]#FE&XSڷ,٭0W~'WFra׳ȀekX"MXJƋSeL ifF1K=T0eU "!&m=';66*HfqK<6#0f4 OnWl7@#jul1k%f=Suz|^LnZ;6a)/E4%qdt<~OC{]հ$0X'=v`]˖l (rݐڱtd!WPϬle ۆ !ZMTnV^-ylT#~ikY,V8EW Z@T&wF5gw_Z{g~0Y7,RUfPf&?8Q. Zs"`Z}Ep0M/k}؁~!ƍwm8 BkoD݌4#W*zG9##H!EmI;SijjJ*f*MzyEK|lo=7$Rf:/(ϯHR[gw@{NJ)({V4CX:y>j||,= -hn6B|}]EơnK߂C-RK3bXdBkź!>lzvo̡0q~≚FAG$4{= q:#Qぜ9!;1aهj[OA?<1_yߌ wNkvLff^ufZKU=u4=/>EΟ/p oXy>*eۻ_ޞ@edjb Q̓B痋+5iF>p{A`2pmeW q/OE_4cF̠Qի~21M45ADwl&:q;VPtWb݁DWI.1ȑD2Ƀ/r7/jbe꟩KkQkJ,siw@vUV*şrμ9νGv O4&=yU򝢰Pt.ˮ$ٸ_q|DV:[yLװi;;j"Ʌw%~~E6Sf8ox 5Ub3Ra^n9ɀƁ.Q0Ś]ovӈo@pznǩY4`QeDd<+'Wtx03E>Bzj?yháӨrZsMH*l;gL"Vto y'9<*is4,K߅H9jv]g Od4~7n,,zfwvR1OP aAtjrԭ%*r$X*ܔxvJX -荢s;[Hw/O:JRՠe%*|VP*A13ۛ4dFN 6Upb]w Y0j9B:Ȉ3- o[RQ4_](A鞡kU4yI+ʝ:\Y֘~c̸x%`Z^A&'Rmtwu,~g.O{/m?m5 h>%.d 6DUi۲U; +hK*Jp7#B3fi="\YIJ+5q31}dKHr[C,r] CuXʡHP':Ufb~`\В/^N4H+Imj1ݏʭ~?4>3o\ x3$n2Et|YH/Ou5Ss「KW5"IazSml?(gõIK:[cnt_0HrƱf>{[rI8^eo\ S6A VQj;E{\#k{nðA\S#d<.//Z|G]JxhT^'3zq$a*>7o@l8Ku`x,ksa(¦j J4Cjq!0<)٩Yk _2?!$h +NdYRvom"gzq盩.#1_!-6s٨(3ˮRL_' J'Ԉaq_7^ഡpƑ>"`o %r9rlB 3SXh DUayxT'k! Lp)Aiڊ|6oƌaU3lY?\Sp1 5לiu?or857 (I$ea,AS>%xG>, Yέ%1bȰHYSA|Sֲ1΄2ĝuleFH+Rv&hΊG5hk-sƇ>1 ;a]?8QYUGz j/__sٻnWl:## ݑdXT@:u&O!1Re^Pp{|/r76O!EH6; S1}.o>qB"I)Ri#>˹MRVoĐ]G>dQud&8a`|\*P^OCZ?jQ ud֘3HZg/(nPv*Xr̂LDew֤pV3hsb% ,a#2-j?SХ',l>!b%F8u{1D VfdPo 0C:h[~7~pGhy} N5"69NP)s-Xj(9t[Hj^Ҝ.vJ&i0;(YǁhQK7=&t3M`a--+ncm9>60ͨ5xpmtnjL /O&_}1 坛b S>BV&"3*78"/0FϦH1ORT"m zjdVG$/GwET9kTVs;oF.WtD+}S\MWI+X ɖl 4M R#([/7/AS*xwaKn L\/Υiz.\6/w0oٗ[ JHĔνm3b$(18Bpv(}ڷ?CN׹r@ im>rg/rcuM/{FͻU4D&mycVK;mr 1G Oc#H|7wL07(A$FYiّ諣6[Uzzy'#cR߀.X%0h] "SA?R; E1!xB$[7±|'a 4vLQ5Z~&S?u_;e>;\jԺ78W*GPtlD=)ޙ՜Lc@I~06I[c"ѡl8tfH ձuHn!k7h\Lmr8Xi1WFsal%NC0|,p k{D`-QMZ7x$;%H)?+~i^CPcWUL*ϩ_moQrOͷKӌ:EW^[OWC#),f)er>;Pb W(nǓL&?AiKMl:%vPpׂ׮cGnҼ\x9/L2cT)Ru7BA-(㮃(4¾ٴ} JK y(DwEh]t(UZzD.j& q{FJb~>7ɏѦH6c )v.7i8>gJ–ZĩlC1xo.AқrمkT묪*}4L8a6Ea"8|.>+F@'$5Xc)cHֆ{w+Uʍo#8;]D%t.JRlLD[&'gV)3]+",KʌQà;si,bGf[/ߙW&w|ali|0 Xxl&4Y R F)Fdz(w˜Qx>RH|L1;}KF4!vْY[qh ͠}"k]`dz 8{n/>o5iP62NpTGG`l+K{c+sz3"9ʨ8א/X?^LWi|$20=fg-1Sn`lZ+4"덗bϯ/4gC@fYߗ5ͤƨ<DŽF\}3co?{hSB( OM% ґ˹%ł=\Z>M3h S7Ec`->]:} g3VLk2~(S#4ܺU%dZf)]>3C>09%B %}r=ز*v\~*Q=?cZӣI ݎ~ΰWؔ [j~ 7Qb$?`-Q!@E _FIt.Nc9p-)N1B(+-шeSٟK)צCky)طvlf=2#w qzjzF1nB7x(k Èt'q&!HkqNM#[܃ĽVm!W(\۫Il[ΒŬ[i״Y*b)evbIF/ %iR&@ΪIkYn4˄hJ`_|~3z(*%T>u7b[>,6rPr#gIA E8}ڷjLl4 (^FNUV'`R'_CsZFVRYċ{u2snfwB:[ &n0Vbncw?`$8S Ww`8HPS+02=:@.N"sƝX3Cwq+Blsi^G5] LhˉxTaq-U.6 ^$ ONKQB*|񐞇;SX>r$2EI"(9ZJ<;f5;1f|Q2yA/1d!@RMt•iّm,3`b>ʞb: H}*Q&CIɚx9'L#{/鎺FJ9D#j9g\a,ަ?ⲐO:~v A@ִE5wbM *!#+(>SO1;0=>7I4N(8A&cF!ZIdž&EE~#q]e(9nWeUtJQ ?do-oI1_eӝׂaҏ071R ^xbor3z [LHTXY[a2CBT{CHCA 5:ow8LSbqxɊU1vq""V?6ARGF/0T]jɧW{xU<^F`TlU'h70l2̨? [0!Bq~Ռw3U_I5ts@q(ip,pd~k蔟BogZ$ӫւqk]B}C[s -Nq!$Kop`܍ N"W߁)06cWR3 8>`J?!nw ͋Ů\0; 4KS.(e|,X\G(S&gZSaf-/b9)=b7qY'6M(klr(ΔEScFZ. s/UU'-?+q;]S"+Ygk(D&8*]$6Yn~$*74r1YnJ:=u#w(X׷fE(ivW5{9_ :Iv ?_﾿qiϩjRc bk{DhnV([םA|[ 0~Oa4'! OHpQCm5b_KúՠUbJa5#H$j6Șf:==k/J{@O&uE:R221Y73h~vfG^Wa2J _(AGmF{$MHQ@ ǽs.CC})`-rXk(aRNX zQ?sf ves DMX<ګbf,CUɖoѻ{=pwQOʎ{%pVPI5so OahְXǙ.z/">mo}g,hK) Х^8U&]; C3I! Fas 穟A@.#5cxa$u\N ԰&vʊp4pg,#օ v ݥD:7 㺼maڨyf-o(^r|D})6 ]*+3X¯c`bB k#{eʶ0cҤ LYA5ClU"N(U Y(۽ZəTah f#a>9ңfڍ<W!'FXEhĿfD&sGYx)'G]LRC" \c9 !F=g P+M"jT6-tĄ7O$Q:i9Ipփ~s-t̿2\Qf+G^mfضti 4o]^-pMcz?L'j&nc -A"vFU F J|scq3`dLU/VenA#/$7g 񐋱JtU4$)%@QwXkXEtEK}۸RuT׫aUul3oMcjF#їF]G5$+zo Y},0i\ GJ }h2[Xр|7RAyRW:U\[ PΰJٻ&>ɜ}׍XsOm0:nq+ceo}86tpK^0Tb& $׷[ eo*j`MisV(ſiǓD9e׾ A`~֟:n-/v\-:6sH."w΂v@0* FnN^Ow0+^r]:`f,8Sڱ5"U b 82M7f<@lcZq#u76omqt]rbR"A} ŁɼvQ8!VWHo+Kª1 ƃK+4Yk*Q 9ӮO |oE};a~Xv]|E}(Cfev&j;uWXyAy J,r:s8׽g!'$BQ|ø}%T&5 .k-wW(?nc1|2,p=Ԙ_6Wңc "C@Lk0;0D.'"º|W\Z[viUAQ]b!Yjrq+ƻ3ISuMO˨h6G;ƩpuDWY{'uBنm"IMྨWt2k24>g76ic "EGfzuSӀQj\7uw*2A.$uta6O1:d.Ϧ*.>2'/0J?[WEOOjtbZKD {zzoxonP*!4E]1mFFу_Zk'oM%WWUfm<ͷI0Rߧ@#IKyxSٞ$aVi Fg%AɾUns=N{YyNMxʃP n":^m$29^Ř^ 02%Ma믙JF/mo.- Wڤfπ֣9%кvް/  A+#6?A&1EHܖC6xDWyqsM$G%vq= ĥS7-ae]qҐvXs̬zkPMDٙdO)fX5qJ "Nfil'Dk6n*:W)!W2U`DWo#0ݣƐ#p{xn(P[0! Z (L#6}hc;C>(5sw:]2eDg^8WUS Rtٝ]B33ekV8(ݏCorDXxM[im/o#GhRr1 1Э(婟J5! P}%W7 ICQrS47!ljxW(~LЌu SzjSXg!kdPx7& ut;n;^D1Ê^A!6Օ˅`O0x\e%Yeak`*~B-8'VhU#p?_U~7/ KfIN&ۉǎz?f[ +Kw!#Lrb)5y^lHA^O.l;u5az⋫3@\/rz X'd4XkR'zQiIQs=q襅me"vӈ&0,< (A Y"a3L"(x!RO όEk.nWط lR:?P3F߰n,&c1͂ 0 " 1Rn8o=)vG(CCo h5JNO.KI_yئ '}iPhlϑh[3pl2y]q" F/(x lM/q `‡ڱ; jxj oϙ^.j[?Kk|_FZݹ žŕxe1kp,ann,*T̩NkF.k`7ӃWav+FJv o<9lI4˨0ή]$_Qʱ,H9r%q%hFh]宮̵rĪ1aR]lVd[gMDUisiIVi_`}SP9v7|%z{FK[W\sK8沦?Q*[k -Ǿ'=؃Td2^Gܵ|E4ZqlzH\>S?(S1%9R) l"ymˆ 68' teqK`̊|@$]tM鱷 9 /N{bptSbJCi,\KFd%Kl 3C %Wxb&98)t9cZ1*mѤp'R ECY !17?#!ob0&_4+;4nFcLj&;=1ev1|㟗ߪi N;l{e<*C䙏{:)2`Az*Et9\A;,xUJy(-l)o[EX,Bjnp̭xMO/<Ǫ& TSj&3r7yBI›Ǝ f^Ȼ#l2 l(#fKw7s3zXәs0Dj;y /'E Kth}nW=7Lb9ݮ$|0DVq`_ٜQ-(3xp0t[^MS~.1fÖX $X YwŒg>KoH[[!◼M=tiDI^/i?c@}`қ};J;zba~bhsZ'IQagT2nv6…܆Y޲Ń%Α.">^-~ֹ<))rvȺ M6eo/CKb6h1]`.1EuR(*(1Fʀ+ePE'FKzbT![t z*8L%5P$kWJ<1p,sJ5ʮgL2*sZP#@XU~晤f 3+ ϥ N8fP(PoRŜUtNj2 f2}3~iEEg5YEsZݟP:4ƑCa=qX@IF'ti BRBKq:1Ô8dqލC~,;w^6W3MhoPSW%~] J@@e2wQŎn8ЫӖ v`0nl(7%+0GJt׉M5@U ;e!١샘xWV)R̶ͣ:쫰䋏OE&_ц:`q!i%DV>nVsn-"fZ%\蝴nG$.['3 B}ÜTv;ᚨNp(XxŁCd) gX>pkKaK#/$= C 6EК5&4*ڋ337PsZ]+VwĪW a IV!,m 2'L9x܎ѮN&${w#&'X|)e6, )JWFQR@ qVIe8V z4 uY׆s%N4 '6 mP$7{y֞~>' Xa=.QC`W!qoOU'R1C%,0+w>13=k1V{Lw5K."!x/VE6:vNqUZnںj,;edaa =pfPѐMXx4q>j}&6" j7 4°z~KP|ӛk>V,^$(}drl|>ctm.9o[X)PҀ(dnn^"Nrm &6̖Xx}J'xuw=Yܚ9Æ.9FS;cY=x\ փQ6gR ])f&-*jBrg"(y|<~kCt >Ü.0vC~D<ݳABjwC=Śŭs]q23s8rّk0KI['ts|[ L_kY>"]{L=CapP)8 ʦ}\GHN` ܘ4XSLZ,}xO'ӣ1V'(t1EWkx|i(sQa]?JͫI[TO)u_,#^珲h0>Vh޾, pݳ ƻEl0wfQYŜ+`eFT Mhq TO_P~zD[ZߴMɡ$dGBT!"bچ?BiSusĺzU|'矘H¬3}1AmUͦnJ^G4I>ـZDgb[̬r= Ś6nN4&Up( wHxP~‰*by'[V;_kt02`aT|̙^3…w>I_f4 ̫ᔾ&3ӁC&h\j^H~㇜MtId 8R*ACNd ^)*5m7H 4or=W\o^FO[Dv搢"h/[BG>&v]SLXp:]n[$hiKka5-͡O{e˻TK&V84tY ,ͨ!/n)wdwqGT5KV"TeO7\e_Wg_ΠQkxmŞ1,kЍY͠40dy1څں/@t>Yϵ5O)d17S]89+ƷQGXd;.tO$[k?<%s0&ޝ*!rANF\& 1O_͉tR("?w[[d(ϥqplaj,XѲVۆq3zU1̞'oŝ)y;t9 (m>qB$Fhvt .#aFEa+m?ZBMo[ ܯ(]ϊ[1p_B}`ө[ìW|G)(PCIG(`" 'D oFkҭ`H!*T7@aB| k ldrxR 889oɡ wlQNb d7x7=7Vq dS$b_%A*/jچ}3ILˎɼaȸ+$w!jAҧLu=Ԡ()B 6(Ү23 ( Vډ"L0XIH3&">{gQbE:feeoJ ~7SdA^d_DQYD2RrkFO&im2n'BL̷2FT~i$~n1M_WL,sw|{NJ>nzY(u,9>ѦYb ^Z zN[Rd$01勶>AWO  Eh2͍ \LmMZR[tۡi9;=D>&eMB~% d:jφ![';s[U?%__q_ڹ6 Z ħm̾v+ּ E{F-`PmKf&D=UD!9ޟ?7mgkd^<0j\,fsݦD%Y=Zƨue}dܸN)tR䐲8=0J\E1:T|= ́Rg3hKwyrENȘ QoG/%=$>ɬ% | Ϻڟw<Ȏߔ wI $t@Mc8&@nOAɎRO’i:P$z/{ - Ne2 2epvZ$xt3 _UeK?Pp}l13 X[Fl?X{8LVvezjrSFqZPq&R #db%^&ԭanVq%M0\-?Km~p" xA%Z-vf'"87BV5E0BTҢH$] A;Gy) &$t*$P;vҴI$sa&_w{mtxC=QFF_ Aϛ"u*69,B ;Aa3Ķ*A{MIw'Sb Th^;4^" Y_ 7 6C'oMxz Mer 3S9!U{CL?*xn#)9&65k+2Hƅ|hE#5_Sx7CN.O\zgŕx&xqhqT"n,鷿0'MBظN {^EԭlF1^3J+Ǔ QۏcVm{׬ XJf0@(A/#EvF@d0%xZ#4nSƞm-l*-dHꣀ/ycIY]1I$!>! QXF)3LS,Iq,x7]F8cBM[&Q?B//':1'|jj >ʭr38W21z[}, Su s '"%[_Ͱ9OacIE`_S|靕@j`ӭUR ;-a[׆I;e!P0i!|EL;۹H ʩVqujS:y)f0)HSN I0%_L\|AXaPpP:d1VtZh1ʧ]%x~J -;RҾ z@uXQcVx*c GAM4"f]8J㑏I?iЪ7z[F- x9ҾAx_\ׂ{bՃЊCLhUfd" <zq2R|ܝO8)WF!+{~^zA{1k%lVPmQXeszgG{W(˫?2Í6$hԕ\.pUTK?AM Oqhl F䞊R5~-C"qleR&Φyu(Un 6U[(zֳ «csjl󝤞{3=7eZK2 ~h:vOQMIԊmaf9B /ASKys.0.sDi=Pݬ$W♭ %Kʝ̳ZI}H;Ft^KNQbǣ{)K DoC#ECc rֻ|#WROAĺ.|лr #O0Zb.YVSa߅J"q\Bry;+Bt߲>O Ҽ61T\9'&Eڈ#KRnb~4K/e?t;擕#)Ij~j^W T) 4'x͵ߙ$ 4Fo & սH; =t>ĥQwګ=*EzEMP` _؞\*|Kg!ek1({j՗ &Uc+{Z]`'+I(؉UnB㋐Qsx\w>j\Ȟ܊yQLw!aʒːk9$