zsh-workers
 help / color / mirror / code / Atom feed
* ideas: free-search-complete, noexpand
@ 1998-08-04 18:49 Johan Sundström
  1998-08-04 21:37 ` Bart Schaefer
  0 siblings, 1 reply; 14+ messages in thread
From: Johan Sundström @ 1998-08-04 18:49 UTC (permalink / raw)
  To: zsh-workers

Moments ago, I was searching for the option MARK_DIRS, trying to
remember its name without glimpsing in the manpage or complete list of
options, when I was struck by an interesting idea:

Wouldn't it be really nice if there was a completion mechanism that
wasn't locked to complete from the beginning of your word only, but
instead would find "mark_dirs" from a larger list of possible
completions, given the string "dir"? "free-search-complete" might be a
good name for the mechanism.

I'd love this one --- am I the only one who always seems to remember
parts of filenames that aren't their first characters? :-/

...and how come there is a 'noglob' command, but no 'nohist', 'noexpand'
(not attempting any form of expansion whatsoever) and so forth? I, for
one, would find both these forms convenient, especially for allowing
lightningly-fast usage of functions such as

say () { print "$*" | write friend }

where I could do

alias say='noexpand say'

and use the function entirely without bothering about quotation... <now,
is this guy lazy or what? :-)>

Earlier on, I repeatedly made the mistake of trying to give commands
such as:

say Hi!!! It's been a while, now!

<the audience grins>

NOBANGHIST was one of the first options I dug up, and evolution applied
on the above function generated something like

alias say="cat <<. | write friend"

but I didn't like that solution. At the moment I'm trying to live with
manual quoting of necessary characters, but since the backslash isn't
all that conveniently placed in the swedish keyboard layout (AltGr-'+'),
it is a bit annoying trying to catch all odd bits'n'ends.

say \"It\'s a pain in the \*ss\", he thought to himself.

Am I being picky? :-) I hope my sarcasms didn't upset anybody, they
weren't meant to. You do know I love you all, right? :)

/Johan Sundström, part-time zsh freak, part-time human being


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
  1998-08-04 18:49 ideas: free-search-complete, noexpand Johan Sundström
@ 1998-08-04 21:37 ` Bart Schaefer
  0 siblings, 0 replies; 14+ messages in thread
From: Bart Schaefer @ 1998-08-04 21:37 UTC (permalink / raw)
  To: johan_sundstrom, zsh-workers

On Aug 4,  8:49pm, Johan Sundström wrote:
> Subject: ideas: free-search-complete, noexpand
> 
> Wouldn't it be really nice if there was a completion mechanism that
> wasn't locked to complete from the beginning of your word only, but
> instead would find "mark_dirs" from a larger list of possible
> completions, given the string "dir"?

It's called "globcomplete":

zsh% setopt globcomplete automenu
zsh% setopt *dir*<TAB>
zsh% setopt autonamedirs<TAB>
zsh% setopt hashdirs<TAB>
zsh% setopt markdirs

> I'd love this one --- am I the only one who always seems to remember
> parts of filenames that aren't their first characters? :-/

Yup, you seem to want globcomplete.

> ...and how come there is a 'noglob' command, but no 'nohist', 'noexpand'

You can get nohist with `!"':

zsh% !" say Hi!!! It's been a while, now!

However, you can't do that in an alias.  In fact, none of this works for
history because history is expanded at lex time, and "noglob" et. al. are
recognized and aliases expanded at parse time.  The "history expansion"
during lexing of `!"' is what "quotes" the rest of the `!' on the line.

As far as I can tell, "noexpand" would be the same as single-quoting the
entire line (which in recent versions of zsh is also sufficient to stop
history from expanding), except for word breaking.  It is technically
feasible to create a precommand to do this, except for history, but there
is a similar shortcut already.  Have you tried using ESC-" or ESC-' at
all?  Those are bound to quote-region and quote-line, respectively.  For
example:

zsh% say "It's a pain in the *ss", he thought to himself.
         ^
         set mark here, then C-e ESC " and you get:

zsh% say '"It'\''s a pain in the *ss", he thought to himself.'


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
  1998-08-07 12:13 Sven Wischnowsky
@ 1998-08-07 13:02 ` Cosmo
  0 siblings, 0 replies; 14+ messages in thread
From: Cosmo @ 1998-08-07 13:02 UTC (permalink / raw)
  To: Sven Wischnowsky; +Cc: zsh-workers



Sven Wischnowsky wrote:

> Cosmo wrote:
>
> >
> > Sven Wischnowsky wrote:
> >
> > > Maybe we should think about developing an easy to read syntax for
> > > completion control.
>



> I guess many of us would like to have a real DWIM, but...
>
> Doing something like that would require at least some serious parsing
> and some guessing (what's the difference between include-file,
> tape-file, and files; and for other commands the same words may have
> different meanings).

I'm not quite that lazy. Specifying /usr/include/*,
/dev/rst* wouldn't be too much of a trial.

> Also, some users may prefer to build their
> compctls according to the way they normaly use the commands
> (e.g. someone may use only few of the --options of some commands).

Then just specify the ones you use most. I wasn't thinking of tryingto parse the -help
output of a command or the man page description,
It just seemed an easier way to describe simple completion behaviour.




Cosmo


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
@ 1998-08-07 12:13 Sven Wischnowsky
  1998-08-07 13:02 ` Cosmo
  0 siblings, 1 reply; 14+ messages in thread
From: Sven Wischnowsky @ 1998-08-07 12:13 UTC (permalink / raw)
  To: zsh-workers


Cosmo wrote:

> 
> Sven Wischnowsky wrote:
> 
> > Maybe we should think about developing an easy to read syntax for
> > completion control.
> 
> When I looked at compctl to do something simple I scratched my head and thought why
> can'tI just specify what the commands usage string is EG
> 
> compctl tar {txruc}[vfbFXhiBelmopw[0-7]] [tapefile] [blocksize] [exclude-file] [-
> I include-file] files ...
> 
> Should, with some casting like modification, be able to figure out at least a
> sensible default
> rule for tar argument completion.
> 

I guess many of us would like to have a real DWIM, but...

Doing something like that would require at least some serious parsing
and some guessing (what's the difference between include-file,
tape-file, and files; and for other commands the same words may have
different meanings). Also, some users may prefer to build their
compctls according to the way they normaly use the commands
(e.g. someone may use only few of the --options of some commands).

All in all, I don't think that it is possible to build a parser that
turns man-page-synopsises into the correct internal representation.

If you meant that the description should be on a somewhat higher level 
(something like: these options, or these options followed by
filenames, than an optional directory-name, then all files), then I
would like to agree, but I'm not sure, how easy we can make that
(thinking about commands like `find').

Bye
 Sven


--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
  1998-08-07  7:19 Sven Wischnowsky
@ 1998-08-07  9:28 ` Cosmo
  0 siblings, 0 replies; 14+ messages in thread
From: Cosmo @ 1998-08-07  9:28 UTC (permalink / raw)
  To: Sven Wischnowsky; +Cc: zsh-workers



Sven Wischnowsky wrote:

> Maybe we should think about developing an easy to read syntax for
> completion control.

When I looked at compctl to do something simple I scratched my head and thought why
can'tI just specify what the commands usage string is EG

compctl tar {txruc}[vfbFXhiBelmopw[0-7]] [tapefile] [blocksize] [exclude-file] [-
I include-file] files ...

Should, with some casting like modification, be able to figure out at least a
sensible default
rule for tar argument completion.





Cosmo




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
@ 1998-08-07  7:19 Sven Wischnowsky
  1998-08-07  9:28 ` Cosmo
  0 siblings, 1 reply; 14+ messages in thread
From: Sven Wischnowsky @ 1998-08-07  7:19 UTC (permalink / raw)
  To: zsh-workers


Bart Schaefer wrote:

> 
> On Aug 6, 10:03am, Sven Wischnowsky wrote:
> } Subject: Re: ideas: free-search-complete, noexpand
> }
> } Bart Schaefer wrote:
> } 
> } > As a general remark, I find myself frowning over a number of the option
> } > choices, particularly "-t+ +", but in most cases I eventually (sometimes
> } > many paragraphs of your message later) figure out why you did things, so
> } > I don't immediately have any alternatives to suggest.
> } 
> } Again, I wholeheartedly agree. I would prefer to put things into
> } separation sequences: one like `+' but meaning inclusive-or, one like
> } `-' but meaning `continue to test patterns' and so on. This would make 
> } parsing more complicated and I just didn't find enough good sequences
> } 
> } So, hesitantly, I used only one option for all of them (but at least
> } that gave me the possibility to use characters that should be easy to
> } remember).
> 
> That's not quite what I meant.  For example, it's not clear that in
> 
> 	compctl -k '(foo bar)' -t+ + -k foobar + -f
> 
> that the + immediately after the -t+ is an "or" but the next + is an
> "xor".  That is, the "scope" of -t isn't obvious.  If I wrote
> 
> 	compctl -t+ -k '(foo bar)' + -k foobar + -f
> 
> then it would (I think) mean the same thing, but now it -looks- as if
> it means something different.  In this case, I think any mnemonic value
> in using + to follow -t is outweighed by the (human) parsing confusion.
> 
> My problem with the -J/-V options is that they look just like all the
> options that can be freely reordered, but they're order-dependent.  The
> best thing about + (and the use of - within extended completion) is
> that they don't resemble any of the simple flags etc.  I'd almost rather
> have seen \( ... \) for sorted groups and \{ ... \} for unsorted, or
> something like that.
> 

That was what I meant by `sequences'. For some of the `continue
with...' things this is easy. For the grouping stuff this is rather
complicated, because they are independent of things like xor'ed
completion, extended completion and even different compctls used.

> (Which brings me back to the long-ago complaint that completion is really
> too complex to be a command, and ought instead to be its own language or
> function-body-like control structure.)
> 

Yes, I was beginning to wish for something like that, too, when I
implemented the or'ing-stuff.

Maybe we should think about developing an easy to read syntax for
completion control. Then we could use a shell function or module to
parse that into compctls, or we could change the shell and provide a
shell function or module to parse the current compctl syntax.

> } > 	compctl -x 'r[-e,;]' -l '' -- xterm
> } > 
> } > What's really meant there is not really "a word beginning with ';'" but
> } > rather "the end of this command" which may be signified by any of ; & |
> } > ;; && || or }.  I suspect this idiom arose from the "find" example in the
> } > man page, where it -does- mean "a word beginning with ';'", and it just
> } > happens to work for most cases.
> } 
> } The `r[-e,;]' matches a quoted `;', not the command separator.  In
> } fact there is no way to match the command separator, since the
> } completion code uses only the words of the current command.
> 
> Er, yes, if I'd thought about it a bit longer, I did know that.  What I
> was trying to get at was not the need to match the command separator, but
> the need to have something that doesn't match -anything-, so as to force
> the range to extend to the end of the argument list.  Using ';' works
> only because it's very rare to pass a quoted ';' as an argument, but it
> is really just a workaround for a missing concept and is meaningless to
> anyone who doesn't know the idiom.
> 

That is relatively simple. We can make the comma and the second string 
optional, meaning: check only if we are after a word with the first
string.

The patch below does that (and looks larger than it is).

Bye
 Sven

diff -c Src/Zle/compctl.c ../Src/Zle/compctl.c
*** Src/Zle/compctl.c	Fri Aug  7 08:55:57 1998
--- ../Src/Zle/compctl.c	Fri Aug  7 08:58:43 1998
***************
*** 647,673 ****
  		    c->u.s.s[l] = ztrdup(tt);
  		} else if (c->type == CCT_RANGESTR ||
  			   c->type == CCT_RANGEPAT) {
  		    /* -r[..,..] or -R[..,..]:  two strings expected */
! 		    for (; *t && *t != '\201'; t++);
  		    if (!*t) {
  			zwarnnam(name, "error in condition", NULL, 0);
  			freecompcond(m);
  			return 1;
  		    }
  		    *t = '\0';
  		    c->u.l.a[l] = ztrdup(tt);
! 		    tt = ++t;
! 		    /* any more commas are text, not active */
! 		    for (; *t && *t != '\200'; t++)
! 			if (*t == '\201')
! 			    *t = ',';
! 		    if (!*t) {
! 			zwarnnam(name, "error in condition", NULL, 0);
! 			freecompcond(m);
! 			return 1;
  		    }
! 		    *t = '\0';
! 		    c->u.l.b[l] = ztrdup(tt);
  		} else {
  		    /* remaining patterns are number followed by string */
  		    for (; *t && *t != '\200' && *t != '\201'; t++);
--- 647,680 ----
  		    c->u.s.s[l] = ztrdup(tt);
  		} else if (c->type == CCT_RANGESTR ||
  			   c->type == CCT_RANGEPAT) {
+ 		    int hc;
+ 
  		    /* -r[..,..] or -R[..,..]:  two strings expected */
! 		    for (; *t && *t != '\201' && *t != '\200'; t++);
  		    if (!*t) {
  			zwarnnam(name, "error in condition", NULL, 0);
  			freecompcond(m);
  			return 1;
  		    }
+ 		    hc = (*t == '\201');
  		    *t = '\0';
  		    c->u.l.a[l] = ztrdup(tt);
! 		    if (hc) {
! 			tt = ++t;
! 			/* any more commas are text, not active */
! 			for (; *t && *t != '\200'; t++)
! 			    if (*t == '\201')
! 				*t = ',';
! 			if (!*t) {
! 			    zwarnnam(name, "error in condition", NULL, 0);
! 			    freecompcond(m);
! 			    return 1;
! 			}
! 			*t = '\0';
! 			c->u.l.b[l] = ztrdup(tt);
  		    }
! 		    else
! 			c->u.l.b[l] = NULL;
  		} else {
  		    /* remaining patterns are number followed by string */
  		    for (; *t && *t != '\200' && *t != '\201'; t++);
diff -c Src/Zle/zle_tricky.c ../Src/Zle/zle_tricky.c
*** Src/Zle/zle_tricky.c	Fri Aug  7 08:55:58 1998
--- ../Src/Zle/zle_tricky.c	Fri Aug  7 08:58:41 1998
***************
*** 2409,2415 ****
  			    }
  			    zsfree(s);
  			}
! 			if (t) {
  			    if (cc->type == CCT_RANGEPAT)
  				tokenize(sc = dupstring(cc->u.l.b[i]));
  			    for (j++; j < clwnum; j++) {
--- 2409,2415 ----
  			    }
  			    zsfree(s);
  			}
! 			if (t && cc->u.l.b[i]) {
  			    if (cc->type == CCT_RANGEPAT)
  				tokenize(sc = dupstring(cc->u.l.b[i]));
  			    for (j++; j < clwnum; j++) {
diff -c Doc/Zsh/compctl.yo ../Doc/Zsh/compctl.yo
*** Doc/Zsh/compctl.yo	Thu Aug  6 15:51:28 1998
--- ../Doc/Zsh/compctl.yo	Fri Aug  7 09:03:04 1998
***************
*** 534,540 ****
  item(tt(r[)var(str1)tt(,)var(str2)tt(])...)(
  Matches if the cursor is after a word with prefix var(str1).  If there
  is also a word with prefix var(str2) on the command line it matches
! only if the cursor is before this word.
  )
  item(tt(R[)var(str1)tt(,)var(str2)tt(])...)(
  Like tt(r) but using pattern matching instead.
--- 534,541 ----
  item(tt(r[)var(str1)tt(,)var(str2)tt(])...)(
  Matches if the cursor is after a word with prefix var(str1).  If there
  is also a word with prefix var(str2) on the command line it matches
! only if the cursor is before this word. If the comma and var(str2) are
! omitted, it matches if the cursor is after a word with prefix var(str1).
  )
  item(tt(R[)var(str1)tt(,)var(str2)tt(])...)(
  Like tt(r) but using pattern matching instead.


--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
  1998-08-06  8:03 Sven Wischnowsky
  1998-08-06  8:39 ` Peter Stephenson
  1998-08-06  9:09 ` Zefram
@ 1998-08-06 17:50 ` Bart Schaefer
  2 siblings, 0 replies; 14+ messages in thread
From: Bart Schaefer @ 1998-08-06 17:50 UTC (permalink / raw)
  To: Sven Wischnowsky, zsh-workers

On Aug 6, 10:03am, Sven Wischnowsky wrote:
} Subject: Re: ideas: free-search-complete, noexpand
}
} Bart Schaefer wrote:
} 
} > As a general remark, I find myself frowning over a number of the option
} > choices, particularly "-t+ +", but in most cases I eventually (sometimes
} > many paragraphs of your message later) figure out why you did things, so
} > I don't immediately have any alternatives to suggest.
} 
} Again, I wholeheartedly agree. I would prefer to put things into
} separation sequences: one like `+' but meaning inclusive-or, one like
} `-' but meaning `continue to test patterns' and so on. This would make 
} parsing more complicated and I just didn't find enough good sequences
} 
} So, hesitantly, I used only one option for all of them (but at least
} that gave me the possibility to use characters that should be easy to
} remember).

That's not quite what I meant.  For example, it's not clear that in

	compctl -k '(foo bar)' -t+ + -k foobar + -f

that the + immediately after the -t+ is an "or" but the next + is an
"xor".  That is, the "scope" of -t isn't obvious.  If I wrote

	compctl -t+ -k '(foo bar)' + -k foobar + -f

then it would (I think) mean the same thing, but now it -looks- as if
it means something different.  In this case, I think any mnemonic value
in using + to follow -t is outweighed by the (human) parsing confusion.

My problem with the -J/-V options is that they look just like all the
options that can be freely reordered, but they're order-dependent.  The
best thing about + (and the use of - within extended completion) is
that they don't resemble any of the simple flags etc.  I'd almost rather
have seen \( ... \) for sorted groups and \{ ... \} for unsorted, or
something like that.

(Which brings me back to the long-ago complaint that completion is really
too complex to be a command, and ought instead to be its own language or
function-body-like control structure.)

} > 	compctl -x 'r[-e,;]' -l '' -- xterm
} > 
} > What's really meant there is not really "a word beginning with ';'" but
} > rather "the end of this command" which may be signified by any of ; & |
} > ;; && || or }.  I suspect this idiom arose from the "find" example in the
} > man page, where it -does- mean "a word beginning with ';'", and it just
} > happens to work for most cases.
} 
} The `r[-e,;]' matches a quoted `;', not the command separator.  In
} fact there is no way to match the command separator, since the
} completion code uses only the words of the current command.

Er, yes, if I'd thought about it a bit longer, I did know that.  What I
was trying to get at was not the need to match the command separator, but
the need to have something that doesn't match -anything-, so as to force
the range to extend to the end of the argument list.  Using ';' works
only because it's very rare to pass a quoted ';' as an argument, but it
is really just a workaround for a missing concept and is meaningless to
anyone who doesn't know the idiom.

} Since you seem to think that the completion code sees more of the
} line, this raises the question if it should. I can't think of an
} example where this would be interesting to have (or even needed),
} can you?

Only if you wanted to make compctls for control structures, e.g. to be
able to complete the word "then" following the ; in an "if ... ;".
That isn't where I wanted to go, though.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
  1998-08-06  9:56 Sven Wischnowsky
@ 1998-08-06 13:14 ` Peter Stephenson
  0 siblings, 0 replies; 14+ messages in thread
From: Peter Stephenson @ 1998-08-06 13:14 UTC (permalink / raw)
  To: Zsh hackers list

Sven Wischnowsky wrote:
> The thing below is my patch relative to a 3.1.4 with the patches I
> found plus Peters. I hope it works for those who have applied this
> patch.

Down to 870 lines in zle_tricky.c :-(.  I've got another problem, because
I'm using Zoli's patch for dynamically loading on AIX, which renames
refresh to zrefresh, but that only accounts for an extra 300 lines or so.
(Also I need patch -R, but that's trivial.)

I did notice one thing: the functions rembslash() and quotename() live
in zle_tricky.c but are called in compctl.c.  This is bad because they're
in different libraries; common code should be in comp1.c.  (Quite a lot
of the widget completion patch was simply trying to get round the use
of different libraries.) If you move them you have to move instring as well.

-- 
Peter Stephenson <pws@ifh.de>       Tel: +39 50 844536
WWW:  http://www.ifh.de/~pws/
Gruppo Teorico, Dipartimento di Fisica
Piazza Torricelli 2, 56100 Pisa, Italy


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
@ 1998-08-06  9:56 Sven Wischnowsky
  1998-08-06 13:14 ` Peter Stephenson
  0 siblings, 1 reply; 14+ messages in thread
From: Sven Wischnowsky @ 1998-08-06  9:56 UTC (permalink / raw)
  To: zsh-workers


I wrote:

> Peter Stephenson wrote:
> 
> > 
> > I tried the big completion patch, but I had 1700 rejected lines in
> > zle_tricky.c, probably because of my completion widget patch (revised),
> > so it doesn't look like I'm going to be able to test it any time soon.
> > 
> 
> Argh. Before implementing it, I tried to add as many older patches as
> possible, it seems that I overlooked yours.
> 

After looking again: I missed the patch because it said it was for
3.1.2-zefram3 and Zefram didn't put it into 3.1.4, which I used.

Anyway, applying the patch on top of mine worked almost fine, with
only a few rejected hunks in comp1.c and zle_tricky.c.

The thing below is my patch relative to a 3.1.4 with the patches I
found plus Peters. I hope it works for those who have applied this
patch.


Bye
 Sven

begin 600 patch.with.coompwidgets.gz
M'XL(""%]R34"`W!A=&-H+G=I=&@N8V]O;7!W:61G971S`.U]>7\;QY'HW\RG
M&&I?1(`<4`!XBY']HW4XRNI:D8JSJ_@G#X`!"0L80!A`%)THG_W5V5T],P!!
M'8Z3W;RW,CC3W=-=75U==_4&_7[4Z$:GT^Z=_QFF=[KCT63[(MK>OO-+?M'8
MV6YM[]X)W_UN<W.ST'SM[&(>_6D^C%K[\/_O-H_N[NQ%K:.CP]\U&HUE8ZW]
MD/:BD\DT:A]%[9V[N^V[NSO<<3/\'WUTIQWO'$;T9Q3-KB9I+^U'^6PZ[\XB
M'*\[&TZB:/.^_#Q>V"KRK18U&F<];00_CW_7*+::)#-LB$.]X)\X%/S_.YM1
M-NZE47\\==^[2/*+:)9TAFE4DV?P5SW:O(-]$$BXMH,(?C4JE[Z[$^_MZ]+Q
M?S+]J-L]7EM;@V].QH-LEDZCV3B:7:3NR[TT[VY3#_K61YID`R>)\\.6PT$^
MB\9]7!#TS[1GCAT:V+:PX+_!(_R?K#K*T@^S8WG6O4BFT2:TU`=FFO#D(_[#
M(-+Y-3Y$".#!;##.!!Q1:2/^1B#:;<>[2T!TM!NWFDV%46'#_R9@`QA%T[2O
M0(.?Z33-N@BO.;Q:]#^:F%T/+9J&P%_N,PA36-&"(=;IQSS+!^<9X/UPG)U'
MHR1_&]._[6,<#G_EN!VSBT%VGN-VXN##=`:H<__^F\UZ848,\K?IU?MDRC.B
M2;R-:O!@@"A7OVY1/,3Y<-P1L-`(YU$-'W5@&BN.`#"W`^11+?TP26"YXZR^
M<`#<V<.]^*C%._NOM7,\$/Y:8<O^??:LZOBU6JVXU3JHHE$?QF:56U&-`$_P
M2O'=!D!4B4Z]2*K6D5B,.S^GW5D!L@AUH:#_`71YD*41`/O1XR</3]=JK3_\
MH5D/W]Q__O3IBY.S/]++5N'ERX=/G__Y(;UJUPDG6\TVT)-#Q<JOOIZOLI#*
MC=K=C=O-7=VHL/O#O[PX>?8`_GU"0^PT2\.?/GSYYX</^"U\O"&WR<(M:M?Y
M(C&#/'M^^OSEF:XM?/7PA^]?OM"5!:_^\OSE_>?/SMP>!2"Y[U[M%%X!I-R[
MW<*[!P\?N7=[LI8B,P#'80B,`/ZG@@OHCLZGX_D$&O"/RB9P45Y@"_SOL8/8
MV<4@C^#_(Q+AZ$E&=R#T0BJR7;Q^>2)_"RY:?W@1];@G]U.*2<31M,GFHPXP
M"8"L-)M4;OF/A6DAUS`==.!U$O$"?8_RS`0&.C<!1329IN_YG."OP7@.]UKF
M60XW3VU?H,QCV*-!5FB+:^H/D_-<UI2GL)'?/WJS&772X?@R;#BRJU^P<IX`
M[Y"\.';0*K7$48?5HWKB3S.^@-O)]^/MVKS"5SI\T#SX0EK]!4:2Q&")60*C
M*?XK\R^W+JRC6_T5Q_[-<Z!C_@-"^S:[70.@BL:*2O:DP0;QF8^B%O7MC;.-
M692/IS,$1"XX%M()Z/3D\;.'I_#QMGXP3Z,$X`I0ZZ2`5<CQ]A"I>B#%(#L`
MNP-]/>MJCIF<$$18FBR,<3$>]I9@-2'%L@/'+0:S/!WVBWL]`)R7IL`SC*?P
M17C2'WR(41B0%4S3QB#+T^G,0IK[3V6`BO[S[-U\7-%EXC^)LP,N_$+ZE%KF
M\WZQ)3RJ:CEUT[#C(<T:3U+@VZ?E'CH):2NHVI^.1U'C1;&YGXE,(&A^>LW)
M?UHX^8I\#HF@`5ZD-$)+#Q[A0Q+U!\.T@'/0G"]0AW33=#1^GS+V&`C9'B].
M7G[W$C^P*W":)B.4Q!PC%5T.`'1)U)DFW8HO/GO^Y/$I'(WHD!=V,9X#7F;C
M&:((4@?9:F1*=O;BELJ)S[/A%5)($:GO1BQ3_^-WO0J9OK7=72R(P\N25`_/
M2*P_F9]'$8CUK;LMD,YW5Q#KRSWWFG?;!TOD^E:\V[+\R"#K#N<@0M_BX2;3
M\2W'.SU(^\E\.%,N`\$[R/KC7!A;DB[I9T&.Z';?X,]Q'N//'H]"O_N#:<Z_
M>O/1Z.H8OL,RJHC4=%K[\ZR+'\L!(][-!W@>.U?1+\/4":WT61+E:3G"-UZW
MG-ZOL9Q/7T^E+F(WWCO2[9+9Z?50VY0)OKD<],[3V60VK4=O:C4^[+%>A/6Z
M9X;_Z'4CJC(Q@-!GHR3KE8&"?<^HJ]>J>`W'D^LT&[QE3I,A&H[<:RE^&$][
MCFN16=`5$].\X"+!`VBF'$Z0M!8`K5W%AL^'UL77@-:76&L5IASNHEQO)$+_
MW<8W:893(559="]Z]NK)D^.*5OUI*FVP%?[5->J]8FMB":2YCDD[C?_3[35?
M^U@XN@='\>'N8A53&Q;4/@KT<-WA)<'M7E33W8I^Z2;#X;@+^SB\S`>_I/"R
MM0]B4(1_C/O2D'>5QIBFR2SUZQBF-?].S_DV:1GN60'0:=V"-FUHU#3=A39L
MH_($9]*$_U6\]L.3Y&G&MBV*@Q.Q630TOY2!FV9$_Z(M*R+Y3;M.T]D<CFO3
M[1!N3?O@(&X?[O/F5-UP`+ME=QR]+MUR]+1XSS7O[JZBOJ[J>\U-USY"+>^B
MFPX''/4N;E6^H%O#,P[?/WG^W<F3-R]>/C][?O;?+QZ>XCO7">CX&^"CNF^O
M7+]YAC)IN5NH`7C^],4;Y$9$.$=^I/&DH)O`-HB")\\>B*!.S>XKDX*+7'*(
M6G#(VFVGQU\CG$B`NFS<V;B+#]:Z7<&:OQ-R/'C\\O287G3@H+Q%/#*=_@2=
M&J936WJQ)H$:5_;[<U6_FNL8_=UK*NJ+1YG)*'^C?PT7+'2'GPWZ4:VVF4S/
MW]=?MWZL1]QZ;8)4@Q]'6U&+O[)&#^#-K5M10Q_B(!^C=(@T&,9:QR9VI%\N
MDVF6):,:_!_0ZUMP@J9743Y)NX/^H,M"(+"C:1=YR:2/W&GC]]U;,1'"F,=8
M@QVAN<@\Y!269V!FO[FUA5VNF[G[=7F!/'=M<^)FG@-O#$*4?<20W1+(,E`+
MFRNZH&/?PF^.#M!=-H`2G"7]&\OZBU9IZ0`?E@T@JJ<%`PC)-?V+.SS(WB?#
M02^JVFE$P:2+F_S3[[L;M]S^XO]HPP$_Z^;+X4ZO?93]W=HJ;N%'>PZ"H_M6
MCFX9TZ/(`X`UWB6L1\'F8#]N';864XV#H\/XT&LM6:T*ZT:)"MD359O]KJ3F
M[C:^D2L(IL"__57$?[?MR_:QZ>EF_,MLVIM/:M2*']9M.]2Z%UKAHZ`-3+'0
M!)[4>?T'>ZWX8&]_\?H/=V#]1T<!ZP%CHJ+L'OWZ,)X6&1MB@N]?I-VW2#60
MK3L?O$^=\HB$8.&-MZ/'_2@?QXH+J'Q#_F\V?IMFR,)L(L@VH\&,6H)P&D>7
M:?3S/)]9$;F3=-_F0V`S0X4*H&47!7CX0QE>1.,W\''EFB:H?BTH6Y#`3`P#
MIY.IX1L`(J^CEM?KNJ$PE6P^!-S*X:GIB6@)G//E8-C#-T)J-I&$$;<?$#M/
MZEPC&+=#ZZK)R7'?4TZE04>$0?X@)?6WJ%:LZ,&:`+\3"(42H-Z/!SWXJY<.
MA6,5&&461$YFB:-W9D)X%&KOD-V*(YRX$VFBR7&$SR?RO/$-*ED%$'2G`#2[
M\*TLQI?03Z&D\'M7I]/_CGOZ,=R-J!!;,XQVL<TO.;+P-?F">VSX>GS7[8:O
M:@[H!4KY4;=+X6_$90]+)R.\`6:HF^;YFVY7\0[D9V^C1F/'WT)CSP0>3T+S
M=B8RDP*FVR45[FWFC%A_))3/(T.:`;*FN;.Z.R'-*WB@/6W?,:#^<91O;>$@
MZ[SD#,]"?JQ_TF>+)^EV5J]C@S6#.5G=]7'<`TR8.`]=83T0H?@THPQE/!7B
M",:N,W-6(9S5:BA:/H-?=0074;VUCP(BSS60@-4$,KYGK6K7DK&OM:>_^B9^
M,O`W\\^'?J7+1+,5'[5WC$"RAGL@XAS)7Q6K:80H2:=N37<2^R+C<!VB,E36
M'!GKDMJM&GO7)CB=7UBH9AD:+H:N>TG$Q%^MF7G1[1)>^0=*NYRJ9[U`L+IN
M[@YTZR0F%+:M,!T&O+0L?-=N6M+KE;;7S3N.W#!,U>Q&TG$@;XGF07S8VC<:
MQE5V;?$>K;PT:1RNKJB"6;)`0..X`D-I897HV=Z/C[S'5S4A6&<[D-X>PCI8
M"A"3[8!:D0&!_Q[D>`.5B0-T\!P@#=;-$3%N];OOQN\[)X\?31[^//WENY??
M@Z3][/G_O,K^:W1YYU;89<1=`)ON7_Z0GV;/1M.7KDGH1H+8V/QPT.?_'5>Z
MFM"TA4"RPQ`]:9M'[>K1Q\#P7(POF>EU!`\HV@L'#N0#R2(VGL_R04]L'3.@
M:\FTY_7-0NK48Z=U%!_N6"WW%]F:?]']^/5@7WE,]G?CHT/G^0;DC,:O@13^
MX%;="6I\RT7W[D6W5057+S0_N\5\EU$U\#'Q5%_4&P4&W')G\\SQZ1//QK')
M\I<)K+,&/&@^Z\&2A1`PY[A>;DB_\=JHY:*J,/_6@U&4DG@H#\?C"<!S.IZ?
M7\B.7=X91R@<P&.X,-"2G*<@R!``4"("Z(]PU?G8.WW1I<W=;T<`B;__/:K)
MZ;OM]4QU(;$>E@+YH#NJETZ>O'SX/6N73IZ@.@ZZWKNWZ)5N'H`#(5_;2#;J
M<OJCV_>B?U1W.Q:O.K@G]IT'T^?BQ=*=RG^]S3![\9L">>71/-Q#I]2#0-G)
M0WWSS3T4-^79S/S]446R`,U8$ZG'R4WNSQM\QMR!K<#-4J<_;3B)^:.1D%W7
MFE>Q\2)97<:_1?7%?X@:2V5%OQ<S(27%*<FPY3EM;51WX$^7VW<7M)?IE3LT
M%G30)90Z?-@(D%DP.1M?*@*357]Z/A^!7)![C1-C<+_F]4<Q*LC<8/8]FF'A
M[7]6OR4?G@%(Y#6GQ;H=>NG5HV^CC?_>B.Y&&W_9T'-_L!,?'K;=N5\-YW2A
M6]%J:]V*_+CEF_"?"8-*HT/SH`4G\2`\B<S&MH&A)1]_QR++$R.(KAF(T.SH
MIN;5.VEP/B47I,"?76AEP`CQ'0:?B5%-TZQ7?KD;$&A8?-LPZ76$1EMT./4B
MN;XEB'"T"_SS7H@(OX$E?Y7U5F_ZX0[Z\#JM*7LEX5+03;<7U;;JQJ`M1]@/
MO&4N%-5-K/,U*0KZ^M+%4@^SQY:2X)BYW&"R8*N`0!M</;I]FZYF^2;;>-D[
M^6CO,`:^SVWM/V=A7W)5U1MXA$[EA?L3"$/^NODC7N%`U)$A<W_")5*!&\4+
M/=JH!PH*Q^.2L+Z`P17M1(&[Q4>+6-M*-<)GC>[YX<ER?KBH0%AS:_]K9F\U
M0J5]H!('(97XHB!>S"<NG=N"((-]0(AVNR+,8%)69%QDH>#U2)R>HBQ->R!U
MJ5]+YRK*NTF&OC7B?N%9SE"$1>T';$"L>I`XT"OP@7!*R^@I7%RD-+QBWRM'
M-W^2`3>BSGPP!'97;>='ARV0Y0XJH@[^Z<O[K+55;^;>+FSF_F'!J$>6J)%>
M-;4Q#(HC)UG4N!^#,!)'&*GRH!Y=HH\U&5)B_')&W?TX8_2/9*KH)>EL!O-F
M\6*<RS>VEX7)D&V$+=M`N-8+%.WTQ</[CT^>*/]KU9DL$9,BCO27QA33Q?\C
M9:-<:8[WM+LABLTX8D4F722MNBI<PQVUVK867SEQM6<48^FZW`;ZK4I"_2U:
M\N]&M\39XU9L"+:[UFXT$O#:)Z^>G,E(SFO1#763L1X]?GFJ(XG/H^>FQ#`'
M_PGD40[L:1T!5]`.0GO^A='N-X$+7PH1O@@6+$6!:DITT(Q;[9)[`6QX$@"<
M-BZJ-1[$@A1XZ8YEMVGC:7^W%VYIU5)H"]6$0T0=0*EF\1GP6<[BN*;ZQ%#/
M/R''`G+$B;`'4)?9M&P^Q#>?89=9D9*M&Y\G:U/N>J/R.KF7K$+JJ&7FA!+Z
M4ZR_Z\XS)>2SB.V\P#X6Y<_36:5)4QQ4*D\'C.(P.YQ$\%W\8*;+*KKI9&,3
MB8WN<WPK_SX'E,T<JB*N1E8T]XQ;&6GD!%9SZ+>JB73E0'(&EP]4I-&5(]$A
M7#[.S2CT#AS'II=<?TO'\7./XNKXB?UO@*(E6>,FN,B$YNNCXQ?"Q2^`B$NQ
ML.A?;/QI%[@8VQ:!E[%]47`6;N_<;;6O<31>TAU]C0\7^QKO-^-]YZK^'Q$&
M:_7QE_Y@/E*]>@=9/@-J7?M+77\.TZP&?\:MN$%!QLSV7W;(+^PRY>@Y<OI*
MSP<9,C=W8&@0!G+6!$E`-+K'8W-4\*M*(CO?5H$'9[FWQ.VM92((O'F1HCO3
M;-Z5K!L4&O'"A+=8Y92;T8!C&RC8D'TV:"WR&,=K,"^WCM3&1#HDTVER%=6P
M%3K&D<'B,LE1W-7>-F`B&B;YK+YM"0X,*5/7:%?\W/ET<FS?2!@J+FP^]9$9
M^``6H5&,+&[5*CX,O"G%G;KEF#4(C[KI@D%Q0S3Z$.:*[6'+]2/P\WQVH9LH
M'H-NX30:^R+$AT?&"KQL?TY*.4H6;%!QZ@7PR_[<;!>BY1DB_"X(I?]7V81J
M@S`PLTM.#9%B^13_@(/+/RY3_B_,J>MWSH:J!Q%'9+/6P$87[[@-#X`HT.$"
M;@W^)5JA&Z=KYX40J%*X'J;)=``W-KM`]3@`U"[;)Q:0?#8\6F<Z&<J7\J$G
M2N-^/T\U*T.>^K#ZFV`!+^.>.DWS6CP?:,"*LXAI"AYCSDQR'1=E'/4UJ%R$
MPCR(-`="21>4!/TJNG32;H*:'!BISV^NQ^OJ%3ID>#+(WE*`G'PZ=C,K[#N"
M-`\R!4F[!A/2[6BHLV>/XO"0ZS[A:03N)$4#$A_7`=/@[444,G$S&U;,#*/`
M9\FP(JZ?_)8K<QUPU#4[ZY4^B]N8N4_F]I.TG>OWFLB\X<V7O$>L9P=\<Q[L
M:MC^$J.J<B%U_.1S2"XC"<4P(P-,1P4X2&*SWHA6N:[GBVA,;TSI`DHWV^(C
MO#K%5$T'$#\:Y=_K!)16$"''F"+;`.B4R.T$DPDV!U[Y[`9Z`I3AN$2E4?%J
MT)ZUWF":`L-ZA>+.^T$2)?/9&!OS54:*V])ME51.O'0`EN*\O:AUR3"C:4.%
M!9-1(G"!=58F/EXH&&6Z9N0ETZ2'8R5NAW'Y^`5$2=-_>_&V52V9DVE\XO&L
MU`+MM.+VSF[YWKQO@H-C2AO@TKT1O'[`ZV4L5WY_/!R.+W%IG/\@S>]PXH`T
MOWL=?@J>0,<[0^@$E`.`E<PV3.*4+%T=W7DXS.!P9RK#Y2`*(N5PWX!+"]@G
M.O=H,KA^N"_U/QEN>WN;F?!^64@@4,.QG(W'=U<<#G-@W,'T%O`(EEO(@R$[
ML?KLAC3><"+0JQX.,W)<`T`9KH^C]=WLPDD)EX?CH\!.<`!V5^SNP(L"04$J
M,7"'BY)SR!=PN`DQDWXSX8R.X`B[8''-V+%@=IAQ)*:\(PYV8>J1B`V0?,-J
M%I+ZKX0H2-"0L3@'BJ99TG+/[S&K3)GS$+>!9R#DGM+O*?TN;45,"\']`-*#
M"P5V`@"<C;/&+^ET;,F).T3;R^\4)DX\@TV<PG'Q'<]H<TKO"D1MPN\F--W-
MH?PYE+\Y%TMQ/%[(9I_&:X3O!O*M0=B1LA@AOSK,AP@B_`=_]?%7GUE8>T$0
M9.RMSA==.B`3"8$*<UB]FP/\A.NC@$3XTX<B%G4!<J_/IE<%[AX_/9V)RU$M
MW3[?CLX&0V!2X!L/\1MY6:BKVH5!P#BA#."0933(!J/Y2-&:<>?.-)7[60ZD
M2%\U6/\H81E#D0>F(ER('I'Z]J>@=ODVABD1-PC_Q?G$.!EZT-<W??>JS^\*
M.Z.'`VC]54[WAZ.L+&\#:Y'T>@+U616+5@`GS@MZX%`A@\&,&JLMD&\;SP%&
M%E[5@"KQ^S0`#3:"5?&/PJJ\%%*M4$+")VF1D!W>KCZ8[[!S&9,+)]XSS$E9
M%T'"A79CVBRHS-#`W`^"ML3H*/N&'5`BQ0&*@Z(TGZ+0E/:<AJ`W3WE_!GF]
M>D=P%)_LY,PH5):E;`N54"YI'0]R(IM)J<'2:54,9S0"MM+W>,I[Y[S"</5.
M',Q,=J_JL3BC4YBLRV]U50XSI<@SU?,'7Y%32K&JR2)]$Z?2XX0Z\VDY`-,)
M!IQ.S8"-.FHJ0(FO'8]&,+T)T"R]PALO'.\7B^<D<OWP8SR?%>[4TL?]34"L
MQ6;B?@W\+WEX'$(S&S.AUZD]SU+%Z"&0\-Z5L,;((@!1EKTVK"6P6I?!M3>"
MF3(PR1".VC?3M7)+Z;W%J,(FV$];4D%PJJ05(>)21QH$:07_6/(Y%WC+QWJ>
M.^6S'57M]/-IMVL'4\J(6.VR!SD10X"*8MMB'.IV\?VU@Y+LEX^C?C)=/!;T
MP/1[9BQHT:7<LYZVTT@Z[K)Y45_U`V>"^&B042R*Q0$`)&LHX4#-D@[J/)U,
M5[Z]#:UR675:.^VX=52A)OYU!*LO*E9]4:'JBW+*7U2@*HE37T"8\M+/%Y5]
MOH#D\QL45+ZHF/(5A905A)(O('=LE;2?Q%L9S.:D-C_]OPT"EN$6X6?J4F<B
M7+<0KC0&8$QO_`9O!/*)1"I&R3)@;''^$FZ3\8H47$G$^KGQ]$K'(HQE2U`R
MXWPH<@"1]Z-TD)0[0CA`2IP![#0,]=.=#94;9*QWU)S065*6XN!(39BYW6:-
MI+,+#69R++`C2PC;.A8-U:%SLWXO:FH.$'J<(K1HXMR=%+=5&CB*](#_'Z*`
M3M*91MX5'AW[+KB5?G:Q3NN8(TW^K>3)KO""`6W3`U^4B_2$?QTY$AU($DS=
MAS_Z2?K/$1)9E/.`JA(88]083V<H?`<&`?=4`(7,Y_6RY:<8>U7RW-1/(NER
M#_OZ]"M+I%O%;,4%ZZ^"XQIQ6P[_YZ-5X>3C_M(<B%;3C_(1_A<7I+\2#UR9
M\[9Y%.^TG'^.Y#3I49X1Q(SQ%`]<#9]S4/QZD"M]A&9IXT(2I#'ORCOOOT!Q
MV7E*X+L'``3XU9X^?/8*G::>/#Q[Z,(NH)&DLN)&&-MJ&G$BQMVX?=A4;G[5
MF:M?Q=>;7'7)H&:\TW9@7NN-=9-JSN7O3?`A^99,$2?;51E)X(W/SJNRAU)Z
M4'6'J9S-P7Z\<^A3'[+W63&(ZH\/3UZ</'GR_#[[\:&7FYN-VW0,A21";%P+
M>V/Q_"/?VYJ9KO;!1/QU[Z/K6W@+N_,DE%Q]Z_Z#I!7RSH8&1(4Y15M1H1<G
M!%P7+T**(H^"41H-\L<#QB3I7[U!@:PF^+:S@_DD7;J33P*:VA[KY;DG?LYJ
M">7)WF2>E6F2FWOQ;BN(5-+)=G,!&OJ3;`6&?DYU[ASP;D6WR(F?G:%U'MA8
M1D!O(9.25;V4[D7=W#Z[3-6ATZU%SX'$]1"H]W?BG8,@,.)+3)FRARF#2%M@
MFKL7U,DSBD%OE%4H#H)"]3"C6G&8H8[0"+]+`O_RGB3(-*5G%1BWW#/V_^DB
MLO#(WT9FE'ITE_Q*?7NW.UO%O6O>;'<J$:P-"+:SP,\+W6V`S1Z<+_3F(>Y?
MF`L?Q\M^;#5U8N@/Q)EF.CB_F.F5*MJE3^)5EXFDW5$/*RPP+AZUXMWV;K7W
MS*+5^;HE%,HS0+>R64)J!%(>=\?#(2=![<W%F8[]!,NN,;"VQS-DE(=S$I)4
M+"&S*.;9S0?`&#Q_B2"DC\%_O6MB&OWQY/2-*_-!)0JV;P";]0([C\D+B;->
M]ZHQ\7,0,0-E4Q`J:YQ8D(0=5V/ME#D2ZJL.OSB_TU>/'CW^2Q2U2L.BH@@1
M)#>>E24_BM)XE#D:2R>4QM-H*G7\RU@5M7!TC,92[E"`BDPB\GTH#/N/#7*2
MIR?3<0?DF2MR!F5)`RXOK,3C1<;<6[HKOPI<79]^8+=<V,RZNCLC\1A-9@IG
M'0K@3[*]8?]Z3D4P2//M&^RW!>73QZ?WJ::$`Z7RV`@#PYI>MU/&S5*F?)YF
MZ329<<;_)$*6RO1Q"4%O.&%,2`[_%QWRJP4D)QW]1DE.M0=],]YO[A>"SZ/:
MYCOD*41W(.$98H$C4=`J''ZZMQ%3K1+>LFZB6DI*I<IQ^6N8F#/G9+C*OL&\
M8%?#V!!]!-<DY2'"D#]X6'L7D^:4E%<@ZMFLNQS>CLSRRX?W'_[EY/Z99$]8
M&^88XT%,,*?2.':=3+[&O:.=>,^K[O]E0/!%`%")$^UVO&^RE_-4,X1&2P;&
M$98,KJF4;6R-YU9F.)+IYX43&H!8?(J;:.W!/)I+$B;OM.*#79\Y@>:)F0?N
MB?H+H,=_RBZZ"5+BYT@C_C".Z1B?A:%]@]GX+2;#U<W7X=?O1:?LL`U,%__]
M7VRZ-="A!`B_4*J#_#7\T8A>H"[C1_ZLSV4T>=VBI`./V;'4C`#S`9QZ.Y@`
MOPB#U*1%'#V?S^37;<V@X*+UO/0'A`Y3$0Q1U0,\/&!0O1#L%%G>'S#[3YCI
MN#<.&`2?Z^3:@27O;5Z54>AEBB2=-3X?TBG1)YC_A#)F`95/DXD+ESEH[\0'
M.R:GUU?:U=_ZGBX!.$L>7V<S7=S8E]C/RE.[?Q`?'!Q5"8UHT$<NZG(`D#P?
MJUZ6$II*)3)F`-@A>7O;ASI6",?KFUM;(M+>2(/`&7@J-`C)%]4@>%W!'6/2
M9!4<VCPR;]YW@3=ZEQ1D<]+ZJ)5'XWI<VO7#^&!_KTK@_7K@7JR#./ZJ"ZZ,
MKSO<CP^/@KAWRO0$XO`,_QG$T<]Q]#:.NI,XFJ*N?AA'8Z];\)G:Q1`$D^"8
M]1F:]#?Q_V8SDU5*1',Y/Q1@X^1U]Q#$;/=08W#"X!NW1\1A(@N;##D8PGK@
M#\XS-"&YD]C%B-X!6<VDRIH)]A>>)!D.DARX::"2('%LWXR[I%C[L0ZA>DJ]
MPD^>/#XY?7CJTK2UX\-0V?*K@-Z&:EA%Q+\L,*LS.E`07"ES5%0#D,`M!O_^
M@?C-T15&BAD6]CNRA)+IXAR])%BQ31X$>`.Z&GZ1R^8$`#7%IH!VHAOG$/?+
M%8%1)/9)GV8S5U5F,H0W,U21<BV"-7H@U3CRH0LPA\_-NV^Y)_Z)$Q=UY!HO
M`_\BAYO683.&?Y8$UK;:K38`:'?7<+*\D,FQ8RS@02!,<-`Z3!1FZUAU?(,?
MCQJP1?X1SZCP$/-!3*Y@"3$/,3`L&JQZBQI'IM((@.WU9`@,0[3QU^:&QM[C
M/CT9C]]R%`I2Y$XZNTRQM,6\DZ?OYDZPY+EO$C7M#L>YWT*T,&=DP)$`0VPB
MFSV82;\[)O.%""B\+N2?/#>D#(I_@EZ!"3-87J!AQHQ>>3Y-^VH&"2EP0+3.
MHXOE97-!C_5B49WRA%RV#48=&`5Z*R/H^6(GU84S*G0UTZ,IB.83#D\#P0/H
M&[2!);S.@ZW3;<4P<C8.YK/!<!A=)@/V3D+_T0QM;PQ-LO`E5QVY]:1N'\.2
M;PY7G\8D3M.S)DG'N:$<-NZ)UTMU3P:[ZXD-Z^4L"'+&CC!G3,OGX/N<`R1[
M.&@T`JC#68\C/MEQY,]X)`+D;_DL5$@7!O\=8BY#7F[!=YW%05.!R"#Q(@0N
M]S<Y,N3B^V1T=!\(+]66WZ,"ZE33XL-#0"7/ANFT'O=-$=G>H(=%D^'.R<Y3
MYW<0H_TYB.CL1VX(=Q&/I\X;!DWD:%I/H>M8&=R8*_ETTG2R[2_@U=025>*8
M9@:A)C%Y3!>D;)7(UOKPS9I_?CX&7B/%U*1TR-I["!F3Z/+?%3)!7M3K@5,=
MO[BW$[=VVSX3/!JJ[D42(O+1F4H>LUCARQ")-S>Q?VQ>S0L1U$:)[M(5J!:8
M[-_66@%_H'V-1JV)5\((P:&^`&3"`::6ZQ0!3QM'B=C:UB-CO!LUOD&/=B$6
MQF8G+\C@5S-WD7:H\TF?TO)5DOA8&'K1R`L&7CQN8=B%XRX:^/J1@W%R9/++
MP^24+4B[A@.-N[F#KTZ5[TFDNGQ%\I2I80*TG?C2+064-W0JX.YJWB$S"R_.
MV:734YKQL+C(M;&@Z+'[]MC/L@A8,K%6`98LN!6`Q0[7;AG?^@P'O/#Y"QX?
M<5J->Y+;0:;LW@6+5[$U7#S%]%<NWL%Z$2HM6O""]5Z[W"*`-?L1_OW1VFW^
M"_W6;/8-COF4]F2<27.L"4N&NM2Z?L6<]2%T(Y>8C,&,?Y(G+5REDD6%W&IM
M$IA<\_)($35]I9Z`8D$:3V$6$TP]C8'DSC-4]#+B>^>+W?'L*<_*D\%;GYD"
MPU[29=,Q<,!Y3896+A:81('QMY@$R4^.04$].U?XW:K9;A?<R?T:2-4SP.P/
MS(RHRR37QEMF;0P\TM9%>_`[R<Y+.85AJ'P6N2HMXK"5ZB_482)X-B=#6Z;%
M]IJ3RN%8@S[@-MK9<;EL%]U&GX5K@YFBV^JH]NMCVI=%M"^+9U\6S0I8%IA:
MOQ*R5;)"NSO("NT<&>T&SFY.=3^P?[T#S"+]`%'<<87DUTE`@'9MN!3<&Y`M
MJ//&_Z-TV/+'3_:/O][:J--HZU6CM>B*D98;&RZQGQ..Y%5&0R[O*B(E=IMG
M9-N\_U^OGI\]/`ULOYOOM[8B[J)'<@]$UIV]?2.R_N:@\BO"I!IS=D'BV-TS
M>C'$_4$V3[TBP#/H;KR_;DA!2LI+*#-_"L?(+4B:;LY%_^+^ULW9WX/-.5AB
MTFWM'K9A;EY.#`LB)KT>L]R%4S6S;KA$=U*R3C?C*-3CQ!%I'BDPATJ\-3'I
M%>J1I_A/"O\,\C[K(ZU3KXD#0<T>'=[-OO,-I"B_KJE&JB^"))N1E#6=)J-H
M,M*_7;@B3LQ921K6W[E+3OH^7IS]1204X6[4V-/,91S\)L`^PEUN.L>&7PV2
M",3-?+(2`.$?6=C7`>.*`*M$Q;T]0,6]/>,(X?URW?GM=]F\*X:=?M?472!$
MNO_T$?EQJ6)7.\ID2+2^+YY>0`',X\:^4*@U^W"OV.JP+OX2K=W]`]CQ@QU/
M^VXV8?'`P_+=SOOLZTZ[&N[[NP#W`W.QI<A5H<_R[+C2IZ3;564;68,$I^L7
M7.2Q1EE&C!_KQ$EWT19KVVBD&B?!,>V<PRL(,#F*BIJP>3:C6A&B]E75'`]<
M90G@-ZPQP\?)C![G==L9OQ9TEE;\ACL;56Y.)I6ZL:&XLUG6YQ:R1X>[2)?(
MHR<GWQ?WJ!WA5C)N'1P!;OE$F)^[*3)7WHHMG3I#O`!L`\?E8#2/K@'9EP1/
M)0[OMUMQZ\`P9[2G\/F@WM]M8I?1YV/H)U6QE1\K:M"L(V&NA]$"YO409]@/
M`R@Z2%EO2Y85EJ'=DRE%?\&CE!_YO"MK_1$]\3E+BFF8>=S2L.51RX.&8X9+
M\/[LQ`CU1W7O;%"3:PF`U8@F_0^4R1>;B.X("Z#_`2]UYXJP29.:Z82"01;V
M3R>>MTE]?S/==34L?R\NI\Z%`406ER7#^Q+KXB3[A5D2968@S1,^=PF>^>_7
MLD:7-"-L'=`B6\!0NP?4RC!X6-%`4@196UPP.E#$\.^[T:U;=:/'+*Y>FOF(
M,C(SH"_[?#S/PWQXKDK+C`O5VX`(I:;XJG>5X=F6A%&S(`!B(*$3FT:3RHE"
ME)$C`&M*$0=;?:#`';A$)+/%$-5&H:G;U3?2^?B]=46CN%``*W6U"1/\@1OR
MUBUV"PJJ4`XJOCA@2L@?-0`:%.#C1RI^Q`#0`J8`DP4@<2I\WZ,:(&0GS^8C
M+L;L$>8$;P%$&`KJ1)N4RY!92%LC7.2("@-1@WIT8<LWU[@]-*&7(6JXD!A_
MT/B:1WQQOV`$(`(U24.6U\W6Y:^)Q@0\08`</#M6Q6*8V40R"JQ]+**.::7Y
M=?V<%(?=+_CBA.9$.QK.B:Y>R\V$,V',IS?ABRF_J2%K"I_@O\DJ.646B?][
MEZMM+5D%CV/'M$Y+'PV&B,[==RJM]5N>:?!5`ZK2?GW+,"ZWO_GJ`LTQ&Q@L
M&>J*L84&M40&QAI4#(7MI]IAZGI,I<MT41^!IB6R]C7#05YS+(Q]K04J.=-4
M]'<4//0]L"M#$(S(LQP%M5&!;F/^),R`)">/4YYBH@*?EFH[K$V+;XA0X`\L
M;0C\57"XV1>P3]:PM4VZY[LC>R;UVDW1J0)M[#`@W;8=OJTW._:F]G-],/9Y
MB8+\3M]&3SF##N=O^C:<<,A&,-MDO!9I''<E\*CJ>^+QU[YKFS-E2Z:XZA$A
M[Z6-)9&3@",*#U7AG2\:KZX8>SO`4.X=AE;BSV`HMWBJS$1N5<I_&)]SO"KG
MN55-<K?X<G(1AHYMU!=(R2849L_>#:F;#;_62P5)(?#UB#,S%W]H2KE>P_,F
M'<O<)DP6<V%U)=)_=58W&"T8K#S6YW*X<@_#2\>5=@Q7V[F.J[4=;\#./BYE
M-Z"X=)N(P&:NXAPTJET7XP([(6AFC6WC;"R%:U+.*4?A6_W!+'=^/8:+-"-I
MUG,)!\1`,9Q`;_L&,8<51#%D)M?]-C!P&5*M)OSOV),TAO=F[MXUBY=?>8-K
M]B3.>$ORB7Z,AN(,0<NHB$N2<4\$;TM&BB\#.E(IJ!ZB%>'0"ZJ4[F]R93PG
MC+6&"Q=$G:3[ED("T]S7,.AB+V/5<H%/%08Y&*=#`ZCV,3"`L!XR./U:0Y1(
MX?[!8=S:]Z3P:TZY:-WYY)E7`_]H+VX=-<6;A19WL-O$1'+[UF=:IM=H.:OB
M5B'R,%DY)Z#-=^)R`@+G/,B.^1V/_4@C%'4@&'<N69\,M$R*5*V<35N`,Y(L
M+68`BIB+\C29=C%*5M(5#33%DS>M7U"X*27O&>0N<11WY$0O."K&J):-ATFU
M2P_1&#<2.W-W?/;G9!;6^0E*^[#]M#NBST5!,JN*;#"#S$4PJ.WRNDA3@3K]
M"O<&'E#5`RWQI%LVQ@IR9#T42/!?[($&G?XF-Z3;8OQOS$6@MDHU5_49Z?O)
M+3^)HPXZ,$,7^#GMD*,^*[1;P0A8V1H+)6-2R2WKM(\V`/H'=?P(NT"_0"&I
M=3M2Q/K^+6$E"*G>3-/N76FC"[7)!J9)\!>F3>D.+V'_.;T%/Z9<!)JPR_`I
MZS6N`4:@(:>1;KWN`*>\3-\^BKQQR#_B45S=+?_JH_OE%(N#3)6'CY^]>?CL
MSW4S#G*X7/W+WK+(D?MT9A2JGV_[XO3A!*1ZV/$U'WYZ<O;'<%E86BK(F99K
MV0RX?R[2$:)D0FEAIVF>JU#@^^.WYZ/1U;:4B[M__\V+DY<G3T^/E9LSD\2&
M[KGK";=]U]^S6ZH#*<_^_O-G#X2UE*G_D)(?)-=FZ`[3][`(K$]TE\^BU&VG
MK*;.$W(\<=6*MIR_)*^<\^PET4^-\0:G[`Q>_-3(9O`<WN)_\)C_U$C[&\%`
MHM1P'9$6%."+BZ,J2MN5!,'Q]X#0F*;C6_P!Q"A_+0\`PW\D35P9E+()6IKR
M5F-\"UE`&`/VY?F+L\?/GYU&>*[6UFHU#*_A$MBH<\#(1922\M?M'\FDC8W,
M2-F,ARJ_&2]\D_9O,0?ZK3<9R=>]"<FC3/U+X8R0PL)07*>/6J,:BEUCX`J@
M?`:$)IB'DZC_5#QQ'#WG-(B:+8'2#>#XG+BA@N[792P8PF7WTXLYR859<3BX
M:2N.X#AWZ<KME8@"8,PS=BCBG'9\`?MA^**TF1+2<`G,2"?,9\^FR6"(5YZ]
MVM8HN6(Q5>F-,A,P&KO]@$\0E!E!"$/P&D!7BRUQ7:AA'=Q"`?#K*DCB)M=Y
MD#5QOE""+N2=RWS7Z_[#]*F\>"'1,,C@#7'A>>UV7ASWIG/+5YP9NH244=[3
M<GS)/)JYKN0JEQ>-;_`LH!YF*[A[-&NZ9P<YI=X%9I'[,$LIE6PY-0:Y`V">
M4"3^AM:[FKH(*OK1^`:C99D<Z]3\"SUFQ*H.Q^,)G*[WDME2/P7HBK11DG7\
MU&ALR`<Y$(.<#XXC]]7UV7%4^%#FIV"C_,SWGK_<P'3D\L5M0V+I&UTS&-X7
MQ^C1H-\BWF`JXZ^-I[1SC6_&E-YSK6IU)\\>5'W.KZ>E']#Q<<"$'7.W?,C&
MB>8/E+'[T>OM[>T?86`X\&Y4MPH<><#0&H!HB6-FNHH!%VC%]FNYX8?@3\]$
MX1]E'@I[`*>.N<QQ2,P<XX:B3+#W[Y^]>?'\E$DZJVYF[N(Z]D_)M;_;G;VA
M[/IA_V>OGO[P_.6#JD%\ZTA[FU:D\4@$A//MZ7;R>O`C2M;-.C=:2U#%5!A'
M^G5,OTZQ7V=A/P4#VX=I\=J)@$D<,\;SFGYD`H<E?8/NT!*="2WJIHF$_(2`
MN?_JY>FK1W?+3U^\?&C`D/N8+N$/_J#;6.0<?E3[G>ML+>3V><YTQDF\!*E\
M.T=(F6:)42]VZP58(1N0(1^`!>=`%$CJ#GG6#$M?@BFO&R:?N(QCV&6F`LB:
MQD6M`+[O[E8^O5]`(P>X)AKZY:]O!(QU,X&FF8!79Q*JW4-QK8N5Q@M`CZ6)
M,#`,R0E`LO)%7O6B!)[O[CNXD!4/(\NPD.V6<VDQ$`:D7`5X%8AV<E8%O[.7
MJQ]X2C\4#H&GO6)D(@+EH9L!!8#AJB@`!1Q:T*Y`!LRY@3%DZQ,\I;+M@(&W
M;@F[*M=XY`Y4\N/28[2<:C!HE5\&&!3>"X3\<?&C%W@7>RZ#DU*CRYK<Z:8Y
ML+/GT-7S)+*<WI@=`?'.IR(%S;I=E1B0S:#*V>?Q(N)0OY:LO3QY]OU#O]'A
M<X\7BV"GS>HET'0K0#/D2\%.BB[,GSW21C_#_V\T/+`+7D.>MM+&_VP`O7!^
ML#Q[%BNIJ4QME;&B;\U@1;+JZ6\]0-8*#.BNA`$>$B9MA;L=UISVY6<.\O5/
M+9$I[?^:D)RUXH`%<D2F*3^%55"`OGT-&G2"$\(X`#PS+$)O2_AM.*72L5Z.
M"4NQU6##V@)4Z%A4N&XPAPYKJ^#"VG6(L'8-%I1V3'C%GPV;R/1!KU%88<>]
M")#`;'8U=GVL1(H"WRIO"IU]GX_*XKL?C%7TTL_'F4*)_Z^':B46EA(V,U-=
M%N;I*2$C!HV$EH-`B*/QBO(8?@A>HQF_@S(GPU>K_;)6',-T.71&1K^@.KC<
M@Y.6U!K#NGY1XDK&EPQ[Q,HXVN3,KJ1FQ;\F`?!0SSL>]C+'8,?XYR2XPV5>
MIV1T1S^^Z:`[<SKQO"$U87D.M"Q[;3I0)&5Y0AK_(6J%S<S;3M50G05#=<*A
M.FXH:8R("#VFB2-5@J(.5_&EKKFP0Z^;/X:B)0IEI52<@7:%U3IBB*'MLJK!
M(*72C50IPGG`A%G.UP?B7:5(GK&RO>F>\.8KP0(PH.K0#F"?.ZQA%8."H=@<
MF2GN8?5N#DYN"#_ZCZ49KAN&L32T/YM%Q;_<!J0.63?J08<!2`_47L+MZEX/
MD6:<H)$<SC`(8)Z1V@\6BS5X8.N&5]Y0ML9'.3#!<!2#,;MPT+_7)^)A4;NX
MI(.]3"5TO^=.K2SV7C2^9)Q4D`E$'/+B00VQ%L^J@P3L;GWQ7L+;!20([Q-G
MM/!V".+9G?'%F58DBI9U3A]=480'<[A3$FNOJVD-.*P-C>GS`,<?8?*-!&N:
M26UT.@`2@.**&+B=&&B.`M)3EBQSTIDL`J[&!R>-W=:Q2"/352-?#^MJD`D4
M[L<DP]G29&MUKF*E67C3)&=[\&C.\ZHTVA[M',6MH]U#FU`,?17&T[?H3=!T
M^?*R<3J=XGYEZ;%U^H"G1!5NWT;S(6;<O:H-V1-4X&R2XJ3I6]H-;*&CZ`"2
M-2F,=#9F9[*PF1S^FOT@(8NQ+_)#8.Y)`EM.6ERHB!*Q=;K=W-F+V\W=76N=
M_L)K%_[JY@N7CE]VU548T&[N[0(4]@,,<'$!47)9+)P0QEZMA]D7G;F4,D9@
M'D9CR/6^!3;A7A2M3>;Y!699K&E!AS4J5/D6G6.`]+BB'A7)DBDW#M,R30E)
ML?C0F5.\`,QSH6N4&=*&<<)7'DZGXZDWJ]V-^JG]'TQIVV00J4KO@9]Q^4_:
MK;UFW(9397&J$II;*Y7/+%7/W*XN\,0E+K>JAUT]X7AYX&Y7732#P</*,=:U
MHO&.N01O$JJ9.;C$<^1OT$G%HT7*@P%;.)'T1IBAG3G((09DDW$(R^R`[-"C
MG(ZN#E>YZ@V,69BT]44@M-UB3T,T`,_[@K6;?/?\S=PL^$BL`5Q'*W!1A+>Q
MA`'Z?^N6]:+T2'X0(Q[@0\<K;$Z,+#:I.VY!+SIW17W&\>.?7OR3\RA>!1YX
MO70XF#F.X-C[)'[E,[OHR-Z6"=UV/(I9PU<^T=7T\F`'Z"6<\"`8ZH(J7=+R
M,);*^;(%4]/D^F%)+B?-N7(FWVAJ:F;RIFR>'5FW8%/0E=-,OW$A*;4P+U$X
M-*6]]LD3GZ/K8C@<)T'2=*2:Z=0E>D410O*E9>^3X:"7S%+:LJJ\:^N$%2^H
M[.^B^L!H44[3GC"3ZLAL`0K7*WU)_W"+69?%B+^@UEHZK\INRZ6`-WT(`1V'
MB;M]S3ZL9\Y/T>9T8OI^=!BWV^V=T'/YDW??R/*$YZJB<#ZK2OPEN9OSXC)N
M?SZ_;,RR&9J[>V/T0\MN4,3"269KEQW,GV,H@(M:U+!'JK^Z%5UVXJCX*!75
M!95(H?PUEYUCK[SX%T'W+XSEJR$Y8>@2_&:,71%;JVG7T0%P)[[&$>JB)-O^
MR9,?3O[[],G)Z=F+E\^?OC@C_X%?1NBK04#4!!-K:Y*N84D'FK?PM#9;HN:L
M8L]N1)!S-*Q/AKG)4*T)!GTN3&H-?TM\ADDS".<7/>X1\OW13!J1DLBTCUWL
M[5K*L1TV"^$YSR(C^[YFPK:1;MUAFC@V'S\894.0[:(_T)$3J,^ZN'"0%&MG
M]U^]B*.S^T]?/3G#7[Y'1;JXR7S6K6&Z#*JI.)\IE6FW89_:.WLV[\>OL4]$
M#QTX<6=BAXT*QDK8?&DH5&)OJXV\]<Y.D&P]PI417^)8ZX8ZBG@Q&RFD9,Q,
MF(!..?<@>=F1TVWG*FH,*RND=ZAM#`(;_M=7\P[JVQ*-GH$T)JPLNE4ATTK\
M!.<C*0T.&S0XSZ#S<(QIBK`=C<Y>X"#DS=(%U7;TTZ):P$^2HR`5-NH,5."+
MPA))G`(:"5%N`AFX=(\(BC"FEDE/WB>#(>DC9*":NX77[S7K<4'EU!NG.69U
MA)LGR:Z(=X>Q3VAI)&Q$3O!N[P(+U=X]7)PY!;899//]`Y<:D4(O!AA3`<LA
MATZ:#!:3IHJ3`RGJ1`E5$3"LH-*"X>H+I@!Q5R8.4"3QQJ-:TTNBOW<Z,TYE
M-)#G2N`]"4/D*@G\/2(\A8"">#/5BO.\:PY@MCJYY'!T0A6\3I&/O4D)J@H1
MG7,[!IQU("(8R6"8SZR$[H-F!!ND>!6MEIB/!'4E[P<8`YU^2+MSG]:*2D"Y
MS.*Z7BX5X3&M,Q\,.3T7(.7V-6G%D=@X:)MHK<C=?D:%XL+/?)":U+6%'^Z7
M1KK98#B7)X?#_[&]^R4)`.29_.0<`/C,_7*Q-3J4"RCVH<4^>MD$8-L)N8#O
MEEF7*Z)F9^K*(9IG(]:UNK^!#G:9-ZXU;<ADMTND"_5:EQA#I!R.OH7/==^6
M7[L)6<3B+/0%78O=E*RG<Q`Q.0J"MFUHD!<ZNL1!ND"!S3I]D\P--9X]5@*4
MM"?BT'"[9OL3QQ"'4:H^`@[S[%`JGDRO0;*C9HHR[`5)'ZH?0R-<'#W+ZCZ(
MR6CH=:9UU+(#14FPH8_-=4M^\?#E4U-Q8I).1S+GF@EV#ZXV>>IICL1UEMAI
M=)(3W:)5158H&5N<1S*HR.?($RP@MYJ=W#GTLEHGH*+X0PNLH182+1(F,X)V
M=465BTEH19E1@5!,K\8+")9/4>O#?\)437D!T6P"X!\>/_C^X9GPF?;;W2X9
M4"\'O7.T&LVW,4!EG'O["`9I=Y?%B5?'1ZQ_:GS$N@E.*+K4KJ\0'+'^F<$1
MZZL$1RA0C(\[/:KT;U\OIJFI#(M@T>HS0R+6V:O]\\(A>)#/#87`T-K5PB`L
MY%8,@1!Z=&T4A";VJPR$*+\<+WM9'0ZA,UD0$?%YB**^]W7!CL>%B(=%808,
M_J7G1Q'.%!*2RE!*7`M!#3IJ0#Q&O=IB6E'.&^Q22U&DXA2UMK@$_$KCK*@H
M+5`I9_,,R5/D4G&LUTBLB&[C!MR_#^?JS-]<)N*]@@!VBV/JQ`LWQF0Z[LVQ
M!$L13DD!2JM0?01>!<E?3NG#Z+\"];=)%ZX#;Y&I60SA,$'$(B`K@.T<R&IO
M@EHTI%JOV9BEI9(CAL:+FQ#R_ARN61?8XG+?6I@75S3I%G#SD];P./B4RP-<
MK"%)1)N7>!&4+S9K*$]72DFB_P#&9=`O2OEDZU>NJTFF2ZP:,I<][;5E-!4T
MF-&AB?G%A6RN%UP\U"'.IXM1K+=85`@G=HE&9#&T<K7NTR;9'2SE$W`Q2U4Q
M2@3J9.;$ZZM!.NPY"3NV8RTE?"X(5(^3IX0:1%9@)-;]+C"8/C&BB?+<NT$B
M#5"QD4S\IB*,2?N6(YG\8)\6QU0]F7J]ONB2J"8/9<;P8UA,%TVN51=(\=C?
M@$;"&;Z&1+[@A*/1)""1^,T">2P='DO:N'1,UR<PS8]QQ(@?F5`ES=4Q(2.W
M\\G$)O`HA+<Z9JHW'S1`5XL@X3#),,:#4]K4;=:HPCY0L%.92;^6NAGR%ISV
MPBXNO./0F!#>(2O=<MV:O\7BJ*R3L9N)/K,:#U=.^:%2<+<;2O:X6E$!5&#N
M>$J8ZZ7U9BSE(<KHFQ=TD'[ATSEI?%Y_^'$\W0A"[VZ"SC"7Y<#@GT%J@'S>
M*=8G&670%R_W46'=7&]IPM%L'\93*U%I_<P12OPCBJ985X..[^3[K&F'4NE0
MUB</,H#-*-'R-1)8*P&UY/7:,-7835P1K$?,':QM=KG^UE+]VWJ+%@T5@`-8
M-]+U*NXWJ_Z"'1=X^G,"8__]GHYD-?W=F426H1S2YC/TE^<O\1`%S33V[\-X
M*GG_Q);#X8%=GU<077%G`%T&T3D6BD?EK;6,JB,/N46.R'56OB/>SGJYV]M=
M#OF]Z!\H>CQX^`CGJ,+'&9WZXQ+<"<J^IR,0(4WP:['GS,.=4:=P>GJ4,<<1
MBWR`YX.-$>5PU1L<&=K.&QR:XED9#ZG6WSTJ509$DXRUERG^ZI#%-@XJT`3"
M"L?(RB[^$=8R3)>L)I`JH%F`A/5B\D4UT69XB+BD95XU$+U8@L_^Y/,!)>RR
M9U-=+?U]3'5B@6TSQ"%PT).Z/`(V@I\^))B-+SON[Y3^3H\KJKA4<`?V.ED6
MQ;PZ>B"<@]PJJTI4[.2_7IT09;V8W<3CDZ/-(TZ=WN/_S#CI"A=&Q20L!>X#
MDZEP:I6BB+1Z@/6&)><<_^Q3H'#8MJQK4:#U.L=ZLU/VC"K7!A1X$0%>+3);
M5<HK1F4+<0H"L]<71H)7Q6:O1V$0];+P['5VBRB&9N/0Q>#L=1OR?4U@MDO[
M;1,*"NT.+S<^9M7PY2$J@K5=#;\@7IML`$'H)CT)X[1+77VH=M`_;*QQVMX;
M84&,]KJ/(MX*QUE;%J+MNG4JNU5&:/L^"KXD]J#L2/?%@=JV+F,)*AJG7?6"
M0K77-?3^IF':U+$06\J#+0W/IB;%T&P'H.JP;%^,\@:!V>M1&/FWSL%9UT/K
MN[N+7MPWB'--5';P]:8ZK?CJERY"?6%<MEC"PICLPL.\^+`Z%GO=QB^Z<&SN
M5A6)O0!4:]58A%&QE0##,-KKSC*%8)=ZNRCLRC>%@9OA^:8H[/!\+XK`7G+(
M5P[`=G4:@N#KA8=C,2WP<=<>W1>'7GO\6C'Z.D#(Q0'8LISJX&O&"\?CF?%6
MB[U>>O9\Z'7U*X</UX3=5D!F>?`U=5@2>+T>W2#B=CU:*>"6P;P\]'JEH:)O
M9:SET;;<9G&P[9)M=R"P(:W\P%U8/_N2RBX7AC;QY,.[ZA7#:RW!<3'6ZZM%
MVJ^O%&G?*1Z#I5'6ZRO'VJ^O$&N_?EVL?<=L^-I*NWU]K/WZ"K'VZ]?'VJ]7
M14/[AZG'@(;?="4+/N1:'>[6B^'WZQ)878UA!F,^>KH<,J*^CGJA]\=`M_)1
MU0RS>J#W.;,2"0MP/6]7"N164L4XY"YK*40QP5H*45G4*Y4XJ+3CS)?CDMCK
MG%R=:H-*I%JUIXZM&]3S)RX(2KV)$JI"*A]WPPDVZ]5^M8%*5K4S=?FZ[O+'
M@KV4;4_9V*G/2[`'J3CK)=->L`GNFZ.2P,<+7%'D6W6U"[3(0:EF]#IRECYV
MJ4&'(9DQ=`$!3!P1781V!]WBW[.WJ7ID;7>]XDA4`NK5!$]0NT]Z8E]1;("V
M3-0:1)OP0:L'<-Y0,SKYV++QC>0!=?*YZ,&P"0H4HTGC&Q@&V4,<3;K28_6I
M#IV.9JPZ6%7/[,Z3QIH[[Z,;ZMQYOSY#:8:UF?HM_*<-6\Z:,U(VBQ(PUM@I
M5/I-RU7WJ)!<KU`Y+F_A/VW-<5#(LUS0Y_]=)!C5P]:<KC*@'J'"LVBL=A@A
M_GUD.JBV](9V!M^Z6'!E.(2WQA#D/L%O^`N>?L[A+@O'M+YV]*CNB4;!0+-F
M)V7&/RY3BN_'&@,KKM\N>@8FJ8Y";P;9&WZ6DYZ>`Z\MT6`W>BT!__@9\M-D
MD^Q2A,8EE_7A4!=4H;**T)0H<,`J)](6*P3B#:I57'YU@SQ%%3/YE(I][QXY
M(\E/ZU^"/;KS:>&IE!29:FT7+JS"?TD]$U?W1:NNR%ON2MHL?M/G%^*FJG5"
MPOHI'GVQV@?I/JP]2DM]-(\+"N8K\F_$"J(%J\.SAS]\__*%XE+9I10IN?=U
M+79^?OK\Y5F]V@6'6W+#EP^?/O_S0]I5K4+"E0_YQ7%%Q_`3U)/FH/5,<(#O
M'\G[XY(^?3+$O`ZRJ@]4BK)&`6N+B@/1.UZPJ5QB8?FQH%J78=W[.YLV[3C=
M2%69QDT(&F<7UQ0&UO&@,M'X35S7UX-\G$A[A9@P-A7/##U_+4V#\D6&^78U
MI3">;<O$LY$/7N$!"?UT<GWD&XO[`=OW>+:11YW!^3DII3$T#<X840\M+)6/
M.2,'NFI<I,,)^2G"36Z8P<\B?U5;.Z@\<^091P7+3/V)F@O3?E&/$>!)=E5T
MO?&%V+24_2SRN*/0VLQ#T)!K%;$;$2;,N!A?<N()P0CYO@DOD<@,=!^VT,E[
M51M>%*2-V9*F)G5%_-QA)TP;5YC%?R1\H%LOCRK8S@=CLOZSDP^!4"(B)+*]
M9F+IORU#E%L%GDMYC\*M0JE3VATKX(-R-]`4=HV;#(?&F/J8CZ9S)*(P^M#^
M0/4X>A2'127`6L?1!!53](S*2I'/:+0!SQL-K(_;:/`T)J];]HSYZ,6>+>)U
MDVW[J-/N%RJ@*&Y0NNI8*0[<C92FNC?&4X442]UQX4URCJ3S1KF<G2LNXS$+
M2@I5"VZX:+ZAJHS>?X40Y0_WW"9@,;4AN]>*+@N`$!."A6V\UV7^.GA1JF58
M62,*W2WD*+GDVYY*__2/#796OK=12C%30,;:`"]B/+W`NYP-ACVJZ@4/UYU[
M'8&F6_:BN$])E`=!7++SMTX*CM!"\UR%(&3TV8>;:$02_?3_-K9]@(_'40`<
M&5<1/:-<4!,F=TJ81=CIPB0QV<;.OB\O\K\V2(PY2$VL@$=$<[D9H[>+T.@@
MA>Y@B:+09Y072^Z&&"0H#O<<>A[<YY\=;;:IHI(M^N$<P`J9*@H!:H5:(+8@
MQB?X-V"R.#STPV&I)$BUT!=6!EE%J+.S<R&?8I(?VG(>__JA=^-%(@XMM%98
M?=VWM&D$ZJN&[(A,87+)VX@=\;PO.L^Y**P/XRE59''?>O#BU=EI#;!AW=T!
M.BTZ&7#WWOKNU?=WM6<4-*46M^S<?T,BJ(>G$3&U0MZ]ZLC"3Q0R3=4N^[B_
MX/GJ,NE"&;0BN)/N(F[TSOS6<"V_0=\-D^PM<:QZ.O+`<UYC*RLC)/L+WY>+
MSS'S(D=9><4>L*H9!2]%5W!SP!WH:D*Z-D;.(G5AA8M03&$JR"999Z8Q)@29
MIOED6]BC4!4*AP<E['6I+ZJ.7=[_.<@32/JR8I9`N\K-SY(FO[PPR4+?IA'R
MG"!0?!@(?YN!]*>,ZN?*?3[@,OJ*\ED<B`NFH8T(^I<5W)PM!CK^`3GJ,#-*
M#HCE?!9]2@N-N!D486WG+GEJJ'JK21`$Q*`(2FH2"Z@;$54FM8/(++;T=2#O
MG%"2OI_GN4\]Z]']#MX0SB]19\=HG/,X@&%;]X*1K=P:?4&1M:9YW\1A2<57
MY,;UU77"[(U$V>C7%V6C_Q-E/U64M1[7#D^<@;6B^N[IJT>/'O_E>`41>.UC
M%2+_T^7@Z#<J!U<F3SEHM>/VP<Z>2_,$'WV&=-VEYR,9CR2_^33'LEXN"ISN
M;IRWY-JBK+R"*5BOF&9"#P"?.OH@P]?-,!'?8Y2QBY$.G2GV:[.=-]2NOSAY
M^=U+TCCX,;Y/P^M1X]Y(=);BH+K]L-5]S52,*ZA+OAT:2PT9_ES[/(YI119'
MGZ9H,[7822SK(K6T>_F:`/-CL6.IGY\#=:N>1YGX>-6VLO13315B$WO+58/2
M+DH%"4D@L'%$9VSR0;U%:-9N%!*5NQB4SF*O/D[UKD1TZ!S;\MV=XA2R,M;9
M(/U"['QP)1<"Q*.EU?*BZJ*!+NB<3:(/G_WYSR<O3Z5H.*F0=IN'<7NW?>`R
M;?TVC@H!IC,E9W3V/OB29V(A9AM1B?V6L%!Y'O/D/<:]*[4SF*SO5D5F-U@X
MOLN[(U>8;?;OAN9.A?%5\;WZJM@Y@*MB;\_F5!L;Y=EQ42E5D-^4CXTQE`X7
MOAUJCD++ZH.'J+\0]D&MWHS<%(NJC-F:S*#IC'.2_.[5V?.G#Y^]`@[$F\5;
M@6;'31<5A/,9RRER5NXPUV&F."0AQ`;SB`9"S*[X?DN2Y+'*8X1Y,(>$WW`P
MAB0`1*[G:WA05.@/BS>/7NV^IV6-L;GFU`U$-*YAB`S"/X"IN.,8"Q?9W46V
MEU@9A#"3M_81D+?]H`#WK[2]FZONKZG+9+LUCV^RG4Y[NG!'?_ER.QJF@1Y6
M$SNK71"&>A+3D'5ELI&ZPK-W".&ZD>:'+6C85F,;5GL'H-2&+254EQ+`8:CH
M1.4L)[/"P#2,QZR)$&`6(^%-`[Y4-#L)MFK^^550=<MH:DF`J!4`!,VJ;@.I
MUV.A@P,J=/(`.I(9UX*'\VSC_>;`H_*.3IN3T1;@M%6$4[,"3ELE.&U5$)E/
M.IG5A'@?>?:#_2"Y91G]0:@<5E(SESB.6MR+UND<'1?%"L2_8Y0D"O*$__ML
MT'T+TL76EL-@BI<8<+0:,YO?\J&"<Q3=Y2'E.Z+-K<%0?_][M,E'3^4K^T0S
M>7R+U*#F9MTD52;^49O-U"/94\[9S%)&ORB`Q$T7)0IG>/UM5/E]PD68@2'<
M%:39RX*BP$_4-57WA>DP)@W?/3RP=/BS=G?SZVRO8^Q^W1T6:O-/V5[Y]B?M
M;>5)/MQIQ>W#_2,]R2)5Z!Z[A#A5^RQZG!8N:N/.AO,9$$L()@:3U.*%-XRD
M>*%,^29K81THV4)1?I7XD':8)H=M21VKW4'='JHTR1LX2U]W\Q]MR+\^"_(.
M#"=%,==9T6HN<;B1!<P@^*G`BYU5(;/IM'LQK='`,<%%',4+KBEKUBMJ3>?A
M]%*DJZ-HNN)471,#AW09'"[3,AS@60$.#'"\WF#V2\#1A8N*UW5<,:(#BIM_
M\0O.K!4Y-;/F+:-D=:'"NU_:GAI@RSU4.<'YY9^$.?#7H.M#/B+$3$%,BEZD
M+'.XE7#&<J03\(^R5CZL6)6B[O,6#0EAB3W(\9J=FD-(>P%</N:!)*;"FRYO
M1VU;]('L]&WQ"=G;A7MT;\]1VB]X^H12W&(C;]4I]$+S=:=0^:MV_<8;IP&&
M*^V:*(F_Y,Z917ZIG:NDHT?MW7BGU0SH*`UM:RU);O]`'<!SQ](NPQG5T,'(
M*Q?$;ER/1?&(*0J/W3`5"6"'Y=ROE&%=JW[5?+)7Q_PWPD_=ACL[_!;5#U@;
M3V;Y:^SR_9/GW^%IS\Y]A0%-2HAC28V:WH`*4371U21YW?Y1\H6OL=XJ#(NA
M#-Q2,<'7(-*<C*ZGRG%H7>X%\?52%@=]7&83'SM%NV;$@`G)-%M1.Q8[E&^)
M)%RF/)F(31DP8_KF?3(U'_5!8YK]?S()@ODFYG/XSD:F4OXO):GJ+NV;PL1F
M0]M!:EG,<%G%H5Z+L'=GHZH#&?_PH,1TX&W735J>0DEH@E8;6/M8B#O[Z*H@
MK"-T+-`%6K/$PQLV&M/?F5W"^'KW^ZZ=C+2G:]%'O/'W%+;%3ZK3/KTH[5_>
M%VV]9&+%A$82BH.$E$S?>.;&F+A%"Y(-O)9K;>T\S=Z(I\0;*DU6:YF$4T'E
M\2!2URL6"&%-D"X>=?@D9AFF`?VWJ(A/Z7M-^IXO`Z$I[L*OW'_^].D+ES#7
M?^J^S\4R[CM?.<I&%WZ8P=4B$NMP6X(476T3Y2,OK.^`LP2N<?46#T;)%H1>
M7F(8CO1,+X!L*PXS&5C0>C)1^KPI\&AF,L52AU0$X/T@H38((6>GWHX<`)1"
M:<*XBU@.!:&7<DL:-(W\/*62`Y[=Q'?2D:`QT#=ET@7$E]2/&]L;+*'0L]:/
M=>T6!`OS#3[IAD&HBN"WMN_<LM&DUX(OZ#V9%`)/;9QIM`"G'CQ^:1'WNJ.@
MQ7.]P1ZQA2Y2)>W>:G]>]^BG7\:F81@T$.L,<^A9@HTK@JMJ;+"$=^^\Y)!.
M`V(*OM>X\6^>GOSEQU*O";HZ3G:."U]%H''IQ#BB&JETV3T]>?F?")4?/4IX
M/XV<Z0NEI==X/YA`1YT5435)BO9-WY.]?A%O$RI]T4]R`-3V<GNY1S?'G-3I
M4V]XL^DG\SO-16?)-.\+BKO'XIF&DJO4;PG#V%U)R989W5_2C?WR_3-)8L9%
M>[C'9E>3X$4`:QN]8>'MR_:=:Q97+`2-T89HD?`UF$)XHQ7>%8]FUR=R&$XH
M@]#V0GCK#73NSZ>/2ZWRLJ,CC;AT;@B(3<':(?\]F,AH@!67).>J%=.YC_LR
M6?DSZH;SL,3GW-W7E(ALC.7]C!LND<*T5_#F]/T9?N:;3,S.ZXOBUYV"XYP2
M(8B&8]W-#G@3TFD4Z*.XM_SUKT00401VI'`2K,`9"H5RE";HM*+G@4!V#G@&
M+/UYF*D`:0-\]MZ&G0\1#-;T5+3]1[DMZ8FT*09"S8?)]#ROG0??D@%X8-(J
MG1L-*@(I8%@C<\.ZU3+I1(\0`+-Q"(FD\-6:]354+$X_3!)-AH4_,*K<M/=R
MQ?9U#CF:,`*)_+Q3NWU>O%9L'.LP-E37P-U<*P+2.QN%Y5<OGI@,EQX:#1`)
M%3"VBR%O4A1S'0LP0+=[5]JYO)A5INS+WO&LR'4RT=2'EF@D$ZRRB!\%HEX`
M,LW:^_R4@A2V"S-S)!(5_W%TOAJD@6+6B\DDV-W(7CSFP&3G>HLYD4W[EP2Y
MEKT/B*(Y*:1:ZBN=6\:TO$!1C/1+Y]^6%@ZX'B8O;2,=V;9(;MI`7]J>P+"A
M%8@"D)BVYZ]*=,LS:M#,??+:@^N2%.DUHAA=#QEF/Z):)A\5R!C@,A:]HCSC
M_]B((\>PZOU$V<?QV-_!*@Z!0H#DE+C4`R8_F)'^':08=>N^%$,^86&Q1^`&
M6TT("CT(KP8YN_5&Y/B=#$T-YW(/+*)+;F[]`0<8C;<7$1M[OX:[/M<LV,.Z
MW]0U,4N2"9*557;/]=RP>@.&8[=7'V9MJ%-QNWSQ!&-$U@-=7"%\><+N[.*Z
MXJ[NY8N;['`D@'M;N5H_-ZGK0RZZ?;IK=\@9!_WK=LP1,+?LCJ*G>[>6Y8V&
M$Y#7K`9HLE.$CJL1R=0EBHH//Y)>!R[MY/78:['Y&=*9237G6,VD>EE_K52Q
M?#%/..K)-SXZ]=='I[E";0#R$ZRLPJ=A=']8!Q/>%Y,&A,5QK#E4+FWQM>(;
MAW;?.G`2=^+*F),%Q[AZYG)GT(5!5SN)`.ZBT]0J>1H$(`S@2NRDB-I\Q8E[
MOJC$K[)N,JN%]MIOHUO_N(7I"^_=BJ.I<T":3H8,G.+JUMF4ME"W@-?W)D&*
M?Y')6\'QN-JI5*Z^G(E9,AP`72!7HEA+ZNV3R^=!VZJ]OY"RM.#*BZN`__OB
M"M,;ZD0_4>>Y5.&I^`W<`>*!:Q-'M^[<"G1^)IV=[:@EO!5+G)K/*=%\+>`;
MZ]%6T1\8@ESMHF,U:8NU:-=IT((Z$=<HT595H"U1GGEY=07]F5PLUZO0EBME
MK!JHF('S)DHTF<[J>C2K>5^@2HNB0D:Z"FW:)VC2BHR>OPJ-/BW4I:VHAERS
M.K2H,D=;H<C30BW:*LKD3U2BV1,3Z-%6T:'=7']6I3N[F=[L$W5FGZ8OJ]9V
ME91=.K>2@JM"N;5(L56IU%JFT/I$9=:G*;+*2BS-G;94C^74HN<E1=Q-M5F!
M*FV!0LLKLY0MOXD^2Y9<U!AYR<]IM8H$XX9*K>4*+;I;BPNY3JT59'&]1K/E
M2%Q1N556;!6:_B-L:O5:G+:GK-IR%M%_"^U6M69K!151@=+_LQ5;*\[XU]=K
M+=1IK:+/*@B-R[1:)"\N5&PYN;%*MZ7R:*C>JNSB-%R%4UQ2<KEZMJOHN6ZL
MXW(R:$G-53(CANJM50ZOT7!=K]RZH6+K9DJMFRFT;J;,NIDBZV9*K-456,:U
M?I$.ZQK]52!.^DU947VULNIJL=KJ&I65EZVOUUHMTEC1V2XHK4+5WDX@@"]4
M555IHD+%E2<(1G?U$?WH`]ZQI+/:"KA%U%=M5;)[JJOR\_I84$&I+F9+'7A?
M84Y@EN7K%,X/?`^R.:+GJ>/&H;^=A(;4-WJ2BZGDO_];4UA)]B!-GF(<+$(5
MQJU;<703=1:`7O)AC]V[?[J"J\H[<*>U=QCOM/9WK7=@T=B#[%=,Q!<S(=5M
M6@A<"+G0*X<U"1A%S.@\=H$O:\4($M$N%3XTT;QDAVWT`&\'/J@WG-OFUYA<
M)2!WFGOQSDZKR8"D^1_M`VR;S4,;%'NBVHU+0.^K24JYPVBC1'$48:#&:`*,
MZ06I66KTDDINSJ*_!^A"Q=D>G]Y_^N#T[QBF^!?\5>>8:W]Z#:ID8[W"7":%
M/O]7@K\4;,PQ2%N-&?)9>OHN8Q4&#A72!M%#DZ7(92RB%PF&B?:3#O]!4G"2
M^BY#UV'H(X6VS&J>H@0.MV4RG8),2FF\7#XN@*0M?;?ERC528[<<'?C%PY=/
M3YX\>7Z?EY?X]4%[U#\FMH=D9,85UO%/MDK+TD5A*:^IN6B&*7S+Q!FGN?A*
MNTG2P+#=DH>AYN!-6?6)B'!H'(?4A2_(<WB8FQ>+PO3D=76<GND;!NKIBT71
M;/*>5HF5[N?]VNTA4[S*5QKI5HQ>#OO8%ZX'W8'!:'W7*7SLN@2/)]6M)S;X
M[F/TY.3TC)#"9)(C:JU5["3'$^56]O3X/,U2K*9&.XV>N0W*205,#=8N'`*J
M8ON[DHJ(X\S[R6!(A)EO,SBD.;`XV0P83=R\2\EO3R7\3!T[S8'82375(>)1
M-4UJ'0!-VCEP"2R,O%BC<<B5.+]`VNE31M<IF<=M"HE^8]8I1Y`.G>;$NXO\
M2YX'^>91IIZ>\T1]V+C3["`AK53N!+GSAYE[=I_.830ZOO8.X.D?!\7;AJ%-
MQ9UI_$)$+S'-%S..F6,<1Y0[FAK7(S6SP/MC9XL8-;YAC^VBI_<21VK79ROR
M3[!<<+05&'3-6[[W;2UN]M28@*@ZZV/8Y:W?Y_C_@`^1X>D'5076_EZG6X:;
MD7OKMGC'6F":6=9/UE`/;)D&89Z-`0S3$=5N1<1&Y$?=6=08$M/7Z$:<W0=D
M&LHU`I?G3K,%]VFS[2_/WS[NHEH2X63S+4S#[9[J;GX:+E\E$RJOKC<3B#+T
MZ#BB__CZ.9B6G)*HS0WOOAT!B?(J`L%6&E#Q5=!55N&FS5]1]'"XARCFL8]%
M1VX::R3+>C47116ROPRV5%.^W6:\L]ORE(_W1S3;B``:&L\7SGLTQ8`@.KRZ
M)6D>8.(NH_E,*_=JBGF;,ZUD97GXEQ<GSQ[`OT\T%A1XN]F41PF"<!VUR5&&
M027@3';<,J.S647I%TY7G]/FS6;NO04U-@%84X[[8^==0$%%[TGR4&P*HDGF
M[U$[(.E^3&D`Q@!RK"#"4&[A(W9,\8!FO9A1S9_B16#]$B`E&EF$:H&WD#A9
M"0@L`W09,-7'(TQ.WL&$CAQIY*OZ`MYBP>I"3=^&2I^;<-/?TP)VFNM6R[IO
M8B%1%?$;'+<_'O8R5U,'\^[V)J;"7P/C]"4]['",Z1\E-\HXF]%;^K*O:RY/
ML)0T*;>G"-A!UZ?6RQO$/NND.?L4">Z^'I]B0Z>JX$_8Z0]PDY6:^U;IHJ'3
M)4.GY:'3<&CII+6P,!4-_]CR#28,>?ZA#1R`PDU^W?Q1]MEX@;CZ0A/)@ZHJ
M:13!I>".:#6(E=S4_JAG9,VA@'KEE'4R`$\:-0_^`:S7/*!<HV['6;6<>[Q[
MW5&XM'ZT@Q3?N3R&"`3?D+#55&GSAZ$X&*:"\./16QN?5SE:,(T?ZZ4UK1O<
MK_P4?T;0_,5TW)MWF5.WXF(CK$L%0]?R0HY6%>KPC*A*4_1/EVGD#".B6Y)9
M8`UK(B>B$>+E,4%R2Y7:G`Y-\8SK$\9+/.8NMAKVSD755N\2M)#$S7S2Q[[T
MM!+B%0MHN`N:,JUJ]O9"D2EBF+8]\[;3PIC3IF/>/N7Z7>FF\M3>BO/$=5P)
MERC2O%Y@>I-:42\*\R6:Q--B7J$;*N/\[V(3OTQ9JZA*.&**[KI$\^(^(RI^
M=KG)N*IF$C6N?&KZ9$@:2LY@G^>PA6&"1:DX\UGWI(SA;THN?%-U5\H-5[XM
M+1_A"^'(&2W<BY$O5C9RB2VKRP.YXEY5F5)-X02?_]^DJB(#E^IM<,4BI9LZ
M7$'U!0)H35(U8S[T]4(^=#$R?<`JXC:1AT"*7<[ZXSDE*_/*M`X3?'6K@NX;
M06;INRX_*2H%R+QY#A(\G#`I-I#-!MG<%;)+9KXPFS7MJ`Y"@ZE<'?(/4M^<
M,^\WM5P/DIZ.YBK"/]BT3AEVQUTF$)3?=,QE4-16:K/(QTXV&`M>:-ZKH6:'
M6@NSU8\EQ1U1.Z-#\R30.ZGH`R<LR(-AL<6PV&)2;#$IMN@76_1+8Y0F$B;1
MDX?O*I\Z99^<1#H">FZDC3],<ER"#!E,H5P?[,&:RL3(?HZ,N:Y4OIESYUN2
M[HG6,X>9A%T5V&@OL*!H!4S+DJ_!C,R.Z.K2NV)57B]&GYGNA28H)XIVB:FA
M<WQDZDV4DN^[-_55<<W4.VS=^":J%`QWVVT0#'>:*AC^S>GX:OD%"9L,[GM1
MHTV^$_BG0+-FDI'96@Z"ZZ56MAP`)?FGU/^6D`6?Y`NQJB(`/_6%&<P+SK\)
M=^T>7+@[NWKA?H%E,<4S2!F<Y,_`WY4/2_/?GF9(QLIUD[(R`*<O&X#M2C7W
MJA$L1"J+;I^&8-7GZ&@GWCEL-8W=L*J*#1SRS@2STHFLFR1:+W2ST^$Z-+:V
M)]:+IS:;>'E!$Y,Q6CWU$LI7U3$\$'9CQS<'O$2\W>AUI_2Z8U\G"'\8,"P5
M%]5@!75\V\"7IOF"CX2#ASJ/A4/:\JU,Q9+I(`<JYMA#U/LI-:^1<RH^R<=D
M[:Z7:M9J\2#H@&`7U?DF@%1_=FQ!5IF8VZ;;-5P@ZW/C"/_JU)UVMU1M%JUZ
MZ`QYD2+S0S9-=_'`[9*B<T]4N]3BNT[LRE$>UC)*S#7D56Y<9GG_P?84'A^Z
MI.]JL";`@EIMO98PLU;#3#SHIBT/X&^;AQV>QOB,O5\J00:C"I@\P*K@96?1
M^(9S3G?XAZ8,"IMHB\4-7(N%34@AU!%[0>489`WLJ,V@<@QIH6F&A%6O-JPF
M5!P9]4ATI2*&YD"2,-YE>CX'&H+5(JYRM_^RH4Z/86I[(;XB1W#&$O/4#(%,
M0\[>/P+=R([D"Z"D0TQ5.W,5C'VPC6A-<'#@S:?`0[O19:3R1\*QGSU_\OCT
MS'UB.RS-Y5!%SY#4Y^+;SKLL<X4M*=.UF4WTQW!B29T[DY@YIX/_=/&?Z42I
MAK.!@2A^K#I&='F.HVQ83NGZ'9:A,ELGQ6NL;D-K!*$T//&6+6"TLBYK_&LU
MKOT$7)KJ/'-R$43+D_/7DO*I8A<KY/D[(4EF0K4:4'V/Z6]GQ9S\,'`YQ`F6
MZ8.<QCWV/0/X;&U56>&PA8)J,YF4ZQ&1/QO2_%906X,!SA`'D)NZC^B,A!AJ
M4+<VF*G'>ZXDRH4XO,/&M1H7_ZX#7&/<&P&.<+"^#!N1?;@AZM$;X';'&6`*
M]\120/XO($M*ANMF;@A5+AU'LQMG5(P$),1Q%V]P[XT_SKII4-^#0-,UUDB:
MZC'"[#A"X!KQ'^!!P,9W@<6IPSAS''4H2:`AIP1.>EK'MUM;``0M$$*W(_;L
M3'S*O<UNL?)5R220>SG[NCU1;G2E/1$4^I0]T:OT2^_)%]@)O;)NLA/.C6;Z
M%J8XSM&.1MZL1*F1=?0WM"BZ!IESL;$IUR5BJH07.)VZW%8UGA7?63PW-7FY
M5T$..:;#0!*&PELYH]<U*$2:H`D3C@P;98&.:*BOAO1N6!`NIY,*[H;\_E&=
MDZ67$5FSBAY&TMS>$(@W\)>Q@!'EGELF@FQ)BXJA?7*M-%]NGJJYX['/YM&W
M!*WH;MC:-N=I,J&EGXN*9<M;/].@-/<]]_=0BVCK@U&IJK9[XQ93>G7E99;P
MA4*O65I#XQLJV":O"KN99KU<ZT],D3,H[^@941K/EM#9GB`7G@Q=T4^B1-!+
MV5:XY<3%YQJ4,)92(<=.?%;$<)=\0659=L=SNLB27]]L>L6^?>1B9+S[UJL]
M^+1VDXBFGA"5_?HT2:>6E.CS+_MB*CY_\M-7*IKWI0__"BN1K:<?DB[ZU3GC
M-OZ)K?E7\;"7T:?DY1<+QU*KA6AZVQ201R_>)AR--HHZ&?[?L(3<#G>SXAN'
MYAF(<YZBX'JNC`*EB,_TWV/[Q@T$"T!G"Z\\J5JSHC\7ML>KSJ]=C-1-E-Q<
M>QJ];ISV"P-V%YY.IB*%>NB%HY881"+B8_:$6E8<Q=Y\,D2/%'1^59%NT>'A
MFQO^AD[L:J_>8/;@R+.IF>?4LH[*Y18IFK*QOI>Z`(A=0UR;COWK01"B/A*A
MSS28EEI,BTTFQ1:38H/`W])Z<6F#:6F(:7$,:D!O4O.81Q[1#_/8$7'Y:6$B
M=^3RG<3P=]KP?/5;<I).1ZJ$Q$?AEC*!/C=(%OM3J`(,,O/OW$,^$BD^3-_%
M42IQQ;;0,0M;W7?VPO0X.ZRXD3+_+"^\#E53&LGJ.FS=B\Z5A+"A)'PS=&^H
M6W`'+T)9<PD[\JFS=@34+"/SZMIB*WU`*/+>M<TJ#[?UCW;MI)\+(<X\(IT;
M1,+GCI"&$,DL%0]%4P>"FN\>2*-BN"R(I,IJOY-O.4^Y=\?1.^2--6R6\\VR
MZ8I)R^8[[K\Y">D>SG)HYN_WC0![KLYZ.FKFR;T8G\\#?SZ;\MJTM5\D2V6F
MY)L_*Z3<W-&9OP_227`I6-BEBV#GH<?VX%#@2`6"](7CJ(;AY'"L@(]/"8ZI
MX>8WZ?.IF\)"_#4?6DOABI'5C>6G>Q%0X;&GPJ$7''^VG)F^`CY5P.T:X':K
M@,LW(,O0CH"$P.U>#USN6`1O]YU^&)$3"%+4);!V75@W2SM"JU0XO&Z]X:5-
M&9#.^4!;CJ)`Q]'6L,)E+&3;&;LJ[V*B2,!(\K5AJ*380`I7JG\:W)+^\73!
M\\F"Q_:F-(_=]:BO^(U3$8PJ-=P,&`KXO>'=9BV"GWBWC8KW6ODN6W()A1N_
MYNCBJ$@71\?1R)!$O[N;H^":*9$Y;_`+R)L[8:FA'_9@J27'^<[+-N$3<]+9
M@6!3TUFD18V`3J'FOA%*%;6N.V!57W?)6,A\TRT;X4I6N,VN3*6[;"KX.3\1
M?NK@<LZWI_>3\19M\1;U-G5T)[E4;Q.K4[*GE*V_1P?Q3GNO90+EEAOCC(HK
M"35>548YLLK5G!(1S2B;G4[XL%.O,M6)K2XTUE58ZT)+6H6]+C38B<5NH<F.
M#6R!T2Y9^+'"1Y8:[OS`-S&=+#`F"*&H,B24-Z&DO*XR%7R258"T@X:Y<UMJ
M3`/^[746`GOQB2;\5S(3R-=6MA)4ZI@-7`H*94.GW:^%&O]/5_D;(-U4P^R`
MYY7,)DZDH&HNJIEOJNP7YP[5+(<QXY9-V2K*4*+E,.XDGT\%*UT4#EN[\<YA
MVQ4^Z8W?D+/$?#S7*]DXRL!^$9NG!3&Q_HM+:1Y'(.-F/4(S+OKB60^*^AD5
MS'+>&Z-@K"N4A\SR=*J%:K`$'BT)D`2E:9@O>F4.4XS<879DD$=:U"[:C%!9
M__(A>GV>W#^+9D!'\BCM]],N)I[Y(97?@_?I$`Z;VCP="*+(CF4<J.A(`HCG
MF6\[7IC0(D@^X126J+8C"QRE5:*BHS!3FB@9IK&6F2L]"D!"<,^SL#:IUC=U
M8!`M(?F@#IS_E^J_(_7X-.$9>#FV]_;@<CQPOLA?$0U@4O^'!Q8/7!@X8('&
M=^-N?T&DT$_<`"VJJ<5.&ZC%SJ$M'(G)G\BS%^`]&IQ?S-"58?P^G4X'O5Z:
MP5\8ILL5[+L`*5^]/K,97]Q@%I):D^IF__,5=XWK5TMJ$(D+W\2')4\04P"`
M,D?)E9E$DW$^H#V&':;,&=$\ISQO"'J#`AJ;W)L3FB+1Y?1FI99L)\DILXZT
MICQ:"@,^B@<[>!0EIK-Z&W9;\<Y1L^D#]S8U!GK!)[=7`]J:GOLW.$[-.ZN;
MZ!,ZPRSRXTJZFJL0"YL2C#F"Y(&YF-%H.IOW^SX509B'2B*]<JJ"37$H6FCU
M,M42M`TM7'8*J-P``',T^9!NP+N.3B`OY]#'PX%+=</68KBG@LRE0RD!#;9G
M3#XS&H8NN8TNT\&TQ_2"4O>Y)"N..D&/"@RFK[.W?HQH!JB5#S@5IZ4(K@"U
M]$*Y0'[;8$I?3Y:-3NI<U8JC1LM&VOJZLYHZ='&305+1QJ8L\KFR!B:B>U*H
MS853E?#OZL_;P(F/%?.HG`9YU`O..;&D,^VD7)>3?MD2BKG64^],*;?#9.B+
M'?KY<K<J8-`;KFGLW^,$L$;O<?`9#1$0B;HF1CQD"^D>K"_9-M3?N?!A\[".
M1>-I')H#__2"FK8D+<Z2X=G5K>GAR%##RYFAAM,+H(8%ZZ?YL!HDT+J\*Q8&
M8G"%6]M?M(CX>#&]P9N):"M26GRJ^<'XX*1<]%3]VO!0,7\DESP&$B79S-/B
MXIG-QI?;)I^6&4=\)DE=3[R"3P8TD'=N#AJVI"YY=ASD&3**?8_$_5$"7`HS
M<9TEQ]IVY1$OW>S1NMB#C>E!PWA\0B.<+7I_O#EY^MWC[U\]?W4J)#ZJC=(D
M(UHUGI]?`+'ZB1Q5$DG[@IF>E5P-^L5X@($CELC_./*U49>[D>EG/AZE>EM+
M5C(D4QC]H!",51L`^P'"T!7F#M#<HCB1AO@!X#,W#F:.!2@]Y\VX3*[0)S`(
M7:`U,+SI":-.;XSDW(^C&))FP(DB,GG,&XS2W@`YGJMK\TW"(>;=03@[,/,6
MP9:PQRB)KUR]M4NI^<H'/RP^6<%R%5D4'^NGS!@S!(=PV^\T6SY.\->Z[?_M
M+US<ZZ2SF(82O4N<CJR6I*L0]B)-1W*>I$2)D]2/U2&T"88T8[[GL_]_!_\W
M<?!A5I]_FBMY^:/F/O#RK1W'R_?3=.+/HK\K<$DX,25$>(1(^>0C62AH*8QL
M:;2MSTW"[D,%N<BJEE1R3D@!RP!G_ZB<0C%SZ(LJ*O%WQ,2\&+A/,G<:_33,
M-U2.V6EB7J66B[;ZB@NKX?;0#E9LS!=>6_4F[NS'N\WVWL)`'U%C>XG<&P5#
MO<KPV/R!!!:)F-.,-(RRFXV_FL1H<^)=63C%S,0YL3`?N*GN,&KH$V'-F2/9
M^N<+6-XZ#M[RR^IW%$HA'^1WJJ<>?&`J7+,*;K9^<GB5E\.E3H6X'@(U@B//
MDC@V;=B[Q5TH8V(G*7.<2NM:YB"ORJB.(W&J@$L*FZ('%/?KE56LSB+,?/+#
MR7^?GCU_^.Q!W;5FW=9E6DQ7Z?15N`C->UXU?;SM!EZSU4.%06(U(%0]P"[7
M*,%$WTT$6;0,+%H+)QMJJ6RNYYNJ4#S5T)TBTB%1=)SY"'_!!>!";,G,'G$K
M$=T+>CYL;8/L2'Z073GVQ@T2_H?UT!(AE<(S+S4(8W\9YF77;[$S)5[/;*H=
MU6UH'^]C-U=,MC.1I9$/9A`QP2YA(C29X\E)JLT"?_&9RS0V4D%Y23=^;62\
M+9\^TDA_QP&@Q4N.C@Z[B$%SM4I`&*&T>BX#LF.!S(%Q6?@([^:S\2@Y'Z!<
M)!>DNPO5K:!JMB].7G[WLAZD#?O;WWPJ,%.'!9FZB.(\4[R;X4!TIDF73B<5
MA,'L!^/W5*WDIX\;M@I\5&*O;GV\11Q9R]^X"AN;Q<7!F1+=Z*&5\E(JIQ=7
MA,5J.##.KMO?4+#BDZ>G3TY._QBDA`BUU(F[-/"07SI.BZH\>"!0@\@S5'Q>
MG:A,GWI#WW)<&`R"OU+)M4VWF$N"O1V,\UA:<`$&3A`/5QY>;MNKR04F39\#
MM/@FT<W9X4JS9K?9D.JR5_.UZ<,@@MJW1%^I5(QS7)'4LX6*)/J-H+Z'*71D
MN]MZ\58G%?C&^!I*-ON@FG!)4R3=.-V@4VP%Z067YQ:<LBZ.+N6)1A#Z%.+P
M$:H[,1DV6E0AYW%&YT%*$&@>_BU\CUYXFDY$TF*[(*!!-R@F5;4>HWRK%U?F
M?+`**VPO6F'7K7'0Y>I4X1K#C(A?8VK7`G]2"7B&FTORHDF+!89N;\B;<=`5
MD7MGYP`3(+07^HJ4^#G'D]V,H?MM<DF%4M4%O6KJU(,A-^7TQ>77W?S_F*T;
M,EO>&<A=_X6-4/AL86YCZS9)S)-A&E17:W@WY^;HPPK]AI<XN"W/W&WQJ^87
M9^N2E=@ZPPS000<:Z3D]0T86<'KNLZ+*SXM!1)I@R8</F4)PKN33J6-3B(<9
MN)`_.K(U+6)XFVH8GKYZ].CQ7TBXW2P,SQ4/"TRD6::?3G#D0A:SW`9GX7-*
M80RD<$.4L[>2KUPWN;U^%>92,W_0;8B_.]/?&#=I>,7BECY]?'J_+@58L!O\
M$RSHAEPCJ>B4<<Q7X!S_=W.--MW8)W"-A6QEE5QCF)=F-99QN`HS,UR)F6%V
M1N801T//V`Q_@QQE?Y6%]V7A-^0W/<]I2L$0./H>*'W2;P4\WY:FYMXRZ_'9
MUW)-K7P#QK!*\;?;;!_$N\T=J_@K%)@IUI)=EQ(;"X$[70).F_9<0;A33#AM
M>6(>CNX>&?A;4?#=I:J:)7[9E;BQ/I9C87V264!*\;+[!1[B)V]WR-9,U]SI
MF\>G#QZ_K,&C[7SV9C3NI43\B+7>W=D%UGIW-R@>_&D0D\5]&Y;)A)4UR]A9
M`<!0QEN`H(NARQ#F<:\'LT=7[E'$V:\)]VK,W4',W768NU909T6A"P<5)?:7
MY9J]*9T\;M@,PWO9)B+0C"8D_G/[\,9D/9A<F::(M.%;6H8"\B.8X>N-.QL_
M^JF+7^/N[CY@VYX3Y#Y[E4:#]Q7F7+U3N[A3AVU?H*)2&.IZ%HD$(;H$N`QC
MCOFTMPNI!JW3#%=78<`L8\/@,XE,GW,>8J4H-A$";^%X+V(\`N[BIUA*5P%3
M1LU2XIJ76>/*1B+B</[SX7^?2HEO`\>8X&@>?"P\:._M_VA=FKQP/9HL6['S
M*)%J4;0297Q)X(.5%E9E4DX;.<T=\Q(&%OG2>"E?6M8/MT+6OPI#;PZZEN.`
M"W*B.\%HHRL@C>-K>X,>6F@99`Y<_-<$\#*.YMDPS7,5X9T/Y;C"/6!%_M."
M,`I`6`"?I5515'U2BVE3/%"7J(<%P.N<))L8.!FT5JU`AVNB1?=5'`5*_J(^
M8$2YL=:*Z$2F3:9S>WBK'A[X0B!?@$;4.,VWL)-**7ZCA.(KT8DO3AF^*!%8
M<!]]L=/^;W'8;WC6#427R/2+C[IH,Q:?Z'4SG\H37<T%'!X"%W!T6,S)ZX,G
M6HL2EWJ+Z/ET4I&.1"(1UZ6%YA&HJTF3>[FW-DS:*\!]9QX<BS_83_.$BJU"
M!XV7/NL@;.SY[$*UKJA='6?J=H2)A>B$F63ZE&IUSR?3OS%X_$J2I2M(ON#,
M*S>Z!0+2;FMW7S>:!8_13,0?^!5K#B3\3V\\"6P.OKP6M<RZKQ\\_OZ[5X].
M'__/PQ]M'([X[%-Z=/AOA_^3\W_F_)^1-5)P*K/-"==4=S3`!*/]]/L-49#7
M?O][5$7\/HY^G^&//_@LD@*_;^I*#DU9]M]O6"\K?+ZU-9$:(FLN?`P(VN4`
MO6>PPKNPVQ0'!_WO!KH1!@XAR-X.2`)[N^Z&_%7`^EL!W\UA5HV:>SN`FD<^
M[@3D6)&+,8LIP<7(.0"#+:=2"]Y(_>N&F\1W,(F&OG0%:>C/&1"C6>WL_G?/
MGSQX='+_X7</OZ_[MZ61.H61FL?1J'K`DR=/3L[.7IX^?_1HV8"G9L"\>J33
MLY-G#YZ_.KMF:GEAI,53TP'9%K9PP%=FP'GU2*^>/7CX\LGC9]>!;5X8:O'<
MW(@+)T=%9)C+UK/KA$YVR5A;OJF<Y3)L60UCRIE?:%E8<EB]V;DH:0UV)@[(
M/N_M'2V.N=IM-]OQ;MMK^DS@.RJ!:X#L=X#:#^>CS(3K-IS?8?YV@)DQWJ<^
M4S4Y(")#A"9<+E:);HM2%("<\XHI=1LT3C8F]T:7W@D!\#=Q8]*T`L2RU?"T
MAX(')X_DZF43]IJ1GK*:"3[ZR"Y\,'F*M0^"XJ-GSA77>>BFV6PZD(S6HW26
MH'VHD!\X8J-Y%-FL^CZTM)#THR*%U<),'T2VT?`JEU<&VX#U`>'?7^"O\ZD\
MUF2),=7\XB1\J!+/AC:3%54/0[[<^P*?_?>+AZ<@HXTGI9:\F`]<=F=`O%_M
M%O9Y>O*76W7CM$DXK3O_AZ@M)Z-4W*#A0S$;3H+[CT&_E_:C!P^_>_6]%^A.
MDVPPNX*K*>V^M47$:^M!@0+&\(,68/B1XX]60]]_`@804.WV]+MPK_0OW7[.
M8/]F\!P?SP$MNL,X^C"?E+>P+XR-^Y7IS])6U]:E`H-C]/VV<];T"@.@K\HC
MR2>FZ(=+20#RY'V`G/T)3#+KY_COD'Z+Z7DU-`*$'<Q"+,6L"F\P>P)?K_V,
MLRC@3#AY@D\I\5G(4TT+=T`6:>_N^#+>@%K`?^^W]BQ^$>:"8#/H![6V[R?#
M[GR(1F)FE2E?4*GPLQ!$4ASX0M4(24F=&7T;98-N^HM5\]]%`&G+?"BI-`LM
M2;-O6PYIS&%IS&%IS"&-.2R-.;1C5JW4"P:Y2@;E%=M8=W)+EY%0.IE37!HQ
M6^H1L165C:3D0>]0V:)M3?$V^CNA\(N3LS_"_]6UD#:9$IT1`U>NA:;YT%C;
MGROU32[?U$&\8J5+)^P3%+364VC`-PGJ5[MZYAY7Q7L))+`<V&B.*&<8CD<3
MFQ=E-DWRBU\P"X!*>R4"6XW1N_OQKBT"O>84S^26A&707KQ\_O0%1RG\,IH/
M.74#%5/@H/SLFN;K]T1%8=.0G`<)2,Z/(Y.++$S,/IGP&Y\;E>\]%WKM@PLG
MD]#7X`<?JT6]O6-`+)X!+F,X9T!VN6]L,JCU;"C(P28>^O0Z)3^YF`*C03FU
M-_Z:;3A?2[;6%J?M\TV;0KS_C:2<JX,11R33B#F73A3,22`"YY8B'W*L[:O>
MG><V5_;WC]X@'WC*QAOZ1]92R[E6'B[&FKWE-;W%M>(/?;\F/,;6/<J53?UE
M\3G-A-9>]X9J5.YN2=L&C71';EC?YJZS1MKW/.$UF21_[%O^[Q8JC%WF.A]&
MS6>+9JC6*@:_^+((5\XM&@WG+?W1%0-U$?YKCH><%/GWFG&28-A]H[>U<.'^
M[AYZ-IU8+W'1-M-RPH*;R$<MG>LK7=(QF13RL5&"-N!MG3"M$L=Z4=&N_&[5
M0@P)TO+<G[">BA549W9K5&1VTWES6C?1NS6"[42$0T1R&@N7`BZ.3#>T`O.$
M4MER9U-V<W)I.5T)6.".>1VV5J^N&3[<A@^/^S;:IT;L-=GC&5DYM]4=!S=9
M%K%KE&"=:.\6L^58>A,;TQ\T7;](Y-0;M%3NNZ5],<]).?@!\_?)5-AS3K_(
M?S&SWO*)FU8@M8:;*]$M2[H<@16<.P\S9Q/1J:(KF[[C6KBY-7.H`DZ<VO)Q
M"<_[1U^DTQ6A7^&L>)^G9:>E<HHU_+?JS(220V![\I?XT^2JDUH>!XM<2D`J
M.A92$">Q?>BP5BBFX(^M,,I`G!DWOE'>F8,WUL,&./UO[O'UH:9YO#;?S=E'
M#:YLX)M&4I_^'8D1[IS=^B6_N(M>&%?C>70YR"]T<IA$X/>9!!4/@#<'P>=;
MM$)D?+N*):+?'\[S"U:-2>8=/(/I#!B4=_-T>E6K(U.P<554VW6':<(E.E5\
MVV\=QCL'S1WOQ_#U^1/8LY_G.6DFWJ8IR.0@(UXDD\F5R:1&5;GEV!5D,%_[
MCC$>Q",\@)X/8/M1-D;AA@++_:7/E8NPG!MRO1@EK&62`%/T_JD+.Z`2$-(:
M)Q95B$-U;F@R56!8)S3I11U@@=3/56.,D0VY0.4L3D&GIG-E?U;-#/$XB_H)
MRJ,^?1`B47<P&9HQ$&MP1M`2:]FZD6(W#N91&LPV<D!/>`DB-09T8WWQMUST
ME+;#<VAETYC.IV]8J7PN^3.PMC9NTFQ*0=A:C=>$6>>%<93`)U2WFW*XY=%T
M?*ELF<9W`P&=)A43DQK/+F^^*>\"V%!=VJ4["^R;1!B)OT2YVG!8)!%+4Y?-
ME![:P00UNY[S)"S5^R4;9C"[1N0.G"W_<I\X3TQ$8#`S03$--C)A75Y_2-)%
M5.*9KUEI!0MK\@RN+6-#91$K<:$K<*#+&%#VRES*@X;:U8#ZFWM:SK[-E$Y8
MD=DGYAS[2Z90O-6:4>UFEX1M7@<<F][L(B[4,;-H#6]DR_S[8#,7;J3%4:#8
MCB_N9XBKQ#;U,?,#R[OL@!C50H=F)9!48D-`OL#;_%O=$5*!;+%^XRXK+[9(
M,U$/N5<Z)(YY[0Y]772?-$C>\S&BU2)!=^Q?U.932WM59/?ZESXA45=X-%,8
MI3L+(AH^_20NW8`U.0E+08][NN40&C.W7+<+:TLW86WY'CANJ#*%EF.+NPC@
M/BV:X;DR:$A?:[CBD.%RVJ<7CKJ7"[.3W)]D5P5%$F>E)S7.AY`7PC>L<VV1
M_SII:R;S6;>&]":.E,F!I[PE'Y##JE+F?'$^L+N4"839_(H,8/=+<W^5VJJ=
MG:-X=\?Z[LZZR,*)_>M%')W=?_KJR1G^@B49S_99MYMDT.;^DX<G+Q\^?U#W
MCNYJ/G.O^`Y8/#+A9?VXPK16@1=5B8T.L![S0<LG-OKG+0-0^H-^X<:+J=ZC
MO;UX=_?@R-H+0X$($RM[#JR<<_I\L:O.^36JP6NSRY,0ZQ5P%6NDQ][F$.;K
M*R6G+ZHP;"3)=6H+&PNS8"(?JY/;?ZQ4>'[FVD1/4I;G9;RR*$^5$N`S.3X,
MOV(=,41MNK9LC<%,3/P#J7IM716I<EK+*A4K0-Z!53WV7=$;I88:$78XI6Y\
MOT@W^D,S]PM6O7-:55ESQE)UHQ'$3B&_UC5;B"4[)I/CHNZ#.@]\7]ZX=S`!
MQ5PDU$9#Y72D8JFGOQ7.[T+@<=B.&YJRYQE.IN%UEN^TAYE:`K.2`!'>G*BP
M-X*`:S#=+;F8Y46&JM2R(I;TV\OWNZB=C8J([3RN/4QL$M";(\3/BA-N@)N@
MA;7&ORLJQ&AS/^/0.<65<6_P.BS,:Z^H=^Q(CL$[0KGC$JH."IC*&B\4M-ZI
MA&1PB]2A*'@0BFEBI:K3/)#.(8J5-6-!S@EFO<6#O)QY1#"W%#!)3\7[K.,&
M7)MT;$24U*)T-5Q\3)2KZB)A44'QG1T?[S0R!<S73+A31^*=,);,C.Y^<GQ3
M72L)%A=.YY)CE3H:K-2R-I(%Y\UI-'TC#)!],[N:I$%\D[V495,6G\@!&44!
MWV4"I>._>$8Z1*.AQYI0]F?ETX^CGTE2?P<_@N'>A4C]S@1_?G179Q9<F$OH
M13C8)!@LJKH90WI*8V1>+QX4/HJLH%W)C++'XE/T9C?F6%0IC8TYEF6+X65R
ME;_!3'-O^+%/0IB['+"4C16$+`P\6"U-@I2E\C8#$8Z`6OU!N'Q/))<Q?=34
MQRF'N>7$'=XQ@22X.?&+#*X5NQ0:4:AO(ZKF'\M)Z;3R.G.$+B0C]R[.!^U6
MO'/8/"RZ6*S.41+*SEKLW@?_77?(.VLYU92*VH!;LY95&E2:E`,M(A[1"(]H
ME?D8*QX;;F;6MLP&D[9*\J<6XHI@<5>PQ85(ZH$J9B]Q5UYW/C,63)Q2@[P5
M`E*=)^^IQL?KYH^OH<./_@#Z9Q%6WVEN5%T=3@=1/L"S=FAV].J*!=\03R(Y
M_AVK)`P"9,,92+1IX>/!#)>]YN#4ZKF+YB-80EUT(869EJZGI?&Z.Q5!XV$H
MM'S)!NQ6A8]W@CAZ3XE7#=(EX/2+T>0++K*M:-&M40I!#U0R[JAXDX#H8FYP
MY6VIR6_6]/?0C"I'D)ILUFPT8E:6';M%(!3MG##2&(-U*%2']"X8T6*4J%BV
M='">B3N?]J3O;FW!,4;$^`.J`^$'JN6VHDH^.KB>@CQ!BPF$2=L0V)*LR%6%
MRH2J!FN"`_/O21]LA&:EM^)OCU`L(6##SYO7<,F\AHOF-73S\K;T50[6NCU8
MZ_9XE([&^O5'@]1;_FHFAXB__SU:]XR88^2J&(MBW*KI]EOAWN"+-V'5K%KN
MB[!I-^:^*O5[NX?M>'>OV5+]GG%M)MZ\NDY=6*$XZAD_=WY".?^+6C^<TWOD
MVIUK+JQF9$HM&ZN]J;[L(MY<-V7\"P6=;_MYC-(1N@G`$\I7OJ2P,KFEGF]K
M75Y7$<_4ZAM27.;M&C0;%BJL2X$>XPAN4]^9N26CJE6\=][3N2T\'6[N0]Q&
M9AEAFS'E431-^^DTS;JIX:L/6\A7[[H<$:OM)*7S0VN9T%HX-Y0I1B^6T#E\
M.!$/8V`OR&-I:"J+DRIF9,RA<6&WBX[FHZ`D*CRX"CPK?-,4/<I1^6L01.^&
M>^YN</-P1C&3R:T2=X:<!GKH,SX+3A6K-),@]($\L4QM88W"%2Q9A`Y;U0Z\
MSL8E`Z<?CJO19BN<4W)546@ONP:]=*43]X#7/,RKH#9PS3R4+RYOBI6]0;\?
M-;K1@W'WSO_D%W<D[]SVU3C:WK[S2W[1V-EN;>_>*;\GTE1^O/9H.HC^-!]&
MK8.HU;R[LW]WIQVUCHX.Z0!<,^;:V<4\.IF?1]%^U&K=W3V\N[?+G:OI8KSO
M,I6@5_$459$F'Z.*;"B_]31M(F8=NQA@/G3T<'%Q4)1/'\:1=(N%'(LFGP$7
M,L!M@*L*^N%'$M>>?&<2C/D$P9'D1G%W1L\-3?HNQ5S,B+VT#TUT<*JM&(N_
M0`ZH"[.E5`88]B+?(&,E3-E^:#099VD&TNGC?K`(JH6!;A@\NV@VJ]VKQX45
M%<9VPXZ#L;;Y5)V1((S6W1Q.UQ5<SSF%4`AZYL#U;@/<H.,5O1<@</6Z=_,Q
M``Y&H=J9A(SD*N']E?2*!-B._)B2*Q]`.!S6MZ,?,#TWC+)@8V+?6&KX2=`0
M_(U^2CJNIEK,<6F/^[Z0I=295B`R,"3N>I"EDNVS`E8\)^IDV^N@B7XYECQY
MN-IM`JE;*CI381$]`A.L>YJ^![C@-WOI%/H)<(MK8#P29-;">+QF&`?(R_O!
M>)X/KUR[$@RB5YP^@6JI<<T/+NW19V<U:4A+%#=^V%-`J`;(2\0*"8[]%9YU
MZWY38RI?A.5"]5N\2,0Z02H?Z07D,<G3'(X1MB$6"4-S.FF?ZXT6=@5@V,.4
MA2-:T]RM`/K#+.X_?_KBR<.SAV].GCP^.47CFBR,V<MM*M]-E$$=_S!&LD/?
MZ."(,(P[%KC2^W!V\+\/ZH@#^.N,UPXHA$0.Z-*>"W[[/[IDZ-*_Q197744'
M>_&A8\\'L`4U[E.O81[G^60R1-)C48",,AQW1M1.%HXEAL;H4(DB$ES25-=F
MD%.9U`PX.J`#B`CCG'TLN6`D9TGM.DSBM?`P_L#ZO<Q-V=*4>E,!))A''R[N
M2Z2K"A@>*OV`)8,(3&8--876!X9-3/XJ6`T:F(S:0^GC\JF.LSJ'4]6W89Q7
M4K$'T0K)!KJ]8,E.IDSXGP0=A3OI10)$:_J[2$['Y0`](@&@5^3/@WZN=M4@
M=L%LN^F$$RS#YNG`R1#0A\[G_DZ\?Z3G\U]JLRA[Z_^&;:HZ8ZU6,VZU7*Z2
M6?IA0)7'G_-1?X2;5*^=8'_T/WN?VB75A`!HLQ?3\?DT@4>8OM>T0PQ(N[-P
M4,[%/F41#74B].,U`;7???1=+TU>?C]^_^SD\?,7__,PZ_P\_65^YT]_KD<_
MUD6XD\9OZY@,O4:R"+R-^.DY/\7LX,Q3X:N_DJC`#7)ND,\[E(B(6Q2&_D]N
MTY]G7=Y#'?V/_"*;.TZ*.N-!.#J,6TV7'?.W#M#?-#BK$1;@V]Y5A#6C_R"C
M#X9I0VNN%F?PSG_S+]S<N%;Z=_]=]:XPU)5?3&,\;<!OWW_([[JCGG_VBC'$
M#C&39F/TQ)^G\HTTZ\D6DL1Y%H128'LI$E@7LG?%%RR:(L@WFC$HF9[/1\`?
MY(24K>8^'//6XO08[?W#N'W@'!*Q^!M*"Y=C/]!=$_6LKM>:(D[DF4M@I9&I
M(G(5$LR!"PCWL@3PX$RBL5\N1-U(+'PCX"GRZDXM@!#+%+"+KTH<MH&I7"8P
M,A<``]A?7HR'(;M'Y!%GU<6KQO);N$'`:]-7>$OIQH)19+'P%,L6`&&?#X:P
M@21MP&05O94KTM(-6K&!.P(1KT=<>IR.FF$==<$.>"#YH0!EH#D!H*5#+"(^
M0]\:G\U!A_Y=5&#*1DD/>,AQ-QFJNECG"=!YA``D^2WQTT=&$'$'2\NW]YM+
MREGO[,4[>SLFA;+F/L_I-@>:H#G+!VR@PJ<]N*<N8&99F@C$76)SYC__<>=I
M,AAB.?HAWFWG%[Q$0<#>.,UI;9CJ/)E6LO*P5V<,^)JF[;=RM>PCR<.X_\3A
M=Z[<[K_5JQTE0QA+I0OLZ+:-!`(-@"*I#H.'L&XF-,\'@'N/,[[J,4\/2XT-
M07ADTHGU27*730#Y@[IEH=XA"T5"]-SAITO-"!U].G\S=<>LQ_1MW))DGHOP
M+7WY.')RPYY*W5QD5X\@414N[!MU@!2^19EIZF'O2WART4_BBG($T70.B)Z(
MTD%$,]Y6RG7/"7<YV;U.M2YU^KR4,1KG,^7,<`P$+UU]F%\#$"7'F`;8;THM
M@FM-9]WM>@F"AAH3*(GQDZ]@O=[IH#MCR$R3[!RG:>@H$0FE3Y+N!R/2!LCI
M]92F*8TDZ9$/@&$A345YY2:#PZP*BI]@MI/7]>WM;?CQ8WTCAI'PV=0^PPW`
MAR_-PRBJ7<=^2BG:9@RGU:3N_JV<U,]%>E7#_!_:KX3V<.L5A'6!L0I?B,BS
M_T6GH_)>.R!_+2<;,0<KNR8B&;(/Z8<$-2B>`W+*F=PQ4F/8%QBC!M-[/T@J
M^8>-?!'/04^@-\;.#F#0\27LX!3O'!P*RQQU`>!<D-WG>')!I%3[)=#ILAH7
M#OGY((-KBR;-.J=D0'XBT>D`%<AB5>[-N[`&5'9*%>:`-\G380_9!_X/.94-
ML(POX`X'_YH$FBDJS'UI9[1^46;.@$^4LNO18,2E?T'<Q6,J9PB+`F-Q8]*6
MS80+5$E:%;_%LU#!K)-BXDQ#9V&5[P<]IB<EMA[U9%S\&&>5Y3/8-D59.IR2
MH!(3=#G![W\/MOS*P*[.KMO"%/MZ5%T9]1,B!K_/@`@,A`UCX907`%_I^CND
ME*-S6R9MP^](6\0W68YH:5`7\V2STE:DHRF6Q,9;"$LO98-W<[%7$)4B51,N
M2`Z)GB?E6G,,,LO(HPM6\!WK3G_?D?^>RG]S^>^K>JR(\/NYDPQ16)G/)O,9
M2EW306>.%WVM,Q[VL)0%M*><G]AO#A1QBM2\'E%-<'$F*;.C%:(Q;>[C'F#P
M0,4+DJ]CT4;Y1',EH9IM2/3Q<[A=Q9X/3,KAWI)4CJUFO.L3.<H.L<,'Z\CP
M7@/V'+<"E6))GZN*7SGAAGEO+$/"][2(7'IHIRKA"R(A9R.!XM!LQ%&$,U.#
MCZ#4\%#Z$P*EH5=NBM^C>FCL(V(PC)M@`7C*F@!P(F$V&U]&)..2M*!&+D>*
M=9$@[,X$W<2P(4P"U8*'IR%Q1<$#>X[[_918D]P8T!A&\-:Q4OJ*2'HG34FB
MO<P008/%_ID7^V3PEB'X)]AYS(0@1>!@*@@"F!ROGJ8@W`<OH#1B43$BP$S#
MIPTYRMYH1KL26CT)IJHH@?,*`Y'I1A2]>G9%6-:QV96(H.W`<,GD<09SGXY0
MMT]RG(K85.L%G9AQFH:3)(,=[:^W]<DW]6,Y[8NPUL2)YO/!+-%[%DV0;/F%
MZ:-&MS?&;.U>^3.@`YN@A#JKN1IW9V*,)JL@LI%.5\SYN3"1*=Z5]<*4>9@7
M3UZ=UNIUZUKE8./FJI!QIC><>^)5FS"459DC$R9*\/"3?)6YFTS$=+4+#!!O
M03)I((KSQZKXQ.+P5XQHQA?6'`/*2((7)"D`D'/@!!IT"-Q2>%:U@1KKI\#3
MP%7=HTQ^S);ZTUEW.C'5W_MQ:ZRG,G8X-AW`%DW)5H30&E[Q.2`-(!V%NE4@
M+U(95[&S!6WS=6KD!4,+-3Z(=X[:2ZCQ[@[ZT2DU5IQ8Z@?!MA\/[9\\QG'U
MB'P<H6**I`635&Y<ZDE6T5+WA*>!3CQ":=*,#:V_BYS#)$JHXP$&WNF&5<P9
MM^2Q9SZ0N/`4#-$1BN7]0/3P&#N]XI0H@/TX>L#(K*68QK5A';/$1-\P)0XI
F*C?_(7"8\,=B*\-U^%`I(876!3+)-^$>;LI%_?\!D%"%S&LL`@#$
`
end

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
  1998-08-06  8:03 Sven Wischnowsky
  1998-08-06  8:39 ` Peter Stephenson
@ 1998-08-06  9:09 ` Zefram
  1998-08-06 17:50 ` Bart Schaefer
  2 siblings, 0 replies; 14+ messages in thread
From: Zefram @ 1998-08-06  9:09 UTC (permalink / raw)
  To: Sven Wischnowsky; +Cc: zsh-workers

Sven Wischnowsky wrote:
>Yes, I almost expected this comment, but I didn't have much time. And
>the patch is thought as a collection of possibilities. If I get
>remarks such as `I like this, but not this' and Zefram finally says
>which parts he would like to include into the baseline (if any), I
>would provide patches for those only.

I haven't had time to try out the patch, but from reading your description
I am in principle satisfied with all of the new functionality, and intend
to include it in the next release.

I was intrigued by your new match structure.  It's a fairly natural
way to represent matches, and closely matches the way I did completion
for the Elate shell.  Because quoting nests in the Elate shell, it is
possible to simulate structures there, even though the shell natively
supports only one-dimensional arrays.  In zsh I think one really misses
out by not being able to represent structures in user code -- it would
be nice for completion functions to be able to control all parts of the
match structure directly.

-zefram


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
@ 1998-08-06  9:01 Sven Wischnowsky
  0 siblings, 0 replies; 14+ messages in thread
From: Sven Wischnowsky @ 1998-08-06  9:01 UTC (permalink / raw)
  To: zsh-workers


Peter Stephenson wrote:

> 
> I tried the big completion patch, but I had 1700 rejected lines in
> zle_tricky.c, probably because of my completion widget patch (revised),
> so it doesn't look like I'm going to be able to test it any time soon.
> 

Argh. Before implementing it, I tried to add as many older patches as
possible, it seems that I overlooked yours.

> By the way, I had another message today asking about ignoring case
> during completion.  It's time this was sorted out.  Is there a patch
> for this (and nothing else) at the moment?
> 

At least not from me.

Bye
 Sven


--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
  1998-08-06  8:03 Sven Wischnowsky
@ 1998-08-06  8:39 ` Peter Stephenson
  1998-08-06  9:09 ` Zefram
  1998-08-06 17:50 ` Bart Schaefer
  2 siblings, 0 replies; 14+ messages in thread
From: Peter Stephenson @ 1998-08-06  8:39 UTC (permalink / raw)
  To: Zsh hackers list

I tried the big completion patch, but I had 1700 rejected lines in
zle_tricky.c, probably because of my completion widget patch (revised),
so it doesn't look like I'm going to be able to test it any time soon.

By the way, I had another message today asking about ignoring case
during completion.  It's time this was sorted out.  Is there a patch
for this (and nothing else) at the moment?

-- 
Peter Stephenson <pws@ifh.de>       Tel: +39 50 844536
WWW:  http://www.ifh.de/~pws/
Gruppo Teorico, Dipartimento di Fisica
Piazza Torricelli 2, 56100 Pisa, Italy


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
@ 1998-08-06  8:03 Sven Wischnowsky
  1998-08-06  8:39 ` Peter Stephenson
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Sven Wischnowsky @ 1998-08-06  8:03 UTC (permalink / raw)
  To: zsh-workers


Bart Schaefer wrote:

> On Aug 5,  8:29am, Sven Wischnowsky wrote:
> } Subject: Re: ideas: free-search-complete, noexpand
> }
> } ... it seems that I received all messages from the list, so I guess
> } noone has found the time/was interested enough to look at my last
> } patch, right?
> 
> Haven't found the time.  However, I do wish you'd broken this up into
> smaller patches, i.e., put the -W change, the explanation string %
> sequences, the =foo completion change, and pattern compctls each into
> its own patch (it's OK if some patches depend on others).
> 

Yes, I almost expected this comment, but I didn't have much time. And
the patch is thought as a collection of possibilities. If I get
remarks such as `I like this, but not this' and Zefram finally says
which parts he would like to include into the baseline (if any), I
would provide patches for those only.
But it is important to notice that most of the patches rely on the new 
internal representation for matches (which is responsible for the
biggest part of the patch). The only exceptions are the % sequences in 
explanation strings and the =foo completion change. Anything else
(even the -W stuff) needs the possibility to produce inclusively or'ed 
lists of matches.
About pattern compctls: of course, we could have this without inclusively-
or'ing, but then completion searching would stop at the first pattern
compctl found which I consider unacceptable (and we would need special 
casing for -T again).

Well, with the internal changes as a basic patch I could have put the
other things in different patches, but that would have required
writing some functions for one patch, then deleting/replacing those
functions for another patch and so on. The intermediate step of
implementing function that are not needed/completely different in the
patch with all the stuff is what kept me from making it this way.

But I can well understand your dislike, sorry.

> Ast a general remark, I find myself frowning over a number of the option
> choices, particularly "-t+ +", but in most cases I eventually (sometimes
> many paragraphs of your message later) figure out why you did things, so
> I don't immediately have any alternatives to suggest.
> 

Again, I wholeheartedly agree. I would prefer to put things into
separation sequences: one like `+' but meaning inclusive-or, one like
`-' but meaning `continue to test patterns' and so on. This would make 
parsing more complicated and I just didn't find enough good sequences
that wouldn't introduce incompatibilities (in a first version I used
`-+' instead of `-t+ +', but making continuing after `+' different
from all others didn't look right, either).

So, hesitantly, I used only one option for all of them (but at least
that gave me the possibility to use characters that should be easy to
remember).

> While we're on the topic, I've always been somewhat bothered by the use
> of ';' in extended completion patterns like this:
> 
> 	compctl -x 'r[-e,;]' -l '' -- xterm
> 
> What's really meant there is not really "a word beginning with ';'" but
> rather "the end of this command" which may be signified by any of ; & |
> ;; && || or }.  I suspect this idiom arose from the "find" example in the
> man page, where it -does- mean "a word beginning with ';'", and it just
> happens to work for most cases.  However, there really is a need for a
> way to specify a range "... up to the next command separator" and there
> is presently no way to accomplish that; closest would be 'R[-e,[;&|}]]'
> which is ugly and unnecessarily applies pattern semantics to the "-e".
> Any suggestions?
> 

No. The `r[-e,;]' matches a quoted `;', not the command separator. In
fact there is no way to match the command separator, since the
completion code uses only the words of the current command.
Since you seem to think that the completion code sees more of the
line, this raises the question if it should. I can't think of an
example where this would be interesting to have (or even needed), can you?


Bye
 Sven


--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: ideas: free-search-complete, noexpand
@ 1998-08-05  6:29 Sven Wischnowsky
  0 siblings, 0 replies; 14+ messages in thread
From: Sven Wischnowsky @ 1998-08-05  6:29 UTC (permalink / raw)
  To: zsh-workers

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1655 bytes --]


Bart Schaefer wrote:

> 
> On Aug 4,  8:49pm, Johan Sundström wrote:
> > Subject: ideas: free-search-complete, noexpand
> > 
> > Wouldn't it be really nice if there was a completion mechanism that
> > wasn't locked to complete from the beginning of your word only, but
> > instead would find "mark_dirs" from a larger list of possible
> > completions, given the string "dir"?
> 
> It's called "globcomplete":
> 
> zsh% setopt globcomplete automenu
> zsh% setopt *dir*<TAB>
> zsh% setopt autonamedirs<TAB>
> zsh% setopt hashdirs<TAB>
> zsh% setopt markdirs
> 
> > I'd love this one --- am I the only one who always seems to remember
> > parts of filenames that aren't their first characters? :-/
> 
> Yup, you seem to want globcomplete.
> 

I guess he is lazy enough to want to get this without having to type
the `*'s. Some time ago I posted a patch that added partial word
completion, case insensitive completion, and an option called autoglob 
which implemented this. Andrew decided that it shouldn't go into the
baseline. I have some ideas (based upon some older ideas from Peter)
for a suggestion to control the matching behaviour of completion
in a zsh'ish way, so that it should be powerful enough to get this and 
other things. You will hear more about this when (and if) I find some
time to implement it so that you can play with it.

And while I'm at it... our network acces works again for some days now 
and it seems that I received all messages from the list, so I guess
noone has found the time/was interested enough to look at my last
patch, right?

Bye
 Sven


--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~1998-08-07 13:23 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-08-04 18:49 ideas: free-search-complete, noexpand Johan Sundström
1998-08-04 21:37 ` Bart Schaefer
1998-08-05  6:29 Sven Wischnowsky
1998-08-06  8:03 Sven Wischnowsky
1998-08-06  8:39 ` Peter Stephenson
1998-08-06  9:09 ` Zefram
1998-08-06 17:50 ` Bart Schaefer
1998-08-06  9:01 Sven Wischnowsky
1998-08-06  9:56 Sven Wischnowsky
1998-08-06 13:14 ` Peter Stephenson
1998-08-07  7:19 Sven Wischnowsky
1998-08-07  9:28 ` Cosmo
1998-08-07 12:13 Sven Wischnowsky
1998-08-07 13:02 ` Cosmo

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).