From 00c20ccd7f5562464186701f74a7f23d463827f9 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 19 Nov 2018 14:56:15 -0300 Subject: [PATCH 01/17] add help argument --- src/sort.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/sort.c b/src/sort.c index 418430e..fdb8e04 100644 --- a/src/sort.c +++ b/src/sort.c @@ -57,6 +57,7 @@ void print_usage() { fprintf(stdout, " elementos a ordenar, sin esta opción los\n"); fprintf(stdout, " valores son elegido por el programa al azar\n"); fprintf(stdout, " -i, --imprimir imprimir el array antes y despues de ordenar\n"); + fprintf(stdout, " -h, --help mostrar como usar el programa\n"); fprintf(stdout, " -v, --version mostrar la versión del programa\n"); } @@ -197,6 +198,7 @@ int main (int argc, char **argv) { {"n", required_argument, 0, 'n'}, {"elegir", no_argument, 0, 'e'}, {"imprimir", no_argument, 0, 'i'}, + {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'v'}, {0, 0, 0, 0} }; @@ -206,7 +208,7 @@ int main (int argc, char **argv) { return 0; } - while ((opt = getopt_long(argc, argv, "amqbBcsn:eiv", long_options, &long_index)) != -1) { + while ((opt = getopt_long(argc, argv, "amqbBcsn:eihv", long_options, &long_index)) != -1) { switch (opt) { case 'a': merge = 1; @@ -281,6 +283,9 @@ int main (int argc, char **argv) { case 'i': imprimir = 1; break; + case 'h': + print_usage(); + return 0; case 'v': printf("sort versión: %s\n", SORT_VERSION); return 0; From 69b8ba694233997e9d0a8cfeb692bbba5b49d3fb Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 19 Nov 2018 14:56:32 -0300 Subject: [PATCH 02/17] update readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b5f83e9..12cf0dc 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,5 @@ Comprobar que los algoritmos y programa corren como esperado make informe Compilar el informe si pdflatex está disponible en el sistema +## Correr el programa + ./sort \ No newline at end of file From 0da047d14eba7a19228cc5d69218ca190c8bc344 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 19 Nov 2018 15:09:27 -0300 Subject: [PATCH 03/17] add results --- doc/resultados.txt | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 doc/resultados.txt diff --git a/doc/resultados.txt b/doc/resultados.txt new file mode 100644 index 0000000..a48ccdd --- /dev/null +++ b/doc/resultados.txt @@ -0,0 +1,41 @@ +Quick sort + 10.000 - 0.1 segundos + 100.000 - 0.17 segundos + 1.000.000 - 0.173 segundos + 5.000.000 - 2.0 segundos + 10.000.000 - 2.4 segundos + +Merge sort + 10.000 - 0.28 segundos + 100.000 - 0.30 segundos + 1.000.000 - 0.304 segundos + 5.000.000 - 1.577 segundos + 10.000.000 - 3.236 segundos + +Bitonic sort + 10.000 - 0.09 segundos + 100.000 - 0.124 segundos + 1.000.000 - 1.405 segundos + 5.000.000 - 7.421 segundos + 10.000.000 - 18.365 segundos + +Selection sort + 10.000 - 0.143 segundos + 100.000 - 11.645 segundos + 1.000.000 - 21 minutos y 2.0 segundos 1262 segundos + 5.000.000 - 8 horas, 45 minutos y 50 segundos teo 31550 segundos + 10.000.000 - 1 day, 11 horas, 3 minutos y 20 segundos teo 126200 segundos + +Count sort + 10.000 - 0.258 segundos + 100.000 - 30.269 segundos + 1.000.000 - 50 minutos y 26.9 segundos teo 3026.9 segundos + 5.000.000 - 21 horas, 1 minuto y 12.5 segundos teo 75672.5 segundos + 10.000.000 - 3 dias, 12 horas, 4 minutos y 50 segundos teo 302690 segundos + +Bubble sort + 10.000 - 0.326 segundos + 100.000 - 32.347 segundos + 1.000.000 - 53 minutos y 54.7 segundos teo 3234.7 segundos + 5.000.000 - 22 horas, 27 minutos y 47.5 segundos teo 80867.5 segundos + 10.000.000 - 3 dias, 17 horas, 51 minutos y 10 segundos teo 323470 segundos From ac01470812b5e2b9d12ef042c5297659277181a6 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 19 Nov 2018 15:10:56 -0300 Subject: [PATCH 04/17] update bubble sortin informe --- doc/Informe.tex | 9 ++++++--- doc/pseudo/bubblesort.txt | 12 ++++++++++++ doc/psuedo/bubblesort.txt | 9 --------- 3 files changed, 18 insertions(+), 12 deletions(-) create mode 100644 doc/pseudo/bubblesort.txt delete mode 100644 doc/psuedo/bubblesort.txt diff --git a/doc/Informe.tex b/doc/Informe.tex index 910bc03..3ca06df 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -16,7 +16,10 @@ \lstset{ basicstyle=\small\ttfamily, columns=flexible, - breaklines=true + breaklines=true, + inputencoding=utf8, + extendedchars=true, + literate={á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1 {ñ}{{\~n}}1 {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1 {Ñ}{{\~N}}1 } \usepackage{hyperref} @@ -63,14 +66,14 @@ Xavier Canales \newpage \pagenumbering{arabic} -\section{Psuedo código} +\section{Pseudo código} \subsection{Merge Sort} \subsection{Quick Sort} \subsection{Bubble Sort} -\lstinputlisting{psuedo/bubblesort.txt} +\lstinputlisting{pseudo/bubblesort.txt} \subsection{Bitonic Sort} diff --git a/doc/pseudo/bubblesort.txt b/doc/pseudo/bubblesort.txt new file mode 100644 index 0000000..04866c8 --- /dev/null +++ b/doc/pseudo/bubblesort.txt @@ -0,0 +1,12 @@ +entrada: array: arreglo de elementos enteros; n: tamaño del arreglo +salida: arreglo array ordenado ascendentemente. +cuentaDeElementos := n +repetir + haCambiado := falso + disminuir cuentaDeElementos + repetir con indice desde 1 a cuentaDeElementos + if (array en indice) > (array en (indice + 1)) + intercambiar (array en indice) con (array en (indice + 1)) + haCambiado := falso +hasta haCambiado = verdad +retorna array diff --git a/doc/psuedo/bubblesort.txt b/doc/psuedo/bubblesort.txt deleted file mode 100644 index c3cc70c..0000000 --- a/doc/psuedo/bubblesort.txt +++ /dev/null @@ -1,9 +0,0 @@ -cuentaDeElementos := n -repetir - haCambiado := falso - disminuir cuentaDeElementos - repetir con indice desde 1 a cuentaDeElementos - if (elemento en indice) > (elemento en (indice + 1)) - intercambiar (elemento en indice) con (elemento en (indice + 1)) - haCambiado := falso -hasta haCambiado = verdad From a1a4f5f536d8257119b84a706acc9ba3626aee58 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 19 Nov 2018 15:57:08 -0300 Subject: [PATCH 05/17] add table --- doc/Informe.tex | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/doc/Informe.tex b/doc/Informe.tex index 3ca06df..2f1b43c 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -81,8 +81,38 @@ Xavier Canales \subsection{Ordenamiento por selección} -\section{Análisis temporal} +\newpage +\section{Resultados} +\subsection{Análisis temporal} + +\newpage +\subsection{Datos} +La siguiente tabla contiene los resultados de las pruebas de los 6 algoritmos medidos en segundos. Para las pruebas usábamos un computador que tiene un procesador AMD A12 con 4 núcleos de 2.7Ghz y 16GB de memoria RAM. +\begin{center} + \begin{tabular}{|c|c|c|c|c|c|c|} + \hline + \multicolumn{7}{|c|}{Algoritmos de ordenamiento} \\ + \hline + \rule[-1ex]{0pt}{3.5ex} & Quick & Merge & Bitonic & Selection & Count & Bubble \\ + \hline + \rule[-1ex]{0pt}{3.5ex} 10.000 & 0.100[s] & 0.280[s] & 0.090[s] & 0.143[s] & 0.258[s] & 0.326[s] \\ + \hline + \rule[-1ex]{0pt}{3.5ex} 100.000 & 0.170[s] & 0.300[s] & 0.124[s] & 11.645[s] & 30.269[s] & 32.347[s] \\ + \hline + \rule[-1ex]{0pt}{3.5ex} 1.000.000 & 0.173[s] & 0.304[s] & 1.405[s] & 1,262.000[s] & 3,026.900[s] & 3,234.700[s] \\ + \hline + \rule[-1ex]{0pt}{3.5ex} 5.000.000 & 2.000[s] & 1.577[s] & 7.421[s] & 31,550.000[s] & 75,672.500[s] & 80,867.500[s] \\ + \hline + \rule[-1ex]{0pt}{3.5ex} 10.000.000 & 2.400[s] & 3.236[s] & 18.365[s] & 126,200.000[s] & 302,690.000[s] & 323,470.000[s] \\ + \hline + \end{tabular} +\end{center} + +\newpage +\subsection{Gráficos} + +\newpage \section{Conclusiones} \end{document} From 0b6ca2c05167696526339a50bd778423769d632c Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 19 Nov 2018 16:03:13 -0300 Subject: [PATCH 06/17] add missing sections --- doc/Informe.tex | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/doc/Informe.tex b/doc/Informe.tex index 2f1b43c..5f4682c 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -65,26 +65,40 @@ Xavier Canales \newpage \pagenumbering{arabic} - \section{Pseudo código} - \subsection{Merge Sort} +\newpage \subsection{Quick Sort} +\newpage \subsection{Bubble Sort} \lstinputlisting{pseudo/bubblesort.txt} +\newpage \subsection{Bitonic Sort} +\newpage \subsection{Ordenamiento por conteo} +\newpage \subsection{Ordenamiento por selección} \newpage \section{Resultados} \subsection{Análisis temporal} +\subsubsection{Merge Sort} + +\subsubsection{Quick Sort} + +\subsubsection{Bubble Sort} + +\subsubsection{Bitonic Sort} + +\subsubsection{Ordenamiento por conteo} + +\subsubsection{Ordenamiento por selección} \newpage \subsection{Datos} From 4821776ffe1b1f4d2aa1f0b4b6d71d40905b91ae Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 19 Nov 2018 17:27:56 -0300 Subject: [PATCH 07/17] add spacing to bubblesort --- doc/pseudo/bubblesort.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/pseudo/bubblesort.txt b/doc/pseudo/bubblesort.txt index 04866c8..915635c 100644 --- a/doc/pseudo/bubblesort.txt +++ b/doc/pseudo/bubblesort.txt @@ -1,5 +1,6 @@ entrada: array: arreglo de elementos enteros; n: tamaño del arreglo salida: arreglo array ordenado ascendentemente. + cuentaDeElementos := n repetir haCambiado := falso From 1094451880f45a9450f53c014461b68eed92e815 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 19 Nov 2018 22:04:13 -0300 Subject: [PATCH 08/17] fix style --- src/bitonic_sort.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bitonic_sort.c b/src/bitonic_sort.c index 61751cb..e50cb93 100644 --- a/src/bitonic_sort.c +++ b/src/bitonic_sort.c @@ -114,7 +114,7 @@ void bitonicmerge_no2(int low, int n, int dir, int *array) { void recbitonic(int low, int n, int dir, int *array) { int k; - if (n > 1){ + if (n > 1) { k = n / 2; recbitonic(low, k, 1, array); recbitonic(low + k, k, 0, array); From 02ea6050e9c288cf7416f2cc008370a1149951b6 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Tue, 20 Nov 2018 12:16:29 -0300 Subject: [PATCH 09/17] rename to counting sort --- Makefile | 2 +- src/{count_sort.c => counting_sort.c} | 2 +- src/include/{count_sort.h => counting_sort.h} | 6 +++--- src/sort.c | 18 +++++++++--------- test/Makefile | 2 +- test/test.c | 6 +++--- 6 files changed, 18 insertions(+), 18 deletions(-) rename src/{count_sort.c => counting_sort.c} (98%) rename src/include/{count_sort.h => counting_sort.h} (94%) diff --git a/Makefile b/Makefile index df27027..eb10ead 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ CC=gcc CFLAGS=-Wall -Isrc/include -DDEBUG -g LDFLAGS=-lm -SRC=src/sort.c src/random.c src/bubble_sort.c src/timer.c src/count_sort.c src/quick_sort.c src/merge_sort.c src/bitonic_sort.c src/selection_sort.c +SRC=src/sort.c src/random.c src/bubble_sort.c src/timer.c src/counting_sort.c src/quick_sort.c src/merge_sort.c src/bitonic_sort.c src/selection_sort.c OBJ=$(SRC:.c=.o) all: sort informe diff --git a/src/count_sort.c b/src/counting_sort.c similarity index 98% rename from src/count_sort.c rename to src/counting_sort.c index 6ba0c3f..3aca154 100644 --- a/src/count_sort.c +++ b/src/counting_sort.c @@ -22,7 +22,7 @@ * @param array El array a ordenar * @param n El tamaño del array */ -void count_sort(int *array, int n) { +void counting_sort(int *array, int n) { int i; int j; int *temp = malloc(sizeof(int) * n); diff --git a/src/include/count_sort.h b/src/include/counting_sort.h similarity index 94% rename from src/include/count_sort.h rename to src/include/counting_sort.h index 222a167..0d0053d 100644 --- a/src/include/count_sort.h +++ b/src/include/counting_sort.h @@ -13,7 +13,7 @@ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _SORT_COUNT - #define _SORT_COUNT - void count_sort(int *array, int n); +#ifndef _SORT_COUNTING + #define _SORT_COUNTING + void counting_sort(int *array, int n); #endif diff --git a/src/sort.c b/src/sort.c index fdb8e04..89a882c 100644 --- a/src/sort.c +++ b/src/sort.c @@ -22,7 +22,7 @@ #include "random.h" #include "timer.h" #include "bubble_sort.h" -#include "count_sort.h" +#include "counting_sort.h" #include "quick_sort.h" #include "bitonic_sort.h" #include "selection_sort.h" @@ -49,7 +49,7 @@ void print_usage() { fprintf(stdout, " -q, --quick usar quick sort\n"); fprintf(stdout, " -b, --bubble usar bubble sort\n"); fprintf(stdout, " -B, --bitonic usar bitonic sort\n"); - fprintf(stdout, " -c, --count usar ordenamiento por conteo\n"); + fprintf(stdout, " -c, --counting usar ordenamiento por conteo\n"); fprintf(stdout, " -s, --selection usar ordenamiento por selección\n"); fprintf(stdout, " -n, --n=N la cantidad de elementos a ordenar, la\n"); fprintf(stdout, " cantidad predeterminado es 10\n"); @@ -183,7 +183,7 @@ int main (int argc, char **argv) { int quick = 0; int bubble = 0; int bitonic = 0; - int count = 0; + int counting = 0; int selection = 0; int opt; int long_index = 0; @@ -193,7 +193,7 @@ int main (int argc, char **argv) { {"quick", no_argument, 0, 'q'}, {"bubble", no_argument, 0, 'b'}, {"bitonic", no_argument, 0, 'B'}, - {"count", no_argument, 0, 'c'}, + {"counting", no_argument, 0, 'c'}, {"selection", no_argument, 0, 's'}, {"n", required_argument, 0, 'n'}, {"elegir", no_argument, 0, 'e'}, @@ -215,7 +215,7 @@ int main (int argc, char **argv) { quick = 1; bubble = 1; bitonic = 1; - count = 1; + counting = 1; selection = 1; break; case 'm': @@ -231,7 +231,7 @@ int main (int argc, char **argv) { bitonic = 1; break; case 'c': - count = 1; + counting = 1; break; case 's': selection = 1; @@ -296,7 +296,7 @@ int main (int argc, char **argv) { } } - if (!merge && !quick && !bubble && !bitonic && !count && !selection) { + if (!merge && !quick && !bubble && !bitonic && !counting && !selection) { fprintf(stderr, "Error: No se seleccionó un algoritmo valido!\n"); print_usage(); return 4; @@ -351,8 +351,8 @@ int main (int argc, char **argv) { end_sort(); } - // O(n^2) - if (count) { + // O((1/2) * n^2 - (1/2) * n) + if (counting) { start_sort("Count sort corriendo... ", n); count_sort(work_array, n); end_sort(); diff --git a/test/Makefile b/test/Makefile index fc1b030..444028d 100644 --- a/test/Makefile +++ b/test/Makefile @@ -3,7 +3,7 @@ CFLAGS=-Wall -I../src/include -DDEBUG -g SRC=test.c OBJ=$(SRC:.c=.o) -OBJ+=../src/random.o ../src/bubble_sort.o ../src/count_sort.o ../src/quick_sort.o ../src/merge_sort.o ../src/bitonic_sort.o ../src/selection_sort.o +OBJ+=../src/random.o ../src/bubble_sort.o ../src/counting_sort.o ../src/quick_sort.o ../src/merge_sort.o ../src/bitonic_sort.o ../src/selection_sort.o all: test diff --git a/test/test.c b/test/test.c index f36e428..5cf3faf 100644 --- a/test/test.c +++ b/test/test.c @@ -19,7 +19,7 @@ #include #include "random.h" #include "bubble_sort.h" -#include "count_sort.h" +#include "counting_sort.h" #include "selection_sort.h" #include "bitonic_sort.h" #include "merge_sort.h" @@ -124,10 +124,10 @@ int main(int argc, char **argv) { passed++; } - // Test count sort + // Test counting sort pass = 1; memcpy(test_array, test_case, sizeof(int) * n); - fprintf(stdout, "\tcount sort: "); + fprintf(stdout, "\tcounting sort: "); fflush(stdout); count_sort(test_array, n); for (i = 0; i < n; i++) { From e13b9a9dd3deda13dd4ac843c0529c6720427a62 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Tue, 20 Nov 2018 12:17:19 -0300 Subject: [PATCH 10/17] change to counting in informe --- doc/Informe.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Informe.tex b/doc/Informe.tex index 5f4682c..aaa7ae4 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -108,7 +108,7 @@ La siguiente tabla contiene los resultados de las pruebas de los 6 algoritmos me \hline \multicolumn{7}{|c|}{Algoritmos de ordenamiento} \\ \hline - \rule[-1ex]{0pt}{3.5ex} & Quick & Merge & Bitonic & Selection & Count & Bubble \\ + \rule[-1ex]{0pt}{3.5ex} & Quick & Merge & Bitonic & Selection & Counting & Bubble \\ \hline \rule[-1ex]{0pt}{3.5ex} 10.000 & 0.100[s] & 0.280[s] & 0.090[s] & 0.143[s] & 0.258[s] & 0.326[s] \\ \hline From 89cd51e84cf6e6eab73466cedc6ac6fbec317920 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Tue, 20 Nov 2018 12:30:57 -0300 Subject: [PATCH 11/17] missing counting changes --- src/sort.c | 4 ++-- test/test.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sort.c b/src/sort.c index 89a882c..b12121f 100644 --- a/src/sort.c +++ b/src/sort.c @@ -353,8 +353,8 @@ int main (int argc, char **argv) { // O((1/2) * n^2 - (1/2) * n) if (counting) { - start_sort("Count sort corriendo... ", n); - count_sort(work_array, n); + start_sort("Counting sort corriendo... ", n); + counting_sort(work_array, n); end_sort(); } diff --git a/test/test.c b/test/test.c index 5cf3faf..47aa2d7 100644 --- a/test/test.c +++ b/test/test.c @@ -129,7 +129,7 @@ int main(int argc, char **argv) { memcpy(test_array, test_case, sizeof(int) * n); fprintf(stdout, "\tcounting sort: "); fflush(stdout); - count_sort(test_array, n); + counting_sort(test_array, n); for (i = 0; i < n; i++) { if (test_array[i] != qarray[i]) { fprintf(stdout, "fail\n"); From 5a36a88c30b73586ca162438960b32ea0246305e Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Wed, 21 Nov 2018 18:23:08 -0300 Subject: [PATCH 12/17] add graph --- doc/Informe.tex | 6 +++++- doc/graph.png | Bin 0 -> 46334 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 doc/graph.png diff --git a/doc/Informe.tex b/doc/Informe.tex index aaa7ae4..25e114b 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -124,7 +124,11 @@ La siguiente tabla contiene los resultados de las pruebas de los 6 algoritmos me \end{center} \newpage -\subsection{Gráficos} +\subsection{Gráfico} + +\begin{center} + \includegraphics[width=0.96\textwidth,height=0.96\textheight,keepaspectratio]{graph.png} +\end{center} \newpage \section{Conclusiones} diff --git a/doc/graph.png b/doc/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..730f77d7f0a08b6179ccc00af6c7b6682a1f40d7 GIT binary patch literal 46334 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 Date: Wed, 21 Nov 2018 18:25:34 -0300 Subject: [PATCH 13/17] lol --- doc/Informe.tex | 48 ++++++++++++- doc/pseudo/bitonicsort.txt | 126 +++++++++++++++++++++++++++++++++++ doc/pseudo/quicksort.txt | 40 +++++++++++ doc/pseudo/selectionsort.txt | 31 +++++++++ 4 files changed, 242 insertions(+), 3 deletions(-) create mode 100644 doc/pseudo/bitonicsort.txt create mode 100644 doc/pseudo/quicksort.txt create mode 100644 doc/pseudo/selectionsort.txt diff --git a/doc/Informe.tex b/doc/Informe.tex index aaa7ae4..16ab5af 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -70,35 +70,77 @@ Xavier Canales \newpage \subsection{Quick Sort} - +\lstinputlisting{pseudo/quicksort.txt} \newpage \subsection{Bubble Sort} \lstinputlisting{pseudo/bubblesort.txt} \newpage \subsection{Bitonic Sort} - +\lstinputlisting{pseudo/bitonicsort.txt} \newpage \subsection{Ordenamiento por conteo} \newpage \subsection{Ordenamiento por selección} - +\lstinputlisting{pseudo/selectionsort.txt} \newpage \section{Resultados} \subsection{Análisis temporal} \subsubsection{Merge Sort} +Caso Promedio: $ \Theta (n log n)) $ \\ +$en.wikipedia.org/wiki/Merge_sort#Analysis$ + +Peor Caso: $ O(n log n) $ \\ + + +Mejor Caso: $ \Omega (n log n)$ \\ \subsubsection{Quick Sort} +Caso Promedio: $ \Theta (n(log n)) $ \\ +El tiempo de ejecución que tendrá el algoritmo dependerá de como se realice la partición de el arreglo entrada, es decir, depende de la selección del pivote +Peor Caso: $ O(n^2) $ \\ +El peor de los casos para el quicksort resultará cuando la elección del pivote sea el valor más pequeño del arreglo o el más grande de este mismo. + +Mejor Caso: $ \Omega $(n log(n)) \\ +Para obtener el mejor caso posible será cuando el pivote se encuentre exactamente al medio del arreglo, porque lo dividirá en dos obteniendo n/2 elementos en ambas divisiones del arreglo \subsubsection{Bubble Sort} +Caso Promedio: $ \Theta (n^2)) $ \\ +El caso promedio compara la complejidad temporal con el peor caso, donde n es el numero de valores a ordenar, esto es producto de la forma en la cual Bubble transporta los valores dentro de su ordenamiento + +Peor Caso: $ O(n^2) $ \\ + + +Mejor Caso: $ \Omega (n)$ \\ +El mejor caso para el Bubble sort será cuando el arreglo de entrada venga previamente ordenado de menor a mayor. \subsubsection{Bitonic Sort} +Caso Promedio: $\Theta(log^2(n))$ \\ +El ordenamiento bitonico responde igual a todos los casos porque siempre antes de empezar a ordenarlos realiza las mismas comparaciones para dejarlos en la secuencia bitonica + +Peor Caso: $O(log^2(n))$ \\ + +Mejor Caso: $\Omega(log^2(n))$ \\ \subsubsection{Ordenamiento por conteo} +Caso Promedio: $ \Theta (n + k)) $ \\ +La complejidad total es igual para todos los casos, porque el algoritmo usa sólo ciclos simples, sin recursividad o sub-funciones, va directamente al analisis + +Peor Caso: $ O(n + k) $ \\ + + +Mejor Caso: $ \Omega (n + k)$ \\ \subsubsection{Ordenamiento por selección} +Caso Promedio: $\Theta(n^2)$ \\ +El ordenamiento por selección no es un algoritmo de ordenamiento adaptable, realiza el mismo numero de comparaciones de elementos en el mejor caso, el caso promedio y el peor de los casos, esto se debe a que no utiliza el orden existente de las entradas de el arreglo para ordenar. + +Peor Caso: $O(n^2)$ \\ + +Mejor Caso: $\Omega(n^2)$ + \newpage \subsection{Datos} diff --git a/doc/pseudo/bitonicsort.txt b/doc/pseudo/bitonicsort.txt new file mode 100644 index 0000000..ec4468c --- /dev/null +++ b/doc/pseudo/bitonicsort.txt @@ -0,0 +1,126 @@ +entrada: array: arreglo de n datos: n: tamaño del arreglo +salida: arreglo ordenado + +funcion potencia_de_dos(inicio n) + + si(n = 0) entonces + + retornar 0 + + fin si + + mientras(n distinto 1) hacer + si (n % 2 distinto 0) hacer + + retornar 0 + + fin si + fin mientras + + retornar 1 + +fin funcion + +inicio funcion mejor_potencia_de_2_menos_a_n(inicio n) + + inicio k = 1 + + mientras(k > 0 y k < n) hacer + + busca el numero potencia de dos mas proximo hacia abajo en n + + fin mientras + + retorna k +fin funcion + +funcion comparar(inicio i, inicio j, inicio dir, inicio arreglo) + + temp = array[i]; + array[i] = array[j]; + array[j] = temp; + +fin funcion + +funcion unionbitonica(inicio low, inicio n, inicio dir, inicio arreglo) + + inicio i + inicio k + + si(n > 1) entonces + + k = n/2 + + para i = low hasta i < low + k con paso i = i+1 + + comparar(, i + k, di, arreglo) + fin para + + unionbitonica(low, k, dir, arreglo) + unionbitonica(low + k, k, dir, arreglo) + + fin si + +fin funcion + +funcion unionbitonico2(inicio low, inicio n, inicio dir, inicio arreglo) + + inicio i + inicio k + + si(n > 1) entonces + + k = mejor_potencia_de_2_menos_a_n + + para i = low hasta i < low + n - k con paso i = i + 1 hacer + + comparar(i, i + k, dir, arreglo) + + fin para + + ordenamientobitonico2(low, k, dir, arreglo) + ordenamientobitonico2(low + k, n - k, dir, arreglo) +fin funcion + +funcion recorrerbitonico(int low, int n, int dir, int arreglo) + + inicio k + si(n > 1) entonces + + k = n / 2 + recorrerbitonico(low, k, 1, arreglo) + recorrerbitonico(low + k, k, 0, arreglo) + unionbitonica(low, n, dir, array) + + fin si +fin funcion + +funcion recorrerbitonico2(int low, int n, int dir, int arreglo) + + inicio k + + si(n > 1) entonces + k = n / 2 + recorrerbitonico2(low, k, !di, arreglo) + recorrerbitonico2(low + k, n - k, dir, arreglo) + unionbitonico2(low, n, dir, arreglo) + fin si +fin funcion + +funcion orden(int arreglo, int n, int dir) + + si(potencia_de_dos(n)) entonces + + recorrerbitonico(0,n,dir,arreglo) + + fin si + + sino + recorrerbitonico2(0, n, dir, arreglo) + fin sino +fin funcion + +funcion ordenamientobitonico(inicio arreglo, inicio n) + + orden(arreglo, n, 1) +fin funcion \ No newline at end of file diff --git a/doc/pseudo/quicksort.txt b/doc/pseudo/quicksort.txt new file mode 100644 index 0000000..38a4e27 --- /dev/null +++ b/doc/pseudo/quicksort.txt @@ -0,0 +1,40 @@ +entrada: array: arreglo de n datos: n: tamaño del arreglo +salida: arreglo ordenado + +funcion quick_sort{ + + si(n < 2) entonces{ + retorna + } + + inicio i + inicio j + inicio temp + inicio pivote + + pivote = arreglo[n / 2] + + para i = 0 y j = n-1 con paso i = i + 1 y j = j - 1 hacer + mientras(arreglo[i] < pivote) hacer + i = i + 1 + fin mientras + + mientras(arreglo[j] > pivote) hacer + j = j - 1 + fin mientras + + si(i >= j) entonces + break + fin si + + temp = arreglo[i] + arreglo[i] = arreglo[j] + arreglo[j] = temp + fin para + + quick_sort(arreglo, i) + quick_sort(arreglo + i, n - i) + + retorna el arreglo ordenado + +fin funcion \ No newline at end of file diff --git a/doc/pseudo/selectionsort.txt b/doc/pseudo/selectionsort.txt new file mode 100644 index 0000000..22b79d3 --- /dev/null +++ b/doc/pseudo/selectionsort.txt @@ -0,0 +1,31 @@ +entrada: array: arreglo de n datos: n: tamaño del arreglo +salida: arreglo ordenado + +funcion selection_sort + + inicio i + inicio j + inicio temp + inicio min_idx + + para i = 0 hasta i < n - 1 con paso i = i + 1 hacer + + min_idx = i + + para j = i + 1 hasta j < n con paso j = j + 1 hacer + + si (arreglo[j] < arreglo[min_idx] hacer) hacer + + min_idx = j + + fin si + + fin para + + temp = arreglo[min_idx] + arreglo[min_idx] = arreglo[i] + arreglo[i] = temp + + fin para + +fin funcion \ No newline at end of file From c5feaef796a5977d7138bcb5bdeec304c05046a3 Mon Sep 17 00:00:00 2001 From: Rodolfo Cuevas Date: Wed, 21 Nov 2018 18:28:53 -0300 Subject: [PATCH 14/17] added link --- doc/Informe.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Informe.tex b/doc/Informe.tex index 3871c20..4420efb 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -90,7 +90,7 @@ Xavier Canales \subsection{Análisis temporal} \subsubsection{Merge Sort} Caso Promedio: $ \Theta (n log n)) $ \\ -$en.wikipedia.org/wiki/Merge_sort#Analysis$ +en.wikipedia.org/wiki/Merge\_sort\#Analysis Peor Caso: $ O(n log n) $ \\ From f03fe103c8ba4b2b48f5cbc00b9dd2b2d0a1a7b0 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Thu, 22 Nov 2018 20:02:30 -0300 Subject: [PATCH 15/17] finish up the informe --- doc/Informe.tex | 103 ++++++++++++--------- doc/graph.png | Bin 46334 -> 57854 bytes doc/pseudo/bitonicsort.txt | 169 +++++++++++++---------------------- doc/pseudo/bubblesort.txt | 28 +++--- doc/pseudo/countingsort.txt | 22 +++++ doc/pseudo/mergesort.txt | 43 +++++++++ doc/pseudo/quicksort.txt | 55 +++++------- doc/pseudo/selectionsort.txt | 44 ++++----- doc/resultados.txt | 41 --------- 9 files changed, 246 insertions(+), 259 deletions(-) create mode 100644 doc/pseudo/countingsort.txt create mode 100644 doc/pseudo/mergesort.txt delete mode 100644 doc/resultados.txt diff --git a/doc/Informe.tex b/doc/Informe.tex index 4420efb..2a56e85 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -67,10 +67,12 @@ Xavier Canales \pagenumbering{arabic} \section{Pseudo código} \subsection{Merge Sort} +\lstinputlisting{pseudo/mergesort.txt} \newpage \subsection{Quick Sort} \lstinputlisting{pseudo/quicksort.txt} + \newpage \subsection{Bubble Sort} \lstinputlisting{pseudo/bubblesort.txt} @@ -78,73 +80,82 @@ Xavier Canales \newpage \subsection{Bitonic Sort} \lstinputlisting{pseudo/bitonicsort.txt} -\newpage -\subsection{Ordenamiento por conteo} \newpage -\subsection{Ordenamiento por selección} +\subsection{Counting Sort} +\lstinputlisting{pseudo/countingsort.txt} + +\newpage +\subsection{Selection Sort} \lstinputlisting{pseudo/selectionsort.txt} + \newpage \section{Resultados} \subsection{Análisis temporal} \subsubsection{Merge Sort} -Caso Promedio: $ \Theta (n log n)) $ \\ -en.wikipedia.org/wiki/Merge\_sort\#Analysis +\underline{Caso Promedio:} $ \Theta(n log n)) $ \\ +El caso promedio de merge sort es lo mismo que su peor caso. \\ -Peor Caso: $ O(n log n) $ \\ +\underline{Peor Caso:} $ O(n log n) $ \\ +En el peor de los casos, el merge sort hace aproximadamente un 39\% menos de comparaciones que el quick sort en su caso promedio. En términos de movimientos, la complejidad del peor de los casos de merge sort es $ O(n log n) $ la misma complejidad que el mejor de Quick sort, y el mejor de la clasificación de merge sort toma aproximadamente la mitad de las iteraciones que en el peor de los casos. \\ - -Mejor Caso: $ \Omega (n log n)$ \\ +\underline{Mejor Caso:} $ \Omega(n log n)$ \\ +En el caso mejor de merge sort, el merge sort funciona mejor cuando los datos son secuencial. \\ \subsubsection{Quick Sort} -Caso Promedio: $ \Theta (n(log n)) $ \\ -El tiempo de ejecución que tendrá el algoritmo dependerá de como se realice la partición de el arreglo entrada, es decir, depende de la selección del pivote +\underline{Caso Promedio:} $ \Theta(n(log n)) $ \\ +El tiempo de ejecución que tendrá el algoritmo dependerá de como se realice la partición de el arreglo entrada, es decir, depende de la selección del pivote. \\ -Peor Caso: $ O(n^2) $ \\ -El peor de los casos para el quicksort resultará cuando la elección del pivote sea el valor más pequeño del arreglo o el más grande de este mismo. +\underline{Peor Caso:} $ O(n^2) $ \\ +El peor de los casos para el quick sort resultará cuando la elección del pivote sea el valor más pequeño del arreglo o el más grande de este mismo. \\ + +\underline{Mejor Caso:} $ \Omega(n log(n)) $ \\ +Para obtener el mejor caso posible será cuando el pivote se encuentre exactamente al medio del arreglo, porque lo dividirá en dos obteniendo n/2 elementos en ambas divisiones del arreglo. \\ -Mejor Caso: $ \Omega $(n log(n)) \\ -Para obtener el mejor caso posible será cuando el pivote se encuentre exactamente al medio del arreglo, porque lo dividirá en dos obteniendo n/2 elementos en ambas divisiones del arreglo \subsubsection{Bubble Sort} -Caso Promedio: $ \Theta (n^2)) $ \\ -El caso promedio compara la complejidad temporal con el peor caso, donde n es el numero de valores a ordenar, esto es producto de la forma en la cual Bubble transporta los valores dentro de su ordenamiento +\underline{Caso Promedio:} $ \Theta(n^2)) $ \\ +El caso promedio compara la complejidad temporal con el peor caso, donde n es el numero de valores a ordenar, esto es producto de la forma en la cual \textit{bubble} transporta los valores dentro de su ordenamiento. \\ -Peor Caso: $ O(n^2) $ \\ +\underline{Peor Caso:} $ O(n^2) $ \\ +En el peor caso el arreglo a ordenar va a estar ordenado en forma descendente previamente. \\ - -Mejor Caso: $ \Omega (n)$ \\ -El mejor caso para el Bubble sort será cuando el arreglo de entrada venga previamente ordenado de menor a mayor. +\underline{Mejor Caso:} $ \Omega(n)$ \\ +El mejor caso para el bubble sort será cuando el arreglo de entrada venga previamente ordenado de menor a mayor. \\ \subsubsection{Bitonic Sort} -Caso Promedio: $\Theta(log^2(n))$ \\ -El ordenamiento bitonico responde igual a todos los casos porque siempre antes de empezar a ordenarlos realiza las mismas comparaciones para dejarlos en la secuencia bitonica +\underline{Caso Promedio:} $\Theta(log^2(n))$ \\ +El ordenamiento bitonico responde igual a todos los casos porque siempre antes de empezar a ordenarlos realiza las mismas comparaciones para dejarlos en la secuencia bitonica. \\ -Peor Caso: $O(log^2(n))$ \\ +\underline{Peor Caso:} $ O(log^2(n)) $ \\ +Su caso peor es lo mismo que su caso promedio. \\ -Mejor Caso: $\Omega(log^2(n))$ \\ +\underline{Mejor Caso:} $ \Omega(log^2(n)) $ \\ +Su caso mejor es lo mismo que su caso promedio. \\ -\subsubsection{Ordenamiento por conteo} -Caso Promedio: $ \Theta (n + k)) $ \\ -La complejidad total es igual para todos los casos, porque el algoritmo usa sólo ciclos simples, sin recursividad o sub-funciones, va directamente al analisis +\subsubsection{Counting Sort} +\underline{Caso Promedio:} $ \Theta(\frac{n^2}{2}) $ \\ +La complejidad total es igual para todos los casos, porque el algoritmo usa sólo ciclos simples, sin recursividad o sub-funciones, va directamente al análisis. \\ -Peor Caso: $ O(n + k) $ \\ +\underline{Peor Caso:} $ O(\frac{n^2}{2}) $ \\ +Su caso pero es lo mismo que su caso promedio. \\ +\underline{Mejor Caso:} $ \Omega(\frac{n^2}{2}) $ \\ +Su caso mejor es lo mismo que su caso promedio. \\ -Mejor Caso: $ \Omega (n + k)$ \\ +\subsubsection{Selection Sort} +\underline{Caso Promedio:} $ \Theta(n^2) $ \\ +El ordenamiento por selección no es un algoritmo de ordenamiento adaptable, realiza el mismo numero de comparaciones de elementos en el mejor caso, el caso promedio y el peor de los casos, esto se debe a que no utiliza el orden existente de las entradas del arreglo para ordenar. \\ -\subsubsection{Ordenamiento por selección} -Caso Promedio: $\Theta(n^2)$ \\ -El ordenamiento por selección no es un algoritmo de ordenamiento adaptable, realiza el mismo numero de comparaciones de elementos en el mejor caso, el caso promedio y el peor de los casos, esto se debe a que no utiliza el orden existente de las entradas de el arreglo para ordenar. - -Peor Caso: $O(n^2)$ \\ - -Mejor Caso: $\Omega(n^2)$ +\underline{Peor Caso:} $ O(n^2) $ \\ +Su caso peor es lo mismo que su caso promedio. \\ +\underline{Mejor Caso:} $ \Omega(n^2) $ \\ +Su caso mejor es lo mismo que su caso promedio. \\ \newpage \subsection{Datos} -La siguiente tabla contiene los resultados de las pruebas de los 6 algoritmos medidos en segundos. Para las pruebas usábamos un computador que tiene un procesador AMD A12 con 4 núcleos de 2.7Ghz y 16GB de memoria RAM. +La siguiente tabla contiene los resultados de las pruebas de los 6 algoritmos medidos en segundos. Para las pruebas usábamos un computador que tiene 4 nucleos de 3.2GHz y 16GB de memoria RAM. \begin{center} \begin{tabular}{|c|c|c|c|c|c|c|} \hline @@ -156,11 +167,11 @@ La siguiente tabla contiene los resultados de las pruebas de los 6 algoritmos me \hline \rule[-1ex]{0pt}{3.5ex} 100.000 & 0.170[s] & 0.300[s] & 0.124[s] & 11.645[s] & 30.269[s] & 32.347[s] \\ \hline - \rule[-1ex]{0pt}{3.5ex} 1.000.000 & 0.173[s] & 0.304[s] & 1.405[s] & 1,262.000[s] & 3,026.900[s] & 3,234.700[s] \\ + \rule[-1ex]{0pt}{3.5ex} 1.000.000 & 0.173[s] & 0.304[s] & 1.405[s] & 3,144.000[s] & 6,717.674[s] & 7,248.000[s] \\ \hline - \rule[-1ex]{0pt}{3.5ex} 5.000.000 & 2.000[s] & 1.577[s] & 7.421[s] & 31,550.000[s] & 75,672.500[s] & 80,867.500[s] \\ + \rule[-1ex]{0pt}{3.5ex} 5.000.000 & 2.000[s] & 1.577[s] & 7.421[s] & 60,951.000[s] & 139,273.286[s] & 153,273.539[s] \\ \hline - \rule[-1ex]{0pt}{3.5ex} 10.000.000 & 2.400[s] & 3.236[s] & 18.365[s] & 126,200.000[s] & 302,690.000[s] & 323,470.000[s] \\ + \rule[-1ex]{0pt}{3.5ex} 10.000.000 & 2.400[s] & 3.236[s] & 18.365[s] & 243,804.000[s] & 557,093.1440[s] & 613,094.156[s] \\ \hline \end{tabular} \end{center} @@ -174,6 +185,18 @@ La siguiente tabla contiene los resultados de las pruebas de los 6 algoritmos me \newpage \section{Conclusiones} +Basados en los resultados obtenido podemos poner los algoritmos en orden de mas rápido a menos rápido en la siguiente forma: +\begin{itemize} + \setlength\itemsep{0.1em} + \item Quick Sort + \item Merge Sort + \item Bitonic Sort + \item Selection Sort + \item Counting Sort + \item Bubble Sort +\end{itemize} +Al final resulta que el mas rápido algoritmo de ordenamiento que probamos fue Quick Sort mientras que el mas lento fue el Bubble Sort. +Los resultados de tiempo de ejecución estaban de lo que esperábamos dado el complejidad de los algoritmos. \end{document} diff --git a/doc/graph.png b/doc/graph.png index 730f77d7f0a08b6179ccc00af6c7b6682a1f40d7..63e2cd9ce0f3c1a2fca68d3987b01994ca263bae 100644 GIT binary patch literal 57854 zcmagFby$>9_byCJ2uLd34T?09l0$d5baxLSAl)U6G)j+z)F9%}jdTfvgyhi8_u%_` zzjMwX=Q{8QTyyPb@Aa&`;$G`s6QiywkBd!?jf8}Rs{oSGL_$JdMM6St$HV|WA-PTz z1OA|SN-1b#0zY6(t7s%7S|kOTx7vPrd-?ugW9zerRZm;UE0d|nGK#Vc0ZihqYIJKh zb!zGg^HCh09Td&3aP6B-N(eVC()q zYsHGWm3Mw~)N^yxzss}(bYR6(G1loXzLf|3V$C%>m$1ebvnr0(D^q-W{O?0#Y+W(% z&&CT9Gg%E{*@4&WP~hX(R7-6z32bbxX8e}Vi$ABC5p{q3R{Q#6ZlU6BeDNhFuo{7y zTNqw0e{hwAS76--xSnvcqDBXk)dG^N zM&y`+cLiep%h`yTz~1?Os94E&RY$hl((jXcuG0^UcdHb(ipzb6*y78uB0Fft2Tyg%3&2eMZLn;yd571K&M(#_}nimGRpX$2X&$$3iP@R`U0L`?FYRD58i3#rxaKT)ugM zkS;iPhWUv=?oNW1L_LH6u z5BINHMgtWF{rQR&%mdkQQsW)a0BXj0ZlXo`+>ewez`qhR>B{nBxo?Cs`t?)*+g3t?mX<&XD)?)}m?UJu5f zJhpxweqNx8#bbE(MftX1BFZwO!o>@*dGL{E|M_lF5Jvm`Z^FbSPmwpMZo6uvh_4i` z8@8)>JFIw63pBW1@I*`M%Ii$pr#&6|AX8xsi|J|$m8AW? zu2=ZPDN*>!*e$Mrgb5#rgVb!5tifxYy882Yo>fHlHFlKutz=MjSMpyKX`|I7kuVdo3e+9cN4!^!E9f|B@ z|Kw5ivKhq{W-k52$q1!Az5L=>!ZCc`S19$XZOvw8-|9Pm`B1gy?|9brTJGzsZs#2) zt#|nYGU5Rd3-3tGU^I3cRjlIgZ0y%1qOftGqQzS`n&ySa(8Jw3PZ464d(XM{;;miD z9f4<}5vgDD=U?pv9NX^g9+SBM$4PYF__&DvS-hprGRV8EqgdQTw3K_CbqZD;u|uU8 zfcTCf%ZK;MDRQ|*ZmOpY_0pD?Qg``+pTe)4Y*X8@^wTBIf0KaWe)VH^5SD}K0ZBo_ zBmV!$5=!*=FDftDV~dGt^Eq4Sq@*98DnpvT@$A~zyen_G zZ-CRDzlkZYLreNOJg>w0@41bq6m8<+na_)M+~;nedUfD?Z7!t-nHu+AIMA3!)yaKx zyA}s*RV=2imBwzMmFq+FIS`?WH=?&wR}tf~dWgL!k@{wPhCkg2d;HcEs-nK4X`|op z!z?`=)JkyiXMB%$MKVtY4nu~D8g9O=|5SwfIij-Tt`q|~gjF$7=qhXIa{s*=_f3Z0 z{2yqAfmmlwX8ZjRG-NI##3ayVbf1hO)Kvw$;gm(>WGu<0r)`&Llk*xmoif|g2pcy6 zOd^YrXn2skDlqDbk)8_s`GAbVq%J1NVuOZ)Ol~A@sSFcva#;R(Ze3#6;Cv5tLX}tv z;Z!1r3pX%OxzjFT4OzN<8}cbsJXc5P5W_BR4+|_?H_yC*rx#ip-L1UIs7zvJ+2fq4 z7YSLC!{ONS`vQeGTOEVX)o#d#3Pav62mgv#Zj5MdW>!>^-xQywFvBrgi5g|5MS@ut zIkA|_gdA!|#ysBJ%G51m`r*@}7&&oqD+4dDCL+v;?LCKzZ^i!aPnKg-n$Y)=zCcNW;cWm0~9VhfG7)o?0+-3NU*|(RN_7S!CC0ZL$`mR(&B5kSv072x52mcfFy>y|%*%*|zRmp6kOJrJ_x+AWPxH_7}Xw zhXrS^+Y7A9{DJ9^&alIML1qi1v)OHjwpT3ci`U)zq5<6>M9<`^5ZbOIdrDVtf7_@E zot$Vp@!~nz+3OE6_;Rfs_rmS{FAnnNHKQNBgJ%AiG=2Zz-f&lw^$x5$Y-h@i-(HoV z(RZ7Mi%%m%i{#k;`?zAJ;h><5(`i7Zi0FH)sy=D>!n?Ve#)`4ys}VOh9aZJIoWFOt zB8A7+@XsqOvtI5CWv}XYuH-Rm9x(TWsHPXSAbo2~UOgJas|}2{&BXM864#}J!Qat> zPo;vA>Yalzz7XD=nFbDz8lN9&_P^iG$e>m=3gl?MqksP$d3n}3bW(ABq7R#WnF13{ zf8|@cy`@bo=u99*Kg4AZX;HOWTJ2T1dmC!R*5f0d;-nndqauO+93sL1=z-&*0-~iY^rm1S*6~`RCTX1JBUpW!)4PExGogR zR4G{?z(7<^rqo;U^*fpCH*JeN)avB|T*9nBMAzOww_e;+ahjI+oagmoqMssNJCRwN zpT7lN?z=aQkK0aTabA$At7?u$cTZE7YVN_^A0=F2vLrx3uOA@K=PvWEwCkG5v;Unj zJn@Hg^`ZOu{O*k!vi0(;T45mF7WMRxf~{pdKaq)~)f3K_?AN?3h1dQrS9goXoySNn z^C1NAzD&1Uc#~Ik(AQ6sotf4RPRoR|UWc`CpK{))(dhL5bwIqef%aU9-^r+Sw)lhU zC*shqj_L1QeS6=B)+)D%?x=>|<()NA)PL+mD!ieeUGXH45Z$sd{0JRp>$)ckxtty_O3Ac3P3b>8+OYP(APwFnEd zekP1SuxrR@^`7w6$~TIsQ7Ep|;uIv9ZJNJ*i}8;mDotaLypeenPnO2h!wfw?Zi zLC;d&tK@@Dgs;5&b>mWLVAC|n9SB`un0p2(zKbeJ%cv08_d)tPU0@Tkjiw|e^76# z^ChO6+|MR**enFxbHmpxV6liSmziLFy`BGJwq0L+;0<8kb@iNauUd^=8`e-`=ZIa; zz>p9dUdqfy`<@DuBNt+J>3UybG_ku=w44JK*;ros&(ol){E_1Is!Qx4NSj*Kj*15N zcP)ACtz;8=U9anhJ{SFW2ymvAOBxFN01QGb78TWv8hH!G$0AXkze=@Q#MZb za{@PV$W3Jc0=X-?NlEtVhvp&1!%2t%C=Cm-8+<)+tuRV zr~la|o(QFvia^~~CM61xTtr#Tg|L_tOBJ)GE+9hPwA#GSQQ0YcZ(deLgp=ueXKo7b>s)AKYG9!mPTx8?qQ_#2nV1+TIH5gWrA%~y5t>@p z8wZ_D8@t0u%12mV0BQH3h|TPK2T}29Qo6QlP>|Tgk|#b(z84`8iz=V9>f2BDwlF=r z!Imc~7lVC6k1K)-$9C@gN5{~@-vZ^&nwvgMP#$=@`9AXv|ILZ#%$m^I^HT8Y|L$t( zbrIgSOuYH|`4LiA{C7-oY~OGkAX&`tTcfnPC@H!xRaNa>hkJXBlz3ks?r&^o-C!BF z0oTNctVGenpb(rP(}I!4*G&p+tBNbRf>9=YCO=<2#*UNTCs#)Y!knu-@>)=-R(PU_ z&{m$OaxU^I=B8w^R@D3G9doP?QbA~@2%u(Tssgs-|HF|xGo!1hq@I1qW_6#pC;(w7rXc5de+ZC(jMpaKo>$bee!~9Ht8PHMj<0c>T@cWyfh>bs_L6%a zm9fvfb@|8(Zt0pmDm$-*r6pxqSy`V1Y7EUUbxqsszFA$1v4`XRTGW7o%T+)M7dC`i z@)1sp%+D~raO?$2rp&on<&G2;6#+SjEO6{5bZV2`TS#Dim)`WAN@wTyZN6R(2Bi3+ zN0Nj5{Xt*!a(=UYh!XdYU4IQ&gPQ4Hw#brp-J*BR-aZXi8@uvj$Er{0oxK4m&hwXO zgzv~P(cGH7X&iEg&D~|>q}qVz-{*OojTcuL)529bV&ypvAQ2`$^RPxT0|pZ>Lo>70 zPPxCvN~EK;wJ+~a3LmVRRBTv5aRFtRrV0vJCMG8IP7}pdOXl~$!%>|2^^zTz0j)9N z(tPB=-Na@sl~p$>8eQz~?GeNC>?SfU`u+YA!{kpB$)$>(0V451V#34I6-+eS1c|W; z;$VP5^h0C^Z~?cp+b%kbojQnKAn=BT^Y6dw7r&=ii zV!Y}+C1fegYrh-E!9DRcKybb4x`ntSR9a#}%A2%487UWSRcmeSZaj!s5o%)*eJOp% zqOfDiMuwc+bbzxhzD>;lf61Xpx=ocI*<;ZgPu630fBZ4MP+{dK-Sdh8p!|4U%wpm3 zF+Bjop9~ob?=36wUoGEHR?o@Q@`}H4k3*-tK7ht~vxR4sO9SKL;_O{r1;x8X9-nz) z06YLPx|lBJa0LRU$DlfUV3byLDG}I=F+QgB7jORyB0va^ZVU;c`h3+uSu$q9RWPrL ziVE8-vvStByfW|pY_9Vg5s{t0e|f0)g#$Tq3&!(I${8uy$Cs8k*H38`Eb0FUzmMRu z>`MerN#YKPB3X4?@!#?eF)=e61K#90IR!<6YQ3grO_6%E9iIbOGlTepQp_=90#?6a zxNe6uzQ2}eNk@nAFeCk%HchfclopZ=Im;O*I+o>nW4VH)Z`&~`kTr;YtZ|c&ki?Vo z4_=lsTc>_}C-3gwfGHwXl$_;5%BD)s==Azd5dNFkgl%3P$Utbenl+V`+~N}=L{&Rj zDuZaR*xFD|F3<_-Ew6>Ww@viz2-(J}X#ll|(zS;9pKed|vgosERHRq-8o2T&OhsCg zE8xZO$^S0`<{DHKQO61_+5HD}2X{eaz zOwB}V5hl2dkr|)PYMkm>Dyz5h7*z7Fudff%ze>x>e#laoY5WZ`xX2*hQE-bb#VUw+ zjcfp4XVC^{{xNeJpdf2rJ-Q~)=c4Hwv>--$1u$;Ocq z;6-H%xxaIH%87J)PhQdM%e!Tp`RdfV0#JrF3qMJNbr3|FzDr<^3yD1c{3n z)aBQ&U-cF}kzvop*@!wL8r-<|(XyHu3~1#O$Yu5Po-ev~bz*-W<9>+XfWG54nn<7) zTc|t|`e7RY@fBF+b`F1oyfXJXuhMIxSQd%wqq_&JR3S|{_csTi-)i^_d{@rjUwC9> zL=ML|uZCJh^?cMtt{nZzuzWsX*ZQ0`dnal8Zk}>{omEyiCn5Wa-I{>XZ@;74rtfjjNVV287%&Eg-1Snp*7s2dRwkpQfFj!3-b~qCVm~GxtG@{ElJfFM@7)=) zq-O2QV~Ml8{mRCoqPG!8Gcz+e0&fvWfHSZXE+jH)n<^2AC#M9sI64l!$Y=|y@r!FF zvwr@#P3bPeWMX_ceZgV&;?ZOLPH{G6<->4IWq*e!C?0-;<3Uf$URh5^cGJ_X$IH;u z@2NwQ9xd_!93WgVwmhH{S|-y~J_RLodSQol;H~{7Y^q0K(aCZFjhvhu(2B^TR#HCq z2|mL-`mtD*&7)^?%0aj9I2gG?Z(wSw3WUY>J&00o;R$aF=w~BV>=W5lMQ; zP}KIU*P@08;$sYS62$nU+TbhX{3bHYel3kYAU5Rjgh=Pb+F3mTr(Q_)!S*c1(mFgg z7F+!8R12tDOi9IX83}{n34&RIt_3WGh4__6XP+Eb?}5T{fE;xPf%`$KC? zc2+)#+PQJxmb+cWpCluPlxC{1uAiPTrqo1LGcplS6+h42d&A7>yNBn`Lwb?howvyE zW`6wwqN0wOBZky)I7uZ0&ib$-cAgpF>H zU34f&VWf)3!kz$oM+rXa?rDCjLCi!2B%v*RWXD~-m}%1?$mQ%h$PiKU`EyZG5nb64 z+sAgQGNblUbU?dy4JkWgzD~){ymOk7ho2X)tpG8|>VvWvbghXiXtKYG+>&fDv3WH( z&{BkQC#S-nF**^Af^mF&T+-UQ%$^q%XHD5de8#+q7ilC7lgbEW~e_HPa*G4q#9lKqwvmX#~c)uU}l~-bhwOs-cfytf0Xkh7I6dEs9lM=fP06jTkdnSCmvR zUiuOc(EWNhGdM6Y!j+A>hR?iP_|4M9pye=mhNm^vDsogvAtmcoPji*GE-^rPnj55d zs-J6o_K{w0C{!eK)KDqQul_|UEr#hnriQ1vKx$~LL+8X9g1l%iYZ!B!3;>r!C%vP_ z!V9G~KXiRm%Wqw`CjURN2mQ_E&Zs5tc0C+_J!9PvVBs$GR)13YWadWGZKF1WQ4%s6Vuh99NwSl_4-Aj3v%}bV_o-#|ZnV;jzlg>pXaK_M+|A+tF_@^r-uYT9r7_o23yB zJ@Yd|4(#OU;EFo4mmVW6;|$bO55YjBCuZqCy;J{3Wx|Z86OmPtq*9+nhNe#8ZI0;$ z$6X0RGmjU{2Y$hG6C0c`wxK}K6 zyo)P#AWK{dobJVnI!sGQ1qoTPNF>vh`yZiU02Dv z5t2T>>o(D{F6s>$YENtc)#TZwO|io<@$Bx0j_$|J{XfwfXt# z%uXS?4V#LD(tmsPgRkAjuIIu3s^avGf@*{^Is{$u+7sKO&G6v9wto@M6wVFSR?n?- zuc5lH-8Bon?Enulht3UpHI}70pU~2T$Z|B<3U4tOkCtB-VceQ_^S(ulw;lHy0);c0e&m^X@65pIr zmlj*Dg=m9=MosWddTxjC;1CWPy2g8kdbpSNtOlg7Z0WLJqo9$NUw|c%aPI}hyP@)KBV#-ClML8NQF2_J@aq{VpgoU9+VvpUerwKkYu{c_A2Y zJr9I!3W2)fZ{MQTS^LYW-h5Vx4Q4vOR0Kq^cbx)#dqP`6Xf~+Nx>5|-Tzqt$b=~ES zxvMijq&JNJR=4E+>7`FR?!+5NI7B68ro=0&)=MDYhd)6M%#-&_VcX9y4$uwa%XB3a zy3*7)s~{{QG*S2UoT6pF(MXAuy?hZ|Dq~1UN$V|@Zk%FvM?3iG^@PK(+@A}sV;4Yx zX_}KyiA0k}J5@)2HPJu29N&{h!Aitryno5g!J(47X2iF@=XnsY zO&;9PW2xNXf!|BB+abiJ1q z>|XJ>8Xfz;#1CK3!yOI%ltZA!tTyV1GvP;8Wy+w|hZ>YrM^U7neEvGeDJ3$ZQcLP5 z8{0AmI@h;jynL*nM7`-zRIxrmG9ZwxY=u8vOAE81OE(54BgPQL3&P97(9S?`AW_m{ z{O5yRh3D586y*}Dd^rJXvV$kjVq_|-s(76vf%5E3*p#}On=$aq%>jv{AsB~@1WL_l zMVJ2LEfAYFj?F(DP_K$QZ1H!tr|*n?3?-gOd*-gVIH`fJdj#|>3gNJB?41CxNX{2R zl2K%1bU&{@XxHhI9C9i2;8;z&$KWl~*BQDk-i#jB7u=lq=CFA;~C* z^#NJ2+v^t_+j=_W>8G*s7Qjv^>+p0z@|>atsTzgfpaL^xbL^yX)@LVA;&v1svuMLx z6ipd5wx>YraLcOw(W=Cqb0>19DRvxc%biPZM)h`BH*f`%8DJPBP&9I9Qatjjf1A4X zKsY&v6lJ;?v`Wlk#Gr)9v~LKVxD#Sc%^K$hjR0R$Z8k~(f~Y{X;p$xz(OqVIqK_*t zTSMRMX@ukT$uveb$N;0?h9zPWK)i)%L%Ix62iv}HD`pQSA*YrUtQ%Drn1^)xdaX0etvxVT^Y&YL|7Gy zIa<9Q8KnlUd}8Pwd*lk-aq&EK6w$;Pw>^k3T4ns&H|tfDwDXQ-s_<}*mhML?H|gZK zG)V^lCdr6*MiI{XO+{lx*hS{az%gZaCKGnQDnGumsG0EkWqW;6HizU8l?uEj$=G&c zFe-POgH+)xPG_H9*d<3S#kErafW~>uuXllJpliD&xf4thLI!}Hq77;Q-gA_S^a)z; z>pd%<4J@HxWPk`Q3%Q#0(_iavl#M4k>7MWNo+9A>|p#S(Z z76>foau?p2F~m1p0N3_t~|n(tnSlGW-Sp5ufjY2VvP&l5YG=0(Mpro1#JJ$ zPL8Io{>}9WX5&{~(s$3KRBygqa&*4FQ)X{{l=@kA0C<(1=GKxp4i+D)R)mw3&M!8F z7rmbN2IW8dd$G{Ua>Pbwwiiwm?RFl3vX+!_3W=W}{UX!ycvKVZq%5@1$%*d8Q;0`Y ziv6n5qb!ch9Qi;CPx`j|RtO~BSKWU_+YAtH*ZTky&O~6`2`j ze`}7v<2VE=2w)AhS!gK9cL?W9!l4ls?g52URyj~S0V1Fx%CM7R`NUEM!X_KpxJRBEpl00n)YRrS&bE0pP9b6Di^L@*p;20A+?ru^5qA(lSk^ zMMOA7gzJg~{*xcDMwR3RT|R4V>qAmA0^)$&G~&|u@CfAyv?xr%#r`jr=@gIl@3xCb zkSn2Q7SRG_Tj5+$v+hjruP!~7Fjm}R(9Ue0FOab&ea=jh_Q+Vd0v=7MX5KR_OFCqE zuPLfe#Z~}-XJQE7M|k)Df*WlEmzDSi^}S@b2<-rf3@2^ugYzPrMqPo!h8WNc=>qEF zd}3EV^N}NNE-+y-;r>o%@&}?bMK^UEWI!Dtr^O@oo8HXQpyk9xWwLp}edBFsxtw!V zS{QONJ)dT;^Z-znDarw0ST$A<5)^p6kzrW9*1YLR2t+qcdezS75MV&f&@Dq6&s2?Y+WOq+%IRHuF+eV7fq!3uquC9*}C^_yQ}_`n50=s&|@e zJ{j$i@*jIqs_$+jLV;*@GWYecHEULI0zsKwy12?6Jz4xZV*&0M5RS|AzC6#mc+Bnq zFuKW9peCPJDxfqQTj6r8=y(a_c)oI3d8waR9@h#gtN2&|ek219ZG76;CrEJja{u1c zA*l{XDD>d+l;3FYt8XmW8Hg~^+GJ-5ES6`51%dO(+|3T}zKsb(i_|OCPC0ND(rOfx zEAG2Hh?ud`MnQ)o{OOPP^)zR+SMAzZ$@B&gjN`4B@**wWUu_l;UgrnBA14}*oQOSu z!xu%4KggWkOyjDd9tVJ#XszE(RepUkHJTj0lJ)}_R8de03cC9gyaM55_NukKImeh4 zU`R`;O9!&Z;wKGTe9b&MBD<6ff2nd@b*r@6KEVybD=GTxW!oV_bG%O94xSjai4^m2 z;!>GBLT-fd=}Smz@5<^WRs)xFZJo+Ob7Y?@RH%>iU*$LM#a~OSt+{@kV{M@P`Accb z5s(ZOCp#+ClWBzrouVH*BS3 zRE1(ayRfZ2c%HqI0vlP*F@%tOQk!3Gp_#dF#t$g+Qb}9Fs>bK2qPZSeU@%ziVam5n zj-olXf7L>DSPL??+UYfeUf4&q8=)?r!z7>$Bn)T(L$=a}eI{$bUREH*<6sf)NXWL* zLBC}RYGC-d5qCt24R{O<;4vuaqgm3nwiUaMz~b6joS+(wA6BorG0I-G-Y@q5TC9TU zwn|TpD$)R1Z$B|OSA4(a5}OckgV$X5K>s8b_mj^?&WdB_4!ya;E<&vF?Jkeq!_)dt zPT0gMF#O4khX)iU4$;$b>Bc6eb4_OlhvLpoG5FX=;MBc8i&`_maD?B2cI*zW0Je3p z&T*VErm1+%S@}5iX1?PlVoPMja>thREzbFJ_vXeBzV(mKA*hZK_Bc@=%JWH(&Vlyf z!2{3}m$bLH?=AE-dbDwzP1veeN=kaA-2Qglj;%C%((MtYPpb{zMMw~V(Sf7YiP-Kp z_tC21Tbl^M2e%melgI=)C^izjFX{098t5w*Lm&?)e*ei1Z8O=DgN$`PSr)Ve^%2q} zlrP)=7}Of7kCi=9{f>qHu5TZPj~5V%GrF3gH`=*e8Pp@oU{;3zh&;7P{tK_Q z?#y`O*VG@9B`a2nHk8U+PhPbFC|vGGKo#-7q|eHjr?}NYwA!q*#}7==i5-vzhm49T z-%Rq=o5MH?kM?sV;6o2LkLm?9^3OclG~U3Uz2Ki{>JubSAkTMWk`W@LM6zd-odS8F zbTl&^Mm+bsZi|an?h1A93i%jRa3jE9p{;dt=5fEZmS+Ee5Lxp0V?4!-N09)|AdU=3 zblr&;u4SQC*hc6OR-z_L#!{K`BnRa!Cu_QS570>8cG>`iy@n4Z6cBFLla=J~b8=PAt;#_wCq_wkKhi!L8t?c9W&7 znMK9u+1}3?lU74%b&m)GI0WGB)*Tt0>MgEM-bSL*c4Nf&tzkZu^<#Lf=y|ZS@oK`7 z4umos?=M`d=bq84J_}7GkquGBh{D?6oa!8>d##DFSJ7an}99pbb z1!G0E7h%=mB)Zxm?=vK*yCe3G11Sc)fSV6`q1dhSMp+(O&Ju{Vj=xETWSsYP#L zbqJ@$d9z@f6Z+t!bkVfFj+fK&f{#58IEc;4vlF;iO-;?zrd2^=Mj3E9y1e2kF3*8H zoe*+xH2C3Yhu7<@jg;?Q%wx(~ehSzDQCoN91IzV$`n6yokUL7p_gD5?4E`tqL$0)F zl*khw)El}M7mtCy9E|r}LsqoHC?8?3Bvt4Si^?AyHRB!!mqhlvAThm;#%~c7&3x{? zjh5fwU(X^rhyL;Iuesh37K^b>w4ebT{Sr}>Q{sTRD)--n#xv8 z?0RU#`7AVb0o2xpFiNUJn|OV9g+~~nrr4fF4B1C}dV$7Zf3ejq&0ge*{&OWt^4Z`n z?KdhU{1E>}i`~d1>grEkT4rX2XZ&VUpl4K5py*RZSzS%aVyDyuepCD1pA){pW3CrD zqbW^h@HywM!NN`D60ut(+WkGC?+>&LBX{~|0dOWX0wR1vx{{JW&!Ir!gp}v~J>!65rt*X{*zeo(Y<$xEIc4-huVxSt=hgjg$FNI@KVEzYNgc zv-Qk(?<&r=$Sdk#_TLsJCpw|`0btZ>hj;`)Z9KWXQEnkqusfMZcg250I^Tn{mZ6_@ z@jDNxrNtDqHTEF2^>bHv&9(33^6joa*o8l7tY-7Quui!OB~T$KcIoRP0S$3?gzeMD z;JL<2MMC z+7QQGU1P(g_8Xqo$fg0uU{4HdG9Z}71K=X%6=U)0`|7(KVhM$`PJ3k$Iy^$k6mZ{A zuqm6W0uQgr?ZpnPwWa5gEsNLBoZh<8*?kuzBb=?zx!GiJ_bvePQ7D_uBah(460af1 zv2*!n?x(BPQk?zqW0arwxL(;1_Qy)1INTZ1%uJpJxANOG%rqe;>8~PUkZ7UBT01KlBr$|)I`=$ zhy$}dr~tRf;L_L0Z950bvMP%%KogOqf~-8fqoAW@usd2nOT`AZM zU6$`d{$Bp7h!Q~XpsR(5L18di`_gu@ zmlkOC^IVs&kLYB$SnI-npHn(OOBp%r77P@W%Fj$E_l}*~`t+oVi29$2$qL+wF|@Kn zQa3o6zxq$OUX7TxyZxW!`M5j=oIi!DJf457GYPST2X?$h#FdYzM@Gk*vR|c=xSzY9Ls|rBzU_2V z2;EoT%=vW5NBcH^by#RMzW7b{7|sFRE4NiXH$NF9`PJxbuI)rcG30pNQQ$H%>$SmQ z5sr%`0HQNPdo^n{7{3uvBS;vduBZ1gZH)ZsYL@2k#{#ho-**+0);+3!xaZ|#|CEHp z^5_GM{zAGgtvLZUMs{>HQLE=N zaoPpbpkw}sW*C`Im(>R2rM0~_=-!?( z*1X40H^#328BVg9D3Q{fcwT^m5Qwd6-paNCvUVTPeE^DH=Q|I9^dw8mtGVD++kj&J zyDLp6Br+e+g0&Li&J5hUvnA?3`M7_0UO@DuXII!~RW`C_kor+ELX@UkJi%mIOAHgVLVj7=HtYt?bW{_W(K`E=os z_-1mppt%kn9Wd9>-UW9B{=B-ZgY_Y;nH{P*f6J*&wXpk0!%4yREFP}ig!0atBqKe+;oY>JO4h_A zXL3I_NeQv@8A*Z^-u?)32ieBOte7fXR0>XD*`7@9@W;PchW~mpn7D>$y>~l4Sq(a3 z>vQI9QJavpU0M&54w0HI-%DQvm>L!NHcJeZx(h`qscVxkT-v@wuw-1drop#8-B`Ku zW`sf|offb3|Lm_@|uZG$&&THCO*F2K9^(sIPH}@*R^5 zqI!Ozg_1UR;ODDIBE|Me&8vQo2B@l{)5|v?vA*ZS@`9R_KG$AaQ&of5v;d0j%UOG?wqUVz5fLiN>$$qoUVRs;)QuhbHZ@lYKMlr~TwBZRG_ey7x4C zlp)vkQ`!K*@bU1}pqJfY(I*M4!muX8z)cebG$V*;VR%s+Tfcs?$qj%ga;1PTHx(`2 z+>>T@issr|Iy5w2gWTEuT~{c5sC)^!PPaW#-y=~}puK4QVY0N$o?kLiiTITfp&-Li zn^9!`&Xxlv3d}?QKPWseF=)bw1u)cZ&z|nGSKK%Y{gVoG{xK7Gwv8sQ%hLntv9MI% z@fdDf1N=zQ(%CrwaMvF9%l2aesa**a5mkBb|BiC=bG~YQ%rBZIt9kl3FJH31o5FK% z_8;;wJMr!Yptt1UPxduapbnL6W-x#AHzVLn$|_(&gB^&s;vIo_LoLHa4X92Oa*^f% zWbs2k6ocCM%_{m@9E}MmD!fWd3(Eoq+Ey0Bfu6OM5HhW;@ORv)&o&BUN&vj)$Ra>A z?U97g?A6rB&FI%ht~#V+RrCp_1UJ8EEymgY9FRE&uj-d(IXe|f46QvQ6#x_i@OP|Q zNv^;bt8g?~iAyamgqmELN(Gm5>UM|{7?n>oi(Qim-YZEDb}A(P(DB2eaONkB)vJ+P za}#nN^bhh38obD~o_H-Fv)lhuRS&pSCS@m}9t%T7I-W6PqW!aSDi?P2H=s@!u*%pN zU51tcT4HR7eU$3p3Iuk3$^IGS7WutHnvsO*IkOT5od306Wqki z$ha^#a0v{A0M`FI*;gc=b9Z)G&OnS^9yD^w$YJ3zy=}ytS|Wm#wUS+%4BVyS?vs|2 zM)@Zkr?bGQm#B*tKP)I5R~92RLXJVyS6SpsEM?<@0jnuZ^>4YsoVuYp8l&YFo=LBy zx^z++ws#B`oIui4PEEo|Z`4R&w5@qI(XYp9sx5+F-q%8rEAIGR(Ts07H#QxS{F_+# zu7ll2k>~Luix*nEs8>_h*BcM1OoWjINd%~_6tj%Wl)n)6qHM%R5vMYkv1N?L`fGzf ztpDl8b~(McSq}>Y19S4_TDg{J z^(xQ^rR^a|;iIOtRF<@nlXPhERPYy$qnP;y)#cSF9|;F&7;b5_FfcwF zU-7&Qkc-6+7%Y+Aq4TfN(+B`ort>C2lcO9%Mn-3YvlpB>8l3$cP2xpdI|~mfL*8_O zKU;vPn~b`3Y_*tFhJ37s4>*ihAL&we1reo3h!$NdnaF^`a}XEK7R6}bmEWb~orv*v zib(R~jiauxHdU&YCj_9j)FI0b+CZI+IIA6*Zgj5xWR-q{2n8ks%aaJxBUHbL0fhii zpwjd2Q(~gY6gu$vF6r6t+WGp!Y`oA#8-=@gfleiGBh#!VNv=I#a3RkY@%}pt5E1rP z0NRP#^yDSg(IGFFP+PYgyCxd`umpuBNL5V9-;|1xG?dBmE{IF_BSXFWw!5^){ z-}vC`!&B#!tFZrwm;Sl0Wo-&Ko%lHsHip5&O!}`=PuigF44@n?d$L3HnN3-ku@m6* zk^T<}oF^p=L%IIhw#3@8E=5H&u%3n$DCB*r|GXq=gyD?2G#lkoN$E>(;2vPYDx0orJujWcnIVY&HNW@PnG-Pd3@3bZV6Ml7qFn z0ZABr!*>O?-fj%fSI<;Tg^wNg)WuVhlM)$@#=3smHU_(igyaf-xFW*;J)Q&47CEQ_ z2mZYm^*z>ZBQKylJyZgGEOMDA3}8mjZajhQvB^hD>33SWgIpOaa+#hRA%h(eA=zH{ zyP|%92C2?pUUwDmlxuOc|I2l_0WX3PdU%=?ipfFTn_Kl$46m+0d z$`D19nHS3kv{R!K)qh9Kpg{H>Y_X)b-spQe+F>xK9C^H~l9jFlczo)2<$QYwst8j5qYQNP@Wa7cwQW#A3 zp#S>A@5~FKcVldM$2T0Tx$e#OQ;;zHFkkD+(*uCR_W7|*X;AX?30oM8ij}fR%;2~% ze0LQdIgbxnt#Uol=eULEj=9gcKhGB6aJ1VnLV8->=SwS7qCv1LONa&xuCn_bZ18Z< zIg8EWFLhOaxE92>l`;tB2wk-4>aMiTU$R`N=PXKbMdr?;UbQL(W}M_^^KUex?JvRG zyWY}asLM1&g8_LtyuP_(>6W$pb}Bv-{Vm_!0e(Gt(PyFYYs7$Q7%m~JOm~`0+uzL< zP=M*bW-Ty&)!%hl<;>ib1bJf&Q3zI3Hu_8kL7d z+}9A#5YS-i298pQ(AS$?m_*iF%#bn%9WYL4qqE#yX+APQzfW!DL{OV4q;;TqiE0i^ zLu8KS$Q6CqTmn#q%kahrbKf7JAy^4VY)qk-zj&k6Bv2Ppk|CNNKX)FtnOif zdzT8&@dlR3LMQQcvqbJ?7TzobzWlk!TDwqSo1+8H5Vh?Q(22KmE~cN^`TzL(%cwZM zpzRkX!9vggL4&)8;4Z;6!JPzm2?X~b!QCyuU_mChySux)GdP0`oaTSu&-1SJp0&>R zqO}I5J zx4fHR>Hjau5~f>8gU}J{0@z~d@^|W=5YEP@Vd#mJyX9g`ET^N)J7N@>Mm7Tuf(`ZH z-d`bV`Ce@fvppHj`sk0NF=E=i%13iysI|7{$LHw50i|VxP&}Q2y2OOQm*pf)5pQoR zb=N<9@wQhF7G=p%35-7(lbzdYGEzm2DRMDrQ+z*hF-nk7?4A5-IvH=YU*@r z4d_D}pe2NfH7?-bAueLB7Oi?xd$WqNVg4|P%sbL>4a$z6O|Yk|9Fb=?{b@DKMqZYF zRDF)D8w6gnTI??U6AO+8N|;SX#`1E}_DlVhV)@yM#*43FjDCSaTgGi(ih-9^DlyL4 z%PGDqmkQozTo|nlS!{yOZ#7xMKizHka_oYicjuk#IcyDPUmzp+m8pdn)Br3aE7Eig zmD9RR{MXCSfrN~rcAqzAkgrSQ(TpFwdYxQ`x794L}au1L-yg}YG;3f8a4ofWfB>Yhkc7$m235}dOmEv~YS$E9 zQQ#pXCu55k4RJw5eR8j{{PqTDV~inCmu;7qCU0n=Ukl_RqelixDHpExyLFzvSyXg} zgA-eOKaM((|3Mg8>QyfMfb6!S&y^lm&UuOq$hKlCvgij;`qlFVW95bj(9gQyTB7K%7JaKxYhuOqoqUzK1v;Rme8|Nhnk%^xyO=8Ob;t zxZUh26Y7Ej8hkw(j+|2S6byJ?M8S=LAOj5G6@_FHa zTM{<__TfhvfRm7*oSvCU<<2uKFub6zlqMJ`Zl?xN^(LNvai7F1<{L+w?Tl= zi3W;8Z1q6izki;n#`QPe(-5>wY#HUpNzG?V7|J7d=_HH4n6rcU8%DhU$yEJi7cd(%x42djy)AgQyGZ1*<4vwodXm1q&3?2LrnB|M z+Ed6<+>*aDye_qFMeGe6t??>zXTXfgO209uzJSY=cddx4kksTj z%_^VnNP}sk*sXM1Vt(ze4JF;7zHydZaC>qW{0H?6X88cvO2VKQj%~2PX@yQ93~UZb zs&g;Dq~e zaDz9gVg*5Vi5;iy>ObK1P#lDneE@pT9=ek*EYG>Ube8Mvm8_!esj=U24W#$h+P=ex zHPp?@*mte>7B{#lgtnLx3QOI>KqR(C6*Q;LQFYEN8Ox|CxL~g!BX1=(Vn>wki39v`2%l$ zUmY;CWvH+x)Pe%YQ3D6mG zmR4vCG%oN;7QkFht&N8LD2NRMvkf@sezj*FIxP25n%iQc*g^Y2sl*^dgefAq(Phha z7zuhvP*z&{|Mrf*)!VWhfU=K1Z~0Yt8$|aQ0nSg=*tH%d%_ah&IF+T~qZId4Wt@xY z5D)27Q6iTJ^urb-wtzsk%Z#0kW{v+NTa6rWdW`J@z!(4_0zE@5dEu#_CWVY-DRDKr_ z@f&BGmr|t{emepM&0epWUMh~0`>tCNbG7~4e5J4UK}fv0DpP%Gbf*z{?4zy5%U+`Z zLiA@E8q2k0R>q|9EhbaICIz|?w_g3|MFzln~*0X zq+2O}C^&QQdu254kn}TdzQ}$0mro>r$zMg1f$GMmESTWnf4*~Ai+jCYnj8lOp$ZBDk9 ziBZOETUG9$R$-0UQL(mN93stG#9FOS6bTc-t-3*+R%T zuy^C3?o5LsJLb^VO`NlX{tu^kFEvx2Q(J%hiXI{Ck4M&b_z<9XF8bwtPe()XqEFIY zqI!&a>E@c#KK}3n{gzv7AuLsmQ*wsUH{bPE;g4+8`D!VYR?%I~;)cLW`$k?&s^CfR z5LVkk0S@=K1FvAI?B|O#@C(;eKtdUc*28dKIjOA@DJp!CNQ}pE-FTa#Ri{7J(e9{A<4gcw?C?nrIrIzydd9>2wfaWWma*)k2feoqLk z;Q3b?yLpx0orc@QJfHshL>>%KTpdoyxMD!}%iB1W^^esLsxqDFY=Bjbn!F-6(Ldd? zo2`BMkHWeV0REzZgTaz&4FFMctExCoJZWAcuu6C8*hGOQTH(l>N4Cz%5BX2?;Maqm z4AVL4ry}XmFMrs7T`Y;Cya-Z?3d9?729QKb50zX4%lM)MM?&TnNzL1z8b5%kIb$z; zAHOjM$$&ub)h|E}01Hh*Qc8vPCqvZ4mwkPU#FGc65m^D? z*iSNOIHonIzyQ%lnWc{`8&wLdUt%PuDEl4!wp2$L58+gN2vA=Dy~!e@bz)1#e*7pL z=4z2`PkOoRG&V6ii`1URWqmJHL!UZH==8hAO8}s%{Eh>d7-X=7GRHYMw9LPHdc9Y* z*iP?L$l#4d!J+;5y%PcGaYqS4I+YKyDsZVI%MbU8O%|PsDixk(!{@iB*X?|D#uj5x3mYmE&!4cHlp8y23r-- za5B!)&3^SuDvm?_{tumE}+Y5R0sX*|1WdPhtYbacT(&#wG z4_81miRI%*&mXB)Nf*boc}Fdk<0R!?0c3MtG!&+ki7&s}6lf{?tDROgO|}Pv%2(Gm zy6R0wrT4S7K75H{85Cx0b&tXqYJG_+adD;3s~wd2q7ncNMy>l{k`I1V$DZ}pk<}z; z45_S)-DS~KcWy3;?cB`pmtLNwIoY~oG&t~@1L&-~6Qeb6SBq6|HAPBT&W*Lt!odg; zlI2U!;-$_Xm`3ThSCGhw%Q8e>nbXDtD!E4NCvbkvvTAWufJRfmHBz>>2MP6s0oYMM zAUBn)br?1vcDelJDiJ>kyl#B@DaN85Ve}q|9~H5F)O2uHtM##??>;g#dSoX& zeK{X-Iy^e6YE7atbuICdwcdUE69Gw@wIn@0RDv??kd!t*e}~!dBK63+X6tbRT)KG# z|2V(3G(O%A^k4#A^F=u8!PL@!a&kIm-i=m^FD6SXYM3CyhVREE^($MnuEjIVei`X@G z;1of0X?n2s$1ciB*Y&K72(u^Ml8gq*d^i-`KG zFzP4Odb+(;EHy?_nIyWPwwa#%4k0Uj>9tEc{?|O<=Nbbh1J~NOkNtmtvKzR0av`7A zuK4*DB22_{HpmlTB3lAgY!FI0Xb;H*rih;Kw-M~L=h);luj#Tm@vw?0bqVD&{8L0N z^Uut6Y8RbYgcl1@zOjE!mM279%s}sP;m_ol%1hv~?3|<*6hcQw&;5YYqPehf=xMh# ze0Dqkq?-r5k>0zUd05*hvG)#fzdi06(0rcxAI3niuq~iubCdGaW7pfqYmu}+4E+<8 z<)_2|kcHeLjNQ@Z&nC;>iOzsnc=`4gi)N)aidQRc64^C8<;g$8L`y(3hS_ILu6ck> zuN6cA?nWTnpqJ3e+~hG+W%MOyG2)(&38<#m3xo2DTOZE1JInk?xJU$sfDZo&Cxo*N zeLj3marigdZ(qDFXh)ob*MCm@R4gaf_nEuaR#jJ*Ny=F)DGvd~ zoPjL7?0<^N)52?$o7h>4lih?rDx)`7m&J!DL~Ur9VFE)D#RH(C~Mfgx>b2*Vua zdU(LLQvFnR7d%(}MNe=0e(~_SY?DhWW+9wS2nyV8KClrx@g$P6%xdPI)tm{>{Z@2C&%>{^_M0cRD zXumSNtN)eY2u#gf(SF6y$;2Z63MKvG{7Vpc`Cm%$TuWbfBZxoo{|bXOnv%`*LZFGH z?m5dKU3QB}e<_Ok*p7xKpTQA3(GTP}(5LqIlS3}f=x+X$H354g9sQdGlCG^^%Qect zLvbG-$54L*VyTbA)|U+}1x18#f+E5bEHux9gNE$#i^aYZNrEU1K(5WQg$TE)qA<{AQU=;$e(7`%nTM;Xpscou40cYFYrPEA>P-ikjem z1I0+N;AAukm>Vczi&JTdbC~twf*mV!v)!|_Em-qJr8uMXDcrHTk~VYLlCAv@GL;^J zw)bJpO>lI3vDLH6GTPpdnwJXWFy=~fv0Ni=pf8|gN~u0z2~)TISaZz`tcmA1a(e6Z zgo2;);yf-cn4@iD1r0oBw_HZW|80Icb22wGUr+)EkiU7uI1-hZ8-U$Ibom+Uy)Ig> zmXSQO>@j<9oJ8L5-l&RiJ=pKL*uRQ>J+Q@hz_V;RKDAkUcrZ>~Sy*VOQnllA-SrkG z`{ruqa=Ot{1-TX46WVL;yahIGaYrx+5v5-%A<%;_L@pAy7Z~{=74_kunh@o3aFM8X zl`|sC-3QKWg*(j$QNVrrd(*JEJ5Z^~BQoTn`fh}oLwkKAgW@03Y`}06m?sR3S1>)6 z^zyu{mveN*sMh?I^nED_FNUvPvkPeCFSJoLL}Exlz^J~+|VRNpn# zJAF&6(}Zzg$@!?;@_p=vndOGLWtr&8aKh^I+>J~}fzIO{OiPVI-OD=1g~mdAolHrZ zL0!&EUkcd2!$fP|uBG41?Oa`UZY*vyCVcGG)!#2HEPTx#QkzB~A}Pd^&T(+se)Sd` z&-$%3y_+}c(?2Ri{FNVMg&!I^#KMiL4h)~S!T3*P3)&7NZAtM8K{QM zvZ#gzUWna&;PZ`0n0|xMlHl4jhwG-V1^-tao4NjNEos?TpunjMs8;rn|KFT4 zV{wT+-kOvkr?Wt4)$@CA0DT;r zanx>qf2nfVoq4GfEbC>h+$)7&S&G&%^Um|G^q3Ic-O_w6T3mI!Gy4shWjI%~4hs*@ zI~~)ovB>_te(BM5&xy ztq$|8a=>3@atQrUxxT)^C{(%>wxYV3zFU3zOlqvP#gx;ONIkt;#jZm6S|zs90<|wP zgb^--K-&tz`NI6t?oKH^7WWR7Cw^xBX4UnAYs^vLxpr~V z+Lg86?3hebwY7xyG<)H0X6V@CXt&-F+&w4h?40lonq^;)7INd;GDGEGdk2ZL0)T}` zTmfpOU8Ucd6Qp3BfB8IYilZU-*ZUpnf7~a2NC()n!5O5^&P-Z+`i+4^ z|C#R&>D^(b9Cj@tZfeISk=xkrSQ_0tTY z7Lrc4^Ic|lx80_GbEp7NLFYUe^ai zOkSJhcajg;Xd!}8NtudvYdIvX2JWr24j$P!OF?}^X@bK-PZ~r+NogJ|Rb%IgDqAJL zqp1BWhLXgL7mz6i*t$iq zGsLY)0=Vv(92UKA86TH7rZBnZti+S!7EQ+O_?~T+JYJrYR~`@|RX#d=Q6r{yYl%sv zoO&0R<~`3B8X}>Yo6;kGqMSa|TIaQNS^L1HoIV+p_bGl|P?EW@dujh%Xh3ksceO2IrH*znhNTz=nN(4lOmyo#12@4e zaJR$XX|GpxKx=07g;p+M&w$FwK;D9PC|g>^&{TY8>#XF18KjluDFWM2wSNnijjK&W zd$j*yP0O=&5_tNYma>&JswmGwDuiRj8;4^~s)Qar$rh6FH-cZn4bBPODkm;5;G2{5 z8=b_sr3H0>Ib`}F;2A+8WKxb8e?(G@`V#>SUxQ)3z39`ky##1l`vK(XTbS$8y9z)t zf^7S>d9J+Ff7h_Y^?r_H`4%m-QPX0_+avRxg3L=Bz1^a#~`dGV%K!dnuJ6nN7ZDu~0AybBY?AqKNo4qXj)O=b39r z#)fF@)Gi@qelNbsn@G@?0&3l3>R1yd28uf@Y~ikh?u@0Zt=;E@S6`a?51?89hXrtF z$1xX?9y#WjAS#*Xy8VRbWt<5WuQEJAv{(!xeGKl+WU~Cr+7-WqXrKJf!aYxn$>Ne@ z!Skv67q%fzkv5C~JkkYZt9m&<&&4 zC2`-Pcqf1}(W%THW*QChOe_wkVbZQeEx4M0gJ%4s&r@N1HKz4^TbzLW3yrDz^h=P2 z^C7q3Xb6u%7Y8Ka9L8Go>WAOgm5t^p56AgP*I2G^v;&}N#&a%zRHcRhO^>y{r(1zF>vvCji`;8OOy@(sHd~#DmIiMYwX@M~?^QOq5 zim#q);q9NLeZoiMS@sB#dVC(i>R@8L^4t*ot83JWCNh(|>k^HY_EhAtjgzpOG4C3Z zU7^Or_$;AlbCFfWjd?@r$0s>2#q|dDnNp~;;DgIiq`C519PNd+@K5YKkEggMh5F#H zk&v5}9yPS{jfu4V<{T~#HbLpJqFzn$)Ywjv`I?WRb;EDAB^f{qTQ2sGv+kHq1B9>* z7=(cT7CbD}!1oJ!bF^x@TNbV516wn2u?;`7T73G#i`(*ON{(MPg>bca>sD2nbg7&@ zBwyl-q`iXe;S21daoFz?w}*t!^v&yV7xz~PB#iRDCg+c)+owETlh%-V{fNG;9IubS zP&gSS?T2kQK#4J|lu@4~0=r`B4JMB(b#q)U?z&G-e7~vjTf%49Ny2Og#a&F@9u@m_ zkoyM>tOs+|e4ja~)8{!_xJt~{ur(nkWOyr{^C@@(GYAaneBB&;*|#@$es213ITp#~ z^}L}QA^5Z$Se~;epVt29yE<_4z--bUi9B_b;Ng*}GUR71^+WMgRq*U^O%)@j=kGb< znH%Th6LT%;c7CJN!(Qa4Oq$YZ8bzHrn^)SXubOn_8F7jD^MtH<#eBnA6Ct9Xs|ZL9 z-vr_LDrl50&&M4+UNsZfo2@ZptX3T*L;NlE*H`3`IgX(Ra9(Goo0)Y9d)BX2J>9i0 zr>QkGl#M)v_W7M}I>tZjTXtU1t`Zq$kI63xD_$8?(i!7gICuDf10_Y@Fx1K%R=T2Yy^bEJ9` z?c?%~jJNcNTjN!JVyN;Juyk^Z4x}+`brA2fRH&3)&r&q4Ow_iTyj`vFs)6@YVUCw? ze58v&kn7p1LS!Q&u0yXnC=Pdgr28TIOfLM33=P(snCxr_0QWnsF7W)jk8p)9ly*&U z)*r=2L&p~O&h|BD!@+EA(nE9Fkz!}Td?Fqs(`7jx*Yb~hiMOxz1=sz$!LgNzZ*}D& zH+#0uzpSlDFZ@B`w;xBR8~OH;fXiQ=;+KNXn?Rmf2aY&A`Ga;QYwLNBtuG$CJUnR` zKac3|-=A)OB`z2Gwzk1ym|Xstu}Vc(?bT*`M|4WUlTg_9YX;7FZ$BOf{%%r6;k;XOYEIzVr=bpp7P_Ux=@A-;$Me&NUFgW?5gVgHg_*o8o zo`@};U=+exs`G|AZs9{{;FujRc8g;jB-@q5m3_#LFRC%o^-I$xW@#&o_eV&k=}-;w z&oNr_GZWD*SP+<7q~2W67oq$PqxIGJMT*0a{D($OrOvr8zz>@LYL&3h*E)itHGX}G z^boBkhlPSuTs^>ngZDairF8TCcgtHjM!RTQ!Rqx_qgj`N-qAjh1;PB>C!P$q%)Dz! z*4FJ~&sWr#Fc@*`K7S0MUt1BG&TPf_zxVrSpQH8yiCNbVQep9FMv2fgzZswx-pb2( z}|Rf8Exe8a3RYmGQGVNCgr;*?&d!_QH2kv`_M0oRUH z&cly__(+RITCNI5UG@dnmX`Pn;F4@Q?&h(iFsb|ZcLZ}YU1!JJl4`&)G5oxjnc+Hu zqUW?#0(B`xYze*Zj5Q(i;=*jX#~GqcBq8~2Um72UYa3hr22LBNL0uRAfU=SN=n{u$ zOq6{6uoqt2YaDqW&|Mb`u_IBmmHZI-`$dfS5c+~0QS@I9 z!0A$-2v_Do7p40ThKfGQ=9VMpGve(8C8w&NUQ?VnQALi6_ny293J6L+=i&Ahb|%4t z-9%@2Kvi`AQ`xWTN+TYw?MZ607z&xrYe-5kHGUWN^1K60L**{cs7>|dy9OV&UHoGt zs=K*($V&fx`>{kCmmSd%M+j@|f}b_~Piu$VjCkDsse26C zX=%=lk|+WtL~Hvp7X_2v6j)g{i4kz}jhZTWcClX(LPI@KChE~!F2Z*U@Y;Q@BNIG{ zCWZ_USy0RNsfSos8pzYBNEc)PsWH9h3q2HY5%lC=;JmnXRsO#D_1FL2=+jaI5Utxp zfL_TJ)I2aSD8vApmgS3q8#9PTSGG}eQl?O*Gna|(vORC;4R^KF!65N>@mr_jteJxm?RR62 z+inG2^+?Ei-F;P_U#4qnK6S+lWCqbKsukxXe^y)547opX6RFSNiN$PN8-*gQ8H9pm zwY>j{QNoa+^nd}M@`mpso2h;lqWKum=8%16b@OFa+47!(1wtqHZB?SHQIvg&(-ea+#8 zUM;>o%UWxq74nE=>p$bAaZi5%Y**{Gv~Ln3&g3G{03W9}O0jt$Ks~T`W+a4BW*rWQ-I)Bv{f=(TgwUcAGzkCGX->>f%^nnU^9QJI&rfopR%K*{WyHSd6^?dr`qe{;r zo%rkr+_h0EP1yS2$csRXpG)-aR|QGZ!ffT= zJP+fhS00s3YW}Pu8*(c6bh0@HvRkibO$7=AKtb4?s996o#X`>UmZcj}zi#qAg^5go zx`H#$E>36r-iA=??38rR;R2WalJoj|Y{1BKMcp)n)L!4KsgfEyg`@FC)+iYT zM2U@!bDg2roWDq=`z~{3N6Ze&nx$!F(W1PSFcmEiB?2@-dzea|mMu-*#<`otUuL7e zI5B79s*ZoXnsTm8466mzu+_;)m9Lvd>IF`WGDKvBp*8m9*ySqZV2-pshjAt}gY{oZ zumk7g=kv4AQ-pEZ(5Kv&wVXRmuTiP~M!B1M7r1Z{y^T`)AtB6sx_gF{i*|zD>3go+ zw^FJ_BVdwpQT&j~pN~sjYusL)r;Yndt_#AE-i=V+A~+A4)VaL>S^9)qG1=mCM7|sY2GV-9VV#r|nr3WBa(uSwd#l>0a3nWNVS^5$mqh7B`?=3$ zv~%&ahS~S&jHef|eUQEB(7YTk5n+engKTusxoX5JVG~V%q0I)h%-}-jZ48fF$m}j3 zN-mw_n$qio44cGq%8jeqpv5DucS55saTDV|_jhODw!xQ{`=1(Ki=^8~B zz^mH4xqNj-=1AA2B+|0ez+&jtHM%#JixVk$H;PLeMV4^J^`bcz@})un8}GBdRkl7O zkSA^{$xXBVC926VsTrIO$hh{VH?38QY!bBpUwEQvq7cUE~ zPE_pNo7}S+kLKvu8I`TwSyA_Qf(m_nk>J?gcg58iDjs?OClj!YQ;F8FCIJ?Jf~0#? zE>54?G)>yqMcQrKYG=JFPSbyf_n}&zg|iy4pc8=kBW-g8vhVy&D)^Zh4}APvPDF7IwvKNQ zzx@1({&4&r=CypCt^s6Y0k0nFykJL1_#aD+P`Z>wB1`RlS)iSo%uQl89R9`BF;Lb0 zrwqu1n)_8dM=va1xz;#ny7fk)Fnr;h}4#^Y=vYZi2yqifjVUH;R$l4PFaXaGcm6MB#0<#&?8S3 zlkWbdE8jdaUkkd<{@kN+cAvBN@hwJrcScFncG9oQxC=n%zRd%Hy3ZOW6$Ofm(KoMq z?QTd|fS{ThOWhG~gxZgd7doJU9W<(><{k_CFsHrMrinrO@m7UADkxa=6z83KYIUvNL&S@ zu`|{2PaXFARWRMOzb+dC44rdMxH>ml<8jG`G_9Tc^b3PL9=?K0atpQIOrmP9qBORc z@|)h%cgUNU;-big*J5cb;*$1`asF^}n*V2NI=y#~{?Gbpym;wjG-i2Qm^ohJrM|XP zr89!RzH{3Y?U$NE_fbKp_-eVu^K#`UxBCGS1y57FF)tnY zj#p0DKE8Y=+6XZOuEM~Twvc1J{V_dZ~1kh@CUaj3Lb#HaK!Mvg%c z+MxqBiE`+Gr|g7Uu)&khJbcam`)6_RJ(@)|bd$fWVf#>HW5(mpj>6}opX@pv+JDer za~iCnCqG~Pu#oeLQr~2X*xcLSuw;1zuw1aRpRY+nOmxa*EV?j0$E z>|`>}+P5wyk@moj;c%3#fHzrqU3n}Ea*8K`WzeuHmD=3L%J7spn~vI!v0tAO!xgPG zr-W8zZ~dBDUB6~vb68k@U~aj&WeV5D(5^RM9T61Hi7A$JkYH6{_7muJ-t6KjM^4*Y zk<9i^KjWIt0*hjoOeL?-Jc_vrFcZO7(lGGS&JCdd5+xN_M_gd9PnbRtope z24CTz;vGTnW0Rdx-+p$*6GW8(6Nylxer3|y98??uYmjEx@`85^6kId6D|=l3{ux}5Bx@pBV3-^xVL0` zh4#dLM9@pN98OHC(}j+zInjlBe;>5Jf+Nx_{O-b|HfyZudPoQ4x!R@oL(13fSs-{6#^j{Dito1s_DoK#6E-@ixg}=DYKG5oq|!8SBV(KK z5z7uW-(oqGRz0!%o8;S`*>;bd!yoT0MV5KSl>mL43uG(68&zMDGp#o%tr2aZ-|-**aP zF#Wq()UR9*EP3wFZ5mzot>OR0`WOg*7dT3!cJzlQljiy}2Rmh%=dj!f?QsO&WYn3V3CbecmkYqg3@iqkWiDt&*ij`6bb|yA5 z9D&ZGEh#H2J6-D#%hmd1)3)I$;Zpw=>DMk%D)l5SVhxr|q=RGsv^#mM&c4JOaQf(U z1)`gyBn^$BVvcWA?{zzs^kZ~66OntbnLu;9C>byd|Lt%SS@7nPr2&c}7sa`)Uzqaz z*9mE;716iSQNhVTrA3LfhZw zj=6&or4;dqb?9kQ&mYQmj!^ru#)PNJPHar+f;S(|-M!NbZyFPAv>o2_tli_u%lVU5 z@m)vP`Q7`a$T4!Y+KKASe;E`Pr93waSUN~G6$f>e_CzdUs=r}Bo&~<+whF0*EN~T} zf|Zo*eAOv~H;*hA#dh}U&Xb48)@Spvm<2N@T%WQ$SqXb9B-7??ba>+BBJFuMfV6fn zf||mX;+s13)BDYezR^#43hfc9IY84{C&>k<@|cH8r}gQ+0CpB@K-d|)*|fhG;yAH3 ztFlQpIBs3OH#&5?2g;g(-Vs?7o7*)c(%q>W^#0R$|CdYWE2spSs!(C z{8XSCVDu#M9y^fK_9V5|J=prp#J^xyMOhS5@afE%Y9il12dd<5Lc;%%-<3@EKg^N#rhM57Mr|e0p+r3;%PIB1nf&l7OTpVIV-zq8Mon1*bct-@~ z-)uP66X7XouPW}o@Zy;h!>6?Nio_`wS5sGy&CIkd&tV`peVtg16=NdbJb!X0hc1wQ z=c~-MoDqfFTubPicTVa?mz`<+9($Q*;c?e%HSPJmvKOM^iTh0=q|WK^cZ&Tu#^>{u zt78Nrw5%ynSukSC*Dd1KHPj!1f|d`ZDtNE4L$6b1^EZ4Ozwbhluvc%GQ!+4r9*vi1 z!jo1Dk(3|jksk7Jp`H?7x*I=X@3Q&R*cwcEg((_8wFj=PeDT^+hI~!&{~F1*eotf= zQ}qU}2J5$^v_S!OsM+vU???nSup()dGAx3%qg3xkx&(cm!0z^2@%yyye$|4f zY0Y|6Chjt8tB8>;Jx|2rRzvll@4g@A1#&6jK8-(=D80N38-I&kcpmi6gl(7c%dl8n zUoZ4!48`t|4m9*Rn~N)BwzLeO6k{8{0?bs~`PQtbl?#G#7EF!jen0(ix8flbo141q zh|XKjd;la$sKts2?(XrM#)%vjMFF!bxzsb3lv-0YBleB1cbAkK?LuL^rB2-XHPb^` zlf^cJGu?|2mcaq5JAS4iU_vz>VXKBwB)A$ye^G*U07r8^9D9X;cYZ_eb{8vaf%7b{ zkZ(7M9WCAUBO;S;w8ka+{tSV7=1U>z6`;3u6OIZ6wL%Kq&)ft@UN>K6x`5;LfPoN} zsIThWHV3l)8RJdjDVVu$ZA5YnlViOBjTB3r@aqZHXK7|X1+mPrG7ff$JdIf_z8U9i zmE5`jf7_o~`()K^4;|^B@N&QY`1k43=_)MRe}9j>8#r~b01t(@whZ}Cb7O0MM{wWP zcSym>34)eYBpW@16))}-r@BQGTad#N6=-ja1P3}M^;WJOBVQkl53Ly;EMu>VH2K5- zI3c9VMq2ZQ0)T}P1C^bjKli2!r!BPwQOP*8%Yzr%s))w73D*0#uQizDoAKWnNS?Hp zu35uyxFwt&-IDI&pk-?PzIIy3u+Gg@iCj^O5|YTz+d-5OMP2XTX#YG23qd#6S#yFO z7?__=Z-1Y*^O~qV!W;-V3c0(xZ~R^gz2~_^^V6MnosdKXU{rmZ%AG<88FA6?(TpnJ5tbG* z^1Yc6H^aqYHi4BMt~~?WCKB!Tf6VoET6pqc;@+_Qw%w>ic|!L-xoQ|hVk+uS@#R_I znx?4$YI{-d%j#|1<(|7vLO#m9`H6wzpc;?it$Xwk&_PZmMLqwchZ5xO8W%&$oa0He zQ!iTl6{kvg%8bosaz}#7Z%!W7qdqTOtU$J93{QtXYfH^BO>AiRL=F zXB$%_>+N1Ochbw&W)`#}Fi#Q@)3o1&0H)D*{=etwbhDvSfV6)?7fCZq)|SB|2x7s1Da$M$Wt+24N>YVe=PJ++?;V?}w5#LS$>QkQ}BwHL_rzR|| zQM;c|`R&s$d;7ysgC{(Xg%TEDq^HxzUGUIa_0=L%l068|Pbq`Pk{)hnXl*ksd6v7a zorlPF_?KVrWzWB37!P)9@Z#lr(b5KAt<|~!Lz7Ix2CjYtF4(m{Pi>s;qx-*V@PJ)g3f~1@LtTgCuTqMdC8E^{?8y7G(G@?`$?h=61i#7vlRq zSzoS#XI%yBGPyHeV}7Ws8}<6;>D>fBCjdZKUCvs-Xl!{s2+qQa9JY#hOI-6AmP#*@ zPM>tznVjB78V;$y(N0DP|JP@pi9Op^GT#WD6~LnkzWz13_2-zWH{+h#U9@PcbGV_c zpdEg^J&6VaKW@DK3dQjA$sK=0fn@qy%u)|ApazxW9z{Jb49+k@+8=MDek!{z|ZQ=j)PFwu_rF6fX@JYm|J7sLfa zkja+H?*Fg=feU2zCTpkK5l7ZuqmA$6yb!URvT2nHsl3{F2+(@n@>^uyUdtWX(OBAu zU!AV#W_*;<`vVH7K2ID>5auW<16yBe(fM-QBM;Soo3|WZigR;Uro^>4+e~d)__0Wn zz|(Hvvybg^6pZJV;;MGxc`WBeLcL0~wlZ^VV($9M%T`rYwFw5#fRjXB0nfKZ89Tly z5f?)1=pRS#68W7R>)U2`C`sEm4KDL?L|aAK?Zm*GAn;A)+C@C#=5{zp7Mp@pDEL>3 z_SO+TKuy`UDFNq@?f2Iw5ByBI@%@xalSaLY|DF8S6D4zgyJABmD6LO$&4OhmU9qGdY)a zHWE3Blu9W03sG&Ey;AKD$4Kx6r!ke~ckHZ<53JZqsKM2qN%T2r=7oI|kr}Qx=z>0- z#1YT8Di|^{|0lzjcVRN`Z;L+^YE2iavJd7n%Jm67E%>4w+o|PGNuO^1p8%sc` z14v+nZ@Uz=J8PVvqGce@d<=Cvwk(LQj%aNAfdAAeY30WUX+vIAeS4#8)v*|XV`gF& z8PlQsEzk1qIkAY*bHx5td&;FY&+L2J{vj*jntu96<{H4pwv6UfRwcr|b&0n%qd=r- zEIuC(K<4!vy}S~-=Sm|woUexDFITO5rI(khKFt<$A`M|b4IH;p4G3(C@yo?(Y#x0C z3O|`Q>1gevrVv#P)XZWkrXe!mJ596DfD7(OK;r)oGqQ+vcvLEr*)Kdg2(OgkgmlMe zHlfgpItuz4veEEyoVMq0$-HECJf2Es_t?#M_7b^Wm2qFU;W-AN6&`@!DELo!Qp>yX zz724-0#+x3LA?ZMg{cl_p>F|WgDWhz;r;(sH*GXf)`Lc;nA=?Pv!rWw5jXn_Lw^$? z`b9P!^8WEXCR5!!!U9T5!EaE`X2AkCe)$vtI~UacSw@?hA)47|6Fq22s6ZutN(Cr+ zmh=++2XB6Ffx55`@Amg`s~BilLx~jOqh0Ym))6&CU>|4FyBxA^p1TeNtrLgJX8H|tzry}rWZKtYJ1^^T^>iU<4s)p)2i+2LwPbLs>DeaoAmbB_rr!=xEM9#2#7l9bR z= zz5;=eKlN7uT6m zd~VqqV4y6tYr4HB`tzF5nG#JP-WeZo{ils0{#_BBQw}U8?27TRILC4oy}kUhWl2hh z&*urFGgDfR!N&N01+%$Dl#TJ6mv@jh z@eB=h-wmB__nlUib2>7eVd6!-&r`a!?|S=Zqj2z}61t^a zvGFna!vG}S z_MoP!5@rE23*hDr75Q8|0)ZOPkMTqT7doo0m!PzK)_%Q_W&b8r7XjNgOk>p88LyI( zYj^qP1J85e-M3$hBjKsM4}4Z;ZK1PTJ>?C_73=9oEKRkVzvkL}0-li$afFxp_a=D1 ziTL(`JZ|s#~x88K|7NPQP}55Tk?@ z#zrgx9nc(sMt~*I(Pz8N5Bbi@mnYKvO!9f}DY1bLg4%vE*D^G$OXfJ=IQ?}qomK|m zrwCueUvws`9HZbHgnDO+&1(3+W1L#xXC+qcheGTNt1&PJLYjrT1pWiM)=O>8{&dfo zl`cXM`Qj6+5$G7UC|}i41AR{suY0qt2e$UjIGv?DXLFCN|4hO+P<6~@Z|&gz1O+m3 zRi?TDpU2^dqgAqeXiaMP?t~qDb)|PPq`~QA` zn)&4gOUMtZO@*Yo^GIra5+>2Zo2lx8{tu$k!svLj6WR-$%T-a2b8-NRPHGi^nY@Fk zup-0&5!#?10QbT;xazo=QMBt+Ln6NtO;!)a6E$z;<-)8xt@hEi>~Tf3+hR1Y_Z}5y z5W6g@z3UJpKvooM79ha{Oa{cl*eMbbp=JFcdjGqzd|{Nd_IC9DfiYxOBPA4E0h#9j zT$*jOXJBQfY^z)1aX;QO<&zpo%}ibMn?z+AV2u6W@&gh=+L18D!%6&q#tB>ejZ#VK z8>~gliR1#m&c6?|!WxuL`1C?$7)ZH?E4$lriqWgPF$bEZ}kECHl0L(^z2sG|H8T_+pP30WdZ5?R)#k+FaWDZHl^Xq?Z7A(z=`5{k<$PC%JI2*_v z>))ysBG7!JxuQ+3^obn(qF16AET>N;F)GRof(;G@Z~4W!OJ}r&5z$M=WTy7K1!SY35wJFEu?rjw33f%PW-p

(>?a)(p_%Q->A|iunN|oKYa4myU~z!wO6fZBVZFpj-b`3*6;*tHdPhtJM`( z8Jf4m9y0~!__Y4$Aw+dLOKL~4Ri!!k`Oa@tQZ7&gRY^xNO2 zKET35h`0lu1{!D$t^ayuPO!7`>Bb>}%_Aby*hvMHZ;C)q z$pk*-BbSLbU>1E<4<7o3YN2tb0rwyy^XJ#i6((nHzmguN1c;uZ9Y<$pQn`#@M+9ix zuBjGnxmQqW+A4OzG-Ic^_Um_p*Z9hd-7;6~kEL;rPc8kNcM`nH?>embZtl^GNir`l zprq7F>xLtr>QhtokhE@Q(I$u%(D%*j7?0Fe=#V`PSe1gC%2_0JYpt9%# zvG~EI(jbsX?CUMNw3=CH;G^5&-~&Ogf6AVvQ09hd$Vi^fzU;guwE3nohVZ z_j4YiJWpL50PH{&0P*_fcaMfx<1Z8J$KJU03F;rS{06{*%9e{h(0KA!;!@xdfx!Es z4$LI34@bigifoJ6{ex0T2UL$T-miosfYAfIkv;$%&*oklKDf3!ERe-+^>pj48AJVA z3uLQFU8jM&AF*u>^9XC~)g$b{pC7J821%){I-E--rlG^m^--$HcT2Gg1k_BWG#GFq#yUAAlldrr9I5dU|B$3U&==R8T| zr=<-AG-+Ut^G<}|Y>C*#I65u{36lZ$b}|b%I+Y8*CtU-B(sIMAW-A?dVi%}W2@}0h zZ<~DEnpZ5t*#WzV0uZ{Mh4R-jIzWhp*x7tWYC5gtQYsv+?0~TUQ9=x1^pkdRM#Y*l zwp+OMr4P^)X_=tpqNAn4W%xG)9f@XJ5UG^W=f%k1vI ze0PwqP~a+`5a+W!{NV-iqHF@rAUCZ;Vl_=vc$D}J~90Vq@fiY{Q+X^T^|tR?|Me2$f~N(aNnrSNZb zm-iD=3D1k2_$FuHUo+0xv&4RW$?zZwRi^Z&3P+23P#0@uZzt~deu0NZVp+vZV6l@( z?IjOXh^-nLttJt%yq6}|;k4ySF z4eV+-_c0V<6G7uGdwOTBf7+ZQH|%y`(%xD+xOJnOiuiTl-x1F=Ki{7@0I{fFg(T)K zi;e=|xggbe*j!gf7Bvq;yXv_vCXne&@BXNfyA8?4rEadKbDX=}tka#84nYev5`Z#8|&QEY%pZz(p-p=#! z{{BHZ!+C;mm}u_?!adTR?s4}yZ$M78cCCf#zLZ+)C^c0*6;hA~3RkoMIcaes@JfDD z_fu$IG%)H`YW9%4oSYJbdq2_pBk(N>-9q?VtLp>HIg#>B+6jHs8X|IZwqyvL78z;= zxh`LB?I`UQyc@F3aGd6D(`I+ja8gpdFRyA+R8`mFuJSN#!fog}DAdFMEf*caE%+pT z=y0&lKWJ!2;-GC5KT>eq7^>zxVu$CsMd#QSJSWR9bXHlD#xcUi!f*oGNaTfeYbNOE zhY8cCvZmkH-vm(jzwUOzwtT3%1{EWvGN zLm}JVEdWfpLq=@gR|l`F3dtsuF22GsmhiA^Q0icQ^@9-Hoj}BJI3f7OYb^LxrBBM6B^eAKr6uQOfd(4)FN3|Z3e#I^687o@?vu`&`e|d z_p!EN4+EjJEBN5ulN+V#S*6i_l->4I?5kRtCWxBWFL8PWIhVIi;C_7{Q_7AjG&B?u zH=_baTjHE%kUI3W22c&;yU|&%8^njqZ3D@gBp#=d`~@*+-nPbzPaPVVyg;&}99ao0 z$$kl5aRL+yDa-9gr*q9eeAj%gjU8>b4bLRDGW>OdrieNS2XSo!pWcKE6^IUG>K za6W8iO;TwqPVgdmLBwYh8KSP*i5y;^Epbc-(ta6Gy+nvvb}#x!K`*?VWIF`&J`Zq3-{6A%v3@ONNFi|sRkErvC=4uyr#YN`)lPFj!5p{Z7Z$uWR&afmL{c{* zz@}`+Oml~-xP3%@+VEs)d)m)Eu5{Fhdi2)mG%^|AKkLh*zd>7=f>&ceetHwODZG$S&*Jh`KWPk#Bq-foDydq%(YE*Cnx(MBj$A> zXM3^X%|d;rr>7gw64N1cP4r_8x6!o$_m|LN)K3HTabGHzDl0poE zvu&~$r(ZN3GkBH#AQl& z2V&3cU6~t^BIrO0aVSn(d!COyI(`myNgKHtDczHa4aPlXa=QcoI*L)iGABX@ za-;dJZD$Y2fmw&Ylpvq?BZ__ET9GD!p{CmXQEAKi+CMKgmZNdD6GzG`0KZ0WnDzjH z#%{eA)vq+Eh-8}O^nE4}az73S`}FawY|(!sGk(@X;zl)(sLDct&W3LlRY89;EM4zF ziqN6~5N3F#o?{Z)3M@q6BHRo7i4xh5vD>zADvnkXy8;Q4d*^>6sVguhwTgzA|1KYc zuj7=KRdeEXFLl$e4t5jhPJ_X)(_sXe&OR&*Ol3J8`w;+S=4OmbOY^M3RNwQ6nNxcf}ovj551eY zGBQ~Oa!seO_s5qOmX4?-XbjSdqamo%(mMXR4&NK{Ep!!o7F?TeqEA*&hRE2@ccKBi z(29Yb$JfI9dO1TrS5!eVT>taBE-B9Y+5W56zf|=UCH~%w(7bGI>_0RiF9PQNuxk^< z4GNU&WvhExPQ|fy+r0USiR`j?ox|x~^$T&i$2cO~YuNKnT>Ndt0nV|-mxzTHg5F_B zxN#&5<{g|)({{-6dW6n*-Oe#HgwKJ*_Y5YTgI?vxGSoSn;pMx=$v-fUn1HQ2S4yyh zA6lIrTYl+;3-B_C^XQ@V-L_?5D`r2HC^_eQz^XJ;YJmSYAa|=sDtqRLkDh-Z}c zpbkhp0MgDHBB1}nCkM`&1!--cnQugOb$Lrka^2)kRWagp+OHqgxUC313U7=|!m512 zP<2YH(+%RW`+iP&F%Fhq#s}h3h{I+i;r3Ibcc&&&txi1rUC3^)8Z)zrWhb;{ao^Lg zea=m18AAiiA)QN=INcm1sGOvdLWwjbnVE(G#VPVJMx-uMigEeY8Jg#@#*J6CAF4;j z0FdA#sTm^y->HmW1{6uL#Il!xGGlM2*`nc&!xA1iVUSNIY6bi=sl6nL2QQ@K75m1D zmbb>Kzj(pB#R3)4MG-mV%YhNH$!d~hGsC&*57X9Q)C?#BK;uLxjJN+(v>&7Fv3Z9e z1+Yl)^Mqxe!WGRy-@~x<0>s6M=|^d+T9h8JL;_O*iJenXfVBJPW3evB#*u%GNmnM^ z#!)eelOsk%Bm_(Bc6Zb~D#rTYmS#5E&nyTatpkTkspQ{E14)PR)(%PG{c0rB&9T#- z1tW`<7fZnfnX*?eNZ}gsplnhY5zk>bva@@Mo8F!Qv4GT5!Emd;*%4?`tYv(vT~u4< zPs?=8m}d*m(ni-`=IX38M3ql{XohoMpItIrm(Fg%09wBc&kmN1z%kbf1!3@dEYSSD zq81~~__La};k>G(fDF^8k4$#k!i8g%cusk`DS9Hsa^Kn8xtE%D4G%>465Ne%n#X8e z58`FPEkEm;X;Ta$31cVr z%^-7OBycXZ>84Dh@oHZU0lz8I=&2L9Ukzm|0)=YqD%PcDGu%_A8u5XgmCX1Tw6?z* zY~D6E%VU$fLOZsd=d}R^z+n$RABWRtUKt&0HD*r_ss^g^89u$Ndao!*@xPc#c27=I z*ahode3JOc(_e;QNz0O+ZyY34WAz7A+1+9NNbT+J%HP3P7+tu2()Vk8L`{7;(ozSt zVch`_a>8xa3{{$Vr+1+Q5RN2Ob>NCSSuvSE#(be2nfBBzMvX!H7RUOr)6ZM3+L)8Qq#CRSqg7oY)ATI9ya_T1#uc^;g-k3Te%xat-1PsH@S z?k2LcSw$G-Y7--ljKO*6dDu^Ab_jYXo`$(B4QzR+b7qvx#q@8C0V2V2D)t!Hh>D40 zquZYWFxuY>m+8tOzxumR%}E|{!NJ>gsOBV9V5t>L*Al7`89=wY0Q)2Faw0rjp) z0rfX9&Odezkyw3;!GLbaS^9}BW`z}PzJpA?V?p^R!xHKuk(>14rjU`5Dstv#j!+LLXDn)MF1B?GQod7er9wh)vzJgL-e6WdqB0~hN}LZ(!n zw10+8VE>B?P<+n@kh|7uXJRTHoUD{IV_TN4JIJbHflLv-K8dvJOjCseMGW=Z`Tu~{ z6ix@|Kw}>~rg)afefMZr)&*)e1Se-yu*tG&L5X}$mHJFT%Az;H`R}p>Yzr83*4m@J zOA~UePtvvhG|ppfVNe^I=am7)K+J0441D{A%AbPtU88%6uI1e!e}7tW!)7WfG~=58 znR;z@El&aLg%f$wVD|P&P2<_sh*dnrZY9fap-kda;8B=WAEQIG%w_pm5C1x2&A#>CU;(uw4%%MV#JtJP61_Fzr20g}dBO@C@oaiGKcXSPiEL*}I0NIk;FEj&!z|=Pt`E1!o6g zx3$J*^AdGk_qij{{;*K8(c%Ptl>Z6tpQ|1MZ)yN4d;6unvkR>_K$2x~?U9{}MuCp( zEgurv(lbU^8+sxmt*efE>}5!<{v=NNQ3n9si$V@V$40iEjf9a8)gC8`hRo79Lj)3(XNh zEf$_93yL26v-<~fpDdX`V*)+*TgTgkSZyvk>K2{`QrdPOlRwC^3Y(b~fAr|a1dF+c zC0~v|+!jB*Hzq))clD_`;FI0R)yXZ+j*x!R9_EK1cUh*J`LUf!BI?nuag=rNaffHN zxn#H~GU(o_7+KUq`g#j_j(OdJHJr}twud89#Jj>+6!FmF0q<)TTW92>4)bx5T@Ig2 zq1{iF{dq&~TW*Daicy6cUuoG=g!3Rw1o)ceshZvBR3%0Ll>RIIOwYaZ%|}-q$h_4- zQZz*l^-qeAR}TY)IuKOg5q>z4y?=`6XzlfK@4Q%%{{<3B;^q7&NCXZb61Od3ZBj#6 z!Jcy*7eD4%TfcRdfNJoU7VfnT;B{*W1^lyW5N+lz7R~MO#97SYlF^F=6-ma^CX%01KR3BKwmdS*r0M}h z#-vfS77*`2oF^r{8w+h)?XCbt^`Yj4?`26PtIO^Cl1p#mOtxbD2Sa3YP1dx2tHXF5 zpY_)B74$=w0lb^0HNlZ@v^+y3voN&0Cq?Y$=k4`pPdwC)qRHdKlB|h?NGc(tJ2x;LdV_5v*i6+r$3GQ9 zs9X(bo7B!Wn3c9uKLC2P0#s!@9W405du3o8WbW-TZH=x!a#EN6BOXT({C7NV0!MQx z?FT4?YD+Jb$V3e-!~?j687xokKyz(zJ^v`H?e_oj<}>mdgh4fKxVU`Gg(Y4y2OXEt zO!4){X0GQs=)#;*&p>e!SWz;sa4Tat1H#>B3*KlhG>?=qYbwhDhjXNdnQGSeInE3(jU(X0W#`B2rYk&kOfuDNvb$g`J>74VgO zVW#;rd3^`~3)!HUreL)6s{o)vpu&3ERp)4KE|QT`J!a@-_Np0S`5_FNZlD*|j-PsKb&2~aGVa=1B_c}Wf>ltL0UB#97;EvdO#4(*6MLwsj3X1_ z2X7F1zHM8*0`2!6j%$r4RA%@dKmvEx%Yx^ezm3;CWZB?taklQ}1E+Dl{o&Kh$%}u5 z{2q9Xg$DR6f&l)5v1eH4g*rCEe)X%I%yGU`FP)7tkCzq(33-#qmll%`rK z0%xB0@%wU~2p_@S->aj)9Qoe~B4Ii&P_@13k%P#9~U3C zSf9_Mb*dfKravIW2e0&GS=VU!wM_$Bg9Rd5ln1~%)B$vg1UwpE}_$W(>{8>0&8 zUk~y{+}?w0xq7{1qbFu(cZW-k`6wPeNvr-(%|TnApmu4s?eEfUL%^}VjW0K0$FwcbRjCeO6cNH$bfE{xQBjmfLJXvx^QWzj0;;f zbgjGKDVq8e=ut_#MT6hU+z|Ig+;ca`zTrE*2vi~nDOaB8{WVUU89I29JAyQ!a9r%7XjG z#cy<9ucKY(XSAs z0N|_-I1M&Fzxhv^R1M|hr@)ao3^{^g8HSXDKmP2Es+sM@YhW}@BU6xN`zu}%TU3Uu zaly&nMF5jExzTGecZRf4T`=yI6<;l8n z>oz@&4l=&*KKz40-OlDWI5OH z3VdOB&hH5rPLstn*%ss%1j@k`_+&JB*4(XMA+`)??YeTJ#J64#n9jrO(wIECD%vji zP1jUiF9i*aJTC9>4r<*1oR3om0oM|6F1WJtO5dNFj9pvx&Z}CQGfqxqC|b?7RpV{* zk7UZfhua-}0FL&PW6;w~B+J3uD?%cDVB5a^KD>(U{5fHv*9+%p^V|J9>i1sA;08x0 zTU@Eib|=HeaIF{x_8K<43htN&Wv^Q9QA*XG^ti;vu)>ln3$^TdNczLk<{(7jKfD$@ zT{Ga+OfShQA1qidF3DXG>#@VKVuelP<%e?@JJm--9o8Y!2g77 z00)x@j*I2yO37i5YMce#u$<7GNAGW{2|`cgg|oa8{z%>>UC6T1LTU0Bjvi+Y zvBHY7(j${e9WBmOz`vZ?QWc(C!%!xdPBZJz1~nVg08Qg?@}Sc z0IEO14N43e>Al?hvn2prnDlMe;b zO)oGiX@Kk#FY-1PFNZmA35S<>{cOFu{KD&0iL#PYTXTu^+`00Lz`Mh#@_#Q9e@bLBM(DAVad|F*1940mkQlGZE+xN6d$7e_xDhHH{epV#lpJ6){X zalGx0$!`zhG;w(nSYiK&Xr>^FTyhR z(OCv^yg44qNoiy_*v*Q=gjRsLWh+IE>`5zE0uL57 zec*N*#7)*5pUozS#ps(`M)rk%gsP2Bh9pPMmt3zV1wOBP_F)|Ox@K@k-0HM~2m=3% zTQ(PM$}o(bV8|Bm#l|Sa<+VfYdAtlvA-9sd3jQwvl+8j6t$?v+Z}&>7IkUe;JvRT+ zKQJ)0zIHm2@4g+cHC{3HvHrzk0$e?pi8r*>O-T3pcwe~s3eBfR;m|a_n;WI<4_z$Q z;4hUo`D84ntI5Z8r$xJmj-8k{cT}*=;+FG)YVrx)N2j-sU`erwPZ`FSx4xPFr9=`C|Y!kE24B3%VjC%BkVJ0$qn#%FpO;>-TDEjJ2|1a!$PX_~9a5s_ys#uWiVbYh{DFmrh+a;fzA5 zMSWkDlq}bp*{dgF@k>+H-i9P4MTIb8%fU7)))#~CpZ_X9w}WU)z?8?p$B{dT2(eW` z{1+NKD|G4Ue>7Rbah&y|lwwK&MgjCyj=dOGoCC8?TWU5X1+_1}+b8o^z*-U7#u<-EgAD?y(vZ@h? zjJgeZLzjgTrcol$?9|snN>-BXS9~l7Kuxn$2Ce6w=cR-jZU^bA&5mZf8_WU%5%u-; zgI_oi#9Qc2Kh98;ws1={u!@XCbmx6d&OS~|XVgfIg3k(eOkH?n#so%;;Bdls*c3PVCBRwh)TuEtaV;L2XcMd2jTbe<{5ur*4kC9VlHgJgHy{ildi= zq$in2yxF-eW|>M>m8yaMc+~rl32tUw8=Zk&f?DtH^44#8OvcGKoaqmItPi5GGfl*AKH7CXPTPeLB<*LeM^q~s(W3qAKc~D12yNKf);a6GtLcnDe*3`r_Bim5iLNXKmd!oLlNBZX(meFVTx5!c zK8KJ+I=o8fH=ufTh96HY-9!azzey;ZYBRyvkZRWZ+_jx*_g>E8(+BKLFJu2)DlVJf z@?TyRf;p3?KC_>jWLc87FG@{7d5FWS39P zWnWVI5UW6KnxvjZbx%#Y9>T}3$4*^rMwo;}*m&d$0(YIwBK$aCBuB*eNEZmKiAtAt z#iJ8~k!C)IRv@aCT*j~Ujr>$-Wut9Xq@)Y`p!hv2{EUf@8T|C7LlE~3%I8m>`ulXg z4+%4B1Dzm|T$EWLaNtuUW8!Z!qFNOIN#j*v}c-L)@Hm^{buS!-s{=q%6 z`ZM8gel?u0Si?75GVAW}_5An2{u)@oS%fRxls2+g9W^mVVut;kOBB)m@h|>~vo+Fj zAdy=8c;**a%ReuWK6S2}=K=vcxUZy0t1alcdo1(L1d`2e*}y6g*$YAW%uA)3w=Rse zrN)iKn(KgHHm=n)Dk!30Nj8RksTu4><=CG+tJ^D_F&7v#lDlJSmPg4Mqf>|j2;Z%1~m zZ>%~JjZRy@zu&~TepxzG0SB|u=|B_g_mEI#{L1M&7#V=wpusS5Hd8BO9kU9#gj`aR z)6wzek1<(4{m*pQTb(N_uP__W8F+;Vlh&+jLHvv?w*V~85u7YsUp6Ci1bg{W=}p<7+Ejhh`b4Y zOAX1xYML8%mG(FMFcs0zz|C;a_LucOHG5t;Q`uU;9)OJgvP!2D5s(~Ai!t^>pHUlU zE7DhN^2R9OJtf*|us2|LdeqVTlK4hFe)e|oudT0fGCy7>z+zsdLaj5-Mku=iwKFrg^ z_MlE?q{G3Svh!=F$-IHt0W64n%UJ|Uqa9;abG(n#pnl@ux~Ul*^k(2;>0PMFAZcbq z;hVUUOz;1&DG))plSercYU$W<*5mr>trapn;vE{ypV@bQ-imf=v61drL-Lbe2U458 zT_W^JlRR_6U{C+R5^T7}k|s`q{QD(4oZ#wjlak~u61{t`R$HCa$L{);%Z$`FbWiWQ zPbCWIcjM_Cd-Wn}9&388*1aXb3SWscck$*%Kq+(c5o8rs|;}Lci)zeRh5O z^EH$YIuf%Eb^wF*^DjINsO{k4p087NlISg7)-ww z==gx~KKFr6?d*9YBO`Om%jp$cs%2u}KmE`y7LS7=rI~=3^U4LuI8_TwtvUxRg+9z~ z4%qfgJNUMsn*ZpvEuKQixxdVZ7EviljlwEt7R3w6nSEov)Kd`{SZGf6y+fjVzWGA2 z7B;9m;t~i9wK-Mpau7=$zC6KXjC0^hQ@6lCIUE9R-g{^o!IC90*Ct11YQ ztK8a%@SJ_&@37*IB)XCkGZ)w5MeEdBnsD*w+n8jkq2b-Y>0KiD7kq!0mmY`1x2MF) zlkWT)S?fRD&xH7b9;MHp6)-liSM}Sy%t32e%ErQGo0mW5XuEzYg;Px!U_2=n03^$} z#23ov=YDNRrwMm7jpd5IyRkp2tiC`OseP8*e)QiZb0r4hjD1iXR1^+eyKP2b0wg@NrhtdZ)QnhrWCK-D}PasKKM3|%H7 zOHHyZsNr&rg~L&O%0&I`6Uyu39QsYm%w|IjR-+xdd;WokzOu`oGC01xT1@#br})Tf zMSSY5e`#$`0;Bn*wj3lC2NPH*qfg3++u3SU zLIf8z3{wAzod$`&;luKi=e_Vyas&z#D)FgpH+uK^&N1`=s3)3S?iX&fr=;{|QCGeQf<`+lS3Gt(e-oy~cdzrm>*h)h zWtaIJU~=L2Jax2Y4W>9E{xHwGdRs=SpslvtspVJ?ySb5#z9R!h_Ln6zdYz?Sf0z={ zZmFDVf{lE(?BTyngDfY`8C}%-9)FQxqDS_kCiW`tcF(80Es^i;5jNuqt{FsR0F$$} z$1l0mZtO;isSC?X zt|?dRp6vK(-W^qIC3PNFQuV}qo_mQV)o}glR$Y1etbcHUeyi>9%N+^@gKL`=0~=V( zrBaBMe(#R)UbV#+0#|$!QOfIt3QT$i&R^EB_i6mbPwq{c7;|NvKOAA*$u-EK=5}kd zxX3F+(q~1f3nV^cXhZ8>LT#d)^Se%7x6PTOU#pZkg3_0X@~GgNIIzX-sfXxt-~|)@ zrVj6RnpF$g`Hc$8?)NQ}_utj0&Yzu7>m6C? zOr^=o91XRpQgz&ruRz=Z2dk z%EH(#c*$xhR|7H%*1PiAm99~4vOZOZQt?NZS~375J8<3?M>g>9!#rber>C!Ds2=vc zynIHdwcL=MGS6A0@RaXN`0Bvsz_11lVqgzJ#?Tg}oY`KH3a|LQb4scZ&Nv6fQS^fDm0{4Mm?vybVEsL z&%YEQ%IxyCyS#rP)V@iIrCp**nrD`dxdgc3d~TUI5~eJ6t({uw+(HK?^;T==m`!mA z@Er7?MG1YVWIq<6^lhdqfs4^B(UiW7Eyn)YBkuvWT%QNEklD8^Gn|2J$WQ%OM&M!? z7<#~<6Dm}~D;A`;_nUY8X}y1hBM-|bpnr&FFey1upcFrk)Y(!}isw`w1WT?5<#rC8 zt}dB%^bz%t!7`o@cHC2zzKk};s$I^FggpagDv2e-8QCQx{`v^7`N0b*$ChISqVP9c zC;S%|AlaF>Wecc?C|sY!$j&?^;-lVDglee&Nu}N@g_0ftl{^`JBa6LVG|e2uy?z|d z&^pUfIU|v~Nkh?pmebx;jjx7bpVCm}a2-6uQngGxK_lSPH`MrLhn z>O`%T-iTB81ykjOy(>|-*Rkk>!RJ4XfI282mj{2|dN(N`=Un(oKm674{_yLtdsID~ z5uI7@-sHKrDO_vbpdDnz>P4J<+FE>|g*Xvz*4bv-2h%ax*z@C4NMBB=$G|DYG?*g! zyHlW&AL-=yR@LFN>DeEffs;d-t@o5XOqTo^S^U!KvCEDMBlr~JA|VZBgaR6Mjh?HH zCkP5=t=#hWr4>?(U@(**A6=_4l}t&P?IYj(6X%Fqkmnx_mIp+_>B+JWiU_LVz zy0qOaeIV*zX;QSba)*qRDd?OAItu45YFl1LeqUuk4OS`0QiQ(F#*9qta9_dU_2!-2dXlRg~hM~aC|3c_4C6(k|6YJUd zL{73(%%Zh|fC$WRa@)P$lU2i3^oEq~gCjUSTxGKd&VnWfVdCq{LbOh+k}K{>Lj34~ z1I6dF)LL0I#>5dUEUZs!y#-?SzK9Lr;y?;uwUN1h{^4i!-U@=92d<$lcc>|0A~drg zk&5|EwuN<%bo_+DgqFytXOVw5vc%$T6R{@ijTvaW8JDzWGJU&kK&FY2HhE%ia$dRf zIewhIeU#4nAe0{JvXZG+Nb&Z#q{O~kNtDRs@%4C}b@6&OwW`46v%2vL&ndxqKG&1%a!gH4yP{IxeEBv%wposv4Y;iBc2}cMFkKU( zRCN^U#(KjuGN1jJNRs!A#bnj4=2yu6i099;K;xrj80%lVyuf*+p}uN^vt$mUZj>{^ z{Y52{l|mf+T5#qZ!Lxr%QC+QdF7*t&2&Vm>8??ETYWIYXOyUjtlBLAFvZ*iCzB*r@w`dFh7rHWoOy_E=MG zEvxHOcK!HlUo|&ZKa$J>5$=Et;uwXdnJL;<@&JGO$h#N3l7=Ys75A3v!g2Xo^6)nx zfS91{Y`?OoB*bXsWB`LgD+*Ny>@Y>Zk5lFxs)RLPR00`o4+3l|4yQ@4?9!>)3qWv< z2y1hDt-rbu_{GM$T9v>T{o9QIG&ih*6CF55#L4VJVie|q}+dL~4`M3=1 zr_!07C`%=VM94aEGP~v<>(EH#{y?&%8j}06JRV0YVCCG^v|!ehXIeft zJDd0(XCn$Y;K=Z=<6+hA753B>Y=ote3=ztihJ^mTG%po>Bb0Dl&dz8l1z8r>$n(xR zJ`N5;l&ngnDT?gvc4V4O^yLR^L~?6o+RCb6G2|hy2iFPo|Jr0*a)L|a(sK{cJ~?~1 zL4!@OjHvk9zyFd2s3=DYeiAOXWar}>g-9c2X{qwVACSe4slsb7P%r0UsO(BurF)O4 zhlFwHuJS1OtM5~F%7Xpn?l=cPHIUpRDu(qA3heFD=FojOIz-8?6^T#bS4Ya#>c{=< z30B>xFgbJ%&eyDh#FXthHR5ln57IcyM-hhW4^aiCVjgx0C-W z0%my9!ZZjfXB`q6Kcy>~1%hV&f|m1W0xog(E@EUxX~{`zLx(Dn>j5=^0|&@uOrGTpIiYtb<{3bnHlz<0036{Sy53YCY15!567amS3Dc zCYfBiC>CH3eFlsv8N3#5ZGxRJ%4}qQ+^`SZeW500m#!aHCpv|>i^ZX-V1J_@t%p^f z=5DW>OoIaprewYg2#!%ob%W3^bogHNd(KZ5Uu*wV$#phtyq!zKyXM{^Vr}Shz7}@< z&2JskD^~2@+|->O8|16j*+Bq;07jyM*+Hv$bsk5Oi-UeatYciT{)iOTs#J8_PP##- z`zAf2YV{2Z{12KgZ~1~{JN{3!cyf(>O>fCmfF+vTtp}Y#II~}sTsqnF7W!7sbLwK) zYTQ5OGB!3(_^M4QE1_3dO`#C3Dss&TIw*KQ$}oS5_LC&6Kq=#LMC77zko z8a{Too+?eo3k4b7|d6c$4dQrRN$iA>v2rz$)f@n6rxTe92V z(DArKda|K@e$+&I)MQ}(T#yt{4$pYomD#+)ZQ7bxlA0+Fv#Z?bzUh(KlU`bH(1&l+ z8)H#exw{Ofyy``4ZS#iny4B?Yi71>>&@}(RGGuG4-?|0bcW7!Re~vyD2v5}Ei~4bF znneW{7!)KPnu_56=L-;4e%Phck;@kqGzTT`4j$N>%AuWjn0>@-HIBbH&oytm?94<| zRC1F3XfzGOeF>Gr$bO}+9wQzI81BMtZD~p%dp)`2(${;qIEj3JjTm~a`H|j#+s%ht zoQ<;BxyuO}Ftl=e{Nd18urUwz#g)!p@TR1SUs~Znz-2L-xHj%srDG+D5ceU1zQQnD zQ)Mg<(mtW0NGm)|za4Dhfub)tm_=Rl1K{QQ=P@E4SwwHVIM3w9Vu>jv27_&8^F_6d zL^XFL6YDU43-^%BLS$34|Mkh_X!vc}%M32Bgr3S_h4RY(Zi_ZnD!HY$z}Y)?V$Ozd zu0mR2Nc;OzI-&;Es1_YAqC%zaflh};T-s7gM3yxcvfe(qk%+Qg17ol9{B>b_4;2cJ zmlsZ2VUoQ8#-fF>v#F{6YbH=+$lm@nfR;7Uw$ECI`2k(0v?WM(-ONqh;*`5c|4Xl0?5HNasXvjzxl{u?n0F}zhs9_`J{`-SeEe1ApBNr% zmu{n|COx!|#NFfcXS3$c$d7IwY`q2(Hve0^O8At|?~`0r1+nlj{d4+AIc~Li-Zw*j z`&v(Q`}@O zV3)~RmjQpVM?E-FR*a%vqA4Hbc+}hV2lP2#F?~44pqMyU4{XC3wTjBEMT|bf6WrvA z1P+Z{Trg2;7=5x|8kgI_IOk{W@IftCV6G3mlw2*)>l83WN(QoHr$$$|R5L0iL z+eSO*x3xzQvhZO3pj*wS?_S=*vO>QW8?I#t8b5RD$2Bk2kgJR^baIhDY$=Lj-X9+n zFNyCNIn_K&3W`|o??b2AF}U3^0HYW&C|C$WsAz%ZoTM7pj!ec;(^wk@;*J9e_XmnkDdDe5?(_`@8RXlv;i}$Su91c$a`SoEFS{tc zNICGzIcqW@1o@ikon-PvsT=F)Z2=-8dY)xcGIj2j1 zka?ud^vn=WP?Fy+Mm8=y}6$BB$!jkF8;aR*!ec7IGy zkly-3wTK=68>54iO7L@ei5;H0b*hH`0Pf}!$?or8&fn>J-OI@X>Yu4eL zrtnx4u?E(w#*3SAZIdjbfqX-Rqq<@6tUYk{cviO|G}Et?mqGir@8?%*QXf7w)Q(YP zU}#VN>Bvby{^N`U%)@W|vew!sPY=wuZ^0|^NsZ76b2 ziGK+=i3}PC`37xf+qV;TP5`vnvn%}l+}2NPS9@vqF$ZdEpdFDkX1+w-aT?*8%Nz7y@r;tsW%ofzp9U^q_9z zAkkmWDNhXlX;Z4&Eh0TLt`wCVtm5HjzW2}T?@h3*g_wddbGN&09YV`)U6>L9Da&Jj zxtmFen!jp9z^~;3t4~(_2kFF^ECSF_R#q+-+17`&L4TzzweAVNEG?~Fcq;+#IMAYv zPHSGIDfECffz|>iDfhQsSwE#n1G3rG7d7cVSAVge!lxY8v)y&Q`B;<+*v*zGSEr z7txgi7EWdvZD8nhPWk2VglpWmBANVO>L<7&BR@g{N`3K$0`GHHg4O%7!9)ZNhpz5X ze*`gZ4xd~cu&*;3G(T?bVZSKx0Cl1T&EWAtR&}ppIcRrw*{C1HI!s?Y^WVR2V2(vQ zZyw3if=mwMvfC9|`}pcoG3onBT7!(VW*bPxoT=P9u6akR2~vw9WKI#&BHCqNvdARd zn$4m^Y+7~3i$;!4j5hB348i*A=hpi(?e2a^d|^`ccv@ayl*9QZX3802yRoTaWMnZT zQ&^-IXv3$U9fb~<+wo;~wpDXPgJ2G+*n|7RbQM0?%wSE!Z4}4^ke1DP$9jLVWa2OE zIYbp*)BA5FuiuZ4;};{hv?E?Nn0GOB>vQ_7??oh-idJ{6eU(pf3VU(pmnT2sN|NFD z#d&>cM5u+D*Kh~*9!MRgpA@S)=Q$%vVL~W&Bd51^r4BQGi<2DNNjZzZWjixi_HCZmDilsgU-t1wIdc0++9MLZ*a3E>VngA)=tX3 za&Gkj<;!}BDLU@uG5+SF5!^l&=yJUSYp`3njo{GVH8Toso2>hG9Pn`@b(D;20;zS? z9#UlelTXp!f81nb`WTI4cPKt93IViTbGL`lqv9}V_!SjkmqW%R_;%mSJDx}F_^QQU zEgs`1GX^fI;I%OH>x#)O&UpgA4l1?XfZ_NCsV%7wckbG$HKE~_W0b4&7Lg#JXmSP1 z%9ld2(J6BRf|qrSyWj7}Bc#Z*98&uE-m5g*1@?xJl$(O#=Cq;*|cElkjrTsDD5i51iI^q<5#&PS3UEy)kO?W(|n?#pB6P`**W`p zV1}$_pb}S(0GiO53a?C75&hsJUk<)VaJ^!Fw5DR3A#?rlypCMuQon6x{pp=q+0a4M zpB&~eMp)!%ug^ddFF60B$=;xC@{4F7MtoeJ!TnTZ-nEgF${gn!Y13>g8K5@EN7FwR zg%U;vvgh#=sw`+C8ug&W25BrZ(L#`zG~ghv3ot#Vyb-h9t`aLGE!HaW73WFsN>ZF8 zifmb6Di!&`2yqdI2V_^qm_0mZN5@u8YP_vR!zUyy5Zv8GYJovBcsiKGr{cTrC@#q; z>@&+&cx^m^-Qb=Yve{*T^Vg`vS9mS%_wheHwS|cm&PB=w;c-+UVsqROpz7KpYtG9D zqe{6M$WCD#Wk|9_Kfq%#(}g%s*K-xwZ_w!Zv9Ar~5|A|#Y0_*TL+&;p5YhZS|M7>Z z#4{9+Et+b#C$E4;^6m_nf8HR-&@Pbre0npI)tPHZe8nZ1HR7n#eY)bf0mpZ%w`083xkD_HQW@T#+ow%NxdZ;b&P8HR#41ExOr)|pj{*ru zVGy{GElIlE)xpS+(Hd+DEEx@83JBQ2Tnb@&^bqwZwc24%+?W?hdKDH^;HsnMO^2KQ z!tH2ea_DSzw>BgBIR;9oi}s`-GRTp%`Mak8OW!N)gWcj8r6MD*%hG?I85)+>A~Tlb zila&;k#^sWCkSB_?0B`sxLYx$a=Bf%k<2i`$LeMt9<9#aJs~@#^YI^U)j4s25T05|?;G zwk>k0FBDO=IT{jw^7{R^z<(@h7oS)Vf{|xIxY)-$Y z#XBo4x8#OtTN$@Fq9{16_~=?$0q}o2LNOr!+WpnD;cp{bM_;#&n1a^~vR3?wFFD%f z6S3m49EK16>hnbZZ7qp!nx8q26Y}oG>AqmiamXzE_>ts1kloeQ+vD^j+w2)0<{5ZX zUWD!y!xkw8wwh^Ydz%i#IirNZz%?AsNiQW`CsNHHk>fxhcWmCIBO3Peov3JaqAM`M zU#ksiGY7i4<%h!E-+AV;lAJ^t zQW_C>|FNlMEq?_pWrdGeu{{4h=Lh-4cvU*?r7%{E`Rua=+>kBf&R$?EGVqS|3klJP znf>>Ynus!@RGV~e69r*Hx)DbEJkJqz*7equ|5DdFU4TGle?2Sj%6~%U@l%?>@v{z5 z#Nz&5c4TTrS;6Ae!JkaW&HD+-9N`(#`92W>T7~!G{fGW)e%$eTsZ%Dh#doA>P~2f@ ziy)*X0F_6>qSuapt^*AnD2YsrhL<*+q|7O~K^DJzl4E_QxUHMl2O@~s_;P*USfzhX zum~h{NULEm58p0pzNMfWOGv|)bMs~A3|u-t^nG4lkc-%qBMPIvKOoM356LTBIK)s$ zpe<&ZK>7acVM?M!VC&+D+fVDoN8EjnpQ~Gb;V2Er>04dhzjdH~Do^Ivk$Bat`zs?W z=Nz8R;Lfc`d_R4OHY`ayEBeFBvVXH!^&o92049rR=Wjmk5&!w})XB!RJhQ^h>OOVT z4P~=$M{UwbG?Bg4ZGl;ga7_W5N+qGg*n5l0=sDN$%=O4+WRm2}tx)K9$xag>XA*yY zR7^Ri<`2Z(;sHRI^!)sM;8nRNFWX+pV=Lmzp3o)xnR@6wXTCIP1noWuG0Qn`MY3>E z=U>RLpg@%wI{Q*pFUriHdO~PCrecVgVc)zNWp$Xu>nNB;KtM_FI4VcHFxN%;r?D4( zZ$E4Usbr;UV{fbx=%fi=&=CGB?^gf(mj^hSQ{1t55_RxgfutkCeF<>=ZYVEx!8)K* zL3^s^+F;)$f3e2iI{09d9D_<_KVgs1Y?6th*9ha!TI0TS(QbemAlqH-Hh_`nYFCyl z2c4##{-O|>h5R#Sz5)G1E`p%)L_LTkR`$O z^h-VFk`il=QK15h1pz5-{m$#d?mHX17*itntO2FeYL?lDbnPrFYL6}>EbuK=8?!=9 zx)@ZoJ|+!t#hduO8E^HcO+9r$mV2&&P`FXeO5Ke0!eJ^DZq}j}Ug;!mQl3{=cbKKW zqL(lrWfDPa>$0#(O{Zr%4R2;9;;Cv-*{4_; zk0uUC+kvQel8VXT+H$06bt(yiqa8YlWzUiNeK=xf(gfqc8siPB$s|lB!(H&>7Vwk4 z2)42qIcW+hf; zL#I~h>vAcu+~Ro}L{Gdxp@+5p%$bT@_mfu?BOLP(n~e$$nutfnSejWv;AyR1Wsy| zK96f_0Gsf28>!6FoXxze!P^EEX~SDje7CMLe%3P&3?-?n91sw&^n|U>M~Ee3acFW6 z)ZJIOL2FgAUOJ(3*=0P-C+suZZ#ic^ND8B84Yo_eAmVi#9bGe&)c5GUWWKzGfVqoy z1F<8K2ohcz_^jTQPUFf%m_cRSRcqhYlm0Wb@czovOVbv& zjlJ+XamvrnUS#-b02PJvsj9Pm%BZTR9v2&Llsd6!eWU{ko20ya?vnpB4Z690Ydm9ml6R4I;B<(QF0oPS?B-h5MeYu5waF+!9FL ze22HI!Sctb*XW-;IMk&r3vy*Zh}x$20O#!M>+2$PCl7UusCX>b()_%$ zzw6)!VJxsUmkHm@l=-mnel*ksn)Bo{uOS|NlJF!)PkpPqw;`Fuq1Rw-9QZs$WE@(B z5-1$+W$^(03wh}vDnSA1 zoNr=dUF(B>>pasPWeCgQtCM0DTgq~eY%#8HTyolU)2}41L}SQ8`5sbttPiS$`{d(4 zo2~WrEB2Zg8LglVc-DUCC|9#E*wR{tJc1&O1DUz-Rpl6bU3sI6Hv6%0^WD>@Vou?` zX^Eir>61(dveK%XbS2teZWJ9op<6;#amb3#maCFYOQZl69 z2yD3ILMB==2J|f{(}`~g2nek-RTN)X=6<#p*D0#RKa3?RFk3SqM`dbyrz8H;HWkF7 zT{<~Mk|Q?o+$+m_L`Dg-C&sfjqFb|<3!n-@def}vKGxMS%vc5oUCom7?mc#^_pYf_ z9r#Kb18nS(Q4GUL*z&mFs4yMSUs5Ueq{ehC-CGI^mD2?m^;{;5t$Uc~Vs8Tvi-F6m zgXZkgrZ{3eB4jaz*-~p$Yq|{oJ4QNrR2M^ej4SP)Nu-x>q&UE1F`fN}RL{El`h_-i zMw?RpJ!_orcbCX~0GQM*X1Ho=USD5t^Y4#geo)L$91bJzPVe-oNJ1;xUIzqAbJ9U<=kJ=BNUhD*P!*nC3`785sJn^#h8f(*Oj~2$7kqs6 zz$ns+De{4a_BaiKDbgyvtP_|Gb+?#!_y7C<_lEEyb~Ed-gpeNr@Y7V)Qz=(Mg#8bj Cy!;3N literal 46334 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 0 y k < n) hacer +funcion potencia_de_dos(n) + si n = 0 entonces + retornar 0 + fin si + mientras n distinto 1 hacer + si n es modulo de 2 entonces + retornar 0 + fin si + fin mientras + retornar 1 +fin funcion +funcion mejor_potencia_de_2_menos_a_n(n) + k = 1 + mientras k > 0 y k < n hacer busca el numero potencia de dos mas proximo hacia abajo en n - - fin mientras - - retorna k + fin mientras + retorna k fin funcion -funcion comparar(inicio i, inicio j, inicio dir, inicio arreglo) - - temp = array[i]; - array[i] = array[j]; - array[j] = temp; - +funcion comparar(i, j, dir, array) + temp = array[i] + array[i] = array[j] + array[j] = temp fin funcion -funcion unionbitonica(inicio low, inicio n, inicio dir, inicio arreglo) - - inicio i - inicio k - - si(n > 1) entonces - - k = n/2 - - para i = low hasta i < low + k con paso i = i+1 - - comparar(, i + k, di, arreglo) - fin para - - unionbitonica(low, k, dir, arreglo) - unionbitonica(low + k, k, dir, arreglo) - - fin si - +funcion unionbitonica(low, n, dir, array) + si n > 1 entonces + k = n / 2 + para i = low hasta i < low + k con paso i = i + 1 + comparar(i + k, di, array) + fin para + unionbitonica(low, k, dir, array) + unionbitonica(low + k, k, dir, array) + fin si fin funcion -funcion unionbitonico2(inicio low, inicio n, inicio dir, inicio arreglo) - - inicio i - inicio k - - si(n > 1) entonces - - k = mejor_potencia_de_2_menos_a_n - - para i = low hasta i < low + n - k con paso i = i + 1 hacer - - comparar(i, i + k, dir, arreglo) - - fin para - - ordenamientobitonico2(low, k, dir, arreglo) - ordenamientobitonico2(low + k, n - k, dir, arreglo) +funcion unionbitonico2(low, n, dir, array) + si n > 1 entonces + k = mejor_potencia_de_2_menos_a_n + para i = low hasta i < low + n - k con paso i = i + 1 hacer + comparar(i, i + k, dir, array) + fin para + ordenamientobitonico2(low, k, dir, array) + ordenamientobitonico2(low + k, n - k, dir, array) fin funcion -funcion recorrerbitonico(int low, int n, int dir, int arreglo) - - inicio k - si(n > 1) entonces - - k = n / 2 - recorrerbitonico(low, k, 1, arreglo) - recorrerbitonico(low + k, k, 0, arreglo) - unionbitonica(low, n, dir, array) - - fin si +funcion recorrerbitonico(low, n, dir, array) + si n > 1 entonces + k = n / 2 + recorrerbitonico(low, k, 1, array) + recorrerbitonico(low + k, k, 0, array) + unionbitonica(low, n, dir, array) + fin si fin funcion -funcion recorrerbitonico2(int low, int n, int dir, int arreglo) - - inicio k - - si(n > 1) entonces - k = n / 2 - recorrerbitonico2(low, k, !di, arreglo) - recorrerbitonico2(low + k, n - k, dir, arreglo) - unionbitonico2(low, n, dir, arreglo) - fin si +funcion recorrerbitonico2(low, n, dir, array) + si n > 1 entonces + k = n / 2 + recorrerbitonico2(low, k, !di, array) + recorrerbitonico2(low + k, n - k, dir, array) + unionbitonico2(low, n, dir, array) + fin si fin funcion -funcion orden(int arreglo, int n, int dir) - - si(potencia_de_dos(n)) entonces - - recorrerbitonico(0,n,dir,arreglo) - - fin si - - sino - recorrerbitonico2(0, n, dir, arreglo) - fin sino +funcion orden(array, n, dir) + si potencia_de_dos(n) entonces + recorrerbitonico(0, n, dir, array) + fin si + sino + recorrerbitonico2(0, n, dir, array) + fin sino fin funcion - -funcion ordenamientobitonico(inicio arreglo, inicio n) - - orden(arreglo, n, 1) -fin funcion \ No newline at end of file diff --git a/doc/pseudo/bubblesort.txt b/doc/pseudo/bubblesort.txt index 915635c..10169d2 100644 --- a/doc/pseudo/bubblesort.txt +++ b/doc/pseudo/bubblesort.txt @@ -1,13 +1,19 @@ entrada: array: arreglo de elementos enteros; n: tamaño del arreglo -salida: arreglo array ordenado ascendentemente. +salida: arreglo array ordenado ascendentemente -cuentaDeElementos := n -repetir - haCambiado := falso - disminuir cuentaDeElementos - repetir con indice desde 1 a cuentaDeElementos - if (array en indice) > (array en (indice + 1)) - intercambiar (array en indice) con (array en (indice + 1)) - haCambiado := falso -hasta haCambiado = verdad -retorna array +funcion bubblesort(array, n) + flag = 1 + mientras que flag es verdad + flag = false + para i = 1 mientras que i < j con pasa i = i + 1 hacer + si array[i] < array[i - 1] entonces + temp = array[i] + array[i] = array[i - 1] + array[i - 1] = temp + flag = verdad + fin si + fin para + j = j - 1; + fin mientras + retorna array +fin funcion diff --git a/doc/pseudo/countingsort.txt b/doc/pseudo/countingsort.txt new file mode 100644 index 0000000..ef3e8bb --- /dev/null +++ b/doc/pseudo/countingsort.txt @@ -0,0 +1,22 @@ +entrada: array: arreglo de elementos enteros; n: tamaño del arreglo +salida: arreglo array ordenado ascendentemente + +funcion countingsort(array, n) + para i = 0 mientras que i < n con paso i = i + 1 hacer + count[i] = 0 + fin para + para i = 0 mientras que i < n - 1 con paso i = i + 1 hacer + para j = i + 1 mientras que j < n con paso j = j + 1 hacer + si array[i] < array[j] entonces + count[j] = count[j] + 1 + sino + count[i] = count[i] + 1 + fin si + fin para + fin para + + para i = 0 mientras que i < n con paso i = i + 1 hacer + newarray[count[i]] = array[i] + } + retorna newarray +fin funcion diff --git a/doc/pseudo/mergesort.txt b/doc/pseudo/mergesort.txt new file mode 100644 index 0000000..bd9b2b9 --- /dev/null +++ b/doc/pseudo/mergesort.txt @@ -0,0 +1,43 @@ +entrada: array: arreglo de n datos; n: tamaño del arreglo +salida: arreglo ordenado + +funcion mergesort(array, n) + correr_mergesort(array, 0, n - 1); + retorna array +fin funcion + +funcion correr_mergesort(array, izquerda, derecha) + si izquerda != derecha entonces + medio = (izquerda + derecha) / 2 + correr_mergesort(array, izquerda, medio) + correr_mergesort(array, medio + 1, derecha) + unir(array, izquerda, medio + 1, derecha) + fin si +fin funcion + +funcion unir(array, previo_izquerda, previo_medio, derecha) + i = 0 + izquerda = previo_izquerda + medio = previo_medio - 1 + far_derecha = derecha - izquerda + 1 + + mientras que previo_izquerda <= medio y previo_medio <= derecha hacer + si array[previo_izquerda] < array[previo_medio] entonces + temp[i++] = array[previo_izquerda++] + sino + temp[i++] = array[previo_medio++] + fin si + fin mientras + + mientras que previo_izquerda <= medio hacer + temp[i++] = array[previo_izquerda++] + fin mientras + + mientras que previo_medio <= derecha hacer + temp[i++] = array[previo_medio++] + fin mientras + + para i = 0 mientras que i < far_derecha con paso i = i + 1 hacer + array[izquerda + i] = temp[i] + fin para +fin funcion diff --git a/doc/pseudo/quicksort.txt b/doc/pseudo/quicksort.txt index 38a4e27..d999775 100644 --- a/doc/pseudo/quicksort.txt +++ b/doc/pseudo/quicksort.txt @@ -1,40 +1,33 @@ -entrada: array: arreglo de n datos: n: tamaño del arreglo +entrada: array: arreglo de n datos; n: tamaño del array salida: arreglo ordenado -funcion quick_sort{ - - si(n < 2) entonces{ - retorna - } +funcion quick_sort(array, n) + si n < 2 entonces + retorna + fin si - inicio i - inicio j - inicio temp - inicio pivote + pivote = array[n / 2] - pivote = arreglo[n / 2] + para i = 0 y j = n - 1 con paso i = i + 1 y j = j - 1 hacer + mientras que array[i] < pivote hacer + i = i + 1 + fin mientras - para i = 0 y j = n-1 con paso i = i + 1 y j = j - 1 hacer - mientras(arreglo[i] < pivote) hacer - i = i + 1 - fin mientras + mientras que array[j] > pivote hacer + j = j - 1 + fin mientras - mientras(arreglo[j] > pivote) hacer - j = j - 1 - fin mientras + si i >= j entonces + break + fin si - si(i >= j) entonces - break - fin si + temp = array[i] + array[i] = array[j] + array[j] = temp + fin para - temp = arreglo[i] - arreglo[i] = arreglo[j] - arreglo[j] = temp - fin para - - quick_sort(arreglo, i) - quick_sort(arreglo + i, n - i) - - retorna el arreglo ordenado + quick_sort(array, i) + quick_sort(array + i, n - i) -fin funcion \ No newline at end of file + retorna array +fin funcion diff --git a/doc/pseudo/selectionsort.txt b/doc/pseudo/selectionsort.txt index 22b79d3..06e930e 100644 --- a/doc/pseudo/selectionsort.txt +++ b/doc/pseudo/selectionsort.txt @@ -1,31 +1,17 @@ -entrada: array: arreglo de n datos: n: tamaño del arreglo +entrada: array: arreglo de n datos; n: tamaño del arreglo salida: arreglo ordenado -funcion selection_sort - - inicio i - inicio j - inicio temp - inicio min_idx - - para i = 0 hasta i < n - 1 con paso i = i + 1 hacer - - min_idx = i - - para j = i + 1 hasta j < n con paso j = j + 1 hacer - - si (arreglo[j] < arreglo[min_idx] hacer) hacer - - min_idx = j - - fin si - - fin para - - temp = arreglo[min_idx] - arreglo[min_idx] = arreglo[i] - arreglo[i] = temp - - fin para - -fin funcion \ No newline at end of file +funcion selection_sort(array, n) + para i = 0 hasta i < n - 1 con paso i = i + 1 hacer + min_idx = i + para j = i + 1 hasta j < n con paso j = j + 1 hacer + si array[j] < array[min_idx] entonces + min_idx = j + fin si + fin para + temp = array[min_idx] + array[min_idx] = array[i] + array[i] = temp + fin para + retorna array +fin funcion diff --git a/doc/resultados.txt b/doc/resultados.txt deleted file mode 100644 index a48ccdd..0000000 --- a/doc/resultados.txt +++ /dev/null @@ -1,41 +0,0 @@ -Quick sort - 10.000 - 0.1 segundos - 100.000 - 0.17 segundos - 1.000.000 - 0.173 segundos - 5.000.000 - 2.0 segundos - 10.000.000 - 2.4 segundos - -Merge sort - 10.000 - 0.28 segundos - 100.000 - 0.30 segundos - 1.000.000 - 0.304 segundos - 5.000.000 - 1.577 segundos - 10.000.000 - 3.236 segundos - -Bitonic sort - 10.000 - 0.09 segundos - 100.000 - 0.124 segundos - 1.000.000 - 1.405 segundos - 5.000.000 - 7.421 segundos - 10.000.000 - 18.365 segundos - -Selection sort - 10.000 - 0.143 segundos - 100.000 - 11.645 segundos - 1.000.000 - 21 minutos y 2.0 segundos 1262 segundos - 5.000.000 - 8 horas, 45 minutos y 50 segundos teo 31550 segundos - 10.000.000 - 1 day, 11 horas, 3 minutos y 20 segundos teo 126200 segundos - -Count sort - 10.000 - 0.258 segundos - 100.000 - 30.269 segundos - 1.000.000 - 50 minutos y 26.9 segundos teo 3026.9 segundos - 5.000.000 - 21 horas, 1 minuto y 12.5 segundos teo 75672.5 segundos - 10.000.000 - 3 dias, 12 horas, 4 minutos y 50 segundos teo 302690 segundos - -Bubble sort - 10.000 - 0.326 segundos - 100.000 - 32.347 segundos - 1.000.000 - 53 minutos y 54.7 segundos teo 3234.7 segundos - 5.000.000 - 22 horas, 27 minutos y 47.5 segundos teo 80867.5 segundos - 10.000.000 - 3 dias, 17 horas, 51 minutos y 10 segundos teo 323470 segundos From af6d3f185afd5f9ccce423b63049e7c9591d47b7 Mon Sep 17 00:00:00 2001 From: Rodolfo Cuevas Date: Thu, 22 Nov 2018 20:41:41 -0300 Subject: [PATCH 16/17] spanish #101 --- doc/Informe.tex | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/Informe.tex b/doc/Informe.tex index 2a56e85..eb2398f 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -95,7 +95,7 @@ Xavier Canales \subsection{Análisis temporal} \subsubsection{Merge Sort} \underline{Caso Promedio:} $ \Theta(n log n)) $ \\ -El caso promedio de merge sort es lo mismo que su peor caso. \\ +El caso promedio de merge sort es similar a peor caso. \\ \underline{Peor Caso:} $ O(n log n) $ \\ En el peor de los casos, el merge sort hace aproximadamente un 39\% menos de comparaciones que el quick sort en su caso promedio. En términos de movimientos, la complejidad del peor de los casos de merge sort es $ O(n log n) $ la misma complejidad que el mejor de Quick sort, y el mejor de la clasificación de merge sort toma aproximadamente la mitad de las iteraciones que en el peor de los casos. \\ @@ -128,30 +128,30 @@ El mejor caso para el bubble sort será cuando el arreglo de entrada venga previ El ordenamiento bitonico responde igual a todos los casos porque siempre antes de empezar a ordenarlos realiza las mismas comparaciones para dejarlos en la secuencia bitonica. \\ \underline{Peor Caso:} $ O(log^2(n)) $ \\ -Su caso peor es lo mismo que su caso promedio. \\ +Su peor caso es igual que su caso promedio. \\ \underline{Mejor Caso:} $ \Omega(log^2(n)) $ \\ -Su caso mejor es lo mismo que su caso promedio. \\ +Su mejor caso es igual que su caso promedio. \\ \subsubsection{Counting Sort} \underline{Caso Promedio:} $ \Theta(\frac{n^2}{2}) $ \\ La complejidad total es igual para todos los casos, porque el algoritmo usa sólo ciclos simples, sin recursividad o sub-funciones, va directamente al análisis. \\ \underline{Peor Caso:} $ O(\frac{n^2}{2}) $ \\ -Su caso pero es lo mismo que su caso promedio. \\ +Su peor caso es igual a su caso promedio. \\ \underline{Mejor Caso:} $ \Omega(\frac{n^2}{2}) $ \\ -Su caso mejor es lo mismo que su caso promedio. \\ +Su mejor caso es igual a su caso promedio. \\ \subsubsection{Selection Sort} \underline{Caso Promedio:} $ \Theta(n^2) $ \\ El ordenamiento por selección no es un algoritmo de ordenamiento adaptable, realiza el mismo numero de comparaciones de elementos en el mejor caso, el caso promedio y el peor de los casos, esto se debe a que no utiliza el orden existente de las entradas del arreglo para ordenar. \\ \underline{Peor Caso:} $ O(n^2) $ \\ -Su caso peor es lo mismo que su caso promedio. \\ +Su peor caso es igual a su caso promedio. \\ \underline{Mejor Caso:} $ \Omega(n^2) $ \\ -Su caso mejor es lo mismo que su caso promedio. \\ +Su mejor caso es igual a su caso promedio. \\ \newpage \subsection{Datos} From 3b0f6def259f40a2d92dabed1ffa50a8801df7df Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Thu, 22 Nov 2018 23:54:39 -0300 Subject: [PATCH 17/17] final informe revision --- doc/Informe.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Informe.tex b/doc/Informe.tex index eb2398f..b6c0ad3 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -23,7 +23,7 @@ } \usepackage{hyperref} -\hypersetup{pdftex,colorlinks=true,allcolors=black,bookmarks} +\hypersetup{colorlinks=true,allcolors=black,bookmarks,pdftitle={Tarea 1: Ordenamiento}} \usepackage{hypcap} \pretitle{%