From 67652c7efb076860e571e12c75fc1d07b203585e Mon Sep 17 00:00:00 2001 From: martinahansen Date: Thu, 24 Nov 2011 12:58:47 +0000 Subject: [PATCH] removed bp_doc/ and content git-svn-id: http://biopieces.googlecode.com/svn/trunk@1684 74ccb610-7750-0410-82ae-013aeee3265d --- bp_doc/00README | 2 - bp_doc/biopieces_cookbook.lyx | 7258 --------------- bp_doc/biopieces_cookbook.lyx~ | 7258 --------------- bp_doc/biotools_cookbook.lyx | 7256 --------------- bp_doc/biotools_cookbook.lyx~ | 7337 --------------- bp_doc/biotools_cookbook.pdf | Bin 697640 -> 0 bytes bp_doc/biotools_cookbook.tex | 2320 ----- bp_doc/biotools_presentation.odp | Bin 544519 -> 0 bytes bp_doc/chrdist.pdf | Bin 1954 -> 0 bytes bp_doc/chrdist.png | Bin 16785 -> 0 bytes bp_doc/chrdist.ps | 843 -- bp_doc/chrdist_ascii.png | Bin 19687 -> 0 bytes bp_doc/dotplot.pdf | Bin 28586 -> 0 bytes bp_doc/dotplot.png | Bin 56457 -> 0 bytes bp_doc/dotplot.ps | 13881 ----------------------------- bp_doc/dotplot.svg | 1359 --- bp_doc/histogram.png | Bin 18420 -> 0 bytes bp_doc/karyogram.png | Bin 64528 -> 0 bytes bp_doc/karyogram.svg | 1182 --- bp_doc/lendist.pdf | Bin 2214 -> 0 bytes bp_doc/lendist.png | Bin 13513 -> 0 bytes bp_doc/lendist.ps | 817 -- bp_doc/lendist_ascii.png | Bin 15659 -> 0 bytes bp_doc/logo.svg | 334 - bp_doc/seqlogo.png | Bin 36968 -> 0 bytes bp_doc/seqlogo.svg | 334 - 26 files changed, 50181 deletions(-) delete mode 100644 bp_doc/00README delete mode 100644 bp_doc/biopieces_cookbook.lyx delete mode 100644 bp_doc/biopieces_cookbook.lyx~ delete mode 100644 bp_doc/biotools_cookbook.lyx delete mode 100644 bp_doc/biotools_cookbook.lyx~ delete mode 100644 bp_doc/biotools_cookbook.pdf delete mode 100644 bp_doc/biotools_cookbook.tex delete mode 100644 bp_doc/biotools_presentation.odp delete mode 100644 bp_doc/chrdist.pdf delete mode 100644 bp_doc/chrdist.png delete mode 100644 bp_doc/chrdist.ps delete mode 100644 bp_doc/chrdist_ascii.png delete mode 100644 bp_doc/dotplot.pdf delete mode 100644 bp_doc/dotplot.png delete mode 100644 bp_doc/dotplot.ps delete mode 100644 bp_doc/dotplot.svg delete mode 100644 bp_doc/histogram.png delete mode 100644 bp_doc/karyogram.png delete mode 100644 bp_doc/karyogram.svg delete mode 100644 bp_doc/lendist.pdf delete mode 100644 bp_doc/lendist.png delete mode 100644 bp_doc/lendist.ps delete mode 100644 bp_doc/lendist_ascii.png delete mode 100644 bp_doc/logo.svg delete mode 100644 bp_doc/seqlogo.png delete mode 100644 bp_doc/seqlogo.svg diff --git a/bp_doc/00README b/bp_doc/00README deleted file mode 100644 index cdbed61..0000000 --- a/bp_doc/00README +++ /dev/null @@ -1,2 +0,0 @@ -# Adding stuff to the wiki, like images and documents -svn co https://biopieces.googlecode.com/svn/wiki wiki --username martinahansen diff --git a/bp_doc/biopieces_cookbook.lyx b/bp_doc/biopieces_cookbook.lyx deleted file mode 100644 index 1dc2694..0000000 --- a/bp_doc/biopieces_cookbook.lyx +++ /dev/null @@ -1,7258 +0,0 @@ -#LyX 1.5.1 created this file. For more info see http://www.lyx.org/ -\lyxformat 276 -\begin_document -\begin_header -\textclass scrartcl -\begin_preamble -\usepackage[colorlinks=true, urlcolor=blue, linkcolor=black]{hyperref} -\end_preamble -\language english -\inputencoding auto -\font_roman default -\font_sans default -\font_typewriter default -\font_default_family default -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 -\graphics default -\paperfontsize default -\spacing single -\papersize default -\use_geometry false -\use_amsmath 1 -\use_esint 1 -\cite_engine basic -\use_bibtopic false -\paperorientation portrait -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation skip -\defskip medskip -\quotes_language english -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\author "" -\author "" -\end_header - -\begin_body - -\begin_layout Title -Biopieces Cookbook -\end_layout - -\begin_layout Author -Martin Asser Hansen -\end_layout - -\begin_layout Publishers -John Mattick Group -\newline -Institute for Molecular Bioscience -\newline -University of Queensland -\newline -Aust -ralia -\newline -E-mail: mail@maasha.dk -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Standard - - -\backslash -thispagestyle{empty} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard - -\newpage - -\end_layout - -\begin_layout Standard -\begin_inset LatexCommand tableofcontents - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FloatList figure - -\end_inset - - -\end_layout - -\begin_layout Standard - -\newpage - -\end_layout - -\begin_layout Section -Introduction -\end_layout - -\begin_layout Standard -Biopieces is a collection of bioinformatic tools that can be linked together - (piped as we shall call it) in a very flexible manner to perform both simple - and complex tasks. - The fundamental idea is that biopieces work on a data stream that will - only terminate at the end of an analysis and that this data stream can - be passed through several different biopieces, each performing one specific - task. - The advantage of this approach is that a user can perform simple and complex - tasks without having to write advanced code. - Moreover, since the data format used to pass data between biopieces is - text based, biopieces can be written by different developers in their favorite - programming language --- and still the biopieces will be able to work together. -\end_layout - -\begin_layout Standard -In the most simple form bioools can be piped together on the command line - like this (using the pipe character '|'): -\end_layout - -\begin_layout LyX-Code -read_data | calculate_something | write_result -\end_layout - -\begin_layout Standard -However, a more comprehensive analysis could be composed: -\end_layout - -\begin_layout LyX-Code -read_data | select_entries | convert_entries | search_database -\end_layout - -\begin_layout LyX-Code -evaluate_results | plot_diagram | plot_another_diagram | -\end_layout - -\begin_layout LyX-Code -load_to_database -\end_layout - -\begin_layout Standard -The data stream that is piped through the biopieces consists of records - of key/value pairs in the same way a hash does in order to keep as simple - a structure as possible. - An example record can be seen below: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -REC_TYPE: PATSCAN -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -MATCH: AGATCAAGTG -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -S_BEG: 7 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -S_END: 16 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -ALIGN_LEN: 9 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -S_ID: piR-t6 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -STRAND: + -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -PATTERN: AGATCAAGTG -\end_layout - -\begin_layout LyX-Code - -\size scriptsize ---- -\end_layout - -\begin_layout Standard -The ' -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\backslash -/- -\end_layout - -\end_inset - -' denotes the delimiter of the records, and each key is a word followed - by a ':' and a white-space and then the value. - By convention the biopieces only uses upper case keys (a list of used keys - can be seen in Appendix\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sec:Keys" - -\end_inset - -). - Since the records basically are hash structures this mean that the order - of the keys in the stream is unordered, and in the above example it is - pure coincidence that HIT_BEG is displayed before HIT_END, however, when - the order of the keys is importent, the biopieces will automagically see - to that. -\end_layout - -\begin_layout Standard -All of the biopieces are able to read and write a data stream to and from - file as long as the records are in the biopieces format. - This means that if you are undertaking a lengthy analysis where one of - the steps is time consuming, you may save the stream after this step, and - subsequently start one or more analysis from that last step -\begin_inset Foot -status collapsed - -\begin_layout Standard -It is a goal that the biopieces at some point will be able to dump the data - stream to file in case one of the tools fail critically. -\end_layout - -\end_inset - -. - If you are running a lengthy analysis it is highly recommended that you - create a small test sample of the data and run that through the pipeline - --- and once you are satisfied with the result proceed with the full data - set (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-select-a-few-records" - -\end_inset - -). -\end_layout - -\begin_layout Standard -All of the biopieces can be supplied with long arguments prefixed with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - - switches or single character arguments prefixed with - switches that can - be grouped together (e.g. - -xok). - In this cookbook only the long switches are used to emphasize what these - switches do. -\end_layout - -\begin_layout Section -Setup -\end_layout - -\begin_layout Standard -In order to get the biopieces to work, you need to add environment settings - to include the code binaries, scripts, and modules that constitute the - biopieces package. - Assuming that you are using bash, add the following to your '~/.bashrc' - file using your favorite editor. - After the changes has been saved you need to either run 'source ~/.bashrc' - or relogin. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -if [ -f "/home/m.hansen/maasha/conf/bashrc" ]; then -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - source "/home/m.hansen/maasha/conf/bashrc" -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -fi -\end_layout - -\begin_layout Section -Getting Started -\end_layout - -\begin_layout Standard -The biopiece -\series bold -list_biopieces -\series default - lists all the biopieces along with a description: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -list_biopieces -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -align_seq Align sequences in stream using Muscle. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -analyze_seq Analysis the residue composition of each sequence - in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -analyze_vals Determine type, count, min, max, sum and mean for - values in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -blast_seq BLAST sequences in stream against a specified database. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -blat_seq BLAT sequences in stream against a specified genome. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -complement_seq Complement sequences in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_records Count the number of records in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_seq Count sequences in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_vals Count the number of times values of given keys exists - in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -create_blast_db Create a BLAST database from sequences in stream for - use with BLAST. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -... -\end_layout - -\begin_layout Standard -To list the biopieces for writing different formats, you can use unix's - grep like this: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -list_biopieces | grep write -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_align Write aligned sequences in pretty alignment format. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_bed Write records from stream as BED lines. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_blast Write BLAST records from stream in BLAST tabular format - (-m8 and 9). -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_fasta Write sequences in FASTA format. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_psl Write records from stream in PSL format. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_tab Write records from stream as tab separated table. -\end_layout - -\begin_layout Standard -In order to find out how a specific biopiece works, you just type the program - name without any arguments and press return and the usage of the biopiece - will be displayed. - E.g. - -\series bold -read_fasta -\series default - : -\end_layout - -\begin_layout Standard -\begin_inset Box Frameless -position "t" -hor_pos "c" -has_inner_box 1 -inner_pos "t" -use_parbox 0 -width "100col%" -special "none" -height "1in" -height_special "totalheight" -status open - -\begin_layout LyX-Code - -\size scriptsize -Program name: read_fasta -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Author: Martin Asser Hansen - Copyright (C) - All rights reserved -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Contact: mail@maasha.dk -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Date: August 2007 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -License: GNU General Public License version 2 (http://www.gnu.org/copyleft/ -gpl.html) -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Description: Read FASTA entries. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Usage: read_fasta [options] -i -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Options: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-i | --data_in=] - Comma separated list of files - to read. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-n | --num=] - Limit number of records to read. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-I | --stream_in=] - Read input stream from file - - Default=STDIN -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-O | --stream_out=] - Write output stream to file - - Default=STDOUT -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Examples: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test.fna - Read FASTA entries from file. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test1.fna,test2,fna - Read FASTA entries from files. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i '*.fna' - Read FASTA entries from files. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test.fna -n 10 - Read first 10 FASTA entries from - file. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -The Data Stream -\end_layout - -\begin_layout Subsection -How to read the data stream from file? -\begin_inset LatexCommand label -name "sub:How-to-read-stream" - -\end_inset - - -\end_layout - -\begin_layout Standard -You want to read a data stream that you previously have saved to file in - biopieces format. - This can be done implicetly or explicitly. - The implicit way uses the 'stdout' stream of the Unix terminal: -\end_layout - -\begin_layout LyX-Code -cat | -\end_layout - -\begin_layout Standard -cat is the Unix command that reads a file and output the result to 'stdout' - --- which in this case is piped to any biopiece represented by the . - It is also possible to read the data stream using '<' to direct the 'stdout' - stream into the biopiece like this: -\end_layout - -\begin_layout LyX-Code - < -\end_layout - -\begin_layout Standard -However, that will not work if you pipe more biopieces together. - Then it is much safer to read the stream from a file explicitly like this: -\end_layout - -\begin_layout LyX-Code - --stream_in= -\end_layout - -\begin_layout Standard -Here the filename is explicetly given to the biopiece - with the switch -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_in. - This switch works with all biopieces. - It is also possible to read in data from multiple sources by repeating - the explicit read step: -\end_layout - -\begin_layout LyX-Code - --stream_in= | --stream_in= -\end_layout - -\begin_layout Subsection -How to write the data stream to file? -\begin_inset LatexCommand label -name "sub:How-to-write-stream" - -\end_inset - - -\end_layout - -\begin_layout Standard -In order to save the output stream from a biopiece to file, so you can read - in the stream again at a later time, you can do one of two things: -\end_layout - -\begin_layout LyX-Code - > -\end_layout - -\begin_layout Standard -All, the biopieces write the data stream to 'stdout' by default which can - be written to a file by redirecting 'stdout' to file using '>' , however, - if one of the biopieces for writing other formats is used then the both - the biopieces records as well as the result output will go to 'stdout' - in a mixture causing havock! To avoid this you must use the switch -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out that explictly tells the biopiece to write the output stream - to file: -\end_layout - -\begin_layout LyX-Code - --stream_out= -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out switch works with all biopieces. -\end_layout - -\begin_layout Subsection -How to terminate the data stream? -\end_layout - -\begin_layout Standard -The data stream is never stops unless the user want to save the stream or - by supplying the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch that will terminate the stream: -\end_layout - -\begin_layout LyX-Code - --no_stream -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch only works with those biopieces where it makes sense that - the user might want to terminale the data stream, -\emph on -i.e -\emph default -. - after an analysis step where the user wants to output the result, but not - the data stream. -\end_layout - -\begin_layout Subsection -How to write my results to file? -\begin_inset LatexCommand label -name "sub:How-to-write-result" - -\end_inset - - -\end_layout - -\begin_layout Standard -Saving the result of an analysis to file can be done implicitly or explicitly. - The implicit way: -\end_layout - -\begin_layout LyX-Code - --no_stream > -\end_layout - -\begin_layout Standard -If you use '>' to redirect 'stdout' to file then it is important to use - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch to avoid writing a mix of biopieces records and result - to the same file causing havock. - The safe way is to use the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch which explicetly tells the biopiece to write the result - to a given file: -\end_layout - -\begin_layout LyX-Code - --result_out= -\end_layout - -\begin_layout Standard -Using the above method will not terminate the stream, so it is possible - to pipe that into another biopiece generating different results: -\end_layout - -\begin_layout LyX-Code - --result_out= | --result_out= -\end_layout - -\begin_layout Standard -And still the data stream will continue unless terminated with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream: -\end_layout - -\begin_layout LyX-Code - --result_out= --no_stream -\end_layout - -\begin_layout Standard -Or written to file using implicitly or explicity -\begin_inset LatexCommand eqref -reference "sub:How-to-write-result" - -\end_inset - -. - The explicit way: -\end_layout - -\begin_layout LyX-Code - --result_out= --stream_out= -\end_layout - -\begin_layout Subsection -How to read data from multiple sources? -\end_layout - -\begin_layout Standard -To read multiple data sources, with the same type or different type of data - do: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= -\end_layout - -\begin_layout Standard -where type is the data type a specific biopiece reads. -\end_layout - -\begin_layout Section -Reading input -\end_layout - -\begin_layout Subsection -How to read biopieces input? -\end_layout - -\begin_layout Standard -See -\begin_inset LatexCommand eqref -reference "sub:How-to-read-stream" - -\end_inset - -. -\end_layout - -\begin_layout Subsection -How to read in data? -\end_layout - -\begin_layout Standard -Data in different formats can be read with the appropriate biopiece for - that format. - The biopieces are typicalled named 'read_' such as -\series bold -read_fasta -\series default -, -\series bold -read_bed -\series default -, -\series bold -read_tab -\series default -, etc., and all behave in a similar manner. - Data can be read by supplying the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -data_in switch and a file name to the file containing the data: -\end_layout - -\begin_layout LyX-Code - --data_in= -\end_layout - -\begin_layout Standard -It is also possible to read in a saved biopieces stream (see -\begin_inset LatexCommand ref -reference "sub:How-to-read-stream" - -\end_inset - -) as well as reading data in one go: -\end_layout - -\begin_layout LyX-Code - --stream_in= --data_in= -\end_layout - -\begin_layout Standard -If you want to read data from several files you can do this: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= -\end_layout - -\begin_layout Standard -If you have several data files you can read in all explicitly with a comma - separated list: -\end_layout - -\begin_layout LyX-Code - --data_in=file1,file2,file3 -\end_layout - -\begin_layout Standard -And it is also possible to use file globbing -\begin_inset Foot -status open - -\begin_layout Standard -using the short option will only work if you quote the argument -i '*.fna' -\end_layout - -\end_inset - -: -\end_layout - -\begin_layout LyX-Code - --data_in=*.fna -\end_layout - -\begin_layout Standard -Or in a combination: -\end_layout - -\begin_layout LyX-Code - --data_in=file1,/dir/*.fna -\end_layout - -\begin_layout Standard -Finally, it is possible to read in data in different formats using the appropria -te biopiece for each format: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= ... -\end_layout - -\begin_layout Subsection -How to read FASTA input? -\end_layout - -\begin_layout Standard -Sequences in FASTA format can be read explicitly using -\series bold -read_fasta -\series default -: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= -\end_layout - -\begin_layout Subsection -How to read alignment input? -\end_layout - -\begin_layout Standard -If your alignment if FASTA formatted then you can -\series bold -read_align -\series default -. - It is also possible to use -\series bold -read_fasta -\series default - since the data is FASTA formatted, however, with -\series bold -read_fasta -\series default - the key ALIGN will be omitted. - The ALIGN key is used to determine which sequences belong to what alignment - which is required for -\series bold -write_align -\series default -. -\end_layout - -\begin_layout LyX-Code -read_align --data_in= -\end_layout - -\begin_layout Subsection -How to read tabular input? -\begin_inset LatexCommand label -name "sub:How-to-read-table" - -\end_inset - - -\end_layout - -\begin_layout Standard -Tabular input can be read with -\series bold -read_tab -\series default - which will read in all rows and chosen columns (separated by a given delimter) - from a table in text format. -\end_layout - -\begin_layout Standard -The table below: -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Standard -Human -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -ATACGTCAG -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -23524 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Dog -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -AGCATGAC -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -2442 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Mouse -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -GACTG -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -234 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Cat -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -AAATGCA -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -2342 -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -Can be read using the command: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= -\end_layout - -\begin_layout Standard -Which will result in four records, one for each row, where the keys V0, - V1, V2 are the default keys for the organism, sequence, and count, respectively. - It is possible to select a subset of colums to read by using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -cols switch which takes a comma separated list of columns numbers (first - column is designated 0) as argument. - So to read in only the sequence and the count so that the count comes before - the sequence do: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --cols=2,1 -\end_layout - -\begin_layout Standard -It is also possible to name the columns with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --cols=2,1 --keys=COUNT,SEQ -\end_layout - -\begin_layout Subsection -How to read BED input? -\end_layout - -\begin_layout Standard -The BED (Browser Extensible Data -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://genome.ucsc.edu/FAQ/FAQformat" - -\end_inset - - -\end_layout - -\end_inset - -) format is a tabular format for data pertaining to one of the Eukaryotic - genomes in the UCSC genome brower -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://genome.ucsc.edu/" - -\end_inset - - -\end_layout - -\end_inset - -. - The BED format consists of up to 12 columns, where the first three are - mandatory CHR, CHR_BEG, and CHR_END. - The mandatory columns and any of the optional columns can all be read in - easily with the -\series bold -read_bed -\series default - biopiece. -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= -\end_layout - -\begin_layout Standard -It is also possible to read the BED file with -\series bold -read_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-read-table" - -\end_inset - -), however, that will be more cumbersome because you need to specify the - keys: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --keys=CHR,CHR_BEG,CHR_END ... -\end_layout - -\begin_layout Subsection -How to read PSL input? -\end_layout - -\begin_layout Standard -The PSL format is the output from BLAT and contains 21 mandatory fields - that can be read with -\series bold -read_psl -\series default -: -\end_layout - -\begin_layout LyX-Code -read_psl --data_in= -\end_layout - -\begin_layout Section -Writing output -\end_layout - -\begin_layout Standard -All result output can be written explicitly to file using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch which all result generating biopieces have. - It is also possible to write the result to file implicetly by directing - 'stdout' to file using '>', however, that requires the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream swich to prevent a mixture of data stream and results in the file. - The explicit (and safe) way: -\end_layout - -\begin_layout LyX-Code -... - | --result_out= -\end_layout - -\begin_layout Standard -The implicit way: -\end_layout - -\begin_layout LyX-Code -... - | --no_stream > -\end_layout - -\begin_layout Subsection -How to write biopieces output? -\end_layout - -\begin_layout Standard -See -\begin_inset LatexCommand eqref -reference "sub:How-to-write-stream" - -\end_inset - -. -\end_layout - -\begin_layout Subsection -How to write FASTA output? -\begin_inset LatexCommand label -name "sub:How-to-write-fasta" - -\end_inset - - -\end_layout - -\begin_layout Standard -FASTA output can be written with -\series bold -write_fasta -\series default -. -\end_layout - -\begin_layout LyX-Code -... - | write_fasta --result_out= -\end_layout - -\begin_layout Standard -It is also possible to wrap the sequences to a given width using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -wrap switch allthough wrapping of sequence is generally an evil thing: -\end_layout - -\begin_layout LyX-Code -... - | write_fasta --no_stream --wrap=80 -\end_layout - -\begin_layout Subsection -How to write alignment output? -\begin_inset LatexCommand label -name "sub:How-to-write-alignment" - -\end_inset - - -\end_layout - -\begin_layout Standard -Pretty alignments with ruler -\begin_inset Foot -status collapsed - -\begin_layout Standard -'.' for every 10 residues, ':' for every 50, and '|' for every 100 -\end_layout - -\end_inset - - and consensus sequence -\begin_inset Note Note -status collapsed - -\begin_layout Standard -which reminds me to make that an option. -\end_layout - -\end_inset - - can be created with -\series bold -write_align -\series default -, what also have the optional -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -wrap switch to break the alignment into blocks of a given width: -\end_layout - -\begin_layout LyX-Code -... - | write_align --result_out= --wrap=80 -\end_layout - -\begin_layout Standard -If the number of sequnces in the alignment is 2 then a pairwise alignment - will be output otherwise a multiple alignment. - And if the sequence type, determined automagically, is protein, then residues - and symbols (+,\InsetSpace ~ -:,\InsetSpace ~ -.) will be used to show consensus according to the Blosum62 - matrix. -\end_layout - -\begin_layout Subsection -How to write tabular output? -\begin_inset LatexCommand label -name "sub:How-to-write-tab" - -\end_inset - - -\end_layout - -\begin_layout Standard -Outputting the data stream as a table can be done with -\series bold -write_tab -\series default -, which will write generate one row per record with the values as columns. - If you supply the optional -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comment switch, when the first row in the table will be a 'comment' line - prefixed with a '#': -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --comment -\end_layout - -\begin_layout Standard -You can also change the delimiter from the default (tab) to -\emph on -e.g. - -\emph default - ',': -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --delimit=',' -\end_layout - -\begin_layout Standard -If you want the values output in a specific order you have to supply a comma - separated list using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch that will print only those keys in that order: -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --keys=SEQ_NAME,COUNT -\end_layout - -\begin_layout Standard -Alternatively, if you have some keys that you don't want in the tabular - output, use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_keys switch. - So to print all keys except SEQ and SEQ_TYPE do: -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --no_keys=SEQ,SEQ_TYPE -\end_layout - -\begin_layout Standard -Finally, if you have a stream containing a mix of different records types, - -\emph on -e.g. - -\emph default - records with sequences and records with matches, then you can use -\series bold -write_tab -\series default - to output all the records in tabluar format, however, the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comment, -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys, and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_keys switches will only respond to records of the first type encountered. - The reason is that outputting mixed records is probably not what you want - anyway, and you should remove all the unwanted records from the stream - before outputting the table: -\series bold -grab -\series default - is your friend (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to write a BED output? -\begin_inset LatexCommand label -name "sub:How-to-write-BED" - -\end_inset - - -\end_layout - -\begin_layout Standard -Data in BED format can be output if the records contain the mandatory keys - CHR, CHR_BEG, and CHR_END using -\series bold -write_bed -\series default -. - If the optional keys are also present, they will be output as well: -\end_layout - -\begin_layout LyX-Code -write_bed --result_out= -\end_layout - -\begin_layout Subsection -How to write PSL output? -\begin_inset LatexCommand label -name "sub:How-to-write-PSL" - -\end_inset - - -\end_layout - -\begin_layout Standard -Data in PSL format can be output using -\series bold -write_psl: -\end_layout - -\begin_layout LyX-Code -write_psl --result_out= -\end_layout - -\begin_layout Section -Manipulating Records -\end_layout - -\begin_layout Subsection -How to select a few records? -\begin_inset LatexCommand label -name "sub:How-to-select-a-few-records" - -\end_inset - - -\end_layout - -\begin_layout Standard -To quickly get an overview of your data you can limit the data stream to - show a few records. - This also very useful to test the pipeline with a few records if you are - setting up a complex analysis using several biopieces. - That way you can inspect that all goes well before analyzing and waiting - for the full data set. - All of the read_ biopieces have the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch which will take a number as argument and only that number of - records will be read. - So to read in the first 10 FASTA entries from a file: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna --num=10 -\end_layout - -\begin_layout Standard -Another way of doing this is to use -\series bold -head_records -\series default - will limit the stream to show the first 10 records (default): -\end_layout - -\begin_layout LyX-Code -... - | head_records -\end_layout - -\begin_layout Standard -Using -\series bold -head_records -\series default - directly after one of the read_ biopieces will be a lot slower than - using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch with the read_ biopieces, however, -\series bold -head_records -\series default - can also be used to limit the output from all the other biopieces. - It is also possible to give -\series bold -head_records -\series default - a number of records to show using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch. - So to display the first 100 records do: -\end_layout - -\begin_layout LyX-Code -... - | head_records --num=100 -\end_layout - -\begin_layout Subsection -How to select random records? -\begin_inset LatexCommand label -name "sub:How-to-select-random-records" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you want to inspect a number of random records from the stream this can - be done with the -\series bold -random_records -\series default - biopiece. - So if you have 1 mio records in the stream and you want to select 1000 - random records do: -\end_layout - -\begin_layout LyX-Code -... - | random_records --num=1000 -\end_layout - -\begin_layout Subsection -How to count all records in the data stream? -\end_layout - -\begin_layout Standard -To count all the records in the data stream use -\series bold -count_records -\series default -, which adds one record (which is not included in the count) to the data - stream. - So to count the number of sequences in a FASTA file you can do this: -\end_layout - -\begin_layout LyX-Code -cat test.fna | read_fasta | count_records --no_stream -\end_layout - -\begin_layout Standard -Which will write the last record containing the count to 'stdout': -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_records: 630 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize ---- -\end_layout - -\begin_layout Standard -It is also possible to write the count to file using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch. -\end_layout - -\begin_layout Subsection -How to get the length of record values? -\begin_inset LatexCommand label -name "sub:How-to-get-value_length" - -\end_inset - - -\end_layout - -\begin_layout Standard -Use the -\series bold -length_vals -\series default - biopiece to get the length of each value for a comma separated list of - keys: -\end_layout - -\begin_layout LyX-Code -... - | length_vals --keys=HIT,PATTERN -\end_layout - -\begin_layout Subsection -How to grab specific records? -\begin_inset LatexCommand label -name "sub:How-to-grab" - -\end_inset - - -\end_layout - -\begin_layout Standard -The biopiece -\series bold -grab -\series default - is related to the Unix grep and locates records based on matching keys - and/or values using either a pattern, a Perl regex, or a numerical evaluation. - To easily -\series bold -grab -\series default - all records in the stream that has any mentioning of the pattern 'human' - just pipe the data stream through -\series bold -grab -\series default - like this: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human -\end_layout - -\begin_layout Standard -This will search for the pattern 'human' in all keys and all values. - The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch takes a comma separated list of patterns, so in order to - match multiple patterns do: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human,mouse -\end_layout - -\begin_layout Standard -It is also possible to use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in switch instead of -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern. - -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in is used to read a file with one pattern per line: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern_in=patterns.txt -\end_layout - -\begin_layout Standard -If you want the opposite result --- to find all records that does not match - the patterns, add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -invert switch, which not only works with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch, but also with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -regex and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -eval: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human --invert -\end_layout - -\begin_layout Standard -If you want to search the record keys only, -\emph on -e.g. - -\emph default - to find all records containing the key SEQ you can add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys_only switch. - This will prevent matching of SEQ in any record value, and in fact SEQ - is a not uncommon peptide sequence you could get an unwanted record. - Also, this will give an increase in speed since only the keys are searched: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=SEQ --keys_only -\end_layout - -\begin_layout Standard -However, if you are interested in finding the peptide sequence SEQ and not - the SEQ key, just add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -vals_only switch instead: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=SEQ --vals_only -\end_layout - -\begin_layout Standard -Also, if you want to grab for certain key/value pairs you can supply a comma - separated list of keys whos values will then be searched using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch. - This is handy if your records contain large genomic sequences and you dont - want to search the entire sequence for -\emph on -e.g. - -\emph default - the organism name --- it is much faster to tell -\series bold -grab -\series default - which keys to search the value for: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human --keys=SEQ_NAME -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout Standard -It is also possible to invoke flexible matching using regex (regular expressions -) instead of simple pattern matching. - In -\series bold -grab -\series default - the regex engine is Perl based and allows use of different type of wild - cards, alternatives, -\emph on -etc -\emph default - -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://perldoc.perl.org/perlreref.html" - -\end_inset - - -\end_layout - -\end_inset - -. - If you want to -\series bold -grab -\series default - records withs the sequence ATCG or GCTA you can do this: -\end_layout - -\begin_layout LyX-Code -... - | grab --regex='ATCG|GCTA' -\end_layout - -\begin_layout Standard -Or if you want to find sequences beginning with ATCG: -\end_layout - -\begin_layout LyX-Code -... - | grab --regex='^ATCG' -\end_layout - -\begin_layout Standard -You can also use -\series bold -grab -\series default - to locate records that fulfill a numerical property using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -eval switch witch takes an expression in three parts. - The first part is the key that holds the value we want to evaluate, the - second part holds one the six operators: -\end_layout - -\begin_layout Enumerate -Greater than: > -\end_layout - -\begin_layout Enumerate -Greater than or equal to: >= -\end_layout - -\begin_layout Enumerate -Less than: < -\end_layout - -\begin_layout Enumerate -Less than or equal to: <= -\end_layout - -\begin_layout Enumerate -Equal to: = -\end_layout - -\begin_layout Enumerate -Not equal to: != -\end_layout - -\begin_layout Enumerate -String wise equal to: eq -\end_layout - -\begin_layout Enumerate -String wise not equal to: ne -\end_layout - -\begin_layout Standard -And finally comes the number used in the evaluation. - So to -\series bold -grab -\series default - all records with a sequence length greater than 30: -\end_layout - -\begin_layout LyX-Code -... - length_seq | grab --eval='SEQ_LEN > 30' -\end_layout - -\begin_layout Standard -If you want to locate all records containing the pattern 'human' and where - the sequence length is greater that 30, you do this by running the stream - through -\series bold -grab -\series default - twice: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern='human' | length_seq | grab --eval='SEQ_LEN > 30' -\end_layout - -\begin_layout Standard -Finally, it is possible to do fast matching of expressions from a file using - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact switch. - Each of these expressions has to be matched exactly over the entrie length, - which if useful if you have a file with accession numbers, that you want - to locate in the stream: -\end_layout - -\begin_layout LyX-Code -... - | grab --exact acc_no.txt | ... -\end_layout - -\begin_layout Standard -Using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact is much faster than using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in, because with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact the expression has to be complete matches, where -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in looks for subpatterns. -\end_layout - -\begin_layout Standard -NB! To get the best speed performance, use the most restrictive -\series bold -grab -\series default - first. -\end_layout - -\begin_layout Subsection -How to remove keys from records? -\end_layout - -\begin_layout Standard -To remove one or more specific keys from all records in the data stream - use -\series bold -remove_keys -\series default - like this: -\end_layout - -\begin_layout LyX-Code -... - | remove_keys --keys=SEQ,SEQ_NAME -\end_layout - -\begin_layout Standard -In the above example SEQ and SEQ_NAME will be removed from all records if - they exists in these. - If all keys are removed from a record, then the record will be removed. -\end_layout - -\begin_layout Subsection -How to rename keys in records? -\end_layout - -\begin_layout Standard -Sometimes you want to rename a record key, -\emph on -e.g. - -\emph default - if you have read in a two column table with sequence name and sequence - in each column (see -\begin_inset LatexCommand ref -reference "sub:How-to-read-table" - -\end_inset - -) without specifying the key names, then the sequence name will be called - V0 and the sequence V1 as default in the -\series bold -read_tab -\series default - biopiece. - To rename the V0 and V1 keys we need to run the stream through -\series bold -rename_keys -\series default - twice (one for each key to rename): -\end_layout - -\begin_layout LyX-Code -... - | rename_keys --keys=V0,SEQ_NAME | rename_keys --keys=V1,SEQ -\end_layout - -\begin_layout Standard -The first instance of -\series bold -rename_keys -\series default - replaces all the V0 keys with SEQ_NAME, and the second instance of -\series bold -rename_keys -\series default - replaces all the V1 keys with SEQ. - -\emph on -Et viola -\emph default - the data can now be used in the biopieces that requires these keys. -\end_layout - -\begin_layout Section -Manipulating Sequences -\end_layout - -\begin_layout Subsection -How to get sequence lengths? -\end_layout - -\begin_layout Standard -The length for sequences in records can be determined with -\series bold -length_seq -\series default -, which adds the key SEQ_LEN to each record with the sequence length as - the value. - It also generates an extra record that is emitted last with the key TOTAL_SEQ_L -EN showing the total length of all the sequences. -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_seq -\end_layout - -\begin_layout Standard -It is also possible to determine the sequence length using the generic tool - -\series bold -length_vals -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-get-value_length" - -\end_inset - -, which determines the length of the values for a given list of keys: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_vals --keys=SEQ -\end_layout - -\begin_layout Standard -To obtain the total length of all sequences use -\series bold -sum_vals -\series default - like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_vals --keys=SEQ -\end_layout - -\begin_layout LyX-Code -| sum_vals --keys=SEQ_LEN -\end_layout - -\begin_layout Standard -The biopiece -\series bold -analyze_seq -\series default - will also determine the length of each sequence (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-analyze" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to analyze sequence composition? -\begin_inset LatexCommand label -name "sub:How-to-analyze" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you want to find out the sequence type, composition, length, as well - as GC content, indel content and proportions of soft and hard masked sequence, - then use -\series bold -analyze_seq -\series default -. - This handy biopiece will determine all these things per sequence from which - it is easy to get an overview using the -\series bold -write_tab -\series default - biopiece to output a table (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -). - So in order to determine the sequence composition of a FASTA file with - just one entry containing the sequence 'ATCG' we just read the data with - -\series bold -read_fasta -\series default - and run the output through -\series bold -analyze_seq -\series default - which will add the analysis to the record like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq ... -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:D: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -MIX_INDEX: 0.55 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:W: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:G: 16 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SOFT_MASK%: 63.75 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:B: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:V: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -HARD_MASK%: 0.00 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:H: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:S: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:N: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:.: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -GC%: 35.00 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:A: 8 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:Y: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:M: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:T: 44 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ_TYPE: DNA -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:K: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:~: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ: TTTCAGTTTGGGACGGAGTAAGGCCTTCCtttttttttttttttttttttttttttttgagaccgagtcttgctc -tgtcg -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ_LEN: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -80 RES:R: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:C: 12 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:-: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:U: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize ---- -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout Standard -Now to make a table of how may As, Ts, Cs, and Gs you can add the following: -\end_layout - -\begin_layout LyX-Code -... - | analyze_seq | write_tab --keys=RES:A,RES:T,RES:C,RES:G -\end_layout - -\begin_layout Standard -Or if you want to see the proportions of hard and soft masked sequence: -\end_layout - -\begin_layout LyX-Code -... - | analyse_seq | write_tab --keys=HARD_MASK%,SOFT_MASK% -\end_layout - -\begin_layout Standard -If you have a stack of sequences in one file and you want to determine the - mean GC content you can do it using the -\series bold -mean_vals -\series default - biopiece: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | mean_vals --keys=GC% -\end_layout - -\begin_layout Standard -Or if you want the total count of Ns you can use -\series bold -sum_vals -\series default - like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | sum_vals --keys=RES:N -\end_layout - -\begin_layout Standard -The MIX_INDEX key is calculated as the count of the most common residue - over the sequence length, and can be used as a cut-off for removing sequence - tags consisting of mostly one nucleotide: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | grab --eval='MIX_INDEX<0.85' -\end_layout - -\begin_layout Subsection -How to extract subsequences? -\begin_inset LatexCommand label -name "sub:How-to-extract" - -\end_inset - - -\end_layout - -\begin_layout Standard -In order to extract a subsequence from a longer sequence use the biopiece - extract_seq, which will replace the sequence in the record with the subsequence - (this behaviour should probably be modified to be dependant of a -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -replace or a -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_replace switch -\begin_inset Note Note -status collapsed - -\begin_layout Standard -also in split_seq -\end_layout - -\end_inset - -). - So to extract the first 20 residues from all sequences do (first residue - is designated 1): -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=1 --len=20 -\end_layout - -\begin_layout Standard -You can also specify a begin and end coordinate set: -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=20 --end=40 -\end_layout - -\begin_layout Standard -If you want the subsequences from position 20 to the sequence end do: -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=20 -\end_layout - -\begin_layout Standard -If you want to extract subsequences a given distance from the sequence end - you can do this by reversing the sequence with the biopiece -\series bold -reverse_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-reverse-seq" - -\end_inset - -, followed by -\series bold -extract_seq -\series default - to get the subsequence, and then -\series bold -reverse_seq -\series default - again to get the subsequence back in the original orientation: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | reverse_seq -\end_layout - -\begin_layout LyX-Code -| extract_seq --beg=10 --len=10 | reverse_seq -\end_layout - -\begin_layout Subsection -How to get genomic sequence? -\begin_inset LatexCommand label -name "sub:How-to-get-genomic-sequence" - -\end_inset - - -\end_layout - -\begin_layout Standard -The biopiece -\series bold -get_genomic_seq -\series default - can extract subsequences for a given genome specified with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch explicitly using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -beg and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -end/ -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -len switches: -\end_layout - -\begin_layout LyX-Code -get_genome_seq --genome= --beg=1 --len=100 -\end_layout - -\begin_layout Standard -Alternatively, -\series bold -get_genome_seq -\series default - can be used to append the corresponding sequence to BED, PSL, and BLAST - records: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | get_genome_seq --genome= -\end_layout - -\begin_layout Standard -It is also possible to include flaking sequence using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -flank switch. - So to include 50 nucleotides upstream and 50 nucleotides downstream for - each BED entry do: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | get_genome_seq --genome= --flank=50 -\end_layout - -\begin_layout Subsection -How to upper-case sequences? -\end_layout - -\begin_layout Standard -Sequences can be shifted from lower case to upper case using -\series bold -uppercase_seq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | uppercase_seq -\end_layout - -\begin_layout Subsection -How to reverse sequences? -\begin_inset LatexCommand label -name "sub:How-to-reverse-seq" - -\end_inset - - -\end_layout - -\begin_layout Standard -The order of residues in a sequence can be reversed using reverse_seq: -\end_layout - -\begin_layout LyX-Code -... - | reverse_seq -\end_layout - -\begin_layout Standard -Note that in order to reverse/complement a sequence you also need the -\series bold -complement_seq -\series default - biopiece (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-complement" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to complement sequences? -\begin_inset LatexCommand label -name "sub:How-to-complement" - -\end_inset - - -\end_layout - -\begin_layout Standard -DNA and RNA sequences can be complemented with -\series bold -complement_seq -\series default -, which automagically determines the sequence type: -\end_layout - -\begin_layout LyX-Code -... - | complement_seq -\end_layout - -\begin_layout Standard -Note that in order to reverse/complement a sequence you also need the -\series bold -reverse_seq -\series default - biopiece (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-reverse-seq" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to remove indels from sequnces? -\end_layout - -\begin_layout Standard -Indels can be removed from sequences with the -\series bold -remove_indels -\series default - biopiece. - This is useful if you have aligned some sequences (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-align" - -\end_inset - -) and extracted (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-extract" - -\end_inset - -) a block of subsequences from the alignment and you want to use these sequence - in a search where you need to remove the indels first. - '-', '~', and '.' are considered indels: -\end_layout - -\begin_layout LyX-Code -... - | remove_indels -\end_layout - -\begin_layout Subsection -How to shuffle sequences? -\end_layout - -\begin_layout Standard -All residues in sequences in the stream can be shuffled to random positions - using the -\series bold -shuffle_seq -\series default - biopiece: -\end_layout - -\begin_layout LyX-Code -... - | shuffle_seq -\end_layout - -\begin_layout Subsection -How to split sequences into overlapping subsequences? -\end_layout - -\begin_layout Standard -Sequences can be slit into overlapping subsequences with the -\series bold -split_seq -\series default - biopiece. -\end_layout - -\begin_layout LyX-Code -... - | split_seq --word_size=20 --uniq -\end_layout - -\begin_layout Subsection -How to determine the oligo frequency? -\end_layout - -\begin_layout Standard -In order to determine if any oligo usage is over represented in one or more - sequences you can determine the frequency of oligos of a given size with - -\series bold -oligo_freq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 -\end_layout - -\begin_layout Standard -And if you have more than one sequence and want to accumulate the frequences - you need the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -all switch: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 --all -\end_layout - -\begin_layout Standard -To get a meaningful result you need to write the resulting frequencies as - a table with -\series bold -write_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -), but first it is important to -\series bold -grab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -) the records with the frequencies to avoid full length sequences in the - table: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 --all | grab --pattern=OLIGO --keys_only -\end_layout - -\begin_layout LyX-Code -| write_tab --no_stream -\end_layout - -\begin_layout Standard -And the resulting frequency table can be sorted with Unix sort (man sort). -\end_layout - -\begin_layout Subsection -How to search for sequences in genomes? -\end_layout - -\begin_layout Standard -See the following biopiece: -\end_layout - -\begin_layout Itemize - -\series bold -patscan_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -blat_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -blast_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -vmatch_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to search sequences for a pattern? -\begin_inset LatexCommand label -name "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Standard -It is possible to search sequences in the data stream for patterns using - the -\series bold -patscan_seq -\series default - biopiece which utilizes the powerful scan_for_matches engine. - Consult the documentation for scan_for_matches in order to learn how to - define patterns (the documentation is included in Appendix\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sec:scan_for_matches-README" - -\end_inset - -). -\end_layout - -\begin_layout Standard -To search all sequences for a simple pattern consisting of the sequence - ATCGATCG allowing for 3 mismatches, 2 insertions and 1 deletion: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | patscan_seq --pattern='ATCGATCG[3,2,1]' -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch takes a comma seperated list of patterns, so if you want - to search for more that one pattern do: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern='ATCGATCG[3,2,1],GCTAGCTA[3,2,1]' -\end_layout - -\begin_layout Standard -It is also possible to have a list of different patterns to search for in - a file with one pattern per line. - In order to get -\series bold -patscan_seq -\series default - to read these patterns use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern_in= -\end_layout - -\begin_layout Standard -To also scan the complementary strand in nucleotide sequences ( -\series bold -patscan_seq -\series default - automagically determines the sequence type) you need to add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comp switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern= --comp -\end_layout - -\begin_layout Standard -It is also possible to use -\series bold -patscan_seq -\series default - to output those records that does not contain a certain pattern by using - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -invert switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern= --invert -\end_layout - -\begin_layout Standard -Finally, -\series bold -patscan_seq -\series default - can also scan for patterns in a given genome sequence, instead of sequences - in the stream, using the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch: -\end_layout - -\begin_layout LyX-Code -patscan --pattern= --genome= -\end_layout - -\begin_layout Subsection -How to use BLAT for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Standard -Sequences in the data stream can be matched against supported genomes using - -\series bold -blat_seq -\series default - which is a biopiece using BLAT as the name might suggest. - Currently only Mouse and Human genomes are available and it is not possible - to use OOC files since there is still a need for a local repository for - genome files. - Otherwise it is just: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | blat_seq --genome= -\end_layout - -\begin_layout Standard -The search results can then be written to file with -\series bold -write_psl -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-PSL" - -\end_inset - -) or -\series bold -write_bed -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-BED" - -\end_inset - -) allthough with -\series bold -write_bed -\series default - some information will be lost). - It is also possible to plot chromosome distribution of the search results - using -\series bold -plot_chrdist -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-chrdist" - -\end_inset - -) or the distribution of the match lengths using -\series bold -plot_lendist -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-lendist" - -\end_inset - -) or a karyogram with the hits using -\series bold -plot_karyogram -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-karyogram" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to use BLAST for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Standard -Two biopieces exist for blasting sequences: -\series bold -create_blast_db -\series default - is used to create the BLAST database required for BLAST which is queried - using the biopiece -\series bold -blast_seq -\series default -. - So in order to create a BLAST database from sequences in the data stream - you simple run: -\end_layout - -\begin_layout LyX-Code -... - | create_blast_db --database=my_database --no_stream -\end_layout - -\begin_layout Standard -The type of sequence to use for the database is automagically determined - by -\series bold -create_blast_db -\series default -, but don't have a mixture of peptide and nucleic acids sequences in the - stream. - The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database switch takes a path as argument, but will default to 'blastdb_ if not set. -\end_layout - -\begin_layout Standard -The resulting database can now be queried with sequences in another data - stream using -\series bold -blast_seq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | blast_seq --database=my_database -\end_layout - -\begin_layout Standard -Again, the sequence type is determined automagically and the appropriate - BLAST program is guessed (see below table), however, the program name can - be overruled with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -program switch. -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Standard -Subject sequence -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Query sequence -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Program guess -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastn -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastp -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastx -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -tblastn -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -Finally, it is also possible to use -\series bold -blast_seq -\series default - for blasting sequences agains a preformatted genome using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch instead of the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database switch: -\end_layout - -\begin_layout LyX-Code -... - | blast_seq --genome= -\end_layout - -\begin_layout Subsection -How to use Vmatch for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Standard -The powerful suffix array software package Vmatch -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.vmatch.de/" - -\end_inset - - -\end_layout - -\end_inset - - can be used for exact mapping of sequences against indexed genomes using - the biopiece -\series bold -vmatch_seq -\series default -, which will e.g. - map 700000 ESTs to the human genome locating all 160 mio hits in less than - an hour. - Only nucleotide sequences and sequences longer than 11 nucleotides will - be mapped. - It is recommended that sequences consisting of mostly one nucleotide type - are removed. - This can be done with the -\series bold -analyze_seq -\series default - biopiece -\begin_inset LatexCommand eqref -reference "sub:How-to-analyze" - -\end_inset - -. -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= -\end_layout - -\begin_layout Standard -It is also possible to allow for mismatches using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -hamming_dist switch. - So to allow for 2 mismatches: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=2 -\end_layout - -\begin_layout Standard -Or to allow for 10% mismathing nucleotides: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=10p -\end_layout - -\begin_layout Standard -To allow both indels and mismatches use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -edit_dist switch. - So to allow for one mismatch or one indel: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=1 -\end_layout - -\begin_layout Standard -Or to allow for 5% indels or mismatches: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=5p -\end_layout - -\begin_layout Standard -Note that using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -hamming_dist or -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -edit_dist greatly slows down vmatch considerably --- use with care. -\end_layout - -\begin_layout Standard -The resulting SCORE key can be replaced to hold the number of genome matches - of a given sequence (multi-mappers) is the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -count switch is given. -\end_layout - -\begin_layout Subsection -How to find all matches between sequences? -\begin_inset LatexCommand label -name "sub:How-to-find-matches" - -\end_inset - - -\end_layout - -\begin_layout Standard -All matches between two sequences can be determined with the biopiece -\series bold -match_seq -\series default -. - The match finding engine underneath the hood of -\series bold -match_seq -\series default - is the super fast suffix tree program MUMmer -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://mummer.sourceforge.net/" - -\end_inset - - -\end_layout - -\end_inset - -, which will locate all forward and reverse matches between huge sequences - in a matter of minutes (if the repeat count is not too high and if the - word size used is appropriate). - Matching two -\emph on -Helicobacter pylori -\emph default - genomes (1.7Mbp) takes around 10 seconds: -\end_layout - -\begin_layout LyX-Code -... - | match_seq --word_size=20 --direction=both -\end_layout - -\begin_layout Standard -The output from -\series bold -match_seq -\series default - can be used to generate a dot plot with -\series bold -plot_matches -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-generate-dotplot" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to align sequences? -\begin_inset LatexCommand label -name "sub:How-to-align" - -\end_inset - - -\end_layout - -\begin_layout Standard -Sequences in the stream can be aligned with the -\series bold -align_seq -\series default - biopiece that uses Muscle -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.drive5.com/muscle/muscle.html" - -\end_inset - - -\end_layout - -\end_inset - - as aligment engine. - Currently you cannot change any of the Muscle alignment parameters and - -\series bold -align_seq -\series default - will create an alignment based on the defaults (which are really good!): -\end_layout - -\begin_layout LyX-Code -... - | align_seq -\end_layout - -\begin_layout Standard -The aligned output can be written to file in FASTA format using -\series bold -write_fasta -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-fasta" - -\end_inset - -) or in pretty text using -\series bold -write_align -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-alignment" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to create a weight matrix? -\end_layout - -\begin_layout Standard -If you want a weight matrix to show the sequence composition of a stack - of sequences you can use the biopiece create_weight_matrix: -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix -\end_layout - -\begin_layout Standard -The result can be output in percent using the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -percent switch: -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix --percent -\end_layout - -\begin_layout Standard -The weight matrix can be written as tabular output with -\series bold -write_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -) after removeing the records containing SEQ with -\series bold -grab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -): -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix | grab --invert --keys=SEQ --keys_only -\end_layout - -\begin_layout LyX-Code -| write_tab --no_stream -\end_layout - -\begin_layout Standard -The V0 column will hold the residue, while the rest of the columns will - hold the frequencies for each sequence position. -\end_layout - -\begin_layout Section -Plotting -\end_layout - -\begin_layout Standard -There exists several biopieces for plotting. - Some of these are based on GNUplot -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.gnuplot.info/" - -\end_inset - - -\end_layout - -\end_inset - -, which is an extremely powerful platform to generate all sorts of plots - and even though GNUplot has quite a steep learning curve, the biopieces - utilizing GNUplot are simple to use. - GNUplot is able to output a lot of different formats (called terminals - in GNUplot), but the biopieces focusses on three formats only: -\end_layout - -\begin_layout Enumerate -The 'dumb' terminal is default to the GNUplot based biopieces and will output - a plot in crude ASCII text (Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dumb-terminal" - -\end_inset - -). - This is quite nice for a quick and dirty plot to get an overview of your - data . -\end_layout - -\begin_layout Enumerate -The 'post' or 'postscript' terminal output postscript code which is publication - grade graphics that can be viewed with applications such as Ghostview, - Photoshop, and Preview. -\end_layout - -\begin_layout Enumerate -The 'svg' terminal output's scalable vector graphics (SVG) which is a vector - based format. - SVG is great because you can edit the resulting plot using Photoshop or - Inkscape -\begin_inset Foot -status collapsed - -\begin_layout Standard -Inkscape is a really handy drawing program that is free and open source. - Availble at -\begin_inset LatexCommand htmlurl -target "http://www.inkscape.org" - -\end_inset - - -\end_layout - -\end_inset - - if you want to add additional labels, captions, arrows, and so on and then - save the result in different formats, such as postscript without loosing - resolution. -\end_layout - -\begin_layout Standard -The biopieces for plotting that are not based on GNUplot only output SVG - (that may change in the future). -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename lendist_ascii.png - lyxscale 70 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Dumb-terminal" - -\end_inset - -Dumb terminal -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -The output of a length distribution plot in the default 'dumb terminal' - to the terminal window. - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a histogram? -\begin_inset LatexCommand label -name "How-to-plot-histogram" - -\end_inset - - -\end_layout - -\begin_layout Standard -A generic histogram for a given value can be plotted with the biopiece -\series bold -plot_histogram -\series default - (Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Histogram" - -\end_inset - -): -\end_layout - -\begin_layout LyX-Code -... - | plot_histogram --key=TISSUE --no_stream -\end_layout - -\begin_layout Standard -(Figure missing) -\end_layout - -\begin_layout Standard -\noindent -\align left -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename histogram.png - lyxscale 70 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Histogram" - -\end_inset - -Histogram -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a length distribution? -\begin_inset LatexCommand label -name "sub:How-to-plot-lendist" - -\end_inset - - -\end_layout - -\begin_layout Standard -Plotting of length distributions, weather sequence lengths, patterns lengths, - hit lengths, -\emph on -etc. - -\emph default - is a really handy thing and can be done with the the biopiece -\series bold -plot_lendist -\series default -. - If you have a file with FASTA entries and want to plot the length distribution - you do it like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_seq -\end_layout - -\begin_layout LyX-Code -| plot_lendist --key=SEQ_LEN --no_stream -\end_layout - -\begin_layout Standard -The result will be written to the default dumb terminal and will look like - Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dumb-terminal" - -\end_inset - -. -\end_layout - -\begin_layout Standard -If you instead want the result in postscript format you can do: -\end_layout - -\begin_layout LyX-Code -... - | plot_lendist --key=SEQ_LEN --terminal=post --result_out=file.ps -\end_layout - -\begin_layout Standard -That will generate the plot and save it to file, but not interrupt the data - stream which can then be used in further analysis. - You can also save the plot implicetly using '>', however, it is then important - to terminate the stream with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch: -\end_layout - -\begin_layout LyX-Code -... - | plot_lendist --key=SEQ_LEN --terminal=post --no_stream > file.ps -\end_layout - -\begin_layout Standard -The resulting plot can be seen in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Length-distribution" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard - -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename lendist.ps - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Length-distribution" - -\end_inset - -Length distribution -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Length distribution of 630 piRNA like RNAs. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a chromosome distribution? -\begin_inset LatexCommand label -name "sub:How-to-plot-chrdist" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you have the result of a sequence search against a multi chromosome genome, - it is very practical to be able to plot the distribution of search hits - on the different chromosomes. - This can be done with -\series bold -plot_chrdist -\series default -: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | blat_genome | plot_chrdist --no_stream -\end_layout - -\begin_layout Standard -The above example will result in a crude plot using the 'dumb' terminal, - and if you want to mess around with the results from the BLAT search you - probably want to save the result to file first (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-PSL" - -\end_inset - -). - To plot the chromosome distribution from the saved search result you can - do: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in=file.bed | plot_chrdist --terminal=post --result_out=plot.ps -\end_layout - -\begin_layout Standard -That will result in the output show in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Chromosome-distribution" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard - -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename chrdist.ps - lyxscale 50 - width 12cm - rotateAngle 90 - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Chromosome-distribution" - -\end_inset - -Chromosome distribution -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to generate a dotplot? -\begin_inset LatexCommand label -name "sub:How-to-generate-dotplot" - -\end_inset - - -\end_layout - -\begin_layout Standard -A dotplot is a powerful way to get an overview of the size and location - of sequence insertions, deletions, and duplications between two sequences. - Generating a dotplot with biopieces is a two step process where you initially - find all matches between two sequences using the tool -\series bold -match_seq -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-find-matches" - -\end_inset - -) and plot the resulting matches with -\series bold -plot_matches -\series default -. - Matching and plotting two -\emph on -Helicobacter pylori -\emph default - genomes (1.7Mbp) takes around 10 seconds: -\end_layout - -\begin_layout LyX-Code -... - | match_seq | plot_matches --terminal=post --result_out=plot.ps -\end_layout - -\begin_layout Standard -The resulting dotplot is in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dotplot" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename dotplot.ps - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Dotplot" - -\end_inset - -Dotplot -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Forward matches are displayed in green while reverse matches are displayed - in red. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a sequence logo? -\end_layout - -\begin_layout Standard -Sequence logos can be generate with -\series bold -plot_seqlogo -\series default -. - The sequnce type is determined automagically and an entropy scale of 2 - bits and 4 bits is used for nucleotide and peptide sequences, respectively -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand htmlurl -target "http://www.ccrnp.ncifcrf.gov/~toms/paper/hawaii/latex/node5.html" - -\end_inset - - -\end_layout - -\end_inset - -. -\end_layout - -\begin_layout LyX-Code -... - | plot_seqlogo --no_stream --result_out=seqlogo.svg -\end_layout - -\begin_layout Standard -An example of a sequence logo can be seen in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Sequence-logo" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename seqlogo.png - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Sequence-logo" - -\end_inset - -Sequence logo -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a karyogram? -\begin_inset LatexCommand label -name "sub:How-to-plot-karyogram" - -\end_inset - - -\end_layout - -\begin_layout Standard -To plot search hits on genomes use -\series bold -plot_karyogram -\series default -, which will output a nice karyogram in SVG graphics: -\end_layout - -\begin_layout LyX-Code -... - | plot_karyogram --result_out=karyogram.svg -\end_layout - -\begin_layout Standard -The banding data is taken from the UCSC genome browser database and currently - only Human and Mouse is supported. - Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Karyogram" - -\end_inset - - shows the distribution of piRNA like RNAs matched to the Human genome. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename karyogram.png - lyxscale 35 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Karyogram" - -\end_inset - -Karyogram -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Hits from a search of piRNA like RNAs in the Human genome is displayed as - short horizontal bars. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Uploading Results -\end_layout - -\begin_layout Subsection -How do I display my results in the UCSC Genome Browser? -\end_layout - -\begin_layout Standard -Results from the list of biopieces below can be uploaded directly to a local - mirror of the UCSC Genome Browser using the biopiece -\series bold -upload_to_ucsc -\series default -: -\end_layout - -\begin_layout Itemize -patscan_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Itemize -blat_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Itemize -blast_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Itemize -vmatch_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Standard -The syntax for uploading data the most simple way requires two mandatory - switches: -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database, which is the UCSC database name (such as hg18, mm9, etc.) and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -table which should be the users initials followed by an underscore and a - short description of the data: -\end_layout - -\begin_layout LyX-Code -... - | upload_to_ucsc --database=hg18 --table=mah_snoRNAs -\end_layout - -\begin_layout Standard -The -\series bold -upload_to_ucsc -\series default - biopiece modifies the users ~/ucsc/my_tracks.ra file automagically (a backup - is created with the name ~/ucsc/my_tracks.ra~) with default values that - can be overridden using the following switches: -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -short_label - Short label for track - Default=database->table -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -long_label - Long label for track - Default=database->table -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -group - Track group name - Default= -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -priority - Track display priority - Default=1 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -color - Track color - Default=147,73,42 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -chunk_size - Chunks for loading - Default=10000000 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -visibility - Track visibility - Default=pack -\end_layout - -\begin_layout Standard -Also, data in BED or PSL format can be uploaded with -\series bold -upload_to_ucsc -\series default - as long as these reference to genomes and chromosomes existing in the UCSC - Genome Browser: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | upload_to_ucsc ... -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -read_psl --data_in= | upload_to_ucsc ... -\end_layout - -\begin_layout Section -Power Scripting -\end_layout - -\begin_layout Standard -It is possible to do commandline scripting of biopiece records using Perl. - Because a biopiece record essentially is a hash structure, you can pass - records to -\series bold -bioscript -\series default - command, which is a wrapper around the Perl executable that allows direct - manipulations of the records using the power of Perl. -\end_layout - -\begin_layout Standard -In the below example we replace in all records the value to the CHR key - with a forthrunning number: -\end_layout - -\begin_layout LyX-Code -... - | bioscript 'while($r=get_record( -\backslash -*STDIN)){$r->{CHR}=$i++; put_record($r)}' -\end_layout - -\begin_layout Standard -Something more useful would probably be to create custom FASTA headers. - E.g. - if we read in a BED file, lookup the genomic sequence, create a custom - FASTA header with -\series bold -bioscript -\series default - and output FASTA entries: -\end_layout - -\begin_layout LyX-Code -... - | bioscript 'while($r=get_record( -\backslash -*STDIN)){$r->{SEQ_NAME}= // -\end_layout - -\begin_layout LyX-Code -join("_",$r->{CHR},$r->{CHR_BEG},$r->{CHR_END}); put_record($r)}' -\end_layout - -\begin_layout Standard -And the output: -\end_layout - -\begin_layout LyX-Code ->chr2L_21567527_21567550 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_693380_693403 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_13859534_13859557 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_9005090_9005113 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_2106825_2106848 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_14649031_14649054 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout Section -Trouble shooting -\end_layout - -\begin_layout Standard -Shoot the messenger! -\end_layout - -\begin_layout Section -\start_of_appendix -Keys -\begin_inset LatexCommand label -name "sec:Keys" - -\end_inset - - -\end_layout - -\begin_layout Standard -HIT -\end_layout - -\begin_layout Standard -HIT_BEG -\end_layout - -\begin_layout Standard -HIT_END -\end_layout - -\begin_layout Standard -HIT_LEN -\end_layout - -\begin_layout Standard -HIT_NAME -\end_layout - -\begin_layout Standard -PATTERN -\end_layout - -\begin_layout Section -Switches -\begin_inset LatexCommand label -name "sec:Switches" - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_in -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -data_in -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num -\end_layout - -\begin_layout Section -scan_for_matches README -\begin_inset LatexCommand label -name "sec:scan_for_matches-README" - -\end_inset - - -\end_layout - -\begin_layout LyX-Code - scan_for_matches: -\end_layout - -\begin_layout LyX-Code - A Program to Scan Nucleotide or Protein Sequences for Matching Patterns -\end_layout - -\begin_layout LyX-Code - Ross Overbeek -\end_layout - -\begin_layout LyX-Code - MCS -\end_layout - -\begin_layout LyX-Code - Argonne National Laboratory -\end_layout - -\begin_layout LyX-Code - Argonne, IL 60439 -\end_layout - -\begin_layout LyX-Code - USA -\end_layout - -\begin_layout LyX-Code -Scan_for_matches is a utility that we have written to search for -\end_layout - -\begin_layout LyX-Code -patterns in DNA and protein sequences. - I wrote most of the code, -\end_layout - -\begin_layout LyX-Code -although David Joerg and Morgan Price wrote sections of an -\end_layout - -\begin_layout LyX-Code -earlier version. - The whole notion of pattern matching has a rich -\end_layout - -\begin_layout LyX-Code -history, and we borrowed liberally from many sources. - However, it is -\end_layout - -\begin_layout LyX-Code -worth noting that we were strongly influenced by the elegant tools -\end_layout - -\begin_layout LyX-Code -developed and distributed by David Searls. - My intent is to make the -\end_layout - -\begin_layout LyX-Code -existing tool available to anyone in the research community that might -\end_layout - -\begin_layout LyX-Code -find it useful. - I will continue to try to fix bugs and make suggested -\end_layout - -\begin_layout LyX-Code -enhancements, at least until I feel that a superior tool exists. -\end_layout - -\begin_layout LyX-Code -Hence, I would appreciate it if all bug reports and suggestions are -\end_layout - -\begin_layout LyX-Code -directed to me at Overbeek@mcs.anl.gov. - -\end_layout - -\begin_layout LyX-Code -I will try to log all bug fixes and report them to users that send me -\end_layout - -\begin_layout LyX-Code -their email addresses. - I do not require that you give me your name -\end_layout - -\begin_layout LyX-Code -and address. - However, if you do give it to me, I will try to notify -\end_layout - -\begin_layout LyX-Code -you of serious problems as they are discovered. -\end_layout - -\begin_layout LyX-Code -Getting Started: -\end_layout - -\begin_layout LyX-Code - The distribution should contain at least the following programs: -\end_layout - -\begin_layout LyX-Code - README - This document -\end_layout - -\begin_layout LyX-Code - ggpunit.c - One of the two source files -\end_layout - -\begin_layout LyX-Code - scan_for_matches.c - The second source file -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - run_tests - A perl script to test things -\end_layout - -\begin_layout LyX-Code - show_hits - A handy perl script -\end_layout - -\begin_layout LyX-Code - test_dna_input - Test sequences for DNA -\end_layout - -\begin_layout LyX-Code - test_dna_patterns - Test patterns for DNA scan -\end_layout - -\begin_layout LyX-Code - test_output - Desired output from test -\end_layout - -\begin_layout LyX-Code - test_prot_input - Test protein sequences -\end_layout - -\begin_layout LyX-Code - test_prot_patterns - Test patterns for proteins -\end_layout - -\begin_layout LyX-Code - testit - a perl script used for test -\end_layout - -\begin_layout LyX-Code - Only the first three files are required. - The others are useful, -\end_layout - -\begin_layout LyX-Code - but only if you have Perl installed on your system. - If you do -\end_layout - -\begin_layout LyX-Code - have Perl, I suggest that you type -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - which perl -\end_layout - -\begin_layout LyX-Code - to find out where it installed. - On my system, I get the following -\end_layout - -\begin_layout LyX-Code - response: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - clone% which perl -\end_layout - -\begin_layout LyX-Code - /usr/local/bin/perl -\end_layout - -\begin_layout LyX-Code - indicating that Perl is installed in /usr/local/bin. - Anyway, once -\end_layout - -\begin_layout LyX-Code - you know where it is installed, edit the first line of files -\end_layout - -\begin_layout LyX-Code - testit -\end_layout - -\begin_layout LyX-Code - show_hits -\end_layout - -\begin_layout LyX-Code - replacing /usr/local/bin/perl with the appropriate location. - I -\end_layout - -\begin_layout LyX-Code - will assume that you can do this, although it is not critical (it -\end_layout - -\begin_layout LyX-Code - is needed only to test the installation and to use the "show_hits" -\end_layout - -\begin_layout LyX-Code - utility). - Perl is not required to actually install and run -\end_layout - -\begin_layout LyX-Code - scan_for_matches. - -\end_layout - -\begin_layout LyX-Code - If you do not have Perl, I suggest you get it and install it (it -\end_layout - -\begin_layout LyX-Code - is a wonderful utility). - Information about Perl and how to get it -\end_layout - -\begin_layout LyX-Code - can be found in the book "Programming Perl" by Larry Wall and -\end_layout - -\begin_layout LyX-Code - Randall L. - Schwartz, published by O'Reilly & Associates, Inc. -\end_layout - -\begin_layout LyX-Code - To get started, you will need to compile the program. - I do this -\end_layout - -\begin_layout LyX-Code - using -\end_layout - -\begin_layout LyX-Code - gcc -O -o scan_for_matches ggpunit.c scan_for_matches.c -\end_layout - -\begin_layout LyX-Code - If you do not use GNU C, use -\end_layout - -\begin_layout LyX-Code - cc -O -DCC -o scan_for_matches ggpunit.c scan_for_matches.c -\end_layout - -\begin_layout LyX-Code - which works on my Sun. - -\end_layout - -\begin_layout LyX-Code - Once you have compiled scan_for_matches, you can verify that it -\end_layout - -\begin_layout LyX-Code - works with -\end_layout - -\begin_layout LyX-Code - clone% run_tests tmp -\end_layout - -\begin_layout LyX-Code - clone% diff tmp test_output -\end_layout - -\begin_layout LyX-Code - You may get a few strange lines of the sort -\end_layout - -\begin_layout LyX-Code - clone% run_tests tmp -\end_layout - -\begin_layout LyX-Code - rm: tmp: No such file or directory -\end_layout - -\begin_layout LyX-Code - clone% diff tmp test_output -\end_layout - -\begin_layout LyX-Code - These should cause no concern. - However, if the "diff" shows that -\end_layout - -\begin_layout LyX-Code - tmp and test_output are different, contact me (you have a -\end_layout - -\begin_layout LyX-Code - problem). - -\end_layout - -\begin_layout LyX-Code - You should now be able to use scan_for_matches by following the -\end_layout - -\begin_layout LyX-Code - instructions given below (which is all the normal user should have -\end_layout - -\begin_layout LyX-Code - to understand, once things are installed properly). -\end_layout - -\begin_layout LyX-Code - ============================================================== -\end_layout - -\begin_layout LyX-Code -How to run scan_for_matches: -\end_layout - -\begin_layout LyX-Code - To run the program, you type need to create two files -\end_layout - -\begin_layout LyX-Code - 1. - the first file contains the pattern you wish to scan for; I'll -\end_layout - -\begin_layout LyX-Code - call this file pat_file in what follows (but any name is ok) -\end_layout - -\begin_layout LyX-Code - 2. - the second file contains a set of sequences to scan. - These -\end_layout - -\begin_layout LyX-Code - should be in "fasta format". - Just look at the contents of -\end_layout - -\begin_layout LyX-Code - test_dna_input to see examples of this format. - Basically, -\end_layout - -\begin_layout LyX-Code - each sequence begins with a line of the form -\end_layout - -\begin_layout LyX-Code - >sequence_id -\end_layout - -\begin_layout LyX-Code - and is followed by one or more lines containing the sequence. -\end_layout - -\begin_layout LyX-Code - Once these files have been created, you just use -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file < input_file -\end_layout - -\begin_layout LyX-Code - to scan all of the input sequences for the given pattern. - As an -\end_layout - -\begin_layout LyX-Code - example, suppose that pat_file contains a single line of the form -\end_layout - -\begin_layout LyX-Code - p1=4...7 3...8 ~p1 -\end_layout - -\begin_layout LyX-Code - Then, -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - should produce two "hits". - When I run this on my machine, I get -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - >tst1:[6,27] -\end_layout - -\begin_layout LyX-Code - cguaacc ggttaacc gguuacg -\end_layout - -\begin_layout LyX-Code - >tst2:[6,27] -\end_layout - -\begin_layout LyX-Code - CGUAACC GGTTAACC GGUUACG -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code -Simple Patterns Built by Matching Ranges and Reverse Complements -\end_layout - -\begin_layout LyX-Code - Let me first explain this simple pattern: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - p1=4...7 3...8 ~p1 -\end_layout - -\begin_layout LyX-Code - The pattern consists of three "pattern units" separated by spaces. -\end_layout - -\begin_layout LyX-Code - The first pattern unit is -\end_layout - -\begin_layout LyX-Code - p1=4...7 -\end_layout - -\begin_layout LyX-Code - which means "match 4 to 7 characters and call them p1". - The -\end_layout - -\begin_layout LyX-Code - second pattern unit is -\end_layout - -\begin_layout LyX-Code - 3...8 -\end_layout - -\begin_layout LyX-Code - which means "then match 3 to 8 characters". - The last pattern unit -\end_layout - -\begin_layout LyX-Code - is -\end_layout - -\begin_layout LyX-Code - ~p1 -\end_layout - -\begin_layout LyX-Code - which means "match the reverse complement of p1". - The first -\end_layout - -\begin_layout LyX-Code - reported hit is shown as -\end_layout - -\begin_layout LyX-Code - >tst1:[6,27] -\end_layout - -\begin_layout LyX-Code - cguaacc ggttaacc gguuacg -\end_layout - -\begin_layout LyX-Code - which states that characters 6 through 27 of sequence tst1 were -\end_layout - -\begin_layout LyX-Code - matched. - "cguaac" matched the first pattern unit, "ggttaacc" the -\end_layout - -\begin_layout LyX-Code - second, and "gguuacg" the third. - This is an example of a common -\end_layout - -\begin_layout LyX-Code - type of pattern used to search for sections of DNA or RNA that -\end_layout - -\begin_layout LyX-Code - would fold into a hairpin loop. -\end_layout - -\begin_layout LyX-Code -Searching Both Strands -\end_layout - -\begin_layout LyX-Code - Now for a short aside: scan_for_matches only searched the -\end_layout - -\begin_layout LyX-Code - sequences in the input file; it did not search the opposite -\end_layout - -\begin_layout LyX-Code - strand. - With a pattern of the sort we just used, there is not -\end_layout - -\begin_layout LyX-Code - need o search the opposite strand. - However, it is normally the -\end_layout - -\begin_layout LyX-Code - case that you will wish to search both the sequence and the -\end_layout - -\begin_layout LyX-Code - opposite strand (i.e., the reverse complement of the sequence). -\end_layout - -\begin_layout LyX-Code - To do that, you would just use the "-c" command line. - For example, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - Hits on the opposite strand will show a beginning location greater -\end_layout - -\begin_layout LyX-Code - than te end location of the match. -\end_layout - -\begin_layout LyX-Code -Defining Pairing Rules and Allowing Mismatches, Insertions, and Deletions -\end_layout - -\begin_layout LyX-Code - Let us stop now and ask "What additional features would one need to -\end_layout - -\begin_layout LyX-Code - really find the kinds of loop structures that characterize tRNAs, -\end_layout - -\begin_layout LyX-Code - rRNAs, and so forth?" I can immediately think of two: -\end_layout - -\begin_layout LyX-Code - a) you will need to be able to allow non-standard pairings -\end_layout - -\begin_layout LyX-Code - (those other than G-C and A-U), and -\end_layout - -\begin_layout LyX-Code - b) you will need to be able to tolerate some number of -\end_layout - -\begin_layout LyX-Code - mismatches and bulges. -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - Let me first show you how to handle non-standard "rules for -\end_layout - -\begin_layout LyX-Code - pairing in reverse complements". - Consider the following pattern, -\end_layout - -\begin_layout LyX-Code - which I show as two line (you may use as many lines as you like in -\end_layout - -\begin_layout LyX-Code - forming a pattern, although you can only break a pattern at points -\end_layout - -\begin_layout LyX-Code - where space would be legal): -\end_layout - -\begin_layout LyX-Code - r1={au,ua,gc,cg,gu,ug,ga,ag} -\end_layout - -\begin_layout LyX-Code - p1=2...3 0...4 p2=2...5 1...5 r1~p2 0...4 ~p1 -\end_layout - -\begin_layout LyX-Code - The first "pattern unit" does not actually match anything; rather, -\end_layout - -\begin_layout LyX-Code - it defines a "pairing rule" in which standard pairings are -\end_layout - -\begin_layout LyX-Code - allowed, as well as G-A and A-G (in case you wondered, Us and Ts -\end_layout - -\begin_layout LyX-Code - and upper and lower case can be used interchangably; for example -\end_layout - -\begin_layout LyX-Code - r1={AT,UA,gc,cg} could be used to define the "standard rule" for -\end_layout - -\begin_layout LyX-Code - pairings). - The second line consists of six pattern units which -\end_layout - -\begin_layout LyX-Code - may be interpreted as follows: -\end_layout - -\begin_layout LyX-Code - p1=2...3 match 2 or 3 characters (call it p1) -\end_layout - -\begin_layout LyX-Code - 0...4 match 0 to 4 characters -\end_layout - -\begin_layout LyX-Code - p2=2...5 match 2 to 5 characters (call it p2) -\end_layout - -\begin_layout LyX-Code - 1...5 match 1 to 5 characters -\end_layout - -\begin_layout LyX-Code - r1~p2 match the reverse complement of p2, -\end_layout - -\begin_layout LyX-Code - allowing G-A and A-G pairs -\end_layout - -\begin_layout LyX-Code - 0...4 match 0 to 4 characters -\end_layout - -\begin_layout LyX-Code - ~p1 match the reverse complement of p1 -\end_layout - -\begin_layout LyX-Code - allowing only G-C, C-G, A-T, and T-A pairs -\end_layout - -\begin_layout LyX-Code - Thus, r1~p2 means "match the reverse complement of p2 using rule r1". -\end_layout - -\begin_layout LyX-Code - Now let us consider the issue of tolerating mismatches and bulges. -\end_layout - -\begin_layout LyX-Code - You may add a "qualifier" to the pattern unit that gives the -\end_layout - -\begin_layout LyX-Code - tolerable number of "mismatches, deletions, and insertions". -\end_layout - -\begin_layout LyX-Code - Thus, -\end_layout - -\begin_layout LyX-Code - p1=10...10 3...8 ~p1[1,2,1] -\end_layout - -\begin_layout LyX-Code - means that the third pattern unit must match 10 characters, -\end_layout - -\begin_layout LyX-Code - allowing one "mismatch" (a pairing other than G-C, C-G, A-T, or -\end_layout - -\begin_layout LyX-Code - T-A), two deletions (a deletion is a character that occurs in p1, -\end_layout - -\begin_layout LyX-Code - but has been "deleted" from the string matched by ~p1), and one -\end_layout - -\begin_layout LyX-Code - insertion (an "insertion" is a character that occurs in the string -\end_layout - -\begin_layout LyX-Code - matched by ~p1, but not for which no corresponding character -\end_layout - -\begin_layout LyX-Code - occurs in p1). - In this case, the pattern would match -\end_layout - -\begin_layout LyX-Code - ACGTACGTAC GGGGGGGG GCGTTACCT -\end_layout - -\begin_layout LyX-Code - which is, you must admit, a fairly weak loop. - It is common to -\end_layout - -\begin_layout LyX-Code - allow mismatches, but you will find yourself using insertions and -\end_layout - -\begin_layout LyX-Code - deletions much more rarely. - In any event, you should note that -\end_layout - -\begin_layout LyX-Code - allowing mismatches, insertions, and deletions does force the -\end_layout - -\begin_layout LyX-Code - program to try many additional possible pairings, so it does slow -\end_layout - -\begin_layout LyX-Code - things down a bit. -\end_layout - -\begin_layout LyX-Code -How Patterns Are Matched -\end_layout - -\begin_layout LyX-Code - Now is as good a time as any to discuss the basic flow of control -\end_layout - -\begin_layout LyX-Code - when matching patterns. - Recall that a "pattern" is a sequence of -\end_layout - -\begin_layout LyX-Code - "pattern units". - Suppose that the pattern units were -\end_layout - -\begin_layout LyX-Code - u1 u2 u3 u4 ... - un -\end_layout - -\begin_layout LyX-Code - The scan of a sequence S begins by setting the current position -\end_layout - -\begin_layout LyX-Code - to 1. - Then, an attempt is made to match u1 starting at the -\end_layout - -\begin_layout LyX-Code - current position. - Each attempt to match a pattern unit can -\end_layout - -\begin_layout LyX-Code - succeed or fail. - If it succeeds, then an attempt is made to match -\end_layout - -\begin_layout LyX-Code - the next unit. - If it fails, then an attempt is made to find an -\end_layout - -\begin_layout LyX-Code - alternative match for the immediately preceding pattern unit. - If -\end_layout - -\begin_layout LyX-Code - this succeeds, then we proceed forward again to the next unit. - If -\end_layout - -\begin_layout LyX-Code - it fails we go back to the preceding unit. - This process is called -\end_layout - -\begin_layout LyX-Code - "backtracking". - If there are no previous units, then the current -\end_layout - -\begin_layout LyX-Code - position is incremented by one, and everything starts again. - This -\end_layout - -\begin_layout LyX-Code - proceeds until either the current position goes past the end of -\end_layout - -\begin_layout LyX-Code - the sequence or all of the pattern units succeed. - On success, -\end_layout - -\begin_layout LyX-Code - scan_for_matches reports the "hit", the current position is set -\end_layout - -\begin_layout LyX-Code - just past the hit, and an attempt is made to find another hit. -\end_layout - -\begin_layout LyX-Code - If you wish to limit the scan to simply finding a maximum of, say, -\end_layout - -\begin_layout LyX-Code - 10 hits, you can use the -n option (-n 10 would set the limit to -\end_layout - -\begin_layout LyX-Code - 10 reported hits). - For example, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c -n 1 pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - would search for just the first hit (and would stop searching the -\end_layout - -\begin_layout LyX-Code - current sequences or any that follow in the input file). -\end_layout - -\begin_layout LyX-Code -Searching for repeats: -\end_layout - -\begin_layout LyX-Code - In the last section, I discussed almost all of the details -\end_layout - -\begin_layout LyX-Code - required to allow you to look for repeats. - Consider the following -\end_layout - -\begin_layout LyX-Code - set of patterns: -\end_layout - -\begin_layout LyX-Code - p1=6...6 3...8 p1 (find exact 6 character repeat separated -\end_layout - -\begin_layout LyX-Code - by to 8 characters) -\end_layout - -\begin_layout LyX-Code - p1=6...6 3..8 p1[1,0,0] (allow one mismatch) -\end_layout - -\begin_layout LyX-Code - p1=3...3 p1[1,0,0] p1[1,0,0] p1[1,0,0] -\end_layout - -\begin_layout LyX-Code - (match 12 characters that are the remains -\end_layout - -\begin_layout LyX-Code - of a 3-character sequence occurring 4 times) -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - p1=4...8 0...3 p2=6...8 p1 0...3 p2 -\end_layout - -\begin_layout LyX-Code - (This would match things like -\end_layout - -\begin_layout LyX-Code - ATCT G TCTTT ATCT TG TCTTT -\end_layout - -\begin_layout LyX-Code - ) -\end_layout - -\begin_layout LyX-Code -Searching for particular sequences: -\end_layout - -\begin_layout LyX-Code - Occasionally, one wishes to match a specific, known sequence. -\end_layout - -\begin_layout LyX-Code - In such a case, you can just give the sequence (along with an -\end_layout - -\begin_layout LyX-Code - optional statement of the allowable mismatches, insertions, and -\end_layout - -\begin_layout LyX-Code - deletions). - Thus, -\end_layout - -\begin_layout LyX-Code - p1=6...8 GAGA ~p1 (match a hairpin with GAGA as the loop) -\end_layout - -\begin_layout LyX-Code - RRRRYYYY (match 4 purines followed by 4 pyrimidines) -\end_layout - -\begin_layout LyX-Code - TATAA[1,0,0] (match TATAA, allowing 1 mismatch) -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -Matches against a "weight matrix": -\end_layout - -\begin_layout LyX-Code - I will conclude my examples of the types of pattern units -\end_layout - -\begin_layout LyX-Code - available for matching against nucleotide sequences by discussing a -\end_layout - -\begin_layout LyX-Code - crude implemetation of matching using a "weight matrix". - While I -\end_layout - -\begin_layout LyX-Code - am less than overwhelmed with the syntax that I chose, I think that -\end_layout - -\begin_layout LyX-Code - the reader should be aware that I was thinking of generating -\end_layout - -\begin_layout LyX-Code - patterns containing such pattern units automatically from -\end_layout - -\begin_layout LyX-Code - alignments (and did not really plan on typing such things in by -\end_layout - -\begin_layout LyX-Code - hand very often). - Anyway, suppose that you wanted to match a -\end_layout - -\begin_layout LyX-Code - sequence of eight characters. - The "consensus" of these eight -\end_layout - -\begin_layout LyX-Code - characters is GRCACCGS, but the actual "frequencies of occurrence" -\end_layout - -\begin_layout LyX-Code - are given in the matrix below. - Thus, the first character is an A -\end_layout - -\begin_layout LyX-Code - 16% the time and a G 84% of the time. - The second is an A 57% of -\end_layout - -\begin_layout LyX-Code - the time, a C 10% of the time, a G 29% of the time, and a T 4% of -\end_layout - -\begin_layout LyX-Code - the time. - -\end_layout - -\begin_layout LyX-Code - C1 C2 C3 C4 C5 C6 C7 C8 -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - A 16 57 0 95 0 18 0 0 -\end_layout - -\begin_layout LyX-Code - C 0 10 80 0 100 60 0 50 -\end_layout - -\begin_layout LyX-Code - G 84 29 0 0 0 20 100 50 -\end_layout - -\begin_layout LyX-Code - T 0 4 20 5 0 2 0 0 -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - One could use the following pattern unit to search for inexact -\end_layout - -\begin_layout LyX-Code - matches related to such a "weight matrix": -\end_layout - -\begin_layout LyX-Code - {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), -\end_layout - -\begin_layout LyX-Code - (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 -\end_layout - -\begin_layout LyX-Code - This pattern unit will attempt to match exactly eight characters. -\end_layout - -\begin_layout LyX-Code - For each character in the sequence, the entry in the corresponding -\end_layout - -\begin_layout LyX-Code - tuple is added to an accumulated sum. - If the sum is greater than -\end_layout - -\begin_layout LyX-Code - 450, the match succeeds; else it fails. -\end_layout - -\begin_layout LyX-Code - Recently, this feature was upgraded to allow ranges. - Thus, -\end_layout - -\begin_layout LyX-Code - 600 > {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), -\end_layout - -\begin_layout LyX-Code - (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 -\end_layout - -\begin_layout LyX-Code - will work, as well. -\end_layout - -\begin_layout LyX-Code -Allowing Alternatives: -\end_layout - -\begin_layout LyX-Code - Very occasionally, you may wish to allow alternative pattern units -\end_layout - -\begin_layout LyX-Code - (i.e., "match either A or B"). - You can do this using something -\end_layout - -\begin_layout LyX-Code - like -\end_layout - -\begin_layout LyX-Code - ( GAGA | GCGCA) -\end_layout - -\begin_layout LyX-Code - which says "match either GAGA or GCGCA". - You may take -\end_layout - -\begin_layout LyX-Code - alternatives of a list of pattern units, for example -\end_layout - -\begin_layout LyX-Code - (p1=3...3 3...8 ~p1 | p1=5...5 4...4 ~p1 GGG) -\end_layout - -\begin_layout LyX-Code - would match one of two sequences of pattern units. - There is one -\end_layout - -\begin_layout LyX-Code - clumsy aspect of the syntax: to match a list of alternatives, you -\end_layout - -\begin_layout LyX-Code - need to fully the request. - Thus, -\end_layout - -\begin_layout LyX-Code - (GAGA | (GCGCA | TTCGA)) -\end_layout - -\begin_layout LyX-Code - would be needed to try the three alternatives. -\end_layout - -\begin_layout LyX-Code -One Minor Extension -\end_layout - -\begin_layout LyX-Code - Sometimes a pattern will contain a sequence of distinct ranges, -\end_layout - -\begin_layout LyX-Code - and you might wish to limit the sum of the lengths of the matched -\end_layout - -\begin_layout LyX-Code - subsequences. - For example, suppose that you basically wanted to -\end_layout - -\begin_layout LyX-Code - match something like -\end_layout - -\begin_layout LyX-Code - ARRYYTT p1=0...5 GCA[1,0,0] p2=1...6 ~p1 4...8 ~p2 p3=4...10 CCT -\end_layout - -\begin_layout LyX-Code - but that the sum of the lengths of p1, p2, and p3 must not exceed -\end_layout - -\begin_layout LyX-Code - eight characters. - To do this, you could add -\end_layout - -\begin_layout LyX-Code - length(p1+p2+p3) < 9 -\end_layout - -\begin_layout LyX-Code - as the last pattern unit. - It will just succeed or fail (but does -\end_layout - -\begin_layout LyX-Code - not actually match any characters in the sequence). -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -Matching Protein Sequences -\end_layout - -\begin_layout LyX-Code - Suppose that the input file contains protein sequences. - In this -\end_layout - -\begin_layout LyX-Code - case, you must invoke scan_for_matches with the "-p" option. - You -\end_layout - -\begin_layout LyX-Code - cannot use aspects of the language that relate directly to -\end_layout - -\begin_layout LyX-Code - nucleotide sequences (e.g., the -c command line option or pattern -\end_layout - -\begin_layout LyX-Code - constructs referring to the reverse complement of a previously -\end_layout - -\begin_layout LyX-Code - matched unit). - -\end_layout - -\begin_layout LyX-Code - You also have two additional constructs that allow you to match -\end_layout - -\begin_layout LyX-Code - either "one of a set of amino acids" or "any amino acid other than -\end_layout - -\begin_layout LyX-Code - those a given set". - For example, -\end_layout - -\begin_layout LyX-Code - p1=0...4 any(HQD) 1...3 notany(HK) p1 -\end_layout - -\begin_layout LyX-Code - would successfully match a string like -\end_layout - -\begin_layout LyX-Code - YWV D AA C YWV -\end_layout - -\begin_layout LyX-Code -Using the show_hits Utility -\end_layout - -\begin_layout LyX-Code - When viewing a large set of complex matches, you might find it -\end_layout - -\begin_layout LyX-Code - convenient to post-process the scan_for_matches output to get a -\end_layout - -\begin_layout LyX-Code - more readable version. - We provide a simple post-processor called -\end_layout - -\begin_layout LyX-Code - "show_hits". - To see its effect, just pipe the output of a -\end_layout - -\begin_layout LyX-Code - scan_for_matches into show_hits: -\end_layout - -\begin_layout LyX-Code - Normal Output: -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp -\end_layout - -\begin_layout LyX-Code - >tst1:[1,28] -\end_layout - -\begin_layout LyX-Code - gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - >tst1:[28,1] -\end_layout - -\begin_layout LyX-Code - gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - >tst2:[2,31] -\end_layout - -\begin_layout LyX-Code - CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - >tst2:[31,2] -\end_layout - -\begin_layout LyX-Code - CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - >tst3:[3,32] -\end_layout - -\begin_layout LyX-Code - gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - >tst3:[32,3] -\end_layout - -\begin_layout LyX-Code - gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - Piped Through show_hits: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp | show_hits -\end_layout - -\begin_layout LyX-Code - tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code - Optionally, you can specify which of the "fields" in the matches -\end_layout - -\begin_layout LyX-Code - you wish to sort on, and show_hits will sort them. - The field -\end_layout - -\begin_layout LyX-Code - numbers start with 0. - So, you might get something like -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp | show_hits 2 1 -\end_layout - -\begin_layout LyX-Code - tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code - In this case, the hits have been sorted on fields 2 and 1 (that is, -\end_layout - -\begin_layout LyX-Code - the third and second matched subfields). -\end_layout - -\begin_layout LyX-Code - show_hits is just one possible little post-processor, and you -\end_layout - -\begin_layout LyX-Code - might well wish to write a customized one for yourself. -\end_layout - -\begin_layout LyX-Code -Reducing the Cost of a Search -\end_layout - -\begin_layout LyX-Code - The scan_for_matches utility uses a fairly simple search, and may -\end_layout - -\begin_layout LyX-Code - consume large amounts of CPU time for complex patterns. - Someday, -\end_layout - -\begin_layout LyX-Code - I may decide to optimize the code. - However, until then, let me -\end_layout - -\begin_layout LyX-Code - mention one useful technique. - -\end_layout - -\begin_layout LyX-Code - When you have a complex pattern that includes a number of varying -\end_layout - -\begin_layout LyX-Code - ranges, imprecise matches, and so forth, it is useful to -\end_layout - -\begin_layout LyX-Code - "pipeline" matches. - That is, form a simpler pattern that can be -\end_layout - -\begin_layout LyX-Code - used to scan through a large database extracting sections that -\end_layout - -\begin_layout LyX-Code - might be matched by the more complex pattern. - Let me illustrate -\end_layout - -\begin_layout LyX-Code - with a short example. - Suppose that you really wished to match the -\end_layout - -\begin_layout LyX-Code - pattern -\end_layout - -\begin_layout LyX-Code - p1=3...5 0...8 ~p1[1,1,0] p2=6...7 3...6 AGC 3...5 RYGC ~p2[1,0,0] -\end_layout - -\begin_layout LyX-Code - In this case, the pattern units AGC 3...5 RYGC can be used to rapidly -\end_layout - -\begin_layout LyX-Code - constrain the overall search. - You can preprocess the overall -\end_layout - -\begin_layout LyX-Code - database using the pattern: -\end_layout - -\begin_layout LyX-Code - 31...31 AGC 3...5 RYGC 7...7 -\end_layout - -\begin_layout LyX-Code - Put the complex pattern in pat_file1 and the simpler pattern in -\end_layout - -\begin_layout LyX-Code - pat_file2. - Then use, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c pat_file2 < nucleotide_database | -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file1 -\end_layout - -\begin_layout LyX-Code - The output will show things like -\end_layout - -\begin_layout LyX-Code - >seqid:[232,280][2,47] -\end_layout - -\begin_layout LyX-Code - matches pieces -\end_layout - -\begin_layout LyX-Code - Then, the actual section of the sequence that was matched can be -\end_layout - -\begin_layout LyX-Code - easily computed as [233,278] (remember, the positions start from -\end_layout - -\begin_layout LyX-Code - 1, not 0). -\end_layout - -\begin_layout LyX-Code - Let me finally add, you should do a few short experiments to see -\end_layout - -\begin_layout LyX-Code - whether or not such pipelining actually improves performance -- it -\end_layout - -\begin_layout LyX-Code - is not always obvious where the time is going, and I have -\end_layout - -\begin_layout LyX-Code - sometimes found that the added complexity of pipelining actually -\end_layout - -\begin_layout LyX-Code - slowed things up. - It gets its best improvements when there are -\end_layout - -\begin_layout LyX-Code - exact matches of more than just a few characters that can be -\end_layout - -\begin_layout LyX-Code - rapidly used to eliminate large sections of the database. -\end_layout - -\begin_layout LyX-Code -============= -\end_layout - -\begin_layout LyX-Code -Additions: -\end_layout - -\begin_layout LyX-Code -Feb 9, 1995: the pattern units ^ and $ now work as in normal regular -\end_layout - -\begin_layout LyX-Code - expressions. - That is -\end_layout - -\begin_layout LyX-Code - TTF $ -\end_layout - -\begin_layout LyX-Code - matches only TTF at the end of the string and -\end_layout - -\begin_layout LyX-Code - ^ TTF -\end_layout - -\begin_layout LyX-Code - matches only an initial TTF -\end_layout - -\begin_layout LyX-Code - The pattern unit -\end_layout - -\begin_layout LyX-Code - : -\end_layout - -\begin_layout Standard -\begin_inset Box Frameless -position "t" -hor_pos "c" -has_inner_box 1 -inner_pos "t" -use_parbox 0 -width "100col%" -special "none" -height "1in" -height_special "totalheight" -status open - -\begin_layout LyX-Code - -\size scriptsize -Program name: read_fasta -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Author: Martin Asser Hansen - Copyright (C) - All rights reserved -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Contact: mail@maasha.dk -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Date: August 2007 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -License: GNU General Public License version 2 (http://www.gnu.org/copyleft/ -gpl.html) -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Description: Read FASTA entries. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Usage: read_fasta [options] -i -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Options: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-i | --data_in=] - Comma separated list of files - to read. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-n | --num=] - Limit number of records to read. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-I | --stream_in=] - Read input stream from file - - Default=STDIN -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-O | --stream_out=] - Write output stream to file - - Default=STDOUT -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Examples: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test.fna - Read FASTA entries from file. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test1.fna,test2,fna - Read FASTA entries from files. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i '*.fna' - Read FASTA entries from files. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test.fna -n 10 - Read first 10 FASTA entries from - file. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -The Data Stream -\end_layout - -\begin_layout Subsection -How to read the data stream from file? -\begin_inset LatexCommand label -name "sub:How-to-read-stream" - -\end_inset - - -\end_layout - -\begin_layout Standard -You want to read a data stream that you previously have saved to file in - biopieces format. - This can be done implicetly or explicitly. - The implicit way uses the 'stdout' stream of the Unix terminal: -\end_layout - -\begin_layout LyX-Code -cat | -\end_layout - -\begin_layout Standard -cat is the Unix command that reads a file and output the result to 'stdout' - --- which in this case is piped to any biopiece represented by the . - It is also possible to read the data stream using '<' to direct the 'stdout' - stream into the biopiece like this: -\end_layout - -\begin_layout LyX-Code - < -\end_layout - -\begin_layout Standard -However, that will not work if you pipe more biopieces together. - Then it is much safer to read the stream from a file explicitly like this: -\end_layout - -\begin_layout LyX-Code - --stream_in= -\end_layout - -\begin_layout Standard -Here the filename is explicetly given to the biopiece - with the switch -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_in. - This switch works with all biopieces. - It is also possible to read in data from multiple sources by repeating - the explicit read step: -\end_layout - -\begin_layout LyX-Code - --stream_in= | --stream_in= -\end_layout - -\begin_layout Subsection -How to write the data stream to file? -\begin_inset LatexCommand label -name "sub:How-to-write-stream" - -\end_inset - - -\end_layout - -\begin_layout Standard -In order to save the output stream from a biopiece to file, so you can read - in the stream again at a later time, you can do one of two things: -\end_layout - -\begin_layout LyX-Code - > -\end_layout - -\begin_layout Standard -All, the biopieces write the data stream to 'stdout' by default which can - be written to a file by redirecting 'stdout' to file using '>' , however, - if one of the biopieces for writing other formats is used then the both - the biopieces records as well as the result output will go to 'stdout' - in a mixture causing havock! To avoid this you must use the switch -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out that explictly tells the biopiece to write the output stream - to file: -\end_layout - -\begin_layout LyX-Code - --stream_out= -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out switch works with all biopieces. -\end_layout - -\begin_layout Subsection -How to terminate the data stream? -\end_layout - -\begin_layout Standard -The data stream is never stops unless the user want to save the stream or - by supplying the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch that will terminate the stream: -\end_layout - -\begin_layout LyX-Code - --no_stream -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch only works with those biopieces where it makes sense that - the user might want to terminale the data stream, -\emph on -i.e -\emph default -. - after an analysis step where the user wants to output the result, but not - the data stream. -\end_layout - -\begin_layout Subsection -How to write my results to file? -\begin_inset LatexCommand label -name "sub:How-to-write-result" - -\end_inset - - -\end_layout - -\begin_layout Standard -Saving the result of an analysis to file can be done implicitly or explicitly. - The implicit way: -\end_layout - -\begin_layout LyX-Code - --no_stream > -\end_layout - -\begin_layout Standard -If you use '>' to redirect 'stdout' to file then it is important to use - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch to avoid writing a mix of biopieces records and result - to the same file causing havock. - The safe way is to use the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch which explicetly tells the biopiece to write the result - to a given file: -\end_layout - -\begin_layout LyX-Code - --result_out= -\end_layout - -\begin_layout Standard -Using the above method will not terminate the stream, so it is possible - to pipe that into another biopiece generating different results: -\end_layout - -\begin_layout LyX-Code - --result_out= | --result_out= -\end_layout - -\begin_layout Standard -And still the data stream will continue unless terminated with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream: -\end_layout - -\begin_layout LyX-Code - --result_out= --no_stream -\end_layout - -\begin_layout Standard -Or written to file using implicitly or explicity -\begin_inset LatexCommand eqref -reference "sub:How-to-write-result" - -\end_inset - -. - The explicit way: -\end_layout - -\begin_layout LyX-Code - --result_out= --stream_out= -\end_layout - -\begin_layout Subsection -How to read data from multiple sources? -\end_layout - -\begin_layout Standard -To read multiple data sources, with the same type or different type of data - do: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= -\end_layout - -\begin_layout Standard -where type is the data type a specific biopiece reads. -\end_layout - -\begin_layout Section -Reading input -\end_layout - -\begin_layout Subsection -How to read biopieces input? -\end_layout - -\begin_layout Standard -See -\begin_inset LatexCommand eqref -reference "sub:How-to-read-stream" - -\end_inset - -. -\end_layout - -\begin_layout Subsection -How to read in data? -\end_layout - -\begin_layout Standard -Data in different formats can be read with the appropriate biopiece for - that format. - The biopieces are typicalled named 'read_' such as -\series bold -read_fasta -\series default -, -\series bold -read_bed -\series default -, -\series bold -read_tab -\series default -, etc., and all behave in a similar manner. - Data can be read by supplying the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -data_in switch and a file name to the file containing the data: -\end_layout - -\begin_layout LyX-Code - --data_in= -\end_layout - -\begin_layout Standard -It is also possible to read in a saved biopieces stream (see -\begin_inset LatexCommand ref -reference "sub:How-to-read-stream" - -\end_inset - -) as well as reading data in one go: -\end_layout - -\begin_layout LyX-Code - --stream_in= --data_in= -\end_layout - -\begin_layout Standard -If you want to read data from several files you can do this: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= -\end_layout - -\begin_layout Standard -If you have several data files you can read in all explicitly with a comma - separated list: -\end_layout - -\begin_layout LyX-Code - --data_in=file1,file2,file3 -\end_layout - -\begin_layout Standard -And it is also possible to use file globbing -\begin_inset Foot -status open - -\begin_layout Standard -using the short option will only work if you quote the argument -i '*.fna' -\end_layout - -\end_inset - -: -\end_layout - -\begin_layout LyX-Code - --data_in=*.fna -\end_layout - -\begin_layout Standard -Or in a combination: -\end_layout - -\begin_layout LyX-Code - --data_in=file1,/dir/*.fna -\end_layout - -\begin_layout Standard -Finally, it is possible to read in data in different formats using the appropria -te biopiece for each format: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= ... -\end_layout - -\begin_layout Subsection -How to read FASTA input? -\end_layout - -\begin_layout Standard -Sequences in FASTA format can be read explicitly using -\series bold -read_fasta -\series default -: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= -\end_layout - -\begin_layout Subsection -How to read alignment input? -\end_layout - -\begin_layout Standard -If your alignment if FASTA formatted then you can -\series bold -read_align -\series default -. - It is also possible to use -\series bold -read_fasta -\series default - since the data is FASTA formatted, however, with -\series bold -read_fasta -\series default - the key ALIGN will be omitted. - The ALIGN key is used to determine which sequences belong to what alignment - which is required for -\series bold -write_align -\series default -. -\end_layout - -\begin_layout LyX-Code -read_align --data_in= -\end_layout - -\begin_layout Subsection -How to read tabular input? -\begin_inset LatexCommand label -name "sub:How-to-read-table" - -\end_inset - - -\end_layout - -\begin_layout Standard -Tabular input can be read with -\series bold -read_tab -\series default - which will read in all rows and chosen columns (separated by a given delimter) - from a table in text format. -\end_layout - -\begin_layout Standard -The table below: -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Standard -Human -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -ATACGTCAG -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -23524 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Dog -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -AGCATGAC -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -2442 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Mouse -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -GACTG -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -234 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Cat -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -AAATGCA -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -2342 -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -Can be read using the command: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= -\end_layout - -\begin_layout Standard -Which will result in four records, one for each row, where the keys V0, - V1, V2 are the default keys for the organism, sequence, and count, respectively. - It is possible to select a subset of colums to read by using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -cols switch which takes a comma separated list of columns numbers (first - column is designated 0) as argument. - So to read in only the sequence and the count so that the count comes before - the sequence do: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --cols=2,1 -\end_layout - -\begin_layout Standard -It is also possible to name the columns with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --cols=2,1 --keys=COUNT,SEQ -\end_layout - -\begin_layout Subsection -How to read BED input? -\end_layout - -\begin_layout Standard -The BED (Browser Extensible Data -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://genome.ucsc.edu/FAQ/FAQformat" - -\end_inset - - -\end_layout - -\end_inset - -) format is a tabular format for data pertaining to one of the Eukaryotic - genomes in the UCSC genome brower -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://genome.ucsc.edu/" - -\end_inset - - -\end_layout - -\end_inset - -. - The BED format consists of up to 12 columns, where the first three are - mandatory CHR, CHR_BEG, and CHR_END. - The mandatory columns and any of the optional columns can all be read in - easily with the -\series bold -read_bed -\series default - biopiece. -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= -\end_layout - -\begin_layout Standard -It is also possible to read the BED file with -\series bold -read_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-read-table" - -\end_inset - -), however, that will be more cumbersome because you need to specify the - keys: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --keys=CHR,CHR_BEG,CHR_END ... -\end_layout - -\begin_layout Subsection -How to read PSL input? -\end_layout - -\begin_layout Standard -The PSL format is the output from BLAT and contains 21 mandatory fields - that can be read with -\series bold -read_psl -\series default -: -\end_layout - -\begin_layout LyX-Code -read_psl --data_in= -\end_layout - -\begin_layout Section -Writing output -\end_layout - -\begin_layout Standard -All result output can be written explicitly to file using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch which all result generating biopieces have. - It is also possible to write the result to file implicetly by directing - 'stdout' to file using '>', however, that requires the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream swich to prevent a mixture of data stream and results in the file. - The explicit (and safe) way: -\end_layout - -\begin_layout LyX-Code -... - | --result_out= -\end_layout - -\begin_layout Standard -The implicit way: -\end_layout - -\begin_layout LyX-Code -... - | --no_stream > -\end_layout - -\begin_layout Subsection -How to write biopieces output? -\end_layout - -\begin_layout Standard -See -\begin_inset LatexCommand eqref -reference "sub:How-to-write-stream" - -\end_inset - -. -\end_layout - -\begin_layout Subsection -How to write FASTA output? -\begin_inset LatexCommand label -name "sub:How-to-write-fasta" - -\end_inset - - -\end_layout - -\begin_layout Standard -FASTA output can be written with -\series bold -write_fasta -\series default -. -\end_layout - -\begin_layout LyX-Code -... - | write_fasta --result_out= -\end_layout - -\begin_layout Standard -It is also possible to wrap the sequences to a given width using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -wrap switch allthough wrapping of sequence is generally an evil thing: -\end_layout - -\begin_layout LyX-Code -... - | write_fasta --no_stream --wrap=80 -\end_layout - -\begin_layout Subsection -How to write alignment output? -\begin_inset LatexCommand label -name "sub:How-to-write-alignment" - -\end_inset - - -\end_layout - -\begin_layout Standard -Pretty alignments with ruler -\begin_inset Foot -status collapsed - -\begin_layout Standard -'.' for every 10 residues, ':' for every 50, and '|' for every 100 -\end_layout - -\end_inset - - and consensus sequence -\begin_inset Note Note -status collapsed - -\begin_layout Standard -which reminds me to make that an option. -\end_layout - -\end_inset - - can be created with -\series bold -write_align -\series default -, what also have the optional -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -wrap switch to break the alignment into blocks of a given width: -\end_layout - -\begin_layout LyX-Code -... - | write_align --result_out= --wrap=80 -\end_layout - -\begin_layout Standard -If the number of sequnces in the alignment is 2 then a pairwise alignment - will be output otherwise a multiple alignment. - And if the sequence type, determined automagically, is protein, then residues - and symbols (+,\InsetSpace ~ -:,\InsetSpace ~ -.) will be used to show consensus according to the Blosum62 - matrix. -\end_layout - -\begin_layout Subsection -How to write tabular output? -\begin_inset LatexCommand label -name "sub:How-to-write-tab" - -\end_inset - - -\end_layout - -\begin_layout Standard -Outputting the data stream as a table can be done with -\series bold -write_tab -\series default -, which will write generate one row per record with the values as columns. - If you supply the optional -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comment switch, when the first row in the table will be a 'comment' line - prefixed with a '#': -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --comment -\end_layout - -\begin_layout Standard -You can also change the delimiter from the default (tab) to -\emph on -e.g. - -\emph default - ',': -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --delimit=',' -\end_layout - -\begin_layout Standard -If you want the values output in a specific order you have to supply a comma - separated list using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch that will print only those keys in that order: -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --keys=SEQ_NAME,COUNT -\end_layout - -\begin_layout Standard -Alternatively, if you have some keys that you don't want in the tabular - output, use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_keys switch. - So to print all keys except SEQ and SEQ_TYPE do: -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --no_keys=SEQ,SEQ_TYPE -\end_layout - -\begin_layout Standard -Finally, if you have a stream containing a mix of different records types, - -\emph on -e.g. - -\emph default - records with sequences and records with matches, then you can use -\series bold -write_tab -\series default - to output all the records in tabluar format, however, the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comment, -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys, and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_keys switches will only respond to records of the first type encountered. - The reason is that outputting mixed records is probably not what you want - anyway, and you should remove all the unwanted records from the stream - before outputting the table: -\series bold -grab -\series default - is your friend (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to write a BED output? -\begin_inset LatexCommand label -name "sub:How-to-write-BED" - -\end_inset - - -\end_layout - -\begin_layout Standard -Data in BED format can be output if the records contain the mandatory keys - CHR, CHR_BEG, and CHR_END using -\series bold -write_bed -\series default -. - If the optional keys are also present, they will be output as well: -\end_layout - -\begin_layout LyX-Code -write_bed --result_out= -\end_layout - -\begin_layout Subsection -How to write PSL output? -\begin_inset LatexCommand label -name "sub:How-to-write-PSL" - -\end_inset - - -\end_layout - -\begin_layout Standard -Data in PSL format can be output using -\series bold -write_psl: -\end_layout - -\begin_layout LyX-Code -write_psl --result_out= -\end_layout - -\begin_layout Section -Manipulating Records -\end_layout - -\begin_layout Subsection -How to select a few records? -\begin_inset LatexCommand label -name "sub:How-to-select-a-few-records" - -\end_inset - - -\end_layout - -\begin_layout Standard -To quickly get an overview of your data you can limit the data stream to - show a few records. - This also very useful to test the pipeline with a few records if you are - setting up a complex analysis using several biopieces. - That way you can inspect that all goes well before analyzing and waiting - for the full data set. - All of the read_ biopieces have the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch which will take a number as argument and only that number of - records will be read. - So to read in the first 10 FASTA entries from a file: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna --num=10 -\end_layout - -\begin_layout Standard -Another way of doing this is to use -\series bold -head_records -\series default - will limit the stream to show the first 10 records (default): -\end_layout - -\begin_layout LyX-Code -... - | head_records -\end_layout - -\begin_layout Standard -Using -\series bold -head_records -\series default - directly after one of the read_ biopieces will be a lot slower than - using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch with the read_ biopieces, however, -\series bold -head_records -\series default - can also be used to limit the output from all the other biopieces. - It is also possible to give -\series bold -head_records -\series default - a number of records to show using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch. - So to display the first 100 records do: -\end_layout - -\begin_layout LyX-Code -... - | head_records --num=100 -\end_layout - -\begin_layout Subsection -How to select random records? -\begin_inset LatexCommand label -name "sub:How-to-select-random-records" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you want to inspect a number of random records from the stream this can - be done with the -\series bold -random_records -\series default - biopiece. - So if you have 1 mio records in the stream and you want to select 1000 - random records do: -\end_layout - -\begin_layout LyX-Code -... - | random_records --num=1000 -\end_layout - -\begin_layout Subsection -How to count all records in the data stream? -\end_layout - -\begin_layout Standard -To count all the records in the data stream use -\series bold -count_records -\series default -, which adds one record (which is not included in the count) to the data - stream. - So to count the number of sequences in a FASTA file you can do this: -\end_layout - -\begin_layout LyX-Code -cat test.fna | read_fasta | count_records --no_stream -\end_layout - -\begin_layout Standard -Which will write the last record containing the count to 'stdout': -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_records: 630 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize ---- -\end_layout - -\begin_layout Standard -It is also possible to write the count to file using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch. -\end_layout - -\begin_layout Subsection -How to get the length of record values? -\begin_inset LatexCommand label -name "sub:How-to-get-value_length" - -\end_inset - - -\end_layout - -\begin_layout Standard -Use the -\series bold -length_vals -\series default - biopiece to get the length of each value for a comma separated list of - keys: -\end_layout - -\begin_layout LyX-Code -... - | length_vals --keys=HIT,PATTERN -\end_layout - -\begin_layout Subsection -How to grab specific records? -\begin_inset LatexCommand label -name "sub:How-to-grab" - -\end_inset - - -\end_layout - -\begin_layout Standard -The biopiece -\series bold -grab -\series default - is related to the Unix grep and locates records based on matching keys - and/or values using either a pattern, a Perl regex, or a numerical evaluation. - To easily -\series bold -grab -\series default - all records in the stream that has any mentioning of the pattern 'human' - just pipe the data stream through -\series bold -grab -\series default - like this: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human -\end_layout - -\begin_layout Standard -This will search for the pattern 'human' in all keys and all values. - The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch takes a comma separated list of patterns, so in order to - match multiple patterns do: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human,mouse -\end_layout - -\begin_layout Standard -It is also possible to use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in switch instead of -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern. - -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in is used to read a file with one pattern per line: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern_in=patterns.txt -\end_layout - -\begin_layout Standard -If you want the opposite result --- to find all records that does not match - the patterns, add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -invert switch, which not only works with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch, but also with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -regex and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -eval: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human --invert -\end_layout - -\begin_layout Standard -If you want to search the record keys only, -\emph on -e.g. - -\emph default - to find all records containing the key SEQ you can add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys_only switch. - This will prevent matching of SEQ in any record value, and in fact SEQ - is a not uncommon peptide sequence you could get an unwanted record. - Also, this will give an increase in speed since only the keys are searched: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=SEQ --keys_only -\end_layout - -\begin_layout Standard -However, if you are interested in finding the peptide sequence SEQ and not - the SEQ key, just add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -vals_only switch instead: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=SEQ --vals_only -\end_layout - -\begin_layout Standard -Also, if you want to grab for certain key/value pairs you can supply a comma - separated list of keys whos values will then be searched using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch. - This is handy if your records contain large genomic sequences and you dont - want to search the entire sequence for -\emph on -e.g. - -\emph default - the organism name --- it is much faster to tell -\series bold -grab -\series default - which keys to search the value for: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human --keys=SEQ_NAME -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout Standard -It is also possible to invoke flexible matching using regex (regular expressions -) instead of simple pattern matching. - In -\series bold -grab -\series default - the regex engine is Perl based and allows use of different type of wild - cards, alternatives, -\emph on -etc -\emph default - -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://perldoc.perl.org/perlreref.html" - -\end_inset - - -\end_layout - -\end_inset - -. - If you want to -\series bold -grab -\series default - records withs the sequence ATCG or GCTA you can do this: -\end_layout - -\begin_layout LyX-Code -... - | grab --regex='ATCG|GCTA' -\end_layout - -\begin_layout Standard -Or if you want to find sequences beginning with ATCG: -\end_layout - -\begin_layout LyX-Code -... - | grab --regex='^ATCG' -\end_layout - -\begin_layout Standard -You can also use -\series bold -grab -\series default - to locate records that fulfill a numerical property using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -eval switch witch takes an expression in three parts. - The first part is the key that holds the value we want to evaluate, the - second part holds one the six operators: -\end_layout - -\begin_layout Enumerate -Greater than: > -\end_layout - -\begin_layout Enumerate -Greater than or equal to: >= -\end_layout - -\begin_layout Enumerate -Less than: < -\end_layout - -\begin_layout Enumerate -Less than or equal to: <= -\end_layout - -\begin_layout Enumerate -Equal to: = -\end_layout - -\begin_layout Enumerate -Not equal to: != -\end_layout - -\begin_layout Enumerate -String wise equal to: eq -\end_layout - -\begin_layout Enumerate -String wise not equal to: ne -\end_layout - -\begin_layout Standard -And finally comes the number used in the evaluation. - So to -\series bold -grab -\series default - all records with a sequence length greater than 30: -\end_layout - -\begin_layout LyX-Code -... - length_seq | grab --eval='SEQ_LEN > 30' -\end_layout - -\begin_layout Standard -If you want to locate all records containing the pattern 'human' and where - the sequence length is greater that 30, you do this by running the stream - through -\series bold -grab -\series default - twice: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern='human' | length_seq | grab --eval='SEQ_LEN > 30' -\end_layout - -\begin_layout Standard -Finally, it is possible to do fast matching of expressions from a file using - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact switch. - Each of these expressions has to be matched exactly over the entrie length, - which if useful if you have a file with accession numbers, that you want - to locate in the stream: -\end_layout - -\begin_layout LyX-Code -... - | grab --exact acc_no.txt | ... -\end_layout - -\begin_layout Standard -Using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact is much faster than using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in, because with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact the expression has to be complete matches, where -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in looks for subpatterns. -\end_layout - -\begin_layout Standard -NB! To get the best speed performance, use the most restrictive -\series bold -grab -\series default - first. -\end_layout - -\begin_layout Subsection -How to remove keys from records? -\end_layout - -\begin_layout Standard -To remove one or more specific keys from all records in the data stream - use -\series bold -remove_keys -\series default - like this: -\end_layout - -\begin_layout LyX-Code -... - | remove_keys --keys=SEQ,SEQ_NAME -\end_layout - -\begin_layout Standard -In the above example SEQ and SEQ_NAME will be removed from all records if - they exists in these. - If all keys are removed from a record, then the record will be removed. -\end_layout - -\begin_layout Subsection -How to rename keys in records? -\end_layout - -\begin_layout Standard -Sometimes you want to rename a record key, -\emph on -e.g. - -\emph default - if you have read in a two column table with sequence name and sequence - in each column (see -\begin_inset LatexCommand ref -reference "sub:How-to-read-table" - -\end_inset - -) without specifying the key names, then the sequence name will be called - V0 and the sequence V1 as default in the -\series bold -read_tab -\series default - biopiece. - To rename the V0 and V1 keys we need to run the stream through -\series bold -rename_keys -\series default - twice (one for each key to rename): -\end_layout - -\begin_layout LyX-Code -... - | rename_keys --keys=V0,SEQ_NAME | rename_keys --keys=V1,SEQ -\end_layout - -\begin_layout Standard -The first instance of -\series bold -rename_keys -\series default - replaces all the V0 keys with SEQ_NAME, and the second instance of -\series bold -rename_keys -\series default - replaces all the V1 keys with SEQ. - -\emph on -Et viola -\emph default - the data can now be used in the biopieces that requires these keys. -\end_layout - -\begin_layout Section -Manipulating Sequences -\end_layout - -\begin_layout Subsection -How to get sequence lengths? -\end_layout - -\begin_layout Standard -The length for sequences in records can be determined with -\series bold -length_seq -\series default -, which adds the key SEQ_LEN to each record with the sequence length as - the value. - It also generates an extra record that is emitted last with the key TOTAL_SEQ_L -EN showing the total length of all the sequences. -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_seq -\end_layout - -\begin_layout Standard -It is also possible to determine the sequence length using the generic tool - -\series bold -length_vals -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-get-value_length" - -\end_inset - -, which determines the length of the values for a given list of keys: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_vals --keys=SEQ -\end_layout - -\begin_layout Standard -To obtain the total length of all sequences use -\series bold -sum_vals -\series default - like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_vals --keys=SEQ -\end_layout - -\begin_layout LyX-Code -| sum_vals --keys=SEQ_LEN -\end_layout - -\begin_layout Standard -The biopiece -\series bold -analyze_seq -\series default - will also determine the length of each sequence (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-analyze" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to analyze sequence composition? -\begin_inset LatexCommand label -name "sub:How-to-analyze" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you want to find out the sequence type, composition, length, as well - as GC content, indel content and proportions of soft and hard masked sequence, - then use -\series bold -analyze_seq -\series default -. - This handy biopiece will determine all these things per sequence from which - it is easy to get an overview using the -\series bold -write_tab -\series default - biopiece to output a table (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -). - So in order to determine the sequence composition of a FASTA file with - just one entry containing the sequence 'ATCG' we just read the data with - -\series bold -read_fasta -\series default - and run the output through -\series bold -analyze_seq -\series default - which will add the analysis to the record like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq ... -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:D: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -MIX_INDEX: 0.55 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:W: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:G: 16 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SOFT_MASK%: 63.75 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:B: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:V: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -HARD_MASK%: 0.00 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:H: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:S: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:N: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:.: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -GC%: 35.00 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:A: 8 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:Y: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:M: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:T: 44 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ_TYPE: DNA -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:K: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:~: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ: TTTCAGTTTGGGACGGAGTAAGGCCTTCCtttttttttttttttttttttttttttttgagaccgagtcttgctc -tgtcg -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ_LEN: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -80 RES:R: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:C: 12 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:-: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:U: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize ---- -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout Standard -Now to make a table of how may As, Ts, Cs, and Gs you can add the following: -\end_layout - -\begin_layout LyX-Code -... - | analyze_seq | write_tab --keys=RES:A,RES:T,RES:C,RES:G -\end_layout - -\begin_layout Standard -Or if you want to see the proportions of hard and soft masked sequence: -\end_layout - -\begin_layout LyX-Code -... - | analyse_seq | write_tab --keys=HARD_MASK%,SOFT_MASK% -\end_layout - -\begin_layout Standard -If you have a stack of sequences in one file and you want to determine the - mean GC content you can do it using the -\series bold -mean_vals -\series default - biopiece: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | mean_vals --keys=GC% -\end_layout - -\begin_layout Standard -Or if you want the total count of Ns you can use -\series bold -sum_vals -\series default - like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | sum_vals --keys=RES:N -\end_layout - -\begin_layout Standard -The MIX_INDEX key is calculated as the count of the most common residue - over the sequence length, and can be used as a cut-off for removing sequence - tags consisting of mostly one nucleotide: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | grab --eval='MIX_INDEX<0.85' -\end_layout - -\begin_layout Subsection -How to extract subsequences? -\begin_inset LatexCommand label -name "sub:How-to-extract" - -\end_inset - - -\end_layout - -\begin_layout Standard -In order to extract a subsequence from a longer sequence use the biopiece - extract_seq, which will replace the sequence in the record with the subsequence - (this behaviour should probably be modified to be dependant of a -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -replace or a -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_replace switch -\begin_inset Note Note -status collapsed - -\begin_layout Standard -also in split_seq -\end_layout - -\end_inset - -). - So to extract the first 20 residues from all sequences do (first residue - is designated 1): -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=1 --len=20 -\end_layout - -\begin_layout Standard -You can also specify a begin and end coordinate set: -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=20 --end=40 -\end_layout - -\begin_layout Standard -If you want the subsequences from position 20 to the sequence end do: -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=20 -\end_layout - -\begin_layout Standard -If you want to extract subsequences a given distance from the sequence end - you can do this by reversing the sequence with the biopiece -\series bold -reverse_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-reverse-seq" - -\end_inset - -, followed by -\series bold -extract_seq -\series default - to get the subsequence, and then -\series bold -reverse_seq -\series default - again to get the subsequence back in the original orientation: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | reverse_seq -\end_layout - -\begin_layout LyX-Code -| extract_seq --beg=10 --len=10 | reverse_seq -\end_layout - -\begin_layout Subsection -How to get genomic sequence? -\begin_inset LatexCommand label -name "sub:How-to-get-genomic-sequence" - -\end_inset - - -\end_layout - -\begin_layout Standard -The biopiece -\series bold -get_genomic_seq -\series default - can extract subsequences for a given genome specified with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch explicitly using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -beg and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -end/ -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -len switches: -\end_layout - -\begin_layout LyX-Code -get_genome_seq --genome= --beg=1 --len=100 -\end_layout - -\begin_layout Standard -Alternatively, -\series bold -get_genome_seq -\series default - can be used to append the corresponding sequence to BED, PSL, and BLAST - records: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | get_genome_seq --genome= -\end_layout - -\begin_layout Standard -It is also possible to include flaking sequence using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -flank switch. - So to include 50 nucleotides upstream and 50 nucleotides downstream for - each BED entry do: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | get_genome_seq --genome= --flank=50 -\end_layout - -\begin_layout Subsection -How to upper-case sequences? -\end_layout - -\begin_layout Standard -Sequences can be shifted from lower case to upper case using -\series bold -uppercase_seq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | uppercase_seq -\end_layout - -\begin_layout Subsection -How to reverse sequences? -\begin_inset LatexCommand label -name "sub:How-to-reverse-seq" - -\end_inset - - -\end_layout - -\begin_layout Standard -The order of residues in a sequence can be reversed using reverse_seq: -\end_layout - -\begin_layout LyX-Code -... - | reverse_seq -\end_layout - -\begin_layout Standard -Note that in order to reverse/complement a sequence you also need the -\series bold -complement_seq -\series default - biopiece (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-complement" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to complement sequences? -\begin_inset LatexCommand label -name "sub:How-to-complement" - -\end_inset - - -\end_layout - -\begin_layout Standard -DNA and RNA sequences can be complemented with -\series bold -complement_seq -\series default -, which automagically determines the sequence type: -\end_layout - -\begin_layout LyX-Code -... - | complement_seq -\end_layout - -\begin_layout Standard -Note that in order to reverse/complement a sequence you also need the -\series bold -reverse_seq -\series default - biopiece (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-reverse-seq" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to remove indels from sequnces? -\end_layout - -\begin_layout Standard -Indels can be removed from sequences with the -\series bold -remove_indels -\series default - biopiece. - This is useful if you have aligned some sequences (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-align" - -\end_inset - -) and extracted (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-extract" - -\end_inset - -) a block of subsequences from the alignment and you want to use these sequence - in a search where you need to remove the indels first. - '-', '~', and '.' are considered indels: -\end_layout - -\begin_layout LyX-Code -... - | remove_indels -\end_layout - -\begin_layout Subsection -How to shuffle sequences? -\end_layout - -\begin_layout Standard -All residues in sequences in the stream can be shuffled to random positions - using the -\series bold -shuffle_seq -\series default - biopiece: -\end_layout - -\begin_layout LyX-Code -... - | shuffle_seq -\end_layout - -\begin_layout Subsection -How to split sequences into overlapping subsequences? -\end_layout - -\begin_layout Standard -Sequences can be slit into overlapping subsequences with the -\series bold -split_seq -\series default - biopiece. -\end_layout - -\begin_layout LyX-Code -... - | split_seq --word_size=20 --uniq -\end_layout - -\begin_layout Subsection -How to determine the oligo frequency? -\end_layout - -\begin_layout Standard -In order to determine if any oligo usage is over represented in one or more - sequences you can determine the frequency of oligos of a given size with - -\series bold -oligo_freq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 -\end_layout - -\begin_layout Standard -And if you have more than one sequence and want to accumulate the frequences - you need the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -all switch: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 --all -\end_layout - -\begin_layout Standard -To get a meaningful result you need to write the resulting frequencies as - a table with -\series bold -write_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -), but first it is important to -\series bold -grab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -) the records with the frequencies to avoid full length sequences in the - table: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 --all | grab --pattern=OLIGO --keys_only -\end_layout - -\begin_layout LyX-Code -| write_tab --no_stream -\end_layout - -\begin_layout Standard -And the resulting frequency table can be sorted with Unix sort (man sort). -\end_layout - -\begin_layout Subsection -How to search for sequences in genomes? -\end_layout - -\begin_layout Standard -See the following biopiece: -\end_layout - -\begin_layout Itemize - -\series bold -patscan_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -blat_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -blast_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -vmatch_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to search sequences for a pattern? -\begin_inset LatexCommand label -name "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Standard -It is possible to search sequences in the data stream for patterns using - the -\series bold -patscan_seq -\series default - biopiece which utilizes the powerful scan_for_matches engine. - Consult the documentation for scan_for_matches in order to learn how to - define patterns (the documentation is included in Appendix\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sec:scan_for_matches-README" - -\end_inset - -). -\end_layout - -\begin_layout Standard -To search all sequences for a simple pattern consisting of the sequence - ATCGATCG allowing for 3 mismatches, 2 insertions and 1 deletion: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | patscan_seq --pattern='ATCGATCG[3,2,1]' -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch takes a comma seperated list of patterns, so if you want - to search for more that one pattern do: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern='ATCGATCG[3,2,1],GCTAGCTA[3,2,1]' -\end_layout - -\begin_layout Standard -It is also possible to have a list of different patterns to search for in - a file with one pattern per line. - In order to get -\series bold -patscan_seq -\series default - to read these patterns use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern_in= -\end_layout - -\begin_layout Standard -To also scan the complementary strand in nucleotide sequences ( -\series bold -patscan_seq -\series default - automagically determines the sequence type) you need to add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comp switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern= --comp -\end_layout - -\begin_layout Standard -It is also possible to use -\series bold -patscan_seq -\series default - to output those records that does not contain a certain pattern by using - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -invert switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern= --invert -\end_layout - -\begin_layout Standard -Finally, -\series bold -patscan_seq -\series default - can also scan for patterns in a given genome sequence, instead of sequences - in the stream, using the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch: -\end_layout - -\begin_layout LyX-Code -patscan --pattern= --genome= -\end_layout - -\begin_layout Subsection -How to use BLAT for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Standard -Sequences in the data stream can be matched against supported genomes using - -\series bold -blat_seq -\series default - which is a biopiece using BLAT as the name might suggest. - Currently only Mouse and Human genomes are available and it is not possible - to use OOC files since there is still a need for a local repository for - genome files. - Otherwise it is just: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | blat_seq --genome= -\end_layout - -\begin_layout Standard -The search results can then be written to file with -\series bold -write_psl -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-PSL" - -\end_inset - -) or -\series bold -write_bed -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-BED" - -\end_inset - -) allthough with -\series bold -write_bed -\series default - some information will be lost). - It is also possible to plot chromosome distribution of the search results - using -\series bold -plot_chrdist -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-chrdist" - -\end_inset - -) or the distribution of the match lengths using -\series bold -plot_lendist -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-lendist" - -\end_inset - -) or a karyogram with the hits using -\series bold -plot_karyogram -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-karyogram" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to use BLAST for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Standard -Two biopieces exist for blasting sequences: -\series bold -create_blast_db -\series default - is used to create the BLAST database required for BLAST which is queried - using the biopiece -\series bold -blast_seq -\series default -. - So in order to create a BLAST database from sequences in the data stream - you simple run: -\end_layout - -\begin_layout LyX-Code -... - | create_blast_db --database=my_database --no_stream -\end_layout - -\begin_layout Standard -The type of sequence to use for the database is automagically determined - by -\series bold -create_blast_db -\series default -, but don't have a mixture of peptide and nucleic acids sequences in the - stream. - The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database switch takes a path as argument, but will default to 'blastdb_ if not set. -\end_layout - -\begin_layout Standard -The resulting database can now be queried with sequences in another data - stream using -\series bold -blast_seq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | blast_seq --database=my_database -\end_layout - -\begin_layout Standard -Again, the sequence type is determined automagically and the appropriate - BLAST program is guessed (see below table), however, the program name can - be overruled with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -program switch. -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Standard -Subject sequence -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Query sequence -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Program guess -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastn -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastp -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastx -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -tblastn -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -Finally, it is also possible to use -\series bold -blast_seq -\series default - for blasting sequences agains a preformatted genome using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch instead of the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database switch: -\end_layout - -\begin_layout LyX-Code -... - | blast_seq --genome= -\end_layout - -\begin_layout Subsection -How to use Vmatch for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Standard -The powerful suffix array software package Vmatch -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.vmatch.de/" - -\end_inset - - -\end_layout - -\end_inset - - can be used for exact mapping of sequences against indexed genomes using - the biopiece -\series bold -vmatch_seq -\series default -, which will e.g. - map 700000 ESTs to the human genome locating all 160 mio hits in less than - an hour. - Only nucleotide sequences and sequences longer than 11 nucleotides will - be mapped. - It is recommended that sequences consisting of mostly one nucleotide type - are removed. - This can be done with the -\series bold -analyze_seq -\series default - biopiece -\begin_inset LatexCommand eqref -reference "sub:How-to-analyze" - -\end_inset - -. -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= -\end_layout - -\begin_layout Standard -It is also possible to allow for mismatches using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -hamming_dist switch. - So to allow for 2 mismatches: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=2 -\end_layout - -\begin_layout Standard -Or to allow for 10% mismathing nucleotides: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=10p -\end_layout - -\begin_layout Standard -To allow both indels and mismatches use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -edit_dist switch. - So to allow for one mismatch or one indel: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=1 -\end_layout - -\begin_layout Standard -Or to allow for 5% indels or mismatches: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=5p -\end_layout - -\begin_layout Standard -Note that using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -hamming_dist or -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -edit_dist greatly slows down vmatch considerably --- use with care. -\end_layout - -\begin_layout Standard -The resulting SCORE key can be replaced to hold the number of genome matches - of a given sequence (multi-mappers) is the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -count switch is given. -\end_layout - -\begin_layout Subsection -How to find all matches between sequences? -\begin_inset LatexCommand label -name "sub:How-to-find-matches" - -\end_inset - - -\end_layout - -\begin_layout Standard -All matches between two sequences can be determined with the biopiece -\series bold -match_seq -\series default -. - The match finding engine underneath the hood of -\series bold -match_seq -\series default - is the super fast suffix tree program MUMmer -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://mummer.sourceforge.net/" - -\end_inset - - -\end_layout - -\end_inset - -, which will locate all forward and reverse matches between huge sequences - in a matter of minutes (if the repeat count is not too high and if the - word size used is appropriate). - Matching two -\emph on -Helicobacter pylori -\emph default - genomes (1.7Mbp) takes around 10 seconds: -\end_layout - -\begin_layout LyX-Code -... - | match_seq --word_size=20 --direction=both -\end_layout - -\begin_layout Standard -The output from -\series bold -match_seq -\series default - can be used to generate a dot plot with -\series bold -plot_matches -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-generate-dotplot" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to align sequences? -\begin_inset LatexCommand label -name "sub:How-to-align" - -\end_inset - - -\end_layout - -\begin_layout Standard -Sequences in the stream can be aligned with the -\series bold -align_seq -\series default - biopiece that uses Muscle -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.drive5.com/muscle/muscle.html" - -\end_inset - - -\end_layout - -\end_inset - - as aligment engine. - Currently you cannot change any of the Muscle alignment parameters and - -\series bold -align_seq -\series default - will create an alignment based on the defaults (which are really good!): -\end_layout - -\begin_layout LyX-Code -... - | align_seq -\end_layout - -\begin_layout Standard -The aligned output can be written to file in FASTA format using -\series bold -write_fasta -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-fasta" - -\end_inset - -) or in pretty text using -\series bold -write_align -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-alignment" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to create a weight matrix? -\end_layout - -\begin_layout Standard -If you want a weight matrix to show the sequence composition of a stack - of sequences you can use the biopiece create_weight_matrix: -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix -\end_layout - -\begin_layout Standard -The result can be output in percent using the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -percent switch: -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix --percent -\end_layout - -\begin_layout Standard -The weight matrix can be written as tabular output with -\series bold -write_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -) after removeing the records containing SEQ with -\series bold -grab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -): -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix | grab --invert --keys=SEQ --keys_only -\end_layout - -\begin_layout LyX-Code -| write_tab --no_stream -\end_layout - -\begin_layout Standard -The V0 column will hold the residue, while the rest of the columns will - hold the frequencies for each sequence position. -\end_layout - -\begin_layout Section -Plotting -\end_layout - -\begin_layout Standard -There exists several biopieces for plotting. - Some of these are based on GNUplot -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.gnuplot.info/" - -\end_inset - - -\end_layout - -\end_inset - -, which is an extremely powerful platform to generate all sorts of plots - and even though GNUplot has quite a steep learning curve, the biopieces - utilizing GNUplot are simple to use. - GNUplot is able to output a lot of different formats (called terminals - in GNUplot), but the biopieces focusses on three formats only: -\end_layout - -\begin_layout Enumerate -The 'dumb' terminal is default to the GNUplot based biopieces and will output - a plot in crude ASCII text (Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dumb-terminal" - -\end_inset - -). - This is quite nice for a quick and dirty plot to get an overview of your - data . -\end_layout - -\begin_layout Enumerate -The 'post' or 'postscript' terminal output postscript code which is publication - grade graphics that can be viewed with applications such as Ghostview, - Photoshop, and Preview. -\end_layout - -\begin_layout Enumerate -The 'svg' terminal output's scalable vector graphics (SVG) which is a vector - based format. - SVG is great because you can edit the resulting plot using Photoshop or - Inkscape -\begin_inset Foot -status collapsed - -\begin_layout Standard -Inkscape is a really handy drawing program that is free and open source. - Availble at -\begin_inset LatexCommand htmlurl -target "http://www.inkscape.org" - -\end_inset - - -\end_layout - -\end_inset - - if you want to add additional labels, captions, arrows, and so on and then - save the result in different formats, such as postscript without loosing - resolution. -\end_layout - -\begin_layout Standard -The biopieces for plotting that are not based on GNUplot only output SVG - (that may change in the future). -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename lendist_ascii.png - lyxscale 70 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Dumb-terminal" - -\end_inset - -Dumb terminal -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -The output of a length distribution plot in the default 'dumb terminal' - to the terminal window. - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a histogram? -\begin_inset LatexCommand label -name "How-to-plot-histogram" - -\end_inset - - -\end_layout - -\begin_layout Standard -A generic histogram for a given value can be plotted with the biopiece -\series bold -plot_histogram -\series default - (Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Histogram" - -\end_inset - -): -\end_layout - -\begin_layout LyX-Code -... - | plot_histogram --key=TISSUE --no_stream -\end_layout - -\begin_layout Standard -(Figure missing) -\end_layout - -\begin_layout Standard -\noindent -\align left -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename histogram.png - lyxscale 70 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Histogram" - -\end_inset - -Histogram -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a length distribution? -\begin_inset LatexCommand label -name "sub:How-to-plot-lendist" - -\end_inset - - -\end_layout - -\begin_layout Standard -Plotting of length distributions, weather sequence lengths, patterns lengths, - hit lengths, -\emph on -etc. - -\emph default - is a really handy thing and can be done with the the biopiece -\series bold -plot_lendist -\series default -. - If you have a file with FASTA entries and want to plot the length distribution - you do it like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_seq -\end_layout - -\begin_layout LyX-Code -| plot_lendist --key=SEQ_LEN --no_stream -\end_layout - -\begin_layout Standard -The result will be written to the default dumb terminal and will look like - Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dumb-terminal" - -\end_inset - -. -\end_layout - -\begin_layout Standard -If you instead want the result in postscript format you can do: -\end_layout - -\begin_layout LyX-Code -... - | plot_lendist --key=SEQ_LEN --terminal=post --result_out=file.ps -\end_layout - -\begin_layout Standard -That will generate the plot and save it to file, but not interrupt the data - stream which can then be used in further analysis. - You can also save the plot implicetly using '>', however, it is then important - to terminate the stream with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch: -\end_layout - -\begin_layout LyX-Code -... - | plot_lendist --key=SEQ_LEN --terminal=post --no_stream > file.ps -\end_layout - -\begin_layout Standard -The resulting plot can be seen in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Length-distribution" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard - -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename lendist.ps - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Length-distribution" - -\end_inset - -Length distribution -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Length distribution of 630 piRNA like RNAs. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a chromosome distribution? -\begin_inset LatexCommand label -name "sub:How-to-plot-chrdist" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you have the result of a sequence search against a multi chromosome genome, - it is very practical to be able to plot the distribution of search hits - on the different chromosomes. - This can be done with -\series bold -plot_chrdist -\series default -: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | blat_genome | plot_chrdist --no_stream -\end_layout - -\begin_layout Standard -The above example will result in a crude plot using the 'dumb' terminal, - and if you want to mess around with the results from the BLAT search you - probably want to save the result to file first (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-PSL" - -\end_inset - -). - To plot the chromosome distribution from the saved search result you can - do: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in=file.bed | plot_chrdist --terminal=post --result_out=plot.ps -\end_layout - -\begin_layout Standard -That will result in the output show in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Chromosome-distribution" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard - -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename chrdist.ps - lyxscale 50 - width 12cm - rotateAngle 90 - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Chromosome-distribution" - -\end_inset - -Chromosome distribution -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to generate a dotplot? -\begin_inset LatexCommand label -name "sub:How-to-generate-dotplot" - -\end_inset - - -\end_layout - -\begin_layout Standard -A dotplot is a powerful way to get an overview of the size and location - of sequence insertions, deletions, and duplications between two sequences. - Generating a dotplot with biopieces is a two step process where you initially - find all matches between two sequences using the tool -\series bold -match_seq -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-find-matches" - -\end_inset - -) and plot the resulting matches with -\series bold -plot_matches -\series default -. - Matching and plotting two -\emph on -Helicobacter pylori -\emph default - genomes (1.7Mbp) takes around 10 seconds: -\end_layout - -\begin_layout LyX-Code -... - | match_seq | plot_matches --terminal=post --result_out=plot.ps -\end_layout - -\begin_layout Standard -The resulting dotplot is in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dotplot" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename dotplot.ps - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Dotplot" - -\end_inset - -Dotplot -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Forward matches are displayed in green while reverse matches are displayed - in red. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a sequence logo? -\end_layout - -\begin_layout Standard -Sequence logos can be generate with -\series bold -plot_seqlogo -\series default -. - The sequnce type is determined automagically and an entropy scale of 2 - bits and 4 bits is used for nucleotide and peptide sequences, respectively -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand htmlurl -target "http://www.ccrnp.ncifcrf.gov/~toms/paper/hawaii/latex/node5.html" - -\end_inset - - -\end_layout - -\end_inset - -. -\end_layout - -\begin_layout LyX-Code -... - | plot_seqlogo --no_stream --result_out=seqlogo.svg -\end_layout - -\begin_layout Standard -An example of a sequence logo can be seen in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Sequence-logo" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename seqlogo.png - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Sequence-logo" - -\end_inset - -Sequence logo -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a karyogram? -\begin_inset LatexCommand label -name "sub:How-to-plot-karyogram" - -\end_inset - - -\end_layout - -\begin_layout Standard -To plot search hits on genomes use -\series bold -plot_karyogram -\series default -, which will output a nice karyogram in SVG graphics: -\end_layout - -\begin_layout LyX-Code -... - | plot_karyogram --result_out=karyogram.svg -\end_layout - -\begin_layout Standard -The banding data is taken from the UCSC genome browser database and currently - only Human and Mouse is supported. - Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Karyogram" - -\end_inset - - shows the distribution of piRNA like RNAs matched to the Human genome. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename karyogram.png - lyxscale 35 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Karyogram" - -\end_inset - -Karyogram -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Hits from a search of piRNA like RNAs in the Human genome is displayed as - short horizontal bars. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Uploading Results -\end_layout - -\begin_layout Subsection -How do I display my results in the UCSC Genome Browser? -\end_layout - -\begin_layout Standard -Results from the list of biopieces below can be uploaded directly to a local - mirror of the UCSC Genome Browser using the biopiece -\series bold -upload_to_ucsc -\series default -: -\end_layout - -\begin_layout Itemize -patscan_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Itemize -blat_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Itemize -blast_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Itemize -vmatch_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Standard -The syntax for uploading data the most simple way requires two mandatory - switches: -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database, which is the UCSC database name (such as hg18, mm9, etc.) and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -table which should be the users initials followed by an underscore and a - short description of the data: -\end_layout - -\begin_layout LyX-Code -... - | upload_to_ucsc --database=hg18 --table=mah_snoRNAs -\end_layout - -\begin_layout Standard -The -\series bold -upload_to_ucsc -\series default - biopiece modifies the users ~/ucsc/my_tracks.ra file automagically (a backup - is created with the name ~/ucsc/my_tracks.ra~) with default values that - can be overridden using the following switches: -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -short_label - Short label for track - Default=database->table -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -long_label - Long label for track - Default=database->table -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -group - Track group name - Default= -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -priority - Track display priority - Default=1 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -color - Track color - Default=147,73,42 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -chunk_size - Chunks for loading - Default=10000000 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -visibility - Track visibility - Default=pack -\end_layout - -\begin_layout Standard -Also, data in BED or PSL format can be uploaded with -\series bold -upload_to_ucsc -\series default - as long as these reference to genomes and chromosomes existing in the UCSC - Genome Browser: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | upload_to_ucsc ... -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -read_psl --data_in= | upload_to_ucsc ... -\end_layout - -\begin_layout Section -Power Scripting -\end_layout - -\begin_layout Standard -It is possible to do commandline scripting of biopiece records using Perl. - Because a biopiece record essentially is a hash structure, you can pass - records to -\series bold -bioscript -\series default - command, which is a wrapper around the Perl executable that allows direct - manipulations of the records using the power of Perl. -\end_layout - -\begin_layout Standard -In the below example we replace in all records the value to the CHR key - with a forthrunning number: -\end_layout - -\begin_layout LyX-Code -... - | bioscript 'while($r=get_record( -\backslash -*STDIN)){$r->{CHR}=$i++; put_record($r)}' -\end_layout - -\begin_layout Standard -Something more useful would probably be to create custom FASTA headers. - E.g. - if we read in a BED file, lookup the genomic sequence, create a custom - FASTA header with -\series bold -bioscript -\series default - and output FASTA entries: -\end_layout - -\begin_layout LyX-Code -... - | bioscript 'while($r=get_record( -\backslash -*STDIN)){$r->{SEQ_NAME}= // -\end_layout - -\begin_layout LyX-Code -join("_",$r->{CHR},$r->{CHR_BEG},$r->{CHR_END}); put_record($r)}' -\end_layout - -\begin_layout Standard -And the output: -\end_layout - -\begin_layout LyX-Code ->chr2L_21567527_21567550 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_693380_693403 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_13859534_13859557 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_9005090_9005113 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_2106825_2106848 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_14649031_14649054 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout Section -Trouble shooting -\end_layout - -\begin_layout Standard -Shoot the messenger! -\end_layout - -\begin_layout Section -\start_of_appendix -Keys -\begin_inset LatexCommand label -name "sec:Keys" - -\end_inset - - -\end_layout - -\begin_layout Standard -HIT -\end_layout - -\begin_layout Standard -HIT_BEG -\end_layout - -\begin_layout Standard -HIT_END -\end_layout - -\begin_layout Standard -HIT_LEN -\end_layout - -\begin_layout Standard -HIT_NAME -\end_layout - -\begin_layout Standard -PATTERN -\end_layout - -\begin_layout Section -Switches -\begin_inset LatexCommand label -name "sec:Switches" - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_in -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -data_in -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num -\end_layout - -\begin_layout Section -scan_for_matches README -\begin_inset LatexCommand label -name "sec:scan_for_matches-README" - -\end_inset - - -\end_layout - -\begin_layout LyX-Code - scan_for_matches: -\end_layout - -\begin_layout LyX-Code - A Program to Scan Nucleotide or Protein Sequences for Matching Patterns -\end_layout - -\begin_layout LyX-Code - Ross Overbeek -\end_layout - -\begin_layout LyX-Code - MCS -\end_layout - -\begin_layout LyX-Code - Argonne National Laboratory -\end_layout - -\begin_layout LyX-Code - Argonne, IL 60439 -\end_layout - -\begin_layout LyX-Code - USA -\end_layout - -\begin_layout LyX-Code -Scan_for_matches is a utility that we have written to search for -\end_layout - -\begin_layout LyX-Code -patterns in DNA and protein sequences. - I wrote most of the code, -\end_layout - -\begin_layout LyX-Code -although David Joerg and Morgan Price wrote sections of an -\end_layout - -\begin_layout LyX-Code -earlier version. - The whole notion of pattern matching has a rich -\end_layout - -\begin_layout LyX-Code -history, and we borrowed liberally from many sources. - However, it is -\end_layout - -\begin_layout LyX-Code -worth noting that we were strongly influenced by the elegant tools -\end_layout - -\begin_layout LyX-Code -developed and distributed by David Searls. - My intent is to make the -\end_layout - -\begin_layout LyX-Code -existing tool available to anyone in the research community that might -\end_layout - -\begin_layout LyX-Code -find it useful. - I will continue to try to fix bugs and make suggested -\end_layout - -\begin_layout LyX-Code -enhancements, at least until I feel that a superior tool exists. -\end_layout - -\begin_layout LyX-Code -Hence, I would appreciate it if all bug reports and suggestions are -\end_layout - -\begin_layout LyX-Code -directed to me at Overbeek@mcs.anl.gov. - -\end_layout - -\begin_layout LyX-Code -I will try to log all bug fixes and report them to users that send me -\end_layout - -\begin_layout LyX-Code -their email addresses. - I do not require that you give me your name -\end_layout - -\begin_layout LyX-Code -and address. - However, if you do give it to me, I will try to notify -\end_layout - -\begin_layout LyX-Code -you of serious problems as they are discovered. -\end_layout - -\begin_layout LyX-Code -Getting Started: -\end_layout - -\begin_layout LyX-Code - The distribution should contain at least the following programs: -\end_layout - -\begin_layout LyX-Code - README - This document -\end_layout - -\begin_layout LyX-Code - ggpunit.c - One of the two source files -\end_layout - -\begin_layout LyX-Code - scan_for_matches.c - The second source file -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - run_tests - A perl script to test things -\end_layout - -\begin_layout LyX-Code - show_hits - A handy perl script -\end_layout - -\begin_layout LyX-Code - test_dna_input - Test sequences for DNA -\end_layout - -\begin_layout LyX-Code - test_dna_patterns - Test patterns for DNA scan -\end_layout - -\begin_layout LyX-Code - test_output - Desired output from test -\end_layout - -\begin_layout LyX-Code - test_prot_input - Test protein sequences -\end_layout - -\begin_layout LyX-Code - test_prot_patterns - Test patterns for proteins -\end_layout - -\begin_layout LyX-Code - testit - a perl script used for test -\end_layout - -\begin_layout LyX-Code - Only the first three files are required. - The others are useful, -\end_layout - -\begin_layout LyX-Code - but only if you have Perl installed on your system. - If you do -\end_layout - -\begin_layout LyX-Code - have Perl, I suggest that you type -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - which perl -\end_layout - -\begin_layout LyX-Code - to find out where it installed. - On my system, I get the following -\end_layout - -\begin_layout LyX-Code - response: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - clone% which perl -\end_layout - -\begin_layout LyX-Code - /usr/local/bin/perl -\end_layout - -\begin_layout LyX-Code - indicating that Perl is installed in /usr/local/bin. - Anyway, once -\end_layout - -\begin_layout LyX-Code - you know where it is installed, edit the first line of files -\end_layout - -\begin_layout LyX-Code - testit -\end_layout - -\begin_layout LyX-Code - show_hits -\end_layout - -\begin_layout LyX-Code - replacing /usr/local/bin/perl with the appropriate location. - I -\end_layout - -\begin_layout LyX-Code - will assume that you can do this, although it is not critical (it -\end_layout - -\begin_layout LyX-Code - is needed only to test the installation and to use the "show_hits" -\end_layout - -\begin_layout LyX-Code - utility). - Perl is not required to actually install and run -\end_layout - -\begin_layout LyX-Code - scan_for_matches. - -\end_layout - -\begin_layout LyX-Code - If you do not have Perl, I suggest you get it and install it (it -\end_layout - -\begin_layout LyX-Code - is a wonderful utility). - Information about Perl and how to get it -\end_layout - -\begin_layout LyX-Code - can be found in the book "Programming Perl" by Larry Wall and -\end_layout - -\begin_layout LyX-Code - Randall L. - Schwartz, published by O'Reilly & Associates, Inc. -\end_layout - -\begin_layout LyX-Code - To get started, you will need to compile the program. - I do this -\end_layout - -\begin_layout LyX-Code - using -\end_layout - -\begin_layout LyX-Code - gcc -O -o scan_for_matches ggpunit.c scan_for_matches.c -\end_layout - -\begin_layout LyX-Code - If you do not use GNU C, use -\end_layout - -\begin_layout LyX-Code - cc -O -DCC -o scan_for_matches ggpunit.c scan_for_matches.c -\end_layout - -\begin_layout LyX-Code - which works on my Sun. - -\end_layout - -\begin_layout LyX-Code - Once you have compiled scan_for_matches, you can verify that it -\end_layout - -\begin_layout LyX-Code - works with -\end_layout - -\begin_layout LyX-Code - clone% run_tests tmp -\end_layout - -\begin_layout LyX-Code - clone% diff tmp test_output -\end_layout - -\begin_layout LyX-Code - You may get a few strange lines of the sort -\end_layout - -\begin_layout LyX-Code - clone% run_tests tmp -\end_layout - -\begin_layout LyX-Code - rm: tmp: No such file or directory -\end_layout - -\begin_layout LyX-Code - clone% diff tmp test_output -\end_layout - -\begin_layout LyX-Code - These should cause no concern. - However, if the "diff" shows that -\end_layout - -\begin_layout LyX-Code - tmp and test_output are different, contact me (you have a -\end_layout - -\begin_layout LyX-Code - problem). - -\end_layout - -\begin_layout LyX-Code - You should now be able to use scan_for_matches by following the -\end_layout - -\begin_layout LyX-Code - instructions given below (which is all the normal user should have -\end_layout - -\begin_layout LyX-Code - to understand, once things are installed properly). -\end_layout - -\begin_layout LyX-Code - ============================================================== -\end_layout - -\begin_layout LyX-Code -How to run scan_for_matches: -\end_layout - -\begin_layout LyX-Code - To run the program, you type need to create two files -\end_layout - -\begin_layout LyX-Code - 1. - the first file contains the pattern you wish to scan for; I'll -\end_layout - -\begin_layout LyX-Code - call this file pat_file in what follows (but any name is ok) -\end_layout - -\begin_layout LyX-Code - 2. - the second file contains a set of sequences to scan. - These -\end_layout - -\begin_layout LyX-Code - should be in "fasta format". - Just look at the contents of -\end_layout - -\begin_layout LyX-Code - test_dna_input to see examples of this format. - Basically, -\end_layout - -\begin_layout LyX-Code - each sequence begins with a line of the form -\end_layout - -\begin_layout LyX-Code - >sequence_id -\end_layout - -\begin_layout LyX-Code - and is followed by one or more lines containing the sequence. -\end_layout - -\begin_layout LyX-Code - Once these files have been created, you just use -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file < input_file -\end_layout - -\begin_layout LyX-Code - to scan all of the input sequences for the given pattern. - As an -\end_layout - -\begin_layout LyX-Code - example, suppose that pat_file contains a single line of the form -\end_layout - -\begin_layout LyX-Code - p1=4...7 3...8 ~p1 -\end_layout - -\begin_layout LyX-Code - Then, -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - should produce two "hits". - When I run this on my machine, I get -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - >tst1:[6,27] -\end_layout - -\begin_layout LyX-Code - cguaacc ggttaacc gguuacg -\end_layout - -\begin_layout LyX-Code - >tst2:[6,27] -\end_layout - -\begin_layout LyX-Code - CGUAACC GGTTAACC GGUUACG -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code -Simple Patterns Built by Matching Ranges and Reverse Complements -\end_layout - -\begin_layout LyX-Code - Let me first explain this simple pattern: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - p1=4...7 3...8 ~p1 -\end_layout - -\begin_layout LyX-Code - The pattern consists of three "pattern units" separated by spaces. -\end_layout - -\begin_layout LyX-Code - The first pattern unit is -\end_layout - -\begin_layout LyX-Code - p1=4...7 -\end_layout - -\begin_layout LyX-Code - which means "match 4 to 7 characters and call them p1". - The -\end_layout - -\begin_layout LyX-Code - second pattern unit is -\end_layout - -\begin_layout LyX-Code - 3...8 -\end_layout - -\begin_layout LyX-Code - which means "then match 3 to 8 characters". - The last pattern unit -\end_layout - -\begin_layout LyX-Code - is -\end_layout - -\begin_layout LyX-Code - ~p1 -\end_layout - -\begin_layout LyX-Code - which means "match the reverse complement of p1". - The first -\end_layout - -\begin_layout LyX-Code - reported hit is shown as -\end_layout - -\begin_layout LyX-Code - >tst1:[6,27] -\end_layout - -\begin_layout LyX-Code - cguaacc ggttaacc gguuacg -\end_layout - -\begin_layout LyX-Code - which states that characters 6 through 27 of sequence tst1 were -\end_layout - -\begin_layout LyX-Code - matched. - "cguaac" matched the first pattern unit, "ggttaacc" the -\end_layout - -\begin_layout LyX-Code - second, and "gguuacg" the third. - This is an example of a common -\end_layout - -\begin_layout LyX-Code - type of pattern used to search for sections of DNA or RNA that -\end_layout - -\begin_layout LyX-Code - would fold into a hairpin loop. -\end_layout - -\begin_layout LyX-Code -Searching Both Strands -\end_layout - -\begin_layout LyX-Code - Now for a short aside: scan_for_matches only searched the -\end_layout - -\begin_layout LyX-Code - sequences in the input file; it did not search the opposite -\end_layout - -\begin_layout LyX-Code - strand. - With a pattern of the sort we just used, there is not -\end_layout - -\begin_layout LyX-Code - need o search the opposite strand. - However, it is normally the -\end_layout - -\begin_layout LyX-Code - case that you will wish to search both the sequence and the -\end_layout - -\begin_layout LyX-Code - opposite strand (i.e., the reverse complement of the sequence). -\end_layout - -\begin_layout LyX-Code - To do that, you would just use the "-c" command line. - For example, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - Hits on the opposite strand will show a beginning location greater -\end_layout - -\begin_layout LyX-Code - than te end location of the match. -\end_layout - -\begin_layout LyX-Code -Defining Pairing Rules and Allowing Mismatches, Insertions, and Deletions -\end_layout - -\begin_layout LyX-Code - Let us stop now and ask "What additional features would one need to -\end_layout - -\begin_layout LyX-Code - really find the kinds of loop structures that characterize tRNAs, -\end_layout - -\begin_layout LyX-Code - rRNAs, and so forth?" I can immediately think of two: -\end_layout - -\begin_layout LyX-Code - a) you will need to be able to allow non-standard pairings -\end_layout - -\begin_layout LyX-Code - (those other than G-C and A-U), and -\end_layout - -\begin_layout LyX-Code - b) you will need to be able to tolerate some number of -\end_layout - -\begin_layout LyX-Code - mismatches and bulges. -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - Let me first show you how to handle non-standard "rules for -\end_layout - -\begin_layout LyX-Code - pairing in reverse complements". - Consider the following pattern, -\end_layout - -\begin_layout LyX-Code - which I show as two line (you may use as many lines as you like in -\end_layout - -\begin_layout LyX-Code - forming a pattern, although you can only break a pattern at points -\end_layout - -\begin_layout LyX-Code - where space would be legal): -\end_layout - -\begin_layout LyX-Code - r1={au,ua,gc,cg,gu,ug,ga,ag} -\end_layout - -\begin_layout LyX-Code - p1=2...3 0...4 p2=2...5 1...5 r1~p2 0...4 ~p1 -\end_layout - -\begin_layout LyX-Code - The first "pattern unit" does not actually match anything; rather, -\end_layout - -\begin_layout LyX-Code - it defines a "pairing rule" in which standard pairings are -\end_layout - -\begin_layout LyX-Code - allowed, as well as G-A and A-G (in case you wondered, Us and Ts -\end_layout - -\begin_layout LyX-Code - and upper and lower case can be used interchangably; for example -\end_layout - -\begin_layout LyX-Code - r1={AT,UA,gc,cg} could be used to define the "standard rule" for -\end_layout - -\begin_layout LyX-Code - pairings). - The second line consists of six pattern units which -\end_layout - -\begin_layout LyX-Code - may be interpreted as follows: -\end_layout - -\begin_layout LyX-Code - p1=2...3 match 2 or 3 characters (call it p1) -\end_layout - -\begin_layout LyX-Code - 0...4 match 0 to 4 characters -\end_layout - -\begin_layout LyX-Code - p2=2...5 match 2 to 5 characters (call it p2) -\end_layout - -\begin_layout LyX-Code - 1...5 match 1 to 5 characters -\end_layout - -\begin_layout LyX-Code - r1~p2 match the reverse complement of p2, -\end_layout - -\begin_layout LyX-Code - allowing G-A and A-G pairs -\end_layout - -\begin_layout LyX-Code - 0...4 match 0 to 4 characters -\end_layout - -\begin_layout LyX-Code - ~p1 match the reverse complement of p1 -\end_layout - -\begin_layout LyX-Code - allowing only G-C, C-G, A-T, and T-A pairs -\end_layout - -\begin_layout LyX-Code - Thus, r1~p2 means "match the reverse complement of p2 using rule r1". -\end_layout - -\begin_layout LyX-Code - Now let us consider the issue of tolerating mismatches and bulges. -\end_layout - -\begin_layout LyX-Code - You may add a "qualifier" to the pattern unit that gives the -\end_layout - -\begin_layout LyX-Code - tolerable number of "mismatches, deletions, and insertions". -\end_layout - -\begin_layout LyX-Code - Thus, -\end_layout - -\begin_layout LyX-Code - p1=10...10 3...8 ~p1[1,2,1] -\end_layout - -\begin_layout LyX-Code - means that the third pattern unit must match 10 characters, -\end_layout - -\begin_layout LyX-Code - allowing one "mismatch" (a pairing other than G-C, C-G, A-T, or -\end_layout - -\begin_layout LyX-Code - T-A), two deletions (a deletion is a character that occurs in p1, -\end_layout - -\begin_layout LyX-Code - but has been "deleted" from the string matched by ~p1), and one -\end_layout - -\begin_layout LyX-Code - insertion (an "insertion" is a character that occurs in the string -\end_layout - -\begin_layout LyX-Code - matched by ~p1, but not for which no corresponding character -\end_layout - -\begin_layout LyX-Code - occurs in p1). - In this case, the pattern would match -\end_layout - -\begin_layout LyX-Code - ACGTACGTAC GGGGGGGG GCGTTACCT -\end_layout - -\begin_layout LyX-Code - which is, you must admit, a fairly weak loop. - It is common to -\end_layout - -\begin_layout LyX-Code - allow mismatches, but you will find yourself using insertions and -\end_layout - -\begin_layout LyX-Code - deletions much more rarely. - In any event, you should note that -\end_layout - -\begin_layout LyX-Code - allowing mismatches, insertions, and deletions does force the -\end_layout - -\begin_layout LyX-Code - program to try many additional possible pairings, so it does slow -\end_layout - -\begin_layout LyX-Code - things down a bit. -\end_layout - -\begin_layout LyX-Code -How Patterns Are Matched -\end_layout - -\begin_layout LyX-Code - Now is as good a time as any to discuss the basic flow of control -\end_layout - -\begin_layout LyX-Code - when matching patterns. - Recall that a "pattern" is a sequence of -\end_layout - -\begin_layout LyX-Code - "pattern units". - Suppose that the pattern units were -\end_layout - -\begin_layout LyX-Code - u1 u2 u3 u4 ... - un -\end_layout - -\begin_layout LyX-Code - The scan of a sequence S begins by setting the current position -\end_layout - -\begin_layout LyX-Code - to 1. - Then, an attempt is made to match u1 starting at the -\end_layout - -\begin_layout LyX-Code - current position. - Each attempt to match a pattern unit can -\end_layout - -\begin_layout LyX-Code - succeed or fail. - If it succeeds, then an attempt is made to match -\end_layout - -\begin_layout LyX-Code - the next unit. - If it fails, then an attempt is made to find an -\end_layout - -\begin_layout LyX-Code - alternative match for the immediately preceding pattern unit. - If -\end_layout - -\begin_layout LyX-Code - this succeeds, then we proceed forward again to the next unit. - If -\end_layout - -\begin_layout LyX-Code - it fails we go back to the preceding unit. - This process is called -\end_layout - -\begin_layout LyX-Code - "backtracking". - If there are no previous units, then the current -\end_layout - -\begin_layout LyX-Code - position is incremented by one, and everything starts again. - This -\end_layout - -\begin_layout LyX-Code - proceeds until either the current position goes past the end of -\end_layout - -\begin_layout LyX-Code - the sequence or all of the pattern units succeed. - On success, -\end_layout - -\begin_layout LyX-Code - scan_for_matches reports the "hit", the current position is set -\end_layout - -\begin_layout LyX-Code - just past the hit, and an attempt is made to find another hit. -\end_layout - -\begin_layout LyX-Code - If you wish to limit the scan to simply finding a maximum of, say, -\end_layout - -\begin_layout LyX-Code - 10 hits, you can use the -n option (-n 10 would set the limit to -\end_layout - -\begin_layout LyX-Code - 10 reported hits). - For example, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c -n 1 pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - would search for just the first hit (and would stop searching the -\end_layout - -\begin_layout LyX-Code - current sequences or any that follow in the input file). -\end_layout - -\begin_layout LyX-Code -Searching for repeats: -\end_layout - -\begin_layout LyX-Code - In the last section, I discussed almost all of the details -\end_layout - -\begin_layout LyX-Code - required to allow you to look for repeats. - Consider the following -\end_layout - -\begin_layout LyX-Code - set of patterns: -\end_layout - -\begin_layout LyX-Code - p1=6...6 3...8 p1 (find exact 6 character repeat separated -\end_layout - -\begin_layout LyX-Code - by to 8 characters) -\end_layout - -\begin_layout LyX-Code - p1=6...6 3..8 p1[1,0,0] (allow one mismatch) -\end_layout - -\begin_layout LyX-Code - p1=3...3 p1[1,0,0] p1[1,0,0] p1[1,0,0] -\end_layout - -\begin_layout LyX-Code - (match 12 characters that are the remains -\end_layout - -\begin_layout LyX-Code - of a 3-character sequence occurring 4 times) -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - p1=4...8 0...3 p2=6...8 p1 0...3 p2 -\end_layout - -\begin_layout LyX-Code - (This would match things like -\end_layout - -\begin_layout LyX-Code - ATCT G TCTTT ATCT TG TCTTT -\end_layout - -\begin_layout LyX-Code - ) -\end_layout - -\begin_layout LyX-Code -Searching for particular sequences: -\end_layout - -\begin_layout LyX-Code - Occasionally, one wishes to match a specific, known sequence. -\end_layout - -\begin_layout LyX-Code - In such a case, you can just give the sequence (along with an -\end_layout - -\begin_layout LyX-Code - optional statement of the allowable mismatches, insertions, and -\end_layout - -\begin_layout LyX-Code - deletions). - Thus, -\end_layout - -\begin_layout LyX-Code - p1=6...8 GAGA ~p1 (match a hairpin with GAGA as the loop) -\end_layout - -\begin_layout LyX-Code - RRRRYYYY (match 4 purines followed by 4 pyrimidines) -\end_layout - -\begin_layout LyX-Code - TATAA[1,0,0] (match TATAA, allowing 1 mismatch) -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -Matches against a "weight matrix": -\end_layout - -\begin_layout LyX-Code - I will conclude my examples of the types of pattern units -\end_layout - -\begin_layout LyX-Code - available for matching against nucleotide sequences by discussing a -\end_layout - -\begin_layout LyX-Code - crude implemetation of matching using a "weight matrix". - While I -\end_layout - -\begin_layout LyX-Code - am less than overwhelmed with the syntax that I chose, I think that -\end_layout - -\begin_layout LyX-Code - the reader should be aware that I was thinking of generating -\end_layout - -\begin_layout LyX-Code - patterns containing such pattern units automatically from -\end_layout - -\begin_layout LyX-Code - alignments (and did not really plan on typing such things in by -\end_layout - -\begin_layout LyX-Code - hand very often). - Anyway, suppose that you wanted to match a -\end_layout - -\begin_layout LyX-Code - sequence of eight characters. - The "consensus" of these eight -\end_layout - -\begin_layout LyX-Code - characters is GRCACCGS, but the actual "frequencies of occurrence" -\end_layout - -\begin_layout LyX-Code - are given in the matrix below. - Thus, the first character is an A -\end_layout - -\begin_layout LyX-Code - 16% the time and a G 84% of the time. - The second is an A 57% of -\end_layout - -\begin_layout LyX-Code - the time, a C 10% of the time, a G 29% of the time, and a T 4% of -\end_layout - -\begin_layout LyX-Code - the time. - -\end_layout - -\begin_layout LyX-Code - C1 C2 C3 C4 C5 C6 C7 C8 -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - A 16 57 0 95 0 18 0 0 -\end_layout - -\begin_layout LyX-Code - C 0 10 80 0 100 60 0 50 -\end_layout - -\begin_layout LyX-Code - G 84 29 0 0 0 20 100 50 -\end_layout - -\begin_layout LyX-Code - T 0 4 20 5 0 2 0 0 -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - One could use the following pattern unit to search for inexact -\end_layout - -\begin_layout LyX-Code - matches related to such a "weight matrix": -\end_layout - -\begin_layout LyX-Code - {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), -\end_layout - -\begin_layout LyX-Code - (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 -\end_layout - -\begin_layout LyX-Code - This pattern unit will attempt to match exactly eight characters. -\end_layout - -\begin_layout LyX-Code - For each character in the sequence, the entry in the corresponding -\end_layout - -\begin_layout LyX-Code - tuple is added to an accumulated sum. - If the sum is greater than -\end_layout - -\begin_layout LyX-Code - 450, the match succeeds; else it fails. -\end_layout - -\begin_layout LyX-Code - Recently, this feature was upgraded to allow ranges. - Thus, -\end_layout - -\begin_layout LyX-Code - 600 > {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), -\end_layout - -\begin_layout LyX-Code - (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 -\end_layout - -\begin_layout LyX-Code - will work, as well. -\end_layout - -\begin_layout LyX-Code -Allowing Alternatives: -\end_layout - -\begin_layout LyX-Code - Very occasionally, you may wish to allow alternative pattern units -\end_layout - -\begin_layout LyX-Code - (i.e., "match either A or B"). - You can do this using something -\end_layout - -\begin_layout LyX-Code - like -\end_layout - -\begin_layout LyX-Code - ( GAGA | GCGCA) -\end_layout - -\begin_layout LyX-Code - which says "match either GAGA or GCGCA". - You may take -\end_layout - -\begin_layout LyX-Code - alternatives of a list of pattern units, for example -\end_layout - -\begin_layout LyX-Code - (p1=3...3 3...8 ~p1 | p1=5...5 4...4 ~p1 GGG) -\end_layout - -\begin_layout LyX-Code - would match one of two sequences of pattern units. - There is one -\end_layout - -\begin_layout LyX-Code - clumsy aspect of the syntax: to match a list of alternatives, you -\end_layout - -\begin_layout LyX-Code - need to fully the request. - Thus, -\end_layout - -\begin_layout LyX-Code - (GAGA | (GCGCA | TTCGA)) -\end_layout - -\begin_layout LyX-Code - would be needed to try the three alternatives. -\end_layout - -\begin_layout LyX-Code -One Minor Extension -\end_layout - -\begin_layout LyX-Code - Sometimes a pattern will contain a sequence of distinct ranges, -\end_layout - -\begin_layout LyX-Code - and you might wish to limit the sum of the lengths of the matched -\end_layout - -\begin_layout LyX-Code - subsequences. - For example, suppose that you basically wanted to -\end_layout - -\begin_layout LyX-Code - match something like -\end_layout - -\begin_layout LyX-Code - ARRYYTT p1=0...5 GCA[1,0,0] p2=1...6 ~p1 4...8 ~p2 p3=4...10 CCT -\end_layout - -\begin_layout LyX-Code - but that the sum of the lengths of p1, p2, and p3 must not exceed -\end_layout - -\begin_layout LyX-Code - eight characters. - To do this, you could add -\end_layout - -\begin_layout LyX-Code - length(p1+p2+p3) < 9 -\end_layout - -\begin_layout LyX-Code - as the last pattern unit. - It will just succeed or fail (but does -\end_layout - -\begin_layout LyX-Code - not actually match any characters in the sequence). -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -Matching Protein Sequences -\end_layout - -\begin_layout LyX-Code - Suppose that the input file contains protein sequences. - In this -\end_layout - -\begin_layout LyX-Code - case, you must invoke scan_for_matches with the "-p" option. - You -\end_layout - -\begin_layout LyX-Code - cannot use aspects of the language that relate directly to -\end_layout - -\begin_layout LyX-Code - nucleotide sequences (e.g., the -c command line option or pattern -\end_layout - -\begin_layout LyX-Code - constructs referring to the reverse complement of a previously -\end_layout - -\begin_layout LyX-Code - matched unit). - -\end_layout - -\begin_layout LyX-Code - You also have two additional constructs that allow you to match -\end_layout - -\begin_layout LyX-Code - either "one of a set of amino acids" or "any amino acid other than -\end_layout - -\begin_layout LyX-Code - those a given set". - For example, -\end_layout - -\begin_layout LyX-Code - p1=0...4 any(HQD) 1...3 notany(HK) p1 -\end_layout - -\begin_layout LyX-Code - would successfully match a string like -\end_layout - -\begin_layout LyX-Code - YWV D AA C YWV -\end_layout - -\begin_layout LyX-Code -Using the show_hits Utility -\end_layout - -\begin_layout LyX-Code - When viewing a large set of complex matches, you might find it -\end_layout - -\begin_layout LyX-Code - convenient to post-process the scan_for_matches output to get a -\end_layout - -\begin_layout LyX-Code - more readable version. - We provide a simple post-processor called -\end_layout - -\begin_layout LyX-Code - "show_hits". - To see its effect, just pipe the output of a -\end_layout - -\begin_layout LyX-Code - scan_for_matches into show_hits: -\end_layout - -\begin_layout LyX-Code - Normal Output: -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp -\end_layout - -\begin_layout LyX-Code - >tst1:[1,28] -\end_layout - -\begin_layout LyX-Code - gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - >tst1:[28,1] -\end_layout - -\begin_layout LyX-Code - gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - >tst2:[2,31] -\end_layout - -\begin_layout LyX-Code - CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - >tst2:[31,2] -\end_layout - -\begin_layout LyX-Code - CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - >tst3:[3,32] -\end_layout - -\begin_layout LyX-Code - gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - >tst3:[32,3] -\end_layout - -\begin_layout LyX-Code - gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - Piped Through show_hits: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp | show_hits -\end_layout - -\begin_layout LyX-Code - tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code - Optionally, you can specify which of the "fields" in the matches -\end_layout - -\begin_layout LyX-Code - you wish to sort on, and show_hits will sort them. - The field -\end_layout - -\begin_layout LyX-Code - numbers start with 0. - So, you might get something like -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp | show_hits 2 1 -\end_layout - -\begin_layout LyX-Code - tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code - In this case, the hits have been sorted on fields 2 and 1 (that is, -\end_layout - -\begin_layout LyX-Code - the third and second matched subfields). -\end_layout - -\begin_layout LyX-Code - show_hits is just one possible little post-processor, and you -\end_layout - -\begin_layout LyX-Code - might well wish to write a customized one for yourself. -\end_layout - -\begin_layout LyX-Code -Reducing the Cost of a Search -\end_layout - -\begin_layout LyX-Code - The scan_for_matches utility uses a fairly simple search, and may -\end_layout - -\begin_layout LyX-Code - consume large amounts of CPU time for complex patterns. - Someday, -\end_layout - -\begin_layout LyX-Code - I may decide to optimize the code. - However, until then, let me -\end_layout - -\begin_layout LyX-Code - mention one useful technique. - -\end_layout - -\begin_layout LyX-Code - When you have a complex pattern that includes a number of varying -\end_layout - -\begin_layout LyX-Code - ranges, imprecise matches, and so forth, it is useful to -\end_layout - -\begin_layout LyX-Code - "pipeline" matches. - That is, form a simpler pattern that can be -\end_layout - -\begin_layout LyX-Code - used to scan through a large database extracting sections that -\end_layout - -\begin_layout LyX-Code - might be matched by the more complex pattern. - Let me illustrate -\end_layout - -\begin_layout LyX-Code - with a short example. - Suppose that you really wished to match the -\end_layout - -\begin_layout LyX-Code - pattern -\end_layout - -\begin_layout LyX-Code - p1=3...5 0...8 ~p1[1,1,0] p2=6...7 3...6 AGC 3...5 RYGC ~p2[1,0,0] -\end_layout - -\begin_layout LyX-Code - In this case, the pattern units AGC 3...5 RYGC can be used to rapidly -\end_layout - -\begin_layout LyX-Code - constrain the overall search. - You can preprocess the overall -\end_layout - -\begin_layout LyX-Code - database using the pattern: -\end_layout - -\begin_layout LyX-Code - 31...31 AGC 3...5 RYGC 7...7 -\end_layout - -\begin_layout LyX-Code - Put the complex pattern in pat_file1 and the simpler pattern in -\end_layout - -\begin_layout LyX-Code - pat_file2. - Then use, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c pat_file2 < nucleotide_database | -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file1 -\end_layout - -\begin_layout LyX-Code - The output will show things like -\end_layout - -\begin_layout LyX-Code - >seqid:[232,280][2,47] -\end_layout - -\begin_layout LyX-Code - matches pieces -\end_layout - -\begin_layout LyX-Code - Then, the actual section of the sequence that was matched can be -\end_layout - -\begin_layout LyX-Code - easily computed as [233,278] (remember, the positions start from -\end_layout - -\begin_layout LyX-Code - 1, not 0). -\end_layout - -\begin_layout LyX-Code - Let me finally add, you should do a few short experiments to see -\end_layout - -\begin_layout LyX-Code - whether or not such pipelining actually improves performance -- it -\end_layout - -\begin_layout LyX-Code - is not always obvious where the time is going, and I have -\end_layout - -\begin_layout LyX-Code - sometimes found that the added complexity of pipelining actually -\end_layout - -\begin_layout LyX-Code - slowed things up. - It gets its best improvements when there are -\end_layout - -\begin_layout LyX-Code - exact matches of more than just a few characters that can be -\end_layout - -\begin_layout LyX-Code - rapidly used to eliminate large sections of the database. -\end_layout - -\begin_layout LyX-Code -============= -\end_layout - -\begin_layout LyX-Code -Additions: -\end_layout - -\begin_layout LyX-Code -Feb 9, 1995: the pattern units ^ and $ now work as in normal regular -\end_layout - -\begin_layout LyX-Code - expressions. - That is -\end_layout - -\begin_layout LyX-Code - TTF $ -\end_layout - -\begin_layout LyX-Code - matches only TTF at the end of the string and -\end_layout - -\begin_layout LyX-Code - ^ TTF -\end_layout - -\begin_layout LyX-Code - matches only an initial TTF -\end_layout - -\begin_layout LyX-Code - The pattern unit -\end_layout - -\begin_layout LyX-Code - : -\end_layout - -\begin_layout Standard -\begin_inset Box Frameless -position "t" -hor_pos "c" -has_inner_box 1 -inner_pos "t" -use_parbox 0 -width "100col%" -special "none" -height "1in" -height_special "totalheight" -status open - -\begin_layout LyX-Code - -\size scriptsize -Program name: read_fasta -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Author: Martin Asser Hansen - Copyright (C) - All rights reserved -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Contact: mail@maasha.dk -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Date: August 2007 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -License: GNU General Public License version 2 (http://www.gnu.org/copyleft/ -gpl.html) -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Description: Read FASTA entries. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Usage: read_fasta [options] -i -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Options: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-i | --data_in=] - Comma separated list of files - to read. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-n | --num=] - Limit number of records to read. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-I | --stream_in=] - Read input stream from file - - Default=STDIN -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-O | --stream_out=] - Write output stream to file - - Default=STDOUT -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Examples: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test.fna - Read FASTA entries from file. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test1.fna,test2,fna - Read FASTA entries from files. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i '*.fna' - Read FASTA entries from files. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test.fna -n 10 - Read first 10 FASTA entries from - file. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -The Data Stream -\end_layout - -\begin_layout Subsection -How to read the data stream from file? -\begin_inset LatexCommand label -name "sub:How-to-read-stream" - -\end_inset - - -\end_layout - -\begin_layout Standard -You want to read a data stream that you previously have saved to file in - biotools format. - This can be done implicetly or explicitly. - The implicit way uses the 'stdout' stream of the Unix terminal: -\end_layout - -\begin_layout LyX-Code -cat | -\end_layout - -\begin_layout Standard -cat is the Unix command that reads a file and output the result to 'stdout' - --- which in this case is piped to any biotool represented by the . - It is also possible to read the data stream using '<' to direct the 'stdout' - stream into the biotool like this: -\end_layout - -\begin_layout LyX-Code - < -\end_layout - -\begin_layout Standard -However, that will not work if you pipe more biotools together. - Then it is much safer to read the stream from a file explicitly like this: -\end_layout - -\begin_layout LyX-Code - --stream_in= -\end_layout - -\begin_layout Standard -Here the filename is explicetly given to the biotool with - the switch -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_in. - This switch works with all biotools. - It is also possible to read in data from multiple sources by repeating - the explicit read step: -\end_layout - -\begin_layout LyX-Code - --stream_in= | --stream_in= -\end_layout - -\begin_layout Subsection -How to write the data stream to file? -\begin_inset LatexCommand label -name "sub:How-to-write-stream" - -\end_inset - - -\end_layout - -\begin_layout Standard -In order to save the output stream from a biotool to file, so you can read - in the stream again at a later time, you can do one of two things: -\end_layout - -\begin_layout LyX-Code - > -\end_layout - -\begin_layout Standard -All, the biotools write the data stream to 'stdout' by default which can - be written to a file by redirecting 'stdout' to file using '>' , however, - if one of the biotools for writing other formats is used then the both - the biotools records as well as the result output will go to 'stdout' in - a mixture causing havock! To avoid this you must use the switch -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out that explictly tells the biotool to write the output stream to - file: -\end_layout - -\begin_layout LyX-Code - --stream_out= -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out switch works with all biotools. -\end_layout - -\begin_layout Subsection -How to terminate the data stream? -\end_layout - -\begin_layout Standard -The data stream is never stops unless the user want to save the stream or - by supplying the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch that will terminate the stream: -\end_layout - -\begin_layout LyX-Code - --no_stream -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch only works with those biotools where it makes sense that - the user might want to terminale the data stream, -\emph on -i.e -\emph default -. - after an analysis step where the user wants to output the result, but not - the data stream. -\end_layout - -\begin_layout Subsection -How to write my results to file? -\begin_inset LatexCommand label -name "sub:How-to-write-result" - -\end_inset - - -\end_layout - -\begin_layout Standard -Saving the result of an analysis to file can be done implicitly or explicitly. - The implicit way: -\end_layout - -\begin_layout LyX-Code - --no_stream > -\end_layout - -\begin_layout Standard -If you use '>' to redirect 'stdout' to file then it is important to use - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch to avoid writing a mix of biotools records and result to - the same file causing havock. - The safe way is to use the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch which explicetly tells the biotool to write the result - to a given file: -\end_layout - -\begin_layout LyX-Code - --result_out= -\end_layout - -\begin_layout Standard -Using the above method will not terminate the stream, so it is possible - to pipe that into another biotool generating different results: -\end_layout - -\begin_layout LyX-Code - --result_out= | --result_out= -\end_layout - -\begin_layout Standard -And still the data stream will continue unless terminated with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream: -\end_layout - -\begin_layout LyX-Code - --result_out= --no_stream -\end_layout - -\begin_layout Standard -Or written to file using implicitly or explicity -\begin_inset LatexCommand eqref -reference "sub:How-to-write-result" - -\end_inset - -. - The explicit way: -\end_layout - -\begin_layout LyX-Code - --result_out= --stream_out= -\end_layout - -\begin_layout Subsection -How to read data from multiple sources? -\end_layout - -\begin_layout Standard -To read multiple data sources, with the same type or different type of data - do: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= -\end_layout - -\begin_layout Standard -where type is the data type a specific biotool reads. -\end_layout - -\begin_layout Section -Reading input -\end_layout - -\begin_layout Subsection -How to read biotools input? -\end_layout - -\begin_layout Standard -See -\begin_inset LatexCommand eqref -reference "sub:How-to-read-stream" - -\end_inset - -. -\end_layout - -\begin_layout Subsection -How to read in data? -\end_layout - -\begin_layout Standard -Data in different formats can be read with the appropriate biotool for that - format. - The biotools are typicalled named 'read_' such as -\series bold -read_fasta -\series default -, -\series bold -read_bed -\series default -, -\series bold -read_tab -\series default -, etc., and all behave in a similar manner. - Data can be read by supplying the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -data_in switch and a file name to the file containing the data: -\end_layout - -\begin_layout LyX-Code - --data_in= -\end_layout - -\begin_layout Standard -It is also possible to read in a saved biotools stream (see -\begin_inset LatexCommand ref -reference "sub:How-to-read-stream" - -\end_inset - -) as well as reading data in one go: -\end_layout - -\begin_layout LyX-Code - --stream_in= --data_in= -\end_layout - -\begin_layout Standard -If you want to read data from several files you can do this: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= -\end_layout - -\begin_layout Standard -If you have several data files you can read in all explicitly with a comma - separated list: -\end_layout - -\begin_layout LyX-Code - --data_in=file1,file2,file3 -\end_layout - -\begin_layout Standard -And it is also possible to use file globbing -\begin_inset Foot -status open - -\begin_layout Standard -using the short option will only work if you quote the argument -i '*.fna' -\end_layout - -\end_inset - -: -\end_layout - -\begin_layout LyX-Code - --data_in=*.fna -\end_layout - -\begin_layout Standard -Or in a combination: -\end_layout - -\begin_layout LyX-Code - --data_in=file1,/dir/*.fna -\end_layout - -\begin_layout Standard -Finally, it is possible to read in data in different formats using the appropria -te biotool for each format: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= ... -\end_layout - -\begin_layout Subsection -How to read FASTA input? -\end_layout - -\begin_layout Standard -Sequences in FASTA format can be read explicitly using -\series bold -read_fasta -\series default -: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= -\end_layout - -\begin_layout Subsection -How to read alignment input? -\end_layout - -\begin_layout Standard -If your alignment if FASTA formatted then you can -\series bold -read_align -\series default -. - It is also possible to use -\series bold -read_fasta -\series default - since the data is FASTA formatted, however, with -\series bold -read_fasta -\series default - the key ALIGN will be omitted. - The ALIGN key is used to determine which sequences belong to what alignment - which is required for -\series bold -write_align -\series default -. -\end_layout - -\begin_layout LyX-Code -read_align --data_in= -\end_layout - -\begin_layout Subsection -How to read tabular input? -\begin_inset LatexCommand label -name "sub:How-to-read-table" - -\end_inset - - -\end_layout - -\begin_layout Standard -Tabular input can be read with -\series bold -read_tab -\series default - which will read in all rows and chosen columns (separated by a given delimter) - from a table in text format. -\end_layout - -\begin_layout Standard -The table below: -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Standard -Human -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -ATACGTCAG -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -23524 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Dog -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -AGCATGAC -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -2442 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Mouse -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -GACTG -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -234 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Cat -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -AAATGCA -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -2342 -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -Can be read using the command: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= -\end_layout - -\begin_layout Standard -Which will result in four records, one for each row, where the keys V0, - V1, V2 are the default keys for the organism, sequence, and count, respectively. - It is possible to select a subset of colums to read by using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -cols switch which takes a comma separated list of columns numbers (first - column is designated 0) as argument. - So to read in only the sequence and the count so that the count comes before - the sequence do: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --cols=2,1 -\end_layout - -\begin_layout Standard -It is also possible to name the columns with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --cols=2,1 --keys=COUNT,SEQ -\end_layout - -\begin_layout Subsection -How to read BED input? -\end_layout - -\begin_layout Standard -The BED (Browser Extensible Data -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://genome.ucsc.edu/FAQ/FAQformat" - -\end_inset - - -\end_layout - -\end_inset - -) format is a tabular format for data pertaining to one of the Eukaryotic - genomes in the UCSC genome brower -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://genome.ucsc.edu/" - -\end_inset - - -\end_layout - -\end_inset - -. - The BED format consists of up to 12 columns, where the first three are - mandatory CHR, CHR_BEG, and CHR_END. - The mandatory columns and any of the optional columns can all be read in - easily with the -\series bold -read_bed -\series default - biotool. -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= -\end_layout - -\begin_layout Standard -It is also possible to read the BED file with -\series bold -read_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-read-table" - -\end_inset - -), however, that will be more cumbersome because you need to specify the - keys: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --keys=CHR,CHR_BEG,CHR_END ... -\end_layout - -\begin_layout Subsection -How to read PSL input? -\end_layout - -\begin_layout Standard -The PSL format is the output from BLAT and contains 21 mandatory fields - that can be read with -\series bold -read_psl -\series default -: -\end_layout - -\begin_layout LyX-Code -read_psl --data_in= -\end_layout - -\begin_layout Section -Writing output -\end_layout - -\begin_layout Standard -All result output can be written explicitly to file using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch which all result generating biotools have. - It is also possible to write the result to file implicetly by directing - 'stdout' to file using '>', however, that requires the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream swich to prevent a mixture of data stream and results in the file. - The explicit (and safe) way: -\end_layout - -\begin_layout LyX-Code -... - | --result_out= -\end_layout - -\begin_layout Standard -The implicit way: -\end_layout - -\begin_layout LyX-Code -... - | --no_stream > -\end_layout - -\begin_layout Subsection -How to write biotools output? -\end_layout - -\begin_layout Standard -See -\begin_inset LatexCommand eqref -reference "sub:How-to-write-stream" - -\end_inset - -. -\end_layout - -\begin_layout Subsection -How to write FASTA output? -\begin_inset LatexCommand label -name "sub:How-to-write-fasta" - -\end_inset - - -\end_layout - -\begin_layout Standard -FASTA output can be written with -\series bold -write_fasta -\series default -. -\end_layout - -\begin_layout LyX-Code -... - | write_fasta --result_out= -\end_layout - -\begin_layout Standard -It is also possible to wrap the sequences to a given width using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -wrap switch allthough wrapping of sequence is generally an evil thing: -\end_layout - -\begin_layout LyX-Code -... - | write_fasta --no_stream --wrap=80 -\end_layout - -\begin_layout Subsection -How to write alignment output? -\begin_inset LatexCommand label -name "sub:How-to-write-alignment" - -\end_inset - - -\end_layout - -\begin_layout Standard -Pretty alignments with ruler -\begin_inset Foot -status collapsed - -\begin_layout Standard -'.' for every 10 residues, ':' for every 50, and '|' for every 100 -\end_layout - -\end_inset - - and consensus sequence -\begin_inset Note Note -status collapsed - -\begin_layout Standard -which reminds me to make that an option. -\end_layout - -\end_inset - - can be created with -\series bold -write_align -\series default -, what also have the optional -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -wrap switch to break the alignment into blocks of a given width: -\end_layout - -\begin_layout LyX-Code -... - | write_align --result_out= --wrap=80 -\end_layout - -\begin_layout Standard -If the number of sequnces in the alignment is 2 then a pairwise alignment - will be output otherwise a multiple alignment. - And if the sequence type, determined automagically, is protein, then residues - and symbols (+,\InsetSpace ~ -:,\InsetSpace ~ -.) will be used to show consensus according to the Blosum62 - matrix. -\end_layout - -\begin_layout Subsection -How to write tabular output? -\begin_inset LatexCommand label -name "sub:How-to-write-tab" - -\end_inset - - -\end_layout - -\begin_layout Standard -Outputting the data stream as a table can be done with -\series bold -write_tab -\series default -, which will write generate one row per record with the values as columns. - If you supply the optional -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comment switch, when the first row in the table will be a 'comment' line - prefixed with a '#': -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --comment -\end_layout - -\begin_layout Standard -You can also change the delimiter from the default (tab) to -\emph on -e.g. - -\emph default - ',': -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --delimit=',' -\end_layout - -\begin_layout Standard -If you want the values output in a specific order you have to supply a comma - separated list using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch that will print only those keys in that order: -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --keys=SEQ_NAME,COUNT -\end_layout - -\begin_layout Standard -Alternatively, if you have some keys that you don't want in the tabular - output, use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_keys switch. - So to print all keys except SEQ and SEQ_TYPE do: -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --no_keys=SEQ,SEQ_TYPE -\end_layout - -\begin_layout Standard -Finally, if you have a stream containing a mix of different records types, - -\emph on -e.g. - -\emph default - records with sequences and records with matches, then you can use -\series bold -write_tab -\series default - to output all the records in tabluar format, however, the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comment, -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys, and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_keys switches will only respond to records of the first type encountered. - The reason is that outputting mixed records is probably not what you want - anyway, and you should remove all the unwanted records from the stream - before outputting the table: -\series bold -grab -\series default - is your friend (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to write a BED output? -\begin_inset LatexCommand label -name "sub:How-to-write-BED" - -\end_inset - - -\end_layout - -\begin_layout Standard -Data in BED format can be output if the records contain the mandatory keys - CHR, CHR_BEG, and CHR_END using -\series bold -write_bed -\series default -. - If the optional keys are also present, they will be output as well: -\end_layout - -\begin_layout LyX-Code -write_bed --result_out= -\end_layout - -\begin_layout Subsection -How to write PSL output? -\begin_inset LatexCommand label -name "sub:How-to-write-PSL" - -\end_inset - - -\end_layout - -\begin_layout Standard -Data in PSL format can be output using -\series bold -write_psl: -\end_layout - -\begin_layout LyX-Code -write_psl --result_out= -\end_layout - -\begin_layout Section -Manipulating Records -\end_layout - -\begin_layout Subsection -How to select a few records? -\begin_inset LatexCommand label -name "sub:How-to-select-a-few-records" - -\end_inset - - -\end_layout - -\begin_layout Standard -To quickly get an overview of your data you can limit the data stream to - show a few records. - This also very useful to test the pipeline with a few records if you are - setting up a complex analysis using several biotools. - That way you can inspect that all goes well before analyzing and waiting - for the full data set. - All of the read_ biotools have the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch which will take a number as argument and only that number of - records will be read. - So to read in the first 10 FASTA entries from a file: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna --num=10 -\end_layout - -\begin_layout Standard -Another way of doing this is to use -\series bold -head_records -\series default - will limit the stream to show the first 10 records (default): -\end_layout - -\begin_layout LyX-Code -... - | head_records -\end_layout - -\begin_layout Standard -Using -\series bold -head_records -\series default - directly after one of the read_ biotools will be a lot slower than - using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch with the read_ biotools, however, -\series bold -head_records -\series default - can also be used to limit the output from all the other biotools. - It is also possible to give -\series bold -head_records -\series default - a number of records to show using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch. - So to display the first 100 records do: -\end_layout - -\begin_layout LyX-Code -... - | head_records --num=100 -\end_layout - -\begin_layout Subsection -How to select random records? -\begin_inset LatexCommand label -name "sub:How-to-select-random-records" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you want to inspect a number of random records from the stream this can - be done with the -\series bold -random_records -\series default - biotool. - So if you have 1 mio records in the stream and you want to select 1000 - random records do: -\end_layout - -\begin_layout LyX-Code -... - | random_records --num=1000 -\end_layout - -\begin_layout Subsection -How to count all records in the data stream? -\end_layout - -\begin_layout Standard -To count all the records in the data stream use -\series bold -count_records -\series default -, which adds one record (which is not included in the count) to the data - stream. - So to count the number of sequences in a FASTA file you can do this: -\end_layout - -\begin_layout LyX-Code -cat test.fna | read_fasta | count_records --no_stream -\end_layout - -\begin_layout Standard -Which will write the last record containing the count to 'stdout': -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_records: 630 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize ---- -\end_layout - -\begin_layout Standard -It is also possible to write the count to file using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch. -\end_layout - -\begin_layout Subsection -How to get the length of record values? -\begin_inset LatexCommand label -name "sub:How-to-get-value_length" - -\end_inset - - -\end_layout - -\begin_layout Standard -Use the -\series bold -length_vals -\series default - biotool to get the length of each value for a comma separated list of keys: -\end_layout - -\begin_layout LyX-Code -... - | length_vals --keys=HIT,PATTERN -\end_layout - -\begin_layout Subsection -How to grab specific records? -\begin_inset LatexCommand label -name "sub:How-to-grab" - -\end_inset - - -\end_layout - -\begin_layout Standard -The biotool -\series bold -grab -\series default - is related to the Unix grep and locates records based on matching keys - and/or values using either a pattern, a Perl regex, or a numerical evaluation. - To easily -\series bold -grab -\series default - all records in the stream that has any mentioning of the pattern 'human' - just pipe the data stream through -\series bold -grab -\series default - like this: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human -\end_layout - -\begin_layout Standard -This will search for the pattern 'human' in all keys and all values. - The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch takes a comma separated list of patterns, so in order to - match multiple patterns do: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human,mouse -\end_layout - -\begin_layout Standard -It is also possible to use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in switch instead of -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern. - -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in is used to read a file with one pattern per line: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern_in=patterns.txt -\end_layout - -\begin_layout Standard -If you want the opposite result --- to find all records that does not match - the patterns, add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -invert switch, which not only works with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch, but also with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -regex and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -eval: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human --invert -\end_layout - -\begin_layout Standard -If you want to search the record keys only, -\emph on -e.g. - -\emph default - to find all records containing the key SEQ you can add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys_only switch. - This will prevent matching of SEQ in any record value, and in fact SEQ - is a not uncommon peptide sequence you could get an unwanted record. - Also, this will give an increase in speed since only the keys are searched: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=SEQ --keys_only -\end_layout - -\begin_layout Standard -However, if you are interested in finding the peptide sequence SEQ and not - the SEQ key, just add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -vals_only switch instead: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=SEQ --vals_only -\end_layout - -\begin_layout Standard -Also, if you want to grab for certain key/value pairs you can supply a comma - separated list of keys whos values will then be searched using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch. - This is handy if your records contain large genomic sequences and you dont - want to search the entire sequence for -\emph on -e.g. - -\emph default - the organism name --- it is much faster to tell -\series bold -grab -\series default - which keys to search the value for: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human --keys=SEQ_NAME -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout Standard -It is also possible to invoke flexible matching using regex (regular expressions -) instead of simple pattern matching. - In -\series bold -grab -\series default - the regex engine is Perl based and allows use of different type of wild - cards, alternatives, -\emph on -etc -\emph default - -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://perldoc.perl.org/perlreref.html" - -\end_inset - - -\end_layout - -\end_inset - -. - If you want to -\series bold -grab -\series default - records withs the sequence ATCG or GCTA you can do this: -\end_layout - -\begin_layout LyX-Code -... - | grab --regex='ATCG|GCTA' -\end_layout - -\begin_layout Standard -Or if you want to find sequences beginning with ATCG: -\end_layout - -\begin_layout LyX-Code -... - | grab --regex='^ATCG' -\end_layout - -\begin_layout Standard -You can also use -\series bold -grab -\series default - to locate records that fulfill a numerical property using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -eval switch witch takes an expression in three parts. - The first part is the key that holds the value we want to evaluate, the - second part holds one the six operators: -\end_layout - -\begin_layout Enumerate -Greater than: > -\end_layout - -\begin_layout Enumerate -Greater than or equal to: >= -\end_layout - -\begin_layout Enumerate -Less than: < -\end_layout - -\begin_layout Enumerate -Less than or equal to: <= -\end_layout - -\begin_layout Enumerate -Equal to: = -\end_layout - -\begin_layout Enumerate -Not equal to: != -\end_layout - -\begin_layout Enumerate -String wise equal to: eq -\end_layout - -\begin_layout Enumerate -String wise not equal to: ne -\end_layout - -\begin_layout Standard -And finally comes the number used in the evaluation. - So to -\series bold -grab -\series default - all records with a sequence length greater than 30: -\end_layout - -\begin_layout LyX-Code -... - length_seq | grab --eval='SEQ_LEN > 30' -\end_layout - -\begin_layout Standard -If you want to locate all records containing the pattern 'human' and where - the sequence length is greater that 30, you do this by running the stream - through -\series bold -grab -\series default - twice: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern='human' | length_seq | grab --eval='SEQ_LEN > 30' -\end_layout - -\begin_layout Standard -Finally, it is possible to do fast matching of expressions from a file using - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact switch. - Each of these expressions has to be matched exactly over the entrie length, - which if useful if you have a file with accession numbers, that you want - to locate in the stream: -\end_layout - -\begin_layout LyX-Code -... - | grab --exact acc_no.txt | ... -\end_layout - -\begin_layout Standard -Using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact is much faster than using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in, because with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact the expression has to be complete matches, where -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in looks for subpatterns. -\end_layout - -\begin_layout Standard -NB! To get the best speed performance, use the most restrictive -\series bold -grab -\series default - first. -\end_layout - -\begin_layout Subsection -How to remove keys from records? -\end_layout - -\begin_layout Standard -To remove one or more specific keys from all records in the data stream - use -\series bold -remove_keys -\series default - like this: -\end_layout - -\begin_layout LyX-Code -... - | remove_keys --keys=SEQ,SEQ_NAME -\end_layout - -\begin_layout Standard -In the above example SEQ and SEQ_NAME will be removed from all records if - they exists in these. - If all keys are removed from a record, then the record will be removed. -\end_layout - -\begin_layout Subsection -How to rename keys in records? -\end_layout - -\begin_layout Standard -Sometimes you want to rename a record key, -\emph on -e.g. - -\emph default - if you have read in a two column table with sequence name and sequence - in each column (see -\begin_inset LatexCommand ref -reference "sub:How-to-read-table" - -\end_inset - -) without specifying the key names, then the sequence name will be called - V0 and the sequence V1 as default in the -\series bold -read_tab -\series default - biotool. - To rename the V0 and V1 keys we need to run the stream through -\series bold -rename_keys -\series default - twice (one for each key to rename): -\end_layout - -\begin_layout LyX-Code -... - | rename_keys --keys=V0,SEQ_NAME | rename_keys --keys=V1,SEQ -\end_layout - -\begin_layout Standard -The first instance of -\series bold -rename_keys -\series default - replaces all the V0 keys with SEQ_NAME, and the second instance of -\series bold -rename_keys -\series default - replaces all the V1 keys with SEQ. - -\emph on -Et viola -\emph default - the data can now be used in the biotools that requires these keys. -\end_layout - -\begin_layout Section -Manipulating Sequences -\end_layout - -\begin_layout Subsection -How to get sequence lengths? -\end_layout - -\begin_layout Standard -The length for sequences in records can be determined with -\series bold -length_seq -\series default -, which adds the key SEQ_LEN to each record with the sequence length as - the value. - It also generates an extra record that is emitted last with the key TOTAL_SEQ_L -EN showing the total length of all the sequences. -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_seq -\end_layout - -\begin_layout Standard -It is also possible to determine the sequence length using the generic tool - -\series bold -length_vals -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-get-value_length" - -\end_inset - -, which determines the length of the values for a given list of keys: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_vals --keys=SEQ -\end_layout - -\begin_layout Standard -To obtain the total length of all sequences use -\series bold -sum_vals -\series default - like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_vals --keys=SEQ -\end_layout - -\begin_layout LyX-Code -| sum_vals --keys=SEQ_LEN -\end_layout - -\begin_layout Standard -The biotool -\series bold -analyze_seq -\series default - will also determine the length of each sequence (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-analyze" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to analyze sequence composition? -\begin_inset LatexCommand label -name "sub:How-to-analyze" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you want to find out the sequence type, composition, length, as well - as GC content, indel content and proportions of soft and hard masked sequence, - then use -\series bold -analyze_seq -\series default -. - This handy biotool will determine all these things per sequence from which - it is easy to get an overview using the -\series bold -write_tab -\series default - biotool to output a table (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -). - So in order to determine the sequence composition of a FASTA file with - just one entry containing the sequence 'ATCG' we just read the data with - -\series bold -read_fasta -\series default - and run the output through -\series bold -analyze_seq -\series default - which will add the analysis to the record like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq ... -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:D: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -MIX_INDEX: 0.55 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:W: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:G: 16 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SOFT_MASK%: 63.75 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:B: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:V: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -HARD_MASK%: 0.00 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:H: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:S: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:N: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:.: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -GC%: 35.00 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:A: 8 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:Y: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:M: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:T: 44 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ_TYPE: DNA -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:K: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:~: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ: TTTCAGTTTGGGACGGAGTAAGGCCTTCCtttttttttttttttttttttttttttttgagaccgagtcttgctc -tgtcg -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ_LEN: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -80 RES:R: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:C: 12 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:-: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:U: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize ---- -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout Standard -Now to make a table of how may As, Ts, Cs, and Gs you can add the following: -\end_layout - -\begin_layout LyX-Code -... - | analyze_seq | write_tab --keys=RES:A,RES:T,RES:C,RES:G -\end_layout - -\begin_layout Standard -Or if you want to see the proportions of hard and soft masked sequence: -\end_layout - -\begin_layout LyX-Code -... - | analyse_seq | write_tab --keys=HARD_MASK%,SOFT_MASK% -\end_layout - -\begin_layout Standard -If you have a stack of sequences in one file and you want to determine the - mean GC content you can do it using the -\series bold -mean_vals -\series default - biotool: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | mean_vals --keys=GC% -\end_layout - -\begin_layout Standard -Or if you want the total count of Ns you can use -\series bold -sum_vals -\series default - like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | sum_vals --keys=RES:N -\end_layout - -\begin_layout Standard -The MIX_INDEX key is calculated as the count of the most common residue - over the sequence length, and can be used as a cut-off for removing sequence - tags consisting of mostly one nucleotide: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | grab --eval='MIX_INDEX<0.85' -\end_layout - -\begin_layout Subsection -How to extract subsequences? -\begin_inset LatexCommand label -name "sub:How-to-extract" - -\end_inset - - -\end_layout - -\begin_layout Standard -In order to extract a subsequence from a longer sequence use the biotool - extract_seq, which will replace the sequence in the record with the subsequence - (this behaviour should probably be modified to be dependant of a -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -replace or a -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_replace switch -\begin_inset Note Note -status collapsed - -\begin_layout Standard -also in split_seq -\end_layout - -\end_inset - -). - So to extract the first 20 residues from all sequences do (first residue - is designated 1): -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=1 --len=20 -\end_layout - -\begin_layout Standard -You can also specify a begin and end coordinate set: -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=20 --end=40 -\end_layout - -\begin_layout Standard -If you want the subsequences from position 20 to the sequence end do: -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=20 -\end_layout - -\begin_layout Standard -If you want to extract subsequences a given distance from the sequence end - you can do this by reversing the sequence with the biotool -\series bold -reverse_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-reverse-seq" - -\end_inset - -, followed by -\series bold -extract_seq -\series default - to get the subsequence, and then -\series bold -reverse_seq -\series default - again to get the subsequence back in the original orientation: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | reverse_seq -\end_layout - -\begin_layout LyX-Code -| extract_seq --beg=10 --len=10 | reverse_seq -\end_layout - -\begin_layout Subsection -How to get genomic sequence? -\begin_inset LatexCommand label -name "sub:How-to-get-genomic-sequence" - -\end_inset - - -\end_layout - -\begin_layout Standard -The biotool -\series bold -get_genomic_seq -\series default - can extract subsequences for a given genome specified with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch explicitly using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -beg and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -end/ -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -len switches: -\end_layout - -\begin_layout LyX-Code -get_genome_seq --genome= --beg=1 --len=100 -\end_layout - -\begin_layout Standard -Alternatively, -\series bold -get_genome_seq -\series default - can be used to append the corresponding sequence to BED, PSL, and BLAST - records: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | get_genome_seq --genome= -\end_layout - -\begin_layout Standard -It is also possible to include flaking sequence using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -flank switch. - So to include 50 nucleotides upstream and 50 nucleotides downstream for - each BED entry do: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | get_genome_seq --genome= --flank=50 -\end_layout - -\begin_layout Subsection -How to upper-case sequences? -\end_layout - -\begin_layout Standard -Sequences can be shifted from lower case to upper case using -\series bold -uppercase_seq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | uppercase_seq -\end_layout - -\begin_layout Subsection -How to reverse sequences? -\begin_inset LatexCommand label -name "sub:How-to-reverse-seq" - -\end_inset - - -\end_layout - -\begin_layout Standard -The order of residues in a sequence can be reversed using reverse_seq: -\end_layout - -\begin_layout LyX-Code -... - | reverse_seq -\end_layout - -\begin_layout Standard -Note that in order to reverse/complement a sequence you also need the -\series bold -complement_seq -\series default - biotool (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-complement" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to complement sequences? -\begin_inset LatexCommand label -name "sub:How-to-complement" - -\end_inset - - -\end_layout - -\begin_layout Standard -DNA and RNA sequences can be complemented with -\series bold -complement_seq -\series default -, which automagically determines the sequence type: -\end_layout - -\begin_layout LyX-Code -... - | complement_seq -\end_layout - -\begin_layout Standard -Note that in order to reverse/complement a sequence you also need the -\series bold -reverse_seq -\series default - biotool (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-reverse-seq" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to remove indels from sequnces? -\end_layout - -\begin_layout Standard -Indels can be removed from sequences with the -\series bold -remove_indels -\series default - biotool. - This is useful if you have aligned some sequences (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-align" - -\end_inset - -) and extracted (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-extract" - -\end_inset - -) a block of subsequences from the alignment and you want to use these sequence - in a search where you need to remove the indels first. - '-', '~', and '.' are considered indels: -\end_layout - -\begin_layout LyX-Code -... - | remove_indels -\end_layout - -\begin_layout Subsection -How to shuffle sequences? -\end_layout - -\begin_layout Standard -All residues in sequences in the stream can be shuffled to random positions - using the -\series bold -shuffle_seq -\series default - biotool: -\end_layout - -\begin_layout LyX-Code -... - | shuffle_seq -\end_layout - -\begin_layout Subsection -How to split sequences into overlapping subsequences? -\end_layout - -\begin_layout Standard -Sequences can be slit into overlapping subsequences with the -\series bold -split_seq -\series default - biotool. -\end_layout - -\begin_layout LyX-Code -... - | split_seq --word_size=20 --uniq -\end_layout - -\begin_layout Subsection -How to determine the oligo frequency? -\end_layout - -\begin_layout Standard -In order to determine if any oligo usage is over represented in one or more - sequences you can determine the frequency of oligos of a given size with - -\series bold -oligo_freq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 -\end_layout - -\begin_layout Standard -And if you have more than one sequence and want to accumulate the frequences - you need the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -all switch: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 --all -\end_layout - -\begin_layout Standard -To get a meaningful result you need to write the resulting frequencies as - a table with -\series bold -write_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -), but first it is important to -\series bold -grab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -) the records with the frequencies to avoid full length sequences in the - table: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 --all | grab --pattern=OLIGO --keys_only -\end_layout - -\begin_layout LyX-Code -| write_tab --no_stream -\end_layout - -\begin_layout Standard -And the resulting frequency table can be sorted with Unix sort (man sort). -\end_layout - -\begin_layout Subsection -How to search for sequences in genomes? -\end_layout - -\begin_layout Standard -See the following biotool: -\end_layout - -\begin_layout Itemize - -\series bold -patscan_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -blat_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -blast_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -vmatch_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to search sequences for a pattern? -\begin_inset LatexCommand label -name "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Standard -It is possible to search sequences in the data stream for patterns using - the -\series bold -patscan_seq -\series default - biotool which utilizes the powerful scan_for_matches engine. - Consult the documentation for scan_for_matches in order to learn how to - define patterns (the documentation is included in Appendix\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sec:scan_for_matches-README" - -\end_inset - -). -\end_layout - -\begin_layout Standard -To search all sequences for a simple pattern consisting of the sequence - ATCGATCG allowing for 3 mismatches, 2 insertions and 1 deletion: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | patscan_seq --pattern='ATCGATCG[3,2,1]' -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch takes a comma seperated list of patterns, so if you want - to search for more that one pattern do: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern='ATCGATCG[3,2,1],GCTAGCTA[3,2,1]' -\end_layout - -\begin_layout Standard -It is also possible to have a list of different patterns to search for in - a file with one pattern per line. - In order to get -\series bold -patscan_seq -\series default - to read these patterns use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern_in= -\end_layout - -\begin_layout Standard -To also scan the complementary strand in nucleotide sequences ( -\series bold -patscan_seq -\series default - automagically determines the sequence type) you need to add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comp switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern= --comp -\end_layout - -\begin_layout Standard -It is also possible to use -\series bold -patscan_seq -\series default - to output those records that does not contain a certain pattern by using - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -invert switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern= --invert -\end_layout - -\begin_layout Standard -Finally, -\series bold -patscan_seq -\series default - can also scan for patterns in a given genome sequence, instead of sequences - in the stream, using the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch: -\end_layout - -\begin_layout LyX-Code -patscan --pattern= --genome= -\end_layout - -\begin_layout Subsection -How to use BLAT for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Standard -Sequences in the data stream can be matched against supported genomes using - -\series bold -blat_seq -\series default - which is a biotool using BLAT as the name might suggest. - Currently only Mouse and Human genomes are available and it is not possible - to use OOC files since there is still a need for a local repository for - genome files. - Otherwise it is just: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | blat_seq --genome= -\end_layout - -\begin_layout Standard -The search results can then be written to file with -\series bold -write_psl -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-PSL" - -\end_inset - -) or -\series bold -write_bed -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-BED" - -\end_inset - -) allthough with -\series bold -write_bed -\series default - some information will be lost). - It is also possible to plot chromosome distribution of the search results - using -\series bold -plot_chrdist -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-chrdist" - -\end_inset - -) or the distribution of the match lengths using -\series bold -plot_lendist -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-lendist" - -\end_inset - -) or a karyogram with the hits using -\series bold -plot_karyogram -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-karyogram" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to use BLAST for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Standard -Two biotools exist for blasting sequences: -\series bold -create_blast_db -\series default - is used to create the BLAST database required for BLAST which is queried - using the biotool -\series bold -blast_seq -\series default -. - So in order to create a BLAST database from sequences in the data stream - you simple run: -\end_layout - -\begin_layout LyX-Code -... - | create_blast_db --database=my_database --no_stream -\end_layout - -\begin_layout Standard -The type of sequence to use for the database is automagically determined - by -\series bold -create_blast_db -\series default -, but don't have a mixture of peptide and nucleic acids sequences in the - stream. - The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database switch takes a path as argument, but will default to 'blastdb_ if not set. -\end_layout - -\begin_layout Standard -The resulting database can now be queried with sequences in another data - stream using -\series bold -blast_seq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | blast_seq --database=my_database -\end_layout - -\begin_layout Standard -Again, the sequence type is determined automagically and the appropriate - BLAST program is guessed (see below table), however, the program name can - be overruled with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -program switch. -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Standard -Subject sequence -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Query sequence -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Program guess -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastn -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastp -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastx -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -tblastn -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -Finally, it is also possible to use -\series bold -blast_seq -\series default - for blasting sequences agains a preformatted genome using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch instead of the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database switch: -\end_layout - -\begin_layout LyX-Code -... - | blast_seq --genome= -\end_layout - -\begin_layout Subsection -How to use Vmatch for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Standard -The powerful suffix array software package Vmatch -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.vmatch.de/" - -\end_inset - - -\end_layout - -\end_inset - - can be used for exact mapping of sequences against indexed genomes using - the biotool -\series bold -vmatch_seq -\series default -, which will e.g. - map 700000 ESTs to the human genome locating all 160 mio hits in less than - an hour. - Only nucleotide sequences and sequences longer than 11 nucleotides will - be mapped. - It is recommended that sequences consisting of mostly one nucleotide type - are removed. - This can be done with the -\series bold -analyze_seq -\series default - biotool -\begin_inset LatexCommand eqref -reference "sub:How-to-analyze" - -\end_inset - -. -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= -\end_layout - -\begin_layout Standard -It is also possible to allow for mismatches using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -hamming_dist switch. - So to allow for 2 mismatches: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=2 -\end_layout - -\begin_layout Standard -Or to allow for 10% mismathing nucleotides: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=10p -\end_layout - -\begin_layout Standard -To allow both indels and mismatches use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -edit_dist switch. - So to allow for one mismatch or one indel: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=1 -\end_layout - -\begin_layout Standard -Or to allow for 5% indels or mismatches: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=5p -\end_layout - -\begin_layout Standard -Note that using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -hamming_dist or -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -edit_dist greatly slows down vmatch considerably --- use with care. -\end_layout - -\begin_layout Standard -The resulting SCORE key can be replaced to hold the number of genome matches - of a given sequence (multi-mappers) is the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -count switch is given. -\end_layout - -\begin_layout Subsection -How to find all matches between sequences? -\begin_inset LatexCommand label -name "sub:How-to-find-matches" - -\end_inset - - -\end_layout - -\begin_layout Standard -All matches between two sequences can be determined with the biotool -\series bold -match_seq -\series default -. - The match finding engine underneath the hood of -\series bold -match_seq -\series default - is the super fast suffix tree program MUMmer -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://mummer.sourceforge.net/" - -\end_inset - - -\end_layout - -\end_inset - -, which will locate all forward and reverse matches between huge sequences - in a matter of minutes (if the repeat count is not too high and if the - word size used is appropriate). - Matching two -\emph on -Helicobacter pylori -\emph default - genomes (1.7Mbp) takes around 10 seconds: -\end_layout - -\begin_layout LyX-Code -... - | match_seq --word_size=20 --direction=both -\end_layout - -\begin_layout Standard -The output from -\series bold -match_seq -\series default - can be used to generate a dot plot with -\series bold -plot_matches -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-generate-dotplot" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to align sequences? -\begin_inset LatexCommand label -name "sub:How-to-align" - -\end_inset - - -\end_layout - -\begin_layout Standard -Sequences in the stream can be aligned with the -\series bold -align_seq -\series default - biotool that uses Muscle -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.drive5.com/muscle/muscle.html" - -\end_inset - - -\end_layout - -\end_inset - - as aligment engine. - Currently you cannot change any of the Muscle alignment parameters and - -\series bold -align_seq -\series default - will create an alignment based on the defaults (which are really good!): -\end_layout - -\begin_layout LyX-Code -... - | align_seq -\end_layout - -\begin_layout Standard -The aligned output can be written to file in FASTA format using -\series bold -write_fasta -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-fasta" - -\end_inset - -) or in pretty text using -\series bold -write_align -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-alignment" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to create a weight matrix? -\end_layout - -\begin_layout Standard -If you want a weight matrix to show the sequence composition of a stack - of sequences you can use the biotool create_weight_matrix: -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix -\end_layout - -\begin_layout Standard -The result can be output in percent using the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -percent switch: -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix --percent -\end_layout - -\begin_layout Standard -The weight matrix can be written as tabular output with -\series bold -write_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -) after removeing the records containing SEQ with -\series bold -grab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -): -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix | grab --invert --keys=SEQ --keys_only -\end_layout - -\begin_layout LyX-Code -| write_tab --no_stream -\end_layout - -\begin_layout Standard -The V0 column will hold the residue, while the rest of the columns will - hold the frequencies for each sequence position. -\end_layout - -\begin_layout Section -Plotting -\end_layout - -\begin_layout Standard -There exists several biotools for plotting. - Some of these are based on GNUplot -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.gnuplot.info/" - -\end_inset - - -\end_layout - -\end_inset - -, which is an extremely powerful platform to generate all sorts of plots - and even though GNUplot has quite a steep learning curve, the biotools - utilizing GNUplot are simple to use. - GNUplot is able to output a lot of different formats (called terminals - in GNUplot), but the biotools focusses on three formats only: -\end_layout - -\begin_layout Enumerate -The 'dumb' terminal is default to the GNUplot based biotools and will output - a plot in crude ASCII text (Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dumb-terminal" - -\end_inset - -). - This is quite nice for a quick and dirty plot to get an overview of your - data . -\end_layout - -\begin_layout Enumerate -The 'post' or 'postscript' terminal output postscript code which is publication - grade graphics that can be viewed with applications such as Ghostview, - Photoshop, and Preview. -\end_layout - -\begin_layout Enumerate -The 'svg' terminal output's scalable vector graphics (SVG) which is a vector - based format. - SVG is great because you can edit the resulting plot using Photoshop or - Inkscape -\begin_inset Foot -status collapsed - -\begin_layout Standard -Inkscape is a really handy drawing program that is free and open source. - Availble at -\begin_inset LatexCommand htmlurl -target "http://www.inkscape.org" - -\end_inset - - -\end_layout - -\end_inset - - if you want to add additional labels, captions, arrows, and so on and then - save the result in different formats, such as postscript without loosing - resolution. -\end_layout - -\begin_layout Standard -The biotools for plotting that are not based on GNUplot only output SVG - (that may change in the future). -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename lendist_ascii.png - lyxscale 70 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Dumb-terminal" - -\end_inset - -Dumb terminal -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -The output of a length distribution plot in the default 'dumb terminal' - to the terminal window. - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a histogram? -\begin_inset LatexCommand label -name "How-to-plot-histogram" - -\end_inset - - -\end_layout - -\begin_layout Standard -A generic histogram for a given value can be plotted with the biotool -\series bold -plot_histogram -\series default - (Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Histogram" - -\end_inset - -): -\end_layout - -\begin_layout LyX-Code -... - | plot_histogram --key=TISSUE --no_stream -\end_layout - -\begin_layout Standard -(Figure missing) -\end_layout - -\begin_layout Standard -\noindent -\align left -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename histogram.png - lyxscale 70 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Histogram" - -\end_inset - -Histogram -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a length distribution? -\begin_inset LatexCommand label -name "sub:How-to-plot-lendist" - -\end_inset - - -\end_layout - -\begin_layout Standard -Plotting of length distributions, weather sequence lengths, patterns lengths, - hit lengths, -\emph on -etc. - -\emph default - is a really handy thing and can be done with the the biotool -\series bold -plot_lendist -\series default -. - If you have a file with FASTA entries and want to plot the length distribution - you do it like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_seq -\end_layout - -\begin_layout LyX-Code -| plot_lendist --key=SEQ_LEN --no_stream -\end_layout - -\begin_layout Standard -The result will be written to the default dumb terminal and will look like - Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dumb-terminal" - -\end_inset - -. -\end_layout - -\begin_layout Standard -If you instead want the result in postscript format you can do: -\end_layout - -\begin_layout LyX-Code -... - | plot_lendist --key=SEQ_LEN --terminal=post --result_out=file.ps -\end_layout - -\begin_layout Standard -That will generate the plot and save it to file, but not interrupt the data - stream which can then be used in further analysis. - You can also save the plot implicetly using '>', however, it is then important - to terminate the stream with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch: -\end_layout - -\begin_layout LyX-Code -... - | plot_lendist --key=SEQ_LEN --terminal=post --no_stream > file.ps -\end_layout - -\begin_layout Standard -The resulting plot can be seen in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Length-distribution" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard - -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename lendist.ps - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Length-distribution" - -\end_inset - -Length distribution -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Length distribution of 630 piRNA like RNAs. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a chromosome distribution? -\begin_inset LatexCommand label -name "sub:How-to-plot-chrdist" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you have the result of a sequence search against a multi chromosome genome, - it is very practical to be able to plot the distribution of search hits - on the different chromosomes. - This can be done with -\series bold -plot_chrdist -\series default -: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | blat_genome | plot_chrdist --no_stream -\end_layout - -\begin_layout Standard -The above example will result in a crude plot using the 'dumb' terminal, - and if you want to mess around with the results from the BLAT search you - probably want to save the result to file first (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-PSL" - -\end_inset - -). - To plot the chromosome distribution from the saved search result you can - do: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in=file.bed | plot_chrdist --terminal=post --result_out=plot.ps -\end_layout - -\begin_layout Standard -That will result in the output show in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Chromosome-distribution" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard - -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename chrdist.ps - lyxscale 50 - width 12cm - rotateAngle 90 - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Chromosome-distribution" - -\end_inset - -Chromosome distribution -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to generate a dotplot? -\begin_inset LatexCommand label -name "sub:How-to-generate-dotplot" - -\end_inset - - -\end_layout - -\begin_layout Standard -A dotplot is a powerful way to get an overview of the size and location - of sequence insertions, deletions, and duplications between two sequences. - Generating a dotplot with biotools is a two step process where you initially - find all matches between two sequences using the tool -\series bold -match_seq -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-find-matches" - -\end_inset - -) and plot the resulting matches with -\series bold -plot_matches -\series default -. - Matching and plotting two -\emph on -Helicobacter pylori -\emph default - genomes (1.7Mbp) takes around 10 seconds: -\end_layout - -\begin_layout LyX-Code -... - | match_seq | plot_matches --terminal=post --result_out=plot.ps -\end_layout - -\begin_layout Standard -The resulting dotplot is in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dotplot" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename dotplot.ps - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Dotplot" - -\end_inset - -Dotplot -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Forward matches are displayed in green while reverse matches are displayed - in red. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a sequence logo? -\end_layout - -\begin_layout Standard -Sequence logos can be generate with -\series bold -plot_seqlogo -\series default -. - The sequnce type is determined automagically and an entropy scale of 2 - bits and 4 bits is used for nucleotide and peptide sequences, respectively -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand htmlurl -target "http://www.ccrnp.ncifcrf.gov/~toms/paper/hawaii/latex/node5.html" - -\end_inset - - -\end_layout - -\end_inset - -. -\end_layout - -\begin_layout LyX-Code -... - | plot_seqlogo --no_stream --result_out=seqlogo.svg -\end_layout - -\begin_layout Standard -An example of a sequence logo can be seen in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Sequence-logo" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename seqlogo.png - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Sequence-logo" - -\end_inset - -Sequence logo -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a karyogram? -\begin_inset LatexCommand label -name "sub:How-to-plot-karyogram" - -\end_inset - - -\end_layout - -\begin_layout Standard -To plot search hits on genomes use -\series bold -plot_karyogram -\series default -, which will output a nice karyogram in SVG graphics: -\end_layout - -\begin_layout LyX-Code -... - | plot_karyogram --result_out=karyogram.svg -\end_layout - -\begin_layout Standard -The banding data is taken from the UCSC genome browser database and currently - only Human and Mouse is supported. - Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Karyogram" - -\end_inset - - shows the distribution of piRNA like RNAs matched to the Human genome. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename karyogram.png - lyxscale 35 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Karyogram" - -\end_inset - -Karyogram -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Hits from a search of piRNA like RNAs in the Human genome is displayed as - short horizontal bars. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Uploading Results -\end_layout - -\begin_layout Subsection -How do I display my results in the UCSC Genome Browser? -\end_layout - -\begin_layout Standard -Results from the list of biotools below can be uploaded directly to a local - mirror of the UCSC Genome Browser using the biotool -\series bold -upload_to_ucsc -\series default -: -\end_layout - -\begin_layout Itemize -patscan_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Itemize -blat_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Itemize -blast_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Itemize -vmatch_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Standard -The syntax for uploading data the most simple way requires two mandatory - switches: -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database, which is the UCSC database name (such as hg18, mm9, etc.) and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -table which should be the users initials followed by an underscore and a - short description of the data: -\end_layout - -\begin_layout LyX-Code -... - | upload_to_ucsc --database=hg18 --table=mah_snoRNAs -\end_layout - -\begin_layout Standard -The -\series bold -upload_to_ucsc -\series default - biotool modifies the users ~/ucsc/my_tracks.ra file automagically (a backup - is created with the name ~/ucsc/my_tracks.ra~) with default values that - can be overridden using the following switches: -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -short_label - Short label for track - Default=database->table -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -long_label - Long label for track - Default=database->table -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -group - Track group name - Default= -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -priority - Track display priority - Default=1 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -color - Track color - Default=147,73,42 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -chunk_size - Chunks for loading - Default=10000000 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -visibility - Track visibility - Default=pack -\end_layout - -\begin_layout Standard -Also, data in BED or PSL format can be uploaded with -\series bold -upload_to_ucsc -\series default - as long as these reference to genomes and chromosomes existing in the UCSC - Genome Browser: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | upload_to_ucsc ... -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -read_psl --data_in= | upload_to_ucsc ... -\end_layout - -\begin_layout Section -Power Scripting -\end_layout - -\begin_layout Standard -It is possible to do commandline scripting of biotool records using Perl. - Because a biotool record essentially is a hash structure, you can pass - records to -\series bold -bioscript -\series default - command, which is a wrapper around the Perl executable that allows direct - manipulations of the records using the power of Perl. -\end_layout - -\begin_layout Standard -In the below example we replace in all records the value to the CHR key - with a forthrunning number: -\end_layout - -\begin_layout LyX-Code -... - | bioscript 'while($r=get_record( -\backslash -*STDIN)){$r->{CHR}=$i++; put_record($r)}' -\end_layout - -\begin_layout Standard -Something more useful would probably be to create custom FASTA headers. - E.g. - if we read in a BED file, lookup the genomic sequence, create a custom - FASTA header with -\series bold -bioscript -\series default - and output FASTA entries: -\end_layout - -\begin_layout LyX-Code -... - | bioscript 'while($r=get_record( -\backslash -*STDIN)){$r->{SEQ_NAME}= // -\end_layout - -\begin_layout LyX-Code -join("_",$r->{CHR},$r->{CHR_BEG},$r->{CHR_END}); put_record($r)}' -\end_layout - -\begin_layout Standard -And the output: -\end_layout - -\begin_layout LyX-Code ->chr2L_21567527_21567550 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_693380_693403 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_13859534_13859557 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_9005090_9005113 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_2106825_2106848 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_14649031_14649054 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout Section -Trouble shooting -\end_layout - -\begin_layout Standard -Shoot the messenger! -\end_layout - -\begin_layout Section -\start_of_appendix -Keys -\begin_inset LatexCommand label -name "sec:Keys" - -\end_inset - - -\end_layout - -\begin_layout Standard -HIT -\end_layout - -\begin_layout Standard -HIT_BEG -\end_layout - -\begin_layout Standard -HIT_END -\end_layout - -\begin_layout Standard -HIT_LEN -\end_layout - -\begin_layout Standard -HIT_NAME -\end_layout - -\begin_layout Standard -PATTERN -\end_layout - -\begin_layout Section -Switches -\begin_inset LatexCommand label -name "sec:Switches" - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_in -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -data_in -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num -\end_layout - -\begin_layout Section -scan_for_matches README -\begin_inset LatexCommand label -name "sec:scan_for_matches-README" - -\end_inset - - -\end_layout - -\begin_layout LyX-Code - scan_for_matches: -\end_layout - -\begin_layout LyX-Code - A Program to Scan Nucleotide or Protein Sequences for Matching Patterns -\end_layout - -\begin_layout LyX-Code - Ross Overbeek -\end_layout - -\begin_layout LyX-Code - MCS -\end_layout - -\begin_layout LyX-Code - Argonne National Laboratory -\end_layout - -\begin_layout LyX-Code - Argonne, IL 60439 -\end_layout - -\begin_layout LyX-Code - USA -\end_layout - -\begin_layout LyX-Code -Scan_for_matches is a utility that we have written to search for -\end_layout - -\begin_layout LyX-Code -patterns in DNA and protein sequences. - I wrote most of the code, -\end_layout - -\begin_layout LyX-Code -although David Joerg and Morgan Price wrote sections of an -\end_layout - -\begin_layout LyX-Code -earlier version. - The whole notion of pattern matching has a rich -\end_layout - -\begin_layout LyX-Code -history, and we borrowed liberally from many sources. - However, it is -\end_layout - -\begin_layout LyX-Code -worth noting that we were strongly influenced by the elegant tools -\end_layout - -\begin_layout LyX-Code -developed and distributed by David Searls. - My intent is to make the -\end_layout - -\begin_layout LyX-Code -existing tool available to anyone in the research community that might -\end_layout - -\begin_layout LyX-Code -find it useful. - I will continue to try to fix bugs and make suggested -\end_layout - -\begin_layout LyX-Code -enhancements, at least until I feel that a superior tool exists. -\end_layout - -\begin_layout LyX-Code -Hence, I would appreciate it if all bug reports and suggestions are -\end_layout - -\begin_layout LyX-Code -directed to me at Overbeek@mcs.anl.gov. - -\end_layout - -\begin_layout LyX-Code -I will try to log all bug fixes and report them to users that send me -\end_layout - -\begin_layout LyX-Code -their email addresses. - I do not require that you give me your name -\end_layout - -\begin_layout LyX-Code -and address. - However, if you do give it to me, I will try to notify -\end_layout - -\begin_layout LyX-Code -you of serious problems as they are discovered. -\end_layout - -\begin_layout LyX-Code -Getting Started: -\end_layout - -\begin_layout LyX-Code - The distribution should contain at least the following programs: -\end_layout - -\begin_layout LyX-Code - README - This document -\end_layout - -\begin_layout LyX-Code - ggpunit.c - One of the two source files -\end_layout - -\begin_layout LyX-Code - scan_for_matches.c - The second source file -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - run_tests - A perl script to test things -\end_layout - -\begin_layout LyX-Code - show_hits - A handy perl script -\end_layout - -\begin_layout LyX-Code - test_dna_input - Test sequences for DNA -\end_layout - -\begin_layout LyX-Code - test_dna_patterns - Test patterns for DNA scan -\end_layout - -\begin_layout LyX-Code - test_output - Desired output from test -\end_layout - -\begin_layout LyX-Code - test_prot_input - Test protein sequences -\end_layout - -\begin_layout LyX-Code - test_prot_patterns - Test patterns for proteins -\end_layout - -\begin_layout LyX-Code - testit - a perl script used for test -\end_layout - -\begin_layout LyX-Code - Only the first three files are required. - The others are useful, -\end_layout - -\begin_layout LyX-Code - but only if you have Perl installed on your system. - If you do -\end_layout - -\begin_layout LyX-Code - have Perl, I suggest that you type -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - which perl -\end_layout - -\begin_layout LyX-Code - to find out where it installed. - On my system, I get the following -\end_layout - -\begin_layout LyX-Code - response: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - clone% which perl -\end_layout - -\begin_layout LyX-Code - /usr/local/bin/perl -\end_layout - -\begin_layout LyX-Code - indicating that Perl is installed in /usr/local/bin. - Anyway, once -\end_layout - -\begin_layout LyX-Code - you know where it is installed, edit the first line of files -\end_layout - -\begin_layout LyX-Code - testit -\end_layout - -\begin_layout LyX-Code - show_hits -\end_layout - -\begin_layout LyX-Code - replacing /usr/local/bin/perl with the appropriate location. - I -\end_layout - -\begin_layout LyX-Code - will assume that you can do this, although it is not critical (it -\end_layout - -\begin_layout LyX-Code - is needed only to test the installation and to use the "show_hits" -\end_layout - -\begin_layout LyX-Code - utility). - Perl is not required to actually install and run -\end_layout - -\begin_layout LyX-Code - scan_for_matches. - -\end_layout - -\begin_layout LyX-Code - If you do not have Perl, I suggest you get it and install it (it -\end_layout - -\begin_layout LyX-Code - is a wonderful utility). - Information about Perl and how to get it -\end_layout - -\begin_layout LyX-Code - can be found in the book "Programming Perl" by Larry Wall and -\end_layout - -\begin_layout LyX-Code - Randall L. - Schwartz, published by O'Reilly & Associates, Inc. -\end_layout - -\begin_layout LyX-Code - To get started, you will need to compile the program. - I do this -\end_layout - -\begin_layout LyX-Code - using -\end_layout - -\begin_layout LyX-Code - gcc -O -o scan_for_matches ggpunit.c scan_for_matches.c -\end_layout - -\begin_layout LyX-Code - If you do not use GNU C, use -\end_layout - -\begin_layout LyX-Code - cc -O -DCC -o scan_for_matches ggpunit.c scan_for_matches.c -\end_layout - -\begin_layout LyX-Code - which works on my Sun. - -\end_layout - -\begin_layout LyX-Code - Once you have compiled scan_for_matches, you can verify that it -\end_layout - -\begin_layout LyX-Code - works with -\end_layout - -\begin_layout LyX-Code - clone% run_tests tmp -\end_layout - -\begin_layout LyX-Code - clone% diff tmp test_output -\end_layout - -\begin_layout LyX-Code - You may get a few strange lines of the sort -\end_layout - -\begin_layout LyX-Code - clone% run_tests tmp -\end_layout - -\begin_layout LyX-Code - rm: tmp: No such file or directory -\end_layout - -\begin_layout LyX-Code - clone% diff tmp test_output -\end_layout - -\begin_layout LyX-Code - These should cause no concern. - However, if the "diff" shows that -\end_layout - -\begin_layout LyX-Code - tmp and test_output are different, contact me (you have a -\end_layout - -\begin_layout LyX-Code - problem). - -\end_layout - -\begin_layout LyX-Code - You should now be able to use scan_for_matches by following the -\end_layout - -\begin_layout LyX-Code - instructions given below (which is all the normal user should have -\end_layout - -\begin_layout LyX-Code - to understand, once things are installed properly). -\end_layout - -\begin_layout LyX-Code - ============================================================== -\end_layout - -\begin_layout LyX-Code -How to run scan_for_matches: -\end_layout - -\begin_layout LyX-Code - To run the program, you type need to create two files -\end_layout - -\begin_layout LyX-Code - 1. - the first file contains the pattern you wish to scan for; I'll -\end_layout - -\begin_layout LyX-Code - call this file pat_file in what follows (but any name is ok) -\end_layout - -\begin_layout LyX-Code - 2. - the second file contains a set of sequences to scan. - These -\end_layout - -\begin_layout LyX-Code - should be in "fasta format". - Just look at the contents of -\end_layout - -\begin_layout LyX-Code - test_dna_input to see examples of this format. - Basically, -\end_layout - -\begin_layout LyX-Code - each sequence begins with a line of the form -\end_layout - -\begin_layout LyX-Code - >sequence_id -\end_layout - -\begin_layout LyX-Code - and is followed by one or more lines containing the sequence. -\end_layout - -\begin_layout LyX-Code - Once these files have been created, you just use -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file < input_file -\end_layout - -\begin_layout LyX-Code - to scan all of the input sequences for the given pattern. - As an -\end_layout - -\begin_layout LyX-Code - example, suppose that pat_file contains a single line of the form -\end_layout - -\begin_layout LyX-Code - p1=4...7 3...8 ~p1 -\end_layout - -\begin_layout LyX-Code - Then, -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - should produce two "hits". - When I run this on my machine, I get -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - >tst1:[6,27] -\end_layout - -\begin_layout LyX-Code - cguaacc ggttaacc gguuacg -\end_layout - -\begin_layout LyX-Code - >tst2:[6,27] -\end_layout - -\begin_layout LyX-Code - CGUAACC GGTTAACC GGUUACG -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code -Simple Patterns Built by Matching Ranges and Reverse Complements -\end_layout - -\begin_layout LyX-Code - Let me first explain this simple pattern: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - p1=4...7 3...8 ~p1 -\end_layout - -\begin_layout LyX-Code - The pattern consists of three "pattern units" separated by spaces. -\end_layout - -\begin_layout LyX-Code - The first pattern unit is -\end_layout - -\begin_layout LyX-Code - p1=4...7 -\end_layout - -\begin_layout LyX-Code - which means "match 4 to 7 characters and call them p1". - The -\end_layout - -\begin_layout LyX-Code - second pattern unit is -\end_layout - -\begin_layout LyX-Code - 3...8 -\end_layout - -\begin_layout LyX-Code - which means "then match 3 to 8 characters". - The last pattern unit -\end_layout - -\begin_layout LyX-Code - is -\end_layout - -\begin_layout LyX-Code - ~p1 -\end_layout - -\begin_layout LyX-Code - which means "match the reverse complement of p1". - The first -\end_layout - -\begin_layout LyX-Code - reported hit is shown as -\end_layout - -\begin_layout LyX-Code - >tst1:[6,27] -\end_layout - -\begin_layout LyX-Code - cguaacc ggttaacc gguuacg -\end_layout - -\begin_layout LyX-Code - which states that characters 6 through 27 of sequence tst1 were -\end_layout - -\begin_layout LyX-Code - matched. - "cguaac" matched the first pattern unit, "ggttaacc" the -\end_layout - -\begin_layout LyX-Code - second, and "gguuacg" the third. - This is an example of a common -\end_layout - -\begin_layout LyX-Code - type of pattern used to search for sections of DNA or RNA that -\end_layout - -\begin_layout LyX-Code - would fold into a hairpin loop. -\end_layout - -\begin_layout LyX-Code -Searching Both Strands -\end_layout - -\begin_layout LyX-Code - Now for a short aside: scan_for_matches only searched the -\end_layout - -\begin_layout LyX-Code - sequences in the input file; it did not search the opposite -\end_layout - -\begin_layout LyX-Code - strand. - With a pattern of the sort we just used, there is not -\end_layout - -\begin_layout LyX-Code - need o search the opposite strand. - However, it is normally the -\end_layout - -\begin_layout LyX-Code - case that you will wish to search both the sequence and the -\end_layout - -\begin_layout LyX-Code - opposite strand (i.e., the reverse complement of the sequence). -\end_layout - -\begin_layout LyX-Code - To do that, you would just use the "-c" command line. - For example, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - Hits on the opposite strand will show a beginning location greater -\end_layout - -\begin_layout LyX-Code - than te end location of the match. -\end_layout - -\begin_layout LyX-Code -Defining Pairing Rules and Allowing Mismatches, Insertions, and Deletions -\end_layout - -\begin_layout LyX-Code - Let us stop now and ask "What additional features would one need to -\end_layout - -\begin_layout LyX-Code - really find the kinds of loop structures that characterize tRNAs, -\end_layout - -\begin_layout LyX-Code - rRNAs, and so forth?" I can immediately think of two: -\end_layout - -\begin_layout LyX-Code - a) you will need to be able to allow non-standard pairings -\end_layout - -\begin_layout LyX-Code - (those other than G-C and A-U), and -\end_layout - -\begin_layout LyX-Code - b) you will need to be able to tolerate some number of -\end_layout - -\begin_layout LyX-Code - mismatches and bulges. -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - Let me first show you how to handle non-standard "rules for -\end_layout - -\begin_layout LyX-Code - pairing in reverse complements". - Consider the following pattern, -\end_layout - -\begin_layout LyX-Code - which I show as two line (you may use as many lines as you like in -\end_layout - -\begin_layout LyX-Code - forming a pattern, although you can only break a pattern at points -\end_layout - -\begin_layout LyX-Code - where space would be legal): -\end_layout - -\begin_layout LyX-Code - r1={au,ua,gc,cg,gu,ug,ga,ag} -\end_layout - -\begin_layout LyX-Code - p1=2...3 0...4 p2=2...5 1...5 r1~p2 0...4 ~p1 -\end_layout - -\begin_layout LyX-Code - The first "pattern unit" does not actually match anything; rather, -\end_layout - -\begin_layout LyX-Code - it defines a "pairing rule" in which standard pairings are -\end_layout - -\begin_layout LyX-Code - allowed, as well as G-A and A-G (in case you wondered, Us and Ts -\end_layout - -\begin_layout LyX-Code - and upper and lower case can be used interchangably; for example -\end_layout - -\begin_layout LyX-Code - r1={AT,UA,gc,cg} could be used to define the "standard rule" for -\end_layout - -\begin_layout LyX-Code - pairings). - The second line consists of six pattern units which -\end_layout - -\begin_layout LyX-Code - may be interpreted as follows: -\end_layout - -\begin_layout LyX-Code - p1=2...3 match 2 or 3 characters (call it p1) -\end_layout - -\begin_layout LyX-Code - 0...4 match 0 to 4 characters -\end_layout - -\begin_layout LyX-Code - p2=2...5 match 2 to 5 characters (call it p2) -\end_layout - -\begin_layout LyX-Code - 1...5 match 1 to 5 characters -\end_layout - -\begin_layout LyX-Code - r1~p2 match the reverse complement of p2, -\end_layout - -\begin_layout LyX-Code - allowing G-A and A-G pairs -\end_layout - -\begin_layout LyX-Code - 0...4 match 0 to 4 characters -\end_layout - -\begin_layout LyX-Code - ~p1 match the reverse complement of p1 -\end_layout - -\begin_layout LyX-Code - allowing only G-C, C-G, A-T, and T-A pairs -\end_layout - -\begin_layout LyX-Code - Thus, r1~p2 means "match the reverse complement of p2 using rule r1". -\end_layout - -\begin_layout LyX-Code - Now let us consider the issue of tolerating mismatches and bulges. -\end_layout - -\begin_layout LyX-Code - You may add a "qualifier" to the pattern unit that gives the -\end_layout - -\begin_layout LyX-Code - tolerable number of "mismatches, deletions, and insertions". -\end_layout - -\begin_layout LyX-Code - Thus, -\end_layout - -\begin_layout LyX-Code - p1=10...10 3...8 ~p1[1,2,1] -\end_layout - -\begin_layout LyX-Code - means that the third pattern unit must match 10 characters, -\end_layout - -\begin_layout LyX-Code - allowing one "mismatch" (a pairing other than G-C, C-G, A-T, or -\end_layout - -\begin_layout LyX-Code - T-A), two deletions (a deletion is a character that occurs in p1, -\end_layout - -\begin_layout LyX-Code - but has been "deleted" from the string matched by ~p1), and one -\end_layout - -\begin_layout LyX-Code - insertion (an "insertion" is a character that occurs in the string -\end_layout - -\begin_layout LyX-Code - matched by ~p1, but not for which no corresponding character -\end_layout - -\begin_layout LyX-Code - occurs in p1). - In this case, the pattern would match -\end_layout - -\begin_layout LyX-Code - ACGTACGTAC GGGGGGGG GCGTTACCT -\end_layout - -\begin_layout LyX-Code - which is, you must admit, a fairly weak loop. - It is common to -\end_layout - -\begin_layout LyX-Code - allow mismatches, but you will find yourself using insertions and -\end_layout - -\begin_layout LyX-Code - deletions much more rarely. - In any event, you should note that -\end_layout - -\begin_layout LyX-Code - allowing mismatches, insertions, and deletions does force the -\end_layout - -\begin_layout LyX-Code - program to try many additional possible pairings, so it does slow -\end_layout - -\begin_layout LyX-Code - things down a bit. -\end_layout - -\begin_layout LyX-Code -How Patterns Are Matched -\end_layout - -\begin_layout LyX-Code - Now is as good a time as any to discuss the basic flow of control -\end_layout - -\begin_layout LyX-Code - when matching patterns. - Recall that a "pattern" is a sequence of -\end_layout - -\begin_layout LyX-Code - "pattern units". - Suppose that the pattern units were -\end_layout - -\begin_layout LyX-Code - u1 u2 u3 u4 ... - un -\end_layout - -\begin_layout LyX-Code - The scan of a sequence S begins by setting the current position -\end_layout - -\begin_layout LyX-Code - to 1. - Then, an attempt is made to match u1 starting at the -\end_layout - -\begin_layout LyX-Code - current position. - Each attempt to match a pattern unit can -\end_layout - -\begin_layout LyX-Code - succeed or fail. - If it succeeds, then an attempt is made to match -\end_layout - -\begin_layout LyX-Code - the next unit. - If it fails, then an attempt is made to find an -\end_layout - -\begin_layout LyX-Code - alternative match for the immediately preceding pattern unit. - If -\end_layout - -\begin_layout LyX-Code - this succeeds, then we proceed forward again to the next unit. - If -\end_layout - -\begin_layout LyX-Code - it fails we go back to the preceding unit. - This process is called -\end_layout - -\begin_layout LyX-Code - "backtracking". - If there are no previous units, then the current -\end_layout - -\begin_layout LyX-Code - position is incremented by one, and everything starts again. - This -\end_layout - -\begin_layout LyX-Code - proceeds until either the current position goes past the end of -\end_layout - -\begin_layout LyX-Code - the sequence or all of the pattern units succeed. - On success, -\end_layout - -\begin_layout LyX-Code - scan_for_matches reports the "hit", the current position is set -\end_layout - -\begin_layout LyX-Code - just past the hit, and an attempt is made to find another hit. -\end_layout - -\begin_layout LyX-Code - If you wish to limit the scan to simply finding a maximum of, say, -\end_layout - -\begin_layout LyX-Code - 10 hits, you can use the -n option (-n 10 would set the limit to -\end_layout - -\begin_layout LyX-Code - 10 reported hits). - For example, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c -n 1 pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - would search for just the first hit (and would stop searching the -\end_layout - -\begin_layout LyX-Code - current sequences or any that follow in the input file). -\end_layout - -\begin_layout LyX-Code -Searching for repeats: -\end_layout - -\begin_layout LyX-Code - In the last section, I discussed almost all of the details -\end_layout - -\begin_layout LyX-Code - required to allow you to look for repeats. - Consider the following -\end_layout - -\begin_layout LyX-Code - set of patterns: -\end_layout - -\begin_layout LyX-Code - p1=6...6 3...8 p1 (find exact 6 character repeat separated -\end_layout - -\begin_layout LyX-Code - by to 8 characters) -\end_layout - -\begin_layout LyX-Code - p1=6...6 3..8 p1[1,0,0] (allow one mismatch) -\end_layout - -\begin_layout LyX-Code - p1=3...3 p1[1,0,0] p1[1,0,0] p1[1,0,0] -\end_layout - -\begin_layout LyX-Code - (match 12 characters that are the remains -\end_layout - -\begin_layout LyX-Code - of a 3-character sequence occurring 4 times) -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - p1=4...8 0...3 p2=6...8 p1 0...3 p2 -\end_layout - -\begin_layout LyX-Code - (This would match things like -\end_layout - -\begin_layout LyX-Code - ATCT G TCTTT ATCT TG TCTTT -\end_layout - -\begin_layout LyX-Code - ) -\end_layout - -\begin_layout LyX-Code -Searching for particular sequences: -\end_layout - -\begin_layout LyX-Code - Occasionally, one wishes to match a specific, known sequence. -\end_layout - -\begin_layout LyX-Code - In such a case, you can just give the sequence (along with an -\end_layout - -\begin_layout LyX-Code - optional statement of the allowable mismatches, insertions, and -\end_layout - -\begin_layout LyX-Code - deletions). - Thus, -\end_layout - -\begin_layout LyX-Code - p1=6...8 GAGA ~p1 (match a hairpin with GAGA as the loop) -\end_layout - -\begin_layout LyX-Code - RRRRYYYY (match 4 purines followed by 4 pyrimidines) -\end_layout - -\begin_layout LyX-Code - TATAA[1,0,0] (match TATAA, allowing 1 mismatch) -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -Matches against a "weight matrix": -\end_layout - -\begin_layout LyX-Code - I will conclude my examples of the types of pattern units -\end_layout - -\begin_layout LyX-Code - available for matching against nucleotide sequences by discussing a -\end_layout - -\begin_layout LyX-Code - crude implemetation of matching using a "weight matrix". - While I -\end_layout - -\begin_layout LyX-Code - am less than overwhelmed with the syntax that I chose, I think that -\end_layout - -\begin_layout LyX-Code - the reader should be aware that I was thinking of generating -\end_layout - -\begin_layout LyX-Code - patterns containing such pattern units automatically from -\end_layout - -\begin_layout LyX-Code - alignments (and did not really plan on typing such things in by -\end_layout - -\begin_layout LyX-Code - hand very often). - Anyway, suppose that you wanted to match a -\end_layout - -\begin_layout LyX-Code - sequence of eight characters. - The "consensus" of these eight -\end_layout - -\begin_layout LyX-Code - characters is GRCACCGS, but the actual "frequencies of occurrence" -\end_layout - -\begin_layout LyX-Code - are given in the matrix below. - Thus, the first character is an A -\end_layout - -\begin_layout LyX-Code - 16% the time and a G 84% of the time. - The second is an A 57% of -\end_layout - -\begin_layout LyX-Code - the time, a C 10% of the time, a G 29% of the time, and a T 4% of -\end_layout - -\begin_layout LyX-Code - the time. - -\end_layout - -\begin_layout LyX-Code - C1 C2 C3 C4 C5 C6 C7 C8 -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - A 16 57 0 95 0 18 0 0 -\end_layout - -\begin_layout LyX-Code - C 0 10 80 0 100 60 0 50 -\end_layout - -\begin_layout LyX-Code - G 84 29 0 0 0 20 100 50 -\end_layout - -\begin_layout LyX-Code - T 0 4 20 5 0 2 0 0 -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - One could use the following pattern unit to search for inexact -\end_layout - -\begin_layout LyX-Code - matches related to such a "weight matrix": -\end_layout - -\begin_layout LyX-Code - {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), -\end_layout - -\begin_layout LyX-Code - (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 -\end_layout - -\begin_layout LyX-Code - This pattern unit will attempt to match exactly eight characters. -\end_layout - -\begin_layout LyX-Code - For each character in the sequence, the entry in the corresponding -\end_layout - -\begin_layout LyX-Code - tuple is added to an accumulated sum. - If the sum is greater than -\end_layout - -\begin_layout LyX-Code - 450, the match succeeds; else it fails. -\end_layout - -\begin_layout LyX-Code - Recently, this feature was upgraded to allow ranges. - Thus, -\end_layout - -\begin_layout LyX-Code - 600 > {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), -\end_layout - -\begin_layout LyX-Code - (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 -\end_layout - -\begin_layout LyX-Code - will work, as well. -\end_layout - -\begin_layout LyX-Code -Allowing Alternatives: -\end_layout - -\begin_layout LyX-Code - Very occasionally, you may wish to allow alternative pattern units -\end_layout - -\begin_layout LyX-Code - (i.e., "match either A or B"). - You can do this using something -\end_layout - -\begin_layout LyX-Code - like -\end_layout - -\begin_layout LyX-Code - ( GAGA | GCGCA) -\end_layout - -\begin_layout LyX-Code - which says "match either GAGA or GCGCA". - You may take -\end_layout - -\begin_layout LyX-Code - alternatives of a list of pattern units, for example -\end_layout - -\begin_layout LyX-Code - (p1=3...3 3...8 ~p1 | p1=5...5 4...4 ~p1 GGG) -\end_layout - -\begin_layout LyX-Code - would match one of two sequences of pattern units. - There is one -\end_layout - -\begin_layout LyX-Code - clumsy aspect of the syntax: to match a list of alternatives, you -\end_layout - -\begin_layout LyX-Code - need to fully the request. - Thus, -\end_layout - -\begin_layout LyX-Code - (GAGA | (GCGCA | TTCGA)) -\end_layout - -\begin_layout LyX-Code - would be needed to try the three alternatives. -\end_layout - -\begin_layout LyX-Code -One Minor Extension -\end_layout - -\begin_layout LyX-Code - Sometimes a pattern will contain a sequence of distinct ranges, -\end_layout - -\begin_layout LyX-Code - and you might wish to limit the sum of the lengths of the matched -\end_layout - -\begin_layout LyX-Code - subsequences. - For example, suppose that you basically wanted to -\end_layout - -\begin_layout LyX-Code - match something like -\end_layout - -\begin_layout LyX-Code - ARRYYTT p1=0...5 GCA[1,0,0] p2=1...6 ~p1 4...8 ~p2 p3=4...10 CCT -\end_layout - -\begin_layout LyX-Code - but that the sum of the lengths of p1, p2, and p3 must not exceed -\end_layout - -\begin_layout LyX-Code - eight characters. - To do this, you could add -\end_layout - -\begin_layout LyX-Code - length(p1+p2+p3) < 9 -\end_layout - -\begin_layout LyX-Code - as the last pattern unit. - It will just succeed or fail (but does -\end_layout - -\begin_layout LyX-Code - not actually match any characters in the sequence). -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -Matching Protein Sequences -\end_layout - -\begin_layout LyX-Code - Suppose that the input file contains protein sequences. - In this -\end_layout - -\begin_layout LyX-Code - case, you must invoke scan_for_matches with the "-p" option. - You -\end_layout - -\begin_layout LyX-Code - cannot use aspects of the language that relate directly to -\end_layout - -\begin_layout LyX-Code - nucleotide sequences (e.g., the -c command line option or pattern -\end_layout - -\begin_layout LyX-Code - constructs referring to the reverse complement of a previously -\end_layout - -\begin_layout LyX-Code - matched unit). - -\end_layout - -\begin_layout LyX-Code - You also have two additional constructs that allow you to match -\end_layout - -\begin_layout LyX-Code - either "one of a set of amino acids" or "any amino acid other than -\end_layout - -\begin_layout LyX-Code - those a given set". - For example, -\end_layout - -\begin_layout LyX-Code - p1=0...4 any(HQD) 1...3 notany(HK) p1 -\end_layout - -\begin_layout LyX-Code - would successfully match a string like -\end_layout - -\begin_layout LyX-Code - YWV D AA C YWV -\end_layout - -\begin_layout LyX-Code -Using the show_hits Utility -\end_layout - -\begin_layout LyX-Code - When viewing a large set of complex matches, you might find it -\end_layout - -\begin_layout LyX-Code - convenient to post-process the scan_for_matches output to get a -\end_layout - -\begin_layout LyX-Code - more readable version. - We provide a simple post-processor called -\end_layout - -\begin_layout LyX-Code - "show_hits". - To see its effect, just pipe the output of a -\end_layout - -\begin_layout LyX-Code - scan_for_matches into show_hits: -\end_layout - -\begin_layout LyX-Code - Normal Output: -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp -\end_layout - -\begin_layout LyX-Code - >tst1:[1,28] -\end_layout - -\begin_layout LyX-Code - gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - >tst1:[28,1] -\end_layout - -\begin_layout LyX-Code - gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - >tst2:[2,31] -\end_layout - -\begin_layout LyX-Code - CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - >tst2:[31,2] -\end_layout - -\begin_layout LyX-Code - CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - >tst3:[3,32] -\end_layout - -\begin_layout LyX-Code - gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - >tst3:[32,3] -\end_layout - -\begin_layout LyX-Code - gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - Piped Through show_hits: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp | show_hits -\end_layout - -\begin_layout LyX-Code - tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code - Optionally, you can specify which of the "fields" in the matches -\end_layout - -\begin_layout LyX-Code - you wish to sort on, and show_hits will sort them. - The field -\end_layout - -\begin_layout LyX-Code - numbers start with 0. - So, you might get something like -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp | show_hits 2 1 -\end_layout - -\begin_layout LyX-Code - tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code - In this case, the hits have been sorted on fields 2 and 1 (that is, -\end_layout - -\begin_layout LyX-Code - the third and second matched subfields). -\end_layout - -\begin_layout LyX-Code - show_hits is just one possible little post-processor, and you -\end_layout - -\begin_layout LyX-Code - might well wish to write a customized one for yourself. -\end_layout - -\begin_layout LyX-Code -Reducing the Cost of a Search -\end_layout - -\begin_layout LyX-Code - The scan_for_matches utility uses a fairly simple search, and may -\end_layout - -\begin_layout LyX-Code - consume large amounts of CPU time for complex patterns. - Someday, -\end_layout - -\begin_layout LyX-Code - I may decide to optimize the code. - However, until then, let me -\end_layout - -\begin_layout LyX-Code - mention one useful technique. - -\end_layout - -\begin_layout LyX-Code - When you have a complex pattern that includes a number of varying -\end_layout - -\begin_layout LyX-Code - ranges, imprecise matches, and so forth, it is useful to -\end_layout - -\begin_layout LyX-Code - "pipeline" matches. - That is, form a simpler pattern that can be -\end_layout - -\begin_layout LyX-Code - used to scan through a large database extracting sections that -\end_layout - -\begin_layout LyX-Code - might be matched by the more complex pattern. - Let me illustrate -\end_layout - -\begin_layout LyX-Code - with a short example. - Suppose that you really wished to match the -\end_layout - -\begin_layout LyX-Code - pattern -\end_layout - -\begin_layout LyX-Code - p1=3...5 0...8 ~p1[1,1,0] p2=6...7 3...6 AGC 3...5 RYGC ~p2[1,0,0] -\end_layout - -\begin_layout LyX-Code - In this case, the pattern units AGC 3...5 RYGC can be used to rapidly -\end_layout - -\begin_layout LyX-Code - constrain the overall search. - You can preprocess the overall -\end_layout - -\begin_layout LyX-Code - database using the pattern: -\end_layout - -\begin_layout LyX-Code - 31...31 AGC 3...5 RYGC 7...7 -\end_layout - -\begin_layout LyX-Code - Put the complex pattern in pat_file1 and the simpler pattern in -\end_layout - -\begin_layout LyX-Code - pat_file2. - Then use, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c pat_file2 < nucleotide_database | -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file1 -\end_layout - -\begin_layout LyX-Code - The output will show things like -\end_layout - -\begin_layout LyX-Code - >seqid:[232,280][2,47] -\end_layout - -\begin_layout LyX-Code - matches pieces -\end_layout - -\begin_layout LyX-Code - Then, the actual section of the sequence that was matched can be -\end_layout - -\begin_layout LyX-Code - easily computed as [233,278] (remember, the positions start from -\end_layout - -\begin_layout LyX-Code - 1, not 0). -\end_layout - -\begin_layout LyX-Code - Let me finally add, you should do a few short experiments to see -\end_layout - -\begin_layout LyX-Code - whether or not such pipelining actually improves performance -- it -\end_layout - -\begin_layout LyX-Code - is not always obvious where the time is going, and I have -\end_layout - -\begin_layout LyX-Code - sometimes found that the added complexity of pipelining actually -\end_layout - -\begin_layout LyX-Code - slowed things up. - It gets its best improvements when there are -\end_layout - -\begin_layout LyX-Code - exact matches of more than just a few characters that can be -\end_layout - -\begin_layout LyX-Code - rapidly used to eliminate large sections of the database. -\end_layout - -\begin_layout LyX-Code -============= -\end_layout - -\begin_layout LyX-Code -Additions: -\end_layout - -\begin_layout LyX-Code -Feb 9, 1995: the pattern units ^ and $ now work as in normal regular -\end_layout - -\begin_layout LyX-Code - expressions. - That is -\end_layout - -\begin_layout LyX-Code - TTF $ -\end_layout - -\begin_layout LyX-Code - matches only TTF at the end of the string and -\end_layout - -\begin_layout LyX-Code - ^ TTF -\end_layout - -\begin_layout LyX-Code - matches only an initial TTF -\end_layout - -\begin_layout LyX-Code - The pattern unit -\end_layout - -\begin_layout LyX-Code - >>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<< -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -# Stuff that enables biotools. -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -export TOOLS_DIR="/home/m.hansen/tools" # Contains binaries for BLAST - and Vmatch. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -export INST_DIR="/home/m.hansen/maasha" # Contains scripts and modules. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -export DATA_DIR="/home/m.hansen/DATA" # Contains genomic data etc. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -export TMP_DIR="/home/m.hansen/maasha/tmp" # Required temporary directory. -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -export PATH="$PATH:$TOOLS_DIR/blast-2.2.17/bin:$TOOLS_DIR/vmatch.distribution" -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -export PATH="$INST_DIR/bin/:$INST_DIR/perl_scripts/:$INST_DIR/perl_scripts/b -iotools:$PATH" -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -export PERL5LIB="$PERL5LIB:$INST_DIR" -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -# Alias allowing power scripting with biotools -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -alias bioscript="perl -I $INST_DIR/Maasha -MBiotools=read_stream,get_recor -d,put_record -e" -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -# >>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<< -\end_layout - -\begin_layout Section -Getting Started -\end_layout - -\begin_layout Standard -The biotool -\series bold -list_biotools -\series default - lists all the biotools along with a description: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -list_biotools -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -align_seq Align sequences in stream using Muscle. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -analyze_seq Analysis the residue composition of each sequence - in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -analyze_vals Determine type, count, min, max, sum and mean for - values in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -blast_seq BLAST sequences in stream against a specified database. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -blat_seq BLAT sequences in stream against a specified genome. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -complement_seq Complement sequences in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_records Count the number of records in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_seq Count sequences in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_vals Count the number of times values of given keys exists - in stream. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -create_blast_db Create a BLAST database from sequences in stream for - use with BLAST. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -... -\end_layout - -\begin_layout Standard -To list the biotools for writing different formats, you can use unix's grep - like this: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -list_biotools | grep write -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_align Write aligned sequences in pretty alignment format. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_bed Write records from stream as BED lines. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_blast Write BLAST records from stream in BLAST tabular format - (-m8 and 9). -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_fasta Write sequences in FASTA format. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_psl Write records from stream in PSL format. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -write_tab Write records from stream as tab separated table. -\end_layout - -\begin_layout Standard -In order to find out how a specific biotool works, you just type the program - name without any arguments and press return and the usage of the biotool - will be displayed. - E.g. - -\series bold -read_fasta -\series default - : -\end_layout - -\begin_layout Standard -\begin_inset Box Frameless -position "t" -hor_pos "c" -has_inner_box 1 -inner_pos "t" -use_parbox 0 -width "100col%" -special "none" -height "1in" -height_special "totalheight" -status open - -\begin_layout LyX-Code - -\size scriptsize -Program name: read_fasta -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Author: Martin Asser Hansen - Copyright (C) - All rights reserved -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Contact: mail@maasha.dk -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Date: August 2007 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -License: GNU General Public License version 2 (http://www.gnu.org/copyleft/ -gpl.html) -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Description: Read FASTA entries. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Usage: read_fasta [options] -i -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Options: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-i | --data_in=] - Comma separated list of files - to read. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-n | --num=] - Limit number of records to read. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-I | --stream_in=] - Read input stream from file - - Default=STDIN -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - [-O | --stream_out=] - Write output stream to file - - Default=STDOUT -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -Examples: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test.fna - Read FASTA entries from file. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test1.fna,test2,fna - Read FASTA entries from files. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i '*.fna' - Read FASTA entries from files. -\end_layout - -\begin_layout LyX-Code - -\size scriptsize - read_fasta -i test.fna -n 10 - Read first 10 FASTA entries from - file. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -The Data Stream -\end_layout - -\begin_layout Subsection -How to read the data stream from file? -\begin_inset LatexCommand label -name "sub:How-to-read-stream" - -\end_inset - - -\end_layout - -\begin_layout Standard -You want to read a data stream that you previously have saved to file in - biotools format. - This can be done implicetly or explicitly. - The implicit way uses the 'stdout' stream of the Unix terminal: -\end_layout - -\begin_layout LyX-Code -cat | -\end_layout - -\begin_layout Standard -cat is the Unix command that reads a file and output the result to 'stdout' - --- which in this case is piped to any biotool represented by the . - It is also possible to read the data stream using '<' to direct the 'stdout' - stream into the biotool like this: -\end_layout - -\begin_layout LyX-Code - < -\end_layout - -\begin_layout Standard -However, that will not work if you pipe more biotools together. - Then it is much safer to read the stream from a file explicitly like this: -\end_layout - -\begin_layout LyX-Code - --stream_in= -\end_layout - -\begin_layout Standard -Here the filename is explicetly given to the biotool with - the switch -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_in. - This switch works with all biotools. - It is also possible to read in data from multiple sources by repeating - the explicit read step: -\end_layout - -\begin_layout LyX-Code - --stream_in= | --stream_in= -\end_layout - -\begin_layout Subsection -How to write the data stream to file? -\begin_inset LatexCommand label -name "sub:How-to-write-stream" - -\end_inset - - -\end_layout - -\begin_layout Standard -In order to save the output stream from a biotool to file, so you can read - in the stream again at a later time, you can do one of two things: -\end_layout - -\begin_layout LyX-Code - > -\end_layout - -\begin_layout Standard -All, the biotools write the data stream to 'stdout' by default which can - be written to a file by redirecting 'stdout' to file using '>' , however, - if one of the biotools for writing other formats is used then the both - the biotools records as well as the result output will go to 'stdout' in - a mixture causing havock! To avoid this you must use the switch -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out that explictly tells the biotool to write the output stream to - file: -\end_layout - -\begin_layout LyX-Code - --stream_out= -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out switch works with all biotools. -\end_layout - -\begin_layout Subsection -How to terminate the data stream? -\end_layout - -\begin_layout Standard -The data stream is never stops unless the user want to save the stream or - by supplying the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch that will terminate the stream: -\end_layout - -\begin_layout LyX-Code - --no_stream -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch only works with those biotools where it makes sense that - the user might want to terminale the data stream, -\emph on -i.e -\emph default -. - after an analysis step where the user wants to output the result, but not - the data stream. -\end_layout - -\begin_layout Subsection -How to write my results to file? -\begin_inset LatexCommand label -name "sub:How-to-write-result" - -\end_inset - - -\end_layout - -\begin_layout Standard -Saving the result of an analysis to file can be done implicitly or explicitly. - The implicit way: -\end_layout - -\begin_layout LyX-Code - --no_stream > -\end_layout - -\begin_layout Standard -If you use '>' to redirect 'stdout' to file then it is important to use - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch to avoid writing a mix of biotools records and result to - the same file causing havock. - The safe way is to use the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch which explicetly tells the biotool to write the result - to a given file: -\end_layout - -\begin_layout LyX-Code - --result_out= -\end_layout - -\begin_layout Standard -Using the above method will not terminate the stream, so it is possible - to pipe that into another biotool generating different results: -\end_layout - -\begin_layout LyX-Code - --result_out= | --result_out= -\end_layout - -\begin_layout Standard -And still the data stream will continue unless terminated with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream: -\end_layout - -\begin_layout LyX-Code - --result_out= --no_stream -\end_layout - -\begin_layout Standard -Or written to file using implicitly or explicity -\begin_inset LatexCommand eqref -reference "sub:How-to-write-result" - -\end_inset - -. - The explicit way: -\end_layout - -\begin_layout LyX-Code - --result_out= --stream_out= -\end_layout - -\begin_layout Subsection -How to read data from multiple sources? -\end_layout - -\begin_layout Standard -To read multiple data sources, with the same type or different type of data - do: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= -\end_layout - -\begin_layout Standard -where type is the data type a specific biotool reads. -\end_layout - -\begin_layout Section -Reading input -\end_layout - -\begin_layout Subsection -How to read biotools input? -\end_layout - -\begin_layout Standard -See -\begin_inset LatexCommand eqref -reference "sub:How-to-read-stream" - -\end_inset - -. -\end_layout - -\begin_layout Subsection -How to read in data? -\end_layout - -\begin_layout Standard -Data in different formats can be read with the appropriate biotool for that - format. - The biotools are typicalled named 'read_' such as -\series bold -read_fasta -\series default -, -\series bold -read_bed -\series default -, -\series bold -read_tab -\series default -, etc., and all behave in a similar manner. - Data can be read by supplying the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -data_in switch and a file name to the file containing the data: -\end_layout - -\begin_layout LyX-Code - --data_in= -\end_layout - -\begin_layout Standard -It is also possible to read in a saved biotools stream (see -\begin_inset LatexCommand ref -reference "sub:How-to-read-stream" - -\end_inset - -) as well as reading data in one go: -\end_layout - -\begin_layout LyX-Code - --stream_in= --data_in= -\end_layout - -\begin_layout Standard -If you want to read data from several files you can do this: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= -\end_layout - -\begin_layout Standard -If you have several data files you can read in all explicitly with a comma - separated list: -\end_layout - -\begin_layout LyX-Code - --data_in=file1,file2,file3 -\end_layout - -\begin_layout Standard -And it is also possible to use file globbing -\begin_inset Foot -status open - -\begin_layout Standard -using the short option will only work if you quote the argument -i '*.fna' -\end_layout - -\end_inset - -: -\end_layout - -\begin_layout LyX-Code - --data_in=*.fna -\end_layout - -\begin_layout Standard -Or in a combination: -\end_layout - -\begin_layout LyX-Code - --data_in=file1,/dir/*.fna -\end_layout - -\begin_layout Standard -Finally, it is possible to read in data in different formats using the appropria -te biotool for each format: -\end_layout - -\begin_layout LyX-Code - --data_in= | --data_in= ... -\end_layout - -\begin_layout Subsection -How to read FASTA input? -\end_layout - -\begin_layout Standard -Sequences in FASTA format can be read explicitly using -\series bold -read_fasta -\series default -: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= -\end_layout - -\begin_layout Subsection -How to read alignment input? -\end_layout - -\begin_layout Standard -If your alignment if FASTA formatted then you can -\series bold -read_align -\series default -. - It is also possible to use -\series bold -read_fasta -\series default - since the data is FASTA formatted, however, with -\series bold -read_fasta -\series default - the key ALIGN will be omitted. - The ALIGN key is used to determine which sequences belong to what alignment - which is required for -\series bold -write_align -\series default -. -\end_layout - -\begin_layout LyX-Code -read_align --data_in= -\end_layout - -\begin_layout Subsection -How to read tabular input? -\begin_inset LatexCommand label -name "sub:How-to-read-table" - -\end_inset - - -\end_layout - -\begin_layout Standard -Tabular input can be read with -\series bold -read_tab -\series default - which will read in all rows and chosen columns (separated by a given delimter) - from a table in text format. -\end_layout - -\begin_layout Standard -The table below: -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Standard -Human -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -ATACGTCAG -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -23524 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Dog -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -AGCATGAC -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -2442 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Mouse -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -GACTG -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -234 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Cat -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -AAATGCA -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -2342 -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -Can be read using the command: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= -\end_layout - -\begin_layout Standard -Which will result in four records, one for each row, where the keys V0, - V1, V2 are the default keys for the organism, sequence, and count, respectively. - It is possible to select a subset of colums to read by using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -cols switch which takes a comma separated list of columns numbers (first - column is designated 0) as argument. - So to read in only the sequence and the count so that the count comes before - the sequence do: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --cols=2,1 -\end_layout - -\begin_layout Standard -It is also possible to name the columns with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --cols=2,1 --keys=COUNT,SEQ -\end_layout - -\begin_layout Subsection -How to read BED input? -\end_layout - -\begin_layout Standard -The BED (Browser Extensible Data -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://genome.ucsc.edu/FAQ/FAQformat" - -\end_inset - - -\end_layout - -\end_inset - -) format is a tabular format for data pertaining to one of the Eukaryotic - genomes in the UCSC genome brower -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://genome.ucsc.edu/" - -\end_inset - - -\end_layout - -\end_inset - -. - The BED format consists of up to 12 columns, where the first three are - mandatory CHR, CHR_BEG, and CHR_END. - The mandatory columns and any of the optional columns can all be read in - easily with the -\series bold -read_bed -\series default - biotool. -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= -\end_layout - -\begin_layout Standard -It is also possible to read the BED file with -\series bold -read_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-read-table" - -\end_inset - -), however, that will be more cumbersome because you need to specify the - keys: -\end_layout - -\begin_layout LyX-Code -read_tab --data_in= --keys=CHR,CHR_BEG,CHR_END ... -\end_layout - -\begin_layout Subsection -How to read PSL input? -\end_layout - -\begin_layout Standard -The PSL format is the output from BLAT and contains 21 mandatory fields - that can be read with -\series bold -read_psl -\series default -: -\end_layout - -\begin_layout LyX-Code -read_psl --data_in= -\end_layout - -\begin_layout Section -Writing output -\end_layout - -\begin_layout Standard -All result output can be written explicitly to file using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch which all result generating biotools have. - It is also possible to write the result to file implicetly by directing - 'stdout' to file using '>', however, that requires the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream swich to prevent a mixture of data stream and results in the file. - The explicit (and safe) way: -\end_layout - -\begin_layout LyX-Code -... - | --result_out= -\end_layout - -\begin_layout Standard -The implicit way: -\end_layout - -\begin_layout LyX-Code -... - | --no_stream > -\end_layout - -\begin_layout Subsection -How to write biotools output? -\end_layout - -\begin_layout Standard -See -\begin_inset LatexCommand eqref -reference "sub:How-to-write-stream" - -\end_inset - -. -\end_layout - -\begin_layout Subsection -How to write FASTA output? -\begin_inset LatexCommand label -name "sub:How-to-write-fasta" - -\end_inset - - -\end_layout - -\begin_layout Standard -FASTA output can be written with -\series bold -write_fasta -\series default -. -\end_layout - -\begin_layout LyX-Code -... - | write_fasta --result_out= -\end_layout - -\begin_layout Standard -It is also possible to wrap the sequences to a given width using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -wrap switch allthough wrapping of sequence is generally an evil thing: -\end_layout - -\begin_layout LyX-Code -... - | write_fasta --no_stream --wrap=80 -\end_layout - -\begin_layout Subsection -How to write alignment output? -\begin_inset LatexCommand label -name "sub:How-to-write-alignment" - -\end_inset - - -\end_layout - -\begin_layout Standard -Pretty alignments with ruler -\begin_inset Foot -status collapsed - -\begin_layout Standard -'.' for every 10 residues, ':' for every 50, and '|' for every 100 -\end_layout - -\end_inset - - and consensus sequence -\begin_inset Note Note -status collapsed - -\begin_layout Standard -which reminds me to make that an option. -\end_layout - -\end_inset - - can be created with -\series bold -write_align -\series default -, what also have the optional -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -wrap switch to break the alignment into blocks of a given width: -\end_layout - -\begin_layout LyX-Code -... - | write_align --result_out= --wrap=80 -\end_layout - -\begin_layout Standard -If the number of sequnces in the alignment is 2 then a pairwise alignment - will be output otherwise a multiple alignment. - And if the sequence type, determined automagically, is protein, then residues - and symbols (+,\InsetSpace ~ -:,\InsetSpace ~ -.) will be used to show consensus according to the Blosum62 - matrix. -\end_layout - -\begin_layout Subsection -How to write tabular output? -\begin_inset LatexCommand label -name "sub:How-to-write-tab" - -\end_inset - - -\end_layout - -\begin_layout Standard -Outputting the data stream as a table can be done with -\series bold -write_tab -\series default -, which will write generate one row per record with the values as columns. - If you supply the optional -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comment switch, when the first row in the table will be a 'comment' line - prefixed with a '#': -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --comment -\end_layout - -\begin_layout Standard -You can also change the delimiter from the default (tab) to -\emph on -e.g. - -\emph default - ',': -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --delimit=',' -\end_layout - -\begin_layout Standard -If you want the values output in a specific order you have to supply a comma - separated list using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch that will print only those keys in that order: -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --keys=SEQ_NAME,COUNT -\end_layout - -\begin_layout Standard -Alternatively, if you have some keys that you don't want in the tabular - output, use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_keys switch. - So to print all keys except SEQ and SEQ_TYPE do: -\end_layout - -\begin_layout LyX-Code -... - | write_tab --result_out= --no_keys=SEQ,SEQ_TYPE -\end_layout - -\begin_layout Standard -Finally, if you have a stream containing a mix of different records types, - -\emph on -e.g. - -\emph default - records with sequences and records with matches, then you can use -\series bold -write_tab -\series default - to output all the records in tabluar format, however, the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comment, -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys, and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_keys switches will only respond to records of the first type encountered. - The reason is that outputting mixed records is probably not what you want - anyway, and you should remove all the unwanted records from the stream - before outputting the table: -\series bold -grab -\series default - is your friend (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to write a BED output? -\begin_inset LatexCommand label -name "sub:How-to-write-BED" - -\end_inset - - -\end_layout - -\begin_layout Standard -Data in BED format can be output if the records contain the mandatory keys - CHR, CHR_BEG, and CHR_END using -\series bold -write_bed -\series default -. - If the optional keys are also present, they will be output as well: -\end_layout - -\begin_layout LyX-Code -write_bed --result_out= -\end_layout - -\begin_layout Subsection -How to write PSL output? -\begin_inset LatexCommand label -name "sub:How-to-write-PSL" - -\end_inset - - -\end_layout - -\begin_layout Standard -Data in PSL format can be output using -\series bold -write_psl: -\end_layout - -\begin_layout LyX-Code -write_psl --result_out= -\end_layout - -\begin_layout Section -Manipulating Records -\end_layout - -\begin_layout Subsection -How to select a few records? -\begin_inset LatexCommand label -name "sub:How-to-select-a-few-records" - -\end_inset - - -\end_layout - -\begin_layout Standard -To quickly get an overview of your data you can limit the data stream to - show a few records. - This also very useful to test the pipeline with a few records if you are - setting up a complex analysis using several biotools. - That way you can inspect that all goes well before analyzing and waiting - for the full data set. - All of the read_ biotools have the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch which will take a number as argument and only that number of - records will be read. - So to read in the first 10 FASTA entries from a file: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna --num=10 -\end_layout - -\begin_layout Standard -Another way of doing this is to use -\series bold -head_records -\series default - will limit the stream to show the first 10 records (default): -\end_layout - -\begin_layout LyX-Code -... - | head_records -\end_layout - -\begin_layout Standard -Using -\series bold -head_records -\series default - directly after one of the read_ biotools will be a lot slower than - using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch with the read_ biotools, however, -\series bold -head_records -\series default - can also be used to limit the output from all the other biotools. - It is also possible to give -\series bold -head_records -\series default - a number of records to show using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num switch. - So to display the first 100 records do: -\end_layout - -\begin_layout LyX-Code -... - | head_records --num=100 -\end_layout - -\begin_layout Subsection -How to select random records? -\begin_inset LatexCommand label -name "sub:How-to-select-random-records" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you want to inspect a number of random records from the stream this can - be done with the -\series bold -random_records -\series default - biotool. - So if you have 1 mio records in the stream and you want to select 1000 - random records do: -\end_layout - -\begin_layout LyX-Code -... - | random_records --num=1000 -\end_layout - -\begin_layout Subsection -How to count all records in the data stream? -\end_layout - -\begin_layout Standard -To count all the records in the data stream use -\series bold -count_records -\series default -, which adds one record (which is not included in the count) to the data - stream. - So to count the number of sequences in a FASTA file you can do this: -\end_layout - -\begin_layout LyX-Code -cat test.fna | read_fasta | count_records --no_stream -\end_layout - -\begin_layout Standard -Which will write the last record containing the count to 'stdout': -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -count_records: 630 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize ---- -\end_layout - -\begin_layout Standard -It is also possible to write the count to file using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out switch. -\end_layout - -\begin_layout Subsection -How to get the length of record values? -\begin_inset LatexCommand label -name "sub:How-to-get-value_length" - -\end_inset - - -\end_layout - -\begin_layout Standard -Use the -\series bold -length_vals -\series default - biotool to get the length of each value for a comma separated list of keys: -\end_layout - -\begin_layout LyX-Code -... - | length_vals --keys=HIT,PATTERN -\end_layout - -\begin_layout Subsection -How to grab specific records? -\begin_inset LatexCommand label -name "sub:How-to-grab" - -\end_inset - - -\end_layout - -\begin_layout Standard -The biotool -\series bold -grab -\series default - is related to the Unix grep and locates records based on matching keys - and/or values using either a pattern, a Perl regex, or a numerical evaluation. - To easily -\series bold -grab -\series default - all records in the stream that has any mentioning of the pattern 'human' - just pipe the data stream through -\series bold -grab -\series default - like this: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human -\end_layout - -\begin_layout Standard -This will search for the pattern 'human' in all keys and all values. - The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch takes a comma separated list of patterns, so in order to - match multiple patterns do: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human,mouse -\end_layout - -\begin_layout Standard -It is also possible to use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in switch instead of -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern. - -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in is used to read a file with one pattern per line: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern_in=patterns.txt -\end_layout - -\begin_layout Standard -If you want the opposite result --- to find all records that does not match - the patterns, add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -invert switch, which not only works with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch, but also with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -regex and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -eval: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human --invert -\end_layout - -\begin_layout Standard -If you want to search the record keys only, -\emph on -e.g. - -\emph default - to find all records containing the key SEQ you can add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys_only switch. - This will prevent matching of SEQ in any record value, and in fact SEQ - is a not uncommon peptide sequence you could get an unwanted record. - Also, this will give an increase in speed since only the keys are searched: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=SEQ --keys_only -\end_layout - -\begin_layout Standard -However, if you are interested in finding the peptide sequence SEQ and not - the SEQ key, just add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -vals_only switch instead: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=SEQ --vals_only -\end_layout - -\begin_layout Standard -Also, if you want to grab for certain key/value pairs you can supply a comma - separated list of keys whos values will then be searched using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -keys switch. - This is handy if your records contain large genomic sequences and you dont - want to search the entire sequence for -\emph on -e.g. - -\emph default - the organism name --- it is much faster to tell -\series bold -grab -\series default - which keys to search the value for: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern=human --keys=SEQ_NAME -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout Standard -It is also possible to invoke flexible matching using regex (regular expressions -) instead of simple pattern matching. - In -\series bold -grab -\series default - the regex engine is Perl based and allows use of different type of wild - cards, alternatives, -\emph on -etc -\emph default - -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://perldoc.perl.org/perlreref.html" - -\end_inset - - -\end_layout - -\end_inset - -. - If you want to -\series bold -grab -\series default - records withs the sequence ATCG or GCTA you can do this: -\end_layout - -\begin_layout LyX-Code -... - | grab --regex='ATCG|GCTA' -\end_layout - -\begin_layout Standard -Or if you want to find sequences beginning with ATCG: -\end_layout - -\begin_layout LyX-Code -... - | grab --regex='^ATCG' -\end_layout - -\begin_layout Standard -You can also use -\series bold -grab -\series default - to locate records that fulfill a numerical property using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -eval switch witch takes an expression in three parts. - The first part is the key that holds the value we want to evaluate, the - second part holds one the six operators: -\end_layout - -\begin_layout Enumerate -Greater than: > -\end_layout - -\begin_layout Enumerate -Greater than or equal to: >= -\end_layout - -\begin_layout Enumerate -Less than: < -\end_layout - -\begin_layout Enumerate -Less than or equal to: <= -\end_layout - -\begin_layout Enumerate -Equal to: = -\end_layout - -\begin_layout Enumerate -Not equal to: != -\end_layout - -\begin_layout Enumerate -String wise equal to: eq -\end_layout - -\begin_layout Enumerate -String wise not equal to: ne -\end_layout - -\begin_layout Standard -And finally comes the number used in the evaluation. - So to -\series bold -grab -\series default - all records with a sequence length greater than 30: -\end_layout - -\begin_layout LyX-Code -... - length_seq | grab --eval='SEQ_LEN > 30' -\end_layout - -\begin_layout Standard -If you want to locate all records containing the pattern 'human' and where - the sequence length is greater that 30, you do this by running the stream - through -\series bold -grab -\series default - twice: -\end_layout - -\begin_layout LyX-Code -... - | grab --pattern='human' | length_seq | grab --eval='SEQ_LEN > 30' -\end_layout - -\begin_layout Standard -Finally, it is possible to do fast matching of expressions from a file using - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact switch. - Each of these expressions has to be matched exactly over the entrie length, - which if useful if you have a file with accession numbers, that you want - to locate in the stream: -\end_layout - -\begin_layout LyX-Code -... - | grab --exact acc_no.txt | ... -\end_layout - -\begin_layout Standard -Using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact is much faster than using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in, because with -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -exact the expression has to be complete matches, where -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in looks for subpatterns. -\end_layout - -\begin_layout Standard -NB! To get the best speed performance, use the most restrictive -\series bold -grab -\series default - first. -\end_layout - -\begin_layout Subsection -How to remove keys from records? -\end_layout - -\begin_layout Standard -To remove one or more specific keys from all records in the data stream - use -\series bold -remove_keys -\series default - like this: -\end_layout - -\begin_layout LyX-Code -... - | remove_keys --keys=SEQ,SEQ_NAME -\end_layout - -\begin_layout Standard -In the above example SEQ and SEQ_NAME will be removed from all records if - they exists in these. - If all keys are removed from a record, then the record will be removed. -\end_layout - -\begin_layout Subsection -How to rename keys in records? -\end_layout - -\begin_layout Standard -Sometimes you want to rename a record key, -\emph on -e.g. - -\emph default - if you have read in a two column table with sequence name and sequence - in each column (see -\begin_inset LatexCommand ref -reference "sub:How-to-read-table" - -\end_inset - -) without specifying the key names, then the sequence name will be called - V0 and the sequence V1 as default in the -\series bold -read_tab -\series default - biotool. - To rename the V0 and V1 keys we need to run the stream through -\series bold -rename_keys -\series default - twice (one for each key to rename): -\end_layout - -\begin_layout LyX-Code -... - | rename_keys --keys=V0,SEQ_NAME | rename_keys --keys=V1,SEQ -\end_layout - -\begin_layout Standard -The first instance of -\series bold -rename_keys -\series default - replaces all the V0 keys with SEQ_NAME, and the second instance of -\series bold -rename_keys -\series default - replaces all the V1 keys with SEQ. - -\emph on -Et viola -\emph default - the data can now be used in the biotools that requires these keys. -\end_layout - -\begin_layout Section -Manipulating Sequences -\end_layout - -\begin_layout Subsection -How to get sequence lengths? -\end_layout - -\begin_layout Standard -The length for sequences in records can be determined with -\series bold -length_seq -\series default -, which adds the key SEQ_LEN to each record with the sequence length as - the value. - It also generates an extra record that is emitted last with the key TOTAL_SEQ_L -EN showing the total length of all the sequences. -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_seq -\end_layout - -\begin_layout Standard -It is also possible to determine the sequence length using the generic tool - -\series bold -length_vals -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-get-value_length" - -\end_inset - -, which determines the length of the values for a given list of keys: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_vals --keys=SEQ -\end_layout - -\begin_layout Standard -To obtain the total length of all sequences use -\series bold -sum_vals -\series default - like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_vals --keys=SEQ -\end_layout - -\begin_layout LyX-Code -| sum_vals --keys=SEQ_LEN -\end_layout - -\begin_layout Standard -The biotool -\series bold -analyze_seq -\series default - will also determine the length of each sequence (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-analyze" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to analyze sequence composition? -\begin_inset LatexCommand label -name "sub:How-to-analyze" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you want to find out the sequence type, composition, length, as well - as GC content, indel content and proportions of soft and hard masked sequence, - then use -\series bold -analyze_seq -\series default -. - This handy biotool will determine all these things per sequence from which - it is easy to get an overview using the -\series bold -write_tab -\series default - biotool to output a table (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -). - So in order to determine the sequence composition of a FASTA file with - just one entry containing the sequence 'ATCG' we just read the data with - -\series bold -read_fasta -\series default - and run the output through -\series bold -analyze_seq -\series default - which will add the analysis to the record like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq ... -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:D: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -MIX_INDEX: 0.55 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:W: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:G: 16 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SOFT_MASK%: 63.75 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:B: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:V: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -HARD_MASK%: 0.00 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:H: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:S: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:N: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:.: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -GC%: 35.00 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:A: 8 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:Y: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:M: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:T: 44 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ_TYPE: DNA -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:K: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:~: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ: TTTCAGTTTGGGACGGAGTAAGGCCTTCCtttttttttttttttttttttttttttttgagaccgagtcttgctc -tgtcg -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -SEQ_LEN: -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -80 RES:R: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:C: 12 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:-: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize -RES:U: 0 -\end_layout - -\begin_layout LyX-Code - -\size scriptsize ---- -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout Standard -Now to make a table of how may As, Ts, Cs, and Gs you can add the following: -\end_layout - -\begin_layout LyX-Code -... - | analyze_seq | write_tab --keys=RES:A,RES:T,RES:C,RES:G -\end_layout - -\begin_layout Standard -Or if you want to see the proportions of hard and soft masked sequence: -\end_layout - -\begin_layout LyX-Code -... - | analyse_seq | write_tab --keys=HARD_MASK%,SOFT_MASK% -\end_layout - -\begin_layout Standard -If you have a stack of sequences in one file and you want to determine the - mean GC content you can do it using the -\series bold -mean_vals -\series default - biotool: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | mean_vals --keys=GC% -\end_layout - -\begin_layout Standard -Or if you want the total count of Ns you can use -\series bold -sum_vals -\series default - like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | sum_vals --keys=RES:N -\end_layout - -\begin_layout Standard -The MIX_INDEX key is calculated as the count of the most common residue - over the sequence length, and can be used as a cut-off for removing sequence - tags consisting of mostly one nucleotide: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | analyze_seq | grab --eval='MIX_INDEX<0.85' -\end_layout - -\begin_layout Subsection -How to extract subsequences? -\begin_inset LatexCommand label -name "sub:How-to-extract" - -\end_inset - - -\end_layout - -\begin_layout Standard -In order to extract a subsequence from a longer sequence use the biotool - extract_seq, which will replace the sequence in the record with the subsequence - (this behaviour should probably be modified to be dependant of a -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -replace or a -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_replace switch -\begin_inset Note Note -status collapsed - -\begin_layout Standard -also in split_seq -\end_layout - -\end_inset - -). - So to extract the first 20 residues from all sequences do (first residue - is designated 1): -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=1 --len=20 -\end_layout - -\begin_layout Standard -You can also specify a begin and end coordinate set: -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=20 --end=40 -\end_layout - -\begin_layout Standard -If you want the subsequences from position 20 to the sequence end do: -\end_layout - -\begin_layout LyX-Code -... - | extract_seq --beg=20 -\end_layout - -\begin_layout Standard -If you want to extract subsequences a given distance from the sequence end - you can do this by reversing the sequence with the biotool -\series bold -reverse_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-reverse-seq" - -\end_inset - -, followed by -\series bold -extract_seq -\series default - to get the subsequence, and then -\series bold -reverse_seq -\series default - again to get the subsequence back in the original orientation: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in=test.fna | reverse_seq -\end_layout - -\begin_layout LyX-Code -| extract_seq --beg=10 --len=10 | reverse_seq -\end_layout - -\begin_layout Subsection -How to get genomic sequence? -\begin_inset LatexCommand label -name "sub:How-to-get-genomic-sequence" - -\end_inset - - -\end_layout - -\begin_layout Standard -The biotool -\series bold -get_genomic_seq -\series default - can extract subsequences for a given genome specified with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch explicitly using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -beg and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -end/ -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -len switches: -\end_layout - -\begin_layout LyX-Code -get_genome_seq --genome= --beg=1 --len=100 -\end_layout - -\begin_layout Standard -Alternatively, -\series bold -get_genome_seq -\series default - can be used to append the corresponding sequence to BED, PSL, and BLAST - records: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | get_genome_seq --genome= -\end_layout - -\begin_layout Standard -It is also possible to include flaking sequence using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -flank switch. - So to include 50 nucleotides upstream and 50 nucleotides downstream for - each BED entry do: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | get_genome_seq --genome= --flank=50 -\end_layout - -\begin_layout Subsection -How to upper-case sequences? -\end_layout - -\begin_layout Standard -Sequences can be shifted from lower case to upper case using -\series bold -uppercase_seq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | uppercase_seq -\end_layout - -\begin_layout Subsection -How to reverse sequences? -\begin_inset LatexCommand label -name "sub:How-to-reverse-seq" - -\end_inset - - -\end_layout - -\begin_layout Standard -The order of residues in a sequence can be reversed using reverse_seq: -\end_layout - -\begin_layout LyX-Code -... - | reverse_seq -\end_layout - -\begin_layout Standard -Note that in order to reverse/complement a sequence you also need the -\series bold -complement_seq -\series default - biotool (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-complement" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to complement sequences? -\begin_inset LatexCommand label -name "sub:How-to-complement" - -\end_inset - - -\end_layout - -\begin_layout Standard -DNA and RNA sequences can be complemented with -\series bold -complement_seq -\series default -, which automagically determines the sequence type: -\end_layout - -\begin_layout LyX-Code -... - | complement_seq -\end_layout - -\begin_layout Standard -Note that in order to reverse/complement a sequence you also need the -\series bold -reverse_seq -\series default - biotool (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-reverse-seq" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to remove indels from sequnces? -\end_layout - -\begin_layout Standard -Indels can be removed from sequences with the -\series bold -remove_indels -\series default - biotool. - This is useful if you have aligned some sequences (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-align" - -\end_inset - -) and extracted (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-extract" - -\end_inset - -) a block of subsequences from the alignment and you want to use these sequence - in a search where you need to remove the indels first. - '-', '~', and '.' are considered indels: -\end_layout - -\begin_layout LyX-Code -... - | remove_indels -\end_layout - -\begin_layout Subsection -How to shuffle sequences? -\end_layout - -\begin_layout Standard -All residues in sequences in the stream can be shuffled to random positions - using the -\series bold -shuffle_seq -\series default - biotool: -\end_layout - -\begin_layout LyX-Code -... - | shuffle_seq -\end_layout - -\begin_layout Subsection -How to split sequences into overlapping subsequences? -\end_layout - -\begin_layout Standard -Sequences can be slit into overlapping subsequences with the -\series bold -split_seq -\series default - biotool. -\end_layout - -\begin_layout LyX-Code -... - | split_seq --word_size=20 --uniq -\end_layout - -\begin_layout Subsection -How to determine the oligo frequency? -\end_layout - -\begin_layout Standard -In order to determine if any oligo usage is over represented in one or more - sequences you can determine the frequency of oligos of a given size with - -\series bold -oligo_freq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 -\end_layout - -\begin_layout Standard -And if you have more than one sequence and want to accumulate the frequences - you need the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -all switch: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 --all -\end_layout - -\begin_layout Standard -To get a meaningful result you need to write the resulting frequencies as - a table with -\series bold -write_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -), but first it is important to -\series bold -grab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -) the records with the frequencies to avoid full length sequences in the - table: -\end_layout - -\begin_layout LyX-Code -... - | oligo_freq --word_size=4 --all | grab --pattern=OLIGO --keys_only -\end_layout - -\begin_layout LyX-Code -| write_tab --no_stream -\end_layout - -\begin_layout Standard -And the resulting frequency table can be sorted with Unix sort (man sort). -\end_layout - -\begin_layout Subsection -How to search for sequences in genomes? -\end_layout - -\begin_layout Standard -See the following biotool: -\end_layout - -\begin_layout Itemize - -\series bold -patscan_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -blat_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -blast_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -vmatch_seq -\series default - -\begin_inset LatexCommand eqref -reference "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to search sequences for a pattern? -\begin_inset LatexCommand label -name "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Standard -It is possible to search sequences in the data stream for patterns using - the -\series bold -patscan_seq -\series default - biotool which utilizes the powerful scan_for_matches engine. - Consult the documentation for scan_for_matches in order to learn how to - define patterns (the documentation is included in Appendix\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sec:scan_for_matches-README" - -\end_inset - -). -\end_layout - -\begin_layout Standard -To search all sequences for a simple pattern consisting of the sequence - ATCGATCG allowing for 3 mismatches, 2 insertions and 1 deletion: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | patscan_seq --pattern='ATCGATCG[3,2,1]' -\end_layout - -\begin_layout Standard -The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern switch takes a comma seperated list of patterns, so if you want - to search for more that one pattern do: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern='ATCGATCG[3,2,1],GCTAGCTA[3,2,1]' -\end_layout - -\begin_layout Standard -It is also possible to have a list of different patterns to search for in - a file with one pattern per line. - In order to get -\series bold -patscan_seq -\series default - to read these patterns use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -pattern_in switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern_in= -\end_layout - -\begin_layout Standard -To also scan the complementary strand in nucleotide sequences ( -\series bold -patscan_seq -\series default - automagically determines the sequence type) you need to add the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -comp switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern= --comp -\end_layout - -\begin_layout Standard -It is also possible to use -\series bold -patscan_seq -\series default - to output those records that does not contain a certain pattern by using - the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -invert switch: -\end_layout - -\begin_layout LyX-Code -... - | patscan_seq --pattern= --invert -\end_layout - -\begin_layout Standard -Finally, -\series bold -patscan_seq -\series default - can also scan for patterns in a given genome sequence, instead of sequences - in the stream, using the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch: -\end_layout - -\begin_layout LyX-Code -patscan --pattern= --genome= -\end_layout - -\begin_layout Subsection -How to use BLAT for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Standard -Sequences in the data stream can be matched against supported genomes using - -\series bold -blat_seq -\series default - which is a biotool using BLAT as the name might suggest. - Currently only Mouse and Human genomes are available and it is not possible - to use OOC files since there is still a need for a local repository for - genome files. - Otherwise it is just: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | blat_seq --genome= -\end_layout - -\begin_layout Standard -The search results can then be written to file with -\series bold -write_psl -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-PSL" - -\end_inset - -) or -\series bold -write_bed -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-BED" - -\end_inset - -) allthough with -\series bold -write_bed -\series default - some information will be lost). - It is also possible to plot chromosome distribution of the search results - using -\series bold -plot_chrdist -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-chrdist" - -\end_inset - -) or the distribution of the match lengths using -\series bold -plot_lendist -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-lendist" - -\end_inset - -) or a karyogram with the hits using -\series bold -plot_karyogram -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-plot-karyogram" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to use BLAST for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Standard -Two biotools exist for blasting sequences: -\series bold -create_blast_db -\series default - is used to create the BLAST database required for BLAST which is queried - using the biotool -\series bold -blast_seq -\series default -. - So in order to create a BLAST database from sequences in the data stream - you simple run: -\end_layout - -\begin_layout LyX-Code -... - | create_blast_db --database=my_database --no_stream -\end_layout - -\begin_layout Standard -The type of sequence to use for the database is automagically determined - by -\series bold -create_blast_db -\series default -, but don't have a mixture of peptide and nucleic acids sequences in the - stream. - The -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database switch takes a path as argument, but will default to 'blastdb_ if not set. -\end_layout - -\begin_layout Standard -The resulting database can now be queried with sequences in another data - stream using -\series bold -blast_seq -\series default -: -\end_layout - -\begin_layout LyX-Code -... - | blast_seq --database=my_database -\end_layout - -\begin_layout Standard -Again, the sequence type is determined automagically and the appropriate - BLAST program is guessed (see below table), however, the program name can - be overruled with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -program switch. -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Standard -Subject sequence -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Query sequence -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Program guess -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastn -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastp -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -blastx -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Standard -Nucleotide -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -Protein -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Standard -tblastn -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -Finally, it is also possible to use -\series bold -blast_seq -\series default - for blasting sequences agains a preformatted genome using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -genome switch instead of the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database switch: -\end_layout - -\begin_layout LyX-Code -... - | blast_seq --genome= -\end_layout - -\begin_layout Subsection -How to use Vmatch for sequence search? -\begin_inset LatexCommand label -name "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Standard -The powerful suffix array software package Vmatch -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.vmatch.de/" - -\end_inset - - -\end_layout - -\end_inset - - can be used for exact mapping of sequences against indexed genomes using - the biotool -\series bold -vmatch_seq -\series default -, which will e.g. - map 700000 ESTs to the human genome locating all 160 mio hits in less than - an hour. - Only nucleotide sequences and sequences longer than 11 nucleotides will - be mapped. - It is recommended that sequences consisting of mostly one nucleotide type - are removed. - This can be done with the -\series bold -analyze_seq -\series default - biotool -\begin_inset LatexCommand eqref -reference "sub:How-to-analyze" - -\end_inset - -. -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= -\end_layout - -\begin_layout Standard -It is also possible to allow for mismatches using the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -hamming_dist switch. - So to allow for 2 mismatches: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=2 -\end_layout - -\begin_layout Standard -Or to allow for 10% mismathing nucleotides: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=10p -\end_layout - -\begin_layout Standard -To allow both indels and mismatches use the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -edit_dist switch. - So to allow for one mismatch or one indel: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=1 -\end_layout - -\begin_layout Standard -Or to allow for 5% indels or mismatches: -\end_layout - -\begin_layout LyX-Code -... - | vmatch_seq --genome= --hamming_dist=5p -\end_layout - -\begin_layout Standard -Note that using -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -hamming_dist or -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -edit_dist greatly slows down vmatch considerably --- use with care. -\end_layout - -\begin_layout Standard -The resulting SCORE key can be replaced to hold the number of genome matches - of a given sequence (multi-mappers) is the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -count switch is given. -\end_layout - -\begin_layout Subsection -How to find all matches between sequences? -\begin_inset LatexCommand label -name "sub:How-to-find-matches" - -\end_inset - - -\end_layout - -\begin_layout Standard -All matches between two sequences can be determined with the biotool -\series bold -match_seq -\series default -. - The match finding engine underneath the hood of -\series bold -match_seq -\series default - is the super fast suffix tree program MUMmer -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://mummer.sourceforge.net/" - -\end_inset - - -\end_layout - -\end_inset - -, which will locate all forward and reverse matches between huge sequences - in a matter of minutes (if the repeat count is not too high and if the - word size used is appropriate). - Matching two -\emph on -Helicobacter pylori -\emph default - genomes (1.7Mbp) takes around 10 seconds: -\end_layout - -\begin_layout LyX-Code -... - | match_seq --word_size=20 --direction=both -\end_layout - -\begin_layout Standard -The output from -\series bold -match_seq -\series default - can be used to generate a dot plot with -\series bold -plot_matches -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-generate-dotplot" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to align sequences? -\begin_inset LatexCommand label -name "sub:How-to-align" - -\end_inset - - -\end_layout - -\begin_layout Standard -Sequences in the stream can be aligned with the -\series bold -align_seq -\series default - biotool that uses Muscle -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.drive5.com/muscle/muscle.html" - -\end_inset - - -\end_layout - -\end_inset - - as aligment engine. - Currently you cannot change any of the Muscle alignment parameters and - -\series bold -align_seq -\series default - will create an alignment based on the defaults (which are really good!): -\end_layout - -\begin_layout LyX-Code -... - | align_seq -\end_layout - -\begin_layout Standard -The aligned output can be written to file in FASTA format using -\series bold -write_fasta -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-fasta" - -\end_inset - -) or in pretty text using -\series bold -write_align -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-alignment" - -\end_inset - -). -\end_layout - -\begin_layout Subsection -How to create a weight matrix? -\end_layout - -\begin_layout Standard -If you want a weight matrix to show the sequence composition of a stack - of sequences you can use the biotool create_weight_matrix: -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix -\end_layout - -\begin_layout Standard -The result can be output in percent using the -\begin_inset ERT -status open - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -percent switch: -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix --percent -\end_layout - -\begin_layout Standard -The weight matrix can be written as tabular output with -\series bold -write_tab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-tab" - -\end_inset - -) after removeing the records containing SEQ with -\series bold -grab -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-grab" - -\end_inset - -): -\end_layout - -\begin_layout LyX-Code -... - | create_weight_matrix | grab --invert --keys=SEQ --keys_only -\end_layout - -\begin_layout LyX-Code -| write_tab --no_stream -\end_layout - -\begin_layout Standard -The V0 column will hold the residue, while the rest of the columns will - hold the frequencies for each sequence position. -\end_layout - -\begin_layout Section -Plotting -\end_layout - -\begin_layout Standard -There exists several biotools for plotting. - Some of these are based on GNUplot -\begin_inset Foot -status open - -\begin_layout Standard -\begin_inset LatexCommand url -target "http://www.gnuplot.info/" - -\end_inset - - -\end_layout - -\end_inset - -, which is an extremely powerful platform to generate all sorts of plots - and even though GNUplot has quite a steep learning curve, the biotools - utilizing GNUplot are simple to use. - GNUplot is able to output a lot of different formats (called terminals - in GNUplot), but the biotools focusses on three formats only: -\end_layout - -\begin_layout Enumerate -The 'dumb' terminal is default to the GNUplot based biotools and will output - a plot in crude ASCII text (Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dumb-terminal" - -\end_inset - -). - This is quite nice for a quick and dirty plot to get an overview of your - data . -\end_layout - -\begin_layout Enumerate -The 'post' or 'postscript' terminal output postscript code which is publication - grade graphics that can be viewed with applications such as Ghostview, - Photoshop, and Preview. -\end_layout - -\begin_layout Enumerate -The 'svg' terminal output's scalable vector graphics (SVG) which is a vector - based format. - SVG is great because you can edit the resulting plot using Photoshop or - Inkscape -\begin_inset Foot -status collapsed - -\begin_layout Standard -Inkscape is a really handy drawing program that is free and open source. - Availble at -\begin_inset LatexCommand htmlurl -target "http://www.inkscape.org" - -\end_inset - - -\end_layout - -\end_inset - - if you want to add additional labels, captions, arrows, and so on and then - save the result in different formats, such as postscript without loosing - resolution. -\end_layout - -\begin_layout Standard -The biotools for plotting that are not based on GNUplot only output SVG - (that may change in the future). -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename lendist_ascii.png - lyxscale 70 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Dumb-terminal" - -\end_inset - -Dumb terminal -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -The output of a length distribution plot in the default 'dumb terminal' - to the terminal window. - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a histogram? -\begin_inset LatexCommand label -name "How-to-plot-histogram" - -\end_inset - - -\end_layout - -\begin_layout Standard -A generic histogram for a given value can be plotted with the biotool -\series bold -plot_histogram -\series default - (Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Histogram" - -\end_inset - -): -\end_layout - -\begin_layout LyX-Code -... - | plot_histogram --key=TISSUE --no_stream -\end_layout - -\begin_layout Standard -(Figure missing) -\end_layout - -\begin_layout Standard -\noindent -\align left -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename histogram.png - lyxscale 70 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Histogram" - -\end_inset - -Histogram -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a length distribution? -\begin_inset LatexCommand label -name "sub:How-to-plot-lendist" - -\end_inset - - -\end_layout - -\begin_layout Standard -Plotting of length distributions, weather sequence lengths, patterns lengths, - hit lengths, -\emph on -etc. - -\emph default - is a really handy thing and can be done with the the biotool -\series bold -plot_lendist -\series default -. - If you have a file with FASTA entries and want to plot the length distribution - you do it like this: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | length_seq -\end_layout - -\begin_layout LyX-Code -| plot_lendist --key=SEQ_LEN --no_stream -\end_layout - -\begin_layout Standard -The result will be written to the default dumb terminal and will look like - Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dumb-terminal" - -\end_inset - -. -\end_layout - -\begin_layout Standard -If you instead want the result in postscript format you can do: -\end_layout - -\begin_layout LyX-Code -... - | plot_lendist --key=SEQ_LEN --terminal=post --result_out=file.ps -\end_layout - -\begin_layout Standard -That will generate the plot and save it to file, but not interrupt the data - stream which can then be used in further analysis. - You can also save the plot implicetly using '>', however, it is then important - to terminate the stream with the -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream switch: -\end_layout - -\begin_layout LyX-Code -... - | plot_lendist --key=SEQ_LEN --terminal=post --no_stream > file.ps -\end_layout - -\begin_layout Standard -The resulting plot can be seen in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Length-distribution" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard - -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename lendist.ps - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Length-distribution" - -\end_inset - -Length distribution -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Length distribution of 630 piRNA like RNAs. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a chromosome distribution? -\begin_inset LatexCommand label -name "sub:How-to-plot-chrdist" - -\end_inset - - -\end_layout - -\begin_layout Standard -If you have the result of a sequence search against a multi chromosome genome, - it is very practical to be able to plot the distribution of search hits - on the different chromosomes. - This can be done with -\series bold -plot_chrdist -\series default -: -\end_layout - -\begin_layout LyX-Code -read_fasta --data_in= | blat_genome | plot_chrdist --no_stream -\end_layout - -\begin_layout Standard -The above example will result in a crude plot using the 'dumb' terminal, - and if you want to mess around with the results from the BLAT search you - probably want to save the result to file first (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-write-PSL" - -\end_inset - -). - To plot the chromosome distribution from the saved search result you can - do: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in=file.bed | plot_chrdist --terminal=post --result_out=plot.ps -\end_layout - -\begin_layout Standard -That will result in the output show in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Chromosome-distribution" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard - -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename chrdist.ps - lyxscale 50 - width 12cm - rotateAngle 90 - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Chromosome-distribution" - -\end_inset - -Chromosome distribution -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to generate a dotplot? -\begin_inset LatexCommand label -name "sub:How-to-generate-dotplot" - -\end_inset - - -\end_layout - -\begin_layout Standard -A dotplot is a powerful way to get an overview of the size and location - of sequence insertions, deletions, and duplications between two sequences. - Generating a dotplot with biotools is a two step process where you initially - find all matches between two sequences using the tool -\series bold -match_seq -\series default - (see\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "sub:How-to-find-matches" - -\end_inset - -) and plot the resulting matches with -\series bold -plot_matches -\series default -. - Matching and plotting two -\emph on -Helicobacter pylori -\emph default - genomes (1.7Mbp) takes around 10 seconds: -\end_layout - -\begin_layout LyX-Code -... - | match_seq | plot_matches --terminal=post --result_out=plot.ps -\end_layout - -\begin_layout Standard -The resulting dotplot is in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Dotplot" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename dotplot.ps - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Dotplot" - -\end_inset - -Dotplot -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Forward matches are displayed in green while reverse matches are displayed - in red. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a sequence logo? -\end_layout - -\begin_layout Standard -Sequence logos can be generate with -\series bold -plot_seqlogo -\series default -. - The sequnce type is determined automagically and an entropy scale of 2 - bits and 4 bits is used for nucleotide and peptide sequences, respectively -\begin_inset Foot -status collapsed - -\begin_layout Standard -\begin_inset LatexCommand htmlurl -target "http://www.ccrnp.ncifcrf.gov/~toms/paper/hawaii/latex/node5.html" - -\end_inset - - -\end_layout - -\end_inset - -. -\end_layout - -\begin_layout LyX-Code -... - | plot_seqlogo --no_stream --result_out=seqlogo.svg -\end_layout - -\begin_layout Standard -An example of a sequence logo can be seen in Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Sequence-logo" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename seqlogo.png - lyxscale 50 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Sequence-logo" - -\end_inset - -Sequence logo -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -How to plot a karyogram? -\begin_inset LatexCommand label -name "sub:How-to-plot-karyogram" - -\end_inset - - -\end_layout - -\begin_layout Standard -To plot search hits on genomes use -\series bold -plot_karyogram -\series default -, which will output a nice karyogram in SVG graphics: -\end_layout - -\begin_layout LyX-Code -... - | plot_karyogram --result_out=karyogram.svg -\end_layout - -\begin_layout Standard -The banding data is taken from the UCSC genome browser database and currently - only Human and Mouse is supported. - Fig.\InsetSpace ~ - -\begin_inset LatexCommand ref -reference "fig:Karyogram" - -\end_inset - - shows the distribution of piRNA like RNAs matched to the Human genome. -\end_layout - -\begin_layout Standard -\begin_inset Float figure -wide false -sideways false -status open - -\begin_layout Standard -\noindent -\align center -\begin_inset Graphics - filename karyogram.png - lyxscale 35 - width 12cm - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Caption - -\begin_layout Standard -\begin_inset LatexCommand label -name "fig:Karyogram" - -\end_inset - -Karyogram -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Quote -Hits from a search of piRNA like RNAs in the Human genome is displayed as - short horizontal bars. -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Uploading Results -\end_layout - -\begin_layout Subsection -How do I display my results in the UCSC Genome Browser? -\end_layout - -\begin_layout Standard -Results from the list of biotools below can be uploaded directly to a local - mirror of the UCSC Genome Browser using the biotool -\series bold -upload_to_ucsc -\series default -: -\end_layout - -\begin_layout Itemize -patscan_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-patscan" - -\end_inset - - -\end_layout - -\begin_layout Itemize -blat_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAT" - -\end_inset - - -\end_layout - -\begin_layout Itemize -blast_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-BLAST" - -\end_inset - - -\end_layout - -\begin_layout Itemize -vmatch_seq -\begin_inset LatexCommand eqref -reference "sub:How-to-use-Vmatch" - -\end_inset - - -\end_layout - -\begin_layout Standard -The syntax for uploading data the most simple way requires two mandatory - switches: -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -database, which is the UCSC database name (such as hg18, mm9, etc.) and -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -table which should be the users initials followed by an underscore and a - short description of the data: -\end_layout - -\begin_layout LyX-Code -... - | upload_to_ucsc --database=hg18 --table=mah_snoRNAs -\end_layout - -\begin_layout Standard -The -\series bold -upload_to_ucsc -\series default - biotool modifies the users ~/ucsc/my_tracks.ra file automagically (a backup - is created with the name ~/ucsc/my_tracks.ra~) with default values that - can be overridden using the following switches: -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -short_label - Short label for track - Default=database->table -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -long_label - Long label for track - Default=database->table -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -group - Track group name - Default= -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -priority - Track display priority - Default=1 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -color - Track color - Default=147,73,42 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -chunk_size - Chunks for loading - Default=10000000 -\end_layout - -\begin_layout Itemize -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -visibility - Track visibility - Default=pack -\end_layout - -\begin_layout Standard -Also, data in BED or PSL format can be uploaded with -\series bold -upload_to_ucsc -\series default - as long as these reference to genomes and chromosomes existing in the UCSC - Genome Browser: -\end_layout - -\begin_layout LyX-Code -read_bed --data_in= | upload_to_ucsc ... -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -read_psl --data_in= | upload_to_ucsc ... -\end_layout - -\begin_layout Section -Power Scripting -\end_layout - -\begin_layout Standard -It is possible to do commandline scripting of biotool records using Perl. - Because a biotool record essentially is a hash structure, you can pass - records to -\series bold -bioscript -\series default - command, which is a wrapper around the Perl executable that allows direct - manipulations of the records using the power of Perl. -\end_layout - -\begin_layout Standard -In the below example we replace in all records the value to the CHR key - with a forthrunning number: -\end_layout - -\begin_layout LyX-Code -... - | bioscript 'while($r=get_record( -\backslash -*STDIN)){$r->{CHR}=$i++; put_record($r)}' -\end_layout - -\begin_layout Standard -Something more useful would probably be to create custom FASTA headers. - E.g. - if we read in a BED file, lookup the genomic sequence, create a custom - FASTA header with -\series bold -bioscript -\series default - and output FASTA entries: -\end_layout - -\begin_layout LyX-Code -... - | bioscript 'while($r=get_record( -\backslash -*STDIN)){$r->{SEQ_NAME}= // -\end_layout - -\begin_layout LyX-Code -join("_",$r->{CHR},$r->{CHR_BEG},$r->{CHR_END}); put_record($r)}' -\end_layout - -\begin_layout Standard -And the output: -\end_layout - -\begin_layout LyX-Code ->chr2L_21567527_21567550 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_693380_693403 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_13859534_13859557 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_9005090_9005113 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_2106825_2106848 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout LyX-Code ->chr2L_14649031_14649054 -\end_layout - -\begin_layout LyX-Code -taccaaacggatgcctcagacatc -\end_layout - -\begin_layout Section -Trouble shooting -\end_layout - -\begin_layout Standard -Shoot the messenger! -\end_layout - -\begin_layout Section -\start_of_appendix -Keys -\begin_inset LatexCommand label -name "sec:Keys" - -\end_inset - - -\end_layout - -\begin_layout Standard -HIT -\end_layout - -\begin_layout Standard -HIT_BEG -\end_layout - -\begin_layout Standard -HIT_END -\end_layout - -\begin_layout Standard -HIT_LEN -\end_layout - -\begin_layout Standard -HIT_NAME -\end_layout - -\begin_layout Standard -PATTERN -\end_layout - -\begin_layout Section -Switches -\begin_inset LatexCommand label -name "sec:Switches" - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_in -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -stream_out -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -no_stream -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -data_in -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -result_out -\end_layout - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Standard - -- -\backslash -/- -\end_layout - -\end_inset - -num -\end_layout - -\begin_layout Section -scan_for_matches README -\begin_inset LatexCommand label -name "sec:scan_for_matches-README" - -\end_inset - - -\end_layout - -\begin_layout LyX-Code - scan_for_matches: -\end_layout - -\begin_layout LyX-Code - A Program to Scan Nucleotide or Protein Sequences for Matching Patterns -\end_layout - -\begin_layout LyX-Code - Ross Overbeek -\end_layout - -\begin_layout LyX-Code - MCS -\end_layout - -\begin_layout LyX-Code - Argonne National Laboratory -\end_layout - -\begin_layout LyX-Code - Argonne, IL 60439 -\end_layout - -\begin_layout LyX-Code - USA -\end_layout - -\begin_layout LyX-Code -Scan_for_matches is a utility that we have written to search for -\end_layout - -\begin_layout LyX-Code -patterns in DNA and protein sequences. - I wrote most of the code, -\end_layout - -\begin_layout LyX-Code -although David Joerg and Morgan Price wrote sections of an -\end_layout - -\begin_layout LyX-Code -earlier version. - The whole notion of pattern matching has a rich -\end_layout - -\begin_layout LyX-Code -history, and we borrowed liberally from many sources. - However, it is -\end_layout - -\begin_layout LyX-Code -worth noting that we were strongly influenced by the elegant tools -\end_layout - -\begin_layout LyX-Code -developed and distributed by David Searls. - My intent is to make the -\end_layout - -\begin_layout LyX-Code -existing tool available to anyone in the research community that might -\end_layout - -\begin_layout LyX-Code -find it useful. - I will continue to try to fix bugs and make suggested -\end_layout - -\begin_layout LyX-Code -enhancements, at least until I feel that a superior tool exists. -\end_layout - -\begin_layout LyX-Code -Hence, I would appreciate it if all bug reports and suggestions are -\end_layout - -\begin_layout LyX-Code -directed to me at Overbeek@mcs.anl.gov. - -\end_layout - -\begin_layout LyX-Code -I will try to log all bug fixes and report them to users that send me -\end_layout - -\begin_layout LyX-Code -their email addresses. - I do not require that you give me your name -\end_layout - -\begin_layout LyX-Code -and address. - However, if you do give it to me, I will try to notify -\end_layout - -\begin_layout LyX-Code -you of serious problems as they are discovered. -\end_layout - -\begin_layout LyX-Code -Getting Started: -\end_layout - -\begin_layout LyX-Code - The distribution should contain at least the following programs: -\end_layout - -\begin_layout LyX-Code - README - This document -\end_layout - -\begin_layout LyX-Code - ggpunit.c - One of the two source files -\end_layout - -\begin_layout LyX-Code - scan_for_matches.c - The second source file -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - run_tests - A perl script to test things -\end_layout - -\begin_layout LyX-Code - show_hits - A handy perl script -\end_layout - -\begin_layout LyX-Code - test_dna_input - Test sequences for DNA -\end_layout - -\begin_layout LyX-Code - test_dna_patterns - Test patterns for DNA scan -\end_layout - -\begin_layout LyX-Code - test_output - Desired output from test -\end_layout - -\begin_layout LyX-Code - test_prot_input - Test protein sequences -\end_layout - -\begin_layout LyX-Code - test_prot_patterns - Test patterns for proteins -\end_layout - -\begin_layout LyX-Code - testit - a perl script used for test -\end_layout - -\begin_layout LyX-Code - Only the first three files are required. - The others are useful, -\end_layout - -\begin_layout LyX-Code - but only if you have Perl installed on your system. - If you do -\end_layout - -\begin_layout LyX-Code - have Perl, I suggest that you type -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - which perl -\end_layout - -\begin_layout LyX-Code - to find out where it installed. - On my system, I get the following -\end_layout - -\begin_layout LyX-Code - response: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - clone% which perl -\end_layout - -\begin_layout LyX-Code - /usr/local/bin/perl -\end_layout - -\begin_layout LyX-Code - indicating that Perl is installed in /usr/local/bin. - Anyway, once -\end_layout - -\begin_layout LyX-Code - you know where it is installed, edit the first line of files -\end_layout - -\begin_layout LyX-Code - testit -\end_layout - -\begin_layout LyX-Code - show_hits -\end_layout - -\begin_layout LyX-Code - replacing /usr/local/bin/perl with the appropriate location. - I -\end_layout - -\begin_layout LyX-Code - will assume that you can do this, although it is not critical (it -\end_layout - -\begin_layout LyX-Code - is needed only to test the installation and to use the "show_hits" -\end_layout - -\begin_layout LyX-Code - utility). - Perl is not required to actually install and run -\end_layout - -\begin_layout LyX-Code - scan_for_matches. - -\end_layout - -\begin_layout LyX-Code - If you do not have Perl, I suggest you get it and install it (it -\end_layout - -\begin_layout LyX-Code - is a wonderful utility). - Information about Perl and how to get it -\end_layout - -\begin_layout LyX-Code - can be found in the book "Programming Perl" by Larry Wall and -\end_layout - -\begin_layout LyX-Code - Randall L. - Schwartz, published by O'Reilly & Associates, Inc. -\end_layout - -\begin_layout LyX-Code - To get started, you will need to compile the program. - I do this -\end_layout - -\begin_layout LyX-Code - using -\end_layout - -\begin_layout LyX-Code - gcc -O -o scan_for_matches ggpunit.c scan_for_matches.c -\end_layout - -\begin_layout LyX-Code - If you do not use GNU C, use -\end_layout - -\begin_layout LyX-Code - cc -O -DCC -o scan_for_matches ggpunit.c scan_for_matches.c -\end_layout - -\begin_layout LyX-Code - which works on my Sun. - -\end_layout - -\begin_layout LyX-Code - Once you have compiled scan_for_matches, you can verify that it -\end_layout - -\begin_layout LyX-Code - works with -\end_layout - -\begin_layout LyX-Code - clone% run_tests tmp -\end_layout - -\begin_layout LyX-Code - clone% diff tmp test_output -\end_layout - -\begin_layout LyX-Code - You may get a few strange lines of the sort -\end_layout - -\begin_layout LyX-Code - clone% run_tests tmp -\end_layout - -\begin_layout LyX-Code - rm: tmp: No such file or directory -\end_layout - -\begin_layout LyX-Code - clone% diff tmp test_output -\end_layout - -\begin_layout LyX-Code - These should cause no concern. - However, if the "diff" shows that -\end_layout - -\begin_layout LyX-Code - tmp and test_output are different, contact me (you have a -\end_layout - -\begin_layout LyX-Code - problem). - -\end_layout - -\begin_layout LyX-Code - You should now be able to use scan_for_matches by following the -\end_layout - -\begin_layout LyX-Code - instructions given below (which is all the normal user should have -\end_layout - -\begin_layout LyX-Code - to understand, once things are installed properly). -\end_layout - -\begin_layout LyX-Code - ============================================================== -\end_layout - -\begin_layout LyX-Code -How to run scan_for_matches: -\end_layout - -\begin_layout LyX-Code - To run the program, you type need to create two files -\end_layout - -\begin_layout LyX-Code - 1. - the first file contains the pattern you wish to scan for; I'll -\end_layout - -\begin_layout LyX-Code - call this file pat_file in what follows (but any name is ok) -\end_layout - -\begin_layout LyX-Code - 2. - the second file contains a set of sequences to scan. - These -\end_layout - -\begin_layout LyX-Code - should be in "fasta format". - Just look at the contents of -\end_layout - -\begin_layout LyX-Code - test_dna_input to see examples of this format. - Basically, -\end_layout - -\begin_layout LyX-Code - each sequence begins with a line of the form -\end_layout - -\begin_layout LyX-Code - >sequence_id -\end_layout - -\begin_layout LyX-Code - and is followed by one or more lines containing the sequence. -\end_layout - -\begin_layout LyX-Code - Once these files have been created, you just use -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file < input_file -\end_layout - -\begin_layout LyX-Code - to scan all of the input sequences for the given pattern. - As an -\end_layout - -\begin_layout LyX-Code - example, suppose that pat_file contains a single line of the form -\end_layout - -\begin_layout LyX-Code - p1=4...7 3...8 ~p1 -\end_layout - -\begin_layout LyX-Code - Then, -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - should produce two "hits". - When I run this on my machine, I get -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - >tst1:[6,27] -\end_layout - -\begin_layout LyX-Code - cguaacc ggttaacc gguuacg -\end_layout - -\begin_layout LyX-Code - >tst2:[6,27] -\end_layout - -\begin_layout LyX-Code - CGUAACC GGTTAACC GGUUACG -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code -Simple Patterns Built by Matching Ranges and Reverse Complements -\end_layout - -\begin_layout LyX-Code - Let me first explain this simple pattern: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - p1=4...7 3...8 ~p1 -\end_layout - -\begin_layout LyX-Code - The pattern consists of three "pattern units" separated by spaces. -\end_layout - -\begin_layout LyX-Code - The first pattern unit is -\end_layout - -\begin_layout LyX-Code - p1=4...7 -\end_layout - -\begin_layout LyX-Code - which means "match 4 to 7 characters and call them p1". - The -\end_layout - -\begin_layout LyX-Code - second pattern unit is -\end_layout - -\begin_layout LyX-Code - 3...8 -\end_layout - -\begin_layout LyX-Code - which means "then match 3 to 8 characters". - The last pattern unit -\end_layout - -\begin_layout LyX-Code - is -\end_layout - -\begin_layout LyX-Code - ~p1 -\end_layout - -\begin_layout LyX-Code - which means "match the reverse complement of p1". - The first -\end_layout - -\begin_layout LyX-Code - reported hit is shown as -\end_layout - -\begin_layout LyX-Code - >tst1:[6,27] -\end_layout - -\begin_layout LyX-Code - cguaacc ggttaacc gguuacg -\end_layout - -\begin_layout LyX-Code - which states that characters 6 through 27 of sequence tst1 were -\end_layout - -\begin_layout LyX-Code - matched. - "cguaac" matched the first pattern unit, "ggttaacc" the -\end_layout - -\begin_layout LyX-Code - second, and "gguuacg" the third. - This is an example of a common -\end_layout - -\begin_layout LyX-Code - type of pattern used to search for sections of DNA or RNA that -\end_layout - -\begin_layout LyX-Code - would fold into a hairpin loop. -\end_layout - -\begin_layout LyX-Code -Searching Both Strands -\end_layout - -\begin_layout LyX-Code - Now for a short aside: scan_for_matches only searched the -\end_layout - -\begin_layout LyX-Code - sequences in the input file; it did not search the opposite -\end_layout - -\begin_layout LyX-Code - strand. - With a pattern of the sort we just used, there is not -\end_layout - -\begin_layout LyX-Code - need o search the opposite strand. - However, it is normally the -\end_layout - -\begin_layout LyX-Code - case that you will wish to search both the sequence and the -\end_layout - -\begin_layout LyX-Code - opposite strand (i.e., the reverse complement of the sequence). -\end_layout - -\begin_layout LyX-Code - To do that, you would just use the "-c" command line. - For example, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - Hits on the opposite strand will show a beginning location greater -\end_layout - -\begin_layout LyX-Code - than te end location of the match. -\end_layout - -\begin_layout LyX-Code -Defining Pairing Rules and Allowing Mismatches, Insertions, and Deletions -\end_layout - -\begin_layout LyX-Code - Let us stop now and ask "What additional features would one need to -\end_layout - -\begin_layout LyX-Code - really find the kinds of loop structures that characterize tRNAs, -\end_layout - -\begin_layout LyX-Code - rRNAs, and so forth?" I can immediately think of two: -\end_layout - -\begin_layout LyX-Code - a) you will need to be able to allow non-standard pairings -\end_layout - -\begin_layout LyX-Code - (those other than G-C and A-U), and -\end_layout - -\begin_layout LyX-Code - b) you will need to be able to tolerate some number of -\end_layout - -\begin_layout LyX-Code - mismatches and bulges. -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - Let me first show you how to handle non-standard "rules for -\end_layout - -\begin_layout LyX-Code - pairing in reverse complements". - Consider the following pattern, -\end_layout - -\begin_layout LyX-Code - which I show as two line (you may use as many lines as you like in -\end_layout - -\begin_layout LyX-Code - forming a pattern, although you can only break a pattern at points -\end_layout - -\begin_layout LyX-Code - where space would be legal): -\end_layout - -\begin_layout LyX-Code - r1={au,ua,gc,cg,gu,ug,ga,ag} -\end_layout - -\begin_layout LyX-Code - p1=2...3 0...4 p2=2...5 1...5 r1~p2 0...4 ~p1 -\end_layout - -\begin_layout LyX-Code - The first "pattern unit" does not actually match anything; rather, -\end_layout - -\begin_layout LyX-Code - it defines a "pairing rule" in which standard pairings are -\end_layout - -\begin_layout LyX-Code - allowed, as well as G-A and A-G (in case you wondered, Us and Ts -\end_layout - -\begin_layout LyX-Code - and upper and lower case can be used interchangably; for example -\end_layout - -\begin_layout LyX-Code - r1={AT,UA,gc,cg} could be used to define the "standard rule" for -\end_layout - -\begin_layout LyX-Code - pairings). - The second line consists of six pattern units which -\end_layout - -\begin_layout LyX-Code - may be interpreted as follows: -\end_layout - -\begin_layout LyX-Code - p1=2...3 match 2 or 3 characters (call it p1) -\end_layout - -\begin_layout LyX-Code - 0...4 match 0 to 4 characters -\end_layout - -\begin_layout LyX-Code - p2=2...5 match 2 to 5 characters (call it p2) -\end_layout - -\begin_layout LyX-Code - 1...5 match 1 to 5 characters -\end_layout - -\begin_layout LyX-Code - r1~p2 match the reverse complement of p2, -\end_layout - -\begin_layout LyX-Code - allowing G-A and A-G pairs -\end_layout - -\begin_layout LyX-Code - 0...4 match 0 to 4 characters -\end_layout - -\begin_layout LyX-Code - ~p1 match the reverse complement of p1 -\end_layout - -\begin_layout LyX-Code - allowing only G-C, C-G, A-T, and T-A pairs -\end_layout - -\begin_layout LyX-Code - Thus, r1~p2 means "match the reverse complement of p2 using rule r1". -\end_layout - -\begin_layout LyX-Code - Now let us consider the issue of tolerating mismatches and bulges. -\end_layout - -\begin_layout LyX-Code - You may add a "qualifier" to the pattern unit that gives the -\end_layout - -\begin_layout LyX-Code - tolerable number of "mismatches, deletions, and insertions". -\end_layout - -\begin_layout LyX-Code - Thus, -\end_layout - -\begin_layout LyX-Code - p1=10...10 3...8 ~p1[1,2,1] -\end_layout - -\begin_layout LyX-Code - means that the third pattern unit must match 10 characters, -\end_layout - -\begin_layout LyX-Code - allowing one "mismatch" (a pairing other than G-C, C-G, A-T, or -\end_layout - -\begin_layout LyX-Code - T-A), two deletions (a deletion is a character that occurs in p1, -\end_layout - -\begin_layout LyX-Code - but has been "deleted" from the string matched by ~p1), and one -\end_layout - -\begin_layout LyX-Code - insertion (an "insertion" is a character that occurs in the string -\end_layout - -\begin_layout LyX-Code - matched by ~p1, but not for which no corresponding character -\end_layout - -\begin_layout LyX-Code - occurs in p1). - In this case, the pattern would match -\end_layout - -\begin_layout LyX-Code - ACGTACGTAC GGGGGGGG GCGTTACCT -\end_layout - -\begin_layout LyX-Code - which is, you must admit, a fairly weak loop. - It is common to -\end_layout - -\begin_layout LyX-Code - allow mismatches, but you will find yourself using insertions and -\end_layout - -\begin_layout LyX-Code - deletions much more rarely. - In any event, you should note that -\end_layout - -\begin_layout LyX-Code - allowing mismatches, insertions, and deletions does force the -\end_layout - -\begin_layout LyX-Code - program to try many additional possible pairings, so it does slow -\end_layout - -\begin_layout LyX-Code - things down a bit. -\end_layout - -\begin_layout LyX-Code -How Patterns Are Matched -\end_layout - -\begin_layout LyX-Code - Now is as good a time as any to discuss the basic flow of control -\end_layout - -\begin_layout LyX-Code - when matching patterns. - Recall that a "pattern" is a sequence of -\end_layout - -\begin_layout LyX-Code - "pattern units". - Suppose that the pattern units were -\end_layout - -\begin_layout LyX-Code - u1 u2 u3 u4 ... - un -\end_layout - -\begin_layout LyX-Code - The scan of a sequence S begins by setting the current position -\end_layout - -\begin_layout LyX-Code - to 1. - Then, an attempt is made to match u1 starting at the -\end_layout - -\begin_layout LyX-Code - current position. - Each attempt to match a pattern unit can -\end_layout - -\begin_layout LyX-Code - succeed or fail. - If it succeeds, then an attempt is made to match -\end_layout - -\begin_layout LyX-Code - the next unit. - If it fails, then an attempt is made to find an -\end_layout - -\begin_layout LyX-Code - alternative match for the immediately preceding pattern unit. - If -\end_layout - -\begin_layout LyX-Code - this succeeds, then we proceed forward again to the next unit. - If -\end_layout - -\begin_layout LyX-Code - it fails we go back to the preceding unit. - This process is called -\end_layout - -\begin_layout LyX-Code - "backtracking". - If there are no previous units, then the current -\end_layout - -\begin_layout LyX-Code - position is incremented by one, and everything starts again. - This -\end_layout - -\begin_layout LyX-Code - proceeds until either the current position goes past the end of -\end_layout - -\begin_layout LyX-Code - the sequence or all of the pattern units succeed. - On success, -\end_layout - -\begin_layout LyX-Code - scan_for_matches reports the "hit", the current position is set -\end_layout - -\begin_layout LyX-Code - just past the hit, and an attempt is made to find another hit. -\end_layout - -\begin_layout LyX-Code - If you wish to limit the scan to simply finding a maximum of, say, -\end_layout - -\begin_layout LyX-Code - 10 hits, you can use the -n option (-n 10 would set the limit to -\end_layout - -\begin_layout LyX-Code - 10 reported hits). - For example, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c -n 1 pat_file < test_dna_input -\end_layout - -\begin_layout LyX-Code - would search for just the first hit (and would stop searching the -\end_layout - -\begin_layout LyX-Code - current sequences or any that follow in the input file). -\end_layout - -\begin_layout LyX-Code -Searching for repeats: -\end_layout - -\begin_layout LyX-Code - In the last section, I discussed almost all of the details -\end_layout - -\begin_layout LyX-Code - required to allow you to look for repeats. - Consider the following -\end_layout - -\begin_layout LyX-Code - set of patterns: -\end_layout - -\begin_layout LyX-Code - p1=6...6 3...8 p1 (find exact 6 character repeat separated -\end_layout - -\begin_layout LyX-Code - by to 8 characters) -\end_layout - -\begin_layout LyX-Code - p1=6...6 3..8 p1[1,0,0] (allow one mismatch) -\end_layout - -\begin_layout LyX-Code - p1=3...3 p1[1,0,0] p1[1,0,0] p1[1,0,0] -\end_layout - -\begin_layout LyX-Code - (match 12 characters that are the remains -\end_layout - -\begin_layout LyX-Code - of a 3-character sequence occurring 4 times) -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - p1=4...8 0...3 p2=6...8 p1 0...3 p2 -\end_layout - -\begin_layout LyX-Code - (This would match things like -\end_layout - -\begin_layout LyX-Code - ATCT G TCTTT ATCT TG TCTTT -\end_layout - -\begin_layout LyX-Code - ) -\end_layout - -\begin_layout LyX-Code -Searching for particular sequences: -\end_layout - -\begin_layout LyX-Code - Occasionally, one wishes to match a specific, known sequence. -\end_layout - -\begin_layout LyX-Code - In such a case, you can just give the sequence (along with an -\end_layout - -\begin_layout LyX-Code - optional statement of the allowable mismatches, insertions, and -\end_layout - -\begin_layout LyX-Code - deletions). - Thus, -\end_layout - -\begin_layout LyX-Code - p1=6...8 GAGA ~p1 (match a hairpin with GAGA as the loop) -\end_layout - -\begin_layout LyX-Code - RRRRYYYY (match 4 purines followed by 4 pyrimidines) -\end_layout - -\begin_layout LyX-Code - TATAA[1,0,0] (match TATAA, allowing 1 mismatch) -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -Matches against a "weight matrix": -\end_layout - -\begin_layout LyX-Code - I will conclude my examples of the types of pattern units -\end_layout - -\begin_layout LyX-Code - available for matching against nucleotide sequences by discussing a -\end_layout - -\begin_layout LyX-Code - crude implemetation of matching using a "weight matrix". - While I -\end_layout - -\begin_layout LyX-Code - am less than overwhelmed with the syntax that I chose, I think that -\end_layout - -\begin_layout LyX-Code - the reader should be aware that I was thinking of generating -\end_layout - -\begin_layout LyX-Code - patterns containing such pattern units automatically from -\end_layout - -\begin_layout LyX-Code - alignments (and did not really plan on typing such things in by -\end_layout - -\begin_layout LyX-Code - hand very often). - Anyway, suppose that you wanted to match a -\end_layout - -\begin_layout LyX-Code - sequence of eight characters. - The "consensus" of these eight -\end_layout - -\begin_layout LyX-Code - characters is GRCACCGS, but the actual "frequencies of occurrence" -\end_layout - -\begin_layout LyX-Code - are given in the matrix below. - Thus, the first character is an A -\end_layout - -\begin_layout LyX-Code - 16% the time and a G 84% of the time. - The second is an A 57% of -\end_layout - -\begin_layout LyX-Code - the time, a C 10% of the time, a G 29% of the time, and a T 4% of -\end_layout - -\begin_layout LyX-Code - the time. - -\end_layout - -\begin_layout LyX-Code - C1 C2 C3 C4 C5 C6 C7 C8 -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - A 16 57 0 95 0 18 0 0 -\end_layout - -\begin_layout LyX-Code - C 0 10 80 0 100 60 0 50 -\end_layout - -\begin_layout LyX-Code - G 84 29 0 0 0 20 100 50 -\end_layout - -\begin_layout LyX-Code - T 0 4 20 5 0 2 0 0 -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - One could use the following pattern unit to search for inexact -\end_layout - -\begin_layout LyX-Code - matches related to such a "weight matrix": -\end_layout - -\begin_layout LyX-Code - {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), -\end_layout - -\begin_layout LyX-Code - (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 -\end_layout - -\begin_layout LyX-Code - This pattern unit will attempt to match exactly eight characters. -\end_layout - -\begin_layout LyX-Code - For each character in the sequence, the entry in the corresponding -\end_layout - -\begin_layout LyX-Code - tuple is added to an accumulated sum. - If the sum is greater than -\end_layout - -\begin_layout LyX-Code - 450, the match succeeds; else it fails. -\end_layout - -\begin_layout LyX-Code - Recently, this feature was upgraded to allow ranges. - Thus, -\end_layout - -\begin_layout LyX-Code - 600 > {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), -\end_layout - -\begin_layout LyX-Code - (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 -\end_layout - -\begin_layout LyX-Code - will work, as well. -\end_layout - -\begin_layout LyX-Code -Allowing Alternatives: -\end_layout - -\begin_layout LyX-Code - Very occasionally, you may wish to allow alternative pattern units -\end_layout - -\begin_layout LyX-Code - (i.e., "match either A or B"). - You can do this using something -\end_layout - -\begin_layout LyX-Code - like -\end_layout - -\begin_layout LyX-Code - ( GAGA | GCGCA) -\end_layout - -\begin_layout LyX-Code - which says "match either GAGA or GCGCA". - You may take -\end_layout - -\begin_layout LyX-Code - alternatives of a list of pattern units, for example -\end_layout - -\begin_layout LyX-Code - (p1=3...3 3...8 ~p1 | p1=5...5 4...4 ~p1 GGG) -\end_layout - -\begin_layout LyX-Code - would match one of two sequences of pattern units. - There is one -\end_layout - -\begin_layout LyX-Code - clumsy aspect of the syntax: to match a list of alternatives, you -\end_layout - -\begin_layout LyX-Code - need to fully the request. - Thus, -\end_layout - -\begin_layout LyX-Code - (GAGA | (GCGCA | TTCGA)) -\end_layout - -\begin_layout LyX-Code - would be needed to try the three alternatives. -\end_layout - -\begin_layout LyX-Code -One Minor Extension -\end_layout - -\begin_layout LyX-Code - Sometimes a pattern will contain a sequence of distinct ranges, -\end_layout - -\begin_layout LyX-Code - and you might wish to limit the sum of the lengths of the matched -\end_layout - -\begin_layout LyX-Code - subsequences. - For example, suppose that you basically wanted to -\end_layout - -\begin_layout LyX-Code - match something like -\end_layout - -\begin_layout LyX-Code - ARRYYTT p1=0...5 GCA[1,0,0] p2=1...6 ~p1 4...8 ~p2 p3=4...10 CCT -\end_layout - -\begin_layout LyX-Code - but that the sum of the lengths of p1, p2, and p3 must not exceed -\end_layout - -\begin_layout LyX-Code - eight characters. - To do this, you could add -\end_layout - -\begin_layout LyX-Code - length(p1+p2+p3) < 9 -\end_layout - -\begin_layout LyX-Code - as the last pattern unit. - It will just succeed or fail (but does -\end_layout - -\begin_layout LyX-Code - not actually match any characters in the sequence). -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -Matching Protein Sequences -\end_layout - -\begin_layout LyX-Code - Suppose that the input file contains protein sequences. - In this -\end_layout - -\begin_layout LyX-Code - case, you must invoke scan_for_matches with the "-p" option. - You -\end_layout - -\begin_layout LyX-Code - cannot use aspects of the language that relate directly to -\end_layout - -\begin_layout LyX-Code - nucleotide sequences (e.g., the -c command line option or pattern -\end_layout - -\begin_layout LyX-Code - constructs referring to the reverse complement of a previously -\end_layout - -\begin_layout LyX-Code - matched unit). - -\end_layout - -\begin_layout LyX-Code - You also have two additional constructs that allow you to match -\end_layout - -\begin_layout LyX-Code - either "one of a set of amino acids" or "any amino acid other than -\end_layout - -\begin_layout LyX-Code - those a given set". - For example, -\end_layout - -\begin_layout LyX-Code - p1=0...4 any(HQD) 1...3 notany(HK) p1 -\end_layout - -\begin_layout LyX-Code - would successfully match a string like -\end_layout - -\begin_layout LyX-Code - YWV D AA C YWV -\end_layout - -\begin_layout LyX-Code -Using the show_hits Utility -\end_layout - -\begin_layout LyX-Code - When viewing a large set of complex matches, you might find it -\end_layout - -\begin_layout LyX-Code - convenient to post-process the scan_for_matches output to get a -\end_layout - -\begin_layout LyX-Code - more readable version. - We provide a simple post-processor called -\end_layout - -\begin_layout LyX-Code - "show_hits". - To see its effect, just pipe the output of a -\end_layout - -\begin_layout LyX-Code - scan_for_matches into show_hits: -\end_layout - -\begin_layout LyX-Code - Normal Output: -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp -\end_layout - -\begin_layout LyX-Code - >tst1:[1,28] -\end_layout - -\begin_layout LyX-Code - gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - >tst1:[28,1] -\end_layout - -\begin_layout LyX-Code - gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - >tst2:[2,31] -\end_layout - -\begin_layout LyX-Code - CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - >tst2:[31,2] -\end_layout - -\begin_layout LyX-Code - CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - >tst3:[3,32] -\end_layout - -\begin_layout LyX-Code - gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - >tst3:[32,3] -\end_layout - -\begin_layout LyX-Code - gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - Piped Through show_hits: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp | show_hits -\end_layout - -\begin_layout LyX-Code - tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code - Optionally, you can specify which of the "fields" in the matches -\end_layout - -\begin_layout LyX-Code - you wish to sort on, and show_hits will sort them. - The field -\end_layout - -\begin_layout LyX-Code - numbers start with 0. - So, you might get something like -\end_layout - -\begin_layout LyX-Code - clone% scan_for_matches -c pat_file < tmp | show_hits 2 1 -\end_layout - -\begin_layout LyX-Code - tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG -\end_layout - -\begin_layout LyX-Code - tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG -\end_layout - -\begin_layout LyX-Code - tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac -\end_layout - -\begin_layout LyX-Code - tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac -\end_layout - -\begin_layout LyX-Code - tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac -\end_layout - -\begin_layout LyX-Code - clone% -\end_layout - -\begin_layout LyX-Code - In this case, the hits have been sorted on fields 2 and 1 (that is, -\end_layout - -\begin_layout LyX-Code - the third and second matched subfields). -\end_layout - -\begin_layout LyX-Code - show_hits is just one possible little post-processor, and you -\end_layout - -\begin_layout LyX-Code - might well wish to write a customized one for yourself. -\end_layout - -\begin_layout LyX-Code -Reducing the Cost of a Search -\end_layout - -\begin_layout LyX-Code - The scan_for_matches utility uses a fairly simple search, and may -\end_layout - -\begin_layout LyX-Code - consume large amounts of CPU time for complex patterns. - Someday, -\end_layout - -\begin_layout LyX-Code - I may decide to optimize the code. - However, until then, let me -\end_layout - -\begin_layout LyX-Code - mention one useful technique. - -\end_layout - -\begin_layout LyX-Code - When you have a complex pattern that includes a number of varying -\end_layout - -\begin_layout LyX-Code - ranges, imprecise matches, and so forth, it is useful to -\end_layout - -\begin_layout LyX-Code - "pipeline" matches. - That is, form a simpler pattern that can be -\end_layout - -\begin_layout LyX-Code - used to scan through a large database extracting sections that -\end_layout - -\begin_layout LyX-Code - might be matched by the more complex pattern. - Let me illustrate -\end_layout - -\begin_layout LyX-Code - with a short example. - Suppose that you really wished to match the -\end_layout - -\begin_layout LyX-Code - pattern -\end_layout - -\begin_layout LyX-Code - p1=3...5 0...8 ~p1[1,1,0] p2=6...7 3...6 AGC 3...5 RYGC ~p2[1,0,0] -\end_layout - -\begin_layout LyX-Code - In this case, the pattern units AGC 3...5 RYGC can be used to rapidly -\end_layout - -\begin_layout LyX-Code - constrain the overall search. - You can preprocess the overall -\end_layout - -\begin_layout LyX-Code - database using the pattern: -\end_layout - -\begin_layout LyX-Code - 31...31 AGC 3...5 RYGC 7...7 -\end_layout - -\begin_layout LyX-Code - Put the complex pattern in pat_file1 and the simpler pattern in -\end_layout - -\begin_layout LyX-Code - pat_file2. - Then use, -\end_layout - -\begin_layout LyX-Code - scan_for_matches -c pat_file2 < nucleotide_database | -\end_layout - -\begin_layout LyX-Code - scan_for_matches pat_file1 -\end_layout - -\begin_layout LyX-Code - The output will show things like -\end_layout - -\begin_layout LyX-Code - >seqid:[232,280][2,47] -\end_layout - -\begin_layout LyX-Code - matches pieces -\end_layout - -\begin_layout LyX-Code - Then, the actual section of the sequence that was matched can be -\end_layout - -\begin_layout LyX-Code - easily computed as [233,278] (remember, the positions start from -\end_layout - -\begin_layout LyX-Code - 1, not 0). -\end_layout - -\begin_layout LyX-Code - Let me finally add, you should do a few short experiments to see -\end_layout - -\begin_layout LyX-Code - whether or not such pipelining actually improves performance -- it -\end_layout - -\begin_layout LyX-Code - is not always obvious where the time is going, and I have -\end_layout - -\begin_layout LyX-Code - sometimes found that the added complexity of pipelining actually -\end_layout - -\begin_layout LyX-Code - slowed things up. - It gets its best improvements when there are -\end_layout - -\begin_layout LyX-Code - exact matches of more than just a few characters that can be -\end_layout - -\begin_layout LyX-Code - rapidly used to eliminate large sections of the database. -\end_layout - -\begin_layout LyX-Code -============= -\end_layout - -\begin_layout LyX-Code -Additions: -\end_layout - -\begin_layout LyX-Code -Feb 9, 1995: the pattern units ^ and $ now work as in normal regular -\end_layout - -\begin_layout LyX-Code - expressions. - That is -\end_layout - -\begin_layout LyX-Code - TTF $ -\end_layout - -\begin_layout LyX-Code - matches only TTF at the end of the string and -\end_layout - -\begin_layout LyX-Code - ^ TTF -\end_layout - -\begin_layout LyX-Code - matches only an initial TTF -\end_layout - -\begin_layout LyX-Code - The pattern unit -\end_layout - -\begin_layout LyX-Code - >pWGQ4T*;2_C%ATy*QkJr0 z3n>wmq~(8SjF6}Q%hU6GKJRDVnKAdC-#O==`#tA;?~PMYQu+vt4@t?{`n9sd?*-vaV!;_gQLx_L12jgF$!YEDCoseWN;1+X4WPU6$gDg2b|H;c$oh& z9&-73aOmQAs-`%Iq`reb7|;% zpq3jR`OEOjZA7#W(J)qECNmpL9K;^)XlIDCUwS0uA02|Uf>zG+%NLY^6A&EM%-Y7$ z;g`vgYcM%#rF$WNH#yP049xHjc)X?k!uZR?U4x-fd@Fnk^}C^o6PQ^O-FInZ)EaDy z;#=WDsNZc%99ddSMOEx~xlwDdDT;4}=b-=5ruvpyK@OJ0NGTVYM~ zFKaIM8V7v?M@xOXRpYP8wCLqtiT+2^ic3kZ8hcGv#Vj8i^N&_lRFV6AY|J0+N^2@y5sLN2>j8mOa6{t>F)x+jJqNh z>q7`GxoZ418G42Dz@YzZX@Xb&K0FNiM=O*3a)rCYpua3EuWxN;16C-}JC$*UcsnEe zUjY~fU4wBkEBzA&{oT6uI7=V|L?2>|a|Zhqaf&7XghAI}T+B)bg)IRllI}@!*y#go zX7vw~{256t*%!0YOJT6z4Qz;a1d&qT(sFSE5FLI;6U!b9wg#JHR(dUL33HJi%mn8^ zoWc@kZQ@`G!5fq2hB)b4IxgROVQT?nn3XOJTZP6}Gh;Ku#m8LsOz<^1 z#7aM21;gxcR(K~I!~*APzku{sI|Y1APO;LdS79(aoVC6cX&zvy)wBE=fss}XcKId& zTS8weR*eeI))8k7aM04aSqtdG{+kyN&Pjy0GZ z``dC^g~kXvGr?Kot$_C~PO@x{wZJm$Z);=~E_1Z8!Py-#)VE(!+j6_C1)O2|RxXi$ zKxa-kyFW~@7Ho#)Te&t?fir@gEpbHXx2UJ(4}o68I>+*@Tps@b(1`2Y%-RSCus1Pv zAk0NrD$8twUX$GgR;${BtS{`NMOW=rdlkV=45 z3xqK{OMM#~0<`;sTdxJ;fl#obv;bQL@{Di`3FSieiU+VAg90= zyCz?Ot;l>}tDvAGSXkn6VyY`15Iia2p_l1$EtnAKazzpZTZIZqld1gA+17v-z-%kx z27DDnB+RC6rSI^Y^;SI`{Lg@K#iCddMc_-Yk+gjngSAZrM8qj^_7DS{gEJ0iz2r7a z`h>3qOoAs|5mex-&?GTS_~-H0<{T>`349fjGz4iksM_d5oN;C*rVbGBWOimQ%O2y; zP?7{1ew*M|AW^i$6U%bHU;=zC2vJ}qOn|RKh&EtYAg-yIy#pS=H>+i$t_2bbtb_>g zRgjQ0J_&#tfobf_3>;Si1o&ETp}cn8AV%QW|AWVp0E1XcnC_!2xMtq#)jEQU3RCEf(Te2z7&c!8Bb0lo?( zlIF0`w{!j7`hNz9Bu8Dj<-wQ0p&A%GJZDiah=~l)7~C-V`i6`@_1SD-RaMlQA~=bi3%xSG&ys@7Z_go^`;FuLYMJj&I`;dS z1>)*8pJkNqKds!4wD39b+^+eU*rrzn#hsI6)RnQYhin$l-1)=IL-Vo9B(FE~@XI8~^%&KI^N~zv z#6p}JV=eKMqp55;sIKvYHAaX=&hP!TOf|#4o>HuQCt$bZw%@z$d-oLC_NLo($SeKW z4S0C4m+>`babKe>%OU-vR!yJXHP1ysvDP9*N$Htt&}a_PLXjA*22zfeZ}dB z?`KJG8gt((Ubxf!r0tN|i=4MrUA}j?kSfi>yT1v27FC&r)`pyILzXvCKg;2Ad!*Sx zU4!NDskIa`62`?U#l_dzVJx(blWa>tYm6erz2jqOqMK;Rty{FYCkDC^LFd>M5;?~Q z*zjyq76sbhXYo_aRbMN_2>mdUy-0nt1%Ch?G@{j2U2Sj>enou~93{U5-r51wqU|9I zj-gD+55mtvivfH@sBnRg#Oh!(-EPy(Pn56Y}qB#aL$phF2p0$INU1Wp9P z%D`J7zosRX_=wX=LVo!rzlP=+2o`LE0x$>$gXM#Qz0BIt(o$!|k4Y=*|NSuv!-oO5 zYW0sv#W~`SrNKjj{{x&FI69n|9Viptz=6yQ3k7&MzoH%95cC2eT0l3F(hz=CkUT?H zNVEvriGz~X4$uU0t!t-OTRw8AfCj9cex;*S;uj(hMepVVi^x!7f9ij!@RqinqYC)caJ z)|rSCimF`F8fv9tTup&dEQ}5MRBG>izE)DUThA)!K~ouLC(O4=3-V3&Tg|*M=FqR+ z*4WI|A7i_^rx9kq9u<4Nv3Tj`fKUomIrOUIhTYNqyl zqvg7mTiY+NOXgaBw9hM7oo&c?&x>0OPamZkvE{xUQpLiB4bk5@@6uDytb8}&?o?mR zT+oqIR#4U19oOajyq zXl?(SDcY;Ms5wrJ&cf=Mx1MyRQi8Zpspw&8-@`b14u{pBxqN1T!9J!RYKwb)4$bB< zuFDqp?8OD=tvlq)?O0o{Tvj`lniW)GYst4&Y(|eBNfTA$df{rv!_1id1|LPL9y5h_ zKcotD)Q87@&>$1kzxF}He;aFL=R~=9>Nz1Nzufkwl8x_gGc?5SAlDmc{$Ep3fn!>~7Edv&|D3^lcF~nv$>@4nd0MDvUTR{OD5(*=^6VqfFV2 z&NVe2ri-WGL_BM~Si*ODR&26xYk90EBlN>g!I_y`Rrsd2r3v1nPTHgNcfK2EZt)uu zpM<*Xm1|FFi#EHUtM>gyK|XPXRi5G+&w3cDE_zLNIhJ+5|9-T8 zqHyngaMioZ`|DE5S;*6$T*uw9a21;!`S$6W{MKacDb}sia(I9 z{=lT2FmU{HgJkT-y$pEu1l~Okdt&XScTpPe?u@m%pJy@l?8k!_%zAH2uWGBJ4)wfK z-E=qS1q=CTvx8L8b;cfitrd6N{@g8b`ngmx4P8{hm|EjUmXvBE*-yQ_nub5szHs7n z^C*}vZ2w@e+4*zuJ4v(6w5_|PJ{~mJ@~^a?sy@;@aFW|P=4k0#MMpn&&CaJ$Z(CjR zw6_XhN{hXDd>3VwO6P<3ag$|DdJdRiq$%}=hlNFz4M!E#qMR;#;8|X z#i&<>!>y|Zo9yBYI0_?<%1vD>Yqk*W``PPygwJfZJHo`TghKV;yACnMho#+{dikGQ zn%(f~q`pBuq>-MJ^6au6W9@N#(Ip8R`TUy6Q&UXm**pcMzowTm>c2hR@B{nC#`;i8 zVxXxEZhj49G5%>a=q&g zBUI14yNJ((ni-)n3~Ex?a8oe|aHqv1g*Q4r9y1 zBgYNOw>t*qWCn1_cfh?XUFXj*%#_WY@vEn0@gqFK5cF{0oik}Cm2>6zUyD^5OusyX zHtpBh7$@@0?`}G`&c&yXw<-Bon$7MEHhooAMXl*o1=R#b_YX{|%67?PIY>`))E@Fi ztWtmcg#UNbiZT-n+2Q-pYun${=w58@(%tE8kB-)ptmntRGH*$QGapcfG9PTSNeOw8 z?NZ+E#->NDtWIUsC0x_T^ltBGk2{~c88tX$_RTAdSbzCc`FSSpy|v$sHyNInj?qZ5 zp3m~`e|KS$^%?W+H}-nHuucWzcC&!XdfTU0UGkDR%&u>KDJ zp%G*b-|^(@)KV7?cKGh}j{JOjr$O72!gIGY)^Pu7S@xp$8APmf9_^u2XriZ7o`KJXP&!UeJ060C1WC6mh#DI2W+ zVMK!}=m3q7Jta_tfoXY}Nc>Pu&r!?5;tZo`45X>dIdOZ&+!;EW`40(cJH6BEQa$Oa zrGh+qtWx{7Xy}$Ew3hg>4>*YrHRVQjq-4VVLs;qF`8d5+kQa1`G3o4@NlO3h-ThLe z#`pI5$<9>O_eEnuj<@0MlI@N(G>I;%cdGg|=S->x?})URRG(9T2yAuM2fI&0(e_}> z6CKKe2SWBELt>RWrV>9KkcWf|hD*9mayFf_NW7)t&q=F|^Aq6fWe-ZP|4~Al89;IB z^C-Eu$-w*!HaKpw1*YjWK(IKD%D+0!wx-TV*5S%b+-9alC%4(Ck+JKP(D4rasi<$>Mz$vkry!b>J0&mnBjhd)9PcoxH@N^} z1|@UnmLE+_O&7hM!V9h5oo;#htUdbRjMhCP6HO)M_T+#VdF{h*pjfxUmarGE-ixqB zvSXao@Iq3sPv7RN`w-2u^0`Y}51tg&Q39$Mct(E-V>l$n`{t(zjRA5irL@E@ zclBQOx5WxSXB6xn9ln%c++rbL+&kgDE8T|es@sUY=u^pUrp#(IPZLa&k5VN@;*$sC zMJ5kYJ`vE^{=^j8)>xpz%-MPWGwMI|J~$MdZn;zy zQmiZ!7{b*M9MCE`F%HGPEpw8(gD-ai!Q7h=%yT`UymL`xds}|qLURXZ@KIguQB(X9 z%BNCDel2}yPsz}+t7jrKnar3z{cO@{V*G~`1G^mS|8t5##Lp{J3@m{&uD0?TpPT?7Uo01h`AAXPa2O{q9lAz8V|N02ZGqqCVWmB4@MdfMjDS; zTLj+|>xP6^(s*!^e8k!y;d9b>aFTp*(s;y*9^re^cnFewhz0ppP9WlLw>hK@um*tnxA`Acp=^bDwfTRcu`kFwu7&wd%0SZDeG=>igWWXR`d~jkG zsN!hgKuj#<%&aXa`NfC{*Pj`k%d$kG>HbbEv;dM13yNtl1YmdpPsBh0a|8~AU$ayT z^`_-gk=iW8WN*Qr*Q+cv2Fiy7g*edd;e&(zG#U%%LkeKlBi2F}XSrCU+Vs6mg}GdFzq{N**#2AL zK;;PzI*uT=f}jCGfr6C4+G56X(H44<%N_3T0|yF);1d8l4h#cmd`L6|g+}oSpw?zn zQfYa$Sbq^X78fZB2?g?CA#gMZ9iWDfLIJa4kn1$(B7b4^mHu*#BC&vrivm?!G{MsZAYl9C0~OuuF? zAmX>b6%GUELxYeDM?v`n0H+2?*yrKv7jA)Iuv~Kl5cs#kp#=D#V2#3&0I7jkf&^d$ zjahH#MUhBN%Y|DF^w$fFkc7=1aF+n-1}F}KL;|$7#xOz(Z>v?dyj!qNxVE@RK_83{ z27o_dB?t&$AxIEOFo^Yrw?*>!a+UqXmhekB!ak1zu@^X<0Kg(h7@#R&*Du_v@V3ag z{hJ7a09X^l!zh-yFKtUI1IoEu%RMAHxjfF*R(N^V#or~YPnd; zn}+`~h7j@>6riQRfnCuci3d9=9~8M>Sh+~>UoPB#uqOaa4-7~Ma9|e&@fQJ52~q&D zCZ#Q5-o=vv%Z2-kJz+7xfl>}165wzI$oxRnhLFz)AlDn;77r9Gm+e2;83;SVg2Die z800Z<082p3Tesp? z0c!@1L4ceAr1k)mV4&*_y^9AvmV|>Z(!q%lgut;O7UBWFWi1?=MRNE5`(sd3B`n=l z92;Woeo-yUI5q&I66xkdjtvwn{e@CCzcfIa2qJx2nZQW<--H_kVtMFZBHWp>H@QWPm>SOH_!J-$!qEOdI^Gm=&59+uA6ir;v>Ll-)u zl6&sMkge?S;InBz<&q+n30_UhYr*9?W;@lt6uo*GeZSnbptFgVUqrXJUBCC6?OaQ@ zXt|4h_e&WLnUqsOwb}vj?Cp;w!{I%)m0itmUzYbbzVR3&b6mJRc&T%D?e(X5KjHf?*pQc!jp*-J0Qo>Z{rXX99f+`2roIl8WAf0W^=Ab%4_#@uln zs_uD&g0pMOmhM|~EpR&qTFtA^MXnWFDGTlr8)AWF-fqm^Zz@J!kVp}tAurhBfk2nR z+*GnU zc+|s&JA3NQbji`NTo>tT_C+RbFjrCC_~E#!*oUz&)$5dPm_xDK zQ=%{K2)%7&J%!NXyaC~CyAJsz!*dy^M(P@Lp5@^76tWwV*TP}UZqkPoXKoJ{lnZ@5 zTj>6VDpw}%<0E71LOagK-U{w2kry)Y1OeeJ2gMCzq|YFdx^fI52b92 zwgNkR|(y|`%GR^OvhC#YARhcs39`EJm~K_$}l|_#R!V zM{loT3Uy1}9;h1GGG|s=Pn*Zx-pBWP&^_vKGVV&_KF%jWo_zO>IHOqwG@k7|l(oVC z{17&?i$l#bS3uGBNcbI?oElw2_F!H%yu7q{hik(zhkT6q!*R=!s)Q>ZuV^u$Og93k zm2fp-heLG9KSTLK9{7hj==;Q5&237U2-~uod_2xK#^7L$Z(c1|)c%8IOgZJky!I*89Sp7vbhj91p0&aHTq<}i}XJ5 zY>q7*{3x8iphxM;iEqB$H)P5NL*JH)2A6cjCA~W?Z$HMeTOK*V-JaE+7%OUYxUND( z*|@v8WN7H8`=$6~N*jJ9vIm`Pw~o=L;ML0pY1>O|&h7Js-=XtqHy_O`YtrvxPO!w# z)P$!bH&E>@IPOhldEY9}X?@MchA_FxK6D?c`vffBmB>Q%uj4&)er3`yGw()IsnL?UPB@ zFMNo+Xz5&{UEnYO%H0w{r=*7d*jfPD{MO{!fg?t>8xG8WJ;O`ZHiUByczlWb22+)< znHj&!4J9UD1IfmGpU?(YZSOgkHylvJPb2p2^6T7&i z7iN3tQjmxnU`_5lbT=XPa+!d|hG(Cd59d?gRP?&k=x5c*g3b|U8c!8;9I|b8J%fi%MGJ0uF$wpeLq@Ma%O|&o`YQco4QZ> za6iIz_NA*pD%%C<;(ZwD5`G*e8JH4Lw$0k!KoJYR&i~)$?9gi(Lev}Ry zJWV`zq2O)WR;v;Qz2j3UE+q_8V6(|#sMB#VzQ2Jk#fOzH<;U@zrS;Er6<>8`w#Dj4 z>u*$lqf~S4Eo-`p<%c{?zUVG*r$R@Cifs?R#LdUWzI|`U8uh-$vBvSr8|J+%MtV05 z-Xvth*L+> zY|$?toxJsmMmkToGosR#3eI==@z!alTTOI=y00epCN(tAI)!!^yYAbOh}Kd(gL^5R zJc`qcd^v?f%h!f+vmY)q`xbCa{E<#Km!XxL*`wOV&>?=bpc`wNn+kikjB}p8zZ2OW z4QJ*IIRSc=i}1XsiTf`+Io9s9fodyHorc!g2gh=%ixmzkcR%^s$JVjqXpgZWzv-1r zB5ebo;n~})O5n_CL#Vr1mpUhVOsUPB5JBD_z!L1}MC&#@KlQe#3H!~$EQvGEwfQw_ z{%x5X(sp9kvx$SlO;09&d^Ij=Pd#p{gmVh9bS$N^v<$Jdo-i^BGztjuyX$n(Fse#_ zNLu!D45QK&w;$b3`pR96(%~wvrq34(cb_}07$)6ve)ZKH^Mz-}-7{@GX3Xx9 zVq5Y9VoqimSwD?@Ti;lKGf*IVoZG7`mh0_da|tr;I3*QBtDhSf(~i_(&mXW7 z9T_$BraIiTl`gBTUt+Ttg{9|UfmGxhk3j|53%GvIF9j81A0{qs-n^AN?iuWHg9xYE zn5@kHLO#inzOO%Cr8&rTC^#C&B?o4~tE;pbjr879$$KCG! zBonmSm9v_1gIGK@c-L9d|P5L!Hd$+BKn{}SZ}K|FK?C?~`d_k>pxr3FEv zpb!sCfzOGDp$M-eN(<-%6Dc&rLr;XyNt71Q;9U5ekkS)ACyhrucLd&}NR$@P1|oh> zJYPikoHQP&OfGy*8jpBbi10mWJWw=W_?{#m@#GKqo_NxS@Jf;oO&X7QaGUTsX*^KA zApV|s*qZP;X&llao8=Un1>G#>ME|mch(UrB5fp~N(E>i0fB*!80tYVsMIO7V*tB>> z!ZLqZbLVEU*n|PxhlM;A^twP34Fl?~80h+w>{Z1kq8I(G=3oTc52!YwK(!u0U@L)A z18V(A_Nrn$RJe!=fm zCt_s!OS7UuM;`=Y1gKsU?$tqq`i=l<{j!k`hAuZNAsqd!aDeKC0q3#^B{A?n2pSD) z?9lbrIKd)XRj^w;x%yXj1(hW@D6SC*IG~CMIA3T!>>6n<%bkvNx59GW{Ra(KG^n`( z#vYN8MxceF5uh6eU2g*&=x!BfgSg@St!2SNg%SJ?^qUA3HZ*7lubWQ-hFG;pApe8H zIto<#QGo4>04x_cV6>tE9TWa9s>G`{iN#aRf8%v1z(s?C&0#?}0dSrXl#S847G8z+{nSR%OlTj>b&G(vk5SeU>mMWH~WAGZD-7Pe}mSUl4HZ!Ak{>7W2MfdbY! zjG#KOi4o{(P}JJoj?~gwE!KaqMW6sIA+~aWvIGFyL;+X=T{pRP@yd+l7F}Mv|Cdl0 z36zHgm&p*?hbYigKtTcX7Pj6Pym;Tna^e1i4FU;Z2?8WF2sq&Of#iU|Ra+ywdujJt zyrE;cZ2tjM6A6047(lEi@a7N%LJoi>>t-P=-siDgw*O#v0F-#Zg(T!R05XA=7~tjr zc(=Bduv~Ggb_Zgj_m?q*NKGSj_(9Tz2HOpRn+6VLth0%@c!$Vx&HY9Dl@vmd;Fb@< z!4pCk7755gNH~C=YlE7k2(lVwE?$H2Zz9`bPKW^VfP@AK1KcG*#X$mSf><{e`E`TI zGMz2n#qn>1Bk2qQ$Pj>I1^TT7k~i2_2^`HeI@_YsR)Jq)#o%8$+M-;57eU~R!a&|Y zpn4+!GG8lge^IVgR6b$_<1gg`!3+hiZ-aq6A4v#q1dNVcTf`;FwQ$eMax?zLPOzvh zkdG2t-7rA4g#j)fSOx%Dt}Q<$iM4QV%W|>)VhtFiTVxS-dF2H;z zk{{3*z!M-OF>5j+NvhQz{})m9msEf^0!}diB>`mtWJWj`g)h2d{M{L$bSf%*qDm!m7$2qq{?x_zt=52M|bn`x9b#Jf)riYj`8rm z$N17&WN9hHX`zVCrxYBFFYVxz@4FlkbZdvOgiM(3!FJ(u z4^;gVM4mp29D6sKe~WA0DbA(D?wSx!i%fA5lLYjlA$ zNsYT=_r7eirhF(@bbickV5eZyvFNzytf7VvuP&au7LL|=Pd|;(J*A;yFuunKiivo3rbrkkVVy!BNfbC}~UJzm-(c#t@3yE&F=mGy2&ej&RK(S&; zh(&_iuj|;B7y1b$XxptnbJieewhvcNM9X z%4sON(b%ZI;{ZR+s4Hchqm%e4P3B%}$EI!%?8Us6*~it8v>hI2%`ii#BHOqK7TYPf6bIr%@vnolx6iQ~t2)%6?+|lgS{USh9%D{d@Z~Bhdg!f||^g1=hyd0*Vd>iwn zE#4Ik>nSH@y)N)U$4WX5sIlp5y4v7*CHq3-JDFI{Fk9GqE7fl1v|vSg<2sc~9W1tD~ta^J5KC^I9U#&K#yCH`?(vP?f)z6tMX&6sq}{V-sf*ZReRz#9j3E1jFWf>^V{0W7Ro%Gff3_;-?#UrlBSKm2Q1Ro}`i+8q56 z-J(5@u>SkAG^nQ>k@!;j@mL zgFCCIPNwRAu<2*N!mQM#j_eGqenzi6{3zA9Wix-Z#i01(`_}G#*;3*I*Y7BtK2cN= z_D-+ln!}ZSw}(%lGNW?oFKnH^RWg$x=9+%pXoq;Yp_hyg3)!I26DrZMnT=oS6u$YW zZm8tmNp|-Q&Rf0k8C{gUD#d~C!$aSz^oG06;Z(e|77C~bMq!vrRk;;s>~v>!S|FWdK|cN%L3j_QU&B3IkC6QiC5%8 zZff3r$?1MwqQZ0IUba4R4tnSd#s-!N+CjDpJ!fYh&o>ogp*qC(dZbjB0BVSff zm1k|@VbObW;Z9_RDU&Bde8eK(%U$>^9QvL6kn*OKkZRx4d9O8V9^Je#@Vs>kjGJ!0 zO!fqJ_)F%j&`Dg2l--zXCH*n~^BJFP{JF=uWRWGza7H@W*85sBS@a@>&kG$2F>VZB z1$y~-RD0aJl$Uc+PQWkZYx}(%^l7~ZF2elp`;g`-&xf;{U%CJ(up zT87B}VQkm97AA>$Zp551L~ye;Xa7t?weoEf6<5TI^yeX4#_8Ca{om8Y1aVhLHi-p4 zWRcNK3ZwFecFi8u&Kzx@8wsZl(sMWF@u97*lE!$yC_68wuRByP|1nspb|&N9(B7RU z7vgp>6j8H`^;XQJTzvHOjc%5{e_-K=TCKD98o(TKKDPa z5ak=!BUHU_&!M|>v|^rhP6o~~@36Lp9n;^6T6lM~6gS3i*GuPS{!$e+ITy~97^Yht zsN2JIb&RGeY{v5TcLPXzV*~Y#_i8_7`Zz^@(4~aW_(nhYMQsmUM z;iw2zCq9jAkC4j-A^hv^DQ5*f@%#6^-RoH9E**OI`b0tOEMMo>bLCLi!6;hM6R3En z)T_r*jYglt_}H~_FNU2L=qugA zAcoI&KL1j-!CRfl$+9L<$n)^WUb3*Zs_VjAz25jyczr8rk86mK@)2nsr`m27?xj$>9QRmnqbpa{UXFVo-rhHz+w}mD{FMwmC zk;}}ZC-k;w(0)O#JWu31oa!=>0WyR$Ry{^*a56xD`NUWVVudB|q;P|7L> z1B?QP+(z2j?8u9vb2{ZO2-;SKLd;=UlfBrB36FoA*Z#SsGUo>JA5s-?UC9!PTgV4~ zPgRIOZ)K`NJh<^UsS2o46H=8G{3GILi@J75Xb-X*gvf%IjSg%w9q_@x1n1_93E z5|j$w0A2#=QmM6Jd2nESX}U!$j|M^z|NGxqK6THF(C)eqZe`+Kj4BnG{=FrU=^x&o z%L(3bxnlEhC7LS8T-L|6j^p)*!(JE8kDEt4JecFXQQA%Qv|4AcRO!@!0)LxatQ>y? zhgw-6gOuASzf<UGXQbxLjZ@JiZ z{i6ksGxYWz>RT+xxQxSMz6vh1sq7s^Wso!p+_zzz!6tjLcaO`OVfzKh&Y^4Ot)3L_ z`y_wht)x?LI9*%R$2|7ecQ@_Mq?&4Rq!8a3QE|KOVBEesRjPwxsU!J(Y4JX~0#l)J zlPBS&Zk&gXYUQWYzC<&NKNz^ApY-IZ3CFR|+afo~S!au1@;LqiwL5D#d*ZcC((ca^ zueB*UUfyNbA4Ttd`U!0$Sw*|UgPweUk6G2`2-zdbc(_NVn?}V1+@J4A-ZMHWO%Km;egMW*@+dzhS_1SGl zC!J($4+bUQVe%1lV7NQNYZ$Q6TO|W>=B^KZE11znzL)A z!2X>9IoH_9H&HR|7@YFq-LgCDvyc|7l~bljpxQ1ze2UtIj`ft&*tW-Cm3nNdm?ety zuJ6*{Dc{8tbW%@I>GCGrgqxM9e5Oe0F#eJ~1EmF&M=~}krYtUpHz$Z|knE*vOzf>t zmhtJU7e#D6e2#uL43Shla_{9egC>zlS$B`1?V|Dr3?7zl_kvCw+RoLg{#iXM*G!Yz zdC4pLB!r7MzHFHcsmFk?|ojAznXEi5u;(Z@fM~Fz@ z;)S=QSjO<=RlGp?R$owOU19U&)4Q2#Sx0T)MckQq)jvoF0$^X-k+^jY`D3I zKJCChZqeiSe7E0J%gkdA!`{8$_9Z5+*U0dseEh|{K!s5xnQ*?`5kwRldGi~sZeo^1tt62p`Z4frt^~z>}hQ3XOj-3gor_M zj(PpO$CrO&SH=9)#ASXl+TIQ7j^1%xs^P8zoQ-F)bOrsb5 z=P}`;f~={OeU2gtL(^q!B3UQfun#=<%xvB#awCC>Ugqn&eC*lxneX)n(;TxLuDUR} ztILi(YYY9%nbRG7U3a>&yeA@?E%Q0Ys|l&RnZlB~i`h(5?Pn#0O0|z%fB-=*ecGL1pAzK|T!|dYB5S^3l*FwXys!n&@S=tpJ zBB%4eKZEyj`L@p6v{?mcU#{L5IsT+ciGeaV<7?|@&e3Z1E^|(8jm*zMrO@En>*tR$ zvfUH=THP1?@Ib3gqZ-J6dFyXe?zuowrqeXp(RuEnccmOT*=g$NHs z_h;m0OFc+USC!=N-tXUa{?_NZ50BBZhdK4B*-wTcq$o}c-;A@B~724jYA`*(yFjaLP0YvUxpd#uROUan=PI# z|IA8qdg}S7iyh&zG4;c7hNVui?$%w0DIeP;W7wacO%aNH6f*eJi1KvmXlt&;elKM12i(!=hq{*|q;U7)TQg@3iX8Sl z=b?P2%R?V6%fx0c`yht=r)-6#U(q|Sx7*#%>9I5WnFRXt-B!3^@kGiaVb^IELj$8r z&$+}KyZSvjuL>jPXC(J)m)5kObsv!>kIvk&D5o1? z-gH%BQwWJ-aXtIXXu8N zW!<~`#=PA?<|yas8+M!D47HAiK!$H$3eb7rGvvi1Wj+3|@+uWnH7AU%0rFJpupq?` z!{CvWDyi=*C3`|C<<5`^&s{e?oA#lp<94Xq74jF3h%>&|i~EPQYMW$WX?~B(KX9S- zxMKqucT(VKlkA7f99y6XD&Kd#%qwL5hn$9ZZ|cfK;`f|}2zXcKGz+(`{`>X|l5{*A zNxGJGd2X}t-Aa+x+}|K@Qjnl;vv_;~2?)`kIS%?8pn<=(D{YP&gMV=bTsynEH@+b4 zzm$wX9e{zODri6{z!LsR3c!kjf?FvF4193g>N<%>|8Q{(;Pfr!C4?M`Xxg=Lu(REd{O%lH6`7{(MzJ&fIu|WE zikKSPIm6!9c2&k2AC8~@{JQIs*JFX!sZg^YrB!nsmKnC=dQQ+yS+d%Ruh5?|>oGmI zY!1B2_)z$QUytSV7F{~yly_yV7B87l+a5L6^FAN;OrS&QhpXq$Nk2`oKEfTdKj1=_ z+dsYFj6DBrqukBcqcCgCY@nK1=ERP~|uU==_G`K&g%6dE9D5heg z08I`xS^uub8>vdXlDM`j%EF&prSCh#JM##eOqS&wa{J-NP^hfiD4XledKvnAF1-az z>`IV?U9Rn!LEU^UWm$#(enRif99ea!io zq|bRK$DI3`w77U#%U6TmsjqFZU1VD1S8dWto+f>>?Ik12YsLqUo9A+Pe8i?f?oADC zcuH}0ThU9!21Mq4^EiwT;x2=bDud6-%?yo((y-jfjr?h_O|Ts!+b46bVX^{aWR=V= zpQ%y0Ko^%#{vcTvo_RUpauOwNE)=d>+>|gF<#s?t!rLC(dMYJi_%Win%vSXCoujCX zHjG!pal#hDQ%I$ZsvQ$qMzFb^EDsO6(=*gyEfqPqS4=CwL_BeHp!ni0GNP8T;B} zp8b%A^+{B~7kk@LT8a=0wcEmQbFw_!5iO4`I$hgG_chOoC#i7xl|4GVNqNVczc^UI{1Ff6C_um%AMHv4=TDLIV;xx22|)aY%fs`8fi= zhVu9F{Kmv_K$xA)B)cY2?f4w@hRTcd^9Mw!Q0=l8(i8)Y#;d0-Zw&6GEtHX{4v>>M z@X-tU{z?ap9`-U-EOkFMXE;JDj9c9cY13!(!tYk>)-pYpOHb=Jd&QEqQ205`mVO+C z&p!%2*Lm^yv4LTn((_0Gxl~3!{X>W@M$WBUFJ#o}6$?M)OzyAc7mSh42$B~!36DG~ z+k@L4uN(0x$M>|C@^{B$QpG=8K8`)5(zSR*k%jV7`f|^f=M8-SGar5y?Qsj%r+Oc* z#ogIiVD}>%-j&-xU3(N$(ko0RsCC{%@zwS+&HSjnyRiEN-?Cu7i;R3t=y-Q2#_fLi zmb=Kb%(GC(cZ$YYE?+}2W0L9Jn}$sibvkz32-rDcZ!4h1=*J?AZsB!m`e3&)K}si9 zJ!il!*yZ{bAGf=@bvxspp8npoH$ptxAJ!iW-F2nq>wx&oBNm>zTGkwAex|Pb1)&v* z1wD*+bz`=7lPTQqAeV`+tbC;sZ5VdilkUU)WH%4JU6BfT++VyjcJ^wDQ|$>CnQv|z z8WlYGvjK-ca+Ly?z@B@c5_kD{{5I3A%?D*VUw>@e*LWrHP~?WPTZg{&7oDK~dg|$P zXAkWA?%hU;OtH%M;IAp4ow0rdH?he()tt0->~ZS3)4E9qyoB?F`?B5kYRtOyyG!`s z@MR+-Wb;l+d3k0Ed+aUBM+C_RjjcWoce#W(^zPR&4sa;()w?bFFg4UwNn?tsdjExD znT_wd4uwQ!MD9rwyFdZOZ!yg$3w!0*SotA*)9GteTc+s54^mwiy=k0Q79-$aL=#ed zw_eUlOkr#4(JKkLFKm!8l2(~*IeLuNE~cHivZs4WW3+9&X+`0Tm#$gtKJHW<%m>+q zsBtdMW$Y%?x>ZoJkM;3`t<-v4!RLn+uU@o*)8$+|F3kPNM8-1A18Z=EM)>>&o-v)< zH32a%vr{2{2bj0Es|uWX9OY*EWJ)#iI(liNCC5r8S;CUa%Xf}X(E zM}Kkginv(iZ!YsFzM8Qj03IP0af|yp&ZaSytgwAooLgw^rFxC6(zI;qvm-)jmn_|R z$Oky9o^QYT?#0yjhh0@qXm>n%;#<(IIph@L+{i1$laXJ|=y_;R{>BrD@Q;a#QU>qp zW_>R0iED+>$h&UQVG;KY9W8SmuCz}YQ8&`^v#B;Bmw&F!Yu%HuMKDy3Rb;nd1G zSS`3D789Jk5UjJZIQ)Ag!Un{)zqsj_)s;Wc>W4@K$oCJ>_Pdb?u#^7l%l~S_1vayP zw=IxB|2W5QV)JjTeVG5@0B-v;Hh(?Ici8-^ec6Gr0Xwi$_2;#JT=lob|3JP!BJE#Q zj-N0XIFR+wi1cSMbP}<+D=6^dg&dq}otn0t_xC5ckxm6x)zP35QDE?k@trad}@+?R^pmit}phSOG>_j=t z$KiI~45ut(fkZ!$QFFH*d6IyEfS<42g`AXG>_thB!BrPf?wCO!3LR}k{rnZzXgftw zo~u4{joSE!LLZ1}wc^K_9iCT_p3XPV+jO~Sd1UXHgSjHX1QFOyKIL~6P8K!4oRqR< zoSjO@$R4?|!v^bz$yVp69u4vVG-$inFAQk8ghY*|GeIZB7Jr`Wd1@8L zptvpJelr?}wA;bb+-vS^DSkrV z<%umn8gT-Jmm(IgEPDA-dUaU67lx*aM}}u86cfKPjw5q@m9oY*M98321AEm6+R$L+ zr$)gI9B8rpoD9e#nyS%S6l@=mU}{yJ0+>sDe}< zRNzfjwY1YBIt)xid?GW@~#C!A_{ZFF)rg!AjuwQ!J1%06HU!&Vr z_mP!XrZYrxCW${;q23uk*-x@7#wN8Jt42PB!;x584`H@)+U^suiYP=XGc{Bi@OY<$ zRwjSyg8hXa=0&F7vuF|J7C2!IZLF`|tTREMQ8IjiAO_jT!*0Q<;DjDc*>p2vcW8Gs zfvSL5JBxjz7!YH~L=u0OgS9T(QG9yKJxO~2{&tDMlOT0AKyLe3E`Yxh?9d4GwVxvP-T8IrP7L9TK4|tFtPFbei0F#N#%Dq9?E--={YeuI z46Pt?p$McC`|ybQiP}#Lz?AHtsMd{1w@RB_d(sQUYk*n0w2!?lA$+B}{vdd=&<{ zI4oTz_u?F)7X_)j2tW_+rI``2GPCjMtIpz;nU64#lHsSpkJWa?Z;$~vHG$z;p^E#D zg#l&G)TcL;e6vx?<;ql2iBbeQaI_YM0th_&BAON%gF$#=gTZAFq$`z zgxy3iuB6H!sLfM-Z=u1@LCemAIXPB3l&2B z%*ES+pu;EQqi6j+auQDm;xBOPn;HFg?b<&jeu1VMUttO84E4<_nC%a{s{epnKWGg< z;MSkUSHC4=`aL23)7pRP5_u38`bJFuu=Zgj`azZGXWaThp7bBqvI3`fIDn?xKd=4c zj(ywsFI4*hyMD}A{>5Oxyd*Gv`KRUA?*Z9Y)u(UUeFHL1V8_ev1DWkQ2a3;d`N(|V zhj2_LLU9i9h$SXS&8uPtu-RlI&?;j|>2b)*Zr2b|=^6%ZVHA?Q9@0?Ovq2N0j^pk? zdNZ8UcB-?$}n5*}?9k^;t zEgwVcy?$GuF^(k0nz&f`?6}IXqB|t;)w!q|R(H&C>(iO~8ui&g%#4o~K4kY>N#3=s z*)A_;ji^NBgC1qJEl#eC`=4iClxMwuE>rN-MvQ4-eokrwDO!>UkMb#RtQSK#h4{4! zhlv^j`3Sn=A;RWzWul21+M~IhzWc_m!R#-1+{#on8;ICJ~qT?h}Buzj_ z^!elm=vvr6EyfLf_E&&Z7D1AA=~QUY=|C9-^?}06ySI)YMqG0y0pa77Z7)mVbe_Gs zeAZE{0iJ%i;N9+TO06+b69eTZ3aw`XtO3UxpvP6H@44bn@%pw`B=5{s43S-1RlsP1 z(FZ{2qvCw1VTW5C&vujGVZ$ssw=VcpTK!fe9|w|*8Ojbq$x`M~L#QV1xGYwMaJM6c zV$&z5r<94B zEY6)Mk)#Rx9HKI3aP1Lkv82y?W@(kAgDkfpiV$-vtxX;c!PDjob@=Ln708jxpxxN$ zdu+e(|M+|fd4L9R5g0}b(zDki25KTFodm!f?wah07bA*_6LWME>>thSA}<#2a_TA_ zRGh}U4|H1{KIo(7i!Y{3Y=;?M7#)D3etFPzDOvsKx#la`wSe;X-iLLRyKA+}^sr#+ zD4#HeDN{SG%8gprBCGB^l6prz<$JRXL{o~a!FQi~5Sb5pevV;e<53fA7};-hi9vP0 ztt#6!GaD|%9^clt^YSr0dR56(t#^R7@)WO{US3Rnl?0ALK$ii0{tKcT!eu((%Z#==Ep{nWL182luy@$b+@<^`7s2drUS=D_1*FsBh|V9_B_-@0$PoH&f);$^fK{jpipakGLHNL@u9cYpr)d= zG(6&q<7i1tJ7((sh%%(&l(5Pl>Etubu|&gFz$8Sbh)q78-a6B6#R@5tI6-f{i!vvR z*-1Uye4?zrr6x;CP07&BrE_|% z1s?TeesQ0JZSpvHNy}?|P=SVA3CK$Qw=cX$!4vkpvK?WH=7>IVIa+t+X}@&}WZ;u# zcPtOmhj0-u3NH;}%uqp53mmhA)^ zt-bfj){_cj?heiYSM70Xg$$FXWJBu7;jYuBOE;Ty1E`BO5?eAQ^{T2Z`XGu9pGKv* zJ5n-h6Y+f8$Rw>JMGR)m37%V91!5XWilYQ&Uok(UsSv24%*dJRsdM$bbVcRzlWJt@ zFNtRN?^4YNl~=a=aD(v?_`WbNFnZSzc6$0$E}2FJ({7FO&riIzTwUss)FF0m?dXYO zu}i47gX=vwL^|IYttH}m2$>A1{kHIHYrY~u1`d+v?QE*=Ya$w_a^GQTZiH`=;WBk_ zZoH6PwEe)@aF4vhPKNUf=J|!d`_IhtO*Qd5=J~^F^WQShUqXsNsfh=U0@@6HB2`S!j2ZyS1nL-OoEZGi_DJ{I6FfAAs!dbj}Pn1B*5|Jt30jq&Gs;y(`l zzdRfZ@NhuAIiN|~SGfV;(KsF~W`K@zY@GjAZsYH^kAK|D|K-tu%8)>-C7}D>gOnRk z0s-ij0yH%GT5kpp`Txs`{IAaTy=>0|H~wkX`a7)qgG}N-tYrr_Z$DJ6|IVC0vFaI6c;Mfszkg7k`iC<=sBt|gh5qf#KR84D#mWBpDe^IJK64pWVE$ZGKq zt0+m7{@AI5f}!QM{WQpXb!FMbOLC7oopFQ(=V}ny#NWU5FVJprM;y#~18450XOmGs zvcb8Dm&#d=-JtjMdHpz3HF9~G`1oQg{^4zW$ZF)xtv)A+oHVJ;WW~NlDOt~4Y($OZsn?L-1%g|c zxvDnNAIP<=J*D&=xZH9vFO&cX-5OSS>~*)Eifp&yLHXNBw;z#*!7L@SOHVm(ZsnLq z)6L&vY-P6FrL1H7GlRerg)dLCq!w}!S~qtW)7(-EC((YHq&X%yXV}w zm^3-%*bIBrw%s(B)9l~tL#H(}ETCd4f?0D(!=r*<_iongOl4*Vqklrx1bMSFdb7{?||3YP$|z!d4b5GUsQ|uWSDiLmR0mA|C1;Ly?|G;5<~gpLya|u+I>ha zjF5&?`9eYQb*@S{6+e zw2Law$IiNmkvfd=t?J~ax&^~ogQJLR1CorVknHG#p~t=;S**3OJxi?5-B<~c@^+t` z(DDr-klRTlXqL(6_7bJ-)R4?)9C9!x@PD5`{-!&r;(ZR^=SYV>M&rn+S(1=rfHt>; z9QkhVj3+Hpy-|vin>-bH_R@;Pyd`Z2m*jQ167Ic*Jc~0~df(`i8xI7J>2Z44a)CiB zQPIs$1`*S@)?#KBBw_j6&WF9}T`Dax0lO&)%RaP3^#Yz+@0V^2hr6@)XjYa`^XpW; zm~!{0OIpoB!%r)1t`dWf4ya8k%_TeCYdrzEiI~Mf<~dEL8XphY15VH-NQ%&U4;kXr zbRwZv#~AR8StDIp2ox(fO91bR-U;xao5fv#FFXyPP>QmvSGJFB*-5TJQC!uyCYrQY zn;EH80L*R3=XP_KWf_2=utIG-d2SF+OdefYGA-}i{jzk7*r`c{ImKPiSi-k z{W0gQMqlU+E}{BXSP1eu|JV;7xZxQ5z_u>c(ID7UeL`bDamJ<9mM4G`kSlbP3p%E} zyVN`ImmkW50>Rq)kf%m$uMDxbsF(E=E>%->=Ec)z9`>jL&-!bs#4R!EUJF%VBAdxj z* zXY3a-(nw!WX5CwQ786323JNnqQ8#z2WEnm~qfmx*TYt19`C`>EX6p9}*DMttdZ?^5 z9(ih^q20QceM1d}w@U2r?irWT>K0k!?R41Er<3ND;7{(P-Kkxghw;rH*gI|$k&B^5 zT4kO*OZQCox<`X{jJ;tF^IxT$5f(J%>kpWOsG^jqby%L<7~jYoXCAEOff*Nqg_IW! zyb28UQ?Yx80jR)Q97oAB)>ntpzy;3Du%Jnq8WKO3&Qz+9l_Q5-2>6s{vPcq&hB}43 zm=+3$i7}Iu^hFBd{eH*28hm<2IQ^Tn@^ce(kQ$6u7K_oV^{M-|^`Riis-x{e{_s-m z+t9&u4n-+2rsLK4793G15vezmFo3WCFBgz`b04wO9WGp7O8BD0W|Y*V?rz#*oGier zi4T=uz%_i1uzv-%-xnf(T|50lwfn*5{r@KO{t)*54`BPJ^7jwjoBu@!_(4_)=+XtW zXnxQU1&XtAvjVjgff|ZHk2s)e@$V4XU)`HOYY4IZpr8B|Paf{t?^SxgYL9=z%zs!5 zbma#6O|t$CZGMoe`-in(^_YLrg7$+nh$UM37jHa&>MH} zM*qpj3(xHLh;x^1e0iGQFG|&~mjovtn%wZ>#OuvTQj*D^zQ2_YC$}g6a?q1+Zy#e- zUjimbk}$@jyXFQi5+y~eojP_8MMVjPvAGsc-x3CPK%kp>=OKpRv9%+siKT(5VS9ej+3Z z-Nkt0fNc^g|JWG8*R=$$)7`_>+=kX(go3ha4#qAmqY-g{(Jz{JCVQ491wPF*u2!`u zQv7odE#nFspx4@q+aWya1T8pqVL{H^PV_USDoh4mzH9gX;o9recK=AHNKaM+L(UgP zGq5D4cBW)mwY%&1B45mEt(zS_$Xa`~qb-2#O%yLw3v{_DWtpj`fgAZXo_qNV;-DR0 zz8nC~7u}k}OOLl*2maaRnfAuxQ#JLVa}TIju%x> zwjikgpz<0NwYB$F>^2bvl)}sN+NsxLxSg~Iuf$b0ATyB9mBD8vNW%2QEm8)OVUdCJ zX!Wc8af<#wU{2y*#(kMmPBhy z!6z^pR9geh^0pnLdnOAIR@lc^VkfshiiUT)X(rZo&o&VW-AU*oM+_r^-{Nzki%jsv z-Gv#}=vcuTx2A=1aM2NmA69gcax#+}LRLfj3Z(ACLY=+Nz{XdSs}?Y$d~)--Zb7#H zECT_D9@R^_rVgJEDgKn2oXmaX5&j7VXV^Y5dH*i%9iDQY(n*Z&00rzz&-B-%VEv4; z*$tS!X%4|`p=RAXFF)KTpQ)9i_n1j%{ijETXqU zRgQp2=iUN;&R1`*Ejv;2TvoOxqtp4i!@1sMxPNKzt`?3zx-s9*T_{#)FfpUT&(AM7 z&5FqJM(ph*f;fbk9DyH1f#q|X?-mEn+K?8YC#*?1(_&ec1gYA_bn@ShS8{>8qrqYg z;`CyBb+t<%aLOBa9;5rYf5oquDPDC|K+av@*-W5SxU(;NBI_Mo6c&%Kc2Lu0mQ#nW zWDv#iQu5vT#wNL{WWxJ92cBDO#%}Pt+85*5KJDQB*LNFwg6-Sm2RCZh+P(tz8x!2C zZ#*jNcUsf;qm(4Sj1~GGM(tl+ND!Bmi?E)<1lY_g>nJ>PT&+?gKhT$R5mpF?wTmrN zn9>ZupgzTvXSVZ!i4xT~BLlq+E5&=9Zz|Pmwh61f8caAfJ_S><5WUXQ3qH^Q-BFjD zgYb#ubuKtzf}fTnXbRFx69tphTN6_v(+^fHR)Sd@^F+PSn`MFBFS)a7B))Xf)HW6+ z3{1pBsb!vMvM8-Vw<~b^@#KOKA{K9A4?u2smjKNt15*_CAcbquV zcNeP%J7Vx3ognNbHvs(i+N%a#{8^&PJ3HzCCzU`VfTN$Sooh0n6zt(ox zdD(h1`1%JeC>^!%(#$#ASA|Kg=>?rGeElx2`B|UmLPP-T0f;S1C$3C~%6G--@JXDc z^tT{;gbj5(6TFg*IurTJj9_i4x?m&sv=y*mXE|M z0o4utnMhZ8AN5MYV-2-6FPkBH_}zcX3^BVo_<;7+o)#>MjS? z^u0NmsD&i&EdWBR6dKmKj?Y{SJ=4g*@33;$I^C^S*&Mp~ep&Y*Qh^u4hk_2-7QqU+ zW``^(Aa0}EQN<7U$}hzKW31AVl*;a-d8w zs)$64oK)Y7_Fl43%ru&aFD#K6L&Hb#^JYDHDrkqinS#zHqelSC4D-U(Cs|E8E7Myq z=gW)zvx>ST6b2COr1=s`}KNd3k`xcr8-C_O@FP2K( zR_uY_t6$gx!arylzLiHwVVt`>A>7$r3!p7QyQq7`p{zJmhs}JydU^(VyS9#J+To(k zBAN|u^NwmG%h2?tzg0IzKt(aXE+ym*O^w-dNi5Q*JQ2R0JviLvmh~?$s=ULX4&!01 zD{RmezzI2dsEbHTUSbm;yQ)HFBvE`4ql%@=&Wi>^$&l<5ty~>QeCwHqG<%PoFQxtR z7vv9Q#=q*?zb5}b{C9pJ|355x{tNm4F)IUapeY=3(Auzi(x2d29J^yc|7GWdQl z=3l0`f#Rz`qj{i70~-J+NDtJj0E%X^KKQ5u9bnjh&r0I2$lzxg&p)o>8q1*W-y z=0-r7i$7e!fd#Afd&9S*{b~Uuz&luF_Qolt$`t&5>Tg?L<^`p$j;0K z%)LL@9{>%8f%1slUln74)-T^X`7p^^*jO?N^YJk~JQpTmBPR=68zyC@r%F-}Kh)+< zPIf#@OlBrFw$>($&PI+#j3&m;OcKJ14?m{14%P-vG{7wIcOAc9-<$vO*bj0kzz@-b zFEVhn5O^8Dx8?Uf;s48H|8&wH3`8D+zptP6--}p((60Wcwg1p8^Roo(ul8kqm}3NP z^0!3(->LxLANpIw3JmanHPZK>cK+9&v!74>Z81=fpBbpP^0%G8{#E<-VE+nte~4p$ z2zP%BYQOKh`C)AEhj15IC}R85iR|}^3qTd?zb@%pae)o!$o!k(?khD7+j(G%^i}yt znpD<;1F}Oenf)rr6XcC-KgjcJ1_;d@F|hcecohuro0C^YFLJCEtr5Vth^l$JeOS+= zh77M0s_C(5U$9!TqLvufEi86aBktdNJ$e-sS1jp>xDKBdw;ZKHUjx84NssQKRGm@J z83?@@ydp;DPEgvA0;H8gi^|fzQLMh%9VS6FAP0y4lAr?J!j_%fN)uW0B;ft3triv? z(cS$qEHq`&$%sH=>nh9_kMuj7d;Tv6TZK3JV_5?*kE-`1GEI8SQ-+M`flYAuh(j{{ z62m2E`_D^RVW9R37BTr__M%((U#ezXkf%cpRtm11&zyNJa_}bK9)A=VaAMxpsMI^r zpWPRQyu!Fx(kUkQb?qdw)x`837dWx@?VL-TPny=jl~um6M~RLbL~%KmM?|2#vH}ul(_fg;i6l2WK={dE&0i@E#vN5f zI$+2PED=qgV%1YXPTs6b0w|3Wk5}H7hLp^NMCeuL$72yl4M&sQP+fEd4D4)lY*&?+ zp5VU96EQiZeJuenPVF-tgRve%eXV32GG(RQ7uIV>re4{n z)hgeT#{C6zzHp28nhf=#Fq(g}vl;>K&^e;~=f2YQKym9?!d?a08gW*R=L3-BOrp$% z4qFP0Q|tL{H}0f_AtjGqrRggl_SgAgx7H$-^N%?rrXq53Xbm*;!M+A_ykvbwvns4i z2;K5ltLH^@_nWttZZ0dl=EWr+P2oVT6xCOjlzGJlj#O;?rpDrYygJe!!FKPxg1@io zcpk&Y!QFWK+;m+Ts2cNn-hulRE7^vZ_#-9~2xxsns|+GCv^Va1g5Xe6`oQ@nt#see zF6y#y#E_jJO_^xbJ(p~kn-Mc4pDzTxXIS>nBldX^sGWOv z`2Gf?ko9;#<8`^GU2@94J7pbNQZk<#HK8_hiSBNal5m<_DEJG#S0*`eBbI|qwjz@u z0fo9WPlcKi_TMT|oe@jxEd)td$~_Oees*0z+k&?oH$W~@^R#UTRcL|}WW(s?-pW0w z9dqF*F1~sqRb@8A@j2H!o6j1iX!vvFe#BLGMliThP(3RK(PDQ?&H=ecVP+f<{W8n& z+DU>5WasWA;^W#{nlxx6!2@Y05EsuoQ>DG2t+$;aWowzw!J~J3RIFls=jva49=-V( zuocXRS%aSZ=56|G@Bn z`eOdT=>NruEyVi=|1D>zGs^9khmfr_j!~HJslxkQ5TaeN2GxQ8r1k}4a`Qk7x zs&>vSM0t^wqs?V-a1%noR6 zndx~c3MuL2QnVr_lo5kZxio}_uhhn*#Q<3L1=)OK+^+8&G2u#c6mgrn_*lXuMZy5f zOFDN4ypO1q!UtaVE*h0fVnmQDB{Xfy3)7oA;+kKxS0dd%9j-w@s&15%9hto4XQSwI zf>g~V>6U(4R+nbT8)%C4y3%>r8FxRc;^>~`^X6e_Nm`R`zt5ed7{J?|I1u4LvY zQiFzKO#Lb%isrz0D+9#>Q9@2EIcun$PeL+Z%EIxzI+?7gu12KE5Ed^WZY-PG-pe>Q zJ+jjH5&g5*wVieOxt6mS)+g?IR@ji!SX>bB$j4HFZAjMP1f^>9jpOxHRxm=?pHhR0 zpBs)4J_Vsi6$rxnq%-7|9NdsP7hL(1ZXpiW``6FTzahZNdch-mWeXR^8h!; zRk$vD1krPx4DMN=3t?{CTU_Q`*WS+CfUtDvh zvN{!_7l6L{;1k$_wSg!zp&Bpu{yK73ANEk9|IzC4j%A@Vlqny#`3~&?j!Eb_N{!bnJUcpXQ}J#+?scJ`aV4zGGmgj;Q9ne%!HrO$tAP zR8qF^^u1rZZMldDz8`p$5^nQ6qv8-m-p->KgES$~n+|)rSrY@^mv3C(+_2Z>w^r?h zn<~d^SME=?A55fqi9e%14L^6!$mgk8*B9K@T4Z-tJJzNy_>hfAsfMbj4iIZJ#?(6O zu@F@-cPGSk+bOcJr@L`97umVDY>~iduGDiV8DVObEpmPS?O&Em9t@80XuOad&;SIQ=X!KfClmN;Rj+ZtZx9poBDBIhdPk{rS zvF$suK^D@xUm9Fhnv5b{ywHlPBtqK&M-Gg&gl>a~FV3cXPQaBnHiT(;P5o^`htl`J z4TW5K%`0+xa;&lxhttT(f^c>xE_moNSPNLlrUJ)b?a_ll_g@Whzn_3q2r_?z8j}zR zr4lw%^a!L3rvXEI(=9eGEO4$)xDz5OkoR)m1FfJeKrxzs#d}&^I+~B`@|Gu%xS*JS z$Yx|svX2knd~SQWzK&o68-Nfc zO3IE!qEc#&zDl}W_9;sRspcL1%$<$LwSpfQe@qdxu)}(n8#?`BzNay=rZZpPC;AAS zO9i%uI)ofAC@CXJ4OST#$de1{NGp6Kq?ZYu1=G|V@7!+3K2TqD$N1uWX*Rc-)xrJ{*i)EF&??5XawK0R>y1;>ca3k@pD=JhPmxdp0aG_&eshT#t_n zL2D>Vvtpg`J2@Q@O%+CI6r|fKkUg3D7Xrdc9ObRW^u%Z>e8i<|)I)kTGnbn`~?a^wBPtUB5I6H+(tk z{$g-&2;X?5!#*-q7sL6EybcfShKriUdxS_R8xY?qYS|ByhxbYc3~rc_pUHnV2z!2^u0Ra$Fg}dUd)uONl`3$-_h>R zc@KE~YGhi1{k>Yiq&>aBSRUslX+Wt;6w1^pJ~ND65S7z>$OPc#Z<<(;*hvMoqv_)Xc7Lm0xi z9H-dgzAed=k;;=hqZTc~?g74IXO=qwvrOz!?+#NyCwdeU#)ajxh zpP|w@ZkQfK-kuAu*F8Rmcw#2dP(c_v7C+MCI6l>h1eb7;W3pdK)spC7DC&`;+hCo?;!t@ zsdcFqhhdt{aeEMBM3!_roa(FUO&w)H=05GIVo{?z(QY#6Xn`!YhDv7c3yqP%B(uY; z9LLfzv%B%IIag?lGdV)H~=g3v&SZz*eq zH`C}HJdEFR$g|reqfH*BM83>2`KaYc9WQV;tVYk~XEUuaqdH^&>o?jKS1Y4l?GgMO zCaa!mX;v&BF$;k@0V$GI=48qYIRlYjj)waN__NQZi^o$GWb9PU;3-qx4m%-B2k784 z27=%X8QnkLC{Utd5Fm!MhoOZKAqwiUx2*P(qw!n>Y*~SY>Br{`;X2_~C`Ov$B7gA%r{R|p4=InYU?oMASSCZnty6Xg zQ1)>LgK?PIhPg^H;>UGhRUlYAq>vziTs*T(_Vc>Fuz+E30dZvMQONolG3C8d*W?O_1a%V zQ@=3B`?<;gE1~`vO?^$5{=SX`P%<0XIt2G!lmFM8DX{VZOtk;4x&McJ>c6ZnJXpGM z0e>myLmUO{3I_o7B!G?nK!rP?GambIW%2*2FZ?Zq|Mj%rSp8p~3>eG+BRfuD@*7zB z0FFMgaRO^Jz=1`U2czZRv|jwHz5uKT{4L`9IT`%*(f(fg`vS({^xY|cVndgwR;Qrp#QqQ zZ|Q7qU@ZQd>FkGI`G@H4eM=j$iGF8128DE}O@wv*LER1^Qd6V6t9Vw_rdW|xWAZ{e z^3^)8ZQ{ocKphQO5E(bQS;#OSYmJ8aHETqbQXK&PNG9Lq~ExPv(XX7PD zHkA1V>*)>!&1IKTArl;(ZRSru(yHPQaAr*UsKsQ3_Mhf08tw@ZtDF+LPTlz^CyXt$ zl!)(+18Pmi>02*n0%{!>wLabgS3jdNaOnZS`o%G2Op< zOmvU=g6*;0_=jh{pYPi(&#@aw*;Cp+gI4RGCnMghvU}9aD%dByX*fIZ-1qX+v60## zK5|Rn$5GGpT);fkd5pxiMDt363m)13Gl61FBc!b{hlOhM#=tg6Zcd*GWKM2PZ;Yit zbmX8{(s@(mfmG|;b()HCd6yi?ceWj|HbSi#o=x7Oi>6YC=e<2klGdh)^%<|$XnBZ+ zz&TBy%T`skw+o$o1XQ*&Z_qs+^;kK1eCqXh@17%YB!`){e1IZIGgn%95Td|;1TZ48 z2m9`D;0EQL`)Yyc1{|~DF%-fl!NDkbrE9rSCQ5Fnbp|&5aeVXl+VzBe-t2|%`=1sJ zPJ%=jo4RLL1UvA=xMg3XHy_LIdqME~-plGz(`TLXFrt+X`0r_=H&H)idCh4Tj%g)${sbNt@ zm{-C!p{=ub;yuFVw9qsk=QhOwc{vQ&UBv^KCkGlmVQ)zg`2!IB&aUvJvKI*z0zDw= zbEn7OIQ52ZAvudNlTi)tm^zv;6-tq7m6jPXLQ@bjWkz8@W828E7F(k^GAL2L-fQb# z>|u?Uo!+t32!ahoG{$1@)dqoNDAPdi9SDg%({$(9GSx8c8I^0=s0Z)7B1GFMUyOr3 z!k10v$?XUN=dZdt607>Wti=`}F}*-!pCh>6Siknh8*h6^hY&#H^fp<^oYw){=*0h> zM7OkIl68oEOh)bnzQ#y3iTj~{jVDHwhCU*XM3|aGWS)D2xLL_YNVJs!veqoMvw!`F zs-(T!VO$}yXf+~!NyY~W-wk}hyCc3LL=Qcnjt$wcETaVXHSTYnWssw zrS4Jq=h=_!#SljuYkZh^kq5b;;Bx)J=}s1~A*7Kzkrq3mg+J>_(CR&1Bn(|4#o(us z#KXe_6{kiNh%@m%M$#6v=2Mu+?H6qg>E_FUWw){0IKW{R>&qcT<=UUO3GGQEP`?jK z(}dcUJ8#$?$5-SpLuR}d83WHla>#uVfIx8E(vy-QBcPSktT%{aQ-8$=)2|UJO?9hI z{1z4y`DGS@q=29 z+l5hAXOndyO|LJWV7QOxub=Ou?#u8#y&9%H>E>v-*NF3D?EY-8aay_UPUexq!z5JD z-}dp#&cFdQ4Q-@p*wKsF@q~JnB9y!LoAxYtf$3helEO`0s0dH?B^v|rT?e&GLJM*G0p{Gc3H6TJj6b zXpvEZzZq!P;^HN|a_Jv99g)n4!^wO3d`vOp&8K6@HEotrKDiLpHb_C__(mrF;uS<4 zsm?1u;pY(kz-&9s$Ip$B?{jv=1pRS01(eLjLtd01AlR`EHsWli)2zBQYyXVttxWYfuLcqtL0{0bcn7D-e$j!DC^94E>!cD0Mu^298mIXwqd zJRiy3do_d=8iZj`ri=^G(#TaoQA8@dHZJ~T!-2jjL?V8gdYtgaa9l1wN3u)MVn!PL z>?+OevmCH!;-^mhG*$wTk+Fi>j48cHY;xxE8eu@AwIshFOD8n@PK=7P5)zMzAYeyD zn$P~s-QZ-KtXL%&kuPGFar#BI#}=2J!it#bNcIB4!7)l}ssxhqel>}xoM2#yX~ciARaVHSnM~rUXN@=qBA3FolpI(_Ww9p|9J+C#TQk!j(}|xp_wh?J&6Y{dZ}#bM zeIr^xteKP2#D+CMLfyPCbu+z(B&vops})9Q;CmTivg^9|`Pru%UrW0l%m{*nGer6R zf~q+mB*K0K#h(u}{RR6W@1IB$l$L}HFS67#BNB*a^|Ac@) zQ`|51#H*eyDT& z4nO`gGXCqd{|`p4{}&AZMV|vu3Jy3#>9ef2TA$?i5*1koG=K~;p3<8-pi7uIwQXds zs#Ky*TWV<#4A|!onE0`FlRf}4c><_pbu&2PfYzFsZVYVePtUWUB*T=)nol#Y3Q1bF z$=hTGph}e)_!!vlsut3sX{JQ*T}E5r6_Q1fpWgB`x!*7*qtl2JbtlX|L+KzVV}AzF zx+ly7PN504e&HHz{Y*IlaDyr2i3)tbS}7V0NEAMxjL1-%1Eb;1qE9QONP_3d)p2PF z`ZD0t;?9d7RhDoulB^rdQ#=gb z+htbB$+k+e*(PtUV1~`MGAyngKMsPr>o3u`n!2{C10w-rcKZ{r<;WEXC$?gq?)C87 z*~~aNiA>j`3egqpj!gI}Y8fly; zX@Zm%+sNQTvb7*3xj;oZ7!@m|f5;1X5*Pw@*PF@?@qCo_dgA!iWccH{D}O=BelVIV z^9HnHMG|-W{?Jos%@|{0&2F##m|ST#P$N>h&e>$CtiF$n=J*w|WB|gV=WPgq zSSmukYowjbwjumqC_OX5c4&?wLtn1bu#$sYM?!+FAT(;A## zD$n3A=dO^TQkgbDJjDQGRikWmB~Zdo?uUYM;@qOuOo@!#8>bm?4L#T!dB&RqotHU! zGl_BGCJ{%e=qFJL&Grdzgx+c`AP7r8{H;JBCZ!4vO|fvH;fkUQskg>?a4Py^5aa-c)DpQzXQVD@nk(L+gxleL0G|F4TRd)2`X}_!+37BJoa@L)b(*eejz= zsguAOvHA9!cvtj&!A&E_wSnv^1QL;PF{n&>?a>TVuBpf90z*X3jfNk_g+^PY?X zRkvc(m$@GY**YMGX6_a{Q9nn}=f?rlW>Do#CK}!4W%4&;=Gra^P?y6VrGmk6d?7*l zm@J!cps>l5NQqRK4FWs!F_#K=wo()*Et<=So>d`as!RKnXHf`3S9#rT>0P5bXeni` zYu(G494zVjN*I_lnoA^GQM(o0fogo}dp?KFViANjRtQdp16s7` zQmNXd(nQ1Nv+P1Fv{$=jjjFEGdHxKI@6=@X9O?@g(YI!mqQg~~q)wnzM?y2OW4{Hl@D~Y&w@fI*OtKyPR zSXa-%SGL$*Yi;}w(6wGS5o97LeCTdNXSaP0V6v@*4N%+c3#@ZV8 z*O2zlx6+oe)o;DrzGw=NHMjVD0S%drh_SVM`R)!qM6gRmNz>1@9CAI*gss;JBZ5z+ znLNVxrLnbrw}xnCQ@1O^#2Yw8Q~PAytVwl&k1(|64tKBzCy`qT0b7ifGyI~|D((;` zOAT(;ILdqQjhKaGtYszIXH1~3*h;Wj3wehoVdXl_IShL_-Rhml(r@U^=q1|B%A%KF zHrueY#mO-VrccmgpCje-9!nud;U7^m@wg%;>f_Z1i?4$A#?9t~QXzbZOfFuooV{9+ zk?!KM50k!@W6+Mgz=A&0;%Oz@kkv!U}+X9y?cD{*n zTd}tHNVeos^vf<|2v1d$(fg27p8D#*nx#6V5DtJv?|kRh+FK~dt$pS2%zI!*9Qjp` zC#TF&FtQ_KGqZgZC%T5_K*Yj*y8hLvJXg$ZB}1dCR%tW^?i9@QE&OG0#8!q?bj>^> zZj8@U{o$q4wwBPLr&h6k3r}bDo^t^t6_=?+p$#%kH4)zxd>(DH#n8N3;(5b~jlgJv zloc;XS9)q>{ixpors@5bM`n2rg06F~eD2$NUxG=(aS9c^P%Okaj#r1M)1NcI+^;+W z7a@4IG)h;k9IfC6rP7efH>%7-U(mjBUv8$UI_u5M*vMs;U^&2UH=DsN&wM_j^1vhB%{ZT#&iCy< z3~hO1Ae&!ExM99|<~B^1*_Wg+h5((jYJ7V>^)kGv(dFPvm~cYkuekC19Nw>cTmCTQ z{-HnpYtO}h;>PcL&A%epAKELw(=5XB)%)QGaQwyMe*j08pY1T%{;;Yi`F>{(pe-#M zu#5d?eq;HY81XL_0|#M&>D9lhZ?ODLQTP{&Spg3|D1X}+n7aLrI{zCu{#!#upf|{O zdw=T}0RWW-e>bD3vG}0A;d=!H$6le1=XnA}px!;+z81Uh875rR%(|`wZtqnB*bP1T5rIi}r=_ zpgRb0JM&LguK-MuclmrwyRAz4GWpRtpOlob(qE=A6rrKCOJPNksg_<$Ik`PKL%j)< z40dU6%aze2i|lSu(XRY@{t5|JAfe_4Tp*%JOR{S0xOw~r5qrQkbM};4-yGt?SL-&VKFJ|hFz!73bq@Ko5NK53c7)y zOClP_ck+jcM{~3|ORQkasoJ83(zu5Meh6j_>h*=6$&xp!gq8V=ilCykbL~ z?S{G4xN!IkaD4<<4ieBAwIM`jh;+o#zlO(*F4K7%XzKPsXT3^c2%WZgHr3=RItfAV zQ}e1K8k&pX0Rs!aW|1Bj!^|p(5k9d57JAE#L7+4s4JI_q$KHuIC+UqYmLj6X_JqAz zuD2uCw88)BnMbjvLFH^V$HemNmEOGFj#kKC)0s%;d&4 zLTCGHi`Ga;)V3xu$H$XMz06^LbC;^pNBto!;tN&L1SRj_4rR3TW*j4p5+!tScS@f_ z^F-c;hcWWTzxSKPuk9MP!u$cu?% zpO7o~fSv=v9=Zt{2xkoyc)~N4fO@n+<;~bGQp*TTgtI=UV;2=F2iP_Cro!LPs%xU; zWUL*JvAy)}5rXOBYg#dW80BGC9R+$2IFVdt6?@)ZD}MOoW)an}0UJW}*feaZKs!8@$DIXYaVq4_b1+5G zL~Al*C*h4p%9p!9c0v$C1efeCVrc)4*1O4G4>=emYbZtscYj-?2DAM`d6W~lnqVSN zM8~MZ-DXt2i^c5={jExrU8Mqg`I^O`w>4;CG!5_({PODcJ`tP3r5aP3AJR6(FBlTD zRPOB(KyQ(}6yqhIfH`bfAVto3D<6vXW0#6$;VIuLQ;ElekCxgfLY(T7q5~<-J1L*R zXNYhGXy!v#e(GUIMY^$Rj+zI<*`extDSkF2?MqWIv7$yb!RKvKr9g#-m&+;77kDb5 zx4{gDTRo$(btK&$90VzmNR=n2Fe zd`R@2Q12@mvOZ*n5M4a@-cpzcN)QXX0g=PDD$c}+GIfVs^O1M)JVysPek~7i=&sI< zFGU~Iw2}(eib)&u?;US?e6juUuC(J@t^zvkMuQLdy`e*Ck1UcyG)_b23L98kbRVlu&q}pnDp}eoS1zU;?>mZPg(i z_ibVa&h@~++wugu=bRD>aVThfbR=tYv)9GaR`c0*i6NFVFlWJUp% zFiKv$^9i-a$SM7JteK}q6IOb zIB6Xg+ceX*bZHxi&&_{?LYg+;tAmQ1(nmoIiCldr9v0Yrvfv2VrQV{q=naAjBT}|# zvY;)O8o@=a%()U~&m+np4JvG6`=i90$;V-`gQVvhl`Y_??2_&22k@8Pg#KaUqxSag z8|Gx$(qpr#T4t6s$F2;X`?Sa5rcML}l-|<4sopp0h?S}`dlKnTb+;F1^?V&oci|5_ z1e7kL@senr3i7oW;Ezy6q_48fo$t)47I7)6A{mqvlid`GLTuQ@S}#S^@(lGirvm+O zK|LP>#65?MADLi*t{SrfK17q`*FQrXzLo@WPO7c`Ty36o?xfPJU-3~8zT;Bp0nrO- zhG(WNSlMHAw0&8K-Y@Q?S=U-K(EmJGyjS&5=8YK6(3?4jD{zU@eCdNbhR&!!O=rOD znd6vHcrNrjTOG1^Y_%a=fO9o7lo$I6FRcMQHD>hlg&O#6nXQ5^(qp3NG_b=4WM(1>}?-iOvYQXP*Ry?%bZbzMA~t4WnP~!=njX~FB@Dq_@1;Llz7UeJ$H~3 zqEK9Yd31Sv8Q!~L_?8(ugxze;nmZQg45BIHqaqm3Yhp+j-q*LE!=WlQu)~Dkz53Go z>}8Dpj0ZkP^FV5=&HBmNr=+ibw?;_UWw9}gkXUj?HzpQ{aZP z+V-Xupgc=}!YAf!7fB%)R@SR@_AS?i=$A2L# z{J=f_m$U#D00Eo>z*lEx21o`0^Z*tn#uu!B12O|F06G7yAd>xOPQdqSf5+zkv9e!l z4u2Q#ad5t10oWz}x8gkqQzsh}d*c`1K3~{7nKOL*gOjO~so4t)7h9X3w0r<|_)l}) z?-Y_B`T`C>MU217`vADg{QctpL@M}!g#HJ%|9cmhAJ_svPKW_4kN-{6`@fULasIhO z``>XfV9fpxQGfRTp#Bs6H9j#AD>;-at$OeU5_)zt{7^5%Zhn|vGn@RzWJ#Aqpr;LY z{UnS2PeC6M(FRFl-51KNR@Tg+)0bp z@O8ud=`3!C;_~{JFwAFxDE(Z$7hYY55pQ^@Y9F(99nsK~xC&CJB7>l`&G{_Jq46t3 z^X6G)yeLXjh@c)laZH!pZJg}kNgAfnV@G!?LZ7u)I)b*>S2$oTmVKK$yK^mk2zG?B zXf2}h22>Uv6gtASdX;wRg+5#=<(oC?b$X8uz}_z-LS2!!d88UH0nAoKOvQ`9+Qe5n^BDPF*>*uz&+Ec)I3A|SrxCt1P zb5ILo4q=55(#O-;U&PthKzUE;cGDE(KFEo@*W;2=T#f@b9SLAou38|dH%_~6i|;Fh zuTinZR9Ba~Z$YxHZ&)%g5aTsDms{skX;yFtc#k1>6zMYMnKjX_3NtB!-Q3J!OVUE$#fe~bf<4S z0V-~K(O&%==;*6C;a89m61_RAGf{klqmf4rJf!TzA_U03ut2246#4;F*5%4CUt5qT zyGhd`j5e#&A?K*Pwls~*oE~E3n2a1gBIQD6r>U*`0QKY~yG@6fz?qxknU@}?6@H2~ zSUQ5bu0)% zD;-puX!Po6+?%_9WU2aC6aE4kwp07D`!2oCk5`~hRN`(PgA6zzeH4>0-_<*-!EmNa zOUJG*62>`Q12Z?jXCFN?p)l2Yqy%-L$?ei>2q#*iJf z#20>tk}ehBi=(N2NF;7If$-u5E~OKwL)zQN=%!}lEkyFPxPzz(0&ZX5YK9Li{G2em zg5s08u&>(+BT;21iY%T}_KAJehRLnMd=7HL`f}XQh<3A)q{>CQd1GQ6!iKZnNmCb% zpU;KesG-M;&*gr0IPA9W)H&{Zl)@{C(=!z~RLHv8cr>&ivCMwXy{~W=K>(){zldP6R7~;*6|~n`d-IBBNcoT?*GTd0PElv0Q2p?j#>Z0Ed9lq zzvV2m0x;Xp!(mnc>GwaM8DRO%$?*$IXs(|*3BNcq8z(COx&PwCKcmlItp#{#GXW6c zU#tG}Wck}9{#T1xxBye>U!D2Sy9a-_mzRLMQvBk~tbnJ64Iq~M%i`}3 z+3$VEAE5aM`-mS9^q+9@Ka)xRkk|dcV{d=}_a6e_3N4-3#b$IsQp@QZxSnzk)FPuP z67XW%NHVcFp_lKY0{e>lKhCKe4YEL23;2zPB$?Qr+V8R}{)^*mRTA6*KNTcfMI>&m4yOIw>7z&(l_%kR09_ zxpU50%k>@RyU+@F*ou5Vq8dFsaC(`HlWMDH{;x;Z0t|L`JRv-4(TvO;?L{v`8_DX@ zWyRt#y6FQgnbjsz>~>n@1<{LCoq)(65vJem&?w}b=Jvm^37GLM$7?p36tS@77l8&% znXY=vE@S6Y$kooKt3$Yt&!A@4WGL5B?)XKG5iwG&9?QQelaUWP$rc;K8nJ!p>?S_c zixsDt5&uvFm$sg|Q@B~p310KovQlmR#NjikZ;%)3b&q-!rw4IEXLta1BRZl{tHtYm zLz(GE*N>*@&L2x{Mogt6bumzt=!g->lY-AS@Wertp+RV$cYB%;)p}Ev@8Qm3hQ9U6DNQeApgf;^C7{e@Er_01 zW5_!)6if0&<3kmrt5p71PoB82w5hwGBCu5ZQk*v5-m)Kcb@i@ZjNS%yg5t) z%jZX|R!_)ylv9Gf-ct+dV}o%43MBQApSdz^a;Or{Dj%jOM}PxwSXR`Q!;z*iqDd-3 zeLGrNFfM3@qG+oGw2J{M=sFARs(;MuFJL5~gKV`KKnS6r!vrd5o2d>}YvCt)*zStp`wryyu9_mFZ#(hnIa@&;O8c9QPqwOa*eRD6St1`o zSE-^-72-@t$>yEyg@)UgdR_Cbb(#20MSN-p6R?8d!YvXNsA1101!3VREbr%pv<~AR z_1JY$>hD}Vml~Ilq{LOP6Zo=(1y12(gwl~*18xZhnXN-)KM`RnIUTx9L;uz}awZxEs!G zD-se``?45ii_Pu7eT`Js(O-^NokBu_u_4(2*N?Jo@c}WJ4MmRk8p88SZc$*sbnpco z4)TV7WIQ%ic8$R30K`TKwia53iAfshEH<{sOA5gOeuK^r{!a*zxEK%FB_hV-Ou#1u zJ8P;v+r1m+MVa2j{e_BtSsNCYJVNoWB}~ z7J_Cxd+MCiz%xuuvX!5P0P$17DnAqGvgGyELjr?X6V^C^;-L)Bp4h!SM}U?*B_$K^ zz>>cvQKLlu(kZo6L{N@=*cm{RxQsW)Wrxrl`mALPgpI=n@#2%Sh6x%zl<*d+a1c#s zoL~!j@)rm9)z3z+WC!Rl#|Epf;Yo_r236F85mF;@4A5$aH{>P?T1(>P*ba*WEU*?_ zv>+DVQ?5Vwbjbr3WDqc`4pCyszJd%Uxxt=N&@~q+b4-J)2RRKFC z2ZmHS_65SN1rC`@4xW-7bG~^|Kk@h~juZ>X(l@N7wThpx2}_*bhAFFu;tnbd+Ys#D zN0%v&<)alxF;eo026MXQ|i zR_OOgb3(s{{ffXN4i2Yrh-0=yPC!-v!I9XuF$d9j5WF#`d}%#<>j{iK8N@39e}2oH4iE&8O!^%%db4Z zl3BJP=|u!qMMcMSJ6+H`GIa86eBwJ>qZ`D|i?{e8+9@n9S8tvb8?%Vx-<<`@oPtp1 ze~sklTn!Ohcxf4-+F;YtU=?&&>8yPa{JGJFq)-xir>?PFBQOWHo*Kl`?f2k>vSk%t7op=9#<!S#Ja-VNHxxhfQ2Eup8^BkW|Ac2=XIz+KEofoSD8K~I1KMC-wv>$cXWfTcb|;O5pnQZkH0Lo<3@qo zKhGW8^1F4RflU8uO(C!raCAv}aUJ%i0>c4Igz5}TrhvR^;^MBDI{GsLp1TTL(01?}FD({a` zJ-_|zcWC$@N6_C6#Q49qcL2{qKr{~r5gWiT1i-}rWX=Fod;svu#tuNh%>OoX=C7W7 zzZLvn76;Jn0hq-^%uE119}~c=j}b5*2Xs%&EC4;`v9aQObQfBAlI|5@9`^q1VoUoHMSPRT0bR_#A8X8ryY|9&t3 z=t2G)Kf51B`u~>N%?7aG|Kra6KC1_q`ux*YB^%2cz|cAM_6zBNOAZW2f9qat=aAjA zw@_$ZZcE?TrD!{^w4qr+PI;<$*mM%(UTdlqSw|KiMG$+ljjvE^+|_Ximamw9cI7E}?D?!4ph6h!u1B3Uh(cevWlmZz@F?+zmA*fh5jw*ps>_j`2Q*(no@L>|l3y zs|B<*1*)PNRgMQGtvP3kI=)~qw~slZ^;24OG3Tb(5}V#0b}?6%D?m1ag;C{~^)YTN zG1uaO2cew_(x5gCopCAp_^gw+1Rr&K+qPCbqbk&#(P#G={|Tfv;}b?Ds@1YAMcC2w zmtBI;G^jkFCg}262b|D4#5eAoy2SCRJD+e>=G(17l&@M+~h1x z#Ad)*Ni(NBo2<|{klG=G)>=G}$Im+Nb4`*cS8$r|FnE9`36)>-QNASd7O#_1CL87% z_38?;z$F%}y27sg0)J$#5){l~V7#Oj*u_KCPorf)mHRa8RKY8y`2J0u1+GC31Klhn zGXB~tdFM2y7%ibsj>ebhB~)J%q(58tI;tEt#SbX>p)znS_|5gGa2T}&bQhB< z(JRy?92T3bFTNqzVEQr5mhom$xr?9Ah^#fAH}-8Dua7i7Id=N2a;WaWLnPVbTEi9D zgup^x27+4y*99p`@1WlR3f;RtOnlB^U>QBj^CN*wY7~ zF6W3`qB^!?!^Jw2K-b=jGv_ASkh@HjTwz&s`Q@|3<=|_eMwi*fCD07w*>`;4N=zCe zWqc`XagOeoD#*|cEfaGPWlPRRmfYruXfVnx-~ucWd$}F?RKS7W%lol$jM={#N5k z&v1D_G%`+y^#!nGAkB|8Byubs@4UBvN2pMgXY3!a!02On%~w zP6w>B{Z3Dq(+vDAvHvVp{%Ouw$rynO)l|Dr7G*x3L5qyJ4wGy@LNxIrrCxP*3M#(h zAtMYhRG1>C(+&4$>!uCIg{5cEh!b6GrLLb>xX@B~3-atT@Rlp|P{q_Km_g~i>$|%=zSXGBWtQ)_dEpRxQxGA0&# zpbE%}Dzsv79uFnRrOP@$#b+pMhnC$P)38EXaLQ+3jd0so$S5Xt2^uETWSiS(#?exo zcwXuTBU^G2Aw!4ci^BxK)qlw>P4=Y{s^%h}dPdAJrU?0ff!%k-O&W~1q9$#1SX-d{ zMnG6^L!xv|>I4e{AJsu6279gw2vPwqn4;{pC1 z5`GJX{D;%)4}YlrQc0KvSEKMWpeQ6{urx8R(p?hqhZqqQ)CqX9k2KG4-MUB>ljU;KK-;|dpB}C?CcemeeVk?5BMC9? z`mnfkyz05{0A*9iNl2^JYuW`9_}=AxsP-Z{;#y^O|5R%GB1_<9QTPWSw?6zeK_Ak+ zks2oscvk&d8;|q&ClGKXsL>_xBlQLc6w^z6{%$D^2D_WiY7F;=(_{`Xd~z|e4P;Fz z>X28p9Jz``v6Wy0m!N#mM!PU<_?4kif%rQzbQu_xo5P*yqs%r`-vta+8WICZ$pCcH_D2m0TdKqp_)U!P< zkhRf{yZO^L6VjP4@*M^VxzOf^Gh==}PjMEAq|OV`)jLekB95=Xc~lzBN~iPzp9IaD z(pQL0uN;DE0}=)DJkGY~4Qg|Y5CDn;w%~ET&H;uhWo(8P-ApnzcN=aP%|uO6~W?b z7rLV8b0X7+P8r~{-qkO!2g)f$+;7O2G9x@ zRs1EU3~rf0a*T|`YrS*CUF!jJOiG8aGgCcV%^t}V^x!N^H@UW}$y&HR9lANT;*W43 z=(wz>N~c;hvGT75Zv6sqk7s-N*MliV@7kU9<1&+$-d!M?20a)BH+D;(FsnE*ANCN% z6-Dn*6Mhi@SDQ~>yxJ4~5|ld>c(vTpzE~L#Qf&$qF(ZH4><-RiJ&GG&JENxIl;`O; zjp!=oO%96!oH0?!f12e6x{hRF3LaW1={{#EqEveQ%9nCjz`TF8BpRJu$ z+fIYhrM-zi8_1oK%r2oo+QA~{fbgKUw6i2=dj$zEt`U-L#=>BOq|Q}qno?Q^&_my~ zNhdbF$p|ZvD;qW*Sbl_LwSVlRKYvb(i_ zp2iq$YeBa=$zj5k;U%`&b31UI)rc%i2bySCui5@6Ax9$my@Huny;}V-xy~Hctwo+z zruNNCLz_67*4_Yd+?-^G8k*yY0ShS`v)(ff$Gd*x@$I z7f=n$<<7ObW5Pwfym9?1<#xGFO+lHkGt+N5vw|>k)R3DAwtA7%e4x_R&1O)!W2fac zxJA>t=8NM>_dESPR7fvE-3P0JuC%(6!dtom$BLE)Y_s~w;_Vy12utgSF9OtA&v|<(f~rn&%ll8Ct3sB_Y3z=f!oih?-z>!U=END^4F0f z+YbW6KY-icW3?Y3-JgKlKVllNG5v~a%K>->{vlQy)m*e&L4KtG$32(jCLqAQu{Mpl&BP6zS|jjJ0w!F&vko)Y?TP)Z3# zZAdBylSIi(nPEI(5YNnyCsCdxIekDH{wZg0ZoH2MS-a>1^O$&6rtT&nnek${F0})P zD_%LNPxgiVbxdLUfC^hn))PLu5za7G$XAM~$&(}1;axwRgC$YD;Uhe9n;rf`E1EYL zVJUK>#ySt+eQvBOi~7Z1b=w8J-CJ&K?b*=Z()E217>K)J&KwX;lEU^vEK%GJZR==j zSPgnnVC_6vcb*^#)lOG|QHdIuQ6b+)OSaXL0~tu?L} z)RS+s^K}w6&7iZCAn@sBwG#wxbQn}cb~(9QI|)M78Tocz?nV!S_*V4Pl>$D5 zX2~+V5glcw^5xu2n0Yt1PJgmBcWMlhx>8}bAaY94b+xj4TTgj!`U5(h5pBuQIe6t@ z(w@O4E)VeN(6zagk%%%Q{E=T}04DDpKX_XMs51YLB{7#itAF_NDeIDH!5u z4?~mzxD+)@YO!}idF9N;rqc-6s+5A)j(WC7?MVxA=@3mKA*wJHvLmG(fg=XQ$sl!R z*r|b-CE!u#Y%ws*!0Je7p`&u<_|5k06(Wa0O0sW<3^Ca;R0->yBe7C>*q1-e712ZFC?>VC)N8qsx1rWUpEHJS z&zO0#nl@Wn|1t>FBI||QJJ%j?7lAiDFHO5$2){@c1EKqoFc~ zeAL^Ikk6Zb%3n8K7u8RJnV!% zpnh3lZ|4?EoPM#bfvY-IAlZ$yw?Ka6viuqE-J?$M4vgRRi*y}6_Y?mSsFx6&(ThF~ zY&}Th?|Q`HMEgu6fQhXi?9hHFc__Oim~@T&c!@;Nem zB$1Svu&_+?`=zJH_H(A)-IOtp5fP{e@@B1{h%d zi%sNTA)?qwMt`P}{!3)U1h5bI_EP_*wBiK3#+lfeUjR0e0ZJ=?MJ&_5 z-Khnbxc-ccz8C!aVClasj)@&0`vQzPe=m-Sg9YH0_5T94{j{aZ27pc9F7KZW7XD61 z#RQmu{eg`E`?0@V{CC^PKZk(-YB69|`GV;e4hu{_guMLCnOT_u^HYE@>gP!x;2Qqt zvY7!{AY8u?kNx%>|9&_BK%0MpkqqMh2zvfAv z6cy5NUPRl$iQq@SJqkh*c-Mg7*8A2p!B-`>Wfr5OYouu5qy3~`!}Hf}#FKX4-K|4% zhoLd|krGS!VDqez zd7wzK?9FQZ?~uIOo+Hv`JRXUt@SmWM`?2wP@hmyw$C^@8&{p*2ncF2W%3i~h7M)Qw zs96A2-@v}p(+@ycF!tkvCKy!M3bad=hk(%L#TuQ8$U;Ckh3=YQFhpw;M6>}So_V;O!Au{Qvt{pey1+l=Z}hYH zZHj1L+d>PL>|);@PYk8MFZZCh0rRZurH`%U%dfS-T6bS6D?rK*pxwt=rt&<94?xnD za7X*RCNbz$QwN@UE@PoL<+h8G1--nn38C5XHK@dLRROOv25x&7&oYH>i?3=F*RY11 zL8XD**$O8Ag?H}#Ry1WSX_>A`u`H~Q^SiqAv|?f!OAE+@!TqI)Dk~@-r9&?Y4_#@) z@=uPZknB=|C4Q9xh8LRGhL+;mnWdaeQI6(!Y8fWQi4AJoC`)jB5IN` zhr(Mk<>o?omo7jJVO$d1CF&yTy;CphY99v&$_rN()Q-ku1cQ>@}fWE=c zz48%0E!a@sfOb>io_Aes337`wDDMy>=p2uNgmIQLW+ghJ>)un=qkvkrKCN2!+S@`t z?@NZAy|_9qZR(!b12}#frtL!BsZ`iF&HKR&(c<}W`MmdsQb!HD3VoGv{15=adxxG=sY+G-& zc`HO#7&#m^(R(3515*xuI6RZs5C>@<-c&4+YL3KOGl=)v<=!5sN!9YCBu)moZcK97 z{BD?(NK17bq(;?#1jsoS2*`vAnJ8^b@HbA6TRD*S=Ho@Q%zVA6PRUn#F_#`Z=MS%$+gY$rcx=7B4 za(M;j*eFJ|88PL!KvNTJ0>(}82{|cXyoLNrqKS0)*40U;ae8wrhPFcf_-uTuXEGl9 zi(vgvFo->oK%o*;2*?0}u;kmgAQe~LL-2B+*TIjXswfq9CiU4poMUZy<#GF8DBbw( z-F-B4HKD0m3J;yze7i$-qE`LKyV;D-1vM6iu&zz{&Cf*!-@ytXMCOJ}*TrTSkfQn# zMGz&P`Q`0M$ODCBoPz*y09xE7kzgE^EWuzJ;nz|D;7gj3#A(uoFvltwK)^Lcw}mS9xPgak~2 zFwl~XtlzY(s%m`X=38FnEZj&%)hCG8mxHC4SIV#EA=ov!*(pARdD+>*c~pNL@o|sB zx7Y<6>e?jUxL-YizSHGc#}FLt4ppy_F%NH}!3URogDw+i&X8m(lo1+QV>cJQm_X6R zsMFzaNHiU0Y7b>>$_7I8Cf}+JmH9RG`FoyXOSn{QdKUByjkFlIb3`hA19AdL1x){~ zVusVRZsiE>C3;FE(#NCS5Hc4J3W=oh>NrI}2&*yzU@uA`xqc!`3WQ z5RCzcmD`0Vc%UptGf1ZUpToZAH(aY(zLyvt^NM;IK*|u~C@=RpOJ$=B9Z#3rui?F8 zMNwF)$#(YUZA&5DYNYg8`NQyZI!=I=>#39vkB)KD^Z+fQBlm$XTcPFP;>B6lJ@^SO zH#zwyfdik2b3_6%?-WZqqw~t{qm2D-g^9=8CwGCnd40#KR1D{*_uL=gMDQe_;^8mI z&x?tK+`r&O1>V;jQDu&eSBV38XEMo>`|j@V<-E^auuFpdZ#$ zb#(=k^HksI>(+^ps-&DX@|n35ZC@s_`1U?`+x}$txy==0UbcsQnA2yAS^IEv^N}=b zH1PoTrk-nttQ}?WUqJUCOs#$m-M<5lABUL$M&=l^V+1CZTc zp#1mm{*JHyC0b?%KzBAKF2K$?3t%@IFx&*h3Vh2{_?Gs-$@wogrvb>5^Dj{TudUB_ zIsgoVu)ULssnd7u9HSnCB!d)#h|W)BRY1@#C&0dCS$Mxynp||*x#Co@Bd8xVGr~}8p+=+{<|LN2Z!OmSS zf(`qF%iP~AW@7=|41m<}FFnu?HWq)gn3atYaQFWzykz_SAHwf<^Z$Pj1Ym3YaesdA zftUfL@_*O^HE6BGmI1VV9sXj=DUzs>T?VCQ#ThSM?VGAb7muxa$jF4q8Nr=On)V4- zE`|jqiRN3iU$e4r*NxY7Y;25+((~S`L~%MkiPA?$=#3*{W^Pd0*MxEC^HU31ptmTY z2tExBC;PUZ^KqPBsYTCercX5Ysf6Dh+)w5D!A%QOb3k|Zdd+ebkj`58*DOCD_8dDE z;cadBmxjilJbuuI7`oG}1VQDt4Kdwh)rzdR+71|Bm`5%(Q%rpFew(GD{_(5ajDzt@ zr^d8{Use0JgGe9^<`?j0&fXK5|t-~J?+-XyQS{h%X~x<@6A&Jk2>8K zf>qtrlvHI_I0<)CoUZ4}vpC9k(B(hHX1}|=c$KJx(#oCT?i4^w3Cic7?3s@X42|*X zu0a<_oF(NfgDt?tvaBar1~1xpc6?Yr1vvX+TXw2$j_aV0z?Z#=w{t`o zWSQXLJYizVg5AZ~VY%iWlen&Q=C6j#;y9wMJOtZ|d(3B-c<<=CKJHDK274o3m>bJV z#MefK|HypSrq;Do&5g5%u?O6_fm;YD<`bZpOF%JufMTQw=N`N^U$<+0G;|LzP6Gv^ z!B(%N@EMkeu;y*0u`kih8?a!Cg$zwj>0)uPgyxC!>u@k)EHRGA4O z`OK8{#0bLC6SH!yI+XOf#`uWcO-qX1PC1iwsWBajQBSbjDu=0GqkHDP{^;Om1^B*k z2t}aFJ4-8pKs`d;aoiUxTEc8-?p)AiBpVuJRURoBx^nPmP?C z3&o#WE9x!>uJqKRrqP(_N7_gCm36sl5Y=}9rU0;6M`QyCcBMzaoK>;v7;VbHNh2pZ zG3=TGIIED9uX}FC`iXa*2Bvz8Rb=GEp7klFhg3=j*5d_x3A8@&3<}og?asu6Rvj&e z!rMba-kWxoFJ08LL^gKb=}sC4zggo3mcBA;D);87H;{-sF(8~xz;F$T0+M0Lvd`S` z5Hi3!fae8bTO}NXTiv>vQ>yJcL)g^myfm7Z3*H?yfm(n*Z4AIdUKN@NCeV)bf9KSp z-zF%6JD$?-vEv~`1qoWfR5!@hd5Oxe+;jnL9CAljCCg`jOCc2Qq%x6VTUSw^qT3#a zC~K~sP;%%0LKzPaOA779N1(=J=2?|219i}eWHb&OX#6LibS2O@&$BkJt|dkeoIx|y z)EVm{pQF$mAy*)6g~@{}W`sCS{64&)V7vg^`g1WRunE0{yZoiRZqZMK5?L;95V(-< zUP_`F;1>6kZ%=eqX1*(QyeK|W23dcHpNfWuI&;@M%zT}FwZp)`iAfbUiTsI9#RH1j!VOREA525%I3pH6E-K?c^=cYq=xzX}PR9U#u0 zH{0v3toA1Xsp6g-v2BGZx^7IZPOLjB`fTb|im7HkMVuy!tCMC_R@h1Lvb~%Beb+VhdL@}->!iYDog2q7QUOhhxIOxDyMy09wp_} z{Eo%X3h^x;8HjAq`QGMZ_*SDW8@5IDr<|&Gfr)GvnLLXm$&@Ge1a#@?YHQPY-q*|Pn!J@(UjsV@Mc(6c5XbQwGo5%a z{-sa@4n>4@%9(i04IUs>qO$gjvFdx)ijFl}UbTHRa*U6+BU@e(WwH{t#RKoySF}S( z*zy^xQ$GO5Rzc-BeIR?!&Flc|%vKBU%F$re7-$(7Am@Ve6Yjr#hx2tBRUS2x`k=h6u1iN8p1s#RwV(T5Yu#({arNGN=hlsI zkCp5=TM}#m%})1H`~c^iTGY)4h*^k4xq=SJ!wJQqemT3zM>|z7LfHch_!jl$EW3(7 zjM+~YhsB355J$?h)1G(qscx?7io>>(g^6sd(XxH0L{c=h_l({`2ct;vP-MM2XTpw+ z6I`Y0-E0yej_|mY6U}%5<~YB^9CuC)6K#OaabY2|IyP%U%V2(mc#{P3an zQ@RwQ0J&bp0fl3qrm>RYC}L8WQCb~h^qGU`P3UH|V{8E&|6@t=VSD2%6!I6skw3v_ z-=tRk9G~4BhQ7mRe?}(%*TE)$Y}*Y!1Jb7cc>e>Ju>qpWH$MXb6F=azn>K%)0e=&x zK>+B(#>Pg%&UGEq!3N~WF*9(o08oetIO?*p{ytFq0Sw)IlmFH_01N^C1$LkS9|RDt zxGuoQdHpkhiGa%Dzi-?RG0s5U!N1S5zuR>j*9Urb5_X`@IXi%rAzU0lxj3@{}}ZDw(Gb6!~j4ub{3!tJNxy(UJo>c1HYaB8L1% zAo3cF{jBl7VaOXDmcM%BUmCLmNvKQ!g#I1|vH{iZ|DKA!g5-ewO`!X3wgVvOoe2;y z{A14m3L!F)0F=hfC%@*}V*QzGiye^6`9)Zl47j!?#I9XiX%+GxUv^p@K7f9Y?ewNb zGD3@L`vZmd$4E|e1F2V%9rL#i+pGzvc*&)raPAaw|<%Fk@Hhc>;&JvZDieyAUq0rr5$s$x>X=vchy0y7=dC5qRB_t9* z9DLSx3GNV4`P6c;G(r*@lLqVCc-1#320b&RY<|#GNx+ULVeupZ1D-3E!iRoL+Kx zO)BfB7RcH0#iEN^LYm5-^Fsck46;js2|Y>-k25@|B!Ffs!fpsFHO>Vb)TbB#{Dr9dX&{XA=&_sv?kjrFx$()T z_ss`+r^~-YDt7jdGf&l|PBZB3PZycR!;a~zZ6Dui896$nkTecxbK(^Nb6Zx3PNW?e zfsZ!_Szl9{`V_kvr=QA`;vRgN6(BEETx0K+l*V5mfD)3<52-v)S*R3$E|PQKczuN2 zn4lehQb=PKSN80~AoMGLa^*|GR8PE<>FxBl^AErlRo!RRa5-}^j+|qG9&m@VHNx{3 zXIqs!8cFw22}{)~wM+wEUWnz8eLgjh4GVuyYpTaac1Ots>?7>m>R;4`cfo?@>93NW zO&{mdVjwdYPr^`B?YhKv@#R6xhud2^_vmxw^T=HUs@D|9xba>R6mC$!7Z(yMIn zj4hG!EgdOAUFpboX&Sg{3csr)ShlL-`!e;sgPxRFN)oC>C)C|~iC1}CLjBnZc{ZoF zbM;K*TZ#tbz*#9P^G}v+`T2axh%7w>7;)G=#_`Y*-Q{lUjXjErPEf)y+QVqi1~3Z- zBBMRerVueDL3#!lFrt+dc~2cJ3UHCjgP5}jcdSdpCek@a>d={`1}yZTo={4bK#63- ziHpQSW<98Q2jweSumhw515s(LiM~G3=G?cSYRl8rdw$i`E-x4&#V7*XaT|r2y)3SH z;C^R+P=QWl&NCx!76gn$iRY|KTK=YuXrC#}mw8Hg4_ds@zr2;TCSCz9vu%;{Aci^E z=R-bprw9|br8DQ9yoY1mWBJ|bP{mi+3l?AQ4{5VlZW!REXcG~cZ$+@CI2%2+S!N{c zm_v$mX~%ut6gc734tJZf>%6Z@Mxz%`&#=3e7VT~hNjk|=K;u^lNl4gEn^~X~{~%D5 zlJCuPdwj8l;++vsPRIQs6lr;Z-HM5-dr1?EGO2(b_B0V(jr1!g3g4fyN%E7F4{L7OP(beV~p1 z=c_>i1D`#AqX=V4{5D;p+4wnhtwLu&lylUBJk(N&Jk%`JJSL_Nqf!mqz!|5S7#M%3 zZG~8H`6J^pdo4SDd(}gBe{Tob@JS_;+svhq`?n@lyAVdAeD8E;S@a(2X?5e#flUpW1?OUN>s3(5Ip zIKkDJizl*$wZS$FNSIxRhpy7QjkW_%KP;uw;uff|qbp1os*AHeUb9Dn(~Sx3w7+m% zJPB|oa!tZql7~?o4{-e=`pB~gJi;6r0;zDte^RWnz^xJ~bC0T`ll7JuNn#PiK=#eo zeN{HhR7@+I_s0rCOs^^Lf#0Qf;4VwiNteqv6K$)!o9W3`hmUB531c%n=ZD)qD`ZEp zS3%xhdK^tp45d8jud!L@LOlL<_V8J6TwsUkd;bF#f9Vn@J>B_b8B})Hj?rLUm33S zkwX;Nhq)8PJ6vswIYL%(8S-x3v%!kB@2$VkJ&Tv#U!as=Kg)R7#PD!)NkrbgsPOKI zkSk4Hbs=FJqS|cQtRd4YsS5j zE1Ylk7;~b^cls*&i^@X>5~i}{jNX^Fumc$9?=v3r5Jvu9yw0^jY7)DGuZ!4gPZWs@yXEvTrq8t=Kb5z0 z|4mb?+g+!^ApJ#_g?hc@bO=`)G}GfK)w;Ceg-jCh2cE6?SiA`=^n2TPl^xQT$#62D zQ0uhU_c`I97F*F4_LuG=xrOpTJ|2tb+ie66FSZJ-d~~H-zGaebstDxsrkSo9d6 z*qJaj*=m%RM#gljfSEu)R!+wwG=;_^e411bx-ni<^183~TTe^PYP-?8FOQ9(A9RQx znTZc+JP#Mp8XS0lZo05y3wygy-W@GvzAx(|I-=Y@4h^eCD1pGv$~GMoLc)E($UHcWFBu?}?)`L=NF5jlv`{50npLr?&%t7RmxGi2 zz$Sc-13Br-Opw1%mEs;F;yaW1a`_Vkdq;7OiEblI-)BBg-q*FDHYyXD#?AFz5I8={ zg1zGhJ!p3OoV1hDs3WVJXWT}FcTdm+!!0MGQB2Z;D}Zd8DY~zLxTRX0$sai`*n3__ zlfBxotcv{DRUdYOx&qw+`Lu4KR}B7xs(y9Rib=nmbNwX|Bm2jhaA$}nn-=c_9)Fi4 z`a@@QJJo2_k&;dR$qVKf&=ywM`@~2=c#80T1Y93-)`GQq0-A#K%?_EXo|y45xVx=V z+e>qMg3y3(UJk)OHL;qODKH-~Kl=ec(~6C%+FhJ^mKXCOq)6`VgC8A-2|CTgPEZ|( z-dqL;_hVznFA8P5y{j3H7&zb|ES`l3Wrq&Q@a$(T20CR+_ZmV)Yt@rZE9CDfIu@n{ zDprJD2v|^gH2(y!f0J?gbHILc%>5Ry1Nor?~VPnC&Wd$;e+V*W+Q z{=N1r+s_*R8)W~!mhR6Qv#|m$c)$_;17yG1JpLN+UxDoZe<&SD_Wyfj{^fjS1^BRE zMCr9^YvB{EXjh(Iesxf+De=Bc?P*`AVcqE2wDhhxhV2 ziAsTcd(xPYIX4ZQoSmGOI8gH9eFfM$5z-LY_V}?CCdTxgsZ40&PTG>;G2`tT??I1~ zMdd}SV7jtDgyA{gxZG@^T{M<@A%sfAKt zYa>-6avhh4#$}8KxtaMU;da!ZWw1{oOhSQ87ljrH7y47StHsM2?2}v`P`A_q;rtsDdh_~_tTer-I?7yOgzh&TDvI@aD{9*%wIcAk&E(Od97Su#PQcf zw_dc~G4hE~0B^JjDhN1LzKD4#1QxAllV`N~I#N}x>#z5P$~RuuhPAe?t_q@}YS2R$ zuEp1%c?YZ_&bODo?Xu@dEGR3+<7KZxIk!=k(+khaVWQPOW*Fc8p$c_BeR400SfcO2 z?OXVhhY#gumeW$GKsqAyN;<5MHmCB!#1g)|#)vQuV2ro{l-jShR5SNoR zZ;%+F?-H5J&~xD6IM1xe(V(Yc;4o>Go}Q zloIfo;htSYl;~)>N`)h4#>acsA)yS*tvw_&f76mzqCez=5ozgua@&hQ zR0euA!o7|HWmsV6w)e`z+GoiDbW1GSb2H2LG45dtU0D&nN^%pHgVWM~F|UgpN!{!7 z&H^_>3tW&0!DxwBR*c5n)z2aP0!>Br{#joX^r7^gUh~pANxQM=la7GThKogm48v2< ztz&KPg5TyfyQbwVe>EqR72=&jhqdJC33$wVzO+^1T=0Tiu3SawhR_s)%Ct&T~3kt+PHYB@N=G+WH6A-8Id9E1n+Ea|haQ zUzX6?hYy{Vj_iTGUrBQQ@~Sj~^x^%*n7%8*?9Qq5&= z6BV|kb#e1)eeeN{LI-5tKgG^|g|493%*jIK2}Y&(_N@74XKwx zo)@KRkwr@UrD1a??!A7*kmi#wjjA{V9=6KinWRc^hq8RyA8pD_5GDem+xPcR); z5W8lKZfO~}<{;zO0=E?G~%LoJd>Nl7)8AXql;sYm*QnNCE~Z6NnD|qwASn^f6KW z@oJJ#k>q)xcyyC`rgj z3YNx6?0(fNs%<#mastLyY3y{TH6(&(=bSFQ-4O1xjMTjPEJ4dRelgu947qj^6-CQ= zYR)|3I2b!;KvFm2c5b<9u+hO6m5f@Zr5CCAp~eaL?5&%df^DJrBP;DRs^$Hc_FL16 za?^Yfn$u66C%xei20xsR(lz#`7f7uaY>FX|V>aH4Ez}BbNbdlR3N0lr&%cOyo~p7W z6cR;*cE^U1%5$z?H(%YTOv3l^z+uALF~W&%!J2^=Oa`+O)la}I;HdlisP}U)dvhB6 z7R=rxf&Ds|1vCe4uX<+?|*_>_Mdp4Z`%BI2>wlA!NPJ4 z$pG-m3gAXS3V{Wvals6j#STOdbFlpq>X9(Ewsrtyz>I#(_PhBO|E*;}+%gAn0X9JK z3vfFFDTn}U0T2-2CTHUM{Y=Ck;Mh&i{+G5vfWm0Z99%$XFrfH#U62kClwblR)R>t7 zfBEw9EK_mzVMS z28<7GJh_ZO2|@+Q>p%COI5^mFGcr0mJ2N<0>NyxZVK6je{I>2K+s$13`IpAb*L?xx-hSWsx`@c%ThaH8|0>Z3D7i5K>-WdT|70Eh ztuYXd&-9ZbDQw^5wEhjRe<`K&dl|U@v-*B)06Ft_fBc2QS%5G9izqzny1WTH)^!@_ z(&LniN;e^7(HXhOskq;EqzTmZra)m1CLz;Cc17+z zAfq=yJC7>sf;U>ElVL&2b5XI_N*{wazI;kW=oc9zQRsizZipjZ`X)Z!&xg>{?L*BK zNmP7@Z|M5E?U*ejNFp?WkHHfGc`??YDlvfhen%7UU?hA#p{HYny>sHc1y8`0QIqgN zzswwBL;)-3d(V@tM+C}YueD+)pLAUCDyhjY(W77-zqF?(p9gYYW6;)!jX8d=R5N-5r`P_{xd_Z`xR z6GjS#Nf0)-I3(PAW{)@Q`G@VVjA{|`ZEA14#s+0tCQ{-@X(B1D29&D`Y`bHm@1Uod z%3I-P5~m)yz*3oB;A%~LFZVqLBj~ts@}8= zH<_~Bxa|vLi6ys9+8fcpbMNGn=-rEKI{7Q*T6dV#D5YtQG zKZ#q(yU#SZjbNq7KD#j4c~X{}+;t|?ZQ`wsnM6|(!tyz5NJzXN5@oix>J7$GBwM2@U5ua*;uz?ip*m9 z97v5Qe7ucf5vP&xi2R%&#wI)>u3e^=j3g3_Z2#lTO;gG>l_ZKr%9oj*f`_l>B*BmC zl#DsOH!EchVDMpxy=3C8ZSOBde5_(1eFtx#!KkyRK6y007Txh$o;c$eq%d?OxrhvZmHl=y@0ohkYM`9q~=9#DY;KHA?A8YO5|#7&$?o zjhk|r(kN!jUX7qtdB14uJ*q&L_`Hcig6?}IEJiqqu+hmHJOVaw%xEEMJ@7m6F%=XI zsL~H9k#Ig2RuaUj=CR%W3X&$Z6)n83ET>%zMLI(h25Dzgw(0VH1D&p6xd%M4kZvpamV zq*87difR7dr=y2VV7quks?#sX89CWz6aC%q5Lw@xxMy~^em>R=+CZ_V&X{e3A#h7F z;XaORi!BfEF}#|D7_G~1sE`%srR5nd8Knb3U0}(EgApN=`UK>u_Sz5Vun?Br0=ueD}R1<{&i17%SYzZpem9f{ma< zQF3RpThz+KY?~YmG~Z78?35+;fzD*@JGzvmLfMCuuWVmrn$NQMnQo-A_0U>74|sux zqN4|T6tAG~oW|$dlW>Bl4wkq%R0Xt_c|WTr)8gpVU_@x7KdcTW{&Z=!@ern5ZocO8 zT;>%(+z*Vt`?dqALDQx;P)mA6_oy#(p$ci^PZiY{I5M#f1kl-`*7I z%hwIN%{i09X!p1Tk>ur@XMt9>4&)VFDO&^H$STJ#KV<5`-mX$3A4lAJEK`*=c@}Ls zRd3zFZ)DqH3tM1s+k5(9Bbzz=wo+QCr~MLc zVQLSrlt!fb-jxxNczq);f>Rdq;*8l*G{M^g+^;N~yLK)|pwy#O=vS$o*d8u!`4Hy@ z8Bh6?F-O91j2%nc#GDw{xw^`HPi_Zmp_$0DSE0|Z(x%9)un+uq`<>dJI+=ec*AF)n zt!>C5r|sPa^(f3OKYyoNxFeU;{v6}#^&4A^H zDd1?XQhc&_V^N*@ywThUOL_IS$0{R*(WW`+)$P8ki0025k8qMRijI%GsdYmI0y3R2 zJH%Ni^x-2Io$D{qy0HXz)(9t=yw9OFBqYpDCV1c;x08ozdD$P?9IfJwO11lQuUX%D zwxF*!5aP+>oj2MwYX;3lf$O#WHa;)|=SfIJ$B+wwwMy7*y-%fG^W3upYbduExJ2^i zeGg&7YO9G0lv(VfBLF$m;hiIWF~>y^tT;L*gXW{1vYzuv(RtxmGo?Axi5~d{MOOF$ zW7Bl@?XPGH;AajP`2jSfnf&g&@gG=q{UtJjm@^BXVF-AOro!`yY;7wwuI3 z;B!Ey=H~x_nA_|3ZzQO{$xQr@nCkjMe^*w40AAN{)M$gj99|AwMm z-}@|Yy86Gij2-AE4!|NnI|y*p0R?0L$13m+bSKMit1PnrsNH>2e)GRHjv45-Yey<8 z0E}`%f~EZ!fLP3O18ce7&bz+RngS8zszCGxdoA?smD%L}UBQ3~_h2QsVjp5~Hz~eA^EUOI4K% zIZPKNkEt0uMdN50Wmrg?Mm30uGAn$db6|`h@1#UtiZf}eB2Jp2N}>6=p|$P8_H*9L zQwrP*j}1T}Zt7B07vbK~exE_Yjh2U88{2K|$)NHesr7O>dbhy%-u?Q3M>@kbL&S^% zeCNl^Z*e%p!Qp#nLP@p~u+c6+;m{>T(ph=+7V_rK>37EWL}-q>N6`INPQ#XyT{Zmj ztkom(b3s^ASN9+t*)XLE&O*4+?6F^z_ID$b6bu;(ixQ$t8I{Sk}SjcLxC^hu3>0MA=F%kgv$={ypL znhNvr=?+0L3cCy{o>em_i$WLc=4tqet;Ac{&h9BbLAH2(krb)X_vX*xcl7(E<0p|Bnv*QccIWnHN8*msa7G8 z;DW^GgK()7njEz_TSM&?`$*)4km$3}j~aBy+~NC6CtK0Ujoa&Hy?jX< ztTjwGL+;`IObE$*u^#!N@qyabqd+%jlS&n@OhKCGr90I<4j+Qhp*_x?ns?zwZMf@N zS75?wKHi#{X|I$d7saD+X4!-?A)1%+2TS()-p>d$x00ex+q5scKQjxRM=ra6w*tH0 zDEp!f$+h8D_vvXn6VpUmru=It6jVE^W2>&1E>5Ld(Q<|t!s5H@5m>9`D`F)dSCz9s zsLM1po-}P1fC}hJxX<1?;=uSM3#BVb&uGP$Nu7$O*6r~)vgiaKEp!DX!gpCa0s5NrVmG61V60F zZR0C^2wR_mR`Q<3CNwSSZ9dXgjfD~{0$+#(;$WMtr6#t4aNrp3h_mG_2v4}pGvYC$ zkwH!Udkk(wMZpO$CFH4da3?Ubd3sQ31O=YGuq~0aa&Y>pxOA&laexRoA%^RC(`qDh zxnbUwt3Z*6ywxER+C|uBttb|O-sNGE_(TR=Y6+~dr?I^AleUtCym!nVnt*l(4M7wj|qCQ5}bU_Gp18MDB^GO-oG zx7WS+l}ww@e537lySn&g&MCsm)FP66d)L$1d~_piIyOz^nA!lybC!;SMYGJvM{uw6 zIcbC86|^!Bv}Cas6Na)Z>nv?*c`vhX!Ws_igl!PPCI zON3a08FZ2hlM9gTZcVO!OlV6v8y@$5@t)$X%N3qpdDb+WG}05rNNKys`%m?9caXD$ zrOjQu8qr!bY#E}hri`B?$sCWd&aq7iJyV53m$UU_^GL7BuTiuDd zwKtjee2X<=+Scay3@JWCGnloOb{BVX2}2c1#-2codVV`HQN3)|okw2G$l?mvj2N#W zOc6;0*wuQs@SrcYH{kA-oD0lJ*YZi*&RSxt!%x=b4Wy-d(m5m4iqgI0JWA*ERw}V( z#SX!cj){U}^XFb+$C0B^a;uLRzLtPNkXrF1RNQbxP3F+v_7y^M zw6Kt#??)zupeuoMT@6{>CAs}uZ%ACpeGy#2#W1%*>f?^;86LK?GY&$v0c&WS5f;@ zdwh{s=jKZSW-cS9p(8xqBETIiTTlknN-6FEFwx|FsBKQ#e7pkZ?kQj)xY)(*$%W^^ zZL@c9zmmj)qtmdZBpqUiz4s7LXGRrW!Ec-S$4EX*srg<>6MO{2U|95IMaDJ+t)e`q zectXkbJVu=V2+qSNtUX#AmCnodEnb=cGy%tnr9iNByOZb2N};>;^E3(-@f}*N|||e z2xJMir(q7NyG<;MHYq`*r84khkJ}UBQqWyf&!~BaNS%ad(ni70lFCg?6vxdy7};}{ zD~sQ(IGW&-)oN%sj=aF#hu!U|9W2kQjh~D_Kc|+&TySq^iHj+{9M#mRRVg;Ty{~_X zB8;evN=9*q@Y6p2q0?vs)KlYa^OyF)6R}>oGcP`f_Y3e0cBZF1G7u+Aa60sgd|{7f zBFH@i9_bw6yZ=m&C}XE_ahVF1D}pI}t91iMKCVu|mF%<76-az2ML7LKiuOaKO~&2z zkn)d*R~u4RV?QA#IR5D&`#CXja|ZmDm;j(WaMb+e$nzha^_+h=;{oV>b7o}&Txd50 z#7!0|KuB=@NmSg##{xh9nGyO8F>!N^zaYbJ<3wh_Z+BA*iy0^#$_nVFW{9x8UA=Yo2b*=1mU8oDFvkNGE0m1PAXL6mx3#2{+HPL>v!+x~vpZM)}ExWGr z3g9{xAd?-4^#&*=U}OQP#sXxr|5{-DpZ)bin8VE+{N?%eb2NQjy%(4c*UALf0tEmI z!N&3risU!Iw276YjfJ%XgQ=CV_4nTSZ=%TmWB+|?DeHB=0dm#AfN}w;-E2$%^#o|% zK>#xB8;0&TOf|JKw>QwUF=7Cs3BH5*H|zMn>{AH9f2*Ue$;|vhI}99@ssa-U6Yv^2ub?!&i{N4eShaai4LHwyzu4Kn}v6#7ny`x|=Y8{*~PQX~LM z2H;2kDCPt3GXNoe%{%`|)&M`;%oYWbU(-AIChOx*N(LB{KNuMjct$Z(3kM@R;5HU| z4n`tI2G)i~@W7Sr9qf$sEa6?oqm??XCYVq^tkJpzd-VBtj=bcb?i+C&HedO}h}GT@*i**SF!pC<iU3Y{S?-M5DPwf6l~0VnwJgS6r=bDmW- zgXu*+s83`&m7>T&g6Ws<2CHcakzsfp!8KD#GD2Di2RpF$$R%u~x zX_UWBD9mzFaoVDK&**5Z=x74Rs_IN`>NCw|!N{RJUv}L)<+3esZ%w7OTXwO4R%U$) zC5}OmLG9dtkyM>I&t$jR6Sfu=@fEd#6Z^fM(fx?F4mD^}WgD@Q)uoRM-!N{7A|4ABbIP!<$(y#aGvr_^PkgECYH?-6 zfkCn@@X%XR+2(79#@3@dD=(%72dx@zU8#k%=fHEfQ{C=y)xRV*9WJpf3hK_d2%x*jxSt-7%d(=03y+Bhd8SX;q4T1mUub(PH~!rfD9%LU zXF;97Gym^x<&Q^JfpC+m4lI$gZ*`Q;q{b;XH+oyBbe;^ziy6qzk5#P=O;0; zG6a?+JdmXI!);aN^vwYI6!^a@-%DEFSn}A^(BTPiq~nBVlrSYdaEPCjeIDKNe-u#*|kG z*^%q=i3t|p*Y_E?S!D^Ih3FqzajAzqPh{35illi<#Mg^3d>@= z+|%gVcMH>G1PehE73KBS&^WF9UvIyusb|@|1(I|yInsf2@p~;CA-Tg^O~sU3YSdx` zNeqtfArM8gF&=cLUS!E7pL}w!SZrqTQnG!2DYWyjEu7#aYeutn3(biIabN|~N;EO9 z@VI1o-5KXB*L+HQ83FX{%)sbuW9ZG)+mf|Lbx+g19qByWcljsj*m?P83nR%jFmQ+! zlPkPAQ)Xw8X0r)kaEu~c#*+)`2dE-?EHyiiUEgCpQDVe2uhq5@A5+hLWI2yL5GtXZ z_;4+Gu$}ce6XIrfy<;`*TnCzL(MHnEl+M}h z_!2*czon_^xly#HsB?TuJp48p`k?RAd>hfzr8Se(U2U%oDr@b;1it7~V-r$+Bl}zuU;))S%w(7S=Jjz6ffE$3QW`M&`G)&rvx7u)a7D?*kj`b+k<-Q3fJ6ybJhPt3K3wirD0HcDnZHliQL z=(u0dZ*8PntrM*9G|q=#^p{fg(0N|OV|ZN*R7_VnksZ&PQH{B3fX%_-{Cj?K^>ybR zYg?0?ht2T>JvMHSJcfL?9hb8mw^ldhcx@xTI@70*db(UAe=%{(FjgPOE zF|r0HAHC`IxCLU;RwSwF-O6&Y?SpNLX^xOl=H*(@HJ<+Mr}4{#7qNexiEq zd5>dcRj-C~fNiQZqYaL9s5|K6-0sI$?V%j?M;8K#mo27|JkFcaasgYl)wo;RjJsLO zIwz?IDD`iTJ0^m`<|B-kpIog!ZcH5s?97}V=wQJ)U)6r$SPpxYbbhseUgEX5zsfS> zxyW&KIdk!4j}eKrYtC`yj_X{xoRg>MB?>&^Gq3v}--tM?PY@ySt6{`nbnSb&?eO?8 zV2OyVpI_MsE%eiRZ8JXfax7O}zZiV-Y^xTL4iycJRzuB2U#ht1a_tL4JtG+0vUQ&E z#aX18L8OH4{Is!RA#PBpXkYMV#T*uWVd$|mT zsCDR2CQ@9$`DlV7RlrebVZ68G&=vWad+8v^e=+ZBGZmXiMqv9{`yCXI-My>haxbR` zh6g&AXB_pr8z$N=WhVq`Cp`QFvn`pb?y z4Dg7~Nm%(=_5J9g(bS8*s|$gPP~Jn0tBVrZpm!hYS6-kv`2wq^ZrgZ%;pnOY#`Da% zmmlJ|S9CQmDkri~qEVN`e<9woUcyRzF=b89OJir>=^4le#47C!ad;j1nWXI1>MzNu zbkAJ)l!bSMaxfylFM|d>OM@imTitU?W{T@kZYs{L-P!1{VC&o7qz)YtY*JrVGagnP zYPV+l>e#!N;F*cHR4qH?(9z9Tt4lnV;B}OR7p=W)t{y#`GC<$bWkp@3+&Q!NA%$%H zM4`rtR^vd~N2O-(-eB$-*nqmCe5ZTx{bO@6JPUf)0KI+O5asRhM7f>XMq{lrcXw~$ zmG(*)5P__5hv(M;yEPwY9r{hrmiq;G=g0AhCB*UWb$j+eJ>8OC`m3Ity3get&2JQR z+(h_u>#Cb}qUTt;24hoB-?hUGA@H@?%#yuRI3!E0bDV1|&>&`4JXCzjUKXy0qw@7( zxX0-*=Zq!@b(ULY{Y%9VGZLP-m0{#8H@f)PtJe; zB~I2Zi_&rACgZVHT#Yfii6af|hIKcl#aHJN%F1N*3#u8o_d%dQe6j&e9Y`*8%ETJS z`spd7Z~5R-RDX*E@T{a(9*@lT_j?C9rrdaExyf}K1VV3OH>*xFD~c!yz&lhoql-?! zr;Qw6steZSQ$m7&9~hV!oMyJN2tAb^tvKY-dqMIP3<8m0d=|Uvnf82oka#t_Cte3k zZ~FohGh?r-Dk`fF2T>d)!30wttOqTqZh=5Sw)o{{6DY4UgY(B}=!4?QU$1E*v8)xG4tZ3Sd%_1K79Hn5 zD88~n>O^v^VKO-g1%aMPtKd)VX@?TVEedebR?M6Z?=c2Rkb}|7hoj~P6v1E)ufu6a zw4I5K3Gh_gV>jBEx~p9jZO;>T#(FzbnPCR{`t#aYoy&&KnJe2;Yx1{sh}E>YPPL9A zH?IJ)aW8y67e$y|n(V#)cnq-qxoJ&uVnRG0CAjxIUdL;dnE&F-_3jacB6C%iBX>E< zs`9v2^QmO!PAdb&J)LveMMB&G@8x>;~~}f4q}= z9(%P$gLeJ;oECgIB}V0^hQwBA#Nox>&sFm1=C$e^Y5~(dr3Dft)~3re9xmua@&s3?woap_(vd61h2T* zdx|Eh+;h|^*QENl|yFW~7!7s_$G^ZRhjwyskoWK=hA{|G4s$n|bbP4baoXr|g zxz9*pfk5j6?cD2`jBE?Cn`LYG+vnsYs>l;nP+tw_`b+Vk8ABt`deD;JI&v|_psV2j~?oz zoxTte3@Lql2jt(%@Cw0cixA^17?tXe%Y*#A?*RJ(3EYppk{+aECQW=VGTt`)Ht1O< zu5v)~ewNs_=i2@29rfh@}~Gel@t%`$kxYsjsjfs zPJ0E}PdfDnHVd&yMYtecx)AA%DH}I!eGe}*8&HTe%Xno*>ar76UJ|xnk$RS<`Eh=} z9)0;qrUOJl+48Yev{PpOoVFG8lTp)&NqZ>JX#67kg&VsfEE}ESq+89Z`VqFCT}yFj zf>o|M?ZR4`zeX(Hl%4i#yd`%2=T&aGc$gMwXp-2%Lw%h{)uOaH`6nr!?E7fijv&OcoY?affzQEnQ4ofU62T5g8R zdKyolD2>0^3XZ#6ZuIah>>G&L-MK45dVjv1X9j!_BuC8y8+!;+LNSz(G@o z%?yiMAVE!MsAQ?L=s=Nk(xT-tl9QU4npN(EA6J1j6bQ#Rl0g~Xi3Z#B)x)t9yPeGh zJufuMZu0Wac|M*G%Fc6w%k1W1W{%aDy{~sKbGtp0EiHk)6}bATx(fubokMIa_4N*x zYNW`RBhS^jbqaQ=*BU-b-JDkC_7K7mzFvQG zeduQ8V=^5SYT$y*WiW|>0ytfbm z3>PSZ^Zlcyo>-|C{i=I;rw96_an9T|RQ-O{`DTOn7Z6(XOO^X}n56cr8^F|vrbQM0i1W0GFHZU&>s=maOi-Cj8A)rN1l){7 z_}+)(Hn7(9mMf+og70UBo&}+bldZjp@+^i1&3<$pqK#$L(&Vl9Kxy8&jHRQYR{P=0 zlpItujyoGj_sP0YmG03rq_iH^Rw!U&7I^0A;&46#9`-Mv{kTge9A~xeKSGPgJpwif ziG)XvqmnviP+JxJbsJuoA?^eq5IF)NuoeIDA`$!R3{piU!A0S9aoHHDV^?^K4D`_j zCtj>(ZvR8`@g;Z`gcEQ4&Q@HYcj{$kaAdw&jY9rA;M;9YBibxKiI5rp^>zO3^4`GP z=;_Eat6R>gl7j-RkS)GX-<)Wun0#fcgGQ-BFp+B-7^qg`oENz(q+I`DCyj-+&P=t; zDF}Kj1>Y=g?PLO&se)c&?D9hr%EBX@fv{1gx5rmfN(xH92DR_F6PJ6=m$BIGeeLCC zQ7nGNycA%4exBXsvD9fi^8~dmM^q$i19BU*-t}g$VPb}#608VjE<1LzIf^){14|c= zzJIhfU5jTt{P>{Y#O|RoTVd7MixRwr!n#NG^p$B=*h__VXdqowv1%pi(LBw}M+`>G zoh>!y{uiQgtWkqvImk;!VRCXog`c`pYn?B;GN{g-&JGy^+dpfi^S{X2s`oHa=YJWH za#7o&<8E*ge)WMKZ4_yQXZK zj47g=Xo@71&DG3DfZ@(wAC%RBo&NK@S-qk8aFc#=G2JzkbL?QD09Z1lsqLuOR+6 zp8{*d3b zJ{9a2&U~{^$)1{~?S=RD@*j_Wn!i4QNK4%kyIrD)o$ZDgB=k_jPx*5j#! zfd}nJ*=amF3Z2rh>iB=`y=PccTemhGD=H!)(wl+^(yM?7SRf!MJrog;Dumvp1qA6$ zkX}`K=)Dt)^xk_>sw5C;p~Jg^y0^OB=Q-!R?{$5DzV(A#i)6Jq=NRL@?=j|@q!0gc zPHg_h@8AG)$mXm*XYugZrML=T6r{068+3nfiqZmR&~v;0@0uZ`#NDT~ivy!qDHt=d_sOHhI>W(b$#`q?qGCst; zZr3!>no|+4YW!V}(VQah)Oz1I!%5fSM`c-Qd&JAEe0m>m)_s(er?6oH4pyVFfWL#^ zXRSDN{~dg!X=N{%ZTWz%1^#Gof|7G@Z#^>UmmoO_!HY=-;vyU>`%FYqyR3FMzrH<` zIoaQkf8bux^2O4&##RsVd3i^F&^6QJzTxVAzOJ%9D<1i*1)2zcKT@TcHM|4*4mMaJ z1G)41fOpJo<7%~hIKkGg>P!dnW~Wn!Uqvah^)g1}ug`s+5EkAcxcP*3%pjW@4oyU* zJZ4sdBj?YPg;S*MLip4SGoTrv7EFgAdQ~z8BtKbGmMA&IQo7M1U%GLW{-kSZ0q&gJ zM1_Y8>~%|U&FyHo2OMUEjQHjdd#GeKZ^o(W+5HXwc1pqOCM-3{A2p~ZfWtM}1<6up zivSP2Fhtjul@1-w)a{i{CQ6603U0&5>GV=(bce-nQoY8D1kqT0y56MdWkWxq+xV*7r5Np|+LVdDSjpL#gB0&MHQ*pHxFf{y(Y zj$=``JKuNA;NMf!4tnnL5C24z@DKk~AC5K3xZ8kHdO!JLl>DMUjgjw0X)Xcyr^QLV zclWQGe58Ls8IV~oy<0{OGM9MyC&bV|e^T4OiX3!_tU{J;xXOq zc)~|D@~1$civ&`5AP|Qr3oi&%bNR`>ybhp-wfj3>1;9Z^+A%|O+ft*M!iZdG1eg*i z#N!g~53l{^qJH(@(zpl1niQE8H-H&LMqiHSHS&vsA`QSPJ*NCZ?0Z5x1l?`-Js^;9Fd!0d^sKph_BtNn@s`MoLhBP1qws#Rj@DR?ZR7iK^RN!d-c*|^YOr- zrTB+OJ2qB%iXz-#Xg`aors(X_d#G%#nCK1li;#!xe2Z;Q1t1+;`#e}%vz0exUaA&z zYoW&9^%$9XL_ioWZ+kKzTihG}-c7ahdGjqn9A#Jf!C8`OC2N8-_rGfw$#C+)e{z9U zy(FnHx42d@@;Q0i>SvW>O$;J+NsqKCikPb5oy@)h7lMm#KQS0?I!)67a}Q*;cT92o3v3@UR- z3XZr!K-VW9up~gh`6Q9haDw`)4IW>A_p*IqGJw2}r5m77d((I5ioJF1GUfV?V^iv# zS9U!WYznFE^uYrV8QqqUViN-uACOvljyD8t7nQK`7h9`1u?wV`UU0+a@BnP|Ni zP7i^T(b>$t)9jWQ(cCQ@FE{@*;CPDJM*r}WnzAz6)hhQ%0MY)wUCQ|x*86+@hz$(9 zb&&w9ryd@7;H7)Gx-)`9BS@A3!1@~4KX^U!7lKCLOJf!orzgDopN`|MCo2|02$}#8 zBKYe$9kJsWY3}_4Ld=+plG5BU#xXnX`mio{{r(os5&6|#a6X;?(6N+|aRTJ^`cK4O zBcJX$ZLadEn(I0wt!FB>5)K{(a8UohCicH#h)Zw2HA;pxP2D*iF0As9>e2aKmkA02 zD1rI4f4D6hZ#sV>fVMck14)EpSvNXu5@6k*0yvbu-R&ctAB_4Tjh545E>$G~DC8ry zEi|`*wrG4Gz@afdLIk?foS{+X^yTyCvN>K=HQ|!&(blCoB6K&nM)Y~kS=Sr+*od-c zw)c=!>+ZL+fG(cGkp+S7UCHeSdi&wWpFI{KqCZlYiI#hY8c=l}al?UUkqVeT7;Gvz z2y(*$CRg3}^+2fkw%zawV=Zw;%n`L`<0xPi4Iea496x>@>km)qJtDEFkMiL(rR}TBKDK(^rDI~EEm@qg76ILStn9!2Kf{DpR08Ct7X01DS zBP-xIk`rZ^447N};5#i`%rLuhq*3{M&$4*L1aKSyNB%1~7*1Y(wx^o*qFUXkK_@O` zjEs}{{*ZQ^<*9*p;Y7zwC*_mksexkdX*LRG5@@6pz;ax#VNTRqA*Q+Kelcll>h*PX3@eP z_nmyCmy6ob7f1B|MqHy84Q#s>=P=s4`RSfJ^3aQRQVd=GIF2hqR7qJVn0~!K^qG+o zj?ea7LWoDI^%$TW`18>B z^*^Ks{{;X>+&I?DY(IS|BearXE8Vp1EAqyWYGnfU@uF);v7Y8wWu2zJRYGJlMOrYI za`8iz7%B5Nht#6?-7xV!IE(%8QZ2f}JMZ?)Z164^x*Nz4G#cqr+4gn~fLvQg ztu0o^*P=676V#kc^fuRg#S2r468BFWOSP!zv{ym9hiuW={F-fG99{ zmbJsWJ{!{ZjsWEE8jPpND?iZ9>y07O8V(r+tFxC@^yiM><4x0R_!pG_ycvt~kFv6B z=ih66I6>$CfNLymZWk_B(7n^sz6*!(YMQ3QJ$d=mRw3@{;d0>=OSW2_OB5$+nn}ON zCqGZM3Zssf&yM(;S(}e>cZU9A5=P z=Y#(CGH*w- z^+OI*|4Y~<6`l605dsZ0BfBJK*L|sfhb9TWCSih z0l!}T2Fdv^d&W&UY`q2uw|66jR^<=zf&cO!S-0p+fU8f91|A5f_1JZaz zB*y_{en4+ntW|z^Z`apSSXne4ft4TJ?d7mJqu6-mWO`cc=BpDbn#j)z(0MENyL^H+ z2ffIM>^77Y`@R9Y-6w8Tp~>WWBsTZ)t1tJ)Zl5Xfq;hVTJ6`4cRT9P9)x~B!9QA3B zA?Uf|mcynZug(}qI28A&Czd|4e-GE3e97MN!|y!Avl??5`@2c8KVJ><)JnZQD&kAl zhNtNMROwq@!&3oIajes|!Z`C;nigBp9A|we&M52fUD}7(V??hu8K^iE^-Lt5;@!96 zbrUqAHR`FKQ${$>Gj|;vBDM$H8H{MT8G^Q)!{^{A=@$sn6oz}*+}@szZr^`RWa+2 zar4V32iZkI6NZKS8+P6ZD-oHEYm3D>mKp@PrmFg^hsJiowqS>Uu z0daXL>A!ZGuCwfbRIo{@vQqTrfBR9hR6O}0Zje~s#z6%7ahv#BcLAbg+sKUNXf>f^ z?s{2)Jmpr+io)+t^Zn5-X|+7m!X}i~q%)rUb>&}gBTZ6zv5b7ZkDJR1wO#6EF&*+$ zndT9zK)TIlaDT|#zjiFnNeRmWERx>BB>G<-{GkfhFOB|V=d#_c)LC&joP39#;g)h9 zUw9?v=F}E4>ftKHfLkrIxIS0acICXbaGPL%ShuS50@Lz4tF|);)ehsh>}_d1MER9F zVc4mNww6tS_}=d%=(l8_bloM zUqz;)6qMytd##zYhO;590}g5s-VIa$Viu!j%v^_(0jE zpXMH4$qF8}$p&p0E1fq}B&<`{71~qt+Xl-od5o#SBs&!+Cl8cE>e>$vtz^buB7w3) z5`praMcEWCRVloGs|AU5-CVTr5slwnj*y(Q6po?ZG63ri0I!ASJL!AGvXw1$sevUS zTEuqCYg=Y6h1KR!erj(nD*0L2p`#}M&7qwAmj}f&k0M(&Y#xQAazzxqnA=ToTHR;h zRu8(V#pKoT9Ytl)I9e7EY4SEVSQt9v_ZgEy=M-);|mOVx@UO#ASA|hfW-3{$;eEufBryvShBE=Fp=;L+NBn{tNYx{&b!; z7jq?3#Aeol=9ORx(Hqb#hVzlF@42~H2h!pR3Ho?MZzu;TA~B|2et`Q2YHo}6%x=~e zBMu3<+Nv;6cRg7? zPsLOW4y#gOnUCwNyE9o(X{G)sZqE9BHk_RI!p?&{6_zkxX}A^3-S1YVmohuRe1_p| z3z5-#IF!4m z{iOSxXSvwcCr{F@wN4v)oA8OJxkaB@E8firhB+@uE-Bs#!%XDwJJ=$FUjsfRp*-YH zn0lsf&XRJ4G9iv|nE1*O{mnN&6Umi4O3J?c1P9SscjyQBsEED*XJjiW=VPRljF2UA zup*~=bS6^HDK%eH{d`>O;b+0HAO7w?edgjEi8#EJ;r-Jz(SObz{Ev0`TtC&}bNsLB z@Of_Y0|)+TLd$=v4xj6PQ-^QnPq7uZu#ke=mq{yd+3ccwSpDf^OQNX9F)&>|wFSv$C6h0PYBiGPt#WVQq- zeQlnS*;EFU&wtrmZzO}+QGA&Jh<32ZBHyxOg7)nyMojcPzg~yaBu`4eD9EeLjMDlP z2=(4eCP9PW*+FY2hcGB!*nYRaeoJ`nV-vBZ6^)RvG$dnx!R2r$M^FJu=lW1@g;I9m1IR#{LXPoZ;hj&7{qNDX{tM0_Okui*#M1@h^|d+*^60m)fSkW(cU z!X)R%fnp`d?I3y}rQ-Nu{QQQ-d&j9f0Z8_ z#JzTk|0N;+xGU(#x|blhcH?4Y&CPAuMK&bLvk%Oo6k z-km*oW_|0few@AH?7%*p@qy4(nAybXRKEEw0?=s>xcmHIEjXse>_XWg;+Lh|{b5rzIuM=g2l5ktBwh`U=}TMMgIFFeM-DvL=UU@-eL1uvw1P9rL> z)5@nE@}-JSZm-ffA0Rc4P^;nyPVH@0S#}S~eVBnhY?x~sfzC~{Uopy{t% zD=aj!&-zFcsd$L>!M33;_z16=sv0wjPgW?Q-<|1|Z z^h8J*)%-H}at0hq$zyD^fV@Hr0+}nSN~gi!PocMjy4I^YL-K-28yqs>OC{v2B0#iN z;sJwik$Py?QVL?VqaCe&YuW*6`+M9>6B4|cM53ZeDnW{LC0tzO9q=@$&GhZS*I2O_ zhM$Pwtdie(LEY7|H&k81LQ6}+uHmR@DMLQ!&FJxUg{o}*Qz=#uKA;9SC8)%{QJHN4 zLaf29eqRtlmgrx0|smQJFf?wc3b@&c+J1C8cpmyGKcOMQqv^gF^ZddvWF7-k+ZFA62*< zA)FQ}mD<4JWa@+ z6vZcbO-Pj|C#~eGf(IZ_q)MZgT!EsUAYK#ONLUI@1{`5CpFU@;$h%Y`DONGp03W@j zMwfWi-|4yt>h$<0Y>#B(CrSkzVgh4_Glhm6H=sxvepdqx+ zsd{Eda}JN$#dbA#j4%5x=}pmJhaGm0UpHO@j+0?F)=+3xcFl{LLev3!3(%1P)$Ea z9&mbv`hWWZSnAksXNERJa8U^u;=`!gbAqP`{k|$s=Acj0yvCUTa_pB#z<-NQ&e~xy zu*)w^JH{QFRV)u!?_ai-8jG6!%UF=0rx!tl+>%0w7Zf^RkUX>X(2MhO42aFhxz}*= z-2)i#+VLqQiwUgHUt35CvZ)pjPLlyuWKKCECjVwUu7ux{1}XfU`aq;GRCFpTyj zmoBkqPcm3@$RlnU9sETU9=GO7tW+KhRblq_mdK+{2bGc~4fhsbb!;RF zfhsBYNmoOT3j<$wJiQCnzACboBT5X1biwfa$i^ zemC90pjPwNEFiIU!z@2HR)Xd#B=aM1!)=VWpB6o+zGC#Og#_NQiJ-NhdsEK3+ThIMmfHbdEOGhaAlqnaL$B!BYi{FCOz1Nju`ZiQD%d4ANOOMqcf{F zJ39(!M2NNzv(!o^9oba~2~^joD#*sm zkD?m66Iy&I6G#XMw(=bn<~t*$XqlO_fubFK>B;311vVQCVTLjfLSQh0?&%wn@{YcT z_D@DHMkbe!8S>kkoOVsuB zl*=GWJG-29z7EsCs>q9hH#kN^`5e`>5QbZacfM!l0|O z4-;PUa1Wh1WnQQvEwUKiC1kVP|AnDbKplZrxkdY&7}bEaS==%Tzvei1(=)Dg(EEYx zv1MOd%VK9ct1J)O(`WLZ`v>GF4vNc#8m0E`dBboc&r8Lw57yL|=0M?gZu z!5a&)CIIQi$t~>&IZoSD0A3)Ss2o}FI_>S0Q#0eB4g`W2Fxbh1gU7Z&l+?-3ulk;` zLIE~YYq@*BLrh0xhk4rZ_xUjf^Zn zAEH=v=PNS$@`)P7St|BHs=EwkK=Yy^UupGY%`z#-bDdEsec(6`VpsWAzl$Lb}Qbn=V_bb4Wx~E&6lt=BwuY##Ry+3285Qf1B*eN0rrl-hL-osXmGyMj9_9=C z6C>eEyy2ql(xo$`ew!Vn%g{bGk&U`rB_{`Rwduj!R1g8hKo3QkCRB>l-h5=ltM}ot zJiEg8$Qy`qs4b2=lbpmQhwt~+?O?0xnj5AQ<(rd^wLpG7`e?FaI^5fFr0SN{3!peC zj7S+M4&r7&W5z;Alk@l!-j3J#aAJ#n3V8g2hHezE)!a7LHzmtmT7Qc+y@5VImu-PTvK&e`veH5>D%ZL)s+^tT*&b%`oPI` zGLQw}8*e_EXgaP3v@K{>0uz5DH0~a~Wo9^8M7WgSg(w8Vz1>FA={XdM{-e za6Wt;+8}cSR+pKwxmCL9W-Vo)aU#iqGl8B%k8w%57H~mOiazm8;`Ju68+P4U0Hn_y zaVM}ndz1K6PNnA5dEs;T#*-l{^oiCw|}_cd#K{bE^U-_(&#OG1Fd9=bkCwq zfghMd`&Z17Wo9xlEnu%>eOkBa@KR#Morw+UQHJ>h`@0Ni&ArK86NmpX&KUVvmwQ1f zOn*xaQE-hf=b*59=j*RfV`BI7jDTv@YPeB&bQZX!(q=OvBV=!uMBda%fb%;C=zD$@ z{%I2zHy_5g_!HD1BL!!*4mKj@djrja|AaICq6qZ%Z$0Kjci*J}{sY9J4$kX=6Rm}* z%t%(tnhcgO;GZWjpT1;38W%Gww&~)y(vYF~a%D?%ci~0X;p!B>i_7P^%>d&6HrxPa zNXSVUIvo{NtgpSgyN@dAbU9o~rrB?g@S0l*EBC%33gUpQG~_t%e31CW%r0a-psoQk z6@Z+kELEihKWTzMhFb8OSr|rr{XlWf041L;j~0c)4|?Z?#r^|*NS%7CGmE>U#V~y-2ykP%&ZI?Zhl5(w7Tv7q zVZ8kQMKhX{R~!dE3q2`{smjWoD%`4=089u?6*JB2Y3RJt(quXX+uIycUg>(A@pV>* z7F`s9#Ep$@Pv>X*!K0Hj%5 zMXF_IGuLsDx1HYb7T@`^99z!$>3jb_%J|lXm~gpF2dzvvJa5W~HEJsfKpMuc@7EX0 zgF$a>!08KHs8>VF(%v9{-O((@HNh%l%_K=ac|0Q|VSu)fe86~XvjI=W2l&7%%^^T5NTEf)M5?Lry_B9L zr8+Uf`LI6Cx$7e>8VtX0wXUXDd~zU7C%{{tBhH{{gWlvcs82ieAtV68Yw6!l@P+`( zfo!R8>zP;}(Gz9|oo?fmm_C3;|6c$N{pX}bOllNI(NbzL*IQpfyR&Z#0b1ous2VV{ zH}6VfQZj$AFe6;W2k@>Da>j*F4=4J;(hzpVn9b#uhYtW-Jw*;)xM?qUFct5(x9rY^j8HXkqC8j*2t@qRcah zOCkCn>WKXFO`Je+~ z+J{k1R%?ev=&Y$7^yda6wA9KYx@F(jcIf6f{H6flcnz1G4Q`QVM8UiSW$QCt@vt2m zyB}dUS|wKXS?L0r@QUBvodIQv4*jBM*&#l!+ea50H+8;{!OgTwvK9&IaBSjpaV#4AFnJ0 zpb@rq8p3b95)KA;x-_dc+!J=za>uLWNrJJCqP1$fh+XsQEvLC;uk7-+wl3CGU)NK7 zYV`(16zR|c9;X+cbE5FwJ^3$<@QDYl9%RSCQSJx*W)NtsGqray zzq!?Dr0KF!aSFhzoiFFP1pqCdmiDuTty$|h88CZKuYpLFtE;`G;=s0bjSMaQ z6WQ#zJh$uq!iqxa5cQd^#OxW_)qk4IwCsP4%he|)tX){X)9=tWqm%rX!~5{d=d5Jn zgl%?xtiDsl$TN6 zb`W4Z{HO*N#o4h^9;GT+Kyg3?Lf0fgbt0;Sgbu}GoCk7s*ZBt2Xt@|@v83*44=LFR zabiHxllWYmQ?=7Lx6ZEd^lgz8@bZe5Fkt3NDIFbXqyb>oWU^_zMjo|ebXRDv^gHZ@va zYqi$6c&<5+j2!G|Bf~o$`+fn?-VID)8SP5%$ZawST~asvhjOQips-%q-!yk*Kz{{fgD5gED}!vnUQvKZhvhr+!i*@- z;};a`eZxrU2ZJ{5%K=(D=y|!nb|Qp%mN~C6%<27TrkM=&724?dw(lMg;6DweC&yh~_I5BV!JgQ-yZb9N4%E2n}*v18arh zzVe~$A;5TN-!|tV^;oJZIe!i-mWkp53xfgb*V({4khyo+vXNP}#m>H81dtQy^;>YU z)SK&IUTFr-8%e3g;!5|8O&=8{TwYE^m0Ttr18yg15qb)g+cZoBGznLL4=|(TS3Vu( z;nT2hLC`{F%?vb$G3Gf|8W7uNMi1G!;n%sF0FF^$+kigQp79~#z_<@WZ2RLJbQ6Zk-EF?7z&>uAhe2;)i+gu8b3pMTRaB(Y$Zf}t_4~=Am#HlJ z=_An4$MvRO@aj0r89xYcmf0qMQ2WV5Svo5D(_ z_Sno5ErlA3Td{)a4j}AF+A>Szom6UJ8?$Y(eVW&p<*S~*oUfh_76s|c9V@W-a_5i7 zXX?ti?6vFMI`xaWJ`GAM{}%JbzQz2%39%2F=t?8)l_@G>iY}*{43o1 zyno86jX6H*W##%?Wxugrzj#XA$$0s)Ds-cSCZGzs8lN)SF{$+Oh+Ys-hToeTw{HH; zeOFGs*ZKjB?_d8h*#G{#6qXvXRJ$~WDFE_VDBW+&_x{xDbEG%-grG~Tcil4lQ6qq* zer7gXNobH^jdxlk46?NE@ITH#B{(i^r1#0hT9w15^5jKpI7ZNN3TB@Op6Tfh{OU50 zYk?%_%6rkr`6iCX7{~s8wU?)r$y9B=ISy6*zx)QlPhUq_fB#w!i20o^*#;`iHDV3s%&>j!E}$fW%u6}y z0FU%-L!BykX0|8SZ#KGh2B5~7Q*wNl$cw|c>QJ26>>qyRJF}nf;p|y%$%B{c*|ynM zGV(w1iefWwzPpkI%@6XP2U2O79s6jhB8kMOEnjw>nMqIJ_)7P}1>{ao__J zaQJ>C0mc(x5rRi$A3k9&<$U_N$8n6oo;^4>iGTMD%t`>MJ^fvkuhZcERg^!-03!NN z&2UZMgp{hXf!089E<6XWk*HhZmPJHLPS5s1H^QVsS1?OuMyY{q#CC*Dm5vq_^le1k zf8_0|l|Pl3GFb<>%i$N?xBZ1V^8OPBz&Mh|ZEIZDVxe7~SjPFI4+!j4`AHZ<;R7!K z7&YieK4DkFE8ldef|?mST* zlGt(}vQ`uWxZtDmPdvy(g(2YcrOXXB55q6a?7tZt^r+)tB=Z>Pvf^C0~qtPz65xdjM0{1bFiWppJ zb&Q&~A^!(D6oLA3Cf9`l^92zA_z(pI_rQqTtAQ>$4|G<(rukC-)Pu)uKyr@T-2V($ z!@o)Md#W6JfzwP3&9I^5K9b(it!!LcpB#5Yzp7 z2#?_`x;u5$Jp*S!&x7)?>_C_NpOpjuQ+D94!%}t_e(hX2y_I15SitiG{R%8Ka5tg{ z@>QGr@j_qSs)6VPJR=I>wYT$L7qNOZY5F}&DNc&R*ZI$>G$J-jiqfW2)l^MAPpt*Z zi?C%jb7Nfzu@yUwnpGAG(!xi}2+{@5m*Dp*98H0_e1Axn{Nw!XB(W1eDspg{f2qg` zDb74b7F$Bs>!@3>&@ZJW{w*I^9NVP%N7O3|ULgmK3UAyBG|WA{dfpTIRZ^s%?dSkj zJbwl4e^f!6LTIQ+wvBpy&asKn3r?N^oh40A#J2W`3;x#n!xq@gEs5GFHvanhG@u4T zt7PK1cIP0-u2uV3u;)Pm6;ES8VSq}QM4}|D{hVVxkeZ3(*1;>mKmknq+ih@b0=FU8 zhf##g1nBVW1q4L7t6oxcw=MbtREtv`lMMoe8*M({xJK^KZ#ctl`n7=wuD&K_s{UYK zHh=2n1$lEYE_Jw8zlvs@Wt+l)^vIQwVQqp!U`H8}BbTps-Fc{;A+1)d@_^r<1j{uTMFdR86Ci=Ss|0X~5 zXPN=Hn28KW57Pe{X{Z|goW{2&<(0B2=`%-#s2lF)!FSadyj7&dftt(=#X>cW%BqMP zL_cY5xm#a40fL=~GLS=%f+*&;-td`ql(>r&&w@ zv-^V|q3-WbN+uch0r!EDQ0NNZNUVGe8fk6OVW4$-QyA`dDk14mGK6Z{_=g zf7}T}x~cvlcYi_tjavl^e_ufAwKMp7_X(m_&Ivx$_)bN5pmS90llBaJ#|qgWf0|M` z`nQOHz4W+V?ZGo*?A=&Ls-VKLVd#Yo`QU9cgM`c9zmGBnI_M=MZuXd;Ps2q@9ZoUR zz0nx6XTnFHlX+DuHa_npJX5t__Z8&&aP7>k(l$5l31EnPl_kF0i+L^#Io24~%U*lC z0anX~yRwkaC~^NnVB@#cKI#I11EU)MS!~o^_fh+>)O+?)IT4WLyY0w<6-{XO!?uuu zwK$&u)& zdBGrB|2NwZy$_gK#F;HC)vHO@&e%n-a73RECxm;(EgVqHMN9l!-N-w-`MM%6rpLgxO3PN&*0c!^P3;lPY~brT0TT&@Y5*Ej!owZ)Rw zSymAc-gSS=&Q0zA=&nv{tS=&CEhVWpP{Q(^|7hh`2r>%R@o>lRSyGR)z9P-9zK`~A zO~C!s{Iiy|a^RE1W=3#J#bIkAqSSgnJ>qenimC0EuxAr^&1ffV zV=gQ-ST*|y|ES?1FfabS(<~j$&R3eF8N0(dyK(g_&@U~lCM$ZA6#T;VX8{5{ikIfK zY7P{vVOri(f`2dEaUlH(TX@-$VzX%zV1WB}cL1ZauY|ox#hB}Fi6Nm*7yu!^Zhep9)JskG>BJgdyCv(hUv$g5=}?WfLDDhbEXkebao^-vi;>paxDdotsyJ5K zZc2%X7!LO3dAa6P}re2#b7#PL_@?wGUX80`@k2%nYNxQb*4f2iidfPn=n{eMfHg z?EN6{7K@%po#m=C9ZK)u@h0Bhv&`9Wj8Q{q@>y8uaXHYS3z6@p1g|A?#jVoSTSM>( z15_B*$jD9P@C=&~aHkulkNX#JNXEqyXv#EZFgvf#*!3;o5XBaDF;uRjt*Q(X=!s18>tADw=zcsM|TF&c()VVMb?3oA_7yjsrFU9^5wE~i;!W` z9uY+^pOVI5j<6#t%4}bzr0?n@1#_>KJD8Vk(V1Q7m6(v~=~-u(HEt7Xz5asq`1hyP z|I8L$2ea-`C!0}_9vMkF6ckbSa?-ZYx6pDkxcqDO@&1I)(=*I-b&tw+QoEk*bMQ%5 zX`PXgU|E}0)->UX8L%96dBJdXf3}H4cbO#XsAN%*iKwZ#aa(-cd#hWe{Hr7GTEgMh z5$}MInHNds;odyF{Q!wr4(d9?7Bg-x ze|t>v?4eR;m`bhB-hQqdA!g^J9V~<`dL@xE(eEa4Y!Xe1!6%i3wY1LL4mawk3u5o_ zt_(H$osEDSuh8_**Te<%F{xx`z=u?>a0-6n-;41g;xUnd@J{m2r%p-ibp_U*$qLWe zy3k8a!?7fkxv34Ak`_@Qd)l40X~)woRdvQuqBhw<6T*w)rRZ4MrAG0@Jo0i5{hdyV zn+;G-@MU(Yj79ZX7h4EoPGdWbp%R)eEK)d~wS0*K*KY+a8Pkc=qBsk_WI#C#7L*_G_-oDK+9rPyhm+sga;Z;&bQ|x& zdv-~NjlJMvx#Mfr{#9kCaGz$~gCvF*==#n|72Si>hXy=$!q1ZA!MyTv z#|27v;h1RY$->rv>_Cgt_1(nb(70>z5WIuUL{{;`#fwLbtPF~Hqtaz_Kw~kEWL;}m z>E&_O$<$otIm58{&B{d9Ab@GTc6+WUCy$(fJ)q;2FS(^)Qyhx>6}^co_@i;1`lB=fo*E@*voBW2cc z?YrwyvCXTWWF!>6Mk8C$u>uRTn$9~m1Up?a{u3T&i_C8wIWo*mAa*sD>Y2ercTIgW zy}cu8_7)W{m@+CJ?WJ0+bs}7Zc7PYXF;29tbSTG*0BT@m`Db62s2B6I6EMfmZew*S zz0@CX=TEZ<+P3OF8C>W?FzF@8u<_qdkO4Yo*U8syW^-o)t<@^*l5icp4>&>HT6No= zxZ~$E2x~gjlNuSh0!z$g@GZ)QL&q~9Mu3LUlQw3rqZ|6}uN*r?s&&L|O`c6RLDDaL zP4riJeqjTK#bh^&%@6LP(;#_qU}eaRhD}7qv$RdcBB4&34_7WIIR?YePNb;kQ)K7B z+TFUovxWQze7QhUuy_Z4{?G}UWPs#^ zQ64>w!oOM=D}m;mADrJiMi9nMa07p=%@A~uBDxp=pY{FEF_x%WC$#ASObQ55&N}|E zNEP#58GDHrQhesRb$RZlHO3r|kybLoz`J6{a)L?(I4I6M`KuJ^i_Axwfd_P&+v8@f z%X4!>sfy;tEobnUkII^0>lnx7A%z_42lwj>{TXQXI>ykf2;m~a%8NhdMfk7hU5oSC z-DlL<+Ht-Oj2HNA)r5pyL6_6Gz88_k3P(hLy)FHBtoCpFt`Ap^a7Itm^88^!sld+@ zO0ny`9WOBT-&=LCtP%&T z-^9hi4XncX&x5}$X!YaZzZZ++ynT(E1eNFA(*}g!9_BWvqaQdt|}| z>|h`LzgX=J_!Y38)x&E)FLrwS`0PI}{C%A&E?}XmZ_B>@d6Mi;3rvkxk&Xq<6mL2s z>dcr=87U=+K4Q6Z>-N23lG9>-+sOtO9u^y@sf=0PC>uMmwkkv-`2m;+ZtSYj+^rEJ9Y1HL;8-t%1v5M0u+O5#-(!k_uh(keP(ns z<>P#LLcQ0QcPG%ohGlQ$NwY|h&N&jX-aJZvHmf-`-gA;?FB~FoTsVBjN=N3Tn*Bi$ z$D{!Xc!*Ldw^)%_l-@1(Q&)<`_pjoJjTG9HRTb&k?98l9AraMkrW4FVegR@E1q(~~ z{7Kc1iMg)c$bRI60{qDv|mPPy8j#pPby3WL_sE!BM zl^P0PyX#Sr!ICTR;go%cXu!c2eRjdNE7Q9;o_3-`l_n<6hV#=+`Ej6EVbji`cD3et zA;H~w?<+=Zy&~NR#KS?jx&-9-tCFDJpv3=19mxh8%fdbTQ4b1LiIxWN&q7iO< z75jA*xwz4;_-E9bxH8!3s{}|lhdI~ZE%y+ZNWrdtr73mt@OoQevZz@n5ey!kaI1QJ zmIB5vi#zGVQY0E2bX!86Agc51G$L=XRuhxi%3Q5&^AO&^)anXOr5kgTyH|9?GV$bz z#Gw0J6Nj(NMDp~0@{O)n6RF9eT3=VaHn|jP#ShQE0vUH-voTyH^S37E4N<>kNBUZt z;0$uWK5NgxI-eukLDQpPA%lHy0uj&JTz( zYt1SqeOP$J{Wk4J68U-LJ?Z z`>+jA5m7-Aq$vslLLeb@h>C)WfC4JL_ZA>PsELArAVoxai3)-sy`vQALV$?$-U+?; z`rkp%J>Gln{qFhwzVG>-zt1^jCbMT|&z`;3df#_VX5oU?S4O?(bT(?nTr_s84L+Ua zdSLmDMzwS4xs-c0Wr%dn8^g1@34b(5w}#zs1x-ARgZxaf*iy$|dzPQdPC*-Pj< zxQFnU2g@HA-E?ZsG)r>amL;E^77N(Db8-$nNBO~Jio3g%C=;dGd!_u7RKJpRYAvO1 zaDMS))%4bY{w`FY8E>2Y``c%d(oZ@BVkEoZw_L(SC@J}m5B8r4;SnudvY{{1;7&Vt z_)r%EeSVag&**NI;pv0;+>NS-(P+X4eLqG&hO0spE}8ayYP*uOQo@d$%<>vEPv6tG zGaU$FCh~S144QmZwR`c{;r3*{A63R0Sstp(UYiapPE0XR-D55jl{}73*F#Gf@l3B- zIH2sghi$?yvgCIwisZW%!1D$)C%$f}Qx(9O742N#I6GSweE<5A!{^wpPcDrc?Xl<= zZlg}*Yeg*d@cr%e6lhR<@LhE4V2XHrO_x34So#?WU)ksU z6BmZg6M1a(<=v8^7bUJGW;%(EI|*l_%nbBQPQ#G${+QP2&tiH5%ErlIa`t)Kg;9?> zlLnHAGT>RlcMVHE-4zi`s%$S3?$nmNe4r}aVjfca#py`d8wzWwv-NNn$23N_#y8?o ziirb98KT;w!MnZ?Bhw9XV(-P-0`xVZ&+%m)1}~0#roAunK6`gCdXS6ijBdcK%V9V8 zb2w~gavRZ>wQjXOHG0m%v#OemWfv3m&{_I#E-p2<#~oHsSUSz%KsZk&WcV@Ulf8Hl zjc)gR5*x$%kDa&VGI@D!)D)E6xkmcR{;+#&?7T$|u*dDMG}+a5+^1bLwN5)m2kTDL z>TdIK%!OXJP4O0Svc2Oq`-omf^a=MRdMS#;($9|_mzQ!c9lv7tv=+&{o~QEAmh0Mh zNcbL)6vjxL@04w)^|Dk(=|l0p3Fw*>}GKiw~_beE6h#R$$(UK(neD?Z$X5qx^)p6G*?go*=q7^a<8 z7GK#Yy=?#Ph-oM-czEk39Z{U6SL~&GQJPhl)#kJ8DPtWXhG(c+SV>FNe7z#}z0U*A zZJni=HI~eW8nANZqlbU+&3zqIdjej9sYiE*!H)iu>bJ&;pL@ekrwn^n7cTy0_mq)( zjO6KdU2z(rG54VXhcln}RFK6-%thnYmjV`KF2YomUm1)Md7cV~-6`j1gW9e+p0Xhu z{!V;1*0j$1=<3kr2rQxIS?4H`Sdn!cZdcUwB=H__1CQ=)>nc~rDHm2H^Ih}j?wUxJJ)9x4`E*c?EvM``nPRfKY^pG^P5XyN;#%-h zZ=jZKOUJq!3UTm}MsvDQ;O*uH3uJ!RDbBljukK!pzn94N^x zaNO^ucmHi&(4WxdU+RMHmv{f4)&+&!u(CpeN~7wmf_y*g#tZV1%91LA^`GT*1^Iqr ztAB=0zXQJiS{<7NE%`t}b45^NlvQ0o5XK7w6@mr%gn0$wf}l`5AFmLoYAOijX;z4`p`+cukeT1l{fo@N1ff5<%-<+s?WR~OU%_{(n8-aA&In!c z8}?T}P5bP@hsT8%dB5|x=hx$|#=Wk=erT*@ z>CFR=t9RlYezXS}VJ64ok6$)@PjlqBKC5wqNyy1l9Z$cy$B5qKz1QEJLl@=Ix1?BJ zAxeLR&&;LqeQ<2p6|N!KuGua#!@R4Wka&TQ0q9wLybvqZws^(qT6dGhapk(NPV?G}z_i-x-1_KpuC%f5i}x>}9$j8n&vHGiY=OPIvPPg`y%hh7i~sl!8{?6FpC4KZ zhd*cKeMI?hii&CxCLhT@q(eNq?&ro{@nCtXd2W(hKT3Y8*Ae{4RVZw%I2$(p{;{W! z!7d%)9s!rH(2BZ9-!{P>+*&9b_^ZDc$rhw8-yM{pV@_`u-_tq^%`j!rk;J5FMg|4`38JQMC4CnO`KH%{QL8o%IH9p>PD`g>HI# z2Y71@`Nqxz+N3r+w(AUsr)iIKJx=0Gf^XSVT}XN7Hodjuwz05QB?R7f3)Ji{7z{pfCU&$Qul(^v$dp+}t$-48Q19x9J>bo;vfA4qXI_@Il`^e_75M+4%#$Eu|N;pLFzID6-I+AD2kI(c5(jn!^)FD;mn95CCz?l&8Jf z!^JG*n$Pv)M!s1`swlSio>5qXFH5Q(S8Xb7RLDYDs-8PfCgiOQ|#7~*oV zimG>t4^qze`9nvMU+MJihbK8DV*)3uSY6tRXrsaw!irT+Rt{--JK2QL&bDT_*zbOR z^3K13l6vW$NC4*NL9TRa_d&$#@!B89IeeYyv7NGw?hV?Bc9OSWbZsl1n40qDu2M3c zN_$Rq(R`s_($&d%D`$6mduC>3gHYNZySE9gcTR0j6s))$G6JVI_i0!hF1KyUK#`TD zpE+=9hwI%oe(~;*y~H=((-Pq&fpcQ_YIiBEk;V4+hc#rsNp-KQ;)Mh_r z3`cr}+TWh-YWe1oXOq^T;gz?Lou?yWdV$z=+}`8@!c_n0;KxU^vjtDhLvXpT2I4KF z&Ds2!IT7akLw8@=EMHZ8`>tyJd)%GT7Pe6hyy^0t4b`ZtOzmE_X$>}{74`BYnYzNf zH%)A##+Gs`Bi+KydT+rB2hX8c=lE#zQRyKyuq9<-{8O|!e<10|J_-_wjk&huRF=cW zmXj`nW#El$2bGv46ftdM(efq!D9gbG*iEPAn?XVbtzY(d$$h@p8kp95-b|ID8?Ea0RCzd=W@ zD%`MoYWSx5b;aAIk34Iut6Qn=^_OSgd3xQLOJb}0p%+?1$36IwM}S&1po=xJtB(F7 z+*jK2o#}UBGpRSD)mQMSEFO8DG>d$#ts8uVjp9$lD7SK1j_$AjQJJQ_=P~$VE^BL4QpMVD(Zn< z(zF=jll7)My7N8av3DM}s=t=5lZtecegBP8t1UUxXNIabc@jBS=vVgiV%J%HqsHhd zG_SPuvF+NcOE;b9MZ$b;b(-YHTxlYg@2fX>%LhH1)IKk6Q*d6Mj_b5q#9eZqJJE-H zm3`_H?woOZc}Dk5{w=8U^X$RMB}GTv0=w3A8&_cqs(4*u_q2unMortTQg}9X_KRI= zHQb^kvw^h1asQ_BdvL)qSBVV8A4elT3>@R|Y-51z*b1qagqmKa8Khz9mAG}d^}1dD zE^R5VkiwFuU$SLpOn;nAc%5Nte zshm?53a2;oia2&Qvyuq#<_OxmV~GM^T24jJeC?#X68~CB`tm82uewmDf}^K2&r@E1 zy{PjxBJv_7VuUhUYjWfp``W^&CnM3ueY?>nu*87}vB8HPRWVpDVLUCu zozUMgb)G2;Wu9THfji(QBfiI?nY>*p)OSv+_|Dg^vUxqb67LATch2XLh!X2jvZr~K zZfR#tt_`RAy+^t(T*fPMzp)+cBUZ9&KGdMixpjO(Bc4f_6DOard_DX8Y0a@^5f0kO zhn%lxZ*tkm1y6P>9&VtHkF`0TaL>UKbF`p!A;A2&cuYc`yL^ic*)bi8*Ou~pk#UI^ zg##JyH>{WVowk$D(TdS|Mt1W>qyA&-G%e|RRh=QJ%CBg0+g&$Ii+hGY7Z;uHLCF(j z!MQatHjgv2%uZajOzO=J&nG(!p^a+ox#`?b;Atsn9XNc+l=$Mg$JsM9=SNFU|Ifj8&^4@6X|~FGomTCPBG8Xtk&PvD?eePB=s%-b$9rw4zwY|-piLS z^9Lk8Lf#~We;Cg0jV@n3doKCLYh5qem$w5)3wlF4;+H1R{t(neMCU1|;J8jSwvQbP zd(x46QA1D2^V)pwQ@*zzWGy#;tjuQW$Xwd}bg_-XZ?N{RSoOuE6PD!Enel_i562Xo zAJk!8=#oB8eg!7MdE)X*wuZ_B=sJqlJi08uvt33)hGeh1v*b6dPs$J9Q)N@0M9N=h zi~NL&a_8h!nlQ1-&L0y@yV~`kBE##Id!I~P4_Cd-BdK9cl%=y$*U_kt-Je-Z)8vuI z9TaOZn@24JDa}l>KKk9w3fF11V7P|!@#aq&^Zu^Af%oF@w>Bg&xhB`&J73yd|C|B! zF?|4J)Px$8AIg1wv#g@5^idk^y-0n?bX-^F%<7XHJjw3~U*ZyUou9?6=-%X3bN0SE zrPpxwzUuU?;kytlgYCMt79+!_jzZIXrcIMRPJ&WQj)LW!t4%yYt^(_TJr4p+hkE zYk`M^buuPpnXAe;j0-~gn(+Sh^DB0u6XcOqFJ5rx`9{wNd`AroKesudk;I#P_jUQy zV=x@oQ5R=&Vxw(7KY9>999C7Ef9pyLk#0vp`?U!b?VOR%_vDazHmifs%nz`e#x;kIW@Zk=`Y||OVjL;DU#2TsJj9HhX*nd^QQL{73kl$)RgoWAGyX8wzZ>`@;Lm^ihRqb#b@9(xCt92+v&)R zFAjLk67H@mc^$5}u+gmdK1u5?szOuc$Hm9F;1N&xhy{QRd9@H_qgjlKW2_1WW_7I#_aiB$;CCRr}WS#>%HjQANu&rxv~y=KRK*@QI7&d@(5~6 z_!+#Eo$pI+WPUJRCVO&jI`r+vLj%@nhk3?G$eZcF&5fDmS6LrQMKxv{@Tuos8(1I( z$m`h;t{;U(euZUU$?jDk_!oCzaD5gaZ-V9*cyW#L)@!OuQ^$ksJl3%XS{C^{auw^o zJY+e%u2%X@1A$j79alt5Wl!nPqf}_t$qup#xL>2Z@!Fqt>fWp6jU!*PwQ1&Atw;2) zT!qpYs2=m>J)(+}8@OYX&;IJhfuO=Ov=PU$QjXlFb59|#KRr)02{&4NaDdkE)LR|4 zZ&{}SCX?CtyGBIfKoBavJnCArn35A$^F7EZ*nHVDkul+X>v_nRoT$S4xk~P`Qa_tJo18K6YM+0cw8aj8qaW2YM)#?gD&u)Z`2DCuTn zaBo951;qx|wY+bww({neeP{ChnS71t`E1&}-n^GRU2K=58v8QpEi=1y%PdvXk2QJP zltBtC#|2NG$$BUTlwGYm9?uv1xK>%4B1}qO<=zfDR~Sdxt2MIPr9v3VAqW(J<3idh zWk2`3iFPl(Ykg0a?9YGlOqt1@#P@Ei9^F3Vf-crBc#{`T{l1!f_*_!>vcx>`gil&3 z8?)F0%Spl1q)zE|O8d;P7Ut!Tt;KP4tN}Xq?><{qg6CqF!%`Ck#?L;Si89d7x93%c zy_{u}mwP9C=B41<@GPyD0|FZ?<_~+T(&YDscZNSYA$G`l&eLB0D-YgxH2)v*U_nuE zwEv5E@E>W7zsZC5J<=aT@&AGc?>jNlafG3Q|DeJ9k?9XE`ZL<>hb9>3!Q`AmLcK3)NkWmlAuUl5Yh7zY zTZoA+TG!MRVgaNpM~D^Dz!1)BVrOZ=xgUG~NQ?-AhZX-sY$T~=AHw}zorZ+O{+K}j zx-(P|+yeoS^aIaR3JXL3l0k&RNNDXp?JX?A3l-sK6@UY%^KTxcgaWDMzwQi$1EuZX zDMbI8HT|cH76IBHcnpAF2+qqV4F5~Ff1=ety8UnEC6Ma`J%|1TpUURi>Ol-hPpDcYT-7UC)0{!KTP~*ufGn z@3HMx0R6y_cV_%+O=F{<*X3vTSZ=)d7W8%NsV|Q>@;Dh@c|-Mq^m*Iy_wq{-;5Fjr z(1TP{s^p$^E+0Gj$)}DSa(Qr!dFFsfR6-ZVtp0*f-~~!__fXQ)#3boyzVTNoaJ3;+ zFWv@_IQPQ%?JSJ4|8Y9){0A#S$~pR}r>Op%`u z4e3KA5$m~n0s#YlJ9XtRHu}o11gjKuGo$r%izT#ITt0>KKFJfYHQ>w4S@AaW5gROU>jn)Y!Fg)emBm@0CAA+MX%exA!Yw$XFt8xzml^3N%7C5>}RU}e@e>!Ot}j3 z|8Ai_Py4?jS^|HEXc-{wNILo7PPxK~`+?k*&Pep`$!E+y|lCRv+Ol%W8<}OMu^?b zz4e@9h~1FS56TzJH%}|>t_0xr7Izo>w}p4ROLt2#8|~N~{N5&E)pVI7jN$XQ>e7B( zzkofq1lxvi-~FDjMug1Drq!eq1HbG#Gm12YIgVqoy50e5UiTJo6W{xC&?eiedq>e9 zb2m0ldd?R%hMpY7jX&U8ndQ2$hw;WVw=iw)f(D|uqHwbhk_XvrCLZiWoMbX);HttV zNVzoky<0HeVe5IYv@dwPNr+Bmm!Qy1vy5&cj4H51P@k*JeHO z3#u-~?MrrOq9d{EN*6AFmi>y@#!FRWt6r=vrN6FAPtrh4u5h1QK<=*M z%yxupUhhsIcXtpwfqR=vtvn2$x0_jZi3kboR!!;F+TLv7-g+W-y`p~)LFnJ9=-<8A z<{Y-SOO4(BvNnf9>4{Rr$@Al7lO7qPprx8015loZ@<3wA9ysi50v zeL>3kK!1w<2e;v1#|u>&H2pa~^UWg8?$-~`oM#W1KUnI~6g(Hx6bxBs((u8F#lb#l zFT8gfcJYl93FFktbG(UdoEH-6;^zI59sc$F9%7J4GKYmOs4YMriK zcp^|!1lx?;)EcgAqeth-ujGgN6v}s{7N{BP=XkmpFEX~&IAb?%sSBe|(gYJ93>x!^ zN_EmV+}M$*aoP2}3hoASCjf+n< zjz6!RdFUX$6eLu#agup*OD6ky~WN!3^~y!b>k_nY(^5*FSNaVhR~L-zKPHn zG#)}~xE(XTkd^O9oN_@}EHv`Oc8jwwXrKbON}O^1TU;}#GdGFws&om=(uPxIgODhJ zdCs*t{l{?3+}%C+L}}u1ALCl|5Q}7>ekFnJR5}fv&3id7QqSmyOoy&IU=MGf$n!dk z5u*s$Dl8HVn9qedzrkfYc{P4;8+$ZpZ0*^aKE@&%r_?NGe4WFuk=wGT=vIk>=?jfu zKJ2H6AHiK_(iQY*X#%~2baztp<(x8;?=6cF-_(cwVx7z8bZk{x*Xo^~FVS*5`P^7V z&{-aj)QFI5%gJ83wLYN{fGko`c-mhUt<=DgTED?Fsb5PIm#ra&;vL~3xErlUhr8Ap z`{K$>LWztiyN~V4O@av;ouaKZksNt>8QHl>foCljLyd1=@FRD^dnz>M7L7W2`LJQt z!AFQSvSq%Yy}PY%EUC?GVYtal?VzQx$LAJCp&lXr&0~Un z&2agfN9uj%k+O3oO$l3lbtAW!r;D06we9*`=|(&oqqe_}hlLfm_6Hk-KORe!uILdK z-u^Y6%`1BuP`5YO0$1eoiI>|I1A$}Q)-z?}Va6(*T>&vo>;&r#=A&^klDeb8tCL}K z&-mIs%*IDubcVmJslms6M;N7}ipm=2bnNOlQhID%l8iKyR(ctIWEC#p?Hsm_mwIq7 zWGx*t24-;jNo*lD^03Wlp+B1_#}LK#N$Ehd=8z57);MmI#(LzC(1K{@GHn1E>RM|| z*^kHL5RDhI7uK$42fDa!w7?&9iFiig_U6e-Jtn?jE`KR#kC>QK1%u^=z&DQU)r+Ys zbVZ1Nl;m|)OWd?qi`uMmBlt15R)#diMP7aA-x?N-iWhaXp%w^cX)T+&B{fV*mF!`C zg2(&G7C&!JkqtuGtlU0`yR~F0%d6Vc@u|ATCZv(cFZPEdi$t=`=kID7n}zKWB57uw zbt5O6Q~l&ylcKg}J`@H- zZKcvTBx?(;sl&RIOUY$2SB_-D!)3%(Dl$qSUJqF{Na`6flx! za|suzP(Tx@n`0`eYY6@ft`;*%CyvoriD!d0OULr(W~?u)eQ>bMaoO@#3dDBjls;m1 zC3x3nk1?LBe)4JB(hsxoJY?c!QCZ#c?Y@C({ir4gk`+S{r`o4uD1hhaSvOOCR!tb- zt4igWwy>;ebkZv^Up$dNMd@ecm?N{v5cidxLuCv^|_oaNj4Ga*e7L^jkd$h$B})oAk)0;N=1FJyUq z`@Z;43!Lggxtt~}PHETJaLR99tV6V-a+1ydUPV+jFlSdq7Wl^U$uSjU&;ByTHI&(K z8RLrxeK+~N>XAv5j{t@u_!HsE*}&n*^Ab3`0CNiitY*hC+`s7ns>gZO&r1zGR`6(Z zVS}MW5F-j}=P$?&!kE2^&}iNFsV`Eq`MZ2K&lZm1$q*h*Zw(nJR>%@cOdR{y!K_kr zkf!#FeT^OyQ$MqPl2<7j_2d%pW@8yk@XQsK`R0gBuLM~JupcfxrYV{b(}bI9G#o_p zZK68qcSPn~lGiyX{=D7)!Z6LbD2dA_>y)b8tLEs$s z>gR}Jyb^xc1`XT-h#fusdc6@-f?OQy!LWNAyOsB?^ns1aXv(fcc660juX1GMGJyy; zr(8gaOdgvi*h6u!Xb^T=VwxCRw6|!^$6Q2Ou$%#lr#iZZ8r#l^Cfc%)?qkE8P7c#r zWAqvbRgJ3`YQU^%asqofebipPz!yoqg2xh{H8carE2% z-kkEKjZ+tpqD;sx=Ph$2OQLYQ*S6)?y%W3DwSh&mz)@=n4ZN%mDX@LH#~i>kD zz!y0h3^rLb*cdNf!!i1<2&F0YY=%%wMuwUTV90}wohGjHG%E&H^Q2+;wc1_>0TYna z?h{tVV)U^_UEy8vhTJTxnGC4ek!MfXITpWi2U9o=T$g~x$uT<`HYSN%zZHyV3Z1H^ zYmX|j0?QSZ(PB=$*DaxON?K^cG%2TEYgLr~)Cn>5#7$WVD5|)2j;#6{pZz`AI0kTc z*l{ow(Iif_u~vX)GDkFx1JXDbpK}M(IAw>3gt{slG`7_j1_!Ev_XEhJf(!f@(!{QC zHUjS%k(j!uJcQ=!8cDh|YzQOXi8V7cKRPcKj=Ic}3+)<-yEJvAKALUgqo-!#NZe!T zL|0`yOZO&ruuvqu zfB+7H_3hbKBLNVzHQ3X(EuZ1aIHF0`J!(8;7~`MHG403f6#q@-D;OxJ$72PHA|OI; zM1L!$8|zaaK|PlCa1B^zs&{%r@bNocKO!S3119;CMUkNX-ugC&X+L?;_WU~=(IVA# zcYxsD5bpNmH;l;j85!Eub;nm+@DC109nn^bHrFb-!qmogvhCD>amI?tmq+snW7Q_F zkazozP=SuJ^Ak*gYbwf}(b(T#(ij8);^o7S6 z=JV904*HlyaqcBeucm8z*?em=m-a|4MdlU}J}w3HJ78O!YAlBhRuD|d*vg&G`rM0z z;MZ`Wl7s?#FaJU$-9~g}ahD(SMs!H+J8^}@9eU}&vCcD+{q?!YBA+}rW>UUEt{`)~ zYooS*=uFh)N7V+3E9zN&w~!DG{2)&nxaUYA(0k6o)|ajiZT(---Ag;o=k$tBjb38$ zCYVUhBc5ma`Yfnyj2pv>9@rL}Ofxh&$n*LMI=y>N6pEA6G8rwhHpj{@paSDmnK=ss zzM6!}bZz_u^39NqkChD6;h9f6-R{oAI^2B3fTc!kAb|^omzW}F)`l2HyYX_L9eGy)}v)guJW@O=EVwUE@vAR*f_WaLF&>V*3H3i zijasvD92EHWukC%f=$Fwh@&U2EagimT^+d5?Uh27&~3W}a>E8yL$g<%k#WLJ>|Y53 zCq4zfyAMp}12CD=HxYPfoD7Cj39U0J8!Dp){KlOKes^$F?nHdnZv-GCl1{Bt6vT~` zU8ppl`cfwU$`!mez$zP`$|l+L529j+oP2>zb1P|QZ9hsV2`6y!##lCB_0wn2Mc{oF zj>gOQC_{_~eo>z-HqY^s%nT7*)4p09oUlmm}pfh?EXS^U$*sEUwpP<^$ori z**zzH0es?uooAy-umZjX4hFUvYTp1ZHRrxRj0E@?>k@tX8xwOqV^U{;?==Z#!Ed+)Pqnug~!^xnCtz>bP1m=h)cIrG^wRI+ohSLCppgKAu0Zjw2 zCkJ2&TquAM;G~9Tq4W)lrV+V}Ms{_HB!`p}GF3VL28(ZjX4_ZC6p~ktW{e#G>}jt9 zOlsRI_(|z(*WNml&>Hm!^YhZ#+gdg=9!=LupM=wRXts~60mro6R|f|Db6;5-Jz!q? z#&&gcVA!3CLTXX^?PB1wi8C-C+AjvCk*&uETxQ5U@QdGgRSmEK%x_WbP`5w}M8 zum1vub&*)?aD8H}190zPS{8?hKo&8cnc)$rch33H9Yrdxw0G7qL(8(U)`rV?nse=C z)oF&n<*FO^bVj!JN3-WO9>!1z#bkwK@@c_vBxDU4B3Apg8|domrpBdMUTcxeUe0;_ zeQ0hVC&v^UwYKWBYG{UATa74KlyZARhTJ~kPzvI!gZ3MmYB!Jm#(H|QI~g_r&yK=m ziufZ(VU$xG4JM%kjfka7IMt7dM$35hb7SWl#>4V8)^ql`C(qY89bkrrBF&XEkxla{ z3$TJ~JzXD5{b<0B`5Iu_MtDY2Dj5eCjn<97L0)UoKwVDTRWxpBOWM_HYXdN%ao^)L zOq{Lu;#*OcT84bmZc&15ShVw@0>{Lw0DZ&Fh-#mYS@id4r86@ec2) zlV#Y|`tdhUG=N?DV%nZZxC9klBE0z)ncycbR(^lyhqBQK{ppz6L~-2)8@(yuT@*Sx zolk=K$-MCuI7C++Lq>`(p|xA2nNtc3el8!xz=dRUe^*U=D)-bIo0{efUrN4}K5C~8 zCxjWRN9fmPQ-un)p9~+aOMC=AO7Kclp+@Z|I~V}s3{dKE26r$o7R&@x$w)4krA2LZ zBQjbqjp5;%Y$NH9rD65c5X!@hmgP#7kXk1( zZBATW?D1+0S_d=9>9L<{d!4wDG_xNOW;YhWxA+9}*kj{zEPAYyZ1Eus=M9YLFpj>m ztw;DYVgPX7kuZ{p`~c&xtrkJ#`a1pwEgGTUq7dj0NHq8k445o8(T5U84_rsgP}{iy zG#?@BRiGNMQ+bTTGm)?DjV7UJ(Ig14STWM@Bm#q)%K^g^BX8zQqTY7*Ei6g2gO~|C zNz7yEDA$&{k;jsC1TDTeIn0DX&k-f<_n-^l)MvmwOc2Qr-qg#>E64`^WvVh7z3~aA zj?%ZQ)24dNveAHNOc3rzZ*U`A%1F*LWMj6%B)C)!%z!7{fO3$I+V5)g9M{;Aa21=I zWzP&I&aRnZi4qu!lOEu5o^S`NJ0%D62Y_W|N?2dhV$e7d77n1xDELU_nXQMjve?JA z^>hF#UYqFp1~;g)3e!#VS8upyDLH8|#jO~H9_l<9!={0jx9$|Fm_$Y)rZoluE^YE7 zU#z!jqK=Cgj%U zQ{BkDl5d0{zBpCz5x@rw#6-89$>}0OtQ_2jiwL%x_~UUnO5MCzFqTQ$P0kGJgo6l= zs9074>Y=%gnSbbQE5-p7@#rUQKf`+Z$J!q`$ATTZI-Q3qf7BwSjU<&yM)h_)Lj46X z;8yAj7Xntx zzlP<32Vmqq>0^@Tz|C3N(bIe$3YS4dmEV_q)VyPH9ME#GbD-H~-G~x==l!|xRF2u7 zlcgIFtJ)~A!9j)juxelu1IiP&cul2));3Cet~sK5L!8%Azvzs!i}~jpG~9{r*kC3MA^OF_@3K zrNAo|$3cu?ODV}=Xz2vh%2PinFlgzhI+3J-Mzqva7Rmy_ksUel99L$eXB*CyV%)@t z4$S9K55RW2cE=$?Vro%}%!)DRcR0%kI%`*~qI<(KvbXF39uejj9i~EfG|{K~gm~ZI z)y=6A&D;zrWFFYM02x6Tt<(GEg*%X@!pifQ+IO)QrO+<-O~s~D^6T{X({6g=d`fKu zo*x4JIJMYlICO982*M+kryRry=j1t>{xNr@m&5c$t$oAg4Gj#UJCg_(gY4UpWM+Hd}W9r znbks|QQIr@s*OiSO-SQ_zM;*U|{U>ak6}w)n8E2L$15@=mdx{04S2P znXrv?p%lkQeO+_xMzed7&L*JWQLabL3&r9RLxJLk&4N0QNIlMr1u{Y*^N7^B#x^Gq zB<7u8$$DWebU zHS*|j3Hw+PK0jl%yM9Nz+10W8&4snVtm|9et#-)eC$V7o~RFxj}RW>AXuo zmKlG8xJxIhn^PN{QT+wRFrsj7bw@k)@Ka+47F7&;UCiEFhX*fcN~hJ0!M0LIT>eugrruR;l2UIoD)G3a)GxoC@E!!FX9b(LHNPvQ`q(#tTL;O6ib6lc z5kV8FNcSOwp!eZxnqkZEEi7QNqk3U8ofi3%iw+qIHe2a{&;1H!*mQy&io}|Jmu%(uLjpxd9QaL_$(C zkzkW1;m`DVtf%!e|E>%Hc6VBA{64dQgAVqF@hpNtETjEx_SUCu4MRPWCeRH+u7HEe z`M`L?`xj6RZ&p7ea>~Y=&Oh5Z6w~x}0jQYY9iO=!iAlYfR*!iWKdR~jHq?exALS0_ z_CE~*lexy%lBW>t@OaC4UF)+;F_!g3pJH`?tTWxm2=HF5uZe6*$oyJ2BB%c>gd|K# zOtPV}jb<+{?r{f8ZD8B>(7;yqfUWEqL#~5l&0acy^!r~&fv-m%?Ba5FV&)*-+NRgO zI`0CLoAxvECsQHx)5ku+dhJ8QGcnWk4h0(pOh?_#)w2I;of+i{F*c2S%lG z?1lmge9i$RVVWeVq@$|oJX#@RnhhY+_rAl!l<{G>Hat#g_=O&lJnqKu3!qBd+~SNj zKX1tZ$&f5v63IK`*9)zM5VcSly#tz_(0KU*h-mGp&gb*6fY*GknQw%{nsZ|Q0GwMS~WN<|`ppR0Kc_!HCA zHgGW|LGZnpRM_qv%vAAyAZ1%3cP_a%q!~QJ-D2f9rxS1mn`;{{r*C^Hy=rrN6)q26 z27AAMH2v|a%?Dgpyt=gBOmT#Be0N=STU^P5Kmc75hl*dtG_fhl46jz3rCYDxA=rOyXk;UN$<#Nuv9CWENJ_@vKNckGDr`!iEBV!_-S zSNn=PfRONzJD6qT<2@=Us^Oc=LP=HQh@7M^d?O~^r#4Fb?3|Xs6LU#`YTNTjD?pKP zN)Bndrcm{T4qRWXFB;+iWb(6f>eIltC3_~ZWr_K~w`2CB9BI@OH^)UU%_(a_M#7S( z$o$ARuC&cWX|mZN7_aT5Q7+zTwLb_{p*uy0On}ZHYMl)68=u)pxiHZ$=f1I}-p7mt z0d)HZm|nVCs;o(;v&arUC@VX;%`qrfZogpW;7Pzp2=| z7TiB4uzWA&*<7>_9nk9{66olojS*Gmp^;aT@p7wJwhb>QnP%hYN(^ia@j+zvn z>Jy8TvEMdG(UlIIT(6_ka40FQSCOiisAO1g99L%27UAvLee9;t*546X(b$Fs7S_5D z(v%|F*tOocCe(;@k95A1;*V^m@mZOVA${+>-beyn5k1KP+2keJxm93ROuIt19eDTc z)9FB4JsPAe@ty-bBpR3)F~E*MR^C*XyEfOu$*pLAoq0KFnuLlH(m1hXGo zJd+YUM-qC;)w4IJR^}I}-C~NwD{9xv854y!-eAY426gS~5FlD@c$Ww=O9yUOko?ME ze8Sg!fO+$C$-rnaZ#)bB{1#`%kY8Y@NLLRsNqa>iq2al+Gsf@yD=I;Q1|LI8M9W0ezY-rv7oR2>XtoL3!#4 zyLa*mx4K6M{Ej`=P~hWi`h6?iMNaAr=mt29MxqW_w!Xa#UcBC`4H8mYlwZh`X0_Ag zGVHx#QVU55XP`brHWz5f=rqQRN%OX!4kxtt9G%m(b7?=_fm3y0r;emnjfnm_as$N% z6ygT|6pNV2xG6G=m>T2;Q;)z@;-}XaL%HiN56^oeenYcv$IY z5-TA1%)|DRg$GJwAm);PY)sUfaU(*jxEDZb92~EzYpb!HRtAvS@)ic3hEC!6{K;WU zOMk$tTLHoc60%(#keQ8~xccCo5mPr}eb;2mh4g87^zRjEXTe0?Bm!>(B06vwKzFt> z3*L|Dz`Zvrupp~%sEvgeCC$`$u7pK&NOW(~(cqqGYX3l-Oo`@IgZJ{Kg#1cS9m!C+Q88&)? zrD#f^flqvKZ7JVZ>li_PEP9AE@8yB6g|Boq9&K=>GcXpwM=dng#}PFz z_mOo14yr@S$O(d`sd78^ZqIdYA z+NcJy8EBRU(s3mV4m<8m*ZK>x?4?QChpusvf6>s48X!qin+~KTB51*5UOxwQ4v_h* zi3g}wsxQqP8}c5`G7l>-ZF{{_@4^)v z+a5$+tvYspyQi?+o=5|L{Q9NXDj^&G-22_sf+s2SS8aTS_-mY}xva0xnM&|5lWp1!G7%0b-MN5~O}EB9#NsjHzSVk{|pTjK@@ng)ld7 zN*hysri2JW$|fVo?h%rRjjr;kVsWLRF$5ooB%*?#W2@dA_EIu<;YFeRf@syowxYw> zl5F1wP>jqhztk0FLni1?N31Q|k41-Oz=)ZQV!^>FQ@)u#dA^2y4ej(28$IDJ1+kQw z{OwL8TJ{M7)b{aOQ@s`7WdTd4kwvT-gl}cU?tKUR&C714e&ui+M+_+wl?1xG7}^4v zB^c#=D1tf3ni9A0`TI!gx_i&*aX;XgBJm z356HAS<#cYzzphTXE^G(x_U>UX>;CSy-Ov?(VG%aOu-hAV|D%H>-5tEgoBmS_dH_# zmx_AVxg5FA3ozlY#K63y9lS~N4*0$OB<2e=(!O-m%^(ImgkY%?+X*21a5G7wOOga+ zZMD8Hpwy%Jhjfj^9FnoIGK69~Btm?OxdiGaGSyh;hZ6wNOIMh)dzeuI!;NXsIGFhJrlN*EJUJDlP%@0{q|$gB)-ZczqM>G= z*S4aX5+Y0ZQ0&hBCc|iuGS@&PPp~ns6)fk=%;i!%-H@R4-@#DSh~*o*nXI<}e9ZDF z&IkQ}NP81-sQ3SE{B%0iDWPvF$$Cyjl8~LjDJLphB}ta4#E@mO#TdpZm1L`AXC^61 zwz6lCh-@=NCWe_9X6(ZZ##o=%_XgGb^U9`VQRJ6_4;AN@*WvoyVs{sdlNvv@=G?XlPt; zoQWh)7e?TW#maa(dm)r1{X$jKrv#(Vt00+SFQcBdx8n@|(XAU7^4k+muX_*#)_{Zx zj+L;ceHgTgX|pT3gYhmS#RSP~z+#R76<}j`iZqC!2IoEKp zce7J`hsvFy7*ztElLC0*sqrRGrTu|iIP#)C%`A~Kr;y| zRb`y8;CsOoRv0Ae_|57+<_@N98Al6_J95?@gD5 z^pFkTO=-2+1g8)5R#%bRppW+K3$!e8-%xcCcf7G)bKGx@AT`)kys)lu0h~}iV_E)& zP;-LqF#+mgLPB#IaR>SEs6$Q#08*8{-!_{3-VDxBVxjW5!lyR%ZF*UzYY-YWzbi5| z99L*=li>osrA;?qFhaR5LE*b!mQM>?fv27H}NWZjl8y5Ie{dL;9&*`_NpunT4}8|b$k00XmF_%JjI1gKNFW#-nl~hy5Ib7-Azz_* zdw%-R(v~cXT8VrI1(RZ&(T&W#b=&|o$`?a$z|-G*E;Sd5{i4A@q_0F|aJD3Th&PbL~s1s7W#6icfWTzV5U@!x4xEeqC=5 zKTBDqWV{vUTqAB%zJ+mdC6_X$0%;_d#}qVn{3-vC(;%wIs1}~ov8->Y0uBfF*D;EE z3OYbBnIm9!7+>}R=IS7H<>2A=%h~deF->+@hX7YAf2i8xd?~mEE0Wlk5T2}gjhtFO z1ncx@LNC{S#8%lR0J}MYu_ZCd8Gg@ERI%OMcdewElHaEJOO^%q0ub9c^!4#ai8oLS z=gUoBqG&!nppY`YyMdrEhETY%o)-mjMp$`VlptYvJR6%kVKTBLGl&KQzlQXO%kuLTf=15z@Qv z5hZZvY!)a=j8=~OWaTv28;cV<<hQVGKjkKN70jP;s6MRxOME&0A~ zJ_Y3S;Cc0LseK<s zBvjuV4=E{=Fxzb8_%f#9X+&255I)5Iv5#B*+FOffMM@Wrrh>bsKnznR@TBw#fUgDA zr-oYJ@W>Ba8dL;Ysl5M|=db_dV^XjsgUB zD(!cpaKSwCD_E0AjMk+!e018i@l^a+wOVa!>$;$m;o}dWpjyc-qfc475=sDLr_4o0 zFh9&_PBsZvgc~V*Xzvbk`W!QVJT_&9L^O6ENZ$F`4@Zp z{$8lUo!}qRixWi1^~>FT?^;hRH|T>(#=JS1l|PWO`tt&{R-Jur!XZb8W#;t2;Aci? ze}y{B(#hpIbMBB*F}q4Vc-STgeH8^p)X5oG~7v1!fuA-`j* zsUE+p!`^-wUn6E>)sw4fNN+EZ_eRBPx=$7CQasM$?}ySen!^#zV6ig1>7r5ZmZ)GS z(LT=pys4cdImrfbO}@5nZJN|01?_wz@Xg@JBu)GZ_cJbvuK_cs!M<1rG;H(O1lyt$ zU}#qRF);vyATTa^-%TmM{=21@IXgERx^m=@K75)8m(SU+!2 zJPoccC7?>(YesLZ2oyzi-nJilqE~$QJDTRLZ`AY|K6*pgUrf*J!5ysX;~Mu}PH)4_ z(3opwtPE0CyPK7?gxA&O52dVX&naGMr_-uS-p$w&qhO+!tS`~;Ph8!U-;KCHQb}$0 z0xHhbt{|i`yTqX~`z!K&7_pdSYkzq(h&9t*Os#($!Bi`_9H*yXsK5(Ckpf!nR|`b_ zv8$8a)U>@SUS7Xoznj^M7L{3*$Px(6@TG!7Tv|4RsYoiNkes6;m`{V69NcOiRnJrl z)3ff#*soBT)SBHY5P%(`tu3ThaTfmz1Z9neSu5_ z2k3pNLMlwOn0LyAXyf(=LHd_77VncI6Sm#bZd<$%SJS7{Azu$F(wBUNI>E4MnTNa3 z)ZXJa*+1=mz{ESGp3>Mo(MM8Yn5s8KjDzPsd0UtxuZRH7^Z`#fV$-3qiBc5%VigBUVP3^tfwUH?FDA8ee#!)$wHc07MgQ+gzt4` zEmgpb#X>W6uT$jse5&RdnKjpA?v~b41{|)ov$;AZo*+A`@dY?+8YQTTdvQ_kQ=Aj?~BRq&LtTT3NuqZLvyn0yQjZ#id2J1AJyqu z)`Aw(>Br2dTp)onfUIaKLWU`&c~IhKIoBQH)zLiIQJ!G4`no2q(+<4G4&RZD$*&#P zy93pOZ#^WCR_?f)*jtF1t-E-|OMSSS7~1UtonX0 zg8f+rSn~|aGh^~uU4?&HXxLN#VD`fUCwL9t+R}?4DAIT(25S2sHUbg*RZYc0-LQfS zR1L-)LU8DQLmw9u)nyCB?5W@^=-db6^9S%d&Gt!nU0A)b@&=Wk^mA$N>#owR3oJ7Q z54loA$!wSIGWWGQ{3$PUCA$Lo??35~+BA>F?b+Xz(z-`M6bvU|g3bAaD3b8X^lS^s zOZ?&8rn_T2i_IRbV>+wT$Qp+@ewGua}$4Vm59CT?k6jc$wm7qx+nwj*W{)tfH1Urk};y3S7fst263uiUYGFRM&- z@4}Wq<`vFvfeCo~!WL7nr$;A+MEY`Ve-!uX?h?4P4;7F-={%CcY!P?M#1-gdUM|Nb z>vjgyd z5=qwOeV?lW^ax_elI_4dKNMY@GPmfSs=0)-x+HPLiS^c0CE=X3hWJnbs$`7zS>Im| zq-cYWWI$yDsC|aOy}lGl%~$_KzJ^D=_IX0NlM2FL2iRp8FV0P=XPtEZvygh9pWiO^ zNW9|9ckxDj*NLZE(*a(%PaY~RijOHyWtgqB1m~K19vUtCPHokTP^`*2!;mjb(eR7a z@XiHd1Jkje4mLa19tEQV_L$XI5*hz~X+L0}Z*J)?I(PM)U#d=*ydbiMsBQfZLj{wZ zMmuofGL97zp0_JI*}8*XX{S(|k}*uD+ONPDb!lIC))-YS)w#1oPtk;xtRF1 z%}`U`M?ZWn35{cKp}U5C_?&u}3)8`k$kdE+EpaE7ozT-X(GL}k=zOcz_qhh`5nXnI z-?@Kk&Oi#v=ceSh>K1)x30L6L+bp$ba=8d+I@5RBLSj$h1y61wF)mwu^;@!s%hH=! z3Xty3#|uy253T(UTSyNY9h?f?Vy)BJg)8K-WmWUAkudO&JF~K_yR?y)Wh>G3E4WvR znM3mt%)f}!=|4aCJ>-)1T7p%tpMURrAyv<4QZpv?1a-exsu@qu1cdM7_7YwPlECck zO*gfm3W}3u?F@F)JhfDc+UGV4_wn0|Pb|~-n(yL(`xO`(A#yHs)&L#>1+aWQXzI_l zP*c5)!a6s_=n7((~NG3yO7wL)=J$WSxSt<-J%um){zU1eNdTBZ3^Yd1{fnx85fC)XZk z3=~2hpY`&bSa;)S5}m7eR-IA=cG=OVba2yNf!KspxUzFXGz&Mb>D%E4UQM#k0lcRfV`6YN6-fnA>HXQ>;g|D&Y6Y>zhZMKvBQAXU?BYbBgmlV>W z!7=}ZI=|-*GM03*)qe+jZY(`JNFG;5{`o5bCJb%ENF@cY{yio4-xOW$=x?+*X%@S~ zV~f72&J;{KH|CX=E4D!+2nRo_cwWuOkE zDS=7A<1q*V$*8t*o8yp>0%mNb0?^F90LN4KwXYWJmf&M;=RAhuJIxlP^BNWOM)uk+ z90&+y>Ms1ghnCQ_Ag)8}#R^}H3zWhB7VLoiO$yz58U7qhmb<*V*Q90_h&P(T59zIa zU-+Q%X?7v{Mw32j=&j%Rav=|KeSp){1hOn{pUKpnC`>LN- z2C6TO=-N&ENU8a1^&$2>Abj3sLj`#<=WZSvG--ZYq>_hpxVJ>Ye2hSE7Et=bD}LBq z!M7x`vZr%NsJCANsF$4!mC6ND9sJpd1h77JF7RtY>{fRS?;}~KhcE$RRVtw7)t*@W z=mVX+ZT^Y(VoFehy`#5%sx+F4AE@y%T5Du21c2{Gri>gpJWQn_!Yu81Kg!M)P8}?r zlw2?4mx%@k&hN}{P{((I)H!>K9VK;?2FznDxvSCYFP zpfJ{Pnxum7-ogxi>?a5GY`?B@e;-AWreozZ*YrW1a`OvD7{9!WTPg6` zFsou%_Z~JT1PKUOsX*{(&bkQp5V0mYQV$IEY&N=P!hK!C*i@2G@BvJ7dW9d=`wBk5 zA8|IOObIN99@esG4-Wxt%fU$N$J_7EU>Uq$3i1>FMA=gdA|lz(g{C_{(o+M{&4Mb$ z&6(*CVi`74ed(n2(FC4Nfc!e4_05MwxFwCO5ATRcx$3&>4yg&H&jA1j^p{P)R&UB> zk%o)T*~=MeLOkm6c$q7DJJVAc>J)2QqbS$iWG%_UJ0j zz4mtXy+F=te|T7|PI(n_&_hQ*-jCn-mmrBz=7g%2HYlh*BOW(E8||vRB5)M`#~iq= zAe#AV?Sv)#02is54z$gN^SO6lHf{_BX*F74-wxce(3zI64nU_sn18(I_MI{&*uH^e ziQ3qqu(Ze{W#v0?dO0@+Tsy1`HGx5eR1gdN(G4m!=ig}~`+k-ed)OiFn4l^Io+>I# zC}BbcE~>iE1uq=;!J##fduh=Dcvs3X;Qqi!Yi>Bwes4k?*n4f~3>0|!((>B^k+kT* zHvu&QxwkzCeL%`F4H!`%ID6p&w7L47Alzu%r-Zbmod)_&FMKf-2$RLBwktM9qT0A^ z5sLUoB(!9d=GPp4hKnn{S&mS4f{c1%71gb&bJZAsCG?eL%0Zv`r+qg;wSd^oA~ZT+ zD4t&+xv*k0l5xXpEtga9UW+~wl*S&Pts1$%IKX+*h_H7iBXw!`&bpbOqV9gpva3CKj|*7@Gh<03_Tjl8Y~uq)#;Rvb4|C0T zL0t{{J=l^qW0LGpq>L4(R|_d1tOqGUirws1CDG^sFeWA0Cx6UlMSs8YxnbDBiNv;6 zhY`0oxLajBHHG!0TT+l#2yEET7RdKb9oa6P-8k0ithvNjRZXSNSE@pq!_j#X3|jRG zKvcsGR)A#lCB6a&*GWEo7Ze`ktAdnHx!R`XuQ0jc;sWEhD97Xy)AC@{heVZ?uMB1L z_HWPfTJ&4>1epeX-71jy;>Ga=dlN<%nBa}~<=DK$7dA8xSJwiYi6KEYU(fVup{(M8 zq&G-ce9Xc1#^qK$7_7BvNFe70$qHKh@)Qipu7gt}II@8K1Q=5*a7hS$0|)ga7K26$ z00Cu(;=EnH?%RIvKl#M&H%L{}G0niK7Ei}FLt4$h+gOrWfsZQxd6-#rE3}L-Dqk9A zqRIq*Y<*82;%^TTXbXte*29f1S8-Q+i+7bAEB%1Vgo(8mvgKCn;qaYuKw=*lre9{( zD6c0vcz_=YHbAR2D^LN|pesn$uHytf)j|JStddb$D zlbaI|+u70+U;v9xfIL-z6F_I0t{u9d|C8F+-2{Jy)ZlLM@q1C z@*EbazXCT9zOtEpa6;f@O31ekjqZ7i`=Y8wd4<^6DkCsP9V8c>V4cSQ;TNU_0Vt%J zH>=MWegJ<7>Iwj@oy532b$Z~xFGC70!}|j%;D+y!^(XO~V6XyblmnR~O3cZF$yfF= zFkzxf+-gXg0RwI7$l()=EwKHtphEnfXn`+86dG(Xh_m|pfvr-4l!IcpzGD;S_z~G4 zRBsa4#aqole8NNmFj;>Rx}Ie9wLqvSAh)(=yERUPxGq z+5>#TrDEWFVZXMOWN4GSi44I79S(y2I&nePj*`iev!U6!f_vHTB-ltdtj0}|kYxAN z@gP`N(8E#0X6KufUoktOQA1}!-=wcgF0ZMu)vknI&v@9|Bn)cE0q76?zOPxo+tBoT zzF!~luWoyd-7`xXj?i*@q98Hb zxHl0u9t-kmd|n$rK|!%wF8RRCJD`^AEL&53zhs%;$-Q-y{V%9(%wC#wPs+r3zk@_m z=$snb7om-6e5LNZjQpX0jTzER&GR$>a@87{9DV{4I3R{g2(iq}PVPKNu-@IvOOW<%NtUXWVK zotZ9z7Q`Bao7bsGw!X4?yS2XmEv4l={pBmyZ;T;A^BSc0JOo;2OqD=i*k+v zdjP#d>{v#dW(r8xA5Q2#wH-9L0T^T&^fpE)B zkQf*Q*N|H*q)y0sb{T`FKqHjp{iqD3+sG@ix#Q`A$*JNKi=;3GaTgOKlG_>{aC|p8 z_8-ih`?qFWda?}VC$>X|h7r$8ot%BXJwI9qtfrcQBg?HTcjP3y0WlUI16v8&7FF_= zSpWey9ZX+{ZN{a^fdK*X=-gH%upv6-3H779o?u|j z{7~|A>vwNFe`W+NwF;RlU_bG}uU~VOIlB<-%u||f3lOS8US}b|><`X|_S|{I!I#B^ zvo9S6Q`&KB&6VmD$w^f5rA29of!|{q@1-oi%GNqczA|bqOATC?Azyflu+213dCjqW zM+!0R<1H<4t-8gH^xuSru{~}Wv4$N|SPCVqH<$1!9lc~n#T!O}hoiU+hTeU>kbNd% zxL*4uJlWu35j^sMnzCG!{r)J~X0#1&5z50fp6b|hWkfV)_CadI z;@E025=p< z^(c7w!&p{`9C_dGOPIGD#HK|~wHc1hQBQ?uwy*>FhFg~_e1_y)RkS8ih0@4GQDVqC z%=aNbKi8~(1u(d^UEFbH0ky!Is0cDr*X?#VPhT#aXlEb&_F=4#w-~tAsGG=q^r+lm zj9$T)wCZ97k(WCeUTn;W-KLD{^3~B<66O}WdP>ifCe%v}DqLDj_YI}`gN905W`!8} z#bQOV)3aqp)eEfMpJ-G(Z^5r0`=e_QIwVX&_8oyRF|wR{Yc?UB)kqQ~P}$?=tOG|@ zElwIm*y1mA{KtY`AgJ|MxQA%K{S91_SKL{9M!VlmJ%zqQ0{0+h?6 zdF^w*QEA9^XANyHA=4|NC?q7&K|e@}?94k5>Z76wk4{+{s<{Q)Lk4EMGW!iYmO^Tu zw^ujsR)*^ro2*_oT~}p=lQ)Sb`lRe%xQ))Y#9tDD&Fn57=tsy~{sn@1G zyA#MTNeU-5W}pcIxdA$4Hc@|sBJO0zaW*5YUZ}H9#2WxNn}9Wf#s(%=VnJlHSCuTO?TTC(_8{!yU$#8>*un~i0*NF?YKf+(Up8CE#(Qc8J z_!(H>adGar>N2y0SQE@9>V66kBp7!8E}-i`*m=KOpr}K>)4N*A>IfB@8CCObzR-8< zcsqnZ9K&F!5%89zfn(S$KJKGLQc9Vb8r|Np8pee*zkmUja#I5>ibz-o=@T*1{9?4hiip&qSig8 zew9$cdQnTH#jnw%m$(boB{q}8(s~(;J*HM?0eJvAbbzdYBFJXbM~eB;xWYymDO}1z zW!G{|yBld-JfJC>1W)R^jg{%^tU=~mu!xZ6Z4VE^IH9IXmVm7C!gSEamtPuQ3~X~V z<3UCv~p0kfZa)?m-WQC$61xj{br2J2#d z$sSBD3UzJTQZ{faoonR6oRhhw9?CzXi;=ZJ%}HTUb0Ng`vCyu*kC6IVT)jXOu8jgvz~vJk z468*2PpJTeto+%E)plkr6=<@;D?pR&rET+K5(#i$ zAx3u|`Fpvsrw}ny1rK)0;r*R9vB$I+VR9{_7KVepLh7QffLI!#;Wb@>4f~bgDJ%zP z?88$$Y-H-Og!bX{GR`g&J7=i;67X&b5G{c9$6(q*UhiRxZyfI%Q#vo`o6c%9(c_{s zSA9wPd9I4uEa}|$JqxE=-V;1?IyS$zykocDIcn?7ShA$dDQQRNi1>D~#=e(HMbf_# z58!`NXT3YgZ=I?4w`wTp|EWRJ?LBhcobJ~30zG=q?U7`U3VurL*Tu+jEbC2;Q|!Xl zEah*aGgCofS%J&Hh5iVL&MFP|+{tkJyKcryvayp{cKwJSwW!pqH}hm`iuYE7KGkx! zEd-TVH?!x{+l9)~$6}ux|Ik%5a+3GY7JHdF3s$?liH4M9?#+p_0SZ-m(Nmw6YI3xa z+&o#Q=nJvmsQV@kQ18yqTjt-_9&T4mwZHP-y~7rJQlmlmshCzC(o?aMmlpa*W8&`6 zD!+GYsYbfJzu)lmowIR~eDuDV->+h&b$5T7l(3?2@#aQ()9^=I(zXi!vF~ro-{`T* zr~`&Y^YxEDY!1=aayf8(SgTuIOZULBqD>7yhTYy2U5k$o_<4D_P7BvHXt9x7SN7Xq4B)yJKX^Z4+moTZw=of!5}CV@WfyzErZbKE``%!P~Vl@F4rQb$( z4Y|Ytde55hy6W(Sa_|9-DcO|5(^AGS1f>o=4eDcDf6TZPP`-v@9G#Jo&?GhOsjcye zOZF!(klYN$R_91=P0hw|6pBotb^6Mj79Eld!3DIgiHCHVF*qpe9x@vqUQ_yqTGuFW zoDR0t7Evq%OWdVXMD+|UnW^0h=<0TD0Y=l_o1r;PRAk9yc4b@out)Zb{&m$nWyHy7Gh3q)logyK!TXbe&p}(Lc&iH@2P?o68~W z8Pr+ArtPz(r$ip`s_`MAp>QqRt+r_RWq9-`&3aVnTFk0`X%2U-?}6eBXO_FqmNdov zi`S*wMl$Yaq$AsNzfk#+Gxg`zx~zUx(>FTsoklWt=Dd(7`>JBS1hy$_Qz^Lmc0vpR zi?HM=AALBIiR$uLD8bd=t3D)TdH!YPDj9b~YrhN?1o-_V^Z%J1D3 z-=IpQp7_pV=+{r0nVqj9B)0SRJw9p`or>LjI^nR%4-K8#PFFklFtIP6?xtQ{UH6EI zex9$Lxhie%{CP_l!_#WQOQ!6*Cy<=Ix4NkzjHW%j1*wcZXvQ~jgPuY!mtuXll z$0pR=oy|X}JH};HtkYjF!(G=FJ~kiGOL|dv`(~d-RhE@e>exJD@&n?!kSTAzTK(|$ThVe_ zSe%b>KIEHrz;TEIf-02h9lLJz@$D!jBTwG#G>tF$bgw;0iX6ta_Bk_VQ=HPFShXt* z@vvoREsNjQ2$9h6QitZsq3%C6krhe2mvEwyUB*K?6k|{8j$sfY9{U*x3Y-0w0qMT! zAyAG2KOY^!Q!Rt(rc1H#>FpwQ^%fNB%=lG`%9bwE`%{0R&v3?OwEde=nG+ZZW@J7)5l=#K~0=Qb5V@Gf>Uel0gqXVB&#!5 z$D7}s(l3rVWoAHuL1S1rb{&mk#U8GVJ#?Yk_JY|b+2I`~cy$lAe6y5QAu%S!VDxUt z-qmbP{qnpM+c*FD?d%XYBQ8EZC;OrI(bK#j?{T5TmyBL~+zC3~%2?92jOzDhH0;Ya z{M3~4XxM5Ny)3#lTjl|6W^Zfnl9$=XNw)3GCS)Y|1jIkqZ)=^v)dqx@Ux}r#N6fg< z6RA^dv!DV35g&4xG*9(auDUx_t~{3O5U1Rk>mZss0mJYELihr~xmBk5dQFneR)vU} z{pBN1Ru#%$KOGj6@v*3?Z!AzHUFx|5?tNG4{0~zrzoOZDlP&`5tya55py*WX+Zd73)H`RA=`NXGb8eyk$QJaL8h#QT zm|QxMcC2V;^-pDyZz7I^hec@9OQ$&XmEp)4&TVPm#(Up7#6z0u1|5-?aJLsbWXmfj zr`<;5hHuXDi|V^WGpi=H6T*HPf2>pJTbxKuGPo=fDnZFi_E;nB;;(cBNwHY;pPje?* zqy&;Phtvw%s>)k6roL|?5Qqq3Cv9ebEnH-S%3=T~Lq~V?MTZsXS7qrvA9Z$qGf?vJ z{heHI3a1D^ElxjI&}ZBbJ!~nW*WqvD`>B4h^KSOL6S$ct;UXF?jN}g5@ew;W z@l+fIHn%mPhH$G>gL--XwBg8_TCQ@n80vZ>j@#joBch+KU27X5N5USm^d985G&N&~ zhNWZ}tHa7Z98q$;+0a~+h{@{k$e=hw9nm;ZSE%npF2;u_cvrd~A5XtL65({)#oGoq z^He9ksNOk*K&<~Rez`OvXLVS~$Hn{m3IpSZommcwR`PqtG{#mfHETQAd7+csB?+m& z=&_i*m;7qIZf-mm8}PeQ+O0~IqfzCUWI|;nnH$C!W|&-#LYhENp1D+g7)B*p}IC zo9geev`u@8e}p=%o9rE#)KFbLFNCHY=j~V7h7KHxE}scu=$*e)ma&+iqkF%p;=}7{ z-}Z`cCyNOo@+97MxJ~xsN|fQZ#wa6 z-zfe~AofSbhXqByvwEwL!ER`VYHez^-Kh0({qZ(I8&ts?!{GJs3)Q}}t~ZD``)Goe zXn{4RhlR5nBy2yHud3%%531F?c2`MV7?(*Dek4m4t=TR6ZB9Q`%HK-wjXE8#or4d- zMr-?^(NKttit=~RW~Qg|BbCAmjXFzgdAaoyXEhi|9-cr{u&j-MTfxy2vk>{nlX60R zZmq8-?Tqtr8JT}IZ5%;K`AC;ay90fsZ#qC;rWRKkx;$SVzdT>n6r`(5Da6(f1}Ne= zGhgN-SW2}b)AL8uaiSZ0ABD?vf~+j#LbiiM!P7}hp;RNskJ zJ)xyR2P?QAF$ireR))kDj++hjEimQb>nE-t=8~olM^N5nS37+-U~J=k+(Qa7R;T%+ z7g3hjdS_xrKR#>RCx@F|{UANC-7TffOw?dEI+D9*4X*$%{)U2^>oK&&a5qJh8!|t| zuUl>|jNtaqlZhGW`UO}g1eIu zB5!FpsAgzoxI2g5Iaf7pV0u_qgFou@?67ehRFg7|_7GQ5UM^p-bJYtOwBj`?^?)A5 z9iCXIzPZSOsVqKm^flC z>(Rc9L_o;ZDh^g_2D{0R3u<$q~ zU)+@1@}T+H`|M(*t8?)g-duxHzrhkMF=9)z@islneTM?4jI@6=94#>@?5W9QENo_V z92+}O+vpM(Q+mX+NV=~h_Ca|0v&^ZSiMxK4r!p3 zkOpc$_Gy>IxK`hkG^BjeWV<4@wZqHZ3RXumDM?+)xVG+zD6iYRAEj4A7IQjFLl4X| zJxjLRVs#tU7w^TzlN-c|X0>#VNbK&_&s6Bq(zM-$-{vXoa_<>VjCcjM0eNuw=a#kc zDA&~yyw71lJ=MH!-c~I}h>Rys#Ld(-XDV_}iUfJid05t66M5UNxW8?0=|PMsLow5% zk7_d0L0WD$*ydtp!;+DN1?so8HbgKNM40z22eymGcHe0)f0gYZQYQ9$`(nsyr;Jqj zT2S=FItPQn%HZk-V02$Om+mq>h*>-b9(NUN_1bd2-SI+ls{$c1uwrbJtO7eyd+`i$ z{R4$pOYh^lD-??I$eJ?b92ww@v4)yHE;IweJ=UO-4@Z$F7<0sA7!;UJhr{KyV_4@j z^Tx8mr}XZrTXqbeXUbN5@EX2`H^D}o7`CSw*bbE_AsVT$7p)*M$bfGi^2uYUr3izy zpayl!b%&QX@Y5f{*!3zGhoz;D^QY7bJl{TZq(`zF_%c-qf7ldy)D$|&I%6G=tS#wj z<=3hdw)igI`CG57vt-&88P>Qog|6*bOMHK3+1|KIOZ&XadKLQYo9(}5PZcgk6*~sI z zUzD2N%nt2=pQk^562h}sC?^^3z%6m6l=YOQ;ig$^ml z`W`GSl*O}Qo>KO4DRmuE_d(lQ5Ys~rO;2fB7)>ur3PzM#OQ(&Ig|46?N{HU3!T6j0 zhoC9+!*GF5?=NedIi!skE>7Sdl0_W!F%*ZPsSRaDRG8MSXbLjGSoHh7iG=xoB0Ubk zLnb0b(Qi7@5eXv!AS8w|LX;56_j31CFW>ImucY%q;9jZp^&(Gj75y zI6wWzxz^fR($3%BD%97C3C?KCjOl0oC27lSr+W1HoiA&r+Rq}0P<~}7Z6S@unaT82 zqQqr88cSRxS1^|%`kX3p8jS0C&|Sv@;f(-ZwY(~8upb)Ug%2YGfK-2OG{5^}ut*EB zgFUK03qUT*Gm2$ByJ8C0dzi%Ao{Feidilh@wzDw-lUeQ7N2NdoO)&a;zwH*azbb(7 zAtQ`o=pQiCLk$kjzcmd+%uI zP~w->QW~@IVymFp2diqA?+X@_vwC#{z5@;?$?3t2^oxneSwb#U>0cENBT( zU3Kh(u3D(Joz=0zaX~f@otlR1BIAvNYJ6Qr=WkVah~|U=xXXaL5E;a90g{RY$b<|C zei0oPkBp4B3X-YWjas?nQZs6*v1&ijJVw7!8x_)`rwb@&Q3qoom|7g1U7v-!7dj78 z>Z@awrv&BOg)fBYMggEF1}5iO>lPRcLTWy9hk~^LQdW$tFRWl8wzwU0ef%axxZwS{ zjLDCmzvpz<7oZmr{4KWh3%rjg1;fE?aU!AL?>w`?fpFjz zc}B^k-WhY6hf9UV52*gFQ7QQ>$^%w(ITxHs@+U7gvzqOPN_Yog((VEX&sHehC>+2s zt01n_^XuG&)P;qk#^YyMb6L}8&A3uKmIk%(bQwm=ldNwve1u>pxnOx>0M}~FqKX6 zw+ht>U{ak!q|%qH3$>^g8Do8Z*39k{63i1gjEL~+Z9wad&BtJD2P9D+aU#?3Z)@%G z0H#8Yp+70;_c))@r%UGx5t2=e-&jlaTv?xyX08?MpiiHqAdH|nxtuW=`*_%CcTQNu z2?xCK7iXdrG@Y(mx219=<8foJPUoe;5^ZRu%4DOAxCVDynBB$34JZy_P*1#$ZtQv( zP1G{@pG{zO+Otgdx!#9aO^!u zN9EaIPDTYX%)&tzoAEH)@wC@ma9+O~<5m{MHt5#S9F(arJ}Clgun%7tBGW&ip)++l z-uS|0ghKc7+#PJj<>zN#*UogPoK6Wcc$kemr>o00K)VbD9Kb_-bDTnqs4hf@)DLhI z*zsIL-evi2_X2T;l=C^dvXR_1ZG!>>C&{{&Kc|_TSrB+jZ*ks;%>Lclin@ly3M!KAHzJqmJ z@D52hxD6dyYDe0ls$hoqBOA(}*19Ag!=m~oqqV%P7N`4m)SXnXy2<7%-Zl95^P z#gj=1QuX4FI;~S!5-&s3{V_|}H76*MQ*Cym_W?IXpXZAYN)78PSu0B_)P$PjY5Z5G zty5+Awd*0P)Ub8N`Y-<)U=siPdaWDlmBFHe8*7@L_eI|faCY&PJ95(Gyt$mI8`{s` z&)L`gw!a*#U8trA%WeC*T=#cJd;blKKgu1kKzqwsyWEzOgM~0v_0%==;AsDc^;-Ye zLC|m(ly`t&aWy$uO;PUlb$@3!PnSC`o^q;iqD$`no^S?uXB}|kmJ2L&`M-WG*afzq z4Dfdo9K_mv%*wA@%e@BeZ^OjzdfzZO^g|L&}=dg8c-7Ody0sdZdiNBzIA zEV;4d9$eAJ%BTO^l_mfC@{gLZqWXU=4GAs7+1kZl&R$OC{NE;WDwkY>{N?^%%Rg%T zZl6Rc^u@o$I9|6y^sz6@JCG}UAmj#v2e;Fjl-(_ap6{_XTLtvmJ_e@VSoIeooj z_d&7jzf)d~e;kctOPNJJJ0rRMH@CvxlwRE$i59tsgq`2a-Me5n-uwNPc{=gTtKVhrT{+@)LSBM2I5&9eKs;yU z%6wHJ&Q77uYW_=3)Xy$_>GN}E>WTT6jK^{qPR=feI{M^%cmMWok4kkKlDH%%_C(=> zjt~rUPJa4Fd4Gq?ASK(0aZK2c<`zY?`zgi_ats?` zC=U=Hrpfwn5(Aa`s!f;f1r`|9%;&WVv;70lFyadDcsPu#d7d^+3wB)8S7xjD)Owcd zT;iKoK5270*2&y6y$jZod0s9hq}=>AEtWf7;C-etY(m&+iu1VH`z)^Ou{95qtSNFV ztuIo;+VYV5((3eytNXu}(2(*n+$4q1P22x)eVTA~QC8%5|Gmw*AFED^?i2kUo%!I% zOE>HKrR=FAC*=%R?^w&t7n~}mck4^hKDi8)d{%n7iha#=bL&%!_~fapy*#w zVZIzj87K10^%d0$cPEBf%_WM)T>hz6cnZ#&{g4J$ew=>D7&G)60 z9%&OB+oRfe_F2OA5}$h~6Gmrp@ppS=)mWZCz9YQi@p`aF4lkVeBrUp5HdRP&m1?nTny@ zoo5)Lcci?ecne2FH*Na1vr2ML8}pyGO2XYQyVlkEZA1UKVHSPUYKMrHLA-3oGoQsE z+vB_1h}m(64PJ3lr$0``4odW-pDVJsmGs=C=p&)`&}7v4zukTx*wl@SS3Pp|nd!*b zktoB1X+|@Bhta<@Ct8%cA+2;TUO(nS7Y+`nv`?u?ho)BcxYC7RkK;_UhJq>kh~cOAHzj&|mH*ax-Ztv6PLoUXkw4#E+9B<+ zUo+&U`CPa8ZfUp1;PHcoZ>sf^5`NF==YB{Y#@MCYpSBTk;mh9(t#g%A7`ka!7Ru{> z-fc4Z@xy}FmtP+-Foc`tjo%9=mk+(tKVM=P<-El%WVkGV*6Q4SBr*Nt{qA2HB1k*- zZI-nTX3u)(5|0RBk`PFztr|BC7cHMY{KWj{+d1d$=gv4wWSwujj{2&Cn@csd;KJ-+(p?{e$0-e2`#o(!f9=pJ4N;{fI>ZdB?Rqu$DtF$rf50Xp zeQ0&dmId&siSN|irG5YWo*B6yJFPD--{Fadn*W2fcMh)X>(+&nbZpz{*tV07ZQHiZ zj?=N#LC3b;F*`OpwsF^c&b{aTov+UK$E~_myOO5$k*cl}rz#ra1AOYjqC6>1{T9iAdZ zaqbMKP_as(cy+lStIA9M>=VhIUHN}VRtuy={ zjQ^2}-373g96&~Hpa9_if7;UjW-?j-mAm=>nC1V!M7C1EVHz`7Mhz=dS4(1MHa0F; zMoBX(3rkl3a zOsz~@0Z0bqm;TQTu`aFvT(pDr%s$KU@I_x-9SKu?;% zf)o@K{?7+#SbDBXMn*;vk|O_Zy%^TFVQibDuQ(gBV0f*htLyu?;nC4V2x2~!ospJiQKz|Tfc?+Mn1IJfMiWRx{XgG5 zQluAWga2J6_^jJ8dPlqO(@q2$g)DIu)ISEduXw=S&FS{MWy>FE!s(x?r0%oRnjQhK zo1b^=MH2D3OhzJCVr2jB>+V}g2nNxX@9pI7Q1nujPU)g`an0LV!*r%v+(a&ahfa&V zXapicZs32-AGmP#i0jW?ljoa*3XPhNkJn345s}O;%_?;pHr(%UXYQ{@c>(&$%0E(4 zFxXIF{@p9CyuVCCBWn&lT{cVA4&Be+s?=NdUluDgWDJ;G4kygzME>2Z;3t_`=BRj} zr0&+%r`u`4v~k`r54C?6M%@0DAm76i=%kFa^rq)t?CR?3i3{J`)xg2Q!8s%RKgL8a z9kKSwktYY3%xrEK3dVK&mX;o-fAq)Ih)3x9`fgr9@cnN7JdfcYzYSm?9fJJFwH_vQ zbUaYij~}ST${DGt!(JqlQ&akF&Sti@XJqkws00KX`XZ?RC>%UEd1&PA`S$hkQqXyS zGz1C>Y`N8G@9yus&;3c0$w*u@V|QzNdwW;t*MD>$8k~Aa!rA%er&N-BHW#z&v0}u4 z(+Giw?Pllm-_pFPu`yh3=Y1WAu0?z0|5jUI@~+AC?hqU%U1V%5gyY#VbH|2&^#Th0zR!ytT$YK91sTH_G@{dQkYDk9u zxpwtZh0uxa@9%F9C*j(u{@LeGF2Iv3#v2o$b1KO&~ zkTv;dW~R4;n3nc5MMK}~st;;SR4ABBklPd4WVqKBGLUn#cQ{s3b`Z;8I~)(3fx+uA zBV46)J))rK+YtXv4e=t68hxG!N{|>G;AFmyPmbYay z3WF9zh+!lc!t==p9kVbW#AMi0?}0B@Fm7-C6V7P|%@a%rf`)Kp@7~fC+ZE{|Bl7zN zRdk&vl)K|+QbHpL9LPe^hZ3JRrbXLTh10!TtGr@uUcm6(Uq>EL!#B@LgZNse*`qTo zD93HL&Wm8UK(MHzYhQ;u$SZ1rjX;ETcBe=mGzXgeZA3W5E26g%L|zaaQ>2}OXh)Pl zA|SS|a=#iz;t7lnTEf%jz{Y2@kGG>X`ZX_R|2Z8gAJHv-SBWe}_lXXeQmsB|r%(SF zyoh!l5Y1L(JdS*c`0Zr#UR8Pn{o8qk3sEyw)tlGLXuY$*y{#t?jPlk2t8{lbdr(LG z5re^Kc`i_@{3oOjR*)}zWZM3(Rc}=-d@V|+ZI+4UKtYFLmQa|+JNjn_AEjjPW}Wc8 z;PWP)m5}VZPqq`?s2c9+kpXI(y?C#+@vmD@euqYcf!YfK;Um^c<6&E&StTaz7IZ#V zR@X@i?R?(-bx3^39PX8xG`UTF*!`HsBumIWfmm@n*jNJa1HfSSUlXKovEU+BT2kOb5~97b>xxfGZ-8o&zI3KG>qr zy*#~Wm8CBXAXHv3@BTsUlrdYRV-*F@*hHVf2CbiUk$!Lv)cKCR*U*I265Lq+I1C*a zE#AY~a|xV^_eYMMF$7-9-Y0N8gr1VAnLXA?FpAY$9dBr`du;fk zy5PD5LcNewVP<|_F|b$b+30rs@uOO@R8C_|>+YcD?YQarytlPcPNh={ZK)Jhz9*NT zhQtOz?+NwK%8!e<_7T(D^IBA<+lT>P1y6WeGIWcJOnx_w^yUWr~l5>nsQv5BmzFC-BM~r?I$;^ns&wOwGyS;oa zq;?CjZ6*i**K^Jk>7Vxe64KIR6*b)_&TX2fT#nnlaEzVXj$GPaL~*n=ov6K`FlfQf zoWYg|DJgX1VW4t7Flg!Xzh53LD9}EQONVZFx1V`=j6(+}HR{v|IfuK>^cj31vvzR0 zgY2Ny-Sq=DXc<{>)*8S2T|;E?E}gPqx%^5W^E0A?JLq4kZ^{jR4|yM8Rp*g;*y8^(Qp+41oWs@E?sog*{ErTf2^}{#bX)Goq1RY#0{wnJR4r)k4y3uGgw|B5 zPp)?Y|7e(k$vocxXTzj$Le0695p}LHUPdBwbHw>Ie0DDdIBnaUa%%dqTBb?~Q(AO! zDQgzJ=J%(`#J-R&0fn}8v!*CLTSLg{2-X;cy?z68MxXF$lUq*|I6~h94VVRc0YQD# zUYvJC|V)(eA}ORLgV#Cu^B~?yV<9^q%t&< zS^jmZHL1R3gH&AVb7VVV@Hu=;WnI`E`r%TIOhr;e**H>c+uSK`sPQ#W!KzF%i+OwVRq(l zfK;&5rs&%oop0)a;24eilfI8}KX|U~Llo@awWCdEIL4@h$1R<&=~kSta(m>uo<(d=`H$zCx=F0lXcMhrEzdl zC4uzuYHA*?t5wiS(gmu#KwdELFBZ!nR2%p+=&@z=;>r~6a~U=}IvovPullnc zY2z~~@vQm#75efc6Kdl6z9#;zt7U!R-9#oOV`pF{?nHXf{ps}}T4ZGJ&B1af&cOkw z*&<$U_QjbeY*B;&?(BuA{%mWJ=cY7*8!2iCvBBCNwL4qk{mhq0iB3%IJ{#@dSq_D* z*n1-;8$6v)q`SLUBFIbU-<961L!X8GZbf|nf2(9q0qV=W{b*sEB0GA)ovHbiYO z5K5I^5cf$Wy;0u%h2QoPsFiMTPZXe2%|Q?%42u7X_w6}qp|~NuR7;$^&OCg3cgoH{ zf-+#59wCgoq7nm*6t|@kfvACjpXMDUQ4lWTjybZJl4<;&DaYiGq=v7&DYBJ^?1Ke@ zJ`q+l$H^z_2g9R@#1VZ zT1!vQMADvN{&b}`h)y6E0}D>fiJgrr=3B(9=H1;q1d>3j;MYNYHS)yJ?-|~;gd@v! z*6JIsXooB;d*;nv*m%QotdL>Pw>Z7suhrE1AFnvQCGut-Ta!J@W0gn^5qW0QxEZr! znH0m56Sk(q0+rJ>XBztGybV3SH#>7S>`jNg)h`iiOx(VicZTZKr&hVKl-3xEi^~=p zFX@eBAIV>=4xz(xxY5j8>m=<_NNfE{wThk49I##wLOf(**^@XcvRP)&1#?MH|HXUi z|0Cy)J~P&KPm+TrQhff;a>hHt!*I@-d|%;j(~PZJ2k>YLkO^~4ls*bsLj;6al2ZA) z1Y{0d?C3c2loVm9ugJQHP>*)FJs&U2$Fn0N@iqEA`nxYY>YO=p27T(-8MA$vXE-*R zv57clvcou2PrGH+?%1)-b8~*uW;^R`;_-rn``O6n!Lcj)#*7=&7o03)7An0)Mwn!* zappwC7dgmBDBdFdAZ=07SRVlmwLQ8H*;oZ zJhF!+)7i#2Kj;Lpow+kGs?loXX7fECN1`-oX`!wd#W0s9MH`Pz39Oe+|E;Jl*X`Eb zy@CAWh}UsW|B#x9!|!5kOhLx#Zn2?Ir_#?X*Hh1LSn6PQpLlPV1X_rHR|cmAATs>2QYaVdA#37YA!Hg5%!(S;p7@Y7@##g3-Pg0RctBc);;h93_d(Qs zrP5^kaE>H6`Rxrz-(aTfFS`kI(_xL3icjOuo41KBE{=?M!rydISt3yeR&UlZf=&8N zg{)*v731q|E)hsXo0zMq-_a;fT#wpR@PmqB%{9Il9krkB4&^3TEifeILC`$-ceP7q+lr76Tk`xC6R^H;&i>G&twX9%0S5U zwTnTOCUC{I1dsj(L;gqzNnWK^p{N%d2Dg(NJ3iX`_PpFfq^2e;MIvMhE56sFrC)tM zFR|8AbJy}KB+kc*40*@u7(MO^S_}mFwzKH?j~oih4jZnTloYTrP8b^Tih`wi)Y!8+ zKnYIB4`2^9D9fJ{sR&cAwM17uE_iH|b|gcB+oJ*15f*OwJ73%*hhwU%Mic}+y<%P+ zySFNV5vrcNWH0<~^tB6I&RWIrCTk|@^6QKv?4n@d$N)6KA9U0458D-HGbK<}*?WDso zEtrO|D-~9M{NAOt^u&s2EQL`6#^+D3TpJ9G)r7o~Qp-4F3kD`jL{SD*{vyXWY6e6c zW)U15D_W|AI8^8*;u+6x?b=nWlq`~oBOm&e)Q0fmW|WHX4-TqdUbZQL-G(YZvP+Rh zzHCrvsaVm1ZJ=&Q>+AE*_s=C;Yfx3o=4^a9Z|?>))}VgH29!Dv;etn4#OYA~7|G;6 zKZh&1x!Z%jq}0_lzrA68tH*`6djhv^*sdqp9I5l`pPvh1muGU*&g38~Iw-cfFJjXx z+l*Z9AbHg1K=p^||M=6t&x5jvM~ozX#{YH|df0qXA<$9&whzuT|%R^Go=9?A;pT#Pc5+0+6qxkNVnG?er9FUV^1 z_*(ZbWbhrv>=L08=t+svFNcJ4yML=8(jJ z?s&PiRRk8B_I7$6hVg>6d+gPv_dUY=@pxfw)LFtxCd z(RIAp|Lu+zPCUrvg-TAI&L*|JaQ8QzQ-P+sqI*+Gy+mIAkEyBV!b?CcPr1Fs&&LE%q`GmmFy8oUN9- z?a&Zxmp%&NX1GGHkHIp9>m(njjlBHeqQE7Qve{ZW?rJwmJ zlEvUyju2I1XM~vEOrqwf;LXh@;`Oy16O=~a;bH?gA9$VR(9PXCC;2aK&>-NwY2yc3 zWbbkV6qat_vSyIV-^s0Fi+>7-nL_r>yNOkd4jmInP=P zBnsK>=T(QFD@U@f9KhW$ED=W|vmLR-Nzm;BIj%}d^-G)C=In3dw+(x9Xg^_c> zrwGvkDagp4_VjOS5~#(OTrF9NZ=K+j1Hcf;`ol`JKrDSkDOLw8KBVn^{U|6NF3Iyx7(RhBR0VJv5`oKLzu|o;K2!@5ZcqyskTh|3}>k!cBHRYp@^0C zS~GPa#af4MA;F$?eQlx~N9{2(XPzrHsW>>8u3JM7lTv9|B zbHsp>)~}fFiI@r8_|5$ya@x42EP&ovG=zq^xPU^Sgjm;cEJMwgM-{-J%Ecr~O`Rk!oJPPV|Lhs}wU zH0;+y$@TLD9`Ye2wS#)i{Q?o*gcdAr?#LLiACg}ZGglMW?6P^nvh0Dz;YEX6w@uN? z=k%MU!Q}n;osb#jm?#GVw)gRR{lP7|#JMHr&e3e!m!z;ejK^#g?1~fjzClhcUl@Jd}O$4=fM3% zqW20K)DU$=7;U2#22WBcC7#{we4!B;p<*#OCEVZ0@^D5gV~1Qkh*Y{nTK1(F>bK3nNC-7;TEsD zl)#l@K00t8u2s|S#6+X<-=HS+Q9n{4g>cZwRH)91i~G>ac7B>#Sra$TIu{v!q?OQf zYNRB8RrxhzYo!eb>S$lkFDE~?xKS-jGgFT;lwhOl8_wqWP6}>x)!BKXqf)rhTx?T^c zrk+C}#8>_MCd$L;EAhu!3f7{NM%foN*70$Z>ACK3y4sIJfx% zWc<%3;wcYV3fEIiLtTB9g`L~3rY2=L7oLPwfQ^TohYdUy(q%}W3<_ZP2iOlP+5yHM zHfw&aO+PFsM8hS9Uy<2gd@p(^_`6=#9M(kmK7upjszITHw`&g$%TZBHt=U1mBqLcU zhEwxuUOxhC{Z~2u$h~upIaotI#?G$Vi;RltoS0MoeomJ zmAN2GVIddWZlQ2d>vV4nhfZXDNr-zC$s@_qRL-_Yh#+zAvBeI&ScI*Z&EQ;z%`UD1 zGgF^{9(*>@6M;bA>j0x+C40Bd)oUmUL#0IaI`-i=W!~9(8*A;?1LtQn1wIr_-QeSi z<@4GVFf~j^ok1TCaY}h`rDhPzmYuR5O}ZRaGEwlrA+QX(QGLEa%?`|#t+*KY8lf;S z1;JRCA`qiWNYRC}mGuC-EU&Gr>{b;@a_&iUpvi?U{-NO48vVCxgKbU@iWo$gRCgcZ zPR~RK`1%}RI5-v>m6lS;qZKvwF{rLhwje7G5V7)^Q|A*yW)h5tJ1`*ImDTQxi-66_ zDgsAvDf?F2$58Qc=JG;$x(_iopFro*>%AA-3#t(JL*Kx4U$p= z4g*^MNBAf$3J(}UX}%Q3GGi6H>Stj2V(lS`D^)+E@P3M;YH(XV>gs8ej3I|;QP4Lu zNnIVMI#RX;{?XZ=rAw6tM6x??BeuhBIEho@rHiBBvhRH%_Y(2#NC(<>gA*CT3Pb*f zF@=$u-n#t1p-ud#iSW1D@ZiUpTi<)*^N&Qejb!emmiv?~zbM9`z`0m7vk=h9G z=+#qNvt#!U$L@WMi;4iqZ0+WTt&HrbCJ&9 zd<1M<;psOhl!qrXgZwuZkT38)b!l)5LM}KA^ZhnnV(*D$_YsI~NMrWHImbz`w^0>4&4G^*MvIe<%(W`oc)-i{6MVyak6+ z<`dy%tEQuIw-h*&FZ`al2O@x^x5Ou^X3RlYzJ5@0{c;sJIRR@C+in`P9Ft-2a1y}rbXvh5?_CU=Jw!1^yJA7FqoxVR1^_`vaBy(4pn9Q*gGZb6 z`^?O&+>p1e4i}!;W8*-;_HJ4s3Td|nO!T6Q>J#}y?D(bV5G%PWzRU*Yfs<=&_O|KJ zVaD9k8W!0#2}*;1UmNB!rJw5yJ`HbqdHQ4t;OR$P{QXAWK(W^CUi_SruN!%aOj?xwj6DY2ul= zyLCADK-nUtp%EPymtr-@+;-G#m3L@bfmInwvz3k|Ktgj#W?ME=U;dT~%MVYV+4iN{ zI90t~39LU7ZhpDK&(#Sl$qDB$-b44KkEhCJjVQ&%Q&r5r$aeXj1M7nm_etOeRe%Sg z=8+r_`C}>Jjl!CPc!&Bpq_$O7`kL9}Vtt2Hk74e6c3SI+(~WfN8FnjH!2n1gx6(Dt z%_qX4P&`yfs$$;&lYjiC4KjNL^G|m;=L?a=Ph>$(OJGuU85p-f{dd}=(E{5w7=4sb z8dgj}x9S#|Fg@K@lmGA?O-T*E+&2e0jnw^M_|%1T5HU+}j~H4T$P*}IF_nx5fE6c9z-7_Ekc445ngH@CM_Bzz%r zia~R#*ZYw4^JsQTiIntF?%pHIJKH75D5R|^OUESQ$SIkf&jM$NISt}NqF8N^dHMZK zn7x+BSB;S+(gzneUfX z2ULtuCb{hTMW6Ti)B?6a2jonZkRbrQ@Mt7+=JAx$(0C|A(XqWRC1FM$I94p9hbeO& zj=;BplP4rI59lD-D)ny?oWD~Ojo7gP&-W%=#m>}JaT+Wfrml%2O8;<7+x9ZEhUk~T zH{MJ5Jih0%Gy_OM9CNGHgRerN$@9baFx>L~Pw0pF;se116MCH#mH^^xfz2 zADxkZZI-leZ$TH%H*~r^>u5;&l2b7JZYTT3B$fu%;*&H2xtXp!LiM2?ix%P&KatbF z@DsvHlPVt$0lxLaW{>NGA2JMW<0i&YT!K_SNPqC}bhgUwL5Nj|9~getfHXkSV~p!3 zcSpp0vRm*IH4$@tx(4N@truW9*R#>V%TFnEG;Jgyn<8`Jf@_>Pkk z+vjHj+8^-saE?K^C!p9&=%S)Ct%UUOMxxA(j4vnow~O8&Kv+A6`w0zAKc&Kj`}4u! zZCl5pd@_AFJJP$q?Sgk8Uh!t^-E=UQG=ig^8xS!gex&;s`3Pzvd`?`_m+-{&<5!u@ z&xhlOv>(rrxnYr3Z;p15cBJIOAXQki_e^FM5wS!y(-XGy9CO(@RYZaUrprt^!a+rD zK1m+vO--8h;5D6Kxo*whLLRrU;(laBi#aiZhCp6B91I__sw`n{h}p=;mG*RTNQV*g zP+M#Y4Hids#}QRue5cCmbq{B*7_kNe_71K(@`%`{LIq&MOLzGz6TWkJ15)U;4kqj}hQ+u{a0J!ymFo*1>CJrk> z#sDX4jv(&YclVu!KHOsI*C*n3^rkEnKeB!8odzo+QOuaM0uDTqkj$85PuCs-E=CJU zZTVhSA=B#}tfM1Y9aezUnMJ^-LPCJ({q;5Y;_ypgMM02C4ajy$0Z&L4Qou?*gvTaz zJJy8T5{#{+stQ``?!Y-no@i38{`2)n(7Fr@hCf0A07Gcu4*$S_&vG+ghV!6!C)zO< zR*Ua1p3^2^b%*F@>zo$IOIuf{%B>kae@PIgfZA7dd(;-7lLX?n%{j%DLP=kU5~w{j zv=AWmb84g%fS5X;?|3>c&LUk^ook%|{rF|Nh^58Mj0q&Z_^!f^)W+k}8s8*b&MWb% z*+f4dIE}PyIeeVz0Bcc0MZb&?!MX#Uf4-Ksaz5Gmygh3ubdMB>4;(cKk&R6c5Sns; ztAzaG(35ViK>~9kjZ2@dz1x+@tyl+N%@bdUgR}ubKdIr8-q29=`K$o)GBGj7xe5Kp zPQ30c!YX1!qex;RwvPp_Y^_CMqauxk1{TDk7u9c^UbxK#>!*3rKGl8Fc8s!4;Zv=4 z)p#1?R)>d!zP|oex8Fz%jtda2H~wYQC*hb%mN)UK@_2=~OM&T9jI%&$+2!}sdCOa; zNKw!vrlc64R>qBY+zQzK{yo&|2qwb;$@iTtY#01=B^pyL-+$bCbX^%0twLntwUaBw zs7y((Z@5RJaQqx#VU^R;vMYE3gymel=9rcB_Og}iSn5gKu(-_v$sQ{M8|3O?4J^pb zEfUtUKi_Yn({E$;_ky*WaUo#zJcMUnlFtDtC^$}(&?Ve7a|?kQ;lGiDidqQ!^{bCE zZ+p$bh$-L410FXt%f5f%SGpjP%Tco>`aCt0)Fb{jueXDOZ^{oY4VYG&Gj$RbFnNE& zsdLLK!fr%vh^mopJQniwfz#kO3B}W{k#ZW)ji=mLVDJ2&dx}mfz@{HMjwbgV^S>Mp zHKK8Qc!wR27zHl5p9S@~e4QqF2L~*}SSwd9m^L7Sk0V5LRv9gJ(e2mYE(9%lh|8a@ z{J@586`yfFGcQ`M%~-JuyVgYHyxZ9s_EX*Lx#^Pun4n zn?4Re%;;Z%7l%R>6UH!xWjy0oV_I=f^Q_W2t=ZGr8DvSZioRakW%W;TEJpYrupbTbGBQ3D62q*j zWX;w%9>JB0vf`tn@*Q&4oWW=(=aip#7ss&0UV?tK>i+5MG_i*&C*-oRM(+xjEsDPxKnTB;xh7e%CNrPfM<>F#?5UBLXYf03I@WQxU-t-vhK)cpI+T^ojvOHx z+4_L2z<7N$+2jKtGm(F<-{bf8s=uyWW5D8@6^S%v$Bwc2b9Spl_RQ?V7%K~x=0JX2 z(R9NRn`E<7?>%DaFFm(7W5`I&J-0PNP^3Fmsh;tT413&~DZBlQWy?`VKlh5T?1S{t z3k=K)CN8IR(ePhVt&@q$YY%woeWboSpy!ek6Qzwe`uW@he6D#qnU`?W(tfMdLMmh9 zUXho}*u}GFq(h&_(nJVPhFs0Y4b(7xr zL=|v1)3!ctE+`15{905SPfMDWaAd}HdOpys1zGZH{g9RHz5Dz0x@FW9HF6fZOp8L% zIhN0AIQ|<29%&VLkr)WPqgQO7cR<)nQS2vNp4i*o%)>(z`BJbKEu8Wv+<2Ru`!t={ zU@`O&-p^%cm#`(wc3q%{eQlT;dO2Np}p0j4qysKiV?6<@N z(ErSNl?bH@GE@SC{r4FeV8Pc>6uu%VvuxOk&(z9-$el(Yo|%%{*%`7-7)0GP&5iMf zD_c)J`|M(Rv9-}5KU9nE$4c{@Bii8@95ZDBh2vH~jfn;h;$!9$qg;#uXtSxV!%Q3d z$L4|`zfI%$AC~(p#iEhJu9APVX_aObz*%7I>r+|9&|Z&<8oIIOBcj6VI#zcCGmIkxGl%H zLr>cx?e+v?i~YIKP=pBRup!4QGw&qz7xI$=Vqm4B1MIhG_*Fk%98n7{e4nx}Q^$tB z>b?z!10y{`_jKD!QJH>xc#@-5-X7_RVfIHs_Sg>CWK*(rk~QZyGUEMbma4R8CXV1+v{%Hw*Rfh+^ z_Pp9BXv{Lvnv%+NWSP8szrD~(OK-b^1%3;$sS&rO^Z(SdX3sVNmT`j70J?XVMLq!h z)3-`w;YwiukX4`12aU51%(C0DAEb#cxKCvAGLpTeAHY=L5LDrfdZa1^ z>_=W&cMMZ;bKlI&C=yk0R`eP2`{AbPpWqESm}<9n-hy$H)>yvTti(6i7;=J1;K&7C#L1GI{#ONhI=N3{o(sN=f_@?((<_suw`@ zWcPE?Fd-r=?1fDf5Lg`q$iDZroNqMbAoTNxq`_Ycp`M)B+& ziB4EqWsati{!D_(UmHEZ&OQV+E9`xa9Y7OcRED|zOIJn3YYY!_5RRMDJKrjG5gr;C zO+sPoVhV-ZtK^>}*aTgQlrlgxMDaX9(*U~aU*R{)wZc~mK*07z_p80KudCO(USTj4 z;S4|lv15;6(MM(RwwM&3OoT=hl~ExNNvsbbjR@Q!GrkSBIsx(tfk9+lc1pseWFMvm z@e5^VWm+J*^@L_>NOVH*Q>)HY>W5?pDq&oIf2w(3EF`XQAJJe%tXC5o>h?SHM?pCeU-KC+dp2hMWYVHNqOhQ2hJOJ zapuZ?Tq*g667Q4wx)M}(U@qxLQ-tKqV)Nq`ftD3C_mZY#Ds%-O{#gK5%mmF}Dyl{9 z9$xAbXFxK=UAJa(eSO{X@%!Lr?6kblt$Wt5i!hJSgUrY`pG-|FJ=^SxkB55AB=V;U zc+~3&!wlheIz-5R$EA)&<}6jhn6fS74W0iK8o1u35uiz9IQQT30|9oSYM~KX_4VK- zXuQxB7;SA#S&6xb@sm8kAw3w{AWY$A*q(+nH-dOvHhLSyW7{qSX8jNi%=GSPn{t3{f$X8Ovg)!+7LA6zFW zBAP>yBvPgUxGJR5Ij7I71|}2z-vL*8xAs>=6?b=l`OGDWwHE-#AOhtF1(Z35x$I?L zz+qTg_f3?g)gj=~o%dVIZ1{XNxNq5l6;l-JcON$BW1CqJUS`lJKk7}ldVMgBC-~d+ z1+w+zbZFgI@~3f#92bT-xUI#ig;dyDQ&pDvy6^IMq7PDXqNFcm=E5+!_!O?{XJis9 zijxu95!&2-Bq5I;O35fj<|m!jo5*MTK)oVK?SErpg}9b^pIhf*ZOoM>|;GFIH4 zAsq3ZF_oP%VoAu^akK3{iQ+kTPShcEmUA6E2~pWcNY(#NX^b+@@w4c%b?<33@jGMJ zSCtCCnwVH|eSMk1Be+zk9ZTc-FcMiNMqPCJr+1GqFeRnY$)WAO;Kbl?d}sPb_OkEb z0k&VSv)c-#Km(SX`Z`+y?B-H5Sn_IWeh6VRHb)<#AcN0hn?9I{Tek#H?>VoH__)}p zdrgwmcW~o_qA3PGHnwe|z6jrqc*PBD4cvSlU&6o4hz4L<_zjTfri;<^WvelGVpl`z z)_!4$ztk)FcI>EIizhw}MNiV3nWYo(Jt~3QgrdQ85h9E0|0Z{wyV< zh6xL!qU!DWfXG3_!0$jFS4$Yiy)}KgmR8s$T-wQ zK*;7m%5j;=AOJM)HGq~Di*1!sl&p;ev33rLWUUSN5&-`{~Q%HVhkBB zDpI{gE1%Z7Yo${>o_)^?j*9OO_~fMXCpnFxk7dLqf z(*ordiEuX>8tDysx>eA1O9`lZvyTE(^9Aftur48wHM&QcyfiEhbN|!*k`iHam^~!o z;A~Ot3h_@26!Jhw1s-W=@H0s$g#NsM=C<80N2dQm`y6M9k^T6Hx7B*h!2qtwbAWZ@ z!HXkwOHSj=kZ#6xad&^8Euy$wAvACJZkK}>&eY>`^)cYbK3~#w=N$&NvqQyzx!j;0 zJSv%-!XAKwG_^axshgDO^k)Prh<#PWUe1tJ36b2YEOjU|-r^)Ts0IQpx`v>UDedM<<;XVEn-q3!Y`< z5X3BqG6&4+lKCF-IfIB;Y&Dmc>kckE=O;wIrd3>Reaib^@{gLH{QQ~TamnEIu#$V( ziIxxE{q%r;g6MgNZwnH_F`xp(IL2dh|ERflbeWQ3%L7qG{R2c7)#wLHtJ|;BmOWkh zER;%zE`sC@eOE3+Gs1A!AOW=?+s3Q@J<4RaNryRPpeKdhFHORvT`ige#{ilVN(0(V z%9Q1J{#68IGO4H&KXA;Bcpo&40CWh-1Sq=?qYst8@uf(DKuxW*rgM&U#*BlNxk1#8 z^dufS4|OCpsR$)A4~VsqT)vDv6t87l{9cO@xZ;;4Cxx88JCK}nPQ@sAq6Z!~rwsTP z^LNS63*@;bnIeLEphv+~=t6nqPsG@s-WS2aOiJw5PT~pgwaW+6**P_qCnfHYX6}z{ z_}4=bFZ=gOzM&h{rU{?VR#bezu;bxgp_R6HeQGU9RCuLA+};0jfmb)*ewvKz?$ z`Nxnti5il_Y1m2|PjGpmF^tHhhOAa^C$w$yOXu05m+8D0wYhxMC5I7nlqrNRO#RF0 z(z~q3*T}|~FyH)ns6(JkK0gi_Z$tkh8lq`Nwoz<^6n`i9TpA_Hn7Dne#QE=BI&W8V z+xyXo_q^K~%f-s6SnRr3@j(U-ks<4MPNcckG zBw7s}Dxt-Vl}-SNSUp>&qN2v{&GwFpwkRc4a(4D-^b*E}Yof#B6cX`Hx>y29E>D1h zXh6e5AH3l*_!NFB(rm;4jB1jQKOyVXAi0dHM{j^QUp@fjGDeezCH5Nzmc{t=ql77n zYzN?)iz1$yi|)^!8Z#T`qvSX!C`eq=*J-lV;{C}GKL5R`BS>A~J1`=m_k&mlaRJ63nLoLgm6OcOOG!TLcN~Q3- z12X(~n3`wEj&2OvFqX=he00soax`?WZ_%iVVdj&+XQSX#?6|putCh)d`z*!a=pI$R zi2yPi;E=o=0eO8y*UHKqq5hNY++u2U!MacG*H^+!ZeE?7AN>y2tSkW6*sm0Zbir0gESfT){cDt?W|zj&qy9Ow^rYDE2}O%Um5?>+ z-?pRN@ren1Ko~WV6g)w?KR;f9QW6&&&B*79c=$t6xMTaOJaS9xycTxXj_3?SaG1 zu;AmHP%NmyLnKp6T98=9AQ19g7+2m!u!@F3#ZcbRun#m_WD;l&J+V%EOt$IA z5cCn_Q;t_|=MhfJoC#zEf7_6;lZpCJw(c460Vy3_X-L9i1P~RYw&~c|k7chB#(#-( zQszkqVe3V_;EkC3jf{l1z>Qy5_C9F~C_+Cg%?GPH9VP?1UVFVcf-6t94(qI>HI003 z=wo?~d1Q1*MD%bf=^r^&N=n}U40Iz1xS>I?GT5QrqKa_hBJ7{P1K^_ajNCz+lz3f1 z8quie_KiN$Ww}J3iK8|yQV#pf15DJ0#N^9;Ts=$3qt9t&b?Prwr+9u$)1GvC^H=v6 zLWBbLu!P@NzbR`q!Q~+WH4z+POZO8bNXqY}zJ4X9gmUlLV(_ox<_0u#(%s8xu3fwP zcJD4_uH-#i$aOCe`Tv&pImmy9T!W_wuw&i1U|?cNn~elgTU^!RpN66Ueq)YTeMp$Xzx1iPL?5k0P%^G1!;x&EQ6bEgkgK?io%t zimYTi+bJSGawKUzS7fwugMZgHHGqKMSf`)b`+s*FU>b1}6$~f_pjUg3zSkC^(`QCP zw|z4abQ$*0Y6swt$RI`AZ18u7WJ=Lvru0YHshFr)xUQ+~7z}lU&SqXJ2`>nm&@Iqm z*|p~TtqzUzhR{nxRr;{)vZ9i=q9kZF4_|^$omctjjm5BPsUR{vhGedW=Ns&fJ!2;TR7}Mlc z$&I`+!KfFs+B8ud7&iqmT}U5l)oXn?0+1^@0b358CMfSN|CM^P`4Tywynv6k?gM{_?^8mfObgH*=SRvB z2jwHFE4DS~b(+PAXf|y5`}VX4L4N`G zSLk-CEG`r%q{4imZTpy=^Ol{CAsx2Dp*O>ne6bmHh}~%|k!TXk17yT!j%@tHGh5+D zsP!L)eN@+xSh^e9an1y;d>E(^QeRVmR}0vZlY^=7gOrN#g7|w}F(FctNHL{=V6(%z zxh*$HJe~1g=4XF$>$s+9q`o9%^q%RGFIuj^wiN3J>WE8DIQo2>CRqs$`&|AIT@aXzq99?r< zoo^q`wQQTqw%uB;r7f+NxooXkHkWPNZrOG%ty;F;`}g)wpU&rWp6A@p*SM~~sdinb zzY+_=!Z~f0F%zhvKxKWqE>Rq-rpD*V7lR6x-ZUjTKvdQPA*5d)!Z$QR%9`o+LDW&_ z`Y`W8S$N=ANJPh3XYlUOc$>>R8G85apkg9BWCETsPWd_K#o@l*eofB@#Y46^Ti7dO z-un;n)wUU%PeVl%;|RMS&hO4*9(ib(MEbP^kh}eCmIjfSWE{9lgRl@uAg|8s5$qHh z6b{*z7!5Hl>=}Q6LOBL5?P0n!DQ0d&RO8b<=l@4dH#h0nAfRu*R#hFShRUGlP^mJ{ z6`<2$=Un{Uj9hO&@8ctmvfqR)MJVR_#r}X%cfZs)-o>Lgixg&CyzLp2==cBWN?*@t zNNqL>Cm73T#x(mML*%At_mPiA#8FcDq)@vC3C$YHo~Gs=z`czExxfOmJFdfjUR*)_zq_hR#|=n zfi58Ar^;YW!^e-c_c2>uYOO1#6~D$+auFUjdUuI>4&nNt9h;0%t1==oQt`%cFoFOK zi~;=sLzu*1L9<+^ZlPRf*GXU~isY#q8Vx30Fc@;_+T$!uw;VgP@_e@Cb&ry%}5FYlXt zf!=S<9th;6&sWFfH#X9(a3x*)Kk z-=AEEU1TgJe0Am4lZApQ){d-7^ZhDPUb ztIn&R+ZOx>|8MApY&(x|&TSp>$v&@G~%a z3cb`D{?g|&i#mHu1tMnY`$&Iuv*?{i-F2rwTsPS|X6nNMnN5b&Li(xfGbu1mYu}M7 zTMl6|OlDel+4j5KusaaVHNbpHFD6jyH&%wdRG-93++5{3?qXrqN0mes>kZ9R) zxaQ|oY{hbQy4##k#j&k5TRvvxZ-R}C*@y5HT0J9jKac}11nH-}n-TDALb|>7C+~F> zV$Cq8y+C>9n`T+}<-Dyrg?jEiO&83u8t4{(%IafbgQg4P#v7u|9qNjG6zQcC!$C`h zO4ImZ5U^1edyib-;Z1cRIJBtmY2%EfePSG^=;Y$`GG&7}(LNn#rRVHyrd2rxO1tY* zIr9d-dSGxV)2yuPsd7Jr49r68ZF=7=e=1Aqn|4wvl!^|q-*@gRv~9&-G>FDwgz+#Y z^ZqfVf_z~S_3Jbofkzr|r&nO^C3sT^n)hoSa%~T~Hmp{YUDl{2%9VcOU`|*#5|QA- z`}_(5A$$UYbCOaGE#q;*2qHSBD};z8WL91amnHCzODpIQRP1qhu-zWz$v?lp+_=4Y z`v?8|n6wpugid3k^h&z%gwwSV@Y!c@a>(8qi$^%*pt2jsU@IIFpFAme2ASMD+0&01+fb6uxFr=f-G3z4+%6M@L`WvR}S<=ia%?PTy?;wew` zEC(lB%-THxbYBWJ5GyH?>0R-I`*)zp z!NKO*jPq>Usu`X}m_^ip5`d#?-<3vWEB5vZ_JC5nuysb0j4n;8TBiXT&dst}kmLT3 zC}N!k>(sqPTCImMThTVlPkqyQnbq}y2bLrWF!PzS~U&DRBV(;Izl&1CgHS_{ajs<=Tv4Oi)PD`SNQ?K!1YcM zvVXpo<9D#}J+9lh;bN`}olBUAzim8ZaM-t<9i%P0E9wiFxssAwPBSkvKkC9luzv@V ziB0ixenCM66XZz?$sc9czX^&Tp-_!nD>}Ih(nO?<$Hza>P$Otg#He^V{em);-7{mx zj*zT2Uod`QLtvFaRk&b>qH;0jooqB0UO?+5pN{OKGR=OLWD7ahp#Y*swriXjdCE@w z1h@Gm`q;b5j?Y5_c;l@e?CutC%ljN)8+~D02#4OH;}40qnTHWa;kHA%5k4drpTInZ{+HVL=tQ7#%eoBDe#`UQ(Z z%??VEjT*NGsk)nF=Z7Of(gy_G$ir>?3C6VOb5&Xn_hUVN>J?A9N|)3CdeN;ABYYQx zkk_t`tElKw`M0-&4U1s~hIb$2pz^0ZKT^I|EY1BYE){EPpyK4bKCefVgrlVji6Jf} zC9MLZDu#fLz}yidfjQ%uW#Z8>c@|9s@N?e%Ja&BbMcglwM<=I`$^#x9+WyW!S}U>kS=E~=n>Hfc3s|m z32_knU;oKib7fmeT=I+D1sV|VoS=20a-Q7m@{$Fj={9S6_6>s z{jx?g7#s|MzjPbz=<;fg@}kR)4da*BYHdDW6=j9>_F86oFKpxlVjvR47Jr>D?H(e# z%Mca4zFFk&=-ke5CC-#XaptL&HJU@aryyGXbok{;Gce8CgsdmlT*{1Ub&$-mA0b`z zjfl0TX{;wb>wFgHOHDrU(1oQ&+aYgdAZynTm7lRx7sGUN%CZ*pov(x+lMJ73Ctf_5 z5xl&pF)*MTtuH#Rltg~k(uDIWhEq{K+HIV;F6t$1XC}(i#Kz_vFTj@T(nS44caGle z#(U?z8`&*OiXj+^>uv+X0$n6AEtJw`RrDL-l!opbn;9yLet+$^DRcYl_m`LG82-$k z&yR|f?jAG3Tj1@x1<>a)h)X0h`cTIkg1!)w+WtFaTeZsc<4;i!X|=nkpecB#7-IkX zQ`1ow`d_E|)qx1MvUC>zi!P*KT`q51Ejuh^RIk-a$)%~}B!LL)l~4U2$oSwLMf%JT zol^Z=jPRgMX-x%QnHR7+9aY{kp^MPGgX$2+2G)?84Leq7;Q5c_TwSvC)*xl5F+)O* zPl*dEC2wZ0QvTU*2XCH|3;*48jVW-gp4brxE+VZOxX|t!+2TaHIVL%z(c@9Xj4O|H zO#MA3kyIx#wG4b`oOs}G^Ljf%2z7RxZc`_MUGAxq9#SpgiZ{I}t?U7od<+7^Vn^+- zl(bO;OGW1i(uo$q?)*uU{bN1$+0iNjUAWEFoa_?Uo*0tR-L9y7Bncm4$O1aCGpX3` zWq)*SUx&Q{;Pr^$XqBrpo7S3XqY$`<$@8vJ@m8zD$zG6^!WsfVEMF(-SG!r4pKAS1 z?zrDm87|pYO*^dSIJ?y~gQcC+t(%bzbCJU=?eSRSS!bQeeAi23NnT%}lLI?s zy|s>(yb`Lr`?O6Hf5-E82Ka3PkHRa$55g&MLu%!-P*Q|5ZZSg{PIPbcQiUa44P-Z* z@ypUBzie}}$t}$fpGy~KE1Kd|!SYNSFM^8A#}}Du_#?2cJ!jhe@J~^G&RfPsM+8TqdJXNf&d&ivA3r9MD@Rk#QZt$ zS1XeFhnUH}>*|--!NI{5-ggiPZ%0K6XlQ#aj!I_|XT`at zOd~s@?g>L(I>ZjJ8ipULsNr7}&Zf0A0p^<7k+Oi#sfR3IV2;m=$4AYpgRE6NR)dz> z?T))KU7G{hJo?YI`4(5EW<^Abd5-UgL^>iyDCuWJItqev^GKX}al^s^69@N{(kT=s zQx46u7Bm6vbpHFWRwKGnMeA;%>VJq-&RP#5hoDOulg&`MNj``Di2qZ zaUJ-;t6p0FnZ+!B=jlDcoXgas*y-NrK%JRZ*E#saX%%(jjBmvipTLu9zgC;RK3WN= zG!rw>*Kc&PSe_{W7uWj`>WpD*RR(knbZ)LdN8ZeIWsxzEL(DBh|DbE+1F3w@m3iju zC|&ODZUQocdrCPxo-}5`$a~lJK1^DUhuBTzv}yOF{&ktAhuEx4>nxZF6SZ`{*ooRO zEV=}<34575=Sl%8$=H+>QB#FJ&$HC>VCDINaPZwLHhs$E6u8PX7NqMR9>V(jcUm0F z-X693<|$;sJqnpAB{jMBEY(QQ7XGKr&apF3XRK*F%)A_zYHn`Jl4$(RnT+A|(qgCY z)-gvHRXB=sJ}Vb9GBSFe_gwCc;)I5_&e+bh)f7m_rYr$Wx!0cdk(YYs!S5 z-;Gz?-*b{DtINWt>W!mUM2pDl#3n>cD5s$T!8Wbf4Me%os7V^h%-*jmriz_grWTcm z%u+p)A3@F=JXM;^Wh`j_)jAPJS-2yeU*&9Xa_qyPD_2RY%IoHHW3ct?{uLh)A)B=` zd$#CkJLFyV(X0)cx?XzFH;4+K(uU zAInc=s)?S-qdV-kPDAOX5ct!oUuKSja5vKdUc%Ic>XlhJZ2kRj9Y#e1+xtzJL{R2x zA44o!Xy^JK7+qiqHs1;Z;pwRYl``|ke;ozk9d3sVkA|nE5hn{M7K#7NNjW=gW3HE$ zhzsSKb{>!~mJ$mbS#I%$o3J(5$GPsPNuP1cGrt znYe1l+t{dkz<_;yyISwTeYzqY8k!I*zUeJn)up5?Bpy#Uo5sDaqyeBL^+dUSJ8NpD z<7hU!0H4V9#9AsR38L_*IRQer`Sb^YmK5B;>Y&EvPUyv+5_K4r&CYr&ybJ+pG$ApF zaYuSOELC~LNHS$)NeIY#Lr5J9XX5JbG{YturrdrDb1GRPb9y2aN=2jS;Tau%K+T*x zT9~Y=1q)&$FtE2jWU|hV0#BA_QSS%ykf7{>t(38HqmGWcp_EapXlI@ci&XsdboW_DA)MfA(o|f$(fvTzmrMSO~q$R z4B&RUONJ~w?~>uLc=$5@EAS-vN}3y@G&3AjkN!iie)P3E4bQ;o7OIhq|7*slm*=b7 z0p1xI^d0(F1QPdDeK;eWo9iF*z6!(H*AS(faw8^|OA^V0Y8>xfl7kR(c_|G#{Cu9ajrQb4Kv!KgkbgdlY?NvD8KBC2<;hCr}fh=~tb(uu8Vz^XKPY6bOzs98OYb z!nLS%Y}1^}be3eF#PFr_z+=5T6i!-t;M&wl6tGyA9nR)rE%i=Lz$-pN8p)Cv&OYfe zv3AxxBqurf=q(OGks!e=Gh}Q3zqK{>uFO34SV<>L+V{1>&R&r$ij|( zsM>Hlgr)p)@Mu$z^dGu%>?)^lR%c%pxA`n>Xo7lMIh&_{M=y=58Mp|2tndgeHE@0u z{1z>cUhvuzhW2l8y@jaqUM@F31oVv#bMl<7xia>#R!d&+Nd)C(^WOi(di=wo*Qr|6 zMr&zlzRL5s4KLsvHj$n)ry<}N>~rtm`IgyeTM&a@>YQ&>9YE#G(?CM0NZL|eT*g7~ z8qm>L9-q{a?_y|k99)_3M^?_=e@vigNaH2rZ>ww2BcY|BoDF>ODFnBVOv9Pe?5I9o zNx~zOuwe2&X#p^%Fm^dJaXkK*Q8UxpVcvlozbQY5hn3{z?Jm^--$%q_{hN%l@aC7D z{8`)N2KB#~1}j0cug|iSIc0gucqBv7pV4?g1lboiaO8Bvw8~w5b9#KvG-}Z@|AF`( z+bQn`p20xzhAfUD5c#J6Xjn!0ueIfxOtOsX`0>O@VsdLu zI+j!JP#AMT!Gg319Xze=qCK&ex_W#12_@#*T1QfFPtM4l=H%g?%2 z^78UZQL~FJF^D=}nHRs>47S$@J(x5tB*?c}y#J!2B^!dKu0uc&IS5)D=>pF3B~C&F zqmy)@KYIIs11K&H^LdW#?UiF_@D^4iAz3&p97ob-^J#akjO>X#P=B0zgw+1PNU~65 zxYledQJUD&@Yr%tUZ>l6m^NmRAFezT?>em~dvy3gVAylBSk5^;imV_n&*Iuc*Ef`9 zIsKTNq&@uKckM`=`mc1SPASfc=5q0p{33tUmG*Ena`GlJyHe9eOP)oqvz`t+3IEpe zIMT*fHaFX@w=%k}<#c#0Pp#{GG*HcHaVjzF{jsp#<{U)|yJ5TslfkDnG&%b~JW^8R zv1t4C;Q<>@772GMgluL~bk;0uT3vbiaJt@X(yr^#_KymxWW*jMzD%EOiWyAwa(Pwh zjF!gx$;@#wel_=7>x+|R5NzVnq?Pc;K#`c*6rBS9j9O9pzUsKUT^y&|#V52>VLq_ZZ7 zI2#Xk74j7*9*oqeRfjCpsAD;T=9cF&#Za=EFRLrPHf}G~g+DBhllP=5EONp)&EI6wdxu*3y=H<3F)Xod#e4S@FW_oyiL1ieEFT#$sS!a0rdoA&^v{+t>^5g8a zbt-3B@e96lI<+*WGj-e!amft0@zXA~)3$#8f1=|iq%wU>W=21U3$3-xw&``vJ(&r_ zCsqp_XYw^j1q)u;^co`7^{Jh4ozrs%PxD>A3)oOJkWdfk{N+;w*}ekpCtBbj-0_^# z8%4eNncw0%o$fz&{_&Jt6P|g0%I{%|I_|)S6IOJ;c*yN(mYPfXc*6O3AuHgW2CP#( z7qC*dr+F_=M}26+lV?qfqnR7yYKkNp_Kfqsa_M=)0aybe)gg&&T}1Bg?!FJB27kV{ zh>_nfcD*`-e#VO`x5FTFa}e5?afjv&(F&6lxlVNs0*(Yi zHsO2{iXe52_L)b8rtz&cH4Q(C3fLn#cdd?0=0?sp_Si^h+sFCQg*q7<<>*;g6-SL2 zm#O&{EEMuLdFq&#D^^X;4l6DzdBQ@0T8Y((Xh44bAM!0_C zOG1!XC&r3MUS3}NV-_2&pA6JEuAkjCX|D|Gi+$DwzDY>@7JaiITFV!Fd*x-(gX)S= zr|iiT#qAV(eB=AyIkS^mN1`{|M&iiOU^@$f?B44~H1S|*wb7HySZd(f7l^}Ic+r!fF8P7wSK3F#M`QGfnq{B7BiipAXSl*Cs&@x?d69?Wto!UvZBin8zwBE#>$%4uKB` zre~RPq@_TsaFkhsuIk`?d#Qs6O~?-*poX&su->n`HdYmN57F(6vZCPNJZnwXtP6zv z|9sPNU}5=@ABs?^Dz&tq(neC$LHveo4-3Mg6-^-g7L!$ zeg4-n6o(UikDV_^Uh{9tBxZcj8sfM{1h*!SZDgCE3MoM6of5PXS}^1;q(7cEeS{+V zO~XGmp>2K$XzgmAnt#w3zkS=caDuBVH@WezQJlx--qn`u?nM?zsQVenLA*H~Wn0-X zQB+Kv1@a;r_M_a~-lalvBKHLwY1>tbL&CzdIPv)?%6zCa6HlV1f%O+(JH4|qc!<_v z$U_x_BM^mobCEFy#CyINtWf8Ho3i)Cc&nn0ns=$NjIfN*$M1}(qW=lhrmqi|TX+W7_#(vJ-KVSJMap-? zoHDov4)}L=&rdY%Fx_OYWZP6BtA-$bt;*dhYtnmP?*r*=*TxK3KAOw?*`9>% zv%MXZ-7ah3uBVVFys+$UWtDR-@FBn6?u>Y==&i%gIpV{S{doWTQ^{`|wzAfMz@PBs zrqPP;rBvm9gX>0W@ixS{Z0c9O4Mrx7M+_JlWoV7FVHkK9FdnYmtAj3i!x&bpZ3aLx zeKXiPW+XWy|GL-Fe5We($S(qq9(C?|VT+cGCMJN(zL|Z3k%9x!jeyZi41IcgSWAg) zv|8g0tBEcLw;Xb>g1Cx-CDvW~$%Mx>`1xB(w`}VVn&tct+hksborJL)XQkBpo(CC5 zZ?8=>Yb9?xm2645)zy%nn+T7OAF3LSc8QwA45B)tyGLz_M3vx`-Ytlu2p+wmMvUvl zN=b|VTtlsLJC?-vC;xtDyS_L2tQDOjS+Q#v)N!LZH2;Y3^1>Xr=*RqdPK!4ZFZhSH z-7M*IQ&(u^ppA*Jkk`Hd;t=gGzr!lkSM!5T!w7V5Eu-!yC03Zj=+~_6x=-4$02E&K z{x=U)1}sO;4*hT1?l)U_?~D@IL0q%dvKqs#fu>pZ4rmglC4kmm#WNZ92t`BaM11zl z5ZayX9Yx1vBbrSG*`wU!>yMX0kTP4bl8#!QY=g1K&t)tAoAdlL#9-knT?~Q5W~SA> zAR7jjW9({_ONe@o^2L!`1X+mfY-A||lYT@v-uCwPJ#TVLn(!Cij$Z|cUToJ0x_4V6 z(CDyY*l?=Z(i|4eyE+e-xBV);(c*xbbDUv!rz!J`sxZB_UhaltXM?QNx`yHEh zZ{#8E>ZH_63>nTb)~z5psmcM}V?_MO<{M1_J)))Wzck%HWe73E?=4g1|1povT$y)3 zcBsbo*B~bou<-p4bNP4p$2sz_MX*$GsSr^3F{lv;Gt=kwt2x^%{K3X=J-(n(%_Cfe zG02~Cg&|UV#;90P!96L;8XA@4ys4zF^`*Skp5mmUDShB^f1B@QJvH!GyrfxqY3X)R^)lXj{UY;;8{5{W{pSPAB z5keSL07QGN_`>KYf8^|uoIz+Jq<#BvkgzUu=K~xGiFQ50L@wvz0)Vt0db+%gW6GfN8MEy$R`;0tZ_vLAZ&jT$$5G2?k{#t>-ZTMM*8|BY2&43WkW(j>QE&;pddgu zH=cGol&&)8m7ALzjN5>=aClhQ<;@LFs1ybUMr>^Cj(#Hz7&zpJZ9y!1>@ErW(`3wH zbf&MNwfnElr~u|Lc-maZ_w{+X&g|v+84ekr9324)8agj8?@8d@y5;22>{2s^=vzcj z;Kg=G3TM#)<)S}iFxhz^YU?*`m%PGRT-2>@)RTJ*(Un7Z=c)1Da*`!>n8v0vy61W< zLA2hUK_14M?}UZRr3ZY>mWw@B98%&jQW9H8notnwsHQa61yf%nwm7QS;eNT)%TlVL zw!G+c_9vU!o6@=H(v@bHN}oz8C`jevzWL4PbwZPr$i2X1oecg%kh+$^`iqRE z@a?@PrZP)!E%A-_Ep+YSdy2zfsquNpM~@nHF`Wt2$voUT;~>wMPZ ziu=QxJT#!2C;|b34`mGTFf4~zW-9M?FXHA#Ykv|A1c8&P8S*T3YC1L6I`{BoZj(;v z61A|*eQf0fsJBSZ#92k;U~Xj9%)O@!Bl6b!{$09u^vydtdk?)XQIz9FM&(Roy{3t{ zTvpa9?}t4jdiq}SZg#-G=Mzx*NXiG8v+;7W%}tPfHE9UdMuk-9Cw z?OL!BEs=p*#dkkZyIFG)-HUt$No+22C0~9mR#l)T$-RQsS1!I4h#qw9C1g)}FuD8u zoe3>?z5by~d4gQZHYhsLU+Oc&?!3*>r{Nf>9y?MP5hY)72e=W(m?*!^(~ORuHw@%Y zF=TK@=;ztcC_z*c+iTKazC`Vb+rP^H9kqAI4bBQ)qU^&+z-x11vV0?Wb?xyits`p= zV1&0f6xlZjAIzHaf%%K%0`=NzK z7mUo0b7##Da}9~E1D0-z5>xRL@?-)|=8KhjwDCuctG1pyX@%xpM8k3ulBAny9KZ8p z(hM0SrYoAAAzH^%P`J5U+uIkax^6QCJ_*@pA1u}2j-nN*m9Xe@jqce1Fde4P`|M7| zA$1P~5ZxvmfZV8{prAy9Ay%&5a-P8xx)Vi8Lt8r~E{-yJR42(B;MI9@<}oreD}MN3 zVQmdlZNJ?sM|5m{++_ZQG2Pa!pJ*_QtTexjvDg7`fB2>p4W;hr=m>}y5*f816w>)F zaLqoi=uU5JWF{qPs;G23tZnrK+I79$l7<)0|GmDxUR(Q;H;s>pS!*&JM;d;3^H~1h z4^xKH!RcuSxFe#0p6esGX9vF8F+FJFAsk#>5MEv?);S%`K+v_t=o(uP1{(oCf)7Ak zcMKEdKk4e~>gn0={CaqGKUu2bkp_I(b{#=fvRk`f?7v4&n=`Sp0*>BU0~B~Z!*0KK zSRNZz@pfq+lUY&~3IVs!Ksd?C-t8)TszNf0p1iWMR@ppesL6ckCsLMAE#u?kG&D4d zii*!9#yT!wo^fMiqjEBLv2VE3rxG9sDk&*dmXtuUdETDHQf1ut>r5{#fumH@)kP#{ zVX?jZlS#+)|X1Cd>FL?adfnj_=9pC34l%wa=L30q$U3hT~@!3IN{;&-0 zaOE#6e+AZ_b$4&o{&SNCN4Bl7R8LGKycqc&fsl9Ftq>04o=bvj(%P>~4(+ImT z3QGaZynQZLC-d4QKe87M@#;trq_)0&`G>R`#RB<`Y%9>HfXfJlUWNZps?NdE}AO$zme{{%=tn@i=Pv}Q$o^2^hX|qvxkd8O-F68 zGd_>z;ej(YHeT+yg9A;c?n%vpnfnb-anSdhEZ5;V@;HPyK6fB)(h7Sa@x_z4=hj=jy-PL5o_V+H4OUtoKZZ+D5(v7S0HO~e z;f$2>iu;QpveD7eAc^hYu~c-5X@6$JZ6E&(#{;f5rcqP^4r&&bO5Q$sATercn0;)( z3tn7Yygc%|?b*C%ViNlP2LS^tn+*&NwULIp{r&qFK-Z2sd;!=ayE{Aokz4Vxw|_o7 zJiNagWmTk&&&t{a>{>Dr_!Q{ZTgN7B_yDOjXWHC^gJ6>@S6?CD<=@)!!h(yUVjV!V z02Ed^Dtwl6#UJ8nZ}?;&Px zwh2Wxh-xg`alGxG>4+ET+iUy@$$f@?azDDo+&p?s0+iq*;YdkSIN^mAttumLju*2; zef240!N9R;+SQ8#gi!QBk>LoqNAW+0A2I_yY8g%C8$Q0>ZGT8UmU_TnkYh3(9Ae2@yg?)qh3z z{-LK28a?egVj@1DNt<$R-e{84`tK{QQ+6H%?Bwo)-32o=Eq+fsX$R?z$6?pd-MG0A z+~ksHUNNiw$@Q2Cev8ER_AwFHe90{~#P6Rg&TKrCTaa#>Gm6J!7AlRHB6aB3DT)+& z;{G)yp`zhx6+Dh#?$h}dswzghu)gzyWxo{m^V?vBg+2BmHgXARSPssMHOKW)dyo2) z-~&T8QuKR241c2@1PC~Ce8Oyj=om8+hEOX@%eeS>5Envf=aaFr3cB(!rlqB+si}b? zD1>&fwr{dk(#qVg{gnx3sK9_S-QArl4L2iXC0fA}3|H>cL=JoL1($W&hD1^^X z5@C<}I#?tjU}M3aCor=R_Y^K`%?=a6+8v}-9l^IQLgx^LN~daiyu7=|RREDJS-+P} zmgQ=pZb6?X@}?X|OhG~6%a<>cFTXm83vpAp4e{A95!xwEkd#nlkR6K0YYrxj`{2gX zL!bTy7L1RZri(@kd$Jiq=znh%8Cyb-B;lj^*&Ws+5B@_F%9u)sgpbyNSW87E1~BvS zMkXgO0whY=NW#5Vi^@QNTau7~t)D}VjR+J`*kMO1bu6?BJ@)U8GzY%l#G>}r?(Wq3 zV^f}5$;`~m<>jRUEtVf7G+h6{Ku}2A_q*96r_|I`V2eCDNX6{!?ZJK5UwOko;z!E7 zR;ZTELp;B{JTwjFFs;r6ygaeHFtxW6JDJnaG0+WiESP zvArb32Sl2qpMc3386CFfnVTzCXSttf`=k}aNWdY1D>x7oSC5&PwWH47?>+7MKA6z3 zSmG1Cyd=gWSEkGR4xHR`rU@Bx34|ONOf)yQ?mQHm`QlD2*H#yTvf^U74=w!;*m%4Q z3=D{eYc)%+6Ad}1o?fEp(9-B1$YaGQgEUZ_-^mw#{cGpC-EIqra8y3QM$O{j{;m9S z+v1$YL#K}G8$MJ$eJdG}Q>*6w=mcg09>!9sNCX$GE=`8#QB&1RR(v0a*EaOu_J2{l z-G^}TER?k+ouZ?51cK##!FaY|q74WQ6`O&DKE7v^&UZmJqR`|7!(}y(DD4hdwmT#j z$ZRLQm7tJyaKAP$K&1rF;TJ*9sr?Q=dSV%>&(DDz6FsM$n3>t!PRpVJuBJIU87~+a za;V3!`evVVVL?At)OTt+FSnZQDa+FBP7g@?J>1YorUqRb85tQDm&P7LL;OO6E+1h_ zNMtxk;O=E)f@SiI@M+1(vt^n6maX?~ND+eqjPS|GvPc^sq%<@%64KIEW@dWXA~YCC zM18!Xb^U-SBqSuXwh9Cr^?$tp4s0lz>`WI4OeZ9RSV3QZf-ORfd`lX8QP(diDG9uF zXXh&fa^E>3;i9@?kVGud%dD))=s@7F92^`fakvO00h~D%9bJfB8i-)Pb>RXj1O){- zIYD64-Q5jd;8EN?J|5+bM8XK-l`SYNY;0`2ROAFU-b@#wL!T8hwACka)^8SqN&B64 ziTWfIgqV$u4bXgPY1mD!JekNeK8M`nLJM14B}K&sE)>?>X4|x=sHnL)jSXU0at4M{ z@a1LlwrxngX3tyeAScqTAt5|EGVKT}G)LKxs{|csg)JL&%R-U@bx@SxHDP3+7Uuh` zYp@#|8rYHhjwfWINlzauw#QXbP*A`(ZLI?sPl5@gkup?$YP3@3)(kP z=-@ke_MZHJk?#@sUwajIeluD6HQl@zpncVO$jY*bpEF7&y?c4|Q(g-;4Y-pUMAlbab>33gSoa{Zz9r ztCn9JcX7zlzSR3bSJB5H!xROIA)H6zW}ER+g&_UC{-MOhBvu>LwX8 z=6In_GWX^h!h9sZ22dh(>JP*1^lj5Yy9#Jc*pcs&}X+yW9N4CWj~05h&zXhH$B>O{B4( zx2NYr852iXyTG;&depZ~-wN0AD9yuI9szTWRvV)JSNaohj{ zF#scKe=_SWx$C)r*OU>dqJqzdI4B4`w7Zs#kRpEjc9o=9$Vp&5Q`oc7cAXFl>k1IF z4h;N3&4T8JT!CwXiz(E7Cw8kEFuIi(LiHc&Xj}3Me_L+m`YztO2~W0Pm^_oY6gZCE_ukm-cHPT8>?3 ziGa7R^R~octFwgJbaW*Kr2q)h0j-!d8$QSsy#a6QwalX9c5e_MOl>YL12?fZlRq9Vg@9zk^NnZqAAW=zy1>&`rw8dxG7|{E-MKw z@&IEz^z}qrO3H5$IYq(TQUc5@zu+1VxqM!x16!h6YEYCi?@g%VI+cZb^ttm(SoJk% zY5ad)dkoIjP3{crWJVllRek{isjQSG@^apXCVKgs%EyJ2>vnEo0rXC9fXKH#{cFqe z_*=5E6uG*x0-hwmHQyXdVc!KZw9oBSsam1|aO!SAo&s{jI+xRx4LNMMKtPx4a}R{? z>E^fzyawpwuC@EEdB}u4oB%~Da$mV#8^{q_gauI1Rn^pHfDQpm4>sgL$@K2J&~9vO z48%gl;^IAkLAn##=PUiatwd7o}SLhS>zd3V@NdczM01}@L~r^idm++Y5&hmt&!uKN5Ii*1Lkf(ab^@U#feE2G zC5AiNKZoYdC79X8`$xn|rlIf3ZjarvFtHdiC|nH1`aO(xJLBe3pP}$mS63BnY({2_ z0CQxy!hRE2N?+w-#3qrAikW^N_4B;-!PH31ue($n>=@#1ctD`t_e^4CZk+SK{M$t=hqhT*_q?e6(A-LFe|q{4kUw`J(TgcykFQ zCS$z&boMbfPZH1~!^zt%{+Kqmwz4`tJlrC4i+|@K+{YFp$Cm_)@u5JCs4QUF+Sba- z%Fgb9dxx9~8tb;_{jhLWr;w!6Z!W)25AZceB|K5 zLfV#g&PNDe>NhQN^#1<-rKZ?{6vK5cpc;;+RC=14raCATATv--GD2_mN<-d z1p&K;xYkAsV(6^D5jhD;Y=wj#OENDv_r-3_Ug?7`D3RO1b_S#6v<3WR)}!A?HUBR5 zylVq>L=hTLbPBW7X|c1r3#!oiSf+IkGX)<@N=lwT0#K%`rKP12?lDB^amPt^ zQd0kD=f{jxLL#EqmoxC3o>+CAppORy?Guxev0_!;6LXp>ME^SmdN4dZEG;cfJXFIZ z2$U9lkXSMy!G{0njuwacR5m!JB95#aRAvJSp3u8&9>O3GDv%l~D`Sn?vvEthljiuI z=`OmQ+FLf17M9c8D1?aO@f^~s%Kfae!)KMCS3GUKRCAYYxcF-Nd+tG`Csx>e(ii?; zGqkc0 zgk23F7-O{-Lni#c_}`J6XzTMGwaFwGftdY}=41J1ukc4+`9>KI$ehh+Sr8<}Qe(MSa?j*;{LCIcR7KYHQ<+@MGor zT}hNWmLMQNc$qYi59M!of4==+?Ci`A3?A+fV$wHwG}5)az#O#_1!d*Q;od$L?7kYRhi)dL)YzE7BF-bcnl zN1tl4GkDUY?2-i z^Snttej8z^t78>SqYr&M+1%XO?nzOArlOSD^ll2Tdxi{)URYQd2*=9;NRt8=fT=q) zJlrwoev3rFadv+!3V=jM~8R0Y&06a?GFV0U)NX*R4pFVwJ8kLcfYQ_%)KE}DKbH!{JGd05< zka#UO8%b`?mwf~KR{zB#ph{XY{}*IOfYb7L0<}#!A?|UOS`r?vOAY*L3nh^A4Qv3920L_?q=;mzGSBJG%hL?wj zmX7YKF9j4!0egy(Fey>wU~g|PP*zb*a@r*CmKk)G7EOKzP$2&MenJgh`U;sN+N)o~GCen! z@atFE>`_2qU_~UDv^YmR%g!cWHJX_VF2$p`4tndIsB^kuAYMVuc0dZwIJrPQzx=AB zLonn3f}SrP(9VUL^$iUL`T6IqoFy8M_h8&iD7{^g{7=>!_VVx@h>`b7)N}0Gw_d&??cpr=id0i`rFZlZL@qoqwyL zO}UIE`ziKhjth7oM0l#cI%b?t(Tp@$s6!vHm2eSQ5r+30@`UfaNVS(uy0 z$WgPivv*wVLr*O&X{)PKVIzX#LN?KN7VQ1u~FKNZY!T29v4s05oMh$Y452& zIy3*P>E_Lwr^EM1sk?p0*_RID@zsWO7u`FC|Cmb4 z*5QZ8KbS~Poww^~@_Fcp>uxRgoWEb|v8{q_k z^vTC5csvL&{>-$$@91zjeE5c*uUK&_U4{dyJ$-`O**u6h`J ztF1qKQzyn93N+W9U7@cJ&f|oG<(hB@%S63o-9r}aL4SMV{w!SDm)GXSGx)JA}N?v@|r+&%~xqojqHFY^#jJxX?WU(CDGBrSwP&-_d z;y}&EqM^q8=X~1WUiOfkhr{>WOxCvI7$I#ub&jKU+kTXHhr6qVn z##zTBFnviXvvoKsI(jy-T0Mes_|1rTm0jwUD=j@eZ>8MFjQZ(9BgG{o*yzKNx7+FI zP#D&>0?@n^N21SXUk~_cQyo~IpC6NYhi@+f9uve?Pku70z2Oxn(>?nUGcgt;HX*dl(X|(hQOuETXvsk;+P&C zG-M=k$KqVpV{UF2E?)fkMn;qBa7lS(CGyZ(SuK%~kv%(~dGmmZ1#2&G^`$>o;d)i1 z2oD{~Jb(WA(7Vil@~Exy@@04L!tAWuDEE5$V=#kN!8IoDEtj?YGwpKkX*vtB(nmHh zuX%ER4P9-T+C`4zmaa#RJVt)6a3=AqM#PE!Z#5CeW0>Tt(gI>GEva)d(wVA)TtoFF*Yw6~y=X%b`nA(V#!^=Mx6;_zwOn9X5!%n_>wD+h;Rxqh zx8!MVm!7rtg4ef8N-#1$xUg#aIkkLjObqgWWd@d&eiIdA)uT^?=5XM0W$z<~2qxae zze(<0^S%7?9CUPvyEks$%p6@yVy3S>k<4&b%3d>Q_btD@*oz>eL!g8Q#Y3m?tE)#l8NI}uO}4S+4XEc%qcFuv-C!S zPF41Pmw>@*GrK09iz**}b7T75K3>b$lA4((Q2d8jC?u!6?adM`v2(Lpz72X?6+k9w zVG<+f`kiZ^ctpQcJFy|SOs%VTdfmPn7I{Cw zkx8J3LZl7;{Oq3ZD6lTuX8rJW!L(=VM(XP7l^#s#r$Vl_+CpPWv}1~2h$(Yl zTzYD_>Wz@!y6`8wX$D8xl8A)j9kWEB_)q1pDk#tKYe}BxeAvo!=Trq&yviso)y{53 z*n`IYQ4Jf;u856|yin^)v%P%9{J|(DDiMQQT1eu@psUKy3XhpPJKY!SbJBFwZ}3cB zNE8iy!eGb9NgG2izV*TR^15Gozi1;@YkdyRp-h!;#<|Ir+c?uUp~cD`fwM6y>PRbv zGTX0w<4}AM`IDYiBkIfVZ9bGqa|lhR(^u(xPGi9rrbXxgS5PYs$u>Lj>(W~C^i@tg z*JxeZ!p2J;aq_#8Z-JMtk@)%M+Q0tt&yPc_x}umU^Yiadze!~;>#HLM>OVjKE4!g! z#*^|C|Ni%Rw-XY||Nbj^xo?yYv0CKKXJ5C4-r3#B+sDiK;Bn$R562_)a@%+Ek@)Z( zpOO;2l<8?tXFe&5{f z3A7slIfX8O`Svx7z+gCzezV-MPFwqZ0*!O$QGiL`;w@ zcl^fLv+Bk6u@^6H1_2un##k@O@x>L&Epi<4b!JL&M%c-*o*=~GTQp<*zR^?#{Q3R+ zH*lY~nOXZS1#d=UX3EFenroCtr=Wfb4Gje)3$vKObK=LxQnLc90RS{rj)A~K6EKGcynXNXm`aaNM>|-r^dh3{p_v~fv~60-rjC`JWaLOm*#Wv)IAla z3SF8~oawzzof>N|_=KoakZt)^G{0k9l5rYm0w`#eKg<&$bD+TOfbEb9s_X8yHQ2TM z=OeAw|ypsR6K(ciy+t#Noz_v5yvCJ&sGTISI!cXD}*2WCE%7=X&! zcai7xVDc%+ty`y~e@#v0n-}&VxUcXX70yhNRZRXl-C@5paNS-R9X%r>*Dypc$(JEZ zaQydoRMD@fI5p8hYj)Th~{hSvDol!E%SwH z#KK@(F&d@kUJmD)gW3NQ1NO zmjJv7%Hv4e-Gpy*;H_BM*|%9ec+uQI`OWwr9v+?0vnePl(g&Y;+ukmR&=~vi?OTKV zo7B-9QtKEPMv=M@D=fQz-wGq>={b(f`_k!^tjo6^_Q<=cnfda~o2t{l?zrY8Bxq(z z&y65^|JZ+e1ffN_-l^HYe`_WiCBQ}`DtO;H6GgEQqCLGmMXg6l5r-0Ni3&*xiC4@8l-r4~I-3vqfWe(2#UPww1x4h;&GNwIZH4wB zkb1UAP_AvdAta#AAiLGl$|~wS+&xIh37+*}F1cf$y?OHkbc26a50WlWp+Q-qB}GfV zx*?av?xibHZdjwfBkyOCWSOeiEiZp+tfvYAr<|OeSM>7bX&cN%poiq;<*hY@DXXPE zLF|n8IhT9N%=66NeEc|vK}z0r>RKl~`O0ZmibQ`O(&dVoG@mrbwLp-T9%Qo>C&tGk zqoc33tft)IzR|al__#Q}YQ^%33i~Sm9rE(#Izr^1h3f20>MaTw|9qybtgNuG(7^zU zP)8>!J3BkxjQk0zg!3}yBC(pSFet$bb9CQgxOeDezAIWb=J5$Ky~I>Oi=ecx!0c$L z)dUaa%8i;y#PnY-Rdkc({^uX>%xpY~D108fkVZXrG0@P!;9^x(mEXnWWLtdew~qYF zs?H{XzK?_cf{K0UkYkX|qQ?x~hf|o*KabQ~L@_?0C;o9O%4Q;zAHR4$LKzgQS&L-K zKk@PAu~5GIddQcuCqo0x8iIK?Z~i$jAjCO`Y~vbX$|utHNK`Af-Lw7l>610-{l|}1 zB+ArMv2lBJQodEK?rTyMdj`tmen|<9I>MUU@sywB9Am9e#3|TW+1U&ctgNhBVwC4J z{4gG|>Hm6yd;`iq#a(Kncr2>P|MEI6Ft1hxayxb$AU#M+Q~l?0tR~uqarV!;b?d^? zXJ==_mM@Xh>{mw_Myg4+kalfp@O7U`kBV^K_nUAObEe!8D&Tttpl-o?gz>YpD=|>k zc^Z=$8|4H4Z4gr(n|vFw|M&0bU=$M-jWb^UrTb#liXX5pKYXBzxN-9)gK*^E*}>EX z^K7sP|J?9qU!Dn^BPN?h{WwU1<@qp7KXLE>o|^x^f%#wOxkMaIR^sE4g;*28&dT~f zW*2%LW&bHHlB|k~JxR?5r;=Nhxo_pnFwXt=JVq57L>Xo2ByiaIsgdfj40O22BNN&f z;r+j@s)is6YCifceCk{HsORDg^*YflHlCz>@;}xGTS(oyhDYV)3Ojek2gW9_g>0lOyhY7oZ*Am@fnKQ9 zCx86{3HA!9Xx-dp`*51oJ{iFIAX0gpH?Ch7N#xrmBs73egz+mT8~pQbcVFLd{jw+i->brY!aF&?pn#ZD^@gS`9Oh;2wuGZ&4hRVNAG44AG60$=r+BsX zh3#-A;S&txtEPGNtzCv2|83O~*Jtg2m$?ttmW>f`!nkpH{N$o+legJCGBh<6jTVK?~$D@U%ZmpUmC-~EU-wykHem*eSK!no@6OqXG_T4+90yBmP3rn$+ z2^8x`%IV8%gsB2OFUoo2@@4*i-~YetrT(srC~^2uMMcGJ+kQR`XE;*&vA0)6Q1ENk zb-RCHx|8k%%dbio6;ij2kMGH=SGuJ4 zu=b=CA*BFpnz7t(5~VZq96tk?z`u;y<_Y_b-~=WO;)Gi2`L;PQgKv{z z)w=KZSm00W8jqgJ+3r)lJ5(vqKQ!b3Kurw9@;RpBwQ&%+Yl&^?8)?hyD6}8@Seh4H z_Gh@&WuP%(c^#(R;yU6x2LTa+rj&prZ&tlA`P8DHF5mvQ`NQwW@Se^+=1r+sT2N% z&77iw>I}Hhavn8B@+d(8av9px0t5;zQo^#!ju$Z#x%wMYG9-_90Z^f5_CMc+Kw@#> z?*?m%aaOvXZkCN)83)JpLA&awzj2i6x@ZmoonX#j>xu@b zYe*yK`l6+1*YWK1`l_X(QgiFpEnHe--@bs;r{5qNM_s|UZ{MEXqkx|&oI7tE1I8Ii z!8H;2)@25o9Q=SeefxG3HrYYuubyu~}HJzIKZ z01OZpx+C?60+$F0ib44*Uae?pZT+dUlQS#I1}4qt#EJEc<$eUfzjI47tmtDIk58|^5(KKu+4&2R<|%-MLk)BxpaS<>Oh(8V{#R_!7bCEzctNrDm* zx;k8H_JI@Vm!*Fc>_EFRETS!xcNoOFr%xH*Q;g+{hH?W@6_}DAt=X40%R?XsED!`u z-oK){RYu=S0N3)&wh}QiGrFW^#Y95KXZP4A7h?{CfOI9adKDO!mKNh>gW#}6Y4n`e z1{Rjq$G%4)?_O~CXt{l%ynGg9$G}5Mm_TbhZ<*beXI@cWP8XpZJa0i-(MXgVK{#t# zV0B>Z9PBmrF32a{V>IOPX1qN!VrppUAke$(?9*E+A;F9Dv$#OVu5`Q`EJ(ZsWvz0q z^XN=hQi7rg*ami*osMqJ8dNRC9a#Q3YaUCZx{b{(gl0YG6?d~SGkXrc-2?@99>r3V zc&ZP&j0o!`l6*%@YvVwJK?8X}hj&3xNN9F$jy_`Nu3a7ZmcO7qz$uIIEtG(hb6wum zTulAtVhOFd8#k;9taeP?5?K-jpSlUQGN%mKy_~g5NsbzP$L)w9yTyA=tLICR>SNBG@MXhJ))r z*kXTiZxO;)>`4|zZ3BaA|3no=-$x#ROo@wQu8jky_Hu|aBZkBO4y8;m?W(h{Kr#3X z8#_8?fUihRwZ}p~cI;S;E#-y#9enpFynOvyPg{FEBY@InV@<^ZvkFv4?pIlOUt7!1 z$Hxb}%FoXay+mWY7_riQd}Nn-rN)hzg_oG2?J_dd>f7wAyB@fihy@8MLQ985d{gfD z90aWoT;KIIrK&(v9K*HUEZ<^1*3^Ax-7OS|mo|?WhtCPX0@eNq;gx-cn(akIwr?kd ztjRl1;84V*^z?Mt>m9~w9WGI0e}8`s4K%Zk)=9jT!cB5`0$(Q}AQ1fbhkQW5 z-^pAuNDMszJp1wCaqDb@O|{L1HH%gxwJwZH{HP@Xt#i|sxlNBsdJD4-V;_t7dK=H=^gN;i;GAiRpKM~$Q_D`b0D9xDto%R0^zch zm6c(0k9HQNt5uNAf&)E#0mzp=rkTX=gFjYSLU*o$^er4>ORq8J5%jK<%_C1B=4G=K zdO@^WaV^izX3^cD^nxgAl9M|*J<{e}bz<`COR!vXpU*O3jGQAK$pe|Vj$ok0Qx4>r z0fSu|R?E&-+P#}dVuM_1S>}#NV)+KDNe%V&Q)9jMH35JBjPY*Tw6%ocF@9lgr!8g7BmD# zEhD}P?f2mK4mmms?@y5|iF6^SO}G1fHxP|x+?X%W(6oTNJvTf`Te_OF~tQ5hquv*o&_=i5f5qTWyElQ zfyYDy1s}L~TbWUClwNFjF#{FbOR!iY?{l}L^bZX9LO#5_v-Q~XSPW^oV>JuRq6Z&6 zdIYQRKYnuGOr+H64TYgGlzZzd<4Y7mK=R@60x%fwYh-AchQLZ4&^{~v-A%K+gz5aN zW_fH))~sP>JmKjXXRLWn<{3Bk5+u=MoyF>;uV{4(@rLo-kjR!T z{ct20a+cS~i$)+GkI|$o3sKM?wb=Xo{9*j~#p~~A8jVa%Z@+UzB?MC~Pk|X3f>5G> zI~V>-kb*#Q{Fq|$HhKAu&aLEYva#i{gw~XUB+D_%BsK#mM11x4vq1X5!Qt}Vj`&z8 zy=HOt1pq}!A)&n_Bo9OoNwMuQFnEh}FQ~$g058zft)`}iR}mBx{N7um0(uyJ0yy}< zT~q0k`ov{a8`3)4h7kqy@gsQY<5vxjyL|Z_cx99a&dm6Ec#NrpDC5@!1)ZLrqeJS0 z2o-^dp-zjT02@Oi!i<)D|Nb4v3@7NYZQS^`WP!vBjk_qnY>b-*0bkPw~~TF-<^y507bUX#qhYBQHMN$0lJ`Inx)Nhh+*} zHv67zX-o}qCDu&1gT=+gFn*vT<3`ofVBzqj${>Z`lfPQJWFVa+q)14i0AxknBkzNp zM;6J326llH4Fr=J@x8mkT!(Ak4SQ|#=FP|uWz}S%Iu&9dThz|?HAJs9XCz+T@Ew+% zV#s2pUnG_xQ>_UAC%&G!pQ!;GLDT~v40+|>k8Dh4M#i1}sdia9Z0eNkh-j#zdG@KE z)6YBEzT$wMCs5PUr~_{C!>)e&pJ(&TnY!W<0U*6GR(GFQp~?W?I8u1d`Hf~GrX*r? z05rU%j(&U~mS^%3@D1p!2o`){9SyInYcr&^?md;3pl&`;P`Zx8!S5@nV)~z)Sp{r@ zS$!B>2D5SMd#ALbqLsS@F)*Qy7rORUx=Y-IsB~Ttm*MCr@L4js{uNV#?%~D8iOoQMLVsNP|&8R9y8IFY+FZm`< zfjYvHWZhaY%CX&h=tcpv#FN{u$|+G__Ti0R;~r z_N=ehu%v{*I!{NaO*K)E;?|sY25`Z_0AA*vU6ptid9$k?1R0YPV{Bsb=Jji&0k2EP{;qmn)lme5553~($$ri zB~adg!{Ia~2%d?+omq_cDS2~>Zpdr(*3i&U`f~#W%zN-Msx*KEd8WAnoRdTEwum{W z31YLMEz~J$buVvkDci?_S!6G(dXN|^`tW+XCitw+`8%ei2@iLT02hEIb z75L&tKmwzRRLtpbQuwEoU8nBJ@}o@d>P+9NL>yT7olN^eWxmY68>WDr049V>c5sEd z+aZi-6%l^!+?oh9=@@~~?V8c*P@J5e?c(B6QBkq6VhwRi(`}Up|L~Y(8?2?L7oX)0 zmS;#zgU5f9yo+cJgmnc4WS&*&5p3M0v86>RS=slLAUDm}!Poy{T3Q;xMODy*$}|uA zAk{pJ^dS-Vq5V4I6!_NLw{HVhp%RvsmiC@y$sO3WTrK{FOi*JZaQP z3W=u5YHV!upKdb;Pr$NaLuF+pVhcC{tf@fQ514-o_}N zfWl*{V?oKRd3dg%kE>>Q$DnL1ELd(7=gxTOc%n=+w zpV;31JC$Rng2GnI`}M7@gjy28@2}};^e!Yu$xypUF+qdK38ixq9m4|xCYUn|4UiQ> zR)|y&VnK(?5@wO`5et8Mug}N#q0*qGwH1?uo_|~$H{SHhBOB<1DCC+-t+tL@icIug zTP4b?GCy9293#_aB}C|TgLd=ZZhHLuP%?E)Mj^;4Fu%S^k(Z_GxxCYMB>XGM{ zn;zAc?HjiU2s}PD77Szxx5t%1hM1;@LD7P_kUiFEh_2qRlfvl2P)1W|TXF5`)h%A{ zPoN?J2$)D_`V3!j(1PGFUdHeWw($3^aud>5c)~lL+^4X8Fos}NU-@U=ylD;Pl?wWb zAm;y%+lV0LIWg!cDJeDMF{Apt9-k(^aP@7RI$P1qf#OVRhY#A3A_y#*CS?v zTDUd97rdzojDdV_;Fhw4%>cIIixJ7WK|Pz}a*B#P@yLLHtz(~yz?kXZkR9%@4`JiV zCE(=e!k;}=yS%@>#+t608_7eQ9QdQO^)*U`9N+Fgh$!V`cBb&?kZeIP9W zwz^MFAmzNi$g9!=qy@$YMSbQ=T?r_g0fJ-$n&IIAUS!LZmD~@!1hfYCPzDmJR&x2Y<<`Ig%+pF_%9SWplefJSmgInC>Fz#oDRg{M?-tdHEV?JwRA z@CM5&0l8ZD?wAauimqS3z9l~==Y?p9bc0@s(&^dB0a$GWV+~Pka4}QAf6Hk|PAX!gq89td zKH4N%f_PMmf=z`20`-)Cub*63IeQE=G(a&st^8ok6LODNsDn{+m>FU zoElRMMydrI`U|fgA9pY@F~I>Q_V@RjaP{O87k1zS#m^fw^$yk5-+%njJspi=B^ZR> zkforr?Ay0B1lRq{#oEIX&4ncZU+3<2uLh+ZD17w?Za@^xw--?0>Qxgjulo)_1IO{V zcpY4tN<1AF$IsuN0M&Y@s%F34#6ChDqp7E7(U~Z&>rc%I9-&EPsS?l?LL1yge6|ru zi2>+ktR6&`9WxBWIws&X35S!o!D<-KnR;0j{6<^{T8iTmLfUvg!rg`HfVXpfm$4U+ zR@>6!K}iYWso5nhim(*aS+^^O*Bpe>{f=24fnl)m&#q>==4pB4$Ow>!qR$Wsi_B{@ zg1*rvv3Q9-UOn?&q647?3Dp_Eiz0Ch%bmUX&qW@ENi1T7?k(0yD+g2vT}?aIJSO^l zcsR;KDzOofmu}eh2t$M+eOgzy^ec6VGmD>U0UrA1@$2Z93!lb#U;X8zHfPx5ePjb^rYNbMvN6Z$?auXJ=;6tmhcE2*9=?q&z@$ z2-t&yf{+_};L%$RPK~o7?WtSoM=}`kWG4g6C%5Mp|Bhh*5!luA&=HJ9Q^+Dz-AJJd zv2UkIaP{>UCy_{^qA$Q(BfhVz>mO!Hx<#x7s?f~@IbP-O3xdCj1WcS|c?mPM$5d`F# zWV7GAg%WIB1};k(Mi?tNXl^)L(=EpjrBhI;D51i~Jj?jPAo=b2_5!}u)YO!7VzzXSz-+91GfMCl z=6q}8fYrsEr|ux<&qMu|!bgzAkTC>+U}3~@wH%;$1+y+`19d`?qci_%icnh6ZP;q_ zh@_x!8l+fL)qR*-;^1$nQ}*l$i;mV+@R7hEF(G?d%bdAnuYqnI{_WZX6+(H1ZD1O~ zde6(>-L`F;Re_m~(AA9bEneH~Dj#9zK?;UgEKRlpVb%olWdJmGC5L0vD-NLMa2pZm zE8vei+t--+tmT$vo_#QA0uxpPuN|*UT;K4EQgT$ieIt6^0PtyUY0VgKb3-IS#Q%UW z!ycBUM-ouz`8sL)Xj`7kBgX`N$PrD9jj7c!lbV@g1EJ)V5t{B+YK3SIbuzUedf${7 zu)RjlClFV`=oTT0DWrM+|eHUuw`w`QjS^-+%l7EW98&Up;; z1kF}d?VvB64ke;1Mm-HB6ZP?7e4??q4h&Y?Ykz?Ln$m6RI&`1LTlNDv!(#eH0`bKw8v+kk!ZYwFcnN~o*|DPy zHO(ZFC)z?N{UPw>lX?X5;-aE6zdv~}@$5`{UWHOCut2cW3)UW0LRA)7Y@D1H*gHi< zq$(EdtdWjFsp1U|bA;9o3-<;IRe zqIFom@HYaS_uab{CzywoQHKdGL=yA}%JW02uOKP-3Mt}BG$Vj=hCp+=S6E#B_5LZyIItt;Aqi!WXD;4+ag1;A`Y-0+Rpw{k!@^zb4%!52aQ> zS_XQ0yP)X8nLxny7vA?u%+o#lE=CTHVQWX!XHXF@}% zYU70UZ-7eJufwZ!pvr&x#ful<46jccjw6w;pCl8`5jn1hRb2(!>kw&>ee~1Af_UXH zOz#6*NRIuEWPe+Y8nHR%EiTnm1}HO`}*}U zBu9`;+a&L9gO|}g{R)d7WzGm_k2E{xJR(~V>5~j@Kn%>>+($e-?C(?n5)iE>m{jJQ z(Kk?)oZC*zk3W5{6--!ncQ=jtt>k2|AE`>G1+q4zKsa>+FbSj+nCkhiRYwseUcGV! z&5Rb>%RurcxZ6^Y(7+nFo1muh(5KO3=<=< zPdtEspsWHjCS-4EXo$mHd65o?2oF!#U)GXioYlC!#>rk7n;LPI@tmqQv=QxKQ5F`b z+n{xT^AB2_9RxO>?I-+XTBEkv4ok(JfU|62AQrX0}~0+GSnwBmsi~-mXK;vh~PE^zzI4H zB?b|OfGyx3Y%Bc;NR5rLRLKYDgRmbDi^d$HqbuZTo!#Bt!;B0gK)1o3$R7V_TJs6$ z*4}?OD>0F?oJ@SFdNkT3V|Wq8)qCR)d|U55z8{cO;q>I~n>Rm!(5OL`2-+?=1LNJf zgJ=NlQ+{KUkG{`sg)>5BYHatE2gnsKFRyxU{DE)lz0(8%j1Za$EY-n-HGppyLWf~| zt#1shd;9wJci?E$wTAH{^={l4IrOP)4AV=aP8h$e7#rAkJhlpUJ~CB{uqQp$L7!S$ z?qghFnK`!EklyS+k!yMv3})0IatUy*(CezHsR7fnGg>0>&C#Q3SRDn-A*%pS=erG4$XX@(mvcZ{ZZL6Lg$B)Y?FcrE<^p$nXwNx&6?8VvQJ z*!-E9nKcnnB55*c7-<0$h%f-leATK|XT!oEBmuGL0z`$r&om6|MAN3uP0?3<-ttC~qefmE(7_DG41?gPBZ$f236|zY3qdOV{_|&PR0`C_A2=UGSi4XC?83vuwv8v@bMRt(Dc(zqLC}AVR=_jVhOT6k0xg3P9!! znL#v!##5-un2B(z!FpoJ{zTRS_X`Qmc-z%giIf0=bB8i7J+S%#=M`f-nS`t1wJakUj799(8rRsVL`tn0cUc-Qmns@T>&U_!3#%e9&!#+D%+r7Hb!q zA7r|;tn5@%>MbW}{Kp`%)hSyor)Hx(GCy z;5tQE0BprR1^j_nd41DmS2%RoM8)8FKUmtu**vs$BOC>mCteLP{YD-ho5i(+AL3kt z~n&CIU({ZLw8o;|d}?h4^D&NZJzhF%K|;z!mXICDn)<(Rda3QV#-y$v?!+L&cD- zEN^j@MVX5Q_zZ86>}+I$cOi)lbTN-`KjNpE4&J&K-L_z@rwuxxox+<5nuV>@3T)RV zltNlWD24h8kItf6$bHIL2C-28jPp^1^Sr_0@ zOpf!MQyUbF1d2t-1lU!_CQ$|58u%C-eSYKq-sMkTi*Q(7#q zin5YYCF1I=!0R}CMH@EcLrn-F_Frp5Y>PNVPoO!a!}yW?u&MMbj#n1mTbu`TnoJh+ zC@;->bJ>nBy?XoB?%^>@nB=6N_lt{@luqLenqT@(z9YaI2H62K2TyJAU+W6 z-R6*x063mFe-y#K{uft~#I$qg&Y?`4XQyY{R9TMcU9f^+1NM<64mql?(Lt=MYgxT1 zy#s`dLl|iNPtcJ;dsLn;kLBkDlukH-@T(DcJLCax#K+(69f5%PJ<@2G_kVs#q!WjS z#R!oyjIl@-6YJsHFd85eSYq*3AgO8Wj5bUKwB9ah_o_DbmJjx4D9dreob`n zdGSK4RpEya^i~*lf4z5bctp7gx+<>FSs_g1PSGq1e$u(>9ZEg~1om9M#7>Z`32~08 zzE~^>+m{u?M7mi-1Sj`+_}2(^ph^a`S`d5W?^4Kx)FQnk_XytCAlkMfuq@7 zCv-Lh+^I+Y0dNOV+nwiC&_p0~?;w|Z_>(it1KN;WA@)JvA{s)=jHK`c?49xEdh4+7 z-;Z(Go#}uqQPqNiXL_W$HF44w}z2Xa-qVDaIO1O<&s4nQq`d} zx&5ztEWjjUCxY_<&i+bP`7oxV7iZvZQusnGGx92g-b!ay`|pO^Sy^<#pZ7zq6f*hs zf&&rZgYqo~QHs`gBS95eSNo2dj{P*1t{ z^QNZ#f^Y)DDCD{?egRcnXaKwj{sav@3v?hPBZnx6Vqs99xv%Byn*B8hV=R8CStbb1!8Ji47J@-S!I8~lA2A%V0DJ)VWLxB*1|t+aKe6u+2LZD5B2jIC$~Dl` z4;|1YF*aTXMJ;*OW%qDIf|eFsAP^VwFErkQH_)}3uu}-*P?7=Ni}J4<$ccd448iut z#*`fN4>dxy%&F0KeZg8dIs}Hw%GI#q_pP+0u{H_yTi2sv3`fY~ZPdXO7J4{2eFc`N z@EN`jTZH^4cd=6v#)?PDj|4^<`N?rWs6T(8Qo}x(LX|49SWQuq^=mdr5*&F>Tvs;8}I$DEMk5DR#pD zAd-duLCaGD^`j6jP3ElYT;njb0ELg>?!W+2tH&&|A31sQH#Qo#yt^d9 zvEn>ANI_W%J?&V?QUJ0S1U>GFOm#PcWEsEl&mgW$0t`n9CVwM0_sF+z4?~s~VOVDi zYkaUUQQ~AJ zu-|vMMMwZ0(d2t}2F?^A74qd%!Uqfr;p_1>K&^`<2eq_bU?t5U)&ySpiS9IzUyyXP z;hgE~(Zq-Fmq@H>i5)tEyz^!#E@z~z;Q*12a9T3zf~FCnCq$Jg!F3b3JAma)1@FUv z7{G<1DiHOecy8XrU3iD|{u{Dll9Kr_U0IdEpm_07Yb-zf(poD$BH#w$hwRb~z=ayy zLvC*6$T#5fP^|ZZyX`xG`i#&kkns@}gXD4ptf+*R=eL&?fymjVpewW9pnOIMvYT^Q zX!q=El+pVH4Y`ySB#?C=@F$3pz@Q+kw0RGg*j4nI?_6)s*SRaQ{2Bx7LQW64qHpN9 zvq&r}?A$}(yziV;{=93f5}o|apMIT+hd2{P=hFkX?MPiB*iF#gp@5d!NckMOu|Em0 z#&l1Ttoygkq_iBAXcH~fXWJB28gEu?~2Z9V3p)t zo1aAPJ~NqKdEqn$37H%so1yrir=z0-3N~bsh!5G6-Tw$J9lS8sr>=K#LP8smCm}0= zeFgc^-rTJ*13D>;`Wn2E;ZCyncc#CZ{Dp#<&O6z7{>AYviiYl&}1KvT+MYhz2GzMw_QpV;OgYycY8 ze$>}EcI-PK3F7f=y`&aA22wo>p!mSDp#SWC^L&d5^vaqh$1E6Voze29zt@LX1e%PO zwY}`>LTu1QlnhKE5&7lINm0At;6EES43z}Z4^fyL4|^=2OfLo|`iP&$1dUN2(w zP8t3ei*X0=fFdAd@%%nOB3QBBnvf-ApekYRFjFR9*Aqbi+tXe%5kNQS?k6%kz`yw2 z*%T!YsSs2{@NEg-`qa+S>Zd9b#otIlN&6HxBKh5pdT3JphYt$7c3JE20)R%TaC=XW z91wG+{?S?7UtTg7#7t~J&3fG%SlGau1sbffdtn$x89rTsxJhPm_kXLM@8{c zELfEKiKH*sFd_Z1@^CIR>K%Ee&}KnFx|P$>!=uLe6}wna8YkLOVToH6JBIhr0U*v1 z$0{83B``Hujh>)Cw!42G|8RfcijXb>HdKcC4mV6)gONM<^c+HkN|cZZ*|2kR`oWAM zbwCR#|LWD(tqDlKfYr_+WZ#SsYSK;M6^6CcDj6;+(E`%_QCZ6;PC;lEgc$)0l4`Xj z3PHezTnJ=tY-=k8r5DBz&Z2Lrg-Wj#OB)=fEd;1lEUiH#6@t2!__g0cMk zDTUYXYHQQMw!?h#AYnD-IETUc>h!w4ey)6r-N?`wx&L0j6fR9D2b5Jp_RU|dA@9S4tgdxUuD#*6%4)_gN z>VmaIyA^3dae^^gw5~*%hnTb88w?q;AOviIazId8NC=*MZ;gr}jrci&Cx(9nOcfoC zUE&S+v#H~2+ai+^orEeMpEV6N#|z{7<7}%ow3d2n84JN-K67*a$hpQeMCKL}do1MG zv3xD>UwBo>6{%@ykGQ%<7Lw`8$HHe+$LlHvALlQpU_Cl8fVN&VCL&ZXE;Trw_VeS507+0}At@QOMps|I4RF}d zkndI+!fmKx9E;Hw=VCFZGz2Nzp}uKue)0A#yBl#j2?%~>9v;a%bI5|rh||G? zMwXTr5kHOiy=%(qzyYC&<0bIbD7B5`M|B*wx5ZqV-`td&y85c(PeXe8`a5K05j8HjPCVl7(KxEvwX0{yO8o@-p>1rxIcAj*J7;kaVUB-*d3o;;H?uDSaSQEWKw? zDf6v6CU?^yJG1v!4tjV^>Y{WgXjB`1y z2_AzgbZpjt14q|7C#kcTG7ArJS z@!-3bmM~{_?aX&j;52)$L92amX2ME$X7?cK?fbK$#6l8*7$gtz%;+0DHRY2?sn7R` zDarA^3nscJ=OTurFBOXL4DnRJ(TatV__@ z+dGOPBJ?njU|u8m=rsGQ%|hPZXs9s-*WtKaR`&7F^!p2Y($S3tL6sLM7;bKE0cRoy z1AIB&%pB*)v+n#$r;Ndzygc1`OE#+db1$6?l4NM4ze1CMB+V0yG&;t`U%sry%LZC+ zVs`%9x5IRc5|^Bb-FgBTS~7^3W2z@iL5D`(7uu_UeFI2^Vcj>A1^|we9MEeau$zi+ zlibZ%=aG6R8KK2|jAbJgg$V~ zXl!aql{?Pu7ww>MPYveR4m3>;x{;$7gp%=GkjB70GG;0i*RKSFChe-5qNj8c^rgkeBAX;xB&Y8Aa+z!_Zi zOgZFuen_$UFLOQQbeQWPB5fxnG<-J+8f{vJFhd!9NgmCn_j_CZ_+; z?#G;hjks{>lDw=etF^WOpe;(LqdBj{#f4^)%fDe19>~hcWn78^*#%NwfoGjwGWnW{ zssXF3F={<3eC*S?5YD{Z3Y3VfUq2Y0^X&0Gq0h>GLPgh;$q&y z9SdD>7^ktd^+tB~h%6=qY+G6Np1*$e;>Ck3vfZFM@waw|Iu4zIc_iepK&qw(4q(#R zSXohGrodz1?tTy1as+Kzla++xx!$w9D=chfeH=_E*^r^TG4Np|zvoJM;*p>H!3WaP z`0AP6cF+EKe%%@-w-8z~@5+?x6*|Rup#AvlCHC5x>l0^tpE`8){Zj#(|1%ZsNU| zqT@c#B3V`fvf}HP{a8)lsuv9Is|-W_AY|mtl7DGpJhp&`$>Y zi_oVGSydL6s~**==H~K9yZ{Nbwr-b`yQY&Bl`Tjm2<%~EYI=_I>EV)tBhv0g=gi znTF0zKNwtw*FbCu+IPoU18DR-HnpK~f+NCH(gzwAg+M3q5IKXqZz_u(#>Ugx}Ef-)H5p2!Z9*h*l?0 z08v@coT;E7mb0a^Gct=@7(z8NJgO9zEIAqfiA`7K3Xdg*M?$FP?c;wx0;00Cf>_cFqhG#Jy;#A;f@x;bj; z>%W1yE}o(cnChD_wEgUvG91aiAgKsf4&Gbn9P7l*X4CY@C$o${ng$}dsIGf zP(Qf-35ATAgQ5j2 zTd0deq5>v8zv}TeEGmh=v4>{%uB|nWAOXqR7?Dtx;=^fcYdgg(x#|=#nW0jgjL(qO zU$2hVrC{GKWHIH=55Dm}d{}rcR{%2rzFdQGMd$-$oIxsG zim*Bh1pFWwT2~HMF?hS6ot3R$5w3?|WMw$J|67 z)h@)tKp$9?PU)E0yu80(>Q>kDaL39yJfV_IpgLctt*^hA@g-K@vXP{sYDOSZ|HZTU zk}CuWZpV)o6c(DBnQ6wX^iizJ&;Jfn9;pDZ?xVO#SBP&11b)rg24I`ajE$fEvw}n8 zXPe$%cykyhy9)?6zI=%l3e=IPm~L|5fOD}0qA`uvFeLkyl4*>eH8zUF)a<6#9g8`tT%615LHJ{18=Dx4Kc=EeZs{-)0fv||#2<1uyQ>0DP33I6_|gfk zE@MzuR#xlH-b1L0fs|Aw&=RXLYnmiygNgy@x8A82#jEj4NJK9N6hNt)#TX|n%dHO| zOgOg{x|9|=REn8PddWEcv8d7r?|v^YPrYdc{4j1eq%b`_y`gv12`3RPM#KXfz!m*g zNA3?!8nkH-?_!f}O)ygGwhy9g362n$3ciC*1daoB$uS9`KH%q3?MLhQ0y!z@#EPc) zV_pqBd;WY&gv0D+N@pZhk?GW26F{3-O?4(j5*unVbQRH2HY0W0>%m`WU;)@(WGbMi zrk1{tM9|>DoB&}$fw60lI6=B$rQ-|GIN@20^p=(%z#Jv3grs;rg#i*;9Hftn14fu@ zC`Np1(U|rxOaeg$TpIbSnd{}^jF74qqGFWmT;RkBW#Gbal0vcRN*Eoi>PUWgjG?i^ z?|`EjoJVAjwoAqk?ggpIuTUu+Dz-qL7)m6PygVHLBSb-UE+HA~ipK+6Tqb6^d|F_1ycPzBhKA+BVm%4t`|kV`ilPq-bcukr4qE$Gi?s zQMhjJp+}M^m;UtW?|G?FPz9^whrj2T9&vDR02hh?S!0eb2%8d=;`S}kuba&)7rJRfEP~W+7_xvog>)>SYGrGGfi^e12BIZ z9L&^9M#d0Y73qgpB%!+aQg>eWarjgsq*Ta(v2YF9mPe#g3H&8f+sp!w{Lq#Kwlq%;92? zDuCa-_R{I3>TW7QEj6`+$UQ{zBkX&6$*19VY3Vc)>Q{b*68fTMsZYM1p72G{kR~F4 zf|R{vAwV2qKQdo`Ks9~r?0ix)Ogz|!aX+Q0ic3cKI7GH5Dqc=T*CC8LJYGV4{2Ixc zz}fr2xhW}|e>-L%8dT?PM|EIreLeNQO?|+7f1u#3k3(p6MGtgPBk~fkhn1l1z^Fc0 zYPLb3>E|~CG-G3HyDPtk3C5ti@-&OI;O^a8jD`-)%Qi{q1P`l3?WMN`tbS8^&h9JEyB-_EFpunZ3>_TpF z@d+3xa3x4jjehq3aTGzjtE(#G<#vyW4MyhX=NGRh?@531=BDZh-Yp-T&y2@iwEIMw z8=3ycI55qE(%J9xO0e_};GyB6_({IvTeqUC;WtcO{X2Rs7Vg-SK+TZcqw~jcWDc<7 z?5pr(OCa}=uK~RYh4%(AI@Q(v6MoRg>|q3~Lag}UV9AFe{*`B_c2nD8P+eVzKpP?E zJ7*76JBU&?7~zxP@-rw5a=B?+s@9R2;<2cUaM8z8x7KUTN-sFG7 z>XV)RbZOuYu|_LMgM{x|*xza9%-{9((lRoFXrb;LIozHl)nCeo)hl%>UP9*zl{1Eq z1UtKxOVTfN32Gl2iqD^4GW278m2dV*zIX3tL`90Oqwz_Diss}|hkp4hToctryhx5b zIE!ss!NCPQ;$5aEHzI*W5Y3Z)_oeeG2MP;vDff-OlK~`_9<#BF;^l8284YC7(6F9R zkdtFBUUcF7c~}wP++8>SeWm%hXY}P6LHoV?{JBr>-UA<;e!}agTYH3hEnv0T@;cuv zzO(x1wYNz|BtdAo$&=3jGmjs?6~h#w6Ri9GX6?AX+n8!A!P;|FO>Vra3!Do;;})^PjK*a8$=qG<&!bOwiX~ zPL?HNX+AS^o-}D8xIvJRQ}T{`-LXVbSyY|yaqacF#H*iuMFCBI?X6=54O#&Q6R4;n zi*9o~Asvt19qIp`_6DA|EvK4lS6DLu{QZcy1^m|0K7B|u!#n(c)?m%+O9Y9~Zyrws z{oT-DE(>DlS{RUugK7HNv&;EwMAM2bxTQZpjN3!agmLu*5a;R+wTeE6`XkH{FDX%r2i3-oH8^iboL%n`zLcZwMb}` zvOG#sB3(CgidV<4qCx)CPz_92#8ii@nu$yCi0p~LuWff%xIersp1|1DH`E@?;l1cR z<_h?LFcFBa5lsgFN3l_3rWDv*JthZBg*Zgj7~ZsY#&QM~;~y1L0$?+e_OITTQ%`1? z=lh%281NWL)O%SOAtt9fiX|2!(FI_^VEhGCIVp}2CA(vz9gDx3>E>3ihjJ7yl17C+ zhmsubK^4KfCknnx`7KCG2*GqplOJ%*n=2nrI}hx^%AzL~&we!fahVLF0)|iQklPig zp6fjyyqS79NCP~_1n%X32-!QWE6%#f(P3e0iACJ7-McZ|$5^Z#C}q;5T)%u-wpB16Og(#c?`Z`i z&Mzes7bs|K6iSZNbLT?NDH&10(nwp#ZbG_fZZ6KJ37duxA2LUN62+p;)T#gLmNX&B zs0Z`H*gs*g=zbR>r#%fl-4Hbgw0;T44piZXZx*?fzGc?z*+XVstU@;sj;7grTJq_H zgkmb+Jh?7A*?bdty2oCEI+b-6wxod22`O7)q6wxj5_yiczLc*uq1}OFcoGF~{=2up zP?(fEa%9Z%61{_rx!97m=3WRwRMlNpme1evGdVBOj+Tb0WknAwOUr!h3WQSi(MMC? zI+4+-l$7p&Qz=XQNU!pfK*z4l9THun^YPY70!sW;&Q{IL76yy|_w{U-FF%Vk=E8-q z=&C#yb$q{SkD7=}0a5^b1`)V^-MZl5;EATCT~jdt;4|f60HkWL$V_m%g=AKkQ&hQ@ z+?nB?+a)W?BHz<^-L%+!`}RHda-fkNx3%RmU0%j&Fh8eYm1Tn~rP!%We zm6J01Kii^QAF6d)wRT!8&3g

!o-984sEDrB?FhML{+6-|g4(Q+jIexd1b|wuc#r z-SPeFqQ}pkjmH^>I`iw7FQ64Y;4Q(%Vehr4gb8oC3dl=9tk2O#4owwiYzJ)4=<-W z6AG`nbMGEddnv|8Pbo%t8y~-Y z^QUqh`X|PB+^qD=K1%G+VrgXawoCZ#U5fIfPm$UWvP=K`SnVIxef`0-pAlvKX z0ix`w%|aS}E-fJrO`x)){k_;2V4&jC(#hFzGDWx6)ve(v3qAt8;<~AL1U=%Y@MV~k z4@y<3$s%f6DeT}Cp1pSM`NM|?*5*(W5TFVS<9s%5G+kdMm7eVE=jX=(uXNDue}Pdb zVtVc8&+@-b_>`o`pSf9%JY=uYee>kH?_oMpz$k274G>gQ)$o9wXU^>SAhUG%3!)0X zAiQ5PO%V;1_gbObFtcs)^Ix~l$ir&-bR_}YX!H$&TX9n#qNTO-u&5n;`zzS*E1UtX z&hb-V!_gbN*9MkxL7xnL4_FY`&#kojB_9f5_JF=<%bN9p^&m<7 z*9GS-4l}=s3m&PP3_iH_1!Ag2P?GPKb{1JDojuD(>RInlo1q(`^JgBZP^Rr(A*~ED z8tc|&cZOogx)!MnF-84AXC`SKX3hFkT^)7on5?Oh@DiNt=f*?;1n#;X2X^)W(9xr| z{|IE1W0}eqH`NrhO6XI0|CmknoMIFX#B>tl^xd5dPzDg<vWL~^DdVBqZIC#olAd@#$*f72jod`7$H@)YwO0E(YM0xOR?K2(; z5Vw}LZ+|qq9u->l8aJuU;!QgWJcYEh&XlA$BGzuobpwT1)NLC!jPwwk?~WYleP}`r z0}C8i;jC(GOu+CEV?tystIIE1zIx5K74@I>?x+A#%lt6@Ic(zT`LJm8a?CkTT5y5j zdg+oEZevi$gk&)HAPrC7E;c5FRrh@`@NEBCOz=h@tvk}Eh1mrJ-@9dd@3^UAgz%ok z45rn0_|mYtb7&)~zkjz+e40Pg)|cA7=6h1e-o0zRCl=%R*uIOJ3km^lpYn-)ejZko zdwHg}(=J|w%$)Ss7p+N6%1wws<>lpf?@qp7R#Z^%m5BjV#@LK##)7G$sg~Q6(JxZ5 z?`?|>sJxdLss!5G^kX0hIVP8|a*cS?sJVUU8EpUwQ}lAUM|enFS$MCzxK{x4q z(*g+5G`O?66==UGN_($5}|5S5|l3i*+t-e=e53NsD zjQMZ!w&H&{UBJ4X3N59byjT6!1St$Q@u6o4V7?W(5?@lKckd(o_8zLk87{lp;rj&^ zA4xr375c@b?&r!Z4UatFm*>6KgNVq;P(H46FCPdAFgr+t$K~zglV7|iE#vhPqIF=R z9f#P3^VrnH%V8(<-Ml=+dJ3*9@WMz<6_NtZ;1F=_M&h=Pb_&;P`eL8@FLKuHy33e3U;?(FaY7zzJ_Lk{b-Csh zCK}yoi+OwN)~}}tK1%O2$_+39DKIwYk6>53r<6_Dw5geBr1ih5B?rC}H`atTqOY7!j_8p;>xp-P?i>-%#g^*$xMUJSyb0lJF zQrpGoJsFihngO2Sb~KOO_B5vF6y`5lM@|>cV<3;dcOsjaImy6$pvaJc=x9(if70{%Fx(5ptvGnP%k0k-qBPudTAWW zUg%A^kBxu}vDNmo6W@OMG7i*HKy9vuyUd&^C^`j`2EEAv+qd6A01}GYvRG~~G_PG^ zr03+wv!!opf6i1ehzw+r4OvWfN{x-Z11ozR5cdBxr-u?Oj=>GjsWwJL3P8+*rd3prp!nn+ zl{r4^sD#mD<4*k@6Hfiw7wn9bl$6YyGN7Jkrphiqeq&&({0~5ILK(wp#XZzDzp4Dg zFwA8cfoo-hPufrUNXSUag(ZZKbLZx`x)Q6QPOYPWl@k~$!AGXRGtZ9P z6DXkAYN&qRZTDP7Rcae+R(2vjel5s5@?&4CH_{A(2U?+2IWvp4AuLt6j?RQNfm%U7-(hr*wfnm2Qw2=tfRiU!t@?qko!QYncY z|BQw+uU+%Dy{W$W&#w!p@jR^H4k&i{KD{5lY_S0z0Qx2pP=<5Wkab{K0bNYv1{^mj zqFgW~Fov{E&&YUKSa@`d*MRgu(8|~O`5+**CwCI4){Q;}UeQBnj;73(T_ubl7MP) zke(iMryJMiZWumlRQ8tN-HoaU-|$9wfEbP#G0n=VjxOtvT(4fVVF#`%@&CJW^=jz8 zeX>1z^zwg3pu?yR)O)}!k38EW#?^??7#zeaVA+y7mY1-A&Yk@ZXIBhDGe$ALzuh3< z{P~qsXXR(?5Mb5){=IR-hFc(w*-P&6k)^tJ70w{2lH8-q9GU*p&~@V^B5fbbe-hP$ zuPRvkjrVB*u6}=h>PiMqn9vRrmODop5fpg=4A2{(5}35-heq05!ZjgZVWW`;Mu#vG3}t0NV61r) z{p#^!UX0kHMb#(`onCLhz4#KOi0`<59#jNf%QtvVnLHVQ^@p&`Xsk2-Pp{zrsID8I z+M9wcB7mQwDNJvM?T1vsubE1Y);4Jca&rC=W}+Q!-=PcOSx|Iq?9O?)3}Gz*DR8Pk zBlO@`t+nNsQTZ`7h&vfZW|imMG(-8yRNK17#!iQOancr$;ss9>Yio^Wy$iz{>grVJ z1n13D+dk!I2TugXgfYY5ldip%5bHr5X|)6Q?CDtB_34WjnS5JhOOd}mpuiEVgGgCm zgm}ZEziupAxPpd;(hE`z2MLoczaTymJkR-C&i+1b3`~%KI{*24_4~Ag^svH{+O0(e8YH<^a+OAS*I!c~>FR zlgv~)?=1lB#mb?ly!@T&^)ENg;%{)^h2>tw%MhJo6X9~XeDUSV>Fd)Kj6F_NLJ{rmsJ^la=I0kdvk zPIDoTfm9l)N3SGMZSaEDnYXT4eZ6i6OWMA^LeZTE%B6)uHcu7Anx|#s9rRdtF?#b) zJ&*fjBfcrfWXA@OaU8=*fBruPMhOxV9#MB#P1Z7{FWcdY<@0Pew`~Z#G%ujT;1R+u zti7bL0reXfq`6|N*H`4NT-fd{zq=an3ZBH!O`#Wk!gqf4`ZZTnSOL1mZrSy@tFa+Q zBLYs^5-Oo~`|)GJ(~9to{A%@$evFl^L-|W+ib(mjiu~j1?}Wfbr{IJgnTdjs1Bu!} z{zD_bn*xG~uO<>{{%c{jwi!Ja05%)=-Z0PGG@a9oJ^ZJhGgm79XzbxGfSN6*mr=z{ zv^CQmv1BUxqlCE2mN^?`Vuf{`Kn1&w(|&ycCOgE!fU5iQ%%-Z}A|j;qaAn zRc?be`(pukg{U#QFE4M*nCmp?+*q(0%y}6@-y7)GIkF&c{Y>dSxy_YI{%Y^3N%)(L zS}HU&qFf$5+Luz8&#c|rjZpfy9<~L2+;X-saK=Y$X{!5$-m6>-LP3_V{P1DGrvv88R;~o|V|=8V0`XSn(p0vsaO?R}I5-^# zojj%L4>75_CwHPO{1Ja$JJ&x&NCZJrnEi&2+%K&6y?y&FbsX)ovOxNaVs{}|r+)!I z7`5uf&s_DT*XMr26Ati75Z)OzY9}bJ9Q|ED8(V&T4N)w{FLhn+X~u!`{NJG+1G%)!7I-r zu;4b@3P6#!CM+V)ihplD-j-u`CQ@DER4~icmA{st_1R~fz~m!*Fh)bI#v2)Xaegns<&-jI{I>SF@W*IN;hiYbM-Ce%)2$m% zB+UDUI`hbr7cN}LYUSUHm0k3oL5@OcK71&klH*?b6H4d>0stOCiAe^+P4Z;-nEyU+a5G zs!SG%OlU;2D5Npea_n_L#V7}|mLKzOsm@u}pirtFlyt;R3Ygk(hNh^jTMbRD%a%UX z)zu)&bJ$3~wlW91w_ELp_(l%}AyJYe{Bg8*MaqtQ?=f{}3XR{Uljs_wczN_5Z>G&8%Yn`n~ruJhG&Fv&=sZ75O{(FwIpv^BC#db zOcH2xGbHQ(P++q{z*cu4jlAOqbJ9JS-p&I9-gh%9i9yYwRGHZw?J;Y2a2y4_Qo4ee z?SM;X&U6{SXI!GpwkJg5swz)#4r&FktW`K=xn+byWT2M9NroV&KYX~$#ql=|fQl0u z#&2ryM0Dz+KY|hHbG=5Jm;mEf+_@v{FZTTNzGMI^5gBJMv2lR43BE3MxkN;}L4B>WESS;%9gD1pmkQl98)k+bml zi*F{!fMDvT9_Tl|7K{TWm+`oWGiT45FdQogGhe<`oJvDRt?>NHie7I#Bp6BSre<=m z4#`3%lh}56djXUemW#wYM}~*bLbyo+W6B3(BnnQr6z~#ZXnTlH7o_v|zX2W8l<9et zZx)?;z^DEzpeD~E%yR@=U^B^*B~w<8*?C9B)ZdSJp48N#Z#)t_(p_;z(37T)r*=0` zp1Q+X7idLw|BP9)Xe2`-etdeW+t7FZ4<+^jV3b4M4o?|R1NJp>57RwXnKR4Q$-{57ej`uCW0_4MLTzBWx)Y~{p2e^t84C-RiDszN-t4>3KJ@t?bFo& zjJRNH8#T^kWgW9Qolv2ca{6>5yr)5w)TN6T3lZS9-Zs_JT1Y8!9~>r1`NP+VoKk9iyW@&#_tE3WX~XHCx!m|%E<^= zu@;U#bO<0j?9PJLKhY|(yQ8Das4DufKo{!lGA+E$(owA{4m zI(duIRj^S@^&cG;8Hp#f8oLRWE=}ThGsAATd)UTP)7j;~HDsxoB= z8MJbwpp$XS7`@eU$`oCeL$Kt5l8glN{q1hGFQ1d0fwX}=J(dbY4@X4mBrNZsK{EAH zOH5+l5E2*=%h@yO#KKGERF{*sWsV&-Y#4t&RVN2%)teJdVpOoh?;Qo1pl^8I)p6m% z_dHzA(k-xf{iv4z%8263rvNJsos;nea$N0I+GnXAJwE+P8skr|7~>-kn5<;A*F$)!*ROBp*7}S~-kOt=lvKl0|DP(2Q5|hl(>S}t-(SiV zjqW{oV8BuwB3k!7(1#0GuRd`22k0G7!Xw$@Fr^^htG)ftnw*6vQ8tA9{B@<1goK3P zYV!5&mwc#LqGUY z(g_%4XilCnV*{l(xm6W;VcnLIlr;yd%>XiV~4IP>)&_&`)yhLW}DavTyDAj|;kO>66vA#Sk zGIOSTkDokyb~fb1@tx+gW|iZ;OQg~mH%2HOk~gT5+~?l%JCg6Qbxr8cY?zYRFCaL{16=|LDPUc2hd=ez+RdOTA2DC$RXCmM`pYhat@B0|L-0 z35NPVTKEIT-H*#|%(x8teaAS2xgEw#@CaLt!xHCw1oVbRzm1Y!3K-j8Q>Y?zn zv1Az<1xj8^S==J}dWdHNTTp{(?YFK=$%2%8E*i)a_R3wb91>gk_rZcL-Q zgfZcmE+U2d;^s_!YjqCEn}UkUHOz@16^)c4&ohT9+_es;UFB1|WUA7v{(Kn@@`Z*x zOm*eRK1JS#?Gke(OH_z!f0~=+w;cQg;z&xa>fLhh?pQ^p9V8CZ^q@tj4;bjPo+ za}LS@wB!|OruV^c8fhL(4kf5yADB8Jf90xGTe-CSE*O?{_)Y65!AU6Z6eSXHW5R0h z<)~d1NCAEOwm!2gC>A?o=b6ZL@_!-oWkRRoy+zd?&7~|Am$@qW_6j;pX37AiC^luX z^^F7{%ix+v*Wa=h>lbB=@ReNq$jMPo^-@*sTCsiIokp`+ESK<1v?D4oq8OwBl1V4x z+OmL>gM5F9N}c)~$Dd@BO+*WUZ(jXs^p||??si2O3k1Z$hfops4;97W=)((kg@GciyVlD?2s=Wf?VUT9w=krqlh?4kFl$vZ-D>x@Ocb4_!H_ znbNHhY$^?ySg?}wZh&q&Sv%N&F=4x&d#~(`zh|pbvHip@8L2v+{WKOxN{$# ztLxF;)3+^HX{iv=p`ma&H91+jP4@&XfiT?n4rG6ae})Tc&qKzpbPEEMc6{7*zMN^+ z1YuT?Agrg=?+cLUpAY}_fwjw#<_6PckN2(Xe|N^bS<99UJakML9vu@Xh}P_5mkvJ) z3xZDW$&)+9U8A?PHw%(!A}#h92zsd-mRu^QVPz^^*f{qxcVoo2ChGDL&p!)CJD;e; zg>am(r3TIiHfi0ubne()56`;Bl27EXnvKr|5Zy@3ZyhIsPpTnoC0`&+HEH%nw*h{Q z7#N;CJ-z<-{0-E1sI0i<cFtqvW3A2YD<@NoH-M+YgRJh$Ww88fClH+La5i@B)Jr1REc;Z`(#4-7iwdpCAi3$_y7|n_Agm*oUHG6Yo zR~-vWOC7}HJeX^1*d~K$Sn_FDIhjpDqb;if7B*1sVnAp_TCmM4F6$JCI z9G!Ki#bAM9mcfc44fbJv85>Pn9;~Ogl){pqjalNlJNZPBc`VQya-u;pD2V(%gpD)M+9n@Rl39-lsc9;C0&$nnW9*9_3m z{3!WEo6h0hMx9Na2kXNq?!A4zFRib(`Kfi6;|7;RChfoyB}fAj4_(YXVJQE&$pzPR z@wRzwRH|}{k8k=lD{Or^=5FZpiLe5w@jRrWiKjkKYV9w9>-+#J?J17idA|s1;&bnEl5#hCWh7Vi|aDomQTjH+GEu?;gB>q%Y zf>LdTQ6*M2U#Q?F9x-VHs^-?;E0c;5B+@aX;9wZxSwZv!T>%xLh!hsfG7iPYHA**t zTe`&SC?C7;*?BGXnE44b!@+SA26lJ4QO4eRCPA`B0l>-7%(|IQ+m1?#>dJS{33y!M zM)9*}j5T(&4;n|^$&rOMLs|nV!!EQSmyb6(0USEHxjp*$Lq1d?(LvAKWS;)0TUKA0 z>J^EsCH@lFtV;V>v1TZK2o$Bj?zXlMFx_U*i*Taj+AwJ4$Qxf5Z_ewBn4~_LrC&-d z&i+&ip1zxf%AaG33QgTI0bdZy4#P<8u^IfUIHO+L+_*e^2JMN-=+RV|!nQ;Y{Q(LX zg3$9|$k1iy#0Aat-CXY{6>Hu$f^yR<;3ZTGwp!6wA0sCXynpW8afi4e%_ce}tGS`6 zJ!SUt(f*o^Mpt9~P{SuvMgL5IDrnKxucW?Bs-}MHbL5qbWc_6A49oC2kk~z zbX#s3yyBB5Mi9-~xd#~fr^&sMnYp*+$~an4el3TW0@jw)z%!=n+}30REf0zXic$(; z_v%$vr%W+Xz(J%#F8b50t)-2oSX&2c_c>C(BU!PWLod^otoZYze85iv;>7GJJswWz z^c8Fi0Zn~l<0`s8_IgerL*O$2iS{XAwW+q86jRzMdXx?<{!2sQI&4^E-Jb$t20x<_ zTj4e7Dd!2Se{lm!BmgjgH{jN5hYl&HR|A&uS9JKRs zwyuFOS{N;%sITx7zq+%as0f}7yG;iuz^0BhsH{-`GV-WZx;kNRP!NdyT@dnJZWn=( z@c5)*(^=+PG#SnyvAF)rGdFNJ&AC$ttUT?=e2!eRmc>x&G642T@~ zZFSDM^XH)w$m@z{+?oqGCBU+D@@abu2ZY3?84CKZMUM7u&Zl%Xoj7jdc7obqG2sJf9Tlzt6{T(BQ#s z5P@`%y0zw1k4u((gsF44yZu#E^E*D$vo>#mq4LoAebv>O7+vpJ2F55P!lLrp8oKN~ z{<`sb_Aeq-4U~%>JdmyT9SGk*uQE64F;0<8LNX$<5~EtiFurCXWu+DV3PSGbTT)*k zY}l%KtRXIgVgT$6nbE&FEG;N5;JYV({Q#(61pk40BV*$iY3`jotel*Rd0S~eC(0`- zF2o<;fyTRz6|{O_htNX{4OO0p_$=b^!J@>lI~f$J?i}qQ#uDE@e$>6?p^2Qbf3EzC z_--Nj7cXD7kY&GvRQK+8izTDE#a^S2fnltAlhquv=a!7b4)nW#uwQuSo?~AzY5g04 z03}S`A)+05SCBoqPNnUsDPB-(v4M+r|Iwozq}pkVBTY%+^JwqslBh$XQ~V;P5(XN z*Ze0>#2nXsxjF8a@yYIb$`9&>qK-;P4X$px?bH0*Qqufa_u$I*t%?t4 zd5v|7@cA`=%a`Xo!$(I)Ol`SAHEf7o=Ijw?t0+Z6T3<>mwYIT|*ksW*699Lry*(I7 zm86|>)%*7gmoCM^cQcS3K+~F0GWYJ?iyPww6g6S<&-+iFIBwV2rpGQFsx#w`AvJKn zsN@))d(n%DsS!SMYzzbX~s@Go+v?Qb^1&U24s5D?OB(J>b_cygDLv6Yw=mBA} zz-t%c65>_DXNy=~5{{gJCkJ)s(Do4S*T9}PbRRIDK8h+nN3$?Pz4l{%_4Hb3lTd*HQ!ctS zZ`!o4e4cLIyH75oKv2wDx*bpaX*!S|zesKcD3C%xm~z$0rX=71T$ zsHlkZ&`!eEz@LaosKX@d%H6h5DhyCa?*GUFQ=O!d6XNXKZGsCtRaI2*q@fOTvbJO% z?Wq7^V>HpT=g*&?oEad%4T>b-aO8K#E&n$7tWs?y0TPmzpE!tpnr6>ZFt6bm3^35| z*;RT_7(<1|qekf(B%~a;vY=$`=)MiR5h9O_GQ7RO5HWl~#oz_!WcJ=+);ULG*1p18zr!u*{O4&LOiR zn%M0ea^S$~k|cTS&a^BfY~U;J*eZ7}5coHSN`KY$E=O62!f8nrywA^0_fbzhZUy}Q z=#j30rb2L1VE8Pwe$mmrLh?1wJCl-JU9EH!EJ>2M2rS}9QC~Ez@*2#J%SVsa0Eh9W zNHWfIZ>t9#IFNDalGdx`7m|~)=69Gqd#~hFk*Ijk(4h!XP2J^rRXY1FPW*d<_8vIE zW^R3Vc~)66_5w}hNU{&NvbeQ<_~60&C$l)Dt&KVp78LChPKs+5F3eqgiKZTntT$6e zLiy8J=EgI2_O^A{V16PkAz=qqrO#3df^seiot|3XzGwZ;;(1Gq8q2?iZi-Oyl7A-dkMFYkB8Vq@H^RyYm<#+W z1aEz<=1F}Pjol?7a(NC000?a1S_RzZk|PSex6t@V)yWNXO}vg|iya-s+;5TuA_p2I z`b#tmS8>`cDv}wjoAii@Zn{lD-2^T-b6Yh^V^~i*jm`A4nFTYn`h`w8{oj8G{k)1X zk80hQmfKzAzghrn>)&z3B1d z^VhF$0P{hxl!<(UolI|g&b&T5ZGl*`RXoPP#rMTK5)oI@xljXAj26#j`0OE55nx~2 zsJa>+4(P_QS){_G#f)d=nj+D9^x@6Gr;5rbCV-8`Mvb%SJWqGg$1h)A!B^*K(u|*y z>nw^N;5Q+zaQ#eR*sPD?anvy!94vKjBfvy5_0pcTd4#zS%!?rknLeR&PaN7BJ{UL% z`po_woIhb+HA+q=bSN87HFB4sD?rHUA`?|<%qO~{+G`O1|=d>Q);H6 z!pXX1P4>Kymd4U?J$!fNn}6;>nxyX@aAyIfC5In5cEN@}Kzm^4j|FdmrsIVhVqGRP z25{knOsm7@%_dQX@iutzTwPgi?plRDl6&aVAR5fqL}4^y{^ErTpR(N6ZrSpC8|YzQMQ-=rg}{$%2~Y>c(GLW5?!2Q^nInH6UE2>S#b-u1{ZG#DlQ_Z2`J;6BJ z@FN~EpE<6p1aINvyhDFA82J`Q=EApH_WUBY1N?lMXs!`5HQpPk<9}9K5FUX zw`AC^Yo7f2Ua^f9H_(zNIY~#>M|}GNegILDAi^yKizkR8Y5?*PH29e&Z^}dgIa0fF z@R1&9vMb_j%hP5UZLWBrWx>@9F}(}q=V`~s9Z7@ynX=SVEDH1e&4_5155dWM=#U{P zx2$Yzy8dSyZ%)@U!1i$e+!IOI03&UlR3_~*2MrE=pq2hlOfXoWQ8`Z+G#|t=N0SKc zlJl7TtP_|e;5^}|yltLC|8OfvFqp4P5LNsS2-?7r+MLbQhUyxCN zT^x%GwE6_(oK8%nzQwjCtmir(AG{znE?7C_BTB_h_ZFW(f6q-MfJ8;=K$fWT{&xok zUb}H)kUk%)Rc=Otxf%?dhH0u~q_ddFQ;r>~Z1yNG9a>Xc3tG?$2twdJ+3$P?Iz53w ziWPU6#(?srOT#L~)j4W?oAh)6xcWijAS9TwPo+Lr=CJJtpaBp$whAGL8kWV3}lL_)$`XP#4kQX8s%(VCJRBZG4r{FWw4`EqSBD4K`3l_KLExxoUWr2rBPUTv1ApQ)t zMu%m6#~t_R6kvn!CjO$CH4ts3TLKzDfF4bQ1~{~aAKA%4K|%cH$tESCz>NA)RRc4_X&L2{^B)k`i?pr?l6^7)Uidrg!c@4!G0jaP!1sf9=-Zl(q zcv@DbyT)j$b_AL{{Y_?z2nu1@f7quZAVE1d?5M7^I`#v^CkKi}q29KBanTLnqMkTv zq8(_C(|&Jv`Re9=f&o5#1@t)^v#~biV!fa~28XKZwU1Haa-^Ynbswdtd-pEK)0jz5 zdmYi!~PbV0G=kvpb&sx=XJryde}?SS9qkBSrkAntf1G@)JQIE#|pbTAIos zV8q$TnT5p&KyP#lj^3(^~igT}8u*VG92lrlOguX{{q0%!!^eYnHt77$oUYhQ^Ur z+Cq0*dZCYd?BmA{!4~E^3RcXzG)FM%`fS`!6mTs5^QkZBiLJCX4R(~7i9}aUpFBAX^dv{qZ-U@L=+Y48i8Y(X zxSCwFAeEg~xC9e&ckSxzF0UM7$p_?Rhlj?}(2&5iRY$I*lD2Y1u(iiVMFF`?Rkvx2 z4i6%zUgC}&=@^2~Ect*R;quGQ31u4#PnviO=Z+q7K20xyI!VA*2Mp+a3u-EUe^X+758ecv&ul0b!Rm_><+R!w<0h|NiaUkVVJI9r?e^S%& zQkXok-d4of2S`Tdo=}%NNlYY_yt1qSxo>&-k+dLCKH*D=x;kQ$dg8>y36-wQVQWVS z<%8sdP9m3~P^pZ_Xe$w8qdv+?;ARGZ`w9$u#zq3J7u^S4#35&WQ9!2SmCu)%^Fy4T zlRyI)2<>yqlTFW6RTi$0xG^>=qD9VQ%7*Ib>`Jq%wp(Q@EfHXXS;h=HtfoV!Sfc=# zuh4Z@p!3)JWP04eyy)2k?dP-o!i4md6*Da?B$|H?7l}GMm0z(FIgIDVH>^7WzwMF} zR`dGCsOFNLJOO<_Z}I3NbOHSh8gK~EcjtqIgB3(YS-M*2^%VMSU>V$O1{mxJ{&N{$ zH;AOOxa#zLQdY*L0r;-Ep)RF1esc+)fxCOn1Lx;tGlOJK>*l|_#zd^d8G)%r+(A}a zD_34>v^LrKfjvSTbSk{ zBQj$k^z;{EdR1+$jccIa0Ryh}@V3tBu5%@=MQ`_Dt%NFzbnyFv6hRYNOoP{U;_vmj zL!zvV8FI125P&=BdE+L(PBXlQ!q50O7Fs>K3z*CicAtQLNQba@I*zv&ph}0pN9$-= zNnE4;*l%h0MB0S~d2OXv*SO_qQWTz0=t3@m(A}g)1;1-!EZb6r6R^Hz2}ywevNuIh z)S5-8OH!k~YgqJ=3)yvB7>@Lx-o9Osqshr(k~ltM%3{s{e3rI>`K@$uvm?_l4L$%Z zc`4qk^7||OZYqWWxs`It8k_z|P6xvsvFgRaG^ysWiR&5CttQ^ zVjja?k(5C~ppc#9#Ju2cKlMSP0CD20&nez5`^@^dhrc*JTILyqsYBCLBYjG<0=NAT z70%L~&IT4$6RcAMEg`9s0v#17RnD!ul{$A%DC0X9%U9-T)|fb!oSxdNLDz_yF;St5 z%VeCcu3QMqHc9Z4_$0$U)j{7R&TQ zBV!Hf=BEm-DNker6=Ohj+Wb9PQxnF43lx;?q${vDPg=vEGN+qIa#2&)^^aZ&PFm%d z@eKwT(~a$EQk!(;U1US=;j62oF5d+3MHjE5AToP>?uCyk+GUD#sSu9Ap)|Un5-(^y zr{l-wIXUfcpVVk!WhK>|eZ}Kr*5hZ`%q<&2Q5kjP#*M7p))I(2G!xW?;R9UmeEb2f zLK$l2dhf{-dAE5Yo0MzU4zn|WR#V^o;IwBcs6~uMjs!|e{J4zpD$@Vw0+(@A2AF>C z!i~03FP4}U1&DP*DonmwbSP~g(f#B_)#%*H1s4Qj%HQInY!sTH%zx#xCY*PFPzl^txMGCOm*%`qeI9+a-CcyCThM8 z|PLkcaXF{~W6ra1!EiQ4D_-;ONm(Wu1!vCIu<|;XbzTH3a zovR+HqSV3<$l~v7q*Qb%NUxnGz8qV zwq)S4_K>O`zoy4nXo6pB8aN4Xp6uf*#9T?qJ*q=jfV|KPERs`G+sg8wzx@I+87I_- zMMYW$33a-D>?3&eG1Al&Yt&-z1ToP;MUJS*%o!)}W=Ds)L$G&?X?>+GdRCh3th-No z&l-Rg#2Q>_s%eET!e)d+TPYueYxLu923bviSrt0T=#T8%ME1~0pxV#TBouQ=L@tk5 z$OKK7Wd|HfrL&3tf0r4T@3>IZxovB+boHc99nrle{3_5wSg1dYU82HniMU5-6qMZM z8}_@13eOYIUAhN~i;_A)ThW#Q*Tbn8_mc0riy=;wLOpkiiAr?nvX_6PJfg`Dw4?!K z1ld+6^Z`_UrpYIJ(SwVpt@_Jp4;Y}J?6})q*h&KW%e*q>J@hKN!hv4lOoI^Ns8tN@90*b>( zU|qcUK<{C@ZK!EC@5rqT>tW()s3N}ItnyPJOz`t&nuz1lk> zQLQYu>><~Px$(51oVXvf%HCY4`;w)Umyhq8TNo${^m3XNCQd@7Hp1A@Fuq|J`&O9I z4=>Xg&K?c;y!)j-><-M~^F?h^KWCwNoe#@MYr@Hs;Kgj{eF7ZJFfMa415H##dLd`$ zCDQOyHXlt}%E@%^+=Na*Kld%lz$R;J?FbmT98CsbU2+2UVx_IU=0agsvy_X{p4=0~ zKKet3%xIde+hwN_3_tQvh=!*RAEwM0wb;{>NnC~nXEqdAPJ}w4r|&F&2N+g=>@)$} z301EEM1rEg`D^b+Bhl@qTc0npGj~_j-!~9f#Gm$56LSfRja9?7&h(X`uI{}zZ;sn& zD^Rf_fp|&BNsY3?=VW$v2b*G0=2rFG_ZVo0D)ig?_rttC*!nbfe4kd0Y7)8y$>e5M z-GHT7>PRF_rFO28jK#1R=;@eEztag9$9}Fzk zfnL}7Q)ZBbbq&hOA8Kn`+Lj1IiZl^`{**iL3e_K5N~t^WYN63A%u1I(C`a}kF+#^c zvuD@jK*y2#FMTeir6qmUFa5r3`SM~8Mt?crL}$ zuVb(yMbYmOm455m&De+O$TG{rxuLKE)1Ul7la`j551Wg*MQBN=wQ*08?$IOqL)$JZ zZL(!6dNELo&;94GqM;EM+=9QPoJnSQd@~Rm@F{K$r!qpadTOF{qWEu5Jt_nXwzl)=fdw5`=1c8=az{p5K(yZpreFbnQe3>LuCL*m&Mnpj* zOx2PJXN&XCZ?ESt9Gsz_21hq;Tq}>PWM}wVZ*M;q+9oD0nK6T{3l+boHgy)?&Im4J zQ@J@gcnkJaxVRay=rkLfv(JXsa3=c!B7%Cr^G3QEmg8%{V)3&3_iG?ZP5Vwbot(_j z`DBPmK^CxkcS60yGr3@ks(HGkj{otW8a`f~Jq|iOzzT_MQE5TOeK#?fEewzS z?HGi7P%?sBu>co~m$koG4+4;eRD z%Ap5M^+1MKTdQ&a35AC9ZK9TPNWs;K$+g3v%r^C*T*T$Y^Rvl3W-l3kD$#P}gUXX~ z*+2UJy%(}h>=!AGFI;#H%FD+c^rQ78idmFX0RaIo-Uy4dp$hqfM~96j^}FNwgJ%nG zl7+#-(ME3ya&U@Y7&{1trLwgFmD)1s}2IigX18LvJ!Q-bF4OCGA{4w}DO1cS`04wd~;Arr< zxPA1DJ!b+ku4d|=MLQ?^`(eze@6Zi}Pkj_Z@<9lnXRMmDf7p|3L61xhW`^GCR(zlM zTaM)^ih2V53Cd=f7*8=6roMk)b&q%)cnW#z_O9A+p*AWD3{@yMvES4-$a!B6b#JcI zBS3+_qZ#*YCTy^dtjl_D@4o-6HPMGVp6kP1!FFL|!^{;8Ui?au(vroCGnPKVoIbk1 zlWC{pqt|&bUV-$;=7!B6L&G}0=f&4!8L#YdYxcTcA2#1NFyUC+;MTYot%&6R*g zu3-d2CwqZNUmDhJ$;y?l(%exRTzS2<+cQ^Et@^gsiLRb7%g?i=r+Z?K-=&L!@+L|% zC>9TzZ|Om;Yai$b6zUBgtRyfz7MgT;bx6vvF~dMFM(M`&bheJ*br{#CdcvfPt!&G=;yQhror8RO-zXL4&faaOksDMbC4k6Kh?!Y+yE zd++ySF`F@pX#&pf3P>VOThtUo5xbW@m+(azJ|3YM);=%P5e~b^YdICqJLwIku!cOH zPyJpr^2U^YeDPBL7uR-1q%PkLVJ@hgl0&%f6AgPK#T<(wY}~l4qt?^Oi=Y{wu!Z7Z zfR3FWU4Qm>?Xy8gdYMcY&i$%UQws}VmoW*@dMWjmaa)0t&&ulCqfzYC%*GhO1+nVs zQKRpyukhbMlZ7%)(}0DYo9f<9)ZYX(=Z#JC2l&j-;-o$;Efp5tp1WR*EENcdN$J9jQ5TAN=wP1{9B5S`d5mcV$L&bXu$Rnb(1K@$Si@Dh^+u8X!Cpa>NUmn6jL!aDo60X zpy?K#`JiWd-(Zv=HwEm3Np*-+uJQCCdP9f0afvB{0C>oNr^CXYfi2UV3yYu*X3t>U zN{|FIJp+EFKk4LLnh;%G#f;m?p_$lWAdfsadC*~5TKT&R4B2)&)T=YD6m)fgh|kOO?LB6_=l&l0|3ldof-OcIkn0>4M_mR-B(Ln~TUNmPC=`ol zGN3A?>!;-}GrocoZo}0EO1>FMsIM=93Kb&$pmK5?oGxfg$l?Q+6b0W|fMgiQ&a&nA zUcns;e)hspJ+avT&M8vrSO$}5nQ}~E7b%7Jel>Z`7<@s&C+N$l>pK|0IFP<`^XZ0r zWe8sW2|g;IF!=?1WnKW0{sEFouztF(=tN= zWPB^@)AcveVgyqy@$G}tSQIglf(Xbq*&-o{>xcn7dWYE=D`zoa%nL;THF&U(m)A=y zg`(b%u3AFeG@W~TdN<_|q%!(ozqkht^n0{m{`})7PPikcb63M)3n)`R+>=rbJa6j7 zfHLNo2M$a=bxI=fM$T32)EA99W&u+ZW!MvBd=-;_6jJ=Q_I8y(xDh^jJ1aG~Z-_#A zW8Kvw1QOrD9&t&y{WdmU-7&OGGRNuB@813#w9&K{lu0R{Ul@dvA61p~@lF zzdZBv@-P>O$le$siLe&m69K(Me@WZN_2UT$VoX}ho@y6NC{$Ui7DEPDwWco%n2E96 z1yl~2p$m#xw?IcGAlNgYyMFDOp2^$L z*a=%V6Nik)oo0|zFrVPd_k82SB2bryJ)V`7C9Z#v@BpC%3AG~0Q7gv;g#siKIwY5u zkl3hpe6jqRGv_63k;}Gp7z#*o0xaSeBJG^&OaDHysP!jrlX4D6Ov_@Q&CLxu&CQ(} z(ts~%0li?JxF&5GJGJDbgg8aqgeo}bw{4UU$TDIiR3;Z+PoS#?Zyo42tXJqgf&WWA znV5*^Yf6KO@t@Y_OU!>aKQ~4)gwd9MI9N;EBe%;-9nnpqqvfAdSu1ebCd?67gYM%w`P#IsH8JP zXYQvhWj3V9uVoHb17!*~ilVrt%eg3~P-q<+OgKM#)#kA4E1sQ{^I5MqrE*SZv8uwd zGI;5-^7895HsZSRg=dKq8OVRzulLh$*m2r*+|u@M>f4hEeP$pjypdSh{RV&)IjmyZ zjj64vY}i^keg`6lkueum{@E=kU1-DzDkE0EYRXReRFeFZ7z7fzXw|Cmq|D5HGjH-e zJIZ|L4eW*zjps@%N!|y*tv{@Y*!JufdL7Py?a|@ZySLC>2@UO*Un}unNL4@o!pA(< zsvLU&cQL_5R8%6w0f;#opqiIgQ)RD0kn7FasKq{660I;HdZyY1F&Im$7xHv)zFmdG z(CfT&>^Lof8?e^recmZ6i=J_O^MRu3;#!l+dBc*@&^ggIWl)eBzk12Y1l>711>U_J zHa-2Xii!vbw4!a$(9*c#uTBL>v2^shw8@}FKxU#U8+x0*X5AYM@rLENuwAj_7cP~) zj8j5v6=+4Rw9tG)jnDj!Ms))MJ8XsGsoNw`x{QrE2=GA+wbG{?+tIqzJc*rkN#3yt z3zWtxtC{(8jzHj>v1q|hsa#)HbvP@4hiGV2eh!-m&~$~x5a30DmS<(}i2p?Zs&u=d zJM0^}IlgPZP|}!EjwU=bT}QxN;DE4fS9ZJ5dg}|Pj>aBd2iV|BrjdaGel9{^yT0py zo!K4jH<+NM1uL$&h*vCcL=d-(60f3TMi~_usc0=PDM|Dik#kb|M1+H$CyF*7uvyh_ z@n^9%BGC`=5>gGNsi1biXQlCm9Wiuy>*&X^=F~kP%W8Wi`x1MTJ6CMs`vtArcL$|MQja z{d@d-+>iUdKb3c{ab4GWp2v9{$61;v;UYs*Zd0t;9LCc|_+2CsCR*$#kQSC3>Uthn zdlHx!hm_t56E1f5Ey&Gvg&IS!;2G?1GvLf2v!RT>H^iPiPL=|R*ZXAE$8&T-5u9<9 z_<)=?FWpzl-5(ygw&iQcRwHMl7>;z_Gkp=46)S`SAXk{LV6WZlj9}AE4A9npUs17v zqb&9A*yJ^35@t4dboghDx7vx}iqKN|{JF_Rd=5di9nw#gM?sEh#i0E!O4Q^ep%MxF zkY{8;3ofnTgm*!S{9!OIhOA{tKh56^5>qocIF|PA%eTT@3l29zH_6Do0f!n;2NlF^ zAEqcpOg5=XuwW10x<&J#d2tufN%`Krhw%?`HOLZQvu?}Azu%)E`uqB5Y%I3a7WP#z z2I>cGp8@J2RA3{ z!URWf8~&WCKX4%F#v`z+f~);!(#vLNyoY4=N=SSJf(IlF6O|$G*y)bjSw;2%{y+ny z<`-1-!Toe#WQ?tDmHV}-u;Ca=(wG5kWRLX~E^7hrg0CtM!kjr*4=Ba8Llq9R5Knr0 zvllfLfA}|~Ps%P9T5GC>HLlUDAjU8|UR*Z4zs|Y0fD}rj*6IJuI|N(e$L1UO8sWTN z{NLO`a-+JPebDAAnxmxvSCLMs=riJVCDP}B#4ITylZNl3jnL*yc>8u zOU`S1mIbi5;F`y*=kymygSNI2uGev$Z>ww&0k|VN1bu>^Cos7^SZq9#oMY~1FE}Pq z!9{sV%4g^PCt8IP$lSDi+`q=SNc6#F=~8(Gg)6wUQjainj7INmMhD!uVKQO_29imT zMw~#tSn~T<9i4rWH3;?_kT{VP4$(a|%2ziSQO+W@c}$DLYdFfZh*xj&0j6s1JM4qf5l(MT_2EeQeww z#(YDY&*!cJqzJlYC^NhifpuzXx@g+8v&4RcO;BE1d^<%Of#0wiwM+sY78OnZm~Q)h zoDe>pibg+?x9is&v|;I?Ue#4qa{c?iNnboAN(1zS0TVCSVOrv5UkO+tJ_)KeeY?mn z!<~{sI9G5t15aRIC8tqkSZ;g)YKN5egUmag5zi;kLeBKg2~$HOBcvIZu3Y)(&K!qK zvPz0|+*xOCN>RmPrufMdO`lSjem{W-L0L@h_^+n}!*WAk@aOknpbx8L@*N`OkrAsE zrbaTrio(LTbpT2B<;7SZ`EFk8=4SZ&Qy0;b1?+DC;WHn%!?O*({oeTgfMF`(jBTCr zk6X}1P+gIFUIGi_|G+iRKn8aEJ#XR*{VWKsAP#JNyG?h_(7gn~rWGbpYd?QJ23l8F zm+iGW!d0&o&MUVG(A#(V!CJ?hIAHlMsR?|$*(*+t!+`duj{?fCIf?94n{TSF2dgM-&W zANBS;BU~iOHiSnJ{62wg+|KxTmW&LBZOg5sj4U_AbLeM?=DSs z>ulgNgnu@4C{WZto{idgjmTuIm(#?vU(`gM+BtJvy8Y1u2PSJt`O895Q*&xFYumIZ zg{Q|uVFn3c`tMykvViQCbKX`~lB>B<{(V?!0`Gx`SZ|EI#NS34(UUCt;sS>dyoIt5 z#|7n{I@ni?7%@j960}c{R8|dH6OYdAOZBt!uTV-MZCJf^{oJ|F0DRem?O(;x^K4!) zzR?%^w?GTp8C(|hIx_5ns}?LVTZt}G-FFl%^J{4cNkis4!pP`El$frucSG{Z_iJzM8?(* zJVDSuTfc$kqwr>^AO@vs6PO@$|7 z)Z$-=2zv%6SwRtIJ;A@aK<|JsS`~ZV7Yt)5bv9y21kDKV&*U_*LAeMO@JSj$Iqmu# z4dmYY3N_379+yg*MO=f5Ev-Ojp^<7oN(^VJfPhZTlHy1IbU#Bb^A4<+r+xmZBQ+;5 z3EY&~K|rVK#4dP1$(A()0IRk>B)1n{kNuRCJgbXc z5Pl=>YObh7Az4qS28EJ`0IXqm>C#_#Ez#S})F3Q_STTlCOG;wok?E$Hqj3(UZNnv0 z`9-Q8>(|Zb59XM>78e=4pRVG9!tihYr4AB=*={1S%@2@Wse zzS~&F9aCm1YuykSU-(fL%p%HoYYU+lnIeVgy z-~EAEKMd#pq4csmAc3Cvj}k(2Dbienp&8ox+%XV6)HEizfIsX1TyX<*VA=BJIa_|- zdHQt!Izv%}>T%oATqy})8>}}XW&7{hz%V$S@&(xri_9>*06F+5hEFCZm-i4CXZn|x z!>$nsh$y|u#6&yts?Y{|GDroDp>W^eFMze(I#0mNkvbH@wLqBvymg3hAD1uhuTOiv zN;j{17w`*7Ieap|%C1g$_1{lxx+p1CDYEq?a6*Ju)2E|G1C@Iq6@3aaNA@>+HuT;5 zbOD9c;y^Bdb34@-ZasF7JxiWG6>JyqQmXjyL0(yzEBTZu<*+9$%`n$7i&sQCEa<66 zyQ!VG`+lC&VKeW0^JXfzB&%IZkcXfM0Y&}^TNDcI4<~t;6!(6N5T}eayx8dM9du*^#p`B`eVqprP>KmfU&p_L;$J>=Man@cP+9jz=LZYIaDb z$q7S;V)!l3n-z63Zix}@>?DBXF{J5CxVkrDkr0kikrs#ryn69MKpd?!n*^U+5FoFQ z5Bh=_tTF)EEoZ_9AlDy&2x`Q-AvaUE_9oS^!d?_^$ecE#FbEM$rX1dQ>3D zz~{&A!39lmZyKxgHsRU=AqTD86dwrFQy?+S1_%ItkqA>B?|T$noY2RW$awysL_XZ1 z4m=~ZLtB)L403?q7r5!EQZp7ommrEU_0e_NvbksbF;I9UvJZ+e*kB86UL;2E+m`@O zx9#zr;$lN% zs+KPxyA(nmJF{w1M&X~i-=ETu=-}}to;(@($i7pPy1~IecUAo?H-6wl4EuB!SrS^J z8Xe@?j?n_)jYrN9$NabwFjk}R9NzSlmRJIHgjFC3a+`=U+GR7pm}?RV_3E_oi-&4h zSQ{ZuK|Ou?{$^cc?S0toZ9)5f+cTEpAJt(&zZpKJXA@7NrZ@`a%Otb;6g&+s#vz`2`E-m(KuUUMhF3fO4~^<{leiw=C=2;`fn zRrO~n8kj96DsY4WS~TL~21|=4>$l+rGwGzmYk7 zXo0-dZLdHJBcq5?ZRz4P9q#4d{`U#DrvueD`~!1k6d>I}jm9M9v{d(J#l>{MbW*$M z?Z~STR!bS=-&tQ|nMgF?seP^8qD3lw`!fI7KG&GErdN+1vz^O8{b(@$BF+UmCb0$$ zn3ghEQ(Q_4Q_QHZ7W!eg0U9Kwq|T+(Mx(VfO>?N|vAa{%U8*+tKR3j)r>}teS2g9t zySN=19v;7x`iv=SN`8#+#?kQ&RuG5VPZ(J@*dbH6$Qp%d`q@@qJ`Jq~8CtG}0C+{R ze7X~~>@xG{mkFJl)B!kvo;`Y0x&E{@2|Gt`yquK+ARl%?%)(6Dd+pko=8B1dYzzfy zX|-1u4qFjTIbFy$6Aqm@b{)bf?S!S-Z(h7;rXDL-@!fUV=AHqvP@yqez-__@?7ric zYkGms+luK%7JwKX!FX0>X}{#H6mL~iq=gdVI4G0&&WZKMW&&XqE^u%s4WY>az|iI? zA0!1FEc8DI?U&*tNhuXMUXyMQ+6^DU*cmqU0<}dGcuK|8YL`@YRnPA2RdZb30Ll z?5;d@zg|r0;#31-88dcl4pg7STINyFt*w6lej)-a>I4wpslV^yFeQwSD=OOKdgdj1 z;*&=9p?MW>p`yyvVg3$7BLeP7K`|rfRkKeU%Z#br$zo@(BId#X*|O(nMwC+#;&MfU zCqDZzLuxKv($vTPH#}=)d~QL`jiLQ^8gRrMohNRq%FO1-M@3AlO_U8X2lFAU60L6x zf#=C30S7YlY2e14bRan$2mV#P&4syn%;1l)Dde`AXHd45l%NRII>!{@{S_v=$N@%T zHK?a|hTwHMs}W$73%>o^IFvRt8K^|qp(97Ir(|qse0})ln(iL?4<4K&9}Tql{vcF? z6-6-*W1_xFqIvbeWV`wEt$g1)uqQf{DrN>cIy#u_bgT}!SCt?hJd5!>6||5`Qog^x z-J@Q8M-@bq3|3dvv1LdIbK5njP=&7Ue+gg|>|VV{OKPrj7>W@4$-mD&-NTv|_#zNn zj&6TCL+-kbQ+qHvLKz|&MHXc1F8f8%3J33Fz$W1m2|*H;k68*8-YVrxr-Xm3AG_zI z{}AMDE0>Z!kbg${9gPzPtJ7j*bp6t|&*hbrGJ*axPcJE^qQ;JfRg0STh2Co(d}Fy^ z(vdS)1kRGRE#zU_&66&cQdJ90A*RpN+`WWU4p^G5@?oE%K0dWXJgT+<`Xmd#zh0N6 zbwL^u8Saa6m<;KAeSHfFj(8YkWRk-(ng#~nXyXK05Wmtz|B2$SkkkJB`BNe+*j$4w z#(u$q`zGzb2JNiN=p=stb^$WU%BA^(L(bn0STZ zqMDjBvp$VpA7h#`l{}T&tX^{mp?+~q7m7x=le2J!h?1%RaWSQ-&wgV4os9Wq5NQcr z=^m7xb#La2{rJ3}*MnX?R|6EU{M$|27b%Z{Z3`OD=;q1U^H1vMEr!=C&@w5+s>%oW zn5sJJz`4Eu`0+lUq!2117Kz$CTpQryMV_z4uGCQw>JNxY=4lwaR|T(eOk$YMrf;tu zDr$F-GP2cwL7f3Ki!!EWfP{T%mJEY)no!;Vo{Yg-k7|1E#*=1hh{ZO80&&Jy3owc|x<{~@HTPq@tJLIjMq!rYhNzkap;9=>TH zjTq?aZFJDwCFd@nhFnM&p22Ly&Q%@>mYOfgH(?rmkUKY*mU2C-I!cIjGX;-^L-Rsu zFiR^b8H3?-GULpBgUol10aP(TMkAC+4b`aDTVF>uH`$DZ#>@|a z%9~=N9ZAu*$kb~MX1FT<=rNUbLG5##0m1kqx&uu(DL!0c#C3-PxKekrrmOl{)b4=j z4dwY8p2gJBsZaM%WL&;-<#$6v^z5{kn6ANZJD!?a$M3B2s6@8TdC7AenB;u9loe0S znY!@WtdG~O(p!W_bvZqK=o{xi!5$kRi*Nj5ZAf*`d-1{nI9p%gqP>2AnKYF(zmv0YEc4{xOC7xNkaD0POr)!hv=IW2i~`8W zVt03={U*?;;nD{{GIogsmcfG|{vI@7wC^XX<<1D>UOCE-j#xdH#h!TMBu=nE0Gzo| ztJ7Xm6deQV0WV5iX*Cy6fE9x&oo!T!7K@+KgsU+c;$;j%N*+;j>cqrp(^f-yrcAp| z=EuJShsKh>0=EWEEcgS%VWF0E@?!w=V&JJj3mn@86B6)>9k(JZH9JTM*>e};e*wi! zGtS=TxndXFWrBnhAA6Tbq7a}f>RBhJ9Eeqc7Kwg8x_*C*2>fbV8YxO!%Z^ashuLE; zPpN=`|LnHE34%9N3MO7gRd5$ZQ&IoaWWjJ90yC?*KE#3Yyz@ZP$=P2t!2JO-HX& zSbQ#%s07Gau)R_lmw6|QEDIk5`XeU;>rMh7%F4-I!c2g}v~2Sa4B7O`CeKNEXDdsy z1w6To@2}oEI^JGi_>fTfK?S=e-``=WIUg__X(egx*RNmKu3TB@nogy}iHdVW23Vco z3A^jfBa5Y8&(rPoV;VDjPb&R48b|j3n%8&wtJ3MI=l?G?t>2c_26vjxq<6m8jsjChIuUHxC~&r*uY3KiF|G)*tBxd^k9L8DJNQpD^4aCnqN+ z=0#cf#TRR!$^)khxziy-jO|_hAIvbvoI*&s?$xj#?MMC@OebumK`qn zhjJ;M9-Ocs!R)7!Ip=tN?mZ8C;5cLQ11Q{0`q1x6j4+jsBXAaW=sX+AjRdRNwz1joiGvU}SB8oPt9D&~y9O z#8n0dw~{5&8~VcHVQWZAIb;b8bEdNa2(SpxrO%ee9F6tPS`$Vdtb70T9$N)UCc|Do ze*R?6z>hToQ5*8!lhgYy3^tqnA4t)OSJCFEpDcOtK0Y^2%)Z&q{8`$g$}W*7PH5aX zed;#T0y=Vc)*;VgidHXJ6)L7ahth&q?aoFQkbD9r0>j}TsQ`jO4B~6KQB3CmwXtKj zf{8Ahrr!eTH26ViPQo9=o(;r}W@-il-(W21%`aYibgYwj@MMcoDFrt|W-T`zy3WxQv zwY^-Mc*zO-r16xz^0KnnsBlmU#B_ft=$Yj-2b6{kWANx~f7nGG;>$xCU4KnSl)y34 z_V?!u)40^LXYVgD;&Ih5GneHHbqT;;&p7@Ph2x+yW5#DP9sZ*IIgmJDN35=93iRdd zXQ!cA({}g(#7U1$Fu%rr0C6;4gL0CDd@#^n%A?bul7PLV62N+@lNm}ckL~TeTXqe(|@M)jx8I0)=h{v~YTNHjW-iH0a!@GBv zvq#t%TVdfNc*84#=-sZmwXuKMlV9z<{&wE}AZ?Iju#|(gMyRW!c&L=v=+OC%$?sFn zo_`je;JM;y_*sKhwQn^}B*%AlonT=$xpTqWVGkm@ifcBvM&5mtsw!>y?OI`0Y2(k- z(8la-Z-O)%v+J&XYHDhVA5v#958dw(dbj7oY;cDX$nNxKp2SV~;?%RF_?KYIV_+X_ zfd`%hJ#x{zjl*dX@$d#H1cZ#1fZja{azVZZ_zd3RfmP~OP$~I94Ec%f#`>+xTwH!Y zhJ%~$iAG$gFwD$E4(cZ(qoUq__%MP~jFR4~Y0&iPMWjsLTesqYcpd>S{ntdz=&9J{ zBUKZu@L~=hE?qGkPfGe5JZDUU1y+nei68qeiEcJyoc_Y2yzngvfUfBsm%jTD!+XG94b&Y zZho?4({D4+(0^W|~{Xr7Fy1ZZl%A!Xh(==s&Rotmx3ckTI)U zLJJy9GG9g2zjHcatBcEz8O>WDQYi{HM@X20<& zfDE$#48~zHCFL8zp6a%blh5%(n@f9#m@`b#0WM&JENbmOchq!&*GnVR1*t>f- z3F9-;+wo&wMgoX+@7}^1`|}6evniZyKP0XTS`W@k&~=~dxIr@a!bf38N!w-bwSpg< zXrRD&Z?0dOuc5C{OYxzt*=rrHE<$=V_;L{{(bup z%RLZ?o9uhXwY*p4N@F+~IL%R{Sw#NGoX2#c=xAgv171IVL|TKM`f;(x38N0qr5b4b zM^4;An@(*rc#`nPWWof#`1)p)B%-*TE9k)hzEMJ-og+;@zvV#n2q;$Vppx}?LP*|4-_T8^s8#mrek!@TL^wx&Z+UwHBH z@wkySOlfi%YFfOXB8&ozB6wO3Hi8dvbQF$0E00)mig5V-1;gb}g@)c^WO)YBlOD?K z&s(c7qIOMh8sFX=KD-}C^&-SQWE~uca$CMc7A_G)Hz&6;6BmZp^CfC0kvE;R*+R=9)eX!fcefv9=$;sLHQ4PJeX z1I!Ge#^-CuU6XuTQgXax#gZhhwd3S{fp^%g@qd&kf@gQTR~s{}r$P-wE#__bb zZIUR+s*Po!%pH6lu(;#u&oD)YbssDgE);v>g*%SG_zww@;BrfPi);_r>)TA9t~ItB zk?_$gUNL#Vvel~x)$Zk>pjU;wd$>iW4J%{=1Lez|-#JG(gr93iiC?i;fZ_-?L zSZ{>@M&ecXJbe;#A#H9YLSLX{+b&$yuo&x!^`b5QcuRDA`A=l)z^jo7qooUbS2jw_ zS<$n-Z5wyy^T(SpuZ#oA%5rQ`A5*`PZ@<2%R746!A;eh-7cc)*E`#lHuslI`8#|c0 z-$>|QlTlZkUV?uQV|(2$8I4W5a)t4~8k({ZV)f;}|NUjr_fG1LNtk%^ly(*^BcdoZ z)?WbkpfsdG-SGXp+Q>uaFy`QhqCz7!Ta#+Z#5VrFR*) z>Qr616V_S=RMn5LnF;Ay)hW})PM8}>f~KJm5*9WhYt6Ili&UCK=4xonmgTrf`ks)iuW?yTx3ss7bCn6zUtc~}ApQ0sT%SI3hIl7QQr8g=12(F;zRB3og|mPH zKnR5N3rbXPYy5s_Slyrg1su09d#1qbem=-dnZo(~p6>)38s_^qAA$ z_)q%jatu7suV*NTyXu8XH*^Tb)gGKk84C@(`>W}&Pb8Uql5+n19{aA7|MP#ye%`uu ztgB3hWVcwBHRt4svVa~lQD2uazZ`=QbN$ldVrOElx$;qd+1uOree@%8W0p1eI{X85 zJ;k0F0dm;r%5&<1{G!>vetqoB({7g5*5*U7pVN~Tw_F%8Usul6e7D=DADg3Q`5%6# zq#}AD-nDbXT;p##g@O=)awie;_;FkO6874I%W9*z%NHChNcjk%6V5GOz4|@~{8wY# zUm7$3LqXx`$ycAWH6o=}Qy4gC5HCNXHwUlU5kc)R#=UEL0rVv_YZEM01kQXCJ5ky_ zN4x|eg)?P+z6N_iN>Wlo6YE*Nf?QZSR0XqX2A;#EIjBv_G?X)%QoZ5IL1uTP8T?7`GYhA=qK_$5 zYa&sFV8XnjSS??uip-aEQVeoow{3Hg1oE&{6eR~Gr`vGQSM`+9NUJsf7C*T25wEJ> zowSNo-$Lcp(3IevoUwHTNoui|wYQWNeP%QQb2JQG1@h}eN|T#8jJlU-sZnS#vKHC0 zizlfb3voF_pZ(hUef;l<-9a{1Ms8K>`uj$~+PDBe3FzF8coDQbzGBxj`~`(J#Z*U- z#Zr4mgo()Zzk~Ou&zM2Z0vN+Z3SSbDmWlW@FJHdP{w_@9ocT}wJcOP6ZB7-%*`I1{taI0JQZ!UVZMH>!U0Y1D`jGJ>`p>ui3`DI*icc}HZ& zqh@xRoX9bNv;W;sob>m$Nv$NjsJr-gHHqsbYPvzYAtAhyGLmi1%&pWish6GGWm!PN zr`hWE+{FY|fBV4XZoBzw?ELD=(eaKwMZe$@H~e~tjbF!Q2SSX^u{W!>QM`4}D^c80*xsfSxf*vZcm^Q7)Hph5~EbP;WJY*= zF~$z~5JP*rZ6*-|4)=cjAUC(OP-@BHy1`xywrFVx2vM7`UKpTD4V$mQ!N7iIBh}Qz z962&TLD<5a<73BOr>0aBD06k^2dIhGfw2Ox_H-4DA1T>-M~V5byE#>}>473FZbik0 zjK1;@hlwIWm>>r@A`^z|NZqTe;SnYo5?$%ybk5hP4);6p_~}!s2FPsHI~m3S9h_MVgMZ4e{+3zrsGV^ zjkldO>vR9w%qv%~{%rQi*DzFxFykLtsP0%uV~Y)vDdwp2JqC8u{a)k$nt4i!syeq` zijvehMQ>xBthC&7;3m5^g zuueob1;eKZLGD9yY=DrriTs^xY!Ky8+c1&B&FD{!Z9NXI`=~?SDT&Sc^DA@=BB$S3(yw{K9 z@1deIjH{dI)L-BP(>>x;5siUTGR|iG>jdFY%2i{`ef350Tl2Hbd>Ob0uJN>WBs{=S zi7v_UoZurzDx?dJDX*W1W$j0$0v}L1jNw}t@(F2T_2n7Q@%2lHo9jMWnfo!Dz^*45 z4Yo*5JJf=$2$lK{`zp#$KtN4GlpR|Bl0NR(r?B)ifLMth`5JCI-3!8jYX2^i6pIrq zLa`{!*FfW3d`>eoGO~oJLegQpI}}3F(0>OFN*H3ALOMs75Kfu8*$w-YS823|%KV*1 z;Q@l3uK{E(JPBxkK(%TL0^D?Tzwq4ThC1IAHH;`Isrw)@a}fUdzKod_>rRpnARTp; zAu6-hl2cQA;ZUz1b?lgprJ~w#W;)sjNY=@0sg9k}O}F}NYBmf3bNvfgu4r6P3)#Kf zJZJe%7exTL_|cJ;96tW`UGF^T{M`Xyv+?)u$@;*q@*NL|goYeectDA2EGC9j>tlO3 zfm`XI2%hM}gAu(UHRD>pOF$V14GI?Y!Rjt%L-xhSu61zJz7TMSqX0xung zcR?uM$V(&XY}hc=ZpAb1^#4|;BsV8H4L}XlrCjuH$u^mg9QNOK$F^aLEO}&ZZY~6d zeE19=9Wh^INO+2~*Prb7?ttW3bJ`6jhP-+6{5gn)NH-Zj8zxMrTeAANs`V#?!!llS zSKb6C%TA6$7~FJ4)ZofF1b$j=AuiFyPznduiE&2f5)%W3>$atn1XEZhEIw{xmuq;d zJjJ5pEOHnH@OvHJ8x;_%FJFU+N?ecsc0LH@^N@Ujo5eS>LLj8!$3bBf^0bpk(%Hpj zC~yEL&mf=U)SQ!54>Zy1rTAmLTm?8|fQ*LF2nPnzQr{wqS2}KMKWENP`@}0(4n!E5 z*{}!UTEAtuQvM0Ib&{fA%;(GA^0Rxo_-mgou^7cW z>8W3hF?EdoLIB3;rxdCOZt>D#z)d_(UA;krO8O`zOe{NH1}mb%{Tj>N@V0p>^0gI< z7w@p|+FIGU!Ibq;{j>1qmwoZWj@v5s>9fl|@v2S4o7MliB9a8ghCu`dg^qKwNtuy- zNr{O>_ikUr6B814WT!9}N{={!m5I&a;S%Y=nVBt=R1$?<%tpbXBwt~6BBU%rh1ZB` zp2%9<$%8GtANL;RZw8Hlrh2f&yJce|;sDYGSA;)nyZ2O1K4chondSm>6FOx*giBKr z7GGRkOw&Q+DnlogtC7m1%?r#EY#%r|fg{@gn=pvr`<|H?tH$J$g~HeWZCN- zCt)VH0Y2g?qi1c)D7SE5HABq^GftZ7_VGI>Rxq!ece7xkM!?(SG^JqN1Y1z@2+ODG zhFMw2XJut&VG?%7LE6>4Q&t!zHc?vBq{AR`9omF{yde#3vOC}`W6k0)nsy1jbpGum zUXTBTvXBo5X3<- z(6+ga4z}2Aq9Rnf!dJv7_64&s^EI+OYW(*)>OlX5zWLJG4U{|dbaE}cZx zOu1Y@1ag&8oFqn_Ahg%Wq=PNEk>b?Ve3shw-vV{%y97cP;aC!v|Kgd#3dxuHG4&f zaS--DQe>d3Yo?$3>8FImj`uXv5K0DH&;g^VH^WlpHQOZ(!;O3mxcSz-)=g|B$K5Gby-b;WK;+Q za!+2q3^lEkl2?gij7IfpD_fVrPZmvL>fN?84tht|1*{X+2RzN<@$pzCb9EXW+j##M zxvqwWhGubpaI6d0IOxXn>FYpW?AS3C*GP5=2Ty}G+z>8@Rr5nZl$?6w#$OJVU<+VP z0cY4pnCgg~HRmVYANwzv6W%5PceN7!kIbldTHY&G*G}zZ z<{+GcLgf)j|NhsrF+rU~?cLqxbK?73l6YReeAz;O*1UOBEEWA-4uNL^dr1qpZG7s3 z&fan8>loJEIh`)QwnmSehEk6oKdvn&uahChb{rxcxc|1K@cO8se6od8i?4WF)V|1` zgDq&rk{J{qflVU7jp-1IhjQW}akDvO*eSgL5=6(I1Ka9I={tH86R_2UmATiRan<2M zaEq@s_n;|EzTdHH_!r*$2(T!pI2y&&$qEed>gmA1I7d2`9S7`USJ&~f#W*Hi+*+%rsOg+g4Hv*8gV`<<{AbE!|b~Tm2|q@ z6qmB^@L?r&r(t;ZyiW3b`h?y2vbYvtEYepE@S7u3kPM>L5k9e3qPPl;7cq@)RCrkr4 z2ul7u(e-|O@H+Uhuy^}be%Hi|p&Q)kJ?(x4X@4rIth6Y2Ct1;2; zStB;FV7ougG<2$~J=|FA1D14-M;2J>Btr_aC<%pPLzf9TE@a6-oULYrtK!rx|LzEE zdWtY1C?zRrilwFxV|hE&&^%mSK3h=hg@l~~#3z|REU2p60dPh&j51FuICU4~P4bZoemoJsFdafI;v?rq58wm9+bvmJo zHfB=2=*WgtZ!&g`h5KJxJ|OF3aAwQ%lq6({t+te z@!PB=K)O`v9b#{lU@DFlaUZEX`r=dlEWC?S71Y;z;`!4O;C5|c!-o{^hPTAKJ#HKP zd^urH-OD)vG>!?KLKmYfq@htf$c1AZ5+4(CPm1r#!+(78-<$wTNK8VqJu5M1y7;yE zJUR8&v5^r&yh?kS({hM#8m#AYZJwQ7eA&u1Ycv~sXOtZs_51MS!MM=8-Jq6LQ+Y6A znk>It`tv=ZyGW_j?=nZ&)2C~p@tR1(L`q2bS)qTpDc!~{Bg`_Pgl>9CElEp+uUg>l zbH{V-1x<8=abmf;`YJOkh@y2F>1I0{#b++>C9L}Cek$S1$)H%UgsNOuoLMGAJgduT^A2!zOnp8L2#$WXrXIHCHDMl^XDQ-u8yy zebrNgEj4AuyC(YSoG3q&Z+Pz7wU~y~s6{_NV4ofEZ|Rks3Y1!d!agxa!#s8!$Ipqf zTcB&H+_tPo`=Qql&n;+S`du6}a3Git^4$Eh-lc#1Ih++0fu{ys8Nt+&!fh6YQo~3E z{5~JOTgf?P-fCs}c3og}?%kU=McWKCP2+}axh@kau0!hA@ObcXTY`;MiZ*vfTIl)7LcV9$f`Z4OqpGty5k7_og+mLA3QMs`~AVAM~oEL z1wk(^E9)b)y{A$w&3Uc0zIXmqUp_>>XV-16k6Fs$<9*wc zYL~2E-wszZ-w(0CgST&0(#17!8ScOZ){K0GT;uhk1YG*zb;t-ci4g7`QfyJ~39b8J z3vB&Yt~?Ddk%yOl_39KqQzuPXyifQAX%1vQ3Ycd7`t|vBXJ|G@{P7irP43F0NSkcZ z?|wmneY$HmE}sU^v$C?QVE2D-<9(oiE!C1Yeg51zBO@c}>ox?{YR8%8C_UDU?6*Ph zzmZ4AG27{cMn&bjcQ=<^#7#PIRv?Xywh!y*!rIz`jq+cAeuTLk+OdQ7l(=_)j!+5( zp}-epP}jT$AwS2Ue2-9>&UJE9-SBp(K+iN$dBk|wlO(ALW@>7U-Gj2Swh@Y{X00MQ z4L@KB=C5714k5=)$H2lR^X=^;UWr}0coCHk-2~k}C&=Z1W~$!W^DeM4_aSw^ zx92dSfpS!RQjoNw^;|*;&wx+W)p^12w)ps)g@qwEoktrg?uMN}A$~$mAZX_5815@H zU)atTT??_St5znFZ!dvg#+IdQQAh}?X73MxEnSVk~`}*-< z9)NM|B1gwPrGf>d-R2y+_h-)N<)_T{@E9R)-gv@vm(ub;GFzlQa^hWeTbp1~@g0(Gg%ERc zf3B8FVCs13#fvLptiV$5scNe1B}fPf2Aok44pHCE%(Ow_ic0_WT@6Dirhw`z^f*}y zUvAmbr8}DxM;ha6eD0inbjob}WqIu=SprVGMcmMU!g$;9IQWZX<2l?1P`270tB3MP zS1!@dZK$F!F9wKZ^iYgHG9l=?Msn9gB=?{__JJD9pGTkBA*(iM&@_F81gRq@b88NO z2hlscF>0=(qfmdh{ExpWe~$?RxVx2Nw(8yuAO_Pg|nVAsxb&C z)GbzJ1ILbig=+HkoQk2seF*ExF^L7l%}2fx%QxJ8%NaN%e$x-lUaFB}RiyI_5!8He z7dq$HnUeA5>Uz~0)rC^s2aFgYpKeK`v8K*zqRmx^FBFO)!8=qrC;eXQjT$Am_o=ou zjd#?Ux;h~vL-B)SG+M}(|5gDn;Maxk0mf6622qC&HK96?JtQec%3&OP?9id$Qo&RE zFxAn9<8JPro;JV@HO5-n+EKnrfi6%lXM20MKxB2B7oVFjNim2w!}8h2gtm-9wpH>Q zJUu7-3?DsUz+yOxU2ordR9GnSS4>ekn=k&aN{n7~3*<0uY=q4@T@Zq6v zGLC)jd_l>06D?f>tl&EbV5$76^5>oQ8e^KZGh&Rim=uJ}uBj~mkq_+A=pODT=$i!Y z+*$F>m;wQ5)N!9l(zjo|8jH0NxN+{)>t<@3!Nuu;hfLqOqe{N{zZxinq1i;j z-rse0#k;RxTNz9UJ6FkTC;A!~HPVU_s_=7YR2Lkj zynFOibO1pv!H*lIC%PZleqE5<2}xIznSnZ!M%$Y|slIm9flzL1OK-t~tIsJ`n&5X9G zP&pqL5n;A-h!>9oQZ|l0VvSoCBWsfHng96lMtE~TAOy!IJ>J613NuuiB)VwCR)amJ z=5oN{u)2NpRwZNOSf~Uls;cdIJ%R^NIx_ zD2N^Ts|zk=Fc2!g8IxnF+YB(1;~OaWNSofh8aI6Sld`gd4MEyLF330FzzzGRZ2<*w z*DkU5fAa%*2!D|7V?OcSaptsjpQG9mNB;ZG)`s5Swmxb9`!k#huEy)-P^lvnqhu&< zsmogc?1_o54_bFUj9WTk*sZbk{{8#-R9nWSbi7q%8Ry%KD6*C1wiSPD=ADtkfRG z4Fh)N-MVT%nQMEm{MMWyk1#q*;7orX?7a=neO>mSz2EId?*>=rfXC{oX`Qox!D!S) za`M4(grr{CZ?i@0&pQNI{5MT#;2?b)?U`h=e6G7iD`G#Mam8~%D+eT)l)J|b4lms> zEY9E88pC&dfY+R4tOIYSwRHnae9sPtw%3PF6v&K*dTfR4V88>}lEg0*)^g=ch> zz5chfHza*i_9*SFd_5eL5qk$7Y12a!@vE-4B`KacHt%OHc5sM^jdcVqd4ED=F4#i@ z@a!Fv1(vaMrv-;~&Attm%)JpWU$H#E>>Z}%zdp|iT^KC*b)cb~W^EnqF(uvJgqTXh zr_y&xls$Sa!8-z{*uAw^k$4tCH>6QtFRp!-q7jQ9x*6{kr;g%eN7m`Hwp%XS6}<{m zf8VY61WC^t<5$TUy`2>?Eg(p1{p?ndS;wkp?UW=f*6fP8(g=tN4FmU1iNW5T^^ZmL zz;NdaD6>#+wGfUrNL`}O_?aP9L8D{E0uYm2*z$9k^3QKMSd7s_r-N&k5fI?=oQ4J) z#?55(zK94zx^9#tdQvjEhHD6W{1tr8E_}16xRH|+tlL`hj>r;p$@uBIM0ngK9u;mn zQI%r!`xXa*03E!|g5&68>W5)w)O9Q2o(cLm^R{BlaN!%pGer{=)`>0AF0y3i%{57J z7(u%2PTaU*g9Gku-}>qWWAk_s$|UnnD-TUz2vXUbH~kx(6XMhnoVzJg?xM+7?sJ|9Pjg4uGF39xbAj|hX9)?Twda%dm2*6*j`P;!SuvP# z*r-t`QVjO?-SrRfK<@D#+N%ii*JrWBRG6`0^acJ=&Y|dwVetiB?j<2luh< za|EH{RUWBBV^kcJ4d~slWE{L06895ULzRp~90ddC2<4uG*I$Ab`W4~3WM%+P4E;K_ zn@`62$=dU8I|l^XVp$m(^;$vL$H53fS#P-$#TD{5hOityH}+0`K3wIBrsxP&`qb>Q z`d&5&ruljkEO3boorlyuZ5FmCFD1DR(J``lqb?IKV=>KPI-;k)d4HsI1XXD?rV z`rv`o-K4<373`?AW47lXh56ZZg%X(it*j1`td}hW)eteoYm-*p>GN$eL0gQ3QfP z>mMv(nQZW}D(KZ=5a#{k{mye^7hU%(Vx$xoa}-bFSI?gZ1_j;AT+Cmj1_0DHnN`7a z@_{1c&`3%RT?_(F^b}1W&5PUbWzO^U&Bm=@>eLVujf#uTw>m5LdB-0#HZ~>)67HE7 z^{MEHPVJ(F1~5bnwY4X!M1CK$`McWQ9&TWDb+ae>a=L$d_fD;L>DYaRo7~*0{|@{S zk`D2XPUA>5HM3Iz@jTV2{SyWnnOeH?+60l{%GVSxZy56e!(G=s&&rhu17c007U|o^ zG>#D+xO|R_-uYL&5$%Dtj?VoCf8HlPC@(2O@2RCo}Ym7Rl$)88Y2@z#!X8RRE zO7(eF=uN?YiOwYuwjpH-#&>?U4wat= zA&w$Y4{piZ&Zm!tF$1~Yft4+Lq4UQ1ww(SMTrk5c_85kutV)G2t=6Zxyi7=| zHgTqdw`q5?w6XE@@|s~|bD*tEs55;`+hNJO|EDduOCUmw3F?phaRdpzo}N|8ttE6n z$PdF=ldk#V1HGSV+VQCi11HkMZ~%-LSri2l(yfm!Z2Nc*eeBQ5m5jbte z3@;Cl{WX=F_$UH~u*X&#I-nz^+Y&c!>)e(x3apxgs63c$z@VZz9AGfyP&b^6v-v~P zAn14t3gT^2mGcY(%$!%R7BXWZj_o~1WOIX7w$RBe7;(g!Ba=NWoGz`_*%YiS9Ar8t z3oc$#<;{#9J9e61?M!wug_nhPmsV%0A{vP3K@PhAfqlmS7Jw7pG}rJH;Ush_W}^=I z@Oz;_BdQZJpV_CZBe`^;KZ}xrzc6c27St4$1OTaJ`wZ6mazgItpHsi0O^2?3g8>@R z^HO;|MxCa8deO!7jR&!u#YNwWyd?UgD#pNn1#Tt7KWR4={SLhZxhWT3LPdkb@uzk)Af{k2iFR9+1sC3Ld z5OavhU>!O|zu7Rb2AEKKGt1`6(cs&zNG5=HcrsHjwsP`v9M!W{tQ>b*34^5{eIj|E zad=NVA{o*ftMYZT6Up0{)_`QvYGc$k79Qm;5@@{#k*{wt69HPtUnWYgocz#~Mitw_ z=<+K$ZPc5Hp0c+#rVP&+46z-1BA$Pff@0)Zj*@lY1BFYhE}HmYz<|h6Lqj9kv$1nt z8ZUxm7={fV-pP0O+`o4(sAqp~?5KS%=H7qGzhu<98)@pwX9XYKMx&M!vQsv_e8hBZ z0vT8g&gT&yt8QGr?1B0oeeCV5C)fXi&9h|*Z-njN8R@pVM-5%J6AoA{g0d=dxDyp^ zbV6?kPNuj*)Vx|N$%%?J!U(T#3kUYu?08{GA$w?Pi;f&4a6-%}Bp}nwYI{k8AvrDW z`{S=yQdFw;Nqra%ei0u27c7i?<<9Nf6}~HMQ@VD(g}gK|rjt6xS;fVI?m)651HzXA zh~FYS{4}B%2YY))P7Ksm?1{Gau+dU0LT+QPo!Q>MC?Gyl8!Y+sb(XX9J9fiXpSQ;z zeG2FNL3kZHb!Q&+GiFELN0UyUJPF7nD3*n9vu_Amd`@P$wWcf{UCvbb!VjQc&{8@X zQ?wSVO*BR)A1-m}k7Xscb0qA)GCm+JQ|{lN`ba)Pau?I4l=l4Q09Uzcvi0{liU&@W z&a*1Mx3z9vyY?$Xja04*yE7nQ0#Sw^K-XF3?CeG~QMrm;9GV@tE?N8l3KJx`4ZH}I zt3F@}dnRM&Yip*bOpga*g`m}~JOK2{SsQ)$*O$ednOq%=vGrSD8}aa%yG_o+!+XS0 z_US=P-m;6U1z36U%9UFfq;TP<=Spt?Cahl^S1|o|4_Na<9A1df_hBRO;KHXbd=z~!XD&I>U7#II4lh2xjn`bZ;x&E_I~;NIl(oufAeFM99OP*@+QI; zykGETGnqpDcyV@+fxbSt1+yeJhd&+@J7(i#I)N;veIA(tvHCryKcF`!i`T{JxZZ#i zP+&#uo&4~h+vN4Q_)+7=Z6lzuE#}&TX;lg)(yxo;mra-uuq1bj1;;(7SV@`im{s@zICU#R*ll&a|H9>D@j3J^_%OE>s%}FFlSk2%i6_Rwb2i z6#asO)ji+ru-mSYmdvv-qApoyu%D4;4CceBm<&ulX8PRnZH=)cx1)NGliZoRKD${k zP`vy4YG?x@FbbvAKN7hpf>*n`VwrY4&2BVmwquhM$XGls7V%n8?U2ODACTNdJ@a_Q zB~Cuii$xeZtr-3iahdP~f($R=OYCdfIedP(~;~j ztX+Z0T}O#cGsX@R8+s;wffA)Wtm0zGZMi#}(<2rb_mGmpoWKop&w2eQ6p)HNN5OjI z#=?MWORkVxAaAFY>UFV*Gabt%8mhvbfm4D!!&&7A6d#mBtY6^=ocW(?YCQb(JP6Bd zW$e%%&X|nTmhJNZ6W_n~aA=HV+~$$KS|yZ_uP|wsG`PFb|&Y)Qvm#Zle0;s6xdGv#@_# z=%Y`t?NZ;wb(tx~xW}PG9da1kbAMQXnHz@_39iL4*Y^hy>hf24s9xD7ushm;G+?cg zI8WzqfkYJ7G!Ugcv)2xi4IxQ>TDi?36wX?|Vas+WC4JJVa{*6g%GL^we!F#Jrheai zW8mylm>&qS_GdY@^z&D*cyxjH2J1-RwZrpFdOW`Q5Iz%s8QuuFVDgK|998k1xd?;l zO)+7^!*n0XQQx7ifdI{nL9D$;F^wgW8%7up{WxALYinyM=YK5NFN>(uX!!6O=<_~3 zJ`epF78}wH>JS!!z_1^#G+0+RdE?z1v@prdKq#W;`=<^fi7G>iK{EX5mKbzu!6y(G z?WXfqA>@fld#(`jgjKNlqK>BKxdm7EawJTd;x+sDu9STol#Cz4r-!u&*vK=%H!?3T z4+jMD*V?Ko%_7}xq0Sdya3r9QpHKKi2s>-`Y>*G8NV_oD6jKYd0vEbion_7ufEB4K zCO;WI&9r`jAsP@pO%7Lq)V={*RpHn0AqE2D*YMUrq?$v+gZPif3Fb9rAcfl$mYvGlC+1p-mA~7@`tu{P4 z&<{AU4wqN$N4^a*VjA`~#+*6@FJ-1iP*bYN$V47E;7QuX=}RM$TtDJ{W3TbQL1V!* zVVboQUMVD&8O4BFygm%p=mRGYK`S+iwf0Z?i-KPR z^$8COGoq=UW-BRWglYum0TNqIEUdx9f`gmT?r6n{;JYpnix$8M?v&t4ndQME11m>6 z1~3gh-rm7srjO{&U3@V)D=%NVL?dq#&O8|2Q3f32Fa|8;tdF~0v^WHe9spNRqj#vP zO({$8RHHs2gP?Uot(4?jXFah4!2kb9d+$Ij|Mm^IL`GIdAu=)}+ih=&vRC#9p)xWn zR4Ac=q%xwAksV1xp=6WnR7Ogo%GeA$!Q-u=YXh;ZJY*E9$tUZAJPS&|I_cQ(u=M3!r6XFk0LLu0N5WQDdR?uhy z=ih{tsxmrUI#kyskbVQ$V2Oh!#Vb#OVZma9iAvU_>D;aJ=gv{18MVfd9rnBkV-Rn_ zQp2X~@a5~*d*Eo%e~i$-@h&qf>o|rrySc$kE)0`r_!EfvJHR?VP)mwz@thn(Q%r0u z(N+T1AeCUwA#=ow5PpfA20jlo21p`_m(5; z?PExd7jPQznrk1UW0iCPW`nGj1zycK^e(GR+1(JMO`c+2fIMG!Zo#Ki&TF_PmgNLR=rLcU5=HZL~3KHGCipbm2Xi#27BOe@mCnt~L z$r5jRRzLj$(qLSYyLVl|q$24ej)OQ{%CR4g z2Sk%>Y&}*Y7ElR|K0OXb9!te#U&3V<$8jJy{D;2&WwZ_un}#-R%By&DJQidF0x+hF z!F>$Z43Z8O>Q`9jcO58iDWEza@JPbK!~}MenmL^?_>u%-zVFv4!oxFyYyjs0tqn@) z20861vWCff>9W549?AAMJuX*O`>`yBzx{x3OCrQk!2k0_|7U;F@86s~@wYzGKmPya zA01GCdokC}{}K5Te>3wpq4XdB8->2Vzr7CM)Rg|Pt@zt-Mu@E$|MT_FZyB2P4t-=o zxQP&w2r}(IJ=-cfh#jqA56cYtKGDH|%@?vNaFA#XLGOwbSTe}Q?q@dgqooevgpcno zG;7dm!M+jE;qBWM)cBze<5A=|jWh;hSJ0Jk_wHU((@yNe_4OAfjg$eSfH#%BK2J<2 zVr&Q*yl&7j2uS7c?~f^FI=qq+5~XEjpwrk0$8Li1?;n4RN=n?dYrL)3QI~;xN_@~x zjS|ZOIM@L9q8xyLhzJ8bfK`ih4(AtHcL>lP@>Zl3C@UgafSbCUynOtv`~&w-&-`Hl z0cPR)Z%=0{Yim?0VWuJ^oDdQLyJZjom@@$^c;NJX_YR&tdkVb*@wkDU+YN`cwd2_M z5TJeO-X^r-AIAKUUbk^ly-;R(P)b|;Y4{XpIGng9t`1$RU%kW2W0VN(h^1Nrt@82h~ z3kP?=n+FjN=BwbV5q9BdR*hN)K0C3N&R7x?6N8}n=8Z`sCpk5XIQF6$cZ{uLtZ>XzpOmDvtB8E}gkLFT-IzvBzkwS_ z`*#dOUJhfIqoCmMFrZG}=Dk3NBk{S_q56l%1os(WWnpnqRzkwqW%fHJEMTJBw-=m% zp1^ejC(B>~4@wi4fKGL0VPPk%q)8YSpr8AWYsdM^1twN@RcCOAlGD?F4aWk;qJ4Iv zGQJWuRCA0}Nm4!Y47JrULt;~v*TUUvNV%|dL7s-pp6P_V9bb)Yf{92C{5ua4@f!xP zXlicimzbfaI#1*@U>g(~+DO}71`twYeQN+bcTWf96k^ZE?SVU@7H%OfDv{VzV#nl02u;>9iq&miby3vLVm@`$QXK?aY7%;xq`a zKyW4YFm^gvj|s*u=Q+Z);G+~Y7%B@{EQ;f_PH4qY^j5{=veRK}G`NM`vud!9d;lX~ zkfY#SXmt;_r@imC$G(Z+mfkWoIl0zoNO|%AoD4xI0r3F$4|2ajNATmf!U6*I@84I= z8P9(kScF)i7*mu-xiLKgJ2L1Auymgj2Djh=MDUyXy0(C;oxaAt{x!cCgbQ;B7ia>o z+wi72bWpY$1#7Hh#Yv)_eUS<$93k_DG~*y|Ln#5*1Rwe5Xc!(Vc?pS`k9J62FdW+n zB!1&J5D`I>eI3|{nuh)P9~rJ4uLaxImJ*7g2%O$hXebX;yS-Fymjs+tKZ7)Ip|KTe zN0rkYz|SiE*5gGJ^U#bMJ}Y8KKY;du!uMVnyZt$WdqCfMavS63HR2$W7>Gwo^(^Z!nq7yU5h8y{Sh z0S%Z!xRiDlr|6_V{e8t^>wV|H7?Tm#P!E(#yJMy81km`r9CPhjQ380%gXFU(18$*z zslz#+eC;`ekfVe?=%YW$lCFD|MLvA4?sB@mdHm0v_$-A_2H`Y=`kyap1qkk}{k2v-4{p2ia;k%c7iPM3UcSeEo z!yKgg-~g!&F$G1P^&byC&dAPQ!13swU@2$T+acxDzg5%<4YW$z;X{Ys4D%n=(`%{s zG{Wo*1he~ZPMd&FO-uVwzwh|WNFD6}1!*|#$90q&rW=ol7c)jW-Lw<|K+Ti(-thI} zrAx>S75jx;64KM3V=3P^-9VhWgPg`C$0!b|UIND*a-_%zP2WzZU}ZwVvYVgI3m%)! zKxnc%va+*_tRL)mI!SR5arj5C!$qx(A_8{xUs$V5td#!6X!ro3#JMwdtpGKEJpj#< zO!u)eW3F7`SFC%^apA@Bpdc|!h*69RH(EQ8-g+2_taw%N69OjCE1rBJPl>jQ=TIAB z2llD}r`QMR$Fxm%KNc`v0|2o)oq&WQXfOc0{}0qeKBehtqooHG$@ha}OCoT)Y4kZU z9z<-W4=4&p4hS!+<>6Qa5Wvv2>3!G*!A{QXYw!8?q3X%1fHJc;mKlW zQY4(UFAzqtWK`DqvgJxGpQ1cYXQ~m>1M`>sRiP}yD(=fDw_ry-y~c*!R=$0Kjo ze?4!Pr^zw7dQDnBp4a%LjGwS+b`*7DjO6w4do80eDZ%^SO+hjC~oTy{`S*;YH=cTlBFtJ<_fr0 z47A_6-*?;>^qY$LDsc2(}rgf9TXk!9-aQFu=+D%kQYIZ*o`#LW1=e{861tmrVg9rF+B<>OGQ0!;VE+nALhRp*&dDCC)opqVq|41 z2C;#eMhjX0?NDuWHNQV~Fhpz72nNfrnbl*}B{QLiks8$YAtB&>fKteEiZHCM?42{( zabBU4{2IOMh|w#MrNp(=Ai>*oQe_3QNz_Ph!Rt$hH+(fdk*$C0_Gm4TLKuESq4300HLjAo zWu-Xk&-m$f(HiG)><+PS?bxytQeYN*(nRXeDYKE}#?6h)0cI4s4!+fX3mz@vmPomGcCW z(I}s^7-~h(%kW=ck_dNHkK`B+v?_7jm{FTA^1=Y=2iDO}(CR;CXT#eu4lc)!C+nz* zAQQ&31*3L~x>||EkHdWc>;Q6z4BU(P;O{M2n;?lV(p@9Y_N1Y?j7$-Rj6A=(H%m=k zyK5wo=mbwl>=d$R&YaOAN!=f52i^NmLND<~EQg%N?0768R4FKSSb0aj$CK$eh<`pWpysNr2T#L7&F%FGBqQ6{%pkSmmMs?n#l8DVHU@@ur#M{@Nyf$8wTj7x zakKi4QJWj66@k#PHQ>{|7K_)3Q*HpT_5A{3%;!1MYP18(k7D}#5MPg89BUwCl<0K< zfwlRkWD@nvXAFF0ytMGO`#}HCuzqUAow2f5fZ&3X^fpJv=_KLli2vylX$OG;m>kFB zuYgu|3BAJo7I;5rOluO*)Yn%Dap;~sG>wI*u^xJBa+kQC0UoDC0DuK0=|h=wcL3*?z8U?Aq1Uq2syfNAGZ@m=^VMLKi4?}OQ28W@gI zS-~~F);(NnFQA~#>xk)$)$fnqv4?hbm{QcTiKj`qpSF3LX(m!^SIOI)4D5i2VQJ$?HO2Jhca~_R@4%wnxJ! zZ2d@{haA}G={F2m755Suo02aZLX^<)3DMB~m7V=s*EnzxBn(i^z$C|F%@ic%*>(-69i5i9hQQN>gUSm?sj)Z5EQjLk?8vnc)H_b_+^aGG?SGDe zWrnCl4!g*t zxTCbNn-4>H0Tf2Zklj?j>Y519@V`CeO3_gj)p)UagN3v^yk*DR7}y_PbyCr+VhOOhHxIvbr1NJkleLxYq99I{)|n1~>vJc8P>tp86oCuo@bpC3 zq%acwdxDR4-Do!FTgPY?F7>0f=i0~MB&XHyj&`x7clXSNnfXfl;fF!PGx7S7pIi1N z4<_t7xA&J`xkB5U5Qq2G)4K#|2(rSN)O)*}Kzr-%vEya<`RbG-#Zx8bG+ceMxy&Y;>s%z7lrZ@Y=0qL7UR+=2w z(jCMw6sM=>`pOJ41bqFVh3{9je%)J>R;u)N@7;}&kPiVzhV%avR=HoL8xP(EuBK=C zcWevoJGn>(9E@(!cpVqOj4xm0px=J1vlILwA zmemcyXTQE-WI73*6EKrnC(b!W{7mN?M+tgTmk!h@wpDWD*3;}Xv3QZ6Z9hBy$ph1SX6YgzSekj zD=gNb>`LLHcw}o2e+JZIPVgXgH!1LL(g6Dh<-M98syDlLyZVGUcj{FbQy{?%jAKbAfQ6~g&A)l?cB@D z5O(VWY8;TudVx;DXT@5-;Lsf>XjZXNQ3Xc;*D>oMH6*iKKMs4C8fJ4yx?cV61+;LF_xo z9i0dDC|-pf^h(mZ4u&OBbh4N{i6V%T0I8*8v1x?x13iAtm*f2vm6&97tpEO9`{Ja? z$X76BV0liJi@6;Ea5NtBQTxCSd}D@TWy96HDbWyCLr+&(4`xTmne6~^>Npkc>#ihs7u1~w_+%?JCAa&`%0~vwqZD6)lf2}b}_ZC=b`Za8( zLAeciw;vJ?5IKk6ZZm&+`sZVH?lE+s!9yM{njm*Noy|=#i-~+f5YBI-9_hE{zrP;< zfRLlbBEe7xW;$@CN2a^4r~^b=KlGxBxq|zf|M)Q*?DU_)WA<6-CPUuHlRDWl zHm9B|^3-0KExO^I__InlOOrqP=JTa+8$XCN7;`D&8iH=6NsabbA5 z`i#VB92ZRErJG%r&`Y46bFqtrhuB~&X)^KYNxsuQ+<5doA(fyx^*Crs#ruQOX8j|( zKVvYGNYpj+>fki+w~*ZFM3;I;VnQdzbR>BQvu)5-GJXZwo%~n;IJEFYxju)6&Eg(! zvJf%yRX#&_gktx6-<&JggE*imo&9DI$B>bda(S!hT#^-l+ZS;v6t&FBc}a~cqw zF!dRpjDU4rk&9ZsHio~brdDKSkruHarC;>UzI2NR_dv>4JNdkk?F?l&Gy*4A7d*?@ zI!99#gJ?fgvp{c$ru&EmBaoEZKlB^lykRibb>p7SaIm#~>NBh%IVP&8Xw$Kyc`|tk z8a9wO06?dRKyQ+qgi9;bUch1x+G{>R$QH?&iz^~OBN>HSBRSL?ORB1v#CYmG`&pE$ z0DNkcv0qG5bC`s%f&h0}Zj%Uy{c48VKKgUW+Q6~pX4QtIOfBDw-%k`6fm7T5Wh(_K z@u~bk9)z+f9^!$dij0kD0U((=3G<;;;Vbs8U>u^euALPm79Zw@$h3h!IwS zF9!vM98z_V7d8)$kgY&H0b^Lh;sA#&SMBRhv+iSfWUB&`cFSV@crYjE0Bro_okv~~ zHhCQwrx+7+K~|%^GA34-x+oeI0Yprft0K{fiQVY1Y-l&hGuxdQ&b{{mTUJiZP|ate z>In&EYjg7^WfWp3&oG*e!eALC-pIKMm`ItwTxK9ewNb_Eo!n9iWONwxts!N-%)AEu zg^nTkXG_*cwE)ut4~~*A7Fa)MLX%F@qj&Z{o^Qa2l&Ps$!BPw-V$OTi;ERE1x+|Zt zo8bNnQd9wjTlPG-o(7p$chIEnC z{~BO$vE37XhG-VaGN-sgUld|MCM8G_hl9fJw&C0DO{U~+^Ru0^-6Um zKOa{?M5JKRv9C^70GS8EhsNdk>*f(14h)NfF*@i-0an(1=9!(;S1&FC@g|R0X zBNVZ|nu({dJFei(_;bt|Bu{clR>q<9IKg3Bwj9;Bn4ORtJbBMPU zBP?XLp)Y6j*9=+Sp+i|J9*)`ScL@C zNYKmd-bMonS_zu?-J3qmqEG1cQR`hsPq)_8Sm8)v`8>EVuU#xmeNfy!@$eODh{AkE zag!-ff1*+Z1{**Nv*K$tG2UVeIHhE4h{iJ_!k@D`Uw~c$w?9ns1P}z&-ad_0)M0Ae z>drC|M82cn*dK7_z(xoNA^yRKdhOlP3kAr;@G!=0lD&TMaR%T|SxM>IEnmbsl*Ou} zFN3j!Dq=F^QV8~4s8zml?AOsbD=Zf}5aM8;18$IeBm~swJDT#1P=Ir_*%4OB&ZaU( zo9!-K=Ja{4$G=Ol<}>$0wTv;#^>>lEkFoY@^?ALD)W?r6RM%+`c##|U_~F zgqxrv)H{26U^j8Cr5B-<$Sn=O$8%MxWM#w4VE6pAG7k@C;cUB|Q2#MtvTv(O0rbxE zZf~IkgIw+h3Us&k+1V*$J`;d#L%dJ81~H!|Xq7k~Czf)cyLM#uR7pRBJ6c4#xDl}f z3_sQtX%H$iQ^c7cflb(mk#|v%6PJjnj7;K#lPoAk`iQzg!8P0gVBlwbE94C>m4>JGA340@TnX{(A|4CT_WxsDS`X>cz!VeEs% z0dfthjM-%n%tV>DA|HGnuvt9Yhe|Tur_|!rDBckbthe(rGZWI%X!r9mP&G*niVt4w z^}qmh)WyPsQP)FBsPUSz!z*lO&4)B=I0|;)xgJ z}R(+gGcX)nU^5ed|1Hy0ie zLF?pAY^w|l6lzV;kkY(4)D@(Uk-qQg5VSj{9DME8U z;xdMc+(B*)IRRE#c}WQh!dOLeKpQ-xFAwLn;be&th=qh7ifSM_!k$i*^he;dA3zd< zryY%RfQ-c6paTacu)_ehL{$iFQG+1r5Ceu9 zK%(D!z2MCJE_4GQMJ?=%yog<1SkGX#bMM`Q#f6sSd8_Z8=&69)v@LueU{UasRv4o6~E_q(pUy#tj0VGBxEQ;2zzIB{70>{c=( zD=W&2J%}s2YMrD}`=euzZtAf2n|MJQYNRFpa@`f4!m`_qk zX$@tQp?M&;H+jss>rdU2_AylKzJLFKCIoOwZif#8 znAhrRgP-{d#|REaE_@)QjVQKmTz|m}wohJG;Ce1%iTAA2nPrE7Rv+z zd90|GWSK20=iBP40D<8`+Hkl8OdqIk$*rKEa9#=N0O@2(%}5xgoro7gz}m_xui@xX z>xS@I)JS}C03pFx@N3Y&1lA!VsX?Zfdh1ra+H*iwq*Od_bZ{c5DzrME_((xZyE)d0 zR9#L{F`@l2b~#B&2GJ!@Z>cyHpSw*9+j$OB)oCuW!+Ym=WDu5`6lR#k1$Tsi)4~ZmiOcLdqp6DJ!;>vuSZE`!w)~-oTT@v zoU%OQ?%e>;jNb1KHVHu$5ZAyID2d$$0Xk3R6&US~(!+b+?Qzk31IU7XMfSu^2*;7Y zyO-oxv7+^kSS7Ovk;kf_dG;K2>_QkkfYrD)SG8va)=*4?g5vXFJ$Mb=DNG&-71}T|>s<_ipU3zuiU1>bsx4nh&ws#OoW|8AyU{V727I1ZBbg!`Bkw?LkLSW~M zYj@C?uw%y-fo&*{Dpz54t?Qd4KxyP`-+PNWTP>XAHeR(E!~8j3GR9xcWf4RK^KAGn z7md;vs8x(%4_Wg(qpJOrBwmutRVv5|A=?6m1V2bxM}JOZ7_1Vpp9JlHhg(gvAn-D)-8+09H;Rkd; zl;+|D;ez4LNZyk@1NYAP@DAcjP=Dy^KeW zd7$BP4A2kugI#=l=br{vA4CCJUr&#ngF{n8GP>(x4qiu&ycLPO_Yyt- zBahG8?!xob-qHfI2|r9%X()wx=>obWANlhA*xr&IK0>BJPntT0!3c(*L=;?Y0{s1R ze=RnoE7y@-yM2(o#Gc5sL7C=Qh--1b;06*wfa@AxH8fGtP*UD`(Ii&)@+Ijy5BLP3 zw1xyt>l_wZ+#8h71aCBhpkQmc{pxi!E)<|DsE$C5DrzRp!Y$OyHt_GEDQBd$6`iU!#QFQ#oxYVkJn)4 z(w{&5{^iYV^59#4f5q?L>C-JJIQ`@Al6Ou9)c)m2c%8Iz-^97U9({9!$ElKD%71vr z&7JfA?kwyD{^2B8^g1J|{*x1H|Fwy%@f{15tCx$Pzpty4C-Gn2hmKGYq@}pTx$rM8 zB_%2`vy(oqTw>~8Uf%vxVjAAQF0Q^d;`o1YJ24$GT`^4?iQhj^iJ7=M`*YbyNr{Wf zNfEfDC1gY;<+-G!m($YXvLQ$luZ{_qn5C69mz+Ejn9jKbDuqg_q)zk&+RW#SQ)Ex0aNW`@hdyT3q7a zzO|(EfAFCtWh6x93IBTDlG23#`<*2vTi$ZiMMyHY>GSO=ueLwoG(qx zjdm9BpeK(W;3<54_#>#Z8)1Bw@Y#dD3XGRq{`I{PDf$KSo! z(bHdJlh|;iM|4N={o^9nde((lQsU+3mE@bgHlH9lUE39VMFWv=;&6LuwhIq92qS@f>{xRltvQdaeE zC)wf&1}5B{4Z?-aesCC@3_`e7u@Ii4Yjar8TOPYVpGT3_mZ^$r<1FLC^byk576Yzcr^xzcBAo%()k_a<;6otm-5d<|$$nBc(oBa4afs+hB1|E6db+D1^3tHgb;eu7k?LDnXU3 zowCK{KxdhKIc?5-#&EDb!kSnT+* zFsZ1{@hd6@ts%34dvr=qUab~bZ4EK#v}aur-QH&twqM%WJAW771DfZX$Q|S6Ha&J} zo3<)_rf)B+)Ize|Gd?kLOGxm+MA!2fai`>$FIS5xg}7}oqb%NMv1P3=U*Vzi=ZH(( zt?U!mFUX!OE4mm_nCY&Yc>Lgd8j+N1HKCVIDLubhox#h{p+Wa8mp(8?uh=Yy&@VUG zdAPGi?S84YoG`az>^{k~_38s8FOx$z`HKuti8g~q zq_&hd)(&3?9B?hWaNtKTXR%S{g?xXf*M*uMZ5|bNd8!9* zI@8atT;gFYN&hBjBQo&T>k!qF*yUU)!oC}U>#wW=%V*3wsPC^nYCZS5;!D|y-94iZ zM7Xa9u=IJR&U7|~ktTn!>zEF(8?(ANu#uB%m*;ZZduQux)3=PQu9Pf4M7%E3m6xQa zQch1K4Cz^KfxZfpkf6uIiRp;jODW;M}xm$*mU#ArveX>Z{ zk@h$>*-&n;e;%j9E!V9+q?F;G>vS{vc9eZCEs=cvrh?y?Zt@__T{otcqq_B9~_$*g_F3eTr4mNcb@>w?(&Se#?otTy3}+(m&P8x z>bGIoRGV3TZt!M;n2qbZ_>p(^72l6b@@f`n(J!UQ)W6ylA;FeV6VcoF`o)gxH8s0f z_m6m;c|N*w+9;f^TPRn5{R`^{bB@*i=!LeL0ly~wyH}65x!?3vY+A8*vnMBExO!u$ z?d1!_flD2yISQPAvLCxS&&YE8w8KGLv9x%9MVs8b1Dq09j_+B{m1A2Ct?=`0+UxRA zR;+=ojdG{LC-XJ77peEc+1n$O&4rq}{P`1(o4iO}oK2>Z-0Cqh70kXPmKM7M1$GB5 z><(1qvE_1IA^g32k4{J*IO5LB+9VL7BWqh06!4hmOrm+K%a61H1L2A7d{25D?@2Q# z%+^0~_PgbNR9d5)uASk1{SMx@b-OZpLl*kAj$?k+-EGwGL%wIzt8{s18BBlo$VeM8 zztG!oKqLOhH-RaakKFAnm*dB3CK@J&X%fbUBu>72a*pyK>#EoRFScLGh9us7=Ll=t zy-HIj*){IB%lUYIl895v{Xw(PffRi`&mJd>hPR`#?Whd5&j`yv10MJb!;`MyMx&q{2e(RQlAT z%*NK8L*LmBtbHGg`|kMOoW`N>_G8+7M_%g2tC(aeC{F``Q_r>YP zY}KVtGiSwgLm39C3?ur!I;@L0h0)QFx62G^ny&LqZ)k1MVn}uUlF!;w%CW>DLBlN< zFh+kcTXemdJ6!38XgS@2>WypKrT-2O{}r(OfrpI{?5V^wfj?Zm{QbE8i1a2z5bWn2 z;Op#4{FMw5T2P7UySjKdX?UOD`VE_9)zD)iJY5Wxy{g;qkLQWDKmlPLZqNuopJeQ=nw5S9D zs8vP=m|gBa0mps;hx~w@JiNU`f!n1186*Gx1b^b7|Mu(%GNMw_a)80&qB4N)5^@Al zf+T@UR!T}#T3qVCKRfAvIXmKY{r`M+@;DpdLwQ+Id4Nd?d2vyBaTzXI38X=Cvj6?r z$^6UN{S|8ex7SWiLX;pO!$pvl5tWve#GS>R2C62=$%#tIO8oa{_peFWzhn`_XXQW3 ze*Snu{=D#i$MRCr#H{6y!~DMi`@ds(B7Fb1sQe$$xD4@_f4<$HXk1!G?mtE2bqB4y z2ej!=FBThZ+H@z`r%E7pGo_M$}z z$~-A6Q<-JQ=o zhVGeP(F^XT(fnp>bm#n@E18aDyp&%n_S(xN?Gmyq$hUI&>R~VD6A-^AUT@65<^E9J zHd|}%%uV$tTwe+Q;OnG3e$=+uYMg!h$nA{=@x86(Zat6R%YSS&s*g&e`n=OFe`Khj zp)6paOl~f@;l|^EdmE!RJ~Cn*KDOUT+WyX!tGC?;4nvH=eDm49i1g{3A7@I0--I827H`aah!?j(9N|q6qmE+oK{@)B0-c)8{W{avXjgPLqsPn>J^tI*|t3OFmz^XylPB8}3POKmk!Idu6t`IPRIfVb9pjfS?H$E{@T z`U@zheCRToJ%92TnAuN|ts4-MGQ-np=bz~a-TCz4Lr$WO*{R!w!hJbs7Zyw%%6~GL zyr#EvAs4;8mnptb!|{oQ@w6<1^wxoWDbBW~kKMnmn@3NcoH04LyhB~w3vh2?- zM_INH3OS!S*I4(ZUzn>nENA+c)Hka14a=7V^M_VuBtC3HA^H$Uet@j@T^}|Eg>NkT zDu1r5r%BQUi1<^>CK=cAhitMlVit`lDiBm+*>seo>E2_Z6Q5Ts_g|?uwJLf^#7h5|jpFaf)oUtwBv|_ZzbJ zb{^u4O&Cf&;`Z6C+qFI8koQ#EYmF~8UpU`fYGmb@za%h~RhqI&^5lM4=GeOSiRbp* zn%@HjzdR`mr_bMhtx8^sHIFW3r-R5`>q(nl?_&+Jhjx-Wa#Jv<^^t5)vWVfDPW?I& z_2tAlF!LtW|xZt}5Sh+FIEwN&AtS#gemA%1YY$!wKz% zVNXMXe@--kl$Mb!vEJN=zNRH54-oDyfID9SL zYyJAbqqM~0(|Xr6jW6uG;lsc3HFt4gaBG0rxdoL*iQAXg$&9<3_NpDKwA!k6lO+1k z1+5RX`)@e;j#^#kPHK(wFJn)#OLMY!IT^_^8hond%AqAQaWw{c?Vow2H*F5L7kTHH zB$2+~&mmJPp%+$pE#&g^q{Bfr$9MA$CpCT0%bS`gv|xzWFP~^XHXF)a5zn{%GEdZ= z-4BH1kNrBT@J(o^r|DMKpt0?ChM$M(vwNbAK5*X+=1j?SVk4t@7;-FjJ~wjb;Pn%x zJC^1%L<7EDG(9Sy$MoKF@N!Fym;o7GzSe4vPGh^x;{Zi3se$?*8AHWwhvbEmIcY7= z+i_o4O#eb&IMMi_!XU@m-Sr`P#>rQqdEL4KZ(e@5yTDm4GcNgWketk4DYJi%Qd&f0Fubm{XUQXEJ{lL19P`{+(X?3k&xj#^=9c*gxa5B%t2!um77Z3q5G( zmrtM%Z7&|`NQ)L4NqHtO`~9c;$cO0nIR^EbC6{EjXEB}Q__ccEV67TSS_^4SQ6MxF z*5ak?KlT;KmA*e`Y0NZmWrwBJ$uY}E_d}|7y?P;Vhl4-OI+kU7VZg9L#n?)w3V%Hh z6_27X#gfvosne@3F7Fu`NaM5~c)=XS`8Iyadf=yO*3(09!1d@>#avA}Z+VonfWaHX{HAH$vmVbw2Q>)HF6s=5KA8*S-<@O};`)0jh1q&z z8G8guih4F3J@KHZ=5dJq$8ki^LDf*`-T$+=RE756n;u;cbN*= z%X^$rZ?$f|XtNJ1Q*98r#3Iunmt4I7#qKlrLZ0@eR~2-%&TcJeKk^`1V}kTvSf+cx zr{P>GyF>N7Ni6*5=u>j@x044l1(>fG7_xhP>3`{0*hAS=AeFo6Kt$8qdq!E$on^PZ zG;hgk*)q}}R{U@evplbffSxDANwWECD_iGnzkJf}%=Yd%^4^7vblcT$VFXWlX4@D2 z?NnSkO_k3EU;lF4@+s*KODbJS)tjS3a@`z`O0w!ElpEaZW}>XlRUQ%CylGM_E{Cx3 zm&pWUp}iC1&wxaSv7c*ulL(;^Dgy@u6}G1aB^Jah@edhWe{nM`InCS<_p;fQw~?!_ z>cg^KVfwtJf0woHVVAMN9j{Y8u5A|#Ti&$#S^G?YkHyiiCZPk4G-R~-2YTORDztnF zB-D|78;?%Dz?{&h)T!vfWTdI=LB^q!yqV`pyv7F;jyogD?)>jQp7Ic%t+Ia_N`F9^ z>7v4umorLr+^^&__3m!8p*qWVd4+cKOoydZX|MiL*G#z@k5)p^Cnb_}fx|{W>6v!q zc?$JL&_9TA9TW0?K)ZI>pW0r(%s~4Gy=&9Ho2I0~?cv6LaRw9_JsYJN*N<(v8N7TY zLwvdN?EUH;-U0XA7b0U4xvn*_5BrW*b9CMb@pr1tIo5^mz^U0%F30GpL z+mwQ^@!Eao1p5PLw_E3gS~)S!Zj=0YAtT4s^!-utox4&tFxh%sd5~nwaD=gr<+HMK zSTOg8Q}HvCDKZVoc@GJ;_B-U$&g70=j_*l)HFlIkklM?!)F5wVRP(^;fW({kRBj2b zTv5F6?kj`hTFy0QIW3!-3L%rz8yyT3>DQz#GJjRuel_U|$#RB>Q`d2Rv2Ub0iWvu@ zu5*5(=pgT5^c2p_j+DNT&7!wchQ-Rb+>dOv;Y8=hIy0X9=92PF!Lk?bG)~ZEdRHH# z>6lH;=rdE@m%V9Usjm_p->270E6*}}nJ$TaF8694W}py!D;vLguZM(&`H@!^bCF-& zzOC9)b)3IFWgRMWC2MAiC*!oPR@=~p*Q33*?Td5!N>VB-4y+wjyIr$I^)OABnq(#M1O#0_PCj7o=e}3lwBDMcK61``_82_E{I2WvF4wUw-Wp4 zSe0s6(eKbnm-Q?{BQ@z$5n3j-orsBC!{^1TD%RREWF4_-5_!N>4 zTW7nR+PAmGAhS8adRAj;Cm~KuH9vhfbJ&XRSBBHR3k;W{N+Kf&JyeZ`hpXq0QC5te zqBi<+enN=iXzSvp)M+vKhrJt}3`BH3rE?hCs8{Pa6$q<2J73*kGpTM)cbj>4vB9Q1 zTd@nr6OEj;uDX6bV?dgg5qER%@FAyf=jEMkTNN(&%6&YV@5I^hg>=ALd9&)9?IXc2 zM2A+KZ<#sU2lUOGby11ta1Nc@b#fz3rBlvlD~G3U>INN)n@$Cq$vZFSw?$SuUJX|@ z-1RoSoMh%2>#XoE=Rcv z`m5df()eu(FRxKu6r@(RiMp#3Q{pxl=T6qvt6uqNU)a<0mla#ilHB)bZy>L#QeV0D zeq1Q0Rh*VrelgQGnI)UK_2Ng`gSJ<#c-`Zj{53111>!YkZ@1p8zr?KQ=yhwd`paVv znbsbTV@B-MUJhX-S=zZ;H{6qSPkMJRb-sAWC-X&Mt>Mn7$cVe1eS%}|R{J1UR(Y?w zP?9%nh<8KG{gww@JCC${4Dg@Qdd3(2HALHbHl*<@VE_CXtwll^g`xs~dE zpT~H2E#!$xOwciMoH|g+b0uI_$!6YEQNY1Qr0r&oXTZQIU5ZfSrEb-kuSJBB*Wua^ zchP^-f2WsJT>h=WHgWgW8{b>pIAt%Xa0jS zhaz3cl0Ru}n%5Khd#1D2DGOw)1DWG%^k;Ttm<3u#86VtXc=eL~w3C?Fwemr~4bA&U zOy23-==t<0-r|LY)3w6bo6Bwm)VkGmu2*@kf0pzm_pl42l%n2Zo>zU2EU4;T^t*)f z6NbTyDm{+QDLQlgsae)KgTk@9?s0nbZ{3ixujB1%^2=8>ujG1klnFn~WEU%()j!r1 z2K~57_Pz1qMU{Cm>Bp?`Oap|>*Mq~mUl#95wyEeL?X37DG+UtbM6mD38*;-L+l-Po zVcpNSp4$Grtgx5F(@*sIPGh5h>9Zt>aXSnXK?HTk#SSfiFQ+=|mnyPMThvhJ;A%@!PJ ze9-SII43dubV7A~enw`RPG+ru#$S4sR#3qbT#2 z+??=NN`QzoexJvGmYWlPzx%&}g}*?8f5?#kvpg7@nZE<4Kk)%(dHkpNpw99Dk*9vP zdXQpsOw-xAm{ZnX>|Dop)XVc;XcCN(rg!&UcF*P06fOMnX7EE&zm@NDT&L!1jSF`1 zPv+JZQidOA3a!2C=zf*t`L5$s=qEk5=J@BTDOY$-_yv8QjXD3s*CIu}h1}lYdgtA; zN7k44ub=B3C`ORuu@p3VK%0ch?_ajQn)y|P0PubQI1``xnY745Jri3^nEw6273{pss%@n-w zD^ZV$`pU0wp|sC-9pK-T{qDlsaA%8g-Rf+ezUxBD#g6t=%FiQ~SIL#1pI_z^Q)kp_ zALbMCc=BYYq2o8PhYx=}oVvi$Ia+Vswvj_r<;L54dS8#9>GD3atB$rYxgskhPUVq7 z^A*;j&bhvbWya^#GW{z1&gW5-PcpPb{!$d*K`x%svelK*!X_>1XE{S5xI?4cb<7u zpYSVv?v)x?-+O9#^-{M5so{c}rp7Pz#PeyJm!8r;ycKS{eRvFlm zP$NY5V^yO|U43tc+OE5gy9|Ho9kNtTzcJN6qngt!q*VM!d?D>zn9X4F)9NMFY!c%Q zHt)FubGfNi4pDbjzns1;5L+7N+^%Q^!UdiKlpGgG?-_BdK06uRl@m#y zcU6zz5yg-p=F!qMo2=&aYDBAS>_}<}jeT;U@18P}O`~@!4(#P%T1%H~5u7p1Fx(wu zXu!8g!zM3kOT+=qo@bP{1;XC_H5-?7Sq)7)ZY%7IIxNpEqfB5;RkJBM?pCOV#)#^B zDZdWACWzeX4tXy*To`sKdb7`)hg%wd2!#&>-tA)DkqW$ClVePHs>R6U`VLX9AAXtD9G`K9>gS)#2Sh%|rB)Gd< zaCZ+D+}+*XEfD;!z~1}hyl20^yT9+Azh-)-s=KRax~saox*p&T)@7dAOO$BY0+`VN zR_v_{0(*AfsC7})3Y{x_vUgpKs}zTxSjayfiXIo*?}Wh4^2a=G$0oE3v#`rhiqhLv zxrAqm_zq}Ky)k`148A^qO)cy$Alr;qx>*v`KW;zhM9zs?hO^Kzlua?SZrMKR~z_ZzwJ~= zB|`{~+N#D(f=>M$Oen!9kG&Re@DEwWSYBVW`G{l=A#6M5WrX)2GK+E)%Bt%g3WcD# z%xbZ396Njo`Skhqkk9A%SObpVV1>p(PQ4s9RuGeiP8W*$JoVro%WuE-8iNz9wjzEE zV%*HOpH3)d0?~4%-@fn7g2;%0cu0LcKeI;ej)pzW;qm%t8FS%q-H%zhenR6Qf%PaU zDnu|;KSeX0a5oZ~$x)nGO*45#;yH8I%IOYt3hi){Mlr_xQ8c5$G%^E$cA(il$;O#_i{ za3X4Y1N)2@(VNMWn1o)h-cpRJNw#j+l=F+7aZs>-JDaIb-fGwm@|wn$ZxNgG7lq|h zTz@}jSyt%DiBwo!saj;_zfFyP;Nzv4Fr<1MzrJ8qQg!y-MqkgRGXHzDzSAskTM#k;$27_Jyk37bSZs5>`I!Fh;;bQW4U902ZJr2^328(iHG z!WZ_>V);t(ebsr>HhDgvCxj|P4}rLY%zNwWs-Q5MX~+$;pXe$!eYgnO==7s+A$?&H z=(E@ciD7=70b^l|gR?WbSot;V$N5`X=(<}S z8)JsVSy`0V1q!aK0A@9Voz-qPIt9cn#Mhk|G$jvQyW3Yy8G>S!#+PW6S9|x?{I=z8 z9Z{)-`j?EygATDOud8a~hcY{D7u2$Gsh0!pGk>0ip9;0BaD4yVA6)+Ut*`o>qwLFD zF8UJ-t8X<|Bo4QUvo28wD^|^RI?R`;n`-8OxsbAjrQ8eDuJ4xFKuG2b`MKMV2j&0{ zW|q_Sy{jch?7^J=C7RR~G|GFgcLrmrri(At1I5=hM-hE5>+mZpuRJNgDETZF%-wn5 zV3cTeF`Bb$@}KW!Fk=HUM#s!t{14Z^=E~>-M%xCHTU=2;v9dSMDrudK48IQ6IP95$ zgxo&R|91OTm|O6b8F|@8*GGDGnt-ST*ONl{AeYP@=%Ib3=2J*7m4TCqrb^Clg`8zj zsrxUBvF+v!TD_rR2Ovvy@hAgZD8Yz$@R90al*+UqOKj?}Bba-KiV;vZ2INYrMu>G8RhaNNW7xidmKP-NJd57!{6j( z77B%Un<{$m>14FF4?1Fi8~pb2tXyYb*8~?em?&UgyFtKJE50yb-Z1DGm8HsV1Qdm& z8~u|Waky628~UrP!NzDD%jy|fhOQv=0j#NJ3YHC(HVOjO+{I)uTBpRWkyfKkV_rfpv&~{!5Cmb=PTz4E#w@GW} z)W0RaF!AB5pYV%hc9JeqF2-^?HBd;~a06IL&a2w6Rpm07h^IqpxZF=*A4qd9GRa<_ zLg~NSJs&H*IT+Nzl2(Xu(Ai+$?<>xP!t6D?La2*+lR! z%6;hqf1ap~FhZp&zG(Zxsw_~pTKj4n?{RVA~Gz+g82tdeh2W#nMW`zMq*)xt+p z67?kQ(KmB`x$|G`dQRaq+?2E$!cTnN?9}x6Uhf+o5cYB(2q>_gmX4Z!Nb_19U3r|^ z3UBxUq3sZmX-`+wb1gsR4LXs=y0e84a}9Nk5?Nqw=e}bST>ZA0MO2A?faD1CWT7AY zv2W+x&{C4m*0a|t2rk#$l^z9k1&Ex}Q!FtB7xcAIlbVy_p5r?Tx#$>X9CVJzfTxBZbiX zqTm)L9_D#(1MGIup(?SVqK7wXKc~ieyyBvDbVPEvP^^~y#=uLm^V3Mn$V1;zGUZ6~ z+_Pj1{p_Q#;jPX|QZ%f0*10;hJtHEvxYYUjW>LO2@;$hnxeQ+c9N4((*r-QoCE z7t=fYskHu{B<9P}bw!#g__^0U?DuoI8*XTy-y!dw!0Qgnt#YP$-5iD@oecwJY_x5o zr?)?R`I5uvLoQxNd=qW8(J_bH75xcWCYqSA)i-`*3RtvbbV6mI5=OR9iZPt2$5E2- zqCV7`yopzoWSBf!RrL66d+wk&=0m_kOm#$a9qq^VL+thGMJ?S$j>Z?Tgyo|$MU+dV z8(CJYxdjx>;;|RaZ`)&i?;28^$QOgW#H&CeQz*U*uL_KV=#ET)o9C+HMHxrN*xJNJ$CTZ zeeaG#&HW4g8|%`)u@RX6(}(VVx=220&wro1Ge3DY!u?Yh$^Wzwn15eN|79aQ)#D#d z-k(bUZ%^JquATpBBd{|4umvRD|%Mrhtv!r(LmQ;E@?)nM)cHW=2DjbxA}^F?go ziB(bYBfpPO?S7fKtTANyb3~_hSLX^(^@AThu0b=V1V_+>J4eH!Z!c4-8B;AVx=7#Y zo*?o4I~D)@Kep z`>_q51@#HNC5NMD^$qq9F-9_nJ4rEs&tOGx3q>wsHU}N70xWwmo^{C?UE6+q!y8JPuH9zPy5q#lP+UY#3-zk-nGHiZMjuxU<@eS z#~}u>M^2+UTh=;`K>F)s>ZHPM`zm=Pc-}&+=Wt&cKtoTdt!i2H_`Vlx$SuEAa4~h@ zB%D}J(UoCO7fJn=Hy<@_3z6Y{NdU-S;rFP7NpaHzXKxyN^*W8~eIIA5t!v4N2W_1h zJkH~_`HMF{E?@HrcgDQNFGeJgix6?yio$7%PX3Jcn)PR6zH3P1i{NOm(6PMiVlzJ| znqwo*H}#k-qG}n{5OoBfzxiiwjzPz2fxTp&p}5HjNcQ5*;0I)>ZM>M1cgyG*&Jvu2 z#=pzieCts!zpGQElJdz_7Y~Yo@T;0H@~f}sF#&113c#&5IyEky1(B0x1yP{`0W&BS z9gB=IiI+i&=a6jWmLl-P_-R!IW1ZT;P#kBQFB!oi#nv~aef+60#mD&8Mn5|~bc7J6 z`V?+cUUZZ`1o`xi@Q!_$A}%482+p<1!xO?ta;dWOdWq}er}BLH3G}0jP<(Sft+eI{xXi@i z;|sYvDLmdjW}^$Bl~j@YcSlQ+ZS(Z51}!#3jL)|$UHviSPUAde9vhhAlc$KIiZ(4vB$!;YPz1W2W?Z@* zoE-J@1)zS!{Z<@y%#XIfLrj}YFj@;6taIIijTjOCCP_3@xpo%k&_Upn(s2TzwGHqb zOI>~GUI0{K&% zL!JukLVUF81T!7n+!<=>h~7?7DvTcvhgHih5YO;PT{Vee4e3Nb@f`=NhuP8@FmYoD zJ*4?mMRnGfpaV2d$4O+E+GUM9p}1h4l3usIXj*qV4Uni}P(K_zyz&Ew_@PqVzDaz_ zw{e8yX<~pIJv{mKCIs=Gcevg2=ayUUZeN@}I~J#Pc3h3$Af6bH%9kuEuT(GWi>n|q z8tR&LS*tp)%1+Txb@AM{U6{;bxRRrsw+ZF z*+-H;HRxW3KQNyu4?_@@KNx!tPq;8zNVNJrbQkQ8gjM)T>xR`|yn;!gw%TJ%vK{w! z3cj?vc(gt1RNx);!&jS*GgRNg$}-FVn(tvPPV}n)UJ53=n}ZkVBuzf#);QPHY>qoZ zBW?&Fm@9(N$!GIZ~-|0I+M^b)wirOM`WlTZME0gg? z6z!HdmyHTK2hFRP(J#0QLP!?jiwYnt_~ok8xvoC($Mvl4z_yNdixc+Rul2}<*t3}_ z*RwAsvr668gvcLe(&2K{3K^7)n}50)xExQ^hppSy1;~D9=h_<^AM>e2Pr5jrGZ`b9 z{~*3L0SARWX6RU8^pnfxK+|RQ&CuVOLchD2|NU~wlacU0OrbxHfBeJKB7b8F{k}@` zWD5P^LjO;eOPGJ(1o>|*m$3ZqJ@V&11}iPyKVL2Z?PIV!nL@0r9>p=b*VQvP^#bp7 z0noCVp5||8kj*M1h+?wVepY;UWo^%;{5Gro1}{Uvm<0rbhe(Inxd*^3o|37T6ztz5 z4;;THsVryRVQy2r!!L0np6ciF6SrFLW)J0Hu&`P}S$np7gwsRlHDyH87(GPLOOIoc3K|a8Cep;nH3l|08PJW*9nZfpz6WP^zpby1MGza3jfm$sRLW${B$QR5^#WAVcZdG&~*BBSmD&&MhRQUBaM z@SGrzeY+D4a-fgT=b#9YDIj6o&bBMj<@uCP4hoN+`+Q5#hn1V|ME9b__bp{67A5^aQb%PafYtqnHwQU=tO~g53)4e!QAVZNW#g?v4a;hh; zAQwt`ePgn(pOm>DC}|p=73_GY@Nxv69uBYKL2N!-Yv?2d-_9iW7t2H+LaC%4F>EmwP+E>(a z>KOTtxYCC%?^;3@Bf?z)dxyjMmyhKA=zJ9~&)gP)qe~m!%|lF%Qg$X4_$asL&1AD* z5XObUK#eQ+!X=(hE|qPv13KI&vqkW%Z)Fq*zB-LmiUXy`$R9$aX!C%bb={k+lV4Q& zc7&{|^ll=&(wuGd+<_zPFnURNQecZbwVfz~XD^b!hPX;GYo|th160*?YdVvC z$Rf!*or@SlQZg*(^lMjk;+$`>+mx?_$#Ek%vs*V2b+8p-ua!NHdkE{xj5a%mu9f+e z;{-+sP;hK*RGB|MENS>77-C?&9fMr|%!kLU_b)QV&)vj99mj-nR^n&hFjk7Ew5y?gA^=aRA??w*(scIE<3W=`E4- zLW+qT@~Y|3p;bHdSV}56hOYw!6oNC)4)W{j`#Wn`Qqoj{H1AdFdxWo z;X_H_8#UZ`^7glxPs&;^z(Y`q(w5?Y1l;=MSMMbvaPwH1)`}CFTfj#F5X&Ae%Ty~X z3BhljYcYc}4fUY%xy856G02vB*U}CsdI!5+ErTDxcH4`~9wEaCCfSe)GERq7A8kkK zq75n<39-&!DQ_t0ztUwQ`DXsDm2-p4+E!RHsu6M@CRqI%hv+&{e1b5wV;RB=m@B!E zmK&^Aw)4^@&63SFKIII-_G1Kz5Gg*%}UHcAC!49v{>LbI_$GC3hy&Vf0*g2r`Cj zdP`VLDo~KotRzFFE`94Y zAG2a=Zmz@+NnzvrjfD9uwcLwCk%t5>stnK_K!ELonYxoVJFnIYH$3w9=@bX_~>H+Vj)$6 zf3|}I8(WhZz_t!usH9x+hTa9#o40))V?2C#(2!W-;^4^ZZXdKQ7gvNd*5%|?4NW&s zDlIGD!-%?1K$N>rzo|VbiC_-kL{<&%0+~e`nGBz7zBJ7R{5c{~s33AA3UozbzV;-`A9$ zESe`5*MAgQg$Wcevq#nf zpi;7bph)V8Jb7W_cHkQ7tp5cRpR9v;M!h)DG1*NFUVZwk$+E&SHuf0hn%Vdm+DJcv z0P`)KuhSH^_f0rgz6^(;@I|r_FfbEq-`inI$^e|5TtETvRm4v=rMu{0;92?A$@ zv0oK$N>TxVD2d$%tOy$FcV47NL#=o${)yO$=oJSrj~Q2O2qF0(R|T&nT1UAiR$Jh4 zeQm6EgMAMQu8}m57RF`yu41UzVoed=e@lA9&enSP!!CLY#t`F6Z+wGXW%Ub++I!2o z9NH5%B2+kRjqr#Z&Y~jo5Nti zr?~We5PgRuRxZAe0&t(W6R((vnlYsA*6O+4azIi3eI!3Zz=m9Od%p6O4-{&IT%(O1 zEQQ;RL?W-R7uZ3UdeAc(#D45B!TgBKz3hR%FLUJ)w~QS}O1=HsEvW(j=wy!ZV*RsO zVJakF3sW4g`;b^OabCqBTx?+~yrV}vyRiq1?;HY)_*n6&Cbw9L_QV+kqyj8EMAP8xPV7L^ z4)>1>g%sT?$Sk3Sjp$Mtvnoh5x4s|6S6eJ4z$iq=)R8paQSw1Io>1W<8J6L%6eLw# z_$2w-C@*wxQs#KC)i6aXUBU{y4sN5bo6z`$rsPeNCWZUTEK$8tLa5!S-vAg4#wgj; zA$`ry&}iW(oCtDvOAwZ!B6AYyt=VE5&YZQOYw879TzfViKRQ$L^}iZG{ps%6O(d|b z2md;n@T%TCpRET;MV~eVpTUAoA=P?Z$d5^7dYea1kkR4?W!m8c}&i{qZ!-$^BYGyCkU!I+bJdo1s{}b_}(3_k3S*q&9oTQ4KQ1kypF65~7mBxe z@CNy9y;;>58e`I=5|*ytghNuv&eU=_4D{00`T)CpHSJMm?rY5q7uvbOLMEXCzf8Y~ zT6$_;I%nFVTj;w42!8zHgFvc))sc+7(Qwrmp=(wXDo*5CL#wQV&)+*%%8Rnu8nXhb z73n^6vVSzlLuqDPwLx#U?;xsPr#AzhrytwTnJ{x5&F8AR?b@X^tIwuh$Fn<5Y!<)L z0W|HheL2n9_bu6E(+~?ce}9!&=!Wa|<&bOH&s6Gf%#(i$qV~U-Cx5K2{1%>rD~Y+j~z>!OZ^5^e^*-{vVqsA+!U7=M)QT1EW*G1l(_rLbLdLt<|7j8Z~2wIShYvh@Q4t z9o`?@3gxr)SNG!dK-59xAxx^-_@9)zY`Q|=&8!MYa>xw&Ar zRP7HeI$2cjI%R%acgkF1h-VpZIWC^Uz4a?;Fv63#Vu*_EH;ht38 z&k1L< z!FAqp_U6!c*><=e%`~aE!2J~BZ7z^A{2Z{}?}K$+u%$$Sp{_x#_2tD!W9f^L*y0}+ z+H1{BMuBW+jG87aJB7Wx?1D#iyQqyzUD{qR_?4=!bt%vaYRmE9Qj^?W{N@f^hoDy{c?uujQYh6R!=BUULsUq3zGWvrsy0eD z7S9X1v??Tf({BBXH5rw*UFSFIpSsVsQRFKeuU_k$o8#f2erPl}nYY7!kywr_0$%lV z2f-j+e8C^LaH(` z1glC=enyvU{@VY0?D=Udqz&w1eoK6qv3NA^*Hry67S;_R($V@e80XP2c10QjeGQBr zq&OqW(ouz}5CU35X#V&&V#ZrQlRXD|yjE(TLV`{Fy++MZ%!g7-{6UKk8~KqOTq4Zk zRUtjWn3B45Hl@?{D_!NP=lOIQq@%?6%vwxeDuFWUl|NinZk{VAt|7!Gq1tqDw3l7lv>E;Q7{9z3F1pi&zTa#*<(7$g;P!+-H@0y3XlQ(G`RX7|rLbyqlAm zsVgzY&XjM>cO&D6=9)mLz?*!RZ#p-NilbZQ%I^~cHl8wM>`TQkJrOY@Jj(1#t3qk4 zm_0IkKG*3tkO$6RA6iwe+^_>Kh8ImC#-JTuP|Lzzl{bexm|0zx(f*QX#e_f?RzW8ry|0I+bPWU*$hqI*D3{~8^m=_OE*3KHgYoZS3$v`%F8|;OM?TcV=Je#G$ z?*pRZr(7z-udJ)#c*@f;QTlx|5+_S3d(hMh@$QR6DIBF>P)fh_o5Vk)DRL^^zP<6O zkms@};UX0vXkLc9k*RZ|xq z?d4&h0O`$lFLAGs>=aLTvcn0Z5928k;SRLOBJ^SMRd8yRE^BsXG6LRt_OXfnbz8n? z6-^Qk#8ZUlhSG&Q`FMWhKtEk6pft2(9i>n#egpJ+*=q)k{e%Hp3RKocM^Rn&edsXeJq*x}Qkh@}2YHigWGMiJiKA z+({tCj$s*29M94d7I7NP#jw!}oV|R~y9Q%5ijf7Y&W+M2RfGXphHjP_T zRB-(HhCclTXKMYId!mz_pfnA(s;RLTJQmunNEh49>n=P*NN9+HhjN46oyXX>TuetF zJO0i9`F-om#7h zQvX_X`O^Sl1fAOXhwCGo%FCdWEAVc^zYLIYh>DyjDpu+#@YHfADwra}Pw;%`P!*qJ zt9GZea`uwp1&T6%B&y^hN0nkt@sF#TqZM^? zrdl=)pNh3qYF$nmzkFPnJE6;nI~=ZZHDM|{j!@2mV0oDd6Nd+1eJz|6h+6Q{6X|XC z)d_20qHl)?Sm;;!W7SHMlI1xiolD4tVAQV(moZo~UwH{YU`OK*Ok_OVM?VTNR_n+| zevnS7?dYmwA6ts_Y{q33O>R<~8syvg7=d?xyAy3t_Tzc|xcoj4E{>90sZDw6#<7o? z4AQ3$QH1dLlR?`;fmv15{z%oACwEaraSuIfd_4BEJuEqTOHU!q7zr} z7t5rF!Ff4sQ*Q_Yda#8VCC>NF!aG~-76&e>tF6Jx?L~=`{b(dpN~+K|$eEHqpit#B z#Mp_am1OdO3Q00whrD|PKk@ES3E|D8_ZNWe`P{d1ISy~GCdTKL3be>M1V{cV@eUXk zF{1dr>+2(KWH$`B%P{dU4F=T5Jp?aYDPR}^Z^r&u0NJTcfNB&$_k7lF?^vIdhoBks zNS2JW=mi;T^2MW&Ctr`F0R0O=>EMy6;kXy_)Z-s1e`GJUPoJe5`o1OwBM%H!&pzLY zM`A7W^=u-nqDMm)21A!ay8E@s8<^N749XpT?rq$Ba;gWBp$*y`h<oUv(5%KEjCP0z2N94F?J)~n5fi%JTgi> z1ubg5VlP94Qaj#N{SO~nO5#bqqV)P7Mik>y=2NYUkSDKlJ;s-$tKJraIxLO@QIH><`-QDnlu+%0R~neO7ICMQ2`{O`oh4h8R73?)uk^tM zO=WaL&NF-}@m2(NEMnq54Z~`;f`2|+yw}L7mk*bP8zJjxTf(|OO}hW$gANy_nfxJ94EVH@ z$QK29o~^R?7@DsjIA>(=Uz4j(cRh?I7hkuJy!<|&>4t;Iwjk*0gyJt>_A0n6^XP@b zs1S_a7>rt{OPyIk3I=`w1{Wh}KH+v`g|Q+*qWEb5#_E|lPM zAFfKy-CVk_SE;SHI%|A`KExTzhg(eDyllS=bsd#~)ZApbwWZYFI?ackf>m*GD*dyo zo6li)t|Z<8juztlTBq>PuO}@2{_WdirrN(zx~#t+#`t@s`=pNkeN*B&Ecid3_5Y{R zW&M2%;Fr>Us>eT^^*@#VUst-nTOWTaUHX51Tr@>V%wql7<22|ai%0Pua8|L5EF4Cn zOaM_}wVyx&QZ>WO?uV*qAW9lnGktqHznW+z)n_EC$n&4gPQ6KWC+EcbJ*R{g6{^MW zrx8i4+*Tzo%WT|NPXl~vZDVD?_9F(Jc6=qPG{m=Jy}vTOgLfxrYEkY4m&HobscVkM$UgVWp%oNHTS#XHD< zAhaK%lu@*Wkjl3vw#+TIDn;)G?HiGNaBgz{w{4i#3$fYM1O>7Hw*opruKk;jqkQwo zUvfJY*Lx(Vbhnp0s8ldp0{rBy1Ux-kRBpe-qDPjs5PnE$xpnhbdVN?dys;45i~cah zWZ>JO_nNstyxG>b^-+*qkcg`ON~)|}jGn)Hybszsf=1eJX_w8%PGeN26W=?J=OzC4 z0W5zU?YtjcUvN;j-_G~58)45GxGbKpPS6k{lP;drMspwg|6vZ zXi$L?nb%r5<|*p_UE{xmr~^-NJjh_cQ%Q zuH5g1g24P4Bzr0EMZMt>?#cz#nzMV+IB@P-{JIA;8%`WQpBS7d7vTsUZF+-NG_VR# zH#<%o9AmGs@`-j_7OJB8v8g`fi1eqfT05ZURNuig6jQEo_VoZqcesSq>6=-b!pQJg z*%(Qjn_MB^iZ~_l&eA4)`H^NO9)Ntn%#DtuTgb?pvKB}3RnYAa#w@J8V(sxvY2 z-0=9hDVjzlg;$j+hVmZvL|6&0*zLD$nkR!X46w8ff_p;!S4|eLz8un@&P;*8TItV% z&xr?JQUnj0J30WD;$EZ}SHm|mJkm*+g_QDzM6dJ)+4&n7>9Fb-;l(OiLKEYqw`P0` z!g3f&n>5)4UoR_xu~j?0vc16M2I0B_RSo3B>QmkDhA!=vk16CvxGFyih51WAl{_I4xiJTEvsxd~xT)B^EK2k~s>O`z2cbMyC03bt@+le2`qCOwBySC7B4+aT z_f1$VT`w`pABaT`v>h0&Hzdug&-_tZgEEjLHF>U& z3$2}*EW7WSgROE*Lwhz9M7qFFij!72H+h_J8V%4;II&O@C^JINBa*lAmmCG9?-zNV zRI!?`bfwg+W_CGmO!Ta97tjqUqE>v{Pr(v#HX1Z&kDbel@`M9x1_JmR!Ob40m96M5 zWptHMz#!@JKxakcBETyqBbVrI3kCcy*ec@sgPK;O* zcjKbtl(82QVFx7#jO@!&BBFz!;yDnd&sn*f_%Z)_g=#XaXhA0-NMd=EFHlSg#t4dp^gm~jzk*TIzyY4M8yy}aGt-}mUkE33eq}DB}cum8|6@LMQ`+G|dG4imZYiwWtJT@4&E)2&G81EKOAv zgS;iBgc1#d0u44VUK<)&@EIbIE z7?B*GiIn^`IYCu6KX)ZQDiaB6Or{7aS~Xc!J~lC}xUhM6p#7LFIAnJXU$oQy) zgZQ}AsDd;T!wds0Q@Ds8O8fpIVF}nCN|7OHVX*-+N$8;5t?V>*XpGNVemgI2uA#qO zoA9lpQDTP2CnzDys)QG4c}OE{y(9S9B2C^`B<;^M0)k>K zClwZ>DxV0?idsC3g>_R&ejiJPd`C4A903I3D@Vi3Tr40HudXT|ou~vMNzt<6aXL=- zg(p5yH6n4q?p)Qa!cJ`J!pw|fU;VA7a%aKt^?Ao!9P=z9|3O|-N`mY=Q#OD!ZIfp7=*qkZFH2UjyMx) z`EKBD+xc$xb+-Lvn2=|j!so++sFG&40*_C3vfcYjKAI+XtluvC+1@v~tXlS;3fPm7j4gI9Dz$$s*~^wOj8|`@*z+5Ek6L=C|F2M;p%EWy~6C!sW5z<($Kw9hYLj z!$om#g2~&3I1ck3y_JY$H5817l)`DQ(L-FdDbf0t^qd%W%Uegne#^^g`0AYcx{|1mN* z0L7Aj@^ktX@YLGImd_AqjYrD}8sdPzC6tVGZ4GVkn4d9^K)_r;8@;DhJb;X(q^zJ6 z1)qeR3N2{J{PmDu&ql}E$kNur8Z=lw$Flv`GUD@-KP$*%qw@=m;Aynw16m5}85tOY zzzJCB;Q+sK`Sp&9mX+Z-UrC@D2pa5v6ewZ~G&R!UF*h*P1Cjm;vInZWoUNXjA|4Cq zPWg{48R$VG|Ee7C6Ep%92rG<=6%=m}G=hU-`!h3wV$*|Akqm6`KxO@Ef?t43qyTLY zfR>&u*)t~yJxLEF(DT;rzXW=26Oce~YK)-f`Sk0X{7OAH>z{%?e~CZa93-8QzP=s^ ziQyM?gBnQx0H{HLXS#a&pr-$$R6JUyKOg=cR{mGm-G8a8|7*4e)w&n< zfI7btx)!!TonM~>paX)KFf|1NEDS8n^-KU(b{4jvY(Sqt8}wTM4D5_dpHilJ`nLZ{ zS^xU9&$PPQpk@WVdtwA7{{7WonV9OCS=j!S$y4f?64b$*De+0zB6Z)C(o%f!S0 zu++1*HMFp^0h;SN>sed;so}-Q_ z(Cn`o0nF{pwDqiQj0}Fs4U*ORSLRQ`1I<8pzlwM!ey)+_FI0`Esy^L4KLm9kJ!>Ny z6M&_uoee<8!psZ^Fm$ps)HDB;nURGqz{d2K98YxxwIsmS!2)1wXsxFQ&bQ2fDPy?m;;{r2Eg11M5tq73i=>6dS*t?cfX_r=vmnTO#ucVXgyG|pvvjl`~t`T z0Br$00A2tefFB?L5CjN4!RUzs!~o&|34kO(3Lp)T0muU60P+9@fFeK%pbSs}sDeH{ zP{%~?x%st0x6f7m{w*7Yr#`0gSN~Ie&Per{QT1Ov zO+*wR@~@OGs2_qp=O54~0N}GAz(3^DdCo-VITPLIi{2lXKWGe|SxlcvO`l(yKFeW$xYvEx2*Z=&K_|>sYe+^SS&*K}-vvp2?-2$)$cHm->U?FD@wofYfut zD?BqPJToc$#-#8UwaW8Lc|!|pbAX&20Qk%Ue0~i4jR*K#5b!Tn;FI7$(5UgJ;Cj!@ zde6*yzcGUb_CHjD(KC(FGtD2}{7H8h{Y9e(65RZ`IE!a;i)V6+-?Fs$gWxYN3q63v zv*32mOm@#qcE2&%{YCBc{1P;-g9JCwvo-^byxOKVzpF%se+wM{JZS^X;OKrCF;5_f zAS4Kb8 zLmAl9EASp%a47cDUR!Vo42J;0gDe7Wh4~Hrt2eJuQ0U=VBl7Mo5QW5SUKtROqwKkR z@$WGS=ET;-hVt)SGF_I$5~K5fE-5MDEs>;#52c2He}tC>2lG#+0^`?@Wdb9R5g?*6 zf)*hl7lCFZ5b=25GTP%S+}kQkphYlG{Mz=n4IGH&Cou{5U2tH#Csyzs^;b-+%n*`+&c3 zfyhNr;LeamOa~o*A9bj$lc}Zq3NHh>y7vBX4c_uYWGyo^%iNoLF&Ac`e)sUl9IRQ@ zImf$4;>TrpBZEx$4x}3TM zn6G~dMY$_ZPAm;|tv?R^lp=df4Uw4pSq56MqqxY4vD*-!fihsQX1K=% zJtQLRf3zKO|8`fK=^y|26=1P(V7M!p)!uPZiVnP)zS0yse$)%_pJ{Lzt)!uUGg?_; zgF;(rZH;7AUVeQCs3)cl4FzN0b`N@xqI&%CxF`d?u$#Wm>YLi=LinEL8WcmDm!4Re*sBJg|>SIAdB}ww>mf zVQG8YMd0hvV3z#Qunf5*jCa%}%gVvAnf@gRhUSdkg&|=rn*Zy>qR%Q5?e-~zZs;U6 zfMmA6Z&|yPXVvZd*OXdB0CUONq@gGRPK+z95O_~{^hP{|buc=OPa?&7>jd&XXL%ZQ zk0tGSVkMGC&4)hp4m4>nAhDyA2I62Dt)Yibhm_4UYCH?019wW3sx|{TU)=-c1yf1u zS2towZ++WB(sp%Nm$bJ*^T>%qVZ)GmtR2OW5PZo*q;Qp3fz=4q`;B6c#-_)OD71(L zORH_+cyaTdF<484%>(@NDWSlhTIXqfRRJSPWy^I^o=a!ShZ~x{fxcO!J8#(o86~f5 z4wPL^9q+Db#=+#6!6Fw8oL;A^73`;>l7s)8Pt2W5W_Kyu0uOa~8*?dJJ&SQbwM;d|t_!H|62XVV|g$nG?s(&OQ~NDbQB^Wq@~MZj&`PHzWf7ARsu7c+AP4VjsUo5I8B}r88I|JRqe?Oi zczKWLy&`<2tZr64@eNmVQX64OEA%$93)=f-t;dQEf`0Gqgl}5q>9%P0JlFdRsKXDs z3qmESpZCg=x=Mx!*KWRnkw37mB)> zl{RDEC_Z=W?Lx@=k+bImbppQ=9BZ1%W*GQOMyb402KD&zEf4i-^mxpH;p+a1j}qOc zlT4;#nzc}BeVN5}WJ)kv#x+!JsQ%sVX+%w3Y&Kkkf^g&y0u4OExoaNhp~!qtu9o6B zS*Sn!TPsgZVqHVVbg#z2x(a+8rz2jC8em;X$cUh9RNmpDezJ-96($TlCD{oggnx(Z z5&jvMhL(rNz)L|p$V*==7n!HQWN@*#ME-mJkEF$QA5Z7X1WtOy`fJhS334_asHAo0 zRk*>KSr9KB06;&&gX(V`i_#rqSqf27BxKGPLXNieECRJ^(le@gXUT3Oz{`*95?Ct> zx6n8G<+s%O7t^4N5poz`q~a=F900r`IG(%1#B$;K8!tevF-=WZoB|11_&lpB?3x5) z$dW=C&0jJOzqRhtpb2L1p1b9GJ`HYhJnZwPDu$|gpcP?Zo?e2&HhV^L48z<8WexUS zyplIygSuDsQi84bG7a3^XnCc~+Oxpiiy)aY;#gXa-#HOLkx>V zUnM#xCWwuH%dhfys*@xv_D88`dRvTYuteGt*v**xst&kx^`^A)0-}*3^qn1HQ8NBM(j2=<(hRoXQKtk=MTan(SmmE zmRQU13Hylv@1y-V%&|Ab!P@>r@)$g`k&AAT-y2J~VYmK_$K$gPr#R62)KS9cZ{YR< z+nPAIKa!2L!4h*{v&K0iP2F;-6SE5NO})Bup_wl>;fZZ(-msF)xm=@V3PQC79m+K8 z6T?;LJ11}A3<)VSy!1*dm6?()+1W5j)3yqm^MUXNJHpS`U|9pc&JQ|jpQex)fthBYMxvFT^N z(2r;h5FxO%M<;~S;H48mzoOn@ul51gP8bi2dA1Q)*tN0GwaDYn23;a|DKDC;VRt!v ztODXDg>ktdS;rsQq@i;rZ0puB1rO-mE~!Qi`(*UGbQyjrbanIMM{(+g5TCt4Pi!u@ zrSV0stn`!}Q&94aWPb?6&BQS>*`LHuggUqLE$ca77H+O9&o-fg8g@(6tL)3*h4jNR z{kVFtxYNylmUu-kZiB_F#~C`(SIJPP5s6+CH$9t6K{vvkkRhz4_&Kbtq<&w4P1pDh zAr37oZpFinZlXQLl3zS}`*yJX;K>pVN!|Kc->cG(uV-}de*yL@TgrEq%cKd=PwMKEnnaXcRrr5~4zITS^g|(r zwBv=e&{yS%MtHihq-}*!u5w3MyNYjK+yjHP@irsTszbMmDQTX2?Sjw2y>5CC=A|`# z(nE%TweCFxZ?+HoSUtT8n?L-D!Hes5zWu2$@6X9@--qlbdFG7O9}Qr-A5|zeDsr6v z8zCk^*qs?%!PW)yU@8)|IWJgUsOFo2A`{Rbm^ldXYc|LZJh&k@iS*|@<0FL7ot)u@ ze^EY0_6HbW@+mb+>p9dh_&OP-Bw z^jMv+TO3Bj&q1~x&~~>3Z3FIBbd}<&;+6C3@;Lm4Qc|e~DsoC>xdGS%E$Mi&_`H0^ zDf>O}Th3B&+DeMwz4r)Xly2<}9ku)X4ajm=detmoyeP9@q{2HHh**4!M*Ff0TEDGC z&!Rwr_M?5&JIU1Se!kh5%&#q>y_sX9BY?rAD6=;)siC4QZPC)$TF7Z+cKQj@!WWne zCsVA5i5ly*`Pln40|yc|$)L7%?1d+{095PvCIXzN&bvN&3*%N~-aIl*w1Oeb&0JIS zZ4FIl+HgtbRy)zjRk5uv(c*t77qmA?TKIwNEsjGM{!1#UXr$=0%i^VQ00M7sgi<(? zw375`I5PKdRpT;tv&fTg#)HXIzz37qpEWq5^~I%t)K-`|X*R6qa`Hci3zGSI(3E)7 zF(^Ztkf}Lt%Kq*VGm8OvHvK|y+5=2!OZB8f&X0pED!Fp_no@)za1(B50x>f*w^P$P z>?|4O@cAn#L>yp`pldDKZXK6wgm}K+^h&Ly*<`$+3=zl{(aDphHJd}^K2qer-jC6# z^jf&8k{mOm05ef3eY@EJH^IGbcQZ_c5`1+Se~i^kUKya`A=q9rErv2UQxlo>)G1SGV0UU zUxG=)?2`BQzo|}cJk|}F55-?2CP1xhm{W8|ne=a&d*ZCxX6R!dh;U)Ehmo&z7ya%%;?UtR0$n z2-l0tWG|HHW_*1DBRIhgn@nY`?uQj5c{YYEvL55K@>#OZ4u@oJgvdWZe&p{*q#y~6)vwGY4!yFld2#j>tl;0GX$>4Eg^jFWa5v_^|`;3 zO-MP*xb-2(zC@>VXOv07LdURCfB5{8S{`o6#5zOZ` zD2_Q!MoUVEsIuAtSmy39(jWwuLk`wT<;{JKxw#y(dZCKcVSvP*A=cb7EAi;+Fx4+X zpXajSiAE~TKbX)3qNFcNWlXJlN0nzZkmzqzuGU`HEB@PHY(ve%q1d~rM7gFV#&0ic zQuKG(>dXMSGd^wTlK3jH&|=&H&YdiW-dOdbro>61NvAs;taXQ}Zi%wbMnCs~KNIQ} z8e@DQMWu!wu5$g_qmy>Zy-$!C`y6qV>4;v820ZkAqUxDG@>t{bMxHkIWf+j-}j z$J`x&pm!ES(Pq(5~ZOsAwa#9K4AGvYfRzZ(pn| zlJVeVV1P1a>4i#TRLqlVG6cts31D7-F?a_#-{Y6>$?=7NsdwYN<)eGxp*>KY1PT}r zw_7~kEgf=0T!u2xpUWo{8=@I69rn+}PVc-y@|H|J#8AdzX3D6ej*$yG(J_ga=9PD$ zfAW0+m?8(sAq`e`Gi3$B0V4KY5+AKAY7Hx2b|I+Q!&)J^5P83!9Gv8Du5T9dHw7kQ zPfm?b^Jg!oEkW6$UyA4PSFk3K$hq{>-O;3lIr6BD4Ryr{)*Ce~Wa(i?_MP0{m>3nU z(ThEdM9Z7qsN?;>=L_Mv;RJeCwkPvjLa56g3^37u$UQ4In`>JoT!aWWHny))k>wp6 zvXR5oL1X%kijnkq%)Sr;+}gXo8!|75EAoQ}zVAN_EJZ)r`ZlA?k(|JvzE1#QCZ?zy zwdlPflfUjgzR%M=z3qEMxDrwK1E^ugJZ=T+_shgFT-t88TfywinP5t=8Vx=Rdos~+ zZikCG4x!i%Kn3?1$x`cH&K(c_+PAT!9wfM}sBx(UJaEYJR+SG67Uy&=AZpK?f?mJF zWKE$3z#*Eth0oxPb%6~kQ#aKi_{AHc#$5$0p6w1C5e-mhfr!g*B{Ur_KaFS|PZSs( zV?w@lqd!paQ)1s9pOm@B*Z;{~>K0VNpTQJeR!N=@IV;(dfei?##1yYx#>ce2 z3~n|W6N0R3Y@ctAOxWU?p=#H3+?MTKzfwM>vyZ7Fnmil$t!a`mT(JCibJCg>z#7#a zT&fC1#KAu@Lep#em&7&r)rLarV=$fVfDV7V$=2667yH4 zQRVAIc_Ldy8o0b_cVm*5=mKfdo#_(;y4Tqs%+lEA+2>c8M?|&iNE+p|3+Hf=vcVl` zC&(uEEGxfO{A&GILdtH|H(MT&X>EpkksZWsSMp6iA+y}ojFl#Hjm$O51n`Px83LDfp7o3wf6YF$vyi55y zR~xatowvncRKX%1YbeGqWs+Y6wZoeFP_n^y@xCN^ibILXzx`Y5d`IaAqhk!@T``n& z3pFhdkICU9j7dw4WcqV>deL3x6RAdzV(|t0WQ%kh85!PI2P{J4lov*YXu`?s(?jBS zlDdF|{!Z5;V(&()b_D{)o08mTe4VXgDrc%f_HdUs2OJmx*k|pS?WvI6e&v9g(Cym^(Pi(cnxa7XP8F_Zn}88t4swd?o`wP z4lYmSn!rxWPaJB!u~-CB$qRN7yLWe7&^paoRw1%Vw`vb*#V*o?gdr^bf*WTUvCr^w z5Uto9;w(Vn9$-c^ec`P6_6pMMUFH<5VF67H-a1)Y%iW->Ozu5D=Kvf)s)onuwcgp^ zfigHRcZ^zqSz8c-$V2=vRJ8jO3{^KK5?+$bdRNk+Ol{H7oOL==CxZ6CfxA^yc5z?6 z$luLlpHG|%s5WBZ6|b+!mxFC5-f3(BJnKloCQgh@@9>VDC~A>R&$Jk~$$n9rbi372P)$!kc5O>6wVS~%_jOEzl z9X#zhB zyTHe+5iM+aW1Xq#D&{~rUmsz3R}DJyd!ptJjr0!{Bo@v>l>Fv_G0CKK5T(rpx6@as zYF0>Gy51FJe&0UjW~SHrjvXEf&L_EQNj!m0y*& zwb(jGiHk!&=`g}N3BR8ID;PuRX6)hJ@VOe(k3#veCEl~T%T

Svu||AC2xV|2p(j z+QWS(uGQ1j|I9W0i7eLP0FOSh>cM#(G%DGNrJl51_n;fj4VXQkj}mKhq-Ex&*g=?| zrINeWwjkN!6<>0h-aKfXXB`BkYPEBa1|2@YRlx%~I~&ElW6;2p{guol4R~^x@c6mZ zUZmw{4_c_mI4c1MKQiJ}qaqFYA)VNNggLp!?v14CkWv!2;?4=|SNU6BeLtU4QYi)( z^!ghTxw3S`Tx|1Xc4iTFL`K5)ATeB3{&yD#CfUr4!Ny3C4CXju)Ske2N*0{{22?}P zAM}U55uIlR45hd9-jOU`^nBmk8O1}eoZX5&nVW~IT|+Hs58An)J0RA|@wc9PW-+m- z`Fbv-a@Y?!B?r-8cb%Upb1AUS$7n_B4WKe#n%ioVcW&SgObho9&a`WYmMWe@LD&wp zH{B-7h)&3$QP-r;^Cj@Ne=zgzP?*veOQGK-{e-Bx1Zy%)WklgBS8ZK=*T5O9A%sZ?V2@Ofnu_o38RLnYKY{MN=Ec&?3)^1Bt)O^okAY^jFK> zo%FMwz>x(p6JoZANR+^rzIkRF>_BO>Pas8hx*%a6!cVglYTDOqXl4kyo{oLQR+Dj3 zU6Y!w{Rr*%?DIe$vHv=u1dH^?u9RS~1LI>@%x&BXBu-E+(arNH7BcOykxp){D%XUPk6F3zh_kiesF4 zBRpP4(*}>Z;!=g7PGt&3)YdC9n4B zMt*^BNl|S;D&4c_JY)dZ`85(@~4|*{C|= z6*x*!>!%wN@7W*SLhN3@;-*C|uXnLK3%oK6VIGtZSc2cHc0;u1N^)s-!L=^}`2&t| zw95tH(YJPc#H|SKNm7XGc*@|77|~zdu2}t3T==+_ZtkuS<+|9Oc=&B|dI79Bz51^( z;bssqr0eK1?~}J;WbyB(++V1cvWMFz$NW|-f5X+lcx@1(%aON zqLdZ3K{E6hn8RjDhws1B^g<$tpJo_`s<5rJp#-{qb!f!86SfmDMu(;pZuHH-fU`HL zL#wTYtCCK;!Sxt6?iP1Vj`Amxxs>Ja_Wufq3$gzShXmi_EoO65|8oGRl5DW&;&H6`^HnmU^4BL4}iSl3Qd!U&uvk&TIqV*vy{K! zai~ami^D86yGT!wUgzrQ5IsmpvSG(LXlIXqJ}H;gD2_j>thehOjXki5SaYvpgK~^J zn#4l8+U%fXkFXidz`kou(oV%`k7xyVG^|q~T<>mA?UKx{>fwG>v+*%+e{_?}**^HIl zz4qEPjW!%kHTUR5*TC-WfIEoTP5&jjVEq3%gmxHhfBbfUzy3byeH`Bq5cJ*5?{Qk& zg5Qy@PP#YZ4ti%z73mgZ8?Qh&QBnXJzIir6eK#$E^;10m<7KSyH5&@}=}~V!G_rgu z&kZx7dYS0q8X7?@fp3sms^2jYJz8iq# z7+&}aSgg<`A1eg^9PkdYpE+~*Mn(DRLa>FifU4a`3`;2>-OJOHN!HNPZ%rd95b#1- z5H9%mmAgkygA}i~#k$@W@TQrQSr<5H#wAVbm*al`6YEG_uM}(ukNt}`KV(aTXO*4s zsc^@w1?X9y=In1TW_TW?GH7eE{Tqj&J2VachQab{9}9y0F*hNWl4(d&sP(qj5m|MTapX8! zl`T0FFzv(8;YPuvC?v4uqip8{*~K%b=rM;X*KK21 zk?1`#F^FdjIWhar#QH_NZD!%ki`QiRB`EF5X!j}-OSvKY;ZbB}uR5lZ#v@{8hptwD zHtA@u|3;cT>WM)(jJBKuW2<$4L1nPTD}?~FkjznbyE_lYwN(w}*0DAP)yH|Lt!6W@GHeU=O)hucG3AemJm}XBWS;I=r@bx z{NyD*$}l(S2C{|Uggkz5J}$;YO9hVs)B#Dd_Gze5mF@KK$RRV^uQoNkfu&*HKrCT5 z$`+O4wRK7&gJ{};lJRm+?pdQK{f34f0Y4Fd4a%1KceTaIY*9n|m=)YFG$1`v;g3qr zn#3kwSKN}Cz97W!l(XmB@wpga?&&SL2r(WgUWGo%{(1R(2m2R$=m{S9fu9;3+ya;q zv$%!xAM4$WYNAbsUwS$Yw#3FC`kIe&Z@GKN5``d`G^kycwWo}J3JX3EvJ?yAQu4p&o9qE~3IxG7aAi$ysIj|HOUY_CPBncKc zAL_GBXR#GjMTB%4yS1qVEpEg?hT~|GVn;A5=z@o0$Lgk+B1YKE-+!g{HZPI7Z7i`^ zMMHQ4Q1()EQ{qm}eX$-7WPhZ~zgmZE6wyI9sSp>*u7$wJ;IYqq(C_?y82S2_vbwjm zBEV;Mdlw+J&<#jr@NhqIUKKc1NBmxusBL_#3%xQxp+@Ea+m^%>P48>fQ{@z29?Dbp z1*KCP+q#QSl~e)21<|8f5r43uuhmSl5=liWpEEpxS4f-iwD-=Bk3MUU4cfr0ixlWm z2JZX6YGoTmqT?nHf+qR->J-MoNRR%AGfk1hVy~;)J)*(|=`l&DkiH|MwjtS#}G)WJC z%Fa~BgTzLMjnfoBZRk4Au3YTL18~e|sxLpYiue&P4py5(m#9dtOGv=>n#zvt?rUm# z95caAu{E8VzbJW`l5U9C2T5qF%Bk*qr3!b&$$fTcNKpGH4gLmttEd>Vg5YAjzemNb zu$%E_lO}SLNCf!AU3`E;mAhK4&(rm=nMNkbnm|ex4WDo%jIGl1Q@OMcpU(yZ$J8H} z+Fxdb6XrK(^AY4*j~4se0?M*HzJ|UjO$I) zf?livEn{GGYtX8~^20;`h+KZE!MyADPzV3U5AsnS*-O=P$P|nnu!%(QwRtDietDCb zk?@CSIZFvoVJvJf-dzOW=BGXMTE)GThN&5nJ3Usxo-6H5@C3$%TYaQ_D+ zxeH*Udhj&H7#=rBe5N)?if+-hg!RHd{WKlR#K2O!y#lMX+m;X#j=L7a0Xw|s4xxZy zw=rjRMITqVQ1WA344h>R{d(qanv;lUVv;wQ)zn3Bcqfy~`E!=Zl%68niESDliJct3 zwGW8dUB0~yaW8@~W5YQi6#v~`XY+>Fs7eFfk~he7@{UZ;f-T0rcWB%35C?-~ZO6YW z$sTN+g)vY!&?{h;ipcI7SNAM0XZC_*#1jgO5&Aps4{f&E8PrEx{Llyq%^&@`^}Uh# zxEwk?%VeR*Ig}V76|gzkDzsvvCX!GNI7%=Obl9#c64=0oDVm_~n@TvwNMu8doXX0y zq+T`>8<|X9W^9v$U>p@*=oqzR!s@TbSEWtjGCZExFq^;ao)h0fpxv`e>x7*rse%`S zRb@|N7iS7{ikC6dEI{c%M7!A}@A2BpQh2H|KQ<&Od<@r(B@JhZ<(<4(g78ePd??QV zimyaHDaM~fNr?{140!8=qO4-r)t)7|XVM(dd@o70*ka>NG8?RZyq8{I6*-t^y}u9_ zQo;Ibmm-}hm=pCIGaj8@Jw>O;wB|$0+ddvL6P73VJ6I#zk1k!FQG#TC%p*?Qa+fI# z#*;%Ga~=(Qvjvx$ywxWL_lP{mqP#s$FuU^mLeHYY1ZrYpE7Z9f_%_Imon|Jk{lS-H zV{@}X&s~gsn;;-P>Ffp21M+Lkcl8p}*c~+n99g!CE%9s@9?9DP?R*1SGBhu^i+A>Q zzi-U?;#Ljkc4Reslo3FuM4(PkQB32bV;MV_HbrO_U<|OFK-g8gQ5n)i%XUVdGsz(u z3Yx208HuD?WofNtmVy)Weq{IUa6pYX|5s^duV1C6A4047%Pda!dKok?RvvZXk;C65 zTPbd!8WYJyD5$)RyQQXJ3e3=eC7$3terNS70wT-tq2F|uX$@uy1U1W1+<~4Vf#}bz zo9o4<&^a31_FSjqxz;(H3%VxiuGksJG>C_a{IQl`?p^r)1au|EWXRz#oDO-85UlJk zyu%Ceh*(y{Dn~_AZd=M^eq?8G%7xtvd&sud zLbe2x|yY&l0vi$4ya#5PIV=I@wm0(G|ugfGc%DU#1( z$E8hI+bqMYS&qJ{Hqeol&OJOI?uk(&$-O8VIod09ovI+Gs@Th-lX0jb-+s3I;!0f~ zLQ?B?nf4HpCu&it#_Z=KG3a2@p% zQ-u*TNAUssOvjU#HfTJqjV?nFBKecZD`&5wH~i+m>5-w5W-z6U1nCFtcCa6K427uZ zvBe~>oT_N!$B^Tgdew#oxEchpbOfZZTfS>Tnu|LE4u09 zEB1+HWKXP-gkCF?9>ffSz`>@2>z%r+Dnj(s7P?>-aW)f=MQ0hqA~VUCD406%Ftu>e z!}={LgCmpAvN`HvHBDDX18WI*?(=8zW8BP+I_b2qEEl`=wdeY4O|?fX4&%wz1q8r+ zTI1QqEYMLcBBz*_x%GO4ZCtnzE`w~WD}uWFv@1h=Zxn!={%LjEe3`t97K zXtHE(o{k={s!dDDFT_JC2xsc{$1(5WE0BRqUg@Z4z9&*`|C+s?9kZI$pT?h`Z-4VC zf70NZvYUKcVx8MOJ}Q2PGcBKt$$f}s)J2jx%o1`4OE`XM*8Q6}9V17AZSHq?5Z& zqe3j&K1IYrdbiFfX~@g=K$0}aG$|5o{ZokmwspoHy;N#?;(!MW9~ipoB_R_+GW zWF}x-OGf6b*pfR0!3*L7nvq8*F!6lUMy4{E4rRtZns(v`@5EXb+BlNx@x_VmYYf0L z8uOk!@Bj?-WTvz)BX8`K6HrZ%K9d0UQQv#<2|}U#-f=@MjhDZ*f*Ww<#=Zr6Y3^OS zky{zvqlWnd7*6hlQ{ig+yRM$T)YQ$^^8QEAL0#cZitizs&~9?WiA(|d?%fK(DZ%=> z&n!CDeF^${nH!_8g#b=qq7hLP?9EJ>5?-N|4mKx~fb~Oy^}AtPs3OzSjBI|_7i5AY zWrm`tz^K|SqELZ>a|4XV63FY>OJj>-JSFTmxni_@K2ONyC3W!dAd%0Jh&!S~>Xz-F z5;Lw;Ih+qfWyp5nE%GmrRGl_PrRg}GeeR)76@QoC(v@Bz#GQ6k=PkQEEi*Zmz{ahd ze4}X_j8Jf^XQ2pfV?=y{A%4G8*B4EG0Pm7|lsPk!xF9VPJG-y&8K511EmK@h&J%8Gw>c4h7Y*7At=l# zXWHijUa-{?pp?*6Vc-;^mO*4xjTn2F&*-M~Qlh*49cC5s8TUM45*$7=+3qB6l=pYhD}Q)Xg4MP6PvUtBGz{+jTiMOZ!*Z%`QN&`V%MJR)Xcs%k9cs$h)wSrMrh$s=~)jsEJ;;<>+3h66ye zcsTttnAO)~gQp!W5W`*QAx(V7pu;>GU7yKh3LMm|ASPv#H5(BpTdQe|v!a_&`VrAE z+v&};wWzo|;R^j1#ZN(HuZlKuzvhlEt1|v*T?@arvQY*&oJx50f!C*WgA6-pEWUjq z-0rQ?WtqP0�ufPYbC)Tj7sWq#XAUS%w#AI5VFnWaVk=9|nZ?Q6f$f31ClE#)nnz zq|r||!YJ>fTHB>HTii;1sbQYNUnbe(O8Vw{_jW;+U7;juNtB4{)&s>ULue3ZWduK3 zgo%11nba}8@i!`>B%SWxbGj0fENaHY*^IfThTa9$xe_AtidLP4DU_K-1W_MzM!6dL z29KEvWAHTYX@g9j^GQOahqPw|Q8HAqcaz)!ml}HIAjI}_|9BrO>EWIT9Sz#c$_bG` z^PNE)DN48-63w*ipSx}OQ&$<+P_<{dGAA*<%2^I;&@$0L4*flI6%|qQm+p%=CLdWX zARkfy?LbQtlXs8hz=0jDAvg)PGmLj%hBw*@7b$G{jYD;sNQ`NPewY|Pks$@M`(rio zIb&L_GwE%A!u5=gOT4p(pXx$g+_4m04^97hM+4pM&ZCwT{IYf(a=T2#t0J&s+u%|b z^-z=?wsRclWO4B3{_^M5RUb>fJ$?A-uq3!P)crP7S}S4`q+CctCNormuy9ccxKh1-1cygYp1hyM)oB^zth=vOE3U;@mYh z@$IAlebLef6@>K~d+BKxmQDV*8A;mkN@q!0OSe@EsQR(`D#_NkOL=P$h!grONx3AA zLRG$8*#`)Y+l4ndX(tFZmAQ|R8i_0thi5C`P<=M!A-Szf1~-38)@FPE?>cAnB2y^)L1*oYu|vj5@}c|cEmKEG5$via=C7u_ z3hj?JL%y_Nm1CVplq>0ayr1IeC9!d@RDR-YOGE*eI42I9{Vb>74q|Rnem?E(WK;{R z9#YghtV^Oc+{B!!F$M4FgW}uoFyXPP>rKBZhP;mLE+(kchBkscdDO1F1KPmfcu7SW zK^;m(K37o&eSH4ju17+2WI+%-hpUr8@t_134(!zD?JEAwzv z7Um^_$-9?krPUO^5d7YOBn|vkFj+p_yivl5S2Yl~q6v!0s0MjlXt+`G2X-b-W$ah1 zaT>gwOu(zuXP6dkxUCCw>4FQ4?CGPoDXkZDYc?ty9S_*bgA>?>G7Wesbgkn+j8pI;8-6Pn!Zzf}`mkOA5c zUKeCkpN5FdlIC2E`W6~3aVecE0o=3Mm?YWjFM=H4s!D--+XSK|`a+imMM;^Aq0b0b z6`RCH8q{osM;fGmw<2OSZM&j8z;uw{XvMn>vkj`0zltkQ@FOFRjgixkwv0B6Zh8{@b9T*|ylro||Ds1oxm9qRc zF}(}PT6i$sIHI0i7pTSC?p_3KrL}E?gi&NjJrIR4)U5I_BNJzu4DI-x96 zHVsq|LsjOgBmQ8)PO`${F(FWcD09Cv#nS{bGg-A zyL1pJ^hSQ~Gmz=}g&pfCa|5NXCqY0TJxhBcCF!0XXT@oGsF=v$lzX_jaDp8U#EI)_ zsZm3$7A)BfRRgtsbc~)h1y$;WL@tnR897%E*x_+|bpN%gcZss$t=}=C9F0qPxdRlS zd;1XXXZVPKfr`POY87&##N_hXeLQ$vX?D{b;2#mcG@2ePfFw!c;(0vQ< zjRHn{@{7KvlsO6J{W%ptFIVun#5^;L$q4wQQVk8>Q_#lzF&z=5)6d3cVj9Sfl9aje zcDspxXP4GrD$dqA&{lY{LW$lEmwjSw|GBIU*u8Gl87F+%t1|ZIV41#uEu5fff;oF@ zR95_cB~uu>e*!T$qm)VL>p+eTuBwhIGpY{QZ^2T{_tE2t#u<5-^X~H}vBw?UoUmr{ z*Q#eu5z1TF;xcEc>SZ^Y%IZeZvhLNc!t+g6Rd>~9;0~lhZUNWIiY)Z$M$rE*N(5<2 zkc=3xq1D^^a!+NkBgdJ=_PLSp7Hg#Q!3EgF!!#V%mZuuXuF#BXaK&FAlS|FIty=f)*heZRRzL^wrU?_;|yN_{lr#wvNG*${V0vS-bXEb1Pqh|Lmfc1rliof#L@v^{SAVr~dT1bHK zCxe?l)qK<)WqIE^7(j@S>s?K(`=%^qX%q&zAl6MfQ{pSc{=+V+jb)*z*CG}{0@1Dy zcF+rJW^cvYjKOSp6R21S4c^@+x7osu0c<`q4FaVOoxM)%QbrzPshNrdGA&BERs^{K z$Q_np{c}B|JZoeppq>LpnM08QcI()tAD-RNaSNQ6#_rm(l(NBs3dfq8-wT%YuY0@U z3H)6jUj6RYokiAds-?~^zu6&KPM*9?Nk_2<{Vpyv(K$l7NNF{J>&NZzh_AA5zx70(>z0Plj+^5qpAk;;^U^Rw1TJ^kG~5c7(kufc-a8 zf5`BShI={7w>$J+aWi2$}WGxE6RQ(L97D(EULCBLZ_yV(P6i z3aCRYMK2ritdUw|O%X7#(9_RVId7^Y|LII*>qov|d3T}p#qs1x6(?SaSu8?h0nA$n z1scAKxlV6^(@#U%-Lg|RFub?uu&_WG(D>(33;q+IGb@8qw~kfG@{R~F(SQHH0;PI* zK)HR_sbxOZS&?wx)Fi)p{Mp<_(mQd*)cBcWLSRv3Ey7VxC`)t}<~ z6zJNE6y)GYC^D$Rq&vq4vLeJ3&TkNG35{&HvzR}H^1t7BlsTlYv~^n3+Df|+AdQ$p z=il?pP^TnX<)F}OLnAu@;fy*E4!ZBOIo*xqIexghIjb(x`Pmi!gc?+LesdQ0c0BXZ z-SBPEjGo+GjCW?Eao3j4%s@!P#*2N)nyehiA`9pP5E)f$VK)d6chKAotc!ukGKu>Z zGegDO4b3I)^hxoxrX05=5$J&o_*K+|Eb`LkQzDF`vsqcJ5Rxj-TZcrv>J;BzEFq#& zza5>P`Hp`}?eR&svu=QH{RCSFou}z!A|6=_Pf*!ZTN zCksfcCD~mp80{^9<|=ca z1M8ajcu03+Bcs^~)^0VP<(>}%#G)2X!<-hR_(5oIhDNQC)Ni%s8xa^l8E2n`YpSA6 zEm-Wx*|f8mgk;&=91ubBmJ}ZOc1J#7~MxpulDv=@?96eGDDdX6qu5!^QXi=eqg zc2jrlPRAg_M+dDQ-eUXaA=Kd1wPN9$y9Hkq1HSi3pH7SF=a)LZ9*q@?J)se!5-U@H z3GNC9?Ljf?@u28WTCY(#H0wcZ8TWQWUIg_u&wIB~KF=HLDVKvCAt(QlzK{cjGZ|js zr^c8Bk@h?A`}96sVO{m|*2Bu0tC|xen9zeD;*Jb&C0fryvtKcE&3QFO?XjTpHT7WZAtAdf2skgMcq<~+ZNfo&_+uABd)ro4pz^i}w4m=uivFiw_ z^XSG;c2IhKvZF^}9q)fXc6cO)6`|0|UaWfUK`(4I(9&sr(GytTgmL8>Y;-m+v9AC6 zdlV-C(haAvdY`8-W%w6K1-s>CfJ zOX;G2*&Iw+Y~mQ+UpTGbi0SbLgj^)}gyCz1|925`5C>ur@k`Qiw*j-#(S!1LxZ%L0 z!zp`n_?&SLhQOXNQSkdaoOuif`__OTfbuI$wc0>b{$r(+ z2@dmtQqEi)DjPR7667-n zFAmuevfqz)~<+8y*W&5Js`@;f>V0_v~Tw98tzdITF%!P49qH)Qo+K+lV98W)Xe;q9DA&vyL zeNgBa&$GO-o=G2ei&f5sG3y~siCe~NF8*!7@8^@s6BSumSPGa&Wrbqe4=SQJe&;Ni zi~sO41-NDf_Pnyc-G`A%wS5oJ4}|>!g1Xb&3E#_k^@$1-CS+zY4WW}|69|AA*iI33 zPjq2#)Q>TisM9lWeh8XD;s>&uz-BqNGhafL2KxH6V| z-Dtw!NDkHsXo0k1ZqMo~hEeI4A_o#NPQb* z)+($FP4+`nzrP(h7uJ69pC>)c)OfA*{Y9!8hP#%P4g4UnT7wQzrd z=E@%m5tLk44|2AIkpT1nAyYuect{;tZt_a##lbHsd!AQO*K8`DZlUt8>+6zDQ3B>& zuA*;_^H@ZhqdxCpGxiR`7hZ@N+0+%75Y^_D&Q7~g z6JC`CK}h3>GWq9`YGz?XAs;}6F_3L1*tKx!Vv$fGs8Cz^cJ|2&|3&{KL#H6&<~P>i zfeyR?1g`vV2Y|prDHB;@=qo^w>TsYJH#}VZmgm$LXI+UA1iAUw070Y{jYxEIc=Nx} z$H7iJUyR*zkStBtDEhH&+qP}nw(UK(y~nmadu-dbZF}bI=e{4_@1ApR-0rB3TveG_ z*%kd)$IA7i5WLl0+7j~#$g{h^_xbb0cU-%WqjNBn;NUK235_jEHj0e!W&u>Vb`A55 zZFtOP4&^V1vB7VEYL_N^;8&jkWKPxsT<Cz^_>Ao@Y@{=Ecluel#g+;PDWpg z3fl7#?h!!QbPWIRzRb4ON(oRfIV`082$8?Ai7b=T7<7~g%(ixX#Gc%|fR*`^JXgq+ zrP~BXZ}qUM1V7E(!N4KA(!NrUtLPlk2pk%HZHXRNgKgA|O3+;ry&(G>4CdnCI>jNg zC>fPHK@LN2b|U_}`R(kWewh7(R~&s3ig3;O%>W~eu=b}fdGhezs+OrS{90lZ3h=va zoSNswOl$Uv20IHn*;3JD@kh`}C%3JqwayE0iFc+KSXi2&;C2`WWekgc z%;t3i!JxdEn?|c#GL1>ce31o9zuP)X*JQqqDTqA+Rv;cBsoaJ(no-;KuzLK7I`Piu(sz_nNbG> z#`VpCibY89;WEYcm+OXtnGgE?%B zi0Agv`kAhORvY`yPs-@r;sU;P-Q5T0OxRyBw6LNp4_1H32vcIj@Rp*LvC}NxNj!^} zT(87zhTg}ux`cI;_j{@n;IFIl=hh+fimgC;M$cDv@I5%KNn;K&@14vxsc~VA`V+39 zy*1d?Mlt1Kq9&eU!F)M_vTKgD^Q{_L!qdlUB2C8PYbc+8NzhS%X=|Fpzq(`=zslzd zZl~8aN0Ab2dWlk?@5rEGR*dK|fEnM({lq%%3sl=EkUGD?Tds^k!4m2fiQs#v?E`g* zY_&m$R?HRUvd>52USSs{_gU!zx%4#~Y&O%Bk$MrK!q z3C6UP@t9{hvLB*>yb3vwBEFtB`(b;3o9!ekwvh^mtDjTB%py@0(;)L)#Do=vUgj6b zd~8r`ginwA(my%>s!0XU4?ymm7sG$bw%{AMfNMTH^^p>}LrQt)=kc z$Ko%3+d6ZDS5#;7j&J6(Y^9|@KgEd7OJ(-8j#`9q@rxJjtY{eHF2788byT53p_ z|AiJrVd!@hwHqooHPZ9$27=|S{sl~3ujorMJdzQ4)QXy&;0Qh_v zPU~q=71E>quu9~%6tBIyAwRzo@;dbrHWCtKzXV)*P@(w_<37FRmhGJds6mq@zA|DT z+IkSGO7w%{X#9H{5V(tbOSTP}>!Wfj2*ThrMdMt?P%_DxRX5XMI~m8q&>!M!_fb+Z z0?+m`kXLHKr&soSR#(WZCn4?w=IwCw4CwHicD@HnhMo?ClL;X)CKG=y;UI)giMYhV ze6na~+VEi~Be`%z2Ct(-joNeUw&*l|J3y*bVs&>OM)-^*smo6vG4FR_fd*2rv*J6D zVi8KsB5B+D;)Pu29nF`uMPGGwXrJNhClBLYUS4qcQu7fIHElHgVb;!ny5;~xcPi)c zjF8?JVa#+NClFSX@^)ib23RTm?G#Wy=<8+R;yI!+(jd_OuHr2#h`_nl)yU2;CZek` z6lG7c$*1%2iuuCLO`3Z2aOvnkj(Z3<-FtrQ&2RGX*!_kDwKn}Xxhy00AcNA;UF^K4 z!qTO02mt`Sw_Ks*VHg-vg;!gY&jhJ->#p}3bELC8UVoIh20+^de5E_W&&{5@qxFbi zjq-0L4H<5=_~@mOA@yoU$#Qd><9&z7&E!1_>{V&LV&f|1Ts*DsG($oc9=Ciu^#i8SOlWDk|m=j zr_UR`qpK?!$%f$x;5l3~x|bg-@w`O)OV2y}Wa?0*2P3N7P#`;tIM5|_@JlqStwBJ@ zzk+JOhHuwyKS-fnKnad%$Z;NF3jAJ9n1S=iw`x|LXbs+U+@pS90Dg~~g1MU!=hY#Q`)tdSuo$e7`Z9((0&wmT z=RHhcMT2;bG;qWt0?jLe!IL^Hcc;lOPloX9Biyg z99b`G%mXpw_;)0vD)Y$a07D0GgT)DAm%t1m-1miw+$UF!fd>n{jaR#dWB75AdY9Al zoCsE1028v(tbVz}W<(dS!q}uLB_&1!YAAIC0Aayg`3Y94w;6FyT*q&^t6sFp2SO4# zw~HVvax*ixKbsL|kOgeUT-6Re-@8rHB^r z1lP(9!fJjd2h1r{(YwiQ+~0fDzj^j?9*y4|TkwkYAsibe=8*=C`CJ6_G-t!RbH?^& znT5%5;_R~<-#|xYw0H;kxWT}je5JgF{W{Ci-7KWB*9)6&{F@>0Rbv{mo5+MELeNeh zF=Y*s@`UgZN%UsH(e+%lJ>@Eez_kn1xlo+j&XZ~!qG!87Q=->%fm3$^hFa}k{IiOm zcPccqqOKbKJbo#Y%WceM(DJW)u7(p6KUJ!nZlm9`jMrBsY0d(;E5J!sn0W$?;WP4y zyRguSLdOqFs~7z$QipU8L$qAR?G_G}I<@Mc4q$u6t#{-DKgpFla*(|s{dGqkikl2m zRS0Q+5kVc_HT-4}4k566T&?N@VvGhF_ob&Gx{ksZHiZfX=^jryO5(qCZk1Q{T&I^w zJh+?sqBk4^!8AyL$F|ZO3KJsZBQ>`o?rfu<;UL}Ab?gN_-(yC}9f23Ppy)%h@F{|_ zwhQUBXg8_#y$DGqmx+7tH}cGVF%NQ2ILoDc&j%2YXYE0qcZTnTCWZW5pJFC!L75U` z@6~qh4I3F}j5p6EgrE)93Xkj`41J9Zq(g$RqKZ8lZdWnZ%~GP#D^quu7dW#=Fx|vC z^Oan(c4qO+()Kf4fd?*B#y^W6^ZeJsI_kOpQ-7Ye|u34{_`_w*B>bYWK}j z6nGg1f(727zEhns34a1uk0EjJgxO)x=%hxRxr3rxmk5YXnRvQ$XcA{piMngdi+ z4~oo8JPgdt8Y&~y!+3a)?ZqsEYbOVe^d?)4Hys08$+VSxtUYky_F_hMuGq?siMW!G za}V+nj44}H;3X&lJzh1?8pu#CcW(R+^~v_jC;7bxP#X)564+^XtW@G-?2tvRpmUkZ zw%itPxf0cwa(kah#8p;awc(^Q3C_od`ZQTZ1#)U! zEX$q|(K3xQ8x3azMn*>hn_7pb!A=#uHV)0*z*|kFy|3wd^n9jMzSm6+)WhVDUfOf< z^K-xE%I9y125G6r!<;ACnDjpX21ilKRC1roA2sENgn- z%Px*^tiNJjwzITIN0o!9*IM_9MLHYm(%CR&D^!@-l(rW14cAYzpv-PuqxqEdKH5@Z z$M?6vTby$G5JCUMmy;~TVF!;e>9Sq&(Kab*W4v+j!c|Q?7mhN^K&}8e@fGovqohhI zQ{`%xWI)-~;HYiW$$WQWGw+$btBnSyUnAxd6XH@!%ufhZ4J?J~##B+{XT%L;d7PN% zCh0*YCg)CEf`wEymv996BUcY1o2ks1I|nR&Qsu?Yh&b+6w;~uHm=#@D7=?jeWBVo2 zE?Y805#&EEvB;r5y;kGiZim%z8hRv3u=d2a-?P+tut(&R$UHU)^=;pI(t(-3$%^)c zGuxwpg;(6n(2%W1XPR?jqe11;T4sNo9h>L~-_ca=cvOWkUaM$3eQV3z2hnc^ya43b zn*FY|tw)pX7WH*j2;Gyvx$N??qQicbqo-+UG(>>-5eZVt<3RBl%(E;rf{s4(d_)lR zV8`RFY??qY)sktofxvQAcuClGF@Sse-Ph zq;rVdanM_t5ey?ZSs%Alf8FzN7L@!)WVlLpG)cD%CW6LsG)dlcw(U>LI+9Mq)YN1a zVRbfVNHZM`ma{B_!Kld9`Nr`5nA?p*>OQC*1}Pw2)%I$5-xmvNhM7plaQR8XaLE$= zcaR!j9TFsWp3zG~M8F*2Rxw`)&9#wGNq^GnNoTRXKe--M11p;LhRg|Yy5J`weBNtR z135ItX7^q=9goXu=*?m)fsNj)M%=PVFBdamJEdT%A}IgIz4ITXKn21kYQC+)L3Ipd zl&o4U|7eb7ENv1AbN;e@?-M)TD6i*xx?!bA;cIV4R(-ES&jmjQYX^hvukCtQG0d~3 zUrCk(XjFuLnzhrdb|rH5EDY5no?^S%C9^i zZ0~S^P#@p`V*yRU?czB!9Me}vpGQ_q1jAD zzNDBRXKauqms9w(T!Yv?5;PoC6GuLKE44*SKz4TUDhse+jY|@uWmsh;L0`3IYdIXO42(_Lj~c#tTQPgDOAG_2zain`i#+W zwCEbeVCC(((`ZnS$Z@zleKB!S+#R(<5+tDP^Wk#$Jbo2K8mzhfo&~K}M6wD)K&KMe zZIfrlY{sY;Y-I^Q3G1sF0bM>NPCtF71RX8X6?=7nqo04Lh@s4+6bJVNbJ%ZIGt3s` z5BR;;V4o&d!8u!mmjPio2C?(wHyZ{;)kP^~f!J=ApM#53BhZM?hCQP^z1LZm*R;2` zgMqu65c-0nhF#QX<}Kf^?$jXKrRvmm*+{Z_K4YLfhR449co%eI_Ngb`+7pP8>6|F9 z^P|vV^88aWA;NL-cq}_qt?7u$2DR&<`(@;XFIh%*p`WZHA1)mV_M`ZX+@|g?5%lZx z6|~geac&4$Kp@&QfXkvez6mE-aJYfIz~D>j=QrMkb5_ClGl(pX%>^eDML3Mc8|MV# zbEZ9>XBOi%gO^wF$JKi_SziVhXAzhf$y=*NYq7fn7+7oF5@g96Ir|p*V>S$JQiR@T zXE8VR}7jnIN@P#UUadvb&vVEUU?=$NhIw@ zXNGbf=V0)434DyEoJiU&10by0YD;gBa>Zb)WOfN&C~|JSD|{d^g^3wR`KddmC1GPA zRSap^Dr`F9BI+@eRbNxqkzDIM)e50F34f7+{s;j7Fhgnn8nMCUx`q^I(0Gb`l=(i_ z$V{SunyIMNSl~e1{JYm1?D5I4@Mal*K+X=0`dEqCx?(xPyoUKhZvZUxhPe+o%e`$^ z6#hOTEUx;V6qaqI2#E2ZErn1A36>^gAU`ddIUe}3uaL3RBc#b8nnG|3aRr;l+1&Gu zG|XrwzJZ8vFCc$y<(E6F_lX)cse_Yn3!(_*rKRXUb4VCYV*9iL0-BOcU^ts+tE>Hg z$*E;`-&Ke|hTiG>F9MoKLIV=1^wUgN{R@e9(-s3^6GblgO&h!`piJ<}sF4zu7hJDX z0hmpSYQkB6vb%&bnz+E4X|^3a%J>oUyqVzLXiGKbE5*L2qoSLx#|zyrkzNT9;_Kmq zRBhQs3WNbEWaT4z!~BXTDc%}Li5Th@udhcz&i{1p*AES8%({jNLWNiaE)Jt3R2}32 zlNTl4N>zR)RdHnQDYVA z)ht;6W@#YUi5Jr)H-z)&eX|@j5Avq*wr|SzvX4Y)o-#hg7>yrd4BvJ^7z9c2(l#z7 z&4OaUpY3@My=H6TT>|>mYlVQ|wci^p?x337!Tin%s7ccMMt7q6?Vp#f!Tmr(GlRI59dlb2q4s)ocV;abl+YytpR)r){nc zYw$#8p+iuF3Ba${754|(PC!>gEul}9mb6JfbZ1b3b=LlrTi=v4=H6?n$$W=U#f=Vr z`6bIH1Dk0;QR-kh2_In$OoS_w>R+j3#`M77&}r?Sblj~>sl_17UCcPkxw0vp1WV$e z3Sx(F80S43YGTKSZ{PIq5_Kc9Y~mTjLv{QE+V1J!x=l)4Zay`S0p?|QT$X0OYxujs zl=~J&jOvVkK4f-4jRhJqH^ChAZOwrea!8O9GKAK3uz5mYbod2db>ANq_Dh<2wrhJM zSrbu9DNQy3S|PR1;qLnbSFN^zFHhCVI5u}VU;CD#>-r|?+5*N|qXh)s*0K$cndCQP@aQ#mLgS4pv0 z0`D;QGsVY_p}$)Lf_M90mjXu8b6Ib5wJGe%256gDIlG66V=Gv{@@bixRvWuecxpr2 zjUXCH<}6Ay@f>E`N+K%QBS}c`vlUK`q7V)6c-IH8UY|F+X4NFETGmn<3tF1k_fnqa zKPMe`3S5A?jn-~pnH*eiC86K1VTaw4s>%R(7HJ$#*?ZeHGfvr_P-OEJnlQuI2|>PJ z^3d-G?Xjm-GPGX)gsE1-!sblHN_x3|dz`U1THCYG7p|~6R&-Fg-7S*?Hp;2ts0CU+ z#Z-EquaSu%V-A5b4S^|+f%y9cjW`RiyJTUyd=}Wzbp)ZyM`3kw11_X9sYvN^Ap^=; z$-=1rMhqg^!JvvyPWA8@^@()+ zV!csas7dmN{0Hh&Yncq^(=>&-!z_6x&UF?W)_SVZsajqKm;!)grvo9)P_~zsr#~>@ zRp0I~%;fFE#r8SzYf?Zyu$V*93RX-z;iw%$p=9)m1cJNSX^ZR1I6=F+doO);i`(fS zE9>Uc8JNNGv3`<}{Rq7UgSvSS7>WtMQpi zU>eI`|J{GkwO2o)vI znY|&hFte+A-nUD{(B3#6GddMRr|=8;Y&p3Ke1~`!OmJ$6Jg*A)%p}c0NtZl2zG6~PRO-Rp`=mto+!1h zk(lC3^tW&1_ZNzvWIeWhDGEmzV>a4 z>?@8%w5FL(olgSwWpfRNKgdqGJ-Y0@KQRXZNR=$9ojNNA`7JS|5OEtk#1>wW5+Yx; zoN{wzLw9@*W#a}E(=c`=3H(HG30|J)Q|?)VHr-KO(Zndm;qMASqzo}I_7I07wVkiI|wj&|JERtj9W5W?Io zi50^*hEMlXx_euSCCo|tf4^0&;&E{rfT%VQ`mHX6RYhNHLXxP1l0Uz&`aua6|*l3E$J`8LR`wjXW{FHNQ-0KkFYJ1eoXinGS1W zkZ@WwcC?^aGTcs5j;s7v>@jyfV|h4&|%~lwh`!WwuU9u{`7p zdS_n>gD&Us00b#whM~D<%{UFJ4Q#geM?RZvCCd(Lhyr~P#T_rN*{J0>IT*rV<}aNT z!5XQnN3b-Ju%m#%OqePFE%2RMipzz)^(EO%4s;AlU&BU2LOok8IE4jZmb`dNwuT;4 zgVu!FIm(k-fihS-to@$l!NG|>#2AIVV33chvVIGHT&-pgf_yzBS+CNqZ}(?ufxbfc zTa>dcU((fYo-B@ohz1sabec=qy>RGdB1D`*#hVt|C|_&?)@)p#(yHL2!`{p0;)2{$ zBE3iaWlLm0iutYY)TOt@=kA!@0c(#iwR)c$n{ktOP=i~xT{43C4*RO8cE=80uAGWb zmfo=Qoqol9*O;8K#~jd`lu2ACK}G3fbTIc{p%5D=!wVe12)FBlC&te&uJpMqEm*#9ft(}(d(ibm^71Q~ zTR~7SAntf^(6%D}c+Q%xcn+sJ#;kehTPE96Z9;JhR8Gk6!7m(l;Ahytd!*;c1pus~ z_v$x_SCo3pXDcPqBa8DC$jZoZ9D?KgdBD>nPF`c55yhU#1N{_)UzC;SZWg&XjrBajdBL z@hs8g%~_|ru}W%OzU;bIxvYX$``q7J8#YAfg8gHVc#dfv#6Sl-ooL_ma>yRft0G5e z*f5#B%)hD1V<`Ax5+e(MhBxhJ`^Ix!pQvshlCy|u?x&5?==1+*GKRXHWPWhX6D3gb zZGAJmVY2NynonG1`E9IidIa6un3%9>K;p5h&E>O727h_vOFd2aCT6$xM4CnLG%)8< za&TVcX@_ZdQ&ck@w6jC-QdJF&uey(I6C`r+zf1g%w#QognIG8R(Cf!>2ud69z4|EC zsg@nMLAQ0D`l$y^eS+$GXwLm$#14bYwkaL%&Mq_TI;M_beO|z%WUDN$0}jh3;$Hqi zGHaNk|Jn%24qGTuM}WRY!!>Ew-A`pPh^BsG$`g(JgSMQ*m@`GM5MDKEcA}$yY>Hyp zDtnn=_$;(JZA*37YZ3%WQ>ZPobH7R?T=)1BHMYnhkTmH=B`0?UYg`cOl>tcu<5Ac@ zLO7zV_2t4A^<#KEM(r(f!*B!4Q~WtQws`McnK+sitHWZ6zDijOU)qY|b#*gGV$|H+ zv&$rzEAI$+>B|&Omxt2(F(3pDuYWvjpRI2QuFDKY#GPCdr90M*vN?U#++n5yRa9wi zjl<3Hg3cmvS33t-Ry9MDNSlY(Xlo`r;LLK3Re$C~aa91QxKAd<4e(ocLU5?=wnj7& z)Leg3WTmGQZuM>u#m&wdWc;N%D zO|wUuN=*!yphHmq16z%R9xb!WOe2|Y6AG@U&yH-FR6l}@7;S?qiq?we4*o40tQcV@j;;S1YW5f1AsJRR_}^IvydN1 zpR6>*$eu|;UA5zfsPeM%)y4tm6Z>S0%SRt5G(=#}hO7koBhw8>fF$=k1(>FFWRBgt zIK1JWr3o$tpeza;j6Jbxo?HiiVIV6tD+BsdY)ldSA-kQY5}*yY?pY{u(%KR{^TBrjPjN>PjEPH`zbQFnGWe+#AwK5%SjC&Y zo~*kJ?>p~o38zyw$$|fK^vE4x>GapEw_o0kVrRZRtG~T4N8=@~Vb9qi4?i-6oH?08 zLVqC;Q4ZO#knS`ar_HzCYJ=?Xd?9f9^kPd8YZuX+TT(%q7i%f0Lb^3|?S9HV5i= z84-uyF)n!j2}A(s>vC8g_~7!5CrgbfVQ?{;C|Rk1@+uB9oP_{7inpStB(S1Gyrb{i zu@*lC6%d}zJI^gre?hVDqQ$()8KIySk#ayD-?s6&jHvL>E0-~5-9e6{65#lN>})~3 zd%O`YGuql1lX4_Ih(8Fsa{rlLH(bYwpExpB)|&3G;8 zSFJN$Yt`v`+;wSvgE$sX zxk%`hs;X1-Iarbxphs_y8=5(WsKlJ(;cDwq7Sibq7GZC;`P!z$V{KE6^7$Tpw}X7L#*oTj;U z`d3}T0^Rv+Uzc2}U4zR2>Y1Y-J;AJ4L@PI$!%R5EU(RmX;aax|~<(V)sdk4baEKoQ5{YQ0 z{bD~9^rUB#WDo79vDtXr?YHR5NV{~8e5~>(iWsD2je_yF6%=0#rAoSQyfA&sPN0Sc zzRc_gq4`p^C2>#6lZUz$XTMz_b(V@K0R+0hw5`!p#f67Tir!T^bAIM(Q;>Tqw#mBp zt)2}7VYNmg5kQYPqf1gEB(@M%aeA#3o{Ego>5$Ufa zyW>k_W%JRJ3|ohgTDQSlKJ=So&&*6+=4b$8L)bqRMkd7N9}zCWZR~Yarb(YkEz8di zUT^{uW{XGY;H6Z*n+hdYQ*pyI=@(Qe<(Dfh zKd}7kV!4JM^h#cvzKGD>E(`B^sd+)W@cG;7K~q1pvFIB?(HZcIzL%pos`J-Av1pcAF zaPDSareT(>qoXQ$Qbg_TclerB+Uctznrnkdy<~K?wy|u{OT(JN+ZANlHIUP3AYh-kV;q{2p=ZrHJB4{LylHWQs-FNLi-i-c)(iO6k$v3 zy`^JFGweH9JmX<&@fo^K`l1B6>eZ%ec&+N6T?^|rbH12CvOlRt8BbfA%Hl7m-ieRF zG=8Yuu0)Ex2bK3R+G+P3?~B<|SIN@(T)C&?JX*cZl8Qn#arnC7wG$NTdP+ZvN_THG z_03Cygb1Q3;`iThDoQ3Z?>3@=vS8a<DX`U%$R-%QWnb#$ZOI@@_Hd{uH6Y0jQ5(W6 z?jbyL8#`)YS0UJ?QJz`HP`ddJK-EmnMfDOuuGu6k$OZTIK1ggQHQJL!PH!P~%89E3 z*)B$P-pkO7xKoC6fm?#6FfpQU8f1_gA^l!~R);{bbACtZ$haUh?8~mlqp_?ww zRBQBch>f2^r4UEleado0L71Zzgo>IN3!g^BZTvE}F8Vd=ji^US1)_!Glz=RiN8+=V z3yx*N@H-{(L#AmgImflN-zcY^{(fJwc2K1-Yhy=d$l4ZWG9+=IO;>>#_PQgRX?3Lj z-c7g6AdejO9&ZQMsVI@IB=(whrwm~s@kEkQs$GZ4_Yn3LklV2OV5=jwP}A6y1B~%g zk&RYQpy^U7ttj4XwXKU{U*Dl|MV~;*D+Iap!h+n42YJ#sn8&@j)$`ruUoJO>g5Sk8 zHXQ{b*!p*p9{BQ!4=Yv-U`$&TSFN?_0bl8;9vcSdRK=R zXUB%NmuJVY&iw#F@GXu0cd46&^&d(4fBMk>0M-8=Qun{?XQh9f%KwzQS=jzv>Sp>I z{TJ2E^mqEdeTDvu>eiA_lopevRu)rHVc=x=-?45M)_)E8Z`=A`XZ~}I|ABS0G5)2r z{|)Q@C;Tt0n~90(Ut0FRur4H@c+dS|2snbKMCUhR)+sw{r;CQss#1l zPllc0pJ(-t^R3Ow#7gkb!SG-2e~^>-=qI$pMO99-|c^m{O9xkcKmCW z|I^j~`;~vq`k#0CC;BhVoP~+wU*DI2hvz>X)qjlDe|~=dVXQK8GP3-2+y52*Ph*vl zlbw}~;Gft34`a2>*rjBu85C>7ZF}`Uw=lWe6dG@^aZ8T8Yo&nVA8oOEdeoC0An#hzKf5OX&d#P!iUH#WOUrJF_)_QnX`kXr%*~ zRLe|W>Q0sc9K%fmZ2V9FAcK1;SNaVd3jN#wTy9Ne>Ha`YZm#vg5s;Tqk<<{>LLnd< zDxd;ltYre3kp5WO-JJJ-!LLsaE}iSI%>n8BP_JQqsWW}oKI+#tp7@b?Vvv#fmnTP1 z_pVO%kK={z>32%5WpV?o{ur~lI)CD?@B_AeBIEntrWv0wfW^ zxy9Pmm`ww4f-5tdd-*3-&he*z!B37(k1t>RpuheQeFLL6w7iCKagnKciY@=FR_hE_ z^GwO0R_pu_Zf=e~;}?9}t}uMeT#lxvYqhO?l_EF#X}p>1$>Ltxc75+S{zxA06f#Lf zN=ZmbEPS@Wd|#n8vO6*~HM9VfwSEtjB{ZJ-!Tz{WV`+Ysh5|(YY;5(omi#OoMeAf& z^8j*1KmJf54g2~05TAX~OKGh3Eri8Jp$d%jPeK?NeS!B5_3yp-6|g!wyRkL8f3aWu z6y5W`_f(EePA*J>m>Dni1(Ppw71DN&>sOg{V`X7!tQPPpcKGdEDqfK$de`n ztYtjEjG6!N=Feg)Hd8bk!&^J{LBb;L|8A(DsgR4s|_D)|q_r<$lro}}wZ}Dm<*)pVM{!&8CU@fj8B zfHm`}_aw0K{j{{X@C^R?Z*GX*QUK_7NAbjPK5(tdX0~r48MaO|1aq5BD_@M73==7K zXh!MQbki|`PJ=AZK5Gm6&B*@3F%cXkOxyQGx}x(t2L6pX8rZscGumKgqWz}g*-P?J z?l9LoBK1cgX5Q5A(M1l_7((`z)`uYFu1*rKCZ}SV0|fH!^*nIfnw3iJFz99at3pNi zY0+Js->E8!%nt^BHg*Vp=k4~f!LNW)U~{OEDo|;VoG`D9iq)9qorg{Cn*l1>A$`v47inf8qXny9=w>8$0_?Bn- z;P0pMFR@gqWghc@lu4zs{azyIO*4+PA0N(v1RWqxc~1xM9$z8J3jMjh1ro8oX~kR1 zkrD{f64Wk0ioD~F?WSA=(sCc4-UC5equ$M9IQfSjD5x70(Tm7_D9oL-puB7dW73T7 zq|$Tv{g1c!Bunz@6WKlY+ptjFFYdxKer%Q@U_y+j@Nd@Buw*@~b2biGga#%xX&f!} z(Ryj*dYsA+h^a#_^=pSX*?NH+Ukr;O1IuZwg1X6LM{)=KiDu4&;>>__K1MIqADqt- zVfKvgsF5OiZ~lDm>H~?rJ2XWJRAZG&zM7#g@!63Q=+Mik_F!CAplsYbJL}-_l4B--a=IIUo1c$M&7ReTh|C;~e#bZ)oh$g9v3B)!IA0t#*1sgd;Df5oZJYhwKKD`?kpd{IYvkWF;#`>#p_q(ODAcb`c_F|?g+CMJCD12&aI{G`i zsX{45ONqXCO{^Qr9XjWJ<)w=#MFW5g@MTyybu!iy%@=x<8i!+KcTy^k0A;E@qK4s+ z0Ji}^QkP9CHdmxqA*Kh7QWN3Tga09C6o|TLWXnOI8y9$93=|y}E)k5!fbvK!a;;q& z9j-*rsg7b6dBz<{Z`1>?UOS_&$!7GP={r*ss);YXo zOl~7i2Abin7-f(j^(ua`UaP_B%F3ke^IEig$w-U8!HY<{3U%_b-jtj4Si!OZ&Y;fJ zr@d0tWZH@?mi+0JG3yd<7(&F^^`gT+SEH{urvdiB!b|xUUk$q7Y9J zWBYYZNXk^jxV^_JCVEui3@m#t2=b%i%;KdObq7PMeeD$>nZm1Oc7IiL0azF2*(-`j ztT(k;LcR#c3tcGJ4~;Lkvqgguw%S`0f1Huu?1!MH8`V*eh7+&@4(r>gl(m6=yl%tO zI@{Uc1ZKZ0`(r6df0P_k+dPq<^L~I2*BpS7DlrsFFqrw5w*YXY%)1+(-^A{z57KaP zHj$ZS%P7>gm1Df1ZS7X%6$yLN#LRc&k^B>2hOE*nnN|1^7Y->w#~+ zms7VS6h6Pf53y0-Apnb1^pmzROA!dgh`k+$t#3E_O|6ZpH>sQak$~}79(@1`E#?QN z2PdlJ-sV9#au$`CvhTk=7Q(b-(tc8CU*(Ol>C3|dg;)(A@f>pAiBLO@%1Ml^LcC>y@v51rH_@V z*Tir=x3`C)iq$_{738kImr_=AF%@%*0jb#ZP$%r%?YctThxky1&LfsXaWh=y7{Oho zqo*U`#gIr^ef z$~iEAnl{^0Dh1K1ZDbsOE?pdW5e&E>@`?rGR3u7cP^+x~mDCA;3lygfhM12}#70XZ zF4@rS5H3u{xF;^3D^S5ln()y!quL4(3tOsNlCbqfsWhRABG{v8rbF+=FUJ%|UF4b*%sAjf*`C?! zQofpC;hP2&L4tKV{hsHDSvHuOO*KL@ynoZFxe-_|Q>F^IgAn@kxINFLBw0+o$+Q+U zX{i7O8PUzICz~6Sn($Ojb*!L$3(y$YT*%Jnucv4{>@LYavhFGSFazd(py6ja3tns% zFeSPpR{hix^l*%59-7Pcp`VTH1(uC-+=5pVL0K%Ogvvm{uhImc+juX}A;e?R1=R_7L+O|fEC89V8wlJfd zpzJTv0mx>c@e7Bt#!wQIkVF1*bbWty#-qaWDzoAh2*_7|K><9IG~Vz8)ASg!;WHnr zTo?3f+Rxh>`Is<_&7ZIs*n<2)VS?bfM@@e)^P-p*p-3xX>0q0w+Xiq3^Szf|sJ87+ zVA!nSixRC$wl>p;?Pl{%@ZGRSkf#|%Eei^~Dk#Jsv%kka;lg#QlY}(TTO%h1LpC4? zDM;1rF5RCz63!!Osu4%Jw`^_6ErDJGJ&|C{Az5#WI_XNWE5ViE8v;J?$LQvW0|S5W zYO{z!Mm`x%5>Z4os#9g&x~Cwin!)^$-c)Nf0WZU}2Orpkw`GnZF`?-!uh7r9($u<# z{}yKew=fHZuDT!JXvE&@LdTz~^Na%X4Y~dBpfw+838kovaJv)UW)ehrq{@h2#pLH2 zX^sCLjgN-drp|!Pz?THqX3})x+a0ATqf~<7>!yn6gZ?wn7AIawIT3 z?s*wX8b82x9lflAwz4kugDujXe+CL9G=_#l&?JEs5FbhkA zMUX3&oblGY(pCjfAU7%XPp~MR11I`#16)XpSKd!=nNvyd;A#|7AM(26w@AZ-B+=hx zIq03@Qe|GZAz|T71NH^Zof-j2z8J99@<*#qtQ2{s;oX{@t$_S+>$87ri~HS8d>ZSD zY#eZW-S^94d!>hXwZ6}&Q2(KVy3S7=g) z-bbaI)@&$6CV5-$p5vqTBg#O+)gNv*TKZ-7eBWSJV)((!7cOps^PpFfTgq#>)><}m z*{66U{Uz>{KhFtKo#~%Etu5{rnp#pR#0MSmYP5V@Yy_n2G2n!!? zPl79eUdmB2XL)m9k)}z5vQh>9+K~N5J@|bgV_)+O(>u-I9*fB@)sr@|Y!K2(q0bKg z!cL3B7}CD+YzwHpl}u8^u1@CkrB|I*&$9g=uCf zA1OsK_|hWIZVpvb46_-PAMS%1mBcf%49{75I*Ot7voIfOmb*q&f{+%qsy-A>t>DRy zaO*J!K0v9Tx0z(U<}E#$G+tq1-Pr(2|7MLdP9fqoyiR&*AJ;FUi~CF=C2P;~&)re} z%PduQ)MeRk?5!w&`4w=?Yov19aj%pNThIXY+;zYS9egxV8Q7e0S`Q3Q=HJc8ya+TZ zQ|rPzP#FnJOMlkW&#j^VTriujOz@yU#PPj8vr@g~D~I@<=B$+dFVgNYSe9pD7yPnq?`7MzZSTdsY}>YN+qP}nwyoL! zbK<@8o_lZ1+=+>bs_w4JtnA3H4;5XRzsGzksH=csFhxC$apEDbER>F0XM?TD6K?!) zOZD7T5Y2RoWcvNU|I@nY>liwPYSaE3^n-{F{*r$pde9@1_S~ONj2Ofs^1@7J(&Y3w z)Az+UzvZ_NmDGq0%o;SBwr;h4Bw`~H58k$hG_#!st$GHlG`$-Yhp&>8TsKy5B#e7x z&7#;{M2F>C&mMrtS^!FhL5jrT0I#5E@Z9M9>vuD|IQKy^OYI0)pGab60uIr^`9%oc ziyN!WmT=ZXBg@<{u38V$oS_&*L?gCF$`Ejs&aWN+cDBv>dV~8G@G&WGeVV?y76Hnj zw(_ZEjo&0Bl(nmd?nXR={FSSQYhCg>!F&&otb)(cG(_V?Iu8DLwtjGwq{Iifzpn3o zFI>0p=A&95EXDqj(l3)Ht2$LyrJd z;+s#_F->aoT8s4xB9e`S%SwBpSIHG$z}q2zXxiVKz(J%pmNo7WU8#Doptoc9Su)jq z?#papa4-Fl(;6`u{#l?~MMYt#WXf0dWX2aCo&S;$nI;n&^Wi1!p)A%R(tt!qOO8JB zPTTv*?hdX%6$ltVs`2C9*J9CMd-21z$-1mG!4S>V6Pu; zt(BLG1lUoM1S2)fyt*kAja9Vexq)O^7;hzlC$Won=|qa$cXho^!#MOeQSOz1P0J93G}V>8{Agqx8uMm;$<-vJj>dTVB5>+A;h5uX_R@Xa5L)Fx~- zCQC$_ZB1{5B5q)P);4Q6?Ho7ZKYjOZ(ps_)qL68pm!>aC9P&Qlh?1|Jc6q&c6n5Lg zt3OPu5QQ2dn1`q)FEkTi`Jrh2LT^53?4ZBU!k?3tu%~>e2_Ftc#)5DdDTpwx1A)>U z$)dh4-zLMwuDJaClGYZ+4l1mPUam7$S{}KoRtDkDo=4E~@USm6-7mDkBbhYTG@c+1 zts#G9u)4vJ-yOK&&;q%8E1nJ;Y*Bg2q^ieWY`|E%}X!tu`*Kt;arNR3xaU`@S^V|$}A7c@RT5?aI z4;&ntBTE01HbF9kJ^`j$;*=OCyjECx(e~1(i4N?F%vNBV7!^J)X+3Gn6~&BePR?AT zTq3ksVXPtcnw`}Gz7?knX96c1_5QxLKO(bTFyl`&Mb3wbp|wR%q65X%D=(BuBfn8(*zN&SJx%Mv{4{hLfN*hIeDArAOI)y16w$=F!5V8Cv(27 z#*eY08wWgbn3xmt5{v!mC%W%cFoRy!e=H}Q0H?WPQ){;UM7P-&ki;ICR^GW`N=UIh zZ2#uKP8Kc?s0lkvpfr@#WsH5!&NzKB{)uh3&g0ex_t9hJY&rosYcu?OnWc_23%0GM z9Qd0vkjH;2FlsT+cWDE4;6lmRSzWuMRccrA_ zbTp~t?3{P0@spFszP$1c%>~n$Nc=jhKc?|!u&(U3IWQU;4>USAF64MX1^oy`u}M8W z)tXD$h7@?dRM1ePqafCDc;`%_O_rOrr*yX^4)AP9QqOW4`t)!L_;#w!3@~QrD?u*k`XY!*CBUI#_BY4U z2d&7nz1hu9z7L0e>dy=DW(muiA&iHqkdMYvL>8({)Aa+y-XHis2!gC}TgqI=&2$=Q z5k{R<$>p5Y61dPw##dK|LrC27f(U9_M7fCr!8T?iL7v(9Q}S&(8+Us!vC1QFraY6MqJ-)k3T0vUBPn~5 zlYN)vbdi}DuE~Y4^JMQ`pJvz`#3}? zDNl0TiOgJSGX}s8nwpxZV_B}3>>`;NUp)vJTpF&<1GAh1A?<*`Dyj)M=4Q*O#TN<> z56lZ4R{DD~)m<&J^t^vd-CX8{qw-9kW(|!_K!yZF4?tFYSKl2HDG+;dGFuEs%iTw| z<{;qLE85y4qGSX94STDbrLa440<`P~6MbUSHPG51O!?}L?2+p>?Bw4qW7Yc21_*Oo z^!;&`L~f8ZB40A(`2BO;(oA8>_A>e{Rn`q*vH}7F@pfnlag!+jr2Em*-kF{h_C2xb zcCsPJdSVJqb!Vvu?aYIAPZ?*{LC31Pv%Pd>ys$|1eOU2GoqWwAOx>e$mp99GDd=|k ztB6!rVm{M#Q2)k;KzWmq>L^K9Ay7y7inTPZPib|iryhWo4*P_w*T`wTlYwUD)duwz z7MeYZv{RyV9hpN=%V7}ijY@x=s{BMOs8S=iSfkZ1D+GD5EesP}YdX`jIHIjCVRo49dm(Lo+_`vNBN}v>VB{Uj3+g(TOBJgC8h>1)T%t=7mDh5s`QM*Oh)E z40cEJTULk$qwt9cb7*|6rX5wth71ULj0oGFP2E_5Lhf32N!;DLG)~Kp3qVE9q!Ka6vUQ0qA8=jT9&j=ZB5%x4c8YNBn4?8$_i|6nl8Rj4 zkRJ_YWZPF6HQ`d3n5~wecU01~>xDl!79SnWpHh7z6QlJ#JnKYoj7m` z)A(NK zf|*PB8ctY4%U!<(Gy6k>L*U}v!i+f?lv|V4jPUQzBAkXdVb8#9`f@KOa+0Tvq+GiZsgSV@z(sEMmeQ#jwi#aEP8T65aZb9bpo%M z97js!sCmK$YXYlALZ4w$XrUqAVcEx%U&WMHSd0$d2|CIss+l{VsO;13k8le6*9foG znfgpJXdUz9c&FCtdEzY=xr3%j*^Z!LZg-O6=tb-Fh zU>axX8{8f=zI5G9UlG#P=FtMj@TQ*fOGjf}ZDnM;S{Rpl%#h=QoGFMmSh^^B%NGF} zK=Gud)y2-l>i1Ffe?Erak8|L&Tj#b6amvCAi$NW zC$Z|>UogP}5xMB@Y0@ zZPZbXPz7x04qESK;ggHAlS6Ilr7FNYRoWAmF42pB8In4BQKfg|ct^+vk@Fnf0IcA7 z;Z0&)x_DA=ol?_--tjzD77vrDV6GaU%p#(>$#Un%1ORF;_vMD|HK*FoPY5TVeSb2b zV%tSlZ`Xc2QIqWlv&u<2Z0X#W4kB^fQ&GB)UxBg^VOD;JO#GIftBdXeAIYq3Yut1E zbcO-+jJnEej)Q$FjD}y;`mAxgq!~28x>B4+g=yIxsDM<&4`NiuI$JvhWfE4qD^mna zgUsA@{Yvtlx4k&w=Y9BX@NWkL-?F(Gj>5nu$0(Ez-z+Dc1MLZ*f#g&SrKmkX#cqMr zgl^tA8Q)=k(`2!sSN}#oITmA5Oyb{3{B_?a*+*)neqnGGR!e{e0!PKeth1n_eF{%M zNmRh5`KGr2bYg&6z50MsfE;Y&--d z=_&YNHHqm6uz^+jlAEiU%LmP=@q;1a;ZI7;)cf7HMIsnIo|6Pfl(>CgA6`QwMMZ&*l=Td|6U^ z>rGM0G7hCI%w}sHSSL6ylA*bUA!MSQRZ9}zTUa8FCUwx8)^4oAx%+R&XTk><*03M& zq}MyoOL1A?84Qiv0+^hg>ljik<}QZ^bsfZfb?5LgA?Y)xHLrzZio>Jl;ba4KeU&WV z7tr2udsu{>_3;BfbTT0iKDqRZepLvuwjG9Uj~0bu#kbTh`p^9eUzG_In@g^XzSz$j z9J*lFLqr6&@hFXsnHD1a?QhEeTYR{n9|UHY%dx<{kj!!^0m$Djn z${(Z@_3^?#-`;~Cn)u96Wk&T0&5isP?7<0BKJa$7MXD>Q_gG3ULl0uD4s(e7RTWeY#h%0Vv>wtl6Hh3{@4rWGJ%Oi2@$0+o19Osk`hx6llw$Bb;lfI~ z;>f(`1GuA@h`lVRjivzYmp6P>4iwnfl+kB%#k0CFn0tdj=su8$YfrxHiofSul~!*E zN~CCe;S3n<-ki;(F(CQzT0 zr$EK4j{m&i%c=VD3*<`St-%LLK`dVW{R1BdM{Ll zh3AP~`I`iC^EQ{KLbE`d@+lzgJZO0wP||Ml17|M z4arwo$TX%B;jR#5EZ8vsW;wda0$6gB%*N^x+#~kgqxf`+lXV+-I+BbIA6$?}&R2G2 z5E(#&YF=X6I|zFokS(xlf0h3QXP!&46&J`DHG>pVZGm&)W@l_0e7UVNTdfAYmuh6S zb!Na3k)gM;mfMjE1Xn#XN|?BkR68Zr^U12jq?@TnOb_=t%@wgb0+qOTRs1_lgoJ`P zbN#$g47z{8r3s-B%&MT~R8*vQy$VF^h`9bRUoZH+6yK-sbI-+BHb&I$U=7uaku!qv zP6~W_Z5=1&F!MOPST_kz)nRmIWOj=}v#Cc3joaS@3uZcMq2U%F8s+r#{GfZb2OFB; z2wiDbvqn#n33d>BXsf3yHbhBF%y?1^BHd*>7w=X;3xJEE8IC_cuj%nWatw6nFS|ike#fd-%yjv3b0YbuI6nW%#_iMVVW|(z+D3 zJ9EfKT!rt~w3}D+NsVNYl$$sRrKA7%5%9!VLojks%#C3*4}n5Bejj$!_~eB9{x$ua zCD%yRu=OG0qE~&4=M9S}*-c4N4Bl zp(j_N16#6P@9$uXl%s)PxB$ZE&%ccwZxFnZ4Pmvo{U)A+x``s>H~7SEJA^}6d9E2( z%i`vFu>Exc^!}ivKW>;QS)4t`-ZFp})8eeMC(>${K`p^d>c4p(Mz^RDN?J73=N)6O zvA(0_n(xdV*?{MNx)((C4r9w|qF)k~F4La2N^t>bn)|>I-vBI3NoR6tqJ)Pj6`8vS ztiJD1JzVIAml}BXzw%rOSw-QJi4);7)Zuw@q4pimh0fy&eb1<4W|Ncij8KG*?EXm= z-<}ld^c=^t1}cAH1>Lo#=@l7iC-HG}>=qj{Hh%Qb?QL56*|vPknp};!bgT2eHoUl> zd2~u0PZpbKtCEmlL&@+_Q=7hTf5w0SbJ_63)T?}|^UQoCCQBEXA)X+p5UPxOZ4<){qD9)P7oeZ6=t|nzsWdnOQi?O>fIDM?=sO;jycF8A zKDlOX$@x~HA3!!+_9y!TEP>N;(C(ZFfG97sIqnqcr*P$rfh&XCt^^caAvpsl4C8>~@c&uOSnxqUB z!i>F`L#mYXHdvulkxfHmcA*Hedx~Sdo&!b+Vm#223?XuPgmCCWJ@L}{2dn~;Jz!mN z(3WS~WwRKiEkSs>#U(sKfsbSL0_&MT#_6ItaMX;gi(%)|1A0S;7n_r@IBaNWb zI(pnkVN9|R591W)zf%Bl?niXxOOVC|dY4Em;JVN@spY+YD3ej= z!eEYLL9d z^#`GmSX542RR`I8YdQzkH&@Zk$(Pt6u9LGZ*5nM4we-;Q{8wa(@0XIr?ROB2O6m5q&!1(ew%P zP;AS>2d$VaS4$GO_VFwUJx;DKRDXo*w!iJ?-;hx}56|awzC$Y5EgY@TTQR^wv^UllDa{BxhON1{)EqSVD2-%VZp%X=OMAz>-&^DRtRvr%#8A9xiLB4x>-6kXND zkis~DIEi)1+1Nh3%VRv_-LUK#cYDL|rn*8D1%q+*-!|=>9ehg*ps_Y!GjZaUACj4U z9(}OLZ%f-*6OY2!QXs4wVYc9}ww|Ub$YA3=JE{w0-MTpJ)A$gtgj`Q1^ zAN_KYDQ~K8aHx)?=B8$-D9i)71f*jc_M8ZT=4rWhwtBHhnJaHA92~oz_9IxfE|mNn z@2f%bTJzm7kQ`ElDBX$!)kj%eBybkF#-du9u^rE+se!^GS5q5}_&xK*#pD!Oto~Y! zX0`1LhMlNFmMJo4xV*mDI74RZ+&>9I)E-@d$L+dRVz`o)`z5amg$dPIqiElZBsBR# zX@CQtT3Zpy)O+jWV9M(k%#Z=-hHwAoHMy#4wF%TDDWL0?+H@!%!zZmG5ih}Eq}6!g z1uVpEmq543o}vEXxMA?lt?UI|`lJkOF}$d)K5?Tcs)?RxyY+#u4b`YbF4e&k_(EnG zpt`}i?gcixO!l!dzFop4Au$hQjk-_Y{e6^&r=DD7A%T`4Jb`foJVz|Vdm}oPdNUN5 zh!&EwIP7AMP>`N7-{0q-#ivGPC8|=H%HdpFlBS?w;HZUO!r7|zidM+`ujh#n*Cgqy zMG@Y=>Y&8#oL`FKo!9?yC^Rvqgdp$DuMv4Bjyv-*W7GKtNrgWETK4ylr4kXKG!qiM2GdK zk`8?XSlJ;*Q3EU3TXi4^W;>+1YOv*OVA?SXSP7pFz`I6~oo}6mDsz65hstHtQpm4z zGX!pZNPcM5Roc+gtP7|~nrNX0S)H8>5@9BZ^P1;$+T~Fs!BDOX z*sKtrj`JC#_>k&MZ(dqf(k*^M%~qoz}EHP9dn6%xz{f zA*!Ovz>eRi3*eu0dc(^6GQ#t)O8uJ^$ghl2lmwa{gaXU3sPiB|A-_LmH`4`|5^@K0 z0`CH^wq%5a=c_88!S1}H_r$|-TOue4x?0L+>~(j(8{`cMWc<(esS& zJ?zh%q3kt7G{Kp`RDC^-`dBz3(`+jid(tZAGk3e{apr^F*5?dMTH*o95WiG(?>TZf zPkmmG-{bZ`y(M`3x@lYT60&(>aSKWF6i_`Ld{z0+`$1uww8NJ9&vBlOfgT&oRlqpS z!2=fxOXR2^&~-5^$Kovo|Q zWww4hV8Sd^hl*vdKr0uk+O1@+Vq%8POcaPjQGi_xL^M63TXvVScL~7 zaRW(5AoP&iC%XTmJyYZTIl@m~yKy#{((mdAbny9-QI80Y4QwFM4UvMbNEFj=u6<ed}Ge0~Z~vd!=k7;z2)Yr#TvXEctt z4@YA4IL^Kv%oo;bP*Fdy%O6lF!dVJ)DIiU!3MA}UhkH}*E4*LS?}t4?Y@U>cI7UX8 zTybxvf6MRt0vuv++Y}83kdYWZj-);jc@byQjfsrzq2o7bryTIq>C>K`5^0i+UrFi5 zon^?806BVjmT6SRMPRnsVl@p0?XQg>(eG2<%xaFg_P{yRMNraQ5s*s8B`chw*F)Gl z=9#D`GBi}ZDK$q)sEIaL6fbpH`euQ)Tq0|=0c)h)=*e$e2>ZQ5nN9|}oeo^qD+T%S zya1x;!GdNG2frPWwlKE1d=%gU?w*K+K#YV}S;EL&;x#Jv5}E6|{D5q6UfmdpyufrSPQKW+r86B>YceLZ@GU_r6hgGbZit#*1{;qU5nJY& zxS_&QP0m>yyRV|k+X%D^R>>6)_ks2e`)c~WgeFDq$kk>lAtaqE6~T%a=@#?5j7rq; z<(1a>T7Bsxfw*{Q9X^ZNGZ@-zs+DB;Fi6Swuc_aK1W~rqJ_1wbvzLGg^0A}S#%;$r#>((ExE*8+`IsyXEXlC_R*+;62Ll5;c zBAbh)GAJVh0)cMR==YfGWGdoEoQ~GF43UYy!EJuQi&xY#L!_0XxKdumA}!-B6^!Eh zN||jK2DD?%g*@b?T7KGekQzktdoC%O{z55pHg);yCq7ou3s~<_p0(xPMdO#nsC$d# z`%#zsLX+iU$*SU~J}&zW#v9_#I&!rHn=@aEJJQJ*DGHKCiIM$XC1-~yXGO8bjERnZ z7~^^#UFf;e&4P7!{eb*Pe^9+fGm-H_@k-c2UdwjuyIT26>jJMoDeYLEl2f7)qh z1~-R!jn}vu$G?#3dL*Z8>5|o&W}Fj(u3!|Y)^!F(UgZ&Tes3fQQRLU}ATChXROP2N zpL*$1fz1QQa@03icg%bA1T$|Wzb>>s8(p8pU&28Sg)+=fK9xmJ3yxe90BLQp?cv3= zJe5217Ip4=61Z;rEBLzRc34@V64yLA6KJ^Q06+ApJ&^HDqM+)eU}JPGMIX{LRLZfb zEpZsPfB=Pf^K(s#nP$%Hhc>_(3|QgSP- zW?Dq0-~JI@L|17Q%SY+#hygH%@8qQYbeD@}lF(Q| zyiPc;p;K%EsTU{XguF_Kl~%9DL(*Xei_<8wuogzC!q#`kWRoqziU5l55BG0)eaetu zD>^=8aol{nq#xiKd>esH3LuTIq+p`9qboueuk~n#%zRJb)B)E5OW$^v7@)d1P@t<@ zE%8b+p$xm{mcmpFd$Qx&1Z;!dCL%nikh`KTcte`X;y+8!Kf zdr|!r{b8m=@>WrMwdOAn{5F;vd&HSPP~}3Ez;vUK@oJc)HwmY?z3<6`QyHAWExPWy zJcdvKQp2*_YAqmN;K9gYiRyibQ2)nAnoc9N_*&!{@dsO5(WQ>=i3SY75!#zhI~2=Z zTx*VXNmjW~v^Dd}NX*bGxeTt=^*OTxY+P`jk~3-`9fL(v0r%mw?m<$u{|}1!%VgME zwo(xpGL=9U00h!B2CyugL;;Voc&XnL5*QTMQ^u%5%UkkA1OFsOPoTfuAOzb6#FoTC zHsV%8YIJc3kT&g!;67I&9mEKWpIrC$#`%YTnq8je^+;D3V3ONr@Gp_phbVvYn72I> zYx1xB5ewL^hpt+gkV&m`MpY}b4W)86 zrkf#9&%a3cIb9G`mc7MaqKv4qH-SbTLw5FP_UgOE4#Y)31-l8nz-_0>0V&`*@o94& z+!i*kZGF-X>Bm)~2ewo6K-=MdA0~m6QfF9CKo3Ng$C>QTzbPnqc7Y$!=dD*Wg$`s> z7mUK}SR$MAu`~Vk;LFe)NFnHq=~09zv{}!Fvsr6k5(MP;5bdk^MbGpVRzLT(&>t{G!}$m6ClfHG zZSS~(Siko7qw7?IX^yW-8b6s-%tY-RQ*!4@9QP280AY7pS(^q{c(Gw12N$e%`)r}WmlCUKO)uTL$YJwPVqPS4EqSYGt0h%DtdS2sME z1^{Gvw_Pr|eBqV!!30>$_%vNkA}EH}ykc~wNQ=oIw+JrA?wziQCb_!U7OzYayha&> zFT{i|0~&8$J^;gjM(NU;AJ;+po+UeG&0lRkWtu7;92gEl+q{fAEbexD@yu__kBT*W zcu_mwqtC9Szq6a5xGX$6e<5u$^&)wz-Obz$ugcAO(HFjICG{R}3CBA)@&nk!4~($k z6*LR*r}Zxv-l=XA5bxwaYlsdF7L=<5n$W8$p1R7{RETJ0F?+V#O=NGLs_NKe^lx}A z+{G8s1mJl@L%T|?*Lg!)BlzT15eb`oybIP;lHcfhS`t?V z49S(OoA5Sz=P~P(!#Tb69qM};H-v81RkQ$O>HQcLRjY6_w6jBD5A2}ztJczx^f=;8 zOe44}8uD_YNwJQmPb|8HAtcqxLcm9ZzNoyAHd%n5fH6 z)t&0W-4xkWj!6lTbW2!Z_b8G1cC*xfOKF+piBRyKNG}L$ylt6l^u$WJMQv*h+_Vg-S`0VuFn2`7d9xW<4V8gYltt}I9kj}Wt5kN z=RQ*AS57DAkT7=iF>gthk#(r1r_3|oSUaAWZ+2aA+cjv-+Ecqa>YP~vP6H9l@tQs1 zgsoa^Soq>n%=m6|2rdq3iO(O0gPg74lHs<5`6kp%>v@+Do{~vhXAY@FlUtY8$wB~* z)062?6}(Ozh6yn0cXaDKByV5Aj{wIANitR|!0DcfN+OqJyi*t%0LK`ekPnCYJjYGh;%TgFo2`8^SVe|Nf89d%iWx{*VNTT_Q z@dvIg7dZS=2#xaTvTlH&y@o!~VB@eZ59EIKTw20xn+rv<*SVm~Vp2y}ZcZt#yNRtt zNiZqy4O!sfQ**phnzcbVqz_3hR*^rTwJ7toD$mk>=SgQpkU7WTjbe?<(W10u3xjJY zh{Hj}D$wjcKl1G#<#TP}TK`a#-dA~E&R1>nSC@w2Z9uZ2$ zAL}lNg^Y{nWsS)Ywin~$kM`?LzKpL>P#MO_`o^l7Q44H#yFzU^)_h!y3`t&MzTfk) z8O5AiWzu6Q#7!HY@%n>urK>CQOn5{?E{57;bbq`pZD|t+FIPD-uOfEV=Al25s(r@j z4Vs?fGY)sMHsw0P>{LkOIG@sF((9@^=vGJLuuB52(`VGhpLwcD`9(H2^r&1{HGPox z?keH}bM11{ajOw6-<$S|xY?v1L^tz)4;wA4730@sQWsw{t~22P3SiCRt)8G<7hSt< zK^~p~qjucVN0>H_n#kaeF{_2OQrO=dK&I7yxRTfQe=U8`s$V1O23`q`$836kw)I|7 zS0E&Pl1I$<8cOt|&-#+g@(2$V5(t|H>8E?&{60tb1)qtO0#b8S;;DEed-dOXuaSWV zj}9<+R*dNB^Nzoi zzw+K4IX?4uka3$}JVYyoU0YmuZzeF^WS6}(cFFasMYUZj&Lnc2;Ij5l_8`R!@2kQ} z@|KMGu?U%zABl`b^2p|wZqY+D$%(gT5m6_;xR=?z|l2|#!& zH)z&H_0#U;$P#hk?T`etka%cavUqYVu)om0)}=W)K`3Pv4wdKgW0#wRMpgdX1{+=0 z4Swe9!5asFk4|nWG@bi`Qrz(VkWVmvQhV}y7T~6tm(tC=nWH&XypGODUjtWJYy4?E z5iKUOrn6PTt(=icW|9{T1;kMooT>ohS@@)h{z!*39;MZk?0l=%cto6pVx6v}@65{| zb#dsRqAImThTsj6zCP7Fg_oRdU)t!2H2&82uQ z&|k33W<$YQtXN2t{_%ssET2a7>ZVhoCG0qaq+pde=NjLSRmr;>hzzJ15eEV-H2^}@ z4ot7O-=)=g1I)l-gd|PK!S&UU1!mbt7|mgcL68`w?l?m)wYfS-De@KcfE{>uq89@y z7j32z1qZ2o6rVC^42N3-P7F*wkDbpZRHEvcg%A@*3=5`FD=vQRL7YDtic8Zs7<2@b z-}<4G);yCqf!j2qdL|M~c(_`L+$FvW>cHRSvCnvYg$sA8&Jt4H^pfF40+i zrpvuvD$#}muug_K%{xyYLVxX*meL_Oo@MCW5yW-8!n%e2QGyoZWBQ4L7F8>cr%xU@LcPcd1;MNP?bC;TY+NbJ*I!CocMsabD0+GN zS)%V(%szEt5Xe0G&Bz|n4-z$^V`%q@=j{628K6tC{V8t0PBk_S1V5I}Wl?r97V@)< zh@mXY*a%{EO>{QBsfWX(_P@N`$f7nNZ)+&~hyDm%inr?2W4AO62{xjn9LWz0OzfRj zt8cXKb#gi>&ZoqW&&*ZWc@7(G(A*i%v4lh)iDF~rXl_v<9hR>#aFNgz*>*}SZ&F#o za$dg#ndYoR&Zi2c139e0FIjy!u3qq%^Iy^Jl_!icz@gvK4c91cF8!RcWG#Yjj?Z5? zwaJ4@uB`wQC9rj{O>e|>&lmeY@}C>rWOgJZa8Ye>&1grO3dc1FUNQcqFh&W} z0KQ~V^`Y`}@-coO##V~7(c+)$mpAFO88$kH4vxP%pYdTu|I!mDg-%_WZn zrBwqIFX6}*_6!tN!29O_8GSiCt-M55_PU@(YzRD^-=7OqQThVxjO}H5k8YDaT%Ez4 zd13KvuL|aYomjCW1NPJ=K?t2?f!5`f1O~QEX*f_1v6wmf89cEAMe^7+(1ES!z|KHh z{R5bxwR_Ss*(HCcwI{AzKPQ{Ah|t`^q0p&%F}VLt7Js?IR9ZFO2tj6ThhP0_@1+OS zC%SZvLnt0e>#i8ZniZsh?>fUt94%#i)=9qRlmI>=|M-0J&tz(`(rNLnBC8K>T~DV-Q3Ls&y5OI7%^*0yFEt=HaFvWX!J1kc* zM20Gw1VK|ObPa!@3>atOoGWtq#Af{0*PNg()?kjGu-q*cW7o4AzcsfNXF;}{Mpcn{ zoL)Ve0jkFi$4{nnt?HmlM8)c-VKYkH>WR`KnA+#>I_RI+ zaLtdm{6NUG;-p><>rP$=uGUM$*>k@K@6FHVMr^remUoo!dx0b>x_dgGMEN3>S6ai> zb5{?W-3`ykS0hv;K0u-uWNatmTam8>=KgH9{@*)Q_y4n}u5#;RYD*ZM}gu7e-aeJw>oM z2$K^koT?tkvbu!4=aF2OQY~^0YxG$9gxCoZVdB3``94@gw)T912!j>P)#WosFr_f2 zVn2NP@A>+Cf_m3BhA8kyU;f$x=o3GHZ()4x{~J?~k>kH9ZOU%8M)-99zfHlvyx;#Y z1)2Vy{y$7XabYoWG0A^SK?w$W4wir0fB$HJ_GY$@Hum_;jBNj^@_);D|K9UIn}X~d z|6vOL^YMR}f(#tY|32@(O~L=A$^UK&(l9X7(*G^~{|*asF#mN08R_vEnCThtIhfe~ zA6-EaI`O}Vput~8(1^~2&Wz5I&W6sG&YsSZ&Y8~bKcv8aIeGsn1^&}%|B?ck=>H)f z|IZgzwtuS9`nMFrKgb^w z(?2c!yWZbdcEt@u%+9n=gquaeU`lsv)cHV1bDS7>umYY+p!OxlT8O7r;6=#A9t4W9Bp)HE*O(J1ooDv(l5Yz(bcb#@@-tI8{Fn#f7O&Fbpv&uUrP z#%S8k#vc%hv{Zo1DH(ubv}IBN0uDD=NDT&nw$w@}{>j1R!MR>6{2K#PD}9jIW_rdt zC&oO0)O8M^%AW=RjI}i^txxC#16d`hwk7zD(8B{U$6 zRV?7bp&!T=C+Gdok&VI8u`k^v1>npdwR+Z9-LYGrqMs(t_8+nQAY(lM3@r=}U>KQ6 zYRkN{@1cyqsxn;PCq8pS^pBtPZ@|MxcwT@vJ{(1WNEzv$JLkIQzq7{~0Ar!o)>b>% zGuVOtTt>>^SpAi_nq`0J_f7So5E>g;!9rWPGFGuNFn-u(dx!hi4}RDleYlA;VZZZ4 zdzUYNF`oSt)Y~F8*|IStx7dD%cqsv2`1~E#q%(EMr}b1L{1f&~hPsGE|m&B$QK#^A4`)y%XH)hulRNArS8ky!;$0D{JB5td?g`uo%$ zQd0(?nbvH+8MWehQar4YWK(1{oNYn|(cG)f?&PjPX`*RXWhMJ9Joy^-MuScfWxf3AHs%>IO^s|0m;gE%V_U5JG z;d$?9Sf?3Frg*rlk?wL7njtwJ$3et@8-`NL%ZNQy({hOnrx5^=)>73A%^;s5xD(VH z6va0Oa5-T^h{F;BX&2*eVUY!tQm_wE-moMdBT5jvnhUxqsz7Z+ZU$^8&=|8QhsYfK z(ZE|vdhPAbEf+tk*2%XdrVB*ETvMjKxz9SujXE*ZAvU<HFnRlME$sJae&ks82h6A&c)jpKytsfv1YSV-fc5?BzCa z8hUbN&Hm7o8t=fH@YfUX8nVK#&RnrjmAgh}UpX7}G9I(Gn$4EkJ7ildtAY2&8ej7% z%tSuvgy&$`c?(K7)3)S`{pi&oSg%XmXu&(ypU-e^0U=HcH@@<4OUa%0VSeN^xW|$ zz@g3oZP*wjTyT51+b(-cR}rf5?=LVt*hc>s05w3$zs$dnzG1(=O(|c$A67@kfYM(p zj8Vbvv0aOkx`nlcWMuDZ4Pn!T#hxt4s&K^mib(3JbfHlI3aI= zAWXi8^p+796v zyv^N6ko36?m-9UL-KWz0=m!&i+2~;R{;O80=65C>JvnFSGt;G7liU{KcaFN;UCkNb zFj0jo(8z7GSw3ASx|#D4rPXM#K+8r|byIvrIORLz$E`U0))JLLevMPzR&IO90ThYiZ=-faAjkTnXXKy6j_YXE7Vr|@!A)SDiEs@<3uJAw^{ zcP#(o_j`X0e!XkTqchd&O>^sK3*UF?d9AjQx5Theq&O>%yzAhJL6Y>ktGN=WTk(!# zIDv!_&tqL@EfM3Rh`|db=bEqpSd-%D>j^(s3THO*b3wUK#jMAMm3W#E&1sW2=xA*g z8o&lYUdx|A`0c5XjLmZ0JsDSC)@b7^m8D_K_jEfLsZ+A&Q+Zc?;S5)DhQ1xCR8tj< zVck07#Q!$B&VI;zD7y575*Yn}Eu)+&0v9UOiy0~0?&!lVB8v-ME@!)qHgU*7b#(D8 zn3CX>C>yR&uwyDs8-+oeL!sy=^i6&5E=dtGI&v@k1B;`Yr~v9P48Ok}=>Cdko*ufa zDsY~gvEh^arG)gg0M*ls9=*i&6$OLGL;fR6gKnUGGRCA9n2C&H94CRxTENMCXMJej znt-XF^F7YQq@`DDUB}ncRck?$s3NQwHpzYRApy;KaLoR2t;^~?(tp<1H!(*|1SZVa zK|B8;bIS2iXGmTcXtWHlYd?k)W+_#nagi69|(*aTU7uEm zop`aQ`6Ka6qxibNQ`xIGZE&|TCstb(sDQBX2Hga!#6p>iqc_SXS#dXTd=r;c92pit zyXd6o=lF*Z%!TT!RbbQOo`E(>3v$P1xNm?=85At^F?a1Zh=y`Cz!=aM?fEr0%`xxX z?WL1n{IeLhdk(3RmdQ`u*aVZ&AM;h==3==BZ!hx_FqleMZjOW`!18715~h3jl9^8p zn&4#1M;X}{IwoUlRw`Huig`9(GXWX&bpo2qYN&i|hW|ol4a2hd&vU{h$l%u&EwAtQ zCfFfkYMyd<))Gre!LNHTiok{N4Nn-EnY1O(^Du)nimxm%a@UAmwJgvm0birYwvap) zj7D@k*Nn;xM+aA9UkWr2n=5OV-MlXT;D9PePZZLq(5br|8fVi`0H z@UIIMtrS1^D>U_+eYjzfyh?=ZSO@`*(Xqi5^33DZHVXaJ?bBAAV;j1Yv-r2tfkO}T zX=t&CE(Ajb4 zaxw{ai{7*C{P>|^@|{Wkun8Jl*Zf5?&|rq+py8+n9>frAP9Gw&r(!ZEU&gKQGEMYl zs|tAAUe!nCe^N`tSnIySzIJ?m6 z%q4djQdjvWbsTqhUd?%8Ntr9sh_W7A)td*OBbMv2l}9>7hE}(_-virl!O-XKmX1lFmRH z>ayGjx-W17m23lb)r{h%K6?*`k7U&ohe0WrUugNaS@4|GY3~mo$v%^*TZz_s7uzy}y+7vGpaZWzl|!_M);f#H^xwgv z^W*6xFy+)dcbZ|87yxX@v2Y0JAB!FNXHA3*e$6h}O(uySASoxYshluIg=b~bHpfwI zTt?URu9)qw1`9#*ZSPE z_`H(vO|uu+dJ*zZVTn+Mgq6sggb`GVpd#z$U7Ux2WX0i@Rs;Ly}Es z5}7rPK_}GELaFR6jI3j3(NqKAcyfcv4xi+N5kj@!z~jnD*H z8|>ECAXq^lHBx?e8ljZh9`+sk8r)?@XbnQ@|H(C4R~h-8E)On&A53oSgvVEt)|Op3 z1h~g3=c`r%9Qx9smNNrOjEX}c6K16ygNO#o6v)#*Sip%e%x+$q=#L^@HF99%xM3T_ z+iP2lzmgn-!5xp$gtEcur6{|TUYcR*fmDRW*+ibtZSwkCK3O7E)nM+LXzg8?Ik;$J zu<;i?U4_C9(5SSEM2j^o5px~E#*qYBrwAi5e)6| z35V~LfdzXatF+9wHlTd6#Z5^CyJ-@ak@`sPPkTH5Hmj5SQ5@(_cr)6Ym;0kCmG2b) zx2ZvZcx9?6V(Ki&SL)?OkYmdPmAr@**6K$t?NF`Wu6f;?ngAyz_%_a9l0Wzq>2bktkk!@lTyN+0sY5ta?X8n6s;=V^_#WD=O5@-kjA#%Y z6_3S0Geec7yA~OyPiruW?C!G?_iy)*&6i|DSW2-#6w;#j` zi{t2aT6fSVjkhy%F!X0o>g5ovDMm)UW__Pa|L=(K#j@LvCKoU&W(c?fmW09`Q{3kh z5(KKQ0u;Hjb}JZwe-~p$;CWo^oF5GYU%H~BG2y)>cnt7{8Fafa%x9n~B+yAZuYv-- zNVgnpBqn^;|78IK-K02p*r8=g7oL;j^mRIGh9Q`$2j8>EIuGq!P)(NVQRv%WlA>bv zp^tPX$wgDf-2b)4G`ch8c44!NriS;k?7)9#$>ROzy(E9ckbUuck{F^64s>mitsn9- zS92U!9?|d9v3c!<0qu8>mh?sRC%xZsn|Y{sUpBC~rQ;!CyVXwSndam|$Kp}=CU4v| zj8rE&h*JR(x(e5lz>Hzsz0f&fq5)fqT`g1TTVP_}{@`CSVDBjp(ssrG4RrsO#+>V# zoUmG(VigOSxRZB;z&1}0sz^8%sXHAi%4|0kV|)jH8q;^%uV!sa#8SSc06jYJDwV9czC|eT?ED> z`IGdFhwSFui@$g8zfF&Jt&&(;5fZncnY4jxnryG@R`h}5LN{o@7*Kj=aAZG#N>&S<*N&$EWbhn_(mmZrDeJfJ0mR z@t*-HjGykN`(H}~OdS4bkmO>$6-Qn?1DVfApgb9dir?|=Lm$0%p< z>%J{w;&5+`EeVr;Lh)4{^+j~dS{V*)W+0xY1Q)a7Pv6h zQ5=>CiM4uj+Do2Y`5RLvk5Bc@zsRB)LsF02)S>@qC!_mk)uw7a>14uB%F=l&;Pk9M zqXqM4^kF`4R>5VfcE$!E5z_TU_he-;Qp9!&FeV)rD=zS&ENRlw^c*WFt5f&U`+f9ZzZzZlxkwdXM%+iE~Xa&UwCcGR(4O(`@Ica~Rx| z)cDl-9g-TH^SIZnlSV>Bqp`Uv3CTw2>%o-IfCdH^c;GtP3XYl6ni90jws*G2@dnTE z+`o)STrtNc5M9X2LS5nNA|iFyS3wry;|+qJ6QyMRS8^=~u5q%=HEa@zD+vk-aOtOS zm9F{A_08YN&~YYTqwsthf?$M2#uvx^$v|PxfXf zSMnqC))6jhhwW5Ru-}rhQC1!w0uqsi9w&coNM6}+Gg5i3k1r2Enw@M$2u8vcymSKK zeZj!M(D@)slg}oeY7p?`BDfQRaZ3myTdMtUa!yf?fCg*E$FRv}I-@4vG?P3R+P_l7 zcA77$_4zu|wNi=RojOb7ksgFj4l?M5R}^4~KZ@Y_Zc#>nDuZu}x}SHM`9tGXc8-t5 zfyi-1%Df7eoWIUvjAo}Ln6o#muUX(^=~=Lad79;)Kq?vi2K;O z)`pWvg|UGs1uq3gWl&=kQEsheizNGs za$juOR884#+x?YYvB1%G$OtVM3?bR|q85ABb!Y?y0h@DVQu^8cj-?v|!FRo%10rAca+c_BfWN-cXTvkyLIlA|O> zG=OKkHZ{3X`X>R^TAn1i&SoWif3=8GNk7Wf0>4o2EnnOlr}zH+-vkn$2g`N3=k2>a z?|FVM@C;eM#I2Z>vbmW5g!QqYw`>D4a$R8;Q}cQpj|_pgFz8N*&3{`Wz0)Sn5UY3i zx(k`D=MTItDa3B&%Uv)?HHt4sz(ZH8?2{Qb23nZ2iVq+%?zXrp&p|d%C@x2(=*Ra= zw>!6;ie&T@;-`eNcF=TWMAcy2@0s&bcf4^37wQa!9KGt5!V3fuq>K+qVxGu_v4l>Q zBkfgV95r7VelgC)EZX{Q)c;Lz51SC6{8SxbQxYf006&B#ekUln>RnjqX+Z%>ZXIUy zyhRdD@!nM*KFNgc{^5@h>9 z#bshL3~qvGFBG~lKM4`ASLt=BO<`)prS-0{;X|lFiMe@z z)@efXYh$0-t{9E7-Z{CMn#FF%Cw6%kVy0I$^yY8x#mox5b}=(tFe@~8hxib(44LA5 z+s)xF=~2wTWqZ=v4b;73OBOD@e`=uAhao<(!^w{r7JsX3w&mQpMws0sc5VS*jc}MC z_wp4V%mv)`m6!Z8vNMd^hqU=qriu}WuNQfw#(@naN+C zFUws!@LG{nvl^Zr7Lg%4KOTyUqrFO>r@T**(X6>)QRQ;lmQXg9oKo(Q8bSHaOX%+6 zY3NFCLH&f`HM<3(c#<5H=HN$V(=+VpC5PD|4M{Tbu29@3{CRf1`o)*4-X8&$UVsg9 zAfO*q@_~QeaV{d|SG>o*M`DAlxnEZubD>{+#{kWZ$M<^=&1N`7LYmhG@Vm>YUc<)S2 zr%zOkeOR$;x7^7Av3XZijWlquS6>thaQoW4U5D9PfbHMN#JHDf26EQV@T}`tUtgN_nMj$Ra_O2Hp3N`N}MytaR57=LU<{Zl5XGAi*t`Ng~bqk_rm>4tdEys)T&UAIsJYWeLTQ2(f zpvS^)Gad&2F5H~&a4(}o;z^2Q>r=neHsy(htYAL!0gEh!G`2V0SuikZB&sbe;bL8u z@--3_)Eusf=H3fnrysod{Pf{O|7xx7%Yk>N2<;Cju?kmkrRiK+#iWR+A^TuaE7h(m zrb_tWwy^P|Krv(`MY3Wt1!kq__!0Z#TEPMTA~IAq_&mGv9!Z+R#WZ6_aZ&)OG}E@o zGLZ?w?(rO+= zW6-Y*)cW`xjOLuj2%D5Et5bh*p(W{r6=5lDF_8$Jr0WMG+~m*9_%NSbW#1#Pz>~vb ze(O>Sv=VEZX`3zrtebt^c0rsCRheN1vM^|>9F8v#9hjMh%A+CwnJ~MZ zeNf5vyVx`qz9Ap_Erb*my_^@wzsIz}a+pvuuE5z_H9&&;!74xpQKb&k2l=FZTMoE? z(P{_Va!jZM7Oq)NdSW-;r6_MNTW<+#>^*71+0cl#xd-Pr^pS^#cf-(t_P9d5F-T!D z;lbq;@{!$b1La9iYF-g40%M9Fe$#$joSi$j3TZ?wFx--Db+u0IbzeuuSAOZ2jD77GXA)^1h+?4`;kRcsV4wHFXoP|+&Lx@{ zJ&~ZmhzsbyCrl^`ZosYcv5zr(>=0r>3U%Ew_msm3SH-|^OtVL6NF6C8ggZAagssk} zEs=BVQU-BvaK=if8gS`0Q>CRE;Rz-YA%&+zsx|vxGs)>OL3i4)3|nZ^RG0jp8PW>V z^kW$fw2vmBOt5^DJI2<_HA}n~+$!zT{LQdRe)*2vMLJ(s;-=CPx@Dnk(~alm+?2^c zuG$MV9^PkjTQw7Wxa;W61wK+UNiLk)YM$geHz;r$s_vyJ(uT8qIfRahX>?CQ&Du$m z0+~exqNNavXbLY9UB+1W)2~%nfVr~vmF(JB{zNU>ZqdPU$5=QP+Y^_mzCtKu6SmG3 z+WQ>|`hTZ+52mJnL`-cx5};cP6SH+nUuH$h!Ji&dXnXIz_tI1cmu72?X0GSEB@8#* zew+2t4lmhE+$4`rDpR8!eAet`NqZy3?RVBJv|F&z6<5)=?$rM76Z{OAdz=!LbVSl? zh_j(IEm})!*Y@)3X4u*RF;lMD+8}vIPKJ`@#;~+Lmf;BjoiTW@)>>^h=ou{6xAoTg z)@$Tzj+>S>Z^JD&Ol=oO_>jV;EpwLEmG9tW1H{0s+ea)U6%$*CPo9jLWA2?HV8mO3 zi{QFtNRs7tj4{Z>*no?fF&;Ttjq@DH8lpe%G!7V&^%Vmb4cXYDtMmPJW7voojG$Qn zx)Ib+2zCyd9lc|x>gvG3ShZNtLpz2?2-WfFPi*{9=HD8V4UZgE%4Atc_yO?m`sJk^ zl6f8L{M}&s>4~kS-W7DQbA(=W0iUClE$B*Mer$c>(*&c5#ScalGw;h zw%A%Sp+0vpHmz#-TUfY$QM`=*NmrwM<}A8CME=ZN)Vm%Ny5&}9wDJlOt)%FicGy8N zS@u8+e+KHDDB$QB@ytT8;gh@drAe??Z=8rB^VKiva+9&JLf2@E<#AyjKOQxg{8h7)zXGPxGv?0 z$qSZCbK4jGl4}xH-P4nwD>zi(E3zSL+pKIukFpT^vpcEKZD6?PX@%VOAo)W2GxLjn=_U zw28Usi_K|+vfgo8svTKC@=svBv1@u^$Y_Aicy^Nz$eo=GL#5c%$`F&EaCAjMNiE9syJ zKptT#N%5a-G#38Vj?yVulj?(q{k(Z629235=CUTy;us0dt%t-z8+u5#H$EPj1Q>Ha z=GowY3j)qWWklr>vgt&ghLS8j&Q*D3^LkH|;U3ig`C`!dFp!NZCL6w#0nZ|J{YS91$8NKJ+orCm?j{J>G4h)wW7!*t`7j>A_e@Q6 zOM2dg)H^$k!`g!6%%8jms3+YgF1i#;mgR`Rd3B>0;L^N!OKKr~1N3Ca2 z9yLuSmq`WD;N19(SOl%C15^g*5{5z)_sH6i3k0%ifnGeFE@{scq_lQ~qTsLg@Y6@@ zy-zG;hIz8-v)#4FrZEc8Qz&K!(>l8-sy_^oT>-fx9RBXe6Sn+&>KApH^{~e! z#>JZr22;JxDPzX3*d)hv9-^F;K?)Ggg~TZSbzGGs_e@fA+cY ztIK9s86!ry)Kau}k7(}_JenDINBS{uQYxcThM*@EQT~m)5y@EVF=Xr&Ina6Cy-hub z)j?P)x#$&8v4Reeq~^&fjyI|aXCJ~$6L;60XSYaKiH(u9V^`pN1TZEqcg`2v{*=7nt3b?&h<3vpcE6)WkXG)P+gq&s%&%7h!&BH=wU0nz$rK?MkEPrhYB4}un$hxA-Yx5Urip@@ZIX%!} z{Q^jT98w51+_@mzDy^~~RV`DPJhUc{<;8vaw=RM$=nu~wVUYdQk&5DQ`?TnT}B+UpBxVSUF zo!7a6y|*^68f+!??sS*<-fqU$Xr;w7rUb@naw7uo@YQu66|-U_hV}sld@J@RK=2e^ zuc26Jqwt}r-HEg1#6ir};|U3#tWr5{rA=C3{Ng^F{@b7{X7D@hNsK8c>?4ce|?y){A9hWVM<>&pG` zE3m(*)vXTjPNlwsme7~;!#G+xwX}PpFNL}XsO-RWn80FQx4$ZsNRB=7Z~#aqC!2r9 zq2Z^+`R_tuz&Avl{Jho&Zg5I>qcjMi%oSRsdumS$DZO045!|kht559?8n9nrT@Pet|KW(@ zB^u9^j#R;8qQYem1NdqtODGEP3B~_mPIc6A+bw9ZO z-X~@<*YJ`uzw}b{dLn& z4W=Tc+C6i3qzE2{wh!OrqMAZJ|8JBuNA-xG4VRl+N=jiWZc=4EJ8eOK=zPvPzj*94Lj|W2AxD>e`fFWB5+`SI;EUSA@A8hCg07S zd|^r$SYP<0P6*{?mQ($tjlRlqcV_nLYxjSpav`EwLfn4LN=#J zjN3NjIDbh>(K1zCdYrDKPj~!+PkU4YR+gjq%a`%wvJ~z4044Jf z1-oN1E@$H00gp{XVYLG`pNhYnP4#h*ZhLW*#q3lb3qCcxz*@0hZ2$+PpNEzTBjWKS zn(t$vA-D)6soEt>75GuP8YH=<0PEJOLcBQ8nmUy9s+G`+aegOJaneB0%?jSXWd)4a zzhdB_jGMS(WL6qn1N||0_8mdS(!*A@w^tqLdRSacnx)h1mnUggD6k0X4r|Zv2F=Eq zr2*R2IK+O4NfG4R5H+%cd5wxap!>cqYWzX zH&21LJazVGCZm&_tb|y58++vHlZlXHJ@JF^E^+BfZg7L2HP_|6aq~y<`srn}i)-obgdH|0+T4hUu4>B7dQuTbZ}UmKruGbpS;L|-Ah|nt(md$q{o6$uYj0yplWs$Ywk;7J(SQBD z9oW(-dwKs2h*fjVA^vZ(z3yk$FAVr|To9s*uO6gg!zPcyqg(RGelM$6%vLUxzELJQ zzwYYt37avxbOa+8QM`SxSw>?6D{HsF9;8uC?uJWES7KY7%GR}?wt-Xi3T;KI!@s`` zH{*@`DvFg6tsU$tFW8)C)=Z~GNA1EWXT}8RvotokDnUcwNQM1E8MC-kXcJzRHZ$>~ zPBT>cm_)q%$6LTSlm$pf*od~eZHLLV966resiE3+RHC^Q`U(+P5QgJyssaXJ(Rfw% zgU93x7^AWtmN#4z3t=}fUav%2qX9Or9E2CSFJNjecgq+%5M0W;7*ReTN;M++w{kN~ z{yhd*Ea70@{9L+ZVAAx;(ok3X_2oGb2nK<_BpO9s#M$c7M^tA!#ld5*$9XM9SXN%i zj?EhdA%v_<^y|b37@ZC$?w{!>oQb~!PSJg7|4>~kG08+KpnF2|< zbg}7z8}I$N_=bcLc$SJ+CG6dUj94bv=?Cifunom~-L9_EH1L=bdY+I`Am6Z_Qq16` zNndgMCM*t9HBjNI7pHS$T+W{u*I*QYK%?E_5G0lhpm1}h!<+E5x;wMnfiTSFg5LKi z0?4zX3aLSU*Dg)5!mCPrN$v~rnPY*|^c7FS7(DruA#f4_u5U?3Z_`#c*KN@Tu<-!%9|w%lD7p1MR&g_`p13Saxn2+hcOA^GI2Z$L0^H&kgj^ z&@99rzfWNL&-$Tfo6kS({=%=&_(?LPkC4tPWiVT}(Oo7}oX(m58*;pqAb_b;Hm$P3conE)hHt z);q8W18X<4gs06X3$4xy3OkC#*QMnt@x$gETC%^Qp~zx-t2cHu;+NZ)N(;Ug{Ol&1 zMlq$vAMI|KJO=(Hmb&S;n%qI zfey*cZ`x5H`(JuPA@j4ZMrt4U0Sp}6>?89 zHy$zRewXRe?%^O)K}UovS<{5g`>FE!ez$xeoDL^_P1*gJ0x8%2ul9GSHyVlD%3pop zn48EM1$5`RHD>;J?8!^@(wkh$$4DD`R%(tGVp_UVW(dVI{9Ml9GITUsAUyYFU>|9K zr*6|!(1kxH(3uR~fkf8c+%Xf+Lqoru8}k8d;BaoU%)Y@dEaa_#9-_Y*a+JNea675y zyHW0}WPk!e$g{3rzeYbYjGOZd90cy8NYL_E`fPwx-Iixp38%tZz=rMO;w;fs+tUg{ zmE7IhI_~`>3-y%>Z8(%1T^oFoh*Of4NDR(PJIG?lpDxQ|vU1h}2MdL| zOM@utKynsjRKRnZ%6wX$+eg8ZV+viBt447JStdKIEf?#F3)c@{_hA-ih2E-SyKmT~ zKLanO+&D5BPFZJ_--Ih4qafc~t^6wZ1`t_yz`W$hrnJCYctU_(m*M1GGP4&OrXW>K z1YAO2T2_pI_{<)_1XK4~>Ui?i&pY%+ho)!P5hUyaWq3CKr_>cn%|XnP`s zYdwVr=0 z%7$mB3-XhcoKII;GT5Ig`4TL`sjYsjJ!JsYq2o1T!D!W7 zuc`R`9z>m@0KJL^!_!ue(sHQWZNX@|5u+k(flH|~+0}1)k+U0VC|G_WC?bc`{v>um zsQa9c(7U$C{qrq9hDEH%3PhewftW>OW{Bha2P!baHN?akN(pW0VYTMEB&1l(r0`Nz zWs^^V^BZhjTs?-7fsh}@K>H5X`-I?CQ`nI^SJ^0WdpvYJb%UeJ#O&{5ET;vusEo)a}&J zh((Z6%NaZlx!Gioo>khIpO13l-`h3WpNzHuHD2cNPT_=OiGN0_;iG~yRbot~tf{96 z;mnQO=x!r&DXjEcr5OfTrsp#uimb%!@Dn&7Da5kueD$&4= zI1y{;%|JNun3Ww}rb7?|op!G@$2K$AeFz>hS-TZ|d0~^^)ntcco&IH^B~Nj2HG~nx zJ#q>WHgH|kzpqsjKgf{V_<1c*T{_-8>tS`pg~u(%Z$-I>LUB(0vhKU_@TwU2n~rk+ z*7xJd;*4LLna+X>uc5ukPfc^f?+g2;;PFBl9icxG{z~QJ0`U$Z$9oM4P1^{9PP?&Y zL%iQ?Pb6Qz3i~@MXi~hn!+hZ_CQv80C zqSJAgv$8%ZwD9u}din#!Y5L{?t}?)c9M6pqBRDFSmO8TlArNjdb6aCZH-Zb!CUvL$ z^U#AShcxt;){#n@AUBzX&Oq(vd|Bv7uWGatl|ta?nKIKkyj+wCu!9B?7E?*GkaHQj znVc6=L0wXw`A$MxAc=XvwKd_DAP2p>iS7A_ckG_(9IzndVwSZADZX~u@5Y%rmdoT- z3C~>pqv7_2pU@Yq-&BKd_`$SoSwlgu!GxQ6R5^-dvcaowzf>Sj|zsEFQj&wV`}2fq@( zUCvUPf5n_qKsnB7=CwRhyktDQOR08+u>LWf`J%AaCogGpBYN;OlT)X*5OWz8quvcU z(Ve$T=E$W6*{i`*nB!%IIiYuWI~3kwP%r98{IUR`np*-MA^voxDr$gPLuq=9oG~HN zPc2w&ivC2b=V**_tlC)fFf|s|NEeW7 z5R(kOFQL1Ynye8&#Ju#`#1|NR=ztUl?NomlcK@QKH$im+@(#PbqoxWrbZGE>+J6E@ zefQwzkZ;2A!RRVTBeRniA`?I`4lOIy9xs+U+`#s3a`PW}IC{DV0!y^)Ju6UMG_HsGs4pqrCne8A!A9at^-m5m;(~Qj94I^H0 zkv;}bDBHLnztYp9AM5!Dh%avi?I;wPX3ZhK-QJ^Sigzb!pdPe{h*iL7!=m8E#)YT; zq~R6#z{f+NCU1!S@u|;IfeQy}IfJQZfpfJ7+)=qxTOlxxppPWeFCMcusjCg9VUV5a zgSUbf>4p>IVY|3_tajD)uJBiPcY%ZEA$*UvQI&%l3YDw2sVYON+&j>EE-mCUuKQs9%yBO%67;XdjMrJR;DZ&h z@ddz69$*;d@(Ru6cOVf*)u^;vI}mz%8fH|Q%0B_j|GWV2)e? z6Z7la=+0@i8U&95G&J{3!pI?^SFq`)@|nnQd%EibzO>mb;vd8E)N%=>=q+iDuiCuc zUI<(f@EFsG`y76`#TiF zpQZGCA6};DWxQi4C!2++2R(PxYP3f6E7Ql2gVZ`}{ZHz@h`%Z9`pwi~w}cL$cH~&i zLEbV};Z&v88Jmv;dMmpKuutu^d+h%1FAVt!>c@fP6SQOOEUm(0CEM9t(p3vDR;`8z zdZCfqk^9#3>p@RUOmY{MA~o&fj?SymVSQCmJBy&yJ$=xm7qo$8O;9l4Kl_uhX2ty= z&{pASneQG?_p?6Y(6#x%ZkG*j&r_$?a_p5oavkh?2c{?!mS2QeVmi6E6x?<)B(J|R zY@P)YT2E^9``i>OJpKJ8ch$WUeWQZilcMD{3Mf@$^Q>$wa&3{Y>0^9c=Z_{6S0~z3 z@e~0E42s7k089n_`xt=m@R(nKwlR~YQFm^k*-YM?LGOIAL`Ku9#p3BF?Sr}A-tSk4 zS9WgZpYvdffAr5>SPJB2Fry-!ZSivdfI;8N1uiT38r5}SrA3^M;bHQxb|W^Vf)zpB z<&vC9GZ`)hK|W(gUwX}Z#`|JILXOh$)v{_ACS}l3&>w@Jy~o7^=fLX3K33S&ikE3j ziQqbZ8H{PY@y;?qN82SAkyE`HU8(BK3JtcpW(&TlD&BtQTu$)cZrqdL;zO7>1&$kH zhvLgW4U)gw3u(hURMP5oedR}PT_f`RfxSqi?9L(+2{D%;8fh9H)v&q(*_Nj}A~!}v z2`)4cs}XP~{%8QCLO7A9yvmWvhrf3(8JivvI5Woi@3deHQcY`L?Kb!;)KiqPgs~Hp z6_C9UoJE$UlZRi^g7k-kG7&RTH+9vq+oPtTSjc`z$Omo6&M%jLNsq}iH%rL0zSo^? z1EnEg&IBdnMk`k(VF3u(C!uqf^HS*;o+a@1g2VDtNrNu1|MU)6UzW*&&P7*Q(XUN< zgkleB$@S890$>dNkG4kKfA{;7*wG>~{(tS8Q(Gkfqeip6voUGsNt2Dqw#`YCJv&S` zC)Z?S*AA0C*{+>A+4#Qm8_wN%&iVoCc0KRK%h~|JUEw2fOON93n_tL@60r5qNN!N@7A0NR+``9P2&?1v+XH>u=7P06nVe8og`0c|dyM5f-cqT~9+WHi}fL+qtFt?!g*=nzKGJ|^^ig;tR+*GUNUR~PP*DVddj=^@o0hV`B;ty+#$Rq zZ%lpm!jsb-gMTjI$%QC|Pb4C*OiDn<3Qn(DwykQRPL$TAPrm5e#-;DuITmEd5Pkmh zEbV7V$bot(OVupxS7y?Su zD_r8GD|$%5migCuFv2@>aH*Gd(r1_>GIvkMqtGMapTITEs7rK`B!7Wr&lC4ySmw4J z56l}8Ou)9wT+KYJUX~ufOjlIZ2Ux^#-9rP%uQbkBI#EU_Sf6;$BK60h%ZtWmlU1_p z#yC^;;`pyd)tp#=9R6&zHLH%Rl{{b-z+fX# z<#!vN&rPj&@~&{bE3!^-ohMG#^0R;h^_3qIZ0T{n9{BXeyM0ztnVjrcBo%g zG8+8|uO+k3Z-swJxEUpeY)9w7{jM`W6MDmvoXGG&<;>%iRk$VXep{!PfH{m>Yt?WrK)A_q*`MPTO7#)Yt2GL&Tt*pu(D@!9d9WC9~K7Q>LF7^s6@EDjl7bnlEjj)Q|cU*gD|)JT_G!4jOfD%arK zH2Gl!y#Z7=v}@O9R=uVAeS6NB&#f?t1@?(6_H>}-1)-mn_Dro4Pry+LUy#*CEg0?9 ztkHpfenATwHv)A7+(vJ@*BI{!%zfc2uXhttgy|yQ#A{<&*Q(sY1vypYy(GT%d!usMX>y*KnI`0t2NO-W-5&{Be4MTD0~K5| zjg$||4MmpOL^besEZSAH2h+K?33vv9JtwoxUZyE^3C`y!@+IR`%qb$sn1P~6Do*{z zUh3EgQBww#+!~vyR|z6aYNa(}8pCR%GM>p&?^DT(xlBg-j)20sU*fm?`(Xob_rS&} z4y>A+S9MhkSso}B;HCA$1JLCx! zkGfaMw`;9OhX~^cY#i2!*_3gM&}5NY^&c6wBF2Mw$Si|s{uDoI>{WcS-%l{0II(U; zJ43s$hd^Pyi!b-8m5%4-Jwhnz`u0LuhiYvLtM|Ee8e27b7HW2NzwL8>R~4yaewq;0 zj29IH*-@n~X_A2S7p_c_`c<{Gh)158olT5i~5O#Q`so&i08DoqZkc5A#RSc{<#+pkI)knb89j$B3Qef zOis)Z5Z&eFSwae{jG05kHF!P_u3gens#L+jfgZgMc$xkJO5g!w-s7Xnhbs$q-=L#L zB^c(Jn$1edT*$aS0I@6R)9Pa|@}>~yB^O!WJUI&B0+yFhzgjDC|E_mvzJDV&w1c)F zwtt;Bn_ezhHL*ARqtC2@k~o>cdj$BlF)1wJ#ZdZ7i~|s9VUY{}EPc?{V*b%m5nt+v zmUf;J*q#-h2`jqHPY(Ta@Ao){agEDQ4I3IEya9EFI7)@Am_?0DHd*waobdXae%mJm z8OY79H{8^=j5~Rc7cl1oLb|~^Kz`4U!qmYZ776`^&KRvfc%Jd7bi+4SF_AZC=xNm8 z4hMxuT)@<}`=jk*x%53e_U|6YM1E*{R87G-CcO%xh55y=)W4yT2;!_B(G0sgD;eB< zmQBhC(kIO7k)cb^MdM%@81ri+i&$*Qk_+{$X_C3Wzs}cXnpiu1Iu9Q#3>#oQ=lt4m z;kp}Xp`nQf%22*loh_?5vD3KgnIBAh2+!P{FFRy+-YAocp3XF&+m{Eo@?DAXs~h6A zaT(tOp(f}T2!D94&!=ixSyfpbtT8L{gX06%>)lk$Ek)XT?`)>Zb;Z|>+)}c=Jzjb{ zpYH?}W8wZxAU_e{M6wHYy{GN-K;i0|31(bbP^^ya?9dAkNX^keSXOglmh0aW z0GaGvo_F0*_?i#fW>qKdc(^Yagd!b@JHEu&<64Cyv5PPNsYBktKq5vzdi{&Qc()U6tN;oT7 zSvJ$WHf7%_Y>n{KPxYCFY|Dbm6vbJNjF)Xh4)~Ufjv7yrSCPhh!#pf3V|`EL171Y5 z>$%|iF(W<{&iCG1a-Ay0pvheD_yS!0x8IYSYbFl|du#fgr%6(ptXsH@XKjlol`T2E z-eIOK!BS@;Ql=%s`0Y#jBR(l#k4X!|pq@O-J+Ag6GIJ0J2bO85hiMeT(OsA&rh^?d zA7ZlA7J0NeT;)PWLzcIvFr0QN|Ci$r{V(h=U#pqv!Pzgp8j1j zwXOk;jWzRUVtC!Va$5fWy?eH&!AUG(ldR_>$t5g#9)+jtgg<-IG(y36!SUH+r7t!cwK824L(^b9VjvP88Z6asfkIIANQJH+I~&@MZy z8eP2E#EPw;k!LGLS9EHnwBrWFk~~4-T@I5#finI9W=zZ?0Y_(evNq|0EnIW9(_CrX zHAE+>V}9In`lz{v#dS2o#+u(?kwY%o?7P)GIy!lM$almgv1L`Avb~wwwARBk#obJm zSNR2I2wJrQC^@N1=4-C2o~Qd&NO3fVo*SisWzRm^cWw*IQpK3{5Yp{Cn(D(zA|WSI zVuWGxStxJ86~3L;6-pkT3!pZNcKty8=Kg80)mFCMIuYAU%@r6a5Z_O^Az{8kk7#6o zsbUtTov{;^I&GKF6reJvwjjKnTC4N^FYmNUj6X^jPG%- zi}d1Sv8vfVFZ`NpT>@fcMw8-sUoXGiXZt;LTxxXimPcVH%CMdyB2LoCRxnV2!DZ zX#kUzgz;8U8>?+z@rMeaN2g~!AmviQcj#t|5A!3U$|_bS*6gvryq6OG;pDTtOh$l~ zOXR_8MuAm5I(UP!Sxn0}G(SiMSvt$PkzMRE4T^>MO6|Gu6>R^IEroiv9skG4nQgY% zm(34DcjkiN6I zvVQB-vt{9XVUhy!z2j8lw6@*TEe%k=9z_g_6i>cT2mEb zw)Pq0ecv?_kiV8l$l72dIAc){XRSC}z{Z4$0AasMKZSyIq?I;A1(1QG&h;zNJ~)7w zbczsn;ej_2)z(86Pqy(;-nWW%(`k)*sIDVy_4f>y6bE@TA2+bhUfL{)o zeEp4Bv%;H;@RP+yck2+aA1X`k-7x?pf|WRi?!)?;q}+*?py*M5MWm$ln+4du|6t*j zX&*7NdrG7%8N(}EGYi+tmzC~jZv-Ui&z;fZ$)a!t;1GpchZaDEhLk%3hBber}KcgZ<&Rjls@>ILCRTE3PKc;}8C+g=Pf?L-Jy$s}_

aH^{kJN*2-}?1HeNftgWKvDb#Ys$|Ey8nqWlGm-#3yT+OXx2PoqUJ9s<&n1 z3_b-(Z!%d3fq_3=CfdDQezbLI>xq#D4eA6rIGfsWq6uag4O3Wu5DI1rKm6*JgawUv zupN_OtO!ra5t2s{<`NFj{Lm+ic9^%^tTepfhS6~sFSg&W15cx<&=Ta3c{NhiK_@9~ z9w7aQox9<~vzPVe@r~ejmK!X7ShiMn3769sVWQ3k{*E2chy8gNi4Y?s`y^1Z4Z8c+ zm2nir5cHwfm5YbHcMknNDBwzMqbLuLxUq)swz#*-=8@CBSNgzG<@uj7C@*F8r07g#&Y2(UA#=tpQ?fwI#JVyWCgkD9Bn&qQ@9<0g$) z$VeqNeqpXDPaXq#phbeLD+O1 zT`px{wr`~4i2c{i3S+SkPVHu;qvLVYs+sme{&Z?ckc9qB8)@MP<*Vi5b-g@j2%z{A^ADHq|#|qY)D= zYAi5%nPrU5A3W|u7Yht#-^I{gN)eJloZW2E7{1di57d;~UJ6|8E(uNS$ijb=_;bel zD8n@q@?@YhNk(>S$>f!7)RMq9=;t3O^vX=|$STxw_Xbr4og>$bb-HMb9GOOA6 z3Ge%&;}-Z#r6YUU^g()nGo_Xf9PS$o>i)ztEpq0heYw1XtXHBa3%ZPpC@;JCLX~ln zM{5Bq9z}PxYC;|B0)y_itG!AwjRHHl&RrpkI&0RJ z7@Le}Pt-K2cJ6EUU2Z?-6+E=9Fn9bmH8<=RhP|gG^rwSSvs`b)D|SqACZYTTrq;}tzm7yG?2UcrTd6dJ_f(&+ zT)n$hc*xgtpUiCMTBr{i4)#yR4%?e)L=Cla1^H@>VoHXJRizrxRTgt-`Re5fO738V z1^ym>FmnP_9+=D_qaGrem|l7T0H}^%0o{vSii*sKyf&v0(f4{=g$+KhIQ|MlAABh2 zemKG{(tYIpoLJ8x4I58rN5jAhKPpEWeyc`Zp@*X%p4K)>^D-qFQmdUH^ z7xESRa*d?9GHX;)qNezXjB(m@i20$@DO1;LS^9D|O=8ucRbzGE+B-$3u1gT-VjsFC zc$aXUK{#wU@EEbG1|Er2nEa<38|k*;3pNG~ha>2&JzhDhNk@>D=dKJQ6v6bga>5HJ z3d3(iCp>hH`>jKO9X^ybOj&>ko@jJSC(1yM+&e13__~N_^!dm7XAjViVTYVbWg^ko zN=f5#I4~>^$Jt=UCQ8RB0TmzR-9?A8{4QA#_d%6Wja&KJBv@LoEAcW9wFO>Xkhdwj z`QPAv`|#|g5lTUxriQ9DjqpQB!?4Yip=CCEbPsDa)sE^SKv!J(p*7xrV1r46f_Hqk z;{fUB=sb`oN9uJl#y0vbybTZ_>}zKSzko4bD_TiuV?i$u*ff!LLVd-WcaQ^oa%Zru z+Ty%wuxQh`*_iF`%^e&K+cnrFPv1u;_~3YmX7iU!sgWGV9c^Tze$q{4sf`f9xr5G+74`6J^4mm-^#?^nZ_t~Y|4Y6 zj1&_t|J7D&zmPO@Mg8(=PbHki7EGX`bVF5B9Dwj&(=B7JIFg4@d?Q`$4Qx{n{qFw5!ujEN~n^jLb?z+$gRUnj0hq)j*%So-7LAkR=i6D88eJz?9cgwBYEYTH(Q ztsnRVGsvX%j#%+q;Dr#Z7;!RXr7zk&v>N;UYM2)|xJ%wF6 z+|E*S@5j3ib%_;852eHzrb){TiUPUV>$@Rs;1A*{&bv=-CclIIY1t-eJSu6pni%8? zO2G@f7nS#<+01$w#8c)T01AYgl#RPJ1*JZ z{MdI|oMaq^3;{}#Jb{*w@NZ&fF8h3`;e@k@GXO>8^m?+brdU_|B2!N3j=KLek;ni8 zS2;UHe@onRvp_1%!To(X2_!Gko+h3_8_y+x9+*r|r4<#0FW^c1YbQRGC~JnkqV$gF zbUqDjC_PRL6p!zOqGgn6NKRtS0a+;x#cyCiQH`E~j_&^i7U=&WAN~^@ z_)gjXk3RA{8XDU;;j=RQcVOWkQsMs%SolA_@;`xv?;iXQwgU6_i2i{l1O#l|@HJ@| z7#aS-71;6VSy@=|+3A`8XI#O=9AIK%1u%2BGc&dU*cm&R+Zq8pj2&zNwl>B9Cs$j5 zlbM6DF~G#u*#Tf;?qUpZG>;H-J099F>%cw&5isUkNCDE=oy&4ueblvlAve%9?t)zCE;OcXR|qHZME*cd%p5tkVKO;8E2C< z7H89y=Tz%a`-AePhOb8b;qk1t zekANVlmXc*aw?JuV)^-($3_;?^9{|dEKIH5qxDQ|LF(P%f$CY=ni{+Sq^6v{!1Rtx zPWNx&=@`j8HT^0|!g5kNGNAaBQgnpT^~_9v#>76Gwq}MiF7wV74aqcpjYWa|z2%LI z-1!m{`6Bv=ULM`!MZ$q0BI+5KTLINGvam4+7yJTj5noK4|FHU^PjBIPUw(kcKk~i) zLH@OKjn*@;aGq_ZiiO24sHq54SkqYS}ZDoDc?Q@&vOMGt|Yp$GJTw<(T;Y$|yeVxX_)XLVt+!RjE<>im0AX)qu{rh^Q zp4m(G#GN>ngnP)q3L)fblJ_gNN5f5ioj+(jhNQaI+{qT9X$LYHM|^aKXdTy z)2sS)wgV%1?3q)1K>T-&Vm3&Y>!yhbo~j)&Z@ozTm~8lipaa}oXD?jZGHA;z zedY`1tf^tzb|I$wh7cLqR`!9lwSgf1YAQ?wbrzFYNv`owr3m>#sy;&-KB=+|Td9{8 zUOA73|IG1?t8B~D=e+kh3>w2dF#j8)C?x?RyCb%I&?w!L5+0OiX9UP$G<+K!sk)iFbWD<@x)Yr@Im-QG&~+s~uZWj=>eqR8Bl^z-&=J`xb~Ku_yV&(b7^lmS z=X~A#^4gWIbi}QZ*GKYXR0J>Mr?4c(V&8Td;p_$g96F1N_dI7sAo|kIlEZK^c+W*) zLbO=4+7iEmTM>KE73`1vTQc$(>lqJ9SeCn?{l=IM%SS!`j9ES0NvA{8Ecc1*P~1W= zi3{0MA6hJJJfze%jh31E9nCV~#DF?5d6Gmln3eLl@CdIAT60v?;Bk{yE%N9Kz5oVuaF#X@7G9yh^nSh$>S-?SM0JGQ3X0dqPn2#rccn)uETZfJg-Gq2;pg0RGNOrEsZ6_ zv5^0X2YvUXv~#L4TJbVJ>eDP@gm*-7(mhXFP%~N)BUlUK7t4s<-@!VOdGf+&)H?84`&9td+n8izpgPSm1GR=5z zYlAFa8qmfTk)PPPRh=P6kU?iQbO4>|%_%cWfJMh8OoEi!y)^U`B1zX{Z@~W{hiOq< za84hHj%Czbc?z7vJ@g=zK00tmdmR?hc`6cR3@W$!`D9TPd{nYN-A7)ke5`cbv+d4i zzNG>&we&oE8h!j;A9&6M=vDZo(hdIyY!SnVs?jmOm(Nrdd%S(WOG=UFL}&zD;xcv$ zM{!mu*ru}mCCvhNg-TnR0A@U`yggWpGyj!3aod>?4`nzO`R)s9^0j{>x$48eRK>GG zRduJZR<@9hBad2YU&74mCMyAzX7$xkN~*)^wtBgMmdMgk6vEJL5A-AKcbAgK{cd&H zdV9+56jH|(BpM&5 zc6UCSCT+z$-T4iw4=Tf?PQu9s+}vw-GxZ*1>xr5QhwtzdIi@|fx9vluC8LbKtLHL? zgwn1vsSw`9eQxqvZ$b_`k{nIZ-mwbv$;4!zNCEhfEwmU9MJkgu=mSg>6#&gLGlfzH1(L)plzV7;VgeXV#Iw^?L>lO z!SQ&dMcYL|t{I#cStSks>O{``fw}Kop>PrQ{7G(x(s)OQ>q&2pIFpWOiiaKETC+LX z8)h$1vM2FVVrJ4cuhMG3pydyqRfqtnA5OvMtL%n`VSg>NEMr7tV8oASS0jGR%p}9g za0)uj(I(Icm^X;0s}Ivd-#Y7;;YS&_O_M@GJrNtllXxq0(Z7_Rz7#JoZTv)Q2V1Av zun}*B2I&-$ZFBOZ@Rj6L1C?*)d^2M(*SSvQF;YUoXCt-Ho;E4h4*ksm9m+njJSE-7 zey8>a9@Hb9RBK*VT3io!(J3e!Ns5ntveJ)4S3*I`u2^%#?8a4{x5h~^T(kbjboeRu zEMu9Dl+{#p45S0}X(Lk>S)3@r3`vWbp$OXizTIc@l)guSOO7HB#|IZ-2tP|aY1hH1 zLY_N#9}Q+#L>F|GrGn2xkJ~P*tM>{02!uB_*^4Ba9BovhcP-d}K3a>9<#6RWL#D z#A@2%FGwgk|8y!O0O_C7gyyhwE^Xy^zg%qibvpDdO>?@Fnl2Az6OJM>M=H<{pY8zqzzKqS()idT1h?IWh#9>7&LDLa6TIrrp9q$*A<|y-q9Bs*Us>RwZ2pqk z+PGBRKEQ6=)Ja&p8Fe5Qdvi;_Jk?+KcKkNNGaD6C(PW;9r8Gf|wJFr>_9n+{f*S~- zRE^BMuQ3Q2J(wYV4?eCG!gTLr2K7*;eK0M&`pLZ1T;&!MS zRITtkR$ux+?8&$>!&*#PShirrx@cY;$ z3{awP5764@jg2PoONLf{rLOih`SkmDd}U z0|C1ukV_$ks2V|wqCo6&J>%5MfD%>LI%bO$19fSoY#UjB+{AU;#G}^Ec@k?e`c)b? z+17432jsmf*IqB)I26?%TNNF~fEh~`jV^S@678n;TeH2GB@R>`E`(T1xc&Ybq=|f# zUP0O_QDwE?oD|21x_4vG298r_LLZF!ly+ zV6~wlr&!E%i24@dtLCv&Ds z-5XC3OX)YO^u2(l4&^r2DzJV&s*Ca-@Ljzuw1g73PWGU|h(`UjgD?@z{L>}KSEw^l zyyL_jCW21C1V)YeX$UUQNlI?O?Xs#hDy1rkp9(xWs5Sk-m8BfU&uKibbz_X6>doa< zV|h??bGKZ?z^$#)$Rslg1xmeu6qILGSJzv|{J)y>n*kQ7A=qaBz$^Z7 zp+%B7c6-s~K_$|Mn*-PQbvGZsFzgP6>*M2)alEHgq>G5=ziZw1-NM{0ZvBXu3oR&d z=iwrJoL`4Wx<)^mP0tf{AHz_`ByXp3iEODduOv{8@E~G6skFLH=sDNPLpbdZKgL+M zy0tWhKBT#nocv2{MG1!B5Qw(;NJH_*{G5+NP2$QO4jH6xW@U_dL8 zK)GEq&~3M=xkJ@@F{B=fHcf=%g@9VAPu(bq|2tI_sh~v%S%bW@-7u&G2CBL*0EI72 z`%C4XKOK*LhJlA%87tBW_x$;Yr8UrYp+EOvI(jpRPm&2C#zkteu#ON?#D2-3e_n7N zMs%oq#4Kq2!~}Tl=G^=NL(HveV0~_}etFJfof|JpqTUy{PNepPOKU^bIDXv!dZ{Go62GO^TZL}RdFpKCJG4C3 z!P{bjd0~Mdo+XfcY75u0c!sTSnEWT!mQ&WBEeK4J<$|YbkKLb|BtOi3ksZ|cJTd$B zX5qUAgWOSK2=o3(mJ#%A+lT?(&IOZBQ|}y%7?zI^^@*WMXzXD11BITbWkV&?RQWv@ ziKS3Dq?9rpJ}kY_?pqoRI3S^_vL5AyVw9o_U3Ggv$Z1g=g$C=cn;Lk%TUXw#OhitS z45!5!Y63Ae7V)x*7o%{-gwM9hH^_8xu`1GRMobTExN!dcAp}01etm8JCDJohT;5-v zU@0~&d0FsKp{tWr2+VKj2(mRtVrwFzpHzRfC1?jUHfBO`W)p0R;;if-(Rzu2;Z@Ti zysP@Yg0H)z5hCu%*S_GjzdgQg60ntbEFB{&O%@Dc%+Qm470=jlRv4p)Rw_FKZ)JgY z?)$rGPO%^Lm`yzrurl!_u-kl{&qkGlAP7pc7_=84u_JWhU~Y&j$~`5QgAi0xS=c;d z={Z%5MSp{9&D89T@7`fT6}Ysw=bPpxBt@fc$E29jUb#=3a{u5ql!*1`YQr-pywxgA zt2rATDbu)>Sn76O>*p?5vS>a70&5XW8J1_$^T%Rpt@TK;cQ9(OD?>V3RFUsu z{+342#TiZjDxSjxx}X**t68IIW+Czy3kdqCF^JWx^kbqg+#^ZwvdyAf8>ya}cEz@c zUQDRz4G;^8;GMcz1l1b>5auK`;VjWlg*LBip)#@G#qpo*o8Z8PomnM2~PpaNblG)=_Qh!+GvkugT4`?;*UpORRKmgYxq(GWP6LK}M8G#YuQT^gf zfFGS!HBx;r@Ks^H1 z&1;Vlk{S37KbZkodxMoaj61x+kx~i|VhfHOHmK279o|N7rXRlhr!^Z%Ci-U2L~!TN z?eE#QK4}HCJ!TtC+2kSIX@8;GgLS6qb&Gze@_Q(MVE5;4R!wQKV1B@%h?*-jv|KV9 z$((6_a@i+2$%SU1cm4J~=U(G%3?#-8%q*$=U6}>vcNFeawgsbc8?>_&l!y#&%e}9g zlZf7%ji^&$ay4l@$OokcrQAw$(fEw4|AOsHEtj|7#O+H#O5f?#u=L3n|99AO+8qsp z%fcETsb%Zu=sv#+!)?uYR?_pkRP0|H3_-}kYLe2Sl}a;#iic#0Tn`|7Sa5!!uqoru zxEADGQP@Hi41#7dg>CqbL_PDbe1A9%yt#W0@%<_Q^t)INITPsKBHYF-FeI(k#-f`27ZA)+csQyg;y$xYB$i-Z^0ZA zXaaoDK^ZkSqp7`V)MkvqB+3(Z-9H^v{t%I*QZ`UcFkELJl@q!aw^aF@usHk1Q#6-6 za!$cJcf+8R_WaJ7Ab==r)#Ds!=3g$Oy(c84jqJ3Y=E3VeAREnWO8OLKaI{H+1OfLR zlR!dV0o@`Q&A5NQ89Ck77_8NSL>F-9^gJF{!_t1KXLH0-1)9V^E}av7QzL!%(2E_Y9!Yd@O#J^3LQbsjXQ5Qw@>_ z9wyghU71iSp~9Q{i~(U``9pZs4a}gZE&^@dy>!0tbqaRLX~H}wcj`{WRk0)Ns^UZ`8hUv7(@3f z@@BY}?Q2*lxnN+Vb7x~u3oG!DBGU@>=<1hXvO0N5FI+E6dmhkyzbH*@c#~;;EmgVl z1wWE`KqmEAaRN>8a#3aM;E0p-EcKJ+E)vTOv8I^DVQ9wZC7hhpi0}KQio$k95(aBYcZ_F@bc0 z_M}6(&ndsDOPZ&kI(UweEAYcUbf{K=r=rURi|yqMor-#WQSLJHY+ml;TvS8jFtpnC zbj;SF?{~19B-_gB-=E?`%onX`PPL3K{Z>ymUFYMwh#8BU>Dg znRU{%z|dxEy!uLv&@Z}FQ_f4+x5-8dxASvQ8h^$1UB#T`|GauF<~ z8;7)8{jt<3TBYunFVwUW1NN*<-5n;A2HDT5#=Y8o4OTLboD5dAdV+u32{S9o9b#n_WR z?2h=&aStWBD*4d4otqwdfdsjAzW(vN=alqk?AH4GcvK?y-9Nc1KOKzfr{hwFl~K3e z%2{rOmr>Az@LHO3|5_FMoCIZZ-&Y+)^60NlEp-c9rwb6yW)UpttOJSnaTV~_Yw7IG z+Yx~CKU^u4rmk)bILI?cnLEA1utN*>Y_}QkVRwp{5bK4JG?5Qi7c>e@KxKEnHF9aUD6nO9D6%#0wISe0jd}`CLYH3WH4EZnQ;R=MlJq;}2Wq(y8RMM_1Nwu%ZO?(M`nrq^ zJKlDX0q*nxA=_4>|0I?82!f)!=#+lgui^1TjbQ-Cc<%w~QnVG@(7=k+lZ3M$%qWUp zh_&5oBN6)=%u0bJ615L9NZhf&Dz^)@`kMEm?|jG4WClQzps53Im>fK85Aje&+{157 zNIjXU_xC~ZZ$lnUq_dPr3cShX+~@^j@ykFgqO(l6(U=_9){8d5#hkWfRq&RE2;N4= z*A^^@X+0vL(jTzCp83oNVbQU-!*`gZo;h3xD$CBdp^8{OO|Szy<=&}yXaQvZTHs=V zaqMbFRgZ8AcmwCLDj7KZm=I3Kzv#0DMTw^OTRJ7t+VCqlz{R)kIR-%^v1z-TNZ(!GdYSKbG=!;WgcVeFHeN7%ToOo>!Z!v!rI zh(V4wAU8EC5&X=eFyp4~m}z)9HxpJm`v)(l#fn(=&KspL1hBOyBHe8>@y3qQUvCWE zzwbc?+YGtrK4zU?AysGd<`v%`f&TcfL}#V<%_v1mpcb9JQD0}7i>?@Hu-RpU5;e>J z{iIbuyXpv9kTRM5egxH6i*V=-+t&OAvr3s8yn4W|*4pY`?F6c$2s#C)y8B#+1c82Q z?NK^^*^e>{!tHbA@b!-N;QX43q+JY`p>62``Yby-D-)F=oI2AG@T98UHS?fJv!zi$4* z?zl3K#V@-kNV}lMdLcY2t}~{Y5&+#;8e;%gi2(woww`zTS0v+M?nsET`;*q7g=xJ` zvguIpZq-x~f{p)%ih~wz7yaGer+Wk$3i4p44y&JC0A&>w1^rw#(apiGV}<@(B%3J# zGovB|Q!|FnU=J>J;4A;ut)KU68!EyahE^E2lTl{_Mk6?JuoO34c_)$X^xg@BisjVh z*JxvM5u zTdpw-4GP!|BnRr}6R&PyT|rf$=ieA_@E?b(jx zc!{?J(4wuc2k`ouGA;=f>BZhmx;+K=E!p}mu~^q{x`IbZVqskBvZrk&e6|+^YtzPp zq=+Gk;i$k=u@d*hG{RfZ8IKm+Ol>FYI?&pE1}7M&+YQ|yP2glP(krMWop+akB#;NFFw#@jS9oq z&gbo7=|dINXnCarH{Dm_e;@B#1fu1l^IBTI@9{^AwBV`?bbw8XFQAZjVDySrV@eb; z8#1Ch92Yrb?XHFK`@xO6T@}p_b#0I1UJLii-z}8^RlaW4h6?OSP2f_gUsbAMH72#O-TSI~4LaTzzyfqQCs5#-s*I&#u(iE9YBG!V=7Gq zp~ybXFRDPzsTguT9og`%xwAfUoLv}LSLr0V{l8ed$0%90Xi?C+Y}>YN+qP}nw#{9( zZQIyo?y_xH*E#pz?)UoLH@bU_{*$rR%*cqDkt=@$);AZ3&gy?0tm174)(7d1Iw9N) zh_M7gE}5^8;0xW}WUlXivy!HP%6op|HCuvq=9Kcb#KO#QM~K*SY4rCy0l~FBPtt(= z{pHU*fi{r{8p0xl@FrGxHzc+MYjtU^vniU3MFJs`Fn0zGF&D-%LE5fdWQN@>;XG=v3 ziIkinQ~ehG9acK%V)jG=NgMnoKjqkXGK@TDG>AQ3DBQupa_>50#Go-MbCo+;ydGyk zx_}v&P27(3i9a`#=ElqFAai?M1-*O=TG3!(pw!od$@mdg+8wcj5H}$;H?3hUD^j}5 zNF*gvU%LQlvG56>SztY(4-$nDCu0zI)!490Y)XMT)D`U^Gv>i%7cH*{?Texnh=DVt zvXb)xd6Qrw3~cmk2EqPby;bQ>poSPfYkQbzj@BgsoCo2``GgnmK-qO(3lKj_W0~2q zhTj+I;mS=_X_UMmdM>7hGH|27$u6Jt;a13PL5V~c|5ol2*;Tf^zojjKPEm34nm+{C zleB0m&hmX@@W&XqD+)M2NYc#>{yBpXgh9?7GLSIwIi=u8)Y-zo*{Im`TJ2e2(fkEy z_&ZFlU<$i1KjJB!f5)J-4*^Dl=IV5gL1OI> zhX^pwjrt|n9Adnf_=D&Ek|(xaC$tiy?gz=IOHTm%V@y{Oe5x%4XojG*A#rN8D4ni)l^oVFr=n2yq(U z>`Wa^g zrg1)ze#a&Xt8z4F2?(>eG>u<;RDXZK5Bm=x`SB*7T6`nIK5leB7s&TiZT9SJv67*~ z-=ZyB{`r-GTzH_X;kt5a^u`#RfTN|9W*BJM%1-OS^I(Ox9J$C&@JyJ(#9d5yQ_v|X zar^u2Gs*NGi*I1F2ACG(g2Z(2j3-%^t18wRw-UX$Jol>Tw z@q?}bjyc?d1T%c1L16M|f6(`PD=DdLbWP>N%emioQ$IjKjH(9v39zu%_H`TeD0)^V zy%7*8^8m*419TbE)QEY+1*QR)Fjx@eI*zVVOSh zd?_^@>t^Sq|B3YpFnTv?749y} zOGjKSA@sAH$u1WL?>h%{>UH?_5WBd=@@Xhpz`04-zA<>&6i2S0@taPlA75Q8*Hm>{ z#2hMHc6P!W%R=0Sf1f_cbegb*^RN;}xL-<62OvvF#;X9>Y7@z1xc~JY&P`|OF?DLg zVhKbk6LKFh2>V`L=eXHYE;iexQ%o7<<2kjZc-a!k>p5d z0nu;4eE5DB9#CdTwXzha&JV4qHE>4vN4Mvk_tdA^jFew~^`Avjy{Wk41T$XB z9z94GNxjG4Za^1w55fXS2T9;N3807#I^x<5c!e9!U+NF_oa9SvA;;JdYTw-lRJp$= z7HzH^r>WB-YyqdP*S~ABv`V+a-=Nw)s0}mSlqk-)<=Y$!ee9b*VBt(1kw@kZWfq6U zUt_wbDf@Jd3bgjooNzEq)bWRWR`g_WWCWS7@Kujt6YbSiue zXuk&NqV(&K!I1+lPd;^j<2;~v@1Ol9WvkUU`T*VpBbvrkB+&^QQcPFSFq3=TkuT*J zV6QsVn$ik5Y`)RQ?(&6`V+I@y{Cn|YSr96 z(-7gL07$`57k+`8z*3jvPE$Z0Ha}t+2n-+o{@0l8bnAtQcag(x-gMvCS&N=P-eNDT z*?%{R(np?EIXO6l4Ps!k?XZlO?;l9e^)t zcdViT=|?BUG<~4c3#ynBD$W%%ox z35K}LBv!0bUT`j$#^`g?D0H{HCDg-NOCa|c%8)eWP-+wvZkzj?HZ0)w*WxPuLXq6_ z%DHnf>YMHuz^=)}hLh^oh#~iUbSO=bBNo>*&D|q@90w_Z{ix7oLijA-N#USuQ}avX z>baB;{8Kh7pZ=-y>$l@y3cbQs@fgqe0_Xq(O8x{I?QxdXUu5QIw;Q5NJl zRrWK+4%j$$CbsxfZ8t7N){OA53AlWH4|QMgR03L8g4EdA^@rr>#=Z{>qW%$ z11%ULzl}fvE;mWquetWuxVm%whJsJBMu=B~`fW5Ty`6x;IMswXV^gJTOy3hdw9%--2MB>o8ZWYp$b z|7ndZ-Yjcw^?z*2jY~ShWHWt53LloZFyjE+w6VeXdOl7DY7Oj9*hl)ku46$QoIz zI1!0FDu7)}Z%5tx;vO=V$WJS>7*FwBp`4{pqYM7L!{u-6rZ3@& zcc3KB+IN10a8EnMpg+YCh9s+o#R48yQG26_MxK1K_bdWg%Gh)WI2wgI5JDO5a>R_) z8)z^HPJMeU;bFr8Fd=_eR$eX3&VcGqTiyndx zE6CjcxYwo0IXh}OEZfeOpFTe?v>qB$g+CHlD051_UWRm9>6&|^;F(N62r_BCtPkSY=5CO&IUG1 zw{0V%ZKp%R1a5Su-Hi5v`{-gPO!bCn+U!Hl2*Dyc#R|I)^FA+2 zZiht!-M73??o2kOHq{2OC0>N>P7(4f+F|b1Jjk{fz2pFZw-mzQkKtw+QZ(NB&^WU( z5Y+IFHhHwpR&CFM5SVBhW(+5+^jERYZijE=}L za-@qU^OxNGy$D`n9((_nn$~y#KOirK>Iy!RnV1*K>?i}{Iw{D$B zUZ7@?s=K^_80f<+$Zb~{_?j+fd2^hYoQAJhaMKekURCrY6s&wD`HCoxSb{r4?73!H zeJBoJRokNS@AG*o_^1j0+y@%AdB*)@I@olbH||pMVCOws%yWkKdXHR7O19LTYw>T>uD(lUr8%2{8p@;1K1!aM7I*3^`xwR|@k7ienx<%I87uziJ?IijE5;9FBBo! zstWV@HK}N+Gy8(mSz7P{=Hy3Ld@5g7)woNL@HimOxf5}H`#ypsoFWGSyqX8r3!I zxwa-#YbMit!^EpN`8gS4sY>V!3>ocSr)}X+0`aVbuGlqFk)tuW?}o1b!LwI{FAm?IL+-PoXg8DTgYhGDgCPpY{3U-&SB?L-2r~( zRUwO>FQiRSw*LOaSlPa#=J>OU(|x8qCP)Im=;jr(`3Fk(yx(m9DmmW-Med8J7|o)~ zp<)ce-uI(Z#|YZ9`ezK%hQGjzxmrh2tT)U_71TuA-FeN52n8V+Ry{a$?w#r;i6d73 z&5#ti*fLftj946ur9E;#7&|*XrA1*x!QE{(veL+4fe)f)E>DnBoCh<}ulob)YWRk< z-#LchF+UKL<~OlolJolOWi|^PuiqWNTbt$!)6U(oHW}crZG%3-a$3Qi*F|N>hVS_Z@A@M2`iL;+657>>Hy%N3_PCU>PiL7SGZBpRg%G zxcRW%hcZDpFB&ia3y{KD>-4pxbJ}Zj2m1pg8H=LlVBR71foP+U74W>pl1c1P)s&Ue z0EK;9>d5{`TWy@|Q(_1B@ovE$eM1e${GMC5=RLW!C5MaSs$g!M|ms#`V(cdRk*E*JA|*jY`&;)%|^4lm23O(?XIE}gvl(&w5|_W6bBdb zE#)+|3^MjydL$*MsM@X;kma4b?2PC48||@?axjy>XM^a~&Lh8_JAUCcb~_P7;;ns! z35GkF=vCGori$Fp7vLEwt)L^uwaPmz4M;)NYl;tET7sbsG#ulF_E8{9FL@o4N8_MH z7Sr=Y^n%Ry3s&(f09d2` zh7izJ-D5|^#VDJO7ucLAey)H#-MHG`>K6}~8`c!@a$wR_3bYT|NEDxsaA;n3zwYEZ z=xP#n&_5qR*hx){N=VbR9)+rE>kv9qSp6VDwL`)V$tPFsuOMf~e!w}57$@(QQv*x# z?!TFKen3$^e0DTx^R%u)+x6}TqvBnS0EE@70!c%3s+>P9t*vs7t)4T+dp4Vmy$%Fz z=;mplA_W!fT<-N)>ErtdMvlEC(-I3OE3;20D!(dZJ!jY^`lYh%npAO$O(o7y@wf5= zwDx{eM^06Z3QO@N3!;mbR?v!oXg$$7j=>{n(&_K9^&h~pK`X`d}h%QkYL*6 zdBWek3-KX%p}hfj)!(BjK1%X@dF~f8rdlGwq1U|D zgez<>!N^v9ipP$%PrAdRUe@|HM}R9t<$?I6XmQQYqiCg(rHIaL)Mlv`)uHzy%Qc6! zq4NhIFv|(}^}1u60XrkfL|z!NzzEGFhFz|rk7gfw;C(JluLS#s=u<*l^XhbbDh|1gH>pgJd=Lbu=V;;B}5!?dr$osy&FuHtq^-TlF} z?1x4^P!*?+-m!BHR5zMUWm{rjc#dyy5j{fO(T)^vOUx*oG1(&!bJQ@_a0TUok$8m7 zmwwf4m!gSaXB?h`^)OLVCXEJFUs(zZrLq79gpia(tMLj77DJ<@|G25%#^0B-(V^hI zA4#{v;$bCa3<4VE(Xe<@@>Ekxb^HPw-S>@wUPQAaEeM|hWvNnBm`%iUgqj6Bw_xr; znT5Ge+R!fu_8wyeg?Kll+8a+$>oj9AZ%RFnx8;A_r2SIz1-rs3$^+!&q``dQC&L;+ zdlZ`&Dw{hZhS`kM)eW+;2TkCzW4GPOenv6wjl}*Xt!dZZ zq_=PeIFBpJ!6dzHNx+}c8n0nnr-Sv!GDtgM{OeF6DM7>tU})NuJD3TvIaJMagS(YO z(KcZC>|p&j=O4K6fq?iNO7b+yorBxBY6lY1s8#oP1S2yI8z@R{G1&30VY-|%y!r4 zJ#V~O2qAn)=Is6{qe08I{qVH@EmyA185diw>e;E8C+7;t5dxVZO}D8p^dhC($&D@v zvEg%^RC^BFMEey^?1@LzG^)C>*d+^K%Ijh~P%Qb(SSQYIs zCMxIPL=4L|#kG(M!BR*L`F_CIP}o~_07Keb)QxQiE7S^HvTbKCjO5svVVd4P(TOO`KOzc^{ME2?ZVJ;7=gfz)s~qmJfP3_Q0eQ{jL`mE#(ER($I=~ zndQIIZJ^m^$Z-i}HV3t+?&xKMPvKt#nK56Lae%hV)Q`5VRATa#SAI-asp>TH zOG|?!)k`zkbcDD?T2%a9uyphTLC!aD`6x*_SI_*gidaLM!dFeTt(4{1(ars zeL{M_Z{@athe^mt@W{%iv)cOVF|b6e1rJoY!3%hyFSwir7vjW}w5#*Z3PBX6P~>;- z`!!0ojne`4cAP^wZ%HcMV10FL%YsmMu`Vn5?bW?cvZtOKNZl*E@~*<_~-&&|h9sXbA_f;jQFZREC) zvnh)NP;w$JU{_eE!CeOkNu#avDf<}@$lf5654z&%9dh?va&dP)Js3D7`iN85p@(Q? zWiSf%lqp6gw^SU<=5gZkQ-H@!E;XG3Qfi}ZUM?NRcl#hHQlmC7AfO}LWM4*~Q{|$G zxSyBfLV{$rSRF+FsLYA3BqC>%O$*;ldOF%Au8yxz<97Ds$CK(B%=BRVOX?@tb}!0V zR6N4Qc8vvNl{z_>6k<$F6bI1*^U-X9CUP}z;JXB!2!23Ik`gvb(!ZDo(W}D2+5JUgIpr&YJiOG$g&o=Q6 zw}7|_62Yg#jeqUq?r zOA02zdqoVTw-s_!RXp;}F5;sr@?p#%Ng+QXM0#QD{GKD6dKdBem8oM53_NRqu5u;f zDUH?aKf9f06K93JE>_x3idx5JSf?nVrG?uN$zt--=wl`GK~^nF)%$m8$DUoH_EKoF z^Uf9le_LK+`s|0Gb<&jkf(dl?e}REB=4}0i-9Dk^4s&f( z@&tV4}AV2*HQm zH~oHn3iP-c&D1s+TA?8a;%oC7wFs5MwQcztWOwfApv1O*?f8W*nxG|xliuxp>&&$q zL#?%=359ZdCO<%9T&5D~%WLHAg_JLvQ-GH1JFP41~?cxiLvsamUknx&?y z`=ejWNl9Pc7{!zZ;kiB1WQ@Sark^Ny_Qv?;=c#PNo)P3nGG%omhAr!|%QKGmbu)mF zk?wTH%~0BaF9V+-d9?!;CqlF!m?#4W9jV=Dgq)7EY;4de8MQF z)f`+7(wBfhDY3FmU9k|j6C*23IE3cCW!wV($@QS3+TAG~?hAbF-=#6|hH93nr7G*) zs1p|8TS=@l7ui=xr;;_7K};$_04Ti*l4IWn(?W@dhg(k!Q}T0!;EN~7v$H-RND?d# zi6|6H-r&yOn!rr|kXm?ri4Mi*n)Myo;Vg5cP`47LsvE<)P?(Wy1t7>M+Xc;V;r*yY zVIra}$$ml#GZY?~aX{eO0!8X+*@R(0$8EfN^Bjo&& z!!}LQ9#O@|_`d;G+WTEOug|NI5N`3HqWRvo+_`m8L^&^^V<~-1A`|LEp{@adp;Ybi z*NJ*IxV16^p;k9RK?}4#pM1Uxh4w1RhvAexx$2I9(#hSfD$g|{Y|Z=36$m7hmxBWQ zP0^vpxD^+X1*HyJk_t(ZS5QLXnL5GqOk}L6U-k&eINo*WV_{KXJsA|iomGPx5FCR< zUM`YPxK37iF($PLTcnV?TnlT|kNl7{fsoxK#I6P0xK__ZJj2U>-x0iFOk|=vn*75; z<;oC84#8hS^yo_+>T+4{t2~@guU;c?fyp); z7ep`X{ysg^ImmIa(5GKi{@HfQ`s3Gzf7i0V+Hc&JI#lLu_%x~5>kvY8--I5jF?YW# zK?)pmiFo&TruLhpPJ|qv7eoVJ9NGitF|8AijfjaOi{jnu4wf0kBEqghA2}CY?TMlA z^0!JU!!!&psFG|ckTNAQ`OWn*qrM3Hnc#pvnbGWbz;o#>DJ`UXJUE5c5G zo=920MqUxK$AYYo&z|N&>JJ~_i|ATm)7eoYJi+c3R1Uz(SEAJ2AP<0B;CT13!FX2+ ze1v_4v(Ew()iZXY>{#gEdtR5TIH1OBnQ=d8;?|ZY(Sy3F2-MW7VT|ez!A4)(xE(=~ zYBb>Q<82R__&1dZtXz`A(;fYL04CHp$xj}N+9?OlwuGWt^rs4jpY+Yp~9WV;d2Ced6nuRjD3ot z1UTWLwe4o197zanH6vRen1*OalHTeY?;NGOu2eOZtHl4)71v3^`!0p0^Rchzyr5Q2 z<6(l(4Z3Y-Y?XvyFM3-Qx!iD!LJ>R(`~Z7LQo1WG0{t%uDbDB^irj8bC~D97nn>6-_}n?@^ut8{ZxPd z&~nhr4yI934canZjyB!G4H&-MTubCMgGijPj+fC}wy;l^v;WhI`HpZ2cHz~**kuoZ zCWoSo6loAN--F-$SXxv$v^2Sq+q+BpNV?Z^DkNLV+iKt@asI+H8UrASWT4SwL(>Jw z831wDUZHSXVc@ni1R_Gxu&nEBbjMz)UFAF!I-@^l7OOb`k5pfh#I}JVCoEBI%advF zNeMu}EVEpK=pzzk85uOo8B6J{v|Yx@ka3`Qg^UJohMF)1|Z75 zEvU(kRmxQ(06uDP-5U#@;`g}Lne$O62p zMh#1rdq|4%wX+4YMqh!6IyxU28irLwc7k)rTv|{5D3}2$^qoefqyEUsBUR91voe z?K&Lm&;o(pCbCIhPX7pGWFh&fN|_;YbeX8EeaoD}iGTgzZ66N1o#AnRYq>~gu7X>@ zGohOIFJd&UIWlkU8-#LPjuf=I9sc+Yk7_A*Ii%hG5q>zYmC)Kq9C7l?SCxJA=8e4+$qhKqGv)ckNiF>A)31~qyJI{M?b$9go;lb zYqngueO*0U&pBW}z+UoO_@=!1OmLM*zy-HIM09*pi{>bSZ=SRVcVpV{A^?P!-MFed z)KUM+qTy)0cU4S@baC$5VG?HynD+9D28%dV880L|>T;Vn+>SSXX%LL-4O19_GH#If z=K{IK#KGWSpXJXOiJNMV?1izLz?_6swN&NHAl}Kl7FwQu^3Q>aRN5>}n{uNB=fenZ zkZuaSe2yigt-Ry}t{~e2gFF}BDr-9$?BrilcNgyo?SKFL%EKs9ZG@o;0sLKwWZ&GlHFR@#sPsqGO&Mszz;M(#at;ctda6%CAe%?OZ)lRQ?|A zd?mEWpJv;fO&JrU4$m< z2|R(y{A=cZ@wp*z9$Z*`8ewK&Rg+BpvSN$nIGnb@=p?upJTkXS_aduiIWPjPPNkh@ z>ay`G$`Zw}>ELwDZo(!uvKnm4JqVa--CCbe{TK)p4YAryK1juQGJt~XNV^B1HhOtW zWel2lY91q&e*{~Qdh@cS*JzKAZ(0Yldf-L?!tzs1FZeC4>mu2iv879ihO8qfbe{+; zVW@b7JroYkt8NE%Xf&-#cg6eOxyW^xE+nGz$y6T9a#0xPV&^parR)PpsZ>!tFZWRJ zJ9ZALB$@+@cpP3dkn7Pg9miqDr>ZVk`Us>T61!kNP1ba&@@T3P7P}PXT?!6o)s227 z6~pcD1e@A>oVr{xmvVC$?$99Iu?Y%}h~DWmXawprec4=K_BYX})h)(*O)FH-!7okN z+=z|JdXmjKm1|x)tY}NbC6pyWO;NeOll#xk*r_K=&I#MXl-q&aszos5JYM9Fg~pF9 zBA1$ZSKTSW4tn4D_gFo#%yB~p=iW_``@F=R)9#9A^^er@kiZ3*;(*u%A-Kof>CCIt zR{lZ6e?RY^7MSG<<7Z-dRgjIF7S0mHI0%sq9witQQ}f$ZoU|ppVHcO8mew2_T& zzoZPVQgo3`b@F4ds(J6P|4t2e3j_PtHYGNwPk#pX2emQ$I;y4p>~uB?Jv(^eBb&Te z)@Vm?a+o&cdLR#n?kh{wQVFqMll>A`mBqMbKCAb86#km?im3Gfj8J6=2f1613C^`v zmCu*rZ<2>haHjD45Xc*#96cvc8%xvfzB#~vr9tofP!M5TTU4;ho#IVBcY>oX0^nLX zZn;1Li66ZJ?lDs?g+}VYaRaI=OLs$k7)T;88KPT#Y9RrR(<4>TWpQ;Y6tm^x;1^ zUt3R<#&5?ETZ8fHOiB@i)yL?4J++qE`{43+6847(qXx>r6zSPLL*DM5G>PUH#14D^)s#Pjf0^bdo^T11$lZW?u1c_bmc z?H5K>&_$bZ?y#g3a+bA%wc?=kVamUZOUZ20e%#YLf6_YtT+_eOyG@TH@@HAf-oGPe zD#0L}m5tV;yS}ugiRrbqM;2QyRB1qF?WNtqMaSU)p(`qW4>$nuzv?Seb{>6i%>Xw z+e;CxZ;Z`Qgf2(*>#x~s+_>KK`kwy~ZHm;w1)kOI{iRAcDF=t&rVDPG1G5*R@%No7 zNa%ol=;0Z??A&p4vmJnHc|BYdsUE;X2h?N}r4++EvYB7-Hm7F*q2Wft5{p_G-%v;Y zqcj^~l4?6oILZ8gQj^yzm?4t)WUD`9hWrD!v-yL~F$0=mC4W$wHGtAY#f*o@ADL~g zwTGd43J<1RzK*|VnAy%_Y|Cv&;mYzJ0kd^*^{(rALYag5^=)pP<4?>jlflp zg!_00=1ui0Kgd`T-55EB24u#8w&Er;rUQy`dyM%vZpa$r0Udr@I`#x7S)@1Gxi~v> z!_17_x5Uoi`8)BeyGiyh!L?$$t~sB~e@pn#+y28G_;4%jW#A6b0p*ZlCmD zX!{bIS*qZNECLp=q=LsCK4lzpK$jP$l7?!6Wgh$Q(CkHo{rJAm^Rm8vny9qAS?j1)7?1h^Lv7=#}sk$w7GV zZ-%?i@ArLCe`c=onyf(#)l!Bv-I=m_c*j@v9^;vuYzJNs$$Sm;yZdfUN-A@MkCynz zaO+J0(R8&%i(T0?=BJJ@M>am%)yok680D!y=SS2sOw6=lKEsz|2yU`-qWl(d0L!I9 zrK@S(c5@wmxxlq|2LL6rPFgly!DflNZ)Kd&KBcK86}QN;HTcQG>GTJ8{BQ&J}&c`V}MRP z7S!6J_?HQ_&W^{DOKI-=cisyoYmioq z_yZ*e>~2+YGCEtEKLw~E4p5n6NPCkIJaN>fu(g`CS}|I@lQxa#lykvkIU*0)*5tpC zslI*4dp|OO^LbBBu^u5uHv(~;$I6H}yIJKW_Dg$9oKolm`LdL(qS%OH+MoIqsbaqF zl{Qyq7T|Fv-iF^9F+_-R11hM_t_6ByDD{mh*7{S`Pk=Fqv8Ci@Ew@zP;8ZPL42<;` zWBrk(yPJ`C6SKF54QmF z2i&%^L@{7WTE#xbo?2)b5Hx0$phz6I9XZ3sy;a}faz$_1_^S|-gfb2g(-cAh?=VoB$mY)$+q6gMu= zRSABH?VT#ktP8f9Z!`68pf9RlRAg9CZnL#Bs8_M--vHvw6+ZtBnEWq^`=jLktGxdI z1SbF3#s4Rm{Eu(@KY_{0iV_lXDnDSdq6|I9e+wr6L-78Ok}vbWDDQve_@7`hEBpTp zCjZm@-+{^h%P#+)!DOcYl$`$)OlII<{Rd2D#Ajgnv4lC8*#5U*vV)7A^AD8#4}Sb3 zNdL5)tmusFY-|kvcZ~ACZnBY`^}jx{#Q!G+*@Mo|!0~@lkpDG%|Hos;_Afd7uY%0- zqY?j)p74LQ8QK5CAZGb@DE!l7`Vol#Bl=J5KjQza{eQLS|MUI-+QyG>{J(6S>3@m* zUu*yOt$+9S^C@N)wjZDPKbB1YnZZB(|ICT`M;`vklAYxr#rQ`#{%4JUmOpXkpI?Xh z=PNV+Yb5_ijO{1>kBj`z>wn~}^Uwd_pJT%OFU0&`BkMmL6(`aQ&iEGk;P5@U=BBcFpt*E}*d(@-G|UGEFRWtyOh)K;_G-OKqCyDS*wInwpOq zS=y#p+ODQ=YDGo{0QRh`U(z&HGQR{J?=TS?41YN?XrTC~M^r}?2C(pN56`U+faBX3 z7#p4&3j)wLI{~YIivggotzl|?KqVnv_5!SSWU_O915GW?&w%0+6;R_-l2t;<{8YYneX_+1}Tjln-&&n0YLw%r8U~QFyDop`ze5? z<}vqu{)#7Y{4ELrx!&$IPtQ09WS)+G3IJ^ljr|MO)HL@y(CT3C#N6=w!*1Yv{Lt^g z4=phwqB8>FVZGruf?A!4rIdMlt@y4r2s%k!-r8UGwUO-*+Vs37cm4B3QyZ;%%h~7y zajgNJU>c15V3L_?h8K!f{CQm_2A0pw1@_$BYZRR`wn9V;KCxSM33%3uegDSTjp(XE z$EPB*RCB|2ih17KPN>hHr#SaP!mTHDXj%8tQep{f1p<6~bAPwO(Xl->ESWR1$QJt; zi0Ovc9~7liAwHnWuboj1_9q)w^6ut=gxec5o;AWF$uJzy+)(BH`hc#>*~FbN7}NuZ zMff?VR>~tp#s+A1rG%I#Z`$o>l;2qOboqR+zL_>pRe0klaOI~vY8_7gjh71s`3GDJ z%>7MWD!!;>smKcJLbW~ZOC^2#=V~ABLH8gCfdFmmE7g*=*d_)9E7#?qeZQ#yN;y(~ zZQj$WocA^(x(%`3o8z1Cm^m7kfP-H?VO8k=t9 zxGcHFvWlXc7TlFbwNWeQ1BDfmd+9WvcN+5+-LN&+iO~`9YF{^|O2QgF9B844Xqow^ zCvY3pf5s5-vIbO$;`8YziM#dir?&-Pdy z=jFE$4h;$fs0$;TpMCW(awy8DNzKmBavm z<5&ve6ft`_?gAj7so3s}{Id=yC0-`8)cO&gze*wc1S}XrPe}uM-Qh#V8y#}GeJ&CF zvIC|ZgDbrH&HX5L3k$VdjBJw9a&jp*j$^gp z=sO`&H#==z!tKl00{g*Uuy;PIwLa7mAp{B~tAQTCHJ6NwrA>t{>W zeI>;h#f;#u5TC5aAKaZJ-y21M(FWqJczJY1yr|UuuDND^FXE0!z;lA~t1}xwlRHX? z*V9GNH)srO`zXo)v^9Li-_M1>zKPd_Ycx-9cc59rfv$7k-ZavUrFSPaAlefp)sxIR zX{y?rhp*Oboeo6R$DURGWb7cHY-f`bPb6D@gTOWcRWe%ONHfw~U$_`_ku_7%@F3JN zaFlI69?BpK>7n|{WD+2(kMKR)j3fwUlfP@T(#4RQI);if(PDn0By66d;;z`1uldXe zj*u!;0Q?>$ds`If1v8OuS8kG(R`TU2CeePlXadny>|)s|Y-C(Mm_%_?B7#r7HW=p6 zIdxt!2>4~A}Of1;QP z2W2(m8TsIfWby;&Q^QOCx2HdTb2FM%xtm{2n#DEH-;7S-Nf%kE&jmu3W4fi|nf~G(MZs(@VFUzFI?I8W^%BuB=powSiL}VDX%r-eGk=?G0VdUS z+`?7Jc1Elxv#)2iBD5kHk~P-PqIf(JEIpbV7Xa?c>NI&DOg>HnHJsh>(C@Fk^LRcS zb4NXYHqNARBI=ec2*ZFx>CusM+kzLz)89FoBQIuOBqp4ir#?asFd_)yVbofa60?5j z%T>YZs&&S)%iTAT^Kl>#x?-Q16*M1Ya_x@abWF8X8T^XKvQU?PiDH}-$D4Z5Pve5$ z64W$oM+e1$jK1PTP3csyh3b#cw!rtQ!JrA~E`fTCXbI$wVYVX+NR_qf;1_w_G z9#_2F65V6+tLsvgn_DT);kosxoA*O;e1W6}uH!eDynzG1!TsK!a>eD^2@=CZmXd|i z6M2=Bz^kZ>oGv#wh=dXAjzB=8CtgAc4Jv3f>^-S$e<>Pda;S*6oaCKxbz znz6{+OCi=p2!0_Hdz|j+E5HxGGi6Mvkvt9@6%_nRr?8e=*QMyN<>H2|es*Bi3BC1e zA2GHGoHH=?%9-9x0{{0qclA>L3Mb4@hY|q@h|h|~rdBIuQ?0gRp3py}ej>LVlV^AV z_!(;%Ljz9zGJM?{qcj+@qr&Xs0nzogj@Dx$NwT?o+U`H~oayjL1{-Gags;?oL08Am znuC8+KJM&d+L_etnkh364Q?@v?eL=-UIL1+`^u*~n3cut9txY7k*@m#r&I;KDNM0v) zT;1K2dY6F(P3sgQ0}Byr=j#!^zd&XjPd;Ddk1o{>5Nd_LSZ7LmPQ#@V??&!7bsvCF z$iMW08nZHCaOW-9kl;|Rq2HKu*mt|I)#)exI8dWH#6Qn)O!sG(iXD7>Vn^yF(v^N> z#WcWF+V37)E_~5-qs>}z0A+%oW(%R=@0DgL9lBAjis**4kSETOiCI}9KVWo)?-pvh zSm7ofBEwig_=QEQP_H_q5?p+3WsB+pHCflW!If%@E_x_}t#9%UlS) z%!fk#Ipw#IJgJ=?uw%T$uZv%$hFUve}O9E3hkJxCRHYsLI^g8rA(r+Cjs zG~iC_J|vt(FrhH^Z0rww%?D5${i#G9qci|4a0r;W?J?S*hRodZR#g9`Z-vS&s@Mqb=rs9t;+X zNdcwSDwL5%3!vb`i+7uc^xn7^|I3qN;>fgdfgM*f?Ah?-)T{ykD^0iK6<_7}M;;_X zm?Xbs^%J`{yHFep_U!IH8SyW|Z1DwfZ(`3nM`>=di*QFz7UKw2H$|1+0eA>$NWw9- zJfeu06D(s(k(E(RhusNx?_%h*?XJB>8T9M=K~|-No37^I1MV%q_YB`{$#d6?@Qf9+ z45s6x%My`_0*CP zG$~dQ^oBG9DiA<6&6WuvE2C*Ij$K$D%PWuQR$v?hgIZ6jr`qv!$}VAR3s}lQ-!Wr3yn42f+m`>sgbx@b0-T3cjT7% z&inYRr`a72gLw_I&?p1%1}koSwYDe6Z&_hnZHXo{?`rSM^>#nxLnqZqC*76mboc)k@v`Q> zMN9z~f$t0|EZ1A_QXIquZAqk>wKfTbDY%58u5GTzvPI=CpGh)8&e#ru^SWa_{5~qn z9`ac^a^_1JJi+61-pqU*zM~da0p6LHpym=QU2$?6C1^(DC)r=p+6;fQQ>eUHwA~f!=`qpsdU(tIfc%KlwAY>CK1^04JgkIVjWbv?*kl<0DO z`!(_n!NBUgfrR7REOTN#R&E(COJhtS#p{3*Z=d}DU+elE)m=r4tAJvq)l}PU&8O65 z-aAr2Z46p19NRj8lhhFI%kIP$W`II1SXu7EPW?*jNoYE@Vqsh(@uBDLh+0}M;gPM% zrofq^>ZNIbG;TD4c#aN3xJ1mx(~@hHdnRF1HfH6a5`4O`A?Kq$hfo#yqtYoJ&cjiN zZlL9!u2co!led+JH!iR;*xB&Fl3vS1@ z?X~fqrsU2~Vk6r&4TM4ud#lQyG=)g(61_k^qN1ccMOeO@`O{i%ul&s^>E7)CkAEoK zMPM6L(lYiZU6qshWS}R{)bpW*^4U5patkcuuehTCd3mPcaT(Lya-NXT98p!=e}rp7 z%uY+5$Y-9S?&4av=F3%sfBsw;8WXQ+Q?9c%aK9V;kqrk04au7U*KFGNOW%b^Vn<#Q z5YiW7Qh6z8CB=^JOY&#g6~UaauhOZ?Fu5_NFknw8jRuLA9EU-ayZ!KNndid2Dr5z? zJoA6rj*hKaaTMgEJNr#yY5cXXyg)O}CXOv#kso`$mI?D}?GT^<<92E!i`D!1IO%y+ygpM0pw8}>-F_8WuTQvqKqg|>%t zGyT^LIQ)QLDLz-)&u8V|D{0S9KqZtlIgpxs3fT=aoY~vDV^Chy`^%T7S;(g3 z7%8y0%qp*B*UQjQD{6c&u6ElK84|$k$|hoGm@s+~&}R?JoCvIDOmAt2)7rJ%PpHlt z%d_k%yun!bBRD8&vakBTbg2##$*6DnNsZ*hHN1}@r&VyDyPmzjh3|rGN@tB+K;xks zl>`DnCUV-_MzJ@oqUy`}8``RGctz9AkzbwySzkfFG~-$6Zdq^~tA!g);5A5dR09D; zlNO1`k^x*oP!Ood?cfve3}MnOl=AMF5&CNCjL8|{Te_IM3|mfM0U;w-X%F!=**LHO zFHMX!%OId-fcLq_sgpWX6A-7_J2y05uD(Gj4WHFInBa~-fShOA?~Zy%IDU%|M^0=z z9ploqDD3Pp918%2#dCl*CruOH-O- zPtqcywHG&oEcae5MT-g*WEseMxy?OE(rW+u1Oylvormjn<1uqd*V-;F%{xB6$oj-S zrU0W*XCTz!y|qcsAhKvAKALK!qDCNkIKECa7K(0PwsRiVtru+2Y)OB|KZ zk&H2b=CcpD6%>5h2In@9OJ{2;VXef`EXDvujKzSPxn(`7QL)%hv266C$Q;?H|HT(D zDA}O{uAauDb51Is!c9O52xQ%aN4LNGfeb-e-7Tu378C)-2%@0Nd~?ULaNh5|qJs(k zsKE$N>(Y^>7zggp0W0@T4h5^B#GRQgPF4kiZnNeOzgJZ|D5EzjOR8f44z&lz^gfF` zpq6_3@i2`6-$*bO5vTuV!4E=znlSMG-V1ZVA;d4g(~(djUNj~drixB9K0Il}Gr$5A zs|D+QF){mAMaDksEUFQxJYOiku}n_#6>hs-twDa<1AX?P)9`ht+W#|i zWl=JhbZF}(KedzfhnO7f-#l^|T10t*T{1-&>H9~f!=;C|gSM&v`l(JGXbp|E$xxJq zP$dt(qSyh9=#?!O&CQI3OciI=u-tNUd0MbFkv$ED^>fuk8u^GJ(Qri$ zNB!5Z>(09f;HbrKh8Ev$!#52}Dd_BD?ZF0a9GN;8O~9k<0h;wYCZ_F(u(l}?)m%Lw z(|M^VrqiGGNFZ~}yZNIQqq^nSE!pD-I9IZI$|$bDFH*1%{&asIR^MDR@fg7<<#BaR!;H`{zkI-rDJePyaA?^}&3KwVPN+11r{S}F(-M%bVpPvxXy>6fgmgywQ|)ithK3{%Sb2OKX--YA*ZA`q9U1o_vU}0cqOIV6 zt!?=8RPIrhGwW0m}cn8(?tZnWGOS_Ncn#L4j93Z}JpwGPao6R7Kf zA&LEpa2_uaEjlHFei!LH4>z}uxD7|7?Aend(^3XXs=4uwr0rzPPDI_>*=;cgA|AB{ zqN6p8>4BCu|CZs5_xQuxHBkZ37&H-c#vh;Rlgbj<_(*`-_#c6^6W)!kj1R{85#5y; z5iKprPP9(xqRVOuKN*TK9Hs%{EsK|RXuJFp*=Bd-WOj)@mlOv^BkYQ`fu3raLK-YWIK`8R2N#cvh;TCN~msDy!o`GJ3&%U9Yj?IA9k*O4ww!_7X z)(kU!K{M==6Ai`UwjGo)c(qVOx)qltf2Tru?K68qK6-TdA7Fd3siS5fX0~@sz(cE8rn1NJk9CJmq!!-O)MIFs@g-YV~t! z>g#$P04`tAdlyK^;qNpxM$IiivjC#nGo*6fU3UPPf_6=D#mO{yB3(}~f}tj!wkjV< z=4Uwq3dkot2cxMb2UF4|;y8ohp1#w(EVo?GY*-!>qDk0f%vPbD7Rf2TM`0!0A7N7C zOpC$)D+@@JCnlnNTIuYQC@2o4wLhi~hM9tT2?2)#o-*;aYyuI>?Sv}Anb*8!B+X-~ z@chlH!0T5AlF}}Aop1P8ZHi8OEXE5%FJLV63ju>PWfB5@$>EDgIaPs<1BnPCNW)R2 zv`kgwTzUcKb*#3LOaEWQ-mM=t4x;g5{7#T~nmDd#*sA3ch=qM8+B;D9b_$;;xLPh(id*(E2UzY)bMD&CNYrVPnjf;?5s3=VXNg zlm%TcR1mn97AhjPQ_Bh(X>Y!`g3y-l$%{ag)Es^Rg=Z3vkhEjA-hNr7ecinUgkSX` zBO)pPv4LJlSS)?RPM*Z*KCi`w>(bw;eWa-0XIFXMtxZ!?h70J6_(BVU`~hdsvox5Xi$ zLoyXSk`o8aZ+F_;C1zjroPfIS*@(vY@ksGPIyjyQcrvmM$g9?cFsq)C96^G{P^_aB zF92X7lxhBQWl_znT`hDXOJ%V0Z82zr`8&%VCAv~B95i+;_45IG`J$5vbi*H(ouUTy zMWe|Bp*S8Oz$^MxjZ9POr;jDV%~F_)t0 zM6%SxZ6%n zudEunHj@<9Koo{lWiYk-CLL3X*!#YI5-W*)=<-3%j#JC(wul4HQCF zHW^szfrqbf;sKuwgy>|kB6nohySkK+EsJh^J_8*tZ#mi={Yb<8;qo~CcQ z`I}80HhA)t_-2YVQ!=9mm65-gp4aIU^s=tHso?T{7S# za{8yuwvY(4UC9&G389CC3cEL?J!J7cj>Eg=O=NPMRS6m{XmVr}O9Ku@o7T{vY()t} zmSo|gpPUyjUJ~|T4iCp^R(8fpsO!ldYp3Imcggkn;*S<>MSdbZZ06Z4-$LFLcGT{SS2+D$7-g34VIsqv2E^tLKcK_~CbX*&~|SpGv^FAF%^s zY&QMPFl@N$|*^eivaL!`%9*6>LPbd;bGF z5sP-@{@(YQ70#E1yj0zP$587UuNFYOJ&M!4ScPYQ@$}DyqMDS_dqL#P49K*sXw!q>8kd=}49t6oQBbH#=ip+c2Z!C| zw23xkTrJ(GdHC5}J5dcz2C0v`&?`~v^at%`Xcg}~<4}A>Dw~4e?U*(voR>2_KU&6& zE1ce)_6@~Jk7njGZQO)$7DCuqZn8n;qHnmw*mT^Rn0=R~i0s>p%4w@}7sPbQwirf(g7{`L>iOmr*C z%^G(|5G5vh=lcU1((Rn_t6O*O$XA$v#8EF#RMAa6nJv~I@k|d~l z657dzA?m@xO-20fXBrmK%(6smPEg2nzYQ|iq9kp3;sa9Mn&ODhq4+x;S`ek_TR7EI zsG-06V-l9^0rQDcyZ=gp-S&KMspkzLeEjwh%llk?+!22nD5emHRst)96<&@W903w7 zekNKW71qLY&)a!aEwP`ces@Rs%|b#iAHJ6yK+~}in^D5*zIxYM786DSk$nhDahBp8 z0qQ55n3o9@W4_?<-BMht&(9n=Z+F5-zn(9)MS{vlEsx)ijPD*+4c*c+u)EO=Nbbm* z3&7p*Lw-L`M#PfjAklCpX~El5@FmW7>}L|{UuPbTi)6Pu>Wy)*Ix`j~Et?R?DmTZ0b{1U2S+saJb7mR~PJ6Hs4lDe9#iODS6}y#%`ziocACFEfH}~4~7y@ zm+71OmI?+Int ze`OrX@M&u}5FZL=SSU&$?&2?=#s)5;;H4UD8w0M}Gk4ZPX4KeX!r%dUY9L8eY&n(S z+*AblQ=}5Aoivu||J^(j-6I>1NUYKWJV3Pw>J7Gq;I~lH*HdeOZHdSiDUpA+`c}Pp z3bi7P3DeM*i3J(jW~P1jw)BMoJ?Ce|PkO0`+fB9VpjTUJI=PcmX6%{MuI|cmpt9-4 zgjO?(goPB4bZKvr^J&R;$foV|S{3Q>jUNh->an(*fR-Ixohey&=(p`CO>`w9*<1uD ztK7JfO!Y2xUV(kd49P+Yr%m<|l085h`v6x)L5`NkI?v*PbcvV6S`O}>Wd;qKLAmku z(aNf!$Q_Zg0XK=SV>4Tq8e$t9AM+uajZByv$CH)1h3v{ zs%4s8V?Y7~+}NFx1NJ!nr?x7DAI|wf(D_B3(JwpU8KVN;wmavWl>zP(Z3L3bF?v>T zYJ6k_F6Lk)lNetyi$W!*ymTh}5G?~6MfdqSNK-*M;gB@<_3&fM#d&%e@j&*qN^N}T z(m3aixyg(nB1JY!L;avv?C2`#X>ob^KnR1D%3hhA;M{3Cq|)Lo$Y!FUA{-&g2p7qh zXH5qPTCQt$bwEx-1z#)iS1;a|D`krDa(VAar(8 z(hdW6ckF$z zj$m26SP_@>CSSl|n0`~DBIxHWx8Z2$dPjbbJ60|1nsk!L^*(Y;2Q{C^t+X3UZ7ZLH zzcKYOP>ZXbuOh#^^j}#wLb_!uoNkD=v8PVyR2TSPR#Ye9u>@9` zJFmG|GIRzi6NomTl%N4zCF546M{?OfI3d&7fL4X1GtTte)YUy)8wJ3>Uk*oQhxr0E zb!>)LqgcfMy2u{O*2}JpHZ_rupIV3B6Vw0x?7mA1zO|7>X)a_>r&~LVkEf1ME@sW3 zM#fSE9Bbu`YG)Ig&uNe%+Aa3dEfOAD@K7MUyE-lWb3!*XP0YPeqcN1x#=N0zQQk1s zKh!(^_Y%w#W0f}w3+L`^bv5vTsRV|@;E`Zexf)N18A3igj#a~wz3btwWaC525k1o8 zA{a?&b;r-Z-+WyK%}bex6`6yC?VozXE{pQ24 z#oL+Xi~iI_j^^S>1x9GhfTRA2iY^qY5zM%h2!0qL94O@?s(h2gblVV4zh((siHqTD zFg_e`u4L)}ueB5J1&he501V9n70rOdNqlB%tS*7}#=(6}ZVU@xeBP#T1q+YB*80V^ zrSE_^FOLESzMYB9-2$GHaX`i51Y{q4ol|@2>VNlM9A+<=t!E{$61^1Xvv`xqqVWE4 zgmUCy9d*6p8-3J#N$2?_4Y^K0r?|3suMTzifTD@Jfa6^&ywt^Q;tN2s`%caxSO<@t zp)SUaX@xmj&~Qe9qPVZ^_BE}h4H1miYQstqV_BwVqXCAveL9^U$glZ_M+l%Pv7qSy zWb!;a($KEPU6aNZ=);^yECSro3Q-^6xyC*)gqpV&jn}%+i;OtFBs2X6Tv5M1EgJFr zkfw@+RTnJ1QDKBoS_)@D^=_1oCkB7rPnH|w{@Pxhjxr(S%J3Upx=D*w#D<~g2F55D zqUc#>&OQ0n93fPTzRgMOA-X^XYw%jpmrk+G3>LPu2SOc!3UU{k7jNQt%faO&@Q45j zN_+|m?`rrZJk6>#z1wzWSQvZhL?4yY;foMYFHR<_p(s9-!9B>$$mDtzPD{@nx$TG? z5YO*%Mc+EcWlPB(dCG54>3J@b-qr>YvRPKDO4uDW=KP`xmhh8XR-u%XE%l?873DRT zi+2|!oJrctuc-qMARI|KJw`;CgF`WTJ+5obSPiB;;a(P)Aw#VVKm^|*yDV`iTeYl2 z8Sxw!s3!(WN1EV0Bd_XusD>W<${%+^Tcz5Mo~nIqJj+cy1?e)#R`~*4!97MtqQo^= zORK!rh>9w6G(NYp(kXu|$V+tHNP47RRI!!xD)$P?JJg-p(Khnt!1klx;)V7?j3VcY zMD2gOA@I{(Q z7MM*WwGS(hki;kM%|(1swN0o$QPByYL08G!IWFGrE*~Lr)ck=Kd~J;^KQSfs&>rno zTm`pNSi5e!v9z)ZOJJ>o@6;Y0v{UG=Lo4bxENotuKMEDQ3ShS$?`Uu!u3L1f{QZ4u zAUgl@pp?TBRhK6*`1Dj+x6~kvRfKnTY&FXG>5sh81GwL=G8(ql+JW4If&33fgMIBzw0OTWpYh*b31;eU14;kG8kn|qk3lr%ZjM)R zcoI?~LBWv9?A+^2zGou!B?hwx zbMiX#p`=D1hwt&bmLLiQPg8qZ0c2PUoD^MH9n7Uc&jj+{Ni3Ii0N4YbnF;1ta0yA$^*&rK#)i1ugZ~J)BHF*9-zR?I%Cye%rQF$`Tx> zQ@SwI)`b2xq(`O6Pu3oykBYkjbn~?w_y+ck)wMRM%6VIyNMo=j;6e@QDVfGIDDC%N zRu>tLS*rQf@msM;vqI~2n^C5rfqIbVI3nDEV#`3)|JQQ0}eq1Zu^VI`r~qe7=#*)(NWD8eKcSTI35(H#&Ey zs~LtpC#xm2IYiz(lv2&{XNZE%yEnc$-4nMA8avc!N>#^fn4#d<37CQHBl{)({)W6z z+)AZA66xyJM%_vH?;e$s4pOht@Gy`$KhoCh^Vp6x2L%V9SX0exfP(zg`e@w2)aNU+B$i%^&hX+%Gk0k zkv>S)G|*S%^{KUlgOVe+_$?N(JlWnNoaBrBkPMO#6!lq}FX?MaS^CWzI%W{la8vXa zHoRqnMK7R}RQ!`^U~L5I|J+Z1#No-frDB6SXYovF<}WHb=+8>}s$UBi=U&GcB8erc zL6UZ*Y~j^RY4}h`E2dH6qTyA1AKuYWr4ac^n}>!Y%+)t8Y<5q+*=i#^ru>%{_AOzN z)W3h-TS#xSAx3`c9+fj4H6T^MTN0YxE%07wZ+Wroz?z3nj1Zvmip0VAO5BRaAg(*d zdJBIqQMKB->EBAT!;YZh@D;}x#1QLk_?zC>@c4vq8x5=RLBe_^EXs&yZ_580_D0E7Rz<7|$V?KV(Ivk^bX4%rDpFB+R0@Hpvb=ucT{ zD>tFf=Xh{KpNQoM{!b$mD*N-JkLZ_kX-GTGF(k!fqgC4<98&mf0IDN^?_XP--BL(TzCx(A^J z=i>+-hqg$a-qudXK?;7{9eTSw7e){ZgT{83eWd2#?l&3cX*lg|T^@7NoocWt;^U@mLSnn8W?*f^Wu6V%N`9@b2j9d?e zGIJE%p7F55J<-K3v^|3T91g)!{3S`bG6vuc1O~7NDe3-awzqvR|Nwz5%=U z1l4$qHqZGAmnaw`j?jC*F2(87iP>?2#1RA7A%GPQDmnZkQ;-LdrUSW|zX0s~8c#7q zT6z&w2^nc@3#oG28M=1g#^6dyG?z&_uOk{QE;ip-uTXb@cm-oPad~bP#3I>Lr>H%} znEc~Srw2of2srlPWl!EoHjcd`6k|wiawC_8o0wY)Mb&2^j$8w4=^(PV*Zxgo)RNh} zHoA`@j|{5Be?%PG()TEFm&xFB;kL=Ydv$V*j_Fy6x3W#LW1Z)V;s8vkxJ>>Lv3?_? zCXu_vt=n45{rmJPCDy}c@SB?{4X`Lh1R9w zHVYH5;Kg?I3YZ9Z3c$J+Vi9O=S!y za;OTMXSAJB266~*y~4D)t!M#xzGCOEGi`v~CefkpnqUD@3Y=`6+oyhrGb_e9-kX)s$N+(X66uevd{T)WUBd_ z{*^Fyd+8EnHX4h3A*5+OLSY%_pJq{^N$gkpP8|46x!>()&_T*;_*bqvIoH&{B?4rI zdL~Sqlj!P%2zxE^sk%{6W~wJfm{(<|r7cxe4WwsnnyCY0TSs>`Tgz-gkG|i^>CB0L z{h{FIg1qoilCO3e(tBgczPg4(uqV{)`woqR;@7;bl&Oy4b*|3~V#C*_G8FZ*Vz5d` z-;y%yTK+iH4*lyIQo!Iyye|NU#5Ci37K+xXHik?}AXUoxd7=&2=ANtJtN=V66kV>5 z3hm1=;t(rVN=r8iXZ3O)!-Vj0y#s`jrSPWvRfZD_0ObSY?!IZqAS&MsLc;{ly;|7Ef*>Q;#Ft2 zJ?tsH>x7N3bacs2!qt3Tkpv!gBg_yXambE5=ev(DUS)QcfjJeGbVSP<-HJliu9kNy z2uwOV5`=VFDse~-2V82rhf7SU0$3>4o*1}vFs4aJnO*Keo0>|I z#W9g5p*v&l!R>gLo7}Ezk(W1l_XTHx>cGp6%q8xq^S}z9-`D8nmQ(L}Tc5{#=*U}( zCyHDYJd<-b1}%|Q1yh6Rwu`Zte638u1fftBY^kqWXYmf*ZS$%?UA>^86aWxir#W%X zCqQtY;nV+7t z59hZ~o+Zv1w4duAHX;S&B6JqIm&&Por{yg}`d1Oi;~(iu`-WuOr)S%L#E<$lwhD{Kz59fH9%jbR&n*`3vRS&$8VX;-CaU}T!ou{DRtThaWkZJKv!+?;NSNT zbX^!dMe;-WhVFyAa0)Y%Kq7tR_7m|xCzIDfn$C%jKEF=JuV9)6aVnf-LwrfyQfl@B`uFiC_vi#L8^5;?j>$D^BWtsl>UBSA+xks5KSPp?6lJ zgWQSzMoh=KQON#qA|-^6463vj(f~2S?5%&bT@oI|b~p3dYoxml@qRF}za?C$Wlzho zi~3Hh>{-$efV{!X?NS!85&1jPMexPQnV<~Ze?o8?KxEYPpGe%KIuteN3#qp z!W9zVi)Lpyc*a49*?9Fg*i*D+HUbs8Dz$F6*4cwX44K&mQzY9}chPkw;00*z!Pl9s zs3qc;PtAc~){q@_%mKo`>9Q%bg0n^m6_vwbFf9UPS_O(%yDDmVNQ4g^ye_Mt6}N>_ zMTTgh89iam@L@=91+gXeX%OlsOU}AtfT+=w7y59sRCK2a+_D&hPA#V0M5m#P@PZZ| zBoQDCVVez@@k|kyYEt1N{luvu4SM2jw8=q{(1I9lMUm@n3~&avV8wXEq(FX9 zkg~#cNU_*&@}3Q0f(=vch}7OVYC(CWheLi0i4`qjp3(xG5~Ei7pA6_4ncVA17BOmp z1ESdmJhKi*f1s*}I)>b=HQ2vDT@7{K%Ik=obTatpA^9C0tpJFXRu60Z+;DiYvA$$N zL;)dWXB|^C&7i`8Ozp%rc+74~<;!m#Uaac&Elu!~3@HyrS+0SGT-okk$+yMvIf)

U&Q^LFYgVgY8T4vqrG>Hr``ZYp>(;IQAh!R?LmmNIejUiw)toJIF&5$0PyJ%*5@@}Ml))E9^F*2C)mC~YTA z$0)hApY&1ZK8^{^&uVWz54Jm&;Y?>2#2ornp{q%>o1t%(JtgOCkOTCb8GyZN!qCPQ zB?TZbv-R39dVpId8*01!tnsV1%r6IMgU09I1Eas`;hVxr8DG(>l`}E7Zo1WHZ`3>& zHI7dD9_4_gDzdjj1g7pdb-Q(`r(HO9%xj4K*US(y*ZdA< z)kp;X7OffWqPVQO*$Mrrxz>mz9k{8ALa2qOsz?d+0a?o(y_^n1ZWx3m>ak zKE*yCQ019pDP}C@{eq5DO%kWjGyGG&FKBU#)&-tE^8p08=cywhDSjTgIv^4ogtiBJ z*5Ajjke{tb#VC-n5{r8tog1(>)X^oB@xZo$d?tN0%P+)$mzh+_OTbQ5dYzI-teh0r z;MM=vq#TAEz-% zDb%TiW#%uZ+0=749h@mYenc8{O+V@8(IDO5%dU!%v)jZ)0q0?(&Nk0yHL?;{D@CP} zW&-#r$+_x{f#@V!K!XtZ0{ej-3))&~A4a*l?h0TA)2EI<{HPyL=c2J>pU% zHf@_?EDPzb5Z^{Byu4~uwOC@PT4bx1-5W%3Y|2h447Yj=Al`!>)D|Ll?O(;J{bt6j zVf_w8z^_Yx$4ufcEpha9P23Y-E>J64RH~#z+0>Q@Y!wV|n{DE;zz5{ZG+?+}#7sFa zx&3&nVs)}zC6fsUZTTxdd4a>8 zEyFn&*jYNn;5SjePxJYeV4~M!0huU3{YwUOl-Qn(xD5(xt7#f>n=`2FXdDY@H z0*>+Rl?{)3SD48 zy6`xCA&d(Iu6FB4 z9EZwDjSxM4zER6d6DDB%BW4|E*z~qb{Fkk#;8sG$@D&{wdVW#Mr7d6B$cd(TsR{@p zoaOAH8V>zWeo3mp!Ys~TS}HS{uL+YcM$a`VtWZ^0*-@zak|+r3RGGDt5^&G$&Om*3 zdpV@UWR}bB_}I+UjH7SF@ZCj#aV0W}Gmz;3i-V(8H9uP{3z{Q(&4j}ivd{sE$>3Z7n1bAH(;h1tHHW-S$OWA3 zU6UXB_#eHyT!g;^^?)FXAiRDEWZ&>&Cz4M8EC1;~P@Mk~aQ^@LPb?h&gq(lek&v0b z!#|7Xf8w9m{+<25@lPVEa`Gx_|AT*G`(N=-3>^QNg_oD$|3Z5HW6ysT@xS;d&VR_1 zkiMO`@qbWD1Z?d8FZ|R0Aw>H4zaN@ z|8L7ij&>%u3v@WLR-fVjETe0l`fF*c%`77WY-Ce|f9c0f&)n}EkKPZ9@5QQ~kBgd) z)ozP;WGRld&I)%{++1{y)cm_vPaBjb@wv4)l;)Un}C4I1#m7g zHZ}aFeqDi>bL)5n2Y)TW5MG@?H!=aIf3U5sOpPy}f3bgkiHmfifA@vfb`J2t(tiva z9OCO9Kr$#b+JA)F+v~6Sl)pD?Airk4epJr*)_;?LzL?dR!9BHVf3@y%O@4G@6a+N{ zWfX&7d{_2%ZR|ajz?rE%q5Uc@`J%A6Grwc^cWp=wD}S&44bOhLmI6%u%B8ZqIJZ22 zoG~$eSxTh+Jb$Sz{Q4>o5y9o~KGD!*0eGmIzyUCmLsR=@CXe6x_Om)Wx`1tT{$#%R zdc4>E+&TjR{qZlUtCWH(=^|V?r`13HIT&U}jbq6pLaT;^itc{gw(F-3&ub~3_IOEH z-q9#mcp>2y&wMbEh~&vE3`@l8N9smP$Pj%ehxFOin*?*JEh%;YoKd`I`kU1x=3ko4 zuE804tW7C*#b^|fh~%xKYIWWGwJA{wu_6 z1%!8o^S-_H2a-^B8dv=?F9#)X1VNtxxG~sNeRXyyd@V{J*E)%OAK<~t{V}rS^4m~P z1J2wrcMif8F=L=B!@xOvlI-`u6g9^7r#=l`<yWzKf+A011(7ACQ9_ra5o$)4@c+qq4N}{7D)cJ}9-p zSM<~4TvynF^((uw&7yo(P@m2GxQKZWb@11w!CQ;TU_BwCZj&^C0nYO@GPPGFba1rjd-e!1ZBnKe<9ji zII=76a@Z5`NXJ?Z%q^?it9!krb6FJ1aFaLpQn>G~UIj z;-|7mUW#h1>DW;+R7MFs&V_+!HYAYB63ZEs+jS>9D}Yk;e%h$qHgC;GpMZAA-qd>} z2eLT#-v0gODOuw;hek=&ob&#!s9U8?><@eIn?7kYUQ#97zmb!KF`U#g z%Zc~C0vk4`LVU^fy+Hrwh!@x917CKH<>F=&6LXc_A-hU&vDW!)q{dQN(Q$6mkWJ1RR3WubA z*zAD|F?J-SpgT!ddijKnNki$<-utf@NA#qEXKpX3qUR&=-^7i`$ ze?`5noIknbXKI3t!c?qT)i37kk7vAtAl9Xy-s1a2tzZ|S!BZhX2U$nvGu=b&^hDSm z`rw?HG)>!Cz;8Q-^UiR91 zAt&Q9O*- z!pnfTiZ$Q=m(A`k(*&P8cevF>omH$Bj{-UWseXf!NyF^4AI`PP`Ie76y6zkTV)l@7 zSB^q~P+n{c+7sGAr6hJRtd-@p^wW$#OGMx_xz z!l=+9o5cq_1fAiEoqP|s=p%V=E7(@TSsR*(lJ9Y|{X!R5>?3tF(0YW)3y@qXd`x3q zR8^5h9g2as6g2Y*lgr|4Jd3Y_sc;&y~% zfZ;{|2LLNT)W2(s=(0b(6+kX&#G~G*r3n&cSZ9aMBhc2CMp^~6MnvP(j{N#oDPP0a ziwsNRxqGBo$kw~~IAUC&H7GhtSDnrt!zx_8CdtztsVs*7&QU4! z-ZD$C*QreFpKwaCK>Al&{%W5QOlnTtN*?5C`%USRAIH=Q}w|r{Z)H{pO!la#1HckFk~T z7jU<)K_(e5oqqaUr&+G}>v;B44iTKJjH*Nu(_dh{sHZ>{jT}8TR-K}9iRmZImJ@Vl ztBkoHy4svg^szu??nqmveUr>62w4CjWseh;%3d&s(8P9^co%2$WZj1Sg_9tQZpUAc9` zL3`RciYVZR^s~OW7ccF0JnzF&bl(6J4hiID`OmdFM(LTf-EPp!z1Qvh2h??F+R~p= za{w;N@$X+in@g&fW2^BCJpY-!v)?}s$;4HWb{%HyNxy?F2VpaK%5SJwpQn1Qvg_$s z-+Z4jkN0m{kn+;K%rKyJ5Y~mjIOS+)8*356tvMg_zW4_*&d`wE;|K1c>(#!`mBdOp ze;f`~!~@$&!S>fG4y6?;3}cF$#1R;Ou5ngC<3JZnMX&V-88)i^(`YV``qx@i$MzT{ zg34OkhLb=nhtT1OU`JK9UJcKMk}gA`ENDo$8v&C~+56f!NP1v_tf-do6EpFr{pnL_ zU`ynu;rg#$Ufp5IAtpAuZU6JlbSOPQP1h@Uz8EbhdpXLeWqk`AZwKcQ4ZD6YvlCX} zb)F7?eOU@-%rZ#DUtXE&)GOMb93#ziawM$d@C-1*rbPf1q9hk$Dt`Pv@1u-WHbpRH zRl?dmSC}Dec7&wBwwDF7uq6(m9mNZBw0wk{~__qy5mlkREq*}N8j-?pQkoIbswNSJFIC>X~2;;jcKU$M{!z8rf&kHa+fR;=s}gPJYP^_;CEsAk|L@3 z5n=V?Wt11&pG1bUl%U1{ebB9#i>s~NEc2HA(C}^ap>&Zc?IT9gy!P($w^gbJBju4F zC_n2K`;s3#_790sqKN2eCPy4~?$Rqcx8b{ue-BMV1W=x8)gB8L(QR#B+)f zo)ya1(#hSDClp*~tt23jQ|;V%b$JHaZ7weM@NpEi z0#utrHJrmYlODhInbwkN4Gc*d8chaW+%1aD2qphI`5E`T<4}HYLFg+8F_S? zqiq2{!$(nP9=1Ngc9yR0S^WrrEB?4Ss{`|JCzIvcZbdPn=`lg6j;e9-Im!VWxo_O4 zaT)rM7zF+-QV~%nfFq$aSOW^5q2VV1WRZ+#R(LtSQf0eiM0!R!xPr_PN}6!%&rX5b zR?YX`O-A`)UY`MUpVVVZFU>MafI#)UCrWBzeJP!vG}_KJ1IrCreSvlb=K2{4d=qcT z>}z32k8-2<>lJc?fkJAdir%x{h&jRUP6bWpD9gYa$1Q4O1^1ynLheQf)*05_c;aa* zsACHSIUi_VF6!8^mT#-$d#G&R56TJbzCOIPyOj!;=~bsPJ^UU1-97tl!j$RJg};U# zJ^IJRc^8% z6zJq>EGc8&;}%9O?bDy*nCN&!v9gz2a1C--rU-01#p{DJ`C-0qdLNdx`A}>i`SI3I zcD;IHxv|GomjpelDWu-)eq|p0w3-x}cWermExX+M!v{mFTB;p#5l6@OpMR*|48h(h$ZH)GC!hf$)Wv=?iK>e;3hJfeI%6x$H+?ru1MzoqGk-hW z4^ER3m)EV4rribBx*p685Azb|nvQx7LM?t_4P1fn3D}~D(#JrvAmTb8PF_;#_(?Cr z-?xBxw1%%3J%0yX$ZXD}W18alaH6HB>o0(3s$_D*63T;d|0Yy?SmZlnQ$|J@n=SL8 zfl&VI)=T))LrN1~b6V zFmX&2yKG~Y!$J&9amderkt66Ivd!DpS!4YO^v#=)zUy^!#dr41>2dXk2dD7K}gOmeb(-Ay7#$khsVYgxoLgg~)5cGy%K%soefX-K~ zLv8Efb+%3^Nb`>fWv4Z^qi=@~6~x}UF?i<3>wm+eX=IJE0cFZx>=-(g-|_v(V*K2jO^MVMmQ-O^X@=k}96L;b%c++=rY z8^#5qlkR^7Cv!7AMJw58S_E4mrY!KX>%b{gLj!o6oAN$A4tQrRA*4WmH4o)RPm>Ol zA4IrJXJ&WW&robkHn42`neY!f9hx!+>-t*Lr-Zt08P#~F<|==--o)2I7ucu65x4qv zeD_%Z$PGnhB3VKP>h!t?7{vTgez0JGlSg9#IlBv zW2^0rX=o97THWj%EpXDTR#Fv#JH0!wiq)lcVo9Cpyl4R6E5uA;L>sges@4kyRz{O3 zVt8M;vsId_LbWnI=IFuE_#ulU>Q-?*+p%mipbG~jOF%-xaC@kbdK@r1W2sVBH4IK+ z<+tENH}Ry!S=>p}1#KGX@odNtoc=$v?Ze9mBvIXidM8O6hlF@VDW%x05>0n<#E*ab zjPw~D-brn#+(gDf8AKh02ch8O%g0j+4+8I*En+HRG?igb`h$wTCvMXUFh5EoIb7-X zPp4IM8gUsORQj1s$#$Lvg}{d6gkS{uY)YPIGoa1%+;pAec3BT?_Ce8KNkQ%9hbLS1 zsUtGOG>cUhNTfj8@@DJ3jV4#5xJ=~c#y1)4Fiy`5K257Z1AuB##n0654Z7F8ro>zx zT=p$8z_FjE=cA^2;)v6PF&l*xF6jC@QS`?0nEpEwfso1{L?x?HOPw)8A2T5{O5nM^ zvdqmIGI$8=Mi$TADqT@GxPK3SjNMjML-%okOG)ddAjtix7CXOw;m2kTDXc?)>Uzb8 zW1_R=-`b}gxn(sQEW3n_;bdO!pYgue;T^k1%E1%%cg2C_;W%Q8jj$6|HwSfF@uXHc zqO#N&r+g~f$|p-jf%Q-Ado8$n3o_?)VS}UWK>V3)XHu1XJ;Z^WF`el5;-%wLm63s5AQ-T4Iw6 zZib^IANr4?(HaDg(%lVf_oEbohutafuJ>8QyevB}tra|5iF=JdMYf2y+f>??1fCl( zO*X?>5jN>*)cHPL{!{OF*yD`_x-!H&*#gpl2jj4LbVtogQw|N{@O9C(X}k!DsLn+j zN4-4F?OA*2Xoq{U-Z%aQg3a(whyKjLSl)*pg)GOlGWm59X!H-_dHngP&tmQu zbf}9T7Sg|8kl;3}xbv=Qcm=12UO;r8XJOXx2YI>1Z8oSs9YqTsYsL&o^S$Wu)X-^ zWghdRdYqk%{l+Z22*4v-Wa*@bGrbLC4nqQ5aao!2-g9gQC%UT|LgePWTt=EVU-4$X zDCW))|I99ViFG?4mhT7FBjBPpTX^wuV+~$ieW~5#^4|R|u^Z2UBgU6LjvG|voyNYs zl~}{%M^Sc7-dW7@(C|YwfXpTfzJnAaK2?LKTD=mGPJ+))rbU71>1)U>TmIr-pwKoI zFbm}pI|XOa?7|f8-`*u`gmJ7oR3eCHHJv%M`{KWG~1xiZzFBC1%zk{h8AOzgi((wr%dUB z(dX&z;YA{>Fd`fLD4Qd)Ifb~GN0tOWf1f%S&W;)N6ff)|uo9J!J2>Ek=RYGxYBlh+ z0pXqIxv+Ba1rmA-xv+taeQK~YU3Or3f2C%!w*v%^?nBgxi=SF11Rn_ozy`YrBg{to z$-;$+#ZCQi%D9&rHFM&x2>#3kwduFdv)em&F8XH2XHHp}IXP44)1VcFLPINgbJjqT zUTc1yh-o(Rl-?36)4P;4=%l& zd4Xw-Vh>3huuQ3vI0b#fqc&|B(wdAW=5V&-y@ovxVm@NfPh zS{m*#ubRW}YAMZ}5equ41Gbl6xgIiQX_xUe1|N{+lo>F%10e4G$~PMbjD$4GY|+3! z`k_C|R(i6(5;+PQtt{jcpt){!n!i*kdj58XFbNLenEW{!(xrxeG0^uNtF)U|BHLtG+km|Jv#nhIp4wB+w|y-uQ~rS(+?%E!B|6zl#mwVZC>78pQ{NYC2CR`; z4Mu31`0XA(fx?>%Z9K{`C?Fz@g;!{m*u0PHxLM2M{mJ(VS>fz1JhqmuJfo_CQ#b0 zl&ZaV$AT$sVIaBa9Gw4~{V^vc3x!`822g%jWk9pT`S<{j3x($N{uNLRE`#kZ3KFuT zR{2YXj9J!sIb4K4FZWI$D)kTHhng`Y63t9z; zXo7)ByJ;##yjKxc+5A0iB8Gn4u^b3CqTxIm!F)T1l{r2@-h`Z4Xm0qQ2dY6>ZFGD^ zdHT56wU=o&3KWFS;@nYXCj&Z(Q~vcFuhxQ-`$4L$H*d3AAB+56Z=Xyf4pO98(N53O z2ukDZBho-qGB>A)U8PqE*9spHOOHAz7#p@zzuSuShN-lTH5mVJ@VWlRd${y^oqm?+ zBBxUR+Ob!foNx$pf@iP4m8IitoUAk%$7VΞhap&CaC^=s&~LnQ3&07gU;kHFv%c zjUP!N{<%3tnr6sNjqKAGYmyAu*EQXP5d?u|uV8=D@{o21lZLKPr3< z4It&#>#TZ(TwgGJupv>}{Atn45m6-+&;;1Mp`~_9Nk&`aQ(#1S2#4HBLT9N;#}}`O zEJ72AIa4P|B*5$FyL+Gx07G(42DLvVwc5dZz zt9XVvDc9p~T8`Bq6xFJ)e6AaJ!Aa{XyMaPJOg;Tx3Ic+f0a`7%@15s4Df#`B=$-P+ zLqv1Cd0bysAb-?>b5I%DV&M?mBd;USUm zAmlZ&p-34Uu-GW`zUr^Z7|#8L1QGUIHZb#mdiB-_9|gNkR;inPX!#Av z3-zGhufRC51H5H|?^mjusvj$xVIp03Q&W<#nBb@X|phtU`Uls&;LaIEK^ zS(IRljKv(Hr0YAVJG>$P0?pOhUf?XL>wxqmpEW<^MvmEEUiv(1)K=hi1ke2HbT83T z4wiF`RE#eKOWohs)xZc+38N*E-N@i>XRp6~K)~)~TxtokRsFhQ&QeyN^qSH0s)3^?|wRk?0 zE%3OpLkg>Q+p=30r$H~QW*ItgUd)Ui3tiGWSW}-2J=`O%b-B7mU=+La^9&j&U3lp{ zi!b5HaEDbV?JICGVL@tnvc*Y$aW@DgE2w@?;V;EiM7!~lf(Zcrt((YciKw?z(mDzy zg~k-!pgz$P>JJYS6+VS{H$X&=#m&DE#Osq=0;G(FK}6}yKAFDL=IS5(jsy9V<^LTB zwcS1})d~j5fWV)4|KadT$SI(&$FJrU9Jo-JSNdGT$!T@ezAlh1AdofNl{jX>K!L7? zo!A-&SCGErA?p_A1mg1_( z!L4)3d%!)rLskp`L722*p{a$4q;>ZA-Dg~X&``MlTJ(q~Y^67+aL}zOv&}j{n5J{S ztux&`@udse|7WYxSdAz6iU$ITumb-st} z&*l>bMRDR@gnt|Nb5Z%>5ZBHv)ou@B8(pD`>U(W5()`Wz>$ldXx8@8sh#9BnkA$qf zUt|#qDq=FdsMGxjmpKK|AK9J5n!603G?*E$5aCuN<+Auj#`2E14-j4E;jMeLf(gU; zvXX(rBVRZER`Ar~vy5W#vU^e`VKQECx+cWr_4tO2-d$}lOxayVwCno6q(sx|1;N8g z@CG=yvz>b5G>V&&M)~@|N7M1&{ME-remKxYYCe_7coA~4Uaxj#E-d| zf~^P?m!n~c!n4333eq1|@m+VEo=(U;g)HH5Nc5(9qM~*kBqJR_l4BuzvlM{KIQm4| zrL26;GQ+7T5bv;PrkhyV=VPSEDE(es54&Dfsp&gv0I4Tl+NhWu-^;fL-$kQrHi+^%k{#FROr>}3~Xg8KLjao~z3#m3<( zLi(P7ezJgN@51W~Bt#yn5wv%ng&O|}rAVS)4&0r0^y7Gx-j;^EsFzWd-$aSV75u6< z5h+Cq&ua=SR;|^`*)Z;5?kJsR=+lp{2#dRyO*Rw>b2r z?uf$6Q^E~Jna(t9T&pR9&SZS#d9lR5MdoCb&{G5ra0;`S$jeAj80nWRW!gxY_k~wc zqanHF;?L$ti=~y4fp{yiRiuY(w;`c*n+=|}bZR?yheP#bmY^oyll^b%dtJnuN9;!^ z^^@GUG3GwsFHXC0>5gB#~(I3%!rK24Qw0zzlTvQ zt_w62a=nG{9j|l7hKB<)mK7F0!>a|tG15S`Liq=8^4Ak({B9x?1GYkCF-*(BYbEyp zb{|`?r(fir{U+ot3!1l~BbDgy*_~|fhUHV1p~G0o)8n4?i2XxkLn#V04ZFM~)($#O zG}2NvAA7&7hQ+Feq|=G1}Hmxg|t=m*gBH5k|F#I^NFD==LY*a z&)-k@W9}@zEi^=GrWs2n`h08`R1DDd>^OJ>I+z(!b+H^y)WYgsbH+yhN}{+)=k!rx zq#$@9WuDxiufpk#9dQp@D3J!8CwZo4`Gs6sGzks$%zVBGtZ!b2!?8gz0%9=e{ZWo% z9(Nk7X4EL)XXS6S?({d&t9#s;D1M_I8h2(e)#IXb30+{`H0q0%l`AfDEDHZBdfQ(P zGWBr&tZ~qNe82S8alYBA~T3;0KSR5$lX7?g$Vwd}8H*TimhjIgvDSspX4bc*$ z%2Qy1b_HwC;t!$&_1 zf{XQ)|8+9fF2&S)jp&UA#k5anx#_I$;Uiu1{OLou)@Q4bteKBc=xr>A%AL-Xh~{b7 zO8O&!grpTHFREhiGfB9c+vS>b_?LaUdUK@LdnIaxhw?^rrqU20t&g??Ax^|a6`o*>w z*MO5na83ifAz-K*ly_VCBhxm*qq?W%0o|8*Pd}9k-Fy-iWIt|?>|8rF`kMb{$Y5ah zDrV|fMu390;}Uv|d8_SJW5m`Po@-#mAoI5aLn8PRv zW64qCj|;8h3o%?u6?5Wi8S{?^0>149E2Qbe zz6Re!=?SL$t|+^Evo^CE{A|dFBlr-Pz?pA(_EPktm*DbBumwH5;1$asUtV(gF|;1g zf|S47b8b>*1=7|c@hB92>0r8)uuaPiQMzh5YZP)*`j~A2lXjVSwokucLAMk^lPN#X zLFk7OJ;4RVenSsFV`&UJ2A-fXj9v{o3{*+ua6+~xHXZqTMxS^U)0O*a=7VQ2dN&dRH{mOYOixGLZ;d!zl#0wFr`G}=!Ci$UqX)9LyO$~Mb)QAcmq z#@_!}En{gtXBs5oH+H}$rB8Xyi6rQBxCF*ydqXRcbGo4Va}wYR7JyFGw61iMs)pBB&sdRyk$S!sR{~MhvK{<0$ z&8M&fF6tr7s5dpvnbNqS=_su-@^BbOBCm*o{i*=_ck_iHzLjZ5QTQsLZ?l7D^=3mC zedrq#lc`Zx??EOdO*yYL!gIN(cF|nWDPp17z^DaE{O4*zG&y1_}dtlQR zkBs6BM{C)5Ka8lCi}$ir+`Ed!8^oxJ(&>cYsb#)Di8&?cIV#w7CuwR6A{r+KOqdT_ z`OdVnE1lTk`()MEith0K9G~S_D2CVu$)&_lJv|;%O%+nKUi8Z%rVE#1p+#Ts}-zVbT=^_jU?V zH)}x^AlAjax6#ylvLS^OB%W`Fb+h@$3(Wn)R zM!?lIgXW>#RsX2z#c69(%~gc9ULoHgK#)rvXB?`hT*}%Ew-l(44n+8~`_J2JSx6z% z=j#piZy_TWWWHW55-k4aNDkc0tO23Lnt(y~uHE^xI2*+3EMGp?91^BT^a^?x=@}Wv zvbjH7#&qnb!F{yHl+g>qvzSbUO3{d$`g`d4u~cC8*tf1!ulN3QB?n)WJgt4h`qByV z{PMJ{D9eK(?58tGf-b1@%ayE#x)P?x7RSm0v)yBay6@8QN%0LvYDKAn*Kl&C>aRUx z517+L3{SMseA73J0Qj*vg0Bw|Hv`%@1D};yLu^w%7Fx|X3VI+8BRozPA9ePKGRFyp z>upnysdWX=sx`=9R$OXNBiLhpWWjfai&-s<@$vw=4+W48N^(Z2DGM}^QnF;tb(W;pJ5RY&*D8~9drcWmCJCs_2KmZijilP0IjH_l(85WX$n z7Rf6uI{gaXbcj@3lGH}Ys9AA8N_~^3aFQ$)40c`E8!0Ds2`>U%kYN+PILoGyHb!HP zNg&;mk>{f|nYHWiuE||GC`^MFv~D&8CAj7%Jzgu&JQw<6ODAL<8-v$snZwQ_tVfg- zGl!9yxHhf7c$!MmJRWYvWYp(~YAjH%447Ak!NdNHYu=71c7u*%_f4F!?(sqgH(yXe z?hY9dM{SdL$Q7t{B)Dqy4ttXp7bRtE;r^lPw2(b73gh$5ONUN}kYvF zF*DNFimpCmW>6qD$pKrD?ccC@5|()ng`1dK{IuSaXSvJzMp}9;5PF;E64obe(#6k*^ zM;RGUI%`;(_{8al0xg9LKms#U`M2kM<#)vR;Sjwqs%gnKNYK&m>Cv{1`?vme$09LI z?fVvv?WMav>13JkXOPVZM}0jCI&H~Y_^>bB)d1Kr3s4JeTqZMzD!I2xWZ^YkLI9DqxFmK!?eknDy@$T4=H>ZgO* zz;wuBU}3yhvkDzVa5$W;3hLvjP$wpd^>ikWi|ULuY-3}%b}!n6ZlKBq{ShXCz2Pnu zd%m%os!B@NlFq%}vqjws5Kpq~Pm{lUg=67(DJ^A}0ARVCW08a3Gu}mvVsok8c;`2? zpBAE=WBx>wuE}sD zO0d#PY)x26Vw6xv^4{%CG2oM?RwagPe45|a!VDP<JHm6@Gk4 z^=@P8!%-cxG}6@!6w&LBi0?V(uK>x!;N7iMYPuLsSP>D@p4m#L>0_lOE0U{&)~!n2 zVKNnb1jF&GzA=12k&yC|0y)Omn%`)hyUY1P|LFhJh1je0Z@6xmm-LujTQ*B+rH!%z zg!2#3J()qC+q(WVOD!m5mRHv-6kT^Jb^2n5$h4fKca#+}z@IF@0T1GiN1RMx;Lzwo z435DFt1WxyEOFQl){%17xSi&}`OW_=@M**MOZEbnrK+K3($DRy%aZkCBZC<0)C1z| zkYJJ-dMR&}Bjwy}Cx=|CtO@jKIgX&^C*(+)rorx}>&~0`O@4S?TLfGj=+<@f6$HQk zSQ06`dzX82#YtLndB#*a5*NcO_?FwQs{d2|$=ct#KXZX1e};fjNZ6YB<-12xM)?W{ zX3aobIrNv;HVW4{lMF*xl}6eDdiqf{FFWRAwNEidFgyGgkqK7O;3cbHQiU8`$KNcT z1aB`bm>QFV_!w`Q#5>z&Hq3?{MEBk|%X zWlu&RH3dg2k)sGB@MVJbh~QNBb3`0)wwox@yO1E~U3HYr1RJ znHj4op`>-qgNnW9UvhP=0{%WIGqwH_muU%i&2^Q<7Q_}VS>F7MMN00}^HxA#7q<Wn&@YF6yN~b_+>GP7-ohy4^77?Onq z8VK6K%BcsJ{a{0(y{ABZ$3kb~12}_J8>X>8G1Y@%pU9IbnNi z!t7AV9RP~n(3vfght60#!17a!TNg#eol8bXuY93slt=?k#VLmUR(y=wCiDR=R`1<% zT@p=N;b5ryO9wtuWu#S4jKx&X2T%l5q-(aq^%eL6NG7g9JH)dD{7;>UPD zZ8YI>6<#k{P~^u8b#&&}B#A_G+(Rahpy%X1nYP2L7iPeQpJ93eVL>Xp~k5Nayvm$2R1 zfXz}=sl1gsVr)%?4a7PlYQ3_~%v%M2sD;_Y3dQzQgXC?H)ItC5J<1_1xqw@;7gK@; zl`@_820N@b^p30qDzjBwB$GA6=;aq-hdBTSpwI(56{`OFDTw@xt6d9Eje6MR#HNuE zQVc*yHhdn60v|?&1ZH(ZY^{*$JJjNRZNunzf!WeA2mKnvA|%j^xJmhzbMTfk_@?s; zEaUZek2XyDD^lFtT=8H*TH|ypAW4F}dU|dkr@7{@YUifA08MIFyHlIEpbj07LO#Ya zw5Q0bd$HL_Pd@VGLLm%WjqFT}L_H_^tKq>Ahf{q>=y_reGnm_&9Igass#4d7R@Fxo zsNXPUW!hc3pbV6mgSB)_DCTHDV;&v=u z5aL;!qYZ!It-Fv>Tc6w{qU?d-wicT*Bo6WOFnhDJ;|#S4p&c~6p?+xRX>=D+4V7gp3||?z z;aF_6P(INbH-K!TlL=i9yyJ>3v&uQuCEIoL^Lc*sb-JFKM zRcX_e5${<*?m0UOenCf4w^FlNiKPnixc*`lzIgjf1)`PeP-f|jW<50OUfU*=Gc!y; zP9ju8Fi;rNga1@tHDobp55#E8ieDe0ZOWa8n=&i~Q|Rq*?A!w`g_PesU(-=g_au$) zQrtcIwVqro%5_WIN2}mh*;$?TP{k5OR1=k|)49K`t#)*$ZAdLE*x1Dc z%%F8W4*k^A@?O2ovs~FHh{3s;k2=KZw#J3|dvS+V)Lzr>_)ZWZBa z+f>weFHv+t%ZB10lckjRCd_=DB;{!EHF;D$Cq%lvdPy>We zjQ8!k=LdHi#8pMq?^CN7yam8VZ}{-Rt}SyS$lYx5F_$B6jkxV~8zbCgj{h9^K;Z3G zqjA9%N!U}d8V7nL$t|r2e42zydU@G?Kk6ekLxPYvwYTy%02AKO!nGA`=#Z z;S5t8eEM11Bsof~`Xhpu4v+-QlyVTUme}->@w?PTLf|<8U^-glW}|6E>EoHHqqAFi zZ+FhdKlm+-VdlSORPQ~D4;(0^sbZwS)v(vTadfo(XPf!2<%`juif;pNV^Je-`P5bM zSw1-U8>04M*ymcuD(|oEy4omDv2Ojyp@6!OKy4B{H@Cx#Y6B z)bkFy*G%_Xheph{X2cp}P&I*Om7R}2d_(1^>U|#>l@X}A7ENtf{ofxtzm%$$uLGCc zoRidoiY%IT%5d<+N_mdLGCKsa_?i!#L5#**%c&c&SK^tpDDy?ZwsUe7EC@baGl_(~ z%>8MYQ}In7PpVVU&;Yu`vL%omtQfUhyuseiKd0~g#80F)m%l@)^uFYenh5C0W1g!s z$KS{gH4!c@S}nKAbo%Yn2B8g57&Gfbu0OUx*sqF_WYF%Z$CqyS4p+qJ5p+*^iY~43 z3Yh@!EbBk?$21U{n+sikPVfZlQl)XGq1_B?#6Q$BHoS+}dhN6rwQm@h8*Ct5BFh|1 z4tzz~_STLvBfH_Lr_xS$!;3ng@=JFZ60yO?a-1@;EM9uj!#X8piu#(eP_u&=KC~ow zS9QC~a5PKDKNk?<`h0;x_6n65ql2ln(v0F|%?%zd<2F^48ORecs7GpbpPg=kM zp+cshUcLU3eObMAVIk6CL$m3-qw_M?q85lM$cN)ka2|LNLV~UZRpyVaanVzuL{o0b zCqPO}$|4ZI^XF9(GVc|km4l2DC-51M_9ALKYP?{d-I1enAriqfM9`0nNo+On>gx%k zB~IrCqcR$YUl&kmu51aWU!MNSH{Cb-CfHP~5`k+5%cf~#>{P>lKqro^O?l%}rsQ!2F z11u5bm7UHtsJT1u8V)wuph85b3RJCb#jRRUfzpAP^26O_kNB@w&0@x23`f{FX5j!| z6GPoa&y{+Cj_xu^^!obJtPq~s?g15H7&N1QXpOS*z`%JU(BN7a{A0j3)M5J6=?e|@ zvm4R83(!tPzM#Z}!!wkWlXDd`H6iOC+Sbr%FuvM?@xi<`F2E^&>3EA^!(MBy%im_PT=c@v_nzL1?%x7SW>0F{9X`}BXT!U&L(_|9 z0jK}_Zx)CVFy4+z^Mck=|Q znYR$aw)m?%1?>bqY#s8mwpHye=V}GJS<;CM0DoM)?lG(PeigzX6J)6V_mcYAK=j#D z_TS94{7OMgJ+&+~6!8aQc$41JjnL$ewuoOt82QpI4GpPo2gOI%PDCW~}!Ih-~ zGTsfvMWE^b{jY#SSd;n(=Exa7en{{+28`+GDh+GXnzaBM-xA}K@>1_-``TguMqjJ# zw``#4hJ!Wj+eNjFZO<-s(Hh97Zv%DxL7~KNdPR(8OQ}Y|$2KR#d{bJSW2u~Y6U^sM zsal&h{!y2S7xSED{=tf9mhe;Izt|qP8&H3@VGc$-OW6>Y7LT>QHaYD?c8WF@pPqk% zJxAz?UyPchd{dWjO*3<#bBe>5N3gbVR-$M#~b}B4l3=m_Y^H2$IsMh-52cMIZ5T#+Dvg*q8{* z$~L>IwF=ICcp59mD-%HZw|Ikv6Nk40reKee825TZZ}_Aay48J&i|&8ZpBApk&0AfvXA4$V3^)6HdT=_PRNP=A!e1fW5~)71vH?rYu!RM z(o0#n=fVj> z%?2Xt@k$WBO!JYO4d+*gjeXkhAF7(#eHe9numDf5p-%}GgcWOC(Kyhbuno^z=Y~Nj zJr9o&0_JUjQJel7hz5renN#^xnIhJ0jdz{kxPGFW_v0f(PNh5dMy_I{7k++~J8Fg8 zHzaPr-)HY4Z<(@AunbINGkcS)EWA29yLW54h86zQ+x}Hn_KIFKfL7UwfqHh_H zPPU#9$#5d0Y99Wl2Gy^1;L7D@wpgM?RFYFrhpB(?wfTm=Zx0-}OkpbbZDC%cck3Hs z{ja)0LP`Ht0lbk;qvbQh2jF%P;m6}^uB+KD{BvPJ$5N~`9ZSFezGRArGcYr*Z?ti< zBnwqVR!VpD7zyZTsTxf1qy%Yij>ta*;ME7|kHxF4;|ANK8459oHNJ#(1&+1fj6Yc7_e(L@#gMwJ6u znymJSZ2(`ESF8OWGG8#1H1Zqe52lG1noI{_VknTxi@emy^KmK#i#TGnrI|MHsr0cK zr`5fsrC(ZQuwT4|i;q0n>Q>y{Io? z@$eAW~!df{18RNzMAENIJwtEY?q*}1RV2ox*2*nh35v8YB~6^D7&Yh^tYA2VgVvsk%pee7B;~f3pzVoVTL*laA)9+n80BxR z0TMf|z*`n#6Unwt3gnUo^`3XGq$3ZZ17@UEG=dKH647)9T~6bWy3QfXZ=SmHI_14Z z*z`Oh%-7ytAd*Y%I4}AH>;)l3)l<_L#ON=&J4K91IZa$yGKd&z1-R>9S1BO@i0l*3 z^sDOABVDjA7=eJW?Q7g&#&F3XzDipIxQ8WQE$QG5Vi%|8mnCl_tnZ44%kzFl|1i1r zwOu=3lBxNHj^PV`r)_A{FQr@!OxymrlI`8OO|>L9XiWa6?9{;O7LJ!~n;^D!UHWJ! z0?Rs?f!>{|EBZ`kKaY(-z>0|0z@O3#gkL_Fp=^;c8}HbqI&1q#UqZAQM~!khzwk`l ziyxDJI(5@!X#V{3%$gKp?KiemGP9kedbGI~`4XpJoGwfhc>-`_mu^l#~zlXX^1ioqjs!5_Casc9JMoR~Z6^Fj)vt%xOi zC<$?3Fg7p#X$hYkLQ@wb5L&6_0x8J_v=xcU7Wfot#h%7J1hdW`FPzfjW^aA~FnAkR zJ$igRQSaMms|QvaK<**cItjH;G5a*5E)2`AtxR?) zZIQd0HhiiG^ECu#?_=7A7Q!|*b`XgtcEuo-WBb+Vc@c|V#DUL8;8`5g6|j~YjzbYA zzn$8@Pq|7G0MFC#$_Qd96*m+le2i_JOJH`(G_Lt^%fh@b z>jL{pU}~pYcAwTzyaDRsa3OGQdyd5BM`Lv?BLqdqW?Al-x3BEcLvVVlH%je|bAH7V zOX^S=QDN)a3LW5(FQyS92}mRi$ve3S_NF&M=V~ zv#QtPfz6$ViP-aY(M%5CDph0IAU^rf>ug&_R0f1dzZaDk7JP`=2xjzwL-+$~DK)J? zylFn&2af{c{WBGB^d)b`?K*tcwZ~bZWH;FwdT{gsc-1N8-hcZRW*(c6;U(r$@9z;h z=r&6nQiQpuaDc*`PNn6^gjk==x4%JM>)#S*37r53h`&DDIqo*VWqDx*n6D}956yMM zXrM}?$|-jbn~MQqw#1<{r&K*?J#%}Uyl5=ZiYhOPWs*TQxv(K&wfd@B(`BBK+2qO& zTtpM*i41#x%g>Gj4cFD}Y7nA5+O(zbp{;UzsD2*>pQ}a|n&{m>i>}1RVw9+t0CHID z;n4lM2d|2OLNynnvth~8uKk6BZ0|LC9(!6 zrlOmH0TJ11=e-_q-z7sFCp@>AmC7ZziZoyAcduBF?kM)%Zg@?fvcNZxzBUEJ=MG0W zjK);IWvb<1GT2+$huqF03Dn~#OkZ9zQ;IXQY<9D>q9#)TM59{PRFX>w_?EQl!s#`U z`v#K?cUC3&reTQRbA;IM7W_4>65sCkL9QhWo>eh7>*yfw3nvjGx(N>50>yMK3x5H;OU@4u;EbB%vop1Z@%Bs`&HhZ{~5MeNx>~8 zqHR+NO2opYzO5=8pGm7hQ)lTQJLL^}f-+$?8Cwi9LxQ0BdC1z4kennN*SNw$B%gyh zH!fcPaDjglY;_kgJ}bFu6DI&hn;KuhcMy+Uq1Fj8n>q)qZ-lB!pPEZR=*_o5d0T)&KYq+C?mDNfMZQJFgPC zJEC^fm+=9Sb{)pS(SyLJwJ~r+H=M^>Yz!rr2Q4m(AY%5@hdr$JYr${VF3Q0s(4+B` z?-dX4z;0=1aV53Te&QwFDy5fep`)gZgt^GK)>z$*%w#%o$P%rvn!%P?>JbsRja)*F z1Y7p^h)1O2Vu;OhIX_Q?WIR#cK_+<{i(Ax%GmqefaV3!@n~zX5_0oKQNQSRC7Q>$6 zV=2^efxMVXL%JnH#8&hp^sB(M)?vX0B`VzYFdzwUCjrTU2UtYI3pwvCU!;@(PdMlc^KIR4_YJcYR3Mv z%hIg*xD1nP0up~QGX3G(h$1@;+VG_JHG?VXwepXMi+eaMhWhp22)}$1o}b>5o1E~e z{~GQGZ5NN}mA@crIPc*0g6k(4pS9RuA$hJ!sCendS%objXreymau;psRfa7_u@m4A2 zSg|x6eS-kHGp<<=c2)Pkh}>{o55}%#l`$Arrbz*oiZ$^FKK<-(OTZOSe!5lxkU|dZk{yGdfB$0l9c)S|&2ur1{-#tEGwa5(qhQo%5dD z@G`a(tjDF~@!8Cazw?5;qBt^u4djGQ;K&$#kH&`iE|3sKe@*dN$S#g3tg>?Bcl;2} z^ns^_Vf69&_r?2UV|}s)dg8GYG%JOomlu*?cs(H80~-I#N3V}q+MggwjB|=wt#5qf zqO8vfYbDOCdzTSyBPtxWta2SUtRdF1lRZ18WbNF$-m(oAb*BTT%>aEOWJr{G1IUDH z^*hzyru9~NY6OzCvZupk)(J2F8QJ8^@vPsB4<^>r9QlCLw!Zy=YN-Vh=?K@Z|y%*E8=|;IAI%2j9t7zOG>2jGNNp}i~Hs%$NqtFo_Ar03C&AB35GM7TGhwKaA+1Uim z0CRmsPjv+dq2&$Ax>o`>g~qM`FydzO@eaD_G}DXx(M){>%lg|rGo$~`S@Nvd;9Qz^ z>`yW2q8gLWOQM?1vVWOzSEX6g3bay>dL-~UkqwduDPxkdl;M`(x?QGMXDCWhcYE7P z`gFMke8xCR5RgR8K;ZKiiDLWH7~0DrfsU9EiWF;lZ0F`r$AwXc^$&zM->mBE^>YKz zKp&z)r{);uKF4*-$m!vO*ym4HmC<^&nB>mP>*cnnj`8huJwcf=#Vc+WJtE%&H)Z&& z2!$6W70qzkBtbPDTUMFi`)M!hXhQHc1N|G8BUmO&y%G$-y2{?TGi7RqKjs7t2JNq< zF}uo5s2UTL$`VU%S`>CwsrMkO;A>hL?isJ74ZL@#<}^b)-M!Xw2}e4ojqNK%lSG0iksM)D`gb&^* zu3^CRe6lJw?1B+PjH3hIGP>6oE)VUGfonO^>5R5A?MLeiGMY>kZTeLgJ0RDcb~Dx` z3-mgdf*LkcLxy~Uhj^VkH6(XS|F|ymqS6f!|oE40@Ws|GcSF ztx6M1bZ4a3Y7Rp#nqkJhAJlOZ+LZ%NgN|GgBH<1gl>N6N@KhNj%>*Fx3qebMnLusX z&sS)p8hv#Ku;zhBGt4@QK@8g_pni;yJl(gNtk`s5b1&)L#JyV)AlH14zJ~Q(xYiM9 zCPG1eKXi@bo7TL?W^+1gzJ{%(r}I3ixvbfJsg{aoR))n@9980cMY*Vjq+Jb(R zMn#J|lyo^vjH5H4uga>O@5!B|Xu03n9YU-{VbeXtf7|M#pAe(c*e_NdGNL487t5MMiFO3`=eCzhg3tdA!W{G2pV9+P2zX%@lf(%r@ovJx$k$ zf{AAick7!^Qt4Sl8WGAbx$=1D#23kXV#sEaxB`IH_V?L_;!v;+YMPCI z1jo#VU=^K~;hso(PtBVjq$G|_(3=R=&W!IeE(QS; zfFKY)(tT7jyK~7Sc5M4_AO~VNbfv9?ujh+vBunk^(0ubK3O(s!LG!GrT*< z_QRd#H#W!)^8u`I=*lB^q^&iwEJghxp_h%91aW#oCBucd48dkh2q7vnw(K5zts9#0 z-;N5pxPezjqF$NoHeFmtEjd__2+j#)v~swHxlm)qE~bWK!(*IBL9cL^PBlfL&V2V0 zU+ZU#JT=J8ujuqc=?C5Zked>&Y5W=?099y?L7@3m_xQsu$pPtSAM#OPK@zhK(XDgq zqFdJ2=E#ca_y3 zmIrckH_9402R{C;M^amJiMdQaq*LPIRDp$SE*R72to^IPqx(Gjm#{6Pd%|cnxMN)( zOR0zWjQbPULrMn>84TWow+3XjX!EzMD0-7B_|T!*Xi|jjmQ5f~{=`oHt`T0c^YF!v zr@~i;HU2$sTe(LWFbstedDTApgFZXeE9mIx>4cpGytmh7s26oJ8-R+`A?(_e9yo`x zVs!ktY7C>y2gSHY?M2`goq!z^(`Yg?9}I8TlBLduG*D3 z(B7rkKu>dlA416xy4v1FRNQY>XrH|Vqo}XCi*UoJ?d+Hqnkh z0_p`4Qx}9v!W`f#v~s zubC7cZBVC@f4y6?&NE`eEun@aS`>Yv$=BaXFqr;=ergM*z|4s-sBRB}UJ-_M+);4%iU zkTn*v3PNUKT$<>=^kG(7&F708x`SeU`P2JT4nc8cSGqtX56g(rWL1OkYkdNVN= z-XQr|j^q|W5w`5HHcajxn5eneTsi*sCAy{AC$UKQ0Qt!pj_p2A@d+JdF8$813pYq0 zowVRTOTXtW6#JTHSv#jK`9gH6^@3p}Lc11eZFn2NeZdL}KaiK7mr_kuG==j#Uw-4} zkg^Y~yw8IY5&gYBDJPqy;B_hlY1bYT15mW-wH`W?rDv9BjG$_hkt?sU`INnip&9di zB>#k9gKSr|K+ zI})({tNecv>_rtsmBkc)1babs26_$_C^}I)TPI-?Mw0%m%a|0dY~)AHX0 zd;0$(*mL~6{ilkFtrGza!#}+JKXqjdY)lB~{@Wq{?}9z^zZVb`v~wfSqG4oY`w{FJ zSbqe2MkWFdCi?$bus1cerZac9H~&%UjqI%LZ0VeBjZGXJjqDsu=nUu#>5S-%>3&dq zIx{+RItw~0I%_%`I$JtBI(xd`bPjZmbWU{6bS`wRbZ&I+bRPdzxBs^!fd63q|Lw~D zOSk7>Vf?v1|EGfQ5yHfR%}bfaNEL;9q-2Mgk^gj-OP6 zAA$d;o#|gkWTj{N*QnaBjK_b${EP$)?DUL3qwIfj`We_+e@^e8$Ioc7uy!(W_!%qK22Liz zCPsF~CQ!V*P>xOxCI&W8ZtK=ohoIxErlT8_hQFF*X%O8|SOdHXEYgxCIAZ zGab)sH<<5Hc9nd8EEhXXr-I8xWU2S`Z_1C4%!j3CCVK~g<&)*(&Groqf#?}(`x6o) zIWsUjG&xoyF+0-l0GOxz092U70GOctg2TfxQ*a2*cTbP3O$^SUav6)h)DUtFtY8}J z8yvvQ*;hGRwbC?!UN*P3f;V+GF*3J6FupJgElt7fo0x%9wbs%Bg;A3mi%>}bl@p-O z0VJ3_naqr|{1P(4tCA`Br^gp3w}+yz^sjeeYCl_m>78rAH9z4=(L;OzYhBqKT|U86 z+ZqCK`E|8r)CCm;Uz z5Sm+FLOF_kLo2mOD!HfpBvq@wSkllkxuv-}61}d*EB~rT+ZZ`bD(AdnPo~KM0j;W?}$D-_Xzi*s9U? z@daI7meJ6V)^*VX@m=!g`{f%cAuX*WjpA~+JdnaJ%-O?AJ-Ekh&g&NmY-yN?R)C<= zw<5gutp`!5jYVX3mvOYKs$~+-81H-xH@!u$nHkXUVPf_C9YMtf@^9+Cn|G@zzw4z& zW!hd1N?ow1#3$y{&I?wmlfnS1qcoln>EEJ;{O8y6=6_P}ogg_^JaYadUfyV`)y>r2 z>i0fxUv$KRtG#-_6p_ZB=cP6PJP2D#UZQfCQUwW4C6C!_hEMsa-y%5$rHV|sm!`## zoWm`miX$kX8SDArPnANt#W^0jO3lCov9q|!X9apF!e9vn^?k(Za1Xo*kjf6C!CaUZ za6^K}^`x}?V&1yJ7aMmF=MoDNZKa||Ic7n@*3xEu^#!W8|h?ixvXbv4vK- zbenx^@@wtNIff`m9Yn2IF1U-IeV+&NZQRH;&KHXUD?Z;)`8@(sh1-Cvg#lccibx=ZNz>G8@#l`)kS}Y`-Ig7X_*o zN%WJ2wmKDsLs+E+Io^IX*+^%ml8zKi%WGoS6$1>&=n#B39BtyYQO_x78-eD`J4_1n znPN7^oG0P!!jm7AO$zKNFx_#)`8(?LV9x>OH+f$kCNvu7*xrn-tBdQ{Ey>QNtWrX$ zuabwr1(PSB!zo8wYypnOUzb1O&nDLahZt?60#>~D1{8l@+cW@WyKSRs#_{kmMS)k^ ze5=x{4B$~CWDjis!b$JGDUxeLnc7mjqru>`PN z)&*#f#;Gjv3f{Ly4a9Fi5F;{Ve!YU5&xL6hO{I*Gfw%u-!Z-qz>=XJxtxv|tKlL3*Z?b0#s1wzk(&atZ06fEV!V=Qg3OtKnAS8tfFO z!!M!GMTb-g4KusfS$XoBD#^cBmm3D-rcqM8;rH4wS4|O2lZujOaEI_9>B;0uu=T3P zxU+7dpF|doRG_US7Cp`6pVuC^{)=rw#qMiyYFCKi3n`bI8v<=fOzzhp{VhRVk2B(> z)+eC?yJz^aRsm5n8$4%^ph@u(U#|tMsfQN9Vq}{hzsHF`e&(^hD)RFyg} zC`l%ZD523J$<;hQFcgG&cT85KMQ2G>CtjYMXKO_i%K2dh>%tSo$552y-k#;q2nx*; zW^N-GV6>Szsp_W$Q53f;8%aeP>YE$M@4}c+>a7NDao9t9mi9CtO=Xb!B9+g=n>_Fj zLA69qF^Bg8rG-1Llk-}Sl#Xv^nTpaq1h1d6uaV5xZ1w@>au7PWr?HK>!r(nRDwruH z5RU%E3yF0>B#cm3Z`@+%$1qh?TaEIOASS8S>!_UCg5z1Zsuw+=D?=?DYMC@#L!mG)zH?m`7EKybomJgUP?5`}Q z8}n-o8bYw}B3k9CpI^?6dC}r;6G_%OTa({+*mDX=ev^FDBllQAmJqIlRW~o@(>`%X z=XEaw!kFmcw3tn3HWbRSipVZMLtGS)!6HSPbcA5>M-v;1*S8A5zt*#N`#BFY3_=$K zW)4QqD+8)T5yBIr_M1nM8GDL~b!nK(+nd2@cFf?F`QJYm&Hj zrW&uzbB_y{_BTU@Pgkbf@q1i7TXcruDtzj?6_iiM z?{pD*VO~a9`lXiO*P*ZT8F|EtA%SCV;z0`xl&_$K8{kkszv91@^f%e6-A1Dri@4M&6?-0g1gr9&i)uN#AX@o6hHL&ymBsh>biHg4pUzFd=V<@IvPKi zhR1(#i8QkR)f!Mg(Pt7*DrM`1iLxvt5X$1;(pW**Eg`-<8dYqFY^8 z5Fr5~vT+w=b1hQ0oD^<|_pT3mY)~J-v>Ie%zWE4{tHtv+W8*Soh;89KCWF+h#F7&{ zJ%50kF3T$TAV6z{$J{_LYZpg2B@1ANKLW?hG%L&nO_aDAgC6&5qn-ch$y}~&54KEl*jf+@v&zn zGMh)=wFdPD=W`X@UYY{d49I_Uk#WrPFvll|0Rf)F+vgKKphG}_8?%3wZx^r7XRbL- zx`wu+1iC;tssr`2Ek4Ex7(y*X#KwO}yyN+oWd0CChWbtWtF_WhLU09R3pH4G%JBfNK{OCwKm2Nl%p($m2 z56g6h!o+DbvK&|JaE@|XffsHpT^0IhXxf~pU^C(3m&3i&GUIz@>!It+T1(PL{~9}b z)~4SIguxZiBFlI%*1OuIA3*n?ZTv*-=xOdzbAoIJ?W}w>-nt?idpL@CV#cOEq35K2(8R%=WKjYO z`>kP+Z+#%-#QXSnwh1zgzc!)W&U0cez+|B&4_!r*H=p=#_qZiBP?MZziUWzoHswHw zUU(Fc+v4qEzQvADG&w6M_HB8(SW*Rmxn37MM)}q+U(F6&Bb9fipZ+x&EcL)1wTP|t zx;zC4?a+w4RPIx&wzaS_j0}t_MS3c%I?=DKnx0D|_lG(QeLF6!xqk@smQAm#&2PJ8 zW`*Y$JHYCic=fd1IIZe&SSKo;hhExH$m}RT0C$rDlZ#>me^yZlJz5Sqi`Tvt40G&; zLsMiU^vum?zA3QD-u88jDDg6Ra=!CWSf%>BI52}7m$p);8)NjBGta@zEy$I+uQA++ z-N^P{*F#3%b3FiZ`6E$X9l83eqh`5Angn)zco-oKF((sus}h=lPQD0iBh{MB_%Q~? zcRPj0R>V~lRtTNkbg)s^4BLp_d8tRNgx~N3}bFwVSjg}a2`ZmSqSz(nxOL6>)Z=Eiv zn#G{&ij5wNJUt4f8sG|2oT%s5aR}4AjOjsi4}+Vr>u`&37r>W@sZG2fqa7Qvz{Jg; z+7E>1QxteF;~(w3bYkzoT=SpvmKTW*(U%H5TynNO#r$j6#&QE=)GBe?mbhd?rtGR0 zUDkhQwfD|AHz9z?!0_s(MJ3&{)diZ51{_eiYVQx2mdilyf_$*J$Hj6;FlpA>!O(x8 zb+nzN!aN~_1eiYSX@j;2KP{D+^x-4tun*DE?nOg*CK&+Bf%+&rg2y!u+km>=|x?r=VcpSA9@$GOS}_(YXe%IT#N zsU~JJVDPE&FdJyy|FlJY3aEs?(^#V_Pt2`*3Pk9AYhAkepaJ zxU!K0V;p*Pz|kxEoYG_(BJ}Z3jz@fMiiI9BNe`$H)-x@*Tt`LBT4iY3JQisVSQjMx zVl7I?6_p>9-4Yo&toHHsfX%4j_uUMHn2!zoJtX0gzg5HP98Q`V>C40UXR&+M3F*>h zB?re5?vc^B`i6<_({q@G=26mNIN$7HrFMxwReV-r87JH>je;0lF(z1i$9)h-v=)^? z`d9v_g<#q*v$epRaXg8EcJJH6mM{fc{&6@xdQt;fGA5pIoe;?iQsj?f$x4*d)YJH` zXalRD~M02ypYdfjocAZnuc1*jur6g+fRY=q4 z-u{B|*bOYAM-H@z>+Lec)T4>)}exQ56U z2|bpDS6)RMx(`K2DQ>JAzA1<~+T>EBkAE6Ldy2nJdCHU2Q_=1p9=fuayF>_kgH(nd zYxsZ^nb6)yNROGU*WLnQ8(DGd&oX>BwUG6d073WB?)Kx8;D*GM?ca%X$}g6hLu^T_ z*x>_vh811Fo0ynuz8M)|5(O7*b5&XhRQE6nUkqB(^Un^4@^u+B7JvJJRrN7Hg~Ejzf}LTmHl~)bfj_>lp*Le30FFvInIw?r8EiI%!=<+vH!o6?YC}S`2S;tQ^^lV0Su!j-$j3vBne)a^9@Nz+VQw3jn~{bHi|ECxGDZNKc-F z@JwBc_g-PRRVaNYqq!XqZ=F!p-yLy5J~ltO==RM$Lp#o?2gxLFX3(FAr;dJ_4xb@J zgELbweAa08dWG~%_l_i*o*0wDnQDs0NfZF3Z?CXApl$j*pkycaAsXlQH8TswQs_e zL@oT?_F?dXqw#^|YTI^0(!wFpqi=tKEy`z7C*|z8n_%&&uIIu}LL_T@Jr-6@D&g3P zc!;pD-LIH)`&996KDMJ0>EIUULI=C&GagQDqc*hob~`oOo)TUeD-ih2RO|{h65D~) z3`<)J;D=9S*%a7kq7R)GWN&4a9>N>N#jTMO9g{!`{NueO{j;Uf5z&V5@u7IiJ_ZND zJ3RUJ%vP_fk=-B`N07PAy~`H0Tiion&9|~GmI%{`x8QAA`|1&qU%_MSp!)7=bG_J6 z;<%eH#uv^VP#68d9;wRIb;$H2PCd1$-uFi?G5iPO9!WoooZMkv)Rjkt zVyE-dx^fxRa6{CNR_Er4ZFIZr?wX$3k5{^q72pZ&blh~S z*xM}3|3pbKb*!3~4i~3;7YZKdtWZ<(TU4*sY6VC=usB)znEla>0!wm(x(b^?HdmK` zBEnQ*`xa4;zd7$VFlV`3qm44&A}5n|PI1~|-+HwHb^RdCn^TY4nXY`5=8uNpWN%A5 zB@pBj!h}Me8ulj6?jr{9sGuRb+k-0_c;KFifM~(q9bhNWikrKuLkZdmcJXrHvtd46 z*a!vG@6SwrfTyXmfQX|J>}NIBujYo*P}gYO9XcEw4i>bZCDVLREr9v;Jr(M=NnVE$ULJ=Bl_TkNLjb-ez9n##FdJb z=9$ zo*N6hn1dq3YIOa+iWuw1nzZq3N4{%-B-XTfP>zbdI7S$tc!Thhwk~|q1TvU!h!#E_ zgl1(YUP1T{amxodynyw_Sw>I2uvN@M98|!*k`EnkYHfJpdn!{2WYKD9JU&J^*_S?G zC{nk|^X(}M9=3g`rD!u}xi zF;?#DndBZ&KfK0z6Dyp-g?qAtG>sOU7ZzBfv~N*(3;CuIAGgc-f*e#!wSaS6#CFY5 zjZ5@mr^um4^BcN^vKNsDCxYqRm4u0%Z;Dyg)r&S@--%w(m0EnxDX`Irw=BAuy@v?V z2gu~04OP32{q=|Lflv0rl~8=`L9o^Q>(#-nA-u|DRO0bPB)$M4YIZ~$d$Q`+{;V|O zOAZXRCw5P@&#EDztpX#9uX2D?z+(`i|F*f|Hc%OHuS<&U+wCOP17~S58wDor76j5O zJ~%l`C4&5-rGy#AlBMPGf;3?>O)L-}qAck_LqNvhE|M5O%pt380dH8g#lZAz(`Y|% z%}VWW!Ds7s|tO1_Ykdm9C$t$W(dYm=9W z&6m(Ya%q2WX>T(pK_Pl3bm;^*)-ptt#AJs)0OLg179^X)-5oX5)kb!~{P zZswy*?d9xpwS{0eD86w$ZZQYiU_~T$mRtJmvHzW@dzwikviq)_Hhm|@&-^n|JpOdI zFDRu14pDEih8-U7c6mBVy0gJ0o7i;gb}XQb1kKzW1wXZk>x_R%1@OU9=-u=t&d71M&kQZ-7I%Y0G5=S_2~lr_QQ!n^9>Ui}14 zWdZgzm-@RAg4Rm?S)0^-)c$yU7dcItYY*3{xy`1#`pA;`h?HZpmU*VHf()c~qE^T> z{bDG%J-sYUQhjQ&ROI*F7_0kZ#1Pmg1S>z5bB-C*Y^{JzCw+Bw zzm{2YukH5rzJ2(5o!1Uja@dxj?^rC1Ieej*NRScU-{S&~BD)r;qsPWk!%v;@gHK&i zDnd*hEv{OuR$JrVN{F%Nl9;i6$D5VE%-%T7q~fBCHr=o9hZyQNhU(;N_8U7B2jLEz zgfBq;k~h0dx41zVcpTJ8G?)E(-X^c%84e0FX#h+#BvhKQD(_79^O z*54@QaNmaQNz5)F7h9cePKC+Fc}aotK_IW^w>vaw8mke!?K)jM^=-;`W2uHCfbL%y z4Xqkc4$7hnt3C)6s<;zhRGj0)qIJj8#9;!(n`~oJ#SDr z!c@V*eN=3Ws);Wce*SMnJ_$$lz1C)VLT!#iP@464bVCfFmDmhU!}W;q+Lk)WawKZ^ zF!53}X(RP~`vtk;-C@zGlr!l2yGmOPk>3Dz;*B?lWkpH(SG?j(LWO%3zOu)Kzbph@ zrwENNTSgEzQ~t6OYg0=EzNvTnZ0@e%YtX=gl{j|33D5vKqNX&mqts(b(43 zywU!r@dP}zr|;bF<$`Ykv_o#}we~{fqo{^Mzs)r4C}NmQKUcj4bW+6r87q!hF0?|y zm$2HcK(hYrz_`^KASJ$P`ZrbN#_lLxM6w#KSZ&`2`>i9%aiW7HlHGyepz9LBGX%fW zaCH*|xS>G98*;*Ah-U|U{nYcZ8)Gt2@8DjPS_Dnf=GtDpz%c#$CB`E@!7>bWm@cLV z-McvH{0F+JBGvOgTk!)mbp8`t>j#fMok3YyOVy z%{dKi%mq4MyE54mcS_6N(t&p(V|)-PNF4CFYM8|l?;ZoF6*IH0e#!0b4~dc(L~N0Z zdQ_%q5*a14;!T#%A+mHj%7A*wd|6+D#fpBKseGhhWimE*z7PdDYqo)+o99O~1q1L&7 z!Gju@5IE0&kX3qd;56#4aXTJvz9ljj(Kf=CtPv9kQ?7#&wFs)QH)Y|6)g>vvfm^8x znL@YID-wX<*@93g5GY2mmS>LAc|TL5hwg4+IASX_IJl*TM%PJBuylj+Ue?#bCRZUp zXT4H=v1ff_W$ZY8ytF*4g6W@?5=$fzy*UtmR8}LVC@jq_N@s(EHK49Q6Y&m=VmdFc z(IedA7z#E2yM5h&Or%jnM|mB*arad%MWkzI@S6H=f;3T13ZI0nD!|1oT&C%U7BN>k;IiUY zj^)vux6e_Al=Siy-!dX`t9AgqMS+6b2phFI_VW~BM!9@;=5w_T_0{UmnRB$=A^_`& zhYNPySmy#ZdddYN)=ksV6w$26K{#_H2f(AgC_PBBtSZ$V{wUby0{XX)z3nG^e4E$q zDq89X{gK(rLj6db1F{-`H>ZIN>A)5Y==?jYWhJm-um?WUV9q1>2dA#8nB;X_S=D>V z6d|Lf{YW-jBqGBS-9#sdPhHVYn|G^5a1{EhGn#*pHU(9*LkH?tdM!q3EqW+q+@kt) z@t9j`kI>ZEr7ADIU@3j)FZ)OFn{{pOK)0Redtk0`>Xvi=`bet?*>DsiOPA_<*1!j5 z7;KlAJ#LQ3T=)8Yg-bB3Jn)Lq)tCHfdQ;o8d_cbyUY9uE1Y?YguiJe z%tw;6MkDa-k6JKV`{3FLE9E8v_m#tHa<^3W*WxkZNZ;K3`WE`Na!u6h^x*;UhdTn` zsWuV`efbgP&)d^BG zwlelxE;bD`7HA|02_iiD=_hn6Db-;0Hg#?cUHc6p1R+gW2B|*1(=9q zKW;<)Aog_66K3xA=cGbSx)ebSEFEuy!5pjMTH>=BE9woWN6#PQ@&w^4jU_k(4m0ZD z1+&_7*y3>gGdkTL^f2`kDV%D0VhcDrl*N@UapmT{!B&fjHu%!z4o@qH2t-W&+gm!# zB6eKp4W_V32Pb2Om_H62yBw2w55ggy9_-?8;}&Eo^y;{rdmy44N>{f}a?~C+JRGJ; zv5&J}qgiUZngqR#N$Q&U+4 z%M7LvJ;Xo;ykHO2yFSbi(Wf-RZ_NuF3^L2C-abE%{ho!RHAg%eT!v=qgz=3833jmF zY6jZr3<|`IdQab=)_tV%Wy4{Y58R+*S<+Z9Bj0sq!t0i0U$$UUzmpm!y~Z&?{)~WD z9l+6Cn3|4?+Iydq`UGj)q0z*&KaWR|D9i#;og8)S29>#?v=(~ZHawT&9oRao)XkqB zqLn7zvE##Tu7SQGZTgACUuaPY^B=ls zdF@&S@@KCHPolB%w5F1E{&ro{tT##~^;IHzS}ArkII>Aq`=wCfVbOve{uO;dKbW|B zlM;Ar=xHRG%EqLxuTG$q#Z~~U4=BlUrl(PA5I?N)Vs;f@$6x%CblB4hP;5H( z)U-K|w%zB}_b?TC8J>iL6#!vqVA6R3|CYL?E*EVLit6sc`@MMnVmj>or7u-HaWQ+% z2EeE4fHhRhx3}7%IK?GMfBNR4U8m2<{TV15Rp9}77(@t%J>0rj6?7BsCA|DGU~>VNid}~ep_JFev%n?J>66waUD~F{$ z&HIPt6)oyNW}k_68HcG6W;6|lffUVc+7&6o%e|=9m#&bvDj-#)2i@omq9L}GS@KY6 zsJm)xZ)21X*-n2od)$@zU~>i+t|fClqd>HEb)<|hreyhz+S9z8ptl+1^9lki-4044 zhoJ(AWp|B~=o#~u$4fD$lGo~+*S+AKWF-AHoK9l3EA_7hQwoPrDDmFQaqsc=R{^Vx|1 z^Qk9p-fZj1GXEDz`Dt&45g8(P?H{6_6_cC|xfm}E&I!Pkv-#(Pl%=Z)S+i`Qk@#zJ zgx}TR^Qx2C6E+%YCMM!?4$1E_)47AV0*l!P8qR<7PlfwFkSu9#;Yl_xn_vgNWH~S8 z_x;rhJZ&XgF+OXLm)CS0X~z==j$7Sm(Srl?Pb9Qtl=ZR8R8e5(xgM%v z7a4767y_T6V>&0~G?|F1qvCz2&^25_upY_%l4d{;^bP{RGSACuvUW{9!k-x2#vHW> zQpkUZayyc7hy)A@X2i=So#~r*)d3 zO@0c)dHVDUl$=N=6a<@;o7M4>DhC%VF}JF()aNZZL49pXuiXnLAS`gNt$TjlWTq7_ zO}horT4*`9qT9F!^U|~Qe-OLeM&K5?B)ZzWLDNjTEC@5Ar9wWHltV6IZ6KrhYhSO) z%N#6+w6f6H8ePk@9{>@wrD=&Pkilz*4=#Ql0dHv|E1ZujcVHT+)k_37*nvMvzI-Io zbC}_~Z!TFJaG(Ubb1jiFX9KkdNt6a^2+oAM+V?S z3L=9(DweZ|QW{C|*T_2MA%|+4eV{D`UIl=aH}^M)8xW-}8LtBycuHH>p2db&+`2>vxwXizPR;?9sC6skbG(C^L9;!MjbBlNo>l zSI;ytsFsAMqN={}C=5h#4FLhDETE*-p361f`6j?K_R`T=+AkhR?Z)^zIF@89Fg2^V zmfK(J8p-7nDndr1V-au&6wnuQ-F-X5k;pe;{#%qeeY| zk3?0Y;7eMg4R2;`IXMk#q)v~5_UdRDk=#UAy=$HsyQbar;z#hGK=)W`*?zMRt1_K@ zzxd|Fi`g!r=4HWZVRHt)%OUvVWv4~wzS)wpkI zHZs?PQ!F3G5Wg$VO7wa>;3CC4eIx)@I^K?4lShF>Jg!(>QiCL_gW!61=@KZn4;F{_LnSTQM9BJR_8!h%9!Df4N=h-%|`3d2t~MmfEEwD--*2IPyZ<5v|=bm z!7C<+uRo8u7c2`M>r`)e2j-vvBpYB!;{=WV_LCeh{l=dN6&cUY?o|1r(J6~jpr(om z*ziAcWjAQIh7PPcdPqWuvv^Oip!m|W^KYN|cx5MY#JJs>&5`L@^QMpYtx`F>ofsV+ z@dnOXj8R`jc#2OICYTR!QX&jVA@Au&zIz<3k5p#m_l>0}dXpPV`1el&NpE?Ivgp3W zdIg@w&Pm^&6#VE_BG3j6J+FcOOAR}LdI1$yCPBC^4xr8lMwY%ocJL_0q1xJe#g@k zt!8?=U8+alkGQ^mMXNsv{VTv7rZGK8yl#RX*?bafAtESQs<`H~5E}|@;oV=6wlVWp z)(-)7PmaDtCj>sI)AE3RsJ5NkCkTg;hwST&X81c}t}+LrQ7xtozxIyfuhmFWN&)N@ z{S$Sa9&|uE=Cz=>N0~NSyv3eyKR4o-P3l%ITEgNR0(m|Tp$A(ZSWIph1J<~ z#(o7kkeSptgpm=hqutg`nT0Gl$P6x+?Q(mSZ6!IQ;Te)u9&^^cH%YJ+j7dc2BbL7o zGoL9Romhlu>zt_}zbL{P1M*2ENlgFX?C{w)F#c39(=GYkLbo-$5>xYY61@Rf0#M7v zBq+El-el@a+o9emd~)YpBT=YB9AbS zisMHW{kyO|1RAVC2c<+PxgAv(V|P^koDpe`*eCFWWM>~;=d&H&D$^+gMjm7VH_=-E z5)s0Xw8{yVgMpwc7P@8?d0PG!DVMtCo<{&7lQu?Tq_}s*;9DrI4TIIMIm=wn!CRm)@ zTDbAHF7)KJXyZGwouF$Rukz|=Uv#U7#`eTvE1S>i;#Stp)s28o?^dYooEtSFt=#eg z`~f}|dEW0z{#`D{&|yAO(>9BKZ6&>NPio>h=VjPr&0;<`P|+!Fgf2WvI5d*!3a%p! zw&^Gc%zF#Ksgqm2=PH7>-B_%-mkCE!=2^iq-Kwnk?4h#0u=sx~N9Z<(9r1I#_vRP9j{CHkk5m9vJAT03 zHKF2a{^|pwj!Bfis*71Uvs;zm*|D_zXv7GMl@Rf1L*r}z@U7O40$*yzf<45R^!+4e zNuo^HP}BqE=W?P13{Tc9V*$DOuYCL!$OkHb6dvis9^?T(_aUX#N;%gIPt9(ga&UD~jaU>%?E+o>SrGlSkl z`TS?SmA4#k2eu)9AU@&4g+a^5w!>)=oI;2qkqHWKg(rI#ag*p}t&%`tC%5RhQ-p6p&agft~RhVs6*^vp?`VPXeHCA z)6MF6ZrDbmf3fh}ft?HD{a}snt!*9x(be7E!STokRK~FtQT;czhs=l52+l#hfT&?$ zY>_Onv*#T4NrR*HI3fnExwKSqoD3ri5s1{^9p9a~wab!6+g~O0}r2D*R>~Pn0-N@Oa)Y zqXT<36ZYebv5F^zxjOJ#5)^VD*{zBMIH2c}wdt(?%$}J4xJUWyuHk3Ao3x z{{5#Yc<#iZ>V9>u@xj$i3lomN;lC5{OAgo7dP$sGktjTb4IjvC=8~)m*r9D1k9+c#DO&Y7c6sW53GI2bLcnb#z!%Q& zu#wLj#lLxi@lKp(9?sr+jkK;uSBrNCSS56TNs>`!+A%lmzy1Q!RO3EvPB3yI4~D!f zHImr>Wt#){=kEnwQbfU?f@{lWbFrG72#J8P`%sx z!*$vNGsC#Lfu@+8`e@F_WaY!s_0iMf)&iuyNaK~M@ZnOc*ZJxYTBK~C6<_k+$$0ab z8CW5h_N$0{Ay{2mLqOQ|zHaIXRlQiEotOML_}I!iyL@3`9v0CjM~tr+F?DL|61r*^ zn>)Vt5fh^HG?5eRZJ{Eqje<36|PK1Es*NYR-v(QRqw; zdx-dIGxejJ8c`|vuv&RlO(VddpHGqwLwL|gCB#@l^}o(6#ply4OW|j>6{!Ei23Z~Q z;lUQl1(#9zgDklUycvgC=$dh{Tx|2;L?mQrb04M$7h~eyrkjU3PP#8lW%-S>5x*)z zK^M83IUkJWbzhT>7jD9eeSUhEY-yU>Rg-cAxVCb>`h$;}T$Oq#!6NrYxGM6LuNRUA zAq32lD1aMXV)GG-)Wd5}-(HnK1){7q)EMX^Z7jc7aLc#?$LCqe??(XbQ*befD^SEybj&K{byD!$!kR>Vlr-$Q_;>&^z zL1Fm;)b~A-GC7oI?Q2=~Tq0|_^g4#TXOpM0I%1y;&z1_N^D0KxW0$e`AnjQRAFnMp zFEh*?2zeYl&O$&;3vK{HdjNNT21d!44?60b>7S6F&z^V|0cw}^-1dZM2nE{C^-Q7W zL=w*I&J!P;Z<_NCg$+^nZXW>e@|RqAfb)yEgHDC!)+NbA(nFpekag1L;vsGD$`D>H zoh$_htY|PHb*zv^Cj@3RgALAW@R~)YXAhtm2?>P52#{jit}q~J@Qda!P$Io=@R-f< zIrwLn@>63VoE@nOy+y6Ub-b-dSl4=W_9KJoj>AljsTH!{ldCiiTwjEvHQHhL;$!~a z=Z;hAi7#erwyx-!jtB@X-*H=L;w3v$|H^x{>Annc6;3jLsf@?b$VtkCbymXF{X0P; za4$J;#^x1IGj2{*X$+mGw}p(JccN?Ag2crkGCdgM;shzxwf$WZ8*b_tgog`31b^AAK&WNCM+s%BW!V z&^UXN-lk-%zc+_KB7%|o$Dvlc7DmdBbUm>e-P&2RH#wv}Pg3>=cQS~Iqak|YEN}Os zj~f$oEk)TQ4#@{;;nVM{c&wL;M1lgJ7*LW^bQG0kq*QXnL&j^& z^-UZO(qo&=>0=En>=NPjk9*oy^KLp;IYM1fm{gHW0&9Ubr#)d``^PJQz`m`4Br0O2 za%^R&oIcRwl*xgx-PQfLs4WVp=%kxUa?4$Zsbm|Jdsejxf&+}N7vNa?*Pv^e=OPnNW zaAYh&zhC4d~oxODB2@eUjfxn?F-&Pa*R`6}i!8s~YF zEVg6LnIqKZ;kH>=YuTI%1RE}!9t?NgntA{9UO}*UB9x_}JBbsAQ8I~gZJ-Vc=QIi_ zG6(trU=O32wnzpVBn+m1KBoc*l6-Vz4YlDhDB5t30=b`g!zlxK=XDC&h}c-4yOnR6 zNc$lc2336k17$2|=c6&zS9FpJ_Ly-Jj(kTX3m>>UJ-h!E7FJ$uWPT|@_#CL>+jGIG zuW);?lS^MrS5#pksFk);eaAIK1bB^3ShoQx=dLWLIn;4}ew&w#o&OWyp^r6?bOWbR zPNt@-iw<}|a{p#Xt2ff`Fv|xz#x27Y@B!|G9(<(z{EqheV{62%^~19xDrmrY=QXaF z(cpVGL^;G0O?0k7tfAUO(PHhq`e!eUe@`z0g*kyWAq4UOuz_GEpeRp+P6n;}q1T}3 z9Pt|M++$GdW+epm`<8&b7WM@K_@Mu72>-qah(=pAKf^8tFd@t^)JP$;9AhT64`)0i z9q5WHp}l(F z*96@%!G5kkq;W1j&@+2JnR!kQtkfy*z(%g)#1VZV@1@KSEK+4aAj#D+%FX%*qxJS! zM1Df=yki5w+6Mc*qdZeryxW8jw5P{(YkW}X_2}9#;-U@D8@EKcJ_qX|Al855 z_9Ipb)uK&L-!PuCb+B120B5jm@hc}PQ%2FFbk_NtX<1LyRUYI~r)KD>?ZNYk)h@xv zf3TW;d>O>{vcvGuwKFl5?{TGcQdr~@K2*~m4p`aVXBvff#4%CIqJF|4g!K(VMC(8$ zL*|YoN9+MkW#c6bu4$BOoK1sG#s^6n9g(pc?j<5Kd(5 z8lD@w`U%l2_1+}11GlepEk`)^z32@-8obhoAFX&+=Ire-TFGe1%i7Jrv@TGWnG-fg zx%jaos3QD9fxvc6FOP)m77~~58q&GX5Mqg7;p~AcZ&ayb(X@Z2izQHrrsZQi&Ti7~ zG6?)3tb=}h_ZI3z(>{MNCON4bbHGleNM5xy-|5KcY}~b@*#FP33n?!jg_rrv&z&-< zuoNxx#BHT;7;`6gh7p z+~i0%S-Ic%PlU&SS~+?}Me`HUP_C6?8dfN;b_LI9Bb;5TaN1c)zFZ;hY+o_Qyk7Rt z@59s!z%)Z8faGjow>+hxj99MxZnjN6Mf*hq;k6}B?UWc*hhO^jT z^yk3%RyBcpt}@xcJRBQXM%7!9rVNV`wAVr`l&*hfK2kVTlNFoIgO%33&50Df%rMbZ zPStCEp{B^qe5Hb)mFcV@h^%Ov;t9`0dz_QBO$5s$wB~V?8LT`N`nC7@z@RFiOXRo&XJ_T zJ(akh$9M2!+vk;;vPnd>-PUBsWbZQf=qXDE@&@fRpSEBdA8UP^Vi?9{Zs`lcL%m_M zcdXfdEAJF1i@Ek`%hoE_HK3YC#7#Yi%Uci~#srwcm){qThwh`)qBT2+)Q1sU%BQS( zVtXoqexQjn2B7`52_9%DM#MG4b04y>vhW%`%nKMt<_#Ww^`7KxFT*|n z;Dz(_DE>hEzv<$er(RsRBGGP2myu~w@-`Jhu13uREe)K(vYsiy zyeC#FZ{)j>;0aBPGzLxf^yhK3W1ExMH@cF7AhPaAyf}k68ENtyI0B(|k@;|KS9xJp zOX+MlsUi-upHRk-O4MivRXZ+GQOeo_2)%6Wa_pV(b1fLnjXI=Dp|NaAkB!37zA624 zH3$3m<=iRu%NG-wn(!zJzQ3e`Hh4*EFr3iK1wz9O_ZCYJ6-1>buBk%EA(?4KrvbTe zE6j_S`ohq;cFatC6W?mL|57XpsQ$3F6qv4Z(CqLxIhB@jI2WXupC!9|;2hCOubEDOpxj{k91H!y&y(KtLvYTDh@^7dyTnbQ)6 zMrA+j*7QLyz(4%l$E4Vk@ATU#^#*O_Z*D0(ff?wCtrHUC6#QJ@TlRa&6EAM9Y2E$c z94rq_vbSBjO2UU z7Ojl@yW0l|)Bc`wMO!0WdzPbX9S?k8Pp&ruQsV}a`rDPcnG87u_kKLjkCUeOjhVPe zl|uYSI`kgt4k1tYCr~j;_X#C5idzqu&-DWDtbFO@@f%rB2_e-o0rHSgZvT14kz8Rz zmFQvp{#=Vk%epk_YsHUrix*e4IvIiwJgfW zHpx)A(u&E|$eDgm;J1RDYWKJ{D&kTqO!^$3&DZ<5!&qvoc*uUz=YvEx8%P*mr6_Yx z?=owbJ$ccmmQaJHSObe}T>4#{F~6LZWBK31R8f}zi;w?QqRe|b^Qfj}md6?#16e8p%5~%aq7$fKTs}qlTH+Xl&cS2d}}t zor0~ffPN(9Bdek!dGaEocwJNb5>ITaB)yBizlU_cY&@ozz0$W{VO1}^?Z$nA)JPkm zkXzwGY)6>G2aqGG4qQ)&5BH^^#*J>oD~ZjkAFGo?bnA}&+xrcvBB3zw)UhWzO@KI! z7QX@-t=wB-*rJ+xxIW1;f7-CCsA6%HW9_!1#J4t~|Fj3^65>seE<2`TheR=na^*7{ zzY%X(dv}Kft#*WW68%3hfUL@4Af-0Ss)__6mUrqC9P{=bk8r=*aQ~K_8OX>=kDfI& z?92dyN-??z?_d}WHFi(8_8{#Yy-mD&@|iwzZQm+=7!uqp6&URzIFU>L>dTSjFzFL^ z$1ii^@~TuTfZu$O5W8Ex=+i$#AhHy^-(5GKGS6x+y}TpwrRwY};#}*|DDa=}e=D$E zk2YM!^(Xk3m0jYcPBFXuAO)S{ptsA?L0L5^9t(3p6)Zj={iKAkC51{FB7{ToGl2$9 zwkvuD(GOCT7XmMmOo6ICRQS`(s69{}S6tY(qIn!iqnF6tnQ;`xYYl#bS>8noC`T$6;dVkY8%H=ffTw;zU6PW$Dd`@ z-S5(;m?^!Y%b(wTA61wEPHCk74#%a>YBHv!;hnW}>f%sx07x~GQ=NiuCq-cwyUq#9 zC=msZ0%kh3$;#3%gx(|1X;8AIICX(jKk~{dgxm=$ydu(c*x7=kycS?ITRbPoH#=6bnKg|^V@Nf{;4Bi2G04Au-P zNwG|6h{CK?ho3u5IVs77=mT>VXe?|zONOy`o5u{pWgqiyTn$R!Fs4_WWNAO!4wPG8 z0-bscq3q0fR`VeHYDF^^04OU3Qg`T3x%J-J(K>ZFy5+1jm)D5&-&|xVXrWE|Ex9v; z1U6mG=(3CX0{o!|{K5Z}2gwH1#d8%70Oq}Z2mS#y(e#x3-?3lJ|HV!E|I2={aQqkc zipx1B(l5D0U~FUbAJ&S6;XiBs zJMAR+-()W~4$l8c{rb=1|C9RlzZ~-aUHxMIzfSDGt6#s|6fH9o0|6r|E6cC?#qqya zzdVc`Z0T)njOm?RZRwrN9E^X7FI#5^dJ}UOV|qt(H+n~7mtPUg*xc02iQdNC#`u4h zz5XLu{nv)G{{mP4XTzcXurf0e{C}DLhljgwRx`Y>hNot^Cg@8 z`nR6eSFNhaVzE-w@v>Y;H6v1DavQF6fA8N`k zE>16w&4T6b8WxP0Gb>d z*+R#nsv@E!q$mT1LM>E40K;6#05Bo_sI&lcIesNrTfl&PSGckO?E2DT5Bz9}{gPPN z&JI5@qTnN=5DaxJU_g;FQ?ysRr$0j(g;{C5|E~CLkkLbaV1G%hw_g$~{FlT6Nli`v zO1LsGBsMj(gv$N3uAJ=ve^0>ZN>(Q865wZldur?+f99tcYh7#I?emB1M?RQj_7 zmY4g7Mi$_o>}NlZN4^t3XbELy9c7H0>-AlXuC=Nb(q?TnW_wnkB&ema?v|O_hC4zp zF}X`_3K{VxxZHOZGm(c7-1|C(w3-Qlq}5f7gOn`-dpcPQW%qF2$i|*VH;TFAHa=vqW_R{J(s5 zxNB~7ZE%b$6nhri5?@3!Uvo#|6Y}ZD7_KbT8C@2EtfQ zcW7Vv@#tk>Y%<#+W7%5iq)=j2XDAS7jhi~))a{^bcvd|NBFaAYmtr&<1UYvDgJ1Em z6+9=Pq_@%NI<<&#qjYrqV)40~`sgyQE@=^?xw#7?8NTV6K@qvQ0Nh!I5135KS3I9p z`O{dAaH%BbG5E0!1F1wkQSmk8?pe-;(g(L|Z0Oo1H$2zl2Yu>|%&ngkL;W7KY(W8{)p@$^q>>ZCyz07N(4dfl4T*n$Tb!KA(Rvqp+SLWkWs1oqqg6+ z&<>?am7X$wR=ge2WtP`QS=P|(PCO)@M16(<6#Rlb%0#4ay7d!BIYey{XRAy}o6|aV z6wGXVqK9M6&OjaBUEfyqmF#*G(lh}Aaz(VmRgJ10f45BgI;Hd)M|@dx-(go^^%NZMxdZwGG6EUVrp85N`vnJQg%mhE_M(>B8Yu(0< z6lfi|Ti)b!)e0n^iJYb@4%bv5YMGI*(G-DtM@BP6M3L1!h=>x^B0SM{1~O#{R-f!K zgzH#&m-mR}JmTiwAyoheA9_Ipd*OUVi@TXd^~1YzRJY*Qb;l=k&W6cAbP=`HZg6w?EzzlM)BlNc8nL`z`AcfXx08POy$#=(jt42 zoy^&iveaY#_8N&9%tAw{BAoxQ4Q`KiQtotQh~S^GaCeujKP~VAJU-Pa*ayeR(GaM! z=S?B)`H7|4xG_>4qd_Y&lI(cWR}6jU4rNQiR6(ENA&?xifsmvO4tD z+y=?(m++6Hg5ue8VP~+tj&I8{&)PvSt>A^i9rI~qLZK8sNenBiv1hjz#)AFyy7TY~ zD|Hi~icc=lA=!4?_8q&iL+M4A1~$lclHRu23AzDW-vl6~0^r6Y`VdDx4{I=I>czc( z?V4^*FI&M(RaDaCRAJBaI1>;Am2DZe4z1C*`x0V&u(^C6PCKq-{F-(;b>D(Vsano% zcFGZ?u|H-RH5dsn0JduX6sWd)JS#?=emLH}5c`Gv>q4}mftPGj+AvM)>9~l!@{&};Y zU6|BQ>Zk(yv_M3&w|NS*`RBSLxsy30pCU3E{9@#YQbh#xku4lg5A%nKRoMXD zs;rGe97$_I?MNrRgXqPAlAScjgqOx-QkWa~&$0}#!LyEd)1hx20@ME`P zxJQJzb${ExXh<%U;7c+O>T5sru7R-cpt<|~z#mU?1A+v{yZMGdFDKg#^psvy|4n!u z?98(R;m~`t2;MMAWrcvUL!Lz6dYuQB|87>A&6UU)ft6s zfWCx?)hWo)WY+({l*_;oSrC~u{(SkX_L5XYiz;qDltO0(dgUA?!hbXpteV)8$92ZN z&_RP%Ejd1eric0CEy2IT24q8Uv4O43eb{e^r#%WB;D|at{DZ;ybRt@Y@(A5QKM?0* z*Gi4)+JQuxgr3mDH)js=!_{e3v984|v(Cl0JyjE9dF%-Ih%H^#kUN{#;HJ1Pympbj z6*`(`7H2Frp%Y_Cv$PY179Pp0(6P!X%=XU{v~|IE@_j8;ZGe%z3khl0+RCh?FOi1% z757ogSW8*V3`rjEm2j7=?*y!yh+UDICeedjBe5;{g}%shN+UcnIqx2A{Z5GT#5!%| z9CNew46{SEA`}L$ltZuH*K0!VXHGQWc8^1QU=Q4C&bqcb?wHO&AX9l#k5t((gPEqlm-B;(+$(hJS8rV`6! zS{6|%Z6Ds<;mj4GY1ulaM98wgGRm|&$x@s`SOh~l(Dnh$-h_M@-pcho$;mJbWF%gu z4gw)tMsz&`k_jz#aQ0kI6EmpBr44HqmlLAe{m1)gs+umJ-NK&^pJx}vq0-L_&OrJ6|aM0XF59^viw)%~QlBA{nfrqkM3sxpY3;4r>P3J_?C_SaQ zK$};>k9>evNgXkk$3$%fkPLQicPH;nD>RZMVgBl|XG3+)0`ODB9=iEAO{})}A{rxV z!!8<4GwkiTbm5Q@M%_BRHj`DyEX`dLY9;^vRnkrHsKE;OU(1=yd2;yaT|b?9wqLhnL3@_oLe8<%-6W?L5(n)N9=TGzN@sFA!hDo`W`BfoXE$>MfBsVcO zy4vA#VF?R;o0LsZA*)d_LFT`@}2rV&pDCH&+k(+^SH>LVVY1+KkkZFa&&~fKE4q2vSYjrE^8OZXBBfhbM z&fNj@yIY0OWvIYy%Y4cCM{B!PEj%EcflCE3hZ~{%^VVH`8?aPg>v$2#tgIp9>4S^q zj8=&M4k~K2t0&7A9b>$c?UT@kmCFIY`Li$-7FjNK$U=Z&Nly7UjS)TZ>N7 zgkNoZK!OW4?G7`1M4uiiaMb~+45&1#i0pPC&MzW&>UWO3T@z|I9Brmy@XC3Wpb5IbVMV|M z__S4mV^9DuV&1rtI=$KO@@s}C4SQERyi{0ZrRYZ)pP0~E*|2H+At|SQyvKr=D$Qbq zPH#7~vY4c&T9G&baqe;wf-&n4P&R4)+Wv}pc)cZCt)LT)LAE9i%2&Y2LL#Ao$hkk5 zdIz3X$C#QbN}BuoqFxN8+lXWozo1GMxr{MGrY$zU`2ht9xhDui6k!EJ@TMYG5;$m5 z9l)_1#y9#2h_#8^!QVM(@AR9N{;}~Qv~0G}cfw3YqInPMZTzuOT>iEKcWCCUMs)F5 zU=jNtO`?{LjM^f5x6Y>Q??s|j(S7py{mri>d>h&#YhlGny#N6>(JGWaY?PJK;JVx@Xph3fYCR8;$?bz0*3uUu!jeP37W-1|D^?L zBYNLly6?r6I)Oh5gBoo1@vRFL{*ngb-wb>T(n_21j&0KPBL)iCUqF85qw+?WgnKxi zx5b{a8Q5}3jU}*%#Z#6tX#MeY&+0jf{VR%R4%>|x@x_uy^kgY)4wh#IL_>_sk9$&e6&@*ViOmZPds2w1g_nv)rhVI+$?LU%5 zb*&v4E$=N99AZN>r6Z~OK{I^mANJc%@$U_QGjG7GZ$e`D22&rzJzE~qV1IAIMyCy9 z%qaSdS*OMPa{;#shWY*Za_s(_dzbyt3QDw#*>iqfpXJvpm4)6G87&%V7g#+O{PLGP z%td+n9|kpW8!P(V@CTH-$FqR`p8|R~ut<(Zh(-sVstwX+I3-snoyl4lTa_q7 z?Nj!U6*TzfJzTa#QdZw@CSGyG`Qy=6Iitp)pG23yHLJ1~LU44Y^aQ_e`I0*Tr9|h4 z%AHu5EeDomrz;Y3_B%o4AWphdDm_}VW=B*Lz??E5oo0`~DW}QIn842(qR_~O(4@Vb zhk|ofm2%{S0F;H&q4qT1{LmbN%$G{?4m2@@JT&*Q5*T<=H)l0J2kQm{rhY+G+$!%R z{Ro0Lw@EU~s}To}zHc=$Z~jX)4GoFGnI-$6+Br3Id*A$`Q8Z)B(3luQ# z7~#`$$j?HKKgoA<>Qb()1BjU@a<~sFwR@d{5TxtQ4J(vW#5Jq&*W3?&OkYLzJ_|PB z6|+v3oF)@c8&&*nBM?=YDns(0VOZD!{OTsPPOei97^ojWbkzL-n5F5^;Y2_q0lbOL zjI9_H4L%@i(vhAwK<)PN>|OY$i)1lc$<{F>oB8`yfV5&&$U_65t-H4e;Sx5ycRtjf zR7a_yhmAs;1xqfWj#Y#D!iR4Ni>0a(@8(KYM5E#gXxMwQ*Z+WU?%TZHv~Y`I`}Q+) z|5+~l+hekp4-+_zr?$km-Fh}*0n*zG zT6{INxrK-=(;J#g{&o=r?V_c|huY_XREwj5vBA#^tMg6CGfJNE@cEQrI#^pejI%C< z^e52*KxpZTivbhd7q{wV6#W<2M4zU7yU{Jo1o<=#Kf`ws^Qh+4A{TDn2XYIZP__gn zEZ*^j@@*xQBF5C8${9^zYGRRD(vewKQY;^bkLw>iF01sVpWDl}UwAvm*pq5#9ywkQ z?JuzY@aRR5VL{%#U`ip;hFD#O&9Cuw>3zFuOmHi4wR)|~Np}OJD^!ilozLZVMeT%@ zF>BRP*J{v+;cSy&kA-`46I@33$iMDFb_U}CM4AT)s)npe?i4$A6X| z5g>$|sFWmzaTt|%@2Hg@dtEW@Z3%8FpNThB(P!PkO4gc_AI-V|Od$VP@37Q{I!k?2VzlmjxR!cCP3`A> zkxHhxiWd|RYF7&^5Xbo>#H*{pKrsCjr5Z`K~*oEq#~UCa@7YdNpS(XkNLW*dw?~MGU?k0 z17n^3q9!3~3ZRf$`+;-~crzEt1}vDfd$4Im39Iw&b!Jb7`t)=>C1nVoo1K&xPj&>k zqLMgt@Yb4on`Fbjf(a|&IEH4SUWHI-XtHJn)1bzE@Y$42u-&K)V%+U@$u8J=UrZuw z!HS+lAMo2XUh@Nb4xT>4lD_LfH`tY5w@ZLQC#NpMm7&&~NyC;Un?4|43TeNM<=m^4 z#uP*zb2J;86o8weTzg34JJaW|p|R~ZhC@a4x|5;6tiKmMMfJVNX}G?v;i|vM&&5LI zI;X)QLHZCj7EPGKW@q5QTKv^t93>N6Cy0I=+S8c2)QNv~5}rLrhoVl(N%{1S?3wt^ zt{SNoN0y~mdHxt#cgR9%<6}-FXk_&D-)zjt5W2GiCR1maO9~yFTzf)RABt&wnA+aJ+b#MSWg4i9p`ADVznYSuU* zUXr3e^@_x5=osJlp>IM!po=5L86*1<-PHV<8(IgMn;v9#d?rB9UPPS?M~32vpbKcz zi1Fr~_}g_|)vh<;3o0_RY};XpXy7vq0@0C>@ih}HcrN4xnZr4_>PEaDvX|6e9#~IW!aZJ(Zg_#wG!w3Zs8LrIl*V34olv-8sL( z-T?kZxBC(RATt&!WKJ8gE+T*Y1=eI@~T64@yE;4WNlJtSTT6_?@!N|LEX&7p* zUwuA*LsXAqkmB{T<#`2KbeNvSlO=mDmX(iL`Wa<#v14rA>>!CrXF!-L!^r{0)2F!F zG?u3AvFXdViM#MPm~RBdXQKsBwP99xgaM%oYpSsf{sDf*ICQnM2wQ`w=*r83S80-| zd+K5tHtPFFcmULS*eaAQFCIQr?@o_YbS8yZtiCby!^%3-eEJS4tFbBxd&rmvM_!(; zxK`CZrdmdK`d<=?^i}MS!L5p=EVzppXe!d>FKR+;AaF`J! zpgX#|-Cb`gd6fJ=XMcDjANSLs>)(gcH-}HDOK#J;l);l~;EJ0f$i%+crbJJgm%KMu zs-Hq8_h@*>tb6wbs8bxV0;vTL2apwPVK7{!+VXR7AXG&Mw1PrOzUbc0^2Ypy zZuYziZx3!^u|5I3d^SSM!Hkam+EWK`0n`?Z;@(+LJ&`{u%=6~)VA&63XbIOfq8fwj zp;?xFS`?73l(O-y6si5iiG-l3VbKQRE5iK$V84|i>IPec9;qjyioNAX#E&m{Fe87B zbqQ*7*iR7#F`_xcu@B~x+c26iPam2KyM()Y;vqY>>)l%LsYA}(xsThISP74;yt3`W zZ_fUspA|brA<1g6k)_Bh;L^D!PH)WODhruTkdPlsGR(R~sax~8b!<3>HLhrdjiMGv zq^kF={ZXW1!BNDd=a>ir5*iVu59$r-8`yCa#3_d3Ih1-mqc%D)Wo;&Pz86ydfVS^y zsHEj4@yUp#VxYQ$v`&VFtKe|!l;_I{g_Tfbj@i-JV*^&nkL5-b*?tN|GLze8M9F%XqNYJ|nmV;Qk~m?ZQJ>ogarD{^ZCari)Tuf)x+>0m zw`UBtD(bJRsMJj8YbC{`{Ig`4+i}RgFmGC@k?Xi|k(m6!#s;_6zlW!xnQ5>PET{c{ z+7O2-xTTo48}9BEkrbcx7|rYV5XAoyzMh}_vPaJ9?me6%XWJJ?zGy1dFiIhNX?_sj zziEq7wFeyn%$2(&-k!=CVy36p|=i zM=y~vkJfPeJ36?K@*M@^ehFXUWNoIUo7g0|*bX+ZOI)b}iH54pdjBz`C74a7%M*|B zve|JO6=yffZmA0=0@(L|r$*X5sk&pAikzjY@dIXwYwsqG6ZwneGQ7?{I$xSCr|QAd zJy3h}YGMKvPv`IUA^)2+xouyyFe{c9{$e}`wVt6zf#9Qv(51taOG$fS7ez~ka}l-y z#P>$bW+Y68Y;CZElPr&ft?+L^{r3%*JHpjxGWt+?d4VEoFkJ6`!^{N3+rWrYqn1F0!2BJ)hN3X}I$?!MB z;%MdX>+M~_*8y0#pCq%zJG)Q0b}ZkKwdBp%hDXjHb6SwLqH!R)WsGkdf@{DyMsC8R zVF=Vs#=}vwvAV>e;EHdA_9{L>ym@MJkptZ`veL6O@-1BwkFeONj+9qm3+=U~ghGV5 zXj)P#C_tu!jCioG%NM6d15+mxtkhFK67>FMg3a*Sb*brp&EbFioj&rZ}*h77#7OfoTN?|VV!6;I+Q>5@vv98KZkoCknk zC$OaUZQ|PI+1T_}hC%}RkWjpoh0@eVtLKL>T{UUUv^}|)qA-K zbY_~wV8l+)+_Jh&hS=idpoYGg)E40-u#XElxF08^A@na#_dbJh;*#XFNv($tJMIph zvaJj&2KQpBBKl4cJRyOY40B)oe3Y5^YHLbU2p4+2zFR8yZ11b0&Hbwv&=>tI5QhfY zJSyxZ@eB_3I%4_!I#LaCAL)$Uh$|LKOkwfZBDy0+l&u9F_BI%E{ZWRVr>>914}{sE zAG88iiukWZrmh>1-G64Jayfx#`DC>N^6o2qev94 zF3Rno;QHJbOD5Et*a^w9;Dk~q43Qf+Wcn}7Clc2Q_gC>p7sV$1^%ta*&s>l!#g9-{ zk+vlHUyehLg537`r|pt7C2#Wb%7KV9cK_v;Wn3SXi`PSu;D42F*20;MNq}iUMghaz z*|beb#^0;d?n3-ixZhGls{S~9z0p2-NhJ}Bv4|yDVRemJ%C)JZNmo_A0{slMlbd2* z+xyf)Xe!hRvl!>9dP82jj3^0@BXjedKXp>{^_%Mnr+L67LKhhtRYHu(htZJlQAe3{ zi9g5a0G`_K=lCVErtdAl-b{H>RhMsW0&zfo5tB?<5RDgpC3K!!X<~T#{|5jqK+?Y+ zM`an zlnv=mr%ZclCqbZQiGXwcg^u^*O<#z$54(B0+7qeomRc<9bbs4DdIgTHr52?kptmCd zbsy&z(N2Tzn`?f*rUvTTSJ-TMAy0qzG4@J&_$IQZV~?*}CU`?=_EM}s!9>3=r0g5~zBdyPh>mWMK* zh`5aD7~wn{%667ZB?-`vYwHu6gcN~a-y^=vtX3VeFz0{y%q=k1v0_OTT&n;ZWL83M zjwZ}%Vw4v=AWYV;wt7FcMweAWIpkY;Siwe%bkawNrPjPpo9Pc+bF8#y!k{-r-(Yr# zimy883U(a9+=0dbXU7>qHg_V{vdo|Tn+dW-)qzH0fuU<^iCuIit8-LI!}Zdtq&g2( zn}d_VLn4q;)3ko|eVI!yRt@HVwMC}hTJ$3eNH{lo_=r$?!A!iMv77&bP{W?m)^aMq zEna-f`A4m>+{7k7uzFw&&nz5tqx&LBYA#-5Xs4MkQ}TJp_cNkP0Dgke>02PH;P($R z6dr;2`Fm#czp*4YaR-mo8BN>2*YCI{d%BLZOerU(r8*E7|9{R3bT5<9%}?SV=#J6rKlzV})!L0)EX@FJQQFuy9&ckOD3Kcn0}@5i3DNSKZkXK6ON3MA90noq z`S`GdwgkjEvehMTX2Pf6@wB#zNO4a0sn}vMlxhW_BgZ&(Pm=N4ySHZbnZ5 z&eU@D*K8OAmw%IT!^ylN2jW!@2qxDmQS&j;yD=ovcs*+ zw_@AiQW|+*nDl!KSbb193yU0~nq2369_ga9N#xB4ByY+2alxtnjm3 z!wGB&R&EOIPTjlT_3z5G#4p>|1R~;(;4%w0p0xYUfLg_!1&84YGjtdP=}V(Ze8n!0 z$FNg~(Za8jxs8jcQIaFKReispg}#4HoxS1I^xg}u-+#Uy`p=LV*$scMkfZ-h+PT>* z1mV360HD)CB;N*X>ykxSai+ZSIh6CV#hgvvCrpH}tf0)UBz)7wN=73hIi{ESY8XD; z$>&f7euUZ}lV>J(j%wDubcRk_%Q#B?9K=^sZ^kvYegyQeWAjtzk*l?rRj6U7k)8Y2 zCT(@)ta8aGMC)H9wCd`!$U5fWGbY~^Fd;Cw@}NGMl7A-XO3;5NNK)a7ukWUzh2lem z^5)B*m+(6w^W{qTpG3jZ8}iYaBjYgo7W>%P_-C2RZD-y?E*-#UC^w~^#&?f& z0s~|{ML#YL;>Uaa_`ba^-D3$wj@cSwL4r9@CDV#aGsUD z=_-a<1Xv2|X))L6jqUDA;$XGw+J85Ip&s2nl&hxa3?5V=%d=axtU|J+W?$wHseX)t zcq<zI2Y-^|qJ(A9#{LQwIViB_&Py`{WcVoitKT_wFq^MWm)jO*}oAQtXila8^ z#76VDZcAp!a;Vj-r}vcywt^B$44N;0y97GCMpjNMMJ`k*8)eDH zB!U=Ty!=t8caw^rbw?Iy3oylP&tju8Sw3}-2&NDA4v9NTuo1(iN*WMZiSkP?d+cr) zMdC;CLJa%rWEZGER@ce1e}aO_}o_F?t)wKW(qtI_^$+eYoX~u`JVbtf$@znPM?M;9A1*gDT5I_0$ktn zzTcu{_k+(lSK0B<2>8)e?!{6jS+h3ho{s;_p7^x5os>ygy8K79`S*9KU8r8SXOLf5 z$qO)E9rrjxQT28F81xA9_xusTFgxJB3_`b`bMekAyQT=$H9AtH;r3gu#t37? zmN%m}NaXqIxvH$nc`bD?h+^15ptk?MS2*^QV!>afWgdO)k`?S{2DS@Z>#MNwRf-|z zz*j6kE7ItvT|E4fdNkCeb`BD8G>QZbjJbf&Mrmw+!%=p-z0={9cyHEzu8tbOk$tQo zG=sS6JkHL8e6n zs46HPJa}})+MO7ed_^$1qPX4tBcft#r@ovSzR+L(`)b>J*mz`#l;NV}0fO9DuUFhB zE(q;4F(Pu}0OcO5!r!nmjB7Sx`7{6_cUJzeV_47518YT?(n?}wdS-+5vJhushy}% zvIRnH*RdNYey7E2;b>45narBF9E0%qSUZ^q_=OS-6xI`Cs)6-4pQgPDF$X|lFy&li zp($#`JrcPTrj=EGwAj`566^tty-LTG@r%^AQetfd}r(kx}?=GTMNTUAEbbn@3H3(r{&q->vaW$4B(PhgN z5*k~KK^`${%UCVSPG7!Ty${R%XP*Ky+8%6tQ6yo+&4}srjJlL1vN$ z-9d^Foht4zUGj)s7q(uuO-_>OL7tmI!s=q|2lpy@p@ z8=Od91S{I8+6;@TUFg2)9*~EV{dEPAr9ol8V%bt4sP3Q&LlVzfY0c^d@JFNlYa)!J`@yBEXI7(6?I$WyRpln<;1Eu)fYuWTH3J?$UxqZq@+h7$tlsG`vvuj zp&3ya8W(YO_r4uAzC|FwgjPm`Ms=gw8POv0O0&-foQ+oLy9%5^RcfDzSkE&kt!=KM zHE9e8O-7G-W5W49CJi#t$?KqY6pDCB0*obK4j-XW68B*lp^$%P)&KYd~m{l3|s3G*6?dTVT;8~Ui z)O)m)R-s_+Sq=sRee85;tDJd|Hw5y*m%i0kt%FV z;y2nXFPq_auf)2tjC?cmRe}0tCep2s;y&9@8quc`TkV4M!c@YbrGRT3FACT|fqHR`Mp z*cPYY6{uaIVFR6Rl}Z@SQeL7`f|b@;8`Lu9E2v(syPvD;$PgRlJbKuoeHc0bPNQRg z?gs2i*HX|f%yqBmFMpjBVx-6k*{>~`SN1rO!>kPm(UPb+pVKgso0jd6F<-&?>a{D( zQQf=KBlub1-n@uL9=@4Y?B)x$ycH8X^>e0Vhw{tN->;@*aaT_`6N&paU;5*%(>R=AH8}=agzTIoObgvNupCx6}kI;O#kXQV65Gwl2X*HpA6}E zu07`KFw-OF7C3u2)nzZlNhG^PF269wndOgSsg7_zLV2}z zepr*J6I2fT`wt*r^OdFB!Br4QM;MCH7Ycc;wbHiD`Flm10Jp1M+mK>CBw97|0ybw` zc3ObZybJ9;KcL$?%Q80Tcf)ckifI$I4Le@s$!4(~`tp(31zRNNB|qQkLqHgXO*7mT z3p=4%fjxAK&9C-c+{7y~QS0h{^UdmF@tj&=`^`uM{D901A=tSlc~?G?+3=UW?YMz@y)Pe!c>yik{+PMF8L-rhNLnPE^>_Z z0GsU6EyS0z^cn$6A$Vr8-|%KagONf(uub72Dnyw{1-m$7kh*yXvm6f^gd6;m zgA5AIw^Ndz?am?D?E{7Tud@X=lc~_)C+QVP1dUooZ9HPX-YE8Ck#kjeGhKdK9>D5x zCWi)<2;9jy{sJ(dclDL*3C0s&qTfdX?hntl!Fb+JAJXsJR)4z0i()hK>E*9~xNgVVqg?M5dm@a^6d@-5Ta-Tw z#5t5ipY-ta4{e}E?@)CcsN56wK3G-N>mrLD%Mc^k^=?h3kr`yEho692vF?Tl;+lA*Prcn7viyrVSBGI6!EzqGB$|iAO=Z&Rc z`bSt2GUz=i+;PHdbi+oHU8p~3h?^dOzDZ^RgOl$a>y_A(^5ig#~dtc2m>V+Hp zUhx>MOIgOKF}0^An)-qR>Hi+(C9{*=a5K+V!7`gEPwlRcb{wpzn~FW-xJ3LV`a%ro zbNKNZ^@9@d_gyS~RSqOU^JasjGE9~(MYI@{!pa(*41~aBW;xW}_1KoNfoIi-UO$5` zme#Vr@keS;d92yg!rL2jm`-N;BZTKAex71vGg1Fni*jTyfYc)7%3}^i$Xh%V<{b)- zYDZzOr{wUgc_DT;E$AQ>b(ZvWi+J1rr{kOjRP6P0_mg<#X2;>r>T9naFU~Iz6CQCz9))pb^-s$aTv>iG@utgJB^D z2_;0XnYCE?(u-cus;{ZtRubrPRllP-)#cS#tMlWkv};JN?2o`Pj225Hlc5XF5fN8+ zad!-AqVe4x+^-A(pLH{(b-ZglZJ)ed{*YzMLg87>HY27oRV@??_i3UL=n4rHJzqIn zz4h3y-%)t^y}oJ{RJCp&z7h zY0272W%J_*ma3UNU1;_dF;Jx^Sr@10eMRTbwDTb?EY32lbnH}opHO}n@p*JJq^B*! zVAipa&M`8d<{!NYxv!<*ZNrZh7 zzH_k!i2V}-W4vWIOG142s-8WJrB2b zU|JcNdY2^@D&58}aEjT08E_?C7_Neh3Pdh5*$-n7iL48driid) zS=}4enLUkmr)BT)!)~F!?Hx80=zIBV_?=ks6x?KhFio)j9SkEXz>#VrgX%EPjnOq> zY3|;kHD0j~!wZYEAMvLvwhYBivS6M0*`U3&i~un#&neWQyqLS;CNlcmk%>Qj7AiRf z1FjgC>JCC;VRJL6@FACn8mF&>E>2AJkl>OPyUIZ(2f~AC4)gTepwloTlcg5QvHn!I z%BnHz_LPlk3{w~n^B6^-auy|&va(!J^YEVIlQ>)pSE=cr7=%2fKM0gOq@(ZVGNy%Q zKT9HLX8-T6KDjnI<@y|J{gyh{E}^F-6Vu#E9<2Q%IU(`yWhj@&6TU{255bdft$EwJ ztc>qtnh6Hp$*;n6>Aa;!cnHn*r)-jG1rHrDFOkWcwR{aG-vLl<^&-*=CKApr1QTUd?#~|L8OhJqQp;_ zbAQI$M$cm4o^m2Gns~9i%S*rRY)E>DTk9V0aKiMt0LLH{KjI#uv;|t#t!DFi1s@L@ zDn6M?0dbnF=8g*-O5LKe5*1!TxQ{)q24#ENhv9pf61xxH29Yr=AgyVe{bBxW_suoR zW6s0{^V6+@D&2tt=-FJl;)pW|ZRHn-!nAN=(%^)lPMgn#yfRB5WIq16;VMW{dt7rx&TxpuU(<(( z?Sd94G1C@@>dt5XA2QCNI}<=bqOon;wr#s(+qS>hw(WFm+wR!5?U{4l>dpLs+TKmw zs!4I4d4JS**2D*~UWw%a_;4}cWqOKM@!#)%P^V1IGYcdG=-Ahj`b#s{P{v1iS;h6& z1A_gC%|(ryMs5i+_VbtT${1weZ4adp;Z?wUfwukVENSqC%$73=V%)2YKOmn7N(_3?24~ zK?d5mN^ps!pKBtigd=xVI=HNp7$`M_81p*D9Uly}xTz|!Ld-{T`4Dkin(Pi&rW%z>d~QHvC`JNzZG{(yR4n7G#+1ohrGURgEYR! z)3>{a6>;9q^+No^7EV&E#!-zCn~Xcnuf|!a_5{2zZShJTe3f)BPT5&ngnO>nrjBO{ zBd5kei+&k9OObG+Xct{Z?*GH4Eq{Ug4ZReG1u2xhgH3cx8vsCj{;@A};_mBw{21JH zEE2=edTiy`U9*(KR_Vztq>#wQ5)$``Fu`Hh3(@b@MpAwj=cLHJZ-I zO+db3sE;L?_g9Qyyh=!_gR|E9WJB{yjW-hv_ZJ^~nHbFL<9?PLeG>}?Zmr_XBc64L z7XD}@H5~EgQ9PNSs2+OCxaDKUuI2=L(>lj}q>h`GcW7ujjtRh|xTE4#we>UxCUg82 zrrBr|4od>!U@bf36R-=II^eI07-h9u9Jewbvc^Ahk}KV}KGCnt8ouoGHJAj6VjHtt zvAQp?zcvZPlFoe_NBPJMu|TCQuKIEXAU_xVzyBkoT*EiTYYt5FXwk0BA(^-%{5mKiy z-?bMVxcaxtQ`_5VM|GsY#h3-L^~DxD`ORG)K=rBO#IO7!1V5p-xubjRVz>_RG!$UpR2)%`WD zrFGUtI4vA*I>>QBV$q$~(+xY@T2$s8cs406(ewIAnsUkhWDv}%m<$l9K3IX6z;_X!< zn2h;jH9Loo@{eOi?zlC#F9kceY*1f+@@(=^*0kTuk0a<=eMYR7+6A34=)fa&lz4W_Ne%Rh7y6;#pFhMl&V|d>{i4$T?qNHq5l|;g_ z)kEn0?p^ev`ZvD)470wF#sA{0*KRyfHRqSANx*_t|3jL-z zF=FTG@fuH=P|DI8&J?g~KhJeJXbg>O_)n!-Ye|Q$wexcog)Uu4m^xWL8+E773W8-C zg&0U2=Du+2KRW?_MxO$0cQth7u`J=61FN7Gy5TqSN=KYwCEH+%Vj!F3eV2Kb@7egw z$tflcK7~SqLa!V6J;c`DeZV$EbMz_3eI(9P0eLS(-x>d;lSQfxg(i`ZXmVUYbJi}? z@-eat8$!V}GX`^pfe531%Va5|^7nJ8&kUS(P2-ITj%M8&x*REE2&j3_`#%_~o>rD9 zJ1J^Q%jV9Ji65Ze9g&(@bG;B)T9$McJ0aDvFRj8eP3GYg^nmJ&!CvW^WedXr>Jg)U zeykvUhT=eo(`(2_CAXLLKL~T0PQHkJhW8eFqBiH$4#Y(*CFPj{x~^q%)220@x><|2 z##hcP&y2}=iGKd9LMXquvfHpvn5QmAvm5Y&Ns+9W^c?fR&i>5!?l6S8|9*1P1#e;H z*54dpxUbMPygNCAmx-YvvS;VoLJ$J|9n1@q7%EOJ#?65&84>mi3Q=K*&nM>LO^j}n z95U%MOC>6&xNKU741Z4C-viiIkyyLK*F)fHT+-hdiRWWxdR8Aagr*+ECh9UQ7zZzY zV5m@wwJC10gf}By>vsV<=?fd$x&T#p~PT2*kVRySaQmxOg_q(NMX1=zjW$JFURvi-;@nWEz?DB8<8E{xeXfipxjbyK)Ra zMvyH=J9#m>Z^`>Qk6dofxrt%W$+!Tv3W?B089oGuAa1t7^t{schspsfq*)g}~X;z+9eD@+whtIQ&=p>=eGX=D*QaYf-2UR{7P~KvCL#TR$JE<#) zTq6R4^we-2S}#jGGXTcNHeNE;xVL?qWHTo}=`HjOF+mDYLitg^I?G?MPJmagnM>I` zv!J*!NQ1_3Z|vpI(qPjgY&0;oz8k)VvvZi7#YiFSR*=d7jfH*J_Pv+S_^U>rP z@W~`rzYa&VDE@4@SI93J`VK5lgM-R6a#Cyrk%RSvA@6Xt0pcE zAesu5o^}lDGh@@1A_entcBp%jWlAPa$55&3W*(PHS5#89E}!jp`6Uco|HxVbvzc6} zwUkPW;0+zSnK^=j^1YY*%j4+gT4~DTYwp#X1{gt0P{tC%FUTWuf%*8BsGld(*4>(PI?=uV7-Jd3HU`+jsU!h z6Gk`ELKsw2D*~wTe)1>%L`8Bf;v#hfq?TZP1)35hMebZlsR7);+1!g^Va{s0hdj{>UH#%j?N1<=?=(2{2a$u|huPfeMO?8b;_S#GuDSqZ_8l zy~F;(j5(Sjzk2@kjTN0Whp4zI3K;snSNopn)9%hee(;L6zt}#+4T50zzWUmt8i=2T zofP4F@w1r;lRL4myro{7M<2#%M|k!YlmFN2xNLFgPHFYdr~*9LX&IJlJ*dpL=FXq# zdk=6Yrlp6wd6}q&9grEtd6?zqy(usfXF8%ECZZU=KiaU-%yA{WzC)OsVg-^E4WyXT z(5hh4=%5&v@Sq}(3gD)Lfw;iNSh6qE_c|=#zDN_dD`G5W&gOY{GVp z#okfq(7kCJo5LzituZWHuX-H&`!>Q}iqs6aVuKzB%DdGm^f@7>W;ad%eNz_zsYL0&2Au)!0X+z5g)1^oe%}(e~--O zQ(9#&xs1lp1;;o>!9~26IT@`h_O*v0Cen7MIGr?AAvWNdY&tH*z|OI>n8&s<{|e1` z%jaYLK$J^f%pgvcGPt!W+heaf!5y~uiV23&?vaTtJZqN0^^)!_R-CLj!4l{mQW~ow zB3dvX72VM&G5N!{Qa2@XlyDAusBo&&m9(s~M&&e1sZiM{7t4b!ktdlNYMN}LSj_Nf zOrs&WwMjlwwL;7&e+>sN(l1}3I|rW$gUn09Ev|V1p5}2YupD#j!j>S@z&94cf{^p# zZc7j3gY_|BhXlB?q%SHF)Iw_?M+81jVtcCK_F}Vp{!x`V%pQ8EzuMes8GLH z4KaaX+Pk{w=YW+?Y!0G@t~l;;)VL(YSX}2C(jtn33kSdP?#?Jw! zGtpu8b))j5O0~o?||%5qEZlLb*tvbANxm6^BZBVB)7^k zP5Qxv5iab_EmFo@?}?lRYv$7M`_qgvYk3NEydVUt(ZzkZZ)I}o7U>>X%8jefZiddPYEb{ZO=m}h z*T9HaE#8lPd!;Cc($U*vO9)+Ajh*`lxV`uKA|K{Hk589w(o6oT`~-f{=EWE<1q4_V zq3?$Xk0F0otPPE0(NHOiWlE3Ok$K4)1L|vAY1xWyH^b|_O*!T7d28|DM+l#gtC8BNmh^0>3pwlm9iL__?t9d+)_z;RPVY8U1!+>(gG$vi zvF3cf=VP8Jw~7S3g@sy*g;hhAoXq9+es6C%*xORBg_mNO$VFjsUD)DI9-n&{2%jTh z@BWFrO&tr-(fXVbpKQU6ic^!|d+T%$jeAIwX{y8W3O8hrefcNp8Lk(JLd=jta?1J; z!>>Y6{K;UJjEHQtvX~(`GhSm6-zpy+imOyZtqAO_2xNOCGk%$GK(25UoR#*3Snbdp z7Iz@Wd(G4v6Um}bId2=n>WxSK{n`Fhk5Z8=D@3brf_+xm&drJm9<%4XP-7>3`xmoM zA1?cTafb*OCgcNG-eJs}T%-GC{LhRGS3Xn{$SZjUFKY_YVx78PrR@;-pD(XWLg!A) z?<6f4`<$mAH%=6xQWO3@;=qa8J_Dj*U5Y?KXoB{LTBH9KyHCDLf$IHi)sxVDZtXCB z`T~VPg2y-}+}dapimwUb3GYi%Rz0NNit-plm0$8hYvIQIsPR!INJF&KN-z4Y_>Omt z;5*rSkxK488J~o>uWUVn(CO)Ms1*YP@OIymNlIk7>I)qyfBg$w3L~SSNE5o}HN$nt zf_Wk#72?`zc;MNWT=KP$RBRuSpMr2lK66S+{QTN74gg6YT$OSzUz)|qDKy*-nasZaK& zX;a(1M1kwEF3xw9K_@{ExX!?=PLvTpYgWi=>^2lrXi&sGs zos9kcD?2`@YGMxJ!hDKFUatY0BV^;*vF9F~dq!(Kp6GQy^fLvj7k7!$_OJLx`GN^f z+U9KH5H`fzPc3<&#BGClJ#_l{=u59?1MYGhY_y)kIQ>#HK*#Y;m_|`q+iUrLZjAP} zRdQc%$zV--VL7kChy+B?L#o~cT*7an7~|RsV1!+&K-x$m^1ZPEX|d=T&gaDpDece< zYqWKMiJWT@gQ4zYI<&t}F2{yvOM}bm4r*b~9xj6rrTtKTSJ^Fc7+*t?juMI{2Q}JY zzF=pDCqfSuk^WtT1B32f$cI!`?-XnKbDQGnPu72Z4|%{uFC#_pJdH>1!TKOVQT!4o z5j}@Tt`7l97S%qT52NAowhWcYE^!p~osv?@b;lcGi1G4wf+Dt^c|tCYI9Z=zyea>f zRgu9y=Fk9eh^8J9b9fUyV8hDP-GYIQGm8)ymcBxVY;)PAt2MIil2927rlfVbHU5v% z)7(p0RBz9?M(WI<%DSliQK-OlHqk%>yQcGj_c<29J_8a=rBQUQpO=jb%NH45c){CU z6%^v zj7VDaD#2=K`Y)fvG%Q0Y$Oy6tmAK37h=aQ?LoQ_P{7!%Ezx?Xx%8Rr1Wyk|-PrW78 zFVL;?dz}@r!cqiat2chOF5N9yw|(C#E6_A^hkfD7>Li`nzEOKJIn}YusB^K_Y~Uqs zw#tR)@esuhd@X?Z@O|BQIDWS!I}^%+s#v^Z*grZZ2J{W-IFvyGe&+c=R)v@%_zgm=ppgxC|5Z8` zOl37Gen(YRvlf@x@~h=mv`U0d$FU{zX=&TSmg3ucTNyNPSy7U9TejL&CE?(mZXXl0wkQJJJ{k&Ox2 zrJDXppF03?=>ImMsMHL$laSnsTV$CUk78rve6dIU@uY z%al8jBoeg-*bi&!*ih}^Puy%@2Z8Yoi~R=DXHm;mxVzS8quxy=V@llt^E#O?ilikv z0BbmMy&NbVEv|pn%Tx>Ey+zVGyLUAipDKp`?6-K+kOT*uml+6)Cx1vu+7(L<{8B6i z=7J!tNzlr304=4Fk&16f|HyQl0>rdSJ2MoKbaj|rYQ8Ugo9-}Up-ql60-5-=tvPdG z;DV|mrU58R63Lvj4{2#-8)M;acRYs4U7sS|RU8y_<2{0-$tT4~+F6$6jKMSFU zeR<-x54D80M<;jMZKQ<__;+}|k#5DwQHMGPr9F0t3Sk+jX(}x>p_-Wgzc7;IGYXsH|}DEUT3eDG-Q?b@+0FItMY?+y>-G@7yW+15j{|< zsipSNG)Ji(+=)ggO=b8%u_1bbNk2=M&jSDnzfm>YN8Powf!f5ie>+gn8Nqs(S77f4 zl3U4B8<30?_RVpnlx1D-IzQw-K`>2LfHQ(V%&L6X^zh~eik80Egcf)CyeOF@ysC6Z zV(&Io@fzhf$XA<9;BTivNdlg!*tgxSQh*Z;4f5MXFll_?GE2DoTSL^5jp_Ss`;ims{GKDCdQdSItGp)LZ7#taMG(|BWxVEJ!8?Y+oYhnBwae_fvIh%09 z0bWw*N{^TvD@a|zX${A9;#RDzpkKp+>M3FxF$%XQVZv)O5{t7bJA{nL~-m zkfZusz}+wq@i3Dd083@5mO@;}`E|u9>-wqPgtlmsSkc?%jb+G4dD7%rB{^OrrD&X-RB<(~#fGPakfcK@8oC0ULMuHKHtZU+; zn~V?Tp^v7Uluf(rd&)nonvzVxkyCns?wCw7ne`oidf2ntY&$Q>+cy@na}DfF11P;z z+{m9$@2KV3aj}M`=Dp_OA&R_;FeAo+`JD}rZi>U`DA=b%K_`x$w^=?jhE0{my3uPn zV&Qh)>HV@_?3cI!wGj0+C}<_sAy^kzfEMQzSiBcv4EX(%jp1vORHygiwNbn&%mcX%|afeh-3-Qr|(*yf|*`*f^dQM=o*Ncb#YdvvrJL>ADo?28KppNhpE8Osn=NpCK888}PU% zeg6w4e9K6B;7MsZ8sTM;5^5F6CY{cO9`J$TA_4B%B_8;NtBC{N=p*wtncR}e z*Z1|<7!-j6u5!vJ`P<~ zCTLeFTrf%eQ)vX82FGno@S?@3vI@%mrbF`sZV5gdF{hB*w9%o9D-cf0GqozDhVGY- znhf_w+n(oJ0Zw#;Kd>+VR%xhvB(yOftu5yhmwx0_nsHcCb9?An?S8>O0+y<-6huwW z0_=^xKS2?!ney$=L|YDVgSkJY)Yb~qeE*iZ_E&z`FsxC0netbEVYS=Ib=d92NoK!6 z70U2YAVH$k72}dAv1k3R6E`VbBz&rdy~~Q>J6U#poIvb{NQ8}kbI2F0?H>Hjn=F=> zM^5luDs}Zi8Pn=?eUZA}Y+>N=Tf^I@?+RCK=9n0kTeRvXNGdnzS0N&!m=0c=#)>iw z*361)VLn$^Tq8hJG8Gh$D)<2>p7OJJe{*L@S921nKefcsJn1vlUIRqmlle{zP6IIn zpg!GmH~3t%9e7;SGPY&QJYI?XjVM5>I}x7NFa=tD@Y zw0%QWHdo}Xu94`6P#4j?$-D7xqWLW9Wiy10kGB|b3bnY*F-Et@PMEEOT)mnr;OJnx zR;X>cPgHH_q$B$6`Z%jfsTd+d7UdD+WqueZg>%g)VzpW#th*JtiB(+RD()gG_3M}e zAf&3RJz?03-J0Kb+r!OVwss){a9@Zen`Yruimr(@zv*CNfr9N@@6Fdh2H*73nm9i! ztE}_t5$}n&3lunCZ=OppNBt}p9`iMLN7FqgSnYZQj}fqhHu5p}7jU`DipJ3{B|KKs zUH?=*znG9v5M4_`&myI7_pOTQ;nlM_LAC3M#-;_^GtBl{Bt7H~L6VPJJnl4V#kI$h zXy}K2D6D^&0{;>%Xj()z6LgqawhzJ=J)-&lGQU=M1$iIhK&{zOGU}> zSBml)*m2c$W#cPCwv`NlfFZ8VhOPS;R`E-=9fJCz*xjRMkI1RwQCq{MFxf%LtybaI zTc}O;;;cUs6m17@Edbl8<}C6`8sq*pRy5(=%t*_VXiCp@8cwa=6L@XeP-YEGvjfs` z_zg8-gpcqZEtB>U2U>&#l`^EwI4)0;6Lac7!i7W1 zPi+ofjdEP!rbF`5>m1m86^!~VPuyRd5$~o_eI+%QaG7ZQ=Pxgb`Qq01AY_L605?F$ zzfe<_O?IM+z8e>)G~I7|Q=SwSWlpQrjAe$tBzYX~KOXY~#n$XXp~gw3r!@r1eq!9G zEG<;lVMF7UMD_}1t$f7$vcuqa->-`kw)jZTCf3V31E3b;deju?!VA*{ z=mp;M*MHm#Mg>MM)x6}E+2Or6(V^unoxe!3Tsd>e;f3BkH5^$pR{7S$xj348J#Um~ zg%?m#?&a(2xGY!qd7nV+oOfV0VdD%+*Qn0@%04i6(}qtv&n)ESoJc?Wu;PH54+`nz zd3}5UPDf>`m5&VSEO8k#y_*&p7_K}P64@$XpIf}aIk()PWpiR0R$rB1dsbv6C@L&^ zR8us+>?q|53H8daGQrN_q%XZ&8v@k8HSN0DHJ&ha4h=J)S#?5g4T{}WGqj#>w+PA_ zSJZ1*+m|U8D_HoC;6K!`LL~#2QX>1I$_q$aeqGB~OH6&gT7on`4LJAv05B|wzkB6^ zgN2z(Idp4WKAmX)h!LcLW*Mu|dJ@LNk1QJ@@iv04Z46m>KlBGq{a6b8L)5W0!M}(O z*RI1qT0z}+c!dOxlZ=-rH$8V3R+DG~JsDkI*oM4?mHHgFBDVs+6DrJu5%;u5MAftW zWh(8jb^mg=#=PGkb zPw-Tg=+RXz{;G5bqcx(EQt*56Z{zU#fvz6cc`08#|GB}a?|*$htu%nSa%{?u2+ANn zYEmU77_ybLw zsqEuG^I41AzkB>^MeZ+BWefisK-jxlw>Ct!XR?u)0&$ZfwCxvKAD~1=y0!AnkvMXA zB`Q*;peqdSN}Md3b<8zYgBr80wGdIqkzU|lx#C}u*^m}~4AFy!;94oh&*aDIHUY^w zE83ua%;Vr7jf=aQ;)JO*`j20fO&*%;f;3m#B7OA-R)5T=z;S@lQ(9Iw0#W4gMBwIw zW8iBu*}s>-+fvZ z^bF`0Li@Ay3cfjZYC}jI#r)i{q>!AxJ$gPE> zolpS_P)#0H;J}{xAUoDvIpe!TTn8HqFlJba3?Wsg37OZD222DFJrmo~t7nLB%O+Z> z)Mxou;JPH<`@2of!*_+gUui!!N4X^oEx1qhE1L8xAS{Ggmjyqy4Mt#`c`Id{%dmw~WTEEH0Op$Wg z&xVuS9{my^0#XM{QGT*JxMQ6N^3Gp4-Q4uf+LD$Ioe$<-vIMT!M#lgRr}U)b`0w6n zpKmG^BJ4ihQ*hV^#;mOrO*Oadc+mEe2>>6c?aivg_V;w@srI6oWxz{N4W#X<0Mw~q z;lAEN{I2O*F;JJ)wh3I=X$6|_$*)=tX6EgC3P~4`j;~*stYB_Vu)67lXmU_xWy*X&iM9JJ~ZO=Cm{_O z`L&1n4v!^EuwL$oAG@L$GU06!h2Ukjl*UH%d{C*!e$1m_vrSE(XUf*>ocjafD)C=A@G2@vZ-Ms8GvvO~J^ZW@!>=`OZ+DeRVPC8!8HQv5xXYpQ9fx`fUEKlAt4$dymRUjJT2e zev>8M@h`pnQ`MQ$+l^u$?jTTyx3UG={@6b9yr1KO>LW4gXUs5c6H<{T$Fz}A%*3w9 z91J@1t;#ew${MM=gAmjY8z@M zZeb{_C772;i06-iggR0a6hUgK|;3x9$DLj&wN%=cJvDU9ulRVa0 z01t;PiRz5*#0kQ9#bC?Em#~CCYcHq^#6&|H)hnQ-mT3CuE9h4o(kORNnuTK3s!_Ax z4GrsT7?&-87HN z>8{8Wt)qtfI4{b~_kfTS9ibYLAE8I@(HI-RsqsxMOcl-KB}mvt8!}wuF91^UbcNA`s+vi{3Ak zF;rgfR?fgbr)|=%FNioXA*rhKTS#bNIrqU9 zb5kr~Mdbz~f?ZmP(HstWo*{xRI(6RWM&E8_r7{Ij|NHC7;#SB{EM05$juv!=+-y@5H73z#>i=Dp)omlE_MtL_}aX*WdG$aL0jZ+WWj!oX(mkeh=lj zB2B=7ktk2SdmczF&eOfc1p!YMK_SjXt#)A~P&0!8@OA}F;^By^iy<1CExI8 z&wE$Mz){P@j(dINxzx`m8m5c>o8~$!H`?LqoTMv#I3gG$?x{Sv1%jiRNa5b$EiXcX zEnNX1xrstX(l?TX9X@`m+}19zioMd&;RVu{?TcE++9vyhZVw9 zii>8!g#WirFgnOZ$%}>yKG%QtVTRx^mU6XA$KWs5xnWW7gw7SQlryONQ(JA|$E1C9 z471f?5zKtU^oe#2tC!vgmr{%wrQsLn$;-w4Z*awVN%mhU%V&7k%iFY)Mhv|wg*$%6 zdN%{DwX#j9Uq>-bQooSkUopF3vijN9-IJBdGd6UinFWRG+GWxj}`N4Xfjn98ucge_N7Ip0NnQ41qQxTox{YJtQ9|8el+cDJ#1!qhZ>xq^QZis zt;p5KbReMBDo##HTq_OWv=~z2^l4Pmm`67bU*lB>L52}X3l+>H9L+K^T{Mdsyc5>* z6h9d_Fl7G^iOQMk<>#GcM{zvq#^98XZ>eO!_OV^RH33xkLiks^Ae1x5wCm+6U8t%oPZpH}m(n{n!ud-5vPFKq}zs#ts@6KoX!;JlxCjiCfDONDqhx9~4_}SQ<>xL0>qj$3EUIv9|`%)M`HW#Xx0HNwOKCBk&Z_<~= zg4r3Q9D73pZ6w&6VUV9j971R8)woS^e)P^KR~NM?CE=@{iS9_b#< zRST6}1VMXJ5UOA;s*_V$p%#4F@s)VKcg#o~aI&HSEZqS-Y1qY~pV8Nm%Iw<8)`Jy# z_gLCTx_F)KR}ww@ssGS&xW1~JnFWrc3jd^+tZlA5hrQS?jmSGr0Bj5^fB6?g(Gz=E{9>8V_ z%qtiRkITJ^FpEbTr}txxqnjU@c9T7JAn_t(3+e3Oj}G(j@sd3*@NrUjkd+wbZLcjcp?aDiW z>u0*SX}VC0foIhT=HfRy==x@mlehS`@@UB1ApGizb7e=k=XhxhrF{Q(Tz1sxNk7D-O#8+ZE3O(Q-sPAI8b1B~GWmYONGZ~oO+N5(%1NiAyo2k( zuoYwi%1TTirASdVTEyQf+QL`<0)rE89re`MuPXy_WG*7RPBA%iAp7d1(vCqK$%e;! z1p%Iz^@4!4FLGj%Ocx3}%btB1=21xKrzNP5d^vC<(2#~x6bG&4AV?1DXn9c+>_OJz zC4chSjvTzbJW^Z-0J`pHpPH@K{C!Ak(C?zrWD_&LJGL9s_- zLoQ8|90GY%#psE7cP{#1(8nU`-*YYhVe&14&1rnfHVE(h2>#86Ssy-LrYWjL;3IOR zX_8Bn!#`_D^U5Vwx|%(hS6h=CXkXt6Lq|z_EA+e4k#2j0?(k#%Lj|cfWHnWbY&Caz zg+UvQWrvC%92CoPspJzB+B6D{GFFt5kej4+*3c*bl}d9wDxr7ST)14Qs4OaKC#C)e z$O#b0=SK+y)bYj0K^(GdrU^~|@&U{Ns|iY|y~q?VkP9*30&&`z>!rXPDyj7OuS}CJ z0z22_3@MV;EwARWGFP<>8`v#QQpRJ^sKKNs%n$<*N7teZqQzc`Z85-L_4}8RUxEXy z$F|T0X7rit1vk!Aj0EI8%$Fi2Ltlb7U%E3q;#mzmZshyL=W#ViH>!m@12^Azrg1 z4PQD(c^)eGAIxn*cA6JzfD{syhXrzx zyz9gc=c6XBR4KqLCZglIS>y0X5ZH1kYiv+f(X~G=kGVFIdSg!r+B`koeZhN(*W@l{ z^3lZChrGF?4jWR#BEAQ!b04Sg zt#4VYn6nsP)oLVVus$vI$=T~)F``)pQ}MT*<20Xh8sd_jM=0cd=ZKBgl!$hR#yv~* z)ZPah6;#X=3v&azv`TPtr8i2{lQQWwONRw^%rORzpU4?ZMioW~m3o1A7iB6luXPffeJ-qE%)-LuJs?yYZv?~FgdI%>-~p$oLK z;xWbe4sQ<=Eg%?`!=ULdp&x%mZ3Cm$_kmgP1qVYXVm^|`Q|A-~j`B@$PVz!dOv|(> zMdqbHw0{2>-2jJC5xw*Ml^{UQ9UHTPKpDsNiNFBfPlrLxeJE%&^R6*pi-u9+2{So1 z<%+4rHV#7;A7<}+lPQg^-zvV-#GKk3bWcYALb zo#dlE4gI|CD}6*g%>#x!1uug8@`!L|ni|?pp4(00s z^k?_Xa-$*c*@^bo0Bo`Hgv}FmzsU5?Y1o@6Ah6V=g8VPL#y}K&{8}1J7hUq#i%}Ms zb#7*z@VFNepW>7>2B)MxjPgzd*Pe#j;$_=Inx`$Nb?NVX1)0SN?gzB?DLo!jH2scD zBEwt~D4sW{fLY}eY&YhIoXcXh-c{|sJM!&xL^EHVN^sq6D-=$UXdtrPsn)c-byoR<@AH`z2qPV7Rh!tYXj!l|O3wpPGHn}jy36B;QAhuV z0#q$FH;caEC^Urr11y$}mWI*PuV;99UM=-KVSbG(Ls=vV10`0*jH4yy3xGHh6l1b> zP?jff%^(UTfE8%1Dh~_A$*t(SL_Eg={3w7+$SP_G^C=<@P4`?2c!tFc2MZooefi~7 zCf@!8n>qxQeAKJlN3 zkRw_7!&XH_n)R5!>D64bOra^d*p_)M$%GoaMT4PX1d}J?V*VJzv?T(Fj4%CL)^Mdps5p@=lu;V5K)vKsw!` zIUClpt@L;D1_=E)?w@9=;WiZywmq{)IE&~)P@7zs=a!9U z_1S65+SwGc6{dXz$!23$X_Yo5599T6%0rSo$i9j#sd16J`R6>I1kT1NtNi6GJcyf_ zyJF14eLD>&?D$aEIP#5RrkV8%1hsjNw+xbpDUaYdK_*Xx z(##%RQQgBICzvYzSIrX!Bf1-2U##FG``4aD=Jgqe46-HbR;;9VS zOd^frxqojL0{?2vz^uJ&H{e-yGr)$YrT2;ARI+wjQ?Uzk4*S69bmE_^oEgpWAhu3f z(&1%WiP5HmCDEg3^$@UpfY27UiS5QmJC_QC1DA1KI%!G|=82>bH^u!14PjI<%Eqx? zn(Z!YrF)p+2Epd}YDlOvhc?WQr4_!aCIcG<@Yvyt*#ZxX+8)vI{7gC?8dDimBf6dl z=%h3treZWm>`U-LeiyRLhoDTC(r6|SPvwBrIc|DUN8cH{xKs5W6H)c9REd-xn(0-m zBOolGP$Aq@zgFYCJA2rq_X{i6CGO4%>Ca6(b2r)tKWOlac0uI1)rf~SMU=IJbeE`c zhnftlsa&L?-~DB{q%TDpJ%!VI*&*TRVF@e-M+(1w%|8(5@df{l$N8(ozon#iKb^u? z!rVK7ygYYW8Gz=-%Isr(e|<*L@gVB5))}fJs(-y@BVGJSh+(C;dHN5I4R4~fD6W+L zD{xp3Etfp0g$x~09f<$5DZ*o%KlH>+hnCD+xed32Bi;N`BBKwHgC%e-IX#ti6#LM` zYCuUZCGLZif>3!wxzX$V2I`nIK!j{Kp#!bUjN)feaOOh2AGyPPN9DhF;Uz{#45jXw z>68D!)RhORWg357GzV1z(qY6+f(Rx-jb+z+%sTYRFSHtom>C%d$qplR*YlRQO+1~649E!bMQrxh>c%w zL-IonOI6F^**?w~{Teqmxm7%WvieZzh%cVW0~0k!@RtG_^rO=80LCCVL))}ir1fnn z+JN_nXAWYs7pHpTB>vOkiKzG)?6?EQbF$ih-{q7C(e@5tT-Z6B521}2?YO}xGce}k z0iqWK$_TmN)Sy*VYF#Gm*DgdK|2DoXNS~{NoOJwUNc62Zr4O;xajb4_kWkk6{n4CyKMQl=cjaE7-`jV+UjPdbg=jbY7X(GuTJ~jhMA4(C zIuc`f&P7=&og$__LQm`ps)J?PY2=DEQB##vM`$>EQCt$4s4)!?dA5$Zk~=iUDlPW%0X_PT0(B1v09*3YkAK7PYX~P`Rdwh}tz4*&m1FU>=^z>g)dq!6OLD_@dUz< zDXY;_dLk}^hMDCiR50@lQAfW_P>F0^C!lvJ{h#*EVaXCeL87;8+qP}nwr$(CZQHhO zTV3k1U0s~_zF~F~lOJ%lCvuUILi_r}Ul;njRo9&>IYU-rUunoAXQz2y%W;DAAQOz- zRt;s1L*a4=)p$?d2mgecEhXRXz4mac^?ZtgSOdTnxG_)Df!9(G;CYD~ys;xMRlSj* z9~;d=!2}2wTN`ue%q8tEwM@ubUt(}=A4VmZQl*ZKY`oGQ+prULg)B6M*Dll zNsd)SleIp0?fAHJJ-#^iJm>JE68D7jeEst36^FS;=02@dD@vhF>icY(Bfg{C2RF}( z^Xg_&ph(bG_?a5zoVLVl;-vu5!fEy7_cv{if0E{TWD{JqRktQ%U*v{gA5XYRj6Hg` z(3%lZ{66ROFwH$ORiATDDnLBr4&sCv8}ZsuPVhwTcw#m5c$P#blcCwep+qxpsI(9h zLsu%GKSGwaTS^(`(h?3|0p#$9eY7>^Kr1Cc)b|ruE*z%L=Z%%`>ExL~FOr!5rYQ)~ zMwL5~U9IH#X6@2F`?23FU>Xo0`-29`&DvxoBH#!om0K^NO2*+f5>r4iN8xxLio$29 zA1u=Vm`%$t#dDoB4j6aOA9P`{u zBDjA^-F)kdosl?-;IKHFN6QLqYI1qRl&g3Uzo7GP63uaZMn=q)eaBi+YZ*U37%pvqfp0ap=)ZpQ*c9N1WBTRm7CHT@ZzT=m zrX2N$#_!!!J6ymLeo(fEmR_jdYjYAYfY54@N-}JrC~f*faQq9Y6jlA3pENz!f6&Pz zS-Q>BK_5U>j@L_ph!8e~-Y?mqMrKy>8S%0S9~Ahaf1fFEpA!X$alDFh;+MZVTu zor}A-;yTO%RWXsd!|vF+kbj9*Sv4FpX|^PX;>WtjGgehSn)oqRWH=t=k5KHkC+*i7 z;4?oj4O{ijea1~77G+|RG@99%QPi+tV`lZ=2meZLMf<=cpImY()prqM4i_>=`%j z250@cy53^_xqb4c>4^Tja97yUrE$^0c3ZwY8ME32ZxEjYyxJc^Z$oH%Ki^Y8^H-z^ zcYaeq9P*R6yty`Seh#cnPCC5~2bgXR_Uj^s7)RRfH z(-hRK2xEs1*JlAgt#?yBw0gKiT^PIZ4kckyyT$wCA8>l|t2tA`o5MjVd^h34-aPhj z-3|!3*cwLVe?J}yStEplYnY|@neo@e|E*09nS)FsNz1C8;*kKUfP#(ub-Dmg=u6_+1{}$YK#kqM?NK zfs!a~1{QUd-yXT!us_NgvtyUXVs%)V!HCTJj?A^%En=_BI;bv_lZGa=Z8 zL7vVwV5C>~*EKNGDH-z3BP`7hB~H~)f8vBf*bY~6_|l(Pfqr?E2Bnd*Xc9k{)IJ)1 z>FYf~{bt)KryojiDYD^}2Y49)CfTA)mf(o>Tgv#p5scVWKBLmalDnSQw3dU3HG zI^zJqqU`Kwss(brqwH>q6aS3F9#OjaZ%*#`ud9Y{)e7uK2thJz2PLkS4gLuCLNL|| zmv5ithk>2%q8fWUIbWUC7-te4EE6;vwA%Q>$#LCbomMTXT*pGMUrRALSP{?7?6XWk z@DW)Aa*jyfixb>PS2k{hJ`)C?Uf)yUFjjmSe-D@5Z*`XKaNRb55Ty_KDR*K#nrD+H zVex*eH*qxLR=qlcLfp13N)C5V@^sU>l~?9CWUs|SD)rp^WY+OWukXYNUeBYXo=M-q z`R~LEM2d!VC=mvLI`chlr+CbGkz(m=9>^dNrk*1`*SiI1GOX>iL!+|$=fx% zNr^y?#Ya)cyANl1c9_CUft8_d3x0EN%lf^bYS0yLQ6fk}BXTE(8FrW*YL#_1v$6}F zwR_$P_qSCcHD>#lap`?EfT9Sa54`dtNU*fd@3qP#rFiUCVKU*?0j!7^?Aqw9jwcSW zg$0U>Y`G9qNoX5+wu!toH)>RBnepuYYjv(bbwk4f!2)yroe!2-;Ldq6{4Q6lDhmV3 ztfTo?t$QwqVmT%YR-1e4g!7lYdtO8ImW&hG7fjU3Lr!ieXeWJb^STG2sm)Lnp6*M!@C+_m%y*-}|InX*QczvoUkHEjh z2)fL0ZfERKnZxxcuKB;h9!f!q-^vA>0Xg9GGH`d4?+}SF;_#vH_eyoBJl%^gm)e)o z=_*>)cxsn-yV=Hl?>?4lr^4t-_;VDdxu0(!Eqht7+d2;9VAEGQcv%2!hU#}lFIert z5Qg*qHmamOv9~wAo}-RH(bY*^c2ryVC8ITU6OZ4GxjQjwgPhfYDS0?2e3MSna8>@> za%5U2R+zik%!uw6v3xYziq^HT3>Mc=-dU{_cqLvY9UmDXJH@k#-aVdIghxX%8`a&@ zHDm)*ke>X*kfGik;D%>y*l9JcznN9H>>Cqr5Yo6F1AC$Mzx2T%xCd7S_ka+5oQ z1J&`mXPril+Ar=zEw3`+od&xNO0U&%@%bSg%5zM;oIlEekI^7b=4X?3rb1~mZOQO9 zk59do1r(z6LJhtg{wA8W=?|HgyB7_4Wvx{#KKkO2J)H4;Q9X3Xo2*>c^yvz`FGsrj zW_g0POQ5gMg98zSORf_5&oucm+|5N*ApxhClgOS=Eb@ri${qC>w(9WD=Az0G<4M+n z%Q6gD%o2Gw6zx{<96G?^ug71OM~{TWoJW?t9io%@5SNdcP=AoQzk~Wy9`e0As4@1U z3FyC(ORao>w^$Gq{eWdhCzI}Iv|t~ia$I_&EBnfqfk(zhptXR%fFBW=5Y{ho(yurA zm8}-e1II!Ny#Bm}OaQIJ!aY<>1Aw*K9}BObWLd!|ageZ1##y~wjNV8jLLS{n$D1j` z*aqGnKc^gfgiMFkH)rEL=Zd_0;zJg@$B?fx+h|b#*J!?&-LVe8+;rhk8FtP zaLSOAln2%vN%JERg$8$P_-fv0SUSE)Sb_g0n7uxz0(&Ld7Bfb&68-RH@|^`WS7+Vp zJVlWzs6=oW&M2=5e4NtXiBYZfCd#$q= z9N$y@z4`sgFyh^Z%qqW$)T22H9AId_T1m-MkPV^-{q}U+Cikq3g4&OV#tWF=h=3@H zciFVt74+K^lj`xV-QYI@w+~#hvN*oDfhPE>9tHZ__==m`c6*ew)eWYWfAqH$8^eT5 z-bJg6eO4>_%cW&MDtxBen!64vr7<)|<^x~(!x%K80B?^h9%y7m#Y@fZGXn?+ugo67 z1bfg2DZ2wd4A-#!ZeLG86uy*c>iv9#DU1~;G=8h9W7So}hGF-y7BBx4K(AnqudocX zS|3hm9bD+E3Vy5uwsq|>w{SY;nCqTmyAPa&_dMJ^;BmdmP-NBZCibB4GlL1)S(;<8 zf>D9qwH@zoR6}rACuaE;1m6J>dV(3SzUp672EZdL+YFuqiv6Wyp3a&tOefkYD2{I; z4QSc?1C*JD%#LvDlrapca-XNM{vz*GW`I{^ZEroXa_H5on2cqgOli%hU6N!-;2MP(ylmU}YBD7!-t}88#qQ?|qVBFL=lleo<^P^~fk&lW zW?kQ!5M~*Hj0WB0^!RKaBF;d*vem6&X0#kTw@sByiIZ9f&?LA}yNtA&Dl=-Bx%+2i zEirW|fwiu82^}**Cu`O|){S43=0^;RkVj74IxkzZafh%4Zr!!xLcS2E_1l8=Y9lMJ zgpbw#(RWGL0`f)fQdPW#*i}$zq^p)b1NA#dRG^}vF%$pTqMAl@l%W35|488F6XbI# zX>?MR4(HFF@663^qqHi^zos&Mmugnpw>LjA{D9`C@Tt`60{O z)cW(r5iCL&`Je*K4;bNV9x@cYLk$~jyL3DvO46N45Qh35fu54C5~CjFuvltOMllEq zlR)D1rO%#q6Ej39<(s@ueMv+4T0ANpP-kD{Q|7`9`1zdvVDUoyPy2LPKpeBoVe~cv z{i9tdS&@emVPS}YYGw>OGX&XOvZ%05Obb+l8vM}WTKZ_pG1>uO%dw;2kl5A0o9NZ| zAAT+xJMH3xbdxz;lL%YUnOd6Jxn=V71}7zq@o3sEG1#&Yso4|T69LQiM?@~MQQ?AO zc$`S^=m=qMWl%mNW#L ztfU-P71W{Wi(<7gZY@MVM9n82vb#wc4$G(QHQU;m-vCfBMKQ!6$J^~|t8Ja48;R%PhuB%GXK{yww?MF|3 zx7Ju&4XaV}Lg@jEeNQN6qSVU=@QS>byY{YFR9HmXj*jl9J%gYiHa64)#GCWK)WGM>qP-#$fbF z#VelOi!Nm*3MHEkKulsTSf~1csQh4Rv~qID^%ML0yQ(`Sl%5fT_Y$EWy(IXXSgul~ zvn;wsLMk!-TTTu$ zcQ1Z*8Uj=J`Hq~e1dv@Od5z$VZR=4*hNySJL{Yo=lonXe3>NlRICVd z`5Sc`fd(t5dXou5X?y#DHEeJ*a?TU!$&Vx3&1|p(7f^%0AR2{|e;)`0J3Ltml-dqa*`5wJI z6pJA+{>_QDo7+vID|xjDYgu`~({$~oKsj!<4!17ad*#;!I+Sf&X{QG?!42YZuuqYb zA0DddLH6lQ3d(Mst>3Z?SkjV1Rm8!6>nl;fr?MhcJj*ltcPZF&9kZHYs`CLw8?O^q4-ib7#_@0GjJ~SBjt`0b3X43vgAuvHgk4}3L z@#noPf}G;yr2bY{;EizKvkRX-qRwnDY6PjAgTyOlOIYV@8Ozrn410+H>H^kx9S$TO zmx!^imK->W#`&&+?o1V_q*js;K`HXmtOm@A34>GHS*%9mW|#WgvlbHsu6*Zebi8IR zad~MIbt1&PW~kLlb&cCNPM9F%Wu}~jb=HOttKhHO2w#3`c2zz6R|aA)k1C%Ihc&-< z?}nxq4z;qSm?Jgr+T1p{DvCgINZIRoy%L<6hvU^F{^C+7a!YllrH6;aDu0cC%o`xD z^=4p&rS$i>h;z4X#_92te(NK9Kyt*vABzJCzE8JrCMjn)!+ZDo!afT9FJ#s6v4ZOr zKcVJ1G^8O@mwp%GP|6lU2A$=Vv6C^JIEj~B+lD4$YEwOZ^c#A2a^~vP^v@R9%7ZwL zKxaMMK}Kl$E^?3&q4eJ&#_3#f%q?t1EZR`zZvZWv!;|I?mq0XK1-6r=>4igK zpj+Wd*;${Cr%IPGWE%+ug(XjLU~plj|%Cx|Z%^=D0$ zAuHs(=xN{ezt5p8tR~DJ8hpK-m$(8DX~*57MR8|NE?H&<)+ef`gNloxU}>C@x{ai{&9N;`&C~UU&=4sSk^%KTjkiLKkj5Kpon*{X9!8@l}Sm zoGQ@1a%54A4A+sb0mLyL8JKW6ejyOWAP2oLaHUFt1&W|mLMod;vEv>koset07kZgs z-B6^b(%agQqrO!n&#V7l)3iD%qoV%G$+bxG5!fm-tnbfJAzIxILm8 z>HW}4a>7V?vPCL1?(w1yd&M8~7V9Oh&i{3xJ-^Lud{GYABLJ1))3)1ia3Pn}$7Pn% zjgkTBVj2&PyHz?nCxAQuP}z1jUU-ekomsm7&D-Ybg6aS-e%JYmFDOHOQ4&M_g15Q8 z6Ehs7b6Ne3O?sO%N}uvNEKB-4I4B2bY$Vi`S4bNf1E zV&C{79d{Y#bPSaJ*GYqBCyw!Tql4TQVSu2JKsbt3Z^gSkd*F=zvEKRfgi>DZVep5e zzAGm+h?GRF=#~sxfvwcq@=+4WBiW-v2`Y&8y1cBGic5Px_`yE_yEcD$&66F;5kZN} zmrObMonyl>X$-M;OfOSS6YEAb)cdf0`L6O2MR&pCbk*HRcsSCsZ8bu^~&_dhiqp({+X&9c5Hfcx~Sx58V|ex??5V0RIRNF9zxe9s+R zvXuzn4dLwr_SnjN?FvQuCZC(|QEvrG&=aRhe~&h;y+e|e#PROV&hX;KaS%XpKtne} z(lpDu_vcad(fD=Ypa7qs$yxGeANw2+$ z-X;_*wBOCvJlG$%ynZ4Sqtb4^({1OC@e523@p2ma{C!vCM4i8{S!EO-1q*XYY+1=5 z4Vi&{5JufbsQcldQxs}5D}~hZ;Lz9z6bn#fp^=3z71KRIY^$k@iN@eB#0B%w$4e!9Ea)U(U5I>fg#tC3G7*r>X*cHPbJbOH*KFyiSCKd$MFR zjP7+)Z_!b7XVz<&N$~f>4SW4`V21=PYjAK0xqMl#XV{xAMU}!b;{I{f-_++MM^`=Z z2lZ}c>1RZj;Q#B`e^r98;}_W%PAzmY{Y)Y?hWA0q4-n}Dzt?wc!ZoTVYFp0>|Iy*Z z4%6%$*D;rso9^Oup0A?=eXfoOXqLDQT3t}wW@7?^6SEV4DaYecd)kbHR1PVDbLf}_ z(QZ-#ab1Ka^4>!!j5><$zL^~POC?q@7oo2EN&1;n}ud4{p~wl$nzzd1{X{Tw^3?-dW;kQ#@!>`UoOwCsH}ly)*v%=ai?xLZTSM5$A9Z^kbBXIyX_MP0?CV5jh zVYHyd(P5Sh*TdVh9GTw%Jd2FAN2={-7giX%l&q%oAk7hTS4+6m6i!1FoddqplPj9J zi>`Uefz!$+I|Uv$5Lw^TtMb^i@LYQ29t`pE4XV}}jeHMHl#IHS$Q{H~SY7-XXZwK< zs_AR@jOr4YtJMi;&2nKqI=>k&*4tz^6FME61(j&AXmJP6#G-L$E;ZGoR2lD4i%sytA2_{7eeWf4#a+t_rI5tSq_+CzE+%dB$4}yzHYp7&kYi zQnGTPyVO+i>hu4&P()5E>`mL=ZIK(TB85p8GBCQ}MKLHX8NpZR=aUS&g3|csKS=fj z*FM`d;Zu@^@=#)k=`NBsW13Lt@LFmY@l}7cDQuoe$5E^}EbQ#ddBjXP8@Axv1N)?K z&5oX@at*abk|ozmk_T+f>&|n}(>-sf3qSGHVENnp?GoV1k8hICW3KtryoKY6Fg%Fk z2R_#`w)bEc>$pfTr|Ou31V|*_ej0@)QB6gv*;;8;+q22_ARrE9;HN;Ui@ zTF}$wTydh?vDnit@1$!X)4}6fsWxhXPF_Q+z__~dg_6BcVVp6yum@)RAV@olKuxR- zT*t(Zz?CQl^?$3lSc%~ehK zByolIM>}q6xJC^H;P&&UkWQ)t4UrQ=*>q(+L46l{_G_DgqRAIV31;J4G=#BE5pgt; z-I6-)_#Kir6BMrtE@{+kLLlY($>gIZeb=VmKw!M>S=DTby?${mcX|VRZ#e(Z_;!aE zzPwRqD!g`(>`PMn1)lXnO}vf4BA68Ou?uOEOV_*URT1-y==gGNYGO1WRs&a_i0O~P zGPF3Q8F+j_EQ-Ow;RuZe^}lZ1R`-%Kd-H72zVr|ZszAjp5g1H?d#&cEZ{-ojlO%<$ z&mYD&3NahESp|~4g(ZA2zEZp*MrE+cmq>-U$s^5~ss2tdOHvWO2yXMaBWQ6!6iWj2 z($m>e$<=+H56^T$u*wi+)IASQtm{)}nv)Y-9pSTps%ux6^UT(T zCY+K!1!L=?P%R#i%kDW-Dx|AeOi}0XcML`uGn?IE9F0{NPf=~xxd_XHYe``R@zu5% zqDJvD_AZQoe23apiE1iADuO=8Q|D8$%3vI|J?JWJik8cr$!3e+Er=P#y13U?A#E%> z?eL7FYGPPG=0J1gjkbMr@U$AMtnvJppe181L!g@FBg|T@zUO=^7weRsZX%~Bop`J| z_Yb>Byb5?S7Ip~dg4ok6P1u(Uieop89f=a91WA{tO9AfghOZeWLbB4HKJSEpPEy%x zl()E+9vNm8w7qkXY)#WII^5$uv&Xj8W81cE?6GZo_Sp6w+qP}nHqSiY^PYRZxcB^V zB2Ju+=w6w*sxq^xvNEc>SJlrp9R^bTZ_+2at$Rpz=eyY>$qzG%_+Y9CZ6RW40=zLi zzoWN!B~yJqDjd#3K4jw4)5>!i(e*1}nw*|!)oXvurcmuNR%MK5v=jz3xNwag@E{m~ zI!rqERPfyFubO#jmL9%4Te+i})~cgDg7U9YwK@sk$`p>kfi6C+o*AD5o! zS46^MJT;S2&n22y{tdr)nNe_^9tk`#r%GaHV*Em}wUsv$G#5^2)Hzv5AB(xDO*(N} z4biO4jKT}$ikyR0Dq|pri^aORLF=GOMuKo(f_#E*+id<*ny4X@{thO$#iKPdl-0|4 z3aUycVQQM^c)7hI^k!D06dLmC7Fe?z;(HN~FV@{tT{zboYRo|N{`RPBqix)m`+C5b z@t7kQyEKpo46O6qCyy}k+y#681^OuqBxN}fnW2qy9+_d4^93<@jLZOSY;EM=Xm6}< z^$%rZ@Ee+uoe7@~|C_?+;(`V!x!D@y14L}B9iah=P6m$u#r`9thXx2+8`>C|Tbts4 zpEmJbMFAQhVs7u?C}^f{kI%>i4Up3R4@1wu0u4|#H*z#{_%6%-Z&?9-2jhSA;saFF zWz{ugs1!w%l<3&#=)To_i-n9G4DHQr9c{jKu`~Qv6&@b^|HsFFB>&S#eg{M2Z#^vZ z-#!WI+lm>Ro0|QH{YT3`_h=Xx82;5Oqi^-yp#PsqaYubib3=Y>Q%hs~Zx0k5jjdGh znZGHu|EObP{EuS-0yeJrnludbjQBK+%lHB zlLPFWY#fb^3@ib*#`gbs@~^=D9}fYx`u4`wmc}Okq5c(q_nEQ1xq}73*3!uVU}$4y zr4KN3vo$le{zrwmjS;}XQs2Q0;BIVh1F*3+1~|Id036Nijg0{&Hcs{c6LV){fP=X! zz`@x0yUu_01;E<;yP%PzI;~Q~_!Lb%24rzM+M&<9{{dKlHy1 zak4ftws-gjTr>vg0}KF$03*P+ivUxA8NeK10k8yE0jvQw09$|^z#iZLa0EC3oB=KX zSAZM99blmU?Tmw=xw)gcrI9hkzeD$pzHIy*42=JuVE8wp{s~=8X2yR4kq-ag>p!3W zH{bu-`QNedzhClyrR~4B=fBhctFr%H_J3yeA5H(=n)d&jApYs%|2g@jjIB)_&FJx2 z8JNFk{C_bF_)PS4|IFimS;p@{_?~?KGT*mY7#Z;Yd3_J6x#f4%eWw@8@8}aU{>~=G z&^$cQ|H((LtCsE#wl)*9)|P881K*DqPJSO(=v?~^P-L~XvJ-7})OnQQ(W$AsQ1Ku; zHMhYm%RBei#AJbx2(hWjLH@y!&N$C7&vgGsN$B4)273D%VDuApz2RY@3@JEm>Wd2@ zIBlsGV9X*?AQVLiAS6cL)IWcqf?@FuuC`CUv)T?w4pY%9E2LZ#JyT76gCj`E+S+oP zI;JL&>&E&z*hYr-Nv77z$(OhSJu`T-S_;TGwUrbwA#}Kg!Yv|@1e6=IZ(wO=X?!l+ z_uurxgR|)P7Uq_}k1Qp?>FQiSmfuZ*=o*_CYu?ewOkaJFsvQ`e>|a7sQsX;l_++G% z#kBZ!Q1D56b0|UR>KTEDB|hV=k9NmDWa~?7BF4JP^1++mV~h=-d6Q z;rsf*=xUgpfzeabG*^4*-X&QnI2k>F-hA|sR71X6KMD5V;dy}$crg`#rKBc4!<-vx z{;<|FgUf|4uW>ZDrf>l7pG!++o&$Z&Zf=a+;_Y|k1~(?LWPNRIe_;_E7(BP_qKATffGTewCMnb!0{zeP!Nc zD|~X}1^8E|1jo`%d@=QOZ5TKYK9VLm9|EBy``j}*GQ8kzZ&?cqj(s^!`?S0_HspQK=@13OZmO97FhvXBCi!Q@|k9+y0w}4Dn01h^ZAAsEe$E9A0I61pqC9**04|u%2u24Bw=H&u6EP(_f-5+fVaGM zC#;q>kEqNPic&R^NWi(l-Hpx=pM`#!1nZ6TsCMmY2@K}nH21%ndP?KDNVh93?}|5S zXM%*7u-jH&vNCzxf}Y$rZA4cH!ngq*X@d#i6~Z2pjAd8x;KD8dSZEJy_6Y=h^0wLF zZC+*^oY5m=u2Vwf$-KuRQH<268lhL{-7>3+^p%nIH`NK=Y&8TOfq~+)I_*gx5a%69LKg`_ew+p!AQ zzEMvRILb~Q`%LFbESXmmhf3LX%9Zjzk*G8++G=(U@%UflO#24ksC13Mx-z z0)B{cU8@DVuk&2M*D}{zKrB1?Z=`*nx@+Kk{;$sVkO&^uG-0AadG2`y$Hk_xs2`TZ z2l`Zv-IVWLFHy`tgl&3U%RoX1ss&kyqF#k|^uTh2{QbSjSzWo|B~(KU)FRUYz_%}H z(T2Dsqo5)F`d(+WU9C1O=C^7Ffk}h@RR|(Eg2n;~&kt(M|GH;~!Oj#6@w17|Z!)2A z68gN^6sK(kr*J1Yr0|dV2*xyHD+K6C^X9SiEX}w~%Db<4d9#-wsEt=^BnN-Vu9 z6AvnHe?>M06f0Q#ovaCoax;rUx?uFVSSs-Yv%n72!zNh`{w9?Y*Egc~weKz_-DpJn zY?{0>G`*UX-d`Dwrec9UigX37x}6~Rc#x_asm@*cwO3H{S>B;@mZp*niS$NK6Lg(B&L`u1AanJCAo*7p)ZB8CmPkDy2#Gy2I5a$;DP zo8mN-NHKXg-~ngMgU9tVxe_Ub5Vf%QHjs@fKlZZ&h1w#C z;)8wrc7-i}c4VGj|LGQX8A*Q8#`h;mU`RMkFzm<`D(@-GF%n;K{7vmuIc#lV%vBCA z>+Oyg+oMw_jGCVF7ea~cK{9);xn$yE_kGnHl?ItRW-el2;@D(k9%_CVX!=-YAg#4* zKJvrrMx4sER6<*_{fSH95t1}INEeCPE}MI?_oUq!zDz4?J+Hy6fNbI6rGEm&U)45z zjQA9qZ36EMsbiRDAQAM1k%xd#SMW2-E?@pn@O!KbGTk83Apzbb_fCH_Y`Je3qkgJf zL~pWNauB+5dVKd3MOI4WC}MDKxlp;39A{Z6JPDGE2widlH1bhM67OeW4&4GPNIyZb zXoB?Zc(*`q>Ip=8m_z(gDJn;8d&tg%|DoBuM%gbZ2YC*t$|W@LJt;-qE+L3_bRupf zlOU+_)OcUwKPDRucsnL*UQy(>$?LoddbC3870XUV^C+0ntbBlX!!Pz`Q$!1f3)Bto zA*p=#{n9g`uH%dvEPhd6~;03i$L5| z#AOF-IInJD89ePj_1#>PQIr_OE9wsc{Hj3vpr7N=&6SC-4-XMg1P8p>hhlI98HLHT zetp5o+!B=og|BXjUeI6&5$hT)G8M`jtgsDvvtHye!|&`!i;{^(+M|qfYJx>@cUC$yL0GM0bj z`LqeRB{A%P;5d<}&NToKW%WuC2tt!?GpZOeBN(W~h0kl`Xmc>VM@aBbK-$O+_pobZ zbKyZaQqKpc5rRb8r!=AnJ}9UM&qhj&e_nnyepYr1D5h9u;Xufr_yl9qHdv-P#GV1$ z!`&n=O!Ub}6&(6n@UcfG?7CW*KEZ90WLw7L^MmNF{2}e%ob6zEiXXKfQW(qljO}Y_ zgbJ~z%fedyBuxS$ddyYUhCD2#6X3jXp<7tS6QH`m%=Vbws^wlajyh}BA%hN4of4f% zeb}j>(>8!$*m4{>vng!Ko6Cpv^_>Xti;rJ3pQ#QFG->VU-!QqgKMVl_i{H;~%5Rva zA7iA&R}t13I>n3%+-3Dr)}u{sbE}@0`>L8dvay%LrG4AG|U{U7Eg%e=d2dofh@#O{FarP734WjXQT7Wdu>7}jmT-y`n` zKxr5!1xALJp6ff6PQ+sYl+`-31^mNtNO(=bW3Q%a^}ebE#J>?%`%?*(d7&{&H$Y+f z^CI+0>aYQpgbyY|MPJ^L`je5|4wJW{NrF{?IS3wLe%6z{(~EP~8gx%=Y1lLk?Rd<; zt5HTYadv@ymp!B(Gl(?vbcs_C$TZRnuWw}3S=OlE`M`xtiwX}WVk#4gK6`Q02`Y@H zWKVt68lO~pe3g5WaAfMGtpR0VOWes%R?2l;F_H}N@%^jCocKU>qk8~|`~Ld5(>FwR z#;K|pm90_hvHUI0b;VM1>d2NQ7(aA&4+=GBz|4~k2neIXNTTn^fe4Qy`yyA|5epYa zBr`?;*iY<7GuuIFofa_W6Lc6OkfK^GX=#*N%S6b?!4JSHRm$ehhdswAh`9WLJ9JyEpfUH$Z%Z8R7OS7gjFT+05|++okucy4OS z{SS_ikk@7s4OwodFlgJkG)Tes)w8z;j=A`HoDK*J^WHDf7Q8wf=Q4<_Y3Ot@Ca(xG z_b3V|HI~aOITeGy1LVRUeNX$S+ejF1p*oTM|5#l(6*S82FtNP!wnL5q_EqaI;63z; zEnN0z(_b&jfMF8+I>KHmsCeyn&h0+%RYFi1UUo-V7XSZSblI$(#OOl% zG9!*`Lehnk9jEanKsRA~*&tC-+*vP)8)u#yq;S=s@x+)RhEt{OlnzsTp~fxx-z&Y+ z#^43f7v6qO@T7X&flgodz@nv-+_{)>l#3|j zk4q;Rci}c+v*1nTNdtRJ&^0ui*m1^H{ncUNZ1-${@V03A^FB-gXiv<`PaRKQCB0QV zCgT)Y8C$9$%<&RImh09l_7fT&kKJYR`EyjeDxVHsSu8mkE^L)nUee=j0iz&Z+z_eg zYfDJe{82g*x@9RFhEPffYS_jO_il0HCuHU$Ql4cI8p!8SHP~vT0s~JOZDW_WUX#Rk zsSV4^z+p>c?KNT8!DYup#O56%BRUyT)sr8{tlxKc?XZ*X`{)G3eNaUED-=@fO{BKW zanH-aMa|LaMXj57qel(I^mOs-{ zt4=)^|E5WVq&=P-f5z|xjM8KW*HNh3zG})v^*kKIgBo(kh83pr7ql><_fetOSao~p z)FiB`u+v1*h%5|8F8gz=On_3Wvw`^^;KJSlw4_dt3oT!A*je4iLdwW_c9@Fu>p^)3AH-T0#$ueqi1)3*gIT9W`mZ}fM5v~U z75Cc~e3Uu$AMu`t0&JBrWvgudOuzN_a)hY$R884bY4YZ~m&ocHp5eddx)v z1Xr@pgXJsCX)=_iS+6Af-&#Ym-q9uHAVXZFU#n*tmc_&>Yhxz}>^#G*=vik@rF^Pn zm*pIveTCZg20xJJS)b9?n<~;RDBxBW*hW~EW!JlYzHqTfy<`c0h<&-2Y^(Ydx+}d2 zRSy0HS&|&eTKNgO$~65n9Cl`js?wPrI{$Xbq2w4;8qY3~q7OLUBKqMw_(^Ta{+ns{ zHH5-Fy&+-WFrs`{5r^JoD<_ja3;z{>+klk&QJO}ZKL( zw)aykIX`yQik>XL&t;GmU`g!i#I;5F!HZ6l&sk~FDT5SReoYdPjdJc|eM$AF%TKZU zw|;avJWICZ;~j-uDe!KVi_a&47>0~PA~?=%kH}uRH}0u;`Ub_Q-w3CMr7Bra6WRAk zw3x}iH@I5}XGWFJX9Ot%y$AQ{Jmn{-{ZY)A1Kbas_FHm#Y3c<<3wI6ShYuW4)1MPC z#L0Ddl$9>-fGd99bciqw2#%TpC(@S$35=3mczLrYNPaTDVWq#NVYS_Ym?l!q$fZ9< zCj@B8oiq-^i$zzG|G+@C9`cjOQBh!`Dclxo*@X9Mk#{sgA?!xV&FgouK!V|(DiHGn z_i2{%prse-_L2{`)C$0Q&scxroLcvgU%aQfsGL&oMB=uCYaFf5Af!=mE(xg?7j>m} z6x3A{tvp&5to9ESXVQI9JT-V^1tEos384P529>Pe&GIg6w+-9U)at(z91&Md@zBrY zjiHA99AUx=CB{5G!eZVL}zYnwt5zRnh%Ci+m@0CX<%Anb8Nicque zW#6EW^58mEP+R3t(r0+IxD-bFz=KoUrg(#cu3|t*bqnHjAitqC4gFx;Ge}6whG+TT z{I!q7ucyn+##gWW>3ikIVeB6fEyjv&Z}_5NzoNM!glc-;euCz;Kl@QTF{ICd&H1Yq zODgp@Zl)Q-%-#j&%M=~>?TOV+KMxv0T3UCdaH;CrBEd%3l5gBFELh-*j^3-Fk?f0% zrjg-|W8AA^;QnMxVOBpyDttK}7g1xFjTp9@fdMp1r8oaz|H)-X3`NlHKGmD#V4vy3 ztW_le+}y;ag)B>ldbvVeX-4B&L5=+zEclKt%}%0Ov|`gSgc> zqCz+biJk&$emS%ubJis~)ZDRyvs_H#*7TX(3Ot}SY?OM2kUp7*awG?`?3k%oO6uoc z&mPU%Y)2TL8VfcG$Wr2B+!=ySu~~)QbZHbXCeYna;u3)vZ5PZ~2nVa*h}6QjovhE-{cELYye-8;HJ-ppl=nJ_An3yKUVjpT7oN2xS#9BC>huk9K-ofL^2g z0iLYApB9)Wke#4>fkT(H^AP{nfBLl-jmak0*~UMFt+5Advh0S8b5ofXX=u|Ug;2^_ zzw-w5zO+ERCL0lpNDPdkz>>=7r|1XUpIWOZ@zf8bBKEk%GTZX$_7;mi{~93aKi4!D zg_4qME<2zC$E~Ca)AOJ1YjaLmXV#iK`)_on3CS7RI>uvoTw=z}PbZ`wfK z*QVgxyj77&im~NOPU5$ecU^Z#a&j&6PyL3YyQFgUJ_G5VM9Xk&O@-(-gbk!CIErx? zk{kNT6I(2mG*;#JR~NDOJyY<<9<7L~Po8#R?-CADqjp)C{Om4tsm`^1wo!1a?KGm7 zS?VoudQN@M$O(j-aiq1;p1pv#DIQ!>Su&43R=}K%(qF(C4g{R_<XW6SCJ;g!}Vfuv*A%HGc!|^|v9=>7>v%`;sW@ zx3ZtR1)W2aNS3;3a)+^zoiiI62l~j8v-_-3+OU8*uIF$J9$-f}>AE>YP;@#|Pca!- z@}RHvC_7GPHuf9*8w_80raHfHP-E+Go;wTwL9cj!-YF^dH2U~+na34d*rbp2z)g9h z=7dCT({2s8ed~pjNK+&d*bz4L6+sicEE+A~&At`6aq7uj$J!2$2}6))OQxpQoP~ z4^G&2WJm52bVHn0TG8f7d@>@cW_@2I(9<}C4oQT-eu=hEn004Vnr6-H#iTzZ&_*Q^ zODoSI53iSy@w~>^+(?r+x-^aTBC#M^)bTij9WiD%vDEuuDK)L*npS;lb~Gr}d@&1* zfN=KSgzR~ZiI}DD^XuaeQiu)rZeBQY&I&yWVp#2zixNn8>>r>YUQ9twIbinno11Hf zSL;${vHLM1$IMuCz0a!d;wh#a*`imn0m)ks6wW`CUrd_=Fc(u&@2{B+?E#E z+23FLB99-V&Ub(xgxZ=H06$WHIY%sp@!r9YFvV+^?xgzqZfFlKS*Xp*&OE0K;Z{aFAR$+b=iG0Phl7s0M1Myn|qZ}uNc<<}0F1KAU- zxhy=~K9 zESiyQI92PSJi|bxoHDmAC(t*nJ#!I}p3MIBa_#a(;uPCTHjBRHg`oGQXunh%;wrs* zKxc(KbMjgop!*3s4`Hpwg5V~aqqv>oI(;jRB7PJ7;4&^xOll1!Q9KmA9yl|7(Z>7s zlq`Ie$!PpnXW%MTP>J+$$-2J`pa)qiivu=}F-$+7cM`uKVC#2yd?~W+r_%o1ShYpr zLGBo%pedSk%B=}2}otmIdUTXBLs%C5j-#ZJBs5}mr5*=Ae9*8K{-V+a1Iz=N$7yNH)jhthu8)GQE z%mMj6JA}SlQ{+ycwLKx_;Vi8~n`K(V7!#6&Ttzfk&`RuN`qM0zmduj?;UpD#wwTr0B^kK}CuDuM>fWVJ#TdkD^&%kI zZ5UDv4<3mgf{Dq-JRfK(n#07+0O6rQ7B=T0wsJi&sshnEfOy{v|GV?e$gY?zL+B$n zON6xF@pF3sDECoi6JWTj;|{+aZ5*zf?s7dWK=vj-zDT*BaFT@sWMhF*F*Na)(zDz~D zKuq=s(042C3kr1`-5wHYE~)xWT72DY==J^4vThZu_30}~O&M_02*_-ernGSCU*gjM z1*+S&G4L1Zy#rg_JfJtfTJN|85Np=D zeKhh;lF_=S1iKhU^TJ&>8@{#5w}IFW7?8z-xPFi;qUaL>56%8}o_fO&O;Wd+I`_Kh z$r!3}S?*zyKWRxPJ2*eR8!&kOem`LNlu}q*9G&1S?DNYzo8`hPJHj?^}d zAzaQx##xVfSb+bO>YqvaKI)PR_NP`_*7nUtp$P@rPkfH`VP474JrYKwHIXcqNo&zh zDGgS8BHFy>k^7F)OBEi-2Qge-mW%t=SX+>^idaD>)jJ&k`(PEixW@LBqI$x#{96F= z%YjB6fx8i^KVf|;m#&to_TOEYSe7%BHAQ)eXv#--0Y@AUjZV#hGF>+j!Qaoia>z3| zzork`G5Cq(+?A}SX`0&}Rdwxzt7ck_?XEZ$^)|vK@G4w2Kc|Ze)m6p8KHxQ@%NC8V zOWT-110GxR;I4J6Y~Q!1O|mPix$!;nEm8bF7Jeo4f<$7Wu)PtUUkXt^n9nU!WSL{^ z@FfAjE?8`23!8u2F{&P-OQT{vkjwNl?MnM}oX{sO9^?Hg6$1HKm{6hcpzY}v;>l1f zo`d3EjM?pqzr3(X;>&N?T-cHH{&6=(w>1r*kVr*3L}4LDqZ6(}ND??X?Q^FVd0+Nq zy*{5rSaR_$I`XF9xoHhXx=^ZQUe%bWn0=*9c7HiOfU#n&4z<>$+Sd={&19P8@6{@# zn30?%+%WAk?jZlHU|4GMz?3IhM`Ei-cF*UWA1Rjf zumSROXILrS2wqMkZcO3B;Ef} zkj*a|o4v8!@TWI(M=y(afPyR7w=zF4|N(5CoSFbHdl`-4<}G{>R^#6RzM z@q=tLJ8Zd-Iz!&!Fj@HR{gCWr9CJ@>YVpnUn8c}$qJxWbuLog3Zko;diZ0QJa0qt% zAs%)y0P?bQ`VH$94Y?XT|IDh&8o6qdbY-@lT3tIYrGg+UY#%_=i+Wl`gbkI=&qT~b zx5sq_fF(xZcEpL0Aqb2h;Jb1N%t&%BK6#l!(?f|+RLa#Or-bn4T5pX+N8(HYptgrKNtm?w)nRPY!omKB4o=z_8;$D;kbXev%-L-$X}~i=176BUZ`x=}0)|>gY?g z7n@mZl4;}kt}#7iVh|d;pDJ#?&GZ4!R6)6aMp{e+hE3=H}?$2U7EGxaqnbtLUI4ItUU-? z#k|GD6Bk%pE|T5owCUO+zD}9z6)0I1dkSo5bj>a-DE)b3s$UuY!42Oc&wdK|QiYRk zegfo5CY1>l;yND1ZmfysE!sG*#t3^#3$@}QT-TY1{}JV@Ne2pzNSrAXr%bLUKw{OL zgD_GV7TGfI%I^#xu@8BCU0{hJ88kC}YRcCB&IMEfSL0;faFQJ(j%-Ak^@brBV%6%l z!pum?btPyE^ubJiJdn@1Z~WPE_gP3n^LcOb9@H!bIatud6N*~P;W4EgxCD^I^U06g zIj7VDUe(euGA4p=JI5HAnnD)O8tg4WS`;opu3`uBa!id|fEp~aD4r>J{3{P+G}xa& zW+AzzW`6))OsW&o`y^}la2`EipS<+NGe>d1gvYW))_Vv^2-oXHt{*C2y3i=@vFUf? zKT(K>Yedyx!Lo9`p$yZ#0xDMVoYGa5zE?<)! z5Vg0I;HO^pjj%-^ES9?Nu#As1!m_GA7H_$qp5*A>={;J_n{=QQtrAKq^;ds#-?!u~ zu@4(JLcfNJLbRqPW0E-(XkWCp{W7g~18YDCgHx&DTuyj}SNMyJGz#lm4ul=|yW9)km( zbwIT+3vEJi1jgEfL=VJL_&%|ljEMeLR7>Dee>_D+8z!HAd5zhDUIo>Kx&ZK7PTZ5v z6f|6;UU158pJr6bSMqHjvB8nczSQkXtA-}7V|i7w?l`XR4ksC3Gm);u*&@`3ZHOGR zv+B;}Z0r?6?J^k!S{jcKmU`dm@oPlVEG)|7R(f0VRdx{~bKtccfnd^Iv7RH)BXXZ?KC++G`tLtR z&V)*+^W5%Ig(ENW=3#D)rJJUt2IY;yy{OxCr%u(fcotN-`on+{Cn#LODZI)xv#5yVND*0OEHVL*h7{~$>zCel zdbv+q!7XI-cWFZnhPhZc2IFo!yonaLoxBLBN2UA&-k!-z;3)|F$2u+dM}=dSbt!7oAfv2(2LXUyY|W^gV^htx+au1d3sJoPly4wi!gzi<+O zynh?`86pV)uR`%i$gK7of1^9xr5Z-9;O&iWg=EqSb&7%}_Y9jlkDyD00CA!Dj;A%& z5?b9>PTM?6)IsV#RGh6D3&PW{F~ZiL>`)>Vi>EmVuQ0X6uA+Uu6BN6)nq0`Tcoj;@ z43PeS6;z!hIUBQn!+n!Di16CjGRKh-2M3;9TXv;GOL@SA`V%G8_!H+i#GQU1-oc`7 z>$QPCBMr+)7W7lF)fiVPG&6`gqr5(=9fb!Yw9!4Q#c8e!@E&su_0-H%Nql zNISqubUE{-$bhh~!H}EYj2f2}?ogBX03h`6!?x?zXCyYytxvnX&g#|2kOlb?m64Oq zp02NVjn?%|N^|_4#fabwE}l&6 zLcHEU8QY`)G`mFXAAKFfF=)HAckn-3v#{_Ve~^A>N7vgmiuRc^Jf}ZZ@00!bsD`_% zzF0ufvzOsWk6TD~L4?OeE}w2$`MeQbzFeWW^B*X1yh%;$kjfh1F-L|~#fteogfWKR zgyUR_=}3Jg#ogaeEkv0bA*7-r8NbobL?-8}!DW`+sU%ek($lv%_<2vK| z>o;x!?E9w(V96mO9Uv+eJMR;!3v(Y_h+2&Bf<>FGCi~D7A&%_y=De;;iRdf>Ka}%1 z!|1HIj=|tY^THDt*vlol86JmQ^~q|fRbp+j`|DR^f0=ECh>Gb9zQvVsXdt;KAq&-~ zzCFdTp~*}lFDIqtq~i;H5gkIBagwTeyZ7i2Reajgp@A6dxw_(brYYHpPA+2Ks-^`e z%I`qbfnE_;D!Cub-e(LBJ%xMvLlM48CRJg?XZ(N=7)Q~_rBxeSdqV`)0`)z-Ir1)= z=?|%kyrAc4hlyuw4ekN)!bYI9ka|zCgy2uA)`vDhex4sf#}uI6geqJj;uqjS{8u1~ z`HeFM5o~l{hg%j8ZJ$4h61ipU=%8PUKBD49rDq--o3Yn<8VPt{4|Ns;`W&CC<;+@O za*(aqfjdYm#xb{B$AYV#;oYH`(u7yEd6 zUCs5Ud-Y7_BZ^lI4u0dW$?L}a+F77k5&ac9Ccsj4v)S`Wf+ypE?M<9y#)9)ma1egn zKTYxOk_^AR7Xx~da?G%NcX9v2tyx(^yLItZgr8+WY?QBCv>=T<849DO%1kJc6sqTN zHQC5|G_eLcdJj+BLl+K-K=c`vi1HjG_PpIQW68IOk?m!4&qF7&TI5VaeV;xJ{%3id zWAn;WflM^9$`o>ib^X=k*e~Nh?LBpGIoX zbXu&x1DVYdS8?SvPJ;sHMxj*&ZgM#enGj`eJT*ZkBPykCX=l>v-6 zS8b-w-5H@6N$31XpNLrSc{J!Z&V1tFTLxk>f*d#78fOi!;Kga15)V=HrhIU9>|j4W z2zMR{(_rwhF!X4UC__>VC(YO5A2#O{E_Xg*tn`D;HOzMbMzy`1QM8^*G6PG$=U6>0 zqz1?J%;QtXF$C{UmArv!)er+cI|%D}Ips@JDYp8x#Lfo)(4n5pC#dA1koew`lf$Cl z3=r=cF3`76X4%91-17L445hS*kK)cO&{s+RqqRTm#8);78`8*YDZo2!`Hn)~oXsba z#&|v^7;=lAdE^>W0gXh#8?DQ2Z#Z^owE;N!^DrB}EQ$fHt?4|YGn7J~BJ@rYWSC1< zhn-RIZ@}HS=4z>%V7;hq^JF{^7mpc%LaF_lF`q=gf<^cJBak)#G6A-;_yWGbw4^Vt z3;ShAzDXEBOY1&awxQ?XjwC7P>aP24pd42Ug={p3lw!>d4@ZXS3{SnS(F4Z2fa zD5$~h`arV@&=v5+sCu2}PQd#Q<|JtEI_i{(vvLEjaD|VDRHd9$@SX`hWg1_*CIW}o zqAJ_@2BrfE{&@v#UTzP&-3@7+ViW86JoLfu45!KGiq%*<3YSPJ=;i}NV^p!|G3Gz? zmzzqI)atPbU2R=}o~_tWchCLI7FN81H1>^^b*yfjHQzD{1cnnz9&5#H@G zIhx=FiUTLz(4m$=M2 zM&8jIX++8xJ%RgqvJh6!aF&vmMmUryko6Uixwv zO0G2$fl#9MHwBCZQH)>!6CL4(CRvxHU=OW&Sx55VktoFT z4Lx^+Rm?{Qftlwfr2fJ_pCep+)}j;@9rH6@r-t%V{q&RCwwmFo-%XB&C?Vc?z?pRB z_RJm`XFacqa|rwB}_1B4I47YYRGL+pb;;}FiKv92!!&at%lxDC&}aUt8JIfKCR-+ zg!4UJ>Oq`#Zpu(uX1aM0uCNEmK%*|0gr`u1Nx1IBj$V2#pH&Dj-Zc8!jJ6%5pPnH4 zE{aWzt)}iv=ZdRubD5pPRl|kO+uBf-{>{D{}D8JVO3+mS=m)YqS;|iFA+ILPROo&|mVj1Wr18SRN zmaJdDfUXENt9b+i%*D~=_TveMFh=(sr!JXhAEk3$>eaeywu>mx?69z&r+9tYroh!c zdCoC*f8%6O;2|TyUD~#!x<_axQ%$iuZI34#mibYStpImC*ijemA4BQ3Y{G_ zgp74Vl%dcTN8o*_(l(mq+ALT%!`HmFilk$h_`z{x>66D2w;#JeuqfuakvD)zJdlO) zK)y&H|05U!%&n5yuttsHhTF%6dSv1RI;w^1shV^#vlRIxcKAGjCJlKO_2CNQimE2E ze%IW0%^}pBVVv0!6RhJYj^7L6>IjE?##DF`RHp62#{aT$QFusE!T9;*NRFw+k7mC^ zRojA)aLe5mOxy15`E#{nUP@)LgCL56xCP&5x0k7GdJa2br~F=-R!c?UZa{T?-Qe6X z5WG;ybqXfkw(AQaPde<<=gvr1Qk+hO-$5UkKNMY|oRG2O%^`H|7B1|vTDcpcVu*+E zcZeY0Wt>4(Co)1eVjU?0s`ceekr~55wff7Ok1L;rkNlzLdELsX<+WCrZR&9KuZ~bH zxZ5x~RsIH18>hyn#ME7-aKSz07Sc%dpZIh1_taaJ$#~G-0grwksXrf#mInOmUVwe1 zDP+##TWJB4AA7>sMIMTzgNoayvGgs3z?snN7x> zBRG}*4q)*@AizQX@QbG^^ZIiV3ogLAKYZ>=42`3)lKl?y*> z)tdYG`Vk>1Oi26j6T%zVSnziwdNMO_q@?DQakBU69Iu;}@a7A-|FJ&p#@4nWGfg$^IGA|5_{)o5k(x2OvnsNZ?wc>C$f>(6C19+5peYcrGhVz;1A9TM~qb+pofLGY~?I@ ze*{#=r_Z>Mp=4yHcDmMmLOD?Mrs<4Yx>AvFo$z2+fc`AdFkw-WPlRvoj^>kzDyDnZv~ zE|+V_`@mV&MFr5M{20&tAK(SUy6?9fmTs>w^Zx@kK*+y%oe1ML6*HPg&ggX3o>X4m zW|T_}Z{ZrVPCJz?mt0Y!sBxw*vp0~*6CC3BUQwujA^MEGA0rH-kisZrHl3lNE(@n} zr^WPjn2u8$nI}fW9#v8hH{zE_+S~Y%L`k9dI9mv`LTWX>@Ss;h+;Gh@4$!ee(W6Up zEiQ;tS(Vm)Z5xXQLTWbPu4sNGdJ^*)+yGKZ9 zA?A+zE$+fS#Cy=D+&0;oR-1=t-MNEcD_Y8E;0z{`Y;*gOI`cbWISi)=LqT8o^^zhS zt&L{nbiH`&=+3lUJ-^GkIOzt+25=IYCwXSN0c?v*eaKj%9h5pnF|F&fFAkMI8KH($ zJm0bkNB2zxAR!so_jw;8BYL!^wkm2bAb$#x=voDsyuNtfz$=~HgeEuBlqQuxm)moN z&Q}uWNv-plnn5*TgwB&{@@qE$-n-9wiVBR4>bKe#2qgfTrjbXyJp!8>T zl^-;qS>-TB?5Feb3StC!WUr>%?n1{2mCX-TcE=#k>D4xHBYC(Dyq{0j`~j0R$XObJ zJ~RgMZ^V4hOf`^YuJi?R%na2rtt?Jp;uQcfZ=H%MH6v1lm{7uu$E|uGFbs1JogO;x zrbn){G{v{SHxs*}*o!v0qo}ya*r(8!g6xu@Cf|$N_f7TZeuSRS*|j5~*1MBd zTNr1Gf0aso%{Gl7%zSn*gzPn-D7E-Zf6ZaUG5?(A-hGt2;Sza7D%1XR0x1)!MKx)d z%OnlL53-zROfq~AVB`9*m;x%UUxSYxlGG4CF?mRXhGno;dE-K$J3~UM(tkijvzicF zkimr)k8)*$d_-p{(pZ3C*0#@2f))F)3zsP;Ks-GSVzG*u z3RC*X3=VGxp1fM!%kM2mM_ZRdMC26)<*B5`An+JQuYX#nt64>Nfkj>i@-t4mTA{Rl zd0u{*xvEPTbv}$omw{xE-bLkrLen@xe}J!yYc<8nInwHHPsb}@BFwO3C&9O5j1#B) zA1=;mNfbaaf@|BhZQHhO+qP}nwr$(C&)VMHRGw~rVrr(Ur-7JX$AG$~C5DN4VEm-5 z<;|W^GiHnQvZg&;1sQH76|&;iJVEWm<4busLZ7N(x^9xy&Pnf6rBO$o2`8$xP*kh6 zIAAw?s!r30(|&BZDO2L>TI!4T96?LmZP0<*JjBN1M2GqJbN#7OHMb>9dH5#{^K@8R z6~SGxMPR1lWf?bZ#I$&ffhgw2NuQ^>&_$fA>ygo zo7XzL`L=3)U_dnnjG&LK>8>h!k=O#oBarTDqzP)W5g%TtKwuJwXS&o1b<*>c0J{er z70^mh^rHx$|7|^b!Ayj>)9L(eyEeMBs2n)qHEl^tQ;82)ROw%xt6M(0u!%-v+_?X# z^Bu9TGHOgcN3vtt`{Y{2gA~uze4+1SP(k_BRd%HF5Ar8`v`Fy4-lX6SvHY%g*U~Ke z%0;OVhHj2Muh6_!ER)yYiGX@HDpJE~7OV>%hjhhN{^J^^@o!+|9qR^(>v(E!-zZqK zUjyL&1P)6+Az3u-MIBSp~0Kbu5SMq zK*IW}Qrq&al3z7#RBl3(vPF;EsQE_hhGA$oOI1NtQ>Ke)n}T>uwl!KzqKMmslatQ6 z=TP?af-J}ox3-t=?S=v7ZaI0TFy`cYQV@GtT8(cxU37%PqFyLOrEz9)umrX(mTOjl zCB2^^Cxe0cu+UjC1)OEyO~ae^rPND|@8KXquOGCd+h%f}sFwkE1BhIf0L;=%^8x@2m)_Bha z?M|YhP^%l2l%W|g=HPBi@Xf7U$qw0BdJZLY4nR~FuQ2>&ZaO|&vGtmy$}0>?radC;+CxODHXORO^Y-7fP}{&k%0 z=T=!mH7&>qwgNA1o8>HUV@p(c?^%}m)zoCaItlY_pMF}gh)l((ok7LA1xt$%oN{fD z{8=M%TW#;>;GXQ8YdgS4SNcii4H7|r7v^X2q)Kd{P6y2esc$_?frUwWZ(9PF(G^|0 z%@@$}07#~7+qIs6*&F#yFE)7Va@9)pv79tBk`$wH!f=&(ZAMWU z&AS;{ohGyNSr-UfzvY9^Eo;th|6jmYyfccqQJFUdA^s+MXyz$r{nM3ZL##gRQS1?| zOC@p4I0uFnQG#ee+Q`=C=xEEr$IglA@jQd2V3Q+Vi5!?}$S0W*1>$96vrvSrEY1}) zo=6v+EjR(xOMdO929D{S5BUq&EMG`qQ3i;?==&t6joXj)5dxle^WbRNqf}`K&>v&U zy^|Yld7bmKl~{AEs8Cr%G&Y-wafhtM>VR5MwUkDPV*BKgdZc`lWryLmP=*G!t}9al z^0f(wdzrq6*|c}E?Q6ovi#@Shi&HU`gWG#F-#9`cGH?X(WUQC%_>P*OV^4+xCIh8| zv-&)v(4+uD$X+C>GM&$gmQ3M*qdH+^wSCbc>%l=zon1zpT*?Zg;gA$g-M#o=g}6LN z6G==dNbCuaRbmvaU7bomUZyIekjH#PV2vE%&sF}i!fT#qfX(Tseox?P#)?hW7Y$`> z&Ay+14QU#sYZ;4YfNh@B5Qny8*)ZgHXpUw}=^|CDCq25E=D6c7@5n!uYp#E3!#_F< zUOtiKb~;>K_W_pspNju{@-B>IljJK^W7gN*$hdRejsHB7V1)`Z!v+IY zJIXpy%OZgAI64pe^XD`T%Kj?F9SJcLJ?=uu)XMSI5F}wf0A%uacAza zWNw>tR1$3^*RqI*q(obl5uw|ot`;ATpS63G-#W0M%h`|oe)3*LjD3iRO!n-*vhao} z6j?A>=!AlgyV!9)KQix`-nE}1rdcv9*`%S(o4<&Dr!7*Bz{v!uHoPvQEgsAuDjCjN zg;pzw;8)Aaq&z(f%+Ycy*~t4f(JaxLK>7mc&YN_Fx@2^Cf9;||;Jg+4Y0fa`x(e95 z7V@w#8k!m|E_xyGU?h0`5tT)oU&TKXHDQ~a#Gjk&#B(cVT>*P>RSTePGP4~+lkJC% zVS&?H*V0bdHd#oa!-_hwBdc!c7X}ub>{aLv=rEMUxf=N^G~?sLe`GLs5QXb$F*m zy^!pAniKs$DqfX**V^c)IPhW2E8Pd?){~c2f;Bb}_b~AUV}UIq&w1kof;449Gn++% z+<QM(2CQAH0|4R@Z~B8$?{E=|CT z()`T8%>%n$C@}0Y1c^=hD8R!Wuy5rOSyICa1Cqec6rVBw@<6hrbc^bmNk*jewlxlW z(K$0b8I8FKVte&B z7n4X9#B$~L!;dbwlx82RJR$3a(<3vSZY=FB%dJ32Y42O?PaMPoPKcfU@_aiskFLEfqFD)40YPK-pIBOZgt#aOF$wj>9;vbPBMuHT_A{ny~C5Y zN6n===?Ez48wPrS4yz6kLf7J&eC{fTywH-$~ zU$>`@3wi}Yo{BvL-H2N4J%9hiB;PX#&q> zdOx4x)^C#VB8z#w_SspAES(kNe*;#BWdcD8yhWPJMrkUaptn!HOOa<_igm%S2bGuc z^s>DPf|>Uf)VO$bWs*Dw_$2!>#L=P%sPf0C}Hv_N0JiT>a&56E;`FjQ_t6 z43k;IvVs%~&|U9WonB${3kU6W%c1zqS39*Jm}REB9w_|xXUE9F#bA2_lXg6C?6dn0 zhOfVdqV_6TwixH`r;pzj)HcdgJ@jw4Yo$txZc$(DpCSYG504xCi$QL+ zl-VPGsONOWM*zEt4ia!)B8}uK=ZJZl#-N+T?Y`K=>zgp(p9;_l`C1ehL$<&$xpVSG z-H*>LAfnIRay5wQiwa$k%VY^3EF=KCD?lhUs@Q*_Y@#C|7zF_U;K;6FD3kroR+A-J z^cRU;V>XdnsQwPy71Mf47fL;d)tVC%nk(D8ZeP1j+;L_RH0O^52Biqh46{fGunA9G z`;~hEZR&f#H@wl}EA&ZiSc&R^ElIKvVd z0sn;hL|bQ*~LtO4Y)YeF4QJ3n@3YQ69W+cW0ghrg$%*6_o`i;Y! z*%0}cD&A*W*51HiNTxhg}PP1igO+XGGVxrCE|-M@dlTIi_R7| zj}Obd+k({VI*mTV#F1)@+#4@FF13MZUNT76v2MF7BRG$uR3+0 zgL9*971@DIQZ0(@OomJ3Z&wz*5nSMNZFv&`*wK|rB}d}@*nd*M6XRZ^9m9;$1(I|r zo0I2t`Qu+CP2T>g%lSz_fniOma4(Wb5=yK#Nrd0rahSHB4{1>1j-AldM%ynUsYYa= zBxHV?@;gKa+3D?ar%n=YN&Bs;VzCWdn9s~6Lnt%JJfUq^1e0FO&M(G|T~Q8;|L!uP z(%;O3jG7Ozb5qXAuY@}W6n88Y?p5o93c$9cJPKqdEsavQ{QV-}ZFl(Y#^l3SLo%d# zsW2uJK{h|n+IFK~r>Hn4cg|)A%!j|KIkcWnM2Nh-&KXIzUD4{&QwrSZe3&&7tVfk* z+5J-=1wf8p5GM?0S;I3={l1A_VYE6^_II})!8RGm9uBvjy7|2*DO`q&7ADV$+9MH0 z(A|wfZSiHP4A2*73G9Jhp#?~A)G}ic1+ymPd~VH)v!4Fq!k!wF)VI%v6+iH zE3|1!;QB6xGP>l@56!P+?New`Ai`54M_gfGtf&_+VvnJdIxftpx51u=|D-AU3RyF+ zc5J)yATQ@UCeUKQeGRq8MVPp?#Y~`{oLHTYdEC#dyM{GkrI)$qQHU+`|mGVf%G zve;37(Rx0TSO7G`P8jGq1_*C*aQ76fK5;7+BMU1-ubbc`ICN|w-yl1aI*Es)GX?)f zOAu_}QBR~48qFAVeprUH9097)Gmx^sO%R_2oJnn@Qa=2vopnL~q`#j$d4w^{?NQpt zTp_k}LtR^qPtzKj?_in_mkH>o>eNIE$X%0k$~aSjdIn-6b8aLkH!bCs-C6R1FPP)- zGN^v#YwHTgJ*#bb6=@>t@-&`kK;WC6l@^@>39+V+LhXbE>U__hhn4pEda-g9?hOk9 zglY>afLWG+cJf1Je6~k0-ND+ELXuSus#tV$;?+J=ax*P{HweYT!f3-0f%2)Qcy+%A zTK+f+isuF?JU-3}Li9O7!!8FsEnz4gQGpH;8jA_s5^ti|>7nAft{Eaw2i?&3*cLW7 z8fxSzMwb*amt%zbolWDl;O9Dx*9iEZO6j9h%d;d?S-q zw9Qj6?=6FfX<1V-pS3qw{^GbrHAoncSqs`b;t;hafM5xC4RPKOk3s*qQX4b|W`d~c zzoLQ^d=BaHq>pUsH-{nvfHg4rrTTY)aYpab%k|w?DFvU1KsG)%YS1(h|E-x}*q$7A zKh$Q#Ds{2C1m*CiIdMNfl2nm~FCuoz3Qd7iWnYO6*F3$?;9q}+-Hz~+ z1%FKY%l=0_J&c&0 zx=oRiX3ID^zCNC@v2j27eZ-R;`h3m{o+v7@5@~ecKZ9CE6t(rt2R_hYg9>WeSpyad zXNj$b zGB<^QbC1I=D|HfnQMT0McL>fEW5SC|>3Sjc4S}*?{~8NhjW;%*NeYGsYaoRAu@4 z=^&MmW!EMu#5E-=hCU$t1MCb<!zVfZ;VRFHap8Nt#Xn^8{Ay6Z?09s6(E?N|y*`eqK+l;H&td@=#P$B{w z5k;*iQ;w7L! zL<`44{aYcgbUrl(^r|i04>{j_f z#<7{Y@!(nsV3uOgJ%2a0y9|2^3>h>!-BU&#WWX)tN7hz4H4cg)cC&@jr%K%#Y{@b2 zV?NH@3Ds!9Y{m2V?V$DdYeu^__LV4;abq4|en-wphJIBvN|+x`)%aGw9FP2Texz!VeNplctT;_xc`vAW5DZkHG`P= zi8lAqo{{7_di88=hG0ve)80Fkpeb=f7kn=##@k0VtjjGsvJ3p) zZ}`k0af`o5dbUgWi+9d9Wsk&t+k`XbqJedJXby1Xf8#HRXt;ojKQ^9=x@o3axA%(| zo9eoFoiH(aeAIXwrdwrnLo4Z8P^V+#0R!lARwoVei#dcrGP6D0JPPs7)HN0GLS%dk z=xM_7ov8Pa14KF4Cro=4|^K@79z=gz1u)cg& zFMtCNlb{C3NEuP=3`}1_+l|ekLqO@$RFWAL9!-Ei_hQfxsivVgxZYx~e=00VY{|#B zii+?fiCW?G!R2luwiSArm@Rv|SLd@Xn_T?(2X zbz~?graLXVcvf+&l>^GL)iqPXgtY-CtPb4kvxrpzsrqij_DZ6#`zcT168P0HlpyW5h3*^HCCQV>dPKg-`hvlJBvlbek2r9JUTs zG0nnO`3S2|f#dp`YG9h#<3= zz1Haj4R+bkbBACP4Txs&r|MhWx!bUcAR;H4p(+EA{Ui*{5_$$r^-_5JrjhGE9gCg; zJhrP-yW90nyg^=&*aMg=bID2mB6ymkUw?LSu@{FuPu!tM$_HIU_#;nz>65 z#*fkx6W0{UU20iSoJWb)s!rhT*wHay<<_w(WQvw4<5v#h>HKovji7`=(;TvC6mIPh zMQP))bJP?h;yLA0DAXK`6Bs$NB1snRT(oPE&x)`4kD5q>7eM@kv*3b;w33tMJFW5> zhckyOjgshAzEcbfU6s=O+%sZ2bHB^DT0RsGa{T`{gPk)|srF@VDw z?J*vh?~%|fD4U4Wp=ns;GiY$wrI_>t=`8$LJ9BP$C)?qcmuSVvY;)$tC(+F9dy{VL zAi1lIna(M4ih+e49HEVhAB-lj_Hz3Ersy-?1U9;tzq#B?3$BJ3!W%8g$QWOjYo+oF zmdMpF^}XGuTi1Yf=d@8CTRYnSpBmBR?Qt$Yj6kPB9#LV7Jz7L$FmHb-?cJ%Hxs)}( zBdQR zYp^e#jtqol6N1#-Rn5=6q75ZW%5XpAd!sIh{K-*Xn_6Pe0LE+E*2rRP9Z%p2*B>0L#&SUJO5Ha@$FB^c! zMTs2JLaxkpMU3@9`jw8Y3g?s9Xj{fn^`o7t?&2!k9aFjVlx#xB)ECDNEI>#4stT05 zV(G)gib`@3ixp((uM#&#fAm%2$FmnhGU}>>2D4pt2n@;^^><_eB7!Whf*5zHUfi5PsQ#PJHqI7G-rG*4UzJ1Z&7kN# zHeV#iy?Nu%@^fWo-+!#VsGrs_)rvJw+N7wHL||tc2vGliovBH#R^P9gT);mpFZ(%n zPS|*_?&tLOn;SH*r=E9d1AvduKhGsAE~UiKL6kBXSSV;#qh1-ZBH7fTj$JfXaYGD6 zGc`^I*GYupG01FNZr|P&R|1d6?D5U%9W&;Y9kWi!agta(GpLti1mt>5>{j7`@4^Y?NAU+~0uD(7jX#$bXJ4xbOMX-B!qtTZPEO zAvgr&)&7@hG0nHEzg$J2=O`m-cO4fk-F0tpRg<5 zA5k%OD-5B9@rkbG3!TD zkS4&FWNe)UeSE<3e)7dgxk!NZ!`%&7~uMz?<)`F+S+Z9+5icuSHwX)PV zn2!CW{%uc{z4H4@PZrP-E5(6RP1PUB%}57~dVa_S!X2Y}#0pK_t^#rFs_0yq!}=MA zr9UHTNWI&Oo+1bul-4r(5`$rOL^Rnc3|!)(t4gzzhbfgnwA3mJd;Cz7jH5?#HpLNV zSEU$8|I7U8L{Nfk;+vrA_ADs6BxCrjAPbDfU( z{10dVE-uC`s;#f8!0k zV^-(pSz{S}Lb;j02x#FqI?oMj#3Tk> zVnEzru7i)&SYu(48Z;rn_feP2w`Gr{1kKU5vjmMxB#?aU3BQbdM5wcUwYY*%j#hiZ z&6=-Rd2pJev2)@1G)j2BQmV7Q0W{{UzY`vo0b-%}O#D`CXGx(KOHt@SeJFD0P$S4c zwPrS<`gDhXc0cu|K~)?x^PstFU;&FU#Pwx8e7u9N?Rk^L^9mgf^RMQ;_~h0l6AeyX zkq}iZ1Lz9N^cIvHhD%E&?8NF_3#RfBY8x}ZEM?2FsKVHCYcNa367tJ`)AyrF zX~COLE`x&;5G(HLz%^(A-Y5fEwfJ&(h`%REelz&*8|#@k>21m&2b|kZdY&T99cg8I z%0+Y}=YzI^I~+HM1J!?d5#6Mfv3~C5tTk#T=b_M#H_&@sW_E#W^xo><_$|030DxZY zhH8?r#+{W4j>#wV<4jDtz@W&OW*a!*U`KhRkj*K%Zm&Fo(OVkQv#==c+IeKZj_wf; zG19qf7gX7!gBtu6!tdj6BvP?2iLU=m4}GsT%lgHj+?-zwpSJmV7&7Q00JEV*v0YKYWJ%lNHe)bDP%76)j&brmeD26ZSqeIWLIBg}?Dm{AYy!QB1&kk~1Ae zU*Mo_IKQC*R=z8|zVzRtkJw?bJ0#Pj+Nb}@?S9u?h$hu;!hTz?fT{($d*u{lgU3ef z68GiXO8Ak_g^QkvXKUxZ__y{HEM}+U-911pDm^`l6-Ezn1}`scsY_(W zlP+t9_I{T|T!AkLWe&Oo)j_C#9JcldqX;r~mOFk2H;bAf87rgb-7B{tjrIOjmu@yD zfnQLA?#yDQc^PDzf{e<2%co2yn1DY^P{!T4k_g7XF4`OL1%XT7+9P$WCe4KK-x+te4r_?*3aZ^O_W+B}gN!k$Oc*Vny{Wwk8&xjjH3qd+d})Dzbt zR6_@M-`aS*jz0ldszHwBCP9-cv7|v5o+n}xG6EW@)P9w{l;`2CRx3VWVM-G{Q^6vh?5#^Lo{B% zf3d?Eo5G6hc9wN##6iK2}$35@Lqg-XsBRp0>>Wy3hIcD!f*K{FrT$%mi5yIi8u!7&>f5+R2g#WhULj2_ye zTo=?{b+)P?Gl2q;=B9D=IBGlp5?)MavW8_sdAwfI5%EO)=Jya?xN-Lvdlv?N$9EY3 zkoqbjRg88%w9pDF0c}?UjrWme9{OII5nDb529@{Y0MD5wP87RLHzm8lj_8{d zs}(vg>%(G$$|w1-IO;rYqg=Z!*vz)k;(Z(P$Mz;t*+IOK=XukrcN=S<`6lf_HCcn$ zbcZ?=jg+Cj0QXTG<>Ge4%G+k4s1cSo2!a9^942!-obT#Nikh%IJ>7Z5`XRGb{{Ug*cL(b(Zg+(97r#Awoj)Out&UGoF002!+#k?h4s zv}-t7MPk9=8({)V5o;0_A%HY#Mc=hi$8CoQ$e}Q) z2JVA34$}T2EOeR^$9Zmorn^e)3#vs#U;pbiD(nk$iP!+Hg?p=~0K!>XWp$4xFz!Cb zg+krku!TA~WIi$yeIP-P?Xh2f?PhWsedzPC7yX+ch+8%PEEUi@mU7S3`mk?erpq)-=FA z1zeohaovgb9|5m{gx8?oxEifvmg4Um;{g$FdCYSI);VbrqC1`GpQujRUdE%KF%cPU z<9eiKGlF~ueSUceJM_XzIDp?^b_C)KelfJMyRF2Kv(HkKgN>FcBScO@^Y^NG2>+mZ zsxVvAZ5}E?9;8w#NaCKW$5$OOz&`K&)RQa|4#?0qXf)(a5_(L}0E@0y*rxLhO zetar_VM;v~TOOkoq8?S6x3}mdm_l#%2PZ{7gZYkv$>L2YKlO-kDH2aY(^CH{kd)6f8P88h*M2`kWqy<-}wyDNvvL|<7eM@~w z(BZlPi^axouCG-FF#SZPwQSTH$-g`^^%pMEA{AY z2QMeWXqck>B++P7mF-M0}j$QHmQJupVCTEeBewYfmdRH8$v}yNDsZVaiW@#c2-FbGa(tM*@StW8Cli`_IX;FWVAjrBW1@y1WECv^zHD_` z$b(>wb*rLU=~aK`(eNB|0}fIR~yi-IeXdGJbRBy^oKMRPBLqu!R? z-St8}uhqcpyv{vcu0P$%M&t5li1ds|f?_>kquLiyQQD0&d;FZx5a*bVZ2G@2+^!2@ zdsE(rQDWRO?61iYos^AFC8!WN3X)}J zPP3A@Jk>3}ik;!|WGEbA%?DZ>A{bI0^$JMWcp?uJ+Ey&>Y|loOddo>1OEGSrZLjh@ zDnQ-ukYO5yw(#_Q0t>hl!*((-<57_+*-dAEQDcXWv0YRFzcbb#R1-k!>3T#2&@iq ztT7wxGa2o>r_X6WVY26!J{Ztt-mk*o%7o`pOCQ4*Gj6XBL$XMC@HWSHc^7FJ+5;Bp zuSB+L84azXK`(79br5pp9c}cnX#9_f9|G7jX38hn$4zJNw(cO;E)b6k5k69yMFj^o zA7tC84zCUGDsS1@LBj>f8V|+-(S|0&B1T~~&D|$khTY*TUvEYweZ!ojGY&fm7JXy8 zLa+k#HiD!Nptj1F%yhQR^M>wRNNJ$@t(}`_lmv0?5N&*|@T3e`28x~#qj1@(JJ&=3 z>ENBJ8-8|8M@(-rV?}oM(Vep61|MJlvcbVS^Uab@pEiSGsBYQFmu%~`2B}T}ELW+C zh;_9TLA2Y*sEj4X7vCr{T34?9HY!-K(4E%LPo3>k5)f zkLPnDA>pG~r`w{-H-nX$e`sfcV-ZC^$0r9;n-!xZkQlP&LZCW@sL#%bkh>$1HnLJJ zk{EZ1cHXqWZO-Dbwxd7vB?0PhmUGYkQ@#u$>RagpAWpQ|>!pioFig$H{pNI8nmFGO zMIBQ$M?-=8%H8RRclcsM9cCMfew30%6jkGs-xzydxgc!+c>F*f$3{2Djk9UEePaNo z_#fYNG#!E`5-o=H^9HLt8&vMd^v0N~{RyjO-rl)lMz z(-7BKw10D_=36J6aB9;c+%@J*wjUMC+EiyiGQ39Fr?+_I5*CSC#wTbx!e2s$Rifj) z&|?NG9xRH;^~k$L!;>nFXFaX5LVkIeUq8^dRfgx)4AP&4GXL6bnn5^<)qR@uROzHG z^X|`NW6HUC=(Zp$YVwaOed%If3iRyeb3K`pRs5Kg+7i`X#7D`|rrJ^4wlNKVfXc%= zgAajSv^Y-$5p+DC6PAAnsqR|bFsX6vZYzi^&GQ>J%1u2w4Bq85M&=sayxRJ+DiQOf zttrIOhN-^TyxHXs;7(X@(-?Xlil_{5zv1%C#SW+oO{-YME!-!YW#5Ao8Wt$F-rTpI zH%!)g^>w5if66(8ahp0^!5G*)*LrrES>bw7H`F~IFfj$Uw%pV4ydwS>k{$VwZ6}sS zevpEr%g#w&r+3uF9|3IKrE}qxq%E?VG3om=z+mmf`U&(Kh;_=WH$=1VhkSXE1o2H1 z#A}2RgYDI4*l1rHuj(}u?vm0h#RTlgBqq&(EV!EAQ!NC@B0p}Qf*qO*X%O&xF3_Ev zjdkzxjb3pcy;@>P{@^XL(x8XD63f~q(0`5x9DpzKS5C3b$GQ6bZk{E(v9YcAqYJZD zu9QT!?R$8%k;PTsA(QG_jCQj_O$non(JS)+E9mU?#OI=L zKhJD&iXC(=J?PPfuXwvx>{O7fU-5N+Yl0F>FF%1>euZNS(Wi*w3Q<)94Fp0*lknng zo53yy*sA~Hi`gUmy#X!jYLC@J73g6)Gqb>Rkc8GCu?fIq2Xj!twY5(r(LyM-Ml2kb z*#8dw!M07vQpfBE7X^Oh!6LMRWOeJMD_<<<7`+Ir$ebh5A=yS=K;%k+N-H%$;pG?Q z*CD%l$oW5%k|xEW95U{kz#w&J2QfY-dA-#P?z=TPoO_Ey8(yS=C2ivyo*x>`irLK= zH^c$mQV0Z|oi-pDZYHLHV|&8mPMV%M`9!t}A)iklSCV5yDC)Z)0H&P`W7j^UL7GBAtj;C72b^#WjFq;IR*3j`4TE$sDVx$_yYKA&u@qlQ|py6B7)^R^MFz6a)#{qkF<=O1d#Hj90@{;F>{5wRR% z5LOnbXROa$i=E`0OcAtfI8PL!)_|Ul6}3tl$pksR2yM+bKbuY&BwVk`vBw6|dHMhG zf@x@vbDWjeKK*|R)TCVfNzr(`dB1U z+T|-S62BVP!#UWHL?FIGz_&9Ye2g-^z8O9<0%Qg`rv&OI%gfLFRDOtesfy!pt_2P> z{qh<%Eg22Te|m@3MO1+ChqD?yhC%B2(B+9b0oi4BgbB<8O%X*Z@g2BX!wB* zI6x7^w_3Sqz7yP+^0@3sQ3r;`Z}bRE6F~>=U>{aB|6B1cj(Ga|evTUQ{Y^ly{G@M& z2wfT)X?e=Z>W4ln#MRTEFU&pS=n&Q8`W(N=@v!bh|+y9F4ETkheJPkc^UfAGlgeD_m3 z#|w{%0D|-l%s!1OPq82Q+h}b;+Q7XztU;?c1d%ii@M)${*^w-Mdo3+rTL{_lfD9rP zSM|au?${O_U#IA z9GwT43BZr47mouDXLKloxYJK4!Wv{*Sp~$b`!dfxa^nIL1j|wTbNjPX8eYhW9%GIB z{Kc%>-W$Ic%D~#oB%{CRx)%}8krx2~Ew*jlr(zUpXxVGdJY42){d90Jla67CuO>c+ zeVFhMN<+%Z>Dk>U6R}SQ3jB%6W^$8dk{yEU-Z_4RAtJFe$B<|1i3k{fN#a~0$r`zDOMYB$R?d>x`~V2pBdYF@gUN)N>`Db1m*=AbnbhEAiroH z-16*OQ9-mUp%9f8%Y#X>XBi=TPlslM4P?W@eRFrgrYS(`g+qZfIGLxS?Xy=AItlec zlUO#`bzF3e-5&SVu4!EoFiYVL7Io=gvg+DRC8+Bi<a-xRVyl z25DRuh1oIq`o*FOLl_N~v|qepJ9^v%9br z;780#<`1@7F{=vxjU1OQB|+1ky&P9aSAtEULa_MYHJ;OFBmIHxrm}3zIxdwAZ9ZK= z{tT_UX=!JwgiPrB7ppL{a_GWo+taWR-NS*^@#mlJ*3&%=N%UDi!=@SB0euNuYejk> z#G^qo&;~rZF1m0wr3SFYIh8A)((X|bSPm0)4SSTeVcSnmo!)|f}g=Y?O%!&gjbPF89x?S{QSk{B40u2l+s?Q zm|qEO&5;Q)%D=@}arx|UeB#+Zt5n=Gc6?E>UazaaorE!=I;BJ+miIrCbTg9jPb~NWhqA56?s~$c>zfDWOsv)Utlk0)NVgmyqVh0Z+{&jwwA#yBy*@bA3q1*IeL0VIX9;KOGs%1yPs9I zezdW^r3tG#Wf%%RPA$ck2U%VW!ANo`hgfQdw{V)(1S%>nDGsqmpTrF1L=N03Q|Z|a zbbu{B1LGat=oj)^al5chvo_VdFrQ^5^>fUdYzbj6zUS`*S`jM-r~To>WPzFA0R&rG zhSsRE9s7*MFxtCQ3Fc(@X!-vhuzGom=gzW zYNqchIhh#5GrciR=k=I>PSr@j;#%8ZG1g7Ns+Oh7u&tf*U@AOn5fX6Ew$WhH@wno& z*VS4W(5$qHQaWCNf&EL^B40Q6yqPrTxlaC$%fo^sGzIj@-7eIek|IHK`Lz%%^OP+LF4H`O8m7B zf{na>^VihjP4e3-2ZPuSB8U8OmWTXd zKvlkDthhvq3c}HU6BrqpvzC#-X3{~sZJz%i;pX;$%YKdr4*qIBxj|r{NuEAmRrn>F zF&t}5E!HZbmY;!p)i%Ono!-q8PH@&TmsNKbmQs&e=NC9LXna7c!2TyN_s>wOaHnH2 z;n?{Hsu6zjY%!L1CkRIMxG`e^Todj$J{%yUSaGC)p}iIp7{ZeOye)Cc1V}or+Tfy* z6PR^^j&1oN3wMNTOY~eGo{!bw8U7<~pLlqCd3trpS0zvjq}oDWIoLp;=G?vEIiJTD z+$w<#JK$$#J2%lcDlD1%Oy9(zn)}jYHS+6AK2sA$SXTg2G}h0b5N%y2WICGN(+Ub1 zZ5M3JeDJ5GmoD>}jqf{LA{0p!$_2mK``Emaey8W4+A$FLb>F1y(X4noFfEIz%zm4F zR%}w({asul+(h2UJ_&_)*fQcs{)GTT7pr~De%{rMG9P>Iz2=swAItXkZIWAGhM!zB zAA?J>{hpwo`VSV}2J@Np!nb1e;L1)Wx!9_nX4&L4!JM5A}>Lk9Bbt*J_ik zcO6$NrFY$b@C4W#>&`x>Su)%2vK~Oryy&Z5AbA74>m}y#FpD&mIJk7sdA;*(mqpD6 zj0mac)etLOhA~E{3s^DFa{LjKZ&eW*TF9wzK3GRroLa^ z0C*MQPw<@%cc}U{Oc&iyUx-h0#>&;oB<_6ji1429Z-^ty2M7a*9v=GJI^&lwh1r)( ztz$sDvjl!CE;|61#mU2f_%Am zFj#T4>jMYbtZsS925{ERIk@s5rVnvl%j<{m-ug3~mdU04q$8U)pjIxTBY;#Qs28ntV` zk3*D^$E$hj)zBza!k9R903SQ=Uuc5z;;YS&j<#8wN;1_>q&`TMe63j>ysXa^GxI(w z!_q}F{aq)MdSG_iwXJW}$bu!wD$=0GIp8-~&iZ%i9tMV>&e$N4AINdZZa%H5aGpbv z2+U^!F5xqi!?_A!sLjkbhtw-?V66|rsGY@x7)U_?A`upnkzwM}ySAw=ceO)z@ z#mp^JQuLo$d>?nEGK>1~QRlG5zkodIa-EIj63;oPQoxl)T(d~k;Cwb4StS#a+C2E} zWFZd&@5i3>RsQm+VzGasmVq-QdZF4%zel}Lo(?6!Nz_SxrGW#NQ#p1}7OSJJ7#1cF zwjb=)Rim(C+;L^iG}K>y#dAPvRHE0DE8=ABWURrlh)!L z3O@Q@sXora6y9@YmfzT$qhX9B6QvN;2R#XUL#{W(9Hix8_&_NUsoH{Ur)6H0v>6 z4Ku`kPnDlc?5v&_$BrF1W%RZOk?MlL$uJ6;L-aT>(_@tBHyd9@l2k<(8rNT-vY3`9 z6Pbtep3MuZmjji2yl&mfsYv4YC(Doc%>kKIQ3ns7X*rR-ntHeaUmC9sb(9}-FR1^7 zZs>JCn|X(d9t^zF@s+}bum&Rm_p={s*}n-Jw(G6H*p9+b{EwKwX_D!D`MT$KO`jXZ zCb6qBIz8Vtapzh36Q3Un&ss%}C(TNezV9HdCnigqqMHQW5{21YTrJa_%z-)LnTNiw zW4HDDv1RA+`T0R;j1rp&(Xjdi@^r2aV7cvaQS;F|S*`kvobzlh zGiAh9UNzhV!EH)x#>L#AczJ~{0&*B5NOrI0*9olS4=&F-fd{$G*`XG>` z9x?9Y`d1zIA-xW^T+p#vS zp4z&N9Vwvh*!mXc7S|AO))ZAW-ZBnPhuogrQugL}_@Sz0B487zKGdAn+F`!RprgHZ zLe$#kfZW3^Y7u=!ql~Q2B`o)Z%00evm6~Auu#3ScPSdJ5g0Xi#Bp0?@=Y%f z??3@z0qJsPaEu8>8u(^X$Sc5XC8CXx32?ARp0LEdkygw)9*dcgeFM560N z4U4Sedlq7YCB|-GkMef<_3nMn`AY^p@2`>&MRi%q>!|AN(Vp1$UY%K4aey-tt?*uWKXSI ze#Bso=&xB`U=~jp%2KFt+L&ssP&OvR^nqnMz18`&Lw9=ZzJ0S!>~KIicCQg1)YTvB zwH>CQQCPgapHE19?VTZCFX4d<2m6r4j>nP>^s`_UE^L=vF!xugWW?NPp|x|!=FZ!} zkVswj7dQ4D)mWRXlVKm6oEb?e%Gw`#t&d7s@v3uTx>XXn)lgvk*0r@5B^qjROUrC7 z{3@Rbk*uiw*I*6S%P~)Fab>BAYE1Rk`RZxb;8jQ2oj819Pxo&F=(=dJTUb-R4x)5| z2kUGSep=ILP0_+VF>|HiJI8|zPV904TY?S|Yu6CP6UEYD)WM_4A#}z;Oe%sDZdBfu z_E>HpemAEp3N)%H@5jJ>V11pgYo5UOOHr;aQJN6sa%T81;0(<4r;>w?8Ufk<^c;^2 zTF?oHpbm;=XZXI9uI^^-_(4Y;BgA?vmGR!WSP@Yv9_2VxoVu#0L?qW_&&V<`?d*`l z6OLe`IHKeh3QPxcG>o5tYm7TO3AdD*Y%-6}k`EYPm%lrY#;pIY^v9O$rwMH z6YhrR0#R|XqXN>{miscc*LQ~zQPgiokZ}^e0kvTsJiAAbxH*3JY4?$Elw{l%;B7a+ z7uV(m7cbMc`J{+VviZ{wVobjSSHX+&OPiV>TAs>r?dgucumY@{zO{C21QDGMr#vvf zOv24gKk+rr81>GSZ+f2Kw2+AsCC!uV1f}m)9+l|pEsY1LWnEzQ;wh};#;3^YMoIN6 zBXwE}3Vhw$*ao3q9gQ?jV7;Xr8CY~BarSVl+*H=naGYrC7^NxO3uCn1{cZ2tvP-&}C);LlNCblknm6LeL4@No{4d-Ur z#>n2nSKPtJ5dKX;!~UY9H27YYit8Dv{v_i7lJra7xCc|Eg`L@W@_E~M6FWO#Fi3!^Ke;v4O?3g zex%a_LI|#Bx&6anKhANS^eV^t7KL4t2*XHyZ>91BCJPp#@yNsPLXA+nv1tro6SKWYynz6d$fxZvY3vzn776mZYkE%3f#-Tq9is z6<3)*j)&;?(1t>OZNqMp7qvETvlBwQof#Gg2OTXIgDMbm|M?>v@fQ}rv!f$ak?wjO z%?Z__-(vOSd%oW%{Xu8eBWU4oc3l)ZXT3-yFaDOupljR{qGeysNUrT`{IpVvEHG)v z?m39IShi`X@~Y~_F=&h~8=-A=&x?TZCh*R5n>s~-3UODKEs^ii!QYfYUe|R-s-qwS z9GEdAaBTMjZ*dsMVTuD(|9Z?%C6-^n8c)<Q`+9(9<^SCPnF?zAHBV)C?T zAM8}ukex_D5PUZ_k)1+p+a=2rjks5V$}Z$hoG?Nrh=|&9{hnBm6QLS}YJo2KUd%e? zJA;O>A9VE?$^2QXD-4)$pVn(%fV4^-ru0tdpjk|?qnmpj;C zm`YbMrPF3XkvSWfx``fjH(s3%#$7CpEKj=M01Hpx$u-i2hYHuKM^YJNQ_HchvV${ndk3J%`_Hr z=-B|NiyKfuMMF07khkjiYxr{NRbzmVf^Q%FT*gr8PP`QzFN_(_`RLx*mC{$`+AmM| z_%sLaOV+1vK#^vZ{d$_+xh_v!P}G2W(<2#Ub!mdx0Nj)=Q)R&u?$_-$hAcBaJBg0l z*Yv2jfRjUYKFUN#enu82;|mC<2eGqEn9LU2>mSg%uo{!E@z6F23%>mSZ_Et2x8Q*X}J_aQLHKolqAL_d)-Gb6rwkZ zeBN~3qkx-ySy%Pf6{*X$>GZ>^_|;=-uh5)tLnXg_p$6(bnE+i3-Iuv!jsaQhzPbSs zOTW*qGI*qY3px6jRC0|Q9uQ7IwR0zw7ym3{_4yqqcsP85Zcj=-nrkZI!uAil-{-Ih zzYv3We;^`XdiZ0DC>~W$%0>|8Ex6ffk7NzrO9VNS$Ets2nQDO1hSuZH;7+_)kmICK zrjBD*ggwRnNRAiROQbi~q*P)ne&k??bH`sY@WF_i9!;-j&%TXL9+g5zNf25G!Rn6L zuf$=CNPNGsAD{errcfdZo{akpNN)33Vxa3~>Icr<%}4bgOLLnb(Lvp#;ufN@EL6JZ$S7{uHlAB#Ckqil}swl1g6b| zK>b(7_#QW!E$-?TQJ82AfqV^(WD@P|Kjc3oiUS1+Dx@<(bDorU|2|1O>VG`PsT^_= zLx+Gd`85dwDYa@Vg*(!rBg>}yuLHM}#CNrbHcmyUAQS}F-W;rGIM_~evZ0dks7`m& zO-ujgXDqEh1h#g|j!2DW$7zvLu<4Sb+&*Dn8M`*W2keR7aKUnSBRtD&TPJHzi(Tok zw}}O@--6%oUeBBfJmRpR;1&9cF=7})X>LH+|1Prqgeba6J0~nMC;Z{oTeW*RHimCI z>x`PyXdj&t-kAirLza4@m2Bw9IHXUk2`nT026{=Ok|kC7|bO_=6i zYO!rkRRh87ool1NSL-y_hWf01(29_tZwHDL<0%Kr z>J)oZIFmu5oP=TQ9Lb^WZ|(2a4$nw-(E2}vkeCAqxq)pY--exKBoF%&eJJu4~>(B)(j1N4?D$Mj7~#TzbVezS^A73cz2J38OH!26PQQ7m z2EV7-C0{RW(fFb>RX?QBy;QgR{#mb94Hgf(w?TfFo&Pg(hh~?r0Q(vSA%Y3p4KsoO>Ay-l!2DrfqV=nU(lhO=-eu|^ zsPD`5{X8=qa*b`lmFV@EAxyztWtUVb5`h?MO9ncQlFGr&3f|iyKBSF zmN8Pu_fAnPragrQ68wlpG=J2;8876wE^{%T;t?q()h%nYw?T(8Gi^_Y66o9Y3qSSFlfSCZ7=z4?&(K6QIvP}4)X2V1 zKgq(X?GTkB71^qfN!O>H5UfHxsZi67;HAiF5{Bv7?0r^#{2TWyBzmycL;l#Ok7Xb9 z0iigGS<(^8!CUvVGf+%)V7VS@PR@ilYLC3kzTE_!E=gG)0C&Bw$33kz23N=+SrUqY z9ldXOf}gI0kh)?3i`NQKH1lWhQ+~bsr zS?HE)_hN>gh~Z4`J<$1wyshlzu(w=!j#tyjEUju~8nakNq@_+bCoJ`FoNWO91PeVGZt03Vd1f9{zoNH|(}t3VKzseQ zdm>}T4A-5#3VQJUOc18vbRtX@Z5f(MM-2ulH5Ce$_zsnMCSw^S04B7Rqp(U4e=zZT zH~GEN7jS0vjO`s9i}uLjrC9S%L6Ht}ODt~?p28T!f?d2!yNupW89(vmr?msO+waLa zI*C6!rqb88HaSmbc)?cRxSbB)MJGGo?DORRqEm)ZZS6vd>+@- z-~m(L4GK`EC1N$N;bJ3^{1n!w+j5u#`_3u53t(~Sv{WL32~2JG*TZy-0_P-asg46% zB{`N{@z#p;omHD(cOUy+f82=(I&w}yuOLO0d*k}MH_AOszn}J5vw{f2Dnq_E>h@@B z@TaENS$Qa}bnIwis|6JN!QkZqZ05UOLX(LM0WByCT4>apgjS4oYyI>@G67xK{PGVF zstF-l1e3q+sWMh{7-}cQLFge1nZFb{mg>+6KReJAg60lV{U^ zkn{zE1$rFWh8QN-h%mTQYwhD3=`C#~!BamKSRB!v*$wjG+HCt!?W_e= zTBQQBhA=c*d$L%?m_pd%7j1!4!zV^Ye;Ff?s3;DynkuC(#FiZGYEzDImNsaM!DqA= zIJGtl1G_QCg1c~wuKE9LUBfHCoh*JD@5d+G7OAyo4`KQR5WH zf&rE9=b4R^rN^G>>C>h#Z`tz-J$nqJnSq;mZo$fW$0`BNNaL0hd6Her*yRKl^Sje^D@%LE{qk+jVNN zy3mZ#UArg!WNBbBp?Dr;xc`%k*9Q=WAm)8D@5exM*lLbXqv~j`7r->oUTM>&;Cjqz zZd{S1%4Bo-K( zOqv`fD3JtMij5i3EJEPqECzVVxvX-HObqYO ziK_+SgGruLI1p0$+(2jPPqpX<<`fjGa)oCLAnk2?4p%>85iu-Yx~K|lEiO_k1`r-| zHX~%e;EK95Zz-DS2g{|+Ko(*0FmA;4L`NIp_I+j;-dWYjJ7NN%c_6jMV|AtAO#|qk zfWZR8XOkC@7{=JG!s#wH=3I-2=E*m}oHVu3Rj$&Xu5Ffi7E727Hqj|>>gCV4{fnzf zC8iE4DI4?dRx6f<>ty{?c)Yr6Um>OM+ch~PC~Bx=45&j6zKR@9SkIbG3})y8MnwJ( zEf>0}Z$%cyi|N%0)4#HH62XQXx)&*T-YcHZ^hS&>-%7El9uz4P8jr>w+(plA+T6y- z4%j$aa@h|59QJk_bd@T381*=U{@zBAc{(v4frNMAIYm!&ENL*5i=1F&A14HbS$O1- z6mWYcH%+=BCg7`TsvGSeD+&6U9stDL!dJ5xW7y^z<7>~SCHT|y>o}0$e4=HCgKmrX zn{4GE-qClwKHs)s_Hl8Q0@DLdN%>p!-_7YHG+ejhE)_FUmZXBiSj%N@GFy7Ri54}U zkM3##Xxqc(A=>9;D6!Ayc||N*;Sz4@^-11CWoLr*Lg-kRyt68cf37azTLN=N-J$#S zz%_K)C6x-+BSxoh4FsGX-r^bWJeroZS!;d34QI{Jded~C;F$)BeBVBFk!3muI2oU) zuP+pS?~}|;D<9FU=O2slIP4TP4cflVHU#m>L%{O;I_3;@(R-JUd{nEPXN0YX^Q%S} zj`j%CTHEG-uS*Cr>@cYifwRU*k94%;0Cxnvf&>wWsFi(UGol23V`7T%jj4E#HH_Uh z7YNu{VVKnIDT>=l6df7A$LE4)P-5rfnmFo#p#1F%K2$T--cxp@)O=kG88W4Mry9}%O=VboPv65ZGKI-4cw%gk2tK|Z-ax)y)NhOnX&@6CR?LU;gu@xK(7ZWif@fStR%L@lk^>hFd1H|p^T;KpIuEs9^VgC^_!2!hV zOzcf9?aYZe82{;_3z_9b1*Uf+g8}f z8TgN0Vt|6Mn1+z>cNK9}RVGF*wl6hbVo{*8iIb&+i~W}_POkrS;pZp*pN;>K{Le-q zXA|I;9(JZLn?#HpB!QOZ7XM}c(elqTdS+(kfAz{6*?u|n{~A)t#mL6eM99wE21v~K z<*EzNR-Ksbi_-kBI#!l1<{!g^h3!3vb?BKHS&8Xc*qMl#SlF0|IawI>z8>2cnL87I zdH&B7r~qAvsR53z_AWqEV;g{}y^W2L6TkuJ^p8ORBik>^*~rfH-xf~)m<(_*ast}f z0L}hO{VV*MM4*$Uvo*lM#?={MVsC3}1hDXQumIZqqs-FY6yR)Q^h&BL6k?ztaDCXJTn-V(Db!Y720+GyR$q z6MH8hzzARrFaekXzI*_f11tcR04snszy@Foumjiw8~~00CxA1+1>g#B1Gob`0GYq4spzB^5DXW1FeEap51; z5aoiP3j$=K&=QA|R|f$nV8N#;tpT6u8QoYCALxM{fmDRX1y2fa0}-bLK?4UT!>18k zS(@7H-B_4_6*LlkwkH#u9P3%xSla;2HM0hu8QYmcZ96(TqBuCZ6gfK_=D$)&;lMy} zrh|e~9;yra*K`CH6=ZVy3+u{b5F<8#a${?PqGx`qoQMWtJ`@+klOU$}THZkoABZ3g zO|4CAJ^->YE}u|_dtfdOFVJZbL6vNR>Z)RjvikCn#I&;2qzH^POkco+Z;5t$`y&qu ztTQ9MF9!Abpq%fqrod}~gq=^x&plU%*H}^L;Sm@{b`B>nY%sY=+wJ4e!Hk0F2zvhu z0W%Zx_RqEt(EYzi{2+q@_{v~W0hFJjJUUvVIGW&~=zUE~Zd3At(Eb&bOf$Vuxu({( zhIfCc!L6OYKYjjb`9vc*F}+4Y3S=+(WE{RGN^H$fYsH(8%;}ZiQhNebFkPdZ>o}Yjg@hL<^LA+u=w2x`skMhs}UDEJ;@%5<-6jxcsJ6qQTs4>y95PtT6@7_Rg+2s zQpjjg?ly z=(u`mmk8%e3Z1|Bq1*<<5h5ku@tJhu%Bs;MZbkR+O$KFv;kJXt+wx1--?;H9aKP!L#ZGn|I-7Il-}|mGY^%!s z5fO!`=Ka}*(|{VdU@T?XJV@B!Pe&a|gX*S8UO`^hilTzm+2f9l-!Zkb7qe&%hSkbK zUUdZNeIGe2bzq*F2DcfuizQ1Uv88K~#&b!JRlz)Gah_V;SpUP_f0_|`CeJLgvv;09 z6Ljq2dxb!AADJY_;t2)5?9};O!jD75+~o~B4?~!F^o2E3XmkS&hrA?AI%02!3`RPr zmUvGsQ$tc7u|}I)^Fn)jXjkIVl!D4I-|jN;(d+4wLU@krkU5CEedu;!&bqEF5Hgdb zy4qKnw?k=BV$i@77?gk|2LvR8ekXO~`wTcI!ZAOV;_t77L+xZ8Caj8>eJEb4Tj?2Q zstTcl#%D4Gw-YA#Q?Uweo1FwocHmM}6HkIX27`YcR1^(~7_9BT#QHNehT8_ zwxz16Tu1`#hGM4ZQuDdC_P1}5Cq027-K~l6%0AMFLJr-IEM%hU?z@SYQ)@*j%2jFZ zQjmP+&sL4Dv(u9Dp-&RYI)P~lu0}F%rrE#7y@i!#!_J<-x9$p_3WQ`8F19du64)dA zNHfI;1fao(3r(c9oekBhlSKD&>!)tXm<1+?s;FprmN}_zMvZoFhQ`T9^sZPElE`Uz zDm1sCa{1N@Ab)Aq=;lBgUQUU>0J#~X(S~njJA6#hx>Y9*rt}1M5<;yd=ic80idpt- z{=c?iQK+l9X5hg)*&EqrLNhzkt|OxeJ@Gt zbd4Fx>BjD6rQDvyjaXN^n9NrFn*z$5<)c3Yc`%{<%%H!&A|Nms97npxVd6a|-dOg* zOsUT^LD?Z5C`4PRv}I1J9Xs3#as8PRXgayN^82cW5vHqBX=5kFcHmSBoMJxjRZJmvNG`-{;vW%n|)5Z~z$=s-3{rOa`KQL_U zxT8NV2i5m6kHz}ZRnDW?^%C?II_CkuH?*lGGc^n2M!RqE$MEL_xecJs=5`%#$odo( z#+8*W=fmGZR}W(Jw2`lGY$u)D7g1-DS=U-~iF7!8W){Lvb3Lc>9`*bUD!Tm+UmsTG zNXY#!C^3Qbv-dIb9IgO|@xGA)!Jr_|nk6x@^fn_j0Ud%sFlfWB<8tDsUoghRlk3pU zx^Xx2OOtKFGhHt2{Y*lri9PjqW8?#y$Tm~PWBv_ALf10l2D$5}v2@f>81>^icRS)` zqAc`HbqH+3-138O?ZXQS61E45IVWY&t$5sq{cCbY8*Ufb8c}Q_#~mfgERa|3KT>Fu zX}-afOKsW_BVTl!Yn)#XObXDXzv$JIM2j@T1|eD?FP3EGlvLxr457+JTS9f&O|5@I z$*vXp3QYB(M2m65?m?VP1PWsDV(6!8&NJY_$889P0_4+-8;aHz?Q`E#nr}-(kq*qo zzAC$$%F#;Fr=nd!M?o0X1SURMIga>1lxnmUeGJD#1keVda>$?iTLiqMvxXMD33s7Zl8Vq5#DV4UY&*&$||qYLV3Zu?Q#?bJ&rkd)++q4gO{xW#H06Wgt+iBPQAeBl(mYt;(BSV0PL#aYscnnP!|sH5=c_1*XlHdfkdo3)w$cB> z|2e)9Ri~1WTTY!xnm3GUl&DI{>2ZtLd$Qwl)o{&pwRZA$kN5{0@Z{f2QRu_JsJ>ng z^xx;5tzk`Ia__7ahbwi7Q0miRLvW;K(c3`Ea59}1wxNS|(=Sh-iBe_`2I9x8_0WLxX7qQld)ySyXkvbxtLvFDl607w{HdgkuHkc_3(J2flRjc0CR}=a zf%Er)eYVzK}MZnP!|-F-V!`KRC(+_|NN5;f!8uU6$p-Nl6z>Yp z{+`1?YxP>d&Gl3Y84AZHSd!==#*s7+{eGWQlUJ%p$J7~G+fA9)FjDKH^$~~YL2#D) z-Wqb4_ZQ0)9laMr)NyC9?}>SdaRAcNI|?7RI`ef-F$T}_TywZd)~Bv;9k4_@*!U13 zEFq&|K#(UBmPG{L*%VQhQ+%?~9d1WDdz(~vwQQo#BuvIRA}5|YNu?W^;Ut9VW3jf5 z6nYcz$iQHr%1$r<3PL zaz7(f+6omX?U7C)=e3U~yM5;V#^jq#K7Tj-&ue4V{Ll5+`_}OaK$HGpM%EfJ>Us#o zl>LcIAmAgpJ;gLl=8y0`KrBgqaTPn4*@^xQ6Q?D^CC_`NR{6NJJx*0`L2YH!?G=Ky zJSI~=sE(z{+YuC^cC0IQvm z=rV4cs}5b$;|vvr)TPTJE)S$qNKldtzNToahYa}Y_?hpCTl(k^!DkYy{*FU|#r0Pp zmlfUI+Cj6JvgHY<`ex%*?^0`tb;P3dRAxy4qWZ39-+0>Wf!*2i#-LAB!lWJR1N&IFql}_felt*4 zrwvEoWgSl&d6%GxZ7p%?=Df;%^6;Rko+`(l6*ACRpsCfV+x#hf0BTNKL{iJ+;!st8 z+Z;h#g~Q!Qv8&t=&$oFy6IX9 zJTaw>{#VL>*zo0Ug$&Ta(DDm7{Dw4gwxkLl!Ho{g#jTayy5p0_iw_8y)m`$m>WQ06 zlLOkWK+Vyd5QKy`cUc_3Z2>*^6+OcugVwqw$z$*#ajlv7 zX#9Z$erS@G#X!;?H>i$4B2R&}h6lNiQ}b;nT2aLX7QABFupUO<1yyf)$o+W<+kMq< z;E3iZFfVb3ZXAdyMR0UZ*sGE4ibEmjt$SYu=JTe&nWYSi_w;<0k^1R6?`h6@=|W5{ z3c0t-b@RSyyL=y-l2nT9C~vY5f4`e>`hs}qH(NQLvH>Jh-voP3&# zB&-pBp&(@Y%b_?LVnjqboeD`c7b2Xyd(z0)zM%ny+64hN*I*6lVClY09 zB>P)6S)q$Fi@0zY`;=YiHiQbNW{BVjo4gn^ySqbjyQ`IrZ%@xn2cHz51M=gLAU5hi z;U;1zKi@3M=9-+a06whdmmfRKoH}p$yh&3H7<~Uq?BS@uuwj3LchO}XA?tgieXkvu zcRc*T5?5UUQ6a-?B%EDwiEf1mUP2jas}r6qAW4qd2BxiK_^+p9x=D&TrDj%ziNMCR zl?eh&xeWcl(E+it1v*Ts0F|^IResCCUZfi=17wAQYSA_nYN2;PbxN905&{@B3|)xQ z*r^^(QwrA^}zf31av}hTP%1{KZfnV`kkdH>h}38Q^<= zip8^Ul;bGsoBRN(!F3a)Vi04Mk-X z%v5DtS)(9O>tm&_G<=++5+Rru2fmaG5rG#zX61Wk?suKhX@*!gW9ngPbXSi?d!>%& zL(EU1SiUH!fgJey&Gz**UmV|6+zbVI?N0SUW$H%_?Vd>d;RI&;O3~U>wNLdDhz4?D zsKS8r@?h8(n4XP%AGV(4pbRP%JESr7n`5=Gr*?d0z;l>-QfqwE4f5UAf-U<=P5|Mn z_u=IM)8{YKCfeN&y3vcRR9c3*4mZJCag>KGXFJSCp8DJs$G$+>O^7NE{CRH8 z)@L%?c`}tbF+i3E;@Z*9*l_#TYXl5SNT`8|A~pWj3NV!Hcn?BX^NO5EG3)qgAm8>? z9d+F$%`XI|{jcgQT40x7Y6Sd)stngliOi`@y3*wk?x+^Q3gT8*_$}Bdmk@xT(m_Nq z>p3FjGnY6X=jwhUzlI8j;__EJc$bN*CU3JJ})DL~JEw&o_GU78NwF6yji+R+$h=kLh z%@&aNO=trT ztd$euUy;x2iv%~XIg0|P$UO_xP(R5hm23{;d4DZ7yR*fyZ(W%m{_xIQ;wr#ds`$p# zR^n2GAe|F-D9;;#$@&fVK|?gI6Hv>&{pm7AYBM9XCVIN;>ILJ{GqH2?d@%)gOc)bU zu0i_(`5vL-6+xNjY`mI}2W&JlsNoBAjTib6rn2NrOyW%*<|Z~qo)sldgBC5$a2h}k z=3^;^BN9UabvEMJ8u}84Fw6yPMy}-@UdxT?g!3Dpn099`1(<_bSBzd z7BQCM>y$Gmb@P>t!0zo_rtB!a?k=K>OE=#txm7hrlOVv)dXL?M9~4|BVGEdF_=6mv zobXFwbfIjp2MaaO30;t6)3LCoIT~Ub;7`ij38AA!eY&cII0YXb=_)0zp#jOs9{TB^ z7@Dbcbj=ZQT;VLw!&|xdW=5=9%Q6s9j}G>=8y6l?mpI=q1DOUxpKIOU>kJpXeajHs=~UU;-nsbNFo;_hJ$j?yw^5fWt% zjQB3%cu#%gGi_XJxM6V@uVuG)+CFbm3k?2+S)NL@(OrwPYCx^y@zx|PtOXb<9dClh zP#YM#r<4`)VM{_+t^Z6dlyiXF6S>1nmZKE$vOt3b5p-;w9!A?z&nsz{b>aS4<@gao zkO}ouT`5Lk(W)xHxYQGDkyq*?vI-_%n$11E!=up9=5Ca0;V&I-QAQ@xs=&j8JQ{yZ zc-9^IFE1yGTr|(eBAgC`{|j3{q`#rSmWO4(`$&c9=^G!+N|z|J;hjuHBn)pJz@TN% zflgc^K8OS7T3cZO5mmTjXY1>Z%f0%TGsT+5%{2(7hA?;^D32qZ~X-<)8bzb`JqAdk&rUQ-v$FfI$ z<38HFkcLD&E7Scss_cNbTDv4%cFaniw4OuaujuMMBlq^%6#BDm8{2Q$& z^BCwtIG^(fAxcvAzy`kx25NYY1e)r&H$DH=94Tm zl<<03yA9azu)?0XWga$HN3T>(Q|p0Qznt@nZU}fv-msr&v7kJzi7=p*^)Tq$a1NAlzcBk@TKTz-~E2c9GA;`JMET#t97-0lLh9L1_2hfj158I z@iZjCOrM{tpG`*yRp!%HYS4HkmJ0YbUS~vZ4`NxRdsZ*^kv?zV!RjGt%6mZXV?*+$ z>ISye^z6FdLppg^Ub6XvGGdAK_n+Qu?0aDzuyY6{SAKYTaK|<`IYJXtGh!CaqEY~& zM!dBkDy`7mcJopCL9fEXiW~R1Af;Q~d)IL*n#>zvkU#@)|cH zB)(}dV7AGGa~GKQ;Zs7QexwnlcW+Tw+ou1~&Pmbb*?qa!v#Dh2xCNh-)ql%YCKw?5 zAouAgwd+oYD0UUj-G$8)wL#sru)pOqVB8Ipm2Goka9tQtxXdI7TTHXJ+`A|&0@pYR ziuZjmrDtNPrN_*WmsY)|V6r8clbX0&OOqH&l&hCh zF-j39PQ$-1rg)^5a2$jeMq2d1=bEsk@pQu;C9Ym`>(3Ff@sI$lNovmjGE7#8BJ-zT zN4q?{@3Nq1@1~LHr23gm-W&kAp*ve2s~Mm$R-^*UgKN@^m`O%s4(WT@=*QK5ac5=R zL;FcD@=SHd`f8s?wuHq7hq_=z+os)MTwx3GNrXT6+`pn}#1PKkPDSiOdGGNWI@O=9 zY!sp?=jf*L1;bsw(UObjGLnsIqGs(z+rW%KnV}Kej5Jbp)@SAWE|f6=hOD%`0o)#v zrEFQ`%Ioho@|#pO+)RR~bz8}qw$wse^4lz|9*S6yl1KV}6l(syU)9Gf_gchA z5u51)KQ}em?TP#4Gnzv61;UQeiCN-#a-DedQrMnoi=2UwjuDhdE_V8p=#?8qM?`Bk zC!j7nHWu8}dY;e%Ls}(ntx>t;g)j-4!puBPy#(?%&v+ct1!EH0PnCoDWPwCRTjw0h zBdsh*j`l%+z-s&oU*da#yE+cVriceobtmJR=D9zdv0ol>wq`WHlgJ+d%R)MMCz zxkb{>Zu9F>FJo-e5a{lgl+JkwxD0p`nYaAT4;zc$gl20ShC!y>f#osq20L&T>uxoL z*>-|3v5Sj`%jVs6{GMSV*uX_|y$#TJ?9n#ppTaFb>5;VO|M@H4*Zxax(nyUYOAo_V z984xs=dqM5iQxch5>UcQzH>i{w%%$wrs2};mNSJ)h<;%KUPN$yM>Ye1wTh93$qdgH z2PZ_8>|a%$=Qi0mxVjVP|1>K2$vrUhR$$Zk8m&vbpG0f%f_8jjyU7UJvZYrxeHv94 ztZ-^3=2eFcS3{C3Q=ny2G^@~ishO*~%TnHH^ z@{mD}c=As(%%9a-16+~eLC^H;+v2$GKEY#~g5XU^>+hhw_UmkOL2XO#uD>V*oH^xf zXfpW1Fz?JqU*3TR4Lo_Yf7bF4ZC7PZhVg=HP-i0L(R8)m&t|ejXxQ=BR`KLrv&&oK z%Y4C=*6UbE<3RrO33gFqV(ZCg1jED#x4Qg4?=cLDd+NTYVPTeDuz13)68qGtt&p}5 zql%!BqIwnWGIQ=uj|lk^96qF30LRij%QQbWuRTSS+0)uG-V`vCU@G1Qq*v;rIdVkR zPgYB~vV#glvh=H>du^ELD0BOC;h=%oO<6QH99R*1Qs26dwdbHG(E#mS-Gj|XX|wM} zdwb!;T#B*IDf2#tmJsR$QBy%Ilgky41%w4?Qu9yxQo*}2ctEWDj{yG5(ui;Bnie;y zHP64u9=93~Z+FVMm^pO{9b2!8zH+WYpPZ&fg*y}PdmUO;73zrML%1D-w0H0@=sC0C z!NwUIpLq|FhXY8>lYOo4#t%9U~d|**%2xN=UQr~$f$VL;a4lZ_VsX9I+Z7)1t;M-8WAk@`+n^KPX&wGFBj<9%0PJh*Fq-_D1)xK> zeCcWEUt>DivHuvgLa=E_UEjKPqRkhWy@5F?iu?YM28Tiv{~a zNwl>lWJnz`1n*ycL4O^QH|J_~sfc>-01N8FC`@FcK_5S5d5{X^5-VxZuMXQg;Y({u z7FYEJ&3*`f|8_~!cz{Vnbi)RievihH2a$s}kOuwh{O2T4v#r`l{UrW(vdEhhbO!aw zzgR2!9muoLUHrQgyK8e5kcPa&vTEEyDeW3|2rUJn;0|ju$oe}dVN^iyxPfe5LA_%F z<#IVJ($IuJ^cNfq3L>LEy7;sr9+m)paYIAoGt1^^HpJhfDkqQGXpV+r^_i>OZ&z2U z(85&3PWzH-bssaGC6_ob(>rfMgt#=zNOz~+zxZ^iYai?C-hX_AtbVbGn^J4QS^vE6 z+`uo!KR@uW3G{aZdx2^9q#*sK?;qi6TZN}~sNx3I%p#lq#7;~0GK9m{ zSY%p=!}dI-BB45`K~DY!^+E)-Epy7tte*5dO_ zxiXxH{)~TP1Qx^mG=ME@S+&yyQ#DNF=?Km~GUF9qVP15h>e2qPpcys;Oyy&IE`{g5hqf&ym0$h{V?&J0g|&GFv`bt4G@| z$NXIwCM1v`eHep)0zS+uIy^2ApY1q=>Ml5OKD$!SNi#Ti92@g@C8%YQqH9EV3vv-Q zq>D{~Y;A;VGrYT(lR>ZQz|me5s*9&->)nJGTxWQ zuhw12I_JH`NaOM9IWnw1E-@aE*vq{NOWfqU)g4woNL?<)HhhpnS_^DVVJ{;sDBL7m zDq?U;omYLMH_zeOUP=DShS8bqjM8^0ykpwrpt3n-dVcRcSi4kOV75KPNfLpucGN}a zfeM@k``D%-2&Nk0O~>PcM!L4|WxFpk9%0(zHDNsk$3*G9lf1EEpty%H5v!ue`=k{D zeFcX1ZL}HxxZlnORG24GW_?1$svKn-trwWMvKJUkf&y2INwpb7CEnQNU#uUiMJ6qMX=S3WC140iyREqDXh8qWG>_Hm#3)b40t zO+z@)PySy=_Lw5_`FvRzmso2bz}`@?9Li*edAgLkt+E$s@O=>#F-87qUUlfB@-}vL zYvX!zx9)fZILPn~_lAJwq^u3G2o`l2$K#kyQOxPjnR}e~{_b-F63&c|1TYFEB#_~x%e?iG6f8dHotrq7? zJOYeiV$t6kH=!61MOD1S_oW!|=6RL3k6l(~Z{G9s{ks z#j?43*aQ*TzT$@LG6Lco&)OTOc1A0r*z2HKm5wwDAvYPUNXx1#%iz1~^8EuugyBB3 zJ-5V?+BV{2=K9aF*E#~G2%PS*&c8b&?5RULNf~Xta>TWw8dWAfSjSfOIexA8Ym0rB z5Vp0x?+uuljvWYbdtUzV+etn-nsY_9}^F36v zuJkCz_`0t?)jf2nhc*vH`q{9fB1ixW8wlprg^#8iPvJ7Uv-$7>4H1DQSUO&NX)IWv z47FhAU9Sb;2@c_26?21c3S?83S{U(?R#gqaELSngE znuktBx;FeG@v+eS1yP|>v@>0L$@mm-fe|VRQ?D!o6P&2xwL?@9z8(D=ntd0GP?+%g zi84x@ViFF2kzmQ38!>?2xm?%IMz=PAP4R?^4D>s%x%>qoHY8Da}>Oj+Dw$eE#?(L?uKrB4t5=*;lJW zxWGYmXU$>m=v-3<+DUop@<+&by<9jccu~+sXIq@95rkg{rw#Dy_oG`N?N6C$jT;EA z#RXDb@hWZD=&sb?u7VYrUnusnNsSJmK`U%23V+Slqq;j^nBco{-;zdF{+^^?s!fvS|A>x>!y+~+ zsOT+akgJh{S_^$_|u1E1w##4FwNzMnoM(J`?pGH=1H0e*F|KFt=pGZ+bJ)1zq8yb z`W8muoAzBY#1hPKB^!;xwp{8NWbvWI?PTg_aVus^P!U3Za_&gZ@+b4}RIsa}u?J7~ zP<_oDG8_cAPLlegw|azvR-ISnXbK?~8iNU~&k_1G>NF~|fX+#nco$t(kkE_dw8N3P z@X4_sO5+=CNeX{jQO|*K5MTyk!xYWR%CP856zUC@5ysaYQ0%im^b?KCif<5~|;vit38 zhkm0gv*5}=ZI%}wjVx&4FDA(9*f6cR^eA(3^_yz-&cFaM>t&;i{lok-^D#p2ef`gK zjhf^rL=a!g_m}Qz!5J&mx&@R1GP}i4@}FxB%2!kUKntgM;RU`uj#del6{cYJk4KSo zDH|tf{Udj61~*A4!sUWKXj(~v(cIwV!i-$tf(}ttKXs0?$nl|%5cDOI^-g8N!QwPc z@$8R&o|u?2^?(ZeLTz_4yZa+2p>s8SZ3rnwJyIaaPNjW3xA%^Foo{SzRLIIA^xqo4 zAlSOHQ`r8)!V*-R{@|qMYvN)NJ{lKBPMPup7hP;w$G{oi!Y2Qlw(vL}B!1LWbM+c; zloE<6^_32xXQ{RpJ028OyuRm>&Lj|{e z#^~7OWpGvJ&+~l+va-DbgS<1`;risu&N631?_UZKc)rw%&lq9dr&oB4Nm=6-(z(~WzWMbnyVC~WPeUKjwlTLc9i7e$it(o0CmYZe zCbk?EebVSx!n^zso4ot66_*bGbjuYY3RKYt^?G2WQ_xAi%3m-HNyaCQzbZG}K&A~R zq9hu79=4mm}0RsSi|^ka_-H#@I@b%tZ6JS9C;JtxBdc#{g_ zh9F*N^aO@V9l{v^lzfFJR}D||a81POvXJ%Mh{08>hxh(=;?#Khm9V*g6w<9GpfGaE z!p0pq`9)ouHNi6o>WBgCpDN8N9cF3?dZ|IOLjZ9s7z~>P+W2*IXGi&9SpUl%CoaF zt8Gs=lE_c2Hc-mAwq&pyQN5Vflb;x=H3l)EsM4jG&l%ICz6E~C8!5g(pU{LGuW?XU zdAF|bQSt}EPi>)_{WRKcZ7Z2nmk$;;Z@1}M)v)__>DgqjUVbgggZhv9YqeI#Ah2Be z+BkdS%gAoAV(gVCYeV#Po|8I<#U56)=^SLuHtwjk3Ef)6mR!Bl`}1EI;uvmz^3+eG ze&fZ%d39ctG_ed9nUu7)vEwr4Ek6VAx1_%_{=5-c?;i+R0AB^A#CC6g&Tcc1f&7`P zBVrK|p5wGS4yq0H|~fB%9OsE%FuOg!8tLyX8eN+oR0@nk9{ygEGe2(>weZI>A*4 zjML9^A%7gCA!*n=UC+-z|M4BfIfdp<~`Pq4UL=Ip!LDPya73Yy{t$ zo)@T`fc8mK3C9)X&<(5CM93|nz*TdPo1c5>4wD=ian-b!mBNa#R8{G@j+-H?LcCfP zzmb+f%hJbt-l_lfYu%=GU+((kk|udp z{BhzR=ADrQ@RM1_d`qz-N%=}%QPvPoIXsNL-*`sFP_ahwyQprteWCzl$S~f1!aCQH z65dJ@nvzgdo?$R_LYWaRW{6a7S7qz!aEiN1Ph(6i)vZ+&ujf!u4uy-?1Fg9zw-5kU zU0yE=?4$xWJgT+^^Y8)YTqeN_=p|LM3`G)>n)@KA;k)4`A1DD$TF#N5ue)N33Oxo@ z@d4)p+2Xe^ay4y=DdY-LHv+fB46Xbelry#JmTxZ;^)&+rX(^qvpTcTFLUQJ9Ecr$y z1)ZTvA>`q<+_SZbd_3j^3V+^)4_%^t=k~tU%47w2B}67UVEoCA!jZZ2yaK;{+~DgN z5*`P`nY?HA-N-Wsh`h^FnvO6Qy^WhcdJ;54aJX&r5Ci4>n}3bNvPA!FT1tf5WbY#@ zh;GjHxtz}7D-b@VLG|LR*)3x>#o8-3-<)+)w0hf(fGYyC4<4Gdg|{J=f~GQEh)k3cU=OwF3W)n*PqW34v>^95H7@k01K>sH^F>RHjb$`2i+} z9wO5ohF%6l?&TR0XCwdj6P^XuSh^<2D+Z=+;fiM< zW1q{RNb`g=3p>S@_G7?TlMNEu)A5C z-`$R2io?gee~u)(OAz)(8#o&e6lYwZnINZ0d^M_@BNJGBz8*j+oIINOo}NZOm*m z?#<4_j*HG8r&Wba~@bRQv)kSr6fbIQ8LjgIjl>q5CztwC<0 zW+_EK-37}qR4Yi3pOkS>{ismbTXn^?vIe~U=-C!PQ_B+oKribyGIiU;ht2A`eb-I% z!d|<3y}zdHH>r3>vtBHaZPfR5Qg%WNQ1a!OUF~x4Mj$)`5rs-3QsxXo-Wg&xuj^gu zzrr*@yqg>>omB4jd{nGzHpiMCDKxGbA`quo))x90lo^DPEMd)zzXv@Q1p=f2sk^~S zD5{KAigyBb2XSOgK&>5!@F4pKm%Y7U#!c-%xV*4OfV6aljlr72BO87eG5iJ3M%naHIg6Sh{l& zA_|}3a93q;rH==vhNnt}nhiSJ2wc(W@e&fZCAS;Li1`!qT8dXg$6EK0XezppE}BiI zd*J5qwY4pk%rM)qeS@EGv2DWFIb4X4IQocCkUq0%_kIZq;*%-2EQ@B$_i99c`k{Lg z?<7!r=mqYZM^?aMuph>akJ9yX=mOZvJ}y3)d3;6$vM*SgGP-D7*v;XmavR^dQ0U8> z!1LLJS5_`51XPhNqNLfNwM|`$(^|-_YuZ$)(uc>*h%3NWzjr^&loN=o$Me0c{mcUu zmEmK&z%IVzzd|{biRCGuz9U~DJ<7?9B)b&t@b_iLCGMM<&!WMct?ve<$R_%qlX8ws zT*Xm1NvZ1rC+|xX&~u0a2SG(Y@2j$W=yPW|t>-(0l4*2qB*vKZ`*U_Tg+EgBq&2R6 zHV2U3+aYsL&f@Vuw7Bs=wb?r9@EIuUzb3UW?QxNV5@iR;1sEmd!vU&1dmXs?Jz%0r_OaPbT11 z?|uJbi`+@>Gsn43*6&wTMj9rQE#es}6^a;x!o#Gb2q!; zzk*NbhKlBWHF2gDMFnC zTHyh)hU8wSiCrjalJiA&&T!}+T3EPQvWRpHQc2L%aJ-P`{)tXl-U!k=g*N{veCf$I zDv|*+7j+{81VVS|)*!&Q02o`hGtWT`~cC>&;I=L6nu$7n(pi9 zR|GP7OxPa$FlI8D#(rW;rWg0OQgesiy}1Y4F?TXl6F?hOV(8@LBe}6SuJx(C;?CCC zktiT|OEN=m7M`K=WU;cIBu4j?(34$NPhVo9tmb?D5#KgKz>Jh5x%Pvwdn#l5-2NLS z_Umm{Vo0bCWg9}Ao4RkQssEgCuM6c&ifOhfub40}B6 z-qpRwmL0$m))EbAf=Y-K$XPzDfHPRNJ9*Vk&Cn}f1JmumdXapc`HDj@`;6fs1m$vYa&<~(9Qa5UT<<$0g?*c0k>fQZn+zoYa85dzQ^gg&lJAb z8#{Pwg&1{$vqeeOB0c23E`fz^oV6SL|7(XH*D?VV1qx@|w(XkwvTgIr_Jqkzwr$(C zZM!Dh=05ju{_SV43wVDlEv2{OFJTdv$P&=}?Gg5NW?4(7O_L^3WJ=_-->-(=^vFd0 zkcH8!`>-qj7;m;Q@z4!C7o!)uB)>8`(@JN8UCv6v~=+1 z%*}9t>9)Z6C0=%cc0E$W+|#wOvwLA6Z@`IX><#*JP}=BKG>6vV3h&K> zV^xsp?@$YxMg6@BFnGq6@F=$x1{`z_QTGE3N#-lyKEWw0Q}fbg&m ztuJUW?q2ROl<-6uk@;Y&D%Ohk10ahoBsL=n} zI8McaxH|WsKE%(lx~?9p%igx?D#az`EsFN7B$PuLEC{%HIH6GL_6*WRL_bV<6nv(I03%Lz$0^XQqcO%gB(Uqfoncq;)Y?BnDi0lcVM z^;I?Z1pIfSXEATA65*_zjC4*HPdZnk=$&Ei7giqk16bO29gjBS8juRz8qk3yNr2y$ zu8#AudTeXSz{{S>Z7ROMJ!JpJwbpivH>TAba^3uNekxS8^R6r??tWeeGjd)G&+&9# z@pI{NlsX}f<_pIGCPe5pjy_+9WPR&rBR)+628l{F9E|3HsyM)5+@b0$J{N$^NUtgX z=u8R+Cnjm&tgb*_L1z0z_0Y7Z^^6(gGM&T}Gz(>+bHO{H+EYA_p~#pG`eOp8 zOuTa%N~qNEgOldJ3A=0+Cxkf+B7VsU8%DANFdD~KGDm!7Hr879zVQIuWH2{zEe~R8 z`N=w*R`l%wHcIO(tin3eh}@+GWnwp^cFN|Bj%OaQVDIN(*Kf{cqqk<_#I_N3q|&&y z7@>yl`G-JyO+YpV&ji(sqCvvq826at8d4wyS~Fr?$zn*Y(eUi4hiBV1^(^$1-EsH2Y?Cz`myWJ3iE z5`QAdE+;BqJgS7+pjdgdOItVEhN=9v zC{KiXukolpTN{kH2IuAGkRv0?YME7$K7%J@fQJU98c8};{F+RKI1`_?d%CSfl7dCA zGpOwla#~AEyf`=jdmf_U&+dm3p%XQh-9gxExW zpiM3gl{h$I;6==fuA}QK6EwbMlxRdU7uU!R@BwX+iWc{YUnjVop4g z{7f)Qd{Pz8KUPN7+)wg;meOf0PNIurqJAWW{NaKEI_)pjC!kr{)znoc&lQ~k6IgRL zCRTB)0q_a^88{s@7Gk73I2*^!uRVBsADDNEW<3K{ zHFy79?C4g3P2aKU6lSEIXVhYkE>yKwTR2(Bh5^ph5HlRdFN)LcA&AQD>7cVR`ag0#pVYC0POBgdQ zil~s9$!j#M==7qOkV&X_pQzRk^L2l@7<(-kI>9^#oU_50?P08m>?eSjUbbQ&V_&63rr|&{86@c50(Lzk#^$m6 z)JEUt7rULjPtwKI@ipl<#h3d40D^i11vWNO>416Ib)d$Anpq_#wI0B5?^mIv$@_Uh z^Y;l&Dh+L-;w62M zLF_eO8k{av5a;+OgCh30|RLDR9A<-R7 ziXmax0sB=o#^mP()mO>ptV|;{1b#^R{vgSj~(9}(Ir8$W|`kp?0$)@{`hK1 zCAnygXI$gNg~A+R)A)H4fxMBANNIfP=oGm-d!)(>U4B zPB>~Y)E5@G|J#KGSsx!?;pk{a<13__{1m4ouG?EI4@%Ck;0~aMlr1Q8=A+K&&{XUA z1&zmQ>`2@71};X}Dc`9X$R?`XR1--90WY|bTT!uYu2G(#7Wx=zdllRX5)zuqqA@u96ROdv`X-@Icr`&S4Z zm+tI|oos{P&=Dj3*iqti9T0|zRaqk0&LcxR0OyaN@{Ild@F8NQ+HBg#CNIh!u>mlL zw1-+>(V@17s=p|mS7Y7keb}!vAa-dGR&#b!F4W@$#86I-DQ_j}U8h@8Zs?}MD|?vs zQA`tROWo~r|6Cy9chY0GPb@mXr0m5MsWOUrchnlIrBGZ~*nDVFgRcbz&;-I|OBjl; zpZ5uz0B&v(hD5=UZY0fh`mqBSSZ8r0>_LB_$abf@@r!k>Fb)&6s>>;gwS&=JR_3hv zA^$+V4U~5T9&+)QiU59nW+JROz!kK)p5EWCX$Jh7Sgz*GQ-qdeSs15KcF7Uhh!<&x zxJ&&@$i5VQ{*uWTL13xPgDzRUma-XAh9QWmT^{C(>DY{}5q6x96sY-|J`7JJEVefv z(NNjKUCY&a298YfUi@GVQfvDBOfaVvQF<~dcQp}>GAJVHOq}1d_Ltjs-UW{BLu_4= ztPRadEj|hZrO!n)K4q+LJRU0}X#r>ct1UtqdGSUWf%L&a8iqXrR(|@!$0tVmrT`9o zL}?qMFZI8;6M3Dz!y0fp!&y<|j(?{&@xx2yfiW-f5O?>$ zm5`0pE^*T~9D>t|MIa2uX^H6M%|ihoA)U`eK0-LJ8kKT(;WI(izrTEQ_sSx9IWam7 zdM39)V8Y0iX~%QL8vI!}{!OZ#9tw&XtXaU7YawNu` zqoGXsV6&a!lkg$O&3rkLg~~KM=+kYv9 z5#L?k&>4Pm3L=770>;%;Z-ITIc=W`3Wyy*KJ{-6kbkekuw}r@r9|0+~9%?3B0 z0?A(hmWz1V%xPj=TqEKug^hdTOOAl;z@QPz<}>VgTxr}(R?mUu>s;eBNxz7lP&VAc zhM?;*7<7AH+Q1p(9!WJgtV#?k`MBE_dF+B zB^yES#vdbDMF#JQHUfzPCE|)`_oXZ>3ARN-E(JB%m4t_ZIrm33O*^zZ&eO$FrZOU~ zj*wAx1WOwg3m5_PnMfIrs&2gZGP}Vw8iUFo+(=_i6@l9Z*((E%M<<9MF0W zY&7JgSIRMR{xeRq;g65v?1LlKAPFHwrh{JFu+Zy2#}T#&`-wnW-&P+HX3a*0N;>Fu zLCm?kdzwhY@>D=3J0`f*o6kk>lSt;6(oBSniBoZ2DkGG`h5W+M^Z2mWE$H&|}T zoBqwo0E9oJY#=KyNsrsaY(NZ}s%a`3e^W|@s>2MA+HI|SFfM(odDP*z)$O+{(R@NG zyqoFLt{QTpPYg>giAHZoI@?^(XbOia^y)}D>G;y(@V|lF$Lq;9B8a#R+8eBv>S@=Q zS6vFXeFG~)Flpf&#Z&l$>*ir@;0}1H=yXh&xg%|6c@Ag>u}s0598op3Y0#X%CoK~Y zze)hGz`+WLg*HhzYX;5yC6(@&I>Hf<8-Oo-{EL4MANH1_28`pktt4enlU~BXzNSfMfbNP`> zL{qeD<<{=~J^uBBX>9a@Fygd50|VyOAGR<`!}^B(WJND1x0LSra(x6^ZQI+Dth)Uf z(IZLyU{Npy%@b>z5k`Wlx*GNEg zYB6LV{o94Y|E_WWmw5xAazZTS8_PdmEa>dW>=S-ClRY-~4l~KO1w?Bw?4j=sP!!9T zSGE0v`nHv+cpwvEwXHx$B(vyenW*L=_i&~NRKi|NB8c+xbn%(*x*^E0U^H}jcKwWu z|D1_9f&rz#ks|!cn&mnC5llHizD8!?V^h@-)O{59x4&K0r7j-e z^~k-}I@$$k>>u5DB2rMx4J zhjb-c**7^bTO?^H&I&4s`Xg6hg;~&E5_WK=RPEX${jJ7ltW6`}epw`+pBv#+iqKiJ zxX(Q2YjLQxCLlWD-jrqKbXA$gop3RSYpt}>dPC5)S7+gQuM`b4wt(rwh+-JNVZ!C@ zQuzi@muBw&#CoIZT$*#w=lVx|&(tY2&Mh}vpxk&Uc@`BklUnJ9rZ@{0&3vCGaDvne z-9Rxvk0-1Z#-UCJOW+QBgQCVug7DPZ*Wx*BPbzd9p+YCR3450U_czTb$_)4aHdm=3 z;6obm9IIb>bs+wRu&J{_rfq|Z^Yu#CC~Q6tXtOfRdV){hv~tX~5Y+A~Z~p5H7G3i7 zE8o)S6gi*=KmU|fZXMC2Qe`|m&Y*g#PS_$9@i47#+(U_eHOq!t7QQ*M#L;bFYcWx1 zTdv0IlAg?*Hf*sQ=?8JYQxxaj)s5LJv}46Ax6F~(?Y<+OqPA$In*OrVlnsnOBoK^8 zZg|w3J|w!{OqbgC$1lt3Gak~a8SuUPjJzEItqL%WsM-huOJDUo2k&AyVZ%WS+q0uW z5wx@%f_a4&&W18b?zG(lkR?suAo|9%F>TwnZQHhO+vc=w+qP}n-P6{zx954kckkZ# zcE8wrH#Sb>sjAGXe`V&$6DLkZRsJ+>I~0{;x~vM}^Fbbebg{=h7h0ZQiYX3Rzp^66 zriF;zE@tY}br0{Wb5QuWWZ>H+?Sz{nu8S0`j3={~@zw8r0D-}3RfMT2TKI)Gtcq8d zd}%($taT#?T0rr76jJ!w(h-D`yFV-(1-1xrJl*xD6vsm!Jv_#UCASI)dXjAPGO_li z-Jan=WuAS`nNI5X%iJa|IcYndtq+%(KPKExc;1fJ7l?I*(VA$OOo8RX@GjvdMB0r~ zQrLwWR8hybCWJ}$|2p%H2kqQwYW1!UY{^b5vCTP2I0X)Y>Szx!F=xq69xXzd!r6+O zAQzZa(%=Q<4HT%7wO&lgi)&y~9aS3|LbsOq5uZ(9@%9ET4RO;xtHh^=4sN-T5#Me1 zO#aGf_=d7MB9P7>#o22tVlNp*vE`i}w2Df^UY#B=x;m?#G40mafC)-41u;=n4sOz4 zhQalWHDZ$7sBkH|->!zud0OR=-WLUEjL0`J9wFTMK8p z+X)?@*VY-d)W>?%1A)IhghH40m8UPe&B+kK_kT+2@cxM)3 zf8;88^_eV6`cI;Zk1X+`fQ+W|oJmQsSu3BwEe9KovG@QQO=;s925-BCtU?~b8@#rt ze)~>y&=U1Q3vC5?H=-iO&fy=IjK$SSGY?HRsqjn?$ux~zO?pl(p_2KLfyE!*vuvU} zH&Ch66B+cDfJ#tI7RS9r_UZ*bPE4;CgKvXPQ*99t+nJy2@sy?FHRh}Df5O~J6eeIvh=pE=0|=v(OaSS;J6g{O zS+rYZ=s2j*G!6$9IX9+9R&Q{|yyDT_76*rVFBl9noI}}UAzzx!J0@%D)Q4M!i+i$Y z$S*$`{d~C$F@)JlIH!Hi^W;x5!=@#I^*zr6^jGeUVl`LugmeNpJU;WOjKZYeEM|8XKXa!cf)j zkqu6?>-4qlsK=D%0Xy1EV#Cd0fu$e{%QpYjp7lKPJv{CgN31cD6Bp2l843=I3xR{l z@Co`c_$-ZUAW6$s>O$-|7>GSO5b`#jM2#nN~m>W|Mx&q$Cd_@&xfhBn$2-C=SF zcEUM5MoW|rZu7)kY4!f`2Sod3{m8MvFQ+ca)f1V^dlPRJZ4@9_^sD$z!^YTf2;xtP z3euIH-F;Apla{i%^&qBCPD!Ix=$T&k?o3kXmkf~QBi&%UrUw6`bpWzDbP=Gnb z$;#z2bbg~&{WE-cYHy*>_+B_#Qphh;N4Bz~Ka9?6`OV^9Fa;#!*A#v*O#&BZCG=$l zC6~Wu&m3*zcs?aF^}Y^SM}tJa#l)ZKf5=H2qJ+hYV^WQCJVvN5(S1lS9eBX@>0ZF+ znbnr9iPWr>E@_inbhqF92BsRoJa4W1LBusEg7tW$F%}dq2S;a;j8vu!8WVzoRoqH^ zWJ6B4lEYg1NJgF*P^clST=9Esm*-FS-48bDBw?yc513%+S#Qe`WZRd4UUcB(=&+0* z_geef)!X%9t351nM{a=%>b(aQG5ib?l%HHI8;z7;r9$p+!<{D{I5GQ?wj9)G-4pc2 z8Jl0n5uTfm?A@wAKUEyyo&dB5pGt%VIfC~981s8XEQ<>{CkvD%ge17^{Z0-bJ{stc zB~DkxRI)U*)Dk!|8{a`B%pM)}I|k(V){nA0wtscsp zkw$y}BCq}MZe=-hS?`u;HbSQu1#jDOXo6AZZ!ddxR0@f|kx- zYsMUwxO|PeJnSC=`;xDuUe6M0!<_DP#I!=oT@uN3@`o0cX@5;C-N(RZM`f87EqHe; zN^%|p`4X6#qOU&hWKx2W5(pl>f#>a6mYJACM|5!Ly}S_v7WVt$-n+*h2ep^E454eU z#^SDCAi|M|_!yf_zK+gC9A!*S(iz{bLO|*Jnbe_O2cMqHvV)!s+5kp@LD-)IEeH0U zQQBzYPl@_VVm5{1>x7;ip5i+Kzv8)5gnX3y^XYcf+v=={8EfVdURIsh7CPF#uV;p-)ed^2qCb$Ch`VSK&IRJA`F_*e$*;zV#0e6KTT+@~eI<%tR?2iQO7gy! zn8nd8lv-U{)`UZT)4v9RRWF4KGiFDjHI$srCbgiwmJRi#Dq2cc2iov~a#)6N3D%A$ zs&7G>bQK4BCb(dh#xoA8oQayf#3dP!F7LDxTU%mW3Fg$U#rf~nW?hST)omuT4A>Gv zG9P0?{Kh00Sd}#_xY^4XcEykuq9zJp3(+O=)yDEuW>N-imE0`|+5Y51N6Y=z-)|sn7?l|$F=*U#o zpyy03adM%TvZ2$wR_jCV9wCg z&Vr^nH%i5mD)fO$0yB|c+*P-q*u=IoTJuF>s+hk=T2BU`_cbm-g~@Mt&L6OmqyS^d z@70W~iMw{D5dK1q&E88Vk-$h+e#-9bTjkm{oQD=A3CM*vGc?%HF!g11S4mf9jjMfo zHO8R=GRBRBFV|J0an?UMr-;GkRg=5781idzpKlUeb>LlZ<-^?|WUB3tRhw6Isry+7Qev)5r zWA!awr7uImphseT8K}_qeTWvI_E41v6O>?kMb&57PEmNamH&xt)Y|iOPu@~ovsdbJ zP~y#}lYMrtK@EZLJBd{u0h;X=z}*r1RGQQ~9`e!6rYaGo%R!}cDQN2f44is|+y!u9 z#ovoZDRra*h&e(lu>AGK3iL7wTk5g|4@wq;yN?nYR%=zv>W0a_x$$!9K33gz$u|HU zIIu5Ve>%k;;vIMe`HmDIWbZu!$;etl;*tXG*;jX$4>88y;A`u(&z-C(0|^KZy+$IO zj9hT8OE=}ds=30QcYX&}lP?7cKD=77?Uvj*fLwOcHTii{?RAlFs262}9g~RhG^`Kb z7ua*cV~buQ2gq!oS(;Vn?3Pd=D0OYS?p=sE~aXgANDm9LlW+KP{nXy{~p!WUaq>fdr0 zh&|2qPUJnlrleGqfK=^+Vf?}fBt#=I$&)^sH?pZLB(y=)$B8<5c<3hF_uLwZK&;2~pWiyAt6lc=7){?Fx@d|P^bbvyfSGmoLJbyM{;+2d; zlqex{s7-l8@p4aUc|m<#KwGK4`KFSRizqVp&iPRptfF^mb-GKbcq)&_i|nMp?cDOV zA$q}5wd_&}wjRZh;yY1Hftt&HLdd8NM!E>3Uf27V@)x*Numo}k4i>(~!&bl3{QR7= z8Hg=KJ9b0DjR^+LwKk2@LnCO3!_^MEQfHMHEDKlcWMU3rRYrc?dPARP{EQ6nc?JXC zSNYh)F-z@O+Vh_0Nx%)(lVF8fUJj?1u z$aq^Cor?n`M?lHpB^*F?3$_d9ce|hQ36o6X@^lTAOzn$1XH4PcP5>_(k|F@F56ohn zR-=p_XK>a`(Ri$=tjH1^O#r4;4A^)Q1teJMXR@>`wOEK`7RxRTkyMqPN-IhfD zp($6T2wkY!9tv4lw#&EPd)sxR^w^YO8@tE#hm*ixs^`*bv}0YI2;=j%{}vhnE~#D} zT}fAC%cQ>u(=@cciCq}``uI*3FMYB;Civ?i+c1g6&_P9PyN7{*<~*;QA}nn|*^lt~ zDlsn{^}N0!N&y5CP%#uya+%-GzuJpZu#*00X?<9fOO`xN`SK1wjBixAbue*9ZIsNR<6}1BB2YLWGe56EhLzv7D1bR%n!!lW& zk~Miqp)5~U*NQs8*y~2aIaNCn17a5HRT1VCwpGpD_MSj75C&F4Xt0pkGg5F9&e!4F zx+@}7dE+{@mF5{a@D?Eo@Jp)XS90p}&Zp2I8E3^WEm)G#s5tN4W?||Rp+2ATqzqALAY; z4yQSAy7%ZzEAg4S(S`Sr$j&iiOhEK&6DKkUFdJa>r*ttjpLczduDb%6bP!?Ia=;NIHQDdry zwZ3dlP|7}51jvHL*-R3eA!_%;I2&%Ge~YF?c>B_9W^-VP#Ha$;~cwSA*8jRELGY> z-lc@*g1^+V%`Hw3xnj_XomfNr?wIs5WkfBwi1+HMoIz^b?sZ3+lPRAK*Gy@Ieyr0p zROSQ9X`bJ@iXf#1FSck2&4o5Dt0NXaAlK>rH720ea-4oHCuQc;E?_<VbaI&75N!KXB}TO zC~s>toZ9=0Kq8~fkohVa+v(tYWyHyg@}%F{zbXgxKrtB9VoxA6LQ6R3x0oXugJhu; zc+ciBOU45bp52#e6Z<^91Oe3n9Eghlx zd?V$))4r&Vz9&H{?{7?BAQD~)^UKe{&w_>;Y4r$xgGh64$|U~Bx6dcF43<7M2*4SKy$BC7n|Ej94f~^)G;S>{u=dWF zGG0o#ajxQXuG~nkgUakoGv*gMauj9xE#=Tg4Jm@>!dngdLAOXd&QB}7b|X07r{&gk zxOIaHS<3?VF3k-pq5hwc5~fZFn;Y0Y^X1hc{S`Q)XA#^oa&R^ewNU5A^hHI<@-+&F zUJlH2KSW$24k(%<4fY>1PEePw)ykB8d=8xwe!7WM@RV;u9)o&g#9Ho?z$au@rmG~ z+!o*Iwf~40ng6PndI&OJGI)C`6d9^8CTz3Af`b^hmz>yg%rJfN1%2k-?E#{zV+Q8v z;8+FBvflj!_G0Ex|BGe*hhzC~4wvpPW%_S6^Zzf|`&Y>QUy!~3!TbI{WUq#pprU}{ zH`%Ko{XZpp8Q9srYozc^ZvLC>{a4Pv>-cZ7myP}ZMfU#P{O@EhJ^Qz$`&Zok7uoxt zPWk_t?4@U8`zCuC=HAV^dEosAI$e35Iu-_$2?5zLW>0hz`M)-GPV*Ohe*6-25`prAD(zD^QGPC2c ze8**BV#j0suHoM@#_zm;otcG!9*_OIIsY8-9p~?!|HS&P4Kp*tzaspN_MPbIzIXm- z$M21QH~L>;=>Dnl-vgMK{&nErCF6G${x;`t{y$Cp-ezWC{%8GfSNya8f0X~t|EE*f zzmNOwoWEs%^ZqvB@A7Z@8}r{C%0kD6_dlq+e+&No)%@@3E+gB&W!>-dGtklfuhd-z zmhVsTe^cFUHMA@CMWD%)veJ~b`hIq8V+`^8-P2%0h9q;9K_kLuq}{%b`>`F(8R#h z8Zxedh1u1Pz64Z_4G7TXOCF#&2G(TxtN*b7#ufnf>X>iE*H0Y)`x5YO-=ZHO0@4D& zUS5P*-mfkYoloXG#|caoHQP6TN?M!iYY7{>_t7^Y>-LK%@k{*c9*FykkiM6J5qPpv zTKil7Oq!iuS+Wk z%v$-P{v)gVMKeNHUPwY(BlFf1{ij89vu|;3a=i~B_x$x|+c00l7y38B%h3Ee!|{PS z?z;lj`~KzRZm62uM9P;EzNh=v|4?(?lkoW!i2!f^@Q`P!zXv+oP+t#_%FezDxH)O% z^M%`5Y{Qq^7I@J^dLv8wwe;1cetevLTwL3uiY@IfX#M?frs91_5~Up9j8B+q0}(kL zEZJjEU^$WRa$NHfi|C@WVIdz|>?yAKXevR~t(g?wlv{uZl!}-+8gd%pqq}Dr`gB`r z;t0r30fK>-&0IEMy5qXuF}9*rA!p5S49S!jwCIX9+9ix#HaYjs>dB3LOlP@W(pw}b z6sX&EXWN^rm14z^oY`IJ=b#^uT%viI{mNmg^)96I3JKwvadV&nzNB2dL9+9S{xL^F z=|35U+y}@9lOc&7e{bpa^0vC2y~R~7sOaON8dHc^AV?}U*FcV-RAyKe8VkM1 z3qlMYt%|EL6ZbW4=(vN}Mre>oE9EQ_iZfCVYnv5RHISvf7nICUXDR4##DKu&RmAeS zTkK1H;-zcHFq{CjU^!#)fNo#b%_sQlxS?x;F9tbAe7=F!6~%HJ7gfFCHR=96YX5Xv zhI=X@r@0Xen{xSQ*mS9kPKyuQ7UGg4l*sFU$YcfcQ9^HHY@Xgtq_u zZ1pmJOvO>rPhg+7$^9ZKF4FP~#;#@>YvEb6KBi9c)hdN~ z$#~VowAjbO-51H$ElrGS;z`Ea^8)7rciRMksU;LJJ#XO+p#N*BqiCusW7t5M;a0olgrA| znXE0939Ev%9c+5TQ={TEGBNiyT{R7DA7&WAaTW$=9GeOCSnr=@2lvt+qx@4_OPl0B zpx4w(88|Z?VCcqnYy(Aa+KrB)zieBXNcTM!wpoCSAyO5DQn5%D8edS#Z5&#ayDCMhT{to3ERbm%=~Z|tHaq`-TZ zYmbn8tqSI$*V|{SX2-fYIB;#UI`2Hps^-jOm>3mgW|(v4HAHP{{X!-oRB!#D;8nI_+%S=7v4@ay(-AJ{qiw`rtz4OOz6a)Z@QQ`*c? zaDGJ{qK=0myQh2z7hG zZ+jz43e*WsAZ?A-C%mUNTwvgeyUe){X<7w2==DpbI>d&lDvh$JkVmE5sSMwfzqFQi zxv>w+$(I!VhXQm-xe>`UxU2L?O7&|MCCj38vKADXf|~UMEE~{o|aKCy#6}!EsBC6u%Hv#lZUWqZ3c3y4vmTYj=Ik$C4W^F1$5H3nQotJ5*dF8M#a%q3 zlsMEvD;DU03s=IhAM$<|U8i#c3WAeUGR?!j+aI=mt-tN>3~mT9?Q7eRq`>{SCeRvX zijMNJezqkYb)@ksl`0{!(qYUCz{N20uo}uYpKK#tA813HH~D0!U`c^hB$p)J@vE$w zdLuyded8;$)1Yxk=5)X$A-QU6_Bs*amHZGBU_z0|ZV5L&PRwZry!np6uV9$3NugAgx%!cBhI}uPH}&CrRDRZx;=}0t0Qba=Qhl9R5rO zwHce+8{No&08vZ^Mh>8~MF3vIWe@@pT!fRra}+0bDhIdF%>qwlt7@$29BfDC0UjIB zFd4tw#v7<@>|K>4P?c9zpQ1ns^t2~U{T06Vk!Ou!X6OA#m}lQAxjK0x{1aHBsfm4# zBr8kJmB*bsDRw5EhQrsN=(POyXe9aA#FFH4UTGQ>sbv3Rrusgs<;NW~o6&-V4AJ-Vrj-m7uUZ9ac-u{vqba5Ocf{t|F~-B|sF{7OvUv-5!G1|E zq7TPJ)_)i;$)j$fdYFQe$WYR(F(oNW^;7>i8l~HNO8nW9%Yf*ZTpOoVlT|DAu84Us z_U<2NHZVgu-Kv3GysXV)AgV)X&&?x!e1<_B`T51#xzm6w0lf=wQ1zG&Ce_ zPiCD@Cp6QM0!RIFw$$GU4=Gctb3n}t$*l{>OmZ4!<)v}YMpyGDJi}AALGfprpZap` zwoDz{A+QGwmL_5EV}+f#oFx#7Fs*ol(qpmN*)|NH4eYowK}F1&KH)^I-qE|3Mck)Dv#d5sduj?a)hEUCSx@lMkK<2q-?X zr5;mgUd#tU;itCXIif{evm_(cW+?Y6fh1w>Bh|+Y4Nis<1De7Wa*uD11sbir++`!r zEXoYnt{*umFa<*F028prJnojZjIy2$ut)WN=Qbd~A2j=&u#^fE!4LC|3B}AYOa2yu zs@p8o;$gZEjEP+jK&j&X zN40yIqlbtC&aLzZ)>cFVa{!Nd`tdnN*sBbtkawU^>vA&|MaVN}>%dw9p`;0* zu{gyM9i-_)^+X_s41Hf zT#o#f+{!1e(_^;HC)fexb)YyY*A+0!Ool5wV?$SVs^&lPhs9mvNipcoO#!jMNrD}Y zR@(+hJEsL&MTR-mAY84(eiFwIc;Tyw=4ZL`iKSPdO=jP!uW*Qe&+SFMaToAF_FnKp zcN$C{9~go#W!F7jUOX7pUca|;@_{d9j`jgJ&1kk4wXL}6-1X;(Ar)>8jeWT0I_Jm& zApxr%_fehh(Kh1Lzl`(+jami` z&2Af~EOVP)&EJEDH9wO^Hc3WaDF3Mkvjg&gmcZLILX5wEI&IT>Csqx_U;Ya-I!y~& zs@YPm(Vt-C&LMp+K8=1%K-&~y?G!xTBJJG{-zGP)8<^TC~5w1TXEvLBqHwpm}*muFgs&0bv2)PYj2 z{yB!i!XQFPCd*6N1N?3!b2$RXe+rQ(IV@-TK-QzcE1TDc z_EaYxyLc%BL_pi&aCQ}RxppTvLcO>@}e z++YyIMZot2$vFZOPR3hB5;D@&kQTojPlU{vQ|2(j28CrM%#5Vr(Xaw5-L}dm<(1-U z73Zr47A{4sH>77ts%g}l>gWkjt9X3c+>pGPK}P@HppaM;&AIlkF$Do0DG7D%1>N6SnfJ6Z`=s`v93ow{mB;}&q%EwdEYd+BDUc~36_hogJ!Hox%Td1v z3mGcm*)*6K{8s;%7*t!Xv#ThYJUjMM#)jN_nH;%?s!-sB_hq{x(WZR4(MKm=O?;Ovy0Vb)3UgrtSkb{iVUj`}l zv4dX&=a!bu8aUe-*|9A<9?9SnfjuK~5=bsPV~xlMgog!n55k^LPqdJ^cw?q|@WU3l zgn41Dqrf#thOGaKME)+YhlZ)|eW3DK^*6bVMr_D68u)vKX@Id;8KM<@2#m&zrK|*;oul zC{aU4fcvQJRfOpcZk}ENakO-{-coTo=~BN|4>$X2=QMR7*R9hrWfhNpKn^F;wd|2Z z00=vF^NMG)dc>pXy<-{oVW-E+g4x=ye?24-~!cRC?QODPiG_fL|gOGMO~GDM>%h?>8H8Y;8(Za&jOz`=B@SK*TL!6e~agH#ubm8emddRw$-XI z^da7>Wf$>;zEE4jQ)CzCq~{2y=ht*Cb1nLum50{HT5+Pqd!v~*M7l;x=LiGc7=O-# zlL%hKiEmAo04n;Vz`SI>sl-Z{R!x5t?48sG=zyz9D)H=L0MGeD*B z$Fl~RV#x~5%7OWbn&lAS7SK;vA^p@l`vk~`Nu*(Gg^TyGhNT3j8zr7)xKjJ%CY$4KC1^>}Ij&CqiT%mv!kiHOCEj#w{i|RwBM7lO z#u7q>0#AcH`nX>vpQ*L=t~aq(lsXmIjOVULnVKDyyfA^vm~j04UcF#Spr1!$qIJP?c#~I3ae1IhmIjJqc>iqXD{lfd_y!>=y zBCv%ASpo9H008M9(LeBhiy`K~ir-MC+s7@C?=}T%jBQVY8IK-#?2nVDND_Wei1va0 zY2yLWoBlPqhPnK^Ht`yqGV%7HdW|%2 z%76VDn$Tu;cF0g|*KB2X?~Y8@xNEI(UwORDUH`v3B{rJ9YTBp-6pW-#YCfpK78%EhBVm@6yRl6jKXRjZy`l zMWj7ebGWj*Nn(5l#ycno7R*|N%=E#^$DoQ&9mq^oVA29pMxy|Ol~|IN*?)U`Ppc>@ ziA_<=OXe6$!eI)=2^}8@UvGL~K#pAH8S-_@Iu4=Dj zv6tP!s(pw{al|9w>Qc?4@?>G=_Y3<%u&}el+^7D;(I2UKkd_vZvBza-vLb+!q=_qm zFjHxIGD3+H^Z6zN!6c+j6=jw#kL(sA0&c#UB=PB((#HxSe+VvxPz0I#g+@gbgQF+-^m!t(kVf4)m&9? z%$a|TQEtPgguk!qBAu$Op9T>v;zt{5RsQ+DBO)Iq_vEIpWS`oAl)AM{pzX-l@iY=> zus9cK^DgmwieyBnWw+%uO<+5%xz=vQM84eHN6>bnUpr)ht%s_ht8>Tq@l73Wga=5F zMXkc#T*xR(1;>SFgvgErwQH#4PR{T6W}DP(pJAiVF+hyuvq}lsnNm%;(C9{72oVkN)nWYbxro)!DTwEl=jbxOK5FI2;&fAdr$Fufd;h(=X)bur z)#XvZvx+D_^plvS5TlQDDq;hoh|@~eC{#9fgVvpx2yszmNjfL;K3iGcl>+2M+lFqY z&nP{A?AfIYoGR&+Zm0AW0uKv^%k(){@^Hs@~ZlUs@DDy7{u=uvu1R{ zcyTh9$0cxuO>Pi35oVR&jL+>k68yrXVzppIl*DX)1<45QzffAFiKqsigOj<|a#A*Y z`r#$psWuLbcqi5f>L=3`=1e}(AvjilbTVIsaH&`Q-lh+1N4!zvmS|F0jx~XTpfs|yrOksryoNiB34=ze+l zP_!mXZ|KVaCj+F<`crNuR@@5qqbLf@L+VlWqM!7I7T4CeeB%bCL1)$|5A-ONSUpNt`g1w7Ko z5eJ~df=%Kly<8#)Fj_x6T?6MoMz)f{xR~^VCT-1U7lw$;W7$Yq5HO>jMiWLAH%>AM z3_C#K90~=L^JVR)AvrIU(XwtjwUXHy;4PLtD^d-j^SP}SxYRvE)OT2Yu6HW zmc?!xjqr$?6t(=8zKqyN=!$^Up`CC&lLr|{?!l-1s+Q2w|DfPXU*>ob!l7;hw>+#D zTPtn<9V%B1=8e~mXqxZbeTwlRQfdr>=x5bpJomB>FLgCr)KE@YzLszByVC|ZbjbZg zfwlb3hn7Pw$8xXRJ>c>MVr;syfTiqCX6)8=T_qocZL@A|y_s-@(D#MjfYL#dUR4%^qm#6jg9F+}|5z@6kSwcIkyuaR`X z!gdd6X6F$>M<+3F{;4qTV~8x+U;zq~Ii!a>WPCAGxX2KZ|=gj=(%B67nYN?0bZO+?}b8%cMYGxF}$A=pJmvTdgRE z&RU-YF4ehlCb}3ySDH5vFFYoBgY2#6=Fk^nSS}Kc#uHXh?A7^kzkdkw-XJ;Dc0~F( zes#D)DA-jrc$)l3c8LTy5SD=@P@~UyNLaTi%z^hT54dJT^Gc4xGZH)N$ng24Zm* z0qympx7RZY6ld}9W9#+@1gK1YOdd0so{R|&XkOAudktnQ8F{xGW zlZ>F9PrXK8k=i>FKa=?xD|*cQy30CvqvB?1)=1p=9^A=-I5Ri5%`C1??HFiTJzpDH zLk1ERySza}i2|OQB=3T>_$*lo%f&2u{z@YQ@tc(z48oDUio9%2Z&5Ie%nmb1TRWUX z-NiC7`)IM!S|o%C_3|@xsJszN4qDw%KhQl_73osLt~zyjI*QG0jxg|wXNz0nT5f|n`&TJ~J{e9z z(S+hdgrLytGT9TLG|&^?0hbJIe)`pZ+Vs6Yx-+fHa*+CL0p$$xx;be=hlGNh4dnS9 z%3L&AH{C;I$5Kqo4KzNpSg6*#pXaeW$vyd{b(`<4fMX!F_`HURt|+JHH7_p0!#bic zSaQDMt%xnYS-JNtLs;OU9u(-S_e!pW+EQtceI{l)tNF3+VZF+^(Glo7V;zBqi^(@1 zw8Q~&h&_2yUL3*Ln9V`orSQcm!w{A9tFGFCZttU}1PT+tsvDvZ0k#Lz^Z*}K^aR>% zKGj7oh^^TC8h9O0EZP?6O~{`Z44U1@F&M~Co}u-vu2}`$4iiyKBZdq4(V4LkM(gSu zFREi;SVt*g8ItzlQ>?*2%v~Nu-cRFfJ6EG+ky(&lVlba@s_9|_GY^`}_M{~7i$_ho zkFvHQ=2>>R!O`b?YBrxzb;Hl2PfCMA%G1e=*WErkCxGYBZj^_8EV@~EX ztxL8X1=Z$M*(-=mV^P|hID@KjLn%L6MG@~VI0^47h!YE3# z3d3oOH!&we)xxyAT~fnTfvI(rG|%CgrWTv}o&MZcAf2wNa%BtZfX~~Qa*l>ISVGz~ zF-Lwe#R2E>wo9Xj;^1dT^;l$eNA3?s5O?UaU3N!Wm|}T2tnV*SSL_byAOmF-i&tV| zmqByU{PS;VI}St=1%ppXlL8eTKfHJyb3@q%l@eusoJu=7!HFV7wvl?|7s@2*S9lJo z4XFH%Sg3uqBZr+4dRjE8tQjGItd4KXK90YI-Wdj<%IsQTe8KDX*msKLf(bLd(T(jF z#SD_P`e^|b!)fMs=9(*+PiZC?-l@4)&)`fKI{XRYZXu9}$QtaQDQB=&RSa!upJ?BP zppWN*zGq45M`Jvm(XfXq$#nzohb0Y`;xi}}GVTfEUWUD$;h@;WpN7VG6Wy&j;ixWe zXn4SCtD3*7R~@f|s_rzR=MhO6r-w}Xs}Iua!SDKwg&|N-upzPRDy7R?Zqj;fF;~ML zm{k3MRKL1MYPXgPzq`(Q{>oKcn0W?|mO9xZQl!ImlOCDc3{%ENP4#I`$QH>ud3Cnd zlfe1-TzPrhA5#U=h;DjxDkD`cMD2OKm0wAgR{j`R27G0tbC}nA!#{x9M@z>^t*t zVkx#ruRT-Sjyv7$&d+$DJdmm+En!kn^q7lq&>RclGw9bf7;q@d;vjU+Ii$w;xg;m=ig>i(lE1sH+Fgp|WR>DrZ;c;N+JtT*X%u=z`28n&-c3dTyk3t+CaOQ*{? z*r56ZViT`i8!$)62NYf*OVqL417%kV{4`yxz`$pA(D$h&ZgPj-Fml3%4b|jk=z@f$ z8ery7oroo+&smpMNcHZuh4&HcHHJAB55Zs2ZUI%&ndy=azadX63=OTxvA!(qxWJqn z%J<>Wn@HH5xaKapCsO*UmHTak_GmdZ|hFtdy42jTL`}GdM`jCCn61#&RF(!cd z!=pK7KQa~{XWOAcRy<;IIYDsU#i`8mR|BF{M&)39*>926iw*j0sb~zGT7u@mu`@q6 ztFeXCeW&SC#W=RsaSL*YE!DRVO6}*Gnxz3DR`92Lis$uva}hJ}pST8&{68M)V&qBP z5DXMULrcAywr{ZWMD5d1+3TT~zU=2GF2#rMa!pDm|< z@6i4%)Ez-+6>jS5`J^jM<&W~?2Ya^D0OU*t>APUssVHIP&f09GVtTcX+Ly%>e1V99leduZeF~Js z-hzUjIXe}F?yEf&d$9due{k5)e&m!P)(+L8gOhi0MntW!;DKLsKHYAOys_FWF#p5} z_`rnWM%w=3ua_~~E)4Sj#@RgpS<jPgI?VimH?OdwSsX9nf_a%^rAx6;no|r5d&c=~f6W*QlY3 zC0h)L^KWY`_~dOWbo#_7ug(_cG8J#>2@jb42Mw$AMJC{NzfGkfwhY-{SDv}^lCnx5 z&|%F6c*(sD#@N*zrFdaJ-g>>vji9~lg*~OFWyK8Qy@XqfrAXA{@Ptd;3!HAX!zEdy z$6+`0U42xcA!n7=fF$uH-0DIvsO|HCN21v$xmE2Gt5W(; z-TTR!tnoL;;xGr5Bc+vqVA~@N-g+!&Q2tj>xw5H*O_g|lOz?AVb*cHC!au`yPMc4g zkh6I+w`k*9igArzVnIQ3!W~_Vxw%Vc_HeA(2x@CovP7T3F_?R?Dg)!4qDO4>y%g%( z>x++}FjO^y+eD$8RJ-K80t|vmyN`PGRO5h54b}Rk*2T$Uf=0tC_y{ZTf;U z%zCdKl2lLA2K#X>@%Nb8J5u*YM{>-m_9SF3G2^4#7MF!S&)uK_q6bAjw0^6norm6+eR*uZAk5FXBk(&!s1n?ov&M~HK8kVWF5apLbB5c|Z(c|&D zAQR^LwWV3bxQh^$!-@$$SS|l56Oe5Z0P_7=RUwl*9sjyQ;QxJFx zsxiy=X`;D-&0Y5%G^=v&ZAp>Kk=KO+IB`o50a&_p#C4L8t6qF%2=mk~|0RdbtOj42&$i;yoGZc&2g-UOEb>Iqc!tHL;y!{U5K0T||9j z_=*M3TPBJaj??h(D4Ziit*!&?+l=K{I>-Z9yGhc&!lvj-XJ_>fctv>G*Tk-v5eNlH zDf5pLjY}hdgQwXPSzeF%hoqcwf-{+(b;eD*f+Br`idgeEUP`i9cAANvu^1Q~S&)cf zD8=%5?usJj-5VTOkLy^;K0->Z0##k5{3oG4=s|w!I&Y6|PQ0N1sC2V29q$REfvMF> zul9bVQjx}-5=sZp_?Uncr$P_=1y)Ni{=+zu7n}?ZJcHX@_aTlM^o%Nm3!A@>+9~@g zq=%#P;>p8OF@MokT2Zs;;fQz4GY1jM`U0L%!_?~-X`ja}fh|E!s6FsE9p1T6*qWS6 zyy_aXW|A`*qC=qSJt=4tYW>j*i*1fELMZ34K^y?8G;%66BqjrXK-(&A1S<^MO1fuLmUdbJIBJYR=bd{A zIDQ^s!hvj$uU@eHugqLZ)l|WG-*A{`drujg$4l=fUP8y8ba)uFgeQ#BIBG3WD%U#5 zh?5qYxabOTx~A6y(no-XUUS93qw|=FjD`HWPq`E93fUVy+TrJz>-Z(dBMYaf!1gf6 zH_W5XT0jP-udF4!YN#C-@+7;gkGs^yvqoS|Ns4g+S=1h5MXv?5IF>5AnpS0TmZU#v zy4GvZJz}0)j4uZnOR!*LoVx0}ZkO7~FYPA}Ts5|xEj1m(t@zMQb_IO zo4(uKn^hy~q_C+stxH5(j{4}axD)Vc%k7>*%Dk}p;hA}z>-3 z_Mf#3rq!XC8k`g>;dCUFBF_kq5oNl{I#7JwYiFcjy#}qVysCKR2L^h{Ili&{%=nu> zP~A3CpIdxzSHDvDma=;F%6mUz;q+)xeMg%ke#?4S3vdRav6ks#6}(8dTc<|TI?nk~ zA!uIUPW5@OygL++Ykj^NlO6dD{%SVTo}R#)vcv`s-l#F{-()P_Qz;+hq#@v%wW|+#VZ@zJxcX4^WO_1B00@=IPjac41^>+t; z_GHRr#hM`Pv;bz8%BJ>-WxARg9I>%{B0=f~%A1Cc#yO)pCq~Q-;&HaHao5>cGQx7= zIzHW6+tb-I`ClGx1^(^`mX5Q4hqo{((2cyN1N}l0aHwv*6)e9CI4h+ImiX%+jAnYv7y9_B@U@_>r{_}8^OO}>_Bu}zkN`sujCsb{f!sS*{PHOj8J z3mj0t%pIQ5>ENw!cvPJP*sEmg-8Y?zB6&fQA7$DjhrgaXKtGROJq7yL^wT@Fwzb0| zGc7*t{9Ko~+M_}u$N{TTvbLWB&j3gf8o&%=sS0d2_-__gE!otpB&WC7jnDhbt~V`f zeE2jj&;qFKgwMP4WMrMZZsZ;5n9p&Sj#TWL`CqCD95u9WjPzA9{xk@2ZJ-BGlIYdq zD8T)ZLM#s~3o+KJtdw^g``vy_@o|Lc-G2#;?1@d3$ykoh*#1r~!gd|lrKWz8ddRJo z<{Q0pLVotrgKFaYyosTyAioSo%G*ITLLfZKXNT!LBCjfH0I^9U;(i38yTCAoaqa3wmOC3# zxSKFHp@@{1&$2=QgwT#WA*SPwc-p~K%G_KG_lLj%o(T3QR03Z%`DwuxuJIN)60P1R zpXxbfDYPiivYwU+fa+OPD`WDIwW00Z>mt*TWk@FIsj0n^C*sNMruMd_X_6b*lCcdF z2?Xabc7Zq*u$AjIlPf^qBxXv?TQc7!+!X(F>)HTJ3mX5B5ImMN!c1`nj^P6a&kF>Q20{4^X4HgVCT znNR9w9>!8xu~7#`?s4`B!6EcYz0u{v_Jo$|#Lx~!i9Lu*=Wl~3miCGd?v~6HHT94J zfWaj%>4*;1(O)H;&_CuD-^mtnQ4)7&4y@QeoJ;%GYqzR#{?2FaK!WALaub2{pDz&{lf$gaLNZ{& zMnZ9xf>#=k0=??~m|!=n1yZT!;HLp1?>bt)rTKxWVTeR6Ad!kOuFX&&1h-laKz@MX zpiV7vPQv06Ozt|}Y~>XKbB^`QHCx7>NGr}6PzHkahn!)Jj}Bjblmj#FkY8I9{hj)@gGI@CGA>+sLoyEk2N)4TTTQM7(^U^o2UFN} z%U&qvUDWRBuYE$6V{sogzikeRRVB>jIlKoIF|T(QB2J-(Qx+q;n|>eq8u(Kp_U_=t zRh-j@`lS!SvfL68_n6^pPpY}4i1Husp9VW1Fmv+mY5rc5{kRj3*JihMjWHXFupT`N zD(}TRpL>U<^=?t%EA|D`#$+}Av>APFboSKfap5EOT!@tqY)uNIz$!mD`OPhBRj&JK zkwbB|uq)?xPOlK1>v2q}ZA4Y}>V*|mk<2?% zpKZV1@xNkS{K!aGU^P?DJ!f`bDc)lq30r66#Uum!PLw2J5@^8b_--sWqnm?P8kL9* z_=Ef4ekV=PkbglRR#8V*mIXnvZrJefZYcXZc8r9fvfYo@5?@1rKlU`W!y&^c+|N&N z(lerA{92yaHTpe1X=)<3n`>;MU?azJ#g4UWBAQtx7AxLzTa`;Om+LjV6lmp6mMf$H zcFWop>n^7p%7dJB{tD)%fkvT12al@i7N=TO!5Y^}`OWL4*+*Lup71oy@?0W5S5!=z zB;SLDA#`Jw#Jim+R2%lm=vPtQzUMWCQ9|31QQkAtnmsJt z16{9+@dRRItUx~o;a{+uXZ`n;r9g*Ddx7x*Xe&2Dt{dM;E9p)M^@Ni&se{{9hel0M z+i7(RJB>bRx;3lBE{C{X1h7#)`B>Y@9H}p18*GM<0=OCCLiAeg!-c|uQ31$Q$@Y96It##4qa>mTl(QjwrxxM zG;rujoy3Oz{^VDz*aygkjnwGt@l2bnf@P4doCtK>wiH)CFuKbD`Jt`~DYb?kOTW}@ z&Ddsyv4P32xkWRwUk0QMLA>R&m9>4(h~)k{Hx#dn8BR6^?hb&z@6ubm=ce+J?4eio zb{9#I{BPprUh0uJ8p)Rcn(VrTg`z!*)T2^ImdxuhUs{dLWbu7N&PscG9UT`?J`mkj zU21s`tik;NUE=4ck8Z+_daAee6axD7!FU+xaS+U_5 zIP@-At2KQluFPEkzjkXHU($$(UQ5w@h#0pxaFfMR{yr#-AeoQ-qL$#3txAS|e}$}c z12BKNSD=W_9k1Sn8-(gvooo|s+UXQqu<89nEo4HDNToB%Hk%~*m*C^!_1qjt*~3{v zO>0fVd;%Nt3q`~EK4Dy6s!iR_oy@6{@<{;#J!4GVm2^I9J7r!VRF9_mM`q&wyY@>R zbkHvq`{~+EA6iI?DW`A^RysdG$&;?_NdM)y=_BQ>S=ng=Ww%AxG7|A(Y6K=}H^#C} zy4$!karG047`2w|oUMpvCml6#X5rvK5@f2tC8@8z0+lmkp#g-(Qk$&sls@+4a#?O# zOteaaHBO0$XHvMtp6|UHYOP?)OZo`zj^n>AAt>e=ju5qO^`n`i&Xx8WEY1o2edh+|r~Dp2 zR1g?$_hJ2p`3tY9;1aViShEU|BK<|8*|~lS-bz@Q)e*k=_%jJ{_M8dXw~11X5>fpo zz^kBhtagOD6?rY;d%gSl3QY45S=k)vUZc{ca4|8TG}hp=K%rSrw!Lo` zWO6ogZ=RK_qE>#uxaF~wEet-m{z8JGhZqMlh{R*5*R|P!g(}YKj!Q{)!QO}GK>kIr-gID_m|%=as$r#p@WF0swr z(HvV9m7#N*7*jN^RJQF8P&JMm1xxKGG<^!oaofwAtW{pZ1ZXGcjFXW+_VtTH?4`Ib zl`ii_uu`+Qy<7Dw=!$CB{6Ys%DBWb}5#EyK#+BJA20v`&xg7!2@8sZ5oDHwU$wD1Q z*A9PELb;bITKY>_K~iOPd$?Wh5hDs+6Q}w&TR+e;UPVTLqlejc7 zuct1&n39{6@gO$PC%-PRf-zxr*fOaut6bI!%9m}}I#HC5#o(Mr{d)+P+M%t9Zj4|J zv51zxpJE-w`v>L0IZyrL7W!~L@ZJsPdEnW$onvU_3?8T*g27;|JLsVDeRWa&*~&Z( zxratv>mi*_x-)|t_NvF0K!|wk+mHanM!WPa(7gYG`7C!Oa+gK$3vQbs3AxugcajiH zk$s2K5E&o^UQeHXJkA-8q$*Zc)CQ)nhBRh>X5j+FLL#m7ms7-7F?Hg&^9lD)u{dP3 zN(&nm-%Mx`jDSD>M;*W8HCd4x*?ktXLM(5>d(+9jVmyQS&-pI%@%rs^7vc?~6r)uc zo8kTlKR-OzP~sj|>xl8NYpFVY?ZViocO~ zz-}55!DjG=nMvgS%4mF}oaY}E$!)A}b9F7ruCElHF2lKWAl4Ubr zNRtH7uyZGwMDBl1m_x-oxE69tJ)2geJV?CfHTnHIl%*^dx^i!F-n|Xkg&7 zD^Ez*wuoH!jwHz`PB`2glql}%MdPE`&4utfvqN+9nnf%Virjrh(9Jn2uJ#NvTJ zww=ov)az~-`aFZ5g#DNtyEhO^A>l|eLbsLn>06?D;KMs@p>x=? z<7y>D(gdW+s`=5csj%;10ge1DG7hLiJ^f;<){qxm@>H~D zL+FrT#8^oL-AaC^g~l8f@#;Tn#8T&_XlyL0zpgJEf~hS~D!mHqX^62ej*`v?BC3{F z);O>|Moa+sa+~(530-u)xVN10=(l$Z{W4-mrzg zXcD7~=t>+rRB7SVYSkGp9Kt6Ut4T}_bm>_AD-Yo(uWso%(|4ZaN(sjenB6Gno}L60 zKKx^oQMFlJVTHn%L}DT$7AA;p0*>W*g1SsyDYFtu=_yNJF4uEgYwD$;71gucLw0OA zVk6(;O(jpHVKy{2<%nmJ!xZ5`S0V@fFeE&>T5|*xvct;2=DxwW{1n*O2Z3YuJt<@& zN$a?myR29>1*S;uLXY|f`@@$%zM`WNY{8T&?nFWJtdW_%Fux$UXbD|!-{iVy9cTR@ zh8mPsiBw8L{VK<_>gTVs1n3sge@@b%3wGR&xVmUTVG?o_L!ER+jAVk|W(F9nqMJq@ zj!jmF6I>X{r72I=w1@KdoGFel}9E!_w{F7S~fd%Y_)*P)fcg)&&P2_I9$<&iPfxn#-n_PAZFHoq+r3{w4M zMxo;5u7Up|;VfYne1mSFJYi$iisDVd2ZxqMRq`H(7IM4jbJTWrf73)i>~$cwCXM#x6@V`p%!6B?wv;5sUgoouy!r&Io@UBCh< zKv`R`hn7<&^_96`kiEfPCOrB=2x_Do0W&UbEzWcm{bP(hLJZB6PBMMI+Taka2^Juy z|J_Tzz``vnZ8QQL{;h9#JQrVMwHEdWDIcvG<}R*hb^i59<1M@y@^UKzmw}$A{_gGh z*(nFJz=cvWZ-fF;p5i)}4gs~%d(b7FrSO$EA51YLOybEv!H01tWj2R*^S54<^sijxu=Sd8lzoVS!+>(bwHS9GofqX$>bsho=J_v&~O)|j1Waxx2O6HKyuPHV}oL|ay z@lnhM!wI&QKUQHAoIE?8kF+l7Tq*l!_e7LCQ^XzzTc?>Fj>ZKq=Nsn;V4 zxA)9CCV=vW>>(x-wn5k-yWxyjvE?Eaf9_nWoT|j)@te;QwhJI3{P^WU(K6f8W|Hjq zr(6u1n3i}qe>)^D6JdX#iCRfO^)S_QHn^_rK{2)j+#mf(o@U;l$f*mu$lm$6pC1F2 z;^qvGH`bx2_RR?NmrWnmhdogV{kVEzTZr; zyv4WQIUFqF(2(ASBOwhOVBw4(*f{lO*O(aNQ3{R+4!pZk7$R~!Q~ zwfa06<0of#b@9A(lNu%NxBbu3EnMsrACsUzuk<++!b3$%jbYlYFAjg2;aK0_o{?P; z#>LKEM>A042mf?T06<9-coImQj$iUux%@2GfY8Ji0HNsiW1vS#xUQQ{;T2bFCd-Oc z(ds_t(3&SElC5L57L`NC=>Nlq9lr_PnUVxe=wPN0EwD@=l*_b1N)_z-D4EHAW3I=O zdp|hFxB9S8D7mO|oKqDDW?JU09&lovUIt#A3Bui?iHKA!RqV(0N+4wOfEke+VDgm+ zaK-D-ExnD$SPhBK$S!M@VgH@mZ|jBqYkD-n3|inV2EN%kBTuyx+Kx8cN5?Dr-h@#e zF6=j)%5T?>G*z0M!W^w=Oq+c$KDCy?)L|f{QzS)aHWw9rhd)>LGvO^wpWc-^omh?G z#^uZ7*<+xpo^em~?yX_37cAAB=sYnrt!WPyfsQkCPj!9|g;*5}!b^^_71}b`GnQs) zI|azo<6=Fkxk+kOf4erm?+`OB6<$9J&q|LW*-^oTFj$m6U13mZY=n`B+2{ zFE2$>*xVF)LKZ5;L>zMn5Vfw5EDhRO5f{9!MApa>i4et92-Jn%lnq#bP(99Wokc=k zp3u=u`3?$gqeCyN?6zDKR&es0)p@TA|PP+o8N^045d;=oC;-i~r@e6eg( zf0c7>C~=n4Q4VdqMFJ9-S~b#EKYw4!!>*8b<5FYon>Rw01hDawu?(A^Bw3e~t$bOo z;JuvzVe#Y1k4RBwZ;sa%tLl#M7U7voz6Orxr=w()G3XdJgc2EL{vfa`n7~TCXVVuvp@HSOnr5f^mwC9 zz>q?jq%hdP?tvU5zB-757eC(x;datp*`48TLZN=t^#=YpU*BkI7K}RVGGjW6E&bc? z24Loka?n>q49Q4Qr?a)z*W+v}+WU>UtaXvKIk!-UkUyBGi>gWv;Uteepy81?3_tbJ zuIkJu$V^d8$Pmc2!XNuDP%cESG$5ndwre}T42fEE7Xlre;p<%j_;=PO`C2^4< zp4R~1YkE{#L7pz%baAj32NbgK>E#a*ctvrYqUMG`&CT=Qh`~LMr9O4s;e<#4kc}Tb zEg7D_$P-FWz>7@BpAcw%h3#T_EYe04-NR}WJF&9Wh-AtpMV1xt4OtIAQJyQ^0~N*` z;N)>E2}}*_vm@qN*ZkcmI8G4@BLK=TT%^tuGv}#k=u^RXdRWb6;!j&BJQPmF#z_U8 zyF`b$@O;_h2!R2E=sWLOqJ`;skkirIEZE!iaLNP-dy=lDD}tn~D&Z7R9}09~!53x(~ z{Ypu?#Z#Da*`fQLwS@y_Jur;oIM$mDI6W>p6jXtTMmoG$P5GC$87NlSYC;#wZMLnD zdI-~MS_N3`XLug=AypeA&(n|^Si~!iYjhnD?SW$(ra_tHz+rs?4z~rM$IdVinrmG7 zZLiE+gUu~Tp}Cb;&JrA!QtT@$(5eJ4w$_dVM#0{kt5zjq*{F|Q|4_!D)u{R?ahg8e zsf(L1$BTZ^dW^qh9C-GZ0vCb(Vq?>fC4N4H*vRE|j+mts> zzLL{G1;lS2@Og>BF8AN@Qm&+hm~|Og*_1mNR?B+>G|STK{!JvSb`YGDh$}QM%e2)$ARKayk>B%90Kn)ZF?zjiyV!1O8!wwt3aq{YCgAL zEAwejezhO!(Xxm zl(?!r0YUFi^`2%PwmYOnGKkP2@YS041kwgKOEm-0Vsl!a4n%ure!E^cX!)7G5q*wx z5q`C>YBnK|UH5b(@#3LSVSzknz(u~#IBu6~KE)3m~=mZ?*WnA1UEi``Ux>pWhq z{&sF$=zKkg^e0YSj#1-!Lqx9i^Tn28aahxn+_?x1Z}T^a=~EjZHS1=%ib322TN37!1_40^hsXIPrc+4g6 z8JJ9@U%UETakX->^(V661I|wU5gh)W(GE!+Ay?CwrBbM?AMi)? zgnTS^E6zrZk6$63+R$j^M?pj3qpviPo#T#o&*RcLK=22m1MwJIj%|ly3d~5VFrkvq zoy4EfqqHPuJ=4j7DZb zSJ=9vmxgV+MhE3E_v>Sa{MZyUiPF){vQ&bA#U@1qvxgwcf}KwBc=JJ_xH!xe8SZmbQgJq7bDoSejT+=>p+YP-D2DZWRO618e}F~T99tXFptd}FmMw}5 zpRH#X=G@qq)LUYpUgWK9c1j~Im399x+W$#y3XteyKv^1ZYI>9b`T~m`zH>cG?_5|> zh5q-}iEWv4UH)h4M?15B;hPqnx=|ffH=r=S_>kMH6Ap9Vdn)5EmMo7hdhY#f35^Zx z!h~>OG_acs*he>~Y? zWqS5kg@;t3A7Wc&mjW02+!X!;YQz~LXF^Gb_3?NaD>h9hHt3bB!zcOgqlqwN!XKM+ z3>4L;b)1pc0c{`>XGlt=RET}m+p`&hTPvh`o5PJx{4W*^)IGVr_B2@%NP1E6;aY`u z>7KUs?pEsKx-FvFFeL{N%(5sJH5nbboN3#CX6ge!=P z#qhHO*%szF+;~<_uiw~K>IzL8;SNWn3s;Dt+ECg0{fsS*>eIn2N9-PE!>a|ntVq>tdMitY7 zqq*>V0?qDquRhE2$eB!%F5*l=f4joU74sI!{l!x(j}rsxFTDZuOY>J)5K!dxp03s+ zTshcO&k^ON%r_lO>_5-Czhd2!XK6n06br$T%DpY~;)YOrpi|@O8DF$V?!($2%C_(c zfzV8lvzwJtk5uTy%GmhuQb&dYF?kEoOh4<0`*)tWoGgHG;NS>%d7{a;eJeF%W#zC! z(5ZY4*f$agxZk5HSd!n{6HWdmAr19L%m_52(LKC?_Wj75Mdwdi-M7dNs9b1(#nMDyw0)I5*R%t$FsZ0 zj$`YQecj49y5h-H!MsmC+wO(Bj#T$@C6fA3T6pipfx%E<3Ziu&Q!B8-|Iy zFRRxdM}KS`n%(BthSfc)p1eNE!8?+)%a59gZ%R++YJwIKAcY!(yy>&HW~Olvebgm3 z5*}M2hg0Z!1Kw@6c7d*=fCOgkO>c6L=#Ify8eD!Cy_vUiWI-H!Zh1$h-LtFh<*aZ>d{{u?iIiRQ5xY z9(+n22zY1v(-7Qb!4=&0YW_;MdR#1M2E%6{@*ZVssafDPt zb=%U)O7ZCVv2YF_AYqASMdPPDe=;yk4^t0LswBgo+v0L@n9|!^%NXpTdYcSqAe7*2 zO&y%mi=C~56nr%va^YS%XX&wP<05!wj`bbCUcC)^`J{JCQ0x1-k#SNPLRqFLqFk#b z4?d-DEI(Md7e@fn-rNIl)gp()2k=4$RO4%=t#&7{_leDH;&7%I58}vp-SlD(p3!TJ zZ)AVPCADg{b&1?05+En9c-))>Jvbx&Z0R`n-|s#U4_5KqQX#&#?4;DHIDb5L5$}yY z(6ZX=<;?jXVe$2kj`_|vOnc0s?C*h)58R8Yd!s3YTPk`2*7ObvZ)ihX=-G`9{i?e{@nEy_ev>KafW{ztxyB|ruq<0pQZwF;ytMJs&vv-NgXC38BZf6deH0o zRH%e$$H-b3RhBtuK$!@+BKAuLtDpQ{O=6luqK$HqiKV6A-hH0KJ!|e^eCTrSmk`Yk z?q(?q3nV`yZ(kEJb+%GdSRF?NFAp?;!v??*ED-! zJoI`u_sM#E4Mg8f2_zSQp=(0jP9<4X64>=x)@yo1@k%bb(r;iWV(fZFvrwF@#|AY+ zHgnBzUORxoD)7dtzarfG^b&d)!a*N@IG~!agutSk``PcSl}aoH&>m@&IrK${CSLO? zAK`M?GE>S}UR2~pAXj;{gIDno8U^}0Lymb4?a}IyQJriah`M{8kToTI>axhO4ROv> zOp8=(_N3iM!0W2~S?Xf6eU4XN0K5$r6FlV}dRD0izC7o?Mu0?BY#!H>`E<|#$vP_6 z%rE`z9_Kqu+qRm})+6%JpVm8K5Ce~4b)4-@?Xy9#y+m9%Y>`uQ)auQ;ijIt0AAaSD z&dUKDr1dZ_d-pJC3?-^%Fac~Nk;0r)ZHhYVGUa#~AX*08_wR4s>>Khah8=aWz>~r= zrFx4$YOaRi76%-Ku27P5dy8Oh)3x1SqbZx`Baz>r8iTgylwH_p$))p5BRN{ z46JLC6%twL1?!n>OBARQ>us(GtW;k(_HkIXbkT%`32$^zg9W+oiC$A~V41`T5xklY zqKFhn)`1$1BNm$!TWuw`zkeuSWpkUSn75lLB%kv(VdR! zC&qn$@#DDmhOo?kh-%l%ob@TXr{l^A&-mz^VIf#U-*`kHKhzNFhvu0+X0kK}om`Ee ztj=(*_e0xNu}FUpsAM3!o1>l*HSTR%Q4D9-e~G9wmU#fFlF+eGygc><(v??a%nTkb zvI(YiNXRH__bwHg)amL87dUuZl8$+4>`LepbSf`-doIP(lwB~E${_8!v8Ki+5$XLY zH^MH*22Tc^>w0eGV?FtD=grlC9B5AT!oXe8hN!UsBS!(2SN50s*rc%7eU6{hI74~Z z=W0FCNwag~ewD^6)K_P$Va?vG_!*r4iI;o@SphLN#@z>v8S0k`mV=@93Q}1hLM0zI zTImLa{p?@sz@xufto68d!Bd=0I2Q=0L*PEe0EiIO^G5B%6L1_do;aMSud( z{+=QuWOhgX#%ViUtAq0pcgfK4KqGZNRi(>v08U+5#@bpOz5$k>RlC_3(#lA^gC1G2 z!WHC~1nu>YM;;P&BVr9KA`a<~AN0G+?qP7teX2E9h?Ov-G!xu}8y+#0&mw>Rq=d&! zSyu42GkUBP#7@YJW2`i|D4*wllL9H0NRkMN;l(%d^mSBaXC}oQy}^ud(%3Eg1T*1_ zVX_rEx}w2BqHLL-fD&u@dBX5MF947g!eSHE?tmi+;1u!!T5M0_tL2&F+KMZKtscFh zRM@JA))On&ig{Zn%KVSd!JchT5nKTxOX071bB3H_j7-J&H&IH80MY}S%)7$YQQTa6 z$9qbpzY*f2A3bl@+@FYwOIB(yhBJf{N1~BE&Iy+yc09usF0CeNA*^Oj%~2r_6!?S-UUPY{8o#4F=9wh30+**8}Kv+}cEZ^^%&QTrjg8!80Wna8r_Qc7H)nA#*lG8s| z71}n3 zxO|ajoQi}I$aB~yryA|`4(GB~jic}O(j3)8c$WjF-%J4EgVpHwl6GEe&csx zUvYf91Vb5A|F(2KSP8ZdH&L4!+L!-#sZlb|IH~u$Z4c|ur^nlkxgNB52RNG|Wgkz& zSy^v#A4u1cL4*b(ofy@;F@FpeMrIXF2M%iCp=&qpr@8GCiJkKqSbOhNejI59i5-D? z15a!p?Q+M->3n(E!tbGG4>#^Rhrnz@m-Q)Rtd2-rSu3rPX*iFb1z7`*9)M8Br2|s? zTyT|YW;D|{jIorOaRqdN2c*}m$vl4BldIqJk zF0D&HMZ9drE~dAND9bvQ8CIvdj%)gLovF?1=7TynETrezL5#{=(G z7WW3`Okmz9s4e;K9W*B|1IbK5`?6#h_Hp zTxl;yWJ)P_4-XR>wCF_X_13=?NDA$y)A>o9m&WZ)x>s)i@y3v-~Ho{=anjf9KWNzFYstXBQT>_aM@tXZ}XJ=~=$zYbFl%Z(f~=^?%Q+ zJD56I+W!D}nL616?CneeF7EaK7Yip-Q-GPhtJAl+?q&*bw)6lvo4T3W0Zc8;EnEP0 zmfr{d7ilg5kOIg6B{k`Sn`1ij5QTIEuo@sY`xi0-#k`pJhvp+68I|cet zXi{i?08t)MWx?Fg$P9vYssD!nvRW~u`>ol z@`#WtpL&GB03?lC>CXdv#x7o(+L|g4MBAN2EASy8Mk7en zHw*&B*whRRB8rCAQhY!Tl#KG%3J5wMe{OsXBLBq7#>5gNzJ(QdoeQ)A$m~%bDC-Lj zh~m+$H1(Sam;JH_aiTSdLMS-%wF9d7IY^A&hi37p&|3BLXIBC}k|4FQ{rS!rhzrQrS{6vo1rUw6 z+sqf^-VaL%q}E?d;1Ql}K$o(CrC;={jV;Z$?_cyEz1YeO;$MoSKg>T7Gh)6RwYZ~o zyny7;>GeL1wx`C92$w%ESAagvD?XP_1eU&YuIWd0_j`j{liKl)gEch3^Yv==&esQF-I5{@n1D!C= zf5`x1zFt4APd|F;jEuYy0o-O7@<8~oEIa{`Nh#=k!()ecy*rt0++4tyx}V)3UsH#@ z`~I}BQ1?KYeKqtOSvO!hC2ZlTZ&Bzo>VnF_Fj>EbCOPgIT>2qvC<4}#Sx?ucR6izU zBb!OL#I_PycyLaPNrKqV=R)8-Z=0Ut zra6}NGmfTEOGmj*>gr_Nq}b!s5146PKinnq)jy^Bi-UId^tR>c`{Z;?r}MLPZby9$ z({(SLKt?LIon+7^EWWOTnLw7l^$HbUI{*Qbt&STO*h(hfPDn2h49QIR@!(Mr5jPl; zQ_P3MRZb{E$q{^UwTfK4=y&+}?10@q_TnRp6A_z{rWp27#6~c$&L)P6dyhXJ)i{Yg zJ`&a*Lw|ghT0)(zgZ8ohtHz$kac+c{@*@If2w3~pQJv~7-mMwM`c*R`DMS{eTCrS6 zk09p`AB@MO(XRww92%^|d}G}UDpjuS*#@KQ;je?q;4FyD4p9G9-(*wNj>a;DGWTBq zFr23H9wQpctN`1eCh4Sd$Lg6dIEM?XlN{IMk)vSDh$gnB)Fx6FFe%+hd=?p`tJHHT zOwx<-*)Vb~sU`=o*H=&XTM$;wS$4w~*0nYBuygk*X^}02C6DWDMhh2i#4rr9IT*x) z_qFN2>Ysn770K0cERSXWK%zOKD0uj>zyV(`$e4MDzoRL4VmqU6%0g!&_9E>w;1oql zJU{n`oA#NsdGxPp_Rd+`Fz0io$|gSwbVv!}bZ5lDuKcgQm=z^$5Zgs-ee)kEZb*>y1g%R@$Y;fK9b*6tzMKBo(6qp-*gLZ`ntb{F! zC&Zg@WRsE4#T7g{D?=!83Tzm&cLpCE@vN+~M!zgPxmQ$o6bmgNa;T-H4E4|BK+bFk z7ba$fYNQ#JDN3rRAwv+kF^Deea=2fKv$NSu!nnPa>Ed&nj+eHzq!U*q>)^@&9VEL# z-F@Gzq#m9cpGBn?K~8bIgB{QPh?0T76s6IFZX3&U)L95*THIkNv1b&WmS(xmM%S9c zk51yhXn2s23thg}_B zYV!x>H>Xonj7U@!QQNNL1C((t8lx>(=*m|bRT{+=U;_<*Kqhid7Fx>iqRZ)+aOYsE z^pK!kdBxokU=H5|H8+2(b>S8wkP2TdnL$yePcsO-l?A#+1b9T$gTTxn0n>xkIke7zbV+FBHAoW#^ZJW7M-z%WMeRsC6$KFL3~!$B>3 zOBpBG2nL8cGgg_u&yHP*Ok3I$h55?P4XkL2o6r_rBq2;Zr1>O`3pCtl*%q)7eb3XB#)-4%edk*w0`-c&twRb={x7@e`{n6WFl3omn&^Aj}iV!>ydr zq3OSr!%5aElN6`+{;25mQJqQpE1X+^Ip~ntM?!zzsj*}kprJ)%2?_r&@^ntLZ(8Pd zTAP6y-I&{;rEk?G*}+9%nR`5My1xR=X+mD6eT|mvs22(U8wp^Mq zd&nM_956Io>$;oIXTTFC4@5V2iBidf49@o?^<6)nG|T7VVqlh4Jz)IvshU8Zb?DTQ z`;7kzcBb9#m19Inm@58IZT>Zx4Rscbm5N55o)%Ye0PSd0See18f&3J6eTz;xYn@M8 z(FzNFTK3uPgx-~f@6vBxXwI#CPyDmB&9r!Ul%LPy9zS@5_6uSo;JI7K=l9+&(6lqK zCR|41>EY!nF?7ec#cN}UTQrKP2;t(5nO=N~c$LsuHHh3u=2PNT3zmJGd|U)>Dti_t z3PT6Dlv&p?#^9th3F&|#iUIuZkgCT+H#|l74q*SfL}wyCBlDK0L?O;m)qy(#ZWZMF zBNfFGzew}>#|<%b>sK~?fw))DcfAiAlix)n!Wq*=Wc^02V};Xv9dA8MUvXS4JPi7= z%BJ8;yCn?${dCTN47xtyK3RydyN7N6R%ZWF8sLhel7X zrsAFlc-JgqXFmlZM%72Jmo14giY!=+Qlte2^>~)Ryh@)z)Hoaujz?T~_iGREo7!U` z5R{9g`-W7`6E~)dDu8*5-Gvjvr! zJ*7M3SDgNhIRO9K0{YG0=;Wm|3;;*?ib>D6q8&fJ9^;21#}SoJgei#2-r6s^%>h4? zaq-2B!nd+*ok-Z~8%78D5WP1%U^2$GCA+i_VaiHjJC9`<66WkT)5z9$LkFQSxxyZiR?KmPbq!Es9`(Y z-0Z&rH9*S01{67@!jl)luq{4`F)Z!)Qhh<0s{YZ=k=I~9qg}{*8gw^ky$y*4<_GGp zNwtVEg{<`*O*1WkA-|1ps4hF8e%=TVrE(LC@UE)r4J@nqXz5wm%%=(i# z5!SMQ@=@1=)oy|V8aPoPbep+{dkqEdi7mh4+`|cKrZm(Gtc7zE2c5>ljP1ZwXS+)~qoCqz8 zi8Q_PWqbCWe{HHkXPAXIoMA$s*@N%S6`rV>C4ZxJ-Gh)hg3l1a{OSkHm+$KUOW2U+JEAD*Co?E5>o;C{`T(4=8cnn#hvMm?WCH4Jxc3YgQ*n?9Tl^6L3Z zMi11_|5s-J8*544o5U4AMM6# zKqVY)m%_Xxs<>oKZ9e!U`6;I+N~`wOuL(BLpf|t0p*nyB zP!BYHA4HRKoPMkDJ(fx*<&ePV#f60Kr9^4thiDBH(8qojVHzKBM}6N^lzD#b$l75v zsp)OH^FbU@vdj*;Kug7MFqd~2*MN{`BlgkdO72m+lI{L-kQ5125ZF9Qq@ap%yO~a? z|LRxUN0)wR|Aj=8GO0O-LP01kWSG4DE?apclnW)9TcMhRG- zB*O0`C%a4@Nib(8s$Bx1G9Hp60)^DKADO@25eaEYu&j+)m7Y2{p*c9axq*iXoHY6`z+F)mLHOSNw{)kKHwAJ z#P+fx_?M=r(eWZ?IV0+Tk5?Q%JrFa{t%te$AH8KSD2c5~G!#K@FGq(Ye*~{kfbfAjYK6iB+?W5Y!6j+2V zT#YXEqWXecaS$~9K?6U5j=j~g&|efbEPtKGFWdBON)WMJ4&%ywAg3=du2X^8R3RdPx58GgG6g|_e< z&+UNT*X8}GEqgb^z~3H0&W0?R)H^v#l!OfHw(lADynk_xv?886+{tJMRlA3}ezr_@r7<}%8iM8yJlSUFhInhg#o_Zag41w`Qr3P|SDuOD z^Sz8wx;NoJK9IRTKr~Odl#d~UfdDlMyMz-^G|*Ao(WzWc)${wyXE{sGVJjha_tqms zKz)qZo8B<>rK4Sxo5)JOSutLS1?B)&k-BfoC{bKK* zc42vX4|m*U^Zy41D8H~?}huN6r5WryCbAjab zAW3@bX!G25^5jJARB@a!2~K~51-386;kmW+U4$R9ZJ5gVSB2RG?(Z^i`5n*InEZLG zXB9!puaXS@y`&8&5Z;}kZ^#qBo6HU*Pokx_h{alvtYPp1C|`Qy`-sLv8zVje&JwFo?J*lTN!sg20dY3*6NZT z{?MbZP`}=v>EAU$5WzL6mL%U8G9j-X^!x_ndzA)#F15#- zps_z)Sa?>{Gh2>}1;psEq;+;hALx5AlIu?TZ@sc6E3CK|Bq1^cOgDurK%-UtMmodzFxupGCtxO$btN(zL{~Q`XI_f=OqF|IaeWoyB zQG6J7h?M?ub(d%uKQV3!)}Yj^7NAsFb@M22F6>DIc^wL|D{AhiWog;oaZ4~A%)ghw zYq& zD`N%zBZh*STMwqamGQV6x1(w0I6N|AJpa&RVAM|e5NvgzM+-S*I<&b&JFsEwGCOE% z>36>hsTF|@^RM1B)~7sll{HJg19A&;XdbO(yx_dMD6NRCGY0(TZ@**c*2{b%_mN&g z&FTs$j;zSTEg&Ej>Z&82!N_p#)k@FoXj=6yXDCg^F<%Qas7Yt5#%eH3ntbA93Z(sr zrX1a4<>~h>USw#YVgOArjOsBW48eRwGM>>2v9JhVQapbv7d6-ePop+dmXUh)1xIVd zq3k3DIP+PlT^q6+eArIl-$!msgV+7v#GbYBb!lSn6ZYaoY+f)7H)%*0hQ@r}u>w@b zr1yVzt0!%_2+wzS^qCqx=%Cjs<^yq^*O99ht`QP`YCJ<|Xw$PvND|nys|!0ZZytM$ zx@dc0CkwgD^utxR&(xEWZJwwLl>NyP!p6lFNhFRe3;U47hwHd?wP%(bx*wF@w7oylRUFz7>8y*f0`>5g|{abVa}5_%gE*OkH+GM9}+Mqt?@WV z^C_RD^vxnA>bH~RiU~1cEnqh`cz?I8(>-NXYl6iLProh9z1g8ng|I*okfCAw;t{w{ zDcj)W!;on@(LPx)x^tF=}!z7S1CIV$QA{75i7msRx+lT%(I%Lv+QS2wNv-w$r0;qgNLJ$ zg<0Rjgn%fbWwBJV{|>)<+-#quZT(d+aMYG0RQt@2xqBm?NxPb}SNS7L$Qj$IW)BsL zlucrl=$JJu)sehth=3_z7<#K;Na$7(Xt=s5+RWqZg{X0Kohcy~ECs-lu8-v_mqN`& zrZ>v(Ej6TjG$pV#Jlh=1^OUL?4#fv1-2Ts^U=jG?Xb$a_c=Za?D)PGMq!t zfTT6&O$TgKu$Sh zChZ@WXc8;!&E{jbj+?iJIlte>BahPIQ>0@}KQI;YebjI(*7H?Yi0W6#^r!bFSZLP4 z)-XQ517BL z>21{3;%b$3O*)JtYRFj~f*wl$7P|9q4n9#i!HO~PAA|WZ>LZ=8nQqs+L&$1n3MMgv zylskBnT&P7mpY>Nc-Gy&=mP=|!il~pkN)IU=H3=OWf$R2n9zvs@`I90FEyCpu%rkM zM?U$@BX-aI&Kr1pgO2d@u(1@+KCg5$7wU216K9oz)lK!yU#M_#z|T=60WFcoF}7pD zo7~uHc(iI@Ay4D1DcDCeSIbJ%e$7mb&X<&fr?s7{Eg=pyr1hwB?Iy=z?QiHJ|9j{lZP>B7Tpw9V~|9meKjfdRcCt*-XUf_@MsgJ@LwPV0DTP}kpRobT=lIH~!R^*+% z+)4V6{)X{DiTz|Y_&rJ_-qx<$ui4DIzW7BQ`n=!PTqq;MKsw))Xk51`Im+04@UVM?7% zOlSEUePvHpe+(WmXLO7iQlW(FMObcC3{K%p-HP(}cEMiV!V5T#>@=zzVVuv1`uwqC zV`DcZo+KRC^m#&)MS}ScwYyw#lR|k3skt%%8Ox1V*|G|;n^#&{*GnD|gJdc}ivgcW z&*S>x6$*jQEOdKCGf7OOi@W7-zINg}3^o)`rhdH1vVn@f*_mSeCO@ATh&{LP$cNw(F0F7IydWZF7-c%&Os}JEivH z-Zbba-)f-eACb2~t3vxAVE4}+i^Uhn&oh?%fS+azF><(#`w?tE{2##)I?rD1l>lo7N^f7Q&^jVjf&% z9z(kxC}^S8^1l|Wo*+xUKw;*yY-nPokArRQ(^_}4KEBBIig*XL<3 zsPd>NjitbMxqc|IR)i((K-q%rQtRMwv-Fh)HarN{|_)4-5qI9!LfL4wqjugD;H z?9=W7s)}|xt(W*;pP-E<0DWfR^w{EalUDZPm3Z~krF+PcB?dR{L^d+A5T{x%ecOWE zFA3p0tBZLRcHD3L8&$B)*fTY#6Ns-=@db)?P!sR#W2-n#)KT!an9gYi$rHG=A|t`9 zDxBmvkkF^ac|WrQ_$pGkzBcqnbaSFp&DZ>t#PIJ%QQTW^ zi{VUuvk+lLQqtt_87>h}(km?+DsBd-6&1QdYc9_b2$2>^gN%<^@o6TIPMA&OpYx@I zqq~0+^+2FNg|hm^Kxo#e)r?;NyHQKqsa%K;l)Rzqo3il%H7WN^74U-LU+_bb{_*>4E?>dsMWEmfk^L_hU60i2D1siDxe6g5nT3 zOZK8h^BJBY$U7?UH({H5V_Ce~6a9=-n%L;E(icnaSEvP3{H{z#g4hT=7WKobiABvk zBs775#JyDI0#=aXW{o+}1&7I-AHd7+BYUL_M`<`8^HNlnuj}oNa70*b-<^~&U68%7 z&i0I+93j_b0i~XY$J6Fb&`W}&3yZ+op%h=!AU?C2bpD}Q$c#CEwJ43#9~>FJNV8Uh z(SCou%!5Su)+FV%ntGIB6_qwFJR`$?hNU090RCn=E=oV}`UFrKYx;r_ABN&e^~`iy!;6O@`<(x_Uh28GF61`*BwQz7HS9$1Q}zCYP)K&ym317t5@dhwUG577a8 z*BhKB;VnKT(sZPuOX&dWCWypiYGp1je@)w@xvP0c3zzdg%QL^riS#HTYv$HTD=+Zo zc)_%dY3G~GcCFcj2Y4a%)cx#%qxk*;`&-QSaUl5)V49{=!o%{W0e6hwA(O!+A3f^} zg^1$Esrg+J$B}divLcBbU;x_ZkR#ZCV4+YeHyPi%pv^fbuFNb8Vob|EFF3RV*7a?v z{ipSb3+J3dsw+$NwztqF(uXQ4rDOr@C4twv8R@)YZj+8ab#MJ{kZ=)8%s=(5G#swJ z=4DzkK7nq!b3em7x857qlPe`@#CZWmU#}6Kyr$A$(0vIR#s4ZBfx|O@0c!W*DxOTM zJfo+;{ckrXUCL{M&hX!P!Ci}(+m|j2sV?@VU&7+EuBb4^JlVP2HTRgBmyLJ8FF`8pX#yTT?WA za{3c@rS-F-oLV69BuUStK{|1=Dm#8aLe+_{b3FwZN#@#WpH;yQOO?_(PDwO@2_hy{ z{;I%?oC+pOaaBBJDBsgN1K)Y}7S@#E5?WgVD@);-z}V7r#c6$|`z!F42}VlPh3sYq zoHEmUAbS}>?i-B}@WM zBRhFs)?Yowol`n$cF$<-X+}w9U@-ljT^yvTS?SUrvJ&ZGjSJDy;ErG#6e<_hl1e%e zEWQ&p8-F^Ij)f*NP15#?6DpC|tdNoVTt>;UO}wK$FT|u!%m8)s%R6p@7Y8l0eU+$i z85ftYvg+kWHPPybn)R8v-`nvVCc0gmfAKZ2tk07k@ZAWLbpyySQD@zQeK zs`6fn!}cOwIlXhPaD(G|%9VW>q3`QFf4{8yfx-%;CA1M!^5p|Vu_nQ&58&9f$0K7( zL82?IbF*BtLlgfVeP`w^J>@odB5Fltct)zpk=?PVb z5TxCNuv!{rO-y6xPRF8ol%bnMIEa&~8E}tYf+rNHn7e6ESwCt(Sa)b^@Va)s54Cb; z&<;?JaO+kZCiz|PW`OUR6&&@Sa=ILeY$bWR>P+T(q<`1%&YAji!1Cs0NnQ0go@*)}G)b$HjpQk{v6!Y>n9X(9WRNY)BjRZ9Hn0dUXc~q1MWectI zibm9Qcxy>F?$P3a5Y;WVzP7N9$1ihBbs0z+glT4qJnPNiKcjzzhYlHlMBwbb7`-lD z<72+)CFZ+_qRJxS&L560fqX%5d>unF$gIyCp(iD;2*KRD)PqP53af~7-yEN8%Of;`vWMIr@_{?1 zD3&XKJvWeEhkL=#5LujjsueS5J+tSmPNujIi+_?dM#dj=7ZGNq23EH)ejL~Y(YNc+ z3;=%4YnG9ZtPy9Z_NwP^Es97Ri3WBbkNGIx7Y>HKSGW3_DY^2O9YIv62q?^YL)%Us zsHVT(!^h*0}i={3v2(-f5NHhJ-7qx^?UHcj#{T4U*CL_pcY0&6-7;|bCV z-)7BLsurvK^{9r!s;=EG;nU2a5S~+&DQ&Mwi;}3^>K!p2_wOm;6*CG$Hj!knDM2Lo z>VMsd%Xjtb(HvP5qIB4brBJ0{*gik`xJp9@h_~L_5jhWKtL@os!d^Ni>)moIS0$D( z4E2bikI<2U(5P6YZhzYTF%y6yZVDx~*jg3HTcOZ@J@DI}vChIKwTCQ?i+r0-zagO@ zXGDFykA|&lJg{Y92+WKQW5Pwvmaj7lH2AtlrZ!Lu&|6Fiy6`)Z36smVVx??{GdTWT zcHYaHdIe<*?~MO@X+pW68+;GlH#dIX7VAJDTxqRr3{#l;)|5irtz^PS_ftaIH&6$6 zg1+P9SW2*l7#7mM@zKo31HwKPr#it8EZHQ6C=!W>ev8zzt5eA1 zCp|^C+HXHwceT99CThqgA_dx}hFUGj(py3Pcum7NF=d_J{{wcjFjko~Wh1P>&w-D` zeYo`i2Lo;KHj*$yk3V6+WYVRiTml8dU!s) zRY4kmV_@C>;}|}`PGXangdb235^T;vVsqilo%VwSRjdP5sZ$P8y#=;l7*naOL8ON^ zPc`ZEOWK%os_QEJmw~0XpK-=u)*n0pY607;K8fiGm^yL=dt|)tBez_!D8gDIfEcg`HlZOk+9W#`Mq4JJ^p%coE zaDeDNggyT~Eg zNNS1;_&Qr&(k`#wKgFB7T)~!8P&aJzmQ|1=)w~&+5xXRyP!KMEnS?$jP9^JXn6N&j zR8BbV3KR++UAS!S*?Aw|2SFGeSX-#etrky7YZ}gu2}6q>#(6~ z0}dP6Z{R*6P5@Khuu{}wse(n&?dTDm8})_=7q&5-shicM%9t)3i`pd|W!|xIiY(QD zLqg_s>r+)05g1yHAspDl`+}cWgZtzUYTtOU{}VkPuSk zjsfluS>&`gUrcSpTU*<&~JVh4jX*-o~@Wc5GBE2M;A{3~gqE*tddP_KQy-OwaEw?|UHBkQ0JL{CE zC!KIeq{YE+EQrqT+^H!a*99o~K~Uyg5b+Lh!At*{^3B=p`p-kdjl_h-EyK6m@q1TR z?zoz8^g1+$u}8ZXC%GxnN2Ng+-sOp zC<(k^UH%;Y@7Idn6wvRG15$D(=dIoteMJg9;7m`6H2=2!X71^aP#ZYig{ zX*gsVYCbC>JNa>!g{_AwW2T-O*Sgu91W0}NtY*U;id5jks{xh-_ z{UV7w6%i(JrbW=hT2?fZEzjXi%2&g%0OZPJQL=*!I=a0lS^*J48+LKhZha%`BYjoj zLYJP^dbHVaW-4*v+XJc+o=h2BRTs2{Fl{%FTOmbS_P%~re?--HEb`Alnhf3@MlF+4D3SZiP0ADL7$@}eSw(v8UDLwn}TKZ7SoeA)Qp2XcR^rrg2}#h;_|pk3~bbq1*x z2|f$p3zzgW->N;o>k8NzQx$^sqjduD2u({;Yme#Nzw9JL@u_wt*aD5f7$XbhcQFM7 zv!V2>*IxVlzW>I1|aeSmiB@I=I527`yh779gEU9T$ec)}*kgfViQP@GEZR@$B zSa%gZo2wrG-{0(}WL+4~{@R~N9uPNM5Vi)%ELs}Ds zJPi(J?fGA~9caSa9AU{Y%F7B4f(0A?k2c6|S=`Gg$tGZ|d_SHyi_X+&OQ5cyel|WB zb_E7)X3dS_CEJ7D3fyctE&LgfkDl@2G4wq_-JiI$OphU6OU@)neR%r&Ssrt%qbn*B zSGl%ALe#BEde7kPy!(HaCDk*j*l;9#m6lj<@bZxTGW5GvZbNxtrpfi zv)&&xu&(Qw`Tv3yzqm#oQY&o_Tl5o|aJAsI3koTfU8X^1upQ3sF|q96(8X0jd7(QS zZbnb}W+^97Gedz-18gm6`~WDPqlz?7{;tzlmg_)nde}1G@_R;w^-JpGy~T>tH8V04 zO#G~H1mI6e0+u-DGhj%12^chTHEXR>b{laV=^pCZ^_(s2(nIo2;;8zb!r7tJQY`aO z=?Nb#)@|XfOuvj>j=Mt|GweZAeJ10}kE@2|u=ycMXq+K(#vtWe?~|XBF7=g)tRUt2 z4iPCmso(U;y9QS^4qn4A?2>!6 zvRq-l$1k)}b8`D8aXGL?*G+$?YMVkOtl}n0@WEKx$w3p5WKn{>3P1{X>I^Z7XwJ7{ z&ZU>MlfwBBB!9!>Pg++x|J+DulaS7wdY$KensZBAgxG`nf@dowB(2bE8Kiq6F`X`* z@b)MhK8Mu2SR_C2qD6CqxY9p?V3^RR{xZXrnN4S$|6B6+=WUuLF&=Wx?`tP;k&cej zjO^Uv=39ZTLGBU^#XXM4Mue+9Sf5V_6emyMhmp34Bo8z@%Q*bph(Bu}95 z5qD?-*`QSq-YL@&V;^n($+zG$9SOBjl-+F*o-y`fVon;XRRo(_uzB`M0>`kQy9FON zNnhlrha(ywOA4J5)<}AgXf)XuR~_%x-11#S6s6IvBS;Hd`Iz%3pUyYV+|JlhocEez z!$70axK82kT@EBGY+}z6SY_(?-s~5K`ozD8A$&u}?PMB4nt!0s?5SSBmdBYMuL_iJ zd+Gf0o2}){)3XMWg?^yH`cIpvs5j|>U_&r>8ds%*>7|MWAJCBZnj^U()-Zc&A0zO7 z@kE67a0OSmyG57d*cr;yxK(})H>DtJf`9x?r$P52PSGK)Fu(lW>ptpRhe2n9I2JKH zkk5C6rW?>&noB97n_;>%Xh*+gP9Rcy7o%`tA2dHb>6O3wEAjhKz>cv}fDUp{N!f8D zBRct&;?l+f5$|G3xU8`T6XRwiIlQyd}xA$K7bwBu(t9(j(fwf{i0{lgg9)r&3ZX4eg7W1AF({t-<6v(1SdI40T)YnFu;t@apuuq6gF3Skfy zR8-&8B_JtgMEgN{WZx#zm4@#cTB3h$4kf*B zDu0YgTW(qBWZpZUN<}E*FV%VbU1Gf-z4_R*B0&RWgU6Vqc(T9hIBK3+6vksw2lVYy z4reP@V;Bb#X4`KtbnM=(>OPRq-W%vu+Rka_xTyncqM&-0O3L&)US z4?qp--gtOnaJ0Ayf!i%w?}wJX@8%lr(Vp=B*{Z4E(ip8f#+6gw=gvG4C!*1O$6Vp7>Chy;Tx&#)jEu3 zYxXgd$K`h0BOKVttaw$NRDGNxdRV1nIv%a~^n>MB6n6!FHtpA2e)3CM-D>LM!hPIh zu93O}wAjjsVYT-zH8~@2<`bT*8LVeYtA$6l?qaji7ZXdgGfkdrqEBGs_($H=P%tr#Ly3W5JO!^b zlri^WHxWc>PA5rC>b{F|wz~FF)F_fNjBcJRWThT+yy9FkQQ) zrk;~)Nc5q|ufX4}FTPr{QFgC+URt45v3lH(r3Xb}e|76dFKav`)#E3wB-^u9&8!Nb z8qvRq*HQu*9K(dc(m3gxw-%&S3d8nQ>pV_STPWi1YAg3VIF#+WhUwyoX>nKRBUMOM zdu~f^P{HM3m2}wNZd$TNu-qCbVjfpwt=o4lQDv;!R`RH0dTmd2H;o+yUd!=yu#+`& z*7aR27guD16@@KsrXWp0eQGB=36_)=Bkug%GGLMx(0P9fnhpn1P^fF1$9t7dnJ{pe z@3W#h{WWzLY@RYMpdU-iGAuz@A`hb~e%O(|kmL_0AS20@{hmQORt={08$#(FALui< zf)Z6bNz9^CXt*7%Qu?d>F3H*}_H}${)VzpN1~M9E7B0VLsy_hvWak|c+!Na~l3>)L zBT?|Q0XbOP{6w)N#zCS=Ju%}MV&)FD?76L5l$5rLhDLR2Lt$#(@oi(|!I^d~BqPvr zV90{zC)jEHQdsU})^M)doWGcHJmNd)r-(Ytw;;)lE;o02CKk{ow3(@b^nf(_LjT8y zPxvS^7Fpe=ugTN*&-$v>R{IHb3`TfzzzIBc8mn4;k=^h!5h=8$j9kv_gu#!E)30!> zQ-lNtk+vCKq`AU=W`{&eUpzfi+bO^^4tikr1gd!C_ID14w*yqCj@vl~=RM{^J7(EH z*A*|)8@zw_%ROws#T{uGaW_B8iy#K7#rsvr)3KuBh`VL=Kwf2XcHCE4boS;tf*3mK z2Jkn(pv9b8sCw70TTrZ6Q^4ni_7#H3tqhSCtEV|n?h=%mQ2Qho(U7EV6MueKw-h3V zpgOVlEa8|#>TtqB3X02G2}o79_BQVgL=mD*btbW=tK#)-2fgD*d<_Llf*S*EZBOk4 zvW8Pga>ldguaSIB-BG`mO_y9g<*5ShJqv8vDMLOKr2C=xU zU3vo;AE()iHXerDf_=q+cT9KX8YYmmfU-d!l1ZSw+T~pHJI9k8bnGv89+9!VK2#g- z%VrP7elv_?rFHctMd2rf`;JVRRw_N$CQs4NACp^bqkq4*+QK0j(i$K_^I_S-yUYk^ zk|n+M^N4GMd7C39B2wk%@5sg1p)TX=u&e&&GkxSMmoKhTWA~V&OYoGXCkx)uhO4#6zO~sG;6;Dq$OQ7~r$JQ-Ky0Ocn zv(A6IRma}OAxvYxG-f6-IGTo%QP%v-Ju?kb*kgOQXJl3jdw40#7umb}X1c6DJ~H`p zVY|47ifxtOwY1dJ?y9Mc7%vpg1la!A@H^hQ-{e=&V)c7XAtO15DNG!*{R3Yb*>85Z z_Cjr4>J6E00U$5X?di%{ zJf;{eB6E=bVlE~$8+!RM++hv|gy#&iA*j-+)~_$Uv-25H^6Z_Fklb?_VeWK`&<1cy zdW~$nG43^nMl-8Sk&CX-`R6DAYNue&`G zrLN!KW@9CGJW!0Qo{Sv|!y8^?@E>=vCb1L;>w2d?f%H}+)h}#2C5y45I-s%ZYHmk$ z5UYVIar+VaA>{P&77Gd)XSz=@6|_2I;Yh#NCZ`rGO~GD5w4d8z?r3eyIC z2_~dyQw*%mKMUW8-A-yEQLlzC7(S_(e{W%xS&P{FRfW+xWrRD%Tep5AmCd3x>ZNBf z(D%BMkyd+E9m1%q+VYVrB&AaMD?%pq?G-u`%yLqK+$KPX+dzFY4rNs5*9eP8v=*98 z)8hN=zV|a%XmzsKDf%3dk*yvZb(O1O3_VUjpt>nX<7f~yl8JiO_UF|A7q$F<5q#j^ zALEDWt%2)AZR^kAl3+lq4b# zmEO34GoCJKu~Uf7>Lyj5dY2VO?F_={d|&2viB!M8cH`jE2Y&7&N*-^BOq8Z%s&Y?< zW*|&>%8~1{e~4tN{~|mRWBEVrnAK7ofPzE^pJ2h=-3Hg-79>Dmn89s=JHagkm*B3! zEfCz@-Q696yZgPhzp!sx+aGWq`&74#;aorQ%>A52JgN-kkBNqB6%!+k#Pc`~&D@wt zzOJu6CcY8FW_8jL$wV72*Br|Sl5v2XMYibn5L)F8Qofzm;9r{Tuy}|cWzQ){U09j6 z;mkt%q1pK}p7Fo}!i&NDIF{7x=O*u>Bd#}+n0BDq17TsEH=(Gmh);4X(kJT1VRYS< zAU3nRC7f};7}4vYn+AH_C{u`C0J|n$nu=T_^W$@3(PWyIfEFWTJQ5;gbxvf}#poqQ z(~v-oof9eed9JI12jfYoS+w5+5#F!6DP5jkDjqGODCM&`&9j!Zp~6VDV`>x9FLl6L zIHdjp+HS~1d6cU{BLt(%$9iOfY?pH<;Y7@!pd5?yqy6pbGU-Qe88a!Vk#JC(bbvj>*h9 zb&YZQ#-GdhMldQPW({FPyYK0_J@r=@TsjTMoIc%NahyPK2w+zaJSEtif8%`-M1(W< zcn0YbB@xrK+{!H(&Qr^vNwqN^HC-V{onUp4eYy7MF%$s72pKAAy`XZ zLTe8HbtT_q`)Ce=>sFjiG(JhXe)`RIIU3LKLQ8E)rtn?tmr73+)T?1jW=VtyIN6G< zOg!-2MdVr@jJ3Hl-W)BX5#7373$Sy9J<%Ova0u%G_4VokG{WH2>UME4SMF^)53JOc z&zQk@a}d581Sb5nTGy%x;bf2!OAXHe+sa|H@jQYI1{wuVWj0?XVu=Hf@P;(QBjQ25 zKI)`#iaCLpcG7)1tqWU|Nh2|ym?cqfYTG9zB;kFMFQu_5v=0F_2DWD42lL9l%K8&#-s9F+!_)haPZxw6*G?4%x-s2&z%@!UO3IuGqxxBK-% ztQVcuz{yFkMK(%PtFs0yH|E(yYgwzvb?&b9F5S|VKEGt$ZgR6A52M5jgiX!t2^t@`D#p%{tX3LCp^_@XqbS*w zYHu@^vFZ}HM_NZ=5IvU~;U?aZMAZY?r?DQtadm`Ig{^<>H%jMaty6dnGHRQ~=c z6?H40{`7a`y2$1qCrFdhDHX&buLV5mwJW>D5JN%kuECmA4C;bF+3x#&A|~Iq=#y!K z(1n$*_g~b@aspUB>ZWcW1dmW+^^o?ejaRK&CKSJw&T=uQg~;Q>-nhw_9o&7O&7DoR zk6SI^kfH1K>T~&2%wc5U@rY6oPKw!|g*Z$Tl@gojOF`JDL-VWG*2h8y}8 zAui@Gykli_E_P$#SweQ}zpRh~cdZAon5<`CYuKk_$rZ`I70OzJ zn@ED)KYPwq-*Ner4UJmgdBVz$JWK8Jx<%efH)r@<6vk45lwT8k)y@*#ZTeV+S)4_9 zE_7-SE#zy~`?23;{5jXfD2fzdhqTEc1I>l??)2|09SLgbNIlsN^MQWq8Vp=sRK|{@ zvgKbrjEflATN_1gFt(XmA|JtZMZ0qEQ)uo_L zh%xW#1*!jY!HH`|Ha8gY66_UcE!fl#laz*465nNKQgFy_w!U+b{|0}zWLxX!^Yu#> zn1=rN!T~Sn4;`{+0`zh4jczHrL%lu!-f~-2(u~PNEu}i={887#c9BfXW<9fsctiIu zc#CDOU=FFT!Hi%GEkq4`ZdkC7B?g=Mt+&<8@8m5m1KhYc?4qv+=fBx@Ksdw`8)Ci> zLEA%@ndqrzJs8`FrU)G1evYDK|2}pAI=?+&!av zpgsJ5+rEvnldI?}cUehq-VZO$fszAm~|EdZmPL<^$#G z_cHgTn10*uxSc_#?;-Q-c`1UfUGF`CFcJT#8wIWya9OS^;*Rfove!%y-fJ*wIJZZQ z`uUURQk#r&$0cg=k@9S3biHdlts`=3UKIUD9q%sr*m>|mw|r7orKv@ ze-kvIn8GLgzHjjgK{Nz81aqec!N0{GUgu4+#&o0>yDrmYv1hGs%N|JI@-d-+wVF=e_fr#_VBsEfHf^moe6TD9B19bAyu#` zbgC7`|J((C(H-jHUK4!;>+=@dwU{m2B>pieCv1J`s7Y7w(RM$yIVcJCmm~VEabko% zW5O6Vf3Sb^vv+L1iQ8F4FtDQDVR>V7%1tup7KL+wf+L5d^a!y&yorg?|8hNh>+(xw z%1=$qDg508xEPUh3Z;5A!FKbIu?Niipo^zQwg~As`Dni*_ONXkxk~pYG=xbtlJu2` zG;k|uwo84|Z)uCe!vkwLfzRuT2pm|Q&*&5?BGBstFPI$anMHcwx|QmhsHIRWjT*jb zY!{7K@sNW1!#e%K%Un3$X+ICQ=t_$)4zp>XzZr;u=@_z(v*9|w3!){*Ur)^0qFgj} zC!7L-}o}*VXe9g=;Uh_{^|9AJ18j0w zC;bUp-=%x@1(+m*^?}-t&B0E+(e}%Aukt_kv##Q=@TM}V+0*P2Y-fmhl}~0>^{X4U6(>=B`Y&Pc* zFv|REh;=CY@9KFZ&$QiRkS)!=ApEv%ckjk-+qUiAZQHhcw{6?DZQHhOPe13(jrZJm z=fnLl6R|R?GFL`bMpi~etyP)7|JDol`)pTu4}wnc#zCwqbmQ003k-1#axiQe6yh!T z@>()&mu1c$X(VRGZx-TJyWB#S0#sj7VjSHErB~vNu-pxZGS~EzlxRPc?z_^3x}b@= zu}&LcaKu8M&gQS$Mlfk|;o}pd78*-&sM29wwe(GN*!pu81O-_4&yTL8W;{yrgX|%z@UC>hX;;T2T4`30-xVyV}L!$ z_q_^;CnT$Qf$oZ3f3~kFefV)E=UKKF^gg$1SUIAYAiwFT_N%4!(_>t8%sEx0-$=zM z!n8hAtW$cKlA9-VLP!Z3H@Vh3vw`RqtD$HbZ@A{u2XL*qi$6jVs*v1-{M~c_FgS_!8OBbmH*;fMp z+WJ{dRrLo7${@v&Tk`D!ylRB#5wu%~H%Lf0MysmvtA*FN?97!TUCpf>Bw#t9KceKA z3oN=ScK2198SRnT8G*M}3}s{l70uBOzGw&!Dl+gWEg>PLR|$*{wD8cTU@7tz%WE^A zS2Iq@rjkF^R@$`f4jL-S~X^?5aHXne(v_5y=pZXK(*1@pDH5X53X zUDHeA;eJ$I_tf$O@?W|a{PQtXuc@^rSI;JR0J!=MV&gSRkK5LuLy@wVg@;mw@ctv_PT>qw}Ialk}h9kD#k^ zuWbE;tUafaFn*QhBuKsTPf!#4wMF7hHO;Pu{asmS@nm?+)I-aGDHbawx%O{la84{e zcXa79@7c>nzeU9(Q;f4l;VYebLt_eBS@ec!J*{2I5zWs|LK)H8rHSL2#xPEf)Uw^q z)cc7U=xYClPQex~l&tV)4Qqbjvo|jEHX;~I#GGsNkq$cO`LA12Thl{1H%7;Mn;M~O zMdmZSH_e>BnT_cCh6P{a@M1DtX_9)u7e@38>n;uON>XB_XAV=4{k0_FwxoAOu<#r8 zY+gWg@%iF(fWn@0l=T?KHo}31mm{jIS9&!%y8YOipXNP{o=87(-mm4NGwjEgxz)3j zr0?aF)$mmSY$4-o-=OY^z-shGx9-+8>lNQjzE|UCFehE_bIA8{yM(qQG%Pn!&RsUw zh`b_KK8`RT<#GUW$E?*WE>q;^s}q;{wtZ3Ls=NkdBN|7RBz$tPB*c&-q|ol9Ug(4i z9F(0Z#P9I^omH!%3P8sgs%ofPX=uw@iq7dgHdjT7FX{hyBZ zVvof9YZHk{2XB(;S6_a@i_hD(NiRMA2s=F5i}@69XR5)$(VC9ZwahUIlbg9**z_GM z@QScX9WWcSOJiinFux*YXl-9rEBQPB9)AG@l3B1J1xsxWB~S%3t=C8P!tUN4!dKBX z)1$(W$GdZ+I74;i%9)5Yhi9mWz)7cBzosNK5}OM+l5It(iVf~k46M>5V9doSsIi{o z46HjjO9XiXck{jh2ad9f#ZAvq~YdEtUv5#C&ayDfyC3L*dSp!XQe)D-Bc1 zh-)&L67f?5tKft_zJq>>UcCzK?zBz9?tmr0q$7(hD^0O(k^k z_O#p_Q1ALO+XQ1^H9li;zp*NKX%r_J`LiqY{3wmQduv#P*>>mnz3VnRvX}3-QW(bA zbFU$jhGgJxO^^+#YDJ1PK2C40Ud_4iOtsp-`kp!VdPmQgVpgl?yoseuCWFs;L1$ld zEBb6)I@Pv4!bX|Z5eM6M%s(D>eb+2Q(`mF9UCg_7j(b7OnKOO|vl+#GE3dB5CIf5}6FJ!9#nJPeOt4d&!Yf9LB47(=W+u}E z6=3i?BiM4Z$~I@n3jTNeq${#u1Ng6fL!pCDDTOs=(d`ssb7r%WH0@By=cZzfcTYO5 z8>nBcTQe9(hytrM4z1v9OEXDQi!f;rOmEB`^E^iI2RyQSwsNuIjCHg)JfA}@439g^ zv{x0kn|L1#E{F)ImCA}7&uLMwRGp-;$yq!|;B@sq9Tk_@RC71DLv%Q=$%d#{eYo?~XGDf)K|C2+$N9nbeT zK0i2sOI{{axWgKN(QL&DZ&rox7)n=Ljn1o7?QDiMHxzx{{}-vuATa*7sTQ;&`Mh z!i#TT7%L3!NyP=Rni%f3eA0W^ZfI(7sODc)nd?yh0(6BrF5zHJIn(`GW&nx zvE7^CSoFi7Iw&}|21U(qQ5w6S@(D6%l{8IGj9ek=u`*VYQ-p`VUntz6A>MY# z=<|O`AJ+p5kxVHE)x>p!(m%oujWgwGj-c@Eie)ZlR(W>PzPpV2^$uZgmRwf87Lp6B z&jO=;zfXNmjwe@>)N=$D_r-uYu^Qsg6s3j-VRBnLtqD>&?pJEi|1)g)SA5nOh6Ngj zkULyXaJ4=mKKdqe7$ALER((~)^4VTQM_HmCqzfaIN}{J0w}4%&#ugsNv$%Vyep6es})ywIzq=mr2s^BVn-1 zKCCk(6VL~{&js0&rpLzySCU{JprR7wo~01xsfe2Bz$-r3@66b@8NL^&$acGESe1W%dY7vPS^8brE@IvRBvwi~;zRc2V%+7`$fJAl2Wd5GtR8cwfTc-2*`o^zhHkdkG?Zl)&3#j!3}4Qz zFXZSEdUsjRw2pm~o4R?n*5=@8>nnEaj<{fxc@xc5e4BvEx^p|A4()rUQsd!I<_fK}m@gl~q| zXI}G@4WdDOA?hdG+6P!-w3_wrb)g~|AWO_{d5-;_bgP`R_S|-^jvV{clJQ}Can~Vr z!;q=^-@&T7`cVQ2aRag2&ot}fnLfWjtldK&x}N?zeSK0EsqKohl7*kCa{@RlBe8qn zcaO7DQL+S}uUc@KRZoXnO@ zN>$>{epN(Q4~Zw|f))vA;NKQdDf&C@n)WOT3U;^j6Vivbb(MGTQ(QX*qTrpJN7iIL ziBihId|MtSH%a#|~**ip+fjM@OtQNqbXf;u>ft(k7Y+(|;6)OgQ(oGPE zAt5y6vBA}FeIlSedpt(|{(LTPYLPdHOb>niRbd54jPdZDJK;@ylwqkJ6!hf9T8ngn zaMHqSuVoSK?Rn@q76x^etD1vO-=lNVcTgn36yZ}X&uN7fiM+CY(@`$NhbBR|{;lR5 zl3%F7Z@*;>fT6|$WeaV3K(4Am($}HX&Ar}Wqwh=-qgcv}$?SfOxpbr z;ecRA!o&^?u-~bE2;qWtfBXlyn%z>gskq#|P{+lZa6)R@Xko7v(1UrX^SoRdB)+v5 zO8|sNmO`qks=pUJbmXX_Dy?^`Y>BDg4}F7|ihY=c&^OcP^f09*PgfN{P0wHEAMgbl z8EqM4a0)X}8_OX;1UiF_@s@)W^~NszNmoxO^CaU3tg6&Nzo(j&%kg|n-3(ZFJCLkl zPM|{FQTmhe9$B&22so|&_X32rx?a{df*V9ty)Dg9Q(B&Ix#g84j;p(tXX>PU1V z<=dDf_nzdLT;vXtaa^g%xbGb@fB@YM5K96R4F^dlOOM}uTx8dg-J-|zaC?M!I;j;) zMCtU=jkW%$Hv!4(=timCj);eS)(WVD@Th6YL_|IQW+?fFf8hnBYoZTg=U89w!>N@2 z2L41n0scSm?rd!TL0kVn;NAbx<@(is1 z!0|uM`_Go0{>N|sr_TTW?w@_epY$`@2$<-9jQF4ZpCk>F>(=6_`f=$Yw$dh~zhykE8|I#x|CQDaT4 zINuHZ!0!M0I1Dw#V{$S!SzTW1SX4KzTVHNuw$D%9Z@@grFN#*ro)w8f4qjYpDskaT zVVYr{VzdB^=}Xi_P*K4EfN>a`Dk$iYDhi@YdT=5NqASw)wv|Hitu6rejDYCs>*@yn z28CGXbmjPyrqKdG7D4`v3R1F)k*2n$&H=b^VRf-d6-f=iWo>N@WIa{oC{yL>_>DrI zo(7~zB?V}l#8L#H=LRY*&Ta<~)RIBLx3Ms_FggR4vtw>(U~pad|04^&K3~xY-S{(wfTA`XM+mF}j6DKv_me_M5gC2m!T76%h<$Efv6!_=~*R z!S3h{+{*mI@SS&a7C`gMVin_Snc=Paal0aZxSN{8R7Au#w6GSsXJp|AdQbcEag1+Z ztOu|8_sqNBd&B$fL$&!G zfP_@{d{bm(cnmPZz-SMIk-CZrkU>S&^^LA&ph`-r$eHW|`6WyHef!NUR#b#nG&FNg z`82fgOXajuFVQ=1&_P*OsYl?*3esNsGn|{Q*CMos#fX~2d9P9XPpQ1KP&dp*gIKdPoFN;N7Jo{al?;H;=Mw?mC|V7={DX-KQ@f{V;iLUU_aBtri9bT^O4oVe+G35^A*Wqlp{89x)1KP29 z&0lfloeWqql#O@@klKME2=vw5(9DZSqFX@SKv2XZK-lz*ETG(NxCZ zr^$XDfbQirJ?QQd7CD}G*?;Ygrez`v3uZhP`NFQkpP06 zg}>s_szScAU}_~O9K1g4&!3j&YUDG#zwDcRe3GYXwZm%X4O91~1{&pPLXC+YB}JQN zVw2zPFsxzADGsCOkpKK{Ee_suft-H-Dt&2bEb=LV)F8YOphj|$iTA!H^HXdU03mL) zVSqU^mc)?5QFSvykA~*xh#~owH2W3!x^_btj4D0imy5wHjsEt2mF0w^T&Tn7mBB51 z%(P`JrA_ieU+Im*rvgVw9i&lPm{sznp|o|XFT5Bsm!~vA8Ov@gQObL-&=t9{C?w}R z`?H{udr@Y!ZD#@Bq3?UKB_l#2Uq?>5u&h{BI{tjrahi$w>g67>;}VLVpo1{lt7(pt zr!C2pN?v&uCcoBB6pJKQbS*G|mp{$%i4 z9c$%X$Pu=JdL)v`+c2~hp)xm3wS;5B7n$KmsiIGrMBJ-KCYYLW9)-E#`k1#lyuo4H zt0o1sB2;wjSnk$-07uk!`Y*V|fS{M^@A3!z3!M*uXQfM1!{#fkAoE)WA=*}QU~`=+ zO|87HlnwM6?4!VAiRkhGP=f64CWlpKOX>0^^r5$_vm;~)7T;<~g!9Ve`t8VMRrwq; zc${?{tfs$GQOT~%-it(bQ(CLIKzaHbHb%{=lqs0=0;>{QYe3o}noEV!5v>q*83F4l z9!S_SDpR^R;>JI|_OSW<=yW3{XE{dfOge_E`Gb1~fNQ>Sto4KRAtg)|bi@9TL8bSO7c{pz|3 zIM!p@!n3}!pIOf>FCK?>*yQjo0)6XgfT&-E=h#krXS*YY#GVwfxsA0>g>y|IAHu~LtaPZy%AaKb5 z(+B37y;4;6lFkfMSDFvKBwZ6uq2(O&jXyt*Ib?H%x5DM2($4pyazrZsvT94DmmPKK zNDwKu33*C9xx%9N*y~?LTIztLF@4Bv)!F9?MA$`CDaKRv7!3k`Mja8P%2p-@$omi%zW930eFS_y zfNoXl9RC@iqH17LYJY3$5(whKn3}SnKfU~d1l2P4+vDG1wrfdbUep005SM)$h8u=G zLH>vu)O?mG;;=t3i1XKc64WEvY1r%&m6#2tJtLSKN?`oFt$R6y7$fBj9@8CDw|Y zVS*QSIT^?zT4DazitW&?pq?kCxMtWM1MtKBiCUD`W$Woi;XYp)n&vkYI$m}6g4XD2)eFir(!copJ5QJd92+m zu?Uf4Y=Ooi!=WGy;!7VMFAzI!yp_~_qLR{VLHA8}{Cp(88}ng}EM+N-uqkCNEVCmI z&hEllDEXpXX^_BkMp@MsC7jUkaPtKz3uvw`xOM=^v5Y`n?%}hRaC!Z5PUKw9ldzD= zk;o<~5xrHR0!SzCT-5M3dRSWbQDtQGOGDlx@0bZ!RZQyUs3t~vgvrOHxHVyeOX*-i zbfaw)8mVFVS&g0z3xyGpi+94|4n{~?_M?YCwyN7kBib|~6GHbbR z8iN(BC!VOI))0bL@e=o7?;gVJqM$%_)sO%0BEBUcKHGV^OVXjW!9u0hh439qQq2M8 zV&EADffSIj2V4O(*OUynjZMaIR@Ww8;B(QsjYS^ zu)S@o{s;;|PpoyQ)qhs8{P`*TbqS2oOV3J^pKL&kIIS$UShK}DpkUmirteH^?9-3Z;Dh&DWmTGV$ zHv5ILV37~bZaS{jMy<@njzm}5GOkC4F(Vq+K4lXiS;c+~kC2sUc{>$Uz=KLy3*pOX z(3u6}P0!kSUoqXY0DA8-RL|=9xe4hVYNk*HD7I)Kftl{^;grV1DP`Je;zJ zz>@M_XI_uFORru9X2SvzbI0@g*DN@AUz?(9%E)5SP7T|fB60H2XZLF@#M*)Ule%ky z{ToZw$9zWDK-mFm)Q&J-o`MQPBfBdHn~}n4Y_|2*Njrn3kAh>&%NB1%XVj8Ml{e`; zze#bVVU(tGJ>9E&NESMjI>NP{|JuYZ9YF5SawJBmz-!1gsB*IrDbuFaEe(TO9NMjh zF^%GvS^$!?M7JfOxzkzQp@!?4FD;fV)DUhR$L}5 zSL&YJNORI%Ec~&;$X59f+##9+M{%jPm%!Z5l@IfD7>{vSA6~bcdxxP8xJ>#|2z;m+ zZ47kP=tlO#xh>yT4xxS(MD7Sn$|qOrTrM1!{m|7#H+OY>%>M~Svam`Aqav&uaU7mUk-$qb?XtsRN^f{ zzmjoD(JxeZwsX_9`j=sVwFm;?{3Zs-m*qEte8!(3DPtTdjk5X<0d%|Pn5!5DgGw;9 z_pwI%neL~OZK;yKG3gj7`_XRv1#qZKeh9)l<{;; zShwhM8GIFl&RoMuDfwr+F$*PN6U|S>lU-PUqmm4;k5wysLc`@=U|QHL35;AYA*}AD z8ZR_Y&1fAwbFl76Qm22j(|to$m62iHwx#{fv~xpmt?!{0ML!Vu^6hn5 zNg@Azpt2TIAXCu=@J{$`ASscHnb$wcxUQzccv3NC31gW5Sj?d?F|jmZ4Pz4z(*gmrT=-+zp%e85$fo zm#B7<1`n1_nhxi|h5?`=N-lp|9UOiri z2sZ%}Y`#z|MrN;hs*khYE3*~iP5avz2WHyeqLR6=PVVJ^o&@nh++ zOo~bFY%$vrTbCeiJA|n;o;_isG4HLOv72X7&k2#}KhRWhUh;V+qI~p(UU7pP%twAn zl`U%C0&ZGW_unjIf`45fyP=cmDMh5`1E8^ZV|q1C$RIkyWX&SAyNhpVt-3&YHft*< zR-z0%bmK+bl_=SR{YK~4!|XiIs_>p2$Su1zGBlwb_)F|X|1^jz6oI(3HQ}Zu8kP-R z(XzvmaI>|Hsq!c0jq)fmEUQJ(=Spna**5g(Ik)|kw<_XTXumuN@d}=3mNh68*}CQo zsw_^9z(F{CfDUi3i)-!vnkI`ir+}Gu7SQe2O{T{mlw{<_b$2i|>mkcwC6T3DZV4D3 zN>;bkz;=@BR%1;(eg{#Xw#y(kNTcSF19TGrT+e_>>5F*aDspwMSfBOXcm}o6U?3wH z=0ef~m)Vvv$omXdgZr%@X{?iIlmq>5@nq0!-G$6+==qjCdTurqMD2oYd_l z*Xg;xVjF$G_xn;mf+PdtY||stxT<-u;}S`|-z7!V50rcCW;6)~Z68lDneg_I?O*^2 z{YMcbo^iVun8H6K)w<6|?Bdm=4WN6)Jo~tDd z^=;;Mxrw&V{S1YK#Bhbd@$SK1>C}v(2K(k|AovrHWa|(G3#6W+6_Wf8vMTt5Sh2zO zPAoAJL5FoIFJGE=1xU!sp)E2E>ZRlB%U8MeS+=4%O0&IeUeg@_3n2%{uuQ^)s%AsFyNqgfjX(B6 zfMcjOw*O(NfZD?EqP56UIGvX-7RGM-eS)V8L`|VD1zJb;zF|G2TXBLsPj>vqRM+Br zXIVP}B6{`9&cEt3mDs+;mLhV#WSrBj9j4`DS4AM8yh>*(1&Q(V;p$nkOd)0o@VE$j z!B&8Rq-U(Xq$7T4x2WG479n&ek{xu5hpuP~31Z@DiV$ze=7N}_JsgE~L)IqOumt0c zu{!QS6>}OqyU=1;JD90N>!bNF zv`&Ap;_9`T9XztKA0xd40rbhr_vs{GU~hnp%p10zEoT+#Z*a#wp4fP6(VW1;zHo6j zC}jo9h6X5*w9_yB`)s9cP4DSHs~l9_m2{!f8(pKE$X62sS!*<6M38pubk)0G!q!vj*d)? z$9k}K@s_s(F}YG=^Pf6_ZCfXXn5?}kcacS0H~j5;PuAuO5y2=~O`DO=14<>(^_cNbt}CJ0q*yY2i8A|TJ2^m!-^ z8<0Kb6_x^WbL}pUnv+%s6{iiIAUD8M=ei=jyX%3jg4{)dhfI?@2>7RAC`tl0i>(aD z0UXW-=kX92B~&0Gq#e4N6!cIQ%+!Nl0a)eTg7KY`D) zy%83T6NH?|@}#8Oc;{ZkV#+3$k$!nZ!jpTg4U>x3-Z!D|N%AC5XF6s}>G74Kz}a6* zt4%ebp|{Nqt%U|!vP*nBtL5H*@@`Zkq@gWnR)~44PYLR^=5p;YD}Fj_n$a?)#j4Tg zgq#n(0bGllEf5=%nNpRf?zm^4gGrljchBM1&2(#1r=$PGRh7CQPhFC;*U0T-blaW& zbxY0coPw5w2nn&BVLiMD2nW(d+v2 zt~W(}OzbA5%8Z>`Vw+9!!KO~4SxLemF|Ga>(q7Fe>7p@7&<^6-r0%9cVP5VntyV{0 z83lu7H&-lLTOG-YANs9Alv@CTa=MPS7lE53YP(>YBwGEfc~O`V{Q6V8i8zRoyb4Wy zI69Pf;q8TpF-raYKrOY^SM==Uj=j?~H5P1>{ljzi)6P;^776kkDObwS_;%gt6KG%8 zL4y@Ak&8ioogr-oi^5g*)zQ@ILDW2|*V`LI3|hkwlk+zG@oT8H^9&&~wgj15B>bPI zteK*|2M<73^g#7PjJ(UpXXBK73z%_f+Mr+unn7}qDhW#vhA!3@W{@OB;r9}%vmgN_ ztYNfcMlKHWS^>o+L+K8lo^stH*zUvk9rr@@VzaIrcybWz_ll^J1xpbazsgP>gXR0w zQ0@z%!+vtM$(CFWEZqfnQdcPqvr*9UsHux&7uV;x--RdG{?&=GM-$s)=9tKU2wGnr z38eRs_!Y?-fr9g$kWY(?DzkukE{OF(W*9`mXmx z;;);(-Pd-d-gh973i+A9ubO<;BPWFk^Q6@z?mIDQH`K_e{d7u#agZi#gN!YDZYGsv ztUOihxd5+cwrYb+0f|aZk31n-PMb}vO}nkr4F$x1;pgk*2N($=VHkoaD&B9J)6dcM z(6w3v5Uoqfm<;t-=WCH9d%6*&?INIyjtI|Ae{SjSfr?i2M!}5PI(}IfNC;tbh+?m4u02%T83ErTzfGzDP)N&1r=HamD1jfyZ~O${so(fj+II0E^} zY^3TCyaV*;g)FhvjVg9NZ0Pe5IU=Nr?T3~>QM>10%s<#|xPFF5O@q_-pt5xOljAjf z)y7!(rL(+`2GhYkC5ZZeoW6t!z?kRbwe*IANU-7KiadwD%=(T8!>3OKp6+*6C3|8Q(Qvv))+{ zfvG7VBYJ#e*w5V5uti_*dNIpB)9)lr<%?>-9UqH9-V7573r~YHa+akWM#dPD$uq(% z2-YmN2VRA_r?Z++t+5akSzCd*qN|%2>ZO#a%6l~^?;yhb?~&gz zXUD`W)zV2%3E$=%;A^oWxOL*o<{QP@5OQR8plwG)LZki~!tZj45jay{oIbRjh{Rd*;U`!+o>6HO=G$Wn!W4RGFCgGO>MzZn`SBj@s4~nAFnS6Ov z=*6jP9MNSoG|?}}9cr*-bTzs`X|h7H^Lqd8K2w{Q#hyj&srU3F0uIf-zA6U|b(MlD z5S>2K!GOkqSQ&Mg;=R7jJ4d+naQN<>oDUWAjX7!t%tzq}2yu6JPa8|!SgQNE`mJuk@2U;mpUeYas z{MR%+D19*${1%LnxBhN7)tRi+Wc=&%hVLe*0g~?vn)oDfDl> z4;vNqD^$nlJ78c+>A{5?7bDDyPW%cdIaExcc3GyEeIjhH9vBZ0x~OU`+32ytT^_I9 zmeYUf6m)~-IFMx5?Em|@bQF^y^bM?_8j35U29&h7{*iugj#lfNn<5}LxR4|4y*v8b z?Jx|JdE=(JYBHGt*8OQ}3}eQ9-S1Zd5Y>#6vL@zi5y^?tXbJbY(N0MtMkrPy0noH~%nn}>^#tfQ~07OOBg*qZA|0`268F$22hT}Ev@Bgf?kX$r0D z-|xyK1XN1N;iQ!`28l6ct@)3nc?bM12(;WWIR(Wu*TT=MjTZ^A=i=I5EG*R9P- zhSWt*F|GkvE)JQ!zcmBn3APmE*60EX3Cg#Tj!!&usPm*Z9Tl|%DMBo-a4;FE%O9r- zvUp#oqevL?T5PBsfOn4zA=2C09PCIH%d&&cm`r_PfGpz@EryvF>-a?k;RpDfoUtAga@)c{Czit@?f_{W!kvO!n2gy2Gr8eCLIPxFb})QzQla&LFoe!Lm8JLM~$Y_DP9LMIyorz&BO-N+(hZW z#mrGFE+IU+1y5{1U@1G_1MorRSp7X9Fun$J*0IIJc?cihn!)~z)GxQ*Ygs@y)rG9Z z5xr&a2maiYWU-;$Quq)q21Jx}&g(5!&8^Vc)x<@C_oj)650xCTkhgL~X!({}K|>AQ zh(mq?^sx2-wO>At+iwdgag2Kk_5rKmVFx)^jMKo=Cf-HWa~9mD@T$&TW(50$ZdYR? zdM?e&kSvV1$rvpa<~Xv6#^JKq*U?zjj>1pHfX=swB~QAuyrXitzv@y#LQ?xdCR$klP&;Rb|P-$oew3&_Ie<7z^7v%9;8(`&}W^Y zs3sD`u2=5ZULyk&7fQC<^D-S`>1II-rgTaho3AR%G>CldtfbOzY0)kO=9R9X)WdD* zX3#$Lh`1fJ$&7GWD>cK_Kx*+?t<_c``1(v+rMV|kjPe%a0DPEuXhsPIVbN%C@%$bC zZr>St8|`mfHRGUW%pTGO3KP}vwq!Xmx~dm|F(%Ja&_ZpyL%5NYK%OMz>!!cuF9GIZ zW_9ByWE{mcCJmrN@e9)kLz=uiu35&4SEGhCgSg=%H4Rnx$$56`dQesF!#cZtP&Ooe zrXjJ5ff0aZj-7TIxyCZ9A^SBhxZEKzB$v@BG-0Wkh~YE@$CT9kY;ebu&tnYQhyTxxt+Od@9~R9 z$L>EHVjR`KOG96Xx~iOu#viY!L&*Of?zO+TtK znw>=Sn7Ai##I`u1vi40{T`&{%l1vP&JkuBkqGQ-vsdNb`ss&^^j%DRM_BSt$^~s3H zxa4_nY?bON6IAMFNaEz6TWwQ ztJbYxbvWuR)>7e)jxZu$ndz7$V`RB=;Sm(cq!%67^+pKhLDO*bxm4?-;ZO5r%SA~B zOA)n*0XvopIjAx+tgeza4=PwWTf_+1tv`0i3^d znyn}Dvd<$2Ifx}h(L>-e*9QM&=blHkQp)riXVlp8PC*W=;_vv?;m-biqv#%oG+W-Fn%erRWOZsWqk=@>0*GGvc38!X}=<8#}T9 z^VFV`+HJAm8&vDH>9=;u>YDFV){TM6Y>-#W7GxJ@&|srsI;4YO10&VluwQestn*Tf zSGmt2l^E0#GAw8zVsSl+Gc-nbgO3IZn#7;xEPBP3X`vB8!7vM-etk6K|Ll;0Cl{IO zoNf_>D?*57X6xSRKT*+MOh7Bs%4XS!_gG@=-99NRbHiy`OQusSs%AWHS-58~ERn1o zC2_-r0X-BwQ;WNsokiz#6!zS`o48uH3lDagagJFyn1L+>x9yxyIDd6vufc;JV?FLQ zl1cAxW-Y0FVc5{s`AZo|*bmt(>3*HFJc7?$1^R`z&f4G}KhVRBJn|N<3PFWVU4ZPf zKgdh)r%hDgyMcNiyj_@}&7VDbvL%s(G+v*AS3e%LL`8y~kdTa!_Bd`4I1rRZiSZ9% zFFQTMynws|*j6lMnsCY;>0~1wdxO&?QPRQ&ab&P6Q?LobGTSa7&BWf8mq?a4OtNhe z16A5oA_0|*uTvFBP*MG})X?)ucReTTucKg6R%AO` z(U-Vt5mLM@+^*J|=Jg>4{vi@qL<0BWG#qo+JRXF-M+rTzEb1wj7&b-(C+bXE?~sfY zG^<8^z`DF9R@$W1+wSf1L^?qD7GdS2%}VY{aS|oBkE(_zT9;5gB9j|O&hiiS z9y-6dzTnAyng?u>5lB(i1sI@DJhNP+9?A8s<}JSC2RWf!;O`_k>H^GOPZ9hJJ(%QM zO@|P`iH;)p+~-5*usLed8FfV>!k*(0oP1tZ z&DsvHo*}tc6(NDA4J^gj3D))@roV;dkh2uF#SAKwIkSl<{%W^#L0*4C+dUjV6y4wF zu+8@`gp1nts?0}ZYmNlOqM03`?|@R;sju=`uE#RB;=C1kUc+e>h6!U)<9>5QaUOMA zPqm&Mc@f!tFm)u?cxes=MFjXfhb5uv1v3%S=nCof98rWBe{6}W=$eg1hTX39f+*R{ zJi}|+M4(~05(Os|t&wT!@>!Rx2HNNNdL`6dj@7r=j^8zngQ$e(n#I~yWk3dq{hn*L zIJoKp)=-ffq}vO@r#dyS0C(xOL6Xu|piG2l{`73Vd&6(~h3y+jgUxf^}6X*?sT zB$hJs8Z=K8PS;>w-ae-&BTs^)e#z-uonCMVvG<>73~RPh9gJAPKZ&89xZ5G+@q(T8 zOnkmvpWHCASH=*MxDE7_&KTo!1l00uJEVZlBVYy%u{e3&IMH8psYku~N{5CNgHO~4 z{c)b1+UrXCn&!_({u`d%^HfAINBP1$Xft5HU)#;JV@G98g(a0FmZT4|MgwrK7<~zn zx^&~#z=vQp$IuNyn8KuG{X_ve?PY6y+HRg1oVyq0KKBkB4j{3VcVLVVxA+nrydQ6C z-O#zybdhQWM|yfNb4JfwV3%1^t&d3skrgKLj6G8AX`x?Uf{IxN@5~PN=qo|ixN}uB z_c=(52(mzqedy8jm8FV!kVMD5DhOGsg5^0H!ZzQ)Kg^6;XJwY(&_o`<^*}J7u4!ph zixF|SQ>HS*g`~@Q#ZhPV1#@p_UHmH&*y2u*l|84cJ%3BAH3YOjlRj?w3h_a?wXD+5 zH*{o!he)OpB%+obSk0M8^n%#HI#7u}sQMZ#sM@Bhh`8h7DQeD>RF70A-UmtOzX!%G zn}0W`^S*+R#tet1$Ji--aUa@LxD`AhSZ#eeF`aZ`{=9n*)%#h6U}52~rVyCG2X4|K z?8U3)kVdPfn-g=4b5;WT^g#Cf0viqL6jM@O*00L60YYp912<~wuBU#BITk)RkC3Y~ zYK&SfL~f?61JA$UT9BYC4XjYJ?ttZoLb~sUmo&ww$7^oMTan`HaDmxHV1CGeQ6w`` zKOgJp`muK7kLhB>bn8R_Tz5ilHsi`pT3V-L1?XMt)I|XrV1kExg}L zDmL6k9}ds)XxXb|QpB~mKn-U{7+qfi`1+yDJvKm(^PGrEHm1;Tte7w)EK%~)Js(57cm%Sj7ITmVy|(+@X825 zMA+Lp9H~bY#0*?{?~SJ-9CS2rI`7TVg82Q_%dAAG@HhSIO2V`X`k*#+NGu;}EgJ*> zt`OK()>hAx&IN9gBLwU9@sK6+i#S#IE(Yk0nFiMz)!K5GGu*~lXZAsXLRK<2b)HSz zM{LSXitM?kl@ys5DS(3wkEl?LQt8onQj^k_E6xseww`c`ZB&=8%W)pp!Y?BbM`eA} z3tA6ugk=Lk|1cc@JB`xH@7CrocE>YiLr9rw^p~QMI~$UHm>NK~a)S)D_N~FeBXVw@ zHpvZA3W2B!tWD*84buc>dxZBh4+b|Pmf2SXRhIDIzPQlqGqQPEW4w?z-7aG89rwIk zZLDstmg6^FZ>%Cr+5NTb!Ka&ZAYDWu3%DjxWNhu0y{r59qc@26QL(O|rfTjLcWXY8H0glI+FvDcD*le54JvkdzMRe-ZhRh%Wm`ETtXOH741;Du(S(I|cg>K}-IiBPfihKPTo$|1s4vE81H-%Ddws@+q9b;*lM6i+ntHyP!YE9y9 zK^1leDqWnGcShdh4Fz>t08_>`*fBl9n3cl|f&8Rc^lb02Kl8RUAXP>dS_q1l+y~DF z3v|(52QfM@qJY0%-<2pAj$tP|A~x>e=dTed%2n*vDOP?es-Rr}om_zukT>Ne5QanP z}Vh`%widuMg2gH;~__0CdA3xh{$>e zxXt=2ND2giWIq!P3{Pqjif>81*|&rRVfX!VmFQr}{lA z6hw^p#%bULY8h@^kSbI7jGM;VAa^Qvb#|L5kY8_J21sxu50#7*UZKn=iv&MxHWia` z8UA+ocSTbu(~-$3^<^N$U>V;cg$tn94|p%zT^cP*?txk`fUc=gBhK0aRFiL;Nd5Qa z4Dn{$`d4>K#wN80e(vWj1uSaXttAi=nsB6`yFGt!Zv}3B7NjH7hd-NZ?h===uG8q% zLHH#+m)o{y(1g34EW#qWlcHfqGOnG1qEgJW_kaRc|Mm+TL^b65op3JEgu-oaYRz$q`6vZ zyIjgQsAp2$->~0U#8@sFZrOV&7&866MUOAg!G_?lIpQ8DZ_xDn5T&&&BbL0`^&Z9} zNc5GRgf+r1+I+As-sppm_%R3WCS-i~!^dJ0@thsSR7V+sHSbr#NC>9S`z^g41>j@5 zMmjPZr^F(Xu+cW)^nD6<$W6;L?VCAsNAu2CL+fi3Ur0MyiV|Kl_vlu)El<}}@TKm!d_5|I!kl}42Y z%}G+GCL|H1QW-*oCJ~CvLq&;55=ErB@L%WLd+XkP?)!d!|Mz*G_pR31d+oLMUVH7& zUVH6xV!Au}uN9Y=I^V6K=(M?6l1?3PDcjUHw{i2n5QV~SMo>~&rV`-N{3Rv-*x${`_yNZxv*E72}Tv~tP z?Bn#!h6Y)|IR~rX-1gmeBXd$!g0YiqyXP(Tva`G8=SddjDBfqcst=>{lnQ$ z%C*+6lf+SF0(Y448lus=kQ_M+$ zX0vt=7m3#p?`EWW%XjwfZ8B(a`D1o!MA7eXn|{*|Z{Evw*e-B$Ji4-Hb<467>gLy< zr_O!!*#C2TpK5XVvK)PV*f`-d^Uv$mcgT(1BD2VDtoi2Uy4lAsUA7Wg#JJ|zX0=Dn{7jnH1*=&-4~ujg9T$$% z*ZSPC<~l2Fy|huYuR`684Ldh=rMG^2o14{^nr7DI8TGh8yiEBYE8)lav_msaPlyd> zc%QEv+fa2U)^*(UYUbXqnccsx>9FF&=ZWu|x+C)6iIM&i%wOS^^>W{hn&K3U|aXcfzA`bYYs?G)q6CiRG1 z_W6{inYmvj9-HpzKXuvZW18i*;A>uTq%(e6D{sH`5Ia85 z9eUOyEOjGbjudiS98VNDP<>3y8m8Z)Gfu>WFmd|{P_eE=jSmmew?hf7D0`iwpkjI`NdZhUEhu>cJ64JA(Qf4d(}I~!vk5r z>L131rY9b4&^n{i`&VmSEYv?km|f;IV&>OD)ikg z8RrqNuV`t>>J(;}PL*UV9NT{S=NY@)hu3^ZM9g~vb2CW~=?nz0_fC zbs>4n!>KzIk98hR6J4`I2hfdzlg{ChTTNzYwIrR*UwTAQLF%eiz!;gMt7TTC>kh0> z`1i9&RxJ7ZA$zi<$N{_I0Y7Jx(@OuTT;JIwx@wZ!r8|me%&&Q{QzBpc71k}%oYE2> zSgdw;VRytQ@v1u`#JomCtT>ZP|F&_a#ES2C((R(iy{5xWg2zyFuBTH+8#pgnkk1O= z{N3S8&X>xw`!d&ETJ7-Gp?3Kq>%wRU^U7^E{>=zDy!!17JH=DSwvKwyaGgEe`jcn zGMveNa7;W_{chUU6#+NK$fTaSSGc^l`gLyG%_rGyq}Mt}%D?o{+hi_wmMYqhv=8e$ zXjE@iGb7SyRB(x%`-Y{3QnL^J*Hg}^Otrqbc2tWy>&f9KSx>!nn!5ci=mr+1)NAI?m%DrC#XBY> zLXNsF*{0jAkgLCncE_gKX1jHJ;Rz<$^UY`R%uNQqZOr~XozA5eCvJIUNIUP{qIB;0 zk88aKPv++C^|QEDJY$6MyOKNat<&Dm6S-8MGxD0%BCko*?D2J@w^6!H_nB4Lh&oOS z9{Kt9jM80yk4L|`|CjQ6>^}R#H)Z+LQ)i7O&s$RW(m3nE6Pu=t?`F4J(uXT3jHA^3 z++Zjo?SIhM#8ly6#7BI0hu^qw+0w6%QpwAG`}1^jubXc46!ar)X}($^jl`;ZbFrDc15 z8XPmfJaD^q+0Ohdk=A_i@MRHykKXrsnR`(F$aAw6pDy)Own>Gf2ec4 z`vR@~RASuzwd`A?WY_4pZ}sviek*%6^`_nD!Z$RHsgLUmqw`yjcJ5e~xZ8?(t7(+^xemedueyp$Q;rg9r{=A=}LWCzp+cZnw4jf|KhBS zi)|YHZS^YDl?_&6Q&)X^X;*EsI!=AxsPwwh6(O?E=2oBRv`i{^*H}=s)O(}$sDXhA z>d&li4bSW~cH4bZy?d_9aU^{FSWK$smF{cB7h1Ws;QGG@9_c;&vX}w%KYr z1$a6+xNCYkcsYC6YX&-ad1!jLJ81g&d1yK~J39Gj+IhHnxNF+_XfD=VqGgI&wJs>w_x>?homW-Ca7x(Ze+&`dscILLV#cvnPHGzFy*tcp*9^G$-2fNA-8?PH*L93GY$iP~ zlN*y4$qL(L?($7S@|>5h1lwY2s^VnHNGsN`s!i%sm6TE`Vq%dCcFXUoCb6D>oGv~x zd~uG_PFt_7{R+b>$Byyq6@5HK%3JK*11FOQ=gzu_I%K@Lb|y@2rE2PxffS$Y16QA? zIFTOIe7f{wU6{tdcty3pGuQuJ+7~z@2a5{X(TI@?xit**TEBvPfMTc=0bo|*SbfB#GBvyqY1klUFZA67e{eE8G!3HR2^ zH4MLQ9+f{}TVH$UqqOVJx1G2D9sG7_$v^vlD&hmwEvl0%OMl;z{QI?~&8u~O;6pFT zz{me;_TG9&Svl^pq{y}5E(HV1uSMKDr{Ar2_Z|H}r=>&l$j;ZJAN1B2?%y+7v0*r^ zVROH$4eM{=KjS(7rp{Iw_50`6&kaq(uXuS&im-bFSYaaJ8{yvf#yC|)smQ_stz9}d z2hPJ=fi_=b8PzJ?50DzR$c1)X0Yk zK@MjO7uR2GP&>PBw&`f~PCMzM5s$9FeegADXRXoCkkCGdhhC%Sujz_~t}1RsP-*XkXQ?_vlBSX4ll0rH7qlUNSxxo!+chU}=&aHFDRH z_4Br+)E)~|j~DqE|IAk>GTvdbxTvb_0wZ#dn@pzNElw&9yz!0L@uG=+g%siX z_ORx1^=@f}DGymD3KN@Vy=wNU{_NvDTBIvQO61|*5bZxlyX>9Xo=A_~p;ggup;0{h zP(ovV`^`zJ_vZAt_HBMMwms}_4o(+-os~Z zR`nxkbe!&)c}8_<)W4Zt`FUL*3iVzpy_1^P^K)?@P4DDM=}!{7cbnx5oH=o@^x7fM z#^7Y-pso`V9dp>h3fhIN;$1P*GA`z(l;5SkvpzZHgw(0mJx_yex{VjEi5@jyckH`O zC+gE?zOV^a-%`5Y*>iz;!lrXJ$K=<dvpee?|sp<<*^@^+Mrdit&#XU2pD)ucTMSo)~3my2K!q4mo-DPmP9ccmMgx zwQr;}v5@bijeQH?Npe>O%IjMVrbJ2`Zi8jl$!(I){UFe;1@%v@5ub=bJ zS}Y#E?PosO=JzqhY1`6%8TqwXt{;C`^~Ly^zi##2Xq0G>8@u{Lx-U6tuFQyQO|d;= zZ|cwLrGzc$KIZb~KAire|*X**NyT z$d1yB2SQ^;w|uOStZ;1~U99)HW@+U0P2*l3yFDOEz4YoBwR^|we6y!9XN(W|YwWIb zoc8dbiP`(xyPEZ^$`533IS?g!Rb;`HEXLVm%3aIuZ7P@(B>VJa($|wkiTlswh?Jf! zOoH9Y)ff@F8qcw>E5CDT`l_W`pWJCrBmwqin=9=^r8oWPu@CiX-Jy8;Dqj+ z-4^)Y`T@oeK`VeM?&1bTy=Qykx-) z`6;108Gc^zN4_+l8-2C-nAM~sr#H&C)@6h`PqNorZy7Y>z{#CGdhVTL?^K;-sp|J0 zTzzV`l81O_kX)&X;dHy5ccNn|NY8cpBWu~gxxXi~b0V058Ef0qi!O<-Yc!c$U%M%# zKoGG7d_-T^8#b(S0j;{pK0VzkED3P9~u0a+O4v^X_|{Sr-kw z-9~MSwKX0#{?|m(-I;mGmhy74M(^srwEQUc`+g?ud$r5*P-J=(_Eq|3fB0ccrN}1i$LPGYNUEEk+($rrb`!L^se$d16FS=;wi><(4)tI8Cw{)M!L{qfAzkAD<;rCR>s#(m0t!&fS{d_MOmUhQghNlx_v)1sweWR0m2HcB-I-CXC* z@SRCnVmNE~@f9Dw7VVImv#4*j&!Je;onJllLk%xe0u$o{$5ST%F*)B>Yj;B_@pU@8 z(Rz5zN{{`SA$y$9C+-r9HGSeVH}q8E(OGpb%XLoo-syAryOs9Ol)B4u(=OdV(KFAT zJV#EyuDB%gaEEyZH5mT_&>fMThSuD0pSDmz&xY zID~hNom$v+?w!qQD>KEvFEt%hLcA0TYL>nZC@g81yT<#WO4w;*h^x$IM;4hru6hmnT+b1)s{N%9lsYSMTiwEd@k^l9v&waVKZ}DLPK21x3ML8j)iL3 z`)P?TB$;KCR%_nLo8a9FA3}U6G5P3>wf*e4=6hmO>$M78CR|bK`FoUS!&m%s__}w2Om}+ zSk2VDAHSvYv6}40e9Oa$sxeW$G39T)MJ_k24f-*sYt1TIn{}TKJIrbF(;R8K>gK*} zhl1|XwqV)2@KG3;+@6k2yS`P=_`RL|4=0~sV;|3O$^6Aja_u_Ak@A=b|{7GTm zA!V(r{gJoD)s0_oxckkx)U2*t>A?17m6D_{yS}x=1r&74Cu}~TR!t36H~rHZ*Su$% zjzf|qd)DmLkLDz7csSeWrBO{&c!=-lGQ~Vb(5)ICRvnO z2mjg@GI9HPk(ZYnp1G{HkWSiN-LPq0HoNEMfMFJMVY;oE=aIi1GUoSb!GCo1Rv4(C zJ-u#&LwytJRNw~Moef#k*Iy>?&$@4v)?#MYuxV9(Ei*>x{N^+2_ZrKe#{5i{u>7^? zM!ZD#o^8_mbDDoL{hab#w?FRxuG0LX-<+)86wl3sWq?XI5~QrPaXcHZ1?lv z35~uf=R^W4mWTgX`8z(r?fvLw+jHW7b*^?gp1yNzh>YC~nH5cafn9gZyL%_AT7^D6 z{c!xt?GNgdmp&`o{qyyA@28LV$Jpwwu=)LSobt9>7tf1n+eB~pTaU^$n|L)NrhZ3D zpJtBulcWa!)5Q^OduJ@xL?Y0|I%h(~;ULLo(2MLY{puyKFTZZ~T2=t~Nu zXT{ThS4~+lKwGggWV4Z4|GDKC=D7Z~?!9|kUPGdOY2xFQt$~Y-Cmf4#?ym7Urf<17 z>eqX9pZtTP&NFgu9DZPYSkc4xOIm3C=BWI@Z3)YNUR7(KGN!dsTC!}-f~swWg(|L7 zNL!jMO#IXmj`({$mH%Y@FZ9x!?34!EvaS`ZroGJY-Z4q);fa!4-i(%_KggXIs_$hN z@OE+yW$m};qh8N{d3>$ZBU?G!C2|hGPS6iOt)42e?5J3b8P#X0Q^^I(h24E2CLh1k zsrd)OUlj(W*z9KbKi~U)=5hT`8;%s!o|T_GT{37)LP!2HtJm^pWfv6=%Ug50-Rrk@ zp@O8EzIA1V;$N3d=kM*#D}M69`LdGir$beVZ;MFw2@y4}9W|?VD9>VUjSaNi>M6Y< z&TqmP>Wt~-sVgV9ELC79C{(>mH2Xa2b;0w|DYSwsF$==6yEGT|KjtHcOXv9`d|7VfQ%=10|bmk5vcfoKe2lE7SNlc+F~s z3$fm;jc3%~iP|1o>MpKeYf3+Q&N=8kOY%hCLg~*_6n@cuCQb<5?6Ewqe1@UtBI9b3 zTa5Wyd50k$iD1f#2M?GZ#OBeeU