From 402d2fea7025356c7abcb891017a1b7ddf99cbbf Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 15 Apr 2005 21:00:38 +0000 Subject: [PATCH] updated for version 7.0066 --- runtime/compiler/ant.vim | 8 +- runtime/doc/Makefile | 40 +- runtime/doc/change.txt | 10 +- runtime/doc/debugger.txt | 36 +- runtime/doc/develop.txt | 30 +- runtime/doc/editing.txt | 29 +- runtime/doc/eval.txt | 42 +- runtime/doc/evim-fr.UTF-8.1 | 56 + runtime/doc/fold.txt | 4 +- runtime/doc/gui.txt | 26 +- runtime/doc/gui_w16.txt | 30 +- runtime/doc/gui_w32.txt | 28 +- runtime/doc/gui_x11.txt | 4 +- runtime/doc/hangulin.txt | 24 +- runtime/doc/if_cscop.txt | 10 +- runtime/doc/if_ole.txt | 24 +- runtime/doc/if_perl.txt | 10 +- runtime/doc/if_pyth.txt | 46 +- runtime/doc/if_ruby.txt | 12 +- runtime/doc/if_sniff.txt | 8 +- runtime/doc/if_tcl.txt | 12 +- runtime/doc/indent.txt | 32 +- runtime/doc/index.txt | 4 +- runtime/doc/insert.txt | 10 +- runtime/doc/map.txt | 46 +- runtime/doc/mbyte.txt | 16 +- runtime/doc/motion.txt | 6 +- runtime/doc/netbeans.txt | 92 +- runtime/doc/options.txt | 15 +- runtime/doc/os_390.txt | 78 +- runtime/doc/os_beos.txt | 90 +- runtime/doc/os_mac.txt | 6 +- runtime/doc/os_mint.txt | 8 +- runtime/doc/os_msdos.txt | 32 +- runtime/doc/os_os2.txt | 26 +- runtime/doc/os_qnx.txt | 8 +- runtime/doc/os_risc.txt | 72 +- runtime/doc/os_vms.txt | 166 +- runtime/doc/pi_netrw.txt | 10 +- runtime/doc/print.txt | 6 +- runtime/doc/quickref.txt | 4 +- runtime/doc/rileft.txt | 4 +- runtime/doc/russian.txt | 14 +- runtime/doc/sign.txt | 16 +- runtime/doc/tags | 19 +- runtime/doc/tips.txt | 18 +- runtime/doc/usr_02.txt | 6 +- runtime/doc/usr_03.txt | 4 +- runtime/doc/usr_08.txt | 4 +- runtime/doc/usr_09.txt | 4 +- runtime/doc/usr_10.txt | 4 +- runtime/doc/usr_21.txt | 6 +- runtime/doc/usr_22.txt | 6 +- runtime/doc/usr_24.txt | 4 +- runtime/doc/usr_25.txt | 4 +- runtime/doc/usr_42.txt | 4 +- runtime/doc/usr_44.txt | 4 +- runtime/doc/version5.txt | 34 +- runtime/doc/version6.txt | 22 +- runtime/doc/vimdiff-fr.1 | 53 + runtime/doc/vimdiff-fr.UTF-8.1 | 53 + runtime/doc/vimdiff.man | 58 +- runtime/doc/vimtutor-fr.1 | 55 + runtime/doc/vimtutor-fr.UTF-8.1 | 55 + runtime/doc/visual.txt | 21 +- runtime/doc/xxd-fr.1 | 395 +++ runtime/spell/README.txt | 935 +++++++ runtime/spell/en.utf-8.spl | Bin 0 -> 1196398 bytes runtime/syntax/cs.vim | 4 +- runtime/syntax/objc.vim | 6 +- runtime/syntax/xml.vim | 8 +- src/Makefile | 25 + src/charset.c | 23 +- src/ex_docmd.c | 20 +- src/fileio.c | 5 +- src/gui.c | 13 +- src/gui_kde_x11.cc | 12 +- src/gui_w32.c | 4 +- src/macros.h | 2 + src/mbyte.c | 5 + src/misc2.c | 3 +- src/normal.c | 25 +- src/os_unix.c | 2 + src/quickfix.c | 9 +- src/regexp.c | 92 +- src/screen.c | 4 +- src/spell.c | 4037 +++++++++++++++++++++++++++++-- src/tag.c | 8 +- src/version.h | 4 +- 89 files changed, 6395 insertions(+), 934 deletions(-) create mode 100644 runtime/doc/evim-fr.UTF-8.1 create mode 100644 runtime/doc/vimdiff-fr.1 create mode 100644 runtime/doc/vimdiff-fr.UTF-8.1 create mode 100644 runtime/doc/vimtutor-fr.1 create mode 100644 runtime/doc/vimtutor-fr.UTF-8.1 create mode 100644 runtime/doc/xxd-fr.1 create mode 100644 runtime/spell/README.txt create mode 100644 runtime/spell/en.utf-8.spl diff --git a/runtime/compiler/ant.vim b/runtime/compiler/ant.vim index 51cd93185..0605c69fa 100644 --- a/runtime/compiler/ant.vim +++ b/runtime/compiler/ant.vim @@ -1,7 +1,7 @@ " Vim Compiler File " Compiler: ant " Maintainer: Johannes Zellner -" Last Change: Tue, 27 Apr 2004 15:01:45 CEST +" Last Change: Mi, 13 Apr 2005 22:50:07 CEST if exists("current_compiler") finish @@ -21,15 +21,15 @@ CompilerSet makeprg=ant " ant with jikes +E, which assumes the following " two property lines in your 'build.xml': " -" -" +" +" " " second line: " ant with javac " " note that this will work also for tasks like [wtkbuild] " -setlocal errorformat=\ %#[%.%#]\ %#%f:%l:%v:%*\\d:%*\\d:\ %t%[%^:]%#:%m, +CompilerSet errorformat=\ %#[%.%#]\ %#%f:%l:%v:%*\\d:%*\\d:\ %t%[%^:]%#:%m, \%A\ %#[%.%#]\ %f:%l:\ %m,%-Z\ %#[%.%#]\ %p^,%C\ %#[%.%#]\ %#%m " ,%-C%.%# diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile index 1c2959de5..3aef1ca97 100644 --- a/runtime/doc/Makefile +++ b/runtime/doc/Makefile @@ -257,6 +257,11 @@ HTMLS = \ workshop.html CONVERTED = \ + vim-fr.UTF-8.1 \ + evim-fr.UTF-8.1 \ + vimdiff-fr.UTF-8.1 \ + vimtutor-fr.UTF-8.1 \ + xxd-fr.UTF-8.1 \ vim-it.UTF-8.1 \ evim-it.UTF-8.1 \ vimdiff-it.UTF-8.1 \ @@ -380,32 +385,47 @@ os_risc.txt: os_win32.txt: touch os_win32.txt +vim-fr.UTF-8.1: vim-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + +evim-fr.UTF-8.1: evim-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + +vimdiff-fr.UTF-8.1: vimdiff-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + +vimtutor-fr.UTF-8.1: vimtutor-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + +xxd-fr.UTF-8.1: xxd-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + vim-it.UTF-8.1: vim-it.1 - iconv -f latin1 -t utf-8 $> >$@ + iconv -f latin1 -t utf-8 $< >$@ evim-it.UTF-8.1: evim-it.1 - iconv -f latin1 -t utf-8 $> >$@ + iconv -f latin1 -t utf-8 $< >$@ vimdiff-it.UTF-8.1: vimdiff-it.1 - iconv -f latin1 -t utf-8 $> >$@ + iconv -f latin1 -t utf-8 $< >$@ vimtutor-it.UTF-8.1: vimtutor-it.1 - iconv -f latin1 -t utf-8 $> >$@ + iconv -f latin1 -t utf-8 $< >$@ xxd-it.UTF-8.1: xxd-it.1 - iconv -f latin1 -t utf-8 $> >$@ + iconv -f latin1 -t utf-8 $< >$@ vim-ru.UTF-8.1: vim-ru.1 - iconv -f KOI8-R -t utf-8 $> >$@ + iconv -f KOI8-R -t utf-8 $< >$@ evim-ru.UTF-8.1: evim-ru.1 - iconv -f KOI8-R -t utf-8 $> >$@ + iconv -f KOI8-R -t utf-8 $< >$@ vimdiff-ru.UTF-8.1: vimdiff-ru.1 - iconv -f KOI8-R -t utf-8 $> >$@ + iconv -f KOI8-R -t utf-8 $< >$@ vimtutor-ru.UTF-8.1: vimtutor-ru.1 - iconv -f KOI8-R -t utf-8 $> >$@ + iconv -f KOI8-R -t utf-8 $< >$@ xxd-ru.UTF-8.1: xxd-ru.1 - iconv -f KOI8-R -t utf-8 $> >$@ + iconv -f KOI8-R -t utf-8 $< >$@ diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index 7a58cd88c..c507ccd4a 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.0aa. Last change: 2005 Mar 16 +*change.txt* For Vim version 7.0aa. Last change: 2005 Apr 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -915,6 +915,8 @@ inside of strings can change! Also see 'softtabstop' option. > current line). This always works |linewise|, thus this command can be used to put a yanked block as new lines. + The cursor is left on the first non-blank in the last + new line. The register can also be '=' followed by an optional expression. The expression continues until the end of the command. You need to escape the '|' and '"' @@ -964,9 +966,9 @@ When using a put command like |p| or |P| in Visual mode, Vim will try to replace the selected text with the contents of the register. Whether this works well depends on the type of selection and the type of the text in the register. With blockwise selection it also depends on the size of the block -and whether the corners are on an existing character. (implementation detail: +and whether the corners are on an existing character. (Implementation detail: it actually works by first putting the register after the selection and then -deleting the selection). +deleting the selection.) *blockwise-register* If you use a blockwise Visual mode command to get the text into the register, @@ -1417,7 +1419,7 @@ If the 'comments' option includes "/*", "*" and/or "*/", then Vim has some built in stuff to treat these types of comments a bit more cleverly. Opening a new line before or after "/*" or "*/" (with 'r' or 'o' present in 'formatoptions') gives the correct start of the line automatically. The same -happens with formatting and auto-wrapping. Opening a line after a line +happens with formatting and auto-wrapping. Opening a line after a line starting with "/*" or "*" and containing "*/", will cause no comment leader to be inserted, and the indent of the new line is taken from the line containing the start of the comment. diff --git a/runtime/doc/debugger.txt b/runtime/doc/debugger.txt index 4e4f1c06a..566b83a84 100644 --- a/runtime/doc/debugger.txt +++ b/runtime/doc/debugger.txt @@ -1,4 +1,4 @@ -*debugger.txt* For Vim version 7.0aa. Last change: 2005 Mar 07 +*debugger.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Gordon Prieur @@ -27,19 +27,19 @@ Environment (IDE): These features were added specifically for use in the Motif version of gvim. However, the |alt-input| and |debug-highlight| were written to be usable in -both vim and gvim. Some of the other features could be used in the non-GUI -vim with slight modifications. However, I did not do this nor did I test the +both vim and gvim. Some of the other features could be used in the non-GUI +vim with slight modifications. However, I did not do this nor did I test the reliability of building for vim or non Motif GUI versions. 1.1 Alternate Command Input *alt-input* For Vim to work with a debugger there must be at least an input connection -with a debugger or external tool. In many cases there will also be an output +with a debugger or external tool. In many cases there will also be an output connection but this isn't absolutely necessary. The purpose of the input connection is to let the external debugger send -commands to Vim. The commands sent by the debugger should give the debugger +commands to Vim. The commands sent by the debugger should give the debugger enough control to display the current debug environment and state. The current implementation is based on the X Toolkit dispatch loop and the @@ -49,15 +49,15 @@ XtAddInput() function call. 1.2 Debug Signs *debug-signs* Many debuggers mark specific lines by placing a small sign or color highlight -on the line. The |:sign| command lets the debugger set this graphic mark. Some +on the line. The |:sign| command lets the debugger set this graphic mark. Some examples where this feature would be used would be a debugger showing an arrow -representing the Program Counter (PC) of the program being debugged. Another -example would be a small stop sign for a line with a breakpoint. These visible +representing the Program Counter (PC) of the program being debugged. Another +example would be a small stop sign for a line with a breakpoint. These visible highlights let the user keep track of certain parts of the state of the debugger. -This feature can be used with more than debuggers, too. An IPE can use a sign -to highlight build errors, searched text, or other things. The sign feature +This feature can be used with more than debuggers, too. An IPE can use a sign +to highlight build errors, searched text, or other things. The sign feature can also work together with the |debug-highlight| to ensure the mark is highly visible. @@ -66,17 +66,17 @@ Debug signs are defined and placed using the |:sign| command. 1.3 Debug Source Highlight *debug-highlight* -This feature allows a line to have a predominant highlight. The highlight is -intended to make a specific line stand out. The highlight could be made to +This feature allows a line to have a predominant highlight. The highlight is +intended to make a specific line stand out. The highlight could be made to work for both vim and gvim, whereas the debug sign is, in most cases, limited -to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm +to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm from Sun has a "sign gutter" for showing signs. 1.4 Message Footer *gui-footer* -The message footer can be used to display messages from a debugger or IPE. It -can also be used to display menu and toolbar tips. The footer area is at the +The message footer can be used to display messages from a debugger or IPE. It +can also be used to display menu and toolbar tips. The footer area is at the bottom of the GUI window, below the line used to display colon commands. The display of the footer is controlled by the 'guioptions' letter 'F'. @@ -85,7 +85,7 @@ The display of the footer is controlled by the 'guioptions' letter 'F'. 1.5 Balloon Evaluation *balloon-eval* This feature allows a debugger, or other external tool, to display dynamic -information based on where the mouse is pointing. The purpose of this feature +information based on where the mouse is pointing. The purpose of this feature was to allow Sun's Visual WorkShop debugger to display expression evaluations. However, the feature was implemented in as general a manner as possible and could be used for displaying other information as well. @@ -111,7 +111,7 @@ completely user definable. 2. Vim Compile Options *debugger-compilation* The debugger features were added explicitly for use with Sun's Visual -WorkShop Integrated Programming Environment (ipe). However, they were done +WorkShop Integrated Programming Environment (ipe). However, they were done in as generic a manner as possible so that integration with other debuggers could also use some or all of the tools used with Sun's ipe. @@ -123,7 +123,7 @@ The following compile time preprocessor variables control the features: Message Footer FEAT_FOOTER Balloon Evaluation FEAT_BEVAL -The first integration with a full IPE/IDE was with Sun Visual WorkShop. To +The first integration with a full IPE/IDE was with Sun Visual WorkShop. To compile a gvim which interfaces with VWS set the following flag, which sets all the above flags: diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt index 6e4f4e35a..bc8b0e8c0 100644 --- a/runtime/doc/develop.txt +++ b/runtime/doc/develop.txt @@ -1,4 +1,4 @@ -*develop.txt* For Vim version 7.0aa. Last change: 2004 Jan 17 +*develop.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -366,7 +366,33 @@ window View on a buffer. There can be several windows in Vim, fit in the shell. -To be continued... +Spell checking *develop-spell* + +When spell checking was going to be added to Vim a survey was done over the +available spell checking libraries and programs. Unfortunately, the result +was that none of them provided sufficient capabilities to be used as the spell +checking engine in Vim, for various reasons: + +- Missing support for multi-byte encodings. At least UTF-8 must be supported, + so that more than one language can be used in the same file. +- For the programs and libraries: Using them as-is would require installing + them separately from Vim. That's not impossible, but a drawback. +- Performance: A few tests showed that it's possible to check spelling on the + fly (while redrawing), just like syntax highlighting. But the mechanisms + used by other code are much slower. Myspell uses a simplistic hashtable, + for example. +- For a program like aspell a communication mechanism would have to be setup. + That's complicated to do in a portable way (Unix-only would be relatively + simple, but that's not good enough). And performance will become a problem + (lots of process switching involved). +- Missing support for words with non-word characters, such as "Etten-Leur" and + "et al.", would require marking the pieces of them OK, lowering the + reliability. +- Missing support for regions or dialects. Makes it difficult to accept + all English words and highlight non-Canadian words differently. +- Missing support for rare words. Many words are correct but hardly ever used + and could be a misspelled often-used word. + ============================================================================== 4. Assumptions *design-assumptions* diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt index 3fb4e54de..8ae870a5a 100644 --- a/runtime/doc/editing.txt +++ b/runtime/doc/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.0aa. Last change: 2005 Feb 14 +*editing.txt* For Vim version 7.0aa. Last change: 2005 Apr 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -46,7 +46,7 @@ However, the alternate file name is not changed when |:keepalt| is used. name. {not in Vi} All file names are remembered in the buffer list. When you enter a file name, -for editing (e.g., with ":e filename") or writing (e.g., with ":w file name"), +for editing (e.g., with ":e filename") or writing (e.g., with ":w filename"), the file name is added to the list. You can use the buffer list to remember which files you edited and to quickly switch from one file to another (e.g., to copy text) with the |CTRL-^| command. First type the number of the file @@ -57,7 +57,7 @@ CTRL-G or *CTRL-G* *:f* *:fi* *:file* :f[ile] Prints the current file name (as typed), the cursor position (unless the 'ruler' option is set), and the file status (readonly, modified, read errors, - new file). See the 'shortmess' option about how tho + new file). See the 'shortmess' option about how to make this message shorter. {Vi does not include column number} @@ -910,8 +910,8 @@ if the system allows it (the directory must be writable). *write-fail* If the writing of the new file fails, you have to be careful not to lose your changes AND the original file. If there is no backup file and writing -the new file failed, you have already lost the original file! DON'T EXIT VIM -UNTIL YOU WRITE OUT THE FILE! If a backup was made, it is put back in place +the new file failed, you have already lost the original file! DON'T EXIT VIM +UNTIL YOU WRITE OUT THE FILE! If a backup was made, it is put back in place of the original file (if possible). If you exit Vim, and lose the changes you made, the original file will mostly still be there. If putting back the original file fails, there will be an error message telling you that you @@ -1391,6 +1391,11 @@ It is also possible that you modified the file yourself, from another edit session or with another command (e.g., a filter command). Then you will know which version of the file you want to keep. +There is one situation where you get the message while there is nothing wrong: +On a Win32 system on the day daylight saving time starts. There is something +in the Win32 libraries that confuses Vim about the hour time difference. The +problem goes away the next day. + ============================================================================== 11. File Searching *file-searching* @@ -1401,7 +1406,7 @@ options. There are three different types of searching: 1) Downward search: Downward search uses the wildcards '*', '**' and possibly others - supported by your operating system. '*' and '**' are handled inside Vim, so + supported by your operating system. '*' and '**' are handled inside Vim, so they work on all operating systems. The usage of '*' is quite simple: It matches 0 or more characters. @@ -1435,10 +1440,10 @@ options. There are three different types of searching: 2) Upward search: Here you can give a directory and then search the directory tree upward for - a file. You could give stop-directories to limit the upward search. The + a file. You could give stop-directories to limit the upward search. The stop-directories are appended to the path (for the 'path' option) or to - the filename (for the 'tags' option) with a ';'. If you want several - stop-directories separate them with ';'. If you want no stop-directory + the filename (for the 'tags' option) with a ';'. If you want several + stop-directories separate them with ';'. If you want no stop-directory ("search upward till the root directory) just use ';'. > /usr/include/sys;/usr < will search in: > @@ -1457,7 +1462,7 @@ options. There are three different types of searching: /u/user_x/work/include /u/user_x/include -3) Combined up/downward search +3) Combined up/downward search: If Vim's current path is /u/user_x/work/release and you do > set path=**;/u/user_x < and then search for a file with |gf| the file is searched in: > @@ -1465,10 +1470,10 @@ options. There are three different types of searching: /u/user_x/work/** /u/user_x/** < - BE CAREFUL! This might consume a lot of time, as the search of + BE CAREFUL! This might consume a lot of time, as the search of '/u/user_x/**' includes '/u/user_x/work/**' and '/u/user_x/work/release/**'. So '/u/user_x/work/release/**' is searched - three and '/u/user_x/work/**' is searched two times. + three times and '/u/user_x/work/**' is searched twice. In the above example you might want to set path to: > :set path=**,/u/user_x/** diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index dc260b9f0..a0e446fcb 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.0aa. Last change: 2005 Mar 26 +*eval.txt* For Vim version 7.0aa. Last change: 2005 Apr 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1412,7 +1412,7 @@ v:warningmsg Last given warning message. It's allowed to set this variable. See |function-list| for a list grouped by what the function is used for. -(Use CTRL-] on the function name to jump to the full explanation) +(Use CTRL-] on the function name to jump to the full explanation.) USAGE RESULT DESCRIPTION ~ @@ -1620,7 +1620,7 @@ writefile({list}, {fname} [, {binary}]) add({list}, {expr}) *add()* Append the item {expr} to List {list}. Returns the resulting - List. Examples: > + List. Examples: > :let alist = add([1, 2, 3], item) :call add(mylist, "woodstock") < Note that when {expr} is a List it is appended as a single @@ -1809,6 +1809,7 @@ char2nr({expr}) *char2nr()* < The current 'encoding' is used. Example for "utf-8": > char2nr("á") returns 225 char2nr("á"[0]) returns 195 +< nr2char() does the opposite. cindent({lnum}) *cindent()* Get the amount of indent for line {lnum} according the C @@ -2551,10 +2552,10 @@ getqflist() *getqflist()* getreg([{regname}]) *getreg()* The result is a String, which is the contents of register - {regname}. Example: > + {regname}. Example: > :let cliptext = getreg('*') < getreg('=') returns the last evaluated value of the expression - register. (For use in maps). + register. (For use in maps.) If {regname} is not specified, |v:register| is used. @@ -2677,7 +2678,7 @@ histadd({history}, {item}) *histadd()* < This function is not available in the |sandbox|. histdel({history} [, {item}]) *histdel()* - Clear {history}, ie. delete all its entries. See |hist-names| + Clear {history}, i.e. delete all its entries. See |hist-names| for the possible values of {history}. If the parameter {item} is given as String, this is seen @@ -2753,7 +2754,7 @@ hlID({name}) The result is a Number, which is the ID of the highlight group hostname() *hostname()* The result is a String, which is the name of the machine on - which Vim is currently running. Machine names greater than + which Vim is currently running. Machine names greater than 256 characters long are truncated. iconv({expr}, {from}, {to}) *iconv()* @@ -2873,7 +2874,7 @@ insert({list}, {item} [, {idx}]) *insert()* {idx}. If {idx} is zero it goes before the first item, just like omitting {idx}. A negative {idx} is also possible, see |list-index|. -1 inserts just before the last item. - Returns the resulting List. Examples: > + Returns the resulting List. Examples: > :let mylist = insert([2, 3, 5], 1) :call insert(mylist, 4, -1) :call insert(mylist, 6, len(mylist)) @@ -3131,7 +3132,7 @@ match({expr}, {pat}[, {start}[, {count}]]) *match()* If {start} is given, the search starts from byte index {start} in a String or item {start} in a List. The result, however, is still the index counted from the - first character/item. Example: > + first character/item. Example: > :echo match("testing", "ing", 2) < result is again "4". > :echo match("testing", "ing", 4) @@ -3405,7 +3406,7 @@ repeat({expr}, {count}) *repeat()* :let seperator = repeat('-', 80) < When {count} is zero or negative the result is empty. When {expr} is a List the result is {expr} concatenated - {count} times. Example: > + {count} times. Example: > :let longlist = repeat(['a', 'b'], 3) < Results in ['a', 'b', 'a', 'b', 'a', 'b']. @@ -3544,7 +3545,7 @@ server2client( {clientid}, {string}) *server2client()* {only available when compiled with the |+clientserver| feature} Note: This id has to be stored before the next command can be - received. Ie. before returning from the received command and + received. I.e. before returning from the received command and before calling any commands that waits for input. See also |clientserver|. Example: > @@ -3587,9 +3588,10 @@ setcmdpos({pos}) *setcmdpos()* line. setline({lnum}, {line}) *setline()* - Set line {lnum} of the current buffer to {line}. If this - succeeds, 0 is returned. If this fails (most likely because - {lnum} is invalid) 1 is returned. Example: > + Set line {lnum} of the current buffer to {line}. + {lnum} is used like with |getline()|. + If this succeeds, 0 is returned. If this fails (most likely + because {lnum} is invalid) 1 is returned. Example: > :call setline(5, strftime("%c")) < Note: The '[ and '] marks are not set. @@ -3715,7 +3717,9 @@ split({expr} [, {pattern}]) *split()* :let words = split(getline('.'), '\W\+') < Since empty strings are not added the "\+" isn't required but it makes the function work a bit faster. - The opposite function is |join()|. + To split a string in individual characters: > + :for c in split(mystring, '\zs') +< The opposite function is |join()|. strftime({format} [, {time}]) *strftime()* @@ -3806,7 +3810,7 @@ strridx({haystack}, {needle} [, {start}]) *strridx()* For pattern searches use |match()|. -1 is returned if the {needle} does not occur in {haystack}. If the {needle} is empty the length of {haystack} is returned. - See also |stridx()|. Examples: > + See also |stridx()|. Examples: > :echo strridx("an angry armadillo", "an") 3 < *strrchr()* When used with a single character it works similar to the C @@ -3940,7 +3944,7 @@ taglist({expr}) *taglist()* defined. cmd Ex command used to locate the tag in the file. - kind type of the tag. The value for this + kind type of the tag. The value for this entry depends on the language specific kind values generated by the ctags tool. @@ -4068,7 +4072,7 @@ visualmode([expr]) *visualmode()* *winbufnr()* winbufnr({nr}) The result is a Number, which is the number of the buffer - associated with window {nr}. When {nr} is zero, the number of + associated with window {nr}. When {nr} is zero, the number of the buffer in the current window is returned. When window {nr} doesn't exist, -1 is returned. Example: > @@ -4657,7 +4661,7 @@ You can use multiple brace pairs: > where "end_of_word" is either "verb" or "jective". However, the expression inside the braces must evaluate to a valid single -variable name. e.g. this is invalid: > +variable name, e.g. this is invalid: > :let foo='a + b' :echo c{foo}d .. since the result of expansion is "ca + bd", which is not a variable name. diff --git a/runtime/doc/evim-fr.UTF-8.1 b/runtime/doc/evim-fr.UTF-8.1 new file mode 100644 index 000000000..95941610e --- /dev/null +++ b/runtime/doc/evim-fr.UTF-8.1 @@ -0,0 +1,56 @@ +.TH EVIM 1 "16 février 2002 February 16" +.SH NAME +evim \- « Easy Vim », édite un fichier avec Vim sans utiliser les modes +.SH SYNOPSIS +.br +.B evim +[options] [fichier ...] +.br +.B eview +.SH DESCRIPTION +.B eVim +lance +.B Vim +et configure ses options afin qu'il se comporte comme un éditeur sans mode. +Cela reste Vim, mais vous pouvez l'utiliser comme un éditeur « cliquer-taper ». +Cela ressemble beaucoup à l'édition avec Notepad sur MS-Windows. +.B eVim +ne fonctionne qu'avec l'interface graphique, qui est nécessaire pour permettre +l'utilisation des menus et de la barre d'outils. +.PP +Il n'est utile qu'aux personnes qui ne parviennent vraiment pas à utiliser Vim +de façon traditionnelle. L'édition est alors bien moins efficace. +.PP +.B eview +fait la même chose, mais démarre Vim en mode Lecture-seule. +Cela revient à lancer evim \-R. +.PP +Voir vim(1) pour davantage d'informations sur Vim, les options, etc. +.PP +L'option 'insertmode' est activée pour permettre de taper directement du texte. +.br +Les mappages sont configurés pour que Copier et Coller fonctionnent avec les +raccourcis habituels de MS-Windows. CTRL-X coupe le texte, CTRL-C copie le +texte et CTRL-V colle le texte. +Vous pouvez utiliser CTRL-Q pour obtenir la fonction originale de CTRL-V. +.SH OPTIONS +Voir vim(1). +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/evim.vim +Le script chargé pour initialiser eVim. +.SH AUSSI CONNU SOUS +Également connu sous le nom « Vim pour gumbies » [N.D.T. : Flying Circus...]. +Quand vous utilisez eVim, vous êtes censé prendre un mouchoir de poche, +faire un noeud à chaque coin et le porter sur votre tête. +.SH VOIR AUSSI +vim(1) +.SH AUTEUR +La majeure partie de +.B Vim +a été écrite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. +Voir le menu Aide/Remerciements ou ":help credits" dans +.B Vim. +.SH TRADUCTION +Cette page de manuel a été traduite David Blanchet. + 2005-03-26. diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt index 2aadd766d..d80a1022f 100644 --- a/runtime/doc/fold.txt +++ b/runtime/doc/fold.txt @@ -1,4 +1,4 @@ -*fold.txt* For Vim version 7.0aa. Last change: 2004 Dec 29 +*fold.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -330,7 +330,7 @@ zC Close all folds under the cursor recursively. Folds that 'foldenable' will be set. *za* -za When on a closed fold: open it. When folds are nested, you +za When on a closed fold: open it. When folds are nested, you may have to use "za" several times. When a count is given, that many closed folds are opened. When on an open fold: close it and set 'foldenable'. This diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt index 2b6a2a543..35936d058 100644 --- a/runtime/doc/gui.txt +++ b/runtime/doc/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 7.0aa. Last change: 2005 Jan 14 +*gui.txt* For Vim version 7.0aa. Last change: 2005 Apr 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -184,7 +184,7 @@ When the scrollbar is dragged all the way down, the last line of the file will appear in the top of the window. If a window is shrunk to zero height (by the growth of another window) its -scrollbar disappears. It reappears when the window is restored. +scrollbar disappears. It reappears when the window is restored. If a window is vertically split, it will get a scrollbar when it is the current window and when, taking the middle of the current window and drawing a @@ -408,7 +408,7 @@ used - you should read whichever of these is appropriate now). *clipboard* There is a special register for storing this selection, it is the "* register. Nothing is put in here unless the information about what text is -selected is about to change (eg with a left mouse click somewhere), or when +selected is about to change (e.g. with a left mouse click somewhere), or when another application wants to paste the selected text. Then the text is put in the "* register. For example, to cut a line and make it the current selection/put it on the clipboard: > @@ -504,7 +504,7 @@ floating menus that do not appear on the main menu bar. *E328* *E329* *E337* To create a new menu item, use the ":menu" commands. They are mostly like the ":map" set of commands but the first argument is a menu item name, given -as a path of menus and submenus with a '.' between them. eg: > +as a path of menus and submenus with a '.' between them, e.g.: > :menu File.Save :w :inoremenu File.Save :w @@ -648,9 +648,9 @@ simple. *gui-toolbar* The toolbar is currently available in the Win32, Athena, Motif, GTK+ (X11), -KDE and Photon GUI. It should turn up in other GUIs in due course. The default -toolbar is setup in menu.vim. -The display of the toolbar is controlled by the 'guioptions' letter 'T'. You +KDE and Photon GUI. It should turn up in other GUIs in due course. The +default toolbar is setup in menu.vim. +The display of the toolbar is controlled by the 'guioptions' letter 'T'. You can thus have menu & toolbar together, or either on its own, or neither. The appearance is controlled by the 'toolbar' option. You can chose between an image, text or both. @@ -661,7 +661,7 @@ level. Vim interprets the items in this menu as follows: 1) If an "icon=" argument was specified, the file with this name is used. The file can either be specified with the full path or with the base name. In the last case it is searched for in the "bitmaps" directory in - 'runtimepath', like in point 3). Examples: > + 'runtimepath', like in point 3. Examples: > :amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo" :amenu icon=FooIcon ToolBar.Foo :echo "Foo" < Note that in the first case the extension is included, while in the second @@ -671,7 +671,7 @@ level. Vim interprets the items in this menu as follows: A menu priority must come _after_ the icon argument: > :amenu icon=foo 1.42 ToolBar.Foo :echo "42!" 2) An item called 'BuiltIn##', where ## is a number, is taken as number ## of - the built-in bitmaps available in Vim. Currently there are 31 numbered + the built-in bitmaps available in Vim. Currently there are 31 numbered from 0 to 30 which cover most common editing operations |builtin-tools|. > :amenu ToolBar.BuiltIn22 :call SearchNext("back") 3) An item with another name is first searched for in the directory @@ -747,7 +747,7 @@ To see what an existing menu is mapped to, use just one argument after the menu commands (just like you would with the ":map" commands). If the menu specified is a submenu, then all menus under that hierarchy will be shown. If no argument is given after :menu at all, then ALL menu items are shown -for the appropriate mode (eg, Command-line mode for :cmenu). +for the appropriate mode (e.g., Command-line mode for :cmenu). Special characters in the list, just before the rhs: * The menu was defined with "nore" to disallow remapping. @@ -856,7 +856,7 @@ See section |42.4| in the user manual. When a tip is defined for a menu item, it appears in the command-line area when the mouse is over that item, much like a standard Windows menu hint in -the status bar. (Except when Vim is in Command-line mode, when of course +the status bar. (Except when Vim is in Command-line mode, when of course nothing is displayed.) When a tip is defined for a ToolBar item, it appears as a tooltip when the mouse pauses over that button, in the usual fashion. Use the |hl-Tooltip| @@ -870,7 +870,7 @@ The tip is defined like this: > And delete it with: > :tunmenu MyMenu.Hello -Tooltips are currently only supported for the X11 and Win32 GUI. However, they +Tooltips are currently only supported for the X11 and Win32 GUI. However, they should appear for the other gui platforms in the not too distant future. The ":tmenu" command works just like other menu commands, it uses the same @@ -920,7 +920,7 @@ This section describes other features which are related to the GUI. get "". - In the GUI, the modifiers SHIFT, CTRL, and ALT (or META) may be used within - mappings of special keys and mouse events. eg: :map + mappings of special keys and mouse events. E.g.: :map - In the GUI, several normal keys may have modifiers in mappings etc, these are , , , , . diff --git a/runtime/doc/gui_w16.txt b/runtime/doc/gui_w16.txt index 5055afec6..605e77ec8 100644 --- a/runtime/doc/gui_w16.txt +++ b/runtime/doc/gui_w16.txt @@ -1,4 +1,4 @@ -*gui_w16.txt* For Vim version 7.0aa. Last change: 2001 Sep 03 +*gui_w16.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -21,32 +21,32 @@ Other relevant documentation: {Vi does not have a Windows GUI} -The Win16 version of Vim will run on Windows 3.1 or later. It has not been +The Win16 version of Vim will run on Windows 3.1 or later. It has not been tested on 3.0, it probably won't work without being recompiled and -modified. (but you really should upgrade to 3.11 anyway. :) +modified. (But you really should upgrade to 3.11 anyway. :) In most respects it behaves identically to the Win32 GUI version, including -having a flat-style toolbar(!). The chief differences: +having a flat-style toolbar(!). The chief differences: 1) Bold/Italic text is not available, to speed up repaint/reduce resource - usage. (You can re-instate this by undefining MSWIN16_FASTTEXT.) + usage. (You can re-instate this by undefining MSWIN16_FASTTEXT.) 2) No tearoff menu emulation. 3) No OLE interface. -4) No long filename support (of course) +4) No long filename support (of course). 5) No tooltips on toolbar buttons - instead they produce command-line tips like menu items do. -6) Line length limited to 32767 characters (like 16-bit DOS version) +6) Line length limited to 32767 characters (like 16-bit DOS version). ============================================================================== 1. Starting the GUI *win16-start* The Win16 GUI version of Vim will always start the GUI, no matter how you -start it or what it's called. There is no 'console' version as such, but you +start it or what it's called. There is no 'console' version as such, but you can use one of the DOS versions in a DOS box. The Win16 GUI has an extra menu item: "Window/Select Font". It brings up the -standard Windows font selector. Note that bold and italic fonts are not +standard Windows font selector. Note that bold and italic fonts are not supported in an attempt to maximize GDI drawing speed. Setting the menu height doesn't work for the Win16 GUI. @@ -82,7 +82,7 @@ The clipboard works in the same way as the Win32 version: see |gui-clipboard|. 4. Shell Commands *win16-shell* Vim spawns a DOS window for external commands, to make it possible to run any -DOS command. The window uses the _default.pif settings. +DOS command. The window uses the _default.pif settings. *win16-!start* Normally, Vim waits for a command to complete before continuing (this makes @@ -135,7 +135,7 @@ as the traditional interface shared with the console version. 6.1 Dialogs The dialogs displayed by the "confirm" family (i.e. the 'confirm' option, -|:confirm| command and |confirm()| function are GUI-based rather than the +|:confirm| command and |confirm()| function) are GUI-based rather than the console-based ones used by other versions. There is no option to change this. @@ -157,7 +157,7 @@ PrintFile. See $VIMRUNTIME/menu.vim for how it works by default. Using this should also work: > :w >>prn -Vim supports a number of standard MS Windows features. Some of these are +Vim supports a number of standard MS Windows features. Some of these are detailed elsewhere: see |'mouse'|, |win32-hidden-menus|. Also see |:simalt| @@ -176,11 +176,11 @@ names with any Ex command. *win16-truetype* It is recommended that you use a raster font and not a TrueType -fixed-pitch font. e.g. Use Courier, not Courier New. This is not just +fixed-pitch font. E.g. use Courier, not Courier New. This is not just to use less resources but because there are subtle bugs in the -handling of fixed-pitch TrueType in Win3.1x. In particular, when you move +handling of fixed-pitch TrueType in Win3.1x. In particular, when you move a block cursor over a pipe character '|', the cursor is drawn in the wrong -size and bits get left behind. This is a bug in the Win3.1x GDI, it doesn't +size and bits get left behind. This is a bug in the Win3.1x GDI, it doesn't happen if you run the exe under 95/NT. vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt index 07817aba9..2c70eb724 100644 --- a/runtime/doc/gui_w32.txt +++ b/runtime/doc/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 7.0aa. Last change: 2005 Feb 14 +*gui_w32.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -58,7 +58,7 @@ of Windows 3.1 or 3.11. See |win32s|. To set Vim as the default editor for a file type: 1. Start a Windows Explorer -2. Chose View/Options -> File Types +2. Choose View/Options -> File Types 3. Select the path to gvim for every file type that you want to use it for. (you can also use three spaces in the file type field, for files without an extension). @@ -262,8 +262,8 @@ question if you really want to kill the application, Vim may be killed too! In Windows 95, the window in which the commands are executed is always 25x80 characters, to be as DOS compatible as possible (this matters!). The default -system font is used. On NT, the window will be the default you have set up for -"Console" in Control Panel. On Win32s, the properties of the DOS box are +system font is used. On NT, the window will be the default you have set up for +"Console" in Control Panel. On Win32s, the properties of the DOS box are determined by _default.pif in the windows directory. *msdos-mode* @@ -283,7 +283,7 @@ sense for most shell commands which produce output for Vim to use). If you want Vim to start a program and return immediately, you can use the following syntax on W95 & NT: > :!start {command} -On Win32s, you will have to go to another window instead. Don't forget that +On Win32s, you will have to go to another window instead. Don't forget that you must tell Windows 3.1x to keep executing a DOS command in the background while you switch back to Vim. @@ -295,7 +295,7 @@ On Win32, the normal DOS colors can be used. See |dos-colors|. Additionally the system configured colors can also be used. These are known by the names Sys_XXX, where XXX is the appropriate system color name, from the following list (see the Win32 documentation for full descriptions). Case is -ignored. note: On Win32s not all of these colors are supported. +ignored. Note: On Win32s not all of these colors are supported. Sys_3DDKShadow Sys_3DFace Sys_BTNFace Sys_3DHilight Sys_3DHighlight Sys_BTNHilight @@ -366,7 +366,7 @@ without having to go to the menu bar each time. This is most useful if you find yourself using a command buried in a sub-menu over and over again. The tearoff menus can be positioned where you like, and always stay just above -the Main Vim window. You can get rid of them by closing them as usual; they +the Main Vim window. You can get rid of them by closing them as usual; they also of course close when you exit Vim. *:tearoff* *:te* @@ -400,7 +400,7 @@ The rules are: b) Parameters are separated by white space. c) A parameter can be enclosed in double quotes to include white space. d) A sequence of zero or more backslashes (\) and a double quote (") - is special. The effective number of backslashes is halved, rounded + is special. The effective number of backslashes is halved, rounded down. An even number of backslashes reverses the acceptability of spaces and tabs, an odd number of backslashes produces a literal double quote. @@ -429,7 +429,7 @@ The "File/Print" menu prints the text with syntax highlighting, see printer installed this should also work: > :w >>prn -Vim supports a number of standard MS Windows features. Some of these are +Vim supports a number of standard MS Windows features. Some of these are detailed elsewhere: see |'mouse'|, |win32-hidden-menus|. *drag-n-drop-win32* @@ -441,7 +441,7 @@ be opened as normal. See |drag-n-drop|. {not in Vi} {only for Win32 versions} Normally, Vim takes control of all Alt- combinations, to increase the -number of possible mappings. This clashes with the standard use of Alt as the +number of possible mappings. This clashes with the standard use of Alt as the key for accessing menus. The quick way of getting standard behavior is to set the 'winaltkeys' option to "yes". This however prevents you from mapping Alt keys at all. @@ -449,18 +449,18 @@ Another way is to set 'winaltkeys' to "menu". Menu shortcut keys are then handled by windows, other ALT keys can be mapped. This doesn't allow a dependency on the current state though. To get round this, the :simalt command allows Vim (when 'winaltkeys' is not -"yes") to fake a Windows-style Alt keypress. You can use this to map Alt key +"yes") to fake a Windows-style Alt keypress. You can use this to map Alt key combinations (or anything else for that matter) to produce standard Windows -actions. Here are some examples: > +actions. Here are some examples: > :map :simalt f This makes Alt-F pop down the 'File' menu (with the stock Menu.vim) by simulating the keystrokes Alt, F. > :map :simalt ~ -This maps Alt-Space to pop down the system menu for the Vim window. Note that +This maps Alt-Space to pop down the system menu for the Vim window. Note that ~ is used by simalt to represent the character. > :map :simalt ~n -Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the +Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the Vim window via the system menu. *intellimouse-wheel-problems* diff --git a/runtime/doc/gui_x11.txt b/runtime/doc/gui_x11.txt index 2cbc4c994..d717bfe44 100644 --- a/runtime/doc/gui_x11.txt +++ b/runtime/doc/gui_x11.txt @@ -1,4 +1,4 @@ -*gui_x11.txt* For Vim version 7.0aa. Last change: 2004 Dec 29 +*gui_x11.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -113,7 +113,7 @@ same. Note that some fonts that have the same point size don't have the same pixel size! Additionally, the positioning of the fonts must be the same (ascent and descent). You can check this with "xlsfonts -l {fontname}". -If any of these things are also set with Vim commands, eg with +If any of these things are also set with Vim commands, e.g. with ":set guifont=Screen15", then this will override the X resources (currently 'guifont' is the only option that is supported). diff --git a/runtime/doc/hangulin.txt b/runtime/doc/hangulin.txt index 2fadb5b90..7487e6225 100644 --- a/runtime/doc/hangulin.txt +++ b/runtime/doc/hangulin.txt @@ -1,4 +1,4 @@ -*hangulin.txt* For Vim version 7.0aa. Last change: 2001 Sep 03 +*hangulin.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam @@ -7,17 +7,17 @@ Introduction *hangul* ------------ It is to input hangul, the Korean language, with VIM GUI version. If you have a XIM program, you can use another |+xim| feature. -Basically, it is for whom has no XIM program. +Basically, it is for anybody who has no XIM program. Compile ------- -Next is a basic option. You can add any other configure option. > +Next is a basic option. You can add any other configure option. > ./configure --with-x --enable-multibyte --enable-fontset --enable-hangulinput -And you should check the feature.h. If |+hangul_input| feature is enabled +And you should check feature.h. If |+hangul_input| feature is enabled by configure, you can select more options such as keyboard type, 2 bulsik -or 3 bulsik. You can find keywords like next in there. > +or 3 bulsik. You can find keywords like next in there. > #define HANGUL_DEFAULT_KEYBOARD 2 #define ESC_CHG_TO_ENG_MODE @@ -38,7 +38,7 @@ You should add nexts to your global vimrc ($HOME/.vimrc). > Keyboard -------- You can change keyboard type (2 bulsik or 3 bulsik) using VIM_KEYBOARD -or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): > +or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): > export VIM_KEYBOARD="2" or > @@ -67,9 +67,9 @@ $HOME/.gvimrc: > attention! the , (comma) or ; (semicolon) -And there should be no ':set guifont'. If it exists, then Gvim ignores -':set guifontset'. It means VIM runs without fontset supporting. -So, you can see only English. Hangul does not be correctly displayed. +And there should be no ':set guifont'. If it exists, then Gvim ignores +':set guifontset'. It means VIM runs without fontset supporting. +So, you can see only English. Hangul does not be correctly displayed. After 'fontset' feature is enabled, VIM does not allow using 'font'. For example, if you use > @@ -78,17 +78,17 @@ in your .gvimrc, then you should do for syntax > :hi Comment guifg=Cyan font=another_eng_font,another_your_font If you just do > :hi Comment font=another_eng_font -then you can see a GOOD error message. Be careful! +then you can see a GOOD error message. Be careful! hangul_font width should be twice than english_font width. Unsupported Feature ------------------- -Johab font not yet supported. And I don't have any plan. +Johab font not yet supported. And I don't have any plan. If you really want to use johab font, you can use the hanguldraw.c in gau package. -Hanja input not yet supported. And I don't have any plan. +Hanja input not yet supported. And I don't have any plan. If you really want to input hanja, just use VIM with hanterm. Bug or Comment diff --git a/runtime/doc/if_cscop.txt b/runtime/doc/if_cscop.txt index 368fbd66c..32bc84fc0 100644 --- a/runtime/doc/if_cscop.txt +++ b/runtime/doc/if_cscop.txt @@ -1,4 +1,4 @@ -*if_cscop.txt* For Vim version 7.0aa. Last change: 2004 Oct 21 +*if_cscop.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Andy Kahn @@ -239,12 +239,12 @@ started will have no effect! *cscopequickfix* *csqf* *E469* {not available when compiled without the |+quickfix| feature} 'cscopequickfix' specifies whether to use quickfix window to show cscope -results. This is a list of comma-separated values. Each item consists of +results. This is a list of comma-separated values. Each item consists of |cscope-find| command (s, g, d, c, t, e, f or i) and flag (+, - or 0). '+' indicates that results must be appended to quickfix window, '-' implies previous results clearance, '0' or command absence - don't use -quickfix. Search is performed from start until first command occurrence. -The default value is "" (don't use quickfix anyway). The following value +quickfix. Search is performed from start until first command occurrence. +The default value is "" (don't use quickfix anyway). The following value seems to be useful: > :set cscopequickfix=s-,c-,d-,i-,t-,e- < @@ -472,7 +472,7 @@ cscope within Vim to him. *cscope-win32* For a cscope version for Win32 see: http://iamphet.nm.ru/cscope/index.html -Win32 support was added by Sergey Khorev . Contact +Win32 support was added by Sergey Khorev . Contact him if you have Win32-specific issues. vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/doc/if_ole.txt b/runtime/doc/if_ole.txt index 06e5b42cd..36efe41e4 100644 --- a/runtime/doc/if_ole.txt +++ b/runtime/doc/if_ole.txt @@ -1,4 +1,4 @@ -*if_ole.txt* For Vim version 7.0aa. Last change: 2004 Dec 09 +*if_ole.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Paul Moore @@ -22,7 +22,7 @@ An alternative is using the client-server communication |clientserver|. 1. Activation *ole-activation* Vim acts as an OLE automation server, accessible from any automation client, -for example, Visual Basic, Python, or Perl. The Vim application "name" (its +for example, Visual Basic, Python, or Perl. The Vim application "name" (its "ProgID", in OLE terminology) is "Vim.Application". Hence, in order to start a Vim instance (or connect to an already running @@ -41,8 +41,8 @@ instance), code similar to the following should be used: $vim = new Win32::OLE 'Vim.Application'; Vim does not support acting as a "hidden" OLE server, like some other OLE -Automation servers. When a client starts up an instance of Vim, that instance -is immediately visible. Simply closing the OLE connection to the Vim instance +Automation servers. When a client starts up an instance of Vim, that instance +is immediately visible. Simply closing the OLE connection to the Vim instance is not enough to shut down the Vim instance - it is necessary to explicitly execute a quit command (for example, :qa!, :wqa). @@ -54,17 +54,17 @@ Vim exposes four methods for use by clients. *ole-sendkeys* SendKeys(keys) Execute a series of keys. -This method takes a single parameter, which is a string of keystrokes. These +This method takes a single parameter, which is a string of keystrokes. These keystrokes are executed exactly as if they had been types in at the keyboard. Special keys can be given using their <..> names, as for the right hand side -of a mapping. Note: Execution of the Ex "normal" command is not supported - +of a mapping. Note: Execution of the Ex "normal" command is not supported - see below |ole-normal|. Examples (Visual Basic syntax) > Vim.SendKeys "ihello" Vim.SendKeys "ma1GV4jy`a" -These examples assume that Vim starts in Normal mode. To force Normal mode, +These examples assume that Vim starts in Normal mode. To force Normal mode, start the key sequence with CTRL-\ CTRL-N as in > Vim.SendKeys "ihello" @@ -109,7 +109,7 @@ Example (Visual Basic syntax) > Due to the way Vim processes OLE Automation commands, combined with the method of implementation of the ex command :normal, it is not possible to execute the -:normal command via OLE automation. Any attempt to do so will fail, probably +:normal command via OLE automation. Any attempt to do so will fail, probably harmlessly, although possibly in unpredictable ways. There is currently no practical way to trap this situation, and users must @@ -118,7 +118,7 @@ simply be aware of the limitation. 4. Registration *ole-registration* *E243* Before Vim will act as an OLE server, it must be registered in the system -registry. In order to do this, Vim should be run with a single parameter of +registry. In order to do this, Vim should be run with a single parameter of "-register". *-register* > gvim -register @@ -131,9 +131,9 @@ In some situations registering is not possible. This happens when the registry is not writable. If you run into this problem you need to run gvim as "Administrator". -Once vim is registered, the application path is stored in the registry. Before -moving, deleting, or upgrading Vim, the registry entries should be removed -using the "-unregister" switch. +Once vim is registered, the application path is stored in the registry. +Before moving, deleting, or upgrading Vim, the registry entries should be +removed using the "-unregister" switch. *-unregister* > gvim -unregister diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt index 0d627daa6..ef0763d04 100644 --- a/runtime/doc/if_perl.txt +++ b/runtime/doc/if_perl.txt @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim version 7.0aa. Last change: 2004 Aug 30 +*if_perl.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Sven Verdoolaege @@ -18,7 +18,7 @@ The Perl interface only works when Vim was compiled with the |+perl| feature. 1. Editing Perl files *perl-editing* Vim syntax highlighting supports Perl and POD files. Vim assumes a file is -Perl code if the filename has a .pl or .pm suffix. Vim also examines the first +Perl code if the filename has a .pl or .pm suffix. Vim also examines the first line of a file, regardless of the filename suffix, to check if a file is a Perl script (see scripts.vim in Vim's syntax directory). Vim assumes a file is POD text if the filename has a .POD suffix. @@ -50,7 +50,7 @@ http://www.perl.com/CPAN/ports/nt/Standard/x86/ 3. Using the Perl interface *perl-using* *:perl* *:pe* -:pe[rl] {cmd} Execute Perl command {cmd}. The current package +:pe[rl] {cmd} Execute Perl command {cmd}. The current package is "main". :pe[rl] << {endpattern} @@ -84,7 +84,7 @@ Example vim script: > *:perldo* *:perld* :[range]perld[o] {cmd} Execute Perl command {cmd} for each line in the [range], with $_ being set to the text of each line in - turn, without a trailing . Setting $_ will change + turn, without a trailing . Setting $_ will change the text, but note that it is not possible to add or delete lines using this command. The default for [range] is the whole file: "1,$". @@ -211,7 +211,7 @@ Buffer->Count() Returns the number of lines in the Buffer. *perl-Get* Buffer->Get({lnum}, {lnum}?, ...) Returns a text string of line {lnum} in the Buffer - for each {lnum} specified. An array can be passed + for each {lnum} specified. An array can be passed with a list of {lnum}'s specified. *perl-Delete* diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt index d26461c85..1a2a33de5 100644 --- a/runtime/doc/if_pyth.txt +++ b/runtime/doc/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.0aa. Last change: 2004 Jul 25 +*if_pyth.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Paul Moore @@ -85,7 +85,7 @@ just like in the Python interpreter.) 2. The vim module *python-vim* Python code gets all of its access to vim (with one exception - see -|python-output| below) via the "vim" module. The vim module implements two +|python-output| below) via the "vim" module. The vim module implements two methods, three constants, and one error object. You need to import the vim module before using it: > :python import vim @@ -113,7 +113,7 @@ Overview > Methods of the "vim" module vim.command(str) *python-command* - Executes the vim (ex-mode) command str. Returns None. + Executes the vim (ex-mode) command str. Returns None. Examples: > :py vim.command("set tw=72") :py vim.command("%s/aaa/bbb/g") @@ -130,7 +130,7 @@ vim.command(str) *python-command* vim.eval(str) *python-eval* Evaluates the expression str using the vim internal expression - evaluator (see |expression|). Returns the expression result as a + evaluator (see |expression|). Returns the expression result as a string. Examples: > :py text_width = vim.eval("&tw") @@ -156,7 +156,7 @@ Constants of the "vim" module to which the variables referred. vim.buffers *python-buffers* - A sequence object providing access to the list of vim buffers. The + A sequence object providing access to the list of vim buffers. The object supports the following operations: > :py b = vim.buffers[i] # Indexing (read-only) :py b in vim.buffers # Membership test @@ -164,7 +164,7 @@ vim.buffers *python-buffers* :py for b in vim.buffers: # Sequential access < vim.windows *python-windows* - A sequence object providing access to the list of vim windows. The + A sequence object providing access to the list of vim windows. The object supports the following operations: > :py w = vim.windows[i] # Indexing (read-only) :py w in vim.windows # Membership test @@ -179,10 +179,10 @@ vim.current *python-current* vim.current.window The current window (RO) Window vim.current.range The current line range (RO) Range - The last case deserves a little explanation. When the :python or + The last case deserves a little explanation. When the :python or :pyfile command specifies a range, this range of lines becomes the - "current range". A range is a bit like a buffer, but with all access - restricted to a subset of lines. See |python-range| for more details. + "current range". A range is a bit like a buffer, but with all access + restricted to a subset of lines. See |python-range| for more details. Output from Python *python-output* @@ -197,31 +197,31 @@ Output from Python *python-output* *python-input* Input (via sys.stdin, including input() and raw_input()) is not - supported, and may cause the program to crash. This should probably be + supported, and may cause the program to crash. This should probably be fixed. ============================================================================== 3. Buffer objects *python-buffer* -Buffer objects represent vim buffers. You can obtain them in a number of ways: +Buffer objects represent vim buffers. You can obtain them in a number of ways: - via vim.current.buffer (|python-current|) - from indexing vim.buffers (|python-buffers|) - from the "buffer" attribute of a window (|python-window|) Buffer objects have one read-only attribute - name - the full file name for -the buffer. They also have three methods (append, mark, and range; see below). +the buffer. They also have three methods (append, mark, and range; see below). -You can also treat buffer objects as sequence objects. In this context, they +You can also treat buffer objects as sequence objects. In this context, they act as if they were lists (yes, they are mutable) of strings, with each -element being a line of the buffer. All of the usual sequence operations, +element being a line of the buffer. All of the usual sequence operations, including indexing, index assignment, slicing and slice assignment, work as -you would expect. Note that the result of indexing (slicing) a buffer is a -string (list of strings). This has one unusual consequence - b[:] is different -from b. In particular, "b[:] = None" deletes the whole of the buffer, whereas +you would expect. Note that the result of indexing (slicing) a buffer is a +string (list of strings). This has one unusual consequence - b[:] is different +from b. In particular, "b[:] = None" deletes the whole of the buffer, whereas "b = None" merely updates the variable b, with no effect on the buffer. -Buffer indexes start at zero, as is normal in Python. This differs from vim -line numbers, which start from 1. This is particularly relevant when dealing +Buffer indexes start at zero, as is normal in Python. This differs from vim +line numbers, which start from 1. This is particularly relevant when dealing with marks (see below) which use vim line numbers. The buffer object methods are: @@ -255,12 +255,12 @@ Examples (assume b is the current buffer) > ============================================================================== 4. Range objects *python-range* -Range objects represent a part of a vim buffer. You can obtain them in a +Range objects represent a part of a vim buffer. You can obtain them in a number of ways: - via vim.current.range (|python-current|) - from a buffer's range() method (|python-buffer|) -A range object is almost identical in operation to a buffer object. However, +A range object is almost identical in operation to a buffer object. However, all operations are restricted to the lines within the range (this line range can, of course, change as a result of slice assignments, line deletions, or the range.append() method). @@ -283,11 +283,11 @@ Example (assume r is the current range): ============================================================================== 5. Window objects *python-window* -Window objects represent vim windows. You can obtain them in a number of ways: +Window objects represent vim windows. You can obtain them in a number of ways: - via vim.current.window (|python-current|) - from indexing vim.windows (|python-windows|) -You can manipulate window objects only through their attributes. They have no +You can manipulate window objects only through their attributes. They have no methods, and no sequence or other interface. Window attributes are: diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt index e8d09f62c..3ca8cc510 100644 --- a/runtime/doc/if_ruby.txt +++ b/runtime/doc/if_ruby.txt @@ -1,4 +1,4 @@ -*if_ruby.txt* For Vim version 7.0aa. Last change: 2004 Mar 14 +*if_ruby.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Shugo Maeda @@ -32,7 +32,7 @@ downloading Ruby there. Execute Ruby script {script}. {endpattern} must NOT be preceded by any white space. If {endpattern} is omitted, it defaults to a dot '.' - like for the |:append| and |:insert| commands. This + like for the |:append| and |:insert| commands. This form of the |:ruby| command is mainly useful for including ruby code in vim scripts. Note: This command doesn't work when the Ruby feature @@ -60,7 +60,7 @@ Example Vim script: > *:rubydo* *:rubyd* *E265* :[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the [range], with $_ being set to the text of each line in - turn, without a trailing . Setting $_ will change + turn, without a trailing . Setting $_ will change the text, but note that it is not possible to add or delete lines using this command. The default for [range] is the whole file: "1,$". @@ -115,7 +115,7 @@ VIM::command({cmd}) *ruby-evaluate* VIM::evaluate({expr}) Evaluates {expr} using the vim internal expression evaluator (see - |expression|). Returns the expression result as a string. + |expression|). Returns the expression result as a string. ============================================================================== 3. VIM::Buffer objects *ruby-buffer* @@ -126,7 +126,7 @@ Class Methods: current Returns the current buffer object. count Returns the number of buffers. -self[{n}] Returns the buffer object for the number {n}. The first number +self[{n}] Returns the buffer object for the number {n}. The first number is 0. Methods: @@ -151,7 +151,7 @@ Class Methods: current Returns the current window object. count Returns the number of windows. -self[{n}] Returns the window object for the number {n}. The first number +self[{n}] Returns the window object for the number {n}. The first number is 0. Methods: diff --git a/runtime/doc/if_sniff.txt b/runtime/doc/if_sniff.txt index 12b34c481..a55c7c16f 100644 --- a/runtime/doc/if_sniff.txt +++ b/runtime/doc/if_sniff.txt @@ -1,4 +1,4 @@ -*if_sniff.txt* For Vim version 7.0aa. Last change: 2001 Sep 03 +*if_sniff.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL @@ -45,7 +45,7 @@ edit source code. On the other hand, you can send queries to SNiFF+ with the :sni[ff] Display all possible requests and the connection status -Most requests require a symbol (identifier) as parameter. If it is omitted, +Most requests require a symbol (identifier) as parameter. If it is omitted, Vim will use the current word under the cursor. The available requests are listed below: @@ -54,7 +54,7 @@ request mapping description connect sc Establish connection with SNiFF+. Make sure SNiFF+ is prepared for this in the Preferences -disconnect sq Disconnect from SNiFF+. You can reconnect any +disconnect sq Disconnect from SNiFF+. You can reconnect any time with :sniff connect (or 'sc') toggle st Toggle between implementation and definition file @@ -80,7 +80,7 @@ show-docu sd Show documentation of symbol gen-docu sD Generate documentation of symbol The mappings are defined in a file 'sniff.vim', which is part of every SNiFF+ -product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim +product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim connects to SNiFF+. ============================================================================== diff --git a/runtime/doc/if_tcl.txt b/runtime/doc/if_tcl.txt index b386bed15..1195ed5ac 100644 --- a/runtime/doc/if_tcl.txt +++ b/runtime/doc/if_tcl.txt @@ -1,4 +1,4 @@ -*if_tcl.txt* For Vim version 7.0aa. Last change: 2004 Jan 17 +*if_tcl.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Ingo Wilken @@ -36,7 +36,7 @@ comments, ideas etc to wasn't compiled in. To avoid errors, see |script-here|. -{endmarker} must NOT be preceded by any white space. If {endmarker} is +{endmarker} must NOT be preceded by any white space. If {endmarker} is omitted from after the "<<", a dot '.' must be used after {script}, like for the |:append| and |:insert| commands. This form of the |:tcl| command is mainly useful for including tcl code in Vim @@ -152,7 +152,7 @@ Commands: ::vim::window {option} *tcl-window* Provides access to vim windows. Currently only the "list" option is - implemented. This creates a window command (see |tcl-window-cmds|) for + implemented. This creates a window command (see |tcl-window-cmds|) for each window, and returns a list of the command names as the result. Example: > set wins [::vim::window list] @@ -227,7 +227,7 @@ The ::vim::current(window) variable contains the name of the window command for the current window. A window command is automatically deleted when the corresponding vim window is closed. -Lets assume the name of the window command is stored in the Tcl variable "win", +Let's assume the name of the window command is stored in the Tcl variable "win", i.e. "$win" calls the command. The following options are available: > $win buffer # Create Tcl command for window's buffer. @@ -306,7 +306,7 @@ changed, all marks in the buffer are automatically adjusted. Any changes to the buffer's contents made by Tcl commands can be undone with the "undo" vim command (see |undo|). -Lets assume the name of the buffer command is stored in the Tcl variable "buf", +Let's assume the name of the buffer command is stored in the Tcl variable "buf", i.e. "$buf" calls the command. The following options are available: > $buf append {n} {str} # Append a line to buffer, after line {n}. @@ -497,7 +497,7 @@ This procedure runs an ex command on each buffer (idea stolen from Ron Aaron): } Use it like this: :tcl eachbuf %s/foo/bar/g -Be careful with Tcl's string and backslash substitution, tough. If in doubt, +Be careful with Tcl's string and backslash substitution, tough. If in doubt, surround the ex command with curly braces. diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt index bd4bb4119..0540c43b4 100644 --- a/runtime/doc/indent.txt +++ b/runtime/doc/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.0aa. Last change: 2005 Feb 24 +*indent.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -237,7 +237,7 @@ assume a 'shiftwidth' of 4. } } < bN If N != 0 Vim will align a final "break" with the case label, - so that case..break looks like a sort of block. (default: 0). + so that case..break looks like a sort of block. (default: 0). cino= cino=b1 > switch (x) switch(x) @@ -325,7 +325,7 @@ assume a 'shiftwidth' of 4. ********/ ********/ < (Example uses ":set comments& comments-=s1:/* comments^=s0:/*") - /N Indent comment lines N characters extra. (default 0). + /N Indent comment lines N characters extra. (default 0). cino= cino=/4 > a = b; a = b; /* comment */ /* comment */ @@ -381,7 +381,7 @@ assume a 'shiftwidth' of 4. the last non-white character in its line and it is not the closing parentheses, indent the following line N characters relative to the outer context (i.e. start of the line or the - next unclosed parentheses). (default: 0). + next unclosed parentheses). (default: 0). cino=(0 cino=(0,W4 > a_long_line( a_long_line( @@ -406,7 +406,7 @@ assume a 'shiftwidth' of 4. < *java-cinoptions* *java-indenting* jN Indent java anonymous classes correctly. The value 'N' is - currently unused but must be non-zero (e.g. 'j1'). 'j1' will + currently unused but must be non-zero (e.g. 'j1'). 'j1' will indent for example the following code snippet correctly: > object.add(new ChangeListener() { @@ -451,31 +451,31 @@ REMARKS ABOUT SPECIFIC INDENT FILES ~ FORTRAN *fortran-indent* -Block if, select case, and where constructs are indented. Comments, labelled +Block if, select case, and where constructs are indented. Comments, labelled statements and continuation lines are indented if the Fortran is in free source form, whereas they are not indented if the Fortran is in fixed source -form because of the left margin requirements. Hence manual indent corrections +form because of the left margin requirements. Hence manual indent corrections will be necessary for labelled statements and continuation lines when fixed -source form is being used. For further discussion of the method used for the +source form is being used. For further discussion of the method used for the detection of source format see |fortran-syntax|. Do loops ~ -All do loops are left unindented by default. Do loops can be unstructured in +All do loops are left unindented by default. Do loops can be unstructured in Fortran with (possibly multiple) loops ending on a labelled executable -statement of almost arbitrary type. Correct indentation requires -compiler-quality parsing. Old code with do loops ending on labelled statements +statement of almost arbitrary type. Correct indentation requires +compiler-quality parsing. Old code with do loops ending on labelled statements of arbitrary type can be indented with elaborate programs such as Tidy -(http://www.unb.ca/chem/ajit/f_tidy.htm). Structured do/continue loops are +(http://www.unb.ca/chem/ajit/f_tidy.htm). Structured do/continue loops are also left unindented because continue statements are also used for purposes -other than ending a do loop. Programs such as Tidy can convert structured -do/continue loops to the do/enddo form. Do loops of the do/enddo variety can -be indented. If you use only structured loops of the do/enddo form, you should +other than ending a do loop. Programs such as Tidy can convert structured +do/continue loops to the do/enddo form. Do loops of the do/enddo variety can +be indented. If you use only structured loops of the do/enddo form, you should declare this by setting the fortran_do_enddo variable in your .vimrc as follows > let fortran_do_enddo=1 -in which case do loops will be indented. If all your loops are of do/enddo +in which case do loops will be indented. If all your loops are of do/enddo type only in, say, .f90 files, then you should set a buffer flag with an autocommand such as > diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index 7735e37fe..b7a9db952 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.0aa. Last change: 2005 Feb 25 +*index.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -800,7 +800,7 @@ tag char note action in Normal mode ~ ============================================================================== 3. Visual mode *visual-index* -Most commands in Visual mode are the same as in Normal mode. The ones listed +Most commands in Visual mode are the same as in Normal mode. The ones listed here are those that are different. tag command note action in Visual mode ~ diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index 19b735729..222562bf1 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.0aa. Last change: 2005 Feb 21 +*insert.txt* For Vim version 7.0aa. Last change: 2005 Apr 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -190,7 +190,7 @@ CTRL-Q Same as CTRL-V. work then. It does work in the GUI. CTRL-X Enter CTRL-X mode. This is a sub-mode where commands can - be given to complete words or scroll the window. See + be given to complete words or scroll the window. See |i_CTRL-X| and |ins-completion|. {not in Vi} *i_CTRL-E* @@ -271,7 +271,7 @@ entered directly. This way you can enter any character, except a line break first char mode max nr of chars max value ~ (none) decimal 3 255 -o or O octal 3 255 +o or O octal 3 377 (255) x or X hexadecimal 2 ff (255) u hexadecimal 4 ffff (65535) U hexadecimal 8 7fffffff (2147483647) @@ -392,7 +392,7 @@ The CTRL-G j and CTRL-G k commands can be used to insert text in front of a column. Example: > int i; int j; -Position the cursor on the first "int", type "istaticj ". The +Position the cursor on the first "int", type "istatic j ". The result is: > static int i; int j; @@ -726,7 +726,7 @@ CTRL-X CTRL-K Search the files given with the 'dictionary' option keyword replaces the previous matching keyword. *i_CTRL-X_CTRL-T* -CTRL-X CTRL-T Works as CTRL-X CTRL-K, but in a special way. It uses +CTRL-X CTRL-T Works as CTRL-X CTRL-K, but in a special way. It uses the 'thesaurus' option instead of 'dictionary'. If a match is found in the thesaurus file, all the remaining words on the same line are included as diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index 2a9dd1b36..1119618d7 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.0aa. Last change: 2005 Feb 27 +*map.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -22,7 +22,7 @@ is to define a sequence commands for a function key. Example: > :map a=strftime("%c") -This appends the current date and time after the cursor. (in <> notation |<>|) +This appends the current date and time after the cursor (in <> notation |<>|). There are commands to enter new mappings, remove mappings and list mappings. See |map-overview| for the various forms of "map" and their relationships with @@ -174,7 +174,7 @@ There are five sets of mappings - For Visual mode: When typing commands while the Visual area is highlighted. - For Operator-pending mode: When an operator is pending (after "d", "y", "c", etc.). Example: ":omap { w" makes "y{" work like "yw" and "d{" like "dw". -- For Insert mode. These are also used in Replace mode. +- For Insert mode. These are also used in Replace mode. - For Command-line mode: When entering a ":" or "/" command. There are no separate mappings for Select mode. The same as for Visual mode @@ -811,7 +811,7 @@ feature}. ============================================================================== 4. User-defined commands *user-commands* -It is possible to define your own Ex commands. A user-defined command can act +It is possible to define your own Ex commands. A user-defined command can act just like a built-in command (it can have a range or arguments, arguments can be completed as filenames or buffer names, etc), except that when the command is executed, it is transformed into a normal ex command and then executed. @@ -820,7 +820,7 @@ For starters: See section |40.2| in the user manual. *E183* *user-cmd-ambiguous* All user defined commands must start with an uppercase letter, to avoid -confusion with builtin commands. (There are a few builtin commands, notably +confusion with builtin commands. (There are a few builtin commands, notably :Next, :Print and :X, which do start with an uppercase letter. The builtin will always take precedence in these cases). The other characters of the user command can be uppercase letters, lowercase letters or digits. When using @@ -829,8 +829,8 @@ ambiguous. For example, the command ":Cc2" could be the user command ":Cc2" without an argument, or the command ":Cc" with argument "2". It is advised to put a space between the command name and the argument to avoid these problems. -When using a user-defined command, the command can be abbreviated. However, if -an abbreviation is not unique, an error will be issued. Furthermore, a +When using a user-defined command, the command can be abbreviated. However, if +an abbreviation is not unique, an error will be issued. Furthermore, a built-in command will always take precedence. Example: > @@ -846,7 +846,7 @@ It is recommended that full names for user-defined commands are used in scripts. :com[mand] *:com* *:command* - List all user-defined commands. When listing commands, + List all user-defined commands. When listing commands, the characters in the first two columns are ! Command has the -bang attribute " Command has the -register attribute @@ -858,8 +858,8 @@ scripts. *E174* *E182* :com[mand][!] [{attr}...] {cmd} {rep} Define a user command. The name of the command is - {cmd} and its replacement text is {rep}. The command's - attributes (see below) are {attr}. If the command + {cmd} and its replacement text is {rep}. The command's + attributes (see below) are {attr}. If the command already exists, an error is reported, unless a ! is specified, in which case the command is redefined. @@ -871,20 +871,20 @@ scripts. Command attributes -User-defined commands are treated by Vim just like any other ex commands. They -can have arguments, or have a range specified. Arguments are subject to -completion as filenames, buffers, etc. Exactly how this works depends upon the +User-defined commands are treated by Vim just like any other ex commands. They +can have arguments, or have a range specified. Arguments are subject to +completion as filenames, buffers, etc. Exactly how this works depends upon the command's attributes, which are specified when the command is defined. There are a number of attributes, split into four categories: argument -handling, completion behavior, range handling, and special cases. The +handling, completion behavior, range handling, and special cases. The attributes are described below, by category. Argument handling *E175* *E176* By default, a user defined command will take no arguments (and an error is -reported if any are supplied). However, it is possible to specify that the -command can take arguments, using the -nargs attribute. Valid cases are: +reported if any are supplied). However, it is possible to specify that the +command can take arguments, using the -nargs attribute. Valid cases are: -nargs=0 No arguments are allowed (the default) -nargs=1 Exactly one argument is required @@ -961,11 +961,11 @@ The following example lists user names to a Finger command > Range handling *E177* *E178* -By default, user-defined commands do not accept a line number range. However, +By default, user-defined commands do not accept a line number range. However, it is possible to specify that the command does take a range (the -range attribute), or that it takes an arbitrary count value, either in the line number position (-range=N, like the |:split| command) or as a "count" -argument (-count=N, like the |:Next| command). Possible attributes are: +argument (-count=N, like the |:Next| command). Possible attributes are: -range Range allowed, default is current line -range=% Range allowed, default is whole file (1,$) @@ -997,9 +997,9 @@ replacement text separately. Replacement text The replacement text for a user defined command is scanned for special escape -sequences, using <...> notation. Escape sequences are replaced with values -from the entered command line, and all other text is copied unchanged. The -resulting string is executed as an Ex command. If the initial < of an escape +sequences, using <...> notation. Escape sequences are replaced with values +from the entered command line, and all other text is copied unchanged. The +resulting string is executed as an Ex command. If the initial < of an escape sequence is preceded by a backslash, the sequence is copied unchanged. The valid escape sequences are @@ -1017,7 +1017,7 @@ The valid escape sequences are expands to nothing. ** ** (See the '-register' attribute) The optional register, - if specified. Otherwise, expands to nothing. + if specified. Otherwise, expands to nothing. is a synonym for this. ** The command arguments, exactly as supplied (but as @@ -1034,7 +1034,7 @@ If the first two characters of an escape sequence are "q-" (for example, for use in an expression. This uses the argument as one single value. To allow commands to pass their arguments on to a user-defined function, there -is a special form ("function args"). This splits the command +is a special form ("function args"). This splits the command arguments at spaces and Tabs, quotes each argument individually, and the sequence is replaced by the comma-separated list of quoted arguments. See the Mycmd example below. When there is no argument, also has no diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt index be6365896..367de8b7a 100644 --- a/runtime/doc/mbyte.txt +++ b/runtime/doc/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.0aa. Last change: 2005 Feb 13 +*mbyte.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -436,7 +436,7 @@ Useful utilities for converting the charset: ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz Korean: hmconv - Hmconv is Korean code conversion utility especially for E-mail. It can + Hmconv is Korean code conversion utility especially for E-mail. It can convert between EUC-KR and ISO-2022-KR. Hmconv can be found at: ftp://ftp.kaist.ac.kr/pub/hangul/code/hmconv/ @@ -444,7 +444,7 @@ Useful utilities for converting the charset: Lv is a Powerful Multilingual File Viewer. And it can be worked as |charset| converter. Supported |charset|: ISO-2022-CN, ISO-2022-JP, ISO-2022-KR, EUC-CN, EUC-JP, EUC-KR, EUC-TW, UTF-7, UTF-8, ISO-8859 - series, Shift_JIS, Big5 and HZ. Lv can be found at: + series, Shift_JIS, Big5 and HZ. Lv can be found at: http://www.ff.iij4u.or.jp/~nrt/freeware/lv4495.tar.gz @@ -506,7 +506,7 @@ Now start xterm with > or, for bigger character: > xterm -u8 -fn -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 -and you will have a working UTF-8 terminal emulator. Try both > +and you will have a working UTF-8 terminal emulator. Try both > cat utf-8-demo.txt vim utf-8-demo.txt @@ -761,7 +761,7 @@ is suitable for complex input, such as CJK. number of Hira-gana characters are 76. So, first, we pre-input text as pronounced in Hira-gana, second, we convert Hira-gana to Kanji or Kata-Kana, if needed. There are some Kana-Kanji conversion server: jserver - (distributed with Wnn, see below) and canna. Canna could be found at: + (distributed with Wnn, see below) and canna. Canna could be found at: ftp://ftp.nec.co.jp/pub/Canna/ (no longer works). There is a good input system: Wnn4.2. Wnn 4.2 contains, @@ -801,7 +801,7 @@ Use the RPM or port for your system. Preedit Area and Status Area are performed by the client application in the area of application. The client application is directed by the |IM-server| to display all pre-edit data at the location of text - insertion. The client registers callbacks invoked by the input method + insertion. The client registers callbacks invoked by the input method during pre-editing. *. over-the-spot *OverTheSpot* Status Area is created in a fixed position within the area of application, @@ -1231,7 +1231,7 @@ is no longer relevant in the GTK+ 2 GUI. Up to two combining characters can be used. The combining character is drawn on top of the preceding character. When editing text a composing character is mostly considered part of the preceding character. For example "x" will -delete a character and its following composing characters by default. If the +delete a character and its following composing characters by default. If the 'delcombine' option is on, then pressing 'x' will delete the combining characters, one at a time, then the base character. But when inserting, you type the first character and the following composing characters separately, @@ -1253,7 +1253,7 @@ characters present in the selected font. Useful commands: - "ga" shows the decimal, hexadecimal and octal value of the character under - the cursor. If there are composing characters these are shown too. (if the + the cursor. If there are composing characters these are shown too. (If the message is truncated, use ":messages"). - "g8" shows the bytes used in a UTF-8 character, also the composing characters, as hex numbers. diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index cfc318bf6..0c65bb506 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.0aa. Last change: 2005 Feb 08 +*motion.txt* For Vim version 7.0aa. Last change: 2005 Apr 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -72,7 +72,7 @@ and end position. Generally, motions that move between lines affect lines characterwise). However, there are some exceptions. *exclusive* *inclusive* -A character motion is either inclusive or exclusive. When inclusive, the start +A character motion is either inclusive or exclusive. When inclusive, the start and end position of the motion are included in the operation. When exclusive, the last character towards the end of the buffer is not included. Linewise motions always include the start and end position. @@ -1061,7 +1061,7 @@ g; Go to [count] older position in change list. *g,* *E663* g, Go to [count] newer cursor position in change list. - Just like "g;| but in the opposite direction. + Just like |g;| but in the opposite direction. (not a motion command) {not in Vi} {not available without the +jumplist feature} diff --git a/runtime/doc/netbeans.txt b/runtime/doc/netbeans.txt index 5007122d0..d642497cc 100644 --- a/runtime/doc/netbeans.txt +++ b/runtime/doc/netbeans.txt @@ -1,4 +1,4 @@ -*netbeans.txt* For Vim version 7.0aa. Last change: 2005 Jan 31 +*netbeans.txt* For Vim version 7.0aa. Last change: 2005 Apr 04 VIM REFERENCE MANUAL by Gordon Prieur @@ -38,7 +38,7 @@ Visit http://www.sun.com for more information regarding the Sun ONE Studio product line. Current releases of NetBeans provide full support for Java and limited support -for C, C++, and Fortran. Current releases of Sun ONE Studio provide full +for C, C++, and Fortran. Current releases of Sun ONE Studio provide full support for Java, C, C++, and Fortran. The interface to NetBeans is also supported by Agide, the A-A-P GUI IDE. @@ -50,12 +50,12 @@ See the A-A-P website for information: http://www.A-A-P.org. ============================================================================== 2. NetBeans Key Bindings *netbeans-keybindings* -Vim understands a number of key bindings that execute NetBeans commands. These -are typically all the Function key combinations. To execute a NetBeans command, -the user must press the Pause key followed by a NetBeans key binding. For -example, in order to compile a Java file, the NetBeans key binding is "F9". So, -while in vim, press "Pause F9" to compile a java file. To toggle a breakpoint -at the current line, press "Pause Shift F8". +Vim understands a number of key bindings that execute NetBeans commands. +These are typically all the Function key combinations. To execute a NetBeans +command, the user must press the Pause key followed by a NetBeans key binding. +For example, in order to compile a Java file, the NetBeans key binding is +"F9". So, while in vim, press "Pause F9" to compile a java file. To toggle a +breakpoint at the current line, press "Pause Shift F8". The Pause key is Function key 21. If you don't have a working Pause key and want to use F8 instead, use: > @@ -81,10 +81,10 @@ In case you do not want the NetBeans interface you can disable it by uncommenting a line with "--disable-netbeans" in the Makefile. Currently, only gvim is supported in this integration as NetBeans does not -have means to supply a terminal emulator for the vim command. Furthermore, +have means to supply a terminal emulator for the vim command. Furthermore, there is only GUI support for GTK, GNOME, and Motif. -If Motif support is required the user must supply XPM libraries. See +If Motif support is required the user must supply XPM libraries. See |workshop-xpm| for details on obtaining the latest version of XPM. @@ -99,45 +99,45 @@ XPM by yourself or use precompiled libraries from http://iamphet.nm.ru/misc/ ============================================================================== 4. Downloading NetBeans *netbeans-download* -The NetBeans IDE is available for download from netbeans.org. You can download +The NetBeans IDE is available for download from netbeans.org. You can download a released version, download sources, or use CVS to download the current -source tree. If you choose to download sources, follow directions from +source tree. If you choose to download sources, follow directions from netbeans.org on building NetBeans. Depending on the version of NetBeans you download, you may need to do further -work to get the required External Editor module. This is the module which lets -NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org +work to get the required External Editor module. This is the module which lets +NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org for details on downloading this module if your NetBeans release does not have it. -For C, C++, and Fortran support you will also need the cpp module. See +For C, C++, and Fortran support you will also need the cpp module. See http://cpp.netbeans.org for information regarding this module. You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day -free trial. See http://www.sun.com for further details. +free trial. See http://www.sun.com for further details. ============================================================================== 5. Preparing NetBeans for Vim *netbeans-preparation* In order for NetBeans to work with vim, the NetBeans External Editor module -must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition -then this module should be loaded and enabled. If you have a NetBeans release +must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition +then this module should be loaded and enabled. If you have a NetBeans release you may need to find another way of obtaining this open source module. You can check if you have this module by opening the Tools->Options dialog and drilling down to the "Modules" list (IDE Configuration->System->Modules). If your Modules list has an entry for "External Editor" you must make sure -it is enabled (the "Enabled" property should have the value "True"). If your +it is enabled (the "Enabled" property should have the value "True"). If your Modules list has no External Editor see the next section on |obtaining-exted|. ============================================================================== 6. Obtaining the External Editor Module *obtaining-exted* -There are 2 ways of obtaining the External Editor module. The easiest way +There are 2 ways of obtaining the External Editor module. The easiest way is to use the NetBeans Update Center to download and install the module. Unfortunately, some versions do not have this module in their update -center. If you cannot download via the update center you will need to -download sources and build the module. I will try and get the module +center. If you cannot download via the update center you will need to +download sources and build the module. I will try and get the module available from the NetBeans Update Center so building will be unnecessary. Also check http://externaleditor.netbeans.org for other availability options. @@ -152,22 +152,22 @@ Assuming you have loaded and enabled the NetBeans External Editor module as described in |netbeans-preparation| all you need to do is verify that the gvim command line is properly configured for your environment. -Open the Tools->Options dialog and open the Editing category. Select the -External Editor. The right hand pane should contain a Properties tab and -an Expert tab. In the Properties tab make sure the "Editor Type" is set -to "Vim". In the Expert tab make sure the "Vim Command" is correct. +Open the Tools->Options dialog and open the Editing category. Select the +External Editor. The right hand pane should contain a Properties tab and +an Expert tab. In the Properties tab make sure the "Editor Type" is set +to "Vim". In the Expert tab make sure the "Vim Command" is correct. -You should be careful if you change the "Vim Command". There are command +You should be careful if you change the "Vim Command". There are command line options there which must be there for the connection to be properly -set up. You can change the command name but thats about it. If your gvim -can be found by your $PATH then the VIM Command can start with "gvim". If +set up. You can change the command name but that's about it. If your gvim +can be found by your $PATH then the VIM Command can start with "gvim". If you don't want gvim searched from your $PATH then hard code in the full -Unix path name. At this point you should get a gvim for any source file +Unix path name. At this point you should get a gvim for any source file you open in NetBeans. If some files come up in gvim and others (with different file suffixes) come up in the default NetBeans editor you should verify the MIME type in the -Expert tab MIME Type property. NetBeans is MIME oriented and the External +Expert tab MIME Type property. NetBeans is MIME oriented and the External Editor will only open MIME types specified in this property. ============================================================================== @@ -194,7 +194,7 @@ Partial writes disallowed for NetBeans buffers NetBeans connection lost for this buffer NetBeans has become confused about the state of this file. Rather than risc data corruption, NetBeans has severed the - connection for this file. Vim will take over responsibility + connection for this file. Vim will take over responsibility for saving changes to this file and NetBeans will no longer know of these changes. @@ -248,13 +248,13 @@ NetBeans (see http://externaleditor.netbeans.org). Later it was extended to work with Agide (A-A-P GUI IDE, see http://www.a-a-p.org). The extensions are marked with "version 2.1". -Version 2.2 of the protocol has several minor changes which should only -affect NetBeans users (ie, not Agide users). However, a bug was fixed which -could cause confusion. The netbeans_saved() function sent a "save" protocol -command. In protocol version 2.1 and earlier this was incorrectly interpreted -as a notification that a write had taken place. In reality, it told NetBeans -to save the file so multiple writes were being done. This caused various -problems and has been fixed in 2.2. To decrease the likelihood of this +Version 2.2 of the protocol has several minor changes which should only affect +NetBeans users (ie, not Agide users). However, a bug was fixed which could +cause confusion. The netbeans_saved() function sent a "save" protocol +command. In protocol version 2.1 and earlier this was incorrectly interpreted +as a notification that a write had taken place. In reality, it told NetBeans +to save the file so multiple writes were being done. This caused various +problems and has been fixed in 2.2. To decrease the likelihood of this confusion happening again, netbeans_saved() has been renamed to netbeans_save_buffer(). @@ -428,7 +428,7 @@ initDone Mark the buffer as ready for use. Implicitly makes the buffer insertDone Sent by NetBeans to tell vim an initial file insert is done. - This triggers a read message being printed. Prior to version + This triggers a read message being printed. Prior to version 2.3, no read messages were displayed after opening a file. New in version 2.3. @@ -466,8 +466,8 @@ save Save the buffer when it was modified. The other side of the New in version 2.2. saveDone - Sent by NetBeans to tell vim a save is done. This triggers - a save message being printed. Prior to version 2.3, no save + Sent by NetBeans to tell vim a save is done. This triggers + a save message being printed. Prior to version 2.3, no save messages were displayed after a save. New in version 2.3. @@ -539,7 +539,7 @@ showBalloon text specialKeys Map a set of keys (mostly function keys) to be passed back - to NetBeans for processing. This lets NetBeans hotkeys be + to NetBeans for processing. This lets NetBeans hotkeys be used from vim. Implemented in version 2.3. @@ -652,7 +652,7 @@ buttonRelease button lnum col at the time of the release. Only for buffers that are owned by NetBeans. This event is not sent if the button was released while the mouse was in the status line or in a - separator line. If col is less than 1 the button release was + separator line. If col is less than 1 the button release was in the sign area. New in version 2.2. @@ -772,8 +772,8 @@ REJECT Not used. *:nbkey* :nbkey key Pass the key to NetBeans for processing -Pass the key to NetBeans for hot-key processing. You should not need to use -this command directly. However, NetBeans passes a list of hot-keys to Vim at +Pass the key to NetBeans for hot-key processing. You should not need to use +this command directly. However, NetBeans passes a list of hot-keys to Vim at startup and when one of these keys is pressed, this command is generated to send the key press back to NetBeans. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 96abe9e3d..a3f7ca489 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.0aa. Last change: 2005 Mar 28 +*options.txt* For Vim version 7.0aa. Last change: 2005 Apr 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3209,8 +3209,8 @@ A jump table for the options with a short description can be found at |Q_op|. 't' Include tearoff menu items. Currently only works for Win32, GTK+, and Motif 1.2 GUI. - 'T' Include Toolbar. Currently only in Win32, GTK+, Motif, and - Athena GUIs. + 'T' Include Toolbar. Currently only in Win32, GTK+, Motif, Photon + and Athena GUIs. 'r' Right-hand scrollbar is always present. 'R' Right-hand scrollbar is present when there is a vertically @@ -5060,7 +5060,8 @@ A jump table for the options with a short description can be found at |Q_op|. feature} {not in Vi} This is a comma-separated list of words that specifies how - 'scrollbind' windows should behave. + 'scrollbind' windows should behave. 'sbo' stands for ScrollBind + Options. The following words are available: ver Bind vertical scrolling for 'scrollbind' windows hor Bind horizontal scrolling for 'scrollbind' windows @@ -5631,7 +5632,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+syntax| feature} When on spell checking will be done. See |spell|. - The languages used are specified with 'spelllang'. + The languages are specified with 'spelllang'. *'spelllang'* *'spl'* 'spelllang' 'spl' string (default empty) @@ -5644,8 +5645,8 @@ A jump table for the options with a short description can be found at |Q_op|. set spelllang=en_us,nl < This means both US English and Dutch words are recognized. Words that are not recognized will be highlighted. - When 'encoding' is set the word lists are loaded again. Thus it's a - good idea to set 'spelllang' after setting 'encoding'. + When 'encoding' is set the word lists are reloaded. Thus it's a good + idea to set 'spelllang' after setting 'encoding'. More info at |spell|. *'splitbelow'* *'sb'* *'nosplitbelow'* *'nosb'* diff --git a/runtime/doc/os_390.txt b/runtime/doc/os_390.txt index 420260692..998a5532e 100644 --- a/runtime/doc/os_390.txt +++ b/runtime/doc/os_390.txt @@ -1,4 +1,4 @@ -*os_390.txt* For Vim version 7.0aa. Last change: 2003 Jun 03 +*os_390.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Ralf Schandl @@ -12,17 +12,17 @@ This file contains the particulars for the z/OS UNIX version of Vim. 4. ASCII/EBCDIC dependent scripts |zOS-has-ebcdic| 5. XTerm Problems |zOS-xterm| 6. Motif Problems |zOS-Motif| -7 Bugs |zOS-Bugs| +7. Bugs |zOS-Bugs| 8. Known weaknesses |zOS-weaknesses| 9. Changes |zOS-changes| DISCLAIMER: ~ -We are IBM employees, but IBM is not responsible for this port. This is our +We are IBM employees, but IBM is not responsible for this port. This is our private fun, and is provided in the hopes that it may be useful to others. Please note that this software has NOT been submitted to any formal IBM -testing and is published AS IS. Please do not contact IBM for support for this -software, as it is not an official component of any IBM product. IT IS NOT +testing and is published AS IS. Please do not contact IBM for support for this +software, as it is not an official component of any IBM product. IT IS NOT SUPPORTED, GUARANTEED, OR RELATED WHATSOEVER TO IBM. Contributors: ~ @@ -60,22 +60,22 @@ Vim should compile, link, and run right out of the box on a standard IBM z/OS UNIX mainframe. I've personally run it on z/OS V1R2 and V1R3 machines without problems. -Many changes had to be done to the code to port Vim to z/OS UNIX. As like -most UNIX programs, Vim contained heavy ASCII dependencies. I might have +Many changes had to be done to the code to port Vim to z/OS UNIX. As like +most UNIX programs, Vim contained heavy ASCII dependencies. I might have missed an ASCII dependency, or it is possible that a new one has been added -with a feature or bug fix. Most programmers are simply not aware of possible -ASCII/EBCDIC conversion issues. If you hit a problem that seems related to +with a feature or bug fix. Most programmers are simply not aware of possible +ASCII/EBCDIC conversion issues. If you hit a problem that seems related to this, feel free to contact us at the email addresses above. One indication of ASCII/EBCDIC conversion problems is screen corruption with "unprintable" characters. For example, at one point the errorbell was broken -in Vim. Any time Vim tried to ring the terminal bell an ASCII character 0x07 -would be printed. This works fine on most terminals, but is broken on an -EBCDIC one. The correct solution was to define a different value for the bell +in Vim. Any time Vim tried to ring the terminal bell an ASCII character 0x07 +would be printed. This works fine on most terminals, but is broken on an +EBCDIC one. The correct solution was to define a different value for the bell character on EBCDIC systems. Remember, it's only possible to fix a bug if the community knows about it. -Don't rely on someone else to report it! See the section |bug-reports|. +Don't rely on someone else to report it! See the section |bug-reports|. ============================================================================== 3. Building VIM for z/OS UNIX *OS390-building* *zOS-building* @@ -83,12 +83,12 @@ Don't rely on someone else to report it! See the section |bug-reports|. A word on debugging code first: ~ The normal run of configure adds the flag '-g' to the compiler options, -to include debugging information into the executable. This information +to include debugging information into the executable. This information are normally removed from the executable with the strip command during -installation. On z/OS UNIX, it is not possible to remove this from -the executable. The strip command exists on z/OS UNIX and is called +installation. On z/OS UNIX, it is not possible to remove this from +the executable. The strip command exists on z/OS UNIX and is called during the installation, but it does nothing. It is equivalent to the -'touch' command. This is due to the way debug symbols are stored in the +'touch' command. This is due to the way debug symbols are stored in the objects generated by the compiler. If you want to build Vim without debugging code, export the environment @@ -99,11 +99,11 @@ variable CFLAGS set to an empty string before you call the configure script. Building without X11: ~ -Note: Use cc to build Vim. The c89 compiler has stricter syntax checking +Note: Use cc to build Vim. The c89 compiler has stricter syntax checking and will not compile Vim cleanly. If you build VIM without X11 support, compiling and building is -straightforward. Don't forget to export _CC_CCMODE=1 before calling +straightforward. Don't forget to export _CC_CCMODE=1 before calling configure and make. > $ export _CC_CCMODE=1 @@ -114,7 +114,7 @@ configure and make. Test notes: Test 11 will fail if you do not have gzip installed. Test 42 will fail, as VIM on z/OS UNIX doesn't support the multibyte - feature. (David Moore: "Doesn't work _yet_! :-) I'll see what I + feature. (David Moore: "Doesn't work _yet_! :-) I'll see what I can do.") > @@ -123,8 +123,8 @@ configure and make. Building with X11: ~ -There are two ways for building Vim with X11 support. You can link it -statically with the X11 libraries or can bind it with the X11 DLLs. The +There are two ways for building Vim with X11 support. You can link it +statically with the X11 libraries or can bind it with the X11 DLLs. The statically linked version results in a huge executable (~13MB), while the dynamically linked executable is much smaller (~4.5MB). @@ -137,7 +137,7 @@ Here is what you do, if you want Motif: VIM is now linked statically with the X11 libraries. b) Dynamic link: - Make VIM as described for the static link. Then change the contents of + Make VIM as described for the static link. Then change the contents of the 'auto/link.sed' file by appending: > s%-lXm *%/usr/lib/Xm.x %g s%-lX11 *%/usr/lib/X11.x %g @@ -155,7 +155,7 @@ See the Makefile and the file link.sh on how link.sed is used. ============================================================================== 4. ASCII/EBCDIC dependent scripts *OS390-has-ebcdic* *zOS-has-ebcdic* -For the internal script language the feature "ebcdic" was added. With this +For the internal script language the feature "ebcdic" was added. With this you can fix ASCII dependent scripts like this: > if has("ebcdic") @@ -178,7 +178,7 @@ the screen with or if you can't move to the left with the cursor key on the command line, try adding > :set t_le=^H < -to your .vimrc. Note: '^H' is one character, hit to get it. +to your .vimrc. Note: '^H' is one character, hit to get it. ============================================================================== 6. Motif Problems *OS390-Motif* *zOS-Motif* @@ -203,9 +203,9 @@ There is no solution for this as of yet. 8. Known weaknesses *OS390-weaknesses* *zOS-weaknesses* - No binary search in tag files. - The program /bin/sort sorts by ASCII value by default. This program is - normally used by ctags to sort the tags. There might be a version of - ctags out there, that does it right, but we can't be sure. So this seems to + The program /bin/sort sorts by ASCII value by default. This program is + normally used by ctags to sort the tags. There might be a version of + ctags out there, that does it right, but we can't be sure. So this seems to be a permanent restriction. - Multibyte support (utf-8) doesn't work, it's disabled at compile time. @@ -246,10 +246,10 @@ not an exhaustive summary of all the modifications made to the code base. screen corruption problems in gVim reported by Anthony Giorgio. Anthony Giorgio updated this document: - - Changed OS/390 to z/OS where appropriate. IBM decided to rename + - Changed OS/390 to z/OS where appropriate. IBM decided to rename all of its servers and operating systems. z/OS and OS/390 are the same product, but the version numbering system was - reset for the name change. (e.g. OS/390 V2R11 == z/OS V1R1) + reset for the name change (e.g. OS/390 V2R11 == z/OS V1R1). - Added information about second edition of the Open Source Redbook. - Moved Redbook information to a separate section. - Various tweaks and changes. @@ -265,16 +265,16 @@ not an exhaustive summary of all the modifications made to the code base. 6.0q (alpha): Minor changes for nrformats=alpha (see |'nrformats'|). - Problem with hard-coded keycode for the English pound sign. Added a define in + Problem with hard-coded keycode for the English pound sign. Added a define in ascii.h Disabled multibyte for EBCDIC in feature.h 6.0f (alpha): - First compile of Vim 6 on z/OS UNIX. Some minor changes were needed. + First compile of Vim 6 on z/OS UNIX. Some minor changes were needed. Finally found the reason why make from the top level didn't work (I must have - been blind before!). The Makefile contained a list of targets in one target - line. On all other UNIX's the macro $@ evaluates to the first target in this + been blind before!). The Makefile contained a list of targets in one target + line. On all other UNIX's the macro $@ evaluates to the first target in this list, only on z/OS UNIX it evaluates to the last one :-(. 5.6-390d: @@ -282,7 +282,7 @@ not an exhaustive summary of all the modifications made to the code base. 5.6-390c: I grepped through the source and examined every spot with a character - involved in a operation (+-). I hope I now found all EBCDIC/ASCII + involved in a operation (+-). I hope I now found all EBCDIC/ASCII stuff, but .... Fixed: @@ -295,7 +295,7 @@ not an exhaustive summary of all the modifications made to the code base. - fixed quick-access table in findoptions() - fixed 'g^H' select mode - fixed tgetstr() 'get terminal capability string', ESC and - Ctrl chars where wrong. (Not used on OS/390 UNIX) + Ctrl chars where wrong. (Not used on OS/390 UNIX) ctags: @@ -311,13 +311,13 @@ not an exhaustive summary of all the modifications made to the code base. - added special compiler and linker options if building with X11 - configure: - after created via autoconf hand-edited it to make the test for - ICEConnectionNumber work. This is a autoconf problem. OS/390 UNIX + ICEConnectionNumber work. This is a autoconf problem. OS/390 UNIX needs -lX11 for this. - Makefile - Don't include the lib directories ('-L...') into the variable - ALL_LIBS. Use own variable ALL_LIB_DIRS instead. A fully POSIX + ALL_LIBS. Use own variable ALL_LIB_DIRS instead. A fully POSIX compliant compiler must not accept objects/libraries and options - mixed. Now we can call the linker like this: + mixed. Now we can call the linker like this: $(CC) $(LDFLAGS) $(ALL_LIB_DIRS) $(OBJ) $(ALL_LIBS) diff --git a/runtime/doc/os_beos.txt b/runtime/doc/os_beos.txt index d58966f49..0971f4f64 100644 --- a/runtime/doc/os_beos.txt +++ b/runtime/doc/os_beos.txt @@ -1,4 +1,4 @@ -*os_beos.txt* For Vim version 7.0aa. Last change: 2004 May 01 +*os_beos.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -31,11 +31,11 @@ matters not discussed in this file, Vim behaves very much like the Unix 1. General *beos-general* The default syntax highlighting mostly works with different foreground colors -to highlight items. This works best if you set your Terminal window to a -darkish background and light letters. Some middle-grey background (for +to highlight items. This works best if you set your Terminal window to a +darkish background and light letters. Some middle-grey background (for instance (r,g,b)=(168,168,168)) with black letters also works nicely. If you use the default light background and dark letters, it may look better to -simply reverse the notion of foreground and background color settings. To do +simply reverse the notion of foreground and background color settings. To do this, add this to your .vimrc file (where may need to be replaced with the escape character): > @@ -48,7 +48,7 @@ the escape character): > 2. Compiling Vim *beos-compiling* From the Advanced Access Preview Release (AAPR) on, Vim can be configured with -the standard configure script. To get the compiler and its flags right, use +the standard configure script. To get the compiler and its flags right, use the following command-line in the shell (you can cut and paste it in one go): CC=$BE_C_COMPILER CFLAGS="$BE_DEFAULT_C_FLAGS -O7" \ @@ -60,9 +60,9 @@ When configure has run, and you wish to enable GUI support, you must edit the config.mk file so that the lines with GUI_xxx refer to $(BEOSGUI_xxx) instead of $(NONE_xxx). Alternatively you can make this change in the Makefile; it will have a -more permanent effect. Search for "NONE_". +more permanent effect. Search for "NONE_". -After compilation you need to add the resources to the binary. Add the +After compilation you need to add the resources to the binary. Add the following few lines near the end (before the line with "exit $exit_value") of the link.sh script to do this automatically. @@ -81,12 +81,12 @@ You will need it when using "make install" to install Vim. Now type "make" to compile Vim, then "make install" to install it. If you want to install Vim by hand, you must copy Vim to $HOME/config/bin, and -create a bunch of symlinks to it ({g,r,rg}{vim,ex,view}). Furthermore you must -copy Vims configuration files to $HOME/config/share/vim: +create a bunch of symlinks to it ({g,r,rg}{vim,ex,view}). Furthermore you must +copy Vim's configuration files to $HOME/config/share/vim: vim-5.0s/{*.vim,doc,syntax}. For completeness, you should also copy the nroff -manual pages to $HOME/config/man/man1. Don't forget ctags/ctags and xxd/xxd! +manual pages to $HOME/config/man/man1. Don't forget ctags/ctags and xxd/xxd! -Obviously, you need the unlimited linker to actually link Vim. See +Obviously, you need the unlimited linker to actually link Vim. See http://www.metrowerks.com for purchasing the CodeWarrior compiler for BeOS. There are currently no other linkers that can do the job. @@ -97,7 +97,7 @@ you have the appropriate files installed. |beos-perl| 3. Timeout in the Terminal *beos-timeout* Because some POSIX/UNIX features are still missing[1], there is no direct OS -support for read-with-timeout in the Terminal. This would meat that you cannot +support for read-with-timeout in the Terminal. This would mean that you cannot use :mappings of more than one character, unless you also :set notimeout. |'timeout'| @@ -112,16 +112,16 @@ indistinctive character sequences. These problems do not exist in the GUI. [1]: there is no select() on file descriptors; also the termios VMIN and VTIME -settings do not seem to work properly. This has been the case since DR7 at +settings do not seem to work properly. This has been the case since DR7 at least and still has not been fixed as of PR2. *beos-unicode* 4. Unicode vs. Latin1 *beos-utf8* BeOS uses Unicode and UTF-8 for text strings (16-bit characters encoded to -8-bit characters). Vim assumes ISO-Latin1 or other 8-bit character codes. -This does not produce the desired results for non-ASCII characters. Try the -command :digraphs to see. If they look messed up, use :set isprint=@ to +8-bit characters). Vim assumes ISO-Latin1 or other 8-bit character codes. +This does not produce the desired results for non-ASCII characters. Try the +command :digraphs to see. If they look messed up, use :set isprint=@ to (slightly) improve the display of ISO-Latin1 characters 128-255. This works better in the GUI, depending on which font you use (below). @@ -133,32 +133,32 @@ You may also use the /boot/bin/xtou command to convert UTF-8 files from (xtou Normally Vim starts with the GUI if you start it as gvim or vim -g. The BeOS version tries to determine if it was started from the Tracker instead of the -Terminal, and if so, use the GUI anyway. However, the current detection scheme -is fooled if you use the command "vim - :version -The normal value is /boot/home/config/share/vim. If you don't like it you can +The normal value is /boot/home/config/share/vim. If you don't like it you can set the VIM environment variable to override this, or set 'helpfile' in your .vimrc: > @@ -189,7 +189,7 @@ session, unless you use the File Types application to set Vim to be "Single Launch") or on the Vim window (starts editing the files). Dropping a folder sets Vim's current working directory. |:cd| |:pwd| If you drop files or folders with either SHIFT key pressed, Vim changes directory to the folder -that contains the first item dropped. When starting Vim, there is no need to +that contains the first item dropped. When starting Vim, there is no need to press shift: Vim behaves as if you do. Files dropped set the current argument list. |argument-list| @@ -198,10 +198,10 @@ Files dropped set the current argument list. |argument-list| 8. Single Launch vs. Multiple Launch *beos-launch* As distributed Vim's Application Flags (as seen in the FileTypes preference) -are set to Multiple Launch. If you prefer, you can set them to Single Launch +are set to Multiple Launch. If you prefer, you can set them to Single Launch instead. Attempts to start a second copy of Vim will cause the first Vim to -open the files instead. This works from the Tracker but also from the command -line. In the latter case, non-file (option) arguments are not supported. +open the files instead. This works from the Tracker but also from the command +line. In the latter case, non-file (option) arguments are not supported. NB: Only the GUI version has a BApplication (and hence Application Flags). This section does not apply to the GUI-less version, should you compile one. @@ -214,16 +214,16 @@ Set fonts with > :set guifont=Courier10_BT/Roman/10 where the first part is the font family, the second part the style, and the -third part the size. You can use underscores instead of spaces in family and +third part the size. You can use underscores instead of spaces in family and style. -Best results are obtained with monospaced fonts (such as Courier). Vim +Best results are obtained with monospaced fonts (such as Courier). Vim attempts to use all fonts in B_FIXED_SPACING mode but apparently this does not work for proportional fonts (despite what the BeBook says). Vim also tries to use the B_ISO8859_1 encoding, also known as ISO Latin 1. -This also does not work for all fonts. It does work for Courier, but not for -ProFontISOLatin1/Regular (strangely enough). You can verify this by giving the > +This also does not work for all fonts. It does work for Courier, but not for +ProFontISOLatin1/Regular (strangely enough). You can verify this by giving the > :digraphs @@ -270,30 +270,30 @@ because the ALT (aka COMMAND) keys are not passed to applications. Vim calls the various mouse buttons LeftMouse, MiddleMouse and RightMouse. If you use the default Mouse preference settings these names indeed correspond to -reality. Vim uses this mapping: +reality. Vim uses this mapping: Button 1 -> LeftMouse, Button 2 -> RightMouse, Button 3 -> MiddleMouse. If your mouse has fewer than 3 buttons you can provide your own mapping from -mouse clicks with modifier(s) to other mouse buttons. See the file +mouse clicks with modifier(s) to other mouse buttons. See the file vim-5.x/macros/swapmous.vim for an example. |gui-mouse-mapping| 12. Color names *beos-colors* -Vim has a number of color names built-in. Additional names are read from the -file $VIMRUNTIME/rgb.txt, if present. This file is basically the color -database from X. Names used from this file are cached for efficiency. +Vim has a number of color names built-in. Additional names are read from the +file $VIMRUNTIME/rgb.txt, if present. This file is basically the color +database from X. Names used from this file are cached for efficiency. 13. Compiling with Perl *beos-perl* -Compiling with Perl support enabled is slightly tricky. The Metrowerks -compiler has some strange ideas where to search for include files. Since +Compiling with Perl support enabled is slightly tricky. The Metrowerks +compiler has some strange ideas where to search for include files. Since several include files with Perl have the same names as some Vim header -files, the wrong ones get included. To fix this, run the following Perl +files, the wrong ones get included. To fix this, run the following Perl script while in the vim-5.0/src directory: > preproc.pl > perl.h diff --git a/runtime/doc/os_mac.txt b/runtime/doc/os_mac.txt index 10fd08503..3db95ff7f 100644 --- a/runtime/doc/os_mac.txt +++ b/runtime/doc/os_mac.txt @@ -1,4 +1,4 @@ -*os_mac.txt* For Vim version 7.0aa. Last change: 2004 Dec 13 +*os_mac.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -33,7 +33,7 @@ Indianapolis IN 46220 USA ============================================================================== 1. Filename Convention *mac-filename* -You can use either the unix or mac path separator or a mix of both. In order +You can use either the unix or mac path separator or a mix of both. In order to determine if the specified filename is relative to the current folder or absolute (i.e. relative to the "Desktop"), the following algorithm is used: @@ -59,7 +59,7 @@ You can use the |$VIM| and |$VIMRUNTIME| variable. > 2. .vimrc and .vim files *mac-vimfile* On the Mac files starting with a dot "." are discouraged, thus the rc files -are named "vimrc" or "_vimrc" and "gvimrc" or "_gvimrc". These files can be in +are named "vimrc" or "_vimrc" and "gvimrc" or "_gvimrc". These files can be in any format (mac, dos or unix). Vim can handle any file format when the |'nocompatible'| option is set, otherwise it will only handle mac format files. diff --git a/runtime/doc/os_mint.txt b/runtime/doc/os_mint.txt index 979776e20..d84f6f566 100644 --- a/runtime/doc/os_mint.txt +++ b/runtime/doc/os_mint.txt @@ -1,4 +1,4 @@ -*os_mint.txt* For Vim version 7.0aa. Last change: 2001 Sep 03 +*os_mint.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Jens M. Felderhoff @@ -15,12 +15,12 @@ The Unix behavior described in the documentation also refers to the MiNT version of Vim unless explicitly stated otherwise. For wildcard expansion of <~> (home directory) you need a shell that -expands the tilde. The vanilla Bourne shell doesn't recognize it. +expands the tilde. The vanilla Bourne shell doesn't recognize it. With csh and ksh it should work OK. The MiNT version of vim needs the termcap file /etc/termcap with the -terminal capabilities of your terminal. Builtin termcaps are -supported for the vt52 terminal. Termcap entries for the TOSWIN window +terminal capabilities of your terminal. Builtin termcaps are +supported for the vt52 terminal. Termcap entries for the TOSWIN window manager and the virtual console terminals have been appended to the termcap file that comes with the Vim distribution. diff --git a/runtime/doc/os_msdos.txt b/runtime/doc/os_msdos.txt index 3c749f0eb..057ef15eb 100644 --- a/runtime/doc/os_msdos.txt +++ b/runtime/doc/os_msdos.txt @@ -1,4 +1,4 @@ -*os_msdos.txt* For Vim version 7.0aa. Last change: 2004 Aug 31 +*os_msdos.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -97,7 +97,7 @@ write a file, and for filter commands. Or Vim runs out of memory, and random problems may result. The Dos32 version cannot have an unlimited number of files open at any one -time. The limit depends on the setting of FILES in your CONFIG.SYS. This +time. The limit depends on the setting of FILES in your CONFIG.SYS. This defaults to 15; if you need to edit a lot of files, you should increase this. If you do not set FILES high enough, you can get strange errors, and shell commands may cause a crash! @@ -241,7 +241,7 @@ In other versions, the following can be used. How to copy/paste text from/to vim in a dos box: -1) to get VIM to run in a window, instead of full screen, press alt+enter. +1) To get VIM to run in a window, instead of full screen, press alt+enter. This toggles back and forth between full screen and a dos window. NOTE: In Windows 95 you must have the property "Fast Pasting" unchecked! In the properties dialog box for the MS-DOS window, go to "MS-DOS @@ -251,25 +251,25 @@ How to copy/paste text from/to vim in a dos box: 2) To paste something _into_ Vim, put Vim in insert mode. -3) put the text you want to paste on the windows clipboard. +3) Put the text you want to paste on the windows clipboard. -4) Click the control box in the upper left of the Vim window. (This looks - like a big minus sign). If you don't want to use the mouse, you can get +4) Click the control box in the upper left of the Vim window. (This looks + like a big minus sign.) If you don't want to use the mouse, you can get this with alt+spacebar. -5) on the resulting dropdown menu choose "Edit" -6) on the child dropdown menu choose "Paste" +5) On the resulting dropdown menu choose "Edit". +6) On the child dropdown menu choose "Paste". To copy something from the Vim window to the clipboard, -1) select the control box to get the control drop down menu. -2) select "Edit". -3) select "Mark" -4) using either the keys or the mouse, select the part of the Vim window that - you want to copy. To use the keys, use the arrow keys, and hold down shift +1) Select the control box to get the control drop down menu. +2) Select "Edit". +3) Select "Mark". +4) Using either the keys or the mouse, select the part of the Vim window that + you want to copy. To use the keys, use the arrow keys, and hold down shift to extend the selection. -5) when you've completed your selection, press 'enter.' The selection - is now in the windows clipboard. By the way, this can be any - rectangular selection, for example columns 4-25 in rows 7-10. It can +5) When you've completed your selection, press 'enter'. The selection + is now in the windows clipboard. By the way, this can be any + rectangular selection, for example columns 4-25 in rows 7-10. It can include anything in the VIM window: the output of a :!dir, for example. diff --git a/runtime/doc/os_os2.txt b/runtime/doc/os_os2.txt index 3a4dd476f..539e0518a 100644 --- a/runtime/doc/os_os2.txt +++ b/runtime/doc/os_os2.txt @@ -1,4 +1,4 @@ -*os_os2.txt* For Vim version 7.0aa. Last change: 2004 Jan 09 +*os_os2.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Paul Slootman @@ -28,19 +28,19 @@ that are started via a shell escape from within Vim. This specifically means that Vim won't be able to remove the swap file(s) associated with buffers open at the time the other program was started, until the other program is stopped. At that time, the swap file may be removed, but if Vim could not do that the -first time, it won't be removed at all. You'll get warnings that some other +first time, it won't be removed at all. You'll get warnings that some other Vim session may be editing the file when you start Vim up again on that file. -This can be reproduced with ":!start epm". Now quit Vim, and start Vim again +This can be reproduced with ":!start epm". Now quit Vim, and start Vim again with the file that was in the buffer at the time epm was started. I'm working on this! A second problem is that Vim doesn't understand the situation when using it when accessing the OS/2 system via the network, e.g. using telnet from a Unix -system, and then starting Vim. The problem seems to be that OS/2 =sometimes= +system, and then starting Vim. The problem seems to be that OS/2 =sometimes= recognizes function / cursor keys, and tries to convert those to the -corresponding OS/2 codes generated by the "normal" PC keyboard. I've been +corresponding OS/2 codes generated by the "normal" PC keyboard. I've been testing a workaround (mapping the OS/2 codes to the correct functions), but so -far I can't say anything conclusive (this is on Warp 3, by the way). In the +far I can't say anything conclusive (this is on Warp 3, by the way). In the meantime any help will be appreciated. @@ -52,12 +52,12 @@ is generally available as (ask Archie about it): emxrt.zip emx runtime package I've included a copy of emx.dll, which should be copied to one of the -directories listed in your LIBPATH. Emx is GPL'ed, but the emx.dll library is +directories listed in your LIBPATH. Emx is GPL'ed, but the emx.dll library is not (read COPYING.EMX to find out what that means to you). This emx.dll is from the emxfix04.zip package, which unfortunately has a bug, eh, I mean a POSIX feature, in select(). Versions of Vim before 3.27 will -appear to hang when starting (actually, while processing vimrc). Hit a +appear to hang when starting (actually, while processing vimrc). Hit a couple of times until Vim starts working if this happens. Next, get an up to date version of Vim! @@ -84,14 +84,14 @@ you get a tree of Vim files like this: etc. Note: .vimrc may also be called _vimrc to accommodate those who have chosen to -install OS/2 on a FAT file system. Vim first tries to find .vimrc and if that +install OS/2 on a FAT file system. Vim first tries to find .vimrc and if that fails, looks for _vimrc in the same place. The existence of a .vimrc or _vimrc file influences the 'compatible' options, which can have unexpected side effects. See |'compatible'|. If you're using network drives with OS/2, then you can install Vim on a network drive (including .vimrc; this is then called the "system" vimrc file), -and then use a personal copy of .vimrc (the "user" vimrc file). This should be +and then use a personal copy of .vimrc (the "user" vimrc file). This should be located in a directory indicated by the HOME environment variable. @@ -135,14 +135,14 @@ TERMINAL SETTING *os2ansi* Use "os2ansi" as the TERM environment variable (or don't set it at all, as the -default is the correct value). You can set term to os2ansi in the .vimrc, in +default is the correct value). You can set term to os2ansi in the .vimrc, in case you need TERM to be a different value for other applications. The problem is that OS/2 ANSI emulation is quite limited (it doesn't have insert / delete line, for example). If you want to use a different value for TERM (because of other programs, for example), make sure that the termcap entry for that TERM value has the -appropriate key mappings. The termcap.dat distributed with emx does not always +appropriate key mappings. The termcap.dat distributed with emx does not always have them. Here are some suitable values to add to the termcap entry of your choice; these allow the cursor keys and the named function keys (such as pagedown) to work. @@ -214,7 +214,7 @@ clipboard you would use: > endif This will ensure that only on OS/2 clipbrd is called whereas on other -platforms vims build in mechanism is used. (To enable this functions on every +platforms vims build in mechanism is used. (To enable this functions on every load of Vim place the above lines in your .vimrc.) vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/doc/os_qnx.txt b/runtime/doc/os_qnx.txt index c0d1a4b32..90dde33f7 100644 --- a/runtime/doc/os_qnx.txt +++ b/runtime/doc/os_qnx.txt @@ -1,4 +1,4 @@ -*os_qnx.txt* For Vim version 7.0aa. Last change: 2004 Apr 23 +*os_qnx.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Julian Kinraid @@ -22,7 +22,7 @@ Vim on QNX behaves much like other unix versions. |os_unix.txt| 2. Compiling Vim *qnx-compiling* -Vim can be compiled using the standard configure/make approach. If you want to +Vim can be compiled using the standard configure/make approach. If you want to compile for X11, pass the --with-x option to configure. Otherwise, running ./configure without any arguments or passing --enable-gui=photon, will compile vim with the Photon gui support. Run ./configure --help , to find out other @@ -118,12 +118,12 @@ Known problems: set noguipty Bugs: - - Still a slight problem with menu highlighting + - Still a slight problem with menu highlighting. - When using phditto/phinows/etc., if you are using a font that doesn't support the bold attribute, when vim attempts to draw bold text it will be all messed up. - The cursor can sometimes be hard to see. - - A number of minor problems that can fixed :) + - A number of minor problems that can fixed. :) Todo: - Improve multi-language support. diff --git a/runtime/doc/os_risc.txt b/runtime/doc/os_risc.txt index 04f9ba551..77e555c57 100644 --- a/runtime/doc/os_risc.txt +++ b/runtime/doc/os_risc.txt @@ -1,4 +1,4 @@ -*os_risc.txt* For Vim version 7.0aa. Last change: 2004 May 01 +*os_risc.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Thomas Leonard @@ -47,9 +47,9 @@ distribution, but modified slightly to work within the limits of ADFS, plus some extra files such as the window templates. User choices are read from `Choices:*' and are saved to `.*'. -If you have the new !Boot structure then these should be set up already. If +If you have the new !Boot structure then these should be set up already. If not, set Choices$Path to a list of directories to search when looking for -user configuration files. Set Choices$Write to the directory you want files +user configuration files. Set Choices$Write to the directory you want files to be saved into (so your search patterns and marks can be remembered between sessions). @@ -58,7 +58,7 @@ sessions). 2. Filename munging All pathname munging is disabled by default, so Vim should behave like a -normal RISC OS application now. So, if you want to edit `doc/html' then you +normal RISC OS application now. So, if you want to edit `doc/html' then you actually type `*vi doc/html'. The only times munging is done is when: @@ -66,7 +66,7 @@ The only times munging is done is when: - Searching included files from C programs, since these are always munged. See |[I|. Note: make sure you are in the right directory when you use this - command (ie the one with subdirectories 'c' and 'h'). + command (i.e. the one with subdirectories 'c' and 'h'). - Sourcing files using |:so|. Paths starting `$VIM/' are munged like this: @@ -88,7 +88,7 @@ To use Vim from the command-line use the `*vi' command (or '*ex' for Type `*vi -h' for a list of options. Running the command-line version of Vim in a large high-color mode may cause -the scrolling to be very slow. Either change to a mode with fewer colors or +the scrolling to be very slow. Either change to a mode with fewer colors or use the GUI version. Also, holding down Ctrl will slow it down even more, and Ctrl-Shift will @@ -115,7 +115,7 @@ The global clipboard is supported, so you can select some text and then paste it directly into another application (provided it supports the clipboard too). -Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift +Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift when clicking Menu to paste (from the global clipboard). Dragging a file to the window replaces the CURRENT buffer (the one with the @@ -134,27 +134,27 @@ For fonts, you have the choice of the system font, an outline font, the system font via ZapRedraw and any of the Zap fonts via ZapRedraw: > :set guifont= -< To use the system font via the VDU drivers. Supports +< To use the system font via the VDU drivers. Supports bold and underline. > :set guifont=Corpus.Medium -< Use the named outline font. You can use any font, but +< Use the named outline font. You can use any font, but only monospaced ones like Corpus look right. > :set guifont=Corpus.Medium:w8:h12:b:i < As before, but with size of 8 point by 12 point, and in bold italic. If only one of width and height is given then that - value is used for both. If neither is given then 10 + value is used for both. If neither is given then 10 point is used. -Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name +Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name with '!' (or '!!' for double height), like this: > :set guifont=!! < Use the system font, but via ZapRedraw. This gives a faster redraw on StrongARM processors, but you can't - get bold or italic text. Double height. + get bold or italic text. Double height. > :set guifont=!script < Uses the named Zap font (a directory in VimFont$Path). @@ -164,12 +164,12 @@ with '!' (or '!!' for double height), like this: > currently, but you can use any of the Zap fonts if they are in VimFont$Path. Vim will try to load font files '0', 'B', 'I' and 'IB' - from the named directory. Only '0' (normal style) MUST - be present. Link files are not currently supported. + from the named directory. Only '0' (normal style) MUST + be present. Link files are not currently supported. Note that when using ZapRedraw the edit bar is drawn in front of the character -you are on rather than behind it. Also redraw is incorrect for screen modes -with eigen values of 0. If the font includes control characters then you can +you are on rather than behind it. Also redraw is incorrect for screen modes +with eigen values of 0. If the font includes control characters then you can get Vim to display them by changing the 'isprint' option. If you find the scrolling is too slow on your machine, try experimenting @@ -199,8 +199,8 @@ It seems to work pretty well now, using '*vi -T ansi'. If Vim crashes then the swap and backup files (if any) will be in the directories set with the 'directory' and 'bdir' options. By default the swap -files are in (ie inside !Scrap) and backups are in the -directory you were saving to. Vim will allow you to try and recover the file +files are in (i.e. inside !Scrap) and backups are in the +directory you were saving to. Vim will allow you to try and recover the file when you next try to edit it. To see a list of swap files, press and type `*vi -r'. @@ -223,13 +223,13 @@ command-line version, or press CTRL-C in the GUI version. *riscos-memory* 8. Memory usage -Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on -older machines then edit the !RunTxt and GVim files. I don't know what UnixLib +Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on +older machines then edit the !RunTxt and GVim files. I don't know what UnixLib does by default on these machines so I'm playing safe. It doesn't work at all well without dynamic areas, since it can't change its -memory allocation once running. Hence you should edit `!Vim.GVim' and -`!Vim.!RunTxt' to choose the best size for you. You probably need at least +memory allocation once running. Hence you should edit `!Vim.GVim' and +`!Vim.!RunTxt' to choose the best size for you. You probably need at least about 1400K. ============================================================================== @@ -237,11 +237,11 @@ about 1400K. 9. Filetypes You can now specify that autocommands are only executed for files of certain -types. The filetype is given in the form &xxx, when xxx is the filetype. +types. The filetype is given in the form &xxx, when xxx is the filetype. -Filetypes must be specified by number (eg &fff for Text). +Filetypes must be specified by number (e.g. &fff for Text). -The system has changed from version 5.3. The new sequence of events is: +The system has changed from version 5.3. The new sequence of events is: - A file is loaded. |'osfiletype'| is set to the RISC OS filetype. - Based on the filetype and pathname, Vim will try to set |'filetype'| to the @@ -264,7 +264,7 @@ Some examples may make this clearer: since many pathnames contain them. - You can prefix the command with '~', which stops any output from being - displayed. This also means that you don't have to press afterwards, + displayed. This also means that you don't have to press afterwards, and stops the screen from being redrawn. {only in the GUI version} ============================================================================== @@ -274,14 +274,14 @@ Some examples may make this clearer: Downloading everything you need: - Get the latest source distribution (see www.vim.org) -- Get the runtime environment files (eg these help files) +- Get the runtime environment files (e.g. these help files) - Get the `extra' archive (contains the RISC OS specific bits) - Get the RISC OS binary distribution (if possible) Unarchiving: -- Create a raFS disk and put the archives on it. +- Create a raFS disk and put the archives on it - Un-gzip them - Un-tar them (*tar xELf 50 archive/tar) @@ -289,9 +289,9 @@ Unarchiving: Recompiling the sources: - Create c, s, and h directories. -- Put all the header files in 'h' \ -- Put all the C files in `c' | And lose the extensions -- Put the assembler file (`swis/s') in 's' / +- Put all the header files in 'h'. \ +- Put all the C files in `c'. | And lose the extensions +- Put the assembler file (`swis/s') in 's'. / - Rename all the files in `proto' to `h', like this: raFS::VimSrc.source.proto.file/pro becomes @@ -300,9 +300,9 @@ Recompiling the sources: .pro" with _pro.h" -- Create a simple Makefile if desired and do '*make -k' - Use 'CC = gcc -DRISCOS -DUSE_GUI -O2 -x c' in the Makefile -- Save the binary as !Vim.Vim in the binary distribution +- Create a simple Makefile if desired and do '*make -k'. + Use 'CC = gcc -DRISCOS -DUSE_GUI -O2 -x c' in the Makefile. +- Save the binary as !Vim.Vim in the binary distribution. Updating the run-time environment: @@ -311,9 +311,9 @@ Updating the run-time environment: new files. - Remove files in `doc' not ending in `/txt', except for `tags'. - Lose the extensions from the files in `doc'. -- Edit the `doc.tags' file. Remove extensions from the second column: > +- Edit the `doc.tags' file. Remove extensions from the second column: > :%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/ -- Remove extensions from the syntax files. Split them into two directories +- Remove extensions from the syntax files. Split them into two directories to avoid the 77 entry limit on old ADFS filesystems. - Edit `Vim:FileType' to match `*.c.*' as well as `*/c' and so on. Add filetype checking too. diff --git a/runtime/doc/os_vms.txt b/runtime/doc/os_vms.txt index aab5a2407..8bb1b1c37 100644 --- a/runtime/doc/os_vms.txt +++ b/runtime/doc/os_vms.txt @@ -1,4 +1,4 @@ -*os_vms.txt* For Vim version 7.0aa. Last change: 2004 Jun 16 +*os_vms.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM REFERENCE MANUAL @@ -69,32 +69,32 @@ See the file [.SRC]INSTALLVMS.TXT. 4. Problems *vms-problems* The code has been tested under Open VMS 6.2 - 7.3 on Alpha and VAX platforms -with the DECC compiler. It should work without bigger problems. -If it happened that your system does not have some include libraries you can -tune up in OS_VMS_CONF.H file. +with the DEC C compiler. It should work without bigger problems. +If your system does not have some include libraries you can tune up in +OS_VMS_CONF.H file. If you decided to build Vim with +perl, +python, etc. options, first you need -to download OpenVMS distributions of Perl and Python. Build and deploy the -libraries and change adequate lines in MAKE_VMS.MMS file. There should not be -problem from Vim side. +to download OpenVMS distributions of Perl and Python. Build and deploy the +libraries and change adequate lines in MAKE_VMS.MMS file. There should not be +a problem from Vim side. -Note: Under VAX it should work with DEC C compiler without problem. VAXC -compiler is not fully ANSI C compatible in pre-processor directives -semantics, therefore you have to use a converter program what will do the -lion part of the job. For detailed instruction read file INSTALLvms.txt +Note: Under VAX it should work with the DEC C compiler without problems. The +VAX C compiler is not fully ANSI C compatible in pre-processor directives +semantics, therefore you have to use a converter program what will do the lion +part of the job. For detailed instructions read file INSTALLvms.txt -MMS_VIM.EXE is building together with VIM.EXE, but for XD.EXE you should +MMS_VIM.EXE is build together with VIM.EXE, but for XD.EXE you should change to subdirectory and build it separately. -CTAGS is not part of Vim source distribution any more, however the OpenVMS -specific source might contain CTAGS source files as it is described above. +CTAGS is not part of the Vim source distribution anymore, however the OpenVMS +specific source might contain CTAGS source files as described above. You can find more information about CTAGS on VMS at http://www.polarhome.com/ctags/ Advanced users may try some acrobatics in FEATURE.H file also. It is possible to compile with +xfontset +xim options too, but then you have -to set up GUI fonts etc. correctly. See. :help xim from Vim command prompt. +to set up GUI fonts etc. correctly. See :help xim from Vim command prompt. You may want to use GUI with GTK icons, then you have to download and install GTK for OpenVMS or at least runtime shareable images - LIBGTK from @@ -132,18 +132,18 @@ Use: > define/nolog TMP device:[path.tmp] to get vim.exe to find its document, filetype, and syntax files, and to -specify a directory where temporary files will be located. Copy the "runtime" +specify a directory where temporary files will be located. Copy the "runtime" subdirectory of the vim distribution to vimruntime. Logicals $VIMRUNTIME and $TMP are optional. If $VIMRUNTIME is not set, Vim will guess and try to set up automatically. -Read more about at :help runtime +Read more about it at :help runtime If $TMP is not set, you will not be able to use some functions as CTAGS, XXD, printing etc. that use temporary directory for normal operation. -$TMP directory should be readable and writable by the user(s). -The easiest way to set up $TMP is to define logical: > +The $TMP directory should be readable and writable by the user(s). +The easiest way to set up $TMP is to define a logical: > define/nolog TMP SYS$SCRATCH or as: > @@ -155,9 +155,9 @@ or as: > Usually, you want to run just one version of Vim on your system, therefore it is enough to dedicate one directory for Vim. -Copy all Vim runtime directory structure to the deployment position. +Copy the whole Vim runtime directory structure to the deployment position. Add the following lines to your LOGIN.COM (in SYS$LOGIN directory). -Set up logical $VIM as: > +Set up the logical $VIM as: > $ define VIM device: @@ -174,20 +174,20 @@ Please, check the notes for customization and configuration of symbols. You may want to create .vimrc and .gvimrc files in your home directory (SYS$LOGIN) to overwrite default settings. -The easiest way is just rename example files. You may leave the menu file -(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory. It will -be default setup for all users, and for users is enough just to have their -own additions or resetting in home directory in files .vimrc and .gvimrc. +The easiest way is just rename example files. You may leave the menu file +(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory. It will +be default setup for all users, and for users it is enough just to have their +own additions or resetting in their home directory in files .vimrc and .gvimrc. It should work without problems. -Note: Remember, system rc files (default for all users) does not have leading -"." So, system rc files are: > +Note: Remember, system rc files (default for all users) don't have a leading +".". So, system rc files are: > $VIM:vimrc $VIM:gvimrc $VIM:menu.vim -and user's customized rc files are: > +and user customized rc files are: > sys$login:.vimrc sys$login:.gvimrc @@ -203,7 +203,7 @@ Example LOGIN.COM: > Note: This set-up should be enough, if you are working on standalone server or clustered environment, but if you want to use Vim as internode editor in -DECNET environment, it will satisfy you as well. +DECNET environment, it will satisfy as well. You just have to define the "whole" path: > $ define VIM "[""user password""]::device:" @@ -214,10 +214,11 @@ as for example: > $ define VIM "PLUTO::RF10:[UTIL.VIM]" $ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required -You can also use $VIMRUNTIME logical to point to proper version of Vim if you -have installed more versions in the same time. If $VIMRUNTIME is not defined -Vim will borrow value from $VIM logical. You can find more information about -$VIMRUNTIME logical by typing :help runtime as a Vim command. +You can also use the $VIMRUNTIME logical to point to the proper version of Vim +if you have installed more versions at the same time. If $VIMRUNTIME is not +defined Vim will borrow its value from the $VIM logical. You can find more +information about the $VIMRUNTIME logical by typing :help runtime as a Vim +command. System administrators might want to set up a system wide Vim installation, then add to the SYS$STARTUP:SYLOGICALS.COM > @@ -231,38 +232,40 @@ and to the SYS$STARTUP:SYLOGIN.COM > $ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40 -It will set up normal Vim work environment for every user on the system. +It will set up a normal Vim work environment for every user on the system. ============================================================================== 7. GUI mode questions *vms-gui* -OpenVMS in a real mainframe OS, therefore even if it has a GUI console, most of -the users does not use a native X/Window environment during normal operation. -It is not possible to start Vim in GUI mode "just like that". But anyhow it is -not too complicate either. +OpenVMS is a real mainframe OS, therefore even if it has a GUI console, most +of the users do not use a native X/Window environment during normal operation. +It is not possible to start Vim in GUI mode "just like that". But anyhow it +is not too complicated either. -First of all: you will need an executable that is built with enabled GUI. +First of all: you will need an executable that is built with the GUI enabled. Second: you need to have installed DECW/Motif on your VMS server, otherwise you will get errors that some shareable libraries are missing. -Third: If you choose to run Vim with extra feature as GUI/GTK then you need -GTK installation too or at least GTK runtime environment (LIBGTK etc.) +Third: If you choose to run Vim with extra features such as GUI/GTK then you +need a GTK installation too or at least a GTK runtime environment (LIBGTK +etc.). 1) If you are working on the VMS X/Motif console: Start Vim with the command: > $ mc device:VIM.EXE -g < - or type :gui as a command to the Vim command prompt. For more info :help gui + or type :gui as a command to the Vim command prompt. For more info :help + gui -2) If you are working on other X/Window environment as Unix or some remote X - VMS console. Set up display to your host with: > +2) If you are working on some other X/Window environment like Unix or a remote + X VMS console. Set up display to your host with: > $ set disp/create/node=/trans= < - and start Vim as in point 1. You can find more help in VMS documentation or + and start Vim as in point 1. You can find more help in VMS documentation or type: help set disp in VMS prompt. Examples: > @@ -276,11 +279,11 @@ For more information type $help set disp in VMS prompt. 3) Another elegant solution is XDM if you have installed on OpenVMS box. It is possible to work from XDM client as from GUI console. -4) If you are working on MS Windows or other non X/Window environment - You need to set up one X server and run Vim as in point 2. - For MS Windows there are available free X servers as MIX , Omni X etc. +4) If you are working on MS-Windows or some other non X/Window environment + you need to set up one X server and run Vim as in point 2. + For MS-Windows there are available free X servers as MIX , Omni X etc., as well as excellent commercial products as eXcursion or ReflectionX with - built in DEC support. + built-in DEC support. Please note, that executables without GUI are slightly faster during startup then with enabled GUI in character mode. Therefore, if you do not use GUI @@ -319,7 +322,7 @@ Read more in ch: 8.6 (Terminal problems). 8.2 Filters -Vim supports filters; ie. if you have a sort program that can handle +Vim supports filters, i.e., if you have a sort program that can handle input/output redirection like Unix (outfile), you could use > :map \s 0!'aqsort @@ -333,19 +336,20 @@ Vim is saving files into a new file with the next higher file version number, try these settings. > :set nobackup " does not create *.*_ backup files - :set nowritebackup " does not have any purpose on VMS. It's default. + :set nowritebackup " does not have any purpose on VMS. It's the + " default. Recovery is working perfect as well from the default swap file. Read more with :help swapfile (Claude Marinier Vim 5.5, Zoltan Arpadffy -Vim 5.6 ) +Vim 5.6) 8.4 Directory conversion Vim will internally convert any unix-style paths and even mixed unix/VMS -paths into VMS style paths. Some typical conversions resemble: +paths into VMS style paths. Some typical conversions resemble: /abc/def/ghi -> abc:[def]ghi. /abc/def/ghi.j -> abc:[def]ghi.j @@ -377,9 +381,9 @@ example: > Note: syntax is very important, otherwise VMS will recognize more parameters instead of one (resulting with: file not found) -2. Set up Vim as your internode editor. If Vim is not installed on your host, -just set up your IP address, full Vim path including the server name and run -the command procedure below: > +2. Set up Vim as your internode editor. If Vim is not installed on your +host, just set up your IP address, the full Vim path including the server name +and run the command procedure below: > $ if (p1 .eqs. "") .OR. (p2 .eqs. "") then goto usage $ set disp/create/node=/trans=tcpip @@ -392,8 +396,8 @@ the command procedure below: > $ write sys$output " Example: @SETVIM.COM username passwd" $ end: -Note: Never use it in clustered environment (you do not need it), and load could -be very-very slow, but even faster then a local Emacs. :-) +Note: Never use it in a clustered environment (you do not need it), loading +could be very-very slow, but even faster then a local Emacs. :-) (Zoltan Arpadffy, Vim 5.6) @@ -404,7 +408,7 @@ If your terminal name is not known to Vim and it is trying to find the default one you will get the following message during start-up: --- Terminal entry not found in termcap -'unknown-terminal' not known. Available built-in terminals are: +'unknown-terminal' not known. Available built-in terminals are: builtin_gui builtin_riscos builtin_amiga @@ -422,13 +426,13 @@ defaulting to 'vt320' --- The solution is to define default terminal name: > - $ ! unknown terminal name. let us use vt320 or ansi instead. + $ ! unknown terminal name. Let us use vt320 or ansi instead. $ ! Note: it's case sensitive $ define term "vt320" Terminals from VT100 to VT320 (as V300, VT220, VT200 ) do not need any extra -keyboard mappings. They should work perfect as they are, including arrows, -Ins, Del buttons etc. Except Backspace in GUI mode. To solve it, add to +keyboard mappings. They should work perfect as they are, including arrows, +Ins, Del buttons etc., except Backspace in GUI mode. To solve it, add to .gvimrc: > inoremap @@ -457,9 +461,9 @@ special commands to execute executables: > MCR filename OpenVMS users always have to be aware that the Vim command :! "just" drop them -to DCL prompt. This feature is possible to use without any problem with all +to DCL prompt. This feature is possible to use without any problem with all DCL commands, but if we want to execute some program as XXD, CTAGS, JTAGS etc. -we're running into trouble if we following the Vim documentation (see: help +we're running into trouble if we follow the Vim documentation (see: help xxd). Solution: Execute with the MC command and add the full path to the executable. @@ -470,9 +474,9 @@ Example: Instead of :%!xxd command use: > ... or in general: > :!mc filename -Note: You can use XXD, and CTAGS from GUI menu. +Note: You can use XXD and CTAGS from GUI menu. -To customize ctags it is possible to define logical $CTAGS with standard +To customize ctags it is possible to define the logical $CTAGS with standard parameters as: > define/nolog CTAGS "--totals -o sys$login:tags" @@ -488,7 +492,7 @@ documentation at http://ctags.sourceforge.net/ctags.html. If you want to use your .vimrc and .gvimrc from other platforms (e.g. Windows) you can get in trouble if you ftp that file(s): VMS has different end-of-line indication. -The symptom is that ViM is not sourcing your .vimrc/.gvimrc, even if you say: +The symptom is that Vim is not sourcing your .vimrc/.gvimrc, even if you say: > :so sys$login:.vimrc @@ -535,8 +539,8 @@ will be confused after a window-resize. From 6.0 diff functionality has been implemented, but OpenVMS does not use GNU/Unix like diff therefore built in diff does not work. -There is a simple solution to solve this anomaly. Install an Unix like diff -and Vim will work perfect in diff mode too. You just have to redefine your +There is a simple solution to solve this anomaly. Install a Unix like diff +and Vim will work perfect in diff mode too. You just have to redefine your diff program as: > define /nolog diff diff.exe @@ -551,16 +555,16 @@ boxes that is meant to solve GNU problems on OpenVMS. 8.12 diff-mode Vim 6.0 and higher supports vim diff-mode (See |new-diff-mode|, |diff-mode| -and |08.7|). This uses the external program 'diff' and expects a Unix-like -output format from diff. The standard VMS diff has a different output -format. To use vim on VMS in diff-mode, you need to: +and |08.7|). This uses the external program 'diff' and expects a Unix-like +output format from diff. The standard VMS diff has a different output +format. To use vim on VMS in diff-mode, you need to: 1 Install a Unix-like diff program, e.g. GNU diff 2 Tell vim to use the Unix-like diff for diff-mode. You can download GNU diff from the VIM-VMS website, it is one of the GNU -tools in http://www.polarhome.com/vim/files/gnu_tools.zip. I suggest to +tools in http://www.polarhome.com/vim/files/gnu_tools.zip. I suggest to unpack it in a separate directory "GNU" and create a logical GNU: that -points to that directory. e.g: > +points to that directory, e.g: > DEFINE GNU :[.BIN.GNU] @@ -569,9 +573,9 @@ prompt: > GDIFF :== $GNU:DIFF.EXE -Now you need to tell vim to use the new diff program. Take the example +Now you need to tell vim to use the new diff program. Take the example settings from |diff-diffexpr| and change the call to the external diff -program to the new diff on VMS. Add this to your .vimrc file: > +program to the new diff on VMS. Add this to your .vimrc file: > " Set up vimdiff options if v:version >= 600 @@ -612,8 +616,8 @@ You can now compare files in 4 ways: > 8.13 Allow '$' in C keywords -DEC C uses many identifiers with '$' in them. This is not allowed in ANSI C, -and vim recognises the '$' as the end of the identifier. You can change this +DEC C uses many identifiers with '$' in them. This is not allowed in ANSI C, +and vim recognises the '$' as the end of the identifier. You can change this with the |iskeyword|command. Add this command to your .vimrc file: > @@ -625,7 +629,7 @@ CS.VIM) and add this command: > set iskeyword+=$ Now word-based commands, e.g. the '*'-search-command and the CTRL-] -tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in +tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in C keywords since ctags version 5.1.) ( Coen Engelbarts, Vim 6.1) @@ -633,8 +637,8 @@ C keywords since ctags version 5.1.) 8.14 VIMTUTOR for beginners It exits VIMTUTOR.COM DCL script that can help Vim beginners to learn/make -first steps with Vim on OpenVMS. Depending of binary distribution you may start -it with: > +first steps with Vim on OpenVMS. Depending of binary distribution you may +start it with: > @vim:vimtutor diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt index 3f202da1b..3d48b7728 100644 --- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -177,16 +177,16 @@ by setting a variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to "scp -q"). Ftp, an old protocol, seems to be blessed by numerous implementations. -Unfortunately, some implementations are noisy (ie., add junk to the end +Unfortunately, some implementations are noisy (i.e., add junk to the end of the file). Thus, concerned users may decide to write a NetReadFixup() function that will clean up after reading with their ftp. Some Unix systems -(ie., FreeBSD) provide a utility called "fetch" which uses the ftp protocol +(i.e., FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is not noisy and more convenient, actually, for to use. Consequently, if "fetch" is executable, it will be used to do reads for ftp://... (and http://...) . See |netrw-var| for more about this. For rcp, scp, sftp, and http, one may use network-oriented file transfers -transparently; ie. +transparently; i.e. > vim rcp://[user@]machine/path vim scp://[user@]machine/path @@ -198,7 +198,7 @@ that file. Your ftp must be able to use the <.netrc> file on its own, however. vim ftp://[user@]machine[[:#]portnumber]/path < However, ftp will often need to query the user for the userid and password. -The latter will be done "silently"; ie. asterisks will show up instead of +The latter will be done "silently"; i.e. asterisks will show up instead of the actually-typed-in password. Netrw will retain the userid and password for subsequent read/writes from the most recent transfer so subsequent transfers (read/write) to or from that machine will take place without @@ -625,7 +625,7 @@ NETRW BROWSER VARIABLES *netrw-browse-var* g:netrw_timefmt specify format string to strftime() (%c) g:netrw_winsize specify initial size of new o/v windows -INTRODUCTION TO DIRECTORY BROWSING +INTRODUCTION TO DIRECTORY BROWSING *file-explorer* Netrw supports the browsing of directories on the local system and on remote hosts, including generating listing directories, entering directories, editing diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt index 42a609745..56fa49fab 100644 --- a/runtime/doc/print.txt +++ b/runtime/doc/print.txt @@ -1,4 +1,4 @@ -*print.txt* For Vim version 7.0aa. Last change: 2004 Jul 05 +*print.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -32,7 +32,7 @@ used. printer. On MS-Windows a dialog is displayed to allow selection - of printer, paper size etc. To skip the dialog, use + of printer, paper size etc. To skip the dialog, use the [!]. In this case the printer defined by 'printdevice' is used, or, if 'printdevice' is empty, the system default printer. @@ -65,7 +65,7 @@ the current window's 'wrap' or 'linebreak' settings. The "wrap" item in 'printoptions' can be used to switch wrapping off. The current highlighting colors are used in the printout, with the following considerations: -1) The normal background is always rendered as white (i.e. blank paper.) +1) The normal background is always rendered as white (i.e. blank paper). 2) White text or the default foreground is rendered as black, so that it shows up! 3) If 'background' is "dark", then the colours are darkened to compensate for diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt index d78aaa194..047938b3f 100644 --- a/runtime/doc/quickref.txt +++ b/runtime/doc/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.0aa. Last change: 2005 Mar 07 +*quickref.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1171,7 +1171,7 @@ Context-sensitive completion on the command-line: |:xall| :xa[ll][!] or :wqall[!] Write all changed buffers and exit -|:stop| :st[op][!] Suspend VIM or start new shell. If 'aw' option +|:stop| :st[op][!] Suspend VIM or start new shell. If 'aw' option is set and [!] not given write the buffer. |CTRL-Z| CTRL-Z Same as ":stop" ------------------------------------------------------------------------------ diff --git a/runtime/doc/rileft.txt b/runtime/doc/rileft.txt index c7c53aaf0..b83dc54fe 100644 --- a/runtime/doc/rileft.txt +++ b/runtime/doc/rileft.txt @@ -1,4 +1,4 @@ -*rileft.txt* For Vim version 7.0aa. Last change: 2003 May 07 +*rileft.txt* For Vim version 7.0aa. Last change: 2005 Apr 04 VIM REFERENCE MANUAL by Avner Lottem @@ -36,7 +36,7 @@ bidi and is merely opting to present a functional means to display/enter/use right-to-left languages. An older hybrid solution in which direction is encoded for every character (or group of characters) are not supported either as this kind of support is out of the scope of a simple addition to an -existing editor (and its not sanctioned by Unicode either). +existing editor (and it's not sanctioned by Unicode either). Highlights diff --git a/runtime/doc/russian.txt b/runtime/doc/russian.txt index 656c66e20..4d9d0368e 100644 --- a/runtime/doc/russian.txt +++ b/runtime/doc/russian.txt @@ -1,4 +1,4 @@ -*russian.txt* For Vim version 7.0aa. Last change: 2004 Dec 22 +*russian.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM REFERENCE MANUAL by Vassily Ragosin @@ -14,7 +14,7 @@ Russian language localization and support in Vim *russian* *Russian* =============================================================================== 1. Introduction *russian-intro* -Russian language is supported perfectly well in Vim. You can type and view +Russian language is supported perfectly well in Vim. You can type and view Russian text just as any other, without the need to tweak the settings. =============================================================================== @@ -28,8 +28,8 @@ example, < In the latter case, you can switch between languages even if you do not have system Russian keyboard or independently from a system-wide keyboard settings. -See 'keymap'. You can also map a key to switch between keyboards, if you -choose the latter option. See |:map|. +See 'keymap'. You can also map a key to switch between keyboards, if you +choose the latter option. See |:map|. For your convenience, to avoid switching between keyboards, when you need to enter Normal mode command, you can also set 'langmap' option: @@ -51,11 +51,11 @@ different codepages from http://www.sourceforge.net/projects/ruvim/ Make sure that your Vim is at least 6.2.506 and use ruvim 0.5 or later for -automatic installs. Vim also needs to be compiled with |+gettext| feature for +automatic installs. Vim also needs to be compiled with |+gettext| feature for user interface items translations to work. After downloading an archive from RuVim project, unpack it into your -$VIMRUNTIME directory. We recommend using UTF-8 archive, if your version of +$VIMRUNTIME directory. We recommend using UTF-8 archive, if your version of Vim is compiled with |+multi_byte| feature enabled. In order to use the Russian documentation, make sure you have set the @@ -66,7 +66,7 @@ In order to use the Russian documentation, make sure you have set the -- If you are using Russian message translations in Win32 console, then you may see the output produced by "vim --help", "vim --version" commands - and Win32 console window title appearing in a wrong codepage. This problem + and Win32 console window title appearing in a wrong codepage. This problem is related to a bug in GNU gettext library and may be fixed in the future releases of gettext. diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt index b65b4e195..adeb7fc0f 100644 --- a/runtime/doc/sign.txt +++ b/runtime/doc/sign.txt @@ -1,4 +1,4 @@ -*sign.txt* For Vim version 7.0aa. Last change: 2004 May 22 +*sign.txt* For Vim version 7.0aa. Last change: 2005 Apr 04 VIM REFERENCE MANUAL by Gordon Prieur @@ -18,19 +18,19 @@ Sign Support Features *sign-support* When a debugger or other IDE tool is driving an editor it needs to be able to give specific highlights which quickly tell the user useful information -about the file. One example of this would be a debugger which had an icon -in the left-hand column denoting a breakpoint. Another example might be an -arrow representing the Program Counter (PC). The sign features allow both +about the file. One example of this would be a debugger which had an icon +in the left-hand column denoting a breakpoint. Another example might be an +arrow representing the Program Counter (PC). The sign features allow both placement of a sign, or icon, in the left-hand side of the window and -definition of a highlight which will be applied to that line. Displaying the +definition of a highlight which will be applied to that line. Displaying the sign as an image is most likely only feasible in gvim (although Sun -Microsystem's dtterm does support this its the only terminal emulator I know +Microsystem's dtterm does support this it's the only terminal emulator I know of which does). A text sign and the highlight should be feasible in any color terminal emulator. -Signs and highlights are not useful just for debuggers. Sun's Visual +Signs and highlights are not useful just for debuggers. Sun's Visual WorkShop uses signs and highlights to mark build errors and SourceBrowser -hits. Additionally, the debugger supports 8 to 10 different signs and +hits. Additionally, the debugger supports 8 to 10 different signs and highlight colors. |workshop| Same for Netbeans |netbeans|. There are two steps in using signs: diff --git a/runtime/doc/tags b/runtime/doc/tags index ecf5fcf42..c89e2b368 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -1584,6 +1584,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 45.3 usr_45.txt /*45.3* 45.4 usr_45.txt /*45.4* 45.5 usr_45.txt /*45.5* +755 spell.txt /*755* 90.1 usr_90.txt /*90.1* 90.2 usr_90.txt /*90.2* 90.3 usr_90.txt /*90.3* @@ -2129,6 +2130,8 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* :mkexrc starting.txt /*:mkexrc* :mks starting.txt /*:mks* :mksession starting.txt /*:mksession* +:mksp spell.txt /*:mksp* +:mkspell spell.txt /*:mkspell* :mkv starting.txt /*:mkv* :mkvie starting.txt /*:mkvie* :mkview starting.txt /*:mkview* @@ -3688,10 +3691,12 @@ E748 repeat.txt /*E748* E749 eval.txt /*E749* E75 vi_diff.txt /*E75* E750 repeat.txt /*E750* -E751 spell.txt /*E751* -E752 spell.txt /*E752* -E753 spell.txt /*E753* +E754 spell.txt /*E754* +E756 spell.txt /*E756* +E758 spell.txt /*E758* +E759 spell.txt /*E759* E76 pattern.txt /*E76* +E760 spell.txt /*E760* E77 message.txt /*E77* E78 motion.txt /*E78* E79 message.txt /*E79* @@ -3998,6 +4003,7 @@ ZZ editing.txt /*ZZ* [pattern] pattern.txt /*[pattern]* [quotex] intro.txt /*[quotex]* [range] cmdline.txt /*[range]* +[s spell.txt /*[s* [star motion.txt /*[star* [z fold.txt /*[z* [{ motion.txt /*[{* @@ -4023,6 +4029,7 @@ ZZ editing.txt /*ZZ* ]i tagsrch.txt /*]i* ]m motion.txt /*]m* ]p change.txt /*]p* +]s spell.txt /*]s* ]star motion.txt /*]star* ]z fold.txt /*]z* ]} motion.txt /*]}* @@ -4579,6 +4586,7 @@ design-not develop.txt /*design-not* design-speed-size develop.txt /*design-speed-size* desktop-syntax syntax.txt /*desktop-syntax* desktop.vim syntax.txt /*desktop.vim* +develop-spell develop.txt /*develop-spell* develop.txt develop.txt /*develop.txt* development develop.txt /*development* dh change.txt /*dh* @@ -4808,6 +4816,7 @@ fcs_reason-variable eval.txt /*fcs_reason-variable* feature-list eval.txt /*feature-list* fetch pi_netrw.txt /*fetch* file-browser-5.2 version5.txt /*file-browser-5.2* +file-explorer pi_netrw.txt /*file-explorer* file-formats editing.txt /*file-formats* file-pattern autocmd.txt /*file-pattern* file-read insert.txt /*file-read* @@ -6219,8 +6228,12 @@ spec_chglog_release_info pi_spec.txt /*spec_chglog_release_info* special-buffers windows.txt /*special-buffers* speed-up tips.txt /*speed-up* spell spell.txt /*spell* +spell-affix-mbyte spell.txt /*spell-affix-mbyte* +spell-affix-vim spell.txt /*spell-affix-vim* spell-file-format spell.txt /*spell-file-format* +spell-mkspell spell.txt /*spell-mkspell* spell-quickstart spell.txt /*spell-quickstart* +spell-wordlist-format spell.txt /*spell-wordlist-format* spell.txt spell.txt /*spell.txt* split() eval.txt /*split()* splitfind windows.txt /*splitfind* diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt index 917ab9c75..c4857a31d 100644 --- a/runtime/doc/tips.txt +++ b/runtime/doc/tips.txt @@ -1,4 +1,4 @@ -*tips.txt* For Vim version 7.0aa. Last change: 2005 Feb 23 +*tips.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -129,26 +129,26 @@ Switching screens in an xterm *xterm-screens* *xterm-save-screen* :the same thing as each other for a given xterm setup. They not necessarily do the same thing, as this may be a termcap vs. -terminfo problem. You should be aware that there are two databases for +terminfo problem. You should be aware that there are two databases for describing attributes of a particular type of terminal: termcap and -terminfo. This can cause differences when the entries differ AND when of +terminfo. This can cause differences when the entries differ AND when of the programs in question one uses terminfo and the other uses termcap (also see |+terminfo|). In your particular problem, you are looking for the control sequences -^[[?47h and ^[[?47l. These switch between xterms alternate and main screen -buffer. As a quick workaround a command sequence like > +^[[?47h and ^[[?47l. These switch between xterms alternate and main screen +buffer. As a quick workaround a command sequence like > echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" -may do what you want. (My notation ^[ means the ESC character, further down +may do what you want. (My notation ^[ means the ESC character, further down you'll see that the databases use \E instead). On startup, vim echoes the value of the termcap variable ti (terminfo: -smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus +smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus these two variables are the correct place where the above mentioned control sequences should go. Compare your xterm termcap entry (found in /etc/termcap) with your xterm -terminfo entry (retrieved with /usr/5bin/infocmp -C xterm). Both should +terminfo entry (retrieved with /usr/5bin/infocmp -C xterm). Both should contain entries similar to: > :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: @@ -339,7 +339,7 @@ be able to give comments to the parts of the mapping. > (<> notation |<>|. Note that this is all typed literally. ^W is "^" "W", not CTRL-W. You can copy/paste this into Vim if '<' is not included in -'cpoptions') +'cpoptions'.) Note that the last comment starts with |", because the ":execute" command doesn't accept a comment directly. diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt index 7d3206b66..4a9a8d479 100644 --- a/runtime/doc/usr_02.txt +++ b/runtime/doc/usr_02.txt @@ -1,4 +1,4 @@ -*usr_02.txt* For Vim version 7.0aa. Last change: 2004 Jun 08 +*usr_02.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -425,7 +425,7 @@ the editor: "ZZ". This will only close the help window, not exit Vim. As you read the help text, you will notice some text enclosed in vertical bars (for example, |help|). This indicates a hyperlink. If you position the cursor anywhere between the bars and press CTRL-] (jump to tag), the help -system takes you to the indicated subject. (For reasons not discussed here, +system takes you to the indicated subject. (For reasons not discussed here, the Vim terminology for a hyperlink is tag. So CTRL-] jumps to the location of the tag given by the word under the cursor.) After a few jumps, you might want to go back. CTRL-T (pop tag) takes you @@ -484,7 +484,7 @@ example, use the following command: > The table with all mode prefixes can be found here: |help-context|. -Special keys are enclosed in angle brackets. To find help on the up-arrow key +Special keys are enclosed in angle brackets. To find help on the up-arrow key in Insert mode, for instance, use this command: > :help i_ diff --git a/runtime/doc/usr_03.txt b/runtime/doc/usr_03.txt index 8ff6c392f..1690e79aa 100644 --- a/runtime/doc/usr_03.txt +++ b/runtime/doc/usr_03.txt @@ -1,4 +1,4 @@ -*usr_03.txt* For Vim version 7.0aa. Last change: 2005 Feb 08 +*usr_03.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -332,7 +332,7 @@ the and cursor keys when necessary. Pressing executes the command. Note: - The characters .*[]^%/\?~$ have special meaning. If you want to use + The characters .*[]^%/\?~$ have special meanings. If you want to use them in a search you must put a \ in front of them. See below. To find the next occurrence of the same string use the "n" command. Use this diff --git a/runtime/doc/usr_08.txt b/runtime/doc/usr_08.txt index fef83987e..cee90dca3 100644 --- a/runtime/doc/usr_08.txt +++ b/runtime/doc/usr_08.txt @@ -1,4 +1,4 @@ -*usr_08.txt* For Vim version 7.0aa. Last change: 2004 Jun 04 +*usr_08.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -52,7 +52,7 @@ the bottom one the code that uses these variables. The CTRL-W w command can be used to jump between the windows. If you are in the top window, CTRL-W w jumps to the window below it. If you are in the -bottom window it will jump to the first window. (CTRL-W CTRL-W does the same +bottom window it will jump to the first window. (CTRL-W CTRL-W does the same thing, in case you let go of the CTRL key a bit later.) diff --git a/runtime/doc/usr_09.txt b/runtime/doc/usr_09.txt index 8d97b186a..739aec53b 100644 --- a/runtime/doc/usr_09.txt +++ b/runtime/doc/usr_09.txt @@ -1,4 +1,4 @@ -*usr_09.txt* For Vim version 7.0aa. Last change: 2001 Sep 03 +*usr_09.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -129,7 +129,7 @@ select text in a standard manner. The X Window system also has a standard system for using the mouse. Unfortunately, these two standards are not the same. Fortunately, you can customize Vim. You can make the behavior of the mouse -work like an X Window system mouse or a Microsoft Windows mouse. The following +work like an X Window system mouse or a Microsoft Windows mouse. The following command makes the mouse behave like an X Window mouse: > :behave xterm diff --git a/runtime/doc/usr_10.txt b/runtime/doc/usr_10.txt index 9e536d541..aa8f92f97 100644 --- a/runtime/doc/usr_10.txt +++ b/runtime/doc/usr_10.txt @@ -1,4 +1,4 @@ -*usr_10.txt* For Vim version 7.0aa. Last change: 2005 Mar 15 +*usr_10.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -700,7 +700,7 @@ as input. The output of this command then replaces the selected block. Because this summarizes badly if you are unfamiliar with UNIX filters, take a look at an example. The sort command sorts a file. If you execute the following command, the unsorted file input.txt will be sorted and written to -output.txt. (This works on both UNIX and Microsoft Windows.) > +output.txt. (This works on both UNIX and Microsoft Windows.) > sort output.txt diff --git a/runtime/doc/usr_21.txt b/runtime/doc/usr_21.txt index b5484e908..4af286a55 100644 --- a/runtime/doc/usr_21.txt +++ b/runtime/doc/usr_21.txt @@ -1,4 +1,4 @@ -*usr_21.txt* For Vim version 7.0aa. Last change: 2004 Oct 10 +*usr_21.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -120,7 +120,7 @@ looks like this: > :set viminfo='1000 The f option controls whether global marks (A-Z and 0-9) are stored. If this -option is 0, none are stored. If it is 1 or you do not specify an f option, +option is 0, none are stored. If it is 1 or you do not specify an f option, the marks are stored. You want this feature, so now you have this: > :set viminfo='1000,f1 @@ -199,7 +199,7 @@ work and pick up where you left off the next day. You can do this by saving your editing session and restoring it the next day. A Vim session contains all the information about what you are editing. This includes things such as the file list, window layout, global variables, -options and other information. (Exactly what is remembered is controlled by +options and other information. (Exactly what is remembered is controlled by the 'sessionoptions' option, described below.) The following command creates a session file: > diff --git a/runtime/doc/usr_22.txt b/runtime/doc/usr_22.txt index b18b085a7..1506950be 100644 --- a/runtime/doc/usr_22.txt +++ b/runtime/doc/usr_22.txt @@ -1,4 +1,4 @@ -*usr_22.txt* For Vim version 7.0aa. Last change: 2004 Jun 16 +*usr_22.txt* For Vim version 7.0aa. Last change: 2005 Apr 10 VIM USER MANUAL - by Bram Moolenaar @@ -291,7 +291,7 @@ shorter to type: > The output could look like this: 1 #h "help.txt" line 62 ~ - 2 %l+ "usr_21.txt" line 1 ~ + 2 %a+ "usr_21.txt" line 1 ~ 3 "usr_toc.txt" line 1 ~ The first column contains the buffer number. You can use this to edit the @@ -303,7 +303,7 @@ and the line number where the cursor was the last time. u Buffer is unlisted |unlisted-buffer|. % Current buffer. # Alternate buffer. - l Buffer is loaded and displayed. + a Buffer is loaded and displayed. h Buffer is loaded but hidden. = Buffer is read-only. - Buffer is not modifiable, the 'modifiable' option is off. diff --git a/runtime/doc/usr_24.txt b/runtime/doc/usr_24.txt index 76274d1f5..b916aa85f 100644 --- a/runtime/doc/usr_24.txt +++ b/runtime/doc/usr_24.txt @@ -1,4 +1,4 @@ -*usr_24.txt* For Vim version 7.0aa. Last change: 2003 Aug 18 +*usr_24.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -104,7 +104,7 @@ Vim do that use this command: > When you now type a text like "(example)", as soon as you type the ) Vim will briefly move the cursor to the matching (, keep it there for half a second, and move back to where you were typing. - In case there is not matching (, Vim will beep. Then you know that you + In case there is no matching (, Vim will beep. Then you know that you might have forgotten the ( somewhere, or typed a ) too many. The match will also be shown for [] and {} pairs. You don't have to wait with typing the next character, as soon as Vim sees it the cursor will move diff --git a/runtime/doc/usr_25.txt b/runtime/doc/usr_25.txt index cce72faaf..fce1931ef 100644 --- a/runtime/doc/usr_25.txt +++ b/runtime/doc/usr_25.txt @@ -1,4 +1,4 @@ -*usr_25.txt* For Vim version 7.0aa. Last change: 2003 Jun 21 +*usr_25.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -198,7 +198,7 @@ command: > :runtime macros/justify.vim -This Vim script file defines a new visual command "_j". To justify a block of +This Vim script file defines a new visual command "_j". To justify a block of text, highlight the text in Visual mode and then execute "_j". Look in the file for more explanations. To go there, do "gf" on this name: $VIMRUNTIME/macros/justify.vim. diff --git a/runtime/doc/usr_42.txt b/runtime/doc/usr_42.txt index b560d6b64..bbf06e54e 100644 --- a/runtime/doc/usr_42.txt +++ b/runtime/doc/usr_42.txt @@ -1,4 +1,4 @@ -*usr_42.txt* For Vim version 7.0aa. Last change: 2002 Oct 08 +*usr_42.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -109,7 +109,7 @@ Thus each name in {menu-item} has its priority number. SPECIAL CHARACTERS -The {menu-item} in this example is "&File.&Save:w". This brings up an +The {menu-item} in this example is "&File.&Save:w". This brings up an important point: {menu-item} must be one word. If you want to put a dot, space or tabs in the name, you either use the <> notation ( and , for instance) or use the backslash (\) escape. > diff --git a/runtime/doc/usr_44.txt b/runtime/doc/usr_44.txt index 021c41e23..edadbfbe3 100644 --- a/runtime/doc/usr_44.txt +++ b/runtime/doc/usr_44.txt @@ -1,4 +1,4 @@ -*usr_44.txt* For Vim version 7.0aa. Last change: 2002 Oct 10 +*usr_44.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM USER MANUAL - by Bram Moolenaar @@ -550,7 +550,7 @@ before the top of the screen: > If it cannot figure out where it is in that space, it starts looking farther and farther back until it figures out what to do. But it looks no farther -back than 500 lines. (A large "maxlines" slows down processing. A small one +back than 500 lines. (A large "maxlines" slows down processing. A small one might cause synchronization to fail.) To make synchronizing go a bit faster, tell Vim which syntax items can be skipped. Every match and region that only needs to be used when actually diff --git a/runtime/doc/version5.txt b/runtime/doc/version5.txt index bc2f45ef5..43816b86a 100644 --- a/runtime/doc/version5.txt +++ b/runtime/doc/version5.txt @@ -1,4 +1,4 @@ -*version5.txt* For Vim version 7.0aa. Last change: 2004 Jun 16 +*version5.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -562,11 +562,11 @@ New options *added-options* 'hlsearch' Highlight all matches with the last used search pattern. -'hkmapp' Phonetic Hebrew mapping (Ilya Dogolazky). +'hkmapp' Phonetic Hebrew mapping. (Ilya Dogolazky) -'iconstring' Define the name of the icon, when not empty. (version 5.2: the +'iconstring' Define the name of the icon, when not empty. (Version 5.2: the string is used literally, a newline can be used to make two - lines). + lines.) 'lazyredraw' Don't redraw the screen while executing macros, registers or other not typed commands. @@ -591,9 +591,9 @@ New options *added-options* changing the value of 'tabstop'. Makes it more easy to keep 'ts' at 8, while still getting four spaces for a . -'titlestring' String for the window title, when not empty. (version 5.2: +'titlestring' String for the window title, when not empty. (Version 5.2: this string is used literally, a newline can be used to make - two lines). + two lines.) 'verbose' Level of verbosity. Makes it possible to show which .vimrc, .exrc, .viminfo files etc. are used for initializing. Also @@ -728,7 +728,7 @@ Autocommands: - VimLeave autocommands are executed after writing the viminfo file, instead of before. |VimLeave| - Allow changing autocommands while executing them. This allows for - self-modifying autocommands. (idea from Goldberg) + self-modifying autocommands. (idea from Goldberg) - When using autocommands with two or more patterns, could not split ":if/:endif" over two lines. Now all matching autocommands are executed in one do_cmdline(). @@ -1046,7 +1046,7 @@ in the wrong line and the window to be scrolled (Acevedo). After ":set all&", 'lines' and 'ttytype' were still non-default, because the defaults never got set. Now the defaults for 'lines' and 'columns' are set -after detecting the window size. 'term' and 'ttytype' defaults are set when +after detecting the window size. 'term' and 'ttytype' defaults are set when detecting the terminal type. For (most) non-Unix systems, don't add file names with illegal characters when @@ -1357,7 +1357,7 @@ caused various errors and a crash. DJGPP version could not save long lines (>64000) for undo. "yw" on the last char in the file didn't work. Also fixed "6x" at the end of -the line. "6X" at the start of a line fails, but does not break a mapping. In +the line. "6X" at the start of a line fails, but does not break a mapping. In general, a movement for an operator doesn't beep or flush a mapping, but when there is nothing to operate on it beeps (this is Vi compatible). @@ -1777,7 +1777,7 @@ Added "g]" to always do ":tselect" for the ident under the cursor. Added ":tjump" and ":stjump" commands. Improved listing of ":tselect" when tag names are a bit long. -Included patches for the Macintosh version. Also for Python interface. +Included patches for the Macintosh version. Also for Python interface. (St-Amant) ":buf foo" now also restores cursor column, when the buffer was used before. @@ -2070,7 +2070,7 @@ a printable character replaces the selection. - Added 'mousemodel' option: Change use of mouse buttons. - Added 'keymodel' option: tells to use shifted special keys to start a Visual or Select mode selection. -- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel' +- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel' and 'keymodel' for MS-Windows and xterm behavior. - The xterm-like selection is now called modeless selection. - Visual mode mappings and menus are used in Select mode. They automatically @@ -2150,7 +2150,7 @@ New functions *new-functions-5.2* |browse()| puts up a file requester when available. (Negri) |escape()| escapes characters in a string with a backslash. |fnamemodify()| modifies a file name. -|input()| asks the user to enter a line. (Aaron) There is a separate +|input()| asks the user to enter a line. (Aaron) There is a separate history for lines typed for the input() function. |argc()| |argv()| can be used to access the argument list. @@ -2394,7 +2394,7 @@ events. Makes cursor blinking work for Terhaar, breaks it for me. Non-text in ":list" output is highlighted with NonText. -Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as +Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as synonym for "iB". New: "i<" and "i>", to select . All this also for "a" objects. @@ -2607,7 +2607,7 @@ Graceful handling of NULLs in drag-dropped file list. Handle passing NULL to Fullname_save(). (Negri) Win32: ":!start" to invoke a program without opening a console, swapping -screens, or waiting for completion in either console or gui version. e.g. you +screens, or waiting for completion in either console or gui version, e.g. you can type ":!start winfile". ALSO fixes "can't delete swapfile after spawning a shell" bug. (enhancement of Aaron patch) (Negri) @@ -3783,7 +3783,7 @@ Macintosh: (St-Amant) - Weak-linking of Python 1.5.1 (only on PPC). Python is supported when the library is available. - If an error is encountered when sourcing the users .vimrc, the alert box now - shows right away with the OK button defaulted. There's no more "Delete"-key + shows right away with the OK button defaulted. There's no more "Delete"-key sign at the start of each line - Better management of environment variables. Now $VIM is calculated only once, not regenerated every time it is used. @@ -4067,7 +4067,7 @@ Various XIM and multi-byte fixes: - Fix user cannot see his language while he is typing his language with off-the-spot method. (Nagano) - Fix preedit position using text/edit area (using gui.wid). (Nagano) -- remove 'fix dead key' codes. It was needed since XNFocusWindow was +- remove 'fix dead key' codes. It was needed since XNFocusWindow was "x11_window", XNFocusWindow is now gui.wid. (Nagano) - Remove some compile warnings and fix typos. (Namsh) - For status area, check the gtk+ version while Vim runs. I believe it is @@ -4783,7 +4783,7 @@ translated to "}" before the shell got it. Now don't remove backslashes when wildcards are going to be expanded. Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a -file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty" +file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty" still doesn't work though. "make test" didn't always work on DOS/Windows for test30, because it depended diff --git a/runtime/doc/version6.txt b/runtime/doc/version6.txt index 1712754a7..6de0af7fc 100644 --- a/runtime/doc/version6.txt +++ b/runtime/doc/version6.txt @@ -1,4 +1,4 @@ -*version6.txt* For Vim version 7.0aa. Last change: 2005 Jan 26 +*version6.txt* For Vim version 7.0aa. Last change: 2005 Apr 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -956,7 +956,7 @@ Use "--remote" to have files be edited in an already running Vim. Use "--remote-wait" to do the same and wait for the editing to finish. Use "--remote-send" to send commands from one Vim to another. Use "--remote-expr" to have an expression evaluated in another Vim. -Use "--serverlist" to list the currently available Vim servers. (X only) +Use "--serverlist" to list the currently available Vim servers. (X only) There are also functions to communicate between the server and the client. |remote_send()| |remote_expr()| @@ -1055,7 +1055,7 @@ window). This makes it easy to navigate through the error list. - |:cwindow| takes care that there is a quickfix window only when there are recognized errors. (Dan Sharp) -- Quickfix also knows "info", next to "warning" and "error" types. "%I" can be +- Quickfix also knows "info", next to "warning" and "error" types. "%I" can be used for the start of a multi-line informational message. (Tony Leneis) - The "%p" argument can be used in 'errorformat' to get the column number from a line where "^" points to the column. (Stefan Roemer) @@ -1144,7 +1144,7 @@ The View also contains the local argument list and manually created, opened and closed folds. Added the ":loadview" command and the 'viewdir' option: Allows for saving and -restoring views of a file with simple commands. ":mkview 1" saves view 1 for +restoring views of a file with simple commands. ":mkview 1" saves view 1 for the current file, ":loadview 1" loads it again. Also allows quickly switching between two views on one file. And saving and restoring manual folds and the folding state. @@ -3303,7 +3303,7 @@ open the GUI window early to be able to display the messages and pop up the dialog. "r" on a multi-byte character deleted only the first byte of the -character. "3r" deleted three bytes instead of three characters. +character. "3r" deleted three bytes instead of three characters. When interrupting reading a file, Vi considers the buffer modified. Added the 'i' flag in 'cpoptions' flag for this (we don't want it modified to be able to @@ -3830,7 +3830,7 @@ Problem: VMS: Printing doesn't work, the file is deleted too quickly. No longer need the VMS specific printing menu. gethostname() is not available with VAXC. The makefile was lacking selection of the tiny-huge feature set. -Solution: Adjust the 'printexpr' option default. Fix the other problems and +Solution: Adjust the 'printexpr' option default. Fix the other problems and update the documentation. (Zoltan Arpadffy) Files: runtime/doc/os_vms.txt, runtime/menu.vim, src/INSTALLvms.txt, src/Make_vms.mms, src/option.c, src/os_unix.c, src/os_vms_conf.h @@ -3843,7 +3843,7 @@ Files: src/ops.c Patch 6.0.029 Problem: When making a change in line 1, then in line 2 and then deleting - line 1, undo info could be wrong. Only when the changes are undone + line 1, undo info could be wrong. Only when the changes are undone at once. (Gerhard Hochholzer) Solution: When not saving a line for undo because it was already done before, remember for which entry the last line must be computed. @@ -3891,7 +3891,7 @@ Files: runtime/menu.vim Patch 6.0.036 Problem: OS/2, MS-DOS and MS-Windows: Using a path that starts with a - slash in 'tags' doesn't work as expected. (Mathias Koehrer + slash in 'tags' doesn't work as expected. (Mathias Koehrer) Solution: Only use the drive, not the whole path to the current directory. Also make it work for "c:dir/file". Files: src/misc2.c @@ -6127,7 +6127,7 @@ New message translation for Norwegian. ( New color scheme: desert (Hans Fugal) -Arabic specific features. 'arabicshape', 'termbidi', 'arabic' and +Arabic specific features. 'arabicshape', 'termbidi', 'arabic' and 'rightleftcmd' options. (Nadim Shaikli & Isam Bayazidi) Support for neXtaw GUI toolkit, mostly like Athena. (Alexey Froloff) @@ -6810,7 +6810,7 @@ Files: runtime/filetype.vim, runtime/plugin/gzip.vim Patch 6.1.056 Problem: Loading the Syntax menu can take quite a bit of time. -Solution: Add the "skip_syntax_sel_menu" variable. When its defined the +Solution: Add the "skip_syntax_sel_menu" variable. When it's defined the available syntax files are not in the Syntax menu. Files: runtime/doc/gui.txt, runtime/menu.vim @@ -7640,7 +7640,7 @@ Problem: The extra mouse buttons found on some mice don't work. Solution: Support two extra buttons for MS-Windows. (Michael Geddes) Files: runtime/doc/term.txt, src/edit.c, src/ex_getln.c, src/gui.c, src/gui_w32.c, src/gui_w48.c, src/keymap.h, src/message.c, - src/misc1.c, src/misc2.c, src/normal.c. src/vim.h + src/misc1.c, src/misc2.c, src/normal.c, src/vim.h Patch 6.1.185 (depends on 6.1.182) Problem: Can't compile without +comments feature. diff --git a/runtime/doc/vimdiff-fr.1 b/runtime/doc/vimdiff-fr.1 new file mode 100644 index 000000000..8341b5044 --- /dev/null +++ b/runtime/doc/vimdiff-fr.1 @@ -0,0 +1,53 @@ +.TH VIMDIFF 1 "30 mars 2001" +.SH NOM +vimdiff \- ouvre deux ou trois versions d'un fichier dans Vim et affiche +leurs différences +.SH SYNOPSIS +.br +.B vimdiff +[options] fichier1 fichier2 [fichier3] +.PP +.B gvimdiff +.SH DESCRIPTION +.B Vimdiff +démarre +.B Vim +avec deux (ou trois) fichiers. +Chaque fichier est ouvert dans sa propre fenêtre. +Les différences entres ces fichiers sont mises en surbrillance. +C'est un outil très pratique pour visualiser et reporter les +changements entre deux versions d'un même fichier. +.PP +Consulter vim(1) pour des informations sur l'éditeur Vim lui-même. +.PP +Si +.B gvimdiff +est invoqué, l'IHM graphique est démarrée quand elle est disponible. +.PP +L'option 'diff' est activée dans chacune des fenêtres, ce qui provoque la mise +en surbrillance des différences. +.br +Les options 'wrap' et 'scrollbind' sont activées pour donner un aspect +agréable au texte. +.br +L'option 'foldmethod' est fixée à "diff", ce qui replie les lignes consécutives +identiques. 'foldcolumn' est fixé à 2 pour trouver les replis rapidement et +les ouvrir ou les fermer facilement. +.SH ARGUMENTS +La fenêtre de Vim est partagée verticalement afin d'afficher les lignes +correspondantes les unes en face des autres, comme si l'argument "\-O" était +spécifié. Utilisez l'argument "\-o" pour obtenir un partage horizontal à la +place. +.PP +Pour connaître les autres arguments disponibles, consultez vim(1). +.SH VOIR AUSSI +vim(1) +.SH AUTEUR +La majeure partie de +.B Vim +a été écrite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. +Voir ":help credits" dans +.B Vim. +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2005-03-12. diff --git a/runtime/doc/vimdiff-fr.UTF-8.1 b/runtime/doc/vimdiff-fr.UTF-8.1 new file mode 100644 index 000000000..5f09ee4b7 --- /dev/null +++ b/runtime/doc/vimdiff-fr.UTF-8.1 @@ -0,0 +1,53 @@ +.TH VIMDIFF 1 "30 mars 2001" +.SH NOM +vimdiff \- ouvre deux ou trois versions d'un fichier dans Vim et affiche +leurs différences +.SH SYNOPSIS +.br +.B vimdiff +[options] fichier1 fichier2 [fichier3] +.PP +.B gvimdiff +.SH DESCRIPTION +.B Vimdiff +démarre +.B Vim +avec deux (ou trois) fichiers. +Chaque fichier est ouvert dans sa propre fenêtre. +Les différences entres ces fichiers sont mises en surbrillance. +C'est un outil très pratique pour visualiser et reporter les +changements entre deux versions d'un même fichier. +.PP +Consulter vim(1) pour des informations sur l'éditeur Vim lui-même. +.PP +Si +.B gvimdiff +est invoqué, l'IHM graphique est démarrée quand elle est disponible. +.PP +L'option 'diff' est activée dans chacune des fenêtres, ce qui provoque la mise +en surbrillance des différences. +.br +Les options 'wrap' et 'scrollbind' sont activées pour donner un aspect +agréable au texte. +.br +L'option 'foldmethod' est fixée à "diff", ce qui replie les lignes consécutives +identiques. 'foldcolumn' est fixé à 2 pour trouver les replis rapidement et +les ouvrir ou les fermer facilement. +.SH ARGUMENTS +La fenêtre de Vim est partagée verticalement afin d'afficher les lignes +correspondantes les unes en face des autres, comme si l'argument "\-O" était +spécifié. Utilisez l'argument "\-o" pour obtenir un partage horizontal à la +place. +.PP +Pour connaître les autres arguments disponibles, consultez vim(1). +.SH VOIR AUSSI +vim(1) +.SH AUTEUR +La majeure partie de +.B Vim +a été écrite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. +Voir ":help credits" dans +.B Vim. +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2005-03-12. diff --git a/runtime/doc/vimdiff.man b/runtime/doc/vimdiff.man index 771ce9d0e..fb0663c13 100644 --- a/runtime/doc/vimdiff.man +++ b/runtime/doc/vimdiff.man @@ -1,12 +1,10 @@ +VIMDIFF(1) VIMDIFF(1) -VIMDIFF(1) VIMDIFF(1) - - NAME - vimdiff - edit two or three versions of a file with Vim - and show differences + vimdiff - edit two or three versions of a file with Vim and show dif- + ferences SYNOPSIS vimdiff [options] file1 file2 [file3] @@ -14,30 +12,25 @@ SYNOPSIS gvimdiff DESCRIPTION - Vimdiff starts Vim on two (or three) files. Each file - gets its own window. The differences between the files - are highlighted. This is a nice way to inspect changes - and to move changes from one version to another version of - the same file. + Vimdiff starts Vim on two (or three) files. Each file gets its own + window. The differences between the files are highlighted. This is a + nice way to inspect changes and to move changes from one version to + another version of the same file. See vim(1) for details about Vim itself. - When started as gvimdiff the GUI will be started, if - available. + When started as gvimdiff the GUI will be started, if available. - In each window the 'diff' option will be set, which causes - the differences to be highlighted. - The 'wrap' and 'scrollbind' options are set to make the - text look good. - The 'foldmethod' option is set to "diff", which puts - ranges of lines without changes in a fold. 'foldcolumn' - is set to two to make it easy to spot the folds and open - or close them. + In each window the 'diff' option will be set, which causes the differ- + ences to be highlighted. + The 'wrap' and 'scrollbind' options are set to make the text look good. + The 'foldmethod' option is set to "diff", which puts ranges of lines + without changes in a fold. 'foldcolumn' is set to two to make it easy + to spot the folds and open or close them. OPTIONS - Vertical splits are used to align the lines, as if the - "-O" argument was used. To use horizontal splits intead, - use the "-o" argument. + Vertical splits are used to align the lines, as if the "-O" argument + was used. To use horizontal splits intead, use the "-o" argument. For all other arguments see vim(1). @@ -45,22 +38,9 @@ SEE ALSO vim(1) AUTHOR - Most of Vim was made by Bram Moolenaar, with a lot of help - from others. See ":help credits" in Vim. - - - - - - - - - - - - - + Most of Vim was made by Bram Moolenaar, with a lot of help from others. + See ":help credits" in Vim. - 2001 March 30 1 + 2001 March 30 VIMDIFF(1) diff --git a/runtime/doc/vimtutor-fr.1 b/runtime/doc/vimtutor-fr.1 new file mode 100644 index 000000000..e6ae6484a --- /dev/null +++ b/runtime/doc/vimtutor-fr.1 @@ -0,0 +1,55 @@ +.TH VIMTUTOR 1 "2 avril 2001" +.SH NAME +vimtutor \- tutoriel Vim +.SH SYNOPSIS +.br +.B vimtutor [langue] +.SH DESCRIPTION +.B Vimtutor +lance le tutoriel +.B Vim +\. +Il copie d'abord le fichier du tutoriel, afin que vous puissiez le modifier +sans altérer le fichier original. +.PP +.B Vimtutor +est utile pour les personnes souhaitant apprendre leurs premières commandes +.B Vim +\. +.PP +L'argument optionnel [langue] est le nom d'une langue, spécifiée par son +symbole à deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis, +la langue de la région linguistique actuelle sera retenue. Si le tutoriel est +disponible dans cette langue, il est proposé. Sinon, c'est la version anglaise +qui est proposée. +.PP +.B Vim +est toujours lancé en mode Compatible Vi. +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/tutor/tutor[.langue] +Les fichiers textes de +.B Vimtutor +\. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Le script Vim utilisé pour copier les fichiers texte de +.B Vimtutor +\. +.SH AUTEUR +.B Vimtutor +a été écrit à l'origine pour Vi par Michael C. Pierce et Robert K. Ware, de la +Colorado School of Mines, en reprenant des idées émises par Charles Smith, de +la Colorado State University. +E-mail : bware@mines.colorado.edu. +.br +Il a été modifié pour +.B Vim +par Bram Moolenaar. +Pour connaître le nom des traducteurs, consultez les fichiers textes du +tutoriel. +.SH VOIR AUSSI +vim(1) +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2004-12-27. diff --git a/runtime/doc/vimtutor-fr.UTF-8.1 b/runtime/doc/vimtutor-fr.UTF-8.1 new file mode 100644 index 000000000..e36c34d78 --- /dev/null +++ b/runtime/doc/vimtutor-fr.UTF-8.1 @@ -0,0 +1,55 @@ +.TH VIMTUTOR 1 "2 avril 2001" +.SH NAME +vimtutor \- tutoriel Vim +.SH SYNOPSIS +.br +.B vimtutor [langue] +.SH DESCRIPTION +.B Vimtutor +lance le tutoriel +.B Vim +\. +Il copie d'abord le fichier du tutoriel, afin que vous puissiez le modifier +sans altérer le fichier original. +.PP +.B Vimtutor +est utile pour les personnes souhaitant apprendre leurs premières commandes +.B Vim +\. +.PP +L'argument optionnel [langue] est le nom d'une langue, spécifiée par son +symbole à deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis, +la langue de la région linguistique actuelle sera retenue. Si le tutoriel est +disponible dans cette langue, il est proposé. Sinon, c'est la version anglaise +qui est proposée. +.PP +.B Vim +est toujours lancé en mode Compatible Vi. +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/tutor/tutor[.langue] +Les fichiers textes de +.B Vimtutor +\. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Le script Vim utilisé pour copier les fichiers texte de +.B Vimtutor +\. +.SH AUTEUR +.B Vimtutor +a été écrit à l'origine pour Vi par Michael C. Pierce et Robert K. Ware, de la +Colorado School of Mines, en reprenant des idées émises par Charles Smith, de +la Colorado State University. +E-mail : bware@mines.colorado.edu. +.br +Il a été modifié pour +.B Vim +par Bram Moolenaar. +Pour connaître le nom des traducteurs, consultez les fichiers textes du +tutoriel. +.SH VOIR AUSSI +vim(1) +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2004-12-27. diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt index 0ff9dfe1b..cd924a332 100644 --- a/runtime/doc/visual.txt +++ b/runtime/doc/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 7.0aa. Last change: 2004 Dec 29 +*visual.txt* For Vim version 7.0aa. Last change: 2005 Apr 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -88,8 +88,11 @@ linewise Visual Visual blockwise Visual Normal *gv* *v_gv* gv Start Visual mode with the same area as the previous - area and the same mode. In Visual mode the current and - the previous Visual area are exchanged. + area and the same mode. + In Visual mode the current and the previous Visual + area are exchanged. + After using "p" or "P" in Visual mode the text that + was put will be selected. ** Set the current cursor position. If Visual mode is @@ -272,7 +275,7 @@ See |v_b_I_example|. Visual-block Append *v_b_A* With a blockwise selection, A{string} will append {string} to the end of -block on every line of the block. There is some differing behavior where the +block on every line of the block. There is some differing behavior where the block RHS is not straight, due to different line lengths: 1. Block was created with $ @@ -297,12 +300,12 @@ all lines. *v_b_<* Visual-block Shift *v_b_>* -The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The +The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The LHS of the block determines the point from which to apply a right shift, and -padding includes TABs optimally according to 'ts' and 'et'. The LHS of the +padding includes TABs optimally according to 'ts' and 'et'. The LHS of the block determines the point upto which to shift left. Note: v_< padding is buggy if the Visual Block starts and ends in the same - TAB. (Vim 5.4c). + TAB. (Vim 5.4c) See |v_b_>_example|. See |v_b_<_example|. @@ -364,14 +367,14 @@ Note that special characters (like '.' and '*') will cause problems. Visual-block Examples *blockwise-examples* With the following text, I will indicate the commands to produce the block and -the results below. In all cases, the cursor begins on the 'a' in the first +the results below. In all cases, the cursor begins on the 'a' in the first line of the test text. The following modeline settings are assumed ":ts=8:sw=4:". It will be helpful to :set hls / -where is a real TAB. This helps visualise the operations. +where is a real TAB. This helps visualise the operations. The test text is: diff --git a/runtime/doc/xxd-fr.1 b/runtime/doc/xxd-fr.1 new file mode 100644 index 000000000..2f157bcbe --- /dev/null +++ b/runtime/doc/xxd-fr.1 @@ -0,0 +1,395 @@ +.TH XXD 1 "août 1996" "Page de manuel pour xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.\" French translation by David Blanchet 2005-03 +.SH NOM +.I xxd +\- convertit en représentation hexadécimale et inversement. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [fichier_entree [fichier_sortie]] +.br +.B xxd +\-r[evert] [options] [fichier_entree [fichier_sortie]] +.SH DESCRIPTION +.I xxd +crée un fichier contenant la représentation hexadécimale d'un fichier +binaire ou de l'entrée standard. +Il peut également convertir un fichier de codes hexadécimaux en un fichier +binaire. +Comme +.BR uuencode(1) +et +.BR uudecode(1) +il permet la transmission de données binaires dans une représentation ASCII +compatible avec le courrier électronique, mais a l'avantage de décoder la +sortie standard. +De plus, il peut être utilisé pour appliquer des rustines à des fichiers +binaires. +.SH OPTIONS +Si aucun +.I fichier_entree +n'est spécifié, l'entrée standard est utilisée. +Si +.I fichier_entree +correspond au caractère +.RB '\-' +\, l'entrée standard est employée comme source des données en entrée. +Si aucun +.I fichier_sortie +n'est spécifié (ou qu'un caractère +.RB '\-' +est donné à sa place), le résultat est envoyé sur la sortie standard. +.PP +NOTE : un analyseur paresseux est utilisé. Il ne vérifie pas au-delà de la +première lettre de l'option, à moins que cette dernière ne requiert un +paramètre. +L'espace entre l'option et son paramètre est optionnel. +Les paramètres des options peuvent être spécifiés en notation décimale, +hexadécimale ou octale. +Ainsi +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +et +.B \-cols 8 +sont tous équivalents. +.TP +.IR \-a " | " \-autoskip +active la fonctionnalité "autoskip" : le caractère '*' remplace les lignes +d'octets nuls. Désactivée par défaut. +.TP +.IR \-b " | " \-bits +Convertit en binaires plutôt qu'en hexadécimal. +Cette option écrit les octets comme une séquence de "1" et de "0" au lieu +d'une conversion en hexadécimal traditionnel. Chaque ligne est précédée par un +numéro de ligne en hexadécimal et suivie de la représentation ASCII (ou +EBCDIC) correspondante. Les options \-r, \-p, \-i ne fonctionnent pas dans ce +mode. +.TP +.IR "\-c cols " | " \-cols cols" +place +.RI < cols > +octets par ligne. 16 par défaut (\-i : 12, \-ps : 30, \-b : 6). Maximum 256. +.TP +.IR \-E " | " \-EBCDIC +Passe le codage des caractères de la colonne de droite de ASCII à EBCDIC. +Cela ne change pas la représentation hexadécimale. Cette option est sans effet +quand elle est utilisée avec \-r, \-p or \-i. +.TP +.IR "\-g octets " | " \-groupsize octets" +Regroupe les octets (deux chiffres hexadécimaux ou huit chiffres binaires) +par groupe de +.RI < octets > +\, séparés par des espaces blancs. Spécifiez +.I \-g 0 +pour supprimer le regroupement. +.RI < octets > +vaut 2 par défaut dans le mode normal et \fI1\fP en +représentation binaire. Le regroupement ne s'applique pas aux styles +Postscript et Include. +.TP +.IR \-h " | " \-help +Affiche un résumé des commandes disponibles et quitte. Aucune conversion n'est +effectuée. +.TP +.IR \-i " | " \-include +produit une sortie dans le style #include (fichier C à inclure). La définition +complète d'un tableau statique est écrite et est nommée d'après le fichier +d'origine, à moins que xxd lise depuis l'entrée standard. +.TP +.IR "\-l long " | " \-len long" +Arrête après l'écriture de +.RI < long > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +Produit une conversion continue dans le style Postscript (postscript continuous +hexdumd style). +Également connu sous le nom de « conversion brute » (plain hexdump style). +.TP +.IR \-r " | " \-revert +Opération inverse : convertit un fichier hexadécimal en un fichier binaire (ou +applique une rustine à un fichier binaire). +Si l'écriture n'a pas lieu sur la sortie standard, xxd écrit dans le fichier +qu'il produit sans le tronquer. Utilisez la combinaison +.I \-r \-p +pour lire de l'hexadécimal brut sans information sur le numéro des lignes et +sans format de colonnes particulier. Des espaces blancs et coupures de lignes +supplémentaires sont autorisés à n'importe quel endroit. +.TP +.I \-seek décalage +Utilisé après l'option +.I \-r +\: inverse la conversion en ajoutant +.RI < décalage > +aux positions dans le fichier données dans le code hexadécimal. +.TP +.I \-s [\+][\-]décalage +Débute au +.RI < décalage > +absolu ou relatif dans fichier_entree. +\fI\+ \fRindique que le décalage est relatif à la position courante dans +l'entrée standard (sans effet si la lecture n'a pas lieu sur l'entrée +standard). \fI\- \fRindique un décalage en caractères depuis la fin de +l'entrée (utilisé avec \fI \+ \fR, désigne la position avant la position +actuelle de l'entrée standard). +Sans l'option \-s, xxd démarre à la position courante du fichier. +.TP +.I \-u +Utilise des chiffres hexadécimaux majuscules. La casse par défaut est +minuscule. +.TP +.IR \-v " | " \-version +Affiche la version de xxd. +.SH MISE EN GARDE +.I xxd \-r +effectue des opérations internes un peu obscures lors de l'évaluation +des informations sur les numéros de lignes. Si le fichier de sortie est +adressable, alors les numéros de lignes au début de chaque ligne d'hexadécimal +peuvent être désordonnées, des lignes peuvent manquer ou se chevaucher. Dans +ces cas, xxd utilisera lseek(2) pour déterminer la prochaine position. Si le +fichier n'est pas adressable, seuls les vides sont autorisés, et ils seront +comblés par des octets nuls. +.PP +.I xxd \-r +ne génère aucune erreur lors de l'analyse. Le problème sont passés +silencieusement. +.PP +Lors de l'édition de la représentation hexadécimale, veuillez noter que +.I xxd \-r +ignore tout ce qui se trouve sur la ligne après avoir lu suffisamment de +données hexadécimales (voir l'option \-c). Cela signifie également que les +modifications dans la colonne ASCII (ou EBCDIC) sont toujours ignorées. La +conversion inverse de données hexadécimales brutes (postscript) avec xxd \-r +\-p ne dépend pas d'un nombre correct de colonnes. Dans ce cas, tout ce qui +ressemble à une paire de chiffres hexadécimaux est interprété. +.PP +Remarquez la différence entre +.br +\fI% xxd \-i fichier\fR +.br +et +.br +\fI% xxd \-i \< fichier\fR +.PP +.I xxd \-s \+seek +peut différer de +.I xxd \-s seek +\, car lseek(2) est utilisé pour « revenir en arrière ». Le '+' fait une +différence quand la source des données est l'entrée standard et si la position +dans le fichier de l'entrée standard n'est pas au début du fichier lorsque xxd +est démarré et qu'il reçoit ses données. +L'exemple suivant peut vous aider à comprendre (ou bien vous perdre davantage +encore !)... +.PP +Remettre l'entrée standard au départ avant de lire ; nécessaire car 'cat' a +déjà lu jusqu'à la fin de l'entrée standard. +.br +\fI% sh \-c 'cat > donnees_binaires; xxd \-s 0 > donnees_hexa' < fichier\fR +.PP +Convertir à partir de la position 0x480 (= 1024 + 128) du fichier. +Le symbole '+' signifie "relativement à la position actuelle', ainsi 128 est +ajouté aux 1024 octets comptabilisés pour dd. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +128 > +donnees_hexa' < fichier\fR +.PP +Convertir de fichier depuis la position 0x100 (= 1024 - 768) du fichier. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +\-768 > +donnees_hexa' < fichier\fR +.PP +Toutefois, cette situation est peu fréquente et l'utilisation de '+' est +rarement requise. L'auteur préfère surveiller les effets de xxd avec strace(1) +ou truss(1) quand \-s est employé. +.SH EXEMPLES +Afficher la totalité du +.B fichier +sauf les trois premières lignes (0x30 octets en hexadécimal). +.br +\fI% xxd \-s 0x30 fichier\fR +.PP +afficher les trois dernières lignes (0x30 octets en hexadécimal) du +.B fichier +\. +.br +\fI% xxd \-s \-0x30 fichier\fR +.PP +.br +Afficher 120 octets convertis en continu, avec 20 octets par ligne. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd\-fr.1\fR +.br +2e54482058584420312022616ffb742031393936 +.br +22202250616765206465206d616e75656c20706f +.br +757220787864220a2e5c220a2e5c222032317374 +.br +204d617920313939360a2e5c22204d616e207061 +.br +676520617574686f723a0a2e5c2220202020546f +.br +6e79204e7567656e74203c746f6e79407363746e +.br +204e7567656e74203c746f6e79407363746e7567 +.br +2e54482058584420312022417567757374203139 +.PP +Convertir les 120 premiers octets de cette page de manuel avec 12 octets par +ligne. +.br +\fI% xxd \-l 120 \-c 12 xxd\-fr.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2261 .TH XXD 1 "a +.br +000000c: 6ffb 7420 3139 3936 2220 2250 o.t 1996" "P +.br +0000018: 6167 6520 6465 206d 616e 7565 age de manue +.br +0000024: 6c20 706f 7572 2078 7864 220a l pour xxd". +.br +0000030: 2e5c 220a 2e5c 2220 3231 7374 .\"..\" 21st +.br +000003c: 204d 6179 2031 3939 360a 2e5c May 1996..\ +.br +0000048: 2220 4d61 6e20 7061 6765 2061 " Man page a +.br +0000054: 7574 686f 723a 0a2e 5c22 2020 uthor:..\" +.br +0000060: 2020 546f 6e79 204e 7567 656e Tony Nugen +.br +000006c: 7420 3c74 6f6e 7940 7363 746e t fichier_sortie\fR +.PP +Patcher la date dans le fichier xxd.1 +.br +\fI% echo '0000037: 3574 68' | xxd \-r \- xxd\-fr.1\fR +.br +\fI% xxd \-s 0x38 \-l 13 \-c 13 xxd\-fr.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +Créer un fichier de 65537 octets tous nuls (0x00), +sauf le dernier qui vaut 'A' (0x41 en hexadécimal). +.br +\fI% echo '010000: 41' | xxd \-r \> fichier\fR +.PP +.br +Convertir le fichier de l'exemple précédent avec la fonctionnalité "autoskip". +.br +\fI% xxd \-a \-c 12 fichier\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Créer un fichier d'un octet, contenant seulement le caractère 'A'. +Les nombres après '\-r \-s' s'ajoutent au numéros de lignes trouvées dans le +fichier ; XXX in effects, les octets initiaux sont supprimés. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> fichier\fR +.PP +Utiliser xxd comme filtre dans un éditeur tel que +.B vim(1) +pour convertir une zone comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd\fR +.PP +Utiliser xxd comme filtre dans un éditeur tel que +.B vim(1) +pour récupérer une conversion binaire comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Utiliser xxd comme filtre dans un éditeur tel que +.B vim(1) +pour récupérer une ligne convertie. Placez le curseur sur la ligne et tapez : +.br +\fI!!xxd \-r\fR +.PP +Lire des caractères depuis une connexion série : +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.SH VALEURS DE RETOUR +Les erreurs suivantes sont rapportées : +.TP +0 +aucune erreur ne s'est produit. +.TP +\-1 +opération non supportée ( +.I xxd \-r \-i +reste impossible). +.TP +1 +erreur lors de l'analyse des options. +.TP +2 +problème avec le fichier d'entrée. +.TP +3 +problème avec le fichier de sortie. +.TP +4, 5 +la position spécifiée n'est pas atteignable. +.SH VOIR AUSSI +uuencode(1), uudecode(1), patch(1) +.SH AVERTISSEMENTS +L'étrangeté de cet outil reflète celle du cerveau de ses créateurs. +Utilisez cet outil à vos risques et périls. Dupliquez vos fichiers. +Surveillez l'outil. Devenez un gourou. +.SH VERSION +Cette page de manuel documente la version 1.7 de xxd. +.SH AUTEUR +(c) 1990-1997 par Juergen Weigert +.br + +.LP +"Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me." +.PP +Distribution libre en citant l'auteur, +.br +gagnez de l'argent, pensez à moi, +.br +perdez de l'argent, oubliez-moi. +.PP +Page de manuel débutée par Tony Nugent +.br + +.br +Modifications mineures par Bram Moolenaar. +Édité par Juergen Weigert. +.SH TRADUCTION +Cette page de manuel a été traduite par David Blanchet + 2004-12-24. diff --git a/runtime/spell/README.txt b/runtime/spell/README.txt new file mode 100644 index 000000000..ff56acc25 --- /dev/null +++ b/runtime/spell/README.txt @@ -0,0 +1,935 @@ +The spell files included here are in Vim's special format. You can't edit +them. See ":help spell" for more information. + + +Copyright + +The files used as input for the spell files come from the OpenOffice.org spell +files. Most of them go under the LGPL or a similar license. + +Copyright notices for specific languages follow. Note that the files for +different regions are merged, both to save space and to make it possible to +highlight words for another region different from bad words. + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +en_US + +20040623 release. +-- +This dictionary is based on a subset of the original +English wordlist created by Kevin Atkinson for Pspell +and Aspell and thus is covered by his original +LGPL license. The affix file is a heavily modified +version of the original english.aff file which was +released as part of Geoff Kuenning's Ispell and as +such is covered by his BSD license. + +Thanks to both authors for there wonderful work. + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +en_AU + +This dictionary was based on the en_GB Myspell dictionary +which in turn was initially based on a subset of the +original English wordlist created by Kevin Atkinson for +Pspell and Aspell and thus is covered by his original +LGPL licence. + +The credit for this en_AU dictionary goes to: + +Kelvin Eldridge (maintainer) +Jean Hollis Weber +David Wilson + +- Words incorrect in Australian English removed +- a list from the previously removed words with corrected spelling was added +- a list of major rivers was added +- a list of place names was added +- a list of Australian mammals was added +- a list of Aboriginal/Koori words commonly used was added + +A total of 119,267 words are now recognized +by the dictionary. + +Of course, special thanks go to the editors of the +en_GB dictionary (David Bartlett, Brian Kelk and +Andrew Brown) which provided the starting point +for this dictionary. + +The affix file is currently a duplicate of the en_AU.aff +created completely from scratch by David Bartlett and +Andrew Brown, based on the published +rules for MySpell and is also provided under the LGPL. + +If you find omissions or bugs or have new words to +add to the dictionary, please contact the en_AU +maintainer at: + + "Kelvin" + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +en_CA + +The dictionary file was created using the "final" English and Canadian SCOWL +(Spell Checker Oriented Word Lists) wordlists available at Kevin's Word Lists +Page (http://wordlist.sourceforge.net). Lists with the suffixes 10, 20, 35, +50, 65 and 65 were used. Lists with the suffixes 70, 80 and 95 were excluded. +Copyright information for SCOWL and the wordlists used in creating it is +reproduced below. + +The affix file is identical to the MySpell English (United States) affix file. +It is a heavily modified version of the original english.aff file which was +released as part of Geoff Kuenning's Ispell and as such is covered by his BSD +license. + +--- + +COPYRIGHT, SOURCES, and CREDITS from SCOWL readme file: + +The collective work is Copyright 2000 by Kevin Atkinson as well as any +of the copyrights mentioned below: + + Copyright 2000 by Kevin Atkinson + + Permission to use, copy, modify, distribute and sell these word + lists, the associated scripts, the output created from the scripts, + and its documentation for any purpose is hereby granted without fee, + provided that the above copyright notice appears in all copies and + that both that copyright notice and this permission notice appear in + supporting documentation. Kevin Atkinson makes no representations + about the suitability of this array for any purpose. It is provided + "as is" without express or implied warranty. + +Alan Beale also deserves special credit as he has, +in addition to providing the 12Dicts package and being a major +contributor to the ENABLE word list, given me an incredible amount of +feedback and created a number of special lists (those found in the +Supplement) in order to help improve the overall quality of SCOWL. + +The 10 level includes the 1000 most common English words (according to +the Moby (TM) Words II [MWords] package), a subset of the 1000 most +common words on the Internet (again, according to Moby Words II), and +frequently class 16 from Brian Kelk's "UK English Wordlist +with Frequency Classification". + +The MWords package was explicitly placed in the public domain: + + The Moby lexicon project is complete and has + been place into the public domain. Use, sell, + rework, excerpt and use in any way on any platform. + + Placing this material on internal or public servers is + also encouraged. The compiler is not aware of any + export restrictions so freely distribute world-wide. + + You can verify the public domain status by contacting + + Grady Ward + 3449 Martha Ct. + Arcata, CA 95521-4884 + + grady@netcom.com + grady@northcoast.com + +The "UK English Wordlist With Frequency Classification" is also in the +Public Domain: + + Date: Sat, 08 Jul 2000 20:27:21 +0100 + From: Brian Kelk + +> I was wondering what the copyright status of your "UK English + > Wordlist With Frequency Classification" word list as it seems to + > be lacking any copyright notice. + + There were many many sources in total, but any text marked + "copyright" was avoided. Locally-written documentation was one + source. An earlier version of the list resided in a filespace called + PUBLIC on the University mainframe, because it was considered public + domain. + + Date: Tue, 11 Jul 2000 19:31:34 +0100 + + > So are you saying your word list is also in the public domain? + + That is the intention. + +The 20 level includes frequency classes 7-15 from Brian's word list. + +The 35 level includes frequency classes 2-6 and words appearing in at +least 11 of 12 dictionaries as indicated in the 12Dicts package. All +words from the 12Dicts package have had likely inflections added via +my inflection database. + +The 12Dicts package and Supplement is in the Public Domain. + +The WordNet database, which was used in the creation of the +Inflections database, is under the following copyright: + + This software and database is being provided to you, the LICENSEE, + by Princeton University under the following license. By obtaining, + using and/or copying this software and database, you agree that you + have read, understood, and will comply with these terms and + conditions.: + + Permission to use, copy, modify and distribute this software and + database and its documentation for any purpose and without fee or + royalty is hereby granted, provided that you agree to comply with + the following copyright notice and statements, including the + disclaimer, and that the same appear on ALL copies of the software, + database and documentation, including modifications that you make + for internal use or for distribution. + + WordNet 1.6 Copyright 1997 by Princeton University. All rights + reserved. + + THIS SOFTWARE AND DATABASE IS PROVIDED "AS IS" AND PRINCETON + UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR + IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PRINCETON + UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES OF MERCHANT- + ABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE + LICENSED SOFTWARE, DATABASE OR DOCUMENTATION WILL NOT INFRINGE ANY + THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + + The name of Princeton University or Princeton may not be used in + advertising or publicity pertaining to distribution of the software + and/or database. Title to copyright in this software, database and + any associated documentation shall at all times remain with + Princeton University and LICENSEE agrees to preserve same. + +The 50 level includes Brian's frequency class 1, words words appearing +in at least 5 of 12 of the dictionaries as indicated in the 12Dicts +package, and uppercase words in at least 4 of the previous 12 +dictionaries. A decent number of proper names is also included: The +top 1000 male, female, and Last names from the 1990 Census report; a +list of names sent to me by Alan Beale; and a few names that I added +myself. Finally a small list of abbreviations not commonly found in +other word lists is included. + +The name files form the Census report is a government document which I +don't think can be copyrighted. + +The name list from Alan Beale is also derived from the linux words +list, which is derived from the DEC list. He also added a bunch of +miscellaneous names to the list, which he released to the Public Domain. + +The DEC Word list doesn't have a formal name. It is labeled as "FILE: +english.words; VERSION: DEC-SRC-92-04-05" and was put together by Jorge +Stolfi DEC Systems Research Center. The DEC Word +list has the following copyright statement: + + (NON-)COPYRIGHT STATUS + + To the best of my knowledge, all the files I used to build these + wordlists were available for public distribution and use, at least + for non-commercial purposes. I have confirmed this assumption with + the authors of the lists, whenever they were known. + + Therefore, it is safe to assume that the wordlists in this package + can also be freely copied, distributed, modified, and used for + personal, educational, and research purposes. (Use of these files in + commercial products may require written permission from DEC and/or + the authors of the original lists.) + + Whenever you distribute any of these wordlists, please distribute + also the accompanying README file. If you distribute a modified + copy of one of these wordlists, please include the original README + file with a note explaining your modifications. Your users will + surely appreciate that. + + (NO-)WARRANTY DISCLAIMER + + These files, like the original wordlists on which they are based, + are still very incomplete, uneven, and inconsitent, and probably + contain many errors. They are offered "as is" without any warranty + of correctness or fitness for any particular purpose. Neither I nor + my employer can be held responsible for any losses or damages that + may result from their use. + +However since this Word List is used in the linux.words package which +the author claims is free of any copyright I assume it is OK to use +for most purposes. If you want to use this in a commercial project +and this concerns you the information from the DEC word list can +easily be removed without much sacrifice in quality as only the name +lists were used. + +The file special-jargon.50 uses common.lst and word.lst from the +"Unofficial Jargon File Word Lists" which is derived from "The Jargon +File". All of which is in the Public Domain. This file also contain +a few extra UNIX terms which are found in the file "unix-terms" in the +special/ directory. + +The 60 level includes Brian's frequency class 0 and all words +appearing in at least 2 of the 12 dictionaries as indicated by the +12Dicts package. A large number of names are also included: The 4,946 +female names and 3,897 male names from the MWords package and the +files "computer.names", "misc.names", and "org.names" from the DEC +package. + +The 65 level includes words found in the Ispell "medium" word list. +The Ispell word lists are under the same copyright of Ispell itself +which is: + + Copyright 1993, Geoff Kuenning, Granada Hills, CA + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. All modifications to the source code must be clearly marked as + such. Binary redistributions based on modified source code + must be clearly marked as modified versions in the documentation + and/or other materials provided with the distribution. + 4. All advertising materials mentioning features or use of this software + must display the following acknowledgment: + This product includes software developed by Geoff Kuenning and + other unpaid contributors. + 5. The name of Geoff Kuenning may not be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS + IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GEOFF + KUENNING OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +The 70 level includes the 74,550 common dictionary words and the 21,986 names +list from the MWords package. The common dictionary words, like those +from the 12Dicts package, have had all likely inflections added. + +The 80 level includes the ENABLE word list, all the lists in the +ENABLE supplement package (except for ABLE), the "UK Advanced Cryptics +Dictionary" (UKACD), the list of signature words in from YAWL package, +and the 10,196 places list from the MWords package. + +The ENABLE package, mainted by M\Cooper , +is in the Public Domain: + + The ENABLE master word list, WORD.LST, is herewith formally released + into the Public Domain. Anyone is free to use it or distribute it in + any manner they see fit. No fee or registration is required for its + use nor are "contributions" solicited (if you feel you absolutely + must contribute something for your own peace of mind, the authors of + the ENABLE list ask that you make a donation on their behalf to your + favorite charity). This word list is our gift to the Scrabble + community, as an alternate to "official" word lists. Game designers + may feel free to incorporate the WORD.LST into their games. Please + mention the source and credit us as originators of the list. Note + that if you, as a game designer, use the WORD.LST in your product, + you may still copyright and protect your product, but you may *not* + legally copyright or in any way restrict redistribution of the + WORD.LST portion of your product. This *may* under law restrict your + rights to restrict your users' rights, but that is only fair. + +UKACD, by J Ross Beresford , is under the +following copyright: + + Copyright (c) J Ross Beresford 1993-1999. All Rights Reserved. + + The following restriction is placed on the use of this publication: + if The UK Advanced Cryptics Dictionary is used in a software package + or redistributed in any form, the copyright notice must be + prominently displayed and the text of this document must be included + verbatim. + + There are no other restrictions: I would like to see the list + distributed as widely as possible. + +The 95 level includes the 354,984 single words and 256,772 compound +words from the MWords package, ABLE.LST from the ENABLE Supplement, +and some additional words found in my part-of-speech database that +were not found anywhere else. + +Accent information was taken from UKACD. + +My VARCON package was used to create the American, British, and +Canadian word list. + +Since the original word lists used used in the +VARCON package came from the Ispell distribution they are under the +Ispell copyright. + +The variant word lists were created from a list of variants found in +the 12dicts supplement package as well as a list of variants I created +myself. + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +en_GB + +This dictionary was initially based on a subset of the +original English wordlist created by Kevin Atkinson for +Pspell and Aspell and thus is covered by his original +LGPL licence. + +It has been extensively updated by David Bartlett, Brian Kelk +and Andrew Brown: +- numerous Americanism have been removed +- numerous American spellings have been corrected +- missing words have been added +- many errors have been corrected +- compound hyphenated words have been added where appropriate + +Valuable inputs to this process were received from many other +people - far too numerous to name. Serious thanks to you all +for your greatly appreciated help. + +This word list is intended to be a good representation of +current modern British English and thus it should be a good +basis for Commonwealth English in most countries of the world +outside North America. + +The affix file has been created completely from scratch +by David Bartlett and Andrew Brown, based on the published +rules for MySpell and is also provided under the LGPL. + +In creating the affix rules an attempt has been made to +reproduce the most general rules for English word +formation, rather than merely use it as a means to +compress the size of the dictionary. It is hoped that this +will facilitate future localisation to other variants of +English. + +Please let David Bartlett know of any +errors that you find. + +The current release is R 1.14, 15/12/02 or later + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +en_NZ + +I. Copyright +II. Copying (Licence) +---------------------------- + +I. Copyright + +NZ English Dictionary v0.9 beta - Build 06SEP03 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +NB This is an initial version, please check: +http://lingucomponent.openoffice.org/download_dictionary.html +or +http://www.girlza.com/dictionary/download.html +for a final version, after a little while (no hurry). + +This dictionary is based on the en_GB Myspell dictionary +which in turn was initially based on a subset of the +original English wordlist created by Kevin Atkinson for +Pspell and Aspell and thus is covered by his original +LGPL licence. + + +Introduction +~~~~~~~~~~~~ +en_NZ.dic has been altered to include New Zealand places, +including major cities and towns, and major suburbs. It +also contains NZ words, organisations and expressions. + +en_NZ.aff has had a few REPlace strings added, but is +basically unchanged. + + +Acknowledgements +~~~~~~~~~~~~~~~~ +Thanks must go to the original creators of the British +dictionary, David Bartlett, Brian Kelk and Andrew Brown. + +I wouldn't have started this without seeing the Australian +dictionary, thanks Kelvin Eldridge, Jean Hollis Weber and +David Wilson. + +And thank you to all who've contributed to OpenOffice.org. + + +License +~~~~~~~ +This dictionary is covered by the GNU Lesser General Public +License, viewable at http://www.gnu.org/copyleft/lesser.html + + +Issues +~~~~~~ +Many of the proper nouns already in the dictionary do not have +an affix for 's. +All my new words start after the z's of the original dictionary. + + +Contact +~~~~~~~ +Contact Tristan Burtenshaw (hooty@slingshot.co.nz) with any words, +places or other suggestions for the dictionary. + + + +II. Copying + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/runtime/spell/en.utf-8.spl b/runtime/spell/en.utf-8.spl new file mode 100644 index 0000000000000000000000000000000000000000..88bddbdafd0d1164e2a6ffd89e360da95ba9ec95 GIT binary patch literal 1196398 zcmb5XUyS5gcIWl`9}$^VUD;EUnbA?5@Ic2@Bi=q?mhSX`JO-bm%sW8+uQka`IA4@-fgFMm(#0@)th2mjLV`d zs?A(~X7+QplD+zJt-sa6c5gRpJv>`%^>;J>lI`1Xvwk(-$bojZnXc@T%k@$(xm@d+ z>e8NYxxUfEH}<4zp}W<>E?Ve4&1$`}=igf6>h;}D?&|JVv-w6(wYpjUp!y#1y}ThxoymEIs51qZ6#H9zHjvzYI$<%)(A@&!CIY!%JTe5LQN zKG1Kg=F%(W{a|r9-7U1I%6V-YMYEc3_5S;I5jKlTdq>-%-&xw<@G!fYc5bCX^?bYQ zTcle>Wk2=e)m%>SrdRr@^<2BUydQ>k=!0nX+J>N7-pdEo^NqcMPt+}jT;JSr+fuJ7 z@7?w^Z5M-GyrvlPt^Eyr&|nky%DKBGeRcOHc0l(kZSKV_~<%gEFjK3UBjGuH&zpWVZlaA?E7DIm0 zu`9cmpLFbn9pfh*o7pjb(ye&Vp&o-ELw!x&c4W^uJ zFyU;2>1G>DHrrsT*#;BMHkf9%!6dT{rkHG0i+OX;rtq`o#dVl_~IDJtwjxo-Nv`Y!{vWY?-6|DFkdUa9~9ycy{e}Ynw3TZWGUUH)(U( zZ&veVcef1J!*%-O!hoVAOLubkHXN>A&buh>s@c4W4}r;POR9@>bvcXYFXAJLYHBLM zF8toXVHZ?)H~p321SDWr%)^P22f@Nbz80PQm2OoIrXrW#><$cj?%Wciu z^zW?P(i7aat+;CoGmztQ&o<1^A)hNv~8YM?35~X-U7;Ul$%( zh}fH>3(CXnXI6;h<1uoMZs!~iupd2Vx7MO5slrk;^G%p4C`KEd@@OqG#CrTk7eh1PAOT3phU^1lDA(WLc2GY?x+ zJ5_`;XlHhUajH?YMXua!`)ihV_uTfGhGAoi91W-9{i=Mv(4zlPUHn zxI#E_;qEAB@rLpuJxIvb44hKT9P}QwcA8+)6xAEuuU^@YsJIaO)_ykjb89~<`?;~7 zm-cgIKQHWOWX*ENxhz?X0HHsS(zu!ZBW5(-V>C|qh!l~P( z*JIg93M?O(G)=~DJ`0u`9MLv~4fb2;n$|ZkynYLr5RRd7hAni?u!Ytcw$MAn79S9{ zXnfd0`wUy?pJ59PG;E=R+EyKYyZKBdvQYnkmWG{TKwINBt&Q8XH*VA7xJ{emHm#1^ zv^#Fo^0-ag<2J32+q6G!^96C6Z;0D`MZevqEzBzYHZhj_ZFGj!m3?t1BONwnm~|6n zuoGp_ZbZ`dmx%QxL?jX|Y$6`wme?7S0hvP@&!ea-bKj~!V3;Ri3!4!g0nX!kePzJijLXE6}YkTdIt;8g% zsAwi;!7)`}nL0Yd!?Mh**ytm(n!=q1XZxt;XW$M;`vu6pS zImIhcC_@i30R3h>UE2|n+Y06gDx*A#;j%+bF<5N1mx^K7KvQ45=?~e443G4-T`5!D zw$NnyYvrK3c-w_*w}bxDZD;4p?I2yq$Mlb7Gd@=j+f{lv-2ngSn=y}<%faw)4yKEd zDI-z*^lR8Th&!V7$*J%TJC$xMhUj_L2cv##D+le8f`jqmPWADP=;NZabn*k`ilQn9 zRkiEnN2t6rJseHYE|*zodYkItdR*?1E!D8)p-YB9 z6maeh7jS*JK%NjT=pQ08fQwbL=B!|KdaoSk8aXa^$?F&N5 z$syfTnhjTKcgij0eY#e*{l)aGUP5Qu@34PrxplZvV?8RDSOPnN#aM@r|} zM!LF$5M47u_vrOuTW?|eQ2I4|UD$OuYR}2TwX1aFKxj8~4BP4AvKT?#ujWBMl=p|A zpzZ)HAf7A^Ovmi6o#(eQ@bOYUMHSC*DJ<|Hdn^X`P!!DgC}vdL!|=}TE@#=b7uiXf zi}6nM5ZMbXa}+)$@Y4Q-s3hqsv=Fz`_7}lO^aJ!>nm@GW+wN@MN#pG`f`Nu@8t(2Y zXYQ&CcS0yR+yQd{f>ya1x2FA;5WbyNS!bI_tyYn0)e*y`m45hoHC^g(%7!!!0cd?7 z2l}CnCt*o?$3TDddLBMBjd{9c`=H;}lh$u~ixNV75W;b28noQCJm|Nr3EIJOEi^$_ z$Ge2T*kRWI;oo+ROa^x~1VeAi^+r1JG5y%+sX%7&B)qGC8e|d=hjG$djMm~Q9W>cf zqDzN${PehzUw;DDf*~lHO;Jz7?^=Ix1PShBJEF3LExZ?|2!-oam#}lF5dB5L5&%+> zPUJ1G`i)(`vF$fD{l;y-vFbN&`i*73@v`5z>Nj5W8?$}`J|Qoy=DkHCy3O*wkpIee z|Fhz6-%pGB>9GFW|KP);^38>9|LV^k6@TaI_O@uA4x7L8Z+!jh<6?SPmY0+AX>(RS zE!(21>f*~cUp}hZ;>$0;JpJ-f`9(;y8x&t!&Y2F|gRUw**tX^L-KLsyQ+0VgU!9g` zMX4vws?F@xbo25^`a`Z9j>_V=dA(k~cv>FOTsd|$cs1YFM|hG>d86If*4KAi_ndn1 za_Y~nSI0cE(U-qk>@KfQ%W=4MTwWYv1Qq9P^|Wa#cULvN;32$L+jdl6zAT%&ZERad z+fM2iyRyET&X?{!)GfDHFW0MiylEgGRIg_1)gi!9(H6(m;E;Y}>#+Djaoi3L8#`Wn zcRZMH-tBv0fNH#ZS^|e~`h)G^A4D94c<)K^-SV89?Y)P^N!!k6?^R`0(kJrP*m!$Jz5AS(&few5x83F6yjw3e@u51z z)x|UpP(63O*KF&m-Rtw_KHl8AOIz*Qg*(#tC)MlpArEeAcj@(;x^3pK>b6@|onA3mkGtMXvWUQv!Popj@X;TA%E^t5~y2C%;W z%!Ypd_vK>d#?$7wJ{r{@{_M{c<#&{JVT>7ViS(PNX3>yg+ADsn6}B5ms9rOgvFnr) zG47_zQN;(H*LRn@QJ~3=+v0^I>DO+(H)72)_EK&8AtHuXT7dN5tqZM|cD z9T)$0@p95A<%6Zp>Q;N3qC#$&T-^cEHsdlrP(fBh1LEuL%8vSaTK-m9vnD~r>5bp-<(RMofUmo_FH zjT0VrBqP&yjL>=Uz42SfNR&bSWaUa{(nBX_^_?jpPs>S|9olp408ztx2h&vX!NBu7F&h z0lKo?)n&b2Gb!#wH;G+oOz-AdBcxNU=2w4>Y20l5aIH5t)1?f5niqb|4xzo%YW+ms zQ$KBvYUFV*GMSuZJxkQx_Wjl>Nl$7Fkn128PKr+uR9zHQC&iB=s%+2^AjKyltkN*N zRazcDbp zJkLG%xme3+wpW`qmzLGWYd_89l)!+^G|jt8Uwa0_JsgIq^cCX=+(diE zn8tj1nawF>{w)radNI3-Tok=XRI0!&+JP!4N}lo#?cV2y+q&`mxmSAhEP@_lWEM|n zWux=do(6p}<%|ynT1$K7H^-Uig_FfkQh8e6-R>A{xMU^$eFX80m2=i|toXCBdWhpa z#wV+-Ft0!oD691)+%#S@2o!Pxw6mSY!^&!gP>M7t9@Wlj)~i{V-^ax#^pnkJp<`yZ zpU?Gtv4lIQ!m0!k=)LWP+8Zw;O|MX0OL!(T7MNN&c0WfD5VWJNM*Z34{iHhVcZBq- z>apLQZ^zO}`u5^{B6pYh4dZU^XhyUErkP_XM(=}7JwdBW62KZ4Cfy@>vyfJcH)MCc z_q=+&yi>&&0ayGC!!|@JJz?NP22F||lUYmug|o#E$4aTOzlDFDoDDa1CBq;TH91J^ za=5*TSL(=&lCEl^5YKSWopXA26LfRo2e9c(chz1iJ0`mI-|rQl6#qwAmp?zj&!Ot- z^P!44beAOSr4^^c)Cwiq0UW*wf>x(vDXI(~!-%TJ``qFt(uB6g4`Ea-rv82G`Fb~9 ztm2SJN6+Nx<$3v2jI#BcOwePdC}$YwQRqv(uJ|*#ay*>Rc=7jCu4o&jZE;ksQKK|k zBADV?lLCi))p7Ba$swd0d+M~un*i&N!QNxB5BuDTmc>TgX4E#_{fMH?-tR$MFc z2?t3!-uviyzh3?(f^7g6(QA3{qvy54ySvt@8SPe%FsxU4Misj6jR%2B24Ms|aY#?2 zaPD-fVjZBm{P!qy6-M)MtC3H!XH6KH-OwfWJG@ zD_kvUPulRa!KFN6Xv$%GfUShj){&f?J=|U|ZtJry&3k#tDVkkXoECpRX{_zRpnxel z_(SB%Nqu{_yj(}Mpx)eV2UWd&+DxiTX&e*s%aeLOny;^3pa2#fJ~*y9 zAMWXr&c>%zBc^P8X@mS81UB$d@k#mf>3aO= zUVHrU)4HsHq?C`fkKJG{=fa)oqOv%mV_-3f?FC&RFqeDz6tO_#hX)2%;!ZJcV~;m> zqwF8dLdfO394_xg2}&|aS-Y{@kxZm|{15|h3{IGY2$&PT+4|+A_(#S6U7nQxjR~5v z08ugbgi?m!8P#KC6gJT5+2h#e$I>6wa4FDBqk29v({J{F=pbhGX-uy{Fr)IK)x zAI+rpcDlkqmuYa2`hL`_^V;)rCj_%is*TNt;XU16GjylLPZz(*AP~L4-cz_CQ4$a4 z6o#=gei8b)X?$RmGvctH5N8wP1Hf(SS)z@qu9Vqu2dL2};3$F<)Z?~Q$SoSK-E|`5k1>0fY z&-&c<(H10k<#`GnXcU`Z?s-|5;` z^xmpLw!}d;<0wkQ8e{ctxfA$nPb5B=AP1fgG&gsObNPAoP1TzAC21zJ4#Mnt1j9Ij zO4Q=fp0F`^AV@_kPE&q}Q$Uz?M`J6|kgK7wZ?M?qJww}6Z!>xbVKA*Sq8oO%Sx8Q8 zG*!0QPM2|H72bV|IibBPjx@kQVIAzQr>pp9yj0*3D(DeWgom3Z(zc^{>tfIv^8egbdYqMER zJw(|86(0#6>Tcqgdm^#Cnw%qZsT0w5+B>yAg3BeEs%lhW z!y?jKegGCu#|A+1Bqow{;$dtfU{5vJ@Dk}yn|!zR`HVk33c^ z5?;x!lISIEpWqbs3?@98k zfwCkX4Cqh-{s~rz&uQ+KSlT7dq0E$kDD0}ISSCVP@ zljD9r3}JJqVKIlw7I2C&?9U!C7s^B7-7;Ry6B#cZg6D4)qI#-)hfWlwrmU8C;=H}V zrECOk-K9gkG6h9C9@FV8^=7qR-tSMYdPSz`U51`69$d3Y!quFP+nv9ozS}b3yzW>u zNhLq@Nz^W-3bDdsk3(MYCoc!9Z{Gop>|nL%A0m1&;k-)!NWSTj*ln^A1Q1!0+snvf zMqHl^2o>>X2WoD&n#WdlP8^O0(uZN*4`eo#h0UHcW8@PCG6gtgw9f_s&b>-&gP{|x zJVfpn&x71&u00K zikOsW-}+VIAwj!|x7ha$oEW8Hr}Y}C5Zl_D_QD7L)#67$wQ9VNOhSwv5J|JTPk^C* zR&#s3zHs<~fk10KIPoPT$8n`YPa48QCHyE}p-^#s_p!UMzF*>iM}RpwiVTy!t#(2= zJuLgI#J$wkL3u()9M|!=HOwJsk;Sv7eug9%9R%vGYCmgkDHmc=WVZuG|GoT*{Ui34?@8HfIuK@24(^}HV?_!DRq^z_ zAq)b|!|thFNI;X!*R~CeT{fyhd%hKN(gsaPtaQkO(EkaTlMrJwXq!MWHF|dtqJL0c zA(G9@OS(sziV6>e0Ok1jRzL~b2O1DDcML{(K3;wTuWJpa0T)dVa6ZsRYo+xn#f~H3qiZyUkqYAtu`;CPddK%K5nbzU#&bRs2$^0AxqG`d~HqW7P?G;Bo~{6J(A1d z)ztdtv2>0+UKQPj_z{bA0WY3j+z+b8tHpVAiq}q?tXaT*2PT*C1$DQ>VdXC-f zMxwd|%$~W=`eY)8k$t2=8Y&N}ruY&m5fj^~WoMF0fSWBIgZat&txFMuyh2WL)*Op|UmMcTWP8%J8NxB;um%J+voK9uXJuwLymy z8GF+7DOdFX*rl!%a{-Lh+4w{yNKyKr2l@8lMwoXuQi?Hdt^%yT-Xu=>WIR}3ZKk)` z9K5?sHn^CzcK*6%>91?EQ|r|gjuA&T*`;^$#K*)*nFdw{r&%v% zN}%|YYWR-`bg>NoOe0T{pYCn^y2hM%JA?xpMlcgLBpap_giW5Eyw^JA%SR%#p+((0 zdt~>Xj1{pdA0hCYe6WZWaUBSZrJ` zaXr6dKK&1UoKAk}8uh5YU2j!*0}tRGy?iOM>L7{2`ul&3Bcu8j_`&oN=S7kYrm~px zl<2#~tKhjxG-DxE=Qu@p=A>RPRz1Gef&9WXbr9R;Zj(Il79=BcQ~aPYJVyJ;)QS2I zlfUOwsM&&8T3DXJ`rj=7R8jC=&yjGu419b5E*=7Y5ji4ZFtBHMoeU8k^|Qp+Ae^^L zzd$p`qSit|5w_Z@P0|Zuji^Szs@~gkQawn7o~Vm_pQyp#1z?X+Wg-wYuq^ln@rhy4 zqF`IMDTjZS5Ta*8h`%G(qkd0oWkgy$kT);_tyl4y9a>1dM9H-x@p3C%D!761Cwanh zoS|M^NWqS}s{G`t9h`vNB>HKE#s?tYOTOPOzro1Zw+fC=_6HwZ9z-RT*hu{Cj{=aY z!^z+sdNuWt%0^6g=W122>fvVbab(yGm)Jp-P~MT!-}lDqJA7J3{B$UgXR_?oc+CO| z&(qmY^kVJ?|D(4+q6ZR>qlFbh0OD-~pat+} z=zGg?)DLK*L?(nI0R;cJ_2@h{4<{A~h61$N?t=^1#}@dKq8P2Tj&L!bBaAgLdrn(@WKPNT))BeQk-jJly4zfRj2`w(VFE$t3lE) zC6+VwQm}Hvd}!4yJj-?AR-Y&r9^p_{&AJygy#VFt$=Lu((3sftbmiG-pv=V-`$FW4 z`{wp7^q=V(K0ro7V|W*_;hxuvk=OJ3?AFfQS-l5M3CNmM-HH{rnR}s!2wd`T$zaj3 zJwr<@A4JWL5)CQc)r%=ZcGk8@+Oii3Y3}75O)`KpSq64p8WfUTaR%EA>Cd(4a zpYG$_C5>l|@2^t7)?X(iQ)YEn*YA+b4R2X9-jtf0g{-?x%>=K&U z0eg#v_nF~yI)>Ef(#)$5e||R~SLOkXUUWhS{`9W}GzcRmlvzg(O)O!Oi z8>LEpLwxfCjYQn|v4b=LAPWZttY>YPCJ~Mtb)B3U&Z~S>CnNEC5v-1$-@ZM@m|{Pg4Ggpu@FdfD`iK-uw-7lf z&64X5Jbeb z)tR5oc{&My34xeKNo4MbKMbO@_a0cL9xlz1O_z+qLZFJ%WTfAsu7y^~#|ir-T-m7{ z=7P=a<31}q4nrFZxYJg&gVQl-Y5fOIfSovY)F{&YENE}hXb`3Wq}(SB{EGSa%3nYS z-*?k?Gw1}~NHB`hI{3V3R%cz32dez-Y0dgYnf^wq6<;Y5nfN%R{=q$DgbU>|Gi~LV zgeHVphxL~@()$SF-lzP&hUPyNYt6{J-r+fVlX|BPY@0yv__RrK8)WVJQ>c<~*ht@vsjvo#{LSJo#oMTqWv-@Ca5{Qdk2;;j4H+3hBftYW zB@kd)JegEG5TI)bMT^lkl*(DIukIP2pD6zcb3fv>61Mph#h;h|WL&-wrEDQ)5!u_D z{00gjp_OZs9+5!(-;!{C;&i`GYM0d%N;ARe28#}uwh}=u@EKbPKVwtzGvj&tF;0~L zXh6fObLNvT{z6ttq+H7u+9Hun?R`Ea4>Hm?rDWm4h+pv$r73J4OaTbHj z8Rmy_iBOIybjJjv2p2m?)QFda`U7gERn5l%2s^2Xp4$&)C$`3W3w{HZ5{X6gsAE@{ z{u`9X<}OPqQC>5!q}Y&HdWL0?(yTsG>|6R2OWGXAw6U7Bl+Z?C#qaFlf;|8%#vKy< zAZiqzVTm!CCV();woBa*H|@_xe7%A@`$}-sDcY;+orIR9QSWogj;pI{OCC@XLL-&_ z?gX_|71XTuh3pSRCDr`_VKK?Fquw9mHk~Qo=Q}^xnmIUM&T3}=oERQz#!8-@1V!#Z zus|o)Y;#Hr3UD_SLec6L{M}uz?`W+tUsNCpNmm;jN1T)>GD=@vgM?kC(9Uj^H?Da( zrRuxzNR{FM&-0C3q4}QL{CZtBs(z~v(XMKMJ9fzM0qowg9^rg=x+)^Re;jqeRA3Q? zc%vQVGU%R=2T zxu`eGaqiS@+mwgPQ63_jcC9{{qwU3Fv%8j|^IAHoA)@c|{gJ{o9HNy6$RQhY!vR`r zP&#ZJvAtTZU&q@`;A*SVg~4&TT)aqjuT=72a7pynMtLD2jark;*{;_6VYPrRNz8QD z(^rb557w8dZitc=l9N8)Z$W326C10tt$j`UY`jtd%;S2rt=~t@PRHNZK6rn)Oow82 zsP`C`SBb7j>+w(p=qw}*Ro~2SSTP{U=-Vkda!v3F(2`0>WqLK;pcFAzG@7Xf!F=P? zMBP0}~~#N7~YK zXaXU5Q=eubJ}5$QfF>r>fgdd|FlKy(R|HphZ`1^apkHdJs7Ti!XJwT7r1SJjor_st8b%;k(qG1Qn9aqd71 zD;*OC-!0APP=%x41&0vVcGWc! zb3}M90Q&>Gm8o3HD^(lfmHMl!>sg8nMt#6tF0DFiwZLrNNo28d+eky3DDfiKjYC3e zbHGdMn2l;2GbExu2+1N?6Wt+nX8DtvWS}@vJ5)zOTi+vgPFp8-h}ni`RD|s+f&UQ4 zqSTv^jLy75huX#B{lUeE-QcK#`TR{(Wk*>kYCYbelqFXXPOYQz`7ufjDO0zxbIgl{ z+sd<>dM=e<7AnT;_3N_A(A#ErJskjzO!0}c#*4qPQJJg)IAd7^D|=p-bH3M!k1pUu z?n2VG^QU9M*)@pwc9U$v&B6H(9@IF*!1Jgn%Nk4P&mDakTOQEFrAFxs&|+J=w8 zjO=>rN*q3PDL}TnQT#vJ&k(DeY#OnXPK!Upww9rn;bpH}JANZt-d>QWw)Q}SG3)Kl zyGf+nNId}{NP?&VFVcj9haX(e>!yiny?A)OOMZ{=KkOy(eabvnM~NK5pBG|rRguIQ%nM44)-7?m=K-ku?xPHr`JYQWWYKHXei7Y9#A2OnPj(%g0lzWI&_ z!6Ts?Ke&sFI|{V>7Kk)IX;{a{U)NfWji6;;3D)|f9^f$cCPBKevLr!GtvO^Ih>|QX zVicXW-<0s?_SUJFFk#=aHHFQ98w{bFND>kY1aUyDsG&M3De24!`bi$GdQZ|)Xk`Gm`T#bXVuNr$In1i)0xD3`GeK^K3={-i}Vkz?lz0f zf(U_y#+&sPnnatK@f2ds(#SMU$&&6Oq?Xze-~as^ijd((k)642Z!5u@W^)whn_H)K zHEL1#h%-y{_E$^Fb6Z`l=8J52HggzYoE^d4?`m9C5}|4)-*@=}+m^|eg~Zi+kxN-+ zrz~2{InvOs+*mXWO>BpPPK~cWRxchHIypIK$TW;lnz+6515@Aoz3K)@V;}YjYrFin z=#km*ggwb_oQ*&Gdwi!;p3r@exSoSk1w-8w%0A!U6dRerCudds>|H&}-Iw)tIrn|k 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�_khu$|vr`|HecQNXi(#6a@pKlXj{X2I zQ+qju5+el7o{1^vB_(1?y#&*Gh^s`MMgK5|04i;?YI#DtuG-)npR{ZEq!*k;b&KSW znO^?0AtPZ6i+-DD@rNPVjjGG`OQU~=xiI;3L{te=G+v8eryEjHYg}m4?A=$Tx*^MU z(6=WX9Xh;ADB3L-PD<^)+dV9idK4FD^8!$)*#kh6rej9we(;BN%!Y!r5RF#0x228< zx`|+q*ToAOVeX3rAV$W?^#FUWVjDW0XlKBf>?nz zBxy$1Dx!(B$DRhG#|n`5q{M5n4xfl?*FR(dz=cN~w!H#jJEB*BFqCV{>BxFnbJV?j zYEokd7!Y3QIdq>kjM5X7t2n(|#kNHTI zwn)?t{axSbHZE+jOVehGU~*slPMLC&78I zZZy-jg{o@uwr(mF0u1zr?^!ZX|w20biG+E^;$YrnTjnC)-Ax`xfz z5Nd2t!`exi2w`Zi1!qL_k&Acil8O6VO?3lKq$hPVWUA3VXXDM>LF&$y;8pW!*$wWg zCDe)iBL7xsljE?_qMmII1a~UXZPWuwSI<&3lKHni{19Vie#wp;uF&=BhyQb6b24BL zoes(?4;ju`gSb|15{{ORkF5|I`LGe(&lqR#R?yR-oi>XHyi6CeBvie6)^}9e;!Wye zeClES;Hcl_881-(dLX_R=#PKW0E*9TDvpaLxF7%GgZMLCf|t}OZ&4az{9Sa#wml-) zq?4NMvsBsmZ_jt$!ENH3VglQ%qCms#5QFWHew$CJku_;tfZNW|scEG!$YMW|$I2O! z>kiv&L}}=9@W}>6Kys<=EGg1Kg%;Oh;85CI#+`-;*vq?rasHG)}N}HWt zitbK{jEAK1kVhF-2hhb_T1va`&)qrb-~X^mF0rVg^MiirI4}yo2@8tgm;_gqdAj>! zWi32Akg8%H<}fZ}2?tsb@AP*zwh%WV!-P#mbX`v2?s+cOCe!XfQ}f0KJS#>46ls1| z^dZkMZ@x<6NRtQR(nGp1MC7o=H-`8M2Sya z0+-p|jW-}h&+B}z8-+a(Dd%Ml&e=A|e<`qm#iiDiVP!5+8`D0A5ZHui# zdt@VgvUAyn`lZ}gsU{0YabkwQ_6b#cv(P& ztm%1g{M480W*`ZjT?$;R(I_NH)H>`g+MYpPz8S%FjRS1{zlTe)(bdv_R-%9hO8(%W ze_?9W^c*ViriV{Q_c2jyYCYy9DjY%oP);ZqirZ2M+fgWfQreW1r>hiN_@j@-ULvTzva6{fTWl?$-Lrd-%Q88Dbk9Rc; zdB-`X3gXa;gd=l8T@A$R;7hBQh`;ge?I{C7qgRM0nLM1pS$&f4 z^aXP`<^EEN)2^5~K6DNCQ`rc>RN{z#n)0~)O*J``QZQXI!{fkt8MA8xQHR#8kdeHQ zepdc5F5TUd`pB&gp)f@)bpaLD2#oxsf(9ke>>kkp946&g4#>%S$q9Qp+YP&;3x%J6 zJlD>+m%2*ql6#&vh0(t1kQ=sg@II0+6I~97hvH#^lqt);;WDzBUJXuytkf#IdXjfM2z~7lYm+B)4=-J9- zZcF}fh;B0BApw+~8P`l!%tJvlt2HlwX}f1Q;O;%W&kUDo;0a<6Q>nUIN9$*zRRwj6ySSQ0?A2A*~6sFu2S zi&{-O|HojlhN_cCfP+F-Hn^%fl_2)esB&yk*fC!efi8w!ajxv1?Mq=JxO@s#Aa*q) z3*X?93M(lV1ut#HEhlNeqCdnOHLi#67rzmHa1dVqr?@SM-WqSDkOgS7#F>;fpwXtxl zsK?rcq@C@bDW5#krKv;p;z!h7eaEKHw*b}KC++!@I8@rS4D;O|idg$go_fV3Wz{P7krZPCD{BD)gGocyJslR;|l=M-r8wv=Pt6f)!DK>w^J-RP}Z}O za#q*#0rSf)XHz$WBY^k4$+DCaCc zc_JY&wjGA;pu6WU-OqfNhP1vaQNYB6WjIPCmlLU?a$qf|T zzrA-mANK7)8I`=Fqf5@!qv;XSvG3XOOP#iaDr~GPmS) zg*B2E$1|b3fTuL+sC@1%|H%_oIjP#++20GFQFCVJd`+=*)pn>1@tG2 zV^bnO{2%P!AlLIA!&R0Pe|ApT5hGtQo1J-7%q5(O-Xt4`l>1SR_HvQ(=YCFQioDS* zvSWdRgn8e`g&c~LqZkCY%xYfDI*h4NR!W$>U9MuJ*li1CSk(Tk>Oyq~X9K5a$q)N$ zDzTR}2sA&rGcem4g|LcUD@3$ig;BKO)J@?<0ossBJ&Y(N|3(!kPDmL}N;o&gN68C{k^A zQ~E1ZFDx>dk{=B5pG+JnKX`nKnA_%d8k^3+%$kCtUy!~oLg{-ITRhB{8>NW^LwA$d zixtAiIj~Q7*pf*%DkTcpukV)>^1$Vpu+u^B4!KA_`?d=pAF@Qd+=hU?TXAkO{a%$X zs#GLSS6J_A!gmY&1rExvMp`$c#H9;#zFSnI7VkAwMFs@2$x0qXI*gJfn2}wy>$vw} zE_c7HX9}bb{hAYdUzvXZzgomEMvKu6zG+H5pd76}O-1iAH4O1jY+~-6$jKdSPjt0S zSQtSQ9+|;0>LHK|wc3BCU$oh2D# z8BPwX^MrCE#OLV6(VX0gTyecwv5`onu8E5}f+)$vev*)1wYWBaIke2CikSpe{=r~Y6z zoi;Rym7hACN}XmW$DrfWnVSE?t9{7W(spRsn2Ge7Jz1xozxOId7oSB*RDhm#ztd@T z-D$k;^pVTF?sx0~?80@Hn#<%A@3gu*&ocmn-_G8Ne$gE>5i0VeG{?D~sO!m&jc4n_ zGgm(`i8tE7K{BHe?kGNGbs+0`eh7GrHnYB+ikQ~&rLwN1rqJ;zVKp<Q1w3oI(j}AUqqokOX(VL1^ya`L7~7KG4L$DvJ+*;OKGd? zld+7wdMvpKG>esea!}gu>W!pwRQHjrH!sb=*fpjvbwKT(Qr5z*?a!IX#JBp%r6z0Z zh0xI=Ms&LDc+})!#aWQ9ml#7@ z>W`mwNjm7V3R2n8G3TPE$oJ?EMnh$O#XohC^@MfU=40)EoM6#wamBjlkE(ek{8@dF z7_MsL-Kpy4)%WVom9x-BhNNqOm^~DKrwh0>$J?wz8@mNneo{2vv9fFx8Xl|KU`2mq z(k*NHbL=_NisZd9DBGUgDOQacfkr5)VGuess`TR3&zo2IWoZf$7L5*Ha=OUt7;Q2+ z9)%bBG7rNQFCP)^<{Qu|a5d(=@~NK;pbue;I}?{@YRhnzIup@7E!Jx&Lcz2NHEs}u z=>DdLbkh}<^RX_V{n4LN=d>wY0psfL3%5{=1dRoRU~k!qT=4B4R)T!zzv~>#v3BpU zKi7b5S5aWM$5WfSwOi!TPSNg)iC^O>=;tz$u{aW*9GZmYk;#35Np81=PPUj_ElCNd za1^3iSP5K%AcG;DPGL`5+?S28n|u*^yLHin?yG!?x< zudTM1C^U`!9#Y9MR`F3wSuIqy*jX;a;`Zk#-?-YSW7DW6#Mbr;{b-1_X_aXvVp@2e zJcE5GPOoDmZM4*|URjB>D}8L#G(IcsZtEphne)|A6jkO(lo2<&n`j0`pHWx_-0x`+bp|2RlUZiMI`Wt zW1MY@%kS9azz_PVV?(gc>9Rttx6~H`?W(Ex$sK1+{Z8kL^HM={?a#mrp0`Y9bx80L zthqc5R-A}XM*BUPC)h}!ct{4WId5`H)$23KbduZf;>rx<8`e6nt5re_7x3 z^wMntR(vbx!`E`Q3U4*ww-4Lp*)k^GdRlJF-T+a}i)t}mSEa(2Jfr)`Kf*|QO?+sE z8(I^rU2Zny*1~hc9LPQv9_T5v08XO64E;cLXT*oJc4#I*zNcIi>6S5S4u(#(pX2j* z+1^@+NMq-#Bu@$ORrJiOlpKK#tCpKcy3zy(IU718??e~6%Lc>*Q##cKwmGMa@_Jy) zKqy>5IK0tg*4p0?hL9sQqZC{ag&0C;WNw zcm!!C$mrj^c>J7H^WT%m&c=6WGAGmg9{<{F?jh5JiW5%F@x6z67}8l&xNrIdb&l}6 z+F=UC!?Sy+tXxWy0=1K(?xum1)H#rWlZOXu4ZmZ$mUdba#;fCTb9}ro1z=ZTEcPQkC@+bEa)N<5ruus@FJdDZPWcu(h7)gt2yfv1#q~=m z#1zaMrPDfixYp3t`{a1(Eq`!Zi;8!kD%_=d4_>F=13Aq3gd}BFeCd1_P3So^4Gzm* zdTmM|tcdw%jpP+OPqAD+!G~!A(K2{8Mb`S~#uG(VDf#xDfTXeW+tL!2?z&S>4EKWp zzfS6js(V)tn zu&aY6&(Ao^-D?zW0zZZsZ+*NaasWUVA%__%DE%#j8e2hCCBL4@@gS$jFmsuxI*+R! zZ-g}O*+8r!iJ*^WNtf5HJ?(CJ+GcsKuAz8)-gcX^qwCFd50=7wZhp{2a*A(T$=Vf4 zjKn$!0M@10n*>;R@~jWQ500HqY&7XbOM`@C48xO-!;?m&S=J*z+a>5P1KdjLjDRPs zfS-5pG^~uy^YGQIpb_o_)852 zjm@N$wO0R%6-#Vll`Wi0u{9!$KbW3vfb8e zGEV6dd)}#3%~-#ma->2L^mMm_FRY(Dn=L->#H4 z`D(S$vK^B6wivZ|(zcw3lVi01ep~Vj1L{S%i=iEpqzz(8g4CSQh0=oi#&3=LdT85b zM$dr62aIX|KhN596xE`{V~&nW@QsWR<+KL=c{Nue<)QEc7=8W^}RTMXgMgT}>1(Oynq^(5pAmbUV+gl2`R~2kjlT>!`KbheZgAv!~dIC1YQxfYJX} z`DXUY=>LqqS&DDm4nIwm45yc3#?7mSEH z{i#HIa1Y!A>~O2o!$%TMr(rY$r_vmk|D^bW1Vjj6*;PAfkhwm|5e6|Ze|X$=_fR7d zM5Qb1B*FI-oRLbbw#nP700}Vfc2t(R@(dc!@hh|hs%NGHX!~UZZP{?OB%Z=eG(ig% zlGf*D`=Z|8H04+efUu8(@c|ESG(CnBwYUxmPqocg8Gz-Wz9@nQ;Vzj<#(E!e9<$Tf zo-EN2Iz7YAbty|=F5tL27kC6|dzqSQNrTQa0^Jl&B~v2Vz9uDNMBxGBB?9cMxKb#w zxX-WHksxLmkN(wsatx%lSP&IvUhisrhVkg#Ow>8G`0H!a&B zWd!TckVt^93eZU~Mpi%TnIfGlxhIq zMoIYWikp8sM4xaXWySnv^rPtE#w~j+SpzlD1vNn$Gzf(U854~W%InCW_>v5LF8;VG zffn{}i87=XDD9XcSE|#`u=)-?Ux$;J3y1SO+#DE5d4i<|v$S16g$_{X!#?elJ)mi1 zCd1@=C+kJaclrKG22X{-!Mnh1mNO;p-Q*TvUHM6938SnES~m>r5v z{5?4LcIzS4)=}9~bh)SB*IjtOD4@T>3YrynBy>%8>QaTYZb=kR2&0^=tO7H56r;d%!0Y5u?`6(_($`B&w8ENHCL}iz@`ZHO(9JHk3t+CJ&zM=!bG9 z_b26)Yr$T3f`XLDTG>}kO-_jo%Q~8)z#Uu2XH3H7sLD@bWtDu{2S8b5VF@~Q!JM5a z4pG=DF%NIh8+=kqjnkx3U~e+Uo^ZYPQTk(uRSJc}Sf12oQ7w+MqT#qm_&*BeD0b^6aY&0V)7Fan|9=wi7$1HI{MQ>hg@@xkWeeoIW#7OnxrtMUz3|+LlK8 zUxr(3$0!$e2pWr&?^d_FbF*CETrS5iZow8w%6E+8zkK}vqwL*cEZ?)czWu-LOI4rK zHFM7H+GlrHPa7K@2{e{To`RDR=FAWqVPgZa0R`gfs_N=;SJf`prO)Z}5D|pLL(o`; zT*gQtCJzWl!&m{0kr2d+M#J!$Cr62tDA8DQln4chyd)CJ=eySL|NE`qu0Dr}G;_N4 z-v7(*vVQBnzH3)aUWQX0!`>Z6w%G>~@Q^n_Gdbe_H%9u&w$ZUb^K;z^wpZi^K-k`+l zs9H)lkc3id^?6L}CdhSMn1G3TTYpot{S5dH7^HX28kPsGC7+Hi2+kMGomEW=tTnoI zyPSjfqb)$9MeBFt!$3Hk*;lN}w)@-7KalH{zqKFF0>ag^LHdrH0VX5}3Hlyx>n$Cz zs7(Dhk`rQldL|_y`8iQrGym~Kt?NwX1I{PdNU3QZj$$yg#-4SLHE%?t3bFY*xjB6S z#YAB5QlCl2N%O&u9Z$V-XUD%Gg?Q?pN4Ry*eK~ShvK?J_Qn+GHMXu&zuUt)E+>e3H z&S-O<`PlsOltA5a^PnX2k$Rn1Ln-@4HC3ozPp z=>uj@;X#0swCVT%6^wY$P zNrVbit3;@ghWP~=3zqy_7*BYs&bD=?Zg>B10`=oy`{VfaIsSX! zYfUIYU9vI6q&#r#yW9%~`sVB~3&x?lriLW4wDy#$ByAN@8Pn_{Z(wVEK$eSC8S*0u z)1fmQ7780K1j2@{*>0XIZA6(3`Sg}dt(3(d>v@&4NMWgwjW0{4DzDEG?tBH;6rCFt z)>;U4Z-b)MO&+>n9d@x9r<-2VlKZ#3(u3uw@82h5_lR1t8!j4C3WoU`LR%|{ZcV0B z)gjpUVjCPv4jUM8EG)sUi?nS+X+H(hnBAZ^(`>yk!vWyrqLnw_`L8MFQF)Mj1{eSY zyu0;8`PM`~*@$Lu(R@UT&M^7WKXG>Zqbq$r;`4m+qhA9_l{&3?W9!Wq(5ZjH8Tr-b zXXj0!pGLBj!lPwRDndJb*fxh8I%{|<6~7Hia(k#sm**V(<>YTq{^e;-}s!Sqhz2|_cq6HJgmM~q;Q>WOqQgC&R^4leEpZ(U|z`(9pqPO*JsdJNnw zq|oP*PAq+Qf%D%YcRJd~zYglC?Idh4b9?w}F)Zqg$x&p)0cevvXO&f()jd}%IbAqw znf_DL-C2mqYXJMRs;b%?9#v3!^o>|Oj$Uc5b-Yvulun1d7oQEu<{PxvQEN=$<9>6z z?ExOn)s9OBWZ@1udYmOWXs#D`$p>CVgHc&4-zXmDqKo=a@R^6oS>x{Q(R)3rTG?$s zDZp_6WCvtwC<2s2Ke;Q*n*syboea{X;uSzz(|26{~$FpeKTk#&lP61+wRb=%l&q&lC;WpL~U* zeb)3AA$b&W5J(OZEp?nhlNZf<4(MuxUbO)x%f9$@?Fgt{HgxpN!Xwdar8PC_!lO$C z>_o=EIqu=tBYC`USrh%grbp4}RXIorpmhmQFlislbT`fJF}ksr`r4}W0u+}P`#9*< zqx9)#$KB(ZWmPzY@(05$e!6D3*HW%*z0u8Z>)sbKk;*Pwigww>A?%yMz8{J2#!7@) z|7l=&q%Oxefc!}8OGw3aioH8JIcs9EN_!&8K02hZK#kVUZULAf%8j5N;|jJAK$}wK z5Z_0U|I0(_!*Gtk`LC~3&+ulZc4D6EI}u zO)%Z#xi!7H`^Q!(wld^Euy#x*)#$Mp)}2+K=em9BN{6QniW~M zFE_6O`W<1bLOUi(U~FOB?U_#AA&|e(oz|V+S^Wt9fV>3Ogw7H`IYaJD>rcXyI{1>II_}YO9*B(Y*0km?>{Eo^vPeH{B|o` zYeG-h5zP>xs1E^1D=~ZV^GBpz-izPGUOf1huFs@j;t;gGCOaXGC1lyq6DY-@|8*gx zd(#H@TfGKUujXD{{j1cAd%>r(7uL+Sq0Y{d-m@NoLFx$&?@socpEJj^xFVk>Pbt(& z3VBj@MmGx@{P<^3E{z_B`z(n_$rTc4_TFOl(c$?=eBu!PWpfI~=+A7A-+$syeDo)O z`e(_R6@f5Mk~CHS|KhZ(@jGyNZ~4SmLb*<~y^gmvr} zem0Cntkrmebxh{(uGCm@^Y!BON!QFbMKHQIqvp^A5K2UYK&4>_CB9mCqpdek7~ydB zWXk2kNKskvSJo(C&$HS@kEm3#pIF4@amabhrvy)f9&D4NL~hhx$SwkjSSm2hX&@?3 z?ecaBv{Qdc#b(UIFg1uwIS05-OocFb3GZ}KRqF}*hS{b3LmPu9adG0!D{(cxL7KY7L@iN=F3l)gN z04a_1)626R({-Ps$z(zSAM!mk^O!C;i#=k2H-$fErXyn89}sAwB}5UUbD!~^5P-4T z{F9*pdxl`X)m3)-t}z;O3MW({%p09SI;nq7$-4D4gvX-8zRmwrsa_W;6t%PpvhStn zuxNe6F(QBflVBkHaX$=$F||3Ws0ba0s&Ui652j_=okP>3qd}vI(Ir3LyHJC=moIep zuoLpZiT5d)3-5}D+?@A!cRVF8S0y`5%YeHe1GA`WegV0aKTW) zvt~OI+C{uNVly#}Khv>GoT(@T*TpSC1hk~}v7pAvjn_>%#y^f}kl^*#im(BGX8GHAgqBWj$#h4cby3mk|rzk7x^c+BnpeLca4E z$wB31iQvHh%p7pBT^!XN;oNh?d^Cx|Dm(A5s30Gbl6)EllB74>_vPUk;J`*zVKHE@ zq4^oGeBn3jygZfr>}ErYby6v6gm$A8C+(j6#_P26g%~hCj2XyQ*YU)Ul;1%im9Yf{ zL!B)vhGj1FYjUICxW9TzQ|u~6N@w#T_kadf+w<@RAyi_bAr6mzWg^GZCVa5-aXad| zlotvtacHAJAkZAvs1^u8v|}#k!?f%#i{MfcV?MI|&AsHvjs#n|4?pWA^$0g4AcQNa zRzsJThlSPs@TRB!TMd!=yBFuUDp_4Ko2*wu@luR|CA?5E=gh4$Qw$EeE4fh8mUR;R zV)|$dL^>3#SFi#NL4WcWUm`)qFZJh*r3N_A8P^!ziN3ca9;1TT6AC)4J0K7u{(myDMC-n=puZFOI9M2mMcs&1|>A8FJ0Y1K+~B1tsgdLgZqEuP;9?l62#`CAskY@WyyG@3g`+uc-nFY+}*W}Tu%NC^|P3Kd-6}3 zcbjiD|1D9gIzLreEuy^-Z$(;YL4?_y8Pwj%pf*mKjGgi*i29fZHWYhIz!1Vjn~&1V zRQMzZEsq6!%0&DiA}dEzz6DCoW48+slA>4{&bCX=6)#4s%g0b{lyc*?{^~owA?DnN zn56lNglDH_ZQ2^!Ykj+q;$N7v%NcyLhlL;q2`sOuau$bsupA436ihnV#!sF_(vvFZJ?RJj6=(7&U)^!KJ9c(=>it zh9)(2!j;p`%aMF)q4uf40)yqrtKMHlW!<*a25<=Y&4=Zxs!g z5lKiePTq659M!Q~PxSQFx&N*bx_5Jov5K3A9FTLBGZls*MOA?`Q*KtfsvDc%HbBsR zEG9a#6<2+#S`qXxezi4i$*+pIH>PvarX*xVn=6D?Ojw@2SHzPukAcou1vIAe)l*|+ zPtgS8J)(UJc7xD;Mn`c!`vV>;Pvi*K4lh73K}jVa&sgAIjNa;XmIDQt$hwCbf=|&T zMAbdpgnyW=LfP83q11KNFeaD-dV{$HUAHMUTODOc;RGjUBFb$#WmMu6D@KmEZo0rNMpb9>BU!TVlLd%3jigO>M__*j$!lFpFx*L?pJDXofsN7qWlUL` zqLAk+gsEUU%v1?Pw%l)Tk3gX7oOs9x3E~?g*A|T+l6z}LlDMB7a|cla13N^`>8-~E zbMjh9!4N}Bf3N9R-R8NneLthpQw}T1hJS~Uez5vSF&^DMmlnVNk;#v1bDD49ZWLh& z??~zYd^`ERzK<1XGAL7SR?sJlByG@U%HGkg$hb9dD4F3+w|D%WRGQm8 z1CZxYTvq}p9Xx!KcQ^P+NtUFks+qTH&aBiqc0Ma<2b`5$BnVEs?XX7u(~}KOaID~ z{vgM4j6)pkaTTSK_vERqT~EN0%lZ#U9L?`Ac{^NdnmX@OPJo1=OK0A~_^tTPm_Tn# z*k08GA{QC~D$laB7-$EAYS30qTS7UA(bn8y+taJ>m=~z5 zV*UL{O{XURXwAXi79e=45suo;N1vBR-%$vb_sEol_KE|peUT~gLyh|eR7bF!{0Eau z(#0M(KNYQqI5E-e4_3c8C0-gJt&OeE&3Voko}h^F-)2Vx z!`VWVVnw2)bgF(e=abbOJtJMP2p1EA9+NVHZB_Ztv-W4S?r8gk(m-YQc?GWhIm49^ zLx^HYMs=QXweFn9E+>DMxZqEdxySN0a#4^Buoa=5@SW)}eP0243Sm!1cTSIr@a(Cd zF{ml<<@=F|zQXjw;tGV@RmJ{iB#>`r>P$dyV8Y?;4xX`bqsXKm zgTvjn`SZS`W((*?t-pf!%brD7BQ*jJ!?1%oI7;z@9Z?S$y5@6A z%Jiv7snNf<7jKT?$p z7GUT~&B=ko4i-+}T(U5{B~YAY^E&iNCIxn?&sSdJ=;OSjUC(84L)y~UE|^+ZwW1DR z8ai^8MX>1y;+xu8ZzYj(EYiZB`4%tXpAur)He{Fm8?BbEv@-}Moc4u|klHfAaR(=) z3zJW?I~Qs#YvYnEqRQLl(w$%svunCIaT2g#gc0WfZ!t8}!0`O1g#F3i541cz3$=IT znKzTij(%CAjfbLxTnT^Abn4meydHX;IE&1dgo(2zMIOnJnC6@Vu*WIWzY_HGEkQ3$ z2SNXOG*(F=+zKtuqdWaA@xw3{5qXIu;%+Dgx>waFQCIXa|G3})~`3%cUoA(_Z~mU{|DUn_%S&F?Lo&Y zJwbo+gw^TaUHqhsnU}NsV{jP zbiP_|Ta8zndQj(vgrnNyC9Isj(^$;rIB2%?L;s?jc;ECblxd(S@6nJ%!?)J6cx?Ks z!@xW2NKQZDBvP@KZ#TBqzdk%YJ&SIq>1Q1nX*0OlbYu!gA5cp8nC1G6#IHigQYiNE zsvZ_J@Oyx?!r#ebGIr8EuRx*2_(*N7ujw~0-(WC=R1-^C1zD27+9rnfDCSnG@2{Fk z^s^1%Ez%&+7-cHuZ;_@JD{zX1tgb*VquCkDC=O* zQ4rjdm08BZ-~)@6#KN0>%;4u_vys3Y+%L(IjKXMc3vwrlBIvFhL7r*foUdRmhflZ@ zL#C8%{In?d`iuu79wMaZX|SP+&a#xwasupZmsFR?OCO2^$!^Z%<9-^tSQ3^wX7Q#) zD9Fr|@(Is^03YQr`ooI=*6)Jvx%y*ny$l@Z$`UTCkUUs2 z0C{dQ0B@+Gq;Q7_9cd(IhdGKoym%psvS{f*c6@$|OX#RmMMn-hi0U|xi(=<;THH{B zy18Y0Y+5B|yRJx@0>nWIlPb+Ag}Vh7!Y}!XSql5sEJta?1(yKR z@$~S#M7e3Seols|;p$=Q9U0jvg9+`uRLDx2lyYPl49y;W^fsE8IVJz+W6V{Ep?*c9s+?PB89ra#~t%j+=5Njiql zyzZ-iK|^x9l;_A_rDnL2p?|+Q`S0oK!6Sx+P;W9iQd(hCH~Ld${fh}AvTtr&H39i5 zsVY?}f-5Lh@0qH#O>|EJ4Bg6Nrl=vT!Juy+HD3)5{YU6uZeKrczS{h?=o5~2ZaJg# zddNS)M6g|6YYWJp*b+elUevPCemp5Epi5wYlzEZh;ayCclNTro{0L{K=6n~5dS5cI z1~Ra^mm4Dzza?>fly%mbA&~YLOy7^ljyu$l&5_*=rTDOq&Jr9}TL&L4l{u+|m@u^<>GMI}B7}S< z+G&tXsONPI`cxuD6)2aWyANv3NY!u7g6pH>^CT`()!)1-zpAKF82ow01nH_govqBR`1qluMpQk+ zLS%lJmJ*qk&_-VS;YJ`4W0p1Ob8#j5jiQAyRs?bz-xzaHPD80P;Kn?3V!YK;=oM9} zR#S#Tiju?`Q$!R8R?RRdDJWUtvTAATPG}d^AWlNauwJFAa%EQKl+UV(5dI5qu3k2c zs%hMhBWe`FO_;1N593g_TV&?*88^wT*ZM(K@+{rassb(T+Bv-V*?oJB4i>^lxe9|C zu3sApSLNYY;Nid{2As?3SJZf%j<(53H!99W%!It7 z4__5g9`^oiZ?|pNn{f#1;(t|7i%KZfv>2(h;#}34SIlwL0fgQc#y&f=SbgR%GusAJ zt7eJ{ARj!OKm5{GVyGicn6}$nXwEk0X(~h73U>sSQ<3y6j>Q{;xQH59Y1cajtsmeL zVbJ)Tf(_&vUuZI#^k;mmcQ^M4BGwlv+p=Wt%(iGJwyp+rFX=g`17nG_D_Y|x8OdLb zPFR0+B3bDyv>8u}Sz<53f5-%CR_<_li+_OZMr_OcOGZB@10%E5Eu@Tl<%mj?;bI?w zb)~cwMV;}v03#C0>j)K`auk-6|Bi^5MyuZI2{kyP78wZXZW&q<+$M6h`O)83`U;VZ z%R^CkHk<;0cZxj2a* z?u)nz`L5^D0yo2LQ0ZNfU4c!3i>|w8#SV!4l)4pVBoT8CTlN-Y(3^^NZ=!xPEnRXY zkFwG~lyx(bnG!XW3N091DPsR@g>vF_ z3u6xlO{$mYFMi=GF5xQ$Z)rkk9MJielH0k+3g)?HU5W8?+mX2BsEqDnrme8s$(xE^*YT;3E0+^B34+$876w1AmtKA6GgELQdt-_7 zfmft@WlNdP*N(Y&s$ErTyeJn&keF;>0~Ljizq2#N%p<-M%(|37cYQ{dZGM|i3W)s^ zTMrnD-_HIRTQNRF$a+!k@Cg{PkffyinzA6h+VDZJIbuC@cQ?T?+hI*PC%48nBmj)q ztsZ_UpM~Z602nXaH|5mEIIkiWg$JQ4j&ZVCPhr^h+Q-9MOQ;(m4jeu&t`_I*gvE}6 z4%?qcUr4X8f1t5p^V(YiL`<@(iN^Co5L7a#4PK;>+>tBjXYm~r1m!h1o|{67)5*?6 zG4IL;z?D;-eoDwI1FoHjL+lm@tOeb#}qF0Oy^&;80$ zRUS|`S(sNqyHw}&>WtyKh^?wjvY+8COh-(f-1H|hTfM4q;PyOmY0P-VPMuWMS+gQu zUBix=ksr;nxPnPkPh6?(#)C<4Q&g4SvuddEpEQ5E3g^3Obo)|;@283&I!hpmK%9ES z%k-E+6-l@kMI=?E2nD*)N@loE7)7)L>S*+Qx{~JSjH8oJjOf`@;4TgcqEp02b%X#u z``nPL9KI+h%!jt_6?S3H_J|C@?;{62wbUleXdJBM<08~TWN~Rp<4aHaLAHTEK-Ur; zyOd>WV%poL=N#F}(dV zoZtxIxkQW|-kqnua;sc}%_QT!T)j zQntf#m93U?Ir#(hpN(lSG(uz*>H*DdKl+cK2jzy)Wr+T`fwws<<8$>x;o$tNBHaX( zIgrNob*ySw839WCppykUN`e989^-g!qF}t-U0HDxpJl1!8`2|6n?5eU%@6iJ-dieK z-(sXFh>P89I{#3q5Ki6{hhAP<_R{p_HGw-L#n8Fszz*91o&3W5ZQpWJG`H32nsYiL z7V25gONNr&Ixh=np9vsl);K-+Y@|&BqKdEw%L)#>Ko8sXVXJHJ4ZX>hlYW|J>u;!mukOidY_$UWq!B|1g%PxuT1#Oiy72AAK=p&#*%F>%^KnJ=g>PhB^pDW#lq+tT);qdFQ8@*UO zC+P4@>Q9g|L4utzn3&||aNh`m(AOSl_0*}`( zZttfO!ZTNMG_)-&mCDt)6%GpPj}lSM>vI%np$~?|hHm4h%_TGb{(MZTFd_KGP&Oh_ z*hRbtC#Q2XkLo#rBn z^YiQ+PLz6gW@o{+jBH#Uxf()Xv5U$(m4>KO!3X3zh?inqmpFHCaK2=!jwO+WYzG3K@de|^clWZYN0NYF^W z+v(wm9sm$IcL&Vqx^jPdiHI)TUIFjIk;ObD6k;Y>Yoy4`IGb(T> zBFaa~I94B!l+D*64PJ=SYCkas8mu`5Kn+2b0Yr6 zKLjb}OXN00Rn}tHOPXDaz@N=%>zd$-nxAi;H^&Sqy459$lY-^H$2tthhF2^fK5iaC z3IK}JdKy{?+JXR_UUb0>zCy2>BMk-}%DD{zcEmi2)GTItNXOgPjXZt;5brz_U^-P!n3M20@SWBLLe-(Ro zDLk*=SB9$gz9~_ca$?TCa6|{sFf*GMRzK^>QKO<+BTqCa@H*rdz^0K$&vNMs+ zRb-S2t7}O~lHT2JL?APJviTWmnMcPFm-k9svHfU%24iVULeoe(r#2Ws8CgWtP$)nN zLxGK3PlscKe-@ZPn(2gKl;zmjfvPgPC!gaz9jhmS;j8-^C|96+T0EGP!KVftGR$Xo z7-ud!BXjLN@m&S7zrB6bL-8!YT=eW_w7nhpQKM^+Y=VQgiEIby>~cIp8dz`dZ#a5m z@*>HR-u-zUlj2-O+XoNzb`0VGQWr#ETQF-6y77|s6LXf2{dkAgjN7LT(OQ(79eWF>xHu}UYXc#_{Ao8Fcsr&ySq~}Q_NA&N6<{Wil)oq#_rRq z8%Oh;M$6%6!C(&U4ZW13($ub?MGit zm|pAli1y5Ti|(VZel%(RlI7psSexgMzKUD*mKUASycw%Q3pcVPmAac&X<1P)2P@JMQ3RhS;S4JvdUbnfq-CS5z5il_2Y!7W*_b%xF7M&LpYA0P< zM{8>pS(1Ei-TUd+wQ&+AQ%t62fa!8WA~-vO;2f6D4>CEj@OBf}P8@Z57-xBDXkbCW zxAnzJs@B=@%VN7&^wd*gkaHm=2AF7iUxa9QG8SS@TD?KfPj0f3jm!ndI1kVbOXPn> zd24>5`7LNEyXS~C)3GIiCDbRv}|O4U?x^jiw32jqUd zN?*u~G~&;v zYy)jh-u99z>QKG(fnC}7JpVa0ibrULEY(Y`!kS*}97)?q`c4o1ryGNfN}1`t!IC3& zy-o5iQei7G0g%yoBQPwU_>5#`*Fd+BHBsbj^$$$#lphIW4(O#~kGjK`HpO`2s4Opw zEwx$2i(~WVQW*8!bxg@2JC~>C7&gz(`&DHIBnLKSl1%Jrf9L=SHdkZFvs%QwF6C*? zuSr-}&2)aanP6VLC~t7$6hjaSR{Yj9)13ZpOVOB5l|4T00Q}Hkn&}HN+x;(Oa6WG! zaN4hOHk2}dp)L=0W`nyA?HV{XkE6O9Ition=gmEOXcs=U zub$%a%#-yM`T_65^HAbE?H_svHdHCkL`p(nL zeUG-N>Z!f%X{My7rSt{gb|j#*yITY_-d_k~HT?v2l_DJB&3^4?{>-2H+MgZqW@)Yf z2k53RP@ogt@7#irm5l~joeziI=q-q70@;Kv+2G$;Pgxql*`(=Ro!q)}1elCWhQ`#0 zBHc^CxVz?E`7)!qZ8VQ|BL|N(>aYFDG?Bd)fr2Me@&Fn*mfcyf$QhhkLGSTz;nuYqHmBL>Lo=O;7= zDF>nhYb?LRQyhemMdi^v)T6p61nSL8rpZO0S;mdkL@ag4LU^*)`wq{(PL0K^qCb9e0J7y5p0(SP){ zKlL*s;di&Pk`4D2B^GT0k1f-;Rz3!ZuSq{v{p<&GK@iX)i5uF4QlO=n1(u|&XKo-s z`{K--EMn2@3gMFNqk_U?e}uxxQ64QkWhs-6>6mFY{+(@=`W;XOCPk|@Z<3&7Rtt?~ zHg|W%BB}t!qgGR(T8zJT!nMYaHM11IcdY@_Q=0P3U`ZqD_17l9)%@}1=g=&)$mFsi z9gCfEOA{mcp?I7PQkc<7@TLq8PbZM>L691qb+0i%VpyEybqCc5Hr((@enU%5W!UOE z=h-3khdEFt(NgUI*Uto(s?6|()|u#bEZIPk$(^G(c~V!52{?#U_!Co+zXH^8{1b(} z9N$4`Jb-SV6{!RqdO6WP`8QE>Z*LEeSRW09PA2qd6nWO1=M4ofqQFt^E|6EM|0b=vcu8jyz(0 zqNY_IU;2ldOpqJ@tL_+UH5v}~0t6DQ{<+iDus{ibu;!j`;`i{cxm_9k|j z9S;p_EnL<-P&YKL#);<~0Sks5o(8{xtB1g!2Hz7|iO4GBMwI^1jg2g=Fw`7k0=feU z_7*DVyqpD|+z}ujQ-+5=5S<(+BQGi-RzUNn*xBR{H&b|Lm12fdV)US)%;y=qQAVk3 zS!Qj={(V21c;>1Uo2+)KQ~It%&AWEZ?rS`ik^N5Lvr!Y%^9@4sA?iXP4Ylr|5Lfp7 z3_U*k^eB(7$D31M#&c0O1(-%=2`)m+c}>TTwg?eph}cFUAR{xZq{l8)o;fobe#^;E!VP|k zq~d8o#u^@Yj)NV{HHsaXN~6Lor~UqlE+66-sgVgJ>}S|LEej!FwNrQ3cyLwfS{8uQ zO$~+y8B|TNxK^8Ik8J09mf~4qv9^4ZWce%ofGAbXcF4k;`}eet`PSsOLE)=_n#4Q$ zt=v4`T>@?mNlU>py>G_r37GJ_UT13wz)~K#ipdFnEy_1f%o^*hIZ3uzpO^vNQ^Bvw zxYL-@9L1IUf^Kt!^xNCfxGXtR;5}3Sa2V-_L4|d!!t=yB%9(Lq6{uk5b|xk`*(!zb zjSrK=7E%ue=L?Cci&~Oj+`bw5yH|%VO9Y@UUIgrORNWQKP*?AioG8=MW9qT{xvjr) z#tqy}-HB7;lE2G6PjAcWKRLY1D>Pcr&E%h=e&nysW+O6+KbV@0X_(bYX8XRfzD-{F zyMivlElBhAoH81lk1vI7^Z{XgXl5NMPmX0C5y^_u&-qF4+?&cV1hv8l0*WadKoREf z>FV&8@6Lz^s(h@lB}fuUuJUv_bMsuY0PGZmM-!X;#mNPw60Vf=hgdZ9dMQo^SH+Ha z1jd?O1oq{z&KJ>|QI}cJ@5g`pX#BOgi#0ctE2&sM0b8ygl%ulVW#7$&wH(0aUE77( z`rSO@cSQ`ga_TAii`b~+KsfcsSs(@p0l0FIG<)F9y36M9fG%z?0!gE z?9cxsEh-QWC4OMV#xIf*YWkDT8G2FZjFt&12E1l)4y^-oNHlU#;710^HAt*tqd%Pd z?^UGW_E1^envkiY;2b+6fM)_E8RbHqa92xQ=!0i}vzZzY9sZBhnMy-{@~%W&rXHg* zqnW4glCjbxc~;aN5yO6*S=~oq8ZDTJ&}PR5f-lZ4vs4!9+mU6c_yjDoE_cS5iHmT*-T5}*evd#sNhA1UR+d5^CFX*KZP%*Q-aT(d11bV@e& zZxp#8?KnlgM(YZ%0O#6Fa)KLGlX>T54#J*~CN}oy7Pjxq>x@U@B)XM}LlyCFD(`f& zxsZxJs8Jctq|%JTob+rCu6uh@KagWM9i^PtQL6h`lA(mD^9phX(^N60ou2BNY}};K0&sx z<{&_2;Gr4Y8&0PfFR{LBQAUqr-Tq~H#~Cdt8Tc;lZ#S#Pj*0Us2&*s!xyE63q-85L zZWj2!V^CUo#VFBC<@g|)82w!mdA_IGsVeZOcPNK#IVtrtbl19ju5cm_9|Jn;W@bPZ z(di)rRS;i@SL_kIrP`fl(&cai8M@hc3X{9hpig8-(VR?HQk_25?8=MfXILlt8CjyU z=bO^;N5uB1@@}D}#tjzZiX>tQyYQvZO5C?)hF&weK(Kd4dhF=2TI!pZ{fieTAqtzZ z4SMi*!)s=72rR?hFW&_RYyX2Te+F}kUt*M^ZU*d6X zsMQWFDv};OEn27Ljk0FmyfC|7u@SQ$&L3n4*z7eS=`#j9(6}bUYL+TcD*4Lno%c@f zZjG~EZO%gelWhQ2g#+2ytH$8D@;4`st1y|~Ig@N!P7WtmD_9JtFhNg+Y9ROV4&5<* zBlXUN;2SKkleaq}N2!Y=viXN{MQ*#YhR-~QZ#jc~Nz*@2vj-zmQd|Rp0a8WLi{x$rYn3P}mqnta#09oWd8Lgo(7;2+JM=73MQXYvGSJ7fNrr_QxSl}~8oIoelG zx=4dnwjfPWy1sVAMqI){fzCj`K!V3lRrUH1)FmDp)t7nvP?-qqa(LkMWs>FUlQ7mD zlKmGhL21flB8w{gM5puW)8wSG0d#r zc>IH~)>4-9q>^x?G2>;ZA~o+KZmDor4v(bD;ArJrub#N@?N%)D4;b``>Y*hDg)+Xfypr1@s8!&Q4gL&zV2UnnhlsG1qBg!vqK;C3w zVqvo)#Dcww@;#<7IMhwbG&pTKVyf*~VOv#;I&qeR?(ouBolSJO<=PyBN}5)P@PVF7 zg~N48@if(;jumxP4f_!@9W{K=%i=;Go))-?nSsf_Am06BPLnFAs@L0`m&B0xxx@8b8l^U7@dt(7(6B zAm}hwmXm{F2$L{2;Oe}crUAvO7$inqQ_={;nd00GdRnIm&4CD)AR$gp9RcWE2)(2y zBq4xg%m&em6YxN0FHa7y1q?!x-6v&Z-G1Ck0fAp+67@6lF^|Y!+3;#{VYQ;t*BG$R zz0%XHS+P@M#fw8E)m)2of=!ytl0dx}hiiXwf)q(+vLF2alVDzmwaDU9g6n|4Lnm*g zDiM%dl6)V)t2y4r%9iM3H`&J97>BSab}wFpkhG~E^qwjDud%@HG-{r95sgyA5tmZg zy}Uc*e|B)xH+VSta5`a=VGQoDdo;S^adt-Y~F`1!T97Las?QEVu=0bH7|J@rFZe*i;xQxSM`>^#I zrzr_BbSv}A{1(3$&XoirnxCPJ4_6p~FGdRqC!I~QnH4M-?^tHH4TFw`mGwCTaz4<* zhO)1pgNdK+JlR&TNbD&2Sm&&nypAJ#QSGkVTM8lmL2RgRPrj#Xql|*-kf1smU_Nx( zE}|0@Eata+W|%cQH!e|{wN?aEOio0rkH%?Js-_j8GKV#gbw#96V`tfE&EH&6PB2Cb zDKt>`S3-T)ho8o?MRo8PVv#pP=O{TH#}h_tMY$y0HXJ-aQ569zCb4Y(W}Emq&s$D@ zkJkrvn`v;~rL)X!7-wj*f}grPvA_=}RVryLoN{~E$kwAohnJrQ)@Ns`ZoidXJGB^K z=!2zY(Z~pgi9J!DKc<;PO4HJx928I4(q$2fi605{Dd&N_t(;zTn($siHMkq4F z-gZ#TF~(UWZ3@M`vf-ecjFt-NUYe)4Q-AwurUP+smCH-#8`e|T7_^JRxHL3Y?>hEZ z&_y&sX(Z{J=ABr^6vu9wV^-MvlaJq2fr$R%?y|UIOyKl}rZByvU_U6XGnty0Jc%Jf zc^|v5kJ<~ej2>YcTx%)rIZ56l=8R%`Yh*gj>|@Or5;QFYK92-36$ z=L;#2MKXJ`FO4=W3_i@YqF*tNxQ~xZu#jH~q2Z~JghG9YOx-PK4c9k8TE>t4~U>?db}?xj?UjN>A!qB;0iw2Zx#M~!AOeR5p{+FZ%IuOzd2 zMqK2>fbn~I7)x2BpWY~s^wp9Eo;Jw%3_w_GntEi<9#1MXs#~q=XnzY|R`N&)^k0(^ zcnb19)%J$NVQNX(%R&4B^F(wb`B?2i@UhGM4Cs~UUT*m)z8S_&2jQ@g-$JT)uKN&Y3JwaJUz;9sx5fetspmmAghxuU@_h zs8#NNJUt{%j~;(Ey1aMW45}(vCC5W$T4damX8hI!%KQrbtIVtkL(g$?u>o%f^vZUZWyN z16Yp1xkBq(>Qc-k9uGH`d9hhsU%y~cf~IQALib)h)^}xFCm6l1N{~gtq}NR5*JRk~ zbH3NwE$!qCb!N3W)OLk2zMT9aYsvYKn|GRjf^s3EfFs5Lvn%&i`jU&fVpe3! z&DI8*Bs)czDp|d>u_woLiu`?sbGmMA?M97C0~r{z)WSn|MFnx|r5FV{UO_HhgIMei z=CjqTT<^5Tvc}!FB5UgDbfCl~VIt=EF^)-1-H>T}2r8CS2T+3OBrkJr)sLWxe;++$ zHy_R)qBU?Jyj`iD@8qeDJ050&2(p6 zg$&oC!7nPG;57Pq@i4h2&qAohof+=74vP{lS;VO=sB!0({Q>XfsBJHIK0N`!-L-~A zR38_r*m-Bz2{r^3FZRly)h?^`nwK}n+#~8vU!5qI>;~ibQ5Yxy+Wy3M%7}*Di}W2K zAtJT)HpWl^>FsgAGYU$=M$TU{)-TG?LD4oB+(ES(JEflhYC%<2RaGxc-;~H~mC03O zK~!$1jw%+;(1)C^Z1z{$57u!OTj<;>j7(xWIWLwiFpXlaN>0l>A~`fhPl9^c74bGN zil}jqnfOLgR!l+Pg@?7qx!!?28IKC`v@lTl3!Ns$GKJ;jU*Jike_+tz-hxOlY;Kr4 zD6i#NW>3xl6TL3NvA+xeU6Mv4JXfsaNXnjj2P#-r%NH18ZOq7^#kgW0Hpvp4`iiCQ zN>r&28;%J!hceZmpP8p>SQK?d{zo-s>kXswE6uO1X~$NnE@G0X96Ejf$9iEZJ?`w2 zShUr>sj?wC2gf(0u;&A>eR?!i81N$0+ZtM@su?oxLlG64O`vYPf{}++T(jaztw(g6 z^^T^o947x37-K!5(Ui0kWw$F4<}@BlmOQ9Tj!8Um(e{sH%laQ$snLOp3o|f)9mv9~ z`ALJ6GeWb@J+>{~@%agG|CkyfO@kB#{6U@Z%KLLUo&aTya|Lx6ekx2wd>Uay{i{O> z&aRw>aV4Z&{hLbHz%l#V_*QOS#@j4|V@t^~X?j1qiPb8OG94d>7sMhKNoHI4AZQu2 zeu7pQ?AJY0Libb%xEG8xU`=@3o{Y5ai&aQhWq*ZHS-Ov`2KO%h!!iI=p0TC}pEUDJP&_f6yTrllt>W>Kg182hHAM`jH7u!esQU-Mskn*Dg1I*X*Z$0#Z@rXs_Gol(t|I7Gunj4sKzuLSHmoY*;zA(h6cdNqMg2G9WZ z{asNRYP_d5)+LWt)FV8T)VX89@)AH_^LTA>uyXOigvRTA)zMK^7DjJin1;35ZpBpP zJ`80^MzaLX8XvT2mmwMc^RS1jdcN3~!?X-P{Z!!O$(Y&UAwbF*1iMT=gPT@?;ix0- zGATyT^Y6AwzS#%(+WO?I-p!B0zjYC^Pl4cl9(Fo8J3_e4zKK==kR#!};;(kp8zn^p zH)9{30uCf^R%4ZxP19aC^mJ(k+;VgPEw+&`ar4MVjSant>89OTPfKFTw0Jh186*&2 zBdt;=@&lndrLd8g8Qx2BicU)wb|2@|CCO8u9Z3UuHu)ADas&+#I=;U9=Hy$!3wOUW z?;=1`Cw`jsVZcpTJ;a_UQcl7ry#Ocpn7-%&SRIhI8LV!y^0v?`s|Dna6_%G))aVG% z9$+3GC(dFlO!a}?;`K?_V1>|H`3-s77e^)Q+&q+|ZjZouQewX}>{tcnPT2~1DKjIV zQUR?*v%Hh02vT_E_&4NW#}sWRkw<8>N2HAfO0z27-OcqIa^??T-)pAxB;CB6{FhC$elU{Puyds`6!z=&UYKM@%By`Q z1fV=E8{k~_0Hi=QPMGn7k(=yj)*QWO4ADDfq+l)!(DkU zDz@auBN+Qu*R{Z^Dv!1@-tw~?Y~cFk=53(u9z6#7rJ$X}c6IH|%~=iGjq`PguSJh4 z!?uG+w~aKvp)*}hxrv<$&2aG^d;hj{Na0dcVmgK*T9th({9pbg2U#v~5QI1kNQKc; z^bNt)@OiZC{L}dB|Fi1Os3?qil0At{$4&of(2CqC3W^W|<*-_YN>ME&x%OvONx3_C zt6ub)YHt~r{U*3NhO!v8?j{iOR+ydz>=F%P?!x9mAt@+0`9IfP8A%VK11flbbCf^< zZGlX(0v2+7(zLHb>82@dc)%Ih(mlpeg*3=rc$JDNEw!ChCU6c5&Z9Ht4z$17rR$)t zBWKE>=Jdr#Orpu&QAZ84%^h z;a;sk79DlPON+e2`5k%b}?0dCp@VN6KlnQ?w*svfy~yp?sSdE!y&uKwgb5GH~kR z`{Reo&4=lwm6Yy_&@f{Em{?nZ{$TIQcBzj}^SN=I3A%Q^eN*`r3Q=k)D#JRT)>cw{MFd z(k8{e@l8(29k;0@YW*OeDJ(r(n7p+CM0&WX{Fe1%RO>{922Sq~i}pt9O(HmnTnqc_ zzMykC_w|iR7&EzzEtps|4UKf5L<_=RxSL244nK69lcWHL067J8k%wdmpccuJv9ruC zg0(yO@~cZyQ>knNCW}8`oOr5Msz#$gzqrR{y=Jbonh0y*7=_AHnL9`w$j_;a)^LJ=Xw76{R|c(tu~oYhK@_(^vn7D_+05_)&v(h5s5pA=IYa}{6^ zSn3=aR_3$a=6HOv4nV5sC_*I?M}2@O1&N)JC!|aqlxZp?Wjht33Uc zb~U}Nj%oE9s%v>v9lxu>U=^FemJH{w;t12?TN~;II37YALU2z3dq+aDb#zU?WGN2Q zkI!ynDeeHqc6jfAPYgKk=eWdjrm2-j9lUeY;Ho?UY2P-^NRfI)`e->O|45z(!*%x* z>qGdid54Ye$sfyKB+W7iK-mUeX~e1o&7`H0YM2B*xme|Jc4~4#5JM?gCV1*B(NXbe zz#hr3Rkm!D!_~H-WK`8oNNrqwa@~QXZ6#?h;gT1d0JLS(=z%Q?ODK17mX$MzsI6f0 z`b$7!q?IWXd1?L_vW}gDO0`sSvgNWfXzD(^DA>|nUmjwid!yeoYO%>~6%6FvZK)xq zzgl?kPkKVLhagmLe0SwKz9lu~HF1U}8L(|*7{neff8-6U!FGHwoLL!#yLy0qXBZ`q zKqiX@iPoXK5oT_nm_F$~ohFkR7!R%6iP;FJN`|u#0y!-V#?aeNh_+ z;w?i_%27&*ogDw#Q$1jf%@6Ow{G?>HU{M4hU2FD)ZpGOrPvX{H3(xM=l2?oxfb}q$ zdBxEeLA=Z>o=b8L2)gT@W-8(CS|>({A-Nt#QwH4;Y8Z92-jF_6G4pP7_{3fw0rGF& zjGi|%G%Y-(bxIXpuGrSqA!*@yyy=bvAH!gJY(5;GnP-Tf@As$W3pxMy%^SWy5vb|s zM*?%y&-sUi{SX=X@gbBzhcW7gMY0)TTYU=irRM({YIQmqgbQaWOHNMZH*;5&Y#u}i z1jFi9o6@~zGq7Wm8w2}izsY*E-0T5VmlBFrj2uE2w2Jd@a;H)LR4ta3B|ByAYN&U& z-gqNkTbToQt_G<%x{TVh=SZutLu3wo=Qr}In74C=Z!wz2!EsT{V*}d>thI{`+($p5 zJ8W!7?esf;S7psPx!x4ZVN4|u528Ns=Zi+rg=E1NR#twz2M|?xdBgqA8w!_&>N+At^7=fUX2)x714)ypm&7_#Hvm@+HpR= zoGaa^?TbT%456ac#jc(>6%{-eT@Wa7K=cDcY!nw3fup3IZ?4wTz|`x?3nv~~xv+9rD8$4LlVMGtb_lvyz)^@h;`{(u=29o%1; zzYkIbJ~Bli^kiB$-epC&W*l(Rs>&Bmfs;l#W$FEJE7TvQzI)YQ zc4lJ7z6$n-lq6lnS`wDT`Rhh*7+bM_Y}04%(tk0z!=+zxseC6?c&T_piMZN>NFu)? z?K02G45_NUSa<573TP@{MdV3~ww#Q4TRM+UIQoOsVIjk7C%^L>+6L$B@W%3@4DLA9 z#*=HWhdWcwdLJ=)ilQj*zJ8;=9V6MX)G?wmrh^OA(X?Zm*kG@+2U04XcTg^+gly{P z#B$`#K{e38Et;yp8+hQ3C|m%JG{wKbN*WH+BCGPK^fy2X=uqO4;tzKF2$PrB*q36e z_T`JSTfE#}L3pvbBZH6&kZ!cAHrv1i9qkpU%C(hA8b3}e9X&OdQKbF5;H}9h^Y3!W z$K;3m!HC0Ne|CLDf`BKAcWPzSPM-|^9*!*XsKYmFBS;#1G0jb7hc!9Wfvu)N_MzX0 z^_`;E3JKE|UYeo+G69kVfLG48>67U#?D6E#lon_alnoEA4=@aAF9h#KFgrSj< zS~b{H0nJU!$BRXMgG1fuaW}KZs(|_M&~6qB!xCo{1*i(lb$Wx385Lb6`nkkfV1kyv zsrb&sPf^U>3P@+q z$zpyUw`~^*jg@no{Dig)uKJpraIqTQgr5l@mHF-r9oh(W zv6@!lW`Cu0F~ehgOFr$}tW^Y6UTn?WYkodek47LT~(Nv$+*|95((D1#zJq z`UStho=hr;n)Mk?1CucLnhTe(C_wm$b^#~1Xx$ER>!c?U1#q)@5%L%DO3{L zNV&86JLf%leY&y*nyzarrNJEHLMK?*BLegz(l`^?>1RsE=n+{Bxt)FUJx-=RC-!#XV z)Mun-r=p~B_}OobP7;De(4lrDf%&KxN_@6Ul{!3%Qtp!a*uKU%>iK{B zN&2II%@-(SWGjIEq+hDQPjrJ1H+30ycYAWdvfw9(J0VLM>Eb3__i^;+G#3rMdnpj~ zAKTOS`gOaxp+8u2d3Z>gM0*BEU((^7#yp9=r6*L&bwjg};AvYm{e|TIUD5p28E|ey zcldL2bcg3uxz>tK`CExLujN?W97&myv&xi_8*caSHBQaTgIqRjeH3?HwR>qI<2QIA zHTJX`8;op!h_4Q^%SNQwiVSd@fq&p{4au)NIW}MCxTcq<)yK`{DqhPQHT=B(J^&x} z=29&Gx?8!XK{`-6M0*0hDSh6=-=-@iHFii#+bMeah>TrXB{CzR_D*^7P5y+O~(GpVg?>svVg0 zl0hJB(eh;LOeZmp*$(HM!(+uyJ||se&}wCiyF31+JE%*GVq(xlcy~(2UMwnrcZw-s zzo?~QPHAm^A@@;olz^(OA<4QH$n&D_x{F-U$vJd;scG1=Fas@bURM zd2v;kZvY$;nPw`&9L|^rZ9culZPULv4BvY6p#qF^1?8;D;dLpa{44;+*Ew!)tKp?; zxZ@=d8Y=~AJ2Za8v~0THNp4g@BvzN#8Q@zy&hRQE3z*f-A#C0#*Y5^SJAsr;RS9obuHJKF1w_&c1 z%3Jpdq#}pmSDRmiY(~$WyphCx%hTyiXPL`{uTEV(ey*VnRVfKib$z+Z>(bTW`Tcpw z!|;ehf6X?XZcxjfYnB!W>CKobdh(uKx<_0%Xg!PsJ1msS9BjqBn3++qqG4ew#FYUV z*66Vtt-vH$jdel}qJweKglIgp-R2ynXvhNvuO?5`o$nXi0Ej97{rDsq5Y78oNm?wq z25o_w_ap2J<^fe3@E88;`m;)_1Oe0@mB)Kfj`LA0Bir(W?kGS9nztFm%K%OP=2S)b zrMYDH^6>fL#q+36;%g`rMmhLal46Y*%958+dC)_V;)ddp;H~xK6S&I@MRuvXuQ?LE zLefvjE4cFsl}-M~8;MJ~j9$J;FjJgRIVYbBIK;#>m$()tjqAmi@e_R+I1}JSBy8Yr za{QK`K0Z9>r|=mhwi3S2UMlWA;lbx`OhK_xn-+u696z9OA*1Y*^u0U-Q^dxLlHxUf zG|8N9Y5n9U1Iv!1rp{YeBacX>jRhaeZgr?9&3$|&j^WE#XqAgnm(u35EdK=)cHu_%8gmICZX=v2F_^pObC;b z1DciQiP$<}KSxDCocs|v_M406`8wn7!%JnF4|rqnKU;$wdMaPzM;EWnmu4R>_@ADd zA%BPGWpn}Z`@r1O^w`aJ8vp1cf~pTM)PZCtVUL-NVOYUEwa4jh5Jd)qB~wRY(yJ%$Sh7Z<&T_*5{dsmY_TNeIN_sg4W!o!AaE#@+%*|&NFV; z-PPI2wo2Gp3cE@4_T;_3?O2Q)!%i_d%x%ca{L%yA9H!%%*UDy?7!huBQUyFQGhdOk zD^CWdSrdNk7t9#M7SCL96a$iX?4?F;h;sTcV|l9Yc_9PyCU?T@B?-@i)%NzO>#G0U z0OXdm)H}k1Lw}BQB5@quWOpWQgPm}{aDsvQn+ZOl=R_n7MzX{U3yusL|g|J>Tv?%e> zB5~ItE=ZP`crwmSVs9zo4T&mGJ>E<=AV_(#ziwr{tfwF7B%qWc?=4_wceQkgHeT+e0GCcnBo9vbT>yh>Kz-1lax2%mB zNvU^N5L))5I(<3ykU0ZW*LJ8d(By;v>?TW!>#zXFhZpP2gjL^9BDZ}z&XI|64FjC= z55K#fJ|e-D^8g#tueLDxfm^-x;PGw2(dle>9h>bTMv_L30#v>vF#Wu&FcBV-S$21Z z+eOXj#H+1(6k~F19Aux>(V$AQ01vX?(by9aOyrK9^o%Df3)oCl=&SCC zaCS51-PzLiI~17a1?mNR$8vDU)a$747la>1<1uYTx?&)mu_XbPqhsw2?bkKHGNS3# zE}^b;iu~|CI~c5MA5W#L9kC#e2yC2%_pJfGS5@ZYPBr5|=pw6I8XM2VI=%FbG8f9e zxf-NC3b!ZC&RNraO#h<7knQIdW&13h(B@}Zo_tpEfinH-sCr~-u6ct!JX^U@{9yYs z3hKIpzDh(oIV+qqo%>{66_uRUU~d=R$-uXTv`Q+qQP(od7z1K2AZFT{;+dH%dGE2o zYwq{zg3~{qjp=$Jm!BS4L3^5TM`VP+lkUTwR1z8z7hi+c+ zZ-rVniWR@OPPe}nk_iqN)hNjY;MWLM`TVe?K>E7IZVf;+1!9?od$)jwK+ak#&`m2-wq4`+@ zP#y-XW|FFqShFY(n_nTFK1fJ`8W<18P5DmofxS~#8ts~#S+3rJwAsnw9&qq*DprTf z2W>GOix^=nMRUUyj?M<kZNqEW9~06x@-W3g%bSw?HWx zU{obsp?9|Hn{;w`dS@Q2YC!T2_`HXsTgiEM7A+@_``Ck$j%i~V2R}8BnrF=)YW^Da zVCbNtpS4A8vG^pW_TY|4CfLq;fs>(M=nw@nh7~?HD{US`lu{9;hRoSp`Re}2pQha|juvQ2Y@_i&1gpmlp-rok(1M=A&87N5=Ppv?Y0mlok?U7C?FtMEc z7n6TgXd7|nXUM*9{_bkf8ulsIqtY8$&+h`W5CF1*&mCgLwvAK0hq$5^c=l{lX{S;^ znnnssay+1ct`;T*K@$YcM9zz55z15vndFl-IOOECNT8}lYz9n-7Eq+)MC(C;)$~-2 zz4n_gCSJCuqJ>#%bUR4%DLO|AeXtp1zbbH@me5q?LD3wsnfUniz(E<01(>uZjeKQ9 z>g+f)iTI}&(wj|y-tf!lK%lGh8JRs2ttpkOotVFGa3XV@S@Xa|jakV5-28=TllF+w zu&@8~-e5f=oYSX#LgHnCn(ERBLZzCU8P}Y?$SlJ>{RNeB z5(Or!=9lVC;njLcz~!?v3Kiku{rKctC>w@$5uP;!ecex3=!UMNxKCZ7bQeXe#GQe( zgxB4#hS&*l4Oh@Csnl9WOP?2o0?us?t}#CtVD9MfY8?h+6_GY(g}<2dXm}gU2Br*4 z0FJ3W&4Y$Z2mX%FpZW7a)5r_tWNFAM=!=)saFw6PQ)3Tet1WS}RBrMWh@_`xvG6Bn z@AhcZILSn>qFxP6cM`bktaKCtq0IEg1b|_8b~e)vFe`t&KTdX;QYagIzviK|uOAzA zKOUarlR9R6dyT=&^A`;jPDr;S+OC`Afq`Pu$X*cZvx`k8WG>oR7nNpurw!kmJZo$V z%g<(-U^C?GbsvIlcT+Gk-*k_y6+(Vr+B4qB=<}JjAg3`d&&o>@YgF}os6HYk;?Y;V z=_$EURPWgo?MElTPuBE|F_(Z3{{D+nBxFQ9y$%Q6Bn&xqpDp5s!XqejL+{EjGcj>RL-8(Hf68lEN^4Oqm?EUv{ltY=IwL zVU8jD4L{lgxSiK)euNJ9t;x6P%lWgEq@Si{eTs&RZ=AX{?Hl~W$ok1l1eB--u&eBb z1xl6F+)+$EnMZo+Z8Q66rl;OY|3ptTX2|r^&(*%Z#STu-Ux6yvf&j)A_hvlW_C1|y zfTFZMcR#QndX@J+>Ss`zH}GZKSvEm|rK8(^3io2Q>pN zR{JVy9MI`gPNu{aM+zMQs}<15nKs`*8Ew3{+3B26NV>b*V)6qw=p+^$2@K@oh`I|A z^1)l!z_GDg-Re}})p$5CY(eP|0NAM0`-8P!!z_TYb#*h*_5!XZqTIELvmdJC-&>KB zUNsiMIyC`9`{$P@#`6N;H1;ZRTuoOZPGdZ9tWX+5^Hw=Q@J}wK$IX9;_Um(#J^dJ< zQXM88&Cv;z&P7?aDGp!}9SJ4ABbf)-+`q~20iB43N1@}<~wYh8dt3Rm)~!G5sgHei(NSErc$0axEhMK@eP#3pGO&( zP9|m@c+#*L1X0M%r07jrjwG8s_#qTxXHJYTN8U^!23%B22u+W|erO1seUjA_fi-1v?PPzB1q*+GS^g~xll6mr zY171^CO2rh>bnY!acKECqt3yuAU;OgPCgSZe}$n~e>DXW5=$?f9vk355@dbhTO_@~ zL#}CAsl%GD)<#-4t$QH4h!kOgk=zb_FdILu`mh+;t(*2n5iB`ev|s4*!ZGmrVwaVd zX@{zea_!h5IDo^;?s0#2bv1gGZDTC@+fhf7A260)bmk9zVzmd;C;jGHb|xh&ZaD*A zp^w=)n{S`xT;rca0DZOjsj9>R->!`Gks5deYTgt9qr)Rn^37E$9UtAz2f`41bg*MB zaXiVm#lfl@X4{I{OgSMM7H5gx&|EX6VI}vgtE4B0fbW)vYTEA1T_`l)<8)bLCU`DG z%vWjm_l^7F5WJLQB@pJI6GFy+5SD$oS5CkEjFS+uDBj3j=3bQ zNaxuWee!j!DAs#OeRCt^q-0dj-HBHH+bDBU>;@JJ{0las|tm+iL>GeQP^Rw=O&vx~|Aouzw4{o|f*p~)$V~=-O zKVbB^MO;{}82$N{^Tg4uX%Q#H=rm59jBK;Lde{>%?Hvc&U!p<^xHipU@zxU~9xbZF z0I~`$fV_Wnkw9aV*m2YCz9GE3?VtGqRJ0r(WUXm1)rhQvv%;6Av%#ZZ;DDD4Nt810 zV(=vr6MLI)F_YBvCLrvZYQ8uNUAinZ9TEKP__Fv+NT=xAZ3&_s=ubb5{@+zFdPKNWR+x- zzcKm0)m7mFZx3bJGU>38c2Vbtbm#Ew1$rj@6Zp;{4-{611v&I*7d{&Z`0$>h#6SJIwJ=QhsJOsFd+;wN5K$Dw@ZA^ zP1hdE1HbQ)eLIm0gEXgN0L?ZJf4ggRwAhGDA=#8+qZIlUKA|;q3w;dkq;*7!my~oUCgPx`1r7hcavR?qG+oq6n5p8?GL}4?V+bn};*uiLrK_9y0LCPG{XVJZFA+e+Z=GGSX>EMxXuiimY6 z+EzH;XF|*2Vbmkwd!v0l=8QZ-Fxd+$$&<`#g%naaiDuBwiG1GgjM|a*a?9%?W6La< zyaMmIMZ3>hGh&`#nK?4*EHegirk;x?!?X~-=qA(2*|D{sUY~7nhHr%&eV8;*&|+5; z7^f$AER3z?CUOB$gbtd7rEzVK*hHD z$I5QpgBT>58$xh7F?}4JrkR-E8s4(rRgBb()%-v=Rqve-a<*+dR#J~}xS05Sn?Go( zX|W)ZP42S5C@=-o%%mn+IBql1r*!R}9648k;de(4ZXIHJPG>V&RSm22L2cx~ zx@Yw9SV~fZ=K>Xj)s=`fz&xP{<>{GwK%1f$aA zmRz0AG(WtNXH~E%P$Ma0Z`USfmI7B40#ic-#4Qr0seom|ii4!VEGNGTiHjz z{6a!^+4~)}Z?8S7@7%s=WYo!4{Q^8!|I)r`MeBtiGPA^F=#{AC?#K-5GN7&w&vHhKL=EiJ^S@pKQ~X}+)c->j;OTB#C&w19JjDf9{RxSyX4!X7h|}BB*-)QKn}jWm97ufP30^k>ZmMWf3#Pw5`IkskNB@&VePj@i zN+A$W_AAJ~nf%M$I07VIT+dE1J1dZlV1by<^NT;AmQ#O5jdj~g);@oy7{GlA>y%BRn`_} z@>q(az-B^fzt~G>%jfIb`$n79(?gVvnR^q5Q<42S6|}AyoX?uSL$-L4Djbh&!kX5} zYsMhWnm`onaNOGp-P6-q2h-h~;T{jRZZ~m=DJP)_Q-D>KY=~0sDwMJ#WWg#S0@J;i z%NCUwD67x=EdHmPtX+X+;5Tc-I)>W|-dN4ZBv%r-kyrYX!il82E+@Y}`Cnm!f3^8f zjkxs~j*>YU9^&+;bO6Fx+$6~Jd`~UX8PgZY z(gXLRtbo**F6LvlWS-;l>KLNj&?+HYPJU$ai<1pOyKk&R30ZKbbce65W4DTss5!)> zQQCY_f>Ls~XwHOMHhRrH=`xRPaC01S;5QGzn}xuFDb_88K4n;%18WwD4i+_Pzh5P&KyxuBwxx2Rl2?*1la zZ9cy-4(rGB06O{*j%5t#bs}nrt0%V$W&uH42&uQEpNH>{rk_}Mrd3$CE8kFR^V2J( z|FjR^C%-6LBGycYuiWFQ9|s!rX@iOcqoLU6d$8}hiKvr86UyWWh~RcsFwMbJGa3yVxZ7%C?9bpZAN7lk8^*& zG2ZB~OKyHUpkL4%{GsOT@4tXh$Kmg!2(ug>xPmny<#sd;md!JZ5|*e244Q|u4b2Lb z8)C}81?^B-m3(O-#^eH+g;}|RqwH1PC>l!blF=0yAKJtjwruEGxHCEu7P331t9i&! z0Ozb~vTlBu?QoZIkSS>2;@@n}Z<=WO;vhA)k_Wg>n_2UlXm|t%@;-R?HL6Z_$u~im zQ-V3vSo}~>ObG9BypCdhU{ByC6f0IaD1*a{Ap0AC=xOQ(9ruw^VJPiZKgVFI1M2jWzdFLp;1FIE)QgwKRSQ{ zYY%IGM{8*n@nqU|>naAHjE1kyR23F`Zi$nli308>-0HtLQSgOtNKDjqHJ$E|Ydrcq z*4V!-$Ciu9g}0ORxG5Dw)@s^xQ5$Jg{B)LRUrNhqw#_nJz!75&TpXGM!3xqwf$83k znV3HnzZ|owjiZ9fBrgUTIb51sO){zFoaQM=^Rp1L+0PW|aXz!a$&KGsEc^59(eu1AUp2deC4zs}2gjD3;`LJy1}oRB z^BSp{a!DaSP2Xutl<`1ToW8V-D-x~CPu5TYT1vkT3p3W1tJJ39*=$!41bNh0oR;_t zu^rhzyyX4Skr*^<(ZNi5xc(q4Bspnk&Kt+PkFi|#b#e+dnjY|ryZR{rH;Dnv7BZ(`CF6!rTKHs z-^h<5Y=w?y4$%LPvUmHjEWhsi&c2;fm+t8r&Q#aw(_O=sWn{kyE+x_;MM44m#X{2!HP%~fTBk}3ec z2MV#miI`F&nJUrq^sajd^1V4>$7FRw=ipFy};(Zk5i05-AZ6ky&;1~Ma zc|-mrFn!~ERO&RvAKm+Hr0bC!`&0VJ9;gePqB*j-M1{UQ2uOP^-QISvC=~kaXmkr~ zw{)mA&}7pV6<#W>5pFvBUBi0nY^V!6|N7PLF=f>2=`dle^TOI=*qFU)-nZaJH&2+z z#${TnLtq<0U2yY!FE(nHZ<1c*Td%{n3`ZcQb(J`YJO)pt-=+IVC5u%K! zZEr}i<>J%Qg3HGFwAVOy;KKS>w*S3&h}4C8@7~(cj~!-Y-=+t+(W)F6TXFd4y8@_i zgf`d14RZ5n!>9WknCKGA6(rs1Q@p60=3O$v>XR@Jvz_T; zUp%A;eA>8GPAGBjYw_4@)ATnWKt)fO4)XiroZb~Gv9X+P8r7)!(TS#$Lv>0a)l0## zJJ=D?knZbRUmnu2uu^mU>Vlkszs=$j0hHr$?DnHTG|}m*bg)v=^J|Zv!DYC+~?`$QP9vyZO63jN`;6KP zRjKqy+gJGdC3VzmB#V-DcFgS=C{>&W^}LswuZ3X&?0G*nZ8(h;k>~1>z#ssqg1$A$ z!K6L6C!z}RMAE+xiEJ1b-dw1BpSl2HDc5XeN^Df*1B}m@B@J=52gN$NudzJ??umEB zY8V?X6kT0f*sq@_XFcv!(KQjHVN7~?SugXn_@Jzmxh)Q;l=Zy>17e4%Ow`Y&MfM9H zC`!tjzB9b2=0_~g1Z#p|hlx2D;XW~cQ`K6Wwk>K===_tVMKA)r_(*_Z9GsdXJnrK? z(Mp~y&Pu28a`uugX9a*lZpi+0bzM5{Jcdh{)_L1{qoS6Yx2^CIJ4&%I11zR{93-ub z2mC${2M?dIl`KGK96-p=a=gcy%B3u(W1~*$H@fms9%0<)Uga4AEyc&Eog$L*Sh?Z# zE;!3)a4enA>8%Gng64~>w-(b|DZ|l7c5)2o+oI6b+aNK8$DGK!7{B4K{<@;K>Z{wkAqYj6&F$Tr9BoJ&&Uc}zciQJu;nH92qQWJeW)C=QN->1M#ld#HyiMean1uvL0| zMV3F0t(&OxSMC}w;^vW;IgSUXt+Y6QaRcuI&IKpcY6;O=reXFtMTU}c?H1F*l6%!t z>y@hY+q9rcDvCJuTDr-NpjMj(DB6K)6-1XTxR0jRCuCvv`KL%a5;3p$&6VHo-AE-G zK;WdKONEXU(&x?Tq{^&gy&qaC;lrhjyTo7avv8y)p1ju9G%C9+nlevYWJHLCv!bfA z2KvK`*hm3Onn1J!ZDps|m&1hM|6g3)LxJnw3Uw4x96W%=ZBM~d>Q|_&S;27k2<`^sAj!p$dH((# zrfowcd*+n>Hh|x6b^`o{`U`lD@l>(G8m;2tU$>0!%w8TzG4!u2Pj}o9xl4qijmcd> zS`|8(#hpf6T3T88)}OBADki&A!6qpgzW1n885%S_@LeElBGI%F#l+@Vu{yjR+#mvT zWDdK8#Nxy}+N>H-GOB?~8b)$Hy-;xflg0_L?~IW2*(#PyMA$0$*1IF6cT2|3f!041 z&35kTH}Bg(y<#SSe>*qRYgbe(9*k?^I)^i@U?psZlu13(izu*mI$`68z1POGpAs!P5Ky`ra<8RqS5~9te2DYr zCYS<7wC>8j>Y{hT3YM65?3ixeILP>a6yb@Y=1=J9u_!LKe6l@mYpI;h|CdjqV za_>(kG#dVqE$jKU#6?{XTg9zPQ`=5cj;CLjlu?+@K3{|@=2Z8q-EXd3l0Lpmc)FZ) zYm>;xH0eQ|B@TC;mas<={7D3I_Wlq03~xxH zxUd0f4-faZ5%hrV!WQ0IFTt8hU2vS2DMX0{{|sIF{F)Tm$j0f&dm4|~BA%`3w9I@` z+T^1|8tRcMSydQ*YMCrQxX$P;>LZ3aS5>!^o+Ize(=Eg0HK%KCCTZ2P8J~6&Aay7) z;ZWJ?NExoPm^)I+U0FJ22WDJ*=ZFgaqV62-ilps%3Vu4Q>=sMMEYlXaYST?GB5QWd z2~&spVEp-U(7zItcLQN5i&m6KLnLCeW{^g~ETV%tu8k5uu8g9?-@=XFt}A#)d`e)D z7$r0l+;me;X%Qz1y+W$t!som8f>43xX@1WV$NSEp>NDyfTWo#SfyUMo*q-q|+f(DX zpaC$JsuREsHTtH5Psxg*vV##=8L@+NPMNPk#2F5ZrO!Ki^{)YW2lpdtBejN-Noo@@gl-Lj1ylFG|7zPr3fJt*=Sx`*w7NIYC-wUiJm z*}F5XnJicg1Z1Ro*>Eaf_2Cq*nl)}6Z)dIK!SNGtujZ2Q@BRM?jhMxYLm89XjhKa< z0Kd~UaGW`3`$QN=9h`JVl=%NtXF)eX?6u-1ug5*?9=R@gCR=fmUQ`7xb?wnl87O_YsJ`AyBOS%oEiXFrmjKVZ=6e63xm-XB-0M%ID^G z$z1Wnlk?;w!75>X?hQ$I*&|T?rI*?1N9^^Z8z(?W)^q|E!vc&VY=2Ax9hg4S{b?`k z$%~3twIa^H)8jofxyA$mcy_aITgrm@wuND$VR2Q;Oov`%68RKfqf8AEhf_HrY0js$R~yi}l%oxl4n-PKt&^2wZK?C{k|QY+fFgOUxuL>>?UcR2G6@ zIW`vU)bV*t`c-gDnYR~bs+Qr4D@VrUiFiO3(4&j-s8I zjjLMyZ+>`OWu!eIK@ZJwx(iP-fhNA>!<=d|C1H5UIJ|Pls+L;lHATcd^~8xOU&2L& zI`MRVghrek{kz@YGry8?j^e-Yp-Azp|_NMHj8vFaJHju(f(>Yofr|k3+zI%w*R&3R{a5L15Xqx~1K3+x{acE$he1%-}_JwZ?6FJ5||T?cfiH4l!=nBTrPT_!j{Rm-F|qIe#2! z1k*U)oE;phJdLPzy?_SYz4TS**Iiub5bObvuNm{R&o_AY0kF#L!lIY7NQmstc444n z&2eZdxfMCQ5#zSu4;At)2Ge81$|a3OkkI&8V|<>QD|jhNU4;tbCleo2Ex{6&%3e=9 zB>SmmpyNr5cFgqiDr@*sb9BV%AbB1ULGFTlif4|!d`~)X{IW zk)vYv(5dSd&i<7nBeJmdeotV(9@NtBtR&8O{8O?}uBwaftttS??Jnf>fH86N-u;jh z;+49{UA`J{`@J|G=B-E->!ge4oP2akKK~S_JmbR^z~}*3@c*agc&T=&!zDI8W?O29 zM0|8`jM-C(Ui(c((eq*Au(AmGxZ2!p@ntlCd8k|eJ>h#maAMIJ`ol(h>l%JuEa+Kd-Bjq^mp()!JkFnUcrQA!_uc%a18 zOf1e*1Co6jRN}?e8%(;{_h!Ej)Wi!iY(j-najd>s?OOco;v?0JrZpIyRMdqa6PSK56E9*hpG|hdGH?| zoWD`dj5pEQ)H)))r*K-Qy8q(~x&oi5c&v{Ngwct=DRomxIEv~-%xjuQeDVA_-F;uu zmQr+9cNH3Z2;dUeKVt!2!~d$I*PG&~m&pO>Xq*{J1bO{N|C}NB_=jz{}H>J`9>XWE(R zoQ^1T;~kH1docj#C{N(gx1nD8hF@pfjHU zy_nyCWG#orj5e(00TNdwovD5mo8`Fq3rDn8OEu^=*BLGkGxgHFkmZ`GbMq^bAYW>3 zl8NtUAoRRrN&^qkuvyr<{DTF6i!gbz$oZ!i%B-h4)Uc*)3`4 z!&QL2Lx*j*jDFLXkUo9ld1h7LFfYvfy_%!fNjLGn6BO<@XXhN7&8eh?+X|ymFbAeNapLz-N zrZGANIO7c}-;IJ4W74Q6=EWOx@pzs%=-AYAm>Y=F zuxs$JN^eawp{C869Wawd0~O6F2Pm(d{;ZJCCoax4&*slCr7;Q^Um@pB^r_X8Iwg^Z z`xkLN=5ZSk>=-0DFKvH{(7F~EX~r2Ug?aT7u9= zG~}i%UF#N9j})uu)yOG~D$twHR)|uXQ9e7MR!VtHQGA8aELUAY6oVd~pisnRp~g#9 zU_;;PuyTkHHV7Rp`c2f!-Dn<*#x~0cMGcrS@zz?;ozAA6&FL!?v^_-!M*IJ>#|P>y z7v3?RAH|Q&N{#V=UcJ6he`Y(|uF=REL9n%@2pSlrQ=gIO@Vvs3m*b7d)vv!eDXV3t zscpD?aCi*grSP<>j+Yx<*u+g8QP!GS#ZS$o=G@6fzX&LJJQm@%%?zgNmu0A+cC6je zR&?6|dOA42iC3shS*vZJqBq~g7Y(mu|D_1$JolI|Rtfjco|mSFWf-RG$o(T%2u6T!`59GwCKj?amwZm7A-NliL@74KE>E^v2~LW-b@$M4R5V)ni6b}PWsLu&yxNqMsjiS)9C3xc$7K0|Q8Fj;mE!^~ zZcGid^R>SqF}d7mY)T4FxuSxu#t0hnp5*l=*5p20vOQj6Vo$?ygGF$iDbZI5F1s@pzRggEha#Suyw99u+-u(N{?o9cy{ z|1zS2Q@GG5ZJJ)ZIB5Y|Smx{>MNh;{@XG;eY7LQ1_hLdYw~cT-cA|L*&p{lb)$ z$dE+^>NZ0Zd9FaLueMaeIEh9%XjOeQLe47oT=s1Ub@?sD=kTVq3n~~gUXJMcbOa5K z;B{=yJ@NCVfRV}TB5ekW*W7SbWe#!osqV#x}OktJJ$2TowXKR z5$mOpNPtbG%1YJ&N}CiD$2>PP`;GREM-YcGhPRFRYW`&oXyfm5hewmjME*98q~Yq8 zsWVxtcV}mad zA76Fz3l$!_2(3x&^t8&r)djE)W?N2}vAJ z_PlXa%++VUT4&Pg_U118oxhFJvc|K>NAV$-Rdx;ZmP>g!Yq-yKXdmT^D5V21*lL5- z;RRsit10RJuZz=*7YToDc3)zR(yG2>X&ieVlAe8Oxm|_>Il^|~bhycc`Pa*y(pjZ0 z|McSGJU-UksZ)$o^OHTRrMox#65cUJ0WI2dHiHxBQ-3$&llo(`FLl3;C3oO~3>&}E zN&t(?fbX&3y9&RSD=J^IJ5`lIEBtW4B*kG@ESoD@vN0q$o8VCkI+oBv!c{(1 z1RRe`>dVkDD%x5ip3Tnoic?}yH8NsM%I`7bMJ}!Puhe}0`1x}}=73aI>C=fa`)H*3 zR`^c5#+uQS_KNEFg8qSF;m<#g;>C@*iMnJs+bp<-Nq>48c538p%uyNMuJR=JZQ*$o z8n8yW#X%>7zC){ zQ2=WC$`c1JnkK{%mBZ#2X8$8D@^gIO^&TUFp}wyPxM}0@D%Nk^`g81{I@mzV`vayP z60VSoKk)*1VbBJ~*9RY+gwMm(hZmR`LdkCxOYY`mTQ9c7Uc8}H zN;L{F%GX@qvJ!!fab0D%%K(eJs0rzu5kR1JW8O;&P;+9hj*qM3E~Np_uMbYD;%cVX zT>Y@i^ZnABZg_(SF}&9nroRcs+?0+F`9^qkLpD0$wemP)XyePgmuA0dS3gIFObA>s z+~JhMgc1$I?EMdp z*T*CaZa6;-OHwVR-I>}@Elz`a`kv_p?@_zc%?vxw8%?1ISD$^Hohi=U;x$kqFB-8} zD;hytE5yMSZe5W$wu5PAM)ss26vu9)Ax(W;n0q%t%61in&&QP%H6rYHj5%CN;~L4~ zhe#jnX)&je&yOdGKG3dw?atIeaiUDm(UN<*c}|@)chfjkaMgTbR8mhjER$y+9Xd3t zbbg)SAl5*v?-uXy{(k;oH7^-*wxS0A%?^466zwQ^V`zykhVMffmx(AD&(uz7pooxHR;12?p}& z%y=>tkuU5~gt+Z*SoM89@44rFk?*YFqkgkH-l%4a_E{==J7ie=cB^hHdc z_=;Z=WTsmdLrcFbpZ!gj#~)mP&fwwtp8M+sJ|jo!XB*1{n=CTnL_lAAC^s?xa*3a9 zFox3unidnV*Ld`|Bv1K5?_$RG1%K|Wy+&WJT?5-=&q~YBgPFE}uqX2x|D@mYe*e(? z<}&<-qqGu7odhJXg-`2V=V5o3)$+0XGTS$02kbdmQ(@QACHASVUb@EXY}SU3;e>WS z>!3Vkjqk&&~l!z(Y+z+HZETvLW7Vq4Q9iLw{Sqx>)p-E zDV!F#KXZnuJ?E|L;M)LZOIX6jU4N_OGMB8IiN4VoeSzvthMh%`J3N)XrW7X7XqlGl zZJxZc@zKEZxey|RCWAAukR*G%y#WT4$o z70Z17>);&P_jbyqwMk6x^2$95$csTf+Q4|p^WQ!Y=h2Vtfjip0>2dr*S`RyslP^ zR05g`UY@*C{i6&1PpP-_R~^1Wcwl|IhjkVopkd^9;E7gP7aa*@#?m6}>HAg}!d^?+ zrZNOsZmvzx1Cb!HDWsN@{&b(p5k&s+iCRT`(iQ6XB(j+yRK4dS`?JLJ6{P`c0N>0G z{N-FkXg0qy(JY9BiAb93;#D0dN-JdZRZ7Snpanz@GtvCye0Bd*?y;foSXS!;ok5W( z=4H+3`^(o0CKn2=1Nq3F6M1ERPvKEA-q^pgQc8$K+ml?hTb6dgbx!b$<6Kd_{s{t> ze};M8q=lGKmlY{&0bW01;{Ymceo<-HwPusBJjL5i?Xk2Bs zOViub_kd!|Ob02=9gl*7oW%E-GCFo}5nFu(5|Vp)PD#LeLjmE&3nNZN%RDD=;`NPR zzN>_7^PgRvR( zXI9C^dRK27GoMFAg(ZmK^)d<+c(#wnXcuQdCRsA-1$}sN`HBdYYdq?+m6Jxt%66aj zQ&5K|9?8bdzHoMMNeb?%x3icMW5xwbS=cGX;-uBls1)t|{2;nSQf)D%)>!^ClVfu% z_nAKxOg9H$8T?$ygCy`cC*2o7p5IasMw>ON77R7C%iZ*q4Mx1}(n5#*k%b)Q6u>%T>;I{=^ zF@Q)bga1@W0Z_nAn&cNhI!NWiS%nN;C05= zoxj8piQr#WK$3I31g9j z5v_>_*aG@-eqf!-c~uR;>dCVjg4qeR8jw_R((bAT<#{PLrsL1hChe5!z^3J!&K0=& zs98cl1Lub?p-D zUoLq)E18(RZp^rzvwwF+3H{ms z+`ZfVTis7~zn4MN%nrjB6Z|!HY34ifF6c8{Myh%zR$~|Ntm`^+dq$uIh02zFf3Cyy z=?-&OV4R%n)PWmfecDFqR!k6PQjZM%7EQxweChbsmm^iXuaxKaa6HA<>IQ-mZakZg z23v3=)={yhrP(Z8=<#)S&DrhCApZI+?)tmEa={tD_{AIx!TiEckxUGg`zVJV9Z6Um z1riL2^V$LAwh}J(ZVZsJKO7ywKlbFDv=s#nYscO06mT_Z*wl4N3~7Z#&5DxPUHLFP z$MeHM&q}T|iAKpS{>q=2eHnk{pYHyFD**N`L?2PYc6;oL6x_IK*qC+5u1bN0%D`PX zqcf^s&AlFQw;|82?Sd$@r*7On8hU=3-%BN77+TgVYXoJe%0hzro1p)9y0=&3i*;yl zFq6}mZ$B`G1PD`#%i6Nac1mn2A~&Fh_xNyP}I(ISsK~u z^C;KjSlyt<5CYeN*zy`v9nKF9Uj}Z*A-fDgQmLqWs3Di?b|Z!Q72AB2;9zNBrR#FD z<-7(*!R!mq)iW`{sAYd`mP8@ zlpLs^0G7k|e!`r-4iAFC;Y$B!P}|Fc=T$9q^W^q!a#rx25VIg#BCg)KZpGJO{KL$i z{puJ{8V?Pc7T> zvv`!GMMCI659+3wj_ z6|lCXfpsXDhG-%+4-X!(0i82@tUEdEPYKbzKisRWyE1^yMA@yc5U^8P!1o%@AU+t> zzVSVC{xKZrN@`%|r5Y(-$0t(O){$w{bn0<;aVA=Hnw*eW*BXLBzLt8Kj8(a=dNgwW znNe5S-l8=8AUQGei@GcCA_=ALJE9O1CiYagk@U?k_Nq}`RP+5h^4j?0C_|$=^ zq`To~a>Gr`%2oHRB;Iu-J0ise>u;$4~SmEGg+>)HLOrO+s- z)q1OKF9TB^w%UfJY|I=_VamLAE=&Vt(NoG(o3pTD_FP}y%Aq%c;W{qQYoXuBo}t7R z$mYUF%yt3c8xwhQ9ZHKKCYlj2b3}*zHeJ7f|iS z3T~f_;kl=)0_}iH9!dRh|50Hh`}KjNl0;cM&v_6hfIa0rw}$nuoqy9M4VW0fIF++W z6dA``qWMK_YaadKG+ilLAvRl0tp)j=#3CmbcxF>EgpHx@EI`+??jF#RO0Y*bgIDiT zg;|0`QUDXw5++*wC*a`18dM|3aHWsZA%8S)+n&unPw{RQ&rH=~s34OAs8mF;d&STm zsA;4D@haNLB|Q*lMVYhkE+&M=YtlK@(y-E@ zaO^}?b_W4s?QA@$jR&7lnUq3@us!~7cJ`A+)g=7fn%Osfh<^zkSSiT$hC)Tb7lcam z91ZzcHA;Sjn&jfR6`KtflNFZ#z z*DMDaO@T`%XB)?oBslQaWo2y%hMVh;pC6wdT`vG2Zf<|&@;F~WP^0Ak2M4b%o~=;A z=tU5InfIhkaM4x-y(n*rslLw5ewLA=+Eo9S`9&&b9uEds+<50;NzC8uFNud|2gD=I36{CV#@rQUAc;@F|5{ zhbFo2uz@H88y`<_;71>D3XsdlA88vO%8egSPh@H6yx}W)az+Pcn|*v7 zw|9!jP$~+Ahit?(TuT56w=DwXKMoK5xJe@WnF3cVE`qL?CW9 z@uuIQRropOK2$mlh5RYifGzNYOul}jqQFwi=(lGu;G%cK%V7reeG6R{R~uC&FcMs- z0H*Fqvfhc$+B2${TIHf92WM6mAdO<8aJT6bYI{+}T_iE#&%iR}s^~AU+Y)ahdvx96 z%Jww&mLgx3X9E==0+-zx?!p|eU7ZV&#wqr*UX)af;V^E|`0}{M-PE;4Ji^L-%zlh; zM*fVE%_uVWb=4$t^fZlIUNxDB%Z0V`aO*=71V#QjL`lKGM-6YhI64Vjz;H=Z!EsJiR$+(VCY+60x9vmcT@I>?QC7TQUx@ja zi!Mp7o`p75Yk(O>I?`tjyWXYUL+EA8jAxO)xc|dc4N4UAJ8k6*k1nPzxNx|j{-^M{k{~bH%Pc|kw@DB|T=l`j(Jv29K%MHT8aUnT!L0Jv zadBbV2ktQ3DDRUo&oB&>>mTi@@oVnpDaQaOee5iPf3Q32SKP;A{3|QoX5%0uB!$oU zi(532lq904*X1#9^~*0U^vqy*r2TEr=YIdfhmn>)Lnb6>HG2!7z$z%y-x_2x9l)f7ah#kG`w zeTG|-x>|*dP1Rn=^=K`nsje@r+iWoW4+m>v3rUNHv#1t>{hZ?^X7sa2xo7|o&Z)wL zc$KjdU@iP>diFHg;uX#_zqy1U>alacsC|y7m|~9RXE*1_3~!m&6EYAO9~akb#PgHj zS+bKl*&?NPNx$)eFA*1}#D0=dO`2yj*?PmGe_c?;w5*vw5O_sM@=$Q%A&8=oYisd} zxxlQ%x*VV??gc{gB2;1$en>7NV~#7ty(|o$@1!aLMN65JB|vzA{Qm$naF!~`SAIp+ zK-yl08p<}@1qFF=PpqS>;uMsq)YIZ!9uoc~k6|8|VBTpF3Q-@mG;Z{seZ!l6*ZMWQ zJ>f!Aj?_RNOtQQlq6>>kq<|#tKiKK09%XrjK(qN6<1#h(`^Aa=X!b``jW0Mv%`8;= zhh?;6v%QC9d1C8d9&h(AWI8y-0}zJd4G=etD)^p%YT~`vGD-E=?f&gJR1+w@6;aQq{}}R9IP2b4zgMtnQV%N$VRU;nkwTQ$#@OH9NrZXblemxzB1!rPeE8c)RLa zkZkBiouGFZd!yqRXWz%<^S|H1!zSa+0)4Zeo_&8gh|lbH;NWO*%+qYQc-4LiIBz*WwO1wTl4kKnRq$u(d1 z#n56jEdQ;*vxe%rgGGSRCGuw}l*Ep61q`_r>NX~c#}<*ib@3d}VsuDWsT;X-DLdq$ zxP!yvg9Z5IGAWmERtG5Jd5kcV<06IY*S4j&;2ZgqCB^VjNGc_XqW6pd%<&ZgHv1EVrDMvRU2H-munVJcDcuLp zC}XSt+ZAJrV(ok2!$_?;ITZOwQ13&%wf%&O`c#%qZ0p5w0B@LIZlHVvza4|D)A+gc z7!>fq>6y&FB9on{qbHeTy(~O^eY!xUL#wY^n(fHu>x7}Sjqvj0Cx>(- z@Lz3LZ=qs%d-SK&e*Cf7zoa0G(#~n=ND}+BrPf$1yFJCCa9`@FMxPZ8LM+4VOS6B8 zCvg7pMXbkYf{sWk3ljEiE*ElQT2h=(kFh&$#RL~}*Ll+M?mqRsX}MwAywyu`+Rp4!GQP?v3&bS9s69)a{FvMB^q}nW1dy?f$ zZ7`YBbnE4$mm=+F`?+5b>04}6voV%P^p=+UEwQeDxuWKNUhdZa*8kwQP?a@K+Y9F< zf5$^EE@#bcwW37lvg5s~5!g?CjRj5p!8_xsKYnLi4mbR-f35#r3rA=lKX_;C`!`oy z><}2eu7{oLU#cNcydXUD#i^cgIZWLRY!chdbMOAsF{#l9X|52*H|FHY^I{G;k zNZy_4d&L8|$4{fpb_o7+0KiCTqCQq84wx}=TObeqFQPV((@O$de$w@qB&3Z+#u=Zf zlH3HoOo48J`yz@_s>AFjS1Qm~$|uqTUZg_~h`xlAruqzsl6G|rpZ+Eh8LyBKeY zY6^{X{ozZ3cFJ+8?CupQ^!4$aIa3Xh!`Y>G4|!3Kw6uLtV&xYl4<4*3c(QWcl(xP; zc`$w9sAN>_&i*7GcG&`Uydtj2vpt3vAsbs#H>swv(5C18*f!d%$F*{sy)B%PuoV~~ zCd#pVklvX<>*nV%$ndIv{=7_};IR7>+#F==ghiXLZAfq7D{=p$<1bLe0?2$X1#ATg zU0xHK5al`?2P0I4!VWRyg#*-+N%FTiwK+r47QnJae8ZEBZXA zice}B(|C`<4B8r_7r-7=+N~b20nO(RQ8)->v*)XrQ+IgnwRvqo`xcDGD_{tPvb-j+ z*e+bFbF5@RBV^`(N1a7E1v?oIQtTWGH4q{@sdVmas(#L4KOLSg0!m7U#0Ozk84lYj z`Rxk9SE)0kP?~W;CQM?=xm41eezhV{kH*(JTE(_XDgH)-CLKuyLb_Rg9&tA&wuPNr zrd>lyMIq~+trk{JYQPCVh=QO7)EZi^x89!ta~IFp7olatk{G^Msy2$7UtL)A z@JH>ar_7{a#VIePgG_5M*7uW;!o6dYVqKX3tN~o}F}CH#PP(g}-}F(NUmoU_4Zo*ZDd=d5(!^yyu*X;Z`~n zyc)v{zIf5%L$WEH?_wHE=03Gz`o;+1#^ys?ygWE7$1c@vDFo^j%AMSd7Wey#`m|kw z2g$bkid@aGhKraYPVIqbpn?U_T1{n*me%jZ`NYv!-=5`8+V-bWy9YD#ovlr zfXp}$%@}Ugn0>&l+R>#TqfO&;Rt-f0FiI)9+@sx#D%ezXsh(mFBjfZ_b8z?{J6`0AnD|(hc&?DxIE{w~F{0OWui#;0 z%*Au@NYpA#Ia@(bD%L$nk;#km&=x$);FwsgmMYf%)Obg#M_}SZ=&){~j6=L*!?P?! zaSar?wLg}PU0c!7!AcX3kt(mu7Ux{kbEqL~Xw&v=_Ak1>VV(#3ghG*xsejS^mF{mu z??W&|Gk|b+_VaWt{a?GEpI5-9l3agx`qfIrlb&E3+?mDCl99M92xb9*74M#KJ<=GI_SX?!oP&rxC$t+G* zx1q;tx=Vz$q(V}a2Cg(Ahx0O8v0Gc56kb6jyEm?ZCyT0ZnwG8giJu(aIK9aoW%^CP z+};&zpT`sC<$qOa)op&6%&rqnJhz^l;p~P+83FgOtfx!g#F`zL&PHs7q->^!Gg7x6!VlILeu1BCXo;#2+s z9YIQp*b{Kc5QR$YEhf4iNmOst)w2DwOtZ3p=F*CVP0Z#!gKPoq03mtN-I(&^z&@QK z3(lV5eNEADMPhGGPOmX=<#G2Pop(1&`lJib-f!x-ZMu8E%+CvU5ryz>mcp=Fe@hIA za7N}OxzmmDBykll9;4jCD`mAc%tro z{+xTIDw4TtKeYx`TsF9Y--N?y z;w*~QSe(TQ^y`}9EY7;LEKf({9cJzLnakY6kDf?VM-N}kEw2m(IIAylpLCiMeq6JO$m!u=c0D>i|!pWW>_KJ5s&8>+lwWAhNkr+1hPko#9Qwg zZByz~Jl3m&WQS24p7ofNGqM*8-$A)cB8q`k&1n)<%@+6CEA6PvL6;s5H`N^STxaqL zs%zPHss{@lwU_?m2LIT7@b=h!NVf8I*G282KhPTgkloFUY~${Sx)lKxrHR*148eoB7w2oI+!s@WJ1tS&oSe~eFETeStkYFJXjc+HPKH+4*e=gYFy_y3~Z)?BAIEh>jNM|W&@)-m5PnatwY4yF}pQwE^x_sYXm=G z20)i)HEk>eK6nwn>`7v1l+f$TAdGEa`{3d$d zWq0<+yWarxqWNqlKXHEsF11WNFcjQjh>GC*N=N-N>QFsz3naeQz9)Rs6sT^BZo?GI z>y7Zxx5dw(IjIh^5Fim8+xX_njqdokXiC8OwQE|6#rFmv=x&4JZ7hjC2SJ=r9BqQ+ z-X8$0!Ibe%m3NDZ9*!JP%CB6@^=2?k^Rs}}+=ao~-#txJ8Y}$70F-tL3G{|BHp7D0 zrg;OA9GVR#9@59Qc9D6Ze~D7B>1siqm4$ZPkz=!>Q(>lh|J+|+5WzWPlP}*CmIWy2 ztlCtxmum`7Cz6(tDfGR>93_5C%T8`iiSFh?ZW8Mpt?@e)>4TKqP&yVu}x zYnT3=Bv|-4-Q@#%J?4rc|!x4w;WsipgKQyCb~)um**!3 z5!ldBTla(i;hOxF*%2y=kTZ{G`(4M}I-+k!v+0*NXYYUggA3qdB)EcVsP$_%m&;#X@a5(4#~)wpchKh?#q0fJBEI`J;Spu&{U7|D>q}HD`{MF= zpGLs%UmV|jaCraNZOT&>x7;OQiYoF4<;0p*E zu%NtnZwTIx!J=<|5Zq{+Fy0s)t~K~ue@xK^db5i2lvNobm!e2amHAOl{Llp?VX&A? z(J*}TUU`u+Ku7|)m%T8qU98OFvkEJZx1dMm{(bX{7GD88$DMa~tKPkp=dkJS43MU+ z_0CY2csM@CFRw~WQOC{E5Ew_o)A%E@TWyE5%cyD&=M9bBP#Ytx`NqZdn~;NeKP!oY zigt$?_Ae{89>G%9rmbTjN`g1X7xrWegy*b{Iw7-caVfdRD!y&rEa8v7yByAdP=)n4 z2etiafEln{%4~#P<-GieXd-HJa#{Pixf~ABU-{3(=Hy8e!}CI)!u}MgLocjz3JRfR zhRzmt3Kx#obso`xcc)sa#lEGKH?HFeV*3gV7MP-G_KECvm zG_faEh0!nOdL?1)`(O0_zx}I&>Np_6d2owQ%+D#8)SRqm!sl{OzFnhf$^Fix)Mv=A*i%-YdsI6XhLFY{+Bf@?&I#Z4kJr1kvz| z@gVxv{F%{n+7vx@Lnb;b(DMmxgfJ#qr*Q=W+|n{NlCu^ht}>$=*1ci2^!}!%wb-oF z!unCuzKUv4`IY!NM(=rjI4o*-c5;5h@`dnsU-eUk@?q<#`++L<3^Dex25ig@UrX;J zEuYx(+=9Ci@>sBP<7KlQ%@pXz61Byt`ZOx!qMA7)IrPM+r%_TW>^G7xuERX4u?a(v zZ4w@_-U5W7E+TIrW2mGU?9P6z`)c>~?i=72*Z>wQAsCoFTnHUjZKtw4Po{@~ z^a7ucmjrIX8=avgs%Y2v*`(6=e8|SdEg@J?L}t2UXrO68v!&~y7Cg{X?gW7(xyGS7T~CdHx0&XuwG8ScsyRW#V{w6L2(1D<}&f5#l+t z`V06h?M8-U8DD{HX>jymIKHio70(Qj$jI`C7pzbsK-+Kwpqpcvs}}Orx4R+a>y50# z%T%ud8mGQ4Cw~WXRsYHzz3#4UbX(rhAe`e)(GQ`LQaSus<;phYTk+#O%V8`+fbGxThe%5(B1!sRL6GrY>Wonf1b z#&_2_YEo?JnG>J+!3h;CqX79-^)yJuMs4Mo#!|$|!4MR@RwfNM&+2!SZ6isNx>IUL z8YIV?I8}A|iEFG@SYZkzL%ay;c>mh09b>)yC_li<;|2mrE6nig5c}L!-A*G<5u8@k zVJanNlK3eVs@I|m;e_^=h>HdIGUGkT=7}#HqPLTlFJUY#j;z6q9X2;McJgOwX5WDt~t2qw~Dm-CJ#5T8MieIT+{Hw6tv; zI%9KRIMd@5^|+=X6}v0_OotZ-Ml+Fe=~4aZ2Y+m$nxIkRxZ=yz{kSmj8aA`=^7^*N z-cwPd7=G~>#(!SR6HXl041X|#j6>^P{u)6#fkc#l_(u|=n7=POD34%>=T;E@PO08^ zFadhmhBDrMNL!|J-0T&`XgQC&GMU19&CMO&M;qHi8Wa*O!brdoPrFH>?-Gk!pg@*q z%Z<^z81<)W5KZIfCYONbq|FxI(t0R{+1znkOc#BBXcRQzv_`6cY))VOsh|7CPo)}a z@^Qu&dK+Xr-@9!efNl9gv@%+bUoHJc)HGb8M@stiJ)5S|igIZhYi#`2uExo$YMNUB1j|aIfM{eO z{6;G%;c!>2OHhx4k1i`F5;LUkOQMr$>HeL!O%unx&`i6(etR4$sEY(h)uTXByc6q0 zG2azMK>251WpzUpBB{>=hGgMslZvN`k^qg#2X5n9YBf?IN1mQwUHw#dgcr%Vz1)dU zs3AFGlXz@OcL2E|$26es2$lD}m(=N}+Gd-u6&-WURhj$l75-4mUIePd{}`5g05WLf zBUxs+x`|T(5?^&^3yAFZH_ze$NVMTVf`;^m7bMwSoAz(Ak(i}|#j-`;zmiYm`{QmHts3ER$6hM#hvW&W-T93EU6tMMcQ3Q&a1w2kH{L!PcCCT#e6@}8T>CRThXN2DPm8js(h#dX} zCqk9Vu(0tc*_Fe`AsdErP?(Ud_F6x?c6+B8**(MM|Mq5o^yOLiOU4}D8F!V6MNPEX z@Xp3?^yQN!rQN6gEPXs%4p&rn|1f?0*0MX~<1?jOo$<5bh5q`0D)6iBNTHzCGU*9h zP9_8>3jfuw{<)-j>~yvoLh%?7NH?)Oo5rdRkF7=D=ft&+ZU|C>!761%+N-%dh!9jj zrN99}H$0Kb8C;@0s|ri`C8sIA^O6|)gG-2&`Ksr1KbZRJAnXqg6Aq{PFbw`^R56c! z9jPG?0Si-RIHKxE_pV6C`OH<~xjRgqLxAwyoH{2RJDvL__axHZ3<;vugv7>7ZXc%TD6D0LJ=i{4JSjcF7=Ugyt%}8yeq}#lGJ5c8Lg49w4cqpB zyy%)j-~klrU2N-9b2_Tx3XLe%`#ms8Gpt$9NpG~bNCadTIz!@gE>ae}Q>&f*7~kKw zfa*TZXhk_H%N!08#L<37MH9YXSa+QNXm&RH#P(!+n&je}2myQpPR8!R#d>`L>DoH} z9n1}IC6wTCe~h~BQIZu!p9gG@dcY@CfuE;a{j7N}DT+1LbBlgQd}UZ!b!@5;lr_~8 zX4nH75YLG}pdR+v3{`ol-aIJ8YLWDwE!< zK7VnLz2RB3$=rcw=P`K9uxXmZNe|rhx}vLpmy^Q+ zBFkQk=dYL%n?53F3*F#As0Np7-?s0&X^{wea|U*(r2z1{j;`PMIDSf1-0YW*km~!x zGSSH(3{stbI#<4*2GE&h5H|j~RUxO;vhfIxiE4$rw{mfvx(hsq%yy^e$CjvDVlOX3 ztjV>~>i%>q;^M_kG+NHoBIXl2yxZhfYgIlmC*7p8*c?}fjE!_pwFXe_+PyYv%;OO0 zl__n8?Xf}$M6xjj>i0I2n;L94j0PhqhAC~zxjSwl)$j=rl1E)vw((pIbd?o^_1&E8 z4M;2te7wTWglvye76S!!%78K^MyT%W@&qe!p0Fc_eyA=8;)yl$T=XeNUelYa5g-ASbH$eLdjax5!N?hkyOJ-(GX2 z=PN|CQR0o``C;W+3$M|>HvxA$brQ3R^yFkdU8$o0tqVNcZcc);7a{#-zqOuhuzfs? zFof=#{rI}kpN(NISR?V3vW|(bBu2aDOc+UheNNls{G7yubq*#wS#KfeBz@lM{>*ZK zq!1)5kqv;F&^q+VCCC6f_ zNfQW^dw1X0{g(AuK=YA@Z3odIafzqdbs~H%fa~6O`lVP~8Ps(1hX^*7Um1&-sKr@% zP;PPW^1~MDJ(I5Q;b9Al!01p(7@g~U)Pp94uO%v3(xO{Wd2dp(sdDtAy;B%mcBX@3 zer%L6&W`DCa{P5wSzsFy-fy!cV`HFiWR7EVSOFppj6xZR$}?UFoodx~&JMg#qy(1% z%i$W!4ba95>Hub=WJ8%ktOj@EnEpxzF_I=vA=0&a+eO_P8+u>8f*zm zww66Kil62504mdMrgQOa%Pan7_X%AH#O2TwMr$uI@PC%`-KC08Wx-}X;Le!d?1`Cp zJoL###c1-%7xC=-(Mc1hSWqs?_TH#6LB;{(Hf*RRTXJ_QqBbFS7BlAVo0gRr*mY1E zDbT;3gp4

NflHcQ)t9aX!Gne>o{n>@>c|BQd(IF`RY6c^n@#COc6E21%+^HCSh# zoBG+eskW!0Bf`&~0qWMQxIFdu!s%O1uW_q$d4}`455=GXs=O}K3Jl=}* zIG(?tE+8hBiFdp{H&%W2o$k?^B)?Yi)s~jQuAf4Ws-ZIF{_4XcNdyxein&>McE$F+KJI7WB$aA|bV5DY8Cj zMQ-yU3!M3&c{nDjc`shqWKO$12_x17uB+uJpY~DRGS?&#I?q*`G|_Ne zN*V0zYpV_VX!AQRW7dlr<+M?naxXBG8Ifx+9Xk$d=3{nClL6Cl9Ii_)dS`aPTFb8(Xh(a@w60BfBpq|EIaR2htNS{0j~DB-y7{JST5>etb^ z?;t6ZIH{|LR4rSJY#k2HV_2raa|}luExA1`vtNouTlzZ@vWt2ncCaExv`B6CL4>(* zuitX`#RHMat$ceUwc!jEo9)mfY4G>*fV>*H2b<`EJ8|$fsp{s($G9-T=@gG#_BJn+ zRcm+fcJnx)DByeMcR(oUfoFeS;ebw#^XK@|xrle3i}vO7%L|&!@_g3>@$gB2=EG}y z!9bJaH7gKAO0HfK%55|zNpaLAB<6eRP+2xYH{RvEbg)riBvG;KzO zqQ$X%@#*$MfIsUzc5NEo#O>|nL-?@?*VQq!WL_lx-IgyX>y@?@PTD4%DPU7ns-$0x z$2v-CAEke*I?S2L4HaBDR*l)hP*W(oQmDU#qa%e(#Zc!`G*FD3%Q2>)WYA5?jsd+I zWkLvz8euBt8Hvyc>|5R6qhDt)`Hy+CIiF94wSG|$R}bpOvY+GwR*19vvTo-G-kSYq znFi5%&e#}^a`LwAQb6NB?S2J6W>DvYN$3*Cp*V)m%6LnN#8nS(vhJpKDnejeX~csi zs|}yeo~Twb9#>mCTZs`X4`sz<=_vj8>1tc#E214Ki3l(`-6tyn)zkzJk@kL@_Y$y+4Z^HGuuWA4J3Ivb6i=eIr3z+5M$yulru&{PEcK~g?O z8sibKAH@c9V!Jr`Xa;q8=w!<_Z7Lny-TiXm{w|dU;Y2fY=gxi?kBWJnIP12s#$c&; z&UnZ}kdgt>{ z2#8e%!|DCIc=U_rxJi9P+0KVTtY}k2v5(=Ag~!kl+LU(F$TV7`UNin~sV(FY0PZ&Z ztyi7fWMoBusC3eQOx&(Zeq%qD6a>>TAjEo$Czy?0-h0b>2FQ@KLhfmZ2){>N+)3p{ zP%yDB&d+;kb zg1JCgg}3Z5rL|s9`+;rBJED4!8z-Hv&Q%I?@swP#qW7 zf*8w<+pY*|G}pJFtsfPSOa%@)Mek$%i1ZHMYqkYn5{xHmrRg*M1&jKda%Afmt9G+%cMkMf`@KYFX6nhuLYtwkvVo zVsEx|)ZkX|yL#mtx<(-Gk(>zl$l0MWLlqxGge9{AN8P88R3zNnTG&VuumzOhf`%l?$9gGP-pxg?@F>^|@rw@8UXD%{$3_foN(%Cn zZluOxo=j3bq!w`E*90jcylCUQRzrX3;R(-9iB0nKirwg6F*nmdh0kbcL>?rV&M?xI zM|=f8ZudAJ@#n&DRPD+mi(xY<{&IQD!tas;aTGETs8ptaou7-7YAcz=2==9X33|%H zUFbKnr>6F}zQHF}deT+aT3)=g+6Z;qSGN=1V#E*k8wR~)e(vuq@1@z_lSHb*VLwL9 z<}r7k46G0*+emRTX=LUw5BivuNb~^1();&~eF>QdZ(SBh`{u1%%3C+lS7(3oDiq_f z{zOyRG7ihC20Ow}p;vguCgZ$!7VixQAqTa>`+ zrbUW^qWL-f6grP|(`Jc<*gx9V0)O^NYSf34vuGtijQFp{^EMesu8io?HCw##-D0Bz z0if=M(LB(J+uN)Zn`&i_+=hQJTW?$E*Bu3r^Fb-A!i05DN|-W|S~5vPS7z6iD55l7 zc>)kztf|H@Qt27JOX3p!NyQ$EUkK$u1{g|}j=Ij>d|NicqwOpF-`GioR~Qd5-4_Z- zAQ;~+;~vRBCZm=jf_SCWKudn=Onj3E(TuIz$=OkVt->X9tR*Gt+cSr1+d1wcocMTl z*NP&v(CfDB!u*2}!6!r(pNP0UyjT#-3Kv^`e9^ca(UDZ#;5bS$a`)n|<5$9}i{H3Q zYJNzi$>`Xlrf>M=M%Z7sEgFG20!v>|4YO8!xWy7jD)5)hGjnvnTU{b&9(Vp)=TYZk zH(~>9C4X+XL-FQ{Jt}DZ(TehB;?&OeN)|VFFwq!Qp0|K%<-2aySiqFX)HKF#^OZkQF&1TH(&6 zVPD>&e2=vcSx{XU)=PoY5~hGDrg3%mVj-e{k~9twQBcfQ6_3;!18$S-pk0HVW}Ape z#2OG+*%9)vP#yV}d+f8EgQ!gcJ%6kK)(7B(18L#PJ7+%df_c&75aVzMLV0z$F!tdF z-QvbvAtN?&aa{q)F+TpOfUPyr9tx8Cd-U>Kp%!eY{$ZFD}+j?}FcW){Qxk zv{KccutfrXycL2x3TN^B zr_=P};C#06&gRBfkAH^3od@UHhQ*+WJd&#YM*oKTDO=%jug@!(?p4_4N;i%d$a zG;v9H%==_qg#!l=A4bbvmY>sXT_vf`{F*%8%Fk))a0oh5j2`>|jqE=fy6tf6mxchh zpn;(?t^R<*Tc#mfXlsWFTJeFxX+*@-&1UJ!C6hagbB4xX>~z9iN~FMv&6ShHK8T%D zbA)LF_L;pm7T_O7F)f!=+t3+o3gL&1Adv4SvGZ8z>+epzLY=#_zeLi*@J=VrWL(@| z?Dg&b((Hn^-%UmvKiwUND8+C`siAT{F!w8iTy96#(2|aA43OL;kl`<0l81qFV}&0J z7+HD~nz1x_lS9MzZ$f~@+=Tn2v7V_IficgTI*1X@ zfwd&ix?6@gT&qqHoyB5pP-*ZypqjO3wfWqA%gW?dcikz1M-5xX8kIB!dgLIW<`{wO zDDGY=m5fBM%fgky@KlWADbwYv;z(%Y>x$n4I0y^6R;I#MBNn%ci%-5azm7xV)P-j? z*nR*UUK6w(yW zcP=po_%&5b!Lek}Xnp%a5@2`sua;X@z!sKYbdu`&l!>%As4zLmV;Rb1pOg*HSWJqA zc8eu-78o)~M)ugJ3orCE5-R}r5KLwhev^@nA9Onj==jwjnpC!198%_m-1X$RaSHFn zq7j!NY#?Qf_BG9hneJnV5QY#_Iugcu7krG`6N+gh>kPfHI3dO(6S{Rwq8=b_Sq~9f zG3jnCgn;H9x4k4=>*p|fNd|Pi!27e)d~ZgBTU0f7nyXq9U6FZ?M`8F*ahOQ=S+0$^ zcp7v}FRkz2qsA1L`mJEP=AY?SlL{cl)u&gn_g@%j6DH%I6hr)RY(Qr@xrgFrr19pQ zHirK2(VNQ?N|2&Xw68nz* z;;pjn6HUo0`%iSEEFgisut^dwvRKE+{(aXU0XMg2IN43KO;S0R+K-)vNW~rwwzn`3c+9uXWh*Tl#~Z z()Ezc@hUTu#MasN-ypDE`INn^5Y`FN-^2r0hOFkwI8Tw^>I=Cev|;c8MFI8(A#me) zz>Bzup9w_k0fimm)-jK}so^`Q;h(vzCCI(oeXaW$Lll>W3j}7%Q%fvwQh!-&Fyn4Q zBGixDoOt$H@qw1(>lU#Cweb=MsR~EdLF+;qniv(d3FP7INDAKgx>_xb{zKvgt4t!0 zGWiUYNiq@g)=rAs0>Ytw-1$_xlFygF{o70Ni1}Na~HIC8! z1xSFhgdX#s0TMSsd56|(*xV^004goo+L;BtGGwdM_&NnUBpubVRy8KRi-D2YmBP0c zI+r#syYSNjxzRJ;P(XNEK-v9 zdIAd8{A)fguq&hMdQc-I9d+fn0y#1tABR2;9E|l1-6ZZjE5Pab*(Vmb+@9`gl{9!y zX`h}(qb^s}>aA|r$qbLG93MX?$SVDjOxdMeSU(C9BHodV|S2_k>nZKCxU8$GBx!XReG3Dax+bCM zVbHccUgf$HaRWr{pwyObAfMY&zfP&ub&&;j-=!CS=w!p?)IS@&Ncd9%!PfZ}G=-FkJ7-*4WW6}~c3`9p-StgffhIHlyKLopeg&Bh6vC9eaOBi(0+NJvoV z8X;l|y0-3}C4aTU5?pe+HMV3*kgUq$bxK*Bt$=XQ2h;Y#7tN7FzI1(FG#bj--JA!d ztpLy3x>k?3<+iB?ezb(W<&k@nvbFjgxLbh(_b+_h8 z^&0mOKR~t3Bg(51)qqf&qhy+)hgO=qG+t9aQ&E##-DHaq1g^kXw0j*$T=ce=V5YMd zpTa7McN6)8wvR5#5cqDeGO;iM_PCa87w>>BT)e5hCQ^Wlh2&>lnzib_79z?vPW zXy7hWgl-tcOSh}OkE8E}lA%3XReNkMy(^na<2!HS@V#3OAHBa|I(|Oqg?|u+#k|R4 z+LJcEEepV_HmDD3nZCIwX$Q)h8x+B|7dMo=1b&FuKy}(MbwZBwV{t^95hstRBV zk}cGC6%9sxSudDKqJ<0ky^k@+lvR^Me<0)Gb)G!OR5@-gsvp2xaN+FjlLxFEh0P#H zJP4Vz>w*ky;$%^}!Z-_!4>!lxO~R$w)uc_4uHky3F|zeFFy)c;QXg3%tgMghn{$hL z;LsTQPY*9RQAjkG)uRY*XfHn?0~GBuTb_@kjO`i8CWlInKzuK0hhgaQ`xzufozeS! zhG}d*Y9n^qNDwMiYZvZFp;B_Xxxd;wn}DB^>2O6CgHpg+x%+{03rt^D#a)0#->#{g z;7M!P{1cSu&y45hRHJl4jkbg(NV6|gm~z|ul-{y4r9VJ=CMr%(*wK;5Bi!FS^gwga zll>@|D#2-a+HdRFD5*yKUOq??I%1Z`p^vywP$*j5g(GJd`uloYw)Up`Wlg!>kMEWq zW%s2!j2^rG&Qg+KXR;`DUCe#b^>blc33U~={iR;|0y>hpK*->)w{icA3FYzxZ8X;<2lDI7o^vU_>%^(5HQ1ykgMMq;gMAj`X%B~e3s6fR=E<(Q?; zYb7lCTA9Sg*ht(Vbw%88vKacWS-TQ*uX3AGnY8S8!dVM;d)+8;x6K{O^q}aiq}Uu^ zjnv8Q>8=3WK+_qy`LRUgxRZ;b>OeXi>z25uYg@)vq5WG4PK28ZrOE1_y78l|qU=uv zURNKGLq2a=o`f(oDQiM`5|>m09d|azum1F(`?-_>K&&l0$8FfDXsZ9D`+>c1Lj8x`OQ5k(@9 zYq>B~q3dcuQ?(T@+BrzgoAYCUF5Exwdu6NZB<*&8g3OF8`X}@?KV5$!W@rd6O^$<{ zhr;x!ibD2mCKeTx%#Dk);Df+BQ5h%weQI5_ssA9V#L+e#Pig;p$AZpfPR5|tbnt?J zKzIx^zwY5dXAXvKHjeIgDi=C3_W><$FJ6n~xPaT0=(UcXkh%8VB%YF%8cBh_;{y1 z6gp=UHKiIo8Cuu=x*aQ5O8O+Pm&cW4;z^!jc$X6c3ZkscC@mX-NWPLA4*cCsJZV>z zOJ<+YWMV2e)AjVFXy*@8RFCr8Mw4Qa5qXQFdQ1 zYXue5l^v^JRc4^$g&Q&2Ar>5>0TKQSUq5d?6m3gD4TgJF2kgf3!8E9#KP5 z0XBFPyEOa#+~cLSf8B%JwyOLv34z_N#WPvimDx`S=Tx>?9nTCLme-)jrFLW^^)=GU?xl)rAE-A|MnmlY+dFtc>&8H^s_4BlsM6%uzMO>j&X6ASwJ%@o^xVE!_7~T+ zsf0nUhPpN8#pzD;y7=G&^?VRRbPaAKs9pswM!(te7sQK9rK6m$@(WU)oU*q*HHeOr zpzzrMBIpOV4e8GvG&RsrfagNXX&1jiF|Y%dbpv^Q3(bWVdfpWpwTggAaq*BLN^z|y zlgIN4WJ-#w9=|`Q)|QffElCIIhX8w!Gzc@x9RL7;+YB?kMP;RNvGXpY01^Xh*KAEs znS`#}7&MvKJ#4Iu{Js{~yUFL}7nTC z866D^&Pfm9^Xz|$Xs0v#_5Nm7(eDit*fmIf*ndl&9V@gKpga3M39knZ$gruuGf?-% z+HfNcB=j``L?tKE)reH9n?}$Yi-hPuiU4sf&!}PmWj!)POEMRqQ@7~8y`nEXkw5N5 z-3*IshA8@?eKASG&n&?>6LP22a*KV~2CL$x-IR*B*~RzleRIVsjdNHa#LnwT7`j}t z&@NiY3&gh-x&q~JV^YGNVqWH5=p#|eXe?z$@vMLdqeM$N43ls$UPzD9AgG>aRHyNb zn!|1)`$OgO&PnfC{NT4a7aYiH2H5CO1+<`leD<$ywT(wBjhPL}?Y?++5JGuoqzw)K zuW4Jm6#8i-WpFZ6qmar&fqAT{tl^v3i->JC+}^Z;;XIh#EJXVSyx?szqA^zP)~>^Y#1b!Bxmeb2Q;8jg)|OZ4v@fA3CTMy zo%at`90A!XROCFXuhQi9<`keRBsPZ5TP7=Ek%t%xnx^lmyvDq#$;~r)`2=iyE$v~%Wlp{r}NmT z1@oopY-U$5skDz7$1M3Cqu=p6;CIfbuv5wF@n*Bd$z%&;p1U-DP6|oJ{x=c1c zMf9*5m|YW$)I=h#qyql}L8R>8+w$#Hw;b1)8XZ z;ALgw%E#C)aoag#-tZrU#D~D!7J3S$r78|9tO!^UC^6H zx3WJy%AS*BSY_v1)M10UemK4qd;_Z?tq&lG)1$STPDP_{C}Q$@Sl1BZG%5z-={H4r z;VtZXUz*+7+m$SS)Wakn0PxZ5lM|2;iDtH!b$kfZ!^%7az0+S;!;9nd=Layh#ZB|F zmiq4!;8NMw8QK~Ub~CkP1iOeIZZZ19#f3^EM5Pg~J(}6DKr31&37flx_XxMw($6~S++XL9a^`m=Czi}VdrC8FRGJq* zw3aaRQe&D!NNN16#=ZI%;Joq--10Uf+!y0BOUDfSbq*+d;Cn}y;O72N%)s)lwyvEH z;n_C$L$cpkh0}dykJ?R}wstxes zXbs8w9jdb&AZp{zdq!_~xB52WoV4@0Gla|~pJ50emJIf7KpPRfY)#n$?7yd5LzRl9 z=A_|5KES$#S@EN8&zLF}sbpJ;1D$IB>(_~qJ}5CJ|LptuH}H2Qu5h%x-^imaO_Ivd zlrb8m@aNiqA!YbIm3i4tyuwCuN;M_mim_mGlPN0OO+IKR;$Z^>; z0p{<{S5t7XUglsT%PFTrP8Z)H=v|d~Tf6>6HI!5$g$lyuJ>;?-s)x`|C{~yi?@~13dK|H~&8I+sbepT6J=6?{*xE0gIiJpHIv1p78@q0xUO5*Tw zf&we^oKX^dW>CQz3{PHQN-P)qTOkeUr6?f#6GALd`1Zf_O7)^u%k7gL2}11Eu||fk z=ql1I!7Qz!fyH!GPo5Zf(LH7(^@Jg#Ub#30@SG>qgTY_YR{`7mj%eg993@94WOEcM zOc^?p7M8*TZAsGr4&WmUPlXK2NdduHhHRlQd^?-Al5G^9$L#Om>MMt?5L<)nJX-7L zzIkjjQ$qOKv8N`*?V3c&fOJ(`-NLHd#HhQS>I0b_B?F`MG=^d#sSCT5IZ0NA{e^LD zl%)$a3N=ZWz+QEhHBs9v7n^cgg%Ym~bY^4Pdgs%xObc9InIOe3nzUEru1TGyFlvru zm{GKf(6M$RaP#J_c^cHqx&JO<9H zWRs#f-=F7>ZqokFg5!qJv#g^(dl z;%1f_xY3l>W!l6H`}Vf0*`{r)CG8_+8>QJq^41(Fda2R-zkr+}Yu5hc#$&pDLucI{9UI3><(j{k|R5hY?YB3Zg( zk(exjd`^~FyQV>ocrCdF@|HG3>#cZ>Ry`W>y|;U1Ga zG5$Tv1q`o{S&!^Xd$WIRHSa2jWd5!7;k3C0*p07khUTI`tHzG$!~M2Pw$&52>`1XQ z?s#<&()kwWiM~pPUH0q419ly@CG-u7EPgM=DQ!6nq)7TSR0Mdm_303O%n?(yJb`bvPsIu@ zzHW*s+CNP;EBytcWOw!-&CX~4uzP@{)Xo}^!T#A_(x=PHRn(L5nN1&TP2WDf_|DNI z3`SySfilO14!gMA%d{Y#?x%pEI`KSdEeL&EFYe3>N5BC|xsH1bXU7k-#a!v~Hc5;X;z* z_NI=DmMv-Ph@cbE&rBX&twkz&u({>$Ro~x2NFwm8K;g8jiEa>BLUBh^x4WM+vrzul3Uf+=MW26Pe_4))G~>jpeTX`C6V?^w5<~VG zq55rK8@;nmm%q~e-KEhrgBG(@qgl=qx}6dHVHqFF#o^ykC~*P=;2!oczx3N3pNIl-S+9tm@kvCC2Ye?P>g%{Rc$pai)oU5{lZS@q8>$Y5o0zqGG zpPbgbt(l84c*;50vt}{MViJhvpViixBwlN6mU-)P2_(!X?9G!5G<;<2* zvLx~EbcQQfXMZZAqyp^(sTViwOZm+@l0)5hB{Iui;V-K;9CcKq7v?kI8WHR|KRU%k zQn`*PEOs2fhlAy=kfI6huiuY9!BN?#R}b>{4lR4iflWJ%+RAq82= z(*h7-t9!su)DMnVo?FX<4UCNqHii=>Vi+`Oc!OA`?Mt~NRdn6YF7FH40G3k52@COp zD4sDsbUzI<+fi1(wuy{pv*H8iDuQTyr17QK$Y{|%8WHfvN-1hQ`vszDYP!YA(J*QK zmi@vPi2%HYHU%V}|aXBsVDzV9z#QzGh{^Tg8v;|HFJO5{dXk#PDU~__uPMmc%tD>e={)C8FA_o)_FPO@>{qr{h3B=-{x1 zlf~gFT;=uWOWT}vf%aWTS(Zc1Wo4RCaefCXo7Pwa9_c=FM#s=HE}yoAp$us+WN{TA z@qQXfo;`p!SB5CtC5n<`?E-50?lI1kI{}-apk$~jEt$7jir};Q^ZS|~U!HTkU59+G z+G)#z=)EJvnXIbe1l%W)D?twxtQUVQg)0~rv|w9oS!}F-Dns&FC#>#x*9jkq&XabQ zMxrlwnV__AqbQxYz%K4pit~m}_glAO#;V#r(vE&KI$<2(z31!aVq3`K+GW=K#c66MwH=8-Opk(;4L02T_4??T zKsvH-e!&cJ@p0MwXd*5HZv!%BRfHBs0BBvwwx2fWjM}v6EQ$r$#CsCtJ`Izt=2EnQ zkN0Oum2bL;K#GOr$*!+wtjrrsN^pvT1*U8ye8{+P6DnmQ_AwB&W}B8fm=K z$ew$g1ucrL`90G`)1{Wl2jT+nBT1C0qvSO}GtF4>$|UB?Y7dw(h!Io2zzX2eOsCt8zFv!uFbU)M^_TsGBejT_=LNiX;sl?H@#zT5b`Y-t0)JoAOV_BW?|xxt5=FQ2Jza zKh#N|e~2x3aQTXjr#|yl2-~)u4 zmow`_Nk@Kqff;sqLaL^@9n6mAoP2HtZadv}`m6ue|Bn>Hf;($}7|I#NTH@cQfXaLd?pF?R>V@b<*yuAhdJS0<)a9pQ z%>OwVZ~*#}Z;&>!P==|5VhHuX>`ykEbrkd`cl8RA06QF%XyU1<5JJZ`I;J&AIjG8L+K0~X5%tQeIGj?_FzM2?p)=HM<` z^VVnAYYuGv)RMjv%|5OO!s%lhWQzN%EE^H$^I_v2nA#ibm+Lz2bJ7z2YG>MM4yu#; zs&O1q$xt0RH?oh$0h03@Wulp94VmK{L#X))K~=T(rZSRYpE8m6WIB}b<5P(-Gg_ia ztSrDYFdX9{PFNBP(~-&B9X$cccL(dkO7E6wPS89)C-(ndZLPRa zFe_o@Ib%>XxyOLZfx*OJD{W`Lql^TJqbhItrTRbRmD*2LpzgbDBuk?W=RERy)>4z3 zWWQDWn9lXC4uFg z2KH^=S2%j^ciaL3`214GoO0YnzFCUfyq5QkFIf^?w19~Opo$2{0Hz&xcqazGk)Q`W zY{q%cxDqA91k1D~?(W~E<05&auwSwn5G+>Xl~|4V!eUi%xW4ChO#Fkuu*@ z_v8=ajji&T_N|(Cw&*2j1!CIj4`8BKw_{}@j~IyEU0t$0{|J2;;d`kgg81i#{};Aq zE1*9lI`^Q7qggjgrYa^$vSQXjM@ytO*P_BS0mIebX9P_pajPB`Pbm`1QX$X^l?!sM zoC0?wlu%MX#Xj**cNjv(NPQjH=lvYrGt`t8i*H+>pDk@5G;@~XHigTms4LrCxx1I0 zs>0WC7RfGVliANn86ll>BF*dcW-$_4r zBdOq{{)?!71ZvgaRa5A%N@ptHlUC<06F?=H{@gxSzAML_4^+RN9Sc=w0>Gn6i3p0K z1pKJk#MpUuaA7ZJ76f-871vMe^@|#MR0aY*Df#J*7L`E#o!|4&% z;OUnSxmy7Gc>5ASu2A~nq-ooy-l)NwNpKbWWi}i<@_5hVnM`se{)0aU;y=-G6dF(X z@fH@NgYP zu$;>SVxYThpHvk94b`PK*0)yM7}5v;G1_Q`{94KUocsLny(S1$LA4|r%ki16F0g$n zAJ~Y3AneGG=PSC!N1ULe!Q9Ui%m6%?gCv68o(jX+BCNOBa1PXXB+(j)MXs=ou3iXR z9YX7r;(w^xpW1(2%D35VT%=mElQNk^yk&U>HBBBhI}Sf8dcc8nQRZ_%nrIy{hMk&W zKx{V62N1S#sL4J}R=AV8)TvRGG~>*g4wAQQ3i{00^3LCoF4IEzu@tUJ(HtV*WVxd) z>GN1^M%&}GwTB*-bs{nmRS=m%-(`L$Gg+44XWIe9t_RL}exbRDa@=VsR85{41d|k> z5N;-G#REa`R6Y#yH&9Cy;Txx0rd`=~*n382N-$i}DeKA^;wcbBZ8DnPE5ks^i1T!L zFNMJ4bqmGm*-a7=Qs@@IGCNHB(A0Q2!LAdcjW-9- zVdlN}I~KCiHH2dfhlIl(Ha!PK)jRll2QQTF@O3lX!*r&rD(qW6FF}3lM7NvN#LBAR zpP3D*N0bdo)GQ;8TRtzmT~14`PLxaD`U6I?M~T_%i)Ig#;^}993tR&Ju{{A=A)j8~ z!5$(4zk@v8o&DRC_Wjqh|FiqkB*X;Hu=m}c?&V3<=TSb+BjxsMqNHJ$q)b!x{)GMx zuCvS>=EnHrWwI&oX`x8v{AJJNY(Ij_S(Y=F2CtIRV-HtbXzVfJd>n5X)E;&{I)rK3=AX9 zM45m3;|=?)-nMTW2NX=JFp@@vwv#a;lEnO$R3x)+daPLAFiX1fB3!P6M7wvx+bfzo zt9>xd%p~aUW|4ixqyf4jmFW_22Q0%B&MfY3FQ7u!W#qCdBFzG5!alyD*0poFu}i`^ znf;ye9U`PuLz~%nUr~?L&4%CE66_P(9aAnZL~3mh?I_Pyq}|*$X|^95-$|pH8!0BzKjiP_ixW~cuM3FX&E<1n8^%V4xg;AM_IF2uq^Rh)7ji7?=IjNk#{S}) z3TU`}P>jEkkd^#t&sD_^h;wpJ!%yZXQ{5i>;b0`K_g2Ga*tom` zRCpYlq4gN-sb3W&T?k8#T!NvBt{{j;A6X zBp_+?nos)C?6))4gc-8NX3y8)Ap(xlwWE=5%zk@0l7}n^_=wbmrz`gZTtvN*YzRAr zia00@fGONdO&F%cnC+xGvNEs*m*j)1xR}0W#fdGK*Yxfyq(Zb}7Acie3<>Y@6uVFH z%R73$FT!pzblg-NHA+)&s5Me4Sl)}48F}oi*p-D*r7UT=*(4<AEtokUxWL8dn?uo10rQwg9@}jtJ6bmI&|o4uH2mLvP4>$R^5E zGXxC(BTTBswnsn6#3twJ$<{S#r@ejnN##hXw-n>F2oknRHL*qPFx}ZW(l)B(XXNC( zRoDO^I#@3iyriZp*?1v2?CAPIVpotJ(0u*6{5=ezoe(4j}#N#r)O1J`(fCsR83lfkpq>`(t;0z|D^@F6+If z^~EvOjBl)Lfe$TyXsNx==9yCUQohXt~>TT z?xdo1@bb^!A8F22(-ixL{hNmYQXvP%6=JlAeI6*N4zSh!kgdBrJDgn>q_Gk(yr2EA zk!1%ZV58I_;S_6+k-bn5{F#nvIAr{7Z+}q2bKAEEs|DfHD@8s8CPC^vKP?)vqbR`FZ&Z?C_#{)IJ7aD%y1 zh*stc+L@doMZUV+8Wy-+(lBJsL0vY{gNO=zvK-D2Ent%mn&*aFE2lTPJWL}4)*Q)1W><|2pdgDUl zg#S^CjN6`VhX*IBaO-w3C4&Pah^{J~iKe@)>QRWM)+qf&fmkX)Uh5gBAl+5WUjfk& zh%i(Cc!MOZLEN9eylz^S4b?Jo>XU2waICo7C(qZPt|U;%eSdPae(6DVec8Xk z1uhPbsMTMoB>s9$64qa_Gr1^#K7^X=kPo>QWl8o&GP3$3yC%oFl`Q-#V={RV8gQk_g)#ZruGdg&3ZUiRO>K=6dctOq!p3{@Azqz zBdAbkI3fR9AJ|1zxCMTN?G^S&d8m{`G5O65wJN?ladnch*RVpUh{G*gT->PQq|DO~=D0e%`!JUZgcz5C zGT5)U`ikVZ=OU$=H;)MP-GM>f;Bl>tN@n?eNzQHv zOlG&mz~PVg``5){U5JgaT-+bFp7oLGv5iA~f^wlU?~7=)&0ogg!zjMsf3~8uH}JLU zSmQMAf-_rm-?KC<-jCC}s6lb|P};n}j+qNhc0lzxWwd5#P<c`+rC=yZ(nu4b4(l69i6S{`&PuVZQ0wQR~q?p<;@xwLMv&D6Sb7n)^lj36_ z<-*#`D{~BWgU6qRKQ+xM=7(hyOp73|w$2~$0HKTFqPDJ@N1p^=HcT|XnS=c;HqKOI z2XmE+Zd6awHCWnLWwYu*^1Wbi=(#_>rf})w>yKT;^n;z9T39%FB*-PN8SeY&VJ5_6 z`eHosfg}kZ15ZqOhOs(p%k7*;h^BHFF5G#p)ZtEsTF<+LL=ha(W~V426W zxPXf)Rb4TokA!qB{UeLR>b3hZ^XE6!v~n*mcrF8l@M+?sSQATJ zIgPXr26YuiDAEHoI5x6O@-y;j=c~Fm4uFC|sXksI#oIFu=;`YD&1F==RJu|MHmLkj zPvt;7oBMUzLf z*{87P+N~U(c!}Z0BLGCK<(p<8EF{9MFnYOV#lX%!bH zCHE4T7a9#rK?zVtwP>f{7x z`r&_XFP7}q(C)ZTtd(Y&sw(%NuErzeV)lL!U5!+kN8vZUi|-ck%~liz5|RsO48UWC zd+!d%$JMdkxDVmQARtKek1m z;!rk*8UJKKEwi0<7(~UO@P%ABOWRZ;8XZp0?x^5SfQk{LsBS=uWzWf~m@h=yCP*4+ z!U*IOm8xIYdDs)*dDV48)QD*7my%e-Csq^(`#j02kW`c?&Gzm_;HogM*`Q2@ExZS? zU54nCm)nW3P-|)Y-Ixg!F$B13ay=jyI3_w>*I?>1d?}F*PadkuYyjVw{rTA|(x~@{ z!YiUA&GYe9L!W-@Awj~HZ>Fb~brMC_a01y&RQeE!Y9--hly#M@L3NkFiT^V5z{DQT zjjPW&kk4{{1|u?o#w4y9Ahoy^+WkZXoP{9yU;>veDV|Yu0=utwazi0LfD!2!t*zj@ zDPfCjU4m|8upaa}xV*G%hlRF|j={w#OUViyqntfz_VVliI%A7zfz5rDUb0V*^imPA z6WzpL3!`oq*CHQWT)cavizz(K-+4tzj3RGD*bX64ztY_VC`lFxF;jD(^-cSGdQ0HQ zA7te{TSqc?*cDE^iah@Ts9^QF9B5&tC;S zWf`pfO{ET+`xVaC$?5s4dVO-F;l$*$;S*4l8@|j0{o*Ld3wu@8#iW-R27;U|n{xup zr7sD3^DQaUQXw zWlyB8f#t@+lhdP@b<(C^z+V99LxM~=c>PHKDh5#C)Y)B>(3yP%N}xK*gAgHM{H9_ zw&#W8W=%p+CPkq9gYIdP7*87mWvW|qcYHy7sa}=kdcbno7G2S578#k9B{rq1zZ7_< zRT*D=#Ocw$Iz1`aQX*)MN1LdQ(u@+Okr%>sOIUiOquU8yOYi$rdgk7gJ`) z4|Q1r^)sC#TQO}jNL z(>xhccXxKOx}|QPaFl7*SMqEwWfbXo+$|#F$0WyxmXeu`bBibBa{-%FB5(3vTe_R# z)^n~)a0GLd7jH%Cr3!fdXQge{H>Vq3nj|JkmXT?!b4p9bRE;Ij=2baq6&U2ReOID@ ze|;OXE>)I#G$GhFW=hXrgp8CqaAul?gEobql!o(UaLT6DY0wUJu`g9)5(;mU=4o|r z`%!lu=zd=nV2aFX;)+@e=H(thN5U3*C~*J|O+RMiDnlLTcMkqH_CkmZAD zvD={=yiLo$G5hDuO!L0`8*!#vWPrl{#6n7_-I-80*yInL;bMgpk?CDRv?|MQ#6mo@7-KEG-0DX2E{ z;T_Ij;l)KO3YAlBeVVN`_lh`)&8EE&;HUOP3sQrg(lKT)&!C!lge4vBEd{P8w%tGp zjPd|~WcG6~SN^+jS1S2xdud$gV2*{};-d=ieo7u#@jO(iUF503fOXD4dRYAe>hi;P zR>a`!BtG4;lUPPTe>-kzhtVouv7T1Lo6{o%Rj|X}J|Q8oy=x=umaV;lM;;OyF0R}(U5+9e3hQKbhY)$BiKRHawkdOxh$;Bu2T)p2?94 z>oV*-ut|P>;h@5=gRgLO6m6F=Y}FhONLdNyIYkFdt>#H+A}s^av=JRANAi7_yZd7~ zd;8-{^9bRNMQ(eX-Wv`?Gwadz3YwvK*xvVAy^ z5jU*#QmV?tg{_n6_kCMcU1e$RxzrPI$BbjMvoJwB_`GQ4|n6X|9b zSBrgctK}KogPlgiRans6W5$;{)@Ty?uP4EcS7)hc*r|sXs+#e0^#hp2!ZE~X%W{Cy ziX{TdERS@6QVfqh9?&+f+=DxpFL8(cv3a@T&NJCc9hBKNX@MrRnNUFP^7IXJZ@Nz+ zy%`NoMDw|lS}oe(w&PLuTRjc$fPhBvwm z0Rsgnq#S?5{HbzwKBGS<@4wCr>fm{Y&?2r+&#w^Ix-&t?FyHX9%7C#JaMU6&+gbT` zR^?7nyZxvVsXn#3_i;KOOcy-@h|iWrLdTU-6lr@k#pIQld&6g+)ty8_zTnTX!IO#6 z&EfB|Q)G*-hyx>lDWVMz_3M{`V9cYyxZQ(M%T6{a+F*%k!X^dfG5akYZB?!io(Qas z=9ZZzD?32$EFmKy~ETVfPSA_-1r4-Lplofocg{(w-zPFCJ@?^k377CrG9m?w$HebUh-Ey zq>-fsn>kl{sf*>0^?SankFRVDh>NP^}L!X-p?C$TcP!9!}H@so+~15y{T~_X2Q?!~%s|X9q>3U=gV# zBy9(6rs4YfoEx01&t6xwK25Td&1>IuugrpJlt5M`DxsFbkUHbxunlj|^DZc|)LdTM zc-lwUpDsyDlst47R`8zR+XiJ9Vbb}DE(gJt6i+>*;9)f<`kSg@ra@J4yR(ZSXa_S z)q>6PS}{?PO0rdu!(5P~7q*+`#Nzt8QizKy?i*bYm{#ohOJhLbuBj!J!<5!&!dq`kMHsLUO-lTUN0w8YD6A9(sO8 z(`8d#et2#bLrk!7Sp*i3&?B;URm=fSC^vN{|FVXFNd$h`c5B3XGVe{t;7Y#a9lAMh=-(J!f+U zjhgUPrvwA?9PZm^`}3D|^MeZ*4v!r=-g!EzGTBj^+C|<#9ev<+Oh!H79iJcFDGk3)>C*1r60QiWY%hqTcmk{FhS^B zw#aA=#;fXYKY!Gc%%QP5b zi`tGRtjez%j2>+ypFQOGnGx|IhB~ z`J5W?+I*)@A>^%w9?zGq3n~Auk=r-0h)iALQ#hNRed>YEr%C?ggG~u`jh(u=F6X~) zVpFpVB^E3=NUOLS7Nio1ace={?+T7BQl+?(zQVS7s3;e#gObsyMaAIf712p+dc^PSd-&yuXD)fULvAG%vq1-R+c?#(+dGaT-DQV0yavg z3D&k1VrLD6s)d9lgnDCmG~bvv{!43fy?ED6uYWDj%^&oIKLD}E2O~(>62rN*xp}*1~29LhS$Cs6wAOV~W z5BgL#!kn-+$iR|;p(7Wvl5PpL7m)oOaU~Zr+d)cFl#hE3zV_yv4RFWkTc`oX(dEq{ z5%;$TRFPE81ha-@*>DudY5mx|02X~kJ!9xItt`A55tK$>2XzwMMFq8(`sNgc+aU;J zp&%}5)D!LtgH^aCy%jXEfqMV!G2%bSp?+D*Cs6)6>!AD_-7VDr|F&!-CKk%^JI!T8 z-qY~Fl9aCAV*v`7Ma_ZzVXSi2O~9jLvn1SY9xu zy&hJ&pb1#xps|n7juw4Dtw6+A3pR$cgNtwp@b-fG4`K2+0K(kYFHQ1%P+yaBy^3S- zf2-xNLr7t4(G8CjU*3B}h~tc&j&{bmahFkr0k68eFD+x;h=;ao@|981l!keabS^lk!s!yYXn9} zR?eSLV1DyGKGcNIA8n_1$>yJ|(tYYLkt2`>c2ByW@4nZ!XEpI$l+cId81|F#(#Xj$ z^95(w&6oMz^jLG{pbinc^&m&=_av&hHts$}O+7_H(L%e$mQ{^AkLw%1h8n1pyOEg) z(Hl7gAjCc`=U`W-&oaHx7Ua4dT5$*RWu(>1j+Ap$m$=lYM1GjNWZkb-KO8@}1ja60 ztxn8!H{86gL$!R3+_lU2r2SQM12a4Jx(E3VWPKYuf_jPP@dsbfs>!v41sN$AzDpJ4 z)RJs+OOJx2O0v+n+3rsgn`PHPjhGq(ngW?eA`ar?f_>DB!?9AGLAuFuU>V6X_LXA(ld5lJ;jiE$ zl>z>Uc!|Y5An>ytI=n*$?ajVD`%d>Q^Z@71D4;Rl>3W9RaVW1WmlV9EixL>_Isn{~ zYLJ`0>}eyGfmjrtU3J}?qbI7#0j#|}eEZLQJ4uFB50^x^P`|$X;jiE@=PHl=4*MoN z>NH%wD9e?BI@uyDQEeOyI^`~^X`F3PB^*ZBw+VB+Yb?_K`1m;wj^RX9L#bZNy$c^C zdjQ`@Iq!1gFAhd--CUqJmBtuXo`@J+N%Z|gB zX8;^kH8pZfQGt=)<%rQSuk24~5`-i{Q?eO7Ly(~*%f@- z0>xJc03_BtgikIG-szglZG8!@Wv&`JGI(1xf~zO8>dt=nYh_TRe6&dR5L-O!KfG+k zEzRQ2j@FkiicEPlt4}m_3b20A-J9K4PV6f=X_ruzy8LHZ|GxwYN<9|OCf2Zw0g-YD<2am>umfe4gGDU`uAk8 zbO?b#ywJN-chL2RCu$JaRQ>ixQF0L%4GT(B>hNw*SyXu617_#)Qh1gVs9yP0r&DsA zs(Zn9k>dmXbU@aZyshnng)4v6>+{XDH`wu9Bza{#n8o4cHQNcDP7dC_Lflu~XJ@j9 z94CS!`dDf_99$io#_`J}#QS3^7t5YDBk|FE!*Sm$c!3G|yM47l1e0lEV3XEYe`9?C z$X}q84{c2#xVgH3gU@oLCUul3)i+tD!8{JG0T=af5Gyt;iZX}=L{nF7ngI)-IEu@t}&+R=)+0(ix=hnq|C*_YVus=riG5HbBg)~Ng`#hNiUxJ( zA1Pg41+r^6N|t>)VR2l`f=!2Fhi!FoKzk5fr{M1%ut77N=9#*$0&@uu3G$6Y3_FEQ z&m2g|qHV{W5K65JA@L2eLZ&B7bDZGbX2(?fPThR_TQyZ+Im5XjW-UtME{C)=wm3*B zfd6y331vD(%hOFT#)kl`Xpa57n*wnL9YDq>2OM<1E!RrBj21i_*~+bYj%*}%0V;q8 zg_*%m!*b3psyUFvOX>qzj>+N#o>Yz;NYk}EE{xlr5>Ny8yIo;jG^}jirP_z`uH3}< zyqh~p*-p)e%7Dz%!_G%-B>TL1DHDz+UsWEMy+3X+yD=S$P%~iUJ-wkq`?*9&=qGmC*`=wJ);PvgT6`$vFhfCzK8W1TiTmyP7bkZ_C9c@i>rDYWI9KyZ6D?z3=eF@7P<60KN*U$kxn# zGw$+iX%P9@NcTqAT@XVq z>fK^y;c=}fsQz_2rdWrc;T6^ot$s!O(v$n-|6?MO@S|ngQ$*n%E8ll`E7}4md_O3P z38vDo<@l0X&zIg~=aKc;2~~h(wPuM|WuL-b@`>gs`~XLR`WO?To~ws%*J3~!+&sud zWpZ{?)IDd}A548Ua{4IY`sWEUN-`*{ za(_sdcad|(GY?Mtv&OueTHNYnf32m*m+0PTL5$bfAQ5=q)A>_*j;KiR6~%N=XH3U- zFKR>x7fw!PiZqwHIYZul0U7a~6!M*(Pi?zkAu6iKYqm6t>db-{(UBkz(5clQQh zQY4zmqzYA8t23GNdM#fCqxj}p5P%OWb-{Wz-3K9nCQ;#3%tx+v6mI_UX>Ln4>yNI%!%~zf1FYxDOj9#68qkLEUvGaawJ(Iwc3gZ2nU*;UIY@o2#U-A zuz$Hy9Z6XSGYN(U0%%{zTr_fqk<22cNg;>SN)Dx4)#VU)? zEX}vT9geC*%pbD#8K`3NYKLz2jn%k@VSr5}5w;T#(GKy_tB%&ai2o>f;GLGhpx}aE z4C*L=L|ZHwj6SxmqO8lag|q*~Uw(1zjGg#}7tioq$BnBV>ttj&n7F#*3Ag+SXTLG~ zz3!x2vlAgdXM@+xX4XM}c~e!tM|ygQF|X>G)mrT>5IoTKv8;D(l3tGUAQ;zT$ZnmQT9VDg_B<}w#Z$sM%$%VaFT_D?-nqpL& z>+ptPQ4{(E8nkhWG$l%3`sOueJ%|;W$JNy~cSV5VGUtWj zNmD>ffs-NCZWf0ju>wKectTw*l7tRJgM+L- zq8R;##(43jDKs9U>#(?N*dOr+guFs^==>ckOPH2CSZj$GlC)TXHrYDR82-WOsi0D! zBivZ&#nQ5vVrBhiPD#_ew@;E?yU@s4aKI*s>yf--&fWONc5h=&z<4;UyW5Q2hCUch zRu}Qbhlq8e5?)sRLHIpZC6Xm@;NN@5hTo(52Vzx)D|EVhpH-Apg$ztUD*48>=IiJ2gvm@3V}S z7T`B_Y1yCW0$kgKW)GMj^MF#mI9)x5I|!bQAWnM_uNIH;De)DuU{;CsCojU-&e zS6;iRU*EK5Uk`%PxPBfi2LZ#HC=)@kI3ysK`{)3fjrCr}>FA>nk)}~5c7JoJ6D8G8 zb6kZblac0!LVh{m_0;Fa$h_2XK<8&mwH$;jz2AXz8UDHM&vw6RJ@MGZ@;LSJ*8qrl z_F#AR=ja~zvrFZrHnP_XxtUVsmagi!1)j&=3eL<_y-A-lSz7EbnS5#v^T14|UI9Gr zmUNHaJy>Sn0mG9A_@<@3U}Nwt_iVX?xhRRSd@s0{?-4Fx+g$4(<#Qe^7bM6D7t}P6 z2Uuhicn7-O*?()=eym&4sW;L*R?SYm}1OjCQl*cOZJ9=6-c zdK;`72|s6-anE>A>+6<8pb4!uN4GncAuo&hmF8yZtH9eL&~(6_rx6ULeJ$wV(_& zb#=PQQk1`Dc!gTti8jfl-;+)a@#eH(We+f`#N&G5BY649ga>hB8*@mV{JXGdgv@%-qtJh<8QBV-o@S9FXJhV%~PUg|!4SZF%#Mc>XE)$drlCt#GUqBEFj zN<;;q0T(stnFQ}2;<^%^+=D}P$6qAg|r+R2zB3Xso4oa*iEL>W08rWNAU8VNHwG}QI^ zvQDVw`|@uA;a`HUiHSQ~ee0jnJb)btHW6^+Rvdp#{kS+(4N!>Mogk`y@@_GL_Jioz z$j%=}oXQyF6cix<{$JA1V_(Vc@BBMIo08phY9O%)mGvcZP4i-1z$mhg-tK#{qjnI* z0cF+$l?AU;^cl%O?9cc?4V!w(!{dVmWW5^15fsw;w!*{VP37G5Tt|oxgWo?m(kKm) z#Hlhwk~GgxhvLJ9@%}twwCg$szZT4&q2sCh<1|m-#On2@hDvd*tIRZ+oEq8pfkM58 z8UIN32J-;g!pyu!x3F+27$X@#NWsPBJrBV&-6wVWiJ^IQkZ)ZxUvKYQMaur*?02bc z!{@HaA=)4-%UL~Z1r9FDO5_E=b0e5mS>?cO7D@E)E&_gIVy8;VOvceuRV&VYe+f5b zHNd;mL+jo1ozrhE2Uu**oBc_=soc>Vi|Ggkqw7na0fH(b403y}$)Jyv0p`aF+m zd*3ZCzsNJOw>4?Bn?E@7npgjV%ZE8yGT1U6PjV6sTl>i-T*d?1q{lSu=z{%}f24dok z+Juk`wO3q@OzHIr7$^U}N=Q#m;eoNbQoZ6UeES8YR4PK{+E=HamhbX9UCv&mFB~6I zmBMR={Q?W4eEY@ei}Y=KmA(Q0mVZOH;f=n+ZTuzQVStM6Uzac0JO7fu^e@>A`Ij_G zpRYuyNCsKcUkag% z=^fXxk^bQE3JH}D<6j^`)z`3m6&jtAEcwkP58Ru~;09lcn)sCO3Ve0XF^{qFMK!OZ}e z4;*IK{n7yq?{wOVV#V+IO|l5V>49-Ss99jP1i*WaAckHtNv8ui*FtF8?Tc_kO(b@& zq_Q?Zb1E7M&(as`&H-0sY!6OuG$mC@$grn`U>)^!e+?Rdk64eQRXZ85STc&eAzP<5 z-Ud2b&z+kL3wivE{=eJB3si!e9tLJpN6!#jr~9*+MUq&0QgpHiCBM9>Z?Wi^t}CI& zqSrmuz#Muu{$;FqInPbT{YBg%%+yGmgn<}(MsyhQklb18qK&#V3HR%$O=BU_UnV1< z+y~Mhnt(~9?(J_8OUS8Wywh<4n|^)(T#UQmvs4d-OH?e8d851i5a&^DF$ir1fZS~s zHtcKDr2V+j$EO;alik2)a*Vre6YKcg+lDlu(J-6iWzco=IJ3Ch@oh_`y?!epVoE^3 zQPsGu1eLMvJ&9YW+Sry1z@TkNM8E}6646t)8dvDjeVd6r9x!WW`c5y-bgDZb0q$QG zlUvCBzhfra`)Cp6`$=Oi0n2F@g{#Nx;0S#qZhFqdfHV~;Zul~-y_@$vp>q$ayI^ao zni_8D@w0=t>j)?&nj)B@)!BFDqAmqoVhbb@F&bHjA|v9IF=&YbAj{M> z!_*u+HsTycN(L%vhJg;^$q&+oUz#^mGYWM4cEr4GHnUu|<7xCL z)#6rQb~`5DX?)s5R}t4aBAer{^H8F)09$@^x+dsRZPfQ=9zVJ`v4KykuhgUX6-=71 z1o`lR%ZHO=gh9%p+;HBLu(+djJ>TD5J*XF4gp8cogMck9LGFsUFMNQg>&6m~Sx>^1PNat|AtE z_rc3ZOlXGh^uQhl?_~8rzkBGvdoQ>akMz`A$A=U(Xf?Wri07^KHTDZ-E}Ec=6Mp9e zbj$aL#ruAVhs;9`(SV;XgSBIpY+>DY>-Z%pUtP>|m)X_2y(kwa3P6N8*tx0mu_cQl z>!rojAt|16%a8)6SJaOAU?;Gb*=|r9Y?Bw>z1${r3unMb^WgR{WW*d?q!{SxQQZO$ zpaa-?7w%iv?(3{h*}a!UVi#}W&sO$(IUECJVRu?@q#!;A8a^D>XV~&U&hGr$UpyO6 z4=mR!xsocvZ0rV97+xzC5jAJIwlTb67)oi5GNg*Z zi1N?OMiw)l7G{cqj0jfbt#~6dWLrR979Bn9B*;Chj_q8PA&=+D^Fjwq{fjc54cP6u z&I!a2oit&5Ruo};izr+9bv-^~6M_Ek35+LYeQ)OEQWxSbSrBvfa?O+qcg7pS1c z^evlb7bx9ANW+olh7G^XFCB!O*`Nq6E1eBH%wyJCx+mvH++5yt7s^mfzY|xxQ34K1rnH$8h4w9oOMb%?490Re=J$fHspQd}sZUl?m&u&3nUx(8Q>x z=o|Fa&=YwEnC{HV(e9WKRp8(gCkppHjdpMYtYf|7l3l%6Uj{rTQ4j+&RPI+`km36q zB@wMEYW7vXKBSp=2rD=aYuj|gH@n{ejHgh9GM)7-yM2MQw64wc0*g@sBE)e5T0b1q zCyQA0mWqt4PD`x}i@MoVsn7*y)9`adv+F`n{RydE!_fW+?(W*Q8=$#~wuNoOMK&xb zya`j+tbTvFj#M6~!xjmIyliSu2xo;u8H%eS3}}opc6^I%Nln1kv{e8*uF@Fh6z%Gv5~w@Ge~ybQf#d zXewz~|MTwbce=mS{ne;ruds@-OjP>d-rZf*4T^)PREU1sNjpCTN*SyklH}o`#&auZ z!(yyz!DH#ow@hC7vr!h?{64&C04>A=>Pa3AjOt=rOj%8Tv7YV(;VS$vyc-g{DT$u= z#oqRw{~>-3CrP*fJzv$LEM5~+IecM$-YuZ&zj44D#UusrHZ~`9{Nb;0-C~S&ud!f+ zsvC*vl|9ve&^<|B7!`IKkUC7S-^cOB(-a!-H1%VhZ4{1Phx$bC4RxGUr z;WMtj!1b73vEcJuqyNh=FaWyhXB2$cPz-{V-z<{>4d8`@aJq7nwcFbfTLmn z5;;^ifdgSOb&EC0myPd{*VrKn!aZf5@lB12}%bR?umr*Te;OJc9w&U=xmB4FRu2c1tT z5>HdgxEZrg%?>MJqgH(FUJcsbIo1uKGa65=Zv+4=kbrEZZDx852F@~kn^RY`vCMa% z$_i?nv?hec>YC@*TzF}hsrVtcuP9zW_zX^%x@GcDv}NwP^B6G5!Fe*P{GYG12MD1I z>!VYqawWoMq=%ndLto{kuxGiK_6J0#dNn$;&*_(+Y;);0035$Ts@+~zCH@6e}qY!Y!0yp z+qPNMCD&MOp9=a#-B-MeXJ@SiD#~XQ=5InnEpSA6V#jMHBBi{?{H!()PtUF)=E1 z1J{szG)|cLYG5jjyiK{Qv&QQu^boX2E4^Xh34d#x)v5ImTT%vi5|}+nAMT5LFPqTc z$rztDTzm&MSb1-2@l9tnA!JS^Ossh~Xmb{R0tjq9KxJE8Xd(q9fywJU;NEZ7181GQ zH%W082DOriq&4oru)iRoJwJtcNX&o1iGd@erb1-p_{os)+FPP2i!ufhVIi^ph2$Cx z>jWpm+S^e9R-HEVk2Sc5K#SwL)(x769b~?Z*YL&6Z_U@*0^F$rN~5{EOKLS5=g#=$ z;E)>knH%bCsPfb+v(Vu|l`#p!)m3EE)@6W*xqsu!rofCX8^wa9YHa={=j&X2dBTpW zL2;q0ljMIj`yXfjpOK#ky{SlLbwUYnL9tMW=AjOuu{j54&BkvH!^WR%_C1_(#kkxB zkRDARF5J9rY|St3Wjmfn8)bKVBenr0-#2RysHurgMH^a(zRP5;tnHDwpwou`5;kn( z`VfeUR~z2p(!wlL*SsMpftdZcd2X0kfc|;Iwwp%gndluFQr==6DxUUNx?e?Bv|fr_ z2s_3{uyyK$nY1I;jB@JPL=Mno=LkC9&3@e=<5^1dJ5@hf0oOf`QP?$vAWynwVX#B4 zw_JF21XxScA9PwiKUOEa&RFo_Bjfc`)eH?!@#WcF#~gKn)8Mm)iHyOplxYC$5^21s zH@J)FLo)m~X8$+k93uF`9t*asi92fbi9BO{Z7;U~sh$d-nN;uNo$mMl*bkN(B(@~kD1k7kgR^+1Q<_MSGR5F%h3ejJ zeh2u6kPq_!cs$L3@Z|kOXehNh8c838(jbp987tXv8q~h|tOUJf4gTTTzv#eXhsrlU zvmU_urn31qy^CmhnBA})!XU0uFsiJAURt=D?cAw<5rlaUEOigu*M3}!Rw-#Onc6v# zYxa9Gn0II2#Z3GG=60@CDI!alU=r!RHWNH=nwDNx7FRMWTooB$;%&M%+e9v^xUvKl z>#j*IeuJ&r#MN*QxZHH_1Iott%FWFn@Rhx%t+NMfIH{dAAWcyBfgi%nHH@ufs|mLK z@O*PV&4Q z-qEKp{8pu zw=+RtA*nFEI=z(y---?}6PI zLmQ_ksX^e<6; zP$D#T+?oy5Jd3Va><%flpSFpm z1o|Zu%4v1p&V|Is-Lq$$eQxDG>8-gdMbaVXXw3sQnmsaKZdCzg4*5cw(f*=Ie6}cV zj;-(_M<1r0a*CFVMvlnkdc2UZg42SA8b=k0>;}W>1)jvRnx}6UDV9juLk3 z=k`q{=kzppIne{8>IZ>SAl6|s%@i_MfZ4(sPi{Gq_}JNux0*|ihzo+;ohKd=sz5d+ z@N_{CCM$Jv3t3fem6ZEvm7)1}W-xcE6uI{k(wAKb_)EcB@ZaOyljG6KKO&%pjsU}lkQe&5a#x3FG< z5hGEXV^~{>UIw2j;0{D+hTH+aptafYXq!tBbv7Lj0dRXSf_mxs`r_dD==8vT@}M{* z_o=hyCJuS`OZa$qh?)R4`+Xer{wN(2BNL)1M8p}IQI}Uwhm?MO0ffbrW5iHbi$9w!1MG--IE#Th#X-sJLo}*IS<6- zbtSx`9tjVmxLIUZY6USQkYyP?iyVq@zBD~yJT2tkZ#kyxLtweb+KF3%g2LuZ{hcW; z6)N#(4Bxs3Oi7r;pIO%3G%|R!cDJZJcl0aa6E68|e7(M;P0*ENC~aC&P8DJ%D*cJm z(F~k#oU5!FxK%misM~B*5djR+^ zE8hS<4Q{9Mz?TdSlJc-ARZ`%xf^F1jCBG4*dFrak^FTOLlYVAs4mVY@vDYa8Q2U3= zR2bNA8DD#j;@H!f=%31bbl>fM!FGA7*i`>3$uzZx^qkaYTW1)V-T^*-_Zoo{Jl+0S z^^OO$JHf>c-ihU&HfdG{ik9WwD2xRCiR}im=M~J4X*u0q z+On_g$EdM&S;7tM)>ckU;RKVc_s~rQ^w0R_b{ZuIsB;=cg0)C*C^nCy>Gl&S!&7mG z6W_%`E+f*duQk>l*4mu0lfz_R?%R(a_>L;kvtX#QbCXP2yv4XKl3iMf@=w+wHQ z`r}-CWoG0`bj{oJ|MpAFo)U-b9$D|n_!}J&t^(vqlRItUu(NZ)`JJgWd7pq~#!L%f z)X)M_ky@<}&|mUaM7)q;S1N(TUk_Up`@3$NBq`8|hOaaW6Y-;L4x=s73xh;0P`Q?I zZAs!=&C94Yc2YvDk-BJ-y$TM>3qld( zDM*122zn6A@^_Q8a6>W+|7=J`L9duVIYpSMS4l-HjrVO!lvJZm*U`I_;*%Zk+o9Te zvf%BryAB<7sxPvc#}24EAiq{x%S?^xyzhGirpL)fR(z>SlL{c>e#aEX2OcjemP8@- zr?t)4@S-jn{o8^p&k-e|qd%Vgvz0h&fy%hx9^M{buOksh|4RoLpm_jxkT=t`W~QRm zvIv}WI)H{Svnfo(y#KthnEHF|3WX$W<113s{X7k3UHXyQG#(Rb$eD8(*}MdzU|qKq zC&{C6Rj9)^!A^P<;fWNNYD@mu$rYq4sN>sK!=NfP0I0sQiUVaEPmh6NC$n9dU;DSY zSWf(AuRv}DvJ1(Ebnq=m{w41o`i&;37Bvjd7BhGG`o0d5bIh^ATt&{UC{ZM;W%3bo zFb@331+eQ-|}=H_01{*sL-+u=0OoDJ(%+2&NGYnr1c%?ReLc3HO?zGSm1f-e%;1!(A86wOGRABY5AK zRO#P|QFxf?^V$ER3fl7Yh*zGzr@3y};)wRqBe^yM`!+-San3A^TNyCyYn_QnbzM3) z9+NRRRHG2r!nIM9T3H{!=(E$xBD-yUBL9WaBvazY#yzI>O)=&;{54Ey4iy$)=<;1H zz%xQ6UoLI((KVrUhn%6bpzJWw@ka?GezZ;POR~?kUb!^hxS@!_gX%bjPi>G;mgx}fA$VEUn#O~^iVO9sY zpJL=v(L5Ima)*k+#z`t0(H6&_aErJ_u?>o49vL-cjZT&JR#R$9>rNA9Ze+NYy`~WB zAX{oQ?<8y(;u+ zQs_oi_;XJeYr9WBhx;gXTkvVo^WIlb>b{8G%G~JQ8U#rLBpR(B#GiRrqFn*I-(!1R zl~{D>TQ*s)N;_%NexfZ&F>`LWvlkLqqZt4WmxJB|a6sJl$u{}X;a1zP;T*RU z6T!yfTg~A`Ibondd~LFXKDqiBGfLO;+D$p@@Dk%G%TK{#kK+MFBIcXwbLG-wk!OEZFdoFD(i30dftzB zL-QCLF+bX;ur0p1lBe@*dJtg;R*w2Gzz!a1H(7e>cp5R+n?;BB5axWNV$#j1(u)T$GIcR9B*aTo#2vb5#%3Y@9C zFdnHJdbE^d29i_L#@Q(!d8Bm(<@1qD+tx_ISJ8PZa^6gBw{hY$_wYFt21O1mtx zb_DvHwrYZu^tyBA?r%Y9lB?`M;zySbhOE$VaeCL((ty7WMo=H{Dx+@#8xG-Ak2$CU zHZVsZ5f~&f_WH>g%D3f)Vp?@jmF*n9rT z@_xDYbV-j#AXSIm))hZ^+)|!m3c%e61@2^GDqnPldl1e6VPLa6S(V+HduudMMsyE3|h-I zB2xFMX(#ytjq8!k%=c9sy%C_aUY%zsDFmzmaelpf*`1qLN&^a$yPb?G@w(DrLoazS zUXJF15{k-xjI&h#nWZPjR>3n~B~VF^!x~ORuI6@Lcde{z7s(oyGGBLh_Sf)zxNb7E zatM9PLYdJV!2_1N#dgI8v+UDoftruJ_l%tBzJK720Utp8f7(Riw4*3;u@E-ScQET9 z&^088XDi+2YWNy&fjyyd7fbstXwX2HBaybJmeHJG{T1Skm`S$yE9{`>fn(4c6#x#R zE%Hl1NCc{n5N+Vkxxh1`J7}WRVE6R7SfDCpX#+`u_kaTiUDsWuL{K_18)genYkJH1 z1?QiZ!)D;XF*+&9&L%J(y)=tp%`dM{RqGm*(OnVnY0c5ALQ{!t7q>v^VM_&3r9(wR z+w!c!S0Xm7ZiPige9$X|x=Zfk>TCIEm>v;W9rhnyi@{Er>nnt*wt_DzqJaaj0yPVL zREpE*V27owN9&|fhh$bWTzF*~=4r={Z#quA;PetV9I?W}v2W1^6LZ_CeLFMC2ram4 zP6UI0w(rEKz;_!6r8WSZTN|YWUsA+&t3ZzQ&au=}iJ5kn%-h4=rBx9|Bd3~Nj)GJk zovtXh`!OV#qkTC*jjv;Ip5pu9c--Z2*u$H2ZaC2gWwkt?@_64_W9MlX9*DuH%AYeBIbgKhD+~t|R|5+;b-wBf&`QpEoTK-O6rT;`LC4 zJa6@XfJ&TGmbd<5dD^j7W_&T*{TQdBDI1<*r4L@*`aIYu zysJ!x!_mQcyQ0TtH9S${S3;){{xm*^ZkKV>)TS*sIS$+nyPL#! z$K}DNmTbLU!qfUaYLx=|tmPdL+|wnTm}q`y_OHx5Gd0A~-FAiKf9dw9qyO7PrwC|p z-tc3D5);?1+6N6+?3u^vvTP) z{y~Y9Eex@Q;aZJhi;mJQRegWBcu$M>6b2waS&6i3(J;LtZQ0SXH1pU>)^=FLa@lbchG=L&u z=VxWftb>s|k!*%iH15^@1}R^1GzlCVt!}cYXLS=n^ZT?Qqh1SO{*y^{8@(-izoS659rB#%S`M zJW8n~8V{Z=hOZI8NvFX!;OZXMs3ykVO^cxD94|;{Qaa6dtNd|A^A&a1oKA^~%`fGj zjTb522;!=$LszcZv4iNyK>733F2b|=o84mWN)v|W2DfXaosvEbh9=R9%Ylqthd#$X zc!-vpn7Nxvgy!2&-q?`gQiOKW2-oRt4Mx&)K(v`mW|BUU=RSYU5gR?AI=Z>UqAk1s zXw;#;mh=3R;pS+grg^-kS8Xs|%t|KrC8vIO)gQq_5XObZK(E+6pELg`rs_jYI(f>g?mht!zzf#wFmD)91~3 z{j`YI-Aw|(mrk$MvI^Nu+m7Yr32@1-1vFs$x0$!+Ey0EthL*}8C^it%=`El_dZf$W z#-)|@Pq1nkxHo`mE%o`_0Av)$`fG_YT||>WQx@t^HPa8$UikQG`Jg7c`UhrQKd9%w zeoq0(a(p5>mCI3A`#d(>A$#;X6q$_CKG?8O!zOCXh`HI=wiD*TC;*zF2LVr8gej3e zUfaq}6!Dg^_tVJ_f8{gQC5r&M8BCzN8w3CNGtNFGPi1{+8fcGcx`J$+1?lb0l;ZMR zwd({`-mkMx^9_Y(t_f|o6)_VgetWMdTjTr+&byp-0ILMVEf_bTd)bxK7Wx<>n4E^> z(-L)^wn$0R)Tv6eBwql`=~-;z7Df!e3o-n?OlUP;Tp)g-r@;;dz1@iCiE4o)Y=lhA z>2p`XccqcHDy&t#>f^@7agA>Y+#lBr6}2!dB4vN_sBY?X0$;?;=?0o`VfrPQn=P!x z=DO?QiSsR$&6{#v!~3Hgt#b)-TyA3ZagqDOqCwcG3dxmyY*KSLNg`{TV8;*OH}EKd zs){W5K{$^nRTN!Kck%v6xxC{`g}TftC#IW;qV-Cm2u~u150a=csiRy3F@#%)LxFk2 zjwBG*;+QdB>PKd&BRa#87^`tUZNkkV{t4eCOdQ@Vj^dkm#R+=TFrvm>jn=#t7NM_s z_;tj+NB_vyq`DFQ)nt_Vktlqp)6WP8s&4sOMu_EMY#ZZ*lm%1NNjK26ev_Orkv=~8 zew}jY=yh`@T(NL0{&C?Y@=wwVWLaV4^Js?vcC~Fe3EU7I{4Hx^vR%Z=qXBTV?!n!& z_m_OW5I)yw+#A=RQ^@zKLo2;lt4C-(q$XogrWTDSTHVKnHxB1}N<{n~{e7xX%Z}r; z9TcXg^J9e(zuSYCA<@;S`uF-|ePlK(WNgL#Bsp6X!U;T1iF4QebxYpuS@O;qZ)$3d zo_;D|a3RZ$@I~H*U{WKF^*m6oE0>&itxs$ZRYe<2@Ij%B%_Ou?ZW6WjFrqAk>8UKf ziMZJCZ|=0vUwNiQZoFeElmjo1mt&`{=0>Wt=SkFnqE;8nR8D zx)jAf;Rua1#=fJ#EH*XMJXFsEIv=vbKbAcxoQ;%#3 z)($ zZes!srx%)y@(T)r$bjKDX&WbT3fu$HM#jy~#JwV&CxQ&s;)4yLEcHCgg@>9S@~F$I zVYci{{W@pQvz>O)hoNTco_vqL*6$p_A=#uMlFES4|AL?(Q9pXazaw;C?+a2#k42|a z5`%|q#DamD6EFyB9uRBTie!F`?L}Za=zIHX`rrteae2|~Wef$)Ze1Wxivfb+o^JM7 zxT$-?13Z}eI#GRC68gFQK8qd`O1~Iqy9DYLd!>#nL}q`asBL06%@G|>-N(EUh>u3T zjO5H!s3g{|U?ju*VYF4nil$4ds5o)}3u=(=SC{sc@GCHXDHUCeYnj#34R$gt%thcT zg}Fp4WVSWHi%r|w+bl(HrX%u<>`CkA5Zfa<#$@{%$PGL9rOJH6(r)?baqyTOKh@js zqC<9UKO|41Y<9A{F)x3(LQq-NEyWZI?uD^MVX zs#_qLOdXY$VVUen37*~#>eqOFOR9U@81Jk1hjU@Lnoj@jcK26Wl>c6xCmUyMPHk_U1Fo=}f#50!k6JQ8CFkPmh%Bu!sh z^xrdat(OZc-o8iXJs*yNcor@7v<9c=ha?8CKn+<}JD}X>FZD(s#U-69)K|Jr45y@$ zYVS7vubJs`R(7XI&d^ZmjxTfhxG#`_8nHr2$s3b0zv&2Od-34kjaWWLm?F-U~B zGLq=gzOat7HNL=vyy43b2SBO-H8+oT^lrBO!S?od-W*^4dwR#i{6*6(qcLu0WBbvl zRMKp7P#d_OjOp<1(7%nL=G=?4}1Pc(_6wg z006955iWu-+hnc_9Q}3{2S8X;L6FyW?x{BSC!dju_x;c~+JnjxY$AabPxTl9EcO`W z_hR5q2lHSil=lEmYbjdohfU+sYGHvtWdpgc%GiNrHdltn9kIk9rv zZ348MRBfl8h{99e=2Jg$Rqt|R`-p6|Mjri39f`=(I`wU z)6qJZ{hQYEZ#G4I(@byowsi{HlN;$8U0IkBq&%*hHl{5I+{4Wn_F!`di4BgA{jg^% zl=D7y2J2Eo%ft2S*MJGHu95H(l#q_EW?Pap+s12@ zxCv^>nAvYpFrVAEIR*!fV?`lIC{p9evxGPTY$3j_MpA8b3U>~XCZ6?|zZn&YEh9k%N z0lusO=`r20i`ka0Ptfje(Jut!OD2x0VscPto~`o)0kzr`2Vwd_STxu`v8%`YmFPr- z0-YtcYXO>OxNo84c9D;@GlC6JOSDtYbbj}iyklzh$b~=sUa%T_qAaJ+Z)&(73fRs4 zoa5d}NJXRbwohPH6XBR+J|X#S%Ll3`mPmE3MIlQ3+aRfdmgu9b&G2+YHieF*b6QA# z*-9>y!UfDoLW=^d-b?db{Oa#}`?BMy&2ugJE&Ud-dO^Hn9aaLMP-14T3rq0F4GnT;+!(BD{B49OsK*1 zNSOVJIyn*w@bB{;yo!h6)87JWWu9AP+|o)eQHhqtOosU7T|4@=+%lCHk;&sRfyUtN znM-6^xrTj7^<3F`=nGMjZ4kzsJzL)}nUv1n&3-YAy8$H&^=b?~MKKCYyk~qBO5w4n z@Kx}Cl&_}_+MJT8D-t4>{E%r9-ze9*H?cq70H0_^OX)g?ImKq~7RJD#t^Y`w6dS{rJY-tv%Z;@|HgQt4 zHs4&`)uSm9z;dRN5zD`_HvWIs-sDHpH9PN%Z;Hswx4^vN9tFR#rxJ4!3R<1jCjWh6hlPU|Z6{g1oUHqZ=Y%ToN+qL1@!# zfPew7C@%#!4FdwW(jVa8bIv=QH!`cbWq4B+8S#zpaK`66C(m9C0@xf<>{TXJj_2NJ zTOS2A8b}=bfxXEN<3qiS+)O$%ld&C3ZHyz=i^KrWVbp3<+K!C!Wb9Kw=Yxi(=XJTi zQ@mTvD@(Hq27}ALPc($Nwf1?rKtpm#c7DTQHr`ofMY*d*Qdk}?H+91AkYd|TkNvS( zy6VCAM-l5jeRd4-x2WPKZ3jp``*2MVIcbJLrS2s8qbx_4Wp$IZnHgFAmZuSe|1=8qfdOSI-MlgTMEu$X zpG!55Un@wWyDtN~`9Pvveu)JS$P3+eWTmNS;q+<)W-GHSl)v5mDuzV%{EWnO+aCcH zzo))8QuK|8e?l>ln`{A3un>|LV`JP(mJ&hRvNCLS0)Q~>Sh^r<_BbT&=8v>_2O3qX zhe5J!W`A?`&$)lHdoVOwmeisNblq;f7Jw)$FMB!2f-b+5~2G@Ng^+;*~)%& zv$aS*+mR1itfV9>Bvm}H*+w#(a$`C?DI6_L2wyjjDO2XsdDkYaLd=5qMJtV3MMHs? zJh>(X6q2ji$(!j@25ij@WW>i%kB| z+z5Kk6QD84{!MyC%LBL{NB>YEogXc|e)gj>ksm2JrfSronyzEsIz0t~x94PFsH3oC zdYfyZVAVKHI{+wEYs`a7Al&wzSXVU=^BNVy-AY-wp+aLwCfHgDD+5DeGd8}V`jfl} zM%BoY7mTsIVp97&$}`%2RpyjMUCt&1W15qLcg3rjb~81D!95&qUeK(8$X|O4>P?8k zmG4Z316zjoG+{fvb%UiLGmHZJREjx6)W1hz{rrgb4?5^RkbeG zvtskBgNF5ttR8o1A6W<6DhKa}vQoUQnkq@Cx#8TKbuxl_Y)mb!j}rdl0h`sK^zFvc z?m{b6^fLB)T(g(f1G5h0vZ142t zVk2;eQRb6K?hGVqA2h+Z)HS}p(6nroHF+1K+wD8I)3a_^|kGkxhk0m)`%z{( zA6@SggW;f8vJnghx9sEW{2c;F)pYC~eyFGhE>D@O87;{5qn9mNu+EoO7DwKX%QOVh zG}-2ce(hm0B0i!)SZt+Y*=L(>Z1gX8N{CW{wFMfM958C)o5q6l45#d-ayEYyw7nBn zKWYsk|FW?eCTY1byNuRm+@AVlaX0dQxFX(L!M=U0NwjW!RR4uBH%aOZWN@nJ!iBZN zQ|?**dMxXTVVtP`0Yjnbl>sGNxCpT1B8??^6yV9tjhs`_>b`tOdPyDN$sNAxt zH#Z3y%W)+Go>gI-}nu zPgz!Fi3M~cBo>>F#OT$t8WB~_#;7eFL*B1pw^LYljveXqrE(X~pLtqwTxNMS_DV|Z z9aaL44{T|xn5~wqRbYgML0+<3^B(AI^w34MNz~}XhfKi=@!i*N^!Jx)6W~*aJ)c;- z>Vptn?ikju_3V#*tF(rdD2S@byi5kSoqQMA?t9}BmL;IFf0lsMV;l9ouS%Q6HpU)Fkt~q} zI95(uw*!n!M#PZgMaHtbZC^ALivWnZ6n;(j8%zf)M7u{&^82n@)FvJy!pNF#|AiW; z(5}UFfz5;^bV0+}W6C@aF68usf1urI$Jv8HGY!Bny`H)nyeHIW^)1PuBL<9^)C=w< z_tD)s0krw03X3Ah@Eq-?;?Z+v-*ryb25b`DoVG7Q4#d+LCE~VL-B#6f1cKT8Fu88mdn8ofi`Rd zX#2Ut_CXHW-#l=<>BwZYLTF^Gjlfb)GbnHefP|-=5aNsiUO5(D+55}B7X<|9 zeZ))3z!Onkwv;?msI{xj)f9W25o0x^FPUIIJ69JEi$lX)0|CbHeF-$?mfX(VSlhrW z5Jz%x$n?9{Wh$ono6wY;uninh^P$wwW{sK}@8FH7<<3_K+I`4V)9??c3a-%mJ^0u` zVePOT8#*I=#j6{oA?M;76OI|8C5R)?SAx{-Zd3oN&z&fNG+!oCzs67d)8|KLP2kE@ z)sCgIciz^*E&F=DI`)Gt*QVi#@S=mbouC!x+4phqTdu`T+ z4v{ypM`LuFxC^LIBR4kVTlIFyoDDCcBlb7^jUu}439?3lO; zA0HvdDlG@<6O$-2On@Z+B5H8Uf7UpDdI@R@VKAc+NHYb#_-zV6dEW*^p0II{DHvR! zXdDpWHMBhC)ld788ifBFqyYqA$-dx}7_(ABJ0na|s5-}ghU@2LvG|rgx`Nm+V9V@D zsp%+(S>bU1MeHlxy=f>d`VBIbh|BFg%H;UclYU^)6j!Yi82C|72NakN99ad-iX<;I z0D^$h_VVWZ=w$tRnUArrL1^8sD9l<4t97}8;1&3&a7kQ9R4dm)UU9B{<|ALfT* z>yO&CgDjNClo+jFfx{`k*_aOiZp$~OzX#x{q5r6KJee4xGN7c7ZUWz+egHv_ZPJ(k zX=zZl)Ls{9XZMcI$KbE71O4l?oOQctcy+M~fp9Z6gulxNe=_(yfgn(GjvA;me@%TV zL*Pr}Fy2B}S|j$B7o>FErj?6mjANYq_5HWK0E!pJMkBaqq_4N68G>&$j=Maif#_jM z*R9o%l>+oKBt4S0S@7d`S z$Oz@Ge6{PSh3#x2SZ_DC>sL2R{}b4u{#i;&g_3stASv%Ni{%ibs0qrgN{TGUrg}nYglhk{9)E56UNF9 zM!&U5xFdnYla%_#>CrK;Qq4Q$}#?-*3DsAN;&2u9g zp2n#0r`(Q&YI7f}$YiC9Fwh2@1}K52Fw{q$@o5Zuc87{vlq#ftqvE{Wslj z9N2W(Ma1h@&NhuoT_;7mF&FOk*pFLsE}jqJ?O@cqaotgNA(1-ezL!>*XXz%*j(VD9 z7@+;q-32%u^>S6`m{sP^?X1ID^?cQ5H>L@e3y1Da(75D~u`goJ*jF39p|t18_6dzu z)6aAV)oF<^65GnRmRS0V`Lj`GPLw5>hQ?#iSCuA{LT~E6&%p58sw6T7W7W-hXBSia zICAM~#0Jk!{`7%O++vh&hV+$1(06M8&EVd_mldMBQoi;xRXv|(Bwind{vdWTL?N3D znN`KXp(*rn9ghvH{)hePX*M1XD2|V%pOM(mR+wP&yR(xS7R(tjN~U?$K#nd}6{94XQdNp^c z(Ph3(-HuO&7NLtSsjwrE^AhVe+>5#^5NHUjXHOE@fFzfG^i}3U9}w9o_Vs<1@d3gL zRgdI_plYG0jjG-Jj9}95J_MoXUbMZZ5R7KEx2qGCg#qVJe@Sj)Z08s@@=BNSaw!>@ z>97rUp7br6BpWOCGKbn}d&6}p9aG>#(EjP+QZ=ssnpPMf0L(}w7()RWuj{BF1~;FM zq55NM(;%670f!6b%4J}qFgDU!wKkp}1-hO|y*8`$GoDe4<05BGD7s9bDNjvoU2kRw zgP%Ny4t<4b7^Y+{b9HOcbMgIdH=Aga6`0Y9cYPHqxU8DTm&aaL85JzhXPRwq++xdl zSBh~IZEkqn8+I~9EU&{?DHhCf`RvA|aU@?dnWg>#<;_eog7&1$XMky{Tu2GvBkGwQ z^MZ5n?C6;Kk5`u${iq&cR#Vqe%PFBjP9g)SsI+6MrgHr$jEm|wCKcbM?Qk!lud{ql zc-I~3S}a|*v@DhV0t=39VlEWg4Hxa47o)wtrG>DxrvBH^v^QN(B~neyYflw_4Zo#^ zLxzj$znCY9^?ka60G|e6<;5h2TrTUApvfQ5RWDox#>H~5RKq@%WLV8NkkAm|2*WZM zL8%wR(){fO_NJz&u$-h{@NBBFioc9Wv%Q;B7DD_7li7`ExI8f>=Er`K6E6cfQ=Ls@MSTG#qO zIPa<50xyt8Mg|}(RSC*9SfRAU*6$-1Rb2b^nW93|`Fg#%ahmmJvX7F?d$eo!g#C0% z0^T!F)qNokWt(Y1m>`;X4a6OWeeX%~5dk=LCHWPiSNR)ymdu{c{)pv$Me3$w{)~tS>3V%8^-Xo?gr>31ogfXcsziF_nA_chr!QB9>qCdV?k8 zr97GJDo_s@odyr_ncZ*JCq z!^gviA#oO4o|-~+25fisS7z((BM%^%5XDRT2F7APuqdmeYTA!=Cih?gs(?szk-@xY zO4Elu2FXjcl-(DFiW2&sxTBl);PjFTzs-eRs$$viuL8i%s<}f#%&}o60Hp&DncmNO zlQFVoMx1?n_Wjv!&VI-+e=BvRLbRSzNWGkNqPkjr z;w=>>`XXPyD6?kTRV3AC8!`bT-Fedyb2z0XV>!dM>T9Ex*_H;OSisLKEJ4I8$3dW@U_NN+vVY%JH7NwqzdOt0zm_H>al-@i@J_OLhMg%BKi$ywJhM zg%0|UnhQh2xbe;ECdF;*W2P_KM>&CLFR&ub}l@#Ko;Sr25@lo6wW)< zq?U8dAq*j-2qUg=!qxNj^_u3z3WeTKPJ=tVuIZr^9a=3O57E1C+|&uS3!a>I(Q77t zH?;^d8BFQ#u$bS)%K0fSx9J7%9v0lxF25$4Jr5oXvk?@Aja_6nPL#>6pG#Chcw=St zWQYTg{Tdp^I&p zABTY4mIvhK4#JYv^s!-@?bE&7s(~3w^3@7STI`LQ8rs&|4pGD@C})%Biz+Uxh68+0 z{l+;jeiWNX3Gt-D+BtE=o9Buy#1%?>)8i`CZO(odAIb@DKIBQ{ zM;*)#Q*1|aeSQ6!jj0J!9tWQ9zU9d*Sj3I@=R9Nw80X>>fh_DVUPoh4pJR3bYwvP@!7vK zd%;Nj9ysTn5>lG*dmnogG7nnjA!;o;!E7!D-;(7Kh zazrpO52)=#G`WV70H(}rMHzk?KA#$YPLYQge-@jM?7tFk%}$wbZA;ZdMaBAza!*I| zJ_|2A-|c?pfYrox9#4~`hJO6)Mp=xDt8ZK$y)K1S3=|f2UN+Cb1J11=JP=RY+~NVu z8;8-1-gzUB?JL9|Aqu)|@jv(96Bl(hmFTs}SKqhls;_|D)*OdtqElL#^|lCu3;0IU z^CgT=pPp-pW3F4$aQv=n5{-iaQ5cb&p#RQ+lQdY>01pDGlepeXNQ?e?AyFy8u{YeT ziz>pYRKTaU`uq~NvekWgB+apG-OA~jbHxmq2Sd?dzh6Z2nbSQtX1gt3|QC1FDkmqD^bu9v4LFPf&G8$e7F1?8n**&DaL~Nny z!QA1JP|@@2i<2`Ez`Y=JQ;j1E(XOE4tYOhV8Myz9AW4WwW z>Yhj3fDtJ(R4T{P$$Ktx{QX3yUQdATX= zcjUy5HrP+Xd!ht3%q@CjU$28T*7S}Ml_zBp(HLy_vKBES2laHYH-^sC6ZCMlmA_lXx{5$PH6Ud#Z%=D#} ze9c&NAiL=TSFV!{igZ=R82JRRptNU4AyR#u#B_$cp2WAGVjvpA*qlI){_dJsQj#1B z^mKowuN5hzUUt%t9tRR+l|ww~W|v#4XeAEHXu_wA#Hg+z9O?MJvbJGHmdyr`d>QFaULT01j zGn&IJoJC_a8l_4cmxH*x^w)zR4ifzqa<&%jUgAKEl$Tl5zK2)_gkR>0*Q?5^3D|E! zLKhZY^j4jyv!W_;x>W;`Kg;56x_hLwl4&BXZ_jZXg(W+((*%x1c4a_FItUU<5l|8b z#ktCR!*r-{n?)W^lA;!{dA>S1VSA$|ZF4v-jyRdIovqN(j>n_(G2nVx2 zo$H^4?8@KkvtV}|F1wPiU1}39<(%{fXcroLURo=ss_A4cGFE9dLg3Q<#wq1VmeV`hnPG!qH_o!%j_ryw+Jt4!J zgULxx|Gv^`JzH7yvO@QJOf4&(8@O_B0mBaW?;CfomI@)_)l?rEnsEb)psuHd{g^?= z-&COh)mg#GGCyJ4I@L@&i;3J-#=vfELRNf{Y?n8%YUCC{^w*6jc_={wW0#O390JVD zI|1`H_9|vjkbq%L@i#)%T>OD|B9S(918EGKR%hLK20dsKc595Q@r#-Io&DnKjRCX4RLGo^W`~o=t=_$b?rho?&7$rT1fl-=Aj9F;K1}kW_>LGKOFFlIl7E^Y! z2=5oU0mn!1-YgrMsnkp1dy+#9y5fqtI1YcoFdHM*ZQ>)4&u_G)G<06r6O>Pszf@z? zBx&VKy7skFKE%;t#}jZ~(05;b7U8iK9(5}v&yjxN+wn#GYl_|pfgZ1D9Yt-=BsyHc zsqGVV00?vViPUfWtD<4#Zm(YleC#%NrLN1aaxgYM%|J$mi?AL&hQ&@~!#I{G2hn1L z`*(pJm>QeT2?diYUQ+#`PaF9$$Q*<eKF9vnGa4z6Bfqp#j9nZpm9S9+k$Ul_~rrX{)G|OjQ5FX zUX`AeQAHjP`~r<}X}&&k23tqMAM3JIv-1gsB?}YH-#=((3hh`{wl1}=F7w$2_|@f4 zLMh|B%rfktGW6U%cGk1gBjJ=h7Bcy;dPHn1{|0UlMFLXiuF3~Hu%}GVS13t7Ex;$k zaV81b;hlbmsF5qg+@XFdFJX}xPDzkB>8o*KWimFSY>55|MNl^;G)?jyPA2gWg2eYA z$Xs)yo5$>jbPc8~>&U|5ZtF%fcEtT?>@%6aj$d}EyU{;DJ?aaN)sFZ8nIe;#TyeDf z$Z}nU1oPFZ=GiO@F}$X~O_jkt-GXB9ydkXb!DV0vVBh@u0d2Uj5h#DrqU)3yjFKV> z;x>Q-W5ZR&;!PWk48k?Gqv&a~Y-h2lIAp(id~-j^j9;Aza1f;i9e@o@XGajduNqin z6!sFtOIW;`9Ps$bP}d5;!Y#h?=$5~}p4X39zS(c*)IKpU6wA$HZN!`@-n||^k!eNG zOKJR0k*zxJkYkpm=(%<^;>`x2TMBdqV1CuYxF`UT_kwqIH_Dd5$nZwV-^9PR-iC8| znC8HcP#qgZ6q*W;pf0H^DP9D1Fe?Q=U9T&NpqSsVcHo(;^#_B9w%0Y1j@vK@-@VKM zb)45ej~-f({Y+vpyurA-2n8u%1;cOi_{S6%XDl(Q(~FBxw`YTVB9E;YHR^!sq)=|K z9u6nqpQ}swl5l4_N;1#rTgDvyh{TrW$OXkC&R-C0B=8obbKy0Pa111`VNr0Yr-XF) zgYK7?FzFvvAI);P+{|l|ZPMxG#EvVovIynMOBz*UC65SnFNCkwA)Pv~o$cG)ny%$N zr0g-kJ78L?GCwh5@83t$Bk1rGaAC9LbygFv)dmMrEo2M0%_h+CL1_`DvINEOIgy=u zKiPl#bE`ijJLWc+*^!TxsVTOtZ-E%VHKk6QK~ohrAx~{LJ?(FVsX~J7_3e)08&5p> z^nq9FvBga~&_8@7M;PFn*fzdOjS_Z`qa56P-~fTwggPMzuKdzOPB2CMQ5K4F6XP7_ z3Pld+iqAsZ$nnYQf-IhCDQy@wc`?f zP>tYaXyxfI?|ayUa}-6xfS*z5Ycij5G4Q3ImDUy=}j;h1y`S{sdrp58+O_I&R!uGM^{K`YP)E zkb)CUzFq#Q)FhAmbmO*9?Y2+J;rVSpB{`9kD7`&`Wsb?N$S&|pjRB(PFDYTOJNvJ? zzd!<5b!R!o^&YQws?x$t!g2jvePYULHOD7cY2BmQeP4DpYC-vGi29?l$mT@;t~+9U zip=wCN9w-Z)9iV=4Tn)5@5&G!YTkhL5fo%B1>p|SpS%lfUAmjI=JKkW1-*kiUvA=N zl_YJ#xAIA0Ic0s+JYX~I_E>kF9+g4G9w;7Pf!A{l`A&&^p;f4~pkf_AL*fjF{mBVW zpPiuJ!T-*z@!2`4e~UAE9?RZ>76oyH1z+AtI$?KGcuRgAQrECjW+X2}+9lg0(JSM2c%Bu%1aJ0mp=YmCQ zqKm;A#Y?WL-M4}L&0+`zDs}@=JIS(!1w|p1+AN2 z+`Z<9?BnJ4vn`-U6Lb8jayPVzx;`O|qoB%bdTk2renpId)DM530>Q2f4E&%k4h#eg zIm4CxtV3_~muMRxVMw2yk>M1kK|hLA&?&Xao?x<1>4^2+wI9LLobrbbF}#^RatzTc z%fys}>@PpaKXQ=Hy||{d+a5uon{rqFNO!eQ9AOU(Kt=DZ&lg{mgZZ2ewoe?O;MqB@ zTsg!>%n&CaB-88KxN(MM)btXzp7xo$e?LV{1ej+m5`3QX?9uH{BdV~c_dMK6kCqPP zG`&nc&7Ni1pV^lBb&Q>U_K2n8nx4W@#UHePeUBYo2iG;0ln&>j-9$1V2F$Rn5&lVd zG#t2Klr20cOFLVF=}3g4dzCeD7+A z&ez#wCU62W0@_k!_KwKoq=Bdscbi)OzgwrQsW@Pa(V^BKIV#LWg=kWA8*6KXIW&Tc)R zV6Q}O2wSKW&hT}nhN#ACM%%8nMT)T7A_(6p;8ZOXw?2cgX`&uYVhVpJBO%0V0A~fg zU`>=+?ds&?Xi~1TQl%p3f>WsY9cE)VcC3l)Ok6eq<(yU2R6Lg z#xe}u;S*_{8g|%zA(!8>g*6;G;~B!D>_BCTF=!1*psgnKF~T^cwUvg|L)(8JADF2+ z2YLO;_$od!=<$t$$f?P9G|`{IBAK=fZR*(N5(t(s!&l1?Cr2?&2b!{3ntIX~$~s`V z!-B`4_KQttVG*N5`7HVDfr%ssdX?exdjo*sYIMP=S%Y97Y40qpmtt`YY)*NsgBS%u zY43X_fkf}iBQX1*mWvn4u#Zv&_Cro(NWv3^dX>Nm_L($6n%mtO@WX_)kTlnkYDq|l zvDiHXF2YpsZV|B}Gi`6)yu96BuSDg3(=lD4X-}Kj+$3%sRI@#gIyLV`JYqQniE7F$?sk0!n(O^HJ$MJPdnMnZ`>6Zd-kH|!(^mYPS@Ivv)gfzWf)>{ zIns_ykO{S`a8BLj*}v2eh7Yfj$E8{0IcO2jHyx-P4rejj^B^OPmYor{zcCA4+>))a z$hyAeb9WStL(3OJj4f#hDISp+dQ&3e7SzxdnY5iZErcLirG{~s(Ws#Yp{B6jWt{K9 zZl!&kQts>?Ex>9sj2U9B+)UZ=O)8E`oLCPut>Rxv-wghWOn}uL2qg5`jmo%hUfo?; zb=g^lAhB0(?+lEjWlsYsL4wnl>~2$ELmIoZy_F&46spVLbPtpVn8uM-TE@I1mJe^b zKk5lEibCm8g!o8&P4Mo}$KsNhzYTUm(DO`2#>1v{ZSqh>F(CC4Xt9?zU$u#~OTyLw zf#Zg>PwIE@9==e4(N(NYbUOtu+yFaxlotTDSQW<>T|`lCWWh#58ci=u>akq*4k51}g@GW&hH|kb|3rhNB@KqPJVj5e1cla(GyvuLnQFe1wI@?n=41Z+7?v2b2K0+K zDA3CmLFbc@K75_ELh6vI;#vc@j!y>*HMnFCN(oO7{cacnNK|5qk6=XDXXDDS+h*bo zX7X7tb^CjKzCMF3kL+Eei7b`}A!JpWDjLwXQ(ETSoxUHUS5ornhTe|ck{Fpi&ax*M z7oVW{Ya${QejKh<9l|m%a%9rWgxtyqz#s-WrmMHn%WZ0JQ<15r4&TM`5{m*dk~fo0 zEqAoFwar7!i-eaBO)p*7w@eB<;N zKk0&`#$F_=#6IV*S4Z`0KKs}HdVH3=yFM~=M)Ho2e95)bSoqNdX0BhRYuji4`qlb% z;ZU^Cxg$EVQ7>YWlFXgIjE##OW}oaj=Hcq5_SJLhdEwXKIqU`OwbDDHBSuqDzf1`Z z{k?0Yj=3aY$C|oU%_*t8V0F!3hM2Z67`7s&c?EG>7=MC|v!*0Wh>`OPThV~(RPcBt zFdAOd-F>v$@ipFWP?jc$#m3P0A7e6M5Kq(5%U3lAV+#Iow6{jWSDi?;ec38{(*4m^ zWO&2z9DmKMi1<{aO=Qh*s|5hAgVJeDW^;=DXqRGq3suKH4)Oim5Sg?9^jPtZ)Af3N znsq{qS(#hKYs3D6K%t9reX4Xh#s8}GS@xf!at$2SLx3KD+Tn0hCvg7;vABxb3lPMd;jsA6V%h9p;K_3VZSAPc> zSO2(29%P%J>R`Rjz56~CpyoNSwd&#?Uy%K(dkr!10_5PR5oU9)=}S;ee6#vkrqvH| zp{s$qck_nLVk^smIa7r#p=Ri1OU-GX-aX{5lJG|PAF-YSU`kLK;Js#Q98!G&o}I_U z7GZ$Ro$;8&?xA6ZY~L*8M`!|QncC2SBun0~1=_gZ+6op{u@=7dRjrM*%S|GeKW!sp z(v&ZJKp@CIwX8~%S;W@q#Bo{U|90$L!L?ptQ=%hYr)H5>KeK)$StCTE7YsaV>I)Jt#tY-FIysd;;X92-qGDCI1SQ$K=@iEG-N2aX-r7o;vc;QZjTQ>(p=ijOY-j^dQXK3YSM=13M<3z=Lfd zVP=1Wf5lqI*7keQ;Aj{kVryje!^m4lYlOjH_Eq_27iQ*A963V!xxONGU7$h05V*hc zEq@i;rB@ihB-$hiW6^(GqO!kEd52_m9+5scabf)ic0o#>$dIsaDuYM=1#{f*d|m$F z)NAH7<#KVz&)0%N+??4z@rH7cmedfPp-sj?8)F!7WfDx&`qXxRv1CT=Z*h(D4i+$= z-}EWDR4{;X`%2e>QL%L-x8Sh?8F)uLA04BJYw2JgV;KS&GCFa>?jUo3e4_Daj*8xr z)c-oYv=pq-1#IRAU<>)QF~Fj{Zmj8?X4{HFwxhe~XS_|@c~5b<^qD~re5kxhz^+(g ztNJ+IufgSCHn}AhJGExefNxJd3H845YM%4kpMYZdcS4Q*u74A2?1`zLk@(M&1`4o8 z>7u&}L7p|B4;Kz=XC3Akn&pJuX&yj9h|uKOeZcT&#u2%?WTaR*v`e+&3>$M-4573C z1O;SZC0nHy{(J3&!?sT4jR7_9{u2E^OGIYtCxbmK?rKjrc9sw$ykptOhl*;8F`-B=tb7V}R*SB?;f}|7-7i@=pwNIUrh7asi2x8b3 zpmRJut+MRUJOJ&4dM8r{(5i)%k_LOMTGUpLd-Xn~Wi=uh^5lThuNToav6}nc*`K8F zM%F`SI6D-ZN{t=YcVlH|jA#z1q!71RCe_FixgkcD%rvY@E{E2C)3hS6T3e{xm>urE zQ~eKlG5c0P<*73!?~wLW94MJ2=}!$^exn0g6y!E$fGglop*o*;RQT$%o0JgEjwFsJ zDM|f>jfPYEO1^|VW`3~GJZ#Ed@@qPjh{TpjDJjZyiM z7JcS3%qp}OhbPI=eQ$P`6xZb{3SVZy% zceT}iloOpy&<_$-8+GBV+i|E7$0WVjRlBplJiD6x_Hz8Sd*m`Ga#SBr2A`)S(LEA8 zJva)NxMP{uj4AWlL&;GaE<-)2ww{VaQU0d)hR57HTvYdf zosr5_U9=cvZlW@S$gfSu13GA|;3$`M;sZi9nBn?+XvAFjBD2~uYs!J+g1ICBcydZV zht-J;2ix)fC;ZB0hnuNn2c*9-q^$l|GA-W*x*eRcm5qlYKpGE!gW{7_iR?!EDJ?>v zk_w<%ZN$BaTb0qQ0VBK2a@37Y5&Fd;nsr^&+)EKn8!Tx!L2$OHQ^&``ANQ}TDzzYh zluX2->R!+(HdJ1=Xk!&&sGOiRUvx09)A|Cgg?sRALhLaC-5jgXzhJ#GAgY|#I8bjy z7_ICD-yYO!;e6Gt=K~46oGg=RN}EwzGlz60mYnlIzI`vlj@No9#zE_(8rd^>IH*HT z9D$Jqm;x-kQ^@-A3S1acom-kR)S1(g9~!EWm^B~}){)wjK!6Q3GK1hB!E(Vx4Q;Jh`o2TjmnxO_y7rM=88A@@l+wytp zb=>2^Zu4}gtzn9p5FpZoLw{VwcDt&S8^oKdfls+7AIc=w4;Ua~NT($U{&w+ZMtIvo zaZ_ft5D+k@zFkjXR@X({ud35KY90vFn%(DOT;I^NK|ufr^Jl5HY=r)Gc?nWWOK(D-lb=1diY z4^4Ne7Ocxgb-?WP$FPgKncvP6J<%p08+H8Z4^p}{B9 zY7c*oRFB8Mr7V3L?eXG?&M9m(zGY}UEx%1!Lpr80OR8_@b5ce1q0ug(_;cFPlUZoC zIu#~(m^bp0EQ4%DtB69-gaKZQBuSNgrMd!W#aAcdc{vlN)_Xx_f^o$Gw-vf@fs(U+ z6P1-=B&H1p-{G}wn#LBv{Z~wiS{i-GgPlFwJ+YB%0osC$E+={;Q8buEHiKBuP0X@f z?-PyV>tS=!|3qPGBNGRQ{W65@5w*sdf~jNO@#ZzS*IzuB;J!H1|8;29Wqp?o&ZwH1 zi4hc)5*xb;cRUI6C=8%rM@x+v6$ev;>1^O@uMVB6)Uhk0m z#ISh;%w?>C(=GQsBJi-AAg*i+V~`J_2WMVGe}fgOUVC{8P+Eqgu8Ai%q_MeGs^Oj5t*f#Vmptftvl} z{8APqdeAki1L<382t5RvVb9NDw!(5!3+1vKeL)ou$98)zFH&1-U-ApQ0&+eV?lf6K z-^N2?Be#VXbCO{2z6BhMlOKZ@k4wHq*|`FAt`QjdG!R9#uMQlt9>Gq$L4cuncGv zO;VU9vgm6Rgh3{%2wzFI>~_Zu285T@w@7yj{}P%xZcrcUM%PxF5SNVC1_L)Y_sC(x`k*wxT>|Ea5r)`Ge&i@pegUS zYww2nO!Qw;5cP{$ji`GitK9o4=4)nyzS~^d=QEDr$Sq6&V08 zOf|JQ9N+$!_U27jU_*$>?j$&k>Z7wY@n`p5qlKWgM8i7Yx`+l2{ETo3CePZk!aT)b#?zSD;sD9%@;Q;pECEV*O3PFA6eAUTYDAN5a5 zG4KF{SQcrZyjz;fc&||IMOC9A63U~b{j@CUhlCRJVhn%h?3{zm|033XXW~^N_hxwfXLxGVNC@ zQ+&t;#cqXTaOn`Cp1F?164q)H(mI zV)h58napqzc4X(vowd3&(pEWZYt8>sg2f~C*cZRxr^NrUR*DJ3H zki2-M^OwrYo50;a@Lcgcpw&LA~(-U^|+;VPto2DLXYv+4TKp18_UU*pV`ePxpceB+!Td6~S# zIq+%~L69{>&Z|OIYq#;!{e@C1J)eGub-*hVNij`j5Lyq^Nv6cRmtPtCAo@E96-d30 zkGIEP{N-Qz`OJFQDV3(o^=HSQ-F$YrI$%EZQJ(@1y)b<>O+@OltIAXIn1H7B7LG#M z!)Fg5mz+1jmSR#zEIOl1SUOdL_5+R@FgYm>gFXxcC23M0&j?e#0f-VwdWVZTF%+|h zt^4oJF3s=ot<2W;dN#YaYTRaI>0JnLKA2VF7rOtDh8)U2ciM*}-C#v_-n&GyG{rT0<6AKHl z1alXL%RF4*IrGQ<1z2HO{cdgdR>VJ;HKw#6-J)=in~a0uP^~o~KO(dcKztCYQA;2p zgLa>eM{K@K-fTjWAG^sU%u^6H+|mYC%Tu!DQ#G_L+uiV7$ZDH*mTIglxHz(wKg?^$ zC@&CwDpMq20g;m?E0$>qCRV=?$VkkOP_X5Ps2TA>-{PqJ`nOO=qzq z$a4c~(c!JU20~bRVM|#dn~Ow!v$G_so41IJ4q zlCP?(JzED_nLjuCLr7<_4Yq1tpXB>4foe>R%pRo*y;6 zjRug2O`wZ5@4<$k<-0kGnc&SsCfTF0Mc)Sy>)|HbCh0^(xaD6cJE(he3I$N^C^Npv zYO@EBT_h_sh*Qh)78#<|LKZai3~|AL$J7$}1#)jHk(jzsyxDpb3l3}{TaNDHlZD5e zyDBy5MAfjZC|?N6o$@4P{MNUNej(QU1_jyl--58Po?(x1k+8Klw+Z!X!|6&K=2KQ_ z$sc+NvCEh&?a-`sj?JAK@l#JsJa0Enkhi|rs&ZLH45?U*-N<%gf(!#JBNy6pLm%0s zmF6QZ;DlV-8x7Dy-^XLGC9ub`#qUGykJ$=ZmO;)qDV?rf4XQ(Fgr25Gbtq=Ve@Pv_ zYhX`|<`4j9AA~~HXeLe8;iL?*qpm|VYYNd>`Yvx4yclI*IosZ60zKM(!_orm9*lBJ z9xIfMA$CJ~+8K%crewt)V@?H9Cn#REG^q}x;f8%-%WFBZih?j?n$0I8zFwcfw#qye z5JV)Q;Ae^}m+LbaVT<{qqL^l-l{c+|P_-8&hhn$3Cplbbp;NcYn=$~YZ<+mM6#baa z*MP@wR~5kEqHn#f2tL0f-Lz}824VkV)5GiQHOxw(xr4+%f!2e;!l~1}MUFz@Wm&e} z49qf%<*_YTkNPEia+?6~)KjncKZh?=qI`r33X3nNr;#|bKWYq%HujLl(BY)uHDm32 zkdZk=hqK|aDIY~TNu4n1j6hjJij`U005+J}dh{wq9hcv&ya~6h&SJ!z8J*zn><(?B zNmMwGzh?j0!Te-(WmVcXB#Oj)EaSa&94dxaIi=dHyrEYfQGg6H{8qQGK35h=$Z~k% zA+dmP>OeA>PDghMT4=jnzj~sGU$IfK?0PdspLGi0jBtg~+1w720cs)F-9vOGPy9V2 z@PEuCTK-)J*)<(!F}*SnwBMx;4B1!7VJtmK<;Op+Hw1~7x`|r4Hb+M*w3m@>6LR!r zRS1K^3P0cda)Bgk*!dgo=m546O{PsLp|ddKNsOGVisQcvz)iwT0}J3%t+s&3u4;DJ#Q1dKC6)H5X`KY*PAUCq z5!}E+h)<<-!loE+;oXz^JQg~abQ||9BJrl*`i54w3d=26QIalO=tq)Qv|0ck6N^2N z8z)NYbPI$cY)^JfrZqo zdk~O7NMB-6n#DKpm_OUCQX1Q&}9OR+-?J*L~^3j|TJ(QG=rZ}=(%BO&0 zCd5D*SI1b`q$w)il?*x76DB$dEg&`c`ef_L}{Fi*spZqXBlHbk}w0OX5xu}7vY$2DcEh9Z0G>^U;=hp-o zvcS`V*>@nw3^*5}t*S#&W0)R>yI55tS>k0S+Q_?!oNNq+C82hC(v8II2G)h91bO?C zSx$|PFakhPW;7@+6^q{o&QsBLgObpaFKG{MBL)8XiVXLZ{ONjDNB&x{m~4((GfwZ~TJLNj>@Mth~r?9S*K>`Swp zvQ}T99_FM>tl$U`&sb{U1H%uW8x;HMZWgKBQ$CA@tS(O5oNfI5H8~icFrqR`TtP^qWjvFG0k_J%4jjm$)Z= zLVbDD;2nHe*$igMY#H0R@uecL>u-uM{bX$6t`xHw=WFX-RN=I7@?I-*i_vZlH?|9l zAP9t1gF-e`n@wGB|B;OegS znFwnol!z!=SOoOM(ze;<82ijb@9_Cx`)k9f&xmQ0cFToP{lQL@r=)WpQMQ9-&-VGq z&S1lgL*DPM_6~UH&*&!-Yker{9S!|Ao3jx-E>3eNG%7h%?fNdvlHP!>hg6>?kwEn! zr?9cD=FxDO^tb&Q@lC!_?c_CrXLt5Y4Iq_8*4vdtGDnC+kn+u)9-;_XT$Dj&B^=I= z3@3t#RgkFk>dB6VB8!g=-Sj;K)`O<`HiCiRfG$oc=Km*L`MACb@u$U=g^k%b_FDFa zD)a1B5M3)fZH}#Qcb5vo#fs`49yUc#X&|O$Q`Q7bUz)P|g_;K$Ihp10*{4a^ZaF=@ ztvpje!xfFRNcuLHs(*2v1_^Nge3H$#X1OrLtSq-;(R#tzx}oMDQyMw2z-V5rk|;q_ zQ>l;8JnxkAtS5{LF}UrmU@`^DqzBcgvBb^*G1Uz(3ED)dv@`_Z7wQDA^i_joiaOO~ zFKvP*QY+JAI)?pQf9@}QC#TM)V>Lh2WA9kVS%RGi4E6|L;!uzuFHU(An)`@(0-N~y zLNC@(#NskD*cN;xK5dg=&cwp%AlNAEQSP$1*KORoqs_?rBTQu}eFXUDH@jasP~Lzq z^ws`?vAQ55rLt?Y&2R65aCPU;(zRjaY)7%fIevenDpYge@G6Z+RHfN<*&FF{3{tL) zfm;K%b;^Z(1U9Q?=)PjhmPZC;%abD-*wBY2S#T+%M>5y?*3L!eC4K<-yv1~6 zgWnt|c9H%-qx1Pf-+y+KP4jeYNnYz%E29+UtY1WZR(Njb_OqWYvypxc?O2uzfQd$e z_3;7QPZ!ernk1cU7OgW={Z4~`h~k0B2`IlHP~-qNFnyydJ8&k!CGxV#4h+~wrSATg z4O8$t7;}}^$!x>C`u`8iz>M#Wk>!%d;HE}A>@>ah%R4BE#i#2>k(@G0U`s*SC%=&8 zxcv~G+5UPr-LP(Tk3d*M8QFiilN0yWuvI1lHYO9J3|3CYID|Rc-o>Bg@l8#5_p9OZd%) zqYRN%+FMNWCF$04l{p*gOf#pF($PlCt4?#?*T<5+Z}uB=WT%P|s|JWHIs?RtYx0^s z+>c4P+2s%A((PIAPkZFPsda^+rD0)%R~_M$`Hc$F*>V~*b;yh0%kBgEIZZmW04cy3 zNc@{_S`googy7$9;Y7@)5q6+(HXK6N&#`G>So&msokx0}>OVfQWn;(t0@5fM_&#{E zDpeUid7#kiUI5;}L6dro(QZaWxpbL{by%iPh!E+4H+&Q$?|8K$(`ip58I(#`m73N^ zwmhFWge0iE8q3XFm8xcy@0VL%I+_jBR24qxt&N@C%F!0m>YTo<&7yW_Cds)SxxUY} zQ22PG=#!(6F0Q`e>`mPJweU0P`Pk8`H_Bz(nF8f_CB0oxxolfS{OGqRbR(opw8L!S zk36)hI>Wwv0~XybVW-<{`1F!eQ*Z(!o3Z1Vfc^6jkv%f5aiOP|59svtUK}HO`sxkl z0EsJ}twcb-qh!%J)AVc(x|BZ_iwU}w+VEl$&V;rx)(o+Koe4YO1WpczIjA-}ObUTI zA1)G-CD_~Gk8dcAL0W||=)Xvd6iQt*H~-qzn5^@=D;eZ|#UX7FYQ8B9`K@Ksu~tq4 zkECc6{k36iH}BA2)ePckIJ*R|r9rmk=CK%1V6o%Y7#S}-E=y2(;~dMWW-*Wr201k{ zvoYTkCO~A>s2W{MiBy)+7~76{*P&LdxHP8sx+twk89gsy)R zBBQ2Lx>svKer~$%8qf?w+E0Cr4)#an49YtxPrgT}ttRVIJUW0X;SwQI%qm>uh#0W} zM31d48{-2a#KVEs?X!hA1{7E(j>EGm^z`v!2ia8yV2hVp*h?*Bo^tHLqS%G+ixN>I z949cT8-W(yuHbeZ&fu}Kl^pv#%6{Fa1ULBDC00U=GAkAO;4L9)x5-U~LvkrSLB-Is zf2B3QV%0_8@5Y1e77O8q9CM5E2vK?2#v!L?#p{LFx*Iq#qVjWD}eH6=i4 zo5FO++!PpmEK29?D1CX?7@tQcrsSC!tA|JY@JVW9d!s)HW45bZTIOu{UdMK>J*iVkl+ty*e)q95Vc`Au1nj~BgZVmExK9o4f`=%wcwP-3JwkZ6ZL18~DNi{0L%DzRA|AP=is_nyiQNw+4L}-I zmMek|4T<04O;flM-kaWBdP+Bfgh{G*cy+#hzA6va;{j=ke3?#fnjs#k7R9Z(_4v9U zqBQFMAtmubiEmm^liVhY4re^_{PFm|LL;w^sg_t&-=bL47CIj3|ANDA0Uu_?&cfEhKtV#(7V{DT1+ z!1g(V*)rciAQ7Bs%F(_n*FHQzKv@w_(W=56xJrGLc(Npnlz#Zt%m?XdHS zKkdJ}kG!RWX7mmz6$dWtcB<*2s$ldnc00udR4H6`+f{{l9P7?T(5_$x2vwnh@I%w&WcCacOniS2VZEJ7;(kYK6>x zv_&{JHD#C@acJMF(C+I^f2bM(LuiM1*zWkYHWKWQzc%)eNCaM)@+-;o(~^q_DP&aNX$gYZ75AuJSFuD%V|{ z#h(`OaTedbi!(^Q=;h1sv<>-o)9no7Asja~ed8BZvFvViNa+TCS+3%c;>(NA?W23+cJKA|H@LlFUQrt_?Sr^-?P<&l zlcUCk>~p@5{eefu_x@a$Z>lrzzMG(idVN7;6**xD(jh#cpOpT_zta#bkpxBG0zs@W z8BB?ypxj7S14e}DTH9Xe8xa$2AaCZ^#Gp?i*sn>0N6a5CUVHsf&&Ngk?wJ8GNQXE- zBmm}!MPwga48gXl;ecW!NOqir6>=xrqHYWb7a$Ru@>h9>0-JEd%8nv>85lQUfl{{# z$+2|DbSFD@g9V$oei=wue$1${?Pb=)wznDe6CWYd_NPa6?`?ut8ugZyV~qQbuVB3? zn}9?~T5zbjd*p)iH$g^ue4FU!)je);qm<~~xPYCzZg%0mHC6ub?zO@167j(qbm7B< zZBzY0qpDy=9us!CyzIue$|@0V(N0yiI(1SU$ydql=bPOpO8Z$eGODGt6WC{`*J7X+ zB$1?@=?#03CthgMQ>r1=#}zF9v-=4}j!~RQE7j%JOlqzh(^6`JiZms^y1i8EY|vX_ zcIm2GxoYMR+kl8$8X(1{T3pO_v|G^8R$0zp3p7!G-CkXR*#0 z@%OIaYktd6FphXk6-%VhqGdGVD5MY)w))j2+l1a>o<&D)aS06Bz-tJTNqU1wbg=J?fJ*hh`c=vf& zY%-Npo~7pF80iQJTfXy#HQzknvOtqv-V#R~ngLh+v>sC_&~Q(|rGo22D$sbJL9ZmE z)MzBA+{h4>Vv=W{0@pVvxwzxdk3Uft(ObA!uk3A&9jYPJVuN zI6#Nrh6NhnwH5{x$QbOiCygc4ay*C%UN7R}*W#n(9L2&PWRlia)d#Wx%{#P-*^1`b zh>rE~I{{3c*Sa_}a%|{XcM{v!rndo+YjaeR|H&?1V1mo#Fz0~HP5{po)}Y_hGmC$e zm)x^}_1?h;a8cF)!sd4 zMJtj7-WUx41%L(CtO%4b83Sw%AUrdB#>yu zaCjTI$jPMnT5>i!-?n^~K&%e%CIyL2qv06kh4zpMctMCdwlXgV!*j}^6z9mI8onkI z_A1Ofh7NT(eS%odb)gcyW})e)l+!X3tR{Pgv-09e0rA|n&%_sQJWVoRe*YDO1Asqu+hCxF9fOdp;Jo0q$Oia%E0#LnAd9Wj*K&G79s<3>@IP6luG>S7fl^M)au z9A~Z<4HU_y8evPb^Wcqgf?&${gGp}#k>T2lpoWvNDEHI$=mBB7;uTHLSC?`65K@Rg zZZA<-){0M(HV2-7Nym^p6C^!leLEr92z5~(AFaRxWT zADBV>i%FElK~l8IE{lpJ3xfLsFsT%LhIb82eSd^PR=UGmN(Ok{N&dqFO2!|lwc)`r z++Li%0gvsD2$eSWdUePThZU8#r;?6lkEk~xO5xdkB{c-Bc=K`zA|jLaZ_fUC_ouM9 zrfe74jm%s_3253(WY{QvwUO0RGJMUs;h@LpPwC?C&Hj%Aj5Zq9?TDJs?H8Fe7W13T zT(O&cAcA#dRy3D=nc;O;wgva%jE<12qn+Oi27f>&4KHhHpvfT?pIkz;ak;s@Bn|&y zQ*K53&^Eh+BS1}@EG%ZtP=Sj7MY8M)i|KELLjXatasBUI%HKHRU>i@n7{xQuLmCM%R5FGCpX8)&AobZLMmvN{$s>qEcR;N~kix#N_|7;wtAW05W(X;nDo;)Tr*mYpQ zw8Gf)a%sGT(oq#ME(5CKAqg8Q=Oz!vH%Bjz zz+t?&TfYdoQM!v?S@Ur}WuUPiL7ea|!}0az5(EpO8fqHRTh~q-#o4bf=NV3AMM1DF zIp){QxFjuPiHwV!IJYl5iCpN3^ra23)xFzKPhr%-Zm1b20~9FiAX;0sf^O4|-jeJC zg^BF|qPSQLW+><+u&~Akf zT!^~#OaF8N;5egquFh^nRXvyM>u@?DexK9fK(A$~4}LkU(@g$~QAFDvHei;r+{usy zZ`0{YGDgHrUCBTw3dk(JqW6y?2L>#$!Am-CBvs31wimS0!IR|xpYy)}%DQbLMM_Ud zWGSu^+2Ad-fQv4TrnM_nO#T|_96oPSDR4&6l+zaX68@zX7J#j9)!Se-#CWpGH}sqL z5%~^f;x*Ev&8Wwk$WEjysF?{fl6yrxPdkocq55u1ok3AOcnvH?s1EJ zLsty~d7IU*>Icm$1}iHJgb+_gVK|EbFJPGcoAjvupO(YX=^e-d?Ej63M|KalcvrK8 z6#3}>p~XG`>3MWU`f&GP=i;U|?)kvp%=cMB0N)yvnxJ@DQp$Vp1I;d9xY!niFpJUL zL0OiLCi znSFC^9VJisN6rQCU`^LFKu)cKLc@?bbg$F&r&!y~nu5 z#WDjF`UC8oeggao!BRPIxDb7BogZ6hO$Aq8A9<8hM|(3_cqGJuFGmF$+$v@RE1Ytv z2S#9Lb*WF@-lawrV9%y=i}`NjgsBG0nCj%bu^g2r(I)fo>0GX*tbC`Gl|8AuDu&UE zIc|6M)3bkX_OkoHJYm&G%1%k&&ij9S<(7?Pb^O)96ffk9K#91XFD=elxtIfust4^i1Rg<#Cq!}n*u zN!Rea9zK~t;irnyy!_Y%E+r&m4lI|i2^IT_QC8H~F#CYr!t|DTg0zXrQ=x4~7KCDb z>d@V~k|R(QQ?p)^CaS_vTs`|ZWA#=xJcs=a^&VEVmNZA(OjdPWK}pD{q)IG&Gs*}k zN(B08vvq9(dis!l;ky+3k}%wgf1Fih8~ zc;C}*Y?qL&i#0p7kSUL z-k-$oHEexBNx;vG+XSDWpo-15oIkzh^%@gTl~j3Rvoy^@H#`4T~8VumUi3|wY_Co`mz-VX*2lPYL+{xduMok zO-HO0Y@wdE4zW*1Sb@!oA0ZdM$}SxN)-Q>#r6`oWHpLG8{g^ zQ;5OMKL_sxTGIXgj_wVqINAk-1+@?ks;dXlYQE7D-2F*MZcDL41MD!q z*&8%Nj1jXXtKRcsMX8IYseP^%9$qBRqidnftDP>)Fg?=o)!OFQy_`Z~bKNgk2W9TY zB$rVb6m+9&vbv(N5Lk^LPO);QmSZ~|BQEwa@D{wSqm%pTQQ|}EFrbt^#U)RSGi>L@ zRXp;GF!|viUkK0fcW=YM;7h7%yox}Jc#I(qD!0a#WH@TP0>ov1JNko~{A}~5wZLi& zE7&J+9Iyl9Rj5i!sF4~@qX|}>wz;KbJy3WR-Se)wrNcNwcwz&Y00E zt!qC(1&w%1-t!p-{mI}&EYuFz>gyLlU`g}slXW_r+S-@r*s1vT<;I5OA6HCacwe|! z%K>iWU0)n=!QDtg!wU0UigpVAD@pirlDS1tHh^cpd1*^#I}F@ZB}xw@gk)1a(<3Y? zGDOp|%Zml=Mqk!x^9={j%vGTk#?fr=Jje16iGk@=9&`3jMnJgOq}H|WCh~|C5k%o# zi7F^UxM@|4cdzR74`BQ2Ut_SOeI%$EVR=I}fOK-wT|wL-`yzFG7{FT>$-tfF;6zTaZ)wz1}hRwaF= zDv)-JhwSk;$s*V9iRi>Q&ie9*LbjZo+9g)|`L%}Pf|m;3p;)M2|Yl7MK(Ou8V3cBJVU>&|jhBAjOeAz(RoF5h;Wv?D^K^M zrn9_l6}oR-Rji^1#jjUE(kO&yYj>e4f5cE&Cw8kX z_s%5W>@NdM8`59S09WdgZ=tdTl9TF^S6ZB7h&f}2G6!TgjI`Fx(!OpdqNbhP?Jg!G>i*D z&}zq!dJBIv+D)K49MU@IW3!yy40PkFInPLI%jSl1So<(9Q4}g&JE z^N1W+6w?jM#R8Q!RCro8mal=@SsQH|q{M#S-{1*#Y^o7=7WClY znt@!BOn&$fPG}?!lxvNl-|z>CJ~AaRQiQUL?ePl1)Wml8zx_rZ)@_tW_tMz%+or= zB){0E2;Jd_ynB_aHsi|a3M-5|LZJ44=nDO^ylyH z?}o&}wrs~o-eHL(M44folM@ktu%uUEHA~I3+&+Sc;g-9wJ_l9F=s{u;OCP)f*)eYE z961ow_EPp0y4nABF#lp$jK|kUO>ViC*iq&*ZMzV$0S-M`T~wKc_Mq=0vYzr*?jxxq zvUr8U4t>DDC2XP~P*Q*J+k1X2A?Ok#^7s@gC3JhYFrR_HkRtAFsQO;Z=qdct`$`C^~AQttdzw*5i780HLG(7%R#EF1t^Q2fga zI^_M+tth(X3DA|erqCC7zU?}GaG)xpMz3o)n*+KEvQG>PoR-kkVu3X-qFQNFcri8w z3@qxhF{Cmu^TP{`_t_zu7iJfRqo*dXyN-X&19c0$bw}rT`4Leh6$XB(Ij4Ucz^VkX zYAj4zT8mD>D*{)~H$=q9oRxjxc!1!Ok4%5~H7x;h8|6zy4Q-JbDK`XQY#2Jygg505 z-~*)whF3?&=hY3);nT5U>wD^9Oa(f*E@|xNaH?MplxTWdzzW$9&{CzM-%x>M|W`^|u^jb05&;H76 zO(H(bF1Uj57uCghV`Z_sHAl2I#ritc_hvz1G3d6gmv=k>RC$BO^*l6F^4X22CBt3V ztNwC4`m+g0Te+b}7JNADT#d#)GD$|xzcTyT?(fja{&LCUM{o8$)_y z2%PB|Wm0^T{yiq6%2NU?t6}1_8F3*udis1`(_oZXeqL?lsWG)+=Z%R-bZ*!rld63n zg@AS6Uz+S}Fj~a1!LR$?8X*-bmNz?$pb|zwSR=v*-Sef>%_8WEP#h@((T}rdqtey7 z=e?=&7u93L3ow^$;@;`|2R@t<>}>tJ&O+vhg&UboV{HD z5-Q3)h@D9o^PiWSN$>&Q7zBsDOQ}v+0M?f@9`ofYDw%R4Su@YJ6*FogEjx;&d}Vwj zd1Dnz-{%cN9%T7YS*-KW)cia=G%<4mSqVs`7&5aJ16#wC!(iR7P`X?Gnmuh;X~L4w zeC}uL$KC1W>bQUlwj-g2C0FH_F+~cmmQY~!)a(h;_}_F?>abVCefqfc=;(I^SQ6AJ zLScuxPM2G%N&#)NdTGkq7*3xNRl1E$nLc1N_knh-ucXy$w{;SsWhQK?O|%WuoJZh> z-c_ckz8_9&#p`q(8XwP_9Yg<(>!VkMSIX5bOATb!9-F73NVP_yS{?fb=vdm`V0>VD zq_EW@sAw1P@d@>I7AD`9ik{g87?UGHw26f1;L)%k1g0RyP5}7&{4^K^4_K-T-|p;R zoBgxyzXsRm@4lTwXl#@syEgkA;7!5rSxl!7w2uFPUMWic*<_=2yT3y(%=0%4wF+A_ z`}9FbfMGkv9&39u+=kUgOz_ymD4gM(27fqLIMD1qTkLEek5?T*I*{;%-0Bz&?0Y<~ zN3A`+9oHm<{9%R8Z{uH!#IWUY&PDUvR=E2VrSUv?oD0Kjv>?&ue(j^&doC&#(!JwP z4eKY=Oc!h<2?BWo#>sA4=f7r;cID~p$&1NQ(=MU%L?vClAzLm9i9#G#B`zjuHAAT?)bn)7U1KPLbS z1nk4GveaHiB?2EVG5F)E0v1J9Jqj{5`37FGpyj_0X|{r4I6w!F%F;!|v_Y-7uc!DN zL+_eYMsJ4P(&4UQiipkFenj zu?%wB*Lr}V-HM;Y68LWq)b*<hx@I#BcWoxOSb$^r=5iNwd zF6n_wDdPHR^ zJYL^`Zy4&);pjf>==^5IDyTwJVRMCU1Z6HOPs7iq2c{-OvjwMOetOyfI1hJ$d_uyj zf1Scx_I55wfAHJaZ{d}oTzhp*wF|YknyMOb2q3WzTF;=i6y5h#T5V<7)AcXHBW~oD zH*l*D)VD*`6cZ!wqfLkkc7EjeZeM-QoSl{sa%PGZ0cQN#M<1M3oH6*{HjRZV&7_>JQ zd3;U(gp_>GKQW=k7hqT83~GP85TKl_!e~f>33H_g#D+WLR8ba!@nMzit$MP_E`)uT zL)kPtAWpU583-EPRrTryv1(zF)5a(8SY|7ikwf*c$KQXK@blgEi*tk$4`f2A@88ab zuWb!~`a5rz-Gw5vN5>>`8?m*19%pePU49!SSz{1Pgz`}|ui_a)%!q7A#7521J~+%~ zYlk&-==VCn#LR(Amc8kPN+D=ZG2FH6$if)Mr|+MKTMo~)Q5F%rRpmWP(J)!IDdigO zML15@3N2{tKAJn+je2jJz2bPK+1rd-jbsd3r@y2=U`0?`DXkZblC)J0B3!V6JEp8R zTZ{d9d3$tiqG7v+4B&LAsj>d#gb1<>yLV(*=VuWsp1Z(VUaA|Z_;nCRt^#ipQ0rtM z1?AbVF3%cONVFv4ny4A#dB57g>o&A}6ENAFjc9SULmK27gXqbgjQ#L-%YT}i%=$8U~9urtNjag(oa--aL+et`MY zW{l;o^M#}~?eS6uJwknl;sZ%=OAt;)sg`y0GNz=23bI_x_;aLg%$nu6i2c^RgHU6G z`bbN&vCao|h8Ztw0NAuwuS_}SUr;$mtg5gVkkQS20ZwIxMWhJ5TJCdovJBROrY9n9&yGyzHt*C1jEZx1{NjjgI;{W3Z!f{1!n zH~W*N*%kdu@Tr(jowHEP0gSiB6mk?^Xftgk>Puhl<_;)bRrhnu$#6WBH5a=cg>&F@l?5NFVL@#*O)3Hk3L+V99>1JL4TWYw>EB45$mE*4u=g` zwDC`@jYdc<0>2he01ZFIW>qfs*GH$PHSXzyeW?en+cMsOLTr3gsmuZh05Kb@j*(|6 zKWWmeDZ{j)(jMetkYWKT(cty7X+g-bOs8sVUOp$airlKUsXGRzlwgNq60Zb02PIop zlE;=Vs&5MD-A$nP#-fM1oCfGD!!E4mnRXxB*=opbTa(!#EOw)o4@}orlPr8ZtQvF+ ze3^}I*oYD|v(U_Xv*6KV$`M*}S9@r;uP%0fcY<#bFGM;#{t0w4%=Lugh`&zpN5G>H z{}ve{@IXAaQGt=Goc4Q6rjjDR^Z#=8HouW(*_j{TuLzQvRh6wOl2K6=sgxz53=LX< zY}mlKZ9!7E#w`Qx)(i{{JQ!mTNe0R2BpGaeR2Fk(^u`;*!0a?IFbgjX3uuoG7_Gqo z8V}%BLjnvK-q>1rtJ&Cw{s#Y^bMAZZxj|;BKiTDmgbDF6k)4^ba|LqMOePM-g?4vN zB|kb7lqw-IH&-x8WGJZhxGaVlh@UVTTeH=LJToBc?WUSdgw8Y<%VXt@mts05zNNh7 zE9fz*u!iMV#t6g~<5yz3bY-FUawZMKAV6YSHV{l2t)=4k%P|&T+yC^BMjazWh6eAI z)&Bo@=l@_DMh-xgeurQ5}}cQtw&us0yK;bkI`3Xa&&{1Vtjf|#RNOWEaJ zApJ7L&K_gZ@Is})&GzPW-OxBM?{*5q8MQw*16ZhfmSe4;Vq0j7#7of^jja;bvlX#28icIDlKLT6BLf6X?NWKFuGbZU}CJ{9I+AgfXM# zJ92X#?EIl$J7Ne%_UJybM>p0Wn$e#=hK2ce<`?*p9+zXoeD`L zt1$UjI&dNM?eUX~lOM;>g3@y|cgc_Kj=z?G?(K2cYuZKd#ub>3f z4BCAuF$u0C+cG@@wvd5^)fOPt18f-z$eI}FKij-5a_5Q&i_;3T!*A0NfGh|*S8oCh!M4r-G0tt-g{J+sIFo%w+-M>KEm)AqpMiUg+QUNqRKVO6{bAg-kipxc z8Qp5_8i#^XJSk*%$pg@_{)||kdLnf9^o@rzV7$7?=>_nSMqu8Ir3A|B(cIJ~hK1&P zg(bQ3v)N!oo|VNA`J>EW!RQYjC_TZ7^*D@@tG`O7t1$ywq(F*#B#32Q2l2_g6e(0W zb3n4fGK;V(7BXp43yDCYp`IKkc10U@xUcSoNBC>9-rN_9zW@T0t z1YB`hv^m_{nqVK{71bcw%EOzyU9YAuaBn~;_ErUW)a0Ik{TVfU9IpeNeL$gCeJoG| z;prwZIE$P;Rvmu6^yCt^*D`)Epi)cRPE;dJmY)LVd=g<+7MHN-|0i1CWkZjZl+?~s zDuBHG&%c_&EO!tiEIiQhprjr}`J z5BgCT*~o+HmxpR0U|Q91Ox`F!LH^>dxRrdDesDlZ(vUtAkl5wBadnX}} zB9iTf-6a*=%!Mk3LMOCwQUn64LHS$q+E!8$*JENtk~bwrg6Evj$5x#!6^>xn4-AQX z6P?PTNR5LUx=?45ALD|ecqE%p)ym;LZCBHQM-xg={iVFol<(x!SgNE9Kp~ZYV!^;v zs+}tjy!$?@P&Mu*7DKU3@a8W-cV6dhHY3dcuBvpNlF0(t~OTd zbp6hjZIB&+81o&aj}Fm%Ak5r=v6$jMIM5p;Wi~In0N@+-or{$5FIk;X;3qvD#8wQt zbPh_#O`;_2(%dBN@)SAbp|H{YyU>(gr^>?`Mazzr9r|{$B@f@6d9%q#qjpd~(JQ(x zbBBuxD?qx{i__~U>25te1k~xT=uP;^$})8`t2YI&dy%^g@7XK(g{p4`2sXP* zrbJrdf3I8@;gam=O!E8dbVNuHS1eJTz!gyN$szI{iZY|gim3dKp12oJAeF(-GL*86A&=@Mt(Kn!8%cEp-53od1tcP*F z8QO#HEpx4HB4#O9uTFLOwje+j@Ja(d%hZnA#Z3K$BWy z!-ecL@HZM~-)A17-d;~Yjq_Ca^N?68gX8wpZNwtjp|%)JF;EX9=bYpehC`L@)iX*& zib@lmG#Z^-8MPC*$Tn{ZB!2qff9G(Q(2?-_1TotcPL4W@VZ#z^9ecGzDMoNrF5)38;oIw`jG#YvW4yU+qPIBu7hAazKi^5ATKqR=H{R&hs&X*-#Z zKJR805aiONgspG7-e(1pb`ebHb+9*D^>{({ykLMU%vS}S3!<>o9<`w-a$RCNiMOF! ze_3rqt!ideUS;mCn4iHhHS8Ae-lwqLY&e+%`LKnk@qT@0{4*qUcDY8#i4{8vC zNaPUvYmDeAU}EH5!kh7xb<@qBOjl(MDhO&z%%(~U(EE>h?0XciSc>fhK89-i;D`*b zy%Wu@H*CYWQN{)~UbA6)2Oa??ej@h|V~v6$8B6N>5*I>Bjpd9}XDdIkj3HT|`od;1 zb5b2*W!{PgMDhm;kmA#@rR$W0A_r$BHln7PRxps2xho|Bab1*e8|HI!Z!Rhi3?ec`NH_1t6du+Dc$hGV&pnLUg08pvU~3U`R1K9 z;3M3fE23jPZNs@hgTr5SN_BNtHe+|1-*~jkk|PtQrb0k;X9$@v{giA4x~nNj1d?5E zH-)IgdeIS-*vM6O8tP%^h&Tyu;(|9gV{Klp-jxx7n&M^|h*V)fyNTkWy$U&RH}&ul zyOWsOFd;UHK}%Z=j1$ObVng9>3WWU3EFZP)`sFHr6`L)N+JznyMkd2@RB^`c&4b*O z5OxIJLG^$eLf^`K}z9t2gIU zq0d2#MEDb%Ga<(XgeXJTzh$aQXd^}6!*1_One#$R_Xw8Yl5@eAmjfR6WVYdx*A%}E)SXWX+o~M)oB|LLI9}vb#%P`S8bS-OBS@{q|N>#6yYIC(O z4@^Xi(bzM~ctU%#8>zL7i!hW#7Q*mm!ASEZA_>?>l!sNMUO4G8g*6<22uJ)~Kuu1* zWD_z56I@K+;mlFfyTBT6R9?9|<2S!-9@}A_Qr4evw?!aIYf@pgX zh4#I@p8L7$>+u$JdkWZ}l4*({N>C#1L&c`E*UC#4FMQ`VgCJRO7VxK0!7uO6 z@og?32&OAvcXoUC2}UBN`PEM?Z^x{$1BZS^7ApEA2rh$UVI3GsZrpLW~VgfRs@gz zvuJJ_h;_>9S-v&{f(X#gpW5zL5>3OTBmd>jpU!Y+2tjyTPLCHhiA-gsSlndzH89K6esfHNsBn$DX%W@<}hzNE6|`%@be6 zOV9Z6r7a5{GY>`oCZH32@!LKzy}{&cL$zyo7l9TZ;jwCMRFbM!6IUWK!KP6m7NjoI zt@&a_r0^cFBa|y|o_;tDlce3S(~b=Yu>-?c4pu!OIzL?%x<~Hin+^nt@qUm54(DTt zhB%Cd2PI)xDgZyewr2f3nOx;a$ldZ{qeZR^xE)h034xl2&Nl61B9`~mCvA%#fO2{L zY@y^rmrT*7ND~PO%l=vq_xEs?5bqGwMB(Kuxna?}UcE(Ok;Q7&eiw_&}o z82Tia7T$)QFudhB?A{B6NHU6SNqXK{z11^B!d4DV$wt#Y(_?HvBmU7^I!86c@Axh!FE!FsmuN`Q$lU0dL*)mpNYDck1szgY?IIQ2AZh!Mr8?M zi|{0$dT2~f@~IG?dXj#4U<{9j394xWSwUcJvRn7pJPoD+NxteSp;d{qv5a_}Avh0u zqoZDsXzdb_;%U_c=EZm7{41YugkXRnicW7wP_GI!qxBTcPb|p_*}hv7y=xU0wW4<4jsSS61cKgak1I z4|35(@UW*D>Snu(!qyjcgq>Mt^c{s+D=GzxhZyuzT4GCw16%{UXphHs-ZhqO~G zi@|gVF_~>EW4PXO7p7H++AdVnS8E$i?xOu9;@Kn?sA))hZoVH9io^X?s>kxZrfc-r zg~G661hF7LaT6`t%4L&JikA+MGI9xOm4gh@Ap8~fEzAs}BFVuT>ffV8+3GoS6x}NL zH7o)&OxYNBwV(?NzY=;(P4cD*tX#rWaL0dyTOO~mVCN2%!!}t}*89aOs;SsJco=(k z=#>|Pg{62>VSKdm9H`@^083w1or%Wtwd zen2cW0N99#1&JOQjTHPaRSrsp$D9wRH?;FB={e6Q68hN$z$G1o)L@JM0t0c2aV zwleDFK%P(YhYay$$=1WIq{lQV$UDgT8CQh>w>(J;%@_X%ET#<^NS&vTXe`jgWpjHF zDfV=OQ3G|i>SmFg2Lq;!f5~1k z_FU-%(2wO3$vCD)*#?4|<*io+L7cF0WC3v0vOPYoZ7_3&-*sC}0BC}&=Nn2PwuF(H zw0VKJ?8ZZ8%jF#i>(J&-vGW>(hi4gXY*wJyI{PhXER?fOFC}Q~w}IIF4n4*PT<7G; z{n)Tp%=-(bR`2_yc|Nxh$SY(n^Bk3WI6PP0Zw&Vi&nbtW4VDh;Cq>D+74TVYf7e*D zfi}`%H9i3*Gsw>_i17#|YrX^HluYK4hW#Zy&@J%O8d=sWD3{N8DFl44Rs5=%maR10 z(zECOWW_6BKozrE!?=J(`ECqDy@$dwyBE@5hl_3aP4^|S4g%}rrF|n15OW3z>2~W@ zL@L2&DE2jy6-L%o5k~Bb0D7>$F^k3@=`v&6BQxEU;j@#N<@H%C%5zQR7CD5TmYs5+ z`W2xTw>CH)`(C7>^8!bWEbHc~k>6F^vc!`d0}(@XC?{lRr)ZWF%M*#fr^qU^mxhN} z7vthfZO3yFGf!ceGv9@5wq&eX9wToamyF(V{{JDbAyqcqEg>U9jMuCk|Lxa{^O5VF zK0^8GX4gc{EL6skhr>;tSu~tboHs?x##+;7F@Jz7o?g_R-+6k6{y6Gak#iF=z!`%J znqk(;0uCDN{{!&zZwcpY1LCWo5ZjY{kLeN6@CdlQ*0&|jU+vcIsn{q865--?I{PGB z@u1_?Vj6(g=w(_ACIxfJIhm1c!!Ws)4$q_JRuls4v~iQ&-h9r*$5|v2A3#=huf7f;CT=D{{_@1F8IXN1*H98R#6-(h!P(HyTV6K*!uJpaJK1^j@0 z=jPzN{V-k3;2{`x^Og*bUEXb6yUr2=oGr;~8<0tVmh=2E=8#w}y%U5iTSU^rU=hA} z$QLIioijaKT=6WoLlR$kWIgmtCnB$#;ElA<%n_uBKwi8_1HZft+26u>`RCro3?2f^I@JZ;NW`c&ko0Sos%pdyIHGqKjry z`2sdqcMfxB_VKAH58cmAh>^_)fSG5^5kb!+Qh9`D;iuYvW-WWUE@`fMGPUJM%ZK1oF@sObU4t zdf;h)GsB`Ua1<&!Z=!qCZww=zmposGks9J3aJTVBAB|PTdkO=+sOoQ7bm7O2HnUkh zus9M{p8Z8`m26R7uV$D77w~9?4c_DO2WNL$>=BO$JHnTGFbC`a;Ff_J(#Uq#vp+9z z)yM*eC+s&w{!0pSaJMQP=x#mp)hB<^9uB*?ti++Z3qg|*XRF#F57sBy1>Sl6Y>~&R zuZ{9|Z{lQiZ$U%t>=E5UKJUO$o?^jCfAw`3EEVy{@}VoDEQh@P0kq&wfX#c+Q^FVG zpuUP_LdNIpt@)}<%4Z<=Q z1J1`_Ep^x>K*2#WeXv93AMB!n{PJcP^T3D|*Nl|rj$udVh=q&%v>4Ln7%xP?nX}J* zwJsnu2tgVfl%b@yDF@#+Ut(+lIm^rAIEbXpeKS%hha67bNYe5Jod$rK)xpHI?t6v@rRYkV?fx#t2lE zcuut2OKELzCcS*b&%z8~4>ACwHAstc1zyBdlJbfbuLnU?q1scyruESAHHTO1Ul4g$ zP+)cO76#HBE+fADF~+X%4vT&?DJJl$w^%8Tq)YafPxv$aS-~wixZ7w%0w;worjS!b z)DjZ|V{`R`oqx1*weypmKcS3`9~?v{3rMR5)VJ9dsC#Qc+r6T2hZB?tl#1hO-i~2I z%_-3&$q$>d;O3dlqe3UO!zl*2yfo3mvAil_TATpSCbOfouT-AIFX+hQp|a4$hRBUM zmg9oqy5nM}cMqHo-@6 z^tAG%Y2n&9FMJTDUM~0aKy+WO?m(cu3!A)uR}lDY2&KY2#4+tnItYC8Z^q4v=oq)c=a7DxZ^rs5UZoLX&0xd+oNX*MR-#u)mT zR`YFQA>ber;Y3H`;6#j?gkn|XSg5ocVbT_5AB7=vnCc6GcJnKU9LD^vJ{_2<-17~cRppq6uU-*=Rx!vhMYQZd%Vg`s z_?T$Tmfyr2Sqlkh!s+F1>(au~MJ8A!1E~y2E89*98RgcJ4IG!Klkw{Cs7soW-+Z5f z6$Li5lD@bVtdqB0-`uP&3{J0J(({QJtOORdy#n6EfGA-)C+7i5oFYEBKMA++p1@+k zgI}pPcMh-mL>sh(r1kk~RZ;*`Z|p~~izzK*x9cT%{<_n*SkclV6N6iKbGOZC{t?Q5 z%;}=YiExj-IYM+YE~2DIO?l>Vits(-YTEf!UN%1?%7cEg(Ze3fJJn1eXkhFdtk6%# za|~thDS9NIx~0{|?FR@dmLo-R7fmCUp`OwRNV4sWbk>bqrNKX8dq@?*7?E!&+rn#4 z1LM^YgQh{wq_8PL)17|>+Kqq<2cY#f32&`5oFyl0&LQUTTnicS*Pqp`y zncQD{Ny`1TBH15Pd7@_+oMYHtpNu4T|-{{-oL3B?GhqHAYE=rbZo zT6nF-LrCpfNam{P|TZ^R}fbUmu;OgkaU8mxTglfh}NOab~zT9`=s{;>I7)QgVqNYFG`7fH^trokM>^ON1rdjGl=rWxUw9H}@;w?1;S~YlPr8B0yG==g0;{7gB zI^)lHmaV{e)=Z`;)J1YMw0wNH8|}L<@$gyh8Y!c8!F3ynyhrMn$e|%~N{>m=W>jpw z;k#WB@kAyRxW7ikb;(u`)K*|J_149k zl!a89ElW#=WMo&_?R7xmflMJG6$MOw`rq+!(LM-|l7(6O)Bom}mTldiT&*;b#mreW zCTw9+22%)jwtvy!dQl%eZ|-$udAz*b1n=H_XppHF%O5OnLi}WMtb&xHz9(qNFW1o- zpWHkBn+Y<&Y8RX80Ddjh2o>RkC`{Ist!I9s$6i!&=9Ij9*;|AC=IkAT5JmxOJ-@sU zaB;;fVoreOidPG^ITXWJYm-${^NVTu%3BmKj9tDZr(G`X#9po@WbK%6p6{{x#DiUI zZ5y^2Z020!r7)lzwSWb{f>Rq53#-%jizM-@<~N$}W4WCm+7W}V=4$f98hyb+Ps#Yv zM3_HQKDG$MD59TadkS;u>;Se)-iKgFT<#eW1)=7GRC1J06y-ujpmAlwD9?vmx?-(X_|Mk+~AVs&GoqVoeclE#%GD z5%$O~W}R2KEJD-DzcYww%~qvw=$=5*(cR#P7O1(Al%k)mZdcm*P$MYHI^8WxwXZl+ zaW=4ILS!646p9bbI+#*72X_9}w7f*up}>L&MOjwzchvYf;~4N?l>I@WODTZ+EfZmO zBU;uK1|RO$Vy(zae|R?PB-Q0%5{`*$dkiYu^Ulit++bI*4S-`kW5R-PIDiPdT*UON zDi88ia+mv-EcF#F5kfeKdW6+Q)qQa{?%DSIf>je|t&OFQ-8cGSsK_Wukp* z5ywH`Ud<1o&_M49jRTT+jCpBS>T@y)UsD>EU%*#8!!3xp!}}rB4-&{vsJd(Wp&Q*W z@7dt%SWxLBF@s2{^C7H_?t;Z0y|;>RFBNGdio>$Zm{E$OeXu z4F5+U5vUEMnu$1Pza?Yy&~pljnxCf&yXH)8-o^4h;$^`b#YFRTi*K6#0rjIzZYnuF zY+!3DB6xpXtfE*PnlxAK9E;}8`vVwX|7t=zMfyVY`nG)sRdA735f$fQ zSr=-9M2nWCE3-^*jT)$K2Wbj zajuo@l||}|9!#f|HJIf_8v78Au#m~?L%E6F!t5^0{}8?G*RR*K|9U7AN#5_#0-p?+ z2=h{=MUxAe6N@Qn>&1{)CPi3oRHK*)IY*U^vz501CBf`p(9>FvO=s)z-`+_LXUoOB z2XvZbU%ElRngPSI*B5hoI5L(un_|k^*Bz}7DRu%5;>2NW5n*#i3t%yk9BI^LSi#B? zIG5wAsBL#Wwl6J;zqN1r~R#xFA;$L_d-u6^gtoc{+O2*Ki$LD_nLtM~( zL!_)U*K(l%H#=h-siEHp>&)9p1;^(Lns9UyEp|%33k_;!QCG=d4l_{lrO&=SK_NY= zsudPIC)>#h7uy^oSrt3#HtvK;b`dh``E}C{4-dH=#x(^JOrLCkP@|bIBb(}IxJ_^i zn;KJ3-Sx(XW>iq#9vtG&6Afu?6?8ZES9JTy*R%^51TUXx5v2v>O6zOq5dnJ}WWAf| zOvV}8O_TUb!#H)mG5Sm_5K@*W(;npRmAv;Kyz@GV*CaT^6ZvAAlPohM;} zc}HBnh!&Z5yjrp2wo2wYd4Ev=GK}uw+A^VSo1Q3|M^%Y1R~vnjA&f$Imtv#IMJDQ$ zF54)=M17du<8vIx6uzsP<_s|zI!W8tlpeqeI?fJXW^p@-w)Q00JHU6s1F>00FwYG@gsIL8{B9BOh$d4^M_QL%;jj`8WR7 zp>h&KtyX9}bqHYm;C?!zH(8Ki+m0zxH9U9SNv5Vt zS=~h!m&ir<9qIMz+q#2QJhQ?dP{JLhRkdmRyXm}rSgxryswCV zU*k)MG0*^yD*2%foyeNb>ce0;Kp`jrJmMp>-Rb#}hcx6uV63Q1R`Y82lGPy=Q^xWe z*Sn|73#gm&h27xT6hj?(#uI{y-dtWUy)@4zn27F~bt8uH6XLy4G2=dsTvAmqd2deE0Lr>)GtfHhrhV~Lexex!1!NWudc2hW-YG;-ACAo?XrLZ>mV;qe(wI! zzFxk0b06D8(6)(AL(%e~q7S5Nk=LHrD@fBk+A2*yQqng(Mz@9uEn6^H#S|@+y<=*D!}9jfqVb zhvsTk%;F5tu);w$-n_qEzGbAS5*syf#BStxqD>Y_B+gvG3+b5mN*x1HgG^UVamO`D zfFUl|li0Kj$Y6d2moHd%3kndsALzK9U9k`AKG zgBz$0A>rt9*TR_ZO_}X6W<7`X;;_#V$pY*gVy`bvh`oed*V?vAwRHW@qfC0NBWu|1 zO@-}FFTns5)BrKWvy08^wR!0CXL-0VmjPXOFNbT0FV{;wS@`x@DF=LMD(B?@^A`|z z3@VR}{#7`8cN0o+9ab<$kr_x8Jx%OzSNEcw0EHxO)}` zFoD_yQ(4|NlBD1pwG<8~u=W<%*VkHwaI%5vxt1@P4O5DL^J^QW$bQ*>DyunSDL=5n zZegyE1+d+{MHoGI(VmBQKH1!yvIZI9(GPFer!h+Y=00!t*eWa8&`L~>bjKF`s&`WG zP;1L^O=nOmNXxI|L4sgm*@2opN_ouamP4{B!#;&|@sA}tcpxsiC#u-nYodGDH(u^T zp6XV5r+lNoOd_g2?gSE^8zX0<7rScYtcvIMf*Lg|{yDiJv&xmINgl5&CIY>H|D3PW zpMnLYTZ0vd@pTjF1fG^Bi5D@rM$gbZDo?3~H5l$+xk3EafTl5nEal-p96@5~z=Hx}#5O>8(_964dmdCc+eO zZ z0O5Xk!&D(ckCOa2G8TzWg2(b6W50#j7>w)$jKXF1D1V6rba#dNcu0w8GR7Dgw%_LM z4}Orte#i#wG}AqZ}nTUt_-<;J5mbjQOQA{(N4-G z6n{TZ@R9f>Z#T*st66}zk9RlFxBJm!#w(rb<<2U*OjD!LU(t(8?}BgQ z7i8aD@+nT>Y-`45Ti2k&md>Xck}~*uSjHs%#UC08dJJ9Z3m(os`(Xsq>LeYu&m1xnmV?I5Ztp*_v&IYi z;ObfIlRcnaKD~qKBfkpcZquVt@(&E0f1tq5f36X?Pc{unnehmkp!8S00~{=`_em3z z4rt2tQqq30aMO%@qKG^&k%#mf1nLWtZ?+B53lhJKQ%Q!W%qCPn>wZ+v|Ho+Tnx17pI@GdnZ8C9>d1h2s)1msCuI+_$OLDbIe=^Z}Mc1{MfY7)ba%!!!x99TSCd zFv!t(tlQzbkErER2FKCt--*R8W)YUU>nln2M-6<~jDlbVsBIy0#gG`a{V%h}Re)?P zFv;TvV6bgew3oJ#D_@_-KTuM9=YJMeVjj(I$t#cE|3WOY*(vJ4gQ6kuC}^HsmaIYa z)DwlRVosf+5S{^`-c&c92U8l1Y`A29bBiOjv-e_e@4F%=wZEDlO?F=WJ#|n4`-%}# z4g2|h?U}3zR^%t_Y{6>~+OKs>}uzbw$3Klkg~r#r}%dwXHQoR&*tuUdNoLr@vUXsl^%2Nf?9f8k9=h zX2i*pI7>AhObwOR8di6#A+le>YNB42N)K2B)s zLa-~Vp{o@~d|YVR-;^mfTxfdSMtWh-%}8{{TP(#Zqa?rEq*gexGpJy8%ZBqG!n0ejIKE8ji(YIEb1rSR@!L=3lelnf zv!;Z7vZPSihNPq+N=+t`i~^cPT!^voXlC>%966kM$7Z)yLQ(oq9+>@$!0XgKR5!J^ zx3$=x-EVu_=g0zk`v9$g@pxI@%q=MaY`hlrPv*PUGtk+r?c$zpaP%|ow~v8+qxvR= zjciut`xzMQM%r@~-w}q?d&AT8DDW^Ccxi8LaMb)NHq^9lB2&Fy*|6HJERI3EjWzYr z=%H?!)Gv(zI? zbwVt}qoH=T65ZY|&PEbgk_Tc#=WUQjWpTOGz`tvtk)$9#?Q4SI5qfP)(7a*Tt_474 zlmfKYFR~qf8P2N;6fW&#>?s;D-y?*F+D(>l6y}47E+20E-v(jdJBXwCUONQAIf6UB zCyrdbs5qyU4-2y^$}XnbMgeF?vBkQx%Aoq*Q>hr9A6$kNI9V%+GeU|cI}xe+oT85Y z(OpIVjH?(kJF@7$R~#%mCwXO7Q3YkWnKf32Z9-;I^fXbxGmVvtlpX9dy-};|Br%Az zhBeaZNWTstsl@*@W5Ii(>5E$x)06?CO>h{X{_63vd~!MGnaxYL-C@zPm3DxLR7R8W z+%I}B>FC4>L7MSVHv$b2sF!@*f|yck9tut3yx%1A23wdR8_S}8!HKJEswv;|t+qFt zgzB5hrh$K?s~Lf-aJ6H0RQR>fC^bt57E3^o6{2#>kuE6G57$=_gP6kV`Q(*k6EUrG3aCq1_oZQ{NNrd!oBIb4% z*jancjyTx)jh(CJ1A37EOTafN`Y0*P3UthkjV}~91PQ{N&~@P*UINF=(v_XE_2kDVX*B-4Crk0&5QeER*MOw5pbqnVa-QaMR+-R^#Hu^F2`6? zZz!39qJi-o{Ui!5*7Gq+OMDKb0khAeKdVaeI5s6^7^aOb}Q&ODYwKSO5=b;v#_ z+ukVh^B|i-AJm8^n$i6^ z=vPRX(?$qC5Th0nX0fLs^7kzBUP$K_gtH`sez6Khj^X2z6HCAlPF4U1v-@KFM%{)y zu#9SWtw1$)I$=e*RpU2Iv|3D>K~6kaytsaXc68`tpQ0*f(DjVO5}x z%Z`@&72zd*qML2j)Op$o(yw*`E75O!A*9Oqhn{aHcD(XXilSBrQfO9nFNCDIynXUu zr+riq^vP)MTO2BXB0i0ese}CBZyMMQ&u`IGi;VeG&$dIBTf_V)Zk$~fJ-%t>gSZBY zOQUBsr5x^NTAv$RGpQUAb<@P`m&jYU8NDwNVFtII0 z#6m`?NGJqn-8M>(WUgXu=2url(b8v!2f7AHMQ3l45Qai z0x}?V1NwBO{|Ds(Tgw?}f_e95jC)YPp!b_WaxcIuZDoQek9xdcg}S{VhBPXW=s@LW z@jmyagS*VdysjhCF``~wv=5~NZi0ES^>e^VB}X75^JsWm7LEgPY+6PPgB;T_W@`OR zP#}FB?RGwoA?Qz>YKBFW*unPDs&;7L0(16@gwjU&sraU4y%w7#lZlO+$R5d|V~GgG z0+_J%1zTx)%#WCR{gh-GTiIEvQmV$!NvxBzqj9$&TlSR~x; z1v+dWZUv6c_GR(d2R)%MbD+z@PH#Tc8npwTe#q-hW*@F(t@N`Ov}1z1-&4IJw)unE zp2aj~dqqIa9|3iz?|?%A)??(F0-GHyo8Nyx27o@~9@~dt-LIPNk?ODQ9)q0M(L)E) z%L7vVY74@iwIw*5W3;ND=KX;m=KUsCfuo&Y-T5DO{&jQSYydJxL8OF{%oXgS!HTcl zdO5_t@Vf^S%f`8-FO-u}nOFmH8#e|;WFzs+!Opkj+h8mU$zSMazP0V$l(^uyW)mAr zE)KExTo4V$Z?n5jwQ;oyi*%2*fF>~rqy`AvXib@IMc}LG5HqC4@$GLR(oA_XTfZIw zGQcS%htH~#L+J-LTG^XoUIAfjJG8tN&@g2>@*MS#{Ugu_dA>Xb7uWYhjM45CSHT*N z28(VQ?bY45$3%{r?~Y*zKN^CPtbB;sQ@0dPihm5ZlyZ;udeUVvHoRMZ2PltJ5a{?& z51kj82qcnyO!-cbKKGaOwjaMyWXX(oS1raXu=B^1tvDOH6wSXOMZ_@erA^8s&gw3mUu+<$3++;5U)3zi|H(I zj2hEg{0Tva@QaPw3wkmvPf{0KHWLtuccA-8UMpX>suQbxksabs%KL?2U9q?3*7k+D zDY=WG(<6n)WYxq)+|s*`^n5v?8>jEk%v84%6bDaSOHdt}L_v5}7@(kn457TkzK*CM zMQuv#4lAh`TH5B63=xOAq~!Na6&IOQ&wdrl)5x>M>fzLIG zGOlG=hBwAO8{KajD3b5dv4jtV6_Dog{_7krMgR9KX*`ui7f3l6Gb0n}2 zhshwXQUK;tu(>>{h;`iFGQZM0Byp8ikp3t`EQIWA#q66=%Wyy?F=vN^3O-dRevk z@>Z8&s}EW*6=IC5OcBuXw_+oOuglE@trD&aQ1JQ=i8m#5AKif)NbQ6zjtY{n@=Zl@ z8w+lyOxitbKv)&4k#Xyyg^Jgshf!({bOY^g?$*d78!JW3>Bh_gOd%_^vF0s}OrI|Z z2oOHugGI>=x=HXWZc^lmkV8ot|R??Y9c+@?TxacWkYzxZ>E; z`4{rokyiGA=5iE0Fr7lFn^(DfX9GZ`s!}bhg+Sza?+`oYpm+_Gw%aN@?f|<5ntGES zyQ}hBYA{D58OXk(zX-=sU#WuXz~?Y zpz%WC)P57vk$wwX?!70CZPZ-&VDKZ8NV(EcUd5f2> zR8^3KFko*B2OIZ*R!o)k8B-%bC|G%Nv_-Q{Wx9D+WMO7f_j zQ*BaZQAV~k_pbVqLv|$`t}19EH5YPxzC7a=AZZk>p^wM_r>nkh}8rRO3<2& z@{@a84`z_rDwq^=1r|!o{EOwK6|+try_P?v`f>@yowCh{1z%{^**-s~y>(TUP=yWT zJz0Q_PC?<})Y~Fo!d?}o(ncB3Y*S%WhD?TGn)XF*kxw8)s?YXNzym1IiLnF$6%Kop zndrCc?vZW`zOP8aN6+T9wg!SAJ+O;>&=412mpmuF8bX)$a?>!SK0%Ckeh5me^40xY8U`@>V69m7 z#Z;PEykSN>78pP|>@X8SgtRRvd$(feEozhllzow@X}1I^>&x4CAu!xWDYIqpxqNU6 zR;fwzBBLT6ZpZF|(M*9mjx`8GiY@&+WRrp^sN9=&d-`fNVRl#`6Pe&9IoaWLaH)C|sP+;qIN_wnxDcUQ}c zyYt`w?Qg#zd?W&8tAS}#*vo}(A|O;IGg8=RqepFoad<>REA;8CS7^)sl9fC&)>={a z7&a9eL{Y%DdmlMbEM3wav>AD8CxjyRM(Z*Wr11-YIh}5m-jB!+$w%LLV1%y5C(@dS zI`*ShY1Yx#HYzQ)22yWX!c)Hbg(KoCHA0pGvh6d3IFhsBDYZmTs1pf!g-@h49PBeN z=7Z8$>1%2p>>4^m35UQ-QVb{(LGY9>@`T(n)k~XO>BVlMf0XDSD$(z*Z&RjK9EESj|H=-uqr<)ty;lsAG9|+790}AAJ+!3^2W^M5-uPhL1 zjM&62K<+cM7;7^BrV1hHYyDcimhPHCUQJE&eRF>%#P={I;#TBP_BI;<+IMYk8WJ!S&b*3`mw*)XAM@apWA z?t$kwn?fP%g=Qp)RPxT&sggmS&I99~tyoCPLcGJh;mt#OcZpLl=MzQ49UbxBlw zGBa!vb9}=_DLT}j71i_Qs_DE>fV~9%cPVoFWxVf_2cZLsHdw+3VddRYa%Fh?1Nt2+ znOXN!by6Z3C@yW4GZI(ZM2)Yc+GUN1ul`;uq&Ylms zeWfiR<8e7?cKsH1=%p<-D(^=%Mi8Zp<^AgzooTB&BPut;savtK@C{)w=GpAvou7Tp z5~fE*UOe=%Em&DZ&lQtS+mx%Ruw$P`_g?`HN3A9(B0emyEs5y3>mb+xzDU;k2A%i(Wh~72{6V> zYhYTDdX|dA{`z_I!64+`jx%4?7$tH56oylMzbG7(h9>TM9p=A11-29Z-llzH zha^3OxRe|JR2pamy9Il>J*%*X!X;APXL~$`vYGlLo57=*SuTuwl*<6q!4G#&=v|>x)NZnozTQz=nvDyM?67g}9rUD-1J?XLP zo?95i)P&(Q-fa^9=mYIWJvPCa3Nw%CW_&w+Uh7~>15QVx@R0s(0Y++@l|Wg|j7LyE zzNPJD+dJsX54tI%9t*Bo_zX4Aiso zLsd(ke6|o;g&HK>sG6{jA_=*fub>mm&OSAqB}@=amC3bybsnYNANSK@KTjT;_Lk^1 z%|fp*ERUPPxIkn>w)>$===J7e9T^dapy?*p_{XA-z*-5^SY|)<*HBUAo4MGHBrC4F z`mc&+R0|1X(8F)b(_&`lu2er-)gxJA*#PzDn}aW2%dSy~i@?!JxIaa^pjX#N0{Hsq zpSXfT`L>++olZ|cI{wmWUc$aqEKI7hFY^x`3L7MbY^G`&#})J99D9d|=&R^!SHD*) zvm&PDf)k7ja4WfJWbdP-5W%nPy3K*ro^6iZJG%g`BsTD0&aDf9ZMVJk@pMRFmauAe zS3sS{iz^2t4el#@QUbrj?e*rWvVAlr;avE5J;Ulhb=_C%b;oh|_Z}r8;xFY&y|cSP z`oH4D@1e3G$Q2&E-;7I@{y*kHd|GUP{{G8lM|%#7N!UEvA{dv;0sRWH{E){%Ct=T6 zj+xtokj4^2DOkhJ#a)m~QkJUz<(E8HQEEurGA#4{KKSI_hUEwoUNR3`qIO)@`UZoz z@jR^p4ysW59f7^JqL#JtOvz7gwxErkLMrndQn6Py$vZsLK+K;}^efDB326Sjs-B?K zYRmxh*v<@P*SGyT(CR7g;H|72LAg*6KpKuErZ@?qiCeP${7n_FZ39~x3wdv5@EOS; zX6Rk+s4)ed6(vkp(Mm>IM(s+{J1PpZ`rSD-yF_m9h{xq^*w`X%hQw*ri4f}N<1!3M zY3we$l>?5JcgyMQnL4yxou!m=@&s;80P<>Z05<;=G3$iY`)1wRu~`wgY}Ibi;|%l} z2(bn?>0<=gjySdUP$Hj6Vrqqg^Ky2r{MsoBNeg#TUQxwm^jh0r?-zcp#-f=p`We4g zJaL>Td){f}*cxww_aEe*ONAJbV;C@1d=Syu;9^O#ukW0u-PV^H5ovcHwj~H;Oj=Vb z=4hVJI*?1E+!h-{%76mrxjS!m<&QRfG;_39vmRlqX4N={2Y!pjTlSE0XIOLvxB-?Ix>&uX!~g{cLpIF) zTDnDM?b4A2Zz0bM!Lkdd6>4u-mIphR^N#Hkr?fxDKnU+RS#Lc|NcLt$g4gZ-5bC%A z1?+wqTAc{oHX^ty!MZ98p2YbLU?WXKg-ZtWQB#GXj$Ke0 zQ`9?s&5>E_V?3D)@T_^D+$O0)6kk5FS$27<&M?KVs4FTL?IJw@C3J8#-3KW4uXS{{5}^2lwl}xRPB7{y z$#r6qR10eOhtrg=f!t}w@>N>7QyHZ<-0WU8!atIo3c?&{$i(;XYsB$T>sa?~PR1nNBj{NjSaX!@6Xkj#d4=1P8(sIFWzbZ?-xiSCm6 z3zXTP6mZ1!R@hQPp2X2Mj9OV=2BHQ^t@Zm?B01@X4_LkP=i1{ruZ~_=-6vu3%xcmj zh@9@tmyBK`JnUUc_3uF?3Ri5gI zr>ng^b$6AF1kMu%3~XjKMNzg=rOCva`RTrMb>_O@?UM}9h&KOVKDl5iBE&23%oL z?A4;B-rz02+nj8^GLG}TZg5(3Tb&Ah98DjtU}K;?krex0iKRd}wL%`}_4a{I-XCFA zl9w+KYWlz2v%w`uCin)cW3}sx~%)!;xEKDhByYrLTR`Z0o zbOq@eBNwc5Io9zuAqxlAy!xRtP}|gEjmN)mN7}Dal;IFVc8oRAHHuvK1zr74h=Jr) z*uy|b!#QD+50FYW=!^dJ;@(co+p~|Rs0Tt6_@I1hjxKjbInvNEHRD0CoR6^uWGV*K z8Wy(9p8OOYA}QDl?L$Mdr7R@}6T+#vJde;1hbrPly{!O$?Yq^Rbu6oIPJxn!fo(ys zh1hm0Ug3#&B_V283XFno@{d=eFj|i&q z=XsmHZ*=_ctY_S3TzYE#Ni)!kReY8X1(g@M-s_M?I;0hgK!%(iAcM{^nAJw*r>BWcbA+b^9!_w9?2 z?I*19u`odRTJ=T~ZAyxFkhH}LAv?T!<8e>?_QY`l?(Y$FzsGb|Rj|a?U!NP;Cdg0w z*_L{bWvU9$yoFkUCJ%PrA`m2~^<6_6R?T754p4R^1p0jUYKXdq14mRKi)GJzd^k z2)gOD;`WV{fK_(`y^}F-c%AfAR%3p>c}onQ>^PzB3z~@1CZ1cOX>QJ(@N{#G!gkV4 zBK)G7W@G+f?O?5Y3}PO1C0E5RqPYwCRjBSe+hDfHvZq+G{PQ4v=cCn?xA z2XoFJ45&Me=`^bH6wXDWJ(hHu=gwdxQ+@DVoq*S|4 z7kXn8;8g)SV*J?Ugn3+XGB1eI@;BuJc(OV;9ElU@YV9@yxc}JES6jb@bm&I zvhm4?9Ho!I+xRE~f;=Z8AmFL})kQ7KAO7vgWspyG>Vo_yTn3tb<7PO$5T&=@nVY2C zgqRTW>FH!%)bC}Fmj&6 z^y(39&(8PF{ob#_b`()W?1$vN!is(s$prmHl6t-uue5~p>o4nPEmx>w*G6-*c{z>MKWottXUn5mdGI!V&pDVV}!8Zqq*%+m-znZ+~_JL!x4H z+_C(88qcYs8I$Om5Z?4GxUI{D9)$u<))^ip`EH4!oAMxAps^Y7+ZVWpwMY2=kb?zXe&&Ey+mIx$0 z&obfMC@$qJ*ij2qHr<94Q58+ade@q=#g0;r>&wwg$=kZ8LI&u9z}WiteXxc0mR0zl z?Og2q$nr^$|E!O-qf7|-O*VC>)iT`Uvh~Vr`GRzo4)aDlGy6o^6#0*iy7CNgAd7)T zSfIJCqFHJ0n=0@36f#t;pX6Wdg-ERBhHe`*-={-s6thQ}0z2P;?)$ zY7agrF^~@#$fN0p-06sCq=Y1Ugf^c?#-Reh{YY-&%t%=5DFT1n6fB$Yf?Pv^8w0}1 z=M)BU|51*@%JU_QzPOcxftm76ToH2x^!aj)f0VQo&qBi-uhUoXA}qgLwr})zqu`X? zde~?yPIT>axJ<3Fg8)r@#y68=xz6604m!%oP949N<6`?+UXQ*pgtc89b8{FOol~gX zG5RmnIdt4{X3bI{p;>%6=n9pw*%38WUdpDFC%V5Pj&L; zleUU%Y3Z6*c~6sy1Tmboc2pAy51q8gFW^=E5}_&OjLk?arre@Gu~V#!=!yFGG1MX> zp@`B7UATb7w^jLfUhw_t4Z1yVE8oio(a%pd8hVf&Id{rmSOLcil*1e^i!v4POuGRe zsnv^Nn3@gqBggfRc3AgSzTGI0oPcqJQ_&K-&b_v;xyZrJm(3@rLCvm1an5uks=(Te z_WC88N0=L>=3A=fgQ8|HgHCX1N5gnVo(M^d4o`)_jR!6TOwy3e)Rp5 z)~|U*8u>iUCJ%=Jol)ogaG2veLQC(Kzn`B*uw7YVta)p=)T;~;u3^cJ0=RcHqK}{}@z;Gz zXfvOr3m>-UtE-F6c}%Ft7q~yIvpnxM&{frKM9wR&s&M(LKRjfo!e7z7^BI_`A^4&!c z9S$LcK=Vk4pUmBil?iASLZGUBu6Qg4$`spFko4wRe9lS;>`BZ?%8olhjHuLaSxb_< z!)qMDVV`=FUKwI`X6p|AWL6MIvmuoGBsuuvzviJVb^@D0JKG2rVSf!@8K2xUzjEf8iw zBoEZfn3+q^gr(qC^rRqmr(^J{3qiu}L5nb1V^->rYH;agI9BEYMxf6N#AU4MAdz7H z(ZD26^@;AL-88=6M_%8rFHYwCxG*+mmqpEZHXPcsTJ*GXF`uabG1+^i!0UPaP} z#P8pR%Tp4mRYfw(`XkWj-ls_$QOVgkiG?@CGlmhpRc7qHM8n(jc%6kc?7Jj)cvAjdLoOF2hGeR|FN$y zNw=fqTG^cwo9MVWM>7BZ87r@!*edK*Rc9IndJB$%An3hYwq5gc1<{T^SFZ;x#n1P( z6kjI)_VYd7pnEy7rO4QzmS!pqnd$m1sabtZC%@%ofsc{gi6uI=v8N-T%om7=Rxsj@ z7KI|iI))#$f^+jcuMENTV&_$(+M)jQXP7mg8*_U15+(%WL}nhM@9iy@?E3RvXHC{P z+JQkaH+m?Ju)f5VOyDeLB=>{u2>=RB%#UJgJn32rIa44~T+z++zL*;ki>)#B+FgJi zBt#G$`Dtc~Py&5rEF~bObbhksYLB{*EIU~2ad8F~phvwJ#EJBpX`-Ur%7OQen~E36 z-&3o&fmmU4@t~f4WVp6KdHW8^+pj=*5?@CPWy>_VQy^5mqw=V<A zWost0LB2yf+8v5{GDJRt^VFCAdumPWlcIrxg?>O{fxo9^=|E?8UT>&Vw}p`mz4C5B(Gf_N|)Apa^)=2%#C0E6B(yx~Go37~9)TE3QF zBrEW*5un2@4O0T$tTV*aM7&+4*osXE%!xj|#dND;F%hvahTen)kQ<|nwTq*o;;ev9 zvg(2*Q?A*I{b&Mfx(%MaOj8Y9p3P>Er&a!Rx|)N+>}1QY(W*UcL~4%9w7WLCbv}rv zy=4w>tT2DqePnw^7f3P*j$mk#=subb9#W>Aik4SH+_NXT3=(*hAizjsB6V^qxo0U# z+;(n_gLVJ-&3ap6W{1de zy>h=NBkO1;vU(olsK;Zo<5SpdruGh_Qg~_M@tvMfG<56*Y>o^ z_oR5-LGv3`;!>$+n(^`P3x#(@*D_*9K+c4bcdvg_5`vkukxG%P+|3OWZ^XJnmJ!1* zjzY9qv|M6$nzzTeBw0}g479DO#hLvCOuic#G6xG^*B+ffpj0cH3-&3np(rOQ6YPrA z9tPuCaSqEM^6PYq)J2%6@VE<9l+dfd=o6V{W15<+{?rhWPSr!rk?1vE`4QwN_uI(hW@%?;-U;upP>pUGVL`;?iHd8so!ljKn>kFL(=jgtu2R^MFbWV-C8C<|8Jqj zI>y5q!+K*Itiyq9{&5H?4C^XoPKkDSfJw0?4h;2`<5mEQ^D}5im|JUVidDCwwYzhr z`EqdC4#$Q1Jg+f01si-9^sx!EDI|_=N>K(4qJ0dF<1SvwQ;>Ecrd96iQ6Wd%<0;(3 ztx}%vDlZQ)zMpK7(t4!KS?}Pyiy}D4OBf)QC09Mr7dgDOsXl0iDkDkZyc}-s<1l}n zUUjWV=jX4pR}v{icA`=6}liR$|?b%y#p{)A=ZJfOrP;EqR3d7bG)e2RoS z&$>OjUcBhhFhYV&h1(?4cD5Lk$VoBE{rz52THos+Eb@HIO zw;z$12V(yn2ApacTv*^S6qana1MoS?>RUvQ zv`_~0!Fe)aM~>(bgv2{?;d7RlsdUMa^y*n2rnb9Q#cO$Aj|CYn1yjFo@bBqL)$~OF zsgmiZB~w2}qcpMqtT`i8KrR)hJp_HAWPyBRRJ0ZW8uqq>CMwc{95wsi5E+c`Z#|jZ z4c8c9hAhktx9wKVbx4xC`M*+kh=ZLU?)ud=e2+5nIF602ru`AJt3E? zskXnK=xgR&-FdDKLmw+x+E%WvNokeg*XB6F3@Mjgn4VsEV-o{qSdTxF`JH4wI$fOo zy(FwsAghy98FRO~Bv+vLJ-JcQOPa)l`-@X7F2YZ(7s`)!{@1x+CV9=8d=^U>XW~6< z3hKpc%Y+P&2=C89MIIN)*R9IL4>n;I!)(3>w{}>19z(A-HA1TlV|TjQ+~qWob~$<3 zrFs_P?J<^y_yGAK^>HA^bqA)|^w8#u8~>QFmTR}Y6y1zX-^@#=0R0|Vkam)krb+ol zQO!m-17La#j{3zpoh^t+4VC+DI&2CMucOcv1Cp%1jS)knyUaW9m2!2rNxW1g6^i|m z67K7w7G9VO^1_;=wD%_n(2FRRFm4JW?f@#htbaN%InjQA&@RtxMcy`Upt%99vcDvd zRj8uuZz=G>?kp*~-j{8ErfQ~qX)WBt-bxH@u*@ljTZfld4$xl=|CP~$dn~a#+ptdu zF7km^Cm>&l$w(YY2rjgu#ks7Bvc(JjR}A{;b7AbK3hSPu`L=&=KiUv{;`#0=FOIUecO*F^D_5G3sbf z_+hO;-LlL)h(uG}3WIKIQT=lA=)ndBb9QE!J4IY+^;6JN_PuXzD8kC3lUg4mh0>5# zSyZeT93#!DHpxJ?c6H6x9duH9UDaQX=8CN>r@S7+I>SI1;oP!Gm%vl1^>{GFTEe2W zpP6Aanz!?bEdibFl3aQRAO}_c0@wNEZ+|N!ylrN|&KL4H2z&8HbP8%45;w87!^c4o z01^6(=|#Vnn+ucmsci~>C&uyBo;a>5hG8Ri`0tHH{~J8q>b99w38hCvI~zyJw~)KH zM1AZgrbwnLdkHI$7<)uxJ)B>iU&V%HDq^Plk5JUDWhP^zkx_&+ChlM2;++t!)EM@} zyT`DUJSxrUFAM{K`_m#SBc3U?<&og*Vx7+c`e}XF5UKY>NDNRZz$Jgn-H{F?%lTj`Wl*7-%yX^(R4^4^Kes>G~I3}K)q>N zjPxvlRc);0XauHa(?kwFO!5Y>u)PwZWCT$hIAFp8sSSDAmU{Fb@?Wy^l?<`c@$+x= zEo+}*vakr+6erbLjY`$qJN{|FfVG!|4tgDlWfJWjd{#Qz+=CuFU>Bt*7@m`NJ@J+9 z<{uzfY3ff#WVZ=a+^pl}^@uG+Zt@qxQnrkNjrkL+WXWdqdM{7Uc$JHPzJFcfGo~zA z2l}s!_?RDgceHuhlaKp_(XgFv6^wG3e0mK;NhS<7XqNpQh}JSSZTY46;sj+t$#dLGv?W}BWWfZ}sEMO~l;{Va4k2AUEG7Pjjs9&f zQQw(!Qg1cjyJEFuc%7APuo#$4)W?*QU+sL0ImS(Fu%A}kimxnfMSlL(XS6+#kJ+a{ zRj#sCu!4Rn6vZhDKyvI>EkTIsnsI4;h=pOKJi`t&f6(q)R;t}CK9(cdY_(E;oCm~| zxN-78TW;@AJOtxbm_U3+%vt*CdCXi`olUgi$k_^HFxmENpXiKVCjjy zMA=@!?Z~mavb{zFQb^Bh&pv}Pa7_HDyK%>Evj80f*I-;hI*_FU%{DchFKc)S5Cfd? z(Mqz=)FC#7qNcD~>OBV_LTKX~nCaA&fd2vS%NloD2~47s<0G?o(GimbeA{Pg^U zUBWc#(bSKD0^dj}lRw~ka?)R$xw^lJ_XpPDPov-jIN`iKU*>$crC9-Y=pjf|Tbi9F z?|!eD<=8oX`1yxLx_%Bba2nD3Q%En`eIFlUQnw`6?yS z@5Tkk8-1U(;nvw09VmYb_3`~#>S3S5yWj(SD-juijD*MtDHZdubVo1-1Xjl5xAQ8G zYQ58<*TiIGUq>GFR(8^*GK4L>U;wCbn(#xqJeAbyitHJn9m4l7>F~T2j-& zp0P}3ySYjo-`bm#STToq8RImra|#q_fn0uCS}=rYn?XK1x8zi#LUYL4P7iijl) zz!0wMtRVLG+cuc_I0p5;zkx*uacGNoC?iWX7JjlVmwuw&+8AX9f3|gJ%SrKkD2}qU z@SM!*Byk5O-uZ0!VO`Bwcqs?i{8IC8Ss&xxv=oaF(c&uXNZ-wX{FebIQt#Df-)?>f zYFR;pgmY1Nog*|LlPoj-8TjXm_cHcqq34r_a?>+qyH61tyb8DUaR>;fCnrc;^xy;U zF|@NkPg9wyc}RN;Cl!IZvI}rFL!>meq6gQIXZaP(#T3s3Z#~o1m>vcs1fR$>czPDm z?qy4bj|3QfX9Lh;{EiH8vtu1qjnQXk-Ms+`H5~H`nElwc9sdO+?2sl+w z&_$RLD5xM*LtYS`1K_DOkx92ln!HD@wn(^&y~J#AA2YbWz82M8RJ%ddx?KWa8IA*` zDCXcb^OF^YQei)!yDV#NQn|hz7HVDyX0mA2$eyg`Bp?IZuc~g#?E_870|vBx_io%^ zc$nSL!0|_=Q#Wg3h@e&S`OZ_iHa{p_%s!8lm^(4wjk(2&i5yIAIJ@HdfiMqP+)4`= z;E+^f;6qt-SM*{EKkb~y(eK*6hN&@+WHg$UoD*So{?a5u>XKpVcef?g>i{KB3J`Uf5ux8WeQu_|yZyWckV9k~7C%Q;zZunViNpe~$xfO={m z$eF^BG6H6BdVd3pdkhTS)9}aiD@>gBl!=dX&w7M=&KU@&p4@lz@Q$!-)@tfpmIukL z>QY_2u&jp~w!&$W&oYB|vbu(oZw<>tG^0Eh^^Bf|6OmAee4?3(PxH8Wc2aISoIG4X zU10$J=Qt?~=i#f^pJ8`97Q#Yp&gLJ$AMMbM4=P;s3*H#Vz^OQoi6)1tYS#g*^!(t- z=Vi41ar65u*1Hw@Avw~_h9Tx{D)*s)2xI&KD^%!tAg@5zlXYRHgoVD_ApzHUm{(7e zXpHa~%}`+~tcf%x4_4Q2LgwY3`Sd;b!8}vbcX`D&{ zQ0rcVR$IE&-mSl6R((yW4kHhY(JfC9Ov_S-^Ky?W9A@Htb-P}6^Ji9eLmo3gYi%8& zFBAd%wH>v2Ns`tSI!8j~=*Uqjb7nVnPBEEc`$z>oq%2n#Aop?9?jD4q=Z@aeYjXeE z_k@jxv3(G^@y8uwV$CjfZ-Ck0mxc&W{L;Mms|BF^vaSd%9xwH?ZvKI=^!lhVaQQD8 zO=@y|bxPtNL5I`~>j;r@^CmR?Ny7d_7n7Lam&z*J#`njxqcr(gFSDqkE9ccM@1{ces#9&r|e5+uCGEGodqd(HT>h7}1vc z`3KS(qh5vP9{VS=Ui7q%U;W}`&XEboT)g{%&5XYQavIg5G-^!{PABjf9 zPcjRV+H?I$$FY3J-7WKIcWc1VIHM0jPXR`7D^8RAX~;^sHf*!%r3xj1?Y{<2f^-PW z)GD@Q!JL=@K*pi^15|F zjY))E)982fsd(NEST~Xc`?gL0-}&fl+7!J&PNx@|+jS+6yOgDaDQrW-`seboheJ&hTSuCkZW zp>BeH?%sXezi4TpXj`b8H@F`as-b;dYwpS~Td|4ql_#aefq9{Qe1%B(WKV=N>{pk- zyYe)t>h-XDx17$~OL(+i>~+8QJOA-c^Pii!%e8W9gr#x523axA02%ejHqzdUOnPOx zq~;hlE||200xhS%zWj_F(!tOkr~7>S+X*i^hvCP)ZIUQ`C%-5O$wv8fLoeOFL3w2k z0A=5atEO~2mW#e#k)Y2ZFHn0`^8r#mCEb$zo&a64BZHtz!xmf+xT`?gdBAMrkC}Pf zqrO38z&E|~g;a|mLJ3wCh!Sh}Q1JE?> z8yR$eZdvY+cRmGup$-B;XK!yEL>8G8fOthS+4$}i&E!UiatqpRD!U%ssw|R7mfulo z97B8G+a;XgH_K)p0UpMr1uIRcoct=y6UStL%Pr3awD(|36lwAxx576b7J4Ll@I}B%A%E^g-Rj-ZqczFnU_4Q0 z6l|r77>cXN6}n4GTQ=z0JFk?c!Vp6&>G=0CR*(7K1+}DO2drWLVx^V`#3qK_oX7l# z=)G?)Qd2oXva34Jw*AOZ;O&sG|Mp5&3=2i!1DW43d-=ONf86{>&EF-%{V2^D&iXw+ z%XpF5v>%aZE-O~b@raI&k9vcMw8mF@$c1Ninz3S@^^VdE-lT65D(EF7V&dL*hL`XB zs)#(<9W;iin$@@K&2f1$ZFvE>j|> z#9kEbrg*aBR+Gc$_zfy6g3LEt1`O-1>Xr_jt)L8!DTt{IIE(nT zgxiY>Xqlgnce~&F&h5}X1e&j}8x8?S=Iu}aX!UX5HvBWR{4?uTh_lx4YuJG)_ z>2=j%O(+j*TkP)C$Cl~!?>cLv*wMXD$^6fN+)Q_NEI#m&#S4DXz&C7L3mJSivGA&j z(TnFSR?bw)ZMbo)(H>{CkfEB@`dJ6T{p%uAu%9%o{;>+8)(Guzt;ZtUi(C3x%^O-ac6Og zj-?l`PO8FY%{i>AS=$x}U9B~9RJ7g+XVfpLq7=y(Fc~~F7uu^)HFg$a&HJ>&-pr8? zx>7~k7FF5wl_sqf$qGDzD1-V(*}o)N<;lRB2@l(CN|tB)5(+5QB`62quDAih%X>f$ zkg0bC(7}%cPmXsxU8AZ}t|TC+T@+*grOlF4ZFy;rgzc|0InYT+@z$+* z?@msg8)eoL#46Lpo>k+{qt$*T5WMmZnk-56sZ1csNppCqkxf$HE&ahvYu@v%2Y@_d z@Q~~#_3V_lt3yq=Al`cJ=fE%C13WQy*gBRZw8xhvZBjY%Y~e|fh>hxE&%U6y_6Doz zWBCGZ)b^LS%*BJSRNXxfBb(ycY=?)@AXNFt)3s6wjV$!GTmwln zEE~)M^Uvi+4sLR(DO$;Fdha}#@er&tj;D-BwCO;anpdNs-?Lt915*qHG@n z&ONYz3fY`9y3w5S2rv3aGE|yJ7%0tyV2xtejx4|5nEda}FI&wFm!Ww1f?J=nE!LN) zOlp|yH-STGcF=d4-*t1k-=U2x`-3o8v7KG-i_O?fKbgMPWJ;tvCqVxyc{yb}=P8Bx zW;!{nCaKT-teJdhRUCeMK9Hxw1h~~>58Zsf`H$|I1{uM-(fS55)gXr5K(8~@cP6#v zBU-5IopzvYs=W7<#t3VQhis7p9C^$Rvh#y1ZExZ$Wiw=9-fn25)wXY|Z&Zz6`syQG zH2QOd3p7N(if<|-)N~%^=(r6YEe3utLJkLao2B^%(v;XPR;xz-p52*k3rsvSf8#?7 z;Hh5pZ_feQWE`OE%sKG2-DN&)vU=6x5}x&(8e7_Hy&p;bT0AKh9yZ_u8@U*x+HwD4 z^UKY@+k8P%`ZVco)zE`5cBeClfwGICT#HhE_~ykvw;E)J9Y4^ACwz1tcY+_oDdbOoz@+I2+kVmyT=-gDp#yvn)*-)}!${0CH4ab+fSKOc z&VMBppkrxNlF5_vChIJNzUU8aIc+ia&{( z9bfaRc{Znf8T1QT>VwD^ImENVU%!-xx^=2#<`JZb_dp9sQqrG6shevr1Yx zdz!8N$=_|xQx$*UIE%S55MRf=J1EfIoC*fXe#$-_sSB9R%Tg6`D&OD;Uc%8^3FZ%| zZ#OkY3SF1dnV}7gZfUzr55n+EO&8x3O2K_L0Tfc5m${Wlv#*19kMftk&tG8;&onnW z|L>of_L4ku$!u%ZL9ioe^9uLuJ|n3&eAr%T(9{Uv06Dpm#TOuJ?9W*CpXehC#M|&+ z%a@-IA~;uTKgMLAbF>2@ZJH;^dOvCA@}CSG&E$)Fx^_+FQ{_3= z6k|MIz&jX?1!t?_s`Gnxhi~_Xrs(hcZ3R;dSGL1gL?r7aWgobDFA-?d0pm(3OV)sm zyj9J|F!^=Hoj$iQ|N5NZb39hW>dYM1v8tSswfj~$z&iW1HT{l&R>sLZZIbl43kWiy^GbTCh^im1$g3^otGrWig&k09 zck@t`bouEf-<^CxI~qN(4&yMujFjwR$w;9z)qTsF%zB+8LM;RON6Z#~h259^VE*Fs(e?|z8ibz} z3dQV)tJ{Pq6wTr!#)ta&5u*@=Wf*A34W$pY**v$>0rIt<>u9ED1ypyjRqene+g&xW zdM3dVs^Ht42*0|PYM|c%he_lk1hID> zmRABRqF{ay91o+&(A?S{uIQ5Sv3ySs)6Ml^daiqRnY;`UYPHwMCMiCCc40=##_a|0 z($jUhj;q6AvxeYRVjkKw&(uiPR*@a+)~gf=7>_QP&+)jT`3;HGrzD`?wa>Jd=&@>e z4MifkC`Vq}L?=-WvTeWNz73YTlkc$%In$y#4%z^uQQw?#5jLJBB;ZY-PY=~=sIBmexn{*6FqEaC?FBn;z#D4i_)u?WWp zyg8YD0PKLq)fZaIinC4!vE;XvIN^IE#^mQA$yKMfTLO<6O!i?SKgx?5Lm4WdVgS$N zJ1Vvq~9Ky3SZf^WE^iw2}RG z5EZc;NGW~R?zP2V$yVtn{~MV^f2sL3k{3&I>?c4~L;B?3ZhnozjP!SR|AKICIy86o z#8bQ;@zS>NilA@Mj<{+jFEN^>@kV(`O7b1ehlL1EMOe)C09w4>9jdd;y!!_E5msYD zl3X~r$)jp%?VJjKfUx?rH>2mdWuh8Jme0B=7pQM~!xnmOEe7KDwz{v{Rmd@wyVv|e z=5+(vA?JrlgMB&Q2Dy!;>$~LlkwWgr%d1xpk{HNO?w~(~NiWbw6X8k<7=wfsBW!7j z!g%iiK_s7yN^6^--_f%_-vLm5PC&p-GQ)B6c%Ny2I+fO{KmT>NXJ0|H}v2JTbo5hIEfXpE#kuXrcp&2O1rT0 z_4ZSwwH!?SZ6+_Z?@BE4L1ooSgb}VG1R|1oaWPq@bpX6rQPVw7SHrBmZ&u~hxV#NUuc^5Xi zgJfkGVI3D7=jz}PO5LrDMKfZ#61yz;4y|%wsIP0ekO(+{Aw8&T37x1oeA-o zJCpGtEBx%>QF11A8EE6a-q}j0gGK?jjUW6-Tk(&a&O1ELPy1MA>dtFZS)`-e25EHs zzFa)ueD-#z^0##}iW$0};+px>8&BS{eTKwm>`*(2yl#p|VpA%$j;u15Rv@W6 zRL|wMLFj_68ngGf+}ZM#0-rg!R-0)119JcwoBT1teB`5{B3zg3tC$MbkiU|WKt=G~ zU!F%r0SP{6tA2CuFkGtQG|;`FEqU6; zAdOM2E*l4KoODN&cOFfKvZ)B*#E1&2!Kf_}eIJ+oHEIqZikZ$54>-A*{05<5nH;Gk{%dG8al)tTD*|9<41a0LF4;m%dpzQ_7$S+I{wW2~ROMNF zU@mdF*BJJd7Zdu@tIZKb_{6Ol%~oGDJSttQJQ{t9j_+uEu%7PY{!~?@r9ot*xJY%I z>MKl?{)V(h(`lW00KL(@&5Rm&aD*Vz z@e+d^ht4D@N=N_h0!oRjOHoiFnkol7ddu94V%B0*XatIZ8sJbpKb%0~-XqpQKrTedGba zxVWQV=JscWTS055QdJHf;mS)$#~<%jZ=kVcIOp*{Bm;Y5n)1_|eq%<5Z$@ zSHjBI7WE?KF#l3bH=PQigOuOi#jz7(M{X%OU8Ty*^X9Lal5wp|tSAn{0z%FZ032Eu zuLZxEZowgYUa^r&mvH8u`58*6_+|t=Gs?!|WUyFcblK#lXjke(^a<#GN-I!1|4%Gx zZ_jrS=`FPFyVI$L+Fi+NN>gT{Z_vaW-FG+Ncrg)pdD-Qe}juEBYH9$KsuKexlg3!vkSw?Y7791koj@pjRGM(2V(}UoW zte~;%jdrB0peobA30LZL=`Q04viM~s9f5-a-kPF4I!Ip_$)&@6RX@vYhxyUB8B>UE zbRK$&@Zyt(r9kBkx88jpHodZWD}doa3267PG~txcYbo0_u6byxJK!oL+6gKRz4q}G z=*~HTh>*?AI5{v&3~B&Y~Hm zEP^i`1g1WRa(o`s;9=@{# z5zs&6hjbJo%q(wiL?}rMXM}fs{fEqYoQC0163aFYoIP8Wu6b0V5L2@D4KR}WwTpgL zxNkTc+Qm?SV+INOD<+%+EocgOxY{`y(|$|%sU_oF zCi2+vX7Pk?4_I4cT-gQEW8c#=eKD=>C}4o&=~8=zWh>Bj=at@lltzzRiqvNEw3N^5;cARp2HKRkjnDXWb()7EFh@GrLaYZ0v09)xfXyQ?cC?-~j@nLIFs^`QCge5a^r z8GAel)_k;DZQuoE)!s`OYdIHG)d}Xi_B7b;?p%^b^}ozgKvk+>x&6(IIl4(z5tOFs zRlCowNP4o<2nWizMh&dU2$3q!-a1U(-}@6HfU;QVTsa1clD?8;?KX$i#Q+1okABM+ zHzimRsAfUInRP=vso0dVsELbR{AsY!#79BcXLGM7XCfXOP^Vy3JI!b#CaU`z@<-HpApYn#Is#yYi%kDJBzQ7kpQDJM1<#0!Os6N-CCqsee zfTL*A7RP^M^g1B-VcJm0P!4_~7L*YXJ7EeQ?ovQ``o?_MAwjk~IeUL}eDf~GwI5vo zv#kI??FWlmLnWA?zsPso1v|AnZb1R$V2%&$r?G!^najdv*MT5Gj&U`A36mkentVd& zpv*+rt$7#GmN-P=M6=+WFphO?SmOvXI$zf!bfGcbf_S(eQc{ z*k+I)*mMi}nO(0A!>XA##k!56?cSABgRpU-@_h}}MkystmsWlo-F~c7j_oG-FfP7* zr)+(FYWq{7W|XcDln?$~}&&t?TH&+?9iLxGh!R5 z4f>ZaM|*cv;63!my8$-kk}}Bm@X14r7gD&+@(ZZ7er%ce-6#fezug(VF8~{r+fZUe zp8BVDJ7dlSizyNkHGSnW0gyHRFF7hKw`~ipY!V@(J5_Bwj?u~Wr3NXx?@AzSo>%Ie zpPXQINIdO%d?qvJtBdT^z|?Hip_-}>7}*~BRsYJPzH_X6q{+c1z#;4Qy~eWH9dH7_ z&S9UDqQ)2hi^>1nVguhZA=8cF+&mp|cRk}sj?XfhXwSta9rmwbvx@s;3*vOk=Q)s7 z&(`UN*sIGB?ySh#-teJBci2Hl8paOw4j@0dl?VNXe(9q~bTAE1_IMMje2u3^304A5 z$C?Ak7qiFak4v~@@#s#pPD^j%qu6<(nOVH^3@XCq+jjD_9tZ+hx*sP~X0Hcu z9y@{iaS%a|WxKVw56Kw(Q*f`S3GX{44_gwPM4)W&X5E{$!ZsyAcy&iBXoR{XVXBu& zi@X^SF_}iP-XeVRsJxQh&aTSZ?P0LoEc!`e{(VBk;gOsY$US9&f{e4^GCA%WB1jG; zyvhi7UGP4jrNo+M1kk{Ph9o*4UJY+9Deb_Cx+KhiJvyc$e!csG{ycQJ4vgh*PJVy# z51VJr51N0!`HwS}V-drzfx3{biIibld0M&v^0dUd2cxXy1@t)hb_@CYOvroFf(+tu z9eRgO(O;a(4I9x%FqM)|F=L%H2Ky;d@Da#S%_Et(p(**oNHn|32O?!$XeAjac@Kzw zs!&fXimH7CIHz(2b{sQAr$gz9k9SXEIp}^AAHMgLjblw`OWqJuE7F|r{`=DcW3syr zjX7w~ntx-_sSmQPQ1=!T@>u}Z+Y>6fZXbv-LhBf_^iH0P4!@2SpYy#p`Sbd8kiYJ4g9b{|?^C5tVZ9I06Q! zyXc$A%P(dy>_U{dmA;toc3n?ya@s5=DEsVo=RNGs>%JK8xP?ba#{fD!blP7Bxa|ux z@b8`+;2Nq<%!LH6*ljc~>m_oBG!w+Yu|aDjqp~kY?_|nn z&wCGO4D56#ZRsy5j4$z{O0@xFR?HNq*>8^KGn{3?&nf;E0#9jpR0+luwDbp|1vK82 zLtSvQ0B}lh#+lKeBL00HS!njT_;$p@Fx>iG_VJ9E2fV^ccmgxTIXOH_asBJ z=&p2<{{_cv`>md4l1^YUDW4EgKxheoq_IpuG3jB2xSfW>x{HEZpm(g}JDcHB$%|S7N{U-TAJ{ zOw5usn$}WY`v^!sZ~m5A$u(RZU4+!m>sK87 zA2q+({N1@2^G`;ZN!}$9fKMtZK`r4tXyj5=bM(QDiWIU7@Y&K@A1M3EPflXps*Lmu za*q63`x?QX7YCy?nhXvPyNMivz)BVEVB7PPnf4b}g`H-}GTwYb11|dqX5Q*@85f#gAS5daJ*1cU=?i?*|WxJBrfe&2LCy+K>SvUz)cM(wbt{G%i;H` zv=%9J!A=@Wo-2jk)apVK{|k%Z;}{P25n@9OsM~CN6yG&SIz`G@cqPhmML6BTvk_m&9J;?NjA5q(Pi#ce>A$#>*^&>ho>xk)B2 zCeM`}MO}+*joF6tYgCUU5X`!+rSYLfi|~5N3XG>o+#K`s?#Q1`HSrhJtJ`|k;gUM^ zWd|`^0^9}9bpEb|YlpwxhZCYf|T?dZRtkp8C**17<uL|NqR5@!WfbR+x`YyJ828n=$LU|)~y`$_x+QU>bio&)gD4FeF z2JBv71QMntP0!%T35OO*bhWsX<&t>??IV2#! zWsJvVGKRlMK1>W*k+DWQ`xD_v_S~p@dvd#Kg7mhWA5BQ!?hg~=jfd7rY>fP9f0zlE ztTA5^Q+czo8=1X#AnWcaCDm0nZx?MiM*U^YV6RJIOdARTu~K6S;d4tY`EP53V@w~( z14{#G=cI@fE7*)AN~{$7+y-Ty_WG5IW1l3!I68xOY(^?RLKJJY`%e4Ysu*}jY5C+&q@kH>Q2Tp>dqvK5Z_MKM9cO%`O}9 z3HF9Hnq@=UmLv;8(Bzm1*Q$P6+kRtibz%J6knqO__=d?I`{Qn18Qz`@o*bIQm!b51 zymV(T0@H17_nJ^Hi=VgOjCV9Ysj>S``Z24t$Cswwg$%rp6WWrBU)UNFbwZR@e28BC zM;TgAG^-9F{@%jt7=Hq}(T)p-qPFN**V?vdLnJY8WfP+J?%DP;tngjmbXuY3Q*#Qq z^F0jHJ7BVy*7v}OkiAl%NfP1H8-_xIQ1z@DeG8?vOpz!tDl!&jh!%`Xr}ygoj5-CV z1NRnTkRQE0=O%ixpThDTsLmoatu~F{8dQwYcX={dyX*nmm*?H##ky!Bb8ovCH>M8> zow&MH5}nDWl?4e%Nu=R4kHUWoHzu^ZvjDN-%v)cxO1A8*mQvo|w3_`C_ny$+aNTaaBNegzq$|Hg|=wC`;glr(nUlpa3p3_yo!gO?GBdMKDNx0lDmJGp8d}Rve zq2RYC$s%sFK%{=}^H#YnFxDw#SvO(4JGIfwP`TM771o>SfBp3_shDhk$ri;!_Aqnx zuZ+9qpasv6D=-PKG&HP4UO>ND)1#2TrlclNsEwSj%4GR|WoA3M zyOGEiaj$i zB^&=>9=p|1y&xe|U(evB92AeXYm(7;#W1$u8pGQ98iWIo;d?dO%^^&Y^J4x{=h?dDI#mM_7MrT z@6N>vJ?{2eSgv01(@*`FJwdW$g0gJ8Q;c#H*obQ@D$t5q-ps6%6}jZx+^19?x}Ku3 zeEO+b0CtV%veBPChp;V`z~B3`ht_34VL432c_`ab63ze*8rH{!z*k1_zz*`sbKA_Y zx#m}ByC7PlJh>M`drk8aYZUSee|ggUs+7`Rx1!2dw_X;6GKt3|;V9+F{mBcDa8Ap< zB3G{M^xKb`Z)OD|0$*oa4Oo6dgiv-LzJn@fSNcI=E`ebHgvF{P@RN_sXuxXZf127I zotR)s|Nc$l)Bk5fDl`}PGbUYlr)eOaGE?s7_+CjnW(v_Ynz(j6D8h6n@+9En*;gLq z?1Ve8W3+;k$Vl9M4`tNPNGIU_iDm@aHqy>IRMCw2*-S#tOaCw)3^((th;JJR$t;G7VeY`aK(Sd zbQ2#1!{-jaKe~x|kN9cW6PUK%+%96~h>=_Q(R&TEybltP0>CfvTUlFj+v!G3xA9Fv zb}Q0Vh`*YpG^2iC6?1-cOQez6UmzNq${%$RNapR~GVZLsji84bWM> zu@voUAn9IHj11Ji&Ui=0gl*<-aw6Xia9yfsxxCM3Dt={=&vECEe9>)`(8vaC^1ub~ z7Hl>u%qJ#;faB%%a_v}usXaJim*? z<4hnsgVcBbo0FW6nPI`Zo(fEgIC!iy^<5D+R-Uww$CL!7?^4zHZvzW7K(@+EPd?e$UXy# z#KjqK7^&-0`EYxRF}SUj+@Cpcf~|uYKUz3u{dT$Ll&w``f~4_Qy?thY+Gn4b>YNU7 zl@xd6h{XQD3^}>%6yPvJmf>BhrG>UZA|$>r*0_xK?VvZ#JXppSYPelj%#%PY`y)%U z*%kh0f3n1B8m{gLS!gTL06{bm@!A#@6`ALbKu8OF zIQgM3>|#n5bG6rOl@wrNGgKnpmViVZyyd)46p~at%6$SQeTw9u*&W2_A!xVpjc!kd zSo177ZyrJ_AqsySzfuc-zxgfD{}H$NxcRNt?c+s?G}%=S+*nS@i~g3Rp{$w3t_RV4 zA|H|l$d+{}W!q_?Gt>&yNtV{*MBz3)`2?w-gK8gabGN>s?K?cl2qU#v%$Boz4OD8v zHH0V!cc>tDDh5NSa4b1uQkPSvWKYh5keAAq%`Q{8pV=-3wGi< zIR@QqOenMY9E2cPb{d)hwsxkAjOiDkF_ow`8) zmU!V_x!h7V)-uOSo58kHi>_lYw^>QryN$_6xsP7^ViEF;ceT&6=A{TjZ*ckq2JfFS z&V>G=6bqb*62kR5Tma$B08*CtLJYfj?qvvfbkpNMm!EA>4)XEAY%} zjLoHtZ$38RJ)2J)_ngvJR7EQtW^kDC#N_% zTBHyecKUM^a(1508obK@q3rYtfcY6#YpYl>X4i(3@32|guB4&cY#TdkBuuZsl6!!fCIVkL& z7Y`wB=P_FZeaE*0XTJI1Ep-$|zn4T!)H;nR$&a-^6f5BdidUq8jPAvJkAn&dm`vn{ z))|AEVz&jc>R(B^)Pv=K;)IQQL5`eh1$O?^`4a}&mF=DaVW6%^$^WZ)(foAtA2k0d z=Dk4WAMp;aU{8eAvi)UT2J5SyCf-s~wn{P&obfEYoef0bmMK+bt>Gd%-k7G%-C9Z)m1I zeuM2V=d$^h@(q~c@LFQKl9hKR3@?}}z`A_y7xix;Ok2l!qxRMn+0<-lDPDx>f?fzzFgZ@-igncTf47R|KLR5g3K27}fYJI%CSg55F zd&R2bF49luVuH7sGi;z%_t};Io^vxNRaWdu{B^yaTqf8JtK2&VCnSL%{>R{mR z=g=!pj;Z!_jC$tc1Mxa!EAf~la3&vD(*9?S% zTg|R+$4b-{NzVPGpwAtKfz=vJsr$e5kmopCismxL;=Tuf>f`oKFb|Vit&TC@ZN4{u zm|faDyvMk-t!$pXLI3}9{$wjq`~jNoVYC=-R;V4#p_n|)bWI5143mIIq?7ll^ine` z={$xT?7Xtl3R`B*UK*?O^`BG*&gCWYH5o1Y%}-;|jrQN8l$iU0jXC9TjrMS5smZ$A ze++w@T5eVfnN|-9$z5x1^ZuRDqf85a%mZxb_@UEdioq5_9p6c#J*F;HpfZ3b(BB)J ziwpT-oqyEP@`{CSXTVC8P zqnU9)2AcN2XnmXjwv;j9^n%RpD+J5xl}0-yd-!vt1=M}e=7TzRE0ck=OgJUfxCs3U zhtI^r3%mbsF(>2hzbiZF9FHl=Sn?Chu5;0Q>;5H=U(Y!Jj1q06P#_)gSl_W(w)JQ; z|9y5RhCZKd&R5o)8vyoNTMI>)N})8}mk*K&#YYV2Dhogm)X~#6{y>&%-+3QK@H7!NcQbm2f!>i zLmjgn=ZZU7SxS1?IW5Owc8?~SSp_&A{l)C_v}jK=96+Cn!KxroYsad|A?dJpv2^8S zkF{Xt52TMNS2QOT3ExmLMz)epE=A2QlcxUy-~Tra6n{u|p4-ymt~f%YsI4q%-hr<| z`@9s9HoI+i8|iSl%WcPne^`JHZ_vgKN@koD7QqO69Mc&EtmKK^(+L;4GUmamkPc!e z*hYUc+%h$N<96Td2o^&#D;mf#ckVzhQ~S!^4k51{8P?{6?CkCCeD4>2>CgY=U-C)=3LB*Tqu`M;z;yZWd_MG+$GLvsfjClJplNGz8WS}e$o3A_`N>?OK?UizV zRJP^`=Aq2F zi8Cj4<{ZFbcFL3{Feg?renxAgcX_=A{-TYa7PF*d=q7-+x z#ghmcl|c;ae-;#rIqudy%0e~tU%q5Dmsq^5g^ zI~_9~S&2YZ9pbstNBGi)8_VDbgLtOC6kHvMfTQGA z7+R~0#U- z7=<-hvWi$`XRu;#4=cQ$QIK+;_;DS`e-Ms0@!jV4Dt396#t0y?{nrq1FEFRK0-?ra zKq5$Ip8_SG>yx-^+ZcgF%dE_f(R={t%a7b$Oip4$^Glz#LGN>=t)c%|kfJ z2ON6&tJ3)|;Aoo##y)#NN+XB`-p}o9L0t<&8OyOWB}o-pk7aO*O;_!kB+p0mK&H^s z`Dj42Za^@CtLvnFrke|x@8+sr0~$n4Gf+-xZLYMuAkvs|C73B-1xORLo7a;NfK%^X zxP*A(De@^#^(l|ipTG~$Lz$VlXQ#peu8N@`G4O2rG^o2wh_Z(>{9c+x_6dj6&A4UU zlif*1h`S^(XgPb_Cb2_1*%d z(*DZG8Ugv;iq{jG{ZYnRMe|DO<4V?0Pk>bcbF@?jb;uATt$UkgNB~FYIef16kEm4_ zK|aP^?DQ-tQ6w_-*b8nRNjt>cDpOZFfKLxvasiCOH$0R7;rUSA7U#P+0X|w_s`i)u z-j7B@W43fTJf>FVMlqFpFR((Eoyn4lSU)e-+6G>Gg5?kXVd zVVD<89qHl-&gyZj=$fB88S6TQdL?81Ti^x&_SkWtSGT_S_GnR1q+CHPzPC`}Z>l+^ zkEgzbAw!K$*jzPo}sp{DrlD9^B zLJ{SSW6wa@%rv_hcmNBqte_kn#ss@Ol@*ixFMFQ;k!J6CnmzNR`bRfn1|OwxczG6y z*FO#8w^u3Qn%ozQ!@w&5-@=U6F+**S#|#O;>muE=6#+wl6censt&55)IO;8q;Ovfo z@tUvYK}^QNmJxIfGp1|ZgM>seS`x;!Gir$Ts_^!d{^QviMKWPZYD=~#5E(7xRTwTK zcSJ44gGHU#%$QMS|MlmN;)FZ@S0MfWDtDeH6vuV9kvAp)Fhw3)uK9$-OK~q`@p+R8 zR{|*rD@XAush#}u+vZ1nXai%g>Od~9NJHdPYG;)z!(LPfP{ow9#QnmWGifr$)upKT*xfB-%7VFw9s&8~we#`!pT{YK+yyV`$3zET0gjC@ba z%i_@Y?}~wNp?o1?7GW#{T{ucD$b;6P4;xTJf|9rg`;B^XgVj#{NNDXs$w{u1!=KMP zaIm%?Nk4rT%FOlb;EsY1aS9MMmr@fc8(dvEfF{f=V(^H#rcG9j)mnf>t*P0UPbiTK zH=rPDi^4TEN@Jt_V%rbg&i6kx4IETXkL0q`=Y6n%N>Sa@Dq0@ zlH5UFYL!vl-ke;81#NGM<&0#I-sZL4eAu%`eRhM<*?axJ_VeYbWH-Ext0mv0XWmh{ zgzcz<_DtU7Dn?SIAuUmq^95m0x&vNCqpG3%>|3HI&sdCy`EUD*nq zZ41N5`_&BYfEART>GAE&?uYqy{YnikhVl{ecT4nIkVo=Yg~U?H<1UGGwF4^Mt;}#? zwy@82$bXJh$1&QVq(|F*lb?%i=;7V7PKp8M5p~tV^e6eTR69lfV9QaaK<9Y052ke$ z6w{T?>?R5TfpZm$bvl8o$JVUx)7>Pal$zdfr}YqvK5wr6jCCi2=}9~J8Oly6>C$$K z%_h)a**XgMzOYU_dy?5M3g_k+*haF=e;_GKX6NSi z<~;6@S4C9pw@CXj&77K{&2jS^WO9zlkw%{80Y`vW-}sGrcvLEsD7|36r@ZS}B1Pyh{+i!-be;!~zW!z0QHK}2R_u)d?AJx2%1M(3$ zh;|TKI7(C)UVDy)$qi#V^{5WS_jq3YcLRkh^7^?W!_P?}DOE1?0E)5Nr%(Zk>gt2d z&Rjer_k2B;Sl$hXe->&mw<_|71W5M9h`@`kr_CC5_JUli1o@~<%;-pYAMCN`QnDq? zAR7zsk9(dTHp}DVw`JSOIU_mOD)*t(*I0IU>@tNAo~gpN7DF|*9Zvj!`-2C-Y`aqs z7~2i!4;Ai*|Lc_9J3cwdE zPW`t12q0Ew;6S}eCD^IJ5eq-gkuH3PESRkv&B3rvP3}DdE6r^}fLRnR#WoVGEH)!K z__5i)Ps0HQoFXw+uLc zvSq{Z-vx5^rVwSg4t9O92fH}N_V5zx z5EN;(4*cTwWN8Ltew6m*5@KYyVvDKlm7MZ-x>c-4MA0UH`ZQyBoAKuiD7+k2;YIg# zA9EUAm;O4w>MpUJQ~yL)>n0((pk4cydu-n3&o72ys&*?#xe)$ z{T4XJ)%GVpTEN0HgVJtJO{w^N#l`5&EMgR~n3djBg$B%$Vi+viLKf%%8|6)P%y77_ zJBhmCZM*)k?+%v*?r{fHUhqCO-(f={kgFeeM`zbEAh`Jpm6_JR;Lw*Pi=ltJlz$tH ztQp2tF(g|`LMteS?Y$+7RFu$MXt`}(Y4ICY5074t4kUahLdGEYeC7w2W zXI~_8MUaU5aP=y8WPN>g##jERrE~zNVYD^d36}8OW7B>!3OZqSjMoY9y(xtQ6<=5> zq{!D=x+Y@?(BMp$-e35oZ8u?b;)oIlg|>h!7qPMfF1Rj}mW49g$f&Ni?HXi^N{wF8@Xim)rghG(GNS&}frg3jxvsdl( z@GijscXP~BEKVe-o?OS>>^inL%P0-IC?)zzfb^C4yZoqMbQbWy#)*tq2VKcjH%Qrc zr9ox%K?<)Ly>dDffyc#=XKOHE`T1}y_;W;62E(%%cr(rWYB8ANc&?&}Kn9cNT{Nv* z!o`p@vjXVOUf~OPH2|W4n@|gmbNIBwqKtF7c^6A|G!|I24K`RyV+J9K_USSFs!uO2 z)CakJpgp99$q6D-+h&1C)WaLvk<}<6aHlM!|78n9GS(he90te zR@-Dji*gTi03Uy55!IG5KV=qfs(PI5(HW~CE8ywmrzmpN#~~$W(>`hbUUW9Of>! znOg})*`bU zxIWz#Dg{PrB2bc{oq7P!MW9UmustANBM0HOIQy9Dh^bRP$O$T;G1w5QXru-0kOGjJp189ZbNkGDS|nV3_pE zc8p)>ZYXbg8_ReOQQEYt>eZS=i?CCxTWx~?L-=BQGwD9s>Av^NH$z*nf{qF7Knubb zn>VY#Uu`~bns>`(H0fk^hVNJA9uU=Ol%m6{_zI)$wNRjJ(zUNvaVFZ=WIRhbA9^fxht#{LDG5&IUi{&$Z3+Fdx)T`fd=;w?8?Zyk77) z3g4&%xw`~Ef)y}gPbngq1O-LACO?7`5Dtw5FzWIoR-NxIaR1KZz`IZpZIJyXix>#8 zB=?!;(Gi`fEIAlK@ilC}FnQCn_^LMYGuI6q&7VuKkuWooehq_lI-y=wo#-he8*R0a zpU(PQ5Encz?$+Sc?f3Q+d56K{PkKhR?S-gd%7&#Gsv$xRj2}|vYKyDWQ(3CMz=L?k zm7MK0Q*DC+b*v4-KbRTPXtoXoA}(jcjON4_MG);{W%~Tt^mw*wQi&$`_Em5%jJvPK zO^KBZwfooUUU&(N6zpHJILj*}v*fOQcLrh*J{h9-G~8gSJtk+Se0?9tB+G0p6j~^m z=C*4MYF=_3z)@|49W(cKiU1h4=5RMm#H@O--T2Ie>~5=bRn7f0cy!bHdpmKBDi3oS zKj}8)caY_ge7m-LdwCmuQv!lv1-fE7OX*tx!jwL0UzF@cb;g8p&~*iyV^8?rXpp$R zN)`zf{Ize(32Lj+fpzD3Z|Sj<_c&xmW_hnYMHuc+jwd(Ghs{6T{IgUoLY>Ecp&lw@*$`@_}t zejvGjS&(vv*`uV!Q_Bz9S30$e+o7`bv9LlJ=k97#X{&RX_{A*Q@65X>J&$m*tC?OO zhMAx+<<-fL|2v}#cI&I6ktH0T(Ghl4R?WPMR%Ph-C(FqdF)CYuys8$lZS~Q-TPhBh z^{d#C`Jq!M#vR~=>O1k7xS3#u?1R3b zroy&k(pRD%epEihM%qP-Uo>5{pmor<2Gt-R#!+pF8;)1md(pk4n0Hfsh(xyL zZN(k0I?~lZ!_~4dM~0!Ss!1qvnonFwmxKNUC55>?qehY3Lz&Kb3i^@KN@s_-E-JiP z+bPpZopZ@rGw;^ZQq6fQLw|qrb5`SE^aVt8v3Dl_UX1lGV>SFPzL4_|*?#ro|0WPR zEC$z|Am+27_c)2MHTTivy?Q9*r|4eC*1a%K!e@OgIxBN>OL*jk_Pri1(govBC}sX;d={TD z5+dHjUvA?4+gnScb^B*z!CW3ka@)?h$-EpmvMAq7n2lT5LvjEqfZYtu-&+jId@tsW zUq9J5LVTW0{t&s-8{+c}%ts6POgIprLL}grsV?ro3HzQcoo_u7jQ0UmP{1S>RRX6i zPEa@UwY$SeE6@epSQHO~9loG$`0_kVr6tM8-Uma6`*Tg+XPC!`352&hS=!wa!zUid z{)W~oZ&#ZWJ32A*$a+L4qdsmUtg~?2TBO!;tyVjtCYOD> zrO4kbFV0z&(XCg(eEqFL<{}!8&5Yc6h1ngjFhN(@uWZ|QC%{d!xky;?e(&-EjusPS zoQNu_s|_e&!0m~>lX>RV$_q#+6JFb;IU@KtwAAKkj`hd#b@lMg$?`(kGwtLBh^1C~ zkHf09SMJy_a&L0*KD2g}5&5h$R^`xVQ)_1ST{jx$xi!WtA)#&#?x14OO!}4D_(ot z*Dk!@MU=n&jNXHkHPOQ&8xuWNI~R{N(PZ;JrFK^i&$s7qW6PkHhNN*rbSf&KxEYAO z{e|u}2iZ#|iAO-pIKbMsm{vP*>zk#*NgQZfiI{kVa1+7LVU^Bxm?x7hmwr@DZJP?Pzm!Xf2{`J2S?Huf+~{ z+bo&`mG9+9oY^j0d+e;lSr|0YW%`wL=e6;4M@Tx;Q%cv2t2rQo4u29lW@!!OP@2^@ zy(iN4hA@@!J-w9&+Ork2S3x(KVA8E_g5l3sTDwBZL2BbP0eP;Mw4B@tQ&%qs)0#IN z7-je#AZ4g$(qf)dMC){O1^c3gmBVkgcI+L$CVaIv$%lH6RBLV4#n2An$AjYLy^6IR zZdO{U8+w2AVKD8rxiQKTS#qlDa=Gb}XoC~Z3pyX7K7{Y9r~+om4k4j8t= z3vq?(bqpcN{UDR}hsuBN*H@a8c`MytYt z62WnCwn?Wdwo=Q!u;wO#zAXdG#d8)Q`X3j2+u-Iv8WA!$dQedbV6@937-a`yd(pnJ z&D^2k_M1lwqyD)NJW*pV*&DVtO?A)^LHji9`r+h%h`bKgXP<% zNHHlpg5vjK*Uo5w6{XSGMTEHKu&^dFHX)x-vy#j8#Mj4MSi@KP!6B$JYjB8fZrCPI zZJQ*iexq~&D%gT)$Y0^b)8WB06@PLC(Ot`qd^T9xg};SQL?BrE&5$C0vw3;09v^$V z-Cz6*KR+@Z8eFMtJT(%2Laxu+(pYMQeY8{rHYWe$Lg5Sx0viIrH3}4Cq#F~KsX+@H`f815 z{nlERhDXD2V)e}n7uLwb+26Clyge&#VT6#I5Yr6z(H>chCb-?uL&bTBIXF436E%HrJ!zUJtloNajjq6!e^=Be z?sVMhQ+4VJtHyoYO0NzW(x+RHescNd#6nPTj4l=X#5g`gnWJsxs<)j`;j{vV&1fw| z!^qXA6CRv*rZ1DF@@bj+b#_UH$QX3vsmSR-hJ*TO6g-++5mN3#)k4Rjwm4<0yg};; zzFwW~fjen95a!_BFE z#OC+pG(yAqFvO&II~EUJ+1MRCP>wETxBek52V3Jf!Jn~0aU9^!R<}2sMQ8tHaeV*` zR`X}?L4BJ`XECWMP^0{}7eg!HxTU!Cr-z&C)46S^mP~<~34HvS);k1YDs!O*@~aJ3 zVV6S)(u47_UTquHRro6-SIDEefj!)l)(J zUvcU7hzeOzAQ`q9F0^fNzwaYlhY^A8!*}fP#N4)MaAsv*d2N*MTpFNbPv;Z0CO!5m zz=)AVVuy{mbu5G6;F)rC&?NV@vAMMVHg}7Xw`3QEC+W^WN+G1xYZe4zv^Eu|hkQ0l zQ4EM~c^QRyC({9}zC>5{>z!Y3c76MC)ZlgOEsk>UDeB@V_^4(`ki`&OB z)TswUIOo$4K9A3aLptn8CS^Q;dKd9`bwoMAt_CIMCn=yJoo`qhC@;ljB0)QhkbW`o zRdw-RR(SYy3jwTzKmuBAOVMnhwGN=3opjJXqAw&#oml6$aI7#_Fq#e!f%xmw`m@%I zz1j4L0D~UKb&o5l-l3AAHalW;-$_b=eW?V=JdZoX)n+03j~y2tt|gQcUUuS@b{XMc z^s184Wf|f{KF9}Eq#lN!30wU_yJg$1GfAOX1x=~=!Gx4Y|LO}bh3*!=m4|Hxo|@9j z_&v9493%Vbz`Z+FV}_68afa0O2fJUi*r`!ynYled_FS4jg@t;)Y)6xW5d)c)w9b@M zKK%r@lw9;~+RwOD*BJeqcPSf!I0=VlhT63iU9@(2m-A%eA} zvPBEJJ6Xvnju<;62mY5J>u<}t8G#|k8Dd^okC=5Pb z)*^e53__U&G3(;cj*0IZrs+0LltNW7tv4sJ!yL&afcyBOTbc0_e_tI<45q^5@)%$} zN$r&ZIZs9(6YQw@#l7hbY{|UJdnBWm7wz?N4drQ;wtpWD5fY<}DM{$IdiyKx0j?Wo zt2V%BCK^5rnf`36O8&!m&+9=jzxq*l(SewTmzAii_C~9GoC@~p3JeJ+HeSTyNA8Z- z8on+dK{2!_82YQQqw2tY{kxrTU~kV*0Pac&%6G;zJnBksVzuq93Q(XcmMp<0OU$A2eiF0eJ3{$Oj9 zzcTszBfh5A1gM)Ve4@!Rf-`Qhw400K2o2$$=J`_{E)NOk)LkvQ-_~cKw#ZZfSWe$} zCclGKH0lCx75^Q>rG7`P;`7*Ma1kufZIfau{6JZ=)J?CebC+ZkBNFTu2iWz#{{Kg` zk0r5dhhRv^b{f?69R-|f@7f|C3@2|Bc(C960wdjy%#W{ycm6^(-r$TKM`qHAYXEJjlsxpMig^g9;|hjHT5p44k-e99&S)!xNJVyMxGz@=8_Z*$Bk8 zL-!2l0pxrcM%Y}5l))rc^=z6OQaRp6kp$EAv1|g*w%$G-`8&2%oh;o^DZ^6aUuj z&8CQA6!Netr?6vgJad_JgAoofEC1<$$l@Iv>RwkenXz%kJxrpqC~1-?P@dv*qV1=P zzC5caApqLGLGJ3F{h`sV>ZL+np_GhaO_ctfYTQ8hJ zVfTyflOfpDRhe=piVJo@Mzvz+lqduJr?^W)f-C>NXdYlc_Gb2AZ)K}w=&hat4@v1; z1K|hS(v(>?aY^{~f`{Wrba2tdU_g55a`rqQkkI6baM*Zze5#x{{*-^PYX&Q|@3P7I z*ndE_VKt$*?^EDi=`G<2;Za)1a?O@=SF$CmYm)>Zr6Ra6V&^}ncPhdp`P;ZBg9J!k zlmpX$2P4FOxeUG5ZE^@Sgt)(Uiahzk+kJ#LAN5IO@p`b`b&8`jWPG0j2PUv)f1vr1 zyvDrir3bXbJP&ewC2wd-bG)KS`V@)2C-nT5*&yEB^fArzq=LX&13-&rHGNMNq*7sY z)*qHZS;VvlIW4m$PtC;JKxR}yesyS{wiQfw*O0IFMZv+$s_2z&Sldo{{T=!+Kf{p^ zSAbQ3p|Uq-QFK)>UyQGkvdE12v5v7UJ6?3w&iAkF&T2yIi&y4+9jl0h_nL-IGJD)< z(NgV<@@$9No?da&SCm{CEkY+1xddea_PeWGuH-TPP`?I6*VPjI z^__3F z)OoiyHBo5swxJ{hRVeQ|CUOM%zuaWA0+&_=CMpoBE5KO)@_Gp|Z1fNa$dW_G0nbAa zIgH=~ff=5NtywKnwUet=?*n<>2?yqn$}kIXpW3A6JGmE{DWOIoi$>wNgfcoIlI7o_ z&-AxRnYmFMW+lcxn;x%UVec19b2?(uQ&^+Dwd3Hn!jjckG}7>nkpya7oH@S=*izDvXtpGyQU**sz`ZNo6($c zrwx!^j(eORl0?=Zh1}f#{C0VzIMHZ)cr&7`yYB5jM5%y&Xx^@Gqf(umKR3bZSgd8N z4}Fz-OabQX42ta(lQwEY^gjW)h)(h1){AxAK9T zT2t)P>N#Oo9o0xyg*#OU2l=RYzn%x$PhN1Is9^Y6^_ogNH)mQx@rv^{rlt^aSZY|r zaf?iu^8%n~oSd8!UpP9WPR$JkIJ6DOcM5BAas!PHcC?)O5qKQP8*STD2*}h6EZ>DI z0mK|lA@UJo@q%u3PAr2!IwP=Y-6Q{@`hG2bf*~yC-X&_QjD6MZReCi(B`Mvj*m^&HytJf>{E~eeep{K}RRr$+*{U7VZgM$4rR+etRC5ra#{BIp9R~tIG`&%k+jd zBy~1U)ET7OvL}%L@76&{4jW1+aNV1;%hmb%b@*XdWmu`1pbVWXgerW}Y_011NRn_Z zlBrbb_=*yH)3yDPuQO^=`A`28C6FFU4^n(dh922p>+1_0MbLd023>rX%J_-0!Ye$w? z+zoA&V@tKL3oQh7z?QcaL9#ocG6VmG0rck;GJU-{*DpED@5=h5^na~Pr~v?7J6xy2 zi)r-93WN38KNl4NyOL5IqZmwjNt)B<=HXcsPxB$9ArQl><99 zY*cvkRgI8-4GFfMbknte{OQo3svccHe7=GU68bAq#RiAf|q4#HE9Tx{|; z65U(*?T{;1)L!z39d3}xar8#Hsxq3}_1VpeIS31&bh9nxgqh!}s5l^;ioJ~~AUZc{ z8_|k&`s#$7RK)~F1u%cC^+ym$$7V4lO|K#O46V^j7P39%Ug@B3nE@oh4-!vmcURRk@7)yT3B-0QHNJx z4e=G(&a0z$WS%OAETwMZSA%TlNs?1a9 zAJuN7?MK`()vl-&TwLZV3Nmb6!-LKy=(p22;&a~nD>JP2w|*8i!?47ViI=HF4K79$ zhV{0WQ#yNwyLe?nA6&ISwM-3j&N+xDX3Or2*XGE?J5}a0 zhToQOh>NFWsbClkJYL@1n0{+NJnYGMJ0fzI#XPE{-?SP@SNX{GQ*ZDGv2a6i>Du-LXyNa{Q9;#JUb4Z4_!m1zbwC6uNSHaLLlD-?7 zk!1YLOD|rO&|5tVid0 z$F#)D+m7^Notk8Kn!Re3>oKsyrK2HpOV*Q|T%y6vP|=`Hs|0x1sBjFG30?(GP!-}krH6G(~Grg8*XR* z%)I!c#V#$uA;E(*w7WQYOLXkwqAG+=qygnuts&_d@j%AVYkP56oz{MH&Bn}UzE*%W zDpzapczWw!#ZN>Ah(o#9+Ar}?#PsVaMPv}$m{sv;)M_zYcQ`uFdH^Rneo`s>etlXB z-|y3uA$~O!d(&OM zsl#CfgqhLbC=RZrZshuPG&DOiRvodSMqHQ;+E}S2A&h49LkY8uQFEa{zcN|ZOdg7V z73nlBWt*X>RiMwMED^_Kzq}!nGRW`l)%v{acpqhNk({r2?sLLhqrWUwauK3LWSn-r5zzYKb~c}uaZ(^4T)lP! zRE;e|333$TH^Ue@a6|wBi{n;$3VbkPBR438L`wHXcI?A60(-1%zRl73NHLw2`@n%N z=Fnipt=+H7)Q{Df34LD})!{k6_={8D8X zw{N0QT;7~-LP3Lmb9oXiP9!%z`&F!K6d9hQjaCJes5}vCnqnUb;`Q`@HG($4m)fVa z{n9-7G2Q_wHK}lP5!s6ezL}LVSnMTVM#8UoQXuA4w%t0`imiB3B2^lJhkgaIXgpX( z@xGkJw7Dd(=fi!f;pPVs?VG_D5iGy))R>pCl$k|hsjdV6Nj5<)wQN0u2*QW_)DBfv zZg0;=vQtzao|NKAyvnd6Auc5gV2)b1t&qCN@5mYkMqL(+%i@Y^^9}N3Ad|p+@ z?23TB8!tLq(+LPMjC!|dL$*u0>pBvJwcvZnq)hkr?K0xBvOda!wbaU}#|v0~8ATH4 zS!I#6*PEL&;uC6Mw6CQ8j6=1Xmskb`Ait=82Pm?7SJ!WUi_sXy@@~?7xZ9n7_g$Li zgC-871s(5H4WQC)(V_utKzRw&;vW+?wyE3p5FSL{;|Jo?*xu_mx9_slnXO)tNO}9N z+FsLYdl4{>(Fb>5pBmBV>AX#3-;tJ;ucOj%@<*oPk%G=r)I!`+t9x#2E)~V7m|ZGy zA(|K8BqxlYz(jSA#!|$L=9MmQ)FM2ps~WgGq`pQLes%z+7ez$dVTN`MD1U3 zm{NH~Q5zJS*Dm&1tJz%`YI(#5ieS7r7;es}pKhRl{o=p@Y|F<=Z%9huDZ?A#pG!~d zwU11D;7{_e9^l`aTu%P#V3l4})4gG;Vp*>a>_V zr*-68Yt+8qAH6*a>fF!v>2h;ZOfe`X#fY-!-?28W`}3X-PC%!%zb$WQF8PoT_y%`f6n>3X&{rmOqc>x&Y<^yLE1(OXIWAc4=Q9I~*_ z2(=z#EtFr3e9f^$lKCiN)MlV?))pgepGXaGhZh(0L%QW)U)LF{JHexyMa|}}o?T)m z?i{S!u#ado&l88ELm!9mF_en%s&eG(!?V6Dh^bjv?Im0CXPaMaEA!F3Y2J-|eC@S? zHf}ex^uS{8`dxBd^kxq&rJ2$0)Cit)2%eVPaI}=IlaC675fr{oyX^z&L_vd~aO|-q z4QKGMacxP}sPys0+g91+>6Q3?bco8Y$t~adbl!fDKh?LDAXC3{as%ly6EKrq{jnMFVTudk`FQr@>#p!6)i zxz&XhoGP0T=5Y^ptTjQkxiYD5jqb&DW*}o;%fh;O#o`3nq9K~f!;2J|TYp)`)AI-U zlFuJNlIUlrlcqa8rE?7KiOIPj3E#Q?2` z^*w#*AQzWln~SUSPAbzL_>?K88Ag=LwaJ0q)>?eA`-*SUtqtZhvnoGK5&b&@9{ytj1m z9fCo&NuVEKL(v&9h?ZL3p)`wMLJg?!#ZFan6X2W7PwkSinO%Q|omHN4R^jqPm{?ah zTQCZSNHGIOvbb%7`?=!ln=*^;9KKQI4tna9;S;{{EgT=hWS7j-e~_x+Nj_jNCfLLs zKNSkxs-zlGJ!kFb%(|-1yY?On8IaU10L`+h;=I;GCz@bYs;k16LZo`YXFl6vtRNoq zQV;cK-RT+lL}gt~LvWUM2XT^C_&4D-Hqq^hvJ!8XHLcE;z_(=F$t;6@J~An1{p!`B zC?2Zd8qPs~wNwL4i{YjH1nrFFt`3VR8O5w8GA&4~UyE4R*Oqu?7}Q;WqG@16fUHW51J z`;m;to(j5HNRu8>KQw(oYJ-nFiJ^SjXFDVvWvOP}7iNGK0n$xu4Vz^r;2d0Et$qPjvw0f8Y?(etPc8-DqD=+oWS1Gzl;9QpWk zsF+l-ulBWRkvs*QpUW7TtHMV$^4neAu6cr0A<@}pdU%vKml=pH&2ukf5DKb9mV7;( zJi>8q;kZ#HJa;kOi3(zKe3}y?*-tSab*x*Zj?HO(wV{*0ijMDmM{ zf(u$CyD7OROJQ4X(J`(mjIhON!4`d2a57PLBbD7FGeiFd$1%Gl?EKWwe%us-X zX}zU(+r`_)eUMyP7Q(>#DC+g@=scYPC*6#d$;J*S15<=XW6#rY&C%;~0$JeOLd7>! zQ1G3nf7X|&EVzycUtbJMin;~|NpET^)VtcBo(W4wlwaSRt*;ic6z$tnF9+aa!;$VH zOl%JB-S^#9q)l@K)}}|?ypVG~!9dbze4YLow_hTcq>7E1JYo@L-W_+d@K$r z^8KD)_Xg?1j3TqVH;DdDy+N31GeK6j-^Ts52|ioDv8-|b7Qb;cQy!SgglTv94e2iY zhV8{Za!>vR*_)lC8Uw~rH&;cL`OFh6y|O0>p+YFR5Mgh$P1AfYS9+C9{a%Qo?HYz^ zh{xWbM%rJ_ANx_k!1NJ3!nm2kXL&{@kf~wnIblne z&j+CK;EJ>-m#Yv*pIWD{@NE#ps#8P~&T+QY!E(Hl@;caId+LE@t zdz-;7Vb7K4=2nNRETBlqZOAlTpG7JWl?9EG)Si=AMdTn)rDx-=*OpZDw#ox*U(pnS zuwt|j+lo67c~$@?YIUYw3g985ucT5vOH$CogUxC#Mb*M}_AY+2wd=Q2z(Wd1fBSlK z<<%?`K#~p|$IJHn2p zau04}w`kfz+5-Z7TYiJ3Mp&jAlX`U$Y$gw{pQBUNBQ4stwKHGmG1QoJ%H}HDaabKe zggB;LN|??%l(Wrc>WOEEFK-d4D(k+6aw6cp6$jHg$7@z}mu{`LDP#qzhIEcP!5)YU zTi>cO)2X_`uWV`eNdM4+GUX8s>E69PB+wT|K*hb)=H|QvsfO9Rb74_{g&oxm#tqUL zGjNQlQ*mrlhvwd%)?C8d&3PP7`+9j493Uv=7bkD(kqo>nG7UJyqUL9Hrt<}-t(*|V z;QGyIA$rlOv!<$9)zT<7Z)$B_-|l91FS?V8bI`pcl_m#^5M>!-A<6J|84?7hYc|Gs zOvz7wQ{)NmSdlJ7RWH{Rq73sreY?D_dc)%w2GQGF!Ka};ISjMay~3u;Q!`s%tWSZP z%nv(L57U9KN{4maVDXRi42#n$8tdtU_|W;%h42NeAv?u3IDTVn4@6tCGCE z#kXm)S$wYegF*RZ1m(lkEl{2>Kihg)DXHD40j5`+w=hT5q*PDdt|PuIMt=BNCnApL zf0`H|NLcVEEhv0_xiV$<(zu##1nX;xQ1A!I&bMIL<>R5W4ToAE0M^Z$LIE(Nh|X4r7ggenAk**!SV0ci`E`v#J+#Mbc`;Q)=N-b1 zP?Op5esHjHlulMIcF>-cL)@+o-x80hfY2)IsXgCdr0?zaKaU`VcZ44Q0cITOd@?~y zIkFOx?;^KT+29(7iCpv|e1;)HUurF1a8`>Fw3kp>qBbH=*mXv`<`Zm>V57BHP6FW} zZRuNdv86Y5$5!rJXTa^gxpIV z{4$v@JYUizPlpDNrTvhUp6|D00Bvrg#KIs_@0gRxgO7F|{QR5cFZj!Oe@dsvH$`d; zpGAIJ|8D8QmhRo=Vl$b2v@_$k{~CYKDLMiTx;=xBw$q(||Ewh+O~z;QR#rZfx-+!p zvhDH^nglaFAR z5+3VQ`W2kLWdzK%xJCFeRd587_=PAXw`P#ohH9@*-@cP2oVSqbomLv9tx)%g+^+Am z)SDR^{J4iZUXR8?)zg0R>Ff3Dq1oGQ{)I{Vs}Clh{^I5}lo65vhF_gdKK+?j@G$sz zbV`Q?WI^8TeDa(G>SoEx50lyCA&Fc{=E?%CjXSLX8)HUNP5uBhreNUJ9kn3PF1*NOB4u#H289j^E$E@QtVKNcdZF3PeQ`m-O~ zDXC(mt+FaH+E)mG>n|&rHK7dTGCN0}*?>*RvrOp6Kn*9A6h%;6pgl@w%T)c!L}s%E z#WVwf;H4@^W~)rD#xrWi=P7Se!`EgO-f~AhKVtp7JVg1bu$33hj==)WRJB%l{l0j_ zNDnv=9zcEc8#>Vve~>n;YxR=Q;kA0jY65F;{3@^1Tgw#n5rFH zNkgUh)lY+cP$)EymGv+}g{{k%o^@c;_VJEC??{mNSX|`s#V1;{g0y|Cfc1;s)~)TQ z=?QxIl50=Oj-dPwoj^_c(tP|fFwq^TehX9imiP}?10A*y3Z~F@@dF!b5D#sM6jX69 z&cy!YXmUNTm^uOJ1ZLY@K^E1OL8=nRT7^-MRq(5Fl6oN}|LX#@cDz3uW-L`j#nY$>#S_^fcW<;SjIE(P1Tuys z1>VmhWZzw{!QP97WAG)xnXPrP0>uKdQ(fM&O3nA1-wH*Fr<7*Q>!rH2txzyT3Vokd zKMuJPZ)dh56~Hc+wlf2zamum?*ZziuH>{miSjM(QNyGpiYi&Pf*Bqp7M&bhh+T_QP zOm-+rzKVw)2f9pgghvWOWdB0lW@8g9!ce}d9g1O7 zPKonKUNWpO3m(&;c-6Vp=^IEpt*=0SnR8K0iVZt5u`El^G`XYR*iY1#i(@5L8hG%n ze@!&-?ln*dyUZ&8^_vTJ1xeH|mv7YzCYu9HTV0itGQNsgcyFB_QLbJfvgqz4rswf0 zDukA$I29CR?JIU~2fIzGO@HyPx|Zbcd;gMxlp9S&SamT0l21c`_3EljjL}C`Qy_-R zxnIb>MpiS=<$)lK1Rso@PcR7KQxJzJ9@;ZlxcaSIODj}=xBKLo$8TU+e}ozS|5Nrh zF_LB1onO4Kh>WaicJ@bB2BSNAN|pu$#u(WvFHGBzL~2M`Bt>{^i54t-qB5g0vnw;B zm>*T01;da81BMMl1Hl_=Gw{k70+a@Z(HaOILm1Emwe`ZF0B<#mSqwLZ_x}CQx$oX{ zqpF(}Kz3z(y?5We=bn2${^x&qy+El|_+SBvt*X96nk1t0qh(JJzFMC;N>%2tA7d|l zNkR=_13GpH)nVlfO29l_pI>hvo-ER7Iemg4;b(xi^R$nLg&G{$zFPKA30j<>p3jtu zEt4iMqZ+jUF<_LV@=SGrJ1Cf)ACeZUFsm&vzSFgtNyDBMQga|`x8lH;B>_L$8s^SL zU(M1+BW{7RkwC2{BsWWp)e#Ex+_UpI=KK2)qme(#LFfiFWw*g{(xyG?Uu_6%7K2k0 zmTt_1rGVECV(`QisnDH;`S+v@%mc8npO#g!TTKPleoVk%F%9z$Ad*>5)dPO2NE;GU z02Or=LVCpa$`){i!$JVEP#JLyc=};)8*uUyH2b(Md;FPj3CC|oI5`p9bG}1i7Bp^) zx1H35WN4NqsTOs?$&jMM$saer(R>?AO&KlC8}S_FiTL6V7SeYI1AtlOQ*)ANE>Ndv zWXsO?Bo3yXnHxmG*;@E!oV~wGTc&Kta9mBV8?o7^gs)YNg%dNLi$oH2Fc8T|nRTER zK@>RLb)Q9;~;Qo{r3;LABDx0w%&Co=u9+pFmHY|rv z;oy*G5RO~ZRcc0IIM}SG2UknB2oJUl<>@#%{OSre%mgK!?tf_0QQAw|Q32N_vV)o=-*OT8WWOdj>8^l@;a452gjJVUA` z4x`<_hnlsMSsOrq&=pLr0)5g-AR1S6eNsfjbk)F~HM5G0-XQqK30tq6Qa;+dC*))D z6L`*x5ZW`lX?}!NsRo}$U4oW-qy)O+r!l@gyi7=X8>b27Ty~KxUYk(sJQDyKW>&3m zH{v?Uf9)Gw9~x6U!3?@Ph16>Rj1%OYGe$D!(x}#^qXf>QbWzyJ0}ae@epDOO%mBR0 zJ*KGw2u~|E>EU+6GsYk@?6cP=Qt`v)EJTvAuJZN$Xp4_iTWEC>%fgIlqvj0>kpky; zxWquo-IR`B(NgH2QY({xA~~pk5&`A?<=uJp7&j;Nve_wAHp<=lv^-Ff?h}L=vk+W@ z7ec(LyXX|oU_XK%(ZYPJXr>#KL_B*vNw#4c-?CO?=-4dC)r_EpPTHDkpweMg*c^Y8 zNbBU^p8VLT-g7Ak=l@{uL*^}__qA#kb(m?LToM!5-A}k24Dn;~=Y_z>bYhj4saJW6 z4%~gxjx}Jnpi9`{WgWqnUdIz;)Fn1O6r+G)JSj!`vpb5sMwOPVZL(}-v)ftGy`sVj z(k0K?5U3czN8IwyuS%gcd|Xz zrXj?aw~5=wU@6w;rzB6#)w3>tXle|vu>iU3h@ylgFQ4pp;RCW23Xd5~k5Z>Ij7q%t z9G2(6&AuOL9y2*P7nrtWS(>p?j(E2L-Ojy9%KQ0Z-}FFa^z z61G%Vn+X>%)s&!B7K$BkRFFfsmFQEMmAbtrY4AVTlO7H(r6cZZS0No+;PyJC4kYJ6 zcl31N4&wEuR^ObIjQt@=KqmN*t^N}_I1V_m)@T7! zeV8o)+jvN08N@!hf1>?eyMy-67+5%AkHSpLoG%@^G`x$IIN5pCc^BAvBb7u2(17rw zdl6#k^gp<0I9rhfGA5@4zD$_ho_@TVA%R3mpxf@~{+3S-DyhI-k--^0$?x?y)pWEs ztg56@l@i_h)PrWj)ECH}6(jfVlQ;g%L2<;1a*Aywep560ej@=P)`L~!3S67@ZlXvwUm`$c7jKc-j4XqNLSXT3it z;eWEHcem^{Ax@PIm3hrJ2EfORjc2d9b$XY;Q?e$Q$y58!rsi%H*5fWqG zeN}pg2t!!U4j(2)LSR3MpB|r~x`4Xs!5($e56PlV`{mJx-pRN9aB4}E4;7pYD3Re= z@WcFUlUS%{2;RC9PZX4>#d6tC?n#=$$4J9}?qhJl6s!#PJe2IGV+ElqEa8NKjCVa5 z*7+Q3r^=T3rgDEObzeNhi|O^)6I8K1Ai!` zZLAEBstTD=yL;tPQR)91tExR)Wh%-ej}hZ{t%im<5nV%;EQ%X^{iT3h!S>hNNVkUf zLh>!FTYntE)BTkl^kYe$X`{jO#u1NlyTQP;!+whKhgz;Wp7h!wWzwavVTkZ##J&h) z^v(m-VQj%;#j#Yc=-yYwo;k?km#5_xc2M`*Cna8qsppf(GAhP5Xa?mme(6RI?#cRo zsg3=(?kbZ(wh-gMhd!Fm7KT}QdMwW?ZS*QH<;8gk3`{*2HUkK9XZB(`z?d;A6xsY5 zi*U}rVLHuUNngZ3I^iN#b0C{mMq)8+0!>7&RgGQNJxt;h#++c4u*HKg++A`oL=%SE zfDpC%wD~GXXC+sCOwzPeIFN4~U(4#?I}70JDVik(creU&qFH+ydyL-rZm)3skJSqk zCpwFY_nDT1jitW()H{usL9mvC91>O1{>$Mkt4=$pdaD*sDhbBCQR|9WiKv=v!H-f3 z)I`Ikw=wAV#L}UXp=L^DiT+r@k8z#V0akFhnbH8%^C(Uidk4KX*viNFs6)Jn=N|yf~toi zSmqdZC30UW+d-nwFG~b2gs*y0v}QlIp5kf>u-a8}?@{dV6Z(6GR}}*`hfCVFk7NpP zY8UR^MOKGS?y*XioyP~{eg{u4|V z$78HI?MRzbGJ$eKAylLjJ(n!e~x1_{dQ zvC&^}(*r%XXMOA_e#)0{> zLQz7Ij(DR5EM)Pa@}2mz9K)QQEKD$F!B0BusnIQ3)NXUTxz9Sbt-jpdBkyJ(B5~OQ3{GYH32)0b{qf|l z0RhN6){!HD>=4l;jFZ1^{_Ey{Sag_;FU%mZ{o~nSMX(Ps%u5(Jp>xJr!YvZt$^=$2 z{j(w;U3RPX`4JVg;V{w3@MvX3i5A7DL@ZUHwTdVK^ckZGl3nlwhMuvnf*Q52KA}bt z?}A?vXi)x!zx%91!Z|JG$PDo6N`Xe6xM7u7uY#3O1QzEphzbJ|rJ5p9X?IG-B56 zo%4p;T~;2LgQYPJm@s++g?t3$MjbXp`1ep%hi{Nr3zrEX#njv1cmwV@MM+A5+ARUg zyNgoB)aA~-mO7FksAT7e2JG@#_4>#=`%-F2gl!kj+&pR8kKgN2o%8M+zxE#|--sTP zP5aU)>p?!AywkUrf>@p$>%SVax{?1%^JBVLHBpW#^I7^5%LvTHV`Pq>rgaQF*_8NUoMTV z>}ciczvCFy}w`*nJkrF8NmCNO5AWXz9Z8z#kBTWp-OsTnB?@_FN! zY^okmccd-mG3l<1qXeE6*BhO1robj3%ar?g#d z#BfCafKkda30U1hz%GTvQEPR@R&|TVf<-!TKsScuF`RWls&NX#AQ@PRe^r3%iq2QI z_}GKxu*yaHgH-h;m3h~LRIFeDV^qUfK%=NUz1|iSnE6@oX=zIUr&>n%i(RrZ(wsNi z!pCHEu9CSYM-=F*Ija(}RFn-exJ;LQgMPq6`P`w+oG%|x@C)F=CAcQiiXGDBwq`eb z0QbpH2V*bmr(|g3=7(U$_q*K7QJOqps(P6bXFKSGL-|Uv5t?YiO9ep7Nw*v-UQ^pM zp55pN<-4X_eu()JcrSISM#W&ZvahKDY`=9m)Hbq8@Evd&=n!v;V+W3R6|~ezmQr zc}9j54~sE*m$w#)hzcP4FE9(x z-RS_(P&OOtH1O)axw)0Qwbb9ger3QK96C&Mh*QkRGugnIt9;yQbtCzEk}w!$xCVi6 z@V)_25|19UO)A55h-F3OT%!c34vvzWsO!5Nj559ifBaGJ9CDDuh+rqQCNQ2%(^Huz zYM3qxzH<8J1FFjWRN~QjB0~t5~Y+**%zW7R%klkF%8zBMmbPMGl^cwt0vi>CgdF?4ky?f1<`K5isemTB4 zxxl@7F#cAW-!A31u;2TiBmFcdur7iwmw*3dM?2VL@`=8>6#N;>0kCD6V}Hr2+_@bIfQ8hg#5ry&B=cc$Z*!Y(>!Xv)qES%F@Xmd z$)M+_3YYK(lVJiZZ|})H$s^`Ybz2)Ij4G4#CFa-T8Ek^|7MtK9H~RMy-nqIJ4s8H& znkx!H4~EKLM>_Y0v7TZP@}oLCcQ?$ zc{J>CM!n1QgnFap)Dts#5eAXd01O<@j>F0KxPuH1(_O=!R1^AfwkZ%`goP+0=+2*l63tnki7yFnf2u?Cs zC_1zC#%HD4WU8u+cl8(18m+cXUcwtn@S1o9KV~ZH!k@hen4Np%X89lq_TIJ}Iv&D{r={Npv)C*mf)tl&tGEc)&$M@ zcgNH9@p3<%yQ+G5Jj~OO(q-5=NtPF4A?9(~{a5)tGL<);sRThgesQ@ksvF-ZWlg_e z8-;KAjoBvLI2)&#Hoijg5i=>VJj#Je^kT;siKis!-H^y~B}u_0g_~dz=z?8V%EX;L zBfN}SR1|m3Bnn=Z)9B4Hv^;>e5cPF-zEIETZIQDG0}$|&rMN+C~$TiVMy@IESyh$2247fixQL(k0R?TIr>@ko+?CPjo6r&n5wm{V4C8_X_uVMU% zFV$PR*j;YGq`!>mqNDd!#rAzF={yFgX7qkDkuR@G}L z%y^0G4Qv>9#Rl^5@Ajr-h&1{mG5{!lsQZIvwDWbRG>!%!aRQ-?3OB3v&~sQ81WzQ- zg&6g?3wK%tt%n=^t*yg5PLv;T%;s@F^XkZA$hmsR)9 zV(Dx7Gh%am85Zq05F=(NI5~i$_azc~eX0s`imWY)TBJ^{9X=Z8$I;~PPW}~Owz4`q z>wc`)<2IeChh&%q4gy||%4gNTs()O8Fqq7;kSRQz!oe9G;1x{YT27yAKhYje0l*l- znvM*L=2X~*s^f!|5sb;m5$=b{tTKqF&nt|NJc36%5*vPtO~V%mx%nw;_qM%L3v=iv zXr@Vf_iVknJYQ?wddl56AxvaG>h*43SfgY;Y-ZH!D+aMWrWsD2E3^9GX1a(<7ga^c zskKB(#w&cW!Q}N#anG*s~ee~nWlgW1{e@P&~vm80cG5G}p@b?y+fvj?4 z@fhzqa&n?MQ@3HoXY518XWI6y_>w**gFRaHB?A1jeBU2T{&MnvrEe)rWS25_LCd;- z2D6EOjX65-CM5i2oX~RHsXs8{69V5euVk}~z0bC|WP3@8zStYMJ%Z`JuO%vnz!|M^mVBJ;j7``JJi7K2Nz zXh8XoNH{3!`Gn{+WPW+Wm=YJw zZ6^Y_+MJ^df`L39oQo)EBm*@*khXlw(D?MZQ63%T*!&4CgrqJXG66^a&f;OYTUk$6 z2=(K{S3})zm+}ZQ_wnSa=o(uO!kPrPosx|1<%V5e*^w5C9!*ecm;|+KU+o^raXb)0 zLLWtQN;*g0IDD8X9x+2yOWoeYuQ!^`#{*nP<6YoUi*isxMz-YhFJeEJVnHjOX*V%<}w3y)VqqiSH@>o_O*eS+9$X~-`)X`k#0DD z0^EU9`y1;g2`_d!dC`13GK7%ld>{On1WSOSSO{(b(}6Z4R=S-v4Bf}WEPd`7L&Pl9 zmu##oq#xLl(nNwfpq$OCH02#@jio|H_s>)z@XFWppj04=P~{%1za8~ZvXKCwVHLrK+jCkEg$jJf?#)W{ z+a=wxasR<`$bOU^TRphHAn>VAcnYf}urI3VxD;_x5RwC+y&1Vn3!wSwJ=_Sz&X8>e z?L92vVKT8bRdQZ|5IdEv5JZ3RZa=f1^)nNhC2VN84I~?~p7H#Jf%o7_%eCbWEVq`L zmLozQwz{uo1C?3w2N3yD-ZEpAc%J@@lQdZZ@b5fTs4QioiPw*i(`xU4jb&D zeJ4$=qz~PZ#kt#FV1Gj0a~vMQGCzla!&nU(t(IJuX%WblQrlJEWwld^nMpl?dW(;; zt7>IqMT%2~hiUy$izK=_XODOD2S;pC@@tX>)_;&wWw=QKDh88upUYGZ1!?E*f7#a$ zCogOIGV9PL+=seY@tVT|*hCSriQs{~lan-YNPG|eeBd5DKT|e?{0T;cpSUo@R%_H1xH<`l< zq+8A^x}PpEL>T1`!9L1Dy7Jd?7x_@#(2qk z*Ym^xpIL3ob&|@ZI|+uey^@o*xh5NHiQk*M=g+s-bZo#Kxjh4@&HUT%xESz&8x&93YzZ?tyN{=*`uz4HT-T zI_Nrjh3>yg%~Bb_B}tP0^p3cZenP=)+Q+MTRyr6%ptm`FiP5^U(7)2}30FMk)Kce; z0lKZu;<*R5zw-BR$Tk4b}J-8Im0tQppjsZ0TX5kKp=j$uKK96{Ne_>%= zoDIQrSa-Ss<)PcfX(ARS{n5#?D%RFwhDxB$?jgi^K{E$C%m4aG@-LDzmz z1?Ba~2W@`UooHu7yE#~tA{r;1_Zgk&v~(j@(bC6@!OS-{w9h2W!SQL+nbMuzW+b4S zJ)cf~to9JBR9av2m>*W{KVNSSTKrtO)=!yVNR@eS{T8kq0&o_!V zY3BKhRyLZp-KM1eCU^pTYc)MhJ~<1*Z@hdTWyZ4NzCSQ4bWV0-3>J{(nEXP&dktDj zqUkzr24#ypbN|_fgJVN-;DIL3^rRhkBd27 zo4xUo%8MHPmj4n7r0}f!;_!4GQY4hvq^O8T71S@A=TCd`;pn^i^$*yvv_r!(EAnA# z&M*Uw*WrEX#+=zck zn-%0cV<5138(!fPN{+O@@(P?WJJw(2 zSWXH___E3o;M-%**b*=jZyb;7O{0=>up@Xn8<3>l0hC%!O^O+5UxdqHTv|Al`u4)3 z?DTkYiu##C{t~692w`d>jWKpVo@ZI*AIK*Shpsu*6 zooSDqL{Lh|;8)J|@cfPdQ#OnC@Pt^{!{LD_R34OJv#K$i(BE@-2D^el)alC-hpt*+ zkM{701V2>4J@cQotGRwKM&8d`LR3dgaW;-5s1}lcdB(0WE8;>`R>-W$P+w6n_XcZogGg8#*p|>G{xI)M7s=}%arG2kr{+jbgWT4Bw=_DW#GG_yv936 zee}67&IMJ1j{Y%RuP9Op6SyJVZ#B~f4zwGsOc&dO4a61iDBPx8?3$CtB4I?sNAsF3 zpM_60r@2q|NcNYCPhu+GLtD?zFRTv7XU=HhiqvOo$5gA14EYBI7UJfEN`Qm%Qt*`) zOXoUbwW-a3Xg+9!lnc+oWU-{<$KPJalSyw_R0O(v*LvNG&H>EjyDg>7IR84}IVpH* z8?*F?Ir1D)S^(^@shmgGar(=Y-`HmAiz%j%Z7mLyeyWw#MFemdZR%O^S7{dL00{gU z*?MN(0bX)zZ(bb?Bk?pNMjEo3>YP61bQ6Pv{oT!LK?G3!e_o#`78UXvX0y zUh`wRrAB8qOMr(=jVjDjNe2Y_RM{fKR4Jvn%xLsgs*6G6nS`!PLctL5!1`*WjnSz{ zoyGQfWXz;UNora~xhQQa&_>)wReg&o+EsTPzi<{CQM-t3FH&K@NxNxU;hu#S>Po8G zGwQB~g=W@Ak#3p^B!1c!n$LECf)WWnbu>0;E;iY`D{$^bQeuFcX z*{uiKSQ_ZUUsVyr_@a~RJ2^Z`JJ^nGbf9lyDLC zovNjLhPOHSMUL|@=|ez!n_?I|s9xFTZo8;Z^fB=RTnvZ0E%rv^{BZJ}#q4#-GFQpQ zx|k&*kCxwz;T{b4fu_lD`jwEbdz`3H1g|%W<&OWNdk=AOpKf6PgBvuAU+qfD)`b9p zGS|MWv7g2GPcnDhNMg5l?t>GJZJKYjTwk-k$faBMMNmHFx&&v!J>g0SulhTq-@~Ct zmsr?BJ3%ZCa>*GrxRi8uh;2S?a_4y%Um3@P>Zr>tSMVlNEfMsqnWU?kDI~PPHb-zk z`@(ZiVzN1|NJ^pOPKcnU_O2{xYOIk!!V%g!0fnPEJkoD>3!C8{!; zVeXWFVR~_32UyIdLVC+^DQ`UCaMcZ0^KZqnVi-fh6vnq{hx^S44Bed1| zYYc$RTUdbw+rMXlC(_#JT}7jm;J!}Iy&_-t&=h+}i|7_nRCCkyuDz+RBWhM4k^UZ` z|I$aEj*?@q50@}Ll~6i>q&#z`$T|_Ws~y12-LcFe%^3oC;~_>;1CL@pBI3sD zOv3ES0LzMZbVvZT?ghB>Iw3tx7APDGdmIpLRF0MFx|=8oKO+TDj8O}HSJCP25<+~u z=0X`c)>^rvkUdDnDWep1m8~5|Ml}YFmxhlCy%aIu**VpNZ7(@3u$wuH6?1{rjsK>| zOE|1|Ys+iwNQrX3vD`hG2XpzJxtx7;H{nf6pUb2eO$3wZq{D3`2S0M`q?*b>L@3r& zAIw_(o-pM)_KH*lrzVH6E2l!{y5Za5qR0n0DGxbAe7Wdy@%=OQ^?d-hS!`W?{eQI;EU%Hybn6??pH1|Z8J6)*Q zg5OuX4)}c{@mpl>&op4iM-4Y{`ZfLO_9c10irB?N^SvW#vPMyPinOf+a6c7$%Rc;+ zaLKUTk2`N)0gZ>Fx!4W+!Q0d<9<4~ooZ>Jxe-axL(ZG^A+@izm)Sh|$&rcV2Q4C!A zaTH@=?vCL;j^H^>=gJl{BUIG<6;7bM8bJbRSKCDuI6x;VnS{Spuc_|x&an!9%g1xC6$5OiPeOwibI#BU z`UHM|X{n!ZF&75{xcL6s4{$mzqFIW@I)0Wl!CnQo@CbltvdVl%AU22aC+MQ>tRb6nPcgnS5a88la0^;nFb&;jRjqU2-Z!uReN zh$H&%**=<|SBn^fCM8W3d}pTyAt+p$4+JCMBHbmXA^VviS&#^ah$?Z?lk4 zAI4tRzp# z;m1~idti#!qijj-=1`-x7Snw+OnuQ@(23UfnxVex}t*jp-O{29~E{Re#~YN)@^K7r_{J<)$QFAbbp zuH0_#OSG`P_m9Ik8)6o4A8ngy%vzrPrg8dn0WtbYErr9%u;Vvlc!GH888RoeL?=?q|M`S~I0EN5p|iVlBHbJ^_0 zp(|KFB@x`cN|6L;R}ggdj8C3papDwR)H3B#J5E}EZSa9;9LV;JI*9s%Yhe@egBv*a zaCj(p2Muvz>rNX(AI+y3;67&)iROijHO7vw&YTnOQ?wN0#P$XF7Q9MD@$*raHs?6+ zkf37?@mw+(KQFT1y@)4zTN*V50z$@eI00rl`9JAoN69{ofp4A>3>h72n6?`r4Y+u1 zgqGSen@&(oI7q3Am_X_do-dwsbdCQ*@)AK=dep8;0_hCa+EFV&>=OPf+$d3w%WX}^ z*K!UR2&;E|J?s`0QY-9Mh2cd_9zrcFJY{QWA0?cyoRd}nVN!(9v_lI*+h#;=Ik;2A zXY^_?Qg^;AZi47TUqYN7{AgKqM~QTx)Kbd;52OR`O(&{>iWSzy0a|2h{ubn4Si3wS>TI%#xV2l zbLEw{GTRK_$|J3IT}7S5GMI2wC0pQEumYY%j2yUD16NoyE2OJIj}9KVCkicn=RwyX z+`D1Y9tBYHCj((kUD%_oSPk*QW3cw)^~6fA)1!i6*+ z5e8=Jto9OHrC_Ir>?q?Yu&Kj8Y3Nk8>R-mNuX#BX@n_vh9Su)+K%-Qq(0=&ZY*)cI zyFeQ%v<-bJ*0^%6xGNP87c

F0yk#ka+m(kI>6w_Q`gj^$H%1>OY$N$bm>crnsiM zNK!_$liJtxdp5^ z7m~18#rT_$Mn?VtiJetcxmDkm6LaieL&{wqxp&I^m-yx1tErU2h9yB7n$yU$I3l@! zdsdEr_sxU>@GQ_=PCcz{IkpBm;%rOQ*OL!LlS}43m})T`Sa2N;@wzIQ3aXVS%Cml6 zMd$iLM?W#_qUy~GqQYnmV)_`#d6#y$2%f$sPesHxjW1UFh?L{MyGC+c$KPMl%x7C?eGrzAX|uar4N47>|4fGRHO>DaH|v!}ghVm^3GH z)duXQabX~49O~vBwskyoO zBLWp3<$0{o1hOq$$d5=khv5@Rs6v?@+8N#yDzMmQHj8V}u}oxnx+*hH!A$<*po(DU zh!pYAXm^^I{17s)uQKA-h&ZhY;=-u0gpKqXRk3N^0v|_$m$F&br(45+3-1Na7Q^M@ z{HbT!XeJDboY3y=n(o7V2m)C@O|^!DehyVQ6nAw|w~VA+ zRymwpYwcK56d9eILKEqZ>(I!a#jtn7e4IB~cYO3B=}uGFmgfSX0XfCXq8YGdt-&w6 zP+7D1eXjy2-;^PttiWXDJCd8bIb?-Ij{zTN^w*%sQ`PmvOcTi6y((1AY5Ig=3NpRH zCnM-BlYu8t!{r)3V*MHhpI+I2E`stVH=6*Av;fwL8r~vDe2=BZX}jCpoyUa!toSo4 ze@0Pq-!Q3af33MOU2m`yKM<-8Tc1zC683n7;H-iywB-})XWN20$o@w6bbTgGSz$$_ z)9qYWvU{yOGkdiN(n!k82Cxt5=`w0r;WUuC5;0lpXh&#t5#48H!UQe2VKG`Tj55ha zWr5eRy;|Zv>7c^V(kt0=tk68cz!}jgd-G<=`YYGOhOyV11cZV}KJbDUvwsfKoy#1y z$!;%}MT~Wf1Gk&XQ}+{kD2H0bo3AGt0Tv327&yX=Glxr5*-Af%-24lNQap&jpT*;Q zw1;=%EjO~bnH{sZF?*a(Er+I4pFXL@&H5>$aeLhKGjV?zNN7bCvjlv25!nXS;k zm53FQs`I&i0m+BK5I}0UAz^5Z$-l7jUJX|hO+O9UUd1!-BLi6iOJrp<23_Qtsj>ik zpbFJ)XxQeV-JBL>p?}6<*M9eIeVlVgxqdMHFqM3c53v#r9PRdA2hEYT4||(O53j1k zI=P;B(i4~u--Ko-yy~waeyt07C-G^94VDO)}3A{OrB-XeQJiy^*#2X zVYW3)^QtO{ubbe+aqkMnju?d57*68Q>oWvxOkqY+gc8(&NkeoU21FPwT&KHgs-epK zB&XonAh=DiKg&eyus_wNYPE9lp{gQ@7#j`4Fgu;(@>=^A7PqQ~CGP!=W%6SEw%OEcoOnaoCeckIK?WUV)}AE}BpR%G4oo zoS$*FGq?6p zYNAD@wczu*WssHsD>Mj#4db>F{L{14&pTwLpg_q_+7}bza4>CP6A;MmrggeZQHAoo zf^bk7j;pS^I=`dtFh7|A2qeKS%|Zb9f&Zh0Ql|EIo3bLlvw;rgUt=?{ZI<12Hiu|g zTJ~*svk`AXy3C-T`PwUyn=S8tPZ&VWESd}4=!_+p8URFA#>b!7T!vh3FK^vXH zIT#b6$SUU#Tct}?vi78%qbUxlq%BYUVI4ZKT**i63#ke2%3UxW+gZ9-KDHASs0I%l zGOQmpUvIuirArkrXP$Z))KAW@g&yTEAWs*mTuGv?4-CG)&xDTZCtoZ9pfT(8J+{kU zN>;eaGPmEy%Weh*@w!9N+x-+ar9wJPPj6)W{l{AiF(gf*9@J&Yr%pPW)C69wt;J{9 zLpjxr6~flaPz9U*kF3&f425~GtPl739^@wFegoO|(#-o{dYx*SKdV+6i$auV3XP@$ ztb}=>J(m23te-r<9_gTvBl@Y6{U`d17kPbm{EY4G-X?<9%fW3C8bki!NH)9hzV>DE zjkNMV2K@FK@s=?bJk*MdserX7q5)6X%?*m$A{z8w^-zWS%BJ|h75&mYW^l22vAOVw zhX*nw131Wb9r(ft*y=Y((D{`*wAxq2^yvW$>QJAe3lkR|zjeBVY&M(vT@cGz1@im5UG0Um4L#1j*tP2$L1kmm9UC^1~jqJO)VRw#2Qy0n-iz-%P}zL<)HtL znh778aIP`7*8m2T0Bb|BqZzHHbQH$*2%?8^tiS&{GP{!jxkSTw8 zWr2pDGwyE9zk-#kkTg&)qB>Ql!S<8lY!jb%#YSDOSe)86Y`Bi}sGfww&-#FnB7FP- zEj+!*Sz!XFa&&F&5ro-J0LKZ{Nj!#J=?qoPwT^(Dge~8lgcrL-2_fD(w6BN^o9Axj zBczZ++P8U5;JH1eXVjHpM`z1H;x!}#T8i;dBhjoz3o;Gegw zYdP_%hB@6`UN=i74DAzA7iHz9oce4(81}3Sf?p5wjwQylODEMzMujgv>m*n7IAR6O z^qzqg3~c1h?|eQx`5Um{;03$Z;`egs$`EC1P+!N#D3O+I-4hx*yP=;R|2P#AN8hRv zU-61X6Hr@@dd{m`Jhpx0#j06QWzdP18Sc(vlFO*m-m3h!REAva7Kmue&#Q(*(|D=g zonr0m0~DzK)qy<3NT7DqQ36>gT4N3&>EN;Hd}Z@jx2=K71VPJ?`pWXEoRyj~8jmmh zs&bk>&*7;avT|>Rjagoy7c<41VJF1~BWbTIKIDN}r;I*kI&=aeqz`@5w(tZg z<{leL&K0SVcOlVv6!M=!c8V^izuLmrm;EaOQ2p2vt{K9x2F7BCqX&NyAkfE-CjU?K`;8L4QlNry9Qr#kwOjFr4saWV)KYi%L_kqa zO&K{3q6qaCU~;Q^i>_oo+7mjj`x?xGyo%FStDAlD?)>;#xLuRT&j<3P5VdkgR&L#dJ)HvN5e7slf0m4g1oW<qRw((Vh8<^>iGFV$hw!cv(y#OQI?sD~m8|#xV$Hp|9;t z^!#XqdtNHXJl)Gu{wN zf<*gTPCuqJHebadz;(6)M62SriQC$KW!AN#pryDUmsDjmy{Mi_aoIG009<8nZjQw~ zU!=v*Rjd8mW;S7b=zME(B>4b)Yy%L6UFmK&L7{#?t$ra!6V&Em+MgOBBGQBjXX)@)&_9*v8zDCm~I#9HKkg zn-Jhp7S<#v72EAq@kB4HBY>49X?Tt#DUC-*kUZ_0Ds;JSQQnh*91H8KYWlvecQ;$> zdo)#5O27u$S-{u+9MeNp?ql*5)-T^ofuTbsgYr0`!n-Nm7bKOBhPw-mb1_qXYQ&7V zq?JZ(mS(_vG*+2O8QtADE{5fJ)XP{r`bY@+ZXMS+91*&A89CKV9q>YDP-X zvI9l6*!pUi^6mWAKw%PZ#-q(+LVIH3dMy9X7Y4f&cxbj!u}Z_MR1+N3)kwa}Z<6_( zmT0bRn;&PDm|==tp#c4nYA^DBWID2$*SvuHtK;U?vNEzB5Z&XehSOq*aaJJDQ1ppxH;tooe6BarvEW86-!9l#%*Qd41^TY3N zpoFaQN2s&ncMTq`o^rTGy<%&gAGyWSKmh#UV2@bph4xnwK>;F7WD@hkBRgUr0}Lw` zV4dQ@GRia91s||`E?YoI0C`PzHyTm@6W zs8dgxcz~3W1ofpIp!+sP8viNropNASg$Z3Xq1DXoGZo~lv{i_Q5Ic{4 zbq_C1_yx=~@l};Iu9G;M>KM4FbE&s6oLuKO%RY4cAY8cmV*qBHS6 z+55Dt^gN0Xr~FLS;?;SPm9}DgwTR6CDv#U2l`L3nDzt7kSI^MLqo1oVbur@k3T|~= zCfIz-KE!(qOWl%ex*!M{m*4`b=&RYH{bbU;2WR^Ici5hPsEEzb{P6n}yjUlN$)#!{ z2Bx8DK47vM&dKIr-h7jOuKSZOeQPb)9{iN;ANG@9{)flEyljeIYO)#}8s=i47mWY3 zq5bRl)3#X?1^L2g=75l+E@Nox2KQzkv@Wddi`=TduKk=d-~fi10`0&Lu=nCTL!VI z^6$QPB_7HV`@13kZkG5W;#C+x*%g2}@{7ZgWOZxZByGhBQOBzGDyv{d5~rM$r`MZP zHN#?%rsBsX`I^0-m!u0V6k%xJUH)@;eL-yJkpZ}O9rYHiF|G`}0L503tYDe!M$e`j z@=;C7{{9M$SRXdOO(?%l$wLaJn7YAWbR)2p?3Bo0beqI%gZFuQr^FTW&L3B#n`Q}i zb~s5FP53tdPYNz*#e9Yh5(-z@3yo4}4m~b2bdD;548n|w*V$JHfmcMCl z=d~QJ1D}#Vz&Vt3tWzYko7tvw-Q_BMZ$@eqg?m74eeiT;cs%NFEV+*p1E54qb@;-Q zz4zvO4E-A$UgW3kEM{3GdK~0870SHIgT&mjje==18rnozz~kJGm;JV0l*@u&yXG+z z8NU4C_e-M7E1+Nj$?C~n_b2C+GFedL0S@(w-KZ#k+Cj%#00h7}!Z~Nzmf__7YJEvX z3FU&v+bc>E?Fw(beuYbrk>0HDVc9I!+hv!;Z+Lzd8~d0YH{2X=pNoxv`icj+d}Vrm ziDtCoXYw+5u6iWP&8D#|_Qz4tKVj_aq}*-#oVaB`La7LHtg5o-Zfm3T1S|3J1iF0S zE#&=dkG*xU%0C z>M#mj%bq1@X{(Xy5Z~be$k!!5B*y;x=pqaPn1zcB8(vF`+RV|CIDA%_h}hooqxyUK z0z(xxuIya67s3U00GF3aY>6bz7W|YKds{aFSl`!Ff2Cpb}8#d-XcC~cY&cBW0w-(d7MffX}A@rmFF4pAyjOo@#WQH8S+%yp3+a;I;(;Z}$I;3zi_-kUDD@b-E-Yqu+Os z=EuRTUm=6~#Oh_t99bD7wXHzy=e?G`jL*Fngkdi_wTPDcyS^y!G_p)rx5aJs$EWax zOiz@#s#ejFXs#C0-YiG8g$e+N8wfy1I!O+A-D=04Hx=H=)NPd|Jf2*SWqJ1SI7ak6 z;Yw%^VlsJqxSRb<Y{pt(>{-I2Tg^SmVV%ei81e&cCGrp925!7>ZqC;wrfk~*D1bR? zu7_uLU^zzrZVbI+RI0-ActC1W5_QjJ`Guepo-KYmbBD+ri?I>DgiXWmr@ZdE)a zf=VWFlkbR@PH&7+$KP)E%26>wAIhk0R4a&DF#>5cS)FUcTXF$qiVyWopj2$_CL=V^ zUX0}j-@*7~5UTBM;oQ%wVv{yYmH>@5W@q;&*W2_O30b`t$dhK5Sj*+4F-1Ca!l-P7 zPw}4ei~js6Fb|DiQ@VVs#9Q{>oZv#6Jf1o8+MeCW*32r!2?%P`_Qql=PI^32%L%eC zX7<+?tij$#wAh>Z^y}jxT;s(mIJdW zF$u~M)$h0E+7t!n?Pn|Bsw=>|A+#}6Hfe_z2v6uWBQ~i5SG|RjS`ie}{!)-{v@Yd8 zmD}*K=RXexR1%s!e`b1lhReD04r~hbJ5w)U<{vAM@u&hQ5mm##-OtJz;Spze5 z&B0fkY3zycF#XvH?Dz4FYgP9lHGZ5@LOhb%7zqYhJ-kF7J~5>d?-j1hK#f%Kjcl-R zS(gN;$;lAX+dc-w=-6kfC{>Vq`a{d@_fq zP1JmAH{Z;*4&YAZwjJCl<5JJGw-YfRvo$cC=f%F{hIBoJgewAzme_f)?SNdmTwn>cU* z3rQ%eoBtvfN0Yxxe`^J=v=?z@igxp7F1CzYVEwg4577z&Q=Dusx7em*On2ZqwuANl zjiAazy~85{PcB}dzN0Y{w0Ny_>vi-azE3=L`y0X-kG2`jIm_p+ zoj^k?@>gvN!2HkI6ybNuujdP!62M{6P7Ai8-EVf$C`rvxNV!4&h26?a$be_J@PqN} zOpnXRON&8!^u%LQy|T@tmz)1hKYH=*vn|6@_*C=nKJ^K($P4pr$azlHJ zD{@I87p6K|&VgaSZs--Ufayi-fsxy;=C=)qyl`*2IFzC}=`T=8 z3P`^o3_AYaWUuuL>{Dse%niZNJ>Ags`L&Zlx1f<>j!@bIx%;F(8h2MtBA*muSJu5s z+ooiG|D=@g_3?3XahU~-NVFRq$kLvDf-^sEgpdHdvYZ?5aof+Un3Mw~`qOemJ{C3- zZ77pV2c($(fSCmBUGntvX5~98(3Dyvn=2=u#{Y{l~MFhhVcg4bx5v^+~v&`ngh(6wKadKJ$j{N7j+C3?c9~d`n zM^A~&7fk?^H`xtEKMG%Uq}ECND`dA!KAUa>K)CiYnndiMVr803fWoRqkMvZkXc~%F zhLTZqNAmIppaTNiT>;g>i9*EoM}_MvqLO!>^o~%Sv~4|PN_Mx$#}_n43Omh&wLjSk z+0Awd5ioRJRFZYg(DUt$1RUEGd!ndV+o1$G?_%D#f{c|lNf2F82nAJ#32m0)&4y~z z3KOFWanq6zQt$8`^o*uFt72awH>crg7O_9V9P}GLKp@nM)E35PP3wu2SOKxsR4EqM zy@+y!S3!gLIv!jVadh__EI|<4;LsYts(VsGhn7UBl09i!m{6^6ocF3P4nX5@k1FU^ z1mA>(Z2{|5(WvHT57%b!ErEI(1No(rq-ou>`ap?c(Hx@ z_ralCxFU7H<;#Ti`Em|u=%xKs7a;|-hc^4A$yX--XtJIBAB6sXZE2W-+7s^%`s0v2 z5E9*@dOej{V|4B76Ug;UP3ofuW8rVo2u#A!YR{bsBcEu*TG_U5L!)BhxKYgPVa!>9 z=7xOPKN8PMo;pq?uJlMm^cZrs3ebHP!ZNkvdY+RF&H(bZ^-be0{Bakz&m}@wOuj1$ zvM7gH_0Od-f+K+biZgRym;~SojRD<1CqHq0Z%13|B$UjyVfy5HTbMQLpg+DxxIcSrDk@j#P{Vd0 z8xV~pg(1W6Ob04~f<}0@bFm?0#_ib$veG;E!x{s6uk)?WCYYDfC*In|j4>6v9Kf^PI%dreG<#2f;Ax{q+Ev_lJC70 z`QLH%+3vpj0+S??aX9Lmnco}|9oqG{4pFYm5jQBus-mOBh=#^0cq@YP+l_pWgg z^NhP!GM+uTK7ul(6WU9U5((FdAAa+qj1ie~85e}uh&vsFccF2EeMt;h*+1&bHuB82 z!L@Aq{TT5S5Y(Wzaix0eK>&!yG9?3512J?_cZMG4l@w;$Rg+(V%`b$FTr)y#hGRL> z4n3ayar12pK1tXTA)eXUCCOv{<=_oImU|`l5qoR0`QQP&IKevRxFK8UH}Ia1kU=s! z-WTY*tVpOkcnu1U$mTEFbP|I>oRO5E0bNHBlfl%~hoRXrDNp*`Ky)i=NV%e*N%IBW zL_`zM_+Yw*zDH)jJy4a+jdaKD_DMKg&|+0afBJHJEEVtjy89U9$8)R~rs$+7^Ih|u zkbCss3oR7Lrd+K_6yB7DO~z7L7o^1G#~d&M?Via3cU6J}_M5%J)RCgt|O*fxxB$)@Yr`Odzo8$ zl(qcGvX-R(JXB_b>gS3Zlht<^jy^yLUhQele~(GsP&E-1Q1$RTX0PHi$q4I*p2#YB}Xgip(31v+Rr>hpT*e zv8MTP9KX9@Rq(gF-O@rlU-)i>`@}#cI&C&zp(fKKL z7eFv05kbHlSI(D3ifG-Gi~(eB@*^A>x8g_gsq)%BUpxqA!M;YDcW28!ygq-12c#kFC^OF3dB+%3JMh^%%3uhc%$@JL&)#PgO-%kF8H(j)SCTEW=ci5x(^BN~( zgTzIZ6@*yE!{?wVF`^ry0SHkmC5_rjXgFI77?*VFdLUqIac?Hi47t69ceJirlvK8T zZ`Wz~rnbEb93R|AIlJDF-3yzv3atS|;4!sopBlAQ zGV2uxOu-U9$vty@F=JZ-g{cYsFT{B3T>PoNKebOS4yA`1kU7H6x~$e8Y+Ea4485#Zaa$Z1`nCMu}qP{&q@=t(Sn#i|FdAxHRp`OZ6Gh$Ov-lmEBDHDPm0 zmIad=1GKZaovrHX&+wz%9(MnU-ZOM_T{rU^^Uz3i-QG9z)Q_CJ5-Rk2oX4XxJF9?i z#K^9wBLtKma$BI8qe zFdx3D(gUiOh*bP4#U@|6IT*sb#9j670o`We@Q06a?Q8URyhWAMsrAWTb(xB*wbH*d z$@CD4sRMGbSx!AN@^N*YIBNtxuZk7vUO+`2gCP(ntA?YaD5@*pmuip09@dd82JYpT zPf_AB31*e;tL@PIZrmsVXQ&XQ1s12*?uWV|;0}oTXr_-d*2cVwK{ZfOPW8QHCwi=b z*VgSATQLNss^e@ZMh)FE$_5G5tA}qunuv!2haoIRU!|>vYMzO&gl`UkUdK(ygF@|e z08S@-7o{0rU0^D506n%Az>jA}`p%>@llO-`(eBh^conY%fMRD9I@i)TBp)a4mzBCt#q9THj-uCaozm>$sX#OD^0%TY0k$jYDR4B57Z?av_=pt z1?POIn1#&;oE5u}z4(rOCvJ$i1~U(B6=z(byqrs!Zrll&g}V!~o_**k-6wXv-TrJ{ zAP#a1^0$YZsKW8+^oei5=~|gEYT||$dG!p`FvDX5Oq#7unm*w&3?oL+7hZW8g%>EZ zuxUy&|9T6np~4^)*FDoxNenZHhbUNFDKX%N*Ly?{G**|cO=US%Cwp}aQ8yQ^F)ioN zQ0#{qjka3>R;j!4dtlBYS_Q-#RukQAAq2Q5g^ryI&3`hW zERCS8s%mFo6TnER{^J{EvOMrnUfW4Cy{W1*XC+FbXL&Tey$;!0qpJam5N)4n1VMwf z&TA86gu2zES;@KWMa-QAfv1(CCa3>wBiaL!k!4#9!%IssrIzZl^UqV6pzQ^VZ_4)% zwK;A%e!YDyceJwH(MsXOmAZAKYP=(EyAJfflh}vNJ?(plKF4x|4!{#8mZDc1osMA7>>Pd=0wa5yqH*UpKp4<#M(v)h zngIcMG@(P;a>y&=)YTrip}D$v5S~oFJNe7DS~82T=>7k0@|T`bFf}yG?&l$%`|N^9 z1!5;O8_{pKNP+K#IY@X{*H#Kih0h)c$!2M>qS0`)>(2;K_A>+$LNBjtbk0wR$A;WQMYr!dJTczAI zjAegnK1DU?vyuxrtTaGf1G%F%F4$_1XDUlJ2fGGg)&t5DQjN!sm^csw6}ZkR8!@Lc zvElNMP3O%*PmU=Cg+F%ht;Gq#pwd07Cz%Ncbw`A{Up6qavV6-^G6rZ5z9 z9#epZoS(@hqz>32l?04lxV%JZ2p6uEyAscbkVGXFZH=yN ztIdr%%Yk-EQj+<}Z;-5t_c<>P!eK}6sqk6nU?@MZ8SR(B5sj58 zc>F2y%2pruD3B90ud!g&P5 z#Dk-$)or<(j`TETeG2n`;H^jTKpO7lI-hN5o7U<{+7Cc5p1mRKnlGE;Y)tLzjWzqR z1=C^kupMlN2|i-021x8-gp7=!&le-DB<~;sY~5pEn3QCMh%W^> z`AJ4l2Ty8X3LEVbZ=F4lvFqJ4Y$-=jmAzYwf0QCn>{&&}t8PoY-k_Fnhl?;@Dy7VwEgGw36roQifAe{4 zk@@%i=9oU=MQn5+A0hg_jE|i?u}ydqel-=A$e8_U$7WNhbyd0kGopCjuFziaH`qw} zg*@|j?KgbG z53WI}V-@%fRVQUX8fJy3&irX}F}wEd!xqf0a?Je0Y4$cbOg~oxQdiK1^i71FFM|J2 zHHI@NzJ0jdGsqW5IE(ri@|(gfJvvSFYjhsQA5k|T4XE7dFAj6R7YJbdM3ajV0MkA& z(YE(M$*!rngaU@HDtTGVo*&dCJ-_AFvJ4H9u~t*sOJ?O%@kaCG6f{&lUg$+P^pvqeG&n7c+SC`*e_Q9sC!^*{&kTaGy-!vvw-fsmH=7)%pW=Q}=So(eESkpWp@T*ASev&{2LK6$3Up$ ztQb;NDv3fAGoqG54CC%R)Bs7U7M4;EX&eyk!E17ptph|!t6g>?B&z_@uVEDxrXUg+ z5Hg%o=2eaXKaY8D0c~D*f4BL+inT|Wa*`Z{SGy^y- z_mM(6g8!EOrp@myhfj0}+CImH&UZ}Er|#zN5(uuQ%l*MnzX#3{+3^RiU}`n~Y0z9P zBYZ;Tq4}5Yg3HvP;zE^oOWhjdSk^-;i!r@V(_|av6pRgGk%f@}{H7|{ncmSYe&?;1 zih-0M!yyzCH&_wTVVTi=ql~J$;!b2G3R583q0>r{nyJM6FwH~9(e zJ$~DADEeXUGdl=rci=YE^rTymhC#W!zret158iLRO_u%XhlM|x`3CkURV4a)g|wjp z1Y$!Xr&3&t=`CfArm$uvi}o}0wuEu-y^gz#jVWDa`yGT-W$unBGcRZ)0d8k#)+Aa~ zaZb;=W%tAHlWDf-p8eK>)Q79~?xgH?&rK(ptzfQdb*kgDJ0+nLB*BX(?H7lo0X;>G zqlf8L{uTX0My3R2LXKs-t2qIE2R4~j znN~aMRaIG8HEF3RZ^$u(o7ek?gT73G3Kjyjj$0|A6v9A(?Td}KK|`yD?JA&&dFt#n z>9N>`0I+(w37Lv88rsP5ZOq>>I-{B~*RtT$X<}hJttOq%-*88-B6ny%NmrtsMz~FP zZf1OVrwTm6v_+H%^iD7)XGY{{Ho&FEI1J&}ic1_~H_c>IRf&RP)J!j&IP8#9Wu_~j zbLe{B?%m2pG)K40%6_FsA!!OXn^xA?)L}d2KJGuw#skko8Wj&nb&TBE(-@^0BMW`a zs^Ze&6g_dfEfr+lOCpcK2%2f^CX}lCob7a*75*Ppz$7(7W|~hU@6^vmeTad+6!H|% zvZiv;cMjCyu*_lB-b>}5Y_xbo9UrCKOl4n(buH#dd1Ln>_y~5XYv}fVULFLR8DQpF zhD^xkVYY{204OGL)Sa!LgL5r5utzFhVz6W@;8u9_JR!Ac!HyHI-Wi9+(3da6LKsOB z%v*R3A0Ms&M6pRN*6f(q1027dgu+nH`k~&L-OX*&zFMnZ zF`xEq`6!tEEg}B!F>9jd@>3&X2vd|yk)^Ra$f3&GRP}Sf_OQAVEs39HGQ5b8DJ6?- z`plp{_DOHLrH5Q3y!nA`t`9mZ(IPySdV4`Y$l;NP-v02AtgNg*21Jb`AL zUViKM`V}R>vA`PY{pt$OF}#~&HUA?beL0yP%%|Tx{#E^%2*alz?4@@kuhW~!?7h92 ze}!UL1@3tVe&^#~)!#TQf9T!^wN{(!$^JVqMe8Gf+5EnJNT;cjjnhIO|C;@sJ~)Q1 zdNO@SWB7{x^tS<4Os4Poo991og894rnZ65Q_Wfk<9r$&*guU<&M6NM;@ZS8v z_&%@mrLb`BC&qVeKhmr5@$b_(bur$x2Oy-*H^!UT3;zJqpRvxwcYXX7`#b#rJ+rw0jC_?L z>6Krumy#dHfSSx7w3`bG9`h{!y1y#Vc6GgFWlXkzU4Q3K+NbLiQu67V|G;0Qn_Vky zogV8Sto@aL)ShlOli?jLz}NUIJu5l=B*b6SpXpr@`i$5An!iZbe~B2me0^=JztazJ z6wb!??Qeg7csX9YaIaIB3Pi{8gE<>#Q2T0l)nfTh6xcqG!Y4Z=^l*4OM38<@nrO&^6#UK*5d= zxIM{l@@M+$oo?;|`VIY^Zw(K`8FS!r@=g2Of6`yyawlJ5pt-!rzv+Z787I*x$J2di zlST?>oqqN$dy#*phat*6*?&)p{##aNwhd(EfL7ATzokFZ$T5OZCpuWZ#h;7zIkit( zHP<}fPOtpS%?T%2JoIihO?&%J-zW|6YqTvDPBkJR>HZE4+pY*iIGmL9F@3T{qo~(j-)z0UFoFqlVgxS$FI~?) zRZBV+5R*Zt3|LEa0Qg^?k(C>vq-r|SQNKph_2{`U+(UnRF;m7zEI1;OI>6L29t`0+ zW09$7X %hiZFwxE`dh8{MyNJJDPzPWy;jd~!h6m@JRS!V`R=xJ5H1{>(3IcIgIa zk$zh2m3XVWh(rI9PVk$KPNkZ(z63ieS8LZQ<;yhtrOL@d!&q4g%lW+=-vqF)g^%`& zgK`;U8VJm^2TO%r+Vu1a;LH`a;cex}^7GADEiaNaDiPc^4;vj${;2tP)!TkKvq*Gn zpl94V&oM&J8;bZ-RGiCC79o2&GlZ(aWcj4x+_A^EMMFNhNx%Mt(z+*{%XwrjkXdqV zHOx#FGlII}4%_w9W=6l7rdO*&wx&*fDnGy1)Fz|BfGMR=S{{zH)?TiRkVFDZq^E(`PCm{N#=Uu6>> zFbU+#pk%IUQien=FcM)J2XkILcY((QUu0l5E=i2TwDTpdVr7Od1yj&&Md5kvXtt`s zBiqq@ukF~-{^T@POaY5VF*YztF$j>j6YM51arM+qLTa3YN*8nrCADS-31bh-Pb>-))Y;1;9!3 z!k+WXf%+Le=~N6~hNa-)ku-jBnWtSM@^Wy_O zCKfR=CMYvSyp|m++ah3NB!>f{ zg^2rbA&tpT?_2BG_TL{*{<`@#`d;7n7?0kWkwp&K&h`0;B{Bkna{v{}Z!AuA$mpk) zM(`srF-BLv3i;^WkaZQH9=t>f*ddSL{xz6J0!+$I=!PaWi&;@+ipME%Ez}2JX%JAw zg_SWN;RSx+VuRsN4uN6!8((g3B+TU+io!n}=T+Vyz1<>1K8yFRyGY&tZgmo9-q2Vas+?Qo+tWrgo-gAXxWQ83$$>;Hj(`DapCfWU=Lw zN_n)x+JA2vl+u=U)cbTTc!r_^;Rlt`NHZ75qtET_`74r0vR;;a*nl*#;t-s?P8YH0OaDj66;~u#aQVs{_w@(~v^Pz~Mdaz_1I?q?B5jyf|^ zq*K~~J}+5IxE!#TgZEMwvLIIHboC|xStdq#`4Emg0(=ve4UW-j4Kfl7x9H_;fv}xy zVxh@SePC5|LF+~g*f6-)XhQR-4r>?ym3HX&pv%d%&*SUe#%%R4rVKLNcCShek)5k? z3vq;lD^**HoiSBt_d3-^%rV@q&Q|YCLA4`?rx$kumLsUx((Xv)dMm5{+hPr(%81 z9{TmoSv%V4ur)HA8zRy*Zqc`veyo|H>s?e$HyIC%u=sqP!0DWqnRT@J>H>ao)eqV9 z&Y)R+soXXOk<5?DVkqEOos-(ozFgYyk7w1QnePi}Nli;iq^N+A4`Wp?MRjFYwU@M+ z7wQv%=BOj4VgEK|9t;yo){HVJ$8=5`gS!#d5xz3(8aw=j=JP{L#vjpuP~WAJi3as> zTVMj74&tySNx@?V+3U)ejHH+Jjf}~M1W}3s?beZg&V5xlx^DJCe`WV`r3|I<@k(gS z-A{bH#SGcIZ%_tnC>M4O88ooUj(Nbxc-^uC0O^o18|~ZWJP?=&D27J|&Tl!pWP&1$ z?dMFKrYnTfRxfrNVq#Da1OvmsIr7h%-)qjAEfp&A!&fw0J`dUMmdewQlF5>2c-F_+ z_i4V4GdJ4lLVrlC1`(XH&~O`uRyA%u2`>?rrw1?f+Hp8k`Nre(Dzn^^v&_a89Q6igazve(j*sk+O;3KR{$2zQ>nsG6#K&_uWg z3bBYvpOwu4tB|Gxj-hP)*|xAzFNW%nQ%jj+7d_J+(t4CF8-;(Z(G$wq!)A7=)$m+3 zs>jB8$s_qOkNGAedw3O3=BS>#4TND8z#_iro^CJbwmCYURya@g=oHeRb5s$98s4YQ zMvG5=0j3KH?^$Sv=PTPQpc}8C<)ASMV7P3H4WBd+5S=&EyYgQ5Y|SRFBBd3e5Y&D= zhPsP@UxB##ic(!+zzVbL(9xk1yx%}z>F(wYcsq8zne-KULYDdU*>=O0?r(1^lkx_U zm!J{Rjgu{*(#n& ztIA^cR5cu2O}%W|$-e?rD+~&+O5uuU0eock&4Fn;ntZkSO7nC%gaxB{g@+@5VvrAX zCgvNwa^Wj& z8?qnLK}cY$kFnZF*U_QO;~=neim7WJBa~uj+Z}qL>NmRtI@R?m(gqlFKt(H%MBQ{& z94SDNUwb%9bQ_f^-QQvgG#m;>=h`HjU=>25iC_Q=24-Ahfw3W_f-Off{=3ya1`<}y z&vd0yd_JX{2u>pAImL)>Cfydzpe{c5PFZBpbAu%|#B3hmKb$tB-ka5Ib#Z6Gc+T8G zd~sd^cOL%=#3IDiu9WeMJ|9h);>-RL+QT!=1X-<`CILN2m>xpnD3|9>nUXA#W7~r1 z#Yq(vscf5Roxos+hig_a*Qz&dEU~8Psj8dvK@71~Lvty@1}j}w z8Zc2HeV*f^I_`A)_o-;UB5BGtPVB(CjBxDZXApDq;Xj`IRnu2npTWRFnQv+ykIHfK zI~D@$sP*Zc%GjrDdc%$@Q6}JxXZL8#%8BcuiHf9zDcC6*-{C~LkLyMu^Dy~$RLa~u zX#RIfnKc((@r-*KIhvdKq_T@hK;=j91BxTA1et7dVcwvV7??94;)3?O<+{hzZpMDg z@q;fQwJgwv-k|*KEMI;kwxJu}iSo0dyu`o_p`BrO33nS3s~lfG{FWh^x7G+IV zZ+_CH^y|F%(^@e6P2zU+UJA11TLi63yqC81+2psUUs#~Hs7Z?m&^zIlcIswI+WGXr zV57bFM=kRwtB+cgS6e;J-fTu8Ft%=<64QmDSXZgoe@?zW+p1c{SdJb0t(WE$oAcAF z4b3kwe-#DQJuQ-KwqA%N4~p7fo}WZp9GtnlGnO?;Y%;6sy{J|mv`3hdo^9r+YTYfE zL4)$8Mkh3;iijA5A_`3;$2k>CJI~%<2Mg~Fx#I5jJd_rg`lF1|LsMqA_MNO$cxHXd zK3yth5Oz@igw-Y{O9C0&eePkPy=j|AtIoI?PDp$`*I_mVXnoeOkdD*1gla zxZsvmkjH*!S)p$61@>i%Fi50qUp5MSkT1s^&k10UNzb0LC5gk#+znOc6gMxCGs4xK zHku{U$C{Si9C&Xz@ZOlcZ9cry@c3I89ocyObbETerh`lgwam^7`}-79SGI%F>EJ8H-yY(h0%Mk`4bUhuxIl_t}L?XtsWPYIa0POS^pHNA3`)ifB*-=d>Tyhc?{6Z zna=FmNqRsRBaNKPY$g~g6OQqhg( z#GnvOfBF38o+ODb^e|3Rm?Co>iD`|@3{y=|>O%>CRh~*e<2~>EQ%$3$7RxRiN7HSv zlN{l2u{Aj(_KUE&knQ8IHGg8*l%qk>^rPlag4F=^h?ev{Q!)lV>{(Y+i%?+Hl?fp`bO&;I zM21yBvOH7%u*7S?U`QY+CnX@<0>8e$w7p@|-Z?RaZ80D;+Kqp2^3&#@n4xD|xToi6 zG^KvNvVK=yNGTIymm$dP@?Wa^?Mdy+D7{!y15lX|;Hdh5X&tZdZS#Yh zcuScq>A@0n%sQ|h&1nlGOYh-%BHM)y1b`w28K-yjRRw6%v?=hfczp=`JErIEO6=RO z{(sWm?>DyW%I~Z5tBT~k-D0c7%Tjf-ea92y0yZ?rz(5dqf`NJ@Ardm(BaOx*+ei=; z$s$>ONfuSby1cvz0znS};s6s&kcY{OjXcDF42=Q=(fGwkVknCJnx}D)*Le&k2#`M@ zpYK}x?7a?oyM;-BMqi#&=f^&Kuf2Y+?~47fYj8h;c&)S7rn&6>H;sxXV_-^N{AWk? zYZ8J)Tv7i__*bQdwZ31h4HB!E=iM>TkHHW0<_)p;hq%fpP-&9K#Y1NjonzzqU&4#R| zH52y^4Y_Mmv(+UQm9TDjBa!9a#Os=?$MDz9>MpTqAn*lTxjY^CbDK>FYPnv1S=A?D z=A&wFdObTY{M?3J*pz*R4+3`F45(nfxXcB(wu=XdQ9EdqYP69R#4p4~ABm@=RY6sdmP^u zA(|O}xxZcFjLGlbAy8sW7lbA+J8yymYjHWa)gwDe@E2-vZz>rwaaQ7v8%9$xk;8=; z_?btf4T0IaS~E!UseDItTtQ}4ISnj~rDxSo$~l~%-TdkX#|hq`dvVoS)N}UCvBJL0 zZ!^st7DwO!Qs$q%LUWT|sx;lx(BMhj8z6^!_Rw!5lBL@mg3BW5!twNJem2NL6wg_| zHE@SWngp??u=h!VTb0HgGKD+?hhVeP)e?g~nq1v%VT1X}hKn!>+FjH${$jQ(ZKNYu zvRQ)7qxLei^(~GEcVsP2R`6zzGQVRSJz^{npgRG22F9yB`lUy|cV}eoW2%mq#A0ni zc09v;I^k2ZVmi4jR*IBbDZ8p~)Tfz|H$$mK3a&PrUT-fVFGyfZ1>8z{gl>@ zaI|i=SLSf%m8=v19%2tNb7*v6n1U5`Pl>_uL|K)~Yi56I9c=S7?(5q+%bntiOS)sD zJdahDp%)(sAQv-+VVjs7{Sl}K{Y_XvZAz3E;VY0~^b{>SyMw2t>^IV=tLpu} zTMNT{B1kI=bK!Xi>($wrp`Ojpq#LbP*9Mz~yA<`}+**fTF3;%n4vw~d<5p`WDkTFN z_lt-con4C5XTs8=Fy$29sZ>|q!e3Tdt~>QhI^xazh@-;O8H`%7f%rsBI~Yz8FRBea zEe2xOC|?LCZkoQ+Z}{Q9>XIKS)i{Rpx|jk1LJ$d$sC=F|CCs01SD)s@?$ob^ds>^M zbBasqr<$a%VH4vxopYQa!1Py2Q`K8En{08=a@V0)$J{5tB?P$7@enMVRDxg{(6GCF zEZk@SyRf6-kHzFR3F&k)-AMqIlf~;YX#({sM>}`nV0?$C?4nRwcBnA<*wuxQr8|PE zI3F}3nyB4x%4si#o~*hrL(_oUH38VJ3u4(c(T7c+9UXw=uxk}0i2iPLLQhRORL`EW=mS?cc%j64<}y5k$0mW3bcs$md!_ zAbpcvM`TFj5iXbdS(!9NE}9C`Mg;pb2$UD4KwI5fyLq_=T!}0DG&jffcY#` zq@_(tXY7-?(mb>6<-M z5{1ON%s*~Po3kd0mN?{r6J>31Uzs9Awu@`$XD*d^ZrBH?r_pY6{mH4&Z%Pa1nO77x z7;BNtn9&D^voL&DAwFzXszDB&9abFFd;8h=CMjbag}fIkP>T_@+j5PNDlYBuVW15Hp5LN*_|x+@bKi5A2l%okA#!t^LUV&5}B&>iag z7xQHRC2n30UP53aK8{5Fa9CTM$LCp%ugQLf2t45HuM~# zjB=19Al6G%AvO{QJ1S=9zt15%;d1q!~5!eEP1jGJ7j6 zX~SE(J!Lpnvx!@K?Q93$LG?x&1ZfC)g%S_w<;WLEkfzl8K7e~lNriB`(a%+U8#gb6 z7Kk|}N8p)FF)N=pO|=EBf@9g%eq2NzF`rEGEZzk{V$oK&D#@`%o_ojoi+me2NPA2r3F3DJF&SVj8~)H{?uZ=8VWL@+fA~Jydz(Z|%9jKY-yII6Ck-s86`f z;W%_#by0Eb^3ZvhpOQjcoF_8Y&)1F;NWE3re;t-wo|<|bt>ezk4YOV~S4Xrl8c+y< zmf)E+=lcQ0=H>f)OEWj1wE=$qg%~^TcO_s@1iVKFOjm{iH*4ulU zC{m&ocy&hZ`_NH1>ed6@*l&#+q6y_M2TjRSJwS0L{ZDwcLi4^|VI1TwKvYEA?1}uS zjX5}T=Fp(%I(ch6qg^m{ffW(Q$j?KaoRgIpejOy+kUmm=IuI!IU!d`v5SPCTKVZ<5 zt2$I*8t9Zgai9#$@OyoADm0=p`8{Zo11R<4qV>>jUU3D+#g%aKroX7rhMETQF-HGz z9ik0`CQ5>VN8=-iA3fy7;Z8>D(f_Q*hR(fS$`LYoxL2(17S>ku6|vews>g~nao2hL zO!xg%qu;hj_SjhD`pq(a2lgxF)4q1c-Ez4lICyG<@mzH(ok-I*Q?MbyhMd-0)dJ3d{4TKm2 zJ)E^x-9B8nHZ0u01wc$y8r#p@L{F?54CKhF$@rB$opdU+DO9F<$91m3$;qw+$e+}v zRe?_JL0eJ_f|jaTz)#k@*QLv;3bA*u7mp>5x*{m8py+VcUEmWVX&TRUVF<=6I}{lJ zG4ofOL?PKes#wFojj}U9kExnae~H#X!60do3(JDNl&(nGhgm;nWZGYVX+##7@D%5_ zYU(Y^;p?OSzIs{Q`6r2@kurs9T8v z8dJ>3j})DfW@V!>2!P+}-4~YP47|2LAFrf`?gsZt(B`ME%_}o${5l4qNk|Vu=>K!^ zQWq3PXO31%e>fdm&X|oH8KxN=umau=MO59(<+?1FGsL7(*sT%v)60hrM*mgyeL%?R zH=99~(ekcs%kOAYl_~R$;V`%UI7tn%SzIzW^VH-~u%C7NqiAgC$5v@CxXM@PG0i~e z#+^WKiEAL%g8UiaGnon@{=}SFPWWG(| zuKe*w?d#>~^3pb3v!SMg0J>kRj^9&NUG_0(o-|(ZSA^!Lp<2~Dr;MX>#mxA0Z&zk$?4K7N;VAqSTzS#g4hWb3n6Q~Dy_3yWJ6D88| zpw&B|Cvjkd=M1YY2B|JYB{QM=)Ovc6e7`xlh=q{;4d=3pRgft?*xLk*JoAKdt` zYJk|rn)-l^uE!3LN0u0RB*3fONoFY zd|aLZLFiRnAMB5FiKai|E8GvGF!fFfQ~M3+bNmLHM&qM<^fXs9Ks8VT1@=pKOM%jj zYc3Y2b%ZQSs3UUA!k6+blh3JUJ!dXv0+!Bo*xuY+k}{@+@X>TetR$2pKRP!K9~vDg(hTDEy>Mm>UWbtvSC#=8`Yk5YKpIFZ4O(?IT;qU*8Q*=S&7ePEtcf`Qn}O&gZ$U*;|Js6 ziHY^$=Ti|)b!C1^x8?)Pw;SJ?taY4`y~ahb2TH>7q@Ly+kChh^u`zpkq$B#N6t(E@?&wv?X68#B1f5URGpa7=6|9_ zhbfx8`YYBnEklE4dy(hC9+9Misj+YUnkwM_NnqIr0tZz40f)s~DGmW*xmrRlp&bE~ch%(zoA%THT%9^9Gi?F1Zbbw_QRfXDWHW1ae55LD$7yuo4E8wm1)n-7@ z%}HaiPbvFKyo+8nl128*N4SvAugSj76N@hws3CEpHFhk~WPWj?SF@;xAL6`?cj>__ zvF(pt#w%B$mYoJRM4v_+Yw&t`f(YM88?oebM8BiQ|H67MoiptfTVTK57+3$ zM3T5({kfx>5}d(7m4nsl(!3PnD$kC_Ql$RWV$Sak5EE=0g10ABuTKATgzt&!CwA>7 zl>0=(oRZywaFAK#n>CS(#PX?1DxAT%h00X&?lJG~t;Wu3vr+ILR7B`q&X zsi|)Tmr@hHqWU)x7lo4}!hxUs7*I6c+%FZFZ@yGHxa64saiWwfA7pWNeQNIRvC&(a zHCnS}3sxW2jfp7a$sz8Y_stPNeB{hi&2OBBjM7q2CO!U{N?NJ${#-_-jQ`QQmU8Bj z5c~R?r2Z>T|8d*{#x?TB@`x5fd$ERHNjj*ln*@-yjE7C1_O}dH`#t-hr*9F>&1c)w zoCk+e0kV8r<7%j0xBy6^Q53@?K_?t!%B7u8!;0G#nj1Zh7MFUnJ=C@}-Kdz3WfjrJ!ik59mI>AJ%b1IjZIIp&l8nX+5PL8Lj1Q=_J?P zp3wNEXQKcwK%>QIL;EBlG1E9XV@2oe?@{%P$i7*flYbaoIPS|pfLEj6hH8@LvP4wirQ&qm(u0FZ&U>`mkyY@y=E~5p}DD%k7fW8W;ZQ->ly?{FSE`nX3B zq{VO-1^VTlo#cvYZx-{HS^?i2!3Ax%-|JA6J?V^ zi2E_d<9%O%ZKc3XB??lk5ow*t!^DX;eK|D=b=^Y;r83Q6723X0Vd^zHr}30^aY=+# z%C+lgrgFEd)l0F>uz`(~#@Cy~hn}LFK9RWVo<3G+Eewr9ITzD){;iq)Rs7qu&4GXy zJw9W)c8s;`6xJftut!wkaeX2P(jjn@nBdThC2z@ffYGJJ^6%eqFcp<~ve(G0O}Tdu z5=Fo#m=3(LcowSBo=J1DMPgT71J(g1BN;@};eI}S2kk}Wu&%wllRT34+9RczKiWKd z^bcjmH)gr|N~rg*o-bqH8&>=1T}dX4Sup&!Lu@Q^?rh4&7F z0&fP~;MM$s4OYJvX5d$R!k^XZrX^!J%&X&WC%ck4KwRU)=s`{ zEMdQC99^)+h9m;q@PD5Em8pWMj#ot0fWD>Cp5Wb6T{miJ_htyq(Jt9PN@P1__g0} z_l?>=`EFXV{d%3x{eFM0B2v@`F*<*yI)R?(v%Sw0(Cx@|!QE%(m+GNG1T@vW8ofvi zqubmM@@uOVDMAH9MWG*?PHwd2@d`q4 zG+&-Q&`c1_3q2M)gPxmY5p!pH+Z!)Au^3~1K=;%huCGn+alhq(&=O{PRG)s?8Rj_P zk>%}=Rj`Bw*_c3>656qg*;Fq!M(fS?Hgw)??z2RyYg#QJ(={-=+#+At=lO({CNwXT zS*zIAH%WvTC?WP$)OT!e`o7S3`R>cL-QzGQMMHgL6_<9-F>!dqL=MAl_iEHv@J>JIuWO+Ga zOi3VCU6~bbhNs!3(@qCGskN@){3)^5lN&r7nkECYVTxx2( zTP&>mIoO`Z&ozhA=x)O?cGlkB-65-_=kmc{+E(ZAI1G(;fa zA(r-qh&|SRLjdd2`0yYo!T1rJVZt9N?jm7V`Awi?-D5b&gjpo?=dm`84Dhb{yHGB3Uv*10=lKL zB_Rn9_~~E8Q1iU^x~-&^Pkw{p7v^BB?1JZ_tdPYbTC;OxvLsYr`&c~zXw`&k(2)k! zyDi8jH=di0Yj#Lx?}Q${YD_mok6L5Aqt-Ug%sFf;SC{Qxb_Z-eD<6BTBYXVdgS0Pf zR%@Dk@Cr^l!jez5I)CU~-4*L4$taV15&+#2{ErHgATLO(KkIrotv!UGQp7?OmfGP8 zaVa;a><3-D2>Drk4%Gn7y2=8en_O&h4xWcDP7akZOQ>k#MF3_X{I|s|;>~!xYOOq~ zruGDa;gfAC?4y8mT9h876#B;E3#iNnXXEZ|dY}OM%-o5R%T0ZX%`kurA#>$)&=ekq z5-6s|_>LQQH;-<3)3?gxOy^rt9~#c5$% z1-NwtVP8r!9UVy|qSqZ5Xc_u?G!RpXM06A zne9A)S*t%I{#!J&`jQ&qR^9?WiN5k|SF-1_DCq^aZxxf=DtJLl=%WF$mVvE1&2xnj z^8g`w{wg+5*zslGC2Q$;MMK&l{kABHiy{N zVRy1RRk$fhfebVtZ^e^Ru|==E)l1vY0~-+=K0L5}IS&Rl7^V#FcJ-P>|y8k84%eO^SB%UY{ZXZ`taaUP-g#`;4N<%)R{=&8jv}%j#?dq&;Kv`DL zmL@~tQoN!89#>=tUP|Dh-My+v%!%r=vsjUlr5de32@Q?3HssNn%!}|km=2MKLk)9B z`HDQS%!tPx^LBb!yu?SFa$)dhikYLckdJ>NCxcRARKH+%ao&WDPNZLvLGn}`(BZH< zo)-hmBa7Cw0Zt|EPaa->z4yHQ?adH0fP05Z0jC*>>nH&=m61icKA+R+z_y!F67B6Sl>yTUWfX681m0=|J!CK7-*ZiZauV|Z+*PCU zQW?-Hj~ORvWGa32K$(9e0z_EDQtzUoc=!y9yEZ3g-}S;BFsTp;Ku+8WU8D)-`4E}3 zd@uoqVXD3i_heNbi!Ap-blj5?1cQGt`oC!9aj{^5^H(M@ZolT#4n2Zcd6|n4x3}4_ zl-pUa7>F38rUNnECsAg?=D{HiJo9u-0R4&sz3bbkCq;bR!t?TStBxUzLzG4rsK9&% zI`Y7pp`jx^k|O7IWM?>r`1kY)I_MJYWz%$A((V*dFzZP8^L)L>;Gero6zsq(oLFV9 zJ@O~Bb(O8!h-*9NmIH)8Nukk(nOY)^y?#oqC#5N5wUl|0m^_?h>`qVei}b4Kw=qhqjsbT2{M)1!_0#xu4RUZEOlC!F)^I&vJ6m?!(trDOvZ4P+lwrF z1?hTDnhsmBtO+T9A%stQOE~J#$ylGT*5eI0X5nVi^iJ*A_WBq~iI0A>y_(}?Q!-R| zYI~7sUn()yzR~`3cE6+I5tSQ8+E1t;2+viO0?^cD+Q=6~vfY=dBh^CL#TvABg$)qKzo80Nziumq}J@pv& z@G<1c7+AoU!jxwGck@d#)(KrCQGO(ZEZWBA*Y!v&?zK|u`MmAO(SkZjD5DyXhlSm* z@L;AAG&AMndC`=8{E_Jy6hGxh(IU5?C}Oau(NH+z?^O~8E}~{umw;nm7w%~i3R# zX6+-Ss16}UIWqtnK+St&H%~$jajv~K45RWegh+{`dW74FHrbGRA75@kQ$mTBXcA(k ze!^)K9T^RB!rUsZ#{U7so}hi~0~O!2j#1?5)bacRYJ!vXerIOBWRT0x`%HEFbcV|x zVH!p|kj#_o&M=N1fW#d%$IDYOFiV8mhmnC5RYak-*`dWkTx+L+@(JZ^viXCIXc4#N z9`T36@$GK!&V3Hd+Q1V9-cjM?4?rH=^`%;i0Ru9UJ;nr?lcx#WmJ6@IIN?=62@2wY zZI$Q3!vMn^k%1q)i>i&~p;rKVtZ6{kmm=(|gE1RrC_7%X>?R4DU#MT2EEvSCT>i}oih>0$Nd{?LI^e2jB^S}lH0A6&7A ztptY6Ep5TCEJKrCL!^K~x&78LnY{=8V2o~`utHEcG@Q?mHzx0@lnOT64PBcc_lutI zC$|zG&b#ttkj;scwjKwB^=LgXGP4`ZZwe@?KnZ$s0}$7|pHOGCZFxDuCR^l-m1*&^AR;>)FN2* zOWWLH%)BEG)u&S(k(CYeCnA54SSkNzR%+jD@ftep=`!YLW-a#Y7hLX{TjgriagGL= zI_Qqqg|T?Q$-Qo34tXu{d;}c09n??r3eX^rq91ZK^II&mG?8I5!Ww#%ECCjzs5Al? z0*4&%1?*cO_rWfI6fD8BC0ZvpC}h##0;#EY3Q-io=HnDo@gmQ1d|3Tj^*!Osm}2is z6dZu1fzTzmWo+6&4(&GPiknOtF8lUgYVaL~2G!k4%d5IpQ45j)*=^Q_Y6iq@ahVwD zjOigHG@m1*1f(G*dmyjwF4JSP0QpRDo2VCFy4swGtq@*YJ`f1qwqwuVXX}CJH#Os# zb2S&`J~%DrVIM{A3ZoUoQ(kTxIfmgXtDZm@SF~;7YtbZKr=-Y$8)^aL0+@JrO{u5y ze8R`I$MX||taEyHpBVOw;iC8_(R@9OR6ZzHMG3%%*dgMMTH&vD%`KWv+p7AReNssi zeNJ{0Dv-XOP=0u8ZNVacWn(vd(2?>77V&QL$?uVy`(urhrMjKpY$yA!-i|)3^))U< zNu|OM06hx^sKLpvtR&W@YY{c3%{lJA}=A`4rMK^c#*m;6IW zE4efX!)6@!)`zXNT`@7s4eI9K{3Y^d$#uj(e`*@@ zdw5~>YZy4##B3$3RENY7J71pVC%A2KxiEz$YM8z=!BX)F!e;UQ-L~MB8hBe8oNM`Z zG9>7=_PY{B+mgReA8>ybW^7$fH)9#=6bDm8Nrbui&?^a&yfr2KLu*HE#F(9F<|U?n zToYiu!&OV7hg2Z0kZIjVksjq(%NCI9drSqQ9Q>rNkqi{jhI1dKm9_RLy@QEPr-V7P z9jepnzeQh2FCyBq)7urJ|D*at{TfXmx4hvC@~mKkLDMQErt*yrlfdiSs%gg@NwrF_yE8E}@N@?pj;XbST2ly!oYX#WJa>ull*dV0Lv?j%r1P`p3-DjV1xSL6$& zoosHi#7!T#%mU_2ml-bUkudskxyYD5%I9VZ`5 zIueZGIJPg0!=Yb6nfG3CmYIh;ZMtioFBi8ePR==6F>Tb-)JW8lrfy>i@`a}_>k|83dwT~@hPebk8h3cHv z{@&=11e{rYV#U0W+b9rS`(!U&D0s$v>9kFQlWEP!>U!T$h){>>lorpvwDq^WH@R=7 z!f|93W~wHtLEVdqRWAB0m66v$RcY{iD8)#5G4QK%^Js>fx1@ZMYsM`H6kWNRiRYIr zL%m58Ez7pP3!M3Zzd3H^hJ@=Z`>fol?16@4GkU5`d37ER%z-y|YND2J19@$VK2!M8 zY?#MtsjJxrZiKdrMF*e~VOjU#OfZJZj-9d~2g;B=z*oURQ!T8rtGNBjcyiZTaTY-+ z%G==U&${}=pZWb0(yaBym^oPA0-ammak_%P+O3)|_x;r>Xu^Mhk<3M}-fOF^1RC@J zA=UG{<$ZKX)_`0OAiPw%_s z^z&3xrwJWSbr@|EbB3YaA*3B$pYwao@~tg#&&JUg5vu6u-x{5cHlzP+^e?LSa9|w6 ziV7d2e-To!Xlce<)P0o|%xi2eT?|vHKG6T$O0CfYrVaUDzKD0*E7N9t_sTU6x4oEO zQTdQLWGZzy+RIT$I_CD34wEUyGknF<5X|eN07D*k{gOoCFrhI0tNW6 zR>>l93JZjNt}yO;u5?1mgiKR63Am30w4hiXRdUx~_Qt?4K0CkA5F%16m7Iia10lK& zUcA|z)0!`nb*XU&Tk%S{Q%`M6tchbLi9Y|(@@+`2!B=j4oFuyW-F2B+85M^Qdj(u? zl!TN&D<>(^zvvj)eqt*PSp;EuTkXH6)=ldcer+ALu2v)jo2uwQbUGlR^=7-K4GEVZ z0_G>`DrbKZ;UFW-Zba2Sd1)sR;^d`RlQZmVYh6Zw4=8Xtk&&yzLzE%A+TOq=a83*( z8f2{Bf+Urxw;r=Sl~7oXNt9);21T4+27=@wwOD0Z(2z@?odBmrBLw54)vkg6`4t~3 zL$(Hg&VKrk4incE-5K!)16g&n+jnX7r&-M(9*RJu6J+gVe|Pf9-~HV`_|7-JpQLy< z-d>XGNK(@~Y&el+ce+Ha6NnA~+?Y4heQayST1}{v0zi@G7xy%6nxBB}eaZ-sClx95 zvNN4tm4qgGHO`+GR;W6#4S~(64IXGx)ffmKC9*o;R!y%!KCPNe-?6$?0aP$9&K-=N zo5}T@*6=h~RtBZ|O43m7vZ2E>vtpeij@=L;D^C5?;q9b4s*UzlQyXp_T@@FnLK`sS zw3`51plD=X0V(^LwT}q{X=t;jgKiMsx6z5LsTGN`;eivu%uU90wVYq-8NLb~{SVY) z3^&dcLf9-S6m8v+lMI!rTZ=rwLLdaPj! z#;Jfp z{ZZs@7@&Jl=F}-&C8m+Eo+1}&XS6Id=<{OGg7Z+jRi4DStq-WtVc&3P-ZZl=h?j28 z8X#|2Ruf{l#)A@u&q{K1S&TbMQ7i#o4e|QMQmHkb8}zDgf>02eYuVeE5}$)a&h0S@ z2xrrj<`;u$h{``$F1}&7T&}J8_l-%vmc9%mxN=qWf8{Jvm{4-=yX6h}-?l{`?@+ok z068ttRmNZo=S3O2Qskan%|TXxt_JD3&FW3o<dIX-an9MQ=oWgj6C(tgh z6V`p~+jkz8slFjmA-{(_ui^m`O(>$Euly~tQ_&wck39742AJ6Jyup${Hp|p`+SScL z3XGJ$EY?bBO(}*s4utoZ&00*2$;Ob!e^ucanv?V0mcqLHb>q?!yIBmncsGF5Xoc12 zJ8#9#>LqBVS03QSQvNL|&D9s>B{b_@4du&M`rZ_qRvhDRflSa<|19>+8d{Fd^xV_< z`DOs|4FS{V!O>nW%v~Q4@Vvp#ojnP2E$Yll&uLaGJNV`z#GchAF+bNe+w$w!ayr-z z3(M32hP5bauom{n_+n(L(U$zl>kCvP_}q8rw->7paGq3aPVv_%t$5tQcDebi~2I~W6eRe5(Har?A98~q#AH>*DZ0m%85Y*`9@ z<#K8FciT_??)N|LT`>(sqxyU&9H`9kZaZ29z?(NejOp1CMx`V!v#0 zvswrOa}s7p1$b;zNum@UNh2RinNMI8?O5{{L!uBY$jBbwpwG zQ<8BlYeYqa^iGngrCGHM1m?F+vs*k7?)(TjGaY14MPi;>k1~mt%X5|CfSzJ1g_t^3 zyW?m%o02ttXu%_+OLVKFDk1nV`UWyri_2I>XQ3A8{Wb3**NQCtJT9lOKE%;xUzMZ` zsm6GVmsi8Y!qN+Nk3nAX=0HbhXdDkKxcuP%-D_Z z62Bz9B`Y_QLpWubz-IK~)j}&H#Ch`%a=c0ZlU&hS`{gne3NL z;FH72pg-d91iPqTdvjSp1z+H7Y%{yQ?S)6&Mat};F}6z1>)RBj$m6w=8q)nzUfXmp z#!M7tu^-rhayISv5tg44aC=*XrBvXiz{&*9L(<`cuNzd5Gf8R}(!1^cJ|5DHe>eIN zpnXAV_1&4K3WJivpOv83T!v}Jo z`(!=YyCp@#Lq7W!X`Hb=Tg%K@ zl|dpx`MB&JiwHx5y|7f7N3Wf^8+f3Ri7kd1K_ATv?i&(|{Dx?Bqk>6On3bj;?hv;) zJgT=>+t8O*rWk=BKsP(vx>y!0ugih~uuAjB$dquP30p=QGBX&7m2Y3tL0&E>`~&u9 z64CNR>6kB=8EpaDR3u~d3S_;mx+7}y{!V@MgJ}f;)EaD82ZgtWt0Eh(sdFMy6XPiZ zzyP2V=Ec~V%&)uVLfU4QaCA_%>d-uU$-5$6`T0Q8c-ujBre7nrZK#xP+zyEOiwew6 zX1Hx-6#JY~GVDMyuEP$J>A{>KSf#aa^w9 zX|zQMN8L$$(;yh1qDS@^a;7tl_=cjipD%f&`3@9euq286U7k_qqojfSgkk9;LHXit z9OTVqDop8f#rZ7j+umAb=$;Cx-)@1W?B)`wJs^0G)o!@Cjzwzcb_A8vWpN^^@?TlW0 z^D~muuIClf`j1Edy83SQA6Ngd`p0`pk9U6235BV4em&kBy*Tw7P;e_`E+ZdJ+p6rS zdVaD33$%sf9@WQCn4xsiCRMwbxRT5#xHL3v*I^u-U>|NAyd`n3<4m)jvHEiLDiD6H zy3_~r&|Iu+YhRAq_jcP)=ij*G>!gJPL_d6(By3fCQ!RfT4N}6>sR@clF+k5)GvgrI zSpF{Z+{ZhJ#Ww>VPh=Z)(Ko>}twtYqtT|geE4)NbQB+8|^1ysEeM=Aaw7=~VF83eMxX3_D ze{%=zf71b3|9U>DPkw4e8KZ#LGz!i3^U<%j=%tqnWnz;yC1gbBww62fLB|+K zEWF{>FbV6>3xN{z@ZgyxV6jm5%?Is`bn;AYCWap2Jb&O>RpgC&-ifcEu?c!ul?9tv ziJ4jRa7Y^vExYkr)sYiKq^aV3gUX4H$PpKNB866x`}TnWcCu)S!4ADPVA$ zL;fe0C8&t}3`jTA;xHv*pqIe1!cEO*Of#5birAD5P2Y07Ncm|)Jb-w6yQLo^W-59^ z-G#??y-sn|<>hHsFtA}e_sSd#1W5}EB%u-!@zI0Y$k>OFe9b{4c~AYKo$|%CG;VZy zJnDlr1D0LiV#4c)&GIrh$lE)j0I1Q!P1qJ5Qr~DmYU!P4T4mgpb2|Fx)jL#?H02wC zh{y-Iek?-$8R1>r&MyZmd;y4dA6k$Wc5pNy$n_}RpaSr`Dq6GfE^Z<-&py0Y!OR`%~VY4}-$UvS;(;FwH+1V@s2OAxL7Mz$G>No|^3kx&Em%NN-7jW1zfN-Ve z$J=%R34%1A$oCr@sd9)D3tKBpMM5rZ#!DoJxRnLNB%yi;=L2~ms{ewZ-~%U13_wpp zyA=7a4v==X$*7~S{X!5m56-?FMOaBfYBJ(tA&KtWcA>1gu!qL8j2QIir z7BS~iOf>xnE~@`se;x*Jd>bk||(UtiKb`gWFXh@1W>q^_Ew7HifH zobljmCCi>qVeqK=;G^at)8|h6#J<5svSSgOJu>I{f;}RPz~L3?XHK%C@f|KOs`^mI zaT}_*Kxp+a8slF;g7X>smiG6)O8aeYC_6bFVn&D0+zIq59(ULbpa+{v73D<+^9R2d z7)(PPz7Oz!ewr|hJ;AF4hke{*jnc_XcX$qA{M2#EnNfzn&&LVDmXCCr!GD~p=<40F z#!2`wD;caz6K(TqqA$Uj=h;uK2Lrgd!>dhF+-zo!|9rVEFy!~Fd&1(>vnROt6k21O zMIwzEETRZ2fx+X-xB!wO6%CX_MA;qXr=!XHJCjf6w?E+TX-#*pi~G}ssT=J@iOhc0 zb`9nIDd>)@5TWM5ISGpgk`B{2yEA0!p4km;z`|Hj1xt~Dd)rEQqWU)bvX|y6BG>o{ z2yXFfN;>SDJN~EB2dxl}M9~03pffo3YInIU^|_+1XEp6@Py>4Q(tftG7#RJqv1kah z>qSHvLPAK?5&2aHu@r|fjGEQ4Ot|woN!8~bj5ZGg4Tc~YT2EFV;Ia9~HKlQ0QhQCvzqZ&pUnyqkC{9~;)sc@Ze&X=NgV&E^AZz^cb!G7yq5H7!Y?-GXAZNX*&7EPqYZr-KMUN2^tU|=sjtaSr9-t zkzY$i7!`kUirj-EJK0=vcE6+L(x>0}#_#sYr2F-v&rbOC8{hi4&rYaUJc`ynU1dz) z3q|6q+{sqX996QEEP%OK*H1?;7VEE_uD+(ApfY%mtX#yQ)%;uIA`HQ2q8vkj1^(C$ z@n(il4bnnM|G3ngHaGaCpqdocCN4`tvVO2^bsvCY8F(>W9^gpW2#0KOO2qe}5-AON zESEyM28Mt)VXKPK)7dJhMkmk~ETOdwgFJ zE@Ve4q>Kd}>hZ-W)CGj^EUL}eK9cMAVJKEms;d-?ZjutM?|&z&(1P8^<=D?9Dz=NC3$y4?JGLyAhHc9NmiWaSJ^c-v$C&ZEfmvP7Mf-yk zc`_{5^qEkOC3-vw&G0YSMDob+uW~lu&L(SRmy^?tB>C#DCu>Z0G?jV#C~9r<;43d0aHLe}>aoBI)2pB@VZhO?C`uU96{M3P& zL6*~hgXX8!DlzpoyToL9f zHld5ng^5LMxH4+v^vXFSZM{snY`4R@l&}m;4=kiWu|qe)kkLf{NUea#DUp2RG-TjW z9b5g5kP)E_os%J|9c1VZU2zq+-T;xLA}GLBNYg3cTNK)45y4W%EiE!+ONa8Kj~`Wf z^$PsQqhChIhm-aE>^9TR_(s{-c|C3Eyx7|`R?;tRCq3|O)~;WS?{Ek>>;d2SVzWy} z0PuUjLhC(63h?peJ&-DdNz}bfSx4K}@)7JaoBCJVI%x{L)YWWn zM@#rSE+mHO?O?^EndC@PANSF=?p?z2BFM1#k~xJfHAF&C5&M{)6g?SZ^WK{^l64ec z)KWN@*pOzyhwGDxHvK@0-U-%$cE#Zk5nSSJVGSCbVS=&TXA)5=U;U10pNaI;7bUOx z#7U0ENogMUdfM{wc>I+*p+(t9#tr~`3fn!Wq1P4YmKr-;AqPb zt#bjw?&?~%GKSiUw9%W4d{Y^Z{cUCpF}ckK;q$DEp`_()Dig4eN#IsE@%m(unWGW6 zF_oG^DRm^DNcE^M7L=LHwYLF$B%A)(hkN}9TC?zwt>6fO9)Yvi z<9d#y_A9l=%sW5dWz>MRy{7x+faMcCjeH||h#Kck{%Qgy%0G?QM*b4==Q~o;6okkl zYD86}DF!%>K@wAVrir%tNWg*iAkptpY+whSzn$_1M-cUu~vX{K-xCg+Myp% zPEQcvK)oYzuU^m#%N7FVGMuiPlgl|C?USM`3i@3|ox^>40IqU=SYFX1u@CV2ahty` zPiRi>uW$?&|BdkgdUatK;nIh9T;TpWVjJNO^Z8Y35+UJwr?5p6=aV-&OZLGUZ6cr! zGQlUy>&)dE1XC}DWT|4SqD?V0uoIXsHQJUf?P$cd=S{_#c$f0ysgl$~=*~4FCZ>$W zd7>7km3>!Urzd0fQLd3!g&Ob$Jis*B;MGG$L4tY5+Y?D|y31#5`2jVKBhk~b`{gJ9 zONV&hAsegODZv7<*2e=iV!7Rhgn+RvNk2=rBu9ilRPll`BkLXtx7T?{0FP#>Z(l4= z1Ccgo@qlp1Urp?2Mh&q@%j}V_CKPzf$9{{+2bNrzB6`3hTlPfdtdeG^WQM%GH-5J-y|DQ;7vY z*OS@*HjI{fb22~s#ZN*u2AxxhI1J`)$e2ENx-w$4Ss{{&rns6F;zt83WblfhV8r|} z>8M4a3W<_o5FrCn8Mb)~cZ1JrS0w@g;YRdkNBy%++*i&i-16^_UQ#uOM>#){y+!q@ zaO@Uq$>OIuz_=IUl2RrMho{!H%wxsdf9YrJIQb>)$;!KM;a{H}Cu|DaYT@$e)&kObMT7e^fySk$8_;_i? zV_u90d1}E5F_wb~-i$2q%y0_;L$xrHoe8zF-4#95tX}(J+CC8u$}YwAx*M`mhA$sq z+*2p5=wcoZMkhw}{FWXUeDTRr;WR3aVWqbk5S0tVkSsN)=P7t?pX#NxUd-To+lpru zxiwxIdS%IVJciLK`$wL89^cS=RdUJ@A_w{SZb0TdXpMyqS@`KwND)Opn~tfI6$R}I zOwi3xbl`)DjSU|=>@|c(21oMM7pZNsU5!Y;pe>4H&!NjkHf?)=zrMGpqaGjjOU>G2cM8dZ4B(>ifPz8nS*9<5jTWAI> z4e?_fN}pDz$@Ocb!f)BT{j3$p)2E9cd>@+pvAi)z?Pg?mp$wpB7yfE&od%*qkJv#g za>&aohlRVX1i~X_^XIci5In^Xa@3yEF(qaudockXuLf?~RP7nc^95|?S$n=*OV%8a zN4E`Vc{;@kpL6Y{vbzcinl&zb;IiXr0b5=^Yj2Rys$n|di$6tP^e+D%aKX+8sj)kF z*xuk_yARx2PvzE9A$XY_pTV_YmL81qQMqQ9fR5AyDm3p%euEZ*e2FIVyhMhGK0`>< zNabDMDbJdy-(buWjcQD!!wq?Cov3cQ4`M0_D8)k5W)L7>$qb27{c z|E}qtTLLq?CV)wTzZ_(ZNd+KBx%Lv@l(-0;DFN%xQDl@+{1wYvCMpDpAS{Oznxay{ z$0=L)5Dh&LN3tC7Ge}!6T|&q6k}tU*vwH@GHFTpY?7Lkf)rMGb#WOEZ?%v53z6cM^ zrPM7jX49{h0B|rm9{tdPrA@nuX#e9CJ+88gd*ewi9kJj(U^dLE{ah1)V9mh9p^I^V zQ$HGZZzyI}&K59qx?p66g{Cc-=~BU|If>(-nOV3xx~(DwfLzUv{ zPUAX*k(l0Ml-Qeq2l67A(0)Ff6ql=AW6_Zg>q_wK^7*_6nHMRRNu5+CzM1Tf9>zq# zx8H`2-G#DeQITKgs{Yu1AD{)wn&%;un_nmn-($ssQ-L?vG4o9gUY;#1F;H5DVD3BS zeb-7S`9-P_>e4ZvK|EMEU}X3MD|>Q*Jap|DW^L$St2@BMQ1><~a53#;^^jXYvGfph zCjGhbTwh(ML&HPeopspwd9_XDrDq8W8piDQ*kxneMT~KdvO5`g{nE*cZuCNV1buqtFnZ8FS{8YdXJ+c&35SLNA@>Nd) z$y+ebd{~5snMhsa>Zdzj>4!r70gDp?iC(eiBwy%3yEC)tW;psfE|8I7Z4sq;DUO`P;H5$y&&{Jp(fIY+#9^h1vI6=q-pJE*@cGijk@C;vq*6&+pJMgFH-p=ZlA*nP%@Hz4<2 z=O@{bZh#}Fzqw3lNmc;E-~4cmto1u!z#Qm$-erHKtCz3y1)JsTbbSaxL4w>~tQX}m7*1>2tB93IGT8Upq4@;tlidWjPqAN6 z;?j4Tl+m+ok{M}w5HdxdTaGmHbR_Yk5g73wLRtUGl=R^c2mZ`@YguJe-0OoJ^@yZq z>hfUYHEhz;5_fKCL7}*5y%Jb#W-aX?5NBSLjv69W4E?6HeWYfn&xi0{jc?NqU)KIM6Qoxnf>MMVbs_Ls!Wkh8xh8}LmRdAOnpe1v^CKt5!c6AXn+5(o zD%K=E0s|XZkzG;49t3Fza}iy7gD^sJPto6r*L)Pblei#5bRDh(QY}2^2FaEK0&3YOCE#Vxi)#^7zda};N%zytvJL={$%u*LPe-l(aOF0 zlizGH;UzjOM|$wg6L~2wiK8#$Y+@Z^6AN<((WquEa+~cT@eG`a02uh zu)1`(aJ$MKc+;4Tq5bK~XmvaT*hMUyt$l)&PbBg&gW%%eI^$OH*V|hY2>2v$= zrQ3&Svs_Ux4W4t)EmH#$HkAF)D??}_b_~-MS=k&a_Ajuhzgl!(kKtvi5&!irLE$?*P^TlL+74y-Io|EeA)ol!;~r}!ixit!g&M5YVxc!3tU z(dJta9B`(z-LI0;tyu_pj;>!AHHtOgtXF5t+gbBoRjs5#%5=EA=e<@-x?UJh04Tt5 zpjTIzAOLdNb&BlHFVhiqG^chKzg+|NONd#&AsghsS82OFVGgD?`eH&qpi47I=Tfcd z@26|*;P`TN;s@`5jDF5F2?czn+5(~`l(dp9wnFs8;}m8(1ri&CbRPPOzGPIq@HTCw z74c;Ii;M#72vy21ug}ORRnn~;-fXXN2?!Oz4k>WQiMF+0nW)VImp}0Qly%{L)`4C;UmvfiE0fk|GXHeV zGaRgfxDaT8S|2XNJX);J=(rG;(H}DlO*~@W7;$=pKN#(8CfuZcp*f+I?eXya5wuI2sTRjK zyd*~d!pj8?HhawCH6;m+Xp6!;>Wc8c-uAO z&kI1_=lQi}h2>o@P7E`bS7-yToT`{cZEYK#UBn&E1Ndb@2p590+ZV67-yh6%lo3Gf zJvTU^MWZg$(1>#ZsbQ>)<y#UyH>C2_}`ET%w`6+yY&(P0_aMz175+E{j;ZO+T#`_omd)&W`Agt&-AhOChl32$9h3O zZMz5Ip?hEsZ2&407~v%B?vpDMnPWd%4kA8LRwVbpq znWy;ULXt%t;xu}rP?Jf%<}3pf)UzMPY?%#&q3mE1Tvbkwv!e6)@g!!=BG&G%mgpy6f2(g zOz>tdMbX9!UuP-w9&y^mYw|H&NTCIkZ(>{74=eyeT5>K;6<-W{zjif7vwyj|lLv-} zTSosC^GbeZ78i>jZkN`BLOKLbGiqE?CSafHCw#??w%JH)UwWQxEYxR^qpKw^_S>|W zywcv99wFi9AJ2(%k=u1Yy-YW6#SNT91mi5)6^;ONK06z+O~<>qn5812#J)T80WiCzUy#0>|3~6#Ln9Ag|x=G zwKdTA*Y^;%HTcpwOi8aXkz$I(=mD2F(k~ZZHll5P!{pGGXzdZ&~Ou4 zVIluaLm3~61U za+PwNrq-m1yn=O#!1(iYoe7xG4;Yz(F_kj_2F9nMhlr=>cLE#{mq{Y!TvOji02s&SpU7uO|}Pl93y0Xpa~I4 z9&@kdU*Gm)E@yZFH;ErQW!X(E$1CX+^K0E;b6`gt@RL+B%mjTNL%sv6+2(>F+uxjK zlyF1ZC9q<80;9~w95QRDHtfYP$j$wglB_A&u~py+NzL_%<_Yr4 zh?|%=vxbru${9@@S>gOFddWw;VrsOao<&k(dRmo1xmZi=b2G!{Sn~zn;V*w4mfkgf zsO9eYzz-~Bzj^zKPMpF*g7$Oo1@TGZ%V{;%?=UB& zbb{xxP%1_s8-ID?ho|gT_Na|g>y{{p+0>t0jgc$w zEGM`C!co}Le&Y@HH>a7U)yc_L)^ktDthifYJ*S$hH9hJWm-Ab%CUWFk!ks~UH?NdY z$(XP@`Ps&t7%^mM)FW-RyviPs{6hTxWmD12dt=J8lNcAl3K_anm`$c>>nkHDdqz6u zrSIt((jMIbn`YYymNp4^sMlrl1PlOMNGrg68EJ|-E>UG$f=Gk#6!pM7j+a8P39~?Bk z*I8(Nx={t!Gbq$&jnc=A8%fF8CfA_;bm+fn7L-3AV}Zx`AwTi$rt8uw$~hU&Ehqfm z#hH1^?6pjdX|;*PaCML$<~4K%qlXz<2nd6$h!KX)@V=rb0WhKp&EM3BlIXSB&Tnw4 z>|ft6O!{b(LOvfx?8E7@i_47Kmx>$qQ*N{p7R9bF3!6AYrV9JHke0ERp6+~0~3xV#^* zFD?7mvXK_(ZQ9(uJK5?RTp3B@P8u}V`8F?VlU-00D}Qy?yX+;sj%F{>_BQ>^j!g2rXXL2a{}vzBM0a2?bpSd<%$VmS~$JYA=pd zYat1#(stNNY6bn$-V<1c#Zmh0Hhg|6aA(GomI36n#Z-d`GI5(u!+oPTOlQS?U35^5 zRibps2d*3&_mf*ljVc<`7(Bk#%Rzgog=0Ol0XT?q%2RMU2`*y4$zjf8lW&2)+zrJa z?z19mGkN$pg}CPv+~VVQ@5p3v$-ZC%K8!x5_gPHLLU~L* z#Is}4LECF_{-NeqrrJw#uRPMqL^~p_GH!W5R@uuX{?;~Isa%y@hJ0JUF&-J)C` zl;3ilup|yUs(&#pxh7eJ<#$iaA19BV6?jrQ;h{CI?|n-AnfwZj#v?HVN-kr3u4zLOj73~&XF}YAyGnA5jpS%oLwIg+%6;+x43b5y*WJaVqfxjv@6z*loe4g-H+_DpHA%tNW94Ev z)%$e$)2t*fb~HvJx}l3|ACusUsQPm#R;=x)VT`lql^;ClnmQx()5g<4mh7Fx+~JYr z6XxhC*gN|52{8d6TKTf3+m|ZOU_&HLw%1`gvG`(w!K*^CgTN#@f z%jGK18t+6;nm=>*DN`X|Q45BV(na^0b4~GtaL{YU_AZjK6_(&7?(Dad^nvEO-UY8& z13(S{z3kfO6w%0%8l=?r!?t)>!)||?*oY+rr>g5NS#S2T4p2MGfb&hNG$|TK^rg#W zgT}q;NmOkJIAMsf;~Ju`;Zt^ zbRY9ma(DBWIyhy=I>*_kuLq!4aBoa2q7Dhw-L_s^68n|UV$l~ymE+TVa0)7Lw$F9Y z9P7K}^cEA8Ye0WZpc!ShAd-3u$tHF}ziHU^l&+5D43;e52B8F_bGN&qJI(K0tVutP7Uu_C*Gr|<=v#&0VBGh?Akv3k& z9v5BMeN7G~*eE;-#Gk0q#Pj2_IR|^94-LK|2@)+YXU_=pRxJ9q? zdoCjS)DjpdYr(g|p3RE00ZkOY*7S_&60FHIO)ZttSc*qv4K9kFCc487=+ol+4S^o7 z?aQ#U8eW#lALCU^^ct|}pgl>2lm15vq4RagNzZ9u4B1R1RQ(5|OY74JJ{k#b&vXnF zvvvtp42HMHeSKnpFSqYZ*qD!972qlbvrVLk9#`cQ7bYX82XVf)(`*D|6O5YK@mcS@ zvJumPm64eQhR%8h^@N;OHg*mhlsVY9yIRY_;3cTiHVv$gHq#7`ee{EQQQDgl2IJ!B>SCjEp{syH;J4#WQ_ z)X+@Qj{fQN3D@pRNAVXD82(L}csxm)o@bWp6Q@ujgZRIFaSDR@gr)ow?qyNeyqD_z$T^d)LxK$BRfnMt zCZbRsS6Z4G|E4HCBgvU)oK>#@6wp}*-|;j#PRiBEq>ysVgAyM{>+~cT9*_byh$XkN8^o_A&}isH1sQ;p zULOBQ$DwngBpq)c927Tl*-;9AK^n8dh2I zR5S+{%PBP%hE)E0zyI+!Q$jn?f(Tk%NYzurv$prOp#%bTq#)l+Vu9v^BZ{oESyFmwj_BRE~|ph+dOK`SG+{SW>(aw1vDS_PI&gPu=Ms# zu51GA&}s?(bv3E}VeUjNI70^jJ)j@rMEwvWM0A_Q# zIy89~)zNTV+l+Rbza+ zQX?Tr37!s?aFQdtE=PLqb@YIA2BdO>N9PuW!C?(TMcQCRyUk?A+wMYL+Tbah#Y8o2 z)u$@Q_HrgGh8f4&rWwU6E50n3J~h}Qp^Tut;43;x!_=!(P+}eP{X}sBwYs=N>=3dd z2CAbJk|yU0wxlQ=v8!u&=)a~@=8M*4{u|-g&1##fD*ZIsG6<5Z>4cff6QC_muvgmf8cMvLw}Q(p+9wr z{^apGYwx8lu77W>H|dA`%2YJR=>?}j1t^!M*XtQJ7CqYzG@a&e)-5`dr^yb4kBPvY zc5z$JuO{{620F`3;mL;L)5S!1z9@KAN17>~3aZD5{D-ye^pf|r)^0`#dB8EV9Aene z^1b|O*JYjYLJ24oA=@lZ9875c$#rwEt0C$vibvjsM-q(q_%83|*O*A{|2Ya*YcCQO zL&AQVmRheG7^r;zY%hH3jv*(azmmJ0KUN?R0q+vQC_J#;_?=iR4QzdNlW!VtZ^Cm` z#5!hoY-MWd{(RjIo^9q)UnYq&W}O~RQk=ljL*TDAVHn`~mCaokSvwE>yen)4!xYb` zL`7MoeS}95Q}u>{ids~e$b6^5q**IzE4W&s!In`1BPyLM@pFOCc04~XhzXZKnrS)g z7PA=T4NLa1*82l#ON(CSw&#xoy~>kBSJReCD=LzV+S*21*DXj1@IWWBreIUIJkACW zKm*3?+d4mVWsGQ*mv6z9v@YDPW?NAmUAT9XTM-42-lY-N0Hrw$1xG~wX46)njo}IJ z)MB4f33?>;;jzC{GcsU`Qe9SEi)=K79msvO`?QbyGR42U>Fi%-F*+PT9}Tj)0P{WhK354F&#`PVn#+J;Nrq%sg*Cps%gXeSU=)BJg}m z*X3xT9$*#%=y=E?hToa`ujaCeVt*0&4)*67cw z?^#bmKVu!jM}J*jJztK4sX^^b42-}BmP`{`se=q*ta*&_&v${Z1!#}YY|&BdrUsO_ zwiBO9+f`N=c;T^+#GXl>pfISk`a(Vd`GTu@JAZj{u?kHc!54Z^dL6rBjcwo`fm0S0 z*(MlM&&(4VRKiIIu9&0w8syMx1p4QB*5`Xh?w9hB<{3<e_stm(zyR<|QlzD1Gid3H!fHBu znWQ|8^XQgK${ETF07lLfao-+%?F8tbY+$5i7o zX6Jc9(bkE>R`O9or=ST^rlpBmc&fg$IczASZ!r1b^Y5-u4lW zC>WeWV+5#mtX)2M(3K#9TZpjD$1T}iOC`TiI7T_=sJ5!DnOTi4-qd0*tC^Z}Jhd;{ zNkT+I<*%Xfg=*cYs%|kUCPi%Ox;b1%G~AKFkP}U}$g_7~T%B4y@e& z$%7+pNPQmQj8ny3qH)*6FA#dpRv!*oh{xYY!<@0{AbQ z0IT)o`~u{X!ee@L4e`~VAyQs#!D*)Hs>!7TJb49( z+(cl5>r@LukoS5rYu|(oN&rvj(*v|P5Sbj*-M+`knwnEs#vJ zT&-?z#K6%7l8!n0B@UV%HPJm?Jv7B0-0hd{n6S6u3i3=bJ8~5RHyC|6fJEyVXKZa| zi=%}-#E~??kyI`N=EM$+^?~b%!Y6`ZuZY|EViDpg8ch#NQfSQB*zgtlFetmkQJntyQeqZOd;%cl7^Feb@4!HIF=w* zc$jtFd3HpAk*)Q-*?@*$Sc>l(OJ7h*Kme!Iu%3b6h2T`fL!hApBp2N!R;O$54r_$CYfV)Nr> z^x|9V4w?Sq8%k#EaE!kAeNqZ=@BXM8z4(+rf5eaa_foh0dm!SSEq;U^@$IExcs9D~ z+hiu#Bj%gM{Sofh7vH?2pDidvKicKNt7|;DFE+aU`^5D4i!1(L(%vmZ)-1d8i|-nl zc`lvRRhbzTRdJM>mMARKjrD37A*oxqH5YdyVa<&3Ely@+X4J`(k;=e3z@-q zXd?~A(t`%i!(a?8nR%!lG}zci^mM=KY2F0J5*TI>ewcYO4F3Js+TY&mi#*kmF>2Mx zi1;r1vi7?E*IK`Tp-Q%yzT|e28}#L02YEr-+^_HXT{c90_y&*g507{T;*xY#ZuaTy z>DBhag$ARE>9xaUdTzR3e`++kf_v<3Y5XgFVPn!48m30(L)U9Irug_G%_?!2hX4D7 zmbC_RLM8l!WS)~3)$%M8lehMjy~+`@2B`Z;Oz+EUZiz!mmWEz##UUb<|A}!$(JDG2 zQ7`oc7`ZarQ0trSR#9(MZ7qQsY;2-;Ix}--N)SLNwOLFdTPnH6;-)pG%)BmsmWG3D zx)K~(PDVzfY34cFfoV3BM3=LHTKe-JS$2QBl9m;vuWvahE2_4wi$yRJ5Dkl=u8=0T z=b&kW!s`RD6^e1`*p$Ohy!lC!;eZ74UJWZ zJ6_Ok?RI<1Z%_v^Ya6+{Z}Emi0Hi5EjhgiJiI(Ov(E6deGX@7uS{Pv(V0}h|9*O^4 z&50J>-@}PDe3mGodm~M3ccL;tJ4Ot;dM(=YQyGX?+Y^Mws8Su3#qbYglJ=%L*#UJA zOUl1VG9J~RLO!(2YJm9VUk2Ob0Qb2{T-%|Ud{q6N>hDoP@$3y^F!}c|gw$nX@b*2U z##E6~a@DapCi(fd`lb1+e)~kmNh8?EcV|yrY0j{f$4nhz&fRikD)8e3V=liu zNZot5*onI%X?E0yDp!Njj6pgmpfdS2WNCA5@`q3K&D1so3z*VmcB?KuuKp&Ruj4k2 z=f^VtGtYB28)^IgV8fyOVZ;5#Q1nYZ+pF)ryKB3}7u3jtD(Q3+?G!ME@JthZHs~La zP}R#((bEPx55p|Do?eJvg`5$%-&Frfhf3|B#R#7Vwi`(vsGyhxDGhv^ciDCj_lkb9>Vx}csQDa{ z4;U)*IXFo)l=kNG1Jt#Fa@2nSTAG=>Dt3S-P3mpcm$HKO6)2p+vzC3$Y0cjKzIs!v z28WuUJh3bXoW)KC0=4uBNomOcoOPAUW-i)!xQuX5rQVfbj%BMnDhJa(8_b57;IQ6o z7lly&Iex$$ql`yvn%Ih7A}@v8ExJbCDYm_X4~NkxH;z@AW~Vz_>BOV>!?CO1+9Buh z9-i>P&Z`t1%4A44Tb*@@yI9DFe%{LdSAV1W)#@Ly0b`iO)FKD>0s3u17p5mDh47n>R|yDhk=D}(RhQRetVK_jc#|4 zV!p`kA>Xrx!-9QKrIZ8bPQvd#5UfLZYJAX{$|tvkBXOAK#j^9&8va%!O9-;sjbk&4 z1LT4&fb(YZ$x!7R^v+3Ha^nK(Qv4%MX=d+$;E8@^;+j8B#PxV&oe7&t?NTs*Y*-XP z@&xI#g0>%lp|Sl-6)A0o;^29HiB5Qhf)+~R$Ui;Rgr5YX({ZZ1gXAH)GHjgzD|Msu z8Nt?3RRkx*nwKhq0}irqsozZ$zyWA53Z((U#aqR;$yVlmG{75rDW@}gF!{a7pG^Ku z^_$giL!rel8@zYmTNAhs*_h7ATnZ3l+80waDN0Y{fgN^F{Hnvw_~NXfkJN?88Pa#n z&p33e5u1cbIh)MWP3k>PYcxDSytgaQp1~{6j%P`Va2$LlE?57O%{}V~1ga<&2x;X# zGL5)CS-uR$XiMiYc}`d+TX;MS!ffbox<8r+KmCobA(Wh#ufZ4?u@ogr6gklC6l}zf z7x%@%W!mYUeQd7*>kody#V$DjxGQj_V8v(;UACt^G!}0>SCHg~+`-)x2UMoL8)je@ zRiSD%<_&^8(yaMb2qIH4E3Z*HeEG8-X`&8(3XEbq#lB4!V*yx|0$}r!p&tx1Ggo%Y zOw8tZ3VK;uMg1)Klc(mA;!~wZiI-SMk4e=@A2u7ZLl=;SBz;hB@xS7(>knG{=BWDR zd3)p69!&nz$;){+3=3Fe3bi~C2x7+!W75?C4ecCLvegby$CRyL{rQG#9E8=K-C#Xx zEz-pOO1lCDD)f=*Pk8Fyd@7VHX!&b`ZFvbj^-gHqN2=BSXBMD5BELwD!v1XbIA2Jg zlylpO@;1`aghU7BlT8YaPSn@wtx_H!CPY{C0xGH$i*dqkHpSzDKZx&*t|)`fO{tTM z_Td>FyFm87-kjuD);Bn4Ec)UB%4SJz&-~Vr3w$mYIBGU~PNu`^l+283Cpacs2;bhg z0O^t+;jX~aqn-q=t=~qTt*L|hd@y~)rH)&FbldLg)s;GSSKctksLq^UKyOySrY`M( z4ZdJ9TRa48-IctP_K=v82WJwky$*fY#AFU>krn1lGqa_2CMCzOY?g7O>Xelg{2hfk zKh(};s(O7q`Of4ARK4zz13Acpz3;)h@1TYKfcPg^pM1AHmyRCgOj{fcb3V9Leb3Z* z(faEc!C4!e!^Xd$sJcqYy502Wwc4J1;BJOkZrg|m^{|WGPsZJ%MjJ=gNAw=VO6c+X z5!$nfoupbt2%M=FKSM*C>`bf8T|6G`r~%0MxlvTqTUDS(qb6fGp15M&H%0G|wA+W~ z%_zuwAqjzoR=RmL4;@f-q~E4Mq0yrP6LI4+9Bdim2o*dEpvxFX)xBLQ&Q_^C3_&<` z4K+gt5#mF0y9;rB=$HZ0xaoZ?L$$ zpY=;_-QR7#^^1RFQvJFqop{BttQ1&NZT+dkuAPJh1vw&X?1B?5zD5&Ke3~>YtZBTm zDrm?0c5{6}FHbS6opt50fy0&v2|)uNVFNIo^Iq1*^zmnKnC2M+)XsiP%zY4c&+7YE zA>v~ktvUl+!Jc%88}hsJoJjZ#1XZ804;^4popM(;q>lc0rveKf3S&&22`h;MB7qbS z;ft*A>dj_(no3`<=;Ngh2f{4e-wCcXw^>-}3y=%27psfO!@Qib7qz$p(*Qmhbb|^> z*mtVrdBdN8e@UmM2gB;}ELA62QC9kl57hO1u>$4HZC)5zPd(vLFbsa9Ft(MoxMq7& zr57G_y<$kfFjKJ${<3nD_9D_5<%~-(>h#Is)c~r_RR&5^XSz(x`H#Lx7g}uz6Ww;P zy~S266`f$1x^*U}m$bUiXH9f$x-_Ek;}Ruq*i8fTLOoPnB%Y0*`8hQ|^ZwD9Ba=mI ztkez}#ns#H6eHOLE)n|wqx!qme`{VIedC)tMz^IJ{37dA`Tb)WFT3>f4a_EAWyntX zurA-cN3?rT(K&fZJ&}q|5d3fvlyf|(ZClueRqh{X3`~1gbw3A#6+)2?H6HvqB=$s` z*mOi9h*zglE~?||rh!0Ak+5?Q)a z0PetJVXP<$B1$wvp8~wQwzG`_cFB}c=Z<^zg);XNCGfc|s_G;fYPake7NVjfn}-3M zXP8yDpjj*@wf@jtS@Bs zq9M(qCPu?5<%kox`!Q1i80Wp(=uY=*IP%N;8&dM~wN2fXe;zIwsmni;I#DtwFwLVK)0Kx${SsMpV5Z#7}9UVH=(<|&JM zf4BbDUz@m^!hYBFl9J|qFlnX@njXh)J>=illyN`cti zsQsQ4jdRyi&S-~@=_Z^ezu(@yQRzXX{<-z(OY8=n1U1DTMAI;BgD%nMxf?HBXS7&1 z6hMA61u2kt5Z3PPAdM5r!|PoVmgcY9 zPZg%HNA(J=_~Vg*B^07G{+0~$aX9f=Z`~6y!auD#p`PHjbXZ{0*#p?R?@8dlBC*K(0!Pg+dg*Q zVz%K;K6oSVLN{)rJPl2Jf_C3&$3Ex^+?*`2{Jc>XEeRa}x1&(1DZiYr9slxjbwWz- z*owhlRCLxFc2#DL@XHUXUyZgn?r;4%CPj8Nx$KeWp<x@KE>7f)NMv;{Wx;4Cm7>-$UPX zP#@}?8eg+M!IPL@AI(FQlN#i!gQoo1TkmWUe5g1ONWyU#ApsxC)7Z z(&5p{t_))Cs%~khTenp491ZBOJtdXWsuam8Zmm&m1V6Z*ynB~?*&Ig-EE53hXbMn!B*IG0tG=WLZ zFH3UDdwi;tWGX+NBJ8MLr4r3n+|hoMcrt0q!Eh0|!SlyD3^Qf!*XxyPw(`yEC6D48 zxeMINC(TT`yIQ`x)pbf<=Ec7TJOtrpSEDqm^#(45`)gh!1J3S1e`G0noLLa|l?!A$ zfLe5oevY{w&Qhc9v;g^numOu1FSt-g#=r}R&}^w}+3{(MoMbavDcVyyD9ekec(+(X zgFo$yQe+++R~#pmSuUu&dEOjI+%aLal=TUp=vjYre+~Ok5W=;F19Z-j*A&j453Xz` z(@$KO-A1j~-N@Rh=F1IPh1fJsVa%tIp`ne_ z=xMVG=uflTADvW`ERpGfr}x}ey-14s=Ki)|j(hkBIlE?sFzc`gO|V*xCu0YSl{L^2 z@J(o<0;G0NhvmEuHrIATLU9I^k4xfYTp$;ro8uTIkR6V`Ae)Cx#yZutB3JC_;6=_`5i^O4h zAv?`?H^a4Nh5})eVY~{U;y96RLzT0Wiq70&4eQOMc^|Low>H?{zad#RtFO65$%90j zRaEQx+Vj8SU6ebM+444>x5kCB$q2x>Gy7y5)yDVP<(D-PskiIHgA z*W{aj9XUmPvhnmP=K}6Bfx$9IfHydzM~vtyx%vnc+Z#S-bv+$t*Nm7M-~M>lGWGYx zeu2)y5l_W%tw*68Xe%7J6pQdb{TGfRKj3)1$1^LgU2e0c26U~$lya7N|jT{)NzgPmM zJgL@{trxgGn&j}oudQ|Z+-s{yCi~OU=g~5hYy1T%-Ib}?BWr2{-`-WN@ERNurI`&T zMe7e`%l5tYtBpkmpnEFX$Gv3RfbR>YlBIXfyLSq7pF@kN$2C3Kdw+NDTlC`lmVL|z zs=dVzJ89Juus}pzNR#@IDc%eX%ngO?{?F<^s{X6$zoTA-TGWxNNye0%xs*nu^3+u+ zKVT~2bWPh&_rtMr)(dn-jU}DB?1sekTF`(r_XI?AqOiPc3tn_W&;>6C0HPAe>ytrN zkq&I|UDI`mZz!Jv<0m)I=QOVQV3NM1cdA|Z&Rkt6=F^voL zgZfcZ?TQrjCKk(9boPW#?Eu@MtQ}WA0fty5gr!|HwZ)q%AxmtZbj~kY&e(5qB*%OYYf#8<)G7T~IF>nJx@-iRqk34nXf z)dO&kQ|A&-usz*Xz=V=30EY~KN_J7&Rm(EUtY}Cw3Sohy!92eaU=*2oyc0IjVg?B9 z5`sc)@=O5J(-9R}M=;&rtqy`$d_TmaSoi98RCFU90^rrA)CiY?ahq%3$OIXIqyazvu#V9ozCIwpqD6FRS!`WY0=5syU32~^YIj*-)y+#mE{X0_q z69o~q735}DNM<%l8Ox~vK-me;`=Ss)bm#k67CS*??1&lFDvFb-Qgcz@L(0QHu0E}P zZ4Qz@|ElvY<@JDKzq)WH9JDyJ0OY}nXg1zrLq%sRN+Ww=(%o3=&>@AQ zQUT2Y9f$_9N>-asfI<4t9wzpmJbJ9Fh$_dH?Y6NN1*;y<`!K?uZUcFT?KJiQ2dpD- z1T1;p>6!T;dzx?8eu^u6S>OfO9>dyg%K>;rQ98o;AHs7+-_`Gs8sQ~&IZ*}0WCt-O zscKZs+jTU}Vwr@2PALwtmFA&l1Z?K6!fO!@#aR($d#t)+5=Q6q#1_o4+oGqX5LamWYnZ#HjcEliBTv;5JUZ)aJF73= z@^G<`4@gM!5}rKplUsYCK@?L)4-40J`4-@c^<+r=`KYt^PU=<_ChCv+8%wq@j%<(| z5+&Fw2i%wSeuSn(q7rEoQdua*WE=Dz3`CFVXYg!ksAP_Nj&&aakw)Xw(_56#o3$9I z3B&Smu}>0V-@pV@nJ0A0T>dE;yg#hk8Q^hgY_(J!)eAr=ES^$R=CZa5r_2~%Yee5v z&`dRzeJ`Bg`xOvqVe8eN2o$U7LX$yxY!UY#S{2 z4+<3&)fRW80s{NcVl$ZJM_Nh@YxjX@D1dLOTWy8kGf{!h*A0*5VV*)YoPZQ}uYPqV zQsE%FF8BTFS8J2ieI50N-SQ~upMoKK-G;sv5sB(+*DY)}lR?3*AE0$wkZBq~`u4LF z2ei!m;7+HCN2A1zanFx!y!s){BHyA3l|T%JrmF)oI1grNp2Ngcqvz7FS(dO~?@3$tk#og7L5Bx9vT2A05nmk zLptF0!SJ8nP_JaeiwNolq>_hd&MU%7C1&r(o;(ei^1nr;*l$xsb`adXzO(wVd>iYk zKpN1Kl_+tlGOBo(YX|}f9xM(Q#9m461YM?LB~jQZyTtsFL60y~A!<>Zlj!3Nr`Y9F z2(D2}ypWAVPxGb(bQ=yyROsp#S0T+BTtRffcSRLa05yXWRNfcm0$E<$N`Hj#L^Fd~AQ__&v1T)(%MO>h3u6OBOx}tt_}q@C@SR{K^DR z8GeJe#6%K-INBe`y-`ksxe_Th$S53Gf=3oq+feys)Q87jxK{$)G60UuGRDV18JODh z2e58RG-Ai{21d@B<|^uZ4QBZ%Qq=9|B0rB7%{^Ll4c0YoZMI&#f|H#S*LZ=0oo2nK zjbL9&Zjy^otTsb59N>GtI=A94^$nZ&q{EmP0>#aUBycdqJ&!rkVI}46KcrUQh7hVn z2I4)Nk=f7|%B?BxUMRIC#uX`*umM`>DVZGWr56Z6b2DT25hiWMI8vV{6Pd*_rk_a; zKncPuKoN(Kj|h!_t8OMfb;xm)0-dmffD&}lJCjkqsM_3lN45lH*g#VhkH#ectxfmF zrs5-awS`T8tQc;uToUnW1dQ0jI|xVG*-uXX4AN0uU^>B*$#A_~oyrY3Ie4Zy4mwqv z=4b@cO24y8Pkv>kGD1iV`>~2fYGp=h1yJ)ALJEE_lW&B9fe}5I99f3~Kx6FPtGJKj zaGr{qAMjqs9KA--$e*NDb=4@S3iMkbt6!NUkQG5$>0QP<+->!uPy$h^h(83fG>QUI zwYZiiK|H|+j`#$vdoVmlf-hovr9H*=tqGyV&M;vp?mUVZ0K8lUGyy@ zM{>Ma`=UORA~#Z|%?*{$ZhgL;S_Ei{BcENX}@nvxm2qES}cdywH1x79{GSKZQh7X8v zj-OTr)Z{%>sPPEK!H>~WuG#o1q#)Is3uXpB37udBlTd*vuokZ!kA-V23-ZVh*mc*m z%me`Q2x2WvK0=gX4OvHW5V@uJ5dSDQ%-L!R_*D0x1x`2j=bKRWhl(%{>%!ttVg(K@ zDy@MWb~Qi%p~v&UvZ`}euRl%bvdj(uLzCm&4+p4zG zQ-+fM4}az7Q#5_QQQ^Cibo)62imo#%x0INq)x_3dcM0jcJKiJ2LzWK(>jA;w$i;1m zuM_VW0ac=_n=`upQaj49Gx|VWdhqs@?nLiM z@hY-sxSOI#`kE;5_VD#=GO={92K#{?f*96?c_wq3diu=ZH(llJ$&ZgH= z*;G)$=G(!AizHN4EHauqnp1kjZ=V3PP7%`~t!1gq?NbVP= zprDA`7lF(M5nabA95zfP30`<9?oOq+N2`UmP^%=_GWy=#z~%|mwp_g!5zFRvSxl8Z z@p*&E(&48m6%MELEnNTvsw44O?`ef!-nAOQ9KW=tzC-)&@C533qowQC*A?v-701#} z;Yy>R2uX=|7n&pnE`2Tc^hlglwm>HB^oj zIgnJP#u0wLe!QEq@o}{=ix>w5e!O_v7o#M7Z5MbPKB*1(fVal51jE{ip1N80+Luki zki4u9_v|LVEInV@1VD=MZB_rq>1dD19bOA zEi*POy4JC=bq+N?NkXT$AG}-x@;F|5A2?)kT-kB-V<%lOum|%Fj5bwc_9vBkKIU54 z$2LxdGzTC~N12Tb)b6gDX`hpASS!*g(~RM{XuX=#JErUhr8@^8_-=mDbNmhJLL~Cu z&=sU$vltxBKl&e0drp81MrlU>YBg~(xgvXiG`(R({C@RMaK9w3J$SGujyM?w`%{a9sy6d?IAGbSJKc*qvUG*CAW z;e6#?>@6$v$~FVnxyeF#S`kXpY;2OvEBf+i83r;UlwqB81cD#x+8(7<+eP?HqV-gmtU^o_Q;OreLt*Kby;Qu?+;cMO(Ty;_1} zdTbHNrl@ir{kGO&Ud>EkNa^$~Z{a;KXM>Uj;|}Y2c|~FVe1VkCBSOS5sAA5u<`Vk{ zGogecr4L~1QI~m0`WJraBs-Zrs_rs53 zgP(v(M3)4rfbj1n8%R+8%*+G&#vdyob0xnM91$l-lKU6humxxt2Q9uNsbC%AYsuQ_Aj` zUTkk;lKjBD%P^Q)>Owt>vZ`Ki;-u`IcFn^uh#l+`cxUAvG{x6n4ew?l}F#UgO zYLk=JQS*M#?31GXpkrxf7+o?(rf!Vzu5zxDV7a7=oH!?3sOm5I|IG_Kgo8q-4qvMZ zP9)avs-|oZuEG7H@i6xtwL`su8VPNF!-TDWuXey(NKFuv_WmWn)t7o08U=JHF7Xb{ z5=TBBv*2N25NG!|cFBq!UdqEC@@JX>+sczA^&AD5-2i>TP6ibKhtfUi6GgdU@()#- zxW?PBnE`{y)CIe5JXPA|7zSQ7QONeeT}(;uux+kTmnYsTMv+3%V6RXeBPx{0d z;g*>}3Bb>6;Z#B{sN}nL=y`WLd)m}bkpcbH87IPx{Sn3bTdl=B;2O(NvSn))K<+3< zFZMfr>r7-Zh`p)V75z=hm8v?q?ZE0lJFi6;bzEC#govlp6`F`m@^Kb^y#%-xLN#sG z|5c(3m%}A3YdNCB3n62XC})(XcZ4w!cSNT6k5!Kt%}u-E3R-uwJbR$vBpb_($Gpd! z03OQb3`9Y{APgeap(qDN)Gj?}S67qI#E|ZvGoV+4VftL7*O}DQfM(-r(23pW0PGHG z_Grs`No=~qz;(J*$9UV?8Ei}RSgqaskye6~YW7If-J5fS<-o0}$Vq(s{1FNl2;Ru( zx~n??!5;PIY!LibnTZk6J$lFX&%4h!tfNyz6_4mOg$LyAQXSH5CTXD-4*lhZldaK% zximcm-(23YUGEq$+Rt<&TvF;GYXz0Q0!4qj8j8kzYo%zt~4RCkh zZDvGvU@5h0)c$!*@e#P(7uX+e=RoGRZ{;yNJX2I*+M(VAUWD$~RYyH?%c+qu9@*J0 zObXTZW~nU_(K*TXGQ;W4rBEhzxL)9PxSqcAg?2cgAnI74#1>Nzfh5-JaXaJDoE{Rx zc|2?sp5?AO+M$Slb0r=Ev?@Koq#1gqzukYg)uVq8qlmV6qE2-0u%;c!XU()-Ur`X} z^d4rb)5;$d%NXYQ=tnRm%%n5Ld3aa*=|&OdBsX5LcjYve#mC0Pl4WGt0dWdBEokvK z%%#8HCdR4HF*~ccTry%LrdW+L0xyVs@DX$|!CGKB!!&z4=bMp}1|hipt}@OZsiP3N z9wSeK)%2rP_>z)r_AJr|S@vQ)_ZSyWmze6fF5oxr`o&d=9>{p*anj>db6Kn8&MEp) zdIAIOWj3($m#Nx|pDXv>2*AV6KZ0?y&e!I7p@+Duq&!(|^9I-5Foi=F$j1GMJH2b# zmYAS7+7eMe+#s9rdMjv$mj6x;V<%$K(``yh1ggcb@3Np6>oH2yGK6V3+TuTK4`6?+ zoGE~w(OIH)jn*bSsdsMxQ2c=o$(&h)zE-gu}mneXBnA{FP)kx`$;m$~tvBcW&@#A)_pm@Ylybmb_Z z1ZSrO(blswty?L{q+_|8oNc2;bBxav=~PZ;&xH7>aYRo=zkcZlb{JVtz{N$B&mBC* z+R0`rjcLATtXFPE%bB7C*81eGneO24@U@#t93XYh&UlP%^!;Cvz0=9XsUx&Ob=LD?Uskx9 zt(s$V_clZ$YjVGE8XZ_A(F((v&9>;nm)z8}YwHdx;*$CZg*2uGGTDV30F9J$w)SaDr4ebxR~+bbQ)Doz29FLQQa z$q>f)0_0sbuJX}oH;)#)-9*5>5oo{|MO?jy4ob*ec4OGKvO zp)&+SeS5i5XjMuL=k12521e@hz6=@F7Z8~E-YwN0-Q!GXE^6(^EyA*qsc&o z$~4`jjQ1`FdTRFB+;z?jd%=ke5^L}!zrJUoQ8!tlwz8spRAgCgEgE zPgp3vmq(HojQJVDm|(envQZ02n?EcX?_! ztKNXE$RL4QI%^ooz|L$;V65FmliYCC+o~?O2Waf(#TZG(s+hfPG<>EmP%7ME1nY;G z;yiNIFGpCcw_j8+XmZV#5*wP#CX1?izvC?ZLNoc==4xjg%H;!&qwkPS{w(f3+|W~JL8rp zA&WLr9v+1PV|HwnhvO>K}ys&0#sij0s^|&E^To%qq4NPiTQ=M8}FD;^}!hlnusAKe36I7 z7@4-_J}u9@)Je%3XS_LleUNaCiRD%ZDdW7f#qscidj3^($JB{ z1q0@lplyD1&fBE$9TjOZ>%m%=k##`wRrOIKi|GZzd?gCBmbaw7r}r*Tsnn4lX{17V z)QA|RB0#`fHW7{0-i+!(HR?~ov$PpH7e>xTLh1xn>p&6^(#xE#Y$#9bR2%$ka?e>b z(V8lP^UdVHuHKI&x&e8GlhNQSpxywf=zz8|EWZ<@%GtWfKVWlW@$Hn-kzuZaWOt#laCPCtO6T3GIEu_kCax!q?`rxZQDWPzX@cPvZTo zK%Q$9joRJrHAQpc@9Sl}x1nT!A=K0`An&>>FR)@|^lImx?IFBjiKm)asCxLa4OB8|N19g}q?8^Vj*SpSxr4lCgfTuKB zi$vy+*k{_`gUQ#?3<8TC?R)z`Gns~bS)Jme_W7nnJxzIOo%$5az==?ZMH!0G6Z-(% zOsBPov1~S{TdPxFup9SrMW_+l(2-%C>Z9(z;8p#=20n0ZSgk2C{${pn)gwrwJ+!-(9EA`2<<&Z*LOR-W< zVIuX;3y%pvXpTgSRbkGh1TvxS^2*Dh!({-N{rAR;LFt~ZGhvz#?TfjPDU>{2FN7KK?8&aD$8 zl^~m06A5RfQ0hFZ`}s) z7WykNQ;BN|5e*jDGJsz_0gT{iS$UIps|`o{0?^}7V}JG@ep@PA_0KnqgTV-jtZ(MM zzyc(IUMiB3FW*m>qcyUzIOXmY9UN(#8JH<|N8t`D_ZoUEpVqR_S`b63=6F#VZta?6I zMRT^`xED9f*V%cVnl7?41?Chu6OB^BxykANQpzB1SIWeD5>`d<&-_@^z*@43=uG;2 ztR^G~OLmLul))an4C?}=Pt{m0H_2b`b2aNMr6~C~;!gyF($;m4s2MrhIx3IkeK(&x z7u$BxmX$r(r!u&3teNs*PyjvQ2l<;F&g)0bP?gQFKV#46;;i01D?<*q4N$tF8b#+uK-BLZ#VlJ9eV=)?KKaMivc0 zSeZU(a1e0@I5Z#;S`^U7`4*4|ng^D4w$8|j4}yLgQ*hiHOxqOQIvy`2mGTz>`zc~n zo*L`?R(`?OI&*pFKNVk~8)Nm~5ah@yPUeXiRnGC^HznzkrU(%AUoyS2RRsqq&!%mb zG+@uf#N|qA;iq3ljJmL)5gVB>K}X4p(zTo+;?M>C9IZ~GfzsJ?Z+lAn766!^4EPp2 z>oEtN;~s692Wk#giC-0xY(Y60AN4X)Y6R}}^6)2Sx*g|9gpKcGB}7WNZjB26AcmJ& z4dfo}pb#kMa9@APF_iHW4;rYcw_q@M2t$vr9=k`zP7$1%TI6zMI;h!v($xMp>6{5k zF=9IHY3k~MF1ku7vG=E7Bx>)y=9zjDj5XD^FR5W@hW0Ax_Dnr0eB%_GW_?3aPV+LV zccU^g?dZ5)FH1rd1Th>qMprzP*xz}1dLG_hq(Z>1W@tlqNFdJ>eKauJT7AS2-b#JV zx~4kT&{%C!{RXJBU%W?_Vm?@6#=+!2pKMg1KR>B~DHmndeS8<@R`)Yt^tT{Vsxbsl zp&7`4U7Z28WN*vr$rjsoH|WHFS^(P9LmZh4I4#gpjGs(XT zy0=*x?TVsmHaf--I~3BrZb64RE{T?fp3yEx)q$;^dnRma+7e4$45!}XMkMAl(u2v#wLM1KmqX0Or?aA35IgAv*AL@;MIK;kKCW>uiHilwEOTt}1fh z@7HCm2B`ZR8=Le(4W{c}18oRbInIcJ6G5qgsL=efaIfo_b={Ui{M|@uv_*BSuZ;)% zjP==S9dD){TSoAFOX)*b>Gz)}F&qF&**wQaYKAZOH z9tl=-P8oFZi~jA~HO&e)EB+U++ln}~Z;JSEPthuxz=kpxla-s7o=;58@(s_|HAA2j&TM{-`;gFG0{2ObPkgQw8cBUoKkUdbc=4bJkX8O@5QgCJ ziuzMy1&`!^U6?h8VJjjKzOf#wXv0mRHM3C`E$rBG;l*Vbk_oq{F0*A%XW~5_XEx8y zcT`TPgUSCjhZ&>F66MZ&xGhg9JE$r`Tv=gty&w7QNAYG@d z=fK1inHc^)nEc#a?Vht&l^UjDqs1SEi@f9bWvK*~cbKMWGn%l=&)^D=1%TYonJ8<0 zUV=x)&v#7W>TmH`dk2*14j@g#Ivq^uC7j=DYgPS&P+z>;lq%xV62a}l&JI;!l?sBk zrj+yLhX)w>QhDI)EOf;1Y?CD=wwGr^+?-8pJ94}<@ZO-9`G$i=wGJ$)C9u(- z&V!z?Ct7_(XHS(5e2xW?_plS>3tu(GyJQGJyosd;%cQ3^P38lp_%Kv&8FFAyc*c7$ z`L`zjf*N+eXNU$ru>RfYEY#PL@6AkrdT)Ef)bkyP=kU9HiC#09@@=+h-L7%@Zc2U@ zuiy3KrzP9XTXrz{TNI|-O?r99_Pg7I?}erT^kr|yDUFY7d83A?N8QHOV799T7@}&k zo-8D(YcW4ipJC47jJH>t&{DzqgIQKn!~gWE@8kVfxq8&TSO?e$c=g0q0# zRrAt1jh`y3W#u}xO~SPWxTLtQbwb+n%|nwOKgCGLCNCSL1tZJ$JxW*(T)`B>;*pv% z-e(FBf^CQKO&J(Drs`VWU#Q7OwHqqtz)S!j%=h4^`d5Jp*LHw%K%W%0d<0vBnOIaq zm3ucu+Ssx2{mOoI3^ns|MCD$N@26C5#YnR@lH>A6(OW|`2RE*4vs_)YVuf-Rzr4T0 z7`?6A<%LKTP()Uic`FD(Qp|KPTfcB9i9eJ9iI>aZE)AKxBI9Lj9Llk{tz@fuxVfi_ zkD54QvC4bF_h14|23yuGZQ0Ddn>G;l%qa9cw2*LuD~+sh^X9!w&ZxjoyHd|yYduvP zzxXquIIti9J;Ij?^<_1s$E_BA14qc(k(zj#ub@cfez#VM5+yUhlhw2+ZYc19JVM(f zGu-}^`X%l2V>@@a)bzD6 zBNz+cV;z*Qo|&Y0Hhrm#2uiqCbPxsGWY2Hc2!X35Va_XRrrh81B>?~OQf1Z$MWES` zzTwdu)sDKvE}T)E2}0Bm>|$lhy6AA*)b#qo@z(2FDKjA zTK2+cZ-RQ~LX`uq&N1bsQJYQPO8NeSTSF4zXxxn+jF~^e#Z0o!PC#v5qIBjBFj)e~ z295VN*1;morZvkNej9r6<}D}i32`mjH%!qNA>4uI$_IOhUt@q4$j(2+(jQ_ZyL0W)g>?aSsqTK=n#)6|zZ&)nMjLudv|5IvEL92287f1ei+jA=wIf z|Bd8u_+44MH>3(B-hx=!DWQEBXV_grZ)$MObG%6)<64Z0e4?+h_}!jgbTqeuxjw#8%FcaMVDkU@2nDrM@8Hq-7sv9a!P zHp;2-YO!+bBW=(&S61jCt}8$6;AnZgKD-e++}IPPUR)XUcUY}yKWP$DgK>K>FXi&E zZl!xo=8vSAbwPi&W;c^L_-w5JP-=Us$8e zKbc%k{;6ROsk6kL`urP{e>$VXz}O>7_^CML7CrqEP24O-L0Acvy5HaJzy0&S^7Wtp z>q!SjI}C@QzoZQWElX7TgUc7hF!G|9z#joDVd@lq3b(@{chOyk-Yws#eyRF9)!&0x z?j()Yx#dUVm*}3mPkr?dXNGXKgGC{Iq1yLra)?wIA-{e)NS$ev@pc5LjvfX z7aiM|Z+502n&G8&R~9Qd@u6I|E{F!m?jVhtduwsHm$VR0VHo2>vhqH;6|n93n|c3S zM!(n8^>3#7M!w8?|7ZrBsoi}FjkN2RlxU!0x?ZoPJ!X7YOjyOTtEtI+;d!6(aju$Y ze%!*J*p-P?+wyx`kWN&Dx8mJBk2s!-NdbV`XCiyR3fwNB|5I@hpq6^U7zNa-=^4ct z!nrVSiWPRLz{B0%R+d=Mx7{n=LgfY-`V?X@AEd)wGJ;Ir-8=#7MRaII-udp3hzNBU zI5k-*m(@cD7Tfv>r|884(MGAB7b+nI_=chZwo*9icz`3?X`LD}KzyG;rpd2Ee+0M5 z7o|f2g^G%gvnS2mP{B~AP{D4&SWE0mBF}ZjLDJK19q;<%AjdwGkVH=~`GyF~x7bl> zOC+)tT#0Qizq-l)r|+O5lkjB}c`UtOJ0h^BBGV;a+CEcM;p zUqhP_;b7<~cTXW^$xzv|SIqW`Qu-r6Rf99;cl_4q=Yq(@hZlQMQd63=oL<`)Dw=G6 z6Cz+X1nQ2~;2`tNV2Ld%wQX!R*cZ{#R0=3(*OG#rD%B;6_LYyeC|O!@53)@@gwa1#rOLF1+#Wf2vWMPG?`)M@Fu}Tfn0r8w4Fwh` zTq%=Z-G%=U<62!ao}`c&-&K1tWM+!!6SLuB4-G1`0#OLOaM#U==Hx;QVUVeZThaKG z+;vDaK3~!TAWKa9&Eewtw+csQ1W#63@*Wqp>0w)QEAQ!W(*@boNPKcRz#eh-oOC4p0R;cr&{2%^}D6n6Zu^BOu zDyZ4njJ)sx*)fF^b!U(t-okZZ zEg@!ezQ#GSbn)_)_Mh;y4l8LjIK_%%-IHvrn!g2TxD;6&>{X9|N0W$4)WgfstE%eX zl~vTiJ;deNQG>fIkZ~FcR40#svxHIf$K??KnJBD$-^f(wU9ww1`c_32caq=C5fHUz z>N~CPz+Z7~n*?NCer=|Rw2#%_7Toolrlqr^^d6lg+Mn~^wrWTIkRo8*q*G4NicXIO zw&sH8_Li;*5Hrq$K*RJj)H=uF$K%JJ<9kvIzJV55we^y6Qij*?=9SJcF}U}F2ibIZ z02jMug+&=hUDV3@IFx>Mz!EtXQg=RhGIk1?7+;=l_X!&X|N9qujse`vV3sGK48nW} z-9~9Y(yLshHKy!+5z9`57F+K9uBNqiqh1srcqU(?dfO#=4ml;B2zs#S-i~gq?j zVpWMqC#3h#&K?mlL~ixXI#eUiK&cL(6u+S%yCyIsqVAgPr%Yn8(%lHN0!5?rFdg3G z3J3lWsrm4c2)};=q|JEIl#)Aa)iiY(Oc78!ON(TY+}Z~FnUz+BA%&#mzr{P&cqI!X zCBJuM2!JekEC{MWKMvwlJO6e(;SW>SgKM7?X!%1NPc*$G2c4hfJ341hPZ{-V_)+tVH}%4^k37SpXSOlKNmGKjHV{O3JCzLLrx6VG3cjWGA?WO;I!IPi zRVMASeIJiT0i_s=vlef{)Jla*nA+uxJaHJ<-MuQohsoBT5v(FbFnraF(^Bgl(&LZ$CD z9#w(6)Fa&BU(5ANE2+7>{py>|{a48+p!z1@W(pZH5TV2fI{63w<`$m8w|b;?JNKXL zq5LxE&FzG=J9(R+Az(!)^0u-9irF97Y7QB5#_CZ4u*ZSfCfL-9#sw`dgYDc-Wf*F9 z@{X9b`wRPZBrn3^FOiBUZ-@X4;e#Q|4; z_Fh|^P=rC9E$E{2ZGz6fZl0s(w7GcM%<5}hb@P6^FZ}wqzy8a~A-7-OPMY_2_~y1I z2eCS>ctkga+LTT8~)Nzo!4FZNf}VCAw!mjK@ z&!VNh9Hq1u_n;^(BV68UQwjf!^HT^&lu6pDr~1G~i0$q0Bf)Bl4wV%!nrj4oASabI zmuQv&J&K)c`T40$OX}fg^YgtgAJ20*Zy^O1$q!rxGm>ZI$q?CFv_*<=txfdu)h8jq zV&)&gfKyoGCd;=ygjE+Nr%4~ts7<)(91d-YvwU!b%Enb-GwHPx+OC8f0EricAELZo z#%QZz_xp4u4mUK4Fm>27<9su05XWW6(?O!`U(|SOV+~}8-Q74rKJ4vC$wJU!mA4;0 zS7Sgu8B2~mlQSV8P^b50H{_7=-4JiX4PUfwaj+x!Sk90o9?sR{EEkrmk^{}Yo&2w{ z@sOU^g6tw`MZwGgVyFax^QIkj_0*+iewdBwy+f1xkc!=M(*o{+# zC23X?_M$@!XEJnQZ~hoE&*-a{cSs8Xc#MQ-$4OM_46CAKGe>#f#D+siK!@>3EBW z8EiDZDn2lFk7{n>u=|3cm;*bY%jnof*D>VyT6JJ z6^auxaYFryX=L^{YaSUGHO4L& zpL$Tp!Kg>St7=6<%|0=~`rP=-D0|XQ<>|!D2UmvaCW@9^qHI9Y5(a5nz*Zgj${4hA z5<=Y!ghHJU%W4i^jRe2pbVl;Ij!u&19Eff?6Uj7#ki+vDdUk}5^{2?SArSA|>ZjTB zqzR3(O!AUZ{y{tM8)~9QidBT?oNwEVh$@h0yY_VeV>O%dB$L22=tbyM4dX(L`)M6{ zQJS+7gD_2^BhVg`@kkB~?9*)%>mQ}UP+z5T&!y<@Cghk)+tbj!QwNkL>`$fB}F4yRvTU%kM-<$?oARTf9rl;mG! znng7Sxn0XKY5`eld9osZFaz~zBtypD5GlkHW|Se@1XEN}L=bd|y(C54>)D04i|JJ@ zK?U7op>ey^oy+#LM(c7xKgH%G6vVUdB7kfG5f19b-;K^Iy{{D<8TEq0 zVIP}QnA8B^0=F4V?8-!CrPzel?OE}IKWmX{2&&48i|I%FBsd1*nG~Z(T48$6`?1fX zwF=x-AF9eFoc603!r-I!@72jWRd(JDiTS(M(fdKVPByGkyI5l)){YuH44E*+l=E|m z+MBZqIk%|Z;S#eMSS%trx2U$65e^$N|`D;;3E!ZyQ8I;CJn^J zikO;u-2<-R&zS+n?9V;d{hb+#piyO|5x%%upA|B+_KQ@0iph7reS{mbm{+mP>vC?5 zwZe7m0vDIw4m~lwr4=E`v$h2@;3oFL@-+%t^hNv#|FQei0SAcp&gCJWj%g2!fSl&} zO=e}cw{I><30PYt2p`eogs)Z2grn*V!%WN3aUW5f$yd+R8Wvh{ZyR;x?Sq}&F0e5Y z6y6AV{zb`(cNclV)R32XT4kO*I+sXO8SX!eO5nx?1DgD7&`3dtD;`HB9t!GgPUGuu z<@dTp;s0pz+mnAKj1_#knta4LrwUL!YON)I!-%7EcZzB!_BIp-Q0T%xe?BKBSDO_P2xA^N_dg#g=Le!6n!*7Sjv-+!@aW&5n0U)j${%zG*w2RGXmAZhowtxg8jW zwRKW#(RV=qN@Fyao2|K}u&AVyYJlYXMfpb!5Gac2QO=4&r}-yWHImcfU5aaYikQ(+ zLltwRL2dalCd)nwa2rV*{R(uQIJBfftL|H2{p;dYZ;S>S2=8F>)06*fay9v%t0&Yb z4p*ZqT&)ROkAw|=jCe`ZE!$DlXjEFGv3?7HgI#y=7*Nq;QUnJ(AxwvsF=eHkM06Cg zABN6MK=Jdr?r9-Yq;@7LDU$T&NM5?U@?ztM3ybUx)mr3+Op&E=R?tbD@$~)O>9<$c zx9hKOkW0T|&h@U0)18SpR`lNPG#2DF4=t{QqMI7`B}i>{;G5{0AyIiVif`OBeZ$^% z75fI{4ZtZ7RVwtG5dpnE^wJDnt|W1Pj2Hf?> zz4hK3ihaOk$W=k>u_8#GQ%F#3@|AAK@bo)wP6u>?Mb77)w~llr&d=U78fvy-Q=pxB zi|m{3S|F^Cs>A9(Hsq>e=G2RLWXzvQn6 z42Tdn-?|DiZtIwbq};v3#T1aO8eLY%ckq{^h+jz$Qk5Wa^uvzc2|YRl$-1(HihxH4 z5_q$zAG0~lN9~%j-CS3Mx%=qRNOK0cV8G%8>rh)#_NjWXZ-$}+zCONH zEg`7lz&%@?m_Df2e>71NgRi*ZSph5Yonw?_L+}AvGF|dcnK!B>UVJ$YNgAj+uePU> zLg3YoOn^kuHXzH5AfwetpTin*BjoGL6m7WT$Axd&=VY0GQG4AST*{6Of2GzSK#Lz` z>Y=OSsd8srV2;mL(QW!7?A&m()AA!oJmFkMluk*;s(;B%u0D~Fi5q51xf&&&84i#2 ze!p(&gQK~Dj8bcr#H(P>kTdRQQ8n(R`w-0<+7CDf9H6F_G6Nr!^R~?I0TAlyWT3m$ zF(EJPo)MtM%HQjxmHa;F%I;P`@5slSa|%Cc$KSa6{pa3L|br>ztEZYPM0o>1elsy+|a3{ z%oYtlpOOI*ri1F`CFnSWun2kIBUPC)LBS0n5(EBu#cMpz|CmNJmW-Bohbb}kH>}gR zJ*n+?!h4z)LFW3vdA4Z?m3%u*cUMuJme#-5MU-x9#@$6e6C}scaw(=XD|yZmm?iq* z0b)pj>nDyfqw$z9Sox4!#eeMrrTCVY+oMvBaMjb%Ag`%&bc{wihg6hH$Uh`a;BJju zb&xB@S{78AJI*!LWS7?g>LY}@RIh_L(HJi%vd2|xTp2@N>qoX@`@!RFu z4Hi>g7T224(o4_s-S8qT_K`ayZExPxkvn4>Kbk6Z9W%9|sH*QhJy z_}f-Qdz{J#dKQ+|QL@4H!_0vYp>XTo81B9?-0zb1l>6AEne4IY@U7x0_QjL5G)r(S z*z%6J(m2AZ>qsd)=*b0tfAX*K+`-OL=jNSPa1Yk&-n%81_nDG`0g)+MN=?pb=s*`= zovamz3&o?T7B|ka^(IO>s9z-ChuvBD$j7dZG02K6jls1al*?$jw6qg}N9CoS77mcB z!eSk!4v!s0SWc7_>7iuuL}_R0tkkJVbxn>`%Z>K-Ql`^VxCXpeKB>t`6qUQdj0;kH6NOCwEePBJ!T6t|E{5__fz^`W?c&T>OC2`;23=WDb1sgY29m70&xXw-;n8t&7`ALwDd*J${H9z{Utp` z%<4;-F;fL7ylL_~b$pZM6*3Arm8?LJ$7FU~G|YFlk3#>jA78AJMa}!%laHP*qG=%} zpIUwvJ^CmhP*emn?uaZSHAvK;`JOs!XYzRDXPv%qiz&7o!7l41Cu*ckuG^>jSCY(n z6c)jDDpb~`qTY7M%IID3h0 zwfDrW>Cruxn5x8LE5(K3wem|lg7${VBXVyNw&ZfNu^M2dP- zC2L(LKu#`~1;imWqaPSzV6bDU>9M7%tu3nD$>ElqB&-WO+_F{0eIc(t>e&6w^Te+Ys&8k04O{qv z9q}R&s0?VM#2{S?nfI`3s63ScrzFZ|VoR}(U>&#(l)0js#iXrv%W>2?<`rs+`L~-_ zMC6q}Kt zw&@~E{9W-a56^IJom$DoQJlI`wIvG=s^jXXDd~5bc0Bks2!h<-YM8Vvx?SBBpS!zJ z)qEy`q#9a%nBuKFihhkYJ<_gIGGf8fSQXRe77QBmIid|5b;S7VnC^zb6=Gc1%M#n< z-CN`eE=C_HSe1SA#5*s6YnRC^NVplEiGP5sghB44Tonuk0{(?QTvnZ}tk)sHsHBnG z<4hUYkr8+d)(V4Bdw_2&m^Q)@7)i7n)F8cdL8_|saMDui2FS73b+yFRQIhH~(#FaS zQU5ih=tK#eEpmfV0ix59qCrEZaEH#dUbfW6?K^goaJfcuIB9iCn-W~6>kW^BD5SmQ zqmvE)Ia$}N$vN@0?t*rw{G&oUPr81qa#26hl`yS?_OMk_F2*yP3l(xSUDVG+vrZT! zn}QwE_D+?*HE^<2T00r?pL;6TcX8xGdqFmIoQ;8>P=rQMHqpFF%@X=mXW3Cz?*K!a zTCB|%iV}@x%M zlq~D+Y;z6)9ZUd!P5yT{vyRV>xj4KcfRU-s#cM@$nIFP14i(N)+`YfxPA{6XFB2q* zSaa6~Xq&kv$lHd8v=;eN(z^~LAa3~^!~O~dJW`uo+nO4m61+E4k-KHWt@Zu+Y8=Z7 zi9GUeHOqT44ZU*;RA)_B zpOE>b+>I4o+0D^p6u0mxWmZ|&v<8V!s#x}#>i2f*>u*j{hRJeuI>L5SZE^JW zQDIqIlk>o(=sfc#n2RPon)UdJDyJ5!J-aZwt@=_PR?`6ZxUPES7+jKNJDmK>`Lq~> zWcA!^tOE`8>Xtz?dI+3i285IIPFn%l-ODOC8>pdD+*P)0&CPN{(Kt|wzqT z6V9YF(LD~oOQk)a2@e!cd0aZuC3;sKTo%v;!vW{ZwqoJIx+{3w2GudNbd3elm?~k>UCj72D?}^VQm)1(M+N8Ho;v(;3YaTnoCX$ zMpouPpo&gcmk7<$QKwTK2q;6!hk{-T2D>7nlo5>Ta>{$_Zl*)`#Fg36nb6R^FO^MA z+NX|$gu+iw{*00vgl}|S!#Ns+D=Yo8bRpB;WYIeLvrt8ZMoc#&-{1&Y(OxWXRAkSB z9t6XUNUfAWZyaM>uwV(mvX?LhdRqy7fnT2K)a@z2%ya$T-Tl>h^)~`;qmp= z<|SR^H_w9@F`c{1xb1eFpS5~kW@=Z)stIybj+k>QEfi=q3jZ*3Qv_Hk*4qWiPfh;a z$)B4EZJ!N&Sxfq?uM)Uh4K0Ri|D4c>S%ShCuCL~B=CB_+E)LT9DY1326T+lYQ`KC+ z@@{}|#hND+8%(t(290;PJ|OO$?o^otb7=bk+ADum@3-Ow+`b02u%^r^26J+YxbJpR zSCdZ$SAw^N$&-;d`!YZZmr;8$g9SVlOpp*LGEK+Mh~W!QUVh?(lLss+ixt#yaaoES zkUHv~&Y=<&B$k?MfOx*Wz93>9LMq#}R;F=feEnX#zJonp^;>Aq$!is z1)SpXNb&b_;ZIEQx7t8*dJ?~N_n65Hts7v2&{8g2_=fMNSpq#QiY{PWxli_EW0Lw< zf$*CW!t6I-qXG{ZS#s_pR>tXHv9d!}!*TLG%=k;Zz~B*x?M-J-nrV`Ek0fL$LW*{L z1%?o}*-+oXopFx=-#m60o5vSzR*yV*aWH>cL}^F;CGvgv#U#9&3#L|Do5%;O!c1LU zlsph#R)wfKUOpGyKQZ~7{uLd8g6v6X4Sbb+N_hI^RG)nOh~*g4`%N4*Mw6(;I&2QX zS^y+L{Xr-PXTQy+`*d?}_3&dYdEeWoC75irlRLW7BMl)1BZLxfeUs`$`LwM$ngfE3 zeE!7%9e}E>cfqVocSj(R!Iwr&bV19c@xm}}hTcqoXTDTc`b*)Wdoa7#m(WALZySKw z(Y*DI3gdFzZ&1XM+12!9C7c%?1}c~keyKPC4@c z!0Gozdswn_ZmY*@)dbbH9Y&&fO04@ys4()#EEXv6DLr+hS>n3H*@<+kp72CX!dI|+ zwYj{LH8ih*br>ck>H1U}=>sxW6qH z$;?BQI6LnjHq_>g+5=}Vvn(Smgf)9A6G>;AlDmvcqMC2QuGViZOT?=?VS;4{7Wt$$ zmJGfiiXLcC{8)TdBS{6n~Neim>+Vs z{ERxj&5;~TO{mrZ+8_*1eyo>LBR@FEB;#At*vQDulHR(*dBLbIJI1P>+_{%!!ME9#nc>~byOIev#`Bet?Zi@AgPO!64qJvjqudV zjkE>Awko9OzGKUTGS&btKq1*YTJw7&P9&WFJ^Yox>&sNki4I(>ihhS?D0E_{E#+J# zWzxP%_1~MfZ;PR6YFAA;o0HdF3H0wUFf>zJS6=22`;>$(XKYnmzUO4h`i6RLjFLs zKy!ne!6WlVqBtlU>UWQby?MbT~p!1pNuD2%3tG?e)(pH(~fo3m&f#(1(MzLu73VU&*Wb~uy(_wHgD|AYw~FC3R~ zX|^2cBiDAfiex`Z0`i`siJvec()>K0Poqq2g8edY-fjlH9sMYX;QH+BT|rPX=;iWK z$mBcKdn6jys^---JP~V?A_k}o)FSgT1_TwU>1C{{Svevq7o)=x;+|bG)KudDhDq0QcnXVHRD0H(VTt4mXp$>HAysCw^tL=<;zK_&IF!$s3)Q0G<}omqk8 zHpVv8c9O}O4{2WV|2RJ$kO#jdRL4899D)4mP`6Cr!@O)BM55XRg@)iGw`kM)%?QS& zdVr;9JV!A4%iTu|mat^<(S~6-ymv+A=qOPS3RU0O=CloT9$8 zb##JGucDJyCM?`mvPJovq#!!j^UY_>aUfvR0*HO#d}#S)M0ST;*}}s;MhoO32SZCD z)f^yQ3A5(H6a7g_NVGLKy|TX@YU|wsvWQw}6Z-KC$!rHSR;FK69-J%MtYgT_taU=S zbyYIk!goe%%}aI1E*YsU-~!+JV=y#e`|?{{w;3^iH&v`Rkf+)@m5RBltd|z^hx1wu z9WZ*S?I=(T&!dfw>%O)C;=ZphRx5S%72~zPgQBeLSRawP*8i6VrLiJ@cHum!%FVEa zDkxdk6m?7$GnQzfWvSBnx>v)<91E2mQs(JuJ$n?cXmQx7I4|SATD_&%jFEFDn+477 z1|NhXgBmXVk2>l}g@@1#rig(Ng0~;F{j=@dE}tjR-QaF`Hq<_~M7!9N!LS?GDrDw@6oMMJKsWD1)ts%=n6N0mKB9BBm6;Jw^SOT6-aL445s_3(q1lmh zmAnend^2Ae&D`;cf%?SxV?uDIG->+COB&_j%4rR=rfjg@agZQuNWK+fBFwXfYp>jukF5bsJaK;pQ* zY*)ICJ_mNg%z^y!tbxgvIs*87AX+spCUi)8zv#jGumDfhW}QeRZ(81mGP0fx4OCBkoi5R7-Z>(R@=F1ZUcRBHfN%d8oH4CtvtxhtM)}?f7C&t zUvA!pU1T}lkrD83=-DS30_=6`AhU7d2(}xWV0-_ZT+${Qj3$x0#&}8@lGf6wsB3Wj zt3-hKnk3N=NvEXJcu%cf7Al{p#{4w4Fe zM=@wfTRz6X4|I*!4v%yYX{?diyEHcoTlC4T>uWS|x;hC?L6JF5LHWhL5Y#nz<=Og7 zvJ%>+l;BQ2DUL^1TUR47(4OCurQQM}7}s~`Lc6J?|CZ-xqZ^Jh7^*)-yIP^^-Em1v z2Z)^j8RSX^0;nS)TxdKPe04Goe3V?!6hs4lF{Q_1dsDtGEMS9I6ZrgS_*Ab7lGa&t z@y(ZtS%)AeZX$Q#j8fp@ZYidd*Ui<9GEW0&kn@)>FlDt@0zLx3+{S-l!`h%9P1R!+ zv#~O~q7{fDg>{Q=YSEhH$tSlmNS9wFAr#xzcqE*`puUuiE+lF?s#+o&AV`&%AV*J( zWF^-(5h5EJ;(m@xYH+tH@w3xwWzW*G3*(pOBXS#3Q1=DkT#(AALG~E#V}Wi_v~c-h zBRLN|jMJ1A5DEu_xETl*!cf};JFoc?Z1a>!A*sC2+0(zs#@RUKeBoAVL#xKJJHGv; z5W}D}u=$x)sc{q;oydQw1Q|q`ci8xyS~E)yl74NjyCHv*GVMb;kB(;Qvl4)n>XZg$ zm1SvFfw@Ms|1okdO~|S*?-G%A@f>c)=(YwfUzpE4NN^8cD`tSD{3$@MPnZ19G!E9d ztmf5f#B_qrVx--8&76;x@_GdVht&E5B3xa1q9>FriM^~58 z5!-F4GFBBw^3eK+m*tmb-4vE3ty4yg$9P+6jCqXr8YA6!;uLl; z@S<@yO8pkKaKwe)zV$r}fd_kh_ZE-}loSvnz7cTPyEWa{HdXyc{}?oYM2+&*_-9dl zs&#ZpXNAuH>QJYqdI3;%I0`J4F9Q}5_Axn;JNMmoyqsn zMf~bLZ?-V`%D5T;9ZA15nA+c&p|GHN`t8=6p|z6eQq33S5@dQZme8Sk!jHaG(>Z~E zdwM6J3x146dwGiAL9DfVf$})0OF;65G!vQwV$|XuHx0m+wnhWu-MVW_EyAZd?u=Qs zgCaO3Ze%;TgL=FJP}DTgMR%j+;C>nvdUHUN09MaQ3hcxNuh&vhL*$C{(%Fgr6@RpT zewiZmR5XVzcf9vK61AB|zbzdw(S>2`~|#jLd5a=U%r zAqF1q9QjM)a{_+YVvk218baPW#eYN{a>{3gV{Y;88sBGOa_d;Zv6yu+>>+uIrY^65 z^&b+giL8qu=Hd@m!0k14GU@Svhv4LLqkunxa%`l1Yu4ctySk(8pI<@UWVj-*N|R`2 z={%)q8dUa_l3aowJz$4oHgbgt$M49b!cJTUsdFV4pn+EZK}~$$MW>MknXE;Q&dGu) z#Sz>;W^+KeDnm=flGOTBgu>sQvQ#ZO#r@DyG?K?ze@@BFJj;7vPosfrqOt6^-J&bY zy`-7vE7DV>9#Lsbd`pzXY&()`jR? zg9NWYmpVJzq^#d@W)sA_^nD)|g!;}4(Ow$jNL@l?=3kuqUx~J)1jvt3cRI%P2T)qR z%#CR+DGYu?$pfN+CwO2gY88A&P>_{Df*MEPX0LlgduZr=WTwGd4S*4LmKbh+rH!n= zp+Z=ODHD?=J4#nDSQcJLg?E=E@(zZRR$;557CUl-%d4q!mWRYkWer$4{`^q$UmScy z#9VE{?XXN*^)}A~bI-DeMiK$|)Nzt=F0=@=U*xGP9nsbh2{ztES9rBOgw%MGvv(_> zw_R0_mVHpAMX5tX!fFtWD>EBlcU0I>q1|XB$O_H84TCCANBX0(!S!_Y8JkvD#5)Z0 z#WPmbUf7?V5j2;~&B9y^HL?(kPSzJKoAaV#5ha!95Ai&B(W>2vb+?=>nAu=ZeLnd^ z3VYjtzK-D5?&?&_<^T0qZGU;sZ~v@l5e(k9;GcQbHs2O>WGydZw=fK&DtfB%ee}`~ zUeLn+7A=-X5lF>*Vm_jI8*_7{Cx*2q2{f+)z18yHss>c-EB7^ZclXefANie!_fEt0p2>=tzlK z(o)zf$26(WIVQZAZ{MmrWc?AKx5QFl=$46CD72#u_Q*4-tt57scfe_VQ>-3S!Xkpn zyr(eb-7it8%=>>?NGb7Gd8s^z?P8=olQ-wJ9V)XwQ4q0mlKrVo%kNIn-t+a%gYg7U zqK}Xa-K!$%T-EdLOyk&)3qhSVdTwjPE|p;6Gpxtp0kX%oEVhlG(hWtb*b-2OG^CaJ z)o4W^o%Ga>mB$f(xB4ue2w`&b>}(`m>_X%Z0frKbE8A3nu?Am7vu%;pCv@8)ttvk| zp}(@M6qM>4+p@Dm#nBxmG03=UDx^-@HCKFw^5$YQcp7iBWcmh-)uoEHYKOrNpAK=V zcIclRMpgi4f&Q?~wPqj|NtoG}LNwAFl_niG%~URj#w&8v-tB-_9@aYEJm#=_%;@T& z9c1^o4Er%2yxC3&HEO+%Ixz#zhgopXM1seTMy;QjUV@p0Zi{5k(#$&(SDH6h({UkD zRAa%?3^~wc91ss$D~|i05O#2 zS#mRm*A^Dn3?AdD?P6id!&O%M;sSinxI5B&{ujrQiXsDlSMxY=6zXFrB_SU1OKIlXrHJ`1|FPEwrK(Hd~q1cm!(@B#%tnuJ^h1hH=yF!HW;p;`v z%!u=jJ7FcXO`gfDp~MF8^QB-Y>?oHaqJ(`|Q2XsjBY&x@P99uJfIqYPWIF zL~$5##YL8?8E`qSUn-$f)yq9}?rU?)<>3K)nKU?PLT zij7dB5b4vzzRXQzB$AMbK}teIK;jMs<@Y@6{kN-n#zwj6uJdp2cfap?*SprUp0(B+ zss&uUZlyWFk{%cb^{GU)HLbuJz&smON=Oc2GA(|-`P|SSqk#5iFK4&2&u0I7WH=gF zjraazy-QC_A%*u0m$c>84?cE8Pns-&V9f5~679CCGLcRx zo1a17kRkA_Z7TIlR99Qxp7i9zXE*1Wz4-jfrMs6fZK^hTW|;k1PpPdk;_zu|qa3#+ zl_!H_%ziLMS*aF{JC%j76Jp!E6m^I)k&|0>Mxna?9r9c|Rg}Am#KZOW)^pl#-htAy zD`kz@unn57^W{3)YO0Wq5C~Y8B&WLDue`2meWQD^BrG*Qn~P~drkOYT@Jgow^*X}` z4#1X~C7djZ9M7Z`SohT#$N>P!ja2sILgn!V#nQr;8cJOtf|z%F-{#b1$tSMOtJ>C$ zAt6RMgsS|CZ!S>PcaV4%-PH!@B+N@iU)7^Hd{~0z?_?lxRMV~)ly*@<+qv-^8&s{E ze84l(@XsE#D3(7JjeyNmZj8D-1!u{2UkGD>Ob&9$b?9?D`S>)K@Ud7GuZ`sWz)Q)H zJYiP^c>8@z8kOx`teLoE78}oMtC|j=gnPcQg z()<9ctttgJ0#gM`iuqWNIFWVPQ2O+x{blYsldYhGNMBdGZ3>>{I@>|oOI@~oJ96`M zx)5ILD3K*gO~~RC*Gk5^HTl8k2ULTaY|(PP7-D#6ZpH zF-#b(^x~m67aN-cO-?#w5*p}Mudt0&V=B;+wT2F1CUf-<#R>(mQZ=PaI$ptKB(l}a zVvfGLnd)!Ov2bDKG}%xADgJhSTN)TQPR`qlmZUy!Ij`-xVcpZ%m;$$gTPX{FADFDn zZwkNLHd2M?hsrs7Z)@eo>(*|7+UX=|<)7J*4k)3+L+dH)E@b7S`{~R>0pf%f5psUpCC{*b9_U2s}3}Q2=I;U7-MwDJCug#&I&CB0Ip5=+C4ZMXN z8AV&scL^lne|bN5y#O8Y%;V&UCu6J4r44e#PL&V`5J)&~_M0P&TuE6p$%#rgOwN=r ze(m@O^hX81Yz6R5pV)=x0_6bt^kEDrQjCu&MR5Y@BMzZ&#a|N4`jhKf-%Ht&5B9?#=t|(Njrv4Ry8u6y#t;} zBcOD0dT~ZiJHqPDMR0}gNI;ld^Cj6uSv_}2JZUl+s4d|Po{J8vKy2arPlm>Ib8EVQ zwuQLAB33o+d*r3vro-)|a>r67*o*b$&M7QPo*2q|Ry&1+&AO}X$)>({(l7B8!e?ZB z19a%Ge4(fl+RpEm>|)jalpWj!2&q5lc$NA$#RWrkZj z&LHEA1_0s9v<32q8#q2r(VY~OcQ7Elk$;RYH(>LAI9szA20_ZAIr{fx>Ff)O**f(m zc|zcl5c+jw75F3Dzyw7ItrPn4nX0@(}=s98u)H$>$0)wRI}hG)Fq~ zvAZU#NbL`eOZ(ZaY^p7aR+j!P<=`9JfWQRO0yUo&Ihs65zmY|n&LDKv1^qVBRZyeKz2JVIod$i!Ilh$bUaiO3_T^);6|Bl1RHDT|!{DwG(3hag#lzDHe zyQD6d>efP?NfA;B{<#h(hWr8>P{-y!RclVrg*NBdI|Qf!eW>=B{O;Y63VY$2xM&LX zGj1qx0WY)BM)8cY@-ks*Nkryt$3nKy4&!zZ>MII*rzd`u}o9BQekp78@e z@piH0IJmDaPa8!JXh9jlbA4_7kUMSjY$(ci8x=JXdW+Mb!IwH3Q5b5k7KYlTOrtWm zxdMrCnnUXC6iFUxN>-dM)J>s=knbnynvg5qwUIzd)qgsPRsKyT**}D^p=w2bTCzYc zJ%Qy;E}}SGACmI{*@p6nJjTsC8X?qe<-IcIj*{a}lZj(lqcoky|Np33*wJY#;ql8; zc3yRaywojEO%KJ%WHBO{pAr+8`o(5L5GgW=$Sy9u*0&dcOvE9;i@OhScqtx1nZjnY zKCXwiXBY3FRA$mjoMz+P!?1kq+MU{^iC=xtTGTm1aNba%80dFqfh#kYRES!sHd4Ax zcN6ksy|BL>BfT^y?gz4miumo?L)^V%XHT@{;teKum5~U59v)Lq$O6?G2a*Ejwk>gc zQP0w_?5L`l8tJsQ_p}df>&t56#JT3VggOrQt4xet(kO0<xASb~j6%;1*#QxKmv%5Wlb=Z>kMP6nJKHltGhs83P85_20#*s;1{PV~Nt(2C2==G6X>jxk536(`J)TC;tA2arFv`&XyrFGP zqk|ENIfKV{eR)QS4~_lBMl|pDF+(!;*Fqc`BDoA7!(|0lm6Azz7y+Q$%aQ=2I9_R4 zJLwZ^L2CDb)Wv-V^R-RWrV7CDZUO?nx~;ZZ+8Gz$IINNrYPqd!?r&jI-&ynxuI$O> z$<3tMR|@6Ds)TXSUsiN1@dunx7EHHsQrn~4V!SCwl{jq*7&Y6?*ePC!YV8w=irS)* z(Nu23=L^ixqu14b3tWy0X{ZyT8E15lzUTc@3cPWcJrgE5gH!t;6*o}}M6jlN)m^Np z$$XNwupoo4&s(P9_BmM$p}##H_6i9qP-Cn-rp(9vbuyHyd0h;p?5BS#t`6)m>vAh7 z2Wf_#WBQo{x71HV79fx_W&Bg(3wdyWSEpxKfgYOQ~K-4^EROBETz>pKViMV@*ok z+L)WvRIK}70<_Orl*=ObGQR7_S`(_$H3#Gv4Jr#kBrQ)$&Bz0?JBR+GCY&lH9i`gp zmf5)GMw?0UQgUJ2$P7kwLl_FlIByj_=VjxUc)=+>e%k21J$voDJ)9OKDf2X$a+4@= z#HErG(LiNAcw@2iK_-p2_6~~U^V6c$4d=$fkg8Hf0y%cd+$_qGe<2a?s$|9isdQu* zO7h|tV?1BT(vscDcmM%e2m`CnmgTF@$g}L+vlU*sv?KkOiv(L+E2rnC3EyAg2)}|u zgFMoM4miJjU4FxpNn6Gdly%UPE1L)o8Boh{K7ki?bNV=1RwGWX#xB@cZG{|KIJHIT zCVHNS(o_@4D-ZQi{nIHzJaxi{>j(1%ME!Cw$i5ta6{*@$Rj2h|R2v^e$D7Y~ToYl3 zs$!cr_flbV>7gQr^m3X=)lr?rrBH)Lo?rnr%V!gWL>D-ry(SNepysa4640WK>B;Rg zdk&(;oR@t)e)dS+)|-buYBr1rW9fnER22QQ+~?wqW#iS-Qp46ff57>7e0cQq)rdg-9-WTW1tf0_o-wO7d#tSj1C)nijh=`;<2zwetZc z#)o-x^U@QiC#l~WcpK_0niU!&+P-LjZcFqhO47bzoZaF>cV-{)Zr$sfFF#+=O-PS2 zx~JO=%VOR=re~lBDM)!PJ7kW6m61YhW8us$3^ooGQC4I#3BcD8BQx%|f+ieQ@6`^h zDcc#%>9OEY(``w5pFQd)(%7C9V`UpEOewEa%!KnzdhcZK++&l&i97#%Q5ewzE}zc_pKjDQt>` zhSili($;%OfnZ_89@t+$D4(d_ir>|F$qIS3)NIO)@2Jhbj694j+^&1X2WNi8jJZsx zlP`Xc<tI$qp@RqAc-${qO$a9v#ec%ydfdO>Cf!N2wVgZ4Wf`JHzdJ@1^I zUsB3dt@aT7DEtS+9*@eXU&f30ZhazumtVK<+&GQp5}@RkuM-(O6+^^-xe2-d+NgKR zdcHfoF~;C}{*aUuXmK#0-k!X9=b?}_LHJUsGQ?ct1%ETFa}~rrPanh!K47*WS6`&m z8vPmHjwOBb&dD`cMW6xk?VHWV`P=%FHyJkN$xzqnFIY(dSlpSa8zoD9;w;Y1S@Hxo3KO%ooX}c(OI{r z;Ug71S9;;|Xuyst8`qZHC^Q(R=wYREj!~-3qj6l0VoIPX6-5gx91$&-@;i$QvaeFq zihjl*&F&9B4%$*Ez-c`t%1B#y+0#CGW?vjDdthnIwpT_k_h`*UY(y+%%->CFsJu;G zhiwW6+~YhBFV8+n_Un@YPw4oTVU!UEu5D>WEkT92#rO!1rdYI$*@`bGYLbe&+v{`tbP8o8=U|Qfjp`s6#m4jCbLBXkQ zJfH}Joz&7vYko`n9hD?OBWT}GCgI6wT|<3+K4oYUPR|I@K$t|l!;L8llXofN@|@7D z$h?DetAcWDey+}f>l{}@*UX^(CcOBtv|P(z+>(Ey+grHS5$~W!F~M?+4u&>i0Y=Lm zIo8CF;XvQr3quII>4*we)m%-_s=~lZ3*mH71)Fro-!}fst=^FQ%zXP@8n&Qth6qfaZb>J;le{fS?Y|f~}lJunP{WFn3 zxu*VpH+esl-}UL{CX{B}6;-2ggpKdNbceX?I$ld<>T2MZTk=~X~`a^|upl%go-lu2#uyaA42NJQlP?T?lV`&Z7D;o?!bLN=4t zmI83kS9E%;Iw#Zt!W~`Swp)Bf`e=VknR?xl7T9z7C$;|g{a&L%sn3!Q zgM-D3GG|u#6nIL6oOs%pv_&0fsbMXFZfHm2rfQ!+rCVhegJJ_VkpwBSCj+?^mE#tX z7s}$DPa-J-_Im*OCU6(T4pvD!p{`yGSJm&jj)zS-G4;64 z&sx`B2=x+#Iyp%Ib??D1fa;7*c=>DO3!XDtk>o!~^`dThP1QbUg^J4n+AJxCRGuaW zC-0!#(h>K8K9W?b_-C@slm2D78d!(-)QU1sluJIP3FYPW&FeN+5{qh2p=@eA@Uise{54pw9xqQOV^4raG&Rc za2sgsjijkU3ARU%p&a4dWzD~HE|zbk)a&;0m@^IQbWUKzD5|r-#7K3ahNBq5V9N}*R+*7DhMecND^I!@MWFGzhrp! zY5>)0TmokAsrK8yyQbJvtt8ykv0|;BtmmI%bT$&!T`DgFqC$T#zf_tthwDFy z47=OI*S_{geyk*8VAGIC0m~sGOa3XC@1v3Yi7yQE0i!PtGXe7JN8y#q|Aie=T-dez z+}-hkp0r;*Myz({JMq;A_}Fja9GSEk&|6_^<})EQv+Sc_*P7C)Fz^p%th;#~kW)9aaO5LeUdGctnlVfwzO?yn1i` zOuy1HsBNGQFhHT%mr_)ghOFgcmeZC!ql>0mO`gitVvo78I4nukAQc%uvi#g*A&n_n zoDrGR>7Oyfr_DK`*Ve99|WfL!^^Mu{%^d zpu8C&-t~Lvb^Z0p=J?(D#83;%UmOdvA)3bkNlU&1?IFg=`0}f04KX&OCBav{L!$6R z?0^8WvvMaZxVeW6&v@{d2E}%D%6a+5DF-tShmitMfJeaCost^KAsh9|FOJV%QCvvB0c1F$ zqi+CQTt^yz4}QOxT3*CuT$DC{+kcxAwo%J*f87~ z;qeY(CiSPk#r*1TzR=#%uhLy~VT+@$r5|aZ4l({L7Ik?x7iqj&*(AGVmhG%NIU}SZ z=9&9@SNdz|D~zTHOM7uYh}M2{l{|mTg~cen!P4mqeiiy9gu^$}Qu!0CCol1Ia}kMS zf3S#2Ahqy(eY2ETJ@3Ix;^`*c@>LP(r}w%n~~ls zN7$dP-j@%Cx1KR68?r&{CZ?IHljn`^Y%Qo}F&DL_+b|}D3F-8;Oupuj7^qbwvQ#=> zA_ZXwvC=^s*2oxE#?HoO0X1k?^7zE#RcTJsQ z>J+q-9x3jT?4BSO(X$s!jq4qhIZON*Jzx!5A8z$MQ}M4k{)CwiQT* zN+9Pi2!ue?Re9Yv?WMO&{inCq_n-^Nw(x^S3~9X8p3~#Ukk|2)YII^(izt;*J_?$Q zu(z{sy5zQ%@8t!AfW@TjB^rIp*4?&CGd~y`7%@m*PaT?9QOTcMF9}D;%o^{7wMOa~ z=V;t7xG{=`_JlkwjhsS`F=qcujkY(;EP)U{6e;=QsA8Al?-r7ce~^%|MFOI={JToA zH)6&A)2QWm+4|~s*p@dbluGvio?o2P2!2cUo_9YDJtgO!D7>fKljm@LYBgK%ZU|uZ zU7FH3lG(E0TNx);KeJu`K75zEzk+iYj?Lqlio7pLc*&7i-PRE6z?;0NuwV9PmNMU; z=wwt(0VcW{`~A;;Iw4X0d@|4t@3;< zr7XG=2=rhI1T+DFJhX$5)_Va5WD-=EVGrY&j2Q%cBFbU*?ohUJ#GZVG*xpeDN}&+n9pWFz4&GRzd2!d2Jo76>?G8r?angUzJW{5LyutS*!b!Lwk&hKKYqX_;*nwvH7!s+-<+r#%+5Rg3lYKpvDDRdEgD;oFFL{db*Ov? zCAen!#3MT*_O#uKjgf+pqQywZeD;g8e_k72@kMFW_pcorImH!6tr6Sj?)TCrWCRH! zV0sxRuc|b&`Tbzi?MXTUa52{lMU$Xx7>{w6^scT-UaOm1aBwF}zUn6;YQ^niA<{#K z_=Ne<%v^)b3>SIAK=K+ywdGaG7|Gunx2EGN&kdiITuEkCk&of9h6fCI5_=U%=GE-& zYVjiNHW9H^$AX!vb42FC`{pS6=}dIUB(i45y_J44q^O)uiKpgt43wwkngyhIWg*_1 z{fXIm_f-H43Fw1yq0PgrLsH@2-ONQS)%4I_VDo8_tdx8;!YwHoN_$RH{GP3x48p8; zRDSsEl`^K@^X%}Hxc|2-*`a90PpUPSBQo%X>>5{9yNboH8-l7K=PKWyH^}!ZQ$foo z4#N7~kyhX;8igdN_K2I3Gb*4k7t5V2j2=$ZgvbWS;Tt`k*IaWGPRj>n1lfp}? zPBqz(3$$|oja#_7NkF1@eFG16IriHQV6aRMf(-NNJr)J%N$I?ssD|ByB}#vlZL6Ry z#)}~A$`lFEmC_wbIeP^y<-`Y3%&(illVQ@fj*+14^KjbKmW;sk&ZIl8+(yF<=l8q8 z+Je*rCW7Y;d=ZC$qT71-p^e{9%ebe9#RKEM4!(a6HHQenG}2WR zwrZv($zx#4o-Uu{%j?s#nm*?<%e3sq7s421luQIhLz%$T zibt>6`#>>yQXzTBYRvj6dy?r)dRygO*1Lk${$#!7Nr4Qpn0;&Z_qyNP{aE+)?$?Te zm!MH>iu&m{yI)%^5hY?uQK(g#7oxigw<|{@LPT20*nPDeE6eaimFBZSO{OoyAMLtk zZ+tRMp@RoJPqd3H7-vqvh4gZNgfsAw$kO0%OdDhnc4({Y9YBBJqCPw9i2#_fSwYt8 zX+}eg;GnQ)miS3o^~&*>3?{d*UtF^})eAko`2>rBns``75AK^L$v8)KR8LrGzPl{I z!?MY}q1y6~o|h>9LT6)Gc6vai}f>c({ZmB}-_ zc(=Jcqh?gLd@Xu(Dr?kW@`$v5C^NH-np`7RY*aQoHYG%>ht4p2SVLIrhma@z=Hmug z*_PS_FR8J0nI-#!fp+F7@`JWR%2m!Eq5i&B%9drEPS-bzT15e%tFspp`M)sx-|)iz zQ)?3)N9^cv+XulI_5NZ;;!s~NjgCwvNfBH*4l>fKO_OZOWa&TPDT#|>jzrCcvd&|> z9erdh%-hYmH+wUh9HVWvlZWzvouQ|HE@}?a;bx)7hws(`4Q65-g&*_tcs5__{sJ1% z1|WetsWT!~{QJxIVGKoKXCr1Gk3gl`tQ@78xa8jW@DK`mH(Q!yt#A75v-+Y8hkom| z2OgRLY{~11xlq>Ky4Wz@(&5CJ&xU4xYlw!%JMWoD#Kgc22!Wp3zqTW^l!BM;rN|OG zx&(769kLZhkWHwtUz26#ansL;xd0dt{tWlz6xB#sFql2BRq-P5fd$p$bk@5hf==jW zv$WOGES_!QMQ!(O$@Qw%CSG|TIBNO);Ni06$t}(fF-%lYq*#0PcXN0#?~2@FSG^_= zVZ5sD3?;0=eCNuAgx zaSfAM$h2^pBLe@CXz!g&ktk?Ro{0-F<#JEBF_n?Erl5E>xc6qi+P$thbfeA$*IYaz zX2{xm8uT|TLCclCK(44r>YLYV<*9A2s3Wc%H4h5Q>(y zwZp!ob0mlo(|6(*j82POTofrAKZcLfrrSf%N0Xq-?J*{>bZ_>b&;IAx|J(gU_h)Sp zmE8vbupP#I`o>rEovFm92=c<9T~(aLAY*re@7{)8u*=`J2Uwel_6;_`cxgB!1Azg9 zczcfkQVm064%_V$b~KTd_!#}mrWQ^ITm*lEExQf@kSq5r&}$^pI%8O<0z_DU#oFRo z=d-^^9etD|pEBmgktegA%UEn=0bv?hxb&t=*QXmpFS%zMk=JZiQn!P-GT2-h#2Rrg zS5z*zj3B9I9m}QXvJ;++qS(yWkD=sHzJ!eD$Y=A2mcawq3LC<2(L2l)Pi*hQR+zZX zpL{PApt{#8=t-tvDMf=}7VdBMZ(|NYU!`^_5-Bh0=IrG=Xjr!K)jXh967yD+k>O;% zC_KBbBGNdVs$iy{s9f&8TIGJ)H0ukB$6I>zvanX;G-;^A)DHGCfvv^iJCUcbs2wGV zQjMq{(w*)=JnX_26#D_$k(&K_E^*Gkc{khI-QN1z)d}HYUUYwYoIU><1y^A^3h3%m zo315K6X&*0c12r+M?U2Qr-@gb;F6skc@8q~bhflPgBd7`8Plf$ld0fOc9Dfv{=u9>|Bg78zS94?VPqx6SjXxCxFK%$pdR`sGdLw-@hw>|ucL zZ?*4+%*BHwSZ*;=yMIDrC9Z>B!<3r$P^UL98=tcGJ~p1v9nZ(I7(NIy19LSYS<1M{ z8e>F*b6RdIGq58FCWfBU+{#!|TSt}ZpU-Gv11tvuKo!WF&MB@my7qauy+5bGeGf(tK8H*A8&03zODJxR20S?f_1DgFC1bMWaWsJ7*p1^rzS=cD7 zX|A>|M}&O%CNX8?GtUE zdqNs=Qw!RtBFSvkj8UYbtp}V66}Y_bZ~C;3TG-;`@hq#}e5)9YL>%&axO^^!aa!i! zKtI@(7S<+TM^#+SJ2+2<+r7nhJ=Y&L$&`C<6OxS%u7Iq&o6Y@!(My1G(p2}aQ&T-zI5?8T+o&&C7=w6X~_b9)hdoa!raa{=}rQN`} zijC-U;!QZR<$jGCcG{Vud$m847V#h^WJ`u4sVogZG7906=uZwvdalhpC|b|-Q_V37 z*GqEI=CP!B50+;y0hsQFUUFwZu3956pbht(7Q;3WLGlcTf|d=%WenzExGZ|%ig-u4 zLJd^LiA@pW`r(9_9vKCTB#-@}5g6F;tAa{5r;sNvOTT#16zwjK(&?m0Sv_`pGt2?T;``nX)kqQ4e z5{un06%c0;B}$fr8C3;Y-IZuFwHsEuIt&iHRF6UV5ZsAO6gh=O>ca1o38Nl;f?X;X zauos0@& z0gwUpYC%DXS$N$B;qF3>XGHxl0;@8|I?sW_oy2ZzZFiKAihcY_cZwp?<`!D-*WG4i zF zm7laF3SxYGZC;uFW*^C0_|mmLd?|t{f9g8^JHF>X6Hhh$%?EJF(hGhuTC;!<_^mi~ zNR03+f23Q$#u-ru&MF6o5(7Z5)YxNZV$jHGsZRL;PNkkn6MEq4#s_otXxMw&lZw!b zIyP$br)2E$!|=;bHv}8Zn1keXlB!BGyAPnL|zgH3d6V(MQUWSc#f&#Br5+V}``lStY8NeNsoI_sjo4FNwF zci=U~wn`@biqR?})>NQEP0O#)B54Es8ZASAB?_ck$voXA>aug?*5n5XJ{=x7k{-Xg z?gykFFJE`WOU8J$5}N%C{`=SIS5tKL;D}p>7i3@3b`0)s*#^eGF^f3GX8-E!|LXo6 zrBG2(+6&R(t*i)*%L}#5W1vY58a|=Vi zphn*@W6*hsgqrISe`AnGa$~W#43no%9g0FSN_aEnC;XU-iC~PHp|Adw{7-i;O?Bc?k^HQPeTjDcN=%^ zDYbH-qMArlWE>ay5u=g#NLT;B_>g;*>3!IkgCF?(5?GL6CF^!{`d_Ah{Dja0Pfvs% zDZ$B;AW4v9G;mszZh$)ED^nSiaz6we9xO?AX-tSaSu^QW#401V8o2`IGJhv5*2yCq z93a1pd5vxHO$16ji#xEkR>t`fcg8uqn-s*MznZKTHBE7mND2Z}r^X$m!+KS8TLuQ~ zvG1RWUw9p@d!k>GX=)9$lg9l^6#V)7-G28+yZ@m3Pv+J@u~aFZDa$WazT2DqQujw4 z&+PVA21Dmd$sls3*I^i10Ii_%cNS-Y3s*Y(W)#|e#s7#b|KegBc;{pXw5 z=E=AY{G2GPc5V=6*dZYXVfX~gQ5Yj2M)#ne>HLNf3g6m)CJVEjQYWKMgemHRrqUJN z?8}sF4d$Gs#}Vfcvge}8F-O^I5`vcB* z3L3baPWQa~OJv3cfEl1?wu=H0LlNZ(bG$m#QK+TAz9KwR45ax7^$>Wht^KI7WtI=~ z^b#PRP>B7|4yAQ}G6f7Zk;+qRDHL`TN#?yOe&N}X!hdxU6jR!#R8b7j&edevD}M4F zh$m%fQ>codP*(1HoglblCxeAfbq!yBk%LKCS2u?dLa;Zqunp0g3JP!IKB#jr{+c8h z34w;i+XaiuR`rUHzBD(xu((>=W)vQx z$ZOy*n(up5=5{-Un2H&DPp{KHYKj~Lj%52~(ve58^G$0gXrL6QXG1Cf7CJAS1VHwh zaz^jpBR}}h&;D-rHOvUUKkn!Z%6`|QwBf?jxPN|0v^n^6+9rdWhm#!@xfBSH?UA@Rgn@WWI)2IvYKj*HO+Re8aK&mFzsSUO+ zhOGv%M5CmJaO-O`oi>or>RSm~don8(y(pR&E3CcrrRz4#vu9RGFuQ_%lS0&G3PbTa zs&PO$mh-MZrHWQd?GbUDsifVnYV9e6jEb%DI zpe*x~CI%s^wg`WOO7`ur5^pMdu#J^v)T@8JA?xjB3!HDgZA>F5fR~2ZTFEt^#z&3N zO|^}9MInxh!)~O(4*4xMV$>_iYr1@JmU}AZX&4_#*6;Sm8t~^t7;Lwh<0?~9-Xz5W z3ZGa==qYom!Z{0!cRhZ>j(o18uKEkIQSnRK?j;K|IG0N3p>krG{{_Yie1~rWqQK-Yzc3uWZd}7X96$Ub^y5(OW0mwwZ*yqopowB z=?yaipB!Eg5N%D_iZcd_e*OQIicYx<&UNfNjY9{RiEDL=7l0 zoy%gxVN&K!C)p1ZK#prd2wzunmcy`C_z<`UO z4wpAca|zDSnfPm*ii@O2wiEe=9-qJ-?`fNa@WFPi;^z%PT(wn`S|pCp+c$8v8bLzx zGZo-HVzu3DWS{iCI{FI3*Rp9ocQKV54k(i-+2=+zZc_5EN7CA=(z9Y1DEC4GjQ-h9 z+P!eKPUJ)BdlM11U%y@wZp+L6O{lb4hNGI*c6Oq+ZBPzIz&f2m^T+EQA}QVWB$*?$ z)^5^oX&m;)jnoS*5MlkIEWzsvY1f1*9HcKBXLz~w-Ad(k(vB{>w!85;x`NI0AV zjX&u2II>HAZ3WEZec=f^;P9Ti-8cmoe1u1L4}XXgDx;aq2k%R_+&+Zrb9|^_SqWK} zY&XXK`aw}FxmWY1~imHg-NDdfu_iJC?vVP z3?_o0*-TC~t=NaFve7-A_`Wq#M*t!qp|Nd=gf&i}VK_Z${1*jK_DR1>%jS_0kcdXS z`?Fu?>>Evf5PJN(ps$tbX%RQ|CH)o--L<*eb~$X#m=LaAZm$0|Rf&gC01E;aWSW#m zu}*^G)*5H>o+uw;S#NsFxfbps0bSj4g`+t5HpOfD)i<6Q) zA?N#RgNy!zddElV4Yj%G9s-2$ zRBkPANh9`H))wonz6-uGS}7Knr1jJ;Mg9YTeX<3YI8b2-Qfuo1gJ?Pz^l785EaFeA zw`{z}XbI)NIO*}EGRSQzu#K)exE-wD$lF);~9u04hv-a4jA>I8f#$sjW@JV z?}vS|wNp@g*c@w?aiv>Ckv9_Ifv#T&<NKq(SZZDex_M;awkUZ*@PWV|EzK$}kqQ8rTsbuuBV zkoO6}{djd9k$`YXCc1u!d7@$L7;&hr`&4+A`fQK<_M_SWH1YI{HjCAa;P*sQWy)xZ z6$)tvNFwm2Ij{2Z0w0w@JOiwRZtC#tFrwjEzu2PwH%zKE$-9ScOZZ(wiy&t{N59+F zLYK`!i@(b%_pScQI`?0j{p0SJ&|oqavw`yIM&RWC!5J`ascB5vI5rDx%nVJOrzs~+e_X}vV9QYTg6$V0l_V0JU z0Bv04TkK$E zy5MY%IBb)wyz91VSN|4uB4r`l-)YOj5*?dxb-j5O?cJ|3z?O7&h}oM5=c? zC#TVbMGo3xs1*!j;g?E5b^(4`zjy+YH!y1i801FKZ30C*8j)7UlEj=y?rDi6cnQ^A_TmW)5k>z&rJjhh*X0364vV6oIqy zTo8~$JXgWl4O>(9`utb{mApBqH1ei zJ)0DwT!v!M|MG?IfKUg5Fw4-S9`=Xxv#XYr)$)k+dH?C*(Q=&AgbGa%bi^swSJEMr zXs>&?&Vmz@vDN&>jV1W1!@8w_romR_NoAST^Rr1p$Z+kNE5tD%!hC%KO)gb_n{SQR zr@BNFB8rJf46TfuxHC5sP4mh6SnV|QXOj|%v>++drUj9z3fUNw>j98xdpGpum#%x9 zDE4SwT8jo1^R-+mZ`+dfmZ^2=QP;QXcm9se@BD??uS10UamsPUYqPuX&|#)e9-vC7 z>I;N~&OiHh%Y8{&its?3YEM@EUjzKQ^s8%Z&Uf{x z;>1)~Z*jRf2EL%rv+DNf2HLLU{Pgf+V6NujCDijX(gyVTL4Siy?1*53KD<%q%3rw~ zCY)o;=_m6W)r@?1bjsptMxV?AVaYe4BWSgP7tMTfn!RCwtDPfnza?r^Lxi!SY!|X% zRQVX&r_n}X&v_bu|Lh+|>=pw{lvG|fCf4Gp$h$QdZZH?eT&P+(=9{O53=@#g2d!h` ze3EVn^82nKP5cvO<(Bn)Xyf#O!jR(!;0kT=i^YpW6-DzSVaFp06=hk_Sj{b22(%m% zC#@)=9SzdcXyFWhoB;X>J57&bl{A0Yz)?H8E#-~aDC9izqJC|cO}e++KFtS&c#%cS z3QxoP=Cn+hPI?+oq8RpPzkBxk5myrIQ!;Z5W1EH1Egt$7Z2?gVUvzlBm{lkee_0s+ ztr+UpT|0FPiW{7=a5OF_A-bVG1JKk5c@Q4<&UE@@3+`Bp#vN?A9V}0ALHvE?u#_L;cu%3b-$*zbkXqhL+X9EMUZRsGn!&RXt0vatL2;E?GF5cl-fn!v&i{c|(vYrN3 zj|biD@?dWJk@oXeAY+f%xDe3nyKO@V7X<=91wSTxM%_VL)I`%WTz6CfLQip)n#5;k zVY#K*_;9_=@3bX`xIXr?rSPg&E5?z<>KN+be5& zm{$4$o>+5@WJi_-7!EIQFW$-jA>oZl@+pmT9p1?}v1=$;WP8cZ%dSi>O&}_WzOKg# zT9vDY4URreNH(@$E@kaJ2O39&S+s*CxM=eLs!4x0360&`tFmRcxUK0w{VU=VIFMwC zlFT@J!Y|L!l)q* zvCtblkDPis&YO1QcX|+{^Luah!>Wq9o~+RelvSBa(})YPQZbUoqN>gDTk&@vNx zCp6M@CTx$yOpHv?Z?5Kb-Lh8EEkHRpII1M4Sht_+xNxT$uz*kkOws z&~M3EYJ54qUF#Y+8p?_eDhEJz5;YTKWV=$ru^X5XE`C8--|N%?jj!pYOK|gjf)}9? zB0GX^Vn?r8d|Y)==vvTztlp?a=}vOdo|<0WoedhmL=B5Ebs4w*^5XaBMC_njM0nTl z*EkBrxze!M2HFI0xHTH8lgJjkC&G8fHhkRXcE(1@Ij42Mhm`l%hjw^8gm^OC;EW?> z7d~L@<`uP8#Rx1$C}EbY)4m=#Z!P$gajB+fs4H58Ff0W~!Kot$oYGV)tXoYYL2Mnj9wzHOIgH97qlM-SR=<_1?TmPPIx018 zz%noT%}2|;zHU|4pPW&f8rLZ9$Jy<~yt}72Jp6RJN12jwnvMNp^YNRq+|hHDq^Snx zwVX|QF(`#ovqIxJX;dGd3VEPL?lm^vPR#kj)Z=^-_>#g)`3%pX6CNm+RF~AiYV^Op z4k=d1>awxSR~SobS=IooQI5Dt%oX>c3Euz#l~>|DpmC(19NK}&G$BAZw;?rFPWwBF zeh&e+tWTUj5f2t^_8y}kFb$c%PSY(vl#$DMJu$w%$yDZ=1g;id$xda7ay_zm>;S!) z_+TF1pSP*achG<1@I_-DEzb7pfo~0IrJXT2S=&E6`;BQQcv&DT2fOx*l|jiy*E*vj z?^@E#F)3Q>*Mf6-E65&)G(*LvN9+Eu zOw>S393!P_JtntA!ZG;kCLHB}(Z9LcoAYJ#cuR-cr3`^q8%z2z>H^riLlfttMFYcW z`vAi^PrEv8Qr8BrfCu?p_|R$B-!6COSIar=;f`J}R}|&EIPQS4-b{LA(QCpg^C=~m zCh)iV8Ovkwk*nUwqCNWsiqySzW-e@*tExB-xYspggRsu6(xjdTiYv3}>Wd_O0h zJ|6~s$#dOg>>5x-GMxa;P|OqIOqraZuCqe!JSw69s?;(t`JqS%Y{Vj=_HL;Njbq*g zGsBxcVBpM^-J{~wcV>Uju(O^qp`5M6y1Rw0YSB?4!9XQH0Ppzq?x&E!r5FAKXQ4g= zryQaVTT`e2`h2rT$2v$W8>&uqv;ULcaoazY>C&I030lnvngIch?JyDG!Kf?RMm<{_XY+-8ZlqZVo zfA;OF(-~OQc2Il@WU8`PbdWp&T2GMjOSPaX>0wVRrnV;)`0vbKuhr{zkOER)o5sbA1?Ug2 zZm)Q_>N}@eP|t}XHIt$Sl+8=}vNW$o#3*~cP^6Rl*wf)jB%#LGwm+bD42x2pYgC)3 zcH23Uaj*@e;mkB|u%Ce#l*IT5HRA zRX~t=8&o0t(DKXHTO=NV-5RELQhtGz3A=|)*bw06pMHu?&*YSEl34H+9xFH@JJjKg zleWIIM|T~*vwEL3-1;ir+atnt>J!ndM)&dOhVByrOWnIe>gOwrMXJ}FKY_~UwC_`c z?B@Gz*cU8-lH0QBnge@&N<-L|i!}d6io1BupSg6%vxN?BioCp5{DqUwk)8Rpi(4ZK zwo0L!b_`BTB7XdTx5;<&R>0;L)M#zTJl|ZrdPlj)iq266_li^&Et5wTyrXWhIdMwj zK*JJ5GzQ$?Ts6->CyI1dyRGNwD2Fm~ut!=D0Wg(?RtzjaTcm?drp(eFX4#4AvwXtD z5v(il6bAS)Ze$TtLhX88gvd-4jQ8?}C9fA1%Ic=Mb1;Up}#<# zT&?LMmG{u7+-;KIbV7C_9OThjId0d;o(C{0G^K}}{UdxwSwXgz{e$Hd2~Q=TZ6F|f zeM!?$&c}kVGybDfR$CJxe{%Vtjq(sDt5ZIA-0>fFzqlGcISKb#9LNCXu^?P_xLmlu zI+YA9IV5l2>aY3D>EWvl9K!0)ZIQNQ#3cp8r+&&NvVstQPby{q_yfomQIu>nnlAJWGIp zv!DG!_n5dehvLoI<@J~2_#r$s`|{0~SHk<#7dwJh9g+8O?)Mh6FF_4bdo;fs{Bi{{ zfB3SEBFsMpOoFs!;OB5vKB!?n9T?E1quFx{F<^hdArNd~x?r|2YHlS+yXeE@4f%kWufDOMF8K}nrJp}SydR^K zWMN>{Q!c34@IGoE)Q9!!#al%CU>jcQR)k&R8OKe`7zI6V0RzgCgwnueQG$g`Qqi7a3QhrwxShMo5o5iQy%O7?B6mJu~puYZ7nDQL|b!0sZY-= z%Ag6AtQPS|eB(KUf-pJtzf8{5GoVZN8%3 z8+_$&QVOr0g^1qY?7q?c?2058m8_~lzJoe7;?*_;wi$8-kS{n>Nos#*>ikn!ND!hv z`44A*r!6X^$xu^=rsokGT{LYoWrxZoeWsL2f1OOfZh1|jcFfGwlP~L=IF?|kRaLj4 zC&ntlVqpwv*kta060Xc4jOSt$sPuNW3CPvtju`HCy8>7h%E&u_Kx4TxD#EM4ar;uK zr@$9ke*}0zx%KoB{wd#bYasivlypd?y7fL(bXsXf*)y)As)R`=Jzp;sa4WZLdRJ(Q z)=OI9HlJ#JJjunFT6$z2rc5@sn#S5>ipw6Ls=c-dB^)L|vq`qg>zhLqq;Az@bl_F7 zkJ`LF-8lA=zDtXVDoEiy-{EtOpO#0GHTncUs~WKP18&1NA#j72*>(7w>}p z6mG7{;!WxR>#`GHgo1>}_3`EtyXElW#R=X8EDCt|T&ZMWTCw_YcdL+GHaesCLbk2l z-3nrXdHUb4X*G0Jj6Cw)&aSD)cXWE&VxTY~%G8e~&E@%M`?hf^Xi3o=9%ON`u)k^k zhT>Cr(i|Hvmvan{3%cg)C!=tGaRVl@-+ey4-lfcCnlznz99jYUM7dfg1_&yV2=s5> zB%%L42Qf=t!a9o5skTiH^Q4xrS#!THxjhw^kr_+4%x3KTPG6wbzJ^>oX$8)PCtlNp zbZ_4veN2p4?xDrE^*Az@cp@kyb*dXRR3a8@LOW$^IwPSsdSVr0<*wvvwJwwHX+p!z zpG&1Kps8)aNM#vmm>nz{_|nL992WJ@m1|~c-@5ee!6Z=0G6fcwDy zwxy|-E$~c7&~BGbuA+M$xb%-tP(Y6M2$hOYH5Illz}2d@u-1v-3H|1=IC|=GDuOcV z-(l6?e0uoiXmfbe26B3`E;CsD9h7!+1iEpAbKAdhdroTLtAuoU+5x}x?pjkwrwJc- z1mbilpP$31sCO3=^u;l9Itbw8Q^TS74ql66@Lb~4DR6KmW@%mEOb&>%IVY0}=xwti z*sygv?5evOH@<*uMDL(SgoJb~t!4+917wRfpCg|a>dzvvwW7(P zwTlrvbm#d!Bsv3_T5=U)lr%#`ytrepFV5beEGy_-jwf~1so_Q2_IKT{UJcW^@Nn=w zoBZD0R#akTJIoig9yuCh(CTr}Y6IkHdEV*GoKns9j9szl78lt|6tq>0T~>MVk%&o5 zkJoZR6IYqJ{2yTf)Wu{f;xm=Xz-G>&clFAmSqRg7P#Z8{0v0Wx34eme(XY{V<=tA< zqSd$)^nAEHBMlV0q}k{wK0R~Zp%VLeU37&^d-ub+Bk* z`>`$E-69?86>!J^TMN?CrQTi5Qw_X8wFF$D+QJQMG@QzFAb z`COO-2WeslhD~&JqJv1M6B;O~%FsL^WacNSAcwwWy*SIS5Q@WATQ82!up7);Qm-8S zp!G4b?qXqOa*N%?rsPy*-rIPJz!Epsz%H?o7R*E;_hM~^pv2(vp6{>4!Y|A1Cu_5Z zdhIVqGG>3$+)=De2rN}x>to7>_RO>%w+Dn(Os5sC)WuJ{>w~Ipm1IyW$ufP2E%a>o?{R5-^JpA%* z$I~F0>lVZp{DEz?QvR$KiN zxyw1I6P8bQjK%fI#tG4_M&sc!NuN6smKY(9gt^g`dMmPZ9mCb%xzSY$P{r!?C+yQ! z=g~d(LZaC`!Vqyj3B;~!C;k`cQcrnb>cAEc+xxoHiG`enx&@;j=SQH?J&m=hALZkr z4cDabTdvHX={RuK3AHWAZyiWyx@uSh5u4uZNEh>k%3QJv}^W^)Y96gW@kH3T5iXD$H}Snbh9vL8@7{A7R-Pvl7Ty z!xx@Ln8HoIUhFWKMjSJ$(@~~&(wu^8Q7Ps6+#9HFpNO>d^-(h$LyxQT%=(%g+x{f$ z>eBW_WcU-5t-tJ&Q~C>fvlYAliaZM|K$Q`wknG&f{strI_AVKqkq5QQ^yX?gL89hM zz`+XG>%U)z6eaT;I$qGT+URP}7{x3ia9&nF_Tcr=CaMyI-~xK^jKZrpmiLc`u% zshgcwfLaAveW!%oazE;UR{3SZiXA*`ST&0b;Gs+t|7{b9ma+ugPKb$+X?FTdr1H;J^bXocj-ME36#rB-|}eIqi7L< zp6{3|!Zcg3%@tAa8)0a~>rvd}BevxT_vJ++%#rGNs*t{Py8}Q<_H2EG&H4E)Q7}W@ zYSs4Y@Xg^Tu5pVkaadQvx@_x`l)SQ-VROs04nnfW=1f5%QxwT2OOf#1<|fIzKlX1( zi6>FA*4)@`@=wj{7~OlBeADh19dV{A6iY~^q~2+Ecr;-|0(|Yo1PO-qT!$LFEE2^3 z5%CY*U5(fCjOue34NL?l`r?+|*r0ynrQp@ut5Teh_EJsqA9#(MZ7%O! z8i=Ope`T>&_gbjp5ffkmgI=3uk#tus_JI$8*iS;snFvdnWy+{TQML?!kvB4&0Vwn{xvGSSanGh~!!+V|?M4Z4Z`E zY4QVOt7^+UAqf`t2AaZY6CBon@%+n2FlYcD%826rU>nUkFFyPA*BFSf$m-XMYWL~@ z(Rxf$vzy<;mZx;qnhu=U1gxSTB>L)cRtQGROB=3T|M5wLxYJ=4PYipu94qrvhR#tk z_7fi&Q??mqFSE0u4gF3z|F2)GCgF0`tEyxeIgVxxn)K9Kcdz%PdpG;-kP*xw7?Ef6 z_x2(gREB?Mq4C4uH}FXZ8u~10&H+kP#Rub%w(<1E^aamJj{uAAlV{Ii`2BIX+Qg4z zrql?z8Svs}T@~b;Wm>kM^%pttL9_^Zei188_m%>K>MM4Yn3w4_(-l=CP7mRh%1Th- z3BQQHj|ey%>wSLjzvFFRinn!bLe2R%4m$cX|K%T$D%T8oAZMwFegJm`VA>;TfF!c= z$j~>O0EmHAG*Aw2i9gGt(^T>B_2D(!s=sPlx5jp~E9?|gGU_~q!{O9YYoR02%!?U0 zoPw`VByaA-pLs9Pmu_!hfZKa))aIMhN=f6Lbh9$ma3~cMiqs6gVWV^{cxO|L_QtDfNG-}(ecy0GG(k5T6gNWPrS&uH&N z_;Wrnc#%Xf`Bh^z)T6DPim_EMi}nSr%bO{iP7**|^VziKR{MzoyI94|o0rW`AY>N& zeLQDql*$|z^9Ix;wvs&)^m3PLJzN{6mzikw_`OssnI`%P*-KZerId#oec>rblD z8!@Yc=3@wmw^whFwxVhJS4kS2IFSB!T|{9jIZpk|j+4XNX=^)HP27?wt%u*9P7$dl z&7rwZok9m=SZG+!?dO*iG7$N$eRDxpO?#069JE0X3%9V)RE#8t01qe$!1+c=wDLmf z<2q?ds%c*Vs5LM9*Wom1%dqL++uNX#&!F%{_`a=!Axum;w#}8N=;tfVW1A?jkj`)U zsi^miBspuc?j5=~TTM^T2f&d5U6OYUj!SHO0hmPSi(8<0YBMZ)8zgJe_WRg|UK>2U z=ofrBbQIP7LzTqzJG$j5gC=sXL`2a@W_PUaBsJwCZ=2h8Sdl@Tu09!HpLjkh@1um` z|8^}kSwwuOB|Hjo2E8IA-UONoxJKt@RDT18#Az_GZ?s*b_WzGUq{rzhGuaF6E*fDH zNmV9*&aHK=Te*UkZ#4ilD7k1jZLc{5= zLHCrbQ!ZfK51HX;V2g$MVHuC(7<|5Mf31_)W@S2w7qVISDac#=RR1^YTj;I*?Zu}P zXLrtCZ-s2pDv9}(pxXskQhIbGHI*c1BtSzDPlgm|nk$uO3D4$khFI|Fi}jf{a5l&C z24<SzSJW;J& z?1Aa-lg*bWop?)gCjgH2)%mRm4edLZNxz85m{9{0MwqLX%-Cp4O8qwZ6GCihwby7S zBu)#<^1~Ny?p0KO@}j68KjB4;FWqXX{Y8sGc~4A=JkPa$0!O~&j=-SHNbVKIDerRA zsn9h6N|uLoR!{9&TK;zFjNXE7WPOo;PMpu7`@mV9+s>w9ydA!8T-Dr=!B zGLh`)@Ujxg^d;<8i+ z+Qv4$#nIc=vOjhr$Ne(}$Ll-}E~yQ>D{e{X*Quez1Mj?^42llhm*ab^0}ZlFy2 zI_SYWiVI+@GKL5i5s$7Yk&hjDy4D(q-lWb=`_0hO*_aMBGQU;fPyO_J*V=8} z94#TvaeIJJ6Y-`sSs}fhnriLXU++~HjEo>DA}iGpRHFG?9MQ7qOjpAz#rdi@P%#4M zEg#`PsU+x=21~M{Z_xmkU``1WE((QD89N}6O#Ioj%n+iF|4FN*m{U|c7J`(@AWC}q zRG=tq#3~;$WpwS(|0RSuCC;VE#^a7-J9nnLegR=YzF9f>mRGkEpp|$Q6h-Q7Zmur% zhbnAgEjRK$iBb$La>~)mx{+_j+=mq*1ppVTsXQ@k-c(jfhzb>d0w#V!4l|r&gDrYQ zSN!1|%?y*+A6W+9m+3sTJp|_;Gn(I^Qf6!WDWyHCuK=naa}4FIEs%T8gX7i$=n0@| zBSN-sr;L`5P5kbz$wYC_3FyFZTSQ{Q=A(H)dl0-2m|Mn9xSo7-UTv8^!z~j)?FFmc zUYQefvX>@qm{GoBTdQE(ae1|Tt24K}{QgjRYsHMBAQW5bjw3Y1mZzuT{itGp&FCk? zry6X~C(X~B*Xo|^%CK0DuaBoe={9Ts>Wd7tBSV5r z-_G1S{T{;^g>?Aor@@nYGIlSh&UzN8We2%vR88!0ehFb?eyzk<1ZiF-()DKj1wLDM zs^q_e&G@bE$GWd~FS`G7K5u4kj?DhPIk79+%|~?JMH!$;9h1t(+ZPmF1QCxH6enh6 zC-eCSd_v;S3qCxRt1uVy;FzHDk(&a!Yuw5Ci^Hqep?XJsesX^KX7f&8chrLal~NXe z`|c;M>&n+CyL3jbF^Nxn>Ez07>aI6$Zn2Ua{ea+gbAt3cXaO7fh^r9O;EtPP*cI`+ zt9L8EdGQJ*9e4SJJgTz`-$f~tJj(If51*eUUc~@DO~ZLhCNbZPvFQo%fmZ(2`N@^4 zknxf3c*RHlJ#Ny5xzx3p!Q&G>wO+_$Bpzg9$H^z8`C}GwtxQ?-57dv3hx4=XM1D{r zIA!)^D8~4iY$|!j_({0qg@5FpfBq=_?2}8JKK;yN!#>nur@Ly=^Md&a=mw|jDL6z0 zxHP+ZGhHcG-%k%U<>Z2E9obQIVe{rS-YFC;e0$;B;G=G(^v(uFN7Wkso>fX_5(o^B1^D<2b-zhhC+s>H%+5<*lwSH6(T zW@)ngYVcM_(r;;u?ZQsb9!U~H^J_hIJR_@A1{f2Ot}9W|bJv%CKGt|E?bF|zcj{`6 zhJMa&FMGRxL6t7jrb)Pl3cI;_!57A7{m~H)Ad^C&T5>g*;JcRQa0)qln<%>Vi`hy1 z5Ug!H%w3sDwsbnH2tHvg2%3)_SBge`BZW4ByV;yiTN8{-v0b$Le|~Vfbih58!|_7x-v-b{C>9Q=!3&N^76C z@qFMvG;t(jCxvn}6Das7E$Z+Miu1RA z=T;J?0e?^y7o0a;2caNQuL*&9|(q%BV_U`sZPv96HM)X#5jQWzkd( zhgdPnJEgFr{8QNwDFrFP1q_Zu70tvScy$z{;=F!df70Eqgdp&&s{xdyABMA67f9+j z`{rty<}mtgtzw`0U;3X)XHg#8Ty8I07 zAn3cJTJ1y`mIwiVsO4tl`>PRFnW<$Y@9mGDCIzEUVt_#_qy<;SaN)MenZOqgJGDxd zd_C&dOP$m!gcqKli}|Weo8Kg9FWNxP6LyUgC+|oSB6jzf8D6joz!6i})zj507Gj_sjhCb&)EW82}JTvbMQf z#}gvK#6BmrMjhRn$%co7`s3+2*7}cfk3#F-{?eik!f$j+P|01a@sc!ZemkzVCaEhN zJYhc;5f~{is5E&bb)H)xhrW(~NkG-IPV~SCp3pWL-9}4`zOm@~QbFFENS6&xcbNt& z)r1DJnch;NE|b{22&>`M?O~Mn@UsS#cJ2}W+4*=lIoD!{t8sHp=`WRj(R_W=*!_dj z*!ey30z24x>ls9nt79Eh;O3N;_g(%X*jOXR>Z*%3FAX??XJyb*;gzo{Z@GvnHLdc8 zDVJ|plFRa76aGpC}gHE$QwVdJK&r$iYJt;l0ttld*XsrQk~Nahw5DN z=o<9GANH&MR#1f~<6Zal`91Uw+%61;{$l_x@*bGBqPXTSs?nwl$0H6^_Iu6oS9bnU z>(%z{xjjrif^cok;j?CZ-TrEryjs9VDW@-AY+nvFz%cTZN{h^4q!C1zb#0f*n}e>S zeDk^cQ|_WGlXkB1rOAb5guO5x^Zd%#P-J;z%iNrns8hc=Q(gn_ZeDxc0d24-EFb_n z%0)rRs0pwk-7o4C8Yy8^Pb#v#Apae~kFLxtsZ^e!`4$WI@}=HgP-D^KSPvA$Nq`Y| zs{VWadrxKUi0>Elks5GKBnE7~7*4if2_KLV)_lXpsNe)9Ssk3c?0XYy}VOppn) z#tG8E17gZbhX*F5d=z%*T4;CKKv~Goz*eoLACKc3W`^f-b5g7_t5umN0^FrKlDV>4 z*j$Ngv!wIkk{=RXU5%{J8RJgEyxzHMzb-YDRshCJX&6a`o^7Pb5p9GA@&51GzGQ=H z9Aj@h>sYSI*=1|BWmx2`E-9VJ(Os}n;M7TFWsYyz6$fp``_{xvHMt+CS`(CpY{kLE z9M!BjveEgl2qEGYrk4`JHDkMqq?zIJJa=m;f}ME7l*_vJu$1ju4VU!RYFO5`o2T2y zYoLfG@ojqEwt^dLPuhwevx$DP(^NVMwmUO0_Fj=qda4tBq?#@f>Y z?p)y$MCQ#NkC1~d@xUcSpS9ruA$E|G9+N>bbMWjUM z&UZMGq&h#u-qruq%0`h@i+2EAy(hbr2V;wtP>&tP=XZg8i6;moU7FLj1v78M0wCsP zQ-!UNmsxE3GiBs;%VeE=j=stF-RJjzQGY&#hoUZ>%qqV1W- zxi|Y6mg6VZsb^H%MZ+|7cKJFxFk$DU=Ymw0z?X3+e6{fb+bZ3v{c6X};^`E3`w4d3 zRAuJo3TY^-ZJmD4haG8{ZpW2*Na<UnX~5i)IMJeyK<2OF`&16C}z*g7tX zJ}mcyPwntTm<(Q%_?Nz-1xN7P2NLIz`R|7w}7vBhz>pxGTi z$Fww_rSbTp9Nap#Wg7$9FxpFXb4;_q&$t$PPVxKCtsb%l1aKv(;ic~JyD|MOx^*-S zYucuelRTLmOe@;~zdchXm6D+8$jh@=7|B_>=xf+aHg;=|$dac{2YNB{mjE8&MPXA= zd2;e?#K66fnsiR*d@YJFa1A=@at9@P#4>#3Xb(K^k`~<$~Cle}fXRr8wX5Shc8e-@LIvNF;6cI!Pa;K&2M!X}+9= zNYP1&^V8u$(Es$Q+P#HW7Z*&J$_I^EjnU>^&|wE2dFUY%k_N0+qxzDX$8<>qkzFsY z&Zrx%`21U9edMZZdhKq-@0M4xQ)-{NEngi^@wF~E4wpK<$EU*;2%~C9$Z?7|s6fRZ z?BpiKkU8Jn`GI~_0`EnO`Jztxj_>^l)uD7w@Qdm@u6EFQi3q5^*fUvOTrQqH%!lZ# zHJ7Hp^GOgY<`jVQ;C(;u2}UQRbasGE9{|AT2ix?tRF8$TAxq&ji~))!U880`N;e&R znQl<63(gfiEs*I`Li=n!9h-WkzIYsOz_jCb+GjMXMAwNSS%fLdBKmrxjHG=^fMbs< z87!*z>FBc=uI;6kG)U^>?x(xIj1$?|KS`+Q+^(}Tt#1&^e30;qU;qA=!p=tK(y$4H zmT4i}cT`l*4hrPHk05)!J_`EY4zn;1oTb`9fvC35*n041OfZ=xe!$@!@h!M}ca8ps zN$sv45s1F2)v9qgn6Kxge>X<1jU~AWSNd$=w6-xfE(7){Ho;^xlS-da3G-eZPwvJ^ z9+$<>pkPvQn2bI!ab+U1=ZameF3*jJXzr1FVmxF`8}MX(uO#TbS|PXRFNkUQvD9r3 zacImw($aU@*Xm`2c$DX*e%*ZbCuZk!`B+HMo?ejnqf@Mm+lJc~%^T!UKgIu;%ht9_ z8dmquspYx~=>CBH@N#vO#&Q3}fx=oUg+;mBEgXbp%?=zXKJgc6=Wik7X z*)TJ~p zk}6e7$$Vafwv%@eX-nU881c;s<;Jeuc;R#tA=*>8=enYP_eh~e-77^M^(T?SpizL} z=`}1072IK<-4{rtI4a!+rtX#>{jO6)a%mL3@ZEN8dG8KnENWRoFN8HtS_{xZS*&mi z=pCk2i0`pw%aZia`^tBNQYAVTjFzqI`PQ1VOqmg z=}?(2aZv-V)JT{l(Lt$f(@=vZsz&7^0s9UENlddh` z7}`MDJPAEWZ8+P@p;eloaw@5`XwnrDB}tDPlPFlD<&2pMY9c`pGDn0`Nzzp>+8vswK9ZTo5z#cKNCGKUr%nWILY7#J87zmWBSPd}oaL+heA0J)@Gs72&I+}ecMp*OLY?XDpT z>{_>;tb~0RFGk(T=9~RD9xKIQBc0EZA>&JXDyW=FMhkd5rRywEtH=%;oJVybed2IQ z6-Bc^Uu9e0$vFh7QIozh2y;U80_k}Q!o&B5?WlGT;FCVJZ}idfm_{OWTF?^tsy0gR zwyOYrFjyH9AZ+gW1AAJ8W-E#rVGp5+tyP)aDQgqz=G}KV`j-`eq$y+w<)Z)SUVua9 zF15NP1N0t3LC=ZafpqF|=i4OQ*=ormA5X(lPMPOTU3~TT&{99GQJgB7YsRW`xEFTI zw;mh+=GgiblH52|QyPqzN*L8S-u#p`4X~W!v2wW8 zFB3ow8ucCK!@)L_Ua!@d1YwjK zM}XPCIS{N}ZoJq~LkW)=W5&CNFrATf0cuZ24PspOnexA&yzuSGS`&9$89XR*W?|(&~=zZc{ zaWGe{gKIAbOYvo5b@Lp4j_JU%s{7Z7{T5~-R@r^?S7qwTETr;uzDTmC9J*^)78!bJ zq(+Sr5Sl6)KiB;Y4ERQD_*nz@cyV@F#5)o|OOkVSL@G<`=;2arR_KtldVr0o3R5~l zHPE!+0Ml-6^f{tL9P8P%BBA1fb&$YWwU2IYs^&A@g~-6L|u%#QBRul(vfIpDdMfm zW_L{t0HUEutym}?jCLgCic;Y#^bIthMr+1U8hk^8{g6t&XRk^7UDUV=5hDZ0Sdk6} z)q^O;iee0e!c9^sII2XQfR~dE+aN-7Y`Y#};Ujllq~3pH-ob`u2y{oM!0MP}^z$sU zH7^s&g^`fa`4GWI$4fXnEIVUpIB-+~NlWYbf4kE z1;wjLSJQ9=txngEG>OJ`7#j;%bGlDOgu{3*wt;48pQ@5(v=aZI2AuZE|Hs(7y-3z( zXMV9y5t&(suUg$%8DG?w)g^08o3SNEHwI5*A$2!KGPpHrAz2z@Gf|n5hpxR?EUCpRPUDGY#SkdD! zM7t=#l58AyfGnn{ZgZs9DY4YV2eIgF)gJ7S_tpc=aVhYsGSI)@{HjWwSEblcxpsej z{G}{XxsC)q;|6nF5envbX@ByhbOf3`XDfAES&qslOco}GdbW|Kk1^BWYl$Q3-Iog9 z)pTct@0y?-xO3RTQr$RVgd_peQP2Z0J##j(X4i{zdf*N~TR@kqrIQO-<5GkuI`sX=01_G^$f z&Gc3W?Nhg|UyzekBWWq-(aF`TBVudMWSs`o6M~dRbO$;z$u;NIGYDj7c7I4euak)=f{b?r#TIB^puhIH|GqET0CS^m6)S? z+w)=DC3L2#%mj#<6u3#Jfwq|DLNkvdEgyn#vaz zH&v;Pu*G?mR{JvfPT{{e6)GOCAJyvvA|37n|Gryct5z;sDvuLhK_Su+1?cytY6sLB ze_wcLcTKjNcYs&CKVz1@gS^in+()9;F=hAlv1u>A1CVr+bU8Z{^R5o52YUje zA5~o&M!b6F#gq2xQh*PnYf-kCjj#5nlq{}9GGgy%ZqF9lW;8g$#?#S(vEHvlq-9SyDN)0tb-KlaUd&H&f53b4ThHK$Fl`nYQW$+S_Q9c9f>2F zg_cw;t{8cledQ^4?{vZ5gBbVyZ*5G&GultQN)2qA5dXeXZN$cOOb0gSKPQvKD%i~g90Hd zUw^y~yzz);y6yH}9Idi&95CbxazN}Md${Zwofk4BB`}0;&0exND%hJjYZ(9bI1*`col=-1o-v%#o$eTloff<_vhI zSPx5tUh3-V6d*udY`1c0&PpcW4r4w@w{o)sJr91ap1^nX8kI180Z{Yx3dekZyTuXe ztL4YZWXt1mocFg)(Jr#aJQCdHyL8Os#C$3l`Ha{oVv2jY#);}-_fzbF9CCwR9km=l^-Xh1tkVJg+~KLUcBCd>ZkcM2aU1Uk3GY%v7efn(FF9;;(-HEj3Ap2+Gj zjJ={UatiQ%Udt{XsD|-l<#^!O4uCiFJi|wr7W-E=W2Sm^CW>D6pJ$D!dDZ+Z{hekm~-e zxKw$#7wRA61^j}=7|J(`z2L6ZIRNIB^(^b2Y%7Ad#y@n#!z&=$$#H^mtaJgVP_AJW zkG#BveT1E+VbkfEEHk|tMuxK=YA?FipOlsHsvkmE(Y%o{eF=N6jCh#RLo^d5UgWbP zvSKu!uy+wpiex)OaN9P&6BO>R&1VjE1HRI5=3pWe;`SvO$w43Of;ic@F^%~xJ+lCo^+*ThRUD!g_<)&Yk1rqbXlRkh|*c;KA7_d?T`^ zK8>%1;iQ}u+QDRbXi#U7a1plo2fBsUp8X(>FU{Zm7PxTl@Q#cN%njrT2p*|*wg`~2 z8+j5>#E)@;Ih7f|v6-O*tbTJ^l_D6?R*-u093hoSM$aA}8HzcZr>fgCJTw_anw5-P zs*@(O&A$&Nq#~(^Ysbs-c`T3NxV1SL%+-doPPC8FnsF~0DSd3qfy4w)T*#)VV*3It zN|NEw^Hb(TMZs1xF4aBv*>FxMt!jUl0qT@dw01vp@*Q~W(zxPxjhLSy=Cx-pVDrhF z{gFJYohF!m>f~Xz=1kexf-1dP)9+6HZ{=;o=@?0~!)}U+1`t?K#b-p;f-lp2cHNpf zC2}>Jb@LnZ2X-qKYcu(cIXbu$Rbu<_EK%6ZBm9FYx_t6UAAL>4)h%s?FgoYK`vBKq zZ=0S{EptDr>eP|6*i2&w0YvWmGsykAtGxVJIQt`5u2if(wwBQ>Jb3l>=4)VsXYxUW zfJIR+2GYmb#8x2%%wfOeQI7B0eyiFMtdVi)sz2itDk0-blZ7_im8G2ojKs8k+D`O+ zj~j~{0qMnwGZ?I9_zZcOPtSgSrc>s$#;lU}Rfxetjhl-waq*(32`D?&|rw%Z}_-23>%;p*-Q zPn(sIQYaQ~1LIJ5+`{Qf`YJ9%s>vHf$%P_Wjt?vI1n=$e;jPLLIlGnCs#`xlme!hd zKvM^0YzDDkD}S5CK$N#|sTj>ZM@$t0+3n z!O;hqI4URF3+qA+eI_R6G4LppVXWE^JT-}s#|(HxF_iSdH*-z-75+iexKf-$*gZ$bayXq4GGgnv20kD*@j7y6%$_RvrANqgExkI@43b|v!Y*~AbA5Qbe;?J#e z{g{&sgYX|=wBcLJw{R0qN=p$?58QSAyQ<^`?VD9?Y16Q!``4<@q$|3*Wjj}U7rHb; z0)lw9S*^T$PaihGA_3^eSh7%X)iyf;NwXFpC6hfAKVi&@DxJ`547H801Qh#;8XQ>| zLZ@=4cQ$H)Ow~naaF;+X-8*23!R^wnPfqS{vnODr%F%>g1E6MTGI$_YJ{YA0m?C_PAKEnXc90IDPN-AI zsEa534O>ghK6A}uD>8l)iwrTC>5<5eSzs~=fhC)75D@lm%<$``88 z! zr?djA0BV7JJi}8}JstQDF6%zjD>e@3_=_z2 z4j}XzSL5vk%ZK8!p@tK$rc+dCy&xJq;_FvS6Wiah_zPS#rq(5*_(;A=(u;a^<8>KA zUcVmrq6fViPP}?iVU{KVYHn?s!UQ%n=Pk?mks}nZQ`xW8vbm+Dc|F zit^f-j6eF?BrVg~JRp0_6%P#xZl6w-MfTJ1xCyr}$ zah~y6wg7{wm^o2cp%t_z3!?M})BZcn@6J89)-K*Fl$l*HV#7znCmQOUd|J_GYlPP* z2ebW*sDDp>EeYTsVJouU#8wRJ*bi`MrA;g+w@MIhOaFyDmee1y zz^YOzL(rlF3Ry*t@jW`t&2Z40+5~F;@`Q&exMV>9-*88*0{5sYZ8F_vq?ZRE#uGaP zPjs*Sk44+!6VI9JBTK5PEN z=C@getl^FXfL9FIK`@j-rAq!tZR$VbJ3gr6C7&aEtP3a7-clOMGN-364Rk*}PEmv6 z7}2KA2EhcT6v1*>k{qV=B{L&m8PmVt{I%xa0cRjRH09{_Q*$fNTy6Yp#<`W&*K|Mp zuUx;Gs|da24Eb*PU-$!j`FI4NOW!#27vIn&6Isjb}N9%<~7*<2yPY91Z7N9>TRS@{({J*ke_#d`daIwyXP)lpTh zz@Hjd+H%5baZRbHaqvMiUpl1IIMx=YKgZvmweWV&&7+VHt6qCLi&H`?QnW!5SRzY9 zsZ+on1C>?kVUkiqQ2;8ckd>v<5(aZgswBg7cY@M$h61cN_F;-2U{EFD2>Ux>Rn<<&Qsx>_o2 z6BTI^*3lk;%hqZL@k}SDBn|fOD3g<=iC~NTeil^zuY>0ld?<$+Du~FW@3YCPq4>+} zK_0&NX!&F4-Cao2dB4HUZkymUF?S02&1Mx=?%?D}M&dB}c{^kjpe2q5shX~C_%L@A zruycbTDu`h^TegH?KV8N@`6xJS#p0M>E+dvXCY_M-Oc2Usd-M@!<~W59}PK-?ptP# zmZ9%1mba*%1LdggR8m_{_0QCf6~;=v5~JQu z(EgnPo4JD4Q8)D7<~S}8kqu=oh1ADadWc3a-B(mJT%`unh)Z}q7~(F zE@SR%ptrXaDS9$ldYnwg0R`iCEc~i6LVbRX1(-b8^lArfG17DLhRT&E+L=`vP>hgf zG8%zzA*m*!mog;Rk@%||srSq-r!8gg#K4TG^jUsDRxnlV5xDo;Wns=kW< zoMc~u!k^7jYA&B9vXUV`-p#FEk@+W#pM>J@nvh=oZ0jEnT#-lA>XAT5BxX zJX$}&5rp$`-kWcD)CH5YL2-pin_Z>Ag%zALZMTdpYp_2yT7lnVyOlA4-_{Zl`|egw zzmo*^r<%QPXd8^Fkag!wl>$pnvuVZSW4CvGRp~ibG$_MUk&Pp&8`yzyB^!VSWa`Sr zv@sa0Gbew(#o7;hg=lnd8JG$6T*4|I-jrNLlyZx=PS_9e2*s2$q~(+vuwpo^V}=f>;e9Vaw`OZL@kKUh8}izF?dRP>8ZFy-EdRfF$l#5K_{QGwBqOl z2`2w*^LLy7l%0+aTP^hCB=)h61Ymni*NnP3o@s0#RI3kQ4l z)gQ}l+o#wq;x#ax>aexGh`Fl|n= z(U~o}MN5fF3Nz?tp=$_+Za15bc;*OgR8FY&h+l@dr*yz)96RH{uLd+ARIuQgsMdcQs;F5TR8lw5ve;wGFiSy;qSWp*Soc&hwTYT z^1{ZX!ar zuzuC3^&1t>=t#<}-*}$eNG;M5sxXLZ0OXO4LTg6gP@*jWp#{oH%5u+6SaBc$(8GJ2 zvLgukgUl)`eU+%)x2Jng>x75-n#8OwHlWPmf0RI-KSDY2lBew`m)9zXS@>3g5Ca<- zC8D@6_wj+gDP*OJ6t2X{-K?@UIdtJ0|a$;+y4I9EW{(*`~76yT664L0_YfUf?lEN5C%8^7Px4lr?v z#2HLO?96SNOFI@(fr49BD@k+(8V9VDz#TAf-{^1?_aT!5cpFeF9E;GDV~Id(n9#(2 z6y4cS%p4E~Wz(pjvIii|>;?E)SMtm77s1lpAf^~)TvgZg?RGL#m6as04bprui-yKc z_3)=Ksh2Oo0>_h0dLlva@xb6$S7b$qw7z5QkS*iPD$N8D=NWxYt>Sr@vLj!JpG$*& zIuq{JYugv1K%AS8w`iS9jzu~jtX1mM86sX}l%D20)92{2r9di=w+Ow`L z^_Y#-<(nm_s)Yb@`Y7WjJYA79d)0sJv>Tlxd(cTtFic90(L=uu@^sLW(pCbW2aawj zq3V)Zc3iOqqc6v_suWkkY}v#hD;uqx^H^i@jIc|L{&QR0zsEshO~wV7!)6_LlLLsbxf`0Q1V~ zCS5#N_7#Cp??}Af?|29cu%HEAlgo{@SAGuY)Nle+z=FHTM5YZjC2YzA>=@$?%a$M_ zM&yHAYKe(z>z*^2>w=qP?cU?(n6>w>@i9IbVt?HT8yPBUue*uWIDPmOdaTiySzt*t zWnW*JPmdu}WXEASorK1OIpFLgTZq)o@Dn6PQVT|4HW0&PArUn001hVbrCxe7Ly;9*!mi4_$M1 z6<1ZW-2JRK-yo0G(Z@vihQ+U02c=$dX42<~pl?{rjp&Wi&85|#v=tVSB7}0HWURPC z+32O@JQo6Rcfl1@oC52U{|<-HuMz5WIhu;Y1032*SNz?{@A);fyMXxmp{#*XWO9j! zE&~coVMS{hr^vqjEF>hPm_4@&u}4wn5qW8KsB*pPH%x_GXA;H}f*?K0EfPM_jITU!B(uu(}0QwH7=PsBe*#yn=kwQg= zP>2nh#|+vPYgfP3?-=^ykyUoB?9zR>ou^H?RP?{*`=UrzP#*nw#Kzk6l*s5iGVqj$ zQ#5!Ah7{+mb1t7}^rl+pMRM~Eeh@Kzc6=vBcRIczVFRA&o_=a$Z_5!t)dP0VWCVVd zO4({Y)HM%NrW01z&R^0p74C(7c=V|MXn!H%Uxq%m%FpV$0MiQbv5z8>jkQ^ly^ayc zx+>sZgA(^kRj8{eW;XVIfD0zgsvH$FkMh|LMGJ-^GKwk=22EH5)oqs2_>%Su4V9a_ zac6?=D&WPbCZb(2lHA8yOgwv}HmRz=@6F-lKPL<1H;fq5kVFgBPvP-;(C8-JfkZj0?`RXT@q%kE493!N`YW$8n;mxP z^r^aJDhS@HVF|7EC)RuW;iO{aKw9DJ=`cxTr z`>Hm(hYFQd*}d9{GC3P;XLPKnbirjuB;@?TqFq&ev6o!$gTNbCb5p~Sg5&NkubDx4 z+uxwlo!*5{&6#3(DG7So{DF69a}F$~_;bx4(1ZZzMcH20 zO}F>zfyq25H#l}Hpn}z`GR;(0r{zkjDn+iGgix&z39m}Qz>6k0M70ovE+hHh>2+@U z&@ixY|BBwvhcYVZNWxpK6_?4{+Gv9(-*x=d<6y7Pl^tlqSCVxVf&2;jFm;snR^|?{O zjPhhEW}J?bb7nE6XGZo&VI|YZN@=xxxw+w)?nkW^#8kKv9LPm|SYC)oY z)D2qM?VHtXK1IsMv1U`TNIOd*3%u@PeKv9%^zT;C0}hmMmr-BwuJ+|SR&7r+-0@pL zO7pNxGn#QCC$v~)#yyovNMsnfGWKx7hDQ4bWky=jds~4St*_q1arAe0RhMwi z?EPXh3G(cqA1kkG+>bTEYtDVc8s$O{{uDeVp!LfjxlmiezLk_l;$7x(xn zS8-AU2X9v@>QjzVw^eGa*pQXAF~z1mlNs=5FfVz27K2yu6?&h_&}Z{-Sea$7_0i|( z(D@SUJH7#t1(UQz;DGZ4jKJam;s~7y!kZS!X|uC6NZeIvU$7$9DB5R5G&kQ|43_<= zB1Oi2?a)n?Zj`kRgm-;o=tLkr`<9%(lc(Mo;wBU5Io&3j>{~j?~R*lB+o6#n# z!u4gn`6}iXLV*&m!5B_*Skw1GbDFp}3&dVj5$Jk-sO{EKMPbhwCAd%52$#gunPe>!Qy8o>9JG+Wb-g<$v*gAIG z-SnDWPE7*_ojg03w$FZby|*fH#31div8xF-;liV&IQ^t8jZ{g? zmP6!3jq8<1Vdjp6kL>p6!xQ`F$;txLsh$g6stc@>-aA&N?Ug}}o=M$uHvyKnpGyU6 zo)Zm&NvQua?XpdIb9yy;Jf7h$$VbWJBFE~&JRh#rk96=GW{k7WIrl@U%g|kP>R>Gn zr4#8T+89_L9excAhm8U8rg!$wZfo~a<|tHV1QB^jx5oK;7nK+e)}216hGV5R+|ZC# zBLJU0c7%@b7Km^NhjQ3cXmiRBUbf@1`9b`3Bl*;ZLmh? zD4ekOn*jJvwmbInD5<%tdb``!@sz_u1n;A$cX6q7_g|DQYLk102T#2^i*8ExcbFQL z0OB%|EzMF;UZbif;!Y?ius%D3fgT_x*YZ}<7dJImffmw7=>rRqyj~-!I zRKEh9mc{3=Cr3rkK8WQ5{~>dS1a`&DIA!6iGiIF=CEV7dsSbapYLWU}r^{DT?fj$0pU4M5yfBm5odFXLF(hqxTh(d@t+k zCXoF+cPkL@%cN_q8k#>=_w4W^Vv$57O-ht0q@E3~RpL|Y@OqnV!)jO`hV|9`orX|hWCDxNu8!T!M$%0MZ@Rwg>UUfxvpX+9?$En?(TS{xZeKf~)rtQ=Ja z$uL_HGe+;Cc9MECOi#(j3F1!8`wH1C>~?rBp-A_9lb4NCsR&0<5vzA)C}v|ZftmpD zeP}J>x$-+Q`> z&Jm-fMLcCJ@82&^Yt7TxjazHkT&pfB(E+lY`k}dzQ!c1g?edHLp#=`U`3os<@T~o? zB*5^jqd+PDrqA}L-}>g?{MN6Q?;9n1)|E&kh^EL+KVJ-C@x5=0odlzto&i}6j9!|; z#rhm6!izf+-poFIO?qDH;kD>rG+Zs^78$~&iyo(5d8#c79%T1g7{jUA#b%%``U_;A zk%oV*)gU|0{=EVIAiAX3?DAIBODF3n`!{LRXDr5c;9r_`RpRuBgtjPX;R%EWh;nIkMVCpb5zom+T3Bu zM_z6E>IC+dt7uzEoR6pzS-o&t&pg_hxhrJzp+|?tfG}bvbtF(yM;c8~NH7NS{Tzcy zUcK>ryI=b{Pu?oX!`}*Lb3GX^@8qALC)>=tB9XjiNDh;{Fw-GBf6IE0T#65x^FH|acOPhK^33^in9M0}*1Zz~;5u~ap&6p!)`k=1y291Ic zU}=sYWrB5T|;7~V8ksb~UqQM)+!?jDjgZP?T^`LyNHmMk}4H->zI z6WRVs`yrB8sUq|!XirXpcRsppM@My_jL-5utTUkel4@Iy7Vc!hz}4(e>o&Qe}nU!TAlRyqa#W*XUN)$zVgVPnR!77NAlN zaB7J5T;XvYaZ2~E0sp{zqfJ`=7215QD)BJN)tPnOsB<7TqcdH3gn6}(hzHgKUYJJC zJXN#KY0zIR`ZGjn*`KM#Gc-cNUv#)%Ea@DmYF3DZuy#85V@=fXq|_TRSDFmh3o7Y@ zgpwmAS4d%X>{Gc}4R?Zx8zg9K|-o+!OM!asJSa(iYOSmJ#v&=W>2Af?x0zB@tlN9?^ zRrO6=WGq{pk#YF6c;%ybO{c!q`;VPF;=m2tY9hI+@kOb1-4W@08G~lCc)Vs6YcV~K z20lJY%7F-<6xL+$n1}OIk>+AYV+)JYN1i|8hr}=|69A-eR*(L0I~rVE5s)RSuvHb) z^ZK*t{i+%Q!?+;mUj3%6+DxZ4>o`oC8@MIl@~Tn0#&~l_Gn#U8Oic-8-rKV)DT3!L zky#gkYz)XrGZ#W~b%16vm(w@cG;9?Cs>M0otgkOmTv4a8LZR30Ug4D?v1qeeTzVQG zA6qQ4DJakp4z(F2ijwfT`IGGez(K~le{2#}>s?i1XPT?*97kcHT0ruH?WX;4zU-Xf zS)nFMHCB%mhiSjPtiq{%vwF>$Zb!#_%BqmFX_9uPuvJ(jH#5yucC~z;&jVXUfCu*( zpN-hCJ}?g&5|4P#_)MLd0_IX5dTw!}MV0KTPQwg2+~hW^V|n3bVrGg1!nBh6T;7^{ zRPp4s(HNI;+b?m~Iy27@k?Atzuvx zzucH)c-uE*>A0eIENC6pVET|jOD3)9ugmj{ZD~ICfsNOGiZQ`edZ{(duNC>4QuyF> zC8K(pzJ{?0-V%&O3hTVdE2#EWnOLmH9{d(hcRb;Ph3|vL<|2c|B)Q)JwLq3_pIJ0M zVhWn#9Y%~t=Pqv;SP$tGuQ%yg3A12ffwlva^7#NRK3vniT`tcfeR;;1p0UO;*Is|2 zSC=MOemv#nY;vN)j~`~k;A_*5Q%nYi0Z?&XF$%*c@_YbYY^k!NZMCh)$ZU5kWz4o5 zt1+Q)SZ(2THns!AuCzqz!r7sDF|)<2A-t(qv6VZ3EphJg>+{)NnbSf_Urx4Dcb7eG z{QK?TEiQ-xXBA}nHZ0ySQopMiP1m&(Xt6bT=^^ma4A7*Wewih>7Z2!=1QSqO1{L#y zs(QI9R%8Qk)v<}0;J|kp+ zGFgaeS8he!a>qtFjo)>*`4Bv;XBmw;{N6A^+WXvB?$|{YpmjK6b>Rj>%}oIU$0d} z;ASOA>me;?3VG(BOLk*&^RaW{2%W85Ewe|*b&Xt*lG<%^+mTIFtgr9Wo#NCMARz!~cYnQF z-uyId4^#)sH1hjc*`8-eziI>7X0xx)ad`^l@XEjNIj0Kh?gRRJ1QpNby9cgD7Z*MSi7CQ3u`b%Njy99ha&@o{@`BrM_x$Th9(Y3!MpRs(w) zG?pDFN0`+tK4y4d{S33yaMc)(Htgci;<$%^7a#fTv4JX|AL=nyD(q2rGE&0pEXfB zX=)F8(*3}GZSH6YG($!V_dA|k;0omg%2s*apOB0dWwU!q$kd5Qzn$$H4QjMCSCwwU zCJXd3a!myfmQ^_h03Y^|8hXfLKPprXi4-fR7~i>DH28&R$+oFs>FL$|b+{h|*5kX; zfbTAr)!ZLGyjxvH6;BAdBK4;$F@6k~WL{Z_7j7rE3&qmQt&P|#mP>WBq(YcOS%a97{JSuRvbVb>T!x&7Z0+V# zjPcXubs=48d^%4A#-veOev{u;8=oq+)D5=frEs`ge#Xod2tBgr*(q!9m-kmAEtYLA zYnuR4_{_>`=l~nH?^V~;eIe!*-+{k@5s@9t?+h7ov3ds#4`c|Z2x+oBeNTsha9iUr z16A=737hwZyN|0=6E{eqJ3mdeQK$N?3#S(RUAu9=ne!N1*9>7JByh1lZHOwMaaJ-b zP*l)Wl&oiO0UH}r=sVWDA``z$d8j{WezwfLY%ZaB&Ak^+k$53JL{=t4aj4wi+CtEK z7}vSk_?*n;=9&e;Z&%efN4%;@8U(f=V$XjyB9qpaP&%lI0i`oFfA(S)LX8&org2GL zMyJ?|RO(^a*MVEq1Gk`LvEARRKUMsOV2hOo?4aZof4HiEWbm2X-xe}TxRYUom$IRC zn;iwO#%rXiC+##J3ET8zg*&NWy{vfweJNzKyM#KM4uExnd0=cMJ$_#ntjkMnTN36V zys1CVD8MP;r$jZ@fHEv*z%`}s73G(Eiu#4rTB}f7eiEB;P~Y(7ME+`rv;B;W@H>)MC=SBX+753-z8+%KG_>?+vL{W#nTxh0EIWB za#w+m!`ZX!e3cym)SZs;JK^A2oZ`rZ+Q=q@s6feNB&ulwhsUvP%0qaI+)NbxkKh&* zg{*X0u1@cOmOcQchqxvIgc6rc1`bQ!N|0)T9>mcr`3bcdGGFz6(T&v4KEwgUv4d!k z(HVB5{d_qN0!PIPr9WI6^i!65qf$I_@Nbk1Qq-be3R?7JL{)4QM;bd|LfnF!EypZ< zm7S5D4;K%^V246#v3qHUXmAaoXQSi~R!A^BwuOL5S`D`)b8F-@nMTq#Ln&Omo5mOy zO-ZK3C4+?*-hmbh??z@6TOGe^ZWRSFbj)=lTw=RznvH!%w)hB`*-!vRV3}tImZ@Nv z_H64v(64S!xMI=1<#orc58Kaq)lf;PC4+1>v}f0Pe-Ah2P1QiTF_?CyQ1%x{&>nu1_!z{h%-a`#?Cj!r~T@-Jz4K->y=dL9PT;cWm7>D0NwbMRC-f$hVFD7n*6xVZu~q;6fJ09 zHMFa%Wes~L$@d_E4?8W8;`qeIZ>VDJFpgRE_sUVwP)*9iof{ z$$^lX+SFumSwKBZORP~2MLa2v3i&g0ZszuK($H%XuN$;f9tk(-Nj!;fN43Rl4XEc~ z4$k0Xqa3S63%;O2y=R5y6jdxdk5F^@B7#z4T47tPIMvrQ!!Z$iWzSu$W;rrX$e9XH z^NcCmxQb5$pPvshi9R7&J|8&=6;l$FD3wnd)=|~?rk3$E!ajq0PKf6aNBBr4ldRd( z=3i_6%|-WGOaTl;nbq-7m3(C@@x%h}(UuvdK`9}4Vu*$IqM~YAYN*vZOBmkxz@3x8 ztjvw-R*~8($eHiTWN-2F`gFr~;H3yLWJ-3X%#{Ml*OYFj7M{caDGhWvK|hovLYK3+&J2N$Qsyz9*VRNV4k1y3?>`eVOSw!ZTQANIsAWWX zYT3=GKU=s0^}0bNpbS|=5}2_LgOQ{KzUpZ}$Om|dr*x1mrD;+1Znx^=Z<7c$_HNA7 z!rbt@*VwLwZgUt@xg4Po63NTqpbWUwtjd8Wl|LGs4rPDW%M_k?pcseu0;%MwqqM!q~Oj z_0ygEzkIBG-EGOq3+uo(XAi1&)W7RtY)gecmvIjkkT(blD?Bg%Ne@9u9s z!p>duSIS#)FBuo=H}(z!OTY)rc0%=nLtwpkFLFfjJWhUrIqOwhC4Leahz7N>)_09kaVm5B?X6PPR$nEq0zqY+2PMAoXMOb)KefqA zR|gbkBPinKHE{kNc2{nnvpl*8qfVMgKykLW%bWN2x0pbom!8?meMnpz1(8RhlP={K z&I~FG!P|h&4s#(&5y+S}Rwoyu52z$ux2mKB5$&?h3e+OCifFzV-DO04wZXOG#V{_) z(SJ@s!l+J}KoK?LQvyztu6sT)I436rB>i(B#$#1OtiWqr^l5rL^3K}NNt0{Q?!|K zT;}l%HCv|Upq@#l`xwd43Kmaa<6$xNIrBU?RW3aJR|sMMxoD4wVU7F(?$L3gErmiC zbc)ODYE<)APE{^D+KD9u3YkU?FvX^eh!f%^7m#x-Oj31>`&qq{x}3M9LY`q|l_{vW zFA^FKQw?z+4iFdsK94cKfM`QF0Ka+8$!obnLo&v*m1EoO%Mbb-G>Oh z!D7w4lv+K?{4Fz;@PZ7Z{{^jP4I~#D-ErWYp4U5f?!rf1uhFC(?cIrVTN@^?9?Ln9%lYalm9Ub zz_g%>;TR#FT$Q%sF=m`9*Xiqvo&e0Xwyia_7P)xrVY6K9REEt@!fkuC z3K2Gow;;o;_VX)jkzkj5n5bGNqN$^PO&!;z3BzGafgR$M3PnBhCNE{{ho^j~x(c=V zQ%6c+OHKh`ArPS7o%|1Y7<`7K41ym0sc=+~d?C!ax`Ed1$SH-u4W}YJS%Tgy7Za9K zv>x27G>G5z3gQ64K_pfG`Ef_VgY8=NpsQVNCA=S-v^FBNO8$qG z`IHgx=Zhz%=SN3U_dZUbUEz23?KtE3m8B^rUz0)P39((GOglWk? za74^~#GWeomr4Yd$qEZ3(XV`qZb`BAieb{&p9>S?%L9lmmCS+hd`yQ>Tq2|;<2K%0 z-n%;eDEL#Vv)=6owyb{Su2Q&ffCg0sU7iz&y4KY5*y82u>LY%TEsx$Qc9bJ~s=9H7HZNpk`Q0H_ajCBqKOw~)itnU0k2-lDD z@ZdC~LR{DZv9{-0Ywm&c(5grbAd z!vGvqQT#h&KenDS7t81E6`B}1@`0Y0%TV;S@~R$eiaEjhA8~}ksrBMX`6S!Qq=Q_U znWwjo+*3o;Li)?o7`afiB9WinFTo(n${Y9Z1C}~+GLiz}Wue4X|6y5`aLXN*cdHls zJYgRM>*gk?AKMe!RCyM9y1mO9ROg6lDBgxeH}@c=*+ZaxLGPdStv9T+Rhw-{ye(5Oa215I zuG#}Ik^B%F6+NYB$YHKr0RNXK@9AC)|5TZvavSsETCLux#qz9&$twd9aYD%E5A;S# zgQfQr2LhcAQNbjsX_th$5wV@}+tjC+TC{zAzp3%^VMHNstJ$1`P*#rA+GXNlb_X{F z-Z4=fM`y*}txaNJSzV3YVL8+THR8iD%pXh*oQTZjPneOzvl1i;(?(W?shDBMwBu6V zw$Yc>*C`KS;pD1!!92$K26SwP!?-NhsKTNo?-b38w<@S=N5b-~wKkh1QcmoRiwu04 z$xF>EJ~D~3*ky8^jf2G*Eq+03le`(aNfwxS2)NG6(p)>D4GY8f30l?r#B&S8=kJK)eae3tQ8w*mFj~D)ce4o4^br zT3M<>^W?e3(YcjA9l3_f>bNa&<--=zzh| ziz%Hl(zxH>M-J6R>`)Iw#=%uFFGABOkBlIs9e=aah(`jRFT9kpoaHs?0_F7-yIA7E zK#}&t=|iB!@P;ECI14VNvcM&v*&$Y>DuK#1#4ePb3D9DWKpHMT&@+h1UWaN^F~w|c z<1)w6vyesVAAo_3O9FzrYL)J)AV0XwtAhoUF}kL*6G6^c?u>7gVU2Ri#*V6y>A0x= zBy80-j-xzJg^mvA*mr!M4(Dd6YAK^K8}SV;bmUoa0MKoLO=N{^c8l(Qbu|{#BfysG zo0Pe+m$f8mtIu2AWI3db4?9JA92Qiyuf3wr5C1_RAEE2&y(tA2bMT`W0w{%x#^U}y+R0H#HCv)G=%1mfJaK-Js{#*SF!{V+1+oTw zL_L_Ym+}f4!=`8E7sP>g6&A4RK_`_ucQmaFV3ZP56dAK_=fJBRV6p;ji$0YFs9D^I z2S;QUC7l)<8Ic)$G*lL&x05W~e)^8gl3l*nN54%H1$G}w(k^CZBU_PUsyWs?M)Q15 zH>ZEw;u;EOk$*pBu?tC z={UDgmEk~eV?sTN?XwWfit zcef;c5$~oZ7;j2ID@i<*>_WC6?~4$Vc^W35!aMb(SsD1UXvG^eP#qeOIT}s)j)gNl zd{k?1%y)0jRSSh=?C?NpE5>FLW`E2=p-uY$jrC1c!uxlZq4HQh5zh&R8A_`iX|b%( zpAv4!*6(OFfpfLR3)TlOm`c-_W2=vjEehJP>1lo8edX8|-&Ws`F(@jOdy2y)`OR<% zP}A;GNpzxOD!|hND;}><&8N33{W?INWucwd-{UEwiyB$*E{iP}q~Akhp(hkSq9fQT zuh3ZeS`>%R%6y zGyH%Qo_J|yx4Or(w4ab8G)u`r{yWe-rdBPcp2$x|Owi#hd7pIsVlKIg5t~7J(xcsM zA(2G{9M54{9kHXM$$#B|)OgcSRhENPL{7JDaQ9!HHT@gf`&eZTJHx6F@aOZr%ahr# zzePrsj4*QaBcUo5c9;Yf#!dK&zA|O?V(#YfevJ3l<8@Fkm!axQZ?#}+Dt~L46eetQ z1V#<{es*GYQ=2C$9DFHrxN=puho@jSQ&zY;ypjqimiD7+mC_U;@|s!I@}gO6tap5B zP1Dt~`@SYdB)S2tUKXPO3G(slXvJ~yK2%dpgaok&<+5)M?k#m}0#$e`&!HPj5@(tK zF6zU^b}E+3E_C30y&V-p?JIV&|27V}u%&b^4bw3Bn<&_hQ5jAw2$*T zJQbX%#wpbs%Pr{R5n=##z%dt2tW@Z}^=c9}p~p{B=-e&>`?);7Z1y?OS>GoMBc`8l z8cgF)@XOc>2V*KdVy}iN#;)HHNPfgP$vlmV)txW5+pt_lMWf{kQ>PzGc*ij6I@E|o z^cb3x+bUD!S~}x`D{!iCLsCZt7@P_)*xdk1ir;~sD@*8FF())$Kq%{3|7^ei)nEA5 zujWFS{qh!8h`nBZY8`;OQKj;MlWowSneRrThXAf=mChcYMX=_$tHFW{qQyVMX=tgT zsiJX(djX%zF*4Ew@rR9^9bH5iVZ@`xf;lKFJH<0l-gGtj)`Fu_mUt*PC63oG&rsxd z4>lh3sCPW;oO4=jEJv5Kq`9mSK2}7lG+vwZ1=|z(ZlR0`=$u3p9iyW;iEEyk%p9i&XUyIedfwF?ys9B z8D>nGRO70j>+y6ZEl&t`t%kk8yBQLz-MRXn`pR`o*>NZv`mauYe)8W={zdbLS`#n} zWl<`AC$ajFI7YiA>;P(1(+_?Gnt%MMSEAg<21*5L9%~!B#j{a0>__jBqqw~K#bbLh z!CS$?n6KGxy^prnKC+jy;4Hk#?DQ{9v5nC3vFb#=`e_?Mbl zvW$)84ksYBZH(LakNEz!SixrU`T_gRaRs^j- z9(tkP<(6KcA$;HT&AY3Du&tPalb1cw~j#5q1 z+$tlDDuc|UbWg$uZa50pk5-DKMhdXT+OKc@6dO?-+q&UIj(#?~YzrtfPMo`Q;50=a zO#j0_%I16b7F18TwspteoJ5fXLqAmcQEP6tXEdu2J#~5b^rwd4Yd|S?&SG%Wk94-UG*1>*__{$*hd@fQDFx(uA2f zIDvk6_3M|jutYZMm))AJR=>FnTEn0GjV;|0;ec!fs~9f@CrAmWNiuy)np% z^;@M!=q|S2JrC|MF*C$g_($OD-S}x~%+p%1R!{Et?8!Y%Vf5sF`d-XAo0Ys1+IQsyj2e}2YeU4}Uf!j+ z1?H<)JsnjIeU15ESyQe-840aBCE!%8m7J3Ywttil1M;H^Rx$OX&K_6h=(!st>7$J4 zLleiY0J!8g0KfW7Fy_j`0CZj{UqlGF2Ea^pTA1V*QD8j2ZFLuoCd|m5kMd3_FtLfu zz{EUsDppwSy4a76j`l%KcXzvBzK4^aU%=?AxOb2Zs%BN+S`*ji;cB|%qH|~-!2KLKDRK(bEzDBbtJ6Vr zIC4$O0X`}Ma%iaAUD&R&W{;bb!VHgF-1hCVB2ki01ll~D{2S`;*n9~bNkk*5PJ_)m zCGn6XgC}jQnp*t?vOTdxOXrL%smSySgi5}K!-7We;p!;qg4@!^)}5WvwYE^6kSZDu zOU;1Ng0g)f6&0Lu5paWRR1HykRSqb(F(Mq^Ig-tfjVpO{I?keLU{(B45>AvL0|=v9 zs_0iH+i6#@%aiLTRDL2hGmUKvEO@6fn;06jev(qC&Kr%#@%TcU=p-TSa&qhjz=L4j z)KWx_>7p@mQH$=^RY4mG)-oqVY*A>W0tUhv-pA$eF1d@o-Y_qRd#x)>=KIvm*x?Kj zXm1$6N}dm$6V*?iiBZmNnl)jH2@Aqmu=Y#35e9k0LhKA_q*fSwA3`nD?QXPpTBROu zkniK+L`TIz8?o#>bpy-X{;J~ICGk#HDcSv_+?o?anh_eW?K^+msB%ztn4e__VNuwo)> zi?3IY{k&JTjTDDwM-kydlK!id`Tb+|Q_Kf{GsZwsbbP$7>8Nj+H;t*vOpYWwKwpv6 zoYRXNOsh*4q!^Rk=Xf|z)hukS0*F^vQdWE!6l;$k-3M3$ZAoSpljw>fNw=b+NP_Cg z8p3}tNmbPCIe>Y};yDMnUf-Vte^e^^P}m3VEEZLeO-(4{H9rpU_y~+;1wB~_I5c+= z-f*&6*Os1cnC_6xBc7)St;wK;k_#(yRGgP0tv;2rGLy0S+fw7^gg`;iEdiJ!yb0|; zjHQ{%4O*>FVY4F?@^J{Q?ln`u7P(SAUr)ccfw(Vmc2{w1^em`Cs~o9eq*Y>U6d@IP zOxD!ZJl^7>{S=qF9sP#tX(maW5Bi=EPU{abF}v zb4s_8vhJkGndm#V+_MrPb^nt3{g>}tV zdK-s_TW%CK1r??>oqT1~`QdKKI$B1;zQgE;N)WRTzp1ch}S0?oc3->z>mNxIvWD(F0I(sB{?HMtmP%3 zQR!*FX1o)}RA zHxiviJGKZP_+AD-CXh>OmmBtExT_ro)C{>C-Bi>Bo>}l*Kpi|Ybl6gyvv5zUr(NBB zs6UjvCm$eR3?8WFT~hP6E;Jn~MDm8c79NQ3_y^!LwJzI7txB?+M+v6G?QLMn!~KU~ z>G_7O$VjTkslUAY5Y$D#gmMXW0?pmA z(5)I{(S095>kU;7-;44ShDA+a*6(!jj0%lv3^N^pl1=S8P|ZK;_r=n5zIaSZ8@0d< zoz0dh2*=QX&#USUx&`7@831MdA7?2t7@T>r7wbvegW=_O8%(6~lc$XI`BW(8@{wIg z(3^V2;ohcrgMirtn)2jX$q|Fm+S{{4v6s`_jBjw%3UnGLNw)V$AO6UMpsW_^1WW=SW2o7H)o<;<@r ze5_xI1=L}{K|;SNY~C@`9L=`9Bs}2^-`T`0FmShYx(r&kO>SqLs!lY{i&oB*v!>Dm+(B_~R4C)SEx}tV2k&W7|m{}KmAXx=9|4p$8zpi;j&3y3g z-egdPW|Ti}>R7a8lZ8d~k&H@a!)UwB>w8wVAz+f8tr`;FK%QhfoXQih zaM*si&~r#kai1~BRd?*pG`rfBpVo?TavvRGzvC!InO#m!#)ms~tuQk6sH&mFp zRQpdXFQ_?aei<}=#S2W6f%<&PPt}=>)eH|n0>=2_jA9Cua6qzJz70?(eE<@v@YxY} z8y8sbxA|rs%8XcTg}C##HZ>*iaOWyaMwuN`a~U7IHtBcUUZ9|=3_%&n@Lt|~|CY%e zwW@u*8R=@W7GCwm=TZ*2*}&#PN_+$C-^f1h^LeXB{x1QTudYg2$W{}}em~=!IyEKk zQo;@?V-E*PtW_F(o_-@_vJYhN#KJL|cgEK2f&$gRX{ef=Ha$2)aW%;;T=*!ssMkOn z;u#!-b8}C%o!3Q;TaQBCz04fq;^h7vE1-ftmVHKMsDsfZ;g&U%n#N-A*Fsl+ioWhv zK}k9Ex4l}Nx*Ik5o){TCrQ~rhWL5Gg4GVTLgs$r;t7Bg=v0SI>c%RE<*U$I0S~k)- zS8$IUHfzc4?-=F;B=E(vc=Ei~Py3ViU z8u9{WTHBG?N!eu_#Cb&C0{R&IBlvkY&4P3`d6yQ`y_WJZSf}feqBu9nNU8~Z-1Cy2 zdvnL;kE#4$>0I1=mZq>jDc8`%ESc<8c7kxI#@Eaot;XsY5@8e{j0`a^MBl$F&BWBE zF;Jfg4`PqDo`aJB!OAp?8;jDIPUsiNsR+}`lg;F9#o)W6x=BLINWBZFj;Cr#WVEX0Z|n%ulzSk3pL)_h0)e}wQ3 zBDLb&zTpt5ox#kFwP;z>doC~xl}veH_bAlV;5{n~JKcwOJ5}RBs5F~gF1`i6F2x@@ z%*N_fk2i2i$(2xeL^(u(ARlAKXr7i^KebDq8lIoBD%LTCk9v#9s}1@B6UyO&ivwF)-;2G{ zpwFWTDS&wpY>$1&(I5C~csn%Omo>@8rAK12a)u<6S%IBR z>FFwYXH_J~U^tpauZ|+8<+f%|^tYw&0W4tr-E`!il7M;squE0?5;MCygiUmnG1kyG zfp3y3m8_+OBdxwJMZs3Me5Yy!P@P*099Xnl0i6<_%P52KZ<~N3B79wp9O@D55Not^ za{!>Ac zh}GFHv15U%eN&8(6_wMfkTh1O34NGyJ;UCvZW@!#-G>jEiL~!=!xU?W5*+movg+&( z4sn9Zzb^~gBXlIKS(MI)n3!60Gw2Dg@L{=@e7c;?s8em)Jn3$x71K?r~TN)V5 z=2qg}&1K9$inZ8eRJNsh?wkz{qk3{goWU=n3D@ykw^glyuS;@%QGrOz**j?b6s2-) z<2_~6*(ax5pP{=KHCZUFFaYWpmx>GIird-rS7l1vYSE3pqRst z6t3}O3IGEpoGmJl9`#uk6tY}*t{8@@30R$EeMGt2s(coJ8qABtB+7dv`&Ks8pYM!bnu>2*u zs~Ks}q%jEks9*Y~S&n?)3}a8XaT1d6w9uyzm2wjpa)nh`&1-4K9{iYN5GUs#7;+pVtT`t~7vS4!rC;$OrqG*%q=iGnM(nKEpWygo#TZpz<3xp@!3t2$s%E z5FJyjKv%td*&!a{_NeHXqY>fj7y*jTt$;Rg=x=7w9?RIfZ)nF38rFr@J8#{fRwyh>zv;5Qq* z4Q1ZRX+lOLIOFw7MGFt{h7=~-iV{{axbN> zBecX|O-7k~)GJv`Q&O9Zqdu*{z`dkfY`@Ni0;4X5e2b6h9iLI0X2f5{_Db+=Q%dJPhluO$&( z0ms#)$}XoX2~7J;StTww$vMX;QzjT1!@js@H@Da}iUNt)1`wA{K;yo#o8kiOAWpJe zE7C|4-Dh=DRT>e_(Quc>csO~%;riRne^N#*K{eN>;9!(!)*S3`pPiuV(Z0)$q6Ha* z;CQN?%Lz{QN=^J?e1|nmOKvk11rKPO%s5t8#!F%1O=GbH3AVN>kmkym?o5ubipe*d zy+UCvU?}RARt!ym)8M075tyD8k3U?>4e<-Uz!@uO~o#*pN}qbsc{<*u#>X%v%!{s*d6P;E2n z08}-!zU9^auGW&Z?rmS(sJc}vp+6<<5(MNeFPb5qL{o+M)xC&NOqJJeYEdv zaq@?Nkp7qEH=DoH{4NU_p>rb-@%YJwiSd~45(0J3XU9+kVg#enaUdUBdju%G(kmrE z5ydL6S3^yi(QTLSyrNWTnV=elRPJ@I$16zPOGz!?;eqn30zv?Mqc#W)wuzi4|CClM zbZ?4}sO(m_-P1OKn(ZhZOTO=kuL3*6F<>kR(Z9z^<`t?F($x2hy0_YE!C=@gxP^)d$MPXsu%S(9;XO=b(x3vhvy; z1=;wg0F1al&inugbA63GF~36WVxmI&xf6Mo?@FZ5U41+@f)|Dl>xs@aoqA%K?;Gbt zEri*}$ZXLx$@ULn|LQk?MPxTy9tv}#lk!l;#S4IUjNR3|=gmQxpP>xQnfSavNIo4i zgVpv($}|R&D=6KK+>+?DPH4p?+DBKatM--GqO9A(m6@X|lq`QEZDW@m0m|MTt7&~Q zKSus!46PjPi5uc-rkxr=oxo_?^U=YNo(B(*=B6c528B}hMlTpoGxUZWv%X%dcHpWC;JSsVnkjBjhKuEh9{5MkZq=O+IQgf%)^ zQuDhHzOj^2&vN&l;w*lUWD}g0oUyXDp2`Tj2s&$2J<|826V|1*BSRI|u$t{S%@O4q z;wvaF`duBuNGwcF+d5ho0{Bz2nuchKabC_zZe67UF)z>_vGfQXB)2SPn>FoA=56)qm75+0XPY3 zV2alS0B?1efwQZQi&0$)l%C*9_(&x;k=pG8h+d*0quS#@L;=9Q*jJG3=U`jPISAte zntEC5u8lz--Y!k`9xrboEZG^^X<=pJnD}qEv^3htogky{>b)1}A0+;kuYo#R1xZ?h zoLntYXpoCf@$Fp^0?M_>48_SYzn4j5Z>XbqcgdqAWw2At zQRxR5R17r#%Cua&;Wa>TdnAy><%!+G?5z`!c=jO1i*l_tFr&Ac8pBB6VvzW_31z8; z!$OOAyB4ZEJ&M-T=WD{F#GU;{6oX;HvWje+sy?(uzhpYx)-RRV@HFQ*qSWO=M+m)uKx2)|IA|`sce$m|4QI_B^@+Ch2D-nq zh1Js;+U4~vehRF7yAxX`h`8^+0!4bwRVTKP*l2LcSXCW_fyP zWi@PVv}(k(Y(UF*IJkGNvtP0^+ttd?2M zcni_pU!B(tzP-iEZF7crSUsN2?Kp3%72Cr)z$I?+DW+Ai;fdke5Wme{1(v~N%fm%k z+~{se6E&8Fm)kqwxJ=RxI`dCEbB3$SUULa2-bkKHG|rQBIj78bmCtSU)*K5BcXh?N zV^V&6e0#WtrB)*?8)9LCK4>PiJO%UxA^YC>6yDniAR4C=u^lEuqmjGKecGodS_;s1 zo41u2oWU7xoZoQc%bPQ*O50j$5X)QZWh*MX6d=IqNVLaq{N45X?vmT3wbj8(?7_%p z31>{t;(n}+kCK5npYg&hc3VgR^TsB@PoXEOrYCY0DX*?Fsn{@`0{k#&LbM36ZL!zs zjHa`$p|LUVU`}b2Y`|GsK4xaEz0zW_JSt?V8?Yw~;Z9FYY$|gGJxWWtBCdCLpDq`_ zzrLl=gP!3>1fGE8@=X)jUSCt4p|HR=H|uu{NQ=sES!w1gUdfg0kx~?F7|hn?$enl_ zUvBTAcQ|R8?#;%rnT_uR%p>NI%YB`;YTGlaO4kgJ4t8ll{FNLmLU( zsk3ZWt0tGkI1j?0NkJUzuahR@yW?ZG2v4t5l&0nckY&BS(;n%}v&Aey8H)WBBa7u{ z5j1f>m^KuT92w_J>i~Sz)GDsev!lh{Rv{6rPzs~#h5Hk{NdRvbkNjKZQ9>oA-;FZi zgOf)p5!Y#tE4*kRF3Y|Kg>;|D2OdWY6sgVcwdL?AoUjvYqV7`EprS?9pT}=vB*-d& z6{iNpcfy4uC9wPUef0`a4r~+NUA@3*uzz^u>alq#f|bo8QY8bY0+fJnffkbfpOO-) z#g!{-7!V4p$^28~vI^3QF%+PmIi^H9TZk!5Lu3e({N#;_E8zSH737{3+|jeaE9ST< z<&g{$tg6PZ%mwqay&W0e7&GRZ_p~hv=d(v_pB3xP?%>4`B7fbx_tAXrK2R4f`gU5h zL1ib&YxY(05j?z0V;hl-$`S<^r*wbtn-NmjQ|lsFIf6>r_=whyQveaeGTegB-I_D5 z?Or35Jqg9y;5Yb=7+sLq@D*>-(J8Bn|A zYW4XgR++s)VOD}oV&$CnY!Doajc|i&vjMolTbks+M)_3ifm90PUC3fe-1A2a1!?ep zwcO|y@D}*^^-AWSDK7}y^n7F?>Xftz?nMUp-GzQ2&V!H;XSW-j-h(Ro+-^iACjj3p z;||L*C4#aha@jFJRdw~>+9GV{5*KiPi6m)nSA2<{7(Yo5ri|mgJOd^N$N@qB^|vr* z&4NOWH<>xxy|vg()}PaAvi6d7=Zn!hXOk!-8eL+VrY_WB*{4=o-^WoF&mLP2>V~@|A7-4Q@zi!vO-ynnkAFp*_j&yo_0EY`Kn*L~V9x)nB@fE7fA@4$ z7jpLOaF$FA{6-K+b8fH_PPfg}G`411_f~-gt{m=PtEtG)13iGX;eAFIuzTR>P>fSZ zlFP`fsUvWSA;M3#tCP(NXCJ^19cEtWB=cjyOQwR#VBu2=+TS$vGx3Y?85(?r zA+xQ{AQU#0?Ob_b!th}KV?#TI&mVQOef$A1O;%6U?l<~Vb0dv89~)$(yIXxeJ8o}q zXuFiQxUyEM-{}cg4~EiMh$7o52%nClZ-lYBGm0h318FO@Z;@F-pw{c~6)Z1= zKb0hV_{750Him_}to8TL7mq{zN?fcd{@)xmzm85FI=WkZ27a*AN9cuX1g)sC)`!~2Mn+H zrhm%g3`w<$F$V7@qR}#3Kp^~W9uAt$YR$evRt+E?!FhA7dh&@0vnW+MSF7TqKe`d;PO0&0lWe*r_)R7KrYpw@QknxM03hO zOlIVuk{_rfO}Q9Wg)&*TcA-PjIWnM?I?S;kW|EKs&CQ%c;<#A5(fmmT45SlN&$*wN z$6?iU$r~s7I<&WiL5*X`!F_(dg#F zN%bXvXwPvB024f>o`4C|$Nf!0W_t+$@d?LSfCaIuA90SODUwUkJ7EM~Wjfh@h156` zr#nv}SIbnO;T^7-w89f2XLia1d0QDuhx!AVCcOTH=e-PqbR`zMq_!VSK@(a&R9TnnciPClQ!pC8;^ z*thTr{Fnw7Dr;lJ4mRgbQvaAbxv&b?jB0B*U^bF*_1UF3moY2wgVf#%hq}OKdXHX_ z{ZfAWQtXXi^zCo?>Y7IKTlPIK=iNQwh|GQH>x5<#@=a3;STI7Ha9$v3<@MA0V4NCF z3kKB|rhJ~)Nq&j!%t#I|EDZEnzZFJFEA?`E2YjcKii7;(p05rN2^@?r=X4E^g5(@z zs&eQ}t(pA&=2t%y_=s*^j;PA$ zDUefP;k3L~%5AI`=xmXwcaF7DG*scZ>WMS}%MqC)4*}`KrxM=US)0_sV{ke z{mK0maR81oh3x|;?9YsU2oQz=1>8Vp)G8Di=q;S9i(-nJHTEuNnIAoqI_us`ChtR) zY^Em{Ms8VyUGo1P`CQ?+VIv7x;MNfNNac4jmXwdwPX1+;X}f_eY5hP%3tA%+juH(w z(U_dpRgd5lO#(&$feMhIa`3|KoL}BB6XnW`{GFk%C&*-5$WIWAKdx*&!OjMVQQL)n zST3R7Mnc#flFC1jYtZEk&2}(|L03-)9|)|X1LCQl1KK8~-@k-aWok#|;2^F@)9$i# z^TsW9*zg8oYLznev?&nl z@<~d$v{78I=tyz%z-XJU<1I`#YURu?_b_SL{nkC(Ks+St7KhyylNYB}Jx~s5F{rg)`V%gHj8tiJR;Et366%5AvZ5)MhoLp<^Kw+1|f8%Wx9 z{iH<7{Wra^Q?W`PVYPaO?GbK^cCyF$&^h?bJkfME5@ytB&743&E#TtDr>5b|&2|26 zt=AUhxqG+v;2iNsLU|8}ByF4OqxWi}RkiV*ZPf&ZylJ|y+l5+E8$8k&ljzDsRc$Fc$9EckmZ zih!8455Y7#1C05hnsw#|deuu^c{X`vO$<@T$b+>*Hub&$h20d8yPYMz4QyGu5^TAu zYcjQ`1Oi59NxtH82?h6Sr4FiE^nzAXRMV#QqQh3II$Ek6xv2;<@^8d*$mqKYpjRs4 zNJko2uyiA8;J{^K?U@)RG!@Tly5~ef$0Rm__X@e(dG6YzZ$D3kL{vuPt3r2^=-#Er zph2-r7B0bo{6>*0KXD>V@cx3EX+}HNpQVV{Oxpb;+VDsMT6npxxmYrO$zY|s5muEa zUz^nO%$2hM_DnYXLoH1xz7EW}9%Ve##Ti(rxMfjElU%{OI{pEjQDpws%(Ec(MykI3 zTH&)WH*d7MS8wV51^j6&{=r-`Bg^oC_@7yF3rQZ`yc4qg=fGz7>_o~OdylmYp&?rV zrG>J_bF|$1TIH_&;eWFRx2oz>+N=4rTK9A6G8KHOX&B@(k>|uv!bRr%nm1>i*YIC& zK7bdzBpYfik|XJ+ZO)VIkd@tB7;Qf9TO%6MF&k?CKWmq-aTT%gDWxQjXO^rWC7J?0 z$15Pc+^47m%O~^B>yz5{l@7dURb`82*w0yVhCavA)5l!#Mn_I+uOe)T0I2Dj2ky1#nb?Ws@CZOD{sxT1KvSM()WFFKUT&% zLNi2FW${MkhrKHE&Tg!>G-{@#K}pv!U8H!nQ0M)7B)=m@y7RK?DO&*Me>nNqCth)i z&NxycY+}05H_nOWqwO9#^FHAiu1XjR159sZNsVUsMlywkqROJ>WkLz2_sJUj>uRC^ z27H)IJmXQA4{e%h7lMkozG`ww_h{9-57v%#G$pX9kLL94eur7;?&IM`>9qK~jSu*I zToWAvuH1t|16V1ddu9C}dEe>-LZhneqk|X8@B!_KU2t+3f8K5wXO%Nf<~{XQ0%J7w zefkbtUUv7Z$)6x-z3S96%c7kBNV9qes}t9lHioh354Eh=lj^(>J2P@ew-oS4!}GHN96X;~7&jPjZPl z6mXOjQhmMeC#yITQUuD&j1ko5+(M=%cWg_K``dN(cF96dN1pVCVr;7oY8*3w@14%a zDGT2n$VJ<}6E3NOqVTenH?)!n?}kxp$0@34{8D)Z<%a~B<2%!(d?t|t^_3R;^NZ!B zcE_%o=Z3r?1VA-XG`?|4JO*G|ppG!jLA%aT zL*<(AZoEzdu~?3mn{J~%2Gp@AezdA%h%%3+cbxIE9Hu;yWgYVWrN$;RPyP$lo^zA$ zm1<}rT4bw!0(MN?p@cv!{nZE%LZo2NJP{&7!*_?9e#IbDNCXvv=*_19aKf2^cln!q zYOO_#B-8R=+0)2MWO)%O;}nP zBp_%w6hs2lXvnci!!Ts$y|ODaBbk?~$zB-tc%cm;f%b-6SY831xtEiNHR@|g6U(SQ64lpyY$vDA+l%zq^zKT=yobDs&hb462B_2K zZ1Gjd^r15H{K~Rk2FcfZ6^$0J#0}N#U+)=-A4Wdo!$8ImJe%IfREUDM@f07dL2MV9 zUE<3yj6hIhAQ$(G7|Yj(ttiD6nKf+9mDqJc^?1&@a^Cs9oE7 z#S=5KjwwzmWoWBYg4h2|IShp{{#Rr1b=Pf{kz?Dyv69#3O-!VP=E zfLv3r`N=K+d~$K2KaV@_MS`n2ZRB)W5xnIbVgQ+Iq>*bCFOx#ry}7H+i7fymvNl~S z03c=Wd0I>qUFYE4qGb_`^Xe5SvJK*1HeImH>+TcPEK3Ys6fqsOy%?t#tqSc|4`&Tv z2sKjdT;Ge#fF6@B-Ek{94oo{0+EeUWT!lP#BoRsCt)A*L3$3|Mcq4p>;qAg z%(iUoC?tT2AvZYM(DX z2RDt|7WM=KMMebrazJbz67nI~-mcfYYWjBRP>$vF47{S}&wmTPF!jPGplGipiJr3I z2rwwswp#(bFf6Pgk#q5aKvb%5lcQ89y1OjbqSUe7N&49jYEB2oWxe3Ie;79s5D9F~ z@2;BW-$8W7#&{8+P>S;P~^(9bFlTOH>-f9EQfs&MmF_$tRRV?=kq}_Fj1h zX`JrxkQ(>MNinTMYitHldJ1J)X)Id`4)+zwPV`P;ps|I}hN8REyA**ZZaDd2ioj<@ zAp;-NzA2MJSCp`7S;7=lbu`27W8+RDjKi7K(I&cZBT)+IP6L4Ov=Joiczvx}EoJXM zJ3sjR6_xa7sG`@a*Y{;FKt`>$5s!Fra28r)ZIL7iw2~klm&HT6j5@(qRR)ZrMcM%M z)Ei%3Xr(C*lWr_aqy$+A>ftHc>>0thr7`v0RnplW#mPcf6qQ)yp7k+e*!6)Dgs2eB zK2E?jWV+7op(JO3^`ufkCaPtq}nN?_L!9oe1;dH)|998jiI z#Kq}bA`Bc!NwT1HJ(2Z1yg_K@8CLNj@|%Y@CtyqZ7a!(NGzQ?2rON~C|1EcKIprDW zI^UX3U8cT)XCkxl3=z zQzj!qNL#xqOqig!%dIWu7GfOzLiI4$oHhY470L%7>eeo%$29=4Z)w7*He|s^SKP7M zx-Kn2eYa{@*5;Z5ZN^X4<%p<~(2{Jljpu)0dKLd}H@k6u{}}PpD#Ec@KJrY*;g@-1 zg{?(m$`}%?$ha}iAdHZoLSrYJ9|l&|DbrH{+d`_M?uDD?Xyv=5$2gbVoftHWmNhFWgyC?y0ZmCbg{Y|vfe zdT)V-sC1U2nRhJw_T=?+OMTFO*CbZ?1YQ(sL&Gb&H{}Ho(w&1*l+sj3LG3pw%8y#p zJfhgouf(K>YB(xCOfEUgpxOEm#M$NjXcpjX)mElA9{#S)djfN>n0rUfR_l71_5fVX zl|C50(_ef9x3AgF{JEcP#z8(+{TqA^~S1@87AVtJ-bgr=<N#hm+@I zAw%CFA6@uwFq%d8Zi_7yGvoRYRw*QK2i4|`dY@2op)0~yp-GMt3blm@05hTzpzqu< zp|%_p`5x+-%QulO|E$`L-NmXkMuDu7PFxOHV5^)!?N2Z0S;4L?shd!%y+D(4Pq??c zmVJo>&2}W|U{u(SKTz$mz7Ud{{f<|yqoUJ{G$8UuYcyL_;V;VgaH=mk3?2qB`_2s) zGhI=$A78ti=rfAgPU4p>{i5UIuFUj(ojP|hwBj$TC@U*pL4CJmj{SE!Y4zRIj0+8@ z85boOx6s#AXvBwGO_-n#BdH02>aD)Jd@?PmyZ{Gw*GRL_pnseN086kHCXpsl>OoeN z1EQ*VU$7@YosrDC0KqXCOgxN$byh+e)WgJwI9Jmj)1&K8zU1V?)dSy&v@Ja2c-L<6 zi|?ajm%ZkNnO6iLwvkkEV{*#VhGK~W6akHgtLY_DC1L7uTHQXKP-H428P@{3)C@_@ z2bGTi9!KZh5j3j7NGs8y*UCVn`1Hi+Onb80!gW^sz%F$Yxg8Fv(Gu4W^cEn)E-9oF zAdd*pLMTFGl=vyd0mlBkb&kyLf-#6^rTJYUX!KMD#v`pX`SaN*Pr#MGqU}+s=$VMf zrkFOExWVPgtqmvbh4xy<(e8Yoz?{nCUQCQ>I=kDrkQ&I#b8{K!&F`SYa&&H6iL}X|Plv?9 z(5kK!RZ}`UT`PUTJ!2WTz^18Xlwui%M7I(uDygc5pxfeI@H;B6c%2Xj~ zl{~)z!e=^x*#{C)EN%_CpQe%%{CawXSWcfi)cTkpRD>kG4rzfo?+-aHeW&6%MA~7r)nyb&|Pc8jHFmLIu*eS>z?xZnnBIg!5Er$A$Pkb zjHh$62RTIBV9tA3L{c=V>YQ(?d2sTlF}TPZ%k#U<$=fuYgZPvm^w#@`y-9mv7!rNc zpk+g%PmXQuF>#n+GpX4KeSC{aXY$`9ssqvf>r<%&`{i!?7Tbd3bz~q4IM#oMNVz@- zkWG3;U+ZtwN%&2}N4kjBv5&XZ@gWH%BDawro_{{23{PbNDChEK)uPIHvtA2*Z4ut9 z?x#5#2@Wz#_tB7Chbf4E!6qJ!F+W3a56Ey{mH|ss~pI2={Ul>MDB1ZNCz1`3?I_6>gFRZ z&8B7hrG|*qx}WfVZ@Z5&WG>1u$DH(+D*<%|(Anx9G2FYOT)~GLg#C z^8P7w!UAqjnE5mL5%m>f%|-QZ<0NI}>}3dYsl>4QI#^bZA+l3spLgXtd|~~;E~v9y z{7dhXWLUX^Z$pI=QG-3wM^Q*YPbSCYz;SGT#(Vo789F+paW3Wu|oj2J7+ zk%@fjN&3FVlGED_c19|w#hs5D0WJwF_kgf99Oh6cbr8HPYye( zf@e{}WpQt%T1hG?*gXm6^Y_s~HE~XyU%Cs#Py6^+UWfl=vdYT02}NSLCYEH8;-S-< z6*}o|gjL#HaGb$-i+SAqi0zQP#g{Sfz_p!%|MJ6!qT$^UcTyuLg_8&D(p1qTwIVs6 zJQw|`V51`?lRrv|1i`HzmPI4P>Lh=F+|TgP$WMpfFdj}xViq6c31l!=xX319HdJ1d zXp9Rf9^WybnZZ zS40mqNRe#{Hdf~-E7D*_2_xQ;NS;DDYQwE8xo1sEsYtXPz0l9Jb82IL4w+olU-a<) zoYk9dL;`~+KB7azk52DH;I|1%lvK2gakD^W^GJLE zJOEv_j}Q3B!gLPb7-S2--NDTzmyk0~TIeoZb4xzLKf1;3h0f=kL)^?HFZCxUNr>Lu zUuGf7pYf#!O!6l;1#^mwPx$oyoBfLZH~*kh%TaOi?b~x%7XF$)eY_6Q*E*b=`fvV( z>V#=^qA*{&3?KL#%422tR@6zbCLZ3>pYP)uKGAQecSs_i6aDc17`=6VPG8cul^en) zil#4clBkIRtX)-P0Q{UfQfj+|H*OSu~ z$p!I5fQ+D&-AlI5Bz1bE`>0&{uz!uUp|c7ZZWB^#(>vkqHOAo>Qo&=I2{USF0Xn}( zIdWY3+nh*onEZ)E)jSc2CZ1?E0eu8HjB4TW{FNS(-rjzDXLm5Q))$fqj=A${RZaPb zZfDZOm%DSw&>_v-D(iYuCdZa1+p+j2v$R>W% z#!ZH+krwQ38LZ0iuPZzhQu8HLG9KVlRz{0XY_e#X{`3X}g8GrD<)}fSzq}t+Zgc=H z)s|z5g6gR)7MfiU0;sSwrPj^6^f#{JHg(3zP!(M0HNI)mUOC*ct*)Ld#h0_w)6u*S zjjbz1(d%)D(ypI^$k2)^6j) z=Eiq^`S1O`U;DM4d-OeJt2lSle1%%kCi=G^45jpB8%Ejhm3DNS{=hN~l7os} zM*3U=$WX@m%F+{w89!S{#-C1IQX}rIFKm&5r^rhkl|EUbMNDcom&keHZiIaS&Jo_1 zDg=7S{+_wP!*)bdA3CYYE%s%cz#Ll?l_{^HEADD=$}Fc1)A(h#+@rgqfJME+1QV#B z;9=nWkRbCDsqg`}Me$T;y21t^p0E0%s%wl>X+WUhWE-$; z{GXH{;;KmK?tWYlsS3O18D<3NR}Dt@?DZ?EgD8VmjnJ~ia!O@GyZ{{T*0=svRc7aH zvUiTN$Cpg^81)G-Jf{gDwU)W>(&(1f@0SOm- z!Q?8eUy9#Sxy-%hX^IJk4MMy=^*znKLd{~THzveC0*?1Na20(d@HlR$vx;(vB zY<_%j0Yj7;wUKAMn4c2KF4vJE`ch)Oa6SOW;75Dan&LNMw=f;8soC9N8Gw>U2gAwr zUWQSct2u9UkL?m1&05^hcjc~aG5)v+x?PW%YY>O7MuR%0s_%haGwvm8Dzrg!yt3d0 zt{bt=u+aTQi^{MSUjp}5o;Sh+=XZcEA*<)PNmM{Rnl;MA+t$X$%DpLGf^cV=ZJt*V zwO~%YcBNSAefHZFYEmP zFUIxkt|9NE)fCDquaLsS$PY5utjYLtrlYD7aA7}q0L`x z&cE}^fB)bAm2YHAz3r!-9}zGpl7TW3u$T*_GPZ!I&2%1X8DOYC)vLa99{NaM{ggqC z>lea<6G918n7woYb{~#lO@n^7DM=trFIiU+B&h+sVk%eNd4aa*ssLI0X zWYh!TlhLX_vj0#YYH`zbi`%=d8$+sup|(Te+j#}HV7O{S_}#Iep~N!R8Zllq6=+Rc zPRbS>wbrZkEvoje?D0ENi`a^Y;Q?CeP5}`N0BV68baG^x-CNnJ+-F)9SG$f5ohMHwRPoMl!Tjf?^R8K`)KWlLuqh zG=7u#;OSKX74f$i1FMsh{E@N37&cGvQNY*9NiAW%N&L8+#|8ZePi1fe56IiF=a72C zoQri~)Yil-+SePi;W z+dhr>&|fJq>HsjL0cT&Y?KAw=3-9K1u?w_qD7O7!wmO6ms|39NZuy(ys)oa6 zZ3$*d$-D|WG?6k>I1$x{0R<=+(swV?EZ1R&o!{9A%^+Xffyd}4Z>^_l^jP3^3Q$u< zVixc5=}MJ2jx8Sy0d`+m9OVL~ur)LZn@W=2(Sqb|R1!iz2qlL7RPt zSz@0ZaFH}RzxwooA==)WsoZu50k~)0qo0F=P$?r~yCU3vegU!F;cjIYCZvz@=r7gE zgxr`;zU*l7e^2Fud8*z@p3l%dFzggi0bGGXM>F{_R18l3^T{90tfLXB(=zLuII1Bx zc`*)3pqnIq&aYV4ct_%!eHSSMzkWos1T(;dD1z1PM5y5Jj-jGuTO;;*!oyRj&ieL( zjdh1Q&lL%eSXJTe+Whc~&w`ObrkjeF>*aKzJyAmqVMN@cyVp-dzd*<>X3`g<f(=pMq|l2K9DryBh+F1%<^O4XX>M4mI<4awKiI( zi3yBO{T>;}b#%{iS)+F<1rl(bGf%>n3Ux2wi$_SsBK(e-dNwoz(8u-b#K#=HhHCnz zM+J7oET9S&{lICCB04|9Ep~R*M^XYss?koWJO8U75jSn z*$4eFJ0RhX9oewt^tHdYY)Dl;Hbrt2M`kis&WR{}B;T_22s%-zZSnzI7|t@dQ$Z@> ztE>!uxCGWl7qSRjLwkwbo#X)_Wja7kj-9zIk-w8>vYxm}oXTo6&z0>)OW-AT5={o; zQo78`QI-SaGL=>hs&YuaJnn3HPN!nFr_5((k@lyXq-1(rmx>ybra*Kzav@jkRP0uNQ|@*ghehxE9YqeI`N& zUaxUA^EGUDK{>Z*f_h0D)JW6OO7rCT$~2JzP8b%oHq~aG;59IVV2c;o4Jl95KPPe~ z6Uj_toUfPta|q4gdaV?wMn!r@Ho~3YlRqh);N{sO1g-@rcS@;v5VL}4a^SjIhM%NM zuMpxD*V&%@EyX#eUjoW4Jr(zx+Yv?jyBnFEzEiD4Qi5#v@%bBXF~9Jq%!K$-lV=Oj z>X)UeHR!O_-|PhQj+kZK404Dp8CGAlDU$?%gi+3Rm6|4iTxQ_hOJs^-4$C-l9&xvX zvzb8wY6!mf>&OQ24ybjzbcQvex4-5#Um1-`6;aL;da-%h#N5^{Hs_Chpt(r7DQD2o zg=R`?r%s_NmuiETUoiJcV&lC%5QCX#jb@ z2|G=Wq6;_)P-czSy#;KPiekEG^V<@*mYVpib&_WH9vOt&Xp~2>Db&MgKeSg9U#9^3u%WI3TIxme(p;P-y`wU zItFTsPX+%724_@X7Ua;>mqolF7N?R&jc9kbERy|Bsz3BsRC;ViPjk~D+R2Gi$Y3B~ zj)W;DC1tzG^$gYIRQaG<>UzH@H=D8y`Yy;j6fmr`Jvp1a!R}~OF^d}}k^-#QD8TFv z?*ee7ezhzXPY-7yJL}rJG_Tw>;!fRhv!S&tIO|J2l9~((y0WZ;a~dFCmpZaRk(?R) z-}>XSv8(hb`Xv1qQ=b7-ZEzt8dnd z02auxbS_d+3HrO7uF|9M6Lr3Cse_pkbAQo^i?qg{+~S^S{)o&nKrOBxvNrcNqTz61 z4pauL5C=(YAH(Ab_<$y1t2M9}xCL6*UDv66BEL-QQYh53pLPz6rvuYR8Ed{bz!C+6 zHe^I;~2y;$`NASzN%o)fmo53|V`Z=L1KRG^dg zJTUSq`y*~dd47AfQ#oclr=OibQ~BX}p-5RWM4?Zz9+Ie(n0$n>D6vpb6@?^(JI8Ai zjH)lK)3g)?ORMd#cYb6Iyy0Douy87P7bKkAzqfF4B5SA)gb`qPd8vR4AJh(P=2UiK zbC+)Yi^f(0oNKINH(Ld~J7yy!Os#;N&9U5yz5>AO=^+ZLfSiw<1UurRPU0*MvK<_0 zNp_+UrA-BGTVa)K4m=>r0_Ao{R5W!k9g4iHNG=e{{TQjSQNNp($hG4lREs&({A+Y! zXuwXYg!h#8`~ga)wqm-pZi6r`iSVYj;i=dH0T6A35kqcy*pczkQAhp6<7QQ?=j+~P zr7~kIRykN=y^&Kqn<-rY*P&I1Mj&D>XE&6@t$-L3?prA$lWJJE7S=#$LNVro*u887 zux-Km;)jTDv3&R$aFN-vd5#W&p6JbtMqA4|qvgI)|4yoSR3!xbc+#tM4>N2cm@+&_ z3~Fhtel9lF7-*@Ki-$$mD&b4lKR zMo}931-x7Gl)h35J}BhmeayzWRvJS(7C^dh%A-Xr%1@z=@embXck7 zSC8OJ29FZOA-y=dSMnsTQ@2q)ct$zc-t7LkwVEJ7>k@fjSZwQJ#w43;v20*HF=0o% zi2pbFU+@6i_ON#d4GE&yNzh$b64^OlwEtbJ42z-n#R#6TWm&3s1`3LaBiC@+Ux3bB zPKxzS+96bdy!eqA?ys}R>Hxw~kqVKHdf&_kTAqJ6xy0kBC-g2qAQU;meTrCQd4>{I zvxB_DBv~0i#a~T~=pD`uD`+@L7m_TILKzcc=uciFM_&t5Hxkxzjp`GScXXh9Q9@v< zVW1y-7zK>H938gp)4kVI3UhPW8(Flb*DpV1isNPZtq5Q1-U}utg|T||%KCf4oFb*u=vVZt z4_5ek_1zlr3Vx%|@!~ZWCQksF2oYc#PK`l3H3A25DF(@ z2W9n!A`4kMzaeU@8V~W54;t8z+4zxVdjQcxa8*_vj^{P=dMT9kKUkhHVwg}b$*}z* ztDQpwjwG-m2G{qPRU(w+LO-Q@>@Yd5X=YWeG#%}s9*gxQK$1pGbyN;N2JpjkY&B_i z7!=*}<#Iz7(GV;uSwu;uyWYDyyHptYuLvVwq-S>?hUJA{V3BN;)#^mpBh23B%1M&8 zo^fFr3>o)khan^NAqS`ebbfJkx}y@dZD{Xby`}ecu{%3QAXl+&bBD|;40U#P4z?tr zP*s0qFBi*oWZs4^AcS5mm}U9&mq-!Q@7c^;qPF6eFw)f-)vDyg_Pd*-f>F^9p2^~j z1=l?-`DgtV$PtyAse{Qjzq-?X>*_4_(#*DHr@ueOfRnXD?)LXvM>$b2x1&vjCKB-p zHBppJT~z*2aR@8YFzp7Fe&vDa`107~<{Pgp6f#=39ZZNTBwBNwSqn;$36AhIYng2V z5pPiwPpH1>^vfu{F@JZS04Kn8lzF&nKS#i6ZUomwnpc#|8wMWIWjlm^6y=9C-QQt3 z=IH`SzN?IObTMFZbL=ZrbOenZJwOIEzSt1GF_P=^yH*OPQqpEgRPmM3)2wT{xVEIK zpT=oru0dCSzxqIJ7e3$xyY!;8qSTxoSsnY;w$2^owkW`ux@`efKtH$}&8S&51WG;8 zT5uaa3`;kl^FU0(snvJE={SKA1h23_5XsrS>VQwKA~~O6ti8DM&X{&pNPbT;eH)nH z?06PJ3SnSh{pRf8mhfN=S9wMj0j4{=N?el6OG0OBe1ujqIMZ=hpq<}Lp_e7&b+%TDz+y-EB`?FzirD( zG4+!N>@A9ge}_jhd$?&@yE~9DZqrj@E5@`x5ucG3h$BTp*Qwse|&Rr z))WOrwC`lG+h4mJ3vC*XWeXbNwO;cvEiv};mU6^C@lVG_Qpmb^118t+?|#wP9ly_0 zirL{7h0?2OYomU{u4I5RPz798E-TPbrfK0(rDX;C(`2SfMF3rq-L516lTrPG*;!#c zN!?*eX*rWRktI_uSM8!T^+6$2x)H|MJKS4SWcT^!4zAl4(qK**B{tWo+$ai?h+r0< zm^{;8q$Pyq!2gj@48Mt30d+rH0qD5z@o>0D@YuilA5v^f$o?4K;##wo# zYT_W997)5*D{nX4E?y8Vt!ZIVwqlcFNP81ygL7mE7*men38-(9F+(x>L=16d zF6R|Yqt7FIe+}IQpz;r=?>!3qlx0Yes4ndUBt!un_jN5Zt>)^>I)n(|K68v?=5LR{wKK+*c zUT9QKNZwB;>)6@7MR@@Xs~NRrCBSJ?)#m3*Bw?e<$P&hn8<~rB`n)j$a zlPSvFSxVU6DFQ5VR6(g2MR-JTZPt)UtoqV^UMVps-nb}D`l5OnOK>JtCS`oDo2Ru(o>hA#fI%((cU3aIWVR~PG(l@%KNT?&T;kEoCLEz;g% z2DiK1(g$%1)=Z~X-W(w)n}wxNr>v4BV5Aj1lg5Y_uhG}M*|&GS5IYIN(q zLZ%^iB}U{vW&Nd3$RyzV3)O0qULvKMwf*Zgnrp0WVk*&L7sKS8+zwmAkDZMyL5vrh z4J`9ZI1;l5oT;Mxr*7(!OR9*}?P@twRX!`+sg5qbQ&FAx&1mn$|2$9NAm_<3<%*^Z z>!fci66e`s`;=KrQnx7wSBO=^G0IY9ZB26(8~JjSaI{}v1BX%fHQXP2$C1_5HqYDL zRmG4~oarI+MykWMd0>^Cb2)kdtpP&-tKTP-h5icC=v+Of!`a(?O1ZPms+}sdpE-HohMtOGL)O4e}P3Pgac)(P&z~H&Uzg@SC8Nlm#>0gA6IEPoZT|cXuRm%fJVz z6!H839**|O>DGfhhMBOMaHi9v02h&g+&^~lDE)8hESdH5JaNd*4XF;z8(R1po?J2O zadpG-0j~&7;#Dz4BF+5slOIgardPz@Z(HHFvBtd{;@!V+ka&AAD7guDlgaWzuBfl< zmsMqls$^Ph&gj3@fw8pVsREExh1F)bSZN54Z!k9`5N-S#p``AO$W#M&P$OWX#+`-i z-ks?`WPp?JL3PsMxf|qW1N+&l#PoWl6^2h-aH<9$<_H|YL+{b=kUj~iz(1$6QD#~`*LLrGA+=MPxRuvm%tFnqn+K;L)Y|`%-+`# z%lB!eD1qDeV4nHvOpjd`Psu|%@EY);sG{1at0ETMAr0PB%KI~uzdilk<#2fdEG5sg zDbf3vyA*Whx}3cMtcq8a?$zHGP&eL%K1U6DuV1b??xR(^G=cg zWLMj$Xm@^p`H1yaHIa?MEUyXeDMX3#YS!dJ|A?QYBU9+2uDAGjXQ5}=nfx;bFn`c% zT)@qAcDnW^z$p;=Zt|*qTQY709cdIYBkmX*PtfRjrY+Ml%}^I2A?JcrsdREIo#NQ) ztwB^#9k)uAMiWgO;vnobU=~r!cbI0-z%BfKL-fF-M$+GLJqRBQD3psjm=UVqPklnl zwdf}|3bj_7B;E@9iRG`5vUd2hrXi*|Qo6XmVAc>=PWR@_h*|~#A_gq}^iHeOJ9xBY zhAmF$6-Olj_m}0%E|nJTBv_j)%p_?1m@wJu4yw>#XGUs5Hu5ONgsn20CKmdPf8 z^2l|tTf@3i$W`8aIm=TeQH+B+)k$oM=s|v?r}7|7hJg7AU;m&f$Qs2YGMz6+og2L} zFf6w+-3QZogUaHO+6LuQlnqeD4~VVL7#$@=&Jyytg?B@13yE$rOR;R3G7I&5?*^cr zlfu+TDcUu`+=!PnLFBwQstju+yNUa%kpY+fnnInruiEDwq51-gnizL3L(~8ye%LZ~Ggh2t0Q{3*2AdLP}NTgkijKr}b+vs(R)LHsM+uj&t(JJhVueEABXk z^JNwTtGceNX|n?ep>?508n0qQRH=j2QTE1yrU$jth2=E3u>uwgeVdl--<+SkY3>2? zd|SB^k8y7k_CaQAwr&OM1$Xh(HdZGXs|l2d_E~7KpTn@C%%0Q;uL%IG_;lV)0nHMFUTkxKUt*gfveWHbSLsq z{-gW+)ydWQ-R(n7_RcO3DtTUIsQGX4iuwEjlW*@ScPn!5AVTsE_4!GtUda_@G7V3UO!wNYh|QYKDoHq zE5dSz#t$Y50w~Sk8zv1V-BXT{!HzHQK|*Z~=ElkK#=Il|KARt4SeK_Lg_QG?h$b|n zx0~F@U_3aC&P2*!7+?z~_hq1v#r#JtCfwzR8D1UW>4lMiVS+XeP6dCiT!qY2qk+t$ zz%E}N-ZR6iVR6^u56|i|yVRx!)d!%=DhU*I1IJL3V82^^-h$rEq*1mfKRx-2>6hHS zEG<_W;SyAeS9?^jbkKN}p`Q^eW#wFUNp!n@6FYkR>g2o{z@S2x_XYS5S~_dF{;XUs zBHxDxSlBt}R`ws;Z{a~JJGthcHSc`YdNf5Fib)8jjGk{Ka>r2MeH9o( z^Aa{NyVYgAUAx?%B893-y%if;ZL{~}vOF`E zY8KwhF9{@|EZU=~O8x4HIU!ezy^Wgk87{%DD+>}5(6OA!zh27n)#MBi_ZpJM*B8L^ zQ|AEv2wIRHEReNQ{0_mNBflw~#<;SoX1sviTR>843B%s(hDjUc9+qS%ma8h76;f+t zvjxNA_Exf>4HWTt2Qkw=|M9tElnN;Xv8@FYN}ot1Njhx=(ip4$$M(*(5jD3O;b{Ra z%8jk%Gbt0%UtAFP4rBcYigShB>Qb*Rjsq2#LdoS`6B?__>|yif0DZ zvf8Hl#A;jPct3fIDm=N_;|V`WC79je&AH;m)g~Z|aq*+yD}-(`rr9W~Av~ujiI?bR zL8*lWQXi!n)>w*t+R9R;n!4WIkfka>?ISNan-1kYR3_q{VYYTx9~2ef77oDo>sUcr z=BT!r%ux#*J#8|h+T4#&5JZIUy05v;#9pPrUXkSck(^S~ArI~s+i(nd(i0YE-fDXK zx#Qy>MhyglGKtbn- zZs2WZNF?Ci-%!QZ2&Oe5+5hOjYfel>e56oHPhp^O6{;91p1phP~azrJqQ@v0twz7Be-w+l#aVwSw?>tHu&s~=DG1*jeBNa9d;IbnW@!Dg`#mnLkF)P_ z*Yy3v?0W<&|1LNDh{=RtF)iFAO9NzbM7k#f6fq+bX}+*7u>O61sNIo0ih5=~<`XPESc}Xr=1tiuDb0_J*CJW;A+6fV7~~vcwmb*=j7^`;!##% zb@l0YP7Vk`7QXS=hW$MtmY}Jfg{;+>PaaVvS)3!tnk_%!svf z340}32$MZou#xj9IJW{tC%Z)~r_{2C*0`G6bS1U>9D_N`^X>8c7dut^5;n znh3q>ntOqC*&91DnF+JN)(I;*C6f+_zmaM=#LO+UiB89=#_9eDqF;ehFNBZp_z zU(P8i>6`z3*&W<{-W-Po%009?usc+Hdk}b4>ex~1j?&B$uBA3U)z7Q+_#0Hve``4$ z-Jr>IBRc02E-R_YH`PpmXF8iV6SPhA>BWN=niPBy`57cdy#mD6~{)2Ur*^%8O$pNB!;+YNwrh zT;~LkgF4H~yW90nP0ogaU-pXuWC+(^#H+|$z%Iemr=t(Zj&kmzl$Nj{@Gfh3j=(8H zCmk@PUaC0(dZNmV1YLwhppWvr1(Zq!B)N1ZYBSi~vRJac$_Fd}vHNWAiTY?)g;%+h zt39Mh2rd*8MQwz?h=D{Wr!?MozWt3~`(|z*7?d2qy`4P&^5%2@lE0Y#XW}@6f^ARs zU7!|OVfhw(gLe`(UJ)_L-D$aFett-926Es&g7Ts&aG;)U@%m<_yNq1%BzAGzYAgHt-Pxg<51;+1*nd|4dRUsc7g zR~};+F#7V4;j5zs$~RhWIb;z{3~cqL?O9?jsZ^FODcVsLdH0arkr_je=y*PHvDZ{S zGti#WG5XuQn!;}JnO_tPAg25CDBtV6A?!sw45XR zm<3vBtVEc~%+jd@9d=UqH{R=rO{71AziCdgWLhq&{k3r6T1eZ}@l$N#xw3KGvv)Y4 zX?ysXy04oCMMQ@B_SW?)Hvgw*&+ElCYUZcWKhISprVV|LF-=6$y$^f4!beziG zo`s!Wjzsb_1tb!nm_>>ofR`afr0T+CDl6dq(eyW_|Ag51XwVNwHst`D#(m}VX4@Q7 z;6_+n$J6d)gvOl3jkxKh5Sgga5DD%&=)srR5aSw$LM&10&>z<(By}oG{}4$$v~rje zB$zmgVq{D%+`P3}95VpVgoAXHtJtB8{`j`$dmR#^~qm-kOkH;vplr zyrSxHQl(^WJYiiccg-CS8Ab>tNeoCy5Ib;l!N+hrAJVd?ZXKeK`IQGvqmo}8b@P7Y z(3m8t?=_O113QGal^x_$9tY z0(xM$K~mS zMlhzZULBw#OWf#6zc|NSePHMYk3zA%HMO82qS{zMJ zz}b&Pq!L_`t1-u>J8PP1?P%cBm-o%9GYUm$rP^f;VhRSvnQS8*lH06TmX6KZfbEfl zJJGS?2uO%c^UF{i*8m)aU}}8WbJ}-d;1M30on9KC9*J&5&&TBZrK~l2Zn5k? zL}YD~S5Rt6zzsls3Wx3V)Hv(LV)oZjYRvb5XrS6(R5(t0%#Ef_1 z>0iYFHnj^)ZFpqQd{S~I5xOSdk~8Rqvq(cVE9}#8^R!mG=%wPqur0X{ zF{gOh9%{g}|N9zn?LY&6tGk5ZOE$()$lfHOF&rwxrxMaq0uO;A=(#||Km3l(pNqjR zalCpk{ea$7aU=zHx{}cY+t2;EtLw7nmXNhB^K`q=usF}!XBS1jfWT~17e95d=|)5c zUDIP=8l_z?`17dwRQRj;MKx&Q8m+cw%Vee{|BEGNwQ4Y`&7*^NOi=_72_sVFww=}8 zaP;Z`dt2P#S9Y(?_Q#M#{Vq)h=^xJ9w zlJ>zgDd~Z1bHLPMMNL0shiBS?DQlB*zK?5-Q1rYs;jnkW*7ajJ~udl&*rdC%xC)wJ_m`H-Ac`742E$sfJ-4hAA z1foEk#+Q-WF5)M%)d=pDm0d_)8~9I!Xas~7B_L!4hG5UKdN@5fA-M!fh2GomC~+|B zKm#h@gy^}-H7Ih;b6c8h0tv3-QhqJNS4wQ9)=bBpT>^ z>1aDS3RV^!{24_r`b#SN?z|I zBg9c7FUbZD9w<|p^s8`3^)si1aZ?u+mpaBu$!2c6ojb#GsF|d!YVe6R#7s=X$0#jo9 zCTF7;kMcs2aJJCR$NX-Qhht)c-H8-$L9833l!_!~AF@xKt`Jl<(DTz|g3JMfuzP18 z1K!lsOl6@y`Gx5}K&=*ee&u)$x?AT^nDpwP0Wl7S$_XGp%VLy=nqQx+uBpk{xM5_f zo^t-S}W5mfbv4VCh#Hr;xfLZ28bW;;zvelRy zReUG3ZkPjv60@aOIQzDV4k&%%)poQ~4^2>LJloefQZbse&g>af@dB-*f5oKF)~t(e z)l3Y^7jMDHGRa_V$IiPIUV^bT7L%u*jl~9zpnBW+0?D~c6ex!lW3aF+-BRTj@@Dn+ z9AShmq}6ebOQcjPUImLuyn_5k-q9m~r7^X-gEd z32Gs;iQF?G0d}`|fl6^K zTnf`Dl%=x>=ZIs?RAbYwEPzZh_<1zwq+|x>F_4l6GTwz&=!tx!BBZ4+!jd8w4Y>M7 zu{`Fwj_H;cUhFU$QZ%d*Xd4X>OY=c*Qa{Ic`FwST{{SrbHR#4krhMhKQY7CZqKIQTCDEhGbDuPr%}082OdRQgD4)z%nNE zFZXL%P(~ys)v*8)OQj8w!}?-gE6D|e^e%@pXX$+2@ak?2sW=KzH}b~H6G-STSPF{Q zCTJL5x$>y8iylwvYH5i@-u7apcH1-~8$-pvv2*jdNCbg*8RSP2zC5fWXd4yGDZIlI zKWxeYhXmMYX1XikLdRQ+8Trone|sA(0nb&f1c1~6QK4cz)1nb&)VwDN3AeuyXu&=if)e2ya>q@@t3mcy=2xT>L zZYZO0y8Fg*R=IeECK*95nHt7?*WKxFYWHV`ySezFf6=|z?7s7>zmh6mUd(C`llbLhfRQP575KlZHm!m}Q#A()**EolDR5#X_xz7`2=yxt*9y-NrsXA1i? z;UskJnj6;bZb?4et;kf+_!tW#F8%S7TpV)DTudLwU(d&dhv&C$I;@0*m7-W(4OdJA zsgvJXbFEox?44?L>_r5ELX|9NwW`+*}NRb(!divu73Ic!(r^&d=zQ6pXM5Ayi6Wc;soN9u?9FRUXNhmtmrRu?=W|l0X?e?in+!Wj7(m zwhhE>NmqXXH1x3S^-tc1K(vXwSgqw$+7Ve+w4Zj`%MW#ae)*zfu?{R;s0u zU4>@KyQQEEy6veX8t5rmgzfLn)vNN1HWIq!C}Ww;k5`w3jENpFmf;0+GBWcFROeGBJv- zAkw6@roXcrOcrQ7qQ+vn#d-8Io z{liPES3kX6C&5O3nyTAkV(t7_Vho=`6~rGK8hwyn&~bSvK3_r$x! z1CF=-{^a+k-W?^^k)xe7Y1ahU1|J$LdPqtBV7oHS$Ex&TlUC z9Zrb;jK4UY?{qa+op7*Iczo@Xbs%bJGd;;SC%-@WaXbsjpLpkF)()w|5BP;q$Pbud zjE`~LFEm+cYup-jpGF@S;M-Wa-NMnxC{~q-viZ$#Ad&;@k8j!?f$*^kAF&~}q3vcI zf!(k5>WEEn#M&kvfg zfDqJ&M?IS-ty|HZ9$dA(GTr_svR_v@AK;vkb{F44{r0C^}O=m{aqm?SeB#-zbqHbsoI zw3T=wwY5+WscTC5qQ8p9L!jUtVT@lQ+8BS6Zzi#u{)V7wi%K6v=+L~b&7WQveU4up zVo_}PmneOV-(VCSOJ{|~43+m$aPsB+$z}^3uH%9vokkgkh6v)pai~r&#_{V^9uq<@ zZ6-lj3fh(J)@ph6C4_Z_bg%WlahLQlbEXgU# z<)*(;Jb~yIU$ljC#jDFIr+Zb4DY|6hi#u{oN+BAV_)izq*ATPQ^i?0iOQVE>iUZZMzE-0?N%E&RTMx07ku5 zL=DuoQ^XoegSi+YnWqC&%oYcQq`>&5`Ke}b%<)F-A~fSu;@c-VwV+kA0LZ-cCC#j^ zqB7PX3CgcXMx$_Kd$L+s`~2W-Chs2B4k@n4=6=*zomKFpRIHzx*&QTuuRH-5Ua7V} z-MwXr=V2CY4|(>H!8i)$UQ)U3rqpgPi#_5;Z10Xj8o3Rq#(*VWK_{Gidd_r4iD0UL zaItKL99*!mOSG$JLnDG+A*3@rW=VBK`tkeq z91;g*-~nYy0e)Rz2O%PczB{aSjfsOWe|D(c@j|EgcUttO(`sNfv}N&2G0;Q|T)cHHAHQH$M$UXqF>6*YWJ>AIZ#?;uj zAANdr`}%w_dj`x{9x}4G@wPdY_ zj^^ySqY3}^?*3R=29f+Nv&@`e@pCbmbCg+FXWaqg3YE%Sg68Rq-B z=P%_j4nASRWD8+)Aw*Jl$nZmSoMXBgt1x| zc0G!zn|c9CiyjKjHi21BRAD)HOKUY7;`Nn{ ztcjE`8|Q5!-=gNMto-J8fUp%JMN{B1AT;=YE>uX}ev#kJy&NyVn_zEIV+FKP+FSCh zF}GMIi&{^#LjXT+G_aJMs6GpY^hAoZ#**Ewm~9eAZ=&)coQ5T1@5-ix(=qgKY#G<( zh`bUVhuJW~*>)6E8W3($=|+hKTAnW*SL7bgY= ziI1~u0;aa~(Wjsbe2SrwGSsXekGA>#PNuwntR>~82b4r=7ML~N*>Sz}TIdWotM6Sc z^EK?924L1=d2xSxB5Tv|10ncQm8vG7PbV*i%_l;U5g9IA_HKrhPgS=-VGFA^Lv;H= zfiJIwrb?mrvyV>wWdVR@3SGn0VPY!}^9>r)^=bpqrN`)Me68|OI%?mg2w-IX1a%0d z^dO$gg+RkwE{i{9*elh*r?PNW!n?qNxIinf6-i-#0Xy|`$klwS!A-@@3L(4TA%(gV zKVqXe5+rlNM`Jsv<&1Tq0ivwlasl?J_JSgObslY!bki>H;I%ROc|!=c%2a@Qfdsb@ zi?$U1DdoBo!N|oW)gDa{kR09@L1cBFt_GYpof2hn12k~lZh?zleh<6%{@~HbmlG*o zG8+zF?=|_0Td;=s?GawBrdr8%gO(_L@k$7la=j7`U4=# zZ>(5Iw-aqMrGI(o?oUsf5eNMh5#Hcl+&_bJ|60dDtEi5^QDD`2oFq~Lh{UV)LggPBZWeuoG z$t<=AGRkjkPEOc|I6_0DA@HNJi6RHW8MA7mJoeMpGf-=7c7CCzqBJ>f1Ar4Q_+*dW zu&d2Ralfmei1=EW*cx(a4CoTou+K6Lkn2Z^mfa6l%(WLvjpVK9Z<6m{DSh5jm*OeF zuaqlA1(BS1-SHD98mMH2sBre?Jt-}5VyZ-JqJ)--l>qglUNYe$qZx8v^!06uQv z88HO)rP8>l*@go~f%g6lnA8N28#kiS@U($9KP*PJb!}4Ui9fdlgOOWp1On659&eAL zGwSx>{^lIbcyDM$O0npW`5cd+>a8K|Q|!LIz~z8k{>m^^YNdkV=(UA4NlLtAn?;MJ zQENB>T)((UO*bJJOlK!Iix-+@QJVr34J zgf!9tABjhq9KwJI&xR(!IX@C6cpv@^j+igaW${K#H8_92!AUW7JixDXn1(Dt-aCpsF*TNe% zKDONUQY&0!gYFo~>o3v!57$lg5*_l`F4In<++s@KAJ5RNLjG>*La$j%4d(V*q8~M= zTi;-fad3wP&fz0~M?H|NxHvA=irSRx4{ugj@%51-0Iznid=5WIz*J+ZwILR;v3;mze%j z+VAxcG4}^Q2G_Zp{14OD)0^c&l^6yV!H}{VS;mB;-6m^1PG;MOSdUjmRX0;0+HEPb zlFBA7oo*&WFL%0jRyARCbePgN)Rz{~x?ZX7y1H!}<4;6XniC1$P7&iHc<^z8Haw}6 zxS;szQBJgPJE21zb5Q``ZgQW+7Ao`iNKCf^_e*l9cY$0-bubMhHQg z$%8cgC*Nhvq0zV&ahVQ$o64Zw8xOoMtJqf|08T*TJvI3pU3)GSXzrhn1j^Y7j&Cag zn03;u^>~C)t<9H)PD^)U3#D00 zy1p#|92tC<9ci9I?_6P~5P?N@bB^sfEZMBpWzR9dGvu#z+LM#wRP>PoO9a!hY>nRM zw!R>AJ2?Mmmrcmpv@9!md-6X{{%U%;oKwaskZ{Sejhyayj5LHGo=(4n3dT#_-W5*C zcK;=;2Ed21Nt=L&y2d7!6B_nzGTiR&stA@K@fx@y4y&HLpmcntja^qR^d%IDQ=5%; z!mw%^y1~ceQPu}g5-f19m`DlB2EGb=OE`klHB7XPHm+*ByAW}bHFEk3A&*)(^9z*c zn(j~kCfjS15BME>*O*_l^aKo(;!L(vVXADWc9(E!Ls7!4S;wOy*T~Z3WG;Stl+_r) zX7W?RrZWaYt?_Cw+K*Q@IRjo3(GGTZRr7ya55(V!T{FK&67o1cLo7jPq;2dwgI-E^ zA-kr(zs_bXJ^bIJ909VqlmS?)YRlK^EOK>N)LD!GiJSn66wiM#`Jag?iFcLe@z|qNAQmF)LsJe7 zb~lVRlLoI8OgVcLOcX*7b)^^MTG0fL&PK!5=z-s_qt6vOOv!=G$;({@c2a54%S96$ zq~e`wIH6|KX&iK=4FH|V#zYPo2aJRQan(7Q&02^eI~1MVXkwmRbFq{XPd1hTogk4- z?%=#K#Q5_jM^0z)_7(Rf4l zlWJAMs6aRWdnZE9mPl^=4+KXy`P&N9;cR5lAuZ?c7zgk;7StUdW8_q(I6FaFQ+P&p zLc-Jf0;j!%;=HI9P>dHq?dH35XB9~bQ${3CQ+zC(CA|X6N<@ergA>}oh4K>OKA7#* zxgfL*hW0#s5ODLd9LM3Q3%TJ7dxe`>)s!cty`kCOl2SVsPS>!YgbfVTJLr|Agdwz) za+a4vD>~cUNFyTmIyy@BM$kS{%bwIaUU8InIS-f1yXIm~N9tkwu-+rsM^BIzBi7i7 zhdJVpI_z_z`EJALE)PigmqPa+HkCE%#!`-j$$!Mvk6u9zia#1KQh!|EUtZT9e;uIg zjPJ*<`dlooZz3v=cNhAuJdXnsZq2ESzX((dMD{I!|2)_oPuE{(DT1!#^d=Mv^RoVx zPo%ZXJ>Z@2OQY+Dqk9E_b$1KN2>yXpe%5#ZO7D@$B?;8jJcY|!8IX|GMQQ0=w38|$ zeT;d20t)*R*u@(a2Q3Q_SgDsSV9`_{y z41iXly5^y*jg_00@(sa^Vv}M{JRf5a{cgi4y;n_6H^pY2$gfb1adM5gk{?2R-MiM< zl1K_}vHL`3w~D}+mh!Q)Ioje+ZW)_=kw7;hZ*ZBCa?u@oEOf(mZP}~$#oEU!Y6UAJ z-yWRj!gT!!(^JPQLzxi>Fu0AR@i1H>&zJf$zSNU(qy##3%7SJ;X96^T=m-CyWBrG&U89UoCA|3enhLn4I3z2xMcUARV^ zE32QWi%>_$?8rwmRucJR50$eb-=v=DDQR71$*+mIz?sbIKMbbzgl^^LpdCf(nQ{XF z3*|_G^FsP25l|FEaQ~TTBhCHQ^zG;6leCaUGv;lS^5}6z3h8iuoKNbAWYjVZLMV(# z{tW3TmM({n9=F6{%qDp^=0(X1?J*ze@p;e#aP2}jW1wEtd~qxr8u0wp}fJCNHYmz ztHJbUT3?oOwhOXo8l}+O8kY5=aah)G=^awE=2457o}A)B1iWl4=wKsx0(ArTQt78b zNlu`f;BZwDQm!LLJ2+BJ90EYUa+BP#r9!VL2xVXN8*qv&thRQb-8+PFY)8=UW*gKI zEJtwe*C`8aOstL5)s07$%tV39_gSI9mw#UrRhZ`k?t>9efg8w$$`1w%T-+}OSxXDJ z?$5#b>4xS(H2xG@DLo5$*(qPZ!=h)paQt`T-JV{*4{#a5`kaBr%@oe5|JlTgLzndn z^RJ(P-#eKs$%GRUDWA4KN(jyN@f5iiptB|`$>gVe#-9S^NedpY1!;u)Hr_P(l5;U; z9F=*79iyf`RWZg-`T)Pj2NbV$L40C6RapYF(_dM0xk~A?Im0}TDvSO+a}`(z+=Fm? zaCt75qfH{0V3RQ@JFE^pp~t-#P|h zJus$SL}7QHSHV=fMLRVaR}hb?TuMb)bnKM14()IPLa$EW1IM3#saa~@fW%KZKCBk1 zGkU5=eg?1y%kyp*Y$Ejg25&kQld$8#fcqtO3%bBDkv$de_a#W z{af*bkQKO;gcN}a*4g@rs*B6aYnW6=04Ia(fzzUm2s26Fq|Zo3oq#!Ta?=!!$v4@V ztE3onmrLvo+CfeDB|{o&EGj9On?w3H&xEsfPZO(O&Fk+1Qk2i z>xXrf`B}v!={kF(>o{7GLjx`{_145&N#1AuCK#r$$+wKkQHeN&5rB3J0+EpYa(;AB zrD_6arhK(^St667Nji-Il@jXeRMxBk-0xdD%|z`HKLYPeL|0UjkwE2o<;$;|jK*-$E&7%pXC_wu{27#5{DE0BXE{lydM#(V=kAh8k z>&s2~e|&V*8Q#wpHoTX3&St2{Pg5PS>G4RfFqB;hLYn214JHc{@B9w|xUNwko6?26 zlsOWirCz)&ksDO&9>d{kYUrLK3h6S}F8=w9I$YH9lz%YqHkU$x4u6iChX+!>OdUPPYLBuPtRzieGr6O_6FC;IX$3;tC0a%D41* zq+@K)TpclelOloG8J7tnpqLSY{5BhGwRrNA>b#0a@1a;eP(fs zFK95^#)@OcZ`u$mrj|Gcr~jh_ODtQ(1cT&iYg3ap7=f3QV`%GwP#HXfN2sa^6h-GN zr#fBCb*AJPq>Q7G9;zxlT)hR(w?f7{Ts60k++1MMnye06QpLgm@GmM#oR1O*5$n7I zakh$y@QV8;KwyHC0g>$0X1-JS#q#2{9dlLKh}4X1k~qh-@nQq=%1i=u*D+CsH*DM6 zky!|I*J~v8J)@zx=g;p-Bin!Rz+xLJm!pL8Pxo_2M=>DICJAKnLuw zPN|%Me`N&9ohK?#iW}-8KN{M{07ucp4!xAcYKXkgPX^BRfR1tia`Fe$uTTG$aLUC> zDJH2P293r3w3|Zj+zQR|db0U}{J#6+hhO0nn2+C+o%=#XJ6Y?wNdguK`!Xf|xqj?} zx~_RoFeqf8)pTHajj)GuPSrZY)I%pI=p!uEdQ!4XD8IO4Fc7!ZbK?{~auK^r!v0CI zh3S&*y~yb`{ONHQl0w4x!+IZy#YUZHO(Nfqz+vG&hm=R!t`KQP=(BKOj$|%3IDA zX_1D{jVdUqf+Y+*;Hnv60cw+4bksArw_NV5??XPD6K{r%aMK zZ*){BkbZT#I=HmD*rZ+NyT#v{0=VeOAMhov<-n+-+G)_;w$#1AF`u)iol^+=b`etq zF)|K0{>DU$X6~6DU}u;enn#7>*0nQN&Pb_WM~dr0WhMZCakxUJwud0AO%*V4^5zBM>RKcwOx3rD*G((tCDG-|ot63H3iWAy z1&7QI!4*Gxl|HkSdf)m^9b72m zS!gzVZ}!Hc8RjvBxW7SY)=3SxNpQz~AxI)DC+L=1piYVOWj(&j`&KDGIEj`;7>0G_ z|9&ONj!Hp6k;4r|GQy3-P0v5~fm>CK%AVNiUx81}`Hx{tH_lI))+S-k(^8QrmhM-V z=m!rvXUZy&!{xn04_u=ixau|_!;szh$Hje&_^of@s#W;t=;T^3r?*GvSzRcm`ho`3 z{Xu~~U9_3k1DLiX>ZQs)~Q}bsR zg87>DwMytv-ai6Sg3 zVC{(+8F`C1(qRi3;dOJ85M?}N{SwSd76B9NM8q^jRzuX?8NycsF`1bTnGow+9oPek zOPA|hgG%TqCep7wj3S|mcl*N24xYMHYlm)w>2y#{Z56t^qEH>!#ZCgN_keV8JU#=| zn5Nxs0GtWXb-9@h=s4dN-^IzK@TY^Mt8! zA#eMh#tsp$G#@+~Dnv^}MT5T=I7T86LWY2OWzX}8B2(Dp?)=S(C>0c|2Tku`ftp^% z4OS>ZAd!82jcKE06lX|6oM#{^?+XrZ8>>_VHNqXE%GP;)yzR+82#RXo)=?D{TMOp% zVA3Chp=i6I*@6_X4^lvZA6$rY+S#|RINf1_f_J2)8RXUt<-0uk{gujisX?;}M0Vbs z=~9$T2bQ%>sr*7=j4MK}vb)VD41+Cxc9K_V1F=(RAY%F$M750jr>LXKnePVAW=4X7by1 zk0#6&ImY zZdPoRQ(WzO&av@q=hiPVvrj{SJBkJ0@@zFX7IC`I5M0y@p4Nv-q7S=~dh8HZan1Cm z*adB6L>%6e=53CRqVI(_ce>cch>sQpyw?>XibKl^4foQs<@Nnk%nrGv!oEIJ3I!6H zzHD;NxoqbAFtgeApKsc@|!La6P!C%C16gs!ooEI`6$Ha!+A5{Sa|C{k6C* zQ1F|M5zJ`e*WOc>;S-&%rD%5Sz(y?dYz(s!R6kJ6hLnI%!Yp4WBTot!+(uRf!_Av> zoly^r6!Dfu!vOeYnM4UwB{Q=e&TnRvZCVTG(Oj4%GQL=Q#dtK@z!~bIS>Ot3?9g+j z?|1fUh<%ZIhme3}XO@8Ij;SPvLR;UG?iHAh)oVoOyxI?nOzj}9Gvxyl+df~=-6r@) ztE2N1WCP20UUhKRwz$lJCqz#bt(-KhHsaU_1|=Zy|PJPps?oAIpWmznym5c1o5UqUER zx|0)?4SY#?4D##JMC^W8u;u1k+CORMbrXZ&5AJE~losy}!?{2oSB3o1&0ekR9x~2mF#M(R|&`ip*CVZfmKcqo4grz(9sP3p;Wc$zFT=S9^(A2>7Oe$7J&ni z6k$k{8#P7D*z5%Osl*!Ofka#ODMket2_HX6xp@MYbM?J3o~1ICD1Ilvk^9wk111!# z02^tI`V!*@OHx4?P|O1)(E_f8F2^A}%0pN*EbE6<=Y(ymVAY2d6z9+Wb^2So8*Ro) zR$!6xVI5HfU(NB5n&JPA_D2uz?L>=!8ihB|_F8*MyZfv2^;N#98H2Dw4%9jK1D6!Z zJD5#=Fg@F){Lb>r?K9)Ydkg~UrvL$RI{BU1GaThDo52XqDxH(^e1qfIzHhwTO?IY2 z>xi;s#Fvr3IM^h>a?DAlg54;2|D+eL4%>=Xf-&W?`g zcFI3N*H2#w1GFrQ(gQE;(`@M9$u}qe<>ddK{zCXQX)Nec_9?VUVAclLY#A@Xm&-5N zjQ7jS4XUda8mKx#$)FvJw>>Je%A=Uo4Iw5!1V@H9+h=bp^00PTYxr~}Ws2>Z(BQMC zN@$uYgQjvcvZY2YkQt)7dyu9q56tQNoAyj>%e2tAH8~DW^GP|4k*?N*y{4;V;O)M@ z2T`W%93JyX`Nh&Sv+Nx`B1f zvR!gX6b?*T)0CG&5N$>jmz=qx{pHyRYwk?9Q`UI9U)?rlNeI(!MD?YWe5N47_Rt;F ze)!?!wpJ`N{k#cgtDXO$AivBQ0WLMeUfK$eQd-Nw^5j}1!c-?1SCsd)eH@+8aRxV) z#7ldUwvuzIb60wAmSfgacru+_F4Is~ifR+diU|kijCBf@d7J_#!L#94S(9FD*zKV30eFQqM z1cS`@vW$6sNC-i0tL`+l+J*8FElp-(VTl3SP@U(uy z)~wAf;K@65O>p>{Ad6$zKA%AJ;0qEK=9hB0ZS|2IVNk?6a(b37imJI??E0da8DNPx z(2b`GL{EWX(Wsrri~Ijrd$$lvx9z@feYdr$`m($B*{8bJS$kKzWk>8FPzW}8iGz@I zj^GG_F44)66dXHsSyi=mSJkRht7>;wUh?~oF~2#-T-|&71pLyyYF)l>e)BS}|M4HW3I(OzJa=)urMitx z2tzUnXEzSZj*{YG4_JU8sBu$kNo?b^1hJhL!&Md?Y=u;Y(vEms)fTdi0F~}!MLBJz zaV$$(QaXn4XpR@vSsG=UPREZ7MaJznA2&ZstNHXe(m~qLs3*!5WpAl|i$~k@EPiJ- zy{#q_p>?=I|9ZKJ7wMM7Q7RF1rcf#->-X+g*XuV&s@K5_@DnqdTBEaU zo}+!ciuhB{NzB)ar~M~mc)9q3X0Mu|K^P7E4WK&lf$m`o?AEG$Kqrl1QD-m|_lo@# zZLXpwE52dWCa!TuO<)%~JK~k)bfO-l{3VTYT`KpL@<#@8AjUv{GM8EYPtCdI;$RDHl{nZU-KOX@&)w9b6X2rc^ewg%!Yb#maJX8jyEPB*3w)sq@Nlh;VbuI4p-` zFVH(a+6$USwTmYvjDYU9WQRVNstMvZ9o39b@hGjFXBP!nG%N1 zdL5GfP6%{l^4HzM%P@4ESnphp^`sNQDRcLha~El7?6+NC?_{Gq;w? z?9RZ0R+oIvoTQ==TOXT=&RUvQbocLOkvm!isAt$ygix>2O_agajcq0~i>z9(m@aN8 z4tEV((~{eo2IFV&V$y1(S=^eqx$uK`OMSDj?|JVV15c0W9{CU=jva!Y7&d5vSU{x4 zxcP8*OiEcSEiqCwg)MuEcl8+EhJ{_4!TWA5C8gdjDk2m83Qw(Ec(jfi*e)V>+YHs( z!Rdj^jHZceddtrE~vm48SiK47V;h9GoHFcg9dIE4oH zu!szOke9)*2Lnk=#w62}mPfjs3BSYX`sxP2jA=AGE0zaR{X(NazK{+(r%Lnl#?#Lu ztnEWK#=(;iHu*q11++Fi5vt7w0>1)A;@P(AjWjC2jyx)tG`A^ZQ}%~XKX8YK272QY zq=lxEDHtPIj~Rq+otlx5!fj?TjXu4+kHeITJJ^x6=$G*sN`U#|qjIX_!*&t4}`&dR6Zn3{T6MvqgZWBh0gf0OLX3d1rp0u~oL- zPUK6Ho_Vf$wQt65N(ba^JM|{plud=1_k%SWaqMhQ0?U^GA^3U8f|@$mrF#Ief2HiT zL)3T1Qos$gUj=G7`AtK?q(BWJgnGF=A2o}*CI#z(Whp4ZrY8o>BSbl}cv{O5+W{Fq zJ3YBo&e2aiImf06`(?Le4JB~O#_?lAM5F{?sv3cyK*`W;cn&eU=~sKh2ldP$D#Gqz z$3dz@l$>oO_AFbUkw7a}+fMI1cu_PiZ5j1#U@4V3YX^ryKCKH=;Ro`m#sGSj0$G-0 ze@0&sgEuu#i{i1pO|bMjl`^^nGhdO?o|O1-n@(YFKVkHO3HG|@jt?Pkxz1^y9gWW2 zb496Wj}fGNp~lN18X~+rKepPi;SH~IHwk-wiX_olXiYt2%DQlnDECRedM$jfMWUicHH2m*+%UBo7o+RzLZ^XL*R+^pnS)YD5Pplr!d# zZNPCJoz@^FECgJIzpBBa#-eSw)L%V zk-ds#qc;D9zdlsbmngns2HS3dw$TX6kw_7o2DH0;n^90mu_);1vMTWf3j6qyvr)+k zkFKzdOG3}IB<&(Ln^c3M6pRuu&xv9A?ox7QCoLy6>NZM2jF^mm*p0HtuMc%3qbB;b zHmFbULNKiCSHZ_1EdnEBq26QwJne?3N!;7QkpEm73_>aU9_YqN49ccQEDtDcPLPqa zbTIje#f;wo7Sq|3zYzgqem=K=VJMTl1v^Y4^CDWH*8keVBWoxIV zQP}`7_CF+l4266KDl{>f1A_Jsae+E%eMl&JC6)SyURmHa2YQ)V%s2UWTq^IZ>VbiJX+nBAUO$UbY4zLDC;sy88eBB_G2$1fTu*_WXzxqBRNT9 zPi9+>8V??A@^KOcypW}mAIPNJSF}X4hl5Q#W|h-3OM+)7y`t9hIB+%+K(VH2fXjhC zZNFu%qx%aaI5cNTwmK)2$r!J;m=QC~V@-jra!&LHa2Y+{j8u*vzQa_6(W23g=!8H5 z$Nbxw`JQ$H_8|X-za(VV6bTObUC(Ob=Z=*u1Fz)keq*3!0*h-5b}9~*R+|dHU`hAu zdz6WnE(5~dkr31t10W*F3FmAA|JuXWQGM$97QpBbZ%LS?${(!-F?knf@-!tAL|GoN zJLaiiMpTmqU$s1b<&-!HmE%3aFkJ*oeA>EDJH8WTyQ>%7lkgtX{gMo*l&vQ_Nih}d ziR~!hTQbHeWEqVx1#lBx{Eom?L@deWrRbp9t$IA|sj=IM-*W&BiAH$81@@sG1OJm~(K@n_)s< zU2aa~DM$Ufi&b$x29}7ReM}Su3VO=$fKZIva?D1Us7t`dWbKp_VQCY{l1B6D?@qp$ z{BInRzhzUKb~Sc#!aRs53JDIVxcH#c5DL>7w7jsgz>M{qiyaUpc$=eHWOs%Iys{$` z!VH%ruN4xJpX8mFi9E)=ZaFD|3Eqtc*xYs?GhrROE{g?*AZ>IsLMi$pBeS|@7ui!Yj ze3cCy4?x`AIPy-+Z}aTOEEpYvHrCyBW$=CcHe92ZE6)1u>E)URw&6P69TQ$=qNdC*Nn9mm>p8&qKU{QAkJ5hbnFD*|V&kJc^ z5kLh=Pk<|=^DF?AOO&%2QpO(V*ou}#PNrTrfM;zwfj-1d3Ws=U;r2(~HZPrCv{x1ry9IqLu1%yY(I=<>Pwy(5U1cja`>t&tP_n z?T@hNC8EJCo98HEy_R^at#h7Sw>;9~hURCo)O?e8{2a1|Vw()?b$uv#p1-&?`#o7E z=?LnzFU%?|LTGwL#3v8i@{K$>Vt!nep6p*}6|BmR^wKF&iBp&1A1GBt{`X);C_XduyDTheO$mhqk%%9JbKxa81rM4wRan{j6EYrFdSF|*@vkffUxQuJADKX<%VN1$xAz;kv1l#lLH zE*^_3V-5YxCY^kNZy*|1xt*g^TF)Ijixax1kc`Lia_|YysepB+aMb(OD0L2xY*X+I zt&m&*rNv@zwZVYRNl}R_53^?oB(mZl)n?nrC8uji&=hJa5Q+}XO_;5MPPTW36G%qz z4uG;0&w5O=>H*D;dSBEj*bmB)+?EaE7hV-3+#JbiZC%6CV+bgQe?^8R%Nbv7pE+Df zTTHW{I8+;2zT0W?uC{KNfqP6t$C$UZk;L(}LAI(On)M(+ZHFpr6AqtRADZYge=qwT zSboXX>!K0e$DT)&>o@FlxO%!<3K^5;lyuZowW~At$81f~5fMVjsUWIVst&M$kIZzA z&s`~GlUTOkMI9%pTsYc05r^%IIBb+&i9XDZU=ii{xEL&*J!BT}%SFE-O_rC$L?U3X zBeZ*WJ=^PPb1!{YP7c-sbLkNVbxaB&nbA%6!>?vEtg7iMY}#!vfz^6P@SJlslUHg4 z^PaPp7HhuS&1w=gM_{?rZhG`1Y#+3Qj4u68-eD{^9<&D*Rmkr|@cemqq zbC%1X;Kpr}jfVt>1HmGp|5U$oQyxyzUNOqIi~%d7>M-)dkr6ot-jDH`poQ7ordRv z`D$zD^;f>c&WRzwN!jT8_G5#hcsO+?O3wU~l*+R=VECaU#3F@jY(#M2AJOcR2`f0A zHgk6QT2PA>#ibrC{M}^^LGL-fAWT#e1H5`td$8_wycsnju%u6Wl3XI4n#yOwbxi+WkBvsu3Y0 z@%wzZp(?waO$EkfcWecUHe|PLMeIp;6}KqANy*Q+h9VqTT^0ch_Ze+CP2IQmSD<9h zo8|$x38sy_k489&($s%Wu8^P>h~8|@4AJAm(h2G>`hO3x_h@@^B(t*If+yam2pHGf zDI{YJmga~#moM+pwXuVuV%%+X**di_&5kJ>B>dH1Unnw~jdTD(#aV1$EjRgr0NBPx zoB)iN5ar`Mpps68S0(KzZ=6#ms+OyxY0Bgi#u%9|^2F2SJQ72x)_lxiy%0FL%nVO$ zGCgUBe+DPQalXu~#5|=Sp6>`5PVg_rCQX@>LOo$yzYY@uq?Nslw$}bJX(eaIj|?Rl z2tspi2Cmovkkxl1Z{XonGg6!zLCwQ)$HUDNIu!q*-2x{cGhL-U2_c~k&FV@$4AqRx zGg<9jJ(kz3MTsGJ>c2uqs2@!Jv^j77b_7^@&6_V)+QA+xhcqI{uvv)WrkN@S$e~d0 z7P%^lsp_5>x{0zTmjE1S5{O@3D>AMMxL8KnIA@BL7GJ}6cXnV7w zJI`#p_(2>uc>+?19yPx|`Bx|ZCs@!KsYEyrOndiO+;n-rW_Fns%D|Gn zHdkeWWrX(O#du8G3$tOaya`kHxTMnOPx8DjjLTr6FH!TZYD8X4=1=|4LRI;0C8KVo z?fZx^sMwf6?6(Yn*Q2np;kaDepFpcMw;?q)BqEnSB3tVxCK$BF4c83go7?!Bc^X-> zct6G~>|=ytH~F3Bg1x|bpMgs(xB{wJC2G_7$eq;1J6kLx?`(ut4?#{gRKg}U6VoaJ zQcMZ=QL$SmOQLAc8Qw*IODC^<506#=o`1j8-7atB`C!pNM~;qN+QOb5@NP5&G#cMaHq^`lCz_-RiaBW z0lgc=Wvu^_!s$6AF0)g#`}yP_;h*0S@RuTXXOeaKL=1#T4ZWVmDfn&dvoL%z;f_k9jhLeP^0Yq|y zPXY5Zf(2RQ(TWif<#!iB;w;{kA2#PyLi-U!KKO5v9ptMgc|ip8anK4$5U8hwZ?>$K zwRrDpS-TBdznrvDtV@|Bn&0;A!@1#R7tPz{$;G{DpE5P_V7$ILB;2kpw-N#mSHzz- zucFP`{K0>{p6#{2U1cyWcrppXQi9iPVaq!0C!fNS zayZ4!vtZh0p|7@6xg83wEvD4zjz3y7ANBJFLBIQKr(p`YGJ%shZ2pbt;ZNo*LC;nj z%F_g}07`au=4*AP;hYCIl;D(TTz3R-^*f=oySf$jao(;yRzaMM#0VD*hpm>~29>XW zvW6hYEK8yRCUFc>V6d&Bin{O|G@2^<3|x2~2+*Pv{JT*dJ+eozeY_~4I)NR+(0az6 zFM!pa1++_3Z6iOJw@()H z5n0SU3j~ZNC;{#)Q)uwZ zPI?j71kSo8E-Vyqn64)OdTJKr*OTTCy9#b1V(C}Z9|=14avGf=3VTO@g%#Rb61Plm z$hDgR)t<12|BcDX=Lpd z75Cp2L1pKcg7=VO^|)_=g0O|P9TlWRc-kX*K&{{z+mbu(_%gb}Y+Qw^VHaJWZ>s~$ zP%ncul3&)=%6Y62Qkk%dqCj=r>pRpW=c^>&;UQ46xmyQQhzZCMmmW03eaw@#D-`xM z>7Q~NsEWcby7MwOo~^z(y1{17m+VZss(grYjOFcuoy?go;b5IYD>Sl?iM%5Id6~X9 zhWNr+tzxb&guTrX%}A{Tg=`;UZ!icV!}cu-R3O$f1+NREf_P#$Kaao|s z{pKb>1AN!Lh5$2*F?$OHUyLI3tVLeCJ~McgR9{O5TgjNdT6b`M&?JGcEZX|^==BAA ziM+-=D!r_)?P@#Xhkg8@x-)z?C9yumAsM;{GX(S4+RxHy)gA3}d(`D$ko(|PHnV%Z ztiXKZ{)Y0I@ONiMsC^T0KPA{a^N#N{e$)2pE!ux}=8)YB+{1-J?&4);bJCBN*fX0G zcXIdH0f)r(gSI1|>63oK2UZW*_G&{YA=6*0T_5igqr+t<0(N$$_3*9W#xMkWcE;b+ z?Y1~tt;P7#?~28x?&$5V4To2aUbJ+p1zpAuxCw|&WWo4}b$#du{=*W#M&f%1#kqKht@ciXMPzZff-YgoZ*Fpr8| zWA;HGV7~6m?azGs!>A#*PU`IiUF-8S5~j1DX_eSeSUn4NK($04*$sI+k^JWvprLFl zkwe?8$_Av!H=JMCLxL7e9*5&@e#ZVY7faETV zK%bElTg6jPv*1mf8t!)l3XWCYdRz&||~vEXcAn6mV5V`9jKL&=yc8#*~NSy$B^}SxuaIGUm6~p}$xw?Sl^R}IO{(YRP|=EH@VVdIed#u@*MGVwQ31T;nc8yM$DB@{%QbxP zGGxbMZ<#TGp^UY@=mP#(y7GAqTOBUK#J3h#@-anXqi0R?j6&Tp%jvoD9~n9Wa%=nh zPx@C;Nn^p4xizsB+_(lXz1ydwjj5+3k9wR*13)4zd!6H5BdE0)#74#(%q_y`r?&VO)!v_otZX zBdE+aCF=#Efts!!L!E*}Hum)c$hf>*{qnN7bvD?6jA{0+w+V-5RA+M}U)m|ji{*(6 zhngGTSN5aP^+J{(awharE*-|Jzl3_Nv^#P^;I3IoNjP^>4;HJ;2))&cCaq+Jsw&0+ zk3bl$Ixv}=FR2=|NUBpn}d6u)0*J$)veg;g1F4K@i!l0t zlBgA}$aKlx#s}*!{^0Mc%r;yRD zi0GKEdN?%{sOfKK20al#f(;4uCF+WO(qc&Wsd*)1d2X=IR&#dx< z!WNDNh|dierUlIfgzv;e*93E7FEeeZcUY>3IVm6x<142kKd>)UWdrHQmAx~ZhtF;2 zS9Un@(4!0K_>)Q&e@+3N>w>Vax8we~MVcwX;;(!I?jrb_@}7lFpNOm|sVsV@3l>TabP28tB7%GPzh+Q*C+rUXw5Noa%_J8S+qu$GfH&VdaH+ z`41uW|7ijm_PHN~K^beJHtlp6Fgm!)KWJsSaZvX#0Mkn)KXT7X`(Z2S28Hs^hbQC& z_;xy2>`emmmM$Sw?-$9j2U|Q3J@_`@);iwyz7;1=4+E8BehSZaOwTn3t@=w&Wy`%= zaNLS&+-pC+XdXrGC~SIN&4!)|U;EoFN2=^4O5F3Xx{F&R1j+eOxn5@RSUu3Xi>&)d}O8VknuQ_3L>85jP@FntrO2=)s`T zEAuw?@jC3@{2LcevX4F*y8A+4i_J4@+xrqNIZP=6I?_XLF_8qmz2CARU@{qvUoX9g z<9WC6LjDH1H~`c)?|{pdX~}8}SxK}gyn%2+>tV-*s7GpMPKavPX5py?ss!R!*##w% zqtZsk8F<5K535m9pivnpxd~NDaF&bS6BET3HDoe4lFLig2%zhwYmj z#d+R*tNGdH7ohGO<2oaH-S`nj%y7Ci1~Dqn5@MQg))_2x9K0Pn)Jij?>&!hGgk?sL zTqb0O7@J!Rt>!Rs`@2)bl_0Z4uvlK*g zPdLo-M!mH1Z#>e4wNoOp?E@#{a(yfNF7EW^SU``VJ)$5Jq{?bj(j$iXx#@-mG|{MX zM5erYrOMP2@M&*8?3+_vhJOy5B^P6VCD{SJc`|RIHkW6QY0EhE9`Q=BDi|ZQ7B$Wh zUY;!=$UHZD=!7b%{6scQ!)HK zePTbc3YN6Im2?#zfpy(O&~FzBaSu)(hJ9rD@IjkXSYQRp4uIb!oTi)E1G;#T%VX>& zo21^Tx}mzM5#g- zTisuk-Q;qP5`aYPB=zWh7j`2rp^W1Lvj~GVM8L7=PjhbJn{-*%JkF}Jd30~$uYZ!? z>fx{p%5MtXGC!{!<6(UQ&a#MWBgBGo#o{QDaAg`5{-Yqj6|JOzrd&b~dSGN~X#dGi zp#P^rkQxSjeY`qq9@B%b-%uYD`1R7dIO4P_CBV+wEK3%t4KxhVJFhc|btFH`fUAGo zt`<*=0k%568GT2xUZc@omDlCDlnxb|Cakv$P`Nqr_C&wJpS4>{*9--23D~1lgio3& zVAptvN~y3V^1_BLoudM0>3oBgTxAbT+diD_u!%ZvETzUBZh%!&Ho&aZh#QIzzfSr+ z*0l8q1=aW28cTM)hDvwyK+_;ifZjM>-{8%ok^JmSOA)Of-*<7QA3?>X-oW;4q+Bw( z{BOIK2`#rsuyZveY{UG?VYivhsgHw!PMZ$TB6}5IQLk?HE9pF#S;KU=8q5v{jGniz zP%`Ax?SQI_Q!vQsoD$NI;4+%K$_1YFW31_TM7 zZ6l>Uzdu<~2ys(lQ7!eNo-Ow@C4UU<>iqinc6E9VuS9oy_x8wu)8F|S=Hu-V7R;|} zREIz?ZYqBO)}wOjT{x;%qOh*C@@rqR>2&H}Hl2wNk-T+Fbtz`EN!xt^mZntIGZXpo zpyR)~qFt1=BWWkkz$!lDTF)rl`T##KM@Dw7)IfPdar@RjdBjGG0epIWMtCUl9erSD zVhTV6E?7GNLbvy)57)snrIXoaMI&9&1ipbV{2tOw4&Z3s9fBzWh`F?i7;>Ry`9{T{ zn8DHHX0dZ6uQk;G-4rqev5UIt_ak^XBTmW4`4WSA1^$!{G82hM(c1r0 zN;id`h|YlY5peP7?%@C<)k7^puev8n;SxV;{5d;oI|AQ-a`NZO zk7*#gLD7tUN>QoqXU^`{de~iqxCVr&a|A!1iKL+C7o-|Dzwfk>i4e{Nm>C$GhUwfQ0wP`c?Gwdirv!l~$G9qo^*D5nD zn~<}j0rnIdo-gr#t~6OstTvU%Tt)gSUZ}j;QfDx~lN;(Y(4werS;?BRd0%+Tq8=R+ zjL*9>av*ZclD#Y%jc>I*(vKV+4`vp-;xs4-l!#sl&}HWbeW$+#;?naYfDS7QbHW_Ou9P}Nw&7HpY{TluPn{5)uA)Oeb5M0w7F+U8ie=*&xYTRFCT20kEi|Vf z-qjN2Kl5+@+|PVx+%+B0H9J||{dwsq-_lOrf!jXI?xq3Qj|QRE{h(W0lpe60ehhc>(DIzQqbE15b8o?@fs2NTZ?vZc_|*cwm=DT_}-N!6pC4mHu^ zx0H0j;#(0LQ5PmgF06NFY?*#u`NIAun6iBG2~;^&4;V{*#{gKKJ+TCY1)WAtu_}MB zX_Rh2ftlt;T=?!rdN1vUEwe}0SvhGMXRoR2x^cR~)b&rf5V1Qhp!T#{0Xn6AD4Fe# zbN~T-RmQZPcU~s7j8dmtd9BpPnM1IF z4%z;G02!I=Z-+S`FTOQxC!VR(F02lVaTA2hxA@soG zvW_0`iH5!1;X6O`b3gMdqZ5PaaCyo&aPp!|Bwcz(Y8h}v&RzoJgA*GunBfZO9gk#+++eqhwvl5s@mIp2qbdsfbDm@lG-xq^oiSr zI_@vZ%f44dV;eJmbv&aUD&hS<>C}>iZ>t4Z67Vvj_V`)S1E9ft zx>5uwSTAZFD++-%?R;XWeTaWl09G*05ehqvf3!qX@-+E=UFm@NgJ?vwF!z=qK2frM zpAQshQ{J0@Xvdz)?07_8t;C5-iq0Nn52$F(7YugOldL!tS^-yptV# zvMiK3gIdF+o+Z1W#e~1yhtck&9Ctd6#$jzrETzV|Uy$C34}kR$|0Ho7E;Cdx{0KpY zo;7^0dsUI-SgJyCCv=lM8G^?l0#1;{ct_pl?$wF42uRPZog9&v8tV^yhp^EkurvKP z7B$C8HidVC?sPE6?NsqKn{nuNH)7Wqftz1${!6p=;HG#sp-pTfdyg8g^yz#wy5Eiz{H0;;mozgJy!~rhp@%guJ z>CH4^Mw6df_WTe5Y16WD@>&ss);8HWv4)VzonQlE)I&wiUurpxRq?sEcrXj(hK* zWcI8mGIi9`t~N~U73qdb0CA;wNEPC$fU^MQ6^L*{K+eh6=RPny43Je3;f$eVWli@b z=3DYkxFcxR#{T1X`U~^3KygQw-IhWHlR>MKEEfQ*2c{d{|2aHU7vqnGhp^-}*_kX) zGa5I!-uM+^YlD4J>3fJinDsTBToC)Ct!3Uh1YA$^;>~3k!L9soLQjrvj)u>-vu7R7 zF7NH<-8Xg#Tb?eveniFEmY-WlsF}@?$nMc$;9UT_JJr@=phD?4CyPgX>d_aJdA@}O z&e*}sF~)t0Cfn4T4u?c>c`mxJM+}WVb|T+85e3&~eToL-`Xn3pd-{M}Fx4{oXK;4$ zz}M(-_3l)i0R8W%ufwckSeLVTdr!Q}6Jz|FF#IMCX>xWlo3)>>)^||IyoOW|mR8_C zt!1!WVs;<1iza=x^Hm5>&ruviKc#OmKLsnEo7B; z1YZ+l1%2ARf6rkfP`2PdPocGGO9}{l(h2)B>_Kq6w?`2L*Oe@Kf4aO6MI2RTspq3` zna*hMiFXFd(LS0tl^9nEGsa%9;ee8btHEU${u)j}h@FCLRM1TmtzAjX|FZH7+yEM& zw0yWLC#SnwZlHHuUB8;myX(fevh5;uT0%179MC@gNL6A`8mBv=N7~d~b-*YUbjC2i z?!b}iB~L_F4@oVLDa3}|UUI0fJgh3H7rvLEzMFH?TzT8r0e@mgp}z}L)KyD*&U{fy z1JE5xcb;tMb!C~tpPusHr%TP&gy#6@-qf1^b0cY)A`ak;r~5 zw$FU$K>SvA=w`})&sws&h#8y{w~I-&ngluoxSa0fO{;jEa*-W1IA3M_(Qny2tx=AFHJJsWm{yajlPCM}xR zZn2XvV#e8t0xr8o@=w^<(L<(nVOcU$H-+2PreRm=KPmWlACoaP2Vw2w#Ac{=rRm$8 zj`Sot_RMN}lbkjoSsw;=blAxvbHu+D=EBgwB`oA1r^=glamN+<%cnmQnO z*G#IL<-K;4v~f;G`ko?}RHP2>TR95mv2C+QVw9YgMe0oq4A6T>pk`TmYL5cWc75-? zug(xQ%~W*xYTCR;9qb5Xw8jD=96+4)jAq)jekfNC)XhlCc(!L%*lAjYop67f8P_Lt z3w{i>a|q_4ncl3q`0JH`yB2cGf}v_tqQjuWq$wJbL>jZ<18!Mh^lfeTiNY`o@hPXT zSh{Zgtr7LUB``Ct1ZY$P+k1?{ykNGyra*Hr0mk+5bNSR$mc!F(ftHX%vy$E64n4Dw za(1La;534;G*h4*pA$mUCm5HP_X;s?P89u<_3Y|qk1A(+yGCQxWHj+4iQj)pxvXur z5+;~l-y>MW)_#N4R_t&ei#&?inij|0F@a)%TRgYYK|keynKe3APR(V8-Ll8bcn1P0 zHDZnHl14~f>z>4Ce`Mt`k4Qls514eyOqHsFd#_@(WA|I-*1@ zZ2*yqW38udP0rZ$?C{A3-TepuP{ova=gbWC?p8OY#(6zme;C_`AAW&c5we<0xqh-X z`1f|HBVy*q=gYRT?<_2AO43e|8*xFd-nZ2i1 zh!@p;b<2+seo-(guY0U#Wy`Q>obGNxw>5kl-IuyfJn$k|0MJ~}uNCVr&yAF6FOZ!TuB zO2B1B^c_3mz0IBRi!5U6hR7rA#)52R6!4~-hNd~lv2Ua6?t0}mlo6UoT3+>63_Tg5v zMIm)7zbGim(K}$~@D#?fRhSuRg;bYoO|2%&GFmon;z25=(gsl#);H7+O6?Lx*G{ns z_JDEkgSMFOI4x+aCPBk$nf?;3vNaGnK;5*H9k#o|Sf5A;(3TfE^Hf(snw|}-gt2uB zxqH3VYh$I;&KDgR?=6H0xVxbK%0J~0fLXkCp<=I?DlWBIy~$tT_1%R@9ec$W2n}DO zeDXK=BYneO`8Uq!n&#ioQ29e&;nMyx-G&_Y^(n6z)lzJ9`3Lrw|G;1Rmo`h9xBHhg zO8uqFDpu{U)4d62=Fy$et;ff2uR>!Kn+Pi@CaGi(ZQH{x<^7QvcIu)IAu3Dl0P&o6*(-v;Ay{)uqjA86Vt86ER+tIP*2C}mu zPr8W^g1V2AVUl3La9sk#0pVj$+XY9L!+X+f(|-?dnQkt=JStd0q9sJw(YAF$34V<- zWgaed%!1u1LKb9;ScAZz?&%<>K4Dq?52y61$a845Bf0dFgBiY=3ow1=9WsKQT0&hM zU2AJ*om*TC$ZGuK8lNeH2eDul2eH@l3x0$WClaQF2GnUvD$(xiR3^{P8Ps%n8qLPs zIS2Z3-sIwIdu)%t^f%>ERP3d$I{8Uw@ei=Em4irLh3b?TBI@qtT`RbPx)}QN3(S6` z|746%GbqCx-Q2D}Uke=TqDeu!R3Kf(iUoIKnh$Vh!*D$+E3 z6;2A2Jn}lWq$_e&i;ZNZzzIo+TXJ`SFcqVEnUVn`FfVm~S<-`Bc-qC3$Q%Rbv0;Jm z+y`Z=#$>e>PO5SO(X@gX)MxUS^2&BUk zn_R6b)sfg{A+sm+BUFQ0;E81; zX-eKnqm`}ao8&*FO_FVr;bwHGY?*ehacTjuj|-wqRVaZoH@d%GpN8OsOj2zUpJd-6 zz9a%YiS8`e-cxRx&vGn8U}hKnYfcyC&DfkI!_2B>Iw;Wr;7Y}1h-@WKl#OZPtvQu- zvTctzO6gs*q}ui4NX0fi?oj}bY@2%AY;2ul5cS1Q|2A6A(Rtqe{GCc8`$Y%YZGPl< z%yerXel>WLDvE_4vhhD{r4a#xnsJ5T8I3DB^VT)>*j7}%am|jWKd9N6j8~b%eB%^Z z8(9whgaI;LsR>4oBv;5zPiD%wpTbyr8}klR zrNDu<2`>g(rC9GdhnDPW5_V&$u*q1guak z7V!z1klfst`8WS$#(6CIvsb5H%MYWqOR1Cac0eZhATfia@@v)G=2^A#V0{y}-Wri| zHcoq%^oYAK)YvYkf$G5U_*c`i+Y&gpl~fs0T1hKLk_coaH>DU!LE7gqVAaG|`no>f@(gZ(m5_gXPuBC{RN2CyG`n(O-T#+L+@G9H?kU64Uel9tWXrO8 z{r34Xx-59HWy(FEX@0cnaCj&$i;n8637uT#wC+?md@fOPUKi!)q(G%=Xsq`o7G(nLXCzJiC0eGaS7ONr(ANVTwFIenCb% zo&oP`L$guhTKbkhzenbFi1d|UvImH7=`c*wD0bZ|{7++qiB&ip@31|nObZsp?fT>u zk&Vsi(L-IPG~j)QUtwitGo%yMgpHMc=qIn(T{dGTT=mNE7+H<@;CqTe-}gP`Q42qK z`+x@lE4r1@1U2S)4^*qm4HLG$&tOf-^JwRc6ux>VMR}v#1Of;H*2ZED56D@r&o9@< zVzttVFw1pDldC~a6z|-v-1kLghhTnHO5i{0T3-^_nujb5HLO(5uL?SVxg z8atRozeSAVm@7E+pRLF^yn{YyS-Cvx!zv~u3g6R^nCDkVc`Ovs4g~9g1I4gi&(q%8 z%-+XjcYC5kVea?Q$--u6mUwY^0Jz8||HA@qNYnRQho$G2k7Ntou>m&$NXf1+8;6__ z)Mf7P^O7w-m+7OoMI5YO@{(72lWR~#AcIOT`L21fdJQ~Nw=#lZ{lF-P^#K@j(=7f8 zRAp{KnYAhNMnBX!UmIF%edaVDX4H=1J@e(-DP;DqViHs2z|zbj)cQ9ez&hqUmjI?g2jVC+GSpEF+MDp61{IOS zJ~kcN(TEk4Y#+~@v2kG@Js);}ptd98ozOH|o6wik;DK@Q3An+=&>JH+(AE;P*f#7n z*%teg*Ne{n@|3D^x@cRe^)y@1O#qvg1yO9DTiX{7`lt^Gbn-#sk+g&QWh<*fv^#u7 zv;mx6j&XQ%(2&ygfS`#p%$8 zubIM+Wrc8dhL2}eaDde-$|-NG9}@A`MkZpD&t@KU7v8x(h4|TLHD{IFFR)*eAAfbd za+m0G1t|f3kb-bXYF;WaFzSj?AB(ohI)TgfnpgIu`o}tX*`=S{@#^mh`499TjJ3Xs zR}8O%E;e{jR~4pdt2`&FlxL{@j0OwgBsxKm?XpAY^7klPy@|a)XbB+lwHhQ4EPV~) zhn#h9#b7&F9EE;{-P#^cu*&v(8St%mr$mVt5Cm0&c7r*!_->VivpQgzNoJT@W$!dP zU0^AdM}vt%A|f0np&kJz!-=QuJUDLAJ~v#Wzv6Vmw$wx{Z1Zex#0icp6X$zN^UHe?R@}xlgJ-=Q)a>>+b|xR1sW4VW zP^Nt1X0}Jh%CdhD??}6caG00WlrWCVq5D^NC5C9!?W1&ty1hB&Sx0%TwSJlUZhWXS zvmvpo%4{i&nZncrtT#%%g0V%FzE;LI;cZnBZZQmATwCCQ%5}mKI(^7Y3|a*=phV-T ze*9`JN;CUlL(38mTZ69_dbj+syd@u{`{)xD)7y~fkfUqrZC={#HB!CJH#na7QC>lA z^dsr2elI)ho+HEjhXsBIO(HLD#aR8prR6coN z!cKXB9s4)QRR0 zJO2v#i*-v)pykNJP{s&>HVocH;UekZlC!a4)O0+jvPZB=N?2I+O8JVCt_~qChCF}~ z*#*4^;(N_ty`ZhJ1a81{dA2aEEq-^;pfgm? z3ZC~Te_4sx=7Z++6o z*?Jyms|N&*)MnRwTw4WK3RdwoLF_HG%~M01sq=;@wMZ&0;OV%o=dg zX}+!?OcfHdv1EJ2$KvM#jD4}v29R&%@r5xbN=bG3*n~irvi=Db27_(@3Af zw7)zStL@}6SbJ2{(^d}Ejm?6ndpi=qaU58F_gPCisB8+k0Y1yV!qhyH@vnXyfTBxyXJxsqb!tF+3EdR270weB* zd2oEdm$MWj@XAQsMoEc6g!?#+P{X-~!BXVD?t*#vlV&XFmyvp#l-6kxGiCz84_^@e zgVLy#^_BbUHvf9_Q)U1K_f!twD5?VHpQMnANC?=Xjaj5UcDDJ)R*H>Bxu-m(8gvM$ zao0H{sH29`^pEB9q`m$Hs=&%uxCtT(BX?ExQiNekT5;BFaCbc(CRJE>ayJ$sMRB_!Vun1;xm=bPqOtZU;71iXLv!YIZ z*HlIds0Fi621PY=!yu9%-6`G6n(m@(s-em}$N(`-#(_wJ)=uqKBtd-G_DIuw#QKw? zlc?KCxhkXY=C@bfew(_vt-4!lEY6kaP!=ladQm)Mn&jj>8SJh4yRT>#ON8CD9_I3? zCo6wFfyK#VCHSy7CQ(Dk}_i|!m0ds>+l3!M>rxys?+F2KWdE|Ll+ zelq^0gegpsI!&YUmLWCnH;z5PyR9w(wn2o^R&Ye7pW9QmV%|@$CBk-6sM}3#%&z%` zu50t_o9sL_hH#1JhkYo809_1H^|#pT%LlB5Dh^N?{8i7bp{#e+C$lg4i@IEAeNJJ2 z9$`f%NdPuwgG3xCT1lHB+o&X9y`I>fV$l^XUEQ`t)8l|gpP++)vBc`T67S6h@BX}l z0@gcWpsz#Cy6H|bkFRB*w`^vX&&y1@BUw3!28mH>;{^8A;6L5ODzXY46l~Uif#Hy+ z#}3F4Zfhk!=zkd2xjSk^(ty9`vYmX<#n6O(+4I~bW9CKxu|FGhXOx?;QwOkt8+3N~ z39yE|p>pc(0GWBWAQl=(Gtvx&(6gPW!>TcG@}IcS{={1Y=h61$kU4ujrJCK6iWec< zD)4Txzpb`{!c(vxILD)y%2!g<$la;3w-sfu#HlZu=tI}^^3Jpz?do{Fs+RQ>$T0DEb(FC99wE!Hr?L0WV9CZlx4FY2K0A;%Cs`iqxU+=&3g?RNg6-A_%e5Q z@w|3)x1P5ZT>wm{G)ZNK>dp%FfzE1#ujMhw)byot-SGo*x}o^VhB&4Dk5XM%N2}Y_ zEp3^>$fCfr&V|Yk1VGjS-9uRnLKDk6>DgYw@*zW~S^}85*b^Rl^~aVgVM~k6=~@wD z!BH!s_EWVv+b5j?&|;|KUgQl<&9n0Wkhz~y8ESBA&0 zVs`9=zhMKZyUWv9NQsC25foMWLmTTmEw0jR%A1}kI_E649<);zXT|a`D)f?9e8GOG zcQGlLR+$v~f?o0poRVLGw{=a6>+8q%egDYZCVii{94uQGI_{B^RPf=xZvCJuXi|Kt zT|K}YjwupMN}(fMbf6)N?CtIed=x`+^#8CBqQOrt|4o!`D z^oyg{g=9#<65E?}=M>Z+8jV$&rS5xqx6W#Ms@k}Mk{F{M3ZZC{`Xg{MVL<)r{CF9U z8b!B2>>zzD%EY;!?ZHeAqOK`BVunIty2qH%L3!i(SIrblJ*LX0?BfXJa}vQ>8{v;H z4-ki9jwrZ#Pz40l>?&NLBimk%qQPah5+C_fn#!;EBDx z`)A;<=q0hE!~XZc`=npcbpArTc^54#I?BTrj74QjfqyOzn-pd(jI+QIq%Y zi}G^lO2+oxsA!idqfJs||HVq)VGNSENr@gVZgT%rjVh8r$~RPu99mBAvwd`%Frf-C z^kTs`rpYb;w21R6Q$(UxOhvYvl%Kr1xgq)9ue`XEq^3|7it`ujndb4%nV z3+3KjQ;C?n*UH`jVjs1o?0P6J^Ct)zJexZq3jM_L(dzogDQa83QvX^pn>o}cm%~*A zPRG9PMPS0S|GoM+j@oQ-dT8+Z6 z%HNhRt(#ENmygXP>bLwWKbM!(+O4n3A+wU?nK%H8oO8@!qBT3D+N9hn^C1zf36Iu| z$lSinPtlUqEVNE-q*YL#db9KZtDGte*gqU$n|H5LU-U)q-s7eFovynrcx%(1MVypD z2_$QFD3{Y7o#3wP`F&S=(0R*ghjhD~QJ+}M3)v4kAb)At@vv;*y&mhw?4tBE@cSr& ziQ#ZnDIXv>upOO(#%TvJ;itm=B+f1AjvPnsl#WaCu(N;M_vbYoszQYmw3h6Z_-&mEh6y{7rP0Xpt)2uHom zH`P&k-kn6uu6qur@>4O&b=13MY$IIoX80W{>S;PyuE^!yW!+3<$Vr#p5gMs5mIGKG z-1Xio#+ZlYV{qvNOeFZgzGdOYp)g(#g$Vi@_A7O=UO3yEQrnKqj2!iRn;=uTwIo<> zbFZ!)i&}i$E5G^i%&z3!}EKl-PYzVgmk_#1^rI=i8If)F^PrIB?v0@X! zH0hVk2g(UW_;ZZ>T0kA7G0Mt4rqWnd0?E32KJbC}$gmH_Ser~=djr!K0JnZ)SCC0b zDYLZ8U|Y+}B)GrDz-p`xD1{@4G4k}d%T>oY${CzhrdXw>DiceLR_ToGCr&q)!xDqG zDH3PAt)yFnu(2?by!&UeOz}hWBOTf%041lW)NDSLAtS?_%-r=|ai~aaoQC)h-B;j9TNa$s$*uHrs@RIFT`?8bPP7%kGsESokwkVr`v}tTOg=fY2r0(uEPs7LFy5Qu z0>zhORuO?lSH&Z!J6$MJ&;-W#-7By9AW1iUBj>>^Se^~sS zsJ**3N)x@D{0JE}eTz&nY>X0)>8Y#43{jdRAlKR_Jq}`CpGB%vxdRk*bgi{~65~0~ z>^K$OrX6q~LKDAK^SG3TB1+nGI`jt82rMJn6O{>ZHpH=*itw`al^`AH zLRTKjb{nAY)JfIna2qZc#Ghv~t}l-0_so{J9Va|oG80v!6#d67h`h$hXppJAaJld6 z-`*2M&Z9EH2)pq}uxJe}#|nD07(dp!^wMUZ-P47LT_Qj0;RZ*G*Ssx!*Ewki`BkdD zwsn+xweOcYd)U5Smm9k+DKj0pE^hLs{kW>2^3H|5TdKMA)J}!Vv6(&J3nf_DOkmU_ zfF4^GpjN5`St23SS)qsnvuy_*E54HL0V2PY=t&if=&IaL_YZy>vrf}w+E3-GG~5^x z7rcW~y^X3rJ<}qlE+yJ3_~~e^3Va$&eD5Hh7sYeP#=h|CQt1ksToSO#zLmOUSn_k;7_E89rn&}j^m2GvG`ojYD zBXJfXh}GtId!k9t%Z|uH_Ss*SvnjXI&59KU*wz;^UW0AkcBGyl5-XSS%i93(-Th~>=DK+gm zj3nO1ftWXfFs<+H2H9FC$e4oBb>$1_7kdWewhi~Sw#b6oh)8mQfyR}_2L@D!%S#Nq zNX2!e^SX=X51m4r2A~cknPU{6&6FiqCBM#lYRJ30b;xtEs2^iHXM>;=927*baK9BY)gm-Z7G$9}D*Mh$WpNx% z7PB&Dg-lLRB%jws#}66~bC3^kP`Ui%#Zb~4J*PEq&DpYYB zX#Jz+MRetxULhkL{ZG9c^3ekV0&N+E?D&_!157XRO#)Gn_FZa=sG-UsZGXI}P1*N( zI@(>ny`j@Weps_7`a2{#qGo^c@rc{vYKa3#!x4tX40*;2=#y_vU`xid;upQGu`dkd zK=h5i6XLq3_nU>QnaD56yUG4U_9(;FOn$W$!&+IWo$)5zao`V@%iNnqAq!ee)h?rB zAe3ws$v?mst#2EfGq368q>ebz#nPhM^RRb%J&DMnn`YjZRqiZgq8vVfZpXsYomkUf zk^p*g%eR3j9D@=76-jOI#j!=-Pg6Yb^8#|*zH+&apPi29;ci|Bs&Wmrwm&CkItu+! zPTQ8CI9DhJsD#!0sx0oT5}i{Qoz2cIY%2;mZb`~rlavIm1G3YPleIO(>wpH4<@l@Z zV>?!lSw!~#%emqyFZ;*QRro-A?x{S{KW)8p-UmG4K7_;{-;sum5N*l>i z*>&xg?g)=){X;g9TJV7+U}NSduoJ>02kXpHI6-3gF^8{{`7?O}WYiILM0^A7gUJJW z7&hH1LJCIrPF{pS1@ss=di!qhkz|||LdY^G58>9rKw}?{eK#f4hbk0tm}H6Zcj%g< zz&3NS^NmZL%7%_IBz`#IGS}=c&7FJ|52*Q09xo-+%#S_I zG|IHM^wM-;{fT)jU8HT+CYo)q4>s0xb`;CDe4Xc%K1pKIT*;0y3en5SfXHGP`$4Zw z3MG;K38asDHnu0eB~>+Jn6xj_PjLd|97CMGNFu~GhM5KMAXp7J4#kV^v#JoAu1fgB zWdnHZxj3y}%MTH~u1_#nMk_%urzUX2GY90b9!9fsrdi^+Au#R53vEr<%JnagFp3R~ z%338Pb5n~GJn}i_PK)U0XQrm#iJ%nqJHte&+>h}$t}hpKRt2~|ru(BwrIu4{HIM5+ zFq@A}jtnNS>ktwxHog71I*c$Ux3uW(uUD9*w&txRNHE9LPKWtZp0vd4cF-=odC=_A zF`}-$du($yJdPHR^~swIqQ%^{vLx)LLOME$y#r}mQuwYomLOX)b^$N)aBCjk{CRP zd5SnwH5H0d=@Fy{^+!Y_;K~g))pQAgSdj`QqGs2pqlbvx4~t_VyvHKLc!|W4A^LKF zaFhT4D$Gif;V)@N9NgFsbxQX_9#-AgM00a}dVc~*0m0fsTJByWxe3J5mf?7rH0A!} z?_gStEiOEH{wOQQzk_mY=8wXX9X@8)?%b3!YF_Un=CEX1orD2;RCFOk(D3>(j{_qK z6JS4MNEHjgz`5n|1eGuAGYvO$*W@f*N8gk969u25J^PctKDnCwcg@F(oe^P#;PKsI zF;cgLl4|j`+;jtybK_r%>)^axA>i(#=6UitvW0|76W<}MuFbx8T%NAZnSi9wJG;AY zromp%)hTd)c*OBiw;+=QbkqWMr8l(jGnzk-vjJxg%og^@Uo^j9O)6dXyJC`!&>&`Z z$NN>=HrW7d0LCjDG_9*WH_SL7mFCm+-G?Vm$* zR774CxPNc5f zfMEgMvn|n%b%_!jt+nQ`PH2!`5>!*ui&zWUevoh@wgnD9K>N^F2D@BtELZ+?qce|X zPG5{ISIeg2LlS4m8z8btMF_dZ5{GQajYhxIY!JG>MNXl31S_5`(O(AYK1Lq z$1xj2j~^Jm5a}PFCw~#~p8vv+o!&bK^I|uNjB0bbWMz5#w3q}a5YD4R0u7Vh3VA#C zufmlPZ;>jl(AW=?rsDJOIZ}$z(Ds{SYxmI><9-c1`g$&Jit#6@= zwW;)@39sL1e!Av~mx1PyO53URMH2GY6tsQ8q@C=f*9B6k_Qz#gV zYI7&qcWABZ&8h|~MPp6z2bAfN^ajp=oj?@_d5!>B8UxzU2{tjr+ZOn$NeMz4G6r!Nv1gWs-$d$5ymky4WjGsuQpgD1p3FF*}u>F|~_l|lvM zUcts3k{A`>rs7M16F2Zy(RQ$iMuD2Go+#3tK(Q4LbNAYA>MQxB-e6r@1Pun|DqXpc zJE`QqX*$|2tq&3&uTC7KvR}of`c6BtFJU^Dp0%Fcr_y|8*^I?-Zsv@&Pw6@0WkzQm zg&d#kSzV3`3?5OlkYc!M_AoJRGLPp z-e;q|_J)7iNiuLKV z+8cBAGG(yD9m{(j^H!rgq1k&nrZXx9C>lZ(^FfRNW`d{wCt{eTMS$8PA ziW;hGhv3>({m`U?UO zxF7_H8=YGBkjy}$uSgKPGzg1-4zPDjp~Hu~agLJ5WgT5q$`o0D9eHQ-9SM|u<8C-| zQ`d9PNkFGpTj`coy~UmIpEiRe@tV994GZXSuh5_9Y z*-J#uP0$gar3*2~NIDdBpqKy!-Pi z@lPk{uSgY@)R0e|=Z3`lVFo-dyuvfOWb)5#`{Du?3GEXT>|`4=(6S;fBp?r_OE5J6 z0i_aJg+%;}k)7jRZZP*(1_y&qmp~2A==(}fV)X{jMjheNy`e+4~}a=Jx+aSzZ3io?=q zAfE?I-uhD&6Z}15EtYCII>2fQ-iOp;k7hlq@|-+vN#}4@AW#XwE9nILmdzYZRun}7 zD|}zxd?6LUn=g9WrIvM5{Ld%Z#Q1{jX8;~~ync0rv!O^U_!%q4>}@eTWY*ux#>;0h z2|8j$6T0~3N$Q}PHW0%h;#L@(G6I?S8bJaWkTn=xKIl|1>Bso#;JsXnjX&^sN_zGE zn$#aa&~q~hs3@NNk0Y|sii0tgJgSycFCLt;u?l#1addM7j!kVUB~K9omk)%Lxp>)S z?s)-`N|8C0ba=^t!qGzvE3qFBs7`L_>PBSJPyW-%?@j(^!^C>SA~2PZ3zcxEUlxg)w?|dK z15n|eJ+BO!;*an6&w0_xoVqf%-%1E#VO5a!L z*@RWF^`mFq-TJbwaP<&-gpimMU{f*+p1`Ys(HmpLasey`AT(`Q1Rrbbv^0L4BwHa5 z&+Fn=-W&F3mSx=y`;7&tYaCEbS`=qh>htee4oWRk6NzWmcsvfE+Mhbv0AH>j2%S;T zBQ1DyvED$-Y_EyQ9NViw@2zhhI5qzF9rT9hnmGlt$$=80Gl*0pzt7SC z(n9vLESl=h=n7AKVCG*6b!vI@v)SB`gcrUwJX9fmn?CsXxedqNk=`=14)x3D{Y~Bq z6|iXfB@V{sPNZ4q{Pbmi_i$pom$qm-6kEJrg;GG<^-u`~Vr>(z9Y`3Zm6;cF6_pv# zd=R3CTCI#G>{0I^eF$M-Fd(MUwwM+>7nBWrjH%1C_KR!R?heh|bmC=NFm}Zf_N>H} zzZ$uw1iaxAH0Z`i*0hk%$otZ^WTz=dcpv#ZGBQkj#10ZJy0Kaxo1uhXh!rX<8w#2L z-ea=PJJ;rF2)hRkuqZ*B$Q_n1uen+59QcNqlK0IH=gkj`@O-rLhU9B1Z2b=!$B7VC zOm!eOB=>N(n|NAyR58g>Ra!%#Y|?gb!YXVPRL4(Zfl7OQH0eLu>F@rXpZlpryQcaW zRCxF@HBm%%Ic1QIBih)Cr^i|L-6JK4MUdTc_=#ZW0OCpKl1Q4EG%XzR(*`DFa=H`q-f@W zsCo0XMp>3bJ4Su}$hHE8&zd@(b3wZX#4o|w64Xyf11|dK^GD`NI5)JiQolReM|K*= zO=3n8LznR7aD!}kRbX*&(!E~MlTA@VS! zKfn+9ha-i(&`JKzr@$e{Lq|h*82~dwvgT>=Uji zwfM#SNz}XKaRkY5207Zuc-%z)D{k_*PL>{0n{LxY6~Jhp0z}7o1m2dUM2`J<#IYJ4 zZMX6xY}eJj-}>z%WTlAA@uaafEE&DfvO%!>hLAupiqf{kE6f_D`@9Uo3d}mScJTvD zY@ixoo<1V*Y>yYje~KZVg6*NLaRS5}pGDt2p#Al$WSdwm7D8$^w9r|pS|_{2E!5s2 z;G|7{5Q%j1K@O0XVnX}Qt^Bbndtj&1p3ly7ku{Z@Az`HvrBhK{u_@@YJSleW`+Kxa z@>zY`+hcl&Y@2bsJm%p5^YwH-gwAy}4F9}rqR|`Dfst;>lB=>#B79YgY6KO>#xqTb z^BAj@6>v8zDR~Re%I*3Sl`Myy;Kn)oq>PtsT}L2qrEU-pYVQVv`Po@;=Uhj{M4d^o z?lZ#qC7^`26R*z>5f+bYDgGLxwnN#k!KUdUDJ?m~*pO!2Aw#%4no8>?L@)Jx@8Mn2 zjM@4rAdD}0X=gX@c@EharvD-v>-K#Dr?OTvX23{-@?YB&K_KA*=p%!Ht@sqM;OSQ& z_O!3WlriqheVVxP7J$HXVngf1!3f)~F(d7%O@q41qy$1aLs5|G;RrIO2eX`El!mG3 zWxO46sZ_c}ly>q>NECj$`Id3srb+S`rp*bqBOy$exYpOt2tZTVle!zlFZqI5EA6zg zti~r17mCPL{vi2AlI^5^qs}#R&pkmqq+BXb%rJNhLAoPis}f-X?`N``KN6Yv6HSW` zmAxkP42Q~3`;1ts#-{0_gh1gz{t`r-NGq8FV!lM8hbQ7MHIT`GsHm*%1P3Z2$?ZH_0!gI9- zxW^L2ELTvt9opA0B#u~+gULT;tvZgs^xiHF0S_jB(Q39F!7eg*pGJj3;6*3<<@H%0 z+C>9jerlJRs{~W?18su03iG-1^lx{AlbDrI#f3N?%?3r;hJvlBDTfz5lzS)Ghcj3i zP#8q-xJir|V*Z46rlov){87Kx?d^8o`K6zRR9qW!Kq@mw5|88)z&9Vqxf6-^H7d@86;_U7iP3(9!Y2^78rj1Vcl)ZChxr zw3a%uBj9{2DE>Bd0Foo|co!RD1XU>VNYc;KeW`fY zw{sPEl&hi0I+-1}+IR3_pqUL;11kr}pHdUX7NDps&h5J&WR&i)U3rRCa2lg+ugoYj&Z!KrME|6@Vg+v4xRB zzL&B2deOR(y}<5QS+a)wP7-47KNIg2ch7!^T3t%j6RH6@hp{KSqg5XBPxfPCPlUbwiQ`%}G zDUp$S<*h~a>eLyM)v@aImMF5SwgEyjpWlS@L5j&Xe`;;JKcB*E^KxTw#(YlTuCb13FU6r%96l+ngTpS6RcU$-x|kWzvDNt$5rg8O{wH+w ztbTe9jp{`gINAVO=b;JQFZlsp$$xUMOtbk&b-ubh_z*i|5-qcq3U-Z&=-NI&HEorw zutMWI$R&M;vfw-fmrO*DQFV<~4!oOXEOc%sG+omi5_->9aD%k$A~n5g#@LRIlFAvs ziHU<0ld&>s=%#9oiT?r8!8ofqQ+Jw2U?;)Y(HO1(9L;3FIpq)AeSwD=()8>C&MeTAS|a@a zz+L6r+AaWr^*(P<8>BDbk^;IK6-mB|?bG&Vd09wsY97NBNU#Iro-833Jg;nM47ch% zFm!Y;Bn=ofxm4#7+^4g>DehC&kR1P#kZ`i=yr<<%lcs7!5o1$m0?!&39*{$j#otVN z;HPe=M%z_Ntxt??VYCC`yjuim^SFdDEp#!Qg<+T$8$JuMOMizB$3-%F{w179yQMp# zc|t9+H@cyE*Pp)2d2|!lB(ai(@anbn%oR*)5Nsg>Sdl-fz zw~k#>13pO1I@zB2T=PD+(|`p>7e45DxHCK+|yJ7)J|l+fxxpvmc?B zIZ~!F3Ee@suoNkFjDt{#v^ptg#SR{9NOh}}QSNo_RV8j1BnLjU&Y1PtpoFhyZl?-) z9n&EZfnYoz#;|7Q_1T$9?r<}$a#Tvgh-AcQW#8vhu~4YPg2_mub~VBoe&Ecm_C3g} zj+6PFXL+Ce^u4#lviEEk;3{hzc@v~U=&6u&`84zugPVr{JmKbS7j3j{)Ww)bMw1mG zuOpo|mFusvWw(_EaIHFh$dNfaD<{oeKXAomm-{7Sos$pp1`^hMUw6;B5Ih503nxxO39b9FVKoQ&e4VrUlKb4a7G(7YmT_5@9sms&ad{p`-)-7-=wQb zzUh0#(AgPx1=}NOY8ije){6^ZYQ{*wFM?;hUaF6$Z4|xKX2W99OJ4E$DPQMJrxIWr z>XY)9K3&jY-Z>0?0^LBttnnaG^`?HU;g4^caWQltD$Be5Lx)F1RAs#m2H9{8>Mfsp zHtucIY^0FFaqi>~jxmb?8IjJ$R}n(yN$r<(Rt`5R=CAQYMv@f5>4m$|!Vm03vz8V{ z)pCCnQ#9VhW9Z^Q?Wvj7J2};2W49s@{Hj;hz~dEYv}F-|-BPjpJW|`fM5iP#lhJ0! zcq`)qmT4P@V=0Mpen9=PSq`DDry-D{_Wepq!a03I*1fyW_cqPYl0CCVc!p2fYhSC0 z*XUQwnHR@77s zF&fwfNtMHAB{Zzg46g3{AsK??vjFx^P=wkuIH!F;mESl8foly*22cF#y@|AahU zp6)!V63(^FLSrBrg^H>< zC{!4{%8iV;Y}Cz{?fm6cX7KcHzkUA>mu4-@fCh~wz@TfFpZE*TE3$G z&@x&^FK<-*aN2<@TWa-{gQKKDZJs)8(^QUz>zCK_j zTq7^xWzdP|c$ng=Gl-+#PBtZAtEYB;aShY?Etbg`qEd1eoLKYW0;nkh(otXeo88ndyTl$>e9TqzOE;p& z1dd^@s)(2ryRUxthIFZfY}0)DsC&DN_Hk?Ku6=_2v_gY#$gLb*rmh97=QEwi*HEHg zS`${um7^1^Fxw3}8h8APh!K_n&^B*oXViZtnj{T4vN}QV1tJ)DwE^43D^4bz7EC?> zPPMnV6Is*sD{B{_gKdBC`wyzY!OJJ;xr;xrMW&42%l=LYqD;~{sx$1#@Af>p$ zZUwosoj0x`a~&$Lrx?(3U2L?yIqGQVnDdB$puhL zX;+)KsH|{t5ZW=`_--3fixcc0zJsF#@)NJ4E}wDG(=rq za)8gwn(DQ?^D?;Cm7@I)s2|(&o!qVh#e%t`(CXQF76v7m*b(fRBL1wJuJ8NNfh_&& zTOf=47T!?8w7bZef*Dq+GRtr0&FakUAe)u219ZHBoeOZ-1y!2Sax}{@u1Q@?#>Yh8 z$`5odsFeYrCzf>agS@GBX$O|@pF!@pN%`E{oD+Avdr)5Z- z1leHSF(7sRbB0}6$Jo>I`EqOh>cuCZgzFg4MP9<};4(V?)*Nm&@&6xd@75#fn%#ND zdyLGg+TGcQtjvnqSyYda`eL+^d}|9dc6)>y29KfL-pvSsA~Pd1qw^5yh>Xh0x*A%{ z71E4AT$nr04H6^IAVBRA(jYEcmRsTjm=6HAT=4<;{nvWl=UH!Lb$gJIx_4znyocwo zo^@XTg=}DWAh!Isvr+yCD+Ks#Is$DfRSW&A--+;nEozI&*skCu#oTfCGr|Gasymg2 zHj!Xf^PMq`8d;ldPL64CGyqo|xJey@K@}bHw1=UqCh77X2R)wVH9y`fnjbrmZbU=n+CnAcYj$rm%lk}y~5n~cO@N|rJT@Hi%FHm0FU zReFBNiK;vt1>%Qh!F60G0EX%ddKIE;Zr9VU`YHZw%GA!;l(4+jwVT&J{`b>b(!wwV zLz7~y2m^-`+RKzk@w$&6cX4obnZ&Mcc<5+(P8aL3D?Os@bQ~g+6j;DwIR6LeU(YgO z{FJK{>RG!i3qYa$kNW>?7NfH<(i_@yQhul$+X?E{G8)wHA{6_y6qv578mDepv~dw# z$g7ScXcb?{mNX)KaUHj(D@#f0TF{wJ@Q)5)Sm5+SO6FXuNht(~bGahMExt+0#FB0l zB*Iz$~tEOfvU4T&m6bUlL^=vEb}0LBPVC9j|oS|#wZ&f8a90Jd&r_TN-!w&}i6 z+?)71Ng$*FDpsG}ae=5u^VKu>$C@SBumx8L$>hW2xi-|juJ4d!xXno>e4{PwFDAEpB^;;Ypq`Z7su5K2dyExJSmLCfx zqeS)x`~8pq-XHx(Km18L2Bd6Q30qFUA{}e+4>_RAs4;4@-asEYTM#`V;|+XFGzSOxC%cK>^C2+Gww3^dd56G@ zz(hSa9cS&K+!Kn$_2j9CYFzu+< zX1x2B$hqm~zllW-xmpv)BU#C&;!R2E!Gl}fiNO$ie^rlsrl;_Yb7=BC;nU__OZ^B& zkcLk=;MwASKq4wQ)g4$wfR16e6UM&1rL;#F8BNu1q0a>ZR=B_2LXr7tQeG8`5IQgP>mWDor#D=Rv=g&y6)c>*yMb zLBH96^WiJO8ob)khH)?03yAgzyi@CbJSuz-qih}?5NFTcE^_#ijHfeu&~bVLs#u~_ zY$fJK20Z;D)_{1OyY^0)!UkrWmigU24{L{BEjgvZI@^nyRW2h|os{}PSuh(`V0a>& zg9;SRTHc;x5W#D~#?3lt6}}3UHVc7kDV~F>NZc*W`oOhj0v)2yyJ{cyEd0m?aWUy} zvSp6#ztic5fzn#a%Ne=|4w7+z(`>wupH>A1kD&7wwxTAZ0hHVKG*O# zDxy&|N!_tq8|sThUhR#rvAQ=c+?z#V#J`FA4P(0c&Ex6fe0R@rkq-mww2WVNdWMSR zA!3|)(1L{`o2EU#OnZ$}3g;eFzNUypFKauZWgD){yJ~owA5!I(R31zzZku) z>qLCEe*5}?&h_EsHCGz&-Q_}COKW@mkqOJ`@EK9<0{G4mas*nw708Kv0cTiO#S6I{pw>jmuQJdxI( zb$q1X1Lxc^zpO@NO_F041Ax6TzXNbA4e$#cfzd42$SeF7Yccr30@5KDrXtjedZ4QK zoeevagi0I+P)|MDxOd>BU%=f-qHJbKB<0;f`VhM`_a<1uJh=JtJ3N7447#uu9B+yV zC{0wgM@i>FulrX2yXW@vhN7CESrvs${Y1s>bE49Nc^fbyX~ z;VfJ(bPC^f78vr5@&{0X5svbHoN$oQ>p>MUk3ULDO_e2^!Gpf6Ot2rftgMtT`nCFo z*rmL+>mDI5xUxoE%r<~-xfb=+2ad+xTA~|dh|caAURC-PYG<*;ep^6Db14IK;N1DZ%@LM%$Is^lItl@ybCjF;9PekPLjZb0Orig&2G=) zEl+r?)uVAq*s3{J0hipEUPXgn#0}XWj`A^aIBnG;kIvTBGzrHO%r-W?D zX4d(Hr(&sSwEnCVR&>`LaN2h7o?qFcUidBah%Co3-{Q(J3HU%iQ_E>;`{=0-VAxw4 zSOjDRxlj}daE{(fyGina%c{>_j_`A);))PsLN)%}3p{^!^osxnrK;2Egi`O3-Z#D5 zP?GDkpGjznutsuEp;566@D;>43n$%ff6v4i1~l*O+m*LH9*JXmR8{qCH-yIC1f z;45u31Tz}ffjt@owr5*l){9O$Jaz%PuW?r3kngXM*+k>_ZdOkk;>*uHHr3?c!LVGY zcVBR}p$4b|SsJQ!sL$y?-rub7EAy~D63U?>i!ydEyou{*yuO9qg)NR9zs{f%EgP2X z7FKBQu`Euh@98N;lyxG-lZ^lo)6R~&r)?2BFzz*%XDi_=+!G;kie5QZb~mM&A6rDp zGn85K3M{8+f6FYNJ;_H8Hrk!}z(+Gvm7_vqdygKQcQD}uBW!%OR-C?53<_EmtQ31m zYL)AP5@5~~b4`phXD^EBVaD8CPCOrO=D>hZnPamj24`H=7ILXG`*^%(vlA!u)NE36 zyFDmH%B&X7Q(UI^WuC4bCwN2E>S>?Q5k>k(>e(u^C%$2sp$GdDg_4(nR-gBMzd6R& z{2-_ZMt!B>9lvO%28=;KoQB@IaUka;gPf4Ndz%wZ679_T`Cd9x2U9lEh|WBnjN}ni zqs#%kc(gr<2o@v-NGo6trilKdaO7-0ez*}x;c&uVSlvjA_vR$gEKKB;V-KXLJsiK8 z5!)V0Bgs=-Ib8|to6C2Pu%9)A^+N`%=@;^*O3aL40H*ioS9;bOnRY{c$W-_RBG zyFjfI>lscX6yy#x7D(_--86}ua*m|uDBz;djOb|kQP%-!s*Qk5jUY3-HlD_*boEfz z@2$0Md-7;mv|_Ni(k*H4E=90iSWZYk=O7c;;FU^XkqyR!uI=SJPjZIZE4n(RXNQ60 z+A`o*)BStcS|$rRyo7Vy4*nfEmqhN2i5sRm!|);=@;RHy?^nN9{qXoj68J@abgz=3 zDTQx@g+CKNct8DOcSpa_i;U`3O7=~d`A{4o@_g|*hO4D#!AYL8v91(B0sL8q0E-CM z&&l54>dSg&x@UVnikS_S@R(Y(lpY26VBj7l`V4Q;BSYJ zu)zPE4wDu?RZ0muxUZk=-kyG&0%3O=MsC2X^8ww@-p}d!h95pl)gbVr|1p}PFF6?d zXVz^WWuEyG8%4E~dst+P>Ub$`BEhm_!p_h{}g?{9R?=fs%XUs9G8XAqLERIrG-IwuCvYlhke8k%hx<#bR~G3fw{eH02ATwB_3T za1{2_LB*!VoClrJk|e$!geK8#yC5f%@po<*m>(o7&P*7S;r`w&#b%48Cmb83dDJ65 zTlE_@uD!+DDI;st-Kl9wDI~GW*_F9fx(U_|n-4p}36?Bp#`wB3oB3PXBR>8X^{5bq zQ_>sbYrUL2zon9L_9D1QJd+L=iCeZUjk@m)R<3CVtx66c`Z!3ZC$vIM)Ea%%_7mh` zWx3$VWP_e|X+cg{tsjW+Nm2eBYoI<_2y1u@dA{r!cQ66Ys&BZT+{nfHa_pZ;@qUCI z{xr-mXzU)zt3{)o+!iZy@Q~E%P<+ELSH%3N7UJ|tM``N|(^ah73%}rZhV|G%dT!p4j-Q8zWz2YdjM)lpfz73R zdh_Om`3=hV6vDb&pm{4Jo)>j=Xf=g&Mo!COEiVY5W_d310Jk5=%VwuC@s_G*BfJVT zG`L)FLxoE*7j$n~z;^7r!h2bmK?~Y>xwoZAMQZ@io|uuZ$_?pu@B~PlmB*K0Bt@~X zUV<-tDYy^P#Ev^IKfsS@o0k`$vn^}ek3MGrkK{v;3rh?IJc3L4B%v^!c5~e|<~%u) zy)9?$>?I;pYqG>c<@@vggmPky?j;p;;z%#6-qrZbv|A@)JT)37%>nGJ>3Ma(#F5L; z2`TX6_9_zCNixD|0Cj>Db#@AIZ~E=}77z~zEug07yq-K@LA8)L)7 zpjV$rifIWuh@fX22a>1~#wC7M5YjfAr>efh;W<1gucNr8R8}cuIm4Kn5npw?(>wHT zA^#$4O8r75U|4AEOP2c9{Eno?Sa3yL{rP~CcXz52JwID$pvQ#oi-W`810i;n-BioFyLx182OG}!n|#Mq z+d`sbc1Npu&zNr{mnSRtOFZ3!gSj&j<;#vBF)465%?;;Z%q)_>RGP~#>u&8QhU%l$ z1>u2P**Y)-&nAl6m3V6wX*Lj^?6ce(3^V61Hgicfz>mluFw$M1^Eu$ z&5a7d5w+(f!rrY*s-N$SfGZi*;pFdN`3%~YdPJGcKKVPx2HI`L&u2iPK(=Hx-nJ!y z6Dx1fJQV6m^3FQiy+4ub5yn!X*S9SA z;h&(>CIxhL^FgAzF`fUnYXE%M*^c+P8V1}0K8d%2KA8yBHlnd)ATk{MqO0`L$B}CW5;ZcW`mD$(L{mphWnSN(~`s2IhAM!Ue@-y=) zLAIfCt=G|7)30T-S&=B2jW9c=9Xb@lVL6m}m>~c=Q-0hM#jCwW1B|Hz4NXNHWkcYa z7Z1ZIe#GB-6rGn!+K9X)^C^^-OI&jbNQfHpxZhgwq_1dl?1EHD9INc-zQ7UowWOAN z=k}Z+1H<;cvZZ@f%07Dp+CrK#AT;jY1MK0TbG2fefX`vioTV*+^$v6c_VuXwfId1O zr4?ZkVZ-@AXiJ(8zwIb7Uuaoo3QbOob^Qx-9(WL0{`5%R~uNW(~TuWR@b0^|UN`iF1DN!u5D&(ixl`2UM z_UI$`N&KRJFQp(&*)J3#o`G_ECDI|Zc*RroqBo*zUG+{|xFf6FaSrj=P)_8V8ZE_M zS()~M1YAiMmn+~ZNY}&h(14-5^H?`HF^OH3V9^EsOuRBi-xVhm<=`KHEGFoqpINRUV96m5St>+s>9hnfs+GAl|aqMm%QSbAU!3eX4Cw+z0|;D=dj!hj@(Xa!;DkZM@dn!MX}?KRki*Dy zFWXB~z6de%D>@N!LQy(c3!4f#VwUJ;k|jtn+sPTq*#x_Uiiy2sg~db;uAK|P&VCD1@44jI(9T*Xc6|3GYM;nnTrYVYR~7xo9lCd&a|h*hvYn#Vy}G# zQG_&A3>EjM!0v3iHJgS;nLH}cA!RM@m?3io0i(q0A>V^2D8JFOs+La=-*g4b6OZ`Y z6OIv6#2GM*L7^SyQ)t}+SOSuxFXLNf1Hom3k^r%4ZIE$ev_H@JqEYFt$5y@u5u>}V zm?1XMB?PX;>DNPo4S-NVdX2C8Rd;bJZ(- z7~nkF418{6Ch$~SXfj>cQKg5F9VWivq!M^VcTf64Vj*RDIt#Os zSh8S%hw%_9&`HWTqsPeAgJqb^7^>)u@r_mWMuh1xfOycwHIm~46c<*`!hV{49aYTQKX{V!Y3quXOOO_nROvO z)O~MAZa)VaE`YvBv4oYVFUl+7B?ATB-ndIds*7nD(Afpf>5Zu!tmgZfLW>8TrKx1A zmD91g@`q+~82ei5c+#>*^1aEYAYDw58FlqLNUA-jh5elySvnVB%~g=-#A$e(^qiU; zC4|r$S6#S_Q! z^jsOAutKpJDHAxlp^P^zY2=%YR+~5baCwNWG61a>A{w$6`Rk=S%Fv64D5Y9>@Kkg4y~Jw$>|4}l2tJQ@MxJ^ouH8h z)|M~E(MykLnL;9YUx*bvdh2Ij)a3G?B|4-}{MsfQ$st(g=E=2bON%h^d4p&{K(Znv z#gRF?0kMIw817}l8~N!1&)Ye^%_C$la+)?z_pZ#;+w1uaxcSk~xIuRB-l=wCdEJs% zpE?j^+9-gi2D>&`+&*YiV|sNx3RysJ&G9epRRI@NsS^h+BFhrLAvr1~jr@$5zaRla zN6rrhHc2uY4&@AX6Nl{IL_cI~H-r$Nnj134b^K_VniEJVY$c1E?|05O)gQy=XHlim zea3yy%wZ+44D~$kCf~!rH@!p)JR9rKq-MNpH|HyJUL}emc$jSc29K)T{BPmMyXqc> z-@wdF*D}W>D&tM^{ukEd0Z$SlXLwL_S|EljF;td;ArBjXeL5$opM0)~K4DOA>rXUk ztg2G7GOI<2B$!f;zxs-z5i$-{nvcQ?MhMmOe9M{s3a=wM*K)?tra&CfS@ z!PW!;$n{6H$)xEBYUmtVJ9%{vDH9kxTEgt+SnBJ2)7n{2`k~m7a6J-F)Jb!N;XV}E zuz+Gsy`vHU8+iACR$vaMqmDGvtW=?D53VY-NOyt@CA=?92IcI?NdqjHBZekLK|`TU zCekafJ3XTK@?A{;X&6pT);F?79zeq0H9fLjN5q%GJAuJdJ+{qQe<@4LyQ6kBHRU8q zE%zIhg6l84 zv&A@stxbAmJ!pXPl-Xf@V|~ac{eE$=nSZ@rQkQhSSQw?))idRa zriwq-wG}DbcL|r2^8Ez;#b3~!(YL0M$+#{oZ)y^Rm0}LFL zFi+gUa(c%bT~h~!8?`|gpwE|jyvB^bLl8li2Sk&45`90z@wLe%GH7A-$2zFx*Nn8O6+_X4zU^E@O4I zwGcuor>zhHQ`DE4HT{~xv_ME1b)_|D(YGhZBV043GN`RlSKwVcxj;b)4q*lom-7Bt zbSVW5dW!kW58QUt@3uj5#b%mmkKkX>w0bY2w*z3w2ISn1L%xeU5=sex)wS{`^2?mt zo*VF-16$h&O-j{(1ZaV6m0EjtbG!5kXl;jgBOwf{3XTwYwP&{K=a^rU;xPs)PkD!E z#@C*tj2l6{qC@IpfA4;2xO>t>yq6l9&l$xsZ`DB=vAEZ3e#>8}t!WcA_4g-hg`XeGTXWIeEf z2uNiM+;P|8s?@es$qYvLF)a>Wq@`^Jz_MuKD!1QEd{|xEpL&MqFu6 zMJaMmf)BMgC+~_shG-jLr6cE`{O;m4s9f~l6m z-1yNCCLR~&c3pf<^i${?pc=lVx5WMc2{c1%4nfi;N3J=Br|9%`gKCAQPm`)NA_K)% z1d+wrZxpga^C zVMuv$h(G`0Y1YWZ?Pv9+!$|)4NB{1m`iEj1Xs0DlBLHk-8fIFwVhW1nwd_KXs*VVp zo#{wu=~nvBJ}% zscqFp1!qN;Q}^n<91bV{6~y+3yHJki5GveLdm;CH(5qvBTO7ZFl<3S6&P7vjGTLWN z;mmOd2uF5YPWqp*yh{#Hewb%Q2wkM$bmi zKgvuD>Qm0MB2WBG0g89$95Se1BIokveM4`Lz3DW;Zbzh9QX-ArxzXF8B_;cm`b-@k*HVq&`(wo(zm@y0Bf)3N54)-T zN&-{K4XDXZx+-Tw7E~0ywag<|TG61P1E&kwLrN~995=vq8CB!R^lqw!e@}t#w1A>1 zJI<-8gwH$Rv%MDw)%9sxXxsRzJdo&AN?)$GXFIBAj3~O-P@|-+*Posy2q?>7-OAmO4?t* zc}dM<@^9NJlC!bnv&hyyBeCtw?QpcLF3QNsqLjREnR`;i9bQD8cgu-WW|~C7x3Omt z)vFNNrJSYcX3M0Is>i5pgx%3&ul0C4q}EWtjsq}s zx06PCH0pwD#!5pvmaNpjwu9V;lq|QYU2tTcV#>+uu3i>2tVXfq_mjV})G8$ziVL)K z|FoeSeZS(01HQFDX^|;=WmbkI0*slA@%nnb5}2Z>3hu;AqV^iOOEHQyWe{kcw$rT93r|?%*SziF0!PjBf)1H|X`xq)(h~H|pep#~==R z`qQYmPUDBYc->w(Jzn`4)?%+f4|Simi=g`wKnd54+kxa0(HF7aJ;i~y#e-1vCIT^c zIaANp)a36s5MqTle9KrC(KZ-Seh&y0EVTX7%bhPJaj?~&Wxk%X{+LYfrR?~hqTvy; z7xt}`*fuj8>jOtAe_*MuM|68Gu+?w*Ta7$de#*&>D5S9GZHW|v z%^<_}lE)iA(Saa*Os++sp&i1h`N!%$awR@k9G=@$;*0L}e5x^Lr+I&T})&ksIT&)D|aiv0JJkn{$#4NQX z{>jw9mfuM@GSaf2>kiT)f>N_?NVkgr5)VJ3i?*>*(aGmZdWxgkMAcj6_wtn9p3>_n zdWa$kQh+O*PO{pLXnUw1j+>BmD&yT8gTV6XFLh$`x8q(?ihVBx_~sY?{b=jZSt)); z=Gm>yJ<}Sz>(e$<@X&$*d`kDRA9u=ZkMLj5*uNby64TguXkgqdK?LTV2JL_}^Yi64 zunYH2HD~2a5Z1)sn~#V!SUpTyB6;?DUYB%h-gh|p7mhye$1iJrN+KwBg7Hluk`C)e zNeC&P5pJi3j?8kEGG!G|wDKhc$$F&85M$2Ny4 zkJyd3l^AgXAVc$*aC+cI_A$A;gJd9`j#&ilCA_o(C(3-=c`R;0Qfj*eJafdxJ}pQz z3InR|4X#7BPqMB@OkDDO%)yh^w9^}H)ElufTX|sea4T0-%X; zoQ3KX58jBw&UPKD)hnGdh_>Q(SIgld=>dVwRD0~&FpjqdoC#7oCiOZQda0SC#cW4i z+-$!G!?x9aYi*51S}F<%#^l1zNFp0_B>zoC;2IbedLw?P9V?F`K~rgP>w=AI8&;d- z=qyrVud62i)~vCFreInkC^vBj8*;(IhBlY;;tWSeaPOF;E)38Pv>K}-V2)0D7dlC_ zxQKD7BmPoKf=udwpQVQc!2>C_WKEguDXm$0*GbwvT`i8T9UO$(p%)t2cPA2E{eusN zK&bvOH9q-YF?Xu3E!`|7`QSYPK*(bAIuo06l)VGk;C2ZSFb9_EcUBDsn$@30 z-@pS|8Y2{2w4GuSpO|`tZ{O?jY(f0^EBIbG!ibSb+L*7Erpz`$9hAJaw7&^_O%FQ) zf_G|lQ%92@R^J0N;omb4zT+y;7uTZoXnaurds-HmzR55Wl zSpA4mE9yx+)J(-#k7jmXexIb!>!IC|0-)TL8XM(n1dCpdPooqkTTLQ<0JvG;Ctqt` zg#BoNSuZ?t%;*W-tNES4kLSOu7CuC_UWqg&9Shh0c3hfT`J%(bnx0#l z!JZjZ0Q8~iGIeVaH+$Q&M+gNHCZ_~I!DcWiKxv)!&T5juOoGRs&vQ)E;#Fk!6y>E} z{B*9&9CW*T|7Sh;PAv6>lhomUAH+`AJbPFs3y)_IT758;&$TNdXFGgBzRoBde2CCF z(I`p4nme{at{;eGT^tpLhGSgJGA{2f{2yzr_PEGX`b44zUALty13_qcL}o zTGA32G>U1x=RE8pY_aMXyyBpM9bwdmA)e>)A18p>osp_kM^zGe^c-)hb1?_M7+Xh;vopN@TViqyB z{QTGkU|2%bV_BwTxP`;3V*$KriF-P|<%T!E_@`;@GIQwc{7*aTZ#b5l=`me_ME6nt z_}~XM%a+cS`}2WuRj(07X>Wy!AyRfqkRKouw%ye#Q{Ijng~jX-BI{v zv?K8}j?$gjZMck8@ZjyRIhgxWoF`C5Q{)m-Ixo8{ZBKMDAIeM`x{o|@6CZZoPGVuk zAy69Y_PgocTFqI=YD`ZGe1Q;c)8cF-CB_YJZo={|CINDG?AbR?x4*;b_FY4YO6D`q zKKt&=DJ||$t~C`Xj5wL?&D329H!BQ1{0S#7Q8nvVWkrnnzABEwQQKcu=BR?9M$TSq*~)FT5qE+L4_b%5vjR_1!#BJpOjZMHTBpYXPMeqClX%GX`Vp` zZB-r9vPOhB^vqjHVz5uu(^N&2HgwOjFEWS zJ}&NC3Zd`9G$aDr1eWQi&Y7El7{;?CHc3do*>N^%eaV(*eFt%8l=(*PLVkb?WMhMhH-*R> zOaE7@jm2;Y0*#_EpvopbpM_?sF=;J2_co@h_vaLe5K8aDYEz{ z$gDxN`=Uc9gjc#8E)2LcJD0X!I{Bu!#Iu8uQS_W>J8F)RgoD;$M~U&~_2}aHBbhV2 zeC+l?))f9=%m8B=@=Ko9QOs?V&tGy6P!htWZX!jb2uA01mHp&4usMGyWBN?_#2uVHK) zq`IYWiIen#uG$KNu)KoK%0~}G@PsupunM-`emA~BnW(oF(kbJN!8>=(QDOi7J$0n!xHOQOGq6s8FiU_0-{q*8-$-3IHJk#ev*>qeHlc5f zE9&Mnbi?j&@{iT_orPgH9SJsQfOcH$2%LD7!&>9AHh>kLnkp6p!ORf(e@P#@^YXkS;H&#Vr8as*qb}P^5sR=5 zs8a)J4v*Hod=Dw!KQc;I1@}2U)eIIv&)8=m4 zPmQ*di2t^AgJbpIhLzWIk!rRuZ3kHiK_vUOG*D{o*6j0;5_MdEm`5&Ie@q_B*Oj8y zBv?wkYmZSpcQW+cvr1Q>=Nw41?Yq;Yim(dUEbrJxZle-NtE&qbJ%5vmSS?vS)~~7q z_pJGiC)af5&QGi7RZ2X~D`tunGS@_<^CHPy0Y(;juw`v11}Z$)!f$=HU@M)p!^sa~ zn@P9muwty-&$3xs5Tf#{?V#4D3$~QR!8yslrFtvn;L;tU5TFDE2{g7`*ws@g@U4-2q)Xn6WjHZ+NF@mW>Rdb10p8Hu(yQ~21|aYy@PbK&k;-Dj>*FD zbN5ZEfAFnJHCe5JgS?-$m^&4#prpMI$n#16GobnZkh*;8Qoyl3{u$Y|`6CR&zW70Y z2rX%T2F`!^g3kw|&%DL2$xq=P9k8jI0Nm#{S#R7M%GG8{=*{2rO8cUWn>d>K1e7oM z%qzoZz0$79PvM?C!&);e13vy4q5nKK8(FQ9mFHO--TbIoDeZ`qJ*;2#GZwi#U5iZH zcPQZ!NSwe=&9|kFHV~9ZFdrlGrRd>C8b+aVKWkSd@w@}Z3j;0Fg6WY;##hxliw_t19Utwc<^OM#iF&PU<27g&;)<|&aRj|AINbL8o}Od+mGO~x=CE&@?Jxevxh8|xK2N3%seue!=uQhD?ni3g;CP}ka6@q2 zcreH}7ouAdRDoy04{@d^?^)A0<8*GQ>~LIN(>=`Z3lZ&SS-*nI1d-IoUVF8ya z$>Xds=1gljEIn)%--G6E$8sn$l(VtW9pwVBwLxN9>V`dm4#%szK#znQLxMZ#N%?{3 zkl}HUB2`;vIx15%XaYP%o+>%+Cf^ly)&n$S==kG8evd+?}aSTbX`q6gG84rT{zNk=^ zzLxaG6tg*eM}^dI58_%$pb}Jg5bjqoMr#xxw_d&fUGMr_DUW~uxV}V)+={&s_sp+P zg6x^I*JCD8i#1A%0UhIVfJ|DMNU)*@{7+Ra=Dds9C=x6OR5+J=F%{btgq=JPE$H9u z#q}e|Y7Y*`clDA2*{UWYHh-i}I#7Cj9gP9HI*092*kx!MS~STi5Fz0KZPY4Jj&6fp zPUMHUDK$gV?nGzRFoiltXPoxz%pBiZ(IJnlj|G0xckn`UtdtCUN zVF*obbDK@AaY7NU9+l;E36`|aCaJk{gi5+Y2;t%8X$}gGV*9Dq!jw0B!yIbNVIyOq zQlLNP$GOeorVY)u(3GafeVvGh%x~yNDnR2LBkO2?GeW^^L1ak7u#;>( zgK-V={z4Tesq*G-LH1hNUwTq0!${Ghaew(xDYKKjd6x_&*Akz$kv{5>Ip@r?j`86p zZY20CbZiP|$TbL$kQk#p>}Zy4RwJR70D! zbl(Z2G>AeYDy5bXPXIww)fy-|PoK%p+ldmzeHnWvHvu#*v& z9LQpJX?T7rk{|(ju}nlPv{4-~Z?T2wG+Xfc3O|;Srth>O{5$z=0s?kX7mub6VD%3i zL%<)z{(8dH!^j6n+aY!xMRUA?IV<#d3TlyO%cHG+E#hW4a^-Hi>M@i!-R4vI~D3UkGh)^D=ofAJB>NmGc)4s`+)jYV}320PXzL z_ufuCY=MhAxu<|ixGWwjTv*T(`}4jrpyNC&yP;JU&}Cd$;N`+RyQ0ovorWK99ZV0p z&rXu=%zb15Q&T#T=~@5?8j9yhxWR%aRT!y72R3tr z0^QtgeHwbdXnT)bZzLw)sogQvz+jG(d&A{Y5A`w{|^EChVy97oXOj+VYrk8PQLoZ zpMCXVi3w_<@TSPT>>C-vaAE5(5W{TUgJ-jzwbxg3z@|`6gV8{zYNbliEkzBL&t_Ai zY%E+-(Uyu7wFWWre%d4Q5it~i2qjEipKziInK9POn_Acfo6`31GXXcyX!1CHm4iRV zwqXxtQJ1(t)X8|=`yPzKc|jjbwV`RfaHq2i(FIfVVNl`(-%DxRU4aW|c5%R8;MGuO zD0%O4sZx#LX_=P8V2PgXC5`mL>KoYhY)^4k1)F%ku@4;Kcc$D!>lU=?2GJm=XIK3X zA)6}v=~?GKouZa^pl~Z#-dYekOdlXV6fg2|h0uFciTjYgAeEJ3qvL(pq+I6T1>zK9 z6Enn0u*!oWMW3Ep$#|&#@VJx3!1a{Y?QRv4Qcm~5?Qd$yluA$w<9$gn0a;04Gv@s@ z8nB?m}7Q!H|WvIy__{~CIB{T5w+ zl$!jx=(FSf2yvt+j-#|FJ31}J$u|t$(&H?DTnted?M8@6Q$Q2i;bgnn+})7PO)|K~ z=#gGv6qGd#MGY#4f6@u3AVvqZs;v;IG6XmKtS%>c;hdXB{@+rM5cEj0qr<|=pP3I2 z32(o~o7och698=yb6%H99-YB5wAdIq_SQr}Lk(nnC&lZ7FT{g2uVpAM1!4)snLg2{ z=vBxFCS;YvzLp@JEC>1*Xwcb?I3{yHGZfc)h+!2SX2=3|jp+Ym8R2s6$^b#=xQg+r zk2c~#FQDgDoZ8l!(Jrv;r4=e*N2*};Pf#bvdW?cr+4Ol~O8}}Ir0s;vk4B=UznU{0gOcuYIG3fTA7NEhOKlzQSy`JBp#>UMfvt%h0 zOOFr-851w+N-TGzM)V^CailY}Lb#PuF77lGq2?kCVRO+?+HyS(bE!?gM4~t5RTJFP78eS^=aD*k{$Pz$=vB{2%;iQvE|| zE!E10|#DvO(bIPPE6`oDnFD(Ve2Zd7KT7Ih~{k_6*12AUcn5G%PX2FVs zCVo5dd==|BvpvfxTdsrnLybMw$9pD{?5o+dr;a7{Ov=SM?oaTi z((o}zg&{A~ULuCAh`wb^@plT2hoTR!DoKOXBr2ia5aEvWLayTGT;($BPZ@MxWV2Pqj>iUo z$Pqtmij|@mCwqL@mRW$LnxE!MF0EH+5tQfECifjgiV_1}BG9d27lEXU#*_KLfge`h z87A#uLmD$UB4dLyCldskB!^mI;oI_hP0~&a(`AsTnKbRP?E=R4h3^#}#zDQ>2{rBT z0u^SMjqz@uzUG|7orKr=iL? z4;djwl%Ho@-b@cSvwTD(I(xCAW&cs$!o(#&Ag1rYdZ}Hhn-8VVyrv{%I8LLYo!ZnA z5A9era8Xz97MEL~!}1rux_))!S+D6LQTzy*1c%*0t{H2=o%1V`e)Fby@co(AM*iF4 zQ?x!sy)i~fg30rAsGUkcG@k4{RJtzB_i)k#?YiEemogMvoLMbs`AqZDDUKRr)`yAw zEN(E^D8vq2@svug;~C`Y;R6!WdHS3OukTHLx*dW8$QeGk$4CV%E)Tt3W z5gRy z)=;;hih#KU&zpHLVYkN2e8KHRa*W`#axu3ml=&rxY-m@}1de+Si5rWbY$rdj$WzTn zQRvLWr$haEEXSvmsPAu@d7fMie2Vi)O&qu2^w@`*zuXnYc%dWHqFy!lr-0d9w+=LKJxvI)X^mf*Nn%VCvGZa z=?st{?$#oNLgl7PwStm{90P7Jj|>m-z{7muhGnHs4;;>dQfUY%h3Z%a^O+?aBY0#D z9|}_#v?I8ob3oO)g6ARdNhz&e=WO0rMJk8aH1mVom#87GI45kKEUYa5NAAxdSHlwR zLq`b&c9;nWdCYo9jr`IIyxeCBkB5>ug?Srv?6FhI(SKVQyK-HOF1=`X*ia7TJfscS zp{%biw|7tTE1pivUo6-r!kdB9ct#izz!7r2+De+PTP!y6cta;VbT4 z=zwKfllD+P7|3Y;*xjq+K>mo$wPXz4-8?>k8kE}=BMcYz@h(iUz^!Q?uOXnzv8~JN z`7MnN;_&+rYJH54X;fo!Gq0d_dCMM|{(@ zI6PeqtF_JL<&SH@jOPQ`y$~I`is*s(X0=_%^#Rr>+|O>ZQfsY$yr{b-g*kpf3dZ#! zj)Z&04~kc}i^up9wkf<4{V!AF;L4Yx;zu0+x(wxfg$c>-Y!zA%3{^@w>3hVHtX1Fm zb~xDx>ZEHCEZ-(9mAqnbrjqB_waj!KH+W3Bcb9P)_BerIZmdf91k;GmiFGDB+t?MZ zr&x=0y_m1Z0bxZKY?7aJFcZRS$UYmrmIhDOuZ`9S1lLWGAkWf;rLq6P1xTMBekH88 zy^g!rpr+=+Ez?Sq$f81VG*Bq5YaZzf6Ys9Ci9bM}#*@XH!bmav@8h+26NT56^>*C0 zE{_tx^yv8bFXUKPzw0G^HWztDZ_Gq@qQ@)u>sfx`%TU}PU_^aMUV`BltmPU4tIGxMkMj4YBy*R(_X8LD&2gBXTBOIST;3&6NYd_mBDiBm}Mw~y@ zy)A?GVS68sNT0yg$sN!%6_^IU<$Af8_2TW;2E{&;9L+|WW=XPeVMXp4!7GRxW z5cWd51~F2|rnMS1*fe)_QmYnEw4bnxQ|FaO*2w&S{Bmw!Yy6=U?Lu%iV7j65!_Y#j{5!bj7M4f%cDz;Cd1S?=E>@S#PrkyC>f*%N>xerc$2vg68vK zAIt-`lM_-ZXlC7Gm|448`QC;cuI@fB^`O*QGHdR-;xn-rbfMzzG2B%)+!Vn~>I7K` zre%sLo+7KtSHA)P+dO}bE<5=;k8<48#;6=tGRK#jJ9x?isy7`XMi;-v0=q%~%ZIrw zW|ADfS4xn~)^9UZPD;)t+2;Pt@?}==|5gJ^s^*7B1@P!@dcZ4*v4c7 zN~Oz(vk4j7^ShDyhk5}vhLmLfKQb#vW?U3tv|NeD*Ld?Fn+F0%_l~xO%Xr(e1O`A) z223iiR7!T2+yyHRbm|}7lc_91#DB0kU7V5Vo(XHG2pj)*oNP2QT?h8F$!mn+HI7P{ zHY5CfSLZBk%!gl-^F1Hm zq;s~cwnmlxz}|1fbA4=Z2}6l}RyRJ{L1x9$R>^`coch&i@i65ibyGI+dK0iW%lAH<{1%ahuyia*KU$I<7KekY3~WCrLBrpN zRCexGpV=WrWzLDS5@)-wup@C_p)bU;9`Lh zdT^H+2D;`{4$|jH<1aCO5f|dlSU_+&sslifHI=Bs%tjy@3SJFiZwoETUTheJ+ zQqmW8{CGBh!Hrx56a*-HL7*W; z-$P@L*3z@gKu|btPm?9coCv1RAB(~Sw<-%FnG-{@X3=YBMA@xs1OrvHSF1~N1k=uU z{0KbOUcFE6&$E)w0){CV#Ni2z;+Tpr**Sxk4(*s}U(745^7?EPfxD9M@$>k)89Avm z0+}&bMlw-~(WYiTU8?ZnRP+1jXM?)+d;*&cj{K0+=T4l#aPXt1%lb!)NR<n3+gZ7EJ{uJ9l~#k6?qkz4M!63 zcSs>N-%Hy+s;y@^FZ&BigmWQ~QbgG|q=|2-9o#S7=7p=-6HPEQqN+Td7nt&hC@5hy zlGVX7aE?s&{FoHFRqQ{SOkuSRDMH59xP90L9HbfbB(u6dK4=yxTkCJ|remXwoY-lV5oj!?7QsC<`_YS%gAAA{iH|1jJVqdWRipyA z`zM8VSfg5FHzQ1y(ir^^9$h6r|re0fGT8*A7glKxEzl zr`~MoIkmcTHK@vHrA9m*?1})ltHV4E9=;BNSDQ+$IwRsrWr-V{<)_6O#C4Q(zt@u= zaPoc^y`&4L(UGM~@^ki?`ruMY$N8#|k?9zFhVv+?hFBQ$S9U5>(@Q{ez^s%xpg z9t-{rz^{z{Lxb08I5qtU6oZELh$GG~zW-;|y&9EvoTU9In^u}51`>AiKzo{3^MtD7yFyt!j8t<9*OW8I29 zS8Kro^?ZP8c)p$nQ`CDPCH|{vV*v4R)m*Ggp*Nmt&;~M{RWCBHQJQi2-XO)QeIOl& zQ(_c3dzmkJr}WGGskKz67BKdpH(C};uRgbdMN-P^$r84uBGcE(B?wn^7x)tNWV^zs zo2j6_W|M9Dc#}D7uTHr6YBO{VQ#o_BPVJb*&8f#J6igNm1Igp>d>~VkxI@EumQ?o+ zi2a}ux!Z(bok@okKxgOGl#V)9u@I4lp~OIG({)jDvk#_U#FnBq@M&@WQgU#klBC1# z9w*nuunm?3E&XNRm0kjgLH)vuwnL@8cQj2)2?tQFpdG&f@7+&ie;<8~zKRcu+>APx zhE3{;{+1=CvoQM4;1IQavjfe57B&ku@VfMH^fueSge48iK=SA29mYUm+9;9N%R4$f zt0!o%kk#Z(x^W)BNSkqm>v+&-T%r|L)_#U_E0&ZU9NqJd1LGnt+xcPQ_*`X!YzoS5^(3WBLBFILSyLps974&mE{-VMqkULX$RHx0Wk6^H6&O zYhR6;GSWvKo@8TkV>Eqohk$H!r2QzMyQ`2p$U^ACOPEi5g~0355`AXH`iiK}7^0ZBcmJ7)zVO$}`4? z+)Yzp$CYUzqePnM5qd{mGQ67PypdBw&cY#A=`{vJ12E}0{z7PB#75E^#(j4+H%cA~ z4=^E{hcTRix}=0Px@DB9N;)I+E|2xPp&4~WL(Q&|(uKIM{>uBwtAyqI>xKS%bEE%$Scn^)*Yj(p>`l0O z99CWdaU$)nh4|s|$BPlIV5- zLh~~W z9P@8rD#K^}+S2Yte9PV<@Hs8q@4fXu``IR-By#0(*wAryz}QMgst z?W%wll)*#ElqaGGuC}D|8)Zl>M0dTLP4SWd&x)!dGnZlD{y2-yx0eH5So1y>WW)}p z2!z5vo*{T-@8@hUpqfudO3>a&-JTMcLaK_-?Tr+iS80YsPSlWiy>uM=SAdZ>-50)u z`~ozDu?r(u0|BFX(FZH_qh~JsR=RkKAya83`QcLVFJ~QqJs8_!$|IjlfmrFKL(9tv zY0$Kim)aloDZ8fAqON=2E)~WX)NQ~yY{4BM?{e~C7OkgKy8%xI3Qmf2S$0_Fjn92+ zyk)clU0|;xKHOXYtPbO05P?M1ZX+y^Td3H5Ch!Q*LX!8mloVdlI!c7uLYeWe2Fg0d>{im8 ztTM%~uzk|OUW&Y=vCPx~VTNCfFCTHt=H+W{Amy=dlJ$cr;)_vfydg)~!Y6ri+-??( z>WQ>9+vG26>i;C_+w`KQDAGHIf1*!05XW4T`HeY$do6U+XxgAGn(N!SvL>ClvJQCX zi3$1KVjd{>&>0028B0gxR2kyf$H|0se6xv!gIUbDy&F=o>=o{iiRMF*4LIi)x;+Uy zwW3wodhBYh!MpNArwO@3Z9zsX$uidhO@Zm;6@K?z_!8#=;tDTcexD;DALP1)v0BK z5=S~!6O*>@`c&sBHqfXG9&nrZna*>O2$CFtMH%Vga6s5OBX?KAIl?Z6b}=W)@-U>K z-h&2W5^wvp1zSL84{I%BmAWFQNJ5Lgldc%-Nems*qff{jMhhmtC7Z^WEy2Me`~Ef9 z;TP}_G3^(2m|s9T8>h(Iz#BWI9~7;O5+tggHv>{a>OayRlv zj3M;JqWta>NGf&xEAvQcT|EwKy_Zw=jrrJ&0}WaMGw~(zD%dV0YI|@Wp?#+$r!fr` z*gaYNf%E{E=IEC(f8yt;A&=A0>YLLMrpTxW24`DXCwwJ=MtgxI0K^YfK&mQh@>+-k zV`Jz9Ld)4;W#3+s%`@;i+wW+58z&A!YGj&ZdUZ`6D_-CD z3a9nV*{*1Yt^`TsOCA5WrNj_W!^fq+Zm31X!6nbx6eNbO4BvuOS|H-J`2t+Rg6xaiSvZv)`&bEQ4% z2Zja|9$mBTxm$C*8v;3LV;|WKU4}-R+i9D>nI$zC% zp7}s109Vdes|&jV)GRI~CYrw|Sfa5l?_~C;=UgxD`IhILZfUn@&w)dNI;-wxcDoP= zm-n)F_>3F!B7Kh=l~PKI$I|z!3*O5#5LkFtxt70A*#?`Q&vkh@%x@S0Q&sxCF4q_q zw#b?lC(s{3is~8uE*m*Rxra3T2l#kiu6wc|(={}0Uw}=;HLUh#dw;*OD6&2YPc$vJ zNXsV3AW?apo>;2|&e_u&Ogue6)}k4>HaK+D^yWwXu5wx~5d9j`spy{1{#$DHz+3dY ztevVpZewy#rxK$98DZMm%mZI1#)ySd7|YoI7u_MGWO|I>Pn}!v(!pq_lTLMDD+&Zj zDs(SQLwr$G)gdZ$@I`QXCE4i_lV1_L-Z0R>7X+=()N*P#j!g!W8HM{CO&cv-6K*?_ z$ZC%$#a>)J#Tcf$-s3bh*Y-Rc)P_03!>>eHeEIPb%o0jT@-TjdvZpk)#o46)&R+lZ z;^vPQXC$R(jz%*oQxf{e#Yn?4Tx)`(4;#>9RIkdJ&0++YH}XOk6J(HS=3FVR>yyFd zD)|6(DESh39rxoV5NCcu=)&QUHRZS?g{7wD7%|CZuG}jELA#EUZZM?*qB~loekogU z3J7DeMofrLcghZ9iss(mSjs-V1;wH&>FqgZ^FD@@u_NM@?@ zwURQi*;0hf&$DUf%8;|+CE(1HSui0vQCAQmO39D*<&+kXADtBsr*2k1fiE7G8qdSk z9Q9&!ZV>eGl3M~sQ7^4OjUG{5kc)OwT`^BqNc@^`Naoy9EyqDW>a>Vp$2ICmABe;= zLUxGG9jlYb&K>f<3pY0#7yUOcwa3bf-PgIzWaq*C6L8GLcuN4pGGj15hNAVMrv0oJBD zXiMFk%yC;~6AG;LLY$S_sbKLOn8iaOUf@~Oe8VpdyQN20{Ql-E#MM{i5-rT1b?)C? zEr;*Sy`H{YtjmR)v_^pXL~RBJ#*FD60vJPKtm+IVpEK1AWWSAMUwgMI+vi@Z&B`vU zN%PA4X!YT3fSl3%zhHY#peuqjU`njPykYiHf3Um>F`QJ36V`!4g2I}AJ28YNdEP@B zv$DssOA$~1;0c1aKI?zVNa;0?T7NUYRj1wLjzz1qZ%`OJTMzhyeW4VP^?FrmEwrZ&O45EorJtH02OCqGUv7gx-)ApW!WJpH$tJXiL@UbaZHsSJnPJ1cf{` zD0P1Er)dE_Bhm7eyh=082eAUimWVq~+g=XxN8(^i?NQSo)~#_jpH0gj0+!Gf=*SvS za}jvXuzUhlDHU5IKh*SrlB}}tKKRBQP+cq6tYwJ1^1zwJAq&>um8ywz=`;Qf&7krO zU>}yqweVoHMZyWgXj%b+{+k4i{uC}4DzwziYDlNrk5H)6(~tHgXJH)S1_fsZC#SLV z8NxWP;wZoXWeyk}e_8d_?}Jg3Ck>$Sf)Sa7I_S&y13QL0KsQ7p?-UudedPE!n$rTDto6JBDC;!>xZt`D%WQUoR2Wf#}G^-e_OdCB^SGM=_I}4&GrYN#Vql8;g z@`Jl#ZNyC2#b{rAEq#xzYvj7d#+2E|ur@oAI{(AI;lqJ>BJSDDM}XbmGrJH%I8kk1cl9R z?Suvb4I8e{(L2~tt0R)#^Lo$k?L-jiWH%BY$vXE16~l%^cO-7oI6MVLUJml*NuJ}u zQBo=}X^D{jD>Q@u1D15pbtNok+1R+OgGLrb&`$XqjBaq6d-=&RqMra;HhAgXjehHc zx02~1S8(vm!46lq_aV9ckYjUuS}s{I0Y}IC^T}VcAA^$LF_l)shuJ6EH{aLQ3Ktpk zC%uj)Wl6TDEZ@#NDu&LSj@T)c|Jh>gQ$QA-?QCu*+XtPFgAlI*VfRBhv9U~YtwmUV zgL|$8Fg)v2`I={gO&t9VJ+n7KwI7zNrw5U#KlWS{C8`#)eZU?TLfF5y zAZ;27ywgbS^p_($$j@#=wiAhq7ywJd#qLVu7v-46qi?Bf#EFZ4M5Qt!OZi8JO8nQe zeO0Z1s6#Xo*H$JHKPe_sEbjEooVD8q20>JeD$%IkV#9F!WM7Sw^*fYx0T)**tjxxWLTtag zM+}7z#UO071i7Ew7cfeiJS3?$Kr6+=N#jDy=tq#S!ULL5u+@JsS>nL~-E@g4X+I6} zrd1ZOOMdab3a0c{5`Zr2!eWP}L(o-qmJGAFD11Z@*&58(YDHYz85uTD7 zg1+HQ^hpA~CRAIaCHyOMuptk!RFZ6Asn`ws16?=&BqiB&m(SY}mh^OsaSqfJi-xmU<0O5s6iDZiUJ7bwbJr<5p!WQnE`Gm>V^*8` z=a$Uod0lwL?BJ?OEgK&8q-1wsk>LRhl7@K?ZgdoEUrzRe*1l5)^0f-3~DYf&)sPuSHI?D$+lFNq42EZi{%w{i?kH#qF z#RLi?PaXT(0m0G(ZP;=sx!;Pd(}q$)kTOI#iOC${oiS0mE=sBQmGOil@T+FjXatIB z*oNJqvp2H&%(FZuxPAlEStPaw=Qj&J>TnTAj|@g1R5C{*zE3f~vEbYu7G#m+q!u%r z_lB}LM8n}kWA~-)ZG4vP1{2Qf0 zJt4l6HBoULOZ#!^BuZ9%%Q;omeoIGwobww9dk`5UDTM*Iu~am6A9Qzg-X02)iobn? z4c{$s>X+-NjzXGa?~>x+@8={wdYzmazkKfE10x0RA?#ti(L9FZvUtjSE7y>PHjRh=O)^krtGW3A-f4XAB^pRB1HK(ZPIx#g3wv#Sa z*`JWmvHc+rS7t}=>2&h$Wh(<;8QhklQKrpl%?MnUMbz&lz<&4 zUp>_Adk}Y&ZJXRUhm+OhA5H$(8I6aAhX7c_0%HjlgSdFLlrZ1}Qqq9zw!Bo+%|cXC z%m)trh>Bk5KpISV+PQ1ED}vKtLt-BK_gbMTkPl>q1>i|aDW%z*BQ2Qpklwky&&e?f zYT@MzV}C-n@tptPr1$K{%>RF-%GW&hil)$ghH|D=i zi?OVkO1Sgc8L;Nmt&$ni#|kTpsJm)p%Pr=%mZ3p|L2^=TJeJwn_Oj%LM|+-Tddt&d z&45R>j6oFV0k}WV_)Ol7ZnfY%7vGdcP(IhJgW`qi9lkYAE15^s72EonF;}%eo!>In zofoN?G=H_1PQq(YXg4g?fozD|+efc}}$ zlOJNw1+N7Nl%4Mohxr@Zn?B~pJE0Sh@lrUKckXb4gf50jLSB2>uj*vC7ip(^B$KWJ zs86r*ha^M7>YLmP9X*|USYj&Bg43Ai(fJIVH`B+cd7@TG!5biSsKjZlTsY54oc%Qm z7`c6-IE=OMNc>O2SdPs-Y^n$^^O~i2lWn>5@uPM#zYq6!qG2>1nvq^n4}ftB!5j5pA~X5F=VRP@)2hK`C#>QiVeMryue;*TuFxjFFyY*Wrv6x z`Le|u<3?zE1qN}P3$*g>q`L_bRobmy=~R}j{T!qpa9`^CA?zz(vB+17Oe!r7=Z*FZ z4jPi1djXa`ejaHyA9tBF-W)8(@u);gnv?bq1& zUK!lb&q^G)Lr`NzIQtZrI03xq20e{30rZ;ZwZJiLr8!fQ{~d@m+B7qWh+jL_{;Og& z0r7sP_QejACD}}kDB4Npk9LBUnxOt;zFE-S7C*9GO}cRV=VQ z6Z}&CuEbpgFffEvTbdyyoG_?886Ru`oehL}Z%(cb*SzW~3jgh12I^d+kZqci4#mvy za@xjYUI+&Au?6$vma^vq51tywCFz94dm3{e+};|olx&j@2RJX7%o9yeLP&uQ*pCkq zee02!`qNC%vb54EL{icy{4cAD8p^$rzbs=4s_b@IdP4cwG#uwFu8@76tB{81;f;}D zz}``dwS+kR|1eYi5^F~KPUoe=q zViU`_{EV(@a6=nn4yN|FycI0P5LIe}tf>vM)wwyXxQf1Rh348sZi8p3UkBXY4D2|V2K7>Gk9hQ+*l%B@xQ4PgWN84;jYbavTd${6K_rzmoTy6EHs5< zLDb1tu^CJpz%g9bLg1B)6Q)P-^Db!1KgbO9{`aY1f9rLd49jw>n3v-*Yx z07h*|S+Z^MO=@)$u^-$3$_q;Zov_y`+V#8y89di?q+Ze+8*|rip>O9)O6zHJAyhtgEX$`u z&#f~)8MH-0pQA?+$i=n$KZcxTDoF2k*no0(M(T$;mRuDSQ* ze86k+@1BbkGW^ldqH#C9s(N(AsIrYaG5Q`@FI)~3*4=sL%Cse?yzohF>}OI_jZ z9q(`Qrp+awm1+=V&o&1C<_wgtFn&{2ZyO>g7Vl{nwCqGPk|oCBv|Dt#aTH&yZbGcq zE%Lft_8^Kz$aIwd3W(T+y**&CEMCe#1T*od4xnw5e+-5h;v>kO-UacWKW}bmk4o*t zI42BB(gg;W7s3Q(e@hu$`N~fUDP;0vsr9MuL&CU}H+;9U*CUW+o?$}zQLI8e&EMZI z6=j7MSs($McDJal%}sJ`j+oEFw>%DYtMh?D+26V zz-9w&IvI8mE75jb2I3*5BLDg1f3XCl{QeRUED!Ow6E!p1kjTji4QR1~%Q>HZ8zN0< z4bQlJt4JE;WhpN_gEk%5i+ph<=#Nf0;98=Q>vxA`4qAsVhh{~DW<=Z~SskC`FtyP* z7}&5&XE+$>86$e^d1YoCV=qew3`Jqp8Xzf(XN1|x64}brj5B}ZDl-18%z#1UyeQ>g zpV~!(0dYeMvl8! z*^pvcC%E&5pwSefwY&u?jEd0RQ7n=43O1u~Mio=!n%6G0+QmCqGz|9(`q-E?E<=ux zEWAS0E}NZ&7PZ{UyTbt7oHwgSbgWh-iB`;zf;h4nI|x}YWJUp3ha@~~P6l!VMdeed=y29@cqIalLUcaCD4XdCna|2qjiaIgz%$E`>kxImtW zuYmj>wuzeMyK|js0x4jvWIcCi{sv@lph}&$otXWvoL+zVEn0;RsVp*axchxe#r4=G zL_->va(;GQ8sWg;$cJ*TkwJtUO-?|4j!}`VunHehGuh9O8(InH-Bw%OXgw%>UvHJ{ zqy_5aTb8X(Bq{ZTeV0aU0ow{48m7@ZipCppwS#s?98c+&+mU#Q-*k1eJTtarCH|Q) zxeNGoaTiK;-TD4}fj@)gBAbrDg%#|*1Hp<9w!6fS)|S}^_aMrr?YUB>Zho&Tjj^`J zzLCTi{{?`AXC<}VYmFd<49w&UL3b~_I?zBvd#*}nKc z!_l*zjg_#V3&Fd)^1jx4@N3JqHs_2@E4~K6@$kP7?j)C;^r1fMmM2 zDI?-rS!16LBLKhvC{!)(5%E8Srx)ZTE~IG)?9;|>P-8xe`Nn{{hp3KJK>yoR)}U@f z*I}X4P6mQ9n322@{`;=3YeP+0_pOxIj{kxuH>2o#0OS#+R>FB}M^^lxtNSJ{J?5@{uLeotIQB7XwR!@aR9u~1{b@*eA2Ds9=9)SJ#@!A%R6gZ>11{G|1pkX zbI<15+@LPmF?3u6Uy@|$mwE#zTYRO%{A^8~SF}DxDOLEVTq4U*({5P%@zOzxyqtnp(+l5wWtWBt(eiNzzRY@zA1ry z#%Nis-2IyWTk>SqM(gd3`Gl-X*eRv3q@sUVB=a*H;SUszf;DjNhYAog3qnT(Gbg&Y zJw6&V8RN*udt@SQDm-AU&4ff-ZT@iQ26w$hxoyqsW}uQ9EP(nGS&A`(uELGg)wfkO z^23*!Mr&J3`Jmn~LW{KU;N>_0q?GV^-hXrq#H|03tD6URmhCZwL@?jvlQH&4bi|IJ z*OJ+O8&PQ?^6nLm4HOYrIQa+9tbK@SECaRG)?#lL44lKoyeJaB9u^It%ukF zay&S7kbZGDN=HQb%;OzgKC->=yl2Z`ck9O8u;b?GE%~+v_?)mlTHRqxugx2P2b~4_ zb6ga~3^lzd-=z$8un0c7n{ataf_d^Nc?$7P8CdX|?&hP#6k>O(b4oJ`4*R3T=wj4^ zilE$Kx0$pqDcMNtQe3m`b&x3XMOj=C%{Qf8S-qmh{Sh#g5>69l zCZ}vSty%)9Q6Zgv7pfBQRl+e^xDBJqQ~#*UMA4zH^>29E;9Pp|9O8Txd(Q){NxI8ag1zLlj#jC`u%QPiyq|6JlVE0%XSTKpX0|2YVAP)zJ5oTJ`}B`t$tNsx zMcOOorl7i5JS_;6zqL3l2-Yjg^t45rJld; zs*Qy_9;&J!hS%rIJEb<(SEIqzg6dMc<9f}pBYSW8@M)CBNe4h&in5JEJ7GUB%_q=p z#aQdqd(G@UKV8)afr4llH5EXIgyx#Bzy2Zczfw|YA^xq_Ac4RBVg9au{8n2%S+&s3 zwIP0~TE=`~z@0=(ye$DSN{JQ*o3Hqn;Y(!64wSrA)|4-(`y^qqRyZ9BEv`twfr9#3 zUoXVvj%$?bVw9^pY<`mb^ZLnr3x{>BE&TRxZKPtW?T1sT2nhS^Kt9Ds)wEM z-K^4f(fZ?j%hEics@}&W+-@7Q6lzSAQd`*dacQcvCHTeq{|Em6v1z$jz^+YO#Rt~3 z<_ptfLC-c|ZteF!`Mdg)c^jd?RpP^`GmPVC9M#8X)5cWy4k#^kEd9yf{evI=Bt5Gp z{$?k|c$rf$*gzWA&@SM{Bd$zX(t!6NQ-I=?8Cdkb&0|H~fRjqKx@<@K% zFRl^Yab!Wd|7*qz=~`v%%xpS)(X9QLL_d+mF9!8RyJOD2=Hnt%7@$tZEb9uO#E_;% zxt)l{`B9xV{rmGf(0qF|TTrd^W#xY#*FzVe;>2W?RMi${Rxhh&S=E?LBZQUyQ@Dnm zuzo^SZ%;SVrM|n2y%uWeY#*xnW7AbP3dr8hHylJ<&c!0=YWrnHec(O$qA}&HUW-80 z4Whz_b{l3{Z9fqn41=k7i^i;I2ruJ>b)rd;VWvyHsuqzZ`t10Z(TzU0{NCz2{mbvV zrsx0F)6JqdBRbQ9?_!by3lc^&PETuAHz+yxS20<|WY!*mR6Xk1T2B<8VJezEw4>&< z->1S-qQXx%KY#aypJ%OoSJ5Stz&6eS82W<$$V4&$QrBl^Vew*gwsF-g9S^rrl^lUT zBk9P8li#iWKE~r(@EOt&GOZnUYD!%`W5&i$pJ`(y_g|uV6pDNzhzs4F>wn}P*J^N{ zSzt}nQ_}Vr0lKKY*Q@pFA%r1qES=#}zzCR$ey> zZlgnJF=#%KoCM)!L^a84Xb)L3ve4N=duAws$z}<0G-Xx6L17#ng`MOgD4DWw1{6!d ztY&#!t32A1^U`Kpik{R~C?Dk2FtB<(K-<#zG*eJa-;zayM>^c|ymd?$+N8MWa;$Fb zM7%7ST0~0XA#}ERpmAP)x4VgGILQJxyYOlx3SJlM`2Q{Je0CcvvM`>i>+6ID0n(^x zD=iQk#6utcv#sM*Ew z^}TiL&pF@u&Oft38?!U><=yUZJHPXp9mE-eg3x+Ds%JJ@k3QZ1q7Lewj)}_P$AfAv z>0ZG?I8fAR1h#=HnJFE}Mct=7%)>RI;>3Gw@GSbdQF*v>K&D{FjtIYaTtdL#j|<+_ zST8@*ObD2@h!d42Iq_39W*y6k^8B(73-^4IMFQkc2pY2zd?M;IaJ16aPXLG#KwaZ9@~30j!3Dq3ss(HMl)9X&p{x+3q0v}k&%3f8a8 z3`#>thc;dhul)IFa%8DijecEkQ*X#3Cn9b-FV3>pPyv1;%`38EVtYu(>1%UWDT7fZ zbK5@2vqFf78lD1}bM}gjl9COY@Q+wQBmu!IH(Qcb%gIk1WA$zcUBPCQqHYG6rUbNE zv3f1W$q*Yekg20UKrfA3_RsS^r72Dci^?$jqQDvuX*tGO@|Yz0&)JSps)H)`l}W=m zt2*ZBk7`t5+HxPAwl9ftb9S7z2fNF6dsOXwtd}>bmnMz}MK!X(`z0MRs*HcG22*|z zipOI`wHI=ANsa)IA6s%RAshYm*XuhAR83n(1|`p;;&RcJ><{nPGGR8=K`Jj~_I89Z zt?jRkE+chNaV$*=>3a+zpe`wHer(5qRlXi=dfz!}eN;xlz(MQdXbLgOk{E=|U(pVpM{+rCm@Oilzb8-gX#H1!Cl94>0= zC~U6g$=v<%hwr}|O6X&Vrf&3?+ z;bz<`XCNgZ(_PbRyjo4~>;%3ocSjs(lQGQ@OfV%z-r*04N{F=aAPbi>H2 z_KqgZvpv;KFP(?vx!PeWg2=)V?2#WB0JFQP7da^hx}*-g8y0>J56ca_MEUx8ckQKN z-yB;P)Eo!qP0g=5y}Ot_iUXM&MkJuB^y6^cnP(<-`r0oQ?~uQk9|087(dq(G>FeIj z4~g^ymr({x>I6^DJ6vJ&QY7y3q68-)GAg;6ThY?b>2*kzrxjo|8D3Ms(0Lz3D`3Q% zN>DuS-_wj{7Sj=+Ikxd0{dGHHsi3O$4st>Auw9QXt10Y*?CWr#b!#K|j*>CF@M1k+ zGmqdS(Hpo*{XdhW4}&-3`Ux7RS!3#7s5JIf&1Ep_7h5g_;x9&t+GBBAh!RVycE1tK zHEeVq2>ih|ajQcP`24PHnjW&Het4F;6vvjIGilM}-f^I+esZz?5DM-|#F?8ZR|QXw zO00H9I=emjhAgg1ZPjai=T9>PahFJJ(UA-g?*&cVFd3g*vYmkf;_DxV&1L7W=r-f@ zj8!LLOXgrM8{oEKJ4Y2mpo9ivaxmfZz1smz#f^8pxq;%pby~Y7H6PLACW%ZP_o?$@ zKHN)@CB=27VqXHfvp&3>1WNJ+lYafPFek6@R!t#Lm>^02-jEM-@?iV}{L%pCI@5`N1NGER#J(JBk^V6vBZPy$5t){c z*AIR?bo6l-7zg82Qv;jGCG?m273-QL<5}8qYd#df$@c>&>gQ;py-6jUAMirj;kfS=h)5^5a@4v+o;8E?Vm}q z)tjR=?CZk)>E%;K-(aR!#`&y654~9W@A7kxaYT9%ldH&G*vFZ;t6OS zYTROnTN_b+ZVe*$So33p zNEFclMZ}@=WP%*-!p)|uWVh1{qwaO5(Am{OG?N;U)P|f{H%aLHk~4gCW@Iw|@}?M8 zn|TdRFui2QE?mR>?(W?D0~=Oi_p#8iN>?5>#Nnp7G&E`@E}CnXtJj!&(k!3XsU%(1 zmC%fm_EwcFk%*KOONlCW#FMT+NlJfAB}$SE$gvED{H)HI-RpvQpj73I+$w8nV**#| zvB-ixMPS{vFR)q67x$I+xX4OH%r8*9h^n}S&L44I7G(y8WW4H)%0{X@4FwmHu1?h_ zgwHzmXt^?>i(S@A%-T1Xu68%Zrm5(2hnl8G_b*$^_(rxI6FxDcIjFxRrd_6N%cEp5 z%Vaw-P(~)qcBZ~Qfs@wCk^k?nyiYGLL4#@&)Fp@3lzMa2kr2&ig51lvYzo5d?&vC{ z3){cII(Pds>=4pd?XRXJz($1F$dG=HZRvi3qrgkJhF=FH_)8~7pQP>8pMt+F70!)9 zY$W8QQJS3vpJX!{0pa6?2tX?1HnW<*1dFHbvl)E`eNWT-Zu{WJ6sr#=IVf^%OxY{D zmDOF>sOaZf?w*#wm#(&nRB+CVv#-v+4L?IMkG4)%9Ha(xP5Pb7q52*;aN=HTA!lQ| zH?=al9U-fpH$F!pZsm;laNOe`yFK2?lTr{w#NXvV;+;^M*Jpiv`mgh*2Cq$me8ls| zwr%@*MO%<#y#Bu>Wo~*M*;@ib%8(<6mlg*vhxCKz+Dx0`v;N?-G2g2 zX|9aD>f?%Fpt5sDnX35e|6#ss8*FGMZcR?Z(;sO(WlheWe(7f6*VTLvld@gW#O~?$ zCMWnU!AY)>Mha4NELG;Aczu?V5UGFY5ZgYCoAqk{^j1(PzIl3^=)QOyyn&d0{eKEJ B244UG literal 0 HcmV?d00001 diff --git a/runtime/syntax/cs.vim b/runtime/syntax/cs.vim index 99844b965..948b12554 100644 --- a/runtime/syntax/cs.vim +++ b/runtime/syntax/cs.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: C# " Maintainer: Johannes Zellner -" Last Change: Tue, 09 Mar 2004 14:32:13 CET +" Last Change: Mi, 13 Apr 2005 22:52:57 CEST " Filenames: *.cs " $Id$ " @@ -92,7 +92,7 @@ syn match csSpecialChar contained +\\["\\'0abfnrtvx]+ " unicode characters syn match csUnicodeNumber +\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifier syn match csUnicodeSpecifier +\\[uU]+ contained -syn region csVerbatimString start=+@"+ end=+"+ end=+$+ contains=csVerbatimSpec +syn region csVerbatimString start=+@"+ end=+"+ end=+$+ skip=+""+ contains=csVerbatimSpec syn match csVerbatimSpec +@"+he=s+1 contained syn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError diff --git a/runtime/syntax/objc.vim b/runtime/syntax/objc.vim index 5a965a0f1..1c296ddbb 100644 --- a/runtime/syntax/objc.vim +++ b/runtime/syntax/objc.vim @@ -3,7 +3,7 @@ " Maintainer: Kazunobu Kuriyama " Ex-maintainer: Anthony Hodsdon " First Author: Valentino Kyriakides <1kyriaki@informatik.uni-hamburg.de> -" Last Change: 2004 May 20 +" Last Change: 2005 Apr 13 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -30,8 +30,9 @@ endif " ObjC keywords, types, type qualifiers etc. syn keyword objcStatement self super _cmd -syn keyword objcType id Class SEL IMP BOOL nil Nil +syn keyword objcType id Class SEL IMP BOOL syn keyword objcTypeModifier bycopy in out inout oneway +syn keyword objcConstant nil Nil " Match the ObjC #import directive (like C's #include) syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ @@ -98,6 +99,7 @@ if version >= 508 || !exists("did_objc_syntax_inits") HiLink objcString cString HiLink objcSpecial Special HiLink objcProtocol None + HiLink objcConstant cConstant delcommand HiLink endif diff --git a/runtime/syntax/xml.vim b/runtime/syntax/xml.vim index af6c626cf..288ea54aa 100644 --- a/runtime/syntax/xml.vim +++ b/runtime/syntax/xml.vim @@ -3,7 +3,7 @@ " Maintainer: Johannes Zellner " Author and previous maintainer: " Paul Siegmann -" Last Change: Fri, 04 Jun 2004 10:41:54 CEST +" Last Change: Mi, 13 Apr 2005 22:40:09 CEST " Filenames: *.xml " $Id$ @@ -58,8 +58,8 @@ syn match xmlError "[<&]" " " " ^^^^^^^ -syn region xmlString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=xmlEntity display -syn region xmlString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=xmlEntity display +syn region xmlString contained start=+"+ end=+"+ contains=xmlEntity display +syn region xmlString contained start=+'+ end=+'+ contains=xmlEntity display " punctuation (within attributes) e.g. @@ -233,7 +233,7 @@ else endif -syn keyword xmlTodo contained TODO FIXME XXX display +syn keyword xmlTodo contained TODO FIXME XXX syn match xmlCommentError contained "[^>= colmax) - colmax += (((col - colmax) - / (colmax + win_col_off2(wp))) + 1) - * (colmax + win_col_off2(wp)); + { + n = colmax + win_col_off2(wp); + if (n > 0) + colmax += (((col - colmax) / n) + 1) * n; + } + for (;;) { ps = s; diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 5f79af92c..76fafeff0 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -223,6 +223,9 @@ static void ex_popup __ARGS((exarg_T *eap)); #ifndef FEAT_SYN_HL # define ex_syntax ex_ni #endif +#if !defined(FEAT_SYN_HL) || !defined(FEAT_MBYTE) +# define ex_mkspell ex_ni +#endif #ifndef FEAT_MZSCHEME # define ex_mzscheme ex_script_ni # define ex_mzfile ex_ni @@ -4149,11 +4152,11 @@ expand_filename(eap, cmdlinep, errormsgp) /* For a shell command a '!' must be escaped. */ if ((eap->usefilter || eap->cmdidx == CMD_bang) - && vim_strchr(repl, '!') != NULL) + && vim_strpbrk(repl, "!&;()") != NULL) { char_u *l; - l = vim_strsave_escaped(repl, (char_u *)"!"); + l = vim_strsave_escaped(repl, (char_u *)"!&;()"); if (l != NULL) { vim_free(repl); @@ -7328,7 +7331,8 @@ ex_equal(eap) ex_sleep(eap) exarg_T *eap; { - int n; + int n; + long len; if (cursor_valid()) { @@ -7336,7 +7340,15 @@ ex_sleep(eap) if (n >= 0) windgoto((int)n, curwin->w_wcol); } - do_sleep(eap->line2 * (*eap->arg == 'm' ? 1L : 1000L)); + + len = eap->line2; + switch (*eap->arg) + { + case 'm': break; + case NUL: len *= 1000L; break; + default: EMSG2(_(e_invarg2), eap->arg); return; + } + do_sleep(len); } /* diff --git a/src/fileio.c b/src/fileio.c index a5e888abe..d88111a13 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -2649,7 +2649,10 @@ buf_write(buf, fname, sfname, start, end, eap, append, forceit, if (reset_changed && whole && buf == curbuf - && curbuf->b_ffname == NULL +#ifdef FEAT_QUICKFIX + && !bt_nofile(buf) +#endif + && buf->b_ffname == NULL && !filtering && vim_strchr(p_cpo, CPO_FNAMEW) != NULL) { diff --git a/src/gui.c b/src/gui.c index 82124d034..54804f71c 100644 --- a/src/gui.c +++ b/src/gui.c @@ -4326,17 +4326,18 @@ ex_gui(eap) /* * This is shared between Athena, Motif and GTK. */ -static char_u *gfp_buffer; - -static void gfp_setname __ARGS((char_u *fname)); +static void gfp_setname __ARGS((char_u *fname, void *cookie)); /* * Callback function for do_in_runtimepath(). */ static void -gfp_setname(fname) +gfp_setname(fname, cookie) char_u *fname; + void *cookie; { + char_u *gfp_buffer = cookie; + if (STRLEN(fname) >= MAXPATHL) *gfp_buffer = NUL; else @@ -4356,8 +4357,8 @@ gui_find_bitmap(name, buffer, ext) if (STRLEN(name) > MAXPATHL - 14) return FAIL; sprintf((char *)buffer, "bitmaps/%s.%s", name, ext); - gfp_buffer = buffer; - if (do_in_runtimepath(buffer, FALSE, gfp_setname) == FAIL || *buffer == NUL) + if (do_in_runtimepath(buffer, FALSE, gfp_setname, buffer) == FAIL + || *buffer == NUL) return FAIL; return OK; } diff --git a/src/gui_kde_x11.cc b/src/gui_kde_x11.cc index 3bb80765a..21969c586 100644 --- a/src/gui_kde_x11.cc +++ b/src/gui_kde_x11.cc @@ -970,10 +970,20 @@ gui_mch_draw_part_cursor(int w, int h, guicolor_T color)//{{{ QPainter p(gui.w); p.setPen(color); p.fillRect( +#ifdef FEAT_RIGHTLEFT + /* vertical line should be on the right of current point */ + CURSOR_BAR_RIGHT ? FILL_X(gui.col + 1) - w : +#endif FILL_X(gui.col), FILL_Y(gui.row) + gui.char_height - h + 1, w, h - 2, QColor( color, color)); - p.drawRect(FILL_X(gui.col), FILL_Y(gui.row) + gui.char_height - h + p.drawRect( +#ifdef FEAT_RIGHTLEFT + /* vertical line should be on the right of current point */ + CURSOR_BAR_RIGHT ? FILL_X(gui.col + 1) - w : +#endif + FILL_X(gui.col), + FILL_Y(gui.row) + gui.char_height - h + (int)p_linespace / 2, w, h - (int)p_linespace); }//}}} diff --git a/src/gui_w32.c b/src/gui_w32.c index 50c5e5939..e83ff4060 100644 --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -1794,7 +1794,7 @@ gui_mch_draw_string( #ifdef FEAT_MBYTE static WCHAR *unicodebuf = NULL; static int *unicodepdy = NULL; - int unibuflen = 0; + static int unibuflen = 0; int n = 0; #endif HPEN hpen, old_pen; @@ -1923,7 +1923,7 @@ gui_mch_draw_string( break; /* Check if the Unicode buffer exists and is big enough. Create it - * with the same lengt as the multi-byte string, the number of wide + * with the same length as the multi-byte string, the number of wide * characters is always equal or smaller. */ if ((enc_utf8 || (enc_codepage > 0 && (int)GetACP() != enc_codepage) diff --git a/src/macros.h b/src/macros.h index 233df0f25..f7bb10dca 100644 --- a/src/macros.h +++ b/src/macros.h @@ -260,8 +260,10 @@ # define mb_ptr_adv(p) p += has_mbyte ? (*mb_ptr2len_check)(p) : 1 # define mb_ptr_back(s, p) p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1 # define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = *f++ +# define MB_CHARLEN(p) mb_charlen(p) #else # define mb_ptr_adv(p) ++p # define mb_ptr_back(s, p) --p # define MB_COPY_CHAR(f, t) *t++ = *f++ +# define MB_CHARLEN(p) STRLEN(p) #endif diff --git a/src/mbyte.c b/src/mbyte.c index 7f8400d5c..70bb84389 100644 --- a/src/mbyte.c +++ b/src/mbyte.c @@ -706,6 +706,11 @@ codepage_invalid: gui_mch_update_codec(); #endif +#ifdef FEAT_SYN_HL + /* Need to reload spell dictionaries */ + spell_reload(); +#endif + return NULL; } diff --git a/src/misc2.c b/src/misc2.c index c8952074c..0735e2963 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -5241,7 +5241,8 @@ qsort(base, elm_count, elm_size, cmp) } #endif -#if defined(FEAT_EX_EXTRA) || defined(FEAT_CMDL_COMPL) || defined(PROTO) +#if defined(FEAT_EX_EXTRA) || defined(FEAT_CMDL_COMPL) \ + || (defined(FEAT_SYN_HL) && defined(FEAT_MBYTE)) || defined(PROTO) /* * Sort an array of strings. */ diff --git a/src/normal.c b/src/normal.c index fb6f8f981..85d84c45b 100644 --- a/src/normal.c +++ b/src/normal.c @@ -6065,6 +6065,18 @@ nv_brackets(cap) } #endif +#ifdef FEAT_SYN_HL + /* + * "[s", "[S", "]s" and "]S": move to next spell error. + */ + else if (cap->nchar == 's' || cap->nchar == 'S') + { + if (spell_move_to(cap->cmdchar == ']' ? FORWARD : BACKWARD, + cap->nchar == 's' ? TRUE : FALSE) == FAIL) + clearopbeep(cap->oap); + } +#endif + /* Not a valid cap->nchar. */ else clearopbeep(cap->oap); @@ -8493,6 +8505,7 @@ nv_put(cap) int regname = 0; void *reg1 = NULL, *reg2 = NULL; int empty = FALSE; + int was_visual = FALSE; #endif int dir; int flags = 0; @@ -8527,6 +8540,7 @@ nv_put(cap) * Need to save and restore the registers that the delete * overwrites if the old contents is being put. */ + was_visual = TRUE; regname = cap->oap->regname; # ifdef FEAT_CLIPBOARD adjust_clip_reg(®name); @@ -8587,8 +8601,17 @@ nv_put(cap) /* If a register was saved, put it back now. */ if (reg2 != NULL) put_register(regname, reg2); + + /* What to reselect with "gv"? Selecting the just put text seems to + * be the most useful, since the original text was removed. */ + if (was_visual) + { + curbuf->b_visual_start = curbuf->b_op_start; + curbuf->b_visual_end = curbuf->b_op_end; + } + /* When all lines were selected and deleted do_put() leaves an empty - * line that needs to delete now. */ + * line that needs to be deleted now. */ if (empty && *ml_get(curbuf->b_ml.ml_line_count) == NUL) ml_delete(curbuf->b_ml.ml_line_count, TRUE); #endif diff --git a/src/os_unix.c b/src/os_unix.c index afe9bfdc0..80735b69a 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -5177,6 +5177,8 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags) else if (!intick && vim_strchr((char_u *)" '", pat[i][j]) != NULL) { + /* Put quotes around special characters, but not when + * inside ``. */ *p++ = '"'; while (pat[i][j] != NUL && vim_strchr((char_u *)" '", pat[i][j]) != NULL) diff --git a/src/quickfix.c b/src/quickfix.c index a4c016e09..e022c787a 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -2338,11 +2338,9 @@ ex_vimgrep(eap) char_u **fnames; char_u *s; char_u *p; - int i; int fi; qfline_T *prevp = NULL; long lnum; - garray_T ga; buf_T *buf; int duplicate_name = FALSE; int using_dummy; @@ -2404,12 +2402,7 @@ ex_vimgrep(eap) ; /* parse the list of arguments */ - if (get_arglist(&ga, p) == FAIL) - goto theend; - i = gen_expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, - &fcount, &fnames, EW_FILE|EW_NOTFOUND); - ga_clear(&ga); - if (i == FAIL) + if (get_arglist_exp(p, &fcount, &fnames) == FAIL) goto theend; if (fcount == 0) { diff --git a/src/regexp.c b/src/regexp.c index fe20b3a8f..8a2643dcc 100644 --- a/src/regexp.c +++ b/src/regexp.c @@ -738,65 +738,69 @@ reg_equi_class(c) { switch (c) { - case 'A': case 'À': case 'Á': case 'Â': - case 'Ã': case 'Ä': case 'Å': - regmbc('A'); regmbc('À'); regmbc('Á'); regmbc('Â'); - regmbc('Ã'); regmbc('Ä'); regmbc('Å'); + case 'A': case '\300': case '\301': case '\302': + case '\303': case '\304': case '\305': + regmbc('A'); regmbc('\300'); regmbc('\301'); + regmbc('\302'); regmbc('\303'); regmbc('\304'); + regmbc('\305'); return; - case 'C': case 'Ç': - regmbc('C'); regmbc('Ç'); + case 'C': case '\307': + regmbc('C'); regmbc('\307'); return; - case 'E': case 'È': case 'É': case 'Ê': case 'Ë': - regmbc('E'); regmbc('È'); regmbc('É'); regmbc('Ê'); - regmbc('Ë'); + case 'E': case '\310': case '\311': case '\312': case '\313': + regmbc('E'); regmbc('\310'); regmbc('\311'); + regmbc('\312'); regmbc('\313'); return; - case 'I': case 'Ì': case 'Í': case 'Î': case 'Ï': - regmbc('I'); regmbc('Ì'); regmbc('Í'); regmbc('Î'); - regmbc('Ï'); + case 'I': case '\314': case '\315': case '\316': case '\317': + regmbc('I'); regmbc('\314'); regmbc('\315'); + regmbc('\316'); regmbc('\317'); return; - case 'N': case 'Ñ': - regmbc('N'); regmbc('Ñ'); + case 'N': case '\321': + regmbc('N'); regmbc('\321'); return; - case 'O': case 'Ò': case 'Ó': case 'Ô': case 'Õ': case 'Ö': - regmbc('O'); regmbc('Ò'); regmbc('Ó'); regmbc('Ô'); - regmbc('Õ'); regmbc('Ö'); + case 'O': case '\322': case '\323': case '\324': case '\325': + case '\326': + regmbc('O'); regmbc('\322'); regmbc('\323'); + regmbc('\324'); regmbc('\325'); regmbc('\326'); return; - case 'U': case 'Ù': case 'Ú': case 'Û': case 'Ü': - regmbc('U'); regmbc('Ù'); regmbc('Ú'); regmbc('Û'); - regmbc('Ü'); + case 'U': case '\331': case '\332': case '\333': case '\334': + regmbc('U'); regmbc('\331'); regmbc('\332'); + regmbc('\333'); regmbc('\334'); return; - case 'Y': case 'Ý': - regmbc('Y'); regmbc('Ý'); + case 'Y': case '\335': + regmbc('Y'); regmbc('\335'); return; - case 'a': case 'à': case 'á': case 'â': - case 'ã': case 'ä': case 'å': - regmbc('a'); regmbc('à'); regmbc('á'); regmbc('â'); - regmbc('ã'); regmbc('ä'); regmbc('å'); + case 'a': case '\340': case '\341': case '\342': + case '\343': case '\344': case '\345': + regmbc('a'); regmbc('\340'); regmbc('\341'); + regmbc('\342'); regmbc('\343'); regmbc('\344'); + regmbc('\345'); return; - case 'c': case 'ç': - regmbc('c'); regmbc('ç'); + case 'c': case '\347': + regmbc('c'); regmbc('\347'); return; - case 'e': case 'è': case 'é': case 'ê': case 'ë': - regmbc('e'); regmbc('è'); regmbc('é'); regmbc('ê'); - regmbc('ë'); + case 'e': case '\350': case '\351': case '\352': case '\353': + regmbc('e'); regmbc('\350'); regmbc('\351'); + regmbc('\352'); regmbc('\353'); return; - case 'i': case 'ì': case 'í': case 'î': case 'ï': - regmbc('i'); regmbc('ì'); regmbc('í'); regmbc('î'); - regmbc('ï'); + case 'i': case '\354': case '\355': case '\356': case '\357': + regmbc('i'); regmbc('\354'); regmbc('\355'); + regmbc('\356'); regmbc('\357'); return; - case 'n': case 'ñ': - regmbc('n'); regmbc('ñ'); + case 'n': case '\361': + regmbc('n'); regmbc('\361'); return; - case 'o': case 'ò': case 'ó': case 'ô': case 'õ': case 'ö': - regmbc('o'); regmbc('ò'); regmbc('ó'); regmbc('ô'); - regmbc('õ'); regmbc('ö'); + case 'o': case '\362': case '\363': case '\364': case '\365': + case '\366': + regmbc('o'); regmbc('\362'); regmbc('\363'); + regmbc('\364'); regmbc('\365'); regmbc('\366'); return; - case 'u': case 'ù': case 'ú': case 'û': case 'ü': - regmbc('u'); regmbc('ù'); regmbc('ú'); regmbc('û'); - regmbc('ü'); + case 'u': case '\371': case '\372': case '\373': case '\374': + regmbc('u'); regmbc('\371'); regmbc('\372'); + regmbc('\373'); regmbc('\374'); return; - case 'y': case 'ý': case 'ÿ': - regmbc('y'); regmbc('ý'); regmbc('ÿ'); + case 'y': case '\375': case '\377': + regmbc('y'); regmbc('\375'); regmbc('\377'); return; } } diff --git a/src/screen.c b/src/screen.c index 70c7ff189..b2e118127 100644 --- a/src/screen.c +++ b/src/screen.c @@ -3605,7 +3605,7 @@ win_line(wp, lnum, startrow, endrow) iswordc = spell_iswordc(prev_ptr); if (iswordc && !prev_iswordc) { - word_end = v + spell_check(wp, prev_ptr, + word_end = v + spell_check(wp, line, prev_ptr, &spell_attr); /* In Insert mode only highlight a word that * doesn't touch the cursor. */ @@ -8002,7 +8002,7 @@ showmode() if (gui.in_use) { if (hangul_input_state_get()) - MSG_PUTS_ATTR(" ÇѱÛ", attr); /* HANGUL */ + MSG_PUTS_ATTR(" \307\321\261\333", attr); /* HANGUL */ } #endif #ifdef FEAT_INS_EXPAND diff --git a/src/spell.c b/src/spell.c index 30a02ab41..e3a97fc83 100644 --- a/src/spell.c +++ b/src/spell.c @@ -16,24 +16,3881 @@ * "word" is either a "dword" or an "nword". */ +/* + * Why doesn't Vim use aspell/ispell/myspell/etc.? + * See ":help develop-spell". + */ + #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) # include /* for lseek(), must be before vim.h */ #endif -#include "vim.h" +#include "vim.h" + +#if defined(FEAT_SYN_HL) || defined(PROTO) + +#ifdef HAVE_FCNTL_H +# include +#endif + +#define MAXWLEN 100 /* assume max. word len is this many bytes */ + +/* + * Structure that is used to store the text from the language file. This + * avoids the need to allocate space for each individual word. It's allocated + * in big chunks for speed. + */ +#define SBLOCKSIZE 4096 /* default size of sb_data */ +typedef struct sblock_S sblock_T; +struct sblock_S +{ + sblock_T *sb_next; /* next block in list */ + char_u sb_data[1]; /* data, actually longer */ +}; + +/* Info from "REP" entries in ".aff" file used in af_rep. */ +typedef struct repentry_S +{ + char_u *re_from; + char_u *re_to; +} repentry_T; + +/* + * Structure to store affix info. + */ +typedef struct affitem_S affitem_T; +struct affitem_S +{ + affitem_T *ai_next; /* next affix with same ai_add[] or NULL */ + short_u ai_nr; /* affix number */ + char_u ai_combine; /* prefix combines with suffix */ + char_u ai_choplen; /* length of ai_chop in bytes */ + char_u ai_addlen; /* length of ai_add in bytes */ + char_u *ai_chop; /* text chopped off basic word (can be NULL) */ + char_u ai_add[1]; /* text added to basic word (actually longer) */ +}; + +/* Get affitem_T pointer from hashitem that uses ai_add */ +static affitem_T dumai; +#define HI2AI(hi) ((affitem_T *)((hi)->hi_key - (dumai.ai_add - (char_u *)&dumai))) + +/* + * Structure used to store words and other info for one language. + */ +typedef struct slang_S slang_T; +struct slang_S +{ + slang_T *sl_next; /* next language */ + char_u *sl_name; /* language name "en", "en.rare", "nl", etc. */ + hashtab_T sl_words; /* main word table, fword_T */ + int sl_prefcnt; /* number of prefix NRs */ + garray_T sl_preftab; /* list of hashtables to lookup prefixes */ + affitem_T *sl_prefzero; /* list of prefixes with zero add length */ + int sl_suffcnt; /* number of suffix NRs */ + garray_T sl_sufftab; /* list of hashtables to lookup suffixes */ + affitem_T *sl_suffzero; /* list of suffixes with zero add length */ + char_u *sl_try; /* "TRY" from .aff file */ + garray_T sl_rep; /* list of repentry_T entries from REP lines */ + char_u sl_regions[17]; /* table with up to 8 region names plus NUL */ + sblock_T *sl_block; /* list with allocated memory blocks */ + int sl_error; /* error while loading */ +}; + +static slang_T *first_lang = NULL; + +/* + * Structure to store an addition to a basic word. + */ +typedef struct addword_S addword_T; +struct addword_S +{ + addword_T *aw_next; /* next addition */ + char_u aw_flags; /* ADD_ flags */ + char_u aw_leadlen; /* length of lead in bytes */ + char_u aw_wordlen; /* length of aw_word in bytes */ + char_u aw_region; /* region for word with this addition */ + char_u aw_word[1]; /* text, actually longer: case-folded addition + plus, with ADD_KEEPCAP: keep-case addition */ +}; + +/* + * Structure to store a basic word. + */ +typedef struct fword_S fword_T; +struct fword_S +{ + fword_T *fw_next; /* same basic word with different caps */ + char_u fw_region; /* region bits */ + char_u fw_prefixcnt; /* number of prefix numbers */ + char_u fw_suffixcnt; /* number of suffix numbers */ + short_u fw_flags; /* BWF_ flags */ + void *fw_prefix; /* table with prefix numbers */ + void *fw_suffix; /* table with suffix numbers */ + addword_T *fw_adds; /* first addword_T entry */ + char_u fw_word[1]; /* actually longer: case folded word, or + keep-case word when (flags & BWF_KEEPCAP) */ +}; + +/* Get fword_T pointer from hashitem that uses fw_word */ +static fword_T dumfw; +#define HI2FWORD(hi) ((fword_T *)((hi)->hi_key - (dumfw.fw_word - (char_u *)&dumfw))) + +#define REGION_ALL 0xff + + +/* + * Structure used in "b_langp", filled from 'spelllang'. + */ +typedef struct langp_S +{ + slang_T *lp_slang; /* info for this language (NULL for last one) */ + int lp_region; /* bitmask for region or REGION_ALL */ +} langp_T; + +#define LANGP_ENTRY(ga, i) (((langp_T *)(ga).ga_data) + (i)) + +#define SP_OK 0 +#define SP_BAD 1 +#define SP_RARE 2 +#define SP_LOCAL 3 + +/* flags used for basic words in the spell file */ +#define BWF_VALID 0x01 /* word is valid without additions */ +#define BWF_REGION 0x02 /* region byte follows */ +#define BWF_ONECAP 0x04 /* first letter must be capital */ +#define BWF_SUFFIX 0x08 /* has suffix NR list */ +#define BWF_SECOND 0x10 /* second flags byte follows */ + +#define BWF_ADDS 0x0100 /* there are additions */ +#define BWF_PREFIX 0x0200 /* has prefix NR list */ +#define BWF_ALLCAP 0x0400 /* all letters must be capital (not used + for single-letter words) */ +#define BWF_KEEPCAP 0x0800 /* Keep case as-is */ + +/* flags used for addition in the spell file */ +#define ADD_REGION 0x02 /* region byte follows */ +#define ADD_ONECAP 0x04 /* first letter must be capital */ +#define ADD_ALLCAP 0x40 /* all letters must be capital (not used + for single-letter words) */ +#define ADD_KEEPCAP 0x80 /* fixed case */ + +/* Translate ADD_ flags to BWF_ flags. + * (Needed to keep ADD_ flags in one byte.) */ +#define ADD2BWF(x) (((x) & 0x0f) | (((x) & 0xf0) << 4)) + +#define VIMSPELLMAGIC "VIMspell01" /* string at start of Vim spell file */ +#define VIMSPELLMAGICL 10 + +/* + * Structure to store info for word matching. + */ +typedef struct matchinf_S +{ + langp_T *mi_lp; /* info for language and region */ + slang_T *mi_slang; /* info for the language */ + char_u *mi_line; /* start of line containing word */ + char_u *mi_word; /* start of word being checked */ + char_u *mi_end; /* first non-word char after mi_word */ + char_u *mi_wend; /* end of matching word (is "mi_end" + * or further) */ + char_u *mi_cword; /* word to check, can be "mi_fword" */ + char_u mi_fword[MAXWLEN + 1]; /* "mi_word" to "mi_end" case-folded */ + int mi_faddlen; /* length of valid bytes in "mi_fadd" */ + char_u *mi_faddp; /* next char to be added to "mi_fadd" */ + char_u mi_fadd[MAXWLEN + 1]; /* "mi_end" and further case-folded */ + int mi_result; /* result so far: SP_BAD, SP_OK, etc. */ + int mi_capflags; /* BWF_ONECAP BWF_ALLCAP BWF_KEEPCAP */ +} matchinf_T; + +static int word_match __ARGS((matchinf_T *mip)); +static int check_adds __ARGS((matchinf_T *mip, fword_T *fw, int req_pref, int req_suf)); +static int supports_afffix __ARGS((int cnt, void *afffix, int afffixcnt, int nr)); +static int prefix_match __ARGS((matchinf_T *mip)); +static int suffix_match __ARGS((matchinf_T *mip)); +static int match_caps __ARGS((int flags, char_u *caseword, matchinf_T *mip, char_u *cword, char_u *end)); +static slang_T *slang_alloc __ARGS((char_u *lang)); +static void slang_free __ARGS((slang_T *lp)); +static slang_T *spell_load_lang __ARGS((char_u *lang)); +static void spell_load_file __ARGS((char_u *fname, void *cookie)); +static int spell_load_affixes __ARGS((FILE *fd, slang_T *lp, int *bl_usedp, int affm, void **affp)); +static void *getroom __ARGS((slang_T *lp, int *bl_used, int len)); +static int find_region __ARGS((char_u *rp, char_u *region)); +static int captype __ARGS((char_u *word, char_u *end)); + +/* + * Main spell-checking function. + * "ptr" points to the start of a word. + * "*attrp" is set to the attributes for a badly spelled word. For a non-word + * or when it's OK it remains unchanged. + * This must only be called when 'spelllang' is not empty. + * Returns the length of the word in bytes, also when it's OK, so that the + * caller can skip over the word. + */ + int +spell_check(wp, line, ptr, attrp) + win_T *wp; /* current window */ + char_u *line; /* start of line where "ptr" points into */ + char_u *ptr; + int *attrp; +{ + matchinf_T mi; /* Most things are put in "mi" so that it can + be passed to functions quickly. */ + + /* Find the end of the word. We already know that *ptr is a word char. */ + mi.mi_word = ptr; + mi.mi_end = ptr; + do + { + mb_ptr_adv(mi.mi_end); + } while (*mi.mi_end != NUL && spell_iswordc(mi.mi_end)); + + /* A word starting with a number is always OK. */ + if (*ptr >= '0' && *ptr <= '9') + return (int)(mi.mi_end - ptr); + + /* Make case-folded copy of the Word. Compute its hash value. */ + (void)str_foldcase(ptr, mi.mi_end - ptr, mi.mi_fword, MAXWLEN + 1); + mi.mi_cword = mi.mi_fword; + + /* The word is bad unless we find it in the dictionary. */ + mi.mi_result = SP_BAD; + mi.mi_wend = mi.mi_end; + mi.mi_faddp = mi.mi_end; + mi.mi_faddlen = 0; + mi.mi_capflags = captype(ptr, mi.mi_end); + mi.mi_line = line; + + /* + * Loop over the languages specified in 'spelllang'. + * We check them all, because a matching word may have additions that are + * longer than an already found matching word. + */ + for (mi.mi_lp = LANGP_ENTRY(wp->w_buffer->b_langp, 0); + mi.mi_lp->lp_slang != NULL; ++mi.mi_lp) + { + /* + * Check for a matching word. + * If not found or wrong region try removing prefixes (and then + * suffixes). + * If still not found or wrong region try removing suffixes. + */ + mi.mi_slang = mi.mi_lp->lp_slang; + if (!word_match(&mi) || mi.mi_result != SP_OK) + if (!prefix_match(&mi) || mi.mi_result != SP_OK) + suffix_match(&mi); + } + + if (mi.mi_result != SP_OK) + { + if (mi.mi_result == SP_BAD) + *attrp = highlight_attr[HLF_SPB]; + else if (mi.mi_result == SP_RARE) + *attrp = highlight_attr[HLF_SPR]; + else + *attrp = highlight_attr[HLF_SPL]; + } + + return (int)(mi.mi_wend - ptr); +} + +/* + * Check if the word "mip->mi_cword" matches. + */ + static int +word_match(mip) + matchinf_T *mip; +{ + hash_T fhash = hash_hash(mip->mi_cword); + hashitem_T *hi; + fword_T *fw; + int valid = FALSE; + + hi = hash_lookup(&mip->mi_slang->sl_words, mip->mi_cword, fhash); + if (HASHITEM_EMPTY(hi)) + return FALSE; + + /* + * Find a basic word for which the case of word "cword" is correct. + * If it is, check additions and use the longest one. + */ + for (fw = HI2FWORD(hi); fw != NULL; fw = fw->fw_next) + if (match_caps(fw->fw_flags, fw->fw_word, mip, + mip->mi_word, mip->mi_end)) + valid |= check_adds(mip, fw, -1, -1); + + return valid; +} + +/* + * Check a matching basic word for additions. + * Return TRUE if we have a valid match. + */ + static int +check_adds(mip, fw, req_pref, req_suf) + matchinf_T *mip; + fword_T *fw; + int req_pref; /* required prefix nr, -1 if none */ + int req_suf; /* required suffix nr, -1 if none */ +{ + int valid = FALSE; + addword_T *aw; + char_u *p; + int addlen; + int fl; + + /* A word may be valid without additions. */ + if ((fw->fw_flags & BWF_VALID) + && (req_pref < 0 || supports_afffix(mip->mi_slang->sl_prefcnt, + fw->fw_prefix, fw->fw_prefixcnt, req_pref)) + && (req_suf < 0 || supports_afffix(mip->mi_slang->sl_suffcnt, + fw->fw_suffix, fw->fw_suffixcnt, req_suf))) + { + valid = TRUE; + if (mip->mi_result != SP_OK) + { + if ((fw->fw_region & mip->mi_lp->lp_region) == 0) + mip->mi_result = SP_LOCAL; + else + mip->mi_result = SP_OK; + } + } + + /* + * Check additions, both before and after the word. + * This may make the word longer, thus we also need to check + * when we already found a matching word. + */ + for (aw = fw->fw_adds; aw != NULL; aw = aw->aw_next) + { + if (aw->aw_leadlen > 0) + { + /* There is a leader, verify that it matches. */ + if (aw->aw_leadlen > mip->mi_word - mip->mi_line + || STRNCMP(mip->mi_word - aw->aw_leadlen, + aw->aw_word, aw->aw_leadlen) != 0) + continue; + if (mip->mi_word - aw->aw_leadlen > mip->mi_line) + { + /* There must not be a word character just before the + * leader. */ + p = mip->mi_word - aw->aw_leadlen; + mb_ptr_back(mip->mi_line, p); + if (spell_iswordc(p)) + continue; + } + /* Leader matches. Addition is rest of "aw_word". */ + p = aw->aw_word + aw->aw_leadlen; + } + else + /* No leader, use whole of "aw_word" for addition. */ + p = aw->aw_word; + + addlen = aw->aw_wordlen - aw->aw_leadlen; + if (addlen > 0) + { + /* Check for matching addition and no word character after it. + * First make sure we have enough case-folded chars to compare + * with. */ + while (mip->mi_faddlen <= addlen) + { + if (*mip->mi_faddp == NUL) + { + mip->mi_fadd[mip->mi_faddlen] = NUL; + break; + } +#ifdef FEAT_MBYTE + fl = (*mb_ptr2len_check)(mip->mi_faddp); +#else + fl = 1; +#endif + (void)str_foldcase(mip->mi_faddp, fl, + mip->mi_fadd + mip->mi_faddlen, + MAXWLEN - mip->mi_faddlen); + mip->mi_faddp += fl; + mip->mi_faddlen += STRLEN(mip->mi_fadd + mip->mi_faddlen); + } + + if (STRNCMP(mip->mi_fadd, p, addlen) != 0 + || (mip->mi_fadd[addlen] != NUL + && spell_iswordc(mip->mi_fadd + addlen))) + continue; + + /* Compute the length in the original word, before case folding. */ +#ifdef FEAT_MBYTE + if (has_mbyte) + { + int l; + + p = mip->mi_end; + for (l = 0; l < addlen; + l += (*mb_ptr2len_check)(mip->mi_fadd + l)) + mb_ptr_adv(p); + addlen = p - mip->mi_end; + } +#endif + + /* Check case of the addition. */ + if (!match_caps(ADD2BWF(aw->aw_flags), + aw->aw_word + aw->aw_wordlen + 1, mip, + mip->mi_end, mip->mi_end + addlen)) + continue; + } + + /* Match! Use the new length if it's longer. */ + if (mip->mi_wend < mip->mi_end + addlen) + mip->mi_wend = mip->mi_end + addlen; + + valid = TRUE; + if (mip->mi_result != SP_OK) + { + if ((aw->aw_region & mip->mi_lp->lp_region) == 0) + mip->mi_result = SP_LOCAL; + else + mip->mi_result = SP_OK; + } + } + + return valid; +} + +/* + * Return TRUE if word "fw" supports afffix "nr". + */ + static int +supports_afffix(cnt, afffix, afffixcnt, nr) + int cnt; + void *afffix; + int afffixcnt; + int nr; +{ + char_u *pc; + short_u *ps; + int i; + + if (cnt <= 256) + { + /* char_u affix numbers */ + pc = afffix; + for (i = afffixcnt; --i >= 0; ) + if (*pc++ == nr) + return TRUE; + } + else + { + /* short_u affix numbers */ + ps = afffix; + for (i = afffixcnt; --i >= 0; ) + if (*ps++ == nr) + return TRUE; + } + return FALSE; +} + +/* + * Try finding a match for "mip->mi_cword" by removing prefixes. + */ + static int +prefix_match(mip) + matchinf_T *mip; +{ + int len = 0; + int charlen = 0; + int cc; + affitem_T *ai; + char_u pword[MAXWLEN + 1]; + fword_T *fw; + hashtab_T *ht; + hashitem_T *hi; + int i; + int found_valid = FALSE; + int cstart_charlen = 0; + char_u *cstart = mip->mi_word; + int capflags_save = mip->mi_capflags; + char_u *p; + + /* + * Check for prefixes with different character lengths. + * Start with zero length (only chop off). + */ + for (charlen = 0; charlen <= mip->mi_slang->sl_preftab.ga_len; ++charlen) + { + if (charlen > 0) + { +#ifdef FEAT_MBYTE + if (has_mbyte) + len += mb_ptr2len_check(mip->mi_cword + len); + else +#endif + len += 1; + } + if (mip->mi_cword[len] == NUL) /* end of word, no prefix possible */ + break; + + if (charlen == 0) + ai = mip->mi_slang->sl_prefzero; + else + { + /* Get pointer to hashtab for prefix of this many chars. */ + ht = ((hashtab_T *)mip->mi_slang->sl_preftab.ga_data) + charlen - 1; + if (ht->ht_used == 0) + continue; + + cc = mip->mi_cword[len]; + mip->mi_cword[len] = NUL; + hi = hash_find(ht, mip->mi_cword); + mip->mi_cword[len] = cc; + + if (HASHITEM_EMPTY(hi)) + ai = NULL; + else + ai = HI2AI(hi); + } + + /* Loop over all matching prefixes. */ + for ( ; ai != NULL; ai = ai->ai_next) + { + /* Create the basic word by removing the prefix and adding the + * chop string. */ + mch_memmove(pword, ai->ai_chop, ai->ai_choplen); + STRCPY(pword + ai->ai_choplen, mip->mi_cword + ai->ai_addlen); + + /* Adjust the word start for case checks, we only check the + * part after the prefix. */ + while (cstart_charlen < charlen) + { + mb_ptr_adv(cstart); + ++cstart_charlen; + } + + /* Removing the prefix may change the caps, e.g. for + * "deAlf" removing "de" makes it ONECAP. */ + mip->mi_capflags = captype(cstart, mip->mi_end); + + /* Find the basic word. */ + hi = hash_find(&mip->mi_slang->sl_words, pword); + if (!HASHITEM_EMPTY(hi)) + { + /* Check if the word supports this prefix. */ + for (fw = HI2FWORD(hi); fw != NULL; fw = fw->fw_next) + if (match_caps(fw->fw_flags, fw->fw_word, mip, + cstart, mip->mi_end)) + found_valid |= check_adds(mip, fw, ai->ai_nr, -1); + + if (found_valid && mip->mi_result == SP_OK) + { + /* Found a valid word, no need to try other suffixes. */ + mip->mi_capflags = capflags_save; + return TRUE; + } + } + + /* No matching basic word without prefix. When combining is + * allowed try with suffixes. */ + if (ai->ai_combine) + { + /* Pass the word with prefix removed to suffix_match(). */ + mip->mi_cword = pword; + p = mip->mi_word; + mip->mi_word = cstart; + i = suffix_match(mip); + mip->mi_cword = mip->mi_fword; + mip->mi_word = p; + if (i) + { + mip->mi_capflags = capflags_save; + return TRUE; + } + } + } + } + + mip->mi_capflags = capflags_save; + return FALSE; +} + +/* + * Try finding a match for "mip->mi_cword" by removing suffixes. + */ + static int +suffix_match(mip) + matchinf_T *mip; +{ + char_u *sufp; + int charlen; + affitem_T *ai; + char_u pword[MAXWLEN + 1]; + fword_T *fw; + hashtab_T *ht; + hashitem_T *hi; + int tlen; + int cend_charlen = 0; + char_u *cend = mip->mi_end; + int found_valid = FALSE; + int capflags_save = mip->mi_capflags; + + /* + * Try suffixes of different length, starting with an empty suffix (chop + * only, thus adds something). + * Stop checking if there are no suffixes with so many characters. + */ + sufp = mip->mi_cword + STRLEN(mip->mi_cword); + for (charlen = 0; charlen <= mip->mi_slang->sl_sufftab.ga_len; ++charlen) + { + /* Move the pointer to the possible suffix back one character, unless + * doing the first round (empty suffix). */ + if (charlen > 0) + { + mb_ptr_back(mip->mi_cword, sufp); + if (sufp <= mip->mi_cword) /* start of word, no suffix possible */ + break; + } + + if (charlen == 0) + ai = mip->mi_slang->sl_suffzero; + else + { + /* Get pointer to hashtab for suffix of this many chars. */ + ht = ((hashtab_T *)mip->mi_slang->sl_sufftab.ga_data) + charlen - 1; + if (ht->ht_used == 0) + continue; + + hi = hash_find(ht, sufp); + if (HASHITEM_EMPTY(hi)) + ai = NULL; + else + ai = HI2AI(hi); + } + + if (ai != NULL) + { + /* Found a list of matching suffixes. Now check that there is one + * we can use. */ + tlen = sufp - mip->mi_cword; /* length of word without suffix */ + mch_memmove(pword, mip->mi_cword, tlen); + + for ( ; ai != NULL; ai = ai->ai_next) + { + /* Found a matching suffix. Create the basic word by removing + * the suffix and adding the chop string. */ + if (ai->ai_choplen == 0) + pword[tlen] = NUL; + else + mch_memmove(pword + tlen, ai->ai_chop, ai->ai_choplen + 1); + + /* Find the basic word. */ + hi = hash_find(&mip->mi_slang->sl_words, pword); + if (!HASHITEM_EMPTY(hi)) + { + /* Adjust the end for case checks, we only check the part + * before the suffix. */ + while (cend_charlen < charlen) + { + mb_ptr_back(mip->mi_word, cend); + ++cend_charlen; + } + + /* Removing the suffix may change the caps, e.g. for + * "UFOs" removing 's' makes it ALLCAP. */ + mip->mi_capflags = captype(mip->mi_word, cend); + + /* Check if the word supports this suffix. */ + for (fw = HI2FWORD(hi); fw != NULL; fw = fw->fw_next) + if (match_caps(fw->fw_flags, fw->fw_word, mip, + mip->mi_word, cend)) + found_valid |= check_adds(mip, fw, -1, ai->ai_nr); + + if (found_valid && mip->mi_result == SP_OK) + { + /* Found a valid word, no need to try other suffixes. */ + mip->mi_capflags = capflags_save; + return TRUE; + } + } + } + } + } + + mip->mi_capflags = capflags_save; + return FALSE; +} + +/* + * Return TRUE if case of "cword" meets the requirements of case flags + * "flags". + */ + static int +match_caps(flags, caseword, mip, cword, end) + int flags; /* flags required by basic word or addition */ + char_u *caseword; /* word with case as required */ + matchinf_T *mip; + char_u *cword; /* word to compare against "caseword" */ + char_u *end; /* end of "cword" */ +{ + char_u *p; + int c; + int len; + int capflags = mip->mi_capflags; /* flags of checked word */ + int past_second; + + if ((capflags & BWF_KEEPCAP) == 0 && end > mip->mi_end) + { + /* If "end" is past "mip->mi_end" we need to check the characters + * after the basic word. */ +#ifdef FEAT_MBYTE + past_second = (mip->mi_word + (*mb_ptr2len_check)(mip->mi_word) + < mip->mi_end); +#else + past_second = mip->mi_word + 1 < mip->mi_end; +#endif + for (p = mip->mi_end; p < end; ) + { + if (!spell_iswordc(p)) + mb_ptr_adv(p); + else + { +#ifdef FEAT_MBYTE + if (has_mbyte) + c = mb_ptr2char_adv(&p); + else +#endif + c = *p++; + if (MB_ISUPPER(c)) + { + if (capflags == 0 || (capflags & BWF_ONECAP)) + { + capflags = BWF_KEEPCAP; /* lU or UlU */ + break; + } + } + else + { + if (capflags & BWF_ALLCAP) + { + if (past_second) + { + capflags = BWF_KEEPCAP; /* UUl */ + break; + } + capflags = BWF_ONECAP; /* Uu */ + } + } + past_second = TRUE; + } + } + } + + if (capflags == BWF_ALLCAP) + return TRUE; /* All caps is always OK. */ + + if (flags & BWF_KEEPCAP) + { + len = STRLEN(caseword); + return (len == end - cword && STRNCMP(caseword, cword, len) == 0); + } + + if (flags & BWF_ALLCAP) + return FALSE; /* need ALLCAP, already checked above */ + + if (flags & BWF_ONECAP) + return capflags == BWF_ONECAP; + + return capflags != BWF_KEEPCAP; /* no case check, only KEEPCAP is bad */ +} + +/* + * Move to next spell error. + * Return OK if found, FAIL otherwise. + */ + int +spell_move_to(dir, allwords) + int dir; /* FORWARD or BACKWARD */ + int allwords; /* TRUE for "[s" and "]s" */ +{ + pos_T pos; + char_u *line; + char_u *p; + int wc; + int nwc; + int attr = 0; + int len; + + if (!curwin->w_p_spell || *curwin->w_buffer->b_p_spl == NUL) + { + EMSG(_("E756: Spell checking not enabled")); + return FAIL; + } + + /* TODO: moving backwards */ + + /* Start looking for bad word at the start of the line, because we can't + * start halfway a word and know where it ends. */ + pos = curwin->w_cursor; + pos.col = 0; + wc = FALSE; + + while (!got_int) + { + line = ml_get(pos.lnum); + p = line + pos.col; + while (*p != NUL) + { + nwc = spell_iswordc(p); + if (!wc && nwc) + { + /* start of word */ + /* TODO: check for bad word attr */ + len = spell_check(curwin, line, p, &attr); + if (attr != 0) + { + if (curwin->w_cursor.lnum < pos.lnum + || (curwin->w_cursor.lnum == pos.lnum + && curwin->w_cursor.col < (colnr_T)(p - line))) + { + curwin->w_cursor.lnum = pos.lnum; + curwin->w_cursor.col = p - line; + return OK; + } + attr = 0; /* bad word is before or at cursor */ + } + p += len; + if (*p == NUL) + break; + nwc = FALSE; + } + + /* advance to next character */ + mb_ptr_adv(p); + wc = nwc; + } + + /* Advance to next line. */ + if (pos.lnum == curbuf->b_ml.ml_line_count) + return FAIL; + ++pos.lnum; + pos.col = 0; + wc = FALSE; + + line_breakcheck(); + } + + return FAIL; /* interrupted */ +} + +/* + * Load word list for "lang" from a Vim spell file. + * "lang" must be the language without the region: "en" or "en-rare". + */ + static slang_T * +spell_load_lang(lang) + char_u *lang; +{ + slang_T *lp; + char_u fname_enc[80]; + char_u *p; + int r; + + lp = slang_alloc(lang); + if (lp != NULL) + { + /* Find all spell files for "lang" in 'runtimepath' and load them. + * Use 'encoding', except that we use "latin1" for "latin9". */ +#ifdef FEAT_MBYTE + if (STRLEN(p_enc) < 60 && STRCMP(p_enc, "iso-8859-15") != 0) + p = p_enc; + else +#endif + p = (char_u *)"latin1"; + sprintf((char *)fname_enc, "spell/%s.%s.spl", lang, p); + + r = do_in_runtimepath(fname_enc, TRUE, spell_load_file, lp); + if (r == FAIL || lp->sl_error) + { + slang_free(lp); + lp = NULL; + if (r == FAIL) + smsg((char_u *)_("Warning: Cannot find word list \"%s\""), + fname_enc + 6); + } + else + { + lp->sl_next = first_lang; + first_lang = lp; + } + } + + return lp; +} + +/* + * Allocate a new slang_T. + * Caller must fill "sl_next". + */ + static slang_T * +slang_alloc(lang) + char_u *lang; +{ + slang_T *lp; + + lp = (slang_T *)alloc(sizeof(slang_T)); + if (lp != NULL) + { + lp->sl_name = vim_strsave(lang); + hash_init(&lp->sl_words); + ga_init2(&lp->sl_preftab, sizeof(hashtab_T), 4); + ga_init2(&lp->sl_sufftab, sizeof(hashtab_T), 4); + lp->sl_prefzero = NULL; + lp->sl_suffzero = NULL; + lp->sl_try = NULL; + ga_init2(&lp->sl_rep, sizeof(repentry_T), 4); + lp->sl_regions[0] = NUL; + lp->sl_block = NULL; + lp->sl_error = FALSE; + } + return lp; +} + +/* + * Free the contents of an slang_T and the structure itself. + */ + static void +slang_free(lp) + slang_T *lp; +{ + sblock_T *sp; + int i; + + vim_free(lp->sl_name); + hash_clear(&lp->sl_words); + for (i = 0; i < lp->sl_preftab.ga_len; ++i) + hash_clear(((hashtab_T *)lp->sl_preftab.ga_data) + i); + ga_clear(&lp->sl_preftab); + for (i = 0; i < lp->sl_sufftab.ga_len; ++i) + hash_clear(((hashtab_T *)lp->sl_sufftab.ga_data) + i); + ga_clear(&lp->sl_sufftab); + ga_clear(&lp->sl_rep); + vim_free(lp->sl_try); + while (lp->sl_block != NULL) + { + sp = lp->sl_block; + lp->sl_block = sp->sb_next; + vim_free(sp); + } + vim_free(lp); +} + +/* + * Load one spell file into an slang_T. + * Invoked through do_in_runtimepath(). + */ + static void +spell_load_file(fname, cookie) + char_u *fname; + void *cookie; /* points to the slang_T to be filled */ +{ + slang_T *lp = cookie; + FILE *fd; + char_u buf[MAXWLEN + 1]; + char_u cbuf[MAXWLEN + 1]; + char_u fbuf[MAXWLEN + 1]; + char_u *p; + int itm; + int i; + int affcount; + int affnr; + int affflags; + int affitemcnt; + int bl_used = SBLOCKSIZE; + int widx; + int prefm; /* 1 if <= 256 prefixes, sizeof(short_u) otherw. */ + int suffm; /* 1 if <= 256 suffixes, sizeof(short_u) otherw. */ + int wlen; + int flags; + affitem_T *ai, *ai2, **aip; + int round; + char_u *save_sourcing_name = sourcing_name; + linenr_T save_sourcing_lnum = sourcing_lnum; + int cnt; + int choplen; + int addlen; + int leadlen; + int wordcount; + fword_T *fw, *fw2; + garray_T *gap; + hashtab_T *ht; + hashitem_T *hi; + hash_T hash; + int adds; + addword_T *aw; + int flen; + + fd = fopen((char *)fname, "r"); + if (fd == NULL) + { + EMSG2(_(e_notopen), fname); + goto errorend; + } + + /* Set sourcing_name, so that error messages mention the file name. */ + sourcing_name = fname; + sourcing_lnum = 0; + + /*

: ... */ + for (i = 0; i < VIMSPELLMAGICL; ++i) + buf[i] = getc(fd); /* */ + if (STRNCMP(buf, VIMSPELLMAGIC, VIMSPELLMAGICL) != 0) + { + EMSG(_("E757: Wrong file ID in spell file")); + goto errorend; + } + + cnt = getc(fd); /* */ + if (cnt == EOF) + { +truncerr: + EMSG(_("E758: Truncated spell file")); + goto errorend; + } + if (cnt > 8) + { +formerr: + EMSG(_("E759: Format error in spell file")); + goto errorend; + } + for (i = 0; i < cnt; ++i) + { + lp->sl_regions[i * 2] = getc(fd); /* */ + lp->sl_regions[i * 2 + 1] = getc(fd); + } + lp->sl_regions[cnt * 2] = NUL; + + /* round 1: : ... + * round 2: : ... */ + for (round = 1; round <= 2; ++round) + { + affcount = (getc(fd) << 8) + getc(fd); /* */ + if (affcount < 0) + goto truncerr; + if (round == 1) + { + gap = &lp->sl_preftab; + aip = &lp->sl_prefzero; + lp->sl_prefcnt = affcount; + prefm = affcount > 256 ? sizeof(short_u) : 1; + } + else + { + gap = &lp->sl_sufftab; + aip = &lp->sl_suffzero; + lp->sl_suffcnt = affcount; + suffm = affcount > 256 ? sizeof(short_u) : 1; + } + + i = (getc(fd) << 8) + getc(fd); /* */ + /* afftotcnt is not used */ + + /* + * For each affix NR there can be several affixes. + */ + for (affnr = 0; affnr < affcount; ++affnr) + { + /* : ... */ + affflags = getc(fd); /* */ + if (affflags == EOF) + goto truncerr; + affitemcnt = (getc(fd) << 8) + getc(fd); /* */ + if (affitemcnt < 0) + goto truncerr; + for (itm = 0; itm < affitemcnt; ++itm) + { + /* : */ + choplen = getc(fd); /* */ + if (choplen == EOF) + goto truncerr; + if (choplen >= MAXWLEN) + goto formerr; + for (i = 0; i < choplen; ++i) /* */ + buf[i] = getc(fd); + buf[i] = NUL; + addlen = getc(fd); /* */ + if (addlen == EOF) + goto truncerr; + /* Get room to store the affitem_T, chop and add strings. */ + p = (char_u *)getroom(lp, &bl_used, + sizeof(affitem_T) + choplen + addlen + 1); + if (p == NULL) + goto errorend; + + ai = (affitem_T *)p; + ai->ai_nr = affnr; + ai->ai_combine = affflags; + ai->ai_choplen = choplen; + ai->ai_addlen = addlen; + + p += sizeof(affitem_T) + addlen; + ai->ai_chop = p; + STRCPY(p, buf); + + p = ai->ai_add; + for (i = 0; i < addlen; ++i) /* */ + p[i] = getc(fd); + p[i] = NUL; + + /* + * Add the affix to a hashtable. Which one depends on the + * length of the added string in characters. + */ +#ifdef FEAT_MBYTE + /* Change "addlen" from length in bytes to length in chars. */ + if (has_mbyte) + addlen = mb_charlen(p); +#endif + if (addlen == 0) + { + /* Link in list of zero length affixes. */ + ai->ai_next = *aip; + *aip = ai; + } + else + { + if (gap->ga_len < addlen) + { + /* Longer affix, need more hashtables. */ + if (ga_grow(gap, addlen - gap->ga_len) == FAIL) + goto errorend; + + /* Re-allocating ga_data means that an ht_array + * pointing to ht_smallarray becomes invalid. We can + * recognize this: ht_mask is at its init value. */ + for (i = 0; i < gap->ga_len; ++i) + { + ht = ((hashtab_T *)gap->ga_data) + i; + if (ht->ht_mask == HT_INIT_SIZE - 1) + ht->ht_array = ht->ht_smallarray; + } + + /* Init the newly used hashtable(s). */ + while (gap->ga_len < addlen) + { + hash_init(((hashtab_T *)gap->ga_data) + + gap->ga_len); + ++gap->ga_len; + } + } + ht = ((hashtab_T *)gap->ga_data) + addlen - 1; + hash = hash_hash(p); + hi = hash_lookup(ht, p, hash); + if (HASHITEM_EMPTY(hi)) + { + /* First affix with this "ai_add", add to hashtable. */ + hash_add_item(ht, hi, p, hash); + ai->ai_next = NULL; + } + else + { + /* There already is an affix with this "ai_add", link + * in the list. */ + ai2 = HI2AI(hi); + ai->ai_next = ai2->ai_next; + ai2->ai_next = ai; + } + } + } + } + } + + /* : ... */ + /* TODO, just skip this for now */ + i = (getc(fd) << 24) + (getc(fd) << 16) + (getc(fd) << 8) + getc(fd); + while (i-- > 0) + if (getc(fd) == EOF) /* */ + goto truncerr; + + /* : ... */ /* */ + wordcount = (getc(fd) << 24) + (getc(fd) << 16) + (getc(fd) << 8) + + getc(fd); + if (wordcount < 0) + goto truncerr; + + /* Init hashtable for this number of words, so that it doesn't need to + * reallocate the table halfway. */ + hash_lock_size(&lp->sl_words, wordcount); + + for (widx = 0; ; ++widx) + { + /* : [] + * [ ] + * [ ...] (prefixes) + * [ ...] (suffixes) + * [] + * [ ...] + */ + /* Use bytes from the previous word. */ + wlen = getc(fd); /* */ + if (wlen == EOF) + { + if (widx >= wordcount) /* normal way to end the file */ + break; + goto truncerr; + } + + /* Read further word bytes until one below 0x20, that must be the + * flags. Keep this fast! */ + for (;;) + { + if ((buf[wlen] = getc(fd)) < 0x20) /* */ + break; + if (++wlen == MAXWLEN) + goto formerr; + } + flags = buf[wlen]; /* */ + buf[wlen] = NUL; + + /* Get more flags if they're there. */ + if (flags & BWF_SECOND) + flags += getc(fd) << 8; /* */ + + if (flags & BWF_KEEPCAP) + { + /* Read and first, its length may differ from + * the case-folded word. Note: this should only happen after the + * basic word! */ + wlen = getc(fd); + if (wlen == EOF) + goto truncerr; + for (i = 0; i < wlen; ++i) + cbuf[i] = getc(fd); + cbuf[i] = NUL; + } + + /* Find room to store the word in a fword_T. */ + fw = (fword_T *)getroom(lp, &bl_used, (int)sizeof(fword_T) + wlen); + if (fw == NULL) + goto errorend; + mch_memmove(fw->fw_word, (flags & BWF_KEEPCAP) ? cbuf : buf, wlen + 1); + fw->fw_flags = flags; + + hash = hash_hash(buf); + hi = hash_lookup(&lp->sl_words, buf, hash); + if (HASHITEM_EMPTY(hi)) + { + if (hash_add_item(&lp->sl_words, hi, fw->fw_word, hash) == FAIL) + goto errorend; + fw->fw_next = NULL; + } + else + { + /* Already have this basic word in the hashtable, this one will + * have different case flags. */ + fw2 = HI2FWORD(hi); + fw->fw_next = fw2->fw_next; + fw2->fw_next = fw; + --widx; /* don't count this one */ + } + + /* Optional prefixes and suffixes. */ + if (flags & BWF_PREFIX) + fw->fw_prefixcnt = spell_load_affixes(fd, lp, &bl_used, + prefm, &fw->fw_prefix); + else + fw->fw_prefixcnt = 0; + if (flags & BWF_SUFFIX) + fw->fw_suffixcnt = spell_load_affixes(fd, lp, &bl_used, + suffm, &fw->fw_suffix); + else + fw->fw_suffixcnt = 0; + + if (flags & BWF_REGION) + fw->fw_region = getc(fd); /* */ + else + fw->fw_region = REGION_ALL; + + fw->fw_adds = NULL; + if (flags & BWF_ADDS) + { + adds = (getc(fd) << 8) + getc(fd); /* */ + + while (--adds >= 0) + { + /* : [ ] + * [] */ + flags = getc(fd); /* */ + addlen = getc(fd); /* */ + if (addlen == EOF) + goto truncerr; + if (addlen >= MAXWLEN) + goto formerr; + + if (addlen > 0) + { + leadlen = getc(fd); /* */ + for (i = 0; i < addlen; ++i) /* */ + cbuf[i] = getc(fd); + cbuf[i] = NUL; + } + else + leadlen = 0; + + if (flags & ADD_KEEPCAP) + { + /* is in original case, need to get + * case-folded word too. */ + (void)str_foldcase(cbuf, addlen, fbuf, MAXWLEN); + flen = addlen - leadlen + 1; + addlen = STRLEN(fbuf); + } + else + flen = 0; + + aw = (addword_T *)getroom(lp, &bl_used, + sizeof(addword_T) + addlen + flen); + if (aw == NULL) + goto errorend; + aw->aw_next = fw->fw_adds; + fw->fw_adds = aw; + aw->aw_leadlen = leadlen; + + if (flags & ADD_KEEPCAP) + { + /* Put the addition in original case after the case-folded + * string. */ + STRCPY(aw->aw_word, fbuf); + STRCPY(aw->aw_word + addlen + 1, cbuf + leadlen); + } + else + STRCPY(aw->aw_word, cbuf); + + aw->aw_flags = flags; + aw->aw_wordlen = addlen; + + if (flags & ADD_REGION) + aw->aw_region = getc(fd); /* */ + else + aw->aw_region = REGION_ALL; + } + } + } + goto end_OK; + +errorend: + lp->sl_error = TRUE; +end_OK: + if (fd != NULL) + fclose(fd); + hash_unlock(&lp->sl_words); + sourcing_name = save_sourcing_name; + sourcing_lnum = save_sourcing_lnum; +} + +/* + * Read a list of affixes from the spell file. + */ + static int +spell_load_affixes(fd, lp, bl_usedp, affm, affp) + FILE *fd; + slang_T *lp; + int *bl_usedp; + int affm; + void **affp; +{ + int cnt; + int i, n; + char_u *p; + + cnt = getc(fd); /* */ + if (cnt == EOF) + return 0; + + /* Get room to store the affixNR list, either as char_u (1 + * byte) or short_u (2 bytes). */ + p = (char_u *)getroom(lp, bl_usedp, cnt * affm); + if (p == NULL) + return 0; + *affp = p; + for (n = 0; n < cnt; ++n) + { + i = getc(fd); /* */ + if (affm > 1) + { + i = (i << 8) + getc(fd); + *(short_u *)p = i; + p += sizeof(short_u); + } + else + { + *(char_u *)p = i; + ++p; + } + } + return cnt; +} + +/* + * Get part of an sblock_T, at least "len" bytes long. + * Returns NULL when out of memory. + */ + static void * +getroom(lp, bl_used, len) + slang_T *lp; /* lp->sl_block is current block or NULL */ + int *bl_used; /* used up from current block */ + int len; /* length needed */ +{ + char_u *p; + sblock_T *bl = lp->sl_block; + + if (bl == NULL || *bl_used + len > SBLOCKSIZE) + { + /* Allocate a block of memory. This is not freed until spell_reload() + * is called. */ + bl = (sblock_T *)alloc((unsigned)(sizeof(sblock_T) + SBLOCKSIZE)); + if (bl == NULL) + return NULL; + bl->sb_next = lp->sl_block; + lp->sl_block = bl; + *bl_used = 0; + } + + p = bl->sb_data + *bl_used; + *bl_used += len; + + return p; +} + +/* + * Parse 'spelllang' and set buf->b_langp accordingly. + * Returns an error message or NULL. + */ + char_u * +did_set_spelllang(buf) + buf_T *buf; +{ + garray_T ga; + char_u *lang; + char_u *e; + char_u *region; + int region_mask; + slang_T *lp; + int c; + char_u lbuf[MAXWLEN + 1]; + + ga_init2(&ga, sizeof(langp_T), 2); + + /* loop over comma separated languages. */ + for (lang = buf->b_p_spl; *lang != NUL; lang = e) + { + e = vim_strchr(lang, ','); + if (e == NULL) + e = lang + STRLEN(lang); + if (e > lang + 2) + { + if (e - lang >= MAXWLEN) + { + ga_clear(&ga); + return e_invarg; + } + if (lang[2] == '_') + region = lang + 3; + } + else + region = NULL; + + for (lp = first_lang; lp != NULL; lp = lp->sl_next) + if (STRNICMP(lp->sl_name, lang, 2) == 0) + break; + + if (lp == NULL) + { + /* Not found, load the language. */ + STRNCPY(lbuf, lang, e - lang); + lbuf[e - lang] = NUL; + if (region != NULL) + mch_memmove(lbuf + 2, lbuf + 5, e - lang - 4); + lp = spell_load_lang(lbuf); + } + + if (lp != NULL) + { + if (region == NULL) + region_mask = REGION_ALL; + else + { + /* find region in sl_regions */ + c = find_region(lp->sl_regions, region); + if (c == REGION_ALL) + { + c = *e; + *e = NUL; + smsg((char_u *)_("Warning: region %s not supported"), lang); + *e = c; + region_mask = REGION_ALL; + } + else + region_mask = 1 << c; + } + + if (ga_grow(&ga, 1) == FAIL) + { + ga_clear(&ga); + return e_outofmem; + } + LANGP_ENTRY(ga, ga.ga_len)->lp_slang = lp; + LANGP_ENTRY(ga, ga.ga_len)->lp_region = region_mask; + ++ga.ga_len; + } + + if (*e == ',') + ++e; + } + + /* Add a NULL entry to mark the end of the list. */ + if (ga_grow(&ga, 1) == FAIL) + { + ga_clear(&ga); + return e_outofmem; + } + LANGP_ENTRY(ga, ga.ga_len)->lp_slang = NULL; + ++ga.ga_len; + + /* Everything is fine, store the new b_langp value. */ + ga_clear(&buf->b_langp); + buf->b_langp = ga; + + return NULL; +} + +/* + * Find the region "region[2]" in "rp" (points to "sl_regions"). + * Each region is simply stored as the two characters of it's name. + * Returns the index if found, REGION_ALL if not found. + */ + static int +find_region(rp, region) + char_u *rp; + char_u *region; +{ + int i; + + for (i = 0; ; i += 2) + { + if (rp[i] == NUL) + return REGION_ALL; + if (rp[i] == region[0] && rp[i + 1] == region[1]) + break; + } + return i / 2; +} + +/* + * Return type of word: + * w word 0 + * Word BWF_ONECAP + * W WORD BWF_ALLCAP + * WoRd wOrd BWF_KEEPCAP + */ + static int +captype(word, end) + char_u *word; + char_u *end; +{ + char_u *p; + int c; + int firstcap; + int allcap; + int past_second = FALSE; /* past second word char */ + + /* find first letter */ + for (p = word; !spell_iswordc(p); mb_ptr_adv(p)) + if (p >= end) + return 0; /* only non-word characters, illegal word */ +#ifdef FEAT_MBYTE + c = mb_ptr2char_adv(&p); +#else + c = *p++; +#endif + firstcap = allcap = MB_ISUPPER(c); + + /* + * Need to check all letters to find a word with mixed upper/lower. + * But a word with an upper char only at start is a ONECAP. + */ + for ( ; p < end; mb_ptr_adv(p)) + if (spell_iswordc(p)) + { +#ifdef FEAT_MBYTE + c = mb_ptr2char(p); +#else + c = *p; +#endif + if (!MB_ISUPPER(c)) + { + /* UUl -> KEEPCAP */ + if (past_second && allcap) + return BWF_KEEPCAP; + allcap = FALSE; + } + else if (!allcap) + /* UlU -> KEEPCAP */ + return BWF_KEEPCAP; + past_second = TRUE; + } + + if (allcap) + return BWF_ALLCAP; + if (firstcap) + return BWF_ONECAP; + return 0; +} + +# if defined(FEAT_MBYTE) || defined(PROTO) +/* + * Clear all spelling tables and reload them. + * Used after 'encoding' is set. + */ + void +spell_reload() +{ + buf_T *buf; + slang_T *lp; + + /* Initialize the table for spell_iswordc(). */ + init_spell_chartab(); + + /* Unload all allocated memory. */ + while (first_lang != NULL) + { + lp = first_lang; + first_lang = lp->sl_next; + slang_free(lp); + } + + /* Go through all buffers and handle 'spelllang'. */ + for (buf = firstbuf; buf != NULL; buf = buf->b_next) + { + ga_clear(&buf->b_langp); + if (*buf->b_p_spl != NUL) + did_set_spelllang(buf); + } +} +# endif + +/* + * Recognizing words uses a two-step mechanism: + * 1. Locate a basic word, made out of word characters only and separated by + * non-word characters. + * 2. When a basic word is found, check if (possibly required) additions + * before and after the word are present. + * + * Both mechanisms use affixes (prefixes and suffixes) to reduce the number of + * words. When no matching word was found in the hashtable the start of the + * word is checked for matching prefixes and the end of the word for matching + * suffixes. All matching affixes are removed and then the resulting word is + * searched for. If found it is checked if it supports the used affix. + */ + + +#if defined(FEAT_MBYTE) || defined(PROTO) +/* + * Functions for ":mkspell". + * Only possible with the multi-byte feature. + */ + +#define MAXLINELEN 300 /* Maximum length in bytes of a line in a .aff + and .dic file. */ +/* + * Main structure to store the contents of a ".aff" file. + */ +typedef struct afffile_S +{ + char_u *af_enc; /* "SET", normalized, alloc'ed string or NULL */ + char_u *af_try; /* "TRY" line in "af_enc" encoding */ + hashtab_T af_pref; /* hashtable for prefixes, affheader_T */ + hashtab_T af_suff; /* hashtable for suffixes, affheader_T */ + garray_T af_rep; /* list of repentry_T entries from REP lines */ +} afffile_T; + +typedef struct affentry_S affentry_T; + +/* Affix header from ".aff" file. Used for af_pref and af_suff. */ +typedef struct affheader_S +{ + char_u ah_key[2]; /* key for hashtable == name of affix entry */ + int ah_combine; + affentry_T *ah_first; /* first affix entry */ + short_u ah_affnr; /* used in get_new_aff() */ +} affheader_T; + +#define HI2AH(hi) ((affheader_T *)(hi)->hi_key) + +/* Affix entry from ".aff" file. Used for prefixes and suffixes. */ +struct affentry_S +{ + affentry_T *ae_next; /* next affix with same name/number */ + char_u *ae_chop; /* text to chop off basic word (can be NULL) */ + char_u *ae_add; /* text to add to basic word (can be NULL) */ + char_u *ae_add_nw; /* first non-word character in "ae_add" */ + char_u *ae_cond; /* condition (NULL for ".") */ + regprog_T *ae_prog; /* regexp program for ae_cond or NULL */ + short_u ae_affnr; /* for old affix: new affix number */ +}; + +/* + * Structure to store a word from a ".dic" file. + */ +typedef struct dicword_S +{ + char_u *dw_affnm; /* original affix names */ + char_u dw_word[1]; /* actually longer: the word in 'encoding' */ +} dicword_T; + +static dicword_T dumdw; +#define HI2DW(hi) ((dicword_T *)((hi)->hi_key - (dumdw.dw_word - (char_u *)&dumdw))) + +/* + * Structure to store a basic word for the spell file. + * This is used for ":mkspell", not for spell checking. + */ +typedef struct basicword_S basicword_T; +struct basicword_S +{ + basicword_T *bw_next; /* next word with same basic word */ + basicword_T *bw_cnext; /* next word with same caps */ + int bw_flags; /* BWF_ flags */ + garray_T bw_prefix; /* table with prefix numbers */ + garray_T bw_suffix; /* table with suffix numbers */ + int bw_region; /* region bits */ + char_u *bw_caseword; /* keep-case word */ + char_u *bw_leadstring; /* must come before bw_word */ + char_u *bw_addstring; /* must come after bw_word */ + char_u bw_word[1]; /* actually longer: word case folded */ +}; + +static basicword_T dumbw; +#define KEY2BW(p) ((basicword_T *)((p) - (dumbw.bw_word - (char_u *)&dumbw))) +#define HI2BW(hi) KEY2BW((hi)->hi_key) + +/* Store the affix number related with a certain string. */ +typedef struct affhash_S +{ + short_u as_nr; /* the affix nr */ + char_u as_word[1]; /* actually longer */ +} affhash_T; + +static affhash_T dumas; +#define HI2AS(hi) ((affhash_T *)((hi)->hi_key - (dumas.as_word - (char_u *)&dumas))) + + +static afffile_T *spell_read_aff __ARGS((char_u *fname, vimconv_T *conv)); +static void spell_free_aff __ARGS((afffile_T *aff)); +static int spell_read_dic __ARGS((hashtab_T *ht, char_u *fname, vimconv_T *conv)); +static int get_new_aff __ARGS((hashtab_T *oldaff, garray_T *gap)); +static void spell_free_dic __ARGS((hashtab_T *dic)); +static int same_affentries __ARGS((affheader_T *ah1, affheader_T *ah2)); +static void add_affhash __ARGS((hashtab_T *ht, char_u *key, int newnr)); +static void clear_affhash __ARGS((hashtab_T *ht)); +static void trans_affixes __ARGS((dicword_T *dw, basicword_T *bw, afffile_T *oldaff, hashtab_T *newwords)); +static int build_wordlist __ARGS((hashtab_T *newwords, hashtab_T *oldwords, afffile_T *oldaff, int regionmask)); +static void combine_regions __ARGS((hashtab_T *newwords)); +static int same_affixes __ARGS((basicword_T *bw, basicword_T *nbw)); +static void expand_affixes __ARGS((hashtab_T *newwords, garray_T *prefgap, garray_T *suffgap)); +static void expand_one_aff __ARGS((basicword_T *bw, garray_T *add_words, affentry_T *pae, affentry_T *sae)); +static void add_to_wordlist __ARGS((hashtab_T *newwords, basicword_T *bw)); +static void put_bytes __ARGS((FILE *fd, long_u nr, int len)); +static void write_affix __ARGS((FILE *fd, affheader_T *ah)); +static void write_affixlist __ARGS((FILE *fd, garray_T *aff, int bytes)); +static void write_vim_spell __ARGS((char_u *fname, garray_T *prefga, garray_T *suffga, hashtab_T *newwords, int regcount, char_u *regchars)); +static void write_bword __ARGS((FILE *fd, basicword_T *bw, int lowcap, basicword_T **prevbw, int regionmask, int prefm, int suffm)); +static void free_wordtable __ARGS((hashtab_T *ht)); +static void free_basicword __ARGS((basicword_T *bw)); +static void free_affixentries __ARGS((affentry_T *first)); + +/* + * Read an affix ".aff" file. + * Returns an afffile_T, NULL for failure. + */ + static afffile_T * +spell_read_aff(fname, conv) + char_u *fname; + vimconv_T *conv; /* info for encoding conversion */ +{ + FILE *fd; + afffile_T *aff; + char_u rline[MAXLINELEN]; + char_u *line; + char_u *pc = NULL; + char_u *(items[6]); + int itemcnt; + char_u *p; + int lnum = 0; + affheader_T *cur_aff = NULL; + int aff_todo = 0; + hashtab_T *tp; + + fd = fopen((char *)fname, "r"); + if (fd == NULL) + { + EMSG2(_(e_notopen), fname); + return NULL; + } + + smsg((char_u *)_("Reading affix file %s..."), fname); + out_flush(); + + aff = (afffile_T *)alloc_clear((unsigned)sizeof(afffile_T)); + if (aff == NULL) + return NULL; + hash_init(&aff->af_pref); + hash_init(&aff->af_suff); + ga_init2(&aff->af_rep, (int)sizeof(repentry_T), 20); + + /* + * Read all the lines in the file one by one. + */ + while (!vim_fgets(rline, MAXLINELEN, fd)) + { + ++lnum; + + /* Skip comment lines. */ + if (*rline == '#') + continue; + + /* Convert from "SET" to 'encoding' when needed. */ + vim_free(pc); + if (conv->vc_type != CONV_NONE) + { + pc = string_convert(conv, rline, NULL); + line = pc; + } + else + { + pc = NULL; + line = rline; + } + + /* Split the line up in white separated items. Put a NUL after each + * item. */ + itemcnt = 0; + for (p = line; ; ) + { + while (*p != NUL && *p <= ' ') /* skip white space and CR/NL */ + ++p; + if (*p == NUL) + break; + items[itemcnt++] = p; + while (*p > ' ') /* skip until white space or CR/NL */ + ++p; + if (*p == NUL) + break; + *p++ = NUL; + } + + /* Handle non-empty lines. */ + if (itemcnt > 0) + { + if (STRCMP(items[0], "SET") == 0 && itemcnt == 2 + && aff->af_enc == NULL) + { + if (aff->af_enc != NULL) + smsg((char_u *)_("Duplicate SET line ignored in %s line %d: %s"), + fname, lnum, line); + else + { + /* Setup for conversion from "ENC" to 'encoding'. */ + aff->af_enc = enc_canonize(items[1]); + if (aff->af_enc != NULL + && convert_setup(conv, aff->af_enc, p_enc) == FAIL) + smsg((char_u *)_("Conversion in %s not supported: from %s to %s"), + fname, aff->af_enc, p_enc); + } + } + else if (STRCMP(items[0], "TRY") == 0 && itemcnt == 2 + && aff->af_try == NULL) + aff->af_try = vim_strsave(items[1]); + else if ((STRCMP(items[0], "PFX") == 0 + || STRCMP(items[0], "SFX") == 0) + && aff_todo == 0 + && itemcnt == 4) + { + /* New affix letter. */ + cur_aff = (affheader_T *)alloc((unsigned)sizeof(affheader_T)); + if (cur_aff == NULL) + break; + cur_aff->ah_key[0] = *items[1]; + cur_aff->ah_key[1] = NUL; + if (items[1][1] != NUL) + smsg((char_u *)_("Affix name too long in %s line %d: %s"), + fname, lnum, items[1]); + if (*items[2] == 'Y') + cur_aff->ah_combine = TRUE; + else if (*items[2] == 'N') + cur_aff->ah_combine = FALSE; + else if (p_verbose > 0) + smsg((char_u *)_("Expected Y or N in %s line %d: %s"), + fname, lnum, items[2]); + cur_aff->ah_first = NULL; + if (*items[0] == 'P') + tp = &aff->af_pref; + else + tp = &aff->af_suff; + if (!HASHITEM_EMPTY(hash_find(tp, cur_aff->ah_key))) + smsg((char_u *)_("Duplicate affix in %s line %d: %s"), + fname, lnum, items[1]); + else + hash_add(tp, cur_aff->ah_key); + + aff_todo = atoi((char *)items[3]); + } + else if ((STRCMP(items[0], "PFX") == 0 + || STRCMP(items[0], "SFX") == 0) + && aff_todo > 0 + && STRCMP(cur_aff->ah_key, items[1]) == 0 + && itemcnt == 5) + { + affentry_T *aff_entry; + + /* New item for an affix letter. */ + --aff_todo; + aff_entry = (affentry_T *)alloc_clear( + (unsigned)sizeof(affentry_T)); + if (aff_entry == NULL) + break; + aff_entry->ae_next = cur_aff->ah_first; + cur_aff->ah_first = aff_entry; + if (STRCMP(items[2], "0") != 0) + aff_entry->ae_chop = vim_strsave(items[2]); + if (STRCMP(items[3], "0") != 0) + aff_entry->ae_add = vim_strsave(items[3]); + if (STRCMP(items[4], ".") != 0) + { + char_u buf[MAXLINELEN]; + + aff_entry->ae_cond = vim_strsave(items[4]); + if (*items[0] == 'P') + sprintf((char *)buf, "^%s", items[4]); + else + sprintf((char *)buf, "%s$", items[4]); + aff_entry->ae_prog = vim_regcomp(buf, RE_MAGIC + RE_STRING); + } + } + else if (STRCMP(items[0], "REP") == 0 && itemcnt == 2) + /* Ignore REP count */; + else if (STRCMP(items[0], "REP") == 0 && itemcnt == 3) + { + repentry_T *rp; + + /* REP item */ + if (ga_grow(&aff->af_rep, 1) == FAIL) + break; + rp = ((repentry_T *)aff->af_rep.ga_data) + aff->af_rep.ga_len; + rp->re_from = vim_strsave(items[1]); + rp->re_to = vim_strsave(items[2]); + ++aff->af_rep.ga_len; + } + else if (p_verbose > 0) + smsg((char_u *)_("Unrecognized item in %s line %d: %s"), + fname, lnum, items[0]); + } + + } + + vim_free(pc); + fclose(fd); + return aff; +} + +/* + * Free the structure filled by spell_read_aff(). + */ + static void +spell_free_aff(aff) + afffile_T *aff; +{ + hashtab_T *ht; + hashitem_T *hi; + int todo; + int i; + repentry_T *rp; + affheader_T *ah; + + vim_free(aff->af_enc); + vim_free(aff->af_try); + + for (ht = &aff->af_pref; ; ht = &aff->af_suff) + { + todo = ht->ht_used; + for (hi = ht->ht_array; todo > 0; ++hi) + { + if (!HASHITEM_EMPTY(hi)) + { + --todo; + ah = HI2AH(hi); + free_affixentries(ah->ah_first); + vim_free(ah); + } + } + if (ht == &aff->af_suff) + break; + } + hash_clear(&aff->af_pref); + hash_clear(&aff->af_suff); + + for (i = 0; i < aff->af_rep.ga_len; ++i) + { + rp = ((repentry_T *)aff->af_rep.ga_data) + i; + vim_free(rp->re_from); + vim_free(rp->re_to); + } + ga_clear(&aff->af_rep); + + vim_free(aff); +} + +/* + * Read a dictionary ".dic" file. + * Returns OK or FAIL; + * Each entry in the hashtab_T is a dicword_T. + */ + static int +spell_read_dic(ht, fname, conv) + hashtab_T *ht; + char_u *fname; + vimconv_T *conv; /* info for encoding conversion */ +{ + char_u line[MAXLINELEN]; + char_u *p; + dicword_T *dw; + char_u *pc; + char_u *w; + int l; + hash_T hash; + hashitem_T *hi; + FILE *fd; + int lnum = 1; + + fd = fopen((char *)fname, "r"); + if (fd == NULL) + { + EMSG2(_(e_notopen), fname); + return FAIL; + } + + smsg((char_u *)_("Reading dictionary file %s..."), fname); + out_flush(); + + /* Read and ignore the first line: word count. */ + (void)vim_fgets(line, MAXLINELEN, fd); + if (!isdigit(*skipwhite(line))) + EMSG2(_("E760: No word count in %s"), fname); + + /* + * Read all the lines in the file one by one. + * The words are converted to 'encoding' here, before being added to + * the hashtable. + */ + while (!vim_fgets(line, MAXLINELEN, fd)) + { + ++lnum; + + /* Remove CR, LF and white space from end. */ + l = STRLEN(line); + while (l > 0 && line[l - 1] <= ' ') + --l; + if (l == 0) + continue; /* empty line */ + line[l] = NUL; + + /* Find the optional affix names. */ + p = vim_strchr(line, '/'); + if (p != NULL) + *p++ = NUL; + + /* Convert from "SET" to 'encoding' when needed. */ + if (conv->vc_type != CONV_NONE) + { + pc = string_convert(conv, line, NULL); + w = pc; + } + else + { + pc = NULL; + w = line; + } + + dw = (dicword_T *)alloc_clear((unsigned)sizeof(dicword_T) + + STRLEN(w)); + if (dw == NULL) + break; + STRCPY(dw->dw_word, w); + vim_free(pc); + + hash = hash_hash(dw->dw_word); + hi = hash_lookup(ht, dw->dw_word, hash); + if (!HASHITEM_EMPTY(hi)) + smsg((char_u *)_("Duplicate word in %s line %d: %s"), + fname, lnum, line); + else + hash_add_item(ht, hi, dw->dw_word, hash); + + if (p != NULL) + dw->dw_affnm = vim_strsave(p); + } + + fclose(fd); + return OK; +} + +/* + * Free the structure filled by spell_read_dic(). + */ + static void +spell_free_dic(dic) + hashtab_T *dic; +{ + int todo; + dicword_T *dw; + hashitem_T *hi; + + todo = dic->ht_used; + for (hi = dic->ht_array; todo > 0; ++hi) + { + if (!HASHITEM_EMPTY(hi)) + { + --todo; + dw = HI2DW(hi); + vim_free(dw->dw_affnm); + vim_free(dw); + } + } + hash_clear(dic); +} + +/* + * Take the affixes read by spell_read_aff() and add them to the new list. + * Attempts to re-use the same number for identical affixes (ignoring the + * condition, since we remove that). That is especially important when using + * multiple regions. + * Returns OK or FAIL; + */ + static int +get_new_aff(oldaff, gap) + hashtab_T *oldaff; /* hashtable with affheader_T */ + garray_T *gap; /* table with new affixes */ +{ + int oldtodo; + affheader_T *oldah, *newah, *gapah; + affentry_T *oldae, *newae; + hashitem_T *oldhi; + hashitem_T *hi; + hashtab_T condht; /* conditions already found */ + char_u condkey[MAXLINELEN]; + int newnr; + int gapnr; + int retval = OK; + char_u *p; + garray_T tga; + + /* + * Loop over all the old affix names. + */ + oldtodo = oldaff->ht_used; + for (oldhi = oldaff->ht_array; oldtodo > 0 && retval == OK; ++oldhi) + { + if (!HASHITEM_EMPTY(oldhi)) + { + --oldtodo; + oldah = (affheader_T *)oldhi->hi_key; + + /* Put entries with the same condition under the same new affix + * nr in "tga". Use hashtable "condht" to find them. */ + ga_init2(&tga, sizeof(affheader_T), 10); + hash_init(&condht); + + /* + * Loop over all affixes with the same name. + * The affixes with the same condition will get the same number, + * since they can be used with the same words. + * 1. build the lists of new affentry_T, with the headers in "tga". + * 2. Check if some of the lists already exist in "gap", re-use + * their number. + * 3. Assign the new numbers to the old affixes. + */ + + /* 1. build the lists of new affentry_T. */ + for (oldae = oldah->ah_first; oldae != NULL && retval == OK; + oldae = oldae->ae_next) + { + oldae->ae_add_nw = NULL; + if (oldae->ae_add != NULL) + { + /* Check for non-word characters in the suffix. If there + * is one this affix will be turned into an addition. + * This is stored with the old affix, that is where + * trans_affixes() will check. */ + for (p = oldae->ae_add; *p != NUL; mb_ptr_adv(p)) + if (!spell_iswordc(p)) + break; + if (*p != NUL) + oldae->ae_add_nw = p; + } + + if (oldae->ae_cond == NULL) + /* hashtable requires a non-empty key */ + STRCPY(condkey, "---"); + else + STRCPY(condkey, oldae->ae_cond); + + /* Look for an existing list with this name and condition. */ + hi = hash_find(&condht, condkey); + if (!HASHITEM_EMPTY(hi)) + /* Match with existing affix, use that one. */ + newnr = HI2AS(hi)->as_nr; + else + { + /* Add a new affix number. */ + newnr = tga.ga_len; + if (ga_grow(&tga, 1) == FAIL) + retval = FAIL; + else + { + newah = ((affheader_T *)tga.ga_data) + newnr; + newah->ah_combine = oldah->ah_combine; + newah->ah_first = NULL; + ++tga.ga_len; + + /* Add the new list to the condht hashtable. */ + add_affhash(&condht, condkey, newnr); + } + } + + /* Add the new affentry_T to the list. */ + newah = ((affheader_T *)tga.ga_data) + newnr; + newae = (affentry_T *)alloc_clear((unsigned)sizeof(affentry_T)); + if (newae == NULL) + retval = FAIL; + else + { + newae->ae_next = newah->ah_first; + newah->ah_first = newae; + if (oldae->ae_chop == NULL) + newae->ae_chop = NULL; + else + newae->ae_chop = vim_strsave(oldae->ae_chop); + if (oldae->ae_add == NULL) + newae->ae_add = NULL; + else + newae->ae_add = vim_strsave(oldae->ae_add); + + /* The condition is not copied, since the new affix is + * only used for words where the condition matches. */ + } + } + + /* 2. Check if some of the lists already exist, re-use their + * number. Otherwise add the list to "gap". */ + for (newnr = 0; newnr < tga.ga_len; ++newnr) + { + newah = ((affheader_T *)tga.ga_data) + newnr; + for (gapnr = 0; gapnr < gap->ga_len; ++gapnr) + { + gapah = ((affheader_T *)gap->ga_data) + gapnr; + if (same_affentries(newah, gapah)) + /* Found an existing affheader_T entry with same + * affentry_T list, use its number. */ + break; + } + + newah->ah_affnr = gapnr; + if (gapnr == gap->ga_len) + { + /* This is a new affentry_T list, add it. */ + if (ga_grow(gap, 1) == FAIL) + retval = FAIL; + else + { + *(((affheader_T *)gap->ga_data) + gap->ga_len) = *newah; + ++gap->ga_len; + } + } + else + { + /* free unused affentry_T list */ + free_affixentries(newah->ah_first); + } + } + + /* 3. Assign the new affix numbers to the old affixes. */ + for (oldae = oldah->ah_first; oldae != NULL && retval == OK; + oldae = oldae->ae_next) + { + if (oldae->ae_cond == NULL) + /* hashtable requires a non-empty key */ + STRCPY(condkey, "---"); + else + STRCPY(condkey, oldae->ae_cond); + + /* Look for an existing affix with this name and condition. */ + hi = hash_find(&condht, condkey); + if (!HASHITEM_EMPTY(hi)) + /* Match with existing affix, use that one. */ + newnr = HI2AS(hi)->as_nr; + else + { + EMSG(_(e_internal)); + retval = FAIL; + } + newah = ((affheader_T *)tga.ga_data) + newnr; + oldae->ae_affnr = newah->ah_affnr; + } + + ga_clear(&tga); + clear_affhash(&condht); + } + } + + return retval; +} + +/* + * Return TRUE if the affentry_T lists for "ah1" and "ah2" contain the same + * items, ignoring the order. + * Only compares the chop and add strings, not the condition. + */ + static int +same_affentries(ah1, ah2) + affheader_T *ah1; + affheader_T *ah2; +{ + affentry_T *ae1, *ae2; + + /* Check the length of the lists first. */ + ae2 = ah2->ah_first; + for (ae1 = ah1->ah_first; ae1 != NULL; ae1 = ae1->ae_next) + { + if (ae2 == NULL) + return FALSE; /* "ah1" list is longer */ + ae2 = ae2->ae_next; + } + if (ae2 != NULL) + return FALSE; /* "ah2" list is longer */ + + /* Check that each entry in "ah1" appears in "ah2". */ + for (ae1 = ah1->ah_first; ae1 != NULL; ae1 = ae1->ae_next) + { + for (ae2 = ah2->ah_first; ae2 != NULL; ae2 = ae2->ae_next) + { + if ((ae1->ae_chop == NULL) == (ae2->ae_chop == NULL) + && (ae1->ae_add == NULL) == (ae2->ae_add == NULL) + && (ae1->ae_chop == NULL + || STRCMP(ae1->ae_chop, ae2->ae_chop) == 0) + && (ae1->ae_add == NULL + || STRCMP(ae1->ae_add, ae2->ae_add) == 0)) + break; + } + if (ae2 == NULL) + return FALSE; + } + + return TRUE; +} + +/* + * Add a chop/add or cond hashtable entry. + */ + static void +add_affhash(ht, key, newnr) + hashtab_T *ht; + char_u *key; + int newnr; +{ + affhash_T *as; + + as = (affhash_T *)alloc((unsigned)sizeof(affhash_T) + STRLEN(key)); + if (as != NULL) + { + as->as_nr = newnr; + STRCPY(as->as_word, key); + hash_add(ht, as->as_word); + } +} + +/* + * Clear the chop/add hashtable used to detect identical affixes. + */ + static void +clear_affhash(ht) + hashtab_T *ht; +{ + int todo; + hashitem_T *hi; + + todo = ht->ht_used; + for (hi = ht->ht_array; todo > 0; ++hi) + { + if (!HASHITEM_EMPTY(hi)) + { + --todo; + vim_free(HI2AS(hi)); + } + } + hash_clear(ht); +} + +/* + * Translate list of affix names for an old word to affix numbers in a new + * basic word. + * This checks if the conditions match with the old word. The result is that + * the new affix does not need to store the condition. + */ + static void +trans_affixes(dw, bw, oldaff, newwords) + dicword_T *dw; /* old word */ + basicword_T *bw; /* basic word */ + afffile_T *oldaff; /* affixes for "oldwords" */ + hashtab_T *newwords; /* table with words */ +{ + char_u key[2]; + char_u *p; + char_u *affnm; + garray_T *gap; + hashitem_T *aff_hi; + affheader_T *ah; + affentry_T *ae; + regmatch_T regmatch; + int i; + basicword_T *nbw; + int alen; + int wlen; + garray_T fixga; + char_u nword[MAXWLEN]; + int flags; + int n; + + ga_init2(&fixga, (int)sizeof(basicword_T *), 5); + + /* Loop over all the affix names of the old word. */ + key[1] = NUL; + for (affnm = dw->dw_affnm; *affnm != NUL; ++affnm) + { + key[0] = *affnm; + aff_hi = hash_find(&oldaff->af_pref, key); + if (!HASHITEM_EMPTY(aff_hi)) + gap = &bw->bw_prefix; /* found a prefix */ + else + { + gap = &bw->bw_suffix; /* must be a suffix */ + aff_hi = hash_find(&oldaff->af_suff, key); + if (HASHITEM_EMPTY(aff_hi)) + { + smsg((char_u *)_("No affix entry '%s' for word %s"), + key, dw->dw_word); + continue; + } + } + + /* Loop over all the affix entries for this affix name. */ + ah = HI2AH(aff_hi); + for (ae = ah->ah_first; ae != NULL; ae = ae->ae_next) + { + regmatch.regprog = ae->ae_prog; + regmatch.rm_ic = FALSE; /* TODO: Should this be TRUE??? */ + if (ae->ae_prog == NULL + || vim_regexec(®match, dw->dw_word, (colnr_T)0)) + { + if (ae->ae_add_nw != NULL && (gap == &bw->bw_suffix + ? bw->bw_addstring : bw->bw_leadstring) == NULL) + { + /* Affix has a non-word character and isn't prepended to + * leader or appended to addition. Need to use another + * word with an addition. It's a copy of the basicword_T + * "bw". */ + if (gap == &bw->bw_suffix) + { + alen = ae->ae_add_nw - ae->ae_add; + nbw = (basicword_T *)alloc((unsigned)( + sizeof(basicword_T) + STRLEN(bw->bw_word) + + alen + 1)); + if (nbw != NULL) + { + *nbw = *bw; + ga_init2(&nbw->bw_prefix, sizeof(short_u), 1); + ga_init2(&nbw->bw_suffix, sizeof(short_u), 1); + + /* Adding the suffix may change the caps. */ + STRCPY(nword, dw->dw_word); + if (ae->ae_chop != NULL) + { + /* Remove chop string. */ + p = nword + STRLEN(nword); + for (i = mb_charlen(ae->ae_chop); i > 0; --i) + mb_ptr_back(nword, p); + *p = NUL; + } + STRCAT(nword, ae->ae_add); + flags = captype(nword, nword + STRLEN(nword)); + if (flags & BWF_KEEPCAP) + { + nword[STRLEN(dw->dw_word) + alen] = NUL; + nbw->bw_caseword = vim_strsave(nword); + } + nbw->bw_flags &= ~(BWF_ONECAP | BWF_ALLCAP + | BWF_KEEPCAP); + nbw->bw_flags |= flags; + + if (bw->bw_leadstring != NULL) + nbw->bw_leadstring = + vim_strsave(bw->bw_leadstring); + nbw->bw_addstring = vim_strsave(ae->ae_add_nw); + + STRCPY(nbw->bw_word, bw->bw_word); + if (alen > 0 || ae->ae_chop != NULL) + { + /* Suffix starts with word character. Append + * it to the word. Add new word entry. */ + wlen = STRLEN(nbw->bw_word); + if (ae->ae_chop != NULL) + wlen -= STRLEN(ae->ae_chop); + mch_memmove(nbw->bw_word + wlen, ae->ae_add, + alen); + nbw->bw_word[wlen + alen] = NUL; + add_to_wordlist(newwords, nbw); + } + else + /* Basic word is the same, link "nbw" after + * "bw". */ + bw->bw_next = nbw; + + /* Remember this word, we need to set bw_prefix + * and bw_suffix later. */ + if (ga_grow(&fixga, 1) == OK) + ((basicword_T **)fixga.ga_data)[fixga.ga_len++] + = nbw; + } + } + else + { + /* TODO: prefix with non-word char */ + } + } + else + { + /* Affix applies to this word, add the related affix + * number. But only if it's not there yet. And keep the + * list sorted, so that we can compare it later. */ + for (i = 0; i < gap->ga_len; ++i) + { + n = ((short_u *)gap->ga_data)[i]; + if (n >= ae->ae_affnr) + { + if (n == ae->ae_affnr) + i = -1; + break; + } + } + if (i >= 0 && ga_grow(gap, 1) == OK) + { + if (i < gap->ga_len) + mch_memmove(((short_u *)gap->ga_data) + i + 1, + ((short_u *)gap->ga_data) + i, + sizeof(short_u) * (gap->ga_len - i)); + ((short_u *)gap->ga_data)[i] = ae->ae_affnr; + ++gap->ga_len; + } + } + } + } + } + + /* + * For the words that we added for suffixes with non-word characters: Use + * the prefix list of the main word. + * TODO: do the same for prefixes. + */ + for (i = 0; i < fixga.ga_len; ++i) + { + nbw = ((basicword_T **)fixga.ga_data)[i]; + if (ga_grow(&nbw->bw_prefix, bw->bw_prefix.ga_len) == OK) + { + mch_memmove(nbw->bw_prefix.ga_data, bw->bw_prefix.ga_data, + bw->bw_prefix.ga_len * sizeof(short_u)); + nbw->bw_prefix.ga_len = bw->bw_prefix.ga_len; + } + } + + ga_clear(&fixga); +} + +/* + * Go over all words in "oldwords" and change the old affix names to the new + * affix numbers, check the conditions, fold case, extract the basic word and + * additions. + */ + static int +build_wordlist(newwords, oldwords, oldaff, regionmask) + hashtab_T *newwords; /* basicword_T entries */ + hashtab_T *oldwords; /* dicword_T entries */ + afffile_T *oldaff; /* affixes for "oldwords" */ + int regionmask; /* value for bw_region */ +{ + int todo; + hashitem_T *old_hi; + dicword_T *dw; + basicword_T *bw; + char_u foldword[MAXLINELEN]; + int leadlen; + char_u leadstring[MAXLINELEN]; + int addlen; + char_u addstring[MAXLINELEN]; + int dwlen; + char_u *p; + int clen; + int flags; + char_u *cp; + int l; + + todo = oldwords->ht_used; + for (old_hi = oldwords->ht_array; todo > 0; ++old_hi) + { + if (!HASHITEM_EMPTY(old_hi)) + { + --todo; + dw = HI2DW(old_hi); + + /* This takes time, print a message now and then. */ + if ((todo & 0x3ff) == 0 || todo == oldwords->ht_used - 1) + { + if (todo != oldwords->ht_used - 1) + { + msg_didout = FALSE; + msg_col = 0; + } + smsg((char_u *)_("%6d todo - %s"), todo, dw->dw_word); + out_flush(); + ui_breakcheck(); + if (got_int) + break; + } + + /* The basic words are always stored with folded case. */ + dwlen = STRLEN(dw->dw_word); + (void)str_foldcase(dw->dw_word, dwlen, foldword, MAXLINELEN); + flags = captype(dw->dw_word, dw->dw_word + dwlen); + + /* Check for non-word characters before the word. */ + clen = 0; + leadlen = 0; + if (!spell_iswordc(foldword)) + { + p = foldword; + for (;;) + { + mb_ptr_adv(p); + ++clen; + if (*p == NUL) /* Only non-word chars (bad word!) */ + { + if (p_verbose > 0) + smsg((char_u *)_("Warning: word without word characters: \"%s\""), + foldword); + break; + } + if (spell_iswordc(p)) + { + /* Move the leader to "leadstring" and remove it from + * "foldword". */ + leadlen = p - foldword; + mch_memmove(leadstring, foldword, leadlen); + leadstring[leadlen] = NUL; + mch_memmove(foldword, p, STRLEN(p) + 1); + break; + } + } + } + + /* Check for non-word characters after word characters. */ + addlen = 0; + for (p = foldword; spell_iswordc(p); mb_ptr_adv(p)) + { + if (*p == NUL) + break; + ++clen; + } + if (*p != NUL) + { + /* Move the addition to "addstring" and truncate "foldword". */ + if (flags & BWF_KEEPCAP) + { + /* Preserve caps, need to skip the right number of + * characters in the original word (case folding may + * change the byte count). */ + l = 0; + for (cp = dw->dw_word; l < clen; mb_ptr_adv(cp)) + ++l; + addlen = STRLEN(cp); + mch_memmove(addstring, cp, addlen + 1); + } + else + { + addlen = STRLEN(p); + mch_memmove(addstring, p, addlen + 1); + } + *p = NUL; + } + + bw = (basicword_T *)alloc_clear((unsigned)sizeof(basicword_T) + + STRLEN(foldword)); + if (bw == NULL) + break; + STRCPY(bw->bw_word, foldword); + bw->bw_region = regionmask; + + if (leadlen > 0) + bw->bw_leadstring = vim_strsave(leadstring); + else + bw->bw_leadstring = NULL; + if (addlen > 0) + bw->bw_addstring = vim_strsave(addstring); + else + bw->bw_addstring = NULL; + + add_to_wordlist(newwords, bw); + + if (flags & BWF_KEEPCAP) + { + if (addlen == 0) + /* use the whole word */ + bw->bw_caseword = vim_strsave(dw->dw_word + leadlen); + else + /* use only up to the addition */ + bw->bw_caseword = vim_strnsave(dw->dw_word + leadlen, + cp - dw->dw_word - leadlen); + if (bw->bw_caseword == NULL) /* out of memory */ + flags &= ~BWF_KEEPCAP; + } + bw->bw_flags = flags; + + /* Deal with any affix names on the old word, translate them + * into affix numbers. */ + ga_init2(&bw->bw_prefix, sizeof(short_u), 10); + ga_init2(&bw->bw_suffix, sizeof(short_u), 10); + if (dw->dw_affnm != NULL) + trans_affixes(dw, bw, oldaff, newwords); + } + } + if (todo > 0) + return FAIL; + return OK; +} + +/* + * Go through the list of words and combine the ones that are identical except + * for the region. + */ + static void +combine_regions(newwords) + hashtab_T *newwords; +{ + int todo; + hashitem_T *hi; + basicword_T *bw, *nbw, *pbw; + + /* Loop over all basic words in the words table. */ + todo = newwords->ht_used; + for (hi = newwords->ht_array; todo > 0; ++hi) + { + if (!HASHITEM_EMPTY(hi)) + { + --todo; + + /* Loop over the list of words for this basic word. Compare with + * each following word in the same list. */ + for (bw = HI2BW(hi); bw != NULL; bw = bw->bw_next) + { + pbw = bw; + for (nbw = pbw->bw_next; nbw != NULL; nbw = pbw->bw_next) + { + if (bw->bw_flags == nbw->bw_flags + && (bw->bw_leadstring == NULL) + == (nbw->bw_leadstring == NULL) + && (bw->bw_addstring == NULL) + == (nbw->bw_addstring == NULL) + && ((bw->bw_flags & BWF_KEEPCAP) == 0 + || (STRCMP(bw->bw_caseword, + nbw->bw_caseword) == 0)) + && (bw->bw_leadstring == NULL + || (STRCMP(bw->bw_leadstring, + nbw->bw_leadstring) == 0)) + && (bw->bw_addstring == NULL + || (STRCMP(bw->bw_addstring, + nbw->bw_addstring) == 0)) + && same_affixes(bw, nbw) + ) + { + /* Match, combine regions and delete "nbw". */ + pbw->bw_next = nbw->bw_next; + bw->bw_region |= nbw->bw_region; + free_basicword(nbw); + } + else + /* No match, continue with next one. */ + pbw = nbw; + } + } + } + } +} + +/* + * Return TRUE when the prefixes and suffixes for "bw" and "nbw" are equal. + */ + static int +same_affixes(bw, nbw) + basicword_T *bw; + basicword_T *nbw; +{ + return (bw->bw_prefix.ga_len == nbw->bw_prefix.ga_len + && bw->bw_suffix.ga_len == nbw->bw_suffix.ga_len + && (bw->bw_prefix.ga_len == 0 + || vim_memcmp(bw->bw_prefix.ga_data, + nbw->bw_prefix.ga_data, + bw->bw_prefix.ga_len * sizeof(short_u)) == 0) + && (bw->bw_suffix.ga_len == 0 + || vim_memcmp(bw->bw_suffix.ga_data, + nbw->bw_suffix.ga_data, + bw->bw_suffix.ga_len * sizeof(short_u)) == 0)); +} + +/* + * For each basic word with additions turn the affixes into other additions + * and/or new basic words. The result is that no affixes apply to a word with + * additions. + */ + static void +expand_affixes(newwords, prefgap, suffgap) + hashtab_T *newwords; + garray_T *prefgap; + garray_T *suffgap; +{ + int todo; + hashitem_T *hi; + basicword_T *bw; + int pi, si; + affentry_T *pae, *sae; + garray_T add_words; + int n; + + ga_init2(&add_words, sizeof(basicword_T *), 10); + + todo = newwords->ht_used; + for (hi = newwords->ht_array; todo > 0; ++hi) + { + if (!HASHITEM_EMPTY(hi)) + { + --todo; + for (bw = HI2BW(hi); bw != NULL; bw = bw->bw_next) + { + /* + * Need to fix affixes if there is a leader or addition and + * there are prefixes or suffixes. + */ + if ((bw->bw_leadstring != NULL || bw->bw_addstring != NULL) + && (bw->bw_prefix.ga_len != 0 + || bw->bw_suffix.ga_len != 0)) + { + /* Loop over all prefix numbers, but first without a + * prefix. */ + for (pi = -1; pi < bw->bw_prefix.ga_len; ++pi) + { + pae = NULL; + if (pi >= 0) + { + n = ((short_u *)bw->bw_prefix.ga_data)[pi]; + pae = ((affheader_T *)prefgap->ga_data + n) + ->ah_first; + } + + /* Loop over all entries for prefix "pi". Do it once + * when there is no prefix (pi == -1). */ + do + { + /* Loop over all suffix numbers. Do without a + * suffix first when there is a prefix. */ + for (si = (pi == -1 ? 0 : -1); + si < bw->bw_suffix.ga_len; ++si) + { + sae = NULL; + if (si >= 0) + { + n = ((short_u *)bw->bw_suffix.ga_data)[si]; + sae = ((affheader_T *)suffgap->ga_data + n) + ->ah_first; + } + + /* Loop over all entries for suffix "si". Do + * it once when there is no suffix (si == -1). + */ + do + { + /* Expand the word for this combination of + * prefixes and affixes. */ + expand_one_aff(bw, &add_words, pae, sae); + + /* Advance to next suffix entry, if there + * is one. */ + if (sae != NULL) + sae = sae->ae_next; + } while (sae != NULL); + } + + /* Advance to next prefix entry, if there is one. */ + if (pae != NULL) + pae = pae->ae_next; + } while (pae != NULL); + } + } + } + } + } + + /* + * Add the new words afterwards, can't change "newwords" while going over + * all its items. + */ + for (pi = 0; pi < add_words.ga_len; ++pi) + add_to_wordlist(newwords, ((basicword_T **)add_words.ga_data)[pi]); + + ga_clear(&add_words); +} + +/* + * Add one word to "add_words" for basic word "bw" with additions, adding + * prefix "pae" and suffix "sae". Either "pae" or "sae" can be NULL. + */ + static void +expand_one_aff(bw, add_words, pae, sae) + basicword_T *bw; + garray_T *add_words; + affentry_T *pae; + affentry_T *sae; +{ + char_u word[MAXWLEN + 1]; + char_u caseword[MAXWLEN + 1]; + int l = 0; + int choplen = 0; + int ll; + basicword_T *nbw; + + /* Prepend prefix to the basic word if there is a prefix and there is no + * leadstring. */ + if (pae != NULL && bw->bw_leadstring == NULL) + { + if (pae->ae_add != NULL) + { + l = STRLEN(pae->ae_add); + mch_memmove(word, pae->ae_add, l); + } + if (pae->ae_chop != NULL) + choplen = STRLEN(pae->ae_chop); + } + + /* Copy the body of the word. */ + STRCPY(word + l, bw->bw_word + choplen); + + /* Do the same for bw_caseword, if it's there. */ + if (bw->bw_flags & BWF_KEEPCAP) + { + if (l > 0) + mch_memmove(caseword, pae->ae_add, l); + STRCPY(caseword + l, bw->bw_caseword + choplen); + } + + /* Append suffix to the basic word if there is a suffix and there is no + * addstring. */ + if (sae != 0 && bw->bw_addstring == NULL) + { + l = STRLEN(word); + if (sae->ae_chop != NULL) + l -= STRLEN(sae->ae_chop); + if (sae->ae_add == NULL) + word[l] = NUL; + else + STRCPY(word + l, sae->ae_add); + + if (bw->bw_flags & BWF_KEEPCAP) + { + /* Do the same for the caseword. */ + l = STRLEN(caseword); + if (sae->ae_chop != NULL) + l -= STRLEN(sae->ae_chop); + if (sae->ae_add == NULL) + caseword[l] = NUL; + else + STRCPY(caseword + l, sae->ae_add); + } + } + + nbw = (basicword_T *)alloc_clear((unsigned) + sizeof(basicword_T) + STRLEN(word)); + if (nbw != NULL) + { + /* Add the new word to the list of words to be added later. */ + if (ga_grow(add_words, 1) == FAIL) + { + vim_free(nbw); + return; + } + ((basicword_T **)add_words->ga_data)[add_words->ga_len++] = nbw; + + /* Copy the (modified) basic word, flags and region. */ + STRCPY(nbw->bw_word, word); + nbw->bw_flags = bw->bw_flags; + nbw->bw_region = bw->bw_region; + + /* Set the (modified) caseword. */ + if (bw->bw_flags & BWF_KEEPCAP) + if ((nbw->bw_caseword = vim_strsave(caseword)) == NULL) + nbw->bw_flags &= ~BWF_KEEPCAP; + + if (bw->bw_leadstring != NULL) + { + if (pae != NULL) + { + /* Prepend prefix to leadstring. */ + ll = STRLEN(bw->bw_leadstring); + l = choplen = 0; + if (pae->ae_add != NULL) + l = STRLEN(pae->ae_add); + if (pae->ae_chop != NULL) + { + choplen = STRLEN(pae->ae_chop); + if (choplen > ll) /* TODO: error? */ + choplen = ll; + } + nbw->bw_leadstring = alloc((unsigned)(ll + l - choplen + 1)); + if (nbw->bw_leadstring != NULL) + { + if (l > 0) + mch_memmove(nbw->bw_leadstring, pae->ae_add, l); + STRCPY(nbw->bw_leadstring + l, bw->bw_leadstring + choplen); + } + } + else + nbw->bw_leadstring = vim_strsave(bw->bw_leadstring); + } + + if (bw->bw_addstring != NULL) + { + if (sae != NULL) + { + /* Append suffix to addstring. */ + l = STRLEN(bw->bw_addstring); + if (sae->ae_chop != NULL) + { + l -= STRLEN(sae->ae_chop); + if (l < 0) /* TODO: error? */ + l = 0; + } + if (sae->ae_add == NULL) + ll = 0; + else + ll = STRLEN(sae->ae_add); + nbw->bw_addstring = alloc((unsigned)(ll + l - choplen + 1)); + if (nbw->bw_addstring != NULL) + { + STRCPY(nbw->bw_addstring, bw->bw_addstring); + if (sae->ae_add == NULL) + nbw->bw_addstring[l] = NUL; + else + STRCPY(nbw->bw_addstring + l, sae->ae_add); + } + } + else + nbw->bw_addstring = vim_strsave(bw->bw_addstring); + } + } +} + +/* + * Add basicword_T "*bw" to wordlist "newwords". + */ + static void +add_to_wordlist(newwords, bw) + hashtab_T *newwords; + basicword_T *bw; +{ + hashitem_T *hi; + basicword_T *bw2; + + hi = hash_find(newwords, bw->bw_word); + if (HASHITEM_EMPTY(hi)) + { + /* New entry, add to hashlist. */ + hash_add(newwords, bw->bw_word); + bw->bw_next = NULL; + } + else + { + /* Existing entry, append to list of basic words. */ + bw2 = HI2BW(hi); + bw->bw_next = bw2->bw_next; + bw2->bw_next = bw; + } +} + +/* + * Write a number to file "fd", MSB first, in "len" bytes. + */ + static void +put_bytes(fd, nr, len) + FILE *fd; + long_u nr; + int len; +{ + int i; + + for (i = len - 1; i >= 0; --i) + putc((int)(nr >> (i * 8)), fd); +} + +/* + * Write affix info. ... + */ + static void +write_affix(fd, ah) + FILE *fd; + affheader_T *ah; +{ + int i = 0; + affentry_T *ae; + char_u *p; + int round; + + fputc(ah->ah_combine ? 1 : 0, fd); /* */ + + /* Count the number of entries. */ + for (ae = ah->ah_first; ae != NULL; ae = ae->ae_next) + ++i; + put_bytes(fd, (long_u)i, 2); /* */ + + for (ae = ah->ah_first; ae != NULL; ae = ae->ae_next) + for (round = 1; round <= 2; ++round) + { + p = round == 1 ? ae->ae_chop : ae->ae_add; + if (p == NULL) + putc(0, fd); /* / */ + else + { + putc(STRLEN(p), fd); /* / */ + /* / */ + fwrite(p, STRLEN(p), (size_t)1, fd); + } + } +} + +/* + * Write list of affix NRs: ... + */ + static void +write_affixlist(fd, aff, bytes) + FILE *fd; + garray_T *aff; + int bytes; +{ + int i; + + if (aff->ga_len > 0) + { + putc(aff->ga_len, fd); /* */ + for (i = 0; i < aff->ga_len; ++i) + put_bytes(fd, (long_u )((short_u *)aff->ga_data)[i], bytes); + } +} + +/* + * Vim spell file format:
+ * + * + *
: ... + * + * 10 bytes "VIMspell01" + * 1 byte number of regions following (8 supported) + * 2 bytes Region name: ca, au, etc. + * First is region 1. + * + * + * : ... + * : ... + * list of possible affixes: prefixes and suffixes. + * + * 2 bytes Number of affixes (MSB comes first). + * When more than 256 an affixNR is 2 bytes. + * This is separate for prefixes and suffixes! + * First affixNR is 0. + * 2 bytes Total number of affix items (MSB comes first). + * + * : ... + * + * 1 byte 0x01: prefix combines with suffix. + * 0x02-0x80: unset + * 2 bytes Number of affixes with this affixNR (MSB first). + * + * : + * + * 1 byte Length of in bytes. + * N bytes To be removed from basic word. + * 1 byte Length of in bytes. + * N bytes To be added to basic word. + * + * + * : ... + * + * 4 bytes Length of in bytes, excluding + * . MSB first. + * To be defined. + * + * + * : ... + * + * 4 bytes Number of following. MSB first. + * + * : [] + * [ ] + * [ ...] (prefixes) + * [ ...] (suffixes) + * [] + * [ ...] + * + * i 1 byte Number of bytes copied from previous word. + * N bytes Additional bytes for word, up to byte smaller than + * 0x20 (space). + * Must only contain case-folded word characters. + * 1 byte 0x01: word is valid without addition + * 0x02: has region byte + * 0x04: first letter must be upper-case + * 0x08: has suffixes, and follow + * 0x10: more flags, follows next + * 0x20-0x80: can't be used, unset + * 1 byte 0x01: has additions, and follow + * 0x02: has prefixes, and follow + * 0x04: all letters must be upper-case + * 0x08: case must match + * 0x10-0x80: unset + * 1 byte Length of . + * N bytes Word with matching case. + * 1 byte Number of affix NRs following. + * 1 or 2 byte Number of possible affix for this word. + * When using 2 bytes MSB comes first. + * 1 byte Bitmask for regions in which word is valid. When + * omitted it's valid in all regions. + * Lowest bit is for region 1. + * 2 bytes Number of items following. + * + * : [ ] [] + * + * 1 byte 0x01: fixed case, is the whole word + * with matching case. + * 0x02: first letter must be upper-case + * 0x04: all letters must be upper-case + * 0x08: has region byte + * 0x10-0x80: unset + * 1 byte Length of in bytes. + * 1 byte Number of bytes at start of that must + * come before the start of the basic word. + * N bytes Word characters, before/in/after the word. + * + * All text characters are in 'encoding': , , , + * > and . + * All other fields are ASCII: + * is always case-folded. + */ + +/* + * Write the Vim spell file "fname". + */ + static void +write_vim_spell(fname, prefga, suffga, newwords, regcount, regchars) + char_u *fname; + garray_T *prefga; /* prefixes, affheader_T entries */ + garray_T *suffga; /* suffixes, affheader_T entries */ + hashtab_T *newwords; /* basic words, basicword_T entries */ + int regcount; /* number of regions */ + char_u *regchars; /* region names */ +{ + FILE *fd; + garray_T *gap; + hashitem_T *hi; + char_u **wtab; + int todo; + int flags, aflags; + basicword_T *bw, *bwf, *bw2, *prevbw = NULL; + int regionmask; /* mask for all relevant region bits */ + int i; + int cnt; + affentry_T *ae; + int round; + int prefm, suffm; + garray_T bwga; + + fd = fopen((char *)fname, "w"); + if (fd == NULL) + { + EMSG2(_(e_notopen), fname); + return; + } + + fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd); + + /* write the region names if there is more than one */ + if (regcount > 1) + { + putc(regcount, fd); + fwrite(regchars, (size_t)(regcount * 2), (size_t)1, fd); + regionmask = (1 << regcount) - 1; + } + else + { + putc(0, fd); + regionmask = 0; + } + + /* Write the prefix and suffix lists. */ + for (round = 1; round <= 2; ++round) + { + gap = round == 1 ? prefga : suffga; + put_bytes(fd, (long_u)gap->ga_len, 2); /* */ + + /* Count the total number of affix items. */ + cnt = 0; + for (i = 0; i < gap->ga_len; ++i) + for (ae = ((affheader_T *)gap->ga_data + i)->ah_first; + ae != NULL; ae = ae->ae_next) + ++cnt; + put_bytes(fd, (long_u)cnt, 2); /* */ + + for (i = 0; i < gap->ga_len; ++i) + write_affix(fd, (affheader_T *)gap->ga_data + i); + } + + /* Number of bytes used for affix NR depends on affix count. */ + prefm = (prefga->ga_len > 256) ? 2 : 1; + suffm = (suffga->ga_len > 256) ? 2 : 1; + + /* Write the suggest info. TODO */ + put_bytes(fd, 0L, 4); + + /* + * Write the word list. ... + */ + /* number of basic words in 4 bytes */ + put_bytes(fd, newwords->ht_used, 4); /* */ + + /* + * Sort the word list, so that we can reuse as many bytes as possible. + */ + wtab = (char_u **)alloc((unsigned)(sizeof(char_u *) * newwords->ht_used)); + if (wtab != NULL) + { + /* Make a table with pointers to each word. */ + todo = newwords->ht_used; + for (hi = newwords->ht_array; todo > 0; ++hi) + if (!HASHITEM_EMPTY(hi)) + wtab[--todo] = hi->hi_key; + + /* Sort. */ + sort_strings(wtab, (int)newwords->ht_used); + + /* Now write each basic word to the spell file. */ + ga_init2(&bwga, sizeof(basicword_T *), 10); + for (todo = 0; todo < newwords->ht_used; ++todo) + { + bwf = KEY2BW(wtab[todo]); + + /* + * Reorder the list of basicword_T words: make a list for words + * with the same case-folded word. Put them together for same + * caps (ONECAP, ALLCAP and various KEEPCAP words) and same + * affixes. Each list will then be put as a basic word with + * additions. + * This won't take much space, since the basic word is the same + * every time, only its length is written. + */ + bwga.ga_len = 0; + for (bw = bwf; bw != NULL; bw = bw->bw_next) + { + flags = bw->bw_flags & (BWF_ONECAP | BWF_KEEPCAP | BWF_ALLCAP); + + /* Go through the lists we found so far. Break when the case + * matches. */ + for (i = 0; i < bwga.ga_len; ++i) + { + bw2 = ((basicword_T **)bwga.ga_data)[i]; + aflags = bw2->bw_flags & (BWF_ONECAP | BWF_KEEPCAP + | BWF_ALLCAP); + if (flags == aflags + && ((flags & BWF_KEEPCAP) == 0 + || (STRCMP(bw->bw_caseword, + bw2->bw_caseword) == 0)) + && same_affixes(bw, bw2)) + break; + } + if (i == bwga.ga_len) + { + /* No word with similar caps, make a new list. */ + if (ga_grow(&bwga, 1) == FAIL) + break; + ((basicword_T **)bwga.ga_data)[i] = bw; + bw->bw_cnext = NULL; + ++bwga.ga_len; + } + else + { + /* Add to list of words with similar caps. */ + bw->bw_cnext = bw2->bw_cnext; + bw2->bw_cnext = bw; + } + } + + /* Prefer the word with no caps to use as the first basic word. + * At least one without KEEPCAP. */ + bw = NULL; + for (i = 0; i < bwga.ga_len; ++i) + { + bw2 = ((basicword_T **)bwga.ga_data)[i]; + if (bw == NULL + || (bw2->bw_flags & (BWF_ONECAP | BWF_KEEPCAP + | BWF_ALLCAP)) == 0 + || (bw->bw_flags & BWF_KEEPCAP)) + bw = bw2; + } + + /* Write first basic word. If it's KEEPCAP then we need a word + * without VALID flag first (makes it easier to read the list back + * in). */ + if (bw->bw_flags & BWF_KEEPCAP) + write_bword(fd, bw, TRUE, &prevbw, regionmask, prefm, suffm); + write_bword(fd, bw, FALSE, &prevbw, regionmask, prefm, suffm); + + /* Write other basic words, with different caps. */ + for (i = 0; i < bwga.ga_len; ++i) + { + bw2 = ((basicword_T **)bwga.ga_data)[i]; + if (bw2 != bw) + write_bword(fd, bw2, FALSE, &prevbw, regionmask, + prefm, suffm); + } + } + + ga_clear(&bwga); + } + + fclose(fd); +} + +/* + * Write basic word, followed by any additions. + * + * : [] + * [ ] + * [ ...] (prefixes) + * [ ...] (suffixes) + * [] + * [ ...] + */ + static void +write_bword(fd, bwf, lowcap, prevbw, regionmask, prefm, suffm) + FILE *fd; + basicword_T *bwf; + int lowcap; /* write KEEPKAP word as not-valid */ + basicword_T **prevbw; /* last written basic word */ + int regionmask; /* mask that includes all possible regions */ + int prefm; + int suffm; +{ + int flags; + int aflags; + int len; + int leadlen, addlen; + int clen; + int adds = 0; + int i; + basicword_T *bw, *bw2; + + /* Check how many bytes can be copied from the previous word. */ + len = STRLEN(bwf->bw_word); + if (*prevbw == NULL) + clen = 0; + else + for (clen = 0; clen < len + && (*prevbw)->bw_word[clen] == bwf->bw_word[clen]; ++clen) + ; + putc(clen, fd); /* */ + *prevbw = bwf; + /* */ + if (len > clen) + fwrite(bwf->bw_word + clen, (size_t)(len - clen), (size_t)1, fd); + + /* Try to find a word without additions to use first. */ + bw = bwf; + for (bw2 = bwf; bw2 != NULL; bw2 = bw2->bw_cnext) + { + if (bw2->bw_addstring != NULL || bw2->bw_leadstring != NULL) + ++adds; + else + bw = bw2; + } + + /* Flags: If there is no leadstring and no addstring the basic word is + * valid, may have prefixes, suffixes and region. */ + flags = bw->bw_flags; + if (bw->bw_addstring == NULL && bw->bw_leadstring == NULL) + { + flags |= BWF_VALID; + + /* Add the prefix/suffix list if there are prefixes/suffixes. */ + if (bw->bw_prefix.ga_len > 0) + flags |= BWF_PREFIX; + if (bw->bw_suffix.ga_len > 0) + flags |= BWF_SUFFIX; + + /* Flags: add the region byte if the word isn't valid in all + * regions. */ + if (regionmask != 0 && (bw->bw_region & regionmask) != regionmask) + flags |= BWF_REGION; + } + + /* Flags: may have additions. */ + if (adds > 0) + flags |= BWF_ADDS; + + /* The dummy word before a KEEPCAP word doesn't have any flags, they are + * in the actual word that follows. */ + if (lowcap) + flags = 0; + + /* Flags: when the upper byte is not used we only write one flags + * byte, if it's used then set an extra flag in the first byte and + * also write the second byte. */ + if ((flags & 0xff00) == 0) + putc(flags, fd); /* */ + else + { + putc(flags | BWF_SECOND, fd); /* */ + putc((int)((unsigned)flags >> 8), fd); /* */ + } + + /* First dummy word doesn't need anything but flags. */ + if (lowcap) + return; + + if (flags & BWF_KEEPCAP) + { + len = STRLEN(bw->bw_caseword); + putc(len, fd); /* */ + for (i = 0; i < len; ++i) + putc(bw->bw_caseword[i], fd); /* */ + } -#if defined(FEAT_SYN_HL) || defined(PROTO) + /* write prefix and suffix lists: ... */ + if (flags & BWF_PREFIX) + write_affixlist(fd, &bw->bw_prefix, prefm); + if (flags & BWF_SUFFIX) + write_affixlist(fd, &bw->bw_suffix, suffm); -#ifdef HAVE_FCNTL_H -# include -#endif + if (flags & BWF_REGION) + putc(bw->bw_region, fd); /* */ -#define MAXWLEN 100 /* assume max. word len is this many bytes */ + /* + * Additions. + */ + if (adds > 0) + { + put_bytes(fd, (long_u)adds, 2); /* */ + + for (bw = bwf; bw != NULL; bw = bw->bw_cnext) + if (bw->bw_leadstring != NULL || bw->bw_addstring != NULL) + { + /* : [ ] + * [] */ + aflags = 0; + if (bw->bw_flags & BWF_ONECAP) + aflags |= ADD_ONECAP; + if (bw->bw_flags & BWF_ALLCAP) + aflags |= ADD_ALLCAP; + if (bw->bw_flags & BWF_KEEPCAP) + aflags |= ADD_KEEPCAP; + if (regionmask != 0 + && (bw->bw_region & regionmask) != regionmask) + aflags |= ADD_REGION; + putc(aflags, fd); /* */ + + if (bw->bw_leadstring == NULL) + leadlen = 0; + else + leadlen = STRLEN(bw->bw_leadstring); + if (bw->bw_addstring == NULL) + addlen = 0; + else + addlen = STRLEN(bw->bw_addstring); + putc(leadlen + addlen, fd); /* */ + putc(leadlen, fd); /* */ + /* */ + if (bw->bw_leadstring != NULL) + fwrite(bw->bw_leadstring, (size_t)leadlen, (size_t)1, fd); + if (bw->bw_addstring != NULL) + fwrite(bw->bw_addstring, (size_t)addlen, (size_t)1, fd); + + if (aflags & ADD_REGION) + putc(bw->bw_region, fd); /* */ + } + } +} + + +/* + * ":mkspell outfile infile ..." + */ + void +ex_mkspell(eap) + exarg_T *eap; +{ + int fcount; + char_u **fnames; + char_u fname[MAXPATHL]; + char_u wfname[MAXPATHL]; + afffile_T *(afile[8]); + hashtab_T dfile[8]; + int i; + int len; + char_u region_name[16]; + struct stat st; + int round; + vimconv_T conv; + + /* Expand all the arguments (e.g., $VIMRUNTIME). */ + if (get_arglist_exp(eap->arg, &fcount, &fnames) == FAIL) + return; + if (fcount < 2) + EMSG(_(e_invarg)); /* need at least output and input names */ + else if (fcount > 9) + EMSG(_("E754: Only up to 8 regions supported")); + else + { + /* Check for overwriting before doing things that may take a lot of + * time. */ + sprintf((char *)wfname, "%s.%s.spl", fnames[0], p_enc); + if (!eap->forceit && mch_stat((char *)wfname, &st) >= 0) + { + EMSG(_(e_exists)); + goto theend; + } + if (mch_isdir(fnames[0])) + { + EMSG2(_(e_isadir2), fnames[0]); + goto theend; + } + + /* + * Init the aff and dic pointers. + * Get the region names if there are more than 2 arguments. + */ + for (i = 1; i < fcount; ++i) + { + afile[i - 1] = NULL; + hash_init(&dfile[i - 1]); + if (fcount > 2) + { + len = STRLEN(fnames[i]); + if (STRLEN(gettail(fnames[i])) < 5 || fnames[i][len - 3] != '_') + { + EMSG2(_("E755: Invalid region in %s"), fnames[i]); + goto theend; + } + else + { + region_name[(i - 1) * 2] = TOLOWER_ASC(fnames[i][len - 2]); + region_name[(i - 1) * 2 + 1] = + TOLOWER_ASC(fnames[i][len - 1]); + } + } + } + + /* + * Read all the .aff and .dic files. + * Text is converted to 'encoding'. + */ + for (i = 1; i < fcount; ++i) + { + /* Read the .aff file. Will init "conv" based on the "SET" line. */ + conv.vc_type = CONV_NONE; + sprintf((char *)fname, "%s.aff", fnames[i]); + if ((afile[i - 1] = spell_read_aff(fname, &conv)) == NULL) + break; + + /* Read the .dic file. */ + sprintf((char *)fname, "%s.dic", fnames[i]); + if (spell_read_dic(&dfile[i - 1], fname, &conv) == FAIL) + break; + + /* Free any conversion stuff. */ + convert_setup(&conv, NULL, NULL); + } + + /* Process the data when all the files could be read. */ + if (i == fcount) + { + garray_T prefga; + garray_T suffga; + garray_T *gap; + hashtab_T newwords; + + /* + * Combine all the affixes into one new affix list. This is done + * for prefixes and suffixes separately. + * We need to do this for each region, try to re-use the same + * affixes. + * Since we number the new affix entries, a growarray will do. In + * the affheader_T the ah_key is unused. + */ + MSG(_("Combining affixes...")); + out_flush(); + for (round = 1; round <= 2; ++round) + { + gap = round == 1 ? &prefga : &suffga; + ga_init2(gap, sizeof(affheader_T), 50); + for (i = 1; i < fcount; ++i) + get_new_aff(round == 1 ? &afile[i - 1]->af_pref + : &afile[i - 1]->af_suff, gap); + } + + /* + * Go over all words and: + * - change the old affix names to the new affix numbers + * - check the conditions + * - fold case + * - extract the basic word and additions. + * Do this for each region. + */ + MSG(_("Building word list...")); + out_flush(); + hash_init(&newwords); + + for (i = 1; i < fcount; ++i) + build_wordlist(&newwords, &dfile[i - 1], afile[i - 1], + 1 << (i - 1)); + if (fcount > 2) + { + /* Combine words for the different regions into one. */ + MSG(_("Combining regions...")); + out_flush(); + combine_regions(&newwords); + } + + /* + * Affixes on a word with additions are clumsy, would require + * inefficient searching. Turn the affixes into additions and/or + * the expanded word. + */ + MSG(_("Processing words...")); + out_flush(); + expand_affixes(&newwords, &prefga, &suffga); + + /* Write the info in the spell file. */ + smsg((char_u *)_("Writing spell file %s..."), wfname); + out_flush(); + write_vim_spell(wfname, &prefga, &suffga, &newwords, + fcount - 1, region_name); + MSG(_("Done!")); + out_flush(); + + /* Free the allocated stuff. */ + free_wordtable(&newwords); + for (round = 1; round <= 2; ++round) + { + gap = round == 1 ? &prefga: &suffga; + for (i = 0; i < gap->ga_len; ++i) + free_affixentries(((affheader_T *)gap->ga_data + i) + ->ah_first); + ga_clear(gap); + } + } + + /* Free the .aff and .dic file structures. */ + for (i = 1; i < fcount; ++i) + { + if (afile[i - 1] != NULL) + spell_free_aff(afile[i - 1]); + spell_free_dic(&dfile[i - 1]); + } + } + +theend: + FreeWild(fcount, fnames); +} + + static void +free_wordtable(ht) + hashtab_T *ht; +{ + int todo; + basicword_T *bw, *nbw; + hashitem_T *hi; + + todo = ht->ht_used; + for (hi = ht->ht_array; todo > 0; ++hi) + { + if (!HASHITEM_EMPTY(hi)) + { + --todo; + for (bw = HI2BW(hi); bw != NULL; bw = nbw) + { + nbw = bw->bw_next; + free_basicword(bw); + } + } + } +} + +/* + * Free a basicword_T and what it contains. + */ + static void +free_basicword(bw) + basicword_T *bw; +{ + ga_clear(&bw->bw_prefix); + ga_clear(&bw->bw_suffix); + vim_free(bw->bw_caseword); + vim_free(bw->bw_leadstring); + vim_free(bw->bw_addstring); + vim_free(bw); +} + +/* + * Free a list of affentry_T. + */ + static void +free_affixentries(first) + affentry_T *first; +{ + affentry_T *ap, *an; + + for (ap = first; ap != NULL; ap = an) + { + an = ap->ae_next; + vim_free(ap->ae_chop); + vim_free(ap->ae_add); + vim_free(ap->ae_cond); + vim_free(ap->ae_prog); + vim_free(ap); + } +} + +#endif /* FEAT_MBYTE */ + +#endif /* FEAT_SYN_HL */ + +#if 0 /* old spell code with words in .spl file */ /* * Structure that is used to store the text from the language file. This - * avoids the need to allocate each individual word and copying it. It's - * allocated in big chunks for speed. + * avoids the need to allocate space for each individual word. It's allocated + * in big chunks for speed. */ #define SBLOCKSIZE 4096 /* default size of sb_data */ typedef struct sblock_S sblock_T; @@ -75,7 +3932,7 @@ static slang_T *first_lang = NULL; typedef struct dword_S { char_u dw_region; /* one bit per region where it's valid */ - char_u dw_flags; /* WF_ flags */ + char_u dw_flags; /* DW_ flags */ char_u dw_word[1]; /* actually longer, NUL terminated */ } dword_T; @@ -91,7 +3948,7 @@ typedef struct nword_S starting with non-word character */ int nw_maxlen; /* longest nword length (after the dword) */ char_u nw_region; /* one bit per region where it's valid */ - char_u nw_flags; /* WF_ flags */ + char_u nw_flags; /* DW_ flags */ char_u nw_word[1]; /* actually longer, NUL terminated */ } nword_T; @@ -921,163 +4778,5 @@ theend: vim_free(rbuf); } -/* - * Parse 'spelllang' and set buf->b_langp accordingly. - * Returns an error message or NULL. - */ - char_u * -did_set_spelllang(buf) - buf_T *buf; -{ - garray_T ga; - char_u *lang; - char_u *e; - char_u *region; - int region_mask; - slang_T *lp; - int c; - - ga_init2(&ga, sizeof(langp_T), 2); - - /* loop over comma separated languages. */ - for (lang = buf->b_p_spl; *lang != NUL; lang = e) - { - e = vim_strchr(lang, ','); - if (e == NULL) - e = lang + STRLEN(lang); - if (e > lang + 2) - { - if (lang[2] != '_' || e - lang != 5) - { - ga_clear(&ga); - return e_invarg; - } - region = lang + 3; - } - else - region = NULL; - - for (lp = first_lang; lp != NULL; lp = lp->sl_next) - if (STRNICMP(lp->sl_name, lang, 2) == 0) - break; - - if (lp == NULL) - /* Not found, load the language. */ - lp = spell_load_lang(lang); - - if (lp != NULL) - { - if (region == NULL) - region_mask = REGION_ALL; - else - { - /* find region in sl_regions */ - c = find_region(lp->sl_regions, region); - if (c == REGION_ALL) - { - c = lang[5]; - lang[5] = NUL; - smsg((char_u *)_("Warning: region %s not supported"), lang); - lang[5] = c; - region_mask = REGION_ALL; - } - else - region_mask = 1 << c; - } - - if (ga_grow(&ga, 1) == FAIL) - { - ga_clear(&ga); - return e_outofmem; - } - LANGP_ENTRY(ga, ga.ga_len)->lp_slang = lp; - LANGP_ENTRY(ga, ga.ga_len)->lp_region = region_mask; - ++ga.ga_len; - } - - if (*e == ',') - ++e; - } - - /* Add a NULL entry to mark the end of the list. */ - if (ga_grow(&ga, 1) == FAIL) - { - ga_clear(&ga); - return e_outofmem; - } - LANGP_ENTRY(ga, ga.ga_len)->lp_slang = NULL; - ++ga.ga_len; - - /* Everything is fine, store the new b_langp value. */ - ga_clear(&buf->b_langp); - buf->b_langp = ga; - - return NULL; -} - -/* - * Find the region "region[2]" in "rp" (points to "sl_regions"). - * Each region is simply stored as the two characters of it's name. - * Returns the index if found, REGION_ALL if not found. - */ - static int -find_region(rp, region) - char_u *rp; - char_u *region; -{ - int i; - - for (i = 0; ; i += 2) - { - if (rp[i] == NUL) - return REGION_ALL; - if (rp[i] == region[0] && rp[i + 1] == region[1]) - break; - } - return i / 2; -} - -# if defined(FEAT_MBYTE) || defined(PROTO) -/* - * Clear all spelling tables and reload them. - * Used after 'encoding' is set. - */ - void -spell_reload() -{ - buf_T *buf; - slang_T *lp; - sblock_T *sp; - - /* Initialize the table for spell_iswordc(). */ - init_spell_chartab(); - - /* Unload all allocated memory. */ - while (first_lang != NULL) - { - lp = first_lang; - first_lang = lp->sl_next; - - hash_clear(&lp->sl_fwords.wi_ht); - ga_clear(&lp->sl_fwords.wi_add); - hash_clear(&lp->sl_kwords.wi_ht); - ga_clear(&lp->sl_kwords.wi_add); - while (lp->sl_block != NULL) - { - sp = lp->sl_block; - lp->sl_block = sp->sb_next; - vim_free(sp); - } - } - - /* Go through all buffers and handle 'spelllang'. */ - for (buf = firstbuf; buf != NULL; buf = buf->b_next) - { - ga_clear(&buf->b_langp); - if (*buf->b_p_spl != NUL) - did_set_spelllang(buf); - } -} -# endif -#endif /* FEAT_SYN_HL */ +#endif diff --git a/src/tag.c b/src/tag.c index fa8016269..f9797de9e 100644 --- a/src/tag.c +++ b/src/tag.c @@ -2333,15 +2333,17 @@ findtag_end: } static garray_T tag_fnames = GA_EMPTY; -static void found_tagfile_cb __ARGS((char_u *fname)); +static void found_tagfile_cb __ARGS((char_u *fname, void *cookie)); /* * Callback function for finding all "tags" and "tags-??" files in * 'runtimepath' doc directories. */ +/*ARGSUSED*/ static void -found_tagfile_cb(fname) +found_tagfile_cb(fname, cookie) char_u *fname; + void *cookie; { if (ga_grow(&tag_fnames, 1) == OK) ((char_u **)(tag_fnames.ga_data))[tag_fnames.ga_len++] = @@ -2390,7 +2392,7 @@ get_tagfname(first, buf) #else "doc/tags" #endif - , TRUE, found_tagfile_cb); + , TRUE, found_tagfile_cb, NULL); hf_idx = 0; } else if (*curbuf->b_p_tags != NUL) diff --git a/src/version.h b/src/version.h index d0bad957c..5a8c7c2c2 100644 --- a/src/version.h +++ b/src/version.h @@ -36,5 +36,5 @@ #define VIM_VERSION_NODOT "vim70aa" #define VIM_VERSION_SHORT "7.0aa" #define VIM_VERSION_MEDIUM "7.0aa ALPHA" -#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Mar 28)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Mar 28, compiled " +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Apr 15)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Apr 15, compiled " -- 2.50.1