diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..18ef9d070 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "python.testing.pytestArgs": [ + "tests" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true, + "python.testing.nosetestsEnabled": false +} \ No newline at end of file diff --git a/doc/MIPS_Instruction_Set.pdf b/doc/MIPS_Instruction_Set.pdf new file mode 100644 index 000000000..d34ae7c62 Binary files /dev/null and b/doc/MIPS_Instruction_Set.pdf differ diff --git a/doc/Reporte.pdf b/doc/Reporte.pdf new file mode 100644 index 000000000..60546737a Binary files /dev/null and b/doc/Reporte.pdf differ diff --git a/doc/mips_manual.pdf b/doc/mips_manual.pdf new file mode 100644 index 000000000..ae25bf45b Binary files /dev/null and b/doc/mips_manual.pdf differ diff --git a/doc/reporte.md b/doc/reporte.md new file mode 100644 index 000000000..9374a28b0 --- /dev/null +++ b/doc/reporte.md @@ -0,0 +1,104 @@ +# Reporte + +### Integrantes + +#### Yasmin Cisneros Cimadevila ---- C511 +#### Jessy Gigato Izquierdo ---- C511 +-------------------- + +# Arquitectura del Compilador + +La estructura del compilador la modelamos de la siguiente manera: +- Tokenizador +- Parser (en este se genera el AST) +- Proceso de Semántica: + - Colector de tipos + - Constructor de tipos + - Analisis de dependencia cíclica + - Chequeo de tipos +- Generación de Código: + - Transformación del AST + - AST COOL-CIL + - AST CIL-MIPS + - Generación del archivo .mips + + +## Tokenización y Parser +Para la construcción del lexer y el parser se utiliza la biblioteca `ply` de python, que provee herramientas para la generación del AST a partir de una gramática. El método de parseo utilizado fue `LALR`. + +## Semántica +Del proceso de análisis de la semántica se obtiene un nuevo AST en el que cada una de sus ramas ha adquirido el significado semántico que debe tener, es decir, se asegura de que se cumplan las reglas definidas que asignan un significado lógico a las expresiones dadas por la sintaxis del lenguaje. +La evaluación de las reglas semánticas define los valores de los atributos de los nodos del AST para la cadena de entrada. Para el caso de los operadores, cada nodo de este tipo, al terminar el análisis sabe si la operación asociada es aplicable o no. +En el colector y constructor de tipos se recopilan los mismos, tanto los existentes en el lenguaje como los creados por las clases definidas en el código de entrada, y por último en el chequeo de tipos se comprueba si en el contexto dado puede ser utilizado. + + + +## Generación de Código + +En este punto ya tenemos un AST sintáctica y semánticamente correcto, y que quiere generar un programan en MIPS equivalente al código de entrada que COOL. + +### Transformación del AST: +Primeramente se hacen modificaciones en el AST actual agregando una nueva funcionalidad en la que los atributos declarados pero no asignados que no perteneden a un tipo build-in (Int, Str, Bool) se les asigna una expresión nula, también en esta transformación se le asigna un constructor a las clases con el cual posteriormente se realizará la inicialización de la instancia de clase requerida. + +Como pasar de COOL a MIPS directamente resulta complicado, se pasa primero del AST de COOL a un AST de CIL y luego a partir de este último se construye un AST de MIPS a partir del cual se obtiene un archivo `.mips` listo para ser ejecutado. + +### AST COOL-CIL: +La necesidad principal de tener un lenguaje intermedio es facilitar la trasformacion del código al lenguaje final (MIPS) ya que este no presenta definiciones para tipos y atributos sino solamente muestra una serie de instrucciones que deben de ser ejecutadas en búsqueda de un resultado final por tanto CIL nos sirve de puente entre nuestro lenguaje de entrada (COOL) y el lenguaje de salida (MIPS). Este esta diseñado para hacer menos engorrosa la búsqueda de errores intermedios y la agrupación de código que va a ser reutilizado. +Un ejemplo donde se evidencia la utilidad de este puente es en caso del `CaseNode` ya que el lenguaje MIPS no presenta nada parecido a esta clausula por tanto este debe de pasar por un algoritmo que realice una búsqueda de tipos y semejanzas entre ellos para obtener el resultado final, en caso de que no existiera CIL sería complicadísimo lograr una compatibilidad. + +### AST CIL-MIPS: +Luego de lograr una reducción intermedia del lenguaje hacia CIL se convierten cada uno de los nuevos nodos de este AST en un conjunto de intrucciones que seran llevadas directamente a lenguaje MIPS + +### Puntos a destacar a nivel de implementación: +Manejo de la memoria: + +El manejo de la memoria se realiza mediante el convenio de C, este hace creer a cada uno de los métodos que es dueño del stack + +La sección de .data se encuentran contenidos los diferentes tipos con la siguiente estructura: +- tipo del objeto +- padre +- nombre de la dirección +- contructor +- métodos ... + +El contructor es de gran ayuda ya que ayuda a aligerar código llamando a su etiqueta correspondiente cuando necesite crear una instancia de la clase en cuestión. + +Con respecto a los métodos que son sobreescritos mediante herencia estos referencian a la dirección de memoria del método (la etiqueta) al cual le hacen override. + +Un ejemplo visual sería el siguiente: + +> ...\ +> type_A: .word 56\ +> type_A_inherits_from: .word type_Object\ +> type_A_name_address: .word type_A_name_size\ +> type_A___init__: .word function___init___at_A\ +> type_A_abort: .word function_abort_at_Object\ +> type_A_type_name: .word function_type_name_at_Object\ +> type_A_copy: .word function_copy_at_Object\ +> type_A_value: .word function_value_at_A\ +> type_A_set_var: .word function_set_var_at_A\ +> type_A_method1: .word function_method1_at_A\ +> type_A_method2: .word function_method2_at_A\ +> type_A_method3: .word function_method3_at_A\ +> type_A_method4: .word function_method4_at_A\ +> type_A_method5: .word function_method5_at_A +> +> type_B: .word 56\ +> type_B_inherits_from: .word type_A\ +> type_B_name_address: .word type_B_name_size\ +> type_B___init__: .word function___init___at_B\ +> type_B_abort: `.word function_abort_at_Object ` # heredado del tipo Object\ +> type_B_type_name: `.word function_type_name_at_Object` # heredado del tipo Object\ +> type_B_copy: `.word function_copy_at_Object` # heredado del tipo Object\ +> type_B_value: `.word function_value_at_A` # heredado del tipo A\ +> type_B_set_var: `.word function_set_var_at_A` # heredado del tipo A\ +> type_B_method1: `.word function_method1_at_A` # heredado del tipo A\ +> type_B_method2: `.word function_method2_at_A` # heredado del tipo A\ +> type_B_method3: `.word function_method3_at_A` # heredado del tipo A\ +> type_B_method4: `.word function_method4_at_A` # heredado del tipo A\ +> type_B_method5: .word function_method5_at_B\ +> ... + +↑ Fragmento de código generado en el test `arith.cl` ↑ + +[Link del proyecto](https://github.com/ycimadevila/cool-compiler-2021) \ No newline at end of file diff --git a/doc/team.yml b/doc/team.yml index c16162532..389a43171 100644 --- a/doc/team.yml +++ b/doc/team.yml @@ -1,10 +1,7 @@ members: - - name: Nombre Apellido1 Apellido2 - github: github_id - group: CXXX - - name: Nombre Apellido1 Apellido2 - github: github_id - group: CXXX - - name: Nombre Apellido1 Apellido2 - github: github_id - group: CXXX + - name: Yasmin Cisneros Cimadevila + github: ycimadevila + group: C511 + - name: Jessy Gigato Izquierdo + github: JessyGigato + group: C511 diff --git a/get-pip.py b/get-pip.py new file mode 100644 index 000000000..e0d346f10 --- /dev/null +++ b/get-pip.py @@ -0,0 +1,32711 @@ +#!/usr/bin/env python +# +# Hi There! +# +# You may be wondering what this giant blob of binary data here is, you might +# even be worried that we're up to something nefarious (good for you for being +# paranoid!). This is a base85 encoding of a zip file, this zip file contains +# an entire copy of pip (version 22.0.3). +# +# Pip is a thing that installs packages, pip itself is a package that someone +# might want to install, especially if they're looking to run this get-pip.py +# script. Pip has a lot of code to deal with the security of installing +# packages, various edge cases on various platforms, and other such sort of +# "tribal knowledge" that has been encoded in its code base. Because of this +# we basically include an entire copy of pip inside this blob. We do this +# because the alternatives are attempt to implement a "minipip" that probably +# doesn't do things correctly and has weird edge cases, or compress pip itself +# down into a single file. +# +# If you're wondering how this is created, it is generated using +# `scripts/generate.py` in https://github.com/pypa/get-pip. + +import sys + +this_python = sys.version_info[:2] +min_version = (3, 7) +if this_python < min_version: + message_parts = [ + "This script does not work on Python {}.{}".format(*this_python), + "The minimum supported Python version is {}.{}.".format(*min_version), + "Please use https://bootstrap.pypa.io/pip/{}.{}/get-pip.py instead.".format(*this_python), + ] + print("ERROR: " + " ".join(message_parts)) + sys.exit(1) + + +import os.path +import pkgutil +import shutil +import tempfile +import argparse +import importlib +from base64 import b85decode + + +def include_setuptools(args): + """ + Install setuptools only if absent and not excluded. + """ + cli = not args.no_setuptools + env = not os.environ.get("PIP_NO_SETUPTOOLS") + absent = not importlib.util.find_spec("setuptools") + return cli and env and absent + + +def include_wheel(args): + """ + Install wheel only if absent and not excluded. + """ + cli = not args.no_wheel + env = not os.environ.get("PIP_NO_WHEEL") + absent = not importlib.util.find_spec("wheel") + return cli and env and absent + + +def determine_pip_install_arguments(): + pre_parser = argparse.ArgumentParser() + pre_parser.add_argument("--no-setuptools", action="store_true") + pre_parser.add_argument("--no-wheel", action="store_true") + pre, args = pre_parser.parse_known_args() + + args.append("pip") + + if include_setuptools(pre): + args.append("setuptools") + + if include_wheel(pre): + args.append("wheel") + + return ["install", "--upgrade", "--force-reinstall"] + args + + +def monkeypatch_for_cert(tmpdir): + """Patches `pip install` to provide default certificate with the lowest priority. + + This ensures that the bundled certificates are used unless the user specifies a + custom cert via any of pip's option passing mechanisms (config, env-var, CLI). + + A monkeypatch is the easiest way to achieve this, without messing too much with + the rest of pip's internals. + """ + from pip._internal.commands.install import InstallCommand + + # We want to be using the internal certificates. + cert_path = os.path.join(tmpdir, "cacert.pem") + with open(cert_path, "wb") as cert: + cert.write(pkgutil.get_data("pip._vendor.certifi", "cacert.pem")) + + install_parse_args = InstallCommand.parse_args + + def cert_parse_args(self, args): + if not self.parser.get_default_values().cert: + # There are no user provided cert -- force use of bundled cert + self.parser.defaults["cert"] = cert_path # calculated above + return install_parse_args(self, args) + + InstallCommand.parse_args = cert_parse_args + + +def bootstrap(tmpdir): + monkeypatch_for_cert(tmpdir) + + # Execute the included pip and use it to install the latest pip and + # setuptools from PyPI + from pip._internal.cli.main import main as pip_entry_point + args = determine_pip_install_arguments() + sys.exit(pip_entry_point(args)) + + +def main(): + tmpdir = None + try: + # Create a temporary working directory + tmpdir = tempfile.mkdtemp() + + # Unpack the zipfile into the temporary directory + pip_zip = os.path.join(tmpdir, "pip.zip") + with open(pip_zip, "wb") as fp: + fp.write(b85decode(DATA.replace(b"\n", b""))) + + # Add the zipfile to sys.path so that we can import it + sys.path.insert(0, pip_zip) + + # Run the bootstrap + bootstrap(tmpdir=tmpdir) + finally: + # Clean up our temporary working directory + if tmpdir: + shutil.rmtree(tmpdir, ignore_errors=True) + + +DATA = b""" +P)h>@6aWAK2mnS!LsTZZJY4ty003nH000jF003}la4%n9X>MtBUtcb8c|B0UO2j}6z0X&KUUXrd$||@ +P6ubz6s0VM$QfAw<4YV^ulDhQoop$MlK*;0ehK(^ +c2d;5?XV`^+*aO7_tw^Cd$4zs{Pl#j>6{|X*AaQ6!2wJ?w>%d+2&1X4Rc!^r6h-hMtH_d5{IF3D`nKTt~p1QY-O00;m^MMG308{@xi0ssK6 +1ONaJ0001RX>c!JUu|J&ZeL$6aCu!*!ET%|5WVviBXU@FMMw_qp;5O|rCxIBA*z%^Qy~|I#aghDZI*1 +mzHbcdCgFtbH*em&nbG}VT_EcdJ^%Uh<#$rfXmjvMazjtt+Y{4fL(0@tjn1(F!nz|6RBOjouLCQKB%tCsn +f_O;(TkT9D!5I2G1vZWcORK< +*}iONjWAr8Zm1&KuL0jC{@?djd+x5R}RGfYPBawx08>U(W?WmDk1T9S4?epCt{Z(ueTz)EC*E`5mT15 +-&2~-DsS-6=uU3I|BmObEPJI*Sr)^2!Om@h-$wOJl_c@O>A_3OHg5wqIeD(E7`y@m0ou*N^~8Scf|wu +`N_HtL5`*k&gASg%W(oQp9a7<~IpnR_S}F8z9z|q{`1rb)-o!>My0eex)q(ByedFLGyO7=Ikq8}(HcH +6i;acy-%V$hD`fEosH@wgA+8z#{H{ToXOd_?&uMj~(yRVmD7BE?-`X6FU!78rkLs#HE1jqSOWnjp~Z3(}j4wN{#<0DmEaw +w2fbN$l@K=F!>KqO9KQH0000807gYaRL#f0HNXG>03HDV01N;C0B~t=FK~G-ba`-PWF?NVPQ@?`MfZN +i-B_Ob4-5=!Z$M%;t!XVKc9b}U{5?(?Egj!;iWEo#VY8e`cO+3psdiM#D?U$24DrcGE{QX%^A1rwho7 +bo%%^4nEOe11`ih5ds}r~C4-D(by*bnzy~VhcmspFPs+92he4iKm495?R6(6IB9*bzqWO6Z``e?dj4> +$ei>cuLo8^bh>J0qwmAsn45g@9MQ{TAMQ=}M~B1K+Woqz5;+g_LK&{q3XhT~awQHE!$j2T)4`1QY-O0 +0;m^MMG4UwQ!+P0RR9!0ssIR0001RX>c!JX>N37a&BR4FJE72ZfSI1UoLQYb&)Yo#4rqn_xuX$SgsPJ +3leY=j7%q3*bq8})@_Z_B-k#f{~ot+ASB2V>&bck^4xJALFYoL2O3Leg*}O$!hKQ7DMaVKUUslOCh)if@+itrPZeClT~ +1iR*^N=_&VilHX7ezR{Ys!P3i6v#8#CnCLX(r^h#(D9Q2`wcYz#AqB@vfzGIq$A8sk{)NWEK&TeAplO +P?6fq6Q1^6a*0l)grsP?n#H~**AHt%UnWjY1bq&q0|@WSC{?>xZeNm!(&pOOE&dqH}AXz$)6~;-HFq; +xJFdD4^T@31QY-O00;m^MMG41bwV+?3jhEMCIA2$0001RX>c!JX>N37a&BR4FJg6RY-C?$ZgwtkdDR+ +SbK|!0UB3e5J%qfHoF;wAXsR^#q04#d`aEY}+En8~XcDqfQzQ#Owsju=_wM3@1W4L<>GUOfutZ>YvER +E`I*Ov#dtO&$-Q04~HapfRvX`tP+g1=R+qzJ^ZAi5jytyK>;!=@I#DK>|6h(^#-*v4}q--0-?p4h%-A +dhFT_KcxY^D3v73$i9lZSo>Dcp&obI+f7x8*fkY(=|+6Y83k$c`j-|AVNQVAWe*Dgy(wfRQb~au8QcQ +9MtYeRb$qk9{tRl3f<%%{i?0`zWUa_~mp>-@ISH`Pz*xw^PKGth7rA@H|115{bqO1!LkDh9cnsY0*1sn5*D@tR@> +TRlna7m;R3CVsSCvC$FD1HzkM*uhrzrqd4)V_nAcSS8(xOK@Jt)kTscX1DapQuq00o}ARM~2C2WtJF_ +B2m{$es5hNN(02(LdexabXiCiEj3dqz=H>QD~|(8vWa9Vc&B7^5wZv#g)Bld<8y3yX@DSj!moz*uP9>EDo|17f+{Ef0Gy)v#+DpQurLbJ> +H3;OvH*n=4)uoLu=+rDtbja&#|_6wQq*99>Ocnd8wr5}Jk>CfbBVqYCqpP4I0MCiEn@?c^gBY!Wu(00 +5Gz4Kh%pbWJZooY?F197GI?Y;1NDd^tuQQ5!}-5k-ozFzx6V#6!=ay1ntw)GJ^syIA+FG&A0GQPkPB* +|D*zDs+m`&WBJrP7^1UbCfDQqp1k_Qg_>KYFyADEU66IP@Tb1*F@$Mab$CiKK@h(cq%a?|rmi6;CJPW +&u@)~`OH%{r|s%|gi=w&qG3qPN?`JLd3#TqF!xZrBomfSL`T5A^Tb4gxEs19saq?Z +MS;=HD2r2<#-9X37L26GgkTs6tcq)Zjzc}l`@G#u6C-Mv +OW-nE{RlN=^PEx<2^F!}(WHv;%j{TfZMF{74iOtduh24V{WgL>3pw6P1?t4Z&9b!g`UP%)QQxTld7}664W*qR0K~oE*9IOZ}+hyPGaW><1FH8o+=C;p)ItA +M68mp!_fmgYt`=m!f)rb4ImVIo-ulB&H73U%}$+uVtq5OEBzVaVZ;@DkY^ITOweRcjGYx?Og=kGt9oP79nw*Gi_biN+eG=yIZhK|?fkD$Q%S){Ei8 +UQ&7Hs;&`65ZJXhX%HlLRVl1k;|^;%C$3+b%|GuyMuzl>Ow9|{TBn6r>uQf72_oSF!cq^@sbRu+8z`= +C!GNwD|AVsZ=)vxpQ7GNGdg1^$)O+J>xMLNoB@&DmlS7b%YM|g!RglKHDr(VeaZCV#YKn!eU%3vf{sX +E`h@+loCTcmZ1l$4LKtU71M4y +7t-cbK;KC%Sf+o9QYBS_uw4w}&e$ITg28}kcxQ@pf-MQ|dip)UsZAUoMx`FB_Y<*<|C#9>>*eE?Ig&( +9JeNxLPnz1uLz;dcdOpDNMJ5rs!fkJOG!`6L-c@fqrWJFIcj;4?Pfn0F&=Vqrv#O#ELEjbSS9HT +pGqC@dK+s)*Haa7G+um^t611j9^}+_$c`09{n7V^ayN%zd0ed?d~%P|GB_V8Uq}0k#6d70!nHI=LUyd=Th7G%;huYG#l{nEQs*1 +VRNK&3AN}+1>m_;9Hj?8A*R(a{)5qh#jz&iQQK>WLkP7U%&n1H)2kOZ%)Q4bF?A3}e^n&a$0GazKEhG +vDyy&s;u>ErQi4zBJcP1;_EB9(NYuJp>7z()GfSHT39x#t6_ETpZX^iiMfs}!5?2yhq>N}q|+g(G^J5 +!*$SYOjhbwBDMct>%#ib{jCVLvzhmZcFtH3^;@3p{Vwxg)1F-xz$l?$ey^8Wm30^)w0pgj=>R_z~Duy +xcKpB&wlPcwP*j{gEI2Kb>{yMpOTzo8o|SG&%|`cEITkT=mt|4o_Psvbq^HYf+Z*E1cM5eNLG|G;Ow* +fjaEQ?CTI46#Du*L+K8hjm*3N$=rnAqY!k@=B*MIsP%S>?^kcxF}r0ogv4KlS50r%uRr}11_$cU4aK7 +D*6Z}Kj+(oU4iwSWZV-sgejyHe7TDAW_n1tk#DHsG(G*IF*!WH!5=}>kBvbZm|3C5kC*~?y7Lh-WsOE +xoHFTtLM3L<*n(5g!avIs8Q7fP+ik%Rki-&00p!-FS$qe%Bf0Ay{xeeOet7yR`z=e5a? +tTJWWcgebaQ(e(1(;o8s|8(!YOt1&vPDc6x4`>5f(>CH=k${dbJ{n_f3{z|e1)DNVqCZ=-`yfD%Hn*> +_(j?eDug7X_CL*3{7s?&^3htJXra0`AiP1yD-^1QY-O00;m^MMG2t)76y~3jhG&Bme*w0001RX>c!JX +>N37a&BR4FJob2Xk{*NdEHuVkK4u({(iq=s~|8{$h^QvT~vSyB+j`u;G{+D!XFL?Vnwc`wJ9#kUEWy< +`rrG^?2=rP(#1`IHmE-6#C@5a_jzV{i^bxF%nwR@FDtoMM^(A2#bR-FrH{2~oH$5(DD}2`{9sMh{VvU +Zud99cXzbOlF-PG}HAY1k{iZst#CJM(EAd8KeE+p}+ElV!iMPsK`7O1s)9hYVg=x}S<{u@|O`Y7^j?6 +o`UkP0~)zpo`cUH-x8jswo#)9%=6kDguo@6d7Q|Vlm`X|NYVrG~yxJ=cjTrtP}zSq?~_7v|AN|i5lsd +(#|okvrs(xyAp9Hq;0Q@O^J9g&wj`oa%Bvb)sP$8OIX{C;HV12NRCW$w-`W)-AP9qX*nO|M=&f2SLjJ +JY~kG>zHpqpk{jnM&IX+N`BJWX@z5ySgIJP>tAhE|Tt*d&6T%#;VS;<<-?yp>`r82Lmg)ONuo+%B^+H +O5p2mDW3kBeypzqKJdyPm1~le#qdQhJVy;s&HBxY +VpYXwJHFUdEMVhhn^4oBqqr=o7my)Kl6XHq~G!5$hTa3WDiCk5MroWg=I(OQ!LN56$Ex)$%Sw=u?%S{ +#1!R2nZHyW|=%D$Mo+4x=q2&kVddgENoXF%kM~H55&ZZ573Oqh#S(JAa@oOY@+L%pYvm;^Cn4L*T>Gs +XGLc9d^UArY#HD*))L^eUc}9@ac(=RUw{O(>A%nL!)@BsmfD#mOzlU$}T&Fdu_4D!Hu=cvZN<#Rk>Tm +Dr66wYH6gH)m$c|GjiQKCd;n-gQjZMOL5RNQliq-}*DPR8_>VzZeX5t$RYCG%o)4uZ +!yn|PB_psYD>vOTB(v55wwz%%}$D0?;D59tSdNjhJ$TAS*}lvR +9QtW>N4|ft*M~t;G{gX`A5WNJJ~~fJish6W8sG$bBFd8ugSml7IjG$2Z_8m-MW`q23>;K;MH&Oe2{iZ +zCaBym;5hJy-LA9tBN*TuxCVx27d|jg6uVYxFWW-Jm_v9Ja+DtsZ6x7QSNIi>2w9> +xbVLZQkegb0SJGwqbgRgS$aV!B)Oz>Zwi@}5%Gz$H8n7a`zDHyVRRiBp`ZeC-^$Dh_`qMFlG+a; +$Q%0selk?yP2#4o&4_)5mqx`T7Ya+o8cKyP)a-ANEKOCtgY=W4sYzTQKkcAH}Hb$zPkH9*6)wibE#`j +5~4^nC7Nw~HyJV}ncwqf~ieYY=+2JB(8u9@xF{Qc@s-9ET^{!WVQ3$tPtgeAKbp`jCV735!Zt$|j;`R +o*tF7gTWMct?d1MkaE9c)o%uou@CUtTp5}&Nx|u0as%#f&OFnIJ8!v8d^_REmQFdDe|7SjqGBB(T?&X +;tN=d>UZoQg9Qmckhmm9F7btQ5k))&75r}#qp@Dm%L^H<0=@|x4M4>j#62dV{(Ev-I5zp5#8}0E#MBY +B5{t^w{s&@=l9W$w?5i!~62#|dCFs#%5w(|Z2Z_4;b?ZgDT|c{91u<`*t-l@~zFt2c9-go7?gnWC++$ +L+dV|OVAXD>7vl<$U%y%BXyI@o?lp*v*Q5nLP3<=TKF|bX^aZ=l1L5~m45$|S+jW|1w=#CR&knT1Tcq +rdzzye|TY*MY0^V}?B7J5;pm7c>CE>5UD=_>s%@;GRota}$3903*>Cr%j)fNDl6N$6|D)qt#^+k}2jj +;4s|&!P-ys2Q{F!tya|sjMkCCrLlFVg{GXsdEi`1`nIFe-_R3jS+p~=BO`YoP-EL`!ZAv0D+|As@Jtj +%#zf|3_lq6`dF8I6QGKlrZG*IJp*$S;M_k&F%X$0j)1QBXAm|l0y3r^623u&W$gn59e-F7f(FFr;#x| +4)FVSw8H-6qM#5H~sHCnuKzbngny?Q85tl%u0iVQYe4c7TgZEa`95>$F>m~fX99q5r29V3Rl>4r3*Mc +2#FtoHKdg}A7%CG29KBoie2~KIP0Q@@GzWi@^W~33$Vg2@RL-BQ77znd|A1{{GNf5kb=)_<;bkXr?Ju +yOFYy(h(hg2(uK6oI2gPy+(*ni;jf#ynMK2jBH>nIHonS(|i8+d&mT2L5MaT|e66mB?n=xjB2 +k`6gy2|KouR2;)d)#7(t}HxH18|3lB!DL6rGYF1jBsLD-wX~;Nf@2gKU$TFn{=Ow^g2Xl+(i`TCslD9 +)VU)a>Cr>f{FBZ)c-nzY?D;DFDosr33<_8}GlmACBq!Hd +aop=IM+oB4)ND&j^o8Pi6S?Wv*N{(TJEemfa^TDPYVVRY;{5HL;)7huq4eyf|DM<(7CptEq3?0@r>Xf +?8Q5A@1Mz}*B5xaKs62i~PO{%STE&R&jI`upaym&|7n2U3BqS~Z&Ruy3LSJ}%|s#P2qjAnNP@f03IOY +TNFU*(`k)ulHzqDR$#bF23~X8GjJ3sKbl%n+v1-O#o^SN2P)SYUExJqKIuYnkULHY~3$W9#>}xMV34} +UyfWn{>1XnS1dnUOweg=u&0?;&ukXDNiNQ>x*QRXb1iy`pe}2`)+Dri3s&gVPFgZr*p +ni=Z)gLsNEA3--n7{znBK#Yw{-G^cXn&x4|Iixc)`ZX8aCl>?!mfXft{#l-~U9)y?4(2)gv5Z9bFrWtpNb`b!?(8MiiTIm +(3Hyc1#ZsJ)4)ig7=NAXHLYZY33{pB&8sr1i;8+UXAYv%!G~9Wc%E^Z)C1^EsOxI-~rx`OuCAYmZDQb +!e&onY7BYNO98@2?Zd3QuicrJ;GIV+middfi=A$)OFPkibA8O%^?f*ZH!id8?IO)79oAw`XPORXj@#+ +v*Yr{$W6k)#c;hiT%`^HRof*mcS!ezxfG62eQHqG~hoa$t>_$jna?t4RD5i+On7_n`3)EyR+M5mqtg} +$e)c-loh)xEilAIA#cj347t7`ay9E~MLXV>WaCyxe{cq#8^>_ajtPY2>QAgM7ieWY2ZMnvG3z|!UA!`-`tZ5d4&9D{))NxDT*iM +SF!%a{Db;_LJJH0Rmv%Xy|M$s@pM44#L#!QuRG#LDJasKA?ZS?y1dUk&NZU*ZD#7<-)U}9wnWjs|}zrk~Z!R-8Fgz +K-P)3@grSF;n`xaCrT3;=ep=4k=i^^Cm-eY}GM70Xw?Vk*>C(AZe=aG;k=iCQi057)D+X;1+*01xQ-f +OK6Kd?{99Nh{u-UA#U%n+CUOeiNs9)%9MLe8WD8gwvYq)AzG!phU^_`}s#9%PLM6Y?f_>%rmlm4=j*2 +4S2TI8%SQ4rkKnX8C&aSRbPiE1@)yeD%s3odHO~=@LL%Qu +}#NK{}^PG=(^x)(1+387ic5!?XU7Vl&S_5=J_`nh1V33k3!tz=zhf#!{CW=5KKxpR|?`ISCF5cg81`; +5rl9Nr|v$!n5;Z!9&%~_VqO`M80bF6iS1hVu5ZodDnvlk^qrc+c3Gom-(7X7K8}Eqfp}=1t+a +$k@Wddv?y-|53mz)i`!`NJs?;W8RLs$f1N`Jumc0ki8l)OmeC8&IaI(Za~XeFpMtx{zyONGvN7#zV%j +Z+KO{QJoQ1)FE-o)wa>fN^OKmJR$+v_V4PkeT-H15JG*6a)ai0l7!Om=^iy6X)<{F|p_bVF0WwF|5$i +8WE0eE&{eH2vdO3uzo}A`wdR9t +`Jtr$OipQHjKT_e=tig5EFpPl4!=!S4$YE;`C#@b6$Wt``t`T_+ym<7QP04gEqRlkweCm{`8x(GFh>T +MiItg#J*U@4Bf;pX|o1rRc*ZY~E(|qP-5iAgt?hblfJ)Y<&d1Tc%*RzW&y(>L0*n)FmfrY{#@vtHGtr +w-A98SRJDv|U;&sIpgj^G{Ng8UCZ!}u@7F>xjT9_`09z{XLJjoe%Tw^qkeHOZf-iS# +b8dd;aXP@d=2+tIqtIAw*3cosQ?PRM05+VTB0I9MB{2px3T5f!bJuPsNjZ^TxiVP?Q%(=$`%2C0j@aU +TyPQnkai?T=9qcJ-`w+kw^1?Y@8{`|_K4Y)>GRBy;!$gG_td#Nc4yn;a6Fj~JPSgrQ<&k$nq!Vp5=>#4 +sWH9`USt|=)EKnC7JjzTR2YzWmtTx|Krhaxbz9=gdB$d7r_u;H_`W5` +`J)`VgqOX{%;FgvW&RNHznm+moWG6^RYv>9N7F6n?9Lxv;Q&@#%99L4hO$ARIT5&_qgwOE^;An>TnBc +4F^Qd3v^gC@x{WL{D9)2^37D!JRWxLtEqf}az)6y?5YFBrOA3Nf*iWn1qZj{){~&UG3GR;zSr1K(qPq +JE4BL*xk>BPr#+fGLC;?1-WBfyj{|rNr`-`T;dCkH_v2gBI4B2M8PGD);sTUl|A)6D+xV-3^?*_E5iFVG=QBh3%R=rOjS2Hai@lBg9 +~C{8a?Y+MdoPRBOLjN;g4AyCrM}Vpl2P(bm-Azgz4b##-6#)>jmi@u)uae-5r})-bH}34Io2LAdX&D* +&)s9*QO7+{(r1YAPTe!lY>3Ql0U-Q{twi*M-RJ6-xHci>TTXjzR7{@x{c(kTPykN>a%Vm>aA=SYoav3 +BX?;Q&X!xiX#=9thW&l0YzuBb}TVNuSc?GnX>i3yb)%Nr9fVjk}C(-PBlY^wUTr;b3PV5|O63beGFJy5vGWJy&%JgE-+`hKHnK$=?eJ9F^t1A-+kL8jAhu$y3#1)@(SGO+FEH +Y$N@|0uflefbNi0=S8KfT4UxKT*$8TF~YOt?kQ+is#1in)H;;owUnjTR;+<3 +hg|N2b+UgC2g`>JA6V;m>CF>Soe@yA;a<|prMM-IV!7OB}`t!;^_tm_6<*fzqVFxwGERr*!x>;o4@JK8S@gW1{U=)Yg9ASl*tjk>PGrr_vCfXEFRxXTPwSSbOhYUl +YG{T=jsI;*1eSHYGgyi*dEjEYvB)G%!sVwgU;JlUPs8`S;IzHJt0VQ>SxXgx4M5ktEh6Pn93%;k*Yw4FbW!$AJD%!%Hqc@jc7rZ0vi# +AEYz_y!_(tFY9N$V6*_7RI!7q7TjVcRpkS-trTUzk518nhV#QvvpY(YVz{sEu>J@4Gy%tEcQkG +vJk~fp;X1y%O8IH^Pj$?oa&ph>94MUE|q7~RbXzXRejy?(4y{$vxt?@?h(A-!rJe$;hdZ9 +G6L&DD=Kn35{_^A3vxyF$((ln{ZN9$={S~>CJ2|nnBPrcN%eXLa%%pZ?Jua{9)q)8eG_eUe_9@K4rhD +E{?8cWi6c4Gf_1LD(Nd9tixK~V@KbP2_+Y^=X@+}YHr2SNJG#Jt?YS?&dy7M%}7CNkE3XjHNAZ=UXL} +7jRipl#16hYs7>cK**13e=zN4+^DsIeo^(50;Y?4V4=fPIcJu-y)z%V2d+^4W#;=G;Q=_BW_g>?5rViS6)m%Q8lvO19l1G~?7>R4B{Z;@z{oU;BY{K5<+j=-wm(~ +EGDs|!vN3E)iAi1~3y-t&@ZT||z=iJ)$6{dP*#;Ol!xz-J*t^;35(*g$y)WaQIEpBHvaPCgD)Jt*Z=W +`nugFf7q9uVvw!E)IY>muzY))(x=AIS8~EYE?f4HpYLqu5iJ>sJf+xPr?g964&~RL1X{yiY5R4xi3=6 +3+Cs?|w-=yPa)U2DqY?AUdzznC1xa01Cb=bemX@D7h2mD0Wa-DMbP)CA-mgMj79^iw;Uv&wuuC6JL0| +T!{=k)on0J^sTs`6Xe;~klCjmv1seW)`i2&A1pT2Ig#r(8YxwpFSuF^Hv1*)rPjYGv{YpV +Nk69+}xgA>H|YA)|Ef0WqUPWOJt<#)^#9lTTd{!8yvJP-51%pi9LCEAsomq)Al(W}K*gu(8`NW0RuU6 +MSKS28WFK7h5CbIyseuSM}pnu-gV>Cw;BCwY=@@<+RecuY;T)kH-AXm;p-}R&__fxk{Csyog04~K +D5UXzLAfkVDKMMO9KQH0000807gYaR8RvIgxVMY0QXb?02=@R0B~t=FJEbHbY*gGVQepDcw=R7bZKvH +b1ras-8^e<<3^hQeTo|P0xcyHdpa{247BS2PPaR4q#xdHcLoE;D^p}iVoZ??i?mx~2w3bHX0g}UJM2w +zlKmc4#o|j=cY+0Gjie=!#jomn)b}oWo_G2&lzACvsS=fvkto+iR;|`qRf;?aZ-SNdkB%QO5DZxDX#N4_vdk1$|4PtYZ!i%<+2D$=?j7h|H+TJ3` +?9j6AP)q1q+zTfP4}piCD&oR0eLjmPe{u=mo-F5M$`V6B@r-{?%om< +tA(%9h1pup(asbpOC~m6UK$0p9@}XHv`LVRv!*`(YvPp*7k$^vXdL5{B5--g7`Ahg+-))le6|x~nj_U +gjS@Jis45FY6%=m8uC7%POi+E8XrbEvGmGOVLph}c0{rDOGL}JH<+{hF#IeK*TNW2e&cMr9per_VSSUO5 +@sa$c_Eka$2rP6EHi?&j0h;qM6z>kG^2ScMp@&yK|FVMOX9HV1AGeSG +B=Xn}9_J7Labc74^Ri4D<2soYH%@;|K-W*>Pl^nwgkHRESN}R{}X;Eaw$SOvSKB$k2wG<2BIf|5!ILa +rbq91)82QaHDfml>&xE +9$`B-ttsC-{U+Nq++DvfP>}7#@tvs)Cn5;5Jez(4oo~rvbpB8)79(1YM;u=pNwPQUdWq*%%WBsR$AU1 +|SWSDv|^(h@zPF94(RLG!US&OH|TN;IRP3U5e>c+^s=@h@g;Wg7t4gkgsdsaLNd+MxHhdU!z?LTQe@_^I8^ +_OqLV->x=s94G8E=Jk}cR(xdf&w0d_zk-}QMtH-c$%w_wSGqW)sm$>I)ENY8-peByd4!Eyr-(J;2G&3 +AX?Xk{aWEX6+&4I&_pAQc2EE6v51E9?sBbwkyUK +MPt5)D&OqNYL?3eP^|jVGEf4j@$5X0G3P4RH0KV-g47UN~ya*fJt^T;GJ7N|opu(fBEj|D6_2BX&ND7 +|e+u%^U8D>cuq2n9X%;B&m5@%MR=Il5BkAzU4oRu-}_QtVF>O`@IDQ1p;p4hjXU_Hjl=>-EB+nU+!u6 +d`?PtK8J5fXZGT|T**iA(2dEmUyJYeDiH*sv7T5E +?N*P+=U;vozT@HP0h)&Q_016q!0L0~5A_g-qmakd|iGX}`_YZ+g1ME_M9L=7jZX2OZ4zpDUS@-VtG&p +Y9(|bL^1$>VN(Vs3*Ms@w}AA_+S419|I4Je-q@4lk%G&_sf6&_b-3{_isK8L%4bnhD~St*WmoC8R}ia +o;!$@p4g9A7b!-_UFWZrcF!BQ;R0%G-r2KjqS92BrS_8%%JP#();dok*pMz((g^-1iL@=L;WCu&~TOO8z?!~3|ihSUE3ufo(q{B&ARuDo_=&0 +Zd$CuA2X;l>z$qmJq-^moC3?WVUijhv}KIw+6I_>d^5TmN#5UPII1q#mpuK`=7Lx8^xqL&x1Up>#la+ +}NN60R~zqi*OuHi?+p|MeC@G)4A)oJI`7>xt($2KZtksv@aVJ5A1Z+|mYn(SbO&!Cg~;jMvwdZ^|y1j +3%uTe!MDd?@#7?P7+JK&M3E0~Khyqh=upq!HSY)@-Z^5j6(;iCwHLJuXUad=!N=_UX5)%`cwAKle><*+ +0vmKmeamm_tgb5@(wvxCySUhM8@Ur?wy_Zs~%Q9E9Cr?&@S+xKIvU!qk^WaGy=T8V{_2lXA|NPb0Vu? +u-rsy!)>%`M*co;Z6AmD?d-zVoA2Gx=E=1k{X;POv0EWgFfht7Pe;jIKa@m&z39Nw*EDgbGI+%L0Df+ +4iHrX0#tZB;2Z*AuY-exzCRGNrk3qHDjKV{sR6;ZNPir{?j!TUYb@^R}R5Ivr7@QBY>ZR$N<(iyOJ!uK^C+ +%8Wv53s0CQ_&QH(9*H8aUn*?D-vJ3!c@XB%-#>+U=>Z*6EoH5aUTLE^M@o569pZd)N77I* +)%F=%z=^Y>#${V^LT`^vIP3nWJ-!s;`{|EAk{CchHQ$y~LD~Umf48olo2)BmySPAd->BY(OlZz7%V-N +5A`|qY_Z(h9h+?=YL?jac(|P~d_=&7D`1)NMxm`lPl6zk&M-AKR6kk*pkZ^z#Lr!-UM4rZ$=f5lLhH9UBaV8j%p?44 +@tmBfG{}t?Yf}DdxI_|^qc}&&z|!f4}O+|>D_4fCr!d;3liz}*w##_!|@yYCl1}&*JE*zQA0>aSZ@I; +4GF~9?_Dg#7PwT_FVIZ$*R2^$R +x=@!8zB8hJ#!M&9QN(L5_M3U)E*iPYk6sq6v9C=2OrM(6u7ah(`lekv7Tcu3LA@q +7qK!SG#5C-uqx0*7uu9KGb>is*Y*Ijdi||=+ +Y$r@*zay0u*Z1VIo|it +0(L^UzpSN9Q2n8e-KY5Uc-%gc!()7+p+i2TfDJZtNd~(QoHLd|HXyl+J7iHK>92g)Y(-J!<=6$-*=xM +TjO(IznDsv$R&r8UkHfln)^eCQ@6UeQr?_j@bP{^v@x2AKd(5+7z*L&Fw4Qc{f~>fb^ThcJw@99bpXKvK~yzIh&s5Bv|$?SNC&WsGTMFAokyVDrYobAA$rLc2-kEIDe +|O^^bs^rROp3GQJxa;m>^DiBv-3rh>d71hes{~^!?8ev2k;?|CUS>hcFX|5)%jYT93Vws~|K^(~BTZszUC~K%LgUT0x?Wewq9z!-`D*HF&aB?&n+MC|&m +_of4XNss~M%JoB)|(cajc^BC&a<(9lt;7^4ewSWP;N{mNYY$^Yk*+9nhkPqaVTFV;B%TP*&k~kC^=vF +@4;HR-~Px6~5i^jcmv-j0Pr`XsR>vDh6t+TnYpRxcTlE7AX$}|mR8|%SS`4J+&Xo{#z*}eO$_C)RC0u +NMJ#CdI(>ILi2wgF{mbYl_kco9Ed(lG{izSeBx +Jq>fc8@NjWKzLP1nO>PJagS7tvGobU5_VjR3Ou}uQdP?;Nw&S^ilv9LBUpCstsL!7@*3sP;M2uv-OovW>2#Ly6f5%c +|%eZTvmCF}%i6-Ma3IpwbF_;D2ev%AYHjA3g!m?RQ86FVgCYXIe#p^05;~a=23I+(C*muMM%FcqLY +x{=%CB-kvXK!8G)epW=XsErA=EPxxPt1k0wIS=t9T51lzIq^J@JSM-iq-|fu-JmRUM}Mhb_m3>O9!VA&q +{5@D9P@y3?LZ_i36y(`qU9M9i@*;z#p@gU@B#aQ(91<60j1H=5dM|LL;L%NMCb^7DFOJzIInD)5EEXGMFe8<{eH-hJ+LkS+oicCUj-4J^a*0EQ%>azr-xSm#b^C_* +|V2vw9!x3_s5atZbpq>k#aGANSR9wl=kjGrCuqK( +|It1utV+X}rd@Ind{PcSqMj#SwBPxxzo`Lz#4RD)Rp5N$lfnb11fj41q#2jAk9&at^J7MEOWA~8!)7M +ya4Gmoy|KFC`<5tQ9DSj&z44fTW-P-+;}B@qy}yh@CYXq-eO{qDzn|qN_=HK7lF~NXul8Vm2o;(KC*M4>=EBVZkOIF8>QijG2C6fcQ*;Kwl`&04ShkH^qEP~jz}-n +u*{HB}lPLIE>x{wSB-|gCDW_yi8yNQP@7>K^`?XkO1#sG2u|+a{F{;5iWtEX#L`_LgujekG94G5u-))0d1Kp7Yhv&>I(1(-=3^*yCFdIE_mP;&=y1)7r>s_-xaZJ72sswOiQJ;6l-k& +r}0MgO~v+2^;C?HNe*xJ)XNX$pWN8P=xFF7VbE3Y-iIth`>FGBJFvbCKW~A-4>6hbt>@GbLH}`khi4r +f=y0V$QPrtB|dEPEc!5ahh8pmf|OP?;j`7GKVtw&+7SJSs?4aDo0iSZ1L@ZKosB(;B*Yo~u@xb!>YFL +$RaSzlG{?b1>Excasm4Z6IF>3x8{?6!NiM`AKtz@yEvV{JbC}Jwl#(a$IS|{V`19I2G6+kg~x!AY# +-je>S``t7% +!%CL+@VQSu3aTn^LK4wV^qOxbj>YfyJJ1d&ZO8Y!*-%THp(r*Dw!M`}Q#vP|edA_%9E0*f2Yvk(#kC! +vDz#pzd&@}Ilf|KI5=DS>i(7+H$rV~o~N!E^ +a|$jb6NUwVi_pN)o5+Ggwvapju*41%EDUJfoz`meu()Nr>GW-@S#*G4bS7cZ!fqL5^)?uxjSd~^nFXn +)wrZNOz#E2#}SR@~OvX!vZ0mxg739AMeS%hUI#;{4><_b1<-z8BBm()*=epIkh9Dd3(!p@i!%-o1TIz +u%qy>xZ*{@nT)cOg_Tuc-sV}tsB)(R8M8TCyBg5K>fan2tJr8mL)h>ZA-l7V;i?I(zehfAkF}Tol +D>Ihv3Q2{Ke|8}mjeZtzAj4&ckd2^odoLj>fJ4v~Lc^)b_g#uIs0W&U}&-t6BC%Ym +T~cBI{ESZrBjB*-?Y+bVom^*1=a_{|O?1Fp`J<)3JH(AE=C{U;W{aUmyBUFR<@G9`qkhxIFZqX29=c5 +|>1wIfz#}&x#TKs9Us<3m&}^jy9mz_Rn4bQea)#-0;znkWC;-H7S8VO#wi`qEFe@J4qfBxB@L`0fx(@ +Dlj<mJ!UV2Ry2Jc3rIK%nC?k<3qOtN5AySS>;e$bY~vlq@L-yo!ewm9|Gw}ihUCl9Vxtbq3*n+{{>J>0|XQR000O8MnywZCjg_ +T=l}o!Q~>}06#xJLaA|NaUukZ1WpZv|Y%gtLX>KlXc|DN9YQr!LhVOm~k<$vDeHm;EY{#9(cG<0z;wD +NWaBLwd8+rS=DXkDlNaEMWKS-IuR;D}x&0NIblhpR`%|<21-yAN72Q@h!;SIh@#v +MGq17&L+)M%RKXCj4~ET|~I*uzi+O6s92SxZ9DPKZsxrfBua3Tl)RoDl>E6wF;E+vLc++nSFm5&NF56 +wsqZO1cL{gvpGx4Phjkmb3559C+mzm^hH?f*PKmUSIqTaI3?`gL>gll^vyu`lV8+$8554sZ+g~bNZ9W +jB-U0v_T<1QY-O00;m^MMG2tBwh#k2mk;=8UO$q0001RX>c!JX>N37a&BR4FK~Hqa&Ky +7V{|TXdDU27Z`(K$fA^>0sSmLLS?B?GxWa&Uv5W2E0`zW!ZGn3T0)v*Qn2k*8NXn^E^t<28kd#QhmW&Vm4ld2jIwLmi{Bp*)}jQdSEE_=&1N%r^?C@!grirp9C-D}<^Zlf(;&uAeWV)*-C|FNDD^Bxc2p<+2b1p|T$0T@73cm#X4XgfVFC{ +~l0OBWt|5R0Pt00uF)7c37D>trwL1yS8`1A-w_t>?!@(J=8mmtWbS!gfcHtT1GCc@&7P<-&0MZ-MWK)c;TfHlw1wqEHGsA|#W5UKa +@fv~GE<5Phyj_;%L`x~PwFHhp9N6kd;g$t`TlsH=XA!*>>z9}b-00&QLW2&56a9?k-f#=iJ&e{-p@yO +fr2i42BCu5^z`7I2syOT&G^bLW9Gh??Lt!Oa4X#^Bua2wuWS0do|9vzI#>kKG7r#jMJw#TqK}z}+$p#r;{R9?BmMe@O3J>fd;XIO#lV1EVX`qr)mANQJ6M(1M+Ws{$*=__a~ +VajbU^@e-XdfR`e2g2q-etMLHS&IUq|{@M^YWlMhGc-U75!cAUs(cNFL4}_ksd +XkZSJ_YfLrj@y^wTSNKwv6IdXjOy8nm550a2SI$5wupr6)+0aPS-=x;C +BkVL`*iY;sJM1{%=op@YiD4napR?BgH7ovkJ6yx6IE(&i^S8J4yZS9Ih-6Xmkk6iHm;%T)GuK`vY+`) +9-TJiNZi`vKw->4)lu;GYCg5PqP36IjdaJX|y}hSyFBBoj%5{`v%h8h4F-6ls% +LcRuWZzK%uz=8aF~)IK>Gd?tF;eVZ#6hJwEO;R5-7;b6j|@>}Y~P(;^WHDwYwuzr9&*=)l +u+AGVm0^CX?%E>cPT8bCQ+NvL_hg<^~oqV@@05c(M2T4*Kd1&(hyfiA@~v%PADJVPcyBjgvtkW}L2cs +2-dF;Wpg01gZ_oJK$vRLkf}ScS@0}yj)LSxyH)pfpd4x_e^fJ+7!3$MMvtSQ07?hW}ofpG@$Iprfya{aeVxaS$c-~U~?Iz$`jPT=|s^~3S|ehia1b{I&=eaB%x_w%+ +7NMie%eNCSJV!jo*xYEN1+3v#~VLnfybkmBkSElrIgLa)M+2Qd{E=*vwORedS_Z|-a0eJ7H{ES9i>Bz +SU6t%L&k;=o*DFq+Euepnz*fUoyj4Nq_y4v7s_A3r|v`^hongvh-IfTnnHT?*?)DQHi=e>l~#U|BD-y +dfawejsP5wrC4SR6vMGja!>67v|IWtQBwW*>Fl!12}=Y*K{oI;^b$RiS0)7e1V>yoALx)-W<8a$+X}k +K)}1!h&B@Ru|UTWNXj@{MDgY3Bp0fkK`^-~^(o{Xl^5vW_)(Ov=R%unTfUUQ9qe{h ++Yyvoh@CZ$Ds?|*rvJ++x?t^|@?Wk^yk{s&M?0|XQR000O8MnywZX?o+5rwIT6!5RPnBme*aaA|NaUu +kZ1WpZv|Y%g{P#XXiZUsA?^=JbEs8Uo*JoxZ_pQ>FmD~y|_hKgf^NyQcEw|zElTl6hU#t6j ++1!Um)!LS8Gf*m%wcPH)qdA&crPZF_ubGlB!bFCNqLWgHm~`MP&k`+pzo|t3r#W5at}0M%aVW4`5?rySD_INp%8 +GrU;^ik^K-}E!+nipnSg{kuLr(6^)u9o3#k6Q^?0TN>UYa6s6piV$$V;hbv)h|@Z(eoli|2?10W)yL7!zP4Y2E)E{Yl}Q@_+I4s65C*EmXpnmMKqJd?&ab^ +9M{ZPy=2#aq2Kk4;e*wDd$huUFaBpRDtxe5x|c+U^*#$Sv*Rybe6<)zmf21`mGWK~+Y@MEJKZ=sNK(| +?81h>6iY#_Z^7vDojIfckdA@+RD;Sl-tYnmvkl(AO-%lUfmN}i)E@ghiwiRX2M~L|O%b9&ncXAUp5U< +&==YrkoBeM#oPR`7|4d41W}TjJE*)fY&a}5%!(d4qZ@n)YClFh#lVvU; +=N-v4$KwRi_805}?WPvd{toN1=2A`2S78lQJR4J|`-}<4sX_rEoeS2$@k#+AG5ZHx9@#AUdmy->wc(MUz%5L8pk26Sp +6we$&n$4Z==vklv;&6o7Eaoe~=zKkojp=}JQohf+fH1I1J!%BHQR3RT*mu~@DqeWICfxhZuJ3D+-wl3%0;WUaK$Nnn82ZIG0{u77g +4`a-(HcL0N<2~D>W%+S?xl5RuC(~ML-Ze+s(i#5@`R#5M{PtHi-(N4&W?0 +5$VQl2NatbMIBvuT?vTg{7|eFOhUFMdBfeY^5(CTraeMP2fAtbzlD~fYfnW}tROO3zUsQ>m>Q~@vQ)t +;*SNl?Loucyp_nUKx_gr7LQf}j-?@dOo3Uk_KL=gr!zcIqUq%TbXB@}|Rd0q?+Gs@bjR2~+L0p8iPKq$;h)ykn@PVGa +r`ls=i`b^Ytt|E(okoS816cfX_;9ChawpZ)s$wjWM8vCvfr{7U*YQyzjI&HhIZuYMAF1EALDlBLuBz` +@=tt%)SbHT?M@6+7s}=#KixHK(rbpyw@GI +l*dy5FMIYiJ)TbN5jF2}fcQ+QkF&H^{r0#o~Ns*iCkRN&TAj-`fUPF7dRKrwZx_cUG`yxXl2&}{z)GkTs9AQ +%DGcv(HRo0atGt4q8z0TjJRxrItIiFz7B;~@#P8zp~__~pK=r{U|7iU!xDT~8`YbcPmt3>=YU$<1WK +BciHR0Z0w4jWoHceH5mCjw|ceqob0IRB@us*_NMVV87XnNR!tSK4)9os59_!@?8C-DRB(FPPy?weBK1 +VHt_z-%?_?9rnztD=3fz<6S`pj$Yo6dANs8ReZ;6x`#oukqDEs5jaUdzG+X?B&n+ev8akXk0wOv-o+{ +!)fptZwdf>l5)Lip~=GPt=RIoo14hDZU1 +1=ahTI*{wl~^Z2Q>vn)?o*Imx2;yNgvn}jiZ6N?~Dp +-`gW_xQPoBB&8!@=L9A-y$eI4dO2y+!8G@GxULz30AxH=_)%~ny;(|12R--L_F_1JEu*mh +&9-MMU{kry8H*OLxY-D9}E^v9>8rhE9M)F->(V-ETL^#|y$gwLx0TRbv7)av4c +CrtH0l^Vl5;GLZu*n%KLH>QKs_!N#O*VS~D`0G?kLtRw?kI|0_uB&(LthMS&vx*4J63gBHGB4O;Jg-W +*SAOZsu4p`*KhbQW7YE`Zw8UAq9|Ies$*=X`5wt>sU0G-c|Gi&E79`hab=Er7jx<3Et2&v9gKDSyA^M5G7~qHQm$noI0|Y{ +b~%JeM%qB-|}dV&F&GlCnJ?auRS}0(<-Fb{u>rSWs;VYLL}cbElzw3*XNyCAc2VbBo&!1 +We>+q;mc?8d4Z`y!-6g7mtUL^RgOHcjkcUxjz7|=KErMngb?h=0NrQ7yN?(G8`+>(2nLdlm2GPr1aLR +DPegIqsv>4mDuX_9Mq)eAl^P@he90kU4_)Z}6Zw0OGkPf}^9sK?V*tZ3jHOqXtZS1WRKxdQ>Z4P5|8}7GeC4612koCN08|~IIFqd +y>EY8V?-K?{KlGrc+hRbl+9h6JPnG8;Ww#)Ko7LASo;O^K^#EJQLtdlboZquFbF*5lO1@+Hw +rz$26vR*%i!}o`k+7>T>BRMl!3P4sHyl`atQwBtVmJWP;2&Iynp?N+onUo!$63)Z4J%vG=5<%}#gPHv +cXr3nf~b1IGxj3eXAqCtt533L`Y`&x2fgbX!XkDh0NPqWEQ>{wXfnj19l=&fcVo5rm-UPhrZm}bt_*u +k;N>WI>+M~BOXA53DW5f)7gxHPa_Ei3SF;BgF+HD2OxZ0b_kzX_oG4@n&NSuK4)F&iYcO8J5_txGo&f +R?rKEGhRVGY>Jc@x8prJ?J^ZLZ>c44+Fp1v$@v#Yf+n3CK42Mi!-$y@&~gK5r(O$6lj9hvgGiWuRJM`|_}qHSIt@l`{-MzUxN?@d}H;G9;-PrL6C%Drs`-Cfv&hvssuR +=Vl0>yVL7EVJnF~J(@~9H(QwqLWchVr98iqvvHrT +ZV#iUf0v!`_Y)5-aNjzON($@997HwVlV=afxcaK(WORnUEB4x3ZQ#5Z_$I;&W)|?wZ^4;Bg$#Kn{KCvwkB}t^K=R0AL!A7bgzz0eZf@ZWBU=nDkl)?snj;oCr1NQjYO) +SIne|P}qH%~uxHNWKpwaR71Euzwny#(}7*kqT&F0FuGdU9!pRm_xJ`WWhP&&fRR#Wt(5hIsr36l5-@1 +*=K?pQl*2W8@r|ApzPZ=PrfSar2MxD}=DrLMRTIHZ%fgG|b?Wi&TsZPN06bCVPpYX-(r7VjXN86uNK! +2r`kK(1Gij?Pam3{*JMJq_7Pr6FoA9$-{U9?wApkAuQHQ1i2}lvoWAEm|i$#rYcBVDrJk39s0*s&=Qm +ZHUlWHBcBLMz(bO9(JsiC{zoK%2^<2(k6>_5`fAOMUsdISV`&>s}5g=%1+Dec}ZgB6asx9kO})>6QJP +OO96&4+xrSqBAO%5KQ{b*2il1lAFO2rkeRXHKIng+WJY_iI-H0y5ZJL8Vjmx1phPvyfv{f&T$pd5#X+ +OZ#^d>vPmy^k889?^*01jQrJzg)G+HOHD%#c#f!~#F}tcvuI%#

$*bD1SmN-k^c(Koxrcw2RdI1d}!UZ65mX(Ix5tb +h5-K_NB!>dX{|>CFD?L(LLn(m>l%Hp%3Ty*nqPT`RRV>pX$tCrB^cR +KoI2i8p@S9aR#@e?|vL?1Llo3fWG;rQEHot$dkNS%lJbep>=2&SAp;Kkg^~D_((A%e(oA@2aNUDAObc +>x&Z0XD5F~ez~RAQV%cKW`c#$`K6T-(4?wU#|3Qgrf0NaGLN6=)xK%zp5W?A!n>02P{577xd!DKDU?g +&{31%H9MGR6MAVn&pT?8G{RhyT_I~xpb2M{TpYurLv733vsXt1zo2j(t*H3k4Gp|zf+fkj%jaF(ZH>L +}H#`p!>MUF@!{!jTa<;5Z&WLtU4hYLKQE_B|V2qdlZMrJmcHVv&F8*EJTGPmPP^!x5(69m7>a?gl2e& +n1izQ|W~@qr&doT@&$Utd^GtJ3;hsqF14xfrx~^roNNs)^k+z=HNSPr|sx13Q2zgV?+$(B?J3A|fO!d +a08g+k1CiYLT37IeP<$pXhnd3oI99yGRE5waH~S;1LDXuA2`_IKKGgv(Gn^gin9YTc%~w{JiAFxxLgi +J@EHswFiRZ5tx;*0)h>mB)mcvQHKzEQZOxcau5S3;j@NCaH4JI3J=+lI@COInTEEon!mVuq6= +^YYdBA(U{_m*|xwNvl1KEr{RF;P`v?p$!@GO*Xne`dMRa5k5Dk9Q{IeHSKm=Ar2XpA!wi7=*4ko97j* +9IyBM&#x13X)@S8AmTkZ{=A?t}5NCeu+}&Ft^d}KNT^zI&1SBarQxtOwgBF?l}2xY$cG6I +q!Xfrh$C5IoC0$v2oe%=5FigjffbxTh2?>!6#salgAH_03qFn*+02#Q$}q08p`7OCWSv;h)ashg`mhL +`fc_H{!A8;+qSM{ds1D1i@>viT0}C!nr1idgCFR(T}+b{5gJY%2)80P=9(N8XZC@f`!GPtnRpAOlF(& +5a%${3ItE3v-mrkcVu3a(7u;)#;Nr-s=4sH6KXQV)yPHY-%>5vk$)Gu9IwiILLY8(Z=bL{QWcpP4Mzz +B$VEbrACb%NZ=iFZ=r9;Z6(ew%XvBNf{GJxieB!rKDvRRC1$%fv@#?G_D*q)Khg?-rA;>`dq&^e&Fb~ +J;Njll((d9k&?Yomu*(REO#&^_5BDkxuRz0Jy2!L&ifOdaqSwNx8^aQdU3{m8|T2dLLf!!#?2wE14o* +>7;@&4LZ%C-D*0ggyq(m%h*Y*O1f)UdHi>euPmNZ#;eO7x-Zn&*Zzw^Zsb{Pf$w(1QY-O00;m^MMG51 +cj`1~0001l0000T0001RX>c!JX>N37a&BR4FJo+JFJE72ZfSI1UoLQYC5$l+10f6qdtR|3MIMxVzz61 +Hov{)4iu^uEX=g^0bAH{&pmNd4C~iSwVkbxy-Y{f5*XF&GRj3$4EO<65jLAyDb?eG0=bX|5?~g1r(SK +(lZhQ4bbzU$JNFP1}>pr^ITY04)P)h>@6aWAK2mnS!LsUSHU!?{J000yk001KZ003}la4%nJZggdGZe +eUMV{BBEp^4HNsQM5%HmQ@gJ9W~OYXa!{#A3;3;8KHPo2OGqO$L +x$;SMxo`nQ3*TK3?f=Y@%??3+bDcR<#t+`IK&70MBkN^QNIh_doic-loGb;g_Vb7|Q +5?}>EyXD5}xg~F`T6V5jtI7Lj$If?B3OOf=F^nTFaMm+1liIxp#L>7Kf-;RF#jbMBfEAnV!ntFR94RU +qdSa_Sv^Pr2El6TKn3d>%V-uimZ5&JhANi@^WW)T-PM{h^q9u=D?w83qy%|0l#)`Ny!7v1_Q_!-C)0$ +LNfmt_4R<}2yRtP|lid=IP6kg(sgW@c4O!d+Q^Uj8KW9E`EAbmShj#z@gO_qJ2mQWF6zWCs*7z#_WY<_-Q3_Brcws9p=V +M0gaa`@>3dV_}&P|1ohF|E6TnSyk_gzGBm!W`iREk&FC*AR^X^g-IQRv)NUy81NX#Xg# +{w(~*gR6dn>h9CK}MZ-?Bv-r5N^uEw5+`5dW?{A=BpN%^Ng9v(j4efm`V=kCM9d`Q6B05{)cQOqJxT1vL`M&1q^D)bBmC+j5J{J1rSox?07D>7W$Lk|p_KJ^KX2Mj +&u;jo-w=O|w)+yMhtrjXI|3JnMH`g1j2!qA^ER7w8sNKf>EdV5QW!0k=P}ZY(NvtvcAw>REFSu5C@*I +cdtx6}jmmMZWR(_@GXqpvjt*ItP&WjM%JOFv{-rFJ_#4FGCjr#q4;l&oLOvO3i(}r91pxFSg^V=BbP) +ys$}P!{S;S68*>=ncwo~%btFg)goXl#nb_*Z{M%Ro@PI9xp8LkmUo{zjbLQ(zyj+-0kpk`PF^}X4WA# +y|G8RfgNn^p`oZRl!{|iRP*3mb!B1O)n|O|M4zUi2ots<0ot|Ua!AO +`n`_WN7hf@MnX`)T<3B8d>4)nd|^5}hs_H6TyqJ-q<`huylXDog?SB#y21Wg;NRd-s7I|Q#on?~;Ni3^kxVU@0+r +eyxXN-WwrUQO6+|RG_2*Mq&Ou{_+JoK!`l%->xe1N39Qt=h%Au0)(P7&8ScgU8Gl))t5jn9svdVU-EB +nf@niy|D`8EU`oW8NOwa3roEv_&%aQu|;c6*%}>}ld|-LXW>4IwA2zl{?r(P-XuLxW|Mn~>EKSuFE~) +emE`@>a!0L{%6bVwSoP0X!fwk +YFD^nMNH8bC%^#L}1J +L%oVfusZkn;S{}M4p2z9!t;fVNfdIMm$of~oU9@-%&Rm8?2{z=FOSUXd(RaX(4FIb#Zuc=Nh{zA7>5V +P(dFjV5OS9fRT?v)rrY?#+J6o!?e~jOQmGn{JciQXA=HEwc@n{=<=np7P0#dZXLdF5*lLJZ-Gn|HdE^ ++*0asS^5J6K|v8qo-O!sn{g&-tVEab%G)@AJmv-rZinaVY+^UbmYvi()cvzETp^mY +*|lods7JcjR%vF{00-vWgDZk9}*wIFHpxED3OXV8nUnv>HQZ6mnlN+(~Wzk9GVNdADY2AO<|hGdPdEP +>rWv5cIlh@TINcozYz3Muy{KQoL|h?*`z4`Y&)LSLo?$!m)3>CSYx#O9KQH0000 +807gYaR2J(QTm=dM0N5V@03iSX0B~t=FJEbHbY*gGVQepBY-ulIVRL0)V{dJ3VQyqDaCyyHZExE)9)I +soK`0n%9~`0U%V55{rb#zrT@s{DcR&yjv_#vy%A$^x;`oMr_xt@xQ4hA+7BanFt9*U%87Delsb*CdWg(1}&36NC_ +swf*L?V|W`8-+~y=`Dvz5PjKm9&1Z+!r7ccHZXuDSIcfOe`}wWgnC+r|h;UmCi*rWs9oFSdmv!r&BPT0qj +R7x2#QOxZ(`3K(mBC0C-#O8b+{iuc-VMF}*g(ArXzl?7j^v;p~e#PD3--{0O(-Rs@`^{4sm!$*GkF#m +AHujco>v-@!K^UdwAH{GRA^ZUia+Yi?_pZLw~g1^6gxVf5+CPPffmqdEq^~qm~wAPMCS$|v`qm5s=Qe +vHJTdL$v6`l2Y4x!))gtW7KBg>sOpP{*2CI@?WMm{TD*~?00>6J2_t%qD4;~SI&k&@YXr7{VRF6FlIj +*Uz{^Fovxu6OycDLiZ)IRWs}=+83$Sf&WV4}QzjXI7R~!9(1g#J5#83CPy6>5*G8&Csf()KG9thsah4Y!pLWTVuxIsJ_wR@lu6A8f6pZ-Qo5PS7of4fdfvw?gxZca8DnK>BuI_>R}U(Qz1Z^1{$li%5I# +LVwe|KKX5v)LDu-FVUm6KTpfIKX|Do;f}Bj}WyP{nuYcR!ofYP>y@fQ=M?$KNSoy3oq^Vp{5Vr`l6{) +j|U<21htYGTLfpp^(?a+U1cc=#_Gz$O3liRvh_DxqjVPyC>GrUuPqH_H-?WBQK-^o1X8@`$3}g=QQ}B +@7OI=hiRYMq$|K%FkEgVvJn!Y$O7}t39JV)ZBdQ4;Srqk-8jq%rm +eZlfU%H1-1^Y*&ehZrYL~B%XDraBnxDc7GMLTX2{2?Kw>bK2)n9LXMh^lMcn`mpo^l`UJLR9{1eFZ=e +l5)97CWE1?O4ri715)OEnI;KV%iqXEpr>o8u!MBy`4pfnkstjAT1GfW!kcwQ?H@+4#jP^vLdKOaMt?q +?LKuQiGBt@;R}%5f-s+#x>-WMY-kz3r3`G +H(K=0KR98ksSF`?&E{hu+w47EbfjGgs-kGHQQ9f1q1>U#SgK5wZHhIh@+R+jW`_a#uOsX_4}TfNU%T6b~^eLuyXcoxb{P +ri^ySQ={9K6Gh3I1s7N`fwLV0(47|4_vZxP{6Q1dk#NBL?n`>wg`$Qizy^B7yve^EJTy2g50w{H*-sZO6OYl|{0<`|pWoa)EFx-&qVJB33fYqCo826=M6)xevcspGnxeEAfd(jVA__;+R2S{u?}BfY +0NVHo^$00o*H$Aa<`vyVl=dvnMF3n1Qb#p(l)xuoRPrK&WN3D|kOL8B$_r6NV*Th=G(v!{`X +sAKSqwqEl{?$~b(K8)8Oe9q*?Qp*w<`$Q<-7p-E%*&N-9o$fVgSYu%JUj_Pzmsr>{pmuDM6VscjbB9q +D`32N_ryHKTi%J#Yn!^jD2kieaNW!d>pY?X<1d@$98=g3OO$Bx}^$Z7gx6PzM?^ZL!}bINoXQgwvxp@ +CaTfsRI6E_0{2W +aU4$x`l&5l)Wsd|_x1eG=2AJ{8By4AK;1Vuu?8+eP3Cl#t~UPWJIA;A{ox?@+ +Pr=CcZb+>{r+1P_Sp@u<1%k0h_o$&Xc1DBbuy?aT9d9MA^S#=ye)`Qb|+F*HN-`QwN2!@%e5u|cit;f +-IxP*li{*Hx;sE6mYG+UUeJIN2o=dOQGi8pw``ZW?Z#R?7an56l$#5r~6eM-XNf^p(5`tTXNWF9(rcq +@MReCd+A`%M1Qy8oi0yFUbclN8ZkDk4r@?hngy#xD2N-!omAnp0QGscn$1v=~W)G*##=CRa>fbR&2Im +o3pO8mbP$RcFUUr(BT>*?17RFvxRI4~cfckgMFhSYy~x7vkiCqTDb;&7r3@taQ}o-q7_!dj)@WefjX? +ur}yvew>RPORhK_k^H}{^RwJ9wJ<3S-NsbKKs}-7$i;3^jr?^&Ld7A=XdK$RE^eT8?x6V7+)h~85cx` +>+VkJWNbiTi{>l2pKrL_29Tn`lyAPe4QyJgtR1REIRXGa!$u7o?X*kn23Ed@}LKPs6w|l=7$8{bbqbJ +@$H0aOPni>$FZYz7&B7bm?=9oBnS6pM7jQ$5uO9KQH0000807gYaRQtMk9iAQl0B&yp03QGV0B~t=FJ +EbHbY*gGVQepBY-ulJZDen7bZKvHb1ras-92k_+emWX^(*G!N|C%HVSAm;rkK@Mv|6w2iq}?2+Pz9CD +jo<9MXW&p2Y`}!j{kf5H7^j9WqMsn#Z{I_V5VoLyQg2%J&K~}s97boUZ}Eav$AMZQY_R>U2dx8=;(5# +RaIw2npL@0D_v`qHL5MuLNBvI+dgHH>am({TJ`6mZ2zpXqG^+&&5~BDcBR)xH+eZv@_ZYsx6rNDNmCY +TuCw9>-Y2aEbeFX&m8AIPc#u?;E*1loCI$Sj>#YK)tv;IT_D<_URY~3GCRSBe$!B$=3tcC)K(%|eFaI7v%n3PJPXV$d3XrXzYdy|7N%QDZ)JD4>fVxgPtrihOsz~a#(h1 +lZPxURHZuK|P%hHz`WE^h(Tu->Lz17=H@7)%aPq?Vg@Q|lPOthd#63Nxy+w4LzSNq+ouk~jM3C|g%$- +KxC2xq(5<*RnC6TK&GgtCQ+zS(j@7TBL1R=8clqfF__y&Tj!Wq0PL!`1S1U{Q1Sj?B(;h2G)CC*JbZGd6_0bhhHzApU+NDPG3Hs{q*X544mE0nmV0THEg~2eIVB5Lg!7qEb +DdB&VY&Ay37r@pXuo-KfI@RRxI>;)9Gw`_UfLtZBpZ`s%^W1EhK#|>ERhY>+4Iji&sgr(sr#Em*;Qay +qLW_xp>)+PwuqNn$&cG?a`KVVC|zL+zUX~W3wq@82>dr8_tL!X0y@J(GiF&RVP`aXS}Co8fh_PrkHjZ +o10AS9#}Uwv?WJs@`HL)7J7Q5;2&;${C$paL9|Fel19kzG=$pFXC5f#QAhC+bv&tW8V045nF)aLCnLf +%1=+yu%-n3dofb4(6e>JE?#wutFEjvrEu#+%>mxUust@ququ<1A>UasVZy2d4{vCwY5MIVjm1pg6G#V +Yb$;;~CwZZs0d1nz$T4hK-r?l&@0Hb3R2iIe}`rU0wIQN852lX1{X5o-QO;kDmU8gNIpz)NNOccoa%^ +KuyOHzIT6JUKaKqeWGW*CU9AEAM+mN}kW=n=D_>0{|&9~=36#qY0Sg}4unc6Y>2 +S%ZRI-L14nF}+lkt|tx5tct5G$ZJofg5{y$jqHXg;3-+Vsh~m)wt`jbrP@>rRM~#N&Wy3Q*MZ)SaXMh +4sAf|E{{k}rZjw#jVv`Q8n{dx$%Wwd+gxtFEU-4$}rB^Ir?3mhn+BXmgGwjKtM#|i +`zjyz(>2oi_8ikPZ~dB!SY0{c%416U3-YfFmlaGk*R}cdIPc({MSVz@#8^#M@1hj@`^Q=hfOg +F=kZNox4zDw!?gyYaYCyX-(q0mHL*}!%ymxi4d8;#UN=_W5G6I!>JN-7FrJ%;y;2Gana2pZ&39F1+KQ +LtZN3GEDYKN(|gyX|ZfR)tfA8VL|Y#@g=A_!-SHoC0q8g$Cue&I&S&V7yJ!qTb7s7SS5)5W=EfeC96c +*&Ak>e_d%nAhfJ$Gnn0h^O#Jy5wbTM=z!)$xD~osnZXu@RU->oJYEH4FjHb%0W3PukDyok+XxDp{@2M +o+w%rYgIuG{O_r2v!#pm#g?Mp0D~o)Kg!0XzAuMA!8mkY{6fi!GJ~F#DwA_V8XGDW5q??%#1ON!y3E72g}g232XAT{NtPBpc!Gw +{`{w}($AO{LRpnWeJN!1HNvlWmCs0hj=}*#J9%S!UHJ8m{12;aC++5(Iy2L`pB4kpHz8qn-pLlgc-nJ +3<0@xNz%61Iuh39D+Bh7m&_qTTLcKIf3N~ +Ddwc(1OjrwggN4v*vz)+z%s}pVBEn`mO-i^fb@nyl60U<3lu=3IPwLY&?k@y_WgZ?^Ep?n|3y|$gCRd +fIGWZe*ir~=LuT{V6MMA+Y%9x+MhtF>96Yej>IjsGawO|*mZ*UdV1ux&k?S+y(v`7D2?N8fu@B!#L66 +lf3VElj;rBE!vp`q@G;sGSSSzfh9#Ri)EOc4fE&YSW+;Ml^kZF$5jI*p_phNy88k~GpYnI0R^)G4|;R +?_)@aGzhY@Zo;pr`-w{572?CLC3)m0Gk@rBtRQ@CUcpP1<$~*dqcEt!;VZOPUq0@ZObSBh4n1zGb +nG4tupiSC(qiuUKZ#jJAP15bj=rwHaO|b$F&Oxesp^K_6tKaw +7i-z}KCxD?i}C>VS!rR3sn>V$1i4LqGVb=%Kptqkba+uYYzD47)FVT^$s*kfG^P3^RhXNcRZ8`m;f8$GlPh<+!SpG2T%OH|027EE +dtoWJyUJk*v4pp7Z!`Gh4&nU#;Eq3oEYE`LeewUX5e#))F?`@A#;q%9Kr!$Gf?kfO$Owl)Qv8{YsN^Z +A~1Mpz>ACwH5yWC2Tb_4fEoymp75R&HU|A2mdA~iF +vEOgI9BrR4mcfwk%rOe3mhfewsINU2M6c)yO^7KTR^BcC{hHp#@Z=UBmbF;`cnBC}JJe*L&K--uf5yw +mc4XSO{wjV+-e>F0S{0l190N>CB|wx;(iOVmh2|KToQo!HtAQY*{v)%0?Dk=iHj*Xcm+~N%gC$C5w`F +9A&I`Ly8l48{2%9lFmU)?U5%M&^$OZc4K***{-)UYB08zUOh2cP8+oh5R37V^En;EnF(2E!cKB4$~Ru +Vlj>f>%j$K+^8ZSbXzTi+EVwJi +v2(yy-h&-^+$XfV3e8CCv**7|bdiEr0=oS~Ay^Edp#L`CpmP`di+@F$?-sne#aNXfNox2=AwNT!p!tQ +?YH)G!TAg}ef73O8g!K(jV4=0YDASFNkoh1`-jZdU6&xe&dOvBNLBH9TVV7X^Albp*hik);7_$Ea_AS +m4BMjQdH`rGS|fQ^}@ +D3DW8fMMIi>{XFSPrXD;$*zu*_yVj$7`1#i3D^d?3YSfUT8hKg1qoc}JO~52C7Lz+vx@BP|P%8YRgd>B^Q9npcg({Bk6(F8VpRXO7LJmLrO@$3HI9|xDWI}G`IA9`S#-S&B-s% +A0#AxN$Pi;_J{)^zVY`|(h9Sh4h(rJW2J93qO#oFtW?(e*jto`N1pDrbEC +mGNs)lhTHNRpG-WZvL!b0&&S8p)xO48>c?+mXy4q>+q@lZ6Q$?0P_7XH0XlMfdvzG)vzz);593g1Nq~ +^?t|DwK2RCW(p5Sov1V{ZVqOQiK)uhV~<2(*vzOxnX#8AFl{CEghL1*fd&ZBlQj?D@FMski}!qVW}aw2et8wR}Q^jMYhsnGlVVq%KJc#MVyF4Hj~&fC{%W +t+C0zqCObp-m*W8iCeG~tW0u{A`1VMIhcYYN);=yzDgoy#_!}*Uy5*Gc~OEXnp_JN`ZjAEz(9*(FHjw +ptviwllD~pEUhi1Cm+K0nRlc7Fcv~l1wM?=cn}{6d0Bh@6T3N$ZR!I)jx@%tfJN#?%vzJ`=bvU|rFaI +GtE!mm>*Lb=!t$TRdGOfqc59eRv8WRuoY}^tn!9A(;6Q+CDq+|=V3c(NeoF$3hWYHR=F-MYa_Kik)=pZ@tX^&Es>H%jHZoxAf#Yq; +)J*F6u#;v+7)c=#&BTDLLhuAZOwcdG-#_`wWk~o_!b5zKEX1-^I@&vXY@ +gi{l`+(d9R3{Vdj|>O_4r;RZtiJi`-{F=s-}u()cB1c!a~H~Z*sz}c1tutO)vG+fuQ;Owi6XbYVXn@L +!rwo~bXQi(BSfpUE-Z+Tg0*0=y~!ciSQQ=)jN$Q%nm#P*Qb*)L$hU4;cK+@9;oqF8cJVKU%045`gX{h +*%h6v+%xJw%|~))<#+SGCrbA`IHAp@>}ivj_J0SUv5mv`}}NI!a71O}N?w=*k5BE^*MnSR_7s?41tGe9V6Nb_=%3cgMvkMQ$jB=sXv(R;hcM8}TspxLzPEW7W{7f$ij7pUSrV^4a;Dkb!po_Ad7-hS#&_Dt-YN%s85dlGnt +9cebiJy!~!VmE|kItQkf +2Qb1z@xE7@V%g?qC22$UL-+usMhWHv()nKd!zi;tpil6;NPr&0Ks|K-pC3UfeCFC5BRG-A +#f<%AE;hkxSg&iw08wb^PfJ_AhOZEQAPm-Ggw6`rk3(Y_*`8$k=&@-SMLh91XwfRa`xKIx3n!bl0jxg +J5JNxISgYLQJr|94#AAz>Xjl;SJ>eFWXj;)UP@yv7&*nW#$z2Hk%014Z2!!B7N1%hUP@YKIkMCTXVam +8ClN0LKl4$b=9x{zJa`oIeL;C>2I@jOh|R3dFl+NnanV^Nqkexbc}V@w#Lw^3**+|x2d!hJ1~CivdFP +$5`Zw8m$8pfYF|%EzSO~r4xWKl)Dd3v!sqV!U*hXRfZioiksIQbav^<052yXDiL)Uu) +P5a|U+;LyzC;;0NINC`g@x_LhN@8V4bVd+WnS=W7h7Bnh4>r&p{OksW{2W9u)-_dM9-JzN5GMZl5uJw +{xE=A=xsN6kq4ykANfIogNc^Z2&v=qHK`-TdJj3ymW4zF@oylIG;S2qRv${+%@n1Yu=Qf~qfpg_D8iO +WtxN{`tUPi}J-lZV%TXXEp=H{p1_;X?Jn&$zWO&OFdO2IBNzI+D`jE*VcFkviwg@FW8%C)zc9|Vpzh| +QEyFKPfYFev$+Vu5xvFfr9jaFK!g#sa9dQxb#G4=i{PF%D2?c%cIp5Tb6IV@jhy=_`yIbCBfh)!FRLT +gO(%xQT52I1k`G8zFzDGq8knJa%m`YZ$ +%SpOI&hLH-OBfSBD8XC-#9Pc^nI$&5^CXxS$tpg%^0T57Flr#SHUtQ2sDo2D(tUDBuIM_M+++)S +St68P1Z=ZhmziY<8JSIGk!|j-0IeW~Q3oPpG^g5{(V^@(ef%W=cj)^bo5?V#QH(BCYVKMi#j&>n;jBhpaB=FqN%1$#S|&l@{IE^e({y5< +*A8IFaHT3%Hm?$WGB6jNMguO+-ysz0#x|tfig7Cx*AfdShBJyJMTIdS}QP_QQXN#=gP+GItD&cbLs1# +C~oImA$u9oVIrlriWaV~Sl!{-um`|FUh#KqBvbcfJ&-#wa +76%(Ad^x32PyA%k?t4_jeynPRZS?roD_#L1HR>+!;U>?|~=yG7@EX$)b*>XU{zX!*Q}$uw_SK? +5-6BKV;fhdV9kNoWihx3fHNlu9Qz5Fb?=~GNXSapS-HsMQbbCa$HG{?G@oz$q=O=|&=QRE+M`gx8J1w +;ZBt;A-zFI?pDzrRiyuJ-u6Y-bz;h*!eICeK*Ef2G*KL2L%!?O%W-A6OI8^K@CHYM`U1T>J3)bZN5UH +)hXB@`L&0Pdk)63hM$_40dW;t;}NR&7jck+`$bBk{jceZrjTVR|IAE`wU`NI*$W@4Q*q$$k)=_k`@g4 +?fykYIG;%jypwop-5lPP8x;q4imme^0`$TtmywsUUc4lrwfdZdS=R-~P+AbLC?)PZt{Yi%lgF8oOww& +0S&KmXt6QT*CgarOEVYAqc7leq1-itgup4(H}m#Y4k2qcydN8hZ%Ex%T6$vQP88ij6OogpcrJI4w<@F +*Q1!ZaL9zlje?C2lQGycGGX$UxPA#XV&Nm!2f*e>j^EI&aZ-_W?h4loL-K9L0%tZuzMst$UaCm>bp?8 +M=-gvLuO3RWgWN<&5I)lqcH*Fu^n&+4`NE8@cGz<46nCM-$grfAi)9s%G+j}6)t<=GoQ(c;_j1PSIXl +PG4&xH1E|FDPaG4wEWG{cw)pr4U!VB(tG52seFJv@3*w#f+`kYsssFIrmk-+f*!BDL$ov;=(MNP4~45 +LYz5$|-3Nnwu$SvFcgohnG24ZLOy8!ufDi-MMJ(meREFt{g!4n^;|Md}^{_FQh2wHBO>z-8V=$6Q;;) +#IGhYwQVgNIKkK+Zhzw^BuQ#{o$?o;gPvhYakizkv82SgPxIjLbo}V?v`!xf4pnbd+xu*>u$aKnDLHU +ggcNwKR}LtJ)m41xyNe|S+Yr?(ZQ6H{sHk!@zR5AbisLt*xv1~q4CZZqob=~UYnuDSKJAW!1xZc24-? +4{K3|Em^(5NaKZBT4tlUmxPT3aanFSYQ#q9oHN#|mxT%2nlw()8^coJ&8#9=KLtqcimLMTEhno8sI}r +fEn&nwDlViLtmBT*wWvA)Cgsw{srM3b1^#pTZUW5D( +Fm-M!3q1#@V<_3^K359e4-2uRot3;iDLrv=FeJ%f5<8_B^>@$&HQ)8f}5I;j^uB4&3gYZ44Ujr9uhTE +6-l<4(9Rwnnn=Rb`^y7#1+<@%V{T3M@{jzxg5BfYi+J5Txf3yX5av74ZJ_RJUV2H|<|4x&c>jLu4^8* +wxd(D%oO=*l%I3B6?g4R6@kS}{o4W?fdl(-0$}H)rhrE6Ma@Yy)g$qm1L)&t +olyld(K%wz9d@(~|g#?&DyJatdpEj-?g{|8V@0|XQR000O8MnywZAZCWjDFFZg_yPa`Bme*aaA|NaUu +kZ1WpZv|Y%gPMX)j}MZEaz0WM5-%ZggdMbS`jtg_1#TgD?<9_dbP{6-X%uh?J^Q)k;~ko1$)_$Z}ywt +Qs2)LkhRA9cn0U)XW0G_|NChlPk0}FRUTxNvjX8>c%4Rr(V$;$>MVz4r^)T5s+1WfQCkyV-P=%ikDHb +<~stEWZhdnH1IBwF_H6a_)1nHUwPlNL?sPvbL=2xj1^k8t#hm0zsg{$`kmP@?y7`}3!#i6A(9q!mGZl +L{%Q@3=f2vm0Zh_t(xvl}o5);S)Y3hEwsNVSrEVcoMUshzv%4rCA}Ar=@3}c*;Ia2v4|7wkI^0C0U=5ST8IXwaTj3Al+a%wFV&3n!8PVRM5E0( +EGv?3gWs#1T^V4Nyx11QY-O00;m^MMG3-S!8^W1ONc22><{Y0001RX>c!JX>N37a&BR4FJo+JFKuCIZ +Z2?neO7I6+cpsXu3y0^7-j>ujD9tc0Y%$k0fMv$x=%qM(9%g_Ly-bW+0lmm_dQ2ScG9LZV1qAr&)q%u +Lg#t@#i?GpNyuT)s**ujBgh0d4OW>@WO<%vsvoQiLfcAey6oCknReM)zpVV^v&Pw8glT|)n2&Fj4;%4 +$U<*=bNn}t%QNj*6oE4Q;g&c#eY(HpQg}TR5YW;>k2m}}$h&*V5d(L_fiKZckqGPYb5za8Z1qXivAL?4Mv5jz}F$~I5 +%4`Q`D}p+3N8`tVVG&$p$avWhhotx(K&0itI>`dcAQOmM3(4MeAq;-M+i~KCX^@4oJ2E>TUEG0dSGJ? +7X?Ha;#aqa2In&z-bg~nzlYIf8ubo7+wi +}|PC615w1DC+&BUuz3B3BQ79w$f+7p4vjX05bGWL|vDsr6e*}zG`7M#NGNt&2KWsdfVm|i$g&&~CB%Wo(%>Zm-$CmlwQ7W@*3lOAVB?;YS*gMudfEXS>&dRFeY{CyNain{gcq5Ni)m*|fkf|9Kr +N^4|i~_$@E3C%yjN?np^D8EXz_Hf$#JW)8Il>t@dC@U7-`Ts6z@9U40I8&>eRhQve=y?;>DnXu_aTR1 +zF~S05DxuDbSUS?Sv0~H_$_-|kD6AqJfCp8UFT&PM^~AzBmSKYl+qQWiCLm&m1tgyUN)F8OGj+LtyXY +Z&P5RYg&Klk=t8{r+={6K1@{JD)u7f)3uLURh&nefKv;Q`+?WfN^$*19RNjxo1PzYIOhw>2tEoxl$UN +-N)Bb^n|AP#yE~#9UC4tcJ?i}WfDDXbhZ|E_ +ZnM=N7-Gm2XyiFH>vG0_eB+8mDL&w3P1w{@{nr|;OU68KC83YAucz{T +LL-5d4PWp~(YQE+fIwGrhMx<7MQ~kmn&T>)HVQg3VO>1l%vJ~z8ir(wUu$?$?6B;^~l8@6aWAK2mnS!LsXa>5pM?s001@$001BW00 +3}la4%nJZggdGZeeUMV{Bp2H`A)NrPG=TL|7Mq|OylOgR!x!=1(&iY-~dNfYUCCRSCL{Qgk`||TZG6?Ns +?4p!+(9#E$rUhpl+W4JyhB|A7Z=&G}=Mak**Zr^+HHD2JYV7dpWq^U_9K&o_YuO42Cy&V1IYtx|6{#0 +r49+hT5N4HaYXEDjunV#b`Uc<jUoCsOokKd_((a8^XD$~TIV^`rcl6&bPL)@}@Uz6Rex|1% +tO~9hlWv!%&qMKug{yK#zi-^BJfjVEsJVnFdS|6??y!d9=XS_j{t*KQMWfZwrwe09Ga9mhV};$(xQdR +uOpuK7h#c25tMIW?PiC3OYv2G6dO#ONosN4DO{X-*Orzpr8-b+uchkTrrb1I{;c^MdBF@6G%~ +s8qI#ulb;5*VpJ^6<71JEtA*>Kvg+vZlYMq1x1OH>Efl7@kSuP8E$1=VP%9YEEz5+;_2!a-11D=@tj) +_aOhSV3ZR320%}Es4SziD`7ED4gLOOYQFr68nX=qKYH6Y973(73n(REpf09pI~I^xY_NjXi*LJ@Y5!P +ji6hI@VVFBZlKe;xBK_^4@yb1ImPHG`T%U5h%%j)+Y}CqbNN5XuQF$I1}afd%UEyEwfi+yX}1f_?$@H +eP8O%beiAO-nz^wRq0XN)sWV-Vk?ofqmC2>(&|trI!e?P;-OvDn&!7Dt-`pg{UQ>DfSPhLpI6Gw*=cH +<-)9U#B2@cc}E`a$WOYCOz)){};&L@f#UGH)mpA*?aL#~Ith2~q~7R31yNfH51c8C1B&1W#pfX0Mbe0 +`0lF-HL7p4K#O6xExdbHi`S3+yF&zp@~dSYo%uykp3c^S(!#1@)%omovge4bUR*EM@W$lxDH7=7M-%{ +>zXu*g+UVly5uV9@M;!HQ%UD!akBDu4tSX^gbhl$Ng#bIoH^#Pk2p2m~QcFHu)$20#Hi>1QY-O00;m^ +MMG4>v4j%E3;+NmDgXc*0001RX>c!JX>N37a&BR4FJo+JFK}UUb7gWaaCyyIZExJT5&rI9LC7d9Ns_-&$%yC_7cJ +>%FIi6{Q$v>|$1lVg>BXK@qQw^tza)-y=(?UsX} ++sN2a~vOuiHaT-ttQ2LG4N$P!4^Q6RCP7E`?~0j!?az +_Lol2#g?fL`dwOn{bEe+T4b)@*X}jP_f(GNyX=?CNHG%*g30@=>(ROpVvEnWY +nwYaQ2JoR(GVqQWY58}rR4u%X|{fGK~Bk^$FbnUV1cX{Ril+M=_8x8XEa=zU@O4^z}C{L(!5+vd +Oz1Mv?76W(jypf=v#uLiZag8JbDv9KsT-7F%fdIzoz|WuU04s=q4dQ-QB-R^Z?1a@pVoT&2cF+`jET- +Y~-hq4)%L`3JfSj6gWTwu}#Fr0j}Oi_?Q7DpqS6%N~vG82V40f(n@XLD2z@dWtt|Z*8)WWRP^rtQ`9O0V#ZceAmjMXGHB7{12KJZF7MC7-`u}!{P5GQ#XvYhM|r?pd}mL +gQcuM{_;jftsq{yE~1m~ +^^MJOFAqMC*EO}@ejaz!r5CPkzKb9x~8uAt4GY-s)K0qbxuDw~J0a~z%J>_jO3lF>+ddV8p(;Li^Z7q +|4gf)^qGU)9jM>y`7NU>+67S)(vceqa6x;Sl|1HkrW>Dm(&Fz}cEGB9?747(Hzn`BR#bAy}eIHUG5+0 +p8|ChyJU^NEemo`D2>*eO*n +;qN?Tl%(T7n8(%`ZkFJEgOMR*IL}%etkf8a2YcW_f$g(=}{*xM6UXVx0+ocyM`;{loyK>kBLVo`H|xU +v%hpT;QV&`mTla9o2ne50_8UO9P!>c$^&qumrjRfj!6%&wEU@`?2T2tE4LCWh53_D<1%RXsEEr+ +89fS&Q3Gj8F1Ac~0%q3)eg{A|Xa06VxvVG4g1?e3Xva?7ZkrtL2X42P<6t+eoSfdbK)Ig1b1(_=irCZ +!&K_f_M<@;6`Ylj(tfR+rle(*OhPx|N}iX^xMNTO(4u`s25vJ=Tx|tS#0*F;F!g7W8 +AUaNIh=TY`VxnhsKe%;F#$@0R2{nvsp34&R`TGk}sb>B#Z6JQ)$RWSFVvAYq7$0_{Iajcpa1XFo`niq +S_^Ma>LMbho&a<5Cj`q8kAhIN@s?l +1Htb6E!Uu&~Fc%fHu0w(26}4MI;nT{Z6Fv@z5ZLMkmYthrbzBV|uMs1X{Vc@bP +wFPn`=TYE)v7Lbe=QI~9R)uLV#*&hc3zx~Y&xgx>R-8M$z`O16!-q)n1fjsSJZ3Zi0_cstoK`GhWu8> +me=nDU`q=bH`83JBUH2hSO+X{jsSh&KzU&ZK1f?`X6GMc7Be;|j +Phq&`7zR|crw+vI&@qI7uDdLpb+a8X*X6KH7hmy8-Xr^kJD~;1$)Ds2x+YgA(#(u7PzzEdd6b>M +#sxvPc!LERZwD446U#&grrr)lp04bH>B(6(SA!*78f2-Mzzf#)>B2SDrV!42Py07#fZ!N~>~8jTQ+x1 +!oQ{O{_pJUkp^!9mjF^DSg&ed@Zlo9FG1Q-rJCX1B=;%7!!&kuu|HUiZ4BQ#_G=08dQKmWW0vem`$K7 +noqwvx0Yz28M@GIa3r5ZrU9jmZcvjh4DJrZ?N!B#*~&rq^S02fonu+g64rY^JTILFxPH6+XZfLjap;~ +}VTox}vs(OBUn1PH+qC675;XJ=b1EvqDCTr#v3`ls@M*)bHm4DF|aq@=ZE5YQ}!mzKu^kgw(FMVdG{J +w1U^x}sQ%hp~*Okx+HmeyBb>z{C}%5fSu?^z^2+n4F#_AY0fi%cuM+ +8MI4``pkwH#2>`{Om8u^Yo+p{74Z^Hgmvn(P++{t^9kHeX%y5^58xy{W^U{Xa&?3Gy;Fa9nyMw!a}G7b>50U=);^K2Ju8*NBQOe>~H}L5Q1UY@GC|ROg?XgJ8z4!K@C3Fio>Ilv*$0c6jY4X#n +^1u1*!Je7>DpJYZm6h)(hqwTu3r1ib9AA{_?Q9?q0S!z2R@k3Am4zm{ZD<&fQ^Wg84JVz +7Va$PFcfQp9)nUxOf?PcD4FTK4>~+ztM-XU`}qsViTA +4%zuXPY89O<12<0n&f=Y_Db>-SK*@bb+iO?b!^sdp)t2i4V!{K1k>8#K-FoP%x(OBS9<5`m7IbmINl( +2<4m9R5B7l7JxgU59pAq6*(*Z0!VO2uelid5CBbGi^ou|2WCGAT6>6o{LL7c-gYGh +4fZPiYr73r{QCXFjT67*ZGd~a=#wmekERx?&JEU2L3IG* +`Slt0gAE`t1TDZJG=HGsnqK|;Tc5q@HWqB^}&@slhr`LyaK&0h0W-B{p@%x3j!_9n6AG>MXVKUubdgr +^5E~D;^xu1v}WFb|J1`mm1uCYn(fcL#V%l|J>O9KQH0000807gYaR5e_?;T#PB0AnZs03rYY0B~t=FJ +EbHbY*gGVQepBY-ulWa&KpHWpi_1VqtP~E^v9pTKjL@#u5Jg{)zo%$u^860#sCXom6P!xR!#TP +=&)DZ|`m`9+%x+>U0V6zxSJc@O6*4X`2eLC6YU{GvBoq~FM*z!q<%&I@7Ot*bKEVl7I`3tS)JWguKB8h+RQa+g5MeAQ +6J)#DMv4>owKih5n9?($D+Qx=NPyZ0cWxRyVO?!6CzS^uiLA_&vHbt4{a?^>?KyMk9n%!ju>iZz!d;n +IDed1)3xUss}~m~_F09fgJ+vf9eRWVu>b+(w0eyn6qq?|-~Lyu47$Wyjh}L5?veJCJn`)2*e+Bhfq{ygcm1n%P!b^RYK5c_GrkDkP<>@EQs!YdmG*TcDA*`+}*VS5bumeBSaL +N8c~ScPNT<7^MV^QuC#z=TFlSA=P$r{#`Al3IbqNLK)=0!qRf?3?}Dtrt<^1cwvZHjNnDepP6_w{Q9} +O(+XyySPNZZ(1aSpZSn)+SSe#9uxI&-Yn}sbL%MA^yu&KD@kZK}U +mNiW>>4>bv={8Qkzxl|f^=Qk?G)e?05wS_>Cx50b$7$Yb7SNfDh$wT9DVh2^bQPfv+yaP8iI`*FY2?D&f1~uh=~~_!-J2T-Q_Kak24)Lh<`MxxJCf0Zbv-q +il94S*dS{G+Q;vAFtr?nJKtD;6eNwU&s{o}OTgm5aEw+CgOtr`N-X4(4=^?oF?*4{Og$og +4MRXU_6tR75;JTBWY^~03-uyH!gXL7>T5D=YR41rT`%3UISLWb^L$#FT(iSMe?zqdEs7Pz)|0++qy(6 +Nwp4^RWwTh8p>bRV*wC( +zAWhjGRWh^9Rhe7wjxMI~?yF6%z1Bj_LJ+oi>aKzvR>;pQ|98*<$3wf +ObH+C^S}lmb8lmE7{MHW@_iZ>iMi*&IH#@w0yl=UeWW~G4j>;apJtKRR08kB*uZ17=!;ucqpc +v|7OfnQxe!>Aku4B5UAgAO;J43pzMyJNSvYwY{Fc`F5h2YF&a8eho74T+`&UUNXpo?3bSx`)+2V)zzN +`g!!eekxO7+rvHC5P^dliF5p!w|p@-Xd^3REMjPm7Qt2UHk7lX`HaPE0Ny^=r|0m>ynOt=};iLZfN*daf)hAG1qEd7oywNM-zl2 +9?dJJYVD8x9K_Nd#4@to(=$8zi`MHeF%sM;$oJ~yxLI(x9JbNec%O49KOV>93_5J3Kl4tThpAK=j!fO +@ojf-hV7g%RWSTHF`$T7o@%S=e$GxMvfF1DT^LY=Pp6)>iKv3}YY>tH1J|d7SwA2UW{Eb>Kin`Y@{y& +s2?r!Lm4s@*DcD8MrCWf__zPWL?+IC=KlC +~f9bKyRX4rrRPc)%F?^j;Sp3Azpa0XEH&V|Slx+)J#m-qd`V2>nvT|;AvXf(mV~PT7dV!S;P76cr~Ga2sv}vt^MGb602@W6*8t$TyUvMtkUWT +ZklH`*-@j|FCW8Y+*H#tfm{g<``R4ND^ycp$-d#iApZ!^@S}c-tHr~k#>29hB@0t=-I*NmtY1iq4w?_ +ut+jvi^IL76d_?ndtd-84j&IYZl_nht>H+QFO%^%O3&lGNDY41kPmkKZHxB4s5->z>~4(hFYwQE1P&*o6ZRdt2~DSj? +yQOqbo_Zfb$lM8Ubl~7&?G5-WZBBi>I)ty!l$gfP>3lKu*bd0Oo=E3NUJW^c +NzRPi*FE`+CvY`Qs5HH-L~~}0c2{H})rKtUc5Yy_%3>_JU<(-5juTlfk~SOV?z;(0i|$L6+rg(B3`52 +poznDzyZvxuoHRDcFcjumI+wcp*>ZE=z4J@=?J@oIz6Tj6lntP?D;yUuve$#v{cldjgQt5w1ld_K{I; +aKV6w;eB53Z*jR9Ey6F{0TZ-%1xzrpz}x_6{QD>vMD&-XQbaC$iexU5<*A@y^I?_xA~03nA&8;m!7x51d(gpn&BXVa +q>I{b4#cEQj=c=N2W|;A*T?Q&qAsbGC_SToZg|jczWb`jkO9KQH0000807gYaROnk7S_TvV0PRQs03Z +MW0B~t=FJEbHbY*gGVQepBY-ulYWpQ6)Z*6U1Ze%WSdDUEPkKDMC{@%ZWr}^L>qg&&3;0>+;-DN$V#D +lZf6MGUPSQr9ZVs|s6mK0Gv0iIk{$u@f9lFkm%bie#}~o+?rkMbUXxwp^BqwL8JitNosrI +a_ljSXOYQ1Xl2t<)Ri)QI+gU)}Mq@vMS@*?0VO?lO;5jitVfXPzc5wfkm7tQS*kk!d9q?#>(_qij`G6 +D}~5qxn+5ER~8k|*%`ay*$v-{Kgu!}4a<1V*Rqi95!#f`T6QQ)k-9!nG|ZlM4QF4D2iq?L$9c|TbP#pStegh~gYef= +vr)8)o~wBI0VIVT>D}nw_z|j8IHUZmKxL96QxjRkZ4h;SP7&Li%9E6Y`T?vvc<57jc7p1 +M3C`@O3RzAXw&-G?m*29jcY2rqOwrmQnYtfa|2T#mF#BTDQT!vRSQr^WO@t}u1QmMzmMV{2ib_dDBCM +t6I^#A{sF8mRofhpuic90GX@V>lNK~Bg;ptcPC>U@zAnTfTwQ>IPE?Why)aYD@up14H1E1K_`x7vrMqV-4%tf)TXUN +C(KIH=u!PVq^7)x3Xyuyb$HB9kT%s0pgGzPunwESo()4sTn~`5*MvaVB +0y`$ldBC=vu4Xi2^d9*CPueZAJ$7IlFi6&_T6bw(Ub;rpmKp_~pT->>ddbCxrLbDrrs*8F?vyS6i~U@ +cVny}%r~@c8^z7Q5_Epd$w!~MRZ~3J+5MO{1NKOy;2b$hqfW684@zE}kp-c}=q2^fu&eC|2m2qk`t&T +i;vR_~yzkKOu2}}AY+Czhwpn!T-Z5R<{NR-jm9+YU7byMBS9K5p`BDPG`ns288^Zw;aU%o*g!C8VEx_D5bQaoW!aAD{$;#@)JcpdYg5)awPKL6uL*pIyvrgcfsn@4K35k4FPBYPiGV(V%)j< +&Wr$1_aD#s_%5d48xHY1Czf4u?IK@J5VxEEdW!v5ncO6w{}ORk2yw0s*aTpQ!;AerT&b^vb|V9GSHhwASVqfO}sEk@{0#3$PMk8xReSCsndt+tzAzcD9x6?yy +Gab*ACM+5T7`&!kc?wX@&<_@6(r8=2i8Cilpo#|0KATv275b6q$52!;d6<@3QsEKPotx)yD%srk`r(`}d1$KzPSF#+B0 +6LGG8J(htkEaNDQ20AS%k_oA@G&v}Bc<-O-&0M?4q+PjgaF1VgbKR~m;YqZJ3><{jtiIRj +%&|&uLGl5GWk4Tne#V#U0~Qz`fWaa90oMq09D-dP>b|xb0BGdq2>awV4Gj9}(>rj%608Hm7IGsI%LK= +wR_XMRSmO@Zw-1bKq*;YVGIc1JR_KER+IER;hD5s8sVz4RLK{$(8@WATAPheDE67D?c35=`PssFw3H> +^fe=XlDpUfiMOx@q^H+SxD1laXGgbX;xJ6HtxGUx-|tdktVTVQ{|WTO4mmb;-u!*B)ID%RZ*j3u7QAm +~uLtn2Kev4{pFUZUv#si_XNfrb_$E<*Tmgca8c!-LjIySRu^u{$vLv^cF|TO6pHq^5O^nHPXJ74&K#Z +m28l*bY)Hl**}*eVSQ-q?w5X7)1gB@VO&dNilNpf`)tCzVD%3fBvQlk89yujt039dEB#{R#rjl1~8#c +QyJs{?sCU(C7N^7yTU!B759r7PT_>T=Qjc{Geo@;Jf++fL^%rNrzc{3%8sikgy|SLM}N$k#vCL^ +5@byfKn=Abv5S-jeB^Ev7?!>bO1>Y{d0D}hb+AVToyQyc&G#xF-^I3e7eGj3?t2dV))9b%oU3|i5U>q~Xum5uS?oE2}^I +ro2Wqfh<_Tqi|`R&EUyY&30^S2kFMjtQ!oD!AA>s<_I;{?QMK($ymi$X8zZy}$#IVRjsSLtY*;FOvJ9HP^K?RX+!R{K_3R3Mprqx^ep=6(7%GDiglOAHv +j~EB*{Rdc?!&YH<%`roUo1q;CqQh#5I +IJy4Z9EkgwZba9Y*6z*{1t(&kr=`W!7NF4#e?3sx$BBt|b%w+piY?C;+TCNN^pG&ur6Z@nxrnJFq1@P +#I>ps*uC&yt%ayHIz^u$p8j7F)dz`#S(xCR{saoCe#V>*QaRvG|f{Q2_dHy=KKVzdz8x+qa;*?R!^%y +u(0Nk_o++OPnF06=&=hneP8reay0iSkTQ^6d=004SE(?p?btEW^DSB?*h}Wcj<75!$CwRd(D$Z8X{nO +ABDH-Y(FH|47)2a6_GfiH)T7rY8ERrNv4tviuo}+%xUi(bFOek)2Q!Q}wn!LWEPu +jJC*li$l}|2y;Y2BxG%)M5pYY~ZWRV7BN2Xr{Czats2~V!SzO$8K_N(ki~^@;h9ZT2t +7VwA|djtfo_U0SJIIq#X;}?xEAubYexhh63>3ytT=jev)?$W>^|O`dqo0)eeIVBT=vqTlhsuDvZSYSk +enMN8u!S$stRE@w4Op!L!q5`is1W#lcY=Xo1`hpaeRK@ysNdKxVL +mk3=Luo7o~x=1B<-TtmbeDM!!1Djx994{fM(az?y5V->30Nq +hc33F#A8?J1tP=&H*y46G=Rb=0Z;K`ZFe^X-@@tu?FT5r{%bpzBWDpPy?hzJjQy5_RN)pZ37Cz<&#-D +%0KCh{c7^!CZ!1a1R5xXH2hziH8&@i}K6cg~Y;P+xj>ZWAJLI;kbcDSREn+StiMaL%7-uNv9>gw~!QP +zdgJupM85koAaeD7cjaa3~!oYHA-;y6*{P^mXo1E;qK~jC)9PT?0+w&Xm*f=$(=nfdcBeLFO<8i1q53 +t@<=pYoIdlKf|0rDzvblf-W&iVRebziCPHmv+x4Sh9O;uL*(svy2xk$vhb?Y$g5{|+VL3EwDh5Aw0Df +Cykj*fXep;Uwz=7YxFgqI1yE7EyMfhd%xhj(zg2T_4QT2ED)WBms`;tv!N}i)_6s&zpMqAyTpK$GQ05<9kQfgphP401Q4xlz*!n5fbalD+wP +`lESI1XOVcmu7)xGPb~$$pxsN1^6J+Y9$`5oEC?2dp1`4TDKbA?c;X)8~3zd@s87hsMu^M{e +kEov0EQYkNj|8p}mloV9&heW`acZnJu4F8>9;_!$1vtYKa|UyzUxDL8GGu7*BXkpLDRN~jMFu5 +tOWfURb{jQerz_;Z%<#_xjv?}lo?W1?Geu_{WU&f>oIZUo?wiLh8XooHW=^{aG3t$I!BfS{F+Z)H5oO +u>@~mrMlLu=+#id;uoBDz+3k+zpnM2VJLr=*?}J%tsFSE6wNQ5zlCwvH%}JrUw+go88t8_ +r|68NjX9SN4r`G-9uCf`zl~5b2ManH^Q;F76ajaQGQEHdLpY9qMfZ2q>i!1+fKK3~%W3+G?plkkOJj +;;bi{*ZtVI!*}p1A={zP(MnbpD4_a7Ub^|;wK95cL?v31ow$T`)Gl6j!yBmrkiY?y20xllVYat5%BE+ +*f*J^8M_u9UQ{QepBYd +6$0qvs=$$>64<;ei4cPk1ls23dbWk5(jaXf^+4hJGWnPT0>Mt}pt_(thrN?)%~Ku%Mga%cZGanres(=w!=feaLWmM +(|&0xdw)4WO#;#=Kr;wd5UhCE)PoNcUYzqcDaF=@#yxTtUd}ye`Cm8H>AQY9&}?kAb|tK(1OG+wU?$H +MRq4O*tQADO`J1VGZ1EP=V(OTd(xe0a0~Arjy_L_Q2wHoz8!<_zxm*<&mg00qAk8r0eKtWN(gRc^tbB +3_6OBcc7*Yk6@udzkEQU~46Fd%`ITn*TlC+j&tiQX7M=}0&!6Wqquc +`QG4)F#7Wp41^(#Le%Nai7Qom$;e)WIDG$n*))J_zZTT#!X=g*N1p~VcND(};9stjKO!mPAN*IdbrQ1 +?8DgCF=d0#EY=BO>nkCgW?orA?nrbRWj9|1PpA2z$cbNL3f$3hw9*vHhC{iWOCLV=toHJJ1d`=S{XtR +aVskG)DJ|-O{dUVG>P>z8vTq;LYDuPaLgd*KF>cOLfJAqfUJuN$l&II6;dEr2W6t@Z@g~@4X@6{RIX$ +lj{5thH(aVDrtOA;#PmR=*q?e=~sJ)$m}K9`KGEHiIo)SNbmNHjf$MFXjYV@&8yyoYCS(pMY3@>V4zx{rQa~_?I_)qXR +&px=W9|yb1bREyVQoa8nhX3-^l`0g4DfU>1!)+vQ{XnvgFOtZPu6mOY#q6qvpw-<+87e-o +_;U&*9OV$NOaPd+?p9t6z!tYn%Xb&ZqHPg;#}KCy{-7>`AuEhkpW4O9KQH0000807gYaR3s&-u!{x&0 +Mruz0384T0B~t=FJEbHbY*gGVQepBY-ulZaA|ICWpZ;aaCyyGS#KLR5PsLMAY=rV8flgE2m+%HTBHsl +G_ZjPpmwSuRYHs-mQ}7H~B`|K;N9azA@Cq2^yP3yzFQOD$J&FmQCH$!TqC0**I+ZM0ZOTC +l}pJQxg8L80{}OqEQ}-4QuW*~x(5FJn0|po|O?`It;!kaHy?&HZW04a1t97o}hY&Su$})=G~cxfYOf$ +<5k}n79`z76v+2=7bolzf@|}*DFd>%Wqj!ebhH$+}f~!XSiJ~M$H*so93;+#nBb>3bm^_7g(BKe8B2Q +_|a+EQk`EG>6+?b2k67;_4S{#Vaswv&We(2o>C#U6Y`u?WkxMCGs6&~87@ZM7$SMfT1_A{aE0r>b>8y +aI3^bg@o`F?Bu~HnAsjP4*)b_uL{q>Oe>HTTdy5D+J%87>Vh?bT7@Mie_QXcId-N#U=_+{PAO?=Nczq +MzMhA=;-;wWvgk_NMiVDL9J$mr=HuYLGXiogfsJ)7Df1gu0*=Xz-4atyv(}&4uOdj_<_ZWOhl8|9v#| +_Wy+PS}t?L`nBV*7AZBWj^Fk;?W=?uLt|i2ThOx4gkqE6d1|gjkU~qUnlq*@$tJs&vtPy>$NTxMIJn<0j|H-X5$4;<%&ex!O2; +*YuVVN|u7k8)5`?>MBCBjHpUS@9sY{(D&V$U~&(K7m1b*yxJR!`c2}E2m*w2L^rN)LjQ4^J>)F4f`1Wrauri?IPX-l3xAu*FVWW +uww5_XJug)AHfv?G#l7%Qh#xRafBNUoL@h6sMcpgg_hX8Ljt00QooVod-UQr*eQdbSBjoJNuJyjH4oLIJxPB*{Jy@j1h&x-H?Pr13_D<`Y5z|8 +K9DnNme7(VT;^&te1x+enc-yDS+ySj+eFj))4@eozWktG4*%;c6BWsaO&D!Ba(y_69RJZh_pjr7a!fy +w1Q2z?Y(G#QgvNeM?BD8evY*icj4q0~{z+pwriCM{<8`(6eOEoOg*q@H%gPO=u3W^LfESn41xkz{^Yd31l +PHBJECKZx1xZ4KjGI!>En*kA*|1}@hq(TB8$q#IGV5?11)TQ^;f`g8bTrCog^_`Z4c(er9|;DT2Ef%@ +a2YvYRoYjoaIk}QzKN_$7MB&N_|O3`!(U$+ +|Ux%s#&?#w^n_5EU)o1gEOai3$FeHqX>{0!LbdSqvE-UXh6djqz2h`1}XH)>;=wvA*iCViQz%J4-7T# +(OZW{s>AjvzmuU(OM788bCV5IvIIa*9=3QP72_`41LQCPW6^m$)Ii3Diab|1eUNRVOZD~$svlZx- +bAK@_w8<+>1ScYn`$iC7t%Y^PQ`Wt{uee3JTkOLw)xPM3mY +2Ts9v34Nyx11QY-O00;m^MMG5mdH_pU0001V0000X0001RX>c!JX>N37a&BR4FJo+JFLQKZbaiuIV{c +?-b1rasJ&UmofG`Ze_FT~ups+GP8$<;pC~3-=|G$6*Hp`aPQbN@*g$_`J<)t2scH*1-GZ9*mYV(2AoV +fbRM)?f`T!O8zsV`QJ?77H)jX><@T+@d7A8~*OP)h>@6aWAK2mnS!Lsa62K|^)~005W{001HY003}la +4%nJZggdGZeeUMV{dJ3VQyq|FJE72ZfSI1UoLQYombzF<1`R{&tEYL545K?@LXw;?)DC`5^yVVa1X0h +*G-(ps$&P+X)hrDcV_IQb=oWt`jTdTe*VTDPtr6^9$9{1dk(o)jtM2y9+;HShz3P<%~WBN6zvjGH`+J +|4=Hv@X>^S?Qu5pht!%FX#cE!-wvjxTxUQk7z4oo@R`6crZUrA3@?$ayc9=5T3gx&#S(ZzY?U?1;9>w +5)A6}EB|MQ?q4R=w}MH*?+6{NK;TFJK!bJYrR$*kRy^$Ki@cBV_0N%9qZs)U6?_@$r_3e7Dr*tIIJK$ +lQ)cI-fk($Qi{ZBQZ`(5-7)x4{5w_@LNMlGjm-!V_5(A}kRWxwcMr%YGTwM`#SUT={@6>ovuD$$X?w6 +$fn!Zb(%#hn(0;&O+EmvJOqr_`{JaaFuTN6+SqG)dH;+tYehwBwWy0TsEXvJoiOTF&5$}#g~=0EnC_J +6s2YdT$JP11Le#LZeU>>o{LiCxLGu-4dlQAe0XPmSc_J8+>7=&?mLbl9A=cZ;dD +G%nG71K4XRdOaOnWP`D~7(@m^jc%9czuPz(hRu{{MAnLUd7R>|H;P1F-rIAAe?}5*1d|QG@Spz=K|@yqD>7cs^l2^v?-Ql^1>YwSkQfn!m1D;Nw$qbjU1Q2Co*(9d3Qke_dlF2*`VBi+* +-h1~Vn@1jYV0rqn?RSM;yafF|E +0kqG8~aSHXmepGxcT4+zT2>DN!~G^lx)G&Um9)@QJj~kt-UUzdo|?ZyPj= +DE88O^pUm!+a2t=!!g?QhH?Ip{RKnt^nBfoVBYo53xW9kKp_mywnh#9J^h$>YekLi$P6{Gmm+x9htD9 +IdY{kS59E?9u-55yu8qM?mkoUSW`ZMkiF6EKN0cs?8b6zGn_@4v0h$jIK9Vx2Puwhe%)xd57I+#5ScJ +uoDw7>}XBW#phA6MXY|h(spk$OVaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZLVPj}zE^v9xSzB-8HWq&OuOKuSL~3nix>%rqv7SYdPIn6wX +)wv|KBR#nOSG+47PTZ5k2lDF?>UF0L|vR@+5+7G6UXGaUp^jkihV7lWo}?tE19<&r-#@Z$@IDBP)w|ohqJ +WV!uzT+-bTnUr(_po$5vbQ_huR`S9`Mk00mk`d=3pAFi*bIQgfH*SZju8mRdorI2%WRn+v?6t8iu6x* +#Ak1f|fzzUbMSxKL4)vbj|Ql)#IB++a(%gR(Kc9CW~ZgqzCGg{6V`~*QjpWj!i=9y*~3)oJ#91S^B?6 +Bj!WEo0`XGD74tZmfP(yT04UdSc8-iZU#J8r0P4I~PAj4e@7ZG@%5Kjl8fps;i;8r|_Z>Jsw3q^wge( +I>^khSh2I3z(;v0@)lgSB-fk--`#nWFP61i312`@EKHjcNXYlWX0{VW#?>lxyDYG=38Fsbj+ +gZ+xaKAH4Aupda1B*#bh30Ws_l}I6c$>Y5mkbf*NKY;VIfSEaZ$l=EFB75v704gk48l8YI2^D_=i~V2(SaxGNTpbW%UK}Ci$WmgD +4MrSrkxba0c-_bb6yfZ@k7?t9Ipl@xwr8q45gOyj@z?9FEQ%mwfJg#+EZO7S4>g6` +|#^9}7ovYgq0=n|ae4w_h#qI-AX5-JZ!fO7LeQ%VX=oYrM9rZd7QSx7S;*Xk(a%?mSra%7lpemZSxYS +pL8f1~)?BA%8^jX3s0F0uP0(f7rg^s70bFtBLf_HoI!}$xiD!p~(+Q3uXo~Du$IR_x7AuQPg8@2a6Fa +%|NQFn&68d@-&lV6Nyq}sjY0o-=($VMtTntjP%bDU^qMxo&~D-A5IJ1_#2xuDQU+sA_*sqK4H>pB~JR +`g$d?2JIeI&$lVI!oad0#39#}eAOGjd&Qy>h{s|_mt;1fYe90as+p& +#f~|Ld51GQz9L)iHA~Rx2MsUQk4?j8>jIL*d>ji#qHUPoTB!Fb|`LL)Py?X+%XNjM#hj)$fJtNz}JD4 +R0=RI}j{>iWcCwlk3p`8ThuGk#CDT=)9W)TY+eE5$J0s(G~;YBO#iQ6i3e(JY=(10msZ{;|TO{g>v2P-C2jBe6%3zCP9udnvxDT6E +KfSG2r_Qfu{6(INy+~ZxfxgmMp39%AQ-rY7n|-a)D4NcjOYI+!xj!l$!!Wh6{Ot +~pFJ=E%@ZzpaFN?Y=ITRe1N>e?dG8i~`gO|QRZqOWbVYv)MSAD?@bX1gHEVh<1}G%+;d41u>kbWqpwT7N$?(+1%P=djUf}5coOQHfyPWV4(>{yAx>cibFFkaGZ#b?Taoz69$un7cFk@iQenV4YaB`n%j;rtvAP~4ht +dXS^et675nR7zMiwftEM;f`!O$YCS5mlCs{l~U*KE!Q@D6sH$|C0MSovB){R@48Gis(OkKyR +wt#Nd{yoP+(e?M||q37HL`UQkbo|1Xz2Z0J-NM-vTIM?#Zdpp%PC19Kor98=X{{fFq2BNi+wPN-KI@siA*2Wle+(7ydoILxvfo*f@v->YF_V+zu+8#(G0%D}`Mp)?hwYKMitLjW +UAI2{9v{`qUz;mqg1BKInjdZpEd4r$MD{dhZJJD^N=V1Q +Y-O00;m^MMG2?Hf)J80ssJ&1^@sb0001RX>c!JX>N37a&BR4FJo_QZDDR?b1!3PWn*hDaCx;5&Y5 +WV|X41t0TUbE*w_Y!(5yO6NGgkThV>}VrPT79(S-|xs@QMPV-X+zJ&kg3a*yR*7}Yc}qn#+NtDWyZyD +zVfTBpdD!iiDwRgV99Pm7)d{QfRGB6~tKTX$tIn*&(xS_UZG+5Vyk7=rLM0MHV4Ww~QZw(kutmphHMM +y$oPd;f+LIVTNi=XjNm{h%9{attEG6r(EVCp@D#5IUP2e_al8*n`y63lAt)9^E<^nS#7|B{Vv1bI5R@ +1SM0-;8YvPM~Pv;|crJ%qQEOiaQC^y^L=)xw?(4r(3d%o-aoUZxgBlfxKZkH+V~OiORU?7em7kioYf# +LBIc5f&hp7sBw+$xCW>wABAYsncu*B4I;qPN$QN;FSy0cK_PMGOzBA?MnoITYK9qtawV&SJB?_I}7wP_}6oT;W>ww6R%FdElB0AgHWvUMTD5ba>jV +1<>2*P`|pR>DIdrj8TP4C52xv$CiX$2|5|>U{3kYB(4lm_3rFwZqWo~}`m`@{fEvGP%{!Q}Ht*TSn`v +5sw2g0A@H4)(w*ne;-pJugJO@x%yiL2&c=c1k(Wo=ZSWZi>dPxJEEj5_F@&5o&O9KQH0000807gYaRO +)d(jfo)D9Mh0=C*Zyu`H4w$&V6Ex-W7rK^%ld%~F!D +@`Xo*mGXQKc_E943j&q&_lT857@0g2G~3mZ8!Dt_1O+YpkY9f+K0*MtZCl?d1UQN(!q^EgxPl +Q$^9;~4mq!tETFBEyErOvd7^?vew~Nj7`gV&Bjuzl!W8P2pT)Ttn2@x-Ba2)q6IUdhT^(frUa((k9aA +4x-&+zkV^Yb>aC&y#+dH4Op>14zGeaE`@X!V8C4<^m}AB@)5>+tH+?W*Q(8O&fZgC9St3`N<=HrzJ#^{5$aX9lc)$KThEw_tibEx>A&A231T6?wl6`HF0#0? +Y8O>C|U1;GBOw74+#<ak4BcW|0u86;=hSnxa#^-FdBk1=xWK!lCY>GKWV3r638Ud9&Tr-q ++npnbTdCa}sj$S4r{xOtNQeQMbG#MvgZWq9h5i*`u9s1YxNQ-Us-YXJmfPQ*Hb4Uh4_JF>pFu+McJo- +n6&-*xQNpc?)bIRcu&wA$uBnFR(|@@RxuB-IIF~MN(id_gKf)El@uZ%~B7`{qMQGj->Yb*3^bzZ_e!X +|0brJLO-+gt(lFWy*afWmTPsB)AI@Uv1Jf0tL(xZ&&$I3VcN~#ZO%I{GkwmdP@VdDHQP)f;ye6O^UNJ +Kh6jBUaL#Bh0$!{&HVi31K9NDld8)T}6z>_BbXyHkZwS18!?D5tlN>~A9?+`wr9_K6tdb4y%)VyEtSG +v{frliH0e2tH5HzjR^BY~QH1AZv3_Iwfp8ouVBqWpFQ=*=cuyN3GI$oy8kn3ZB*wG!;^n!X8bKGu&?t +T@DRHrws)i@@^z`Uj=i=gAShs}vBd3K%|>utgW=_P+a0GSZZ{TEIp876HnH=EUF4qx&T_N912jI1+#NU%^vRR03q7y+>ocKsU|xg3E1!xY>I!3_-S +NTUS}sky274$p3yb{E$eAcG51od5CRsX2|)?2WLjbp=P`xCEM+aYBwp=PbSPa(XMOGHdKhoma_w4byH +_tP@>oW$jX-LwdPoZ472jFI>zL>5KT;O>ZV{-R!$UMUDQchR1M|uEZLMrvd#oeH|%i8s@(8jsGp};M3 +XhG0H&M@!*Y3dcXJn$#r?&_bqy!( +CNlzioo|0_S6c5zpCL!ZQ`4~_j^hDHjQ)~;GM_LTc3lMV&|0R*jFIkETjwk5=eZ>S2%*bb|SRT-q324 +tYMb^-qJQmHKATpX-AoW61(W`AG*YEM;b@Fn$Zg-aI<1-5hs1ziCd|Ol?rUi%K$Z${)UTsOmDo +WUvOsB1&Jcdtg1Z1C11^5BUI3+clhUPKJ$V0)K7D5sQ&Hu!$#Z3^93W2#LxDEW&HbUXXAWG0TP +(>u<2A=ZALQvSLEXjf8V5&`~;$WZEHLXa)Brl#Z~8K7m>mQB+6nEX=gD#mHb>HpdSJ|E!7;K^UO +M!yy4g7eNN@$W4L0a^Zn!lz6I;jb&{Z7+~4r&Hx5lgS<~hLUmt3Hix|6SHqHQ=8)VR9$T@2r`ivDh782R6D6kE(1bHwuTO?9?Xyf3ei& +tO`-N2(8&~QDCG~IG?`zW^DA?V)OhY~@P>S%P^%r_>ejB&E$MWFcw)A~&*l4-d4sK~-@H#S+ +q!Ab+QDQA3rZb|T?h5n-CFDc>@FNCuuLSz;0-|78W38>&Z|hi2a>a)~477pG0jD^+s$%Ia`W>_{V-eoHFnWYO^4cL+o21d$h^J(&B&UuQl?(hT`#d+UG*nLL8j~j(=MIkeWgd|H)IEV7VD-303L +@yC>!16esOu%oh|9^_Gp}1G{fiXo8LZO_bgVmbDC*!_2sf>>F(OIISKNqTTWZ~N9S4_l-ZCO2`q?5N7 +L5Ba@ASG+$OJdU6?`x)>e?t1bQi_?;x)c*@DR;)nTP2?3-0bPtp+ywjGJ;sX~c>zHKBBBL+0#kO~cXV +s;Tm%O2^Ki|R?$dyat?;xt^n*YqKVT9>p6ZF59qJ|`b$z9_QEoLhxw&}4R@I;h>`T}Zz{$V0Bj&Q&4; +CW4v*kbtVOhNS1#_(9mW&DV;oxSSqWT6sbe}7wgIiGQj-3l`6+ktM716ngwM +JVDy1)?GaHJycP4eP{La>E%i)=_2asM*zV39Ylxlm5;s^$JwNmwuC$x`E)NtVmqQS4Av4q~80+KKgMU +h^*gc|0IngOcmXcN}`S-Ioqp+2873f_>WDnGh@6b}RFJ*t0+0<~tZ#a)m>Oek|y+)mJ&HdwQ1wkMuZ% +Q0$IaOAyvx4J{i!;dJP)}|t?>jG5sM>R;Q^2TZVHmQiCF9U9rO?)a65J@#!}f+;H7Y}~hpw-+=7EwOF +D$rTj%w%@n_-+KWT;WisX#?k^>pY2Yq;9g<4^;V9=3f&EiZxlH| +?dRd4=c1CL@VZdXrpCmX9qJO=RQL&@I>P~>bbyc5(FwqR(z2#WrTTM3zk7pOuNUuIUC!RM7@4`;y;OW`i*??^H&V|t+UB% +s-+A!(>i_TdX&L6oQ?dg`u4B$E+8?|T_p=DZ6{dFRHz9IiXdu`CMwrvSL7RSM3KZ7$iOo;5nz{DtgP^ +1jr5}So_NO{U*kQR=j=+eA#_s?w1s>ciNE6ncQIo-|3ZAmjQ2B-2Rd$Y&apxD?$kvDu#bT+$O={NUk% +GKqO!4&9RW|g*pxSH9nU?wFxrNZejfq9ahvbsy|Hs*nPffnF31jUoSYy4um<)z_T4TPz8aNjFTbDj0y +SEOxfzb{0r{|``00|XQR000O8MnywZT3!3Cp$Gr~OVaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZ +MWny(_E^v9B8C`GOHu8Oc1*;;c1Z;%lbhLLbSm}daRZ6x*_NHe_bK(#F!kINIh +=m%4r_8L3bQ8HLc{Mrdn07WnpL>57ky42c~?s12t*rs!Icq}2-KeTT=8S5o)upi%9B5GrGb2acM>q|7 +Sx}vMhXFr(n>U(QVS}2ipoMZqpL(`xB|ZOq8ZsK+EQ9^^clc>$KcvRwk_+*fOX+M&!J32147Hba%z~W +xuN~R?9cL*Ys1W-;lgsV&&}P%#nsKtNfg;tq8^l$bz(2tJcZSA!%AjYKtQ&5_b8O?THcvcD1#A=&b`w +GJkgZ^4!W+-qqIU7@jYmq(TYfqE3ysVoCCzQ-AgI$SPKTtR;yLXE28)Ei9VtWr+Ba-+Nd?L8yob|jJ* +9oKFf}8Rs?<=@?Op`ZyL*D3QO%T%~&FDhRP~frQD85x&`aOC8p3lKINoK+3yH*5{?ifDD6N~XA%s +x_Nnz{S%ClWb9co5(O{UAu8I5XS_6gA%rZCUTc!05fV`hs5%?t%!eXTZW1Qb>-g{C`q(>BvObErr6{( +m1%XHA(!1z+2*D8Av7;9XJ~$ls)g##hn=jYc#9kIivyI^FmYybh<`#T;~z=$41LFQM{Fp +kRrMR0JDOVUhztNBT^APRIq|TN<~*RLy1%{ltF(wn9e+CIrNMpWVNEAQg~ +D2rwO~a!`F~serykMUw3{!2{eHX+Ah@{7h~Y>onlE0AeIbTAO|oG*pnf1cN#L6gPu%8>!>SaRN6WD>F +VU2N_<0>3u^)-APEc&OI>p+)Wf?HLR^oqqU7I>oikU*m%a>jtwGGu#W6F8Ty{9f@ypIWPi(+mH-Eu(c +td6lP0(g%XBTWqGEqn-K +bv!r%qS(!N|d^kMQK_kaiMySkYB(Abt8AI0lTkVeReDU$eZoEEVdx%pBbalh}b&jB#Z3i7L{gVsA~0%{!1x9UK^!7IpaBV}-tlJADDYXqnOnp%3-j-f@rbmj9`DzzzvuU-RY80A%~{47T +kqSk(YV6-TuX3j`X&MD%rYLbzNQ-s-rbSzc+&wPv-Ay<|KZbryNxD+6I>NR(twYi`yh3+e3Ci +cQkHj_trP!Fg?|8$V5wh9Wks6k|o^;uOw6m@_og-)Dr|kk@Ni6#Z +y1DrC^QY_IFK#z8AqQxWw9!-D-lJcgQVqD-^GlZGSOJ+iX6cM_77g8Y`$pTAZswSC1+3=+%{$3OY<{o +ZbFg5*M(h-Wq&7xx;#0v1=Lhwj>BwHy_PsuZ%)~OR)~O#pHh$t;hz20E5v{-!`TpI???s~tR_3F5B@o +R54HR$&VRNm$KMS4CrGRdQ9cKX~d@CSuR*!%#}0>;bp%jnJxu!7sr1vv8Akv{>QsdRdMU}@P&X +rq25?`>`$>5vbT#U|GA$nAk!ZlTf+e0FAaRqOlBi2JZ|Nkj9qR6arb!dE|XPpk%jh&kWNKW~~NIk9X4 +MCOI{0>^jGah-lo)t^C-}Z6BOOP%gGm}HF^6ss1Y(Z9uVjk^M^&g4W=3?ZO2u1Rv2e +AH)t{H8W?I%+z7szPu(`=Kmk6RU_Xd9fp*k8Dr)g7KdcEwMLHVC_0l2ctSnOi4!wV#;0Q8rzZ~R*>6? +?}vy3W`cVq`kF$5`$PD(+{QP;@g6qJZg8&DjMbWeNE?Vcvofz=wwK0}dt%1ADyb-w{K3(~OZkqt&VLt1Q<2_G1cHYn2I8VVnvEQp +mbT8RdP0q}y`;wT5x55}T~0x2tZRbaOT4_Xi^_N)VsL1useawrO(Pe75GN(U~t +T;c@@}P)h>@6aWAK2mnS!LsZ5{7FeGJ002%C001HY003}la4%nJZggdGZeeUMV{dJ3VQyq|FJy0bZft +L1WG--drC4om+cpsX?q5N8C?*58wtW}|1XVB~-GBkbP%K@)1OZD+XNwI@swCx9{q;LiltlU^tvv&YEZ +z(6p5wjHeAg&#iBQ`um)jZdUzM3{wAvBX*oJ8XB&>g6qJ==SU4s$>O=oK*&&g`|OiQ)fFh5xZh@- +SHmyCc&BCs6@`J|r`2GfMDXr4oY~~`4wiZL^b2Rs@U&|ObN?I!NP|AJEyC#RyqS68ioEOI{Y5etDP?Pin5^Inm<4H#J5v#A#57Ry4F_%VApGI(o-|s0LQhDm#k +l@fl}wD3D!9twfI(^0zf%^7QLQe4FkRMs@7O#aVo8`VikP->z!_2nXPjvs?s;S&dd3BqIfkX?W$pIg^ +9sBwCJ8Xpk!RKstAZ;XVaTckV2t-%E9u=t@*2jSpvp%${g>7th#0H^UqW8tMqBa_(&dr7J_*__c?c0$ +d5l*hf1c-OG_7=^tatDlMX&dzi6eFU60b<2=MMUd>>+4Q?N1}~2v-Fg!m5e}{>*^bEXeAX{H-M11f7J +qWmj_?pUEeIY^p{CDYxdf=Y_+O3_Bc2K1G}Mwe +IYcV!%D%}fm!gX&JM24m=&>1zVga#2xklwh8Ep@!CA*MR2NUw*q{@9Ty67Mm6f?azeP?X-Mb&B)}}(P@l9rqN5W0Z_^Eb +UPjg}E)hHB?C;5B7ve#5D?Kzz65P27L+ld!{ubZd;QD|S{?YdbjK$65z`}*!gQ9YxNAmMEcamuSav%J>US11L-gvA)Q&*FB= +4?%a3dxEOKFgcszNS${NZiJmSX9sR#itef|aV;uwcGEl_Pbmu9E9rl?K>?HR@>{>C63H}GM0XFX&V4W +tt$CP{&!$M=RwXpq^s)2D}hLZuC9Nqb_N6hT7~o`>1sZ7aevB_@^>$y>^Jx^NaR*VU8R7vD&Ni{Neuc +&)+57n_~ApCmzT;lq_RK4v|mhd9MCO>FW>Fqi`f3p4DyzB6s>ijW6j^FQ8u*PKs( +>_TsQ&eJ;O_{AnTn-5Ab-(3|97H1TGI>GIz$8q_5H8Dhd^St^qrR&x|-t$9rSc(E7qZ!s+k5pRvOoZl +2sz^1bhl+2SSzb>pORgTs@-du2t}9pUESIyHQlaZTF`xE~T6qpJ*#`G|LjJ*wUV6=yp?7yX0hIC_jTAAdLdjNpe-8h+mnP7ipz#CU~(hGfMBpvZ5)Bxs5$PRz18KSAPe3e&g+gT-FvWCq_%m2^fx)G_5b~Wisw4M +fHXo8esIJ05f%O*Ea|)l_{?#jF6J`nB8Xx@G-XKucKDRHM(_f@n8n_apgDN!X9)65_WDB$C&&#mO +L_G{V()c-CrXH$!P9MC!Pb&QV+`u-czdQl>S?=FGZfgK*{j!*ag|$DWueY0CwyY>pswxx90@l;|-yuJJs_d$7e)Z +F7oi^UX;T=SdQ(X6x;ko=cLH7weRP%9&w}bIQ#dCM5g*MD+ZzJ8Uda&~J+C^g)T;}OHnZ+I8dl5t6Q!R +!DcF=Ig4rl!+qBAO0SCqaEBYGRXkmMx+LgGjf8_>&mF<#VDV`&_w6;t?!&A8FJ>Wmt6{=;_ZfA;Q}L5 +BBcJ9b37A19qHzMCDc{B(1VFWW>1l%v6^KObkH_X9_0NLD2@ +-W73uiLLRXMSct)<>uxtEtQq)T4N2g9OFVL4xOVy#A71vxlin&gYNSk|UvwR|;Fmq#U-ETE2lSmHf_9 +$KTpca=%*2xm5z;XeO1kQS~@1ZqMK={nv7PT@d98+DR~D^C~ZK&_UK09}PCdJRtc!p&ukYk;LG%Xyi1 +v{sT};0|XQR000O8MnywZzsURG;{pHxrv?B39smFUaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZQVRL9MaCv +=IQES^U5PtWs5Qc&cj@WaU3#DZ1ptO*5ed&r&?6a*^mOM#rSH}MPPO=@xX}i4G(%pT&`@Xx2Xgh5jX} +E2q*hgYGN?q4N)zi_w+Nd(RCAxDRHx|ffxaYEm(dJ$|44Ev~!n$ZMbfTk7C{|Pc|bjMmS))cU_MKd*Z;5d}5H+;I6}6!kFSMFqTG9R7h?uxx&20vXk+dt|NlKIF7>;ZxI# +<4+0Tg;hWS2m!#vx6R*)?ibgyGje`Fj)(NEGitK^(7E1CWTtil?5H1vk8~D`=11%_LNhKr@r%9>tz60 +*~UP3?;3K^GJ_#vP0(p&%0oWy6H(KUI%h7elWNAlT2ofAswkh!RpHo(TOv1d@v7Id2Ah4_ +y)Y$7q$rdgR$S#jjsX^02B3=iSY)y~=uk@e4F|D*|xmy++%F9She`=wUMV{%xF`d7gE(r}YY$$3B +#*K`!+UUMZK4nYJ(^)Rls~}TGM$y*e{AbvOHJ<#;KUilTgOE5tvyP%7O1r^tk>qhcoxvCuS}ehpgEL= +(G0UP1xZbE?^rM4iCNZCqqldeL7qW?SEtVmdzi}2=iv9E9R#mIWe +E8b2yD9O=~QQJlSuN)&!|Nf(z%sG(Hb&V>^Jksl7^3W4{lZ!$Z+&wS>i>J5XbqvDwEd;da_6GdTe#pZ ++4Kf|ul-nmoB-Cwg{|He@p5rAxLw8tuE1J4k}#fHZOutPT7gvQN_JA5cpJ1QY-O00;m^MMG4H!<0Pg0 +RRAO1ONaY0001RX>c!JX>N37a&BR4FJo_QZDDR?b1!IRY;Z1cd3964j+-zLz4H|#swyC5QO{9#FVRY^ +)LYtKq6j%*0JmVfW3yRQ_1`-N%tDm)#aM6N^PA_PB;A5G&IqyyvNf6<{1i=xHYz>ldLva8kZ;nuXatN +jSuT}BQliN&jm*x%Vt&zWD^w8(`|`e4a<^=#;|46L6oq=~94uiA`oh^T}N7S3vVZUfgyK5ehfI%^IuF~F|&16S#4Pv4Aq-%$5kt@;qqyO0HDj`TyHsh%;ja^1t5p1Gmd)KuD+xM_u>5Lm#f)RQ>C|t +fud_bHe*@!Ryg98n>}t4befy-A31g6Fy4Md?crI{xl~~pVw6%6Zvk%#oG&7p{&8I@Uo(qLqzTZ=}U+o0%5bsrwg(QgD!ymXEh_q+w*aMwE`M{1jI#)#C +o0jD03zaHIUwcJ4!)=bfGx)Kxj6Lm(>W;96i=xN%E!OuHcSJ~_@$$ZqJ+6;G>}HPKkEsO8;5HCm)GhT +~b=Ponr+k925aef7^RC0J@l5BeA;10+eCW^Y!Bf0aVKqo#Z;15FpRTUHUghZe``Ov2>+3~MD^wPeU{N +1DV=sWBY5*r71<7rTwc@bY@g*_jS52&GUV_v1lMr0w=p#rH^k&c`7hHYj18Z`0Nqcj?B#~;nLA|ymwc +;WmPucC6-+Y?SdX7{(y$sBkcK5T{Tw?A3yjEkO;}sD4nZmChPKq4eoffC^vCURqTQcciMa)oN9@ +SV|jk&U@)B`m*&3!6!))^L@@_511ew7osyUg76)ttxhy#Rkffa;}{}~z;AvGQlFJUp#Hq>1>Yl=auWU +RB)pF~8?r;VX)2deDL8GHp*Qc*1!rU(gpEm8XzIu*5pMyMdP8Qbz#Q!t<8A3gD%~?KNCl}oP(h>}n=|Hu)92&{CI*g)0VnxKMQ8)NDKiO@oL0!$B)nTZeDWNk0ju@>^7@ +>R)GjZi#}P}pQG?y+Eysxj0FpR?pBDgNUWLIA2IX;Oc0mc_(bv=RjHVYaJ|#=2 +`uZ_5-0)84FAdK@|6z9&%94$wVvZ?ighkluJTiXcLXV~m9-*;tls>cZEC?dIKjJL+t^a%i&%OGKVQmK +4r{-?7^5`q3ifRdqAawyELrw6|`-AG#5YT+4NO!hXYf8?%|rk +A{X3y=lWb69g-8V(4{l>;P{I4(Xx~At1G*ZSwm3T$Bcpa$AjqPZ`fVMQtui9YUdemF_#r!b{!IVR+;B +)e*B>(v+WZD~&Q14rI4Ovn{5Mie{j4ar}w1aeh<2a1MX9Ojl)s;<^RK|mFQC8p_)+cz?eb9K$z|^%?t;fl+U-J-{^ +zzfZ8q$S5VAb!ct9`p+8FWF0L*DQwX-{OCU}DF^3&nE?n* +3ek)xyg-($m=GBK!+!|a$mcY1>w?Nj-J1!_7NIsFrc%FLHZ}NVCe&u&((8NKqU3_ZgsAF+o>rO(8`ua +;#?pt!q_D5OC1+Su;$$(zx>!xD(xbIDEA!}SxMb^aP#|e8K2Gwy5Y+frdpJI%3c+ +sow7IEwy3MDJd%yK#WqQAc(tsXWSiw5vTNv@APho}kY`n06?s+`|IO1X+i<&UQNj2yT#{$`+CcZ)n)C +8GJ_$B03p4g+Srb5Fq+!yx(0w-92cEWBbIsdyyKC2VHP*M`AJe?vY_e*pJI6;1K5zNQu4wp%SM788eo +D`8v!+UmRoZk_nu)Zj>sGxe+I52bi#E +M&iWX%9jI#&cvcA5y1PZM86+GFu!c8G^m*IFNx`yVF{6xH4Y(erg0%$@$+%|Q~bNK?tPJ!ZzRUzp*h5 +v2~kW;rpu_OS`)4FT7T|2^(5*k?b7H8HFy@TH`V7GD*z`OBozzc1cmB1A4Qb0CTfR41Qmb^*(RuZcIc +Uslyby+X6as;|t6q4zpE6Qb0O>&N(iz;h&&&smC<;(MiFA)h`&OjaHSFx_Uaw&&MfiEqtQ9^BUbX3x2 +v3b97aY|x5P2ug)lCNktB-<@$;xv;p$1bm*x?DbCv!^4Fo)UOCbZ}T;m(u{#(SVB@CZg{6F}jB!hD8j +N5e}Bn%erAvG%;P(WT{+(fWGc(5?r;{D0b)T2WxoSH5H5GLLv}1{`f~nR=d!u0oQq%385FRWPCi-MH9 +LHD2nJ`)t*W942lJ5=~T`)W9Pf`mn=pNSGQ}VBOuF9TufLekZCQ+#Ke~8z)!$(iR%3K=NHIze*iDAt| +`s)SD;Kv^Jb}-rQluzz&H#IOv^;wH92QlldnMlLo>%FYV{NTgvSS%EtxL`<&4sTQTu;Q8iNPg(=>(tFvBxmaHM>+s#ufW1h_a{b +QsI9_7@nE-Ns^3=G;5r}^<}xjaP-ks4^`6 +Y6vFkkt6SJL1$_@q=^n2-rWb?sb7I+f4&}eANvx?s`WqXLkZ +8Ygo(r=!%x43hT_u;UF+2KPd#^2{o@ZnzJF2joyU#92~dM&aX$C^h1BsBO%P3JebYf}M}pgBO1;9?j~ +qot>j{5#a0YzIO3l6NkDJnqWy1wmk3g{s?5!cdZMH8LS5BnH +E@1+9#ls#78u0nRku>ubq5@-LAZxm*hAb_s31||Z}3-e_k?a5Z-0 +}L>rV2qX_`$3yc&}4syx;Y0wdjZJ$AZ)%wEAkrk&_JffH8KP2@Ae4)7H +GWvJlN)4)wQ0yU;A^!k}Qik3NQA@Rd-x1JI-16s#S!=s@&@Ch{p37d^r%*8~@<1tSv}-wLZoW=7pkr{z+CrB9zQxHUypUo)|Fc$t39*^Tn_}C}bcX +4H%c9(x94Z|d>aGn`tH+U~Dzw6ha%2!cT`LN(70;i&`}ONQ3cY-jg8G_;XA1x<9UJOC3#XAlO4lC%0k ++w5&)xO}8O5saD+tgid0T +5$v`jzDePeI&RjY1fQzlYEcTnK!LF;rCMuy2*XIg`!gbVdt}t6a`{ti(*()rj~Q6>I$X|(~GB6L2wDK +#uWvAi>mG8zF;HRO3g$+q|2+`^ubC7h5}Nw8$8BOlNEwH3Gg_24rYlGdq6Lo9m`PJF%5pK?D+>#+Di^R!w?*`u-GV3czMmHuVhYJqoT__H&mK7|d&LUhM%KbG%@wK+A#zjs{w1%H`robU38!Xn1 +RC{|y*smsfp9nJ!GgY+KZV$I*LABR$5njF+^v*)F{Ib0Di6gt2_2CU$uz*wJMjD||DzrH6XvHttDmKB +PLgsfmA?mgb4uP?~pqiTP-58aq#eJgp|y`R7wpdvocepsxT=$OmKn2qLR9GN9kZBE^2Wr$J2nP6!Nzv +=eM=F)R=epdBDdvW38Z<6)zTi?$UT`YMmuY6EV4y;==k>G8?W5TW6b-v`}LFzBv@fM$0BX2Vgr9>wXP +VL%=Y+TbU8N3&6yO}a{gEkIE#L6`M`&S{?x!Blinbvzk5LlzxLc%Oq`hVoRAhZmcd*&{tD!Bql- +(Vu~W>ZaqZ&0o066D@BuiU5PHCzxSASVyOE#mOW7JoquX$uaC7@*SE0bmiNLFTLSbsx|wr18|}L^s#5 +i;7xq4*N$(H34lB!s8e)ZNxY6?{b)x*#RK5&KI4w7Pvw&cmtAB&COhPhuet7~a=+4ePj`v=NY-3rHB1 +`$^Ru!LNDSAbs)a;8}RbgS*u9cdHh+w30$}!1$D)$N1GoVY}@;S+Z-l!!5$3>MS?{L^jQW#jYGTgBA% +yFA=nw@90@Q=c#JtxJD#*@Li7z +Pu(BSAL{7|>;69Nhmn*Qh3_hG}m5`%C~dTOhBSN)Hs<;jTWi`WrAn@g#Q +wsZf&WB-t`u>`-YrUJBvvz#`w+nPKky^7bfHZ7J(rN2*$h*2WDN{2&>ntqSnNV3$Ke3-KRol&*8A!nO +vI8w#n!Lze{nrMn7x<7OIMtvlG2yOeaw)PPx0cEC8W9C{FD9<%DN5TL-Juv>v}CVnI^T3TOT4O_UT{- +DXgVls3uy&yD-Pzs?{lV=qY^RfoVspQvLz5@Z&cH3lYn86!N)YuPk#jtq8C4DL1QU{+@Dr`r`!sH^0l +nsq|TLPQkSP~QgX?I(Gs&s?5zxFTaxd*Bde|B)BWW=d`PRV-2pkxGPo8c-xf6;}yz~+j=$u1rGvNV*= +)oypHA~k92O*sP{fYL}l5|QG{FgP^MltsxOby3CRs~++eeuhs6g!BuntEz8_a{lOq6LB|NMH3>ONqQR +C%RR48StgJ&Vbv?Dv|BfIcfCd=WdkxqqfBE +sRo;Iw_(HTn@qo6G;f=cTKy*}W^|;=^>c0%YEiqCv0>KT6Vuax +>6;NPf2EpzJZXGcgLU2B +6_>`(y58`4C@?o{D$#Uz2z?A|^U%X@-;DXFp4?!O{XpdAN57%Av5`1I35 +#+I_Y{=NaxwJV^Z5zwqeV+&|eFJ4l<1us|ZfZ;C(g-CQ44PO`Q|6o90OBh<3d#1mtH8{C9T*F2FSAc0 +2#imIO=ps=viXs+6lu{7kkkTd4MP1!OS1r{u0zy;>b79AzdaE7pH03ya4Vl+P)0C^RC#&2I{pWQ(cl_ +>i%w1|`wc&1POhUeI3LIm+7l5C60M=i-0mzF-=w+yK~LP{rWewo)pBE^rk2hy9YDYB}Sv7%l#`R`3^e +K_10S%Rh$Ip$=w4M@lss8hFnKqpv7M@J0bi!RSWcHsE|+iQO8S8jws46R6iQ(OP$g6wXz5cx0;00zM= +#Q^yNOd+l4P27z=owFw{j==0yN855r6s5IDY2Z}787`Dw2O^Bl+@o=}ePYwy5tUM=>0$-V6!AczpSe5 +V1kH@9{+RjxI328{!}L~``|h+Sun@=d&aV6(Mx;_%j-2-63=tN{DEk9X{S^P0{t8?*V8sN~a`mMF^c+ +hx_CYC2H!M6bkbMIHPu(=iR0sb~>Eta97C6?|pWlw{tg3mhta>W?l +^7@A^|j1iDD0IDq^!@v%=%^PwADizlV7F^jMrF2ltf&>_kC*eoeZuH6K$HIinC3Fe9P-o7=;VmxC$b>cfFp$Imy$C`kjbPw&8I#t_Ve^3|qpChOXI10IY#Yp +Txy-!T%7Bc>pLcqTYqTyVoF?%Hq90q}r%hk?%jR~u=mq>>UBQy+m7%LWRCyL>Ci#AZ}net6r+Rd4HzMh^Qm2P!_Sn?44&6*=KIgT=j0pSF_q+rT*= +=`q}{vGhOJwv7`&P1w04Z#)ZtiN8XKj*pzS29`P&s)edIIA!a$-HOwblWWi%-2%ffC)?dNJAuY0)Kr{ +Q{MI{&6T%FIT>DMi?`Fzf(=SqWV*7M>JCyH4l94-Rwd%4g!P_Z|Hvm2$te*ycOweEQX0{bEN=pzVJhy>fibL +WZ$JV9Gv*ms@X6nIvw7(EuLPN%5jhpQS>mN=9JK~KM9gf)~v%CQUL@Q3ez_2tPR;8#@6Jx~6g0vim;l#=ExT>067iJ!oXUDqm3tN^Byy5% +@93cDQJFh=KNDD&id)>h(uV-&HcMXGU9T>`AI1%>MfD@Q-2&wkCJ-_b+WCwfzp&3bI;T^1f_=79R$r! +LiAu|5$L(d!$`H3FOv?3f|!eg+0$7@;7-@1U`JDB?{=9UaB +q~v}XJBHXm!ZKkw@93j?Mcvn`{~8gdxY0{u&$880e%-(RsPgJs_T6dHl=;YNBnbF(9(&Ge-9js+V766 +bLQ|Bps>o-40O*fZ>LT$WKVJnTQYgNBuDmE$33@EPLh_evKLV8@Al5#D$L34@(7Or{fv5;TnKgwJQl_ +ZZvT_g*J-LSxI+&{%J>d5nD_*&!5tGKh#Qw}o0L`ioF)c<1^{|4JpcScxF|7=LiP<+%F{pwsIgHAQM3wuy;*Owd6&jmDO +ZVFqY>1-hD)}PmvqQVeb~cJ76@wO(!W&8Pu5uuNE9qaWmu@&6WjU|c*-u6bcKVgoI$%3Q?4z)RttQ@n +oQkwf<>XUnYxPWIJ^VL>=tWNuwn$5AYV)H@NCzhz0NesKyOT8I=hV(lTZSA$rs&q96_g7{N+Wy?Yk9Ct6{m +dmZB<3sZB9}4&(+*8y@=yXq2XA-!#$Swm_Wu)643uN9G_6)T@Db9NcI)w=r2~?ke^X9qvT_bRn5DY+C9>n;S?d-8W3L!f_v*+C_kq5ANvSU*P-i* +lIJ&rermtmEckTAN7KjM1*h8LQn)+M!(yT@+bQK1fm4&haDyo#glf4|cQN>MEcEr1N7*V8-8)!_ZYZ_ +GTxc(~*{p|{#Rd1pFGMddke=(KPI6|Uw7;%(hee^7v$b6sn*X_wvhP(!CRM9Pieb!tZ*E6>tyGI$UQq +01 +BSQi6is~XxJ!n~cpo@mlGq#7&N_WcSrK(dh0gd`a0C=`c4A!E5*Hvm}@t$wEw^B=1h3Pu6saKYDs%&> +U@nZXtRK-IQ1cZl?jq>7tx<;LHNIFhN8ne=qC}#}+#LAA{dk&^t@A17c!{wjq^Z=ePAOAu!MNz`BN)#3r_55p&M +UxfOwg-6brTfsD2cwA<`KKt7IZ1LS$eh9A$Q`xjBb45{SL*lqGQr8{&M!@iv4BIFo->`h +0f+yG2|8cNqzAuc3)4}Qv<vb!g4ib)d-V +KOoPgJ_F8jTamu>qg$w=q-@o&*!V +m~SB6J@lD6WMiE0(3LnP4T@6aWAK2mnS!LsV!C006x& +0015U003}la4%nJZggdGZeeUMV{dJ3VQyq|FKlUZbS`jtRw+eq^6uV`=(gj~qP%waDEn8SEIS!07 +qu*uG1VHiwHY)KtcB&VD7V+Q&6t?C!M$)@bY$zE0mOKw(G*ZU>$L)VI)e3ET*!u996-R*d@JK2i%K-# +YFsE~}9hriK!U{XKpA3A`uPd@zT-9>r+_lxs?T>kocMJ{_LXy1wzdBbJDB5%8%w+*dVN&?JG!}{$Voo*yq5N!4Q<+nZ)nZ`U}ZxO%tz%7Tno44o0>a>L)EIwUwka*}V_x@H^D +r$u|io11fcxQwTj$jUAL>yY2+(_hqK4Eex%TG5_bgrBKoe*-%Tz8;YK71^=AWX&xXZF68vA0+}hsbwx +1G6_g!C)jpWl0AM0r%a$nL=Dui{;m}_Kt@V{b|UcZy*`N{DUSiA9Xi@u4B1yTUzgp@E_#nfIdHkL2t8 +d7HSNJe?*#8z*$#a-fT!|p= +=mA-*~gDLpm4CGgd0WwK;TA4>_BfI4v-rG+~ckI8KZ+7hRq&?WVB%-_XQYPsg=x-0F+wJqPm*EZh6fh +5wSC{uh5jrccKMnlB_~}NeY*8t|HpKJ~=tTln2pK*xZ+c$ZynHTB;mVmKlI)3t>JpL7UFfgfR_Dh3^P +UcmqiSBDEqW8s!SkHuX@Uep$uA(Q0N*Vq#MgDj2B&AMkjCh6FD-1zN0;yhoc$a3^@!ipna~DU0B3Zl`{EZ`OBO!bv$`u1rF%==sotZKeKGsPoc*EeTfE`>u +y3h<8}_F>0Q=Vaz7PABIsxy(bR_d<@n6sRuUqH@zBTjVz3QgRtqwvcc>O?YjHiANwPjBw+12fu)^IH* +ofWBC(zLw_U6RZxY3TalbeSs7mlJ5J9<1j70}{f<;T9VVz;brJM5K+sc$kTKR?(zRxw|Jc7n91S!~}VR5%q(4*i +I`e7SnItvJyBn1-U>q-+w!waQDNcO4FmoIKv_TMhwJq~mjvYz1R~F#LoQNs`4}O*f9JuP_d$uP5}-Ho +G%o$dS}AkgbR&yMj`wCY|JYnu6#)HI?-%sun5@D3l8nyzJ@XNM#yq2QaTxtb_Rox)}~n+HIt}$e$@6% +qZx>Ppb`E42`Iey2WAT0vRpng}%$H6j}(~PHX!QcGP1u?VzFQ1jmPc3-JlFkgE4)i;zdD)iAP`;~-yzGkm^Lm!* +bhCrx4AJ@x+pyu%;@QQzK`545>ql`c`pjBfpjJ|1g@uc}}iFQSup7)A4&R*~oM7ipTR=NQl7ESiu6>j +%+_({U(59@7=h9!!$a&wW=9m(DJr_3WXf=bxJ~{ +-%lR2E*D}=!Ic#bfwaAN>ZpUiR5UIqRMAB~E;_Oll%&ToOpVUXGZbtALoLiW)0qIq$-foTmhFM6&=X3 +J~PF_u+KKw)FFX$1r;5Xs3~=oG~rMuyAd9ue@am+Ec~s6F3u3=l~SYpPveL)3$giEIy8(FLAa-|{K7L +tP;y%@=NF21EvbVR_8;eHDc6?>fIi7sRQ;(s7YA557q5c$~W1??os(kE%V=@eC9rZ6S{`t)O*-!G$sy&)V-gz+Bc(iCmy%c +d^mei+y$;pl%<=!CmZEr)UV`}g-nxNYRo<`%jFUenb!b}b05r!Bks@T&Hp@j0fOYshRpKkX`Z+Sqa31 +!@h0lJHcD*lDaZJFF4BJ~qs-dg-#$QRUR6~IUlyC(}RWIz3g0mY2yy&k5lvm)&9x`SlalsAw^bU${5V +ezB?|bgl!|=BBPv|g|(D?2t1-$}}a;I3ORW(Til(oZWuWvizfZxO|>^GxV(RSl{bP}Z#6%%IqF{6QNx +Uf*!5hpah9#e_{donv2B5p|XlCjl)%I(wl5qez-ARki({NebZ;n`U#flWpW4&CQ6>sF6v=+!3Rv(KQIXQ0s`HB#>p +;8IODYPjMu;ivX8C`%=r(b2CJF%`UbirLqIe-m`a)*71VGCOdZ%p?bd=^loY(tU^n|t>Rk0Mn0e^;#;~YFu!Rot@@Xp{a&l3?}Wr`cie1ovRb+n)+)qOmp_w-;5V+Ubs}{x5$bL*9j!ub);VAxZwJ +vwN6!s`M(+%`e{e0cvS-ZS1tCa@@bcMYMTH@7>N$neg5i(Bx#eH9(qONjn_*(&S?DTMT0Jm0k8ennNc +9-;DTQgMMjNqr%>=Obe#aIY5naz^RosNCjI6`j>(c{9zz^0Q4~EBrmPrU#gjKWn)c!QH&5CjY$iH@rh +l{I9oy{0cMZ|FX@7prs~Kh-s@oRwrqbx(n{~>gluHl5`qtGJFsx)x8MaaIu@+7?YeaZTnHpde3!UfS7 +&Tas6C6A-Jts^SfywK1n}mG?L584W1hW&y7rXJr4kpI>ukYCmwOZJY-jtO1pO#En-ud9#5hBue$to*b +$*2W{AFrIX08$!^4FvYn-*=W2#VAHh~ti8EW};kTpu{QBIqQX1i~`5^?px=@WI#%ExNfuTm@6aWAK2mnS!LsVC;^Dklt002Q2001BW003}la4%nJZggd +GZeeUMV{dJ3VQyq|FLPyKa${&NaCxm*TW{Mo6n^)wAXF5PR$J(>?Zul5bZNQ;%MEq1b#M)pwP~BHOsO +Q5#0&i2cMdO-C@JmB6u_3rbLV$14BwZ9)FdyqTQ0UEZhxv>rFmZeIw=3D*@M29wDi9p_PH!q=_=<;=+ +QoUJr3gd&dWO0Jn?>oeu;UhoGlp5j)T>PmrtHLIg{d6iwfzJVCbv$t2bmv6>oetU9qI-d^-VGk=-2Elh~Po*s65XYW +rx~7_X`YqGhnr>x_vzE(@`*54Xb#X67p8V$B{r`}N`aY=~AceP77WsYOgp&CB;@;YL!SaA}Aa!Kh +M)QO}B6h0b90X_h@#wW@o`HOq=hmz5rk_$GwbbVT480^p%^$TbwJoGL|(wVOij+4^^`^YMmr-h~*F!jrqipj&P6hzo~R0`O@P+YJcJuhXkC5ytMaOqh*0pE&3vJBFs +;u14Z+yVQIte6!D&?9uc&K!TNSiVWfJ%js%w=v3M;#5INSbi$)?XJumG+F6El)3a!32h-z +@%2{;#?!3ojvSfx4OiMsbR>?dh*|EHwMZZEBA;3?H4TM|opdMY@fRi(mJFyc*p1YT%r79VPUYpV-A?x +5%JGZl~EUGeoISvDpG%=NxFtHpH7ul(+x?@7+wv9g%ZAhdh*pMuu(3UQ6Pf`w^wJS^(*f3sM_Sg{DZZtw1srI>Pc;i}1D~wPh_8h82cF)&(2Rw+aw +ztsnpcJp6SfpH0tq*Y$I^L6DJ0|97R_`hPFN>4K%Vndvln__|zk)MXF`6~*$eM*eleSs4FP&3hx{{*q +3Z3O{`)DBH;%QM~qS``14<`l|W*aLV(u}c^Etf5vAeb=;ARvz0HitHXO;z$o+HN*(E3OZ=IWONFfUVy +#;#%$4i%$X&0aq}mq;n>r?q18{;m~HT)g&#=hcMO-WGL3-@iD@38BK`;X5^}-Upc~3AzNs-J-TDlTa* +7VnV4WqJ2go8GW-7G{N445NiHZ^K+JPUu>}qcQ}T#k$K?m{2nPc>c#Kj^1ggWTh!0ZEjH=Xpp1|*MkI +IT^)6LCFNSS=ACOG>WI%r!ATR0R7n0UmBxm3sjUP%|gxCPA)5!=aalL~{FY`_|Yy*gUfJ6HA%$UTK(R__@xP5)iqHjt ++C=UdSy2JqmZgFDUhkAN0qA)QxM@w`u?;Y`euy8aAYnx@y?=&_3k&RJcY^V|9_I~#pSB%=`x&(gAhr@ +zfc*qid;8PR?4Y_u)^9G51HE|c0o11+e)Zwo%0%}zK;sVxh!*aB8Im2F%*_@1nvIJ_+A^hO3Ad5ht+d +J+KF=@`8Zp4l=|jM_JIrWDJ_ZbyIbE?j=y;(}E5J}7hi{so&%6+SuZf?wt`q7ZSL)-%Vr}284=yhetF +?yo&NPWQNnEPhPPYb{%p`f9Q!}V=u_@wuIEIv`8Z0(HI%A%l44=4;I25CNAc76sN;p=mPnDSjQHiC3A +Q?gkHR3LuBu&OPmx(S29dFu-vNO3C!1fIzj?OOUH?PmnPv1<*b46my1an;=E-amWczr|cSEV`YgPX25 +BQ52Crk=Jz3VfpT*Egs0n<>7dcOY&eSHcw0@6Oi#SiTWApA8Y#Xe&6%qSoS; +&9f>?1LlpaY&4_C?onEE2#+eJ+s>rLoutVIm{$Irc#4X*xX^F#e?;0|~i2e}yeUc +dok9xIM5T8z;>d`ENl~BeD@?-ZF^?$ZKydg&o$} +Mt8zY2fF=XPK0+$jc&6+RknNl@$jiFMc}1IIccKXq$bAmkPK{$)Q`o)P>{pXoccJl27Lp=85#t+_uoT +DlA;9djjf|20hUBlfL0u%UnWP1NJ)gNWcTBl!D{#C`u>kROsH{iom}4pg^#u3@TAXcIl+!jZ&}cI}w7 +&JkD}8pkw!?5RB-A+V25;j!WG-5G*{gVIB1zu769qU2fJ4dPaCoa0Z0`NUDXJDey#Id?HR@P8*$W8h` +lZt_?GJnfjklr{_cNizBmP)h>@6aWAK2mnS!LsSRLE2cvS0083_0015U003}la4%nJZggdGZeeUMV{d +J3VQyq|FLP*bcP?;wjaXZ6+_n;a-(NupC?Ww`qR)%70eW2fG-!?!*lEwh!VqYQyJn-6REn~*E&AU(!# +lOw?FoX|8qSS#`DPe#9D1op+aC_1JFNDyKaze>1Ct{s!W{m}+KG?mOq~Ycb0;4ZmrV7tBp=17N^;MRy +!kQ>EicKZL5aR&?aBxaVxZM4@0woHfz@9b+M|;a?dY`Ctm`{bvsV1Us}5AfqM`#^ppMq9pwDdNRox$t +tZSU~jrqJJGAgE~5ri7<4cX!$rJL&d0VwsgX3RJ+Yag>EbG^GsA%#`cc2 +BTtWBcspz}og@X(-cM~yS|}~j@1wkEs~BU#S^eVDL?biBD!sRET}eR&m&#teI>>$+^6$$uG)0K2oH`x +NlGxa8Y}=QF$pd_0gYTg5pLD#TrbD>Jo^-u3e909}LDM%TJ1FNo)BUy~pIZ)XM4%vEMZ*bmw<1{MSey +8Bq*;+DlUz-*Gd=4MexJBJL5ZO45C_Re2>J;0kuzDpRIa)!Y=>M66?69o374v@Xg)KoiKWg@rBkxCVW +Rr0B(GdP_apaY`yH~h`RB`6qJtyX>D6cB{Ri|tAgtAhvDy$wjQ#?%BiIjwwy$;b2a0X3IHfVYsh&^sB +Ug?xXmP+;omtdQi@gB)T+cWGPRUc?ed&*UfU5-xo777$=ie1a#EEVtY7X@s2!OcqR1H0(@XV^t(8kZB +oj-ko5M%9ME|PiKyLq>ZbMlnJ?td7xvxKHn3}>631EHUrXn2g2e8!?nh&rKVoXpZE5qc5lT?!7Ae3+q +y%P?VD4GbZeQXP5@EbqLy!8)qGsdtF*2ttW>N}3nq1g`^o2Q?TZ{=#Z^@r%hWc +q=nG!~#20Hxh%j0H_n@T7H)y2xU)*)Y&ihKi_})-+h*_$653tp|5(LV^-nZ}P4d+?S0>%gT8fa_I}iWHtl@fMs(Q3@99bv0V^*@{Igj%?Cw(=BHa +J0nic+b>At`xuwQL-L|YR$Q(%2*CKpeyIWC`ul%%yOwzW0$NCQ7?7mlb*gFeBpIO>Hg^Ot*tT3+b0yf4l%P +@8*Dw5KLvWI5{O%D8-JA +N)x9-~a}3IQ8CzJxlli~7u!NO%F?0+1hCKIu>lZ0p#vMtIKm0Xa+{`Y9Yf$`XzP7)aIh}4p*7Hi=L$5 +m;t^C9hWwhW-N4=HhiPj<>#&c!*E$n*%UW(*B`91}Y_&*hLc+#%32sP5fd%bz-HA6Ru9;Fv}e|3v~V0 +Ub1Bm)mt;S>her^zU2;*vKfodpOS>fV;Gbx-4 +bTo(b6Wg^c(Z;!UDbf#T12%0<>Wf$No +@SiIu#+x8<&68WixV3$DF1VsG(0h?QQvW|Uviiw&B_!h;H)_U +bSetJ$r3PZrJ%GjNNn_jc8bQMp-D$8lHdQ&K_&6sLUXpbE%}rc_seFO!6A%szO@Sl2*VHKRLEfXD(LyUU)+nucMS|eF@i9_pDP5bpdICEW$b_o7LywMEY(HAte{-uzB9Ii-&&1O5c4~74 +_Y%r7hz9uI5by#QW6Z>wqeb65I7u&g(s1pygh&l`5ECEPlOmq1vOe;aLZk+1yTiSsvv1_3#F*Y(FG}h +(HrZ-ddRhCEL=2i8r1V}p06vx6nMr;HHQNmLG)i*L&;FJ22=swP_2*fs5&T~;9Z~bdti*cBD2%*Zq8# +LxmOq+6<7i3=|I~wng@6zz;ov#jU1 +M;2((MyRyKWnTCTgoow-gUm+Xzs39BYu#_Xe<@pOn0_z|9vZl?G~orO>r+I +H1beu`aMe&nXtoQ(ETad!J^cgWC2rCVrbN)80;mrK#bGn)K+JeLo!&Y7s|za})8ATJw{qGBwaS +lYIxHv*oQ*8_aqpW&Kv%8=b{U1vi;h*_2%hU%!pp4hYvn9ZP%w3)tLfN!KSrNJVER308$sG{3M&`_S0 +1;2Qpo{C4psO6Q+Bv-`kokk(^xIfw`C?Gq(IFAF1BnH96$tYL1()1(P=bWikAp2E|m>!+?+=)=vE!v3Rg-H{i#~&)^t5_eIID_( +=CDCXf)2bpu=<9Y}zZ^>>yIYuhcKnl;@8TGR=n0mOn7h$jP9^U?-=><`RbPGh7YbL_ +RGdxy)r^J&lP1iUr$6q7=08mQ<1QY-O00;m^MMG4msJVz22LJ#*7ytkt0001RX>c!JX>N37a&BR4FJo +_QZDDR?b1!#jWo2wGaCxm*ZExE)5dQ98!MP|Z1GdtA7&Zh|Ff?s}0>ug}-S!~}1V%dBTqsf{DW~4A-| +%?-huWsvu_a}DW8}&G +f!w)o0m)&P=fNjqSdy?|Fs3+*LG!+m9xlLH8t+dq|hfAa|K_^N;VA@bp-tmUpuCt0b#B^Wl0{H*_IUt +D!TTRC~c_eG)k*MM_D(2TwlMxxtW5%w+g&&kvZ)4UMZ=j5U8uumkHd8^9cLsKL=_*1vZLS51=A=1Ey3 +5WF${Xu>RC}!*mtFAatjoteIL8Ayq>;`v=OFn(b-4fu^;HDB}x$zr)=tBh`Ki_Gq15-gk`G2esYj5`# +>3y!OO$Emi56gF|OC8=VL$VwmQ5+)r*TD@#EeD9gocHmf+*Iz*L+X5%1OT+Rsona}6$|F?Eek0Df5Te +d^5qY7j%J4FU2)x^eD4K0WoM8!boGbh1g8PeTx%&JAx(+yZD4K+)Llj}7oO$-J$lwE`!s67cGlamjqVIwUW3`KvS4FRlpC(W6U)Uwi-WNS>TFE1|K8io$7k;{^D +CNDr-aB4uC3xAe@xe%(sbghw+>#O2*{)<0}m*d%Ap^N>(E7EE3=ew^l`Mn1R5(s=V7-yI##McYtbUaQ +_G?|e;B=Dd$+p)T%+;c@^TerC%owoc%??*yjwn}cuZ739X_;RlkfxaXTpd#zjLaQX#e535rX4qh)Opn@TXz!j7I<5vdO1yeuKIYu2 +*F@^gV?L3T~aRkqhyiS1dnTybXN&WIQtq=VG<0&V{fI-p3Gcc3rl +6vpwHEXk@&%&eqq~A>34#_f%Qz*`;J9uxZB5-}gW};I +ei1D%x1PW0AM}xW{s;?AlJj7C5|9MXiZ;*>`|HQG1`0pXHY7Eu_}Pec_wKV%so)H1q+2q;jKV*QTZzW +}}nfcv1^G&D?0DPHXPzC4vYD1ML>)z!IB;9e+)xoZx(-I^lYQB?-s54D%bdb!vlOc4oW9dV1%& +2P~?Wy&}V!yM^i@jxOQe@FATAmgL;pb$o@_(+(*iM#?~%0NDU>&A!8gEkc7>dSXN^;|>R#g~`Ee+_VTsSn?p~>lkU2}F~wo8J$?_y9yGKy +tKRe*zm0;i7tY*>X|sH72%tx+9XyQ4zlosFFe4pZony7+>{W-{tgXFYU%a(CL8>pidxP9ONQmx9#?Q{ +Z45m##x|M27UFZa(#~gSIJp`=o~n`xjAFC=M~PCJ(1nLWJbn$j!)ksVc0zr09!lUA{h!eo`8BX94fitGrNE* +}FIQ?YSmq15t&z$o7I%vfcZa9)B0(ux_yCW3u$6IIY)eKMoB4_ +?%l=*~FI1@dbSplJ0Gme7c!JX>N37a&BR4FJx(RbaH88b#!TOZgVeRUukY>bYE +XCaCwzd&1%Ci48Hp*M0Z#VT^^u^!C*V|H0TC91}9NkQO9m&XQ6LDC22N~7)lK}$ny82PpR28aH3O|lM +TpLo2()qn2I)#vpy@dN1*29IKWFG9bJak=!L3pG5EfmC_Y@vCEiES9T3e#@YNT$@QmmFlM5fT`NeL>a +);-Z7#p-fDOF(&jXq)?i{`cC37zxb`=tUoQDc)JU8@y5Jtx!J4EV)jvBS`^^`IecgUCWSAnfTIZGu{m +1H%KnRTOk#5F&RTI+AI%>GZ`zf#8R<;eVX)dB6*_vQ|;LvKid#@&d-~sf5-BGSDHEj5?rrY+NP5g1E7 +j=4!IpWMdq4oJfXOXXC8>;bGXs?w1j6rLJDKLKhzUXokhFr)s|WggE(pK+VKw=%n_$OvN2}T#I1hU%g +|RA5cpJ1QY-O00;m^MMG3*3Xq}v0RRA$1ONad0001RX>c!JX>N37a&BR4FJx(RbaH88b#!TOZgVeUVR +L0JaCwE4-EP}342AFg6hv-j1Bo9XK!>IK0eZ1w7gnwoJjIskK$~SbOaL;E|d>Ed%JR`H^?OO`F%m12HOOtXqsUt8V4@7ack1c4Y1BHDREK +`TCuWjK=(=hfxO_$Z}B>oxvF4(25Io{L-yVHK*enX{kQke*P{S)xH4vY&M$%Of1=;cL7dlmC^PHIv2v +$5MW^4i*u}tN%-qT5H18+iS~(4Z*=f=2m+-EuL;7l-#k)f62bdMbOhAb_N{3>E(b+VvFxnk!*;3?5(qubLv3hTKorqbM@bckbioTl2Z|2`LvfLfA$@Az);W`ZU4H3TPY|F7%=dCBgo=z>zN8rnjB4eZx1fGxD6HmcFl8Jx(VbuMS +%%GBPY{RdD>0|XQR000O8MnywZ32D{LKmh;%r~&{0C;$KeaA|NaUukZ1WpZv|Y%gSKb98cPVs&(BZ*F +rhX>N0LVQg$=WG--dZIMlG!ypia_ddnQt3*mUKo*r+Rh7D_s;YZyFhepb2FhTmzJ0;2^P_|nFf)(uJ! +}dCM2@OspDB5C%CO|bddwWWD2+nELkuaylP(qP^UFm?V{aAM8~Rld`)@o@XX`Po8XwE;>wI}{c%Y01G +p+;A1>owzrs*Auz?+wh&XKvSZtgK|_YIWQw(TdyL_$6bpa)(R;Gb1BbK}>M1xz3TA2N6<4d^E*qY)EU +ML>akBuMl#aw>K9Hl$&x9ZL~iA~e%1r-?lDVTfZUqgIsVDMJ@6aWAK2mnS!LsTiRSk__&004Ux001Na003}la4%nJZggdGZeeUMWN +CABa%p09bZKvHb1!pbX>)WgaCy~OQH$I*5PsiZAsh-`*tpF@(z39HwnerHiK@(@x%NAMqz5mWYoTOQLt~aUl|maO_MH*3(b=AB@VkH5;~QR>=fR343vgRNYqt- +G8*O-1aeDYdDXEsWiKc|xtmVZOKSF+>ugV*E?VkQ@A1-aK!SIqBK6r|_KZO%tR65h$zE!dSJ)l)x(}2 +ovgt^Q$5>H=he2)NDD~b!^+W7!wM=-DKvoy~eUPGR*SF2S~aWwcwcB+VQq)Q~Ow=0I9BuV~&R)NOIXv +UegyIB~JY-Lxzy#$5}TdpjnOdDv~K`Lf0aW`uKO3emJ`WLLHRx=~n9;~4wpmW?nxnY3rqGO$=Ond#}H +GBHxTPFPj+F!wu7bo^XgX!9=Jux^QkUGR~sU +;1k9*fG{9~y!LsQ26Fu3;B9sv(>sN&a^TA+F2EB{!L@aRDwU&L0l?_-oOdRkz9)N~Ap@8a{=}Xz+Dm> +6F3=g%hdS?L>ctC;J@)lac%bRja%3uJ`i*1b53}6u}Z-%oOj8bDw3#S8tKYI)a;2V5yL@_ZKc!tG^c1 +;$oupZ<-5ghK`VCo{io>=_p5{fH4o*PFWMC>7%PzvL;RTy6qx@$=nw2kVsXWw8|Ow3+#Td%$@uxk9b; +&9BcT+wpDn?@Q6O^Ip6fU8QN@jVnA1Hf)v*-i{&@>n|yjNz+mP~vbRqyxlW@&_*(#DXVJ%!&~Q1&S(R +gmJ@>3bf9zr5Hj+8sN?kgEBEo4pbI!*MvZH{LTL#Nbdl8~;7u);u;@6A +c|GLOfXC9NzPx_zwTv#A$oQHNZM}h#(*JnN^p(AM&yF=en=Abq#kyxn}KP4M>h0At{O +N0_yj0ZG@0G$lRMjVA~4wWdVFgC0f+BV|d5Ar&Mr%ysGc$IY`~rqDB#tP}QIjBV +1-Z>K6sqgxq0I-GA%tEC~Jd>UW;&Q|TwD_r2ynWPhGh=fmM4CTFVWe;A&D`7lBYt@*RNY2Pb(gZHOfy +b7{;GjIc{?WR2k1Q2xCJRiBKvhMUa%h?XC0Yw(CDaaz~jCMD_ND2cR(W%~6?!Rb8jhzi4zQj7hD5-tlNqNfTNnD_^?uY1?oC0ghWv};J_gL^;Mr;$?I0BRH>P}b`(0nu%f}`h1A# +R;{iI+66g!u^ku@w8EDaZT0V(&B?w)v5PPOi)*zdROt^{2uVShNg&z9yvpkL0sP9wGmYv#VicmqVc@6aWAK2mnS!LsS4zvuN4@003JA001Na003}la4%nJZggdGZeeUMWNCABa%p09 +bZKvHb1!#jWo2wGaCvo8!H(20488X&tU0w($p?%C5(w=HAp}T!tlY+(iAa-@xVx0E$4R%{mYtc?)bV@ +qdw%JIA7C`2YM#hxAJmB5FT5CcQ4<>*!3?7h3>`Y}Oo!I|rN-evMbU3i*Kv!%I8A?EhM=ZTpJCMvaUspe#UspJa^vwRNsO7)x=EOvB@q$S%bTar2x$8+ +`y&MNxDXV}#tiXDe?htInD3bUJ;fF;FDO5fCyp?5S0e8-HF+1nnt;^9+ti1G*UmI%2@o2pAW5OsjyFg +eFkOc819%yGX0`&V^G`pY^P!93+*IY+u2<4{zLACVyf2;!#K7E5T-MwmnrAF}>IbvH&j~gAcRJtsxLk +!HMFHYkz~FkztCW)^ME_2ePw74)WoF+J}uJ(C38x%2V0)zD7H>c&KGvtMUuy|)>fWAxQKdX3H~rWOAHP)h>@6aWAK2mnS!LsUaQOU +@tw0015U0018V003}la4%nJZggdGZeeUMX>Md?crRaHX>MtBUtcb8c~eqS^2|#~tx(9!D@iR%OfJdH& +r?XwPf6ucQc~gq08mQ<1QY-O00;m^MMG3KbZMx97ytnBPXGWQ0001RX>c!JX>N37a&BR4FKKRMWq2=R +Z)|L3V{~tFE^v9}JZp2~Hj>}!4z-c#%v|l>mF~33tjF`Hn^(oornVdxO_Pwsm?9N|w5^?+`|aB +g00cRi~sp5(qRJ{q6?9AP6RBYbiEKUW#p7Z!0B5wG_=dS7K9TZ6O7GYbqh{=-IoxygsgqLZ( +esM=5`cRn^w1RN*w51ORc8Z?;w4h;)_PuiP`QN@bdsZ3#fC!ZzfMti6V!TCMVOWqwxnK`qUbKSM*H)^=wBBusNH(>U(McgUvTV-a`(#;H8?kQS8G)#U?)~QM{ku=p!d`~j#o6Pj#l(A5xBnK3^|wFQ34{XHXjmr6p +>8PwFfle(_znK(UtN8enu@)F1aD;gQfl>Kv(A#+|$YtF0B6Q))ZKrm>MFV+2D1`KmOdKIPj}Zn +=XXRg*NW8XHIhqGeu4B##}Ms~C~YZ(uw;+dp!XtJDnICV71eQ=;5t37CSUZPqakjX@2^VBDm3M);~(A +889>o*XA-mS;&L)hl@XDOte;NcL0eHWOEEUS!(rfVo-v`ZgyvkLc#7x@sygMHAqY)E35Z2^tv3ph+lU+LA!mQR`y9PmHF#kx3?N1^s>HK35H>1N^y|OeUFJig=SWAVWY +PkfSvK34xk(>@gLGf3j+i<1Tm|V0YhD)wKZDi@zM73LXXoEy0*e@#7Egq6u{b1#D|js)o!y%px;qz)Z +mS4^;`0i(Ww1@~IMK#XTc46Vn%Z@*tc9P>uAQj1YbR2H+hP)h*C&8i7dGjk?X7b;w<(0{Dzw&I?(Zwh +IIod@~O^IQXdvZ$0D0X+dm(Y@p;yiTFd+AZNl8V?L$~hNucsm^X18Dp@RN;FCZm%O*xGAlh2v7iUtX9 +l3Fa4jI*MX*Cv_3&#gB?FPY&k=qeu!2RiWbYVb8_oopMS*o^{G1~2TO=1<+TFU0uGWW0t&K<91dQH4P +=GhO=5E+I*exBe`4+D=7g#ba3S2SXThDM1?L-0#2FlJSP7MY{)z;}7q9FdpxB&bIZGhf8mDAc4}Co6phYBV(2qm69VRW|L(*x9FnjBVlR7=H{ztHhw|Y}e```huRi-gXFW!*Omw80(0>>SU1fU#RLCU!IyDf1J9-tZ9CK!=Fw~*i9_%}(*mRjIF{u#I0Lmft +6RyF_FXIKn+CT}9j8VdK$L&8EEp}e^6(-B7pZ{l#8@ESN(z*6@%rS9r9qoSR~j_`&oH6~PN^ItI12H> +LjerXlsR{K7Kyi=OcdZv6c{_T&C|SURk0IAel2l!9VQ^=oq#U$n#9u(J{`9-IZNdX1v$B?@=RpaZCO- +FhJHE`5URndFaU`RBof^b$@SzeO-hu7D+!h!B8^R6%FN2_Ky35I2r8=x_IMtN7irUi0PF-Lo3c9Q@_Nr7*rSZQ=LD{;0F>?`!j7;^cVg^Th7xDW#-(iw{NFm +Q29;9dh|<#D0^)gsPOQIyH6b`=J%Wz!(TNCuy%U_Ab#*~c{wZM#JVr?o${^Bbwh89KG3hg}% +Ypa_xL=h|8*!VIWGb&9ZqI<9tQQdJqzMH)5LzZ^_t(4rotaedNC7$5Ef)`*&n}_yQep_3Ygm)t^+ynK#lmXXWt5 +t@D}3Z9sm&RTckh)3g0SmwF81T8e2}}|0e4SrH#-54d?+d6r;tLJC|THu?7cwgOUq~TmeOvFkRJOLyP +$rNcPDmD#103+$>=dN5TLpFRfdKO4oBVI!8S7-Z%u +}>g+%YKZ>kzYa5Pw)Z$^f#`Os_lgij{(0T}8GDSX2gHRPlTSmLI6YBY$NW8Ifm{>! +eXb31F;JYc10J6d`OhLqtWr4o)7Cn$^Wk0L}D~=F%8VI6xYn{q9vMO0?Mm70{10=HB7>Zb&wR6)zpbL +!duw{UnLdmkBCf0WLfFNsm6Fn4A5FgmjV~ZPM$TF?akFo*QhBVawc4>i5L+?o?Um72Z>$^q$xM6c(W^ +m;VwF)wEW4I&7CFv$|XnrJ*gA8I;*8D&mVv}Tp$#S~NITSRM&;!qXkQZIL1ycv0zA&VrnHbb)LdlQLZ +TE|j+>!`vq-x1oP5>O;(;6Sd8u$^q3!Zy|dj>#`C{~f#h>GD!E +$;x;I4+@2GTaXPxCWmkjLOr(9NdqPcJP$@mAe)lQ0A^0smvoH=D_Pmvfd`jr0wCxFuB<=_(luccVlj~ +-tE`f&k}NgiCMh7yLmayKr!$K;7ZV^tfz|6|1e_0;T^~73kU8;7bd-Nl`l|=l>9vz^Mr@VZy2e6`l@E +0D8`DSobY`XKV;O#h@#<{8CqkRDZOQdo^qI|v^(E(Lo +a|JMk5AYK%zn&E^$fw)$;N(WnjDPgwBSL?=9Dqvw*4W3;T5UiqGT<58c2-a0wWI`u*dJgfi#CmXhrvo +{6G~#0e+XK*T+)>dHSONHGfDW*qQ0pN&smlJ|5rcqrXIyrv32R62=sXdUnWlBu9`Kod*yJO?&h*6GRC(nKBDIB8Fy`Y3C&lz%f8@S7841{C{xW?914@?1&fg>s9X4~w@ +d|EOAxFxDj=aBl&h-dY59wtW<&X`0DU+W4z>>DNBkqg8gq=oluy4QchkGA9mYGASEDXHIrMtAa7%cPM +caGX6!4iH0af#^rf@hhZKxP8yNc3uK?G1F^u5&&*8IfHKUb1$saUGxlWRYK0#P}<8OxyAvaWE(}3@Fs +$*Rw%KR%A2a*aZ!W#gP?se)FEPTNrPxnZ?IsCQ%rZ$B5c4!dC}Kaj|ZgVX7w|Ir!CEPr*rjv*kIA=Q1 +?-X+a2g!sj=H7^&nX`UICT3(7b_rb<53_~$%T!Wak +wt{;&Jq=5a03Q+ymfB7cl#2tn~Q)?s;nRj7;aSpOi7#cD~JvdHp@5i2G7-)ZnWn}BD0{r6K6{KtDTUn ++gxvx(`*Di?QfE)_0u`^Vx+u)3 +eVWq1vtE^56gC3B`g`bK+0J`Q{gLT?%IK?<53jX4Jz8VuMK?Iyx&xdXp3Sy82O7+xo?Y2%Rp6FE8pcymc#?XE=3-JI}pM6$WR +Rf#~{rO1h_JTJ-kF!3+A2~i)QEXQB8|7~=-eAM`@L@FRH`9;Nk8qmqU*Gk1iCdb|uJ?gR%X}De#Qxmh=QD13;kj +ma5epk{*vDQ8%;X8f@)r_6FWc@s4vU8N(%+9;ZxT~SO8+7K{U4BB1JcBI`;h7_o;=8YE$plQ#H7HA4$ +&dXhz6gg4LcW&z3g^^mPY#<))BPL^6*~+2U@h0G7DWLi86_WlF*EsK1#qfG}{7`nO?q7>yF%@zD|_?u +gEaRMMgBOoc&;`=6IrkcSZ3qOa;841Q-Pjaz86RUO?)HPZJjrs?lHVAXn+y4Y%fg^3-+kQzrs7^kAeq +zy&;^Gwb}fPY(`=}-mx6H*mjQi(?C?Vfq;jyw8~9Rp +y#`W;wf-DNY_k;rm{tgftrJh_>KEhOQ`?x&8NVKHb-J>_vsT6b4q>YMHE0mtaqQf`$~qNkmmH$R-bB1 +4`~%tR&BqR>XeEk3BHPU7D)<|FB$S2cV11S=LBs7eX>xqIr(QXD)*QZzAnz>H7U$F!A>MN1Ni$$)c&z +!>|wYKUh6pevOYyuQZza)i6D@N&VWQ%j9CkhDPemKK^I_;oKu9$X<(#CE6C&|GwlG`XtUW?slulI{+%cAqpqKbw9Beg6pn_)Y>XpZ^_eVXe +wsj==I4(vd1uHC_5mM5#SQca#-&_S<3*S!}quoSeg+T#zL4md@JcAI3Sxdq?!o&*ZL;Xd7I8D;+nQ*{ +OF0p9+%(dFKoDEHIG{q;!EbXSer@sMW+v^m^WTx`5EDiOLYNImJaD*O(K_C7uj?jT#ForueBC*wyJ4v +tChn7^y?W*;E~o!6*1a$}KXf%y$$GIHhxKj_dfgPP%qg_ic*8EAj~*oly*a_MmO+M5uRzKd~BlxWGvg +-|?*=SNxO(1*<_dY|b88S960zR1N3vxm=h+=OS49CK=Jo1I5dG^1HBjCs}7=Z%G(CTZ@?^A>9FT%l+;ox%H{OZbpe1sm)SkX +;6-zo+@?51MFhEF^*qUQr;e!>8_g6$;GQl`Fdy(lt9-;61(~IOd~+I5!?3eWJ8_*ptQXL8<#N?Rl0C5 +x>2#wt`7HYIc}%X9*CFQh^BB2KgQY^|*sKKRV*QZLTO+IUl0ts}NP4>(j>O5=U(AZ^Zon!~2Wfy$!UU +I3>HMO3_ANlq;C)fwL00Y1i@KKqOg)6|%gb{dNy~`qH?W$cz*YVcTF^!q?STay@tvbt{sDVth&d2vSg@O++oQc^I&{xz365^+-P|)-#s) +s-fIp7mD-HId%p=A8RGWEo5x^Di(Zjo3w9*G_10UFxK0eHw4+&qjaF6Nsm0?Wiy>&n;4$1^gU%MPk+M +XzTTo|uvxMxq%=|#QO;F&-=^sKcTR@J`=v+pK@zb?Hh?^fXOsdsjEoF?NJp9d5gk4xB#Lq`u}cb)sIz +?hrh10Z&T7s-j&WS~QW=WZah*w7UY|U?Oq(^-OAN +(jF8!>eo;jC9s_Mnao2#0%X9l0gLChE1P{I7(@|tVF}HZQyTQSGbA`U~W(qYr=FH92NAtD{kSn)>uJ= +-lf(38YVrYX$QRpU^4#Sgc9A>VB*>@&@ER<4GF_8Mvsboa#sp7Y9@GVoc3Rr3#yjep(zpw7&RWoMJuf +g>~_hI+4g1P&eg1r@0O3=J_94tI2{f-<{+KXR$HO)A^5GX0k8ygtw5)2<`l +=cEH-#sWGF)IvL6n(g!l%VwHPjpzF +@rQ!|IVQD0en=!@>_Y|ru*-Pf_afed?U^g$n)vijlA+lwb>y@%Zz7VeLGvK4=FZ8G?7h{dXp%iz~b*BX6*5eE0wy}~a-suC|w#v)lXnD7 +VSz^fb+#?%4YJ*s8q^EDt&;-(1-Z2$G$?EJtY-5?w6^ahtG@_a&gd-ys?f(gDy6xr%I5X^cKVuwoG(v +CJ?V3bHos?MO&0c{)Ht#BWdGhBUU-wEB0F>BrK0tdJ{9b(Kw_AM)hEMU5EBVgeO@krRXG0a84&Y(=$K +5yJt%=B-WH8O%xQj=xA!igA^-rdj{pEA0001RX>c!J +X>N37a&BR4FKKRMWq2=eVPk7yXJubzX>Md?axQRr?LBLg+s2XK_g74)xCGiAzn;=8XZ!m2_9BtJ`u}yTD9OPft%zzos#nOnz+kT~$jZTDd7Zxe{F?p5H +uwG80w3lJBINOeQBMcf`vpDb~$q(_B~erC2uGt*kqtuA2R3B`zd%-!^ZddkGJltrWYag7;M|I_$Xb_N +~kT%=Tt?GZ(6Bt7UiE?7FI{%gy3(xl!`uq}uM9wu9F7vTK@+G7qXww!wowX1e{@mAKWrpVlL8h +~wm`95zFSJ7p2asi5%BY!RGl99;ii@4>gGwUx^lCTs~I);zQR?%*kj*kP4~Fj*ZR$q`YlX$_4AdKo5$ +5g;+*--Pqo_ba1hCFXD8DXPQ)MDR&t|qp#G{_!A>wx^fXGu`; +mD$0$|;=+p;T`P2IK4#xf&4eZ&t(dLw#1{v%D5EZgN(p_a|gBKv}#y}(DKJ&`6bpJLa_wQ`;H#rVlM`s&OlSiB{o9`OCfnQ3J9k)q(a=UVwNo{Q#M#AS`4% ++t>!p;1##4F6*Y1G0eHRfO8Hor +xOvxoj83!kLJ_~&tm-dM+xU?EnpYH>Dtl}ds%^y7rgO=74Hg9>K(`~IQ+zQ)m@2_Futo8p59ODlsirY +Na8&l)bw@^60_V!GkPe#Iqh&(qFLi~P;me$qJWo?YY-K^`-T45mj7tl(`{AL|CeoJ(F0Y3$ea7a4H4# +NGucKrp|N^1u*1?!M718HPJOrY2$Tmj?%JEV1y-rTBjh5zt1{c%Fh(A=m<26-!Y=$jT(c?t#%HdlcI5 +iVd|{qAOnFb`D|xZM3=x_j#C=f3}vuIZ7m +xl?PCU8h-|EFaMp%v@I#1jlcQ?^X9F5z74^9XT%Jnu248J+xb6Yo!Y%5&1QeA(_{k|)besT7IgGu-?o +XnpgONN%bfXs)!05oO8kaJr-y(!&xp#jaZJH)Sh!ZSxOMikxVmUjS31Bm<`br-E^V>^k)^HkZxKm!7EPQp0{Tnk-k2)W9^ii0Bocmf1(xretJRCfht+X`ff5zAoEZA(B;zT +0i8Wn~RH9G>mJ6&Os{R~4XiB{w?*XeS#y8UUACpb=n>1Z>YVq(c?1etKMqvOuuu~4qSskWt|7gs%zx02cO68-O%A=wFqqf3K-&9Q)?TBj&S_b$sogy_@hs~aLQTWdO!++3sHRG-SuH2H<-!%asmTz +pI1VCnJA79JOhWHT{s=dN(ZLW)1rnk~Ndx52GAGkg0 ++c}&&H!{pLgx=(Pe~x{WV@|8?QXgtZe{hIMR3K|UJsk&bwiM^R=o%?(Nr0t1j${63u0-ia`8P&Wfeez +!RUC+llvOfkuST0=c=i|xUN*o;h&v%oCSzJ0e~(fIY!zwGQ@t_q+;nW}b18X-a)1=|9*`lWcOivB$Z+GouTHw7O#D1)C<+08Ht1pwpXj +IAxb2a~8Lsfn4M`Ff&9#zkZRbMc;k`Ct?^A6JmQg^|4>PWT3G5rdWAGHm#+vu)nFSD|g>L!9|t6es~5 +{GBCD9(d8WZ=yL*uwhApd(s1fBe6E0boU$tzMkxzqgJ2?5*9%V0iY~^|IiG&8kOZ +)BdVP)|MBuXUe^{Mau%|U6OpT(^pS<=qq`dNJ=<#HXdx1wa15NrP!PI)ej*NQcgqrxxB6*Arp<&qIx@ +|z3=_Mw;S7gX#?>|g$!v%@C8BXZ6wd`L|*k_SC@^btYUuQ{DAcj173oHx4PSX>=18c?BB#LMP0eT>Zp +K4Ea5L|6T0-g*`nrV*Hu^|MlKIxB4gu+0Z*6%71e}g4v~Cqa0_DJu%+fwjV +~1`W}t+KGP%_ay%A*Z(G6$#>s>65__=sm){=ReYubjU$HCe7~DMK{1sNA^5mOA`?JsoR&04?#aH0w(g +DXzKMC-rZbQ`6zn#yySq@rr3#!bkpt&0gdT_f-kU~39iR0tYYx~Vq`DalHJ07EI`9gHAgh_g^{s@)Fc +KUr$ie2gb?D39=gzj{Jx18jzTp=>;W-OfyCVfphU9)Jxc_nsnrAf&hREXK(xvFWQ{ +pH=q&C~`}AyF0B`-%Ab)YR8LmG)3b3iVD}p5}HkrdtXr0v!|7v1bD>|ncOLR<&AF$_jrL=T(K|61ppo +_+yG#~3`4slA1N{+jZ3~#dNNzxD`!WbW2mu;=BVK^Fz{Z=}TXnUcHX-8QSExfeD5}@?Rxry2$=!kySx +vogBsaZcG)Zpz#!Xb)kN-HTMk4>4Z>u}QS#=oXRy)op}oC)^Wg_O1NS)j9yypsBOH3TH5Ge#X63OJ~0 +a|6nOofL-b>k5{4r|Ifb1$diOMe5Wr05;-R~w9^+gE?J8stT^++<|=JZiG@fo0K+M;fXRdp +#9dIZk-;JhPrZWBQV{o>Rx3(_rj-Rm4~iuSR)l_!o*@V?6UyI(-qN8IUbt73yc +8cVWNg9$l2{E7mtCoxi%@Pn&k(jPvePC8EHk)N ++f_7KKHP4IPf_`{@N6{lRnm;##-KZY4$>TOEOZZ-4tC6(N=J{=&e+2;he`{(qd$HC8jdo{rv}@f9HR% +h3~KF?Nx6jqs=7=v}l?&-&;jUVCwDMkeKB;6reLmk}=0`Z2IY%tzxHC{?#6q7%zm*r0FH*^wG>aaf7cCHJNn1R +#r2?~zlJTI*TB=jiJTp*oP6uLhy{){7Q8#qqMGL6_#jcIVu+(g?`jgJce4}kL`ThxM72WW9>nxviYWD +6ug+Hg_yJnR}!fZ{LS-*$BqiGEgjeJFH3E*e#V-Z`^696B9d2Wf%%8vZFRh=*;^LaTb@v*3Z@m!<~Q1 +S7-s%0>}MxdGWtdF%k&;%4(fbl%%*^z7_A8I6=pUyCi!yIFk%)7;8bAO^zF{u0yDi(B^%@%Hi$#yTFy +h(0b4VUEA-aSP%SBI}iJ%W8u-hap=q%KD+>^!zZs?_LG=NCY6BB=+1kAXyWdH{&ovQzHmB;SXsd=`rD +4ZDowVPZZ!bi5dU0%aZe%if&3gS)_S +n3)Cp9nFQrIw`2R-%w~5_6-D%K3^CgsiOd)3?H$D+c&E4 +{>5>n{Df*61bdPOe?nuxqW<$cgS{SH&G&4Y|>xPNx)W*h>)U8EWFlw{B(rRm}O-%o}%=sCu?>PX6yr? +WSQv<5Dcz^_>dS)ab3Yiz2G#)uH7%m&resm(9O87$Kz2m`Kj)z_@gNBTuEOJpGgxAdQuLBg=0rJ{ +iit^UduHy^Yy`CaH7=pKZ16bOp*gwO}s{0s*ijnUr8&c=c`xM@`NgX3`evME3Eb#lcd^gGsAnwVKmvs3oi7CzX-lU+;v)QWmY&PP{uVoUJUOul{t6o=WyK=-H0&5SFnU(zCnm&(bJyx4US +LVets!ysKPfhk7kmeG(|EEd#W11oU%vi5pGPhWMaMIl6@%rl@(z^66}r~fo~bFaNW)xLE!e~(R#x!|W +|odMKx6(TdOL1~#chWZ=E9cA-5s~-r85K%JQvlA3aN&qrdycCc!yTTtsMiSNQBPC^#Eb80no0RmXd8@ +uG&Z=Fa1s*3nlsGX{g_s#%%q0pb#>S&f#w|DRET`yQ+vt9!;4VxX^DYtHFTDSr_Q10o)Nk1LqqmnuxMdNNV)q;0S^ONf(l?U_ +_Cc5FACT*!7EE$a;l=8&1aP_B*-~&$rlSMyioQrDO_N@Ah}DFF~RakZS+tvS_8w!x+9p?w}}lKPmx^u +Gs2K{Oj@trv<1Y1(+zb|FNzBfWq8tR!EmuWqp~N4LgTP^}Ggt>Y5$EGGVL$b(Do~EA$fe8NtCLLkJTS +G#KbBn(KOo(1F#(s)Z4Bl#Zj`z$(*z5)}KL4RN%~IgFr0PHX(>YZQapL{FeF{twaXJVQkqh9;%gyJd; +=g@0BOv`>oFX>P)09QQ|Im}r@r1gVkXR4bcBpu`gUNomr`jDPjx +c3|ID}_4HNRV6NqiKlSMHeftW7>ea4U1}yV@_WI4(_pE9-0koG!_XZS{s@0e08v7Un7(*_v%dY2G_LV +)2e%E2AL1hr`Ptct8<*rE8a%-~*8fH9Ok(z}^xSgjwJjq}$TkIO9kOpgHxDF1#ZP1e)@c#s>C53=10JRnR`i|UzZOBGEMc}W%6`87aHRgWmr_^4vynol8Sg5T$jAq2$xpEMa3L3UVyfR{!?AvL!)S~7t-> +pfIbAuCKgygsjEP}>pz-c8%!ER=leNO5tJmpX-&Jwzc}=Du7NW&z~^mMa%Q$k{4GeoEw&iNOsM0&e)3JOGb +K&hz4B)h8W7j84HVY9u{k^%5sxIjJ83J$!`EjGR%bEN=Ug2)@p@%CRb|-LD*yyg{F>O2F`mShSYb;9F`Jqsw8D4IWNPU?EzEAtPSY-f&=BQuUiqW(m_^& +SHHsZzVKRjHipf)z@LLD6(&Q1RxZxfLp`M}L6uAQAbnzJ#BEZM) +GFC9M7R~r6?84_o0+q8+aP@-F0aA=?|!21s<1o%pgb2;ey4))S49Ga-5f{xk^q@hn>#Ym>TpKEQr=ab0$`)e{#{Ey1&UP8C5oKVmX(Re*6DGnygF}@1J6b;mbxw9Wru8z2;flobs!<)v#rl +ysz^+iN5<*rCo#WHbboCZXCQJvU~UqDh8=LpIDU`v1SG}KLy_8O84~juvUj5(L<;^fCUJ=8BK$MhuR5 +q48a2ILGCY*RmEhfjzfyy +i%VwgCx*>%q754T{HyRp{!5EgLwG3I^I{pIkKrEU#jPRkD_tnN(bL+s*Gc)kWMatQ_bCOo9q){m8OiM +lR>)bxft-_4|MRq9&ZGWn#JwnM|-&ThRQ$mbDymA=y>0V>LQIV9H5e78qv{u%S-=V_;p?4{*oSdl=SS +)Na@rkBF({x)!6qN%Rdk7o63$mElYAJAGujCtL{xrV3j)zWd^$BBj2x(hm?1ES~aX@Jt!F{sdXpv0g^uxJP&C5mn01yinBg2fT>5LMmrqfasE{FN2#-PDp#M0jkgxO2`yNdNT6=UWU|X& +m9`lHHOZH$WHV#Y@(G7Q_YXbxQPKA$iO)w>nNJkBKo^u;?ix-Mfm4zn5c{3uhc|Yjt$H&cJJd)DCK({ +!`H{&Ar3$sx=oBf17cw@@VvJ&e?moGw%v^tjsc}y=B>|@^LSAchwcz~zi_sL?v>6S03I%NP=8wwA1uXNM~#9)A*FX{FY!{da!_K{480tzwP%YPr +3((Z!g&d8o_$r?wX0iZ;ZXe}F2L}kQf$K!7U7?%V@NIZzhh@$LQ0RHgpoP;Sqot}KM{HIoKWOS5}AwsJ2gj}&7nW(aYPxErMqPRw~+|_}~dj4F@RqHgY{-r4MqbZ +Q?u6K%|(pNN+#}mD(C2@U8Q$5GYg-{ap=+rZr1ElYW=Ntv+UM2r7>3)u1bp>6lnECRy;`==4TGDAF5j ++da6pzH5+dXV2N?y1Da*QYN5v2WC@aowNJyP@M`Sa#Ikq`w^0nH +w}c_{Z#;%y=nAGmUq4_K@3AC_!c&P3nP`f`hZ8nj43<^W_$5VsK(;vD`WU9`oeGZsZk=-dNb{8Ef}`q +nUg}eG%;okNZkWF51ivrXy*MG0g8n}p@C5sDv;Ni%$(9lfzUz5Bp}I6VjF9L>+JH<*UhiiA)EM+f`@gg5DnVb#g2<>q|G)Qn_6TZs6c8s7) +d9Qruw;;-HVNxflQqd?=xGOg=bQF27Cg341m(R+{cl!h$VI4#g0jEhjz7Hk&r=?@72Q1CHb)lj{*S_+ +7_~3t;;v<9yZ7FN@m;godVr|!6nVGnKi+K9i$GJ8^_5N^rc3Z^wYw_D_G)H)W#nU+@TLsc}6_P-mKN{ +gw8`4%-*G-Tl7JVF2M!F(nuh)1PQ1z+;q_i$C>mi*-`Onx`d3bc&bEifsp5)5-;Syeg2RW4F9AIz|d5 +4vX%D}Ft52@FtFY9Z>HJD8ey72xB?||=)y4?eW#>MB&nGykg*_4bH1DOVr--I3*^vDa36ShR;a7k4>s +n@tFo$dLcY?+W{576Cy&5n{W~~@+;|HiUW0+gbj~GOR5q~d9YqO|8X@H*Ts&nz6pA%pX`6g3DIA1<4k +{2n{S=xpnLEZt?*4?M6Ka+yN8|z>GigRcbBYhvN}bh6z13sbrn=Bs{{7i^KmB>CB~@5*BsxF3t4J*}< +O=F%i~_+QU3nu+)y-j((Zww(YRP#998?uQ{rI#8Vz6E}A=%S^a+{`GV1vQR-Dl<#owo;$3IXC@b$3mE +>!!hv$l$0W-;tU;wXO6)plwB044H=Y5BfVcWvJxXTCMNL+k2hlF7cBpT$!nWBfpAwYUJ8;-ay&+i5-8 +_`hThXL#mpGfpS#w2OXTulO}PF{S%sT5#7znw7mrS&)R)6n|k1t6_xz3HfG$7e33hG>D*^eTa^N4qd#(-Q9x9GEm(H^ +#dhyjQ?QPOby_;!9+GX$D8J-m42bVPmI)6OAk(Pksl0gnvGtN|L3zhN{)dE(ko476LK{|5Vg2Xg;%3< +K)f+|A-tXQ2j01%!bg*Vyj58Ox5Y#+-hb^pht?b5yn~-4KJa>{x^wpAACHamxmGK +i-o3gjZ-O=tuNCLE|zIrbYzJtPV+(c}RS;ml;Ol +gFB;)=;-5X4!T$tFPhSn^X`_^2CSW_FR{@qlZG5JC@D(5xrxT>@MoM0_9JhI-n>_Me;)f$VEQPq2>Bj +vT0Pq{WTR(D+~J^R7yAggMLpZ%JgMxWKRU+wT)_7X4+#PfOeioSRev1;m^s7{4nsl`^Gjp!$@rQXp^Uf$Vts +91?rmd<8;(y&ieXQ)MxC4bx-7Zwv(i6}#7{s@vk$+faO^Yh#R54~ehoJM-N#T7br!qfSF#`isHozl|> +O-%v{f1QY-O00;m^MMG5EE6D2a1pok@82|tt0001RX>c!JX>N37a&BR4FKKRMWq2=hZ*_8GWpgfYdF@ +zjZ`(Ey{;pp^co-@dvbN9OT&(C8%z)PwS+*~MAO?mnP2AA{TjTc`a{V7>goN!iReD0Rd7JH#P49-iJsJRsiKeOT#(_B~~Rc7BTq2cN`ny +zRemoVUQyT&~sd~S?$7j%k6^3!XzouJx`Kx5L~E3kvBFNAg^6?J!s|9aiA3*F%B$)R?r3L_$l3TpsBr +o?TDf;t*{J`@vl_kr_w_b)=J4`5CoY_jUku*p$j(SwLQ{T&NmDL5E?EwV>Wr$gx*PWJot +=8qf2fNx-iV{I0G}emPgDZGzb)8C$TQSKt^_UZYevELlyc#3^f4vR#D+Xo>0?+fG +|#L&K3z*x +J6vVdZ+2{_{2Y85*_U+si}f>bv +y#WDpRC;-JMvnrp#`VoXSuPg-56YE=8p_f6c)s(qVVE91|RWP1ryEY4$D16CrBa3|G%X(i2Zw-uhf9PCy$~C2 +`Y*M_a=^l%bZacx<4XRJS6oDh<-1SA1AFt8RWt^t;GI#~iCzr(pc +VFe=d4NKXdmkVh1%pA&60s=vIg5A-&klyvVksk9L}LF3$u#EVWlfdWD)`t;DB4mdLpTo+6Zl +I?C|R>T!LQJ_NIqG=nB*+R59sMzcTn>V4TvghCZ|loY6`zf-bGp=U~hr7__3}(-LvZH$#s@gI3}haBx +z$PuH*Oth#b9`CeK6#M1p@$$F*wpRE_N;I`hQPnox6|Egu>YeJ2nJMeER!XbmYmGe*6;r*pF$NYcH_W +7Yc=QhhuM6ZP4&%zE3YeR|~>~NZj7kkqWP!~hCLX~1CPep-S?ybm39BwTvii9nDT9zF6;MlTSkuott4 +DdnQ!>&jG^MChw#l-&#Nn7dLoG{l1A@jtY;9LYH?BLMW&f(*&`}ed+J^~Z@T?xzyr1_MNvh_0A&e@Vw +NBeq~tfC95>n0wcyg;lR9o{|z)5UGd)Sd%_B{oBO8eQ~lAg5ADxEvCo+`AYyC~~ecc0kWEjS +Fo;n(HfY=O3g0(?e`ij}?j*1SO;u`QJ5`IL=(Lbu=M0`HZ;t=PxO>4-^W1)!Bovm5kzb=#0J1KG0YaV +x6zue5ng8jNV#UnrB +Uv<1MzhnQaWvqz+9B@B$hEAXUk$?G*^`cyUgz%Aw5OeE{4{j8bb9JM&t1-Cb~nQxf2y^QOT+I|Zm@N~ +q;}7Y(jy|}O!PuU$An(2TATZ4_Ls=p*G)!R!7uKH;Q_dD_);_gLwABO2e0kr-l($?sU%g~kl;ig2Nr( +=P)h>@6aWAK2mnS!LsWc%*pV(2007cM001KZ003}la4%nJZggdGZeeUMY;R*>bZKvHb1z?CX>MtBUtc +b8dCfd)bKAC--~B7FbUT%DB`S7u)5KF{uamfq_d1CucA9j&9-0y%i#0`R3DUN1r~mz)2LOT($#&ZAZl +-M{5;!0E7NS@!0f5ji_ +tVutyosm9KpYk_4~r}xh@)7+_Ycb=&eAX$h|_YJ$SvN!jF)~8r?3`Y`HL))iSpHSE*H|kJbC^0;N3y+ +&x2o12I7QXb?q&S7`9Hc1)y%Wem;Ev=ELWc^~)o<%;hvh%*-D1NJi_oUB`J*hKWqC&91ymQ=mgorjg8 +p>b<_EZ`K775QBgWM9?6mKM9q+b#F_+pHC+TAA{HXK!M=R;l}|zyOc$+2!GA;U=gSA-)osGz`uH_@@W +8fn8mmJELK6LZi87KF62#?U-45F7cy9e)2r}ODt=Tdz#X3tw)$IJK@cWM5Qwojqqkli8ISjPc;X~Z^@ ++`=2-1Dlfw=p6nS=$1UF{LUl~DlCRqaKY%f?z3oZ1sh3-h#gZ}ZUJ93Gr+ZEc}m$Q-V&6~qTvNA#>01 +S!xl2!KLc!ST`l>CxdUAjh6i1#Wysa +y|BmEL;;DLW#Z*n^qvgF&SN|*k~0vQc~&M7lC_eaUSAAfiV5iT9^c0EPUo>=ZAZzDBuFpNTq;q_rMM2 +0Qi=?q)e!NwX!olXte=Ht0y+z_k3yj;r56D1cvZ~duP6S_tIa<6hT>&u|5zv0$k +e(mNqRdm`Nzai8z8y$H`+guF-Ez?zC_Lmgde66?-ACt!I`R%VdQVcO(C<=j@#0#XuM`w2;Lo@yxTv +0{Wdr{`1#<-QNz#sAKxFo|7i=nguH9*n}b)MelmKKWZ9Jh6LKYk$ubL`K7Ib|ai`u$;GN2nl0>4&1gs +v?YH<@MiI~pA^is<*QZ@%)Q3$Q(T7yoc6h9booRpW!Uy^S4S$@f)NC02fMTT5}B_Yc10%+tTDZvgKw{ +ZCW)m*}-sq8g&55&wH{pPrU-$!8G?Mblg*;6aU_6Jma4Iq5BA +AyJn;KGTSzuENH2|=U$@ohyRsCl&rP@zhvZxos2V6~Awfezp${DzI7xAEn&+4>uBx)cIfvCx +$rtDPLyUsB-u1fy4L(Lsb5Q$rr=*(U{uH4xws(2_>sJoCN#ac(2}kWO&XE1h5RKx5i7ybMwy4k^(=r$ +^ks60M;$YlLIZ-r$iY*LdOziv_gdpfj*-MFS4jiWL?U@i`%pi-47CH53SNCR7QG=Aj508TR1VhJ6(G% +AVahiXL~x^p==hP>Og1gEi+{TvH`~3K&CN)>vzUvUx$^kr8ZQ-Fa^;nHFdicjwkzYGz&77#5^Z?hW-3FtsDI2*D<6w#K{i;J`XInn?GCIhHt+5jSO*mj +v=u7jBY8rx}7MqspoCLl|3PDwEkHjxl-8AHhai-ZkC8_Pt#%@c?eqj!+gd>)#j#P*9PJ1;c;j5fUo1z +_!=j68vh<VuV@JuZ-C$mPy3!m1x(nHs%T^;60Z$WO8R^wA&{(hdIj&G02_*m%%3$iWX}JM;2b#Kc>IV_C)Wo7>Y!u)s6b+jVs~G2Us^$Y_Mo*!J +&LFOCW~OMRfm|98oH7nvWh0P*h18NYKc|=$fr6Wl-h`Ano0&w6*j19oAEbycH-4Y;<()XR7%jCBIdb7 +!kIdZVw%$W_v6YS@$Yc1oX6CR!`5=#YiPoZ!w*_!P6h={fxnvk}7e7<$341w%<{;% +MX*>d*>M7)9Easr++(APG?RJ941<|x!u(I+|iYZ(x$EWyT77wmg5hkIYl9*{w*0@qxRd#~EvDl+5M#z +Z6g2yZnef>nwD7a0@vDod+zADa)=D@J|nww!DotgF21XbfC~nM~^FbjSYR-G~0t;hWJ~(vNfNqo^F?b +Stad!tH`f#(@WXz$Kpl&AC +E8GBV#MSJJ3kM*_zgT9V#09Bu18Gjd2yi5?A>Iz-2v@H#UgQK{)^I~~vV0{{ouy3(@M^iLLR?>*P-tC +Xje$K@h|Qcyd5Iyr1J1;g$U4&zDSV2(skHy($>Z;75#MSw<-fOgpFZ1tUL{ZJDqaSNL!bcXI7|YHy4c!7O;JDkXt;S=?K*sEj-g`a^Qn0gww4!=!?mi_eOE5Ksdl$~x=H`VMXh;FNihh5jbU^SMk0ckfAN1IIdQl5RtCykYBZ{+R|>@bTuCU=K)rQR5i+&N&( +f)Y$uPXGRYugvsj=V)x8@o9&-^G)WU&h;%U^Kw1KBFg+%s-ve?G${nVn)o3=U2s`;SiyLE#YFWQ>r^# +8! +EIvN=92XWT6f}pH{D;Mq9B89b?Cf~duAYz7b)=RCOY^vX=SOmSWZL!>%?6Ev#2Z(toLx^F=ozHHM|vJ)yj9R0L!!Cm&esMU4?eKFxCfCbk#5*=3G;Z4KR-Cimz*i`3JJg&mU$fw8 +b&uP&KEw+4vM#74Fpw#*T>g`?Z+KsfBi!oUYs6&9{0tpkkHosx=u#Y^fK|9bio+*>ge(V*0%hV&(A?33;7ep%aalqIVsKLZ%9E +g|B@RaW%468WaX=2mfVPX`4erWo164lofIhWRugb=N>3Az*Va}#?lvXnzb8CVeu5wm@1GBk;C-F{8UPSIrb13jYc&K&Ros +<5ay?Wo7-RADkE*d2e529k>n4$@VSbmuH0wV;PfhgL3=CNLaV|`^5P!S+-7}>c-FIn%XqChOldr^@*BJ +dBl%X>-1LRb=>Vcs>L}rO9-ure6?GcBKo(tQ$p9bC^@kxiBx!nG-#>e{yHk +hNA2g^;VKNrs##Q;<{JDfD5Ir>B^fxHtai*;1DqTe+t+48-GM-Msp+wt9gIIq8j<@P!*3E?OQm?lNUG +1m({;CC4>n2rIai<#YRKe>d?tX2wj;?K6CDkuGctk@L`Gy9ByV|JJAL;;f0&KMdYlU)v(;w7p=h#bRa +(T`#RUB=t5wE|Q8c5a#E%e&%Zj9$~Q;Hp&&yj`d7=o@w8i@$@H!3|US9Y~AJ>W@Xa2mnCgTdKGBp=xM>;`As%zZH|afgMtOqNO+nGp_WLXCbxu|9v?(A +$R1EH9Y+ay0;gJ!bWjQB6|378vSux4>44VkVgDdP3u|b~we#39KFJbQH@Pw!&nt*=cI*34e;6X+yh@V +xp<(jNkqYOJ$Ryhnp##THTNO`bR)RH3#<|J%j`1ls|_9EolGu9MBo+133WLMkW4IilV>k9Ud$Y*SnPo +$6v%c!(=o~Z}+fT>H(<`7@`W_(fI2f)L4Mly!P4k&iPjTJDz&p;c6glNhI3yJj_=_k~QvS9~X8^N`l# +a6ec&}N<9(?S9gjZVZw+oN373}T*OVGAEoVV?->`(qAp?T-V8Kd9U{I0au|9#XbemE +-P{;ITRhA-Ch$I%>DL#h_Jo#c0PhRh0wYk2Vv73#p^zUovLv-W9yt8DrOebQ(&bZ;#hxQBj`qGvzrhq +htcnMD#DEUU0x@2PnVsj?ng{4&iVNxtwkkM3gzA;l?#L5(M7$%1OIFo4NlbalpuF9@5 +Uihme9%@$_+RZ$p9x@Khqj83;f-zZyD|GcSB)jdL1=Tj)~@PE4Lhw48y&IC;kqTc>McK5`ZS-0Z_KY8Q*#jt@^EV2RIT2pduC>ayvsgm&v +j@NU4P>8NI)=r@YhWMJFN*3N3WT(TJrY@ +0r~YYjVPZL5a$pZ_-q@L-J4cHMV?GFJEM7b98ldX>4;YaCxOzYj4}U75?sD +K`0m^XNrtsz&?2JhM~>770X&+>Cg^AAkY$RvynxOr0jS>``h;%lDhfww%GC^mdJAs&-FQnilXRV<=je +D8MfaDE!bYLQmJRQQkvzeTFJFZn5>NDWyy?fR;z>wn@3SJnOw0?8v)9)RC`&iLBHLK$}+Q2OHd>?*vpv*@Iizcu+gnwWKD=D~!b>A26S=LGw$N(5#v$#iGVPN&n8`}3Eh +{ASv$8a4zAaeTeG8p<1q}>)*Y1b46E44;w$=s-4{!f^_xHQ(Z+HKC_(_iT6=!y|Sy;^S^M}I<@9tK}T +G*^U*o~^PQZ7BYJ=EmqK=BUVO4vO_BS{oc@c!th6{j?m>?;?^1?^qeh~Dk0cqo?qXnK!)WHstT)GDSN +sqjVien#W^{(7AyI3%5xJ~*Dz6JJ_WLsEQL9iGG(`abTNMZxM9x4JJ}AJ`%FQU +1|WpIB6i%f>o)cOK(<4W)VwT#ETeNby +a~5KuJ3S{#Kehb}q%XvN}_ZiE-l4U)$?R_VjhiIWgU@EBjj=!E#ZoGbR>GL((QR3X!$VyLJaUhet9+>l<3udHYj{M +2=SpxIJY<$>)vhCrxBM{8szb1EX{R482zT)E^GFLfz%X~Cw&zZ+pJ`2mUTlwT_3J<&)&&o$7Buib!!AZrQS_S1uJDo`|`C>DJJ`|EN@q?V2nXLzCyJhYU!(3A0smb`;$ +FB)C~0*_CM^E|ZI@`T<#a4SK}V1!3Iu}U90FB?8S$Y+-;Lx+THzmfTdDQZp~yM%16X%@aE@x@R;pMGc +paz_~ITFB^vK>Z0_u28Pf5qTPWbf@O`86rElyrYN4wKAAjsPTWFoorUBx(x&{>lhhFwF#H3l&D840TPl%48N!!Aih(+U?aNFo#aL#N|@`2$U`JPmzR&LEQgeNn-K({kIXN +VLFDWD_p|=RLDn-ic+VSk9*!TAh7X#!s*tU=J-=lxwiUA$=FlTVLd7Qrqd$WfFhS6@$D^0oUvi1N4Tfh4D`D2UX=gAZFywEO;e{D~?Y(<94|b#DP`( +cUS4j+c}@&pMs_7f?$B1QY-O00;m^MMG3L3#)n?3IG7^9smF(0001RX>c!JX>N37a&BR4FKlmPVRUJ4 +ZgVeRb9r-PZ*FF3XD)DgwOL(n+c*||_pcz-huE`B$zkoVqmzi7FtRNb&#>ZWaEp%ePe*c&`iv> +;}mwWu#j-SDC?pSYF#U{@*^P)Zw+4*BNY&*#6Mr@x&4`zB@0~q-yEKzLOY(_`O#e%m*lUh5BC$kwmo|i`r6Ho9wn+wPY_Lt=CpJS# +KYnGxGN1BxifNQ>CjbdCs;By>IvqC-y7Oj`OfgZG&9i>$*7V_zcIaA|!SgctE7Xf<}CG68uXaPKbTGr +GSxzuZD-VokeHcOlU2usn{IGfBgTQ6lH7|$}*mJLq8fXH}$yi^(Rx-ICq4a*d4EOIvAuy@y+W~oZ(;q +>nrN&YEt&ayEKO4!AM^Z=TL-FnV)B`o}+Enrpuv`38DS{xMxTY!~p&NCQ`jK|sa)y>6k&Me7jl%DcgzF*-*5Q^P1Niu*<7UvepeI$JBD +(Hr6{G2ts?s%bZ=xQm{|hP_rf1mOZ)>ndF6oGhoCLNa5T$cp=KE-Qx$)3j+AZnLiMlx3b6+x8N2O0?D +P#97H38y5Tx`u@Q)Wqq;k_!SjB1duyr7#L8?ss;NHZHT7Hj9gF_}WQE9~dEVbRDQl&I$L9vubdTXE>mDGoK#1vZ&01f=%5$;gj}n?eZ`eqK>ZB_ON~siNFfI)&GR!Xq4brN`|24`31q6h00rH!aI0%Q +#RG88w_aLbg%>;LhN64DLRvR`pZ_I*L<>-VIh +IUU66F8g$P8J%vz*37`e;;Vca6o2<=nDnYY|wh7jtriOOlWo33J$heF$sB{_4ZVX%#?RY}h7Qqje*y8 +MYXHH`OLBo7rq~0D(Ayh~JB23y?zzAg*q(ab#^9^;Y+-Wv)C6O_fTnujFzr=4Ow6{8E{~!s1QHT0b29_cR +uanoPWR(X2l=jh@n+1EX}E(s~j^ZsR_eAh>fO=NNF1dqM=?rLlk0YCaGkU{(R-;a-8+fn$LC4m}6+Jj +%<$^g|GV+WX15w&U;tu>^t!!vebX{Wn?p9(Bayb=_9XgFd3*x*B#R|Wew9GJKG3+wBpLxYHsTIs3@_jp5YrFtr_-(IEJjKo +5e+b(RL~i0lCk%G$N|kvq_{b7-39C3IkVe$n^#fD$NoW^ZY!bU`5h^qU{N79epd1>!N7qsNd}{j-PgY +r)=Sy_N*r!`p@n#wBXswRe#7sdKD}e8Mb(=!N>C?$rkL;H*0kB8Lx`%!Kp1DoplfB1B|WcBt}qc(D5lTFSXBWV2!8HI0hiDrS-ZwVRqo?QTNp;__Ha#B8wRT33HiSRHNGB#4p4Veg~`YL)ed56P&r%~b(+2)VjGTqm3QCju6?x!e8X;nS#rv5X@c3l8S&ZK%9`k +6VF%=(+|)^Ny0;Zh*o_dc=&T)Ft}>dx+%;b=8csCq?CNI0z_P}71D$tzl&&W~WTWlA?nNJ>CP?ZZG=# +rBO#7n#U@E9D2;X~;?jHOwoLl=0pgtu1-JYJZ9K9b_H1p}$>V6uSASMib>VZ52BpZ8RX=_l(iHL;JD2xb0_lnuhH-U +=96HnhTXaIhx&$K7aV-!`1DFqlDcG2ZkS2;yAhT`RDbMJ)4V+1G>kmWObwiMF)D>E4;B56i^5@_I5%y +@@6Zuzw8oCkS5S5wz)2EH;IPJS{2fhgzPu!5}NqdKeE-Tt +xMAUMiU8PTxudvdX_KcZ-j+a!e@YnAcWKd&D-%a>E{6`e_js-5_U7r#fA((0c^=G!* +2hqyGRV +?GFJfVHWiD`eeN@|y6FCrl@2@EJJkSj@&aU=hrIA34Aczrypv)jxA=GlZs}mE)ZrSckvWS1*aXgKA>Q0p?)^00?u_p_|i1({^uN8XDF4IEf#M~xSc)FfP$Mtd2A3w#9pQ(T>8yT{vNJtE^P{ +-PyCgELKG>&Vv`yY2zKU&f(?@i)&^oMfRizt`)Zk5Sm)c)p@QkX%z=)l_Z(S4}sHLaPO2u8|K`A~HwH +THor6-aq3QEdtwdri7Mt~EI22b|#cN6_E%!Ul;WMwXuu>&Wd&ZUW8jrp{S+j(9=0pe8+^73;yeH8i4X +XzM+#P`CxNK{brrpc|1%#hL?G=M13_?^MXrd*Jm6(cZQs9fJs$m^1*R^{E@fQX0rW+L|Q{7tsZU5wRt +EdR>{&VCC$Np3%vK9xE|Q**M#<(|d6AR&NJp7u1XG?S{iD2G?rMG>O_xf}J#7V@?*zOoTXXxKUrZ@ZG +o^#gDCasLcg^f_e}?j(42JaTH^-A)t@J;pZXjW$b^@VdF7+9@jEN;Rm3t)GbGIWmHg7D-WT^ta@(U8x +o^DKIpgR*2T!5YrH$y2_tepl2E4 +H7%3pS=bAu1|H12if^^)Gv#z#H;x6pZmA74{zo-@28(<^LJ^UC;tIZO9KQH0000807gYaRNV26QECDJ +0Q3g{03rYY0B~t=FJEbHbY*gGVQepLWprU=VRT_HUtei%X>?y-E^v9ZRLQQ}Fbur=D~Md00Es^!Kzk^ +@#}s9m1&)EcO;1o +nQeST4Q6H57tr;GTgF=7(Y7UsLBskJ75|z5)j&Xra3~iFyeHEz+uPu0d-SS^+X-f?pC|b46=b8!fp`M +V??WKQoih&@9LU(8&K>B1MLWByrXT3aNbZcvzTGgU4KrV4rsQUXhTVGF?oC+s4cWQf{?jIQZH{T9rWriA9=T`*l3GWSD6-Y{3s?o={xv|Xl#6J4@kH +s9G?6ITITonF`Dj=}oww9?cP5zznT+a2YiOu=OiH55H{Ahkf1sx!+ClRufk+-=^P(n(@+yv${L0O2gh +lS@eqUU}`4nE$9Cq?D|Crp~xhx3^J!_c1F$e +x}-aHy3i}iKO=ge%3PA{r1y0kD)c3zUiE4qXlh4rJ2J2u;Ko#Itw0Y-njdAy`l*t?_(2U!MbObshjb? +8LOBSe+ap^<`1QY-O00;m^MMG3xJDw-<6953^O8@{K0001RX>c! +JX>N37a&BR4FKuOXVPs)+VJ~7~b7d}YdDUEdbKE#`|6iX1HJh!Sab{@ya(QV>Nfb-o)17UpYW|I{g`?citb)K#4*UI(zYgVqaTpX+`xn=dPgg(r?njSFtIXj=z@5}$XIE`QY;q=9y&fff>AH9%yE +|NNvh5cUCJS#+{zn;~i;;USE-)d>zy~iSdsXc2ojt(Y9U^Wny0+xr&T4Zp>DZMc+g8_wTLxCLd{vDL>1$+q0U>Gid; +o0$Tq3trpiM@IXQcK`rn~yb6J4N62PGFm<# +154yBAU-xVeN$ojQ0kKJH5f@xR$!ZLADOP^N^Sv@aT(5)-sX#0q9ZaR`wA)VsiB}=;Yww1bnl~Rt?VA +*dV+mcl5%nv2HjU!~ye5vp?+=okE5-h +kD{)%X)$T%qM5dPGnV!IZl$9(+RqyBV>f_*3yr32>GAYzsJp2q99kyD1DeObs +BR`GVv&m2ApSA$Nei<3tt!8a0@PsyU!<8Y6mZ(=*14k~-8ts+AB$(UrE_43sqRD&%A`nY_@WFwSz)H* +>=+Xt=2UsFxIYQA>uvP!$Z^|NQLZvlCqvN5p5zz1;K4$0k0j*Fnn0@if^q9$)4c}EG=?vIPA-T8b^M2E#`i2fQ>~s$AEL6 +YeTORbyF4UkR)kzFH$=swRtHkwh{`W1474amE~EzV|N*hu6A35DFF8RI)m9tm~tU&gn71H@|7a9nJt$ +LmJ1}dTq4)7sw$b^3VbtX00a#10J;K?ce1+Cv`aU=L(RzZi2XzgTP}$|pbEmm=~MgVGK!EKEX;_}B#* +x|JZF3>n?ehT$XRzF{8}ziV9VwA3_#9)0qleTsI0+6XavT~5|&m3Iz0;MN$^xl@plpXBOnJ2S>IXd=S +F8>?(|z58*$EfVPyQ_*%doFVv{JEv~CKVpb$xuAbkA&Vex#Rp>;X-_eX4sujVuNu0`OW<&h?L2=v;f# +M6=C==q_3qfGEfD62Rg!zVrDdh!dtk1BpgSp6&0-%T|0E1T-? +cFp{CHaYNy0Fs|O!ek6x?T{^b8(t#bU9|&&)_=m-fQ%yb#Dcb!OP+$4p#d5v!=Gbh6>W@G1Z;;^P>2M +B@G8r}Y#5=!4s35r{sH!x6-hXNvu~F00zB6rjY(jqVoEkug5ek;7q3=XU2!l0h}Gd+at(N)A~1Cf`Ib +vZZ!0(ic0&_ND!~yqvSP6X_jA~RKPQsr0nErEODGP}XrZS`zDs;8m%g3(7!k3vwWCLU;XjV(vyyq1Fv +K80b0Efxnvf1Ui^`yYgFr%*m8kE8C|YN$$s0+q%s8<>y~tPT=Pb-3&1%e6Vt9jbQ2ZEMLU=a)oDJei< +*0@x;EDgzh)d7QE(>>Lo8`{XjB2^f5o;9qM;VnnZKVk+wG{xG1A^0#1!%xBixbmdIA1BA(wM8i2b;+Sj?lIp1;Bp_HOtRstwdM^sG=GiZ5_f(}7)fv`WGY)k +``oOLA@^y~}B>K9_~0pmqDQUYR*6#ZA=^6auDsu=Xi>7VI!U6<C+8BN3+7L?I~C?e+oIx(@d#GsH +e}L{qFbwFdI`@uzGaY2DI`qA8w=K$2za?FW)IPag-)bBweRf*Rsh|kX|7wXu3lz=YWzygbA@o8)I5$c +XS%nP|xKO$9Gf4Fi9u)WPT=sP6c?JEElaCyS&{I)VR?jX8}epEa0lCaMPL-zFO2K0v?tlF=zWgh^#*g +0ZbUx07uSz2y$#0giQf(Ft*E*Cg+fL1i`6^2-Ddx3OS=2^n^gq1D@b{LFfRE)0V6U2hc4r!qL9NrrO6 +7-*`LE!t{S?iH$B)7~eh0zF%2(O&St?fEoV{P2{SZj)1kHhCTJZ%eEQlOk@0V>6<9OKOk~sI)PCey?k +QSf>{r@DPe>?^;C>=nE4h+^TuR9#$Q+H23rA-ij5N6g&UPGdivMpBlnyPwej +L?e@M;(12vodk?Q|t&-i^bFHJze%Y@h`@5~GDeOV(5af+#&C5%!;eRwrI})EfvbxrPR?G*ft01A{(9g +S>D7he&<{*hc`!Ym#)Js3-vzt*fw*4-0SyAYIE=xoFhJAhEbi_z#RWg>SmU+6YFp;1fI?%2DHC +5HslWk^@$CAt^{G0~#}oy-)@ZF#rxh&SvxZs)xV|LNFlJU4rfUnL+Z8!SDc%+;N{0=y)n~01ak*x>d9 +U9tBrBTUr}d!M)IL1pj!MyD&o(sX}9&PH^F!JV4IaI&N(jg&w2UzL3*-QGltx^t|rVw4uX*zR%Hf&^T +xc3*lB*xH_3ql6J<0d9e^5b)h`pEw;RXkSGlR8t@B&()yh!RAVxK>#D|c33R=9tpy4IcSjDi=N1~W%s +@E0V1_13STQGa;N2+D5%cq^CuA5;DCi@06Rt$Wj&VFC1Yyn)xZ-4ojP>i|#Zb470h3rJvo8idAjpSc5 +BY>nwZ5z;OoBS}q?gJ&NB#25(RR;|YV<%^UdQEo3K&M``(MuwDS>~oB>l0UO%TvrU9i7&_*pw={ +*OhEG*XUQ;G;K9>HfNOT?kF+>XU2bhj$o7`B7P|+?NV>i9c_PO2c4Fdte9evj*_i7R0nY8*IVmku540prXjIFVo0(pf!cCBonAR&Y*dQNb@iGVdolX{$Ih(}et8QCD8c4m|u6CG!ov-j%1kA*}H= +DCv$nmECR`2|b7xk_=hOcbt)wJ;Z$I>B6TNS`fiuFKCf-5@mFf1wD1Pgp5kzg#4fEdSxP&SQgSbV2rd +;eaEP1iGCg2KS`UdpD>Mt6Uj+~dMDa>9(L5`a^h8U}mAP6Gn(!5;ycPXzvJjve^#kyP}@cjs?LTZ|uH +uq|d70*G$i0C%{fJ6=JszX^FF*%J+{lo0rSOX&^#I)wix^Ir4)2QK^{(pCsW{YITfvr)y|v-Vaa(9qM +P>p(WtH>%0mn|GJTuU?(Lo%9uY{!R;={fJ4n`P@4LGmP<*305m#@+^m}4gdrz*jc#2t21Q;Z(L1Qm}7 +I#OQ($>pg*%sZAtJRUy>eW>t;5#G-&tvcToa&-U{>zEkY7Y6v9n#CH(I>-8Vt*7Sw0Bhkp(1 +|Z$CF|vfl^zabDZb?i>DDDYaV?1?*RpT*{-OndNygR$~c;-i_M|%IBBBxH3(hWA-H?iP!+2_qJAoW|! +Fc{FzlICR!AV^Z5a5`l6^wY4tzql634VKm^(ZEs$?dTgz@04IOn>j|0D#Q_I5QSqbI?9Zlt|zlAQwBJP#@*AiA|RSn4z6*bHo6+^;BaAZaOBx8@skz!Jkhc +EWv@rUr_;MHg4KsKyyhY8MLN3ZqoKzCMZn7srm9)@`K%mo{wxe8bm`F!81_IF +kmAXS5Popb*w4)Eij4#>6wZeQSKliM@E;p(2N4r(k6&L0?sI_Xe;5Lrsi=a#J!YveEW+6MAU#&$HL~s +SeXeGf^sA_79d2{;X>05NUZKiBlhY?wJBeaj +=bhDav#;)a^M-R0;XKPqCsoG=l`lgU~MO)ioI(ffeL^vvB*aHd4xUBSXeifIy`r22ye>i_ccIGO8T3k +@yePV1~!`MHFrVEu+U?2mhy01x|^*-O+d88xcGw5wU+THSDuh5%@M?=Ev%w`g7bGuF0(ZI-O$4fbSdD +%D2mT+iGtD;}9TC4R=pP}595T9dABdYIp5yKp1Ja1TqvYYa7ToTFc?DeH=|y6E*30m^moWzNX +^VVEY;s}F&VE}_VZ>8T*90(^-j|gdqVupoG-qNkAs&&bbpUwVS+P=qM^#0UWF{iUqaJm|A<1vA(-4Tk +w5GFgJ@an1gcx_?QPtc0Zbx;3#cCsX7Ousa-drB>upx7Q_*xIZaGOC +a8EbhBEcZR=Kc$w;_QdVK-$F7MdOWqD@xQKUVq;ZF&MTCS9!VdLfgns)>A)K4@&J_B)t(Z~NMS~w^zT +qvK ++Wl@I?fxZ$>HkDm+BPv)thN?&qWJ{foWa`8!R}J<@j}9N{OKdh$?G)|!Ks`|tV$^Dk$5^m&Jy +aLICJ5DwnO*{=OR!sZ9c25WPx0#^!VN$X_s3j(n|)|5j7S3z{dmP-v+%Vn6-L^O;!QRHot4h-XHB@iF +0_GU`Yb8-7$pZ79|?;U~!%UTJalHL4rTg&EZQ={}!)iNIBZDcEl?6@Fxp&Cp%TG^{X8HVieXl(B&Ovr +6OTZoM6Q=Ytl`>}cM-CGL{nK0r3>r`m1blUx%js}!xzAXor23^hAU2Quq{8F-=Jtjqg-u1?MT}ce#YR +a*6dP3Ck_@GRk+ra<4$?Iv7EAo>`XYk2m3J*gA&}7MLaSUBH0;qBRh_|V=FMjs;bVpItu`dl1rxuhk! +s8GOCf%DwlMoSp09eIpymwWb>5$r3OK`Dn&qWELHiT(=UnBSZ3)rkS=4%&mYFUJ>Otg1KW?p{s#kvpu`e56=*OD?Rw!p&6y7jOyc6z{;$fV80 +#}2jfYtkI{K+4L9{Pox*l#xj!cmuBPlFE5B3hIQ^L?AhS!cEnUSMRy}@;#OW+#_r8ibtNcH_E^}F9kl +~+1vb&Q_X-@OObSqdpjSqHcX}*JlAOK!?T91})5QDjDLg$8_{Yw}u*&Ro^5w1xc0cu2BJhI#0Kd&bLJ +^gUJ`17;Hzh3>#elWkIcyaZ_KAZjBz;-&_nYeG0e4X=+Isz8Xet2^Z>*Vpf(|z0KCPwVfqra(p-{AoK +nVfA3eQeBDHv-f7RXTgilR8f+zamh1;R_&k2U&wN>5DraJ^mR0kj3OgBtu4cLGbLt42G*4+>RbZ~{1EWQs+#_ ++B5RTEEvez@uG*!MIE^Vjmn8+YGfPN)A=j&0GS(bcjMpcC6Y-97aW_6!eZn*A~C)S52t*59+Qn7JH$X +kqcQQO_1a5JC#mR4-L@Vui~6DfxIFkkAQjSF#VGMn_5AS&{GpRw(9&@is`QmH5MmcxNkmwb`NeAv)TF +Bxv4kV)4_p5PA3VygQ(Z;c<(1T*c<^E49&xc@X_ME3vBc(7*nn2Y>0VQE4{l-{1m2{^1*Qy?!3DWlo* +?m6xEjLw}9M)Nnp=23oS6_tRjMIRlrFcku3?et(2M(@yR+UGjST#PF{`RDy584bMNUcC}DfkC|)GKvS +aS13!EPL1@AQV)$QBO9KQH0000807gYaQ~(yir3VWD0PrLL04D$d0B~t=FJEbHbY*gGVQepLWprU=VR +T_HaBF8@a%FRGb#h~6b1rasy;^N=+_(|`?q5M{P*i(Z>v~@oa8c(H7ectM)L-#|h7jkAeug{Dk54F+_69+EK^dOAkdvPYihc(wmX#cEK`@O98{#F@(RrBV)lv{uM +B|yTJ&#Ej%-bhug*mWZ`-mQ{jkrpFsjwLFr!s)nEZj`0a7jg-AXMEqH2ua{A>U0rLAov%Wlsnr4PK6Poh9US1jk1s$@ +=&vI-u(MCnmz0|)AaM^!U!>_z6@hKH3Es0kF1im$mKWpsjESC7E7_;N2q30hN?_$V4)@P@zF8uj}3%C +t2u6?V}SSvp#JkS6zJ3u)?-pE9)X{Ej0MjE<2Vtsq+P!d_c>H3RN+2i9nV+r3t8ZErm-62TkEl2|Mj*Z#?kR*$j($(noKkRA>5DrBfa!$^f3Y((M +2^(j3gGN13IVZ1bo9e5q=Dnzad48_2G8pR-5m^Wzu3d2^UUMx$v5IdHE@nw@`i4o;))e&F&kiCU7uGs +d}2y?e$*7TifmhAk`qsuQ-U@9O)uCzHys%#T+DZ?RN3>@qG@$SOW^baF?y=t4K +GuLzdcd#j{YX#5>vlL3U?`)LnO;?gVjAms>B!X=ru(zCIt}_e#0)?J-R*khd@brTSCsJ)koRf(_^J2x +HMBcxRIaeAF9og2MC&=CSle>;y3K+y-en=Ln*zeCJRK>+IP +A#++j4_fmCMJYqJJT-C7j%Zm3!ST@7=aCI +tD1Hq3d8TX_F}0aR2%-2(U)N#h|&*I0$iv6^_J^$%$Jqx~xA#NHo#2?mlN`+9spLQuqh9xbTUJc2`@^83qY_RSY&;GFAeq4;Ve +H$X4vHd3yj|D5C(ySiF;u1keVHuN%auTJZ?)9r#2=>;Holji~@;nGFP@?f2`ZUDpu|X%^9BJ~O|A9W#whU> +^(+7VoOHpLo6YZczwr3OrJ^z%7FO0kN$BmxJu3m8tDy1$$YU+hhm*I&s+wNacmX%-mpqh*8dAA>PYFfEMO@7* +t6Ts5tY7NaIxE;_cEOhFXV7iUEKgTd13)kgxWZi6<^29~cc_LXku7pY>`tcj-A!j1w(xS-M9-y +CIED!WLqq?$+IKV!qi3NXCtBqZ879$N>sj-+)YT@YA+iH?~V}S}ksrkza915LgZ!bxcA?i9R|f6)AWs +xnfj+2VbeSD#$UCxbThX+NNxlAP~EJ=h6QZMfCIh9-+UCv^Z+lCRk7($tIOV`dC@Yf$FK`5`dglel#% +nzbiOb0COrVQ32_3dmPH)w?NW}d%e&KgLz}n{Eq92r5F2aCUCTt)i_%V@^IJn#{H{_P*qsW0f?*<==tu1KTNtUvu||3)pr2x5<{yGFMdH4R!IYBFpSdFpZ#o%pi`C1G9KL{7KdIPb9Br +V+Tr=8PO#65oAE@bd41=#47In3(&)THZ +z{oKrtTwX7=?&8h;hH)5hR?OZRyv8GP=UpIRQxaAx^M=?8GG-$XMzu{@%xj^>4di<`0Iw1ub)aL%a`fsT&|yOC2*Pol-)CWFpPXcO;ta>hcTq99l2t+9sDeUq +;0@p=YD5IvY>@6|gUJBzMSqlF=0u;gtZ4qj*ALKx{SXm`R_YP*06N+PwH0erKaWKbXvJ3C^G6BgU+qA +aSW#G_B1J4Wo9WUNcPrpZ<33~zOKDc%!HUf+;c13w!;Nv%A+L)8_i^raos>5Xu3A802)VbyRww+JUzRKgTA +%(xM|#8B8p?3?X|Q*hU}9QO1W#K|1GK1u#=K))2jvhQthqF*1Jud0VR;%rk8 +c(QkHbS)O{)grx#?Qz1clKmpYYbCWmh3tGIW{@BphI6N}1PJY0^a9SgG67E)3d|(Zc%xH{0pk&*uI6J +vn#LueQl`?PQ^6#sf_t|6;WzK)!@z`@Rm?&usp1l^NeTA9GbTLrC$;1n}Wt2MMm{WawG;Otm%>MvTO9 +KQH0000807gYaRC~!N{yP8w06zc#03ZMW0B~t=FJEbHbY*gGVQepLZ)9a`b1z?CX>MtBUtcb8c~eqSa +#SctOwLYBPgN+%NGwrE&d)1J%*-oR$jwhl%_)Wm7Nr&xr52~=l_&slW=Uphu^yL_k`fmHP)h>@6aWAK +2mnS!LsS(opig-L007q~@)yQ3tM-*$wDdikC|FQBmauFx0-_@lgh>pKMFB@J)Rynv +-p`3;~`^h*E1AY50>gwW?*rd3>LxZ3^LMP{3q8RP)h>@6aWAK2mn +S!LsV7hJu1Kk007Py001HY003}la4%nJZggdGZeeUMZEs{{Y;!MUX>w&_bYFFHY%XwlwHVuO+cxywU% +?4|usX$PUk1#8yBbS26ll95aPlzMQy7Vkx#;4Nv|BI8zwaDUq)5q*(=7EvLLHv_jfae)h%B}^otBoiMemz=KA=zLl>XNA4npZcZ*`HRsgq-qBCFGrAf?gLaA%CnDuPa(4WVTx~ +^Y@a9gj`er9}Loz7Dbwp37HQF{GwAXSf(yS5hWeKB`tVPk=>aPwea@eRm<9bPDQrjTjql1>*QoPIb1#33MpN+k%aB+yZPJTW~7e9W!ACC7y<6mB&;6YYUDaj!Nhi6|irrj5hwIOT32CAGbNqWQ7Py_R^_W +4{Ya4Ljgkr4KE4GdYHLVVa*TRWct{Fd#;MB@Pqx+&Dyg$MS*o{x3K1~EB#i9idfDwoLHl&dJ8yU?a>aq~=Q$PO4fFUV+LQh(E#9MpRZG4K^YsB%cGx!jfxJ$t$U7m9e2l>R1|k +Y$=!Quwxybw(RZ)aZgrMl1&w8PnNYHclTuIpm+CiGy-TzRmj8Xt)1M_E5M8g;i_?fCiY^R3ii(i)X%? +XkZ0q-;X0@C4(G<8hF5IEVQ9G2+#c=sWpoGJ?n$|k3Ov4Lgc?rKVP~+fG*iVc1vzQG9C9dRId%+$@NVKi{=uAV_)Ngh0OQu$J-i8>DwiL5&m=!X?#_Jpw=IJ6lC*6 +>-XuSs+m-l<5m$R;JJQ#=#s}>wT36BKm(OM16(I`#=Z0FQNG!CIl*$>^so(P7rkI-k)ad(eHXa6Vz9j +{|tG?LFM_G(tuCY+ck2iuM3|Daj*0$~f{sOt`t$f00`#c|B5`;-1ru6&?g0{=Cw(VM2j_UNA+-_Rmq% +vwFA2O%9G;=k`wz5cD?IVuuWA(jx?&WJ@L!Q_{X3@V|jvpO&xaxL +>6-*qMxEmE(xZGTu>v1i1PpN5;1bFZ_1nVJuqNRo#zC1wiKfOo@R@Ts$=tiwff>lfvb*3Ye5c8o8)M~ +;1Acvy2k-eohsQYrsY_%?fp*Y3Mx#bUGO&t(aHPDe<7hDZNL_%K2zSQuX@vgbfAuhIYfQlDyhhqjcsP +-GKq8^&3PZuSAjFF&b`}Q${8*sK7I-ZZ>5I_SLHBDkI>NQ+1b}pDuh*aN1AxYZO3StJg0L-H=T&=W;W +90Xx7CBi{{d$Gj0M=Ip1JgM^BH$&V1Q^n^?XKE#QCB6a@R37stUw9(9U|c}%$FSSAt#!*vIJ|>@VdGJ +S6*Ft#R3;BMlveR1&hEoxj276@-=qrwW|U5vW8`062%rt8*<}1%zfNCnCi%NWY)1)t$RgnDkCh2pWz_ +06)Ty|=|n3Fglg3+VYU&wX1x^j27T9k-tgj%3bb{)H5XOZhILPeXb%YeX`8I=yn9cT{-F}KV)Hi8zB2 +Y&v)c-N0@@!MsbQ--$okExGY9xvT{0}=N%zU4_tG@)LGb4t2_x@lwZe1#FdNQoaYwxUH3!NAY}`O`h( +*(`9$?`v*!x&4!bh{cqy0CWx!8mc5B3<^W-e~~%>(i5okq#tte5k)HRB+*u!XB3Ze-{c3Q!))Z+we3` +7PVC?4hIvT(6ptd{oplmqQtc9@U)px7vo4CeAnIT6U@ul&OVEZ`n>xW@5uU#$2Y*LTHiN;ieUVQ&vyL +{v)tS%eZswxl!{!P)h>@6aWAK2mnS!LsVkujbms7007tt001Tc003}la4%nJZggdGZeeUMZEs{{Y;!M +WZ*py6bYEj{Zgg^QY%XwltyN2J+%^!t@2{A$7cHVyk*fd~1%evwr8(r#gJBS~H0xzekqSw9;~4($9a1 +k+-Z(%I9Tv;s%s1aWd9A&?SJa=-m+-Oo(rBSdpyO_L49dOiEB=VOHMZ(S^C0fYwi +>)tZboQ?Hd;19$*;(@=rA>v+M^}R3coZM@fW)frt5@m|FqWF-EP+?;T&8W+X?@{Xm5?GcR(Lw>@QS3S +~waDWD+@q18F*lzRoAvoIt=x5d$ZUPMXw9I9ivoED6F$>0qo@Wy$2drMyaF&bCx#L0K{_i*?<9_z(i9#?-L-R3rybUb6wfauJiqK&HBLj3@y)YC|H5!`UT*4GzAD;+GI9EYvhHQmp+A{+VR@qARmi)+4?=O8Z +#A^&ibtUatOMf`ys#914Rd=hrJen#bR~9p@`#%UWhuDE4J(+4kHkn@uGg1_HakTGh@F7d?R7uYv=)ydcb@$M%35uRS|yn7b-R7?IwS9C+C*=}WWOV*z-HZpK_AM +D=ad^|gBwb7H)~OoroUP~5`(D7R^$9%CWGn>Sh{RVCY4)Dd5zTUT?wy&{iqY{rb##J$Xfo5lS4E=kyW +yWjl}P)h>@6aWAK2mnS!LsZ|Fsm;Ox000IA0012T003}la4%nJZggdGZeeUMZEs{{Y;!MZZe(S6E^v8 +;Q%!H9Fc7`-D@NW6NGZ8T%HDgaqE&CJmF2=v+&Z@98QSLGcMKs3TdE=iqw%~qA8%}rF(if|IcJ~hXcA +#j6pb@Pa4^lQdB%I+;>WH4d6ZIrFeW7QOkm~+7(>AL7Ger-wnYLoWHEth8WbuHfWD2v3QkChkxgrIfk +|uF!(SyOs0}EO>_U?*vd8F9pZ)O^?QC~e{KO$iZrz5Xv0nX~I9u$5*LurZmxQj{3#nu94i%cU6AIcABw_A1!XlWpCFq@&@!JP$+tSH(P( +Z$SB2AQ#Lpch2cMAbhg$x +(OTWGbrS6HrS71QY-O00;m^MMG3tFmzPw3;+OGCIA2&0001RX>c!JX>N37a&BR4FKusRWo&aVY-w(5E +^v9hT5WUOwh{h*zXGMF4%wam>~-rWUAg1i?iU!qB5 +5(E|x_I(%1SCv$T&FV5WQWkoY+kryP=Xp7AUS<2Ck~)8=xLGs`{?|4 +<53$kh8L9?W3(NfM1lqvY!S#l^eJ>$4w{*WX{gKD&YyVW1cM +I2beh_vGX&_w@4X=IP|spWM@{;}d*ZWv>FHmKI!VP@i%c?&3~lj}rvJrKpt9qBNRuM#`D70+!jMa(2P +fB^-mj!DD`*nTGQfg1x_d3yViYB}sH4jZP9kd_yBdJF(P|x53yO9=xY=B{ZplKdQvXItO4$wJ{4>`ky +wuTmo4oxbA;QdAbk@f~T#4)$Z%9#hHm2V9iTVy(DaxX;I8NA^>i}v{Btihi}pv-whev4bEdhBkADw78 +r0YOVKSJ9K)jkYqzKOj`q39+sB=-JMdC4@mkexV#JQVrFD~zPawDEc>*i>%AOj2F*##qApo|PwMqr}G +t~2p8Og$h0{*!PxN9_|;&Uo5wc#aDfCUYM*m@z9XxFnf*K8*1GV9KSKVU;}UNn^923y>`qIs}!X*kFg +9+CKmOE>T6g64hbkzWbJGj2GW<)X;O;BQ2l!*d3h*~Qrfd->I?m|ZV&%~pKF?u0kvZqp;h84@~bU>#X +lj2nP;R~vy85fC!K9@+5um~q{sk_nx{{0_jY7caMtKF|y+Bz&ev^zjVbHJ}xxn>%JX$*Q;4?uo#0R1v +qJom75d{CRPY5-|w=!v*)es70e10rA8x2|8X79Or7_xg0RkxfLZaf`S{}bWDrco7vt|GN9cfRmz4js9 +u$l_j!hAG>BI(WL;z^Q=}(WmDx19#;!!4RV0aTPC!EyTS$B&Y)fmQ`N%(d_wwRRBY^2CLx-&Li%Ds?9O**ofdM)H?PM@+@W-n~OJ$A{?WzX=glz +)?AcA@uJv(#O{S-zc6^hA32A@RUbHR7KCYG0m_+e&$fs5yIoe#+K>SFRB&M7wq(Xdlds!7C} +F*ST4Q!N1`rh$cM{NNwt;1tI(&je5}{_97ch_7giwE--amEUu45}msM-hhSNgM~ +1jrl7ar)_{W^8KXAjPa*n?luNQJtEN|@D|MOJ&f}9 +iF^Tor{6CDM{^eZ1;x#XrH|h_v;Pj9Iw*_TwA7m8>?PD<*hc|F3#Q_G$e=#}5fK@Djul3YDh$31I@aK +N^c_tJ7~etGO+@i6@}*l!L(}`5e8zs}ONc2oc#5@PnZy8G2)<;<)n5E@k=oWx10s2u7BwUl;2t2lD1w +FYssi&_OErk&uJod*2~NRt?kvx&B<*vwO9dR7Aw&B9vHVy|BSQSv5rJ(%9JB!9LIA~ul{v}mcj^)2cv +hzn)F8Y!vI>S$#=%1ZrpoTHqIe~sJ#Odyw`po{Fnd*|r+Hnxi0z_%Bt1@Vlk^jJO207dx!iY4MdF>y_ +M!4cw~gvaeA|}s)-Ki#I{vvzzavd84O>=W$+OMPX2lL8+i9H9Ug7oj-7C3v!|3Mt_JI3IFr$#Q0ej)| +6~yg5w5{~Vt<@pkG5c5xwE@Lj)2S5CjcB5;32*Siu)lh{p&}ft`dZxOw*c7N$( +YoBuq&{X-P&XQM}_J9Dpa?M@GxnYMm(2qD&jt90STi=oG)GG2)MzIW-pGux&33*W*zS9H27Z-|044;+-hh=7W +Q5iB7$GZF$elEgZ4AWXT(V~WD~LO0M?|RG5pqmkAD?lsNB}cXA`A;e$|F9axuZPV9buAn-{muz+anzy +^_r#uS9if_r^Ze9*;{7j7=dS#wEeXCn6qlZLk&qGkFRzw=bnXQrqZ|>t=D>CIyFpLy0Ylr)&mc0$~r^ +>-#C+r+OdV9erk)-Sn2>ade1zkPg6<7;4AFj_3m@Y(e&v1NKWf$Uo5Ye8xzUzESTd-Wt?4VF#3Ez?tO +Q!5uSuL*X?_?Ip$Sj=lUW=+f?sUD76#rtaK=>T)DX8k19p#_hN}pUP*fxh2uIhb9%FZ_Y%hcbYPFLA= +ubdzS;t@`wm&$yS?c!HZ=GjCVGpkXX>9YD2>QqiInPtZ?`588?7Tqk +hK&k;Kat +Yjj+tqj(?}MQh*muOx?Lm3T)>pLEXA?t|xZdam;=I%O-9>RKP=EtpWJmQK=0q(nXo4)bLv?37hF0+y5 +L?OQAgAM2$Mp2=H_^6SzN>F!(Qq9Prb&mKkGb7wrqI&>`d4I3}CK9$7;TeWKR+T|xb`dCe6Ea-xy9W- +c|isL@n9QH?Fih7`5uv;_+aRl%YT6P@m?UmxdbKnQqabfiaxg^ox>Xq#T5=A^4* +7+RvNll}}6)2YL>7B&v0@Hl@M2S3+K|P`&sOSZ0QVx_w43>+XL~Jj&U+OYL1L)9^QZL1(u^LMjd2{~m +nx$x;ZCxG)HC2P?=Uzo94!#t$R?V#!#81qB88 +mhh75y;REj9>`1PP8lT$95H-W~uc_f&O4JPQSenUoSxBA%Hm7ZtQJv(uaaI86?5#$C1yDes7<>T~PQS +_DP^Z4MycXn2z~70ilfV20|K66w=~{)WL;^Z0iRlo#L9cVDt}-8yQ7iqX7VhASX&P{)w8lKQzJ{+iI`HU)Y=qD(xHc;$}wN5eYW +*2dK4$8p#Eh?Prczq9G=(Xqt}kvUDll$-;-{PC21{o?Cy#-NVw25Eu146?*@a>7=C1w6V0UBM5QeR%g +}Hyh@+WL4A;Botk$(4q`lS~lzx&mqBsItDWTbr$&L!0Fa9YN_`U_5IsU!l|y))emq*mMr50C)@(d%Uw!_U +=IZExQxk1pbHM7D^Tyrme>b>2Dm)l#-x&KZy-JdG|vDsxA%OcWlo^bq?5iUS7HD +C6=je_SFuWuL$}+9NOVl$1s-QGnZjWde$^^p)a~h`Effm#npnunIPHdWNn1f~O+18ar)TPviuqLC`g} +;3ewr`tA3FDoj(nCB2B?zjRY97pC@~ano=Zeb@dCS6rw%q06Cg#UFJ3UopjGHzF^Cstsjkn;?*@Ikvv +WD*lP*c)ALsVb{P(9Y<*B!_kvy^nXxG0|XQR000O8MnywZ8yxcLYykiO;sO8w9smFUaA|NaUukZ1WpZ +v|Y%gtZWMyn~FLPsPWo>0HaCv1=O{?255WMSGEPj_368q3wpoQ{CdGL6pkW(qeY@~H0sz^q=`FQ`nYe +y+bs*A=m^6tzuO=G_00`fi*12ShDP{_e4h=-6^Fh-P+6R`EPCvMIB1Hz6H6^xLNRE~j8kO#mchKSop* +Vll_fp`i9Y)(RFSpX9mFEa9~>s+?nj_=}gYIE6jpSrqJZ%60W%RW9~6e>w=EpH9Arcv|8Y@T1%Z|nYb +{c{7K;a4-N9K*I*Kr)Wv!6IQmEB}{^@MF%cbL}78QF~o$X3+N>vvA*QsGEov(b1p}LJHFNA7*AcOmS +HJ`>H*xfTi59mr5Sk+Rg)8i+W(E&TgoWu>1nwbE>sneYADGy07R#zWA8r3%Zx9A(bn-m#Z_CE4r5_i> +ghR`3q1>0|XQR000O8MnywZAXg4IOa=e|s1X1FBme*aaA|NaUukZ1WpZv|Y%gtZWMyn~FLPyKa${&;b +7OCCWiD`etygV}+%^#YzQ00sD7Q;DN}Cc22UnVg76L~&aw+|g9*)-5u9cG|N0RSuTbkeAXXN#}uPwAD +FKc-;GkRv`nUN|h>jG0jx?rvLE7dG$dpIa_XkTsjp|V~*R3a4ZLhZCxJ6;Lr=|Yf=uu_DD7M6Oc-laCbarprbd)DZFwRIW~lBS#0YL#i>J-e2|Wy +N)7D|xVlxLYWdv&Pc3JaF`sE&7v;*T`-+6JGd@acWB2 +Ue+8=GG@$mPFvlZ=c*W(mzDUN*M~9$Aw((S>`1CSjTsIGVQnBORw=f#`wJt?xz3To0xsxu&3X%WPm|( +-fe4fpyyRI&%_WeW_KTD7MR#0UR`J?-3Y7?y;C3fqRuDm$6D!p;5}!r_e>Zj+@UU|3CsuKf@k+C6zua +BrNK&ZWIH*~A!1lGv}lQZK(y4Iq(}%>*iy1wIXG$Ek+W;df;$d99q55>VREMS^h-VfCckC1m+>%N-sS +90I*%OSgRSohqyhe*5Y$dO0Hu$V7GAo$#+|3pb#*8LoTmdz_ObQ>ZVuG!fI+T%{{Xi+hJpZ%IM9!Xgk +YaJ?;Y3y#gH!M0Oi|FpC;BZl0ZTXQ>ObKb7dbzc!NBdTPL5B%~*&YBk$vWm>5^(npQV6c__A?lK^kfU +AGz*l+)8HKS_;brbp(Ys=#F@(*sPAPxr_HYtD#i5Q%q}*Gw9*(=y*uXbt=I<=Z#p9l)-%$RswLIVyI0 +JI)X!mjV-5LrQx1vDMg)$JUe63^DJRoo9tmX5H82c6Oo#P$I48fMiJX953<5=u`1pNvE~eqyj*F-Z?8P9)oyaLeiPlqeI~CHjH{_+>|8LCx#u +|A(Qq6mf$fW*dEY$0TQ2)~VjgFe`sq90L(9p(wO}nFIIMN%21?k6J)O2p_9hn*kAaSRz5I;}XzQ86LH +@L@$pd~Hd%qtM9ltz=y=c`#Z%-w=lOH;-ge>d~}PuLYzTTJ0!-d@gYxY0PRU|(q!)^p>F7ND0Z;UEoq +jYh*z<_`25d)KMR2`M83;zE*`p!|@^dR1@}wJGoyBDFkq+EcZW60${JV*8eP^iOJan1{lGGJFwihens +VI+tj-QnFoTpFaQk`FG!Jo1fpl`1%EJ4dhmO5c7g6q3^}fH_X)?555rHIO^v(b?m9Wur)>qCzO{9dgM +bUtA>pz4bY`1X=S5pi7Sa-C`Nn;WV_ZN`rl~t>|G(7ii$~@eCZRUr7V4W%q>G23mm(0_Dh{5ON*dQ{ahe|8OaP9`Ap~ZWPK!J+ev;iCv)*6n=$G32u)abO9?~sc)a1969Gpe?%Kj=uzwqEO|Lb3 +TO;4^l$bJQkN&GdX1C2ge2BJaBBJ*aGYwnsmBV1Gnk5b6n^U@@lsYZVTn)nLbYNhI|9Or13!K*bG`cx +-FN8*UOPecPaN98ShaPpGm=s{bi~hpg;5&;9)y8P@?B_^452~z7)?9tnPJ! +-^4cVgBkBBPfZ4Kknc#KjJyLho5t3pN-Pk<5v7*EHW0q%+gXY8d0rPha{fmIQ&wn6Zf%qEJ~#B05 +`Ap755HFbV?rCIyBoz^9H0(5vE4b#Bri2c3rxwol@v@$)SOYDi!;V&ET9KP^I(~B_dA4*TX<|(Oe#Ia$`hKb{e4LGW@8^j$ujjrLZdQK*P)h>@6aWAK2mnS!LsW`_sOHZC0046b +001Wd003}la4%nJZggdGZeeUMZEs{{Y;!MjWo%_*bZKvHUvP3|W^*oZd39AwZ`&{ozWY}Y*bi!5oP+%*4wlw>ECo8*w#5+5J=ePmi^I`Dfd^)txM8t37=_0njeilPmdR@$ +&F?z6gN-*ESozd?-S5vFLL9Ps@5TU_V^vc7F +P(6Y-(1|T~s&@z|>J4{KsUZ+a?jhqN*`OoXZIIjRUl!&R!^2mrWGw^UfxN^(%~HAIl#(HBP}wn%MPn5PESeES0+S!xC&IWu=1OYmtLoy=JC;Iw?Bui~OIR +DD=65sVk`Xiiz_sDgI45y=kpE+*<|lUiX7t1_qxf9#({xXg1h+i)C0u`rugjxq7K>Z%6jLcqP7|2*Up +_30gU8YeC%Rda{tWEL(O~Xe(14&(4HpA{gqrXWDSS)|tNRsv`uy=SO2wk25(O7#foEr28q;u6H~1RY2+Ma%Z{W`e +AG^r_(@mIDqnayN_i;95c#Otbszwsm_!8_v<8A~Vj^Cs_C!a~~WD<6T>8$W_t#a-bKL+RPRa!M^ZBUr +jR43e}eL^8z)NeUe-cif#89c!IA{Xp=>5n5)WMf@s`|T#v?J2|AXdgUg=eg_bKkH_u$J{t0n{BiA-1K +arr!R{CP)h>@6aWAK2mnS!LsU@(M`gbR000sX001Qb003}la4%nJZggdGZeeUMZEs{{Y;!MkVRC0>bY +F0JbZBpGE^v9hS4(f>HW0q+S4^ElZ9q$)+4f?<1#;K|1&VIa=4J$1TB2+=6e*BY40W;py)%>|iIS4ds +XD|qHP4UVJR+;wSP!msNoh?5zOAJ`gY1s~kj|&@x%Sd%u2OhtY9*3RvX(W=o`o)qWi`*A_!$+M=V$k# +{lL#tS*g9SXofXjD#vnD)!fUIRMNNERPQW&=9-$miz0<*VIBHM{nBLKWZD$QzizjZE`PD4jjgzn|B7s +CBuSE7apy2Vi@xq#e=&NWB!JImvk9M{bk1wnDDH&=e-ThyQw!@Q{xl_U=(Hd>udTqpV6*^<(!nZ%5e$ +{aqI3rkzShojg-90Ws+HlGp71#vT!$}N=9KX+%isXVa1vf;XNhoUbsHtKNk<8Ol5YANQBa~1+H<6 +;o8!^o;ge6+lNy6~4hBe+GlyZ-pG%b*Y?W+AooS+*VIolxbdJ%q3y2zDgC9i6w2kC^(Oi04E+4r8JeN +O{DINP#i7qDrv5&q)l}M2Ey9=^cFdHT>L +)EP{L+_@sgk{@7<|Sz*LI@Mi%^=(E4TPbu7{bju&%dJ +&pB$g@N|7AbZ7e1jmtyd18A%jX9E_6Au_EDT+5e +(ix%0o5x~ABi$|!=kRk)_W&b^z0-VTS2+-iK)jGAK1Szxki{lMJV@O1M5?3I}_X`E4>l5H*CZHF;Z_U +UT^UV)47M^{`PS<(GCC+2T_?m;ukS3P$WKxg~yI@7`w+zWE$)E<29l0-qX!M%cdhG(gAyDpbn1Z#$t_ +g)r77<93f&Z=`jwn`JlihW*8LXaO;{y$Eq!v2=f5ZULOa)1@V#2Dc-UEKqi6vt}k|7pZX*M*RGdE|8f +Fgh-yOFx5$nVQHNbpcxiUvP$U=N@^*{;!tX+~^bK3*TW%u@6V^S6HVYTyqAiD>?Q}hv5o?#uMC09Lp3 +6eKTaiZ2F9ha0(^?fwl*Y>L$+m$t=*rDkO!(X3Ye@MA`)w2O!?U!fC!#ok1h29`9xrV$xEpymFnZwNK +-zUC{?$cEOdMB;`%m}q^X)GXmT;<|i^!j-y$VHBt&l}ngZY`${>sKne4s)jC0a>30K%GpGozq|7<;G{ +rNG4`$9Y;AoNwKMrL{m>=XdK&AE-PQ=6d_RfqUBI`|EaxP*bR_&7!ehao}{r#7T^2W+t|Py~Kg5MJ{o +xK%jXOR+6*Kx_8>57tfc9ZFQD5_M=s(kiz)-V?xP+IIREUS6B$w +~0`VK2~n9iEZ^w)wuhmcn?uh+R;@*hx30|XQR000O8MnywZC+So{&jbJftPKDF9RL6TaA|NaUukZ1Wp +Zv|Y%gtZWMyn~FL!8VWo#~RdBs<2i`zyN{qA2eD22$aEhnXcV!FGebOV9XF58fP*xiV+bZt)~YsAdhy +H1+_-g9THm#u8tQmA1;n){e@&wXj5D7vP~kfqXDA;tZgs1Qq4kdS3ADx-HQCrGl4tQAfRw`y%DPcdtW=e +xJ1TQ+l1gUp<%(T8xw5tK8@cN0suFHWStRt3QRS2_8_n0{P8KTvog;jO02%LSG|CEz!2IcaB=7^?mmM +A$zCZUzDIcYV#2JD~GQFwr9(y_e47A_H7gs;9^BtM<`uRNh=3+eMH$F|iz8H@iqd4}0#a0#h`E7plZh +FV^3x8Vey+Lg)7pi@!3hDe?8q#SZBs!dMVH=B@NqQ@a!jISHy_sZCvVgRTSV90?d_WJxa#$ws)BGgip+I7rZzMutk-ujNVpp#DZv?7(z- +jila1|h-ljJ|3uu=)1nZl)h&EL!8e#?Es<}DJ2RkzEAB0ut*LYU6A`bStL%I>TPe5RF1U7Q)xMH5^vz +7cE!o-g=P#Ze#f0j!=%PW?kUa|8JMd+lqGbnNcKfh4d{_!LkJ!*<8J!Qg^ +=_OJG{O`R=B!3LU6iJr3_;yOu99&a50=#O6tehnfTbNOw6VN8Ne77Xp?Rqn_wR_ +V`#)M4*@c9HS7jYXE51q#q%2($>||QaUUiWtIY#kkap+6WBh*(cA@VH_`H{}rZCSAyQ_(*zQ32r#-Ys +C3R9h@m$zCetfn^XfD=S8vZSq%R|t|GCiAQFGy9~t?b+kxfxFbmqb#u$x{BSeMEC;U{_6hG +_SJja5Tn*&p&9D2PA%q9|G^)$m++ucG7!XUR)er$!GZsCFWBR1VNJd$H +p=bi{>z4C%%{5x8}|!kS{v779nsBzA1mI*>&ZC!C&eqamUl>_*7e$r5Q(e!OK!p#Oz1IFhoJbg(QpKY +rcDH$QhCF(QSoKC7O4Ch>40fF-X~9E?`6`42z+sJ1g`fQNn+$eO0ZO5hagqeLU4PS!m3S|D%=nwUp1#N+?oa((-L_&0dJ`@2opHEf)ot^(d5oer%3b7< +GVLhE9v!9W8K-%b+2D}ThJN8lg~xDIWhNB;9d8K9BBGW*OV%Hk{j4~@6aWAK2mnS!Ls +SkQfl4v}001%o001EX003}la4%nJZggdGZeeUMZe?_LZ*prdUtei%X>?y-E^v8MQc`lx&nrpH%qvzXC +@o6OsZ_{IEh*10%GL#P5=&B36iQ1nb23XZQ;YSul$4aX08mQ<1QY-O00;m^MMG4pJuXs84FCY1F8}}? +0001RX>c!JX>N37a&BR4FK%UYcW-iQFJX0bXfAMhty*o5+cpyZ?q9)EaH!o=)D*Z+#_a*Qv}uF(+FqN +YAA*GN(_{qLz$?HA$%&;M1)w#K;|R`m_5q!e{qDc-O{H*r>rhO@mGSHmdo+otUgtR8uT3s +oJ`WUwlX0@@!G6MNQMc1Hf|#HEtOD$BCfsyz*2RBRf%uH6+wHA=qPkK)ACWk90#{mcH6voG3On|7qj{Xe7deRDF}pZ( +Qf-)c;Hm@>jCG0ZPY#io&3s3lXea5MkwHv-(G5A#SE_YvG^f0OLa{x_(A{z5#LR{TTF2gTm#r(cev7|k&I9_W21dd}E0G%UVl?V%SVe+R;VZzovw){ +*#9|A($pNe0gh9m9EXuErk788PE0`^GNNN+$2xVE_kdz(14#w_)7T+OogOEcdfuFKc+WF;6ysl+)F!; +d^aTc9Pc98g#Suj)9W9&DkVTJ13sJ*s$mS3{RYbZp~i7F@NN08jTMt)C1E_1pdw{c4)!U(PNpm0?R^y +?u@e!o!C{KSB%ybxWCX&&VT}bwQsjxBBNOlx4zO3y`pD7^dhkL5N|+cj*Iw(pJR3VQmL`sO^Oo>aUXP +yFus#Ker*k);k)Uu&c5PGr7@36LyHPkj+@>@gm8-S0KzEhE+{LW0MgTQz`{^;D597(B0n5hI5N5U={$ +b5Fh0oJuH^0I37dC>pSp8DK311|{D=(Pu&a9y+x9zN5#2BQHQC+FxAF6F{*9m5$MF-k^ap%>rmR)n!F +#rps@E>PZOrB{N|X?xA&{40TatHskP+x?Ks9dJP6%|Nx8nq|Yx{eMso&%RAFE*EZ@>Eq&)6@3a&*8#J3w`rr9oeyD~?$z@>T>jcV4%IPIX_k +UA5~#7H7`RZ3jVXzlYgCMppM6*EkjI%|0wv)o2DXCsfoCIJmD6Dxu|Yh0`@8B0RwFi(w7il)c;|kMN9 +;v0y@nUkl>6%nhNc>tMV*im7Y#FEa1_dt{Xa82SD^-GJmpENeQnRHDRz!~jTY_9hTa487PZac%5NCnL +~UoN3U8g0;knMvN^WABg6f6#MzdZ`r9*^$|6M@2xCAq425*QR`JzAK@W{o#q1m-=Zik5MO&fYP?D%ey +T1^!_ex0*jI%Nv&;ZcIBKPUv;TJjMc_DthX@C6;i197upDMNtCS;3`&dEfR?>$jZF#epY=9Wx>~7>$b +Mf|-@Px#XU}8l*-N(fk?G7xjue%9(vT)qS5p9-)eWL?uVv)|(LGWhTGla~&nEED1F~gAO&wKG)zw=aZ +j2w8~?ps)Kck%8~P<_)}lVE}*FvM|wF<)V-nQ(ItP8~+RZ$E(5E`i#Be>h>A?39E-$yhDP&> +5fnwBrr&8z2%`oS_V0YsTslq@n;W3If-WU5vY4qX(vCw#MNOav7OymON+9B9Vnrck1pQ+{F``(*Gy&EKElE+SnR|0;1`@B$v|Q5!hTlHN&<#vh8SqfNGvHW2vqBd@J6%%As^CA +NIoR$LII?ch__54t3@em1G~chyBD|DO>WV?uMnEW$&a`6Yl2IxJvPj%Hjf``_t#h_a))|GuVbxFhg94 +Sz(1)ll{TXPM44=k;ExKNM&XEs(Co3rUU;yk(P?I#VcbVa$Z-Eu>Cl!`WQeeLvg;~nFviUkErWc)MvJ ++0X2rf)1yNJbC(t@U?c=gaZ7^4WTRD@$x&hm_BZ)+Y+Ww@r2-Ks;ccat5dM1Hc`-Hf@FG3-aJU-DUti +{rGv&d+ls@<~sQ97TM-j8VAt`$`NNCoXt3%U^)zyru-j#vWHARWD=OBMaRS|CKAS7>{4Sj406xHNcUO +^`Rabqs30SPbkmM%6W<*kM0BD!^(nj=WZMk@C~7Sz*R<*|7}CBlJ~1oL%D(MqRoIk##ur!in}=VM +zRLoeY-%c!WKKo+;S)JM;p?IsoTQ;QRidy-LPUejEy^EB{AH-pbM6tTN9D|BUI+|Yvp&rWrI&^t5xHV +J}nlJ +=F*nCE{L2MbFqP(ckk?#p;hCm5v*iPe4paz~o7gXF`Zrx#XZ! +4xb}ppZiKI8B*iiajZrc_WPE^%&*cUbgh`ZvUrq;maq@dDb +hUj6IZTq#dB}cxpXaHd}HB)wzs8P&QdnLg~y}G(~2x)4hA9*J9Jues%Kju3u3X1027g)FBv(CA`-((r +NFBpY9EET!<_@1Zy?nF{l(`%(;S}1+a39#l?rM!oUzW_Ab_)431)r?^EWf&f$8QMgr=%CX&$AEr!2-3Poy>3$tE!Ml1=Xl#rIuh*tCoHs+63104?=GKxcMBrO*}Lolf3rTj-5@N1Um +-#U5AiWl4qJa!C1;<0dUvkIgWTeM8XGjtI~p~Afi&885S9>mLHY;bMNXSz&{A4*cucNO$*NvU7>`H@C +8Jk}Eu)wY2IGQCCO{RA7!@5p!#2B`WT~$g{pAK1UKAsaUBx_CHm_A0Pzrne7l1Y35ZRuF&R0n$GSB(& +XA$9u^l=vS%_Z9k_BWX@g6l79y|*+|{Ac2$IVPb6JTZZJz<6Sjl<;fTj=?f%T-}f(f%vuM>n1)|h&J& + +iW=XSGyB9|u+G}_kVNHo@6I2Vp~O0Vz`ruA54((LrHSh;Xc_K=8T1ueEvsM4T5lGDlFH0+f#k3dF3%X$c2v9RGnrzUp>j=VKRgleu|cu0}&V{%F_StNx(A9S6n6C*ZK)5p@rl&pCcP$V} +9r$fHp%%&9}3J6!1q8bJ>Tn=+s>_!KOKot9Aj1b2j-I6tf^`(X_BRXJ{-K +*$ni&Kp`YvA{6}e~-jtAEiUucF0@0jPuO%PhD<^QwfWD5L*_p(T6wtGMhUtDGYKxjK$J-^rPgQeFIeb +3dIcGm3v#RFJ1n3FjiySeT-AC>$JRTHoiTlfcfjN5WVMDjKYBgQs20&RK$m<-~tG^RjbHJCXHLiHny|N{(HubH%VJ +6ae-X&;h8t{<~=)ko`3xD<14hh9T3E5B#x*&_d+X{<$0cE^if+6+GV}fBeYt1{N<%+Ag!b?BUk(e?Hu +J#MyQ)}#3zrIdu=QDVgfRk*&JqsVf6u3r!9*u1T3p1Tlxv<@3_PF;ltk~xpUT)kWXb<{5hfXj*YrQxn +z7pXS8y-ZB7t3OAWKh3+Y%-pzh>6j^`xa-SU=3R{PP^VYvc}M$)&ZQAXj~b3Q6JS*$x@vn=bd2jS|FS +VuO6O+D?F?n=0L4UN`vmjPWC{bUu~Ac^Mf5??{SqU04^aY?CE;>`oOLP<9nLx~Q%Ile|~wRJ@-br$dX +vsSpDi;^)u^>9S;je1TqXj{q#KVUKvJ*l(|x0CbW?u3bJ!4+I}V5|-~iNY)gaFU{5!j9Ypa8$gJ*s*i +rc=z@+cM`6XK-tAN{MDlI@a6l5Kwyn9oJwU`E9nm3d5?=Zip5;z?p}qr5X6Lrmb=92IEZ#2eZUa{cny +<7z(b%K_y+o(TT%i@O>AjqCm8uD!YS>c!89pBgg{$3THyn^m0NrWlGNlG;p@6^DEn#!+=25p>JsEw84 +@wH+rrdls2QTj3z6ZrtsqM3DTJ_mK_WAtElRd@P_9eV3tK@hSHMl<#6P*na6hE}6(4bJo$hPr&)_PaE +01?_+-)-!TLfcuuPSJ)o^A#Yw6Qek$!^eQk$W0%!`r(fx1GCa^+?T#Mo8gL(SMZ24_b7jVYDO-LtU7u +k)qvTjpzrRtQW3LB}n0XF(+N`UhPYG3D@)Meu+&RSUVQx#cs7w#r;8 +7@FD`1>y&B8X|i{?@x=Lfy>3n(-F~|P{6PIg+=mJg!rJ*!P~em2!3wyIOHJlrZnv@{)%V0E821lb;h%6_kLlv96g>ykBl$8hx(EH}*D!}ZF`=G?;{ +c0D{sCP2qZB<06{|>bGei1`A!Yu-5dUE^G!BcSJ|uS8Z%|7E1QY-O00;m^MMG5KyBnzG1^@uA7XSbu0 +001RX>c!JX>N37a&BR4FK%UYcW-iQFJy0bZftL1WG--d-B?|3+cp$^*RSAI6p%JmNP#^WaDgpNmtaL2 +H0}m02n1T9Z7#B?k#th8=zrh6q)1V=VmH~ICZMQH@qQnkdzm)AlJ-m-?Z +L9-%Ny`;;o4G1*Yhe}-NhydJoc8|k_S&u-6543qm*f2Gr?+PxuQMVkSFBhFStw2QM!`x~m7-j2nmaY7 +(x}SUT$N5AC|FZnDE>D?4HYeQK{tA31KLOcjB0DH*=HR^2tp>w)S)qllD;=m$G;hGo+et*=(Q<2F@R3Y!B;>5oMmk?H3W!lRaVa3KM!%|Av(&5jHZ>v^G$i +?r)*EKvk&$27wtJhwp)s%No`FlzFz0s<}w>n#nG#9zLW{(1&*X62^k1G`bHIdvc57_0;+hnSRg;$v-j+t)k#X;_%m~H`R+q+#1zE$fhl=M!H3S7W6>RvZG?W +L0K0-Sxe4S3pnOA;A5X~lo7+hD-d;SQ +9*i7l|HPQx<{{0Hcp4$v0`ro6PZ>G)64hHDTkI+7~zgd#;I?!}OUp$7QhMu4p!|G(~piH05%JAs(oBc +&0;>y(^!?Dv*K{uD>oIus6g_NYroI`*O4kTJn6PpixV1DEt1Y)TGwr1Dm?wQKsY9pFg$Lye@;f69 +1J=>P1H<_0mBI&TIWUQ7QgI2?A>aFq0WR?jMlwbJJmw8OJLK6oX=)go-&|8(7HxSp40LUl4zSMY&N4@hz#TmIM( +-|y&6IyNR4TJ{x@VB)uZajCjT7j0YI&VxFb{>LyvK5VCO@lpJZeHJp%#2dr75D)%{>~(r`a_h%cteDkn(%VaC9Zc2KUn!u%jIO8H%R36#xnp#L=%D+l7NRR_3jN*9NUS^4CT6&Na9tE +hKNGNekp;i@6W~9N%+k1QvVzn4WS}%J-1W-Gyz@QOhleBh83i7faO%Nh<7hbF!@-A3y6b+%3v-#iF}) +DaNAFM^-1r?=cN8|?T6%&DjqoaSM@Oc{;q@n|8ox9X3LSE228zhwPRMdcu-HZMB$ +=yGxU-vdO9{jQ=}HD4P5g$anKATIk%yIuAGpvD(7l!1q6=uM>N>O>+PC9{fL$|iSqzx?qMFMSdp+P@9+#{(pWb$fN^88m-bLRe}L*RJD2v> +-45i}(Z1t4+RPL1?sVO|9V+uQ@H5rr>VL)sLyt|7)ug}EBR$;i@I&vO-)7mua>)*J+#cZ$H6#ypfISc +>9l>;t4q&oJF1E7IA{cz0N;3F-JJH~Clx$4WjuFnN)FUJ`y0`X!;|ZU1KbJ#>!slPGloNk4Q{nR;uoX +VfWGv(Qx3HFR^(b?NyPm^d_-r|=t1jwfoX67WA5cpJ1QY-O00;m^MMG5Ccm1K;2><}g9RL6$0001RX> +c!JX>N37a&BR4FK%UYcW-iQFKl6Yd0%&EWo2wGaCwzk-EZ4C5`Xt!L1-UV-jju7AARe^<FG6 +bsY{1X`kOHnOB6sV2^1|M#02QW7Q0Y1)TYmgf88H$yfEg7^ISz`k66WYssJ*t@&Ck3kU3W=X<}B1zba +tpj{{%ge2}75{65HlIt~)ODqd$byIknbao9RkcqZcS00Nql(~uHp4e;Beh5klY1n0zmh`aCTf2ux!oB +{oK~d~Po|KYmchN*^OA3cvQ$Rw>s%J1rTM`3BD)j#gR8?^_~PgewJf(S)kS%T*c+LG;%g%mHxJxeIeg5#@Kra> +hLFKDq>qb1M(lSxsaXRm$t{Qi_{G}%GgGmuEDkIeCf$*gy0XG^`bE-64)z9@CDw +SG^@x3Kv|*yGn(dB3WQoO@1(G)cxxnHkh0w($<~nD(0acv^TnScIhIJv1UWz}-0EZ}d{`)A+jv +>B4$J_wApqLP%-UWQlxMt6}4J-cniM<7*mEhTeqJX%BO{crAv(YJq$TYgWtKeUxk31P#h=+*&<{RMPW +d@*8fLe6R2C;(o*Eg(Im8sIIh&yhZt(D&<;d35i*+gLK9OVPDKn=-lSt;SEy~v^LTgYM#vzU02fH5SN +q<9PvHV&OsegkC4$WOL8FzlWZQ{Ee;Y`IN$Yxrn;`3PmG*5~uCi$mcU4<(oB%CPgWY#PI +Px`ZNoP2Jj?FkR(aME-_jZ`FDT>5`$otXh_QvlMBUl4C^G3Fy}*6ioPLsP};!YG8@fHjk3p-_i&B55WbSKh>1hyB541M|+U|bC;KXhe`D+a}f>J93)w+YJ +qrWSUl09DlYCodlP0ibphx9IKxQ=m4%DQ$#AC$)X#P!Z7R*tAUv(JKz99P>S;sILZ#rJa@*?0Zd{swx +Jm+{^~F1Z4^VD}y=BAx(gdEdtqj*Li)Xnn^qGeXl$%0J(b2!wv@SOZ?tJ;6R?|kd<;WYxFsL!M{J9W3 +3*v-!gqCl9s4<2ghk>k=dnhJ+1D>BrjAuilpXhZ_>nz*TUS=UN!5VcNo=zS@F5BZJ_1*sM +DOTmUM;;XG4mN$dBpd|?57WPGEmqA{W)@@o1MSU|fxsRzyimWppZDX7gP4k}t%oLwFFFYIi|K2h3W?R +Tbxs29BBO=0Fx+aQYRUDXsB7V+=k&p$l@=Sz0kC|mfJM3 +!8H^4m!E%I1WMa=a2}A=8PqeAqoc|)8(j{I2k*+TH=*Ru?g^+Y&P(VAGM|V=4N`T5k?@)Wmw8qN1pNb +YgIx0R0L04Ax)PIC27xwTfY=`3Grl?YP(q$W-TEv0XRf2aDRpn;}`+6{jx-Ui@hD+)}iX!XY7fAlQm-`dDyLof7WdFgn;^@+aZunqsqz0-br6u +-Q*CoDR;F()h1?hyt>4KtXknV=A*z~sO>8=XwT;K=+5Bq+$XGqRl2HQ6C +IB5X@rGg>F5zL=~^04M0a;g#xD6i!m6zv^**IH1lGB?kzpI+dBF)Ba3CN#dbdlxM2+sY!4&=LL2GW-lp9iaANltr{)hgK1bN$&2OL(` +^y40mD^|sNdG1~FSQy6>${HS#${MgpLTiigo +4xFJ9=mI||N(toi~;ZR~?)^^Cf>O2|_lv8uuXO53<%*cFRrltJ+X#N&q;4R#m!uV#4(@!A5cpJ1QY-O00;m^MMG4bVHVw<6#xKPK>z?C0001RX>c!JX +>N37a&BR4FK%UYcW-iQFLPycb7^mGE^vA6TkUh(Hk1FZzXA_EH<4PIcG70rdPXvxlU!DhMR_ku`Hx!aisr7=x-R3&fm_N={Gf_5oCHBInW!xR7jhe`EUYV)X*Z +;b=G!h#(-J7Tf!}qJyYE@CUIP{PbE~$p+V5mDw`jiYvbb6m<<|Yy8``h=RWEmCk$Ai4ee<<0vrH|+U0 +iDE#vbF6XrL#nve*jjNd&Ra&h!0Tyi!Ru7nha9>5FnM-YSjXKgT41~AAQMh`Mii_$^2#MN_)*EfTiVG<`BNf%WXnOk;2V;5%ZJdJliY`D%q}~-d2znTTuF5*8YTSK$2rVzMDA%e|50Yp+TyMz|f&jTph|IgfqeC< +L9;1g>%cn&09W|TN#tE>oNBGrnKzmVcUIb7j2~ZSy;8hNC;le|3D5zV-Zu(kQQ7Tt)omG*{A5>Z7TbW +m*OPQo$rt*8Y`YpbXO|_yJ#&xxEbAQGb>Qw<@%W+)%wpKsit{7e$`!@gYed6B&-}&x#KMRYX90GntTTlBHNU9TnoD-}2Zrit>0Xqi8mnTr*2ul?qcZmsP+m +7=JGK!>Nf|RtmS+n;+cW-A(uo)_GA%r;J1yD=ky;xRJT2HH{n}LxyxE)8kE{t8n7fR=83bj^Tbz1I3U +6==Zpi>!RE*#@QVxPp)5IeEje_y83YW)8)JCGgfW4{z2|=lG};Ezas&)S`|qFMMoIWxj|VF%Rat|?}0 +2+_hN%j`Ap;XU^|MHF#C&wVQMkGmhwz&s%m$3aA#cj#~z=ZJwJK=qW=g~ly19sU~2o|2vPy5)3A__@m|}5gmw|0bx|~Td9#sP3g}4TX +#w#NmnvRnP=Pz>K^o!PE$f_byv|eb7)>f_4ImenWVkB1)u9k?U^FDewE+U&0foIu5LJj+jeSXG-88@< +G*q4{;)WEUfE)xo%Z%m(!)cL#lE8%J9Y9uYGhAFO@_M_3_#M%&U9qdPxO98Y1!iY5raOijzy#WR{LCO +BkV``*kFuO$2Srs7b3Le3nqygf2|vOC-bPkDf;!6rR3iKgeX25E!C9f@@AvO7`EWI`QVhAckM}|uoZN +1CQL%O_<%TTJgCu;2xLXpwWt`lvOWFhEbsVa}qH9%c>Luy1lihw7pFn$@D6Jt(CojMK;fKk^W%T;pFP +9&#-u?Xg-A(k%`G?E%AK$*dhVV=+8=e0_0sxmxLg&M)q0!*SkC$&>Mf`dBDsUY4cbVTqO8hC_)AQZ#7 +r7@tpl&O0eC2Beo$N!4UDY7%O0uCYl{UBlTb7FJcK}pxb%LFYmW>)vu|Kc+2KsXY=N|6@%vzE1 +CbT>sxd_kVkJ*_2%jYU=M#Z-pt&?-!&V+>7aGYe@clbC??1qYrcc*tMhkZWdHisizBvHPcm)P$DfTM& +f}p0I6^Rs +qouA}K)-453SX@@>x8{WW$B-Z0sNPyCQ4f=w&L4zdi+#HWBT#+LwBOB&JoP8jk0sL%6u^==PR(sSq0h +i1ghp3c0MrvkT1-Aq_zx5X9rw1s&)uzojDs&AIqxmX4U|KR+~J8}2am^4 +pb-Al-cWISZ(}H;eM44aIcx-$4u|7lT8gC3gz*d-2-tQo87@01bbLI>jJE|_$CSQ_UBajow4jpWrci^!osHidaDi%Bz&7e+j)mNhHFg`E`AVIhX@XDjM%gpw0xQhQE*!k4W_6cU_;s>?LSC+ +?0hV)1sF#^UKrJl#IOn-8A

|VyAD#lkSCs~L^O1ASx-e#w;Wv(E{`-*xSRY5m&V))Zd0)l~_fGS>a +_!TZcSx9p=!?Iwa~)j(%#h}JaMxVAnfhghOXKoU<-v?yzGlWYw#T|Xz3VGpZ>!e+V8PXO*8+_KYgK=X +4Lb$XS$CgM%gP4!aQb-)z<>HYYh`x`VhG&o*1rJVuIO&ifEn(9({12h_IJ1ql3m>e(#&jt*tpzZ>(U^ +U89An72;KtzO{`*-Ay +Cl>I`b;qTgwa&xq(xa`>tp)jHsxqT}_m0)0`pu!S=~eo7`G_Ar1`!q%Aaft}GWGoa>ucS08WYqEcH4X +p7VE$DpTw7GD7@4X(nsIW1u+ay6bcdH+MADm}L9x8*Z4^LhC4MfhAy +e^@5pC*QtUF2#$}7tfDRUml59@5q-!fgqcYteg_Z}fT%Rhq?j6bGfFO1gQbS&%sG8_>z*9 +3SA|34yioLED#`RYi98Y?5v&k%i8AI00zpVF-ozQlFeHz}eTaS66m(Q3zgOCXzZbAjpmm=YkJ`q?v}! +3i5UBGu?n0cv+qm$VBL6HCh_wwEl_y1>WHm+2U~CPM#hUX>7jyAQfeN0v`28Wy>Mq)OVZoS3z(?Km^PecZ; +;*mHZ_ZmK)2{v}>ZO^)cs0K!ey|sO;<-)GbazYEjxVBE6I-DmNMY9yb7&@leAv+IIBT2oIm7xWRP +^>(MH{1hq@3`&Iyy_g1bPJjh7N*|R~bT9XMK{T`u1BH}H2JsbdDZ%#U+SUf9UeUmcCPkizA=4Hk1P!Y +e8Jqe)8}u`_w9-vwq%ml@)Pi3oPyj|GB#(!qe5XKtM*d+Mk&^%q?wXa;}zh+KG +uQhg-3W*-hh)Z36ZAq@?zi+tQG?sBb$NURF`#iOTr0n!;;*nSHFwsHrd}Vq@H*_^V4Myl+aAEK|z5xPo#eFn~!A)nyTbZw`4c0U?(CU +vvi{8e%I{w*`6Kfo0htogz+?qodP0npYF(}S*8O(-rldRB^#mOu*1HPy-)6(NfqdIxclvE~bgRVtk2g ++$;SG@5`wNvlAr;bU9MMmWv(#ljwJ?j-t+ow=_pZ7pv{5oN-o=nx^lipw?3CG}SLLQ=93 +1w;Tm^@v3G=51;1ch?5n(r82_K>%@$7;dtk_Em6rpQuFaTWqd-4lOlf`_=tp58;t(a4B>8cSa7^wvUs +k);CVO+^V+qgabyd2GUb5Uv%^g$@_IUx|zHGhUiS)d4sm6-HyaN=rO&E6B91Pm5HvUpx}$s_EBKs9F> +FaTAIR~e4r+V7Rs&wS1dEhO+gtffi?gL=8{%1Lxr8&4+*%Vh%E!#a*iX^rWi6{nPU+H$!Ml`y+af`-cv^!(k^4+5S+S&U8U +IZ?K_I9l+A0QTc!GQtTS#SaZ#710(KmpMbm8J@jfULz9meB*Y!Bd1~25To?VPD>iui0+ZwdqF?B;&GG +1tJq$3Z~%OE$3)0<`7sVTpDf~#^SsOYZE`nurtO`7Zz6E-8&aAPrtDq9_O8@#LMkjh)l9QyuLWsZMgU +b)*qt~Ow+i~gVuHsiFHBz4fS8vFajy@ItQ(f@jmSAiU(j2S;kop7{b674?xxmJVt&jRiyEYn9_hioc< +`E;kwoc*ohY@v)O}Inmew-5dxedOx`!;`vG`hc)pGQz@e_c8LobDN*>7M3scwqJo8bgXb->j#PZFYisH#V7X +-%#pZxdu=$u7^11)XryN?YRZx)vOR^+9%J6=Hhzk%P&?u7=(%4>){NecsD~^vHl96X3TCwcLmRM=ua& +IuFl~B=tflne5i<~~L@nFEYL05p5t=3f%v0KR0eH(nRw%1ymAhGKt%*U#G@vv`&-N$aX9L%v=D{*Z&b +fZ^=sFkpu%u!rmxn_yVS34Y5@#1mbGA-e8u;qrh-E{SbbEOX{VT!mtinvEYO@G{R_dvvLe$DSPF->CU +*DLcJP4N<(4x~dIOVa~Fti%E`$M%TgAlA{BF(C3uR?~n>7qrSi%ba#mJTom>kcF +eXh&6&&WA;=_@vatj`ABJ6qgi@=dILEI83X@{50d=~`I=u#=Rsm3EFT~mbLy1rH=WpfbZXS)QhX(D@; +(-tOYXU8%tlU4DMW1I~Xr>c6q;mQcOFWTdRl;t^qSNlo;?ybow=;A0gb&AOLt!166~?aiOZCmwT+9%{xb=L=_NmKk}nYN>X{4PhYDc0P`D~aQ7RW40uGBrS#nQ4NKU6(wEXX +Yg+nZS@Jz4cPVrRHLR|0WYvaQMrVx)~f6UfIE58MO`kcEFt4JvGXs%fDv7(6H%z>{0VBz}Q2A>BV2Z! +$H-2hY;IUlWx*dx~A>s={6=myAvb5V$V8Z{xwC4biynjkcxSn(e>dcQak2uGLn4wNKv>;fk +>TA=|&#$%+M%>~bis@x2!@0PkVUtM}@tV?ke%!~6=F|*ts1+WhKb01`BVlQJ0fMiw`SaQB@$*jJtHU* +vA2Q2LnZEOGg;?&n7;b{(vZ&Xb%<^MIXaXuur3YTlm=h@;WyT#p)Wkx@&Klstb*@|T*_Q$-I?D|=zeo +HXui=ApTY*blg&kS#h)yG}V@hH+>Uy_qYzM3=wNDKjcOdmGa{oU5w&=q)Z%p>aFbx`FXuPSSrSe*K3r +T}YD*dAuAj#8rZ$gGpQugcA6Uy0Op?e{-x7H3%JxX-f+T!dl)ONx3*|8p(rpcaibkJE9v>%r8K#w7aJ +aDYEJj2#VyewBvKeG(H29&LS9=-!(h0t12Vd%X0z7@`ej(h2U(zcC^+6I$ob&ilf#dVa-)x!ta|W`ot +&)ON?=wfaWK6Tf1lm&zAKJALeG`qMmryXz$VSpnuuoJpUpi>i{jpde#Tr_DR8ZBK17GId${}K;@i$De|&Nnr^+U_b_KsuXpxhxi6FVQ`t{CQ*vU}YP{z*hGDvXKHR+59xk#1x7ws-KZsM=TrkJRcPT6ITfD?a=0 +q1?wkjThn^L8O?`Vgy(6Cn>Owh3Pxq6e*%NwM7`=n?y(W;emiB>g7i6z&5xzC9{Dpb3 +BqO{{S%c!JX>N37a&BR4FK%UYcW-iQFLiWjY;!Jfd8Jp|Zr +er>eb-kEln2{@Bq(-#6XF7??bb#Cw}>4SXb=cXawu&@a@pOb6(#V$cV?G&$#IkF!Irt4vuEzdu~sSAO +)j$q$TU~l!j%l|2yQKEVU->XVtyr;`DFfxS)}wt<39x&YbL3RFfoJ&|GFN* +do;Pq47O2ZM$nl^CipqT+)6sHAnwqvm0n${EW?mbuC-_dhts2Td~-HEJ3W +en!=v*kIt!;qlff%O`V*lr2=7AXKfcaF6%nf$$cRWuyCF8jBEV4aYgM=)!dMgueX)u_gtIQa$u$~7M0 +FW2Ga-+qfk2~J873>>QD}(-u3}h=jUk8#bIJ%qs0@~B4VI#0P(PvuG7eQ1%SE9vBHA#9dzDtl6eyV_k +SQxeBr{>1Z7dTc%WTimeHASkB>sdzz(w5ICMX`Uu@Z^OuspR(`U05d#FlbtDJpf8zK;pPQUsz+J4SSe +WAZGE5oevFBDQXy!QzX|%WBy{MX~E87m;o3(!o$P=&IUtD^_&cgoH`&HBYLXl^XVxeS}-`iBrspU6Jt~K_a(Hz^TktS?v_2l#}cN%@b)dxVe6Jb^ZQ+=EmbkWAzB=$0xXeu +fyIT7|vi=Wn%a=7!0WKK?`YcPCVzv3R{?cZuMC`AP->t6Wmep&IVKuu(URxBM-lMY8G_KaOj?sOVY@U +AhHl01WjXM6xCC(v1kswIe*-k64r7XvO^rShz6I9$7d8&O$n_6Wm-MZvJaO^85fL1g(8t(T**ic{z~? +ryroff8~e%Q{%!&IN#brCQ6)mmZ4`)b#hB8l@!8q&`S`WZIUOl3yOw=b#b#1Jw0hIH$e)tS1+;=O@xJ +a4-POZ`+Q4rd_>f6HzjAN674sdK4et_|Rv2OY4Se+%Ke^BrI&n|PguXrvYp{bs=>SnXewNzF|D|^CH`0$#BVyefTY=_=dPXtqca28%UcKNi2 +USa!59i^s$X3RCQax;1a|G^uZm0oh$5W6mc4(b}>)=W?eRSRU$+H~}hrgCXvep6(c&^nWO$*mSk+8zw +W+ub3r034SZ%NTgi +S8&)ctMqR-tO7<^(r@EBSS=CRVv7F_g~t&e=!MG?21(ylT>YKYl0X;%1Z6pG2b<@n&EcPZHJ9S`lrxM +LB9;WM0jUO%mjt)%L5v~q`e}cy)Ydol9Hi@6aWAK2mnS!LsTuVdtbT&009360018V003}la4%nJZggdGZeeUMZe?_LZ*prdcx` +NQaAPiTd3}}NZ__Xk$KUf;Se7QGQfA&Om6vH_2$(972M|J@n_OFiV+Y&WS|R>-&d%?q(1$HK-+g`le6 +KF0^i(NZ7fS9}ZiRNWv7X4PR#1WV!b_tQN@fd3d +{Dd$>L!1*dkl0pgRLhoOq{NPkN+irAl)pmr&ZLN8cB@jWLuQ>gDVKsS?BBYL#o}-Z2{XpET7fs?r346 +kko%EciF%muw)IK9pmvG`Z9c$ve%}D3Mdcr>=4Pq^Y2QMpFlbtaNK|BbBqZE`@R>n19!4PIt;qqXUeH*&G?s{!XPunccUoQE}`!(7nGl +F+3B+j1MCogUwr@{Fj?9^AP20(NKI1;T7(7{6fO=xp?8Mi^t?N3=L#5Wf0OY8-Q2KpL9NLK`EY9%(v7 +m60~H>pY8|P5+Mdi2I5mjczT8>SMCE=drzr21E%q?EjnM4d8KVZzDZK>EYzx;DpmZvl0t9=h{K^XyO^ +G&D5Pqf7v34^CdP@1C}XWXPfT-G65-qs5ZH6V7|DTw|jBbq<#PMw0M-xbv#-3ba8OsSlwnuy1bVfG?^ +8zqi%cG{^Nqh=?DpPJGzO%IO`>6>+Rjf3M;)Vgj&+3k9oc&5I4ASMtBUtcb8c>@4YO9KQH0000807gYaRO!vHy&?tx0QD0903iSX0B~t=FJEbHbY*gGVQepNaAk5~ +bZKvHb1!3PWn*hDaCx0qZExE)5dN-TK{zNX1FC+22k%R>0>%0=G)2F-hCoY{O;{2&l1kNQ#u +~G;4q)Hp#ntc=y~3SF6=G+VF~ME;=G=Qn8+O73)gQ6n^h%d8S9ElGSRJB)si~)T9x|Bkzt$Ek#T8rH9 +YNZoQ>VLk|th$UQH0Mm}%_e?QTdRbPi5*FX1Yi#8c~V6bIYlTlUA`@DDr`$FcUVbGjQ_UFJQYgwn2Gx +KFydroxFyzw%hglyrif3phVWTd2>=y++CiVl`S6ui?+0?NFC3rKz#5VTj-(laZJWR!;M7xF4Nu +d!vCg2Sm(c4WG!SWSmU7p!~aQglBO%@0&DCx0K{_{OAyf7fII75+MuPWt`$HFRi#@nw>1U7&M-_`$5D +h4EBTtdk@u8>$rfV`RuZKm%u|Q>fRQguu_^2x)T_CmskXw=sm-1!(qQ=#D&`0PBf%l}fBVAP)dUlI`Y +!jS=mWk6bCF=yoLA;(TQ7t?23ov_2c<)Df@_q=00mq=DO*vJ+=nrv+?I8g +i^YC>@vv(Et29E=mCvr^Rc$qm5!_5i$wB-^i_WZO%Z_8p~i1&*vOcWx7n1;3{ndl!`)h&1Gw>WJH~Lz +fISc=lFxU0aj5k_vK}*E$)bxm+AbR{+Mzgn;HcMO}GoDBFVrRJG8L}@mV$+MURf6p|VL8`>SNVCh6yg +-=q{WBhV2BWMh{D-2ib+5$^1D-V&rwm;dIWd4GFocPGV@Pf*(5}*~Yi8o$GYF9k6 +6?IgTOtBs!LuLh*RbfKSG$D?b$}>y{z(!PwY+ovhlubf8dxY8oJtSRU(>_Y +v*5<;Q)2d3-k#?Yby;Qag$IM;Xx-Y2dgLowOwrz%PodE2j%5gER1^s%IsyIb0S&P-rKqFTlM7tB` +bxsV%yAy}aw3y5U{Dp7GKlb))2nl-iwLNM1vKn5dv*hk_Y7v&$CB**a9cNTxaQ-R>1je`zqDKE!x3xInD0JN*oV7z8b%SBsI#-6UNYDDn=J_l(avQCs$~v3QcGY-I;thdMpG~apdp@i +5i)&t|I{-G=-sid^mxva*z_$fdb9ueJCRZ7K0xTT~@cf{PbqSWdpuAu<1PLEEI2t2G!bC^ZqMD9e6Yg +q1Z^>kG4K-CW){uW4`o7YiM7?CAvc-_3e(?{+g*9FtUPBBy7fvCx$bL3r?5`hGRi{y(1q*#p?@>EmVa@gG@0q{g`SgOgTe~`<);RXGAp(>?mE>#u +_-$hk+gx0@h}H2OKYctEW!$RQ;@qNF_do3pd_Iii4*1f``EWp5C8-8HDY?MZxrrU~I6-GR4d?b&-2FD +#zv;<$ji=j!XruYbYU}GfT7U>m%pQX@=Lg&P~RCVtT_sMIG*$K@QvI?IG?3h^~6b#4{Q~7cvJ3 +LQC==P)h>@6aWAK2mnS!LsZ1R3K}O0001f`001HY003}la4%nJZggdGZeeUMZ*XODVRUJ4ZgVeYa%E+ +DWiD`e%^GcQ+qn6=e+5rL5ec(}yWy}827DNnYk>m2UXga)hb$0iiB5EtMUAAAxIzB=o`)|IDNC}uZoq +`1v8jg-pZ7Pq+&5e(lJlx!xhi=r7o}OM_}yJu-?^_`E_Q2I{S;`=?V3t*&{idGdxfY(BBF@|E#6fLNtJp##o1-?bOZE@q0 ++%c80`k@rO-m_YbArb6fX%18<(dHnzj+%Hu;3*9q89-&YIb%hsw5-QpSD=^WBAGf!!<7~5RQdaFzrB9 +{DZ73>wnOV7ElL4alC`4B?pf8ao<#2rm081@pMU-_vx|c5m|%6z77H{gCdkHFR|-;jr`O_4Yc$J}#bS +|HR7#S)whX?lcRcRxCs}KTfq@ndKw+*4$V@Nhpfy;KYi)HmuzU;n3brFV!Pr+8A8&QWc+>5;1p?pm+6 +uPfU~w6*tHYXXIj`X58(K;Gwv|jwzHF$vm#0rCB?t3j#TW{(&8jU}r|dBp`K4^uy)Wt$03uF6{bcn^= +ZgBp+P4;M)IcFRFTP!pH-dj<^>r^G#Ps~K(7OttU&8l+EytSABrV~b%wlFmR(SR=jo?FhZu*bQ?lm&A +LDJnqC*e)^$-GST|2r-;UBHr|Z{6(#HKU-09HrVl5H`mDk`BJy9f_Mj2tYh(C;txGm|LyNx@A2IU#>U +WpP9A$68hOv#svsybvSozrO9f +^I-*X7U3_>Q7fM-b{%^nEWh@#xLl`6s6JZv7Vl3?hNOCmXWWTa+*73lfGSVNS67)hdWV8=*WsV*gvxLYrEdo8ZaifD~##96&$Do(sphBTG=y&;}ZpCik*M-wQ{LvvR?p +fM1d=PfuBBac+nIuq^&h-lL=3X#!Ckf?IcWa?X`4!nWe1(Cta#wmm@3Wy4TjH|#}(eNFv3_TF(AGIfZ +9!mh=4Xfi|PeMRHZYA8|&cHlkQBOcwTaHIx;8Sy@(WDp<8c#jL#~$b4;4c+QBJFW>5uLNIgP(-OXZ|f +d(Mm+iGoV(U#LwEWI}h!ytcw-!^hKTpU!I2*kg}&0Wa;z38^O*4go;IiL$2<*JWmRMn&(W)Rl&d}3#b +kb-@xsPJ%LAmD>slnRy#%^fS%%N+R(<|B;!7TkM^F8u}*Qy{K1JdJo-ynABDMDng_rsEs7YCO`nF(p= +6LC5N;Bz%W+eFKlHq4#iC@)B~fuUjYcyfn?gCyzbELMKd*03h8hOt)A<-H2%G`=q(369%!g<*6QK}GW +(tzYLVi9fnR!qt%*_hA}*oX~lh%&~y)=E?8-i&VDTIEt1UVdA9tUu12{P+b~AvQw)UnF!-Annsz=F5Q7$q=6@Rj1hU)Wx8)_ +>RnLsuB=K9QM-_UUZwBF0Jq>SVhi5cvf&dQw&}c`42F4LbtqCVKZ%8PJ#JD&mW3G_eekxg!;WRcnrKe +YRPp3z(L4P&)n2V)1LILD7JUnd~8STb$Jq}IeQrosxAy=Pzo7D%fg)$w{`+xhEWP+U&u +fqVx}5*0JOQN`)9l0*2yb#JM~T8M}j4^MZVWjI@J3oIhf252UCS1(^)U-5zjGYG;e1Nm#C6_72rL+cJ=OB*QEzqsRzwsod#Cpoe^}s{k-2_~-Jy+~KS8sS*7y80v*)M*E>d7s_CW8< +@WLwC@5IliE_=eX4ZUv1JZxZ5;jBa@9?}PM>1NGj-Ky*z-4}fsatowvv!&bqz?I37fzUSog)kjb_ZuA8vZwzSo{uNSCxqZ}Z3JSw8H&{z!`q4D(tQ`{iy|jDon9YMAkZ_uU60fUNW|qcdrDhT +y<83erexjU`L2gSVYHTsAp2s*Er4pV$L8Pp65sU^Lh@GRdM*HEPRLpm!%}XJ)VbRP7y#9UV{|HB;N!b +gSP`Aj_^6US#oh+8Il2QkR+vvpDl$-y_s~{CB)}R9dV9RT3dSPphHd0AnVL~&%EdK#9@K?!w=+4T3mGKZ^n!Nkji=BY1JflqDRl=v^kC;6-Y%+&XlFR+A@nce;27Vtt>Y@22iAZdd^2rT^UcinevM|c*_&QSF_csdO +)pdJcHP>R(?)R!0guZDH^;WEv=+(ZxQ(Gb7VY^qNYb$tPHDbVthvCqx0>JE#-SJA`dYj?0?QjKIub#_ +VtFyCe-?jZ9>h}5?7O`LV)m{z9PHFp~b${s_*mQli>)XA6A-FU1<{7|WikE}x<+@f&@e0nk6yKW#&v; +5#bwzonnr+(`o!s0?T(&@v+QQk$rfsT?tgD|@*~q;Lr@{$U58#RrgKp|x-l{TuQvz;FgWIxKKOHJS8e +s83h=rL1=ryok+6T{qaXC2Z^G0>iw&rI7KF?t7&CvG84}JYY>YERZK6LnAZI?6vAHJ^iUJjcZ|KvjhN +N((ymjR!A+xKnHkH1sHecRuD)56G2@($SUu4)hZ>qAw;=KJ8)zczZblSS@KRkKx}4Z&2o!>_$P-5Y-T +oF3*T124&~9HgD_wbbe%B<|a-s&!FU&8?mG3jRJZ^!`Sv+K&AJzvKotjHqJU-ZynCw|-B6^k?Rw>X*X +*eF{u1e?FGc%1rAQ@87?9E1PTe7I;qSVMJ?Wwh{sJ?DEjp6R5XKX{9x43ybxtd&f_5lYrIn|CaR=9)5 +dT5bWfk2g-Un2eaPuo7`j)WoX=`IJ?#dVQ8}@BLEn}FWI}_M;IGq@jSjQ3ks +X_%gs0O}_Lbh)@j#KTmdCP_!_89MR9i(v5tX)BM70Lm1(>7X54}>;aN*n?j?VPSWU|v^GFeI*9svd@QCrUOKUbtIm%s-bgJGDs6nCm$x4I +g@9RMC8bbr@2iqC=o)_BZj3)q5hw6=LdxYC;&KoBiZ@ZY>~skLGjbO0(Xnsy-QDR9H(bGx^t05Mxxd1 +L7C$0FG7%Ke3h-qf(5cn&hb8z*)KLRLdr&b6v{OMx$+Wo>>bO!Y(PV7SMU3SVX1TRa)**`tu*OUEp(? +g)vf{~ir>i1g;j;DdnLC=HyoTcc-O11m_7Mz>ED)y!j3(Gx)CzGa8J%HK>$GP!fC|2%LvlaAP@M~tTO +@8FG)^;S!80c8=LTlJ5S6`=b~1_h4$DSTEOkF?+~ryb(bkvJI|cYl9%LU5lV<*l!%Y{S;5$n*Af*jEi +-ou8sr%LhkP`j*o?DY>`heHP1}Q=D~T^;O@>m>b-yvfzXjKe{!Bz2Y{WMJ0WGbWN{pnf-tx{GsOkX}9 +N-J~0dY&EnvFsP9zf@5wh~I{+o}@^{c25)4gv-a+!qkTA=@%I;8?J8$hQ(hm7~}Ibq6I>aa|B3-GYW3 +>{d9A>-zTJAU^Q!(8J1GD@=tw2#Z{Qyb8F&xmt(|MgtRyV-pj^74P`$h;a%E@SqXjj0WJYG4hm^1|i! +X2o@)4=TXPH?tgk5X;0?U{7Fc-@*G_GNk+A5;PoXLU +A82Jr9qY4m@#aw1#2hG~t@bimDdd$#bS)~Z3i%d=1)P_o&~gm&K5aGib{Ehw7?%2tv5NAB?;G9qY>u- +PibIfpzJMo`@u~{*+pTUsNiU$6T@Rzd5c7X_uDLq1L565Ug-9nJt?9idZ9M|U1bKJ|CgF&EJ0ya`vWH +_XAkq|eCH_#@iQr^FQ^X%nYaw1?l$k%`T^5%zUzdkLBbUI=X^aAMz7=mMYaxsaBgz-Hlj7>9RnQ@KsM +ffC%o-OG#o=X_2|IXaL;(z>OecYpA*5p3<$0YH)LqqAH)k%xVlNNzXiI1}`@D4zg2MZLIWU15pD2F%D4XMA2Y? +s9Lld)YK-#-xU#nJyC5dylmc&1NIxIfS-1m|)aP^Uihx9gKV-8sG}m@Th5*~`6K{2wMGDB3l;#7iU^` +fT@Pg(KF3LHmOqM376z50F1hvOBu6KkK~H7mo1^p95pi1gzckD$wq{-6biNLxU@0l2A~B>DLT34ugs0nubIY?!zKrdHc(pgmx65Ew^WJ|(%YG$x8 +Xv*waV%YZ)F6pTMUF)-;#vxD!^BX1AGWxKmX<911zF2Wijv2GhoPzK@EhE5%LOa@S|x>_3Vey!lN7=O +XhC}6;}+>a*fgyEV!n)+N}9B_@?{G$PM83+-uo8kbkQKWp3_8YG9a2_$-G-LPN!1;$3yF*XPZ&NGT9J +=M$t0q2>8*rmKP)!sCf;&#mhymlvb}{((-#`1F9TkW*F1M-!#|L7=?P`Qf)}I6-C2e^Ad61$E{IN=tD +KZ3J#4Z@8wf$T7avVOyR>ZT+N$wzPoa4!z^99IS;jmTghfEvKRb)fY$))v+BzDk4j+18gQ#;jaKX%Fd +Q`$%--(fZt1!BBC=0@Uc*@K0;qY#?doT!Vgj74T4&>?2FAfG-^mj;}Hp_d#e+(?E8Y{m;Qn}Z(3I7NX +syoHFf!to{*K;vStROu9sv!cIU{^8cbPotl2xL0u-VFeWqb?DYd|E{&S%dFF_;G%r&^!r*)l%eV#+s)(o|kra?Vl)A +jvaxZD_?~h^NvqM2!>05#mq|%qZ4|`C0b$74O+$g6~A +_*gaPjFct}|9Uxk#2hn2PqVP%Psymuk_Du_SkX6!N|&LWw*Mqv&CBt03Af?`@zR)*FdPv_VZg7M=3KL +4dLjn;YwO;z`OHGl;Jt4ZMiCp0(-7kK{XTqXc(Yn*>{aBZ@=+V8;&2k#Axi`+pxDO_Q{h<6*ArBx(a; +m%)bVO>8XIyM6MDo1EPYL$vy2=yJG8M*zE6fpX$^VNt$0_k8T2_9r1yXF&eYQgOX!MQX&L^^>U +Nf!W*zGq;w+k)E-lsHHs1Wp;qL7UDhkkt_G3kWe-R+Z(319DK!Zaj!5qbGsx#2aho_U|k%$b}as9zy? +2o2UalsG2;76e*F8fCZxO;Ucdg9;klCicD^#&TfsPo>?xQ0CmL2V+LX*=ds +l50*A_nyv~hI7gIxfL5NEbU#-$$d!S0o6 +Iv*b5jO=1LN09v2{OFXPUqm*F5`2%@JPD=K9n3xuSqYGFnIoD7o<8xpYV-kgEA0fWv9arkvo_hLg%Ka +-HEPxs#+jM&FMzkdrS(h+g3M97GqRkO<47Jr%TXydm`zDruzy%=LFsa7sW2l}Oi5G{dh!}SpssH&eDc +PG(rgMqS+$sAqL-|QcsmJ{q=0Te>}k74Cb@)riVx*n^USW}^b2W(u^LZL#k!qsKveo;gOO}9+RjRh#X +fha&31<7%dT@V<9J9OhL%@NDpmMN_;r=`-RNzx;Y(yGZ0L1EW`$7CSyaX4* +UEzx=u|4L0yU%&o&gGe9hSm-C58#@#qbSJ+`eoDa}4VAvmku%knESqCORY!|_@vk@&MN0Ec{rdCqhZ~ +-SFpaD)q36Nq|u#G}uEEAcJOwO?nY^z)@557$L?+x7JrY5;S7Kilr4ba3!VP1+!VvMg3Rd@fBYb0#E7^LYLj4Hf>DCx6*_-Ujv +J#dh%k$2j~EN&OLH+aGDT|H{~EZcFwnx-a%BsB7{!Ra=w@XF;yw?&`#XenMbs-_j9byW(y)Uh0_#R^z +8xF1*v@r4$6Jb3W3GyH~<4HWt18!PjF+f1qLHbB0f{8;^c!4+7Jzu1=wha$H?2{l&&pyCKto}9IC!Ne +fks`o_0@48xF-yC`QI?ZxEkxjZ*lW9$(ZKqb_WKLGCrXKo(>ez&7TeUu1&u6dPj%+h9C2FK8khnxy(8V%4oy0f$h_VGhoD +-$C(XPfm#Pl|w^uEkZH$pXgKUgy!6wk>NGRBq9=~KBEHl;?_?dC}^YX_O8&e65bIn6HO!C}lCtv~yIJ +s7Lu>X^qUML`#&o@ffLqp7$;{DfCFS~!d?>|fX{U|OZ%&q8-~HOyz{5Vij$y0h0_Z>*ZL&H7y22I-upun=CaK2;{28zYl#d|A$IW9_6(y+*2a9h>D7;@M!8!Md1H726m1`c_v>m +piwZKjwf1yQ$pvO3rh!9YWO76vlMb5=iTo89$a0%hUge4br)f=7!;rH*mQd9U&Ki=7E*$E{9F=UEO|3 +R4iB%_CW2D4~lEUGx5!-3nNkX)bcu)`Ma%w%?7(h^Q55e$q52#~BTuCBhxVvYFq~M?3fvr*Aw}M&++uRczd? +l3Am;RYx%QvC6X?l+$)pg&-tRX9qWSlncZ}y!~8!MdcL{{@22>Xm3=ipTs`{=_4pV8LrHIUyV#$V22E*Va@N_~JIURE7tdjn +7J#LVB7O14_rE9LyfUHn9scOxxBjY=&Uc2tyTz+IFUYUL?GBR*S=pEK4nwIX-57e5cA@XrPJ4w;Jwy{ +grnY<%;NZH19{vZ|wymuH)JD{N9X7r?`DArnU~BYv#=8r6w|yS2n{C!9$9xOy!kC7&mX@RHkFu4T)je +L3D_(%BxI#{&({G2XTL^^+-7Q&hT_{Vk=>bWrykK}zeJP6MN7_sOV^aqfIvG#hV=l7D_nazG_ZY)x(k +dmPry7{OxC(A-YvT|N|+;kL(gs&*l)lW4^co*!KkU1BQDNQkZSp}#OOi~K~t&{@Ln-mp#Tv_2HiIb{d+EzpYsoSV(3mJ1*sHm!Dq>*A^qa@a7h4dcUXz(a`Xg_iJGCwB +X-H9=-!S2ME>6;n$lU~iRpF|sQE-wGWYV<=1pEqNyaoT_MBW-!C&Ay@JKGTR>CBx|GmtR4``9~4JB4b +i8Q%oi}T!@45s6aoweFcBUMP%432jOGWcB)M*w521X<_ub@rE@uUkN51wNY}JB&E(JRy_3w(f~?G)Nj +vdeV8s^^2fR;B95$>6DGLifprAlY+$n!om`-alR{=4iVwT@mn)}UVCj65m4QD+6hkl7GfS&yHL(;dMd +AmzG+}(?$EjX7H3NqPVrDM@Cr_R5$2h(WhlfL4VD$kCY$^^t0AF=K-KcRN1%gJ=Ajj{o+dyLNEDFk;ib`QJ^+w5;$?t?=b->4#p8i!GKI57&~ +y^W{V*`x9FjXU0DOcOQlS*;;S5)z8bJC4{}omR`=v1PT+St_Ln@Ozt!Vq@)w*<`&eNHO6;@O0ZWf)@v@@4>&CK{^+Iap}4?mJ-y*1T6lkj +=%vq<#iYanP@HzZ#RwS9J(ziTE~m?B-{9f2G&3wtFzOF){V#+TlaF(;4(HwM`JIk+LcC!j4#Oqld`7T +N~)v(?-o@Wep_`VrwW40bzdaJ#!Oy%#(ab{yPy3i*T*HXYuI$it%ku*gJ6pkwoi><1^W;Eh^0un4Yn0 +K=J;Df^y_YBj{VgiTp`_8A`dhFTSKuw9!>IG{g@_*fF_`Z(EN(|6TJX^6da6{({i-EBJDbRbS31m>g% +)zLI-#kIugcTa*W`9O&>HdW1C)wd1jAp +AWxYzdfDq4ZlJ0_NdQ)&YQGJTBXMk^NzDQky4#{q=tVP)h>@6aWAK2mnS!LsS3&0006200000001fg0 +03}la4%nJZggdGZeeUMZ*XODVRUJ4ZgVeUb!lv5FJE72ZfSI1UoLQY0{~D<0|XQR000O8MnywZ{H@P1 +UjhICd<6giDgXcgaA|NaUukZ1WpZv|Y%gzcWpZJ3X>V?GFJg6RY-BHOWprU=VRT_GaCwDPO>f&U487} +D5Z+-n;2PLr7!V*kZ0kM_8-lHOL$R1xtt|7^Wi9sqEBy7+?CK9F8d@zyt@C<-C;=qv@WUWg6Z5uA2SyF;TaH4feTcORNPN#~F}9N(_e@po$q!r)MYEf&KE;Duv(seFh$cK|gpVD%6y0o93gGd>_`t4GT7RasBio_(w?vle^k7c^+bR36Q +V*zVQ9b8}85n%yPe`*jnhe{wdmZ}LJDoNo-^(q&3=?p4ty6mEeD$OI+3)v +qNj$n>>gN$#TDN*C`Mt|3t&A(1vek#Vv!(O)FTN9von~yHe23yy)@d7o&kKvm4FJgfz|B_qRt`#{Kha +53lMrdg{_{T)SOu}yG!$Y--gjeE|!-xln>gdWieXC%-zh7iyF3rU2{^0c9e!$R?9n@uo9P;8Soz$jgz +6z52IdZT&A-)-oP)*G=yGW7j0B)z{s=*2^&6(e8+A%Gk1he(vxZ}U$@!OzDFEt?kw1IV_EYyKreUf%% +0hIT*;bKPGmaky(mm{bCN?n%4Dg~JZK8jSj16TGvbKe9z4pmW|F +f&)Vw9Y!9%`VD3RZkqo5$JGv5J&t>wAt9BIy2<|C@arZtu9b=_rKQcAU$AQT!%wadwlU9C>@8#Y_-SE +Ssv#KQd=j?TuYS7pZ~*DU(LPM<|5?!BJoQ61yD-^1QY-O00;m^MMG3Z7A)^{0ssK81poju0001RX>c! +JX>N37a&BR4FK=*Va$$67Z*FrhVs&Y3WG`)HbYWy+bYWj*WNCC^Vr*qDaCv=HO>f&U487}D5Z+-n;Ck +C(9S|TpZ0kM_8-lfWL$;V$tt|r{p>1W*eEjgKI#_NDS_h}Io4EW_>xZwr@6nz|O6Aci- +dD{idr_m>r>HMs;YRJH)oMWHp9{jr7ENTAqH+fG{8G+Ss#w+AOwivW +MokCvS99nSp46O>3LRw-S4r~TRwCWx|L>XAQ4CDz%X1xa|74re9odfiY_$9mw3m=oZCDJ +sK#HysSdooN}@!t)0HXp+Hq{IYw4Z9N919dOvvTF^U;%~`myXt;fHt)}gIN_6ND`*+FLl4cDKG-_JC_ +0aJ>Wz}auE%mmf+M}vQJ0~02OMjfW`A$0Mh#JMC3kdi~Gh597Q-hKQuXJiYpN_t4BK2T<;`roYZjLko +_he1w_0SjD99qm@lcrM(o{daBG03M^v05bc_PAUKPq=-g+Uk>w3Gx+b6XE>40g46ibYr}BK>&Av;p38 +#<LjgvxmXl%vmUQ4y0TrO%a*gsH90|XQR000O8MnywZGPDpbG6M +hrmIwdV?GFJg6RY-BHOWprU=VRT_%Y-ML*V|gxcd4*L?kJ +B&^z2{e0Mk^&!H-c-Wa6qsK2@nEq2zlLjk~N#yk?jB#;=eO?Y$v7N-CWX4=i~X!n=z&I12`_Y@#h +C8Vh8FVjO(rH5m=y`i2R?nsdBBXUj9%k=k>w;2R6mp!jaXzG%s!yNV7DZ?DNG3VeOezOP@u5D;`9WHMdPIy_}#)3V5W$&Ao#pf*70Eo$9!XqHoG(Pm-#Rm-Ga3 +nhs4s`OwtXP1BhKwT`G?Z4Ys!6=E-S2SQZYRpp5(;*yc~@dkpO~BQRDKMIoRgtdmM)#HC0{_5`I-k?WWKy$_tBJZ{jLa7Ahixb +^`A(dHN;6}in{x3$-k5A2XxU)3U_Z(Yz~=Y6%U2UH+NtaU3Q(W3?>>@Vr=N}5a2>U$B=p@Y(H&AOoTk +Kxk7xhBeve$*SxE8tGgcp!xGC)@tgDwn|mWiC^Zm*mCMwX#E??1MHy+#OP;6+8jqFRhW9k-H5WIa>r} +P-P}CH*t4Y|Ikvc-n*5PZ_mG{4#zzJY>b*;Am-8CpAGFYB0Ix=4=$RXOp?(pi{7^T%n0*F01;0P= +>f%Q9&)V4S&!>O;Z>uENEZYSQ}^B%~RrMnz`!qjSx=U)u5e|a_d;cZUmw!FvbYADY8b=Lfj^n*U2!j +5d@3M-4|tC^t+?O#&*C4;FRT|(tkShu*E?Z@h(G@C6L)@s$szDXTFIi4Tcjk0oVuy1#KNk18wxbd9lm +X(S9idKYM5`Fh4Bjs>6of!P{-{LIK91>Bxi~qF0M6=5J0UteL2LuyfTWr$N-QmTW<&r3)mxJR;n)p6< +s!lA+ZTHwM=IH_d4RKcW7m0Y%XwleNs +(}+%OEi`&WoSA%R4Y}$J#2SN3#B{kwG`u-C>ifMwreY$4yFIS{+MJl1nP?|SxRh9I#Sk1&B~`!j*DMtTI;z(_wMa`e)7^e^kG8mviq~OFCV4W=$A-k2z|`PM^ZZQF +z%hV2MjaVkH(-ECq+jQB9CMY@n81HSR#xbZYSovNBWw5wGc)QC`7{;Yq5juHzDL)OZH}p`>Mk(>YY@JeKr#6f{v2bv0S&< +zlGJoW*gfnZGAP91q6%j@%M;S*O#mn92xK9*1*(HE9#U90YJJW~;_w)=`I8E`0e``Li`DtWC*LvzjB2 +m@0~Nqn%8=4!>^VQuDFfgw?#I5a?lF)uGBphgf!>5_Q^aZ5j4X4Fqx;W*>p41|t|*uEDgAcV!=E(2zf +ik#ROmTYwgV&i}Y#VsmDE@4fsY@dZ1se7bP)h>@6aWAK2mnS!LsW;Tq{Tr3 +004aj001xm003}la4%nJZggdGZeeUMZ*XODVRUJ4ZgVeUb!lv5FL!8VWo%z%WNCC^Vr*qDaCv=GO>fj +N5WV|Xj3QM^q{V^*MOvvGC`BLvt$IZ$a*|2n*0GK4bXg((JN`)0-6p~pXJ$NaX5PH;K`Y}xsIKF(BRr +YPlGdmJ+);ZkOx|1VxROke6x3YP@(E?54ArRLzIjIvhG~t)&KaMTdi=(%^&mUAi*JJKnhAmC6oyNO#z +WK5abc+)D{WMbc0n?ulxWHWcYSGnQ^6Q~oOMV@=pGGR&129G-Ph>L%Tlrd%d#MZG}uBla?zBB9#NFoa +K|cvIRSsdyFFNEcG0X@{pe@gui8%G0Uc|YV`ak))=rt@Nv^{|H_g}UltlO< +t@Ggb_-piV14;*DAProPaCdVDmzS?o>oD;`Nkq9vHyUX{GuMMt5C;R^f*tGdtR00o#!N@y)}xsNx3~i +{<$d?n>D*7enYHNoUe5>If>bW1q$&N(@gtnH0@`3Tc6s&@t>cn~q2Yv}3!Ci{IR#lV(`Nnh{lALv&LxSn9z92%p{cB|PnlVS5ofD7dp7AmaSXfet(MYC;$i5X}VCKdJUD +W!Ro-uIYoQxS;Wj%>J#l_$ykS+Wx;H}Ue~T4R +KcW7m0Y+r0;XJKP`E^v9ZR!xuFHW0n*SFkDyNQhQwuLhJun%!O&4bY;e%|ei+k<5l71(I6FSoptp_#u +h3oo-N|K3EoKIGlO&9>;W?gw%wIVW50SsCyNvoEm*ddMQStPZOGmH$76N3-W2wRPcr+&Sj!gSyQe-;# +%1IDwy#nDlEH@%)* +miQPhb!iB!9!J5{H?<%rJT#Ec%aB!Id!x#=`1MYp_L#ycvJi-gGEGO^R+CJWY`0Kati2XDxAa{2!Aol +`)X+hLM9G{ot6l^hWre6Z@)RF2#mSUax=6&5Qd%gkVGO7MDtIzy3-g@>3N~E*ocB3Z}qEIs!n)c+_?+ +I>{=;&m4cg-UW<5YK4dIl|y!Rvpd;UaSDyb|&cpZ5WX$;`lPe%oA;p7zD0BxEB`#K{=5!{!QkT6y{-` +O}EeP`CqB>_|CPW4V=yd{pQGU1neNkaZ4+75h;Q=$)mH7CV2W=zU7&h}R$FnY0objE50OPZ_AvG`VyN +v4`YQ#CKQf@yZU-EH2>NLU?8$8_AKw8AjY}zV${6tC|>aUnw&Gm#g9;E`D#NqmbB(L&FK4WQ#6C&e~8 +9xat7U+Jg|vT=hMbO6REkbLbvnRgj=9|086fRQyyb{}z;I3+sI%Pd`5|_i?BlC#UR|DC{_?r<2uJxGr +Yd!iAs)CiV@hg;m70hTM_gvYJ%8w}th=brU-^^QmdSU<1vg8F0b2#V9Lv6{WuSeu$M0Cnrs{>e6enCu +(kuTR$`ASffkw3B$=FRoF`D_ZdQ#OFH(sjaVe%TT^%=X@qUDF2^WV@$2Rmp;<+5n-h*BO}QO}rdO2(* +_l0S%)gBqsi6#l=4Q448z2L@7*d=`W)m)_Q|`;gArSp#$--bcX%z8>-6eZF*v~_je%#XAZoeJ*Nu`D3 +gHO`(11*s#{fwzD|Et8eK-{0=$`%gpDxFUHfVnJ%lAw9%jlIXN+Jtaz_tjVa89Qu>hOaG5n%vt5LJ^n +gH@6aWAK2mnS!Lsa426nixQ001)p001li003}la4 +%nJZggdGZeeUMZ*XODVRUJ4ZgVebZgX^DY-}%IUukY>bYEXCaCuWwQgX{LQpn9uDa}bORwzo%Ni0cCQ +7Fk*$jmD)NzBQ~%u81&NKDR7OiwM=<5E&m;sO9rO9KQH0000807gYaR4dcA3K;?b07?Y_05bpp0B~t= +FJEbHbY*gGVQepNaAk5~bZKvHb1!Lbb97;BY%gVGX>?&?Y-L|;WoKbyc`k5yeN@qon=lZ3_g7d*l@f{ +L1CZ!Lr9M>3wNm?7RXztVU>$f}+vLjM*ETpnk~^dXJUhF<%$O|8PSEmtq9CN>=N_n3*73gQPNJgPU=7 +yhR2ERs7YlCGg`TK@3-qX83X)|Rk%LC#Xpe0xRZAL!19g-3*K{eJq;)y{p~Fz#=kyo+9YNJVX0n#LU{ +X0SzFM3|*$W2hlDfYH;H$bwgK7Zf9yN_l_O@6aAvH=RJe_&;{g(Jn4zaf^-Z=FR{1w=yxV$psrnMhT8 +_$boX-@6MWGhTact$X^N_rJ7xKqRqj43_x6iD~Y-4K6MERDsyGUacMvmb|)?a}qTl?fXgJavpQ4Z +`K7Fo&g@Pb(aPQiZ=2+C`+=t!C09!<%&7W^*2n<#j|Xt+BY`;kemKhg~tro8O@|4g*)ht8D8k)06A`m ++jWB>_Oj~sNT)ro_-|%0Z>Z=1QY-O00;m^MMG2xPw#YI1pom14*&ov0001RX>c!JX>N37a&BR4FK=*V +a$$67Z*FrhX>N0LVQg$KY-ML*V|gxcd97D%i`+I4{_bBP97=7nrysE3LP{@C2n{5Gen^9(wZ~rNY{`- +2+gn2ZduJrSdvm1Fg}Ys8UNob5=0$NFzkym5S0^*$#K@|`M=1z7zm& +$=bDnIqIDRWSdqxA2zajzbw(W(XIZVACt0bacwrT$#Fes7F62No`6AiNf`=?&ac*6I?_L0g=mg;C#oz +q-X9uA`N<7}$XCD_79PdhRs9io)o{l@;%3XYzM4C)MYph}O?q!aG!Sv@0u2R{ +19${)t0^$M6aOliVDCm}AaI9V^B&N9Ie*BeYSq)hvWBDl%5$d`ov9lRXg9r09nB;5ig=K4}5P30I848 +>>|?ok91VojIcOw1hJw}giz=1|vnQdK(Mc!B#l?RyYp>r0yyr7Mw>0r3#+-5tP&T9Ori{Ovp1RQg+$s ++5Irz}#8j%CQMBOehww4762|>i``1t83!%R6tF{Ok<3P+sEE?EV4h9!EFi~^gWPI_L>aIw%$Jd<%;bQJD +nWHQjucd~-PbjV?amNZ>E$}QgIVC-BEla+`kQpkt$K!+_L{Y6W)5;(AU0?3^g;qJ-BK@TCDX|yxhXhf ++?oHAiqwYXdED^wEyqvCMTWO>S7GTI(X*>GesSxe4lFkGn=aSg1NtJYWm3x +;KSKK}g<(l4q(o9exZ+bOuqPr=c_jS9sX7(F}oA&q^M!#AI>EuKH +zXT=@)`Q*s|1Z_)m6`V?)MEupx-2+wsXvmd7PUSxAM*s_+>6g*+|w8;ij>E7-zdGZoYeVxSbJiqU2>= +)}bR=QVZeAvP@-D!Hk-pd+mD03R84qyd!6B7oI3(#buex2qJ&w-7Bk-s!K@9s0qbFT%CKC`FcHNx)4M ++udk%^>*ynGpt%TW_0WV8_zxaK~mNgi_{T01Jy>uvZRG!J)Uq3WxJ3+He++G!zx|s;K&=xh|$NG6=Qx +77hWW%ZMiqk-$OTsz2j=3{w+LLk>d*IXsTi^9&#y(Jy>T;IF8Et_87~4T1t1Hc!qd|P)o@a?Io;G7dz`#7bVbWKeoJvw|yGA;{n+#d-pB_a^wFeen2{) +(E0fQe*57EC+O9KQH0000807gYaRF9=tD#9QD02FHg04V?f0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1 +!Lbb97;BY%h0cWo2wGaCyx=YjfN-lHc_!5bEyCNk)_(S#N4K%AR8@S=IV=mb}TX;$k>MjKqjTGJHs$x +SZd9{Q?M(9NFHjy}GH2HA4c8Mt7spFCak>oOV@J)~#BXwaSX7P4YY|E>u#aYT0FZia***t%93Nt@A)F +vm&Xts!CQ@$%V#lo1~5Qf*{!2%QggRRpz-~wOLs-{i98lkc%U}Ao +jO;jcArTJNF^R2n;+RTp8Y%KyeNnHSdW^Y}W8?{Ut{qRc}Ms;=GBx@ZnAAYHeRhepTq&G>HM;qNVI8k +Z)jDK>Atkrc}mU&~|t}c_Tn5%V`!<%)IH+rssq(GvId$ijM2`bIQJq4eW7jyc1_V<^^@#DW7KmO~<^Y +8i5qhiZnz9p)gmXCps$uigc>q)k1`P&JM+CQgXZCUfLr&%Mdp6i>lZ6%FfRLG|!=U=D#*A7Ua%`fS3) +>Q`R>jIkd*HwZLXFRdrvI=Hx$@Gt``VM~1@ykiEF88=ql~qxEt&6m*qZAMV4oA(Z&Z^du@RWW&ORjXi +yALwibhyxMtl#3-SQl-*9rt2c1-eteo>@sz7TGGvv)^=FBpdA_nSpfHK$l3rU1_3`?RUbfB*BNrbzRm +|-STpkc)bwKP4Y`w$D6Exf3J1j!27Ab8{H;p(k8x`d3bz-v~QdSm6`6y*BZas +1cgzn{*5#rSHfFYzZ@+c}x;N%~8&0`A7`ri#}jShcQlc(xnLCTmtbtE;xFbs9HqT6XPR>7s$(K%RQ8E +|ca`fL2M}X6+8PFxaj@aT+b+Rae)DV7Ez{E9OGh#5Y-cnH4e9wyb3_Hzcubovd0w2}h3GGEVh6>2eSf +pkG|&T?1|Os%!fN4Qnh0m9vR6|J@{88C#M9gDK3e(JUCCtJl85Sh8j~J8?^{yCIqSr8pg +jG4^9C?Mq-%|m721i;)e^MARRii~0b6Yg0Pm@U8LD*JbX%O8)g}gPTAWRoPzq!hFa +nWARXye8)RM#Naa7JF(af)(*uUJ5>LoEc+IFOj{xlg267arFUFf>co}iSa5jrlO^*W9 +ip9NP7S*VCsxUYT7-lWAFxbQEP-ZX_dcpo5XJvc^TlGZ~;xZtz5pi&jW7@!$IHJv!-rfL96m;x1unHU +1ma3}DO4s>T!Jk4U3b=?Hv*xu~kWq7y!4{!#sK|hHv3(cdt6)Jb<|-)k4H!rGAOIl=hz>w={N1(dgRg +@3GL?1qHs*b;XFtsYMccuiRG8ZTtlGAhWuZ`Az^_B>bJ&)L{Fs`{OwZ~Lbn2QW0ya%!7LAYozWVXU9~ +Eft7q6ZWvvmWo^IR2Lr%0QnR$T>Kj83UNtRCH4RZ-Sh*_iPD+4r0npKtsJ%F0mi!)=H?TBzUI|wITZ)#BRp~Yu5{T_$&mKBPHh#v3zby>E!O;oV +Ufi?(@NwF{n>_8d?j%kJ@1CI+4v#qLc$>?BygD{8W9@mvGbw{9oYhDbY4Xlb=g%kyTRCjFO +Gw^=PnGCoHu}$`|LW&J4bHwox?ga8w}~Z`Gnzww*!3VE;M1G_&Ra21S843i(#q8Wf8x8boQ4}o-M4Wf +DC&>Of{awxwm^g(LnkQE-jdEQf!ssSyF3K0-*K~GC7>=OoFZ!Z!L0EU(-KU)+bv-cddZwn-ak70L{iz +3HrXi$r?@OgRd_|ADPKH%bF;M9ri@Aeot&NBQ3YIjnMWBU$zRChBj_AsM?H`H}Mv>?&TIu!G$B~;9?Q +Ikb92X9EmZQLPM~7WU-@kqwU0wRx!pG3_P?!VGICgv^o4j`3OzVp-zcKf138_8}I1g&*Quw?oE`WY3R +V48G8MoRazEz&;f__2wM;GkY^%BaR!@Hdx>lZ(h19$Jt%nC97n)Ker^#lxPl|K0XI~KnYB3J6=-Tlw_ +{ubsRb`|ah=s=!P*VS5tY_ddDeyk)b@TOQ#e7vRsGhYnyhVDv-^9_9N2GXE3?enNWkFd>@tHbyF}lQ1 +P5_f^uFAnHr_P8IWWS!hcu(L2~fN#Q|I^Y>b0}DZTWs@G>oVadc0{aV%p(R#@_5rO$Ppnoe7z-%v79 +x99$;!GmW0aunQ3q%>#NDImV(;}DiGHxpa^P?_Ouct2N=68JMc#I8rt+uZ~%>(u +7c+c>H@%CcDFe=a#|f66y*UvIbgyan1E8mAZAANQEDvVh5|F9s5cKop@4?BL5e`sf-fr{4GIipSGOZH +S$vODaM6%S))=s3GE+pW{_bg|xXtnuHz?@PlRX2mCTr>U;Ga|Rh(hL*(jT#(I{l1=Juwi%698i7^A~5 +w3xyIYfglzD400zRuw)^Gz#f_=N(oK$=ih&xJ0d}lSeQ4-mZTXRHT|}Nr3B&*#s=RMo2-117NT{H)A*sJOamUG%-Fenk~_uiGpuPXX^y$3N6Xb0LH*3+>#Q(h1k}SdWBH%B>*l&ZQ)YhB +v(uU+JVumW^)skF4|{g5}*jSU@tW?>aiItL%a3CL5p)z;sl~c4%5PT3u(z!2_n-}Wsy?gB2gSdgBh`R +?#@bqIjGgk493WKLbTl1T|u_yoLV6=7!XH+gMTrKh>}@)GhS +l(S7We^bL&W#Xp?31|Wa|V9pCSpj&GUcwS@te&IX77+MAqr&0Pr7iOz*IvT^pk81C$7lryED^i#tn4c +vzxr8+UD!_Cmfo%{R`JPLim(1xjTZ6HoMamdlUS43X3*#YIz0nSR{hiDh;K-g|g%LnxhaDFyEL|W4)n1`Z!dI#Y6RcgQTR=sEyeQ!(R238;aOULcI|A*a2r#^}urUNPmK5mWc~FJE8FaGqkE*f?2SDe;QT! +NybvFPxyUq8ri5{Hfy*C5O-=iKX@D0=+1?Y2s*ysMJk1rj@BpsqTA53x9N4(Y)L9naB6GT8`LP4+RX0 +7y--$lXo>_eD-06nLd&&XaZ$Y%6I&eKCp!kTlk$#`X=(|ic7CiB9)aZ~A46UxKIAjaP75HDs+f4?Wo8 +ch+<7L*U>q8JB +p*S-pS`D&bgoSmEz(0jSGuZ#gxCASO?8ycYuDF5+CSv=^s9-JM)W{nNH|+~3bo0o@!L6G@mkpYrRbBo +9-fROVI*zr*?H0}7@nAD_@vY&OaxfR)M%9)mT5Cijuy_Pacg4vIb$~GMM}MSXN1r3ySMZF+dk{V7-zo +StSGrwA>f4U&RiJsjLmEA71U^8N%E5vD~}aE;VyIVT4dR9RVFfJxI8SQh58#&M7^=w4^3mN@z(-HlU7vqh||Mrc +RkS7Lz01oTr<1(a;vB0`to>KveFhpfkGPT*#k+Kj};sF@NSF~SIRDPRPv$WwVEyCw3Do{X^s> +V>H#1;Vyfz=bcwHOnF^Rm36Wds(}&p#hOKYjh`_~psV_{Gb!lNZlVfBsoXL~Wz3(|VoM8A%np>jVcQU +3HnuBeT9uI2kr3XFv32IU4dP$y;eFO%y1+7Z^4G{C|x8PMiUtEM3lfjVCu>W624H$p2Oo{XDBplMy?akZ3Vn)Z+eETRfUN5hT#UJgu?xV#|CVvrG|rAP({M%z^d +r1?s#idQz*=iHh2$wu?kGqksH-G<`x{_sB=$Kg5YkJ=Mxzi%1T$S-hBYD<{*;D4ML(spKhOUBA3))&S +)T^7y&2@dN71=~dVa-yTw&ZHe{PeZAWn4ucS@u?oQUQG1|P>`KULr@%Atgf#Bir%%%|`f2;lhJtwQ6? +c~W}3Az6&PAwMWnE`adhr<8?@Max2(kg>tQw+fpm!S5X_z+&SW4r1_gPSTnXyZn+!zipA5axx$c2E3b +FS(fy&NuilQ>KG(AfLxjTkF5F@Yy_QRi7ro$!k94Stc~MdEU=n(J}%gGBUgT%?wsn6F$b|Q<^3Fb9hc +-H>}UWQ^WXjxzquU@8rtuElh_~tP0Uxng#=IFJy!|#^9SiiJ=+%%%fW!x +Lf`N?B3OfBi(_Vss?D&hw{ZjDl=oq$4$~>@serAnFW63E6NQ3^d6}f-_cWIKJiSC;UK`V=0EDlp;I_I6*k*RXQxcJKN&E*KY}=k{mixClQg>x;u72ov6<8k9pC{eUf@!+p>J2cWSJjO)KP)wu&8DD7 +zMP)U<9S{=%GC0LT%O|nKyhK}a%)SHJMQd4AQA{~v+3;I2KFM*mnxmosu@oCi4(B~Q|-OHiR%435aS`R74|A3vW!OZSumTSy|CjF{WhVq;lm3~jQ9S%}fNkQ^rd< +ns!k{;XB$KJTqhF{bh4;6hFi^0R6yhl}~(7#`EAI|BqOx+D`~3g{-9^=BWQEWSPDXlOYX8~oP}bb>jj +X4H@*WP5oCfC4Ld%3nn`9O+6BXgb41cgkvYok0Crdiwj=qH7`5NF`aoVdNd< +{O(}^CBK$E<7;K7VnSCX%BP73%0qt#zfe)1_SyP%$u-S3LvrMv3=OTI&6QKhp +MB_Lkz=_?@|6xmp_E0^mesJAg&sGB9Tc02>&@<{scSQ`MZAYy<=Vz|os_B=Cm7_e&?Dy~tv0Mr^>3OC +v#cN?u^?P4fB?vEHiezb5zH|dwf`Ac9^i>tissHNus%F&z~Sk^t@AwX>fyo@z&7nDyV1v0m-NS=c2$^ +=ebtKbGgWBfWK8)4D_LxVdKgl~^@^> +-b-b8hPo#DAm3@IVNT;ttN$+Kn58B9C_bIZ6hCtd&x2#*0c^<;y}wEk!weq`rm|EWm%q$HI&S%`dwGc +HO38iUWk=`tGL4koMtPa4f2|7@zy4>?saafscA=m8tJFXo)quw0t>eP);ByU*(Pm}e1Sbbf<(1- +vLH$Bg$E7!jKolM~pLxY<}s5iC>vzSLw?rLYBEfiT?pTI_I`@i&KG<8;2c6OCcargYCv>f&dYa+6s*62Frlj +>K8}jOFjV=hK@hvj0_YcMzRj&AvN|^6)HK=ngd-PwgWZcU6=(h3aW*T@+&Adlgb)q1kI@!p>d18*|xV +Czft?OZPAU28`@&({a0OtNb=rt=*v2nsW3<_!byzlpH +J_NK!+l%@cvW6VzvdIbXMOU$6^9-3dg-{Dz`f#3!n@uhctjjo0ZDHJjnvQiUH(bF{= +CaOHR{lwmR;t6ZtDi$|C93@_SLETr!FX!+d9^EJDI({kPb*vXooSQHD;DQ@*+jofuo$(}TU!v)(2U7G +qaxc4Xi5Q=0fT!lbkGnbm`QeQ|6sHov_~(3a@MUjM&=n~=p!M_r2$=WoejHGMmV7FT!y^^L_6`$HE(* +G(#8UpCXV>sD1-p3}XigmrCRE(#Ab@TOytj;YsM)<9-O0r}p^qHVpBQJnF^$E12v*klZit9!pSHZE`= +m~pY|YJ$@s~*$*}cDNoFN=V!KN~r^TE22-x3;fG(fdo#ZB4OD^a>c+>lniWtE?+;Y(EXLE7=bZ|w)e% +obv*3Tk_h7fYV=q~dA?2b`HZ`!GOdim){(P9|_pnQ>{xK^okGXD*aeK4Lq83`tdk#R)oTG7i4ix~j{x +Td@L5^|EtIT=>K&ANAvs?+TB_HVs{dQWk!xNYkU?pTIFkZ;T(I+x|$6J%uwHtnhW0=kWl>z}yw{Wj+| +nw^t=#Hn>D>0{U$17MUW7DS#6Ye4RB^Svvu4GYvk=1Uz3lxmss%*3~~Qi=Y1bJ@*PEgdn%mk%xrG7eE +%VAgIpTmd;drAzO2v$=vuGaT!Gd%QnW)y(|{@HoATFSh7MGGdI~Y8Ml!`A#Td3&lP2BC)s3iAg63_M` +*~`w9)s85)pHsFklL**j%pQ9rCj6O;gs8wrP;jh7gRsG<&5ZCe^0(#dsL}G~J3SbdH=0mm~S=Uib(Dt +n?8jK-I5Zrd#?xMnp&^V5i5#4*X%XK(^o#`wSy;;GN>H>0g$ +fM-8!4?|A0l1dC&-mvPB)KxfhYij|V6iz;?}FgHnSrSzH1#nS!Tt(4fhq^}8aowxj~OU#f#zIE`A=bd-^Cc~!L +aIUK=a80W!z`Ke|_?=6e^2fbK8+pkv8Wp!2tjYWbCeVhK|E3XKNJ?24<5G$v{>s-BMFw#oKt?L59;5T +9}-0{=+9Zju7#P+Mcd(x%^fB>(vN=X}fW0&A6g+t=K5|7Nf~kFEfht;~R$D&`b +}$36oUzq*9kg=>nj&8H^r+WovSn8uC;LT0|Hq`1XeoIF20d-U +|_@vFeOYj!|$A0pAHf3)_DApg1CG`qyJJ3ke{a6!p=lmYm`JaK|}JJG{?cO{0dUcY*(=q5D0JJc)?_v +-m6+3nwd3|)3zTR-#VX+WsK7+mPvKl4d7K+2(4|1<*K@JoZ|YwWGTd`GmC(HPNlh{Xg!UmgF?>*Le2< +0sB#)@!FK%@JRD^ijfO!3G05Q7yC&OKPDfu3+CeF&}_E&cc^h@ZE!M#Eh;`rWfXh4|}5vb)gHtWN%qD +*VG)$AqOA_bm@9B=ll$J`_P3igMsFwC6XT5Z%)jRUHv2ZJ0BC{$bRczin2H|O2ZA@PL)5Q$HQ)pU$^E +P!yjO^5Ok;3@GREPKld+Y4{kt&ad}89e`$aL_!h$yK>ID(5HGt+o3> +svnUhGmcQ0l+V#`yIvyRN6r*R&6r_Fjl(bZV>xtWzfBA^!K$OFhvTk2`;Pjr<7Sp~NA{cFXtwviP)h> +@6aWAK2mnS!LsST)rF4%2008L<0012T003}la4%nJZggdGZeeUMa%FKZUtei%X>?y-E^v9RR?({4I1q +jJS7==pZ1D951iY}&eOS2cg|=^(AQXF?s8u9Yl5-nM|GgtyvgK>HbfJdCw&u*ynbFK7{Hm34q*X#d>$ +s9O7!*UGFpN{dgeEf9^oy=Ec1B)gFA+V)Ms#y<61$fWLKcH%(AQ%%-R?i^XYyEb`b6`vUkuEib># +((!zr1E8<-b#5z-whrh^wO2P#7mq*kdfZO_8mXH|GCXkGt$gnsXaD$Pg&$mJfPt<&!ssAwF${dA{tT! +fj$J{zIMK)0`D~GY3p10{eR@o>f7T)t%UC*ek+BxgvaZ=nXc=cg>)El)P$e(e(%nlXF>yL`dV%ewu1b17M<${cA=JLjYcbw +K5pI&lrliRlOUB3e5wG~;*%*UkDjxtK^+VR9QY2rzo_Tf&UArg}4qX>o|@1 +oq?fA8)BAOVunUEIzz57i_-kytDi`@IV&2!g-!^g1thEI(9*IEb?0O)g8el{I@^s)iTEcjBiuuW4+q* +bT39*(#Pw7_Hm1k+qu5-tGmsr=R(+(iULd7}A{AWAy&GF4^;1mcOznz&?uVc!>We+q@7RHM|CG +n&#SQVy^c*V8H{E+a?DJaZS)7(eW==39r+Aej|vU(=!jbN}WlD2EHjolI4?J*Yi4I+sQl8B=uuxZR?^ +Vv*OJ@X=DQLrY78^?uGzp!Qjc;$4U1(z7|InMzh&06I+&mU(KsT{M^)Bg}C)4gI5uI`h_;_OL +*#y9-r3hC6Rc51!@6y-K6`l4t@;dCsBBHdHLhjdi~^T9sNF75HBNw)+@l2Z)7RxO}=FZjR`-*^-?As+ +#%l8vaP~Tq7G&>_Nl=Qj`0j8d@-ZpS~P844j>i=ui*&9nj29!mL>Yn(&qrN2izY$EbVSe*%(wkF=j<2 +nlN%n7-(h~R0U7PUKS840`|nBFBl2a5^gAmus|+BLFi)^7juY%$kND +uOHU!Xx}&Ig?qJD&`0i`xg(2N}Vb_q_ztYh26x}UEIoIv?i>jOQ$-Zf-{S5j +_xeYxSktpBLm4Y&w_nZj`ea#XNDqF;8n;!7pLR*0^(Wr0=@FlSI0m!bOo1$(`PZIc^C?ZK?W29%7#F| +*1<1_dElM|C4di+rqgu$*s$02R%wN=bBT%|6Z*Y#{UyL_KpZ*jr2i$niCdE1kDcYO;qXUchK}ggio&k +P(UW8fbZh(-{0&-6&*77$C2fLFC#cdS^k73KqfmHozW(G{F<{9XV?|4^|sm +m19Vu_j0(-Vl?UtVKn??5(P}X`rlytzF(_L_lS5C=hL6OYaf>=}|WR4|APLHu6kWe5;4#y|ync@U~+UCndIgGV +WsFK!^)wbgqxOI)8bN)so&Slu0j2hBM+UKau +*ZP*MSk}v+d6Rx3t}w4c;iK+$l3Ne3+VJ-M`3hRkS0Ri)4`TiQBH>4Nf-H4ozQh6W&$3ycSl0x9Vb +G=|MYgsXif<49D2}1Io7!M&BSq7E>#XiUQjA%GImUu{ez%By2h`)wqk@g_sa;dkrg$gvpSXi_njJ8g2Hbyt6S$TCej4~r4pMJXTr1pd`lO!Sf1%WR(#|Q|-AJyK +(IE_qXZ7LFM#DHZa2ek{mloX +x#^@t(E_3<{@qcs$g9*qi#ZNOe3j`Pkun-@1pzG{ynK1ko8aT|fswHv%0HTXEY +mRgXBPfV8>YLFz;FO&$--q^bDFAF%Dnl_kj^?rNcl!h6)vIZ=U6^V>;yH10$~>Rn?$d3CO`cQR~D*-W +O}XFd4wOw$PNguq}i*Rvu{x6$&Tu@d$Z=_jPrdZw>9^E+JSejZGjD?r-j(3$$eX!Ve@=w=o)WkD!Lti +`nQ0>Uo@U~&Ly(?Uw`9xFg7FQ9}X7$fbI4LofoBcW?Wg$?+ +P@*iphcjB`eaLk>TUkXlCK0Nu;3MOd@EZ>4nxx#u{kP$U;=C(dC|a|=<^OwCL3q+?LJTUV6hcc(3B?8 +foEIS7`?lGZRFRcPWuyAgEVK*{Ll^njc*9A$#G*OWw^uPM_@z%uS|@CaZ=t*Fwf-jtde0z5gUBu&`8a +?Q&`Ru+Tun-2jImO +e}OsHCrEwxqR+kIh#h*5UimMNX@8J*z_hy2>%IB%4g2h~kEs*q=7 +T6}BZ_`+1J#-|{>W1k-E^lTEU()-K9U>)IlAEX()-ge{6Goz?aObM#Huk$*5KU$s?!hoZr?CdXqF-sO +7Z&W;L)EFvKL)-km+U8v?V0ZlIm#Mmq5w^*eGRR!#}dq`qHWqqcrY!b=PfmD394U#!<`_?7xbu<9yga +EV0?x5fmdqbL}WbMT{wo2M5PPZW~U!2aCN3&rFyW4Lo7~VKWl#03h;1=y?WF=aY`ILX@Ek9I-D}?9;B +nG*U1Z_VVMkcYgEQ(R^&iK!{gt{%lUz^hk~3-%9M;G<^)gMI1c1n(^WbtOn@H$~l`M;R&9_C%I{=@>^ +bG$FbLnz)88-A8OWzL1Wpv(Al(27Yhg7ilC3x{aMYRNj#L$WF3ZWp+0z1As`ans+~HxovzEYVdF~V37 +kd()rSd2j1>z$H|jiSHux}|mvP>YqK)Q{sXh}ZR!l0FPXQ@wsYf7a-oZLqn%3z?V+%tU4jL~n^*%jv>&XsQeW`Kc>sLNFw5=(xi=xQeghj{;qz<87PhG~KSzKPX|sN8F4eH?->OQFP5{NGnK|MtutOgq6 +NZrO{d^M&|-}eqkde^)?9bl>r$xT|CimgFC_=Q~P7JGEe5f)j47vo7e>&ikYi|KbiZ7Ozd{do)N}Gd8 +q}AIzg>{@cmF}3@}jwwGmkEVpcV8OQa{8Pd3k{_Ax%7G}`6g2k9=_O?P=lo^IyYBfOftf8)9o0>>zT3 +Au6eVFPdzjea9{d*EY(!c?M$7=}R*B!{o>Sx9BqorB{(3VKSCJ|Jl-LvN##Ey43$J7C1{DuRddSNH11 +)s#=72aF${Wr;aRc-{EXov;KaXFOS*IEk4eU+V~-aIJz7Rb4U#b?o?}ha7K%4&?Ov?!uclZ{l3a+30F +`fxse(*-LoB;{rT+ML+kqV6cUu=?+l);QFPjz$bd9ci#3O=?+H6nr4yl>P8mZ;HvzJntOK!ba1QVQ~> +~x=dQ9`u$NfSddLKOfh@r}ARla{g_1@K2XRL#j_V`cJm+aVGXh&CeeAR7YMnExD<9bTd#lHSj>yruzMvNY}BlwJ@q +%-%waMW8AiCjiI^-?n2liJT_`x6XP;m$|WsR2@^^9KH_ +NP9lq1HC0hAtCgTa4p}?&NfGJ@GpBZZ=Ge#ieMV>_?|Hu`jK9Zq5JY&mhY*$5brK6@jtpSmpig6Y4Q% +g06)@z5$v}Ka9aff_hL8UOp1Mu{e#^1EVQaAn)wus(z)8g5ix+3MiP%QR-eO$soIH^vz8Y!&Nz$a(8d +=DujWj?&_+;KJBUpS6CnGtT7=u>z>c}(FZ*6hx-zJOU*Mf8?em#<@o1ezX4~FZyge`fn!h6hc4uSD;x +IXAe#)QzRXq*_>?3cAu^4y3m+cBaU^*_Jszb4jcl^fws-iygkiL$%*LJ;<8ka$j~oHXNH#z_F@( +@yOI9?Cs6nE&!*YDvKUyAzosLAr0O$Ne`@O9KQH0000807gYaR41d=*y|Gj01ZR{0384T0B~t=FJEbH +bY*gGVQepQWpOWZWpQ6-X>4UKaCzN4Yj@kYmEZL%aO62BR7a+hOt(GJ)Uzj(IIVY+*c-dE?K&<)OOVA +eMX~^8M<b09fm>xgnlsZeXa^ +u(};}S~O?;<-S3iwkRDCDlfFmmbJh1 +a$O1E>)}DAcwU*7w}Vjm;NDr`n{P9KGjvZ6|iySEh%8m`3>%_t;ITrk?=n=AM8ua>va +Q!x+=<|-HN-SU5UC}NCmRc&R61ADov!Vm*RBWu4-D2#z)xKZgA9f2w^X(h5QJjF~7;L0lE099F6$vEB +ZJZWf`zgmWe}gF(&EBl*dEk%Mr>iveN6Kk{Y^M3AiA(zJN8SLbvJ?dSVyiI0gNz1YKNU>y)Jce@~5I; +)pZA{hOog-4P5>GDR%GQi&S>BU!a=^9%l;{sooBWHz2+m*dIk#mSpDM{my~qmqC8@?L*C*-L--%^1XO +PrO0w!nS2~Td2B1n8at0iGGc{I(?~VXLI0Gp1tjUISQOUWEF$=UJW0HJ +xc$kjqDBv6m}@A&BGNSw6`@#OL2@6snznCt1|C*O&qMS&V19UZ;>33ngE%fFxg3HJZP`)}TV!rutO4; +Rn(|L5`kv+VNQ$@|X}#MjwhPft(Yogcl-PEOB{Pu`x*NT*#mQl@D-b!s+cEq8f|yhEJWDKO?hl(uQVM +Sg5mp6zb0YHl1fAj)AVFq|H=`8+#Z5fIerY_9c;>5w1$nvHY_0ScXTCIV7;KfJLkkY_3|Mjm>n=Dag-UmCqF6*m +&cQYcy?4IOgA$9u*l?sX%%V&JY*~_D|bKDU0P3mNl;>ZapHGjUbdW!D4(DRqYWx;Lg{?fwvhqM36kF3=ZYH44rOk>hP$$!-Mjv& +?k8QFG~yLLD4*orwJ(=yeuA=t~l55%(5$^Pq%o-dotMgBW^sFJULkv43f&J9$t;FYm2KY +&201r!pEI)RjGQ;q+BKL;s-rn5%2u>j&V#C$@H9BK9tN*ew85_U91tsy0AZ^#HX7uMb3O$Hq&B$bIlh +A2P|g+Q?`(k3(MNrH*t8C&C3?A6dc{aN|yY|7M#R^w|^tEybd)9zl!&W*pt5^`>kK@L0sY1oIC6m4x6 +gfe>!^;_;;ikCqPsfH5^1A%6}XGUn6>Um8z*=K0`L(--{>PZf*<4{#i+g`vK22Ecf2LH9l{+xZ6V9WP*DrAIMrP0lv#ELd(77!V&FN=(aTmCDWa1$SRnOBI{eW{he +Nke8ZN^)rRUi6z%|efXXiUWaxmDTm=FlzpEZMiCm*rmcqzaUkW(8t1GYT*C0qfTR}$UKyo%WUK#=7em9C=?725~|?U8iVxsS<;`sXyh!1ShrP;pAvZG|Jr0fqP;JHuWHybYfzL0wl0Hz_utQ&65Oz +J$y3h%>yG5f{goh-y{8s>k0y)3|s?NZ})bV9~;01yxnFt8XJx9aN%(h{+f9%!dELpB5 +%Z>v?%~3f#+`}=L>)&usO^jVDbV}0IN9c_U5|Hp?GEQNFb>4RTKi;2@kz=ukZ`IMOFs=yi8Y2fVgwz~bDQ>rm`VOy~bWgkjNS)0M;xlpAH?|Ns@5fwC7tH{x)#7J}g)Dgyhb(&j ++^MJgsM~-dq2lm{9uh3xhiTB$1M;vBb=b3`-(ioQ{eG5KhdtU&dparf9M~%&zU=uhFAGh`zFSF&SuYm +;4XSR4u!L^pyjT{1v8zo1nyc?@)26&|8xvZYjqGSh#&KNYh(a4jmuE8aXa=T)R(6r-DsM&JH05>>hkA +s_x-j6==gtEMF2bO0XEaA4V2B9-+zxRYOtWkOfm4=|J{^9(z!8_>JiU!^7vpHhMvnrK>Y|b5n8nupYFblp3DvS%^atFY>HAlG}S8 +RvBg7T8JCrn$@2qNfh}$)#D03cWryS_!`nCN|k6w57-|i}=+2UYO>S)gl=P)RIJciNYD39@kxx$HhIO +vj?+ItdZ5SHG~ax8&1gN_TqY*_@l6zT=ec+hXR|V^tyH52AFb9J$2;IauN2t986-?$PZ>CJ_A^7HcXgQk~7PjW`PO{s +hDpdV?3ryeE#!tRbFZG(634+J0LmiC-ogDZvMmWXW!MbbAh1umiAvq0|5d5em2+; +P10h0t-hlw8}tIA$XsLe6rH529_*Yh=#@NxR;X{We&AHDUsRyt)J4SciFz;Aaf$dWeFEo;MdmM*Pzl3 +Kd&qx!w*5B@$2y!n)W&~>(e8Te&T9RIKmvV)`I<5ot7wAqd#(V^^9tJZrbH@nW=(<3gRuvcX27IR7(- +!R3uTB(&PIP?qRGz*FdEHs-bGAAP*We`R0SC9ohhmpuaBcCsvrq=?zSNIjY0rpumwY2`H>xm<+~GaIE +_71@Q`_EA})q&K=v?CSYQ1t=dF!}IDMi+GeKVshhY-!uF%rB;F`#8mcf9QmgRs3Ga}&d_Q*nU4_1SN; +AfTJVmedEHTb!F+B+9}p +;(#t{a>srJyd1p}%=f^X8iCribHoSko@R?c;C7GPqovt8f@`JaC?g7{>oft71iOu)8Y0o!S20{+^#tZPC +M-s{-Y_MChXJY-74Dg3U?HX=kZygh)}t#&WO{{pl@R2%J#Pd} +7)gqZFeV%LcGm<+k&0h-LsIb^z!9C0q^73eHLU;B{``mL0CHg#n@uFm3=nfc_gQecZFVGi0=&W1%vuc +uY18T7rv5~S6yUS%*qL)#Be@xj9z83Ah!oeYd1c`!W`)1hYL0G@Jnn~p1sT#E?u_XNb15P~jcMHX#vB +m<`hp2P6nBkpY+LgG6$9(;C_K#F~s^pzLQ-HiD^ZAN-4#+>p`nJgD^9^|I5dCSvsj1* +>*J<3om#?p>)bo5&tB2qbwl@|rrb8;;tsyC^^48AO*L`4 +I;~gzv@W6((?bc`|!8q~wF3slc2g1!s3TC`IVZ_d#&N#DvS0JFhzNOOR8ti*$x}u)C0$&In5!G9* +r?vE3SdYywDVf2O=D6Jj7k^S;or8tkyNoHUx%?g7URjt612&DQaWg% +@icle-XBkd9TYY|OUR5w9rtBu&j=eP^-J@G+S#2aJmA3WMhvr05iFF7oOU>)Jr3%fTlV#rrQSPxs>ahr_Jq|S*A$F&$|kx>g1OI?EE^*dhvY;XIWsZ%GM| +IxFQ^JP%+-7w&w@CH2`1Tgm9lQy*(fBUJ6vlAdAiPM4cs;NF;sMgwI8=uTXc7<^cD+8bi1K)Sd&O!kS +`EaE2DQRZ_G558p6G90D`+pxEoDrXjW8)6B8%Q=tfq^4r6=$W!wSDMmxf5ow42%Z%@vTW@5c<0GvYSe +CGmqw79O!#hqNNWxJ{uW&l5Q2W56}a1BDXxxypO2Mt}(Il!q73a!C(96bH~(?5E=LAY@mnE)abY#Y#x +oUj@yR%N(3dUz^4oVEKn*?+)bZI6l>HwiDdyzg$apgVY5)EiDgi^OAxv7kI@;V~N_Kj0{L#-sM|NM&dOjz#BL;D(V8_Sugm{w?mH>VX=rA47Dv*i4Q$&e9TF%82 +Y`_jXNTp$SBbFM%~->hilrFuuhH7m%^%m!uJ?2L*(7aiL;yc7L16YGDX*;Va{=C1k4(G_iq4Om$8p?cXRLbsimJih{^!E($;q!R4Fb7wKTsQ63ukY9~UnRMQWjxu_ +o2z6z=24S=KaWVksf8g!?BXv*&lgUXJ`_jqWK$CQ%QAZ9(3XzC@w}oM6PW5-&L?HyK`zyN4-FzHE3WQPx7;S09>%?H$Sc#;zWwqg +Nmz*e^+0c+M4_;X?~YwL?oQ*p%0mR3MEOtn+6KRMd=`G +zy|#yEXo(=D1!SvsWP3BkSZ{_V-{#h;=UzR3@oqB+1Z2iWb051HA)Pn1=duW|*h6a)>3?%;N)z0t{wh +c`ND23ipoY&KUqtwG&ft9sL9zCutehKaY +;@L0?J%3zRe!y{ds$BR^v?u~N)EL+__k)IPge~)PnQ>I?0zgQ>rIC*yk1hOAhXe&9AskV| +kD-#<=wdU-alKA;DA8|6F*}1f6BjF`LVU|JcqDhE!lOX6A4!~v(Fn2a;*IC1%RGNXtJ@o +0#6o@u?(f7%NKk9HbR0|)bd4Q4yf6T>sgm({W$LjQiFe4B3X`K(D^=;OWeq?Y&8>~V5ZOGAWuNsHQO5 +fFHlPZ1QY-O00;m^MMG4D0qBNmApigje*gd=0001RX>c!JX>N37a&BR4FLGsZFLGsZUukZ0bYX04E^v +9(J!zBMHkRM}S8(V`S*oZxab}W9^@N#CeC)W&lX&fTW@}w8nk_;S#}diq(QT!x|NFiJH$Zhewb?^ec1 +r~C06aXr8{mWF=bcD4?S9{0*UdIrw}*ph#$?#F)4obBMbe8ydnKx*goo`xBwbrWdEF!x&Bb%XtP7ve-Qnk`uZFFJk_8F;5Fb85UX3gGS5ym9XheDH?`H>YxU%{IN1^rs2i=zrfu +qVxvzf_MN=Ncsg_sJ8{j~-{X75sgce=d4MHrM{i*Yx#z2XWYe9sdNASEEM(Dc4hfn*y?SWv#wp<@&!Lzd71 +Kr1f?b~(fz}kwj7}h&+h*m#{v8>9mRJ9jp34DGi2l1rF&2%{t{nAr}REbSF?MIxro~S7Vf`Sd!AK{zb +cp2@vt;BxF_I2|?b^Zdr$EvolIy@;xdob#)Xt0JTRKX`fDMVF|xGe*4s^C|`-P4-6s11gSbQ(OAO=nP +N^;k1OWO}5rK4m2{Pw3Kr_Q^fE9m%IQWUg>eXxBR-_8zc;9>xH4$F6Vx3AC1IMqXBhep-y}0eI@6{2; +7{T{-Szz<@jAzhY|CBqY!`>cLBB>2f>Wn7CY4i4G{ArlcCHN1{5>jP^@0_4{Hc_BIRRb+gJhZLgPV6% +;}T1#YC7)#KiF<**aFhriOV`PzqiSi7SshYy6qLVSeXJ@6q1%^7s>n}vbtQ0={HqsL3 +8OA2fJ4Kkk`trWOkNFUC^xV%KaPELGjgM0x`b6}~nL40j0m$6abcM +v3(YRwb$6S@l@Q3u{iG-mn&9RmPsfs`b#~8dh^7Q%sk2=fN4|Fyidrg+RCa_OkrMHpqt}El@*d +9GkXbV;~kN0dg7V=0U6h02}R_U_r&j(m`Bb3{%(b>v@y_M?L^SX%R{CXo%HbCg?UUrC{gDybiCC9M+VnsnU?aU4MPc!ArPRe(Z~Rxi +q-ZLBqi;ix4((=8tWFPi$bV9q8lqRCefH8te0yY9aA? +Y$CjSv;qT*Ej=d?>Lfc+u*4CXiDV4ZPcf9(i;qLeE8de80sDQfj4L +!AaEF^F;MKm&?SGdXAWjU$2{+DqiD@c61O_3R5XdhRN77tIt~D*G9!R`@Kd +fo5yJQDhL%Yl~{YxXT(4H~3|t9+Z~@{U(42jr5M?^6bp(O>aSzI=HFi-wf0bcLWcTmrq|NUw!dS^5)e +Go2;B#1T!atWg)>VJ<{hI^u6tC5Y@mZbXM@aR_+jlM`SIGlF-UEQ+J&A&`^*#XN`~(orZvt +?0dtbD6Bx;%L+HeDS8V$?kDnc7?27)Wm>R2m4hTfPY&2uIO{DLcQQ>NB& +x^p_N#q&&I~Plve?5btl6Zaer&UzlxfTkwRII!_+Wlrgf!PbJ1)8Ed_YXnJ8!tRiNr%QS{N?eIAYFmd +MljK1AsoeSjhv_%CekQN?wS2jVBD_JXM#_(ziu%IRy}bh%377o3+jN$zx38Xd-e2mXN0Z8>cQq6fuz= +wPdUW0U{8Ug9C`|faeT>^C(Sdv>mS1Y2rsZW*ER4|K*{<8?TGRUrW@J}cGF^P3u^kTZn1eT2Nf& +B;us10=fMoSz+GODyDrg25vbi-^-<=nLe6GiZmn?Lh{h9!>kw^aMNK +5XwGPCm|jQ$p6P=X%{zgeQhEVG`fcd+`YsJHW2=zLymeh7)|5f(wkB+QjTZqh9n)GagHA1fosW0R)#6 +oM;esv0<%l}}B*XGRIBi3;xzNJq8Lb3OH=vifDQWC&Qpx{sOx4?^S&&|gQ{NC^Rz7+q~G4$N; +BdDR!2L8@|)lFx8Lc-3XP(oAa`?7WXc7-(pzG=a-9Ua_0kNF0T-3HoVGJVOw;uH28@UEk<~7amk^8IN +I8j>>CG+SMWY3)udF`a;@5XA4{w?xVfSJZg1z%kM;ApHElVrl(8z?*`<4l9mn`lBrY3flv2Q>&`BQIzMt5AvRLB8P*~E>s!$`vHR+ +Dy4#dG9vTr`u1DEn|u%d^Ge$9N)Ds!fR49^pA(V4hbhxC(0bQoO)qgK8G?gFOh7Bc(!FxMhrCh23;%g +Fh;k=m6~z7zta2CXKaIxt+$Wd`Za!V1O}JiG<}i7;Tb5xib$>qHUrY+rY4ss22f~cJfDWm&j7AH4pPCO@vKevY +AlU-Fv2Nz*Y8MB49tSu3&(xx1XWquC^kbDPk-(J;~V63AH5LN&^grK7fRFKP&wQA*nb6X>wW1N%b!20 +!(;kY`1Hwcm$=_=G&d|d#%U%3Rmv@T#BZ12?7(1{;c3Ru)r1=QI?sNL!W=u^ +0tZY8;Js(%p&k=St<>8CrNwkr(u*KePIHZh(|&V=VHW=Qxc$a(DNvi#8MfZJwU%eGl!$Z$2o0C82$NW +Ian(yXN}ggu&`@Q?yoW{q`}t1`8kl^kch*js4$u!(<}o=)rx2p>uNw&41$zX*j=D2h>t*{J+QU&b8;B +$5A84}oxstP#Gw8hjT#NgA;V=oCTs>A!$n;vvH{cYx}+2d<(soSGM2|q(MPo;LzWlWP)$8%$)Wm+BOA +N&%P;>(qz843pvD|k#t98^1*BWAcgpr{rfLhusc3;y1H!M%zDkIa%l)<;&_`uKx-O4H^3y9)sq`9cX- +2>auS8?;LhE8J*acd!hk&NE8@}ZtLk!8{0n9AVvTP~)ayGTUZtTZru;h*eYfgqf1%;<faI%G*O +dh&?!TRZrmbGIC$T&o|@g~Jy;4nUBvrrw5B4ZZ&b6J)(sB93Ubd)S~ZPJxj$=i3!43j{c$`l3qId7GP +1=6-*v_W^5!V5TiMyfpQ?xtQNwySzg5)%c{uD#abZIB5m*?0s#b{zLN|eB(E`Te>j4waTqvr?DylLL)KEl;{$DBW~Ct6Hefsr$r|{8M|c=PL^5y5UqARx72I +HgI1SuzFNOW4AL!=1@T!`nA+sGJ7&0!Wz9#)M``Ut-%f|*j5#Y)8x&Y=TAt^?SwR2^&l;1$k;LFa{zu +{qfC|nrQ|0evmxZ58X`)dsTL)up$J?~ghG27bEy1749o`co5M%_t?r6j2{b`J-i`WoTioEuk_`X*<6@ +cZ#K+sziJU$E_rE>8NS+fuQIP_LZlv%7Ei+()vX+EF3ewA8lEseFn3Bt1>^PMUmO0}ll}={XaE|XnL- +LqAXQ5{7u}dGTgeeow`)o)puIO@T=mS%;;kn&`;eKmOhjlif8Wnl2biqm^b7{@(J+h$pN~j7GyXplh| +I8WGraVWEQ*S2>2NS<`Be(;*7PYEZBat&S9wlsrYfNmtM$$#5f6h>vtwly82a2-aO3M{-Z3F~sIj&Dg +8Cvsv2hoxHm~uUS3_dsAyTvEDma9X>IGE)*w73#En*nQuWic3q$Q2Ht%wSO8iLz68NuGv4f>M!F*N}itAd1fl@n$PHbp*%nTm%X4NxSkS +Ta0BtxC;1OJ20V{|O)Ds-g`2+VTlXMlLIOMDVZSMkJ9hos7Wb6W1f0c70n-Ym4-`zD(mF?0yEe@U!}3 +a)b@%H-8|u+x#=McFHX|8?w}kVkm*@K6dbWXN%=sTfqTmkrm}J6!k`)fRWxE^!9UBO|8`ZIJbLNWOj$I3IbO`#HQE+(VasrVgLDl<#z;PM5lL)%608wUl73`0~&nb~u(uVy +UxgUaFsj}U5ahNh0SSW-OO0=ChxwKdk4F>&V--TosLwpc@S%dx)oOlgIkNRxVe +_$38EAc#JX$(-N9d-%I@w&u#A9@F|a(V(9D9|6!JS8;-*A@5|9>qqeH|~u3@|xB4lK?U9;kHw5gWGsB +S3QpVLhiLzVbjw&`u7H`J`Y&awGwi*`A05cl3sv9lY1_`qvFa6EE#ChzdJLiJGR6rM7d3!)$jt{CcbT +*V2K9#sQf!$)|I=@!K;agaAYBR!v +fys0J3$-1Vpq5tbIE<@{9+8k0kVh9J|_G+6PkTQ$u8=2J)X)vM~H)j%~rWjeM}vpmMBt0o+KNVCrEA3- +`AOI|*TV2+v&WmAtwp8SbjP3cWCk*(2+ihD9@V@X$37|Fnr)c^ah9)08F8DIvs=xZ|10{AjuLxT2@=B)_%EGT~1}bEu+np_(6S3rpLK^^HZBCv +1#pOPno)}#jr_VO3wp}7`Z$T-Sv4$W2#lMTST?rq-tvb1srN-+Q=p!x`}EJlO1fCEO}j{`A}n)fnZ-^ +3??yn7>!!?hfuRO4*(4hSJ8%??T%ob8yaeh7%}H1i#C2NlSkxPhtf;@V<&`1shOYmXA}ZHOQr9vIk6j +`TERL0To0X4RA))7E%ye^Of8IXndFF8B!%tsJcN2W`@=(W&g^6!L@CpZ2$t~l4iww%IbLrOmvC|AMi< +LdK+54jUN2bLP0C5zT5q-^Jjza+OC6oh5{-JcCCHhCu_&9MUKFdi<8Xga|Nd+vk|p5yR*fJb&(YjPOm +X*sPLIvqY}vTWSt2lxAT{1VE^IFUhL!GZ$e*6=|CdS5oRPlY2rQu#DEADXMm_ +YW$lJ+Z2*>xD9TYVVf|N!xCY|-E12wii5gl{nbemqMe&DXG+M=rVd`@{w?*LYf{p`rJwt87(rj-Q@(T>)`*?NE~ +fR3dNqv;9ON5tm_Vh}vfOo$WxK;c)ozqOi7H2o(N1gob^hIOEG>F?}ILQ#}pRJNcFZm+U^$)O7fEa75W*`jx$lKP7(3tVX~eHHn3Id7P5~pgGj`T0lc((m=fr#~Gbu1nXMBh^g0btSq} +fUPoE=7gfBYI#>{nb7&1fs-OQP4BA9}vuH2S=nYHnGBcoN%kg75085)B^K#=BDF9h!6JwylmbzVpkMG +phs|-t8TKqWxMNm +@6Hu*$$ILM@$B`9k@#If8q`a$#5?r(@cjXF$2c~D1wOP@&F$$%7MMBwZ%p6!@9i1Ce~;T2oxK+DSAvt +6$?Z-lej2QV*-j%mVNeLYe@~(3UTo@*0PS2u8F$lQ(9Wy^y^}Sb3X+lc#7d_ik3S~oY6!ARlAn-O;t|pvK`Lp;0+Y%r#i)${0;Ce( +L&FWC!RPTBOg~$;x?fq|OB=z~TrkTS>2`V0SmB?Bu~U!+f%V><(^!qIt%*<1cKQ)cY9?C;Y +kshLykG%t<`IpJNs0=zEn-33tD$2Z5uVY}>>Y%;w>P)vH@6uqh` +zwVWF*d-j)rU +4n2{F0<=_^n`ZzCmQS&GyW$;Vx{Qpe62nMWal*XJt?ehkMkW%J<0t(=UZFd6C}&}-N4+34hS{0lqrRR +%q;fcNeuGOEpl)RlaTgZL2o_OU19~49=a1ZdhFXP7Kc~3}vS?5Py9reQ`6ij{KkDuoMnhdWXpi10LF# +uNXgJSb7Ehi&d-46xPrb7obch+c`TCEuS*s)s&G3TbOWuXNc#m>$A@3b|Ixgnv#-6&Dt5f%MJTk0MzRi049O1tXqtisxMbr;EqWqAg|XFv;BhXc3*OIn7p;aygH>OYjqtHGW`ic +o{6Rd5#*XJ+se4EyHb(SJ~1l1`4{JC{Mol_~_}A4%u<`Ywi-CXr0x9VKn=7Pe>q%@)<*LH$0yzj?=s7vau^5nJm!RrZ-7RXgnise14RiBf4506 +EyvKV0)O)RF-UWd8jo*c7y)U3eo8fdFWlWr|Me(d*-PhfyeVEQ|9PW!1yh9xk&-M{h`fKZL4+cm?D^` +v)>y=EA9G;MNaU8ibAh#S5l;eNyW5jKa|GAIv6USt9=KLo}$_f|!K6e6JX$rypzuTPJ5-#27^|A_mnNdKg8`ZA>Y;QH&>2?SqN>caY?^%e ++DAgYI9;*<^w;Fp&m9U^YdE%0zykleLA)rWxOxH>@|%b9hat_R&ds_)Z?giCbBZ>e(-&E*Bj +Pn4ZP3k$j!b|w{Z=rRI~v-;)R8OkOp*K5#jno%Xg;U$`cc-BlQF_XYXU`}|_G6lbzten<*pY15UrZ6AQuhxcevwx2o)uJf|Z=z(d`U5q +k$!GSTq?d6vL^3fN8BSnT`CDEPz7f?$B1QY-O00;m^MMG301i!>{2mk<}9RL6v0001RX>c!JX>N37a& +BR4FLGsZFLGsZUvp)2E^v9RS#6Kwwh{jBU%}`Qtc0rScef52BrR}ga0lF7kq?W5Kucqrx3s8;)b6?4{ +qLP2^+HOtH%VjQZY`1XKJ(0w7Ux!VhDmiiisraEbn471B_&iws75p4*57wEbWr~&D&zK;ON;x*WqO~p +w+1@CmyolcgvRIhE%D$oXP^33!p2dyqAkitXlm6JEw3Ip2`+jg2rT7n&4L=8@qCqjpwScb +`w1Jjy8*R9hoL>H;>r@vbJF6O`E}l*RawPnj9%7q2_=W!A3(I*S=mY%Hiw@4vm>6+rlRCGk*j`9sE~V +i|z1fi0p<}zz{lyW?Pxf6}TD!|K+iW(KTJuN@r8c*E?Ign;99t+(8@{3&e~g+_C; +A1W6_4jTKPK(O&a(;+(gRklKeMCZsimTBCqQ*QW*m}3^-O=udk~lf(&RGAbe2*d&D+2ua{%N+ZK^N^( +Ysr{^5$Ql$gS-Xd|%hTffy#n{WNAqjqAl6t1X(!&ufD}oq#!5I530X +14bu~c?wWNjo*b1>I*{wburTm&3cU+_fT>C!mz_M?A%Ku&~P^7a!_uIa@9&c0x3^wXktkuIeP*scv&- +r3*D1I-dF*wZ`qSDCrk?}2xzKHz)yCbU#yBd;%L*=Y1TWx( +;KDAPb91q{;2QRECx?&v}=$M%aG125$45%)G2u>*A2)fqA@mQh>h9Z?J!N0Dub+8XrCq%|$qdIVb^CZr^hH=A3GfP?y{L*E7vTc}) +b^ +Fbf@VuXC0?9#UuqfG!!1;$CIsPJC8b-^8+R_I|zw?$PHMiY|phVg;>I38hZTD9QDL>3zaxrh`bgDtR& +h$48IdEQrP47m-ip3D>CkJ)5t+WnDwX`1i9dQkzmFqUR+RB#U4x${xFA|hE~qofa=ZK%Jl4m +@ugI_j;mTq*I8z^>ZJYWw6Y1z`iehUWe46#12TpO8 +#snw?%k;ZQbOVBahB@_i;ahgI6-I#Z4fTF_{=|$xd9UmtXuMOm3in)st_Aj{DBDk*BFbB>?V9zQm)f} +*ojeDjr?H1|wS~k&#!tD!OEmFk%4R~Ni8?l-jbCXdqj1;?I5+B~)ri`iK^N6i4859oD1t#J*yCwC!7& +)?Imfmo37^+_lYRQkP--nHX9mONyu!K;TjuRr*-}6gu=hofxH{DBi8`?ax^1uW6?L-U>c28by|4fs2q +b81l*7l{&2>@0&L2%&l@qodG5P?KUNn`K=atJS0FcDN|93p-LK%iA{haH5w^9`OBP=(dV#xRJBnLCaw +tHY&}@x9jl*-p(J+)@9sr=M}|%?EJB+4l+V2&Y}xJqGA3x|^WuIj0=mG(?fq5Aa-))I@Gn>^5rJ=P-F +@gK7o3M0Tad+}4Ln=?U7!#~2cxUWKz8;|@+HCjyJrcDoX<(;NEz-a7rkPM3BXbv)V3(?#R%`Q>iQk~O +LD*fV$eOg14&-$}aMAg-AF5zf&2X +{?3+;QO%&bMn$!7CYtdGSv!HT)`#R)fs?g5}Lx)lor28{Jo@t5p$9SJzwYVhVE?@^LfAmc|TS#w;#c- +Sn%$q!F5o{g>_u(se7$vPfr{R1YUP`(%z=LOcF`5mQk}&Ns1O~ +PUb&r&%~0Mg>~hMCnYtcQf4|{aH?Nu*?HsR|>ABY8?>O$Jhvc0aMY>BkGu{F|)Bia6B!hl`$89a1q%Q +Lnt}CBO=KR~pwad}%GQ?MJ$Jw8lL?-F=Urn;j{{T=+0|XQR000O8MnywZ7rB%&e+2*l6%YUbAOHXWaA +|NaUukZ1WpZv|Y%g+UaW8UZabI+DVPk7$axQRromby)+cpq>_g_J%C?*%G9*R8-1~RN`(;;Zlb!qlw1 +OhG5HXE5#Nh+~h^nc%Xq<-3R+SNc1OT0VYeRucWS?(%r9Lu$GV(&`1n#u5H%k6gXSnAD2s!jW-?QCuI +j=4i6ENfog7@mt2&+l&VwmXMbEAU$8E@4+r81A%5*x!|tTJbVr9|aCbEn)vEyqg8}N>*tm;hKR|y3>U +yZCXlo*IIms?^B{ie5OCVu#T5yD}EIouf^wD8nF|~O)1w-;uON~uv*tK{_AK9WwGno~tTS`={PzyI<$JBf?P +A98aopf$_@QkIGtv-vbnt|IOdmFKEp!9Km+rCvp8m5IHy4#2<yj*y@eoOP?4-p$ +7nNgg#o^KzZGOPaM9{q>gDXh1^*$gxa`PZXS%hdMil`hMJz>|vB5i_cBR6!~W(6ShIY~Q(9k~CQ73ElqK4`CLR6Vk#6{jlPT7l+})_0o9MLfPc3B?NxD5%|`I-Hm|0(q?e{T705X8MNC99R +g^#p8~N20echB%-E+jMn4+p;nHg4_6&t(#o9maa-dj`b1M{ZExc^|KOXT+d?!_L5h1?kOts#N5)RAJVGo-fnAU%^ZCeLAh)y-t9lbhS4uj`O +Zi06ik7Eyf-2LBmIY5SdSwLg9^nH=133NF4Mf59kg(vpcX+Bs7iaFfB;_BtuPZm +}!s;hViC*| +*uQD-#8Kx@LnF9_ZYs-m|-%MHN0Xt$iyZuyHBzs97K)~3v;fOYM%wc#5|2f8cA_7S7`wqjpMjICiUH0 +Xjt$bs~emMZSEkTmxV+~q~l)~xuvnAl4uLXV>8Wl>;qPlz+8k6JT@c;Ao>P19OLF%Cx4Uswic2CZc&$ +jXDkP{E)9UGF&MhVd1UfDCACz_b0d>XG+7(l%3*jP}X_J3PUrcz`Wl5QTJ`33-sRt2L93`B7!VmV$s+ +!i#&^gz*sSz#d%VB}p7;L{>&`jIb7+pdtKD>$|%0>i`KFF0Ckf_fM7$PhPqbD(=JZq_wV2=btB61y?U +{oRSNJvS^l(Hwf&#c5ig8iixeHLUMYQlPSAHB;aja5PkhNjC3UkK7sg!$S+?LAU#85WB~W3w9qSD?3P*YIsqmv9xRp-SoR^hq%(TPHFhL>NO_lStHkF%%MGs&--= +WaHh-$Zf{#!JeGUUh?cnmrqpayeql9TeS&9fL|M +DV3)$O&5=RJ6fv!+5d3&crKf%J>ZeewvE7B_ +2;rto^00vzE03rYY0B~t=FJEbHbY*gGVQepQWpOWZWpQ71ZfS0FbYX04E^v9RJZW>|wvyldD-celEKM +XjM^$RqTi#7JGpRSVxoVQUY|7)JDG`zxQzS!D)@c3w-?tCk1T~XGA8d&P8jVKZXrSD+O*e?mzFrSaQ} +t&hKWNOi{^)*PH}$66o^85jC-`YquG0NbR_do%=j%I}VS}u1_T5@?lDw+r)o-^(a~ogDHaA9CIQzw=(c0OY%JwMW3QK1jAcT{pWnA9TN8UVZo +C`(J*XZZ5amtSak!-9i7(0LUHFT~B5jNY!k&&T_!yzJVta2wv8OtOo$Go$kFW`?cZa +S}Rr!CC&{>F1*7;8M@MSl2QclAh2aKtQ|pP +ii*awD>S-IeV?Px~1zA&hbSOt7NW08Qt8_VxMZj!+v2jWqR +oHwgin!bdEC?{s0 +fCDZz%B$lfBo{S?_a-I9?Ida*$+!t_Um;Xu +`sx7D=l0vji-z07+srGsswCi-1dg9nf>4=eBqBMIi9D`EBu8Zc>>6> +?nxMT<O2rAcob%BSL*zXu`9G)ud08lxa!)eT9Fl@MuIkgPML|n{0$Tr +B0ww+irjlSjEH_*Fv_4=;PDX)#H;le%j>+(s&CV??HAw3Ypg(=lRiShVZ_u}#C+##H7eFW_R%i9_C +7)&Q#tqu4QYQ9}?KRevfC?0q5siUlm9wl^^poI#wcLA +U_wKGiLR^>3muRhsO{Xw%$eSNw7?8bW)LlogsmyZMvyH0#)5p>@ZQZo&SZ7+GYYn}oaMD5>`_9uIQCe +Qb)xQEDje6WManBXuCxl*{hvM#~H6!m_$LMdX(vJ+Ixwe0&G7SZX149QkNt87rns9!Jg3w(ZoI-R=f2 +SWqjNH-2|0Toc!s|Jv<-4~*g`2%S28azLEM!owxa9aT*A{Qz^eo7*2R#djOZKlYgiQw6Nu*EeD6mPG;!;I$h8`NK +VZu)~WFkNXHcG9NdJk*cQTzu(pdXqV|Vxc?~7rbS^4j3W>R5A`k{s1d#r#mMuRNRCy(?F_-+=@Gh+iD +3)2>1;YDUVSolll{CQ0%+QQLC)0ePLY%G)#v($t(pw!Q=u{_Yyp-dM$mnR(-)q2koqU6tI_|`0rEC+^ +#`3vt5o{@Tgf112TL*Yv-4uWxm4IAn;F$fIBrc=0FXG$qWAOom}6;@K>4>9|H|FzyA2fLe|~WhrHUOL +4LAKt9+EI057PB@xJk;5$}w&&hwmNGg>A1ABH1hG*eG!JGvxb>{KiEo;!9LRP%* +(hhg4_yt?P<`jc_sr~9^mSaxPt2iq?!;DU)$kic`F`3M*d`c6NI)Znifk3&<%;d$=A{S8GJWq>qvy +mO@gG|xN^!I6MxR5j>@%Tr$ps1X^C=NLSB-2QEnq^x#V6c~E3kRdQ_?HD5)20w@wfiB%WCXOI)~b}Ly +Vg9pFx(kavjeupRr(b1?D5;-u7tqM#BiYT+A1gOPH8x$W|0NJ9JzYBcQy0@O$zGgLRJ#=7sPzD1~5Rb +ol1^KI(GPhilFXrv2i_zrd?K`dMihqRs5zsQj%_Q{`{P~GO&S~fXfGq4H)<3wk|hEMhSVh9L{^f7yQS +b#%A`j_5+;_Xi)ewQ%r1Uc89(QDHSxEtt_;wlCJ=q(tT9{A%Zm*S`k;7;(1mVM76nnseB4YH$M|EfQB +8oVNydSN)cA>SiU<$I8Qk^4j!I99{bGe&}lXrbGloW0aFiIMlLsoT}g^D(-MQ@M4Lh%swNkTlQsxSFR +|m{s8!Ns)+13wYP)6yqHyFm3c^nlVQ&Gc{R*?b7aU?=?2hg6qU?JxmKUG>`^N+!)ApyxT-u@Vh89XGa +S&PJ|GQpmSMmusjB0x=`UlUu3eCpF8= +ZAp!DFH3A?lsH$Mk@6o|Bc6a8O7! +EET?h;);+*p2nJ)+C!VV4gXRwHb|4OE) +`NM-*g3>~wrkqw@Ia%p`1s@uFl$sGzku-OK;PzUpE(Ol`BLR7)?+nRYtWiQ6;(i4{KcBSaKc|l5vV2Tf}3{-!aM;sME4A&GP+ +>AP`fKd0|Q^i{UBaac@VuJL(^?B#q@iELD|DDJMgU?wOoQf|o0;`V@Tb2Xmt#QpqV@^@|uSx@Ti&1Za +|EqvS)RP&jR+_x)xatmQ^!4`-Z145HL$we@i(U?d%&I4F3k_-ho^tuerO^{3p=^_y1P6B|1UP6&v=X% +z;UAO+5&dz8H4GrxCcbGz{?Nd(?;41Mk2>+D8j2zBK!5b9i;pLmS=p<_waym&W3gc>l33MC +XIpYAZ5Of4=mM9feHnt8<6Q6P>=bRr7Nd1O6Pa3a8^oz0Aq&VsnaN8a-znGmK=C~Kfg5AwVtV}@jROy +~mBEGpp{^s=cF;3CWls9i^j%(Zz0k5cL3pf}k~Tyu~)(AgY0zvb*g%(LNM;J^O12k=^_8+w9Q1;l#5x +|6=qqXwN!~BsQw +_)fH4RS4U3@+1=?ytg7pVl?`yx|sGY35Ay4Q9{oy*U6CmFuA~dY$q@vQ7ZzoAAX{$E*Ixj2M5gq842K +19h(lH|bioDd7ftTD*z6~|25>fT|3veGHG#rjrg!4KZ^EVcXjkYB4;mqNmxrtHVGdMLV&y~pv8o$&pj +lm?QijjZcgQDC)d~hNp<$8gM@*H1Q8UIt8l(tnTH{dV7vssJogbhM1F^0RByyqT-qTG#&ez>wCqM!=K +5gJS+0Nib*ti{~rfV)^R7sp>sSMhM3TKv@QC5ovn)nj$RIlcoYRLmHzndD`>V0UIAzRuAgHUOtPl)W3 +vxT7k5()E?DM}V`zq)TiX{z9@BK7jm86c;#gJKA?$!by`PcbbK+0gDO)br>L9e^0w^3jv&jPL-Plz;q +&v3%04mZOwz)Ge6`UV_O4Yp`csFvA6Q^rs6H~b^Ur%9Z!rxGDKqTOjK>i=yv34u*w?k#+Z^v)lYGD`35(r&TTaoy9mSE;T$S$%x&DOq_^E6qf;-|os{7WNa+h0C189!LYGuGv72Z-2%@hagwy^rag6lW)lS`xJy+FunDisFyaUf?4KdzK@k+!IWQXKxY=k2lC#LpB?LdVUInJ`rqus+gD7%fNVaz9dRo+dF#p3QqQ +CrP+#(Ym1dMdQ(99u`8W1yTpOx?%5&KUqBBYb5+AO%c%%_z49vBqCLNx-Z`$D`r* +W{KqUiv9#{E0mG&26KC=TW{!S5izNul) +ZgW~S-5xBx$fLy}*J(NtYPvT)(gCz~T_6%I2~;k?W1eU6etJJWLm3^8~=P(X4@OkrUjod_c!u4(o>km +%w%@G%JnJj6)p`Mpa!&fU~9#RYkPKTCdKp%$}WFY5V!2>>)pjtQ2~J_(NHm*QyDz#riIzd&D^hV(9D?s4p)`;~8|vI;3t09kuZs>rWYZ>`Eyi(0cztW#C=`zbyVXqaL8eIv8n!0znv9 +hXYuGlyGFESUyeD!YqPcqW7LAgiMEp@cwy5<<;S~R?}grG^X+dZ8vIooTIH9n0<|>>p+0?PN%obk@fX +cD3tQp$>FXk41yFOAdzP4sy~^HNWwVYi9E>QojhGadw0;TOFN?fhPq|uHyIgj?# +HyC4)Y+%6>fk(8dy3kFym^~~mx7*3Q?j605lSc*n7AFz?7(k>SiT2LMven+|@^>G$=kbAE5sGDx&}9sPBu{YOgp0z5r0Q;TZ`Yr!=gc$Zk*-Wr +PE-Yx=YDkY00Wq7biv35W=I#yst5IQ{keYJe%g6@p0oR4u}Nz69RQB3ZD?l@R?z~ws<-wqnvXxZp7n^AgY~2Ea(Tz_BH1DCW@21v4c%*JJB#^i}s9QN9l4fFTj +lVQetgJf5o}gD7zW*W$pbIx$Qd6UeTwu;`!|)yk>kO2D{u7eud*e`sdxha-$JjyLc_9!LYWZx-S{r@GF_rYZ+y4 +c!G5E2ZAtk$poOHp4@>c;q}htFEpQ@gQA^zyyssbCbLTH=TmRN4N8np!zf`>Q+SvWtUirukd8|<#b*t{&X@ +a5vB-JbqQP#p@@&Sx?_uPBQux9%}(vfjJt4}YUag@RP}Bxyt*>%N`EmeM?N>*!9b0SyNCf4miZ;BbIf +;tXH*m1CYJIh>p8Y>o0GeGv`Hg6I$Jpq?)ALuGzO#=M&67iLal!e ++|o9qqpoWJm`F?eepkni3+0A1U7Sil(M& +HdUpRZtK6)cN@K{R1>#_ij0ECOLPC`HJ#a89S7OdQ9XM$$*)E{SC}7w-;)d14;V`|ZkaZqXX6e0<-i)S*bm*8dZ}lja3}YSp;wafjJv$MFY +9d&&eJ^*^m5ZQZ&rEdK*M_tJSY@#f(SR(OTui@w#ItVpTGM`my1!75+cc_K6eX3>8gSq7H9XA0g-rzX^PjE69=A>n`ky +Bh-LrtISN6rH>05tlsPC|D&&C~L?rfwUp*j6`sfjlUtrEn6ZkVX}wv3Lys0ZPlL9(Xt@Wwytc*1RTn> +r1jsmPBmYM|1cE-z`5ua*bw;G)R5YpI}L*UL|C>=uU_1Rks*#GEDjVYB?VBrJF`9W@!~`$uA;w`Xw8g +?pZ5^1z=uYcm!YWq0_1hi^?he09|w3#!F-KANmgc6KxWi4_^|a|AZd!G{SB2A(@~U{sjtm_tt0?D)lc +rtI0}%u_`S>R62yUQ=45i+$+K)Pf|Ki)gXr=Uu|f?p>(a^r5K6>^O62QDZ8KaIblofc{sgI3mgDs2=) +(Xa5gSO9KQH0000807gYaQ~&?~00IC20000003-ka0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZBV7X>M +tBUtcb8c>@4YO9KQH0000807gYaROK7Xss8`~07n7<03ZMW0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZ +BeCb7d}Yd5us(YQr!Pyz3QvOu)?p4C$ezhd^mdax}&$_Bs)jy~^$;rN6IiW4FX<>4FX#X=Z1pW@RJ>A- +uKzYRSy^wS0!eLc>91(qF?1_A@w}iX@6aWAK2mnS!LsS3&0006200000001ih003}la4%nJZggdGZeeUMa%FRGY;|;LZ* +DJaWoKbyc`sjIX>MtBUtcb8c>@4YO9KQH0000807gYaRL_y+Y_t>r0B}bD04o3h0B~t=FJEbHbY*gGV +QepQWpi(Ab#!TOZZB+QXJKP`FLGsbZ)|pDaxQRrtvqXw+c=Wn{VTW*a%}^)2Dgt7Yn=CxnIzZ%nM^R7 ++4+!dXlRMHIW0>XQEJB<RA(PW3>5p)ObKENeAqi!-1la0fuRgmb~>yH4=3KQfxWo +XzL++3XoZLTlQ|`T*xV;f_olo1rS%4i9qz6oJI>usI3VHWJ2x2?%>X^g|~y0CT#umkm>W2Si#obYNa> +U-L?d*-W0=rt4YN91gIF{i-f%w(pt~Y+6-7b6BF787sw}4^>|RG(AW5qU)Qc8fO$oE^9s3Us}Z747}7 +!UrOZS8(7AHCoA?=D)|0`!ED9;A>iwWp{)Qvf&xO7<&Qw!rpsDhJn(}D6y-$jrRda+$(heHyYff(%-; +xzC^|qSD|i8fG?RZm3Q>KBPf}AyQ5u0SNCv(Ys{bdT1|u&jWb)-rt$L7ZQLbphONorxk^a1E`qv~WH1 +c<@j<33|>7uVne}4x$^1bMJ$$Rci`>9q#iwKDF{iQ!Pwb^|&Tc+@qAhDkenMA(Fubn-?d;Rn^Jxnb=n +eFX@Z@Ciwd6H|IQdBCdWc^^5y@lUXQyWlvPBhKhPPDue3C6wGBT4*#=lBmE5XnQ%7(RHQGy#FZ#RDvP +?-6xoFATEUviSFu=8s${6M^a3(!K6J(#?2uCJYFv}S?PSe3UV$Fmut1=6{-#wv +s3yrpN0Jg@mlaPqo?kI3@7?{cJV^Bgb-$M+wtnWV8t3$Yvt-T8#XoZ? +rM{2iW8V${70@uSq~5 +fGXv>CqfC_{f?9JVY{W>UAbucOoak>GKC608UXGPz1sG$U@?=G8>05NJ?Jj4QpF^h(lv_?Bt_F7iLx< +~SM7*`4pEHY{86AAE&wh+tZ6dS2>Pcyb@@-4>ci36;HL0>tx{uehbIF^fDvNzh}j2xi@ekvTU+Wci_- +qk?b5UIKG)$Do4j@=rud +y4mUFM^B=k|<0fRX_j_<`5aU~3e*R()gLCH@=3KmA+&I;Ek{J64dGMsOqT-NZ*k +7emefFG0W3kQ05->lyx$D<_&bi7ERp?7YvxhsXAm;O@EHA(!)m}ZVUqM#qRAaEB%t295 +Tm1t``R#4Sb#pmO(O8LU?^tglRS>j9km{!CN +P82;*lzfY$wp53$7W27KDrd--c3F62Vo;zRHMy}n9;2ol*r*{WPFy +8u9>64K1LFqYPfgeB%C(!~c?l{qAV!;HHQf`gJhl8 +G&!wm0Rw9AD0+X+LWT|>db?ZYSG^n}2}lEl;GGH24Z6TL_-n8rZqfrtpc$|42)?-3hgqX5(6M=|HiF> +i_#|7t?z6@nI(#JbgJB~7px8A;YP4W&{5^;+_^GBMcbBy$oAV}P6jhxxVB2IrALo_O!vNZ^r5P(eq47 +wB9S7|68%2V3;$PcRN$nUuc7B +Y+w$W8}ClR_c9a~lM#-mndE=o#7vuXwBqroN1KedsCEljunb}nZ%znaXDHtA%+pIuWMYx_;$p}Stxq- +~(ZU%0bWBQC9Bul>N9~Hc-%exl2y=~|zSI~gRo#TB6M!U~58dE{iNh@u6kZ1%r4*?x(AH@84K}Nis3T +oufIR8~tx?4CzHu?k6X+X;n!cUI3KI9(8Ru$g^ZbmxY_Lo=CURt>>=hhxu%vPj$M9ryaLl+&4~$!)^Y +L&&=F0>QCn6w2E-e&5zkGMeWK9z&sfkT-rZ3Kds4(Dj49#Q>9v6(0d62D(@Fp>i=F*tbOgZC%m@#1ih +TjK#(v@B9l00zUC5>7N{rjvPSMNdJ}kV!(MRcnpgS^7@@jcnkvNT@H=$XlGG9xz* +3w@_yOa)1}m1m257J|l>WxkBSRlW1b1iOXw!$c20ge+n8+3EhJ-jDFBF1uWd(bM0*IVW8zO7jCxwWVt +$i1S`=Q8WCaBxz;uG*)EvBYs8C#VXIfiD#j$PoOTH5WW(S1~~c +mK;dj#0e`l_ixS!2DS%j)s7PmiAvhD~7Ksz0`GnxpE3eRhacbd#Tv*v@dNTD1NZ3+CT|mYXp7D@pwB +&2xfO!avFB<|liB%k=pO46DG~uwEZput(4Y|VqPUg2DNpU&mcWM4a>nU1^g+k|YUk@6`s014`ys*T`5 +LPE|SQ3X7ibf8Otdz)OyX=OBGYO+`jWW2J( +59O=dXlqhVA3OY>0VOWHewcb6@^4!`Nzcg5Loi44|EV#Mpg(`4T2Uxa9NY?kfd(iO{Uh`obUNqR +D)_3L>w(Z2D4Kl-}^PlwOS2g`ab=a^wt_msd7(OaY*db^FCe9rPXWz{ez~p$*{YR}QI^?0VL2Tbc{(^ +yhy(ah$mYS-|9Q)jyoPd<*5ChG+t)nqlEki5A*%YU_Ca^U|8}@mG`Q=}AV*ZaV{MZSkp5Y<;tk3Z!T( +h*dYa`fgC>twt{;mEmG_%p|EiiaFNv=t@oc@M2nEykv_o`MyXQE9IRjx%Et2H~J&7^UiQmxD^3jAm&8 +M9)FL_kj9%T#Y7W{StxUPM0Tl*lS=?VZkyu`{|;RBjzSL~*;T8)=wCARVYT`w>{m1}#0z-|WY03EN(f +V|fEYbU+QA;mX))2=-_vsv9!8gqRk_=y9p%U`?(9m#)}ukQH`NQp3hd2N3S6)@%pltAiAn>Uv(CnCX5 +=@++nI1ZvP>w}nm&1_aPGXST-zM_B7SNd-~~h^dUd9y-iuPGHhjA-32gY8rDihQMM0`goExI8W)W|51 +4<7AgmdgAh-4YT!V!FjZf966$JHK8i^4rfVFvP9*K5!pf)(LH+9@10C%`a1j-;Ipr!scIL2Ycd__*TV +Q)x?oA1;F`~J(rwQ8vY&Rv|x6_nqJAtcHV|(5<=*wFyQ;h^b10P*eHJK7P=$DxPq^NV)69husG=X>k= +@_BKig<~?H=R64hzy8Hx+Lv^XwmR06rNNb5Uobdm31E800!llNL*rMJwu7)qb@zLW>2t_al>9b01zrSobD()UI60W{;q4iloHM}Ve}K_l*U!Etx%^T<1iWs*kQN(GW}QB{#1 +cg7OM*mkKWe?JM2hz(ZTBNfy0UJ}69c*a?GN>kBZl#(&iyqahq6&81(O;)(C +YPjC%M4wEG!y2`nAsMU8RMrgj6C0Og|4-V##3W`HnHH_*+2I$(Gub +oC4yz;(=FBG7;FRn1nE8h_UD%^I)9ohXRC&~QuyoF!ethdKY99{NvnsglJ02@Ri0oMB +UPCAwS4f|+#k2qZ^CVe$QeEn|C)J&vF65@TO^*7K%pKBIoIfP4RwhfWlfBkN5zo8Y1>sG!rae2zfnJ4vW|SArj-Iz$2)(oG13n`sdyys +i2mAVr}&iL)t(>+TF{8#TF)kJ-js+w92vEv!Rbx|-z*trV6J5YB=^f2`xf4Ew@Veelf$zNrOX0;Vvp9 +TnrkWu)RkWqP~`Gz#Mn+K?jY>ptFJEq9NhhzYkmG~ZK)xC?Vwvh~ULNnz-9tvvP2yPCS)1eG=%x_zf1GX#IJTqI7SK5B3!gk!;V5?U!j@!1k$B +wcj~#_jPK;pg=C_r;BoUSuPXRPGV!K@12$<@yZW+%2hzQ(;727I;Qz}z3-$wai~8u&4R+Y#Ziu{$?|? +(EgUVNH_k{Yd+c>zqijB9_7<4M#7(*=02Kk>Q!9jweEK8-1THhy`gIKM0phoO(6`@dRY|6p?I=dnazOjMW431K20NnKp%HiIo)(Rl2A!SG5rwEYyKun +wOkI3~f0E=ztIS5={7>z8DWi5jwRFQr$}z +U`v=%^wlK+s?{y*l$uU62>WrVrhmAg%_dcv_*$1n)zrdFuPM22E$;=lVM_{%3A +H1QM2@h40%>Uw;V}ugvQ^Nwk*fh0Dp)lcW&I83Ht*y2_P=0QA4IBU{rTz086yoaa^`ay?MbdN=8veDf+G+H-}k7nP0B)j5NrzI`MP+&x!!H>iH&1*FNeP`NZ` +cFv&&0whsx<9IIK%y~d1EmTKGreLzN!pF)a(6qXg$rUO^mX)F7Ar0V-e+(u_yC-p1lo2N{U<4$2%=-B +PT{&Sy;p~Ucf9V!wHpOpw6g72*y2RE(wSD~oioVl@II0=qC94hKHe&Q +7&eiDTx=6a_Cd=j2BxK8oF-D;vwtn#-(|2wVK=mKTyUc0&$`PuuH`$WiSDFh3a)BSCX7}ij|*EDiN6r +;$&pA^aHYEs3);JBp+Vp7(j-Dm#+P)h>@6aWAK2mnS!LsS3&0006200000001ul003}la4%nJZggdGZ +eeUMa%FRGY;|;LZ*DJgWpi(Ac4cg7VlQ7`X>MtBUtcb8c>@4YO9KQH0000807gYaRKoxw-$(@j0Av&Z +04o3h0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZC3Wb8l>RWo&6;FJfVHWiD`e)mZIr+cp&aucshXV2}Y +#4`3iefug|z1nH2b+YiH#8R;r!Ba;eAC3B0u`z}93QMThHn}cCNg4mSq*ExsxQfj2w5WVdfzawnZ38~ +4s6yJb<2Az`&4U*orkdsfHW`ff;CpUd(7QS%&o+OR2?^suqkHBjoi;hs)LF(45S)7e;!uQ`7 +z60vo;uA3Av#y`v&zD-C*E~a=}?;mr9OH$2>h^bj)+`bqRO0+WzhqbK*b5RWObvW1YoD)X=J;W&A!^< +L8{16;;AR&mL(DTpu!)@L>LML225ygM$nA_1YLq*gRuwt1s46ts#K$tNoTFA1JR`O*LE!ao>03%+awJ +=vk!Uj&wP)w%CunT#n8>4(QFYx;PBeGD(se8qyd-w1qzFr1%Pzo)e{IPT)^1shW=pTHx|>Mt=UqT%RW +de^^7f(8H~E$^1yrz2wCEv&(_#(%p>dDZ~QmY)=9i%uHGY2;<)MEQ#Ev-+wH=|5&Dl%Y8^YCuyD*Uj^ +gYZm`)5tF2n96!{1}vU|h>TGM +$yyS7|O}tsQ_NMb~rPgyfO^VM$m{qV)d&!`%>iB> +JxKoQK1Ia+FA4U8vKh9lnAR>Vb*W|U#*X@B}CrI1~dh=L +OOBrK@_ZRl*_+Ll0HQ|x3tf2!uMDmK^vxA#BPfV{%KSA-q+*D~(7+!&muUIB8QBIPR8CRawG8*Csa5( +TD=Oh`t>FD|kP)h>@6aWAK2mnS!LsU6Lw<_Qe006Z|001!n003}la4%nJZggdGZeeUMa%FRGY;|;LZ* +DJgWpi(Ac4cg7VlQK1Ze(d>VRU74E^vA69BXsi#_>CU#RVRZz!?OMoyoMrmYFz?Tx*)zsx3E@(P&_hI +Esis0Koy08IAvYclX`^NXs^zM_YZc#e3}S?(KVz$~Se@w5+HuFZ1$plFN@`D<-R^+OT$8!!T3BXFr}E +Cy$>VKmNzbv%g2|QMrxSlcxHGmoIr6v6GfJ>7w8fdtSGBRi;J6&bk^0UX}1UV#`#t6A8J_>o~dQWmYw +Doi49ZJU{N*yb$`hXH~OFi~JX!Jxezncb8R}FKH+#VQ3$uYu*SrQ^WeV{OBH@mw+!I8S^(wP6(Tm!wG +|*r>R&UH%-+<^zoz=ZCVs5u6)@o>ZV$9A)E#OI(FnnE!78pn+pCN>}c{uhw +w-DR2eTsT;%1I-u6BG9x)sd3IDmvuhRm~+_U*+&3U1B|9~IH7B~Fo7)fZGZrN5%k1e_6LjtQ3+??<%Z +|UC0rvW{_gAI5Pu2XyTIf~OSkferhc92A}5^r*`)cZ;;Fp0W-SiGv#oyQB{v0nK&Ewdah0Hn(NszfAW +&bbj=AJVqa>9$>0We`tZ9RK +Up$&2Hc$?1=0PoF}-gZsN%#w*S_^c|qV(BKm;>nl}UP;>Ux0x~=E#K4y@p?q#i0i{~i4Y=33fCGS +u`vTI&|^R=)5C$L-)sQvEO}@p-~zzrgzf^#H85R#uoNkYyQYwEVJ(b}8lTYHX)mb*8WPdfb&>OIZcg= +v?doN<;evqLrFP7Nn$*1h>cO8qkZR1X%SDBA&cS-bJrj*^3MS7zQ;*qom2_Y83>4Z@>sn*I!XD;NMBc +8;qFSUQoBVNq&ltH;>geV{2yB8rFbUe@|i*SC+Wc7W`mIMW90Nht**O|G^W3C72G1Wu?fv7q +It`{VYl8!6ymqRZd<+s&U`M1l|xq${%`C5U~;c7Ef$bGi50LqS#043@oqRP5I-bzRvo!=N4X+_ag<-)`69fZB9T%+)k=wL^0G_P+f@AQU%0N-&KD36 +H*LhQwGJybeSjl-NSX;psw&Lw_4QSzbuA|GCVf=~+V-}8}#_?r@r>HT%1fz)A3ENbFAB4Jia={^*ubQ +jB!lzsiAjwVsrmir=O>4+o>n5k*tdz+OhRT2&?g!Xa0otbcGON=j-6&^?7?Sg?(d}h=%MQj42--u`O% +Ayq=nWw)&j8@WC^{l@%wX&yCaSJk@}!3!L9t>Gs6e9SBA|REmiMjrgFjimTJZ*uk@?E&*9Zp@TXT7%G +U*n;?~bmG24yn6OyN3XheW-%>WYlj6)3M}m9rs&4|$;|rbR-nGLYn1z@(~G2!x=Ou|%=n);UB-m(y5F +{$!8ukisbvBX6L5Pf{?%Y7=@Tm;`s5Sd$`nv5H)Csskpw!ezfdg{nN}r|b%qFV9$@QsuzTq4A&Dl+Vv +DF93N=c=Qbs00hJ3%Pvq##VoY +G;hGKUHI?n%BwLGNsqWhjk6b-z5L0DO_%GpD;eMCGgUxu$LUK*FyENSxm}oex5Ez*u*^5`;ER#BgAk6 +TA#=)uK6lE38__#q(#xZf@2}@YtX*yJlj%&B~ZHky_$o;ES^O>ovF`ch~86}p4}qejI}=e%eVK5z +AqZg1qeDAj$3qwb0f(4i>7RcP%Y*5ysHrEVj}NbNdp!3A{aA@Wv+>^(rW1SC)yTK=Xb#ZXyHS5Rk +zY!`#XU0^Z?0k&9IH(r!2K~)g{gW-i8RFF{dI#vf_ZzWYn3^%+e4u428`rO#lHzfYNS@t=E4zlXnx@$ +2!fus?#5S5!^;wTeNh$kwRRpn93vaT*b12Cm)d-%Rt#+o~G7QEyj?2GDJCXVumI2a+J7lH0EVkilNV1 +yETBYt_yn-+0md4H +|Tgw+2*{^CPKyaF;(#zi)YK$%L5G&Q-YQ4QFL~=06}`QFyf@6sc13?) +LB{K8h3_uUr~nr{w65VEChOc+2L0WpmtOkl<&9JhNC0;?Ys4n8tavBRd??cZMBnplE(pi3`7$i~&~e5 +W-DMcO5@_sbW2Wj7lGpb|5V-(jKiklkLXBU4k(c|!{GLu^;q_fCbk$FB`aC^mVP2&tG4_*~Q;Dr={V5 +C!eGbUQbNTKew2N`2&r`EnCl7}VO8e#xln8Td`~^~Bj4y8O6po+;qLHBI43vlgJGZLpsC +@zLIXymQUw!cxFu4r|fUjPB@4Ly|BpJI!!;)(g2X(BXQ->IXZHip8Z|(z%AT`kRdQ?J|FrFmn9|NEV& +r8|#&vfESNUy#yt{ncQfdIMUT;pjJ(G8Y)Z4Cstr(a2^`K%tcJQJ$RxylaQKWjSI33q@{IE{za5`U;5 +;wL?{$(o$G^LsQvXFiNhl@*$+|NTiS)eK{8bwl$(CU=MoOzmq-=%wwXp6L58J+2oJ?K~TLRT-NztS1) +*+`yvCi%iV%0;b0G4PJVDsQa_``ak9UK30Br2<|%?{XH-9I~Q>;@al`V5o6O19~WdRvOC`|4Z3E%z5t +16?*h~X-(7Ndw6G5(#k=bFDpfUYMKhtx?)zHr_|I5Ova7Cd7TnYAB=%D$%u`xmA4C8u^Awb<-B3*vay +H0_7>8lVcViC>S5g2MLA1yo5_o+622L%ul$8pq@d$_H1*b$A4sf6e-ZHP>3favb`aMLRfA@UGUSeB(3 +mByWJUhNm%NV}st57N$uHS5;Q|#)?Ce1iD8i03~4prhRuM-6V5>S=9TEv3>We-K(2gLZbkN2?td68FqD-24pY-~(X!J!>e_qzA@A3+a8Vm;AnZ8gw`mg +$ko8LYL(ooqV!`{DIRL3Qd}zC1U$c>g#$`=|U!jHsl8PyT4`)O&hoz#uC8vYek3LbIN4*?YVeT8S-{Q +{iYp6tv1GjONNC=dKZ&{ln^4!WsQ1S;vhwDHRxpw7DP=egI?UYJ0o(b?OIl8ucWVARnTQVNTFWK0O4VbwU`okd(?0gY!V! +=_j@FK8PLb3Q)D=5OTOBg8@fqLdE11&w-b@O;YDFWlLbM5>tv~mUR7E~I#*zI8EfbZ4xClRjIDgbgQW +$K51z@jUy?vLN@ki9PNQQa_C+-H`T9_+ar971wLO60@^Kl^Eu~#jUolP*nNlF#8W4^cy^CB+42G@5T= +(j6;Zds$(h^ajB_IG|O#v%tQMK718b*>HT$mcsgZK-=+sr+@AXs|-Vf;nRo=U}O*OiNy76uuIR&xi`9 +JWoQVMD2C^J@;lD+Q~*;39_*!OJoiToWfRFg4$b>A$MFL&}3JocZ53v6Ip&&Fr`3&cViC?9XQCPUfB@ +$O&cQ<_hXvBVMWJ4VUda9rq&mX)HiW+Av^2#2yT~Il=AQ^V_!eMy%$ +y_%FoKks@?{EB`-SXidi$Hu!VuOoz0?gxqwJdy&6Ige_%DhtTxNMA%xq^sJJy9+*!QUn44a3W@hb*9U +uIq{CJF6~J&DN&h|%9L3XV2Y8@^I=ts$4jnUqIz=sKTFtAbvot@L=wfW-qoZWid!bDpZelggI1K@?Fe57Gj7~;;Z9_3mw481R<-ISc@nx`~B?wNsaw_r*%2+p +Mdo$W%xLQnqm-R>qsyMU03GIL@idwvx*BHxJWqo%@2@iiq-NGD!+o~Xh%y*+ePC@=Q_)^F68{C&Y<HZSjS$J4z%lsls9G~@TA>O&IT++FIUEK<6s_GoZFfjT +%R4g0iG-<%}}uMFHnZIBs-vTmRgGVMk!h@5gWOAE{`ovk)LAEp<{(gz2ERk&KEt}FQ*rMKR9>4p)# +*(?16Kh; +(1@Q8v!V`B6f$)XJ20UdB(_VfFRbP0Eqc=DxadF(s@WIt#ky5N+*zb<@y1wj&!Fa6A+zq`T!B_lI%!B +NvI=U_duo!^jmz_bt4+7O!L$iCi9rbB!_GKij-U)D`@ofq%JSo&tY4&z)&vsa57^GwX8B-m>Z|u5Wn{ +qE!1B|xb=9fzhrTsSbFzgZ20hM_4~v8z<~E-U!(U}Jn}V`PxvB{FbF?wz4kv)O9KQH0000807gYaRGr +Ji-3S~20E%t^04@Lk0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZC3Wb8l>RWo&6;FJ@t5bZ>HbE^vA6J! +_BS#*yFmS9G}W4P|S%c7Ox!1n6?kdN*F!SugBOe8yxzbEMXY9*R`h)XXZA`R`X%{eFV}Dkq_0n8mc!fP^|#)unY3bpIUL)>(;yxMN_wT8s4|?_e9e +NT$gT3i%d1{_Q-CyRmHyN`>N-bNDN)SlV6gn1kNZB_d|aG8DXirmRncC_Y%96IQ6n>*Chb`>lh?#t$O +;TqbR|dlw#g3U)@0$V#QKUqyms7NF_e9tGyxr;s*A_@^d)EyS}@xM|PLE5>~$31Nv_2rXG&vP~DpK*U(>Jg)sP=&@__FDFwLU7O^R*puI9dP>Qy~NWbIEj`fOB3^aTVP(4*MYh$-(YD7bp#E9M1tNhon +3{GnTQ%`?ekO(g_w^9Ck6ysQp_=eosA!obH_=3;ySra4L!Y-up|?AbH4D?q|7wSiFpeSb^u@{+V$S;8 +`2LIb72^Xz3ddq#=~UZRO{g +1TV9N-4=GSQwk@%Gv_gwka&XBov5xfW|jqJvwXX`W1&^)da%N^=;erW_pOcQfkU~-Ap*aO>{O(R$ETn#nL1``G{Z;;o@Pq+=1R|vL5TEV5{luT7>pG~qe?hEG19an@Jw5L9M&<;9* +%f@JrDJ@>8FOYT)ts#H^jog8wl;0<(M6v&%CxFUe+MqksuzuR`}qT!gyAscoy_BY6&DvA3&(%TnZrjJ +{Urq`yy{Tgx0mqarwGx1ox+Bu?^NcUz|5}g|Ghx&j<|p;b_!Iz*{*&Aen{I&(+z(p>NY1`poJiWP`Ha +NW!iK*o?-sl@g2K&l!GSknxp}k7`4)O#v{dpTA5w8(-bPDoMfQ)NfORi3-~>bD>hZ!ptal1#vM{J(7n +M5@=75m7dRLlSA*sEefdY(Hr%N)q>VgF*BN)B}k@W3t#sj8vu{HBC|NIYOth3k28lMW)6x;(uN!s7y% +4z)J0$$GudeoaGKRp0mIpK6Z@8T{0K|U>vfLMXBwWx@Sx2T+s`VUDamkU2DrAgO`!qy4L_3j90wfCnk +E;|%`(TyDFDn>By<%0+YiBpSa75jk?+O~GyJxQoqT8Isco{~2fjn%;VDzhu{jd^7;O-_Zp%}O;3^^J& +fF+9z^MAj5%k~Cel#H?J +#|0f|%Jg%Zh93O2LtSyBYm3k4?EQCNeFtU;##~q>H=miUvs^T1@E00`tR8T41~6tRas{s)Xxh+Wo2I% +2Q*&5t3s3*cXjhxI$h>WS&VJ-(M!qTFy0%W7sYt98evC?}{z0PL%-y?{?0OuR?-Lf5#u1?R +3v5f`dCZ{B(b3%x>rvU+7?-n6HzzR2c?*xe<)aX?o%CbCXsKjukj_%t5jMibHOJ=(%$`|(yt%1ive@g +|Cjm-lWEH+*K%TP4I&QDRmJmOw5(G73?kvowyH45a+3>eombS2xXpGYX^u#`yIo;_Aiqf?XYX({vB`6 +9|?M*V*_2r!hT&8ImT;$81;icZYqpVDI|_e>xXI_@ubY5DQOsaS1=35aE0xbU%T5CCMj!xO7jN7Ft?U +Tl!G-81u~C&HF^KHSFHdNm0PmFbnvQNsAT~!T$^9B9$7LcGkR_Wa$aNAt`B+-s#6mnG_JSbkE2ARl4} +kuhQjL>GH3TF7A8JAsA=fDERU(u&60w66RRO%xO#=g5|6e{8zDo>{z}gb+_l6L(?1y+Pl8{g|7xiS +!uM#*{bV%d_xBMt`=nYqk5vj53qc0!Rh&8+!v8`^|{q|l@PoithEi_=Pa`+IYwlKp&82KvmGw<2B!4t +9sBps|HDRTP&>%*fL}|IyPyjhcRJz5Vbq9TfJAoUj~FM!`QtJZo32(;s}%VEZ51BPvwvF}aJKfuYpYV +vx}p4;4?VzF*<(JW0+n*%?CaO&P{*ySa~I4^A$0!R?%KSw@zs9HIY0-+M4SO9~F51=6c@HXd6bl5oq_5j7d&aeX(QIL1JrJSmso9 +{e=2uOxqV+AxO)srTgA0$phfhcx-qQ3i0+MeeV+(3Ty__MSH!l#y7XEi*fRopIRnbcj$t_;%^fDK?@c|19Ny;?G(b +Ez_3qEWqM>k7a-!D|Xj*53QrUsA{Efwyz!{{MPH-K$(&F3YFj42uufC2|XN%gHk8JX%0%!N*1}*r(o} +2#dQ|fp$Zj;#*)5D1mJ(l8xF!P5nk8NUTUjy!f7zXwlsgmjifMLZUf6A-X~BuEoO2WBpW$#nMA7gSQ> +%`L_V863-*>||9}2=!G5aRJ76?T(v0f2C}Xw;kD&qcmbfXc0Gs`LcLzBvM{qc=I9vM`^lzAy1dj)*99Zb*G0t%(C7*&(6=L=f4C5~ki_+ +9z%AC9+=nLHJ@%p0VjW<~WGGs+EI2%O%SICE0|pAW0o1%sBvmLjWh>pfw&Y8^{~ye;?pc4 +-p&F!HGlPuECYW(*S!)^hK0t%j61x_yfR;v-x8r531=lDJ#C6`K6gLN*+C7~Xr#>gG|!-%k +)?Mz08V@gb8aTJ4CFO7zvE}Jg)RX@~KllJ$=b;-Efj$f8$qUkm#)CoQ(REmC1giv(&gyu6ELy4W-W6c +|dZlj+OXO>blsrjXLJ{rgMhChdKL)32&9cPgLcYt +EFB4R$iPXzRm@8*N}Uw6HcXg%HrCY=KGSn3upjsy5om+bn?Ct6gdxZtb12MZmK};HpHuFVJcUbh*<9w +cG6hz=L;!8J>=Kd0X9cg@huUg~kmUL&|S~UUf?@DL6TDc(ZVKw2QRy=ZxXH7$}64e;2RZgVc20-C<8O +F=r)+33Q#1HZAqaCPDcM#&T^}H0Y?j0!8Ut3f0Ip6cL*x#S|vYE&y+6pzrs9Oobim^MKJkNb82AqS$r +^;MS^nsE#541+xcr@5ipu3z|DNNY5|OzPLHuQk?n$-}rMi1-NJtg!Q<&vvwaZ%6GQCRgDJK>anct^wM +xd-zSs;=v357ZPiHVD&%daJajaQWl+07{M!$<@4~IBj)Ea4N(BC4es|X3F!p;&sP>%NWgEa(mI_LBH^ +^KFy=_(Yr?+FxCJ45!qeJA*5`SAmZ%Wh#Y4KSl$F0zRg$#8QiDErS>lI2n?i0!L +UVfE2*3q9~^qmw&VIf>n04Ob4PAQ-cm&uTuio0Y-ZW0Qy?XVQFQN2DPB=u99T5r!@jc_(#_eXFVhx?qse*RziVB1g+=*R8cu3v^glmdbPFL7T^A*(of#NIuUH?f`cV)7YI^WYJq8VB8XET +YE{_l#87$`5cWTYyB5>komnc?#43*il?1Lw%m5tP*+5A$!avHo%`2cRmNJvqN%9X>MvAm(SJef%EL7< +xeEq4Q!GbDJN1}(Gy{Br&TKSjn9ejO1M9xf>;xoZ&gHrLE6y-q9RLxXh79TxfAexO|U+kHG-#LLf+-g +5g{5P2BVxo5{k9ijbWyQrI~TL3nJS9y#GRXXb!nsUs!E67>%em_)5>119Sk3d-k~STO|qoQEU +K!f41uHB|NnQyH?1X2BFhcJYb00G*0CD_J^l><&G1&iy0`p=zDLANizUPdPQItd_fMD)mnFNFCNyrlh ++~=XjxJAlp?1Og_c~HBkKJM((GZ)c2cuy3YSJ=2w~u3T+F}FNy`R*q=;$n%=1&FA5d}q~5D|6X>po>Z +s+cWI)VJ{ptH}y#g0iqb_Ugu-ZF-=ae2)co~N-=PKBjE%d^btO=+t&cH*Em$-Wk@H=KN0)P(^664h^j +#y|<0%4#(f&ek@2Ed*3-0qy?8PZ`*FPthZPxxKmZmHg;y`3{&Q&sy-wYr0yUEQ(Vt;(0scGdAlY9W|9 +?2;^m_ez4c)c^=4Ea22;m?xAcovHv>>b4OyAzHj}0M;IgV#85%#38mWXpm%aoFVM%6d#TqjnAj3)smd +6Ow$tBh7F~&X(aYay6wxJ!g+k_`jfHX>N*^czf7k2!! +W$j)5rGeC55NfjSjEuBuMb<7^lCJlZup2tqwjGvfOZ0x1(lu{5_x5!EJo`@8*cG&gcw$}2e{2Of6SDUdlm1NBaWjqcWQ_cDD=h_ewG?se`LDKYYV3>nWkzZ +#x69q|wCEpdL*@!PJuV~4#x3#tmfWrT{R;N%*?9RB%deMO2EG^LCw{QNTtQY=lHD>qPAo;t9cf(pLE8 +;j&?bzC3g@s!9W0~YTyqy*($))K7i&4yDzUk+$Mfzhj~)a!-|82q7ax@wJ;YF?=@Ag@RB8)fvc#cKR* +-#viE-#BL`5Vk3Q=b~V*4?Pmrj*h8%vt`x5bU+wqXkdWWUvrQVySfEyv0lk+0EV5^p%a`amfo8v8XM} +}SPg^W5cd)qrL)ky_pY!BHsx&MjYd$Jp9BfwLxoPUud1))8>vjPeluS7u=MU?b2WCr4p^334jnk&?zI +_d_2W~0cb+AX>obl%Q&CB8D!^s&JDx;ox|^zDcqvdJ>ymZC%pC|#T?Z6;(XBr-U=>V0)aZGF_)uVhGSPq`@ +N>iNZiM@}ZQu_Hw2O?j;wZd<#*t|y)L2%>7ak>Pp00^Gi4ilO0;Ks4#+C7h6uNMf)5*Z@FnGuuy8psO9kR%$zo4pll_RvlGZYqE_bv0tf{ +pgWM-wofK2S>Z8CAhD$-%=k}E)aq&fE0L#ghkY1J##Xo$-vA6O959PxV9sv;xMay!MLK@)&Pjf^?Mb! +@@IGTozlnRlOH=9m&=H@8~ME07f$Ej2ES`a3sqZy4HO;Vl3&ZRR2y2-sW=P8P8{kH%U1r +q?X(&OF^cWU7T5p&@=WXtZe0Iatpt_OYu#sDJx|jP-FzYYDCF;89Z>Mh;(*(^FC(dKEuWRrS-7La;-o +yMfs>^_B6{v<~kFXF6RjlUXAaNtrS;9kwwe^d8r?L|7PL{p5?{Vjm@4*C84Av8|Y_(Fxo40dZB?hcH^ +|(WRLI*P)BC5$FPGueJNs}V +ct3$$*|~6qw_9auxI!%WFM2q`})n>_Y3w@cc97?wBo=&MqTa|D`>85FjY+jqp|S1khzw4IxLr^DzG&& +Hx86LD=3tRmzc7Pcvc5NQvjS_T=p0879wXt_(5xZI-f;mQDRQ6-_vD;cS_2-N;#^yzn-eUVCpmC8byEwZOoxpv?n=DAqRf@j +y>pXMi*x>#MNpU@R!4Azi!dpI&())k=joJ>T+{WLkBD{tU+X1fyIJGLtiTrk5(`ml$d98NAtcBJcWvVt{Dr|e* +g0xR2KX{g`5yulJ#kiwYAL#4KL$_8>~;qS;dv=wdlptl3XJMM>9y5%5CZb}Ma$xZnZ)`3^xB1ma;lD6 +COW)Ire26Q;y758B%NipLgL7n%-;3`Q{_#?j3iL1sb%sY6ZHi+{SZ&-ssHd|bN0V96KG7={l{3YMRYy +X_~nhUUUZg>g$iEd_(E^;54xXec=W6sfAUi3dI(bid3v{p>U)yb`lEgo!0*KS-c^-t|qWD~MD7-XKPo +f^M50L`WVKq3=6-q;~kg<=sE=d0Q=!()z$iO6NjM91g3JlR7x1YmNX^?}q?*-YUB*^)tQ2{TaOez33ssw +$k56vQQW%@l`X+%3Kq5=aIIt0B~ +t=FJEbHbY*gGVQepQWpi(Ab#!TOZZC3Wb8l>RWo&6;FJ^CbZe(9$VQyq;WMOn=b1ras|<5aiMdvC+g$TBB$jv~GdI5NL`VT3fHU?Cw&wQuM#~%`QJB$I+=s5nUv$hO_hW=FN;IlgV#RD +(NIy;j~ccN2zuqGn6_KX_I5s;0V_1c_OLrpIcjX*5h&vLxgpp +3y*?Jf&w@w{?jnb9Xs&)jKk|+-bm)eO5>rgt)gHml&J`s0oDm$Glk59z@S$0Slk=5{u4U416WD-SkQ) +%NwQJ0z1S|OesoJ=c483)0}=_(VA)UWhcP4F`axn0E$Hosl|@!@T9_T$^LpU&U^Fc+`O-CUf(<#eSG< +#Wf$(`GI%Dps4SIkdUCxU4HhQBYXPDo(ak=Gw$nn%$;1Y-ekHb5HUnwe)*9Yo3c&IBI`CYeN`C=Vea! +-S_jd(BdRqcs110+j(`h>58D2PZ|3Qs%{?*N)iZz_O!#r3mWhz|e +@TwDcoy^OyFK!5>Gv#l%dS8X}iS4$+66W-`*?-H3xt&PKJ^V{j^sW>W|y?AFjs$kiiU!tgJg>;DN29+ +obWhgB`6>!F-Zr1uG#5<`-OkP=sayy;Og^~c@i#du_yb8s4+A7^u^wt<{7UJpaH)lVi(w+*v`V(eyr3 +J@VHZ!tvoSBhhmlxk(EW|Ig(OZ<<8uBZpVP9GRWg<7a^1y6@`ZE5e4PyM+oJCQTQy~%wO$if+n@ZruE +;CA7)Gf6NGtwf?;+JDYgYUU0RJs%D9(S#r}^xC!=d+j3$u;afu +F{O|li1$DJt?(6TQ_?2mJcUe<+m<>|J+M8P&t)sT_9)$N9Z97RS@1N?<$0o&To==;j*&!~HJL%R*WvB +vSQ9kurx>PLsRLsQ@2#WqA2pO{6Hqo`v$>5tmY=HERqlpw2iA +oGPAlS)Kbt5z{^9XdbzFvS@}943!YX*x+?@f7K{x1IN57^iR1>RhSI=`w;)om3dm&H-}-1qn(c)3zT$ +6<_m5^PsDlg$)NEVLJq#pTVip6?c(9p2h<@>Pg*0!w?D*Aj}+;F;@Ou(9LGd2;0b$A`5;>CpWmHCQB`9OKv*{7R42!mOeoO!rH4_|U17U;-)^o{q0X9iCDK +=V|GrQ&maj3BE%WctjHP1qwZJSy-362m>Zny@q&4zt2%`&pKNdZ{PtE<=^&p`$Qwd%vMwO^unm +*fdEaO;Mhr{U@w22QWX*3!@H!^ngR-y=0%Ww3DH_7(3x_#T6%B3+V9yChmt#k~7=LoR7r%4m6etiLS# +#|J&?fpxE!YdS}|Ca&qEQn#&Q?W^^3c7zIS$O9P +qSIe_77uvlrD@T!)&1}zaqqb*Zrp#D^n*~3Wuhf^xn#kbn;?02oqDXfw#%$r5Vf* +%~@LR!i~|tP)h>@6aWAK2mnS!Lsa>hFNq-y006rt001ul003}la4%nJZggdGZeeUMa%FRGY;|;LZ*DJ +gWpi(Ac4cg7VlQxVZ+2;9WpXZXd7WBYbK|xZe%G(Sa33P25}T&e7fqGc*>w_68priI+h#l-3L+s1HAS +!lWv%k-`yBuz07~+1>X)U!gLA)g<*rsu%W_qgB5$Rt^hnyH9dEazb)$ByJ=U_?Fn2y4G5kIJdUu_@{o +(rUk2km9PtDOgnYZ@orWFlel_L1ns>c5MiPwb9{&+9`yBAgN03VLE_`n_9FBO=XjwU0^LoMqxdl6Nkn +zRvGl`o={tF&&^i!4N=JMOMlx@~yg-nkd${Ms)bL`;1vp+{8xsFvfH$wg{(e4_t77eNElXu;tzZ=M +QQ>|44<3hb7gUI6zUa`f6JCDKf)T{Ez;>tR`e@psaoS5Un?I{D;(@2zB%s&gyX!M5NDl!aMZMT9oqBQ +L3t*qHfvo|QG+Y{Zt2ecF{B*{!Xi +|iMW{oO|B(ArL6?h998StyS8~n@L@SgZs1HU7Gk7zWoykZB{JhOvrw+LGz-iq?bxYH0z0ud4;Q__o=k +h}_(uE7k~A+u;6GWrl6e89nI1jk_+8 +Gs@n18ukn4A>1_-@e7mkQY% +A<$Z&>G+*{tjYLb@%&I|$ebz-B{;IwKqp%5s?>DroV9kL3xI?I~3^oRVkZ~F5`5B+37-mo98-u^hJ@K +XSlxyd63!Sq(`5g>^F{F(Ia5-UUs32G~fEF7}r_UfnW$LoJT++V$aN|>#OE(Ul*&W?;l0vV5>jAK=9j +YS$zjYFl?jv{tL35l{i97RL9Df<>Ev_yJ#VbXh$s=&IgC1S~vX@qddo)Jo#;@dN?=d2?3O8FZsba#En +{_@qI4POY_;Eg$9b-C9Lm$i)*%EiB)-5n9k)s!>`2P3tiOmVi7EfP&5(!dRoY^rR9D)cO%nhdcUSl1+ +Ba-wnah(LBW4zC!xMtz@QZi2Ihb}w8QBSV-X!tP|`-!Ob%-O$sAGQPnvdiUcR; +d}_^>P`b+Si+g7a}8OTd_HsNHOjZBEB(uLZrY>yjvv)~O3YV +v$fJg7%M&37;Rjw9T?iR`D!~L7cel)q*LgD9uCl7m8=_{p54|1x^zPy;%14Vg) +o{}j&x2h8JNSHM1dWS_P&ftCMaEnl|0o)leC_+z92ls}u;nMJEcq0;*;G=^9^mC;S6*16mBU`LX#oH$ +%Qa_xgF3Jl)jZ3~;6?|?c)l^pNiFXW_caCG@4`C;lsV3|Dw7IMG7iJn`67X`8gf8Jr$;CYv)TPw@bTy +_Fi&+{}t0CkmPkz4~1Or$0(`r8>Bj>1=BH7Sw$^DDGe%c +e$Z9huVWpqtM}~b&$F@dm@LttON9K_qbD0`$dV20@BX$W&njRs{?dO9Y0zEyqNo&U%FwODkHD@w%tTX +C?64IiS6=|DHG`?WwkOHfEu!@N64tZC}oaf{mcD7(tyy-ng%CcPMwq;$xw?#1op?61|l*QY1bp_fB;P +x-4XeRBBn}WxeIAzS +A|+9QhtnZj~R|7-M0rk(XBc&4#aJDcj>D4Wp}nw(|^ChjEiq66%U1mnCLaJ(}QHxhJddz5lj1H14KuLXTt|g8F-jn#zn9Z;vV$L$E{lh +ErJaIjdU2sZbJjxSOORVZLI3Y`PV3K3zjSvW}txdCMk3}@LcUHaw%M-u45bk^bjq&oJfei+GaM%xJqX +>oqc6JSFTS6Df$y1X=g-@>vhwp=2cR_+g0QUjK=(`b%maMD|%~ee9{j*+DoRcK9RNT?@+spwubDh^s5 +teq|$8KU%BX~(Z$#maKjV;%MM8DM{KP8rDF;wRtDNMLvs6rf78J<$)iOebCjnHYuA*^`c~9Rv)z9vWra$$ +(D9~rA{LeiLI=*Y=x60h0rT|`G6t25O|MzU$+P(4e4H}nZSrms}js_Bo`_Vn4%8mz?;JCSm81@VFt)d +djrODDBX_CG(IEUQ|=XqZi*wRXx-rK0BRLS2py&YDykVkL|#fudm26)USVQVMi+J^VCE)^Yt;z;%xHN +;lN2=*X@G6~lhUmxZ@u=!ve)G +a+OeWHNQ%G@DI=T?29mv8&BKq92^W8rtw(fX=GRt>#%j%fZ-GHl((nN9?-Jeg=^x?Cged!$A?cwpqw~ +W-hh$U8a#b8@!1U&2Si)gsIE)-f<})KN|%6Gy?DnpPpQ_rTFyR*51?e0dvz=@^$=fkabTn+oC-{=+)A +n2V-maZQ{~S=p{+fg}bMH8^q2L}P +k|{@YzbsM7%D7DXoJT&DZmD7t16gh?AVqYO7$Hf0}z)mgW8JD8FuB5cvpD%h{NuUF9Cj?k5|q87L6h6 +nn{mqW}5S4Y#YqC4KC8TT4NX%$tG2Gp(|@E3$E={SwW9Me}&R~r!ds`{ce^_2NfF2vw+HgiOl=>GTyK +`D&CN61hMhH9d`l(cGQzmFYfR6-KA6TEWCBfuO>$!)>tbrsAS&a81{tS_#ckVXaHAQ{JwVSV1@kB4R- +O9Fp;6(5N)lk1uN>T(9L>7BZE>hkBN;orH&YkC&)TqX$r+@fniE$%7A6 +WflpSCpU!ikRDREzqHedx@g&TL15TqgXlin#Uv7;r&|O?&Axx8tXhx5~yl4ym7=yT(KkNFZVlgI#e=6 +BcCc`2#NWP1cle5KQ@YVWs)j4O;UNhKw_IdhD&OKdmrb9|Srb)c(4424`or^^KePCFUJQv3Kx+VY~X; +R6hHTIDAM?319+1>AEC8|`+Vnk#@DJY5>H{k!BzQ4=de$o%MKkRufmgxUy9qOxVY#tJ9*oHyO6AHuR8 +uz6G@HDhG&Dx)zY32F^nH#vx|5SLDYB1b?9>FMe{SQz}0|XQR000O8MnywZn|^R#69WJM-U$EzF8}}l +aA|NaUukZ1WpZv|Y%g+Ub8l>QbZKvHFLGsbZ)|pDY-wUIa%FIDa&%>KE^v9}R^4mcFc5#wUvU@;G4&k +EUWOrqu4Pad-RSl*N->IkPDE|Vlg{Zv>HofyzfIh-j=s&5kVwAY$La3W%;*9Vo#&X4)XIV^N^J;I%tV +z_Dic~{?wwq3w^D7p{VmcLUP06B(xDt}o~uIumkq+DLug(qWf{hMRH-(hL96pU=5oVdT@ad{`;)ME(= +N85;fB|`{R^Q|nF_)HZtzzn4Hl@FB(DX*dJwmaVt5zSa%1zO7hHWn23&>Z*JzvrH_ +2$qut_jsIFkd{wK-@8K)1O-#cGDp~RTI*xg89cTk>y$hJY4DD*Qsi6|QXxF-WU}i39DbsUQjpv*?1Q8 +oXxeeMXE4lgC^m#2yE?YYQy_7VARKaz;WW?>CO<#?FGkPa&pNHK_>X~{(_AZ8*|ZZ1DqD#>grB;CLT+ +~i3NdviOQZKP#W|sDfGe=%)wy30#oL;S?^O&+F5oZ{;z6- +Od3d-SmitLGr35zwHr1S73K=x`wl%pSc29{`wUFeW=XZXr+k<$4jFjnwU38l~IF+Hl$NA4{=*_4eZVM +45iBS(!09;{566T>jfQH$j4U*T8^7*J$2$w#_T0-s`}1&Y2JFCcMjbR;0m0t9*q{b(47z`s;(R4ay__ +D&W;wP+PZaQb +ZKvHFLGsbZ)|pDY-wUIa%FLKX>w(4Wo~qHE^v9}S8Z?GHW2>qUvbsGSePuN9|jBtJgh64t-w$OYlnRZ +0)duJF&m0rxr`xL^5*W|E(ltPB^e(1%hLOz^LmeP9JfkTO|Hp1P$(($d6(;?kg!OvDOr?Uxp`VM6S|-q(Ns!rO +`~EKr(8I$ko3`%`b3%y`BOX=@++b9vu$yjMp +jT=a26643X)9zu-T8&noh0>2LQi%zNuvJwJ>;TqYImwJ`q#B8*Qm^o}@aXn*c390#=F(4sN|ox7ROv$<2z!ZhjV5VNCc;%s2R;h(MNxo?AW*`dpA$2;u?zGuXi|Mlnr$#BpCyYBW=)uU-%TEnzr~mR?^<7^?Hoc$DFRE{>QyI& +(CE?5m+Dwplb=QfH$=c5$*{758kT;o{u|{B-tna3n+f4Q_A)SIH-Be}GaNe6MNM$o_SsUgm^PCJc|a- +j?#tIwUQNg3UCpnWEy#z@G;sky`L3g5M&D<2ZtIpdy6d0}sX(LBVcNJHBhBsS=jlKv61$U{w`N(#2TD +mI8wa?zvf&mGN*C*Ecj&kXX86@|v2wgaVngg9c3hAot~!5Sv#NU#c=16)?ND^r}hmirt|HwM3-wtk6a +?Y}e_2#@5)Sj>#2#Jq@k1z}~VgnUJO-!Ob*?g7B)98NSCf +MZq|A&zm%M?voX=igh43Q;E&>5P)$6o87OB^))+O;sgx=I$zr(exUMF*(N%G)*Gar&>UHSO7E-lU4$k +}GE;TdljmW0)>^{&77UG|N$J_8dU@R^AiephAIl%F!ceE>naHHxT1Fml-M#i3ywV8 +#}EEXJB0+9SVr@nx~PA=zUp<%q249T+r>Q68i<>$+h>=Ha9J3MLveC#M(Rfg{siljUpbO|7?lFVgS^= +MjW&w+KAIq8b(9@vsmgL@)8L!VtS>gi7V_aP9|XahUN+c1hnk)&tL%|xH54(6Aucj +3CNaM`_NIjPO7q?;QABiS($y2j|Beh7aOj`ff&MFk!+mDA&x7Vl+rG+O@WQ6wB8}JbTga~Aw@c$Ue1B +F=MjQA~puT8q-*=xEGdZzA->Y5W4GlhBen%VCK)f0G2Z!noGUCg?!@XnRe&RAa8#Lw6?gjq`a`&TjB> +2x_-M?iMFgvR~lXT6Bxo}xSm*m5J+Ok5x$Pi!Fs&rJV_eu5);P;}U2KSr^jgxOsO9KQH0000807gYaRQ}hEc76^30C6n<051Rl0B~t=FJEbH +bY*gGVQepQWpi(Ab#!TOZZC3Wb8l>RWo&6;FLGsbZ)|pDaxQRrwOVbD+cpyZ?q9(=IGkO0wP}Ik0OM4 +k-K4#sK^tt+7KgosmX>InSXop>YB#!~(ujM~Q(eQ&fUD*k(>IYHFjbHRV*Wy~>pQ2l_Ykc0LDzD(N) +^bySmXvEd(lM^t^=tp_sg;>FU0<4@{0rHM(unHEj<@^x%(4N^z%p6M%f0Z^f8PsHU*X8qRM}MGy)%<2 +w)nO4E8p1BA82rDv1&!f(F8hcJJIq^45$2~2Q?3(F>maXNdcYs1OI~oZFpV#)vxT=NXS!*wJ;Og0yw4 +@dADU7@Mr2<>xGl!|G8~1qg->c2a1N`e7~r^4)yJ=BlZW7jk>i2vLa&M~u4Af +Oow;Uf{#|M|*}!Y*_)Wl%^=Ghw!6CyTRA>y-Yyhs)&>J2|U7@9cEjB>h!$Y}iR40l`wBT>ilwh$lQ{29yI`h1}(&-W8^62k$QUaSi`Ib%`c{ +U$?PbZJTl#d4{r;o6ePY{tIFENp{aHdi1BQh7*Llz@i$*757dtFJ=igD(jNFz_`u8N#IyLF({95y#lpqoPf#=1vB)fKEiLV&eQC0k8E#P +Ygo8U(bIL>Ra3bAd%pQbye3d2BQRKXvVtcsyJgE0jz6)kN4^>g}+HgWY#9D4B8A1^zJG5;A{8N+-9eE +lBK-#3-cKc!P5Gdi4jUy9aDwk%kYja((VPIcorgeuGPE>-*m&6+p`^kIwn)J|udc?*S=SgxKh$JxkRr +k3Xt%3P~Fm8N1Afy=fD`G|lP)2x+G4-fl6+QJ^vo&W>L`Z+uB7Q5K&f!7d+i)Ct9*!K@mAuNoI8gtts +Js89-t(2PRdOcyP#>l3R&WoRC>egD4Ex&3IZIFDlXp=;E}4QEjw8&2xJ9tosbNxSXHE2sz4JC`6vP8errUFns_mYC#!?{=mXF+JotR|-gW(icBut3SG +lk+Vw}3cbIK-G1Qjc}-GZ?jgOT9{{x5YNG?Tgzl{6fg3=lawjDK`q@lqYo-#ELIo8F(mFI=I}_&5`S{ +9Nc0HHE<#RR4!#Yt1`_FQ6bUF{fliD^T*R9sP#dqeFa`}!202fc%1Ov7@H+6)x}qyXF9pu|c&HnrkaL| +E26(;%ALBYXI+*$2eM7v0B5{=#GXgZty-Ibqze4`|De%YQW2)>^33Mj#P5H@b&aG#eS&wZ9}0Cf#GdgpCJmj6*hO3>PaqeCH7I3;^t6gLlGWbbzw&Y~gTdYt +q)*p#*pufd?_FRe(2q6=jWvVQ7;?5EL#Dj%vkj87?)ujf6(5JF-?`H-+Yy%p06+~8^%YI?9FAa`aX;-K)nxg9jHMozB_G8!BVMjl2I!7z>xQ@AG!2MajDV(K +W_y*NTMx{O#!+rCyBaX`WL>td4S5=pdRF>2RAd>&r&X24fQ@_JD?0klb>-D^{)a_;_Jj<0Ai4~QJ=i> +WItZ$RpYkzR_G>y4Y_Ncf`2^WK!fX2JApHc#HC-h@k1yko-4iRkj7xK#G9b@ +3fY?Cb$uRBY3$7tW*GTu8BX`UOloo-r>xNXdu=+mk?=<2;{(zSk5#%;5|d3OA+ZKciS5zH{=0~#I}>F +BUyk?S$e?`yc7>iqjb4F(%LcGunh?Bup716z6CuXoEtMJ8xT +GV!#JRC2^#jBW>&|F^%&b)^xbJ{mUJg>ib824Ah7?A_{bhSp5`DZp34K1oZS+R?=xQBI{bImT7>CM() +DOF&q|*i9rv?aYZuV0k+4T0_*N!DtZIfV0qmnrXUWSS@W5t&; +XoyLSML48fDd;Vn|$s8?{pxj%kO<}S}PJ~A7j4@ +AqfRJZJV)IC>{=0LR_xU-jv&*D#I7^6ZONRwG`Ol&xVQuZF;4Hz__le|nn&}af+#>|#^#-e{wAD?VA=ZZ8YT}BD{cO)C*?d+29pCR2-NrR;X79djzcu0fLHA-L(Kp +QD$s}%rB1y$P@VHQCHiha_1bP0@;Q9~QlfV8gg0_^luZF_#2u}tNI9~9Imc8e1mU|~Vm%%fcN*bQjn}z?u?B5AR%^+wi)Tc3iRNgF5cv4L(5s9r*jj8Br?)=>qll#lz8qDh +nUmr9#ad1k_uQ#)=2ZPb1h40U|W +k)N~%-~$8%=#AbqZ0*BOzA=agsh)Zg&>(X;ef0u69RzPM-A*Jz5^%DPEbtk(NL +YJY5vO-BE`MWiqH^QH-aejS4rD?~UcUA@xq(czd&aJKUH16KBcfQJe!Uu_5W*iRfz`;8z;EoU#Cxy?Z +{H_%#G5aC{8?d-pGk-MKt@rwA?l+uT@&X-C$ObL6u1W)57HHhaYOT|GgtsQTEmHfA$|*7J1TN~yxk#c +?-0JBtE`ZuH&$0HWn7X!`sNOQbVjQ!!=iwJk$5A`(f&e#O1R|y01cYdpm7deIT2WK0$15q^~n`h3;)g +lN+%n+{;6xlvSGqv>|Kju*We-ohPkWg@0rWt)Db!HuI-s>y=>2e18e)6SxmcAKXr7!A^T)zU)lC2`mq +!~3ti7oz(0X>du<(vs)RewMc?uK +mBR)0)2M#{B}9v?;D%|{-B>Q{|it{0|XQR000O8MnywZ000000ssI2000009{>OVaA|NaUukZ1WpZv| +Y%g_mX>4;ZUtei%X>?y-E^v7R08mQ<1QY-O00;m^MMG3dcsW1T0RRB^0{{RU0001RX>c!JX>N37a&BR +4FLiWjY;!MPY;R{SaCvQ#!A|2a5Qgu5ic$8GRH-EnTq^BK3lxNeiUeA&Y1&LvYaKhX9Z-4t9oune==u +`d@%;16Ka*wI?O>hm#3zE(Z7WpE*c~2(LJRxwE8L@jy{xT;gEruf2-|qe-_h)}#hi0qY@tJU)D34$DB +-G6FfX7ZCDI9m^40O5~BxQ8R+J#36hPUXRVkVYl83}j2Hf~})7y@*sp7t>Q`mIhSX +;{bDkFyd$;ycQ~zg;dz>@DcQ^@F3AJ9Hn23hvf7e;x>}fyd4LGkaUV+&sUo;U`>OGsdC`Z!tQ8z~V_dz9+>bm0OgD5<1(iz&gsds7-5E(Tv67@5gj +3VEGF+T4Ch$%b**K0x!V{DIYn4+^F;=QjiNi@zj`H)g6YcL3-xRfDKBRxpcRSu+f2@EAoUk)g>{tr62>@6aWAK2mnS!LsSEDLc*5<0 +04mo0015U003}la4%nJZggdGZeeUMb#!TLb1z|VaAaw6b1rasom5S4+b|5h>sJu&rN&YlTMq+*rNAyb +^|tO*1O{W%wpQB`M7c>W`|YFrk>;c8y5(ZW;v@MUpBP1vdZ;x+ZVG~}L(AZ6f@kUqf3Y3nH4km^D09zJ$$<{xrI~K098_31W3T=ovygD<%#~ode?&3;q +90g@QOcnT-l7p;@5Y>Mpua^KBa)s-03f^Xx0IzfWALtHbIjH0M2Y@SdXzT@fxL%Yrz{4UHM?$pT~|_) +>dsd6}k__I1CJDYmKITMUy=HM6X$^yBB-+q*&2vuu2MF~hBYlt1f#7xD2R$WZ1T7oZhO>M--wFuwIDu +V7@y9$%=lw%?!ej~s-+?Wb2LjJ4N?o7L&v%|5_AwF%rC^CVjwQu29NdRuCmTRtg9O!^6X@JQBTET3obQ2ZaSk3pHbw_C&$5F(aR%r`DRTY=jxK +(CcnchTEmN6l+4DR7eT%pZcX6vluMLdJp*h27q*1lH8ZFkG{!)CXQzeZ8yoT4VH!Fx)!EB`IYGRYduv +MF6Fu!NeK%nFlC;mz-`S4u1*pr6%!Sh(MiQD%$)xB;pDVGH>9^X*S=$1ABcLMJs!Lrn${XwB2&=yK1ggR1X8o}kOIRmJzZOvjnuehzdeVVIg-u5k<6Owt`2{H +fm?%fS(An%M5N2cH1-M+uQy$k-I1k14?X>kK(Cvztfr!8{RI<<8OR-KfVQ!;e^VfnX{n0N4(m)&BT{eWhn88_r(vkg^%U5x=WP<%F`1EnEna$;eR#4jT*e~-1z6r7s1ouT^H(@@LZW7SF1YPyK#fYUjfEpR5};6UoGTa;JvT<_bwPPJa49# +AIS=%Lgb-MXf;#dv9Vl|hjeI+jYj!|*8Nt3>8DF#E$?ze5q{E~CA*?UVQ +}FSJp`xe{*raU+LsG*l{5|4MP{YOkJR{P2%ZgkB(rdKW`|P{FPPcC#kIw!bl4`Zde~!;gTQ=nxw8R8n +monmW3J(T6e+sNd9u7mJ`p^O_RY4i%ANhwppC;33z)&L7r-uUQ4j+)Rp1d{e +6+`xvAPoQ-4hNipQN)cd-sGxqkH^JRKqC1Tw_aNARXCc8Yb@Q8>56J^F#hhjKXMwdN8{o9kuxJooIW8 +B=DvZrRx)g(;enw5gf1O3c6!v-I5{OT`HZJ-awL~m;Qk)sT=3X?B+a=O$bXcU#PL5+O9KQH0000807g +YaRJOEGSw4o(O_lSJomq)0PBy&EWF1#5y=E(17;8lCR)-_NzfU{8mgQf(RtPdSL%6+tNL#CNp3uT +}ure#0krnwSQfEYzn%7m$@iQq|!4F3_?uG?RlPYI=DeD3eqR}Xk>Ly`zx=zpln4$kM86$EY)@QS|+8;qz>KDsU>QT_KYEp<3$9g??LH$YOFbdk7d4tMsa8=&=T~T!&1~rgW +gIgo8k(=Vlx+=Y3dS!ApR;v85XPx5ohcfF`r&6qRzU+^ED(Fr?j;(f#NyGFNs!u6buz+9)lHB#7aIMhbUu#bG67M$) +NyAvgQhAcO*@puyx!n}TCnWPq+^91TpVNC-{#7~M4}Fdlmd!R=jgdl$sS8`Gf;Hw9y!^D=C$N`eTci^ +y9@{22uxxUWMe@}5?P^$YXFbHxXtome!C0;Y5cnaIlTbt~KOhwqLlg`O5}>eyFZcC=g;tlZ_IY;K;KD +#tdk8Dm0j=}8o?x~FDIN|>2%SRZRGsECFE($-~_vmRzMigs(%#rfn_;Ih!anVh+k&SAUe$Qaa3iSma+ +Dh(bAsGZWhP!5)nJVl=0q})_?kjoAT6@nF=1c<|B+SH1x*c>9S-@T(0(p){mF140To{?TtSt=BK?MVJ +)&s4j{b$hLKrKV?R+wC^Che9mt)mg?jXBDp$eVm@7VP_}zB<(3Vd+M2XYPack>Eh4^4263eh|9N^SPg +=kx0lJ~tKe?xiQGydW))EtdQm$M;6<;5{?Q;uPr{fy2Eg-2gmZq6a2}J&c_)=#AP&qkrSfL-kW?NL2O +N{p^Cj_S@>EGo_Vw_uBXhLethnw<&NB+lw-%Myo^|ADSFM9+dRQ!v^a}T=4AWx1SD(iFx?3FE;gNb99 +Vz-xuI2ou!e%#Nc`mm+bCCO|Y2Ulfdzx)Cc4U0oQCLb114M6EYs2rd#1@za6z9~&D6Yd!0;|rCvNAe)XMu*h +zOmL%MC%F=DJNEW~?|R`uD(9WT?H +>LIj4S!X=8t{5)ufKPqFWN@8hpWey@*i`k;WV8O?Kq;J=?8TyDZXxx3!^0ApyXkKBPmuRtw>TYty9+j +ibv&~ii+sivY!9M3E>5Bh8`Sr2EOHSXb@4v?M_VVbf5!6-53Ak{FgH_59nP?O> +M_eNLu!cpZRZXj)uZ#V{!QYA8`(xIj6Ao`P=lTCN|9*q_exUR1eFouAa_d36t)+e=( +%U`y2T)4`1QY-O00;m^MMG3<6Fsh&0002;0000V0001RX>c!JX>N37a&BR4FLiWjY;!MUVRU75X>DaL +aCu#h!485j5Jd0$6_cJI(S87l9Q_SaVYQ9WlCnzpd&^2ZxTneN+nF`STvNvCIbseoRu^S~B=ny9C&V) +bCyc^KnAnmrhA2#P%A%XyC8B}v4;ZWMy!2Wn*DV>WaCxm)+in{-5PjdT7;GLY74jPBqfiAfVz)Jr#zEpDErMV{? +T#ci6uBk2as)&F-WhT)lq?l3P`^kb=Xz$&44vnBb^}{ew+g{;ga^586mC&_2i_PZ^_o5bwOEn_3b%(R +VKp5)5KGf~sIjqF2``OyMV6DnjBFU|L7DZM1pA-8UbeDk3x40Q?e6YI?`QDPuo0nV@QC01{R4gO8=S# +!nvS!m*2tzPcc^P)i$+vm1$!uVXdTJ))*4|Qjtc#8S$1+|3Bp0uT1$EMhXAkO-NWPE96UP8z7f9K5GK +-r7F#T`?Dp>chr2g7kM|Gn%3nYJT+*+f?tg~`V_c@(sKz|Jhl0s>$q* +R0|-Nrn1P|X<^vj5I#N+){-pL*zjym}39BfN00J+5tVk=3|@)WRhA*rIb{jq`})=g!IuoVQ}_^LojEBctm}H+RQ;}Kg!I93Vx0S{L;lf>LeoUe7K(iCB$DNC~_4H0%LD{a?xF$MeDpY +|D6?|bg0aRPt!v$^P5Sgg^%4QG=)kcdi$mM|$&0_W2c1H}niJqj*?_o3*9 +TV^OSbknJHr!lamH{1$S{GnbtxA`@oPO)lZzlg{el)Jf}}?M5}y$p=L7>O+yoA@n~BPi!H5{SqgPN)2 +wgVi(Pr#k>|x0NwkUWUg_K==^V!q0PM?&btM1yk$skCx6uiOEjCJ2Vbq_nGTyH#XljzPcPkXWwOFo{S +YM)a0ELK>a-MqbBIjvy{DP{Xo~3;=BmwwMI?u_jT3tmm((j8bO=>`i$4*Oiis!)KXf{U#V(Qs$Wj$^7 +aj+lRB+|LT(h^Z8P!{lUV_H?yIq|nL+)fmnBk)jHSiC^=MM$otK6ar;FNa0@SExWsFLxv7kHaLbJ&{V +YYH?Jm(J2}3*BZ?a-hs8DDRCxg7xSX&K=E(Qj>eJH;~4oMq$5T0hSt)Ik-^$`!}c89kl{7K?zw(6y?| +u#FHYQ>!5F(QUN+Eh|Hf>$H2AJ~9spl;!;h!i7Ot)+;j2z_@tm4Cg!#vNJLOEOowU{P@-Dxklzl1!C$osLdDtp=#_-{?L@Op*MzC!{()M$s&xS=$`BfBcCsc##Cl0?i +k<>lH{Nckz3i58c-kOEV;NB1ZUK&%I%6&rfnM)J3sB)=g}a*cnU>*l(YHyuCu1=DT$-FbhobNx +)`H>>EDyP}ye{{wB3-XVWs0-2jESe0^(CX8?J6+rGyOG$Rk0D(QK4Je!0yoeYDm|~OM2LMoAO4l;wAD +{+|6$sG7R1(I)|@cq5M~XLBMzLN6$5<#5w~%?|6|aBVJFevjx6Aym&}}&I*+7}jn|4`HjM +vS+5!Y0n>tM=VKObI#_2sB3`7I84@u!h`42Fk?@Fgv$B7U9hglch`3P3oTC9+JWqgGGfpQ+dhnS!D8H +0VuxUWa)aCP*?-Pr8|YB%7yyU3B#rXO<17&i{`wyw;B2LHyZ`&Xs>Kh}>~By@0|XQR +000O8MnywZCXV%8?E?S+h714zDF6TfaA|NaUukZ1WpZv|Y%g_mX>4;ZWNC6`V{~72a%^8{Wo&R|a&s< +ld9_wekEAvbz4x!M7%2e_K{@QHB~}}4w9-gXa!9h5)e5i2D3wBYT&sE +RVT6N5R>4kh|qU)8m?3dmOC3(Bs)%39!eO3r*L8C0|R0XZcDxsmY#h}~S>IYpm;s{T&Rw?_@eg0jyZa +K<6mWCFuIBkV|nce+_>szXW6{v}E&8*pT+Z0w&F1HMhrPsveZnvwTW=r}7H$@Nqn>XJVlTbqq8e|Faq +O}hzlDvaGGgc?;ySMb-?-)K&6unpS2pEVj>dY$KVoFTIp94xekd}-P@C;3y=@KYA@>W#bLYy%6z(mc2 +bfT2mMqnjo@^%=WooVPbcd4;Q7O{71^jvHHOy3NC{Pfw0$fps~SiY_?6X7u>V^P}>k2#CZm&fzv-T4w +_wbC88vDe(xLJkT4G!za5;Z~_sT_xxZP0c1GhRpcTB5$nqv596ugdWNX1wn~R@)Su$(* +c##h4pIt?*j%(`Y3BAn$d~W;l#HrN1nZuTqXey*$DOx#J_5V|W+$yWoNRMBhZ&A4m_eunm;PcL2C4!z|83k1%RbUAHAI-d}a=eYTAdVonOxsf8$NkObM#-i2UF +;mLIglEG1gqeTFLHk)rNS$^e3^Gx1Y5>}zftN3Mq-c-3 +>>2DVac~+8&_V31$91yp$G}O5U+T^ZjD-pb@Q7WjWXg&$&TQb~5iY1vaE!?Z+pMSGg(j7gu#FmQF*n9 +$u<3bVACzVv-~Z~YkR?vQBtS)!Sqm%@?HPt)ysDUIh%B7nI~cE0dSFjAk|!(``k3fdYcRc%l^KcJ*;g +BT=Q?G=vJSX38)q|I?8K3r<;GTY-QZens(=w+q)ed?eG&%9>q!l5#iXK-N7y(x0LUq=j6F#V&MofI65 +*1foZMGTFWgMI*|F6iY5Kyy*(wiF8SHJxkUdHNWuSBOo4Lu`}406`x{V80|X +QR000O8MnywZxg+o|3jzQD;RFBxB>(^baA|NaUukZ1WpZv|Y%g_mX>4;ZWNCABb#!TLb6;U{XLBxad4 +*F=i`y^|z57=T&Y=l7?xCg7Kne@}xRlaEp@$HRB9CpgjwD9o-MFRyy(2r`B)cK2gDlOw8NYcms>to3G +=V!dZOD61we51J!fimQSlt9Ps7j=86VsaAO}}pyzliAwU%~`U#`AS +9H&i0$_^P7|NSF3)k|eX(BMc3eP&y3u6@y3G8-^d9Z*dctrWiSHWk&?xbK~smDRTDa?YsARQaldFG#2 +agiI`6}whLH(80Kgs7EP<6zBEn0$9VAM?oBD>NMyH1%O +L|o?#RYTR2JOs7itD>6hote9B|06SFD@!xI7u`ceaPl{@)a@(&E@)9m%Vm>sa*Y!HEI{$L3`4&=}z$ +CKNh7?C?n%EhrIK3Kv-jwX3c9BbQ*TMsVGf3R)oqCV+MPBn2KC)de>9m|u9j3gJ{%8}PD(QQExo@{Vy +nXq6WtmFA*Y9L0}~J_3{fP)h>@6aWAK2mnS!LsVOLUAaC3005f^0018V003}la4%nJZggdGZeeUMb#! +TLb1!9QXJ2e-Zfh=Zd7V{FkJB&^z2{eqvIi1v8v%P_C6EvT2?;F{9~V|jRHkiFdvF`ms~T1a7F)B!8U!tx7NIke_N4~Tj=k?K7Rd#)hwg9<& +RbderRlshTBw)rgmRc9vh9rZU|f8&7~kB%C5<&L_(R75jLRQKgk;$4WLK1QE?QbEl&J)7yJ+pC$FdXE +R;~&2TN2^8HJ${$klxt;HLM@U!Ny<_vRhIA)Zi8W +p>vgH5-cnS4Q*sz3Wg5QH#e*g>F*3PJlBC84%E?TN7BegM;U!R=!}1kBuLr<14bL}5?~oD_a6^XBq8G +LB0(L_62;R^}L7+Hwna)PXV&5L{Zv&aPiMFMZEJfpE}m*QG^gdRw7;;>f7M5DzIqS8P=TfE +(i}#63bKv^JhA!mmclN+|hr^jTpgct?8J5V(L^HVsy +UTO|>5~2;KRH}NI;EM8Wd5NlXPAu|yrqS^ImaK2*;3co8JCSz7#2Hg?y>Sma`!@QS=@A3!H3Ngn^l-3 +^gzk;U>xu{dXjg`Z5T0!08jA<%8cjTQ`2UX+hTrXK6%P!@{o?x$)aI?gg>c8+&!(&jnVip-BIEHNB5@ +znq|pQfdu~eje828q=Y}D^E3qvS=haFR058vNCFg%JBy^;D{vKRVWn}ySjwIz**|&cte=Frsj5h&_3+=kz)}QG8Blgp9idIcuxh9j)&C7)UcOI!F}(16jQikq@@L_A +eEiQ^1OFADaT{?E*S;<&;-v;Bpkd78hNPeY{u2B7g!JHMt+tDDyC~@-WxOU$z}jXx(=^Tk9Y*e-x7G- +Okt3y95Wj4{rb!?aL-x=v9fPb5UH9aeAlq^x>PSYC3Hk +4Lk{vf;F-%YP-RFLNb+$OvN?XWP!E+Oc_N`JmtN8g%_fO_zf>Nsk*i$X!4m$Hn7(0UZrpB1y@%7j5*q +ah>NwSmWW(3CSG=&8u0pJPSf)Uc&Kkv^EBOr|}#}9;#Zuuwk4w%dbiS6UEhsGHn=2jP6HN?%P9WVj2X?m#5e7KVN=q-CObO$SL4dh-8H()8W!BLMmkdUYhGp>#Gay^~T`Zk@*ncHUSO4u+X8% +byqPt&V*9huz66I|~FWaN$jlLcJdZ)7;r`95^uKZBU2vbX?4_!Z5J;r@&CLBfDk7G9L(S5&X4;ZWo~qGd2nxOZgg`laCu!*O>f&U488kT5V^DgQs>k|18hL +I!#ZHdf+4^TT~R1D9TSr!fs~#3-;a`#Hd_EEflNNW4~mB1IfBemb?gU-b0BvFD#zbQ;tIZpNZuJ+m6A +ZAekB)?^{j3z)q^2-X-WU9s%o)=*Atr%kZ%niW%CB}oKT-7^2-Z+fUS49gu9QRh?@%Zvsf%Xql;`ToB +^Qo48~gUwuSU+4qnTpu5!bZ;(4Ymv0y1`;%1m@; +h%}&rT(O2D#zJrKlX5Sz_da=o6PbuQgam?mU*-q)6SWEh12(;JBttgwWY{GhWvo_aq?QT(Wmk +1Jo~^IJy_FV2I$d-6`T;9Kb^fS$#g~T$p41~8pb(C$q+gNnvq#+K*O&uq37RZw!{{h>l0JN+kBcUem? +%#e%*fA6bl6om^al;{x`O8m=ozVTNfmBp2^sogu5eYEU=EkrC8-(fm?iX~BQFtKywSqn +jd#(8m~LvtA!5_T!;${ICvlFl+5umo-}7-#%T)&ypyN)94-5U) +of-zLZd>9?DHb3y4b_bUA~()dA(5AU!`2(@#u2&$-NS|o!=%d^Eabf;qn#EcXnC*1yD-^1QY-O00;m^ +MMG4_J6qr92mk;D7XSbu0001RX>c!JX>N37a&BR4FLiWjY;!MWX>4V4d2@7SZ7y(ml~`?$+qe<_?q9( +=A0pp5%4XACt_!&6U7DbaJ7f>p1PKrXI$EM^W@S+&srCBW{`WpJq+a~8n|41W7Bw>*&O9^oPqS +{_q|etA9UhGvex;4{{R=DW!fd)Hw{E?z`X?`a|9j^qr8OIoo7$^8U+JZYuj0x^)^eq6kn(ENl)6%#%v +-rp#d}2$((c~iO_bX;x?XisKh?Xr_*vHwxxAW-ORuc-#?HmB+WEQoP-|1qMJ}D61ocKYX?Ck{1e*tWcH2%2sNhmHJKQ({p&(O8o!=jJ3*M{8U4xT?h0)_EbFYc~onaWw1zKiF2GEo>RPOIbyil6~>C%kW)^2Zxe%^rU;IL57Sw2pZ*a0*4E;^ZE<>9z{Y9-U#gv4Iu5`rylNu=@!EDx03 +sprr$sL@YyvksdzHEaLZZb%BAovf#|+YJ3PIXh?d1}-mphTS)~ecz7XGDsiotw5Tr#65ob8(q=C2!-Y +gr*Cbx{$R5i?w7SbxmpNgW-J8?%$L#8t!Ovs +u4jS{2;f3fm85}@&jrKD-?$~{bdMt~+=DNDzMj5NuG`sWAH4FVQ?FvWU0VZ{7?C +Pn;vDEXIFVD`>&a250Q1)EJ$-<#RobH1HA-p7Hf9@5&?5E@;7PZU5Q8OM5i(w%t_i^|w3_ilB2vMX~g +eX`gi=8kzmvfQgwLt=HCqw0g!pGtXQ<4f2?O-ENo&P$NquuDJ7|?!b27g +v!0aG-~Uzq=XY{mMx0Dz%j}gSLWf}9H&`O@oSLGv$^>0yPK`FD|bPIocHb~_~&k@f9dPvU2sM+?4MNn2IFY?75Em7!Ca-fK*y8<8?lI};R- +ErO@|P?M~w!Sfnov#P#eN2U_eznPA1k>?eJWX=2CI%2T`D>Lc5zVn}{56y~hJ1P!faIA^W7?)mu0m`Y +@*HQZWpI-Hz;}$1I0uHmq7xh0?<=Jj(IE?*zjcI=h$+HPv{GQy7Kl{U&E%84oKnYEtEx1-Q2IsB>a$$-wJI#eUQ$c3M?M)ExQ^RIBPhGRUN5 +)w*@E-#&1f((URz>0}VA+9WeV^&|1VBZ^!-PP`+c7@8~y0Z=ZXGpBA_X~|v+RtHx0Y(RuEyjm^jCQlKN^OW5Q5n*h3I0H6Bifo64LC3a5hT=@O1VEA?RsxB0u{8aNoB)v^Dl-l-Ua=J@;{*^B3n +oMoYs;f6RouZ`R+iaQ^J2$Jo=`wnr|WOdC4wQkRJm+J&$f!X*{JCIUgs!=blCL3*3VQ^9%^g7TBHBBHSv>bchX#r +(L_7|Jz{=f2Te0vzT*XhZH`>)3ZI&Gpr@nWckl5qWVb4Cg@OYM)0hHS-!NEar)&=&3gSuKxY^;Lfsuul7N&8$8zj>Yb$2f!rd4Pf$~=dkO@lK0kfN!y$VmAXIoqpI_wCnX2{S(&%U>NzH$rfnN#o#9j^z)a#ozTaKxya_xBh8I{E32Esi +N*UW`Un$09};uIPMkQ`2WB>!6U?u`nL(42y;c%7EoZ}JF>n!%5{69`kl1S2 +7dUlv&SaaXbGp8hCj>K60pvjZBkvN>nYt-JaX7=m*#VC=znZ2x!zKX^OJs5?DqIyCRq5UsVO9KQH000 +0807gYaRHM~TEm#2n0L%ga03ZMW0B~t=FJEbHbY*gGVQepTbZKmJFJ@_MWpsIPWpgfYd5uz0Yr-%Pe$ +THs@?@C{%tv7ZH!2Fl4K3SHq()6OkR~Nbr|YlZ)mm)lgUd^Dm+!v&zT+sRL#c%S$plE97@Kl0jb?;WN +=RZ&3iv1W4rH1c>mkZBCC)#Y%vdb77glq{axax*sdSqf>oO(1IC?@pM`8FHhhI@RnT_8j@CcM0_KK3{ +dGC^*^(*>?^R^3&u_XdKlzDF1y6Dj^R{3>71M)S$RYd?#ReCIFw+@?c)p#T9Doi;h0x}=J-$R{uw=>{gzW?;3= +)?xso~mnrKCLeB84>KAy-b2Urc!JX>N37a&BR4F +LiWjY;!MXY-wU+E^v9RR^M;iHV}UIUvW?dSOR4EM^>cGkO6Dj6#tM9R@59jzrykcRYUg9Z%@fj#H(iR1c!rQlaXaHA{g=(0*_?=0^ClgV(N?TH9|73bIskExe_N@yWmT!VzN}sw`!f{gaindbZ#pa%CgO3 +{*qS?j?&3--Df5qaT=M%zT^pPW_#tdE*ylC)BNol%P4JT1iqbzmCMfavzE0DZa(5cc*^oMp7xth`7J$P>PDV>44E@y!%ZX7gELF@{u5p5_p&{k$-FltTm +7N;Gktveg7?R?S%RZo4<=BvGb;ldG|5_LqI0J!zjv&nPZSNv=26PDoF_twY(DT~n>f +PV)1xytB47=kxhi*j<++`+DB?cBh(o5&q{=<@2hjmgQn`npZzpi{)ZbyeSuNR?Dh7EzcHwxm=wUY?+@ +e=WCJA_o1@3KUpu&Ud`6a*QY)nH~=1Ihg>c$C_)pQuA(8I5gi<7{F>GMnI5TsA`~~FDgX?J6GBAY!qyh9{76k@6efPrLf?dbLHO(-dc)(vxt&+mcQ3p>6C76!^0OQyJ +0bTVFRAkMW57c8t0{+fRM +v~ZC~d~V!PZlQww`xtfLw>uQ>|HQ&%8{y*sk|;*==J2w|8JKO)2>%5iirX(;0hQn1Qi4T^otH`Cm>3O +-h{*c3aaH?4OWu^tx30D?Y1a{Cp{@q6lKe2ebM1>_?fLl}nwXXzBX;PD7Kb@`4|<7v>*TUPQyl{}7^D +TIiU$q^B7b`XNc5s>Y(h2gf7OoLPVO1VtISPUVg*BIUyfzBGv0uTYxWb{76AOdUZ-ur+8$oe4cuCvZ3 +C-5Np`zIPk$tpXeSwYhv1bgFOz&kW@{4BjVNv0klp8ELHl%~L#CQo5cvseEE>>CG*<+t6?u2y$;hvOO +TLY5`XX8SI1i*6-;$8&)`|KJoH^JTS~EtiRZ@UC7D+>CCJh3y&)?G$spU>Mqjn?cQ4<1~sLWPfF5!IhGBf_c8=DCt@b^Bj&NVuF3sf^6Q?+`-u`opK!;5=#?OtuCY#%v<+J0|6bQ*44%nY%lQg>a8+nA6h+h;XM!FO7C{0h8p-KW-WXh4>p4X-$gFkYf? +U%4; +ZXkl|`WpgfYd9_$=Z`(Ey{_bBvs2?f=ih#9iF?h(ZEX^9DYf_|HhrtMBTBd9^lBkkYT%+iJ-`$atB}> +^0wgqS*QRKtt?w&gyEsIKN%eLHXbGe#iS{2OhD_L%sbf0d2e|M3bUtXNQnP0t**iW+LdOyF8*ejXZh| +R6g+$tThU!<`Uhfv8XPGkw6N}k8!b1Et;RcRW`OW5wMGzGWmHfr7sYzla#u{_T?&cD!F=`qCG%G|_-G +--pV1z#uWwl43@WFoUZ>)C|CAK`dIn`H^^J)zG}*p<2ww$>$seY9HFsaV4!dmg`xpMCFFz>q5QJD7z2b@`|iVAF5$z0k!+ey1+DqjoDDzu$F2yMtQDr4{VcB^Q+1KoZo8iJF_yr~=uSg|~mu +t3MqW5rgxdg29T5B*S-$yWC86+!cr7B?$Zdoq4v5XsFnCB9GdZL8^Me>q{9kF=w{`Thj>NWAbcn^#h4 +dsZ)KmYDq|McRUXTcrVk>=bOlBh6FM?nyrv7P2sMSg_MSGCO7h81;gWt9t}?P#eo6=V;|#31E@@eODM +as|QeOSLOcHcGA81J7$=Ce0r1VJ$M2fbgYFlF*1ei#+;_@^4|R&pdp(y90}^z$H_5@&i3M#tmZgJgd0 +oMGJJs)&PZ(Y9qu-3SOl^&|ci&RcqWNid~C_e_QbxKtMUxjPBUP`;>k8+78OB@f0YtRQ8B5B>|)vkc! +y7*c(hnw;+~Q6egVZC%deB%kM$jHR!`Rl%&G*9R~p8GB^ZtKre!cPc^5+bm5r};5_dIa6sR>^&yfu%* +Ck0$-%CYY|l*Eq0~M!0hA`BAo3P#C~kRMSdfJtmfBoMtI@ebKgx^y-p+^Hu@l+LV-BE~aH)GD8u +k3bU>jy$`^ok>TQjXgnZPLnCvqJ!G1H*P?h|xzLAzH+3HSvC;}^nccUFb*Y@BsxB?bmQ)J0V0H{<>LS +cV8T#a(5;6ZW;1fHt;dFXP4rvk$PBW!b;}WbvGe#8->PzBKX@Kagl*)Vc&7a)O;_UVXg~p@M3Qv%vd$1?>Ygx8$40&d_+or9`LOpkOWa9m?OTt#fKzp|jn0J6PYGjd%(1`jPK#FFqZ&M=nSsT +>gv3Xv|B82JZCeK<^TzoJ#)uNW?i|k3|p#@keN-!$BVUhH@}Yt7d*xNd1OO^y#oi#lN;I@h3Mn>%;o& +OUa`Mhoi3pGnn09e|Vd=w_l-s`Fz)iC^gX9s#9e(WS{raa-cQ+1JcU-Qa3GMnRA0$LaPg-a+Ek3 +A3(MTnowT;p-9ZDFT4?Fr65r}}*3eaqY7&%&?(YtS)&5Qaw?(z1d$+}#4}t(Y9skwcY`iMHqI<8@Rq}ytQ){K;^W;$t{T4Z&(}vzJugCd5mF1_jw78y1 +V`RA6|?ChcJPsqWkKvN#vnJ4{U1a4#R2O+Uoe9e(7ERXV4OT{eKP)j1Zkmi{6fR-Sclc`2$c(0|XQR0 +00O8MnywZ*MAYCq5%K^8v_6UEdT%jaA|NaUukZ1WpZv|Y%g_mX>4;ZX>Mv|V{~70Wn*=6Wpr|3ZgX&N +a&#_md5w`#Yuhjo$KUlSZthD0nQ*qZK?~c+pwQW)PWNgQ`#fuvb>2x%ns2|e>tt}!%7PnU#UzR +py6u@V#XQ_)#}FYyyXZ;}Y?Ky_)jK$A5(rQE<~1K2+F8xSn=5%*3y2 +T)@{BtNQ?Ac^<%8r+R&63Qp%gHklO4pPSp_I?u}N?)#U`EnHnf`mj#ZRQ_-O!Pqc$(A!>@d-OH29@sg +%`=~4Ok?ro>#PcaWZD{eNqZQ=E6f9r&ej%ghH?lrbIXf?w@_uiNNt&=>>c%kgNbl=q8eJ$4oPg2~yD&&TxNtrCOL@BPAfpAM2!eF;=--xW_g??4;x89qJ +tB{@L`;fiD&A%i?$SwdhDJ6V+D^wY>t8FP{o@61r0rqgi&3?-V8rxQEqxg>JsVt&GEY}f8LCK6;{KEl +*&nvwc`VShdYOGBG5gfj-p!#{rRh5eQOKfeUsZ}sMKSPT_x*A{eR*|#9dwH&^g2$;S1 +_R_ER%KFhHmMCAbhAvd;b@?$#kP=3t`q_SPXOik8wPk%4I+zRG#CuX5!lN@e&qRenaYa50V@e}cy1*= +8k3a;L7=TI5sIfwtjt!BKBpZ_E|*oI*b2UuYt9tmgg-#+hV9k@^lbgvVH^xnzGAUZ@q)0$Kq`+pQ2;u +RiO4be((GlTxT9(wGI&2`jl~f=`GGB@%rwbBqr<_3Y7?x1@Kf-zDspyHRA7C$aKx^1_CbJ|?o`MUrin +w1akflyrq*)Dsx3a;wItr;F-VMcaM3mU$$L+f$)b#h?G}ug +_mR1@PN%{_^}g%Tz9%F&^;nCdrgx!mJ1-an6z)bRg6r2n)O%&2N}jn=w3>V1zG7B{o>jE@jT=O?x`CDS;VmXe!G!+led#SyzgaHK7NCIc>qB +O34=7oClVO_Lk&(LWWQqFmb@67~hBz0f2px!iF+x9DKyykfow8ov38ROO2y;wMd_#9hw{}_Ex~{9svJ +(!axiJQ5O4JO?$z!l%7@s+&=SO^y*d7QeEe>Fd>srdIE#T?QO5Dmv8i~r3fspKu0g9U=yeo1 +b&%XcC&f{%F*GsbLufojIV6p-l@VGx#+V+mjNkDrm*nXrd06ch{8XEzP6`Q@Z!3Cm7=6EGLkw?AS&>a +5oWrB#hW-ys;vb$spg`%4x&;KW(oo61cgp{8Hod&K{At{fzVV#qUPoUZVn}JKAm1oyXD|c3Tmsj@A +Nk2Ik^^;u@h~*V|NNv6;oPz*hpSMFjUq?@-!(@Cx0-u1-KDq1nr?9&CFVnXFCp=_PE6!Jg{I;l@wHud +O?+h(QP!fRZg7S7zQWLJH%ixSO$>c*(O};x})Uxe~?W? +p1V=Y6Ax1kv)c7kbI1eGHe)ljRMNYL^bbpY$u8Bjfh=wG?lV_?e&RrfV@0;YEydVQn`o_|08^~2Tl_4 +U}b*)!W!&#=j!LF|~%=fL`G-cev^73p?k?E3MUZpWcr$R#K?gR-B}bVsdlkRuxm8a+*nqK7N!XD0fz8 +u!G00Yc=ejCVz{oseON4P@9qkdsbYRgHT|5u*1kbfxRAmtK=UX?6EQkA#uyawt5i5;Q9Bpx(zi8KNWV +2FefJN`{zeH_1n=!y%q4wv)w2?0j~d!_0cCo^;yAjXjvBnGdqYabPM95os=kUSV6fvm&G+H{954nrf_Nq +?fy)@Q$QFyN-pY_()^X;0p5GGKxAip{-dQ)p2(ch~B+Wsy+SS2sJFka%%#QK6OI>dMc$^409uy +jsx{DS5KL&W?k&?Uw(NAfjSQBNC-+htiRppQn4y0Q-QdE^`ep+Zo0FG#!w#ldR|21CA6%)!r>#B^GXg +!v+;|0GY~arLo@;_=y)7=ErAw1e^-c-Lq`b?zsf4L#;1R5yjO}h#PZO;2e(XTea +m&kz^h&H!TH5F;wEnN(&Z)AmH940%r#pK%gnXO4^F5NtDl<4y+jburU^Sw(cg-Y-+PBSULg2nRm%1ByUkE*_-O53zt{61uJ ++yD!1VQ;3%%Z=C&Kvq_T!hB~w)X`T`c<_f|_wttu`4^xXkPl}l7TyLvMt?e1|5D5k1$d;ILqCPAD-z%X}qn!Gx9Zd=Mp$(i{b$Jv`Erfr9_Lg1%M{j7V*y_zRGbImY5MS1T)7nCgB&gerQ{qSDOW0vRIYAK7aX-p9qNZc)hz>7 +q)hryQrRhC;b~+RY4zu$LXfprEB~5u>IRdx4)WR++4gmduuTG)m+bxi_14xS|Kh#m^XM|g-e$h$^6}} +TS3nV3MtFL+Ps;mLXEhj;VBDD4hanUXH}j-{r8L-h77VHb}R;+sReMHNES>_Xu-w^a*6`6HEtlaVds9 +uXsxEbrxr(&rb2r~ji80Fc2Zz5w&DrMw1N%^ccTnWQ+{`vL-QAOBlH3?_=HeY7bW@LdBK9?eTibmxR@ +3pN^qUraYpnQ@mf#S$T-zl`bI|I@uH`SMUfPOD=k&KP9!@X%~64yQ(}=a3(#1g=+qO(U{3ryftW+D*R +sG{w^ZLeLbQZp%iRXWx}L&$$)~zX)I~)wW&yu1$ET-tp%H`)C@3oqpm0q?eWrg+T955-4O%DR@ra}Aw +%3||*MP*Q1XcSOj^6sCi&&&`=6oe|Zlmic<*(HD#-M<&y&`WGSnGus9k#EvHPiL7@nK8sl5zmlEz44; +gBoouJYpRplEN#iF?-$|bp)w4-I(7Cg)Ez!Zv~(olaWBDIegnZfnJ)7AMcVP#~DW_6hRJ0k13*ANd;j +y9Ydj(4P;Npo0Xv0@=l-^!4)y(eC!^LBghtSwZq%h9@_P3D2(Hw9a*RjM!N)Vt}Su8RgeDv*Mt#pSfQl7S)E`Fc +ho-rWL$rHek>DEX-8Cu+@!vyCGfV_p;E;W}ZIubMc~RIAsd`aawW8*XsXon`TDjm+IlJur|0iqA) +xT5Lf4E$apxZPefJR1bLCOM4FS?@tOM)UVa21m!=|gMOE;o^A@h +R(sOqAMY`)5PIBKbn*J7GNl6W0Yl~{^L4ZYJ)3yGl=u@uq^T-bC*Sqal=3Xu_eOF}z@gyUx#){?0JV9 +Y@!yKFZfZI-;-wJ#_2KjC;_*}9{YaIb?TLrI%V!VGXTQ)ja~8ji9sCDSO9KQH0000807gYaREY0Uxey +ru0N6(W02=@R0B~t=FJEbHbY*gGVQepTbZKmJFKuaaV=i!ctvqXU+eVV#^(!Xu)d_GQ=wUnAa6_*XuY +9K}$9CCDd^xQO3j#wD5eUE-KonP{|9<_L84N&DN$xI{67lHi>FMeBH2g$dE~S`PMNzHuav{=cwUT8k) +UxV|Ow6Qc5giv`eXZYw*Yu2g@nL%EiTd{k)Y;TUCWJujhFIkLI|@P_z>M{41~HqAC|swLGTX)Y8IVHc2XHNqTb$Pwj +i;y9V$N1pN0yxe4jw$Gl9M&Bc4Zdz}X$@gNfX2p95C^9UPtk*EVHVKT3IG(-fqlN8re3R5SU)oaWV%|;!G9^JXt4s8_)AQne|xAp +ct?<3aE=?X9f^B*#N9SkbY%%!9Cu{~Oz7Vq9K +f9cOuCo+RqVTmpEGGGXrLRkKRkSmpn+ICBLAgCejbxp+zhE&y~eUjw_klFHm7_v)rvnEN!T(EwzzYO| +`d6U$P;Qx`j1kvQqvWsJOwLF?e%^})dbs30kisnB*-z^Wzw2k7JOxO90T4=zEu5aBzN?UX=3+AE +VS>;mfNZ6D7}$kX(mia32o!@A}{u-unR>*v?RxKi3EEWD6ohuPg`{xlmskRl;X5-Qe~b7njL7i5!TE5 +j8&$M=#M*PKY)5roLGqvtWiwMacf>H?Xq4xq(;62Ve&n9Arl*yeRVcZ}13~WTx=fcisXk5gxR&Yf9mv +?%h8K5@-1J>rK0?O1KQXh{cCZ68`5XXJ{WfsQZU|l*|tpB+!iMMb043VJm=!!TrSDnJ9{`iGRCxiy7* +9o-vSsrWJ{3Y5S@<0x4K}-ADya4()CtKJbe5jH0bXRT41h=mJ~`qH33*mJxGq0*)d9-5(SAr>5yyRW; +%rP6+d=TBiAY18gy15qW3Enr{1h{bZ +1&Zwg+})x=g^sWx~%R84>wGG+=#B1dKN_5Z{YulU{O$Z^hSB;Xe~cJ4XiMsqjximUUU|!~gOz{L}H1t +I4zLfi|FX^F7BZfQpUh(4yO0I3G2PA|H}Vl~z@YsLBbe_edKj10fPQ}%SjAOlah +^`gm&iT9t#)rmw2*$;UlKIhBHr(7;ROJio_?7i6`GYKl`TNc;Kj +vC>j%AO*t%!m`ISfY{xr;v?qcXiBr2~4}8VQ-VN4@?;U$J19MH54#Kl2X%@FvC)a^XBf&%L>3cC4m>e +uoRBzA_9;IF|B8B&K?%g9Yc_-7ZMW6Q|j>vO+7Ft61wsS1b<}%;^p@n#G*0qv0AtZ;SFE7Bm-_f;02Z +gf^LXYM>fN=REMn^(|Xl+2Ni@8t|qT>uA@kVqtT7zf$kpk#T6I&5~6^~{?m~8|wJLw9rf$|Ol0DvnrA +cg2vlY>`H3Son%gI5%r`Hdu~>1ESN4%DXOXw82XaKJY0qc;B}dJzP)#T>8rAgZJQV1*Z8(`C$pHW4!j +mSKA-3m9n!hvrd_VKjI;xC_xJ-+e*sFQY20pCRZqoxPSB$t~L`|5d;3PosK|wKlVt +WLa@v6$C_;*UFqEGR~=Z_bc=erD*Yoqe^5UkdhF2BY2wk0l0Drn?Ubt%&Aa`%vc0;?6gDvwrz3EqZ{3ie2BG`uu1=s-=gTi +)Ovsb?sbw3MIsjPwiLWJa2k|JV(L`@jkgq3r0dME5z=Fo!|vO?$8nDJ#c&KL*!-EX4^z`g;a5w`pJ)SiijZrximti83q|4NmZ<;g#1k<3#mEBwHYwZrdUA9%8-2|TrB=z;$Q`ku +I3HIqp)4R_u=A0OrgQ2_=ne*7w_Mp1NOiyVEXAhD*|D0u;_VrIa-EtR|ab^bX$^*osZL{OmE_{0;64b +?O=V|mir@lLbS8wFLO*g1Pw%cn_%HfW|0%Q?pp4<_wmKM4?kbJK?b{6n_c>Yh0VQpW|lR^YIhLZw-_@ +2n~M%yd>i~#eCeb@6ccf;*YeOuCqcif|BIc3b^V}jNWAr6K?Mus_^m`|g*xnrzcCW95vm64ko#-ausE +Og4A`>|t{r3)Ai=*6VJ;)AA=Z8n;l?!nApEo7=#=)!RNcS|hr20|;oHvi17pWqa@r^077YQHm@9j8`h& +|MG;_K?*@5R|UvT6s)}MQM3A5yx-Xsou?%@Yi*E3?^6gmCbrbTU?7gf>@WfKUdm*S;3JvliMPw8iiF7 +JL4oz5S`Pd{4a=3&PKAD!q6rx4Mj-H-G^-1G?1I=M)LoyZ;`?q(lx!7i@$G!XDM8G+#>q{kfuj?#w|# +Purn0uv{<`i4gey7EbvScB_}a38fN7X`dSRpW`tvSO(M<-C8HRzz>@xWWO>8Ik|Ap_CHR$%4dt3V{?OqhbXj^Nd +T;Bt*q;oob1Ykf#iSsL@_?H(^=`2&EpQ_k8<2V3doXfwfzDp*WI9%j3k+m}Mq89&(6!0~zLT@H}d(Re +`n?LY%IS>doJH2QTJh7>-ggtp>D&`NR1K@#6GbVZi#bq*zN)R24ZHHmIVIizMCfG<-M*NfJi=vyI3zt +iR4TNSUD{!qghF$ir5U4*KMVbZj7e#P{|+8}mbwQXJb)Kw4a2Vl*@9~>}n;^+-0_kwMV=m7r&Lc^m+Q4NU +I6&zpPq64WZ#QFO-(J=T$+WQ3&p+F4|kC1d9X&eNsxMKu14E1IJePf?&h% +^G*Iv5#N2e1UBs^V70YO^YGV3Vz}A!%FT82$D^5a}+2I(bWl;;PKkqzJL>EsyM!8AKp6n51i^J%%_KA +RLtqAYKMj4!Y7fWe^V5hop|H0R{muqv-1lJABv(eo&ThMQN*$!4NuJ)Q6)Z`{o?!p(nGfdrRVAiWz!r +C}vnrNbuEsE}}NUT0vzPgXL=~P2gFB=|zYJ6I<>etclDZ-^{p{;vq^mUSebje0B7Ea?RPkeT&b{>&em +cfw8y5SlyzNT)!$ZElZ_b@5!0X;?0dUgL7L49=OS +hsw*=(@2LN`|*=8;$0Fjnw2u5K8LE?pL5p}f#fgA?9rz!O6z%4&xJry}Z%+RkMAqF6K6VuN(sHbWIbP +G*SLchDaYo#po%5l=z$51@xn(6mrZ(>cQ4&4-r7Q_R14g%@VJiiO^?OGmU*_yi(FkVPR-<%LxZ_Qvj; +dVhnES}IDoD@M6pupjxQ}c-2$YUh0la8w!jadr7zSblx&aZ +0ljvy$JzN8Q{0Ckg@65KTc<}azF$gjiGHT*$ +d_a#51sjc4L`frtp<4=D`GUVrSMwA3BW}fl%&}Es3yCulhE&NMEkF35x{6w!~GS?$40Hh7Nn%f@kCJ8MUrZL13?ygGoLyHK4l$CY~P!ye}Dxo*?7Or +XUD3mv9swohTI`<=?vC11isdN4lr9aR8GxJq!t8dAzM7rL5&K9LqTA|@SShNp?XBFXgm0IMm;da9ArH +{?Ho^j+|#A~bhxu=OEB6JKK34V>FwL@*F2O@m`H5U7^1adTsr$THgJ2U#OTt%hj1nIa4CzTI<#JgWE; +!`=*RgNu#CReLf{Rhpy=&+%se7GLS(A?vvlY6A`!5eU?YYJ|5)a>FP%`g +QyzIF+Ch)Eu9`xJA)GCb24KYx5{n8x_FV<3Kz?_oQgAwRlQf93FS2Z>FL$zsmr?ya6TQdU? +yS48L|x7Ba$qG1W$3Z19DcENGwD9-Xc8{^N?@0xybBz03UBa3@@oMdj|{0>Dxf|u6G8;6lxA6?J-uu_ +F;1M$X4p!OC&G@P`8sjf*ZQ<;bM@bGI)e^urJXMkR~@*b(&@OEZ%8O9WM6+Vx*&Q+}^%zL?B9mu_sny +F$fL0pE_$ +SGl@Nt3dvbjf?w{g`EFsHvJB(COcS_ERwt&G0efmRnq-TqaAg5WyhjqfmE$w@w +if*Xv5kqpN6%d5q#)mKlo}(3(GHE)k+fJzJq1W-LLJ)p%B)c!|V01Z+f5@NRI76lUb6s`xJJ|vVY{Do +MUoq;-I!2s!dY1t;L88tM?TC^C)!(0pM!Kj*}9*nj_&Mbral?SNbhxPM%(b((e)N;Ju3>Ng-uWZ3W@q +9vr)e+YXr#qm1|W8P?sNSNYq!-NIgi1$WH1MvvZ98EH{Kpm8w)^IJ>=AN05*2enc5FH7(c_ +Vu`o&lWi!1LKgdgovZG1^6-vw+|LvM!9X#R=B|^&GZ^ka3tP=%i=N1%u&q=uB%4J$Bo08&5EfxYZx0j +FJ0@C34m23AI5$&P3!JDT(!=$W-tMj>N(N`YSwKrMG;-Lzj@N;1^zWJ#Uf)ZiUX@chldMb_IIUL12WV +LfwS#2%I-0#mYSPm;ceg$jtD#$=BrodNW(xKBb1y*gHf<9_?g~+0`kpQr~L{U*?&Nxj3n7Uq(L05~f +l1k9j~ZT2l@J0~hm_zHDP1N!7Np1$(9^6|s|>3p0J)KscH5=b?mcRb}}+=Wmu{_@Q-f9B9aPa83#PG9@L0MvEL%dS>QClC@4>ph7fc}h}t{?sQ4K1@}pNaXky6>Oe`KUmyL`oq-;w)Rbf(?SA$?yHbsa@a5%jmhjp3RQQp&>gD#~of-nxZefJQGu0!Sl) +Z|Mzv{eWNXX(U4{H8?KR|8@h91#3}OUy_M<^Zdko?n8|m7X&qG-q?1pZnJ@@Y3J0>=;yk()@irJQ={P +_u_Gnag1d9ch!Q-MPKh6_3@OC!s}tD4(*Qzsbp}_@=;}FKy$HfB6K?3l<~z8wbPu-8ZEQ6Fq3A(vJ-^ +NSFJ|fn@6aWAK2mnS!LsUDo46t_r005~30012T003}la4%nJZggdGZeeUMb#!TLb1!XgWMyn~ +E^v9RlTA*;Fc5|JKE=qZRth~pC6Is>LR2hZ6-AbtOcD#n6KsRX?XjKyBx#rR!VAyL_uiAnobykwwDJl +a)MTN;S{Y>;=%_;N80VZZ)%9dOP>)u6vaGh$fgk$Vcc?v@A%kbBwcKmW;A7~KF;;5n9K7Q2Bpp`I)b- +NhoBC5`%OIRUf4B6js-Rw`s&ZtYl)c;^UHMjeP!9GH0ii143y0(@B7|_7yb}WMA?ISGpolFQaB<8dk` +-QzL*X?HhJqJjsPM;=fbId1=a%g=_1(KF>`O?8v`#y~YlW$BHcjj4;ZaA9L>VP|P>XD)DgeN| +15+cprr>sJh%!^((Fv<-Twfi1cSS|C8N36ec^v5{zLBy(3HRg&_q^XvOaeOPhQ_#oT-cr)|n&68?7V? +9;9F1#^~OVqH?n7UTFp8i@+Dr;Kurw*$$uHN$V-KpaZz3;p-S~eTH>$?UEg>*g{u5_vs*^zZ=tmtI%B +$p&rV(T_^#1kk#xFszA+bhd0YwsqAkLR@{xiz+xjrzjnpD*4@x}I`OR~K8W4LNVuNfIh$i<4u? +qGtbhTuZY|%a*eYr;?H@Dh^ycWn&U9>rVb)bea%87mK@@l6ypXn2XDluFP&=>0W8SAtA&=vZn3tvb_6U$ilyEhN{ddkJJ?=5J`?`+Tc4{LPND~CE{6)pYq74^>tvDM1(wqPpC^XqkJ(p5WBaU-Pzb`jIE>--uRs5?j$?&^%NA`7Rb>nB1&&nSt1jqi=z*qDE)d!6)Lemh|gRoeY*#5170yz$K_f;Nl2h&FkF%>%P{eg&5 +(xuw&KEaR2Q~KIE<`nL3@~Q?4f{etltc?=U{bX{c)COasxUBA^7V6^)16rEH(1+yS{J +3otXbGOz<fPR@A;4jG=_Zsv^=JUvGKdJ=GAsGrcX?<+(u +hKBxf7@Zq)!MlmoxcL&9?3RZ{vg+w`k41C4cRGyOw8yVMi)+qfnu72%XV~fK3IlbUJc&BjvK3&~^zS; +gGw_kqR{wB5$ukor}Wq3q#*CJM%!WRAmP)h>@6aWAK2mnS!LsUo$Hj1DI000yg001Wd003}la4%nJZg +gdGZeeUMb#!TLb1!pcbailaZ*OdKUt)D>Y-BEQdCgaCkK05L{+?ekxI&kd*n+R2hlHvFDgjsZuHr+fd +>eb5Ea&W+-F0#S@!y&8t{vOw-W@GMoT|pjyzI{N%$wz|(#C;3+L`o^4)5H-h-y|Cy#sfwq}o7`{V1(l +!e!;8R-#KfPeA45ZqQcNYg@=n5G~tY=z2 +8%waDDxPyj2KQn*9bNcZ)d~TL}1S(sbU|9*bwV)Nb`$ei;A1nxxW!f0bTzTx=%_W7o)peP}8XW5c9!Fh*Dl4Fj_&1XP=Q4}?wc!$|M)4Pgdn4g`UH9tOs>n +%k?|6WwGicf*ZnJ7y%-#{FL0RJV#A}gpZT8`1wszcHH3tnS*7z +Y!|dAD2rHQE&_`%MI~2IdNS(S=xlK#G8g%ZEih{3J-MYN@TZU(;VgqWnprg^lwSW?PX5!P?#kO189sk +utRIb2H~(p)sKLnVk)E}Zv;v{@I`tSZYWO^VK)1BU%qc{1 +MtIjC>w^H3Uer;xC<@i=Nadwklbg+&1z;m!&?i^Mf#oK3APzfSpjXKezRf|Yei|^QtN#MCbeC1X>$tPqLP15p|aGOqrYoUwO5!vr8A`9Up +2yuhBje6e<#z*$hH*Pzv$x4o69#Vcqvp9AeTl>Ro=&6QpcF!UF?M{n>3XQqM=vDdtFPaT~vE%wAxV-C +ed=B#n7H}hFC`#VNSwD_ry}XlWzXi!b8zDo^xt0vsNXf82#AFy|yd}(u7+Md$G>WTlwOI3jd(Q4*S-v +tSO$Bj6_$cP97NGVl{}U0V%DHX{K}bS0n~SKKJopX>sz@=!K}Aj@v}a`&ftGbAoq#MATG&pPgQQeCano6hCj}1kn3b|RqnvNlb?*u{bHEOl4ivkVisjgjByRp&&;% +}O{*?3tSiQ8p2mg$*>U~roBt +;gVeo9EJx`yhfK8d!~idR4%+sfl}SDSGCo~H>wJ7*#ft@oq^mN3e;VHWtTZt;VX +U{3~!b8-+j?|dKN*2K4a-xl}%!@D|ZEWaSrD6XUTv(Zl(Q$trUs!{qt>8yF&r!+IM{L~8aDowY3P=gi&CsmUHDXk*G{Zzfsrg(XMv4V>|v077upjm +jpvz!Jmu}sucscDF>+Kr$n1);Ge9>W?y$_9fgX?015s!akfYg!VOV|TP1uBo@)T6leQTg{sTEue-^ql +rTkbd8xHR7o-TF<46E&65V2!%$QOt)NtGyqf94ZxQX_FXh?@a|B8(OG{CguFrbsB>g0Pq`TeYXE~zfe +E4;FKfBMltQu#FQ9}39fje=W)BhvBhBYvt`-wTnJE8jYY@5oM{{e(ebPaehW$cp+F~>cYy83sDFs#xK +>P*czFR2U`@^00=@AZtfdWVw&a^>A|QMAq`8M371n#FHEFajQd{^+oyeJq*X&kvK@sSS}hAAVg1l1D5 +Dx;)R+cyp{QaXru)vCyrO0pH0U?q%fGKXg-rfo~UP-czQn!-+AKDY;;q_uZ*Oh9=Ef>?880pSKY`p1! +!*q*4|73HjTpHqCz`m!>oGqso0$3Ng^_m54JlIW&sbv6$Xl#0K+Tg)mT$H!9ZRlj);tah{CFZ9lC=vR2m{|Ap4b7w-~r(liLeCNO+^AFb~v +)h?)0Jw4d*y`JUBI*X@_qkcpB8&FFF1QY-O00;m^MMG4lKy0bW3jhG#BLDy)0001RX>c!JX>N37a&BR +4FLiWjY;!Mjbz*RGZ)0V1b1rasty=$Y6$fQ +e3_60@%_r3Q>N~EMquH6jeY)Oyr`)q4dO^ +T}-Dd8cI(|}x +%8()C8(fJiSaZp{=Mwd+?O8Cic9_yV}?63LXb4Tk}++Dx9zF@avuaAQL*ysBrJMDyGrO^~SQ2jufi-GI_1{d#=h?=H9Xe<;0R=zO=QON0zNtlgXqMTejy9VqLgZ)6Y1pyI`X$<}Bj9nz8eL#y +6Z_vMh6XY6PzZ<1q!(o1a8c=Lw+~ymoR^<(DgGEqDMPqicC9$hq|OP81JBP=TR9VQaxlrndw5lH2gVHDPeq+$5;97BBAaA(JTT%#_v?zlEzbWW4C$Y0mqrOFu-!&8$(#~2UQCX2LdBLvhoiHb9 +p=8KZP`Wk@?CRW~e_RTbdn<*gjHnx<5+WaM@YSBz>-fnujyWX^$X<;^8*ZmjeoM@P7}UJk3sqZ+NGa{ +1;*V*#U*MX^sBXh2CP*mN2!E8WHgA~ta2kijUhc#|BL&t!eswss9rb?@GZV +M?{vEv49G&y6_JK%)NJQvD6P@>erqS8Xy#t0`*DP42dGQlKpzA;c$R2@|XCRkzfS)2tK%krPJRMR$rX +e8x7H@X&6bQdPhY%IMyXU!;Wla)zQ_llJ6&wS1qaTL7zeL2@YOEd4*nHC2C+c4gch8cdELjaN_O7qaW +W(kXPD+;*$B=gb2o~5CUVuG%_dE=a2?8|42bW_>x^l5GDQaAMl+h|=u_j}7hqI+DNfK8a=!~~vyr?v%2B5KoNw-RcyOly6rO_%{;xU +LDB7k3d%Nk`xJ+iEogjS|YJdB8l`*tFt7u>)LB{TZ;#mV}b@kobYwTE{F{N~uMrSw(N?{E4k*Hg;v_?!V5%jghHt#%2J~HP~_)%q5(w)P!7OMwig`w*K!pU +>ZLj4~YEgHXFTeglNHfqzNI%Y2p(?7excmn^0q#G&qD>M&QQ1Q~<_GFS+ +IH*2BDtR)UNJh=Eyn@Q60;n_$>j?%)CpZwG5esai+}Y?6o%*Qbx$g)i8*8h{?)ghEim2PjV|9~IZar8 +;;OQkCYq%Qk7x&l5m?&VIo82`!|k$%VyER^?gig(<{;Bb6wl8uWp10K@ZPh$QYIB|(`s!%rAvUgohZS +KqP~06YTc+7&IUU{+Qb6iHEl(JtgsL~O3MfimoQJVL;tDA`ox_c{9a{QM})Mn?gMoeEI4IveqGBLFX# +vpE{CP-FBWfE3?pnbqVL@UJ0kWMQXNF)Ij(bjEk-BVA04zBgEJvC_R16(1yYg_DHT2F3!>6(PCM0{b3 +nrGcj|Z*Q+}y{B+$*O>4G04sF)BijhvNjW$PKB=7<5NWHcPVZ-36`VSQR(gkFI{`Xv(I(KgtWu35VXQ +vMLZtgZa7LW1G=*FQ2+nM9dq^7qbaqKia|4XYR}^~B#|SEe65%mUkUW%DJZPeQ&K-&vj+mf0IF{xR`8 +AIlQ3PwC5(j(gT&k_^3Kx3f+QnuO{Fx(ThZd5(&$Bu;SXf~@AEE%&tvw=+w{a3(1RmQ6-=;$-ko^|=I +h*naPRWdlL)K$6a}oYc=K5qAx7h1C@iBtVj-$D6UQqN1h!ba-L#`od@)i?<_0MT@FY3$f7CIQTiEmH| +*!=us5h)c^xyBiUt&(){6%H;qi8DXlyu|TXcrMrip#*mPD7r@B6b9bms0TES7{(@03k||8QDNhsOoq; +%X19$}s8HBozO(>hW9;SjA220ApoZPH8y9(@50BGXIN^A`A>o3QiIR2Yr +|#*_^C!OKbDk5uq(f+&l>B?f+kE1!VD1+mVr9Mn{i^NPrGe4VNSZj?WXUNF|6uE +ptFoyiwTC7<&NNEkEBYn*WJpC3VPnO(*)+2^5_b%-FyU~B53xF&0-}XI_mP)`3r|%>V3fMg0@s(R-|l +>lO3N$DnusJs)0v0u;^jH9p@5!>)a+S)_#u7DCB3tE +)t2bgVF-v8GQr013(sGj#LXoAfc-(>=(&F8dk5%D22ZvYL%?&ssS0F`KiP7ltCH>cJqY2eZG&g;&Y +#OatuEMdQ#E4s(!#~a{3rj?yVdE~3mL?2vyZI8q+k4!x%af$1x?UjhqV810|BFvU88U&G6(4JwN{-g=f#1 +>Cg0ga~yiz6CKKV@p}$A>iWetyHZD9$&wxM=0z%J@k?^~2lH!|ykYV?ME|y@!REKd6TWjVkp2H>Smt@|_E6o6o*Sc&vZQTh7dFS;9YbSZvC(mr=bpQa!M6f1UFq!)&3!sR!Ha`9{O!+QoLP +25Kfc!b0rkK)ad*4M&fObGCny}Ha>ZWVTsgT=uf34`9h#@qgb4!JE;M@fZ#reFc^f?8~PMX5nRw*2Qq2IIwt;Tn&l6+6({Pue3O)T +~H?f1yD-^1QY-O00;m^MMG4NMVb@a2><}@9RL6y0001RX>c!JX>N37a&BR4FLiWjY;!MkWo>X@WNC6P +aCya9>yz8I5&y2g0+A;ZYD%$n+w^f$Wpec?@l9=?YhU8dTs$0z1SRAsf(5|4Q$6~AHRL!>Y9s^VqLt`D{Np2Mf_D)=&U9BNr7sRYg%Xp ++Xt(jt*|fXTa>01--|R|%x38|Q25iLd3rsM*+w;0zM5Zyx))N53 +`9H3fpqqS{Y_T6VX7coD9!bO<(@>GIMwa#+%b4i?F3Drr%+1^cOt^IFWSH1_4UV#=s{`HYlb5VGGju}M@w*0Df>kaOIe@4nVw8%n*TRjOg!p*#HCFHgOn8c3I^z<5n;LoZW#j_)uXAk)2>$c_%93%$#tbUdx9!RxO{>TsS_v&|qpK- +hFe61MXH44%F{uMwx}ZD>secos$1IP+^EBHQs;{-WlR03OGn1(r?BxU5vu1&{%XJyAz|X8PKxh?UJF| +cl7vvrjbSaK|C_=JE609 +&=|(PBEwwC;K?${K9!NXR4Vz5?e#6lSI1@Y>Yi%5e=lBrc$?chdOneP40}fCm^0X%OQCd9$l4fI+Q=5 +f!)_Ad5+WJ0qSv>D*c^H;omhGaU6C{nYzHWsV_$3A0M31>h;4V%v*LgwlY`JC8kN(dF9_`VgZP6Hth- +73wpHXk}yyZ;6G|=p`JY@}4?m@}~B93eN={W=NPRJ!W3wiSt-n)uhX^K5y}0O9tMD2Z1QkVsO4+087@jBWvS9a6A%zZgkRz<>QfAV228V`K7**c2Zd +7Ew34WEjPez~pCa>vWS-^)Wxvnq@?j_iT>h@m)@)S18R +_@V0%+w;2#i2E-tf>5oTw1;09OWZgq`qiHz#ialgywlZsCfA3CdkJkctVse73Ri%Y))9!TSN7W2P&&MB3zG)=;+_tB +q;Y(LWT~lDoQ9Dk#VT5%qYl1=3w9i!(jRnm`$Lo4Xu|YqxCqM!@iW&t;aWbt>4lf65l{sfg?Ro;GBWy(D2=7 +lWAF71JkL(GzhJhs$i@t<-bS*r_ToRqz0L^!3th0;A$l=$I=*5s>^#mWBE&*B&Z&RYn)_%o8x-~JzF6 +kR>i!Q_3{IH~k}Z>EOk2r +20Vmv%{*_jaA11ttxFb>4Au_o#g&teEiY1Exw<`mpLbAla#8E +=>#X{BMn+TvU?P=@NSU+6JMp!Q>}w*=LAh^qm=^TMJMP_Yo9KC~A&7*JY;kM2T{%gPn)qA7pZrk%if8xc8(<*Z`oKPO(ndZ>vp;oyp3P=wXT>*n@u)#`lK>boyg@T`D?(gBAxSKe +L&>a2w#qtZ1O;%9VWX|@&@|;^Y*u7YvUtGTWHhuQ|{LNeJ%a@;$)#tx?`rF_A{>wl7@lSs~b%hnT0Q5 +IbVJK)vhj3+uiQ&|RR}11*%P!HtPS(-<*FXF)?~>4{;dke)+@H|?P#o@Qe(S{EiV81E1ho++%1X%B_} +W#h_9g|#ouf-8x0fzX1YLFv?v9CN(v?w!7B9D;jNR>Vnl5?fXT;!+9`c~l;R-ToIgslHx6aJD4Kuzga +Xl6>lq5$4$*|?&Hq<=3g#d6evIz0AfkMY#AHY5pK?3Rp+6YYwPD9;#NrHASrmw`1nMCUF#$W;|5+rN+Hb(+baaY(r`}+DKzTIaf)6+@8Ne0BXSQTd2ZW39yi|#May_E^)13V +Z6iI$mvWi-<7Vr@%Zsghf(RM5}fx~Ajhnx`+KJIQQ(DvsgH%IRIEp|EJSB!Z4*9Z=8vMhbaq8tT>a$V +s#Fo4C8!O_|yd;D)r|I3;Emo@p%YEQLN)@6fUqh(;icVktXpcVs142 +1QY-O00;m^MMG3Psdb$U3IG7gA^-p&0001RX>c!JX>N37a&BR4FLiWjY;!MlZg62^YiVw0E^vA6T5WU +Owh{h*zXGMk30a*f%kJ16wQ|O7H!8m!1wk;I$xW%WWw~0dWU;DWm8pN3bpxu{=nWl +66~tv1YVOW?-*)TtGkFLE(w-%DfX>~(3SDtPW_{lc2~gDg*rrJA|PQkHQd3t#~BvA9VEtu+nn0z}H;W +H5N5wbE0|@B}8tO+YTutPN)jp1*x~oSeKrKY4X_`uf$`oW{;yyd90b|1cW*aQdb<7VX}ABTZWGD+*I- +kz`WOW~g_e*>P=vcqQ!jG!`aF!8amFqSi~0hv{ej@Knbq4P64h_LxP8pn9xK# +8`HaRV8Sfttv@&ywXQ#x4^z7I=@#9P^s#O>u_l?RbG^T+~EaO*P=4kpL>Ik#PUKjb6EtO_(wsx%w_9T +9?-<31J-SGPf+B3^NaIk +{ILdBfMNVxp5Mgcq5Q7JP`VH%APYvdD-X`)hXqc}5IOO{-AX +ekJjXjvBW9bhMPth0Nyc&`Bh6l&Q1voeP1kv(ktW@kgYdgCQ@xCfD4I^k|Nn)I~}pl`fRZ8!vcE+zhk +25~wstMdTH<8qF{0)j%LK&)sPaLz|d{G8XZii7TNY6ewvLJfbRKS+xLBL~51Z;utUL>>bt4ld8=|6-l +YZQr>`RU%@(>z~G{tyt+)Q0!KUtRTv9PrhO=C$l+LMHMgqe(oyD14k~UY$Wnc|;7BM~fALUs_oL6oPy +XS!PyHDw{J=RF#amaJS-vnTudK5;Q%lbUPwX}%s%EPmJ +6PL_<1zsGFpT5hR=}ts_uR*{ZX$BIvQcSG<&@`!!;igv=N-Nmy);vEIqnNuXC7e_abq=40aPSdTNA4i +nBi4!6G*NiDf7wzjYuntAv8!$twYrM_<>&vMo<8@Hkeeob$X>ha-0Ntc4dS>2xt{d-si{>2`t!^6XIQ6sBmig}N=Uf1nmvEc4xjo83I0Wdm|nG5RXNvAH#oqHZKDo27Jv&wpa@jsmk$;6P1 +mw0OW1HnOc$Rer)O_ZzN68IhH3sQe_Vgss=)K27$N?HNz4aNu2RBa{&fk6%nEqJt>Ca2iaV_S4tY|P( +D6bH8)x-T^&X!hETI%gkg{Y!JF!poo}XgIUgWt;d$7bnmK5w-OB8`ExB=7)^k!?oP|Ulip+mZ=O*y!y +NMJzheBuLTUWqJ%H0|((U4v)#tg;cCh0reOyXJB6*x?+aW#)`bGsm(>=82q(2ek(WjF*s>5w0)6L)bz +fI7eRoSTShQ3MU8#gm?0J&o$CDFIJ$A%3xioeY|rxh!7VSRI}RHh89N=4M81tuM0cteiikjfYBsk+x=J +(hbTjNvQPMmU@JDA)+m3H8i#At9Bb6J&UAw_@)bRwbbX^sfh+H6rq3SVY>TLYA0o(ZV11>RE}xXgG!H}z|g9RS-(n1jbppFNpmf{t2O+{ +B3zxUa6w=hunq2Pf7lv-s~iq%4z9UMYaic~ITi +sc@PCiLLjO)iT|GYv-W%39qgICa-ejjuj1^zNe?-so=eisv#r8t1U?GtOtjrxX3Vi9n6hlhX%9uqlg5 +418<~B=2-80;cE`-X{nuIbp|}deevh5L*hPIeTHPmJ2B8^d9}+7rrQ8AUAQxb+j(0Rkc-mo$RPyxF^+?U7VB09sQ2)M?hJ2@+xLQ$vqoxl({=>?AHf +XDA#vPmj4S7yC^7UMU-rHF1?u7U20W}~_paW?7S{!gEpznYEjk=5KTQ3hV4(4W;v|MNH7AAH7!fqvgHR>i2f?m(xBeqxWkJbnMe$q|H5 +k>%o>@x+F&WXcRc4{jlCnU=(7@)Vj(%>L8Oi1XzpgNM*}7P;aXMnC?)1`nVM^?H8j9QT2V{xU$HLE3g +Usja^uG6xku+sJgor9av=@Koco3#%^2tyW(qypH<0-t!k|e*ObcO9KQH0000807gYaRDPk37dZm}0N( +}x02=@R0B~t=FJEbHbY*gGVQepTbZKmJFLiQkb1raseO2FY+%^n;_g}%OFE(=Vwb>pz11T_EHy}Wf09 +~_S=z@ddqibzC(Us&J4#WQUk+OV0x?q0DNtF2UBl%G=+kt!p3Wb?gA$sG!%)8NBYo6*s`+(orJboQ9# +G>=Gg}5Ks3-XP-AsTYp7Smzf(ss~sK7F{keSi1xYf%&%?BEN=H6yM=+v65XUN*v^g3EUYoX>1{YzpAd +bf6jqju_4fmB}oh$2fWix8$%m+4G$`4A#Vw9T)JX`uzH_wzNZER+$5n>(`NlM=9$g1OA-?D5cWxirh1 +D5;{3SBwlsKVgvUdKhyx9dYn#n##(qn*y;^}ehOsA$P2fDUO!I+zm61fGhOEj$55YzO7?4RO)ab1k(V +m=jDqCuox|ke^rA*P!@U+nz#HM=idBpW2rEMuvh(ef(twZ(qOtaRGs;an^v_A?`tsu_tfh +zCL))z>q71mSg9UImN%}V24RdT-f{DRnBMdI3SBmETPvPg}0V5dMU&o{3*D|mK-nO$xLYz5Ps8k#Gkz +opR(ZQ~s&$-07PDIVgm2ka=f?lY`is0E5-BV;MJdThswA*Ewtc8;$bzYSw9)*3>G0nfcutOqcQ7452t3w_PZuYUp^GiAJ#rs5tjC{*GZgqWjg$H1oW +O#QC-=7_cncu&p+ockO52qZ2X`)yE*Xzxrytvc9hgyf$n6c!JX>N37a&BR4FLiWjY;!MmX>xRRVQgh?b}n#vjaO}N+eQrju3y2aA0iL7+6@~T6my3lbBk +hG8#F1lp)1t0MA^5>cf#GtuCeXEkG!*9>?mmi1hHfukL2_4AtN`nHV!JiT1mBvWO&rJ{baEHWTopr?` +>2Xy#cqc=@=YdUrFnx@TPWBD^W!edqo5D)_uA{cjezDS*FAWvuqM&uU=nXz58X6-TZlTyZ9};d3C$Ut +}iZsy?D8}$=)trF8&}72Gd+`YFS|t0sWX*s=R6noKY+eH!}`zR*U?TSfTyPemke%!FV)P`kP3p+@B5L +VnKdjjP{Ilc`(Z;29|=nl^ew&y`AD+>fM2zClDm^h%_8qH2xOiw@>=aDvFgFuTFL7UZkKAPp_DyyVI8 +)9$U={f3|qYprm~m648)G*tmg +vk-{lvB-0@7N`(VQY#+AI0&D=q^8vrmT>FzZ!J~Q2T2h2Q4)fD*qMFEDiGqLa%598+?YX@&`7RG4PJ3csNSX#Cyov +kXpq&E1nbiv1a`0)`+;%JahIFe8B+G>e*ff+3bq4pA)0m8vn))z$~LuXaQCYn$b%}$u00wn~h^Fzya +IxMRbneKX(eBaZ<-i{phrZV){kng{H5#o|jk^*8Y6vm#_r0klQW}6LiBxEJI5e{`9xHv%|bZSBwjn{hA{L3JB7kV1;3Vzbgo&LV>X00fJHG71;NbnN$LWk*+L}Tb#}wjYS4-r|irmR9rf|XO@ryv}Q!? +7Yot`@<&O9&3YH(lLn@mm{iG@EdRY8GXJEg)p`_k6VF&$v1bT3B$bdojq8v7bmC;R|#C +|~`HJQ&L_VkQLHN{6gczzL>Jgx^{KkGTjSm{|fe%vpq`|M(pB^ni$+Sd<8Hc0FJU=7$vmMhEDkvUiLb +eMCM3v_4*Vg{LHgNZz3@Llz2W#Z8DBa}LBMD~!;0LThy29t-Lc+X7QXR);WH}Pp?UfF2}4UqLk^v>FF +Mu%C4(D2@A_x8bx2D8Z!%+`0Pb@EUo?Z(g-xJUoqWru3&U!zdduKxYX6UL{XeVwu#W0Ll}+UYh+@}dx +VsJrgv#$IDnhec9*uzIUgG{|8V@0|XQR000O8MnywZ?h+`dO9lV{#Ss7i8~^|SaA|NaUukZ1Wp +Zv|Y%g_mX>4;ZcW7m0Y%XwlomXvd+cpsX?q9*F7%BmZ+VrD`257f*E7r6{+qJ-gz@R1CW-E~bNyT*y| +M%VTMG|GFO&0`-E%NSo&pr3>lqAXfu5G06#J0b}h#AD<8VH_J-ehi_yc%b6Wk&+ZXU8C;r3 +CZESg4EN+>oq=Go*7mCL#I>T!nj7ut{;3cj3H?|P8iA=dLObJ>S>}$zd2Zy)&M`(u>t3Dwfv)RYXckf +@mdA<1k&DGmyA6`CxbxEF*^gJhzv)OEh*g%?314zZ1nOF8%y0CE<3*1(*6|smcEXt|X{P;87T|6Aq`_jlO@%>w7#^Vq +N1vTg4^%!nCTRNfqw8fM6T@TqTUyGB)tLr7@Gt)gV`-p8UYGc{(Bm%-A>1Zqw*7~2^)^CDA(+0Q=04#WCJ^?fcUq +-xgPxeAt_vqQcNbt@}?}yGKY7$Vda-aDVr9Gxa2iAyVRdAWN-H=TbDk$yvM>*>lBV!cB*7|@(cd=e7d +Xbr4)v80mVHoV2bXy7=*NUQ*>F90N!I(VnMixT8Mz?mKXl%&TQHlhHXNkpREas$ +F5rAjWI!${K1)6hJhWRDg9e!Oy8!KY(F!E&I1=kLZsUIaZi7K8CScp;0)$Q(SD@Hg_LFd(EX@8Fb+Fv +Ek!>t@rQ$-5TjXdALq16`+IWQQL<_tEC`PMAEQ~5*nFrHLrpa2GN1_`jE$ylw^@rV#&<& +m%KehR)yO4-$wtsf=}N&(qoSurTkpJ64lNN)S<=Lq6RhzG3wJwB0LD|7MXiTVq733J!{aFqkKTL~a8Y +cGXwz*cP`qx_DujR|FIkwebfObjX4b^PBn!*8dvh0lI{SxNcEskVo(O5vX%zG<4r2v|GNBCMu#gIQuF_s2*(lm23I8Gb`!ZC%zEac +}0sMtKPbTov*xSW%sD24&_PY%=fgtU1GKb{HE@7YHe<$qDupD<+^}OmHq2*d +A0W_U@T6%#!0MaJwkprl+VKAVD0{hPJ82(i?|aq)4(XBKSvIcaGTi;B=TcqXPq@eUPzkeP`U9PisA$7 +Y7(ox!lZW+ezcB2aFYV5`sIdM!~|{&yK?(8tBP{4Nj6kZ1l!zuVO3cHDV-K!5vz|@Ew}~v#5CpV>Wcs +XPm+qPAJw5-JoboMi}zSdGet2G>2t$*aAS%>G +v6YsEyC^82RPtI)JA+c654L$1|$2p}}mzh4vN{~B96YQdqWa9qA1$1lY2{3pk#{Q)X80b+m1@Bk>S)7qI0EClqE*cCtoB$~WtK~K366?@LUM0 +@Kj8dYu2)kA_Ovl~)#FZ%_O21+?e>E%Ek`z}t2U|YCACRzTfvm}o#?>=ijI_rN>O9KQH0000807gYaR +4=XG#V-K>08|110384T0B~t=FJEbHbY*gGVQepUV{bYEXCaCvo6%}xSA48HGEG~pm5xY5Lu +R|AO`4`R43WwyY`%yj8=i1_r@1*1Zk(fEIQxSjZaFFFw~}9)aEmMGb5#JWH02D6kkyB9?za+-R{T3Rm*wp#yB?X(^O0dydpL4if(>I@p|#JJ3WRP0^QRg3)YqT8JS$x<c!JX>N37a&BR4FLq;dFJfVOVPSGEaCxm(U2oeq6n*!vAT$(_7F%6jg?VUKtk{5{1Bz@fMnKRKWf7% +Fg`}Lg!~Xm3CG}~`OEJtZGA}Rh$Kl~2McruQh}4IJP={4%bWPl;f&WB=se57Fn*824p%s&B^3XPtuYz +YInv@FVxPhs(bwb*-7B=tK{wj)ss|Wr95ei`&$xgIkuDZV3w)@8DoLk$+sM!}zb6wX=71!6bMh+`519 +h5$ZE3+Vx9O1^3;pC;IiqF2FkTV(y>DIhn=19%k3RESJN`+#kGfUGFUDxoPaFd%HjMuaAwPtW!3L?;t +7Nr8c)20l9_RGH-MzQPlqyzpO2KQDO9p-a%)T;a;(5Fz^8wKp!bJP8Ch~?tnBJBSM#CFT2Uo*XUWEyp +SG?vH%%N5MVXWKAxh7g)+U&W}+UmkoUanm*$xA08d1r&}@$=3)=0sj|SLq`3$4dfW(LJ-A8h)hA9Bd4 +KGGd)c$mSajOvmw0Ut~HA6qK%2xFgiZ2hG->sc|{d}9wD$?mOxN$osYUEz?^JGUd*h+ZfDb-CqS +gVw!)n<0t5@aU{Rm6;?sJLwBtWuKM9rsO}mLW8QcS1QUN3!i}bL4sCfPb52tP&d1K#L;xv3G$l?#mpB +pCm=M&RI86yD6I6u}S%CS%K;&w=+;O8jnz-A`tWNKLDTP<@JIB$9m=z@+#;lV^b^7is71gp83-0d?ok#Ws{Z +)YLWwbNqj;=_mwdC6e{9xkxu@yw{KyV6$KG)2<9mS)j>g)8#qoD@v?0L3ZJBl<>M +YsPZ*3-kU!&amn+z8pDIeS^P}DA|7}EWad<9z3#Gh*tnpVIRv0jqI%kO92rPWFX|LEExXyNTR^~23@r +nR>Tj^(NT>*l%{m9^SgUOGmR`RrcFf9)p=(8^9PpJ)&LUE8-pFIW95)LguvN=B9ZR=}ddCgpVbK5wQ|6iX1%S_5tB2jT>Zy&nTPBM=3sGUtxws+>LY=?nJNWz37H3TU~H8tP;x*Grqz +HBFztvXfBL?VF((CEjny8+AXF3Ss+Wb3s|*CVNaW-8e6Vq<^e_e3u3&s^AVWuCxuXq&6{vt0aE3RR3& +dA4Q6VF%QiY4MX(#e}`v6*5bCGGQ0xE)gT$awm5|DAPjZ@G20WBSFoS?fWB-PqOWnr}2cnNmapO!7EQ!}LjzxMQKEotpsdfoJgt)>9+sIgiF#lmXs$A~!EE1}k(3XD^VWg+j*KZ%GU@v +k7bBwaI$g{-u^hXRn&&y)-CS7F{`gJC@Ss~tL#mlTrV_H<}#m_vE%@=#kNu_`Ptj9XhW9errnZ~rlu* +gD~|F0q{!aU205GNewVwcfR-5O>*8I4CHU<5En7HrYj=fFP424yr +hF^H5JnrldUFx}e0p~N=H1)y?DW;?|3Z&k1i;#zOoV1u?tNIpXojE6W9$KYpNp0J9GLh1Rs48N&;P}L +&2szrDyUz)fQ7QHOzXG)4|CIC`~x+yvdLm>3!IBKwr%j}J8E)Xu3*>+lWCNcF-kX24{Vop! +c7m46XFeTPokrs;G2%wlA6)fVpV0@XCMS!e+{rvoO-=e(_mwdWuM?gP*)-{<( +-spb}*}95*YnC`-mnZ9uj*Fol4LU>&d{VAwP9nQuYIknVhyWwRyE19*Nk0z$Vi+w(rqH-{mm68XfTd_ +)cWtDDEq#y^$YsQ$4bOQ5I>=PUxMFEmup(ni23CexB0mXsbTXeAb{(-S +$KO}*`wD*tcHx&F=GTwL^y@p|nARcSCCKuR@6Jz2l}52xf%s>iREUJb4ObgqZTK7(l8@Q+A8eUr$=q} +;$~>h9ek~Wl7KIS|jFDcHa4S%duWVaygBnGjK2Qz?(Co8#o6hprzZ;A$ +;+e&dAV-?N2G{{RDj&Yo0)S5O5`J9ID<&C9xP*4sql%7H +q1lGOwaF;NBQ2L88C!tfJL81~JKcU>^-jFuVwU+BE@tyA>jzwx*tAXlVQPRjt +-Q@wW<@RBD04_X~*JXj05PFaL94goOm#K%cb+GNK~x(`S`!20DV6q*9?1*Cih(tyuMJfP#G)$e8_qYc +{%4r|7Zy8+XnGTbSYAp!GbXgt9v7^404q5^sC1F!vP%vK2mPg5#*2e|1N_DB_i$1Gd1^fKTN7%w!3RV%wY|SfiJyx!?dmgHbhZB-kuuKv1*gIf#hMQo +U478GACpuFYQug-8?|(SUfBWv@bk2T3kU@?H!2<>EiA-VJ^tMBcYaqo9;Rqe`17m6T9BTSgrjiVj +65x$EY>%24;1z)dgb-}Y!HmePRLKDcBy%KnGKcXFxf<2k4Xrl?eG|?UZCz7w1Dd4oU8QZ+r1lH?C&+b +c?<)72uF?2iY}D*cy9mLSOiR&tQRIhiOJF%_>x90TP>TjOvtuA7TmG4TEuJ=~pp#$hXP%UT555R +q3`azJqX27SEQW3O7wB-`Qez`ips`BVOf=a^E%8Fgv7a!u(6VpZKrTZ&Ly<(0Oe+K8xGmdmwFXTO6){84K&Ldr&Sc%W>fs +uc{Phf|1R{d$-N>cUo1=MB&@^;&nIwiZ=#JV@TmY1}dRx-+T!ZBPn$f;tzjL}5|XkkxNSczqBGW~%+z +UfXYE7VNfb%e9)@pku@Lf>2wM9312PBk>H)I${Z6GQ&^@c?GJ0Nt_%6!NL!{ASW~t2W(yg42Z_J+6aJ +c;K>a?0KGkz2_b0R>oC;_iVvoamKxfTLNm7ZuQ{U29wJDaqj`@}0nQ?&QREatW2Aem0~cG&U)Pfej##A +Zp^q>C3VurXuwwAS=#aKR-si?P7HsooIlQla>JoSD4bj1>rQ7z`KL?%dAd6xpB8iN;!TMGpsgMwac@e +$cw`fRWK5Pc{M`BGg~fis9FPCN{Q5=K7nxw#$VF{R?bW*XVP4YBjXOCk;A$d8egGzgv~WkJMr9V6l?({i$I#{{0w +aZ=&M7CQZ--zu_31&b6|Mz<#wi(Na(nG?}dzs6qb>i_?;a+R7VqS!Ev^g>S(DCS_u@x=jOw4$26iGG~ +M2imAakf+IHzkfQpe|EbRyF2FVg9i*$&(FF*P-w)sZQnm2Pl_d_rchnieUC;yAm&1g8C +(pbyAu%X{Kh${7zInEy?eK@2vLQL&jE*0!>3dkk{eS$!!OjCiCWDY|*b!GIaU*J-EH-F3)3z|WlS0&M +*t*xbp>IGlnRVkggM0OqKScIv)Y||EFcT-_+$r1E4H>rt%9A-)>yZ}BIre2+`9EEEpJ8sS4au^w|qpq)&CA9vG+wcyMv!5*0@bVI_q!xAhR+%H?0vy?ptxpa9z$?BBmf_mn+Ie8`pycvC3Pv%}}R +a*a7U?^R!)KbM;Mh1=7unBKMu1JKNLEY4TqHP?SwEo@7gdfi?b3jw54WgpKx4l5Azx +lZLX-6;YA|@5UYNgK-*MPRFQQArVY2j{o-$u9f#Gv1XmP~XOq^`L3&@rLPK@?hIV5jNqPrGH2^XO9@5 +v@F%=yK-iB)sg$+0e@Yi+KA6deh~=8)x7_drGq&=qOG02>{a0+)dq2Q +rjf4kkGt3U$8@vmvGZMEHlTohdVAsIW4EXofSp45-KiTxeiX_?O!9^NnC +7#R^ZnpCbi$<#NfOB0jt|M^3Oyn>r<;>ek0F!3g^pv@aQk#|CUj$2qt}E=Y$a_q&P~Sm=s=_JkDGP^; +bNIuC+~%|eO&ibgQtd+nJX?Kp((&f7$eo4b+L%tKutU>ati|UYij%RfS3&UTifrrk|Hs1OTcZx0?*lr3U!Alk0i%rk@toaq+`eAbOKOZ!fjL#e +)l{lLKYz-$c*I>FRY$IC8}{$BH_QyS1^!{1ie9^|o{Yo!b79RJgh6VT>0<(*1_k}kl?^=qtL4KV8;eP ++QEr)4(IZeNn7o?lMW|bfs^)lO?p@tHh8;8Du$z?tj!;PnlqEi3jY-CVKB7aV>8xCD46ph!qT4BN0r0|DB$o#n)oS=MS{CPhL6(wuPP;*RD=_U6OU?5KCn)d0Y|9lEOA(=@M+ub$4Xz +V}>=_Rb#RngAPR(hO`{=DEJTq!%@eQJfle7oXhw;KK>V4vixZ?lA}Ho-;6qptU?W+TTmJrY#k=k9TIzl-YcSJ!Vu;)A= +{C7dts}Tl+3_aL7S94noT4f8n}7(ibS__6U0-^xzVzEi9QP!{$-nr*jg4-=+_3(|B215cF +;aCNnGohq~c5En}xKTQ@uRf`qxaRel?11;7X9W$LaI|`cxWg&@erL8$sZWJ0f`B>!QwFs%LiztG!)>_ +bqr?m=kRc5b6}hoGZ#DhNsG0x5i8&UqRq~!}C}fzfU`guN4)q%jICW470>@d>E4;h~PUI4NDnVQ(Ts7r>U +<1PTGPYmIosMyK7KAjFr|i{S6C#_U7}{Tzy84&yN56m;ZY5#6>>1&Iv5L0D+?GwwnnceUTp~5MywlmpEhmb%Z(%8gpbg{6dPBN8P#tan*=7!=_9OrV*rg%P|bR#i`foGr-&BSynZpbDsI%FQV?z>}@_ +!Qfss1ez5V8B<;$(pMxG)c2&LVxT|r16F}H{2y9h1q)5sI0#C*c-!CjvK9YjH#Pl&g;I{deY{Cc6V03 +=~DNYU)Q^1Skc*_aT{;AJLDne*B8GCr8l?692BE%o4d_=mV?o*)lZlxITn}9$HsnEB`Y>UQzwWp$Vds +hL)N|Kv8Z}LS%kiSS0?1M2ith!i?!u!M;cH*^Wxxp%3-*)=zao06{|rd)Sw?*>plfgSHCUAMSb%ZcN)1pSQq}?dp2#VcW +&cn|x6tZY7_inij*(OqLiR4LkHNjSFyFezYrZH*YxFeFtm5KHc>;jBbJqp$#N3)IG>0#F9EbZzk(tuT +1fPIj1Fm&~?>8wEl1}LnM8LD4U@$2sHL-X~|2Yhs=hCzR^bklwYaTR@I6Fb+2>+l;F4hw3JU(EP@#y~ +mP)h>@6aWAK2mnS!LsU`M;cfN>004Fr0015U003}la4%nJZggdGZeeUMc4KodZDn#}b#iH8Y%Xwl%~; +*9+cXq^?_XgBO(f784a8GL(clUM5^U2p@p5-%xyfnck=U8-w5t&RJI8iD>^8lcv*chL~fEyQJU!m20ykFIvN;VD*x`>Dn3=p0ed_PPs6k@Kp{U3 +UFk4;QfJ>x3X!ND3|0Hp$)5RW(j^&N~$>#o#D048?K8%#Lv7eLA-$vs6@$iTeBl=nW-*w>u%F3S%4nZ +XxJY>3$Ms!zE0I6hdqHBNpWwEVPEKc4@#pc=vSj;Jus#Vg3l}1dxz9TbK +tDGjv;QU$GaOHYj_E*IHiVM7LrtcTd;J21bxy_8bH8lV)Z7Ddg_{NF$oo#L!cV+FF6lWECOQc~>_w=T +IFw(?=msWI#pwG`m@bx}bB8h5?L_CY~kZg~yKGTN$)X=k?d$)48L>5f6L6gL4snr45V`8N%iN|s)A*b +?*v-7pR4x;k({A_wZX~VaZmE_wsdAf>(Y-_edr?|Rt=e(Ea`MpI>a&z;(<6x5IBn;|E+z8gFV8N(k97@lZD_~_B=#tG5X)tMG_0u+H=n&S`h)!!hzALa^#BAuTipUm3C>c2qNk*9NrBYiHW +1WH{4~iQ|1IhrFuAh?h#cS6um$3_;%h%X3hGy!{Lx%XAzD^vNvPB_HZe>@OL`c&Idg>4^Oqe}V9evGM +xw_#YigF)HmZB*g)G$aF@R{7aPcES|5_N|DLH2UQZGcuU|C6HiOo6+k?drO>;XYL36Py2d)1SHSKGXd +aG}3?_TGFCMzFHP;+?tvo{!X?coy{v8eJ<9UyF^#=;BjXSak-HXiE$rS7E4OCDP?EYKQV;K$!qt9N>L +xzZ&U~8WoghiC`~zP%-b|-HdbTGHMQh5oq(I7L0JqM8&NUD3xgDe)<=-Sp#{aMUNv +47z({7vvq^OwK0oEQeh$o_JHh@URq-Men4q)?mRx;+V0x_v}J)~GbkU{&lWT3$oZ(#i=3i#_k327gNQ +$wzX0%r$Ae8}=|!ZJmHW8E-(%e@p*F0?fd$`ju-{4JG_qAko8wEO-d;~x7R#uX`#z +|eVsq9pb0OHID%k9wRPkIiXt7a;>i{r+e%*^@i0O98y<02I@HWwg!f*MS4+-Q^^jD@QC(EZG@~AA +A3vm3Fl@4JF=-_-BAZLbOnKtsQLhIeCMq$dR~t>Mv&~?q8mc)wQ@su|FSTXDi3>Tq#P9KSI5qO@v)e32BF=tqNGTyz<8n;p%I9zLR=pKTW0|XQR000O8MnywZ#8jZCU=9EP#w`E<9{>OVaA|NaUukZ1WpZv|Y%g|Wb1!psVs>S6b7^ +mGE^v9}T6=HX$PxcvpJGcRFnN&}+3_W|5a*f;5}bkDT^swZEgY3zlPig5lFQpAB@0ErduR4RE+2N%I} +}CHAb_QP%+Act<2SQP^OB2-WPH6&i}fVcU%9lO1e>e`&q=i}VV;=L52>uC(~myj&D3uKD}Oa$d0?c=evwMed&{SRcNpl^f^7#Y#UToxRuxNTFb|tPCC-)|4DtKii${N#Z|lQ^SrOPBSnQMljLQm{~JLJa^l4-WB+X$d_h +Q)WhuJn|IuQ`)2;Ukf!Qf|DdqW5%DRi*n`+Am1gd|ZJ5$S#ulqhdK{)rKdU7q%jD!|N=GXp%&5rAq!% +uvL2R#~E0hP&R_Y3nD8KklAZ;%Xy}y)4W%;D9DwlnK=erp-SW4IbasiEtO2&4FzlV;X_LkefS!_EC+< +Iy_xWkk?rykF_65yT+KPS8bup!&w#%zb_z4(0C2Mg0qB& +xe=m7!GVhd7%&jJ~ARte{n6=+X}#)(6=UMu5sq&5eilli0>MJ`Z#Q?wrtE+T0GaWUM{?9R7r1g&%`EU +gGABD4lq@CrBK{_Z+smGXMAghQ{FgGme}X;Cwjso)?*AsNAwF$UK*(qt?l5WbMoq)$3TGukrW;V0-UV +n8BgGFqYBAQuMS@E4vIzLwhA2!?G|dqH1bl+o^H_h3@eZz%^uu@A`mi@$#VZehHD>`*RIeDk0RCVkPs +F|?^=aB;vpG8&;VVpP$=WUFKdCVggcl$@WphB`PE%$z~&*2h4aQS$x33pQA(Y1x%eiTBJy=_K7UW!8e +jPMGQ{Ju@mZ+rY-!Zy|WGsN^oKHk$w6Wi%BjDQ5DO;zpu9f`UjT7~H44OG}bg9TJWkfJ^%JYpd&^A1A +=On`Ms$JiHv8i6d}8m7e{EmWmvDR>h5}iNETLTBRb1LKxR-UVpUULxr#wi>R;5<#^P&+Q5y1R|t_N3} +X!6Nu?fSiC|C=xiSn=adOK*gJ2E`enHi3Q;LflYO`4_nf7!L3%=s=9Ty4VI+YW|D2yg}31&0->EnlRl +s7O8EjSvehdHNv{RhB3`+_rLS{zo$e2uJwL_I1dqah=pc*)5fW97IK(qhQ6d;N6@kRu4kuGauBBa-8Z +cJC-qGuu9AOUB9D)07Q$5~gD=Jwvg8%rTJzvf&lvUn{M>2)Y80r}FU@<1T8>WEHK$#j|HH3whjiB^92 +4yD46Pi12>Eqg-7L*oT3@wS!(P@bpn$FCJk0&@ktz2l2-ZHAcxJtUQJn6x407LMxClxJ6%+*7Tf-7S% +6X*LCo8D*-GKRGqYN7jz>V>cXDhjib$O^7I_>O5+yZwAs?3(=huPI(D7c%C{U?Z@cZY_{d_pFG5HMNp8zyujk-Qc$!(0UZNKL|LamB@cis^HsG7bmY{EpNR)(eLo60nB?aDa*jx2#f#9h7WomL>$Mp +I?BSN?5I*bCIs2X6N}3cI6;5_fX13#fXV`II=ZxT-@_%rU_{Uq0MJN5JL!hP=n<4QyiXnd(AW`lb#LzrPHY3;BaS +&>;{n$k#TiieJDFpoA;9iqX4AiJ1Y8*Bz`-8B7Am8a_hEQ*8J~sXptJ`dIF9vv5RDnY0xPX)=8Yi#M$x--{B%Ep3ys=RD(42IroN6*cA8?RsH89e_+#nz>>?FlgFF^P_7 +(aVp{Ak`!poS}qL!dN2r=<^f94cs%r3C|{&{S~1_dXS$?&tBR!V7|~HzX{xw65n%_>X!48zX=+Z8SMN +Jse5i&aUTOJP&56av_+NpIo0U1MU5o0xa7Y_TUzifV?JW3Jv1IB|rh7=Umj7@?L#&pJ#o20P2g;3VWT +SP%B~YYa4pM!Gc-a9vKQe6m`n+30`LNQ+A9`yWn)@p1n}Ng0rg*N2GMUQ +AQ-brL7*Ai%^lCd*BD`LA&1@Irc>lFFAiPHRxr|Jgeg`BZd$;(Mc@D14u%XKab~@8K87CDp^r +ca^)`WR@hD9qFgt4SeFFApx)>uR(?~1V^Sn3Nj_xJiS)J>AX<~^qKB=z9Z50?km9u$lH8^LW5*V~m* +JRna7KnEpN;eoDZ*IW%QbcfV{h>Im%`Ivui0pYua#m6dujP=foFBrzgi}$EQJODZyr~dg)5Ydv +;5Xzb41?qq8YFI$0dg7thZi>yi7@7txE887<++Swh7wEskD>^KkyysV~E$6Fl|nljEc3^M_CUo(gh&i +l?4V$^3M2a<({n?wnf2Gl0PL{cK&-k4kwQ&S#fddUpvZ#5W(F>G8)--<#7>=I4u(lf~CBoYV6(7F_aG +H3Oj&zLPJ)=yf%O#CjPhMm-CePI|JCoYK+QY2NbrDt~0EN_YiJaK>&ARC#J=8ROhP1WS3osu)w^%M`CA+`iA+{2WYsR1&Tj!h#g56s%WN+Dh9Z0D$$Np9Ms*E(QbZ=T! +UXDp$Z5ZgzQpEZV^H&<<{i%XMp*M~%Z+LIkprC*@p;@E7)`svS1F@V*8-UQ|+>gj9bGzYp3wTGANY?VI{+R`6ox;$h7*x<_O01WY^b#Gg52_wc0e2hM +_5kdjZa{8x_!{bHTm?$KaqomHb&jajkBm*cpW*wkfFHAq?>`+87(rYnaIWa6}m8< +bpK{VgPyN;AqFVFI!@HerF>mftZ+E`R=E+I8?D{$Yez^;cw2+bGYm +++ZYMNZY*FzpE1G&82UHvP3ug&Q3a2LW@0CfLEK)O+smT^GV(fPShxKc=i@d^v6r` +a*7W!+JK-$z`irSY^VpHr +__#}$bSxHPH1tLxw(6;J>-s9PrwG(h5L&=lXQo2_lcu)a)t`e5&WM^idu{}(i+5B|?; +>bEFnf7-t16NrDN*fs9*b)ru^wcxST9x;i%OE@o4hV7u2^1G?5Fb!HoN1E60&B6tlLIbbEdl8PB +v|lBu7VLi_yixpU-N-F#_d5W=%=_69gWtRV{r**U{>`iN| +9SKFZwq?#qTcI^m!fF()ti<#`KsdHT`L=X_pMN-)!*|S4xn$o+qE#KywZ2?x}EL)Zoe~EKi1GKjp(yne?&nEB@FHrwUxCgUG~21-9%<;88c%SvI$Qwp`K@;x=wPd1|D8F0tDyUVN25Jf0JL?a +0VcW|0*+i;H5n#5Rjt6d`tu2hJ(nf;6A#^6{0^vt!^57)BU=51E!##!FC-sZR5K0Y`;%&8ywhPOD!Oc +fixe3RA`IbLfiVUv>pA;gWs7Z#SS6e@g#5)oo3Wci+AI?u`AwxAKm&>ml50cE8~@D +;r6&XjKVk=OF%BLyRbeLFee`D9eyY8C$Z;|V4Rme+e$b6$cR*S-I#HZ(QdH3lUz%4%xVSY+_(a_ZO +MB+Vrih%w@zkwdI*)KopJLu=j2{bnBUJI}*WH4LVkJL!nW~hl7A%(Y^{go`pO!w?JZ|Pq1G~jl~-PbS +{(G&j}#WzEKp%}tpt36XZZ;B1-f48HSD7UbNwtP$0fk0hbOs-R3XmBE|l|7RPX2Wr90mB3@u6vZPQ(x +jxCav-Yok8`yJ_`mCS>$z%r~+oPtIJRbj)|fH4BbFB;wH0LleyBD^zwcKb7VD*H(Y9Fw&mP0yUJBN3C +w2{ypt+LvZMeCCCGv68^gR^`(+5+jj3n%5B>#GvdPgw0%bxTNv(EBF1a4E47E>o?EnlC30a&EZbXTdun`nl|?lITWMA3`Go((3|yqS&l$1YnJBUNQy;ei;~;zK7syo-9Vq0#1gn=fPd$Wb4SP +t>uOSRv?vTy>Km9gwZ1q=79wRvWq5~R +_3}jWbSvFI=S}&Mg7d-r7sfUGlp7t%FjUy6vLk|U{6#n;yztdI(41AzmuWB&DssnXKR~-%ciQ4f(tVM +xKksyy9#L;Nb0{ARJ$od5UI%q!V_e|2Pf-j~TwI@~zd(MEE$@Fd_azJ$6a;QTf@Ifq_L&%q3Pkd+SI2}@u6`Ri(kDG)rs5|;-S#P1p#qhqv&5_}CH#-r38r!Kwji ++88$?>I8Y>0&3eBMG9RbO;l3)b@G){4fZj>A|>zO4AESEv}pgK`Si6B%I9DbK^5D5KPF5RM!j=GMpkY +^(le$A3Dnc&fF$VXuX4o^l%6VF%#Wg-JXsu4&OJ0#GtumX>;SHaq@{P1b=GnPvIc9Vbeh}C)T +g;;<|tUG`Mp^HY&bwzBu-Y7IRE~hQ)pDk-QHS?qHAag7RDAY*s5!d0SEv69*0OBvO{Ba*!rM1KraD~T +!rq2k5^QnX{yLMW08<~3(saO2YhqO?@xug&=Idj6`374(eU^q +%4so8vTG~<&GM~hD7(x7G?dE$wAh7rGBa}4@dlUCma{09d$ZO+`g&^jI(JhU+elI6Lb#fa@e3d6H-jS +){{V~T3hX^KdJi#;yfJj|p$p@h);17*$iB%NY4W)5Fr +r_PB?TTcF>)AYpZOK<1;A$1vp^*!zmE@ZdASe5o#Go4~4dR +_#mqgx*`YkF5(G{JXCGvaSk~JMoLg1NDD*WVxEzbYZS-3g}9|v;zrzI($Yqc@udP2WmfE+#kLCKy&co +9w+_Q48R9p}V=Vpt}%z2qPsTTydODF~g>exrODxpEPwkEP3A#wc +{z<8&3y?r5m6ey^y@;{0d)9kcU|l!{wl5UGuqv^8=5Xu1s;;M-zH~F2$mXM=2;I{4nSZ#MLG$fJolp0z=!bpKDjvTxhP +SVZCi7UO%@O9?P);9kz^QpXGw|u{>cs;Vn0S9By4k)=vYHK~$H@};f120f2;)?o9)zM4B2b8eu*I2p6 +RGZG`3`iC=$Nx?$nY1;ft1EerZrB4J6<}|+ERK#~%Fx-lyED%R4sg+ko59TR)~o3ska&fUj>#KAZ8KX +)u;N*NRXg{hABvrO?rHDM=*=JUxYIO6D`aMP-0!DS?xDUDjjS$?Qz5P^J(aHm$-KWwuT}S|8`rSu#IBFw``Eb41hWf +cFu)#1p9pyXP=SJ?oUNzxSYH(Vg@*1w2rPb|B1Z7U>+J*aK3d{Rp?UXQN{)G&@WvG>#ZSGGT%QeS{5- +^{SM&o|HVE>&Q@zs6o!+^&oqj!k=AaQjx97N6fQ_+)q{F^cbZ|N_k&bGB4d0NDsv1HL88+U3xyL=V(r +*Hy*Py*>`(Ki0d^8mpBZDfE8F;z?9gEDsQZGu4M%Z2Gcq_@zGvU*;k+TqE{<9v)w+v6+{%VlyGJ@-4710fcpY5sbh}SPLEaUcin|E?^-6FT>Q3~bM?xrvGpZ +O?XM?1Qt8eke*QABiOlzVi-A4vdAr~m?SWa~4mW~&~T43m9*OqMQ>?hr6`-tV+dyDUvE6uxiYY+;>6W +Vqh3avm1$soK37A^>;;#jWhx!M@c3TC4UEtEFG^fzuY0X#h_i;e*YCAyD5DDzLtV$Ic=Ib`y*vu5KR5 +s{4Gef;x|d9SP%`QgWSqwzV|<1PvlRBt(d-z#hPgqQ%33A&kuc5b;3tLhE7$&WwhKu2!+hF_7^h3q7@ +bjTsV4)CF#j?ZnQrd1!HJZ77S}WD{|XIJgGr;+AQ1KT60tW2=q+)V|qg@0Srkk_3N8@_;<#Uc)}a{A< +;~>+y>>$_z;zc6MP5Q`kZFdXn%N=o1Ntmyd7@?dPZu_WHo`m6BE0Y7a^=a_My1x!)w`I~NMWy7Z?nG1 +?BAmJNDWGpe#G&i?sNSi(x~*udv1y;YcwNoxsc2ej?5}#4THet)Zr+mJ3Cyn#*;}740x2`b&{iQ5JZ}M@wM87iLj?0vJ+v_kP5LsQY +2v{7Ddpl8tjkOd4P#z#-+W4|>DH6rpgy^Q$WDva!Z6BJyT-0Ef?1s=qx9T@FDihpEc+!XxS6-?{_{PGCMi9JJY<+TP;-59tOvcI2B_%%c2ZC>_J0B_XMw~|i53f8w%t8HhM +W!n(sevUtd7AVa4q9nK2bmnEpD+~Al|7>jR&pU59QETLnop=LIp|A;0%SHA&{c_*PraiM0_6;QeFYl$ +_0z9FD_U8|>g%)9)32cC*Na$J$}gz9`YBecLd)$QS#=6ePXE4tvD;CYL03tthX|*QKX-R*OOc0$AS5< +!@6&}|17<+D1$#EXeCD>fEH{vk*-lq`SdV{b&TU%_(_csKe22nv>3M=28Yk#A<8>!p<7KdWPS_2zlR8 +0i7s*2spGU>@V|MqvLzN(&Q-oMEzTLHZ=abB|pZ9zoVIaY{-w3chB5+K3nF0<))s@`$Zw#m@NMP|A&B +5oUBHY-iY3}3CJ?V?e0)6RfP0HCpWlNIz$O&*N-AlruaI5!CDb#XU8EbGhG+@>^crV<+hAZa*Jf+Qu+4sXwBd#5x!ydI7=Q6kaoj@;_V1Uy5HCacAPoh`Pg +PFY`GG6ynHA=36* +R-%;nOa+y)A;fb3)jWcs>nFm}vqkYkA3ad{&YSgX|@;^6n4q%Ak_xwO +9k_K8ZEYqxm_QxX*&aRE1Hb5Ny1+eFYgSv9ctZ6kKGPxRmVa;2tp5*s~8d{g68Cje_M +$SB|vB09G6}o==Gd$AdEb4S2>}wp~U$bZ-^6Ll|)`O;`hOQ_u0R}wn0j&jaR8Pk(X8um?WTd2Lip^aS +I~YCvJ6`?bj2lME#b)-4`Sk#6E(pBa69K|sU*j;>*R($;fyH#%;~M1 +o`ucDV<}>N^ND6ejGH?0sMu8s*JUVH4)j;I9KcVxEsHQ{_lhD_@4Aw1cpx7@EBjemWEJmSydq8^L*z*sKkyA8eyc +9Ztyp<(4JDbIAe#2eG3B-S}6rzpmK}CxUJTjia`jT%SpdJpdg9n%QbjYPcVBSf;Ae^Tpo#-=C(a6t$c +&yDEx{)!j(0V!)n)ogo`e!z4sE;MjkRF4LD}v`1J#4WUjq5Rb*H@E)s6=V1j0lp +zue4iZACD*rpIi%^@Q;@_^8(~bft!YALB!!$y@Jw9Nq@yYVj!Y3GJN2|K=<>`E3~67P7(VkkHJYL=So +O9O=tYQgDYV?#CJa&p%SGXB%(VpE37;<4D%8+K-q@EgU{C@hHKVNFJduX%(jv(TWxn)Eyw#6NMFilWj +kDs`v{@INi<@(s-jWiF)v6sf{blxF4?+f0$Cq#jVh%)mOa8G1N2*Ef}SfR-TYyO2*KK+ULQYKE_Bi4` +fxFFqF?ID`?(viatc~&*5I6h7&n9{O!P--L+WJl+4teoU#R*i8)3L5Gc;>=VFI{S9AIR154mKp|j`$| +GTHt3x2j`%$o;k_tHP!X?f%;ya|wVE!k;=nj|^D6^%m*9Wy$9e|CC$0}Sm}XzosTR4H`2-S76NLaC0c +(`V2A{9lu#eSn}LEpbe&Yd+I~n^z=zh?JE71G%UvcyWs`uCh;*ztE24ae_{P==iAuwF9-p-0R>|9kb* +g6hTQ=%D*u7@l&7c)3mt!ztTuYJ&DP6G(v0>q))AzE|je?5Qv@C__cA!dBwrvb +bYCa`wRgZ?x36wUCT(d{tO$UpN}kopc%%L?rRAD4+018$iFdjkyHM}Ic+e;M>>dCCJuCmE?_E4;#pK7 +rsM8`Up`R*`#Hss$PudS%-aaXf56x_`so3ugf0-YWk_@?A~yxUe(;4yR@UOCYk2wF7gB3697Y<_k`j3C)k(68zQM$-3J2Ep#CuHF-cfyV`s?32R0)CHj}P3 +PuT#vOToBZ(yFhVR=J`o(AU{O!Z4yDqDUyq%qSQLwH41fXXJr&0#FifjgKkGAoKL5WyD5T1mEry9@T8 +@HR+K_>7HzksxTXjD1CI762WcX0+QEg99F;l`mzk}V!_#1E0(c`k-Ed86 +QQH(|`gS&_;;-7d~BI|-D5fW(?S(?A&2BC&5!`lcvrz=bEdddaT-y>wN0bsB+4L^3oo2HiOtGD01dix +HKMM+&0C?hA=yv0K~Y$@JADtAu^AJC<;qz@ +p0bveQfIxXi+o1m3b$8FwSn<|6x!@cNbCp2(q{>`Mbm#F +wZCV4rIl0^K@>IxEUZ2vZnc7qEo%QxGzR%X+*#68v=4lK3sMCu*LiX=2Ndkm=?WqQ*Rf&OxS(I#Fu~g-Qnsuyul-%~H&kx8g;0{RM=Ne?c +T27d>8&r#)E44ARCeA1OyPYmZ_Dv;gHT(|o&Hlo_>Ig#`7l=df^DUbrGT4LPs-n%>Z5sz1-zcs%n==J +fv|qp))@z$6TU!+E830}x?d@6aWAK2mnS!LsVO$zX2x(003k +X000*N003}la4%nWWo~3|axY(BX>MtBUtcb8d97DXkJ~m7z3W#H%At1ZXpjwGneM3sN9D9RkQ6F|Ka%MPu^X845rfJftF3WGJEsYh*i3PyEfhInDg +k5Rjp!`F#*3DyWV5)OL~CJM;Y>rm<}JGOWLv4TBzdDWqNvuXl7?XWlU;3kU5Yh{!UO|LrBF@Nd%4ymB +*G3Rrqw&xC4E;)4=OV%m4iOQNr^qupTWRoQ+t{0Z_yy|^#DbEqJGu8{ac1HJ}^7x!2!}>;>_4wVm +tdqVTAKlI+$s=)TwrxB>AV-C-YTbKdo!Hi@s6{Pr3AnBMw$w<^^!6CV;TlpqgJ?JaK7h)JTd8~E>i`6 +Ad&VJx!E^!o+tt;({POJ|KyhG926plP#rO>DTG`M7JOoa8zFa1ON>nM_M+(OzG +#RU$W27zN8s&Zlnh;yp!iEG4V};ueZAxgg^Pvu6aH=WEGkg{9P=Wvc>of5~W`~T?S{mE2#70ZScOb*4 +RVPN8&wH2Q2y2J9Ie;)Ott^Dq^-H7c2A*^dq3&N#{^2iw1pLf$Wn&8vq^Z0$e+zppeRoh9soP*V2pY> +mlAm`p`b0ASCSidJ>5bLs%*oMD&?k7eO|fVq1-iG((dV2)DTQY0in!6po6K~qqoC@f> +7DdOrDmc3&^BHYXlDKzAq+;C^dY_~ylgEkwSVj%!u70y$e?N_+QkvNdW165eJhU`8Zk@_Q8J>5L8^W) +xmEgiU8lPqC;5H;sFqz!BXg9GG0f_|Bcr+maxyUtR7D12FasvD3Gw@G#i&P&WE +*I)0W(6H%)Vjr@Py&n!;Be3{799wT3Z>43Px=SYKH$jKiIg6oM2&P)|F+PR~%rR1k+&`=NK#Es8NL}$ +H^!`(ZpNfqT-!q)&*O;wDyBF3t7EwO8)6%mvxh#RE?&oAA!XxqP +z{7DsjxRKaQGi?_?d5bfGMHf=*3=B*J%o$hIUu?RBpC_EPaj?~!&v7s{<9w}pCB@e{jn>NKIRkC2 +(_f5XeI=20Q?@<+}<1Rar?nPS2q9%amt-%3bZxWQJQm5-iW9T;WWP_^%&YWGh=483{jedU4o?mdztf4 +EQ3-|A2z18=GJ2C)(*3pSsCyN`2_nFQ8JK6A3`V9-$Q323kcWOl4^Jgzkmv1&XrVwgYoVne|TD)zX*| +cT@*VB!0oZq{V#o@^>*!SDSTb)Vj#9~19=kK@7a?nUq@trB`-9XkhdOgUgGiQkYO-I(7`5qZwH=2hXm +UTObd+XdB-#O*nJAtOUoadmaGtSR&na`oag0bNzV_vG_AxCECbmV*7oX#8m5ti4uD-YlQCrXy?Ujo7> +UX)~^{OOInY4qvfKZyK)P)h>@6aWAK2mnS!LsX?KbkP4R0017n000#L003}la4%nWWo~ +3|axY|Qb98cVE^vA6ef@XaHnQmN{wr{mcTXf&W}0;S@w9cjZtS)`P3@f6Y45%yE7Kw*Gp0x_N%>=Q`@ +g^W06+i)B{^}^-aS|6v@uCwFc=I5gTc(;fp}UhZp(CbQHv*^KK^_N|N8>}_oX;WOZa#p^Q{M455%){B +J)ZnVwoqh6!nD^dy9Ai|EMoR@rx|0w8+Ji=u^?h0zLJqH~1?+xGk1q9^Z<*sKv6903xl#G|i-tHxs$2 +MVgCAF<)e9oKK{5s=RPsOi$FJ9~&ogN;Xh~pRH>G9G2;pyS=5j +=e__KyB8emXqb9|{R%f@b8+qD1@w$rMQ_6QtLPlnw&Zf)T0~a*|Hd3G^$UE#sLKv*JpYIdn%XWI0bO9 +LNgLO8`oi&eJ-s=}oIs(biV4*V{UUH)m(myW;Fj0KqR2Y~OlU)c~#{9G<25@&420hK?PATJr29Yrlhd?#J;Yx9<)g1K +Yu*Ols21^OdIG51h1pZ!R@kGK?P53{*tuKoFA(A_trFoofjTX0~=`x>;&Y)zC5Tgt+9@`k72`qwt4F$ +Zx4(MKsId))P02k>pahBG%k=O$&WHk&9pm-%|bO{kA(7Bw%b18B;fzgl4TY7=Bi&5PAEc#p|5_n@0Bg +^reGf2RIsDk3N=qu>v9M~X1yr9WqCXuxwaadPd03o3^p!d4I2y_~|dnT@NBr+uYt=)Q+!o=QE4L*s!p +!Q9pxrIt3PUOlkOU9_P1W62si3$#;=XF1F$cqJ;DD_{8H4i;1AiIZRua5;P&sR5QTjODP_I +_TSt7AOkz2Y^;B7g%QqBapN7zQrQZ>EE9pjGz8^@D!xc4?vizhCwGfkCY5XvL +?mEA?s%#htEr3*GCG>MLo|Rgg|cT9*l%|0J9~Y&EpX)Arq8WTLOO5vY0DugrZKLKHzUJza5%~r*W2{A +ZXs~r<1yQI)u)<-;WnO5t}zBus%rO;^xh%yr~b5t>@*!261}3@SYO4)t5O=MS2`;(LZV(#bPj|rb^SR +o>ihZ6z_WT_-#@4Mj&F#q3F%i+Wx=2OD|;*#H2`M4ua4B_?sc**7)Vo;eWxZ`ThRk3+P=@MKZriOW;6|YyF<}6-d~7BGAD@h096USNJ2@D`YJPCE_wxbH$)bWaD3c(%aAJ66b5=W}bQ1S}jL|aG4FMi&8 +cKH7e_K}!}`#?VCw_cIKSoexDo@5f}4#MD={$|Bs>$kg5)+iqE(WP=J>t&gf`iJnabXJ{@H7!shfHmu +bsckjW-9~`qOl+e2??LisC*L_V2Q5REi!!Zb^H*GTjKhH`qI9*tbOWhmc}3Ewb3n!CTpQGm3+R`rd0m +v373)4&y}XbaSAOy1!87s2P<$zVZHk0pG_8lKpU~HEP28RUo8%yULe*irMBk6#`<*z_Xr?d^%M`UCUe +zvm`Uw6NwTex~p+?oj@01I_2Y>D#o}9ioc36~0C^Q(+4UA^Ql0iI&DGn+$(P>iTI +HVoK6#Y`-0wog==&C_2)M33iJvcgr=U)z9oB%@4_fAg_UK{~BrHqg{006I^Wv~D3=+!?4Z?<0#`qB2_ +b${@!*oJo}r_aRT+y1N9N%YC9ulKQ~zFu?h5`g|=Rc!sr5~udhE +DyxJMR=_@e*tybv4|LGA5-#N{azI_f_@C?`(#_9S(<^lvmiQBCi;kgM`hd;o`Hpra-R!q8HBG1z}*Lt +l|J$fJ`%`&Q96>{#q3N68^Flf(pt9%c1wd&G;i3WgqoMzU0)F@z$6zxr2f4a;v=gk-}!i{wCX9Kq3;)nFUZdwWQLpqd#io&uD+>enQfonSBNm(|97;EN7V;uz@m4H14AP6W`7LG|=$7DSs#;J@|Qr^Uqn&t*u$%q@YK_w-tWy +KZ%gh1e`Vp&d5Bwob1(;Lsq0^e(D2c`opf=N1^O5#k$hEYZcEmKBC$icEz!E3A$Ps*Y~lTlWui%j)LW +0KYc$rzUUjR_@%g%`~*Xlk;Xs6gCA14W=cXbdfiCCu9*SK^#;CGcz=gAuN|Q$c-$AhFJ2lpR@lx(*_M +3Q%EL?L^CJM`{4?^w9zbRRsVF{-fO2pS&{b=Qb;?D +3W;q7vUvgm8sZ8tI`vNM1AtilYX`1pH|TYN6j;#BR#n#PIYfCX3{YR23i>b-GArgY-{l&r-`Fq7D%1DkU9%}B<;)7Gi%o-1Sy)f-MKmU2fk81B5po)zwE +bjq)Z+X7V>t#=K;!Aq8RY3D;pB|OQk9xi^zZWw35$NsjKDq1!My04s>8J2`e8QimGJ(CP`Sd+KDoqh| +LaT+7mnR2mQ);zhZxf3Jumnt7RS6%l5`T>6@xO|uD|_^4BZ-Q$)!ZIDI(^8BWkS=B3O&U~#zuEV-hjM +5FEoq;ezalCkPfDR_(A5Ug;O9spN|)~dAq!tL$Sl}eiqO1@uy#Y<^u2@$`}anp2RU0{FgW()w)u8Izp +WTzj9$l^=EkI&vW4Cw4wXY^r%1O3G74l$Dh@sjVCVWStc_zKF{@|`kFdp`aEsMw2Z5T#ZoWSqZ&UpLg +;#q9iop@y2HdVQ2a7UfxdX2Mj%eiqm4OierS#F4Dcr)epr_3e9jG~ecFlH;MT`u?+e)ZgEKX0ug!N~gUS@s&gwtj`!Tv!b|MF2qGDOPt@gyfUB}#B5Tk(e}1ls?xHmc|8K$p!0mb?HFW?%vX9|vmEhRu1p +lQ5GM*J$z4gt*-PJcTwfZ(trJQI>s12Pvg( +nBP3CA2_sSyDLkt!9a-nbu_6MfBcU!xIY5m%M;*H~}Rm?_WYlnw%E{dao;FIe$4MCDT57Iali*~bNI0#wjk>qlvBZ4_C3(zXZ1^(~!W>=D1v>^B=1oVjgKTDRl +v76_hH(eWG@4NHVnNOxouI{+(c|dx=bwHi`cGk^4Rlj&VQ&QcsnxCblIcpG8({Av( +?b*=X;b1(KxU)SbYr0(2Js7N>R}5rw9i#_w_t< +s8;Ca}VSZl;XI#z#Le9t{l01y)m(i!aK^STy&`iY?6&S?(LRKjm>hyRM*|p}{l&>t&q2%3{=(_oHoGy +xiY5Am>OV3=WjEkm2Y-OpKpBl?1TAfn%BusN--)z2Xlche#3OH{?u$_%zU2INDZH3<0Jkb|)n%)3CVS +84TXn!Ng*%)Es3{O)##^h~e!0pD+Ode9&LMivryVgh8`ubpngM6fE)($*Ue7cC5G~Sp(%V@jn3po3r2@Zd3$=NRE0<2)lCNijh)QdHu%-qTg}@4&)F^L;)cRG}+7tvGa_)wq*5e +yIJ61Y(S>pxGTk_aduD^Pz+w5TZ&Z}PFq?FtZhl2bJ(UZAxFx=#%lxnX%TclFs!09Bly1qJ=3RSnUT? +@r2?3^nk4L51}`3nIMU%B6hPh9y7L;2;b=MReqGkk_tr*Snx=n$7D|1*ZDH4u7; +>^c5{BSfIABgc<9Ku+6gd_dJH6B?Q=dvX604o_NUMiv+_zli@UX$#a3~v{K8=} +VMJ2OaT*$S3b=CTqqRDXKoD +v;>(y#HPIiJ~V1XuG8a)~`-)X(mQ_dp86o~}QJFA*u5AaCuaDV*l@Fz$0vrkSe;GkCl!PMFK*H*+H9$ +f+G%eq)lz=#g9d&FLR$s?%wr~yRrBj4ch%L*Q2R#JSWcfogdQZU=+W(&uCSu@|69hy1cY`2W+s7KiBS +=ITOZW29-x}^ZaJ1T0~nB0wW>u&nZZn%`N*SfWuh;Wn%kmAgtIn6ewYQ3AUz8HV;mtMq7Wlr5JwDSbL +F_x1Ho=-Yx3nRG5v>9gt+Nas^c3Cx!ShT39uGMtjSFy<`zg^Gb+wS0z2Y9EpeMQ}WOaF?y($F#P;w^l8UeR?4A_3zmwIR!G&o%K +Q}-68!3ermyyTh=m?HMSk;;LCJ=t*r&xuRWkvWAk$t0>^I9N($E@b;Bo@P%Et?r5(EVukg&|4IZD!qS +3L@w2L9xTOavDgbF6L-Ez}6onPqm1LuflNvO2?OX9P|Q+N-$4!!iq@upjQ)T^+jB-ixEG!vr`*K5%Q> +hWBB6-4?vnn_tBi>$kuN8+mRmW>n}tJd3*(Qf(7QR`s>hMo-ylcg#4MZ=jx9V$-$H6qOe4V=5EWCQxV +^lT6SWV~aX67{_e!23FtUrC|}nZrDtP)(qo`qHSH?qGnI8HEN1B`D2*02So)yD-Ey_<5d8imBeh(Oso +3MO8I9ZX22Bqo&*g+0wOM!^=7nX;kuT-Z8|Cf^Y=d^jYB>T??>YRqR}T*xb=z29@on*A14`pA;o8|8oq|2TZmEmL_+*KgC?I4LEDB&7m62zH3D}bHqAV7&tZ%ne#y2YwksfQ6bLeZ#0>#$ +DEUqdaK)*PDD<}0})UXGKqnn-s{(JUe+23?kHdHXcsxiJrLL8(2F(zCZqV;hSXIW)AEC}0RVT_(AM=M +!dfY7{gHXfrgHy)p%zxi~@#uS1rn;`1zG|PzWrQE^RloJZ08QDE)%vU&9#-Mwp0K8wxY&sNEHBa=<%o +m;S=+&#e{PxWdlOesK33OEC(y4-gqVbgMrn>_Eq)@)`I8+D=`1s6ZgAR-g{O>xKWfxwUl!>wpy)qcVA +5K|x#K!~0^S9b!jW`cQkLdL7HZ~y`uV>X}jw~-#2S610K@J&4;XSJ&041j-t +&zT#^AJ`6uGyLexo##3Rw;h@ucZd`x?2qG5@XTOA$35tVl`J#4Gs}weI5XWh&iITSTE4f`;KXQNL3T+ +SC;hmbQM@AgSH-n<7*-Z*s(FUd#zmGUbO6SjYh`|`U~xdsKT{G{3C&PB=Hu^fp$W3|ZH7{~pO!$XSX! +@-^Y5n-%xz2TBcTY8rn1T*I4~zD7|@X24prO+GGCKk4;}hcRFDb?u<)zgf#9zHSX^U55%TS>(t4>9DP +B`VhjtD$De45~HRI!63`Tb>qXbT$RMLRIudoz0|&3Z +O37Fch7EMycpqYWQAh06ngKp3>O<;P|=0MWPRDfKJ2St1aT|oV)Sy)=S75>P;-!KSjSadu!5>I&|(Y! ++PIm8lc_CItqPEb`)zlElSk~ysn0n-Po{waq#{fFr+Cr#uu{}wRPL!U0jz!PePREBe<%SA3>y!qj%pU +8XInjOevlc#Ml&?^Jy`f2hVbdhGyJDTpZcK}KI0prbiG_3a)N_Anu(hc^jwbqP5XngGO8Qm5>_%j6MBfhZlR+o<-!Qa7<+I+(uP^AiwZ7y?6o@!L;cswWs8~PbI=& +k1%jL8o6 +M!m{zOcE9Ua=FH`==o`qL+_lOwz$uDWndTpBrZK5UtjR4nFhqv@Z&x$xPK2+;w`YNncS!a>g7_Pu;sU +o;s%-qS?!tq6n$t)eF$Mjk9W->ZEJSMBk*@(lp4j&z>R0X^fXvH}TleMoyCPu+#nk3Z`S{r2YoS$^#r +yY9CMVwgeR0VmaA$t8n(F9QB*muh8byuxw5JvZ9o}y=g#%|9MiWf1ax0g4tIH3rdT)@ChPyrRnC60fj +{$djBrl`yTD*5#3Lbl#dh6OD(G54bS(=8zDiTYkt5q2SZTcmkk7aocpWhlm(W?;z-NNVRfc0n$ya-5~ +-3T)r%gXnC;WHat)$mBjY&;|{q)2Y8nb1guGl~;l~?7T5mBn2wl02GnNAsAMFY=RDhIU!vOk0#U_uq~ +^qPvvl1PPM_7^Y}m<9iJZXJV_H7E7cC93$m69Q`_E#DYL!J?w~0uXtf7~e`pv$D`JW{I&q2LdwwX+In +PYeCsY}-*VdQn+jL-q>is04o?lU`_3=AzUQo4DrK(n?u7-4X4z4W2!> +fNz|67b5(Bl)nvyS21L{dDlh#5CGd?^v);rstRlideHuPG0$hhN*T*USF^a!du*ABIy=P(NAvhgr5Ouo8X$Spz(Pr+(+>vbvCW~a?TjM!C4DkX$d=I%}S>c-`kE;TsHYX_g^x +6b$Ov9K1N2eg|t2vXRX#f?tbk^Qx+S +#6t6yMROqUlf&k%s7Cw+L@!QMI|tPLOj_mP9cou8KLNSdVtR_eac34Zdshavs|7h}MKkt@d&Qj5=h1M +7UUf9wHLfsbnBBcdKD(2D4;9D`|U1SnUo)&zlr?MkKt?42TdbZd>H +ulvVGDVsr9&@G(`_`&SxYy1lM9TF=TzSy2CbrUKd@?5(h5_-k7ljSo@|jOFyzPtNd9cj!&zvqk`Kus{ +Acw)T4~fAOGq|dB=WSy*!s7fkSZq!=oSsWgqYqs{lQbywoX*#^hM?)>3h~sqw*?OhCD4(VzzV$xWZ*Z +tto_nTn6Qgu5|&@hs9mkFd~Jx6_>a3aWdF`f8DF-SD{?8YvnG1`1Gh1Y2j6}Ao9MrLZ0#@2#Tp)nW@a +cst>w2brBx0TmeuQ}^LyXGOjI +%~Zoo=@Y-tD))oq)H?BqhPK7C`+!O5F)?{sjo%G@g*yqMVcp~GW~4o-rS +`zFJxyfN?BeJ^VFeR}`ojcxk7ly@@tgnGF$@d`B&61I1-saYqPpD_aWHT6D)CV55 +`}b>~@%-mCV@__05PA0CF>XrJUKe3x_t?=2BMDr_MCeF|apO>T?CMEdbDeseH6Z-mf8Ulv` +=>NPl-Y|mxgJ~R~$|htERBI@0h3Nlz3G8~G-ltS(y1xk}o6 +Zir2{yxp)n!>7-n6aZ;u9+ih(4`yfciuIP9*{STUA3RCmfR43}YuyyfvT-4d|)7sSl4g9oFXvp9M7n4 +Bx`FJ}!_dkHjH-pe=BHQ5MVDg#}o7jt5iQI==(FpabiOIp!uk$JnSPJC19M2Sv%gJpF#>EB5`S;OSbn +VYLo(e=qjK`G@v+7)|{ulQ(2MuP)%Pi2l!mHpE-k(i`u*or*`-7tjc0P##x{EXAOCEVgA0Gx{nMG!>< +de8Lp2D{*#RlnJ`dS7(&4kp_d0?Eo4KPF4*qSo8Q&C3{UI-Bpw0aUI7$E2nxb^HgF89l_*`-2=QfL=| +`veL=@mPogh5{EKn5>Y;a_9yTk2>VbHeR>jU&Uw!_6cOE~~*LKTrm*|G*DP2NBhe6KpKhWc@B0ge{84 +xP`U|*Ub1Qk(NVkAd`5g|>UWCo+alWMMiPZ&z7 +%E2>=U{j`aY__fvl_%&bz2z&F`4W>eS_zjPXvdg={T&uVjxYdAOWl~Vn@p)Pv$v=>FosjckKF4poga01(UsrgXzyC>Z=n=d3CVWQUo-BqR)prPHyi@UZ*$37gpCBG%bw +?dvl^4@hc>xtLG~VW9%h#W&@Vd>=y_=Rd*bQ~3y!bfVA(SD0JWlW^&(c|&4N-xbz*P?733i*;7?2pF% +0+KnD6LaZVv;%fWA}R&5zxb9Ck`-FRVR2xwkxb?Rv5?0<(SFU2Vgi9ARfwHg~Gs_#!nT2vD1`#09QtP +1kAkv67@cJZQ|q3{_zRvghR11sx}Zc*QTS^7j;^zxnStM`5C-@yjE#!&U +nZKK}0HJNnow0l&>lJ@P)O)jDj-$MqV>lx*b$-m7u5|wJ|1_({2kkjbp6)EGn5!tWv-au<>qqepNf+2 +(HeR(xNU&SXYbTTG+b3baP(-PZ1>}HyK8mdwpFI^Ro`WA73X8+w~J2*#ckD&PK1?9Ka^w>z;f8g=Uy- +PvDhvZ*b{VoDfi7+L>KB9zTO23C}aw~R9r4zMpTPu|UGbf~z{iFZtAFr!7pA0}D>%V%PypG^+7#TtUc +GjBl99PbOLdLpb<85ncWJob@b>iEf_c%)mnZ!K==y6NwV`5`T!E4i6hQ*}QSm +_Nu06(n+VhiE>=OS`p~1)9tEYbs)qz^-oop+nxtuuw}kqGvuO>PdA`{dpN; +%+vP?eM!LXgjA{Q3YRvq24g?eja9%@1@oSg49Fa8;?Y>XFEt1*8BvD7*l{(Cqp-02J>aKiR+6!)&^`@ +q%}wx!p2Gm}PoD6VNkjUVXlJJQdt(fV*rskw#%#ZPm~mWGA4W3tWa7%ja%*x?|P3zZpDg=A0WrH3rTg`XCYV`KnV^tj_Za4<~Q2#7OvsiCunSdeWLG}=}a(4wd+jJJ2kL$885deu*lGJd{ +ydV28UNCgjQy0&eF#^Pg-Ffv(hk`>E@LhAkRTHqVit|d2|!fFw*0eV)%Zu3Y8kZmXN^kCyLX=<$yi9z +K~Q>tRFM1y#emQM1UkU`{EOxIi1#0{VV%eam?B@9Jo#duP|xoO!fg_cmVOfRzb#^ix!R+BN7xb?3>Mz +csfh537YG8D&UJi+9#2YC4<#ap333fgLn#5w~O2G-NY(K9*~Di&%7mX?@dy1g4PB#E$#{k!R?N==%_x +1yL#mL*T0M?gxQc+WW4qCt`6*+bmf1wd7l@!R;`ZaasL70?FNYucJZ$AC^{O54i-BtifO%M#!^y6#pG +6HzOL%9o|a&7bHDjEoQ19loP6;bi6A;&E`cg2=6yQvK_lEKd%0jM*hz2Bp%vGT79*G83R)V@2;O#aH9 +4D>Xw{#kx}ScqY@eu+ZjE#+PgHr*i4lX7HdKiKPt+zm3baJt=5rt}EqE#ja9Sw!Q@CqLMq>_S`P`#(9 +HmZ`NL5Rl|D0=tsMxzuFxBaCH2lS#(aqA(BCB0{-r05mRV(tRK{0m~)iBab-fYZs_>CoBpF)48!VLcE +i}?kM$fLg-Tx;346|pPOsT~rga|`)z=AYMGh{Fc4yr?uEu_+KSZNgheoG%VgFXB2i9lpyJOikx|H0Zq +1h^jwvA1$@tW;Phly3=FoFVZn$kaLyVKIF8rz$p7hN>E2q_H5ba}S1L36k{8AHhtPj6y}sJ)y#J2>IB +IRMDkve*_Bp`w-)s9>-@ej(>k)LxAPHnEPJ1=B@@3JgNG?MtoG2bDUsl^IEyWv#57WF#**hkJ8t0Qnu +_ZRbFn&{5?BbFq5c0qcRl>xl3o@M`qv(G137d5+P^kN6tj9q!sA^$(>CtsXu8;>oJXvC<6KK`SKEJ*>?uqtk<x%|f!Ki}I@=9iX +U4H-IyO%#WMdBpkc-hhvI;lar&GlQfk*X64WmF_7f>^}mjQ)=Hlp_?)|FUmofZ6S7zwLr%ioh$f)Nu^ +MK@7&)ld1`C?CtEltx#Qtzuv@;Or#uUxWIW-9=}M4sT`nchLI?ZqRxtrE$lTIW)O$ +Pj6OPO-%E4wDVw7u7XAZWCGSbie-0+QE+e#DPSE>H##NyFFK~YEprYJfT?kvXfoj&#ero~5-a(U#4h# +=d!lgdgcszP_&l%eXSxi`jX&4A)@b!|Bc0W||$ba8~6l8PhA>Wp8aWI10{loyU)4iGCmT-p80kPJFwy +ceB)dP7ay0DDK6@Jsw>)#F5ioJ-Qq!sUrooma9sZ=z}|^LIH7{-QE?HEsGZJ6g1yeW=MMC^p>CQ}sR6 +lCFzFCdCZ8EG6i8WIRTZGajpBCzd~3{~u6G0|XQR000O8MnywZ()Hxe0U-bY^@acd5&!@IaA|NaUv_0 +~WN&gWb7^=kaCyZ&`*YhilfV0~z$w!)l~3U%cG|nk)SWtx)960GPIj91@_A^Age=w+sq$f4{pSAn+Xp +~`Psws_&Xb8qV0W?DT`U$40x!f-yj&&0?K~5fHxzrX-@Jac_j>QOcrT+r+(i(H3z^9zjia3xJ1^iRSp +;bs#E}S6F_(#)uEcHPMw#?SVwOlL;+gQ~ZgML}B8!C^t;CY>MLf;iAPS;e;R+8*1#$qJ&4ExF&$0(Mk +pS)sH%((NaDk%mV=rIGD04F`aTbI!6;?KvVsNQ2216>wmu?93fL+Yhnc^YH=5d~hM5b91ct~XgKwg;p +$cN4jgGHdqKy(sE3gm!ro? +eDwL`a3U@~PcF_ckAZ~`K=^EY_HhE`9G@PaUD;4Bq>1BS;YD12Iy^bS!hqW0XQ;yjxfDm|7r#%&zkIq +9pUzJ{97E#!W8m)a{mC&G230#cIUJvk#D~Mv!(WaG>m2A{4H1xe6kk3aV*_*#^+~PnWOWws|m +c0pstgv0{P4M@^~Z;C*w;L%g4$2DOM8&3pnRQ1~AW#nGOoQsv7{o_s^Hd1xfMY`0xa%T_Q49RD;_)JA +=XCa~6bPabOcOFp7r+p2-e<36|hOOU%(Mz^kmF=|y6X>~0?rcXnn87`)@m@+?oJF=)6v@#9n_{k$Z8?KrvpX#i;V +kPjBlcyH`CKiIFK1|W^kshs5@RUTkgP;)m)rBLwTD`qorn%GRRh1fe6zwZGF;LO$}gJ>3ieSIws4#Xa +0?{{bKWA@wD{C9iT;->>)?T^IUA&6`y0QB9CfIoCr(XB%gK-?@DQF;JA{8lDK2E22I7lKDFlJS?*Gx? +ZNGEB0sdmt-k+9M<3u_ud^0nScCyA^wxC+6^DvRf>H_D)#q)be7r$R +4EClgJr!DKmI88-weeo@rF4pg~CL~*)DkH7+mr+l<4E=~h-xhKUL%Zel(fME9{Tlw2jeI9bLcD3NfKX>U^_^K+z?``fl3}qD{>dIq&{ZOId7yiio +O{;XigRG4E!D?fWc%yIV%cvG;xRN?igl4Et)8#UorC<_+gWCPTap%A7tt!HQQsGgJ>{QMmG`$yCg?Qv +@s2;h(9LYtt`=iF0}NefeFE09%k5xk%R-UadRa6~e+7gObASvD|w%%rRdPvK-xZhiBNheE*EP7m0 +U$oHhrwtK-*8;R#V^oA9alG=^tvuMBEw8U2%JxeU2qsF3@Afi0D6)H6!Zq%#u_A%*XwFSD;nz)+Zvhy +wKsmi6fB2YAEy_u?TxW0c;9t`lv|#F@n$^&x73{` +NrmfcND^x&qNwv=JT31&1pH63{Ayq5TerRE|bDMop;ZrVy$5Q~iaI-nbAhI3|=osTrEC3L?rEIPOEsR +FuBIpVpZEQp-jTs@P#yJNSci2pcx?(ODkV1)}6n4xP#~1sr_rxrSFd{>A4$ffsp6Mn##YvF`6pmpwQN +t*|7^vFc^W;<*Lf0CkG^|x)E}G|Hxc#C+U5yrMp~UL+L_9U9D$HFJKSU}U-N--x$0!X0OhaunZ8Z`vV +Ne<(rPL@8-JVWI*H^%_*lMNBuO+L069any|7% +&0?zpFu1F8%%OdS4;%orasgo~PK##Wh@09t!zv4-R^893vyoaF!EU#nO08&E6@dO-u3AFR#0^p@*dI` +~HK4Yu#!P+;h8@M3z(TZJGL>(HRfzKRn$TRa=cY7Y?Lx(nOlw_@!OasZS&6UN*{k5j5Pn%B!ybY(h;T +O5lNL2!BVw+N&Y3Ly-xe-5`yB#Q7E?r9rFUtot7_0Su~gc4kUC4(yK`@QG@zY4{!N%hmgHcq0nZU5xU +W@BqbWtwE@vyg0GO0&o*Md!c}%n5AWd-HNrF@0*enEhFDW_j0$DloefzBdE+zH}Z@)LD089o|CFgEh# +L*pEqaYJoHw2l6Q6eZ#E%nM{Qg4|on?Lg)!PS(&6fBCQ=+dNbGTXx)+PS<3j2!x{6}P(7Y<8_)0^gBZ +8s~|ph8t8HB$uL_a?>KMth1L$Hn5*QGgMYP=gw +0a*>(?6(bZLVv!GAOeR$pq6=4%J-AX?@b56%>CJXSLqP22~kfa8ZwYEWL(LJ +oXc7tX?6_KQgY;7UM8_8)6U8#ZgeZxi +2tzw;)gC$(rCjiB#XJzff_izr5=egh&bVQQ}=VPjcl>-(}kJNL;2|Zna3HSFN39I;b1yGa8?Jl+45?w +umj_BDw7X^N6Ijty*Lad&E0mgir^OWG=|3lYY!?qPS&$1u7UqP@^q}T;WCy~;;K3$!jToiAFzU;O&W +OiDcwtBXsS+_MQZQ%JQbzqZjh`ej^2Xe6woa7m+ +zDo$J4Iy&A(;N5W;U_37QsSV-JT;>GxU-ZxhlE`JEY#bk3Vba*UlUZ8wPVbl9j2iyQ@Kim1C%dB{6Tz +<3V-J|)2W}XXZ~jm`sXSZd^`YY?x01w1cx#d|VERaz6{L%A{GnW^H*x*h*GqU`id|xd!>I@HPP(uSw=dGBV~*qizh`O?&!}n>H>y2(7jA!Wj&|-{ywf) +lL6IVt-5t*cUAlDmfc!=&yx`R7RZ<=Jjxy#M3w +{1E1QfV$4i!qxHB5lci^bK%AgD2!81cgA{&R>*jttJ(*k_l^vZTRCaaOxSP}W#X}JJ@k2^;TEQ&vM6v +c%+a!j2^9BIDzc=8ys^%on-}Ed{gG<0up}nIXRb8%kcFc9^22Hj7Nbd|NXSjF=fZF3yZWO3aGxH{a_I +c)Fg3UHpml$KfCV+GEMJdA_+)l+yjs_piRdt-OtEcVk@EYGib&{@Ob%WtfJ71Km85<0Z6?R%qT%`6}-*620KY6Hggznw|}o6iH%h+sn7a8%=1?-b1G3m6q-+oLnHf2PmD4YxrC7#K(;?(LSyf5btw +C8`PkRNNHBy(MlQJ*VV6+PdswYOL_;o1;0)Fi)S3n@3v~st})7tdqqKZAR{)fbRyAb;NE($OzX#p3WP +o4@N=BYD?U#Xe>{~%qu3IIxQne^8=;%JdOCK3TQ`IIwax +vy+RgWNBGo>>w})$q0?J;x7qh+J?&WKzqihs_XN1>)^7w3({qyEYu4@c5gB0~~Bu!U0O!JR +JBuIXSLI@O!<%yn%`nINRbL!Qcy8>Qx+H&h=t(YpXA)wA*caZ8x)9!rjVl3A5L3+xdE`-6~`0vfHYN* +V%0`P-`Qx)@~CC?kUZ_ndK^aRohjGn_Dm7#Y-8r8=x+tb7>dGCSm9x0oh^0Ye?X7kN+G3xW13d-2?De +^IwAxPi&=I+;!Jeq>ZEAi_Li-Tlu9_|nvW5iupAT~8!cc_#$0s-P!z~qov?kIgcAiU +zmwhgHoqWr>0runSIgHR;|1&Fc0S@6IPW;o`Z$jfskj<68CejTTThTn6rdi^88PqTE4)bjO+)92ELZq +&5LP^)}Lx4-p-=c!wh7#5A+cEWA{LAMMzzOAN;XjZ6BiEbDXVUl_(f-)yijn;0^E?$mB@*7`{Z>5?Kz +X5bqkOpyHbk%W-uDS=bR%!|EDG3nu3!L<8wIz*r_l|qyobS-9VyeelYicCMx#BB?uxuNi=-9yRtbpRUXQ8^G8@Fz=`xPK;S8}RSdXkZb@R{~#Hn|4w3xLjqr)Zv*9+rR&LI-o +mH=+wc@A!OL|vkHwS^8@ZQ2+ZeaqIs$ZMKI2ZK*<58C*88bnpv>sy3^Z#D@{XnmU~SL(i9voKcwsx70 +;*t~H}5DCMGa(~rEi;f)z*TcewHdj*E&g@G3e#`6O^vT9&YPs9~nya>JO|YtoZgT4kvGXHku%ILQ8bP +=XOQSDM(xvO^6KP~B7gPL_4nITDUx}1Z8*lbUAmY6IfD$Ebe3#KSPpQuQz&LM1JUt_Xc&Z=U5VP#{7? +&IT#>j<#Ana06n-Zw17K!wH&#gWc`MOIOyCbnn^~MKP4Sr;%=((i7d;LUX?>6uajhc)VtHWj8^E!0(a +1S@aGl~}Y$x>;Q+Pqp9?h!YcN2&h|v}fp_n@ttN3bLj%2r?VVSi>Fs0ity*lLyZYLw8D_v+Kv6@- ++y4n%*qfjaC*a9jBw60fq*5*e?}UPM=cW@ptDDojXNzAb*j>{Nb5tr}_)QJetONR%YGcu!X-?b=0d`!qR``=^?{s +2%)18K2rlRlrl)`T23uTY+>PKwJm3B8AVz8;0=V;-QiBBB^L)twQ0cUvB2y9A~QY~QsoLf@{+!KR)>n +Mv|TUoO^rNBA&hS5<4NjZY(pEHDnmm&N +g)Ny6O>YbAWq@qw7_AoIME%lC}InU3;EDGsslMTpU?Vrla-D8L`^!((i%#tZtG|fr>3**qiF$q`WP-4 +CkDxS`lP9+(f`VahaNkn&>Ww*Q%Udxh0T0!jW559aQ-VIeCrfgVk7f*_Y!7$ +U@j;uAYG2ZiHTdcMU})ojT9p)!TdnO#fASgosvJAzI%JN`3wLyVT|X&h9yd=&Zh&9(UPK)f+_U^DK7&Tp8=TlrWLG!mDC21 +X5*pibS)o6EETd=}T?bxIYbdaTHXyluqV6IdG59Cy17Q^E`JB~I?#ghL!Wt2%Qd-wh#>6H~CY6hgT98 +rxP!#agMI$Ytny(n@y!@sHh+z#n)R(whneqrm@ +G@p$`(1DiEz6RIBhVd6)(&O$pJh|H{KDEX#HmSZy>t4T2^ej0W*ETi@8upJ3y +K51x)Ne#W|qkQ{DEfpL+aQ$Bu9SIJisLA4sILrh+}$!*FVG(IVX)y`96(1y^4Rvo)imLZ+33o~e}EA4 +sZY*2#M%+`fy0tBqrE +!dti3$Tm+*Dx +(xJ!!=cns2U9v>?5UUP!AQq|lxLEUjmNtN%Gr3^JozY?X^QOS4INI8=ROSIwJ?T7(ZP0>DvJ)ePstd1tke2Ue?y%wf&{Y}V93s%jIO@OU;CTe$Q38{!0K5=mK06M%$HUriU_^r!yf=WKq +>kM9G|wQj>r7b&M>DW+BsN5;HJBlUI{S)zH^yvfYo4^bu6aEDM+;o3VMNHzfKv<0X)rX?c)cgz7PJR^ +6V9MZ)cB)Eeg^9!MWM<702ul%vL4(BCnWoF11mC9SvNjNX;csWhFqEgYgm(^3IHuN(G)<9pQ|L +V_Fm+JYsN_=)5`hW`j4AF&Izj}D&%yLrx~6hi>%^(IIg`u;u{zt!qvsH>^ +2wx>c{;E6 +x|jy=W~e!4F(ky)uxp?7I7x8N1ZbI)sVedt@pb`jg4l1;(x|#;WY`|Ky)K3KR*6Afe?bTK%177 +B!WDJNbWG?2?yteOcNmkt}bDD$d&GOG@_bJwCi!X1sCd=Eh +N^e8;)b)Qa6tNa^NAmvy67Gu27rR93W`iBcN09|vTB_t(WUMGea_wq2oT0+#qbw3{0ka|XBY2Go)4%? +($O-V-V4QZ?KS7b$9*9lv15E=VwhxwhOHWL5*pP}ie2-7yq7G$EH>$7+YnEh4NHjJw?y4qIr5)I5q4feJ&nx~kGv9q8$<5;UrVc`dBExq_ +FxYrM(f;IKaQm0C{imQ@iPGL|+6I4x8(Xd07@slRaa27Rq}W(iNR*vx>U2QQdt>+aYOsJH +-nYaP_`8LtD8&56_Y|IHx?OR!Sl>_F`(2!<`Kej$?UYs;@4=bG+$DLP+tOVLK2FpxHk;TDTIxu4pDS5x(oxBr +YO%evg{C!h)z8yQdvxl5-F2Ke32qs~adz?ec6#2xH8!|yBI?uMLDN=oX_kS6dMwrcGf9S5cx$$>1Uqw +adtJLdwC|I_Vr>(b(F_3^8)|HAaD`cp#BL^W9Rn}=qm!YbHzgr5E$^D>f|JTBP +o^?Qh=N^4syLV}b4mrinG8+$gHSaD9W8SQy;VJM0ty2alygGy?=uHRF2;4RD)8&4phwDl{Ev +ZrQzz}Wj$CoCJl4p#53yfh?2n4XJWw2WxA~)b3V6c_QSqmssQJ>;Zh6cd6lERyPcWV_b=zgt&T^C9z6 +YD)&X*CSVP$Pw>n&YS}qGGSQduJn*5$!zX8!4@HRLp4|?B?0*)xYoR$(Vy(p3K=b>@${lX8+5V>C2aT +qp@+drMgVvqcKIOMes`8sL|z(c=eN-J)`>-ZlIK#5(?iCf|Kj?_TM!jOgMb`hF89vc*Y@p1|4Nl>hA=Wb-3Ew>J?CHrvr +@W=ix~m2!^n0j+kTOQ0s24~D5#4C2={RKa4!S6K<|r){IbD%ftRE4{&t}@bo-jf4o&)##?lt^QV@bP2 +s+W7~a0q8VLba%i{ozRQ1X)!k3~MIg;Qk7_du_R-*`=UTIllAW7>pPu0M4S+0le?3f_AxS*0=Gu%})P +{69YtbdmRg6HO`G^e4ITokj`&<3;Ur={zmFS@CxmpVTv(ujBik`- +|vLU%FsUAn60oxWnIpaLu@r>eY3#RCy3x()p(#uHXEsV*7Db3KbojMN3_YS6|@{V*ou2}7Jkj%VtkC% +zL3UC|P6f6A9SNqt~SL@4Yxz+vpeg +ZOzO>8M!$kR~6nW;l1M_7H%eXkyr*YvJ(PiDope^X%d}LnoDP;>~FT0o?*oFs*nKKVy?bBk_NAlYqVm +cp=osU(hO{wSwDjxlR$|`yirEALUB0;VqLG@E57AG~q@-YmNbFL}LgbL{k#{4KIIHR$dfFA_HoXxkgf>lEUg?J$W)J;M8#SA?%O8Q}msMUhvUZ={EK?S~Y`}!xD$lbIkA%syS-qR@4^qn +}2SS$nW#0P9&k_E*!vj}eInL!ZR@(k+4V>{YDh%$mwfI)Cy57g+Py;AcnyN4m#syCP39oEF4R}|OKi= +h@nf0`nA&@iNH-wk4rDFKx~E7X!ASL+9}888`TrdL!RkfvrV4L>Yg2Ax^lc6-*Kbz!^swvz9wESpDdL +`6GzO@)08s$<7;os726mP!Yk`N&&0MmQ=b$(Wadl1Hh@QQ&z7_D-chn+(~viqAoZJO2w%O9KQH00008 +07gYaRIdMFObMmD +E8yC+?)@}i33$#gH}uhV?7NTyYqXJz2gNR-T1NfB3hp?{YfQ={6f((Gby?;v_MuaY8q{o-}>m%lz4Mr +j5=vv{FOM9*HojIQD`D%X>;inA(>7mH0)Bv*OyHkpk8z{zD=M(|%!u97Lg=0>1&G|vHckykl%F`6#ov +W%`S)9GcjE|bzW2Cb9;>gRP@B~kLeO0qJ2mn=4;J?PjNIu;#c??>;FqJ&Y7(`=rf9({Zk{qs2Le>{vn +9Y#+Edwc0TQss~KBKUlrWJ!@uUnNxx0ANJPUa}|?et8gmJo+nrn-}>~k5}PG)Eq`*tT}!c7bVup@}J{ +98g~*^S9vsFXN>x2k}UG8C@vD1kW~uf%jX8H9_eMWfLSRSamj{CXGtY;k~`RSu&5tSw1 +coc~y=9>ZU)NRs$ZuES*;L4914v=@q>JJoLt@(zpkW+p=7hMh#PgMV!~CqTZP;>ohl7<*Pmx8b;scS; +9>gNwqEnAl>=tWiov`zF>6rr;BnJt>PkHCV-Dp4FtNIK|kQ-Xgs!W$79=pB2LRBI)Qn3Q51R6pYLBo@ +f)N&tQtqE1*Wlm?o+%-GQbV|+ZS!ptHi#lH*1hc0RD7LrQ7;)lIPKNZy9Hso~iavZUgBp>dlj@-VMz4 +#d?`!RY|y~0sMX6!Lj_z_oH}Pt$}8)5#Y@b76z=a3Ml0oLEpeAkq%!kk{H@}nU +2(*Hu~tF*d=IZk3&cGI{@F7g5vmM(f6ovP*VW(}12Sgm4BxT_*vrWGtkAXzNddyWYHDK2_L^*hfHXa@ +i5M_;8t>H5cOMC=;?svo>b7IXa_kqF;a2cCWLyo~y^8a<9SP>nykiqk5dEKF0+%1t(XSuvlhKNKaO=S +9A*(#)+&>%3MM##8|pdKG8!MPf&K8K>E+cx5|`V+X=dM0bhH7+i(ntV2YT|VVhz+%z|7H-gLM{<-j3oC%pkKA-6@!6WO3!oY?i#Y0KU(X$N3x>7SPItF8eHl +)de#<(=E^C)V|CrK?vWbh;j4syW~pEF8$1bbuaSR0Md+3|1JP0=`!(tGW(Fzcmnv8Xn3|r<5E8OdL0+ +0m6QMV`o;M9zg|55=H+)^!^5-s9--F3h<2S>|8)N%sm8EU%l%^(4lo{zK3eJv9VAXiQ7&gnoPhs~`5LBG0SilV +Y6=ET`Jv-+yD5a{`D}4&uh9H?W{czTobo#PBX&q%+*J^6C=0yvoaz#sTbcbTJx6=jY$1Wp%0>JUc%( +kgn3jBAUnP0;_{GQ^9^gfQiazR~DEv-_4E)^VSy~qx}s;5tNIj32$`cehKVt80C}y4BWB$yT-nuhG~q +e45SAXikMx)P&M5CV6ENJ%`}BJ!y#Z|=*@j?@_Pz;~`bHJ|Ce +g)y3KjcF75gb(tP@r61O%E;yYRRNNY81MnL>x`ihXCtSu(r~@YDbkUlCmVQiJ_vT2;CGa54q5yzMLfB>0~K +>w^Zmz)+l#>VB0MOT!u!$HQkHTl5xDk*o@}cKl_-6yIZzW2KOwEYgb}MOa}pM(p?yVS|88aA_7~P14m +LEM>>fn+mOEA*c=;B}4Z!?_Jv-fsi>xUJ6s3fg%Q6*D^!rM?xMArn+@~k3x46~nJAg2NTfWk$Q&SnYHFaXhPY}5qlD`G0Vx$ +U*#`PH-kIezo9&DlP6tjM30W6LtL@Md7;P1!W82ZdroWXOyeL$W-MI#yJzil^77S-?|(c|y +*-5meFj}VZ0#^N@>N_`sv+1XY?FhoZANz+?uq6@AOI-gkLw`CAiJVX0c2UwQ7X`_M?hHv7Mtqg5{-U$ +S?LaxdI!>Mro|4#cPDDwPF|hpX=ehuCB^JaB91f{7Uz0nX1?RzFd*5bm0{)8>KKh3!|2a{etR|Z`8hL +S1qvDaYTMR;KRh5Hz9}me?@8{CG4~n)JYa|F*j1bzp!Ea$3o-S!B@NpNTSSn)$K%t(qqF8sWz-wA0+V +v0(?{Qg5^B`0srkAfVIPf<(;{7=Lh4Uf0*b-dAa595Eb>XbK)qm*Pw|U~?JT((S1Yjzy8sNLLy-KL(X +fu)Icl66EY+|ZtGVwpNQYPLAitow6s$%TSuZrO!tXnXke98p7 +Z&LEEkX=!4BdVYYG_G*wpticjW2q!u~8^kRBEVpjR3n+J^C)MULuo53tlq23oT1X->v8T)IZJbhggiRk&#{HE>WNR4|| +(NWqu+OmG3al@3YMutjMH3hc#tvrT5BmTi{zFBA>xbM-mn!hei-n8D;SZL)zQG}ZVSjYfgy-mE8mY%) +M^4Zu5Wm0g+-jEH;mZ4%GxoeB5;dnCX<))?HTUkLP`wsrkot&q7ocVN?GA6bUNu&eNBjhhOXm2wnZD% +!BA0I8pLxu^%Mz#i?a!K&)NI~{hr1}P6+Jk&X(_DshOAEQnZX^{}#mCdw)B|vP7DvG3B6zA +y*&Wg!xiTY3Dusw9aD)y#V5pnVZE{qmL85;JEi*%EB~y4K?nFitJNc9@?nG>cXE(ZAP^=X~k}`B-8{3h70z} +eH(WKhtc2$$hbx=1oK!DF*xAAf=bvw1wG}fqi)+KAM1IqInNU6b+#AOggs`Q{%OlY(k;%`{7lsevr(b +(ivbkN!G=yLR*Jk9#cc;(szu%V$3cJNDTakkNW)8iClxT7Z55y_4&XBVW^=Jd0U`dnQ^@^refK1mxNSxfm)#jdMAzYBI(|ldB +Q^zu0ro3B&PFEre^*ucBeCb&19J1KbSJyAB +YM!w$-)aw|_Vo&Bx4ROY}x#e$hMQ)t*JCJ)o8zS}@RqAkt+#Y?iBc3^29Lp+s+t|M%#eX1HSzsW1c+RK&iiP_qZKA=GGAQ>)N_ +aSwHYii($c9xG^cVT_ +m%MTu$rF +s{&eZ7WhlN8wwM$Y>>!G)O$-Za!M6;jKt2GVt4L*cvIXyY6tM#xFV}f=ZX5RH0L=eZdR>kzRyXl}kea +!x+e@5@F2FV&wMe^cBUR>a!puskuvH0ETyRh5rC5i=M$3n;q^mK2}^(U0%BcHcBrG*?E6%qokJmLyAR +QFmV7qPJz)fjlTb{11E!ED}zZMF2CfHH)P!@62q(hKxK%d?7jPSJzrtOHfV2ujgLjNGo>jOI%7pQFGM +Pte(ET5-1<0KXS{UGjcPQa67ixeyi&fJi3s^li9Z+%QGEga)rcSE^Brp2+8Ukhqbo1Bh%S^5E?BpMz3 +iF}JUN(Qw0?peJ7DVA@ATEP_6|eB;DMJo0S^n(KYWY)VxS}u85dA^;u4t~uCa6X$<{b+o9G51%0vX{n +O48WRI4YfgTKwcP9uhrbNnB=BX!AndglH +w_B|5Nck-97;=zO&@j^8#EpByZKBZG$3Mw +C)tJ@7HY_fMt?zwQ$Quz9Z?@zuT|NCDrPhNcc@(udio%Wu`iv`Ei)T62VPtV3ssqYjhRSU2Rhhf#A{V +Ognb%i%*hUpDCM2Z~a`G=+@{PjaZGtkmMKfWrg-JBW9NUE`ph8pAal!8v^HWq3ylnZ(LkxiI#O) +1$|SXXN#O1OsY2275rSrBwv08Cy5j?~8z^sHZ5V=W)QAaYC3`p=Z#2qNxcTE%rd(wy*J2DZ0L~3=cbx +rLpk^5PV;Ci2^joqqoVX><JYLKoYqeuCPUY5;Zu*4W=#ne$oFaA +*#Numx|nqkcHsp+<(0P-_FR^;!r3pYbr=Ck!8QH5Qp0$#?&TV7v^lLf3|w0=hMY}UtbPEatt(u)x0Xs +UP+=#Ckr;NyWq=}k*~i!+>Ao2mmQV%_XC`iYEEal!}#QE}P;5(*#3D +mu6uXGxg|gs_3%1e(*iIHDa%%5RVOGGmjrZr;DDG#2Nb>MTVDp!aD%|Kho4OI2q^MslD-@@SG)(HfNI +qFQ4tFfjzR)solnB$>u^ghU=)(ITF{6%cb7O2;H@&lbXgc0>vKp+}Gh(Z4yY9>ZBn?Mg^?=CoQXj(SD +j0Z0kyWL+gCo;-O_j3+=IfNkf(UtsGg@9D|98jN5EF$cl(1fts5sgothBD>y(yOa4#BRCbyj +7;WS2!(39AUBsSSWOS%d8nhhFQXbtE&Nw1e_o3s>IwJD8K>>EXdm^ewU|ek+As5-j<8>9f>`d-(r@|= +g<-1>~;|GZc&nlO*C7t7UZ%t)7@DtI1*+FU7g`N%PdR9D$NrY%o-jv4IF}V?wyoI2DCIaUqijIH*$n_eYG?W*`c{`w=xbaN!V)=O}^#IlX55)$k +h6rHOiQs_^xHNxya@L9LPqsU;x5UPq$ +6_CWH^e>fViiKJ@w#zesvY)|UBMzVDEIum%L#wV?wLw};U!HDmJ`FK!lxZ}Uohho3*d9(gtdabe=0m5 +88^I(Tkk!aHYb1{&kKr+HT&H0dz>y+vL4L@097dz;uQMvsW!W;$uo4@Gz8H*x1JcJdg3;qT=dWrlr`o +X->EZMuBwfP>1BBVqp;vg1f^Yn#0QB_9wO6hhJ%Y2+Z0$>}$?Ko#Op?|*oOr+|uZoG=RpH4-~b&uVQo2MebZp&H(3y3h@Nyt +y{4jfjQjI%dhkLtSf*B}QoQrAoj&CXPZ&kwWPJvqYIZQ%xwo|A8{8cwMyiWBI}SP +KwZQD?(Sli}fNd3{5r%%{M0TYB#Vu5g|^cnq~)jm2N(;DR`Gg?BTyYP2?Z}5 +dlIy*C&6_<^fquINYHPp)?sgZ&P*}QKs$i#iR=!mMVuO!#QhpW-yJ0yy>$~tzmAjo0y&7j1r?qck2#S +z9HJ00j83w%NF)VxUernNAbJV%Ci+1RRi`vhr%-xWf+%vORYOfqAR}s{uWPXIvqhP+c*oizYpGi+M1P~amuWPDif!-c{*xqSF9>$Ye)0}UK~9?6}7&Bmd{*{ZtJM;VXpsYDiejy +FRyye3VWkwr=it&n9>mhnZ>9GnHhE)5WH;&@HET;a3Tds}`wGiUt?u0%QS9puX(X;>;!a!aFK! +_bVvk2FJvb}fUFW^`zXv|Q@EEy(fkL*dXHZX@@>ZC$JZANlQ#{)H}N;14KFq$FMGe%OzELTj4`q$k5n*pkL+o?x?K#0Mipft^v%4@xHZceY +c^EYP=M5G!0MQyt4X)&#=%%k;erC(yPCAzhybG9gvUD&9B$W`%(i!&yMr41(&s5+_wHK^~~Q_0#F@b2 +|Yn9$=m+w><=EN50)+m36)c>^@pw+UR5fsW>6D7ya<8mrwwkWfPf$M~`zie9;g!Qy9oK#ORoZlMkwma +(O}aYJ!^^`AER>UZ|j-)$gN(iezcY8QM~R&h?)OjB3gQN8N6uJ)tPeG8DU=?lzuIn?@nAk&@}kt&+y* +<*EhqK4HKeKU#~DmmAvlUcACjrCYA>6W^ +tuq(URrCuQZ&^gfQ1Vj;mVEbFrt~H~%Swh24w+U@IB&<6cXfdi?q2#x2Rn#x-HtFxb|4uke4!~nZVh+ +Bma$qd9evmVHnT|nA)>2YuQUWpc8wym}bb}fuNeON*9U(81mirTF*b#Le +_p77-HJr}29*iOXlE(*M3J4zKTk6x#ZXWp~>^)R{sq+e5(D(u_f#^d5VY +kaDY#Hf5RYA*UA-wxpfq%R0y>%s5L#UmUpx4#c!l}ZL{{XFDl4o(6ey#0Y)J<5FBA(ru)o58PlG7*DR +pu?w4wUZ+x<{>Xm{!y;tX%cpFBCSPbRY1(EuWVCLKiH+!zThQ&9FV|m;PijU9;>}Y`Ra$6GZ+;lO#OB +v|YFD$+ +i58ne=`OmNuZiF2=SdD;sEe4_3BYSlMi1k^8i=xlnhovcZl((hb7UtA`XPGy!=&^)97%Hnqu*u_G~y; +hSD82mj3&12tN9H3qtS0SGX#9r1psmO|<87JakbXhxt@Q6&6|y!C`rX(N+jK#Fu2zjb=lePP%`bY`!2 +OBZ6xB?pI0243cXiN`x>Dkm*C_vYS51X5fJcoLR9p9+0U=s|8CH4kXwRiI5N4BG9b5tc^l)eMBh{@gK +}alNH?<&!fDE^xZb?=imWtRSqIn-Z}X%~1=y8rn*d`dOp#mw>n$)Z6IXN}x6~v@Ft3{H9HvI9{jXV{? +4ebqq;L^Go=6N?M3W%Lq`X}G%G5?*Ogr2isJdmzsRUtzpr1%6Lz+s2*TDlsdR|i`uI|fiBjoUzv(E<>1&tBfTmEn!=r{{iuG4C +s4zwuvr{BrI}}`Y-}+VNA+*nF~7)x3ad{kC??fgW}z^ks6xtPcJ{XA6f?=v=%~Wn#5Lu*v7p7m;}&fQ +}lQo#rf61d;l-I9X#xAISK<~TeM>E#u%T;lN1wUkOhk}c!%w3!y--KtlYrlpg#Y^ymmT{K05a7Ww*2P +Um%8(t-Ty%`+;LA6+8GZqOi=)1fY%-1Hl5`c`YxvWdF$qr+yc`=M_r(>CcYbb0(ISJS-1cS +UyM=mK}1ibj-l=Yvy0E8C8GfG%Q+urU~zqh9#Kmm+u3U4h9XWe%n$8YW13Ek+PcVEKYi!Xm49kw5!&U<`P3jO(0A;TGT2YsuLUi{v=-~_=3(F>ak8SkLDii=t4W~50)f{COUhTejKvit&XA`$MYxrH5I1dy)07(KOGw}7;S5cOi?{k +l+rOV+QO|vyZm~z%2$0+(X*j)WFnNzV3oSoFa2-DXfnuqStxsFfo3er7LyYADkN9$&U?!|6^G4&?szvkh^MRkaEG%qPdHAzbMU +dObHpqAs~qa1EoQ$#bQ(1Q@QFGOncf4i=^ydCj|#X}j~G>cr6dZ*&#)C)yTV-4$hJ(W(@-&6zF{k +BOxZq5{xm|tWul`SM%eJoyv<2@b>y<*-jm#Yx$0R_?9sR$J|v=@i+3ZnH-A9wwq3WFpM&@!_vQcgLih +~@Gjrqw#|3<)s1>25;W}fUU+$ZGy(~AFMl^C$dMdJ=tpUsA +|HVfhm-k#+Yob175H*%{x|y0~dAdQ`wxzG{0L1||85{#{H%00N*BtOb4G{;{D&JXhrcbvlK2WG6$ +q0m5({PUurVK=PH($|n6R8%AOzUHj;lLv%{J7q|*Ei0~{3;u}1v0}ww)y?Kb;qQ!bI`5_Ro~0w)K+wS*_J;bBeLGu#sHp1D1UU-n8xLAtjjHP2zlSxVIS&%1pVJ6LlSb{4H^J=*meLo?}AQ2#!AZY_^KyFGz +u00-v`sIDuh-p{1!az;KK4=M$cInIjQgMMQMJmVQjBvRr7Xq!Egn~)O<}UDmE%BauT-6GIWC#6!<^VN +dHV74XFK>SUm?TN6#v21f`7-r|ez4KoOqKA2@pkAx)e+nBh!mb1#+TOB>UM&jRUyBzeC|rfQp{#KPjT +d$Zd?JCrgdj;2Y0x7S4~4>8XAkS&|UXyLc14hYYusW}qGj4>!BVzt<2ngkt#gS7x*zCS`kc9(3B%u%B;@ctOOvp +I&o5X9r&JT1zqN4hJiGff5Lk(crSqXPkT3=~gMkAe9?5eRJus=*pZV;&)0cHPoGH$$<^zV%s^VN`++0 +x}}r`V)h&rOX6kh2g0~?Zy#10YVN@4}nFzKZb9JB>KZ>D)kL<9bqtO5C9?${-$Rcpxt;FXF_HX*Q^RP +Ko)e(!Np%64fWkeFm5^#FrX9w8g>NwF((ICRiBPNC47I3_dx3!c*KaOV)k6*5%PR?oA~Tw&=q-paqU7 +~V3FxOrO*PEWc?Dx23tq)c3EB3Tr6u~**j(RBP!rRwWZwW>SX4-ocJGO2s=l1+i10(EYfN8?Dfkb>-< +SFQ~tCFh8>&Kkug3%oluEu2goWBZA@-s(>Y2zE^beEU+^V+k3Sy$EpXAE(lXr|=K2nq)_f?FL^x;XKP +Z-oj(O-Z!t0G#v5AsPIB|*CM4nZo9Zm5d&d$XtP~t3^9@4*0Nzgv)QJxdL!7x?Po0aAQy~?WHyiri96 +Dgh%0dv(!f*Va4Ez-9Movjy3^m=9=Bq}oW_9xT`DNkKVZI-xo#-;ZX->kD)QY<#~6FLTSn`SeajxDX! +6fxcIP~O;@*UzZA;!d(e;M)PS?yQxH| +N~_fZIVf4*P$=dugq+EEdW6Rbe_;AYrhx}Wb~+idGpH6GYRBK5vgPNQ1?XX|OwI)Z$~R~C;{yumPVZ> +<^7F!K9PIfrVUaUj%smHccMM<6!6F0H~JUK1EQ<6IzN0iZz8Hd$kfYXewK`eb|rOV9< +kx{|hgG@*UTxF(q|q$}5 +_IiH?8CPN_mjeH^{4dW2HWsDQyosNkKO(VX*Mya1sb=YlW3H2oO~NZ%!tSWQTA(AW6_1T~O6X1-`_Da +U?08RFwZ`uFJ>{rUI|7feGDRl*sLvzymsmbzM8+x`tOPYh@tz;o`?S^qDz9X*G?vP%{r(y@@{Plge(( +Bil9J?JS*im>&tpcczW7w8Yp!WD64dPtOO)d3KO@GS;V$@=)<^yF-ZPEd_{N6h1PP^3BNA5H#hZN9sK +BuQbHTxYHVKDnd)U*)bsJo}JB&p)E49h{6Uo+*$?rM1-r*ulA&tuZKX#TY^-7e4SaMYVXlebxn<732q +gN>OF3cQgm=^HI$p??u-cnKfW@H_{)Q-rWYRl+1B?s_@~_SJI%y +b%66^U7IQVP!rrjj}Rh@q~`8d*~xc}8<<&a81boor +XAcC`BeN;`L|i3D3ARsaL{02!U>XyO(}dyoH-8`ViRWt&*v3VkWj&)sBhk5gG!300@-XK1_jX37aImg +S8t=y8UD>@yruHtY_tH5Tf}sS`fOIxHiY)NQ`mpdp-HaQc)h5Uy*a_iV3Y|cln>9MlS*A-H(eJc5dLC +=hLJ^#t%8_j;PjlWne80JJbNd-sK3rgdg^(|MB__u;K`LnqFlxs=6bxihb+Ml)mb`f+Z3XN15;*^!1) +eJU`z#C;;^RuQS=qS(9ZSFQdb=%!-g=TP)4)FMB;mg2*k7yYsAN9eAQLrcoAiMOM5I%6;LEX-6Ix4td +rGA?JpFWEe|HJAw4qMKHVHnBFB$1WQp#6@#5dles~c*eoQ?iOH!JXs-PDGdt~uaAisrtjYA%dcq6COb*#MLG$rQe#*$-X0PlUu!CUG&ngjofd6C0$qOI9;T8^|KSY`&&r%I~bVG}`MBR+a?DLeSVf*Lz~PDXvBLvhd@&EVW*Aga$Ea1@ +DJkWbNYtWj@T;SL3w7n|_Lip;giOzm-U{l#)~_1E1;9d;D9GRPAv_3ZlXQCNr|6uupDnscnF{TXhYYe +TFgl9uBcDOu#M6xvow3ehn>Ep%(%SXCP9yaDR`bR?0b`ie3$!H)hJeZq!&G|__eP*f%DyFENywr`SbC +Z6vpQ~m2AW!=~uU3{vnzq3@_6LD^~^Yc;k3~*nu^+D|{X|+-C*sXtPNiuoAipfYACDnAq0hCC%Iq#Du +6D@$HD7K`;UF#~*@M6q&vMTa-DROQ9Y(wu8%yCN=?=U7tn%0A6BJHOp(g4)spI}&wxAq5(5hXGU&q+?hOfS884K}6=wGYGO +_Af0L}9rs#7Q5rC&* +bsn`OcOsExqRlw84270s&d*6^Kx-*`#G2SGX>N9QBr)TG#39`|7j!gqNXc?_2P+H)AuIin%!=0H#a;G +%yU-o>xXyu`LhK?S)p97~kO)55P9Ul=DtuVGy}ki{v&PMBc3?cB!ab+<`VjfE+7d#F1YqfZl>uCuFKL +dO#&7pHJGM~19CAGPCC!!22!2au%P=|J+L(zSVvsu;GpW%X4VqpyqB +_yJ#F|$|JK4vzM_oH%he*C +f|3M!4c{EdX&j4W5pT%rl=VKAw0Gc&#$ih+oPlnLp~#HIa$Z#T16F$%X$-!W^f!QtA)6ipnPt4bMk=A +PtGnVwD8Z{u3@f*d%I50)d`Gz?I9?ZMh&7h2h&8?Q5Esq~4l3ZbBfZdRUO21EsO}@vHAnN#t%}q!`(f +`4k$22d#a+Go!ENKiyKQ)m7{ajL?vSAzF@)RCgD=K|FUJ2jz8D8G5fA!sx41jgK^_#wcr)#MXHRKhhX +-h;7ms5QYZA)Jb(JW)CLdNn{gH4ThlQfj36*ZTXY3n_zHfjdKGU)F=E*l#EI$E!@_RP`51&YguN +1@C`r$337L*CTb^Vi~=5_?rIiS({cJom +lGj(>kDra11Xv!(WoEnXVjmH}rX(e=~szhz$AnH3rptiYNg#ExK?SyH3Ah|Zx)nRt +E|#$&3gqXG#G2-9PoZc%ZU91CUJ>bxk!tgr&G1V(DpvrFd30_Nol+2L?DqcHAt}ped?hBVEEN(iMom* +wZ8s22v?ysczo=qg*NY*=t&N6=pR$36oRDtRHPOk7J_5e1Xe!7{z?%1)(#>JPV>Ff(=%LKq96Fc8SXu +-oxVem6g@ys0Zp~V4?AsXxnlVy5* +|=@0PZFD5Td5;_U@Wu|PN__hr#g1o)VDFr4sQ%5+{P@<3G4Mo&TN_mKN^jIpXT{OC?TYprWtF-lyikO +r)blx}u;;I=XQ=DP-0(fXwUbVbLFCVnHnVXyWFe(Yl#g?;*4q%etWuS;T`ZOv*q%csY8q_>9 +8UCFTF6QIt9PYcmDd~QR_4WHYR_%^t_0$|1ljvo|Z#v@PZZ*yXA$Zc`AF;xTZHn*W$ONX`0RrDAoQ?r +0b^WlDeLAQB|`x2ZnHOCu2aLrx0W_$e0t!?FYOuwY9d|RslTlxLccbF#=l?#$}^A>=tWD*zr_3&v>Zg +P||Ejzh}DI-5QkKKZ-!v%`+3zH7~vpQ3Gxm>Pk=XAM8`W{IwH@1CVXUd;Wow=)tnC7b#L!LSlANfCS^ +JMcY&5~p#Dk2kE=G&^PY%CISeLG^8#VEIW6_{Wv)gu(X=9@8UMWWZBR+G^{9b`y%AEy)Yt_)|g8BnRS +mRxVX2-+^ehiL +xzNnr2c3#s;NEEP)o5BqtYClLJyk1&qMCD?=Bb6v9Ep)Z8ir=U_g>4SP1`_YZY~_3y<18rd6^^`$YSIZ&lF=|x|BmFwS0?^_OjGLUv!m`=>WUn=M>{%g*uHxJ +OIzssj@NQgM^4@pm@(mzFexD{%cCu8C|9qSeQa^3^?sO&*w<$?xx)BC4uo}JOFrp{yfickImr!^K+}% +p}Px>rG6X@byR21&qqKvQtII4NWHYM%#BMFX5-{>f_@Z_^+ily>kFD~UNpN#@lpwMGZP(t;G`|_z+K# +@f#C?w;m8P2UJVc}yK?*=JI&#_uf>{2W+y7A)lV^|@piLVw~?S){_$)!UgQ_BsxSKUBP)o%Msp?IN8& +!J+0c5u-ZL7=<1(HnwwpvcGmQTt;Ot6ag6*J|4+wjcW`G!W&pJ|Dwsq4wGK{(T9xL742r=HD_pYt~-A +!~A>)g4$y6<0P*Y&!4AZ~Bb!1@RGIgpMVE!UFp;)(Co^V>0#21F@5FEE{ +mHf9%mgwp*b%QlG32}i5QDZv8b3=2r9H<)3)pEOFNsZO+?g%*p#03u1#%fvgXuFo5 +H6sVNf<_aO4_3brk^ +=mE3HEB&}!?4Q9{R}C3)Pgb<)P&6(o@yB;Ncjd5dLa)JWO*(zNmVo^kpU*pTavYxt?Jx=>Yno*{ex)g +r#&$^V-W1#DIpSJXMM4)Tg(IR8UjEK(4EEdabf*0!yEX|~%-IH+^mmRr{V8VxIfLhR0}V(1yI>(%Y+%ejb+|Dy|&@LqP`#W>kMabbJnXdyE|rERFDU|GcfF)n)G|)Wlf>xa#6Jmm7~XM7_U}r +$63`d+TxF+Jc4EQidb9gv!g4j>8dc9Ewi;Noxj@-()2pt#;BfAGcqw1QY1yfc!fbLof&SZ +P>|bU(+7vyES6l(h7hD_dXPHW7tm7LS;ybCOdg!X`MI=jZ2ZpXnk~&%jfEM}%#&Zh$U+xUV28^}^Lho +Dqt+9rxVXMGR0rM0{TnBH`wFSshf-#&95_k=TqBzAZFtn1ytP&WV4y|cht!*w0KB`nm +Qm@dQ%CN>0n1!uqN*-(aIM8s~?rs6_(I{bixxd3Z0*uDL+4_H7<>;NJS>uxkwErt-&^f3g04(NyX6BZ +kb~Sa%77|oRypkUl2krQ;lgGbSGy6W4M&GNWPn|+4oZT7=+D3gbQQ2ZScQR#MX)FDDSJ?eXqn2epT-) +3o#hF?^D$72nwvO+Taa%XJuMzzVhvQpyiIV+~`sz8oQ-um4Gn1C+8|T=X-6vZS}Hh+}iXUFmj +xE+R=+%#S!B2GADF8d|1U~+q|p1i(%DWL3jR)sY*fJ07j9eKd%!L*3{-l! +DpI);bod}9$AcdDgeD@V$qgi?m^(prRL?p-YrL675N3sQx9WSW*9)8UyaaZWDU$yU7uz;N!LVUa3l09 +h8=73UwM)YE6?1TWngg@p4CbPc3({!#Q&xFPNs1{ig~=LO8?wmMZq +el)N!DD4C4XC83#jNtP=242(r~NlnkKp#}qw69Sl~@FaJQJDc6=6qz7UK@XJv2#KO}F4>a=k0V*&O*k +Rft4JGDVH1OH)81sD{7CnGLv!ecASkd(77KMRQXM28#l76PcyPdRUNf_|7(=_(}=5=yFkbCe|n7%>psOu8z +Px6e8we;-a*r2ID`JoAJ{aS7`(EqR3@i(>CJ7zAH6W+2(You5-2G9Rm*vACPmQKk_b&<>~eDNS(JjfRh^2LLE@yC=eY)_m +M;@+4|E#uy>JxZrqsmL6337yp(f!PU>K~Z+HZH6HHQNJ&UEkKEKJeM!6^Q3B|IbS&QKY$i;h$90|n;n +TS|r0y3Vd1CAI(oaPdYSx~3&({S77K;R_XK!aSm$G^I#*3w#+aFv22G +t=*{@iF-$L=gO&Q9$v0I?(U?DrX@Bi-&`uavhG>2ljC%G_&G?|1a*m^{E8nv(A03>5fFxNZwe4TY}JoQ&|hyn3mVD%bCA+6AFbK#t}d$J}G{B!rki3{cn->$*z>+$8qj0H}R6 +Sp04m1ODo6em{tQO0rpwf-%LqOjjJh;#=V1oz(4wVcym58gx33bt5@&{M;;`s!%$`XX_yc4mVe&f?Qm +^gC^9sKpDCm(G;)&RrQkGHK!~+3G5HfT@``uq2z}h1KHx*iyy?>4%P3QEu`k2Qqb$r1ryZ1-^pc>kAd +!sG$~C-Ll*(o^9Z&F$pH6sW5{`%t~k>!p%tYES +}Yuub{{M4le;Ki5gfRP#8FiP`QzU>`NA}#R(HeVOP{-7kD;5T7P>HX@KH3`R0(I^2-U$)NV#mtTINXa +yQVO$*%Jx9JDU>!;8_1KUbUT>!##S`cIFPIO(hpG;kYRZL!PHUsF*qJc&dL}(Mms|*C0>UONfU%d!@c +GyJASX`sKY-gZ(kgP7ia7lj<{*4NWZ^lUN=XC0fiuD}9@6)MXQS6)!kP2F?5obI40ms*YRmxgJc)bTNq +@cG;*w8LBx34UIT_*!+e=_rID}ovxS4XHGY#}A26^fRYvAWsCf?sF_3Y}urZN0` +i`%B +T)>3S4}jkljXweDoiy?Z#X`i0M{dZ*VnXNFw1om_>laQYpbTiLdLZ|7E?*xPq`YO^`+LGbzm30@AVNL +~BGP|JhB)s;kQa}<({`~J4;Nzl%OilYAyP)h>@6aWAK2mnS!LsXS%Il20b +}mScb0+3O0FnAw8$hLPmFY#7T-#QpoY(7n3JItq1y7Hp)%GRIk3FEqkio*R1X=MwXpj2&jK~+UFI*5l +3{_NZb=O`hX|WlrDyH1Sl$3qW^~1RwFS5a7!4YubQJpanH6@9ghr*b+~IiHiP;Q?r*#wxIwUSqO4N=P +9*pRP)h>@6aWAK2mnS!LsXnloemHI007Ye001Na003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7LUukY> +bYEXCaCvQyL2Cjr5QXpaD~9!=2g54#A`~jxQo)u&d+05M>==XD%rYBm{rAmwcfo_FOy2t*Z)Sp@AKUN +wix0Hn<|^JD(--}w6)wxg13rtlxHr;rgb7S~c<(L6mgc*PV)6%1vch#^?2+b6RRR=6vFUyrj!8J6uN# +(xyO>B0#*zYfGbciykW72U#3OPLuF-Z`J7h0D9r>IvaC8_=O>HisR&^zywK->7w8lp)Zg%Y~s*Ml5L) +m%q9EI&kvAE9uA!)PJ1EpFl)uJo_{x?t;F-=1nm9KA_2CN2I$3r4z8U(0M`g=2gr>eq_s>`B2|( +~ntpwkFIjHVMi+^@v$MN1)Qs%!HV=zWyoI&wpA~OT<^aFUlH6Rs|3GdPugI1uEk!a*W*)rd6$lNBuQd +q6j~vvJta?_RU~yAiCkgL*sSIgl({Rxw$x+FU^t>t$gYY0(Xez8(tYl@m7(4x97%oA?)Srm}+{|Wu#rHX6R6lI~zn$Qp1sGFhfs+5Lv!V2tJ;sz}yxdq +0K_N*xY`+|C~F>iHX`aE~ALW-Y8(*7az~^DG{sd7!P%MXy1UL8not8#O6`U@--PV2eHp6QkKt&lZAp| +jV=#rfI04^IBWTDP~}bv44hz4TpM1wv!n4d+VEH@&QNmSCltM>!l*w6Z87^%NWBaTX-WIuhmJX^-tq^TrrU$%k_usd~NMh78L07zpX+G^AXxu +Aw594%?payQ~e>)Tcah%M46k*yq@hA2)vhU=R>k#(f#>M&Zf8;d{d>7vzE*X +f?cm?4@6aWAK2mnS!LsXOLOuzpH005~I001KZ +003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7NWMOc0WpXZXd9_&GZ`(EyfA?QO*cc`kuHd%YO8`G)iTeS +xLD0D9-UM1Y$3$dNBdIvXB`q(ptuN%t@TK_v2cyu07;jz`bf-R^SasVt0=c@C-(x*{X4{P2R^uD^b{yjkCDlCSIQP +hZzpo8)eDx%qatzH5}wl4kw2NR8D|Pwp@*N5#vsyG5RFdHO&R`|hSDlS!I$t$W+owniPh=NA)(k0>5_ +E;4RJai1K(>}96eiv2yk{kEAd*!1>tbM=v4uGgQ}oAvaciCvb#jwOjGgh`Ufj?kka-!1%?b!K%V3mA+ +gVEDaWZB*5r@qtRL{ey)Xlt4p&fErBfp;AH{k%o5S+Z-CN2J^4Dy4Ri0R}V+~QOCvZSz$b*KpYp=(|P +P8;FMV<^IkM+L{}}C(VU4LtAW;xjAD>$a6|pY-Zxa>-vj!)ZldUTOez*lKdcea`6Lwa9mjl7Ct5pzft +C)4JTRc;{VJfcB}d=nMUM)d_eB@#_SLJIw*=IfrIFU3{Tl`bV#DOz|0RsdwA$_W*5&@AuCIYh(w`}Me0q +1HJe~4;Q0O{Q+-4mU!D&L%?G%VYi9u|MQ+EcuJvk6*dN?r23hS2(zA8lQON;Sd9Wxslpk#twi3+Mtyp +;6AMPAHF1@S>QN^>=$SE`NFNvyfLV50$at1vI`YgO2s?&lSIH8IYWg-e(XU10s>Cu2(I|+r$OMs#=Se +NdnS|sL})o^m4U<*huR0`$lXzRz&jz&+c +4L21YXDjw@`P!Mw% +SLgG?Vu4X~{d8(M)T6XnkrYI-^ev0_wt$Eq#D9I2a8k95SC+E8Fm@QA@}%Mk&^cwl)cwHB1RZIO`(X_ +QI?QV=Fimn$Oy1{M=LvfD)tvb#J=Ep3j$KF +!|(zXkmhfR3ajA-mz$43{@T6|~d@LHbV#BM|@5X=~_TN0Ta$X0rubsa-vf8L0{*mh!r@8>}eDR>Ft|K +5e3>%RkC!VE89&BaLX?OE-Alz?vM*NOAEf3k55{+QwVEnUX)p$~@6aWAK +2mnS!LsVnKG^=(2005N(001EX003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PVPj}zE^v9BkwI$$F%X6 +C`4xj+6m+pdFG3GiEeIk)J@h7NcGjJmO_n6vx`_Y1$*y&^hhohoB=hFY%a=C1uBLDO7m_&9d1+{yx;5 +_I2!?})N0=EBu;9jO#oDZ0ix(tNS?teaRE`otGlFr>MT-4lG+?aNYO!^SAi@>s_YV{f#;Z9b+5ly_#4 +I$bZLP2o1a*uFFQfyqz`>;kdCV+N5J>ei%(N*XCgDgcZpx?{k{F$xq`}QwYvW*{#f~v1B)1lxxy4DC( +y4QFM~s1Aej04ibu7xH2Rkf%0Zz+svItA<=0906o*AP}r`t5!%jO<@a#>&xaG#Sw`?S;w|LYi|M2Gh$ +5>nf`{h~AX5Y8~Bo?i{)jOCKYWkPTh!*jdr8&FFF1QY-O00;m^MMG +4kHL1E!0RR9B0{{Rb0001RX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eV{dJ6VRSBVd7Y9?Pr^VDhVT6qlW +?X%j299QMlp~OLy&{FX4wvQq}^R-rwISv0g6;3M(ttKosVbUdD{*=PVb(&_f+Do4_l_^Lgu)U0rYzpS +1@FK(IzTO +!((Q8;-AP)h>@6aWAK2mnS!LsZ(*UQIC(000R+001Tc003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PZ +*FvQZ)|L3axQRry<2;4+eQ-qU!P)+MqnzHXvIl=IRkDlbsWIBvx +E?-uX!wE#E2I&B7!NYM!KwsFx*doyH-jOaA*rjw+KfSl$DPq6*B)j8 +}EU>x!D0=OLq)z-7)7p4`*7NyHU_AVOC4IDB!A57bLWt0YX5-_3w4{h*pmCdd`7$eCs@*iimnJoA^!J +k02FIh{;?{&WdLDjGyZR)S{y%KO##Z+<;J`u^bdo9XHFd;jPNe&f&QQ}}iBtN7;s8^5Y&2Y!J6dO+{v +#it+N{B-ft_43oj+sjWE=hw@t>o?awUtL_mI{wSWiy3*jcnu>bF~SIe>YW8mkh?hc7iPA(N>HJnvp#HTsY{IrhoyJ7iO-#V_^MVJ48Sw?>zFa1G!k0_m$ +coW)J(Kg!ekyXRzAq^cH|*@Xs^N(-xJnISJmfW7Mnz1ScqGWF&1$O3h|e1P^{2RHW!sG4L_$;WQSqo} +vfKrbuztD2nytYo>jy}n@d~9Wmv*>H>C$Ed3D`e@gnztP%pgp?MB`oHU&f4)*x!ZfG73f(HzKa9G%u> +mk5V=xjd?3w`~29SN2 +cAa;uDza9eK^*19C1LBL6ID6WRdKW?<>I_Tr`5H +3zc9d9N%%z*cAQ>NfiNP?&!M2_r#;Y)AV20TfLkn=ld9s$P$4?B-YR2aky$7pDwDQF0vRXH*;T#Tr@v7FFkKMb-V_4ibiRzgy9%gGe(Orq +**;+078NA%$vFqNrftVCgQ-P^jiZ3H?W~3uj!-})G97AphH8hcLtk(F?EJFJ3Nz9Zx*+DNtZCMcHKSj +T{#oM1jxidqV20U=IgC9mx}yA{y}#aRaI17!V;ARFk9UeBw`Y*VJ5!UzP%Dc=(#2MtMaTVb086-W7kdXh!ncIUg&~uj}HYr^Ode;tJhCV5xasy-=GHbeGh^%%cU@jUTx<+pc+X1)+#K`ppYK)>A^BBU(8CiVpwqW*B5QQI +$FWTAx(R2mgXIOIGqdG-r!ZNIs@Kjb8*K +msaTj)=r~vY-&`l$-vmNnF#V%}D3??7-2AeQ-U{Qby?bP~7_9!Y|n4;n& +cx9CpHrewuL7AW-pqzolipn5@)-Q9-Y6lNXDCwI9me9UMMsy{W147!tfm$5EV9jcPpngJ$jwI8-wib| +%j{*&3!(xh2Vx$A-8db(N*pllcCQl|1+{&N{G-~v^^Zi7_x>$5Gz~ixF1DnHIMp)_8oi-hIUD#!>?cx +R+({12?Pcv1D$Rq|!e&}s_Dwv}u$`bJu1gTzhki3V?jE|DK{U_)avyPAgkjHtmCOBG|8LcR%_uvZC= +8)L+nQ6_7*PG0@yYIfz$&J+Ktp%>5x~jmAG5Y}#$b&xQKU{1s2oHc2?_5qJI8FAAAkg9jK)?wm_lB$k +Jgz^y{cuXIA;^hFCukW`Y@LY?8W=*zRa9Vg${`e_DXKPfq7{BXjjL{LnE1)yRGt~`X=Nd_qd$FPDpqEJDrL&of)hG{7#46NPoUlHsRZa2PIxg5uBeRw +SfYpb#(rxKRslr<^AJXxm6nxgiB`l6exQLqXn0n6bg3mu3_H2Rn84`MFGf$QGAdr%`SY&PO0?=%HsC< +x@F<|?!5t}|_AYpzTSQ*EecgFOlnV1@;gqmN~Rr%f$RX)0oweCZ8_GCli@^t+fQa64_sNj(!x6wR{>( +HingCBwE?D-u)Xo}Jmficnr{QSJt}{j{N$-%lHFjnPV^i_LIGIhUxoSs+WevP5gLu3kV&oMMgup%su1 +ssv9U9xzfogr;cI9vBRo?OqnUr?GYu{E)nKUG~!2-Cxgia;T#1*#U2RfMcaa&jRMRFu+CRAB(F9NT#sm~{oxX_A0kc*xJK^SQJ>C$?> +4VjRw>##dKiRHlKL@T4!0$2WZSCg9yIjvP^~`_7b9-!<5cBHd8Yta%S4cy~=UEZsg_HR6mikf6nqMIb +bC-LMWc2`hU8Q)7R;vNH)aL1GerC*eMpi|<8#2?No<#?GHU=bI2ckI?167!BOli$rU)bkxf8;7a+locfl>> +B`>7O_fb-L;FN)p70#{#|tw}I@#AneXWg)ad>Tu=e&fezG!h%hW->@F#>=OleZU!&m;7<8>n?8$=R&P#C- +AyV9?g4`dcbfT~*YLQVgGXM&cfeIHd<74>TON{jMsJZHO1;&{hPFf??wRK`g6BtLL&5&w&F8K`eV}E-m +z-a%(0Y(vKi6lQCMSB$D>wbZkvj>X)zEdpOg#tRX5IZbQ|8ucA}v?>ukYN5!n+1R%}e)ej-Ss +NX9hR?f1^D1~@H_P9UUqaZkk{ZC4G@i@Wb^-c%?vXHk2zN}JIWS~RL^rDsPp-J^2C_QZ3h1Ep4-h^UG +s4aRhC1c2`$2WnQ3P2RcXcU)hzx1!${AAAJybl7qVdd*nuV}>q|=<=h!&XLMNK4IJ>gGY8My~>$eSYL +XKp=Kj*>hj&)eGW>Z>=8=4wiGw3*n+#+Mzov*k!bEGxYE*KoKu&if +)*^k14$04GyM_{uVKzwoA9oX`_uVIxFi}Mt9HSI%!n!86tOYrS(Y9TxxKF4uiOwi6F@X(5?p11C7zbMwNL#Uu(KJU$ogLKPx~;(v*fDvzc!ka=j-vtI!IPXm;87OpQ7 +0FXb#W9pqur^KtIJ~-34LU}fFvUZo{Y6d}0@#4ONRi9?^(mu2QGmtS-xf$!ZUbAZ}Ttu$?Ttv!RZ +4<3@JE2K1OK`)u`2(?RLZltx)%}0;yFuh{f2_?F0`0Zbt6A5fN(@d}Ak3Lp|X%V}5UqcBlV~mhND;85 +-zPPu*ic8B#)WyjY0jp+kj|1i4SbMx%q$P)+(XBxBQW$0zgZi=ldJc!Jc4cm4Z*nhVVPj}zV{dMBa&K%eW@&6?cXDBHaAk5XaCyB~O>g5i +5WV|X5Y8bs>L}>~y#(+f%_hJC!FI6;um!q>LQ5lyYl;*|Dvtks-;lB`f3!eRpgwHY*6{Jo%$pBgi03a +Kf4_QEn(l48acWtI7kUr3;=|3)zlaB?3h^YJw`O!Px=6-PsvzU(>QhN3s7jH$6?d&HYP$N6-Hb++vyB +MUv=vZ=YFg`p_$(VLUx>d*x8eIn{gbAV?PxSAwDexwORX2OSh2x3C)<|X#4dhN5vI2zfzNn6j(?vUSc +-Kr5z^VtltPNC70FzzYgN=@tzZ?11ig{lgj$)Ua3o8iOt3;ms6|&*{=uK}X-udl)y@uW=mKAk1XF?9!hgv>9Bes>g_Mh>-W4i+Qh63ZVRGo$yg>i6 +3*0Cp+K8fUT{$3=x}YBH{RT7SX_y{ZBV56OTrajfdC$y^s+KXU18z7@J6utE_9JDPl26R +>QUu;(to2M4l_7LY_}N>1u{DnC_%^E;<+Q;Rt({aPQMrTm>qHFLFb7_Mxh!Pf`UF4$t0bV9uV`A+-MX`n +t4*&sua%YclJW*B`FYL4Xb=UekLl7Uaceb!ha347RyayOFR@OH@qH;xGx5aek)XGuQE6caB2m%+}QjD +?6&^K>HqN^3hfMd+(OfdFBu$@jk3vGu!P=wT=x#P3@Jd$|mr@lKo1LY_UUi6wTQT3QJX?% +;jFP~zm^RhCTX8qrkjiq`ce+Ev9H%04yqJc=f{cs3e`qMF>!Wpb>+vvlCf-k#Ps{*ZSi-7r)otzvb#S +^V2H#2cF{rjLND5gC*G2#!qokiaV!0e8(6UFI=ltu#-N(~A4}Uol*Ca8T9*H02f +F{YUGPXZ1*{JFnnpzY|xPp#Sqe-|rQ&33KK<=v=WW%m;lqn!|89Y;J6I*j=LF8oA+349V9qZM1-FyHB!?tCx_r?+Q74 +#LNuehe_;UYUbUv3<$%N%`@8ja#SnN!a&apB_aF +Jl^X}d4v&PyrBBJGpoZWo_P9yhW0N|O9KQH0000807gYaR7!Mif$aqV06Gu=044wc0B~t=FJE?LZe(w +AFJob2Xk}w>Zgg^QY%geKb#iHQbZKLAE^v93S6gq}HWYsMuQ*d+)b?!o5~szC5nOLn!?b9$?1Fd2;x;8?O4&WKbZZ| +$}As=;S0rn#bn_X*84OBt0jI4VfIq=QK~YPDEa2&o|^oaPCU{#mn(wpyta8PJR{9+sMM1@3DqWJYvCH +0?uy0qM?dq`y03^JIK^OaI)r5faKZX|?9>&yS;%^En(s&?bFoC(vF%`yXhZ&f4d*_67WTJ`Y;0Rzg#t +w*`|lBB`dbV;%IZ*TWAYr`=f#@MoUUnf(*84vLeAbFu1l?I1~YDf4R3ui#R#A^iAAi)cwnVghOB+F5N +7=y>QtV{(<@PkF_0<*GUwu&Ul0 +WK{pTtV0yl)S1je_w-X5xy&4-erV--ubFz@w}BG1Tt?Sv%%mP%*1GE~^A-_CKIj}A;hA;k?#XaZUYAe +@Vp52b*!YYOA>er>$ex|j`zIFzf9QJscDUJaKz<3pLoZzlWGJ%#gTA|D)t2jLV}ODZX>DCCqTwHqxA( +VWFh^ED{4Ze%2GaDJ01EJZ2ti6`NM7&)$9jmIMxK=66X!-YoHf>#^x%fc?)3On^A2bXrJg|kk|*};nG +C6IiLvsw9=Ah6a(^aW%(+gYsuFQ2`SRQ3vTe!IhmDa*gceNmne71lc#b~;M{zKF(Cgh64i0kfs_rHqbNY^~-x{(zjn +3l0_q5p&%~gWTS9F_2Msn9u6^ya-t#K)u(bhICF*Xfre=n|<4eNf%I4lDfGqC8f{2o+IFkM5h1*Wq*{ +A*xd2j7~c`H3AiRil=k4$fB{j=N4leBbZ%%-z@7>u=qrzdD%D{+m;o9kp!G**N~*Lns)dSy1hU+;bEC@zl}scLP#i@pXF7@;xxL=?YKvG~F&0B +ie}ktT_3~x%2v3_J-FqFVreO9I0e#p(dsbt8_X6S7S-}lWm5>~jTA=td6n@ku*KQ58Z52W-GMU+(!2( +;lm73iNSeNZB9BY!#h|=dGF?+S-Ns`~&&MjRJ@{7Z(2H_HK)_q7ZO<0il8bofL54?BlrBr@zu=H`jY~ +Ad~7pVC(oP-l=gxZbJ#3eUHOK`#jccf&&X|*MBa(IHtrs5X!R00x#i5uLJ#Wo{F9F3p~XvyAC#CWy*pI#|lE!J%C}2AgQHj&LoKlIsXpj4qX +}hadI2nT$q#yzHCH)LdToVc)#lAC3DkHSeaQ1H6n!=7Nt0qp`KV`-y^luxFbOVcmoL_eS?-b(7jv=f+ +0C+ck@E%Nk`UdAvjZvT2b&6UOFUf#~JM*4dL_|5W}~WV}zGI#zzbO)OfN?nz?%Jk{A1x= +l+ou_GV5p^~*tGrcX9WYuZMv=Fm}F>`6Ub040a0-md!64>lJn-Fm+C2m0@a%JY2k=xFwZ-)VcC +pMwMJv175ZLCscdzn+EBF@t4tXW6NSY90wVF;!y@W{}E{nw*Ww}HR|E`C4U&imQfZv@O8C-1v_O2I5_ +O3Tzj=a0kH89BVl>{~Bs-6w@>tBze9!(QuuP)h>@6aWAK2mnS!LsY@DMBmd0004g)001Qb003}la4%n +WWo~3|axY_HV`yb#Z*FvQZ)`7fWpZg@Y-xIBE^v9ZSZi(Bc{lXLW>!-K>K6@`K@kZB&M&51gwfJVQ*sGW4e_ +`($S+JjZW3-x`%uYP<&$1B8h_er+P*$#`Xs+1nnim^!_9}llo5^jh8_QPQh@URIUs88ZUkNNc|5nM>Y +_@LnmesP(mph?K-LSB_HFto$pRDJN_)ja0HMy}(TiCV{rrYxdr+xr;%1A4B;;k%fI3O?dw&u1Y{Kxh6 +r+*1kYY@+YUffsswvc^k54D)hW~ErOiskBHg-KW0)r{fO2%M{elsU*eRl3TBat{eNg_KE +_Jpcv1Q!@mbo@BB-U?#0y|1}{XP^@`d+2u-?hh-yp$rennzKX)8v|d!)81}1ZB(LOeqDlQ)IEvUP+ie +YOQLX1J=#d^eMG)@dqgEnp@f`Zq?1UNPS}@?P>gpZ>eR9tVu ++GSHD`NqT2;)6YB!>1CTCy72!>Ziv$ig|6$4VXmv#euCH8C$PiGsh%1SiMYPK4K7wxjnI2)F7y~aLO2$;(51vrR#bCK +en_F{sy;X7waBP^M^gR+twq(j3Y+d13ly|ZkmlnGX;g>%e%rS~Joa`s*~g;aMzk2tDhaW7$~)s!=#oK +u0)@feixAb7tQZq4B%zYiR!O*$7!u0~6KnfwS#^fiBAIfN=GN($i#1%1*!DW>;Xlp@nzma#R`_5Gaf5 +UOmP0CH)?)}+}4HG7B^7~QtSNe|=SJVXmq8L3rF99}&{jgT;o_{e%3s91Z1Ayhv*WQg88L^}-ic+YTU +xcB?)_!Rlb8*Frijp?>wJKh{v(CEM!ZlDLOCAZ`i-{V{x7Gj%pxqFy;K_*2R<@GUne@1TVO4>A;Cqr| +R{XH$6HpIJ{C@N4cB1`yJnbU3kfUo%V<&Iaaa16SV)w|f8umNK3O3M@g`WRp!15rks)}cpE9JA^drso +Vya^q>qH1V#ZmAm!<3eCT2snVNOQWT5JWZq?i+*fLXowF7uSxM#iSX?(a|29+ys_B*H<)o(5#;Ay+dD +~FmQ^=-hkrbg8RMs6OLS(@^Nx7XXCbqRbxQwaS4kGp|(i^=S>dlK1JMdd!MYEL(36OGq2u(ty)97Xb0{~}$mq{$hKl#1z9f7Z+ +2uI32i7UZqJYA{fy?|7QeE-7PnyP&SRcqfWG1rW8hLSC)W=M6^0%Ab$Z62!}&^K2Xx9m@WzhuaHkevk +h^Uz#R%Jp}uh&Z)lT(#R3Xmx8lBVo(O*$@Z+d;Kn)es9jsZ~GoKw7Ua8kOm!h;R+prdX+hMWm|ztTe| +!~OWpwkKaU$cgbkveTk4^m%O^`00L$I)-;*4GTW(VzWm!55hS}I3UIRm-b9%@pPL91+uckfhq{+OlYI +7fVY~8BD(lU;oGqj+tV;zBgZ4Fco^IF$j66#hO-?{{$C?h=@SQO@UBWg5f%PvWeBfg*+tc+qlNs`Y9s +`X(~NZ8idg-$Q}YQtUg$l9jDSa#8)#FJ8J67%?oIK|YWKn#Nu<6H347pI6ioa?hG(9a{~VjN3#GBDys6 +;<5m3-n|K?c6=fPBu^4N8CLtY`-v!$7mm;;~I-La^CyybhO9nZzhvC+NFYh9EVKgtJ4LHU^a73k;9QaTuMV5J%A|dMkI_(9;-x>7|-?H +_6yp@(r&s65Oc(=goit%g0~^{@Ri=tFg5~Pb6L5rVx)r+8GVlGVy8Ik)D3}t9BylOiA3kDTAI}mFUVM +HUWh+voc@}~-|b|R)-X=HZr8#Maa0AU?hLOL=Iq6bsVhY-Vpk$xKHDbJ$gUfCCl!@yamR~8NPVuu^1j +lI!`;m92igclD(@mx7vVC;B12;~tVs@n3ZR52k2NzCNSDhaFE|OsG9RgED&6@r(oKRV?6!vB$M~D#EKD7J)8Sg8+1|>Kd~xI50t=(QV>H!1O5L+}+IPf}Wo(N?*Jg-4%;F! +G(pZ624M}Im6wQGVk`~lL^qJcFKO!OVP*4vp<|ur&k^6_;QvmI>zsI*>v>nu0EbTa&iyyG^^pdVk|$g +@D%wJw7(trVS(KQ5>L!bAlb0p^NI+!22;uZS8;OjY$AKxy1Tf(^mOGH@)&HH`}9|>Z214r^ +upA}(=Z)j36>uu0|XQR000O8MnywZoDoK1G64Vp1_J;9BLDyZaA|NaUv_0~WN&gWV_{=xWn +*t{baHQOFL!cbaByXEE^v8mkwI(1KoEuR`zsc6QP60GUIICYwos5#sE6KUyP24Q&2E^TK-*tmO`_REb +DDkco1LAPNPd3oz80@&VC$-1!c)Nq_~AsZS5MFKg;2}ABJZq-MAX82)L=a<-ZHR^IRYheQz>1*VjZu9 +$jOy5R+*|8NMczzV!6HeTW6V^*|b&%>Wg#5cBr{Qg%BC!gSM%V=g))p^QLMV(|2bfI3I!4$)^XZJJkc +BGWZ7+pas-~o>7PG?Gyua)JAz9SlupndNWad8#tE0h0CtqED^mg(|)VzOk&>2=;ei$U_7+a{j78E@a* +Vel0oCRrA_Vjn)&e9#TC>&5G2=^z1?SctAfkNVUC5-I|d=%DJ?v^{r|XhwdLugV6Kwoax%ZJ{21{grh +y2!Cfl&$A5cpJ1QY-O00;m^MMG4U5@1h&000200000h0001RX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eV +_{=xWpgiIUukY>bYEXCaCuW!2o7+G&~?kqNp;RIs4U7%&nO8=tthclFfuSSRd6lJOjhtoEGo{=<5K2Q +hA8&QOis-!PSy2HNzE(COv_9yvQls?NKDR1)iu&H;NnUv%Fk8MO9L7ip9~UJ$jmLsFDg+0TLKnPP*%v +xFHD50EJ{tuEJjrt1QJ433jk0{0|XQR000O8MnywZ*pRt@O$Gn}n-Bm1EdT%jaA|NaUv_0~WN&gWV_{ +=xWn*t{baHQOFJob2Xk~LRW@&6?Ut?ioXk{*Nd6idfZ`(Ey{;praIUgo>u99VI2N(#jG);g2ZagH}(x +NB?Mmj~TWl|vNI3D`rcSllhR?=erVu?K7%X7~iPY3MgulFBcUx*6MRK3&Up|rQ~WasSo=+`&wT#Jk?x +Hd{g2ho8SUWg2&f!CKgNGl2fdd^O3o|W+WI5~XV?j +gFPH9d#+EnkVH!nI4h2gMWE%~sszIh(EiA+Zo|mY8#)`GdVcJ-@1EyrPV_PmQvx+%sda$K1j84s%QH( +S(VVRIY!W|+_PES$s2ZJ6dlPuG_>*dwrQxpuirL*hv(_8kz6}0(t&YM>fwy)eVlXStD8ZuGry!-c%@r?n}(Zq-RKxA;6TW6L+p#7Q~!|({M1!ZnWbuk&y$?k;A)z+Z-pAqpj*Q<^aj3c%}a=m-O;=9YM)9X( +!+w=R4wRcb`?XuuPQX3tJ*UMWD6(H@n4CElVoGUJq!UR>AEbSB6RvZ1$sD`zA?CN0Z_Cno_3#mJLz-} +9Mt~bWIv^ozOvNkNuxMW{R!mLEic!_)DIE94Hw)%)@EzHAkiD^VvB;EI_rcYsno(E-`XXu2Ixv)Y>%t +(#esRry8&~;dX=6nt{zWaUQrRk`0hO6jZK}LquiguCv +*A06AyZ&oyA&co_{Osp1|AA5_kDzL>vt{UPt&}{3D#gYTGF{9_a}2C;`V+rje3dhXZ2KuI8}!Aq#dY+nWM8<%C^>PK6XUP2={sfvT9bZ@JK +DQ0ZN_L?!YF`s9LF271eAh%h-hQb%u(js_~4^*{RSn8FnIQp()P6=tN{qNUXN-`i;14u#%7PPwFVAYs +R-PC-k#6dC9+rNI6h!W5EN9eEsNMrZG8JF`QtE-&S_~Z$4LWA^ +%F`{I|@s5aX$*qYEjSkyuqbbs?jtM*>`sOOfq{=#6J37iU8?4w7SQleV6(?L==Zf7|23}s)n2!^KGPX +tcz+dX-keW*E|nJLJ6Wkc-q?zrAYhXabzOwho|B8z{~E%`}rs42$5Z538=j7BOo(W6F*HyoiNO}i7EN +<@$d0d5=5udq=ctjJbk7tj^qAPYft7driFuC0R*FX`CJf1 +bbjGG)K8&;IqxGxtW#ZJB&k!o$$fVa8rLg*~jW4+X4Nu{&I +c9M1vnUgqIpThO`F1q=KG^HJ{yddO7l-M`F=LO^lV_-~#@PK8@T1^*+5Ny*IDPxU1iA_eqx{P-AoMu> +0v<4NlLmYtb3U)LLGeuY1OMLa=GoAcPz(BAwRtmy{J0(AH--P)!I6MxcEc++YLQOoGoM_f&BZet_Jj^TY4|=Nz_2s?mP)8d@D?BV;5D%fq_rf&K%wb-26F(T%QBt5S+TB|KtWm^mD?Fc{GRylJ +jIOWV&u|7k-<*gcL>uBXuE-`9)8qvN_#uE0+l?PMIzd+zaqd6vQ}l~`^C34S*SOii`y +WtC0|XQR000O8MnywZ9m|*ks{sH2tOEc5E&u=kaA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJob2Xk~LRa +%E&`b6;a&V`ybAaCvo7O^e$w5WVYHOp}WZiP$dm64*n#ZE0aCr616nQRQ(mRFRA{&Sw98N48@-u+d4H +dGF1e(X8R;_m6+JpUL54XkQ}j5Bv+yyo39@x9{LnBnwX_rr_0Dtq1TES@a3FUu*PC4Po5D`_|Y4ZtwM +-QcVm;sH&#pE@D*y9orBYYC2IO5gGusVPrbulpfzhwxw2AC-ilQ+Gc4RJjdXM$A$C3Bz(*PrId9hCHR +3gr9MarTjYtWsz~UX4T!3jG>j()b&kP9pPG4lIs-Fgrluuz11IA;+y +I_iikKe01&<3oYQP7+Was#mJDr9iqgXki&?UU)j6%}S<+hzBtvj|pJQwBdDtI31kmq6)&>YyfD&-%kQ +&Ec!polsw$*Q`E*u4iQ(n%EN;oYiXe1zn2~nh*yF`8^otfMpj%A&EgSxiRxseqF=wgz!v!m^7^E +Sa$D?Xic%KCgjYWZDqBhyfye6rbEJ4O!vD8U6P?^GTQ6_+7O)B-^f3MN34OvpwKrn1NG8sE4!`!15ir +?1QY-O00;m^MMG5X^hsJk0000!0000V0001RX>c!Jc4cm4Z*nhVWpZ?BW@#^9UukY>bYEXCaCu8B%Fk +8MOU^G!RmjXO$S*2UNY2kINzE%M)=?OVaA|NaUv_0~WN&gWV`Xx5X=Z6JUteuuX>MO%E^v8Gj=>GXF +bGBOp2G4emJ$z8sfTXR4I;}SDNX`toEUVn^mqh(vwb8kxL4@-#CG{!^g+>l&v-7uU$onjI!`RZ5-!6>wW^F|Y_^n=mbPGRL +5ocF67PR7MptxBi|&RyrdfhWVi)?VL*4^T@31QY-O00;m^MMG2_AUYo)Gy(we4g>%m0001RX>c!Jc4c +m4Z*nhVWpZ?BW@#^DVPj=-bS`jZZOpydvZKhhrhCs*gjL<_GM&9d-^grV&boM0%JB1r~@2^7XbA59>>NyRlw ++FM&(!9cKNgA*G9-5|sUW;O(}VbD#2Y(i>7#2bv-FzF^lHZ-+CnGGE*x7o7D&({FQ!)U{h8#>&?_$I| +SOuQk{4H|3$dcy=88rh_8cR-d~1^5PuH#E9oqPOdz1o`t7lh=h1c!R^61mA?=28=VJHaNP8m`#E$SB$ +X@k}TIe##bm<}%&k*v1mYx +C>D=4<-HPqj(lxy*@(4rzo(8w?3W4A?g5yn2{N<_>^bXe>-v)EFVG_xF~(GwiQ*ojYW8_G-pdG6B+-1wo$1iC-#xn{DXki9z +X#W6mGC<7~^&S_>h%Eqf5+*^H}yqpWYPL|Z+{jH2yCKehC%lzpspOg?243T3En`Lo@6GnD9zGEBkVH- +jqJOUrOMC1jBSG#l=o&~N|!Rn@L*W$g~*N$kM7+OA>cpcaCbB^a{uk2Q&UU+2CPBrTX!wq^)@M$8u$l +9{o#)5a620IsfjbrgivpGAW5aIFUDQtbHPV`M;a2a!Si$9!8eWuIp4MN=Z(lsUNTuM9~J-U#qa93i|4 +LRYVa@Fc}Nl%Y6Q>6CksH%9?hfyq(mML$|3wQ-}SNo7ZGQa4ZKGYpty14}zWxK;+m{d+bM##w$ahsH> +G12$#p7SOm#vf1gNoQrysgRA5#(eFtcwdbsAr`i)xk*4i+fuA~E%SGbB;U)6>+|h7o2~VpZ@G}Ggj1G +C1f$asQ%DW9YA5@~tV=>TvY7^+WcgxTz$3-tGI&yBVHCObXo$8t8dyDr1kq;%uFo^?GJbGplo1dC$v2W=5EUz|UA>*#i&0BrI}0UQ>}lVFg`N`+G55EN +Lg~ko5TMuKd^zMxEFc)1L2*dD@2+zdOv(bU|_})@44_RwF4~Jj4#^wjEmQnj2J!H!E)_3Xh^l&TxjS% +nvX=N5(#qWV<3V5yEIat#sR&Oq086W*obQBczO@9VYp*rgdtX2oDa?`!J`2d}a2zs`zS~RViOnQ+2!a=m)|7GETd(lkL5G=dUe;fn!tKfa-;4V5g2Ai +$Il$dYa_coW7O9DoVlMCn3<7zT}B;)^0S3A_oyg&zn&3$Z}}yQl>fFrXPAO1g>TO$_cpzi0$lh;LAEt +K>KMih_ky@oNAS{yHCwhhBIUG8-7(VB`jkHYu}-0kzT%g)GDjkY&tB_`({%6uu$T4H0he1z8JK!71P< +ll&#V9v6VG`|c0;5^%33GWbh;S%L^=2mB3R{8Kxd=yULDsk71Q8W!B=oUib3W?z)2IJ4#l+V~&n1OYt +#a8Uc{AUHN|^GMeO4^T-&G$8|IVn=sryNItg=(F*{Y1)Y$w;$wr#-D`w1u)tE#GSy&mIgkSx3`dMyPw +{|`@!WHpyDsbz~^;RK0g=e{e$7a2O|J99a#Z%Fd81b=Ga|$R9SMhuj!_?9sarNR*G{9c}8F7TY(hY;~ +pCDIDKAMGE6DsSr3^ul_>0R#y!6omreih+GXE!-@x`(?{;3xN8qPe+DLrJr5hi1NY0ve9pnIoB()($$H@L=6&t-LodaFtb!Rm%>rtxYahP#V?qE1;O8}m +eXC9QZy3We+W>)wufad$EMbhNX2e)j9XaCGF)7@pQbH;L$-I7Prx^ttJvkl2l*^#etnrBCmWrG8E6?h +J+tv6w`HRuazLg-jf41Ni_DHnZ_tUtE+j!>(7#7IM%i+IHNX>j}SCn;v6EKQHi6&t +4ZuIi4Q(7TbdNpQ*T41zQu2gl5>I`V{iS6?%W#=H+SI*F+Wb%(Q$D_Ge|<*PxTYrmwr6G*K2fdtH%N}3A*(XQ$g6 +lvc}@48F~p{W5Qf*mlo7(bNGpCIZ&|lpQ)K^8G}D-zRc!g)`NGZ>8`VH!+-7@yuk5|~P>nSOS=A_$Tq1WI!iP)6Z@_*l;?fDCHRBLmEw>jSt48e>>sdEy!P#*>;H940GX1uFVZ3k` +l7jhV;_Cqv_(IC`ww8G=>G-K_hVlLhWW(*9yp8JvVk2F2m8$etv +NUozzf{rXtB0H2}Jbbuw +(Qk48S$1zaqQ1TS)c%B)fQ!0Y`){<`po1_JU|@oFc!|a1WU-0Y_J7j(OtYpN*#>u&a0DY3o>w#S>A5S +96NbI{ZG{3AUuCz&^qUp1VO|tq;+a1-4Knl&xC%1)lBX=Ph(AIGVUFaHV2jluy-SFCUI}%jcKfiG3cd +l7JM^dBj^4i7?|4)(+4UZzub%@ziGa`5_s0<*)tpD!Q6LTh!IXJDax +Z*b*o0Vm$TP9(7B4bHf&kL9a#u2oFmQG)0EN{48JNENUSE{Zy(^(SUw>P0{-)-q3vPauo3 +!ocSWuq9?DD+k7wSs%%a+<_XXR8a@B)T&IuIUVFc?7VTv1rU)V!cA5S1Q_8HjlPg~kXW +;PP)D2KD_g_02s58ZKRR^w~gZ~adv~ls-Y(h-E#oIF53CgGo*=>1{IOPv865nA&v&(Tl+r7Zl+Q|NH? +&R)qzbI_vNVRc?cJN>hW52UJs?WATXZGZHEz{MeCOl +3ahn>TeSrNSCWVyxOR_9*1$+e6FJVD#WkCSWT3<=F%a=UQ2h%NcR8dyRNRC&D;Q|szG{Adt5hSK#+Yo +6k&wSfsP60utdHx%HlS+0SV(GdQ*(t$ptj+2}?*p%6!FVu%oT(q>#Rkm~=XZ9@)doFU!3-S{4<@(G +N>McGvU1v|+zL!IU^y*Zkf_^sHC5*~u}V76BE1xv&&XNiS0Tq%LB4k$Cwb(+bLo+rK^gM@(ZFLEt1peMM=&H{hCqR +Sk#@1F%LdREz;qUx8jGT(AbP3lJOtbmL!A8qg7VYZP8gGBEHYxwu~f1NM4}>jH+;^kRJ}dJ~5mlwK|j +3^p+06#g4ZBj9$xI#ZhfP@ddSK(O2?43-ViN%e4-7Z +9+&IOSo+P+&_}Ag%c?ln{J}J#+Ec>v&qBIw1MmO?rAyio$RTVNV@uYF=2ewrMm{c&G_h1^YG*cTz<0B +4x6B1XgqUw!U8ZfX5>j}_XFt*}>ae)ID8KTNipvSBF5{!N^<86YT0;(Qt9r=}s&8I&cN6?L&JMG +#PU5uYWyTq!BYzyZ{f_G%0Ulq$M0>-K;nF=)sWC-W5t%(Z-cJwcTnnrI?n&#t6>~_*BU0(r@)5bY$E; ++Z%sEu#WH?CVW3XA0NOFNl*Uxhwgfq|){shGlgV`lEPd?i{EUcPNx^;ZgWz9UskCVYIu8-QRY%0I3WK*HCKiK2OkP?Fl^Og{c{kn6qdhEoZgVQ~)Ztr98U&6;9;K#wsBDPqZrxOS(NW5LK1_m-@ekP +2MCVf;SDNiXkl>nOB+=nSLhHe*l6jBoT3Y!OEx=th|Q|V+Y`3#lazQCV>USAacj^iGdl!llPD?NA^?T +nArwl%aFz52!)Su14XbhO7B7pjz_KFg;%Tw;cUTRvcUu`!uVqwhSp=o=CHx!%@I^1{iEr?Dam3& +S3A!;0TvO&ZSfyU8seq<9w!zaS79EkB7|=9cqSHjUfs^GZaMUQZfSLmLi#G|eGy)`pa~J$qdlbyYkvSsus?lVr-;C}P55(hh#$UH+x~2bq3 +@1Z%Yrlb>k=0Ltr7eMcFQS0O)&tN4~_u{rtj-!3j|&0&EzS7x84sXZ_G}h^Zp|C8sB|TvHX7gGw@zPi +v#|h0e*)$ssZDx&)_B(4c4j#v?-r$kZ!#i$1G%jUI(rmOEbMuVn2*9^4$pYoEp~JLjytp(#Lo0F>}BR +M-TsJ3pyAGX8{vDe;Q#hI&bl=JXZjh0+fO4SHKm6gZ6X#Ze*5ETPj{r0^p)q^oJn9=TByd(!Na35*<* +#clcZf2l4`l9slN`68JCkP(%rdWuO)63Qnx=3Ih5|39%2HzSQ|u=l8psQ82>P4o)Odolc0h)Ij(; +l1yO1KjJI}OdShrFXGoeD&-R)8w!uJ&$S*bL^(V?1d&B*T@FF +%JSb46f&SZC#+wicCG`oqX1cFlWtkv)tfe}TO@9T;c_JibEM=e_7ATa*AQ5Z2D>Wp&!6k^;xkc|ab-l +Z2T%mtZdtTynR&gxkx`6ISY3R-iT{=?nQhRpsMudsr#XqECv1eq|nAhqlfjRCW~I$mF^*urnNIdd)qM +vL5s8intvMh{1)@Pdiv2@msd#^mZ=f{f$^VRbUG!W9iq!^7He4=Y-d5@2Ob|rd?P>n~ll6{2HY<8>l>(*W1pwGA)t)yY*yXfJpqrgx1ds34s +dUDtW4HT-fGyP||6XE<17ISyFvyi=S@1imm0yuYwO)SQf8Qy&&h1HFqH3laDc8M +SQJ3xu~SOo6qtyF>fawV$m1^h6onT_I*5pGJ*8Cexs}&GpRm&;i-ayMDML%1QIq-f@~du5`GLk!Tyg> +F~%M5>2=nIAvx}a~_rQq(^qrOm#1{bW97$x*4vv4Vj>ofdrrs7l@F#1t-xVw%Ez +-BPGvT=i2y-l^MkJwl9YM0|;v!|vW)r`A|w%o@F7_b!1)HIha2Vx3&95S+&p>77>N`4;uzGA{2AZM7Q +KQ1T$9(>*q_BY!=McY9yaQf)m?Mk46Fd_1!DfxIfm=z_8ojojgW`*@()!#HfuLuMj11P}2!5`uYHk4= +k-Rqk}wIw#g{YtVmN)UYi31GC?v)kTzaKsxYE-NenZPW^RE{vV$DAs60{EoXn8(f;DQk*|~iKs3cH>( +ao{CgCClfM*466{lWd=xA}VOA=SOEIh|whs9%LITgj0%qcQnOgqpUbh?R|4N7cCd=mi?fGmH2TLwo#O +H3~U0{@*d0FFNZf8b3TE_#JZ76pJIOC*2-H)EFUEIe6;w-|0}5iUf!#K9L?6D)y#&;b~Hpb3_kc(Ozh +l3+tJ8wT{p|56!fudw+2Lm6=F*Jhjg#cXelix@&0_a+m->~u1L3tfN}6`bw?E(bDzo9s+KBtUHiHnxD +bt^xQ<&1^4zI=k9|HD@^){`7d0T_zCAN6_nZy2xv%vqOfeYT+{O2wn`kBE5dri#;p4`y<` +P5DObQsD|$;KcaPwh(PRtJLJlQh}Kw$iwo0VXr97o>>a>!%Z9d-Q~cbuRPB@jk(0Iqsj6^=O|`K*5gM +ocK;ByNjOT{atlZt#FUW1j4lSkl{gbQO)BOy-c;r$vK~H<92mAIHw#kt;Ag&aQ_r^F?o@I>_+5)}0f +54b~vc!IQ`@S$2@3g#z2Wa_n{JfIke1C{0;u6*4sNY$*5rCeSb2#3zE|cX +`Tiw)U%&suJOO>I$@5Z3vjZQJ$5pxNed<}B*tuMb&(vdGZL0frv`=m(#*a%)RanPnOolXw0lo`#ZDrd +F(ef45uIN}YxnYgbVtd(INDCJ(E2Supadta1!!`x<4cBtnX*Y?BU`0;O-->!R+*8svZf(jJ) +!e5ko;S*;ol4PosbbN&BTv#ysh!XyEY=3BBP +(n2k?jw+X}XD=)*%O5QSV&=Rj7cM5&dB>oxJ{AlR!dY+LSy3`*s}`=r`KI3jFZ?HK^2Vcaf*6?dk9;u{p!KuyYbgKSb3SPN$NoQY7^Ru7 +P)xj5k*RR8=PA8Jlapx4YEE82Ceft@AdbKn=Z=P7qBsgRSg=qtN|)#~@aY)2#GG*ecyuw%=qvn9!wVq +6-2m(vY%$g;^&1q^#KPhDwVn;|3(g1jJft=$;4QI?6N{H2E$$m$vd*H{A)HtYd-_rW6!psZ#+HTbG+6 +=>z`{rPf?}HdD-=upGSL&Cv2UI;$}jWHOzUTZZj|s7`YBynl8_MbbAR!ZKVavltmx{8KGOHp=?qB!Wg +U3bUpZyQ^B@2_@Rk(~==s?;YqK6`qW$THq4%_C{gC!V9(ovD$JO +c~+kpBuxz&E847Wk=)_7dny<*qTdzi;I!eh!1%1|*Gaje##Zj0!VS|@Sz71uI>n`>?5mDLc +fA63_Gw+%A({&jutYg_62oy@ir6K5lxSc3wiWvZ`NdS{CCDT=X>gW5LYgGM6nwkzP-xqdiHT5@tcZKa +Fy7|*_uI7K<67upZ_hdbg3lLX6J;jxxT*t$V0)|~0bb#+z?jX58NfHGHeY({L+YllRhD&OvnCOsqJ!7 +!+}6W7}WOG9y`lxz5WMxe4gn22{*U{&Za8B2;tts+0z3&xST?wL@!PbYNMu9EZAljItcx*?oTc1xIRs +=loY$c{$R9-j)4k<1jDC|B)k(L6{|4IZNdE9ym;$;Q5kcTw7RmFo{2qQ=kbXb`!l6f<<}fm7;c~28UXX{HC-f#D+dA9|bkDcP2Gx6i@ +>I!>S^!W;9>q1|%3655bzOR!hKVrUld}6k;t<$}w3PwNK>m23Am@^3v_-dY4Z@P0i;>8v`w@@mruWEb +5v>Wf)x`9Q`87&J5X9$N_4Oy=?aqV0<>~@K94N(kthp#=4nu2ya$Xj9ux$bdy2~-yeqG6D{be^vqK6J +Y~XLqTMkRI)K6>QLOy%tV+v|Fjd$srZr4(z^yw?LZ1tDCLgjf-!}xJ8ZC5e6UA1v#v877xvblQ-EcGu +|bEAEvinhD0LHWKbLPo#|%_B(Tq#U&aNg@szdc3b5osLZhyrOv9T@4Hv#WO}TU3ZO3y +U(4*IGT`UD?WD25!VSWs~}gCv>1f8G@I>&1rHd8_g?K?vLGL4oIJu0nBdkNA>OyKzd9?f0M#Lj^TPUe +9!i8;S*lkP=ah_%Dow~q9qP+n;hwQy4_KAc^BCb_&7UPS8&_BFw1<7D$wgas$tlnK=2&K!+!WZ^_miu +Z4l1fB_)YZB`u?fJC@H}^zQSbAp5@zh?K57>Ob{L%tZg*y)T&Vrx^O^7l$BZ&zghRKrJ%c8?8wzx>BN +0aJN%wy9qwij6x=ft$1X1(T3(Cb$GemlbWulERO@6c~dq*#{)HB-;hSt2TgH0ue#FFvJqH0J17bmKBr;- +h{7O1EAi}S1lVwEO8f__+3f@{R*i>8!BCd7x9ve!Rv}ixHN*nz|``;1hs@(zz8vFLj+4!1s*T!C=|Bn +HZok+T9!*Cn9~US}*J`5-XLG>KA*35WGYK5ozZ# +$xy&90zD{b3v*Cb$5yLGDYjQq<}p&t4fIXWfl&cE+|*!67txCYblZ0b!K(A7AVzEY!~k>sP;#as{0_I +4tfuS-BsHGGIWE~%1Iz}a!3-)b$v-FZM@xx;-cExK&_=zeaMQH<_Q$`sV~X6uc7tzfS=ToHZ8|I4@rY4gygkZ$TnIhnvf^1&k2kp)vIsr;!EI-sY!YtmyY$>?g?1cO%FT+13=~1Kb5}d(hZ}vzqB +buNf)7Px-(~wt!=opwQ727KS2LW=U3m(&MSCdlGk@H(Z8f_{V<$s!9G!JB1NDhK+jYgT5MJz+es7i*6 +OgH$t?qKEA=E>TqH2B!G<7{Wdvst}@>7;6T(vBL`QmGB1^VOS3eVwh`5YOiY<*4Hy5O(HWo64{qR57X +$Fku264_(sYcj+yE0s&2W>k0}_++_}1;Zr>W$VoTi5vWagM-)n@IA=+igC(7`CN4v3eF}1zN)h#OBWA +y##mnBl6DrNUKY!FrAWU~UDI2H5&9v-XoTqV=3!;FpT1ZIl(@-rb$E#$DUuE^qX=E+0mVE%?hQ}bjoz +{vvjuY0Rou^T(ra}yIy*yLOJ#7@uWywgZy}~Vs*g}Kv-|hetIw6IpORw04^aeC%$O;PDwwNw^N_Rtz$ +b89O@6Dhij~p4YO>4zS?9*COLOL=Ut-rhWLcuGanVPjm|=tAImk;yf>>X&X3(Xkqj^W7|PS~xxjfp!w4&s$WmEwuEQiFtk4yJ(Nw9oW?46XJ +mI<7}tBpVGY)!PoG=HubPs?31gN<+UQH^(&wM{rc-3BE3Lv0|S|GueWDswN7|%IW&4;JJBF*OOoQC^0 +f-MLH)zL{!_i(POwOPUC27y}-A2?HuK@MI2hRX70^7h;^tZaK622?4&mrc6A}hyn?-qx2H+ThTG}thA +tnpq@SGcH@a*}dx+t6csmgHEM{x+2?-u2jsayUbDTbKhu#s&gWQr;0X}9tq_5$G#P{oCyUyD9w4M&kD +J;V)$A_0=r}+d0mGrip+%h;uTx%6-Pu+XZibBJP#Fi}SQ;txr8Rs42XFN;_p5rxgZPrDzO-)TDJ80gX +AKBU+z036&N@-!~JCh#?WXC;%VGReydb^9)9d$uvJUC^pk(o)vH<1z-M?8ctkUJr;q3(U}S?Upk+y+_ +Q4hIh2QTsLx2~MWYtl7D_()Fp;iA~w#-lMngyM1RC&jfHmt+GlQFEi3yD+J#IduQoSoC>V4z57JIT>| +`{wQ7ga8#rCEeTdgWAyBVN;xGF9C?vQqk-Umz;$;U3a2lK};ZZP#5MRQX +FuVxb0ACWAB5YB@$Sb-D6feeXP;`;hFtV%(0_6=fJRU4Xut0eO0Zjg7s*vC=3xehD`-0$?X+oUw%cQ! +q1<`{v&ij~Dk2dTG77S<34<#SkDH_#}EZiqy`L2$<@=Q+Lvi{dYu}l0wpaoy1U|8aN<*POxEN#>TW2q +S--YQ>zZiC#**F*ceBZGc7wBL>F*Zmow-*3>s&)u3>!zlWso<8l6wicd)-5!3d{bR3DO*_(4MMF%we( +WB?jSO$0&+me|rn^Jo-)zJ6)qZxi^6mM&-I(nSi&J@)FLHc6T_`*XSzjef6%uxVGr$i`INqFE7(9~S< +tI$UlVCcRbv+kn>JAKzTyrNkXVhG8pS_9%iL;{EQ3@GI>sBS|QM|$=`u%wHRB$4(WpQTjk-Z92)#M8e +DbpvXnk-%$^HK7cl3Z=&-1YBk9WoqD>0tQo*g?BxnglOd2Bi_^;qTb1kj8@Qm)Cd%6ZL72q1#0A&65; +xjNMiHJHJ(-XS?ku`rvrFc%*mzxYE~q>r8dXaBtBNSv$vFMV9O^ZJaOS*k@lW}?;d?wB{GR@1N3;{#k7U&3xi*GjNT3x$D&t3%{PW&Ri~$p`SnN*< +tRV8g4zY5QX2I%c5}0ulWTC&3};$h35Xk4CtIv{m?fXj^!28b4duG-xf1qjN6@Q7t$I(p?!An7-mKky +PX}sT>a6(Gug5^OA=MQ2wAD^%+J+}5pl$EDWUtunkI+0eFr>7&rXS+u<<~w^?cZ0Mg}m>8)hprw>=X6B%S +rG+b1_Z6G)V6^pV{9Y(baqy~n?zrv4=q^WS@?548P!7xoX8B?wF*FwMX;4PzvM5HLeBC_}>tilZ1t;R +KA}4Dog039^CTmdUWC8U%rtI1PXb01Oi^u!>*EV$dbOBu2i@kfj&I(B$SVA%=;T*8#EY+5qFriW~+nN +KLT?gao>*q9w#q1(bso%;MDZ*>uxHq+*-_l(j`&X<@zWvpR$2RHZVb;s*)Js?OUCT>!bYDtn&($ +WEFRTTA8qx@!<<*@>AnW8&Js&V<3Ec{LswGs@XTg5>RjUUTLGfIEb9X+=mYbyB)w`Uc-)QefttzmfFS +`_=DGJx9>%|_Xng0X@zgBfZLH`C=>iMCfI8dbt5L9LeHIBI2e`lU_Mks|e}CugL4WrC{?6Njetds_f7 +c}5Q#q26!V?K$bfVo(33_1r8%_C#J3l@Y6NyZn&d+E35+8{qZOvUz2K|<#GA<8`8X0^aGuyMrAEBL($ +}&?&f}i(s&NlABthz0;tG9KEYuYny*tYj()(|=~?}dHSc&N9t98FPs)TInac!DR9h*Jxd0{UPPWiVW~ +)`KQBU?wIQP7kW$nbUzrC2^Kl+38-}ornblS;EOx!J)gj)sCuRrpch(nhDFhVW-W5f3%YQ3Tsw*F<&D +l+BxL2te@AGVQG<9?j8G#eE(<$kb2tbIzLTJoyB5}Sw)W9Xm>i^9?B(;9a0F9JASx=??yryd4IhZ=ic +y8p#m^Nk=xvEh{zHPy$5Pl&p# +sf6HWyg-a6`RnL_x5p4!SrKLWW+b2`|YPZ%1R$c<6UogViVsTOGiqEBIP=q6; +*7}tICPtP(+lF4t60!06H67HgQ0OUno_5HCit2QoA{p?BtQ$kEbxmCpuZm)+lA_mRBT0~2owl`tqO_MnDht`Vs0i>9WUZ3k2kLc_5$%k7d(>vu>8kUR;^<= +2KQ+VFW$4A?*w%iZ~4SQ6=`G%4KW*kowRFL(PIIIG>XPLmiKJI*R!L4bg_lkMd7}_|5F#+pL(`RHK)H +;1RfvMIoa3f@R&oH3FiW04()v4H%AFn2zHH|ujhMJ+o9=Gq6ET8Rs6?EM<^ +mj1-*{}W|y5i@qPJcM%uYD_nEV-aCxul#1;R4C@g*${=l4iniX$P;-V5wOlsV@NzY%W8-5^u=GMnX&X@q0OkIPO2HIi`FYPMo+bl9Vr}C`)rRvC}W{+us$Pz+jG=4wi^P%Zs-}RqeC!y>0a7Kl1l`3T +b1>lG#B1iF*y@eI(ncW{~K6jm%Ty>5qb%#zg7Nl%>)K>^0D59${JrX~o~E1^Gi^{6`+D{+@@Lz2%|mW +Q?qCXIZRscQu^Pa3PZ|6|Yy;;6G>BcZ=D<4u0Bl71c`Ub#@vebYQeNZ@Vt|W@{ +c43{RXTD?P;pVRi3=^-f}MTH{LtIZX#9iAL-ZQ)s|kYj4<#Tc1=MAx1M-^TlLrR*+ZZ>7x|4HgY+NXB +>~UGrp#rTdAzX_;5eVaP9bGaFn +9PTk=Q6G)QUwH{Dy2Oo8y|Z?t;nLM7=y0I4Ef6kS-)L^a7EL@=PR#Ge{}F`$PhR#jnEc0c{u;%Ax_GeQE_{_=EU{$fwRc1E%6tf3WuEbp|9}Hr +e_d@FysAEsXh|at;f0q;y6~0+;Kddq0`MaE66%d#wWz@V0y>7o=bplU%$UHJ{g~3=l`erTF<{`=DROB +Ez`x;Ta|ec4N=FG|@!JXhic!BZEP`NRGO*bZ`g%vylAeJgukw_1*|CD4{}RQ*lE^wFe}&@ai62|sIok)@ZqQFBiF)Uq^;r>=ziWv{NWUlq@WeAfF#2YRjq +#_p%hyBy7&-Ls4*laC=${T9%y-%EW6;LS?kewg7t^}Siag6Tr?|bqNhL-TIz?xKtVHW37^veeNFiD~< +Y;esVbNRVu`6!^Dbgy{oL6(D!WOdIdFzCsvfUskEuszAu8~+@OD?Dv9hSwt6`0zh(Wv}KkEN^Ff0lP& +HBFnG!Yz%_K4Nj>gxV&#uMpqL9mEYW3HYB1qlLZhud|TPgk}*md6nt_-)NU1dkzav!#azI*3|iR|1}1^K2xbV_i +&mIX6OWSgggaaxYr6X^IZ8>9&+Inc?U4P&EES%U!Fip-A!)BK=`95{JwiwV{IiJ1|(I%L*sNl&)LAL>IRf-|_3ZEP4E=T+CDx6PcoD-<890I51?h2i<9o<@QD7m-tvQ$K +t{*UHPbtZ)#R-_Xg`AYn6kH<5Ya|;^UJN+lJ=ojzxSD3{B-LBGvRBu=cC?=?s>nl3kOGvnkK(zuVF{; +v(H7t}Ki)0VS>I4K-WO+!WxGtyk!EEkII~Chz^(h34ZFoN5vILbLC*;xZ^50malgl$q@0E7BqfiL +0g-|-xT48E%iT-{t&c|L0bgczKD$fZ(r;K#eZ_4pJLz?Lf{laF&K`ZFhNr^i6SILF*t+ZFoobK0n=ZW +g3_-o?%{ALK>;=y;1p+;5O{(tF>2~n1PU;_Y{8FhDD+Eg!^A5)@&$ePwP}C+$~t^g0>Nu9Vjv9SbV2o +UC1zRn#eovQeuHf+Szx^Md)w|mSyTW{FPl%muL9L1SR(YxW=qLys|aKvI`HtoFM}J?%+e=)+q9oq7LG +wTEM6oCkSWApul&C1Pi~*}Cx&oHGr~+gb0Cj|E70iZhXQQ>5r~e)eWF}5obBk +si~he5AR5tdHwtJ5o8NIMy$l6~YO_F~}1w-*a}j*GA*TIT>xR^pGDlHWH;2Dal>{`s*<@+|(`cHycYM +-BZu!~Sv9(7!Y6AGi63{$|9w7xMFg5D)BmFK=lo&Q@pfbPK2mQg0{aK3E6l#1cCx&xB*aqW99NEHyvw +-RDj@?SSk}`D_v-?0zhF(~iI@>nzCPZt#v!EhuQ*%?V~rP4i&xt7$vg^)|gu!g;&eJ<$~Rd|f%Y$eM7 +u3>m~!Z>*3Au(jO@*$NuXLAVGR11J?aG3~bjAw +}os7LSCMhk*cbI|`ku6?(s|dF&Zv>&gs`H7UE~n5XhKer@v)EfH%E_{6XF`OkmZ=l`p1{vnPtC6e3?j +Jn@v7qPd!$MrVJF^yu1F#lmkg+KI#e(3z$b>}7{X>7Ic>4QE+*sZMgYb>fmPkWd=6uY}ez8WSZz9vq4 +NM{YVcl%PWP%aY7r$^`-lfjkbsu2>H_r_e^+~>7!#Xi4go|QuBSkl!Yz|~^R1`C~c$`w1W=>oqc;&xS +46rN@nEnQEc9+Q-!?jBuDor_g!(Jf6yHKe;pS{O2VavmvbxZ!<Jd{_p*^s!{SBIYO*LQ +8(BLy82hEK)akRG4V7VR`Wi`;aM>ATbS$snH0nir5M5{Gg)R1_un)2$KX6-$ic?6#I;ZGPWBdWiF`N-tVrf>?ZBW{Yd|l8p}^qy)V`N@5A%oxzHcL` +SV47UN~lO08NHqXlD7%HZVrv41v%X%8(d9Cr;oPPJRVVidl>zu#U@4NUtJEELeib0DBRn-jcchnS^|Dn0zTBOnm-S(kd_|a +vCCPsw>Fa3t+KvGX6%2c+GL4sR@he~stS{(;;Y(r_xMoBx2quxggl7AK=BL*+cwxw#8^@cioX2jfy8d +>1`YJnA;PU@2XnyYd59kyBNT1L3(~taB=>3=Ayp*~Q`BRp$8d_>aNt~}KqkPnqwWWoVoB-NLpa8-<0rpfvs*N +emsyJQw0nifIxzVyu?0Tq&Zy125=+HX2K!7IWWHbJ_wuHt))H<+m@cl!>@+9lwI2(j#tss9KLp*dnnT +U@xpeDJb)vQFi5gmqhxhiKiaD)sG~}?xp)7W(i<7N;b7)SdqKNe7$>|u@<>6$pw*yCB`qKqT`t#~iYK +KAn$dE_15j+V8=nvZwd4KP>4X_Mh=uT)t*1oUl-La6LgHTZl13UJ(9p8;HmyJ@xes=z<@9&+a_K0-yr +if2vx9Sn`Dl(_;Xr*lieCD}Sn#u6iV%I_d`28b3Z`XsxZIR3VA)`@pwXQV}z!;t{(T>k&ds1rupp|E# +xQ}!++zz)jdUOaj&LEgPtglX|(y@EMkt2MmkK~a|!(I+kuMS<IXI?_9O^{_AvfMXlTl5+^ +14#vId(F>u+7)C0_CqV#U$#^T|l#l)xz-a_guA2RJn%1xuuG57xPd< +mA*!}5)JI>m_g!dSkj`gx5Tcj0L9ZC7Zr^az-ckI1Y6cKtIEEKIQkCA=UO8?y7grFr`vm-5`_;1vZ=X +D#ZXz;mMn{T~3OROZD8u?uf;`Y+!7KY*G4}2ohR< +MSj|Vm7u%AP`b^lVe!_qyTKo_cTr)RdO(bAh`Qn<`di~TY|qiAdl?u(Ht5Bu4ave}s{y0&7s>zitSg6 +vR!@nD|BR1{+4UV%t*BnC|MMm+Bk`ly*nJZmh&ywzqUFfc@fJ9q35bnzS3ApVL;(JA!*!q +<5bi4eD;1IbD3;qd6=dHXrd^3(S>0yqQwo^^zxh~na_r3O;T%8$?{udh3q7n +T@t-<#UeR(=)SAH05kP!*iNGR`mc-T9YoQ^fr;Z@nunI<)gmagqNK6Pu^M{4l>VYvvbu{e7ou+v!W=) +m>x14X~6yeFod>Z*25qf(Wo&{|9rte;^&KMH+TJx4?n23Cso`+7M-!&mZ40*w|4ppT@J>aMrC`iQOnr +eP6TltfudZV*UQqFrIUF5XJF;v;F{$lXY5nu*qM^sdqKoFokqbucT2I=i=-);^ClOM|df +1bcz~Q;Wc1p3&zb}s@K(Sc9S|iqVzbgsaMsZ7vX_u)>9wJxVD1fb{9cf5IX)rbPf*jr*?%5K(4XI_fy +7n**10G3Q{yDm%2Q$28=K7`Os=$$P{56N@sKZK%DDIm_eu~-Q)S=gW1WOMT^0K +FeU@*xygVTcheEETd3-=Xl>ihrWoYLx*DSw!8(A4x{_-ZsP{e8Kp!I3Fh^kMQifT^cRX8E@xjwZz?_M +#|e%&S*@RyRZPSz1){X09_*U&`z%1~)uNYS_C+qHXr+v3fCu^sD86c4fV3?FSgW`m>_*%Wy3LESKOx(g}o#4|!v6EZJWeY7Ul&hyba4_m8kLw7|P^Z6-vbOUL`mV?q^ +n0vKaPy4|ADf@dhf+P;{VE9j4-fr@nLi!&lSd5%QxvhHB!M9aMXf&&Y{f_z$0-~mSKhf|B=)H_-PT2n +Y;D6UUV+)}SOf0vZhP@^>qgoY=I*l&(~k}#Y^Qx0zGX(YxprhPWkTB+&C34}a&J=#_kO4 +N-_Y;Uvn$e)dw0}&Z!1!UyO-ViI-$14vWiMJ**UBP&BR;)mK4>p8_O(1b#?Kp1!6e6HyrD-B}JR63Kn95cXB&o{Qe-EG)G9P0 +fR=Eyw+VhRH&{e3!wm7mbrQ<SCaGxZM+|03ZV7F3l9>LmG$dGo68^z&HTAY>v#07X?;ZKH!h14db09MdEhz? +36#@QJIa^Vx$~$2+!suK!`J6g*9s24+NVeTuF$2SkaXg2PpFAmrNdjCxN6Up1BzN_lv%fl+k;kT@B?6 +|4aQaybx~nDNDj!wGq|^LlKr$-eP0?c?Gx*siYk_6W}l3d(>tZA(5qSyiL6r*Fqgw=c;i%jLIig1np( +2n^Yt+di{okX?TC4~lR~EY*25EH1_MJB#Z9G;EkF1wXS%P!FZNq!e(G+FAyiCc)H>_B +cC<@SKe`>{>n_*z9=sCWXSVSvJkLO0~BS1}TrKqf;>EE~`?4qKJ4jNVJG6#g06Ss> +|-HM}7ww5$OijB2%~23-duwrq}uzk9?J9(JAszL=UsNb20xm^4L>3j=MXl*lj&Dn>(qviN}5a1ugypI +e+(0Jw8WpGYkinL3;aIO8PV +lm5`s|u=~u$@VSvgDl4gAglJ`Vu-~d0~ss&Sf2ZU+U51EhO>*vG%*7+;nvyLpVryX;iz8{=t){Qk+D +9^#AA3|*sb+5$ldyy21!t(Ed4BV78Iqa%vkXgPj!vj8&0D-R&DMPMYrgNH(toVc9c{E#DWGwcmS)GU{ +)s&B;8^6`bjWe!Q8jb=fx9b;pzz#qZ4U8nMAj8rSe9`sdJn%3ikK}~jlId}O&HO9Am6`g;4_J{SUfI7 +7Nnh5=$$b}x7{DWqJdv-3wv3}U9+`)^S&+g|>sik8#CjuqER|boRR&Y?^eNNnLk$J;a!K$*6%9O)wlu +khi`nV0q)5&mqZ(;0a-=>^$A`sp!n+wX_#xl3Q}x_Tso0@2`h*lN_r#swN&;x@aBWuJ43oDgbpoPr`q +S*5l!NWuZr60Z9mL|i)$wk6W!N!!02-H?r>C6?oSq8BdRF%dy%$@lUt*$khk~ITa +l92KJWU#lOlrkT*JpZ5D!D>B5Pk#NxcCBf*B>O--V%qpz7ABgpnZ}ihaOh^`}+d+7fCutlYY^5o4z?eqII-BlX!0dq4B+D5 +r3)uK(Mx|2S*rIUp9*CDj-m#Sl_#mXAvuws0zb-AO3m*jvpz?fJl9L)~2BaOQx9zyiqpzQfFhwI +u8|P8LTNKd}lJ<>Et5f_^%An*ZIO~SDjJ?2v1F7)HvOqKq1V5IN{f@1Jg+69XJKi3TOlcoBY~v@=azs +l8-62YkuLN(!C;n8khn&pW;dyw!0P%boE*Xs#O6o=;8cpvPpR56o6457xI%e00j4hx`ne{6h-%~orLG +o@cc&E&L+Z{uIAWqX+IY<#B--9ddUMfCRH0q_B&N&>uN8feLRN8DSX2qFBfHk02DmrW;?B6FmX*>`dyD| +c3SAt*4L%q$(w8F^w;1hHqzC!GH_}@<6NJ{(~Jg-&-Xo`CU}$Tu?V+AYA+aKl(Zw~lKFzm)Q6e7egV~ +W;VsTF>!1=@jga?<*YBeBy4k|>Fad$aGq>mM)QN-7jYr=<%P%{sYV*mXx)p(M5j#_;;Nj{}y-MSCe?c +$$K(ofez=z`T0L++V#UbHSy(P9i1NY-`jk?jNu8MCRUph2em55hIOY(D&D|53p9r=$KFvi*F-k3 +kzofFMF5AcjB?fl(BOBcIyZ?tZi(wDEc(*+};KB8xYw9fMoD6M^mJXmTs)CtEy?|%tg$)eL +R+;MMfTRMbc@zD)4FV<_Zhh5x!2ebTCWiOCT3fY!FQdx5Z+q9*03!Kw_JRLZ`04z-hGYlX0<51rPH_6 +I=F>!6txXrZRPZAOH+V*mw1|NH?f9~YfQPuZ^@ryw%3-Z#lNZ3$8~x6C*F)*Twv78%rcKOODYZ4+SqGTQV{?*{lOsQc`0{t& +lqA0qoTZkx}dluoX~UXgHF4=+O1m)#S)hEj|K%}H8<+Y_wnobVAG +%<=m~-Ksg30GxJC1l-L9<SLP*XStgM<6C8&H(cv&&i@CDsAAdT){ +lKalsG0;`X#ND72LGaC`$>tG&B7EGkhS69Td3*+~Jkj>$*tOrP$)&tlM_y4>D8-yaW&E2?vAcWWr83~ +!?1mX^EE5<|_)B@?EACFMh8Nr2=qqh)lxj(T<|hGf1}hjgi*AjD15@sav!*!QpQW@cg}O6r^PEzlmD+ +bq~mTXZs@(uL>9AO(YxvedV6oHiPKx+2yrXNfLYw=Pd2hdEti5F&dw!(~8p7rN}9mUiA+Qha*9aZG&t)C)<)$$af0@osybZDi=bj3XrfKLcY--8zjbBVbIZ +?gkGjN6cjMK9IYdUDcs) ++ziDH0!LhUDN$H!oKz0J7I@Vpgq&ECKxj4V6G$DJ$ve(zU0+<{0$m;sk<^t}`CJg585)Ne?W~I;>X~= +ggP=&Nh30`K7JOYvAQTMta84-sh7pFM?y}@*}Jc?9&J3@Rg+I)p|~|aA5GM_Z9vK7+QbjX_(U3qtvGX)9 +J&L@zbz7SxvNM2jmui>IOC`#z{L5Iu`VI!4!-DzlVO~AAo``T5vSsEQ}BQ`7NWmO=BiY4KLkb1|1JyO +&LEm#W_49F6S#UI1rh>#1SK2l}LR94^g{-xjzKxo1t +UkWi>d&5r~zF07p-R;-F?e8DL-C8{_~tZ^KK!Z=RiFo?jPc0R;gRb&$ +_BeojI8f;<2)|apbNFcTKwx_!$@YYlS|4w>_BsPJwc#ot&bW3g_d&MPzx9E?8w-;;tg```Mh@xAP4?( +wl9`w7kTLx|24$+=%TSLQe55_hT9Auwa-;I!?cq`+q7eK}Ri8UfksjX(Ui4 +bqv!+$L7Jhvjnz<%$$KeNV_&b>Z_*zCyNmAMGO&qwIw&pIFSH3IvZ^tyhLS!uqPRla!(ZbLjX@MD#SY +d*AF0{6qg@Rvr0X%mFm+USiBMqOJCL7S9b(e2Ql(_on4UJ +@&S;KEBN^+>NuH?BM|>GK4|UG(bOr%KYt2!!h6%0NkrwPO@977C}XDk!(NumPVrV*_OU(l5v?u}ioDQ +rNRf?CC4D3|=XX9-zt9QU_(xPH`yI1IKE`F`CQ_rcL +jrLM@GtgxVYdL +;smucLQ6w^pZAsd2l#Uy5E?gre%Gqg<{%?YGiBs4rEJ`C=B_w2P3?uUqgw+W@;_9UkIpcHk$9OAg1_f +5Ro5S{yw^1}Y&B89eIh(L4t#B?cnX*ezMfC;#nFA@;HWMBc0hMGW#(vl}=tm|XPaX<;-u-a!kr4jX2j +uyxEXR4G8m>0Wd%17wMc|NHHPAL#UhK-xb;!oPXo&sg~Vpr6_th^>1b-v-YR2*e-^LtzAlAPOZR6vHW +k#Hdf(09VY)c5RdmZP1PSukeUtTfqmVHhA2iCj57l?G>fZ`{|KzgE(T(UaZiy$&Z4Yz43-s_=ZO4#}w +Eu(H5gy-$S<7qoCjAGf;RNHrq;1=(b->Zuqv%n@3wi#tNyM_t7q(kAYjw3#N7trf7Q$P`ssQHXy|}#n +Mem7257B*|B(YcKUOd!)pga`x_WCkYD!3%67X(r=^X*T-qPQ>qaVf2fIrNRy>y%K@8ax+W-w!x-mQzm8P=x4I##pK +l?qUr=l+%Usnuu-A}o;itPsoYSbPx*=v^<4Mo1amAz6OFwZ1B(AbnM27Qda+BdIY2j)L?EwaAPHi&S* ++X^y3L5w$0J#-L+g-mYN%Y*G!=VB3%eE30+oc2?EkSc{k&#tKl~WI^g)i6wii`CycZfpSvkuc~srQ^S +?1hqEvZvFy`O&M>T(2I$I`!~XH=8q2xKfYe^G`sfX$tHy1RQ@!tp9Cuj`>xCKGcO_1w3B2<|Qdwi!yK +!)|9LhW@th7gNIs`BZ%jI@DmsbX*706JfkU0R+k(Mq8R;L#zMNc%h;|Y&ipENw%K7%z$v6}9qWlQ{Il9w{N;)JVgvml%MR(%`XD`h +L>aa1cI{DIqbifhtJq!tyIBs=zi<6xDlsqUEVRF=?Efgjhz#hJbp0 +z4kr>e={l6UJRRnJ(AMkXQHowZ^W8+tmOhurh*|Nt$eEx8f8Lr6qDqx?F~9)CZ!qESVD>;v38LhG> +y^4;8UMQrH=N)jg%PfQ*4H2NnI1PY&aQ)l1Aco-Py@UM)BPUuOngTKbhjXk>AZ%lHtKBZjcP{=x$(p( +7tCbsj%CEWbQtEEnZy(2}bi&4cR-H{miIbTg}=tLN)TJqh~Q-@HW#<5_Y;d7{WU1~O9RT4ugGMM&dFj +|La7q?zHh#>;NNS@KgkVPs^Pr%XA^^D&H0Q)U@bA|r+6k+Ju;0g*K{gERhvAnDf~erLz~KRUrTQ{Ml0 +@XzySD1xmpiQp&+qtptO6uQz$5(CNg2Z^94j$*{81pqAGM!k~F!EZ~ZZxY$@mc^$&ym;eX!35eEAqoD +Q_`EF;$G6_S6;r9*O&8r?MEJ(?5^QT<-xSpLZop^waUQ&pyFA#GaR=|YCK}%?`Y=kRdx=lMMvG%s%LoWTu-i!TlCu +wZ-x8rQR9kV~(8U&1&6~!*k$#qVb|CxcdlMk}BOrZJ~{b~KlXYW+aQLh?NOc88EUlU8%dcdv>O +G>ec@74vi?tuKkTo4{QpNz_!Zax=E;5ncnDu +fF9oek7^b%2^7a2K<`Wo(BP32jFiH~ZhELPO$W}97L3pLWo0@mHq2^|IPwgff$(G0b8i}{EKaOq^Yn!SmwyTV%zf)7gHmKeliNWo>D~%<>{XXNZU33#RB{ +l;P2;A-}+^6N%kb&5z;wfU|_~3rA&Gchu(_6o2vbzLt;l>{sF}8JOj`%l#cgb;yNF^4Yfg}`JRdYgze +x4pKKV!r{i8nf}3nnY&4Bw0s!85e0i`}%`VKGguwI{F*fU94p$=`_)TrFfp!n-W2Ymwyc>rVXsi+lYy +c{1R;w3@$3P0c?^vaFPOXUvrb8O{Y;8FTsT9RvULmVdot;Gf>|ulnJCpwwLbl5krS5fPTrJ4>tq)RVq +74p&ItHeB4hL=4`B|kS*vgEg8o=;KR2&Pzu3X-_R)w;!ePCnQ{;jUI@>WZA>xAPe=*hy +6K29IAEe&JMf>d#IX%GFYf^I|xzv_w`}-O)-smx9prgo!vA{OX?cxpClo1GJ*v+q8F3U*z(5wpY))p~ +2ifYgqIw=IX?E`uGxiir|Z56&v^A#@{b+!(0{{8r7QsF!`My`730)(6hX_#Mv3!YK=XyM76R=wxILF* +UD3vYq$7lE`0`}TtlJ+&DfHH&?qqY*mHa*a4SeTlWN5<-`&EN$y4No!syY%*(Sn;J*%M4c6VNrpPciZ +QpX#mHh*TrEI+-oH39%}AMVoO^k8r5U7)ov(LR%I0hr%uw+QkV>TIbRUr!d!2pw;T<}W(oz~&PZ!_*i +f`uGKlzkMGr>-J<1>agW!xjy%&@4^Si{w +V)7?p;rT2-_Qvs_Du+>L19w8czR9c1-93ky?DZQxqmb4s3abp#5Cj`I~bQSL;)a9XvzrxwImDGD#IoWsugPw1%%k)%)q +w3Me`^k8}_#j#k>G1-lQ!0~3N>Xo=u@7tr(%#q_vOsPrrLcCsAIN9z^Y6(G*?j%P-v5+J^DO({)9HVHl3ytGe>lO +9sEa}vLBiyUumni101U5SyCN9{Ll{XBAVDD{NPRjALF{&~S+)z7CL24(kWDcKCpT%+l@t@?)-wmC8*7 +Gt(^j`1jiy^$-R6ar?8@T%@ZNg9l^$c@E**+*nP@WIp?pW^-_~ST2E6so!5h}D&<&y65Z{WXD{l^yZ8 +9C+HByn?XExi9r$nMz{?#gWIeXKaY-p2~zNwnS5%J;X!i9dlZTW+j6|E`55f$3{#WjYp^i$jZP3 +md_yqEAeoub^8Q=PgOLuuSo*b@o4H)E|9${{u$7Rl&YZ>&f34wP1qU-_$Tzk{N>LjGfaND=cY-^xn9yMj9bX~O5&Ck{40^9wgm_e`|kH +Q=-kLEGhz%a9j>U^)n^7|7-NlUJ5Xt+B~MZZKOpJp^ty09Kf>kgSHb`)K%7}8iY?5?8J8syJw`0~V%; +X{-BH!BTRAPTa`3v5AXJBWw$)Aqe-RRc;xJx=la{;%$Y5TwtkEnv!ER3aHyXWwA3D8$epDyD+hqIbil +>Q5kJ90dq;&s&pjCDxTv4Fw(_!FRATuj*UFj+DR4gw$I{EZFS^73xpy{j`;z8h~fv)HarD&ub#!K2Wq +DAOcW*L!lPhNn?rS#=UB(gz6Z53JbBx2ZONysCas9fi{RBIcF|Mv;gz8L1WaGOvr%J$to%JJ8=_w!x8 +t*l>u{S#{;w}d1JuWSVdDFlZh;?vROa8Ki{6a|a+{*v8o585Rg6LJ%egz-(s8QUGMv(GKEH!ibM7-Un +9M6umD3Eh&0P`Gh~m6Lq*3u7O%Xy`^X)|2gq+`sb-M79NR>zRqRQzyH;B}#5eUF$lzE}`3?8oaqP#l$ +wNws9(STU1v{ltsJZ7POTOHz$aF0BwC=8Md`Yha2zuBSjguqFv8^9~?UqF*@<*_oX_1IylCezYdNC_W +E3J)%ZQP#?cKQip?YSC@{QgGw*zaZtFv?v0u|@Fjj2MDFC+>;yx@BAkEPx{bL0A*KL#jOLL0V$TPn#3 +c#1{6pg)DUFbnrgjjvN@Ya{2%o;sT@|Wf17PbG#@{g0lv!pJDc@GW5plAnrY#snx} +vQq6USojvt#jJ{6{UZIyt1HxgloW-OdU>!IqLG)07}LlfvBgqjI&Zq=Es68(4diBgHWWGlXX#Mfo%iN +xAoY=+i;H0_qVss2a`4o;{0(l}alXH0%PT9R$KJAgnWG6RW8dY2&n855#pV~nS5;w-t~Z4E4WD +InYTwk+d?O7CzKR*WUX*Cb(Xs+z6Mzu#EvlNTio>z0$P4e+Id_XM4+p-ma)u}t;f^g$6CydBSoe9VP~ +V^9=Dc9M%tSDtjCpg<-P6NJD)nq=LZct9=g|`Lim}>LCf}=h>YyGuceqDK**9_!O;aA#6YzIhT*W7HF +rC(XuvYNOrT69G3RKf!2*Xc6K!0g*6~M_u>Hn~^SQsZ0{_!#1o?_sC`WWYVO&=di1<>YEvCrfuLLa=S +tzSUaV?~=5#RI=RTsyC!ndL8HXy3DZg{h_WO@htgSah(M;>R=19ZwCU4=(ly4Aj2xxqXGcjU6FLrVxiKqy|!rXz+ +3P7iE(KLA&{dZ&&Y@JT5jNTGuikAJV3LZ*oeMEm+4l$T)pf9=4{2%>v&ex>fBVyIBGZZv-Nax5)mtUV#+8TN7rxYaz0=TdqGp27tC|9JSTewn6 +HZI_wSxNw{Ge6>n)bJl#!=pzV_DTiDzKk*(im1$KnmYIxzF8#cR*9CYnhxKr0Ntc9hE-NyS +5QmO5{ci5tXj9eIKtD`pT}V;@ytNVG1S!CbyQeOcKB-E&~u+h=we?#VcZ@nl?>YE_#AnO0&`;wfY3X^)@UOZHw&s!Fzh(yn>Er@??%p{{$zQr7zE5a-CJ$as=T@275o`@w=98ex11cGF1?+zW}tDCSn-m+2uimFN&`za4{K>;5P`0nf3O +Z?bmu3+T>o(g%Ir5Jpi7pSUPwRepkr%*OD%>BDYKWy>5<;4{K%SoFw?%GWy>i_=Niu$`BPkKJdUsR(0 +j=j%+f3mM|_{V*JL`ImTFdQVw6%+{sgGdU;Fc1N;b+yCR4KRU&DDi14C$!V96^&LX+XSL^)x-@;lFh< +yqjuOv>bAjw=-<)jIkXk0R@efQt!I)*w=CKEb7h$;zg#hQWr!=zVtWxQ-ldk;)30zGZ<1KQbL0beyB~ +D#D@8VXxY50Rau(Z7hTy%?WyQ$N10mcRYLfIz`wX&Y*j5g>LOZr+;nJPquKR$yj@I88O&vE@h<&%z72 +=W#E=hbR$}24pHS;);x6fNS(_af$7kA;SHD>{8!UYtyNteKU?uzahcw0Vx7p__tuo(mb7M)KO- +F*=s)@08$ZLt0(AN8k36JYN&;rRFFkMdEZN_JV~U$7ZTRN_rw=rl?{bJOMv|jBKD$>a)1qQ{lZZm(^up&$xk!Gj>#ZbBBC-X937ZSQpheYtS7;~$3OCyhOFd1=o}3?TYlEyP? +De{)-BY;ic10M4OhMfV@5Am_H<=f?qW*_?|@*@5RI+D*W8yOz+rArlvdJsF5o0vp>L%PmM}HlcibnX@s?>^CQE~AcLn7+t7h(12+ehh45n1HoR!Juxm +_sN&7p&%nZtV$D$%roO@rwguOSCQZQ{o7R8}-nYKHPa4!K#dxeehaQ2HhNT;q_th=4hXfeOv$JdK0LN +&RG!~=DF#0U=8dh&5ZhNJQpFp#d4J)oD*(;Dkww{+3UyM!u!6MJ|6RWZ~fwe8!bt+;}_mO%$qTkoOsaR|tN1PLIJZF9sAPV8d_oKorY(S^~*n^9ZB6t|e8=pY`iAx +>rrl!b)zkGz?Vukm&V%0%@WNRKcmc#7D(@Y<@&h|X+}fOQBtdJW(vqu07}a|`OJ>X45Yj{t-&!YF9#^{&g+}$9pQN~4;)bF=0TRPh ++TpA+Zi0#ywUMaLiynDTPtt+*|sd|TS)fpwPhI2zgYU`aPAL#evQ?B{ngJ}+b{&eFae_!gnimO1ntfe +Ysiz}TS5Q{w?WK|+8hxO#+O6!-2J4wga;r+tXOp@*yZ336KZI*DP403tDLqkOy?crHRPY=-v +l}Xv$#Y*+Wvq5A~vpv$;=#ccHU%3=14S%$r!r;XpZG9=GM1=*PIw1&+I2u+DbrlhLE^2_4m{O)B~E6pH +BuD4lGgPrYgAj-Lbqxw(v8=BJ>K(-n**6eqPSiNor4$arC-|GLMN__x}w*siul{`q-1iMj9dA8n;R*%r47$gM-=_RGA>JilwW +!kpsgtIBePf`JKu|PqVf2XkzXg8CzMf7|FUl(d7oEi;kS4pb4;aoR9;6X0&15Ct>OmUspqFOtfT_3)C<#<3Z!LZ +}yu@%JDE2JXN!EOko5zcBDh>^wWH=sXoK}{TE`uo-1x9K=;=?Ph^$94Cw>89?oZ*JsEtEL*v7e@%H?* +vc0to4wsz|SdzBpa(1{9tq1yjl@=7xdG(Ojbg)Dxe)8dEI6@~_~D`zJlFY8Ti4qVM7D{jdM)!(Vrk@c +du@68`rSgfQq4-v0NTh2#I8)8z45e?qq}9jg0*r|hv)f9I3k>M~5$jYz$o_$Q9PV#lkD)A4`(wL$j(= +ezl#yY_!@CqLpM31TP;ZwY(|hdy;}im`nrlh`|akS#5q>~MmhTSa(9&6UfqNQuN-vVtT(w>rePBmt7` +x(a(TV?8B^Zq2SZwHL2m4X`rC-9!WNVoL +I3X>GNLGh;4nryfpliS4UiiqnyZEZs629W4JcS`-)p;*{5_^)qf6QX_LM{H#Tzb+)~wBn*H-hTB7lwI +e0d6?PC!#B6~uS^po=8yVS8pmTz!p|=s9&;NGz?J7CfW}?E68)zu3eSn?mkEc!WHgHC*4#r+s3$_d%W +U!2G=;Dm4Q?CU<+N3|IqhqadfZxL9g(WSH^XeU4yjFdCOj80qJ0rGt#fPiEFk&IRloHB&Dw4Sb(suKo +xTsI&K>W1D|;+oYpm)IpT2ojwzrv|zW6F{HubMaG<%t +kg!=l|tNy9N0sL6vm{}{02~3SFhwCz@YB1)x6_TZDc?MKdqs(y1$ZmRf=StS3isJ4L&ixyXBO=ztNVcYHa$f*CpsOQ~PQ#Tb6!?52Jd^CyO3~o+LF +l>TisKZ7SM;P<97{y57lx_(plb1erTTj8uorM;xk;B^yG}az74!#)@`TB7u9iP +~s%g&*FXUhJnoH))E0(O{Q#FQd@s|7b3=zgBhY@>=jaY_1*_Uv^?P;wgMHjw;_|k9&h13Ka&yaQ?4|_ +0HZwahYOR?oFl1y1KmTEMH#Bw>p8gQWw9EAD5#);}T!H3i1NEDMd1QU5N*?eMnnF-SXYe}XQtOAH$A|{@o(>=o(lQk~t@d0 +Hl+1apM=f12`o-|7$j`~h@&$GVloJZ(Cj7tzZ1=hkWaA3(MR^>t&h4;leXsTxLwWfy^aX(Y1r0LVA4` +!n<)&V5g`VgURrODg`1!#7%78Z!soAq4S^p%V`UyYcbOaRORl`KRCfg7ts +@sIQp(nvvcf>xfy1v+~55ujv4I}@KKlgRoz&YGh$zgC~f-8ouFt` +FPy4y%>nnT$pwy>f%o^IV@7`gpiNg_u6PTh#w2qdv9nXj;mL0g?-<+AZ^LvCefYdU{;LwC&5tu6RP^PW6y&9NMQw7AU~J_<% +xi<%pN#|m^7|b4ZWck$Ukc{S3cnjlY<*#~{!uXhx((DF`E9t}x4Qv;yq*8a-2gw{&QEvqHw);Sx)FUp +lj!5wv~+!|y1P@<=Z3D38;0H??3kY@qO@(vR$;hv-(f~v&(rOK1R_NDiwRWjy>MgQEbeu$tdIbQ+#H% +(w_ZSyOUUb&$E9)o(zD2Q`6u(U2bcOCtvXeBJ|g}GoR`L7)8QUI3ve8j<|^aIOw-XqgHz$PKx$3qr@Y +LP<5`eKJG``hY70cg)8Sd}s{#moG`iY)YY=6lHIiHmLoo!{G3gz)Z{LWSaqgS;QS4!A=u0CU5i%>y<` +j~53ZbTe+sy?ZkDR?$gPD#DtKZZytdW=?O&Xas--XCF)hds@HOT9jz8*-3_2!coAkf6yV*w1<#k#^E* ++H|OL$CKZx2Iel)#B^0=i8qY?yvCj1zkAcGkBRl^Y#4Fc*WI`dp;3mK{aXak1Wvgyj<~b5`Mg%%KT(8 +xEBZ}R2|gINkW-k?%+Mg{u!m1Si;2ZRN~$^*9%VA*`Ue@K&;5o5dQPg#y98`D94q?2G=k(%VR9J@6b6 +aq2RQ0oW%D_T0A6W4chEG*!cCQDv5V27IrP9zeIR!22hiS0Bnfy8!XFm +a{apE&fW_hqr%yPSEy_s$YjH|BKW7tReK%DSiT#&k$uLQrOOIQg|ad>$3a*Quk&{j%r)7=sRDrAI~vv +6@9nO&I5=>AQ~Y$NpJKB0g?dGef?z;nYl7^MefX9RmZN~hqWR?fdDBL(}#~a+?_?YEFm1sI;AAQl9kJ +?KLX=C`g4n*2rwgVOOnr6&{bS%;L6;%c++$wnklo^meieiSTA&$dldgP>OF^r3MIm +g{iU6?LatPPkW4R6R7=VH+h^-K^l1OUvN?w74%m7jXgS^eIFAM=jV)Q?;-y=!{$XoTz@j&1|-$TCqw1 +s@|M5%?oCgSZ1CpyTeuK5g~t&6CMr`1H}-Al8V*AVz>3vN76YT}wMV7Jo`nKnl}k4pq_HG&;y-{o291?0W7wa+?o^{x%@|lZVjP +9nW7m*+KkaS6ITe)?Z1mpOsh`9tjiOZw!daY=fjLU1eAPxxy?@>MPVpE>FKx&y%Eo|sadGP?_t=jrkM+S70!(^NKv_d +{@tH3!iniyZ^^|yBz{E)xoAy(BX3{%>SOlr_VcBFX`H&#oEk>rCkO1sjCz+{5D4)~k$7<}zYpHXaP3u +kU%0qLt2MdB0VoHN+UDCl{7&K0?`_V8>QMR7{1yBG0D%g8Wa?tL+5ExA5&Msq_=YM+XCl*Xz&)enLdl +|pSowv%YK#iZ2Dl&oYf)IOwnME!G!GH!AE=+gKf>3=xO3J;HOtOG|;ZiSg|2Y?BvpMdG#e)3m1`qxkV +0hve?BN+^57#ia!h9$|*?Ri!lA-PTNPJqc^k_4QBC4iC63O)2@+7D)PNziYMeqrv)fqo>=@TUMOz{#? +0{21M!g#fx3W)rWhEQ!NFz#fVLIAMRK-X~&UdIz$Q(tm~&*inmEphyIQ{A?pTn^G~%!1i0pg5KlG*Rs +uwXXRkwHlCbP;KJC4#}Bdj@kJYw{=U<=1M2;d3n&kdVPQL@}Ph9`u^nQLCL?9g=;lriI`=ZycGP9<@PWfp?gBt ++Hku*19NPzEAo{lp9Odjy(H^oF@;3oo?RWn;T*`xZhnXb?)JrvDA(^7q>rIEYC`77JhBIJ*C%{_?Snn +8rv>E>$J%=;sA^oZcvncp>_=XU;znAzuJJD1icij@2W2Y17CYkJ4pQ==3Wa~Tc5Z>>jZN<9xTXy_gGb +qW==_0yP7T)dlkbhzIUN%fp&AA<$;W+?8^aTXvV6UsO1qPkM?{^O_v9(`9kp8nJInBTwiW$-H@a!rJP +$RtpOUtZcF@XXD#6}g8Gl72$E1*Bt7@v{vyA`p?7f|E(NlWuDdllw^5RW(T81Y1WwFsZN5(e>!L9erb +2b+R_?Kw+sdNV23b!w#&aN)9QD)zd#xZ_l&dw^7=2ais4h=;<+c4NMBt_(d{JUeJPY#Yg_@X4qD|gIK +!ZWI`gS~$8;xB(#dR<_D^N|35=O5dXqK4X3s`qE3BSv^eMh+R#M|Cx%Sx3Uj!&H#*f(21wZ3? +mj4Irl+A*R4qJ*FGpbWR+f$RwLb$mbG_MXhz>Qtm@_uh%wSw$?PVaTLQl{=Iq@0_e`uZte>A+#@CaiA +ZC?U9Rw&60@pFfS)nChX;AhIQo5IR5Rdx?|RmS;sIG)X&msS>I{D*)@`;rpn?7`xhQ7ogp19bazQEsW +6zC^~mM}BFhErajm)E`=rB#G!sMkvBni#8+Qwe&z?RTeL`Q-$iWw4t?wGG=9Vas+;gZrx%F{VT7MWv|y@eoG+}A&Qx!Re7`fbLYGdoy&rI=W{UeW@Zy@SiB+^N&%rMwP`u=O_q;sn{Gt9jkJ8e-3@dFuSSuht#^q7wi<1=us8!Y9KrZ82JVpE6t(N=)+;4jcM; +!AW6{lD9XR1_9=FU^6EK@Yd%VehfU@=Xb1-L+6MIkprr1&a!rdMIwzPxZ|LBSzR;|#NDUpT4#SclR%P8QBB~M1J>6FWR?(?tF^~o0_* +y%fl_W^UdBRK1mT_79$Dmps+@Dj?8Uw$F9KmG1U$bx>vIxv$)VmwgPQcP-ut8K3G}&WremTwUl>Z2JWc{ +xBq~BBMjV4@kdz_x6t2aBYP*j=2%1H~U!?`bAfx+vdP~hZdgsW#Fi*2c5i{sd8Sk!+HH+hRT7Dm$@G5 +M6YRnhrgeE>vGwC63G`5U+qZsKj2*Jft#6aZ`*~ehS@Y~fOrhT}_M#4=?Mtpo5f-;-ZN)2(I*mKXm{{7H&r +Wd{Eo+{Y)Tj!5a%iUS{fL7lCigTqLLc~Ew@_TOuP3IxKU2|2>ZOmLdngdO?2qAzfA^2}mW0ValJu`$V ++?wY@~y4IXZy&~Zv7EBldJMScp9e(5~bOnQ0l*Pp08l_Up~k8a0XN~I78wbgM-izf@MF|)G!3-EHWQS +x-r;w0;Z}ombDRKPHt8wwX+<|^Vz%hE@KkHiapd|XwH2W +QpDKc1hk@;KPn+J~!GrVU<{S%w6=S5MhfPV`R< +lHZTonI9X*rWf|s=eS_t5ylmTEEi8Il`}13?5rSY{g~mbQ1)#RB>amN3+bwJXdef&#T=R+lJkTZG#GI +8&+Tw4^{oP=%HlTP{qhSXW(y9^!kK@`a)FsieBuwm0bKa&&8A+v?nQ@p3lHfhu#r(l-eDseq}Vd<>-i +aq7?mXG!lv1wgJUq$9ZS+C~#aU_{(#kPQ&QbyHR&TFA{~L{_aim8P9{Pn>l%ZF^E{~GwvmeXqRRRq;q +N?Trhffr-RT}cds(MFvo?KRl_hRM7x&>f{{{B#STS^B#P7-daR=pik$cbqi&GNbE8m_xgxg~N2rk&%x +)q$?t`!<@%7qEJM(&;d0FwYK3u_6>YfQ=UfS-dvZ{d;(3xiQ;U(Z15mk)vQZB9mQ^XrR()_V}9jLH|s +bXH4P%x{{O60=Y(7CG-C{umx-gpGnY;AM4WDwJx6Bm+H+51qA%ZVSz$WN{os-kR*!gm&-heL13&H1iA +;*};vPCRS78M-3&MSdDIB4ro!d<%>dOdrN6J74SmLRO)+6L8!_xED&->g$!9-S +7^=q9-^GV^@^9|QvD`V4RqF`b7E@m!V-kPxM^%ahg84pj5ydUm*_8#{Uw?|y)pt4io5AJLq>R#3l(KB +Og)>E|_K5+WLHS_HyCcey02E9*8K2arZ=PR3mUG-Is8hFlnjRGVYe=4#;?U)s@67 +$V6o<-42zV0piNgAORbFPrnk%Ep&LryKqaeL<{mwyQO|dm+^@wo{9`N;kI4>vC&C~ogAQ~PF@O1H~9W +@nJfFa21eqyk@(GIwFac&x_W00zgJ89xi>z|MRz8~yEuSw+fQqzm9N(1`BySuUwcKY%LznDuZbsgt;q +a^wm9$k{fpyM1YRx*``r_ic0B6)>oRrC02HT+E6%lUyv(bylvD!kTDimXKVt{aqG?W$J9ecOSE5E0#+ +%(RL$3EeUoGZ12van?T$nZ+lI^CoSr)=vnh>YBG!qm?2}_rs9$?h)NncgRWInV|Kq^A`S45KXVk)uVG +*_FAH^hTmTphs4X?fbaaxkh{}!;AOG9?0EFn7SFc~5y_CyFAdN4CdXYzX_5kyV(#&cVqO?=KE>@mO+2 +@;8{+2UJx6FYd%PGA`muA%*f*eSERT7VlZa$Y-Ea|2DV^J6cN4lUB~HnHFLU)fF~UdxICY`Js%&!~9v +Sk!Iyfw&Ipp-GjAF1yil1ls#5mUL-qT6ZYKQq8NT+@4-!H5qSL^#?nab{AANR}g;EIQxWgxeBfoyb_% +gfTz<$H`@Vfpr+`nkBOoPJYmG|>T>HJ&BdS-uhImZ^DQa5h2)U$pZCh*Jf-gqEK +HFcC4@^IAfKh$!srJ}l|%`^Q^puD#Jk9w8Nqx28wKlz{c9{$B)Ukk>+4*4N62V*FjKxvBPP=e)f5~Db +ZB0zE+$6+M8)`g#Lhp(kygl;mKO{1KIV2=RA(2$@uBsfq{;Tfp2Xy%{H=OrQV!(u@nAB4AU1JEI}>2j +!TY-@|J!DFy7z{Q~30hHSr*wn_jUzCLFiPmZ^j)7#G+e*LnIVcW#EeQvnyq2hIod{Yl(KZylbz<=C8? +d`Ufga0R-g4WfII(#o0v!_xL_pYYOG23i?P>0t8;Q;9J0e&=H)jSZW+c$Dsj0KSZIO2}FY@HiGHcmeB +<~Au0GYM!_)pob1X-1hmFE7?#xQpGiiWNMHC~-9SL;h3BL)-13+VS-;+JHc<;!DYKAVe*1tm}ZyvOlx +U-|2WA#i0-+Wlc=r=di95GT5OlF>u1{TI~5YIJh7sY)7Hk_V%O(<-%<<1IcO*vg+cB83ymUE-JBoy=Q +$e|Dbr+BcfUA9ht}K~s{~m9@V*mee2n$06?VvOb-|JUr~VegD>)R0|G7K#%impPx%q6H(d}0&U+^siF +6fUSCcZeDdIBPU3FI>I1UtIn+$v28|&p8tU|oOD!SlWF^9IlavU>mjg{HjcM1)XXqVThuS!H*5b;QCq +J|1ygTkh`4T-(Cz{XinpNDTVR4&vZStKEwY}Poc9?rYm!Y#oXx{nkcoriIu{GVd8|N?%WbAauuGH`M$ ++g_LWK2VVQ(iksn0YnCLiAsIwViu~KEjaJdOk~MY#}sH=AfwkS`QcMak(WjD!dwF$3;8hmdf5PI>=0^ +rH>@gg@>@OXIP?98)|j$&bhbKBf0AMpfG4p?fXn&^Xz&JS0M1<+LYt|Fw@m=vb@NSk)n8I2UK}wgEX6 +vP@3W6ajx!SkYB1Xa0jt`3=dIh?JkbYi@pNFj_X1Z9#ZwhD#>^eJEIxuY~kM?t3$=DgweKnk=&~q(c~ +$;#b^bI>kY=3*o=4B8{aFtyc2dOBY{uqt!NdCYCVx{=_FAF$d+Gb8o~O44#!s!303O!uKIvwYVUP{Ug +htA7Y??VJ#YkX;G0M#N6|D)n9EMoS%aayQ4k3B4n-z?3tm*QVIDA2dYAvI?C`a+Th{t&{JQgyhbyxQ1 +3|>AH*~EzK0H6Gs1d5op*VDeySo$0Qr;Vq_w|np{^^ekGz&$?yW~K!HyMjTtc-5deQo6dTB%pp=LbcU +`V%gLfQ)B)6Fg&Od8Q*ME62*cC7{Gfe>?j;2<4h_$bKNgNbzy$M0g*X~tZTi99e5Tj-M@m;Fs>S?78RgGrW;0C$z +-c}F409?7Ukhxn%jGR+%ujkEID%Nve)hYmh&j2Xeb=(*K}*%p;R@7%HPvc3M{{e+0*zYf>CQTbs8_4^ +^OK=XxUfcBD{St=pdV}&N4nA&3vQsIe3eg8?84-e(-O5%F|~WW8V9cztwR^ps`&1;>PwSIXb$Z<~Td#1m3F67TcTG&S +_bThqaikA?%vT?p?%>LCBsY0d8k`4t$6$YKfJarvQ?|t7rCOkdK>0P-)dSOK-Pt_?}w^uE*Pn}6MXU) +FQ;mQ(1&QXYqbumX;JdZ-6yawwS&Ak4~j`$AmvgTuDd2EGLV1AJ^xJQ`{!A&uJj2H)W5k4;1FjZIkQ6MsG6?_lstwr +wnuM{ey?0CNx-gudhq1lViq6YAoXmPx|JV&9hfXS6G0{cw($Cw +BUq9>TmzYYxGlfZC0!d(13$bMi#UvBNFVgC0nZST1;|V@D#BPeW +ENV6zLQ+DuLM@{>7*}*%By1P?&?Vs}@WWkj6N7(W$};!R4)U%qaLL6VmYCq=$rfd@XI_+KX$U1`+EuW=2ChBGJ$CqPmoRL0+~c!mk5-EBsf+k^0D7t}=f<(4F-VG@Cg!;|z(J!C!B>S +_V~bKE{)xXKq(ac`ueU|5z-P!xVvA8SA@GGNWK&hHpLEan@qtq}hG}DR)OGck|PxE+s*abbftUhuDi> +X_f5TFl|cyV8zUIQ$@zX2*Y^K^5t$+Ca(qBsGOi)?8igNy}R@l-*}m8IG4gPv%hFKqFc%3#T40TSgc9 +t#3SFdjw{EZ7cQjqu^k8f+gkRYDiTN*UtwX#_I1AD3=(pJC%;ug@$ei;f4v>IyW$u|VOf2Kf*=+znG9 +RwWl9{pP*v)9y`(5dhw)&RPn{E^;LRKpby|9{*x|X)z`TaNk9gH3=^NtuER|TGC8rOkUOB^U{60)dd) +N6UKQ@mBYo8_sx0K0s9qFALm$+&YN8R0Xa30+j%2lhabG7eJB8qF`Uf7#Fb5^Uzq0ShMZbRX4_1W+!l +@INyV-jLte3MloN<5T|TRtFMaTk40ddP~|4ND*bo}cmgU|TzkE)&^fgQh$$$3t3T%G~2n +A6LYq1?g*9;~og2OEb%*OQ}Ymp3wP7mUyZNt1;4$=k+zETyF>6-Oxmdz@PXVUAa~@H!l?;-to!R&H;s$tQ9bh8uLK7FbEo|#IQY|3{uWL_xFH8-C}VolBcxy-j^;Lpl^9H!&@_ +;Tp%hReaG%Q%qRrw2rNIaXm_>V37;Nap5kS;z)5(DmQ4 +F+RxJ{?N!Z(fq!P|PzF#&XPz!WwH7fVubH#ECVc4D9|0Lf6;Hdq>M+kn5dw-X5fr(N({I4%FD;8b(@@ +*AA)WfQ%ewK@#^?z#h}a^@qdxh}$!=k;u?oU3|YW)dj3$FFlI2mi0Uyd^Lm$6q}agnuY^K{8X|>j*4Oiw0K!#Aga2AiR6jiFXSjuahqu3jTj&FCiGH+ +?EcZZIzLkf7;#B;KQRM4D@VFc(hPm(i>~M6w_su&JkD!i-$0I~eMh-RlNlO;>=?^%?s7s;_&zaaIMFl +f>@Nm1RsHvN?#DzTg$+2(GY@j_)f^+k(KBpHLw70GZB|C2iDg3yKcS@F@W4~$lw|t+hQ0?ec*B_mGcQ +o%NQ9GkGDdz?$BHuJFFT{lQV_&|PR{|pw#cM^87;K&2g_32oIV|obuqPFpvtc4{{T9pD^#+hLV`f)ZB +%e%TLP_;VlZr$~>lXOW`p_W)@-%Rc5Y;JL`8FxDCs=vE9Dh00SNHUIn`JOoc<*0tq}QX+{u+5&Z>xgb +*fmdDRL`&@JZAT!wEGk580dF+EAL0cDBuQn1!US|j|YBuJYu>Pu&x1c3w@5a{3*yDl{=b4rQMmjfOm! +4cu5|3=eP8@*_1AHvuBQ3yPt#^U#lME06lfYu15bbSdYtrKiGqRB6p5Fp +`6U^lY7t|s^XaN2Y#os6EWz!;3V&sp3k#{%S0W6YU6n+8}!9Ig=>tvl-Zn8E!<<*+s7-N7}*h&CHkVp(Pbt{amL=wOz2TWX6dYEpGDeI3R{&`pv4yYu +X0YVIf5DA!QNzu(qWwUspL!kWz!{(p(Y*1}U?k$7bzKOpgUa> +IWgm7#yddcUFaHUA|lL;s5P{s}5W-^23fsN4bL%@0&wv>#C!_h%?sU+4N}{o9QA&jwUY&#*fC1$)emi +^yw*!PZT-ru~BG3&rLVjy@r)%a5765Fv3PFWeo!9B$FM8u?sThv1Ch1#+)!GHSw8@6=DRh|}Xmw=pY1 +BGpN19Ac+u(B9s7BDn2>bTv7>=>7Hb4$J;hsny;e*y^E~qemXYVsCpRo~DA5(*#NJL4h40x8uaSJ2ZZ +O;bWtBn5O62vTX)&Po1)8cQIHuu+=sD|pGKyn)nig3#9-SpvFy_4<>4) +C8LJGjKPF?8&cZ!`ZjyM+yi0;i%$|%HMCAqreqg@)y6-47KAlPiMIwwjI3e>2Sd(?H>#w&oWF!|jtex61Bv!{F;JN@+VAAHbglqD#NV;GJmF)&j4sTmskA)^n0)*#&!e{2YlE!>oS) +TUo&NnrDt02i~*O+vS@uW0j4At?ZvAXp>?GpZD`X$?_exDG-|Qh=`@aSPx4V1AX}g%X=~BKi``6@T2u +7E_#VvB4{-qg%9ax|zbK8}?J%pejKFd=5A4=e8a<&|0FKI3fdg6aF^qP;|jkSvuclN)sYh*4qEsoySj +w5hwAdnNonG@)z@rEk_HL>veUXBmW~j +IX)dp(g2dI5}Y`YWaXGH&Z?*#gKD}TF_f5)MPEBfPgjN8ZQj0rbg-;c^n5~eKNPnxdxns#!7rL&0FJR +PU|%1q^qmR?CDz7I!eKhcU3rmxcM+N1k>|d$dueu%oG0BdT8Pr +G=spmDywK?^rmbGQobT9dn|+G9aEbEE>q$g0B^9OPh7>2E$2zdi!D +=jXFrEa(2&^V5MNJL17GK7$~$%-`eigLjGvn4m_qMXP7vcPi!EWlHe)I_!koS=6X~-vQOt1i$Kjp9;s +{X4?7pHRQBKM&Vr9Q^r`umeCs&gww9PTk+J14{Sln!noIH9HIN#o7f`}Iv(36*E6~|HD#eY2V@9nr4| +ZQsBpsfwR=vhvm(T`Ezcm?*gqiLnznIHYUc3xbEasF8-PJ6iAzH}GWf!jW-Lf0;_Bx}Ac1D{=Mh%Q^q +?);6IOc`C*kQdmTrmtCk&EQsvbE5<4Lx*a9c%Wi`K)yQ%|5V~VY1lPTVAa;pyTW2Sx4N0^Y_WnqicD4 +8rW5312i&7)GS3VhfIoa=Nf~7hf70f_-%S;@qjs|C(HcvGVJw37^C;1^Q!&HOHl@Ypi*3!bvIpm?y`f +L>S-{;I?|9q?RdjR+nNxv?je+)7I;whg&%wLE905KfJ5G> +B(3=SsO7>4>(wg8;ID9{sKAz@v#xlLU_ZX0!M3=$ZDE-%>zyjCLjc|hdKgVuE&-&&b$v_;e>;QNdMB< +&;1F~K&c>jV(1k3C3W>-8&!hK8Vh3m_^42)ME@W>ev0oD8+V)FUJ2<&@^*&h3!hnOGl +Ox$09@e{Dh}v_lz{|Bp_k)vky>QKSU9CxMB%JIr)TATrZ^R5;G<0;kSt?SsTP8Y +1%CI$v7(1CcRuvD6FXm;Q;CU*ToAB6>%+O%-C98^qB&gzh`Dt=m*h)Y#ZpFxA`$`h^)Sq4)UlX|C +(&&Dg)xa&Mkqt#hDjTY5*qSs!kv+ILPmWJ}JZa9J@v&OA}@$T7vqwS1mb>=+MtaE`c!viFLaMYxX{H2 +jdsM&%gp+4HrS^G}FgCWRHTd{{Ue?Z?{ol~fkjxAb6+KAlGejP`Idyi2|T>Q3y2XW#G$Aq9BcXp*}5~P6>occSDJP7zXdVhY*=`;I(NmDei=H4^>tJ) +?yk}8S(fnTX(HY5N?}+!Mt3)}pk7qpp6rFDN8vUhQxA7-Yv=o)X#|)k)~ +&tN*;+pUWGvFX)8BF-lkW0<&cr!yWP}Hs+k-1LJj~b4c^rR(L`QO7lfkfma;!`=DMk`Mgj4E2QTSBr? +krmwH;SOe+;@bJ@f9Nq`f9b`6PuaQK6W*60l$m-PNFqdZenxtbpSqbJ|cqk41gR8n_YG-J6THGCytY? +=$plS7>;iG(|SZG8^8%0u2N@J>5MvXo7aGTWc7BnwSMI$RGomq4!1oYZpmzH$}|3wha*_re9g=Ti*7! +hYbo{~E*`+qAyD>p#YqUmgD$xO_SGdt_l)j$i<$pbSBRqyy~J-d{|D^%>pVR6yEq45ViS3i1HZZP*2L +09oKt!md2zbMlg~8`mKKF-cLNfLmEYgn@zTmGpo-;tZ&+=`D19#W8%NIqP-sUy&DP^GG2wpkgB!;NHB +l4|H?9T<;Tr3k8N{)@xuSkixB~2mHfQ&@NRBA-AbXr{j*OLQ +5%Q>)awH~BNN7yw!9p9OKhU(f$?)Di{rZ^&ZDwcm$lzyBMmxcu@#TRq$cLDu5s(gMI&=*ws>n +?tg1@&1J)FkK`^zsqdPKboN!UqxwJJOxVx?L{po}(Y4@gh_-4`{NF;MB$4>loJMv8K$krnpjD%vB}4%)FqcDKSFbZ%E6=<9T0ZdY>-Uyqb(uMk|8=}C@#D!Uo8S*c`> +2HJ$Cvuep&l+v%t7Z%>QIWvALS4g{sTs^@Ja)9q_Yqk#5vBx6RW)0pyc)w>*|LS)z^Sl$mK_^DACib^ +w7lt+SeqA1>(eqc@F!JXBql$Y?DQIul(}DA|K{gzjny>y`)d?;Yh8@2(uTGSs{$}TXD)oT2>_khDWze +4oTezUTP9zM(pcZ1TD2X4dA*>NBo{H8(s#wTL(V=r$vY}a9c4StR2^7X;XUj?ul-eNB&|BW>~yqaF}Pp)x +0WqE7tFr1AKv|B@LI;mn%5W%^03iFLG#;Hu6d?z7zd)>C`rFZVP8(Ff4{H)03*R`v?_MOLIzw-pS8Uq +k~U>`;(UGXcx92RJylFsC$O2QAVq~p7WOa4&hd2nnU+y5SV_w9QyC*%$+fB2#J%Gt0$ek6s +D@@1|drW%KNro6zD$g9Va~+?qxpqV{_xk>S3(>tEX5Izq_}CkD1S0eRfgS8cZ3OA#v=bsW(NCrubU<%Qb$R6}Eus-;b>1-)~)DlvqX)v}Ybw6;S +upioeX@8{ra_*(98zf=vyWKRQ~qDM^|8>% +vo)agXx~Q*{zDFk@H}ekm6&3YQ3-LWgvRzxnE+oW_g&?~Db1R@g|p-M?K +7efFGxQ4oRSf1ukWis3lPp$to7>lggtJ{K@CL%`PItcftoA^PB{lR+rXKj;gJ +hGSt*m^#|Fz^|xGgP|-Bf5Ppw+ej_bTG`_+zo?)nT +1s?XKaKI^{U`fO+zLl`HG4VdXOnIis_@K(R1O&OQ0{!?ivdVQTfMLiFKnx54LxPZ2@jr1rnDM1cW{b;a1$k2Lw(uLIUu*8lOE+miN=A0{(4RVuLK`trm-2qFHzdX=xs;4iQ6Ln<- +DG32LKU+YSjZey7w3i@;y`(-ARqyfESIbg!Pt~h80+?APMMEfvX+71r>k8cJj>r+9-4+oaQl?1NbFWe +lOi4Z&(e#~Uj|Kxr(mI)-eEVu{uV@HhwG>_aCHHO^gNO3T$8Ep+q3I^uWO$uNG|_r+}-}?*j~Ya3`ZT+Zxj8MAJr9oJ)ee^XI2-yct`j&T=5EwX +}J1bdK*qWYW7z%E=q*J+(HtdpIJ(OKf^Gs6fOTc45E13tOr=7zVJE4zpEg+W}ggk-2pqVztVX`bp|tz +=3)?EJi?|eiTKN7P*4i+PpV$q6{VZ8R_tGFz^;BkJ=5Apqxo;+DmmoMl%SVVW9+=I0ek88a`s?J|4kA +x5Gkl%$1kT!{Q7=;tjMS8`dtGQc&B~V0EK?#Lro$*_aF}RIEb38W>`4N78y{yz&v{m!w?SZ`VMRNkmt +kgQ#{m{ONvK1te_>o63_A+`e~tvRT9=GYRctnD~^*>7A%^(jx(1JRc0B1)(yx#A0w8gjuRI7!7B}JS- +ZUO(o@OnRbyFAW9BYu4&q)EW&+;b=tM7)y>}g)SDH?~2MNM(wwJp1ol+)?7sDCiy)6sPU?;q|veYR#+ +?zpNf4e6$%kDEI=+1B#G>p`vQENbVPb1vjS-XqHfFq&-lVn<9cNhxj}6cbRG`11$`9@!wwiQ=E+Fi +k>&_+{9o%nDG4h*Sdj%w!Keff^o1b*fZ;wx#ubRT6tq(5O=| +~={up#M@huy6g{Bq3*8i`Se28xI8{7t$#6QVjCGkWVn5bOuD#ZZsVcT|Kn1VS+76oF&wfbL43q^w&Pc +#MK4m>0_I+i3g7%G|1~;(1-s2a!Vu%x6paP?aFXD^pq+K6%TdUh4wp-cC*-^97x-L123+ZvC4>hme@jZ74uvEad0=f`EA}2Z(^gt)f +{%lWVC@Wh$J>&dOy06c4quw}pC2NE$+>2=o=4=3JWUs#d7TvUzUNmi$n(kvh59@U?oWX2^s?lxE)!Z0 +2JM(uj;Nf>eIBU@~uEOyPy +i}-h6nc8|-T@K0~Y2NNo$7WrHV6H#{Fk}+nBV6wS;#Lavu&|ALD= +PA2iq035{u8w|2mqnp2^z5;dwzT7jG@WHoBEuxAcR#WF_K%xa*8g#&on?IRsed^0N~-GaA3N(m{~z5I +H)ghF@Bj<~Q-ts4E3kaz@!&tEmjAcU^+WK_FAx0f$Uhx#EujSTpH@&ykga!x#w$^Ykw~?$ +o>vPj1YO|eWV}OAx$N<(wY)vN?G@9aVcoEx_yEtVw!%PROcBmYA3Nd`~_89U=E6^cF77h +Uu#L9ug>r~v=!SB59LGugTFN&1-$L0__ewrO-5=lbaEzrO>AuUSCf>E^t7^TZVS#qu9#NOaYo9~{p=H +R7C#|3PT5mrdD5IdkQrGXxrOs%%n#Q$;Ilvr+cFGEndILn1=w?klsp5dKEaR-7B60K-;NTS8yi+ct0y +0PqhbZy)pYyboFaVe(pwp8R?@$(YlYPw{#Y^a(ixgW2H~7uHvGew+uf+!YH!P%-Dw41P|>qW6>*TA~V +0o-ho%ByJvfX3Q>=v;yya!OppHrf%2fK!yDa)6b!OjYW)HN&zHkzXI9>ETh)mwRSq +1#<-c!<(tjx$2xXxgKLvT~0}<}MDCto!BmmdwB8*Ey+#Yr)#;o)oFLgRG-;V8rG4uK@4w?ZLlF73imd +dc%5|Qma>T7pHF4<@)ZfXIJYHGgZ~?^p|$V+k^8A()7XZr{pO^@k5)$vUL^(Zu)~%zLCqlVY@T(nCqp +}9h{v_WWQ(mxe+26T~_$VukKrmrUFlo=NNk2^GtDJ>kbbSTx9RXV@g5LeC&O`6Illf=jFEd8Rf~$XBW +?DF1^2ZcMET^B)-%I3-t(I-X2cgDhK#5)_e0Py!hxH9sJ8$HSokTn;q-Xuf91cQazuT()Ahbb)rxQzK +iklNSm2;;D-&us4Z1{8Djd6-79zXTlL<@PJJ3e2TgOFs|WwAj{IId#R%k-%}Ma?`jfd3d +FUtQ;jx?_(jz-0oCbG%`#_05CSua=KlqQmlRRzWTlkM%*oRfvgg=`u|KoqHYr#M4|3Fz3!x;KM)c^f~ +OYM-}x_=zsQFV*EpPz*IX`a6SQS|+@`zL~oc(KGVd}ViH|o~!piAVVzUqYoRi|)L=CYS!K~zu!na_gO)LjOW@8|QU(W%$r!+X~zuF_7}0K;BgWR0j2mhw3>ji(KG`npKTGaV1p_Gq?g9Q0MUAl^us)x1GfcSake2Oj +{EKSj=#c=AbuO)v6)-P(VSfnh4Z+)Mv3JJ>2sdC6Cm~{Wj*k={!3-|aE-g%Tmz~M18Ie68NCEk5!KS> +ByDf1v+taw)m>o$3pCF`SKbK%i(*{&?oY#6Ipnvz1#VO7U4v>-WdVaO_4K?D##{5KuBxppjaFKB-<)RkGvo_4^`jv?|*1kITG8KzvJiU(1iqsr~tK)}|z=3P_dw_j* +-yJ;|afKq&ZKhc+;u(OSn`K)SgizprOw5*P4hel(tiyDzS+SpK?8H*WNL<=gAm(GZ0X-){HIW2Hx#ZW +V6+bKg}}&=>PY#t^?HE6(=%TBF*0UYx(KzJC9SyEvOe2Z;h+-6!4USGF%r=5pyB=RO@ozW!FnU|ZH<6 +#|Xm-oHgkRjwu4c0%ZnWK{qOBd`!+5M`uAv(T3+P=Yk3x5NDM}~1&HOV`vk==)~gBmndff0 +!so5ElYKw`BzV=8(ES(}Mi>7w80XA=5X=T-|&!P@Y0ca(?0a444GftEk}W<-0w%i894aqa-hmezFBn& +d$s0-Jkrjyv4bD7csOx;~ZFTXqlc9^lqETFlwqT}>`FZ|Zd+l=HB}yIZXnn4yJ!m4(;n$;c0h=ma=KA +6zOC_)Qe1>WWTQR;~x{6Xr}9cKTLe>Sbhr-7*-c*r#}&>GxQ@xEuN;IKtgzwHC#FiXnM^Z^4+S +8V=qNxkX-6YQi1XZAqGvBhZRkkz@&EYUsJY_^O!H514KtyW@C#I&0ieg8RVgJH4Vj=ECl2n?Z%^l&|! +Pzyp<%GZ$UG+0^>zPn8wwG#0? +V=Epk)2ddM+Dio`sbr*jg-FHcO#}-{06v8iC5t{?UMQ2T{os8D*R$MeKwEhR2^|7yGNR6=T&kdGbOHO +I>Mv%9sczG1fjQ}rgtE>tP-_ZB8q+FXw*Fb80xt8Cc7N{H2o|0#-y)2cIOc$W +b>EwyYOSW)qCBkcQiedh|BWDn~60IRJ&0F-IuopgrQ^NLITn0j8$yLvZb_Fjj&?#_xQGDF*&JY+6a`L +vO@O+o82uF9fjl=kVpfD-rZJT#>`Y(F-F!KBUBJQ$(Ir)&sueAD?+zmS@nvST%@HH&)FBtqN9RHIu4> +H}0SnmJw{(l*sA&^h|&5n|iBXY9CAL65dddbj;Mv7&}nsj?r@Hh}k3` +#mybWfgf=%nE22fe)tY!>PWw1)PV;NHBap5mfgonK!2%vsUO@(%l*HEXTCtV_NSPK1IY{Ea18qm!kJ* +zCgRc_F$+iG_{*XFt&!~z5IAtn52O*EKff<>x^oxp>Yq;R{0w-)m@ZD$3YFDt +u!iy024t7J;pZM_P^wz<5GK7+7x4|$eLP)k%w)(u-ORe>jii*Qdzl3(i24PqE1W32P)h-de1`}pFwQY +BIwfXi3bfU?J$AdWZv)5g;3g5Hdr>-Xi3vy&RO%E)`LIf*7N>kS07<#Y_a--}GY?<*;jYPQ4oc0&*;L +aD{EQa2m$JwbY(6PbR4;>YLyCl$$dz&I_Q?SRX5z6EEteiH?%th!BpIkZ-u_~bgm&g+c6?B|{fuwR+N +zSW-F!3dDPaeYF7}LE3lMltLJWMcLuVM7dqUrhQ4w9s(c~5%uq>mOMsHW6I{l%JS$ix~{WjS_4_}eVu +Te?g3+&l3Dz`RsR<(No%Sw-7t;u%%+4+J>a%Ml(deWp$hb+BfUE0t>S?ark;m^!IW3+p4%RE{v%L7~^ +O1B@#d_U0sb|C-9fwnz;Iqp9Tb%3vIOa+0o`)_QVEJD?*CS%mkTwjk{nYI>RlGRL`QB?&Zrv +)`0C4Ws25pO^BSh<0{a1E`0iw7(MV$ +y1IHY;d}Rf)68=#>f!9G#vAaxsbJfeGT%y+9pv=EROed~N|R5Y5eIrmbIn06nAa+YHc)IO*Bg85=@1G +?Igz^vK;xB^b#*~y!>R8FneH`C)-&x$c*9MuvjxqBSZ_(X1rp-s7)y&qU-KE|^P>iC6rid|SwF#g6s~ +RaxcUudaB7BPPFFWNYvNnMP&`!7QKoV+Sm}#86{XN8<_l5!RXzhHn{MHZBXzlC%$CY4yt(-;tsO2BHh +rF&5quI!MqNv&xCDG1IPb=ptj5Y{=+eIu;I(*ih)a6yy!UT4As@<6lyN3Wv-f&zcbDl;SCBY+_>HnVr +aQHdG`GYEek|qwsatTgIF>)F;+^nHD%#md6eS&Dhi?uFWq$giah8IX(wqr4uEb~Nr#iTXC +0+8fn%NJ@S-js?0pAjxk%kI+S*NeD5n$DuO?JQbvkqn+%n9J--np}`aeGh5{s$6nF6;3nGQNl)^-go# ++REB|seeixMF5gW!IrC4;?Jd+{rCRrc%I8rVHg%}r=j&*o0`SIlu_J3}%k2VMQjv?EK_>V{%)EAtFxF +QE8c`)IXUvv@8T7FiD4dA8z{Zn?4oL?TJH+(KkTwMR5n8nCOMIkjuX`?R23SEGykk7+MKyVTrE?vUzET)GX&w`y+n8%sBd{af+VF +F>VXm~s{#wC|6#Yz}pii^&Mog+Z7S>#w%V8YBH{#qeKqPVGRJ)_@#QrCDU}uD{BmdC6)k^{;$=hlNt* +Zlq^qBqU|t$TX5%de{@nKtgP^>BfN$SQ8-73`V2X#(fa;Q$i#(zqRG_DTB(@fcz2fx)?Mov~|;P|BRV +iR-Wrv4Z{<~onpA)HXwYYReE8J^+coh?L?d=diK(j2*SQCI*rrL>Y^eF8>?&i_OTeQ>T`_M3~0geyF~ +-Q)j>x{I$8}@5SJUoYT{{xHA=c`c`B8*#8(OYT5qP-cSPWyqP8d?+MqpIyn#2W0s6URS;r%3wPQ=ku( +W}pVMicbv&ZRy^YFD~l(qurl-V&f?6n1m70K{K&oPUxYXn5#j-Ia`ey-OBmM-zc!>h@kl2ZlA7wL9K- +xl@E*cg{s%Z*+kmVhcZ4kL-eXZ&Q|fFgZMZ6rP5r$H{MhGvS)i)cLbtm4^PJe+R}yqzasA84pUF6U$l +?c~Ycm8Xho8sPvc8c{vm$WzI`hHwF;q}tlNm_{;fNt)4VO*xI_q)C=V`wH4lIV~g2^?u&+7EDGTxU!p +~5P^2?X4S#p|2N*Jsw@=Xi-roQR~eqWFNe4vw<=NX{=#{NlDvs4~ +G4o-Pxe=Q4+f3ura%VmmLLde7p;Ba~~vrzb<&?-j%zpmo;sT36`ifc_h2Ep5e7?Ln-9{L=9xAW!g`ac +Wex9;t#D5za(72Klv{B-(R9AJL=i7& +knkF9E5!o!H%E`c?2-_7x1qGFer7j&=VhK&FoY3xxYn;59}ik)~y}wrJv^ZJUI$lc9;dhM?V7fJ5ewy +{)nf8N7Q6TdPI7JbauRkWrr|q{*7-e-H|5piTRMn{Sy3WoH&Ym(vKE8bo7M9=uu$`=10>R^m#y({7c9 +d9$q;p{tC$k1@TC&j6hnzEw~9b{Al&C~OBr@mCNtIepm|=}m9aMds-InOT+KWv);ulW&zc{g&AJUaQ-lP2(g+|3U3(e%nq_b!{h$;i>42K +=c(jm@HVzC^|m7a2Z(Ir%%!q3pW@|WmEc|kigRz$ODTDvmjV-R# +x!M63283?ua-*iYeKRMwNddIQQ{0AjPmw~SyeLApiIs#?9CkeK-?s1w|OCnx1dglK3@wf05sHui^=M! +EB?Azokw0_HyG~fJmj%dMTHY63~r_VmUXL=qqKQB +FIX>jh%zrer_3U8|@!oC9bJ*%UxC?9P!jAPpil#jnaZ*+$+$D~JBm;nUgFHOmdBA#Cf2g08BtjjGLCb +GRTK>SLLX`f`pV?f2NxwCD4wQ{t=RSV*nB&$y|*!1&LqUk_Dp+`w6bGMZ8<_HfcZC`*tAiVQ9r(S832s1e7Gsq>D|y8khSZ1$j=`lC0EK)~Ki#E*9 +`(VeH>fi`VaTc4F$=LxY@t+kokv=`)3+4;;jPliB*u#pUCf@U#z+6+k7=*=%J@Q`9-3IfWq6l9-dV?T +NmZoO50!Mov1fZr@B4S}|g=2W +ctAuYwVYJ)RrK{%ivwdE)OU89K{hYp@ip;DtmY&Hjf7z?7E~g0wIN4=2nR(flhdi588&jt%KTIkV;QL +1^l}cH{t{&kg!$apa!r__*gX?kWZ5zc72c7r?V~OLkzVx9Gh1(Buo4jB9mHV=di@Q#Jz;#wchxr9Ss()%)63;@n&NDs;9hou@ziq>={bqbQVFSrvl~nT)kT?#=CEFvo_!YL2+oxZ*)O!&n&UokHk}>g#2&7(%(4w*I)_x+hA!&9f$t>M^ftG{{A4PoIG+4#-?wf`DO$nL8PhjcGw*S|`lKy`QmeeR_dq4C|G +ay?$%bMM*?w$$hFz`gP@fgVP<~q`#kQd;ptugg}1$kE6m)l%x6pC6|Qa;UFsu?57@6J>#@Ig8ho4)&v +4*}F7lZlx1F;gkR0|t^lJg0WB*E#Ut(4s~32_qA}o~&7=-(c3)RgGrB&^)}emY$R?H|5EEcro?jYV(RH?%BH%B&8j^yE%te7&RR4fI~2<_44v{0UbyVNx}(V^kO_nAuchtbadA_ +$uo4jSp%61=1sM9q&JenZ_^pJtzo0JYjZNd5J|&(Q0+;&HdaY*Ko@Uy7dQ!QxpWNaRGZQha?8#I0Q3I +rUKU;2anC+Vw8LCeL7E%8f?dT(K6h;3~XXOu$5Y9c{VPQd7aflDNctO_Y_6@j}zX>_b{AEeVac3z(2^ +JF_2LVdW%>=G|#Xg=_6KdXdJZdvpZKJz%QUnD&8$b!4-Qf5~u5XKu`h6u +Qz4wePuX^jTf-sbAL+bi^Ds_Gmrt9h}(%mY;sdvKC0#u4y;A-2~$wqZUWn2xWxr|WBLG`o2MUshw`(q +%J?4|NoP0-Ciqjl{yH~hd3T8#X2u*B!+R-D`9M4-bozX7i#FePD4OMG+x6fDs!-2k@d^EX|gFL&;ZHh +~UprvYtTds2mW_I`xI(~*sJ>uIy=3$t-{NYx?*!nR^nHRky2i))`xy& +*<~bK2!GNQyRN_60%I8i1Y^+#mBK1{$%mZm8X-vCnbo~@VrgwTfi2j|K0&oK#DIy +ph!nEjc-=ZRY@@KBy!@um;%r5ip`!cei@chS3Sojr$7NZIcp8E34z5_nFqby~B1r5C=hvvPq!!;&7N1 +inRvxlU^U!-;n)O7u4R5%QONyUlSalN!9vhzQf@(wX3CQk-n%|iAh8C#wVD)MWMd(4AXF(q>W*J_bXK +mdKV)NQE5ML1axZUZn=3G_YaQ(&uw?uXfhCksW!-)>b-7s1|Lp&9n9VVG1?V%B`HMEQ*-EJo?e#Xkak +_2#+^0qOSCGmf?fm4;}by7B{5Np0m0ttC&c~v9An& +*Cg!zl@5QLu{wz(`^dIyX{~s@Jb2m@_CAN>?G*8zNJnM(A4h#hs+X4HptGC$~%i2SG_-)~HOXoU|V{Ol-Ihj)DUmspIOKlB~be`!+wDpL9r=y7;|0o0A|zo8zvwZ}g- +a|uc3v}wnzab&cz@Tn&5FL1B}oou}9#!%Ym>?`xopbI~q{GA^DNYGs)`A>aWx-JR!7>L1e4UG1v9Fh` +|sxRU44a|LmQGcTFII3po)%1M$OH;G{l^^Ly6@I#!fBk%a=kb95_I!Wm@qqvKeE;q7zI8zZf7J#}+bo +q`t@%RF-q@&?d&zv)teO4E@@UVP*&gk5~2=WKUh^0H!xW5ireI^MJHw)#}W3A~E})iZ+Yb +->`Kz6C~yr_~FQD?hCj;Z?v%JHtxK&Apbe7&cWLS``D7t~fTDLD{)f2Lvg=)NK75F&FiwVAbLAj61@`9q +^j59<o33r_$S@MEHz{6KPv{@=7R4mT!f&=_I3HwX10A^}D>~VuQuQB8DAT=7vs!-|88ssMkd+f +5zSvoZRqn@tbW``sYp@Fz|5VX?x{Pb)L_smZ~Q5J-+5l5A9doRS}uAV))1{0V9tbX%Va;X}X$`gi&_i +fIp%xO_K>9DA|0U*)HD9{j1O)DZyP@n?Si#-F$F+E*68Z)V|-X5oFMzwIl%paeejhgK$#eBv4O5fEUG +%*i1rYI6bsbNR})%2(mEp{BqH$Mc|Z3lt8Pi!$<27#L +kijkcC%1ZrRU)@G@v-e!oa@$f>|GF_>0M49!NUJy;UdcA#)>LaH;JE%v*LtK+9DEBGrC2mg(! +{rVrPVcvbdEAXae^cx=vCsnYz!;e&ljlkgio*aby&nf2U_77v_@~=-_p5v$GaYTim7si|OAY_f2@*dR6~RIsp6gv4i!*o{g0y%LqBoyTGI +!@~{%f9XkENG#}Xp&MxRb}-f~*4Je<6x0&=-!K}o4EUwcqhMr7(`8B4Ws!bJcv;9-JQ1BLEe&u_uSn)Lpk<$1vO&K&6!!5b$dxSJNPfR_?y3XIa%j2m2dn|Wzkuk)wG* +Ofag;fAgSvz~V~5U0hK8bc{u5}Pa7(~B0MO2hyIVg9Vmf}YZ1N`Bsg|m#a@4~*x)ZMwm|=Li>)^FD?>Sp8Nys_Y9lFZ&K?n^K`F#%x_>yI*$0;vyYW%-3 +{Pk)|){H#bu+RTxgx6;u3aB=zM6KgyGulop%mAb@xlbQz^;bGn|WD$5h<39X2b6NVrhOMKGp%atJ-ol +v1V%1ll>Ut4kTT9|YnXZ#90ZBG~SrHr{`WTgqAl9NY-m!(8EG4))@tBU6fot(y5LOVul140q9Lav|-8 +XDX>Ku=)z{_()o7b1x-sS+&qWL7Y?LDLeyad7Z2<>Ni%Cc?dMSVc9G8InWvt|E3+-Gl_B(mqKlcj3s< +En$Tu9;4S@**?Iv=f#dLCm-RJb3eUu1cM+6iSa*KZr7dP-mgr&X%kO=wokQJ9t3eYHYXuohkt`Qu-(e}X?6L8r5-%Fs%WAl#LAU_#7?z&a46Vr-!A+|??P_*|-KNNq5D$Nx!%<6_f>cXel +mJc8Xbb~rJ5?_&R|9Vj*>9yf|csQ*f-?5Awo_a!94;Zl$u=e%a^^GB-{!n9H^iqi|4FO=?Nz9_Hh~PG +&jd6n2>nh(ydw0h#!FWPMi{fmEo${MQkW%YFpicFa$$)20@rW)4mOd9jS>rHX8P6}SzVfK4Oc`ykF~r +JU#EM2^vKb^b)-!oFS%55rF! +@nGV25#}5|ymvJIs1IeI^gj6Mn8iNUANr7Nf`_?3D8i_Nt}`nRz7eSSc-J2#R2(@%-aGmr<0HC#Xr_` +!#}4?HGMD+xzRvR9d +G`yLG?K!u*XOnc-}g`F6mUh^ioer48fv#VK9PgFejjw=cTh_U?oHxN-J>3KaX`@S}G5O<9k{D&5zZ?9 +MO1A3GoW&SOX0?d$H8uIM6qbo7lKgg=Zl|8@UYDonqT53?Zuj_#8E66ckVIPamBQa?zWX0up`Txb-mg +q;yH2aHr%f(U0$_$c}&#}s^vV$Tr^xh*~;bJ|gLM0e#W26-O$Me1GZ!@fwquZH`IVnYI~&`t2Lj+bFh +EaG_@9s@|%_$6>UvJp?ui0bw226A$2UBJfmfS(qL_KVZF36c*D-yGLQ?uYEFzXdACv!3`i7x&8Bi-5-aRD@ +6wJ-Rbjk<@wTj!QassJ3#s^Ol*nspYMe8}q?;z=I>OhDiWR^vF8uBB=+zK15y+-CvCU>qtxK16 +A-m4^YdOAno*24&^}5H`8~eZ(X)Jx81M2g&3-g9yDv?6c6HVW!)|RT&fjIeox)f#fzBy`@RM%IHw69< +}-*88~Y8a>Zh3O1Hr|G8UgQCOu&2mV$hv@uy81iY +RB8z3{xUlt-7Y_7X3SoaGu>|ZG?9H0jHZv-FXwL@P7>r=U2LgjPZZdlmw&b&Q=|ABPB3eN5;5_{QQNv +^wkmR#P6YsaLxi1hcNl;E5j`=~xY&me)Rx_MFWf)0$V?baPM?n@ogX_1P()?7g`T}Wro!mMOQ(w7WbDKz#IGKh^~71;OA*!qYa7W-hE!^g8MYhN={|K0Ssjv7LcrM6;XZ%uyhrlL|4{ +^Gd`4-r?4tWf-lT*k-si1Z?vlih2x$r#-Nrj=0Xp|RGR0MN@NJwe&NolmK=jw-#u%p5UT~b?-tB7&+!+6;}y6}`d_ +!C5OFF?dfE8RV@;qlUE*}ves-5kzY{IK)$(^p**rt9`(`}_OE>k_)@5UOV*$vGis2{8v?)6EtSNww+6 +c5Yc=jLp(tG(EUv6^V)y&tI#zZ&#BpQ<+Yk6fVLgIyLVbSg#Yg02;au{0n*8Y(uJHUJR9CU2Bi`m#&x +UTR@zy;~4`Pqw^^s<`RQY)MbBFMMJ@R`8@VBFW2v?9WiGe +#VLJ5?_DVzjZm>{&nmEIZh?wqkIy=KCzJEsH +5E9!o?A(pr9k7fPF+154zR#kQKtw9f|$EbL8L)0gn!o{KHqCeIQPfAJ___j;hEVYVEiuBR(?1pL$LhK +5*U+fS}K?;V-%%pZ?$sI=YsRa>{)ue+iEyaAR2}`5wEFqrpV_n{n<<`j=9@cJl|_HbBp_a`0LOt-`p$ +WBG}0+jha0u|Xr$ZE$A4M-rT`+lCqVQ+cJ}f71^7kfi#v>FJ2RWnWmyzGw%1-=_2O!Z)-He2a{*2dx= +&b#1?mcPwLnU9ov~o+Y0jzl^fsjjwzNNBJgyYy*Oy6Ys&1+Wy;!Cjp-EbiVk{=(V1rYu|$r#a-JsV(q +^Eomj}i*(}ykt>QkS#Ta;*5G}po2=9q3_2&M#0Mb}nuoII!U&4{aGy}%O5o;q5ZiVaIE>poX>BF6iY& +1$8Awl@8oQx;TJv7(3gbzT3>xY#$pd+r-Bh@sTz;&zA>B^u~SLYhJd_8b4??irGSQ~7Dj^w@U7FA5$u +0~G-tz^Bn5{oR_WXv8^A3?^&@e(D`-OkPM&>p|M`PEQWv3uY-PT$ZLbe|Iuqn!MzUVu!KvnsejapI<} +?C)JB&{~MrFAR)l+rNVMGfnnqG$(Y{evkIk0ms`+Hcv8PI7~YOpehGcpew1fogK&IvHF^yOjefY7b(2 +rM>@wSDVjX}`1IR77euhnLN-;w?LuPQfBO4A`x( +VEo(809c)vERc7LgHF9XXW=e1g=6i`{snXs}Tp?FWd}b-_xC_2le9lun~Rs%{?xY1H51aW~SUZtM%1L +S4Y(Cf`=!Tx~YdxM6RKmn^9=`}NGjD_rx`g3opfm3^G|Rtrr25ZUx;8DAZQ+|DVgnS;6P-iPd{HjH0o +o$gcnMPI)mo_#v6N9b}$=fb|ofI43e3Jz)it@EkJymkIhjAI-9i-3pFT#(B_H2A*W+X1+S!Yv8gNdph +6nySz4)TaG8DH1yGbfwly*y5MaXtIW%E{Fo^4Eebc@bykiRTUWoi8>hh(r@f+`|J21P7 +W{o8X(k6=>(EXe^~oM?i14#fj?2SvBwU9!CBg&Y1?KXTC(Y6W>#9f(bxScY0;)-nz_-UfBfZ+zd%|t; +OBsn>1k1?FZPZ!_xI$?Of*Z=ez~7$f^=Te<#BcVACMYU1*)A7n?FWNHh-5R7ppO!z(Azpt<7{R(9|sVf$=KiA_-$A)8hs?Z0dPAzqfm&l1NF02bC1X=okva#T_&3FdV&sG&{Z&1$uWp#-y0#Z;v(@5tCLt_p +~VO&}BBQETV#_c2#ukeE`M|A3MmN<ytp&_ct*8dy+N8flJJ8V*J&gqO3h5|82 +@E$}p6B2gL7_xbwjrBac)^?6jdCfjKdfDAcZ6zs7^?yIRxLb!{UcU#l@uc+Y^DxXgUaV=8B?od(_gv# +mGlQwVVh)lHwJzxpwtsu0Q_^Mg%EqK}BB=X3bDwmR($`+T%@PhPwkvJSU1_pn5*64-!XG%t23UdF{QT +2DVi~jD3Kd2S`c+#JJ5d_A6*@;zrc>aj|5WLF|IlZIjn?SxcKT#hI^+V3DIO=Ap-y}}cBP@!Nhf8tr5 +uqQwQRMJ8_SZRiG(qjJ4+T^3&_XS+Pd|C_Zyfs_(-3vAI)Ax)@zLEoBI=-}vV&F#k7{{AFzR(_yrJ=M7{z?LSo9KMX_uPrQMFkS+lKQTO~ +B*bJQA0m&GzhB*7r@PE;zKiZl2RA(OFDDievFJwnN_G^Xf{HMOBuZ~DV!+Mj>MkAy8X8hR^Sq#s|fDb +>i!2hHx=g?BPD*;~fZjZYqria;@=lXz8vl$i)&wo?iLfWXCc{7$oZ72+Fb5K{&0IiaX*H6o5uwAOMvc{N9(! +r=8C#BbHS4&J2BymTAg4FGAa@U3g`f-mNJVx$X8zVzk>`OV`|o-0BaE|*EvLT3$~?M+|#8$4dlk!K-6 +p%!cf=*;|lDD_=Pkm>B)VA50_8$ILec(E0*)d>n=$V)Ka$=CBK^xRp5#RRc>0}T6p-Ist(t{~|(4$S+ +M#2XqBqWDasO_X8{ar0X+dRzDiC5SIlAz2WLPl$bf6s(%;%YL1t0E(-RTlgsEUJzBOv6zA|k`Yz(&*6XTk=aq63J +>28gl&066SiYC9y`&naeLNY6_ZaR_g^+|>#V>h5MrLOJbqM>++^|HylXF(q2JAitEQ+Qg+ePw5Utokf_Uw$nAAuad?kb7SWn*Dv!^9*p_e&1 +;oZ7!2dr%=kGcFb<<1+~LD#>-R?I|^JRBP}%mT1%>qr0cUW7`(ERgx#^1xUgb`7jZC@_IRqn@x>QPrZ +oxo*ys7whd2IiKi&R0bbwa%Mwy&=NTTzXU!2bVGt*DpI;D=lvb+l4+df5PSU0M-p~frviYzYP)ygqp^UT+?=U#%_bu}p{#ip5cS~v8DTp6U*N;D|k&Nj&mBThh9w>d=$&V@PWa5=476e2cQd)WDkEe|I +vg|=+11-;88d4r_UR%i)^)ic&yZfKC>%Yxfk78Dj1R4U06TOMveEK0Uh$GsdVy_OHtavG8CdBI0p-#jF7Flh1V +0MT;GQ#kEx@eef8T;tK2`Rn|=ue&3j*o+STgHEfwtz-Am<*)cVlzAVa)IaU`8U6gdQ@-P#UmpHLnwp| +O6rymPKp~IIJhXs6@k{6v-Nf)CZ4KjJ5ljjnUEp7vr?7vczwT2!N07K6k6LhoIIajIN6a|>2w +EL);X^@VM^NwwejSQe`GNOh;&_TfJ{kE`sl!Je{SatI{!RY1ScZ9o6jt^dI&x?wJPA(@(Qe6-Z+A9*K +eg@pOQF>nFgD)T8TnhVQ#)FE;!yAsc=uE9{Ga-RbX{njHWAy(hpFk{c|YI=@D*>AS@TVeI9+!1gMPS; +Ie-4r$|V1|t)Y=`3huyH33vY*F8w7i-pQe3;qk@S_|3tH82&V>KOmUPz<~an{_|h9pX=%gUyE6etu1! +1LD3@u5IC_DS;$*XD6f}_3q5njg;a9Q^!j>H!j<3=alSmyBZ0jnm^(rEewkAQTnS8T9?*?}QZxu}pwWPyYf=_E8h +7dGS>h|pjmGjvI;KQgqB7L6X+DA)0eQ&8astjxR1pC~JU!MBGhJ!!RTm{B*)Ekgt!=%eeVz`I)Q(=F# +VjbnH;yo0wQupdWw8T5Li$KD8$^UNW=1A043)e4rv}OqDdH{CLmQxaQZKPQov?&jiBZG*9CV3dy@=}V +4rJr}a2L9i4C5?x=}3epngZ{{{%sRc*hr9GK|*sL>oVtxCDS&z}1lCguw#ha +q*)#xD(bGdR~QOn9zoRLhoi2?%+cTk`&Goth_Fe4{f?nP4T&cvYVk&y?RL^x@fpJTjY+8lY=1$Np-_J +NoPtKFdqQ;A{#hL(3*NbkeZoB4`My;&vrUVdLj`yBfQ$z=%{N--IC*_3H{1{UhfB<6HZdwb9h?O7D)u32?M;{knC_n;Ync(wYS|*fZpe=ymF*r*JAg{!g7-zz+hJ +J0f~dPP&`08?~=4=QHPVVspEJx7q^jE+NJdc^LQY+2~xcLH9CgfoyRd9D|q~+plOw=QArYQNi6LC`Yp +RUPZHfKU0N7fkf_|8${w0I^Qp^u`)z5_XPmOvC}m6f$ooGY!O@uON!zYn_GCd+K`QxFrU4z4uKlp(!I +`HdsVatg+t|bS0JweJi9N`yJp<%BJ7j1d=KB_!gTj1c*N&|x1KALo0jM7@&AzbW=oG+TesjnPqFWbI- ++lU2ckzHdI3>4w4xURB$}r`ptN(_=}dR~-=`|7BGS$;`Osp4q&dgz#$Z}z4SI}=5xQg@Y)NOG%~Bvh? +pXwGoD)PCzcFv$4fOrFdLq$>+|VSI8OnoiOForT+8$Bz;6;*6BEwir#}bwVOzdVZK_4uwt7byJE~REL +X??e8%m8s!NbNpJFnG%LU}t^d!f+2S%;?|>!qw^}H=xHuXXSN +=n0I$2AKlea#%kd7pe-+Zu%dw^@b=zA>ZAQxCPZyr@N{naKIo_sJ(~p@8PKYd=19=VJl>UZFxw5DrP3 +O=AVr>5b^|7g((Cu@DynT@r($+$Sw1O6T+Glj?MTbjE#>-b!5$k;+uOk+%c`&Wt9o7f+0>E_kS-_QYY +ZYle3M${tMK-QqA7GycWN#mn$CM!s1(%h9;vDCcR1lI48LL%$?jpfcne^w2ue&vSn9U>YB!$bM6clIx-+}dpV{EPWtpVP9BF6b{8vcFuYj>dJrkd_T~ww2#%r2W5TQ(qO&{&+*bMt9_ +a>o5|52ogdO97A#Zdq^(+$XFb$e(2F)AEyUGB0uxtRCMT0>=+G=K5}C84*0%5(gz=f^+UnpqgJ-VCn7 +r%P4uTvA5T8~i0Mc94E+q|<;MU#z9YFG(K8-9$qz_~eC7nxPsifEw|&L^IG!Fw_T)2V7<~X-0(}M?u# +Z664ieErts{#*gNgKq4jezmANDizgS_$2kep~AMRxArjM`Cq2RlKGSNL~n`%k{>9{;Wf(Xus@I!^xdA +aYE|#_d!bNN#ru;4fq1I^<5CTPu48q8)%OA>GF|yMwXm6(h?#YMXI~dc7=#jm#H)*1}CH +E;|UT@1{)(U5PD9#neCVVALe{SlR17DD7)0W8VS#;jY&A#fH%Df32U!aV#xdJPQWG&vt$@9Q9En{f$z +`moCUnkNe{ +2|1e`dZ+yG#)>nnfK6iwS|M0l0CwYYuCxuvxgBQ#&0%-UC{mTc&q7G{bR)Oxz$p0-IyXT*yHaCk9;@+ +wH3eXUz4Hgz%N;t7t&vXAhADLC=H*2ZNw;}EgK-)I(N*u>Sd+Q)Tg3xG*qnc*qQH-gxRhP()Uk6Kz;( +2e!jCcd?bPq}1-PJRgRv|P`R4>ZFp?LsPxE5t$t$6o3@5ZL +o!*?P9`5D_|6(%w0iBq)Osi;$YMC*ix2Z#rk5#&zg%>q5LmcdtqJhX?WG*ArMn`qp|*94?|k`tkbqU) +WPpPb9VXqmaEXDr{ucT~39%OPe^+=dCG+>E^N=*;GrdG$Tf?Fvl;rjlqJqs9|1d^h9c#qpN6Bm?1_YK +78aT?x;PF`xZp_L6Wqy=#|wR!>2^R$_o#5(R9RN%3|_{Yu%QZRsYy#@xE$u$>b|530&?%l*y`9H$bH> +uPUZAvDEvI*|+Nf|soW2BA-;-6#8kfAwOsOuQ*RpEv_m*&@6?dlN12fPpT^$B(4+l{!^wI{DG +Tpw_$7aHF2)-ftPbypK#lzD;NACrQg$qFGA1yUAw$Ls{4tOL05q)qU+`&UW9FE1k=>(1_g)a|DzneAUZ&Xu@J%?p#wxm#c9`Y-r)_j4HE)g(z2dd)P0wj +k?U!qPuuK_&egA@313*Xbr+P2a7u!t1b1z~?H6#X3V%jNVUnAge0wc=D=ef1dt;_TlUK2-MzxY4k24_ +P1#qEC(S>Oc_g(jc%5sIhN6!aK$TWTKdGEYgKdT8Um8oB$-LpDhX^Jxdcuri)KE1Gzr#YI~zWEWu(I> +G>U{S!d}*-C(smnE`s`*`k7;x0k}804T;%rZ9|P6PLl`VRz0R5mLTD7o*rU*3XPLZ(My!2c&_Jq-BDr +b!p{(MHeoIZz}Ls+-SD%xWm#M)Jss(wCc-?DTB0Aq&p{R^VCe3dsP*?I_c?T=ehX21-7T9MpLnj5F4jF!skRDPpUNu& +7_}#C$=Bq0A0Wtvq<0dpK{9spo(dGa;(1c%nri^>tz+G>$-&APZ-+T}sj4om5zzq?5pkGd)j3+2mb%bH=A6e3guf%nT;W?eU-3VebM4DluFn@zm;t!~fkpE-UP5%Q|`U})e$e&U- +9VOZLsM%)NF~342$7~7&9YjoU^iz@?*pVbZBP{t(MD%@7`;h@g(ofx#I@(4Lw(#tzo08d)N!)=fiX0O +=JJd|_`kca<}a~wXHF?S?NQXf_e>X@U=K6p;$FQ-RSDgIHTp+0m?NqP(bVfaz1jXw&)@P} +0s!am8@5617e&ic=iPw2UA%zz(ZVE6@du!otlO +E5vuA&r|Ttb`eUQuvTWMeL#_ar1^HW@@;@I7_{og0(e_mkX^SwQN~h&yo`+SZiJPx}F!&yIm! +QL*o#bWth6>`kE;C`&2xyh)2Q8puBZy1#NyugH`7v3XF9nP?6N8C=OuqC#Mcs4)ZZ?B3Qo92IWvF +z24N?`mXs@&V2h>fPc`XBT%+o^vRUg9%bdd}!)dv;`w~a!`4tx%^RbvCuQ-X_b)AOqLxqYQ;yYIn!(L +@l)>`=Zmm^1KtFNF*STf4DDw1s6xK)j4uL6}`)6&pIm)6k&N^SAzBgR(9AGF|ZMQRbuYmO^g^Wd3m^n +4hQR#^CYbXHyZU{w!o=Bjxq^p;5GGL*4VDkvCKPJ+G&ZeWjZ +Ijv%&vJ*#a2x9bk#9DT4F17Pj!$`itC{yX9u%=Gx#XJzTfC;hB~dK~|DLgJ54{W>D?z0-a(EmqLEXSBM_f!8rTW(y-(8(Pv~dMvuMW=;7k%&#VMR{H(mTyF2PbRe^rmn +2s{uhokWD)zrbKm}7?|9%#4=jKJKnB*(BlHdwZjB0o93#UvI{@hsfMcMP +4@rYxm-)f`n&h4xF_zT{{E1Z`fuMhH4y^a2@^?<&AIYo5_pHqi95d(^KhQE~|r}kjXsPjkG$7e;xU|O +xUlYF7$L|B6|qlxxC;Mkx69!Hq21~RbXlf>nAhFM3LcB`#;c|3X?GKy?{^ZS0AuV_3Y;9BADRJuH$74 +u9G6$I>1D0b%va(C@XBab`E$R6imUi99o`zXRo2-oM^THV6Cq)CwxXrTxsU7Aw81&?*ei~4k{8|E6m{If7+p-enr^Q3p#CQ=eNK^GwDk=?upQsYn$?u`nmOFM99N7LDS +Rd?0e&{${}+)I@OlVfSV&-o4Q3EBol2!vY^DxY$c-vyx`H@W +Mw=MB%*02LV_V?yaPNGlv=hvGX!&n~+jlF*%XObDy+Wpq?xxaiy2N-d_m>R!-_P^t|#NWizz&Er8ZMr +#e!<(|L%x5I8-4OTcgR`8V!sS0?9`4++3n|#AeKY>L}@M`hg-m=c(Oblc6(g +n(n+xA_xui_TXYn~uHWo&x@d%|l2;Cf+5t+TBs=><-+(RpxPk~FQ;jCoV;!w4181pMqMAt;~D(s)|nJuisZjR*%cZ9yb~ +s9@&1APPQ?m`aO6a_nj`vpBiUUaEBNc$xsMsMjy?lAt2mvZq(B8d;-cfkJ=5Axiv$1l6%-kr)fZs~8l>=zgH-Ix4!qK|~IqkDuv2!fyy93s +&}(i1{S0wQo6BM=NCDH4GobT<{>twcm0=}tWU3C)iN4)jBXkbjZNgg%i|bi_J`$mj0e;_v#eJtEp&M; +0A?2Q+bv*&XrTrwFhgjH#pLm4c6h1fNk7AeByms)?g1eFMHLkJknrM1T +gras?mn|mV0X|ZAjh9Qay*2);iG|N_k9OX5q6X?_B|a=`A_|q5F9-dQ2C4haxnGy)HY7X&zl!y-I{G5MvBZw(aQ%#R!TWm?Y>ykDL4@7~tCX0wvEeeJ$ +IbhMW}WI=V#I{X_1e0xyi@88fCDf+J{7gT;>t@K9Uf}3@yZfZbugZsnnY8JMe&|i2NykDR6Rh2>J_`9 +`ff2-s6{%#nvdUb2epCMLRg_k3#=ozi~sOAlJ@_;!@cM}WMlV-e&l+Z3$i8WI2jMv~~Vd+Q;lQO%5_r +gwNK`f_x{}f3M;#yB;q3V_agFehI)wG6gkIY?)_B$q@j3N$%nP8`4yGapB-wBh8{duD{0!%^;Pp-T9e +d@ygbpZ&<&tEf<%rYWj*c~fwIbn?1fU(zvwaQ?_4R{Py=yW!mjrMs3>h4{&#%Famf%c;SFk{A_jS=Pk +?#u6u^A;e1)xg4jfS2?k>yNy$m&HPFID@d57#sJPa2vc@qJTL){T^_O$(}+PPwtu$49M;~!dE{*&3xB +eG}m~@Srdymf<`+@~MQ?vq=DS^zr(6sf2666Ajyo>Ph5Qx`#HK^Mie9B!gtr2fZnd4aJt6 +3^15l~;TPlwO##$s)Tl^>A=1(t8Y(0k;mZ@ix((!O +|6FWa%BjEuX7FaLN0w@&c4U(0XG?;0!`^B-jPu8v66D*cb9}vuYglSH3*Y6d%;(c2)c{gM6EygK2zT( +6m(ziY2mCTD|tEQhmQIK5V(3)!(Z=i_F_nhR*dmna}GP(40u#vW{ +FB`)11{yI>Hz!Q;mE`+M4%sRN?yG_(+Rle7RO{Y#f=O))=Zq!MSz6UoYPA%`cg+l;}KQYk`9y3Fi +wsl(A%((8^fNl$tvkS9JRPQk)tsgYIC8HbLr~9(;v^0+L>3Fy38_97&oVQ6UpQZu)gT`ektVu(r#mNS +I-9VARc?v+iX&L77Z@7Y#a#A_vwaIcj4Kz_fog$Y;q7zj5DxBJNG@5Y;1rYgq3wYS0K6&O9!RPV-b0{ +^ThcL#E6e08#>C_lF^2JSzEU8bYTe%2k)O(R@;It$+hFRarX5cdGfof={E +3r(J56pj>glgYc4P1%qg23>%!Lfb_HlEZz#Rr(Ib +|b3cMPfJ=nYPzThRkg7$Zn&*&~dEELGch!HnFKGavKN}& +=r)ZR_`qX_o>g=-bQ~=rPy8DH9keH@N`!19njV0J;Vrs`+F?QfGnA-30Z=)(pNFYUcv1K^I)JS0JHpTrKU?e* +#sNzeiP9&c(G&`7NsY<=}rARmp!FRTV>dTN$fLJnVk5UT=H=FN2IqWjhH)SPD7td{Uj8c`tE^-HQ*Kq +oAX2|4sx~rQX9ss_5T0@j*`C|Zv#%&% +u1XluMR_F95h)W&)J$$|kKhG=f%Mt}2`-vJ6mY_sTX8I_N)?$N@^7C)_1(CGYUvT&wGeE3kZ +t{DfeV8;aS{2m)8~iNP4df`mWZNJH>j=BY*Jw+`O#*B*Rm<-EU(bqe9c)sGjgy^@0179=TLTf#D7;6b +1CyRy4ZV@zm6JlR7L;3W_#|^qj4&X+idBK^Z2*;-=4jtuaHx_z#cLSXMbmD@r)b=RXt}sz8jNpJo|VGu#mRDRL2GS! +>W+R449yDQt-F?p?s#&p?xy+Xh-JT9)eMnH9R^VD+$I>9$72-E4*rJZ^Lvfu<#D>lRYAKe+5lu&Zq03 +nu%{ZPbx>Yz3|x;a6TDKwioJql5J8j{+kpmhd@M_HM0f#*+B?LAF@I +`I6qnJ|c~@oFrb_L5lZbizo3x8zE_b=n2FA?+<&8O?;m2)LcXPzA +u07@YE`v;7-6tbugBe$Naj7CwH?a`9MuOOzhPdg4oE0zTjn^-+$1(4T1XAn* +KiuYQ02i8@f%m!{SoUPaWWcJpbU&B&in=%a%1Nn>T7+3_U*j4fsRm4Ae)s6zniP>;$EhR*%e{ptrG!j +GT#&E(XPO(T(`C-+E_<;UgW{6nbyq4PYrvd|AtCw-KCQtHT=5%e(vg%N)nRbAe2t~+?Z2_mHIrYhN +BnKVo{Gl(G*AQ(|4BjWlQBOi|^|>+KJe5CB?5uAg^c0$=2zm4XXYEgoj4z +?mGazaD(beIN2~MsaZ3|t%O2F5(cT(+wOLNwd<$^N>q3q6;C +ouil3GZ?-x;uoyd-Z;4yo$V)7mB-SNFL>*-A#KSOMJaV9xR=gQ!#A)6cg +c|)TocMdj;T^X!wZ&36~x`sM4S`kJBidky|jP|qCQoLo2oJp_6f*!n!$$C=?^-_eMFFvOsH7DM%_=h1 +)#RRHG2%Q>|TeLuCd%)Z78RNZlFRLV!;-TJSP&s&6SWKwSkr3)ldAvx8*H6_h^ +m$%H{WXYWNKp-=P2~;mnmPmBW3XisEV@+#EW45k$O&wRJtRGFT#|PVabEr<$!YAf^t +JkP>CbVAwRcws}6zp0bymvJ;6B<6f2UDOh+7iw)!yOWNw4J2hpR>s4i7c_S`_#ajzp<~elL5hHi?zGl +5_Pku6O-U_&{G=ujzq(p?6WG|#3+A6!K8KP^!?Ue6?5BEy;wTa!Ef(3@L2pObHbbwacYQ?Y(jQOJLOH +sZ(4#FXj+CAsbkzB-Li1ecZ=c`?@J!me!7T(a0gx|HrTCXaz15-+_>G$k8JF`LM}Da7SX#4&Aqs!Z{L +b#^iOm;UGZuVl2d5=#`uT~0Ai}sOA6e0A{zx>2Zz{rGf+E^zX%d6trm>;XpdF(UVGbhlPCw? +k$1dd_+`*DjBjO-TCt%$_uD2T(+{Bw#xsFAnG^p&5V|Z{d3$2LJFN>$tynTWLFsz`zE>BY4%VQMiU(9 +}N$kKnw+!xp*e&H?u`L}YH96guwJpZqBKbGvr{#Wv7zZEO_PZ#?tUGn3Fe$%;$qZE!}6ih%A2JMiGMk +xYAArvK$9eiOlgkv!MJ@j<|Ch9<62cAKXR1k$6MYv-Gh&<%Pvd;+k4uq)uCp!Hu`r5%7_TlE)fzOVN4 +vNv}$S7gZL9c`52PDg&5AK2vl295wn9cF@Cp7;7`q}~E4xf(174ex;M-L_*DmmJ2_E#PkppU`!{e*pQ +d301A@y}E`jD6(Nk)t$-(Vsu~F~}5sgw+p~(fvm7KkamB4x+n`_yv8LXIx9JQ-Fuy9%7IuZomh~{vPE +9$2Pz>(&?VN@t($NUwTUlO|!(Ni`=92(Y)I?y!sUmy6iXz1wM*M$4R%(Nv{B*C(S-+xPHMw6Cd5u-aJ +Na&McdtI-Im#E%Ockb$s30es1M-wE6mJ$92Is$gh*ppB^dcZ2kT;f{YP@gU%k5-JKlJE2IR$TwQT~DG5vuw{WZ +*$Rk1CypKNr1RiJneS#->K$91zuA0`xy&o&A?2p89{WNjr-ang}~2onW7VOVeMQ6t@y%YJT3JAf3Fzk +!X)Y*HK!!)~7CMnX!=`#_$fS|hWHdR3_Vd(DWgX$skmBsfHds&i)oEIWNTh) +k;7h}LqEjnMjb@xM7*Er&5Ive;ib@1cz +H0s;#m|HQ*#CqYKgo}d>B%yQVcsFRH0Ty4&*Hp7fvu#cyrQE?VWW88C +uwCd4@?QNS4?)(O>I{kjDS5UQ??uj}lepN8EPi@a4xXCl`3`o3Yp1z?~uFWX;WX~B1p&1rTqn|7D1CR +@Si#4jHgGZ15Epg2sx*zm^(kcGM#s1tW{#J<^$MA!doTgw1qHr7~QJ6+3l)`9y$DKHa5afq#?sra+{P +cV7UJ!*p6`wE3i1aA#pxI9}eRR+qqqym3IQRSQGdX??6ht2}utSH0I_7$lkDuKSLeN2uvOBdj`6L9W! +{P2u3WW}Glpi?7FBP0m(FjWpV(i@uLSJ4+90epe{<))bcdhYJyE!r``|3wciuka=;77$OhClNg@NtjW +htnH9(iVT_6wlV-6cgm%PLU8Iut4+2#ZxTxq$?^rk{qM5_xt{x-oL%O&1beRo(1?%9OB_wfd9lH9-aj +_G6etBAs)L1{u76I>>BuI4pE!a57}Sx1im~~nPu#Z{+2>I +oGK2c_>fN;<#IS_VOj;C{M`SoSfLg(Bgx^G_gSggyKWJAvT{%59vfUg) +njU7|30ZAjJ2bLh^*FEa+bzN|c>_crR#EE-b?>s%-YPWt(q4^($7yo3T-&xV$F7j&&iXk*gV!Ne +;AdH~N-GY9i43fqn6oC)~-+%SpoNk64mWYau!ZnT^P3<^xXdPk1r%Ih3dDA0j`)Q%au0yGg~PkFs(66Q2KRR8f7Ris-8WWwv3#pNaL1&ZH{Zi)3~L{@p<`w +)k&F70fJswMOZ$tNOJJ^GASK#V|(%rV*5^fYAkA<}S%Xr0WbV~i+8eEuadoU8{0x%_(~pr2_2%nxk<`=JfkA?It +$bzNV`h-%kJIZt-ypRD0gobRPhTaCNsFBw2i*B4bimD*Vd{5gtZ`!ovK)Gt}ZHKlTxB +h0$}%sw4vQDc6aLE(>Mq;IQyuMs+H_q1EDh?W<}Lrr)R7DK9$BO@|v#NFPUF=r~SqNJrfWl1zU4?OBP +d#`4&QoFhnr}xi{xVQ+1b4#Yq`wSW+t_ypU7!B7IlBilGndA|RyGqdjq(rn{h)sd}N1RXGh&Q(-Vqcs +XS>vn#QZX$ijQl1xQl;-a{Yuu`$IJ1~G6#A_P~Z=Mv`BqwBbEDZk4dhkhet<1k$hVv|Ncdcg`#} +-{2(rzPI^LqKJR8&>#E0-$W0eq9umyeh)&S-47x(OcHw>fgU1+6owKQjD0tFIOuWGBiV(27#s8WBZre +6gIYTlhtk7W(ZrEm!}oyT`vcSDXC`@fK@@#BnLX&(eIJp2dcufFga0}``r_&A2fl +B2cF|{kZFjr*XIlDbq^FLCu>JoB!BBSW8AU!4iRe*0JvzpsqvpA982V@f9nlW`(;gimpGkl$Kbp+;mD +4}%5<45m>{xR9>ibyFyS)u1>p2&m3Dbb1Nl2>S1rNo4D|q%qD>9e2LBesZ#9{jt +gl`EE-YHj5~&zz|!}HgdR=q>W~4ptp4Z+vx;67+|m!oen7ZmfZYJ__e1&nLr|9zwR^GNH@b_)9stmZ#j>33%Hn^k^eH!&Q>AqdAQnj}#YB1w`)ce{D0l +R+>+z!-vlKj}h!=6sSv>Ga_6&yRF{j2%h-W9sM&u><;P+Q5Iro|dMEy**^j(3iXv +3P!e026qo=8VTXlZ<_-yqI%LmYfHyHj@TxJ#DWgbH>sE&qC2|&cG&NMhau}zP^=>LPniu^U?2Hvdd*# +Em{xGa!)9)0C#?&4w1}=7r)kSN-+Xe9GGnMELm3i>G;!ntuQW{dND8+7N5~dng)rVZja!~XeLmlm8%o +xi}ewi4rGv5g!u{I&Zcwmk=feRmarIqE*#yahGOJW55~f&CN$TMH0XQ+&UzZzk#okM?LDNCS|QiM*;< +(Q?moR*iS?jsniBd_ih{I)L*G@90&D%q?`7(GE&;xn+O~64v>r2j#;f5KyCkmK*B+x$hN~_6rc8a$i} +nQ0iVZ=nFcF&(E-8Is8BPOoYxQRAgvznH@^MDyr;Arf%xK=u&+(=Omf}WftAO<5JcD3S_myFlW?sDGy +fq0k0A6Z{G8u0)%v?yZ;;Q=<$r|r4lMr5R(SNBO-{F|k +rE8ZDkMzkuHa1ixvK&Jh>k>oNJh>!H~1@jk$k7q(G85ylY@osn{jSd}$pTb^k<4(zh-82ZN8ZXS=yN? +K9doUk>=c!YIAS}j;b6}jf!2{el7*uVn37ub($HDGF&$=% +$h5?vEk)O-jiIp;o{Seam9?oNROmv1dLVSX7_kiF15mYoPWNESm{4`84=EEcB{5XzME-ob)pjzWmJ@l +<2!7-y1cL$4y^;p`6_b!klfRYru8<@nRlgG7Gu8RgDjad^kQ(GJqxnsvgd2zX%oKKY5fpjR>uci2O$4 +8LfSx@al!S`;LNkfJL`^C>QiD6?a`SBtWt&e{Tq3%65CgVnDRUNx)rfnYaNO%iu5*;q1%nthRWC>(Y`uBf +U;02hrzPtJU`v=fJ98`lQg6rwaq8ph@4dS4z&sew-(l410f0-vqBw;e<`9h*9iRW}XX{NO^oVEpS)4n>1W0Zl;~oZl6SJ`(3Jc{&0o?#W#vi79=m?#)MzOzq`ZN=^EaIgW~J%+=LyK70p3tl +2l*BpMcK`5A`QR7{iucLynIQ=8B&|lx0G+?m(9DX`cO6@9!_nUBD4!%C&AdF1;HD)^;KOZvINcZ~yxs +c4brFdc>&Gr&9eh%wrBnhXV(m`v&J>2XWXhykUQKi@=}VR(Jx2Myp +FhD2VT_yIh5btPtswUTQrbPbNxq;zpq4`3%sk1%ffj_a$xQcypTarQ1VRnq#L`|CxSYGc& +5KjdilT=xkhSz2!_G~PT9b|#T6+}+O-OYx$BPL$7CZGZOm!eACM9Le9X`I6*HJ?e)`(cp2v9`tBYkBxhw>^6O$ +ONc=9!+Zn6Q#cg2Cv}1-Y$=(JxLG&|>3c$YXrjP((&Q`RU61yIH#Zjj56DQPoRBg*< +ohS%`T(FX7_$ktd&l7oF#>*n8Fh-XCjG55`6y10O(QPNoSBx$1{4+~w{alVNS!tzxwgH8X*zyOgS+@Vtx;b-fn->Gdr~f4JesEqt +C^WUNe-N;3X*IWaC6gVXMs2Vn_>8`P!Bk;-ix3?rb3DS%~OR;Ok`CCq+YMu^dkn@f0u)S-_(P@0}Ma7 +kQo-(jrfVctrxPcj?24@qHCS@Zh%>EjK}$QW!@bW+gH}zTGwtzKier$Ud7|d&$rQfhQRq%I2UE#pjij0xinAdeUZr|n#)p{m-h)ePbEoM< +T(_B5Sv{lfgfz!SF-PNyWvuS_#uf!uJ-*I?P%4lc|POT5rrzh2}U!D@#XPELWqTNizZE7UEf?xs5NW6 +y<3~q8Bo;VLt%BgGmt5 +9>`b-=8ig}*J4HD)optxWgcNt!^p}C5Ywy4RFtq+LtaFO&U!QX=*LMD;XVd%`>TmGjf4bH$F +!3*~^V^9p4Bz1)Nnj)eLpViJBu>K=3Gc@V0w<~c#~PKafj6AxL6Z!zKNPY}yMbXg@kbTI +A(2u$m^`W`lPoO@yl)#RP3yJ+iCr5dP`W%Vj;|P%+a56!U-hd?D0qvjSMD%D0pnla7ki(N^tkv3x50P +AIu5!7{k8oo7&4`!hX$!wG)-NFHT;ol;vTEonTjr|U2q%A-v4%GeqT&V-$^?zmx>v`;zY&s9LrOFVQ2kYSnmgs6ZoV1{ +4017_!%%VeCzu9o#c?Y+#q%FIX|8@J9iuvHt&d3K1)_V+i-nOw`&=mG$ZOpdOWcJYDmtQhNQmUEfvb6 +YZ6h{qJ?}SqVo``0!T&Dx7uIVmjzyxH*}qEvcf3F>+(poIshg`a)Z{1b3zlT;2uOhQyP~I-!zSxX^w*1fP+EO5OYd}${fjFs&K2t5?MJ@KkXQ5TNI8q#AC4wBoVcW(c%5`?zR=w;0ugLt!H084 +NhO{dcpbP)7%i4nllQ5j!k!ijLL9MYs6Y*gk@HD6_D=rA%81J=4GtW$?hyXkitw?TKy%mgwvZPXorq+ +icdXI-Nt9V+qcpra#k`l-;Kq*iZ}l__3Vf*9?+F%1%HL!3{WVuyorO-aId58U^8-Ko635D@HCs4kI-g9BW}dF +a(@NKQSe5}UOZ%RB2T#6LT}Z(U&91%i^2=O$Z8Dg~f;)m`2?yQ*g58|iaU#I%l2hU07ps@?fOMxT_|= +rJDa<{aeEM4O*gu-hHNIa}qFWs$N!X3j-M2rHD|qI7%HCm90Z_NNP|fg#&bF;Z(@hhw|J$Zmom*v2`NnsYTt+k@2!1vv@2Im>puw +A1zVm<#7%mhx_@MIp6^Tvi#Q?C1G}zMt3T;@J;T7GWQqPh9%z~(CrgEcXkg6;zq5|P&oBW;L)H5kyrFA_C)d*0AC7eoiBUbPVO^pzkKHDJ +RBkfe9#Aak5DVmhYg!WcA{z}Za0#*;LtRe)Ri1Uzjtf0_H2E +6k$F@uL~Z<^p>5s)AM3n@$wuU5xx`V?m6$OjcM>lWm6nljd`uY%Lb>{8hi1s)ydxbRN3btt_BIy~PvG +NgR{sbWkHHce$zmo4GgJb`x#31@C!^ysR3kvqj(hcl1IC5TfUfz7dTiI>FNyu)LhM)6Q=1Q>Q#UyksO +kKCz^T84)vPDB{%7W7hBscTz(Vg=^>r1`Ke)W%fy_y=ue3>!NyxCQ;ZAiQ%kqhP1R! +}}DhVCVMlv>BY(>cA`BOu>!Fxvd&)Bza=J4)_bih^8CE9tXFz&~OKV_zpDFZL8_tHV45QtrXoSb$#eq +BKx!GPEifx4P>rot*^m@t*{)!o04;|Wi|hjNKPlTy#s@ZzeE8MH>#(2DH68Qof~M&B7{^UD)5LF;h5T-bl +F@ZSG;k4X|CGwQoYU2J}jwuJ{F}}ChixSKLdXF=@06@j-z@lLJH|m4@Mm%koh4*WR5{ +J8w^k)70b>!zej8uoGCVb$ecO$>9g@B`{746rQ2Q_qEadxkAdmu`vuCQj+&J|w84zqDh~N$0n=+&c?o +6`gy?wQwqhvuuE<7hOXKxT*d?c^V$t1$9;{$IxEmTRw}Kmp`?8czgQ2Iy`Xhv%gPu{NNNCMb@k +a_1phg-~Mm2pP#ZS|LeCK`h&s#*Nc2w>OXnaclH@YZ~{U}m_jKSrf?J`K@y`t7>0HoJc=Mlia?2k#rilSl<8CcWO4=golvN-+@DD0Q9)o&%d!CO10&{=TR +thQn|BEJubru+5EpmI|tUjO74K2E@wxhH1e#KSjFa@&*NJ@+wka9-`_#%$besv@*5z?sTUbJR?FQA~Y +Op?2Te-`yGTtF8UrodJq)-}(f;r7wQos5RV(I6b5JLGdvVrMk0@rkIsP5J<1i2iU; +Z8PIjv4<6~*lxY9>5nRIpz8$~;kQI6e;`?Ig!SG=@_2v<&l$|~#c0{E+Z_IIP!zMa)37*m2n0x)Q2Iz +4uBI1UGeypt_z+6vu@Ec+A<1*LXd2xhdxTdbsW(fuiAJRV+Yf~()G=mPg^YuPi%5!(8NgbDd6zTr{6B +*P?SXS@*3ixb*iP?Go5=wURZGunODNiF!N7Vyevo)eYl7)s7Ed;Fh@hMCTjA~|g_U +kp#1z}{C$x1v#rvq%0Nb*cDZa5Lw|YCc_pegxUjGtUp0-qEV0<-Oo=}}p)*A-M#n>j1qqLG?ar%*5`> +)Iv^#5P8^@pwfeY5ow*7dif>l9?-n>-RxqZY +dP1~Erubk?bwrV>hcMB#rQHUZREsea2s{sLR0dd0J%2antN^Jm~rB`r(o1U+Ss*e`f<**zWgOm^N +cYLpF;ysM>_+-d7zwvF2)I<8af15A4FA*&eFPtn5>4$uZP<^&>r^?G3p=VJG +D24D~to7uoMLJ!LUeLfe$)61kOie;#TmZx?Q)(@rA#=b<%!a^Ausm83_vf6ogTa5<1r;YHAH*TT)_tdG}|0(@g+uMzqRp;qj*8ZMaH*N(TB{ +Sv03yYMgtZH*{sv=xU|q=xT=oYit|ZI?$YrNT~Sz~`0 +NDI+M(Sg1)t9kldIOWf~FTEdV$r@mOGunvFCfh=8x##McFWU1K6K+34Q5e>rgJRsL^B49p$1-Lt3OTT +vocqpgsqOXWx$_+C?mK99v%TMq<>$1cZL-lek69Q-1Fs&1NR!Ly_L^#_}?N)nG#xvFQ-HzN +3)Xo{b(G=!`r~B&e^vin +>*xB`0gQ8lpg~PD-y$hCkCA<9isYmtRXSrACHXZL8Unz!tfSN=i%@Ib5d`wjgY?mN2aSM;)b=QE9Yh? +)$iA%b791JQR16N@dxlq)g*AOTI4WBo`oaP_AxUBu}RQ-DrCa*OFW3j3xrg +_E#j_2$FQ`;`UcBi0z5T4BWWGo(J(j7%Xg(sEEdn)HQw5Xg=3OsRLoq^B#c +^WpH?~zu+p7iGkx6KJ>;(On27-!yM#Vu3Mv)@-Da@Mmy}9{rPkin;e>$Gda_ +pix4z<{ISCSY1^uS??v$j5^mHn|FFsL3%t8ZQ|ne=^j05pDBcQX5-$#Mh1TLUsvGqrs#UY7x6@SrZ)@urrd`44Hj9oKa$SHhg#2@sIexJ9@UE} +#Z*e^`$h+wr+#_LAjRj>(9`GbrZN`w1LCjp5}J;1C#Bjr_i$p~A}XNq}65Zwvc93FZ6Y$lMZJ^0xUjx +}Dq8c;w^$P!+e!=pt80FG15Vbb<#)I$UoCkz|qu&8riAbtLr3{1`)ttbdh+p0`V^Lbh@NiawMi5U*>PN6(`9=1*ST-=DbC})L(@BlrsuWQYR7HhJ=bT!{%O5fx)0uX6A +gkV*Pr1z&XHErn6T^tTwE-~rxz5wMX2w?zKP +rDD(%8j~W?Y219CrRWHUh>xe|)Z$kdOAL#9`6qKAr4`nE8C~4gb@Gae&z9VMJeKzR3x2>@|LDX|RQ2a +4eTS(Km?B9S0uhu#aRh~tHPnPxn6-_NBq*FjC=~u_FI$LgoM&Rs8?D$V*%M`$rb<;`v?mR-2Sd{@_GSck89V9ttYO~Yu&^~q6W7FU4m_8m>~J5n#MYt32a8Me=Mt~%W( +mxXg;~4p8y=;cU(4U0gv#~;yu)58$tAdKLy7JF3?Twu`6b5{Zebh4@ruxvaXAiEvX`0<9UVW)F=vz?% +R?HP#mD2K2XwWC%yMrYo|I-}-KW^#o?C77gqBR!NBv$Ry<%2YcH7H~-Nh#i(=t;%B*YM_NtT7Fn#tP9 +eai!>E{=ekwOTjT|%ABhS((rcXc)N7G+BC-cyfE9W@t69Nb$U1J}S&<8feOt5`L1CjE>8hL_DpGZ_R4 +3glQ=gVEj4st54#O4XARx3`{urU)T$oYJDxqtxzn2Q(X~TsT6=Yrim_b%T^;#FUVShH_B6X(AQVjb2u +H6d21dq%M?X;LlTF{lHplKN+n!#Jshyrm6Y6d+y=>w8HyFz@%S;pb@aM<{LMlkEeUVza{v2yN8woqa1 +7%gaYr%AZM4E&OrulM1;)NAA%^U;YoFwm>&g5@SE%d95$+0aWFu)8~Tm`E@6I%2wAS<^e7%?U;D+ac% +bSLzkSMb-UVVl2|xEWyKlXbO9dz(G+p&zFJtwAhZ9vR4pQT;T#<)7Z$y)3e3bfY{Un`KmGn*P6soCP( +ZZyTt2)GsHaDOg3>R6NnD(I6k>vnfevj(b-#!JCe@0q;lvK^tI}lf~S(msXjZSrh1p*tE*IadWaZ;L- +G-*h}o>iI^rJ;nzZamh~s%HK*p!yJq*GS(FShfD;iW(;<%iqXaT8;eZEo?zm=y8L) +Wpva*Y~YxmhMmLbz<6ac$|iVK18*x6q?$2f1+tj!^54sz>j-R-cFwH-Oxr>pv2b5YSa|ze!V{+9BWxk +v}mCmF9mk6AX(|F=>*_yf!AKIS8Bp$DwVT3YrgdLE71`QSteF;VbbQJ6%kQf8DBvc4?J|2l9-gkn;fP +dxZFmCke@+^Ke8%*g#Zm5wo?#!t}WX{)Wl +~W>krSSZAKpj~14jC +c`0zI#&{Iw>$VS0eTucH)cy)+uw8G2H#>GkmP(D=&qe(7FM +!o`2&*DmkxkUMuYZWG{@%HNgjc^f@2?RSL=h{v#Yq&Q5Co^lpCK%S*mGLg#>-9j6gRc&Gj80BaBB^N_ +Gzb4yzw-Ck<(gVzU7jj4a#gYy~$lu1>Fmc=_W?7$vG%V0u;1&l3`mBG2Z8buLmJ;%bSt-p1}(Cd0)|gh`o?NVH?*uMz;;Eh>Y6g5dIQj`CASj#D9vg7SJd +E1YxQF5Mi~G{5h6k7QRPV*2ykHu_`4&tvuv5M#Z0@tO!yTW!_L0u)(bF4wj7iPj&_TY+HYKR~yp$mF) +13NDG!8Ci&ot5$EFT3?PiV) +7%~)=g4v-csyMKS9(Q*Ey?;@7GlpC3{}LQuOAyPY2^76-p8yCNAE?4{VE$4O +|~3L_rXG6U3ndEaT+gz*P&IiZre9*4uvRxUHYLOeAu?Dx>4UnqX<*JeH;tUdiuq2p +k8W4a+;c+b0)C7tNwmJ4vzr>Md7(bj|*(g`fXhaa020Ev-csJ^YpZWDzG#zNSWWJ!KLZwve-&Q;u +b=Oqt!rAW4*v0IbaG;a|GY)W$h#)^XIGQz{XF3M^he!+fRS^h9PFd3zjovq5a7fgWySNk}W&IWq#KoMFVhgq5 +MkDH=2=FHb$Xty9h@@?Fau83Mc0Us1uCe!T$xAjI;*|d^UpKW_<5+f1dg7y(dG&q7OShip^xLVQb~u7z< +%GR%THpSH6M~QsmyS6cW!szXp^8$4Nn1a^Zu>)pz)0oU`J*&nF^Czz)itH`pxc``ogo@FqnBHSZ|_we +Ik?a~co>J$@Xki@u~$AUv+iVPyT2ne>e7Q^L&>3o?SR_-&tA4K~==n)~AuJr;P$k`|Ya0BI#q>P{V_z +1t?doo@^WM)xlAwUor_K}Vd53Q~}^pAPc61bt7o2Rb=Ke;aA>P5;qFwWFM0&};wKheqp{*Zx17;L?9> +%m^b%e%n-+l8-0;t4aD}m1IHnzxw1=cgO!L`oDjJL6G|G`!oO7Z|RDwf{*2wB>rvalHb~|`}&?wjIM}~LNNGes1OaeGGRpRQzr0D!5fS=00kyHB15+MU>nyf*vgF|{8Lm&?q|TnE>pV;Y$L +&j*l>L39LIYJbst*4qO>sFR$U<-v7)+Pi4ma4&Vt+7B`aLrGK1-MGPX}{1>WUdRt-oL=fNVm2e}xM9>xK&FuT5sWQE7_&2hFH%Zz>zh@9DF^#-9~R+WMRu# +##0de?Y2E;;X@%(f7Jo{V8B~g4D`4z6dcn7zlh&V6nk>^)VFf)yz+Qyp=~?Wg}}KpC>A8UdjeND;$kU +{O=b5zFZ}{7)%`^QnrS>U?5U+;65s!WuOSQvJl3)WTS;}AIOk?E05cH_3h$Yt@RV>RZ(+W-Ah$^?(Gr +6Xr_N%?1o7!`1{xl?mnptjjT{~22|4mKhl8oru4TRg!W_QA8**t?icV+ZrIQ67w}JR*w5}4@K0{o&+Z +rSXE$t{*zs2bJAjXg9W0(-{29hjB{;}FZqm#H37^WVu=U&P4A+9@oG#bn7_do5EuQYl43~_`23pzyCQFkwz|9J7}Y>H1FI5;()0KJ +Q=%a7?_6h=J;Edk=t)fEF`5T++Siq%!E6?)ny-n=+ePG8Q)ti{|SK7PZX|dm)QQ_ktLyTz>5rKWOLJ3 +aq%(;FpvMJ<>+mpv)XsZ2?NuQCaHc@%MKJ98Yksza5lSfAENS-VH1Y#t$ +Ae=)X2$0f;x;<9I%_M$cOBq(Z#N>hp`cqOaBp8i!p*6#?w=xeB5C}eF#355Jh(NfuRsI^H&8)^Un +ayu@b+M1nL=BtDkZk!A{lHv(2YI6UW)hyIsxJBa^QxC_PiOobu*#ZrlN^OTfq<~HaJD>-AwpCfGZ|8T +KxLd`bNTC_7d9pwB$Y|b$w-mZN&O@f9YS&+F}nIUB3M)m88;ga7m2&o~p7`_I5D;*vvF8A5IteGq3x1 +oG$QZUiZ(PE1XVS$h7^*p4M)}mJJdQd?=kF6+WJ2qt@`4e4 +YZxZN@^|>=$At7u&(rA|tUE)D8vgw?CYHL!a?^s#9;*?AM_2v#?y@HDi{H}ah=q~O?6N47TT*1?)DCa +`A-h9vYPXB`W!$r2Y18fRT(i-x{Vm?N7h5L@4tuLx1ks89&ePjB*KU=Hh``4@gPTt*=kORkmc(Abkqy +~xqx)_*j#9rR!6qA9s%po&>aPT)$KVuBc>NE?0h9#PjbaRebJhTJ?trs1K?9|Vs;C#J>g;SkSqGZ$bG +}E1vwpTxdyiOE7|7yLN9$;p@X#)<0tjPDQH#I+$25)qQfDaCvVkL26V)Y3%F;1Kt_if*}XW>D7N+oIm +$<+y97DAEaFC3$P(SHE!9HUEIV((X6CU@ykIov~Io)#}uymdbR(0{Ct}+XlC++XK-rlJlDg{XUFk3#s>ci)%;`cyEMHU(o;;gl^feDCpKd4B^+x!U5-gXJH$_*Xjw{%V +VVwL@Ur;@?-M<6PGnRh}bL#%^rJ0ui9oiLPb`O}HWW9qin!5Zt8P6FzBN(R+!r^eG@O-|58N|A6&Q@kmh|=kJ#Nh{+!Pt@7DvvKG| +AzKu7p8p|<|*3p(#?9rSNhPL*_dOAcTr-&bHxd#F13NHeC;bzNz`kL9`sB@NhX%j>&>oT=l+>n*1QJ( +bwp(i1%lTx?=w3aTrMoL5#ynJ1R`hs(B>>QS^Swmq|{#o^oV&v`8h)dR;Crbq662?y_=7k-?AC*#fLVg7?E$=5;$K(nqm)Z;5B$0R +Fj=bAG710MKjx+aa$Ux$J@j;CT?uw)XkWr2|UKv@M0j-6X*p$R1AvA5n=9WAJ55_PmRm-VS!;gDDJQ{ +!J%F6e#os_A+lz0-7nnI{Tm{n5G}%;)+m14?b_t(u)5boexf5e(i9g&(Z|Wvyr3FDKm$k@=(xIak|S> +|HcmZw}dNcNhX?R!9W!M%L2D<7mMi{jge4sD1LN*Z0>0Ys8vjShy2;Y?Hy@g`PdAh2t%<>sxhxLeIzN +3|z5Owq#&PE_Cn;$-=#j<~Un|nTUqi9Q3r2?QtC3?i&H8I;;ImR#1I9%rB3BN(j>6wObrS@lA##5uQ2*#svl2H1iiS}@YCfmbG-$Gp*_p8$(_U3(DQ!7E*Fca2`9p?$C$RQ>Et1Y(Fd?596?qiG`zw(%3|dR +KDU^6HA=TJ?-x3bz|(T@IvnYSzYV`M$uRlf9LY%JWd44B4)f90^!eNxvwyr;Xon{LfKq%Dx3BIGa>xH +;i+;khzgY15F`)#3li2$EfN+c?Q3yq07{Vx+ASoOtuoch|82(cdO0Z9-2-hGU+9qLLkV#Tz&bcF>jliiCpisw5z}6)NyOB2 +S4eh>!NBR2oS +&cd6UMzOUtQ5zPoqk$=Si`6v(UZabuJ_C4%E<;R)3^F+4WkQ%r9WFceRDl-^Hv7jY6=SL+o!;Wus$9) +Ne`dnTZQ#LnHgs%%4AESSOZ)gAL#qV8M>fVLLztv5NWI2C~|1m$0tr%|+0!0Mh!1rBPs-)b$1ay0 +t9lM6DRt9WiiXlxB{TW_Y*Y&t{GZ+yF5qt2(&p>v2OwAE&-@l2+*K1OrCwyJ-a}*HpJBc`EzjSCZzwF +TZVGJJ3BnWWg+q>KcZWq0Z)7Vp*cJQcB!fGCE21bYzN~$WUU +*48u&l00q8zcN}_*C>avyih(}~7!W_13w`-Q!1y3vcz>k10zV^PsQOV-Yc)Zi*Y05UwGd%9YtU|W32x +2DXL<4%h89`%Z85+Ht%LscY&@P(4rnsho~Wk}MCdMby?8kxFR~iGvK)x)!c7Ad5oGd!9g_fU5IFJ+pO +GJ2d@4#5tnzE4DW-2`2lvGHxu;o3mO@YYbeSX!$c)v^za399xr2PB=~6xA^YM|)R|MsGk7%2mz29Qc) +?bMw#;V_o&GCr%)5U39^rZp*XkB#@Ze%DXJkWnW3(SD8W{)~>FZ&E?Twb|^Kg%MSp(hs7JwFsDKS`4D +Jm{xW3Itc7G9zpSqLk?ebwyr8mpRe)Ez>+mm5=tt$ea^ogw(@1*B1*`hqL045y@Uy5SAi9jUXks*_QZ +VJ!I$-mwX^^a?q}p`e@D%4`g)$dG~bHpwP=ZoyrcT~Ln3-A5V;GWH19U-=l)?5F=yE;TdY|a_k^Y-ihDRjFewrekJI%3Jz9|NM>G^aS( +{C2bv3;xnUMq53;dVV@c>)JkI=J2+`@?!S~4R)u~>k=<_Xwd)g)dkk??qvO-o^SEfH`(o0If4D`Igc@ +h`OI)1g=eh(0C{wQqvC+?V2==qb4gGJ-9X=42=&?b%Ry?OTmIQ97{df9Yj+-B#=h=8&b&{6y6B6te9X +W5JotG`5q_M1$0*;pEtzAe3lP=9bKe19;cHB@d0TvAW+t^gtUeD}w`*SR{Gi;jNyt8v9+c_a1<|mj46 +yFh)!rMV|6c9+OX(RIIZS`@qYCI3SM!p@nO{Z@XH(H#pHPB$bc{}y1%cbVn`$f3v#Vz*P*s-LQGbeOB +me`nCWhVwkgK6XxhivKnw*Yi0Jf-lFJDm?o{np9!VLwKW|uoVTF+RV4&X#y7=OCP2s1?2P@4cGqmw6h +I}Ol>L&s&Xo9?8{^r^#XTxK6()8WAhi$e@xj83gUX1ZRUU2H!i$bw@!dl?4S*9PdF1lZ{tc$R +2&DvE^5eRU0%I05s_nV9b<6>!Ctp1BDvt781V_Waj#z_+9}uxGWut3B(3@T_F<;$D`ky;^>ybdPzA;m +b7t1TX@hwddZwqBQmPoi_yIf$~f+y6x@=t$>GT{W`7wQE!fT?bHz_q9R0^vV=Zpf7+xr89tegHxxWZZ +Hj3}_#V!^No(9u3#%tH5wFv2f!jvbXH=qiPriV!A(fwGj@6n7H16FejtRkWjy|EU-kgrm!d(0ZhZF5} +$|{?>o(u9Op{f?^(RIYeThAa5o;DA2&0c}_KBKSbnBVE6`pRA>*BuZ`y;xrQvW0kb8#KPz+EAf~@tg; +AC2=WHcBrCCW`32#8HhoQdw6-8*GYa&0?-vj_}Y($elCSJONKsr$)(X61eW$w$=+w`h|xJMdM`T->e5gDp!U2a&4>EyY``z#kz4q-`6R0;mZWcgGm|K9+N#Zpq}#pG7S +eq=^>60x|2JOeYkL3J*Z3~mzrs?A+JrYYJxhc{Kx*q_AaHc`o)`pU6i)rT7W^RYR?>ZXW>!YpMK*7I~PTPgj +(!C-a2irp1gv4k&6W=A!Q+yktzD+XR9Wb(ozA3s-M1;54G7R0}(%xuvv0}&h7h_4A8d)b^JuzA +DtvbwC#BJq7s%0r>SaDQ50G(Tj9fG@FSxGO!L>|PQ+YMom-)2wYUhN(H2cNL_0J;CD^Y1)O1I2u;CYy +mXWf}K2D?H&!PTit;3CXG`tb%m~qB+@@b$GXXV69wmr57?`7U)?Ae&Wz$RtMQPE2hw|Ao~2s6l=@M&-bOJ$n@N*zvQ%S}Fk+{;Y0fxutTWl2B458hI`(pbAA +@=G+1G&wjPaNrUs{S&b%LI=l92sZ{PvzOIrrLozUS0ij3Cta>Rhl7hMwJJLhr-LOE{)opc-f)1Qaz~n +my3H8MUu87ON!a +I5@}BjK(B3?7>+u*CrrPyfN`R4ie4gEDbwKngeLQO@tB?m~VA{_c0~A4}PfRyWHE%ExTvOLeBcCo62x +LbE@k`*WzT2NI>B4+a*gDz#IvkjUN+%mAF0lJxtiHK`qsVwe0zf4hc`7@cIkPi$%7NN`OU$QM{jQ)x5 +Y-pba31GtIdN7j5Y3LvcO#FP0ha68*TA>sz3QH+2@N!O`LrnU_nW=g_DyIg<^j0`(Bq0LVS!rQ&zUl78>#r8v>40#2SGf}DhR-E18P#_*tJm+LLsux)UX$w+3!ukMjk4RV=UQ5&{XHM_zijfr*g)jx +UDhlQc#&k3R53zS-Z<-^p$E41oV6a0?HJ_7AMe#hLhyal)bQ?-N!qvk6O(KyvGYVbmLWj5=VmgSa6)dEtLY^Nqc#gM51+j5ODWsntG&Bug{i)Dr0brOI +Qw{ASZV!u(#^el0@veE)+4qk&53O~e@4AWdp@4-9AWaNZ0Gl5;qr9!R9NRRMEQHrsCHqY1C=lb4wYLV +Bmz8?R4yiA`JN|vQ}w7&LIPT#4wgW=MeUAF5YG7*YBQNbc9_CZ>P$x0?|aGnjWtJrlCh3J`FI{_Ib*wuLnGfbR|rfoJV;|-iR +P$=jHuYF)pCct!bdQq%QCKW +qrD+cWzcHUlASg@FI$%nj)M*Ds;w|EWEE!q9(t{cj;E_%rmmCR0D;M6Djy|pwZJiSvdotbhRj|E1Vr$Gzwp0!rY+5DoJ|_~}vqwn!ALK6!7b3e!s~@#b^vTe_=#hB +*K>5Ex(i`BG?ZqE5;>>*oiK0D3i@+#v1>J8M~7wvv~yh*SDl5nmf*v_L`Z8tLEimD +zfG~3Z;G=Ct_%lC@m@73!ZzDldBU|xmdy9!qbx5CrX+d5;N_3@@d$1*DvQY+6rm%+xoYgBNBb>4p!Pygn&9fL==-`CR`Bg4E?TuVTgy3yml@JX9t4? +!ORV#)XGiwpl~2ua%a^b8-2uPSx}QKGfEtG;mB~iEbdS^@;ALtgELP;Blvlp1%g9NITm_=L+hX;tp_l +@94J5pE0)jn*I199;8w*!GJrZXG@}lusW7L^Vn|IgM*x(-gDK25&QW5jv`)1`O5801OILZZFlETskD0 +U%XmoZGFKu2?W6`12u;q?|MWG0+2#TAZCad08k<9(HiZtNwl$6l3}R&{Ca#Q|BGxicogZY-AY$qG@gY +w+eF=_w?LdeEP-N}F8fgoI9-*@}UMqGAZ(TYslzsrWeHVg5xn87=3rLbOqGc_jM7B^ew;vV%075ySDW +z6__s(I;);mKtC^i<1? +V9^pg2AAq8u^r1vmH3YUX9(UejvhlHLwh;45X$o>S%0)Lk?^KE@9y4lUFl;_d4V<76+GsI_1BK+N^yI +*o<=#xW)_U-b_8Shq_v)4zCT7eSa_I5W*3DvWhNR}rw)gEl`D~=t{ImgHuTnh&d%Do7_&F@1ll>Pi53 +-9=DYNfLk2~bdRvUBZ#RYC-xJJ|$>$gUI?w~jF9a8J`Z+xTe;CF5j@E2@o;GJ3xX?fX~-$Fc1J>T*0& +mK82#rpsj_CxHf{Q`O~OU>?!hIU@yA!fAPHZdTdf)gU>`6c2&)@i4~+*amzoy?2rG8sWCYRl`E>dh2z +!3p#QhT2wEwVGd_eG!u~Il)_SPhW@HvH!*lo@(Pm!pd`gk?CgewNe~<#i-#_w@M7Bs?>!G%XAmbDB#z +lDZQsTu4ZMB5kJmx9pX$5r;wA@Ns#r?l4myGHGU1sxy~{8TMsLP0YQ^O_mqp?U>_z^{+hYq0F4xO4Dq +tLOdo*CB0~LrMT;<2p*?z9^8YjZ#nKE9{4SOECju6gCiPJ28sihRDp&hbXx*B +_Z|DP>eYxI+bhhaY|~TahpS{0_Z;t6F*r+vUp6NhNQgp&U-Gp!(U_k=gHH(SdE_2~>#>-|rO$#+99R^ +5o_*ZUk@~W)hLgjm71X-EBZI(LQ_siI>huAeU!j*bFP!|}0%bo{&;L)u+5hQ%{2NI7!yf(;){@XZJQC +fM+>>zQL#NorxL%Ph7;n9^E1=!v@8At6Ch1RMEtPI9xCFFy`cnJEAZi~yLB#vaM`Bw(j5gr8Vq~1$@M +ainC>Q?~tVKWiZ?Jvp&nC~e5vs9ZYwcZeID~CU*{$6;+6s-E+IzI&+mPA|p23E&acs-9hS2unP3k?`l +D^w}A^(FQf7xI&ZLs$K{1(=J-%ztcxaUtGE%(vx_wOO?hTwpI3gK=X!+s(-ZAEavzlF3nOXb!bj6jIo +J~FObkIYBY45V<;3T-#iPV`pxo*8{hwr-s{pU0*wX!lws@H?3&HWYoQer|ct6F>P(EUqB4QNG!ByKnp +3T?7AQ+j~Zq{XY2$D3(6ypV`-?mwe~lZFO94W*83^?!E(UkMpqJdSdLwcZAu4v&?X?WnCBq;ytB{En6 +RqK7X)-bdcY>a@0TRi`m;^&Tw&An+o8yKaxJ7+Q#?T)Y$LX^T|LM^AJ&iT{T`kO=Jr%s;8)tae +@lAzq89**%Kn+=wdOM3xe-1duqeA@_vatxa(wNJNj0IC(DwN*Zb9+@D#N73B8il8T!SD7e#ZjJ1T(rob9UoLL&_3>>-(bJ@fZCit$D3uIU5IF6q2gUqp4t~Ce__Wdd^7yXp7Vfr9o4N?hU|lXKLo^rt;z=Pot?qXx7;dm$ +gYvUi+e%A){CmGfQIXytxh^dA2;|* +fIgdtaY)2Gc^b`MEpq&=UmpunX|jiE1l&LSWuh^VJX^e(-JtLD4ysYK#PE{>!93`dVP=Q2d| +a88yy-?jkSRE{?|K#v0B9=Ya4#XmZPJb?kNn8z^?hWD)_(`qqxS3hnwIZr#KDJ@g$t%|btV&qfgX_B# +Vvrwj^+)E$=b?F>yV+ZJ1K{#GJsa)mJ$Q@eLI3&p(c|$Nw*#%OPV~ihXIKn*UeYg}+cp7RM{Fcb8UQ+FB8qk|O;>Q#|?s=9a}iMx2 +luztAL1zEpiT1Ryv`G2WuktxNQtr|>H?7HL?e(uz#V-f`bIQQU!ctNcBa$6?SJn&=Tw +Aq#WF%4d@O0sF}pDklhgV4gwjNTE}+Hj3*pfq_z6_tj(U%v)W3La~yNysq-yibDkNgH&7!mTbDtOj_U +h-2`OmX5|>q}~5&lmzNC$+g*zZDVlW&;U~p(ebeDt~!z0x_}11zpZB^uDe2qXvqMV)sWi!~D2ty&+D+ +jvDwy8Zn8it{&}5UEZt}w<#T+&PLEQ>e=wcC!1V?xesQb6IVfp{N~Pe5-R$B)KiJyS+wAudi|!o&>`* +5M$?>5Nq}WG2Xl%c!)UfU92ZA93Fs}dLfnB^MyR%)0$x_@ +a_wsq;L3WBd~#K0doAkqtCo3z^n>)P>W!sA*vM0YZ$tI+o~MQ+m(y*f{YgFv? +V#q<$$`P@-Q=wPJ|WJjd)8-sqwv;-i?j +cOgnrt!=MSp<5+52i?X3d;eIGOv~=;)0+KlZSB!D@v|BQ4Ogs2J+^*1g4vw0hw +2a-R2*sW#nS*EH)|&nb9cL|Yw|6&@_X6F6KMX?l+lIf2>|=0jC4x}U}oA4es*^4_d}#-vT%Y`iE}NAC`UzR+B%Ko3h~K_UUNveV3_A)J +&!0F9l`M9#sHNmOtmGlVg0(^bYU>;RVb*+k#*Dp%mkF=#qK;1gJ6xYG5`U(^p`M2y=Q$4Egv*yenm-XrHIhtwJGqZdG(2v9|>mOJDAprg7S3fQe{OhEDfPj>CNyS#pD*Ob +jtTxW7M~e*S6zi-?lb+*Oy;_GOHC^=TqCZQ)#%#b-MqU-qE!awc#zbmGZX3d9a>TIE~g1iw98*fz9(85TFo{u=Fno +Qv#|uXh(FGw1;*i4~e<#Z0+@qn`)W-SM5bn$KGe<6JXAl$$KV+AZeNF@}9rXoa8s6p~B0Y9omQq~zs} +a{xcu^4(oW)ryOo#TI--r8swAP2#UA2lj7GG<5n(#;K +;)oS+Yd{@4gN;M$uNyV-}kp2dw}Y(k@GT?NAZkc4_ldm3sy0#+x&|tn@GATpa{5fJF4d|*h*pyR6Sd> +I=h$sjp+`idX;+#95)DzVe#y4aQF;vBGH`noO&PhDS%QP&34A*RrnZjcp0wrD-^U%*?v-Q{tB&FoV}t +awRpVGXQ1Z!vcl)Q*@0!2XxsHUYNu4pJ7X!BfVz0ZGphI#&6qcWl-rze18}UAd+=HDSs?&MFRRP7;ARDn_I8Y)9yO8bEEo3B=3y +?><*G=>6i$vPIdz##XmsrfMhD|v>+3Lhgr_2N(Nogyyi#t-~jw*_*As!)^6*xrBk7_FkP3a#-@+Q=#> +Be;uIHWr33aRBeri52S1LRhj#J9y>=iYh{`!SD&_*o3v~Yu^v~zRMtO +Qo@-wx$75ow+&8?f$ql2Q|*nsidX!wz40s58iy9sZWQw^8v+aejQ!mDnc3gK?N*zR5Qk8t8U4SrHRi` +XMlX4FeJBYihZbMpes?jrSc;G1Ukgn2c3VkS#<3uiM?f<3#TytBd1S2R+A}9pm7>-gXv74x$ipOH;r?DmZ)sK%{P!b>QGDz}ilp%hlsG}x;emLnv>era~ImKx7A@8J +*#Qp)c;!pDbL$d`XNAjPD5Bjd;BV`zdN9O9F(~5tE|E$J9#YeMC{J8-vIk?2A5476h)DF}955H)L9+% +ksFP87p +yz}hcie7mEsH3lR79Yj00fpK1Y$UR1~kV<`h8a(_+fA +Q1T>Q7|Re^E*lz7Gxt_P8FP8}j5KDWo*H{>ICKv~>l^mnput^DMSk;CfYu2~qC$|^5_mLg?EcJWbd2$ ++NF&!HUZ+Mv+StC@lgVRAO^<9qL|PYCn}sWSmo&5xrhT-7c_ce72yK)v6 +p!rI^J5Ruxvr%vt4U=F=wtTc3&<7xBBcouD|K6$cul{j(2a>5In6%kxQ)Ar?ARAq!U}JA-`~bwdYHE% +iF*umaF1A39ZiB3g@ExBS|d3>MIDQh7?j5{9v@^C%`H(ivYxiFQv0$Da1j-X*=vpuQRvP^7!5kb9|1p +}&;u`xyiPjxpTtFo0yZn`A+xGOML*OdMZ@3n>|ow2^)mF965X8DnrRRYbnwahWjeUh+B16+PV=j^%*XBJ1eC=SJIwP^wwF97{?dFK3N@NQ}6tt(}d#i@9VRa1NTZ&az5hNSQzoEv6*mCM&6vtpq=mVidpl>+Ef!Di>#d^#LH%-Zj2~)Vu3jauXY9c&M}jqG3v$}1gyiKkJ}#i-i`NL!2i1r1^Jr}1 +^F8e1^J0Xp%99~X#&M@n1U%3+uaL9;1rGE5VX6S{dW{We;TnLZUR55&0%~5*4Rhs_Rs@?j_L&-{z`_& +cn$J#I>gT%3ho~Pb(|bk=7{{-j){K?6y)b6DmZw?jtT~T=!=BOkp#ek-7Wl?8hP*$S3y2S>+oH?VuXJ*215Vz_N6qip=$vH!F~DgH^#0(sUe65e0S6-b@Ztm5^$B4cWqI`w!$!bxGIB7 +(e&(2H_9!-&ehC20>w6(Pus+xbb4S3)hYml$}!6FLYUGt>%vY(Wg~2^@T)UJu1?@Mz6g6x==UrN^qD*_W)u!kLkoF83<9 +zxe}1#6qBNC6KJ)Yw0D#!93iSCg}x{_8mJp6riov8rkO|C6RcujJ8`+~z?AH^Z-spD8)i(`6Qo%tJAg +11yx9?4e2lD^%kp|tiha8KLti?C|9+pHzyv6rgto@7F@bDHp~_ICMpVjcl{S3T-BTR+&`2MNY>_&doc +ufFZH92W--EF`KM1b?Dr+r4n0!l5laP3N@FdG#x1@D<|9Z`Wkhx@!eAjm?wmFE9rL>f>o1Ka8{bSO!YtXRX2@VMWbgZ?3@PyQ%#vMy7 +JSl2wMkyJhJ*rLh9?yeJkFGY8S*O4lx%=$cm(GRkM`k@k34kVeN-F9E@|l`ocn&FECh`{j5kyW-xQ3JE0$^H0jjRq%bX +6nQMm%rdDq5lHT`PJgKXb0vWNLo`L#nD;c@IorWr?G#T@r;NUU%SyYkdo*?;WgNTt1&SMm7b0;)|#3x +uidi8sUR$fHGXdIJSjGaxGipsd(P;3%1TBKu(LQ)-hBseS3$YbcuRel)~rox;3yeRMpF#o$jS*@GUp% +p+3c|Ks6P*U9QNwrWFv3Rk=QT$uPB)hB=k@i8U}ATPPz8Z>0`-K8>`X2c`q3OVQM2;a=bc$x}gZtCLs +)Q*Tnd!s=^qNg|%Y=u+&eQ!_M~Xmxj}7GBS#CuKb}Q093Fp1u(%7IlbCj_hXfAdpz|EfHlrE^EzsHF_ +^kZ6#`WqCB8YsW5h4*BzW-3j#`w$JO+;$KOau&}?J78G!;diP6KodV9p>PL-)4*y>qjCroH+q*f4z!H +9xO)F@xYWzlO9ce+Ye$>puG#T2p8TDSHBv{eq*{ialv6WnY>8EStUO@3Jz +hpIZdx$)lI3@ygVVA9@UhVe@<`Husi8Pn3>M@QK!_%#sl<2gW(+ov?BAI6qOmt#5?=?#~3p^wb0J{yc +E6o4xz#9FVI0*e4I0*e24%+|G5Dk$8fzTMagCBGcr}y9*qW2)1+F!?Th(qiR-lN-}&!j{L%!#4{vY_Et8MysFoI1ut2<&+4ml+o%K2|+uRnVg(Li`z5$Y=iL7=B +JZoLC9`(c<{fUdQMGq5|sZ;D|qQ{~kJ{@GJ(&x!X;yjMh+j=j4Z0ck1pDDWiZ47ikAmDcxX#1xa=nwqd{}clq5D55SppD&6Qon0Z` +_{0vhjJnVNes(XPD^=gLNQtermO%50##mjtCJ(^Wh(B;@vPUKd22&k&zjwCBUx_R +5pD8mG;B%f%|-8xL;?I0N{gR(r5+f^x5Ks=+MhXr#rb)`w~G+)*!*K3W~#}|nH8A)vWJn+d$Yu7k-U0 ++ +7+3y=Lx`(#tlSe>xbk2T8!J +-cv@qP~WY2OWhUiM6ggEN7`jPXuiu@im##6EH09(RSGp}FLvynQr~A;&b^VHZDi|NBPB4~fHH84v0(9!~zf +@t_3qa+zBLwD-@~Fsy9Po_{nR+ke=2K>yzv5AFOH-L2ZS&x>dWL8^8dglh~R8OR_mY=TLym*&;; +}LkK!u$E_UGu|$HQJIfb$>KqbzK%+d4I-onfUBbRe$U0P9oUi?ThwYA0aFrQ5IK +2A>nzOIUojPj*aw?0Z<@BBfHMvK7LCv{=|fi-$qtn^^6zg+!l`sJ?va=$CTT$|TnMGiWbmp|mc{Eyu( +^;7jJ3_Pa(m9OzHY+mNo5SPEa<6j=}>tKZ`^4Bj+?+;_%SN<>8<1N$v-fvgXt^f7qBEPM??xstP`&Ya +j*Z6t|KUl&4Ki=Or>-&%H?K{)_Gjkh-2iyA&ruJWsQQPE0L6dw~PlFFhO!N_4gFl?|Kj(GZk?S^VO%LFNesCa_9D^G%cHpahu^rgO@vq^Z<*cv|v3`giQ0xm4e)O53z&^xrJKoyOJLZ3=Xr +hnY?kBHB1xIdehjg)j)I<>axXeLKM;xug`#J|~B#+X|UzppAdvuvV)4v8S{=ii8Wqug?Q8J8|7T{krY +~kY!MWtJ}<)MvnN9e+R+Jpb#4=eG_{NlD~uRc=Z-ks(A=h6a!qm=>2BKrZ$dyZ3pEN{Omd+EZju5%0- +$fJ8_mB^9dz_AXY63ez^*}m|KdWUA<`c1K8H5K;>!$%wNS5EqVUjRRh`r~a?%ENWrR`dNathkZ22K&Qt4~MnAZ;v^cem+|U_B}7kgXzC<2+7|b(lOQ{l$HM+_XR%Gw3@eH) +pOeR%b)qna{?ZR{_)xP=F~=;x4FA*viFt!_E*vNe~$-uY-jj>VdRwp`#v9^zwuEB`v=6YJ!;J=(UE{p +>z=|&Xm;?7;xPjuWPQR%qkIrXX?q;Jl$6}uwb#30#Yc0)Dgzs_l_I19&(|IBD%}m%K$9u5w2WO17Pt2 +)xEB0U2H2=0SM#d(!DXYw=p2$rPH*77+up2A6A}bVS`TRG9L{e7X28YS`V|^OXJi=qu{#!xzEEm)EAP}|pD;))D>C8$t{)l`|1^>r8|5v7P%xp97k0-W$d*z?!t^tBCXg#km6oN>v-qiu0o-dkC6*BG&<8p7xV0yq2$7qTt#0-`IjI0S*O +txUW-1zT@YrmV9^&TfNZvx?_L6ptUFnI1qD_umurqX{T1M@SY$S)+XTyw&b%UX0~R`HAC40JD6jSS`2 +_A*4Vjl!E<-I+}69yn9s7Zpjad6EH)7=w2;g*!<|a3vj9htda4Rx}vxrpQv9;!e||+Rh+U@!kS*yncO +3sBvG5WDaf#Al+^_2C6%HU&B(%^arK&Jei>3l#gDa!?LaS*ez2#52dLTA^N`dy20x~Pbd3s!hmv{&qC +jxm)6HkN5Tdo&dLHYW0YhhTT?R-T{-w}Ti(rqC@o&;Ig2iaUFK2!K@w+8{InL5e>EZsu>HqWpQ6A?XSzrGn3w}cfKVR(kFo1@jJv^fc93n9Y +Mj-g-3O9Q+6ov<%$RSaR9X+J@XI2tNk2vONPNk061*3k2lcNmuCyeOFYz}pFE>NGLnImLE51fF0(l69 +!a5AQkD-gu7-hRzPTlLQbScBxq^z2|_kH8MO9rQCl86D9f=I +!wcQvOODc*t>TBLjL+SW +`h9raXA7sSbeCAW`7OZ9@4fS-`(&F*6rrITmJEmfq#0-Ki)C$w{KaJxS#pEFHE87$Ki1whnHR$#8;n` +nn95m2jr$|`s{&rvcj%JBUvVMiS1RlCg(^;E`W1ODCol&n36Z=rKX?u{jw%}KS1leTP4AH6hhO5)5VU +7G<)W?M2~}9Ub(l@=MGx{kGkIR!bCSEvQV!JcO{Tk?`}hE^uzAtic<_Sw<`oyOV{U|N7~($%d%6ixz# +y=!3nrp7(G_x&=2A)CmM6IM0k>56DHK&V+^6I4kx=c_HyXyRsB8it&x!lcvK8@<3RJ-tlU~QG86TRd+4>5GI6ZzC}(S5rL=c+dWv(|Rgz!McWF9+FZIH6>5VJU1Mr(e^bi-tm2y8)p9~vsO6=>0l(@GSi{wKvZCt4z43*5todGQ} +&%;7dmS)jBaN(=UrZk`3SALw0?2G?;Bgb%L3?%y#L{}ZOZ+|*>2~8E|+^H`B`cH9y9=dnZW!>W6MEvv +%hTK?IZLNtRr-CR@ZXvMb`By;A}=T&sqVj +ziAQg5vPsXacRny>9*H{PPA@SNIq_EQ_SXB=IE{s2`@z??BU^HCmi7P>K;ibY|__Wrvow;JYB0%obZ& +E)kymOyiq|iSfQuY3KU((9l?ruyM-5be#8B`e-5e=bD* +f`RDURf!>e%eO~$wcu*}Ez91!(*6OZIRbxI5V!lgd-lr~|9=^}CvelLA`i}C-75O@~ZS)e5H(ShZdc1 +q4h=3jH)yH@0l%Q(R+?w+>M~&w!q5(u@ZTN=%iGJ<}1946Ng?1wDk5u*l_~dH7y>MTLF|H0u;a{To7x +RBAA7bI(Uj7%gaQvq<9RJ5I@>{a!rx*A^^ae*T41;K#f?)_EFzV+t#XH)VNmjzXU6cK=hc&A4C!c3C6D%@kUH`{JFG%K$PgipOv|A`=zpYcKIxhr`R#xY`m;n&gdKXdba=dT +Uv~#~@rR2egpV<7g8nqmen^RZ@&Ja3e~20GCsWwL)DdDwY2eTd_^{1=VKCk|cqk1VbjN?0=ur@KNKxDvlJR~zMkEQZZ+Qyf8+Whq_+37onFUMWr#-;WRMVI*U$`E`Gcy|Q6VHO@B{h&QOvAuIHT+ +dfF!)Npdp;CrEwtPs!5+hveJDBm@^(<9yyi*0hx_Hec;v-zuZ9i6UEYSXes`>J}41cP!<-ujakM85L! +_Y6=W#?J>_KXfp`?*E=%;eudu>k+;7A0Q84_e~j!+VUSo?xX`j;r7JkAbgaQt|H}pz&KOMa!c74c`ke +eg~Ytdx&4yG(Nl?N3{d`TWJ^ITi)f35oj4JoSezMy40eanfOqsis1@Bb;X4@0KC +8c?6iF!mb{!3oAC9i((UUyAiLR&&Fn*6=CVU}MhcR~c>ZCl0lNA?~33dD(qM^FW +CDW=)VPD;-`>3&@BM;zhv2)w@nsa3>)+J`E?mDZCAmFGB~nRSeKF3C<$U=~Jkb_RSxWRDWGIGCYH~d% +jxK8bmHqwWXFCkHHo>ne&7t(x&G!kqBo47Z=M?{t09?6UZ6~UZtjogl;~GU5+X;es0F{Jb$Md_+8qCtVa1JHYea5>kAje*Y!GhHL7lw +9?s&ILd@?<>)`-qcF1eqRr1*GBC7kB=NdZ;(M<)ZSl38Ci;1JGFuW +$fD+bM+OhWSM=NpDsI=Lo#s-!XvJu8*7VWxZGlHf<40oO8{Q2dqt9t7U_TXM*ea?( +rT1!;=MMqbo#EPeC%uWkUp)A`6!}8Nq0LKeAYJhdLsnVjKVkWZ(w};%{QPPU#`}ti&8nBfoQG8((CcU=O7;f!DdEWRISJ>CT>HLxZH=O@};v)a0^Z%}8 +86jbqpfMbVV4B{45cJR0?T}*}B>4!^e_^>gx{L8&L-MF+BmSqwg*@n0v7@)W4zG{JhdV~GW8p(#2l=Q9|Jf)pL>|ec_#>IOU;SwD2|iVS^vDbCcm<`8qPrh|>gd67kpA +fOV4uqeAF2DJdjApS3%}?j#K*P6V;<)(Nn(|a<5)KSEtezvVzTb>!qfOelkO*%bHu;jCWwKrk~r+|Sf +q9v<$d$<3x8(rUyDF02Y>Z}clP{^fgg~5)6p5N-+7=%{81TzKRO1IV3zxBPY>=pIRjPPT{!TYgZy4_x +couSAo<$Gvd5V7^Y=ay_)3g=3@{!I%HwbHK*hnZWgNbKRSWHlI?y4Rw;l5~5~6P9Az|?Pv9I7C;~?N0 +5c==pAmAGi`tRbPe?7!M;Gn;!c>sJBJ*Xvtb@!!NNe%qjoG~B0&m}KO?~>MD=G(NoXeMk9TCRA-QRAxvV31xIC0$ +wtCuAl$8~J(7$NRqXv9w>y0N*CWwOdglAFdzVQGH~g8?(TTyXa9Twg9qrrGD!5;YNdgUeNNgNkjZ

%t9dIg4A$s_Ek=zboj(jBGiR4$rCZl@vc}DA>;A0Wpkn6jTrvk5Ymdkc!Mi)2eUa(Q9$#&k)Xedns?g +LmU!LfE>xeDQu%l3-r$q>Lf`yg+~RwhxeUVdHR{;sVtJJTJw7xQNa@YF$h2|_1I*|VA`w*%yV3M!zcc +u{WHFrB_j(Lq$#!KJIf2}m_E)CrGb58J4+W}1XKp+$+)l}P@O43@g2qV^T)VHGIS4#cKbb}!Uf}ZVa3 +MMcb$Ftg`&B^~5?i7SpfpJC?q}(pRxe1zFEc64_ag7Qcy@O$%w6dTtJ!=+CRX5y?dE(h#QeQpGLm4KA +rMyGuffe*=!#=J+?{8)m;L~%zMTvF?Bss}s(?Rbm6dV6PG@qQPMJPr6l5^;1}YufKUcjUggcTE5T`pp +bPWfJDcsoZoo92uBJ6dC{Uz;O;Cb;KyaS&_?$!~L^aGmI?W;|K;o@-=t>sIlEf{oq;#1kQI751GWUdw9pv2+NNv7YN%{4t2SN1QDF +%Kfz471K3fSygfg%n-@7_S+MyHGPqAbbpi!S6_P+xW{u%T$p$ud|9fmA#Fh0$mfN6en+s-S}zjwABp} +bZwZw#!zts~{R5+2mZ%%wOwR($K*hNC@F)xqkjpmL@sjc6V5y~{GI{k7+p9p=r#FsE{JE^7%19^W-Gv +OVJeH^10{9NG&8wkbrOQJL9V9>=l@UH{g_VSqg8yrIr{e4Ny^Q{0GbM(L_s)Jw$M6^YsT5)x+qe=ONzk3H~yI}?_wnCwssu`z|`mowrtcF$s{T3b1?- +Hsm=f`c<8GvnMhET-3g@syl)ygN{F_^{Xl`e#yC6+pSv9K3cM2esbZzVFi-8s!h#Pwxo5Q78gBjYcQV +^m!TVaiEcc`2H9*mVwaa!EHNgu~~v#?LR4w)MdqP3GR!*D7qGRpv2$0-D*3t%g&?Oe!yC?VLrJRxOhy +#_2t<+dGYzVey)*+R)J`Mnirp!&dVdTS=LH!B4>KL140SYN`$$B1icusoTpz=B8|RkDij-O)7`|=_uf +$ExWhkoxUE+J(5m5>0Wp|;Ei{p;tTfMSev`C*$?b`m-z>y!T=IduRg;Ag~t*-wZUzR72@4-9r#d#;MWP6+q9Jnp(=@N0Hu +$57YX!>UAUtBzX?l747weoX4+LODb$AAsjGaWXXLI{}y`3sAK(A{Y!1sqLMkuRKoNFrQ3x3AY!O>ff+ +YpiAsT&OQKo)X5zCLedG&|I`CPGEb>!e24sZ`xl^Kzfc6R8PA6gHU2Q0qFv_DdhSixpBzi9^89NO|kP +4-s;P9S73*Dm@96ZM3lvC~N=FpA{U7L{s$pxVugvdj&^{!C%z{DSe8SfT!%Wk7yPPUU)Pkn4C96ag{q +)_>J_a_7B_br9jg;z47nZ5ihkID%Jknl?#8{@!vBCM)~C6|D^VGzbpSUY^tvl5{?XV&l1G*b-rXtmVLtJX0#gwE>VGtxG5YB9+0ERaP^jQXGZEn*c`776s +E332s7u8kfzA*?B93Ae86U?F>7nRoC&H7D$dP}PoQ}EohW_;D9u6oJ==G} +x3QKVi}X{&X<^_PU|I+9%=LxW383!=4qsV!>1=8FqTUTYV$$C1L^#ABp~wp*|X{CvSh3apL$EQ +@lZYmNMp~n4{a%Y31J#zf|pv&IUB;dJIRf|Ip9aEE3p!S;)6(gh<)D7V!GGNX; +3mNCvek01Llag1SwqSFrkOMdz5$vZ(#|N>~4A2F+yk%+dVJJ=Q|$YhgFcy`-KnQ+_zzN$GjOJ)>U27WUB9kH|^SVXj>DK~2bYE0 +wM$>U>2kE1>)N_9QB{AsXwcRTEE`Bs0+H1(3Csxi&l-cm}xYXF1(JCv{1j63UXQtK=#dc@H1Ux6Vb%q +d7x2mlrW9qlj$NN5>8U>yCw2l=8#8s2RmEBQ2I$+;^1FLEahBiacDqvYxYk?#v_YrW-#c!}DR>#Z8~0YJtd?HLP`gWgJL#_q0M&M>Q1Edo%sRU +e9&uW?n0alX(pGI9i~@S=h0f9zPI^eP`Q%>M5L}4m6oMfabUC1cyEFb%1oMbk<|Q_7n@DW=acQqMS>% +jtAl38nrv$@aT9BmKa8=f4cn!L6Mx4`5OIxLSf3?n}OH6t8J?{W8z~4qN>4lNl)GWE0lv^kiGkkUv!3 +M%sTjVR;yx?3{J1Q7Z=Da`5K9Zis&B;1isg%|W$iEEcry<{V1{ynb@@!{jHTf``7%#Hhntuu7Y{lwqKwXF&v}sN{`DY;@aFojwH&s10^#Dp=45A`(S|o +CNy?VUEV{TiARwHWLPn!-Y|mYm+e`;i+nJh@v?p@u_D04#gs5IxdB?UFZ?xSLO;st2)H?#<*Q3?!21ValtVUmzfB>|DFlfHIS3Wz9~+1^W$BH~e}J&AXk{N +8=RX^POHW8spt#?(z6?|w#+mSJkDyl-dasyQ3Hn?D!0(g`eAo6HvXCqK3G(`?q*c`0L)ozAc<-2!?*u +JT10d3{7>7s6hTGQlt1sc`aToPb)HhlYRKe#*U_Ey>`dF*rOAvni|!ikwM-xZ3l?U=Xp+SGI6Hj^(V>?=z+e-@K^)EK4LrAhgvu|I)8T5xT7)}Kl;35Q8eXd=hbn16J>@2?)}5MS=#(5(2hM19DO|GMVL6 +$jYJ?!Q69C=Qa9;+rRt&RptB2LRa$=rEJt!NLO-0{;#yJWwI<@4&(X6#_qjg}ec&KfuCt(ay~FJuLik +4ET3o;eiT)e+L#Gs1W#Du<%GhZ9ktj27VhizSvV|pD%5$B6UeMyB|=>Tz=i?g(xyquHnfcgD0KUQ?oQQ*VvTx-VTQKZ*92tHp>Xk>&6eL +iTw9~+JTOnB#16Y$Gyh4ak~xMvJPJb0%bz$@BDJXs8X;RUl-L&;$Ci6qZBSZFL><7Z=x!h*bXsWgk^N +^qbw%eRpVT-N5=7YL*bwBb*`7zmwgqo-2Luc0kr5PLHsCuAd3FKtks68zbg|JXQR?7xn9Dt1$ge~fAJG1PlF4S$hci*}p)Q**rs%eyT +<((cHS_l}@nQRHB(Pq4#w96!MPeNh$0n|s3XE)&S7eYJYu-o +K^;GTewDIfpSH?jx(d#sKmN6a66rizZ(K0fGZb{9ayM^gT;+e3Ncm;P4#eWcVe^2CCEbAO^N=wJrVdvJJ4elb +G@ik**_EdzKV=!hON_;y#ihnLZ}fFzI1wm4 +?=7xH~8zR+hvWqA>V)*Lj#uO(#4zcZC``r_}JO%Q3MKp$qVLTt1`k7U#4z%ghz6VW{WBF +q!j1ak+cF>0*q!FIIAE7xV1@C1gPjhOCNpMf6+k3J&S7cddyib62e&swDC_^!B5pRnuTCuvH&KKxWvQ +jsdnOYhth+EV>IH~AM)G!L{-cR<`Bp%_rfXZ%>vVT_u*>=1kI62bzq@C~^LGA|&{7Jt>@+Ff0trqdXU +FB_Iv<1<90kaKLw&*P|tE#DgkO2mt90}_;Tf6xfKpQ?I`_YC#UfapoKO8z@pTK~T3fIDN(Sxr=7Dz7( +dCSXS5VZHWvx_P7L3Ff!y}d#6>e59{=TK)GJH8_xS$@KSdxeV5+jhXP-JjqUG-nD~BDx#t5uRURnUMA +3p0Y-z0XT5qD9^MObUbwb6J7}4Z9?kQiN7lTPTG4U7l1>sq`n(PU1c;XRosyVVtrX5$R61$cce*AfHc!Rl4-%!YEQ-&2GNBcZeGl}^Wr>xh(99rRaWx|K%T}B?89M-P5_)-DagcPhwAO`1ln&&mdpG#MsDQkT(&(eKtPrn)* +Xvtm(YUUE5V+G9-Qt +{RomG{msx!l6x@IBQ97JcPH7n&}o>ttd%Pbzb2RDrM#R;0hp|e?rIfw+RtGz(5@j#yE?SC`(X3K7xYq +#(@SFz5izeL}xs_%eCq6djq=#0JxNr?99H^`oj?M%nXT3_vdCypHpf@6#f}+#Oa+SBFI~R1$_@#!#j11 +pgkzw9)|SWAvfCX8foZL-iSrJPzw(4;dKn}{T|4hI>Oja=ptfoy+GfMB6|k~{BBz&_O*#$^>A$W6Cis +Qn@wcvW{FW5N-j%47e&;U8o!TN_+#spnhWYhgGRV +If^-3z&MBW^}*qig`Fn|5O5$12v_wp^whyMukP1pb16`;>UeOvlds1Ljkmh9pGMg<7cc~$tx8`vqhrP7{Han=wKdFM$K8jUZaTh7 +c>WNu(qC9Dw9Oy=&|sTPTfg#Kn*seHC=Cqo0`GOE3XE?YuSJu5Rg)YX?ZcS5_}TwpGM_6Tob4h9&3=j +ZYKdju1Z*gw=?i7fsvoXeUG{)cuZPZ@YEk1TsdKQi|)e}z^h-)75^OWe^ny8a0*^=vJQ@S*gW5Ww^^I&d67nfd<55Ifvc}eK8Ia>z(~uG@KA#@FuBNDwgls +R3&~356L9=*d9d71Q|tKrj2 +{IRVUi>W0w!q^#W0NCmFPE6hEND5U>ZlsPrXgj9a6WTIKlRid&lQ@CU%SQp|?TFE>0ipX#2JY`P|zC+ +J`uZ_k?EnM!o=k`<%b~;^6ly?567JuI;fWUD3A}$`<&;zk=mxPugy;n}Ozz+vYR?{qI60@&TUvn&m0$uptYzJQaO*wHFPE;+{(#xa0y@lh4>X`DwTiBlbc#fHWe(sO*IP +hEDdf5>P@vPj&wm)fi@_deT?kqs&rSG$+DFO5F3eO6`562BWW~&O(!(HiDp_lUK90oEJ1z?P +sK#w>N6epYh<25YbwiPg(|fKmpCh^&4EDl$y^u`Kd1Ub|-oKdS43$q>?cv{Q_y#ci;m&|LFUUEJCr%G +oZw2Eq+5dx_NKBY<^{rcpeico6o|C5I2jEkBhs3dfCEV;3dVFPwd~nUjIiMmq3RjXB-LnmDip$?mXyl +(S*sR6W0C^`pP|#BKX$Iy3MgY6C@rf}22G@8YQ9-M497<&N#C_AY@x;rKcA)>6Cs!1Fe9=CvO9F1lS$)_exMH{k_Hb4H`dX))yhs$G&vFyfZ5H~t9Uu05fw2I->ckzJn3`Pr-v*k7`|OVZZO*z==hA#K-^Hc +aTy$ECx#s}pLGOpJaXPF67MU}iSd2jg4GmLC2_=kVac8kVR>B}lwo6;e1QXVC>->VDPf +?@+%-B6bhJj)iG`tZBg?IEBUzmu*rq|ytdp%%BNAxu_~N~KG&N7+qG%hFk9zCqEQr=5r-W)HaD{DY^w +J)_RZ*hnf~xB176JKMZHVx#it(6s9d8C- +GM}oZdpEkHDJ^<2HId`yOpCx(El+}n0eF6&!w1(nY9w$wJ2L*~1-m_4>}_w1ASCyMsJw&(|K`^|zsxc_1hg`pTuATWedI7Y!3v1@ +cd+aVl72^dFk{L=z@K=0bsTlkE;UFqmI|4FI6pOT<=9!9?v@CjwXg3Z46NEG-k +6y+`cj|$AjheQ{u?VIze6Z=?f5zPnHyV=|EUDeENXc!0^^P}2u+WvoxTD{)jveP*KgFK}l7kpdLV!tx +8>6?L&IUl~~AtI4o08y7Xd=%bb&$DHk$9%usevw^TKeU}hWj#GTKT)nmscf$y2l9&%(Sf9 +7!j%l$%h`IxC6Fy>lcerf +MoX&zPfa)R#%~&rx1b$XOtItSx}Vd6cI|{B$`xbkf6vW~yqM`l6*?4;fQfK319MDps*14@+^qm7*6@@ +px$-vMOCM54a=71u9#o_halj7ak8Yp>9X#pbsO&)b+bWTy!v?y;U$f_%b==kMoAWhe_-&lI1_-zbz?p +p2nGP?`&qgQl&^p8+iH)dNG#&~Yf&b7^*mf=;up3NgeH55J$nqTI%`A!{ovTPzQCHf&y5LPm(|G^amgLu#v)4kf2k_>b42{Nulg1S|8d2Sp) +Y|`BuwJ;_8Wmi+i&m&rZkC@6bvE6o|S~?Pvc(-*G;(u~C!1uTFySw>p`XBgt{Qv9pKXSY%syG;VjQ1p}g3kGwxOa%5x)kBSE3~kkJkw*K0q +J4v5ORK~_vG4PvkF=x(xJ*GEpVl{8=tn`{qvcviT*&?9A2>3tITQM$T3fP|M3|R@r($+vN)u-76XlxTA!2ZKNp0xx;{4_oV +zo#e&z8PT&~@+du?|HSI4rUb_i2THy$1qDjoYGGLhcims=k_MQ;2J}Rfb11sB9+D56B@l=~S!>x~}VT +JaiMHjw5vLp@}&pWb|C5p&dde`ph!7cl~eAnzDI +#qgL>7lQ=>-hJwBxtjIl;R`gr3}=XD{$RPLKFBKXMd=fo!ly=>BYfyiEW&X9*?vmT_TlSub^_|l4^q~ +jnyCNP{s??*khnrU<@OjTP}b%aZQY7>q@>D@Z0xgS+LwWTzVHBU!04CkCsz=RTc%&zWz3clwaTnZFIT +HhmB$e_u8TPMs8cEtN1t*rq`E1*9TnS!ffz5ARBz~5S(Lyq?%JigGakEQP)s>Qaj}YYwCE(Qz=YF#A_ +$m;!>NOFWN+hjB5uI-?5EKc9Z9qw)1gD)dpvRTb%5d73reHLpbF#FoCY!EbXQNe>u5f(7|H3zJU)k;3 +1rKune!t^QMgFnr%qh1!GV~YI)-2#UPp1`l9D7g~+7W-i`ayb_b1m_XI%p6jwLV{(`Oo_gE8`*R +3=3-oz&ap*w$$emKdD>wAd2ytBbGT&yA4@ZY7`}w-0kiEGFXNyWJu0twJ0LgWp%16dLQnFE_dBD6;`R +PG%SpgQ-tqamjv4@3j+Z6J`AP_7ng>8X0lS<6G{zrVSnw(D-Bo|nmQW`FK{exzdU<*U +ZCEjJUyp0yt&|~YK^cn7B5O&oE`qL^bW*4t)cL;U2ar)g=e*?hV9kTjZr{vi&u!=`{*E +Or%yq$v!CGYn*OENjtV~|P8;FcbNR%c*WW46yCZKSU)w?Si!nL57b5nG#CvugrS{-7jsA`Os-C;&|Kq +(CaDUOa3Kc=_va-p{_6_)J7dnC2nL~Z13H=)Ddwz=3o@0YwasDoojq5q6H)s +Gcl_>(4ghv1|x;V1sJ|2K$}^#2rb`dl{Y7sQD-&=F}saP3e0w)IT6AUw6GU|(aJ5@I)a+N(WO6{?N^H +{M@u8cw;-hMkjJ?b@DRAl5yNgBmxPGsNJF@s^uNT?+Ab0HZd|)YCBHjCHV4B?E-g@(I4~NZF|qG|2I$ +!SgMsFZ>mJCR;So8q@(h7YmBAP>(A;2A$gOC0F!;^=Nhgt|K#O9KjvV59-B6ie-3GLwR996Vvj%@Ra_ +9DmAZf=Qy$zv`d>?(!>cim81l*MhrX?vNErO?52q#BC?gU$~slt6~nsJ#Dyk4JuOf@l?uyY{nTJ?8#7 +%I_(>Fk=yDx^^WbGEZRR|DQqMf7A;W2k^^yw|5uYyWy-Vc706SEig+ox0TGeHfeS6UM^pcv+f`LXkyC +8aIT||tP(+xfngjf!d=3J^v?C07jp?I>cj#Oo-@>-t(`8xJdzect!JPB9`u9)(0s +^y&mJ($dT<0 ++$A;D!AfQ^gM;4K>@S4qNg3poB*00>pg=@3mU8TmJt-!%RanaH5(u3nF!s&d59GNkeoHi=pHT^FUr{Q +o=%ECx(yj2iT?(PrAmFFlyE`LFs)Y~1PlpA`ulLLndFD&Bj^Pz%8hvOcge|+f&m7bwwKu!QTzuzlXgE^71mwOZnakK$x;E&WPelZ8B7AwklY1+$sBrS&G%IXir +FrBmMEuD+%AkM3>14L=@qL5(OAjb97jjgDrSk1l=@R)g4BzpN*j*2IY^7~n1!7B&eU^XNFTqsTcv +y|_}_D-*a4U%YYZ#V#--ydUMOWNn{z#*LR5lv^^Gk7Eej=NrnBydEd{a(M-AE+ayAP^(IVWRtd32IT{ +<_xa0czjQ*K1ekTKiS%tE>%}$5wAWce*WNaATxF@;AXu>+)XXw(JKK^VsnwG +0uu;C5YCy$$e8A#^6UruCp@2C>L7-CoXId+x!_!U$L%H2l!pqM@#hGcuh`~i13oDg2kln#2+R{&Ht!g +MouM^{+$k*9tg^#d|j1(OfttUFg4dd)&yLKL_QqsG$NCX>zxJC1 +Jn33KCnK+@ +J5+@kjs1u4p8%rXgjV#eHM4==^?tYe^XPn?*HyOjjJtqTU?-7V-CoR!iw;DzF5wpFeA=nc*$mba+^lh +ArV0+>mB6p{gIDA{L(fdT&MsRkqOnMhL*!WHo?!0C&2hb_5YYO?JNcOHBHfeOPcn_z<)!U_PYW89%<61xMVJD7JdC0NGzK<&+Kwx04dW8hPkBnYKYp> +D4lO73l-(wQILr`h!to!%{i>ei+kNo(Kx=l +)tKfC8n`h6qL&7SMdPD2Hx+?lBZr$<#n4i^LOXt-uha#97W)LvyMt2H$ZYG(BEY)%BsLK+Jfj^1h8<-5T!0ws8O5T=z&V3K}#)|erW{{#5K{v-JM-Bo{vF +YHtJLJ%6oA#B4cn80BgBPbf7$-S8uCXr9$zFqI^t(mgn00He^{~d7Sw&Cxqja>O>_*$gFc@4$(x!ET-Rkr#60lq +H(Pr=vackpGev1qh`^va%IOoncYxX5Z#jbuu6>}p{K +KJf}k}q-jXZUJ2_^OzaeK;o>0yxc_P#M3(oY0(tAC;O=%UsI1scuhJ7?-(NJY`p5~x?Xv{K^Lkb$I}X7nDxAmFE3khuzTj}oM>m6 +jd;u8af1I{>W6@8b^}BOFpz6=({eV~qMv^o^Z%hj%F&N(<3#MTVM{ttDA&4Xh6h_ET4Na)G+IRY9F4& +i`)97u${Vw$F#k6400|oCAUP^tASk%tOwzJ?jH`>U}#<^f>N0#mP;L8BOTN)~O&ogYVu%RRtZ7A~##G +>E*t?;{aND}+S5WJg}6WG4Wu0uuaoNI5Oz~1ev?|zDnXKk+?#yi$h)Q)x=NK(kgu-*4n=I)#^6See_$K*6!zB^y~0 +_~>&mSLw@C0sl=>d>=0T+P%ttX>s@>DgN!4#zQmk!*FS(8=Cobr0qT1kh@`1f01P5kD*(y +>r2u?wQxLVUUAg~c{ButHClI3RC}&RFVaEz-4l0v2x8_kTQ=y2yBbWv?@&Vfmv$Nb4>eQYVDONxfSNz +8A+JXkEX2`k;DboI7_e5xx{MC)q>Pq+YX--^%6cf9XsPdU%0fT}dtn)9m9iC>Phlgct09SlC6W6(v*6 +3RlOv;9M4Gd{MGyZBmZ_Y6YYITtvrOtHbqRwFMnm1%+z*m9@=)nZsE*pjNp&R7D9TQgE-o2F*Bbm3@S +r%SQYn$yTp`z;F#>6I!hdo^_6r7sGm?Dpl0Pf&c6NU4m0MA3LCNexIgkB2I;dDzQs#9$bt6e{!LfN;- +$kM5t>Ook|3_%A=sRUjPh+48E^^R%e{zNeKB~xke;6fB>+?gDvj*aeKGE$2UCb*8?lU9>nco}nixeBT +e@X$*^xseE;^IG+2Kf`=?xrNuq6@MW{6_?lp9^Aqjs)waavv=_MCwFEO#lu38Sw^754fz=lbcbX4(p5 +K72jOXcK2IZ#>DB6mF9tl#%jJah%`m36fF7^`R?V<@6?4PR?c~U78GgQUcOv#MP{ +ECBW*Mf`SE+6ncUWo1MH)kS%o?+TM-bU{GX$|0aMzcTaMu^8!TVb5% +5BJL?U9rgpZp#T`;zRoDkxs_GSt?u>!^<>m^+47g-W!a?L&xOMm4J#qU;68@eX3CezmxS9F3!suEnSq +?uLp*mZ6`cGC-Rlqm+@T7^le1*$U$EHK!Mwj8-NotWl6|&bSf4MVgEJ0J*WZ&{)Oxx8!1b%R$~}9I!GM)%8Q +mfcXTyUQqF;Ot;T8d%Vso^j6Ca86!b%g_fcnwur8c&m5o1p$`5~ElHxW;(#XxfOFx3Ului%x)YIx<>6 +;V)P5MGCw_q$gnxkY{HTa~#+7rS`6nso5Z^CtvyK{Vy=Ui(auqHeeiOREE9g-)ox9Vf_FbK= +5y1+kNaTk2C(ya>TM+WekBl$hSbTq$`LYa)^SvedH_E +dFfNn;bM{r&;MP_Bc3p7_9xIi9ge^p`LJ=`DikY`I(+kyvjG3b&tZz&=DdKL>OEP!7K8+>z%+SvA$D$ +6uKwWdj(4uesUq|x;Uoi4Zg5f>>{uN*WmM`$CZ3~uSz9S*O6!-5Jph47TO6U6*OPIR1KNgF5ezucfMz +P5$_o*n(YtG?$+zq;ZF#sm>C1R*4e;{--+AsxL%_ykRFf!_uT`1SxIA?R}(7Vy~uuEA)+ke8!mmT-*Cg#w73k-Cr4#czQFY6Of2z9d0|ujblCEoA2M+GrvSvU*kMy+L+S%W1 +N@0&Dj2`w)eO02KfGVes?$jq$%poU83$dDI2X|x1Su&pW6G{Z^3kI6CF5c7$ZLW!s|A8!NyZB_bUTGg +t;yRI1)|+bP(Djt1nM-2yOxP^p8{1E*6{gCk4MtkeVasdnifjXaW6MI3vn@GDq-nLpUf#@rSrh!N%f_ +=SxK87vu=BG{TMXz_%x3T|2*|~?omdENfu{p5nRp0>1I_q9NBiK5^eEE!L%KfB?_pj`q4 +-WAcD4+oJ#WyiWG-itDMl({gs+e{BWr6Pq?}cK8L1GI%Fc$C~$4JC3QHx_zACb>0Sb^<}t5#G{?w~0pbWPHDW0L{Nf+7a9@*t3vXCZ3Qfh&B% +~Y;;$xa4mMp^xdq^=VRjKmzbfV-3KclH3-13zv-v-m_F^|c$x73P+vw#Er-2#-TyO)h4=mGHExjt8r0 +ZLzIbHw|mG@*E5nfPO|?-;KSLI83Mdm3sn(IP6hHl<8TUe!%CHwAwy&Guh(y@|f#<$*v2ebz-Ijy59p +ZSdR)VE9~t|wGI8e9YBe4h&piYmOfn{a~|kWZ`~kYdKzR0$7yUjZn-W@8sqAP2htyFdp|S+Bi9RoZ&4 +DTMiwgK0ehnoU4EjNdHGiF1O8L*xGzmnfezHv%$>Z;UB~-I)kE@`yLVOS17VEQ*I0@6seNpGKpFy48w +#92H6HFclrab}jTpxSf;&~))A1e|=bAUfhu5x=6^^V}JXqSisnK1Ox>CR&uP4=-hxO_(-0?6QA`>e8Y ++V4Cjc&*MIg50p1@04xt|e59h{<7OU!5#t6u{h8Mk*F;I=Vfv%O%Ozn^>LYXV$C|4n#!%fW1~qa@rrU3XVuU6OmzHm2WvFC2mEL%76=bzjkA +V#LVMv{s;`-hxls&C01+HaSu@zNjt1XQgU;#^w_3&T2mq1Jp +&l;!R6}6*ZEvI%<4Qv4mRDXXpI+kz_kKm&@(q#0W(Z5P9z}xx!e|{U%;L)c#lCiU^Z#NNsLI)7QMmH- +b!AuqkEciYL%F`gOcg<$4ov1@G2fm2b|dC0WSI=SD^}y%?w1%>%K0^kwc{OQ?G7}Y!z|2I_mBDVrA^b +Hqu3hr6|8jp$uNNxfFXHoJ;T4tKv1(fV5PCVvFJQS|QQ)mc~^rKd&Htv$$o6j?XyHkroc-zs;oH!V_5 +=d>eH({)f+tX6arv9BFSHj2-)<{pxaYkhd +Z$i!u=7Fs-CGsB2fVix-lIYPCVs1cA$YsF-tn7qn#pL-yMVQ`d(rd`ys=?qm-pdMl*BM= +X+FMF%wLosILGV)55_~(yhrOX(%4S;Y6EM3NqiR!Wbj8wFSW_w-#MmLFON5kjXqLFm#+$9ZP*;YDPVk +zrMxJ*Jh;)d|eB5GZW3lb( +c1`^vrIQy@8qFe}dYBW6)hEVOJ-ZA7$W9;bvf8exmE7kh&%iqc=l&}}2jZHA}(xalR!CaAvxQkRs|T@ +k{up2!Cw=C~8i;)B-GvjYv@?LguZDPG}(_2YZXv*|j8-AyG|Dx=`uvjMIIlCzQYY8fXlc5Ao +b*D}BESX%fc_q7X02R?BniMv&z%)u2PdqX36O&Gjj$o7V7QVH~9PVtJ3rE(2%HNKt@ka*;d +%Yr>bnBl3z%bV8V?3LsU9LT4Vo0)d5G5?_)(IVFPV3yVp1(o~+w}yPGAuYZi4mSHj;x!Kjk-B~`F-&3 +sVGq&FU$#|!+Jg0catk=Ih3F3K5QA8y+p`hjT?!9kkzBFopXAIxIT!eL^6~QJWadI^d_Nf%|G2$M#_- +Hra+c$IVfz-I*bVl!$f1ixbBfk(1XMKM{*4Cz57ZfMtu*>q7kXFi7j +*~hD;Whf`l#Hi%^#ScHn&AZ{&*biP$uZxaeWE5yXy8ueE$gqq6tNOH*O~{A%|DrA=6u3@h=v6$G*U4a +_zNRB=&(X>q}PP6x?0XC~{+$VhrhJbafo?+2~l3YIUdz5aBC6KVQ)~Ja&h{v|aOj?ru!TAqVWRYu~$dbMVTMU6s8_fm#yp33(W{? +OUD!eqo#_^XM&(|mxS|OOvt&7l)pd;=IG+&eJ{VMeb{fg*9>CQK!3o)&V3!pSE7L +RsX!EQ{dA0bj*%$jmJOFSp(IFal{174#(fcG}1gLjXFkX`!&DpdS^gqrnbfLqiN62%2ZROWbZWXGHUv|_e6d2(q&HO_jR9I=Hx&Dn +MPCe8885U}9jla=)DGS%)GERYIRe7jDbC9ISx^!Jm0N%NC7kFbw4CfX3^&){En66I}IcUiGFXcSHHO5 +&Y{e!c3fNI&t{|Apl~$m}Oe{lI5YoJL`aAP9;=VS1y(8!LvePo;n9Xm6t5hs4P}T^EIWr&&Pm&GqzKU +neB?ykY$A`3gR_;iH1R(QTJXf4BJu(Vmfu-a2a}zO%{TZSI%86M9j)>%nbLQOUol=obWbKbzRa-XV1F +Tnp&Eb#50RiuWcH9N+or_8QyGM{kzBy?pw1qux%2-kf(^VegcC>(XsRIHLAn@mpSqAb&?-`L~2yyL=E +>MN6-hpUu5zpdRvhIqI$Fcud@CUgc5zxLeS%YWZl587k{iE`_{&-9iqMwLtZ2+37O~N;9jZ6oUY?pA5$Gzs5^%=JGO{NUae^OBCyy#4Umy +6*Q297bxT%4q@A}A+}E@Fi8gCvH~fhV}WYxYI}lVywBzex{vCu^Q9*$-R_?5 +KG*oUk*wSEP{B9#?p8u~(;y{=JY94Rfa(Nj#&5>ctX!vhf@hJ1BMli9qIa88qaIH~ee^JYNUx9Re0Z( +%k*qb`(DKlhAm#zYq%oeEV;>sGO_j!*-86nbCg)4YEQug`ynEomhs;zt9G$@1bS|%L_e?o|P@Z=_*MO +H@!6Df3LD~_nP@KXzTvTYI2=@)WUZop6EDtg@N)_`9!9Of0k3HOWf(tu=rM12QBc?e_(%D!C%QaF2|C +o0eQmHP(sknH%OBWco%Zqf)ZEjTs^clxgBt5s~zVI*Lvs4%eQhI(TCX7bzLwekHDGEHCSyY+3Kk3B*e +^r6}JQcQaxKn$ex)sh*cm~dakqYo=B4cT{LXV8M;qE76aw=x%d?TAUeqM)1LS6E-J>SG9ensQ+eVtca +>BD2G0aGCz0((5Ya%b$;s}O8^kxNiGiJ=!g(tKX*88=_`Vy+?diJgxFe|bEP2d1>tdSemCZ)wu^iBPNgjTDcBu!bJ&S|gpeETq(-(D=hy&3wz6cQMtE@1Vc}2ILE05ipE$K>XrS7 +wA>8(c{9at6P^2<><5pji;Ns&7g#EwYYd0Dss=4H5m4>BKdba~bhbq|Qe9WC|d@b`l)ux23x)0M}mpDn0_of=X+lSD-XK~w? +wtW?+-hJ5A?iss}#1VV9V)RSR6=L7`l6OZFMD1JNE~g*wlX+pX=WkGKujj$pXtK9SqHn= +~y@{K8?~?JJtishS^Q`qAy3?FyyX_UHOhM$`8#@cU!skGH?yJ@DV${(kqse{=i$-2=bsul(8_UfwSYrk +X0OoQ=7Ep#_sGOk38e*6koX7F85aPn&_3QD9mo<(Em3?u7MA8E6W +9Rc^L-4#o;`ocweYT1LkiI7*(!k6~SAH7kj>&6a_w5=8Qfd$q)iqxV?+GD<*{Ex<_ +-XAdFv-a?D)bn+cE~00-ESdRXSDaW27fdN98v+UQFD +#t@3kNm~gy_AXzr_Xk+aV-=8+oJT-an4RdqlE9;0CAAuMl##2qpGaf_L}#27nvj2FTts8NS;(DP(V|+ +!i9<2)W%kk?zf%@!P9(gZk}R9NS+Hd$$g3z@5C~1p?Yan%@Qs(Jm}ne-jo}8HGGE>hrj+Ds~~IPqW%cXpa0MX?QO1cUta}AFBVjN=Ud&`9OCM+XLeC@%mB;7%fH92wGUTqOyi}E|8IY;d%FDe_WM} +BKe!$Hc8kBeL*RF}_`5p1u<~ah~P=g-lgbp`O14E>5}>b>FM?yZ7>-Zol%3!a5 +>rWQ`}$>K>7ae-t|XMogT&=qUlJu8mDYysgsF;7BrlYljxtp0pZBVe|)2fa>tsBTmlB2UIsU3FHa +P>czzz;+(DE4neOr0bf#)`l*Shp}j!cJ8ZK$8`B>|E*Eciqs|Vme}KbiwQDq!~-p&%)%Nd|r4e^oIRZ!+{#o8x#o~D&uO|%I% +oDAvz!L2jXRe>c}Px*taKRbV;}?dHAj!xU%E)(m>2ss;n1$6;-#mV?g!L&&TqJ=)>;mz#lt=Im-l+_0 +j{@+q>0;P)l=6>kqkJa~B(Dx+7sPPqoi^&Up%ef3a)JHbIE8CHit;9z#R8Cvx?d*V%@7=kTn_#-HekB +PgaA?fJ-8MHbECeKh2IWdqz^NCT;zzQp64aHL5M_9+x$}>S(l2ZyX`05k +mXdVaX20goLMgE9PVk3&@qlFwOT~0~5h;ejpGuz1TMv(WiD7mZur_`>f6~6Zkn0&+kJ~sKeTlG69wKvecJ+8K8wk64U&s8PqPN{c8fpq +`1S6A^}ZF^5eZ5s*ki@hs+Pe<)y+u?ozOuY-S)LydPRlwrCH!pqr5RkjE;d{z7-U9;S&F%yIJ*fFkrf +ny0S3$|XtwHhL(HEk>W%tUycZJ_(oRkC=kgN`{W4lC;KePMbXLi3&6a5uE{x&$Y(PQ;HdMt;HHUk^TB +p+hfC*<3Pw_6STymzhtXz%*DhWy{{U4JNTZ+ln#ZSOK2odnV1Np0?-sp +pe14L9eJ+phJs+Vd=dwox<_zT-UPl&+%l|iZ)ixA=D}q{D0M~w`4cYvQ?fu(bdbmW(ZQ86r1-C`nbrh|R{-QX1P!{pSD?g0 +FE?f?+NQCyKCh%G3@1;XrHRN&_eiU9N#!00JBdq*}m+ns};9*Xo|qhi4p3kQSpUNw6&JOb*95v>RdEBb%MeKWP3HyEdz~|NeFE`qwuM+TrVmX +MO^`zkk&S(EZ|yAB1EHn1uFzUy7nh7^QHWq7Vw+n^p*fCTSESDH26V7@-h|`V{|Qc&FPN*$v~j77w&H +bx^@Bm4l}5)?jL<%hB6cHT^uhv7NH<>KNM75y;!=Z->C}?X`mLNV@w4yq)^?0syk3()Ms4*+hPUe_QZ +?q`U0@E(R3s$@&e6X=u-g>`9cjy5fHQdopUH>_qg||0i~&MB^P7cbUXwNA3;F;rGlIneJ(tUH*~yZU6 +7O;~$xP;Ge^>x3s91nq+vng7|dSf?*?zk@vWK%2%fFCj%Gj*niipvVD@Bd<>f?vk-c?tw(FehWEL%CI +gnR9b8y7MDSKK{prMf=()nuek?%V&tF1Rhkin#_w&H_Cwz}Y8xDS`%Ocu4%OT-9fBR6E{dNr44{8GSQ +w1PbKU!IKU%%s2zh6x{zV^5B-P?<7;HUTJY3$_#@AdcFL*5r>3|H#)?t1@XqtE33i#fkXv=V>KRR654xA0x^PY&6s!!#>vIvZgug(JnX4t#m_<=3J}|1bz +%eCu2y*Qv&j=GjwS9NE|)FFdV%%}2=(M3XGgQk{kzrl5PRqQ +Bds7Haz~(YeNnpqLX)FQDn_U-t9&lTDzL{xRCu%A-9lhS>1P2uq18K?ZzID3^Et;qz+R%ui>poCsiGP +dMu)~QlfJt+0(YSFgsT1ITvJyNsF9AX6`k@hCsxXefKFBp+4bC}P!5LMUx=Y*Oh*rOaj8{>NmQjg7C} +0aw@Oe+UjgjnA?*4I6&|#hTZnR{E|7kln1fl^xA|=9;7xi-y)e5mDfqsUL_M>(%6J(mv;>6`5ZjJ+lv +l|Pk-G&Rh-oK|PM$!jD*2Rh;ln-AO`i(x^L4$S=uu^HG9Vi_+@+YDRdKrY@|%IF8AJtFXZ)B=n-}xvKdz` +;%2=pLKOg#m8n>FC8(~PCgPt%EI#RDHhBcnx~Oq`#OL}&9|zAeeN@N>wNd?GFeh$-GKb?TK)YW}M&7< +e2NcytS$_660y`#P*pq69N`&gw@j{iIX}1nosqE32(d$hmgOT=4ir^BNx&d+U2lwAb`9A0X +Q!pdpWigNV{OcEW=UTKPjaf~2{lBzY4TGBw`Yn_jh$H@ZFhOkRBYYwj0k3JYeJvic+-!C&IhlD;peA|ggTJNrx&@S|h>L=sTf>paA? +L(Ctz*x%za=T1)s~pF@RgO6b(K30#O%o5#(}@g+!u1{#@^lrZaN0ah&=+<)p1QivxPJRC5KRPMao5(u +#59?R7%H-zbekM-g1JauqTAi{#D%!a?DL|K7AwV0#z9Pr_bIcwnPG13XtA`wU6V1^9CJ +*h_0sT?@{eb8elpL8#SmKBQ!Lxu0uyYwLz@>TK*Nr=Y!oi)G+dsmWc7DSx@+=vxrDeU6#N-9Zu8l{(q +PTt;3yM&){1Jbde$BH#o?vdns*0pVmEc#=zE^;CItkzm&k3{rxMi!6TYLWoCatK7yk@`f7|sh+oUUmsFwSM|QV`(Jt*e%{jXtvCUJuNw=H&UuTm^0V&l8`S&0f{y5 +}{61#9H?6zZXZH*ECpYY~`vv@y8}`}#0{+Pj`|N%J|Kx^!W~u=E%2i>=UxW1|uAs{u?~x**SA=`EPLQ +MzgiHMBm7KI*EF%C`4}9V>uOJ{+ZB*Pgmkts{M2<>jJc=YoSYO>tr|HMa9}He(6&pLtosV4G^;jT0;2 +y3$+HYJgg^w|)FG$vaymmt4Xps|o(&|gHHaW+f+vlR_ +fU`v8$h>&A@DO~T%5qjE~vacbO_L-;H5}HKV}VM)vh9~11$7tG+GjU^%(R6Z{?IMoF5nZ*2T9M#)@?8f$T2_w$1GBxyBp2ieC9a6H`^aQ1MVUIaTKHh*zb +G%cIxiiuh7Pl!x_cAFg`sta`PJGp~?b@B?;#7=0P-Veb +gEE)t$2w!wF7zK8w^MDLQT}#RWM~H@<{}`?=yCHL3^!31sKwK|gibU>kLQ>JM!-OSm`1yR8Ptkbb}yn +?*5|I!#Izv>B*f7TI2EFgVCdue=(-Ko`8F+29JcXK4bPYrm%Oc*!ymYljoXBRC(<4@}n9+{;f_->Il0 +4`JE4fWS*_R6q*WKe{UXL)|&>%~e4m(OC$q*Lv$ZNf>a!)-kihhlINQ3sVILz&y3h(c#3Iws=pX(vov +s3Gnf`;pHc9VYs>Gso|uo7Kt$`D)d_Cog3lg#n2X|`q9=r&8L+mnkbxTxG^|J59l(CXA^qL0G<1!$ +`9PZYq>&Gj)i#|t6n&Uf@%5@WEqTn8nKK>~A0!s3QHjYdvo-s9+k{2LhT8%%>4hRc2zu}QP)f6*y +OeNe%D^)nOM4p3CG(`<6HCJwA5qD#PxW?PTz4V#`kPw{bN#qrRsD>`#mXf_3R#DLb`x{sZ?Q5z`%(}L +BT0Pt1W&2Qh>pItypgW!Ui7ps-=In8%t26`Nm@;A+X^rN7Y}aiAx +OdD7DAhafIY$3>_H<^h_rkzr@LR%7lPxdD86%Kg%m08UY<4B^4v27ZpV{cT?W*@3cVMd+&aCBaMvOy- +{ds9EUqZ!BE?~l{)y3)eoY_U&=uo%xt(w5G5-!bZn%`#Fzuh?f88(pe`?MTZ2OPq`@x|B!AXPyQ5ZuJ +f&y`vz(E41a2$bAd;_=JFNpx*Pw{Q`PVDSbGkn*0QSau|8>&o-HyWgNl$a*Ft5m*Qpnr;Qskc&k_nSi +Yeb55k(^FKjcV4C5FnKQ|q;^kH=nK-!cL%L)aQZ6~(LK48?c2M1V(PuHT~Y?^@EgbX+Q#&qo63qeT+a +8GHVj?F`~ELX?7$j-x0=m}JvX(%^=$_Hout|YZGYRghCS~+zp_7jenpc^JyV|UVb&rOxK)SAH2zTr5fH)g{*UvSUcT<>coAIC3{5uc4EL5wN7S?|2hx6Rfs6+P|t`Xv*+A +3IBP@(a-2^sD}ChhIFZSNhASEa;2=Onz;HSq5&`}VTZACs9n$L1an9U%TKm`z|X#ZUtLM%1#6a6koAKZABN +HnROfNBF5GCi`?c2(rsR1#lo3F%`1j28U;X|%nqwNeVnVV;dhXN|!4oUhbim1RI_sSkosiWBG*X>c#e +90&py)#)5&@wYcgw-VtHAVf0PFB{GZMF*D(AW^Zk%811SPS34){u7)L1z2e+6^At;4II0}E+aX>zG7ThHP +#k=W6v1`({=vI(#ALn>aQ|;{ioo(NagT)q2KaIkB5e)VqL>Y2bj9ev%Kh(ELUGiAdXb1lpWFh)wO^|m2`O +P_$b9iPfu1ktM$i|ygSH5P92bdxecG|QH(xV*L;=XLCAEoQYm0D&mu^u)gDP0Tc8x(O6*_HgO>_q8N(Y8g>ueFW?UkarN4|yZ&!-snw@;eY8G65<>Cc&cOnDfJZT +D0@hu?;qp_T*o9n%trbnRT?bUMKbrJ<8E*B6@U+RmEWKoUn8R~5E#JwdDc-YAAcJQ<2#E_rycfHPKNGhK?Wcs_C!NZ& +uYk$uvx^P6wZcPt$ERl80$9isw`msBR>jdfQq<945j(HO4!58XO}@7s0$vfGBbOs586`6yPZ{&cIyI1 +rN3?fQrXv{EyK(vK9fD{-wyapp0&@ip*!tg#63L@T4S`oTsCn=z~xjq^uRtDR#xvnLWVS)kO7lR0Eh- +aWSH9NU-EI9?9jV`PhuZa%`QVku|8EcqnSU)#f2 +JBOKIHHdPm52oP@E{rCruHG4qi9`R1!0zl}w+rChye$BDC(KAv`Y1%Ad6BM(5}fZ2+-GH=&Y6M*iT3j +2$gJ}1o$8^EL>J8{y<0OFaAUDJh+r;dC!9Drp@!5dubf +-xRziUL^g2D~SHR*J0|yJG;3rC}9(Ij6b2@|d6{iw;`y`HV*5-wW&wYH>kC_$HDa}i6OZeuhf7!M&6~9B&LS5nSb`DD}BEM;@OF0C?Otf_e?dco#}-q4rh(Tb +mk!T);3rh+G{nQ)f4U>^t>8#?vU$GJ=&0HK>?Ym$?j?_Xk=kY0y+-@)!iFIitxc0R@F^G>zw2jNF7+e +ln>{?z1EaE$SXf-xNnbV6r^@LmRXI^|PY$H_!Q|;rwj;4>%2iHku6Yo`yKN+wD +LYvODk)(5E7%?48>w@ZBVbM0d~>6K_v?=-tucU0byg-t67>n)*Biv~l0v9|w8Y7QgLwHpYySy9je{9` +<%H+y=zdo}t-r)NVYO?r)p@Dg~6}dlm^yb~v@oOC|fijZ?$vp6bcbwWR*J=}LADXcZsmjQ1W8S})VD14&F{aP~$Ix$jmJ(~g3 +GZ=$6=wehELX$NR~#sbm*6fXU6?Bg=NYm5EwT?VjU$A5AeKd3;zTm}>AjQ)cP^y4?MJ-8$qlxapu(o^ +^d2Wgyu`I;YWg`Ec|+yDp0DH0f8gxfQOugl!v63F#t$Z^m-#^w;u3Mww9?z1{aJVN=UCvA!9P;v(oi-!AktT!9{nPN( +7VsB$>mbJIAk;(P$g9=qrJ*y)>P#8mCz_7QA<{~IPIQT&f%FuxK17F*pRaxmec}&Y8W9NDI4MfvC~s*vc0NZEd$^&tufK2@dwb4P$Q~;5FUDZxzB!k?J-yJk;X_Wn1?b +sZAOEF&;>HhurQ6)zcMFO|zNfIalab +2;S;BQHOynEk+f7@C}uy@_&@@-d8;Vl{*YeF=xApBWwMdyDGd5vYjoeN*4Db(5mjBNYp*K_QeF3;*=yPht0;C66QlD)aX=_U%-b1sv5`EtS2X}!?H31 +@BY+Mh4I8pB3tYL*WYp&bW9?whzSUey6e@99y7+GKII8*gQ&RXSdMvU5`H*+zwN&(0>*6hqRGNZqSP8 +1(QC4)3#~gYYR?&cJ*UhCU{m^#wgudSk1PK=pzV6?DDSkmE)*g9{(sD9GwBw^FOZ=J+r+()5(H?o>f1 +;K440)+N^tiBDLh_bYyWEW%`Eq>}pDYe{hir3zt`hG +%h)<3b)++lz1($j^4E+WMh8LZ`ItAL!^dPuBJ|-qx<&g}>=N4=x=+m)jGJ{#tDO-O~;DoyXgEPd8R}p +mrYf5@mwNTE7$^Bkl6m*iZVi))-&Cu0jKipJuUyvgXsP$tZ}hx!PxK;ec(z`*~E?x{W--^{%f +$b+#!;2T7G(!1kW>ZV~XdZZ$xEWoejgeCoh3M>=eeL=97(?$L0BqP950SEjH_2BlfCkxIG?gUi&@JX2 +vH*iJ_fFcpq?8seIkiIV0qGY7Yk#UqTo=-Ta+W!!D3Yr>XcG%ApW6>~GAu}bV}DSCx_{h_hE>@if4zD +H|A7#B{gjn!`p>LyM%da~K7!kDYdd5fnX1&PNV#MO*EO;O|+5W(qb3Cf)aMl;>ES26Oo51~bSMXsxNO*M(I}YY~-)ZSEMEbzckV6ld^c&-Oz7XK*Xymh`0Ol?46=FBBwD?cyRBSQ)#|1=Jd=j)G=qpquIgE1H{fe0BMcmOA66k1AP +*2l_R1CsOK9I@B0H|I*3gaAx1*I9m0gXpykn`uHn%bnJkA0Jpe45$&@XYU;Ipw%k=lN0dGh8S3Kn({d +#^S=rg|?Ds@e^p@QLyXz(Yl_&+n_2b}ud*?!2ylIVu9NCYNe0z(K4-5xJ6Ou;aO!=FK|g4``p_YOeWT +blQ!jQvZwUAp^U?JigEo{YPiFaI2B6}t--@~&9lQ=#Mz%g{H~!>Apo#n`@kzfsPO^WoIa2sd=Lm#q9M +0lS@#y;0r<&-T*9Y)4W^y3a+Ddro3wlp7vIv3(c{?gzj82!d}9edzrSzDo|buiI5X@qfd~+ktEM#rj* +Q1@F*;{AQ7_Gev4%#=Am-A*4O}g+TBt4uf22`dc!-Q(e2ye5lqg2?0% +sfyYs8~wL@733vlExastowHo+}jUhhJ^jl#Ws7{8jlcK#P}osEP+)a(s{zV-+D*D^Qvdj_h{fa&U>?k +e9=P<{S5_Hmv6>N0`fxz2xenZWN{=fAp4;PdPJeZ&aRT9bLsMLTi11BRM8*}EbfMthP}PfsDkvZZH}C +ZH>#4PmJu%L5zYctzp!3I^*97+%kbrD^3H91Yd!j=sBe(whw?z{z7J0q8uySk21 +NZJ2^r&}kxQlZSkn?h5Z3YH&XhPTC0^gROVoC7|nkj|!XW&IZWS><0Eo&|Hgq8D&PBrc@nHwImtREuu +t?wTO0A2>QAlYswqamrb0M)8o>k&!Q^>Cbzor1SoxQFbBCz9uq2bgu$sTD8e($n?jg-;lbB&x))N#Sn +8y;%@e0rXN_42CNJg2g&M#f*XMe^UES~?sXPj@D{&HxmOzroYI_KQnA;h?^zy=^iGl>-P*(G!(_c@UH +`lOu0T&tc)7x?($aT4jB2I}d!O1Tz^HcuGqrJeQ6gR(ey^pTO6Km0{iZUKk@vOG$GXw%@*A0|g-#cT& ++$hUysYjt8JRj}*^lUxJgsQ=+z4ky=u@Y!JRkE{uYbg|&qpN4uFHnZpSJy&Q9AsqpGjs#S*EMua&lY2hEsd3^>A*V(oH{+7aVAv{n&S++f7u5~xs~EMHNtU(2dblu?3);gaS&;lCqct9&hDyigz*#nehGKVI#(W`84Uvt*zQ-3V4t<~7U +cyD5~9I@KS0>0rPF}yH9%m$t@=e$r1Ogb(;(#Wl>lr4HoAO$|+G&ibYRvQZ>y6Oa;nR|Sbv95Bqx0{l +L2L?^>))5=57(7P^ksRI1c)AyJ7=&`czyN`+dETmv(otX&P4#(39FBrRNg1Q3b8-PaX4~UhW$VJ6aQ| +{P+kyj&IBFvpHy$yqp%=+T>G{&Xr{qg7bUd4Br!ZdCbP}Yy| +VpfYs#F-$L9)qG<9+UM7ML3%4<%rviSn|*Hnyif3ZTz9ZON^SQ1Zfw}V-+M=M{Yu)=MJEFwLK*h7($; +o;R*lCBqam*M?|1TJ{RD#&`#LH@LoN0L_QYpG!B9VY347d8y7sWD#(R?JWx6 +dG=7jN>$=*THe6zGt_drv}y`@qog*Z2bOSU=V0n{G_)pY^>lGwmD35Pgu7(ADzM}%d^2xm8c2D|T +q{|AV1SIV7s`0_sw9sjebe~BUgZrUF+75fey2%->55qs$hLV^?lK^vaLKJBTS?65C?Z>C|{jtIY$oaE +&0&H!S&SJH+EV`5JkVCd(56X-4wA>keLp>I2hB!8y}l09#La?``q$yHaNRy08Cj>Kc>(o&0UTB{qDci +f{GSI(NPoEJt<$huKX=Wq(Ok$fEtTvFeWqi_w1tB;B6@7VzQl@Ebr9*SYeePx)qZCqu^d +_dq4^fhsou3F$8LGpKwY`~I4LzGUE^Uh~hF4E)n;{`r!D-@oS1b0EMENf3!35;Lq&L|<6_USf@zK5vd +8Y7ANnDvh`m?OYJM*BAG$q@t;J1|Xa@u`2mKir^ku9b4-p2IEXePhE<2`}Tyxm9;X=uW}&3S24lYT_T +U8U#Up{WOLMky!cR<5%eC9EcR7iY1bhZHD^jUT2qGd4w}~r+;ISBzv!1u%O!J&Jh;Tm^Fw{|(LtJ%3cCR9Nhqr;M-fld5}Q5hl8|F5F*z +diN8j>`XH+8@dZ2@s_yf`V}jL`Vd}35Xy`62c+!(|#>^yvHj1-8Xo5(0nI7_7-yB&hj^^oxkmOU}Ddf +WS@6B&xt*|5hHI?>0 +m5YzBS}R90G-tE!d;q9H8`E;e^q#O`avFM=^XP4>7P>Aw%>=20uKB#*_D>48$=(f+bzM_`j-vcX#}7n +HLz{v(4F+d!>;jkL_kl`IsSq1U`;W1c}Z{fp`r%W!NAfx)_8J{gy1oRNctF9Ko`@7eeinl#P1=dOjtx +~$2Pn!bwOP#2`P^lKF#bwWQV*uhIi?1M+Ayq405zv)qeucKPjX!XrH$~qUOJ>!ZyE-WjseVc*ptUq|v +Tm+WK2}{d1uIpPct2%K!G9-$!=}gbq~b7Phl=SC{XdQr~W>+dJ(Jq|ke-x7ZW#+pBQAZzSh$p*Z*k;_16f>NY;k_B1+??5?I83D_PK +yGz{PXV1HROBe0GxgODx^^$s7LyADqmwvWDdp;PEZCcgF)cq5yelJp^pgLqFd6ulTefcbGC2=5xc83j`t{hNuO4 +Q&O{|Oc&yD6sM|Z-FRDW$W&p;omV13_E+}d}&g|S>-@a&p$T!-O+1W{gFXkK)V{@8`RyR~q(eYv#Zc? +w%$_*~)LOv#mDfGn`Pcjq6e{w$@bQ0Y_^J(B}^$#v$5>GUrwPJ$;=r7Q1Y|ht4yF+p55anduf +;$`x^|=z7eoh0>)p6LCQj3cv03ov;ccT0p-VyY0k#8J-K2*3pqz|P#sKt5}-0mgAx;{GeGl=yD;pRNS +h>Ij$$%Y4{&T&P)2X6<@iNu?wbpDl25{16NhY}Krz<8jKEfBXw?)aw^JRjO4er*|kwB0(2SD^ME+40V +->S=h{k3ePVLP`ToiAEi4jRg}UI8N_}AY~tSPdWvH@k;epzF!e9h +K1E*cR9F)6(T7=&~Ejg7{bt?iZ{l+=o3y|c~B+5>`pJ_^>F07^+9ExcW#54pA3chv+e +3vR$@3m3uj!oTEHX#TdYaO4`z2n^4CX%JagirBdbz?w7(lkjGT)o +x^x(Ue`PBVVc>My1=$aoo{(m!NW>X#t*D43^CfiiF6$fu +cdxvX;kkk8UX*vT$7;ak0UD%$na&y$=0X?OS~;WE5KqWt$+bS%@=9P%4<^hjecs)YN6-s)f3OSbvyo= +yKqC#Zl3wOj&IBI~+}qMz<<7917acZ8*0+kL6e2Sq@Ju;R`{n9t{$vmYnNp9+)S8a3}l3v +CJI>g1RUaSH!x?zqJZ(aKOc8I3x4s*eSyOudomyhr#2#r07u&Ou7KDt7rpdLa?TlQmYBr!T?vZmYOL{*iL3vBAo)h-Hpga-5As}Wh4I#E7e#O}KN;*LqyKEwV(h@pStuM|8A=s`7s +>;lJCYKfH_Bf`nde6dBUYW43T?3PJBQV*!kNll5lwyf`~VaTyvpYF96A&2Ah*#J}!>oB +QM}G*0?*5m}>VG)=_7LJsn|HQvMb9>!4W)g1)%5m0s`>B};`{e!`M`I-F~g5#(h!Ei8(ZHH9fBdy?q5 +m3BtoDYe}_N}gSP*{&kOXZeKVCx-#d}Wo~X~>EjyBAcLhq*eY14uzwn+9Pd$cMeVdMChjhg^8z3v3!X+^S9)&Nd2y5Am#k0o!OPMtKbCzECfyS3F +*{(6eXCcP|!I`VJaQn4~DdQPU+WM<*moGqg>lf_{w>_;lj3;;tWb0MA7}dtF_-@uXy8jSP%b>8=Av2E +Ol^>ID^mU_Cpzru~!*BR-n}Bg`FY~>ca=$tMy7CUVFnvu|9r|kg`}G*`_24V#e(D~(JO8?0NaMSEEFY +P!Z;f7U7`lbNIQpxT5l8zw%52h=4|OK|(1D+J9r!lM=(#egSK&+NY*lw&FSYzYtp>BV?EoyViRJHRmj +y%cnndXsA^1-Qeu{A)I>}2v6-Iq`8a436IMuMm-x3l`$N{wPHew=$-6!{m*DTO97Rb9t3cEAhC7VSh7KQj4yA^wMp38k7yzfJYIfq&4hQ@`&kA2AU +Q6oZb0SS%B&A4^&fM`0StkHEa~$;^cQnZ_|Gb@lV0_w@>5X)BvE{$#2|(e6h@Lbfk +DXL2M{B%4Hlv>Mtr&@x^dWz%p%|(ZZ=Mdo)e^;Qu=)U2&h27owxA@!`717tjXR9dnd8mDHQmt4uHkJ!@31=JbQOLiuX>`Ta@2sA-}Z$EB4Jz;%y_bz1c2` +hjx#OZRGaqUK$PVbU%;xSd1fYj|ytnO`#is{@a=w;k?IF@SEz%;WL$ZW@#lV7#+O&Ov|`JIT!ZN#Eqj +p8qoRhCr4dH(Czvqd~2Kc!Eomgps&Q-F}Uzk0t@_t!440}T5!#1u;ejXOP +Jle+OU)Ee$~`kI-fF-LX8Gt~z#MT_~ +u$#x>Sg4^~ye2>ZB3H5K#A*k+AA^dOlJk +*Z$!wC$vI}~E(b;Eg0CE@9_r}i2AA}}jxzdkcwm7Lcoh3JDrWZ9@U6UX+R1jYGKU(WWKLr11W{R?Dru +@zlFbgbyNE~O9B-Gc$!7srgA#3@BO8}8D9U=^-tF^2i`lU-&xnhx(~T^%6(dB)cxZ;bq@WQLIfp`Ua} +w5&2M*~D4l)6GhB_>5qwdQ!3GB>zpdytub+TcNhupqgZjfA$IVk#BZDj?kdgoSNSp$%d-7QUT#as(u$ +0KlUC#l`dg?iTKbHMAccx1;)p$>;A^YG{(6bq3Bb4HvhSeVxVnBgH>js`)pgLKcDA@^-KQNZ-xq9z{H +de0htN0EuniN)Y=kBIi6Mg1d-)(8*QB;5++)T*W +Un##VzMXuA*Cha{IK!5Cp^0)QLKbI#1A9R<7mPd+;Qm-$s`*`-yDn2^}DYP4&_$7grW)vV!A**R)Qrz +XoM$OV`EVHhbSGTxLceW#JvCbbxBXl52-l?+o62+4g!<yq;vO3+5m(#2mD(pCSF +g4}8i{yKy*>vxlJIgINgm`Iu|^7alL(Z4yaI5oBhEn+$NapMbB)i`DRCoI&ZpCJU9sx{U%OCW?HL!+5 +)61dT~`4fyv4HE(GRALJwHG2ZGUa_=M|zezV;Ere~`-+l+t*8h-$1 +TL1+6a#fg`{ePUCF>OEblekhq3B7G!WX$_Um +nF#j`(z)Wp=snd^-W?REKlYt+&~!7y-u8VhaRD1?!{`zg$Nvlqsv%$BoC8R~Q|p>M(_K5TH7oc$t{uf +Pv&GM!_|QL|oL}Ir4raI9@?RO1g3|ML;S~WlAoLV2N2-SRM@;AC8YMAszL3;}Kx$p1}~5vrC+AW2w7q +<7AJkAFUDz1+NORcyG?xJN|D&DE{ApP`^CsR}hN-970hbf{+xlp%H|FFcL*z5=Jo!#}I;mP_Vgz}2H!J +pDFUgx>lE3tfd5_ot)81j`O(pl1koj&5gMm9RLZDsWLlyg~P->^k8Szeq!27$V_`aZx3vcV+{!wq31- +;$Gu${2}EhT058ofyT5kghQ6VldJ5i5ZUt*kXK++VWG8+ro%6Zo{FC*W7`$#(x9KJ7mP{|S8B(G&0+@ +JZO=)35qF0$+@_oRoV=r}1#jy;}wur@pcKeAF-XGSc~7A$#xnS{?SnNpRP`n%Df|Uo}&WRS(#Q{xEd( +V=Z1Cmpz9`bwuL;y;z!o@Vl<%3+CKdqmy3|M=0{-p>A>j)9o>SDH<`$fFBamYOL^MrT%wp>;sc7&iZSzN(|Iv20>)34{%<>PhO{AaW**`q@TUh()ydPp3NI^JAQ +7DYUAPG|tiDD>)Vleh;4Exf=9e?{BY@929Z>4PvZ7)84H)h$mA^6U0W_#lF(-^jwv=F-$6@=_DWe*(b +UKqR`-{+3^jW&eX;|}!JLZWZ4Dq;&mzf#6*Q3s~>Gj~^n_cmXKzBP*QzCz;NjEhSCn?U!R>=qTbm&62e}YoT+CV*n2K>@8%*UXGPxQ9q={aaeKgXd5X2X+4CCT_1V3ySblwpWAbiUHU +AXHw(qwn`aKPFf6CeZ&Z>aVmi4!*`pzI4_)8DRpA4cOSM2<-hm<(ReuXoLxJ+({9(dO~Upb6Q06QL|9 +OA)4zG&B5B_QYLG^K7)gI+#iJj&vzDLgYKJyyw+5>YSbv~nF+Q^b&KNku@oB*uMtnEvUBq60(PBvuyO +VM&h~Ehe#AcPYe0bk{vCpAq%Lvp+ryfza>WXbn|`0M_}Wt`l{y;L>c|q*=9AXVbfexT4hzl`b8jb5pq ++3|)Io!v(E9WqsfJ;1Rqx_UQ#I%GHG(@N8qWUE(q>_j2ds+T%E|x~j5mk*B>?J=sz;n{XyKEVV3AU$N +T<8c7by0bm*_vO}xj2ekHDM_|D#?RNPrU*%W-d_Jcq&7wTl4ZKRzkl2qB-rGjTg@t*I=U4%p*s1R9Q> +6zRrNpcH%5B_u2$P6~Nd~qCq}O8F9Z%ljlnSU$waA=4d1+&clgNl9cIjV}c(jhqOO^`N00qqVm8$Xw=SKS7c9XK +lNqzx6kym<@-5wzsaPTUn2e59$NiMO6)mE9psLxp#E`#IMV~C!TanU}@lkq~$-tSn+3GqFKm3JV0|+SyGh8 +J7G)wHb7Vz4qpqh$H)Yz$@a2kF27C=!f>Fh9XA?$yelp}bvbo? +nr=?Ur*@7r1wNDc;Im~rrwqm3U*V;+%{IK)Q2`v}qe|PHsiY??WS-?56&$!MvL36HZmt%n(+-*P7lz36$hZfczCy_rsHe0WY6VHJ#%*3nTS&AG%bX9}Z=YZvhwZUn9MAme)WUgL(m5=p{g~u;h7Z +s&Q%(f%dMpRea|Hq}8wKU6MddvHxkh(4%?xA#>+}&rns_dAstcsha$@Rmck}JDH#?JSGJq=|G2|RXf) +1;SUxDaw=I&N&LE_5`37T{Z=I(M +bt;I>;qh>sG7%r8NA*0&KrBq%D{JOrf@5gcs@8{|o!k9At5Azgu)~5b>8brA4x9*z)w9MTPeI= +3QY8?kDf&TyNaBtvP-7?@O^AC+?i|Z6LEzU+|rK*y(e&OPljzuSj`&V7({&`(1ltr<~Nc@)DWLPSqr? +SWNJrLbWoqzO}R4T?Jj%OJRMLQDgNsMD^EHqO#J>2VjzF!L+XolYPNRH4vVyGTJ>nzf*jLa5E*QbFA>Ysk@JHduX_8Pel@WH-n~j*Bj +eWL+YQTWg?nD{*X@z{A!3f+lL|%?BL1>X=5CY0Q6PWU4E!I|Cez0Bh?l921jjG$Yz1ssDxxDeWl^C>! +4|*c>&oyL(UjA`=S*_HY}k;JjdFfHo(h^3wYP*cDd9mD7I&%#7Ev(AYr?oPa&%1+94=G?YYj@p@I6g# +lM9vEJ;Oj*$uGqDq9b=XaERq`gwOG98YKYsvxR)Mm&YyQc^FSM&%&nDO)_yiJb5BD>Wb2lr2*d4iGh8 +GRc}I+)xYHJ?qg{fJ51e~j>Q9j9plq#jm6>?q==%7AXO~O{il`|IBRRQJcBN4&DGY1Ec +Q{`mxOF?QJLAe2%p*vxw>m+*8qHul0i4pxfUR!+Ln#!lp^2+SK&Yr1Q;3g;&XaKj{ +zCZk~qj|t4IrKMc5=-!5pjXB&@?IO8ASN>r?yaRsN*=rc^=WV%s{pU<~jiJ8W7*QoXdj6=vo=#We +kP%WA$ke$*zvz1n`pddggY;#>h8ba0ou8L}#@UvO^-bRPN1%_a>fW(aYksL9@K>FZd@d7}v{V{8Z%_y +?JaPwSY0ouauH9J>y2*>co|B5!ou%!=2qnhHUvsY|{uJ4JnDCD8?ksJlHlPb1e816|yM22e7S<+&F`1 +PGN+Z8^ypbzT$g+|jgJXr{WXbA{hWCNhR}$j&%LS@KdfwoOyGm{-8#h4~ytE8&yU&ano2M~OCaYkD~j +l{=KVaZTcAcjcg3rY3P?#vM=|^F%MLy33NNz+D)7;VL>vV3fBD9U|4j;LkFAA&Ww89Pji1H}v9hJr_~ +>OBfs`2(AhnF?yhHOc4a8lVcI~>56v~SK<1~k^J3d3=_Wi=QJ>uvf<#iGRW>Bc4B3Nk-wT?{(N``Ixd +Z>2h93bD;1ky_M-M`?dx3})n#YNQ0Sni#B@!Sn8v43-*hIrQrFW%SrpKN2@g7>SRMh#wS!K*?>UVUIW +U(H6Nd5ur6P=tgVCSlCD>y-#+BmV10TD1;A^0)P(Es|JHUMTaIGc8lLkMIoG-u? +|KFT1V|t}f*D@I3gLPB3rf?OQITC;wd&3kgmmD9+2`Bt-vocTbA4`Ip=rp5in~;9o3J!#HdT?&|}UHSBtV)x!P##J?Qj20_reE={HNFc4w4_&{Uz>4KnT8(BY{vPMZ!3Z;xtC?imEV%&?t>VG=dS-r+JL8*of`}?})u~Y +%jnF;2r3&_hb+BEf2Wi+b)X_e+rf9d)ysKy~oo>dmC|z?P0m-{Uz}hv)Q;1C*E;Hd?&)~oqLBv{5!3| +a4*55puO;8pU{Wy@E8Pp79xgs{rc@;z5-($?7bZ^zW00}Z^iuWfnoS9d{4f`cc8a~4)lgibdOG^e>x- +j=|TcPl?;{QYh#zssO}n^eLBXNh>7wsT;t@IpnjVojFUbxf5e%&u8c-|mkpZG3CN5EiQ>0 +b>hvA?4=kAV;nytqKqpD(GP7=wd~#DU!jOZT(;skAjapOhVA*n8;2FZl*j+LAE^&-r*iaG0>n+cMpf5`N@IpObb`RHApmt +}`_q`!{*kekA98diPMTu`#?cETZ#6SDn|FAv&hwt#gDt}o0*RdoN3854OZ~i@k!8A@%+gIdvkYWT3BP +fC6F!pKH^X5BmHZnqX4b?Q+E!wVs{hnG1y&eC}%Hr7WobMHH^rxmddgrBg{~LOn&}7f$MsI!D%{GSQ? +z;p_%AK4b#$C3~q$CCVI^9=l5nm2$l=M;cvxpoaLNFGs2DP6N +;}a?ery7QnnLX9!?y=`hW(pH(9W_vQAxynuvum1fx(3+xjl}cjb +;dMjgfqZ5>^(;#_$*8$T7&x?pUa7J6)Mp@j<{vT&h>Wvh_j1-du8Zv;D1^;6H`wcGdlM^Res@pvv8{* +{4riIsZry`#;tWHS?RN~@rvRwh2d0LNavf#YXxvP*bHPuPlcsFxn*>kGD5T=7$iG`k*itL}E2P;r +9jYxQU!0O`c4G{~nar?kS-i`2R0xoo4*{F;tt*FoEsdIn-zBzm6JjHQi&@9)SV9`WU-m;$i$XGV`Hp* +?HPU1qf-sAU@7`B0w78Yq+YeNpH^L^US4<=g+f>+wqWWN7H1`o;ihKpUhH>mSoH&C!grb{0IQ3U-g2b=*N(UUSRwJvjaLry36!EEP?svSNXh@yKRV`J( +b8w1_}G5+y@b>?#E8E|A*r*{llET1p>y73LqpqMh*30cdB+=XK!v4YHb-u+dz<`M(kxne0qIZPBD=Ab +>^G6CUNs$(v-T9y)Sx)5)5w1GRArx3L#q8KpM +{jAbcQqwA1Gg1k2To~iomtX`9DX{7*P%G2t~fpOE^?o9AL*d$V4_WY9|qP#voWF%!4{TeV>;imwe +Xe=XC%^}IMQ7SsFh@j))d7DZF0ne%ZT16GiE@hmyxIEQ31={3NBWY`1E)S(@0mzPMwN4t>HC{3Wjxr_ +Y^2I&T1b$EoWJ=uJxF!$XRj%B~P#yeCUu(ABB_$2|mE-`8q(+o8i^J00S2xj2(8`Hk2XW{?41sGI#$1 +VuNcaLiVq#z`T@TYPS<($C4rfaNTG^+4tt;H3;lfjg%|piN_zQK&YCXG^wUHu6y+$&tI#E&uQ^cPIQx +Bfs_mSl^8URVA({PimPvLp#2TZrZ&8isnoj8mbWE+B8NZku_uYOc)CPjeUI6elsEW|GYYPTOEkMQY;x +m|xode+yaY%??ht(_Fe?F7LfeDB2AL65{x3V~<>MhFbwF3S`ljK~Mkn +TE0EwhuL(tmGh{=+26bN2HlOzuu@Bj$G<*RC3M^4f6U#yJ2630t&;NwGqu_41dC3{wmA5p;k}kU={4}s7 +Cedrl<9YX7M!>0B3qiw)P}+`gtIQA>b+*0f#mgJ!c`=6R9RyDw7*CLH +=~r(+tRA#5mc~)ejd=&uUD!7X|L&wx%I=zR>7Ewvs|Rk(ZslNvi&_XjL2ODpnQNAJvv`_$>NTtDT}17 +A#sTs^TRApY&7Eqr)eZw1~F})Pt4R-+{<~mjwy!svbKR26;P-r3@qJe-bi-*i3|cpgtB>fYONefbX?3 +m7&SHOnPhu}N)hv4)X5kO{QU3`An~ZwdKPilPzrZn!Noxt&}a1Li$^I6BIFYR-TmWs_7zI5x*^=0 +*S=qb~FDW#V4Fy2GRKf{we*HeUIPUmo=FaSE8i>v2gtW|vwsSF%ahi3LcBPSzV}o_UEaz1O2$AziwmN +NucwdKSA2gPrZiWI8vd(4z4ua1M7f9$^600)=E3t%3aj<;WPG(Yp2eyW~bYNO~(2bKh3-l4gv +ey_#+E?E5=;QNr|VS=EVX)8@d_^IU9JtyuFTtNU0>G$6RdVZ@l+h)$t_mH!MhZUF~9KsgKbbl)4-uAa +J3|NAWDP#9}xmh$pJqrXLN3leRkrrQMIX{PcC{bjkL8~_aI$wyKQzwu4IGOt9$KX6@l4;B|B$k=?XjS +L_1ygn{!d}9lNXAq+p%b^WQDObY2Y}G^4nJ6@G#q(Sd%z-(9effLZgby&bMX#pEi;s}2F%w1R +oWGcUH%5oj6bBJc}!?Rf5M@gjrRO>uIFz1f2LzCy=SL~#`}F-c>{sZGrQJ6ER-HOE%J(WY3wV(#^|Og +9G?UnJsCF4)%z+PF5sll4$D#2X5i4L0x4`^FfXw`;lM3|mXkMV`H@B8<-+Uz!VAx?43h`s+yt-_mlZ+ +<=;A=yAsYn?TdCy^mgJBZz0;0#C3Ox&C}PTEIB`ZAWSW_t!--c8(mC;8E)apa$tRA}Z}eZ& +H-m*fa~I&d6MQ|=gC&X`2Af+LpS#KX_6%hD7%bgB)=>Uq@8$ou>0cbDP36LG +`;CB_z9(3FA?ekm>gzWkT5WbgIr|+iOeTp8oQy@g_BkSU1$3gf_cgY*);`amt;&-{44f62#+o1P2*q6 +YO9aU3$7eEN%y_#oRE=Kkhp|`dIy-(`fOO3X>67MG6?NP#bN6uZKf!?!E`wYJAgMS_neD2hNEk6Q+*Q +m9`E6q_moPK}px%eL6DuD=b?op*S5?>AxY +CL1nc@tK&?7+kq%2E0bRiViXrfKg*K!##3tZ74gIPN=LneS5S`CEbayuZF${G?j;di`494Zpv?e!Zr` +%@lGQ&i+!b1WO+<_FjgkdE>$|mv|xfT%!!#?e$3*{3C1nH?;)3o16znRt{?w3T_7chR0gj33Zk^=J6e +4PtcvUi*g@6Wm|&sW2W)X)BG0Yuhj8K;}Iw55~wDpF1tdNFSX897PSsiaXK!1ipIt=Z4CFiC#1WbSvX +n9dUf+DL7cjSA>{r;voapQoYN5`R0P*bdJ|NSJ3@Exe4AMzYB +IYNxATUv;hcLEFuKiX)5qdn_h^J84qRH33FaB)e4dXDg^8j^5!m1JZu=QH!TN=y-QL2(78sYq3fr$AO +)-4|s*hD17?^u*ZW6?p(N*aqZXLP6&g&q~>Iy#!c%BszG5;pW`cmWUk|?ZHf}6rB}Wt_#OTxb3fV>95 +z81(=g!50;vs`WQC6EuL~kKJWK^zg-G-ESy$s<~U(b!I-&u1(?UM{RzMFI7L6FS_M3&*%ePm(SY)+89Z|i5PK!RA@#|sb6@GbKmdJ=yK2fj2W;V$fdhbyhN^3h5tW1U}f>G3ENm$SKO36Qu?p; +mG=^2CQo;K;jr&Nyfc16H(B?L7+QL%P>D-YO&SjMJh&AMFS#^Oo4%)IUEWw8=djdH+vvwH*XnNX}Y_u +ZEb0+SgdNY}=wmOP*Z^&*K7FXlr7tvk +W{C+D}?UgqVI~k1!sjcT#5gjQd`io>G4k$XEyRe(lYR#Bu~vrWHx?mmX(NHCsG$bsii3`3! +s$-JU7~i3waYk(5l51_JF7QteGsta~H`ud1B54NKedxmGRV8K5SdnrmO#F1CQybf58f*gP7`e2y5?P@ +W6S6WC-57M)K9bkcK6AG9kYz+e|oR(Iuvh32!i@u51e>mo%#mk!Za;El}G_ZS@80D=0}NrH^(^7puJS +B3t6;=X@k=})-t!2;1<93H&|Q#P*K_=`rqN&N3=-1jt4D*iTHd9V3S_Glmk{|lpj1Ab__qgoX +0P>Q`pws+0yc+XYuGSuXbdBi(XxxHaq8h+y|iS8+A}BG0rsZqTF_@x|!1?@|qY5q=K9TO)63Erin&h)%n +O3^p)5Y;pO1Ur)mK&Zkx4eBQCM2krvbH#TI}ZTU5|xU_Gv13~2tC^ce+c=b-L_)Zk586$WyXoxn2SPJh(5iWudj9~D+iUSl3v&0}g)=JASTL%-5 +lWTHbpUHF@>PJ5%CNp!aT5RVl!AyeBmoi48=;mJdlNz)lh0+tGmsS&6p8{8AmhYhGtN1uSDB~yWVHW5 +v@J}kz6rs=aQBCj>=TSZc!Jc4 +cm4Z*nhVWpZ?BW@#^DZ*pZWaCvoBO>g5i5WVYH43xtM`Z86Sk!A}DJ>+a|r(78=1wRgWE52P$|nXabtxt7u1cy>$VsFN&hk!h5K;|PJpgAgMO-J5CurPS6U`uZBwatdD@-owLHj%;DkhJK**Z^3@ +@1B1j*NYD$x`9~H^z&Nn4}rK2=$zVVTvOI5R|sz+4*9D~Re*w6`1|5b5Jeo1RSg~>aIo9x<>Ut|T3=n@orGJ$!^Uecnp)Sh&Zs*( +T<)v#sX1IHvTp!VACgodMVN)S!ew3Rn5^77FZ=VsdDQoPI=<${xTU3Ck2dJ*RJv`*@?P)2v#$Hl{Ek#W4)e)0dWSwu$z +}}dC-Y20!7ERJ3nXXcjggH$vPbcaBk&{)yqnV+_5N+4lRGJ(ni;zKN;U`A}GJS%IBSo&Vn=gY8Gpro_ +SYY5!o^GE7pZ(;`y2f`E>YAiXF&D;eY+qf2&7l865SmCoa3ECA2TO`e6edAU{LeY1R=`G(4$rX02&BD +AFtf#7!22XCq%FejxC$DpH8v#loc4J#FkwaKQcuK8iqvPhvNhpqma8|^`Z~~Sof_qARnkbP>LVIyU6m +(RxrXvQFtb$8ak8-a;8qvV6;aOB!klM?4(j?xeG`Et7EgO9Pj9-OmooVBqVTk43NXkHURaj +Nlz-JZgMYJrIMR1+S0r)ZTD`E&J4;!g7=VlRU&wQv5$V5xJc6|LA*cT`wDs_*wGVc(&pVadgp!C23tF +bXLNjy1y%EXa!H$;AZspw%mqvtQqpR6oWBO`_^CWVpKKLa%E!pM3JwG)|_8w5rqI8uF|{lfJ9Il)^Vk +l@}u?I%0b?t4V`PS6*BhUv9acqzGbh0P{x04vYi!1|HkOVaA|NaUv_0~WN&gWV`yP=WMy +?y-E^vA6R$Fi4MihSMR~&^0gGAi0)k<5UR3Zr^R=Gr68bwiL27Ca9awlaYQ6QD5Q ++9*Cx3<5X6MDUYTgkQ^mhg-XqhyWFs6@o#v)*!?5;bt&}9%@ZzHz-iC2=0=3#1{na@dXNvz%;~mPp>e +5`8LIMZ6M=35a>#xXNF604#?@;`hG^GX$L;J&B9yG*Z`@Z#*B?$fs8G%PC;)WViaA0bSuY7u+KCAE>h +Z+j47=Z5mKTX9z`%mNHm5?)F1}3g?n#uJDg6SJ$Qio_Gr`|Odih3)~qC*;xlGUd>u!eh$$<@gxONyM9 +}Yyu5Jm@zVv$DJ +uMxFiOz4FzG#?$ +JPDZi;^<#FTa&U)Y)pbTgRQ#`p#Wvzgt{vze8D_F#u(JDa_VGSd?cDi_)?V&A3HfE^~!>__bNfvsJNa +gy_d0_-RyRn6(V#8eg<3OWD7*2k8l2w&S+cU~K?l%@sFE55hO`S#s$X&l$g)GW`w8}<4Qh>^zEVHH-S +iJiYaG&S8R^r9@z+G`UxL=4`*6`Dkey~!ey8VPqO9jmhsHo#_9}&~Pp{BBo^7`! +#d~PpCLeT997Z(S2rF-k$-1?Uflg>VDg*u6hwpZfQZqvTiVkPJFV&VtN^%pCqG#WoU)31}K7_xnLNhS +*^LLOLQ)#~u;o}=##y#BQBPi{w@@$Im8-6}Pr@FLin5-3OycT12+ZczCj1KrfHRxc4$VM>C!=OU0By} +zbYCaXzgfz^~Z9-e;r^7$8=?1pBCZS2?25jK1=iWPjPn#9RN`fNz$STZNFasnn6uX+ +*}tRFcc2jy%Y-ctfW=N3@V$O`pG7EYc`|kY&fZ*L*-Jsw#|n*jZr6aXxV?zjdLFR65G^>({yZLL@sy8 +!&hohHU1s}K`3q1>0|XQR000O8MnywZIlqJu?>PVf7J2{x9{>OVaA|NaUv_0~WN&gWV`yP=WMyvA=%pc`RysrD +3F9E|RR1=Xm&sx!G&4z3%6Czx(a~wvRvk^OG;O&!2qq=@(yrx_$ilm!JIi?LT?%?{0p#J^SHq`||PrZ +}+dCzuG=|czL(ozuErs@W1X~y?P%1{_)43U*ErY{`TQynYk^eEjL*(SJn4+gA^d`TC2;yXSB3UT)w0YK#BzQO_S +~>!)AiQ9r!h-uvYDTRG1on)uDPf3SV@>ecp?_rBSl-o3ed{QKR@9LXmSuirl2fA@0?^Sw8}|3kd8ZGU +m+}{uVuayS;tbzWVj;4-c=e@yArXy8rI+`Qxw5+V_ulciWqX@8A9s9sA?<>%-66i| +4Pm$GeyJZ?gHAh_~DG*DpVOc#O~g`0(=n`(JtK=hrV|IQ07M-Q$mM-p%2kzxZbR{O(Qkbo=w&>$}Go% +~wBv_v-#deE9SG7k97U+-=X_Y(MeZn;-r$Q=ie1udj}5pFKqL&h8(#yZiV%&;I+}2Y(-({&jm5tMT~mlOO!%6#QePFSq;GHv2=&ef$y)#z21wv)aD9+kSp?_x;bWZli^ +G@Aj`xp8d<0-#pts`r@zKzkc-e=|^8Y`|BU$y)o1A*I2)7>Hf!`!USJ#F{;PsuiyR}9ghb7^6Ar0{v| +%~(Z^3dfAZ|F^!~Fa&%XHd>#w)ZzI?iUw0-r_(`QdU`R4PFo^D@#^Yp7Pzy9=tZTtG}?%fnKnZGs3|7 +VK7k0yV7h?#tO_xAbyt2a6HzsB;ui4MMcx&83`?{~4xFYfNcqPFL;MSlAA|7#6jJ-q&#MPI`}pFO|-<@xLX8crr +Q!t=-I;#ZFkKR(d^*oQyAesTXQ-uT~sc>DIJKYaM%FTecq!QIQBKY07gACB_jkMWVm5C7TuFZI~A_uv +2LZU3OxI!nA%$9(tFSjXU{QR=&wR?nBpUi8eJA3yo?`1aXfzk2e?N1uQDrzc-Od-~+#Z=OB*@{4bueiZ-9A&gk4 +Pkwm*h+&0M{ri`XdLfr88~Ets&p-Y4>nH#7Q@Y;Pyc&-E_Vn9lUw-@9(@+1$w_iT})2C14@9*7&(=4~ +;*yG38=WTR(+?L+TZMfy*HvW3XkE8P2ydC=#~rypC72iIE0?b +i6`IHMme9$3!FW443-^4mCWqs5(poblIIv)z8gJj@m^`?nHLZzXy(?d6JgYmK*-=vzFn-PX=u`{A3TC +nF}U?PuYAoyoY`o&6@}$jNIAccj2`vq`4Ml~VtX@lu^6Q`x>I@9H4n#r6T^s^ +*$2bjSr2~WS@Evubm=u(V@674_IGD`u_B%R#?jV-zRjn|<&j{yKN +;p}0oz=+7gP#A}_#<1M{og)`>sjQN +W7E!l33bt@}g-p?={XSLA%Jtnjq-SO=#`_3mBNQ^#u6;C*#wQa>e@p!;TKqh#q0EI|C^gQHv*R?Z8F`%M#WSQxNa#?A1}P +{+{(FY|yF2D}?=oIkQco@o0!8X5UZRJ;J(6J!6*I9-VG!XNxz}{c7)q?bbckZPB-GkLbdTZpCad=2*s +3Vt!*~79Zj*-3`Xf9nr=S>l>RE#}UgN7Cy7x+HYduv|D3VSB){(cz?mBW7+96txb1S?Bn=rp@U(2@oR +LNg=!4*C~o?+v)cEY7)zKgJ2l?ln73G{5^EG4)YKa*&TBEX(N(rE{he&TuyHk_IG} +?`BtrOFo@nE)E?73LW!9E@iyz-dd@D%aeL01b~$2mO0&O5eeyDRovXG1Q$)5)5aiCxC>#IrEslktV2G +$uLr4|X1}#XB_ngT;%1jA%F3{A%|&ZsH9@3HK2m=seth`s8RR)*VABd=e+YZftC;IayFV%EaQ`HMQnE +v^~~sMh9aAEG*;e#hK<^v+{(Kd0>(o1K(`})7|kD@l?Vzrod>{)o$IxpH;R?OkO3vG*&AH6y4G>+vL% +)k$6lPyK8yGE{kOe19V&m%Z+m{x!+owH_M_1pSObLno}EW)gtmD8!AuiS^^;pX|2zpF)o_ +>lt&JM}ZM;kXj$ImVpgJu&AAP6Oh&voO_fC_`x5RIwyDy9|VLbb_k7K;duPYu4aIBcJ5l;wHh)$RA8R +2>dJ*QpFv=CoM%t$ySf>x|x{Il`HXI?Ov72Z||;vDWnK9b7V_TQML34!#ykUd#9U +Bi8MV?w5lVtS&7U7lY-mcu|1@Yq`$c7d>!EG|4;=$pe_PQ!$Ulk}Z~OVudVd)8!E7BVfcpVuaE2f`1Y +)5l!$YvE7FG2QC^8LXh5f_4L!ge?=iSkrmnMevDJH^7 +P$d%;Cm7k(Xk?Dz*L*SAyQ2K`H3|5P7#T1-)EOswl$WVOf8Vo#m1$<&}SnXkxgF +oax?tx1p*kU@wvURY*aN5o3X2}NN0AC+C0~2S%47|sp@iOtc(TQ+K2K%(L0WPT^uz~L?toWKX9z&ZEh +r-w531ji1HKKJaRMRrfShs+I7)2+v8N6HKvk|zY(S?r3h^W`t2teiNbZ1A$V+gk52f*Trsp|AMS_5>2 +!4~E)I^oX0`rGl7?uKqJK}rD5&Lm?LZ2~MNE7;*)o$RD0^p1-42C9D;Nc6 +vJC+z1br8;{TZbq?>^1Du=~yzta~Hob;63B!0G9wAwo|u31dGQ5&43ex?tKt64ki@H$D?B);P2&(I83 +_Ah7DWHb_17GTVp_BL=33u8W??aHJ&hWLk>JXNi2&I67FKE0#;)WyRWfpE?hmqB{3|ZJ-r;RE|7rt3; +Yj~l8TAP(lBuRLv`kGZ_6+aNUP3Q+HYWho6c^Jg(4r)1DL!RVFoS&}?}o>I7inR5q6k6k9>*6|dioTsel~%n_8YxEbC +t`~z07K>7*7n#OXXPK+%&*xjjmFNes@c7*|@E2X>zM@$88oR^XBiA5)2Vb-8CXHlB|8$MzfK1_a7!%FQ&gFOH@2VQ@sXiBZn|Y8PC>9* +FmA`JHTxQJFs#04xBqF(h*4SWtY7u?hGy;$yMgjWOVFkGi@dP1*mRY6QAxW70d)gehG(rT8S(htJOnN& +xpATkF%NntHe}KUJi$zPvRbEx-ErTfOozLH5YNPiui>|}vjbc*3^HNF-SnWJ?g7SEbR{@C)6bnJ7(A< +hj3i@$1xZs^2V%6`#}QB>KMpG>qAhXMTAC9J<=W!}jkxR7Jj{LYfQA`j24T}^@ufz%lFv@lVmk{J|xB&X9!^1TIFK6y8$FNv?m?5U+WLjFsDB0VsyZspT%zbqGX(=qDh(<{@xNuO@ix_5)NlI!!h}otQLZ@4;&6cNp^m6HgYoW7yND +R%R*lri9?kWKU0*o= +z)dsah78Z>#2BM{8m&rfzb(rtY^baR|$xMGjyuinFmN5h60M8xF{(%*Ox0ddh4zdxO^bL-q;zGhTC4M +-;B^YcY>{cc(J`N=4Hp%iZ(#pi21J@upI*l;&vS~LkEQe7&?JQDQ)@?y|$admVP30j02z=d4N(9)+GQ ++(2E0C|d82SJ*E^KLDdCLi3(kE|i#HhwD(_^wZU_cAtAezLcPBubkMq~#B(%L9#3DGPNhW?Bl7~u!cKwcw43 +_L9KYO1$|p#glGth9I86h8Zj}$b +B<$rrkz8fb4Zn$s377sX=-~YB2$X%u+PO?q!$nyGF^ZCal85fyhVJ13-K551q&9omjWdYJt=$uGiULa +O0%>8{WAV!CaSh#&-(Bi?sYTzky4l4cOeGuVpMGTa6vnT=Au|g!=*{!DB`zm{p)8Ua6Vo!Y9<)uK5jI +Qo1jjvhd&qErKI&?rTZh6MB{v=YFf0M74{5T50&H+R5Qw> +xyEptpF?+R&H&?D(3tUnR>{x99!w!>bTvYfj=`M`?SOOsYdWT +~iFyaHMx@H}+kSzh#7jz}o)!@a4&SfVL0L;LbRMSdIX~k+mac@JXk? +%&rHfd7qA>q8T-AR1wi~x`}PGbpO0HLrlgISHPQoh4Q8YA^_BqJ3{qms%G3EYcMrG!JfxauklBmKi_@ +ss7W)5DDbQj=(v_`z8hw~3Ap9F_U;k^7>7OJHJS9zbPaCdix8l9MHMtCF>Jf4K92-cw>tCa>^Rmc?>h +@;k7;;U_^r!tL$U17MOQ)nKu@Tvcnzg9d@8)2fKgOpUFgL9P08Va71vI(U9*V&%x;DP8-X~Ff#! +dFXkL?XK4tWQAHQxS?Ckn4O~*ei6b%griRWw_fQ2Jx#bdZ`VZ#FHJ;_s<%r5~agTUn#VNa0^-Iomzo8ps5fWY&cvB%M?>6Yy=>4?VVNgbCL#-El7rT;}zyXFER<;E>s6FKtaQBl +xYmny*Uu9+hlJ_cmUjRw1*YZo_02<;}ln1f&#Xl3Pphkt5#6AVhsi-p`C-2tWcA|RANYT6YYl43#UeE +8hD4)6i?rFCzSXyMegK7OPY?05E#h)#?e@(&9y6{ZU<#z&~1g;jvk-FhhV^=eJ*xYGM$4^3373h- +&rlI-I}TkwVZR3YBSHJ{eqON$uYI2M_tPx>`MtkQQPjpej7wfav! +x3lwzazrj>Nx9Rgy6xQwm}x_Dr>)9fkz)1ib~t&E-1;+;)Cub<;D(eBFNP6k3QdWlnK_UpfE +jh0hnw@v`JL2px>j(QSV5K^VjEWc5HB-6%kcOjYn}&B09X_%hlTz|%rMej?FKICNI?2-X;WeV_qN#gQ +wzmAQ;)4hf}Ds1wcqr~K*<;gwHgw}yOV3PO4QMKgZo52V;GZR0|z$Jy!X5?#xtSpuRL=GayA-70cKr#uGjKBy|gFA>#z+2$qNk*DQ;VW +J&>o^#e^FZ3s=~1WM4R2nc@LC41#VomkK88J8t@6N5;H+D{;_(8PP@5~&B<{2%g27nw$qo)ax%k1-p8 +kPE&|NMmc3>3NQfK3VC$uyGXlmeTUS}sdog6O^fbeS5RyR6)x +8|bs*uesN-a&iac=rohuU3(u*PA4ZTR0qewrXZu>S$-n-+W{^?@KDh|bjyOQ_^3JrSSSiYoe +pl!YM1_l|CN!)3gR^?I=P_N{Gu-*m9K^yo;j$Q;5g_JTUg$aGLRw@>L)!(^W|G$f`QpE{r#$6gu@CvS +(h(2R)JuI+Q~}!A$<%!Bd|9-#lQeNH1pOFL8v;LtRUs@_>uiRspB-YbTEbMw7<4%8?*~tf(EU0dSio^ +nGzd95J9;E1@OP)oqsq3msH|QYz|}82_NqhKzm(=mmmWS#Kanf&jw#J*d~=aZ#74=mN2jQcEXpCXSH4 +Ak)pN2({V32FwLW@IF!MshPO*$0=m>};bR9&*7plPobV-t^QPz2Qxw4}oGjGUfXyxz%T8D`ma$5&uIw +NfVQJVv!*}z5z68^WJ!2xcSRNJ%OX_l#V4!AE>o79fxbpx5u*-E|`@`Ls_Isi)S@7HHf{I9=&TP3__L +pFb$OP}Pksvh7+RZW_5x=SrWTn#u{d77p`{Iy;jw+IEg6&qnAcdGS%a7ld@rG +5+L97MW-^iG+ibhwOP-+5CL`M7t+m8{Hl4SH^F@kE#D?-vB}`z+*c07QoD0Q^Z|Eb;%$F75AY?B9PuI +WJxP?7WDx<-(Ww^HA($a}6=OeENJXhDm0JJ>0YFP09BE0kD;Z+K#8#tr-@0YNT_q20ep$J5|0wJ9fjG +{$CRruKhj$7loeduSpsNKhhNDaUCUBT^vQb@V77yw*zvy0TNxbax;CIv?(5 +~=(PxFUAt0EfqMb}W=+qhC3c(bOGx;C_m=sgd*1>|BL4l+bEe+6gRRW8%tCP59GQL|t?i3G~*>y|zP!L2k`T2K5>7vOCX`C8<~`S{FvF^x}ZG#}^F}_gYjS99O&OUV$~+VrZ%Z*r^>gPOsM8T|tFN +l&K}n9sMCZkbNPpAasbZcxJnSOWM-g?Cwt+$A=qQGQq?XQ|JODb=Ma@x9-AhszM;ZVQP#S*)IALl;`n +&mW*0O6@HxZ@z!A2e(Xj#;Wo_YaS{NWVa}mEr)JpCbwl^ss})*>Y=8(@vr4CnJC&THpadJFV$pN01!4 +;+jtocB!6>@F>v+(IejUE1e%rU0df^rOA4B8MX{N`!l3|b45-ARQ +C;cXn2>gc?zL63VzPx<^;k>`Ns%=Tz|58sVOc1)pL8(st?#<+X@6BLTrO()0>09Li|NrdS$&j;YKZW_R)H49#e1|WQO1Jh-<4v8X9Z`Twe;i82u?j-)I4y2E(-Aa6 +GdMw6*D;fIh<;MYTZfn>H?4iqb?0V>uy#`Wp0sN3nGCmw$&DY3LhDPjT7`RTDfOZ(h^>*0atXI2%ONP$4QO(1Zb;=GKE~ +=vtDsHeY6M&mFkL_|Z#f*R&G4*R*S{ghP^_pwH&r&QQXq;Aq)M^S5mYykoRq__?DTfgQ +Za7mXw;NwO93|pxRF~KpFFuFku7v^hJb2^Cc-7TSd)lTphAf)XEF6n49wywaQfiIqUP!&4$G5SfmO3| +g7jUMXMtazwXqW}$Fulr>W=w7#G?bRXzF$$4KW7!+tu{AB(MS(HEg;Z#=TI7VQ+8_T4D7bJ*w~j*`f@ +JA@vgB!%)Cz%#iDgjmolgQ~2s~_^(;s3mU8JOA&M&&x+B|}SA+p%9C{VO!a$ps9!)Pfx^rVS}WfF3un +usIyTb!6m&jE&G=g1~vV}+0;uw3Ul3Y|7rP8FzHv-=;dqDSENQf&Cu|f)MVq+NpfQXpFE~SAG$un +C`<)@9ippb)ZwPo*e9?-oOb6muv6{$vBcHsckOTn;EyEd|vSMk2)e7Pk+Z%Ve^SUvXzy4Py{CY8CToQ +7p*zk#*}I^^z&kRjxRP%pLt8nW0c_eD3`9^mP27~(OKb2;GRq&cWa1*V){0k=OpA+09ddd1I2DbMA^ty`+ngEbg!L +_P$f`7--T_`NHS2T@kydzw{fUvHLfTHR26O%B`A@#-LWQrM%_L3F#;}?u!w$|4tme0gR9BQl*D5N8|t +1~RCrMO<6LNmW{$)IRw;SUs_qpwd84+nEhU^DrzA~WC@*EuPwRTafv^YJFj!pkI1})odZcb%_KWVdG^ +>B72QfjB)$=Wbd1F?qBju@{$Lx0BA3h8E1e-qG{;Bt5p&|~+ai;$RKnnM#3Q0e12Yrp$i#A%D+Vu}v< +u)rPUA}k%bgvyN9{{bYoX}4Kq5AYh%I+})ERWW@``#)Q8Bs2W8P=o$gSfdEv7|TmlA2c1uoasP-q=TPA@}qRLZc^hgkf!YM4S4t)TtrRaZu*I(* +5xbFeSxLLn7f$tvB!xuEU#ff8_E+|>e5SQ?YEOxNwq1L=SCWxLVySD*MtE+*%-1A^_gu +1j2ys=^ldH-BEZCmUcAxb<9ZdO3PT2`xxEpXl_lC9n7hLgty_r$}};cB$?bYM{+Z>%TtPexS2H`cIdd +;MPK4sRF&ienIbh*XRFg+DcwoZ!30gGTMiw%hwhyF)!)-~0|^Q>mU=ZA8Q3CnR>}?#nMm*y73dSy!s=EOau8%)f~B3oCx$;;Yy +>D;E1mK|3RRM_$2i%NL;4tQagb0HP+2=X1eb5dD6(GI)V(Uf;FxBED=P$GfheM)PAd<1b$3=ZfZ{E=}Nn&aGT23F5a`Ldp(pMXp$znl)B{( +JRV7+U#GjF$WurZ`97W{JZKgivG~+;HFU3)EU4ojHc2cg1rngb@!q!d=2V4LCPIF0XeA5&cQaQ!ti~J +$s3Y42m#{Aeh;8I44M3d?uSG*#L-jDAwakpA`uRW +>iAvkvV53m5+RhHZ1^v7=Vc#)Rbd>v2$Z-LS#rh>rQ!}LPPgD$d5PAaHyEg%mg6N +rOxyj1V!cV&^T4+g9g9v9>-H7t{fxpt7zz68?&{ckg3HK{gBY{L?D5r%IdSXPol8GB@Y>r7K}v4?Dtb +PCH(`s*D9Nvf!);NG(Ca-Tbe1$E~_u+LqjDMc}%j5BIiFm*I`+Sb~z`k!q$_CFkZE&3_R?clT7we{SY +~l$GyAyELQdKL>IygSb>)H*oN-4K(GxpVaoF);>@CJZfj=R7y`zFx2iylt|if66iF-OmOY(w{2ac +)KFt*PnsR3Y>+Rz8qZ4py+MAtt-)XkTio&UW)Wu@ZarxaODhIItfL71!t<5%UN?QX>;$-oHVjb%1nbB +Q(hS!HggzA@h|%!h6+~?Q$N+8uauuyxJlUop!Tbu$2NxNq~%-l-^8X33t1yGnJ84a7)HbfcH%;mbq9r +cUkuW8Lt&E1ZAciyEo6(VICY~87TT2Wsg47GMV3Z?FKHXlKs6XEn!DfN9nrA;%_!dF!IRl^7$m>U8{A +MQI7?}?a5a+b+4WP*z>|2J7Z0ktcip%Q6cuzmHK<`3r(X38YP3&?h?a#t5>_6$2s%ZEM5c%bEG5X3Dw +3ODIus>H&tE>cMEBfhf|?hx+b3I$>5>kqX5}_25N>1HJGsy3RtCD~qP$^Q#S5pG_2bI2+kD%`xT0IYP)gSuBm +mxrZL%p_O5`%myaF$B)CkO9}-P?1MU42vv*09J-M?^EDDftyx^HC_bOHFeUS)60_x1_~)8RoTaCu08K +hDqjHM&9lRxq0!qlzt(ZcRur-+(bfN=IT=~xlugDpjg-eYtKvSbz-h4o!v4JG_h7$yQIgp-JjmjJJ}Q(#EG>0z;Mg_!gxRU#l^4v=*PdXlQs{6euXa8Z+?plZ9#b+a?@+q(^!Q-KDE?p=`YM +zG9BZaL)Ts#zH800{Qz=$ZG!G<2_>w7Ge_6`jHmKBJ=DocJ@z5af37VMr0TQw*(tQrqNFG9uEt@H)EJ +(Ji!lETdRV@kl1{*<$+XeF^|Q6V4ExEfET(LcOT +hiA*DsV}NzoRk*>2UF}ZqFX4RFu5}S)R#HJ&a`jo9+`~x>Bd!~a+OGw9q^XVEx_dHmB!5Qiy(wzYhj$ +D}Z<<*b*Ufog=OMm=wCKryfJ-({3ZzQf5fWkYJbF|23Io}|56B2%U2!0)O1uy(l?AF&2{$@xNNANYWF +(!0s+%Reix=u%rDsuaSYj#*FJS^X@j_^@;9$aLYH=tEgoGf;h&2-Cy3Ux +`@{|5Hc?@y8n8zwHH{z$CME5$B1rsBSC!a_On@R{(D9!aCyQ3J{EmL@Hmr| +8!H$O?(RasEoy&x(oeAMDQL92L$f#OW3&k{cFt(1!=NZqUFfAO5j_>&)#2h=6T1cdHhG-fi}tmCVNJ$ +MYu4e1D9-S^aGHgvC*KsCH;jBK#NofhxWN>&Gc1vJu8P#4{|+;lgC%CWi_qJ?W7(3dD1=$^9AIAniW_ +Cu#FI;P#?EV&2$C;LqdhN13R07-j5_qwU#I&6r{x|_^OfiL4X$$(ehWS)gr5GNDMyll_8Df+$C8#Q&W +dE0;|n!NeM-GduC6uW4@2nt!U(LJ1cXo~m@W22TyW;EN?-@qjuR1z3`ZomX +%=T-@iytxQWEMNVuU2q9hTcvE(bf0MBs)zAFG`*N8pk(25soSU +Egw5}8m-T#fFvQW9>5d{AEE2O1e(*MjL%%pu1g#G&q8TvjboB1YvK{m>xG?d9q(y4Nj(%#g1(atIb#E +wVN=%!3rKqZR5+$@p+wUetsVx%!raAGt5kz1HRV7B75&oKxJ;^XWd2L>myHNOh>~BqDKhMsG6Alrx5M +wd+nagro@13fj4;T7~n*%SAG!tIlT&`(k(C(%UG29tDqs`57nr&i|!Q+U8^UO6NhMmTYmcaQQu_ejp4yrofSUO+Y`0(DY +-m-i$lU86>DKD+eKf(gB!<}i#l&b5F>9%;|R9JCvSj(^Evcl@C4klH8>U9Jkx|+s$V+1uI_cWj%~Ip! ++{&}Knp0N7n3covf=0(Ia1}^*(OZ~89s)<(JJMB%`bJF;fZg!Qv`jLqCk=2sxD8}hjXpK?lrhPI%`aJ +6^8I|=Ez%eUvzb^dRT95^2iFEsZv+oCwAsB01ud|_vCc4Mhxp~80SDu6);^o5WppIQ_B-qGX;hl88V2 +=EWMEtfINz)h?)Jy)OM6}L+sH^_EHbi(Y?0i{4x(}BNQHcG)kGyq2HmbLsT1V=BA)!s&>uk^Ex(g$z{ +LlUdiZs^DLIJw|Y8_@;-6iOIMJn6;xTh3FfSZ)6lf!g~dZm_m%uvNB3HhbC02e?%EXl(+TxPS9T4YWh +wa>->hZod{|Yl?XixZ@uH)99bB$3yyt^z+E74cAsUp^W#$ztNLmQwOa5@7z+mS1B%&+prrrBqhiB3dN +RX8DJZ8LnR-iI3^4Tm1;ZLpq4KG>*Q4K)>jc3pp*Zit4@hFVh0=vh1XK~+kss9B>A*|_CRBF$QngBvz +Qnj$EIS@+Lp7nWd#Ed-4O9HBW^9EWfuBY86UKGcN!-s99zB;^tLAd~_J(~L(lP40kUDucW}aSk3DEP_yu5 +=zoq0FsC&RC2-{8-hR!-nyzfo=4)S{k7X0%1hO<<4)G)ISx8>F8@$rnWd+eKfZc1wAanigdl%i>7!pH +3rQv`g!e0+36nt~v7(Vggyws?yHTz1E)ZA{%svX#Ptd&I~#a6rEuMYd1!EDHKU0i!nHjIyi{h*X4KAz +2aFmqSfG(XP2#kvF#+2<#cNGKro6Rs^LlK;eA0~Y3vOQ#IQ5ZSwg#$XUSY>Se!09C3M>(^96e1EfQI8fxO{fVZAQFRyl4}@J0QN#4ero;bnJt56}HdE|c_nN^hjG1LVs!57coyci^q +yMbqIxs%KLa#6ozq3>rF1OG9?m)8gKI*wk +WrG+~MLGj5`L9kM{kg(?YVttLBoEbnx(gxv+9c!0b;MqZE(;x0H9%%h21smtu@UZFJlQgmsmX=QYI^R +^d5`d1#qu?270qEFB +_c=O`_<9C)?_8sdBYBL9hkNXh#-)33!2OH9ui_&`O$^w74k9Ec2c*}(Y;n=NZZU?S$qR=NcIK(ReF`9 +Ko$OO!Eafc`qO_hqB;M-whx`Gs|n7h9cGgrs^u +!x^Ygp2<2oCyV@RgL|(tmw$4k%>E +??{zhDxLKm)ER&?Zmp;c_tqqfrFC#yGP6RQVhhqk$M*gT^hy9=3PoM^N`_HQA)MSZD{k(7%;A!yEkWEI)2U&-wbl9A%zHWIAHm@MFDJeC@gpMo)RHYR*%E +M=l11cE(;rUr)0g5b9*=4?;BWI0>pm2$nx-lK?no_ga~&kOLpt%EOGPRnM=}Hy}fp1y_>TR(O>c*vqz +1{d#OhL=3+BG(>Wq2HeGkO3D8ig#Pc=eGU%Y? +@-GvLq_Ghs>1PzauKy03h%r^3xt&4wShCa@T9ue(~a)2IG7WOQQYhh;CP)L-lKcr&*^2Lc@Wj~%(#MV +m$dJ?{|xH&rg<@=Cz?o4`tmM0a7nku?>(G=6PE|cc=J0v4o?c4_KCWPx5Op?K$^t5*%|ML0gHJoaQf8 +@b`VG+k>ZUX=B(_ClH+n2)q(+ME`NsZwQy2tc;fO)9{7q#z+QTVl>DL5Q|3E`|WRmEvr~&4Y^4dVs);u%YFT8{9wZdezrpAd=rc+1b=Ex`D^@kzb75 +C;Kt49tKq-NuIJ8z|--Glq^bVnpbd1XE197Uqu&28EIkSrTIs&;z8H*x4xd<*%?1|NP40h|c!qI+!~h +4h9qws-e_@NT&An;ME2$3kIxzMNxCQq|t|p7G5EqM&f;Y&yEv0o-mquZHEpOS~LUS3q!@UQ1yvw+TM6 +dEYDbRdQQFm-2$^{+*8QwPc(Hu6TW=m+&@k=%Wq^)M?0Adhtd@ +YQLWqoDR=Rn)4Y5UG$H|Ih1_y|_sdIQrt<4JGQO#MojH2;fCV9EYpEpnN+=J;xn#`w@~`YmQlTk9PDX ++yxB70~xK|A&!kD6rt_lz$!|?0_55JNCXy*5NP_y^jbEXbS?5YE2;@7(7f$zsb!!TyPAJtc09*V23x) +L^c^OOpv=(%yfuVZ;oQu`%Gb2nb`0^Ms(!K7G|OpYRbJB^3b1C~VrZ#nczl;#8RKoqAfgnK^0D^_RTh +u6`)HfcQ%3wQa{Q~2zd{X!FM1c2jwLDZ{V@Jhmw+@|-vcn|&6E_}%@dhwE4kNdei764>yt>_p*QpXvfbox?N@)fS52f(qAXOUYs>CI(Y2- +y%hoAL_{$Z$lU1{4VFJk~yNH`$ZygrIfNDUTKb}bjG#+}5r^7`anCOi--hDt(y#Mv7B^MvlJNn^4!@?qg4OO?%|C*df&0Wh|D=u7^&UjFNHl>MwO1Tv>q}>z+CB{I3!s#Te)p%k>pO +`hTLT1*~ps1ZqiW9ap>h8@OahK8~C>h*1wHPiGLzcd^w_cmSedhZi-;RN@ApKE`tPH6uft2Q3muab;cfSK~zGv%F^?@4sAZ&mG`iOp?8^+*{v0o_IPqP +YrpV*wRVzsoX>sxQ}1}Yt^yKYWgR+Yhva7h|0`l?XaoF`OyJl?%tjyvztof(;t|V36Qk3%c%UQ`&2w2A^S{!#+^8kZw{Z%ly$#wjU^`AT`snJn{(JDpAels6o;yb&?{K$^K^a +I1GorCGhTng`C~IKM}JbrvL#4qE)X`%NGAoPm +>PkywqT>s1FrOvuC7uxl&tUF2qgh?`8_q3lT*+W_9Ow1*d!qVBo$4;)y(>4 +&d?24Hvl{_tnhGQQ)jhd;!XgPU)DV0{>g(<9ReqSDeW +N2}`87fMSL4E2<9)?4VH{0oVV0i#WUcq}Jb?#mY?dd}Y?l;7AzgWv@ffQ>_hBw#ygzRtgoG=wc&aZbb +Nd=}Jhfyha0nHN-$bzUtu}zie=7*m^* +>q$Fvc-{cU@O|4#msdA09QW=)YBN&<9bCz6j%Yue%=hyz)RfeQbzTz9Y*WcgV{BKZ80|XQR000O8Mny +wZ%jaiiJOcm#-39;vApigXaA|NaUv_0~WN&gWV`yP=WMyAWpXZXd6iUMZ`(K!eD|+d#4 +irux^asD*9!_%R_xTMzhK!Y@?_A`$|g#Y21zAQfBg;RuUu*acY2bRJHy%8)i#@#AL{j=h7%eMjnqO>Y%(V4Xl#BX~;=T*W6u3d$zww_w?Ep@+q`3n>m(>oL?Me~sBXwHu +93upUEVxzs4>k?(Q-0k0p5RHZXMKh^3Ru=SupwN>yG^_m9=tKRmO3AeqwhFH0mYJN%{VRk$P-RL=g(l +0HbbERj;YsN1qp`pjCX;y;LZ!}7PEhUH7VhZb(_~2_c2G)Btl6TPS-Dm+1$ZP=){aRy+J%_go}C&5A< +01q4GidOcOQr)&cod=Y#k!>snb2)c3^B1dfgH}=tnnq0eB116)AMX9+91k7Mv^1Na~t)3-9p)LKOOnv +7$9o={PS{8w|*$pTouX>2g8QqnV_vi6)v)b#>#HuQmHPTKf3y;_Oc!SwynU9g<{+s4qRoi^QfktFmlg%%`$4`dGNfilLnsb` +!IspAOPyHDNj-G}byyDrf(LFC#){mJ8hTq?~*Be$lYPO(n6!aDXlYu2bA{R=6#b;h~!=Eed{LrDb1QO*i4Hn`;D0=uIg$SHW?p(D6;<}YBme*>0001RX>c!Jc4cm4Z*nhVXkl_>WppoNXkl_>X>)XPX<~JBX>V>WaCz +lfZFAa468`RA(HGa%!7aw%IJa?LwhG(ekl5hkrBc4FluAegOd=#!Gla0eexDu*kdVNJTx$2~s8nobdY ++!?e)?s`$H(~}x~$(cTXfsJs<*mzy1Z>)eV{F}$4AH18w+ZOawL7*qpQFbBo*BSze~@v@qIFx`O>j<5 +R&6b;cIdrQ$AWQZTeD6th^Rqg%?akNWqYF4kqMVLMz9fiUh0-e1)&!GziTX0MmUCM&nK>Y%N?GEDT~+ +l^rtHbOBXkO@*r>RWB}H0wPzuOf}D=4$CU)2qnU=!i`RH75F-ogBgxlP{mgmA-c1}FLW=xQ79*LLfD} +u9nk$kj{`qGKTPGxL1>2yw%RZhf>bcnb8PH2ErJ<2wojpOrHbHT2u-%{o(3V-PXbpC7d$lcT^xsZtwl +IdOB>#_`gAK4c1kzG7a>k_KO1<`!Qxx#2ww@Z6-{|ejn|fH@J71vMyL@0-dOiF35j{u{Z)htBXm}-F1 +5voC4#RDw&wlAn^Rs`#HJVI!5iUnWjWUb>yx@9eFHm&?ePl$anLzvMFT-IC5AJv1O&*^$7b(cyWgW)> +w!MjI-Odp_wX9Bury}jzX(ZArl6opI8|u-dV!4t;I7`edWRLY%jRvf_rSYvG<&Ujw@Zz7hiY_R>-3se +{o7iH?)#nlcDG(8>I$(mF&i__$SV^M0XYd^NmpoFdMY~l1Kg{yLC>YJ{Z+utj*ws!*$9#8VlN+hfj=_ +m#ger_Uy~e?ALtUzLkaGHeHrfpW$oV*Nbi(O^r8wO+yCOh1zjv}$RVH`UJ!&Ox(t+N(YqSfR?e!`%1Q +NkrApNAVr1Kg>aFW1CY9r(qhT0Ks4QlVo+BuJW6yE;6zct}-bV}W>R7$D)#%j!ZM8es^-hVR894E_Zg +rdgsh5su%O{q6xNlz7ZmsKPx7TT2_Iu5C%j(qdqqx@oCEV2hp|edpW}c{>B_Gv38k{|^o~6{^T=Gz^{ +&?ys8(7Icx`lxpy-01~vU&3&SG}2dg7Qf2QN^F7O6h&y?B=TF@yE3qsU13xjvUWcs3K!Kyk4ds1VatQ +XQ8Aj1cT4Q(a7q?f30@^=ACt2>(#8@yH36Pu6=t=Z>d^2J2wK|ey46d)Vmm~lrJvUW39Fss#ML;U9;7 +^>)&O8o*$WcR}9IrBx;al6_oIXv3~v_XW7%KM96D<;F-7{3C-o>x0&!Aq>hlwfib3oQ^ns4kx(#60Nn +`P=E*{_xEf_`Ws4VDIJu+up{$5Hzp$?cr;nQwsLJMH_DYn1IVBb3nBLSvFk)>u!x1RCe{;Vk5e7^n7f+BkYKMU&!LZh}^pX;kuU>9YCqtsH3J +uuoLJfN|6I`4H`jE)>_?iUu}__3YU*GmdJ_+!x69jwe7MuHJBz7LZ67pgD}{&Cs()>`-0`NA39NxYm7dt{7MnC|Pwh5J#ZZff4C!qL&4wb-0Obw83OB_-LH=wqh}zAB_CDD1>WFTrw)6|1D4WX_K=U$HHyd3cm?gCB +$wuoyKmL4*RkIA9OYxgsKu;+|8jRQ^tC7K*j%j47cu!N5RU!VhMnvBf;fwhm3rL4;cYSl}S3@x=?eR; +7gl*sd|sN)M!uzYIZV&QTKvgiF#GIIEu2~(gk&{56XkY#(>aZM=^Is(BxiN{KKpGn)9 +_6KvpT+w9aX*tE-mT>0oZm0SlHRe>#WpGuO5@;sZl{XEG#JlWk&3z}gvEA13##Y?bf~wgR#@`BEGF~i +}SIeK&U2ePG?dmu;?|pkTV2@n{_oN$lgSa!E^ggbfS>m+K&XcACQ99Lx5DjIhG#R)kSHGglH|LyAPVj +RmQnE^be(r{>UCoj8gQ!MEHNZ!A0TwbN%ec&=heMa;j3wxV1}tjK_;qCkU^ZnO1RE_+`fKG=GF>NRxS +W5xI?qk_7w1T-g@o{lkuB0sYvAf9Gg@2M`)oUrOX?4uA4ckY=z~d}`)Ke8sZ-Ah`;mI*`@(^w{?Pe8Q +V%Nsd!)XsJe|~+mHz^%qnDW7D+Br%hW +FJviSG`I9Z63figs>OYyA&GH7G+fHjiyspU+mH{7ge|Y4yW(Kuy>yQ#c;p53fEeIc-tWup_8tw(c^oc +33o893Lt--`Y8#!6xvOSkW9zlA`r_xD_^6%d#|H-g^*jZY4U_}H&ntTcU-x~p`(uJ{8}ebnm;a}MU9p +$`qro1bxBKr12SlFwoVZ3F6nQV>@VOY8XcBugS?fS7(F!T}3k71PHodIIwJ9;dZ&Tkc8XKi)Nsj8vmp +SnPoJ1((X{uMYXsYk0sa`=KKCkY2C|yV1CS>$;XCQCpB6erv(TCVrrI|_Ir{3THu=`X#^#5PP^G)jg{ +dZQ|KlvuL`wo>Tio0%4iJF&pZ?d1(DgFUaO9KQH0000807gYaRK@A=1$P7h0RIjE04V?f0B~t=FJE?L +Ze(wAFJow7a%5$6FJow7a&u*LXL4_KaBy;OVr6nJaCy~LZENF35dQ98F%XV(sH56<6q@D&bsRfq>e$9 +F9HA7kmPYn+>s_G1&XC+zki`2&bQYr$GXJ?*$=9w2=T~$Bu(0>|^VKnUZ$MZfsj3&L`pvL#AaRr +MF!bI~mmrOuUg$Ufhv-*<@!RYsP8%rKAt26|HqqGo^kJs3T4kfpoA|LS;h1#J86@jh5B>yp56R;f~z; +Y!G{nR_9(;oy3Q>8O|ppjV&VU?ta=T|Z9uyzSuwXx9bT|?*g_Gf~qboZbu1k9YTff*XquNY>T^pv!ku +VPBGX|8`E3&1ne-(kwdTJtU305P;+6-*PmQ8Le;q!N6knNFN)kwyfgBKtqJ-rYhCHh8f1uKNuU=) +iMA&@V88!o<1mJ8^PU*KDJHtUWTFL&fiO4BLTFGJ$n9kpNxl$B=ECPbV7p8K=jSBmI93`fJoi(@|+F2 +?=&90rpabYa?^Erz}2s5^t{ayFgJ`yRj?aWAnGvr6Pb;)o!(ij)k|GA>M(`U{oU5J3^bhP@({IY3Sw1 +&l^ymt0gsq2xNvmqJQG?|?@jm2JVB=F~gXeP`7rl(N1pYWl!y!A~7>V)DD763i)lz$1bl2&Hrj9+a`p +^|?#2?N6Of`=;}`-2qt6$x`<~fBg8)rE=A1L|SdZLm5*qQ`Ow)Oto5Zxt?2UqWnDAFm2H8=!DeC{d#1 +aqn)P4Mxzl3X3XCDq*c7jj+#e~G_y3aRG~e$$|cTGX_1?MGZt>)wx*#N5+8Cf=1e2hc5Wq1R +r4bck{AeqADwzvr{SQUmyuHQYn{_%KV-(82G2oP@2=SbrT;kNCM1_u!Z|ij*`hE1TwX0sAcIog7_@@9 +Q9s7?&5ihZ-`oADi8i+0U*$InM53trcP@D3 +Y3g^h%&&FG%rDOk4777nUO!S)nIss$ZW( +okuZw7r!&qxRpmun#ZO&6znTCbph|^mE+$Ztypg`S&kq5;o=;pevGo0nt**8mABNDI}J@Ek33M+@*Yn +X{&T-}y%hUnz=V0n0=YR{AcvxzI)0&bcz)|Yq@R(kjH(yl{G{mblZiXs_&J3N%nREfr_lCpZwvc{H7O +w4rM_uTIsWe3;+=c}>lgRl?Z2Pj^iHAHYw`(k6|b8gKbSNyi}=`ribZ_>v8$wz3zGx5_dr3izuE$|P-M@doOD_3bl&y6-GXc!Jc4cm4Z*nhVXkl_>WppoNXkl`5Wpr?IZ(?O~E^v93S8H?HN)r9~8G!_bR6i^l|ukJf+EaFr3bZ^l@@ +M_=8T!o}Zo5VlC)e%av4KM1wdGBvZPI|CCYW(XEn?LZ`U#*Pc#AMuEtLpT(Mdh&pFm4PzxU39(P&QAB +YfG{qrhM^r<8Dzen~5`m-5CRft;G8wBBUv&~|^973OCf4@c*TTz0K+D2td}+$ltSc#CYMoJI(4;q=P8 +TYUiaXSgBAT&mN;8oP{U`z($skslmdhORHPU7eCq!4CexMr}t+d=wo8VzaSxh%YwvLsNn6C@`^P-sV< +6XQ4p%NfK8p);hbiwF`S_n$xFnfaMZ>flL@;yab1TwYufmBAG3jP{vyx+uu3=2NWRe*RotW4-lx&`_3 +^p++fMJV)HD4}8gCSOL<$K#3gg-Qi^DJ6WCt}7@hRqR%&b^R%&< +|`;T-d{ICh93yP2~y?yB%g`kQwAgPSnHIjorpb&vRq5NnmC{IP0M=fZ8EPWX-F0XGF)SrH(Fa6o9KV5 +u%3t6NBw@9$nBsWPUp%_tVPh|xhhk~o&Y;cJe{g30xc=46JAB`8&;e1Y`>lyXwraxPZ2e*^{jBajcH` +nu_gX9Xag_yxS2J#N#5Gpq@kVKPsGD>aeUyvV~3=Qug_ +q2ct?Pm<61*%>m${S?J3G|g)J72ckO8tvo=m7~hb;~O0>AvMoXUT0@#e&nSf4e-)jWPB%dBVPU&?1au +eBW}#g>)B#(yKonmvmw4rKGA#XIRE(FUI!v1*OlN0*KMRC3R|dLwQ@rlp?=>_VddLVXl1ko?kqqtgdV_4->*_F+*c#B-`nVgqLQ7az2HET?P21T;*||!oUCJT!F^L(vK<)n# +ntfJl{@Ggad>kjPe9W7_h#SHQjZHIF8cmglCh9g9Au?Efb{iX)XOV1u@e&4?P-|nXWSC9IYX%77o2PR +l^gnXf!L^<>=L7C7wwi}$+@XC*J?0by8g|QN?XUMK- +LIqWD)(_L9XpI0Mp;5P0{+C+SzOD{ml;=M$T04bDKBmDd2r;&e=Tcegy}h?vgdOpm!P5qdeCxHlcQq9 +@ma(1W5u;XxTdp_OLW-)ffV8%?WY-y}O;^QHedn;5UR!x()Y>g%`=`SA~sKMrH8Uz*GboTBzXqSUV>I_2dZtreS!tN-Qpd(X5V~ +wUUUnzJ88s=19^j_q!ZiTt}hl$z=*Ai8-`BwBND4kQ|mb~jmBIB<40jJN5fwZ>V-QPp{{@%8h=FJe-r +scRS_86yZ`WM7+0OG-Bdc4l!Mk(iz(@_PH!FXJ|ZJA#QFl^n*fUyCZ8v=3d^xfZ2kZ{$tTjTx +xFH!5Ro|T(|^xK{mDBiV59)4rXJ!Aegb?*-B4c5Yc;Ldy!7qIEa8=m=QCWQP0Nif^<5v*P=t|o+t51YEO$3 +6MsNY|b~ia(hDhZ^4fNW((s;t1`Q`L45WYFc7jDs5XTTs?fet$OJ@j&m}g9TDx`ZLccsdg<#qK_@@3n +DR5T`y4`7S~IEnV9RD}#)kV+wN?Lz5J`PS^Fj{TOdS=g_I}96=is@KtWcCdjqy+!~1`YrKDF6TfaA|NaUv_0~WN&gWV`yP=WMyZfA3JVRU +6}VPj}%Ze=cTd6if1Z`(Ey{qDcw(0quqx?0>~z?vYyoYZNJB~D;FD1ss|Xz65gr9_XUoO*x#9x2JclX +XUc*2lZYyLWew?$OcV4_$UY_xg0xyXy9bUAnxvyZVz}@I7iA(P+kWXXI4oLeZ5@n53ml|09(Wkv3C`V +T&5IYcH2h!t)a^Sm`+%(kZzE81V12v$2>nOj%asG8Rti+~TX5YZJZznC`VH?Xh9uIHAchAnso!jK`WU +an;OG^Xi1!A3y#Mh=cACb(Erk_q8-&%VxnzS;>{oospBmY16bPXRr|63iF-rrJ5R<(K|whj-00ZrJL! +zsvp!SIWfX4Jxi%!CaY8TjKt1qsSAolPKFa{OL!3BNaV?{+8{pDiAm&elv_`$UFSB6O_*AJ{!7mN@r!FW6XE=zY|#Z>tbnqzyHN^ZBEjb0 +2tuq?e@74O2%(2Ps%rnvl!`>j(x$NEaMvp%G>)xo}9S-UGZa^Kn?+ix0tB0G;fbJg#_jki?L^Ncs +DfVO@B6&q|3dl@@$%LJd%9f=+qP-Rgs)S}@!Dw^L5)(xND>7gHuO2F$PeZ*3Srd9rGNoL*7Cjq@*}?S +fbr&e>{RGKwm4ZO^YtIb>8*1gV@ve?e^)r_J`9p(Zdjymp;_(fBH!gIch +Y}DZegCPoV+RMk6&kqlohYvt6Ctig+e-9y$zFqtS?!uwDrg_y=2c-qe%7ICj`ctR%g8^CtY=A?tl8E1 +f(u7)!rQ0y}^M%YPS~$7SyX%>^VSE|f3?Yq%r=Zzg~-K*}i3E_#gn5LNZlwpMeSGP)Zkx%Ae4G%@!gc +5n<>+i8gf#zjn&-zj_zQHU1gWX4g@&+UMCCh{qRBWE|@Cc@%kEGx`3H@uL#u+ +0r;@SvVJSYE_=Qt?}(9=Id+_FkUD6WfF!=FDLHEdpy3D$RYIJV0)RhmRSN>~597i-2Qd+(c#65->P&# +z`ZQ$(QUoo8l1X@GAiBusBs3A!7!Zv$nnCg=3{8*;=T4^5t9XFB?bc~kdF6?JWZ0G^x;?(v2)l!`n_e +kkV13Rp0^)iZeOi`-wt4wuE2lZo!r0~IwCqFq#=tw*r2Q9^X|2SVtcH`GXA(o{Uym41lL%6Z2%q9ET% +B=L)*L1k$te~|)kK+Pc!GT0xJde0h1EXe;|^D)XQ#H3v^C_Xdba~C|A=AstnXv*#;*qY;UE;1g +EPqrf<1?-w9ja6}_!Jq9_wRQQXyhlMX))+beaHV5KQM`e56dJeID6U^tt0ssK81ONaX0001RX>c!Jc4cm4Z*nhVXkl_>WppoNZ*6d4bS`jtl~YY +`8Zi*P^DCajg-BZpiFzsRVIh#LN&vBoB2JOnoy}S`HnI)r{`-y>2vw6vtxuje^WJ>f?e_Zz!|`1*!!# +L3sA9AH=p>ZH$ceR&Ms**p9pU$_Q{PG=@s(yb`u(kc5$uv4wECX$4wVNe3l2R@fSREiDn8Dg +BGEG(c_k$eClQknX5YkRC!8pN(by))ca=1GLu#S@??J$!;A?*%)`T6{h4I`|e1S6$*>}M#-GXQ<;-?1 +mUm?n5(G3rfztXP)K?z1QWyZ!b_tEAj$ra`#{z)g6nSoob99-!B}*J5A|D^T_9d@(KVFd>dwsWyCb-C +T0rVXwlX_zt71WJ^hGL#4Po!7+^dKcI2Mmdc0XTbh-Yg&#>-_q%hm&q^_5{S9q6bew>u?Sn7gt<`KuUBTaTw-%Lw+4`$&y>clPt&!sob +&kHLurkfvP|y4#aEDNglX7f!yrs|JtE4`nlwliLPbA#>k- +1zN=Fe`dd=JEniF=I`vA+LMa{{5Cg(ALiwpzX4E70|XQR000O8MnywZy+WEXXafKMKL-E+A^-pYaA|N +aUv_0~WN&gWV`yP=WMyf&c5WV|X4C0FeING?o1vU)|tfJVd5r09lQRH +OM5@i#mNQ0yjsK0(6CD~3|8`$MZnwj@F^JX~R?)gIx!>93#CgW&0ONR6?nMcobA-3D;(sIXXZp2n7CM +nVxCt<13KZTSm&}K_1Y(eJ`I#$97L_YFYF7=)p(mA;^9EhKBXH&N4Fcn3qM9Q4d%Hr4TwW)tVObcxqd +uljyJflrjGyZ-RGoEW-;i{dZUUW@^ySu+ZaW*`lP)dq@tfiP+ZeDrTR1#_BjM$V;o1VS?0t?ZUnIE(e +a%)6EH-rowIZcbo?X+s^hcr@b3^SEiDL0&x)wz2^V)s<(l2WF~@J!f-9zr-`D*Hnl;0v9Jyz-_}Whlp +I?YJrILBprniYDA5Q+ncx8&tC>H&UbkPejU<<-{!Qz0K}UN{xIXNt+0bH0Wz}?}-ce{oSwJSXk&&FgV +=SGWJOu>M`f@M>qE#c#WhhlIVsxAcM0KoGQ&osG4>M?ePIZ6#9lSq7A3g^1PINFd&w`kC)%(t0jfA7y +2H?aX4GP+#?oB!;AhkOrqFJ0b*2Tm~s^o2f=h0N8f-5AI6jM^2KLA8ZT$VB%#qfrjQn4yc|cXNf^^&6 +))z=Fd#}eKS=DwJSXx|;vAHPhLRa~Oi0_5{(|;eBq%f5u~&{Zr(9s7h~bIstN+zQsnxcw7m$;n_at&s ++V$zp2+R(q@3-!P<<#FkhCU7Y^m%|FrhZ7YAOU2^A~(FFzRj+x^?_+di>{VN)-qUZSWog>7as4R9wi^IE6Tk9}x1xt5A@dGldJ&E^B8&3-9BlY6$ue)_JT~Fta!%3&pNhPzkF*mT@c{Z#IYzxdrPV2S6(p +j&2mdm`g`(sP2pWZvFKGhMy5paEqg`-tqjqJXjsk!$t*Ao^icD@{bX_EHOku_IC7e9{B{pLBw-OU_*X +iYoG8~%>0IT%2M<~cW9x!_}-?Kx^&d13*}Cc|Xxr4aVg>(IRKs0q6kXND +UR`34Ol?cHy@-CsyJqUD^Dj_K0|XQR000O8MnywZLXo%E+IiAtkhF5$pG0Jn~j}zk^19z;y@^?_OP +qw0)FioKl9#ru7PJIiS!>`>%KQZj%>@u3xl#qBgtSD+W$VoAbUyPEH|jG6-{IOyUes@twpAY3=ppGn#U3f02H59v +T~gq~To^3=8(JLPz{>j3@QN0e?{;DjMgg~;7K`~YsKFto#o|1c{sRlV$V(zNnfh$Vyg?Py@9Xy2Zai} +bEM{Tg`t^3lZa=zHx7x3@TdR%3ndb(z^35ti7$p72v6b3&x?I2Z(;mLRhNKU0-aewJ&8*X-@!JXK?Lg +6_eOjnxF4tewDLe9ppLWNF~P!*Cu95*9bT5rlCvId6;!PdB;5FCw&mU|akA3^a<}S$yi?*( +{tjge;E!CXDb`i84h$e@2mSl*;~*Q#6Lvz~FWk@RZsYR!RuSaN$A(c`~NQfyW5-buvHlfP5CVj^B|%m3+(L;Ru^kDQ`^gn1<)WpRip~ +Qs8*daSMJTGDvm&H$Ge1n7{s&C2ZBnK)Okh-8I@F^A?x#^QSW<0dZN`}>D=8N$`p7>kDln*iuL4(o+i +D}x57>RlGw;Tn$BHa&Eu_=(sup;P)h>@6aWAK2mnS!LsSHa1wAzd003?e001BW003}la4%nWWo~3|ax +Y_OVRB?;bT4IdV{meBVr6nJaCxm(ZExa65dO}u7$s5#66ZpyO3kH_N{G4h9dELUPH9zHi#>)_%`V+tl +5)Skvwp!in7iDy{sPR-JUjEuGlMTLn;*Dy-+5CQdqZ~`xNtX~4L`ye-^oWm+QSa?udjb0h(>n@25Abu_0`~`M)iboUdd1jqxf=Xq-yKVTe1L5nEDImJY6Zifj2 +-I8ZZ*(d$X3JsGq1w`BE{pw=5+J5wuLqGbMHdd%1&%2~Zewox>9m2AGI{l#1dvGUmzNnsy?la%|QH)k +c>bzMDS47&T=I?@*wkYUaCT$|DLM^9Y4TU>dg8rq>lyBb!K2BmyHz@EN-|fSk_l-A|}AS>Vd)m$wy&U +62ae%-H;?n_C;$p``baQa4l?=`>PMRT={q8SI+4r!NFZg+7yvV2QBPnC#LnA&@V8@)qxB4+|JfAK}x$ +_XpF(;|=)|({xJx%aQnIn{ooCsuUAuPl*%2#Px^oDPnNvjlIRA&3@!9rfv|xXy(HJ<^zA>4Ijn>ALbA +Kd=|J4K!8|MY{_gQ`9N_(kQ+%%#%LH%bzb@-wO3PuX$))jgw*B;IVlPljmUQYO+8GdSY`E6NJZ!k@C1 +Z3U3gZUv_tAU=`NvE{q2(IBc}^L_sNNgzfx*JK;a{v5cDXOQgz`@YGYj|1B&fk_4~ay{hxY$fQNuA=N +@pU_pe+cm#tQ!|58l~HU{5CbNfCl#M{`nmj +hR^O*a}BHC53juf|p@bXdamTDx-CzH)VAD{qJEg2`96AcT5Zhv#Z|K)o^-h`!KI;EogWOzmNXGuhVL^ +qLgV3u8wM@w`;#>=U9M?i;L_t8>^awofu8hy0GgPbhO3|UI5z?xl~>zQBo&HhUx|s1*3VI&ouH#s{xt +j>D~%et_1(gmMH?}8=1oOnp6TB|K3r!y-Qh5X9Guj!pIDY$0&?lS|mgg?%^Wmkbd?h#stEU(*_R1w#G +E+(((|iFv%KpJCy>9itVF!w4K{83F?9k>^KLUV}zscoeGEi3oV7z-dp(N&%+r_Qg(b42tT|Kjx&7k(c +W;wz?;m+-pF(B-`4tEzrZ2(QN-<2jUFqi)A>G#Qym^5y{eiIgZaRg^PM%EivC*@_&D?3!Sugfe>_VsI +?YJzPe>?XL>tghzpbw7K4Cr-7>C6&`ifUtRM6~}ZK%d0Mblu~ol5<=Aye>cg$!IR->zhSztQR=I?evTc>xv*w!xRwD>OSL&Rl; +Eu)OzmV5N5@f)yo0v?q3JMkgrc44tG??_F_O&$+%n*fG_3#;ez>?oSZoV*M`nhI(Yw(fygetggzlI^s +9Uuc)UcLHnmtGZa!ejm%ZnAkX|D4=-k~LKFCp$<6Jk)09m;^0xLO;JCg&^UtMnG87|5j5j(r&cK^n=r +?+oJ%1VS>n-$}lR4aRVBq-e#+l9*;lw=~d92hd{=}31;lIL^w+QHp=Ip+Z*=Y7Ky$`*`7vdV$K*fDNJ +XKy{@oLyU?R5j<(aNYG4-@)2sv74#Kl&F?O9KQH0000807gYaRKW^hq7()I01hbt02}}S0B~t=FJE?L +Ze(wAFJow7a%5$6FJ*IMb8RkgdF`2PQ{qSv$KUfQy4DwJ6>t!q*SZ(TqO$T-3D%bT#u~yzQX3L#65Qg +h?z>+%Bny#_g2?J!30mlM|9fV79{N||=!k#8dGoT>g?6ja>>5otZ}%G4kl=fiI)cGiLQmQEwksTHcq0 +k64-@Y%+i^tJQ}clqE|^3BG3qKXG7ZF!yF)3Kx_d+5R#-CL#dgj{fiz +>L=dFw&v6{b4NHG8g(Gm#E)`#*}Z|b^l_wcDP5^>HvQSqu}u`WZBx3w1mVM!+Whe-7}Cj+NtjcseEh!Et`*e3nQk%Q*a^z8b7Y)l!T`^=s7sJ8Y)s|*%Yj1Is)5WgdJn<@ed4$6a9(X2!; +}7zO-ge8Y7@Dd}|G^dN%{8cW>caUDxZ~!R;CPVy4lG>$i+#Po|EIfpJz!xWOC;jsZGNy>W$#`gyC}8r +;(8FIt0c(=gzor$Zh3b$!rk+_dXD^l$Wj&uC@=3@M`&Q!=?E|4OliAtxSYawG#`JN|O&x467M4$v9FS +UgBvW>ea@qd?#hna+1wL&tOP7xP8QDxqg!Ti|*@8h$Dp_YUs9jn%~{tMyIerZ=-`DCN;fxIY|R0t4k2 +wuPZD9M4l}IQRU3Tsw8t=Cpi1m&q4$d4L-OTasST?0(tu5;;nxEagogE8Q9HWn48nIvrt-ZC4rrZlYA +`>ib=zZNQ&!lFFxZu{Qt?D~Bg8S4rhKTa|1UYs-@^AL;UO8|m`AP9vSh_otCg<8=kn6?k2NbOl~lBwd +l$6-ig*btTf3cwLEfC04v;+NV*}fGf8LiI+JuJuN#qW#Op?+8}T|xI?3xK=_IeSNN4dni*%NiI$fMbW3V`k> +!&np4DjYm$C{eD-qTTzuR{7c=k1!7A(ooUjqw6Sxm(h!2Y&XipEG|}|$Y+i& +^-5~tQA%9Fa-yXa`$+1en!)Qd*(0>XKa%~}KD1m$tFV1=34QS%+@*;sLPm?u4WfsB*KT(2kU!c@IzxC +n#(u){)w%2RzBJqD@%ORm2;aX8#L$t)pJ7=G)5}?|UZIyIOr%nDD{p%EG_3VF#()Vk7V6HCZmhr9s5d +pPn2_hEtM8f1^Nd!=Yo9iq9O2&2#63A4Hz-TKJpLz@Y8gE(r)iDuuL`fds|sH@P=zo44=Vg4TUg<>bo +{+u;aOW);W=AW;aOW);W=AW;aOW);W=AW;aOW);W=AW;aOW);W=AW;aOW);W=AW;aOW);W=AW;aS_N! +mkcxa-rv{`Y!coj~kUK^t+J4ft%PO|Jx8_dlXp~{a1^-ONyT7gu@}*-mAL?8Ko!4=-|6-$rbN7QH5Nl +a6le^`81+?q)^Qi9^H4(1KK*Nt=*H!z!oE%4K7N+w_2iOoZ{AR>g3punJ#I*i4h{gLt%!LnMQXL@wOw +qul=1#FRDx-fw*5^vaxf5Jr3g`$E +t<0Bb%$cl-5Leo-cp-CmdV4zU|w7xoTAqYK!3ALz;6b;Vo;xgd5Y??9t5Af@a4Ss-14*tS5L&+SH}i; +A){k#5X+dm{bX-;PMXim7;nq}TeJKYT2#*;Wr9iyJXt=iy^1X8U;f_<^MF4@vP*z8#W&e9L$Mv|>PX& +&=)1hKGOJxc|3@3m%Ofi>c!Jc4cm4Z*nhVXkl_>WppoPbz^F9aB^>AWpXZXd97A +|Z`w!@{hv=UYE%_;gbS@sx+d!B2#|!9U&2OJR7KWe7TBxVMZ4>?^wZy4+Zb%1*Xn9T3f_J5X6DW8tS> +H3KXlu@?+vNnYj=lUmu~x`_6ItHy{KG}zv48~VksnxsIBIlgrT+iCZdQnlwMMZwMJzJ?MYz;kRATaBe +mh0)Pn2@4&aB}nviWcme%W7ijY~Mq`|A+D4o23n8r${>!Ie%@;S}63FEOVrXAO23s);k)pm`VZ{Pk2i +j(jLwW5e74r^$_4cE_no@UZk(rPh_t$8}bxX0FBOMpD<$7&)8r~15)aM3~(mj`4Bb#wNi$n< +Hz6iNAoS31FTQjS@Qg<#8FAIe36zCImZ-@)*JKxV-8?4alMsw#aW2}?XRAtu1k7{n5VGTiVDMB^$&a! +b*f_q>Mc^P9bSLcxShQ|?{ht5mqQC3;!>;Gi-DpBB8n-5XuRZOzCN!Q-#v`xWAo4ihN$kWtC2}tD0+ee7C +Fk5S5t%ggN0iqfz-Ue@_RLY{kPCDaF&vT2_NQtXDY;DYg~?vf8xjkW%GT+N7U&&x-%)kJvafF)O&>Pu +^hXmQCO=0gfd}(Du>kd5q?E4Htuod@2QAoMy>2$IE}L(znnY6%E9V~S4m&?ML@p|og;r~7a2cbQQ8jm +T##+sUTzVEw1m`SV3CWYU485L(E2a&%8z7-pW;ciqjIex*_gBW6sxoTgGeog +tmBg*vRAx5Z${I0#%E#mTV6-3z$p!8;bPqyl%(N6 +SaTG9*nzI;D^agHKlav8JbS@ZX7 +!z7}3u}^ft`8SR8cFMqE~N)B(&rxKbbAe7Me8+@NO38@Wlkg;pxx{3M=|eH;v +l(Sh-kVGESIPIB#oLKeHLA)UC%UiE;sR$#zrE0Vk`424E_G8s*ZdF1tr)N+Zc&G{@|R$sj|guiTRtZ> +P2tsxFBoFv7U=2iWO=J-idI4E>I^OY5@PNH@?np}m$5!V=w{9w>MvY6qU=5t|{NB<>7&-XxeMvK$l?? +%&MC+PXV#J}g`20eD~#0t=N$Ms)A!Z6mFOZ*4QHRrK-a4Vdzt7GbYc9@na$EW5K9OdnF^>p6o=y>NR> +42}E$A27I&UA9<{WKkq4F67!r^DSJ9DIB>uLb=^&8Ht}BeA+|NED1XA +&_cU+x_-Cq_lEb^fJ+rGR{=hqSk-;t&dYhFwn;N9xe#+MLk{F$X(ZmmXyUi0e&9b$x_Ie +#%5!(0;`h&J`7+oiy1xucQIu|xU49O+KaS;`ONr#xSpyWTPdCL`iY)Rq`&vDWrC#8!RsID~O9KQH000 +0807gYaRP;dud0`j;0O~XV03ZMW0B~t=FJE?LZe(wAFJow7a%5$6FJ*OOYjS3CWpOTWd6k-Lj}=FfhQ +If(NQo~-YM9EXtV^!7D**;iYcQ}4XypBZ8aSAvY5K6I8++MbzwtZ;_DW`?T_l(LRAoj+#^sGm=B-=b{ +#Wil{PFBbd3^TZ;gjbN%l*esAN;NSld-o>Zj~4Bcjf7E|I7aB;<7wAyxo=kb@}P=-}}qUi~RlJ!>6nL +n~R&nvAnt5@2+mjn;diZa9Jlvxj=PJS-P`i|vlRcl)Ws26A3x_(?{CU?4{n#*`*K}oGg5nZ-0jNs;o +Z$|$=LVh^Wjr@b8%IUySMx6jeH8?rd(XT{mbE)^FJKk?%#dp)u*esxgEH^*&RPzf0f~nPhOVCyX)k%{ +J6W?9dkF&KE1x&zsbpu_iuJr*Sm6YT|V;e`u!i0dITfSzc5lB9g@7#{l4t>`JJ_Y-5syuO&p +o|e@0cNaJCpW6J$#M{aA=W?0aIDVaZ_nRX4W2bM+{z|g%Q}+2s63mVMmS$C6@5-m^-Mdehr%55lmcO6 +9`0LY`FUq|qKbODXJ3qho +0#HRPS{%c=@)xzxZ{RYJRiZr$v>Ebdisr|6e-1JY4-&>-lgc0ZJ +x!y3bN94NH3wZ>{o^uK@I0qK+P_QEk1h{~<7v5nxV~ZNPxo@}5Va0>>NwO=UOvw^|Lk9R_~eKGBdFXu +Ny5)BP*(2h-SP0DT)ak+G5nPF{a-ib1BR5od7U=$=JHeG!)5L-5#Un_Io%@#_~GLxjO}Lk=Ka;-^6<- +Nh}Kw3xpU{=%5Zn-`8%fh>+c@e>{J5R(m+@{u?mXGe4gPuVRStrmoEYOY+{wRhOD~rG#dkh`ObERE#@v&Whc6%e?flh?pP!vQxc +B(g4`w9}K)TP_9f`FqMSEl2kOz82rX!Va$X+CKj1kWJ>z;_Reuon4mDj^$gc@&RuidNf~8sX7ub|P=Ld-c0`rSw +VFa(2Us5__6Wfl(kd$Tk(!v1&*YX_3I){4=cOWh7F`h4!b*!e@?8>~)aU|zEo6c8;@r-bS4>wu=H}Bx +GzTo1N4W15Q(9Dil0p5svE*y*%vhkhV%T*fn9?1$mkmo`%W1?(u(L=*^ErA_Xqd=6LKU-*0fD2ur4F# +ZNH7`cnBZFFhIxHpGy{?5gc~eyv-IGDKaoXeMu&wC=?=lBhjqtvTyJFG9lm5PN7vL|{)NzBZq1$4Ath +B;e0fAt>)<2pFrOoTHXg9KeVKVIJXW;T`Kv?P?WJhi;&KeBA_Rue@st&(Uu%*9Z3?U8yp?yD7JJl%6i +6G;7W}W(X&_0!LX|Y&u(~{6zWN0m8n<_;t*L`RxX_xoQy`Q37K2gJPSwrF_>cmRT;N)_htwH5GLM +-~|wGD07p5&INKW$rLLE|;5C%8G(J(w#N|u_zeRv;-ibRSZwz)~5p +KFpzkO{3D}-G~cy_n3>6HUSPZD`9sNFbYhcBo7!tU@SPqif0yVZUtq>R7z;cx@~(EyC +b##-tqw+ytHbkIwI5rQS!~)!FX@K22$tI +wpELQjc`X)^R2@fk1ZOQhw3S7 +k{#{Xo*9w*gzsBCIVGuxVjwl-Pj6Z*HD>kWkurp5LUDzzJdpgU<}|>=H>?s56R6F?ueaZoB087CgVbu)`Va>)=`}lJSxJ*D5aib7c{ +=46M#j)uB7aLQawU#%0lwYHb1OjvxsTlWT77j#+N|PAykg?x?ln0RwT_RD_UOiAq)7via(AWz?6IA^y +F}TyD8nwA^u$2BrbMsWU<{#@<1V4z|W3vOpC#)}{&cDI~HXe%94=0oOBc>Zra$s{(+-Y?vd)qt;(hr1sSL6V8o0+bRe^ +vA9ezN2Om42*e4AZRjVHI!{(-3WHNJb2BOD`I$>u3;f5J4NB9|av9n`(j~pczTfA~a_+cVx{@IA)4FOUK8=osFDR +1t98(7Cq@2I$f119Vb+X&4Z3?h6<}eT=D=1Z&68gJS$PK1h) +L^;UvPgzy4&4$?`XZjgVI_$OE4vbyym7;wSnova +|GdKsHqc=AduC&=E3lj$lU@(G=fu|HATmeFJ%V0kFNQ5ZMyHy+ohO`b=3Nbz-M{Gbz2v|+NgKBgFHby +cz3XD2nKy@|rsVKS8@JQ)Zb&?4^3jZzy&%jCYkx?(7jX#Z>BuggtrsX+0Kaf&vf8o5ya1oF~GKhxEr( +tbWpJ|66_MEcG&zPwLD?C(f4qAwz7)u-DGS1`!>?V>&z)=;F$!#i;aSI6s)KLo5@#xWJL`+s?Y^wTIs +w^BVoaho{>OtC?TXum&$`}lN5)2>AlVMvNxT6`PUhk8yF1%FfvPlVqS|GO@zto +#mFvbvC=3R7FK1=eQpGq7f@|%fG+{!RU9?C@9-XN2P2-1jym~b&~UCGh}qblsZ^{WWl>#NZQ2uJw?YL +g8ZKJxnOIxcC%`P{g*}=2!(p+K8q8j>&}ync7_HrER}>d*oQJFxn(A+&zkl%+Psu0ZoKO;QTv)!_ZK} +Q_D;)g`MCDPpdO(3V*P@)VWyNfoK7?U3jcoEk3N|CY?P0-$#f$8eG68&5SDJlLZ&bjcHOyxAVIxQ&V` +pHK^=x1wB+LmSrVlKK4NR-ckpgRX`8Bt^DU($eK5vf1=SAHjuLV6~f`u(lcBwY08!xmc32b51DYk!zK +vp%2pAq(g1k|J45Io79f~qX2bb>-8C>hGSDP@J=%48i{?ARcO5B5D~kr9G2B0+4RQZ#R|Ed-Vsf&i># +Ow$O!6Ct{8IVlMoekRXH@HDkhmf_prjJn^8+HC+$d_b4#FZUSW)e@IL)k +l3fp~n3TmYxnGZ5k*Mlz;1gtMVfI!{979K7KX|S%QCq~tmagBUHt1>!~E2=r8^noh7B4L7t>(M>QMJ$ +FiMrHtHl)*_5B%@9Vs*_^Vb+INPrWos*cxWN*BG??MLJ&NoDjLNw5~K?Hq1X;Re;gofoLQMCPNSYF%n +JPq)@hcDQ3%&#E~Qw?aFz#Q!_n@?_4E{C@aS?r;AZ5jY16i4@X-30q&;Zh2I)#ZAc*G|z;0YDj@TnXx +1yea^+H11W~YhqG?i>iAj2GE#~F#(6vd{^_?yLwDcGz%QR+`F44chH8Nq)v6=XTu&OydpolNgDCnGuQ +E$KuoG~Njh3cym^#m+1j+13AIHHjhzbm=3KICLZf|4QcMt@hs;kc|Eac=ClOQ1nhzsI +CRMCbscHZ8xM_F2+us~r^hW>?+?2#F6$-eR>AsG%AZOP;nM->ey3Zt5lkN$-8YM%=}v@BAvQQKVQaLZ +Pqwc4d3#L(C>85mUnIUTr}a)l~!nU+nm$!KnWkW%6cWft2&7r0Q3 +oyNBV??jg%9CA-9V+FWmE9Ql`Q}Wj{ta83|%8e0UF*cbGf@9BO}i{$tRwIW@!8ta@61iAY#kNz!;-8n +LGXw^oD~TR#*N!~XBuQ^76nbQpyL&^gn~v*Q2E!keT6irL_wJZ0UqkJpqvWw +;xI!a+J_Mbkk83pp1q=ff? +NfK2oR+G@7S@<0NiJVGDdMr~ +w0PEml5WRO~91WVg`4&<#(^^oPbQSf6VDg~$kln2>Fgbd@c975y+*9(F}AtfgMmCYthKrAQ;0itD0)= +$=rHVD}ccxXR?^Q;_V7}eGF@vE=@hZ0F +AYd96QBbgl(p0sLYmIgz!hipE2P+^l{^QM#V(WIc?0isCUS4?>ldu)x54DVoR+GK1A +=$ZgSRLaiMs?`& +ba@M@=h6-PU}#YFJ15ER(NINgFz4!U;JswfY})9SS23|kCg}T#lDk8c;EvFHYl0(yKFXm4!BLJxf^JFxT7l1pX#mHrT%5q-!9!0XX~*RQM=~d}F$c03sZ8R=?Nke+HRY +y+BiBs6fNcWTI8p1Fy^LmK=F`OGQQ44(d1_`RN@qIFix0D9q^Kl@nWF$A3x&_{YwKKZ5;0+P26+O|Ajs+~lC`hZu?a9Z~-%Uc#9oN(Y5qm`x^Eb+F`>`dciXCULKd +y?Rci@}XlM04)8Ig=&YOLfpEfk#igM-Lb9l-N8)X(9|yz&8`rAyz5Cl6EfZ$gnF5Y-bWlR(+Yi#|R#d +9&fu9H3I@+2{9^*tq!u!>-I1~<#nZk0t8cs+vXQL_~s#~6UU?*m$RrTAL@f?g2lxA9`MO3}QX +A5$VC6yO~#TW^{esQ|&+?4Fe;NlU?>>`Z|uYXYNPXuGk?U?a#~5VWW*!`z1AG^j0$&4@227?u^3VWwc +StJ^;!JJlaJ{wQW4)L7Nl9?3>f+SExo&;BGOHg4K*X-?K?;e+5jtJOs13G%0CwBLlmgsB3p1aYSnACJbCk&*Z}rf|8$n*6 +(&FK;bUF5*du6m!q%iYXc=*AB3}p21+uDoMJ8Nx@)MN5|*_MZ3CrSxW_+R0ISl~E01=7_Ai~x@|87Aw +cMXD@pd5dXJ?d+aq3*TI%}vMP&P3 +2p$_G@zqDfiX*!L3D;=RbhYShC@>l<8;?9RqRF~-U`(dR_kRO_VZxN(a%htpoQ&t_)Q2X-b$H0xuMhNQP4z=RqX}i{Qz;I4X{c}J +Ge3x+=R-9-8m2KB+W{In@5?&GhvUdJf5{v=@zXWY+_JUh=F>T#z-$4)$=E_NUJA>uOc3PAI4Hitq=Z{s;T62*1=h*3l?E%;5Z={N7IyKxG3+!@oZf%Ru> +09P0;b-wA*B$=Ba>)O;NCVX9C~ya=^^tBqx-aeR)Z@OVH1 +30N9&t=nxiWPdm4xGrMz4o+Qnl0L6Lx3k$sUhk2`I@FSu*)ZDE{A8%45!_`e5gNo8ck_DiU!kUK>hJ7dZsI}?N*x>8 +>X3+YpI2z$mC4YQE7fir9@!tnljje)-iOXrI(0&Lzk%2T)uy6MXtJD3w}*!io`lZ-Fc$fx$z@ +SDrb_21r(x~cmhPzG({xE=c3?_Rtl6TPd9_k9L-JT=tR0hZv~6r|b5?5D5J?V1XlMYxQ}=;b!r$Ee%G +SX`pMu`;wgY09jHQn74S#fV+a%tCbWIA~u*b~cq6FtkbCP-oyMgxj03Zr|!x+(usd8LYstW|f(zns#> +ukB8aQZ^u!Z;46izde#Hw@LySRav2Z4dMWp4C3f3GQ$37JX*Xo?1!VpbdV%8oW&H(51h62on0cLJJb44`l)9p)$sHsc)QbLMI_|??3f=_jkQN?|V +ec1eR-u2Ghs?xJ25mR$)y^LAlB{!aDX_YgVWq{c9f4q*7k?YtIq93H$lZd&t3dk$UYsMy(XtMruB$ML +SQ@cqV(#F$FNExoc+nkT6(A&++3sM~HP)JFKD;J?F|_qSIuOPG*mTajVtJlyGiu-ZSi6CXRK1ZGqV+C +`~1nPMUTctKwj9j;pYKI`5#mw2KH%3Ag81I1VbLVE5%h-JM^#e#m_$*X8(lxy5SqFz&4X +qIV$g>r;`3o~Bxq{IO8WzOtHbaM#^)d~*##3B9hw`fBBaV~Iqm7U#=CdIX;&+95uLZh*z0%!bXMB3 +vmH5j~G8w1lcvOFiK=`KvkO&7bmF=DQM*7HOp9?9O)3F^N;>x`!BA2@8-Sj`FD5Q=a2V)y?^uK_4d)jtGn&~?e?dK|9$`Z^^5rZ`|p2zbN}+iy +NAc^7Ma{bzUY-oAYC!`=Ti?ES-=xAE)a +4-b$25(95vJUq_7zkIxV@$T-`_RY_Z_|K1e@yJ*|{2Y(^?%npQkAA(S^Bgh6zr6f|?aAxc+cU0xyFI& +md-wSFyI1o~K6-fb?(zPcALBKD_4e1ljlXQ$pI$uvZTsT>^geUu~b>y^Wb}f4qBh_ZV;U#gE^-zJD1ve|rD&?#bENz4e+UtLwZ&UKzIgNQ=a_g5@TZTTee~~f$CD4Ae){zJUzq(TPoIDG@t0q2pM3sod$N7;tL?iNf4_@uet +CBv61BYu75U-k|F1oK{qW|mzHi*}j|KhRcK_}6=HcD#_S55i$WBP#KkaUe@{j$!4WWPe!R^*kT=e42- +(JTSd>OZYa{p}%{mJWxhsWFP!-u!;xb#m?;@&-{w7;Lqp0@3)FXJ!&)qmT^pZ($g(Wtz469a$z)kn|& +j7I$Dk9TighFHG%=Jnmwv=AV~cQRe{uiQi#Pv03{WV^i^rJ$7je}C?-qC +d_~zyP>$vcLeE06%55Ilyr=NcM;O^CrAH4hNw#7?H|;fj}(8(?YREb`e^ +*ArF{LV*ZHTk=eqth&N3=D?scp`oxP3X)<1o9_hS3QCF)G>8SB6O{u=8yze?|~fBt&=ef~hB^eko=ul +&#Vy@?xRHoy5*t9yDs{`KqM?;oVSO%40`hcJ|{|JCDOe1m%A_TP{-=Ja}dcoX{j_8nUG{f{rd+rA5Hr +)3E{^z0AMZf@L{ub=Dtw`Sj~QJpJAi^y3;m)bZKZ&p-eAlV>0Q&#ym!_J@z3#Rb2*37eX3)7bah)b`^xCf;sSE$KF +__PC8t&-gJi|2l4aNqcopWV9& +NcA4-^4_C?aeoi%SMmYuAN8c^Ok4FyT@wf(K2(2TSt$J!ve5)@wb$nk27m?;ISV!@h1H??=41ZJDU>s +Z^!Vmcw*w#lNU%ar&s`2o4qW~INio8GN~gzJzO3J&iSVE?zx^Zu`@O$estbFcKc*ykJ|VV3wZ1<4lrD;`nj2TIS9ic!W*EOGpn%iz%!nL81Um;|q#_A|5FF_Rurm1^DjTV?ckpIR9%Ha<4+WRutCjTW +1idi;GqV-l`xign6+yk|(3ugD}?2+7$I;rJlt6^~HTdi)v}H=e_b{xajf-)v`$8Sm)=#3VweVx!K&LX +UXGjHJbT#%9H{JF`f6tPZmaV{+$R(R3Qy63 +#a?L3Z~c%3k87`(UvwLmvg(;TtTqpgP|}nS!M1-IZ?!rb#7y!V)4>A`x7 +jk-3o6|hDNGBdv|u&jVFS@h=#a}eLf&iHmmCv+$E9&YkIfJJgMu8$XN(jNV`2y+1~j4$Y|6=A#NXoLj +Q9_BP^;0{_~F2DZM`Yls;oxE{ju$d`#ZPBBSHiam&C0H_7s6Y7>|Qp#kw3wzUq_nHE@Z|J7S9Q5;0k2 +vBs^jY}mPw?RdmsDSS5XzB>rk1!uO0b<1ils@mDcm_)o&{Ce;zjyWol63+>FV9P? ++Qx8cAIrPoka~_uR8u-XJF)>9LjX;@dykczcKq?Mig=;mX1I@v_?=Gcgb89RfS`uC<9&xOJ`-mAA|Bl +WSOhW8YMP|biRbIeXWTcS8csBp)E*_SssvrfQ6C$)Pl`dgeS!4ITV+muU8jr>6%cBaHd!&4GB__usRz{9y3w5;$_{L&c5}*!!VX1(kzP3y<)p!W_>KF2+I+Mp5GFFq +lRw9qQnhHn7A;9UW@l+w|J>oarFQ@iFt1-Y-n@AkH$vrYhVJFBfIR3j^^S#VzZFB;%>zUC&E0iAKCpy +@WOcVDc;NYA$(S-Ze0UMz!GDk0yua~LcAeD63+?IQp0&fC`iU`$GAt|}M?3nNA-xt;Fs&`iV*64|8#?^*HY`*2J@NNeB-SlGglAd +CxJ7RwfIhk|94X=?-x8Ml5EM4h;^p?N(PASGNS8=nZ&O1)G%6R<=O5Q2h&5mH0|I~YAS^uW$V=z&zR_ +{IQ;P%kRTNsQ=HsQ)J+PFVv-z!I0aJwz>GFhV0@J%}-@L3WSbiu>6&9Bd!hkA!~;s}n&T62-KSZaA_u +FSIFCTD6Fvu@qo*^@Z$(9joRCQOrV>y;oij4Efg`H_QPMq8 +r*m(WR@JGRZ5HaB(_kq*S1~wS)<(guPB48n;*iNlIAxX`oB*-i#KVlUEiNUSJgFHK4B?dOmVdJaXT(~ +4eat#~-OIE>8W>U~=G(XJ5j;(1tf{>LhW1+)zp2Xp}z*usU7!sqw-wdVJ<`n{#d=LZ;=Gia~n0$VutW +i#8J?Kl=&Ukl(KD&6@lmiPv0GE}XYv2f2D!LWBrEx$$3@LO9L?g8th!C-bEX5QFoOfmJ#||1qMJgA=p#oT^j55?>jMp$x%{vsqYv4hu(3~f>iadZ&FocY7h$*&; +QEuuh7MI0mDH8^#5F|%%wG%Vrq{=e% +-tL|&y*yykoL}#63pksguV=I9Oi7TPC0WtOqlTa&*Pb!%Rz>w1Tlod!m;>hEhZPii|lF{q1f`9P$70ZrWijuJIj*KSU91GI9QDf%VQc%#I+eioV%~rN% +7c_^BS0drO$+36(Gc#@d8Re_Yy05vRg!@MHIGh?c#Utce)l;9*0Li2KJ!WJ3Lr6c%4a!i*DuCGnGXEIB?RU@6n~sq+Vae=KQp+3pXf=? +)Df46^dXQ%tB +p3;X%NHD+rMR%Bt9klbERZFLo8_%PjtB0A{orKk}&`ElSUc2y3_3QiRc9^N6X)?u2Acy)+@~-q2=3PQ +$}uV5S>FNKAt#NJrMw4s7`Xo5Fg;=G7_qC@4A10mL=ui3jSZW3rSdL9R*R{1q>KvQQ^`NwRlbMks>Jh +&HQsl6a7{ZzK&!N~GbsHd9&95ToZ}DCp~v@p+xu2te5})*6Qky~#eh#)`#{#1CHp(1U1V+x(!gTI`#t +6M!#n75o76>cGVNzbr)rEL~p|;d=~sDj%50go1zsnUje*Zl_`FfhkoZG9L(KdkOLWmE43$iaZZXNOG0 +LO9s#1Sy{rW{nZ$YQTEASSgwFa(&*p3Go%VcJ +s>5?m$nfgc4Gn*&G081XUIg!nvx-)u?f2aihHSp`km{OvH&u>@-nI29AIwnctri(IyW23vV25@rd3u!?pT_#% +X)xat#f(7$Tp11JhFl74;qjLqK$p(OORM3N%F_N;oMyM}tgaAE~7Nl?J&GB@*5G3Ku6<3@FEJzFPwt^ +l+4B^W%FoquM7?~J}az?&T8dZf7NIIOmuqLjl)FsC!0ZS5W(n*5hl8a|%w^`pfhPuuwm= +ZO$8wlG*x@O#{D$K}Kz=wT9j1H8$fy;uB#8N1I2eb2EtmnbHiDBTWtc{FSRS3IQZ!#V*9wlIn7P+3fGhAO!JJ +SQe8mo2+ga;Zh*sGI}4!KEkh<@II(kldp1G9rXX|FuWFfhI9XPv^fh +nb0ipmc*p$y5*sj7WpK{+dcuPQNTgXY)eKsvC_t&G_6hR}4HpW2nJ|k~ +N2ZSvDh$ZpI{v)ivXR&#OL_FiAXZ_$y29dp7-`nFA)FsT(3eq?~Bz+)xXGY1)dIXC&!WOgbB)A +%;kA9+vkUI5c8LJ)%3Ha)1FjsV~T89~M}-V|nRtZxOJR`9SpgG(pf0Q)v*0wT^PI0HO!Yy)ejDn-h=4 +GB%UXwZ;*QhuLf_r642r9QY%#&@mHlAUMHGlc&`(opC3ucRoHF9Sm`a6}SebB$O?T5$sipBxyGsLsg0 +Gt8o@uAMS=NJ6xl^}V%i^I$>K|aqLanVn3)KYN)id_8rXp45Zkmub?^f%Gn516WbMLJ5{9BQ19 +Y1xu9mrt7MwcQVWQ6IOv4>ivL+K09h!L}=@>5f1oW)ni-0Q|(z|KNs%87G=^&+G#zlqgYx8mhEakLLX +N(GJ)EKj=+$6uuvrykCq_9gb@{xo|7;$wcv{vW@P~?!$4j{bb$Y6lD%v>o6R!~P9~a5jxz`gf}e;+Dpi(VrA(A8wg4i+N54F+|^%q|YJy0-J&rCe$w!8Pa)Kw?e>zTaPJ9YQVJ-4|Zufr$M%RbTWwM +T}#FwdelRF5MM%q4^3qbOi8FuIY#iwVW!VDJ*`#?$!7&PtioA+z$;~073}JvWj+a)FY6X*+Ra9lsDRp +J;eB%X4OQ7rmlwchw|vabFi5s)bckXT+JZA>^W**U(lu)~c||ne+yW{?6^AS)4Wu-!p?O5#4OpP+X%4 +Z4!n%`BnugZ36qSIbA8rcaw&sv^0+~xxc?w>3!<=+#VwqxWCOC*(g;^9#%n8P>Xyj|g1T5J+k67oxzf +sSt$w0&xFc&YbqB{sSnS~G#h@q4NOR^NlW!*w8LqQ~I00ZvCPubkyU@JNs1;$169tK!sjU=d=3hsR1B +~){8Vfnb00)*vktb(w)x=D0bte#fU*vkDrhhGn)9{*PO!D{1p&Lrt$1uTt#MVvJc7xy3kQL9LRXWPQ6fcX&7VFmKj1}1^2rh76cFFU#6qJN4i0 +VN|UkdqTH?l;QI>x`6@inPk^8fJCg!OT;218LtOU`RxI4mQZYM>U`F%^8~j>*s2b#HtC@~MF9T8NV@M +}ZynS-4oFf(ZB`+SJF0_Mgd3K|V>oS?Da_i*+lahfTza_!h}8GVE~kHO<9aa(qw{Qt;E{1caAn8#_wh +4c7@cFt4nll^4?38CU@}O`r@{dwR!G>5$Z$oF`F=-Bx%k8Z$*I$EjN>C3Heu0o3@xJL*eNB=|&K!*pD +0e1Nc^pz&ykcv+U5Q{?S@cZ5{CpDhERh;VHxQc+DVKtnnPy_}1z7;$Ep&0Qb_@0p42k{nNBb^_Xtc~9 +2fPD&_P>u?@KkkZO@d_^gTV|m$%0}czJ({{{yF*dR2Oqu5_G+G_AK#b4Co@(te#Tm9iHl|6E1@oG5hr +`lMg?Wi&v2NmS2oIU19K3@tl%!*W#!!k2VBOF%lN8osrQjMk0+vG5m9dT~8LlG}xw)Vr +Ro!xSCmMwjVr3~|6qpHxszj_TduhB*qzhtQC_<1VW&EG6)V*r?*FMr2<=)TbKDA{te)4-+t ++JKb}{`dqFF(rt$-7k2>%Sqv5}qj=c_pr|Y3RR`lKfeCC)q +s~SP1KV#ik-rrPWh0PtfTQVdOC58tOH01T1M1D&%4j1)9`0p@yOjaLeUws%oqUWDvlOlBU@ti{s*SWu +}mBGi0;^H?8pQ9W#^h2QdkfQcVIX-39q}L`eVARda%+-E;_6=#`E^x=l!WEfaYqGhkwwbag<7qA5MZ29~%%x~-ID5=Fg4P*`B@X5s8UIV?tzpjfaSk{+4Fd! +|X*UvVge`t`il7}71=OOggIBkTh|24P9WI;F{`6{zu1^v!f<LCW-t%T(eg +F$q2_7WunSU*u-H;F=lF*#QLL-05?ujU@oQp@_Al)X&PUSS{pz3rQ#-f|VB}J+~;B +2gx&*6QBn+Ii_>_2P!5UZ;$-5}j|86ibG3$M?L9bC|Az%nM90syv4&s2J?8=BBsNOmcRFjkV@B;6*Vc +-@OJz#wgG!bud80NT0$CyLlbf)2TMSV7uYfX55TXQ$LM2hRAsQ|rjGbD0d%OztV}Czo9SO1DTjl)K&w +gOgAD0?

Xcbr*q}v1sCuLnQ|7wa1hCl)nuv4XiS*mR?YBO+OGqJKTo~6YPo_MT*DG3oWqum%wpNfw +d28FDh+!eU_VP=_8m`w|fpw8I}0tih($dXaAdd-|DBOK!CfGhMXB}U)6lwLItFj7k1nCvmZ)g={@Zgs{$2wljZj*SGulhEdh=k9>Ju;Zw7kjy6s +QAk`KF0PW7mJynyTheF&taH||fdNSxSecEwV-acqyDo>YrWMGpb@F}CCR^6pwZ;*!RB1<4eiGidLmcV +Aw_VoEX?O?(39yr}DTP8~rCBSq6ur*aA7IJ0u+0YPHXnAt$o?RTOL~3*246Od>fsTEHSwOONS{bDk~X +W(RT9loX-Kzm(}5lUuN`JX#46nYlE0xeI#X-25*n@LPAi +?`Vz-4;@+eoS()0X2e`ggSuT4Oplf7@H@n7sdPu^K3a=MbJrH3Igdi0foiR;3)z1CwmP%Yxc58k)GKI +j?0V6Tn=J1q5>7Ff5$nv +fu5N&^Y^T_~%R?koV>K>G{)a(Xn`OE?pk97DQI#ZC@ZL5dKPO0xlLhi++meIN0;`8W30V5ym%Szu*8i +xJWw-4>F8LLDU=6y`ZGQUI!j7>8m9xEZghmtypFdzzzG8 +veQ=P@Xf>({V?M@Sy`&VGIq{YYif{gvki{$YC7DO4%MWK!Omol4qjBXQ%>*J4IxDqNw4HjT>`dEA?1> +aX23$2vo^(+75R3=0MslX0w-8uIh*4WGE%cBr=2!rk+!!A+3ySHZIEs&T`1koT5Fk2&U`gZLVbsVhc@ +H$q~qvTq1gZwlZe=ZD6REc3c7@jX>9dHSh8YIg)e{+Al0<29hQWGGEFt_@ +Iw#zzp5$rhdRjCS9PpGx-I6zyEe`0Jcy{dR+Ypo@t&Df%fC1TxfH}n8ExF`4<7z&;cgAmZ8dI|>vJlu +HuETRGCcscC8LocRgq75pQpwSstEd$hV8bt3AI#y6v_wH-$_C-o+t_Hj@-G=s* +PX)vT*)o-x1(uGP9-yKSg{xqnEviO@Qe2^Mo#G_Tvf*fl~n99S2!a3O5e{eZmJK4Ro}wr;MHP=j<^tE +EIe%OP`xeYavpdTS!2*(HzP@&rQ2{p6vYGTosFHJ5BDh@@L0?aoX}mmGLH9sUMLD6&6YZP!Pzp%WqkW +}yyx>Je?wS?&2v(yh#Y${1xfEfK!}EhcMKS!mBg2Bzk5D^&prKw}z9Q#2y-1)4TUw}qbLei&a1ShHn^ +@#tir0})9BuOw!y2St-?V6>CG+8&#YPy4mTkZvhW>GSj0i7nyP#-N43X% +S%6PASF{WF$ONfrOByog7c6NDf%#u|;f8{Ok7Q2a6llV?~j&KG>St+7-m*z>jwXf;W2o1@3Fq?+hCge +Kn6BuBNq=&INaauAR6CShCwK~AkJV>`y%%EF!2NSYi8W)^6kf4yhRQF9*7FlG5c#)-24!34FGcQ?E0q +GVpJ?MdyDeVd|6{2OqoR0TewWmNGcG1&roDUW0)Cf@8+-=-lDh=tjPy@<1^GsPL%`M;YCC$5#3IIw9N +p)^07L#AoY)BC=HHYZez@0qrKm`oKfaiCk5k=61iP-)y$xpJAd8{BEAHW+glvN7gZ2iYlK)S6GAY~RD +#QgHh)HfZx(nmecUde7~EamcWiiFT8BE+w9US<>0ZP%Y1a(&bYLOF11D2MSxq)JZ-k2S&9&2~~Sfda2 +L4VmgP|5w*$gLGS@#o=GGysK%1P$3(f?Lw6<3U|6ff7>+0Ng^(B0cN7u0&`w?1*F?dbe8F%tkB}RfQv +JpC@C2ZGcHwzFzar=BCes%Y{DX^`SGg#x6`&}BmnrNU@LMGvqT%=(A8=dN@gi}${v8-1i?tgsKsu5oq +Jz~9@1?hAdflu1E_XB0tuKJZipnBLBqD;B{^==5}^8ahZ9Ejei?d5w;Av*?P42ZhGJj93ba*sI?=mL* +HH3$R}p1a@c +TdPGIJ!&`XQ;yAy3A^~0P&$}UvKnnmByOnex@8HO?&>o1$8JeTTSFQRv$9i8OJMJLCY4enP>}B7Hgi2 +#PaBDZ%q(?uFX?OG2v{<4UKegWtgT>xjaqQ=P#Ieg^nLWPNfoaiTWvbgl>I8Qh5)IZGS1UO;34fr7T@ +hsCVI|bnb8|qt%}@-o=jzCk!?za5!5v<3hiOshFD?S4Q~Eq9#R9(KPhutnd9`gEkZu#Hd7%&$dxQrgp +9MatlDeg5Qu!^Dxi138ffE|w!yZJUo7GUVmIBgk$&&0*5E6tunRCO9X36b?uC~|OHRTiuIl(qLM5lN2 +R(qZHYhX%3ru(x41_gt#(>YZob0$VAHvX~Y@Mkvb{C2efu2hMdvq7;~U>R%R1L~g#ji{;w&tt~%=&*H +M47F#obUCyt7zk^f=9x_{YBLe}YG6Ge-4-gC8)hnbB#wMLIHw6nq!5E76FayJ8I&?h8#3$?xzy~XxiZ +&`DG6ouh_thtG-!l~Yq}tgx`lOX_V;O1EYuY(0eVeVYwPz|@$muaHd`7sn?c;mkWYyVJZ;DF#147mNv +U#;9G!iuOv*e@+qEFbBO9;~r`h!-jiSw@K>`!X1V!dxt;=FT9*}PHjByPc4 +W5+>^EVZwYQ!)JGz}qw+i56g>LO>uc3t!1#f?26-4+itIW2Raz8$1WAsI?a-C9KPUw~4~j`B^i&DyRO +*^c_b^Rg9?ZmVQig2E(A#io+OCNAB#ZQ7@+fSnYD@>mu4DyMaFDiy`!O4e~H2c+BHB@3K3g;5ixJxlCDjN5VgjZtSI1Y8)1w~-ZUp#CUA4fa?`B+1d$Ax7NViFFMmnLbN}i}d(YL|@E@HihOs +~_|_GBQ;u0*!eVyZic&sp`n1JZ4UK3r_x>!!yZ;L+VJ>`$?Hz*_)D4hh(B#=vDWtk4SU7~UiAxHhjCu +pmalzZ6M(H>9vEOR}iUOh1Us9!fb``6TSkP@7;ee*qmom2sBn$WQ) +F92(HjnHK)Al-He8EkKdX_1=!O6JX|8t{IS7~MT{MJUTNb>u@DfEl^l*Le9nNVl6O>_~Jt?Zm2PV%V? +h@*oQub$dFg;=w2AR;>>kD8$qCB`bkEAl-H_*ea$iv&n-3Tw{z&8B%=k{3Or48<*&_3`k9Gx;YWq|0> +2Fbp|Xfkvx76>=HCZKC|J&@VFEI#g+j(&2u(zNYqw)pN+rhz`0^KNViFyvBg7t0ODB{zs@p&K;b8hw| +l&q^ECCMcE&r-24h>0e_3PCVG%B{t4}nTU(=ikiL#*!PFpi!13Ur81{pq`auM_(c1^CsM-E801=u|c$ +$De}5lZ$fg2`RN*h<8!^M`I#FaeH~k!tr|z0cY_NVk-|F(2Y-06wG@Gzj#r1W<+qxGWQ(JY6VCegexb +6g4{FzO*lx_keV}wRz$pLZ+%{?dMzQ`N2yizT0}P)3^5K(QY`oYE4{L)ne!!kZw18Uh-Hwk;-|F%jqM +G928Qd;*=KaYm>VPX>_}*$XfIT{aRxWjzf;MX+$_R8|R${7c`5V8Vo-mZ?;q-Kh$O%$-VYvXXR*lX-K +!6(8nHms2Smhq-+`J;IhN&Eid3P6Q<1Bo;&Ml^ME_`-)M8$3Q4y*Nje%ga+6|BjNC7Gr2-L@-Qy7(Sj +??Y1B#~;JgYvj@?)(rq}x91Kb7ff`NsnTSv!3M34IxspNY+Piw77cP9`cg9nP~chodi_2kAD+kr2Frc^0Qm@bkVqVH}%3iy_GL4)1X(wq;UUgCDhVZr|Bd?c;N@33D$M!wJuaaJb)tN6D%lM|0I@iaW$ +4O%kRDN_fe+djnO4*9kw4TKLZ!RjhS+n0Tg=@46UMf8$x32N!dVvj|lkpK^(A=T) +%?8-_n;@rf%+1FN^G5Lq@<84daAl>%4Gu5L!WGiT0X+R?p5+m!L=FsFQA=|^=d15zwj%P5iKYd*8AJT +0_plY6HQ+eJ4?v}vnw3^LA+i84S-Iw4Y1`1p!V56i^3d>_bHwUEKL~@g0A?0Ro5b;8{)C)wF#B_AVt` +_Ka_O*GoF%hi;8BDrdC&wI+ZnJR-*hHUAOT2(gci6;z$eh)50kc@Ar~SH+(O1JRs=>59;3}7`fOMPfj +FV3_<{@vMDoF@F&w?Y=&#so8G9CkoO`FqpU?K!MB-?%s42Q*XE#>rtlS`gYK%|{P>oXWxl@;O96HTEX +*7NC}A&JsA5<=&C#mA6tH+hm0Iz(>mbpUEj2Cwk0I>p%9=G?JPGQDQiia0(?;bPs^X=w+f+YK%46bd@ +{b@w0~qKRydJo|+VUhUnGT?ndgdn#Z+F7kv9$rMW}h9x0Fn(UFJyV19%1C9gMAW3Q(J{$0^_121^F-#u#2R>M*?c~rrj|d~fq0C%lqqKFD$Kgr0&3BS@Ol45=XVE`t2_=M80|5^o +;mtfH#vVj5@@(kg2Wu%#IV_4Mg)wMpMGj1{54w2hg9n=u3UZxALC?VyZY0qy9&5T`gr!OCn2W` +n?DP|n@C+H=oe;W+NQzAkPn#x^VSh3Npd{cr)){&Sq}%P(1^cqIT43#MXE@eVZv*|rwr0CvZ4iR8U9x +o{d)L8ATDu0OOUR1wuB6XaT8qvG0=&iH2abe5cq}*N0uq_-N!K2cIy|Fn5ke10w^gNUHa>gykR=c(!5 +*yyQdqdF+Al<_PnqgR9xo|iD2LroS6l({=gnDXWAv*iV!zl0VyU?c?Z?2^DF|z0RKecltyTN +^MxAGL%Pj}XXTiLLBaP_6aiyT&pg%U;sG&qE#Sg9sie%4vL%GW+1llCt-!lOy6u*LZO|Ti3oZkSuk +%old9(q{xp|Z!>o!9VRK;dV>ch}g2zgUE4h9+}jA4tO +c`{A4->^@b+U?h%%|!n{t7>5y)VM|k7BiU%5im-f@H8XA8{i7MszekuXUf1&UcqOFLWb7fBcbq!3wVl +z)Oro+bL!n^*_vj_+|Gql#q8s|PAhOr{OM17LS_SoQjF3MDgbXz^(*CSZ0FhL#6Ha!BRb#S6emr*4|% +Gt(aBt?1@uv2YwK7=lHX&$88y4&06vAkv!p7$&IASv6UAw3j)nGAM-z#5}L;Z +dPJ+|^Yhv>tw1G9(s!o=?y`iXJY6r-9B7$S09wh`bwMQNlr +25`i@JZLW+LUjx(De9rsX^5Ub}a(KbipZe*c&`O$pYh8quq@%cHnjX7nRHUVOkZ!AJn}>AE3d^Q*!#q +H!!E&dkFM+EnxSmNmrQD;wH5f!(i@3oV#xY~!UXN?B5z;aQ6@*NyVqHIY6%uz^4f~{vcJJ^5HH`4^mw +^vA&)s4@nlttUH#U!59kNU$@yuiCtk`RRh(&Sa9zmH^_!Y)>Nw=P>?g200tsTZvw@nHVr`rB#n*n)AZ +PTWxKI{tKuY0KKZi~c{<6=ojvZDuSkpq#hB)?mLguZ$%#qQY*A|C`X9&*w>M6`MSmO@W1yt;%q{4Ep& +N8zCjBu821u9!0LSO*@bX5pvrlDUZIR!1S{Lq)1!L!M0cS@34K!+61w44gd?0fFF +G<2i}e!}!Pr*xiFyF2{iEx?6$$Q +4z%^{WciFnPw-23>(`DEwxGlrpE6nb>|{(&=(%I!q#!W{DWGg)GWI4Dx8h(!BIBLdyt;zG<$Lbr0N9m +J##8Rr|8-*eg$p3VJke2!-!G!H&kHXCC;0&0^(%9pn!vps^9;h3l;8@jq3p%WidkNjSTlc&p1MxC0cp +7s3#E$-W`e?u4x{LM_D8(5dO`T!MSVqS0@$?a5rW5J6tegc88s!!Jduj_n1(0mLH}YYPOD}xgJhqdx; +tbB{%KqS_(+Fl&ZTGU6SuyRWQGlrzx&LM7YJFzjdR)nVVq(hRya^kiL=^$D5Xyn=}K2Q!&!o>x{9zI! +PmKzx>04E9YY!liHbG^afkTtSf3I4s?=@;orz^H>XyK!=+TQ^A-l0i0*8TXnM24{pa0ixVy1k89uvSO(c{kzqqNQ|+C#eBDF@Y+EHe +oad*9%nXvSQs&pRcpYiq>DMeQTLI}do5Xosg6AG(sfTgdm?FLE1+=fATTcW8nlIq3E{g0^7K*|L7}*d*r8GJAe9gG9dBUBbDR +AD$j1h@3;W<~Rki(-k)4YUmD7I`6t0WWMA;39LM!g2MB(!_}AkkTK5SQFX;PX7)t4fdsqZi2mNR`MB9 +yL7N3d>yc0`#cu#*97Z1LsjZ{nF8kKUnv}U4 +Z0SC9ri}&kq!mmlg}$-dP$x*J#j>6AGMkWYi-)?N>c&8LL=}e;M4@rs>NhHx8jH5O-B=e%NoGPK+pE? +@-GZe+0?h9{n-g;11R1rH2M?=eD9E;~cENWIt>=g8Zmcw{qep?MshQe0Bd^$o2~Uo}U{uExHTJQ-G21 +v0%jzXa)I0^up3H0D%H~z&6Hauvm$BP8m@HQS2#VhfKd_rpn1#LcTR|$T?LkyRFTV`zIV@VJ=4(Ur^c +Y(n2I5`eDvw<|N4|lzAL3?|@~RZFAr;6bh{fCNo^%WJJUpmca`EiT1aGCtQ6=pU4`vtTJXrvxS1oBSv +_EV%y$0ssH~_&xqCCuuhazk~tEX~3r!a#aXoY9hNpRQ7nqSW17Y{940qM48c?O2{r)^eje$xK(*Ib!Uz0)ZNe9L5UCLa>2>#Hk;J>}kQ_u-It9toy;Q)L= +HXOArNJCQ1qXDZLD|0&%O>DPj+UjCz*3y%PreyeXO0wOQl;gD6#kXgzJLX}Ylh!mRQVf`(84Q +_)SGQc(=i6X1EqPohF^*2mqsz!IJkP7&rp}0MiBl03rYY0B~t=FJE?LZe +(wAFJow7a%5$6FJ*OOba!xaZ(?O~E^v93R9$c4NDzGISG2+lk%%ws>7?6>R$Ajg79C&0Mp2&7V7Fnk; +~8saoXGp@ugqsQ3(_r5(A`y2UEOrMefdNE!P96;<54u2#slh)XVJfOrMBH_Q?g~6S-Fu~D2hzRBpnsz +hg3=g#%?G@ENC4|M_PJ`%13@>WlFYWa`G2AP(NkwQc*HOMNw&)3NMXz_-RXHcRxT(b7S}M)UxoL(YoF +-{`!=#4Ody?sja6@bW6R@pZ^BM#qxkcrD)OAI$E$}`^wqAlgMaq<+}35cHHehh!9PL{Z4bKHdYpNM^N +a=8=BXCYxJRiSfk|H3R^cW<(8S8$^9FIJy2~bN`)rNnRI)47~x6i>8nc5^dScBM-OQ`Ck}1GrnX-0F!cp18-1h9$un`g;gwW7{e&_B3u|&Rk`<1Ojggynm<7)@TE*VQ5; +T!#!X4wF5A-X1oY1kt&xM;z-(~P9v(Qe^AzJL&ozG01M%~UzgE7b)9YUz2De48y33a2mh94;2&G7YqEr&Z=*kN1YX}FyWUz?70TK2`<5BX`s2`4!=^&12I9pIi^Kg-jqUAVT(0sX=&*DKq6f++ +!Zp^%7^2y>Hl!bwl8G9j>+qeFL@j3`p8EwTYW6UW_Y!nInMaufOW~hwb?D_@dZ0G~YoV4*>db1L{gYE +lex?nlaw~M7ugD(BmLy^$m6-E#PK9o7Ahsqe+rM_{#DV>DC-hb-#?(cek-uH->F(TJKG?+gA&m+=qwQ +_3;3W{~Q71psYty!ag%&++qO)BMOzxEs<8?&G9vIh*Vi_{zEv1)}#w^H*F7VR=|lbP%@M+j(6d)Msr0 +Werb$@Am8M2K@#JDj4EJm-p^s#o!3HJLpQ#;sPWgme4oUSQ|4Zd?l-3#>*?tChsfS*<#bRep#!A6Mb} +bly>QX;%@P0JrB_Bn~F5AnwbBwmUyd{eXS%#7Zr<15k*>5T_+z7 +%ePuP>;H|sl`Q{ph5_(gK%~g0Jw$C|hua`N;9COUM&Icd-{(t4ur+<3(Rr&JSXHUO+@w9yU<=3D6b +NO%H`@zKr<>i~}^7Z}AUvA!B-ImYpUSF4+hw|sU|G2rmy~^)D{q)P*n^#wlclYJh?alSu$MP!g`Q+l) +k3M^Q^LUd_et!Me>)X4ZukXv+-`pNBsLoUEMR*&+qc6H;?7R&ps;kJdX_VyKn!bJh{Cs&w1}dd4BzHegD_%*K;MG-MxLhzxm;pEc3 +&MkN$7|Qp%sN?*FZPb94Kb`Btf$G>G_e= +P6rekrf6-j@68*EbJy_-w>uxqAEh4|n(Z{7-kUZ+?8opMH7!I?G|!kJtA2%+sll +Q_m+Qs_VS;;{`O^g^3`|cU!OdG{^YBd-~BP~%}(dloZlSj=BJ-yg0D+fb$|8t@m(gK0sj2-`Dg!>Pdx +eb*_Y2=e#h*;c=qzEr!QWVFTQ?Wo|JE%Jb(G@vv0qA^1OWW?elNGe)05^QeIqN|GLF&=I?Fte{S)Q8S +^GA4^+w19p`5Oz&;{N^ +X``5p|Rxb1DyPwLN|Je4eGw_;G%f}!8V_81gPk!=;yik`m-oJ3R_b=3*7uqt8Utc)hzp!k1Aw$j=>L< +(c>kG~4JbQf&bo^?~c*=9Oxcq~Ut9|{$hxOz4KYo~ij?IVY)>p +p$y-Oqu<-+k)U4>&?w{|{C*=XUotp8D{JKmGK}t2gCMa7_$}qdoup`NhRNf$v{__sz4}ShA$Fk?wzVK_ktoxF`jV*84&iuMo|5;3%YZrh%W`bzvG`N*lb9SN6P8k3EZ8^3b~PgO6loN9~s-)48m94`XGnOGd40<~ +0tU*+$0SGMVgQ-?Flrl^sV`+m0>MTr`GPCGN +X&gSl#O{U!&|BQUN^1RF@Tij~451WV$3@j$IS&lqzEZK`ahnJIK)L6*MIlPJz?wd3L58K8H`TRdr?O7M{Kz_SNw5}Y1K2Q5KF5Bsr+qJ +QA509o3mBfq>NfQ^o@-?jak@X+=DrsSQ?XK-HjmFd2-i{D{<^#ubFVwjmL^b;*NN1oUn6@8L)%-F&n| +*#BW*30&?wmB2OMmc3|zAb4KNO28I_;1m;-D$>NU=IAl&S8;yVk=%d>q0LH!+4rO%QYyrU8nvLky*_w +m%*mHto!OOM-U#^_bwq!?o4l^j#iJRC2_FH*j?_hFVr~~Rh6XoP@Rp4h#S`&l^Wfs{=-jkl%Lw7NGQvOO7n&l)c`7xz3aFN9<%H? +(;q(W`&CM9SGf44uCTwy2Oi#`ydiK9KT}89477`NCQdO*9EF`LSBHYpa#AS?I_@5+2c9Y^M^n+!bxv9 +#Nl}ZtCfe~e~mSbGgexOF4YjQx#VX2z)1%40#*ay#O~Am${Sr-1F;E$i4rTA55f^S&KP!;^gv@W!xi> +b3AKqfmGjOiFalHJ2(wT^2gX>+g6m0Hh_4j@4>ZMy0I8VVMXb?iAV?A%@Zb)5ZXC~f$l5ps76ppO^A0 +dSPvYd`A3zScMlile=o1o%!FcOQT-)?&O#BcO57-eKi9=-P06ZWwW{S_i05*U)uU-U+i5eI>FE?;{K$ +}9-Fw2vu2SUVYvd~yV)v^*}*p>W^*btZymzz=%YYq7nfG8?O}xrdPQz~|Qo*n|ozxcd5+SNb2JMT<#l$$b%>SaW+KPt-Q)DUzGJuTP)YCo0PQ*3w +aFM@3#{Ae2H8uic28wzAg;d?&BQ4zZ;*mXPDvNjO*l3nlb*ogVCKU3A7ulYe06d@O&?cc#Ut_;Le68wo+-jp0g!?W%hMwJwTN(7HDQz2W58fF?rNNv5_C +J}{HSWeg7r6Gz%H>>TjXF=s-#NPo)Bc9TcuN|0Jt)(z7&elI3Ni)cf3+SypycI5!hz*piQfpP&Maugw +Zq=$`+Vl@@O>+*@jWfV9q%iGT?k-Y^6}>{5v0#V$?$AE2lK8Ogzle +#02|2FfGXju6^KZu=ECDj+rA}uq)V3vd@NbFd(^QIRS?)XB)d9FCx1_9mqnlWFUGcLPLit`_srED*<) +o!HpBl5-W$2z3Jj;H3^q5t4G*uCp;$g6153$ +cVTQUmPIl*h}z-UnNlGKO> +!+CCBc^qn&c4D78vFZ^MUll81cl0E2wUek8h+mmy({K33&L71p_fVLPsu@JQMXNkNYZ5;yW9mQ1uiWK|WI(Biw+KuF%$+|xva`QrtUs*7? +O(wcinG_KNS%oJ9ol`cjEBtUe)?lzO3jY>>J<|>DoCaxDSQXyoTe1vspQ1v~4tecOMT4D`d)(Nhy#Eb +JZb0#Y$$K4OYC~UQ(A{BX9173EK%bg?FgPx89C_g)Hj4Z{bC0+nNdWQ7DKo2A6xN&bX_eJ+d+ysuh7D +@bARdB$ox|mH9p$AH$Ff?gKJY}2;XIdZpaIo5qSR|1@5xW*_dIzVs;B*XVgJ`3xY-&s}6CiD@gn+Z^o +{}IuKw%5CX=XJuN8ndSU~6#lqQx9tRt_!z0SI^y&V`f?Yu9Ssw0Yj(A)=@$FYeNmd?)0v^*j68rpAi_ +5mVYO-C`*n4zUY`C~=)Q0GrIoD`J2)Jn2|vr`gvNcb5|3Z-vYwhE1B+Ne^+2g59?%%%T1*hhmgFumf5 +I1H5AG_!f)T7^~zPaA=6sh4|5TIiyk*6a%bC>OG)=MjSSzn*f-3^gIq?x0$IS*zN;WWXIJJo(j4|K1a +@eN`gp%hv_+VP8Dph(5bDN>vaqPdmXwS89lZ%NU<9kSV4`iP~AoXzV>Efjk2rXo)UrsJmg8p9#0N}t_O;<$vuJE@y)ic>Jk|{b@$c1Stz +s_I)AA#i{M#S;){wi}&gV^NxX6mF#_?l8H=~S{s`BV%6%2L}T7ZNYxHxlVgZ+CPXm9mO>BX+1+qqoN9 +c3cXmQZxo0PbK(Op^PAlZ;{7kBV|#WW<%r!e^>JqOqcO%lU+2WH%0|uIg}1n%TZ&=Vi;4{^Xe+$Y-sQ +WC~2_JrkFZq7N`Q{i3CcsMG6k5PsfUY0K#Dog@=GUBo7xkYtJJti=N-G*L@Q?5k9(LHa30C26aQ?*Y`BZ%EVypFD&r$E5~J0;-L5O +8wdyLt~>m92?I0F)s6iO3Gk&nWorK)NsNGi0`*0XB9#(LLTeO>luqL${W0wyS|cw^X4iTODd$hPr`aT +jEhg0(Y`_!!$@w@Y#4HrrJ*8c85qT4W&*4)mmIJ!`6SDox~KSst#3=8lqBFq^U +o(WD0}!DcrNo(>15RC908Mu82fs-Pbx4&YLPFv&{S(m)m>XsN0?n*uSv5+F{LF@)Fxmn~Kz_*>FjF#n +Y05=JT21ni7JiU7bPp!*(oI;o5r5V2=5A%oN5&=eHo%hpCoXpClukOM$*P;JvN#0upZ;>D>$!);EuEJ +d5pCJ0TJ!K$q?L(H@uhF|7-;@<~2Js@KQ$_}R+5ay1~(Iu}9!|s{&S_KEP(ME)5iZZ>)!vRh_e`UZO; +e=$qFZ!eklrU$hhH@GX&_IZbhVe95NhSG8T%%aBDN?gqOld_sC%X<>lE*b5grjH^7`8V9f+7FSW)>*(L+%{zi3nAG!!b0+8h4CGSgPyY4wW&{T=CcT~Q|*Pk;t-@QtESX +vf)6fW_Cr-ewxy6~uhx2%`x;Jf)p}OfcJRX@nqfix5RO$T?$o(tXQ-4fI- +~wV&NkKFiPQK8p>Kn6R9V7eLS{WyJr5W*HotW_jdiv1vFe^cNRRRG@tUEpiq@4l5lDxL~ky;B!hs@O*VBla;196C>rHO8hWg +Yr=>;9k=QzF|qxb1*}Yj;Cve6HB(b@YlK8X0yfo(A>%+t=@zk@!G^-YYJsVfr?7JgjCmBk5HknBZNi| +IMfIqHf}PzAG(j#m3MQP#AV5HRD!Olne_k}nz~XwUESEYAphfYxH6c{_ILW;OMJsjCfDcrJWPVY=RfXPkZG46SExjkeawwLO%>rQjo-%n?=S1V*>cH +9DT?I!qlWHMiSH})30^|^4DD{%3ER+F|jodlAbI?Lm8_j1on8`F}jvpYdmh|KmZPI*n2r7@2$<}J~5z +5KXWoJFbDm)HtN6@Y|g%dWj1KC7K09Mr*>NaUk-L)f;E7ei0%a`ej^PmWrv$brT +v8@kCfW?!8R#9be?jHSCIidv2(e^R1+}yxTsOE=F`=aVm^_X|*CO2k9_~n2mQE|6SPrd7RRm9IHdCPL +!Aa>IC`dN#RKbB!I!)52L3p|t-GXc(o(rLH)M}duGQ}W!$Lyk*}+5Tack6q;B%V)m{Z0ntVB)$>)?a4#@y#WW}m#jCO30my%`d{0- +$bfNJjp?2C4T$`%iX>3~s37s~QvzVNqZZe&JJi0O8@*==VIVo)Mcw@r&Kt4faB_sQfTiHp*hsDVU|?n +EO%rTcEBp{hZS+hRS-pmf?ewhCW%OX1szrK{CdN+gByX0Mh?VQs643HpdYNhTP2;_6~H$a|e=AAYEbO +snNE4N_!ySa*ZSS4y$ff*;_}*nvvvtRW|^^t%n~*HkbPq)xd9-5T%_mG)y%;|Cm+m@NWh81{FN5ADuu?O4l~^T>JMRV^itl00wOP05EKdpjuHl<$AhZ6c?JEkKM$9HIn +r=sxPaaXtPnZYK>$A$*N%M=z>(U@`xWT7OL4W +6!hfEo2_AR4;p`})jJCs>Q1LUQ3tMfSo^c0zuPAu;~*)Z+BVGIQ33{rx7vnc`BYYjqNW%~FIzQ?R>*4 +%-Eys>5^4&8xSMJoR{8DMq%S0I9@Zu8{}rETaj5PJF@*LQ*ozHx#!^F!Jvp1kNTdSF?SWG?F6gEdA?i +LWKJ2yrr*4Ds44S`2Q}(i{xl_-kEJK)RG!Hkjt3r*UASzT3Wl>&Y5jJt1R&Nz*bc5MUI@^Mv7_b~0K? +tp5w+GG+$zl@}sm!9vts19#f?-dFX+?u*Gs~h=4Kj4_0!b&rKrwr#cG5I)2w{~-ShQKuV4JB8KGca^! +(t^rb@UhR+CZuiBgn_QO1L5nV!2`mB2qtiRd)T!|`c8-+4ZJ +N%J;UUe;sW`2qyMFEmNMCu)f%MLdJ8n?giuP2dKmSB;^Q$`0(ha%sGHlb)(ru?2G`&Od$*YvTR~^MD0 +WbpI9Lm(ZM;&9X^XW6hgLOYC9}PNB#k)(rj5v;kffA6&@`p(cL +9nRUiAvB)d?tB{Hqm?|WX8P*FeE+m@&OcytgomhQ|~R!HZu;rDk>rJ$PcTEYPT7vP_fRcceOY +>s!mfKZruv2AYPNvIHQq88*9}x~>swf;lgX5|=tT4q~&$60uL)LzRRq)v?*OS&(HE>M +)HXtA`zhEYzl4ldZ*8H#1hKbb((rs@((isoCW=i~q&?3qwdK!O^(& +7QLYM@ZY%TCBL5lnYI=JK_`GkD^jw%@@rBwwiZZ#YXp2kn% +swy!o{iqIT_S8^)d0U>N;1&azB=75RsHjp2R<;=#`h}BZR{V*CDd#&)G;&@;-LuF&NwupGzOdRaywO` +D(KgB>~5c+L4r^M80AuO}J!s@u&lmV?!uin2?_+2?&81Y*-Ldz~=Vy +34x>5CpSkiE47}Ar#KrGFYg+BD-Z*fO8R@p-5h`(PDUJoBdnni9|m$4rSmv%fe;IzSu*iR%^#N +C98VcrKt`DQW7SbojzW^<8#dxbe2<^vWGhMY-Ob@1r~+YOdl);WkcOeA?$WH$swkI6}I?Mo9Rg1P5*W +eO$z8^TII!L88Mq#q(y@TCaB|fVq|UN)uGu-{s^NsGuh%tXhLACCNT8bHmVvIwQ9dccG8hzvnqTCuH0 +zUZno}u>!r9mkanPHJu(zDd3R)JjBJQPc~CTU3IK14R@;dyIdGuMOCTg4*b29*l3W0q_a5s +0mXh8-5nxmuc=E$jWW&OG +1C=fE8gU?LXD3qw{I%>9E$aFx{}7~wFiY|HAQdkEnY-Kv$UJqEz +3YkAW&@|fi=b3N>7_6get2Alu}hj$ByUH7xA$|eTYYXiNDQb@6_jqs}mYgODz6#MEeB+R#?id1;mMI# +q4_5ynQ<5ZW2@2=j2g3x*mn&{YIK4qPq>|QG*?%TsjhRqIVhC-aOvps$0471#YC8)G}ab|%^m2=(KeUf#Rnhx-hmB-jliY1f0U;!3QdWeNRi4rHBipRyJIJFr{vnVF`A|W4Uf9k?pW4wy(VXyGMNaheh#DghYGCo^_b +h`OniLSQb1u&;c9L)a2tn=e(%vNP-Vh*2aa*c@3$5B+Yw21w#gx%z8b}GFc1)t}^XjsO4K#W8&kg~y( +Q2U^j@LNqf|B2=T?(tps5fJHrVdwC)ND*-hF&*@h0Gn$Q~b(-!yDG~YYqrQR?att8mR4RI}z!i(uhj< +>8&8Im=Jxfo^QL26BQv74FZ6&0su`O{Mrz*s<=btt{h&gS73vTmCYL`st8!A9pf~uR4%L+TN^2cc5_L +uXJfj>TbZW>s^A3#Jimy+z5~nUyUl)TUy$Cen7Y})vDx=0{!)UWlL2kGZu9;x=j~PdMU+LNo4S^F9e^ +(zi?|h05rXP0w)zbRQ|}=XdiU1ip2JiH3%@HsahXo()mum2LgJyYi#D}k$k-$xyS=L{uX>RTC_Dr}T0 +6RV5H%2Zq~aFM=kaAB`t-J!rFdlod-|x+n;Gt2E>m~3QPf5jx4}MfSh*6p3g>Aq!+yc!i)`E5$CfR<9 +eg;s%?lh(6HVV-Rc(y`g#R_#bP@tA5=l*Fr-4-6uel)pS-zu)W<_+&W<2vJyWB8UDrxr9p((|e>-T}|pCA0=?JNIBT?E0Y`x>yUfd_(fsXKpOMdwYp8uh&&XmicuRYE!T%FUFW;F2*rC5~%P +{YTCRSwtAZ3$HF>o*|w*0vpvRkPFjtT_X~x|YDwDa%kZvemr6 +-!;Xq=fH^k> +Gud@>nc^4Vyd);8SWttKGa2;$Hi87+zoSTRTpji}KACGi~Vy!y%fx +z<#~`j7Zy^%x|;%l~mS99ToVX7H14Lr?vn=V+ +d!LQga8?TDG<1nShAK;c~487W==QmCeolCRHU`BSEh}c8QyjK2q`=1m~tD==RhrBS()wj_ZS9%y9n@bc0 +6>65UZQ9fwW?N$%8dE7NG1^?N;-6Xl(YqVhrJKdj<{o;#o7-0Qv{ze)6v1cpmetajGrYCst<1x3@;Kxp-T*UI!oDBaEuGp`2Ci>PXalp{}7D)w28quL;?z|9S7I|Z@xHovpUFY(} +%{g#&D{RgUMhn=)GLISlzNq%1Kr_N(9yio#%IeV7!zK!mvjaau)hS|X7%_2wn;P&d_kqZ39M;90WA5c +pJ1QY-O00;m^MMG46tNxER0{{Tp1^@sf0001RX>c!Jc4cm4Z*nhVXkl_>WppoRVlp!^GH`NlVr6nJaC +wzfU2hsY5Pj!YjKT|%=-!a3QroD~T{e)S@+B5ji{q;TOGfhc#FHbNt=lIN-VVcd$A +L{lV24flylHNG&QFk~=zR?@C%|?^v8>WesYpI2z#NA0VcwvHN&tS$NKARqq)8d`j5BwXN~g##1Y~rp~8NA3<@kJfc` +BnuS_NGj?pBINx`Y811cGRo>W^yZ(#_(MZ@IG?i*?Wl8S{3O#v4)7o#0KJ*W3lw4V1>)=vhnaP>LKSS +6Z)uy6MXtJD3x2J~@o`lZ-F&6mJR{;aPBlGsduy+c +#kh2M5E7GBU&+4j*CjQ!GK!&KA3-%&*p<#bL6 +Ux8oRu@s@}pYZ?7Uo3h3yv2R=2=1c)Vt~-^>r@6aWAK2mnS!LsShZ)3TWo000g)001KZ003}la4%nWWo~3|axY_OVRB?;bT4RSVsd47aB^>AWpX +ZXdA(cjbKAJl{_ej5wLe&%N~)b}+H0=qRdMV@bGGcUon|t5GaiV9B-RwEBSNmyigIA4);8Tah8+`mc2EPCe2r-Q29)i9i*|o{<&Rj@IRgAOFX^Ki!#YGtD?f_ +(!^@IVFJ69bzwklwE^Wtsd}eJ>c#Q#OOWVXK2)PLRX4QOsvBcX@n~XU{4~$XBAHeYr)Q5|F>9B)cu?0 +#Ixmu?8mJYxQf02LH{~MFoVZX>noJ8_Y)DtL!Wd=qS-A#dKdDV#sYqw4FmYmqJmfBw&f-7i1@dNDllr#Xs!1)KJCN&LfjE82JjrZ*~uH449T*r|d>(pV)KlU+df_yq(Z=o-$XrbboP%&N2x3 +RtT?j_=-IeYjJj$tU%3baOMB+kl{ASGQ+Fc$_g_#iYzGCD$sRf#foWCgJirNv(+f3Fft6FpbqhKN^@ +hGKi5_X+*?o^P6m#=GmO(#g;~)KdEGtI?5me2SfsOu6ehUE_VZ*0(&u +TO7k%|6w1>YS9)&91GG<5u$3B@m-ZwwH=(ic=?hRT;%g4YOQDp4949nz7Cc;8Z7v4TJiJGTZ{07S$>nlSBT( +#!!zlK+!_IhtPj0I4_V2ZNpk3eiU4wCl9d+jiW~zy?Xr&4x6KJb2|C7FSlEcMO6hERLnW +WmBJqtRuQV5HgpyWo#&5@N1&N~5c@C2-mP3}H-fE4p%`xyka>qiiEmd01tf`r?B^V&dZegjkCY@27W; +JgaxhN-9FpTgeYEvCOfUOwz8^O&;VZ>o8L8-aqMr=fZd7$d`Kro0C+vijx*{yK~?VBY9{z6s4`xU~95 +Q{(Ii~77?hW2P3t-$6Me-;@WZ{^i+I8>&L4%I%L9kWyIB#6F3>7p{h ++?{1}0%D?LsQpp&t +my8`x3rU{>sZ+UA;3Bs;Yy>YboXl7kNI2Mo$SweQjaC?hegzl1`U7m0I8m3yD%jP{<3gb>>=xl9C&^JukTRSX1Ca@DgjyBV{)5IYuHQlt(-Jq&CFe(t1d1y&PNS0X +0bMZ09)5QPh^IT5$lB33*hUkz_ly1p>SIoSa +5N!vlZc$ir5|fnuNO%x8c7`ISI`&reI2-GRTWUSam^hG)h1A7g7PQ<_r@7&QiOCbAi32n}r3z1d7q5? +OhhYdQ1-2kGH0-PTaRx2nVK&rC58&wX#um!K#^r2uw^|q=z9rBJq(pG?%9QG9EP$0S`BVE#y2PI^y+L +yS~LX6L5)N+tD0XApkBNXwAL_C6!Kh;cWR@8w<_4KSJ3vE)Sh#M3EG<*A|)#o^D==@WjQSaN&#vEsaKvkOxa3N})@c*8>?rBb-= +*HH$ONzRc&1ZlHUdW@41q$S+Xbr}Y)I74R}kgflQSJJeWR&JE>2FV25Zo4R!VZE^<1f)bYxtnWkZ +=)pLXGB#`3c~!_M>U2mBmlVt3Hdd5uhS|?9c*^caGN}#raWcMF7<)k8dgY#CGxE@mA32R(y7@gx)p*{-O+{kRK3~aQ--GqV^SzBCZQ- +yC}V^HTf-(>&F54r9A7@i$OLkmGlZLn1#<6wAxP}Msd+RG8#l&x{?+%0wMxsap^O_Z9q?$)NNSY^G&L +5gZi%kbwcb$t0~!EP9}ka@$*o}UnaBb&dRy@;Z5 +=Y+k&*q|PpWQ(%%t|j&jJ9&Y)u0t)eix+SP_My<_&iqfwV6UwXn`s3A7+QyEuTXe2?1%2isL +hsm%$u!<~|)F7orDhPQ{Gx{b#;Z+!@v%&9yLi;{4wxBDl5d!+*-d=>B)wTrgwUW}&t35(F2klhwC)H4 +CO^?76yC-6m_nnU?ql^1rM(66aI{s=jKb&0MT!v4l!P3jKOL-WFOY5g5SUUMIk%zNzsed{<4whb@$+I +8AmHy$MgN1juBlMa4_+_{@c>b3?r;$q_j3rty*D^iU4O(klB-RZEL_@dTxqL7=g3+f2^_^=+AIXs#f` +TTbHc#n4uG8El??}>xiLQ^h98c~=s?+zQoBOxp+q==^l!SiyZ4tyn{};Ri7BVu;f{=Zl>C3CPXBQ#AN +TMgg^1sHnA0W{Cvo|+qAMYolOL`r;G_Sh2dN)4ZUDk>Pp%yP9+_DtxUbC>>9)mU{Kv;#FZDyWdO=QiFMBfoH`f%FZ>8foGN=rcDWnYrV;XZKZu +n569oFgl1&}5_!TFHj~sNxdcfHNb<@$klGKnFRw{Clz^9SSX=Tp4V>j-7f_B%CWBofDANIY;^0z1P0I +iQj+`tLib2=;ObtLicO5QGQ>)c&#zS@ZtQEueEWI^N5vR%SI%{rdL%2O`>;voEbGSLHTDDc+qb2XsqV +-m`f5vrMo4?^hA?1dx#EQ)wH&Jk=lspxY0X{R$x_(IL4eKJ&`WrdFv3BbxSaf~X+QS+BON*^6&z@vWT +u>SXb!T;)c#x~rJkMhan8A6Nm}40|ta(62W9)#|VQQj9UYhby_2_N`z4MWuy$EDh8fdF5@)co%S?MqI +>0rV3p+7cD<(9<_U8IZi9(|7X!xSIo9^AE<7w)p7p%v){{Wl`-!N=WJbSS)!c^h)GW&bj0Ty%xL_+v5E8zF4YWNi&~@fVDp9R8=FS49z)e%P`HuBQ{7@ft?nCr*SO`9vph{@c1d0=3XT>gdN6S) +(aDh-Nl4I_7#z6>mJ=sqpS&gUUuftSnDbqG7?AkURN`XaZS4%&Qk}%)9j%+1+8x@YTF|jDGW6h>w!Vs +iy`lQ!NoWGWYoR(`{3aQ918cLDLP3;R5NF!GquPY9TAR{$nJ^gOI1{)@Mq9=jKFgyYzF`dj?4 +o?q=a}>M0d*7GD6`4@J5Wao!2h4*fg^53s0&{~kd(n&4lMV0QB(<{LxEfrRHXPOtQ9H#4xD$ewh$*S) +Rms2N&|-S^iwVe-~{hX=^AI6tH2Qga+6#(^FSJswLT~C)o_`_amro2ct2eR(71^sxm8%{o`%b)10b#R +z}Zj|-Oh-8yU+$yKSDEAnJ;ze?wV!{7uYn^zWsGDOOU_Q+SL>t~uo|%ZiQ +r){}U}^9Sob(MdN$_4#si?Mesx%}mOQrLVWt>({NXxlnBGP@rD5>XZB6XluNpX_R(YW02*L3_{-&kwf +N;yOOL5+=_l&mFzgOVbB*eU|nWZbaqek?R$QgXX&O_m%U~q87ZpRZ~WV~AP}A2zvfP${i?PXwat9{>_ +OhZL$QBXmb0H5qHGb~?Kl4L#4&PI2B#U6`JnE-XrS$&uN(|B2i=W#%O}YBw8X4-uJJs!It3wq)Xk(&= +Ah`I{C*z1cttEQcV9jaPF{r(_vJHG`%2zDN$neb>>ppNlg_>92^;R)4aIj$@S;nC?Hc;!^D}hR?~$<8 +e(wlqQfs;#aY9^@Cvq{Uow3XDdcBTTmtF6OKR9}d)83Qb!248>LPdP|=n3_D)&3x=eae28hm?pcXo +O=p1czd|0xN)+|-!g4W#dBOuaoII#8E>`tA|^D|e~8Q?GswcDa#b=V(<1h*B}#2YDu=%HEd|Bu(vuy2 +mtZHLXqYWS9@0H+NX6YNG#eRG%2XzUrznyrE-i*?GX)FhpgE=lC7 +`~utG|X>B!@aIS(r^y%Xs*P9IcoSb=$b3-Y&{Bi_T@*E3Urm +ypRJbNeZ=;?CU_#p_#5Tz{Nl(RN-KHz)ON;{ySeGc@HfPCW&X(j9ESffh5syI)^(-IJq0aqX}#O+pF^ +@z%l$20{})h80|XQR000O8MnywZ!WubY6)*q*v19-M9smFUaA|NaUv_0~WN +&gWV`yP=WMy%g}QzRfPV8Ja-MMVBxV;7)g%0sU#X-NtL?~BkPTUKLQ- +JI^Gy_`=!@jF>uFJKL@tA|wI%bQtMnI|JooQSMXKKb?k$`{Z7@Zy{D^@}f`fAi{j`Qqzuzx*HNKl$w^ +7oU{ZKVO$`A8!6~b9Z%HzPx{XU2Y!BpYH$t=Jxg~KmYQ}`@5SrS5Nm3<<0HQ_1#l>lfU`=;$znrcQ;Q +r+4J|;f4#oFe|P;*?tdyzzcOb2{+sKk$2V8+uK%xLZ|?6N^W($2`v-lu*Kf;@A2i +}WUh3+BvEF^iOa1&*e)Hw0#nzfR#IOGR^YZNWw!GxGkLBg{EY(b_xYH=dHnRh<~ +ODM>FVKM%Xc@oe|fn1rF>TM4xh@?efjRg)6e&J=kw=O-QN88aP{zkS^MeX`no*c|Mc{?ys_Vv5BKlOo +2$F>aQ*h?aSxvp@l>wv-u~15L-zmW{_V|AANcD1-P?Q|?)vHa;g`pcbNGjEzAs;2Kjxj5KV08kKjhPV +_x{J*n>X3{>zg;%caPWQ>ao1zyT_mZK2u+DBd^XIDPP^^@S5GxakurugUf@oMLYmnGN +wH&;*Gf3D^`I)0ir{h{3EYCL@G`T4I-!QY?sZMnJAus`SA=N~y>KIq>PR^`X*^8WGqr}wv)IYR!n{L7 +2i|NQOuugkM<{#^d$*~^#DzIpxU-{o&}rt@EO{q{&Vzr0HbzAgDw4_9|jAM(a?fImHd`Q<-nk7r-J`1 +-}`KXdnAy?Fi2^H;CRSKq!Y&&qetUcP?u<@aAdds)8w{^fVyzIy(7DX*@tKTa`|`D>H>f2R1S9P*d@o +XNM>Pggg$kNeU8oXh)|H+cKD{CxG->s;nH*Efl%a+O=;-G~3LHN3sQ`-`48yZn7Ze^+jPDtGr!m*sB{ +H;J7@-#@Hwj`H{Qy-d)*`TVjp%O73c{p)Qm!K>{4)y+>i^jEj{_Yarli~GkXe)^|p+4pd><1>rHO8Nd +(e)FIGSDt_K`~OFy^2tRG{OXFu%BTA2;r^F$^&<=E$Db14|NE)@0+4cVJ|;%q+`doyaGTGU7T|qOa&C +{Dz+c|I2W(H*Z+^bJzrFv<2hI5(uijnVU9%()*Z=nZ`tD8Q{p!ct#O&3(jg6e6AMf*FUw!t+7q2wd^Y +6d>?2q4VbM-+c<1x4L#^?P*?z_*qU-MbYXP^D|a(q6`s(es-G4jd +x3hniUw*2AZSAYS{_rl%?XO+`GN1Fm0M-}3e|d3{llH^wKY#b)%V%Hz@cS39UcY?t#rLmYeEZE0FQ4W +Aa>)4nV7k8i`RakWPAvZ0w+}L2tV6lnBRu=!>*qhbdhx%WXO9|v?tycgzWm|!w?BOK^7;S#;oFzLfBr +K6`8OA()Z;P@uF>?%V$-u}G&BFfSG#ock$=s0Sz_8{@Li3gUdGYqW$j154D0POnq?2HxAlwsV3#?VU; +4X+sfG6b!p?^_9K7iK6CI@X(kU+Y4T2vdX8J?MSk#0JMv1|WT*U&X3Um-7Id0y5&{Ud6qZt`A^DbwG^GF=ONdTQ=2n +wl?gSCk!$HKyZiL~hdAVdb4{LWc8zQ1+^_CPzhZS4kCxZUh6P>pT=ZP@T+GO#$D&6rXoBmYF&f|F`n<>w!8etr(R7+YGi +m6_G@8*fF;X?I8QqL-MmM9IjXiFyIj+&&=TQv +k6!nn|U(^&T?1{#I@K +BHnr!vbyl;KMKS_c91eHeLL`5kx3&NEH-(m*xm3o~01& +cS4)IdDu47SOj{_c<>D`;g`^tpXdeltyE++_~FJ&R`CK?Ud8Vb;uvfr8K^){DnPbT;_{$)0bReh4X6- +Zu$!&ocJxVG;UzDxtT%}To9Oc?yWf8a{r`v>TSjHT*HVfmzL4p&Q!-+i9|KCm!Gc`5}8cHq^19o;Ea_ps6&ChMCqR%LNX`%?*~jgc;#3F;ayqXx +y3W=D2BDqQY|G=L@Es&ClpU=mD@38hP1xzB>pC8b@0Wmg0cH*XUU*r?zUor!>@yI-AmbmHGHy+Xf +=RAlmVTr=@R05Hnp6|H*qN!rn;3{%l=8JuSgUZ{{zhckoIS&BjAbUXma98qer>M#o<`PLbQn20WO|h5n*D9?|iLjz@GnqT>4 +^4@r*FAZ0HF>9nT0g%Z3Z$5n0P@Iu=kL=@#exCNIekbjLknw6mc*?$OgdI)o+BY}_xbC7&zgO+4WdP| +5s@!7)!#nsyCVAKFn_tsIgY!~1&MIBW0{Z~PPo>^NYEV +FMJ|@Mt(-*UI34S^Fkt>zID;^uX~tj@SEnzwi=_Yc}-60lOXz2kbat#{pxfvY{t#)N!MZ;Q*uA&|}hL +?saSM5@>OQKxRWvoR>q_u(}O;nGHQPt2hlPbt4#P(9p&bG}rvD%}W}*BrrLF$q6P8650qJ8Z5cNF&n< +Wi9q548;jSN{l=VULk~a^w)b0umjsM0z-55T0G9zSaRJ%T6Q&m6F~DPh#{iE39s@iEc#P9NWIU4Ng3A +Dx0WJev223r0WWdw{CEU?jjufRO+r0Y(ChVA +Qgq2N;RI*R3ZnX_&}t=m}N=k``bjz(|0R03!iL0*nM0f%7-me8bsiLyxi7tvA*UtPt-NU9ML}a=FW9{ +xttmlN^Y32sX2`7(sZH4hB<}_mt)o5)s>;b$H2QtF6%2+{_eN&n#p;{yjN~Qxfu2CJ0?7&_E0C-}l8Cku*fkM7W;Gjn0L2OvD^RRJv7Y{7BrnMi^aP +R>NLC<8sFw{r2_7m?tU$2>#R?Q*)7j7iC|00Y+xGJ#c}aetCy=Z_vI5BpBrA}tn5_yFD^RRJu>!>k6f +01yK#}0I)swFecu5746-Yv%vY{uCtU$72wklApn5~N0s&MTJMk*MoV5EYPI?r{RtQ%OVU-4L!j~1 +tS%VR4`J(NChKM`qscm10xNLG%(UmzCM$eo(yf4XiY<(!f +f?Y&9^_z(@ll4U9A}(!fXqBgh=t&;yJ#Fw)NWV!}%rSZQE|ASxSrf{_MBVDs6~6O1%4(!fXqBMpp*I> +_1g<6Jj*Ne3$(taPx_u_qmjpo=x=a6{*6NI*@34r)qMd`@`Q6px8zL0uSkp_jl*8uX*dI?6D1Fw((D2 +O}Mf5cy@pwZKRRBOQ!%Fw((DkG*aSUeduz2P++{bnHn7BOQ!%Fw((D2P0VhZ0G?-IvD9-q=ON(ER72< +>0qUUl@3-q_N0T64o0B4+0YY=bTHDvNCzVbeA&0qRTk$%P(3trN}N(Uh1pjnKRiJvSoXCQ{kKNCzVwjPx@eTJVw%RytVeU4ZWps6&Crqc|XNkb1XGQh~#abZRbxo+rf+0YZL4D87OBLj>KFfzc%03!p83@|dl$N(b)j0`X`wv +LE+p5ua*0agZB8Q7BnMg|xeU}S)i0Y(NGK|RdPNDnYFz{mh2qt-nxykvlt0agZB8Q2r_lH9@c1S12C3 +@|dl$N(b)j0`X`z{mh2qaS-*c*y`O1FQ_NGO#CvnhlvF8+w9~0Y(NG8DM09kpV^q7#Uz>jK0TBUXmZ^ +304MJ8Q7BnMg|xeU}S(1)a-_k(qKakBGe#4X@%$kM#ehV4PJr(l?^??%D|osFfzc%03#EOOfWLR$OI# +3MAlLbZy8M2`#7+GLsfsqA978qGzWPym4!V)QqG2+U}S-j1x6MaSzu&=kp)H;7+GLs&2 +!!0B@3)9u(H6)!k#QJvcSj!BMXcyFtWhN0wd&|8Y!oS>e~>&l9rt7mb@fC7~eQe&{Ud6(`g3Hq@ibGq +!YDeLl2{e(ZlGmd5L8>p5q!ljh;qNr>E1?>FM-zdOAIwYdJlf9!`&-N6=&Q63cKr#|?T0J%gS>&!A_} +Gw50AS?O81R;5R!N2N!lN2SN+C6?iMj$7&3=-KGm=-KGm=-KGm=-KGmxK^V_r$?tpr$?v9<|S#)jvTk +sv(vNFv(vNFbI^0pbI^0pb8xLek3o+?k3o+?kIhRg!|@z<(sR;t(sR;t(sR;t(sR;t(sOaGMUO>~MUO +>~MUQo^+hW}oJr_N}3NmCz=jv!$9XYEbXLYh@9gVY-MeAhII+}Dxr0itTx}Cfva8F>n4SJDz+xN*YIqP(dxB#O47YeuM|ag&!6c&Zaj +8l=b2%8W=Zv@1!e8397U)0q?}A~R!_3L$JEk~E&dQ4ut5@)E=3I4Wwv@fgx;L0~iXQNbz|xVFQnP@3{ +CbKF32b7ja2sd=n0I8vCM`EG0Ead2 +KnGO|FvjF_gAz$(Pd)^r~v2r)EH7+m0DPAu$LQAb#F979F))40h?0t4dg0YhOn9E77(cJg1rR;%cPjz +nx|p@uyTrSynP3u(zhBv&xG8aGs@02FczCjvLLoWM>M0>;997!J*_n1=N*T$>RpblXTKcPFWQ>)?4g& +w0Q(H|6{o7e&#L{T+xIxmP24c8p-a;|ei{V+LK0U0$s#m%8=e#M`_G1fb54jt*|@af6OJxHRH^}Rr4o#4fwE`<=l)`_#^T;%oi1l)Ax-`?ZIOGC>m5v?l;7kZiwZce+Cn7VK>#EvyJb<4;`n`Y +IOa66QP(e72Aj=joGBIxwG^JIBPdOWz-pnR77Yq6Q4VF&oR;FvTU*UTc^GR +g|+BbiQNm-%#j0}SuIL+Adom2%n(W1{W^l6d@Sy&RJ(CWC +}zqhcyIT%#o^V-!eXi7TZ1RISPsM1u8Opfr#o<2`ScZ98tFLG&SPBaOQ^i@rkhbs81{i!*f9f9 +$^(9RO1PgPY`^}M{ZL=-RH;%fHxG_?zPU6$i!7E9ZLQ2H&96>%Hj$Nma-ko)0R&gzbTw+l@46eePHWO +A1!J{BO6eR63Wsu1HAUHd9C`Q(=AWCUmcnP7jAuJhnLDt2JcD=@AezEmU8y9+4<<3=bA#0aBL;h-`aB +P2(adO&qCL0l=hU|$-_DBTdp1F1+l(naZ!nJNFm4@VMawKT12HW+v>-%y&Ds_X{2O>~3B_|(iNF~0x% +At+Rf*w$TT=ocgaEfi@lnI_3`MRK_Y24%`Mu6#L|DtcMsaaj@25pJ_2e^&(&D7XGLu4bbHMKcaBo*3I +=eX3DsD=SO%0N;w)n5}{g61jZ0yL3%aE7YF9T(5h-Xn>zH +z4D*KphJNuZdP+$uR>7q`NouP0PG=|ccA%o~s@ +4q#hG#^GGg2*;?6MQ@mXMuhMdq$kNPa>bK$WNBA*$3Ww%HH)CXp{S2bPV;6#%RF?0|eKHWI94;6jg+Z&>#^M_E3_<9pMy3RzWi94=27UNJa(k=Urjn&UaHOec{@(@(rqXQqi0ouvjNrvyqw) +{HCe03$Pn0(D2P^xalgR8hc#oUWr8mqwNR-#x;$ckrR13N{?05?pB-z1%0IJoxEOGMHK|LAjx_3bAFS +T`1yMbjUdJ|6G9p>b3x}fWT)T?4j~J)&>|{JIi({}6#SL@an5h@l9&oqh$s=mO~DQX!>QLW(NV=zNR3 +Xy#Nc?w4lOe7$bXIi=U|U24KPzSvRM`qae9bkN^k6H{wlH6~?&9OFUFw#p5czp!&mI5s#*k;4HQhus|)|2RPx +~jjBQ?6T*Qb5^)saQ=^nsJktP;3L7m{3 +ig$Tj8U6jBu1PXi}D6bw){mS_pn2E$@f{6*@KIp6rD?lm_5R2+#F=?Yn>d*ZJm|5mrv#fQlFXyQQuO0 ++>!ihL=RM;bSINkv35JgHGB;qPI}FK^GOx}e#Vkj`3vqGgQv>CwW)(Zj1-38FgMFGm^h+I69Xj_ +!|IRI?ojvYI8jr%F@hk)7VKGe6kCFnv=Lo71go-Pociw0T87HprgSSz1KC843oj7~gti6AA7dK5D-2e +#?!u%q84#yv3iMS-r-C=hA&0oDIMBu!b*}|D`I7u4NiL+C>12b>UnmTg#e#?sMo_U(kmV~Dz9<+GJlp +9vcik&bPckx4a9jq#MLMu-hoW3IDf)UD3Rxf#n0`MLfFbWvpK89(i{Lk?)5Q`IUBRK9TxL)iQ>a)dT? +8E#30dq?`Q%cldNU@}p*m%5uD|y&b+698a2e9rmAFVuY*$RG4efhwMk?4)cu#F7d?&VYLv$q{0-PC_x +>uJ|L3P(MYgSMFs~}AWk`H) +;95Jvi)&j;lO+*d0iaVwR-pbGH+e}Y{3DbOmlJ1yk`^=)H%P=hjnp6gM6!$uq>1yEs`ur=C0?EPo4mx +RMJlkeIP|1Tq_Wa9*d7)A6wK>n0a?EwtBG-8_Ms_?{i@`#z2B&Nb;^(mKQ*YYlS22QeXlrcX!a2SWIg +b7@M=c~awgspYmJO=(JeBr^b$oCOU_6x3o3~}rbxGYQKer0D@3(Ee1d4cw%2mc7oYK}r#6oztEtX34fR1jBQ_yw61 +2TnYK6V`7)V-Rkew_)W&c;nFStpbTz|d)3rQjGJN=H~SwEQZ)WHFj9BTBUS4t1|it$LwO*HmUeR-Q@@ +o{uS;Qq4re6c9`5V}cBI))nJx(%7}@9Jdn(XiHScEe5aZV3PggdKAKA=0h +jDIA&o>ht-0UAToKdV+GSoO3%*oI(4rl6s*Jhs6-&Sj`QTFxCO!SLKI}!tb&&ch1HCkyrfX5 +;&UfmbP__ug=mFGtNXwOwqOZjsKbZEIl#VT&9x;2;*B%vUVRB-A(cW0`ry!0Sr+Iew?##%)7VfRNp^Z +^$p&mhXDK0RC$FaNwYcQiJ*zy6=#q&sa!1&QsiQ4K)=fGs244p#NQ5}$?1i}7{IrwQy*eU5Af5-Q{Gz +B>r=pf(*3g6!K{TDuqL@F#JMr^Nr?<4K?Anu8Q}-G=btbFObSQ^aaLFw?8L0&&$7Nezhmz#f2D`?FI4 +-da*3PI1(YVP=yeVK(Ac)bPim@eXBI}s|0Hdl(#B}6M!C67kA%z39aD`Lv^C4b>4kHmlj*=j`P$^n)v +4({&h?-va(h{6ju@T$>en>Lx*eC4HbxU5-IUZP`o@M6`Ae`t5K`CNTifBqNQJfR1zVQ}< +e`PA)Sup`FSpJ*Awc6r8T@hm&Cm*gB@j$Ypxzp@Y%dSY$3WZs+{ljz!@muz#tChZaiFc9)5iY>JJ;Tc +2A(-cpKz6mFvDGk&A)HM&BaO}+>L&{C!jW2@f2O7Mj#VUYGhDasVr=2j`LGqg85PTh#Q*HGO*hSXe9= +91hZ4usv&89L^i6j_y9Kmj%FhN+SRg!HZXoN+95uOuU}Q(75*x@9MhYk@dXK4Iig%%MYKL^?w$MLBQi +I7F=YK9BCyy_&K}%4KqX$1tw0kOiuYW`*NHj%7$$ShCS&DikA#Q}$+)jkfJCb+0Ct0j)4sPU_Gtz$BP +j=|*@}$FsTkvIR%0cNToI@fi`3jr*6Bd9M^R_%2zf;jpE +LG-Kcvl%F4(@Y3=b*rhNC_CR%o!9HqQP5ilmi&O|>v8TAqctF)aTa_U|Sb!8@h%wJB0S(li&^I0Rrd#O`(u@3_m~$no5LFeuRSWRI_nnj*XxIlQ4!%iqxO6k0l;^T +=Ww1rlteRp|hyqhw3mVTCu*zg+LAn){eIE)Xo*05PBe{R%I-Q5>iqk@Div$T?zTAd>Z6aaTX7(XB~Eq3ojvs66iL +_wm3>wM(KS{_jFa)Xu5TbF;u~#tR|S2@DAC~(V;faanVbbvarmh?-Co}3^AmRzi1Dli&fj{MrtCIkjJ +tvCBL+zF-?kXKOvw~9DsjQ1|DjpjJotmI7p$Y#Z^y5K?{|8XmxsbgX%!o!t6X{>M0P>xSSJqF-!tB%$ +Ds#rBhLn}ipu1*pHU3iqPjBTDro@xZo_KjoKQVNpsw&Yg@y`%q788%{fk%nfA@Ac^e9Gx3mdqN{dcf +aoJiiQH=0bHdWk4LE)~Ek@IHa_jd$7I}RYY&$xRk$1hT;-2>EJ?wkX}Qk*2-Hzgibga&((3j$|MhA9+ +N#SP<9U&6@^52g1T(Umf}@KoN>;Sm2S-%DLb4T->*29$nZ0-)-hwBL6BHm)*21R0^ASGg$BDxz0Xn}%K;zIjwo_iFSs +7+5IcQ5CCRYM?qe=7Dpb`J`+s;>RLA400W98y`~sk_6k_<5KskH1QA#t`dOw3;UqRuPMQet`XAhu@qC +s>Gc98B4tSg68*->OQ?H|xfuljSLC@QP(ylHBSI%@3a4DcA@T+O_0ak%AAo6~wA;tIkEwet%D-{$)|N +<*B6hF}-b1e-qLiUfb!JsZ@|BmtU+GRbm0+f{!)e#4dvzrbDNJw`%PLF9>ARvTVa*%wLNJvUa#A3ai# +im&VihDbD9>AWoE55j-74z9NT{m1Ym@5j9@6_n^i-t8wx-dZ)vG|33cW(|weEM%19h)8q*xA>Q7@p2) +s^l^{upK65uBYYL`S8rJY0q5cf?o6u7^D0-0x!oCKqmc8`aQ?LtGfQizEqC8^3@PlTKfDV3WqsZotA;mH$kEn1Gzhd)1^##dV +eF3U((RRQD?3Thv}Mq;wmq*+Q@Ekm}3HCvSQ&PuG0$NW1(=!M~JMlCtN1qwdu>7UEL@rm{E65_TC}Z2 +c~%G0vowI3@+ZfBBurPvY^Qte$e+iNd1xRR`vIB&TsOPn49`)wb-+AZSpUZcN4ip3oPMK +MLlXVU>|zpRF$39E2*RjZ=9*_)g|GH#eeJpD0succ` +pL!3m=DHiayE28DtC3wg*u~$N)q4&8YOiaIWqnf@mzEIukl8l4dLOpZ^Q4|xAEdUD2yGx*^B$GoJ!Zb +PP3eHVsyGrP;oqr3}y;i*gu*nvH3<>H}Q3bmJ4y0mE+bMhR!uKaTz5IdY>0TvZK*E`i`T+l%>c>Ww7FcO=gIXl +C-5vac;(TJxoydYNV@U8zu$t$dxKofuL8_fmE4N&7ee{ohsBDezZ;GJjsLZyk1cETBg=iQYMufdSe;6 +)YytCz@DNXqPZ&L=#;!LC)xAm^Q3Z)uoX*JTB{-DO7rpLCaU`e6;!uH}=4U;AL^i)=4p^OO=a@O#tl?pD$%4cMr8|HhrN%d^pdGkS`j^Nbt$baun~JQd+Nn_Gbf*epF+NR;A|I_Y24cbhK>3!XxJ7S(-1~Tmmx$V{hD|l_ +dfN-J55a&RTDLB?snAC1CBzN)fw&Q>z}5S%+Ri(1L;@X#NL-;miNC6nL6y_Ea(zT?Is~CSdgxVgN|PY +QP>Y}!HK{N|VjJU%mu&ZhB*(8*HaoTmtl~1%ADQp2C4*Q1*rxOZyO&BH8&Vridq&+W(JYUq`W=yAm07 +4TSJAePNJ#fo6(R;{%b*0wRGG5+edX%=OkVQuk#R5Wp$fVz?qE!r(L<|*J?5 +-|B=@Uv1IY)&NRK1aEFuQ_!rKnIPmA<30pdd;aTp3T*MnD8&tEkLPS +CyPHA2=SBLtrU_2(@<2IZT3hv$S=No4mwzh&*J?Rp}w0u2OsXJfT2LALWDtPVN$y1v^#bDKcY#v(Bcf +?iH+t-YvLQ-$R~*SA-Fgk&m@qY9uzVgp{^PRT@FZwN#G|JT~8{)V-SKo)Xfa_OI&5mkKXP+`EpnDTAu +=T32RP<06uplD)*oR3k-fouE?pYLw&{F;!P}n6lT1#zkjuT-ukk{6olxwM8TY6}o_vUo^mV0C@# +#Y%uxbIIE~v%*6r>9hxUY1r%Mh*V0C|9Kn+?YwJtmplrm*@?@yWn8Ru}UI^ovJp +Zi#AG|K?qd!DC#UU)S3!qwqk(lvg;ozb+4hc74PdYd10j`b#e|Zv?>%qhj!hn@SqxP9j_3t*De!9_I{ +3=yu>A1xT=>F3rnwtw3CgFCQ~+KyQJ_E3Yn_pFz!nSQT4`Y)_mvRDs``}V4VbLRehiM4i$%?5KHGDRO +x(dtykyj^u}w^AFVm_C6=|$ap5JL^Kn8=-v=XxN*V+J@WUDn$zFKBojSo$l8g+~IU^+_b&hJ+#aF%W6 +-!?T;H%2}RXa;XlX0fU@jgBjlBz5Z@t#C~r~+5)UpvXRoVV?c-uFt$Na$#k6zQojMpFEa(@8ukJuBPQ +Rnf$&!KGj+D3azB+N*n9>RwH?hssf6a%|HHo?etowd#7Sr%F>{cBTqOggBSfNVH-AD$e)WaONcA7960 +`)xP5=)j~-QfZ3_Q)3uBwSd`^)O&Y=fuAi6iuZ7<@)B9ej$uh)JR|PDAYlsbqqAESh`5}YFc9UG#bwS +9+&P^(aQ$T*s1N9~N)IiJO^^Uj&xf?|{R36E1>OeP_rhv@EtvHezD*NdwpOcy%=eT{A^2zPhQ#eV=$O9KQH0000807gYaR0eq^YEBaX0J}^80384T0B~t=FJE?LZe(wAFJow7a%5$6FKTdOZghAqa +Cy~SZByJxlK#%Gs2zVexD%{OFMIQ{v#|^Yn;9Djz%l1=I66ePn%20HSV?V$`}JFIPi2;*#`euj#Eshx +-BP_|Wj^_2R!ZX8v*~~0hvOHgXX4fA(ec^UvH0QD`O!~eOWS8V&&2hr6z6SqTh+x{95stlRGoO;{BN~ +h7wY@n-KMVQMc=eyzOKr;7jxC-U#DC*&*$aGa^2jQt!S2_pBPiMKP&rgUfh>#*s7^J^|ifkTJu +E>EH0YX9-p^m(U%Kx^JqpKPgS&ftouhb)v6b}M|(nk^Uc?4h{@&$;&8ndm%42yF3YZLKb8x-lB1^X+v +;Ycmbu&QeXEWL@w#X~h>L1{+g5jCUnmKC(Kq7av0pW{Tfb7(y1HqL_EBqX*_Nf~nq~i>1p7`rHXAW7Y +SEU9sBQ=6*D}Fw`etG`pS{$Ce6+a(dULKxZzx__NRhm|3mHq +5U)!n^<;6kWXwME@OD#6tNua7T}UaB64Kb*cgy?(2uKRLZVJHEOSC+C;qP+S~dUY{Pld3AUxF5X;ToL +?Ou2ys=GP_b6#l#;!QmukqnMrm?U_C>Ys?9$&V^L9$W^+K$QkEJs6ysQ+WM4?>d{_%@!xNhoOvtHGO6 +#AX0mZEO@NIbNa!j3}U$hvA2vTvk7KR<{>E>)wV{;*aixKiCus-+tGWZg7vBz|bRUN?PxsQSi@&02v?uc+SK-6;JiY0F~167y1 +lq%H4T<)gLo)v7nXW%@lTm+H&grhVM`Df(qlx(>&Ck^Tl;%jrj$}?*x|e-fscg?o3;J91@LToxxv +#_us%6jJ+pZ%w8nwE~jmDraXbrkUyWHyn-!k`G8vR>4#ZJfiryVsh?Mb6{#N52?QT@|v^#A?K3QE|-= +iF&+tU1zY=3Y6|bnbMK8~o-Bh0idJdKDH~2J-2)UARs_h}oD|0LxyI$7 +ct-YjQ2JDcSF+v_E)Y~I^@dl&PH>3{SX<$%tCY-|pK=_F#79trtUg8!Nd)Op?Q5GK7&@ppJNMj&nHOe +`3=y_N#_jb}~=FaC%{}3?s=McjX&r&B&I+}qqPUbLbBa;M1QwC^Ia~7C43*HE+(hVvHh-gEP?1Lq^OLok +~B)@B-4`7Q-`h8;R~Tuy7q}1Kl4YPGJVcW?+HI)LfTa)j={)F=`H;_Ny}-JvU90(0{D5T*EAx#rGD<% +&%`5B>f}jnnukL$G$(cGOe+HigBZETvYs-JI4b~gv4;oIK7d0@T%Ke>Nq4sC=mh$vZtC!;j*T^K!c0+7>%8cmr_aa4 +WVhSAgy8#}WBJ@EN7N?E%kLS)W75kWxmbkZeJ6&NG&?Z7QWm>#2Co1{^WNy$7OsRpzG0tbr0sv(b3%1 +qmmq1R(8Vr@cz@ERrE;f>6RyII0M$G#;{1Z`#h8~SsP4pR-pddbeoh~g4LD2w&dBZ6}ou$g&XkrvSlx +*Vq0-0LY&gd08L2-qMGK7rV>A&-(@@|`Az2VS5>GCA^5JE3$(r4tY~;Q9safc9xe!LtD5qbU!eJk}@P +d->Er6{XEdgsles&K$z6T@aIqhNQ=L7?~)0Lbee5qbVgNB&hTg^N2$%kVX`5$geYpamw*2Y=Ebw$G@e +0EHN;5CwXbeK4UcoQd_^uKW|+(0BQeMb6%Nr+F8VZ}^;w9y;V6P5{dr$dYa#?TPZL%U5xemD@)6yi_5 +tDUzzGGV4J5_-0par+ejaEq9|)RxEpsBG;z90^PW;LdN?VtZF +_U0aIIjr;A>rpy>0oI3+nAfVKQr+G4(;?bP7K$@2id6X!EYurG(}hQK=iz>!ZRkKB)+TV*(MCjxfa_NxM9MbDcoEQ3%SI5_{qzX +wEreh@M;S8a{ji0@)#%C%;fiO^lg_IDKi}(AAYB4NQmtz@lz&`nT7}FIFIroV`zE~0V>?eK!t!T8FnD4&)NdH8l3*EJP|g?3>%;tgyoyAzWK1W}CgoIQNMuChy*43<* +-`R$zCdJExS~f6O|D3uGjJxtDpo}W2SQRBw8n7=gEBZ4K_ZUzjVK2jdP93QL4PJFrwBlPh}^NC4oMnX +pQ5GDhX=-DqKA7X$_vA56#POM_B4q%G{20)Zz$lqejd}~h@3C1;bSL{%jwuOPE_-Vo{+nT*FAZvLAxH +wmNMK#Qy`J-v-JRM4GB<*@5z^#4Fx5d=WIxuj3h!q7D(oi3Hp%iGlFTDijZE(EkRYGEqtgQUt$cW7^Z +tvHI1FAQ-3arXj_s;RG*$IjpMe=@r6t(bkGhf<#*|XdnTT2P|V?XJ=$sLINi&G+c$6-9AP26ON2HgQ( +Fsg{Ct@4ynXny!JA^fR(k#}V_=P}sw50=75 +P*qmNw2htBQ@7#07bYX{!ge!ZtueFpto{uXfAbjFdUV; +RVqI$xwiX;(TaO4>P(GU_wXq)bF#&tqc4Vc35?O3CBU{v2hNBpivu4U2~O1C*XirfDA-XGVd5H9)c?P +4~ad_tuuOERkDd_;)^129ad83MP?(2FK>*%ouLYPk{oc;bd|h;%__4Sz>ar`{b8d%qv3~5TZnwGlrJVPB-|h(Y@9fR%+4;%r=%pvV`eHq6%eCrs*3{+Tv^p{Cio5%DIeoq^%Y_4+yoeYa=+Ax1H8Hp;AR7uiQ2EA{1 +832P2_G(=UKry%{ak56drUHo4Br#&%11)ING3auY;^Vplg=bN_G4|m^emP`F4W~ZM!HP2>Jvu3FuZB+ +^_=1Ss-jrLFqZ5aK4>W8{{5G(b*(@zZRew{w7?WO0b^^=-*lFzhk{7JL!OD%(b7~LLGa^AP)$Ew+MMq +DQ7>C!%6yIdEydXdVcTDt3YQ%3sfUgc2wp=kXevj#>{FO((f`FdlXm0lGc8|$VlYqiS77D$~G>#ijDE +Yf1{Emq_041^v~r?|tv^%u=2F$F_ONl +eSSpCHATFmcCOo5i~88dyXeoqV3uaf6+bmjJ|iLhqNumV~`LO7?djHWJB-n)b=0t$S4p`&qT91;?ZQb +wdGA)79XCFm?Fu$@bUV0lR9|+&i;Boy})gzFu#c#6>rVTy4l>WW{aXPhC$ZS-ZnK&r88`3g;vGj%W9z +=a5yskm4aV3j@up-J8CK_*7J@2dl!OwD>m%KL(_ifEOnSa3&A~ayD2BrrYUj<)@X?Rv1Q`-d*ZLdx%^ +;bU~>ifgfP^R_2@7@jZLsGBV}cmmtOsNdNs^Rx8$mBq$jh(jbgLii7_K1_uhf;NGxMDppm8G_^dAOH2 +lB1dU<+sJyQdHWtaF*MV4yp{?W_8dprp?-tdd`W&du6KQn0#t4xC8vQku||K165F+KZ#xNxp0^tNC5* +2}7OKBZRdc{qO01=x*${aT8@f6p7MZ}G3+oa~uD@e==f98aA;IU0}}3jxWH$alFYy7$-rjnPjIKWp^u +mOQ%nCQZJ20@zG2$WoVf6zRjwD$N3yz +@3LhSU)Og=mjbic6lw;CK>z~JOj()uOatHmhpnHV7W8m&^67?s?pM&aht;QY=eX_M@`e#L_Qd8#PX*D +*6XZrc@Jd~de&z*k*P)h>@6aWAK2mnS!Lsa2VhIlf +W^40?6Dw;s4A<^$Y@8e2y}q_^bz|@M_cl(hFR!ef+SfQUx@&JwAqxw4ZLXhgY^-ctzjW_#ZFzn3`jdA +LHkXH^>$gs*|F<<9ZEUWe7;ZLJPH(JljvB|~4pxUZo*NAh#y>tj935U?9h#>}%YCk~Aw=5k#dehB^8v7gP7aH-uZr +tVhM&s(np5Y!101U26qwUVVMspjz^Xy>R{Gb)k52BwjI5hB63^v_FPqW@z27ZRMUNrEttaaPK&l$MG` +u;g<%{qCW!A%3dz&hz0_!sO-*ag1GI_VntCDyuU;FlT9TK|%D!bb2F)|y@5uNcfO@Kpnc>?2=et=Uk$ +&Z=Y|`3AcZ*2$X;W*_+$>x7NTuNlm)`!@_`SMpm1v)Or@-GuA{-(fK8`#shP8`$>^%=-9%p*_04qYn+ +-H|R%fSepj^nDr4D_!BnT2K|)v!QjtW9~}dK&RUy`{(_-h)A&o)M`+-$7|gEvYX-Ls{0$pagMP~<-Js +vGE?6zUH}E2%;|m5g13i9#O_o6)WF4D(Z2SQ;d-uMv)o7oya%3yZYk1^O(KK?PgKy +#yxA7|CDk9>lS9)q7`otUv6|CDuNp1U#QxvuHt^2LPF?!Qj|kD}xAIc(fD&tysR#w@4E8*nl5Mr$ABj +lPSKH(D1XZ?rB(-e{d7Z@?+?2Am>qz&^+uea{DZ1D+&rpegbOoFZ?)ljIFFMc#l@_+7H{cX` +15S}Q;7RfZI!WF@Q{)YJlDt7aljIF_lDvTyBX7Vd@&;UtyaA`k8*qxe0sA0tz@^ArvF`Z{>Ds9~uu(U +j>tfU$=2JIXr>GmPQ`8MOMcwEmMcrs!jJg3Aqi*zFjJnaf7Kq;51WMBV6OlD +flO>IOPV-9S^+4Mm!wZnQ3@y8)Nd-9D+?iSAbPdOpLhJ5b%2%oKG4E~dI=)Q#3Ys9UDG0hgj~z@=1o< +*D1Ey3smC-MEqzb)$75>INryP~G{K2|lol>PF$ER5v;)p}J8^A=RBv-T9V@MRlW#VyatanK)71t$gan +m87T}aEiK7WjX35%Y@UYJL>jnm{?S|%rHSGQ>1Rdr3@39>P9D}sN3RpTd3QKVS>JkQ8%u;5OwFf-5#l +1q`J{ZG3vIs-4^Q3ce~MelDdHwa=ZPhZYR`@k1R#q=%f^NyK%cIr{sL;ow{)gPLaCN$rM#LIw?in=){ +NDZJ}CCnd-I}Cg{3^>ULn5>{9A>qPo%Ai|TF@b +u$Ls0d@O~DJ`m7=5@KPscvJKFix9QOzA{*SI6s?scuc%H}*iTty!^E<}1ngDHFaccI{gh6qThY|{3`@D&O=&Sq0MFhq0 +X+Md(urXrQ{5Koc4C+~i77pL-7X9hz-6dAUv*okyDElBzUl_`%=2zandCbF1PM%}WQvhvg|Th +~2}hB +}Ycxc#LPi!X%%%fqFPO5M9su#BSM^oP4hv=#)+lgfH%6OAg>tXPBUMbx#g7ivt-q)G=js3=>OCDWh(S +VS?6E+z9VebvuYDWrj)qy6)+F-58HzhrZ^k?tJR@7E@YOx5Y4#QMW~PqxBSHO2A&I+bj-bBrq%Lw#1Y +&!(;~3jn=b2!^BBU>C-ToeoQ%auX}gyrgT8v`G!e8bz8h{uzzK}Zc9vQQQbbNJ2WvRd)jxf!US_%%|-N*b++UHp8al0T=(n^6BpDi+LAL@UbkpncfRT +tZOM@sCKlB#qweZ>-7>?(4RxECl0A{LI`mbhx}8wBOmzdE{R_@4)QtlW@s=DJb&CuW8Fd3Lp}KK(^`WngofsxQW6F+M*U +g@>ioKiC33boF>vm$8Sg0Ft{i=nelj;~I(|mhKbL`ftGdMmc@aV6(%z3_PIC^um|b}IyLGBI`da +8hzyf_)s42(qHe&IrEb8pUmVyqUN?IVydOVhQQfi?CNk=_sBS0J?ZoT0P`5>OTVhHJbzjM<+d|zKsX{ +AEM8{8As2hD0iYaBP+n-@#p>By`0<_S&ZW(o>lPi+CJLb?=cEis~bvvPMnPK9Sx}B(QnPFm~ZrPTcnz +~DE$&smU5p@GDMcw%u;q$lTSg1SyGhbP&TgKdgeOTR2m>X~{y +0`z?H&bF6NTIh115PnF;6e*b02g|zu;mC7z$xYiT~}kv`|W!e}qZ?K6s#ojxe#DJ_R_%+<;Te +4LHTzfK$v3IK|w6eK0rrF2~$vGbOu+cX0ZYMRfb5?iq;gn!0x%b&C!Tv{1K2bc@b>wX6-y7u~Ycr!1m +dbox|2bz6=w$@fbn)D4;{b#Ne-qxg6syoI`Dr%&MmeNeaAOUZ859f)q3T~af5m6;opHrLFZZ8?fhE~M@&LUiX-x9spK7c +W|vzUa;mDZPpA{KKb!78BiIMjtO)Klg-5!?)dR$*JKdO5Meu*rlbaLXWlUL+~#N6yAaksui#@v?eIMrcp%XS=}%x&2O?~}Q&i1j +7)qV6g(cjf&OCoea1{gPUA&kc23_T%J-lrGkn$c~=M4=H7v;4Rc`c|(q5X`sk2$$!m)h` +PabrCurQGo+MR-Cq3?qq^C=d-qE$o8V_a-MEsPx|1uJJL(oK4V0}f$=?Jov$|cZFWH6rah&)i7V5UBZ +YS@hbh4`34RxDU-E4wqWth~eyDW8E&M&E{+lygR@uh*H^Gih3oxdT+f$FwUw?%c&!0NV8H#$jCH(Gny +1#e!nz-Lmfx@T~JNlo3g>YfsHi;kX}eoARsU}90-4mRZEd)@ieEqWWgjJll|CcAYnrLnr%l-27?D$m? +_{A%V-I&rff$6|H6NGUDny?PYg7OUIaR!V=O+mcdRM7J!Z^eMW1GPlv(Y;x-TIF)DaT5}g=?y2v`nWy +z7(>^q?^6N{gvmYlg`*GMb)S|nl?zy3EQAjCUU*aO96xk(c?7=R{KdIY6NICuUORBR8-Xgl4Eb6A0Qu +6VxnY(80d1vmbi0)l^e2L^83m!8{ndr7Kw?%YU-sq--y7|b~%w040yfgRI51w+NxvRq561yaS4}9fUm +w-kqYjo2Vcs_0~!fXsDYFORc(V>YjJ%&d(@;7RxB{ffYS7P_!@*Xd%^&>)82{Zc9cfJ2TM9I~HU +cDJ{pBSX8%H>NbW6tG`y=HFaN^)NN7S=(*7H64~)3E({aP9(V`GmpE8nl5cg(mY4XXZnXAs+^bjWrsG +R^p|$F+sr$;L?uxGrl&NmfN!|IXyCNrb%T@-;PU@C<-Lm6eLB?K=dku)XSw%H<*VKJwQny8QyD&^FF{ +KN`#Nu`PQ{5871cc;4bptM@x&iwzOk}DXt;UMHew-du8FshqfOdV6!)IB%U4PM(-ivw}dvtAtNU`LLN#eq)Nbz2q(T6W}E4ln_|7Nc&*VH{X)D5(d>IPayb%S=xsBWOsQ{4_02ZDM^7$#_3S=BA0Zl8up+fX;_zNYS)y61+vEvh?zAH2 +md5$&e5P`Bv7SBvVFojoOrDf0~zd|-(KUq$P>WvW|t_LN0+%T|~;F-)8+4h-n5Zr)FQ;%iOab3@%0)$ +L*6f` +Ys2Nn$-4)egOj7-=2l~L_h8gmURiFet&bYRvnyMp#>!e_v^iK=TUk5R7!A*k^zX-I9vp0Lt_)5MZ#Xs +_o!MN|a6G|V=T4tkUu|5oac1r0=*(cWvc7h0((U?iOZR(XxVo-7TW{RAzPYS_QC)0fZ=ua +OUxEph6>bei&zZ!=J8yo6^ZX29f9bU6_?Y@Ouj~`v?^*a5f&eDyyAG+nhv0D!uSvvT`1ILzbJGylA*i +APdYwT~F-yRxHk#+61dOd5 +sJ}8wi9#>XsX5&z*9w@1m5DkYywRciLd$~Rpnj4C(8_Iz$fbrFyg^vp#g?G=uhGp^Kf!P0}OgNS#5w( +4=1Y)Fzn&voCX;8aI)S210PP-8}xyv>Ky=2)r-*&Q}tr>!&JRcPOVhE82?tPUW|WB*PB=k4S+2Meh*- +qfmZ?SFz{-CT?YOUz(ofBF~A-J{{&#)fLHCgDtUIAtmQR$paKS73y@dzeSo~8KLyAux(*<(XfHrs(e( +g%MK=J{6(#lxZsvBMfw+@9O$OpN?gR|PJ*-bf0Z6RTVj%9`PMd+abvqpf;=b*48Hk&+A{sJJMqrU{m=jg8h#uY6tZes_4#Rc_~Z?zkN#r5?2+t@*1YX4m`X?PRBx +SYkL?wdihYVTb$`RyM7R8Ctn`RH2!DoeAO*j_&b7+15H{PwNDl;_w>9>Tu{7#Gt^e)(^JDI2YsT+kta +aW#wGZR{|xxSD>#!AF3_#q^TjJ&LafRZNgn{Ud;?m|oK3-vZRd^tQoc0OMl%$u%Aa78kRaeDrO=REQE +JRo@OUE~b|>{5xQ3W|B|71DKkbAo-NP2dMnfUNYeSfNwQjO)`%E2$0`s{{)cVXm{QTl;3Ip43OVx{{o +P+!4g2u2LB2$uBe+_5=gxtSJX{L1BBjJw^}k0^i|r73+g7ru}olGP&fG$`WkJ<1$C3zq3_V9GT?(`%1 +;rh?zU#q!QF($74?&*D+H?h4foN%5vu&-W`f>BsJi8nLRSe?_gqrIX%ZB1RhT-XGUBQhlSy7DP~CJv^ +7|Wvswe9ZFvGlTx<`RFsf>K4~AFPzFiUGlZ&p4>#n!gsPhlJ={lnNZoz?WDd>}svahg +%{fBV{Rg)B4?_9CUr@bc2LFHoteC?UBmT@k5_vL62lstH}l={sHM +M{nB}iN&JHr{UBt+691r0KWMR$iGR?cAGF!v#6RfL4^+)fN@IJA^aE8kcrpG#kA9#kZ&KyGKK(#_do@ +kv1Nwpb25XwiN$zT;(KMCQL#owA(^O6ms#Y9LQ#n1XT6Hu{pXNiWkAN!g(|l+J5>VxRnh +&i)0;;@E^P!bUK$Z7tKC~JMsPaC|hgKv3RomoOQT=mCON*oPGYKP6a&vMA?ggsO${c(6)cqWxae?@gh@9O(X`MEDc%IO>x^~*v4V2#LU}k?osHzQD_9CHiZEcL^ON6T0Fgh<2s=|7-g{ +2!P+0(|Dy+Wvp>eGg9poC8gSN1BQ>JG)Hy+){t%`rN!6RK*%r@cXFTw5DGyh*644WITFp>b{aHXRzeB-386Wg3`1?Tq&KRB`bZ|+)SnZ|mREd1pyCwN^(CRIuJm% +bP)nh-_Zw;{gjxHBP$gUw@LK}o!qDlHn%LH`G +Q7(2IoXzhe^=92{yBCB4of)D}v5nMJ4#6kP3NgsPh{DVN;dPzfGe7udlpJxi#5*ihkf1S@%t# +^yS7g}CbH30BhwS{}bZu$n*c(HIOIY9#|g8ox-e{u2?7_)7%qKN2yhFB8oE=)FWlHDR%gUm=*w^l?nX +_b=r8&WDfQbn~Ic{>Jf@wNtCZ8_$h~%DO&2935U?9dfF&+|`X|R!`7hN(rA5YeRFxZxpaE4vH$d2&yOzOx)qjh95N0AA|0LJ6hA_8n?JYKCKKmnI +8km;v21Q?P2PS#lo`Tv(Mke8=b1fJ*17sxZyLIQW|JAOnnyVXZL8W+As%X^cf0Uov2o%IH!(b~I-$0;k#Q1k9qpe1TkMEjkk4=*aro5U?&3S98&HuPcRzLf5_>g +i!Ba5w3F(7$bCtZKohGMyS;73c2#u +u~H-fT(&<@1fWDoFS)==^Z;}>tSAvunkB%qJT~z~lR1QcpbVwQ?Y&E%63p$rOP> ++U?Y&E%6Wr!Tp6R=j=P2qJBx45Z7=--2OJ5V5>+k6xg#0}dlJzJ2JqmRC6aF4$H#!T+WKBxZWV0rng= +DfOrD?KRlM*%AtVw4fnXE}?A(^a6DVt2zq_dDr*0i04q_ZZSg=DfOorPqwCLM)jvL+pcWU?lmgk-WNo +rGkvCY^+2vL+pcWU?k5g=DfOorPqwCY^<3vL>B{WU?k5hGeoP9foAHCM9yRS(8#Z*{n&aoNU&#ZJhw7 +tVzk7Y}OR=KTu89q;yU;Yf?HVn>DfB_9ko6+xs(Flae`^tVye!OxC1Vg=Dg(u%DAPX?>H)n)F(bOxDz +5$1PCSq?Ju3Ytn&8CTmivCYv>BO_Rx*l%mOGO*#%qK+2kQ8j{JHl$6P2O-jgQvL+>CGFel*m6tVX4U@ +^5wr!FGrL0N&B$=#fdsRn*Qr4uMl1$dLoq;4MWldVVWU?kDU9wq|5-!=Sslz3=$(odG$!1MTweYOzey +fWt3PA2#SzBJeZ)>mWV~4?o%Mc_l1}S2em%Vc5QHZB7#C04}l|bZw0Z>Z=1QY-O00;m^MMG4i(R=Fm7 +XSeBgaH600001RX>c!Jc4cm4Z*nhVXkl_>WppoWVQyzeEeI!b*@Y{%F7-ue%`*afmFev`>nS|`CP?$ucRid{8p{56~PSp9vh#)CJ$607lSjepFpBJN`RU@XToKK=qwFJDhzwC~Jb2@uF_}ekZA*UO*2(`Uwr-@++K9(Gg<;oX*kU-6i^4Eui{Z(2 +7=&SbK`s!6odv~k3m9e))pf&8CWfmP!xqDIfkk21wHP+j4TIU%4c`EU6)!ig$E9e8tC<|GS`J$dqZ4a +~cP59;u)_<=VFkvG>$qq+Y&mQ>Jn2K`F#KPN!|>~dau}C4D-I(~kmRsyIh^Eho%}EdpyjaTu;uWik9L +f%6o(-j>W6W8({Q+!&0+MBhr=N56dVT1lN?4D`8bT$DGt|6;jlv8#&x8#9JU;`9G>*C-SQFwhao3940 +Q@WoXugtC>Mv(MUuln=v00fUC*7vwKy-qkhZWK#==Q)7;=ik_{(xC4x{fBhasmp3^~PN$SDp(PH`A=i +o*yeABWLNio=jo9EP0YFys`6A*VPDd3$hp_I?->JdGcQ#m&Xx0{k#=ndC6k6o-MuJRAnkQXEFl`TQ_C +DTBlK$b5b{<}hQI`5eYlD8mn9xu-Y`IiDX!>wJC~t;_Jk7^-dJhlP3x$SDp(&c$IgF2N6@>k|Ahx}JA +_7(M6Nr?dItbbh!-9A=O*pThuGJ`M|hSl}>PPsL%u52KSAau|K*1=*DH;2(WABTaRsr)cHnTEsYBUjxT=B9-Fu +#lI)epslN5I8)C{4nsG&kxh#5}YsQb6C$0V*!^@FCpyHp>;kE3w~IS!-5~41BWr*wq9au +q+-?7dWmd5ynv52>*XcD%DLwy6iGI&1Bv+@E_0u*ki3MzVdL`>xb>#WOU!}8!akiAhhhH~D?hBq;qvk +lW^lO7yo4Tywdy4lGB&Ow#=>$K0LbTug}g+W94<32Q3!_%@x$nQs=Bo@_vx}ZT*y9Mc3#35Kdi-JEkC +T2AJ*bEiq_L&L&ySkDg&^~2`)VO-!0{jgrW1TJu@{II}b^j$`Ncsu!FTen7C%* +PMoBd6J?^WwTS#(*8d;WG0Qdi4^5AD%;A0&+e-EaW8$;jrL`_3DQO4sWNrHGE&qJ1`Qais?8O{rx3Bqr7_za?HA9|1hxMMPGu{s +u!ePkUAunMHhoNp?4hw!5@>J*i#2jY#>B4eYsF%=tjzjRn0*8hA;W<3VA#fP-{Ga0x>LrBdIP^FSdG7 +VYGq0Br@)EcXBhOnaV4qI!ISyFa8P*T$<%j9*bo_=ipTl#=OQ7`(_vse3UP8|g>zywl*Xa7dMZC0@6)k6Z@Y0=s2?t~ZmrDx@Eq!g^*F5e9 +EZSRp>C}ZKb+0sLi}(xhfDOsrsO5ect4$R?qwl)34z0f_~H0D4t9%eHx3Jacn%yE@)81v%dD3WI1Jg? +^Ck2+TtvMD +4dz*&gHP4A2x%-1=LFj94^xj>*a^_{BXQa$JV>~9ELpq^M?fvLoVa}bcN(4^f+8*UcwkZ40Su_CCcM4 +)G6}Akf+EG>v7na^M{?7!)##}!(rDL4(s{hIdE9d4?`}4!;p7kUP9n7HlXsoj{|b9dI`w+IE>aMypIE +NuJ>_3F8qDXkdqvSnyX$y;4oUJI1D+(VaT)d!%kd3%vSJr^TU?ImcuzXEYwQ~b!%GhMG`oS#?x?E@WV +6baCW_f0zNO7|t%2m^Frl$LaLa5_)!6?=cP`EfF8L#+I42!v_0yguQ!y +;qVYHqmJuEy;S7Lg&h^jSH?C|za4+|I;(h>rOh11sJsx`J2tR1!-HkHGAr>zxn>ZRd!*p$;HbnGzH;_ +WcXB4%iZ1rDQ=TpV^{Kg@Ay{jlY*p&W*6YV~mTHXZtyd-ZS;epsh^IQ#TrTRogk569KRY<8_5wj4H-$@V4e~iPaKX9M-eLp!UqR=?bvJT4@O#JFK@&CvaHrrAQ^(VJAK +Wp3RKqu;sAj@T3oRdUL*~IM90D97f}O9L|0zQUM&!_QL?(yg6)4TEdB+;^0%Tqd9Ez5|+c%hn$xX{4i +ug)5DOb$x9f)VW|0@;tpmb5=Eqk3)!VZ>ly9RX<@jC>S6S3sv +WMyc9@Oo&bGsr!zOdsR!i9G;XlCPGT%)na9Hmtj_h~S)d|CF_^cha7&aBdkf%E1C)*B}_%K}|7}m1GC +00vh7Y}d$hv|efegM{K9;TzC*7!hKH*7I%DuzwZO3d61>t!Vb49_?#Az(QB&2(CBST8G4X0e3U5kK@o +Bt9e-!xqC9!;?PBeIe59-LTdp99nKzr)EufL1=bTBKrlQWxC-)FsxTAL0JhNyv<5j4x7qhAu9pdzNon +}r{ply`5r9+xs2p6-Y$}Jhl^+(;5(0;{o@hqb`TQ_iCpnBQJrfUF)APf^Y +nsdS!+P(fql1U}wO9^Y4lfvoOH2>%1P*7PEFt*e1>`XLF!h9=dYqSFA8I*lIczG2_3{#MboNCYm9ncP +vY+9|<}lPLI1Gf&@I@R#UIMMBIsiVdT4TLi4qFbJ%3+W-U)7rMLL{`#Rkc<`ei&Vs@FEU94r}exY58H +Oi0W8TrHY%II8oR9We*RQiKa# +lO^BA60t&%4pc_^?UuZm63mGH2MAT0uOYD!(R8Szwd-Ux-jfdx2f1{41TVv~t~3bDn+KZDqg#hZ5D6x};j +*79cDP!1Dsfyg8JHbfrLpF`vk-3pOMvAm5Er!p2I|}Vb5hEQKQC +0tX{9qL@eFO({>QCZoLK*v1q*}6R~1FK1cf@vN_uQ7a$g&qrZg6=V%!spQFEm$mi%g5cwSaHN-HYR&< +%SK~q(g)#y9zc8F^Gs2VZq0K_n$cBCDI7RJ+VZE1%2O{Ue41{PRkw#yp)i9t|v{+V +13Vi;00x~4S}C-+a(^j}F;Yc3MWb0~Ash(3Ou#4si=>Xe+1vK7s!OOL!1@R+N`O4cMl`p-2BbBec2T0|M@83z~-$th{HEC%i9 +K<&dzDqiD5XT06AFhrYh;ObSJ>Vn^#Q#1?vYTlB66v*s{wC@5g#HTYUP6DB^hWkoHWST%P0d@`&D)9Q +_yg6cS2LT}oow07mTTE^JzGu&`Yc^aBcVS>dNR@%NKZ`bl^01*hWcORzmxO&6zNVvf132{V7s4!EoaZFm%V}$HssW$F8xU{u_8635*{KsjI@DF!o#HU`*ia)lKG9g`8vt`PThQiWPY +n|(oN9d_v+?bBy*>=`8LViYi%M4PyANC;pt|$+rqpT>nY33J@3l1gT+w9#mqsvNUyc +OdwF6rjE9R0cC1xh=k@_*_t-m{({snzIr-2?J8%3zbPm;?J8?SllmN~VQ_VP+ViA_v0>OKG3_dMQ^Tm +eK&px@G98qbc9p;JpuR+^iVf<^q^hi7L@dflyUO9z@oD&Wa!gOk)$w +s}kg6sQEAvfK!{EGhlG;^9r-ea#o76Bk57+PxsV!#og8wF2c^wxM3TU{>?BMSbN^`ptw}YX0k5qNzrH +k*}Noo_(eL$-EE6Bwq|C(ek&ggzfqCyKM=_69reV5LAyA!LE-hOm>B?&m;PM&&B7lF9SUNc(iDry4 +-LA4T_)Cov-L7&o(Ueo3+pV*`zpEswsM0SKaVI_opY<@QYQEAnAFlE+_4HPwJ8>|$F7Ve?{-pu+F;c_ +8n$awb|ASN&83y5TQq?zlG_;fppJc0D1bmHDFZJd6z*1Hc`RMV3hmKU1D<^yXv#b8?mq)(JLZ9?UM+Y +nZ>dh)az3z`X{qA{xdH4Oj{>tF~^*!qMcW-Ta>ixIc?Vr8SJsWm)cz(PYcGd>#y;1L?-x;dygXQYpcFS#r-*Gq4<$b=t*6FUF> +Ge9R{z&a3EPuDVy6)ddU)|NUbKTSaXgRcy!6U(=!DGSW!L{J$!4tug!BfH0!85@xf?o#D2G0f02fqql +2wn_c3SJIg30@6e3tkW22;L0d3f>Oh3EmCf3*HYt2tEux3Vsv(HuyOBB=}wMY4BO_dGJN>W$;z-b@2P +~mGO_q4~~B_zB+zr{P6gv<44AijvpWYEL_01EG^w}@_47!^4guI-RrP>9d@t7?seF`4!hT3_d4uehu! +P2dmTGwujACE7CEexg=mq*N_mJDd90L)Xw~QkN!Qe>(+`rispZiRlD?_cpdTcSQ>#foNIIuhi++%_PO +UcmAQgF+evpcstZqFOIo+Q1ROEDv)>DzwZCX!7PV-SuM&73Rs3#+D(|pvEk+*3+>dDC4G#~Y34cupN=Y_d|-?4KZmiYG89pBv<9N*~njz_)QmF;`OoBiI(k;>7pAFW*L +Z+3e(PE>Y>*N?WOva)i0(7#pL?rtAjza8~9`-5ZGZgvKn(eT*LhWx*sXt+J-Z$yJi_ttiQFsxioI@pR +%-Wx`zlE1zj4bS&Cqpg*d5UR?NusADyyBg%jAtNRVsn8|OlQOeY}SYy`p+iYI43g2NLn4LHA_gEk7pxzfVr`>ZvauMb +%3>{N|EWHPJfBi2bXE9c`(W_^6Z8fPGjf55J=tnsJpOvp-qc%Pji^^9;2@3SeZHCcN$4YdYq&*q`tV( +r=3)&kaERr>ss>3vmsB#Y|>}UY +yoC7;+mNq6y&q>nJsde9Zt>cz%zSUnC*S`qca=olKAZ6m`&^~htHO9-8;ZmOP?K1&1{=&B;RM}XCvX% +K3jNZA5LaN^~^4w*|W_ +xCBwr95LWFdSuF@8d3Q+tislxH)770K-UXOOeqQ)A<^{ +aQcIZ0f@^+cO)j=jXE<q9p+*i%RV%0L)Nejd6K0gP&I5r*02p(!#3n`Y@?LPu#G;(u?=-1Y~ur`+P)51!#3n +1w$-5ZM6VoyI?*dfpcb@!-4V7WefAE($NZkCd}s$2&<-r19awm68)ygKYcC75ahc6(y`KTvF1)rKwDY +~T6|~V|>JMhr<&>nrDn}DQ1XhWTu(>6fc;Itw8fMnEqe$cMcBJ +DApcxaC%%tO2E(1v>GQf&v&hPr6bwu(oV5ZV$Pdk47Tp{*v&L)$~Uq|k=!A4R5}94e|KIhO9vw@g)3$Qji?Q +UdO1o{LCw4FfPMW$UGw878`9nI_;UqBL%J=DGRjioVJIy18B=jYVW`m<)N)6%tPA_+Ov;Gpf1!~{&3JUTc@ +4Bxu(b$M)|k=6&R1u3#0g@i4bb+hN6G^2DnXlHBOcmn!sZ2Sz;7z2jZUV5Hsr}NZ9_a_2W;(vj +~Jkh#29`&% ++bSM0K-&kXz>U?>pip8e0|k-M2dW7LoOoH1}QaWL!Q6Uc9M=*F*`pU!NL! +X*^o76L!M;u2vm*PkTqsQ)|d@>q7{FTHD*H|XEs!g*^tMX4OL?{WR2O7HD*JeEFD2>joFYVOGnUJV>a +Y*W<%AO4SAf|Pzz$Vuw*v1A7^$JjojtJVs&QDnnZ8c%bm}r;BX}f@SNu0LbCUz@mTdf^&0d2!7?INLVaN34M ++ptRe(4-^uia&mC`gBCi*H;;B1GAkZ+J-&skY|`^8`k?dSvs;r%q}n;F&OQVC)x&P8=gXzJkd6#BSjn +SFrV49v4)?8%kHy<3uYJj6mkwLN1TKsApB(Eh)=X9VfJD^g)}hR?kObXvNF49pKW4xjiAlWw`GU6lW? +Rwk0A{kYYd5YdDdtbXS59)YYd5Y{>BmkR{t#V+cn?25oj?d1 +$K%E7{tSIiw>?wcc-;9z&KT(Ka}3!y0Y7$B<=NJ2J1wkfyaGSvJQ1|>x3Cxd7}Ax~CT6qG^~_fDwTzLr!Du^)v=8ml5g%#$ +NLx+93?l7p2Rl0{Jhat>E%bUn$VI&1&j4+-p7+;7qU|)V9m(IpjLPv-yUA#0&}Osmp{*utp`ks8NZT$Qnfc<8nMc|#(vih<+C^?*cae@biL{G`HtE{CqKMh7f6r_+U-N +nl37Rb$vwb=;5wpvkjyQP?=_JuE%VWrrZDAK#q|H0>&>l_LydFaW!=+6}AkY2l5AxFysP5nI2eqVMe_ +%*Q7WDmoF1D~6-tU*6jzBHRZb(CtEIJg479J1s_+px37V6>g=tbsf;qg}GKBO+U*&HjOhwwf^i7;-VULwcuO +Qm4I`k@mctHt8C)v#&p3qwb-tCah%JA)P?mu(QSv+IBl@(8;{t%32(>4Uu+PpzUH0y8+sEJ8SILju@P +FaeLSchPJEckXby!hSx(|P1qwiZ71;v;OF&42n(Q`@S5tGx-zG;jNn1{BSuw`65Vi%8~^< +rh(hFAO>U^x4{bGJ^MbZ_+GTaxP$zTRkjuG=9qJ67HsslDV +mCN#G%oemu$$tMY;O%40uOC9Vaw>Wi+o*FS)8^Z(=KikyWN9G7q9rsk4I+zAkqNsB3F;Nco3Nn?FCsq +k~wWwtB1Cluw`65a){sYR~)npj7Lfi?eZ-7oBf+d$O+H(L1e~kR+MM9ny;^7c9_p>CyPhym<=Qz#>FG +czf2qQAzY>n`LIUXroA-*L7N}GhxTZ~=JnJfA@)iQ0go@Vig)vHHbIc-~Nldd^!M +s4lO#)Jj6MJ}~PF11B2wZ+t4TjWwZ%%ygiOKst)y?E4yTF%WikY~2!532v(n)Ju~y)}>*k=nIpMs4j& +5b~)lW=idRuPrR7Epn+XJhhjF+WGs~XYREPYyJ#g8}dSVZL}_}*LJWaazUuw$f$jYz6Bwl+CCv!Kx(^ +4NNl_|)B?PA$*El)uk9is$@kh&%T4WiE2Fl5JFBPm;!zu_-xO(|kU(8DYD0FPkj#nN^we=euN`F6)^< +hCHX+HUw$0PX=@Sx9?FFQEzSnj^Z5Ij2GI?!7LgIwlb_t0Uwab){I9ROx{L0Fa(Wq?MFLlzZ=n3Uv}27-02TC(|;%jqjI#;PXCZh(W!oKI7qt54ox2S +Dg3E&zO%h859pcB##Z$B&J!nAu6*;t>5Eq`uZyI(^|NPAUOIDS{nXi~F0DUvasA?@(`PPK)+&3W(UBu +luY=10xGctHq2zE}4wYOTm#a#yjmtG9*T?0$k{jc4L&?o?xvAvVxZF~5o6EQ-iL}U?QgH_qT8$gfwIX +qUPT#pnz2M#`v?6hb7Fw0pp^uj-Xu!wo6c}+aUZ}v3i}tvVF%QQlRAA7<@oEJ|JshuAVA#X)ITaZ9aJ +*iDfe**)6>aERz3@PxRxd_B)au3Phg!YxM^&v}jDJs9O9DiEto{2Ig>6CZHCCvCmSM4Yj8K1U}YvN>A)JrIk}(eFd#bF>D +L&(R-1CzQI@3s`7JUMNl7pUnY)lBsq3jvVp38=^|?)=`~^v3{SW4`28X(j~anb$X%Si{RxXx^b;NypP`pMQR%Y)y@CDM6$fLaN0b){|@O%nKeBRN +@O{AEy(YZEDH@9(BC6nmI`eA=3hycwFcD9XQay;RM0+9lB`tF!5}sesgqD3X3bMCAr1^o>Lx_>fGp=z +0gKCWLKU63oD|xk!F`R6B&oAbzlXg}a#Cll3HdFOlQL^GSZ|XoPgm*$zY+`SE~+HIOtQR#;jFm-3dw1 +es`KB_N2ZyYz=8iu)_GcHQ!g`pHH?~wr1$@!=5jto>p*ikpW?v0rG6s}4#;vk!voVMJx3M4gk(9INTW +kkv`?p2YCJ-`3xNts7cr?LT-|@4WO>gHa0d6W826o&C~<2sK)(`yZ2>-t*LG?S +DdYde=iIh!BLdBMBKs@~>YdS)R3!_y3*bv`kb_7r*o+ttJf?-EO2eY2!%#lhm|I9QS{boZd3fH(iC&p +$Hn;&q+=>grWL^ctqOigq3~0*(jswuKPFigSw+hE6O!dz2H02kQS&;)i)pDtdqCqXZ4Anw3|B}WQ&opX5w4I#7H?Jd5~&h1YHBG|55v~MeVHNKk4lkxm>L~*ol&A5 +rf(sD`YNd@MV0y*sVu*Loy641DfJCfHWQOm7lOeVf#zE)@F?iLx$zGiI3X<;KCjOR6j +k{JR=+IZ?4ndFe9G!_54b1lzjf;=`-glYn990-i@v3c8wiFtaIKA(%C?e)&i +wQhHPD;mnj3Txl!Z0$sk)LCb1`(|e&8m=Xji(iaiieHXjiN6znH-0sKEq*c +!Jc4cm4Z*nhVXkl_>WppoWVQyz=b#7;2a%o|1ZEs{{Y%Xwl?VW9x9LH71-|wfGSb*$c$yL=mPXYn5q) +1Anm65C%g2^({j-`oLGt2BqmLklNgL%k-KztlR;y46{K=26(@o{j#IK0@|d8KcmPeNBu-P^a@w?kjob +k9@In?$$EHGR9PfAjDEt*$-tsb}u&51+Z->p#=&->vQ4AKe=CH;&Yfefn7K#$cz{zj>l|XY|ssmW^y| +yfhr#uI=^qj&I-X_IC!u<2P<~hCAKS@%`)e|Lu22d&9x??y%Ooy*C(+YFEP!cDv8sA9YWMhp%==mj*l +C-Hna#8-f$H=LY+|QSWXy{FgaVyV!fVyL&(U|N2DjT7MV*rB2kgx;HyfyN&bLw$7cpa^ck0_Qg|M=e9 +3hK6CbB?PTr2MlJl9)`{AKTJ1>f=&7So0D|i2baXT9RZpYO#?ksFMo*Kr^%FHSjh>04fx)(CNe^+qpC +LW8v4?Y{hZeRyPoi<#3#8uw+kTd`ZD8Bak#Ex&y-3=|xm_aBIJYg*LlfIxCeirYo+Hr!qgP13ar7#QH +Zl4<$u0i2Yoy=!>U^HGtz-1}Nz`D!Umzoo1K){*I_~y5Y1+W(4bnC~-5nCerd`rOoWo0`X*@@6lD6?2 +xfMs-80?XzaR*^GQ3zf8_6{IIQ% +v_ZE_~>kZ?T?ze}zt>HEjznv&Mw`30Er +^Xbh&2mh!-80`AXY4h6$@f50I_C4tXU8%7Q~tbv0*{1SP*L##F_=M_6D(HL993s8y3Wh1+ij5tT+${E +Ql2gV#R`3aUeGNL993sYZk_EPJtLYNr4!`DG)D#1atuD`E+Vc}1)QidYL +k%qwCEh?PJQ>k>iCD`E+V1&UbB8N`YOvF1P=*UuE>aQmAhv9LkVa$qirC*HmRJ)KkJzvvmU +zUxB3=ZKm<6$BL9AI2YZk=b9&zBSh*@hwb099pBNkW_h6Aw{fVgCjI0M8W3cWy_p@=g;T%<>w0pbD`a +UDHk0>Nw$D}f?b-XNA(6A}>nTNAt@=0Pk`#L8O{ORR}9Jz^sO@zQ(5#VBHbYk~*yEIi^lfLNx8WgrHl +xjc{9^6o(zcjXuB{H=+_1u?IP%e5v0i(^gT@-+gs*??H0h>Kb^p;!< +r0f_lk6Ov+GxgN2%A`X@c#KkCLog2h~0L0o8#6@|;JcvOQra%ng`GYuP)kFq}q4oSh%q!vm6){0rk&0 +MiO-K~+;;ti>C}RIr6TBi;EQrfoN32*7^VWo6LCku@DnE#QJz~v)xEPPvupm|}hKLj86bvEygcFz5X-EI2 +7s7gX;D0435d&GN6dqG*_N*@SFw&&#DOP>1=a+si0AJSOBAuhnkdpE2F@+)3mq~LLu(%pTLL{u187k| +T$DAzgIHoslndfgm#;0?I^tzoH8FohJOht-CLo@JB9?(T!z0eHCNex?ku?$En{@;=vw5L|FV?NHBKG% +)%T>fIh$Y23-Xks(#J-A{wGod{Xy)nhy}~n3R* +Q$sv<7LBlfl?d=)WoO-Mkz4$Iey1hK4GC$lD+0AhlVMR~KXC=gd~*8LI?`>&eN9EddwV$FhBvmn+Sh& +2mh)|xOJi1}3$`4zEdL9AI2vmUYLK+Lb2kbqdTAYPPJ6VSTaeJutt7V8KoRvp9=MXU-^#5{L9xzP5$h5aaefdNrHB{Yn#cfgh9V9`iZ}zrGf~7D)`UzE=I&BQCXA$Ag%E#hG0-p;!>>A{4RaK&%9cI6sJaMXbC*EGgE3A6osXB-cs7#X +8*dhupf-SDaNrideBARs|_ywE!UI6)_KDe?_b~5U;|fKZO+QR=^|XK`io!i&Vt2V%7@V;eg|Cz;T#&CIXhj0motXZ-)jfhxtF^9IzbLEQk3Q>-a?zGK(0(EAqEP%jd90i$AH;?OvG0p@h66Fb)dcTMupnjyF<-0WK`e15Gz;Qc)avE{;*9q>A +e?Vscxat((FBC^ZN6rB5Nlo#dG-1jFu|N^CizZkQ`!1T0fS7%; +j#b3`8_xXdHGdGBEM~$q!=Inh=24a3E%_32#MQkTt= +Bn71aD6vQ$`4B>o=7{cW#V%&|G-XRr-r)}4f!@M9a$RZ9{4p$bjKoIjBHUbVWsYRT@;U%?*4GLm%GgK +gUZPyXRyddVC32%#-uhkV}5$pVd*w>j*`9Z8X5c3vsQO<-~DG+A}Vi|}t1aSt4GXyax-+Y1?7fsMOZQwAS$`yyFZ7UAj&rB?0p2OZ2G5>xu>r9kr5u3RSVty4d +?@X+gMJ#*2IYSUm-tT^o2Rvfk;sY6`QB4U9t;VXz)4lk%fYy=$Ujfu5*n?q(y$Vzq4+K0pVG6$K8tIl +EV&0)Q69Om`#{EdluuU+Fg%o`K=U*@PPbr@daHN=60!y5lM2bp!N4&q7>ucIJlD|G@83ycYV5pjNFf` +6;d-kvV?wla4Y&KDQ>o(cw5^cCdKEZa>PvOr9G>@z2`$jWz6P=6rMfj(F_E$Fnry|y;=ELc#srx) +6^LEiN)X%6f^7HWYfK2<E6QimAOTEzaB@Rj)-VrcEPAw2FfK}NCyv1_}IAm$aZ +i9Ji{?5cYE8>MI)irRJ2{L9Ch+W%t1Tn9Oy|-P{0uU<}#EJtkzsrOw4aB@67JyiDAm+DS;}x+IfLO60 +R?7+EjKyn3Dq;v1p@{MIW->Yzh+W%t1aYZ~xS(2{?{+`S^frgYBj!Q8q}IgZyv;F-x9T){#AF;Q5WBV +&i0!BJeb<(L(S%^%wQA9X>tq=gO%(WAT^&J8uXr|zHA`a6l2{8!tXUEpmc*JRv1UoESrYR*{uq|TnkB +IjkXW-MHY|w^OJXe`u@;b6b0k(Qi6!0yD~T0LV#ShJU=pkRBxbz{fh1NOiIsrFzTSjlN$l@U%)%swXZ +#XL4B-@sA)F#Hgi|Dj@Z7zLP26dMUfLo_tOc65BJq^OrXq2a^Vy7w+F93;g#|fIJl*Fpi#H&tX-ksn{Tu{Z%R}-@&F27RM)^i8~R$*+IIgNb +K5HB(@*vJ9exl_OIBn?gUR_Uro%C*xM&&-|P@<6VGd6e|KU@Nt~gHmz2btxJ^85Uy<0gtw?M?(p@pVN +zAV&7HDFY#O(IOzM7c#iHjj|rHMUAEc1zFB%Xy&T*rOl;Xu@TMdE4Oip2IalQ%o&Ph!@c5WLwTa3>T? +;zfP4W3@;O;U&_^^g)JGwLMN8#`a?%%(CeXv`5a_>(6#^_FG)Eo4la@`KP`%%BwySo +G1*`W5yV7L?ghc<=Uv06L&N0|NTL4Pz1yNOTDp7&|^SM5?~Z_l34^PTIv-6!{-Ig{?D}U%0xhO< +irDzqWPm)RhaTwzf~7KXqmM`ODjvuber1rFOFRV0wM5SgF^iSLelhO1aCXlVR<`CK)y^93;bm3vVXFn +=V{WhU+feNQN6O+)Rd>F5F6nTQ1zDVYrneMONQ*QDBKqslNoAu;lLBp21P4c0j875OtJrXp-TsGUu2ZE;cPg}{yfu=39 +x04S8%`g$j10DsMwldU6J_s~z9;p|+o7PR;Og;oO?ZSzA@)4jJ=CRpKJ^-}BJT@Ci`QHljXu5oV7h+) +^o9_JJfuLpca4~osXjy00eFr=Yw8A{t^6aiML;!<{ +ocEVSv|`U42kx%J|U5T%pr4n_@k+;K2NP=(aL7yX6!8thS|88*u$7jCbghYt1ub&H7{e#j?FZ-i!m$rQ)^hXRTOSqV>uBf< +F3R2V>X%8>owX6iH7^?KgOUf{kddNTUZg{ro}$S8XsHIq9gH;@{Dx!1nDltT?~fVG+dXjpx_C!X}Ifi +4}*4W+{L($LHnGSdMRBSI@KOvl+Lw3!6=<b7!&cQ|l;{S?qJ903dk01UM#_fY9-06=WzJqc51l(wU>}& +1Qa#KO`pJH>HY||w>iF>!X0@EHp{BM+_(S7EUonWrfE*ecYWhXztu+6pUa-IAF!#35XOLY?WZ8L2)(` +O#-DAL44zlF_hqRlqMzm0L5X$v!b8{=W7aW~(^u+6juqy6yv5Vv}wfxW+pVVh|SFU&VEZc}Xq>64GPB +5An`^Z50+cbjVqt_%*I)fT#ili)*)+gw|25=_2>;V4y?)8t<;98uGq`{aKyY%^`cqbl}oWrl8RxDPt` +$PoQyjJ8Yl(O+WNX4-aB;1Ldol^ePZQ{XiW+eF(g(F2?rR&waJOZ4z{4BI^0F3$tJ2dwab`Eu|>j79` +<*&qBHhNCoH_6J}YXe&UBg6#3Ovl_%Gm;J$yFl@=HThHaYggLv?B4B +I5($Lip}Fl>|5F89Mf$FQZYhTOl0;poQ%vcyYbb&G*t@Iyp}l`aMpz$3hAt$H!=>vM=RJQ6VQn?3mm! +!}F!0h{10Yc)(A9Cw_sR>ZX6uT$Y=jZ_T$$REaGJCI-%;Vh1X4E!!1BHyf-F$S*FUtrj#Xxw!g!)<1) +qA{Rz4*v$jRx`Uk(6BR+ssUMZ_$>_EaRg;Q{%Z`|aWruC-okL0BmC^4>1QH!6F`oCi(#8%;94KXVVfg +p|HH3i*yae*ck*Wtj+_%v;uB2WN}W2K^_v)t#134iZ(!KU9r!K5FSL56?lMG6(nPKaJRyw#0mD&>Kv% +qak?etIk;zXmY*k#^)-+c6z|ZRhZfO%qADB#UW7JMlc%T`77sEC|c;=dXAH#MK;Spy1Jq+7<3YYHhF> +1LA)8ieCh6%#Y@Hp<+=C=uBg@a<{4+w(s4=@_$2S0m<@Y`V`djuYH4sigj^Z}7D{vk%A{9yj$1dD_Zo +ZPz@wduL&;kPjwrUyUy;~!zv-i2_dd@Gm#yC30F|~3BeqIm%4x*7s0uQ%`Z(!ICA3Ot2 +UdM2h9?YV@!f+&C-50)((J(#GOXHtmG)xZ$WDG%@c&MJ>g_~L?Ft`2#!dB$ +KO^gnBWDM6KzxOa|^Mh;u5k{l*po?E%m^vquf5tG?=a0g(dvznrP`-5e%-M^zleMe8{>|O)v-d|`>q= +kkjxG&$y1P$W!+O6v+U|F5cTXODrPtpXyt04H_HlGt29*!Ehsq=|Ao%= +8#~>XZrE+$q{lVUFe{|>Wm&dP-zdHWf_|5S*$8U|_9=|hwcl_h=`{NJBAC5noe0}o9U1U{&y_3LZALHU$s&9aX`jDtOeYg2$0%FL;1k^5VS~YN%<&L*W +4wQPY|Sdd4kOQPZM_!2vQY#4$wD +CYIE|%B>9X!w`<&y9KirHxaB+eXf$Y}{A&Kz&bX%QsO9Pi9&86?ge$75Ou!OYt@9@A0?X5Pl}nASot^ +EQr0R19fi=4~90Xvgp-X5Pl}nASru^EQr0^mj8_n0Xt=BT*6w58!yvnutAsdu5@nI_0FFnZ +FcKcX@kmrg!UH%SiP}hb0LLRy9SIM_PZ+d55*~;jF>+N%NEKuD6%sVW6BUxU02ftApbt@nB(C}8sgT6 +Ay+nm1F5=~@ki@mXUs54~*_lxxi7O4WuaLwgg+zrUuDm5GBynvlPlY6|_T{ON#8tgSg(NQD<*ATNW?v +zJXr2lQ@TaPftb2t7ern6BkN}|aR7fD2t3m?#B`YMrk6aZJ*e2VfLINEpDpzR?BViB6Y!AoGC#-19t~T=V%EYybiPCjbBdaA|NaUv_0~WN&gWV`yP=WMycaX<=?{Z)9a`E^vA6U2B^h +M|u6OUooI0vI(-cdv<1alqiWT8&J@NNH~PVVY8CP@`lx}vOBV+D9W=o0wmjDFe?ED%>8OE=4!6ydBpS +N^9(;hza(96_j&8Bt}Z;qRL@PdU%;nZJ^l9O%$alQt=j*#hcEAJKYVt5^Wom+(~V14`%i6c?%Uru_>O +~(b6e-vH!mD&T<$-4a77{e_C2}1b+K`2{nA6LPxm&@Z*4zx?y0ry^S%BgXjf4H}CHT(a`p~mBz8~CrKL +yeQY3v0CBzSEDNIdkmD$<^aWPQH8f#HmLgJKi|lxVEp6{WUv>8rK?){fz^IPaPlx=+ZkaczO9yBPrld +i@lo~ep&3@*6?QpoM?DYz$+TQt>Kn9$Q=QTgM3yTB-QZeG~8a&@aM&Oi(|hc4${@|7sTG;1ivWY>`c- +E{*r*jrFvDsEe(HJe58QCBK8*Ld{yi%%K4hOCSvce3s~HpZwOd?LM_h05k>3 +??s-LRY1e|F2`=Uzm4E{iTq_{gj6nl%0{E@hV8hu@(skmo9)^M_<;hzY&tKpvtxT)cviDT=t{<%QK@<$C@#KcQ?Ym*^ITmr_AfpjC_AU`O;L(U1dzXkC@L0qRcr@b1M~+6 +^*t|G*mz$M}aTq173CE^BLB5uGX;>HP%McjZ#B5sgOiMVl$5^)1A5jWrxapMzB;s#-sh#S +W!5jS9yxN+7c;>OM;;s$IIH;z#vZtQFlH&BzfQA&xpvGXXz4c;+{8|Y}njlE064R|!-23#U;z+(|N&b +vh1VCWKYWA74iWA74i12&0Uk?u8%bDR2`ay;V3-eW25I*B`o;`Sr%DJbqbiQA#L{fHaz=JQf@6m`GdzXkCMUF+>4#izf+=^YV +S>*aB6t}}F!4oxa#61PY?MK`TrnrMxB@W^SJdWaa5Vu2dR}(kT8CBdU(Ijr5QE>;fN*u)Puu2??+hLU +?Ox%J+gIOgG;&xaic+y7mxTm1FagYgGB@V@1Cvp3E+(E388WlIVXEfq=c-#)+20RjR<3vXCxFd1%E%a +90Qy^}f$>gjO#h2GCy7X7vF`OJ%apNE*;s!jLRf0EaG~%AuaMFvovGZ8O?G;Wsh&x0$i9?6CN~(z)r% +@tq>}(P@7-kf!#6jGEOT>*M*FoG4s|4g)M>q+19L3$zR*B$6f5klotHh7E{j3te6I9%Qqg7H=S+7;%@ +VIe|(LC$6ILj-`N+_Phq)EQ0&u}ZLa9af2hxa+h +^aO@c!$L&Yl)uT#q)>9r;f&-6al>`{a?I3Q4RpK{}+s`TiJgZiT;a@btq;>^+ +uM;s__F;Bn8XRpRGyJFF6i;s$IIH?H3}iW_JRRtezXRtXqp48;w2-V}Eb;&v$RYT|Bck6Un8-Q&0c&# +cECgt&19=WQJKViC9Bs1np(!>E#pTP0o%IMv}~fKeqOIwu{(9VDEr(<%Wx)~J$d;#Mqm%_b>t;&v!*h +gIT7+zzY6p}75sJBU?+V~=H(1X0{|dfa|iiG#Ry$4+!GHc9Uiw2aZg%t-`B+L2q&vO +?xr3NDA_2K$6cr5o*m+@)8h_8+TnY1LXRp5(mCl +++z#T_qe>+0)U3E29(NF{1m`^#abxe9ZNRCMxPyd~K@|7Q5Vx0A5@N2B5X2q8;|@UFUWyw8xFCuf3_V +uoq=UHiBvX=KYMvbs;8|_J0Xo{K5{Jh8xiF=X@Da;CSn4D#6|pRNO&`d*&6l!{e@zxE)rBgSfHxA`mywF%&n@NwvJsD{(u*N$g$6LJB& +Z6fa~XZZG0?C~oXM)?6hH;+{e{S*PN5gp-q3+<+H>xC4ZfI7IN_fPSM&W}dkH6t{!8{SQLNM +Aa2JvZorYa8#@K!%6wP&#}in^TPpySS59O+%r$yA*>PyaXUtpgdlE*Rf +1!TGaq*~aXW?sM&dSz+o8At&nj_i-WCsb-HW_Ccsq#Tp2DD#I(ge6xB*9}q}bbcG$3YAD)Bbp5^n=8@ +iyR*=9mIp;%&eqEr0{K#M^*P-UeFYZNQ_fqu>|~h@D57jvMGmPKjdy9C$D#-p1Y~-UeLaZNMeo23+E8 +z!RLR1Rq)AZNMgPr#hPykMKMbx1UoIL~sL+#9dtPSt4%7EIVcO>owCvJ!0c6i(l#T~*bsh*B|wiS1E$NQ`(Z +imP1AZ~|M;>afJRNP)xiSC;ek6GmH$lHs;+w+-CI;NPKbT&C@r^GQ+$%18*L3n$aiCa8Sk+>sqFA8z{ +32w(=zz`Pq#Is4SQQTgGN_^UHs+|&W*I0rZyf~Iqf`d$djdzDr0=PunI-3+vP9*L~+zU?JlULlc;*_Aa2K)631Xb2XXsFlR=2vPjKS|OJhoO`;EBkk+>sqFA8z{4F ++^5Zm)j#$vY)pg8_Xk?f_27%#7mpYrkcI52^=WW048;4WkH5Sm}lq}9z! +0LHQs(IVb;dTgazqZLb1$U6KfL=~Xq6Y(t8ySf^5_cqSz;36+OK>~dCg-vHrkc2YoRT_;+pldh$OKb< +(WJxT_KGH3%-iCQMc$6Q9eEq@ybdV|Fc#3k+qF5|L3rCQnsf+mN4qNqv#O;?%;uzyBTIL{b>^#yE3bUO|`gFV3I86z7ao&uQ5M#J`dMS +CiBX39EUU1&_o28^i!98)KB!J)^-{1~nl=unmAoBwH@wUS#aR_d&Zg*a5QeN1(;BDxJ$lJv=iM(AKZ` +auDK94<y8!oVbH5S?1L=StD^*j|Ie$!z*r_#wgwH;GJIz?n$Hz`*P* +x_9=C(Iagecyo4eg*L6Nv4ao?ZB?U)x3haSf&afFj0tP-!mfB{xes3z`es|0jZ!}L-P#qDR61espSp| +~C4q=UEtk4D_weIw625_cr-`;)l+6t@>~I}~?)#69UzB|gL*WK>BIt0aix_9N~fR*4QL#VJPOj>Ns-# +EqRNr?_h*ZonpS106|mgNse##=c`HZt#vt+(1Y3xUu(G;UwTX)+}=nx1((`gyL@L;eg^?B5_CJUKHX6 +IvQ~U9*4O7!pUml23iAg12%~ps7c&FM$*8mDCwd`VqHZ1CCbQV*g0oQE@K{ar?Erhgc@qLEK(ei +DQ{yz>^|whgDMB+<*?n9b~mhzqv~4Y-V;I8vUo%`i=AJ=Np?_{YLM~`cA* +GzS-z+udQ#cZ(eBhdsq7O@3V4_u5E9xuU+Upe7e`ayuC?q_L%Kly?AzOqw&C{%bVx=m)H91TbmCShu! +M!&~eZ9Hn!Bkwi?fDZJ(!qs9x{J!A6(9`I6?PXaf~O!$JE +btbstiCJiZOP+L19M?QGZ)k#xo|@Grxaz4{ZGy|5n)fupbx+ND6I}SztT*WbFV(vSyi_l)ep;#*S3fP +)dmfKosa{aMSy<=u&cqhA9#E5?ktHtAHW +Nh2=GCGvZ8kYlokCoKv~f{0m_OF0+ba!1W;D=FhHuPpjAA~%UuEDNp39(5RY*y5g?x7Rw_Vdjivzc^w +Ly?0P*OyS^~s#+iD9C4{fU>Ks>Q6d5;bO6!+-B-+-~?J^EXK@*W)qDDTnV0hIUX?*Ynt^bY`)nYCP;= +MjMFcgS+F=OX}>*|c1c)KP%S-(D`>g+~D@DX`qm!N)+h>X*=RCkNjJQ2pp!Udh3C15`h%m%BOm9)RlS +aI5%6J_b-pkyfEP{t=+62v`2S0JDlZ#kn5`rV7IKH~}y#s8iH)5}2w7^n4265~?1s!21BIdRj&0{{&F +g(<&-I4Up<7DnA2|>M1IJKR{JayQutefa(sli^~5Qpem?cRQ>^g>JGJwD*pwbs;FI5^g(>VsfyY~MgI +y=K6C#DP(E`{JONZbbpH-eK6D=fD2ZVepd^O>0GO53Dar)DcU485qD+u`H>;>!TzLLkT~ZZwibI}fG% +E>Z@^|Wzx=DCK_#1U8E2&c)^#X(HF5ww@iqWhlT+wv~)osE7{*zI4pE|_@@nJ^QlUINn3}$7a)QhYxs +I21I(V9b*RXjUe3}$7ui-TTbP(6E{V%Ps-G%E`SWeK9R1}@+ZgQ}{P;)!G>M4jv_#l5=BsH&>?sHYiJ +kKamB)-x=QR9P#~QTYh|52NxKyw0e62>+K+`StX~l@322w1{V +MdD($Ul%N1nvH_DQInl(=x0e~s$^%uh{gNmtu?#nEkI}3=kR_Whi4qf_9QIxkr6$0PY`r8(PJry$c}b +L>XqSzbLC9V9 +}!9pLG8?`>uWrA*Q#)O(w`M2 +VAh3H9D)<{^EugnIXwgGr(+q24{_P!cIisCSPaPSPn$sCSRwF_J2H?(gmC^HKHU3A?wq%ebl+kJG(9e +x8(QNfWM@c~9wCSM?@*f4|GPsyE^L`z^**y$RpnuQ0CaP5J(Qig8tM +%J=vCjH`N6zQ5mQT-BR$z29M6)thp?cy3cNQc|w>n~bY^Q?B>(jH`N6uJ?0{t9nze_hrUay(!oG8OBw +;O|JJf##OyduJ?P4t9qM!fA#08dhzvsZ|_CMiJnmJ9k`b%nJM_fyLaaXvJgZ%Xb-ab9fkrsSQJ9o{r|P7 +0JS5m_hrv|EfSxq~x%o>4`@__P-oCHY;Td?}UOX_md+l>8Iy`$zfxgdXHS +~_mo|Irq@5Qb-uUpfO4{Tdi~YSwTr#O2l9V=AP-VU|JzvGyl{E#LUw@Dmv?s7*EYS6piX18zqPuxeZI +H7dU5U2;Xh@Z|GDS4dQsJU7{@$**IUC{?$wC=hik>FKz9t_t&59t!}GC;qcN!-A=omeYJZY?! +&#_rPZ~abL;D?8@;}Y6%M~^ZDXhBdz`h6OHZwx?e!05Z`$BfgHI1$9(-o7H@H2xGx+S_bA!(hUKxC0@ +WsKG2CojjJow7stAno%zCQTI;G2VQ4Zc12&fvR)?+soXe1GtR!4C&N8oWOE@!%(epALRD`1#-$gEt1h +9Q%ngZza9K;@aEw6!`${8QvIvbojC1$A>qEw}#ITUl_hP{KW8+!hqo+P +_W;Oc_nZyvJ5krth3_)TD5<`#}g6xkWNDM(@2tr^CLGGgvgssj2JCw9^E1b>&JOqkCw9&b%gM~yGokJ +rD(LU!c`)19i^f`Cgmv1ghpL3Tp12PEM=iFsqlq>@FIiF+SkK_gWoV#p}lfr<{Ik?3z*_QYgXbA0*AlRzK+x_?tt1%1DvG +-W+nRq)Fgz4%u8LRl;@^r&6R#QhpQG_%{Y=leBEdP;|oHCfhNTov^hzxXCa%l|`ZKm*nXQ47ES9&rSI +WT(Z0T8c=`&lj|<$Q*Cl7@$^2+FqxD^op(8*>X6NahxZ1Qksu5OnxltnUJ4{-T76a5CvlJE+_BmWgu3vO$msVY^QQ0KRewdcgo2&1t3q#Qw(|g_oNQ +A7Qckw>{G*&~Q~qHk+mwHllkGhIC@0$#f0UE$RQ9RA$zZo4*{1NrN|uzMv63YvXRKsNi5WXtQd-7NmP +pE2$r1?}D_J5LVT-L6w|Gs8xh>{K(rqW*D#KYR5zB?5yu)r5A +}wNdz9=zbo8A<4z(f*>3Eel#)~Be0hv1v7BYFtF**c84?=#l+q$A});Z+496k^N@Jh}8h3B#YhCMw*4Y07~5=+yzkT7U3>{Qn!fi0x-KpbQgf +xEy7&@rEU@K0x-Kp?Di$4WGZqCO6mAInw=utF;MCh;f{e)rwE?@a;L~LcSx9>B6!`(og#P)%AF$k>7d +7fD{*5v*GpAhhLnTYel|_4V94ie_0>_TF$S|=3m +8$mFydT8Mbd!k@bG}w(GY|E^TKS>b1)^c^E)d}^dv}4fS~JrH;xfr&7fAKr>_r{#J#}nl^>mC +n8Zqi<#Hb@i9Wm;NQOEumb;PJ6MjZsksN;T&I)u4pWF5kPG&?}p7BSNfVa}N?AljTWTR`^obXGW?k8_4Ve(Nln!Z6JCI5VH?N_{C-;i1v%kMiA{6n~ +fkZ>gl$OMvyxiHyS~1>Xrw`2aH~jy +F8_p(F>vn@*BM%f6#MM$zBlcf|{)$!reA{LG=7Il!@4xUfv7B-Y(y&ycxvuc8hKh_I5egpmq>F`wb^` +c|QnyyX>{+4I%99@~f41gs`{Ew>)nN;j6&6JnsqNtH9Y=-W0-DfnU+QCxq)|k3Vk;;d(hI%ez9jUQWa +)D$!mxKeBmW2-nL`NZuG?^~L0kAzZGWG>bYzxLh4+P-}=axlz#@!sY4|g{*Zhm*Xw7J%lG!GTTG+q)K +Lgh_>|21`$1pk=Y@lCp|J-M6`8p_K4{IAW}e9z}Rh8#Dk=OtRRpikQMoLE5p66o_Srzc-^WAi6|$rhw +f8OVhtu&I>;J%pGPDG$|LWU4zfqyDXSp)zS*~nXq8*s#JTW0vQ>1uz`6APjAPDiqg +j6k=;pxf5NOT~>(~~Tb>_CL4JBvtoAi>j9Nl}V{0IxKy73X()hA|2;kl*RvEXptt-|0>+iZD36yQL!r +O5^b0aL*Pc7~G(wdo(DEyo-6TD2Ky +K%CQ}V7i?0q`A*pdyVQCLE6U*Td~%l;B^PWHo4p=v;d9>>PtT0KxJoAcD^0p1} +;|`CnZsee!cg#oZR;Thet6pUyt?K@ysH37AB+h~rXTh5FS+LkXqv=<#SKG>7LC1-;b4RakuWxLupZoJ +>uL?8?mYsXNrDHzU>4u#FtBwhrq3E~7Cd+rXO3=nTm=u;?;cL$VD`-XMEJvJK0;K{khE8(O?Uc86pe+Pp!whh!T%yg +~MdWE)m^gKQAVHgtJ|>=4N|tnmifB9d)j?Q8UiWE=P`HJU`S4g8`ST_V{Aep!t+k!%Cs52H`yi7Q>cA +4a1{wt?@5(J7K`;QL{;iewx3ei*$X*#^EJMzct^f$xXWEs|~E`(d<;WE=Q?82uvI2EHFg!$`J)??u2&c9Xs~AbY&L(m|G?PZ^43=#vn#n>CUuLtiN&+t4THr2yH`cXx(V^mVi=4E=ls^#Wx>KdGAW +j1m*e&`&F;0aH@QGW1Ca6(Ae>6qQ(peq1meSxMasrpsxwlDAwjeW?31D9S^a%?YBhV!BvJosvAnyqrT +CE2a;P&Jev~x}IfAu9(hQvAJS8=g{VY=^Qwl3#RK>)mSfG=cl7gl%NNMXmC8Y-0y`Z58Z`~Qqc9Qwo{hRv#_LKSEY?JW)7d<@t~%IFo_aV>E~+12Pv)1WJIU_WmbyaweDKNX{&+ +sVpQyh@=Yvb*my_Lx>i@&@!3&dJ`?uEl;7W3PWZG@rc<#dU!%G*gJUhI6_339W1>3=+tw884Mn^L;W*x*9$p-NdB**E75q5&U0BdwRS6l}sBA>lG^z+{YC-6 +_ny`rQ48R@=F@Sl@zDE#KbwaGLV0954+!JY)|Bw*=wBmO?ParhK#7MC)d3-%9+~}vlt^BA()>qLxg~xw4 +|JMy#E;vUBYw1BB!0j-;s;)k_<`q$A9z9H2c9E-;7cZcw9gSg+7~2#%%>mX2c9E-be|)B;5p(4UXb{K +FA_iC9PuNpMdHWkbHtBsa>NfjNBrnMNBn4?BYxmH;>UP$#1Fg}@uT}3@dGbM{OBe}{J?X>kJ-r)Kl;x +RKcdYMKkyv!vC-^a(9Pgw1g1qla@Pi>sIz4D#(CNW-bG#3x +EhPBSI>-CKJqi9^M*Nh5d5a&nB}e?YEyai*t8GIBzm)hf%>{{HXz_Ez&pAElrljDPTKtUQM>pjxeyP) +g?n?@O&f;gB9x3r7Tt61Sl=!7ik1N3syrk0uyrAHh5kKJN62InJOZ?=@CvbWg;s?CpP7g=?oW&2kpwk +1q81Vzn5kDR}PsES@mrDHTrKI9_Mf|{vIX!?25z1@n4-<8#aeu^o6L|YS!pG)eg8}Ylb_Fe83Ko +sHr*{j3o23l%>eqJn$7H6wn&IpPOiPVr-Qa>S4J_1@d%h~Kl~mnQXa*_@o>=ZIgrw_6eM11@Iucuwlk +9BGN4QY5eVg&w~v;^)%%IpW7^+YsUxDt^GLna#;rJu6Q9Od3C$m$Z6>ieF0nuB;y51+5<69zRF?TpB; +x*LicdOR{<>74nWMSrr_|l_LHX-`uT;`0=dxA%3aVBP4!T2X +}!t#P5LkJ$w9`!z}UBo*Km;Y$WkFioa3(=3brP09Ql&E{Wgs!QC#Y(MEowA%4@(`VzmiVuLHM{KsL;PUQ)g=B^QT&+ZQp8`kJbqz~HYxFQCwCd*ca_ys)#mPsoZPLK;*Usi +PC`BIsxo6$d8*31>WUw6m8{hxEZM;2@k`S=fqPQ?!dg98ZOg6IBPD)eRc2QnzpzFd@RC)TG5msg{L+# +QuBtLiYxMxn5kK%kdHfX>=M2f_E}@tc)an6VOz}&rGH)93bG3SKTk27j**EcHoJ+0M4jaYg)`)x!}#XY~k)pHuw4vwEuW_@!14cY +w>c)x!|KE5+~V0GF#GZPM?spr6&WdW7ZpJ$w8iA$~#`Cpfvwlx5~>^)$pEoTxgdl=yL5{FG&uDt>8MW +`_7V#m`thoZ?3}1&N=tdeDEtvdo@KHhBI37f1Y@)r0mW6~DArkMEPa9PzuU)#F?7lasrI8r)^|R8^#H +RfwNc{J@)9J>?a@)Z+)f5m`N)$ImH#S6^NPUQqF){YGT`0bUd0_bvEcCG~K`&j^0b>EX)pyCQzh;ujLXutuA!yfxLoX;KgH< +$i$65%F_h+?DR_au&bm4{)KIV#JT;CHHn+IXxIp$uxeB_@x%Vl=z|H>s*z&O|m)3v%C7=VObT$Uy;Qx +CH|UO{2cK!Ru6h9N&K!Xe&OD()Z*ueA9y_~HgJ2pXkRd?XGJW2#_9pVFIVyFhtv{3c}AOx4W^&0$;DaT}Q+ZykIsbm(;^4evbG##lIrN&saSb5r3O}fQvqh@@!7V>S?k$4~ZY~mb7{};^z+Tq8~ +qBUi5u_%Z=jatR6I9^1)qB@e8dU&mKQV{I1S#ahtoG)#K{?melHzrtvc#KbjXKe&03PNE$zR=IW>Txy +{{GA%3ai_k4Z}a7`3H9_m^sevbHEDgJt$-;yeR45wr{e$MKVdi?yjlT<4Eyy#E9}G^t0L#?S5TO0zkEm(1n_GnY!^uPCW +UKP{H{$-{C?8b4?8GsN$zHYeH_6#Qsk6XNFtf6a)WOXHVjbGj1zLgHrxzx3QLuDay&TaL0h9i89eh+m +q`$yxlaD)n&0&pAD=()it+-{OehcTwhy_sK)y?)a8(-uEr|G5(UgkA6z>KKdzW^f0_HJ-3VQ3m)I%vi +KdH+r@CoZS6`OevbFiKF9mOmwRrPE5=`u;OBCBTnT>e+%E8vyf59_WwQ8%=XO2wevjnzkkwzmt=&y?_ +&MU|9DYvl*UaGuzSQGefS2s>bHrbf!w=j~GN*5cANWQ%{J=dqJ!ET_tny!ZS8W3Uz*Iht~ouv +ogRkxxh#I)7QdAEg#{a!(wx$*UC!x|p4)Zg^l*wF-S|=bT)_t4iob47k5uuapITSyAyyAr%_p#Wgv8( +M?H*73o(nce_jY|-{G8RpD1OfBVTiw~f(=sQ7gp-2$l{k~@kYLH{)&eyP>tIg5YA3pM~=ZcS!sQV(bKcrMt$Sv^b^zpK4n&g$W6b4slqX))AaWEGyEHYY>;TpItT6>Q)XzqA@Zm(_#*muvO-CVq^knAO9i@k^~9&f|Aguz@3fVOEc4 +tH)I}e&1O=oX5`*KWFuD#P3M)3rnNueIHs{9|{YLa@67yKJ`e9KW9zoWffSLb#)-gl +J7?^*D3Nj=izTO9981wZHXaC^JHk8cUj?V_7n6zb9I=h4ySv%VI8-H0Ffa%(aJuDQj}2!6nR()c;zNB +h+*)C0Up5!Cg-AyGrBd4(@Wq@8;mHbZ=Lx_ +@%@ztklD0b8-iFIj3h$iQiQ=r&RH;H1X^8@aX7rIDy44OydXc$?8G>C5c~})Pw65OzM#mKd1PG=eJy0 +JyOLlC4NTn3#}ekieFl>K}!6M;$LIMFSPi56Mx40zv@ +{D)pfMT3h_w)~=NI(SEstpF6j^ro3O3;1?d>s+ZtzlPrF6e~(G#fA1Oe2XD|G;aidorr&>ot}v7?UMWGKdHx+;^&CJZi>Guiyycj#n08|go-KY(@d +Gben^Q>qoZ@eY|3pbW+__!9P7jyVhY}jJ7jN{+!uGpw>ZU*<~6r^d=o!s^`L!|&G`|;FSL39Z}w*w +*Od4{ZOz_papKoE;L*|fuU{Jfx+?yPh+mq`Su^726#se>zx4c8L;MZ#A71sC&0UhlPv+TwR*!GRUzNu +XB42V=kMQ6wNBmN&N9yrA+T0aZ>hZm~>#8;MjveoRhHs__dIKj4P=CB!e?+}$X}A7**{bl#33e&FTOIk~JJ;03dK(0|RX9*+1cI= +Cy%>fwl=Q~a*-_|d)=CE9$S-(s?Q8mng=tRBGiNaxIoGSm5Sm(}B{V#B(6{G8(Fh#&0>5`HgE^HTvd2w@k@zcX!QVIvf}56UugAk9zUA<`TiE?@k@!H%j#ju@i) +ZZ5dYy--4TB`JHSQ9U%xzl;A^J%fj0-Z94LN<`0J+lfj3z_4e?i`__G6Cbe!%yerZ;ZE8@p6Yfk*!0W +Qz!oYKwRnh`&@x$D{LakaV2DSn3do6X%yKeg^CkH22TpB3k%<8jCP-1#k6Nj<)uo~nv-a=h>8{FZcYS +9*Sn%jT4x-(q-QSe4m#jW#Lo3rqD#vpI#IVL|r=KfG8s-fyZhpMdv?-X|Asc;EC>L%lEMeWBj3>fA1u +(<9`4M>#!Ghu>9B599EA&f;Hn-gi}^ZKH}Zw@DU1y@H(hg*iP4_(> +K&`HhD7O+O9sn_)J@A2h_DcHa=c`BNS7gUAaKKQ=&eTe~EglTb`U{HC9V_{}gI;tv|)PrGl3-~3q}#g +Be6;(ujp>y&z`)s((4*-2g+Pm-PB)}7I8bZef>_JjGI(LC50?*xEwyD+i9|I`n{R#PIYI~;8WAtj`>A> +>w_~vZ2qF|)5YmzK2zOfL(}8FX#W;m9_{Vv0o@qg+)Ww-@1d3U?OaP6~Gy;cg1|7U5nB_ZQ)Q3J(_HK?= +tdp4(tdkew8rSTq;oO^fG(yk+q=?PX@sT#$*yb5Xuz@x?GhO!#7)p`Gz?G0@OXc^EI^cFv>48yeb4j~ +1g1?W{+O(S~-~qs4m~+If!_;|=Y^M~m@>vBh)ojx3&w*Uo;Fi`UM6l#6%AF1=j5cK+MBcd;c>=N*l1$zYiH4F9$`0ExN5b!rF7-!&Pryon7ofc{NxP72P0zP3u8qvosNF(}93(|<5 +v>=V>j0I^#XDvu0I%h!>QOd%0F?V7D+LhdG5zsDUQ(e-6b`5tU0)jQ#1hlKyoOraLUAo;a0qwdq?+Od +rMceHY(5~1ny+`LQNbb?;-?EHF@6m5tklv$h3(|Y^I~Jt(=yxqh@6qpBQ17=5(s5p}p#Eo1t9J-KWkJ +0^+3FvH7cHo_(^~19?`aF_m*gP5&@+~7wI?=6Iqnk{)cZk$^ig`&f_kg3mA+-4v!IG7PJjD(i|L)qK| +0Lex1b3q9p)cc&;&F%1TR_81QZ{Fmo2CR3e$kDSWpKPrX#v)UlS&vw9ijk&;*qB`G*$N0mW&b*DR<4v +JJ0WOa&CDvvI>>I-W4SK`&TP#}lSA{6`kl@xWCr*F;Pwo3n$784X&n!rn+@D*J +F1Z(9v?yJ3e_=to=Kj)xloy5;q`dG~7E~ei(ji%Tk5xqdG$2duu?nc4{w`jsEgevp{`L+~6;VG0@kVX +wI~1lfkN0Uy?>>g<`nnBNuew$`fIC1{OoMdp#{hLqb|wEcP<@}mbcMbQRE1^N$Sy#AqgrWTccCs+VEu +IAWs*b1WuN0IKowV<2CxTE-zXcv-vHHXFC8irh?W}tbdl}@R8iRn89K;hFSJth9#BIM>AcCNbiw_2nTSiY<3 +Q<3R-ZFy1(un#21eZ}1_8C_{XyXSu)DRaRbnpYs9s}TA;5uHr=G6~+_<;^NglHM`@dF*TUF7Nq1N=Y- +ZkMV0L5v^hz{Bj~BmBSwp3MkkuTdOPHY0dMO+EnW3Qws~9#J+`cv6k}h_b1|?Jx=?!c@h$9Y%#jn35Q +`Lo1OOqm6Mlv=|v+refR-tw#pg1#mBnB#E+Lz|AnSB*N6jxEV&8M3~wbH^a!22=fu+W*CVQWrM}dFfy +f$sf}?nj8ti324ma|BUjp(!5BBgNS1aMAZ~_{E$wUuvww)_$lF=u*}p_|&)#8wS +sBGa`-f09df&G@y`I)5qB*7S->XVfyMs`xC*zAi+&EUzR4E-JWw5J&%$2-tm5n<4anLDp_VjljO10oI +?5v%(V>ww_UZW5hpz!wadr^q>ws05U5xMzz$(lxT7Ma^in4>g-vq3pwA_^$sG$})UChZ_fK`~CBcC=3 +wa|%hf8GYHpIuz?Yk*al9ZbqQfc3i+@VkIjlpRF*9^mdrBu9rv^&s~50UL(4@CSf(-aE$kb-*gf9`2< +zO+&4I+DFpkLal$g81^>+>mYH-ZvxgL)uP`5ss#fU)wcoDEYI%%RWbICB*ukW2!*)dcLAFx6PNsV;95 +5vITsmeMbtS`>^#zvsDlCi0I*)LxHmrpte?vxsdAB)MSXPgpMX`An7J#lKm-AonnnE{tU1tTwL+zfc0tx{0qQ(wH`59BV)*5UH%fVJ_3bde+XC~=*6u(0Ic6G7 +~uZ`))bpwGh@=ocrl&u2&`W$=^du9jxv3+DXi~g_N@M&y{5@0K5~9DGOEe02Uxw4mQ9@_Nqv#gO?G9% +=#8{$vhSG8=Z%bJ!V`61**nsbse8o!jm)PA?2N>57qI@P7;gQ0fK`|SL}}?eGI9uHfABtVvuH8I4}hD0W*%Akhi=W0rBD4D3KOYs;8(U5&F +jlopMK_2upL|9*OJuNk}CZl`>Q+P)R-|@065NvQ0@ +erN)%B`1`0P%=SD0`>Y=?|SuKS1)n(!d5S5^&V +F5T=jlc?^5;NRPRXjK2$G1^`cWRHT42hFDvzCQg0#k#!+t<^(Iko4fTdlZv(~riij2IDuPvHs)$pOq~ +b%xeTwH4sVN3iY^9hN!=c!Jc4cm4Z*nhVXkl_>WppoWVQy!1b#iNIb7*aEWMynFaCz;W +`YbMoB>{l}BO#)P6FZJKBkdp!TJ3CRXJzCKIf?Udp3ce3d6)w+c8p&k;0HK +{B@@&0H!x-(4wWzMwDk8TZj?xz1=pJ`p)-JyS}Gp*-`H +wM}JHm+Q~^xU(TpV>P9`14P1UAXwXF50(&gwAMRc=>o^#&Y +=jfBpaf|3vMYL@=`YGoK9gaTjd|I2M&p1aY&iC0O+EE<+bP?6Xai4RJTb$W>=X{GJTyWl79N~Eb$r3w9h!>P@LIsIOkA|*=L>O7P)=S8M8C3`7p)jb;}t9KERIi*5a_Yol +)fAuJhJnBFD}d6hpgLM2oy8MX<-g{UX@s;MDo3;sg$y5h!N-j+0h#r+(3i7UTW0bKGLe?>Z?I$NiFXe +HB;I(R~b#)9I0fr6 +4u=2&Qf*4i^!%Bc*g)pod#IQmbRtUoiV%P-2u!0!YHDH(s>V;tnSHm!UWOEqS7{e5v$M7a&*nw#CYFJ +00hP430+8e_0dDUl!yD_;!zs^L(kL=9?~;J0d~1o5_#8m2c_Q^Od;hB54bF(igH#IR}D})u_=MQVGS{?A%-QUgsF~U1u?84hBd^nMi^EQ!`fF38($17h+*grhcP8 +0SfbPZYFK7Un1C3jV|%G#Y)Tjrh7H89rQP8o>`ZaVRZ_zk!~Uj(38aRN0K?dnFaiuqykW@_9mcR(z8c +0DhNeWL-Y~{6^oB8pp&G^*#%frHP{aP-u!b1Mri92FE-@vDiPh9F9b^H+bdUy32@!^gx7C*D+Js>TYf +?2VF(ojDu^Pr0*4}CuW7vO*PJ&@L`P(;g +kiEOd@$VRx?u-k>%K(iuZ9)Gu=2*R5@1+C46860zR#BE1eFpP!&nVNQv#}C0fw6`SgQlW1V1kf%hYh> +1#6a7hl{8>Y2V1t_hgCgc+5Ch$s1M>!vb&E8^d^sPJm&oh84nan7UzTN?;7DMlq};7$(ZC^%7kPh84y +zh37G>*&BAC6cWS9iecD9fMK(I3}ZE%2r!%=3~Pwt1Y$UW7)}s|6Nq74H=KB4SW+ngO^F0yI6)Xr1Q< +@dF^nrE>R6(S2g4+(mt8l!$pvdJegb0H2r#T6hOsvsgBms~riKOW8(0lXFboUU0;%CZ-Y~?lq*9`~H! +N793#En|FIWp%DN$ldP}rw#SXL>4F>KhBa6luil#pOpHL8X+#IU4pI0iM03)UJ{!+43#_^RPRdrDvoV +>Jx-l)&DwcinJxHLMVZ4a9J$CA!G#hLbwfa2=*ZEozue2?r_7S4!X|x=?D^e~AuPN=PsqL&2Ir4M$KZ +A!y%F0t`bntgB-Wx2>xR8e30$xy=%R~24M +Plj*A1_M8m_^VAj(DCz7cSVPNaqt?xJ&U{a7#@N)2NSV^hMvZa5T%{Y{D0@`jtlF!qKahQrhiLk#0ei +HP?bE-@u)QNyw&x`6E)B};T7HEi$l!^N9?ecCs0rG&(kh@pKWg1TYLb=DN%yq5;ZLHhGlibC2E+L=$sq3ylxm5tofS~l8r9?F)Z*z*=VH%_J(~;i3Zg$#_-zgH%#xYriNu04ycApFf7~XlDp`f+wMdS=jVH0s$qjLjO&JR!J0q~ +2f{FJX2uv6s9}vT>|H6L5r%bj3^(fyua_FGV~MV$eM6*%d4e`{DkVebvrFogqcu$Djy3pQAT)-W!Vz-7Y;qOk7%k4aBg-8kVSGjA5*XHN>#LHH^!K4aBg-8cwQXSVIhBPXb%RaGy&JF{~kma +lM+Uj$!Ocgi*uT8ir-VzG_%Q3}a6MmknbzEZJ_j7ByUA4a+=<5;a`X%S>UP-$0V7VRDQYJP9t8aPN<` ++2_(g3^!Y^CQ-u}!=cnLHYL2(FfJPws9}s@fhmElVQfmk?hS7>j7^E^7#65uY)XVu!vQh8qSkONYM3b +O+zF<*kZa%A2V29qdBdN=SPV;=H$qv%lB(fQ*08rHabgYMch+z;6qb1s(OAPJ3v}#BxEFmS)^I2cubM +R+Z7Z{+PC_7taVxWi7>3rch8PxDqZ*RaAIthlu6iQ%I0%EwjDIu|ju^N`F&_%9>qrq?;rUbXpxtFZa8jhF3xLhsN0v)cC@E5}pPr|=y +SU}-Gm+Is!@TFab9Jtd7>=Q8*uQzB**Xbb9mCj@@UD~ +awuU7wbiTV>hVdiFYPh;JEWxl6VA#KTV+qzU3E2>Z5~AjfI(q2X8FsF?kQBz{YRytutr&$PC>mCf!rtX-xOYQRuI5c)=t +*cuVeL!dAiW#7h0ecD;(lnME9u>6UJSD}>|9(SdpA}M!_D??_={l)h6Po_CmTxCQ8m1D3`-X1BF8X=8 +?=VQiD7nzoy#ch4mvHM@TzstVG2iEG~8$h9kwJOg|Ran=>lDKXV`y%4vS&z3`b7kXvAyiC36-n%YoI0jNl@75hd1zk5{9=LcCL++1-krvBl$JZXffPq?}m4s1okAtU|2y6Lr( +&#VT~}X17R31&_!M+A;WNq8jht-f;;G(t00yi1NEn{zb6sH0v+}wbRY_QSF2$P3p@!-;g#|v1Qc$vXj +npFytx{t@Dj=-mQXZ|DO^X&`69j5ToTQ~eEj9WLBpoMFpa +Pwsnczv!<6n5rzeH;n@2D*5)a0C?gu9A>+Zg^ApzS6>pfWp`qmT2KsbtIxGR^u`WXBwryek8%Lf3cdR +OafzAd5dAZK8G>v-$2)Fv6?{`ZnRiU(#I?)Ruf=Yt*IC`5W@;$SW+gjs+; +H{+`6i`kc5-!dnevPeMTqD}-SMG3>p?rJ!aQV;J@^!!n5o_EuAItKnKa2?{T}TCL3sbk5YQJBB4{SVf +EBPz!Vr!`d6es=6AMU>KH3U<|A37{+Q?Aq;B)h84oFLKuc+5(;7%?=-Bu)vyG^tEz_UD3hS57lwI-&Y +6Ue7}kwq*x!^mQNykBMrKK!1l&#nH!^#xVTm{Fi(yH%8pLpQHH@p(lmNpLH5|D&91Vu+sFSecefW{#j +-*f`6oyyLlnAw-1onmlm8*I0H0-@ZC)ivq&=Ots&DEe9j(1m|C17~1mgo$7!_L5#Z#8TnhH(p>ff&Y1 +bhv8RKnxp*VMz;}L=8)p=nTZLq=imH4C5s_12Jp_7&g^0j7|!=zZf)G!^pxu0aF!n8^)bRFK-#~s2Gb2vZWsLkOBTnQzR!wPXYkSn1ehZW?o^5n +1*$YJP8D8ylfIIJLt@xDI(u7rwP4%gyJPtW-XdNx{$tvsC2j%4)YFcZuZUl +5_pTXP`-o?q=&ID5lRnZUqZrRfiHnuIIu4v*kVmmv?kEQ-oAu}9M*`#VT#rSdbn9%q7Dv|IBk%_GCf? +vVeAjfe2Eecb3?P6W-R`2sC^}x<*;g$!)o~)#=e9%hgE|d#(G%b4-0&W>Ks;U!r>+8VG1|b!%?zMM|f +UnrQ>xvH=mQALCViJlCm|)&Juz2u!0n4jQ)9ESD7*dO+9u& +ki)osxP-$5#SlNiA=_J`WSy>r!=n1(5)Mm{_e9*)MBAjU7fovx0q=7j6k+|MlMu%w?Zlpe+$meddXw>3 +-p>2SS-q;5^ZVgG(Q<;&qf^%CB`gy6T31bSFO4hz=lG~%$pmk6bYF^5HZm@pSY56d_#)59h85=7ie92 +V)}P41&qw5=y{f13B#POJF_RtS=$pu!bD=t{;~4)8Va$1=~wtUqVnn4EgSN~4{=}&Ylz{+@yf==gXyK54#3sj?cs}~-QjlY`pv;)aD6(Q?6;;j2 +h-N}XuGvLp0!H1a +-RskX!E`jF|L#@-Te)f+v`E%pl=_EZ&accIw&(XhH7Y2KK_Jpn +suI&sT+JE@W#ul@rcx>!7(QY4)%;#TLDjz +aEAJ%!;%!f@LPUgc&9^RY}Z|33le7K#5JM-aA9`4SEyLq@bAMWMhz8j{yRnH|!xX=qZ5=!+#k_1ydmn +AVnFC$wIy~{>ehVH2#U3Z;OI%vY()!o9P1-bkls0f^LpKM?p8ipQoUk +-7iqkN$r7C59Ifbo7Y2hL%B&kOhGrJPg2m$=ocyIX7mUJ-Hc9C(9P&k3c49RMnN|tx|lcJ$)YQ{?Pf% +maof#^uHm+u5mUp>h_2qYn-N{QZ8syjZrg4~bkVlmjOdDOyBVFKpqtSz5wYBiewl)9MrSGLX7no*bTj +%@3c4Bn8U<}e3qO?Fv1+CZn7bkk(o3l9TbD?dB)j{@B^mCg42gF +rXUq@Bz^26WRzItvd0U8@>9^N#@CG>^^x`~yJO&dY-Q@1}WdcIL%@H_c;np)#bG=CRqE7yi98k52v>z +fLim$L4X29tC<=lO(vh}mpEvX$*-|n98A;6kGR7zD;*b}KeUw;`4I +~}VRdT$*JBRa*~zDIkArDCo&3*#mxF0Kd5SD9tcu9TVxMDaHu<&80w*&z@&g`l(BAnAy^PxGhIalj^e +m#SXlUo3^D+l*Itzu{I+F_v4#*D57dH6?`vlbGv+A|^1^d|5-Q*WK{DQ?^H{ln${DOUk=^B2a$1m9V +>}r0Y&o9`_yG7;$e!*tmDKcj@n>`S9ip=?r%pR*cMdo~0W`0Vi$eeG@%(&#UCEu$i}ctOh(E*< +(6=+a7&`!!~dF(mZ;D!!~Qu6Gz|Vu+5piijTgxR+hV6#g-XZITIn;7>T5B}vDAm&5iOhobLsG|P~N^`{)pGNfVsFAm$ +8OemS3aoElzsmY`FIc#T=WWdn}9JWc)SNYL@Q@EeW0~*x-;jm4TzT=Pnm%}zm`bMAq0f+5ODhmH0hwT +?DEx&%5qiK@;{H$kx#L+ZI`u>>xF-Pqz=4Ubc6OLvX(t-b!!}c4NPJ-+=bF6>J3;Qz;rwR7+L7M$JN7 +MZJ^xnVVs7;T=*6c4iY$uV_^6alTZ1bZx|20SL94b2JuX5PVp{Bh5hQn5?=4W^BHICXTB#AcrTMB0@Y +dW9V+23*4W=PS$=ct`QdK8%b1BY#jq@ia2$l)|a!Wmna#)_jpMgNJTHbc@vvw!ArmLVnnFC4aWNV;_P +uN=-&q|y62g)^N*XZI>c(+oEk4N7B`5;2IKNMof^kJ5gfqiKFU8vTFcXqq2=)z7}c(KJ8$wqs+~SgAz +vX7){vrrD8-n0vVEnK*5%Lh8{GzRgkl1i1JsN5*O+(oD1OaMUt}a{DevZEiFj-{YtiwshR@b2O +VfO8EyIw#m`3{|86y#kuG?8>@r*bP@z-V?_{=i>+m26%Yxa**hGym!_f-{vn6c>`2_re#B9m9UbDw9J +K&dG{isQuzf_NL%hq;G`l`!_Z~;n?0S^lPdS=>5iObph9L;oX9{qr$cJA`=; +gQJ1O+FC3NSWE?>C;nwgp|pzY#_h+!o??_I^R0mx;)ywu`_()?sRAk>&wIGh4J=q=OOE5?+>S2yMx=q +v!~L(KW+d1bpO=x>Zt6$ox$#ngTamTKvxbXw?_LnKh{y~DQ!*1TjR<0aI$rKuy^+Vv(bIdb?derhqH9 +t^N&CO^zoQ|oP$p9?v1VwcDDA$`=jaT&TwmD*BZ{MNBdosel>rLBiF&na_T1aP9i`@WmT9M=#ylxxG8yo9s^y?% +e&-?8~#S%)UDN+U)DIS7&d`-kiNPdw2H!?1Ou+-FyAs+xOo2@U`@!e0XEy{{T=+0|XQR000O8MnywZ< +m~XImj(a;`V;^FBLDyZaA|NaUv_0~WN&gWV`yP=WMycR(3*&&lF&W~DH+N;o6ik?6o)Qu~RIO^Mg>JwVN3{p`#(c +4462uhL9@D7bXDamEB}36-u?o27DlUQ$ALUZW=m8DGK*(6`N#-gxftPh;ahJ-KWNW!bs=0!)aRK#OO- +B=Z)vM6*eHfB%2tyV!`Nk%3B!&o-#2{h8zoxCHc2ff6uStGNgw4ST-Euj>n17 +g@YfhLQwfN`3w!UAd<0P9&+lO^R^Yh-NH*bN%#WE;;0BYgLLz=4CVaXk(JGi=ycCvVauKFU +{@x!$kA)Ztd}jfZNIzJ;_}oKqk9#Z#8Mq-VNfyrYRGQ?7oj3xfK=V=h?}2e#CvGY~N}yiVQ?|rn1!IM +>tH^&W_mY4Y==2(VESF4?)x9amBb@*bBC~TW4&IOaA+)^O +PBkDl&P7fXSwSm4+aUo3r&hA}GX25OCtqk+fH(D;FfR=eBlj-JSSvpec{Y#U5#2rU@2hNG@A?zM(67! +L=Q-Kk=68B0@4$=sLZEX7kaxe%C1+$1jd!#MOOEN_So`V*MDZw$-qG2B%XaIr&{>$7U;i(nSTi;z5__ +rRwR2vvc1$+35^J$I^$R`U8*a94QM3S8@`SGJBwYsj?F7-xD2N>HZ +IrM=}|KY@!Pf63J5;sjXdABU3c){qgdbGz36xvJ;B4MJ)f)zG>qChJ=nAr-uP1DR_=O4#tjhz1Y5&nc +LO&dR$cvAx?McZb|12)mD(GL{rBotAHw`>CibrQIt$2soAC0CeypD7is+qmAy*TaSD=c~p~B8yf%tdY +v#Z{nT#xNhP4^`7;Vo$xn>_1JuZwh7(bS&gwq4}D9*y(Jwb$gtU$!4yPPdYx~X?2a~1fRb$e~q#_$^s!5kwPO?NS5QD*6 +26&5fAx(^ut=BT|s`*%Z^?MlxoT^xkP?MF4ro@zmb(pvvK5GBCZoP(WAYZdh#u5+6Oi3g})_=?o@We+ +R)Uu*!2SY&!d_}KP@Vy79DpWE=YVV*&;W!IAPB~=$G?CLMT;Wt$E}E!7q*Bcg7r8Pn +R2?K$4jo$^FF9ECMZmU{aLoJH@$k@1)6hN*iNmKt+nI;4VB5U|jA```56jckfu`hq +&Q51H|GPRNceCpcP%?dDu$;j&G!1GV&7J8|ZkRqBY2H0XKYPD7)G6(mV*XNiF7L10XUI@u*p0TO!#DZbhr+{Wbg0?b?v-3Y`yWtC0|XQR000O8MnywZHgyz`sJcjB?J;w0> +~JhqEloUdkm{HyJ)@6mHX@a)_@Jzq!+1HqTt<`H}l^72v=9t58d@2hGQBHd;RgOPj{n9?{B(bdsVw4c +f~Z(Vkx8_Q%{9VBB3YsL&UL9b17a~C%6e#zE0Rs$c6)>GzBni)eZ3SHmpfSWGbLxKW38z +{)Tb1UZ+w7z7a|$c-0%Fvljr45nJCXrqKQO{5 +bXRD;g3SZH5wt>lqrrbI>NJLufdR;3j9k~D`R*(C+}4EZwrO=sY6%LaAqknmu23<203e8dM^Dm%DNQ&^<0cSbOJ9cW<7Dnqcl=CWx{lKwyU#bUMSXCK +s_&4*dJ_u(gO&EB*&=ZOJoTO4BRsly!_m-vw%HGc?zlgj(O}|Gm!@6E9roslMZ~MB_X@Bbc-tG|1XE?d^P=9>?lN;%(R*N(ysk +L7?8?6>#kLuaM>)~+5W||%D4OymW`n`d@5pp>*=r&~O2P+{td#lxILF^~kZE0-8-PZ64SpDP;vyZu@4 +<9~cf2&<`lk7vt5qX}#w(-1r!g16@%gdz~i5QK4J64kSsP;)xY@&KKZj-Egqm`o_;~af%6lkz-<uZhGeF4lCHuab91+uOYbGUE01@!m8^$5T&AYu +0@h8plO%X)6rIMwPPxSbcUKP!Udf6VSK2ly&p8Yc)S%qht2$q=^sjx%vigXYS|YPm#JLSCfH`o~`q!q +0yESJ?h+NfZ7P*xq(E?_uYQa9gZJ9pATm +J4Tei)JeDe5t~`7j@ay(FTUg0$hm!Szl932m1`P8*cR9@-Cyv{jyPo^#^zkyfKi@G0*|%G~Sb%I&Esr +P{i|;Ip^UZnWc!Bj9i`u_XO9KQH0000807gYaRISqysB!}U0Ne)v044wc0B~t=FJE?LZe(wAFJow7a% +5$6FKuFDb7yjIb#QQUZ(?O~E^v93Rb7wTI23*7S6pdcK%x}rR%&|vCHJ0teD687xx2glP=7EQPiZm^2Ge*z{mCr&LBGM?)$VA%;WRU1EfkX!=#-PN^q_wU +DH$!4c;Ut(lWdr=+)>IMPnuGuFdW +P#1v|?k0*vR$5UFBJI3p!nDJbBiKRA<>Oq6L?REzgH{mVnNlB5%T8g;k=7p#GNdm2$5vv08)otT%M2H +@kd8SavwGmr-N9fRz(-f9&qty-(Z%X`_)IP7@=G`f@1B6EFEZ0K0CfZ4kszGNdR)(33<7ob(;~M&d&wG}NHqd2&x&An(`qdjb*awmQev4vb9*Ky~JP|JVb$FKnRck|aDd$I9ChoF+|4s2%MF +j^PD_81xl;l2)7w%dnZ!1i0>qfgFy%@#4uXe46nsN +PuRorQ=TE--;dnkB#4!zL5%nnSMe}j6nDinF7g0Ei2Q4_x`B7po<}H!mB+fv&)ld>AhY4x-qd&o3iw0 +#%8}`CsbHZ`dQexOPdHKIQlv=HK^P=P==sk&yl*X2OH3EAFd-lp*u$=te@69HC>;S~nvxEgP%7-EY^- +yYUn$*|UdFVqAwe4=F(|*_a(C!c|VnlxT&|v!Y4{xNqS}ij;Nv*?$vo^ZObE8*~02cbw7a$XJH}aWqm +pPOaF8fr4F6P5e6^Q*QY!woJAIB94FOr`ZD-IUH_pkz5ueu*P-70F-_pwW^XLH5%BdUOs{PSO*FGdUz +s(@Bv{jrMaBXYTzd%aq0{&)b@YKdePcY8mG&$O#w%ZZy0w-z>RM$4tZ{kdG$EtgpnhghwbnUFZjU#42 +|1JXaXz};HEAa9bdYqZ{I&I!)m8z&mzTl*m_eW8Ee68<^aS#LBenUjl`nKSP$Q|E@=C_CD8nL0D)GIj +Fg2H(+%`f1vKt8*Lt8#$!^15ir?1QY-O00;m^MMG3+_TdlZ3;+O$V*mgh0001RX>c!Jc4cm4Z*nhVXk +l_>WppoXVq$t8}_k(L@Lt4F(?t0=mkpp{v=J(w7?|8uc8HCaA?fyZ?m4y@f+agN19S%JvwZUKk7iP-z256tNGOvr-Vz0M9?mkq_fAsh0L2lsp`YjWg!QQ%DGksr +JdKl}kHjGbD+U+lthuLI|nX$(pjvB+l^i|EGplKMl_xXvW7f`w?MS-?39{aN$?1^dVr{+!vC#{xceLY +X}@M8qs_`Y%5K{;fZCW($!t_oh%CQR;{Xw_)0bU(PPsfQL|0_Jw;qfZANlC$3`ydEnUG3pukwb|=!pn +^j94i-L@jg0N#BvX5K$BjXO>;@I~*2qA?v>PC9BB*z-_1NPpEMET)t-U;FdDD;B4a5jRJStpxdRnsYR +yg1t%XnXhrGK7jgKsRC&&gLPX&D|R00Q<7<9aPFdQD7jemTEeW9fRh4UwKa>j2Qr3 +Q1(p{rpx}_fX@7Y1Com2UPX;IBAENZfC*!mJXvB`shwOk|91O=NN0)1pgUzZ);)*QY;y;C6tmzGxm#>?4qe~7j_V7QRfB$H&Ww3}RAUc;1A +Pa2U*YURF01ofgHCVPYpiX+PL}tV3#VWN^kZiRSs%N;AJo{PA4X!=(*xk@4a3kiqp2H=U5+3{^~3sSp +GyuR)k9*U+B#mOJMKwho_|Z3^~GnY$r!H@XPdv$)_JYJNlT8(lRn_zg9`Dfmq_zbW`l$#2x +MAAz?7ztvUag5Of}+k)R#^V@>oR`WZ8-%;~Bg5Oc|yMo`P__F?8!S70btCsx;+!TDXtHuT2RP%d+-&6 +B@g5OK|&CEyOmf%~G-=uKCw`NLwBKQ+Ee_W9bpv6aghHg-a3&ICTW6RFa_AI++jaUo3`9^7Tb6FOnqmXP-S%`D(OZyc*BasXD8{US$Y{8$`}f +er>EYLTwP2Hj6N41&e6tjNF2pVC>+O1vS +>ROE0N;?3YN&9X2x7LNsswR?|>p9&*wv*z=NSk$Zo!}Tsu9sHDxqp*VcUG(UV?6mdn(Vfu5=NdT|$6Z +RlE~ySf01W}%U~gJ$d$^wqVZHV8{`En^TmCHz5pb(Zr7R8`jc18E9Y2I1Q%Qk5=Rb!!m&djapVvvg~1Mi#F0awaO@CB961ENv_qhuraZqxAi`l!=n&MwFf|` +L1PaFvA&ZKjSl%MQh_LnZlz6Cl+J`4wJWqL^ry{$G5=%_PvNhM;oUWRDtTPvT#0EZGk7c1#sbQDt;H_od|d##a?W?-|C>6S4v@jz12$Q0_a +#>o8C_}tc_2We%#95$Lpqf(LEvJ(^k5jV@!SdP6+Ggd0~&GPT%WvFnvYJP|0lk-22mr+mmQ1h{up>XV +FNE~??3ddfC#F3YwaO`DB9C;ZE$6kiSk(Z%x>}5zCc^L}FUM7ncyi778JjLw8-JgTX>-5d=JnwBj4!M +gT(qg{6??EPKi{SlJS)nyEN);|=eS=tivAh^-0h#OrooH@RGfHN +>KlmROr~IFFaHIH6dV!8~sBFceE)B3~?hu>mNs-=fbmPpTtFI@cN@WE9|5E0 +U!r#`NsLWsSNy*AK3%pq{f0Vh#=8wX$`6F>;{;K*<@Op4vJFZ;va{mh5jvPch) +rz+0^Huq}sk0Sz`Y=3>}jN42tYKhoK9GpmgIIg;!fYB^2?te}3ICoAMcIO&B%MtS)qN?&B9!n+h(slAs+q +lR|auT;bzhy9H9QbB&Ky?U&hdi)rO(q4*>wO6J#vpCXTijTEduVt^}y!KLjti2?Tw3ouM_L4Z#UJA$B +OX5g-DI9Ari6iZ$aIC!~zE`spia1t55=SaX;aCMp9H}6MV-+NEq=FQVRglDAX&z%s%wx<3UXl?3gfKU +iu`PwIn{HHhz{|OgTT9zNMcYb?TfB3J-joeOWMd<$+^9^+LKNl^uFJ5*DM!(WOgAw%SC>3)5<1vez9; +kztlHGIW*2q-HM1CX`3JgC)UIG9uBC3$$%%}4f3UnfOWvfDHClg@emOqYjLu;nS%pDj6$Wos;ms<%S% +o*Nu(S$;esR%5cC7AZzP-7FtT4B8n@2ns$XkUHS#Lnpt|5C;&CI66aaFFNbTe#v2$O6IZsJjGvWuG-t +aTHOjGGv2bQ1%Wn<(QY2q!U6I0@QE6za0>mO3{n>X-%P0G_}DD}`l;N@r>x)Z^-~o7J1v+<1I3vz +Kk^sUlFX-k{S>w2GC!ZSfFplF;n-i0c+OwE<{Xgp%_k;$0}A#RE2Ou=k-sqD(lUtOyw5NiHKUpSwrWO +OT+IT=+6^&yJT5^0NY}uU!pf>)Zz6tr32tQ6Fsqbp?1GxxydCPbl2p@C_o|5WOpQH!5s7N@#$Fb6>79 +15UfE5_6Dh6JUiY=8sWl&Y#XhEmTDsQS^A>8ET5Icm)1@~h582kW_MW#&+tk`mKhp2iS{+^M?0IW-Os +%tZAL`MYl85Z-T6fP|rE6;47jX;QwVbJI=AO5lX=>)S{Ye_V;-=&wd%D)!^H%AZTJOdBQ~8#&bj{lHm +a|OFdUSu<{qPfAo9uZDO-yaFbKiQA_oG#9U9XpTBR~0v)o#jpR +nkZuup(_z%G|B`S{2T)4`1QY-O00;m^MMG5ZpmKBa2LJ&07XSbz0001RX>c! +Jc4cm4Z*nhVXkl_>WppodVq<7wa&u*LaB^>AWpXZXd97G&Z{kQ2{?4x`DOy49SOb~Ko+fiy9U&$`MXrG4B^?=P#b*)htA*!RI3ap))eAjxu~2+PKNB?6q$NFW^il>f#dx{FKUYX|FSqu_9!ebqmkK^ +puG$#y&J|-6%DH}n=3i+eBl6sU6!UqQybn)las$6175G=u=ktv@iUJ?@8nZN0t1xr&-C#<67Qz&|V*y +im{xO;f?t!__Jr;zF+>qAhEL`qf*)@ucQ$?sNAwG8hS7IFZ=4}&xoX~~U%3ez))?q8vTy6A6xYvg997 +=CUAY3Zrv`SsDv(zUZ#A25S4t{|^82X0vqZy+pWb;VWApx}Xdv9_-oKC1cc%t9iqfvV>dHM=kgaWq+a +3YDX)`CMYtWs{EH&7e`9_&%)9vtnPUcWbaGTL{0lYu=RQ+GI`Ha)gSlU`@qZ;$A4I(i(AZ41F=EOW7O +W|@<>E}lc=O2U&U5|@iGG5rbQ4WXd$Y3aT)gxO=LDxX|r$a?dk7z!CIVtc`|bLdy%a|)!c)0^VR9i(R +=x{$JqZyifyfPB1VS(ddza54x+|nqb-IzEHlz=2@HQ`6t>(|IPt6w5bc~btK4cGWPXwQ{N@c +E4G@cX!m=f1ILT3sra97ON(OR&S#!B&Lt>g?IO36An95ekGAEtyXh*se~f$Jd~J4nfeRGT^(Vje8U8Y +gvx_eaD6kM;Qr6MQM9U#V2axEJhZqgndE11ee2^`2U_YB^E0UZE2{&(+i($A~KgI+HpgVb4M_ZxP>RPx?;U_XG~YWpCg2xaKn%a +F-kI}miq>rHv-1(hsVC{jC=pG5$Rt(CxN$G0oZ^)sZIuy0r+c|s|@B7A% +K{dXni0*GXzg$zwW&;_&i&l=8U^8c7A>(rXY#wuF^T3o??=YDs<}QW_q@S5nLe~rj=%VO*i(~F@CT{)*G6nwBo2}F +Lk^9j1D1t)DUF85wF&(L(NM-Gd-EuG#^b!8JmhznMD4oIi|54#glPPi8G)-&%}GIem&9CvQTg5;7uYdtZgxR{O*EvW +xef6Pjscdt2z*+2eZw&)si1^IiLZEq}S?G3XiRJls~UX;$imcTEY`%xS$iX<5_3t=;Vn?A!C4urvDh? +b}td5WHb289zPT4Es)}J#mJkTYH459~z;J#bd5ZudaxgfuxJeX5DN72h!qC@%2QkSv7DT0RT1-@CooI +O`F16L7m}XG8*>F#G!$$Ouk_e@q{!Zc{);Ww>uO6KwI(dD+36}hBjx)AY7S1W9yQcmCCFgCMTdojFDh +ma4e!&_HcmpQ;L23f-B18?PK3M!rB}%Y#aN8NWCO%e=l)PYI;7(=2HOHzhcrkP#~$tE{1mbMvL +n6!dyQ#1G`;f8tj>K-}od>GJ~$@0i^*fvE3@AGyB+5>vee5XuxsHXl8kG)wp^3O>)1HsnfvOitEPZkS%o +ct&iR7Cbuo=D{uUOM7{{n6n$k^8;qijpZL{#nT(Xx0)-z_ZY2v(UvjOxM@BEz!EQCw6Dj8{AzTW>6t) +zozjn-y4cP+$)h(O*0kkPHX37X|~6eK6qr=IFfKeE*9wIKAT00TJ@(eug*_l-N01*M++Bl90W|Ax{l= +{P~VeVv}YI5)cbkocZX;sPH$4+!x)+KL|SS`_No8L6EkM;E?^7S?6p)q(GS&dDV6pjjsAh5d%2XthrD +V%@1aw@y4C7bj{oM9565FLoH!5muGETS%yzOnNacgkQzh$dt5AgbdTJg_P2j54T2>P~MG0nLd0aev%6`90<)es}w0WrURkCRXcA5(Z*OO+b?-gCcveGiwHhZi-SXSYiox8-z +whnk&U>xGWUUS3?%V9Ked#6%=4rk0F22~Dr^mxyCV!$d5&(l`mHOlfW?;)aJtDheT5yI3Q*i7*0Uk9@ +&nIp>Pxn9Koa$alHXA)9k-&1PvLLS}?aG(Oc_s_X;6)R!vX4;5#IM>JYxi2J6PvRLyKOic|{T32*?b5 +jSzLGcnaU)S@TV*Mu~^!3` +5AAPp&~&@X)H#Hsg=#{SaD8Tj?EIDKhR316taXAkA%+cBU6T068$L^^k*^>xvh?N-+P&d`8r^q#Yj|FxJ9v +M9EJ}e>6gWo`vw184jHnb#%nFVJ;MMV3ZD=%_ZpR(GTkoITLD%tpdg^)9pnk&}xUFHQ;Zc9+^?SZkLv +cA@r`RU*P?A4WJO<=UB9mwmCSsk3{*Ll$I2cDXWebinha6oM5yK6cug_1vp2P&W0gqAS8$mG0^gV#!C068KPm5@SF=#Zsy&HKjII^tA!qo7;N*=DPmvrcN~Uv2$#Z(|tVg +@wvRX7%MbQt$14|N~ZIIHqZ-rVkE@68YDw|Dhj^{Xx06O`biWcSnTU%|8II4_0CZNzWeCtF +~7%q6rft-GM@G(G37P`jip#WeYC25y7)uv^Z+<(Dbgwtce;u$=>yYQ1l}`FanRy`k@KtdiaR{(Wcnt7 +>c&atH3E=iUe2nQ*U-R_on!JGjGVYL+fVNp(9Nc;Q4T7X#N1zTe&igLcE+tGP+l2cGQ1SLjDD77elR?@|kIiN$gPmJkQK;zwet9BqpeTKmX)VzC{0B@Z?ZV!-ttdq1;jfwwr-aLm@}+Scj +%zKDzRGA^b1&=_vUPDxBzz(PLcTWI+b<_}FQG%1VYd|)qx#s|q{Bb;yjkEt1`^mt-Q+cjLuAj?6qp(_ +U~d%7!!g5R%7&wF${H1=TNcs{iq4};ycj5e8I4BNa)WqH*?)6(*fCAbnM;*4ojXs;@uWw_9bY(g8ZK_ +bT(_8Aa#BN5qAjPimF@EYdt%n}Hhf^P0X6|?|6XAb@%l45XY-k^Tf%+`{xylJhO^yTD++|0^iQc8C)}&u$FF)4z@f+bMAc&x;6(MKFaD|K +4@|8yRCmYVxj~nR#EHts*v9z@-z7h1+u!F;Wr%eX@6aWAK2mnS!LsZt0XEGoK006!Y001EX003}la4%nWWo~3|axY_OVRB?;bT4yiX>)LLZ( +?O~E^v9RR)25WND%#>PcdqAD(DCoQk`^d)YB0l2|a!Z8&y#iS;k&quVxqRuG7*_e{XGL8!)+4I;&E{? +97{aZ)V57xTt>Uwtqhu({Rx3kDWf<4kz8e>5T71?SkAjqlw}xF8qkPGGxRxZR8IgMSe@F6$P-hYJ1m# +;D*Dq$DUavw@i^-lBvLe|Ckva_*(|kW)lk@_=ZcN@l$Q3N`3&Crc$N$Kr!F2kQTcH@idjMEY^01RBJ= +^ZiCwI-~R!KO7|9ZqKIbJSJRAXrk+`tGU-ZT6ko(fs=97`fQ4w}tFJWW(Ms_RT@orZWF$>@W-Ud=AJR +m8p?tNoDlHXbq~+3lLt!_xlQ9LpAjLwiQ+Nnr$QR*nQXzgLL%!TuQ!GNzu~i$UHhQn&{di78rco)~Gr +<(tOyfnw0|XCwz=USxYuZ|yUKdK;*+QJG5W16qPt?63#&K?QKQpCaq3c$ApDjadl2lapjjbQu+}gkfi +r!I#Zm4}^t5Sl3X-Hfouxn_KKL7}#-!MkBU=(Y%jH4zH;7gwe?!#p6QfK@~pF6WzXY4-Sz!ys66#Yw) +_+}e%0E3nCh1sES0F3&x?gJt^w}aupeYDlz4cu|xap-O`qYh0wGk4IP4?8oO&S%q!({B+ujO``1VpfT +qOS}Z+MncJu8J|ZwrT&QaY7`iSwDzAF+8i*Bi6S3YWV`#R9!65E621s21ic}?Bq2?czA28`!StPU7br +!4n;80_)ui9saPr012rY0Be#e)9zKf((O}drZSl3Ypu~*ma_SI$k-Bp`t?!a>Hq5in{$|Z79t1Xq>P; +0XY*1porY?WMqKl*1c(I}1#zug(u#i_&0G&#*;uwA%VX@gPQ_`#YBwh!wjCyqTCr6>Ckz~pmhXF3aTJ +`J2+$=<;>+G%W}H0+;kAk6o&v)uyhyE*a$3#~V0KhGI?qe-tn%siNgac46J%Vu9EL{2MBe${HVAo8_N +FjCU>YAvvVuz)abOY%I9J?43J&7x&yw~vmo(dq?KlM;tk?%ya}aggcifyl=SCF=*YjzY`YdcGCs2b%f +utiGqI6IqW#kJLVnQdrOi#$1Wi@Jbo>(JvNqnBy-@DZtDw&zMcGC;SaNPOO-Tl{kZ24m<}Q`C=9Ot8> +6_KKWZ;puRVS0!zli#J!0{Z0XJ4~9lA(E>VL<-p=Ue(|Jq6z=94Y9^6f++>gjyY$!*HVzKnN`PqICQ4^OWdkxKTbyz)9K*Is2Y%@^QUq}dA +!Rg*2Q9sNq}GE-}K_p@a4rvQ3-spi*6P%80~+DTpQpKn9*6onkF>r%I`4yNa_{ZzPO4ioQu_z!MUukZ +G|?qGcX;dp)3tMy+=<1r!Q)!M^1m0!1CzTq*gG&Z>>QY?AMM8M$rXIhE#FqygCx$C(Pvp#+dd&m2?p! +o9juYB9+^jpH3?MvaPilev5o}cw7Zu&9jBO-Zp*8hX(>X|qTkyXC&zt_vPG!L*FwSNInO9KQH000080 +7gYaRL6_PgLe%80M{@804M+e0B~t=FJE?LZe(wAFJow7a%5$6FLiEdc4cyNVQge&bY)|7Z*nehdCgjF +a~jDJ{;pp!vFZYlDUiX+w=6yzB7QNOH#Mxs}nojJv06 +Cbob029-1F^)_&jZvtIYS-5<2sS?}unN4ACb@ZgXQ7o1%MVlF(}W#|5sGa=cf|BG;4o85Zio(B>m&cY +5P580H5+zI`FIUuzT5(!;TgaTw2{GPl1iU-V}vCtqI^nD&m$6j%~S}r3`ICdy}PvU2=@&ok)g4wkn== +V;*?T}B|WUVA_PGtuqYqiEyi;z{%k65eGXhMXM++wG$%WjBPvKuaWaL=cDC+EHw24WIne^q&Of;Ws^+ +QA*W7VbO{OIBxCVaP(CU9ZE1?g}vt<4>0|8G;xIk=ALl4CpohvThTk +Y$W+;(g$&|_u#OM$O8svc7Z|6x$^3Z3T2?ceEtXirURl)+Y5g$wiWrZu=rwa;t{~yGj4H@>I%UFBViz +zD{(wMi^a1Y2CY(i*&my-537};kyTcDxw?lT?|HM9?-rSt_ho9bp7N)=`46G%I<;oQhj9mq`7p}2z2) +JzDoPPkv=~=he9e$$Kce=xVdoW;~s~dL8u1{}<-SgYt=?%NSy}7;`v@IBy^F+m@Op}sR70)1Y=|htU5 +?i=ZZ~YU@E3rU#$`eBuh>kjzLrVY>*$y1K4MvkQm769PXmX5FVa&Q1Qre%<9M<%~qe~ +wA#$xj&eU>0CCRt(Vdz>ij|z@I^biU7m-|J# +Dz)KXu>O<;w)|H#1j?f02TV3fVt9@gqp%maqCGD4EK55k$Yzn}P;@D20B=|h28D-&;IV;caijyxXFT9um?l-d58#Dfh|lJDX=9G +5P?B@O0XN|uTtfd1@I(^B@Jvkc8m3EKbEOzdPBcx;7JSqr|N0JcNOaM#@)zXZ^IaOdh_p3yPY@#W2TCo5;J@u|S8hJKieRN +cscVWxXgYYy680UsIcnBm&&7@z@Sk49s?9xM3c(^6+6UfEjNm!Q{VPZRXaiJr!O(pqT=}lTp*PZz1K! +mP)$K%9n#^V~QaD|w@=dPItfP=_X81d*jYbsE*g&;wlG~wX`N1TQ{Rb}_ybsO+Gx>Re +yt=>4ksr))>tLOa=dF;4ZLz=SB{Ck86B)+yK;wznTE@jG|?2@Fsl(PRLJeo>EOKE-Qky$N+mPRY-`w^ +6fj^LRq9s>Ar(l)uwJ5nHC-qOA*%XA3F0kETi=z(hJIduq+>v)jmbX)jD@P?slKPi$fkI@y$fx~ +)yZj#QNakP0>`%|>jN+F3kJ9{jOk&AfljQC!IC(#W-rH`(lNnGiz!}ElRE`}c?Ia>aq8oq_NJi}Gs;& +?o1keO=>76p0Ya!j=z^PRGCnzY<)=0Lr(catG3#XbTseHjUy0Jq#5mIg{m@C) +<6n*E*7^`l50Jq8=8AMeM0U%c4+7wj$K)ATKO6m6)ZvB5=U8kREV*O7JiYBD^=pZ{oznTlB4fhf&}i< +S9w4%e|_>r*?1%DLlj*03c=5Zb{ATx+Ei^pjb;tviUOEX#PYX!`N{saPB<+0Zq!)C0Z%W=%_B2T1@B> +XhVH->?9Lv&H@6!@=}W^Q(W00>&DeC0T4D60K8S_iaF7}akT>S9vI+u*eNhWezFNmvl3@jcS05fjKJ} +xqzgT3yTi`T*ja~>(E6Kn$_>&TQ2au%)(749FO20${wV@>6M(&!BZude%C`bJceiZ4wD;rIsMp>*Q~Y +eOp0$sRy6bdUr_CA-`lr-)+(J<$!qDY)?oEa588vwrvw*kL$rvYMzKd(0{*PO~8|6Mv{P8Y3B@BJt4&g@8;tzk@nh_4sA8b@U{y{JoCuquy-1e)+ntq}NHt?@CKrJ6cnnw +pmNDvnXHNtEE=+8SIyT+K(d_ynF~c?K`8E`-xrF_*Z&Xo8H&JM0ZUoA +oFj7U{wZ7Zmn5b4H*i%w_Y#Z$sop&KQt}6FbxDn2*?=`VVpgS3`A9TAw9ZM2q-rPBVI9|9E1b(&2v +3#l<#Me&6^h)Pun+%GY9;twteoJBU7^%T!c6};h?S>d>^5zMS&J +gF&bw^}~iG&RDX!x;&;kQzXA;>-*g14yg-CTH&d$TU$E(b?HhPuT}U-gn~M3r%pZ +!*b=rDb()o;EhmhqP$;XB2Nmfl)}zk_IwdJrr|!kBbT_*yOnN4W(>r5=+PIZ^bj?;i&{dPCr=0qNZpSJ7AoN%I +So@dc8s3S5!m)OIt-0hZT4|WI*^KVMQz6*_VD4z|MAy{vB)MhXJPEAj?>pl!95}n_{^p_LYB~_wmzd3`U*OiJ#~-rH2B`uaO?=+iY*->%=diB^R(u1YvUMWx&F*X?U9gNEw +`3fh`egTWvEm0l82jD(EpW;rja6tHsz}_dY1Ork%_QjHMY>1q&ye7$@jL^-Si~40~>>;C2v94?HMD_{ +#Uam%*)!Qw2gOrxKoxg3g<`&O{(Sz|Ee{;;XMX)&L=O-n#n7qwGB4cf1oKJ#cU~JgT4zY$}#UX)FHb? +%@g0eXWyKtWzY=;(2;6J>Ne@7ULz-y_5*zaXpqLghJl^PtIHL4#7sE4d^dT?=I-;yXz3RMrZdJ^f*~n +xZ&ylcR=l~7JxE{G%_Tkd2!8*ZPdem$evg>{R_G}QbUDw-ik}?t_I%wT#c`9(A~n(=`|ZZsv~t$D4(e +{tW*mjYJ@3(%yVWE1m+Uizi}u;=d-Iu>`8;sPS>Q%?O&W>?(k6N=v5b~@6aWAK2mnS!Lsa#@ygfw(007Pk001EX003}l +a4%nWWo~3|axY_OVRB?;bT4&uW;k$iZ(?O~E^v9RR$FiCMi74ISB#PuNQn!nPL)ejm4Hc5!A7>xQJyS +gk71SdF4|ourN6%83vdiXJ*TRl;+grr`R3vwmzU=sc(R`-4ooLQ+wpC9n!3Y3;gi_Q)+GdM1Xr;Y6A_ +1@Oc0ocO#aO{k1VNH5R=Vn?LsGl8Ag#Kd`B)fs6eJ*&Tvq?gGR^E2Fa9VxnOZ*m=u~`)kdoFg@|D;Rb +`JAMg|jDZcE0~RFNvUHd{)yHqah+pnrFFOB83rEf{bPUJI +pZtEGPnj(XuwFAZ_QeYx_)X6XG;~SZPBGvA%d2v`5<8ru$4K)kpP7W(-l26!ayXFpQR#vCKHx!3sWu< +DyL9wP-S}8!)Ip!Q`Dpso>8EpYUcTpvzWkB7NgJzk%moS)9XX0#)S~S76M~Q^ksJ+02%p<-0!F~S>VR +%@3Pg5U62aekty`kG&cpXL!!69X&P#Ww9dBRP-y~8l(cK=J^ew1ROkn-5iAjMjcLxi#6Yp|brQU|ivR +}BD|{Vz-oOc7A1IbOOemn^r+xKDYdN6?bzzZhB#d +P4oeBsSq-?jjJ#9fPvW}a*EzQrj~W|BIYpotjQRq3xZUQGgd0_*4wv<;#L73cZKN`a*Gypfwxgx +bMyzyU$tv%jyY!T?HLiwa%UJ7d7q$q-x1m1^XYR5|qSj_e$zj2}P9Qu^@#eR{}0_lV0Cme8#{dvC5;>r|64A*(qXDh +IQ#+8Vu=VeFG@I_P97+JKw=oJiCgEu~0=vT@d(}seJ9Y)4P!Eh0T!HZ|p%XIYLT6?_22c?H)KGJZs{kh +=m4a;kFcXv{BvoXKHuT7aX_^RIW<^jCAI>XU`*P{DYkN$nCxb}YJ8t>0V*Kz*@6aWAK2mnS!Ls +W-s{S~M +JhuegrrE5KoZi5m9)|=zS|S`;Y9yF!Z?s}W?u2eT5CSN6vQ;Pz~CP#wIFF&Q4@;9CCIcQbIrmR(HYe< +E}V-bg|^spMw&2q$|F}Zc!Jc4cm4Z*nhVXkl_>WppoNY-ulFUukY>bYEXCaCzeb08mQ<1QY-O00;m^MMG3@7g +zF&1ONcL3IG5l0001RX>c!Jc4cm4Z*nhVXkl_>WppoNY-ulJXkl_>Wprg@bS`jtjaE%>+c*%t>sJh16 +q0srq6yH803CL>`%$3V4Z7Jwkp>DaQ8p2Y6i6zr5#+z`3@OQSVh7d1mdN4b%$u1v1kF@D><9d_wt$BGAm(Hl09Hf~qoxUmRa6lZN&sap(lTypjG^1LZ}M}WKuiNSmitNt4&J +`5946jh?eOj}2#XzSuI5MZ14@(E#|Jo`qjOsj96 +&2?uZr39|U$T_l(rNp{9WqHiU7q>>F;HJ@i)8eFL(FU9iPe{QA$|Y}x{6dRCz{96Y6Gjkfn8Tvj&PiX +lKFY~MJHqi5kY8bGip4+umY+Rz`X1a(V-&A>2?L_EGa(T=%H(j~-lqfnLNbVLi-H}Pl`-yXnCsK5B}D +TBwS7t-+f6f;ai%UweIFHc}Ck3#+7X9PNI7T*SsMPtQj2T`EHvLmO`q4!!YRf4kdkblMuJnOT+P?(V{ +jIC`+qkRFPagWrwAlpbN_Q#f*2+I`nE~?{ZBJ2!44gEGPUZSiL&9)Pztfi<1;UD)}(O&E&OQ^Wy=o0S +kD4&FWbCKQN-GQ`JY8BQ!=9X9U?hHQ6dj2TNH}EGm_vskDftOT+)ila0`(>EF@-xZg=1j@*#r2OKdB^ +7+d^=qm(=oV6XI?R0RmJFT68n=TK3`p1(R6wI2l=tvVox3P44ZSO`-TX(7u4J2k7+3j=RBI81S^SSg= +OJ*OJ8w-@{vzGk|WnRlEh{mr=)@n5zd@)v|m*6~}M +$S4gSmg2B1P_``YUlkvJ4@5BGev}@GdSS?$OY@0E{!J5u1TzZWEnue$fQ +57R3}shnMka2`)2jO{@*dj?mi1Qr(X^NHvdzg>U%wE6&UCsD(AIPQE)hvReIaCINrgOnfjk~iMw3>;n +xXyIP>CR~6RH7|a`jw|OYaY-)E-8}=fT9NfPwOINV%7-KiV-5#Z;Nsa;qQ(Wx%N^+*GFcS#g;%XShqx +$6{fZ(Eta>R-qyGU=O9KQH0000807gYaQ~&?~00IC20000004M+e0B~t=FJE?LZe(wAFJow7a%5$6FK +uOXVPs)+VJ}}_X>MtBUtcb8c>@4YO9KQH0000807gYaR7|BhxWW=((2XAkzHcDccDzyL2ODoB#>NKY*s0V+ +Gt)3K8fmT;xHy$6gKfYIwlQ8ni06qgEfCKIhk +G={~JhfBRaMrLUu$@HGs&qGQq<8AR`s%B?Hl(m|R$&=7Dyj;@vqF +!`_8^&2WfW(k1B|FjOj3*^o>3&06MzJzgqUtoqHT2@aEC`*2NcwjV5JVEv`b}8f?w +}-)#3%{qBQu-;e*qy?Q6Oh#Cd$;XvX12uR%z<8s +6*yL4>c89Dy0P&zz@!LWI;2Lx&lTUHne$sl1jhh=Umxdb{9TM^C7!346&0d*kEZ0 +TreZDk7TVdO*+a-0z3)i^+iqKwKD#XXrU$k@$<>t#_<!~Fm0 +qB*7phwx0*kduyq1m1$MX6Dndig9{m{7Be*x^#5_x4R!*kD3M6LjQH-bJxez45d}Jp3UDm^ED3irm0` +G~MW=Zo<3%|Yx>s{$-!7O2dI5HjRKL44i77h`O(pIc$`3+AlRfh{+uT+*6q$y`;-8fdl!gIMl>V-Kqy ++8Fr9qY+0F70WX|5PKG?(zPKqSQ$=6^R=8CLgGFdxw$^j)kg;^EyCyWZ~yumHBZSYAcjB}tU(Lv1R6g +3ef&1tsc0qbwkBL_1jECR8PS7cZeu(-Dyq>ZvJ1alnvLUuKzu)kwn%K0i-nrYp4g +t&#rsQ+zdZFrtmNbIvT3mKvUG=4%t7SX-=fPvf)k;Eg-o!D?K*)89$d&Go~wcyRgN46&lh89Pinhksw +5$Sy4jeROd3Tt9+C%SP#BW{*Tw@#Q{cUUx=qtBe@%=X<0TO**j_WGN)TVrx +QEICOgq!MwQb}2Z<>}QSTemogdiMg+_-VwrpEOYvgMPVR2*UhaPGLGEGhQSNc>N$zRxS?+o6MQ$$lGWRO?I`<~`Huo;~KBwi64zek}T8>*;=wj!RDR2hQWg_FnC=1;QaNfbpsy9Ay{^zuT(x+*lR4ul4Jg={d|sA^+lEdvtA^I +$uC0E1p7aMY_I>w-0IU9={wOV(v;(7Iw>wT7)JYucKzu36Wu8`e$hmNjeLw(eNxth?4d>%R5CdT2edo +?6eW=hll*K+fTfbJk1imG#`e1#uK3SiwFV?S_W0}FsQ092%M&?B3WM()sk{QjM +$(+rMWzJ>J|Laqz8XAjSUZ8`K&cU0$WNyH_<}&9a^i}Z3F?jK3U}DY-cq-q+O5V6DHTh!6g}NSpJ!%2 +npMp6Xa_iRl#Mq(`qX3&+1Yl)&J+dAHz=Ff85?vHqmbM7C%E&sEIStqXWckFEC#Ohn5-k1XasX6iX}wlyiGYKFUCf9bNkAs_bB?$Gz~grV2lQ_W=Z#6T-9ln0_8V(r559V-&wOri@wR9{ +ymwz@LpTcu+s9pTnp0X*_0(;0a^WxMkeM)5ddr-T1up_`Ec-i)Z@;{0weOtiXCGU>hrNvWEr=_k+Y?a +W+sK=1U2lT3AiBQ2w +SpoG>q$m(45YRddpuGN;WM^O||xykXunZ<({^9r*9AdC$CWJ}@7ekIZ3n)I4RLHqV;pOg~P?OZDch`7 +s#N`(|?*SRRBSzVy(1VWoAU?u!jR?1xMLzM`CHJpWmQ?K-@S2(7DNE5&Ag6m_Rq{krIZh>p}EQ9-d +G*o2Y)+6hx@WKhFYbGx#acosjx&+u#f0bJTR9>k~c7@ok>z8u>Uo~>P!=)RQa>{Ud;Gb<~#_z{9jU5c +*`HOx9MjeS$8v9$pcGPlY$_?y40n3gcJBg`1L!e!%gD9jv&Tb~(LDy;f-i;^#5yvPduq7+|x(XP^RY} +vYP`_5gh-xeo#=YcMKxex~h5&<(I^pS +6GLWRJD-LeTMu2Gy{3xm*rc9?TRXMeX5s^BqVqx)`j~)l8NqM%j^GvX`L~FZ{gec0e%Pu{5gJs)A%EP +Y+S_0@DLusqhQF-;q!P3&*0O`$x-klspf=^T&LxSg;_0PJEy28W!q2R%h_4ToeOsyA2m +T?hM__CRw)CdXih2E7*3p=Sk@uKB64%Ee`gS=#V;0=sQLwH7ohS{v&+5b5^a~JryZo|o3q12-<8$qvb +SGVdW1S^9F6I@(?NWusme$Kn0W+|K8aM-65rnK*I#we_szDO3ga-vjDNuiBjMHGo%B)L2LGApu?fR +sCh0b67`JoC^Z@e-d+vYy-jxMX8q%J9r^eO!+wK@8WfeNo=yf&WLo@p5yw*WZ6TAYJCE0R)WunwH;g* +jH~^9Ed@A&`CG`-0gAzc~9dKo%5X-tLcjz5t1RCBlvs5O#6LPW?6@?D4nX>F;*yAKUgACrdC34l;_c! +2-f2x_k6HfUqY=diD3b{wXOK!zGyc2bmYbI`qL_H3`7-3RK$I7>X~l+~jHtYRi&7HeehX{68u_ahIHg +0~Q7>RvB=-P#bX4nzTmk>VQ*reZXl~g}_-?jlg;9;c`k(G80aDK<2WgWhQBXKxT@T2xO*RMFQ7cWdb) +dqsuHi`3P@+<+nOuo2qy%VmP-0Y}pBcw(M%I4ya|j#&gqN6uaXoJGAf+O1tR2nN_$SB&|>RS$hBrS#Z +9~&JI>&g`lRqU||d}Ok;pT1aAz2Z9cviPf+VT-Fe{Pp~FVn_!wkr75)DR_5X#8!x#d)d_u&psb!u~)c +%2^#s|aKn(QC1`*kRi2w`WBF@#_DF9H%tQF~M*BQKzo+5&|EssD~NVGs}D_k8ki>{9#$ExXy}TJD#mfBRmwkUra8NLzG&AEg(t$c4z~u^G{jtQA7H15dZVvr+%N& +hd@E+exLk(+SdU5q;2|fFNv$Nca?3iA<*QJd@aYUOboru;3j0BmD^ukRvRwY+Xf5B{Rc)BQPF||S)WC +Wr4reI(X~enu)h+`ausl`F*m$w4n|svjS2<1OGHNB_>FPdsiSnNDDerWjuMaQY5g;;q{NquOHM7Nze>tKD5adG>$rGU==JitRPsphaJj{XKqf=>wK +KHB>$fXofoik&3zqleE3mX*SlQpUj8*-m7WEe*VHMMXq$oXj9D{#R#Pmy?q9B2uv5JaH0`Q^0pERs4+ +Sf1>RqYc!5H{6wlnzBTq%ZV_#kXt +#-WhiG?+c8_THiS~eK4~h1OXpf2ZglJER_KaxHiS~kMb3}Vdv{yuXO|&;edrP!;M0-!P4@A?5mL}S-B +z=se2T6K}q>q#I36efZ(!(S@LeiroeTt+{lk^#qK18m6? +Nzzj!Jx$UxOX|uCQ#S8Y^qrL7C-&fg_dzd6sZy`!ibt^_kg-vG8Jo&o2kKT!I}gzTrtspw%A2mO$c8u +7o(%h260dT@_<>#DdNZNFEVyF)jymI;ii$t=4IHI;84k2o;`n4dVi&pI*ww1fIer;mp`Q6h=K*}J>(F +7E<>8r{9rPCP&K>MPw^y9j#UX`4$ZK`P)fRLayU$lC8&l&l_9}4cLR{>ZsU|nllke1n+tD69J}e5%#> +Ob8_@q@HX6amW(d#=HZ?`{9<7>ws$nB^IITn5!V3A%Bb~vY&3umf%Hr87TK4?&KK;Wos{Yoe<9z}voz +awGG!aYj+iwjPC1k>3kJ+_bKcs9zTrXN=SXn!mtDMENukT*38U9I#396rg_ceZrxVb*O}y{38frcG-b +!c13thht>ix^4Pl?T>yTLF2{3M?e4(68eYANhl6Mof=EfFS+z5(9);B9aZL{s# +Jmnl4*%Z2|&)axrM2zZ={3Y;S7_|L~1pEx=5H02`(?{Z0^o4{`PvaQbNB4sg}j&&3rV-omCO#}X)sm; +~r9j$%ChE)Ely*dzq{F_yRYCV5`$U+P0FZsrif#>JHVZ2@4eFr|v0ZaOGRJcVD}uka3{s6VUVa%CFCHrMyhf#4fqTj)~a))rdwg-=6v=s2NEzujuzN9%chd(rj% +q2+9MwIu%i@kL~x`tOh9v53$EKNk3+U+Vr3P)h>@6aWAK2mnS!LsW){Yt^#=008d*001BW003}la4%n +WWo~3|axY_VY;SU5ZDB88UukY>bYEXCaCuFQv1-FW5JY=@#X<@-@?lGEUBrq_5<(goQXY%4wwIi4#oj +83{@yZ?Ak{FBdCUXU(vQlQtHG;8v@1qkHtANJFFqL}HB>Hb_^24zz7v*t6C;7OeE +c5=GG_geQVF&rzZQVA{Zcs}D1QY-O00;m^MMG3l*{z0(0{{Tp2><{b0001RX>c!Jc4cm4Z*nhVZ)|UJ +VQpbAVQzD2E^v9ZR>6|mI1s)2D^xWHLoLhL;3SnvaRB4YkT8$}rY5QEmP=zdSQ{gIC9#CR-ZbEmBNAa9Jk*kqve?N|MXM3lR#1y0hiDr5`au6elS}GWX) +3OTDEOltAt6i&Ej1OWCI)oRUpZ5ww#bCp@K#V1c|a3gDNArU|cc2!AP136GD8;I89~OS_0gVM5+Ad`W +kq5&%Uu7Vn(}}*j($?wbl(mMl^>|i<%NFACnD;{g>14f3>ao(tlq4ZCj&YYE~5YSuw0lEuqRnU7c*{R +r|&wcnMHD!HE|8gGeO`41e2OyP!%?p<>vmmiesnbXwfoduQX9!SNfjmswMwB9xH;;4N$y40=szx6f%m +*r(i-arjl{M}4zVN+q5Im(17gZ)H#aK%`2p)(u0(nF_;}gmhiT^>sy50z~efi~=594ERd`DHN$vf<5i +@G4B%=B}7Afw|xSEXIP0msbaX=gHDV$QpO`VQR|$@nF8n*PUNUG(Tf`Jlk5e}(J5rlRAP +1+{}n#LQ~P%ZnChst&II8ojzy4|iSygn7h4maDYL7Kg$gCLbjuFyvyJ-tkET07lWjohx{O}OaN8Gq<; +9-PnInx_yInuPosgNhJi&)g&q4$Dq_7KPaN~-heI$dxoobnb(##}I!%snohD1TPTdnrbx42kfLLf^sbwPL$^Egh#XZdCi~HfUjP$BA2!~Vscf_$Q{ +p>OD@j=wKveNYC=mqXk7A5cpJ1QY-O00;m^MMG4}#1YeR3jhEWDF6T?0001R +X>c!Jc4cm4Z*nhVZ)|UJVQpbAVQzD2bZ>WQZZk42aCxm-ZFAeW5&rI9fu28zN+tQN(`lV*Qd!o;P8{d +PcE(L@mjhFf#4|@F71F2L-PDNi;<{Wgqm;C6r)Qy%eDT`8?X;potc!_7R32KY;p(3eceot+(vI +VP7p2GbWtj)a25T&kzXI|Tj;Ni(q52mK(TLV&3$qwCw0CJ9SD{`fNsWM8ZGdOh`vF9o4QC{f~xELagL +;C{|C*&h%Z$S_{wBT8fnaY|^)Vo8#ezih~Yr-Vk4f}&EU;bSHl=mZRgrywec@_EhViqA>!ISnQA`aSS +>6~aj1&YVSTNhO;T$qCO=g*D~zHHU_Y$7RM6Q?}*oIJtd6cW5btB)mQe!J$6) +C+IWX2@Pb=>W@BCe+kR_9CP3k*w)542;Q;iZI`}ZZK;@n1yd4b?vSOu^hZn5v*#MN&$Uwvavm +$twU(__7U{j(eUV{gIP_Xk(O0b1wbgk+l@kSb#>Z~D;DMNfqQyCeVv|7u0Hu^pRaFbr#)Ddz?~x&e+y +F{7f?prAUael@Y0A?wkQwbq8i`^!1~-jjrC~i2`@cih0RfwFaVCO@3pW3~Gf{K0H0Vf!eur-=lD1}GrMuy`SfZLM# +`!vl*cuiDR)n0;EjcJ!A0RaX#GF41tZY!Xz{W5klgsOK60B$nRfTD$7YtTD@Vn530tpq- +$)q$a4K+w^45Z0+RDr~aCAakuit8ea17s5tKy?!3+JQ#+Q}}l^gIK2w=_i3+!Ry`c?;pIo-#l36Ls8KTI5xF)VkaN7BXMyodjq~|>+BwdHclWP*`T%3xQwP +2H+a;eNcc==$^+rhWb;{Rkh>puWot1EmOK_m4z+BS|Sb_;A$11T)bbnK?X3BYpbMKGasuc9o$FhY}I( +#rT(M$VUExqZr`s#a|=5|907o$8 +V8tp{kpl$p)^r0ZBonGLBiR2z_ZR^%l|)s{9=Mhzs=+Kqb3i;cT8_wcvjo%0jnVIqAca95NI0NiO(=V +UK&6L?(aTbcxmA~!hSAHL&zUINADx2&)}n7jRa!Vv!-ej2zh1vNR~!bZa7Hno@7$`T6~LLIS0KEVBcPsJNXt;BJZ4lHlFSU~kvy*s3& +dgG)6N`yjWijjDZ<3<5V+B9LgMJeQ0n4(QLXtF|GvKT51zI`lO990*PfnpvH4GWPZq7t@zYoM$wj&P6 +16P!@s9y_-*3ZdbO!lweNpz0MxyCDK-2CQ|6za}x=>|&;1C36za4Yu1k+Z@CqR4g}pS1AZMq168?b`6NOZWZNY!XO`_tt8?DA&P4qybjFs5H89U;KCUD~&2=QkY=Km@;bPaZ6QntGSU1tzsh3V-&GSJGynSoc*l +NRm!0c)ul*N|;V8C9x%%&Yn&6f{wqTS9-O1H{Q740r=Qu;M+ssMCylkvX9O*Q9Rxk+i)xv2us%}olU!c7%`4sKG~Rc@+Bu#K +C{9!?SBR4fC-ZELyxHBD?~&#QMm0Odn-YtM?!8L<_rA8fjtrP8r-tI#6K#L8*mt&Mq8-Y`Jk9 +;>fc*74$LcemaEh)urk_r2b_Hz3~rpzpc~2<{#jg4ez+el;MKw%>K39`MF_bhkOTsG|0W%Mj0lP}F=I +tDMW3Gd;E6qwz+aAUNCJj)PUZZG%0Zu}dAW+LKhh(JanzibK?@u|bv!^~q|#IHpE>$E6AKxdGj_BDhc(x3L~abv?DOHhxKn@yZKRh{atRGx%eaT4hCHm-|WmQW>=godtu)h +7sep)`+TUx|HH?1uP#)w9SOcBp?KZ}nw(5eUq!-bRco?->n?{P_Zl;*IhpXgK-Co$Xw)f!-58Kurg}= ++><=Eu`RY_{T+_HySP!jwppvWK?KjIA=tAz`xLMGg?TvL`lOM#6%jdH7$+O1PKZ)D7wdws(39W6#SV{ +%+MUb*QE5R-NO!=BIwIM!s4iSYh`yU5Du2FAxZFNbw2-U~TA)$|gN10@eCSbFqReY;rZ22xj^jc{#Bx +Mnm(4LeGiF4AaCe1FHfKrwW$O-(;`ExuVQ@DcMhdG5sa|$=uFqgDm1_Zy||Js{?9k9U3FzydX@5J1xn +;N7b +n7v$}b8y?yRGHi1s*~A8I~AFd5bz8N#t(0QP&|L|3c1#c32HX#>_Q10;{O(im(aR~GSdHzB!nq|O%~J +NE_jSBtRvHgbx>gC2y@5}Y-w|4E^v8`R85c5Fc +7`xSB%udrmGOa773|RB%lH8Z~#=f&7?Irb~Sb=`S;k)my_+%ja1d18IRwadE*(Z)UhVMKN$F|B +r^vl;S(bxu!ftLuNEo1zyAP>7c0RkjUf0ArN#s_B7C`Bt?%yFP;h~1#LJ^11I*xGZo1u0NxL_KZ##>w +brcn(N=TX1+^7?miyLUY@2u%TeRHNLij)Pm(I!`wfeh}H#NLENohdpIJ03BgL*EB{d=LdOu)E735;74Mg|2*An0|IZmb8Zq_o+LoK3S^X +MfaIVu*LG^lj|vo|lmGpd~!S1v#?Ehko>NT~6yGWMw?!HLiLBK||b``2?^d^gqCXx}OBx#5_858L*9e +2H>!T!GMJt49o+%#%Ptl=h`5}{Rqq_A>F(>akaydqaTl9Rzr1!vwFUHLG(01Tkt0nG_@P4GkQC`bZNU +RnPht;4|b=7B381EbHvwnPILm-*S}A0)lqPCrY`R>R1Y9(jw1KFf=gSfz}1zcf6yisnh5rCk;Vtkq#qJL0J0|XQR000O8MnywZ2pbF$Pz3-092Ecn9RL6TaA|NaUv_0~WN&gWV{dG4a$#*@FL!BfGcqo4d +CgZ_Z=*&Oe)q2!CE6Oc1m*G;H4lm7bX|Gv$as~ksujX;2(*~7W`;Q4U*9tfhQVC2Nn2@AWQ8;5_8rb` +j>(8_b}W911o?xeo`}4ZeDat`U`NhR&n|3o}cRDZ|7f@-J_eg`DDm7}1o|1eWk3N)5=8c< +WW*k&o_W#f|dbCUymI(ZT@eb4WfAqb4gKsnS+qv%gxk*T)8Pd0r2rCU|hrsX_~I7t21b_L6 +Q6NmB^LA?=0=LDz@Wg={k2KpNjd!_qvf!!cEsyT5~QMDWSOS_M@KShV)vz*0yq&Taj;DPVi-Nfn-+&1 +E9p%9K-S@vTLeVPzwqUVxvjXSdUFqpBC`DyX7JF4$fXRZ$w?|A~k$n`hOH$z36(;)mi%$y%AsD!a8srDDDS#7bi&}H_yZ-6C<2Eo-cr1 +w_xkxepTHY5f&4$w@MEpp{IMDy`JKIPQEc(eQDm!{F<_VpX~p4#NJ*v%NQ5VhyHGmv$PAo5|Zit=)qY +oItpEB==C(8{Mrg-&MSXQ^G#kjBhPU$JFtWCiFDIX#g# +Sd7Is!mBO0o;ec<;7pP2y41N%;AI28kdnrWwKHpScx&dw*jX=TC8q)lf!m0s2LFVdSvq!nH}yy7DGC4^5vQ7@2(`u%BA<(Nv-N+M2pG1WB7U41RzCMO}kWVc*hWxPsZ{7hITEkIh^jVdUWkb;`zB +F6ATNVoeX_NU>FV`8xEk#70z#q(X{6ovZi8LJK$&}}^@yt<604DZ9oECOlNA204+FNQ%}^{-l=oCTq?84!rY!P{FN47!iceyqjd!GoS6?fu?aq)V +KXI1q%dsb{tr=1R{-HE!o4|6%GlcwYu0V}luwWeg15ir?1QY-O00;m^MMG4gDAwlg1pojh82|tu0001 +RX>c!Jc4cm4Z*nhVZ)|UJVQpbAcWG{PWpZsUaCz+*+in_1^qsFb5>gBa-h!Q`Q6(bTm^e-ysK8O;C$y +KrY_iOt+1X$!tKZ%;mtAI-1w#^7eJC&9Gjs0uaUFVWvEuRFOu&0aeKGSXyz{w8$O=x{ol_6a#}{yV+) +Ml{C6L4+p($xWN(fwE_4dk6l;-@KmifNA}j5k>Dg +@mH{dkye+etp*a1OIlRZQzf6P;f`Vm!p1vpx_e)_ioPy`u) +t}LeI15l<+G$WetrmzPT8FylHyNGa+~!WP+qF%an+Tk9TRqkP2f={Mv&0uN)ureApCP8w2@zYSEm#r=80TyWVn*`NDsG;|Zp`r77i$)w%={F58aXr&F +`!I9n6Mx~>BJ9bz>qU;j;L=RIn4Xkg1s1%chTIA536H_aRI1w4AR`lS76(V>JomY6$uz~>(wwUHxhMPAn_~s`W*~nLuF6t7VVR5_ +HCQBOn{>>YB*{s0Ib0p`|$XkJD{Ph5(6RR*Sl{ryLCy7y+QDlwT#k&JWH+0{xFeFx}E3l!kyF1IMB3R +NzMj`pBbZLP??7sCA+2PlUssl^YSkudlk#y?|`EzR3F5v1QIX89am+NgAi&>tbW2aD23#G3s-nRImTM +kiyO3-Ob(2MD +rgf5^=)FY)BU;&RQlf?BF<>p(n>1s4p861)JEva-@^!nSZ##9GDfUB__~AOJ{T$G?a6L4FC@E+H|hGL +QGsC&i#_577nfpJXlPnvVAGv23zo(rX4LpVqgv+X_xmg>hS-aiy^N=f|7mEgGC3!q+Iv6gnUBK|SA!V +$WP$@68(8}|@KX}m6IzbcvVAUpAomMgz*6XFYHve(?=!r}w_fM`);%|)HNP%pixOJ)SPt%!IE6DSa|b +u2qq$yLGR_GV$x81gF}+h8QBIEaCU+pBM+RkJip49jvtn1|W1)T1LDq)<%USA1u}ITgMJrQ{>;33UmI +~we`xdNr`TJ>X*y&SK00pwvmqZhbs$u7zw7||$xNjcntqmFZk#We{iG*WuOj1>~#)osQkm>q8J)O{v|thQ9Ji&q#T@r;i+7{b>O6G= +4$~k$pha3HVFD>TXf~Ix6f`}Y;Tt3r2!td_Qu#zO&XP?50>y1DS>oVx(*zckkh)+G9>;$X%&F%Nd|Q& +dU1~toMwv@B?p%~xx)!gIO^4jBf}6ss0IF|3+X0bD3SC^cON%jP(L~LUwZJWNXRWAU6IBM1q~y5cDqE +}#%hIH?Lld0>z2R_l(ZI@TH}}zE51A)FTV`STjxDl|$%hZNI8titnizHYU#n!ZBJ~~|BtHF`mRj3eBr +tU{%)}xSy*ver=5_=}t&;vN%XGVrC|k-YtviV-k)u>?Jo^77;D@1FHSUttV|r|EPUUrOKc%)u4`*{G> +=w9G)0`3#k;uW^a|&ROgHCg!*(Wh2Puc1v|DVw4%WSr{c^C7))yto-RXOeS_|c~Mz0GP%n|`dF9HPwu +ZS04%(Z2e>wf*GQ<~)c*EQ-go`nH@6aWAK2mnS!LsZ5|Iq+Qp002b-0018V003} +la4%nWWo~3|axY|Qb98KJVlQ7`X>MtBUtcb8d4*BIPQx$^z2_?|^+1bQH3kQ$vb-N+%aU!I?z6Awn$BgkBCY#G6xi_t@eC{KAXbIp-VxnuBW0ZhiXlaXwX@L{YzLZUxS6A +CRh8QKeyrZ9!8ad;QrUn!MUx^3avv|O3({E%VO+3^3OAW|T!5tdR+ +$5UF6tIyIfbXxAK>Q&rSNDBLMSoAk@B1aK;(2y=`9f5T+p1A3yP6jTD{XsVz^1(s3ax7riqkfB3aRY> +zqdbUC{w`@)8~&G+5o*TRWnVp2DBTfO0>~RJokgWOH}WIX^SEJ&9QT-?rdHROroli8b)KJxxEv@5)Gt +s=0|XQR000O8MnywZp(e#RMk@dSE1>`Y9RL6TaA|NaUv_0~WN&gWWNCABY-wUIV{dJ6VRSBVdF_4cdK +)*A=zl#0mKrac4%N2onOwBP>^QPK(T-zzEjh`qqG4L>rr1%lo9T;WjyK=8ud%Opp5)X8Km%wrNjsbG? +3{1)!zS54p-@$*8w%)saq#d!%!)Y8Z;nJ$&ksJwU-tI*_Qi3rT9@g~q87pNNIZFb`1An&`AmG9=FwW5 +M?a;j5SqPAXGvZqv8W4CFB0*3T`!7UoEP)@J}MLOqG<9ss#Ew4J|v}xV7$C8)9a=#;M+}^B+DeP5!QK +!SB{aXTima)VDSzMFlfM +_0`cx+BQ?;)4_Udwdv?t(C{a9st$-7yys>Lb&a#EH>c_hTXSe4PuGCC4@0qEZ)C3S=LVj^A@c>-h25o +QRFDwyju&F97C<16t;@wC4`&Ep(sk>8x2DJ0Z)9)Z40>-8$BV5sY;O8BQSJ+6~?H9dr9O`ZZHlNK;{l +2BiyS#p65qe{%-Gxaj(KAm1SX;!B>&=cCoFO}KkxX9<}&FiSFkc}1c5x%eJdpm4XX7rQlrM{2xQt6-Yyr#CYXvHRuVn)BPwoK3&rMO&e5UjX0OaaJnLSxW^&*d!2@}fqr&>IL=3|^(4Ptm +v6z2=Y`LQ5$kW`~Rf)gim9yh2)M;bElKCOUQb(GKG$yo8iXhO^cE>&TYhMbRAnvkd^5%|&Lwb@Qj59IjGpYxF3r&7qbW#Wi9d~i7ODdswt5{*aeYL&o>TU@&N(4)Nd1qZP_eeDx=64BucfSHqDwIQUZ74TfVeG~0v#%m96p71vSL;$=JnacR+oxg) +;z%G(#M0kD5J=UFDU&m6Es9-OKGH9 +bLF$du7(dmokJTGQIEoR(1J#${j{ut0my469P5BupM`e^^AM7KNMRKcnj7uKHd|rpduqj|W1=jF;mi^ +MbWLSfQan@CDkQSv7(jzLnMHNNwDq~XJ$h%BfgE-q1m8wk!ygTEfO>teb(^MfULgWg)|YY4nvQW=M(? +KgAab*)jH}6^0R^nUH`oEqR5Y8x5+EB_h&L~e#ixf){s3zmtr)}?pN78=pSHRh1>@+^BO+s%CiOfl%9 +}^XhezdnhF$k%&japh3~5ZFMkRWAWjcF#QHwaYO^j6GFItPt-An2p=OJmJU>F)MUzW`4Wr0eiOqNkf; +n9TqKq;%{ +6G3r8o?Y))x@DOHFwG_1W8(&&8{=3lY`Oa7Bb>wm&WO<#$F+jj6fCK;opB+e^y0G4=2Xkze!oX!t%Q?!@zX6E2K=nt9sh`~7o+s +5TS|x!Z@yH~7)$#eyP_*t-^d(U&H0yKCa_K9NMH1eG;{N{r;fIV44#p~rAmT5FKRm?n1?2&hu(b}OI3 +^;phDY701gippyvae43QNnh9#+BX6PK5^4@Wy7h@DI%pp_ln0KU(LsIrDXgu@V>>;NH+_@{p#qCE;v| +NQFg&B^hz^OH`F0va1p4{~i}7<${^2vB3Trrx&f-zH@`U*qbp#Y1fPPy{gBIKdPNMXvx1y(bW0F}iVgx(DRt3VtO;dztOT6bt(;i%{Yg(m%6;{ +>;);|jdtn(-@U|O@W!#9~Gh{V8x*ZCWujjo6f2o%3zeis5sQVb$VNx^S}a(wdUVtV%a;`Hp*vzG{net +2{8uWwJ^oID@2A}GB`$0@5otxRY-C=9_6G~`d9GoNMkD`*S?9T>U-S$3PO$KnpjLdlQF@#cV@(1HvNS +b4|P$Oeu>OTfH>Zt;V-*?FX9r4};*8@cRNtz1QiYG2M6rL4%aHR$RDcoL%;C(8ulZG?TbHXAiBLYd>lB#rNNT-}Uiv!Sd1|+YcVq3`G{gMDnOQShnDn4YUUjv4J% +gdfOOmW(SR=#gCqB|5035e?8n+f7_)1LdZb18i8Mb=v(a_=XRhM^#k8Z9K=OZICoB&doUmK-jlhfwO_u5Hlp;4kZ52eM{`F`UVBzWgBGu`I)%E+z+g?nd(4mnbgU$$ +?6o4;zeDNsgTi_GSpt6lm?iB7gSHD0lVZ6AKuz9Ep4g +VfL|^5o0n`xsmx)CI%390v*hj;212yL75a)_+onY7x5ngK79|L#+2`yU>?_|>z~s*pj$-J0?r5bACn& +viPz6AzSf?obg@w1AuK1b!Za&5MU~oZy&<>=44n$ve+6J;6h%Y=Rfehi!P97AVQ$y(SAIk&KjJ(iU@w +i(nO`V=M5OFi?A=!IRl@?^QQ%J3U0N17*@*$-H5d_QGceX5DoFn_g%BcVPXVX{3LE*EM5Tczj%eU%Zw +nlwnPUeslGMO?sWBq*tYnZvn1Xe|OeoRJjDVlTamo>iGM)_eM+EmH(+|hsL~2ojNsG|bitoTLFYYS?l +xl*RKTLwrxIhm^hJlCnqTokUdKAoamXDD)1rPuvB1!Ttt?CL|k4TR60BwJ-p~1E|6$K`(0AGY+g)OHb +?a8oI5*A5eWIkycP=;zOvZA=f;JR7KM?k_dLcy~#0ujbBb7VSOcanR9SRptvDP~z_SraFcP}sIiGFX^ +*iIg@2=nVI;Alfy!LZMvvsG61Os+Guet|ts_IWSqqqmI{Sb3!k5k6oASfF?dJaZ!K)nCR!-oT4Wa|AH +Cg&mbY#rsEFck6sbc8+HbGnmXqoB_XP0HL_5|`UMDRYt%4ko(K17{`ASf=WTZAF6!tO#T~vTu%c&)u{ +1)L$Wr_O2=qsvusaild6?!EhINm}Z4U!$#t2Du^8E!Z(gfKTAwq>*#(jt&cnnkgqz8CF{lQ@5A(}lpR +;{p}H5HJVZ7BF@@(z4gj2Vd~Fm#e*tw`0);=n}i(<~Da#-ZT9;$*4??X#ujtVwIO!#vzzMV1QmK{9Yb +!7_%%=piveV-5~#+!i7AMmvs$N|eBw7mG+Pv`%zD&AQx#8R9}wNk|}N%xNu{q55$|&I3|gavMJSqJ=c +$$PVCLSx>wEncH4`Lh!rew1B)xqFkmRmE>1qT{J*4bSaq@7>1%TXK*(q_v6BhPp|Dv2F!|YKOGFYbl3W;lqhmf%priq61n@4nJ{qsx +BC>!FXND9$AN6wwKa$m5SB=h@}j8x(GmIfEpil30LZcG?zdwdWi5A-{MuUmNe!8sQKO}@_x8oVr +>hr)btQ|{P@ceTi*7jA{UrR1Gebxz`u^!2*QEU|UGaR`6;*)1QTPg|Ex%H&*dnT;x-J9bcZj8?Q%uU1 +)9G;3@2)DS6AS1L^#Wb&PTtiHg7TL=BVuTO4eUk+nLVC8)~fB|)nhyTqoLXvq@)MI^!r2jq|@u28Dc; +zK=pV&Y-U*j%fMCXRy_tRSJHBVV+srqiWwQen6?y1Q)56F-N1Yt%9&*I((Lbaf(jKZ5m0Dgbk-ZuA)9 +TH4L9`l(ZP^Ik}Wq3)UJz^Z#Iild;jo5HoI|tULb)T+`VD^A{oP}EtNGFW9gDu8%F4)Z-=kfuh&CTxN +RA!S01>f?F|aUCbyE%i-4;{6Nth`*`X +Jgd3(IoY0+;BEOYzBocBf$H;sa&-b8N_iVEafvKj3m_)D`&#%Ubfz0K2iIKpmu7JQ1;|dASN)xvk2z0gcY??*+4JyRo`0V+~`N_q|&4@@SzNWM_lf)sf&Z%TAjx^awTNpsr^zO;UW% +Y%nxxAiL#?r*cCYVK;gsdh8a$^~j+-s&5+GOa`~K;)cMv|XR98i0vjLm=Q^->Q+F!SzDXb +%mQDslsQ2D&ux?+cU9Py{@*fD3D_Gk?vUHNY2=UY9Jo;`hNI_c(x=0zk_o5(~(I?Ua%iR$Q?$p04#}(*jS@WLhT9Cis9 +cxICI%{ZKs&E)RaV53fEM4GdYB!eXCdgcD^nzo0178^qmq08W=F7Xj3E#mq&+Bu5{3?N)ZNA%vu}_tYi^&oQMIbrvWk=elhJmKY?Ce!IS-5h% +mWeKnnlh5C=`G;^6bo|L{foO+6&#_=5@B8DGOWumK%7kO0FT6pg`Md#(u9vel8n08C$;rEbn%f5wED+ +hwFT>d{y=@&FXK;$)A~{FG*?7Dbb_i9)$4$z8}-h?JLD6-_xyI5{uGDT?vWOGV_S-=j~YfdV?q=v}&OmXy1?PiN9yFm@;O1aT%BTo6^-5gy6 +?jV!HdF8x^xgbw}-*3i%~BT{!5WGtx4BZ^@fHg-(Y${usBd=M^V!gM3RmnYb+;Taw+%XNDVk97f#Ecc +PI0xB1)WOeZP$)`_|;&bRvS#AWw6HvWMHD29P9rFNjTG2T+ppiIVgH!g7D?W&@xG6?u9}L`@h6Id>hT +PyII6)~_TU80Nn$)%h8eqM`(@!K^sXcXoMjMMQj_j8lROt;B$EiI!lg^m-Y4J)8`cN8%SuS^dkk-=GX +{V@R`c{xO3F=Q74pPZ1b6`R+7MxB)+f;hp=00Fn<{OAHB}%}97rJtqfVM83)k95iV!3ki31K=d%4t;> +tH9Aiof+bvTrFybP82R@b`H=^Yh0I|fX{$&JsjGB_dLzxDa%jb=&oLT_Qi9lZ7Km)6P@{!RMuZ6v@}^ +1Tl#=@$|6RsduU)^7k=uqMXcvgAXW{mmS^Y3r>Eq5W9g+V$Doltz_46cF+d^EE!#jWr!vr<&^P4|bxz +b7M1IQ$@_70l5yHP^g%Ag7`2o_)w4!QfA33@^{pq}wM7dqq-R!Xk8@~UA@}%$oq5NeSa=BXokH#8OH} +}cfz|aNQ!Pyc~n-7!L`3X^AK*t9L0lleT*|%2`tp!6QZWmL>Uy{JE)?&MOl52-dC08y`aJ>wDNo{&KD +YsCrlSOowf;|OBF4I|MC1Wt{2Fkp4>Ru%wOh#^F;-JZI^Wwf;HCzwgu|0YQ-mQ!c@U(~=iTA$@l$hw4 +VWXSwCnEmsB1h@GRifS+IAR$mpZ-BB&A#%kU&RzT;BJg*i8<6nT$ROjmMrBl_o266KWjEXG}yzST@Ly +8FM8V9L$h8fNsOY@C`vISl=O`Si%%wR7#MjlWbl)YX +65fxC~f($iWJl$#$^U&GHZYkcW9hfbl7%k|HQe# +9umvd<@Q0HlTi+JG7Q7eP2LZOw)Q}Ohyp@B8*-aa9vHCE!EKv+Vz8v_q851z9LA8H@mz&K5pPL(;;9- +Yz(lY9<}J2amD94xbD4*w&F@Yts?p=a%f9_I^+zSYB8|Dtn6fssXA|`9G-DS!hS8$2b&pxo%&-0pP_& +T_L->dH`bsUBiWRIyL7thn6Q~_5aoYsZKnx;VJe1OpoDOlQ{?Fry9Yq%%u|TXqnfi&;5DwA>nxp +7W@lz(U38@=V9Nu?g3r3rF(MeEdWa|KI152Q+qznwUWG|u151ukDp}7;aC}J1<3FHGvo$opQs#&ij!f +jVLGWqLmnTJN$?wawPAWyFiW78kk|k`LsL-oeVPZiS2a^w=p-Bu3jE8QP!L8OtGIVXqDYQxHC?8<1rQ +v#wdYW7dNj|%1S4R$0x8?GeWX&!<=}`v=tOPvGxd8~;TuBnH$dc3OD)C-hp)VmJ +D3>tCmGyid7lTyPLuu_~;~|&*N>37r-VIXNOHtGGqd@locyN+cK`kwj05)z_v*OBu=9*L!9qx-TH$2C +rmC@NIE>?4DqK?%R-1>Y67bZ??^zk=}3{`)Zfe__wEa1tg%%vtD7LD^m&A`z}POwZGoRrjEi>O+tvlU +o6T)^aX0Yf`(x~*~u8}yFsLX*`5)h1zp*5G +|6K=~Nr)UxN3Czl?O8-jPPHH6|_+4!35-YVD)v@Kti(BE|;+*-MZ}=I|UlqaTL^!prY?$7o)0bg`nV +EWBt+6(IT4$^rlh2_x{*TiHc02HGgPt2KE{_`#kJpf#N>(o8!0M=qx5$=9u>(eBzuI<;zmT>r&SA$WHbnst$#KAv +hcFDtwbHi@U_!ij7FkFF_2_(%=;=9P!3N4t*rGFzNaRaG@M_Zra4M)}%two0{L9TCWOZRkeXy;jl{_Q +*6A7R1)bSw0LNd#H3pakqHS?mrirpRhDuacXF90HD}Rmkxa3{R8~FUSsvaB_;MnihQI%yW1L*s>43zGEf(ncT{kyVdEzi}9YFL +bOFmE4o?aP-tF?Whk`2Va1L3rpkaohKru~o{tw+a3Fl9b#3Ekb8Xqy$C0$e&@^oeY;LoW2Jgs3!$pQC +HPV>)zyU%Y?+Ufr>U+dv_R1~_UQ1kZ})Bk0r!)Kp<`o+^nA}GHY?d^-NqS-B9%R4s*4n{KTK# +qOcPy{Pr7)>LT-vgdglZ!?pUC0+tl;*m{UKy+{b`?mtQFP`DH-Xg(VMa&)&1>mIj!7bz{$GwWm=^--!l^HCLRp2$ +YVi(SWKr0tyd;bpm>6}|2bPpoDsoL!DReE!9CRDz;PVv4GN_+$5&F;G1D&ps5a?@l{*=8p2RO?=6a&- +MsrUTz-Wu`JL@?>d#TX8NcE}H9%3aIc}56Wygfaz=?4c}=hc$<%igBnhU7I;!22R|su68o|%d8>%?9Q +<5Z{Yc-6Q%wLrpbKX!Jl=o>L%gFKWj6(IaIqYjAWuL&6IxVZ#KA5VjHwba;OGq<)GiY|&2;(t&B?c8@ +#^IJi?R62$-iBNo6}S6DUx_gno3HllrScJD8zYslSg=~I3nn9*YSM2oaRGez&gCBQ|A=MGT<;C9l5jC5>@1s*J)iMhMV(S@{SGiGrE_95ZX=!@KB#gjcUGM<*-G3EN-wAI39`zE!-XIIHX* +cMPX-(b|~d?y5lA+|95%iHlx4&Rzh=i{=%9s^u9d8z~K@tmouHpGi$b>?H= +HaNnTWg2}R~cdsk$O*nAqKW3e8IKTalJiXy&DuO@4o{dg3a^Q|0@Qe40ZgG&BHYmZB|ZtzfWq>5Ezbx +4_&h65LuCu`Qaqn(WmtW2BhyB2UnnEWH&Im8I1b9nexIYFo76f +YmCnyv!)6&hpU-1WmSe!`2<*QOSAvL~&j>^m4uhqu7oSE3kfj +l?R&FQW{eC`a>%EEGd$rTm~^$ZHH*HBuj8(I(1Jqx3SvKpc}^G#L4fQR4}4-s|`Y*V%}uTAM@lL^TcA +D3aoniGRJlQZX^7ag+ce(J;BNhlFub`DBD`ZBPT_&S$^@DrIO4;Tjqc<8Q-*^$_cSmcZIC+Mj>i<`J^ +lTasYaKc;(KpL~~vx@upcCZRAYVFTZNGkALggKEB#D?uBW}z*QW4NyY&$3zVrAbhhcx9r@qTbcZ~^Tn +fL=i?hU{gs{WwmJhdhvLU-X>dtKkP56=KPKWL0;~lMaXIF<*n?dXTafn^H}UFFpQRQ@VG1yYt0mVO}fd6n=4emzxxbRqMDDO>;GFMdA>=%5WZz!hZoy#;I}>12LL)qJ3l=l +iH?W?wCo^Fow{nr*BkQePnnB>f0jKR~r@)LziR0`8k-K2o~hUSOX$Q^~S5esguaT#q#rrbnv{h +UzZ{5%)gVdji@x`hRD-?qa7!+vZSTavwR?0&A$wEI1Aw!BOx4@tK1h#T~xWwDH#ek_V;DkPc?0lndy& +-BQKC)ntP=@q=C2Y{E%=z$)1q_$MW37MrAj-fc6!vnfYhLTz8(C?V8WimJH^yE&C(96F?-F1Sr?m$~m +(nPIoRv#|B7Mg6g0q7Z7xf6N%N6)8_E3XAjK!HsTmbUIc&D9;Ecr0klFC?O3CcQO!)S@V%y-@4eg!&= +bjwd^0J0x32^0qRS^LTwJPM(AgeA5Mj@bse)s<3H*lj$5pdj@wNb;M;=gBn|;oS3*9Cn=o}qtSuvUTc%ga{UXES255 +rSSj+gr{6ei_>4gG#}Ygi`S%(J(f8P_n$F|qQga*L*YqpBtK@q>G>GwWQIyyFzRWyW1lsO$6^^9BPwd ++aLfg+<2v0W(60RgI-LykrYZ0ig_Cmmpo};;2lm33eHkwUZ!X6yvrlNTQ!>DcKEiJWwE#BR;P(_VEs? ++YHep|byz1g@qTs*vt1 +0>(XVQys2T1$d8=Y=ET(3yec#-5ADw(zdD2YMyjT#A?62LVHlEj*x~Czgea9ivdD{U3!%-YZQSQ!nM6*Xt3 +I#Q-v^-7h)n6U`hPaTch&R&(&*KfxnNK6zG4JeEe)q*c*RdtU&;hd+s@z)fO^6@U8wipi2p0|~r=aZ +FOR|6*6yfHCb$E9Tr5{nnO2y6DS!yuq9Py{~}aF0TZ$-6 +`lg$HqeIznVIe*DH=D6a2`e;4KJZkYe4cEiyt;i=s&GB@PT4W4*T6$9bahT@6 +bF6Q$%x^3p}ri=0Mk|Kxmw9deL&^0?25{Y6W&V2wwR2A)y;(&1K*rfC5|_B2EX^`Z4^Fc3JvQMwqU}| +y|}csKz-QsCTkQjMpEqqs6)NHDCv?Ug^^v9mK8TQSnkR9Lh9SSqAKB+jyIGoBHfq9vO?+u4(^^lKY4X +=`r`EDjr*G4%jn>5(<}V<@xd3H=(l9jsqQSSAx>FtknAG +kazPPaH=VI7~#)5$~*q$C);$zR>E$o=rdw*pb|Ww3NQa7;N{E=;PM72bHwr^M1yVy$kF#A~o%I4(?~m +(xY+{cV-p#8z*&Glo>J5GxZkx&~;x#U)#Fz_%|SQJs<`n!3}5?gEeGi;h_y+w*{8QDm{&9gk);*voeM +ZF{^#v*I(N_6 +j=z;M)%k8em)ZfeMJ8vN^1ukQKl4?Fy3vESeAfBFA+!~YGrGl%#6yO|!oe>l%~VbyQJgYER+iT1s8_t +4x`-iT;`mTiObrp-!IZL5YKs^v;U=D2ZT~xXy(^pkhx1^E1xoOP+8M=Nq +V)W~WsMS~-)@oqf5JGY;m(VPx$B0Do8NGF!8)yV&M7F7XPQ-#i*Bo>tM|cgpEsFKeA)M$>MzG +*S>ysadGnIm2>0t@UOu?zy2fMWuLzL5@XJ*Pew^3QL#wr7WE0n7 +HAd?9tc3QU_}NSQx;fD6+dmBH-4xnBtFrZ@9INqVbiFv}7uI^^MLG$b<}Chpb{=8%w&!Fx)ttyrZ|0Z +&VwGPUQmS^(OolcrCBVWnw*9gA(%-!8NLC|uOlW!T1gxakm~ZZj73wcxj8s8ZnRS3D;{9ltKuy@1fkNM9i`r!GJiwS$YtZZivVQ#x!fPu+DpCS3_*Yz$Fyi&%!({@1>f +8UQY+MVa>P(*ABzfr*n&z`d-qb7Y7vyn)wOPxMAHppY14#3_-dLAgms?{&b_+X1<>NpJ!rY8DGy&qpZuiXC@BfhO#>d!TLR*_ +c}occkfN#TV!0{q1s$StGl@~&An&2TD{c?)md6ZhbmtMhQ@rE6&KOsWgfTuG25#-UTtNE$jx&#}%@h- +rCqA=bpa!p;fx@AWt^4AbUNDZnH}BrJ+xGUENPerS+-V6evGPrNsJH645eB8I`oS(axE)>fqzGq$|An +b|XC%&|=U^(mXinFKQ_KFsaQv&JVDZ3X6M|P%e0lAtnvx>gY+~QmX_nUO_Wp7CdKpzXz;+ZX1jvkbB* +d$Hw&?J>PwQEN|9=5cO9KQH0000807gYaRG@HVF)E*D6JqUW8Ic9p$~t(oh(ey#1v%q_)5L1a_H2n09)D2d75|GwwZ +?*~YECbLQHMI~bq=sw+j`t*7A>C=z1qr;Nwl<%cDQyn}f#(kF#gZdfS#)*L^m6HqO5I?DH> +<;6H!JK3t3J?Y6&e>g;{9?C*+JWZyQMdQtRcQ%|Ahdm*xyFP@#fet$OY@B6H%7umBnuRpwd@#pV9ym| +K?UqZQqM~@!8J$svd`G;?^a<#6+O4L0AfiDLK%eGl%v)OXfZ(1>%VVS1wvrSz>hsCTad(jqEcW@v-To +#@9<}39J%gj6TtM0{pUzL~Y&2`aTTR*Gj>I#scem1)1y6MXMbu7`r&l;?TeRZuTNi{O|l>U{p{@JEc|eg#h;gF-<>}D&#=N+w!Z1hO1Hc&+D^< +`@$;r^X=W$cynsP0X6v?Di?-iRGA>gWD=`BanaN>C+iyj&n2CFY-A%H)7AD{PeD?k?@8G*=>CYeVV>> +=LIGD|fsshS6$D_3?sF*?5&whOS=G}+)8pTjPUvC!x@JNn&`cnrD9z1*V>ecD%=h2ctV=KU`Dthqz#rqFb? +mZM5d2H{rH&LLRNtPo@N~}38tcKRjk*5y$mtd5r;7VGhD7 ++);HP0nt{#%w-8I;yEDl}HTrTuhM*0^cjUtZv#B(8o4wYLP9QHWS +dl%%A#c6gaj!#Ss8P{{CO?YaB!5^_8fB>%r=WZ{Gs<69;-Y^GX!$&{&>ffvmrlIGg~)zDFdMJtC{@yR +78lW-!cN?CA8A8ytuIj(-{Gda+ng$0syniSC~+7Fpp;DfU_q$Mp6X_)4*&lE);j{5sHFd~D^C$};ln2 +KaMrMs@7azJ7hKYkY)(;g7H!p$o7LV=XpSKcXr(0$AYr$MF7H6-)Nj^()4)4DNHKN?9FPG`9gzWz9j1TN!59j}7_4iFvKDaLw58~#*^4 +DjeYY0#a#@N+LLMs2Ark0Rw1>cOKHOl2uMbSmb#sz`j9e6&sm6I1~*@DtVp-i&dqT1LiDc*l7#nAjuO0gP+9i2p)9ebjK +zwQ(u9kJXJ^ywCsuFrb|Nx@L#62Z)${%+xETZ(EibEtf%bN`9OZ7l#+(^FVfQvg4rH%U%mgL$0&AhKE +jLV;62@8&nSM(#v@E1=T?Cbt1v(dv9wRH&K)C%+W)0{8%|I13gPep%L=dt61mSasP*Os}T=;kmdhi~8 +yJmz%oZz|6MrtMA5$U{Ef=u(Ba-S5;Zxz$(8kLBRl(1Xg;3C9`E&3FIj>F`~XL+ond1dum}DI(~xu)0 +zV0IK1|gLT*{s3sP3~c&Geo29;-6eni5P8zK#FiaU^`rq8X4tz02ldkn?b+nk7?P>5 +K>WsVzF-{C?o+BWI>JEsUDcy7AbOd-=bimIw5$!yHtD}6tjEXP7S_A9fC~u8XtfjuK_JY_%6y4>e3W+ +i|($3sj^k@aU2#tVDWY(Fo+q_73Uc$B@iE$ysU2(+FeZd%6&po2yYyUaRa$2c|2p%ydOuuT!*Ab`>O{1@ +hyLR^g0vd0EMj#)14}r?Z1N`K-LV6>$1rOrP5s8AHIR%Yh4NlA)M$W_(qlmCBR;+BLN_)@o%)MVL4ql3r(!pE97F(y%t67Xk +NiG#J|9tVsCPScF`Yjhy@Rc9u8&c!;EZq0me;71PQ_nK4E9T;vsKS*%}R6O86tu&5JdZ0b&4gR8GYdp +l-8^i~K0RxBxQ(fX+3{R;;UHZqXTuO(;CW!mQK7ir}?{Zbcw1_-Y)cPzpOOKU-QpcAh+X_=(gU^0(kG +wWm;TR+qqT%p@P{5mSw0)Y{Fc(OZVBqFxlO$MgvPbqmUA0 +Dgb8R6pjDv?tRIP3%jME<*FyHcqs^4q_#_Snhp6zxP^Q`Yb%DD!$*#ZymLFPkiw5^1aAIHy%W1^HCdN +7lawO#w!W`=citbwA?gt`Cp>wsV`f@#lEO@vkj(H*KPLG+eOdowrYE1daWDiGotX*bX!n#!e>#KV9ij +#hBa)rtjFoIc}WI*|Qr^Nqa$vIB+ +P=YZ;Pfzj0R@eiUQe>`?4{cZbzWfRliLiE}QIcvq8jdv{BWvj^B)c+B+b=Z*7gWsS+Ko}!EYkXbUg_n +gp35@TR#7{ZUY0G4sudkD8`jatfnGP+s%ZraD_auLIFZYW`!#S0u~1(1Yuaw=6pV`t^bdhJgIC-h`q2 +Y|A13n2AVmk52E?dlqxh4fJR#RrlzUapov?kG|L|3zwxw>wHap=?#3@MkJ=lg)kLv^Yw6%rfl`a%}X~ +nyxyW|%o&i?WIGuLr5V8lk+q?NUQySjMTwv; +DhI^$qqoH|QV0DDP9{YeMOImXkr9 +5l(zPwzw^ETLt%A1nB8sew +E!7_Qp9fpG70OI`2Jr*Tt=1Xi}Z*<)(BtolXOu*-+FOmXYRut}5mcrtiAVUN_kzRr=8}`_Dp)KW^APT*$N1lwh+fBOMqAP6VZf{66B|fXnDNs4 +xtcjV7^12Bf3Jc&4ED?}Bx$vcoCK|@BsNOR|TqL+?8h9Yb^cRjwQNM6TI#IOqYrXr3;V6D(mNg(tO?(QAY}F6)4v-{d3MGe=QmtcSdp +IL)6(^Cgh(4#&L&D9|a48@oYR^@naN|zvmno?i6a=D3uQ<8dSm%3ygB0;{OR#s?ZKjdiX!uqtpb;Zyd?9f8_8IasGl^|cLqZ=yh;!?i2&;hPsis}tVxgVm7BfP)LsqO0(QbYRmNkI?>I6I@!5gnk +8>j?LZiiwT-L(bPGrWTYa25UPUTF)~^*$Da~;F{+P)Z*3%J;LeyP}k|3iX`?l;F%V|gTm0oSN=Nk%Cu +4?AwX!A64`nD*qL>Kr8=##kb+oF@7`2AxHIxRWeF$DW0+1nBDpHPAB2acA+Ex46_wQcP#8AxRZbGr6=k&aoUdY8 +@4UPhN)MrA{pJ55!p&OsiR{*_MB@8Js!a!pk80Tq*!KeUChuIl>eO(pX&g{9MQm8Gr8g&Agvuj`=iI6 +kp^S13WP39AaV#leWD4l+I2$2Y3D}r9OVO$Bwy9VY?ZU!71z>jGBBh}eQ(&|l&dtF(&rJitYooIr^-S +@q4qiUcFNri7yBVJf*MZqW>b=?K}C4KgyKCN>sN_m7=GqmL_WUm(fX!Ix7n)^-$-rHbVwrf5KMl!JZ# +k6lgWWoBiyZJM%T<90slB=OhSt6;>kz$Lh)D4E0fU?nYQ-Sh +Tbz?G7HPk?Vfp4t3ScOo_BtSNwB3B%h28I;!FQcofK1|3iU|lj5C;ZN8bOqy)p{R0AWk>85!TwYn?WDOar*9F@dOL^6zVaQQ$v+jM&4;GXTU2hMeBN{TS +6`y7K+cq;;DeHFlWS?^BWGK8gpq01kELFk#ARc>~M4_nNDx-&b`)Qlyvb;wPCOd!9eMJ4mD{mH5xEZG +_=l+QE|7m*|GN~Rt>HajNAx$JiJKS#unuD?`$+AsxY#}tqcJ#-RHQ$ajUsNOsO2Dh>ZTvVMn`s;vIL$ +tgmjE~pObL9njVt$2EqOa;#si|eh3sGYN)xaYBSAITOie`9wM2zA@ZI79Q3t&kF^ZLIi(Yv&%99-B2q +A^&f@aFmH_eDq#z^Y_CG^cj!^Zlz#J_O9L)%IH$60(oMQRM0R(6 +==}HLP!Qt7)xZ{C?mpoX^%*G_L2w3N0FdS)d|{Sl?3Ct{fr05rQ?xuEvXy{GMRrt#^2lq{+;_B%Z&tlym%2+$}jP3Q>lBJqFQ+5*;CKKS4$rtV#En4w2zP +S9LlW|xdQ-&bx0=0ZDL%Bj;p^215d1RsU2{3j);_f%{_og;tpsk(g?u13d#O~;eigA7gopY~R|PN?JwQi|f2Ut#p_UXEU!lZ;83Nq>lrzeAVwwd5qtl3n9mnUzLo6^rRkm8a|t(fj31R~i+$bHwS^yC$we=>z2)SPPq)0(gF4ZOU(#UKkNtM?Md +YWcu_XWbD@KN5Tx8gM}F7ocW_&mS3NCM*`UwrWu7Lvcd{3HK@|KPW;zfs>-i?3z8@-VosKmP(FdO1!^ +u`{4cYnzJ~9e+x%FS7?P*XfQBNwpYK@YL~c6~AJ-w!ny#Ravv;b}2N9C)um#U+;j&2ela-k)R^DKT_jOR +tM@R--Ap@{6UIU4HYGs4=(Eh)ay8EfVv3bP1>jID)?AMK>?YNLclg?ny@$0{3+y+cDZrT(e2CdQZ*ag +bx<^93mG#Oh`;42ereQJs<>2Z$>tt;=f>npO=gl;Og-2g5$H~DMQS5bAhS`>IJ>p!Q*8PN&?2BO^_kN +D(r~!lkWu}C^f~%#}SlSZYq+~2#*C(yFF?*b;f>-4%Q8>UtH5kr7V{`F{zk&=L0#-MnpSfpH8#bRD3G +;qx(gl*M9K9?Hz}k(hlN`ovCk{eGkD3ML0OrO>BV{!L7QgnD__SA7VVJeJH>ly}n7sHrDpwyC +%{V~*1?lVT2PZwQUnchj!m7Kj*g)!X**KM^9(iqGKNI8b( ++Hw7m;j;D)D5`TKXQYnaAX|$|#;iI&C>D0hKVEFDq}(q71eC$Eb$Rbak`#)xlefp!cp@Ty~_1IN!tiI +Q4CFN5O={qr_)bc4X4SY`s<~`AVu=)K_9u0e=Bt<4N}AIG!?uDVH+;bQ|RHNRTJggWoIY(Ta~{jJFzI +*}(uuUP!JxDVff(MK$!X$fx-P!E_=KLT%S{xUhrDNfw_FeAFor83i$lje4AL<96yqwwupWa~~NMy2s` +VXOiMG7DyX9sCMtb6AX^PpeoRX8r||lr-v*QOef5?plTsrESKdO)jGqx8TJWHCkjqbJRuk^o1zMV$#x +~b;)B6AV#|Z00JZ^c<7R%`!EF4zn~v0N6B`Cn(3`BPqn%EBr}W_D77H~MEUl&IRXJRzp!mp>HO^_jUp +lK*G@||=III6prtp`mwz`AvjIuP@MFmdoU1`3`UkQ4kguHUm1+&UC7o`kM7}5{U6+V?dlGcSu1Nk5_N +y0PavmdoAqojct86XRzEw_OG{4T03yHlmnwDe9#xaTNT=+5pVC9mInI6LM|iPN_)I0oh#rL0!AD0R2B +#4WZDvazYqOPe^2Vthzf(2ZJm$e1AR31%Gc$1l&8g(wnv}h1X&WQgITjP +p|P?>I%<_t`_c%~+J^3n>~M|&@I>IhlNOqZn9JSa2WGs5ar0@@H@{HUWnRuT$~TiMuYKQ1mt#^#dxo3 +xuKr34zhp|I`TY!V@eXlHq*NrseeydYbgp1#XxW8!ioh9cHmF`t%lQn%Y#yQv3r4U>@Re9R$GwaI6;c +{|KFfWt@XSSR3C9FtXuM)?|7eW@=DAX_}g7P6lJ>0jk;1%Vb3-*WP+N$22$aZ<9=v_c&WLWIe +7oJ)4}k*m)spC&kg1fA}U^n}TUL>BfmNSo4sH4I~4Tb)FDYQv-vU!w-=huMTe6X~+IQ?YCQ}`L)|yMI +yAXzg$bNUNn&^b;=@9BtJs=C?x2C4d?jd1DEulm@m)x1~H&FRVK7l!T~U$P5GbZZe%fA#)h`KovL(lh +?p0z8p(xvM4VHQgr}zM08cS9z+S8VP^_=95e1`h%I7(;g@`es3t8Ex(d+OKVfl>Q6zoaVTk@TDGSSr7!O0OwY_iK7af;*1k>qn6beq< +h@iiEY@=tUrt(mu9lVwbQqSrL16_L~VOiV&)MOIPXh^7UTYTeYt{dLB*(6>UOq_BKpODi*B;ALk=bzj +_&RJvU2W)a*?5}0s2x~%T1 +E*$3k4ZnnnRtwqoY71MV0@~HK!a=KrWc3={W_df~St`%i9xz4F?C|oCk}>Lq+vDVBANX&jp&16Y1-z# +BEXc&fZ38pIRvvCNnGFk>x}qySs55B(=YR{i4SKsI#k!Q75SPA(z=%GSZ9zT{hx^8akIbrPQQ1&(J^LCb{{|<%!Q}yF7lS+pI3M- +ZF6P^S`#s9VwBKZJe~Hi09D{1bYWD!GXCv*l}H +_xo7?110PXnallj}PW}@Y;(#~AUXh>V4N~8ahn4TrB$;c2lh@jHi`RW3=S_fG->XU3Dh?XrRN4tmQn(M!p&Eg +4ac5D|Kht;5#_o-JYCo$)@rs|7$H%8&e-bO~wKrrh#?$0nDPehNmnGng76C`WTDoOlR&R7@S4c2qUEW +e=ZRGjeLB0qH%%bfh^FVj4i<9H+90hjSDc&IvO<&cn!b6AKITw3jYW8A_rUsy^KrX9vdJ+NzxUcnfZ~xwLNt-L-4#TATK$_xExdccmA3xX%VFGYjM +ol94y9Jm7++W~EpNoiY0@y_@zPgc)-Pnm34Djb|`1fh5(Db%72QN!_3m-3_wNpsEw>7LD^Y_Sb#CK7R +TXEEX6xU3x!l+N-CaBa0Tj=}%D)#)ClBV@~ooRVUjCi28we^FFHsSCO3c`y990ebUODM0Vvetq*nJio +mH`lplEDN}EBv7d24_)XSw6wnO;6CPiDty%eTD6Bj()0${mD2plzWaq;#)zB|HOKVUdYOQOvVr58nWK +~lB`noPPLmk*4CL5PV208^Nj68Hx0u)=~9GAAQJ@l8-GQ(p4;R^+@Ec^qNkhMDFjSv|>ay~WU}G>EnL +nsXo4R?fo*q&#F0CgR=c5Fosqq&4Co+evU^ghf&~}vHD} +!u6k)J{_1(0y%zcaFnWG3#S(Mk<3RjK@n6zqpTF*VCWwaVV%D4u(jBAIN)cA{fU`>a+=<3k)Cy7=#Dc +vH%3^3|x$0&F#Y=OFkLG{&72YayDk>5(-dF*`vq&<B#UcjH>y ++nw`PuWc;G^6x;YlRB)EbOJc)+?3z77|zdQx#kI=mul<#T5bLkkmC$SA7m}ex_Loa{r9^^5 +&^~ck>V-YwmC=8iOalf8WSvM0T#Yo<>H2gJ +jYGuY0APLWO<+HCX%mmkZ~%Zhd8$9EHWwVi8Muh@_f#6i^gd8B6UpVXWI*Ca)7pyQ6dCyXIDG +Uf9?jki;QylIkvs=t8o|wUve3ei+uUor*W7)SWGlaTj0f19g~|ij^{EFyCs{8G3i9ymdx$;;>|v}+>& +$GS4s(izoc;XZ%W}n2o-cEFQpAaIU*5zkxnI!ww`^*8fau$Q4-OZfrLj{mFAkL=btgg$|oA&9+w-dnT +)k-4Slwmy1zJ2lIt25Bf>qVt*itSW(qQ8}EwSR-GOQ#zMz+ge>4gACR< +4*NoqD_P_%JbY%>pl5UU%ZL?n-DZd9pMaVN_c9f);@*&$2<~iGIX3={=3IqCoh4Qpi>>)K?ej{udNgi +k0b^UUaKcfCR(}k;Uq6>PO=fNA%{0mj8B9+@J*_p$Rd(UPBPSCY=6?y!Dpb!0Vb1L9MK28Pj9B8kA#6n)MN(EK`{U&>L +doaY7=AcVp~ss5KVdwBql|si{&fkdfy_`pIGu!Zbl(vdr!{FthG=W>k>cqpabAGhi%rBqRh=O#T%&g1 +o#9vaIj_(|!TVFS8?yL&V1YC(YsT-%-*3|3yW|Bl3fQ5ls|FG&ws{t=LCi;s;$O*$n>opvY+1lyaaCM +ls_vWHIj_&Fm4?!y=j!v7*1$dA-QA{G$)=8S8Y%(LKiyo~;&N#}JI_vmZgc+q9IPGfRNDK+76qt|I3} +>4>TrMXh%$Z{J8ZFrHqEdz~oH9gvAHk48Y@#&civTmt^2@&~`}veS{6)_Q)(QjA#W_JNv*L{!@D!-Uk +|$9;&8Z46`DS<+Bb7$SFBDr3o`>C;DiPc2`iMJ_jakLRGlYb}ysh~V!R*bQe(KlWz!DI$*bPG +L(^^uepz1)ANh`dCK7TM_f!6yOLljN5g5wvG{hl=%*?{sUM%@xPXEWt?L2M^N98R&|Pdew|}BDn{MLb +>Y3f&a~^;gB&WHl$6morxw=5e5?-#xfY-`pY=94nHuutQCgvuBFnS5MR5P6vbxVHqq +pe8kIzgk$=}!7veH_n$HprWSX^=w}=fa}tl@IcTbdTP!j@a{;TqN%On5SYOBQV11`TX5G6tvn#BkwG! +uE2FZ^p(YvX@!GG}ix?J;FFq3w$Kufz={8Y@b=nTaga6K~9SH+sym3#GrPG*HX4QvBBomFuuDzpn^nn +m`HLjn3OGoqKB3>4Jv4P};!#TD7P1V)7pU0l#l07_S{1{X1@{NF9Pw7LyQ6ihX);)ll5?6m5d3Gt#8# +yyDTvYeN65m#Fvq@tQ=IV#}A*6rQJ#XZU@GhUbxV2+~enwBm*xIx!%$-TL_Xb}YFxP#K?_a8B1{AtZY +BO&9#E)ZKyfMWP^NmsoVwRD(pQJ&E*QzbaZdcAe>{yF=AIMtNMhdcvYZ|W~DWJMgJNjfR}qYuewS{R} +OXNQ<-+~M>CFC}pHosHOIzNOY9T}AsAW3l3x{5;bx&3b3dIDMR%jL2t`iqQ_8LSL(MiMYJWAq;bqy*- +ub4-V}jhbn4~ma45J@f8bJ(PJIcjc@T5&+dyUGAqh>62BE-kV^xp4?&D@r3-sJLr6ZiJN_|};oG7Afx +?gN8Hg2h<^$J{oQL~Kww0_Va-{~&MUh-@hxars?z`=wm&!}SJET?)gUP%9lo`vK$lU~=JWbq@?LSLL2 +vNttPN0aoYK9Zz?oC+tAGJlM=67uGZmhueD$(tVbIW|K;CmhD?(j?8lWj2>zO4=4tKjyKHn(1gf2@S+ +k$oW7 +{b*owjVI3$&*wEe#RuEw8k=LWcC?p@G*Ukbxmk`?cPU4%wc(qE_7^Ph66%Bu=f`iM^$+v(9Pc#Zu?v@7z^? +i^u8pRi(S;xEbviBULP$=MyI1W|NXD^Blr9ZlPxTvF0r1b0BsdZ(SupNvECT%*U!k}Q9cHDEV1RIzp8 +aXOTgX3h^%*PFS;X!E$f9FU$i!M@<+HOeDtS`{yk^S3;+K3S3Hz9C`4=qY3_Us#k+da9*Agf{#yH7*f +cT@!U6(p(>&nR*e}P~pZxQQx^2aiU84GXz%FzJM)OJb=($zlQM&x))x4=1K5e|9V!<>MKP~HQm~0$$A +(AwXB0*->$?rtJ{>%B~y|#GV8hU?K&M~7AEa{>B$+x0KPcH5>npzpwQk&?~a8ebl?AzpCn8?k4%y}aC +;yJ8oj942m-Z(}f$02R$=vkZRO|(;@6M*GKyoEi1sq8j2pZ=6RfxqU(hJDn0Q)CEkUbcMYpKH?79k7{ +1-+Vi-cBN{!?XK)qaf2}o-8HGt*}PeA70NX?b2F6}q5VuL87A57gBT&fIlrM)BIni#UBD=aEtEq3u|f +3f-LWeH5eOq%HMc@1!)Z6}IiwzQ4^W99=-BQsc4Ji7{TxGglDzUZ5tpPIQ*8Mr?&4hl2T&vTI4Cml(Fm}r+oUy+_+e5_eMAAxb!j+t*w@ +T#5~LBRS@c9|Z$cM8R^2ws79!`oL((Y&#l7Ch%pB>qAv=;jJt>W|xebc;~xd%9F&OK@US6eimmjrX{? +2UhC4$c^5T@x|4CSHu5AeZ*C=J%!m*uhWX{0gi12yktiGrHY-2xs)bYZXDXLC}mf~jjbt>joz3y+uB* +AcI?2CP+2wBF%3(iP@~x7=jXo3)C*Q32X`aDyYN%d0pm5Jn;vKUW5oaPWHBmFf^CJd>wH +BfPTmxB=2BW2Tvmu93cnla;6b7T>Bv{REHd!ya#L0d%Lt+U{1T%;fk^L|VL9h_J+;L?(ZfPMaJjOE>k +#`|)t*Y&o^s2J+#Dk1$mQTPqZbX~G8*#aHoEi3XD0Ih`NVBOV#ooe>e(&`u4K6$JQV9KtQur7E+@Se( +(S^X6{gK9Fo;7Ps-68GMiw2^FfZd03JcP#2Gtkhb{57ObAI)o?Q>vW6m2XHi(}g8>Hs3#seFOnnCP*b +?`wTj>@SS8M0`Ex7oelX{SjY#xl{@l9oY7FjUptV<7noTw@+796!oOdj%1>CzWBJVw!04%21CO~o}q? +s(%}$Ix|u{5Yw-c`LqS=BPGcih{L|NNB^5^-+bu6S2_dDdQmY{}9DocoHOpeHUF95ML=-E0k|#xU*Q^ +22zoX!IwEaAkX8fiY2hn19Nhg*{12Jrjb}CpfD~wFyRN!<#X9GwU3spI(Kg#-H=S-)Rznc4{dn1KAm6 +HOUPSq&a4)NqpNp{N_N~+6z1L(aKU|L;?nnIaULYXBzIkUS%?M9LclI2FC5{Hh+-%H$^lE>cOG9FZ4T +?&f5QSI|xxoE@P37Hj@FHDirN=aOqGe~KwKJ!f+7zuS4zhS`Y6THXuzN?<73xtzq%;-XHStK`EEs3bZL$%E(5&ndcr*guOxKMa*aO|st}IumbelP +yyp8qdW8hVz(rS7{BwB~sR(dWJHt3-qeKy9?NsE!@nzszadO|@2JztK43IX(l)1~5eG{(<0GB85l?Xt +F3kQ9oG-(Uf$rf^&Rzt_*Nw0=;xL2HZ2Ln3&`(uwV?{ECam)(}u}h_9cujO&PZDO^ERUQQ4|9bQ3LSR ++UsgSHJp+9>k0b^7?v# +;TlT+#sPXmv1qs`7K^udEHbhp`!Z47+fvvLxj55@|#Y31OKR3R=yfbvxE<(C+aUe_>*eh#;0vKj#hx| +{|it{0|XQR000O8MnywZGU-Un))W8$15p3~8~^|SaA|NaUv_0~WN&gWWNCABY-wUIX>Md?crI{x?Ob_ +}+%}f~zdr@nUPG#+T0XK9%=T +lFk&o}Qm54D^p;fkObctUZCFM>Qnqa+=QoMNn?CRy4t4M#;A +}&(#?1z_cUqAojySG2QenSt@?kw9?rP5*>*V{Z>xu1Et*?~{Obp{{4#CUQ@|$!ZM(t{5OVWM3!cu8Os +56n^*i?W;e=b(TDB^!7XOB$sL~Ud#V&WUc3dUcZX#`nFW*_Zu~5Tt-);@+wxfoQqYH<>{iVWIlv|3Twmt94ahJbYN~t1K$jhHrwl-RrBTFTSUC=J8pQgDmkXPOjsPd=BOL7?!IaWuj+>;rH&{BSJfYKh4JLTVisiHy$L1{aW +Oydy9d;DZ$JUcV6Kn#p1$BJq4JiV|vH$s}86GBq?)yEWz?aY1DDq|!8)*3l$dgnNWB!3z2xaC)-tweDi$dzWOy-c8-qQads-6p|xZ2M#v*L{zigh@2!*^h^we3T=a4)*ye)ww!VK +!ui2w4wW*B6}4Fr*rij{Q++qJ(C59&ZX5My-sNo6PHVr%9sC?HAq8`X8bz`P>KO +gGq6n?uhR+Y(d_Ub1e}><-I1O65(_4sDgoB^AQ0TkHO9XJJ(M{4D0?<*F)sf`E#j3huXhXSChwZy|qB_Oyn;SnU8TrZM1&%^gn7|cs>vxdN +e4`kfZveB1B^Z~PY_(ET)6!)D?_Jzt3GMD1fG^Pxsli>6eqicl;ay@!$z0419JP$Lxh|8X3fe~Ji=~M +}(+inM~_)t{&b*>SXIWdR*YS-!UFvVp`nc31@z=5uyQZdi5{+w23ty}xJx|`9gnd!2B<2h>A7+R +qj3#Z_NkkRL{HHZtN~VZc;N)x1El$X}22bQr(7mTt#x1MH103PhGipp0e@uR#Z06ER%7R!m=l8~C#+^ +%$&TW#Fgxj6w0^arY5L_c)#xA?3boRw*j=BX$sI?$i!Yh`qr-2pe=^%pk#IWcBlSTXQcqCHoqBzB@v+ +%-hMs%=xRL}dg-W^0tsiJPxPqr9#)KxuNWtQRmeI6E#7q{Cb(%zneb2|oC|BwMjpC40><&i4{clb +MG-Wy7p>|F9!}yWk=YF><{8OWq`?~sL3UZq$e3_@G@>#I+9w)-mcbl!!s&SL$OyOZHS+dE`)}U|7v#7 +p1fpb$qsx8ZIa9`qLJ~qk7RdbN!afbtC__37Oy=VKhnd&O^27E*ij}r~?BByEFthY$qrgGHk>R^Yh(d +!_{p}>vc!)WOfN<3uGJ+;e7pf@=t6naThh2xAhp1T(VlM=xP^rWdKwV2Uo)9#=(JUm(8C(QEaY>p%ON +5kb@qjj?#_Y@YvuFs+G&kUER}9Wb6Jj<{xy|xiAf>0#@;zn3S#@wqz#A6Gsk;geI8-&-fd`&GwIhrSK +P`cnSp+4nkbjtHi%~Po)8+JBxZP&R$=|AGVBc%f4@QDhNCFb}L-EX}w&Un{98)tiBt)cY@DWty3TBZa +!%+>u8j>PIMOgP=n$iaVt(r|3Jg8j~7+N)(c?R4dpX6mN{lJw1-a6Y9y(k@7F4$m!;3XGlsFCvkM>3d +ex#u|GSS8`LnLZ@TOvh9O@xy%@iLEhXF;-%Sn~^gm>8!+7W9Y51y9V`ithY>&>7B8;w5)Jg)OEF0F|3kv1O`xWIM*^)rLr5CRN|XxC!S@&Xk^FSj&xRWI34%~ic?8}lPy;@WB4~lggPBYg2 +zM}Y!d&(#-Wpin!`YxD-CMIXRaFHhouxX*^%Jz;zRzFj}9W{te!D|sl>ofiVPm~Jh*XOL@T*RlPh`oU;2yQn?$EFe}n2F^;lY +?%GkzMJqyr8MyoA#7G+I$6p#a>HWr*}q%mN};6U@u0|+GE&SXQq4PO<04cLN^sV1}^e(6k-i@JFf%ec +3=m2(Ydn|<$8>aartdvGJ>*Pn&KQ)O4#arCMc=Y@_@CuzKzv}-2eaeUob{-BYz$%#x4{!@9; +?XQn7Qe(4zzjoGjd#Hmrsm3PYN#Ipv!Nul>t+&NGrHSRv!u(q}V-7t6h^sH&}auV}qS2CPT4i`WCAY^~yP(3_t5v0vbdxl3P;@?K=Ooz&!1h&iV +Vz4JQHd)d_k_b-0G9X-RVylvI4aN$kvnq%iXsyAsE3QB_wlHi+24XVLCQ+mAv_0W6sHx6JhI?=8fOu3 +k3QB&Om3qfWV)`jbCCAS8bgSjRh;pW95)EG`jN$>K>d(PDAp8rPRi_eWP`c|8zLF$~mT*%O%j%=)^mr +B2SY||2X_HX=Ln|W$elBF>p)|Y@jS?(aR1mOSuIR@C=1}H-d};}4HQ7+&^Z~@!ZBzycQ%Ey9i@&`k$n +mAiNPLUIc@7VEy-*%wVB0+7wrukB2sEe=NaATmv3f}x18&LkAPeBW)PgvIW?w~5CW!nMJHcPZT7fNty +6hhbTCM9Y_dm^T5QH`DaB>CBwtw6G)7KjenP%2V`0K>NbBMo +xIV64of}{rTn7C(T;{bLLm$Q*UC8`11{>o*quaUD4HKx9*|@Xrqe(4HCUPmv4l94{DE-|c%{FF*#cq; +}@Gxw9&7!URXqxy^+Qv_Q_w~4|d45;#G-@hVib0y~R)Q`>zz~dG9u$%Sh)tJC$(x~S+x+pck+b`F>28 +N$_Fez>e$b|44;pnphH1ag49fof-(K$Tt=R)5Dl@zf12Scpr@^t3+`JRw?89J2u(tIj-f4$>e^@(Mm} +qrKL0W9x8VB#kTC}116y9#s*%2joW6t_RnfB@H@6TelS|Jte6frk9qRL5tomb4btkZizxbFDfl`Fs24XZmxlFQy`$|`lT7$m +a^@MLNfnM2kq0{B%DwOk4qcH$cR)IWRSXvqY!g_Pj*G#afkyEOAqHcFo+kwt#uqyM_5uy_qU&l}wEcM +Vy0L+FAA8G5DkNZ}#vcZOW1djFi?e6oC%uHB!=dZ7K5hvO!k= +RXshnaqhzu4|T3@i}f)T>4`*|$Z`TPZGgVeDl=`n^!3XI*l$?-+i?rOo0O`*?*pKDALo(i+4YB1oheF +eIc^>1s?C$B*d+S*-SCrsR*Z7sI5BG!VmL;nmm(BG87myaMG1GH>d{<0J~0L~ +RDJsT#2qUW_C!u+n$q&N7%ojTDhKZn2$?L}r1W-Gf{q_3y)Db@W0uENl=&>{jVv-rX`9*c&o;;n+XXO +o<7h!A?>en~S*jiF(R9UF+PKM^KDsV#I!SHHW`k+lD22E&-**9WX*T;4PCMjpHt)f&FpFg5;3XJ-C0p +cda??VIi#@N~%{<#l2E@_@Xg|`XlsvmO`Ps#~DUu61*aGgWOx{Q&TzF(Q{ue!4KodWW73~FGshAG+*# +k~oSEmg&d0yVuRv28iZYERKlnw}_4ey3=gmC)H3^2AcwkMl9I%%eKsRr%Bk}221<;Tiwe&uA~w1bu2> +WVi+i0A`3W_l#W?rg?Q7LzV;%K4|Ow=T{fZ}@d;I&d4^`l>HX!i&~9j_3Gvf@UJYXU5;L6)B{WAeB9t +Thr&_aPc;xxkb`+vFk4o^QKgo?K@-V!((eH%O%z7g5`2%PoeOr@D~==P<8`~x~Xh8I`Wy2n&-xp>JBt +^igN=cKImPn7EgwU=H2+TCtdx3>}BZywG#2%#kh7&TU2W2V?$f16d}dYb0d@4#8FEp(zfhtZceC^Tgh +H>Ni{e`Bzzh9_s~|8=eFByP><}B{>^}HwuT~Chy9{JNXMD_vY9-MyX9?Fysds+MTB%XHVCV{ +Os?zf@01Mv{_%f4nJ829yYt5rWwe;$p-0m&i)J_Z5_905t*e|v{2RT!M-$s3JAI7S;*b?OwC&#CduCz +0FfcxhNuv;`voMo@yZ50(dfu^Q&I6ADA36`wqu;Wf3;Qj^g9nvKkGR$0qsr5#kPQ_O#Fv)>>@-774+C +YkyWWm8YHj0i$*%{=wr~qdN8q)(0Q|-(WJkP9OoqsxDk?j*CRSd+h|$Kr`!+yxW@S^F80B_b=F;vf0I +J5|_^yPN^S`0$=Au72-rUao##2=)u%-V-Eyvk22lH;y9FvJZOW>T~;%092wAwo;I*JDV<}s +KB(u+M0*&hb*j$jp9*MrIVKwFW+(Vemj>H1j`NspM%1(UCLzMFLmN9K@68?tK5enh`iv#{9CO5)m6UU +_On3DJx2!S_uram?&s?b+kO;+-7HPV*nQ#J0YWvzYolVDT_Ec@%-%affCJzta_La-^Z4Zh~b(xKT`d| +Dw0ifT!17<$oLtmotzUC8t;UJ9iV$&evK!l{-sl#AN!EFlm7Z#>flT?fRSgTVYo<7?f9h)!bm$cuRU8GaWRv6%pE2@UmvSvYmGW0Df*@se +1M8|sfP8(ktJ$C +4sEv$;Dx*j$z+7y!U+Qo(gP|){1Z@10|XQR000O8MnywZDWQG*A2R>|`^o?S9{>OVaA|NaUv_0~WN&g +WWNCABY-wUIY;R*>bZ>HVE^vA6eQS5yMwZ}r{R%`HFTjL?E#)!Y>?j$x<8(YHop@}gCwmk(1ri{I76~ +u_D4A*Jzwdojp{h^-DLcKBJ!f$eiv+7~y>8ui-8ugVM<+)o!IN^ctMcV_6G +Tr&!TF=J^Hcce)8KD;k?ew($v^T<48^|9=UGu_Y0#8GbDagxcg=NK1TV`)bC*j)oyYWz$34k>ncldo{q9 +N^K8=u&*=Trsw%5V5S#>?Dp{_RNl=t9z}u`cE2rD_dN9 +pKrMOO7x{pQuH=P$A}ud;db4J_XZ7rYMsoYa}~dK@&_n`YYV0J0y}iwrtaH)8@y^E?iIc=0WL8p%umW ++gKKZcZ4X7EIRI`t}^gJr35%O*T#8wbWl{O@c5~{lCihvHtX|xJ_1hO07yIfVa|)ap&(Ev +!&CUy|D62K}{}-;SrcJ7=L13q97zTFm2k8C=-)8CGxRg2cyX!2|WB+gbG7j>3$_SayR@u=J?lM^Q3$@ +*1fc`DLi>5q)>FDU_o5wG|dHQ0Cf1qfU5l+J_MOFCs=%>4nMi$C-%gQ=JpJy~^ws}<{?vvMA{sutZq}=}$p#i{PPFRbo +9Mb3eYsvi(_cOP`tc9nzM4M!?yILiLgnzfX*Tub;ls^tlgDMXqz~cIQJO7iDwEZUa7>{djk?BddhuOZ +WFw|4$H&J}F`0h+=sc>k)dKhE&*Na +R8KV#a)Ms5U$1=!z)Gj!P1~_juVOAYPc`+|5T-4QWq!4JmT{Zb;mAR8u8&IOU1U_BPk{JxM2AmI;C2T +Sr$`3D|!E6UVz=#)l1)GIy$GUcr-7)IpcF=FJ>P@!8^^U@ov<$Q-+*WyLj6imj6qTM$Iuu(sA|)=N!s +||{8Hf%y`YnK!YHF|ciX--(Gq*I*lct7tl?V|r$dTEKDi#YOT>vc%?J?;7i%b&1`XU3EF1A1v;bk-$2 +QFv367|) +)zBH@hxy`T_r<@vFU}Q(q|H%QQ8_~qq(cmeUU5mp>=l=;gHzb*z{`=2Bn`jLEDqw3!@As7upGczK^(% +Lp+iv^H%S#Qf5GiRA7{UutIzZo#CiU%%FKQVdHrU<0;*jHUbb9P!R$>&fA6kWQUQeY)iwpe%&oFX7vW +fD^~7L|O#-6>-bn%gi0F6M`TRN{d8ZC`JIY6sswQv24zop7Y{zdMZk4Zi-4?QI?W3Zlc%zSn7&+uGQZ}= +R|tmBGpLh;a0@6)(h(1|rPv}QF|Luvs06zU=DG@!x2qOTK>0Y;so+@%})hL&}8KHnuvzmX@ +j1`RLrb5ZLJV)J((Y_F4U&2SKIZ*%p5z-YH~$CbAA0znQx-0X$vtxyB$@OfmLAQxf-l9ztR?1pu>85zY^L~4M_APwHmNVK!60Hret +TcT-^Qu@X=J-N$QD};?y4MhqKNEJ|ep-JhG4}r{6FF-6O0p>1e-BdwC8r4H85-j>%**t3pLl&thd`^m +ZJ4&T=t8s=7N%Pob4j^yPK?K@sn<2Y*UMsQUUp|W8G3Fs6)z>)Fq{`spWX<&~o(XLY5&#wQQq? +)l+lY0>E~q} +?h0z98W>f?2O2Qk|Gy&0Oz$^mvA_A_Zc?x`q?GmYvETR4i_*J)-NkkH*n4#_4CgKs6%ibhNgxWa}8%1 +zi$H6c8W@OR0R!!5Si%pG-*0 +)yKW9NG!usdjOF`O!V@q4=Y&SwtLyrKSS~_3jo{TnopZjlaOg%EXtM~95g&qgK@{Ary*zYKq!E)5(Qo +RA`(65s9}$ohIWnqb|8Ioa&M42RL`qqqlMlgKrbOELXIqW}6WP<+i3_*Qb{+n!92gf*^<8g +2-Q+wRflw&n@$Fu~;Fbl_jY6amjTMP}b{$(M|K?kZS5uC9Mcs_E46Iw#s{mT_b$P+w2oR5yWbipZUi9-!&loAE(C(fAGWBZ<%01k&aSZ +OlGHSzsX|cf9TC8pdEasagMt>@qN#wLR_0YFUl}SC*hS0f2S9tjg`i6!N+R#;JodKDOt*tnww!HA*}f +rDC*CuMw&6!{zDOYhw5h!~N4}0KA+)MHgyE7P5QowYMmFiscns5HrA|k;fKrM7nUrnr;jD*a$#v5y%! +EEIi6P{toy_yc)TI5?$YSr$Rwq23N8?tTh{ewXtamVjr>X>9)Y>Z%A+GfA((&ctUIikjLo2aCzB!x{3 +-+8Lp-1p{}NR%WyrQB~YaeZi*t8B&n@(Zvj?_F_OHtFU`iP$vnY^lGmwd3s&}g$j&-l9AutQU!a1V8}=`!?>%65YQ@X>|>M^qEWdNcH2F|A#ULHlYu4M4CA|U|+zv3}rk|V&CYnSXgKkXPYBPOD2K7A$l1_XS`P@&+sB}v@4kDX +W#~_`D5lyP~FC?7!+?#mfa}r9N7sh}h`K(brAClJsm*Tk(ZZkxZ`{A>Cc%d&{!j4uog6aj(iNz6gL75 +CCJD<()5~S8C3w&YlfQn%w{AQo-IAv2d78Rum^{YPXotS$`wiE-up~=j4uv!XihIAG%X3vPbtu>C)H!p4Ez6d4MVx_de^HUq$X=|eD +OF|Am@$80yk-Y=qOx~x<7^DVDL4L>tqvJe-xkBs(z$BW18Vdtn#;pH={b6Atc;m-ZCz>m$w#(>vEOW)J0IjEgR-?l_f>%i_`K61t^N0qtJ +FeW#}}`n*J>zLJl?=Z^})?jH+D%r9qoT6#cXGT^%`IcrguoqMZy$`c-RR)^0o_>O>9GCC5e +Xzx$cRT79oiVZ)mpdy(E443#u6s!S{&WT^Z}XbYlrF>RO1qU_mFio8ln_M`H9iFLO3z +Td`S|`CbJ%aF`tyCGV2aN8PN!m?S35_z|PyO<%Re-WFvUL}&4%QHWb`lU3KrrZ9f{`siHy${HLLF7JSGpmdmxKd($$*W8_U)B;Q7Hdrn6|(lG%SZRn3us +H)gjFkxO%YgJW7!56_f%r8tZQXvwIm83=TBqADMCn(*vVs}Epfp~bN9=9F9(qf&kO4lo96_+-*xt*`- +cIK3MYD#F^k&$kYt*Ms0qTCIOP()70tvuPIL3)G1@bMZ?r3u_~s=I7-z8O$ZF@_MQ$~B6^6sIjHc2Mc +nzIhjAoQ$KIT;a|}@HoHF!8os{?XSc7G_8~hwCm{#J|}xR#AWP(*EczbvzX*A90cLOQ(_P95?}>nzqr +wJ7yE4~uI24;{nItPQBVlCMh?c>a4_y$Kf;BR!TFWFNkwpDo^_{JZKRsc0CLeW?$iq*I`FaU&Bapt{H +6?%V$j7f#Qo@0Yo$>taA|rc)T7D2+OJ({Q!C@0V>nfuy=kh%v&SV2lz&D^Rz7;9DsBCn5?yP1LSd$gM +*Q>F5q)>$EnCX9qpN8Z(hfjHYzStDcG3Bt!rL`3C6n@XdN{78N}{d#lXp(E4&9RHp?G9R!;@1g7!>j1 +`4e?mMgBUcRbClUcNm3K2S5Jx+f%64MpQdTRDx#|;0oe%S#cNUNr6;Mg)z}yt0}f4SmzuD8_|&$GC}Y +w(#nXoBeS*7y?72YkYN7dhc~drEsxeACmCFM(K_$RXAEfZW#FBo58UV^c&;POIkFH0S)OPZ1x(O(-W# +|`Wg~k%*iVOIf(%rT&R%jfq)+v6F#ERyPmAhF{hyBCR1wH*bBq0_Rqquf+?th{R7_x78zKdMZApSFe@ +Xk&^i*+WQIAoHXxBnJmHd*85HAy~fFt6eG;W7t;hA}VB{If%E9t}b7y5L4v{!+bg0WaI@be{GFJAi#w +#yzF3sJ +^Xkh-UH;j2%Cs-|3>#*j;zR8uR;3;*f_juSLE91B0*JvhoV@56EI#{3z#Y2Z0E`a$tSJ5V6CZ$mwjqZ +bw#@K9Uw;4HeYqjl3+n)@!mKn|wMc-c01t$huqk#Rh^=!u8nDYa +IB%T0^{y#qTjb8PUe|85vXf1p2E3UrjcoCs^-h5tJ4VIRr1CUcB-{)d<)2dx#9@`VG<+sW@JtI+mFZ6 +H2OM}NBLFT@_p$C&LV8i6W+r=p_~$easOA@4epFm@(J;kAys?x}T|}hq9COK +8z&2KMP6UmwBY!GDCD(q=HltJ&&w^+0Kraa+_3J!|9UlLm7{$(ezVWgGtp|T{(=>_fz?Hp!>;vFR4GE +7bieC?&ydP2Y@TFt~0H=HwdGa309?{??BeqAdh+#KaJ2A26_+Muefi?3it3XNKO4sJ>~s2rc_ZIP(FE +!v>Q-9bxZjWzH~8OmpoJ)X;Hh}E0xeXypLE?-UrEz3h#vJ#wg##GvotvD7v5Y%^=HlCoX)~0cOr)r|> +}%s=tezQQjoc4l{V*^i*>KT%pX%**!Wh|t43mWtcM$75ug17kRCI9)6aeYcjb?n4-P~mfY4c +(woaqhay@c8wY5j1xE#p{noF3|pbDV(ve{|u+!yx69n`Ju>BDyPlU;=3FrV_Tz{3uTT>8}*lgtRYJBH +X|-vEsnl-?SpGgys#_~M+|p~G}NKv7j6r3{vtY)xtrq2+hSU|%Mo7wJvsg5(di%m?SFkVemMEl#h3pP +pFEiU^wZnZ*E*3PLHG|R-=kg$LjuUrZ-<`a? +`DE#ZZXj2)1)J8|T8<65a5p9J^C3NtL+l47X2mxGdE9w$aTWtey2dNT3urg>b&he`pq{rXgpZM9##b(U92*kW)d`)k6vTH5NdW|TlD>s(@XMOy_EeqY%P4OO@+MQS%#`x8LBp&XqrIC(aTP +_A&F+ywy4`IjGW)NmIM$u3(p>Y|0fKgB5H>G2hVjjC~ee8kAh`cvP1-*H~A(+S&-Zt7z>7OZ%N5kRyU +;bk{FhN=vi)|XGwjnyMv=_Wk2M4Rhy?E&5{)p*4w1YvF;P*c&ASb&V((rs8*>fkvCGhr1k&+rY2j#+= +LU#+e~JyH3>y6O$jkQH58CFolPiTb^I6j=WFCT=tcxV_d+sOM>CN1*-B=>D1Z`MFlPMYuf4*6cE~mB-SxkTN!==`=I}zzrv39 +2X-03RxM__?u3a|CKQ-l))kHTNnO$s_q|@t?BMUrWFz$yAU{yd7unfhP+GUJ2h62VnrzxO%H#km}pgn +#8vw9Pm?7_&=_Q|Ic%u%P(?ahc^GGstPIwnnxIgu}sCfEv+X(C>1f!G5vLY@R_Uf +9qcYrARy1Hwt?)oBOLOW=cf!PzV^eIEIMFtlBv@+tL=M7=o*g>J_%q6-i-lf?A~8j5XUvv;aEURm<`O +#wToJS~nhk7sA+21#>T9+InH$!I7|2oHm!HE8zDTtqsDAEzK<0U63`P%{b)!8w%F%A{@Y2sFiwfaadB +folMCSZmz80FDSH(19SzV}nW(R+IRh&6uT*2J|I0Qagf?tWFfxlN3vd5j7CkJ(6uL11kr3w_SMcA=7!JbJ1L5+{;D{$#?(&l5+FK5RE&02_aUH0X>`wnyf&Sl%?%Dh8?r`)iO1jG~kg*RNC>{$3PMLX&)Con^ceU_jYB^|UDustrS=E +S44YC1@kHcAuE?YtAnhR+svXswB3?Q;FL&PI-*G6;lcv>Kq3tx6ZLPHViC}}8&0IGAf4*dUP?>)(hJ5+VcG44GIH6W47e%hpi<~eI(s{-(&iLx-kf +@yHxzK76XsaSa=h7Ys%!}=URIf=CzY1ab7;=YQfnWT(`Ks9p*UzNBssMnJ?Lb|=@*)m$ +SFv3)ZKHM2Dv6;jqgr~BccaF5;>bhn=*`|d!dJl^qtL&t)rRl#=w_mPFKodIwg%ju%3M_l3lQ3lTFW- +7278!Dr7rqLbdq_C7-NhICN3~Ev{tww9j?oRR{TeyGlA1RwKhIbujJGcr78%Yu=plf2K(jJ8CVNC#{A +rt2*<*PMZ9W`iUvK_quuVJDH?}SKBHTrTy^fUO1H)FNOm#^E+8g`W|iY88lw?-vVAG*@EaG&vm)Z5CP +~gk8C6NG|%7!@JX%~UenMO20G*70>0mOLVKtWVa9==TndD$Gs;nfeVi>M3MbIPvymGdiZ^kT_16`?4ZE^KPapjKuqs&khI3TJ*#G*#8t+|$#wn7}cafP%EU?YJdHGm$8d6y}p@JB@#J{a_yVC_ia +(SA{rL7IBV@frNL@94tivxRp$YG<{vyti&w~~|jvg?L16k#CE#Pc!1{thF2uS+(dZ41-T;HOZWe;wDP +6CbWk?^?KAX0BG~m328dxi8PnQm1Dpp#dHLy>TW)2$yEEUpgR$29sogq6$a>6spim?|Kj8;j_@rd?XK +;KoR2zXmtip#1UJO-QQ{z!)Mld5C55up`xId!sZGC9g1`U{jT&#KrE&CfF78Pm}jVUnCu@0KD`Q$+Ru +6?_pZLbZ**yIA{FOBv_MzeY(zHObRQBF@P?QF_TxFW7N9J?U@&+> +ug14gOEQ1_@yFoR_g{Tas>eiKt|3Xq3-rCUItLj6@K8Mk(8H>4*Jw2Ybwz`t@No=$xGPazK^_1C +3s6$tRgaS_iAWGhTB)Hjn&pj_rczTsZ{SVE1sy#!yB02xXD&@sm!*>n;q)n55LN +8pI~@;_3&v@@19{7R;v>^QFKbT2%Z9qxxWOvbrOCWiKx-#6%t!3Ys%9d=XIJ_lp$DMOv+0#$ +)4Ky1WSLGPHIW`1O!n$yN3Q|UBjnb_3$x59|PbHOr34MTl +6MGTIAa!_&Xuj&{GCtj-9=%1?;`fbCx#4?8CnHo)hGh_O-m6ttzWhs7`*nbX5+hUAeD~5!|N^^r#jFW`gA+i8b7FZ}vS}4p->nJUt +7=VX^==HcJe@sQYLVN}gBD>XpgcVK{Py#+!ij54;;Cm+K=VY!-x^L6Zd?b +fi>0ZbWPNc@kjE;l<_Ozj*!O7t!V4KY#tv==0yxjY$63Nv~DFHuagp9p@chy3$-vuBIOf@`OPDP&9|d +3?2kMust!H#$>mloMb2PgmM}YhDJmuP~F}I+jh1y)$u%|NRx +gh#o*{vbyLzEu4ES-b4&^aI+UB!6>RoZI~)Dr=>ABYp)4JHmqT1DY77@LbDY9azYpD{5F9+_V%q_6W0 +Ia)>2Jxb#=lOkY}uK%l1D|}H_@7&GL>M>Zn)jeP%x0|5;VGtF-wx=cduPZFyN}swaPvpBPZvK&Pvpvz +u;M$#Cu7}z&%A@29N9Djv`<`-Bje83{NU>76U0$<=rsmT_=Do7^g++r| +PEJqs#oG ++Wp+53Te0uVE&b8Y&NM-wRb^?ZjtELU3c#mx8 +W{B5l5RuCv0)d8?G_?0K(C-uz9j8c@2`!0z-WLngbOeLf1v@0a~Z=l7f8LL*q*P`@ou2ZI!+a^RYW`xscNF0?6~&?CU$~B)`5x$I})WtotdtW-4S7{q_;UyB=c* +8Dx~#&du}QBM7R5=w_w2Tur +H>9H6HC&9Zl#+-zjYV;>4bl}r{8$+PmeqY|a4&DN`4i?>iqeKg=4_2D?EN1U4DIB1A@?c&IS+5S)@Hn +}92VkG3{sR$tWCSQGFvX_O7C!2dfjXhC{_BB8TAVty#Y_)aeFH4|E@NkwI@5-?v{3j}-c6>+uoC4>qV8xqhpIT95SZHrAZMKN3SiuUvR{-uEPhjW@ +4sVUWKycPvl>I*il*g~qHkdGpxnBR30mxdbw@j$#-^Mx<`60U36`J>5HU|1=`DSu*aDqBP?=*QEqthz6THySHAhnpUy*5VYx42?;YHX)$e=*x2oPfy<(S=+kpm +luc!A1T;Ox?FwDoc06QHZNc$|&fq6m4F!=xHTquW$3*IO +^Ci2^ZmzEdI>T}rako0jrU>6i*6@M4sw%3KwI>1!jHcCeunXgOVO2h;rg>GR-|^Us2Z{OOZN@sSf;4i +oHA61|vX`W$-9e*P3yd|D18)pwgbF0183zJlf9y-bnjy&?X3VrL9_deB@h39c^Oka|X$OzX*CX{#;gq +Vgvw{Z`UtnHD@c+GSlrqpS2O!_o)J-E=Q4c+A=P&GXiH-IBvj`!2`nSI$~gP@gElpfzK5jou6HY~{jG +4w5vr%{r}3t!EA%r>PTRq0_C=8pUk1padN(Rkay#`co?2U6(4R0(VW)bPNP3U0?OeC1A*h)1ISscEq? +C9Ie_ESeROuVX55oXz95zvTtg0SUsKXh#FnuKOKv0TkcY>V=;|JqfU9czFm3dVl@Xg{jzRf4b)AG6ch +(yrE=s)8*g@C89uICqbHdHE64JGICigmx2Hr8OI0@Q&s@{6J4ZGY1KFx<4a(F#@$Cgwa#2nn{@jant% +=e|s__0u$74AJ@2KSaV4h9_;=#V2LVncyzm9XVcC=XUjCjfvtpGR!r!p}wM;G_ZQp(NWl@0XdIc-=%m +%8+mF}BKn?!#C^sGtA=5dW0{ +T=kd^J0hHML2Ao}+FMd_s&sjM9--cDHk66;Z`|sEM-xuy^dJUYC(Y>^tt#7KNP>!N7r0|KchHL&C~AFfr +pHZ_tv3xbSOSE365HkATrmX!i*@D&!0ddk6BKD+l!%aGJ8rEI5Yi8jCF!KO>;bGL6QsVEyww+@KL>oZ +xUzUX(Pi{+XCq@%eoe6$%6+5;!*{V?U8(V0T|pme40S=4(cN3MF&5m0S64K0s3x1S?$QATn`uEibDWJ +AR!O|>YJPD_JFJMB=|Bj50J`p-A~`2D*=a8VPz_q;6;`s!W1~)o>c2zQ}*qevYg9bE? +fdw~OgW9I@*iMw8K-M13vty_5b1Z+3qaKchl3FXDsjWJuz{4qDKP`#8jSJY>hCU?AIhraG1tjfGgp>- +=MGK-=m{a}f$aG?3+9{KhqnQqx?r_NCfHV;^hN%BInK2hAA*z55d>zPT-N5FqF-CLJWU%n#U^3h0D^T +fu>!76SF<2PWV +W49auO9JY%HiUzAL8S3n*)Y$=Fw^3Y*d`6B{$@l&dl5A+~AqXlYbtN4$CImJ%wrbB?+7CRc)7>6MvlF +KalVJ5N7SPJ)3Rsg}wsE6mlEfuK-&qoa7Pu4tQ$Xa$)+_IHFZXNnf(X&bOR)GK2xT7x3yi!STtRH75v +;$umF!vCFKJF~0hj&?qk{6Oc=YR>S@pjd>^^{=kNZBawZHQIth=&6zo%#Ey0m@5T0MRjT*Tf*-$%hk)@HL5yEh)4=C<_l&vWf +mlFu{UEaX>`cf_#KHfWC};p5v8ca^@!O1CEX-3g!!$h~d!{A!GD0&2A?cMQirn2+Xv&hq0)f+@hYCBPx(kaB6BSP`668=CDc=oUyt1!JAu#d=;Q!O(= +p0%NS#Iuf&)wRa@o%$!R*YMh&O*;D%{(~ak6gJk}O=X4;%cU2dZh0)bG90e+0Z+p~rU%CeK>@)X(}Qg +%$rUMMtk~ieN21xkZBIT-J0<~Y)2hqd%Udv01?x@%$9!Q?B8pYYIiHk;Rozija74D_45&!AkXBJAD6M +LC>t;aJy}_(FlLz$#_mk;qaQc-E5@*l&-je4L*|ki4_@LGkB8}Oj$Kk2Dk(GF>ruD6W?dTa~meVyou6 +|{GRaoZOWIbjsmD56%IVAnnccsx1$B|&~fJ}ix;kTq|V@eM(9v?p$BzG| +7(F5?TmFsnP?a9;d_uX3yN9vz?SjpxV$C3UQ^m +2?-Svom&5gadQuT7zv>=3B0PN)4-nt`a&YzZ7+Nd~OV2D0<5ZQykh5+EGuOc0&rL@q{Cn)=&?8_zjKvGasOVaA|NaUv_0~W +N&gWWNCABY-wUIZDDR{W@U49E^v9x8)r$IXX|NvjO`vfw#!f?B(bIl +l^`u^rayk)djLrAkfX$HrpioA5x~Q{FF-qNv^!#vh?8tKW@RxQ{Tts5b_P4_KrGjJGMg97J@DAxw=ec +a@ZU>zwl3x(V;5pttiqhL_oB?=ut-Ga!>S9;*@vTp!;_0czql`0n8obi^yKpV=s!PRo}OReOPDu!`t< +4GAPuEtIbY^n@~i+HSTW};O=Q8ulueVAOO|9TWHG$TlS!#|865szCU;>9Ygi#@5Jpnz;|g3oWH1%h-@ +|$-7Mv|}F-iGC`m}GdSc)9Rvqe}$bMrM7vl*aZz6xoca&DgFS`G%&Tr8N+^s9HUU7Ab|?<2lM?DTLX7 +R#_OlcqA}z+|om5m_@7iR_N&MF6wsgTWvO!ZZy6w$HAd<1kC6To%sFV1UT+9A0ZI{TVMl&^tE>vT(tJ +z#9PjLw3!kB2C4L$854z)XQZU0Vlp;ho>I~!NKW=4{y&d4ui9|mzRgHm|74AeW8sI0-+|1Q5jJqdm~JijD+Q`inlizq$c;f+s4 +=CQ-mTFJRBrT9=*pc5aQ;{1Jpz*aV_<{(4uLTf_3?f+Ja+$7i?p>HCqLd7@2PR|^iCWD;@m2@}Rst}P +f6yz0I*JqAaEs5r(iCj_Ip71ll0}$B0JoYjUWR$NAUI=o2^8QH2q*^ +zh=y72t1hzU0 +g1L@+ufl6{6;XbzeY$qUz0B=4yI*;zSBlZd@NJJPQ!1|#>!~Nekg9(h<*HMaQ +gVsSPrm4q-9Z~hkQWem$gn!(Hr-3mz)nsu5wEk!O_L};eUtp@b2hbJ$yL%VX%=q*5lPpH7ggQu(@0>F +T&^+=i-cd{!%P)Iu82qT)!{nycz%{=UH5%vYNxjYOLm`wL1WEy~coI4XF|u9%!SBbG<=h7MeZIL>E9S +n$T%VnWi+QR?FW+k`c5aEo#A3+VS>IBr)hcx+cZ=2>2)2XvBUi(Gg^vtrF0LSPVhHVRp;bqI}YUL`!L +Fd~yvoUT5M0VvOQn0aF9~+L@C~joe)v_qx>L$H-Yr!8H-A-n_dzgx;x9B?X(bITMA^tA}<(*;}Mlh7` +uJc2Wtr!wvrFZ44$w7GP{;p`CEoMnPqToh1V$W +;RV$?`xgl5u8Rl`7lOboRI)A6e0HgEYIzuKif;+exM>_JdGljF +DQB*uVIVBP;hA(0P*XpqEM`wEf7-PekOkyDLl#(iB$sJYwD-mjBqfky>NQGNGv+$5vGd&Nncg5$t+M= +^%Gz{1thLj_u^mvHTL@H;)-KmiYzr~s>2j=!to8tE#1zp~yLB1RMAEPTzM(?8)0TVEIRCLvJ6fcWI$S +j@aTgzhqFkonzz~o6J0R3`&PoZJLcqs*aZQJJQ)_RO@-Xko4-W7>B?u8D@}QSSQ~ge=)XYp8L(M>4ZK +@OHKxsS}r?#Hz`v$`~Q|qV{(=#z3M{~v#%rQ|Oy4KQp2qqh?B&LG)@uPk@!~`zq3vtK$R_j?^CsZM!9 +8rxExEf8O_U3Xf$}~oIM1>@X1nP_40K`4JWgw?ErOTu&&u5B=&NPtN^1|%G*>y=!p#kj4(72y0#I-= +hR+}wgw%ySOT0+81b;V)(z5(^?qcnOK`a33%SkfBmG3xp|rhRh|O3S^mA9w`^T)^EHz_$a_bYdOG$nP +dq1rAcU^GzS4#7E{~Gz{2G82gn4)3M;Q${99ldRuh4Yyn_lVCLCeXJiH^JSs;4FXLx}OC67XYHBiVTB +~*Mi5DdO#0>DmE;{{ZDi!fz8&qY3p<~+K^27>LJHMISG<|J8^mN9q69d~Tl0(NBB)^*D|7gCJVumU~Z +)qhd@qPfWTFY|I!HmE};RNxsP>pGdR>l;Qr0xW=^fxN>KKV6SBJ5Ao=^uuUK1XspR6=T| +6G$Z=AdWrLU)pWyJh_9t`uftHY<9c)?EY9reQZtWscsi_0Dvos$1lb=H~q1N7 +}ukmeaiL;mc0BESprgj{RNDvw5G!q;K7aeI415r%*2Q7s>!S;`+ueag$&Qz!Ee8^jOF!4CN(W;1E-n+ +dYdo_`7*X!vIn9ftyaCRt>TLnEZYg23YL8Zf0gu52DI5fCNjwRjNkViQ(SOt_cAPsvYBKq-is+0;Ury +C@=Hf8p6ZP{b^q6)j!*@Mk{?h9g(GN2$bQU{`;jcx)YwepCUNMh+|U +9{3LmG`)A*)@H|Ft3OoX+mH3t3jQQpVo3Kucdw$?~YMX==2ECG`iO%%&KnE`#A+2)uyFxIgn5i36_*qE22M9E1 +0rs55IChLD$8h7sL{c)OFSBf>^!y1(lEYb~taMW4naAMG>$E%bi+u+po;UzqhMrSDSrc(s36@h{De7# +!w2O-E^RYvoraA3$xWoICpbG7ak{6Xeo4-dhz}*Hfde+Y9-<-;Q_`?(A5aHG`Szg@7$qa0ne0d0Y?|9 +pIYiR*L|{O+l%;m`gE;xhgnHv&@cm-p0F82HlRXB+^_Yt#uJF>CqQ0b?e@7r=v&Q>=X^w;zn|>F=*fG +ea+mLL$=pxPQ(f3X_Oh6Y{yDmo1p_I4OuXxNyhpx*$xT;jBuU6@%$y`SgL*r>?TERK}{5T4B7(O%Z#n +b!%uZXsJ33~A{#z>_Srg4z;k*UhKE*Tbu;RYQ`4&N`64J8g-h;kx)0|#UZaVpZ}s9`Zb+89(c8!i1t2 +Ph)&lz!n_lg2ki?vn8cBR{MpGx7oNp|Xj;MI79g?akK^wm* +m@^#8!y&Ctp3vFat(GPn>+Aw=b2Rh{9XJXTPUvfWXc9>nvoG-LU_F)xyH^}47Gr@X+z}%VG-L*I&iaT +8qV5cRYSdpyPqNP4l^23uSdGRpjS>CdE3L&UMb#myH?$}hvK!;AIsz$dCyiU3odS^D>_SgFgxihiL0s +>5|wxK+Z=V1ug>#3zwUvAT^09G6JVz(7F@Y?-5Tk(iR#?KRTmJkE~wf=G=G{z8`6=6WV*<74@7sUZ$* +8CU5#mrV-p_Xy+y~@)BJkg`QcDqlC;1b9e;m{p=*^3;20>n4Ii)CIt4XogjCs@;)Cj9C92gmw7^lDYY +mbrct%wQ?7P;dk_bvKFE{W~or*W$t+5Bj*oDA(*^JXoRP5NPC>?`{3RzQF;|NPFK-DJn`-f$>RiH3nZ +dB%Y!8l!y^^YRR&s*~A4GNzK2s>=W9sI44v|BZVYL+ZZZ3OgosBX}ypO`ga;E$GwXnlR%bQ6nJ5;grn +9enKYV>m`5FRp%lCU4LS*mN{q1q9-9;^vO)zIpZJ`r305p112=`%u0NQfq8p%1H?4tSW5kYeKx}MjiMz{0B2|*Iy?4ES_M72DtCw4#3ujj%e>0pnXY!n!zC0y`EV +Zf{8PHYMMjz5eDDzWzn7xu6GfNx$$W2iSXFFrisVj3j2y$i>0zr68AbY +aXa#lB{OxLexysF>Ayky)?T7W%$MYXQU48g?iHm@X +PEJmu3#v45+X4?fmWg|=q(Dxjrs^wGn$)~d^0cC2*U}v$CEIcVf^tDFRu|;kv+r`t2@YOM!xrS+ZT#b +(-)5HQi2i}DgY=OrYK +lN6WtbjU +iRm0HXB-1n+;i#&oNkrsYWpq-@?ZA>f`14hxO*-hpVgA$2A}nv-0tZB`QvmoAOn1lf!rV^5)@X`uj~h +Ub=~Yzd4yKo}_UaMGzfi!}X@(a44-3nJyv%AHF3*f^M1%ZKx<%BC~-ZQUW1}5a|f;12VTtkax7wEb1- +D&u6#jx%ehNiT#;7W;WhBI??`A#dKR4w8E`@$1tyva%_eiV!A|;JJKV04(?~7OxD*)o$r)v8=a&eL7M +hu(##|d4^}8Dsx?{N)2hWlOyu1cRv6D2lLddT_FNN(gohB~%n>o4euOJ=%z>VW`KP*gMBt+_dOuSkne|x3120N7L&7ZRyf +}u1_HNbk&2T3)>0IxoTizx)6tq-wTFavYz0s24ZV~p$&5Q%2hHp6&;s)x0oJ(^yuhN!~ND#Q@&MUir0 +bUD;l;>jrGS+0rMr`Rknu<1JsdIp)E)x +x(}waK%>lx38j3%)hTAJ*rlJN2 +#Gg^GG5bjFNM +X}IO!VJ57@t{U&M3iInJbCa6sZOZ$|~)(NE_;pI=>$n<8j +(Y^M_%9Qa28zwzEpyehbbT^}`@Z42#}monjED|_089uAE4Lg)6+h9tuBntqXx`|g>G-ZM1ON4dXpY-Z +h-VilvHF7(4yzxY}VT*EQ+HnbWQ(;&pFrNv>@eTCK8NdX0k(`sTSPZWiYZcjBeKm(mG__eDT*5ZBt4t +F+31I$?qnB_x)(DkNIF%-0B=<+Eg?nEv~`(^h@f#S3HFAj-gr+(Ai!&_+d^I_O0PShIX)rAx|))e~$s +N9yN_U&YH7CK2EyS;91MhNH~W>&K&X+kPa$oxjX#nIsesq+!npehU`#U3U=0Cn2?r6irhd((`23FSLEud|5l@0353iw +D?4@X^WIwIm{qX7i)duJO)xWPGs3t`VN?A2tjUpC?79cqeFuw40qh#XxN^D12(b{P89F}V-*l5x@4`j +!N6t4v@G7W)WGMuw;_=a5U{ZB;hGHwAkIjuc|1&mMKj09s-Cz!!5TwW_Qy~2y{a|S=X?^_kPZwGjG`?L+n&(B9 +i8S!S193DBT<1QY-O00;m^MMG4^)IC_^Bme-#m;eAD0001RX>c!Jc4cm4Z*nhWX>)X +JX<{#JWprU=VRT_GaCz-L{de2Ok-zJ&K&AQtbVyoaob;+zZ55kNbg^YWNlu)~3Jeh|2^9!104P~a{J- +DK>^F7+QcCW%*LQr0MPhenXJ=>UYiAc*!RYZQn3ZW(TiV=H)8F7B%A@~R1;(8ew?udQf3Iq-LR^LuW> +Bu&dT{BX=IDzrUH-$uZKZR-{R(O!Rlequ#XLW7p>+=bq#=Iv#fxTEh^TC;$@@90xhd#*2L#`@in^}2A +8af>6sY#SYRaUV|hKhg83ZcEIoa?9e+1HIzD)P7#~eHHgMFe3ijmi$58(zJ&WSFNajHI0T5!ACv~k@; +8j-FP_|7F+}c%Nk}8S3ZgYXf?uC0j{Nb!+{Kaha|E>LbYNStU@jj1R4k5lnZvT%=0@~_a +G_GVScWX;*zCM9p)6ILr@koh722g{`3nRe$7P-Kw$vp?)Hko3hhQ8Q2OCNaRCUM)=ow^d?Ul6pP_-Bd|Z=@p2C0 +;0|j&XZ5Vgh&MbHzh!r~WtG-g^P6(cMhlQ}_+x(w!nxAlMkEY95ME|8R@4lJu@Qg1^YphKhnTRDuJkV +%9n^e=i!cM3K<%Exs?EzJ9lbqziN9Z;*JaKcR(pWFsmhxyWrW5Nmu9u1*Q@=bZ-L#2Uhv#; +Tq?pk3Z*56{>6(59~o#7A$FEQtNn$(R4nbN{D!jsRyjNyGFcIgli(>F6sW`Y~&ki;=^L2(;(`p|GE#x +v7}NX7v^xPOD)X6_-m_qBhtN{tOtBU>j}iY=5~6ZV#AD8Cd#;#3j!{3*(@i&6a2>mc=EQ9$A6b#+5c2 +$H74{%aDYwy2&sWGit6AjE~BwR@+ +Wd&#Yj96#(H+4%>F$xIk&@IHAUdTEvq6hC__aocUtXuT4{Q9wVL=^DJr_HfTJU5_Bk>HINsqvH{S}9n +=(s-Bqej7h8v*&SK|UWg*5f1{pW6BLhdA5LqWWJp;CRd-( +0)>+cVNgAU7r4QzzK$!@a3zy$jpCkvz+(qX`{S(Knt&vPc}PpHw-8S=F-f=T&*liaza0xXb-9>%e=NA>>xLx|AywSRWboEAHm+0KoK1F2CiQ +N!%0%UDvUNL2Ebs((0c{OAWLwgiq8ymf??{QV7GD>NNREB#Tx48#QZt2OJO2R8~qkHGM0H-gbg4I)so +^as26MoVr3>)izzI7;^V8uq>wk=Fcf>ypd3NP*2bmtG?c +AlIZO-SXy;{2I#LMLgA`mu@zphy;ZGGo!^Xmc2B#+!p(Dkme8zM$IDzU#)P4gPI{fDt5d@@|kcO+}6H +%TU_0*j6DRt@Tgfp~KWXKX|r(GBrbYP6Wk`A=&{caI3}49(&=)Ae63WR#Pz_+C(`%F^bH{O#evv)9i}5IR +6=M?gD5uL$JT!SONQzbntN`v@PtICwcd-ha^wrG%$H?vMVSjQ+Vj`s4WQGaWI(4QJXo1~H~QYYaCZ|n&GxN$YI)5#pOeSU2Y?CnQ(Anfg|w_-tbTgizJXmBN%P6;QN?!<*#RUd +sE!LfCYG7LXQL(#j>>NQ0`Vs(849k^stq&RGR=7+Qtn(10_$N^s8}cldEHS_p|$sHp&V!$HA> +qi`Gq`)QitcoWDQm^#WSeGA=1m;h6=&IfI#DR>y?(UZ5s$TrbZf=w(PH+Hg}b7hhFLY$@5o02yZ +-4hEJ)epHXZC=4D2_EhWKftTzuncYbPBI5j|XB`t*a;lRR!#}2>(;CCZUHk?~>xej +yZY#{B@9)Ga4Wdhx2YIw*W~gLOvMSN|t$ps&qp~y5g+JnmCSXmR}5s1bY}68U|vx;+Fu*f4MPij^AD= +`Uve9)G2~h5EZa95JpQdSSb<}{5hDk>=!awF^nzDR0|3XO%4@TCHpwbmo-d{;Q`{H#<7U +DH0(g3{5JgOi +@QI%uY}TqIIU01<6~-uq7O!YQ)8{(Z2SycTqFJ)B=pGWkO3?-iHklBNobn(+va<5R&Wh$W|6jb!RgHK +)0ty!_%vQQI1mpCJU`a-$IpTE;VETWd%7SX<%EcwyYd!(>2C+TN4SZwigTZ@LUVu>ryE(j2}UGawC+I +Ma>(=;XpbT&Mt`I2VAPDZ&OZ4)0kLdHP(jJZn`U$<>?)dA@-y_AomFjY$RHSd0;8wWTOpa|#_Bn{RrG$?U>RO>N47#blznuBbJnMLTX_;y8yTp7mk+(EhYM(EX9cp +=Y0LkJh{=sg+g1S4$mGb~2wuGHtAxyI25%Jb!x(>{&z-IIMJZTA9d0-4l7GJ^H9^+AMV4i;UbVyZ*&u +Jj=_PnI?&DZrTVB7$`T*t)b5AOBkz@k}hm8zwOy!@&KsQP~P|AEGtb}r@ZMF +S3`=>826n+Qd~u&0y&C7b)wjXLM}ukcp!Q=oeAOL1UeB;X7mGyqJNTb=)BCVA!G+KwW2xSZu=i)a>_k +?7+G^%SVEvh(O7|+0w)b+ +sc2&is05roL^`u?fK^1HIks7}(gH2VIE +nF$))5u5KsHXGg+e~6SM;|IpfhbdxC%#I!{V2bP*DNH^({t +c;7ABNohy$cbW2_Q+-hJ~6!?b!~Hv#de!ObfmhG!s_*Fo;l}4|z88VBoT>+rm8I>!F)8$4_s@SaT5xx +vC_l;W^lrx?g`NcxN_4M!s-fd(8iWQRA0;j?0{7VT5P(v_Nr|z9_3m9$Ef=|LE}G@atCh3%-MH2DWAR +$5viy3q~K6j*Pt-$0}0(uK!+Vk!=4RF(#&91e#B$OE{5{fQ$nLF4mM;wS1Q`MLRJgcG`$zy* +C2dCRULs5PNxj_~bK;fvf9)31MaC&xe3pkYH=J79X)l$J=v;W|VIawe-+B?*oA}l4yBQL4+8q>$k(V#OD{=&8;VG;>E +Dp~!jNF@lnP`dUt$AWLkJpEx)866f$`Hb8x-Hw31toE;u|_M5j^6_a}-<=Ra=a2rP*8e>_88LF8cTm# +=F-0uO)`CNpXCNB{6M2LVhS1<3VT65h5dR+tMdp;ZfRYu#dA6G5Bh7*u_wvt4wz*4gp;6m~FM!P+4W6 +|0Z^}bxhM!KxaCw3Fi`JNWlqkrgMHUG>RNgWauC3U@gljYTL+bwOVBw-?Q&u)wN7M^~|aYi25uU{8-x +KQg3ZhlA(_g{5xp)Lr+t$H7wa$uDZ?d@qz*Y7jfq1@uPYZbIz|L|onC#LY>NdmspwHQ$R_7I<86R#t38*-Wzpx7?aLVd?(_wy-EHWlEa +2j@7@A$#^D`D%PQ~KfWcu=99xE9`XG0knI;&$Ke6O7w51%O3H;1i8VEzLh9pg6 +p`|IcTdWK7k(-j{&%CzM-G2iB0>v={LhBv*y@t09;uAl^#&6>~rt9PYoulS1L*4%7a|c*AD6@%=Z`>C4z#PhGylYrdR*z5nb7e +^vP~bgor&j+4;e6VrFH4wDEaVc&BK`l_b$Bhh~!zdq!;UNxut2Gxm4a=z$p3GrYEvl`r1$pRInebj~E +NIw(cWV0)f2t}GReq<3Qbi{Ri>%!Er8Vr3=B#{=ec?y4;{UZf8H5Rwx9mtlfP-yGF|M;U>;>e)yWK}FI>h;fDZHX(B7wP$*@ES;4BLDJ$7d=~cJErxw|Ku9>>kLdDS$Ipcowj*y2KB-wo_!(`OR$u^ZA?_zT3h1TO3m0e9J +_%rc3mY@dIy$Z!5`wk7Yj^%`(EntdLJMiFAV?4R+I2!WUiG>I6(A7asMQglJ#*$^e2VM;Dx4tu +7#ORh=fC-3Ix{IXu4vDHt%Kvbw0LXj!~5$9m6ic9%0d5W8ksK({GhOfE4zxvv^1XtP*($&S|=oDc^(| +~Jqinr=Q4BY8L{3V*=0su2iAY#~0rYT6~Z~F#~Rzx?n4Mb|pKnHr2y#WF=Z>R1+LM;&hF5 +^m0g9Bs7tUHV;+DCkL-F?4oCrmHMPk{hKs|F8@?i?v-($XYk1v=Ob#Wi?|w0EZX3+BX!F`PCv*+b;H9 +@ocpFBn`^k7^%kFa|n_SDJruQGcvWTtOkG3!J>vfJ2$z6{JAZ6dl7isPu>UA +*GD{5#hpOs?QS`D2WY1ZJ$s<^aMj_*OrEq+!h$!YgNBsNUn1W&*CV~2>xGYzmjj7xJ?V96W!EhBdrD7 +g4#L3PIo1GGuIbNR#sVVGJ=o?f~uR8x+C*f%j|wu7qjLq@jh)Rbqv{iaTrDXi}-?;7`dKb7-~Z$SF#2sxnN^02mMC(c+lOJtG4QnwmX +-556_%f9>arAi&bfGCQR>`-kJ7q1(4cJ?YnQV +;XCx!7W|Mh1qWSS%3Zj2SNFG&PFpvtp7n5_&r-4$kiO9M)Hvyg#tJB8wYA$dW;?A^t|H#44-uJLSNED +}f0I}ts*O1N>CmwI!YVH*dnxD<3~fpp9Hyz}KPJ+V(A3mJ{@T!5?D(26jUnqc_{tWs(T!Lcm^c{lY9#b9w+B)m8B^(7w_Kf$)M&cQucq(qn8uLfCP{uK&eA(fQ`BV#!xrTCmru;Px1|f7&S1@K-0Heq& +as3KLytHf2ehW@FEqV~_RxY%&!^t($Of>?w%J0mn)rH*wnSO-(k+uP(Dnf*BWaAE+wHRCD6)jf}ld7e +7t8jvOylRyXMSj0A;!aqC!8Mk~ymyBz)Ju>0V-}hQ>TSspZ%6XYYrgi5UMLDOgVP91ShbyS=JLJpd?L +Q_fu2ChZtxFoR`|?&L^RxeRPUlz!@NQddQ8usA4Og!-&WEQnb`{Pz00#@g$Wbj66E=iUS*Iqavu=LHO +~sX^cXC^852l%0K?lY&KX@I#@~ISHvf7!jU<96ZuO|vn>3sbw)*d$51Ec{t2kS^2@ZX*jJt4T93Cy1S=|Wu6toYv6b-_p(n-#ZD9qjd(vKR=Uug_hZ^GBDXiu@p~)NOxmX=s%sZr+M6aNr0ArJ|$Btel{&Z?^*U +@HscfiyDt+6C^4bt9DYmsNn4Bg^)I$LyDNi(K-qo=wnX;n&0t>0pj_ +PszlutKk%Q?b+=pzRfC*R7~zM^Li34qCy>d$=Lg_}VGr(|B4?v>Na`z19-_`j$WA>cx0PwrNb!WlxCz +X&AOnD^q*x)^6%c2MV#z>s#F)&k%|tWfaG$c$JQoD&$F{iozNbfnuj&D`jY4%iR*hXL0R+?syoTkxTHa2(YGqyBV^-`vA^YW61m=^WA)2y7KZpqBjMaEpqN&h&7Jr=^@}*zajM`d>+x42Ymu40wo?l+qjT<5y)%-7$`JdOijnZ^OGp4pjFU8ts)uYfsL)2(d4PpH +`hFyANP@t7!RDiS6U|t9&j2(DIZk|i>}* +Zerk-nAuOwjzfsAunfO|At)^DGudu;WK +FTI8pV%V4xN%N2{WL7E@l^vpVsmvmKF4Wy}@Veq=gx`(>Aw)nj4F^YJ73)|g>%P^9c5PiF6iDbaN=-7 +r7r6-!)$j9wH6&DWr-rc;G)gl!9FntbcH-DmomV)f9715LVsv<~J8FlJJgB#8sC9(ZjWEoD&JZ_J3)OmR{Kiz&f{-f4)8lLT33vd%hGe)%|7M! +JL_%Dgcb!F^zn%(oPGo|Bfpccm!nsFp;$6s*u_}N()LL=&%r9pknuRTE4RD(^Vo6J){p{jQ*D$ufd~I +tE(JooQOk49z5fdNHL$YoqL(KU*8uHJp6Dl{rhq?m+l_695)r+2o=l^oHtBM{h*IOYC0Lisip5Di%Q9 +luA&6VteA=7zg=cW7Q9jq68#3}^P3PFmw+0w*43I~+dQRlo*gqI=AMR?kKj=n})qD112d)LNFIHqq_| +8lS%Yk;cLz4V9xpUqfh#xZ9K^f3alnJF{E7r5?%A4~|S!*Md3j9;45TZKXDz5&-+sAmj&Wt_<_vgU$( +@kQx&Lp;JJO&d9Ouh(QI1X$b#;!1lfqO)}k+ty`{6Z!E8MiSv+Zoynnp+8={>wVdOF0X1Szj0xCBLy$ +`xyFFt!6e1)rQJ4M$p!a`VJ6Etm(f9WTgR*A7!nW0Y!EFx6IM`A5cpJ1QY-O00;m^MMG4bz14uQ3jhE +_DgXc=0001RX>c!Jc4cm4Z*nhWX>)XJX<{#OWpi(Ja${w4E^v9RT6>S%xDo%~pMs5XuzdBZyO-;=FuH +9oX;K78lS4Ks&>Dt9TeQurED55#yUyXhduN6Zk$QN&cQt~nEzS&QhV%H5)RV!H*)?axBlZ{_XwP|M8zR7W>bA4}n +We3hmCHqt7^R+E27RcCVb>R~NPG~EoNOiQxn>zzoGvMNeZ)yEmziaMc($%-p6V=wXhXoNa~*RHLyG0? +rGXHk;md=K_dN23vO0@b@B7YsgQwyp%PVO{QbB4@b}sYsD7<4Um)LKTN0gVdd#Gv8Jht;_a_+2VbSjdQ?S(e7NdjT6*2`5br6a{ID8jB%$X7{WX2F)-(SXoD +4OINRwgcay^FsTGLJ$>MbjD15lt#%(*=!9rc)iQGx~+sN_EOJ4E48=13@Ks~2Lnt!$$e`YIzKGY!-x0z8T&4}Mvv7sr +gNG9_}EswVnkUTl?RR@8~*{BX{O4`T0R*rRGg4jErNt4;Y!r6{jDT8=kWn$0f7mfe*R5VlLVOYhMa|h +h|PXUF%H^&qjQg(L2l|S}4Qs!V~{~Vl8L9ky!QOCTL~8DI#aHpHW&we@ ++3zA*(?!%6B6oQ$ut?%AliTT~_F;o++t|B$ZX9e@#tr2jXCu{L#oWPa-{0NDVgRMeRtXLg|KK8tRE3p +xg6X0R+lXosuUWpsXr8b61|uxoaJ0{y^7FJ~?^BC44K@+xieuSJs%_SI~7RNLI%h3tTIL{HTRmzNWs!7RUPV@i^$z{R85AQ9dO+oZWQHt~ilku(r{5(q0qJ6z`Eq}PB-L=!VFz! +(5YsR9l55N>iM0lOTVBFQl-p^xurB~BE`Ak@einlEnZqj3qjgENaeFfK6(nS?xB-O1vB=I|PS>(D`Ax +wtn1o6-Y;%xbwGD2FEOycnSp=v$*z`+ExrIooj|6U@Q3?c1za@l0ouUp`&;>Q+ySjzZkiNfKS&ZD)E+ +K}xi?aszgIw2w$t@~b#gXhYfsb~fnx(ySGfgaFP6$U&8D;GOG?7JWx~on&EIvaw}pOuZq5g^_|7y%tU +TS4|#{Ond-ETxPrmmVFFWpsE#?+i3EI-|>lG*luN6f}!G}hOG^hX$4-2CUJROPoN;f--7;<))O5?VT( +COf`>L+^>$yRhpba+^;3|ezl4KX!F3r1|MD8(uqJ}Jl0=Us3Cv6=KICj6Y}?*@J$}hIBP(sNhO23#$Wuames4>%NKb>niYF8Yx6sCdJvg5GkIcv?O9bJNpSCcXCb-2{@5ioHA!!o7>I2;Y1Ep`HPVxcn|KBWq7No+2@E@2uT+9}SytSOG} +?4Ri)M^A?045#d7*7ksw5LS5`)+r*b0a|)jf?OuG@vCJ*i$ti;ZrhxXT4AGssumxP=B{95?zd!?Tk0K +$H$(fiM;N92rnx;zBo)>%D+do<_m`(pLnJ{ea<-THtWb#Q`>h$N=?``TZRhe#aF-V^2fG$0TwxZG$=uA#k?PC +jIav9`sqAig5y8o7$*B)WX=k3|)jif53UsG!2oA#9xEoL(p{s0D8b-(ORnc()T10%G@_~0AmG5dc7En +WZ~M;v=>)P?48gl04R4;$ipHd1m)|2cnB)*}WcFL98Uk;XqZsM;XIBvrp(Jn5FGW1ttS +Iko=*XHyz-JjQv>aw`BzVHd#~x;)h_-$L}~P%&wJ)EF?8L;c1uU>gY)^r5UD6cZ +;WayjZmNCqMsU<}_28+qllof+E_xwD-0coEav)sc`Qw&@+7t@87_O#P+Vfd$n&b=Ip7hd-Wm^;I8F1_ +Bq1Oz{=p9K<8^PzA%isOof=p6N~j7k?m2LgZmb;O-ww)9>_Y;jk}Y6k2{>!RlMEOTY3>ASV}kP$<3ezL`bB!!?~jQK8hS%5{ullHh_=()QHdc-=C9^HJRkwR2KZfAVGT7fFNE^v9RJneGZ +Mw0*e6k}>t0Amug>?D^}MajyxRLfmiQdx4=d$x}SfWrM&>Pfve$Pa_9x^v#Gx>0BhsV^*le=m&h#JLny-S82A*#d4*X|7yUVKRbFcg1^3FzlbE-Xc%eOr%V#vou%ie#)PzEbnq&-bs}gk*a=eW +lzHlqI8{wiq$Uw*M(RP*_5809f +&!%v-8t;7q`4z7FMREuuV?AQ~ee^l>QH!TnL6t;0ktxKzK`i~ZDN6{yJ^Xd~3tK? +nczdo0USAiGTS(>z)UWKxj>Ht&D<9$w-uPx^-vZq+t}+l@$GJnxTx>H+j8qY=}P7h4kDFw0^QX<3y(- +yE0B`9BJglZeWIjYfzUNRL#LWRX5{k1uF9B}lwSsIX%`zs|)y2*i?0=kXcw7ZADN_dI4X{(aI9@Vn2>|fF0XQk1OnfS>uw#KLO7JPz#ayAQT4-HWS@3u_*OfNEU^040;YfkXQ? +mOVBluaJCU@1-hUiC3BJh)^5*9c&qjX?K7HeVU?0 +_|;G4nEfA9vqn^$iq*SFK#vp3flr?&(EFg(~{ui6R@Dowg~=&#dx5%WQ%nTNiaV0JqI51;bjtfsNPrgNTN +?k_gTBoK?KRv12UZ*^pTj1?JgcK+}~E1Rb)YfithBvppF-QIabAnS)Bdxjdm@FYX;mhL*@ZSV~)(Q0@Q9c}60W#&fcsEX>h?Gauz6NjHNb3nh*KK?8*cUm5cd3<0)$BZByZ0a8)ULlAbYj*^kqY +iC?N!%<+os;$e6M`B@2y$qZc^qi^UYxJpzZo?GydMy%P;_i(O$rYc4$x`ZJsNK`4NQ9bBeaYj+(BL)& +r5G|`BzkYU59jk~9D;QK+RBsLyx<+)f1Yord6Ar)qtPFN5srD9o#6VG7~ncVy$m2&|8NJ@>%*Y>hdan +Y48}RX-Jw8$2nj;yxv!!)oy{m5abF&=iPDw|EtrJC5KSU~C07h=H)k_}EKJz-)y?F6(AXs)OoL9CpUQ +wF7L9n8O7Y+gkn_&-&*6ROp*D8~R{JjiGi}0mk+~0Z5ki=N1n0{4(G_^_gTH%&#=xoO8;mnIfTkT5`i +9MeUSpn+(?r2EdrOJ(Xq&wTvh6*)TYz~@{B?8%;tG+?2{|qMktNY6Ct<93o`kO3(jsn0r)fq?W{D>lH +1iN6Qr}w^0tiJ?F(5Rpy&j{0WO=w;hsR)kK6 +p&JGH|kQ>A2%=R%;gJ1|>A3UL8Z?JbcNMPFDh+Kb~@x*2ddXYue9&8bEkpY*&x&M4X@_O*ZYcM9_8RS +z}H)nZ{snq0(ZaVy-&V&NUM-%W&zIPsqSZAz=7CV%lL(%7jW +&ka`$`p--vAI{Y3$e8v%oUIJ}W5$mKE?kjMFg4!tkHyM47Q +^eA-jXh2p*4dflHZEk;y$Nsv7FBvW8a(ZM-m+#OemSU4_XVg@%6)^AKozndb9l&S_r^(^HXTg$iof$9 +fa!bb8EIN@d66@n*9LL^3Mkbuj1S|Acg&^58Lg_Oy^=vx)IR%#)>Bbx1z~k^pJ74A$wd0)oyU&6i_yK +Z>x(6UJlo`(q`t@j8rFo#KIB(m3%aRlwnDgXUl!hBf9X4C;HHhpT +z4|D|hrJp@ +dIi06jYZ3n&ZFP%3_HK*QM#en1|BRhAs9EEaQ2B3~7i1MvPj=G5NAZ&omD)ZC)4KXBoiqObpjP_hNpi +DzrXsG=OAD>fOlH|VTHSC@&MwZC-X=-Vk+P~SUye`e=GB(MJh!Y!0`ul#ay`FirUV;dFb8h3v;h+od$ +-b}78zeI|?XlMeo3Qi~%<<5je-|(e?5KXx8jwCy7-NOzTfTm_(4N{Vu?f@H>6?WqX7z(j2u*|V?fwe^ +p0J17V+h2RyBVUi=PU~_6Z4bmIq3fLUOX|Nnx9!SmU90}DqCP|gWW}naK)|yOV=SRk;D|zE_%Gtru^KS!o8pB45<%%H=7_L?5qZ}@I0t>|PmUcISh?XZ(D2OtL7CZUiU6vTF$5O~7Q> +)Q4ZWE`QFQ86MOvj6*^|6+a>K!+B%i__c5C3|&xJ-I!-U>9e%w`XtJ&7V)-Ub7n@>bs{$XMa2!=&)Op +jPlC={qMc-Zr+?;G@*F}?%A`~=L1b!wMl8;XdM7sDIg>U=(DW_uA+}*cusX6LbyRO4DAu4M;X`>GSO8 +4(BYiT#T<#GD*`~X#0lhuf-q)_{w(2m&=lrd*q8+>0`k)RAX`I)1e#<}j%&HY +Ct_71f?eRp)s<|*zE?bSk3KmpqVNsZ`;BqsD#YgcscrBLH8aX$a-jzmMq%$5Z3v(1?ZE7il!~>|Zlx6rtN7W#KO2jtt6^2w)*fPh74-XHppY%>} +t$rnvXvP3E26ijka9IbSz`>A8xkD0~Hbh`_g5;dp05-W$3e4k-1M6VXo754xdfi&`(8*g6Xlu0ywyJM +s{!RcoWYCn*-X#Lxzot=CL;EtH^AO$4FJWBh8SP-qvx(>*=7X{};ciFk5yg#q?4WI~3_tOJnY4*aY{; +TQDgaRC3e2a%hBdv-h{5n{X>6@uEu_*kaLt!_ftkAAkIRV8x@dztC6H$M`8TuZacp`dtGw=s#KA5SAr +u{>X|Q!lH)vJN&5&k7SRTYZs46K0I$GgyIh_uI8pn2r;NBu-4*ySRW}wR*Uk);@%W4%cKum$e93ThY; +KQ>|Uj-5y0328*ge$vXz$&(Sa%$2bWy+Ct*^ycqYQoIWt<=FB{=^Y}IkJ<2)%u4t-{J-uDsK2;)}+W{ +$SUR<^3SjnOCL*`5x_kQF;LLz=&-c@?(t&d{HL0Uc2@FC@5=nx>08T8+bCF7SvKMI!i%!k&Uar^z-Kz*d_8u^5C{ +gQzb@L#|GEfBs$i^Nb=(B7U00OcRelxObRMb@ai%pe?Yl?Y)u#z{JnnjN(RcP~lnef`cmlyn9I2EjaR4es=7! +~yG=TXT9k6A9!H^sL;)K4#-(oZlJ!1Bqq#S_jOW=ixe(&)Jy_WL22TP$TP%mrh~aYiwK|#wOtEV-7Bg<5D8>+B?Q;zOWcj&e+EVy!3Ga$qIiEQb}Kf*&zXV!T6l7LHf#}6+JIgrB7( +|?iWA@h8;iM!h~SRy;NMS;2mIAynE{JBPDnl*3J2>0LGmnizpqSLw=iaIwyDp%e==iYo`WOq_HX7Ir4 +E*j#q}QPYlT_6&9PdFr$PofzGf`4DlXe{O$ASL{-gghThgmY@p8{)FTqVYR``SFon8`lL)H|ordg|R< +1(LZXxQXPg8ks?nIU$uL&gHpiJqr{+&h?FDwj+q-aa*?<1`x?aR)kN7zs4)c$Ff|G_NxsnOn2MqU9Pk +0q&ah?94b06)1XcvT)4LAgGBYK1@erY+|No@d%DJTSQwQsMKq-njVUn4RH&v%F*9p2?WaX +tgBi)S%4JAI5AUYLHXM-(WFxcqUyquPg!t2pN0C9kPX!{b+Og0iE4cJR3sNdsM1i@xb)Vw(Shnz*<(_%H7bi7i6<|Cb6G7Ut&eT>1D!w!U%q}_Tk_Eihp^C8S#rXgypr?L~Xw? +8a^FHPuvHz8NN!n-AG_k{Ymul;DTa=e;tO-Q0%+n(CkEkab-Az-sG{jb;WJmFUB0jJHw8KmFpB-XLmalsBXrg`WSGu@inAhD@a>Lk +-GfOf7X7p&rf$Y0Ch&wv#N0$&D+@4bIngv8t{NvG^}cu@A|soksmbdXZisfJ2MX^py-y;rnkJZStK0T#kP6+#OvWBu`EM52lAb=vA +0a%^`NcD<`Qn!C-jP1mAm#1i=))8hjPZ0r$uAsESBGBg^Jx%}XVit>tonBAaBBjRfI$OXDw#*Xjukv> +0t#*$zekfQS_gj4~$C#6^U4X~>P~TmnYSA%m=OJ1mf#1eBZ5G`ZWo<4*<^w<0HdfkrgkJzvew{eb{r# +nx?*M0Y|Lg!|;s(8L*%2708o@!(BvP5`vr{@Tg?sGuN$c#BTKR!(2-F~)~ESk~WLGzNG!F(lGoQX`oMS9o564 +o{Q&>fE*$x49Lx)H=3VL!_zLm)tvf&P)h>@6aWAK2mnS!LsURly2S&!0001b0RS5S003}la4%nWWo~3 +|axY|Qb98KJVlQ+vGA?C!W$e9ud{ou70D9&l$s|m221qn~M+_DXVst=>LvSLQ5G%pKff*tsV1;y?Qj6 +gnz)B$LnXx$>Ms2ID-dpdLqW98k?=5ZRs|wCAn1G@JTBX9(*izl&;c6@~3?$^dwbnT^NznH8z4v?X{q +xYwIeYK5zt&!R?X~vaYn{4#9_K6^$64V|(>QJ~r~h+v|NB1%e+83%U%!azqfML^!)t1QlpHm55BSPuw(m_^xx7(*OVjhd^>8J +lB8$lluml)PWcTyZJ^9}e4<2i?(ci(?s5X(!q)$8H7`KByxTg5Z?rsKLevuT7WkK^8 +jz_WVXeK*061OB=VEa1DDtPFeT8c>CG$e6#z5-X-40t!{7VE;h1EnXm&3)TH?M8J58kP-&}Z&$cou&J&ON<()#~p7V5&gJ0hJf}3f%2~yNCb(zyCY`7At4l&RT68w +=F!migUgyd-|mo8z*|A9*0*G?a@g8c})vyz$1c4H(u5WFhLrAovv28TIr#wcrXD6e73u%PrmPO{m6s#MQ +|^5f45K5DVEPP18c=fF|~{g@7M?E*isePs<*b)jyzV(xFm$@mblEa&@*?!U62oO>RMRQ{@NIsj9}>SytMj*~q-3e*Ghwy*xHRm8_p6@I{!* +u&l|#83}Z@h&t=>2}6k=lLgN!Iz;MvUt|Z7Gt#MY?-Gglm*q+1Mt&>^|Cke5Q)>2x-*u#t`K)^9n(bk +zhC-*V*$OUSFkey?9IJ}gr~#fVh6gQ{PQRMUiRfBO>0s{?CpmLz)BO0L6+Rmtu9gwR6S&N#zLGIo1U! +~NM#j4SxO3;+c_>q1^wz0p*31PNmC1&6vsX+vB@=3$f4A#=zS;`~^YS1a-&) +ptjFMY~p1ivX!?(NqKZbn=C%B^1K1Nhk4N22{UiN;2&IPKWR;_3@K%K8HozG=MQ!5uih>s{xoHDZ--b2 +0GyP+?k;p5@iLmhZm6H1GfZpglj{R+sd(^|TkDp}o!9l%uWJ@~~6RFm2PKsIv?2#&b|u70eYkx4kSrEPpD68u=HI>0>kH!Ar +xi_w#AvwmB!@%;bq8ZmhmZL#BDp(4rr;k&y8&!IqN~u3)&JrmwNoEs7#yvr6cV+Wt1%2M&kTPF7L6m8 +j+lmp%%DOVE*hP+>kRcMkjO%y1f_ER7jEvQB>?0D!qeVEniJ+kYiz*4`8`|{jP@icHCY%NvU%B4BlYP +d+5xy<2NvIk4EaifP3o{IeaSa)v>I$7dvGO|$?mlwlZeECnfijQcI2kVFKAly;bMMIj&!IPD;SMs&o; +^y(p2RO9@6`N0a0U@I?a#+!3z*PKi!m1nxxw}<-9P4-;<3AJq{xQ8f0#&$QC~_5>6Qjg3TFglCvQ-z+ +Qu)^_@Q%?1!4hX(4V&+b1}uVJ>*tbyTmTNpejVuYoMmoXI}^iCC~aA6sRIRJ|N%T8CLmn4y6oKDZ$td +;Oi9^kOurNqTtVWT7}+0L-$dsDRf~)GcTn_URgIVMV%y#Z%pW0%WeEo)qAti0tp +LswoHSgptk!`vjznk-mDC2Ce^vJ|t{FZ8lotm!fAjJyMFCPW0^7ymWY$-59z=lln7sq}| +{yvnJ9N(@gHZ1S$t0Hfx2M)3J9h?JOFc@hK8BhhEN;MpYGZ|~68YqkNx%1LJ|atcwx2qk+#SAf~tFk5{f8tH*G!`qR~m7VkZLbhP?5>B{T28 +VN=(s|r8%2Rh*(Gx*5R(vE^O$q+3~6hEP1ygIl93ISU1vMj1QWL~Zh*7|gYJj;1R9 +xwz(S*{AUr?Z^s#Vk7fysv?eMot25yngu^d@>(!Vq6&`8ZG41`p0^)^%VpdWCaGnJ_NBLeyJ}&M94m| +A`Ok7S^97FO=82QVvXEnGbY4klGSE0^Mu<8>cEBL~(Y;8wg+!rI>vFG +AL^N{d0+qA~N{a5sfYKTDnwu1x6f-wPj)-5D9Xy^=x)o}5v=&kvlyU-6;>S~RtR*j9$5LPLVZC?H*2wX(N8d0gX3)>I~E`e0P-^ZrqA~wo>ECJC+lm7uIcj +e=363yol$B_9lnHV=8%46IUCsuov_d~ +}*k2Kf1Hpre0STf>S!`ErO|I93Q7{tx9vcpCcTs=T=9emsMV<%Xb_9o^W!s!szp`fu%_ +M#q}*cHar2=Jf)tyHJPMHEXZa;Kny5p7%w_kp`>sOFoq^6jR)U=$e|gV89B=e|r8U!Yl9sNANZ?vCOK +!rYF{n#w#ePl5n8RdHzvXPD#_GzNIu#PH +P#{w#-Nx8-EXNA5z3w$;u~4dAV}?phYMx?)lHFEJ1X1yzmD3S$)&c8jpu*$e!$tTAA@O!#}EqCLJ4$&hpI-8 +JWP|)d9_Gx#oQL^6@P9{HytSpDYZ +P*nx|DS9noG-<8n~7!y)d+#UwjDY347Xx9U+>(l1(3*>FMz?Mo-oIlsbFli14SfFQ7*Sm-Xlv^ynDB$ +MlsR#i>Wot`pdFn=MPAgNQ0bM%s!g~GjSrDRS8P5MpNQe +S`SVMRwV%{18Bm7B)b|HvQ$J9uL;>3E3#gk1%#3BV}FG*a5?`a%+y-w8cgdddZ2iq7W&w61Yp;XK?H# +Q4pVYzLt-yiQpF{)w2xdpq{(p&66sr +!s50Sc5Sn!mBpc>RM4KelwHp&49Qz(!y+#fwv0CNP$S#F3V!sc0^+?7n9beFqEegl)RtwX_VWjEgIBm +>OP+MlbkplXv&2loO?s^Osl=?!qXJ4_{LePahxl+H~c?zev3qf|eR_OpKO +&AADl5_#5?FF2+@scK)gpi72@h{F;@=t&nP~9~DE2z;0yiCI(J`Bo;T$gga4%`A6MJIP1&d4u|aPdq2 +7ra;0+18GvO4)}H8=9PK05;-!ebd}fm-EDu^Iu3QbMr0H>RekTDu3%ovrAa;Ay+~e-^m>X#;cC>vd>W +Mgs9w34)GzyY{1BrlfaMjS$k1>lB$nTw-#bE1KOHGwzL{~V=>@zq>m7>djtssO1ElfUTn^F^|11M;bR +eCJoQRPbk$i<5A=<*8$e1;bIG&7pd855m!gPPXG89b>;40f4LNIleTKCfS&*v{OM6Kd4UCbCdWw-diG +_na@1IERDQ?JA1?2rl52nWs+=g(Jo3 +fEmF^=X3L7XtNhN1d))^$PJpfc3lhU$+#Vud&-;~wsj?4&r(fIBue5Y0BLL-U=xJUiwe)b +pqx&N~3tVaPq{> +cS>*-fZ{j3&7z8+)mmSA{<$uKyYC)I9(?%k<@xZ&vmQ8#i8EzyO^mvPx?v1KU6t1ffi^c1ybRMNKEPSj{_#2}#1 +G#1t4kTMVnk2DeeY(qt%i>|w@*ZvR6%G+!vveU&rEJ?TW;l8#TS&u<_YfTxlBD@8HuZU|@s!+vQhAHb +)rYcV0*aV5*r-z@N!U!jN-JPR1Ie2S;k4Xh3$Rx&U<(`id*|8R;`ajVxo;XMA19>-K>9isznBFK;-g9 +NkFqWHCvnkIv-WKOxvjUVbhCIZf{sDZLWLHYu1WE(Y>PFj1MVe2cWJ9o$o_3)rbTyPi|Wp36%A*^s{` +z6WHj9<>B9WB2iOC5lB65(v*(MxR?_`)q#@~k|3U^)3-{tFUsHw0CW7pK1eSS|9$X8;lm}$Uv)6;NxW +`(hPC%hHWQuxhUfg8gpv%LSt8mu`|LW{l$Bp^FQ1Li$SCb_jnZ|E*AR3P(V6C;&{!g6^=JN!_MzcCL2 +zVa>CLiTc)EgN1=Wx9J<%g4azbH5pjqZiR#}UnxqO&uIm?O14rcd%mUp5a~AP? +Zp6$T0DBN%%|_;1IT15sCh;AWwt7quhAsei^z@g-&z~F@yV}#gyfMQN?LJ^nu$sF1fMl`;o4$kBNoEz +`&>vur)#3mFA*U*qTU#vha%;%s^Ru~rngFnTxf1-=J{+6?EXsIjCfds8S(8)XP03O2vMDFa{wO!}^d7 +W8U*1KMDkM^pKAsf+IJ>v{CTlCu+Hu#hwGO4b_0~MmH1~GbyUkxh9-R5&I3zSsGm~AR9W0|Fy5C1HATligLQ)TsaUAia;Wv8kQrG;imh9$?^t{K#St +V}k`VKujPR-S0lJT^CoH|NgJv*VGX>c$+zAFCD{%c)dHWzIE3rv*!Bz!A-4hj{S(#pkiQ-;vH-URyAv~ +*uee;-sD;8BBeNB00sweqY!t5<@uWi5Ppo*0zCgp)@r+63p3Cb*{X**cw$$}Gw7?|S*u?@rdkf??6UgbS99%s}Uo(LoYV7sl*h4 +m{s~=$0D|VQKQ9Eox!7q{6#hlKXVw?zi#eU|krj@?%Zrl&YP2-ftKN*i!X^pgwbs^FJ_lV1ge*K8dFp +brFrrxID;0SrrfJw-b2F&97*eT07V;1<0UQRN$alSei_Kz^;!tLh<=R)PPHK;o)GgpIZg=>epJ^&;zy +<+A{h!DQbYVYN^?QA+U@>?r#zvH1?c49fch1>_B5$=HaCdtC9^xoj~~y1|~aNy}_*Z09v?_P-90Ph_^ZHu3MlWlt}vZWqtsc@D5m)7UrdOg)eh +);+;_i`4(6$U~w?Z<$zGpL7>7Pka|aGC?B76eIWe7$Id|`qH9bcv!9LlOvhM`Q*(6!+4be7g>lxMi%J +0CQXS{>dzp*Vxn!q!71q*;wa6_QM2|KQy$G6>2;e_9BA0sb;>=;Yae=`}Rm8UDraMuNwRI38XyMI5HR +nU+-Lhl2)rML%ZKw*CyTs3MUs!wxRg(Fbe=_L+>dS*wNN;H{j)m;{+zch*IpBy+wYs;)E(x>z?9-cY< +Wp<{UJzkBs&Id}ZUt?{5Kn(gQ%5N^x(=^OxYs2|C3Wn-C3hF&uyN6KiSs+NWkj0+Ap43D3Sy_4~Wne0DL}*- +L(2b4z0iHwkR?Lh6or@#Aq$D;=54d#y=^bX;Kd^G(|sdIjA}2281b~USAb +{1y0@K2Dt0n>g?TL3onem^(|oXn#xqn5>)DKJj0gvtPZ0}NA$j(*rt4`6*+S!33bf36t!N{(Wc$mwk@ +1t2FwxH7M0@i-1IoruAQYQ-uMv^U;usM!v8S+`K-r*G{})DW!|A#`2tQtJ<}%zjnz;mi+0>-L4!SDDG +h()v-3-vI0e;l!is!6iQ*!0H)82*bX`HQq-&IWUoCa{Ilk~X$9eDiwu`C;aC?0N +m{|)%GZs*GJxZbwij`5MMeogDls)aNY{I?AgxAy}EJF~jsH`mI=IY@>)R(`&1KD;wgRevY5bFRYgfKxYTR*_}YDHmq3~Jfiid|Kl^MnsY1`rPA#X +a)kl)SiGwcuHjG^a$s6CWvcuTUi$x&LdR;kfQnUyAU0HX!Gy!N>$_tA0BT)p*tp}eEefS!A+vg5-Z`uy~w`U2;uHpVXnlAh3h4jCtM{l +D<9crLdh+~M~;#plR}J1uRD?nc#imxq@dn}n~(e_#k*;*xYN^(V9BQ`(ac94C;rzj{doXZM(K6)h)(E +#5|0?9mJ}xnnQ}|i2PC#gxJP0If~OYn0F5e=ST-LS0|4g}Tnv!y8S%b44>fGj)wZf%dj*Et(}Vfd8!2 +{5?&AJ*%p@bv$hOyUvrgsrlHz|-usV;Z<`E||Y6c%UO?q-S$A_QAQE=S+ashA%~we>+=j|J?J!f&XF`x_-IVuGHD(4OV%Uyul`K +7%$g4XwxO+2(Ca*xx|9XG#zpQoxgtr9*8vb`ktipYokmF-BSKz+F^T@Bb(EMoR47`M3w +f)1bFmZ{E>6|GVDZixiYvN9Fqzi&_^fdlHc@lr0c?W-Y9mC)KNAc)->ys&ZM9_(^EBnsB`FL%DNls*3^eJ2vu-vd_y^Yn+z>{SxT?fzkmw9ydXXBN`o$ItbPN0tVy>+)@+Uqf?_I%8 +h^$2#?`q0GoQkGQOFJPuX28LI +->Ab*5&gDh-Pl|^gCbm%BvV?*1$v!3Y0ymsHc17cFdPh>bh6T`S@DD9JhG?(y%aHiLv+;)26Gk*5;gv +Wd@Y&4v)qeTr&Ew1GlR3l?7JITTc5dHu58A`~tgDW7ESX40~+7ZfldyiDB@gi<#`}SC+z3#^k!QQs02 +EJbDMr|E0?OM+&3WkAVK#jUsXi1k*z0J%&|5rKU)1gM0Hl#gkG_qO$g8Ym3GSrAqejCOq1uH^EO$xRq +_fu%}1wT>>|7>3kee+*Wbl+V6IW*GiRpQDYHGg7{=_uR?~0`?zwIYm{4%vW&A%;C+qGOzjC3 +ay{P)Ew!%3=0XJzA+tAz!?#RjCh$w~Bp8$Dm5B4LW!oc-_W%!rAN8wBt)jllf +HnLWu+8)K;NX1F1(KUDH0sqfvh##N8d-4QN@&4*WaEk@mh=SzT(odm-MDW4i{7@@-s3v+=Wm8K|ioTV +-6K*~q@}X8?nA}`%`o#+VN2JxGaSt0!9V}J%R3pkFPlinF^JG)`neQv +rt3jK1P3MehefTPhJeYhf=#^3#2`1{Pu^qZpJWAxiYzbEN;Fa5p)zwGn}@bj~anE&Sxu6PDZ5wBxmh% +$tmZ@}xUXI_MOAy0|ygr~G(%_ZDt>jBl;bxt_J?{Z>!xG4)l}5Vmz>Bt0 +6uSoPe~Pd`eTz_^Bh=dnVIhLOO@5M#qIewSZ{eE~vj{g!%qC1JOQ5`K;UkApb&evuE%|ch-J0B)c{e4 +WgZDOiM^QTYBm{E_(aA0F+9X}LPMjunTJ?cYHuuZ>u`LmemqUXko~J=cF2OAZYU_7mdHkLu(Q4ZhQu7*2j_(>tHKLkLKzpim>FRtv?T@bHnhZ0SyM@Rp3(u) +;a3#Val6jA)oa`j{oR+tS@|B!8B9FG(s?Jn-(D#Ys)lCi4ujSn9AE*;_N&S7MfwQ-`@phj|`h@W|bOa +TCl+K70$k+|P%n)64hx@DzFxL93#d4SaYsy)5CwdHC`?(gNkTcUyBqR*fO1?{@a&vX;b;Z)$ +GKZcl28Ukea$+HkVPefUc7>gX{262d*-C&xSW5g>odqI#Bv+(eDGmt?qL6r=l2CR|~pSR)>t2km?*Y& +7XW2E%_S;EOK3`9=xk2;_`Te8ET3uMEa&OZ3vv4vjt!F>i7H`UZ=)cgvX&l`^=PvJdA259~g+7Cz}J) +#WM-CkG~5J|tcB3g5xZO-1Bbn|w-Gsu)8&mjxBy*+Zc4`pkt)vM5>BXR^=sO|g}3PzOfH4IYNxNoJmz +<7BVPHr`)Nv1R%Lhqxz3!9m|*@}lenOOoIxmBsPf-L0Jv5M5qzXHRDd4y3q@Q$ +!ypR1Ecaf(O!63lq}K3{q3X7sOdar1b_9N`K#Ri=^Nq1jZLGPQgb*9lqw2cDqrdyO<6w}dw2XX9y@wi4u4(Vui3>^mLq?)G}i5 +a2RnW#5F#d73vOrF;-N1hm@0c{sfEB*krT%$^KTtLcM0>fNBuQsz7BnRzX?U=G3yCxkP-}VVIVPS$X1 +;s+6NS`*d)PSw8&-Al6q78*8$w0Kat`|od0|K3!tIuCwG8^p=s3SOL@{_o#s-+TJ%ZKmpC#nx`MVScK +j+ab0%Ms!m++_of)^>b&H9&^SmjLk|MI;cY6k7=4H~Z2{b8_AQ4VeQOLmd_kGd*4+6zd4-je~r`zcR0 +1weoxB^*^nS23%sKet*+5seW;&OyhckipApdjmf9{&M7?w~It+UF7MH)?Cg(yzvQXO2mT1jm0OlHpN>4WoI&AYQnn#Bn@Q +p_AVCH}RH((%SKmLToN*#ubMffI$=u){5s{Sq-ISVPyV1v^aeEK{?0n1#YnNqv(XJxb-DG|E?Kp)cEi +mVQa}AiCRO7faQN`ic}P(U+vVnDQmoiSJsyV2x;-KhSnz9%Vm@VG4<1QKA&!gb2pkA%{*@w)%SE2L07 +4UZYSg>ex`ZUbd3Bi(P+t>3@>;6JryJ)wY>OInE7}NctjC*=;kI4`SH#&_D3D+4N`U=XH^jwZIX+N?bP8 +hB2!WZ`B+ql|MT)m=8n0tU|NeTt}xj}jIS!xiinTM0#0W7h9{yZb-&Vkp~{V&o2F!IaH`%tM@XTG?N( +un&g4aadGj3xG>A!%aoDEdY7)x_SB_^xQ6Pj{2Li{_u>177w|-@u +ajJ%^RJyvd6C*(Q7ZBgcq%bd%$S7hc%Ml~$3VL(TZIH($YwTMA9>4)kLjV3yV-l!&^Ggyxh5%L4#&iIVYt?z!7OBg`n*s#f_l+Bko~R^cV~SN53!eUvZRv(kjclI +$eym+0O%hI5TxU11gavSQpDR<4_4C~Hwgu;^Rp*7wrtJ9V%3qoakEf_Q6(4!1+{O@Mue$3?LVg%?CUG +)-8vd!y@6u>Rl_s#g +RF^j_gZZz7H3bu`?Tj-Q1&^E4_Mscm!9O)It`n95+I_dIl14t!8j-S2p7H%3NkUTG_5Hw^1&|d-Qu*1kl74ZyI@TV&WtqjgOd +@wS2wURpqJa|GWZY~TAh!Z=r@D*9LRTGG?k~nH8$cq4?o{|Ro#ZkE16>^URF$}7=5K=UV +U8oPwTg8-0iT9V#_be`1d)rwvw%<*AAo;Z0J&>l?+jJgG)Xog1Tj`w@n#jAl{Puz}s*$-Rgwf2g|jDG +~@Ol!+$P~_Xl^~KM(6oilP;SLm6cGtj6Ig{Z7U5(q2XP}tx94VK@uIO*v`q-#tTWU-&$*$#h&j +D3J1(bDdX`Kd%wrbY|D9tp_m0I_y(t;*jt#df>7z~`|>5@8ZQcIT=N@z|hozS+GDGfu5?XzXZQxf1FWDW!=eZGCz!AKQ(&*r%VQ7i`rkt?J_N2z(6#Mk7`J +3iqPLQK3uBk2ladvoOL$D}!PF;a6rNrtqd=KzmpD;ZBaMhAdtT>>V0-acCem7>F+Sc6w~6$+tb6Dg_) +1xr)U|lOFCzX<@E49Zop3I-3Xupkt6MED~Y|Z$)7<@IJHz3D`75*8gYCYFtWQ8Pa$XZOS9K9f6hr3E_ +K{vp`!Cg32SB-dC>HNg9@(phu7uENFDrTthH*FMV!vIAI|<4oFAf9fIg$aGN&wn!ERUTYj6Z$^Cx +G%uOwU*i8Qsbwhahx4PGv9K2>{9?cryM9Dt~32UiJ({9Wz3YQDK;$g^!T+kMan1v~nt^RP +&I?lm@+=m@sSa!4I6wOgw+-fS^|%N=ex1Gut|bG4&PLn_T~60~V#s&ge}S1&OeUfF0$j5OB)3hl0FP% +Tj9#Y1`jf3^J_ +ELl;QL~l=hD>PMcYsIU-cLGXRG%*wL8Swi>HUX~Gqt$Is6|YR9B}OwqQjG13cQT|0`~1^HA!awo_VAz +QEu`(AxU(}MHA#ET%uuw2pBS+i`Xt%|nso!UHkQ=zNhm +5N16_=vojgG@~;Twt56zXGS`>)vrTpGi!(72kp>9oS&rz$aO%`NyN!D?pI7}Gv#j6kj=(6$Y1!+?dtx*C)1VK&b_yKn4)gd?!=%e%&8f!xw>D-%EL*A_ +5>;!Bt5%oP})~%^^FUr9dIq4IQ|N9By8%#&X%MfCnUJ8oqzcr%{7d^nzA*rQ2|3Q4!m4 +HgslT#*Rg9PA2Nuu1_JHklT%!!-wN2J<>D;c8)?I@z&?@Qp!xsuFS-Fti7wl7>(7b&1kGXHI2qn9qi) +~w8q@0R3beFf9Q7`rD^YJ$F`?ub#y0@olWGBJm-uxF4s9H8Bs`Q3(; +_b5C4$XNOWOTca~jq2r2livY^m;%JsTf1k5#B`%05^Va$4KlWriY-bq#$ArskMOhnmg#hb`*V`zd=FH +BP&JxYSE)ufh07x&*CGDR2L?)EMu?*U}vg@A$;4KZdlq|h9z2UUf}w6q_b+M6a0=vYy(xRi^at?&W3p{_phr^Ly|&au2nzaqtc+ +9<<_x52XMUd$V?2>ae;*d-K`MacJdEI;S5K#3w7Op{)TSkJ^J#^-R43#MF&nz!jl`2)e +6pFs@jw0oC9+JP1DQ?I049cy_d2Z}KR8}GEb2AaQ+DqqBUmNyFHg80Vb9=#@eh$HKUB8(;T^papXGNU +ygfS_+<7xD~t0F+RX6-EI(j8+!gTj6z!$MFj^HpL@SKJqM)`3}50L>tQ>37wQ1jzvxhL2c%9c(LhSl* +iwZ8&1nDC#BD=@b2nszLVW_LDMR7g#UrS9PJj&#wJ0OoTI(1mxod5A}ShAi&+((lR^QO({N1ooTO5fh +GXgrot`tTfP=P{Gh5-YcBJAtqi_ZyJZG%x$DN+8#|fb82?L;O5TJ_ybbeHVr#~$YPQ130dW~ES(1AyK +NGxnWN(PWF;QiA+T+tKk2S65Sn?T*R?AHTBO#&g-gt1SjV{ywO#4%Y9V-WW+zHbC64@>H%oeW*`)$5m +c=}Hf!I%7(m&1HWzHsA(H(k-Q~X#NZbQL(;yXuv&q=L(tfFhf#MfBkHquK%8@m-kztPFEivUX4@J!cI +1jg_nsB=jaig4f>uHFhev}hJ?>h8XM@RE%cjFlj_&dCyxchzjnY^fXz5z+}7hGD2#hR<2?9~82ic=?xa`f4<@kl*At<2ik +3KJ(zs$JbC+-iv43P)0S^fZfWvOvvQG8z8gefTf=5MF@l(Tb`` +igKM3YNP>8sB*@(*ypux&9V)kca-t-1e?1Oul6)EUo?Uhc%uM0_t9CnQWv<$3Gcl049L5vlOS=$iND!UqyCd`cQO} +Epf2oi=RMH45u^H6>=Mh(2wBeNk9>USb@tkfu8A#1+gpGEPJnN?Djz5^bj(Ij;EH8;v$eD=b{=ib<`~3MZ$x4}MGXpm8^F3J*=Pya|nR9dAAXTvD%M +<1f@~h2EUF7vGFGvuGh*hIgL=FkD-5aW}B8H*OP00Lqw-+)CxV^zkI6GoH$df1GWZpHp!E+&eJ^ouD*?rI!`I*un0mMUb)hQ5mjG=5`d~+mwJmZ=%nJ1`QS+ +j6HMG~0Vqba<(o9Kslnb)goIs{+&M8PK@*F8;7O@n!nk%I&q7`0kUulyt4cepTAy_9KvuSgsJ`2A!h= +y7;=33Di@}stVY2%RuS}XMGi(SCki)?E80puz5Ad`KgB5NfLw=@(~8J(4|LOa090s_Yq#xt +t2vqWX!2s7?y-n^B*oNaambLNq5xaPEb8IYFdTIF8qU~#lKQo`cCEZRG{88DADncmbl-r2yq0xxWwka +2Vxc4<$`?nBa42KIAmEaw{*EG@g{N0BIP{Y#jO~>Q}Cp(0rOt=%QsN71fpRlp)ZU@VZ~UdV`;B)JPT-$X0R^-Vt*{wS +|6mLji6wgjN9D`IGhIV#cMiP+@Ql;xhgRz$ISFmRn9kXKpv^D&w$w*|?pPxtBdlXjC{ts2{p<^?qcd& +J(xGi~G~KRBG+LaY?wLVzEse>1E&445Uv4q^n~pT5Mt=o&vyl++ZY$mRt|WHvJ5brEAo%6NKTe!8_g4 +sFFl_07j9BVKc!X2o}Y2n%({feI)R#uO45}N=?^ToxQKbfR?1$U%p(1>%fGl^~=4e1J9xvtd&ch#hEE +=hsCLM*Sv#6GY`E&ovN6C$6{hJ8wCPhXd+v7KE05wrc +*~Ci0BMzaK%Kys&uN~4HdJ0Mnw_C+CGtI;kO6R-c)ZWk1gT!iBmCAEF)Y5(s&TB46t!~P@%jllL;o9I +zpbKg8Iqr8KQosC&Mdm;}GPrYqg9S6*?)3>OGU@(EilbI*o!#I+6v@Vph9(xQCR#Z9DtwiOi{H@C0pR +C&?ZpV>>&>bxtf||1t`=*7;MjPj#GR7jy>#uaKr6kj~`EGCR=P4hw#_f!!CUlbea8w_OSEVQ&`ok$znZw6yD@ns+a +6x3GfLWu%mj8#tpTGU1{W*!tTL5#p?J-?4fZT*_>_*>!G%gEi5}m9r=5W|zm_{Kep%_l425Zz)Lu{r73G +Z3p^ZAB^pZiRN79y?mt?)U+8`g_N)S4hLeZGot6fC1j&7V_DmW9bg7fA%>~?Jx;f$c@$=4qb6q7TBb& +0l5G;H57&xy@$>44iGS-en~fhr?Jm>8~26^mer{5gl{6N)Y*`B4l-AZ2YwK)&wlas-%x`DwO+r5_d +>Bo|X}9PHcuG`b|ADyB&u+~zJZ+Tw*>wGVKqv*(?J5X>tm%)=CP|ZxMAtH1lj;#qIrYm8ByDk9OMfu? +2VxGoa{`UFZ4=pCi$&Ot;ilLQ=v#rdz{>A7RmlZvA<30p4k_lyg^_`U8?ZIV-o`77Y3_#xmdKv7^5Qc +<5aU=Mh$T`9$GYCgkRy;{OBToZ(7ohFn~NmK=1J`M8#p)Fo(v$n=M9}3F33XbUg%l?y)o#$Q*uBc-ZH +=33X->2$ez$Me?OC14YuK3fX(X{$PGQNxAp6jur%|LOVGcH2D>nGOLcjvId&}7?it_@#A-v#^b(cAZ|6;fgm~WDhzFVyPayJ_YMgH*mv=? +1Q7}1&4i1uQmf24_I;QE4@8%%PQzBFIN{#MTWhoV4A{P-t4Wi)+!0%`&;hFYQ2yrG}A7_YOT)E+A_ek +k5KsNT$5p|(otQIl_z)=e#`uVDG2N#;M>}53h&l)AgEafosuU`A<%0ObS!}ura=MBqJv$N7viFIY$0^ +ZtK?`ivbCa=p{{JO;4w3c9O2u)i}G!qga6@5jLR|A^+c<)t-V|;A3kHk_t?=!O3Z~3OT`wKFW^UO@b=3KjPlrr*lO@G2{T45XK4lHv#~HFppC) +#PxFPOg(S=e>oRRhcIrTLZcI(cftq-hccy_SsKT$yQoCWU0M-)=&dys=dZhROsQnYsFRE0LC+5>8f+Lhiesz$D! +kF9RFdI~2Mi1nFi%OOfl`KwE$xhZ0mG@z|xXGMj4gb7s_gMb-;?>ayY{|BZtwFE*U~ +uCG}lCau2?&I?E-O4bYJYE^MH2?nP1jp8=LUEe-&?o_|%C2`KrJmYgbI~qH^H?^;0LvS!@;^ +JF)hCn$u<105KBv3sQF8bL)#X;H%OrH@F1C4A{d? +D?jL%otc+L@{Qr+PW)Ng*w~+YRB}d>Hp%8*D!I{Cz|1Psz{1otb*sXB~zJtGFG5nrI;``e+z+FMXI{G +#d*UbdM7U0AA@(Yl&lC0b*|RNIx~x#{OfDzD?MfaVIvFqZopH31HV2uw#%v?R(<4p(~bTtR9s`rFOJA +i<}VdcgD6{uWD)FT$J=wHPLq^0iM`6mu>x$Zh? +|go1M_I(_6`{=F7}??fN-K#^~v}A*Q!zBr8W=q~C7(Jxsrhevi`c%k+zexa^Z(!p|>W#qbjlh5;#KKY +2AXZa2S*cRzPtGVXrTHxLYqr&~sl(Bu{y{VWT&M1Q}*H~}+!l%abvr8_>5MLx=QktAtWULyx(|2)(|8 +G0wXkTt|XnOQlA-pTmLgLHk*^+!JZZFt)<+ORl|lEra!FZ{MY`8oWCPw?SK^EhsEWnDDlX@VSdHxr;Eo3o)5YqCwSxgO?d +p)z%sYRj-j{62jY(2Qu&0}wzvlP=<2}|&y%5b@*c +8&!dJ9@I`Eoq{X|K(p)RuvdzPGG6no9^Vwq8F5fw`~Naj+3?6Lx>l+SEf${oVu){8-*y7l5}p}6(pdO +q^5E!`iorRqd5*J|;Kxke;fQqgcFe`QOz-;sPa^InpC0^YY+X5TDMY<<{-W>g8Yk+(IIcMZVIb`r!*I +>hq`p`j6#4zU0sR`TH*eBRH8=iu{ueE4R3in>YF>GA61}nFexOpzT)kSfD%y$n;D$o<;yt|sIXbDJ+0||`pIMSNyZSv0yfB~4u7Gq(;m=l +E%ST=S@w)Y3NoS<}l77Wrr~9OzEU2)%x&_t0aKkYE7&kOo%o|KnXjDP(6SMXic2qi`1N%Nm325ifhX> +N8RJu(;7a2Nqk)8e_qe01|X{)HoAf7_IH)mHIUm3FTbMyGu8InxWU7F@8d5q3~&R+diZ#_(cMJh4-qBhHpKZif$bza;p#sttRMS3zc|#Npe0cArv>g@Iw+rjj?Wo +e(huKlJUNY>c!hoO$v6!;GlpD_;u@`9M(m-P)CpKR}c2th@Cr7`FW>o1O8gpuh8P#y|NLx`6)frY)L+Qe>qM{`=DxT99 +8I2g!P!lTbwr)c8v+E2KDxEYkCRB(B-Gs_>j_jw>b4sSn@-CY0-y-{|H(M*pg@8sJK%w6bQ@LBc?T#j +hC&Q>C;<+*+!Q&})>JUTHLGGvK+|fDfaN4Z!cmvbg$s@!!;|B@zcUb*!ENCU_V1ji8kp+Hj|)avN_l +Iwf3dbm}WuTh?vsspU9dwj4_~fBCh7v(Bh9R}iN +DoQ$S^z0S@3m*D0;fWO(In`?)^pTOTA;V*Z+d#H9{u*yDNrCc+#ZgMg@Oo3f#fZdS+V|a({e^ ++3A?7*VGrJnW<3{g)%-eeJPM}uI_1qY~plp1?;CVqzt_t>s};Cp}Ku3HGFkfR +M#M6i^vS!(x5blavDf5!mk&QjjwI?W7v%kD%U3};_^lgsl_%{-;vm1fb!Toy=~1Yx@5FNX-Qn_M5FfI +|nYB^3UUqfpeq*Fm4*$b^T@9MJ^=mv!>>PrJ(?c*r{u;W-vjizZwWtWqDC-bP%i=;It!%r|OT;en60v +89Ux^on_?7tA;eI6^#~c()M#%jG=qqK4MM_xHgL9HhGI_aas9Om#B3?vF%gH{&2ZW)tP*TMZw-VQ<%b +hZ;+#aLcf+1cd%)`A(yf(zE#3werBKcjzlLV#Sq^D*)NhI$|`;e$f`;e$i`;eHC_90Q0_8~Dj?L%S=`H&zB +QiUvs?@s%WIA)mnvg620lHEB*w?Uh^k;LIw(%KCA`$Hdp=tLqe+yj3$&xS=q_yVdvr~Zx?35| +brWX6j`4tbG4_Mv-`cI7NZ?HVU)@Ly&WV4>jYOJ03^x+T`o7kU#KDQf+(`U|^x!wX;zr_=OS&702T+kJz1)oih +;&%*w}!Zo@MjteqsZn?)K#Yq7t#%}}-dfIQ +qLBnSRb$^)8h`>;N=b5z6h(D+Gos7>2DlTxD&j@TNDmWO2m-&o9&>=n}qPPqt1E}jn()^T{45|}6LM&g~m%iTy+{qAqMk-%Dp +yOH?#w_kN5L5%I|+(-;z#Fx8~2#oz3ZX~FAx*Lh_|Mvfk8wtH%lyS{(|CSpG>d;qEHuCaLeIV^eZbUi +{zOV&9!sU+Q>J<_*6`BQ@;tdlS6sACLQ(Lto_mAuD7Tu_`ep6X&D|?sUW4-CJ@3b9O&B|eN|8?1S+B(d4; +#b;^;8)rX3$OBfj`4fqWe3$;e10@|4w@Wz-*U-(!{$aD&vJjIe*#Hw&!Cxor|OVm1DG=S)w#yYKRd@q +@F3s7%_}ctdiAXr(mfB;SuTEY?!yBZQ6W0k6|yG=L2r41j^UPrcJ%+qC+VgQ|0ErK$#L-OoF3cpRBh& +~Txb=HzQpnRZoiU^rnp|E5>LzV(^+1hPkRq9uP216klD*7y{%hw_CrLuCZ@b0O}iOkfazTq1*Ol+a^~ +x@*@hzW_U}rFyN$0s(H-lGhJK+JKal;+N1-THRWxV-es3V)M6GTts%+12D95KN1=Bn~eM7xID%7Mu9P +_a+WStjaPoAKAD)sUN`Y6FEk?z^9(#uk3`k4vxq4VbY=mwK8Ib;s7Z=ImVqtSAeKj3A{o=tmUz5`aX= +!{MHNgDB0jf!CZ5rxz#_{vFFbDdewW-Ptymo9HiX!J1z7A7csrR{<N~ +2-tz1MC>;d-Y9md9oS^uU($PrB8{>H@}L-sdb*r9J+JicS-{zmxn{f)2zc7Fzp*?0V7`x_t3y=;HO?q +h#2J`#f-LI*4Un*EHQ>`3ot++02E!wqyvPMEmECXChA+1Sq%O>1kipYOx#2=#I{dJV0y4w+^O*EWmX) +?O!Va9G4r#a&oglJ%1@LQ&;a_$a8HjE|g3&i%AW%wm6;OrCcRTDjonAGr-j^l4WDem3@yZe+`cZ^FfX +!7|{DN<2{EfTbX2kM6?@x313S&)eek7GG=CKg~)Kh}RZ5L9F~s?DfSg(Jrm9;Vqry8HzCJ=5N5Ld`ja +AdBF-$K%@&cK7#iqLZ$V}re)H~3L6MR_O=UH{>J}NIAzny%11daCgyh5ti)UB>ZZ!a)8RG@KT!FjbQs +51ZLIuBI*i{@Qx{Z5(_y?HsLrW;EFH#MMC$a)AE(1xFg&qxm)QtMF9fR$Y4x9W_ptt3>qxn<_A`|Y<$`xYo63;wVXq@B!@LBfZZu0<2Xa?{LIXW|109;ld1@|t?ysq8owH21fUUg-uSia!FX7pvHK +x{ClSQl2t>&XoVdw^Q0{U<~35)EgJE(H=vfH6UN5n6%FEE0_VrruensDdrTwz}1lu*eZh90g@KmYm$DH;!g-U9cB(Oh8Y~m0{TdXt#K*B0{7BPLq0g>Jmn8mOh6I@ +3f%va@mcNzj$6@quzf3Hz@Na^S_YF(FaO?I2sP{PLm6N0z`bf|Rf>q#7kFjC$ +L^P20+yn|%9tNX2)XBvZO2cCsH^;lL#=2$woUAJiYcwA7~9sZTbSdskiztl%_0Z&p~vazc6PhYi#Z4G +f|6B7DQ$W%d^vJr1erJFbd2&mWNX!R@Ia>MENh5@-D)#*8^+kYG +ra^;41Iy{;~&Fl2ML)RA?w5aF*VDDW3qN=w4@jWoWsOVs7;-efDABC^N2RNF8fC7P{C}=(qWl#u#UM4l%DD#m$%q+FE4&hBq6HH|P*Jqz|h693GxBLD6e*fP+!(#8VpKI;C_T +Fnh&f3S~q~l}ds~C#E^=51vR#%E6{OmVWNBA*|55rf-$87q-SYGIg@N=B-3@m?}BA4QjM4>G#($+W9W +|FGc;>fV04VR9tRnLztSqs6n;#+YT@j_)6!i_o_B+Dq-GqV16OQolC@!`*gplfn~N~1h*30MBwL; +EcO>dCSMTE_e|x@yCcrvux@1svIxZ>zGM+|U{B`^8d3e;p@dn_9dF}&ccRe6W-coTvh}4#5}3GKnmDv0OwJk-_MZ%!>jJ9?7UgDC!Q|Em8+Jg*DHr6h8GVC=@J5QH2IDAF_yfbA; +dSh$<}Y6z{g(=xRNQT2A$$p0WN#dl&jBm!r^B{D!5m(5$6j8hZiPdN^Xw=wBAJi%0&)}=1x1RxK)ZQyn +^+4o=`o*R_{CCrUE`n#D5sC{=C{pM}`#+@AXFxYDKd4+Qf9@H}-Jg5LasxsSl@xd7!Unb{^VT}?h#OEDqJ3WrO=+aZq450&owUW6r=jT +a+0<=>a`-;O5wwz%3S-_LGzMI7t7+wRpO*00jDMT8$QVb9&>GF$jaFqiEXk|fFKF%lQdh&K=UP0xgss +b}_^cSY3cD*b7w+J@VO1Q)a$Q4^ULk8 +uRgjZ>XyvzQ!H2E?;rDQ@)C}BwQD;!f<-0hogLC-21G*~eQQRl*Uw?x0X7iz*VW`v%H|SNY!*bS +8*M1EZq6cy6+mIAfG5I&ng;oRU;WZ==r?;Qy-;RXlf+v(OXmLTEzquNB0`9iAlWurI?d7+u5eqO=sqZ +JDINu;b*uD+P?`oq4*S=Q)7QByiDYe)>a^}}+zoY{Xx^_v^Ym_UEPiXZuxv1aVO+p}zD3&LL<|fKNB> +$AHZ%FGV3Ux4U)jr}Ic-2feiJ3K0XA +V=fYmVsprZ>Lf2kD-{#rFc4sWBfOn89b%2Iska-*UzT_ +~Kfb#c$CF(NVrvCj2df6vY%v5=P#wKwF_!xmYHsG{q&}moCx+2fLqZg0E|$Z^#6L-Aj;G9zWsTs{SN3 +w^A%FY^kERwJeE=}LBd{Ivc#c2`>ZYp3$Xgl*4QbAHw0gQ-+Ul +_tj+eci&=t~OXtcIq779+j=3z=|R~Wfr;^)s2S@dCKKqi9wuiW!TXa3jUlAz)lk}2k)En1I@(b8Q30O +(B2TQt~3`mK2qi?LxU3Sr3_qe3s|9ZltJ_BIN8B|R$O#c@_c~CaOvLRb#+TT4?3!N&<;l#iQGEfQk&! +ot)-Z^7oD;NyiAfQv$cc1S#I;F{G=q5BbUIk@{-Uxx9y7CR;$?Dn?*W(~yt7kmV3&9G7%UdWFRLEj +9&x8Zv`MsT~ukf+r-Tx8T`&`IENdQVLCtFxJm3qU4x@XX>c;EyN3DW-Lk-y`0$0sJIIwRjY^9@9wn7U +@^=rdN`3&DL$&Bq| +x7?kgL8x=Wov!ucLjtT|9m=po6ha+O!7koz9jE|{K&D#wz2I=SGpBnoq=;?UQ +JemZod)n5CB>hrED3e}!MP-j~GgXf`~Hf9R9z>s4!Q`o!~;{wT}%cOwzL0^;2KsMj%qt!dm}PqhGc(tn6Dq-hJF!?4`eVmJHd8)C0ggEQg+X4)4*W?ZnnmMG?bkUAiM1jrixPM~!Sxghp~3vPM8LIWHy|%$Jvp)*wF=$eYU++$e3_PMFu4FWctr_5tR +O-G<7}andt+jggl(DJbA5Zm*#%sx-M!JL(Z1A2P#a*T=_KdULx;s5q!ej0a^Muwq3NBubV=V(NK88n# +HRj7=@Ep2C?TBgJ3a-YLA1jf$yKbQoQmDy9TQcjz2XEb!~4Zb&81AaxX` +uVfUapX4LV_7cYjZF&AuHO!$>m3TEtk}v~AHS)Z^(h*_ylMV`VkhDjbgQZeoc9pgXGg#Uv%n{Otdw`* +Z=UJqug;TincVR|KCBlr6#HVz5aZ|<}7K3FjJ(-!kj0?3Nu5B5N5VCQkXVrh%g +sQ{e`($>ZPEt1r=3PB&=&;-7c)p!@ +5aWH^BO`unLvQ&j@QNtPcw-1}kZ~u%b_w@`V-ZE~T7o1!XMsODVzwvqovEuwqIsjT6>mu!adMdKoELS +g|`L^%qtMS5gmQJtOEBR-sPWS6HhA{la=d(4Pfsji6sxg^sxs!iq&Q>2qPl8ocz8utLd)v^`5f8M-c{ +H-v{DtS<^{dsv?oR)1Jm2`dg^O2xuzg7scu4S+RESo^}7BCP#johqz@U>zr{gJBI5)?iqJg>?k1{e{& +6YY$-!hqa@yM#Ac=q8x*_x=eV)!Fpa;C&4NS>l9eO5!UIjek!c9VBMW5W|cD=D6z6lb$Oe;gfecQIO+ +LJppmrUW3H`qKRV}Pt{dOBPhW@Ida8hO_kU$a-Z5^t!SlAqZtQg +I28UD}(yVicDfWEX$4SDfO)WS6dHuStr_&+~naXBWt1em?1D=r_&F2QE6Y{g}p>@vdaWm8;Ul +wB-luZ4=sBeF}l*=w=lvP^b~q`8XXk}X{FV$4H|6zXTrm#KHlGbjXQFOMFY#g{~}6&@|2nQDj5_^Ljj +@*I^B$qeL9((ejy;k8R=T(1wv{n=IK*lAL=ytpPC5)!d1C2J{aCj~myWsU>O#WF{bxSqwXU+z))o$Hs +tsuhOizTTFiy*AJB_VW~_?Jf@{{kpvV)9zjJR=#$AJ}E$t%RsAl2oZdQ%VW6CK7f$wJv>=w@73~@?WQ +uxZ+NJOy%RaM9iHrI_aiCXu|wbTl>Ji|NtNZRx|AL|;V9LWSMLxrVE+{!L@OopBN0fEj#cl#+P&@hR2 +SAR$YVdb?n3$>Qu^;Z$~-EUYsxPX@;J%8u6%>5%yr0fm$@#_V6HJPTT96=y@U=kr>pwqdAq~}$B#zG4 +@Ps{%p|*4#k@g`RqqzGv@fghaD3dLCNgz1(NT7~S%*x)ozQDB0y>Jsi6{9lJ&1``n3Bow~z{P&&sh565l~gnH2(YLy& +@Djf*!*1>nVHjP9w!U;wY3?}GD5J1qCpgm{^UwO(I{?I8hB{C&4&yabB%qlXg$h<)21u|>MtRb_O%-R +w?HrknIm1m7w8XQC~Bq$xtt%J~;+Dc +{<+kZ<)@RMM}#CFoV_r~x+|IfWcriYp3L@S`jJUf +oRz+0(&S~OflLFLdNTD5>qagk-%V8C1OWuWn>2MZ#*?tt)P;C&SPxpa26fkPx$rvsD;F0Xm9N@Sohuo +`<(?|tFmDQ$W=|E-1oXXi)Gb*Sl5BaSP?mqNlBP2j%_^I;uRo1WS14@xytSJw%Id-TzUEL?uOGG_y{# +XFe}nNa*z8sp3t_r-Op8#K5E7@i8C~b@zUb>oy=kehc~{PvyZ8Ef#u{dt%W}Qo?SZu>K4h?2RWJ*^(F +=iVaFJUP;}LO^sa3(9whpfHbPsH6_K?52u#w#!CS_w|l;&nf@bxOD(inh00E+AIuW~Y9Fx_=nnjy}zW +gA@Hl@na$4#{Y{-646~x<}e>kZcb3`M{23t$h0f;It0^DsTJ%gs#KC%9bC1)OGl`JK~f)DG-P|BTfXB +I`U8Gj749F3D^m{Pr9dc=Zl<&M4ZCFbn&0i<&T3Cj>`sHOQOi;<+!Z3cX5rM<&6EzId&Gg+wX9VPjSW +`+&wl0G9_I4xmsJOIGwS_T&=^&;wfH3Vvpr_a>X8_0(B)$cZRn$@Q7oT-$?zR5#LN}*2R%VH@+Yxo=- +k8wXzcxrYrx5BmWe1PBZC&*P)?M_%%eUtt&#s$=eli&^b0Gs8srKnW~x^OkinH>+8eoU&X=3r^Iz9is +o%u?>01f*U}WK%6#6q3@4Ucb%B>l#_An4`W$<_R2)byN9cX3`ABZ$HlgMBNUn#g+_T(Vo@0!|X@%5R6 +vgE?mW26{>m9;1PI0vjEaM(=C4;vqTq`oCwlPwu#{bgk?bxMH;9ss6$V3?Ab93?uhje|qNqX;Pp+2%I +K@(pDF1~2@O81{Kv)s{};UFQjQi4xcEu~^MK8JnCTCsdmtDJjltP=7y3Ro`vyiP4Zgx$*JosQ}wQzPA +LHvtXrf+ogtMflQWmC}fNO4iBa7#T@rO*|*r^XF}9fyNUcPK)5`A;`|Ik>d7(4K2h4JXlE(TIa+C0df +3`d5^0xCjG0(v&^q8^j*x7(#L3GE{Gc=94C1bfQ+$lFj +{#ff@Z>`TJ#h0A)7(?o9fPO%Mo?WIbtb!K%Cg!?w~EOQQf7fFyxmYBpG2Tq!DV__@_|xCfH0h`yp$~Z%gWfq%0c2*!~}9pXX=fJea|VEcFYX%!kvgVO +M(=$Ue@}1lcVlL-p2{j2)s*==hy3cMU6@i&BZXF+C^LVYSAUD6 +U#?Lau1UQz)cDU>zl22BxsVwKTPslUW^ZvP7;u*iTt3f8Y}4NSZLVM7`Gj=lc|2Y+ZxPEs_(oaPBD(E +VXDY7SJ2bo+UcPaT#>L{nr}5=Tu=qcS{)goIiFL`>y>Tkl-c8!P7`jfSCl}Y>f4NxJjp*`Lj}_O&mvo +hn^?Evf>{j-p_llU{0FS)~FFBtMpfs14jH3UAmpp74k5EaIeyeVniw`H5SjM +K5|7X*X95bxbRX-9EmFKdKw$!p1U0jgPESJCFoUkQ3vrcq8b2tDlMYBSn+C+`DpS;D1u}qg4(zQ;OHs_Q7%SBC*KW#5^sqw9z|qV3An|x%vlWH3E7N@#s@Fr%f$CVKf +YIFnly2=rasYK5f@rFNcasA5g~QP2RCBHuo&rck$MGA>x|IZ^dmg%-Hls=g7!MY?CiyCuE#lsKpGmkJsL?keyI7I**~nt_Li{EW*kT_Lm#&^6g+ +MLRjn@=3=f+oF#J7SeuhMEhLtB>k2se7UFi?z0lS?*^Uv$T%4qY3iot|~c7U=_-{uUv=1rRi!6Lv|vZPM~hyWqi;KxAH +*IA(){HFoVdh=;cP;!&v-DL!=||CG!g?55ir>94w1$X9D>!-|)c>_R08UKPSLWL;9oGQ0jRn0@OFI +>Ggx`$1Y8nW$#T*+3myPHE7^goJsMTjM+Es!D2*B_&8UuuLdfigT64B`At6Maw*5{?=IZn9_;_?L@|| +xRRnFh}={G*nB-VBcS=)f{!bGDEi~H`I2HzX78@i1(oG +_MSH$m?Cu_9WLkPG8B7ve&Op`C7ohel%imOZf=4})6zdX$sEERTnwApXJriP9kO0bvQ!K7&W^?kw8wQ +X}6Ix=fC8aiU@Q=V*ZRzpXbUHzgZrL9oG?>FxVXiBlWX=*2VG@xZ&Lt1W-zPGt^x}U6-N1LU=ThOpSU +Yg>kp~0JIxGi4#+9-cuH29o25!y<5Gm3KJ$h)bQ845FFL3dUo7T^~z({y|Ab7#w$SdmG27TkS^I#~VjUZ~g-pA^Ea +`&vC7rmn)*y>7y>PUWc~G*RC|y7P;ZdwX{VF?UJ&#$hV2_BwMafZgNFYZeq=Ki#3K^eC@eSReH1OO1* +NEWR14SFJJu+YKy#x4n@%xDRlcdH_N)8WaW*}{Zp?q^39e)KbKZxq_d&M$cD;ON|1=GJjI|@o&skmPd +SU@pFUGHS|qa$$?8*NJ(5Dlq*|hTG-X`nF5`+H>-9+1t51oHRMe;J73xzE{4drbNz)qVAJ!u2ctI#is +|addjU>`-uTdjuXkLxvznW1a`FTS%lDnE$Bl)UEjpVZ$HIffshZ@PO-&G?StEiETP}E3{RMbcgQPfEG +SJX)MQq)M^Bs8c9O<;}}gp#Zhp$JM=B$@w>kc^vFBzfTFMv5f=-dK_3KPW`SyBbB3TZICR$-kpWa)YW +!5}c?}BpLrdqe$}dbtsbDt13q6s!=5QmZC^f`jd(zPq)!1l6?Nk^(vBFbd@5>5wiM|A=jlyaT$y5v~~(l0$?FNd#zKg=AZe3dxRtUWH^+DpZ=+A*qz! +A5(FuSF8=@IRbZ*=dNFiBs4+_Es{cUq^d;{3SNa4$yO~iS|s5LEt1O{V_L68GFRw%L|R +vCk$mb(V=a;q7i5(xS8I_JL|s*CH#Q>dxI?I$6dF}vk!tV698Qe=U~3U4jh%}b@`2_xQc`Azepl&CsywSblME3G1uf1(iZYBM;dq4Ukk{+PSAib4^<%fKo5y4*5C}qCnBvKQND)Vq2d~$%C_{PF9~f=Ug +U&6+ZAeXBKM_6+lMGupJMK4zu6%%5+O-?w6}{-zfft2P +ye;jGd}$y?+}ay93N*_@1W9Yl{ZS$t!`3Ntm*=W`#MKLTt0F9@#1Ob)&hrkR~hR2T%&7;Ry6T2dyQg +!;DL%%aGR+|Dn$I|8yGf)iZ$~K2rX)NV@o+UBRv~7m;Onlh2@T3*_e0tn_L}^t4RMvL1pVg)gNm=`P$ +9&g5(f;9rMHsSJfz&jCua3n!fz#wT?Op(YjMXkw-`&z7_SDuk7Tj%j!!e4_7g6>aPbmb)m28vqYy~O= +ympKjwJ?W4<-!jka*D7VN?>rt;^L#;YIDI(i1nhQX7=7{>VSZ>>W#H`o_z2BTZYEc$pB#E=#4um4C!# +KSAk#h$d7nBK)w6f;rmoKpD@nI&Uh>6JDNGPWveb?)qCawxS;uwz&HC&=-{-41_xHf~ +64C3gVjsm8OV6XJ1C8?HGoaP4q>S5PMT*oG-zn4}sDbOfP(_-DeuLHK9Ezc~Dxg@4&4P6(-y_JhTr+J +?Dylu3GWrJBp~hMLdYjFfz<#P|g +1mo;LsQhH&Q`jv_F1kzGIHqmI+qFBAnmlv3%dy#7oz1&;*f=2$%U3}Csg3Ed=5M~ +er(pcXK@reoPx{}!T6XKmSe8nd#zT&e}TlM<%6Wn!4BA=u*Xp#h}!_!NogETH`_;Y3EA$5Qi(Gt8&w#zqC=f6<@S<#>po*C1~zjv=FY9H +@fx*?y-BNdrYZp6;xWh*SMy%B%JB$&&>*@Qs)QTk5CgelBn0R{cV#%(@wy?wy3{E%NxnwJXpI +ams2us*fO@`uEBzS@cMB)dZEg4is}+Oo)%Ig`-SwafC2?b%G^bA1C#HKc;bHGe_KNxK$-sPW29hCW7n>Br8ytF +V>-l;a%*(RHh+a?5+riLu=5PBnO)`0@ES2iwSZ7B_<>RB&bcG(xMgRYzqyRR+CyvsIFx_1-#33XnNyo +DLdqC`nAEVglyryCE9Ww=}_#9l**}J6cr8C7u>G~9rwC$*KP>3jgdpq(vB)sHYZQGrLTtW>QA +^%n&J{Yb&ME!b|G^S1vVXiYicm;z?kg*8bm`Vn}%ZEx)p+b!mK9muku9KMQYy&|=7jzL6EJ*j57LSuf +!=QiAvph~(SL`m6yT}86T@=4WX=OZDZ>c{mdbp~fy(RjwsZIkmI?wXzue$85KGbv1ghbvUMeg&Bj@Sz +%IZsy`YNE8oLa9+H*xDfN4HltkVk%J=aiQWUXc?y;>uf{lhj`o1i(X@t(J>BvkUmjSi1t{qibl~8wPG +p)$wtZA3G;l9>f +e_h2uipIQ6L4Lw4qxsVoZ`+isSC|5oDq^xX5gHB28-@faos1HFh37Hwmm<>m7kZmEfhzZ^Zf#=y8LEb +zKifFFi^*IKfb|u7ZPcFI`tIO#R;ko8A9f-#qGdS@HF==js2&gvlSieJggxhmkv67T1XA2m@jTwpf{h +-(YwkkJzTru1Q!`3-*43e0JfoPko!XKg2U9@54iAARSkmRYD3%;TT7&?D9po$N?(iH|D-*4Q4+yk_Ey +rXcd4p79Q!#n`pWmsmkaJ$Oxfn%9beyj>WOsqu2W-CIGBlC|AEW8DCt?0w0tfta*Z>hs^<>p7cy2no-z_ctNVmLgWuJzw +%L+g8sFVtm^#zr!>wOBl7ZyXnw)+V6Ju}Kt7`<32BSFu?G-n>gm2kmR-CgR}Q!s>2p#ZI?n@OB9h!6W +USMF|H4R%zo-0dXQPSIYuE4~x17^zb(-90|Ved+GW4LVy#+@FdocX0~2(UrTnSrvMe(mfm}&Q5Dp?!G +&=pR`~Uci+2vx3IhK-Tkdhme70>q}kA;QGf5QgSqeB^-%8J4gAzK%n^}1z +Y-TOVCXcxgK(io#E`R`9kX<4^6)V|}|IzmK#d~d0ME*~>nXjWZzXG3>hgBTHp}>n6Xjz>M1jmW|Y5!1+NKb +w$23+ph(L;eDus)b?M1cIVr0`)WDVprPs9lmf^dUu*nhs-dD;{%}yiReGJyh0LYwl3WxL +E0bU)(B+lMt%v2Qim8-48t|=zOq6RkICZ7N>$H=_+BO673(>&+0<|maQ2^y?G1z>u-Rq<1`>a3ZFH}v$1o*Yu18oiV7Pwlm`s5Bj7GHf*`OG>cpuMMTJL!3N8hP +75$1ic9?1QQ8T36>B%Lhu^F9)hC;RRrE0b*u+LFhMlIOoB{;B?ONWY#Ey9cx3-nc#MUXoBeknFK`yj}vSn_>|xWgzcnbHxmpX7)}sLFo__8pom~4!4m|p5o{yaM +erHHw*c!JMHm +1ZN1w;EPUrjuPEF34Z9PyQ-YKnJg@I0=1m27FPSEg_W(gxcyA0EbO4ka#bAlSr_tjGEA%^#uDr?Qhi) +vtcsduTU7;Sx!|;cPzrhEx1p5hg|X^~o;!hswfAY2{EzxT*1yDPFycjIWBLikFIyii4WBny;MCB6r?uzG|LoK +1e5-(zBCaiV_21fNlNzB*GRUay4#=lunAEu-Wk+H-A +?I5I>U(e_MHk)hc+X`&93bLNQpv(C=3C+Emvk~4*s@^ZrLTcR~3)2h5ovdgyEtW4n$Z&%D@8{#4!!Xq5Qz@Obot!g51PXx8NAa*+&KpYiAKapQX?w +A~_6=uBEmXMrb7xu9lduT>R)*Q9X>pVR5Ufw>27A;%(wr*qeYkNbx_8o5Q=-;Vxm##P6+|AUzN6&y>z +5DdN<<`J{{Ra#jbldGggNFqb#AL!@?uRjE#(nzB49v-1xW&6XPdMPDq?G^{#2tXUt5R +l{|Y+iZylaytMSYGv;SzW#5yNYqRGqSh(ok`xfUfDPUn)IS~ufY;ieRbF8TS`NV5;h&OVGORPj$3bg> +#PmbUd8}Zb9ayNl1EqACB0)V~d)(hd?X{V7 +Z+VI%h)=tE4RXEBMM!z%hTnNiNxvMUN==KV}VX}yFlSnT^gqJBx7CEcs)L+nsvP7SXzQV-%QlCGE-g4M2qV&K4bKE#-%QLyj +lFAe~f^+14KS$t_(;#NJzzIERnxM0Bec$e`?@Wqe6TFcrN^36BYN8ynDefGle&y6N$dsv7YfAQ+uPM> +S`P}w9e06nwTQ%h!M(Ipa>LthRBbRWNC^fXD{{&w&relzs4izW0+?t{wrBVFbNv2Ta+eMAeR!Z?&rGP +R3erj6U^oIS(`dc6@v{)pFFfSf8Sr-rzrhf09Vm$` +%UD2PzyTzoF*TTD%(n+gQjo>pP2bvnm+N?Kw;FM=zKsxUuPU8}bpb$re(VP3c=yo@uJD*QPVHI!}x_CL!@!8*szb?QxK%ey$%sgphd< +bv9qT+Zy0ENK-%8pDv_b$mVK_xmWS;AWeUrD(XOPJ@SZ?P48(Urb&!W*}^49ysKEqaZ(zT1s=?aX4P4 ++-^&bSVmWf-6^jTlk4&sN`H|Tc?zI+n1Ki1M2X``|Abag)3+qH?9GRWTJn@@_bs;mGOnm=gBJ*arU$U +@nWcrf{>1Jb%g>@&h^rD6MkJ2F%vSSgM_aYxMp+{&Inb`8QkQpo5MvfS#G5&(K1kv}ay+RlZq@RgOuA +yWVLpID{>gO*lm2wy$evFL}^N%blQ-qqYjJ?pIdNXeiKYc_*gcqJ6gD4#YGzG^^@iDMrg9atW`B0&nP-V<8Yu+q+7+aXVkRAht +U_Q)XAj3dE9|QaEgU58$udn-ewcpjhNUE7@{fe6SH4L#-^V41DPaA)k=I3#pKQ*rDf4lhq4|uMw(|P~ +X9H6WJUGLL?19bI2kL&!^bHKm*`#t*cYfnGzo7V5TNml4?_Q)mc)SY>?=M_hNP?K>{e|~0D{SxOMUq +%?aWNI#ph1Okh095*>f0wcF0qj0EE2}z;-CxE)VFYXA;n@Oj?J4l&tULbn4P^KJG+4#hMj|P1lU`^(Z +(^#3@3v%T=$dLC^E=Lp5M+BzK|b#k(?{btYeaG$r&bVPEJ;iDJ|2Kk!;VLGtZhc+|(;q1jrF9=LnaUV +NEgFvP@ao)=ZOip>>YkmOMKHi^P*NVS!&N6_P1A)0CV|fl??uR*k9f257?MSd&vssX1BmDYS^rdUnU2 +MJQ1dN#!|(OvcPgIYwvAHqD_Zs3TLVKti~s)mNSA9=kPXQCjBQ=KOQ5Hk-zq<=Rq+)D(MmM%tVP2{Yl +BWw$l$Nq$sNP5Vu5Vs<`9nT6Vfn>;6&Bi52~nYg!~#)kam4W;4ynO0k-Qb)s&oSBMSNqwCCmwoSl|A(3+XoM~&Esf9iP)I +Z?p0oUF|G)=Zl_qXv0dbLOXICX0fhs-sx_@3CjutR|}eMoBe=^oXn4N0L};%AvX0bn>61NnTEOL7HtI +SR~h$oTG8RzU(x0CTLZ{G*NacU2?nBrqv*9id9s(*572$1zM9Qjp-kJb-I0e_Aw=ahflOCipC8t{s(|YwBywqn;%#)nuKYZCiB9wey)xETu3_GWKhdsR~qv6@@V0IzK +CC5$mC}rXKEgWop6=d$520fl>jJU#J*^CdP-yXU*T4q%R2>xBi{ewmPZGFc5wA@aY(La;GOyr7oIIV- +p6T-08V#^RqLoNov14JtZyIHr*C<`+)3}+1fm+LTD%%!Pwe$P2+%r@i0GAO!fUr7t1yMtGiy?e_QWs` +=9J{ZU5GR*Y@u;;M)EV4!pMi{y`1>_i6ll-ELtaw>R`Z*eHJduxqD3Ew=geVfLSJ?f7p@YUqEYk^iyD +7Pq}pV{aVpnZ$a(S2Xt0M&U+Hzc#%s=UkhfM^a>eJhM_P&C=B|_1gJ-cF(o_a|^HSAGZ41cs}}U^W}Q +yIt!b*u6h5`O%}FuQ$zp8<@k>+4gDL_f9tkuuU13H>-gvrBL42@!m>?VD@6+(1evTa@>yNBMivl +fzc<(UlIz``IUTh&PqakNOwo|8j^tD1f`;ztT`Qj-c}m-LCrX|^$0Iq@{eXIPaqe{0G$Vj;Vch34j_& +COI&os?CN2AioHBa&6-NrcC7-~l4TNKkQ~V`%R|uCZAu_6+M7l8DA7&qvr7JSRYwZ<4~fp0V}}TiWPF +HtVFU#IzJ^*u3N%HV5g%LzuB=BU&Q+yHXPFn4yfN$e~hX(i!vcQ096OnD|gHj&cdh%FNBmu!h-kGURY +MOk&}Ruy0kOPGn&jS-I-loe>kqMa0l(osyBkn2Vv7CX(QhCy0tCaV3#O=;CcT^cO|+4HqG(f@h1$W$} +?QiJ@^(BKiT3NNaMoIGn;h7Iyg{%Fiq!lZ3&roHQFDk`Yf7i8>4MjIk!?S+89Brsrab>hiC8$tnvIY|n+=DCUO=fe@9i0t8*ZI#pF7u@6PIJnB{pQ=dqiaty +2%-7_clg6G&3bWJ1sLT%TD2bBAOxB#$}~}cJ>j@7-`=9^%HFwlQT&qO<|u1TI4#X`Kq8b4s@}zlpBSn +LcH6W5|v5QNC=uV&T8E$Vby&e;)aIBF*XckI6fj4_Lf9P0%4pY_?LK^eW;)0J|(mpcK7L_J$Q4UE82x +OQKA0z+%9tt)k-c(Ps4*BYTE0hd6*?f(Ht+rLs`iPO-acSHPXu~kxEW57|W_}&vL=B^GF4LsC#yZ$}P +icyNXHP)W>I7t=X)*N+?J_DF%}^6hJtNk)5H0 +HpZ^1&6JtW%rcS5v@Vh!J_S$ti2E}Zlm@O5*RvNz>mAEjCO1gfE8_tK^pa9&vEAB&-_fX|MOnHw};!ITB;}tVeNq?%6cZ +T9VpE0qEjdSEUQ<9_L>aBz?RB&FZn9CG@hvHwPq_dg;Coi5+-q$JkJg?;UlH$Hq!Ee9f|E1#Z?<1FmT +4w**$FJE(_BS>A{KrxIA9txfSn47ONe5hh>q3{QuJM~;=cKSK#xoOR(zhs@TO`ri}!qJ& +WO)TkX`qA634uAN_wr7diY+G +Pe97@7=mB|KZ4qG7J=`z{Chq8@6p{y^(U3F_H +%?#=oC(eTar|M&U#pWi!Y=F#Z!R30_Hg(TNO1mMS4i0@2Z4|me0|L{r6b%FW +}P+$=8y2a4@)Yx}zBCDXC{Q6P$Dd5h#Rlmbr=t@mL?WATNBXmxaL2Py!ysDs<;}Q1-i-T(X5 +6mS +O3276$-Dfe?RfMPJ9QgzDNF3$L`YP2gQ9RhW-Lrswe51eg+H}z{ZXp%Mue4Sz1~ev)k=*MHLp(Um<(^ +@yFRqFTKRxe*0}!T3X7!{PIgyS69cBrduci(+e(Priti7`wD%Tarc4+2gK_EezvyIw|2pT#fuT(EZinVt`Q*U!Jzm=rNO`8OdfAPf^?DXl=Za&Y(a?3{QLpN^qK~3 +D3eIMVFx}6nlKf68k?krY7Rg}7&^MdV_NyG_v7ySHd(iXB5Jac*)=a*CS_nw|SdGhwun8B}-nRIvbJ> +xmwoWz$n`)r>!If)hU_1ia3MtX0rMEV7s|Es!sBNJSFA7e|pb>n_M-8l19fL#OBFg^+x<#Iw9SwuNqd +!?vXuU;%LFpv!zG>DBHIg*8jhO(%rC{cD3CQM)n2?=cK)TwO7j2Uc6${03x?p&6hp3dgapU-k~azy`; +pP$dx*+;Qg?;XkBT4H97xe@HayTjNcS)uI791DAQ>2UUs!YKB{(%Ee5+fcLKj5t24$f} +d#o4HxoDKPivl06_oBj!BVV`k!=TXik9Oo>TVDfjIP5Y6vIVU)qeTK88OP4aI)5%t^Ud@l`x%^L +R9Q%|wAYuBlD9~;(to< +Pif-!ruY_$e;38KQT&w@|7D85gW?~e_(v%Iw-o<-ieEwT&rkU#2m +woEqV$Z5cmu8{^+hVEoiQjQ_Nn@v1i%zo?1dp5phQ_=70^9TY#7;!|2xX%v4E#a}`3pQiZ#r1)hN|5J +*8S`(jyk2q?|*(7YNYC-X7UUh)_pDGe!xakJQ@1Xe8DgM0_|1pZch2npviO<@wIM$KcY_Pp!icL{yh}`L5lw(#otc +xk80vKe3Ilx>l79?I&^fXSl?$cxAyH7(4$B1v2Nec(a}*+;o;F?qeg{>C-v{!r%$hdv15CxDTGInH~m +GCB|JPS@D>CZJJzK5N5_UmM3186Bf>&QjSfxfhXB2L_2{nnN5xt~qeH{O!ze!R8qhB=@Q$Q|Bgum2FNJ{^yqHtITrCL{pjeZQPD{^wd>?h{uH3E5}M{-1A3SU$tZXFN +gdj^Yj@{J5g!oPjHo93YuAnfxc!rcdM8;1Moit894H*>F!qad=6nTb?CSD#qI4rE*KPhQ+=y-D*AFrWg4NF4mQQ`IZCxs!%cyntH9 +}E1$MiIM4vwDA&4>6dfRogb>lfq(0nTgjJ)21&!k$!DMVneAMqcq+~KU{c|`>>!eb5uibnSUt#aAL%$ +h#|upd27Y~vG4*swh$Q&2w_`6Xuw-^nt=LNXtH^ilTYlTWgzpMILHTeprq|NQepR(R +{Jw}d?S&O7f2S>f~2m)MgeZ)_x4Vdu`BZ2$iKLN++{-EsEaci*v7r%tiT%1Udy%!}o7ipq12%#0VfXOEY&Ac|-r%Qc{I1f(r +vWjJX7t%K*skhF@rP1;3&oG7_|qu)bux%9v-koo~sg< +E690vMz>)@mF=`j$`O)b2T{*C?~?dYvl&z3D(1XBCz-m8meSMsGOH_69(aNP@K7?y7W{DuCYxc9(@u){SyfxsZ~ +Nd-v{1Cd#VKb;k9dHf`Fdq4bcw%a>n%`4G*c`S$JG`Hw&T$Z0&~UwrWe7O42~Ly5uA=pJ|Y8LP_Hc&fL%Qjgrhe%A?*D5^Mh(?YJOwr2CpCgPE_6ps0 +|KA8pDPS>ka$}FM +(+b{*&-Yc$N22*?C_NKDdgn_;I9H`PyuzK0`OPqQ0*!-rbPw9*$q_ZZqT{|{tW +)*<>e1jJ@z1;C;|;TcI*)NgFlWQJu2$pK&IgooKJg>YUpdYBuNN;Krnb`ckKq5o +2Oq2s2nZNLGW<&FFHs+Y2H=Y_N4bI?)CF*d9d-Zhx8DkY9c7O42EO0}&;qU&Tt<71?QGeIX55 +ReAqtDgZ2;&J2}6VXz2Yu=RMxxeC09DYinzt`Xl&LU+)IsuYy_^D*Tytf_4CYN&J@cu}3%$`<%)jG*B +H3{h0IHiH6KCIloxTdFmm~2Yuk)nz%0ftE;QQ%MS(x1@$0aC;|;s4_DCwT);=bu_-!G?kIEA5%>oDkA +9ctYyzS2g#Vpi%QTGsjPpAP*WpCN5aOHcBQpMJhdB>;Pi_;}i$9GST+8O$m +rsx2#H^*NnfB0iuKs@v_+9%-@wNcRU4d+orLj=*V@n8IUo^u3GG>8ACOP4r}GYtSVsG!o(RGl!=X}Bm&SOEtS4w*(o*ALG=e=@!MxWIC1Gzo-e@|}H)Z^}J4u7 +iW2L}%x+=Ke_BH#}`X-o(B9(>)H4wV-0I{4`LzD@k41ta)+`$+yw?j3>#JToddpQ_LhcbxMW!YT4AO? +w6nN_!rFK8gC&UeqUbCmOnKllxYBmNtcdj~+eT{7+*%#`&x21ML^%fm#=64|rE;0RGhP@zTdq_^XRX@ +D~@1JhEr~Y2>Kee@$ +kcZIbR60~zKm*2u=6DPEqo3ToG?c%7pP9cxG`v7Gth34Z=bq(!RwdCOah`ZuZqMkGqQ9WnMb7sZWwD-xeR_7Zy +___d8aUhZ&?z;-yjy-^n`puGZb; +0D}PTG02SzsI}={U*jLjBR*6SQgCRCK@&`8O}E@HuKkrhQ{sr@6;!)o*&8|yn8fXo)*R(bHjK+N;r4f +@8aKnc~H=xl`#e=GDdUwQ-3e`pYT};ynz=?-~_zU9)P!6C+Op~@-fC=&=dG;GQz8mKL +xJ%fhl6dKkjG^_#*>7)4r^N5DjaK0oZLePK*ebR7^j4|ZHruiRz2F5VR5r7RFHt<(peU(ElQbAiM*J> +wMu3X^JNV<-qxd747XDC1D0dMJ_Y)1vh=zQk0Z(HYW9 +H$e`yb#>yde0W___$R+<*W5{I%C!6ZBjU9V#t|D;;`^?fKz#nxV85xOs;4i=YvXH$X%Q&4*o|l*Brr} +z2T&qs-pikPgx&@_&xmJd+$9X$vTr%{QLLsKQuKpH +8Uk8rIPwlQ4h~O_Z%NTemswlkLM*NCH&DxALWlc@`%6(^LyY68ZZ`MoKWe&90oL?KLsCREJPkVUE%!G +mw^98{?YS!^)g1DEMuTOqfdHbVJy)9-TBvu5hI+jv9U|RKg8>+Y2H6%^XAR3Q5)vu#}_VK$f-?myx)1 +}okB+V@WT%UKLB^&iaJvHO05sj2j0Ux2XYQx{GIIWQcO7d8Obb(13OUI)NMLXiN*%ATSPt? +=eQBtzbO@^GLWsMnc_zmL?t||I)W8qd&U-gUHl&*JfvDAHVOu`|5yaVq&5Iv}u)wTW`IUFIccZ)C0y0 +b!|tb1NZ`eby|EE`Wf13baXUdym+yw2hafgM~@! +Or%ah5+))RhK?TsD&U-NzgM1CX2c9s&L!eE|Tac*`p8Ar%1q1{P-Lz@bLzqMS8T`SU0Pqslo8bn$u;y +&H+eP~g3k%~Gi-ivuFhJA;{1K-y9Zm6;+BQ@Ze1!f0e1-lPb*HXx5Kh=`yWaf^fj`mx;LxE%dr%n`p* +_F<{`-Okln>SoseK3>SAUf_?iMw!D7ywMKO|G*uxDfkDnHrfH&0NMo7MITJK*HJn}{ +{H?Js`ux1?%au+0kP-fbG`T@U#m)UC%!IEY=v;dU$yJQQY15tMWgUcM)h%`^Bc{KzXANqO +n`d6Tnj#Ynxcp7x<%YR2c&MI^cWo63QHH=y4q8|KsJ}0Dmq2qmO7j#x|w}Cf3-ePoK^od+ag6-`a9l0 +pY+);B~xX3;^!x{s_snPyZXZ3;eb7UmAN>f-f-!fev-OAN>dVI*dnJI#9M-wrt@~Jn@9!XSEFjK)1R! +54j2N;2CxQfcngrJUu=C9o*gcYsW>c45O88u2m<1wQJXk_@E2nK^yP|Z=vr5Eh_FLpT77f`TZ*VfeW= +S!T&UV7pe2FYtf>vd8+$&s2jMU9@ITK)EW9B>?L3i3bX)s%Hz-UGuOmlyZ)ojrLI*cknbV?;2ryN0Pq +&fUAuOPeivnc_6mLn{%8lpkI(;wxC{KX>z~w5xYvI`1IA9sFX;ck2N;hqcA|_i=S10~9@O<+)C1np=c +BJhKSpy3v9Cci|JAq){K31|;`8SCUE3GIUtPCAIfF*g8eFz7SWwG+c-^Q43r;XLs!BG=_7|I;im6jf_7|DDM(JzvEmX|XzXJaP#pJT7Q%q0A^ifQsVs=x^ +QHoihm|Qk>FdKfiV`6{e!TBB^1-#fbWJRp^5$q+n*l50pckHM%UJq>UL0Ko$>-0JY@1FpFuq~9ji3j~8)xU9lK0857K(j7v$B@^*?GciJlo; +BM2boH!>x_++6{B;E9sn0!3{pLGJ7<;DJZ^S+q_E)ebjivB!h`PONETe+O&w*kk*>{4ochIcO%$7t+=FJ?6Q{7jiVpM4j_M +Zqh#3FT3kUdA|>PWt*y+TDoZPoNdGpB7g1KhsI|fP$n3^{&o5&f60*`)-hKqYk;%=#d*?C^1f;Ock;f +kdVWC5kJul=KH~^7KX1sB-7u!m{56^6+yw184AehlVBmuB=iN2)#TppagRv&B<`0DYVl5HtxmZWk=8wHs>>npK;zx_JM} +xgS>@k5K1K*eX2Q`1lKia+0#{2KU1`#2@xrR7^9}^n!<0xg%G)UpcM*DOkf0`#Hu +UWGuL5m0S2A{*kgZ(zFsbYTtYrUr#64c6^j-v$}A`-NZ0PY0tc*{ +pe*oUeI0vE|4{b(u+N0`Q1B!6n6S6uQ1+J=&ynHLWoZHj!H);)_r4qF-*_*$@g6YhzwCigV!sP}MOf3 +s+PKP(SQp3s3ic+%9+#4Te##h;*H{fdj@;L<{vne&ozCQ^o_Z<)Z4vW*$mgK@|7-8s?*5746iw#O-2IAEV}V-TR56F5=2~N`_8<5MD#yOM7WQlqN3bUqei`f5DH{vWjT4^*|TRmxeGV;0h+^a +pufAe5$JKPO@;=2it`Q#+4^4pFETQ6sL*>S4g^~dbs4BF2|p|F*kg}5_kF!w^R>Kj?YO(PQgjdNp1=P +Ae?fm3TlgPeLM;*U#<8)nPW~0;T?6!^bsYhC0Js3x!CZhAfZKqXFwdPkch2$ruo{J<|FdSzN?E>qd7>M01D|0IW5$dL^y<|sF +mT{NXKrrZ&#e!^c_23~UckD!UF!R7yj`BkTIxnK>n$+veI2A_*2Jjx&I%M0|l +G`>;pcRmzRV5offos#?zEP`Kb+_H3|KR2k6(0@a?*-F|63GZFAMLw{YC(ncddU?zUX#X*#amf8|F!x9 +h#`JcT_ByWV#~9{Vj_y7bi*D^^?(7?bxtkg +TqhPh5?_2P9JW4J=D{xs;VH*dRg>QE99>p^blfWkk^eO1{rd+X&sa;{OgkAPFI!g^>8l8H283?KjZ2Y +VA+T-nqnsKPY(#UMt;Evr=f$xVunF`C=ITD*QS;i$z`Wch-!Qc +~c7pg3;#Y_jAXY&lR(eUy3u>(plf&FW{$bp;MX`>Lb56uyCG|~xKr9Zi7sP%L_d(pLi?|bf81SiJ-hf +-sAcg^dar1(4P9Lq?smo0{9mpd<%m(xWK7kE#*P#CIpC5AkE%5ii*8^V@d|ik)$`(E2^Z_x)05K2X-> +_lBoH{pP7|@}1&+@?5V#|pq!FLD09pVOvot{YV?~F0z<3M1Ipi4&U|| +B2KVpBrv=3(!y41qZjFCI{;WTw4llQxOk*S$oi-C&W-sXFB88yZi^)1FQ!*1zrvwJlLTr;56{^qunb4 +6;Jhd)_*RZ@cY2N?JvXiTiok+?AYP>YVLX*z-{okfFFRTt>*%NgDr0@|8Ty`e|Jq1^aXYj#s_-@aRT% +WxGZe{XFa+BYA!!~ffO+Iz +g-P-nL%*m125>`3fg$}`An~~%UXMnnd +0}SXOHqt^iIh3<@l}eg1j8&Pt8crPVq-(XQt-m`g2F;N2caxvlM@JpYb@{o1K!AIXc~+pO~KK&&0kas~OdD)8exk<%ksoe%8haGfX4Sc ++;3*cCzladReQi4c2b!ZR-qw(cWwCw~yN3R*V$)b`SC*hGJ178in%EL^K`EN6XRc=sol)x`cvoPdps^ +Z~=Y^SL0QZrXE)lwc*-i?a$gBdJla$?aa2YC(PC6I;$s_ct1XfkKt9^<5VW#p`8p=i*CVp;xOC`YuLh +r@FRE>UW+&4ZTM?^5r2b&1QjPsPfIhUdD4s05^0rGCT*6sOI1>}R3jacYNa~qymU$OkPf61=}vl*C}N +Ws@;eewMw4t(NT{Ia3}vknqDHBIP?Oc?)D`M}^+WYb^VMbY)PF|9=| +h5c^XNv}mK|d!SR?CdDF`BdTWbSZPi)#^CX_dkMaf{ZI|2c*znSXIDxq_ +C?2Jv0yGybM9WYmszG(=Ji076@pIe_+c*PH#LwdQafCEh+9ORPTS%nbUrv(e$yIW-d`SL4{!Ffu&&!w +PASG1kqI6dtP>`Z3{gj85Aq*M? +a*W(bM#HHkHj{OW8X13aesou^Lv#F0c@ztAT~I#uy34qehmo(%5JmGL9POjYi|w=9}g*^Nguj4_l8|d +DbMW*qSZm_#Nwn)mcbe5ijEhc`g5phuW&()o6RYU17grgJ91W{JITwL;cWWLaG;|x6#MwR*bNUN8(H& +&t-TEuELjaJLz^QP8uquNRy-zX{FHTBhrV`DQPeHg4C0)@@RR3{HoC28u@dFs@;_b6|M|cl9Uu72Md) +WN^e2KXSJ=`V7;7H($|G7^B +OAyzvYQ+vACV=>D@vvEH)Xd{t;i}<6V)PhpL$sRRA^d9EmTvrVcKYcRg<)*wAosvwo}X|Uuee&mdEC? +Qnr;7UG(^0j;y|C9&YTWr`cSCGh4?QrS}x&wE`v+%$06<>JZ7w~EPC2_~^@=y4A-d<3$mu=aD>=Z%6r|lQvzRN|N2l$ +8Ma2n3Semnse;$neJ@8Hw89yj1d?2&?`U@1fjl^&HwN@)V`ebNCT9Su@I3L?QIghY}@$TMUvnNJpyMP +wOSN!E}ua)C4wj~pZi%cVjeYvoVnb8>@xMQ*FysYEONl|ceON|gUoK2ZLtd?rx;YoU!P>f`EIwLxvKb +=A6SztUdNO0<>QW=9umwToK3?$?X-sRH+3(%0z~`Zj&HUacR{kLbtsQ~Cw{vK~Zlqj%E;nnS145TlcE +w~=cU7*878j2dHvxx-Acp0vjCzwmS1vrFKNxc3xf;Es|h4VIplDx^W=NwSvQFF!12i+OL5$0!|y6&k2 +k2p*qRgIR#hH4mBr(`&T@`qg+mu=p)kQ0|ZTPk1t(f~Vn`IDkW>2c>=j(O;G@nL=J5FO&VGy?l=>$%E +xp^4kKR+A2{>vNA?lAS_^+QYUO4Q%9&ib-ub+{f8Q&dGuTKE>xzw=@;}q7RkP1=Y>t{VBBXU8yUtQjV +VSS^J()h0v*nnb=Em6myZ{m{)WfFylR`0d!11aq3spY{|jE-O70<)gvwpyUkIx#$>SmWc(&>N!WqK4j +m7zb`&03B{2Jbc_wfDv5I@FG@H$>EbSB6SvG20)wI8s1+p<8J7(32Ru#@dH+Xv$bKNlA4zGm;TJ)vzp +N#gG$G(n*EHgp6vpl(>l2{=jgzff4bBSNl%B(Kz48X%-;x-?%Z7dGy!6iN_@6ZXtU#tLaFCpF}(m@g9 +kLo&?O+s5O(Dij5y2t9)KrbtjnrzY)7W9R@HN8<(GlV~y>Nz-Ts_0h33pH85Kw3tp6(lCq8rSs`Rx`- +~LE9n|qM$74|bQ^t*?xK5WHQi5Z=(X0&!-7~a3t^$`F4m3R%e?FX7QuQm#AK#3ll5gWYygX6@hpKQv1 +B%qrLhd=V`Eu9o4^WLu|WIj>?CUt8sAOme4LRaxHr;B6CBJpY6XIy6jso~gLp6x;i3F4-i_bOz5D^Lb +CdVwF?;}z6R4FSkRq99a33Gb^Z5i`$cy<@KAm413*Brt+s$^f-E248f2;i)P)h>@6aWAK2mnS!LsSsW +F9jnz0RRBP0stQX003}la4%nWWo~3|axY|Qb98KJVlQ+yG%aCrZ7yYaW$e8Re3aFhKYreKW|DUCj(f41QKh_o5X4&R5urG*LHs-(948qHC$Sv)l8t;!PG88VyU6sfYxp@TU)J3>$F+|bblL6F9O +zWyIUck+k{{h5y&86e&6SucQWrxCO})e|Nrmv+k6<_+d0p9&T~7@bFLr1YdbSA#*Fxd!;HPa#GlHp{H +I8aO>_KY8tXOxGWP{()h}~vJq;V2_pQJ8^Xu#HajvcZ!WZt{=v?zz=lV@wa5j9wdDHDR&U^0t%xAAnN +wLh=V7&0H)AwH-@5+z-hQIMG*Cl@KbluCZyIkjS{l2f$b(CLsx!&T}Z@JF$@Bicq@x1?({{*g;zMZad +eyz(N=kJw#@%(N6zPe$phsues%in#BvCjmOn7{1X^^te)usmj!r_Eu#sOWr&ze`<0{|OTDH*_yEmPG% +t=#@DQf~fd2u)5YrrpRUTbIdI(`n1e$pqpo9_R8Pkx*Kp)bO}-o?4~4KZk1W>Wq5QSz86Wl7q3XHU!F +SswHrUXc_Xf`J}(J`sP4wtG)~6qu3i6``i-E}*B=)!**9=~L5fMI;@`C*8QV<^zYhi5aJ@~APuG9#eO +kg4t*+B>y=ziB_1g6t)~}@^i6)>8tH#xnDBWl8z849JMno&7;QEtE>B^?2#Qz(A*GcS^RGIlxWi{krs +iUQg)%F`!zc&8B&w9oU%pdu_1lJ{bBHa@F-nm8UX-Q@sjNSMu!3l3=hYa8G9$vfjsdrBpSkI7E>cKld +!J=QJyfZaF={fr;sptG!xhK?U=y`vGv1j}NQ_pz0KMp_>aAg^%bm_}N}Y3W${M +CDcQV{Fx@XJtm|Bc$u^wLhUzwMkHkeo~UDp~}ZLZTBDr3^=0|r)GVpHFRO4PRCS|_nur}OBl`S|6k-c +W9xH&o~BTJ;(H%9wmQFC4C2BVV^1Dr%gQ41&9cxt2S3<9;{YJC{4}!~K19pF{UH+}r-zy3-$UYs-D7Ym8`W!2K4`^hv4{wC19tXsU9Et|v755}kA3*)>M=H5g;*+YkEYG706WtLQqPuJ7y +|%YCPPY%QMaoNN_cKZ7gL>q*dSI%p024-t)t)}ZAfqC3$)l9y;qv?iJp?IW~)611jr)@o%E{3k*4Trc +W~pK~|f?WT9m<+&=};pe;$@9v{_Im>gMc<1Erzzb&kOKBE9ARQWiK!V)MkbeX8zzBUXK`)Yea+w+$GO +*AY$ohK*DR9;x2hJG`f#diY!{MFB3>kqTgB{PAffI(TKn-;54(Qq^plg2*UHcSt?H{0P47x@zE?v^{O +jjY}-ot0K=l3_|$v<Wq&AK0DE$}9ysMHntVfEh78i+(?)4fpL +WeyxB$(heGgiD!oBQ5nAfKpdG+{nT#~o)I_HH%8WsxIQaN`c?H^Eg2EOWf2L2Rnu?qeWZ&Xpgcd33h* +tp&IQN5Okdg*wx`@W+S?<0Jv=X`N$e7R2W#m1_ihTR}MsobZHg60!ELVcgKt3_qu@C1)WfammSDK@Lc +tRyFyj0O};_?4)W_`vbJTh9j_zFUY7%pmxnM)+`3yB>F<;Zqdq3Pu^j&y1TuWtBySVQ?!HY! +Yt%h9Rox^I&=dx6fXHC&sMH#GPj;Md++Sl!xzpvXN8AheqtoGKF{@>^0r%LA0W651J*?jL^1l#ZxbDHu?v +&+eaHh5Q}ffFvsM;5 +K3(p4BiqpPUk-|?_VSqUJ=p9sd8-R79#d}!xdJhi)=C=V;Vcv8HgOz>GJ2MJ@e|HSt6bojsP(0q}G(YwX{Mf +T7^SnXw@1H0$o0oY4WgkbmL-1#*9^M3Hp3hK2B3As@?mw4a-<^V9zn%T()2sao^a{_uGQGwhc(LdBbO +|`iz}djdID@u5Y;YbrCb7adwmSVMfcr7L_oFaPdjdW`8<6 +l);Ej+3sToOJLFGSqJf{12O&<{@xy787{wy80FC<=I@p*gJvnKjcA#d#tya1?VYFLYf=2dWn!ZL;6N- +M8N|DnI383Nxi!Nd20!z0pWB+xW%3yOsce+_HtI|8d7bxU_>X0G&HN$7Symn|RZIB24tb>KBBYh^Z2z +*_PS4xYja4NQYg)FaYvzz4!~H7KoxuAoPVeDdz&-|fMvUDtMCIZBM?_=PRhh5$jIL#VOR5_5EMPsJht +zh|b8uZ63oesb+kEo-w(LIaMPBok-PPM<^GYg*XiDW4@bc_#!sW+WnKIIgGGPZM%FGNrfiijBa_xSK2 +U}!zn(S0F-g~YQc&tlTgOrwV@o`)-HC!^Rl`Ke>9@I3D4qP`8FCBdh9=AwR7o;Lw}E8r9CiMjy(%~TgTt1ZLC4kZH +?l|f~ZoIHba;JX!UNMeUt0LS>#dfVunXiPknZ#wSwR8v5s$fSmS*~gwlY7-qirtu1{_c~H{rG&&ou^CNcR~?Tf +ZgKe;oXJ1awhl*8A@$Z#Z2IK~DqvGWF%5y)C3Xl$YLp33=--h5LvG1sYGkj&izW)--_pEUl|E5iNvW+ +&iJ)ysmT9P{htsS^V7+HFPuJf;XWBxEk>j_MLINOX;Y7XMh(^|4}tW?_5ad$YD(xQu|Es%}x4!re>dJ +$3&S9g*Bak|KI{GSmDi~gUIh%tcIYY=>&u96XlEI8|7bk>-+2E6@%Oo~*^;15&w|A3j6F;IM2q3uSr3O*rG}Ehvn2dXT$jAn)V2#<%bt*ZuN*65{Jxm$i<{?# +uDr3;$aO}@!ItVM4|4n`@a?#OSDgX86b657pWV;p&ZLHNwf2ywADZExAF2BSHB>KC{j;L=2R-VNba<5 +FSr#;j$S;3?hj>pmVFGsjOn=IyXghoivc~l&#y;uv^6yJS)b?g0?~pu;`$C%D1vbEL{03?2($!|ztOA +FRHBtYN1ex?Hu!Yde?z>7ul&>yN;6VA>VKdqp>)nt?ZM!{Cq}ea2be4aMM7G%;_{JQ~ci1{6mo%B%H;2pnUg$f=7drn#l@Dc*yHUVniQttw{ZwuTwTU_!&5y&I^6Be4Tl*fV?-AHss#~nTd|QIH;YN +CFhwsJ9%I9r*HE$0zT_t*(zpNgi@{q6gJiZwKdnf9hZ)S%S3)i^1k#O~zA_% +>yDzb@VAZ;>sdnSehGdsPOyn=|{1N(xyM=v!No&zew=T8CsAE!TX4O!yBZ2SN^WIZr-3uIXK&8hT33S +c&h&4+Hl%(56x>LG^XM)D^V@d-4buH*jg9{0`*zJk-+e$W=~nNn^Dm$meLt-+Ttw;bpNj>rRg4C-K`% +K5P9vzvD5$gUne0&jef}d3H^eCwIQz@vz8q>0)f2ugB#XLYqkbG1>Leh+aqwCiH^p@fKi=!B-GEv%v2 +#i1&ZIDAF@c=E?WyKn%o;@H@c6R`_nmwkrPVvsj0)Z>1r6CVF*4Cq|Hmc)kbxDTR#f-opGZ%977t6tRKV#K`2gH98sge8~Stz +@ymrP2fRs=oaK_&12kOU3^iD&yf9tZgr5}rt|(~(XWhHEktoz9lP<>NPls}_A`mvK@rpPaVC)-zP%dM +r#~~@F&4=~_IC_6>IV|*xG|4)^x#VJYn{hBG8p4N4I0J{Wj3qnHn4(O#2dz*Wu~!&p*WvepDgTe7G~orDKHaF+BfJ5_E{*yn{bSeZ9 +#0U*LT+egk98@ +FSu)$0F^Q|Qt$hqt;6I!5oMdMo!4oViy2bNF7N(?d +mFLDq3OYtw!>!*z3qztzib)d9WTH0aY*l{^iF^xhb%`X>{G*o +kfn4I1;NP!M#^Yh?SBT{+@xM-nk8MZ~ERxvvM{|q)R`_2PGE;S$9D_!? +y%&u9yfj#GYf%fAuhl2^~DjKBC*wOJpZ0W^h@YRpt7wRcJ5iUBYu|ze?YP{N+wpj=%Z@Ty>C&QHQ=kR +kPvG~*2YpJtF2gqG>es{A>eOi=D~cVapkMciezrH)T8}Q!M(|Qcu~HxD*!!QE!jrN=d4UogDs``qfen +7t}v@Xvt+i?^Hx0Hx(9wHXo$KTUI!jhUCGy|SfB_RkvRu8SlPfi}A&Gs`A!Uq~ns_Yuin7n(r+y3b_|bu5@I9OqFHTn}h +JGb~kHJ3-zPRv>$C1!o^2PEc;yutshh%Qdm07KFgBm2=v-G>#DxrTR(7$>qs(%vQKMcHzSy +K<`RETsXHpbG|gU7S2GX=dQ;{?6*c8c1KcF0q{f#sl$2@)G|_G&UWwoW|LIw!{suqbKU>&(gFhn| +@9=X-nWN<2qf)PId_*1VMLRgKrW9?b=zs8{ootaaN9V!M=l$_KF4`aKAHXB_J6>ZK^cBqod6m8$(n{oeqihP?5b=ZzNn1MgFN9lzB* +Ef8j8f8=Yw*l6N@f$&1s2-KT=T_8(@UlvlM_rPI*U6&QX+XoJ5j1bm-VJN@Tn(9AcrjeN7&-#H+Px`0 +-iPke>U1mWR3S}&v{IV(C}eVU;6k`|KaJ;WFjw+CZEa9WI~;odeHzVDfp7ZU=WeS4?Fg?5(2nr0z&+~ +AX-D?EB91N%pvywgWgXhi)ly1hoz&GS`jdYeJ7;oUv|stW!4Me!oZ2%=V^(w3&=~Y?6!z32%^2*KMVn +`CR(BLiGulR$mKIl}u|x0ON;ZHs-6i=tm1H$|(B>suv2LHjYRB579?I7xD~)BTq79f;YV;q$^+(kOZ3 +9VaaCNzBbSw20TEu-G-KVR;VH4u^X)5=B(Pq}3aI2xba#!1s!5W~pSIVp^%_N9s&hvYOQU*k0UiET%+2AxIrWu)58pFD(=OT8xFwm@o;29p-v>QL3>No +*Nzh>)(ZMY4_oMwJ+9pY}*4J_W## +Hff?K2jpTWe;K^uaWhR7+DVNA*Yc^ai$$BnE{_=!e;Bn@J}9h8pxRH+|r7WE;e!au?Nd5QPu@bu)7jB+10{Xum+0zRw{}8jyLc9L$}^@l2-}Euvezzf1HB1fZ`S!w; +xGB>ng$==cd;UOV!UA4_sfX5R8Q5| +=}}`vrXeBj9}gQuxQ7EHy}RqQf+EJ7-gT-W%A5z=bk&g@+SR^I;t>ZVhr(~)-e9etx)6Cw(J +-O3%dEo2jz1d%UyQB;@Xs}95Y(4z^+SNwkM^k!A>prU%2bi*a$dJs(;ea&7h4zW>L;b~%0^fRB?RlHq +xan=52c3@@rUx>~7t`P?X1NAFOJS0Z2K}H_L(_AsQ>@%@zNv5q~tce?;bPXC&rJ +7@}1`UgbZ@vZj^f-v>gV0h&CSqZDxWtX3)m-!2M$u(1v2hg}Ihp(6_^t_-zJ_9LcO{IeZ$Tv4_Xn_5k +tB3_p$N=q4J1-X7554$0is&Bj*T30`{+Vv&GQDMG=VIEChj4%*dnDapAr{IX^Yf*B;~bE*Ywvq&60W0DcRddzou&E#~=79 +?j^jF@y!4p8aeL{zZc#)-RV7i3fJ(44-cNv=I~s|6M8a6eN~(vSpo9-5%=}XH1ly+^5fk3;EQ{_vQ23 +b{9XorXM*2$;`jZV#y&A#+P*Ds=C0fsYG{aH;#~-3Jc@UfcvoUDkCuwDYs6nBznZD?{sbeRBgXtP+fq +F=PxM_d@JR3=D?nxc67cGbV?Q2-pBRSEWP|T8g0zcDU2P|EwNjf!F*R)7G|A+D%)|~+KU5iHqC$eq6* +3+_!(ZpVTZIYl@>$b9>WeZlKl%9zcyRFGaM7*sFW|fRTcqq!`nC`L+c3(gK>Zo~b1l~15l&Y94}+GW# ++yLra?raBbT5UC5`3tb%`(j6hBPvXHc0M^o_Z*z~g4L&3#GC|5_gNZ&)Mw;XhaPj)y14BVzSP%zGnz6yQUBVHPWV80f5s^ +J4w9oAX&msf+tGyq(R^aHh6+;M^^tx^RetaKaz&eheOAaOS +gSg&E!f#;xq$iH(``pRz=i&Ii{WF)sy)@?7eJNZ(W4MS}3fJlKok4r +EyPWxRQNO2>R&nm85sExYbO6HJdZUGtrX*MUv-P|!r^&pGecT^AAT$!BK4K|T-;vN*~!#UxrVpdAjU1d@C$Ad@7(& +jPo`TeoFy8ZpUP1W#|$PeH%~jGys6W8Q-Zp}VdyOkhY> +Rw1Js|s0pj4~pj3*03JPyMOo-a)`$6N5aOQa3c$b4< +wC+%ag~#2B|sRj^`S=ID9+O)X1T8@YBwmF!h9=H&UF!>-jj^#5*On9C-9?Fe0Xho;f7@D2>NIFO99}+ +P`dc4enF@7v2E9eUhL(>G%xZpH& +uGHr8^4+W8ha_4GER^T}nQ7Fij^JKkqCU5nSghIWAZEH(+8`1qd}`HN7;$CKnxyDW#6X=CHd=10b&6R +lT>$8#(O&!0?%=X(!b6`pIRz;jvxJk6KEbG5>nsIOwRjWykrv+928r&(Pf`ea?RS&jKIsp{k$8dJBdq +wxfzHXa(Wp?Wx~EZ`8litAVv_3btg9N2Cvd+1#bYrLzP;Ba`fMq6U1X?$xcxaRB1LZCyRxlZ!K4?Il$ +5Xz#mkOIGz#(r(^u|4o{ZSz?uMPk(>23tTW660ph->Uah?5mhql~TllWi)>Pag1BpKeO^-dDf7@;&$z +0Y1TO`qvcK3^ccn5nJHGpL1_!|PMNQUtP(3W3hK*tcRG2JGaSDOEh1ub}A0e@GSA6_=>AL2HeQ$)CH-~46`_bbskMWb^H(o +f@frvz??PpZTHLcb38+qIZ+q4Mj_hKHx`qCR97@Uj5^Rk(I(^!8;=8Logg=*scNwM(OW1aG4IDvj>G1av36)qNSdCtBBX4!-eGS**oa0ldkFARYfW@XX=u6JTTtKg$I_ +%Lkjw-AuK6aX_e-iDro7N(n({Mf;!5OxS<^YPdLs@~s6xK +mwJ&u?%?Tw?CG#XuQ{_CGp9_miz75^pW#lZW)cZTz}5e7;#=a +=-IS!ha%q0LSWg;5(J4ABxN;vrA$Q|F^(<>UYbWO|)Qs3GWZWH(vMM(jM}aDD5JNa8g4nC7MG)eROJw +`d>!Ea!+_A`9ntdL#DBlv=-w4YYuO~yCYI@xCH)Cxf~k4MGlQVZ|DiP8-wpK;SU`vFAJ6C!GBo`|D{~ +>UktJSi|B*PbU$~kXh(s+--UXdrFAsik2%miReiIjsBc|@`abs8)ORcD`EQr6^Pm*1v+*kHyir%@(YG +hp*+uhL9t3`@znJh_CG{6W#tKFZihI~#c9%#tJ`SnO?k}QuG#A)vgkOu;)uW|-YZm;VIk2IbQdNnRvW +~{&J#+etC~X7U0XNdE-p87#Pux9zw21Ee!{J(&=wEAGl;-R7WcC-q{uT`&58<^Kc-er{_qTDoTyyZCr +>Nv{iO5UX=TTbqec5Y+QCce>ug6GbNw9A2hk24+XS6&fqg5Z^%2w5P-Lz&L;X@e#OJ*Ry%rw3_o1Ea@FEW +%ztraXQ=SpNu1(?d+O|z&A-ylBg#`c@kEiVf>lUQ +%3Rh!$I1o=WaJ`?NptiOr3B@OG1!4flT+C5G5|JwH%{Vmlj*m5lkeunz~!QXXmHP`@rPTIy++?}+q*w +?D{i#JG3!_+Q4sJ5G1*`b9q9z61BI`iMtu`4Dgv~PyS_*x!H%J)2!oZli##VyrRaiJCyyb1ljj{0VM +P)Fcee^|`-{s-6%p9LVh+Rke}TtlWonXNq)>aTVowt(fEkktX%A +>_COxY9~Ck*KzbTYoQcSZ+T8F6Yv#7(J;;f93S08-WV!g^k6-G4?YASRu0}3y(# +b`5rjU#K6Uc>E*p=;iyRte?E^f8`Wpc3%auKmBdf9MlvO#u5v_nzZAU~dL$U5*JF|V6!Nv7q>w&XKY$ +jGVj|9{FzkxoXInY8sK?@pGHgJ*OyqO&E^>B+W4N+2`e(`<=i+*j;q1#M(jOY7?xU7ry?fum2X6Li3z +m8kFJI$EDFXDN-Ziu<`s%@g-*Y0|{~tfhvDd&g4qbz;sB_Yc0JHve~)r;k6WZ6clcNZg!0K3@cSQipa +bz8`?zQ$Iitbf_Np@3^CV79O|g188uIJ^((y$(?w9Q+ymu@>2)h@jzC28B>&dP%C#0%B8U;N3Q69xZ1 +Mg%cVM!eo!4o2~HB1D;~S8{9WB&pAKR$eXPdxIKuAxiT7cbR7p*{0kdR})I{@~ +%{JPTq`%mKXPRT{qCQ9)3(>l*j{;^Tu8?_qH}&V=z=AYii||-ZSDT0zSN~GX^Kj9ekAtj<=JDJriTSR +pe<$W<@o$Gjx^?*Gg8i`o9+gFN%`57qD(+uGzZD~^Z7{M=x)uy{b{p98d`Z~LZs0;=*Co$sbvPvPzWk +CuNZdY`j7Uv1&vyXne#85Oz12r>9nsc4P1NQKPscx5$G?|y1pn@cu-vYw@Y*%$f#1GSWSOFd?3l2`=;pwRIpG#s +LbG7?jcu)N~1clkn#;rIFhf4x!#(Ar_048Hd+@ +y>FFAiq^S5UvX>nKz{2IBmc)-RA?*`oAa$4)gnrY6V!_10(X~vpv+QVc<5-+dYBzSu_W6M1zG5^nJlD +L1Q7~yl2v*Lxwdk<)Ha+bHcoBEIIssGrrZVw-y6L?>%(R>=y(twVX9x;REHuxn0i4~3j7bOX}H{=)Xt +(W+o9eYiX@9ExZ>I+t^-s+KCsQ)IvsF7lV6K|GE}ktcTjX6*bs@HYG~$)C0yc%4Z4k{aMdvnI#QadJ%0SNpq=ApLahdj2x7^ySCvQM0B8@p<%m6konU_b#GG@#CMb4fB0J0v^QT5 +nUQchwpotHmq2uOaEJn>e8FWs4lI)f-apjd~mwdp!FpxS{vp=8`em=WZ=3KvW*A+tTCLk6Kku4ebzLsl{)wN^HH7KVY)hY-KZ{Y)?|5eoGjDx)&4FdNIzY>p1%w%efjaav{}=I_&j=DiZ9=wdq=tyKW~?GXkx6v96Q#qsde?( +S&8-bCaIxbT-V&F2C3h)PDadn7CgL$g?ePQnai-m*ZWpee{}wXQVqq40mj~`kQVqoNLPugYfgWW*!yh +(?Rhgu{jUwx(KsrZnk6wY_eQb@j!1zo@0ozqr5B}9%qlOMbPbX+KN6>1BY?qd2n=b7) +k#^lRG>5FexTTLZMbgnay>+OcS(?e|Pv1QYwEoG*5%17m60+!@1kF~o6iX9%8>e}z8esjM{zgV;gvG9xxuSePW>1nGzLI<(-POv+sWbnV$cH5=9}BM_AEhK85n5 +eAK2rZy^6?03{y^j-Zd^)lV-KC7Jy_Kcw_AMgKHAGamJe%NS8pahwCd;`;e!kse}?E#Ci%ZVhjln*&G +yMsG41D}=l3G;I}v(L^g#EON@jLHb#r&}i{lg8T;^f%DHjhkRgCuAzFEWO>{h(9xv_=I!oF|=+#}=4T-v-n-AG9rmp7MTR?OkE(>Y`KDENytg60i~L +vQeVmQ`C?EPpbKcJyG6%{2(H;z3wqSqw{#ekdQq;wVG-SVCd^f!FamY5uqj_dJ<)!xcXdazqnd3gr=d +x!6XzncSoBIf4hU6dj?))=+59*+KPIAo%`Onp2KOoOFVqR6rKCupno-IjyFOWkGkOSD*VoJ-$p*0;Q+ +#XJkjv1)w(Y-?A*AhIp#sA#X_&fLXb5BpTu3#z|YWN=+`m<%InA%dvQS%fsbVmXiYQBsN&C|)y&)>bA +45`hNWXL=rL(Pd~=)JV44E-Q2Dnp6ZcRbs={n_u}@9cM;{Z9P6tf|^%*v+xEd9Z=7^(0>;SD-^}gCSO +~*15gGM`g5s)K(yNB3coCp6dQ)+&A+!Qm08m-`F{A|7 +2sOozxdELehqRLozK#^xkXA_?@4O!%z)q1C1p0YT?*HJZHhXJ{uXUrr#-sfz1zqN2f*)XwEvdE(rEqT +TZo;kU#9bJSnay;o7)GZWWUn9Zmc0w-C;9(4=>8K?V@=5dy?7jd$Yfo+VM!ry)2MW?I9={FP=F;?J +O^gto!T#5qnLNqldRqU-hk8_I8vDc>AhetiG*wI^tOjuv-RmlnHB!iLd&zh4?z?IzeQI)mq_Yv?>!@8 +Ph41<7ZmJz{9xj&m0LMg#3buLh6Hljn0K?k|;je`%7gzm(un-_KGBzI}Ccf5Fm=;o2+~o##dE2Eki{H +1*f0S6!A#R~D6%BZbJVBpn9G%`c9!n?Mr#(U^T9;`d +ZEx-cV3BUsE)$+SYhrfPJP@;90;#@%4O?xwR7+JwV>X+lT$1=+2lEALeKJ>KS$S +m2dH1~t{S8~E`>_j``kg`WJm+b7MHJTfbg?GLz3mapWGTSO)Q~0x4dp2v&fax0#7w(m_N2&jT*9X1>? +}J7;J+fkL;A@($e*NeNRgWhxv>YkZ*TeL;tViN~ok9j@8(8l?+`sM+b7uFzw{sfATC{(d&TX|=i`K)M_R$=k1Z$H +AbZe6d*0E%7^~;XLYpF?hJ2f10-xp`R(DURqY>D@GO1#gVpw$>?l>yvoZFLB=IO*_qeNm +&;ie#m&#E?DOuhHv$*fCmb?fj6sd8#$ol?Jf}JJ%7N15I>e8r`O&EEY$%t6I|yy4e7;CBd5R2%QL5DF +NN?1iUY5ben3AInkcKz-e_n!_YJIk5bREY!(^<&c~oCZNC<}*shu5OrNjCNjFJz&St&E@hH +S(0HXZQrJ2k1Vj=Y&D>A1{~CK1uxCJj%ECHP>qloQ{aLj +DX=1$_4WZb@{wOn66YMy9M=s=thW}wE;(})x?KA>@O{%TGhhdw-!ROeJ?{c14B3GvlYlq;?f(ES4uvh +*2mAl%G&-Y2tm)hXKj{%X+ZpX`$?RJ-I9YLUB4>dde2dOf6npFtyi&9ev_~w>;oGQ#OK0ZZhiCXdL0Y +5WmByAs#)~Nr&1-DHw+f@!JN0uqy5~-duA5AxbAM|(mS2I6qdGbk#nG`qN5>^spyTg|jn60CuT}Q`Xr(6vkC--C0USZn4NbVYm^@UTSFn^K~-7`!dQ*~Kb(*R;Fit9dqD!h}%_ +_*m>Ei51mtKx +%mWbZf{Gk!wH7vc%+>%6WS@znTgUw-rK^vZF?*R7ptqvyv{VG*Z$;6HaIF+RtY-hXv8ypw#wOqSV3&% +d*aJq~EkTV4l^_B3WqKI=qTo94!pMSHnL_>`~EnSEx9!=#Nb#O-ZLdqaBiSTMr72%c}Gi2YKvy|*ULh +lr2kbHVG|`95FT`JarPo}Z&$p!K^|I{MgB#QuJE@=KxrNY_mB6h=VbTNxXyXlU5%TEI5b+<{ypJJcEu +_d&OKx{?&3Uj*lZ4f0`}d{zc<>{ID%5T-WMdKx#br@%AXGv0#dQCvq1R(A{JhGb~lVs-PV!R&6JJrZb +M!y4?{j+q~MwI40AXs9FC8}5&JUG7!twp01n~jn9nvln1%Kb52Tf1Kg06Z4m9XZ#*J8Q!@YF#1u}zuTgFakY!9J +#tn!ojY2GxRuI;KN6ySTL{l@&eiRyrHeyoA6WwvXYxkQeckn6;hl;4$+ns_f7i%*?MB)wp3alA$D9vG +xYM31nZSQUroG+!!C!OSS#jpUy-7a4r!0*PDVsNKcAOP@DfY9m2Ri47GsGIcu8#eQ_Ggxb|L-)@p0`{ +U4=2(OI{TFBG!Iw*6#L=*;q~y&F|AHyXU@^ShoEb#j)yncg#O$u`i=QMoXcOQvxYK9*V5b>v_~`_hx2NtNC7tU8VSD2(K2V|rY^5Mb#s@82Y8*oqWJh=Bt%1YS1Ldao38SHe~rEs6#uJ +LxisWj+;&V!D9uUMlp+-4KI0&5!Y-I800Zu;GJ91tvhi?C+U|?tNq#2mEI+S`blJ?dR9jnS?K+A4BN;4s@&{7S1;8Y~ug$`G3C~D=E6;CT=R_RvrF0tmWC +iCfv?u3^(K5!*t97p~Ux6l^)zaC|#~)IUY=KRIe}Hz-5`gaZzWg8IoyolYn#uA0C*bU`3g7=fEMkxKj +?+G2eG2i($p_RQcFC4e3uN;XtsOIIY_(F`mvGo}aHjbW +=2_>#Yr?DCDAoz{J&84VUqRVJ(`i5aZ1>;8UvQdOfePQbW507yf$w$K0q5XIh8jGHG%4B~)2=z9uf+> +^KSAB-TL)z5u4HzI_V8CFR!sCIdRin)+sWzh11ju~bJ9-;l76Y%cSpu-<5QJa20?I95HKc(4ABmQ +TS-UpWEEY@+yw59R-|1(`b9`DEDu_ehZ#Y#I-$4&TU$gB_k^m +AU0yPe~HE%5$+PE_44qbA-oG0orr<@9c^2o$yiIW +Uu};OSDxRrmY_4i%BeGHz5wnV@<7)_sV_Dzpzy1b9YJrBcHdy*3mswmZSzNEiC7Y>EcY +E0mv=wPkYcT&WrLQ&f2Ek)83?&+CA+>W!CQBGi14Q5d*qXz10Qy(K!DAuCJyFzte;3M*L`;zXI1<{76 +rHxOSw9{aX(v>B>vem6xO|FDY6c?YY~X=B@5c6Z?h_;QDHs7(?y`%-&QHlULwfEq)aD`KW#3=UZv#+r +uW%nY_E@lGnbNPUB_p+d-fBbkvqpnlFK_-__2mO4N7jXRQA*{JxIgKjOC?za99sdkt{EZa*{)r+wXFW_XimQ@QdiY)59)Y-_y10UxW>&Gty~~|7@B +&p4DH(`*tATVVO0Z&+eLehmp5UcEupZFU^2K=id9?Jz4~tS&a75|2XbDWPXmkyChGXZ#F5t++Q3?5Bu +mZM4Fu!VXL-?y;AmG!nI}IM0S+UBBs19q^G??D6M0Gz|ogPdanc&slS-cmmOAEfxb>I;I +Pxm=K}fjfd|1^$k)9JS@q53XF#Mmnxv-P(9OvC_VD9Z{041@FR8zn-jTi&&PEZ_HJzn%#{uKk2c;S}@ +B)k~@VEC%TK)8OCx73Ia-9a6@4^ZlUe;vHspNb8u0-5R^{qobN<(?y&W+NK%AAUZ`Z6dT;@0d9BG#Pr +{aJjw6W@-4E-vjo(POH)DzWEBUED!u53P~;xXO+)ZO>W7yuY&q@1F#{^1m$a8lLV9&^S3__gZHPYs;l +`YEy(QrZ%8GMeOyjkKdyE*+=5+3E$Jb$;t}4lf=HvBcT5bbF^J~RS_{Z;#_+lo#hNavK8{T#VPiX{w` +uD#9RImnq#qt@9FW%vgcGfKcScAR#bow?fCx2R)#Q9>N&BNVi^$w6OPpWocn5NPo5Tkzo@lGcKB=Om6 +*M-5B~$|MR7RoWw&KoRvW=Q!Q%%zZ@*?BFWL;g=9|u!9i_7}dl)~{gZA+~iRX$+DM)KpqUX-r1Nn2s{ ++DOyEN%Fp<(z)@0DV_ec)zQid{Z->eM5E!?VFG4_n11C5B?5>!+lg%17K4g*pgQ)TDjLDf25qnDYOQL +uf1@S-x)hj8QcFsFfwwDemXN~w~6&pTwY;fy|*!nIa$F*Jilrb=g6U5>y3?X749RD4ZHy|o&|sEi%1j +c<2Y&)dxX=T?^}4xnB}Ik;3;n;-?hjGf2u(ENoXtP3;*IG#hzbR$9xyVeS}*Q_sudVWbHj$#1GjQS3l +jkuBe;u5tZ+c71;-9E@Z1dSMw(z_jEReP4oLcEY76si=0*$k_Faj}ehg(l8ZG*W16k#!Wf(ivKGP7VBHf0Iq?8 +vx(Wp}cK?vCT+(wAup=`h4(3vyr~!tk`osSDZx^sMq*TKBef#$`1VAi24~=;csLiuVl-&BHeqky=_?Q +4|)$}AwEMap#;9H@gKf#AJuuY#_uoMxNP%&tqmGI68RB{`oVrTMEzh>(TVyh?EzYs+^x~6(bU#S`=iJ +9huL^vo*VW4n#t1UllZwXoOX41m#5KgnMu%&;0}X!%12p-<)f@7QU4mjTYZj>Q%5Hlz0Uh0Obi78R<9r<*bN@^_esySae-Q;s)P<@1> +;u}ntVR;`($n^cHI}x&wu(NOsq6uV``DG?z7z*Hm^>jCb+G|A +&ck1fw-Jz|6(9v<@M7<~5g|mDgx6DEF96G10{K#He8a=o5(N5BvFQP6xA@jZ38QH^eXJnJV)*@$(O5w +zNr^mO$k+H)T+0NzS8-TqDuzxdg{Orvmk%eT_z*GUT7w!2HLbg8vFX_Sh}V-%L83&DU%dP+xk)4iHS4Y3K +09u6uHSE0_0)H60_L*N`4imVk~gsX=$HQiIq^)OUzYoCPbMO_4KawX-_<&|P-X^ +)Hh&BQxbZW2#R{Xxf3KazQVJ|bc*o>t2DlRwSjmL^T$pq*#d8<8`sX5ga0+mIPekMXMmpaa`am(SdC_2}8}a|6S~-Y&_}QBT*Q3FS@Pft! +22Ihp=@F9{*GdvT +=lrLG~dmZ1kQUS5#AtKv;ooWkc4if<&-)F)6egQe4RlI~k1&uZkkm+$+zosXk7@_Qd2^J;+&*~WHPyY +O>LzL|Qu2pNgW0O$L2Ovuze7W=+W^daiUTlo82lRxIUH2OR_9ySE}GK4)2XR(gGq{FmNbL(8_n>}z26 +`=D0eRHka3-&VJP +-Rf40%a`{aI{dy;3w)j5ZsepKA|1HZ8M_;<2|4(*oVnvF7J9t3;ZU)W31i_59BgG+G75Fp_Z1?5iB!cP}+q^SD~e`nnW5O(o{$aht; +!qpfi%jYGxs=-y%KHdPKp$spsL+xDAcDTLG(4J1dsXRlERxu0pvD8b2Gr&#wcAI~M;+@H2@WDoJ6_)# +AA#iPeS>%bo}Q$3WX%uxlN8>=4Zvq;WPMw<|M7;Vajgk@pGM6VKYx&@$wWw42ms(%f$4qBSlSr +1zlgk0b3~DSMQjSK_`-`s9UU7sIvZ4Jm=M_>CE?eBAN4Hb&;<^R_YrtqSWPm;=I}3oVMw38!;XKwCcF +oX&PJ^O(2#a&vNrNai)ak;Y0Q_Ll70G1yz~2Whr#nC8I3Zz4abLbGwRxs8kRrB0(a-&axL^P{-^-6Pt +~?Q|}V;$%IFB5;e&&wVjkZnE5S{6K8E{A|S!Mg24?d-M{O{qu<5v0Z7k__^*#br2Rc(=OgImNu +s=Umu?D?&87a*3fSEq&F<1Z2zB`OD*QTMS*oAlM_(e_Ri4-@>lm&-$=$kXz&A;h15R +UY~yJ^xC34yd6M^c-N~`TJ_nVX)ZsF3!S|sQ~_HxZV_uo +lEiq?1f22&aP;+=HJx>2*i^!^SBsgRjl@i(lQjP&PxIRo%_A%^MBBa#@}zl$#j*1UM~YmTtjIHY9%1o +fLv;LlSWY~TFjD?Q^LT$|FO~J!Jbo_pJ4$|Ou!1Se>)4I2)*(+JWT~H}u5e0hc|YDO?AhuP#8?#PMC2 +Xs(%;v{3oqh2d0gxzt?iWf`BrqU^OtBp0@O_czQ0BJIl%Wt;QKgmeVo<_SXdQ}0V%L`WG_f3fAvOqXE +X9=p`1TWM|+vf`~`;o;(K5RPr-H#KtHz4Wi^)HHEe#FlcSJtT|w+Wa%$|B|Zs +xZ|bhd*ADaeFD6&}VO8Ke$JG40(7V~druH2J3>w~Hnt=FYJejQR~qm1iO+0uA`iK|6gd4B`VO_j +u0;A?rAvuGb*l8Y5mwi|7U->%{NpR{i-oheE4IBEVWudAKUN!_5;mCi-_cPVED%^PYax+R!9)Bs1%Ea7vevfOkAVudzWdDy@T{y~oF&zBfm0a;5Y{t*0~lCu2j;6Ka9`mZu=I_)F!3Fy{2L)OZv= +0C;fgKx&ijS`L{PN9F)cSSw~oyWLI)4yEQ_ct;hcM1Nd#5(SknEe}M6BFp)pH75#K7sr+X1&ayHoL5h +&$S?!84J|Se4kbI(Apu%yslNO_2Ky_&(Zs5ttUKM?T9`0v!(; +na6QSI*3f)z$l-m|wjb}RZjsH6$8GqwWk%CeDYyn^h%{SfRDGV}$NjUKPSE$0v$VXks%RcbOXq^7dGv +n&0`b0cLDi@D`wum(wbJ_!Y41N&bq9Z+-}ID)-sfxY^Q&&>?-w?mFw^^m+WUnh_jtd!X&!&SSbM*?s+ +_-H(zI5g_e-?*OR7G~-!E%=Dw*Cd)7~$uTEX8JHl0YK_l4T~!YY#0ma^iedGvl=v3OrrT(ywD|47qX6 +TSb4_WmPPG%uxP%MDFW8HqkOX!N0W8vLVAn$9$8sQa}LZGMVhB5<{uYn2!?|9 +G#5v?^esv&=Gv02pn0wG)@oXBQF%h}h^Gg?=nSujO`y3fo+L5%vf&Y_irNse9Sxe@;QJeGVO8ADY=Mp +X1FIrkp!K0-CtrgM&DP|N_S%E5-E1*4>SqjjwEg*LY=-P4<)QQyW_F0=YmmnFX}@jB+DP&3TF5%dyaQ +LVWk~0*!FS3>>1nUQ*V4CfJ9+1XoqP>;GHcfV$mjpaXGA_J-?X$l?>{cl+#S)*g%h-M=kv07J4doxB; +~jxcJCf)<79Cb@HUzIxdnV*cqxOob3rEL6h27DZ?$&ri7DE-ZCV@Qo7B$H-Yhxpua8IDxu;mPo!g9dE +?d{meRGO-ZZiC-+qnd3c{}$>v~%YT*;BT2@%gBIo~oUrn27z3g)Y~>qF--t-e7Rk+^kNTt1q+OjQ=bR +Wyrj5`B{D6^BZCfo%^^UYhr$UWS&@jzX18n+WfQap5LhxbJ%F^S_&ru7V7HO!#HHC2_WZ@{U|ZV-XfSAA}uK{oDB2>Dv +Iulg9kc2G0wL`Uh)47sy;6j|27@`8oq-J3p(-oguN{@56k*Sof{^bkAw&yv$E&5}ng?qb@zu;DU4h_; +{p1pH73zywP;=e$D%im^Fp&=QCJPKQaV?nYXc{DHiA ++3`n9r?_+0C($l5r! +U0aJp_lDVGoR9iBd$sg0>R@~+OtRwLL4AquJJe8Oe{a(IN;mm>6lZOlE!McvyxQ;T;1bNaBF5dWw2D6 +U6NXGac0+Th_*jq_v)ir=NfUkR8vx@p?Y#@VCAj_L;o1h!ZQwF%A-f&k>UE$`g``+KLo|LDyRP$5ZT# +d{3C2-q94rzS7YJIUlRafQVm^Fq|3#wyIYE;Pph-oG+I|pt5^ssm#9!hc;Ysw$pJ(0mkxVsoT$}Uf$Q +Lo83%D!N+@+*Lbid9)>kTcIZ^&{RjcattS)*q`Ga3_EgEqMbc}p5tQ$O0(?j+_fDP(+~$p)DfpGEvg= +a@L8tkE^xSBaKWDe*q8!zA}KZ!}ZNY@<9h$BpuFUhEO$b!0oJ--^bzX#N__YbXBDd@vd}RA@enRyV4b +V)j;(jINfHbu^}Pvb?`|b-w89@8=y<||M +-Du>ecBOT#S&k?vZ&b}8kDnB2twUVuflmmPoW!J5!kQ{t`i0E5kh~}x2?JK$5PtlL~m-5>-!Ec+6-)M +8M#P1}*?+CAn?^~?IZ?&2DeGL9pwh9Fmii;@j^T|ycLlN+b-h0>ohA)r@Blb6SCU_o?EaqZ4n;kWmlZ`9&*V9_RF~|VT)4l+o;Ix>F!q*6{Wn!%#$xb0; +#}3)aqH)vvH;z$z@N(X)U6pV47w20+^8?Pd4BGP$I^V#?R-6Ifh<}4$W&nXFbnGjKsTLumDe!pw&otaD~sONXy&->5&M?SN&_qsmoSSe>!Qh9hSo^OWvP9Ga*29)ll9jPL^{4T;MSSOs;W>3dKIt+CM +O?&aJ7+cGUaS6v;27$MOq%qsGxa9L+BpYpP#NvzjmgRev(c&SyE8OV_;sU=Zw*KIg;oCjXU{9I=^aJ`w(&&Jv-g@Jv73FQYBf{(KSTC_FzIISYAL>U|# +X%Z$0&XQsAKpCUq>JLk=P3GOCv9x?{^Dfj3W;8@v!I%B_=t*@R=oHJrY22qx6m7^cScVjWzoQ*yG9^^ +NEKvE#DKn#Ptwq`z$@*qp!c5l3o@cC&k@}~i>Qnw5r@pKUn!tHZyIgGAl3 +B&~E6LXfypwiC>mhGo@6!)M&TD}v=DIOHPz%cD?v0d{XWVk(TZi?bAF#9^(#Fz}L+?Wl$_=M0X}oQgv~MRr(azx +J$%$^_bWf;Oz$@hzv)uRFX_dM$=wOqyairiz?$VB#9!EwGPn+FBXiW%s55vecm&2`Vcs{;@xh~FG;gp +dhBvTl_SRa)Lq+*PoG~S+vmU&+w67tKVayAGSGhPh%W!U1YgzJ~%*Q#It#kl#ygPxTFDMyv6ihvCHJ) +F*AKByg8*pZ>JO1xB>@hsuDptDN@aOsV`!c3SI?M9@@tjaJ%3<6)vCf+J)&Bf`RQvk-CawC@2b|-v`t +052J>UH{P1*fWKP}hxA-$oKJkhm!2xnxsThjw}@x6)+$h{p7y?*0kE!m`_*G)F=yFk0T_vN>e=4bBRn +Eev))TH-pKdV2l96+9p(K+7&F)AdhlZojQbOlnks% +u84Y6!uC5;1k1@^7akOJ>AusT0X`(nqU03x{^1V~$R38<^UaZ+Y_~pF|-?Ymlg9@>5p{cM?V +gN(yIS8HxlxSuR>pFaM)bCL3ZMeO1?j_FtDWLy&3q56M26=xcr*#^ru16NsxYt(Zw+)dr)FW-xtaq(h +(M8oeW)_aCUbaPEa>J7B(K55HQf#BbLd70x}xmW7p>TI5tOrvTtCv)>Vh+d$ +c6q3!l|@p9X)*_M}f_l6bTyNmPQwqqILFCu-J@jt-Z>rk%5^JE0=(5Z+Gm`d;JdmvSjPIsE}S@})uB0__8Q}uh;f* +0zJ=h_l72EqUouuoOkZXnu{JB0qU(%l0=Y%nkytc`>3iT+xa +0tzZuKshjx!H!GXC6tYHr-nC67T-a{7{38y(@KmHo2Fh>zeh5A1Y7BrQk{q;+@N;o!go)<^_O{4mA8~wSw^chJq``ep5$~JyHe;BoXPSszIbEH4uUd5k2N`Gr +F)!*oIM8VWKq6b#6b^6$E5BmKz`sI0DFsk2?SOHSzqz_B7+4t6D!$&}UGy5OwpEcTFhI)7fZ|7+I?N? +*bA*Zc3#&T1fu_&Fn!pBkLDIFP)*Q87F{cAqt{#uqYdVFhBM)p^eW$gaC`Qrcn{&Jc7E9ZY>f5pLvy= +snUN7f)k;R9o)8F-i<2M?LQf#V}CT9q!t|NCs^{}sFb;G3WK?w!K3dI#-b%Ssb`pHFByv{bVV(zo@k^ +*?N*k97I>#SrC}tp;B--nivmC3py){VtsSHBuj!JVcc<;t_o*~ok%A~jBD1c?qIB&y3BBaWhtXZlXvhZ%)~+Br*FA<|wpVZYivG$U4OX;E!3K_Ov5$eG@h26=GcJki +dKJOfoJHb-wJcOf%x~Yern?3DS2y-H!j8Q0JbPmA}FmzF4l$?+iZ-V=f+LbN?R>DZA}(K^E9g+uQzs5 +8O4u*18k2A^rKb@GcK+cVcb)v>69p+oR@Mrj4B|^<4YKE%TzsOa7hq0e;NC3v+?&7J7KO@I4GV(s`u_ +bxFNdRr77#4jPZW+K#iBvGnK{u*t!F^OrH}X6oL8OQh|w@)M&C@^a-TMqN` +lY{{ejKs;ZuZg~fT^~q9kN`q7N!1T1{Y|~CTHvZ{Ij7#%N;v`l+ +GtX66H<9_8E9#3p>JqfR7Vd?bU9lYa9fu{iA(X=@va9XdLmXWTfYF?qc<8nIkB--!k-+Hb^O9O>t3r_ +6D~Z*LEUH=mdyZCs^ZKia-O+HRP1qJws;G5w9S$$ibd4d(w-l4SlA#yoiPee5gD$(h@fuHfKwM9-`7U +eQGuj^g`dKap6tj8nkK?ODDnx@?n0 +!1g7`VOJcyk@ +#Q4LtwHP@V)VMnvyfW^SPYHy2G%wxGVC`Y+Kb2c3U{11H!aNGjgP5%EIcu4$C*DQy&ov7F*vHq<$3~0t>j1vWxEt~Lgwgls^v|>l+TciCMS$mzt)VnPov4i0c9p)WWUZ+0!5 +PDRY$e~<HwQ8h-ks(vQF^6Wu52^Iz+zb3tD||0(~PBy_s{^&OmZUHqX|^r1U +#9>6ey1hrH6;=xSV{qEScQiCNNATUj01KnBFRNrk`xT(o{WC=%xLz;r!`Td8vw-@B$-M6Z>=HiSRB=q+d%2~(@y9%3lfZs{TKW{;7#Q +>zXY;9vfylmhdSl}61xRljGrEOo|PZMCQZ`!p;`lu!QXx~En2HLpf<( +PI1qVRgd2atGp;9Nw{jX9?C{I|K{`vsct>H{7#-a2`aN6#sJc_6AC+D8hjymQ+@y)}K^*I|EfeCF6MsD5ugXX@#niYssO{^S3+l${azX6`@Iyvxv@ +|EM0K{#e=yKnT($v!9G;Q%~x8|tKO#KN4E_L6>4ywmW{FEQp8?IRP5C$gVXo6(PF#1Hp!i`Y +b43|pBV3No$}{tr48A8h*I#*=G2P2$mN(nTRo(ay)EHMPk;uzrLeb+jXTT@lgivJCaQ*PM#zb&E6O=y +k9NgOY3#b`Sc}gUEukB(?fpYXMQ$p2T!)OmK%BQ~m;224)r1G*IFo1K{oeFPnO^zqV_Ivh!gqw+7-I +ZBWaS#@e7>jXKz`#qoZF)UD +T&%WHjV;beao?^x>nvQpUjGZ@;ab_a*2}gl8&30}?J6kS<3!XST+6Lqx<6vX{p1oGX-*PN{W6a^L(jU +u&|L;fqK#t864d97RaSeXu&@XUJcn4&}O_y;A=E-wY#=Vt!eS-Jsk1_r=eYH29jhua7#545>v*ns4_? +eG*`O7kXMJNwz#`(~8b*qu%iE*C86BR%9Ily;`ip3WIpIZMd@F3qk%RQ+Fc&BT_+SwAsF4_}$hOPDcE +i(4@sb6L57rI8pZ*}|M`fGUex1!*r<2QKBurqeW#uNV2D0r>J819rY)I>3PTa~X-1Sn@Pz7g;4-vs?M +V;pgvXe-ISZ4*>HZE1J+ez?G#4`IkPj-^wcpjN;4LU`PH{0{T@1m|JcXP-M0-b_EfXN_}~ciPK8DVA& +qN5=z-A4le3(nt)JkoN{XB+pEqp;2dM70#v;N%7*#jDJ2pnWWA~`lMDZlCjvkC%YkQEs}Akci0Xt2+= +Q8sC_E^WKBO&+ax_uhJA4#>HH!Q;@SA@2lO91uXfH$#fb^=J|ahBj3GVr3nN}m;3Ky8gD5yn2b`KPAK +UxN_to}(#P=0*DUkCiRerBJ=5sw{WA^zUF?|l-^Q4j|=u-@Q4|;^WOAnF&da&p?}f+bvz4hCNG{q`8> +GRLtL_=G83ys;zl;p{qMY%!_gJo21{l-G2=2_koUxB0bbMq-ct`S`YoV`Fx!o`iJ>kpod;IpJ(Zz7tH +58J#^4~{*)ei&U`M_LkG;~{?bq{o@H!}C_ix8J4=1bF+<;ich`p_KH#zU3*>p5um@;w#67XZrF2!?4} +AYYdtxv6&W+d;D`e~~86!JRyt2{!L_9tSe8l}*9+)4XE{?L+t0AT1WgINVk7iyWH|PlM23d~wyl;nO9 +Ikw=LCNH|45>Q&{sMh<@$U7I6=JW~F*=ej*^g2Csa%}v)53^47A7Y)p7qd=ppC7wU_ZV|>MXl3aG3#_k%sR +brQPoLO>$D?wo#L%gw7q^X96l+we%xn6yPfpm@LA-%jJVx02J@3)DTnSd;umeYfWBknAw<&~!1iR70U +z#@)DYzq@FNdcM)K~C)~lIxO7qJ-hJDA}D5NRG7mmwzYGJ_MxgdadwH%v2UB%{!rDJj18~)4(w&!q;) +7~ZQ8^SVgs^;%6SGoKcPk0Y_Sn^Vg1y36X=0$vInpkqdn(Xb~(vj_W5q$kMA}tKwGKhY!IUV5{2HsUX +!=seJ7^fq&@~~&vb7~pzDcG(D-n3?W!&VWZ&gpf?Otj%WW}WPZ91~D6;axIk#BWv1(|nHSmuPEiin_1 +*^VMS0beHJvyA~hZ`86R4t1cv-s2*T +yhJl|P6IwQnzDVbK6RuBJV;vgDNhl{{;cE`-Ciw8t;4l{4sTvDKfg5y`RS2F+J1}rvbw2D>e7GSX2*K +49m4*0yYLYQ?Aqi5HmmJGi6%~Yw>G!&w;J_2A8pRAP87vUw@y6Ojyi+Z6u*-cab>C~FEZdYM(zxHwW52yJ4YIvU54`?W=Ghb8WB9%f-#xoT{ +a{u{8`tLe%N=c<7RLd*<~&fQIa?V&M`*6rt(KOyhN+Q#M7zj0XX|S3p`F*PSzdL|8_A!REEF&K;qs=M +a<#>a_Uo(nb!6LTVQ*nRo~QB#c{VWK2Iz65auG9@ot1({P!tEFQl(!oIHO0)?_J*pEw-eTxgM +bJOiBj0Os!1+^vm94&O51J99o%(~s4NL7b~O4p#aUWVn=xax4Vqo;WGnnc&_Y +s#I#_X?Yq;{4Gr`_yU&%I67LzB3`J`~;S_$nq>(JwX&V+f$s6B-+ZW(|d|-TB@@;T@;r%h0I-N6FtSA +y~;k4`eH3X_`bGp{9H)f9~(hS;`x%^cObl(c1)h{4=(=ZH@@+W(f+X!T}+?!`Ad|3lZ<({8ThdR>+A< +iCWFr0t%>|Hz{aCx)-l%QsI}kgZ7ld}2>j1wKr}~UMml=T3D$;1wS-CH_m45up&E72QyJPCR4SaO_vB!N$gfH-HBjfi+;n +@a-CxK?mP+`z&D`##7hj#Po7q&HLuatM*@yAxRFTYi_@AAL1H@tb>z4}IzUO)BJrPosCIg0Ty9&7(>+ +*8qC0rcyf%oUR;ZGA|;cz1jZyh6zu(WQLFGQ5A6`#;(H&{TttEsxMK`kHXfsK4Nv&c%K{0@{^@HSe|9 +5A3z5y;PR1Xc%Z+@icYjQXjv#Bu!lRv8^|)ep>p#+v_&awl`D3qw%Px==FJe=wq0h*_ZNbar^%Tyr86 +o_cIN2Lr?oSt$K5;zzXp=|F!yI$dgzq@!)d;z&4{+Hgq@K07NsI891Ed2=M^xOHARhHhgLH +{<%M--GX0$#h&LXIv7T~({RMvjx{Lih8)bv2L;a-%b- +s5Z;#+oPoW0uqw2~LjE!9TJlFc$+i{}6GC&_1JZt#L%DWCOn+Y0a{>ltHs26)7I9oe+k-scgUnyjLLw +wBc>OWwzevY$uUjvU3)kZ0yS0^`Y1_iW2~xeaT0(5pE&ECsJcyP5Dl<+InDUcSNp2h~P7co_0vjo{M; +lRL7jG?C6bImoZ_ZfGuJ5ux9p7<%GO+H;EpNds00^}g)=@Drwf{oK+x_ped*IOK&-MCE)O1RT#=lbDl +X*PSOLddH8SRC-6yb$4Yr+&vqA3HaNSpzdKi-P&T>H}IT=Y+Xql`R?qlPBXzBD>L#nYC$N{Or`-a&!5DX>6CTisqbMu&8>sh7?DODE&%($rRd-JA?JDjaCo!g@kZM^jmj@cdI+4kVV^8}P})0 +Y>Vb?;iY3xE;kuM1opw<`I#LUKc^NVsWy!~}uNk9?@Bi(j%C$_NGHF+OQrW2U`Csu&KS0LL9ke9-svB ++}a=7&eQsrGzYCF%H{T90~_jR1*!$$n9L{V=~Qf+ww +SF1i{h%>~t&ESyoTHj(Xt5|ik`25r9YjzKfdcdUMrcZg3u8{W)2MA~I=Uq4~|Z{{I>^PTYK+DW5rgT~r +tkG7k7!^~-%B=T8yo6)A^b?66Ddby7}4))(}eA5z*Z_6(C`I&R()QyolY}0<`XH6CK)81-T_EhCxYO0 +8Lx2@g0oc%k54`Y-uGgV$_5vZA={7U(r`36}&6qVy^Ji9B-mvnfP{n +ISFw0|NTYt9+=PhT3x{t5l^9zI@NkWM3yX0MS)^WxhP+8%hDx~LuLv{PUnP2N2%UbIZ&F#&eQ+XOBho^-H6#ne;m~`eHn1_GR8d{`PsrBZ{BPJH1`exl`Xb8s5yV +8t>||zQ(;?8$!(wq}yJ;)-)iaR)Xp?(%p`vxygEnLTbse<_wqH~>!U@LR|0Efob8M~#33v2EI|~Q;n4 +aTkuf;jCP)qdXN?#vOoP4foj67!!qwm8UgE3z4j`wFQOY~)-EsSY#*To~fRTWw7)Uo!WENSC@jBhUXk +V%u`=>f(aSI#)&ii(S*^o>@jFEDb>de6uhNy^s!1n^-Q&LXb!i+gAj;;M5ch&0!hjoHlgV(1PJMeNjF +ULzm2m%6Z=Gv?VnHfEA}KV-u>GJx|YI8!v3d4+lYFg_S@=g{B6oBMe03tn=a^i9S&u>T65bDDnG-cYv ++=Ru*&x7mVySyNZU^NVMP+0w@v-kpy&?FNfsYf%-WS +J>ldJrTcKz){1iv?&Fzsa`bT!6SGD1tqpIi(_>{k=DC8Vdcm5patdz>-MG^;h0)8~u6`J$I~4P<>8%+pv4Ls +Q**mRytHZNhGwgN1^W+)!I%Ts`+DYrXm}5e-`)vJs@xnjqs#xoC=XuaP|&dNp*> +NRgSNyS*<45R>ii9YPpU@Qnh7FAT^Q~8!5cP!pUH~Ng-)9j`iV2I1oJ)>XwvRzl&|=^Z-qCzPAD4Li{hVp7;_u6k-W|N=vvVk_F`b?yk!p+B5^>LAzO6R_of~aAl@7lJD@IlN^)F +-)YH=OO +D`@MP@AEvUZ_@2BH^%{IM@_s5hCt1QyiXcu!6Hlf}3-k~j#lIuQ(K6uw`r#;$Q;j7sux)@IgGTs3<@X +anxKG1S&*g=w+5$yFxRSZswnV05ABI^Pp)DPJQ*xDdH9x_Y1gb`-504^(MPi +9Lt(3dfOn6%u{>M?f*OA<`HhWAM7Y!GN9~-nTMG6GuXeC$2j+q{p%>~+?dcsyMu6JVpn*s2!*$6#qT^5vF98$|8eeS&G}!)`5%j#e{8wv`McuG--`LqwfZK~P +k1)%r$l|9>nCmUo-AP8nI$l0n#kw>%VezJ9_DGv=bY8Pbor{+y%L&9`m>-bqB~QxP_s#AHIaWY;%{-zIhLm(e@Pt&&;2s$WTSYQB9oV~7`%)&y4) +|0NA84qA1v!mpe>?so4m@~AIPg@dKXy5Cd#FdQ+Acb!~nSseXKvOc$EypCzSNC_q}kX;xTOF@EDn1=C +?3;jD<$LjpK26jB_#e?W9YD(UZRiEn06sD92Q)#zdG^epf%dZ94e`&1c4)iXC^p95a2hq~G?T(@QLpR +-9g9?Fxg|g=cETv!3~%(TQ)q^M6Svq-~<+yC*DV<`CxSYyLg&l!!mEd8H#Zu;*|tK5p2+{^dQTM>K7P +OP5I<%kvpquk>x9ei8i3R-AV;0H?t3!kZ5(Ud)aEWlqQ+qQBJR>OEt-^bU+}@AF?z@I8$4q!sPFg?2V +*3BKl8dpoOVt?le!o;~^$5g+iran0IJ=8M{kcS8dzR!sN6NNz}(YiPXOG-jFU8e><99nrSBH@>aLME` +Wgnr1uIH_%U6gj$RoM&eXXsNy=^LcNI%%LEk*QWR)`s|VWd2gSxGe7j>1L4h-gG)3=fbk3&w~_bf;2i^UFF-yfj$prDN +1Pk=t=~4v?ogIX7uRi#YJ>cq3phKTPR`6#9#20`+OzRC87taP{E&9>zn6A^JDh-jHE^k8z8LCA*Ft&t +-my;%IW*USj!ekdH7kk$>&4ZXqKNC*@{I&vHE_kL*$+5Swz{UKXc4|M=M8;HWA)W?e>)Yg@zj&t-_s6 +KFH@DI2Xe8$=qJ_VU~D|bSFkHOzd*$c6AqDYllIr(-O;{H#??%y-wwQUg8l`+suvG#7sUf#6+Y^`-$F +TWqFzio&vLw9Ze5sb)N|C;pkD6PdQtFVxZvyPpLdV1ZO0m89`xDHG5F>w$zszt`5o_l&w+QTDDx)TeFJs&&(c>7fbXf9e^qOF%{Pm3mod)Pv +^lxUL^1JlK-i3L-!Q&SmEUA6U$j|XbFGY1igoZkg0=Y3Fm;o{O}U0}VqewYSF!WSk5;b{i)-iSwtgGD +*TQ9tOE+y!*)o+YvO3Ws%jHIuQ)Q;ksnM)yEO!m+vF{1;4kM*?!q*dMAC~q*qyImGgC?rK@n7SR!@epnFS{{knG+edk@wcPzZN8>siu1K_FaOq*5uCW;%H4*mPPir+ttGyN>+7wc +GV0G^}HU4igs>csb0=xgZqK48d+9ZBN4wY2pPM&wq?ZQLVQpNPml(X>S7nmDG$&fDlbXPt&G0`r{3+QHX@f4ccXm_9C&w))Z5L +d_C-c9eh7=$QL0{sjTEPuj-vzPovmwDa%Y_*p$f|3JpU$-MyCK;;X(wblrR=y!oiQe@tIKU+s0;18_Z>({qbsW5AhxrJRv;@_DWQO5Y=4dbkiFBaOb_wc6-fTyGt~8o$fI524om{13(u$EVeq`ZqUWO>U +?PWv{*vA*kpsOY?P7u(ClUVpu4j*y%_vJU73ub?JTdwT%7ppTvS_BM;{&S@;RN0ygVn; +>L}lX2IqnXQ_jniJZ*bAoMJ)da*9_(NL-wu3oQ{L;k_JA9IZwbdacku^kw-ZHbC~v2O@}y_+vf=10eqWaZ94R9I>zFi&` +vm!es?uguWFekRuN7DzBE|Ak2xgwK4bbALU*UWAO3}T(5Kz6)ze3`Of=(CeMD_x;B6RXQ02fa?dPL580t| +pb~UvR&O?F(L7Hlk#;?6{6&TxA$nvqg<-V$^v0qQ>en6Y=`Zr +wnwbcN=p94J%Ge3sa=9l9xwU3ND-hHMlv&=riOUl??NunFHyI~M}n>^Bh)#eFa;mzj%)K|(muC*KTdWJvR_a(kP_UQ937DgQ7O3171ccvkK)AsqJ!^$mT +Re*22Q>j(9L(;avC1EDq+oT>)*;;++3FXg|J}7k%QFAi#d&D^h$M;i-=vG76_b9mQfj6S>^qbQC^bbj +vayr%|)BjA4*d%pOR&gr9b@PQPm#BOav~uMS^iXzkPw^9Y4nClVaK;#RId1<7P31;e`2!K!lpuEPLYY +^1cfLXTaCgr>65c#LO?0yjvu>%?u;YrVOTEJHCW?IORe3M-Amq}jA1J-*b9iR`%89_+4N~^oWtMBlw= +Ek~xj*5V-)$3Ae=nq}yhK^n%md5;VFMm2Um2Usr~I??%D;+yjJ@W3QOQ|R|FJ3hYVO0%AL~PBc&1p~2 +Qr2iY^2P`=d%-=58P=TdV=ldT19u$>N|&ijeb{y?`Xy|c)jkH2^p<82Sbb(%$!K_f6A@l@UBQcXSe^c +#7M5@pP&sl+M^8zapR|}3x=3aG&@=3pS5Nj*vdQ=B4co7GVQM4f1m{XUs-ZXLsRko^q0 +seGH^L={g37G>_bT|AH`yyR*vkkMZxi9`6RhRo>_ayKlQ8@q4f$-+0`xMS614e8&camx=KdRgdD5tlo +a>ID$_cPcVFH9i)&pa>%bg5b9cQyCMl##u${#?}FXlPjVVfV&QjJ;82?2RJ>($4=Q?~TEP2tGf@v7^1 +o#@+~HUAR98o4?2Gk7H5$V_kA&f4m&k-tW*}cT!}3us!Y(!u!jKa*s5O?2!=~pLxIycyXVU(w}x<^gh +Xq*(d!k1Af>ixyj()l5DMt$FTcATkA{uJ*)byEp5@~6=N@Zjr~ITIC{_gctF|R^SO0E$2*Q9iF2nvS}+p^dF5^B?_~A8@k3+sHvtOr&ylHx<+^z=(#n3#;1wR>(@__VhA^)ozcJ`z7HDm45G&}mXH63 +~)IGV?y&dH{)JG9bbYh|2I#uvMDpYVNIqpqgufyeiWgMI3*OWFT{p6y=e8KR7_=e~rY&We92+GClv>W +LZCik_H*zxmUOY-yLJcUDX*>fPsUT?ly#F!p*vqPPUIGUdchwCT~@gN(^Vc>FP_e8J<{wvC4m%rh80? +z1v(t(3i=&s>)1>%FMnxXmjpv*Gko_t$S=>*2ct&4`+AB|X +5v}XyTu3gj82KFV=_R_~#8z=Cd_d=cH#H*T~<7_VnOlqQRE92pZ8Qb`D!qB`(6uSi?9dd8Wf4@+Z`kiH|04k7Kv;^jP$w0Ez4Bqp-7+eG`sak +ihIA!P3Dr;kP8|A%8Lu9j&R7!Pkg6kKw~gUcUB@)}fP4KmOVHjMNG*pnp!T+c>}rG5kE>Bc(#^dBpR3 +aw&S4*l`}fi=Wg>Svs_y=u)C?oABb`Hk!)wCCT1GM#{_17otI?re-n#>eRw#q95Ea?LZm@or{O> +0z&M>5%6Foy;r5}LoYZ!C&w(+U|EGdpT#dD2&Q00|GuH1DQlB|i?j^o0NtC!Yk~4B&1lR75%@dX-^Mq +x|oGdL?QOF!dpns1tN6+>DGo0ID;vDI+j2Dc4K-V51-t9+UUIXv0io!cjEZ)VDUq|AS8L{WmjXK#;?T +}ZRZi&pF`h{(piapn9_V|ufaN3Wk?>x{oYa4wl%8lKOQx6Tq?b%#6$a{fL%08xt)G2xf*jhI +|A|iGB(;|4%d_J(pkQ$36K*fs5mP;YnHqT`63GkkYB-d!GfSHgEQ +@NP!r-SvET1>Ri|c~`)9g?LvOdG~R?yB_bZkGz}Bcb~?)Pe-xOH;wNW;oYL +hyR0{jcs%38znAc`M!^ew0r_jQelpuk!n>r%I}6`A@Xir=Hw@Xo>KeSeCh~5G@8;m$oXES=Z^RqV*!z +N(30iCJN&NwyKeTB&yS}-Nx)|o%If^z`NWXApJ9eqOByxU`Rr}En{dM?TbyWC{;dw3itEzpPug`p*Z} +t5*p2;^=?Mt8?>E^0!dgw2l$FKF!pZM$7L;Kz^+F6(AJ7~6fTaxd&k#>@O2S(brk(X0#&Ug6!%r+}ZL +yxkpn@dB#F&}N6w8yt*VjbG}6DHjSG_*?vee>`Xh|HzoN +{61Z?m8<)M-;K7%s!Qm4Z??KeXz1oWsW^B6&mmKfYt8l>u|~Y_Srhz>m2ldcQ1R~ +S^Oz43W6Viw&Ng**%5Rr>rrh4G7o@GC_b${Uf5DuEFM?KfUT8dQFBLMz)AY3+ZCk(>dBmhs)X~~L$y` +`s@bk2>Ir81dCJuk*a2?0F;@SgPSKkW2q50=OmvYL(gNiTYeNN|-?J`!|iuuB4=0-VFzG{ZTc=$%@+sfVLi(XTaQK7* +!y$0cPVYl)??i;p7&-`2l1J%(Y8K+8QCWe-LPwqiPz@%jvjg%{m1>b>Jr~pUgBHR_}@q?QgbHx9DV9e +p-fvk6kQ7S|1j3&j0;=qBmU6!-k~*W9azY7E+ +C#tEaHYxNzxI|P5N=>gu?RjrmjTHQ9G2T-=)5MML9Gk&Yrso3#sx0x +}<@6$sfWIgyte%nBQMa#h_`TS$`yqk4V=W+f%poiuNv58~N0_^VEmf%|nI`ks%0xg7}iv7}L89kndUZ +-8N9(oYJ&Fj84)Jqz;Zs|~yQ3g0#@JoDqX@>A^S|@XeE&j={ioN}_*A*>^J>$1%Qm1{=wswxZC#Kxt_ +)enFxLZz(zFY3I+Po?j>W=jB;;^rXYL9oYw27WYEFLo>+W| +J+b%_dt&h=_Qc{#?1{zy!#%P1L+pvgm)aALfhUdSdm7(TIs)FYHybgic*jnC+D7mLOEj^Ie(Q_hmG_h +PYm7fP-{Nzs7{z{m`_8-ZW0$S^@3C>$c;C#tP^8yxLH(j@(DX4%lQdUIAEU!q`<3CajORwVfqulag^^ +=i>+n%8$vZQCPYSEpWTu{ER6d&+zZoO1yUY`#a-_Z3#+=IgFoy5+jgD{YHvAi<|8|C&uX!%)x;L|3#S +F>t*Jdak9^-I+JN>2$wB^}maUGC%(-v3j-yc(YkyzO~>YitZtv_Pzm(Hu+h;_uxJC9 +%JJYjh-Xz>>0z3cUoUY`*$(^1N}5_V@{S#sUPUEl)Oa0T);G+XCC>Yy?`ly>2pQ>0`Ce}%n%2wK|6?V +ccPsaN7_+(2J#rptAjQUR?pzs>mFQtQR+BG`9sIjlkxnTh!c!Ma5KhzC;DZ7z2o%9G4@}K%F!~~-|~K +umKYi@zTzYUhnFaNvLjwzDBkl;7b7_zM%i6N(=&c+J_Yf7uS?*o7tBEe5XtkY9`Ql;( +hp}U+G8%ooeM;9#|%+_73EvT@P(|)`}K}=A#(zBWUCyj%pcHkjgWZ@IzFxPs5jp%7R$SHb)VsV9Ai6= +_0K`shXzM-S?v-=jPmjF9(PG!7~qQ?YmsJam9eoCX`}0|BYg8DU+R#0H|l8jgAc#;NR&Pt&x~y{5Ac? +H70hWe$}z@C75+a*Ul__$LOef3ld%i)bHM{TfdfxlY){{ewLg+1PE}!lzXX|;^9+*jow2sUHtU6K@EC +==A$RQtUD%T(LWCFNlO$k{Qzz+xC$mIA!*g>Q#xqF-LE29_((J9}_`e4DTZU)?bgGj?J`t`whyled;4#JFa+b(w{Qo81@_Y+A`2~<{;@Ya&yIg=UVX_= +UF`*9+{_YI2rR)^V|A#n97ERyA#*G?3esc$8p6ZzV1}41Xn-J!+E)C!Hm}T=8Dk3414=fmdqm-3SKKh)p*bN&kN~8nG=Dv^xc^$0)59cpR-5#1BH{7FCOn-GANfq +W_3_Tw@w~Bex(RlJSr!9i{W2w!#IKuC3VgILr29umY!nT5--)9bw38pD&n1qQ&i4ws2)nC{sH5x-g|Z +Hz>JCQ-cS#7T;$UpZBK@%F9(ebg2wLAM16|pI`C|g$|=sWy;`Er8`6vI`;Ql0gYqwFspTDe3kO@>^n< +YYsx{jImOGB;L2Ih_s*vzC*BqC2d}SG;=wa}|ysu#lx2v(2=}-9<>t*y5E!0w-(vDHftZUw%S5!wkZN +PqIgbCpQe1sj6c4Po6qCPQ`et}D%a$>==--2 +@y0oD}+UDMsBz#A}V_Q;1rEEv)FNAOSP34o{G=aQjCgV%GXGDEJYko()zL|Q!w4-`Z+OJ!DN@t?t-BT +A=eopCkGE=19z5UxG{#1Q-ksq83UeZM$ds{j4uvcms&NCCS&#|7{?ciN!i~6;Uk% +he%oGTj4wxipnFO1|_jCQ9dqg}Ms%wOIOV4c`z2Jqx8_66ZWIdvOwH2BbGyN+L}2Xve@v@P$@#3|-;a +2PnWpZHaCy68E^Vcnb8ItW~<1s*-UM&GzpOBoyljc(T5&LG++|B-66@h#w?BZ7x%#P8Xfqm^y3zTc?N +I7^gySk5W$qd=GNeG&d|!MF#|?x5G%UVWA}_?OS&nkUDht$j`rARL1W<|{kNk{Df6vL0gYM$jVPeZRf +5t|^|KaXso>o7;4#^|wm@M%v1lA0~YbqyJbMOBsOpv2y;5R?=JY`13&1wk3+nbIVm6{D-lwr`D}IbbR +@B@*eayz`h1}Oq?poQ*k4mnkddm5NY&Jwu2scz>_gnONN$N-j9CA;KTwW#@KRYn@jjGk8mkk`b8jvDZG3xJo>L~=2(ynFF#GiX1!PK8}J_LyirwvIADL#3~b31E^0}*$n%Dcre?x+OtH#EHf_5N)j{b2saaE%Rd6l27Uv+d<0$}d~Uvo +@;9RHJHLs*ZoIQx+P)j`3RMp46Db)#V*r&e)JseL-uspXKMrz>~c +1RKPPDmQRr<)0_vafZ+&D^slXWZRS)T^O#6qTb!lIXQdqC-DMH^Jda-_EKx=)&2P1ZkMwS{xXVqr_Zh +ijCAxbE@ROj$3%A>+*)rOIyA4QQw4^H +~ea(pOdeuzLS(Klo=b@>o)vr_&j$=*&Fa~@in9TTTyL1^s33b?HgAvycAwuOMJ9ylAk+mG`Yw6TCpf{DM~6vniW2@R?JIn^OkQ(=H71_}MG;RWdH%B(Z7FjOlebIJ<|i9&RVjVD +RsIyrQ1Ih+8Npq6}j`c?y)@wtFIYL!Q;ITJpkZllaa%{oEM8+dkl>f|)M!qRx@{z?hQcT{6AXhQphAK +h60OrV9a&{g$D^GuU6uJtkwUJ1~x9nP+FD-u)Mq9bELgm+>w!=3SB0XNwSX5(b|VK0QPFK{LMPA<`T< +UW2wCJ8Z_gRC%ds^EhTcb47qTUTCLy95|L|*8}uFU5K{0r-R9QpxVlqm3p9we(i2iPapomD7?;lm3m$ +E{BM9+D*nHX@t8(%f;s6vUdR~5o*JcFxdLUHt*Xux19xwdd4;udQ;r0#`&K`4Xi^+|aj9Stdt_$VhU%r6-nl61L19mN=w$# +WWT4Tv@l%(nP*Hd1TI(|`^TdFViG^E`@y=v}S^-LXhu2w3a>A%@##O$A|xxDX?K2^~t)#mUdrbr&_XG +Yv{j5l1;v1k_`O#S%07nAgWLv&WyrR{rD#gvI+a%YkyoxZ}nH*<&`6@2cIGRSWEoRfn34#3`ty +>A!w%nwEx(axNKkiBytqf@8a1)6@FA^WR1-&x)kbzaw3Jzcu`v~^=PWjgv(5*E}i^S;!R0(t_T+@npY +qu&$fN7*!T)?|6PA9@l*wN!e(o#AM{Z6McYx3GlF +xb>@R7RyM0HMa9;DSzz7pP?1-RY)ipqCmmv>r|3p;>cRWeroZaF_2aLXcpcT}`ECa2R+vqYOD^~xm;8 +4|Bcv;+yG63tdmTqw~}>Y0m=dJF0jn1_pbk7^8hUZT0BZoWjDEXPu!O_RSrHO5qd-)i8s-OyEb8TTxC +hVSH_`IrlEbTHVLFG^`GuAWL=!-u4_DR@ +>zt-~TgStr+$+M0=?aVpQt*x3@mMkWBSZuY#3(|(49R^M(D!Smw(dFHOtg~#2tmD@7LP>)bE(#1-bG= +?I(@`sm=1E(}bP=f3aGqxBfm+U8OPW)IerqQ1?4C4-aQ8x9ubsfLR24Fgpk13hhcN^VfdtZna@(@?!tK# ++2bznT4fXYs6HIody)I#c>ZX+&3iY-JD2Br2$}XV$BKSMz%x^Sk1#jI}ItP?2^$9aHvs{%`PA?@Io)sp9zO^gtLgL@&PcTmQ +z-<^{`{_ilyPu8H*E0zEMBRmwJy31@1OXS_kPc_pt{>M;EDrbr(0y}BFnUUPmXk9S^S<^;o94b0O6DW +Czli9AbE>S#-PS`&q4{lW&3&NgnaPW7^na~=_px=9(IRkdrj$1|V>=evn3#1rC+i7V0P`)ssd174Qry +s|?sdFk7je>diR&Z8?{xIf7lztY82S;z9g#Lp_!i`TDt=Cgh*Z;{7XCQ*5S55F5O_zv2kzHkfk4%n1l +B)Gh%I77>x!?T3vUF6+mb4WkV;+c04{ph3mj2g!e>GN-lW4A@j;aG;2i{j`#!|#ksT7YP~KwC +g2OlL>T`N>x(lzYrHyK*XbE%?5N&xeFK9srnUw2#R|STfw>W6Y)Hlzb`68SjT5(LYk+5^iYe1e931g~ +U$JVsmNt@i`cm@2==^pg^j*p!-%JHPog_{%<_gcX0fYbQ!f)Q%=4|Got+9v(Nl!=Y7UI!UlNSe%Epv_ +tnV*??=L&72oA&!ZNfg};Sfe)ly@&RBc2+~q;XQ&ptCQ6Kymyef%N&qBHBmpq+SbP0a#Ehgn6FPY?nQ +8pfHri?^H`f&*G1kSNt{}UHFtn7w~6+OU67w_d5gTqU6R%|1e2O795-do-EfUqWs$zrqM_L#e48A+lX +tbU{7vtLcb&ny&^O>TV<`@oZnPWrKj6_Dn0t-yZ+m%EPUQ!rj%b{f$tNe>!84BV%w?>BVNd-4V7!QBrl}ZSCArQ!C?^Gn_uxFy>X@s#mftULs(8!l@aMX5o`6q +kshM7s^WCH+KTH${Z--o4t!dP~6*I3F$4Fj{zs@nR9pC=j$OrDFZf!f}CUq7sg0Fv~Bl`-pmy#qlG5) +Oi{y*iNps1_?yl$dRwALf#FZv%dcUBMhciJIVzq_;uJau}8Vavq(Jm#w*EM!}I4I7ll!E@s~Z5`~gOo +Egp%rfK?%`&=S9}(YgeyraYWm)E}`RhxOxM=HMQgZuexR#pe2E6Ji7nJpMWHUB>Nl)G&#$Wk6lv|RZ_ ++G~IdpxR*`j^z*`CNR<#GYtM(nEKljXRmcN~pM+z{z}(plqUTDASoKismPX#q5tV&K}CGmZ5oTK_icW +XF3X+_H!f0MH%4Qg}p@BQnym5$@9L*^EzP0_%Rq~F5XEP{aMHyK+Q=quSZ%7cwzGLwHV8#^1&@jQt`s +Bcqn3XF(z&^;K_J5()RUok$)wAlkuC9C>9T5F3x08;7!m2OB0oj%$C4h{es>8baw7m$5ifBTLO5q%~IwFFgAQ_-Bj)c(vL(H$NX)~sd+auXXyrC}?x}=@+W)&$ +VHHEOtIJp&e)R;ncOMt*l4ey6WMo!_F-tPx`cA&gGOXK&Mr|sbl(W1aH@zDJp-YImbU^V924VtJ)PF` +6!r3wFoq +-G?{afqXuDCf`K^q%WsJdTj3HG^mA1t1pw0qgjo!9D)pop5f2{Wp*7hTsW6+LqQO^=wU-ek8W^1+2vb +MjC@4-gqnz0QsUeCk#>W6=ea#D2M+US*!Gcb$aP +%VxfJRF>cSQyxsi1$cRa_K-yl2z##TE@vO$!3ykH%_lz&Z{T++bJPXIZqutN=_b|^sM1Pg54$6Cv^l$PyUbM^Sc~#C7gio-9Mi_<^mnOy3C`97oua1@G;N3FQQoOcY>7bE$^sx{A?my?t}i#i(Wfn-d{RKo@|P1N^WWK78&mK@4)ybGJ^KXDMWbDb!lJ`l9tEx&7; +kGz0Y|=q-FdF<0|--CDc58G +qz`OU+nkfMF?lfu|=eZoyybn#3hn0x!7UNm_C_`aG1I^Ov?n;O+q0sAi1GTdQ}|rspll?5|m8dF`NsW +f=?0TQqyQ1GI1{V<=f$zS5;Roh8p|^(kvbnk@-9271QxgZcjo@$JZST0Qn-{f6ZP5x;uz6wYOfin`aH%CvFa +w>jB!RhHlgYtak!?lXEM%HFvj)QJGrDIIH}A4shn#F7Ng5{4@NXpK1vVc`Sif$Xh=LxIOp(!z~`%9!F +UdZaZl!`w#3};9YRVtkL-TReK<~+#YzwuJH8)zQ2uj_XAfu4SemljmFm&z>fRM2KW)4u`sj)b|ol#{K +}5(n+=$?U=HSZ7$bf^U{^w3h4M3VbVk8#kpUl$$Al+gQf?cByxHyXl|8woEv^Wx$DW=)Dj8D +0qUE_a-h`ckjK*-)`qbU(2r{_oj<<8GkRQH@g|Muk)lQka>CY^xEllXsKv5JfQS-|42hr^q*aVD-mOk1M +)*kkhpWjBe*Kgk)I*LiPedp6GITN|xQ0#igjb7%Boua&feFJ1fdZ02OAe^lPyPx(1SKxY?57BrIqDTILLBpk1Kv{zC;>@^0S}_%-Dpd~ +0%x%DcfQ+T|I>eQoofz#4VlTDRM_CZ*j`n%C;Tb@pz?WNp;4>K0=BImF#`@Hv>D2Ya0N`NvUbA@&g8W +uYwB{fFp-^EdlsA6P4QI7!rZVoc|)b}!4h8ui07fFl+QWF+7QafEUa@ng!bsDl-56UHYV3~&DS;YjTA +yeK%&4TYtTeP61md^t5Tr^tL<*+1 +o#2eD5UnPtDZ`|_j-ARx^j(~UC3p^h;tA^n#<8pTdZNhR131dN6xJbqLmk +hpSMLsr2~Nsd1E}};TfVuwAMa=1@~z!(CWy4KNUUpK^Xqnd>9wuRpGunQ1rKP)o;W^Lgz|2=diOi?^Z +@z8;FC85wBc~&wHDP+UyAByYg9j-vRq=|IQ}oY^;^5y=0d!`mV7Jfvz==%h6`kU&_CKu9?=r&who0Wx +!28oK4uNkUg!4FYxrHP;qalz8ty(6Swqs10or#ubs5jP*lH^ey%8=rn+&-S`^J9fpU%j*W0Y4@tWsD5c7O#MpV0?6JOAp4mHbmQ)RmwM%vA +cw3~x=K|kbv@hDm(+r>NCF6fESus6^?Waq34){OG9#?JQ1sGo&--wk>}c#vL%+ej}qek54a5y856&FBrq@=2&`xxx|NSWd1ejQS%q0=bwqPq^GUC$GwqvO{!1sDU87lzFUsz9Ownh%{ +A!7QO&?Lv}MwZ)EHdr2mQD$3fC^f^SN&>%v%ygD_)AG6(e(rr4^C6JS%BMW)!W+RI~zh6|KPkc#hDDO +wfv-N?P$}(27ihR{Uuct;nqFPg48wCGsJl73a|YoETd1{ZX_c^CQuU-tYb=XvOT--m6kTE3O5tm^g-3 +oHJ;}jRvh?JYn_|k5&xg{~FK=%DaSBExu9qJZI30i3YuxZi~>1wV)SV!+rNg(F$|@(B3b$jb6Wctlzr +_BkT7Fp3ebih$rNoz(bDEit`p*dDffZ0^10kxW!qX>?m(N8XiL@Hdqy%*wP=a{Aqu9G@bYm_`Fby;PV +VEK0cqj7|!BY&)`?#v$9Mg3ObeO?mA1^QD1*^ +D;tE0TrpnS{~j+ZRED)R-s4j5#GjgRJA9*(Pn96gx(|lVe2L)fgk^K$|CwV=;YDq-{cvNUO%!IIf^a4 +;`niYoZ8ri=lax4XH!8|ACHdhsEIx&XhU#4wjU92dQt!yRNw{Uz;lJo(u511-SAyUFl!( +aZ7wUJ0UVh%lLH0q_dY=htjBZ_{W9tW{xFQYpNKu3h%#LT;)fwhu_TV$bJ*^tzPqZdl>RU3i{r##=4{ +oIA>4&yt6LRUS7Lbq?KJJT&;Ld9+UdzH$_J_dCclXR~ONTWe@nue(beQi|YW}^UM;b^01D%dz;%_noG +i@|9qJFn~SM8CjB^_+>sqzudAFg%Z0BoS;e;xufNK7-}Xz}^To3*IPVW{7EiZ*f_j-}pLyn)_;FjLJ* +>>FW!lKe{KuNu|y +%nu;yy;!H(bP@Oh_BeBCV!YnYGwQyVxwH0I+;zbPJ&a*hJcE0|2HFj}vM}PCIBv`&BOk~~r)Kw6_v^* +Y!`F`30T&!pb`t&Xhokadj?NJ}-LRRFeliP$Z`~OcZ;JV{V{HZF+ZzHdGera8a@hyL#U29}`&hW#77L +e|dIR9n@V^O{cb@<7aG7tw<&$S*UefX55_R8da~t_WQ?1MwDt*i4_}vlM@Se!_F};g=J{{+ +2a?;42<&QuoXsjx}+;VkCB4g-NCo!{B=8of-Bfg*eM#T?`joV=6TJ=94y +_Ozn+nDow#HM&WxY3^dbA)|V&RX6Nr9U4zf8*6X6_p>hSH^O4`5z94H#2uE%gbEqIH#FojyNRiH+a&c +`;N5hnG^SY!?g6+ytJ{oaQlro6?gR+`P-TE7ys|jK-2Ntbh&VaE~;;g^Ac|^e;moX8+jMNJJe0TbiAz +y{1?T6|K7iSF#MSlIUf8U``br{fBFB1@Xw5a|Cdboe_AX#@;`sDD02+-jxp!^t&_d9clp5!;s1xdcL +AuX*#5_7A3zQd6#*6T!SRhKiqG(c2k-%kh=8xMujm +7=AUDJB&@DlIFll;2u2YxX&33)cPq?)}~0|Nr}LJg)tjwPt3`n#Z0!GkazOJ`-2#g7R{gg$4P5eIr^! +9{|Vel~tiFoss=#^C2s@;&;aE@Ne;aeRxEy2Yv&^7UG({-#v5@c&^tK4=;E=w~F}H!#moyi1^kV +7w?li!Iw{dIaIUun;#oA>4ttPx9qMlQs9ZZ1!InHxDg>y`!jUy+I#`$74Y>Jn0q#w|II^)O$1<#Mr=S +6g%vcxA4YwdlHfpQ*rtLE1l>_&z)`@SLmK+yrERWJ2X1JDcJ?&wJ>rK*q@Js_dUp;u6suL4B;eLfi +=m$G>ZXbdBZA+bFzZKu-j(~T`nmgQe{xf~skiI{~yYIP{eEi0HuDz-gXE2C8)<_@Hw=3vV0r_C`FkW% +5H?DiK;l4bbBi=Y7`U@B?_A`bm?t86mrM=cp)QWQ(PzKLoE!XVFRt7RhYQ>s6zMm#@?guju+5@ORYu~ +Q;=f9hiYrL-T^f+B(?=C~V`w8k@_w7v^zJv!>mbYXM`25-v^K^%LJ0rK}d;_ZeGJn|P`1uAExj(^2f({$MR%yM2YX{|fDGrG&b*?RXYCu +7eT04(?~F+n~P(VPX5l&r64}c$=?7ySVRTc%$}fP6f7KZE^oWzOU02u-$L)-mnLB`r||AcLT3~$mQ0~ +_>+8EbggN}9QcjXvr9O~9qtMF3uWwguy2T^!(%`9)UW;d2lgz^$KQl)lSk+QAD>S*@$&|{vr7r^J{{% +}dj4!DmVQJR3h!7U=P!GN;u#(3V$US;&89qC!{9OQQ(WKdcxU~lBf20ikLSXihdO%BBV^kaz__0OZ@Q +2JxCRE^M-Q*GoQp2EL_{aHXSi>{&Jd3d2Qbd^KhU4?%644mel_+;(6SDX$v7RLi!gRdXZxX#^1Gjr?|Y2<<^BqBH$mKq3OyrD+W0&2_^Yoq4a2kYxX#>9C_kh6dVPg_9mr! +mJ{~~_&d)MF+n@_QfbSs(z|TC7j{Muo#ZVt`UyR$~dHlw`tP$(OdERdbIgh&PAf3N~%|?RG=!SkuT>Q +N1;s?Xb#64dj{sFir68J}3?Cik~pP$8^1^L6j!#idFubN(e1NsalP`-OM$$jHRn+5OvJK>#XXRO$}DH +YR;>mv8SFALmpjU%qr?4gMJUk*Ckg_jRH#}u&sgHGGdLVJ7;+7Wn`9k>(U1#zu~<$QE5M*EF%(pD{46ZW=eQFOn```D&y%FwDxQss-wun7e +al9J8^YmF}TsLkxyA%g)4URdDgEAAgT;TZB|myw_nOcI#V4X)7h`m +;Wk7U4Xp4PFzCRzEWNT5jANW}Svfc +u-!DCunCV +r+qkh`HV|%qP_6F!y?d$&j;=YG3_QN_w;5wl}wW2RJ!-owUsY@9#0_fYi4tWRlEPZ@4eL1cFF!Ep +Q&4%Ood6oZUUo>xX^L^3hKDlvU^oR%B;jUYIO+QoU_v>NNFO_>ch<6Ymu ++t`#1U!-*>;ozG&1T(HG@?PaN;reB(Y1+81q#`=YtVhx0HPUl$1PYwdTnF8xz1|7sugu9o|#B`-k#^D +g5qZ9lcagY9zbt3Jin_G}X8xmPxGUb}dgZMnZH+r>U-#JfJ$8!`5#-S=~+x_-LpPW`jE*01SKpJ(~m^ +l9u0|IYU*-AFv29?N>uovrwIWYcJNrRj_^a{LS8+wAMk;BKK!k!NtO_zrp4^2g#uKQk~nf*rBL-=U#%A-viaNo#v90zZk`7!?nI{3~N?BxUxe0JkLG9GIeL4 +4J1Ch&Aao48HRG4OF$9ova=?LqF-_nJ1~I4p*J`kdIW5B;H^%4@hcxbTO4F#N_I+oO;7yYE5U+<7hP8 +67=YDKu1grrEHs(!@EjSf;mw8}6r9*V9;v?HG>x{nav$JTYB)Mt) +(>3jN)8p?GD@a^vy4xl^6QGk2WfL{q#Ml4#ytbM@;&b&mUjZpLTvbXt>ri+~g7;FNd0M6sPSM`x +nk4T|^umc^pUg%R11~_?^h3&5w(|NG?BLv)|e~8N0L~pnMb8$0u^_IKTq|BMpbVm_+w&1Ga3M4|!pLI +&%xY8@4uo9&zkcJ+jS?lrQTaMO~-L!pU#0{iU(i&jB9hTznj~-OJLY?;g&Dg +AGhlo7`De_;c0JpM+3J8Ci*qdFPjn${YYGI*6jjO_> +7eN%CQ(7=B`FR$7hUIx=|1E8^QF3znzY@e6wZ)dzsy9+-E_Q^Q#Wp5xxH+=m@Li+$qK+$uaX_zZ;WYN +vS$?p1yNCjPAw-tTk&RtcYDBOiD6lePPw*Lf%ru_gY2@J`@+R>wkcj2p{6?xiiy8Xbvs8Tusq_Bq?Xy +Z4EA7H`p3?T8{7tm~239x&Rcn8r}*{0{!2P~*b>g{%>qgFY6z6r}H~#2`-#p1PyWHlPH1S}V81~U7-hK{mfM+CP5k9*T-i{5yy%~-pANs} +T6p?1NKUdMvJZ{7G>Z~R6I>M+iu>6)5q6Y#mRwcT +2!o(<{)ZYGbi)X^Y&>WcA4Oy2~MzZ=}+QT|#}E$&V6{ne(|Yy8-3{PtrXP>inzo*e-J)^6lIYl=QHhAYH +%2%?N7`evV9>750lKo9pmh+-*b7oUmUbio1o*n;AA6)0%Z_SSqG<%57nM&uiSj0Ir!A+f^f7(Wqk=n{ +KTcRyJnbH|aCr+Bt6c!wbW2dbTnK`6UOw7`J8mCGVbznd6SW|Hh+_KDu%o-~50b@({Fa+{xSS +lnk*4w^FpwC!;L&`=FJf*nYGzi0|{-7)3e8^;=C!h|LG;`8lOy;8~BAp}0m_k84FRT#xclY=iCvxd=r +caY1PhZuj!-p}4my%ACcu9m{;7-Svs^Q91`M06InSj>u5jM4`*{^g{gzVx;cF~hv{1^I!RM +dVQw34^0Uiu3DEv#2S1wU&U-l1w+v#`K6tXp7P)-}+ZbqQ?6ItQZd@!P9#Pd2;1qF<$F!D$PitZ!jpG +eZTG+44SGTSCOk-2VINsiRgPv_c&o-cEYtS={b+)06{XE!gz2djZmvu?=2`HJ71XjlN23u} +J-Btm%aM@KtH^r$N>eP?o&uD6D!ua9YwGF?!#C~KA^asP3avs+f;J2Lm+_TZ;O-;kK&m}u!+cU0>zY? +ZrFVmjjhuEHWYk8lBzO|R{`PuNpbxxVQe^|-;zZus&ukdfO>D&U>b{M}MVpkz-fA(@EqyDtI2SeDW*Y +!_b&Nbk&dvv_dz8J!(10B&H?SHdPj5&1JCiYAdXX#;(uekKba9{jAxCi{TmUJ2S=|7upsUPZ52 +R0Dz2G{GO_Vb!KKTW^XGtC$3Q-acUNEqvAo1&D5<|^IbzJqN6o?E7b!F_vjXK)`(?ycdz9e3Az`tp6J +nrm|C@mo(IC3$zVVuPsV9Rj(~ +dS5>bqN*5c3mBgY)FxGmAOdpng26Ys|en`*stHPnYe(f^OsrP0f1DGEAi7djkEv@rt8?g(X^=CZ>L_{ +dew^H%3o6 +ium*(oo*?JU>|!)s7{e2t)&9@+y)A8!vahmlU~ZFzzeFbY-=F<8GY; +aXeFwpSZ4Fx_bLR+{ZgdZj0hOSz7-iM<`zmTI2AdN%bH{Pt0n`&PW2a5<04^_)#82RH^1hTn~Y?eWaCU +p+jx;kX)(DdWD7XTkk)Hx@FkHQV(Lg}Xz){>pbaFLX8GNF|=j8`LiXo<)<-L4RQY)W345r?SGlle!b=k2dGw2bwrD7Zf#;T2kR9ONSELDSSwS`vZe7VOz{RZ_xrMm6g^`=V#f@ +<{)WH|}dw4F%JZOLMd)s-?{^Fi#^Pv63Jx#eEh3{`L1m_(i=)Gk!ewPBgaNs3)v7zDcj*0Kqs(f*`Kz +QfcbpdcW;`Slj2K^&Di@kP$$7Q>dKHVAE)OaNq@J#$prJ!@5rMr;1s58Em(vH2w`6eN6F_C}7Ae%_|W +ssddoxO!^5Wdrgw+eSr2ljTd{di?Q-x +zP^Wt>4V=#8%CgAeXcBi2;SGpEri?_xwr+8Td|9qp4=R&TRD^i;bs?ZA}?&XcOHJ5!uPB5VSHaXsBip +S6fWh^rN$$A{3$-Go`b%m547JF#b>_{_``Q(`F`NL%(!lf!nXBy2~WnOhCjx*3)j^9R)?=n>}M=ZY +K`l3eOKdoLhvpy%-6uyCPLdX&e-ofuG!{!fcu04KEt22;=2M?!PZXR%GN$5&XTHa=^WBwO-2RD;We*k%3H1YPH&ktjs>3bP>oxL*`${GuFu77o3|EFih(q|J_i@6s*uLSAZRxZ*7I^%b +rIH#L1*jS3=4q=h{g>qjP*ZpX7yFj@B`TkIc!)x*y7k~|+zkVP>QC1tfv%}jTZrUKvuR?$D?pNF08~d +%*Bg@-?z5H3A--V?QEzpJBRHRgo)%$l%^JirbmG`dM)NYd@d5EteIWb0`4DSNxa7-hyUG?YKS4oHoN% +n#Jes~VEF8Zc$$fJzb39F(19PEE_*+Xj-4)_J0zkyd4SoZ_|1=Ck3AqW=jk-++T@!#tD!!}y;D=*_;oaGEpM_o1CimXAX`0e@Rg&Vr%8$P +*met>kZ^Ry1)=HvWSPqEx6P<|Q${`Fp +-=;}B)X#SLc(x+hy~d?n^#7wNJrdWaLS4>iUA`Lk +vTqG`c^T{y4t7a|c%#530bmnMXOzFv#vj_&!4E_YL_1-6eF5WH9(%7er9Vsd!uGYI^{Uml4>_hI4{TO +MHVXj#1G~MPJRNL@{u97=5r3glMN6?EW6|fZG +M&~OCJGgnx`n2JivBE6O1od_OP`!pX#v}Jp8s5Kw7QK+1mCGjIc&Q{(;VGZ-V>DigGv|XbAjvb$dN|O +}DD#!C~8zhkzY0?cpA5Cx(gN@?cy&Ax&tr$&luD7?vz+ULXhj9!((Eon6}73gndL(^TQ*%-i9Z{?Xg5 +xfmDJ+Z_;IIoW(W*dP0G7d%>Ty9oC% +HsApDSVxbL*foIA=vovn6`B`Mn~IZ(5Sx*+C?=EDq&!)<{xMR7L?iLTHJAN-QXG_xt$y}e3^Xs7RbLs~E@od0jH{e%>2^~J +Vkqo7G%T} +1R=qMM06PqdooM?~w0-eDHhN;HFLI??e&<4l6iC2AvDPV`BlRYX4}dX8u#QGKSM!9;ryjUqaVXe!YKM +9Ya*5PgN{Zle2%o+NsKs4k1*Bie`PD56P3=Mr5&bP>@NM7I%rjp(~XYl)s9`aMyWP5DQ(2ho8<MM=$jv>`k~_!{12Qhj1lfU&2)yTtnEO@Ntd*dcv +&;U)1o~7w$OV3wQlOzHpB(oUk9^XpR54FWl`qp0Fq36ixWE2}?h73Cmp1(BN#1e6EI{ufatcT=Ipxz3 +&IpHwEm4y2cKBVz~k#JjSuaoZf_9W~j?RU~$-f+@gzwsyC+nfG&fk#MIL!q>KM+V)9XzqRdwwtdo;|A5m1wN(wSxC7XrgzcbFWOEW`X_lP#O`GSD +p6`A)e-nBQO(a4*IT>MPxOb_sKV2dzX#wmHXCobNDX6rGO#R|Zs4E7clB;@2%GnHi@ +#a6$`|Ul6bi~&Y>r~EM7G6VlyAy17nrRMLxHJCrqi5j_!CvMa?Psb!oQ(P8Ciuzr7al^<0;N|7;I)ov +CYb}DPuwc%ScU6Pjt^$wN$v{<^#s^FUvKRe+gMeVS&|Rz%pdFV5!J(8c9fM_0#fixz$Y~qrhY}%{OQN +nNhWJE#|Xp{%9=c7T)#tzkxKC-%_io0IG(?YH?Vgtqoa&2Z)woA2F+cQIt9tJm@RXESI*kqw*RCOOSHb#_}bZA!$s-BR=0`x4U +q`T88lJ_^~#dsgyjDQ-TGev1R3!YJ)b!7Zw!payKn=0VLg!1nF{#H^XEtw3ZeW7TXPwKW2Lolt$HPbh +Tp5Us`vi8JXtXWM4|_Ut*ocpC|pinxX73QV$pEdU>(GcA-vs=Ij@E5O$42_5ozySs;Jj$4*@9T1)MLz6I*)-}TbgN4-YYRX=UoT(N8WAnUm{Zg1ASeO$}qjoJyVUN@@$uI+` +ZtiBn1qw7ZPhQ1lfnxWpzy?u~B)&gc4|Nm3}|8rM3v$A5A4}bjxwif5-_jB@b9@Wo9zAIo)7yO6@-w) +U|KOWHF2Q_$&2CvoNhctMd2Jg_hAh6m9~e@q3~dPtrL5DH`Xmat}WsviWiT1kF4`Q +MEe`sCEyhoZ_GTw!1t2Ixx}B=*W&pG0#JoXs=o`(LSJUy~*Z!qCP}@iRb6S>p*^ywxw_b$PLGb0_lhD +-N}78;aI})gj2{*D!Hc-okii#p}6zOy?}`^u_7kMmTaVJ8R@#5=n8Vbi^92^{6jhAHD)v6t)$1(6wiN +=`|G6FN5nry{5hUtj3mU{Sw`{7_)g?!1<^X9hVKO}B6^6Z;Riu8h*l7-BWk!ve4^Wl23#U{qT7kq5Un +G6k!bXff||f$78c3tPb6Cm_g0{?CPhL$GBF3-Ie=5ZUGmvr_+R|~+pc!iKoJN%!|t>vz9)L#z22q?y22EHA_$>r`Q$Om`(4f%`VVHh^nzc&;gy)^x8$uIbN +ai^vK?U219`56cSw=exOMO!8UXvi;Dt2;2%m7DK=sD&~H#Z-AP?3iiFFE(rC(p=rW$vsgWmW#K+U6 +v_7&79@16j~u}ygW!QDSoP{NY%>49f!lr$)*BxdSOz0;&}9f&)(RgqLjjXOI9gpL!F{@v#r2lHDTaW& +5qncK7o)0f6!fGGgvyC2o{Q_^hrFJjbKS^0^nqp2v6;4Y&@X|g#3opL3{pD9)-Ldnv*Q<8D@sBs(+WmI*o_F@X``-H>)a=`T;NXWJeSGL}?UAFOe0u +EoXP(k#>P~-krvB@1zHK;r?)-)CzW?Fkr5}H~{PQorHeUJd_dl*)YhsGd!_%vkx8BFs&%bq>wg +K$|gM!<4=or!|v~!oP-NFprd-UwpyHDTnei8i#L=GGjHF(I-VZ%q<6g_g(=rLns#u-hSS=r{C`MH(_d +HDs_!lH#XyQ6r~;*!!Ox6Hluws{#X^KW0e?2bGC)9L?D$N#@=|JbP;vhK)yu5~RGfdhzxd~D0bSGmSJJEf(>IgmKpuXSii6=#x*`g6(f=DIa^Zo?PGKg4^cq~kR-K|_-?G)2SD(C~{i{4xzcF?k}hSaVo%Y%;T&tVqMt;6FJe25#YY_)l +WwCnk?qN6e6Kv1W5@?jIH9-g^dpnnXO=M01Je6D=a@AX-9nDbc%$t|7XSXeH4dM5~D&BzlPGQKH9*o* +-IBw4P`K(F;T`61_~cu}O|Q(YjEg!9=?dmErdyJb>shqDG=AL}wGtCF&qrLbQzN8lsg%Wg)5}Turow= +pmxViPjNqAbOD~w8xwV5H%2uCYnMtgJ=oSGNR=~*AU%Ew1Q|Q(d|U5h*lG=A$o}DaiR@GnU3_+xrc8c +97WVfG=*p`(GsF-h(1m9d7@QB4-svY@p%ZER%~Tc3#}|2-alrUvsrp>F`H;dLc*wmf>AiaO!4yfQ}EBvu{&3Vyg +e&|zu?WYmx`^=#6?f{R@4H`M3pB^%CPQVqB8S1=q7 +sbrbq(rKJAu?y*c1mK35w@2PAM*fbmdFLlu;oBjsClYT1w8B~{2`onpH1U3p{DS-d&Of6OrCys~A;N# +(VEdcvOLaI{;FX1C~@u0uB^7yFR6h4mb-brqz;fd=ys-VY!ZUHsKD0GYE$e&Lu3@y%rHx*ZC5b>uAdY<#SkE<%H$B>otVC5#C5xuA{CXY#>}oxI5wP +gylNox%7OH>!PcOFV`(s6PD|iYY40BvdPG7ug~IGk_{;V8niaUY8glKmTT841S{P9PjlIECCOHuL+XTxi| +|F_w~`G?Ftrzi0|@I08wmSIK85E;IEwiGgpGt-%lHYmA)G)M4(td2dShj346AHuz4 +`U&@z=_lMrrk`+MnSR3kWcmq5$n+ELFVjzWfJ}b}Y99!P5FSK0obV9B(S(N)P9Qv-@NB{(2IJJW=L1;Yl*T2`9?@COl +c@H{mHVzX>PF{3e_%^PBKAncsv{WPTG)mHAD0rp#}`vt)h~zFFpX2(?eLyc5oo=_i~o(@%K0Og~|TIv +^>8JqbrqefB1tL3|&=MTC6`ml5_SyoPW9;R?b*gtrq8CR|Op1K~r2LkZUr?n=0k@BqU4PE@`K8wkh9^ +bn3GY$TjVcs5~$I#juYJqec(_9k3T*oW{&!oGwn3HuYSA{`yqFa46vf!lMai5LT!|StP?JTqeUOyhescxI%_UxJrg+5V%H$NBFo5k8p$ZPq1WLceNtAwxsROx@u;)@rKjBcqRfJ9SPMpa{0T^E^g +O_|SO`tc|EPAKSCVn>cG|lv8Z|0*4jE`&JmBTDVMfkZSFGf)qaP36Jd;S6n7vF#JvQoHK!bOCONZv;7 +HVQA7;<3{^vYjm?x`jof`Gj*w&qb8JTpBAdfyIPBp-%znVFDi_T_*B +hNd7D&XD5Ch(NfZ5G3mL4^mb7CML6>*9tU9u>7PgWP@vkwMA%CH@=30c$B64%P!iXmEMlTOL_(g&GDd +d6bx3jQdruZ0znGwoXJqm981d?RNH*t>SKoWG`Dzd6S_82fWRg0*k;7McOjO^aa(Mg`Remn_pU9F_Tn +spY%^+;y@h7VKSokWDMBI3fUsfJpvg+RoDMBpYyNWnJMdcT9|8Z*kHa;Gcs><7V{HbdExm@1_RUXS9+ +HZ=A7Xpq|!^iT7d}$8{jqfC=*v7F8ubAT$H9Rb@n7;8UKaY{=lUe6 +@0t0WpQPF^hv#Ras?Q>xUo+MB*j&CkDpnmy!+L=DW*!QTRmygu*sa_YaJ{Fh>2mOKvYXX(lyJK^@e=O +eiLqX};ykYBBsE=P_1Z)=-*UO$iK^ZOJe^b3blSPyoaI8SGn%T}F^}szMJ?xfJl#{&dSU0Q%ciLD7jr +wzxXum^94Zgl60g=5F}~{5&rJC?o3Ln4;?#T*?Ss?5X +dj$>D-X}LeQ@yl=PV~8bt#&B74_QLj=9!@cy5z?k~6#2e^JijRC~LY8&`kQZWCz4O4wzBTK>fIIziL! +#;SS?JH@KyPT0wrkHSvzYCgE8^LqWA>6Ch

@_g`|+EOOtv9o3t(pBdpgD8Kdsz*Pek>Yw9IVJu{5e*TX +(NCo_nn1wL0-R}qG75gvSxU!iBFaF(ElP?^`KM{8->i29VMKYsk!Q-5?%pgx_#d7!>H8&iK<`Y@lZRz +r~dTkJ1?A0VPMqTg-OjUWJaHH}FtDqO-E6o2O|PJF~(z&mmsBDW_BAP?%{=0Gj@4rFpTIkL#R@gbr* +G@%*J$MIuh9Ild{>+f3hlvVU#zI)-6?5|yNzsGF8zDXDFZ!Z6HJ;ocw1uL0&Xmh7`ugoyW2oJ*wlZ&j +*u?P6p&>5H{3^kTb9NoT(lA&G^mG;OL7xesq;U8PoL8+&iJUlv?WFd{`;HmnTJis(7m1 +Pol&bq2^)T1KLWzp&);8^+bspN+P*mt+*cY&{%wee<#z?CyA&#RI| +=*^P5}ws*Yee>E9Ksw&x4#&Mhk{zG26yE3W`E}o4-tMnft-I;<=uzl1?zir+S`i_#V00d3BCnj4QU$b +=$-zRHmGFN6V*vTKLCdhGL~|(+nGfh!Y^mn+x4=fge^@;z0{?BPaglXedn_ +s8V*{jU3eUWg&6A=(YJPp4}^6;Y3P9CLZ-3RE29r$l3Q1sXo^SMrBPsi8_x1nk$YT3l1B+Q_8U-)Tj- +EMKPqM$=FS?v=(T;)NPr=8WpW8VYei$l=osbn;hcU&sFj6?L~TV*5_u2j1zXsP7kX;2IH;1`zA5A +h}aI_js$n0__?I%k^V*=cu{`fk3zDgDdP@x!OfKUWjcHS_1E(-H8?{C +VWl$W9s`hIfWYikD@Mv$e748$BQFT`#ULr_d@%5#?p7#21%p^BdiYWRyxz)Ewf%JkxHxZc1(mTB+q56 +LXzy`+Vr`2;+(RUqaEcaItq2D-bP4tZERTYnsgJ;SK5_Bjm&kHN(hzS)aBY$cO@W@TSviMVx^b)E;R2 +?#{_e@9z510*7b0!=B9$(sy?rgm-rgGjDi4oFkZHId3bvyy5GRjTXPO(%@v`a^@-h$*%Rl?xWu1&NT0 +QGlPH9h~nKx1`V7ub{iW(A1`b!VuY+mB?~uMkKY5p4m4;Rp~`jVaGN3Ug>u46yvaUsZ+$q9A0`=BXZv +ZU6T{s46pl{le=ykWrNBTI(ZRm-YfnR^{9F3f(c&+~{u^G0C#Zj#qJAPxVUEowO)FF_O(SPTqxq)dGc +*Go_&Jn`{%(tzUC531JjIC8s9R;^zAkXFcNRuoXdh0@0)(2OQWHl$m~_R6T(;6@6xeENG!c=^u&vQ=G +Tb2RXyXr~HKL-x6O~Z;Jc2OKIMk89$0>=u7V{rF?UEg>XnIeB9=^@T(NRQKqva7c+d(wEBpYPhD!+=N +egjZT0|XQR000O8MnywZFr)I4U;zLCmjwU-Bme*aaA|NaUv_0~WN&gWaA9L>VP|P>XD?rKbaHiLbair +Nb1ras&67QA!!QtrcmImRSsZXo=@@9CA1MSvmV~ZCvCp=OBDvDJkbhrUPKrO$!DNXR+48-QbmH+0_NB +0p3yI+7tmYD=NKskLpjH_gpb~-594+YFzr0jDbc|+ybjMmh$-3bg<+6vO<(iK`SNpNOG}Cye=vW~|p_F}caTse1=3CigfbC@jv1UN+of!AbmJSB-E)8&)}^E|2ik(<++(*>(* +**}BD@Xg9pi>DCPicPHKGx0r6-2=R}0V@6aWAK2mnS!LsV`2>OXr5001 +W;001BW003}la4%nWWo~3|axZXUV{2h&X>MmPZDDe2WpZ;aaCxm+ZExE+68`RA!Kxo3A*#^s-C_$PF5 +q^(hhX!zNg5o^Fa%bnV{K(oOHoO4Y3{e*3|}NtlG9#s`4CIw%y4En96mF8Nv^kfO*VPK2>h-aT96{oS +Xr|*Y05PdL~a?8OzdjHH|k|x(F}f0G+9h;n5c7JPF|9qlGibzY|uckir2a1;sNAsxF8wdRRxobteK>FQ74m0zN@$ZmWl}qlStxct5y9)N1zyKw8C;-j~m1NCXT^>MKH6vH65E>WieQmwjR +f=JDOMGBkY)9OKPfyC!`ghNE+EEx|b((Pl&-(59Br9q0A +HBwiX-mJlG83t8Q&(iOonp#8g63zA4PD=Zx)wV$LDA1htmu9oX=)6*r2ca(LTLvp +N`t67wyx3I=Yq&f*;m6onQXGxJ=J+1$R9~gI88wS`K{b=)Ywkq&aO!yT;A@o&B4a7m1`O^F#O|T~si(S@SbDHtl^sjKKC6|wHQQHxcjg!t+foY +IUk~g|$?09sGMO0MvDmK?w(x!4Tkfw(I3$5*DgXle#(sj>urTm*k4?n9O$oRPPzt(mMv|83>vTEMidI +er9C3M2%MDew$}oEPR0iHV|u4xRD9UHp1?=Oz6_pB>;|GB7%XR11OB|OU08wwV`ox23P@?zo#YO^v`) +^#Ho6h)m^>2X-ajdNX<1TFs(VFdq|^1-C-r;O-;fG>i`S0UlQI(#NLUGkFedk5pSV#QA>aodcjIF8z&KT^?y^!=UShNXu?^#}8yry-rkKmJF-AurJI6&+In}v8v;EhjDBS=>%*{l(i#{h5-qZKY +3n;YMGA7kAIgT4B&|O*l;8Y%)uGAN;_)cp;pjxmvne}V9hGpe=0Qv9Lm)8Kp?AN`$Ct&wm@EWFek@b- +{kFL3#mhFfd!sa8rYh?g1sj9km^~7{0Jzm21z09=*$~79SOYQoniKu8GhjnmzMgSH+ozx2Q*Zy6^HIs} +3=7P{cz0Dax`<(pf?q;{&3T64aMfQXt5vC}=gw_S;SZ`v}b!NyTuU?2JOf`?75k6uR$330qjY<$O;mN~mmj#UhkoC4DReq6U%go+w5nLS4)=M%vpjN>{P*Q*{8NF=bpin|*re-{ +_`(!}Er)u-jKI|Pu*SkYMhe@Y>N5+6Sy(cUYIuS57cEBl`qIZ$6P;?`vnM7Mr{)wHH|p2uxl7l?P#0x +ORrwDmncOL;Hs&F8jo(+WZ4z@+4LfsKW(~P;##Q&RwRE(*Hyx84@8#)QH)xAPX +Zt~bICPW9nHw~2rljBB0kAMaZ~KT2y%`#(H$6g!T#t-XceeC9Q$GDj)6-$`yO856?dvQ(-?$PGWCj ++1~roOzy9H8!G1-efQSD{YmoCc_QPCj&ZB++3=$Ki2VwZ7fk3$#jIbN>B})pPktxx?hve-FB=`)`|M( +fESJ8P6{E?3`#s{NcU@SB+d+R}=7G3)}4bcwnc@G<@C<}sx5lE=qYms%yP?~#vDP!B({T7*~Ls< +~UpF%~!xdW*)1P2DXFRDp_h+FGTsJK-lR;YY1^@s=5&!@t0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{FLGsZb!l> +CZDnqBb1rasl~>zx+cpq==T{)~gUPYNNjm9FMyca4GLveeiz~^wRO4`95we+5qyj*(UC0041AwGJN}j +fQ5dkdD?j9_57YAf^oeHu{Ge+>AY-mQZbis1L60*q?#)-UUL^8e-q*&@fxTXvI4UAZad}LgtMeZDsUx +H^HLi0q6y`7#`G69(~rY8seUNo9UrNUg#@uH9h8y0Z3E<`E|eh0i|!O5anturPWNtmQ*CIZJvSL=dHh +*n=h@-)AyMjM`G>1D8{Trg+JixrV~Ypj!UeUJ*-A>*}#(QuavGOGq17%CmJX`QZv_y^0Af(Pq6g=S%R +gdC8(_)Z;yU$0nQra9~A!5{@&26td)YIHq1Q+7qS3#Mny+=N}RTl4v;;EDPAlksBAhXpTz3!Yx3fSIv +d`L5t*(zqVwi9MW3%4Ns#OHYCo<$vLjD&vRYAJ4|4|BwT7RO=M^5h28Eek|nhirthMO+t~Ovx-&JQ +n0EIwQY6dl}SVjuQ^feh)|ILvpMc^b8RJ6^k^D5kFGl9F_b837C`u{0!bs!rq5yhHV4Sox6S@HtRKKL +U_J2X)Ine7YAqIBpR6|ueHxw@|#P&@o*TLl}>YI8V&os@nBr;d(~VGOC#Pir=7F&QEzr0&iZ+lH2BA^0GulClA?xr}hH2060A(`)MTVb>@eM%cDp@Z6lP80?BZ&n97 +G$#Kpneaz@f;Bj~Um0TRTzUSg1W5fAmpsb%kCFC3fFpUTOsp7=IHLNilADN|6;S{1?eb`6!mGmq$<$i +VK(2iTisel2_$7nJIJu$-W#fxXPrFHlRF;^2Yf~$id4Iuw^j3oC{4f^j#<4M#Dr;%R+4Wjp9?@JBTx? +}$tuEraW6xl5^zmlf9T6!3czF0@9FOiM3mrP5*?~rdrnosprIz}8L=O^DNGQB*0M>8Z{uorWB6RUIr0 +^@4)^epN@b4|WiUZO3$whhOi=Y6hg8C_i_l!y*N9+zDrgW3q>PUH!TvC@)OO7$A} +@S@I#uJ8OW)$`{U&}JptJ<61MXe-i()z)TGxF_cDxKe`XK@A|9g?bLf3})2|rV(fkXJch +toqoziOzlV=*_C6rD-Ut$St!^lff#P}h5poX#Mp@g(}=yg!MC$Q6*)S!L()s(b6TaJPZ8odj +qT&MKCG*j0G6t*&TBtR6t*hZ5}yXEY&#F43E8xL(LpnWCKiO?7D}q98X|EJ!K|qgRY)cbH@hXsHkzMh +>1odtn=8nig}jJok2fp<=cytX4&>tEdhQLhb5_{;2LUuyU26g=th*;}dL^$}T~mQX-VZW^t{07L}$ks +;j(41G}cNGf6QZ6PgOPuh^3!ht^A)WOq-|zO7iJv|BxjRlL>50h+MWahLRHt~irSpbxla=npw)T;ano +kA5&mAD9F8CRLM7?@vlF^Xo6w5nLBH>I}?D$ZIN3$f+LY3@BhhE2CFH6;gMku_7TxPuf7!jj%QYG~KX +Fw|HvuhiQOM$R~gkdRc4?Oxbpw>~k;&H!4z0TdeeL`PIV{!%M=JB#u>J#jz(?w(QvM#)iwT;?yTkUz1 +UhGZP)!Vt%(Bs2{efs`E&|?E?GtZl)X7R`aR|U@Z+QF!nWp4Jq|o9-0_ssxc%W&b{B`+MEShu|OU(|3 +~EI#S{MEcF8>pR^sa6uz~A4^-ysYC?YjE@EX{9TuY=&J%=u%>4K&ti7}5|_G3bc>JP8n=Qs8NZ@V=Rc +q8FZkB^C~9y@M#hXBa8(Korl-{Sb>$?<+O|CMpKoYN^*=K;5AFw0;ng`YqttUYc^*R^!uug?w+KA +*pJX!F(}Ow+jZ(uhnBWSh=7uohn8FV +VP|P>XD@SbWn*b(X=QSAE^vA6J^gdr#<9QauRy5In3QQe+poVoJyWUUxE;;7b|!Y?c_XVV2%acJ5WoV +UXvT8>_O~B*hrPprA|0nmn`kDE2p;zK_V(*`_g06|o6D?@F0x!j@c;QL$)h|=RZ**Xv?}JRikeFmHLA +L-gXxyIz)66D70M{Ccq}(xxo)+C0brW9LDo%x~+YDzaixA6!)Bb +<}K@@FCLQ4G$vtd6wjPGRxJNK7E~~4gYouK-=f^2@vH^FS1&XdbMnT8cEKdzDXJwSMZ0|N{@N7S{g8K +HcRzgqM`h)fLF%{qXR}RUNx{{gIt;vWs#*xp8cSvH=5`?PJc2ZU#LZrZuGv`4H`$wq^i}y!8iE7xqcc +=c-AvJ%6a?z;BUopkMZNEZmRPG{Yftl-qF7e2ktk6aWpG|&nDh1qXV-Eua-<^fMFh;ojEJuDG^YapC2 +3?qm?x?)%T+!HKD +t1eD5Gzle-r)jj}K!D%1r!KQmb~>Yv5XXJ^^-(pMLf1ukb)4@F#qf%mDi&ZD8PKIj84ybrDUc@OU~M) ++)akMGsDJjr^8G9e=)6&8jMD5+xXf5>%;L6-|PCXa&on1oC~QqH^}VN}HI(--6O>oGAy$jWUwo!pIs# +EOrpuVNI7weJK}}70vcVB@w<7-QeDlI@q$7eUVZB)ToT35>{6oYe0k}!SgHY;Ee84KP5gs`AF&`Rs6VKM6r)>5!geCk5L6vK4GmLO(5Wb2Nt)jM-F_xUahC7`t0J +}6-dyh*Nb2Mdb^Y9L&GP3{GwOe*g>s!RBP0v<$>Z}gb;WtLuAV7U8tkj&wb45#&osCE1Fw3uf%8M;ZW +igy$~sCIgDT57umq(Kkjj93E=6_Dn`M;=qDg?fK%e1tQyoI*imMb=mqg}4%f!TW>3&RpgS&~?(Jm+&< +yZ=N1xGO5zbA;KTofxvetP&B@M9e=7Mt5w&!UJOos8+shw`+y%l-W!Y#9QKN*yc%+Y9LfxxxoG-$QI) +IZa9{{J7{xF+TMkF#{=wQI3XK)G97eAJpz7*u$Hr)@n53y%Hj?h%n#4D-5;;!nDcXu&vkvccXmH`~_2 +dIhCZ2pzeH=J%z}|Hcf)(M?tWcUCmBVfd$rIG6$Up!BPk7Ghl!Rb9h2M(gT1}@PhaUicUJRh|0Ve!7I +vL3IZu4UF1cMJBKYSd-VBKL0hes`gjI0ImY~Iwm!ZfZ0?=e(osuuRyLr`ELk9sJ^JUSoAwQTiX^b9yg +gK&{_AnoCLz;0$W*qJ6NQZ=N}w78KgmQA&BAK(v-w&HHKZ-{$FUyVjCFT5uX_hq{aSFiPD*_`6x>>6A +jHMgTwuC+%1ZwC=?31O(=Ep%xcO(win{|iC$g=(x$Hl$yYLM5X6$Bh;>^AdpOA;+D;Kw)m#4 +WHOz{v4CT6My$=Zgqa(Vty3ZJ*w&fH=_X{oBzWn1u{_|tLZpQmt*&Z)`aFmJbR%)x3HK1q(eox8C|Lz +>jQ-&u}1wDyR#vpv1)!ja)VP?9RUKzh^*X)piU0o<_wpVJi%nH+jUsu|;>T4iIs)PSOqxLfBIUl5whK +JR*q*BzeQ&p~8lglV>3FfyoIDEew}0H3uU8{6$zasRgI%BlN%+#CFoF8O}c96K>Lq>3?9c12k3RS-qhe^@_5jSPhl{aPYDI1(LEI)HY-5FwG!w1dbPw +z5gu3_O8Jhl0LDZfYf$r&l!k`m00D2jz#*WDd8tvFRp}~g1hBkZWGSC+U^*MV!Xuj$5?4n#M2NFmus< +CO^bydqT*$ioImv4!Y4kL0z?+Ao!@Q)U7OU#426SNW=8}ShYv&LqV9B#Z>p%M3xtl@Z9qw4I*nGO%Rt +!CgY4dB9^RMOvXeZueDxZTqPxLmK=M;$Zl-=2R``*XP6z}H`PjgbhrYP^ELQFz +yd^v22P+icuvf7;u2D|wTWQcQz~*H%#{=yIIs$EbWo)O%9s~PPhzpasuhCv)az+1Qm)h1*anq=yS+kw +T*dAJ8%IY+SL;#N(>sh#!7i_=J`v?`KM4C8p0GwxL^aZY0dQg)P**C{6!(CrH66q<)`>aLyFx;wDB1u +Oq-qfWMtetOCAAX{f(R10i|)}N!_J#Te8E0|VaHzh;{&whjrKS>PL@km%)2gAyUOPox$&%hm~-7N0DM +~Ij@AY=yea~a_z3GOea?ei;#-TXz}!fecu48+idvaPA?hFEI)9AM%W}=J8{mN(Wh8CRqNd=V4ek8cRl +_`3&npcpNFB@N*a#w!h3G*vV@9RVI8>5=xNjbR-_=LXI~to42idc~ +kN@{wJvu+aU`qyv3(LnzG{_0xK`XUw_RuUX#80?87}fzkMjr#*neSIM<^#(WZnI&Uwbl)SlX}7Fqc3j +6`V#oCUM49jHxTse>_J-QWkFwFC)E{(gxKvF_rgn}G%stCG;mkJ52B^(Mb!pvRp2NJIrc(AL&0Q8&^N +hGG_0(-hcq;7Q!AJVcdX^ZcBgC{m^U3aT*c_h<&J7C +)T+<>jkypFey0`uWHYb)pq+C!I{d3J)l&F=#0@_<|mTgiJeMJ)y61Ro7E=BD(`lXuzUUXdrsVJaJ$+Z +~HInFF*dgL04cFki}8l!Um`gEMcrob~?siTvIf7hNvS?CGMdEgHELKVF>^=B^^rY4pkTMnHwJ*RO%Wu +?A&-Sg?f*X-tSAy9TGwVm$ARrP+_XKj9w?2`iT(n46)2l2+`c=ZR3Xy}se_%g}-I4IZfHSWVGvq +Sm#b110%j;5(^0O_u1(qkG3E2rzX4VDplOzfaP}xQy%*>WUU)GB)K3K-8CX;K%LB^X?(&kc;KWs^U(9 +Wo46wMFqMZ$Q(1k!^0u=;1W8G!65|P%LG=MM%OAq!^(%TOc&kEEizQQ9 +15)VxIhH4;OYIRpN{PM{JHw>Y?!W=pih>L9kThRd^&jIG=417xP`3beR+CTT5@p0Je?(u{f7W=+yF6p +3*KfFag5dy&-hK)8TyK8li*0(!y;;;abB+Jsrj=&Cc*zSs5uDnc>5F=XGpCi}i#52e81#>E;c;f}0a) +IzQ)eQw8wK!;>A2%9aRRx8hP#XF+8KiXN0`oSU7Fyd-2!A}-X~%EA3`}}__VB^~oZtUq^rf6sElW|JV +Sachyz?&RUq?qYTKl9S=>DTfN0@rwp?Mxm-^J%$Yzby^JG)J9tMoR>mzVHCHOVai#Q$zGweE&z?t(~5 +=~8PHq*i!6W!-FD5WM(6Q|uN=&e#m`y<0&0wi@Y2j7xV7fJ}hT{tr~5)?zCRk9mxq0I%L)=!rPK_q+} +V*mA+u6~O6Kox#yijFkhBTLN~STq%BB>O)nCg~I`;cFBN{yV92H4hh>ksQB*wS@Pfq!-fpXJ{cjn!yf +s@pWEQmck#O;Qi7Iv^`>Z&_h^9PJNe?%bQbwlO-5x?#(-$w3uL>AkO&P`CC;-&)|fDM0Gf%7)@p(2_^ +@92(N!u@k0A+Q^^0ki`_Ag3;ad|IjP8^9$4DP+P!a{C<+q`C{GWf39tyy`Te!DK_x=L(6r4M*n`sR#I +T~#7lc-+JD9Hi*u}04`EIECC!@P`*|D96W5nkVzY-(T9#8I(b7oq?O_*iwIg5OVW_y6S0I(-`4lQ+!3(#zp%C&_ijwLbQYGvLY^eH%j@8#%sasf>t!!KhR( +OLnC{i49afO>TS#?1Jk!d|hJ!}Lr%h`%p0FK3cxbu+Y=0pkX&%lZ;Ub(+-_S!clG$TD2L1dGja%hBlU +_`#!dp#=nDPv>)CX3=~zV>DbwqzdvNv2=ptPCmx>5#^&nPkpOX_k;2{8g_$x#D1ai6CCf*!Fk#93`Tp +)UT^e&Ke2nO`OWweTogtXbHzNjq&5DE45Z>KG0?ciW8@GC>BUVCqf=%vDj_K^d|=Y&&^*RoR`96f$^=(;ShfexCBi2x+k>}-2=3PUv}h{1% +cD_e;aK0Oir%HOt4<7%Tmy@#Vu4|g+VX^tXlV*!s7AmmKUCtzk}1SOre=HKfeP+~SBgkv;3cTJM~V)4 +&W;iPVaq$CbDtdFpz&FejiLBLoy}Fvp`ITUK(gzjv&szY2*(&Lg*Ok{gYvJIYc{zA7;ob&tYfgTTl%Ph9>n1sUDlKeZUT ++UfcSzaqXS82_bsW8r@d%x6VGk73GB01fiI%9gnx-u>@#DjXvgix=#|d$Oqc{V>F=bM#BEv5zTw-chF +i+-rr2*cIeM)a(8Z15t$kiUS-m@B^kM8u&Z;kjTKb81f3oQbq#BcZ3GoogQ^gFm(jNvvTu{^Yu> +uE^-gb441-QR-n0fXbgE*#0v6=?kh1Pv(|BX6yLHeJ7fTMab}7a%v0l96CQ+jb2Wv`_*Vc +iup0YiR8V}4wW$ne^j&~{Yx+cwG_JU5_Wzh;@i_=iWi#U4n-|-_|v@PJ-Th|eM9naOxLp~hq>TdJZL; +7meAupYax^?YR;+$_?;scP7jLu-75x^1JPRXq9x4m~oI~#gx3b_|$LmqTV+llv1s2D2H<#u<=bs)v@JP+G>T5ug*M#b(w#X$VF)s&{hzl)|i`4woYvTk-%RRTunt$lQr0L5DCq}5uE +u6h{bRAFWHn7`Yit>Eiz>Z<+vm(y3z3!Rm639gfZt_S56ms#>Uo9hyK%uP!ubga_LLT3l1oQyd?<`i+ +!#kO|kjE1=0_8+3(gX&@*6)#<148-iG;vFS!Qx_o(zR#)84=%-cnYkL$4p3VS^n=aAy{@Ns%mjx7Y;; +k**MT+X4wPzahb`x79%@$s3;gwB4y=hqL2j|xU5!VA`m^V*JkRx_EU&O)1+QJ2XnLFOKvm&K$ToBeBG +p-E&b@1!TC=yq+Ts4IbGl{G5=v@Ri)r^puf6SHFK0StExQl}oketpar!Z3+s2fX8&jfh%t^9yKWc=@8 +XdP_gMqeC+X&!!5uK$w+7vd$;F}*)Gv=QUb8y7Fz~DC)vUYC%NrYi)#FuDitn;=2JpQ!Q(7#b!xf?XB +YUQSb^af>3*GtzbAgetnEnRdnO*RATEX(avvCStItlBCB@lYtfe^GyjgDHo7dos{NokkxHzdSaT0VDn +F4+C3_?*_WP^(t?U+sAwZ8^1!GVRCwgF&O9|mP}!KPdV6|?o-^lKx|N`^AzC_gYS +kHW<|TFdMK*Ry8&1Ip1x??&ZIYxzcyrX(t<-Bu?#745xPr?jSTc~kP|%bs$uEi1&@eQI${sB8V=wHht +i(lKQsKNO7UNGcXaayyIV4%ovRDE6XU4L7MJpgXoVz3*A_M}>&P(U>5N^mYoYJ{25+7@53{Tui<53gF2ZCO+D)&K?4dkI#Ftq(}6Q +_|m?lQ8_JYb8^GPfk|)*1Tq>id<45OcsMwZjzB8j455ZU0rtSN6VMaYA=NndF%2;{XkUGDf61Zo#ioS~KRcrYRl&5S*li{ +!{d|GHoi+!2GWT4Yt-7VF^|+##2>!+7x>j4@S!Bpew?{5$HRl7mn<#>Sp!p?gW^X+d%N8 +udG&MOj)e?C0sv0)I~8*G?}1$8fNxjQ6z&&$_c1gr3mqDAvqItG^)?ukukF`fuvH}9da?89d`lPh9P(9A +?n9EO-zkI&rXBBwGeuaM;YI!aA7P{j#e%+Ni6Lz@OSGbV%J$gBN{w5xr2a(4R&AIz1UBPta#c6>v=N( +rZ+!)T7qW7nSduzvU2iJUXE9^#JToY#!+cP1_buy6<;5Vi#SPbM2e8!8#eJO6uAaTfr%LVJ=1pZu!j7 +x>Ma55U*m`HcPD|V|#_k5op9x@OQ}J7zd%BCC9x21;h4=#;FlCdat3 +0W6^T-I(RZi9bPYifJ4zB@t85n6K=<2~$t$P4CZP?qMc7ZOVKUcHYw}HZ2Cd+~{$ELNRt5If~C@;$^9 +w5*99hE?TQz_r@T@3tN1$u4##|$XnT_CAjB_P0Yb2QO})DMkwA*Yj@%xvd7SeHc2$)XbOw^EDvu +l+P9!yGLAn@+ex{B=AiBfdy1FCH{>Gmw)(&{$9(;M8imCX>?hxiA4a3wdqa^Ak3H-R@Jcq=Wn;-*MM{6a*eRhjns-sry9Iiv6~D-5cK-f^&S<%9Kpm2=IC%*Jha;Xq2ykm(@7eCkeYWr4e`Jw8k0JtQtR5IT%>*4_zMN8h$(%r3s&6-0?-> +Iwh)^5TY5ZN*#fWbld)7!#&UoJ6Ix$iqeMHv~Bt0=YGELw-T+Dll~MdvP)ZQ;Dq6({mtKPw=~5$@t_E +;DYor}$%%13rY{O(iqw!T$qLO9KQH0000807gYaRJsXmbBqxH08>2x0384T0B~t=FJE?LZe(wAFK}UF +Yhh<;Zf7raVP|tLaCzN3`)}O1(ZBCsLC7eg4R#gVo90p@PU|F2&p<9V&Q7oW3`3D6uFafQ(utDoJ;VQ +dXNIIi>fuLw_Z6*??CLQb4(B~X?gl%#6p}4P${Bnob(FGH#5|KcVRe@9l2w~Fl3BF`opY&+PTu_#Lj?A`GP0~4@g>Q&gZKNNkN5S289giWyi&M-^}2;mML9NCdeO<->zX)aKWoj^vn;#EL!m}1YAe!>N3x +?3<1~>aw@XwZ1O`Cx37pQd_H6Ja&qwbWdFybANS!iJpTUh$CL2$-Vgi7JH(n(S(P&eA7?Q1mKNX@G?} +-9SKf@V4fa=$vM-p4IKTzE4x2!L@&^F)++)g_fX8VhB|C{Ob`(a>qwhV`%aTi;RS`OPxumWh)h&r=u4h1Nz4Yv4kLL27JX&#(Cw7X-?Gnn#ueZ24>1H +b6+o7C7o_<$XyUX35BLENK1bf0Spmpg_8>RFsc~2eE)KW>vf@{0;}SRtOy?vJ5><#ER&GBkf?#KTA?C@Vh_5LjV=kCF-68^c8xr3nI)yX_ghRqms|jht`z>; +|v!F+6Jn~iZV}X)KDodGO-jeJ9x{2^Q10lP77s{UxPxIJX(=1*DLS~K}R~sagYpt`F>9UX04289dS;l +N(cV}6cxOz){RD5;|U{a8qm=y8oaB^tgmll7-9OyU;?l)42J5*plQOAWn=u8#=>%t2-sGB{*A{Kp*qj +=w8bTsEQ9bUKzEfl@oB^ieblrCv!?x=R|gm}QO9{Q=~Cr8V|-g~yNVihJ0&%`1V=NEMH$zkVtdDXM@k +WSxdeQX1U(2GeCW{puBA438)=V?A?t6z;cgVt@hi;;>uEc3YO`MXgjR4cVnlEVX^#XE+XIIrzVvQ;)Z +NW*o3%C9h7ot3Jp;y=ho^W$IPTbA*sVwu@ZDR$Ga=24O36cT4LGNYbS2frVQT;<6Sj8eN_YJu@D0rvw~XvSPhaV{v> +k#99o6@#5hdcb!<ZfF@DVwM#|N#X-@eaDBA_iQju)e4Mu7_p%E^L70ev?3ZS2maB5qAmQirh3lET_k@N_DJ!fOOjtlg)HoKwwrf#(nJLdYv`*Puwxx1btOWXRcbUJKvF&EvI-SS$p1hGmj6N$kL`An&EgVA6Dg-G(sLVdckeKyr@8q^ds&-DuDiQ% +%2wiAP=O~J8^5W*Yakm|kPoI14TK5^=N!}~r$RN*u$NU;$ekB2E +?}wkc>tJRK!Fy$C`9o>NLh3FVzGF=*r028i~2U-`fjoP>bqBe+HRH%QzF~KBq-L2hw3;`dTS?QaTONh +Ter4j@f}VApq^%Gc~>JEFYyd=ORL_H`o6Z{X(~(FJ(2!&aPob4^p79*K7BfT@5t4ry}o! +P=&d{(TaVa9Cv?=Ai1P$o8CJH#D){B|!TZAx`{D7y|LylE*7LY%cG*i}d@o2jV74rDeXZXkhRvI;&5! +Ws;24N|#-3`mZk`IQvn}WbxI+}To-p!aaC%o+bX$i;G(=k~?jk^d9mdC>dIoZO)oYd&n)V?e5mhcz25oxbp%G?os8kTo2m4GJcZ=@ +6zY2A$r$b%!rx0_|b+zMTQd%kzVbwjl;(5!PidLjaH^>b?UfqZ1JG*XAJ`^NYf4@SMEYKxzOXlpR2Ea +xR^~SV3=0hK$iOt!BJUsdMS0g=Dm)Ac3(n8&l3YkeH-+GONDR_OnT#T%FBc14tuz +=R3#W}wa)L?N_9$jU3l)bT<4r^5Z(4-3@TjrP|OuE$vz>$0CB^EX^N-j(pD3&Ta=|u&2F_MnC9#rQx- +Neft)%Exs%x4gZPLT9n3O3;5waGxV;E=zTf*`w5D_NKh{Z02 +s&d^Y43g|se#LzojkTDYm=_iM8|L@>Wto?qzzV*8;yNC)wDy5ruaO^|wnd^<@VS-XaE0g2PWs9os^^R +%+*dSMOj1Z`L!e(O8rHVh?;%#rd_O)C(WCJ_aVdxjYMi`m3=PngQFhU-G)}k9z!h%I@ZWsv(e-ve*>H +{33FU(U*!-D5+_CH~nVV-bcR|x>4_*Jsh??|e*;e%g{Y{6$M|G=vw^Qx7*5n1aCE}l2^UgZB&uoPo2zw@+IU4@2`tRXD26JoXE5>zvyPfOn +0QLVG477@n?N`1jE*ZLHEhxmlmu=8Q}=5I5QdW7N7HcEH8@`A8+@x@ +NP(fthU(1StBi7Qk2ZO|HweaKpIYzMA+Ky`0_o1g#wN9QUMPPxD@lC+O#fh8Kg;Xe`UoSUljV_gk#!9 +!m8b+QqISh%aS)>Enmq9T75IY@ds&$sh(!lek+1&33IG*wA5mEr7hO_24FuRa90IRo(ZBBDM=4J%%1n +?2e5m7O!7!nzwK-! +ihc~BnQEAND>m54;fKQ=_L<|3WzJ +%BYSDRKS8TC82c2L?NAH!P;Ye_NWnN!gvaQWv`_Ds5d8?N4$0@T6;mPYWIgH}%eXAK}sHWo8(-}I*M| +)l{>RT@=S4!qux9)aEmr!Q{sfyBVZw#A8GSezDGh$K~^qj=}m|4suW{Xw9Y2!oNYkZ`N#r+`M8etPFn +KHzouseBV`bOL5=8T0^r~pZa#~4#8zOn-3S54PfJR<jPI!ws8 +_CgPH(4`-Ggv?t3@yjRWHGRqu#rAiyk@sy_TwK4~7Q=65msPJh^-J01t13-zXj^b`puEnjd>;N)QHK| +3k5zVY@2)71y;u2Z<<`hpxnyE2=w|&nR0@zOPs1(Ta93u_`jX?-HK)2>m36(*~Qyxjm_cX+Ly(&0W1r +{2Q(p|5aE2~%MP=+WKc015m6i4ZGw3g^QAJau@GxL$GT;-ltW`>M#kU8LP&^0XYgkl$`GJLn`gA_Z1k +YX20zjdYZ8V@GSfXbkv +$hOjCT~TbbTB6j1O0uS|#Q2-#*9w715IL)h1Pj@Y)*$wAt-)dpne?#MIEY~B|GP@lS*g;W&EH378ZBV +}q5?enzHYrpli`jP^{|^ZgH|SI7kCeIj^=O#`V(-^>O?H7BvFZ#lBG&wYxLKLA>KeT{Dr8}$+S@9wX_l6H6K +DoAf1`^dE_dtIj4cLi2LGPuZSn6nG9E+plMM*}enTU|KV?WR&FE{!2au6<25j9k;2vWf9(3R4;D1Qgb +R?v;mEYg9JyIY~62_AR(KIIL*F08{@#v<+KnX#(a7h2qqq8;C9B`kuU7TJ^Lo5wG5RRg9&^?$*HH>(L +y$kb_O3*Hv2u=1OJWw%SeU~as;mjnm^v-0}A>`g$y?xF0_fmn|LesyYYW;;X$o#OXGpGx#e|+U`&9%} +Slg!vA+qhixfp517_(17+q*|C`#UuR!k4|!@Y1AJ2v-+A%Wuz)9m=LA*Au6v$W{FGJ%5HUR%8yYrpOA +HZEIkVts$&f70LL|_`a51u=gurr9b8u&qP;R5KFeDDFvr>dvj^&pHEiZK2W=G-n}f)j$dRATp@h}xY3 +%gSpg!eh|Lytcso8s1WJUQ$Ey_9`+ubs5_bJrQg+5DYZ3?z2-B2wHbei1y{-U?DK{C`WcTacgfTC^C9 +evM^S@)c`*}=rRotgygF1|tylqjp4#LYK&#+gNL%IqD +I{wT;L2JxPPId>Lyxl67)M3GNw$i^djk2oqgTqJdC^s7b8jj9cSVnI7Sm*R%N0(gXum(9t587IyJ7+O +AXJVP|P>XD@YhX>4;YaCxm)+iu%N5Pj!YOz8k3V~TKG2L%MUKrRkoz;J`wNgfncpvjT63B_f1mzFQ^zj +tQ2yeYElpcN8JTF&*%?3vLXT&{$Mg~$=;J*$!&a*<-8F@vheP=Q$?7*uNwa$&!`DU+1m&T6p;KBLk?7 +Tz8l#s?83MP|j`Uc7H)Vz@xGhi9knPR=h*oWsJNDJe~Dn<7wHN-d03w`6Z26{K=q=4cQyG>OP{?0I5c +N@YmYTPV2(b6bjH3GVcRl6P2Kpo!odH+e+jaS%Bl(&D8pw2I0)PpNfJ)(nif@-nmq3GINL7d9p@Qaghf8@QH5~LeKNkJkh +%G{$+)je;@=4k_kR1d4(rRNfk~!pqKCa_Wcb-T`RzbH7w|?0-JX)5uyt&xP*@|Y)@be3caZ*>*^}-$J8n8D2#KtK^25nO`)k&Vf#H8I*w|SJEL| +TAGr64>*u!RxrJ>m^kG=;CJoZO1ufPhPi!rnYCNBl%6uLX`UY0i0kS}#_ziJECKgnAEK;kDmuoCcJcvOoC<0MXHOW+yLw$|vVEJX#ZTE#=_SR>F@aJLjVJn3W+XmK%c<$6_I-Jft*Fh(xOjiv6wNi|H2EQD`!N8u;aZ;98W +WmC}?~6YC!fjmJ`*Vn~J3W6psf$c-iju0Kh>`hzj^cxn=2EwLdOvuho5Q`zwk@A>!HK>Jzir +jOU4*>yUFnSd0t5HzSHUXIFodXw762`0-|y`#ln%-lYcLIZ_9Abm5=wo}vNX7}{XPS)JCn#T$p+;xp2pDSZBb`=d3{TR&RPRbDhdtq8ropT3WWRnD+@|)M;WDJ-Zqx`3+NJjWxLV^SRH6 +bPmV_vCcX%>56#guj$v#*DRjTUcPYS(n>`v^XdHb-5>8yLcRjS_J0D;4#Ivo1E9K;Dcjx4feoUTYwl< +_hiZUc&9;kwd#0S7cZjW>#=+B>=w=?d>+Aji&Cj&ku;u#e7va@8f8YX+Isixhz)C +nw%3?~(O~(lVZP`ID=y<7QRR*uZFoGYC4|%Gvwc*fhY`Zne{zf?Nei^u;jGL-B>a)d+pj|nvmB?xjiO +{aX9T5&V@ZTA*jB@um_GI7XAXu(%-)Ie`8KWaYzMA`UK##`c!Zj^el_f5+ +&YC3U-l9ECi?Za%soY2d+-GzQM^|ET?xemlhh=1bkG%Zvl4Uz+&-7ef_{n??k+~ojFzyWg^7ue>55s3 +eli&=6%Uz@_E9X`R%tG7i)yU+L>MN3KJl|}QhXMmk72mQPXCdf`WZZN8A9(LP)h>@6aWAK2mnS!LsSb +g3#IQ5002oj001BW003}la4%nWWo~3|axZXUV{2h&X>MmPc4cyNX>V>WaCzNZZFAc;68^4VfzUS-v5| +Rp+PiBtvC}m1bv&1IJaI1l;OJC{f@Ibd$&!?9CC-1pXBPlPkd$msGSkj!GOF`^(*_5*%F-e#(|iSbvosfBy2xTxDlt{1jN&5b^`b?V<|RhrScN5~F6^rajFxE{ +S1)p9zg^2biIREIo8{?3l&cI6!i>F?aV#e>)^ZF260;A$dQlF1x7AH6+0eseNDeev$y(c2Sm)a#i!6wOh9Hm~A*JBRdk)H}`9Xxn*YlHR#K3yCQctp>~U+GiBv7b5v17}3zI^)bm7gQ$)4(%FR?Q0MO`T_4oy +_bvZUuuQ5)!2?IojT{Qz!(jLEA6|VD>g8T){MqnwP|>FXqr*aD9cOOnaraiP5!OQi*yPsYZjWxb1hg+ +6SLK37#UOO9>nMbHVLkJV>20u*Q_^4PPpL_5K;RWe(u3{y%5lqz;{mF8Eg3BoBZ%h( +^iu=7@Z>na3ZKi*vX$@&(eX)CJcx_vc{W=D_;73t(RESAZobpVG43kFx0sbosTF-m9Zx(QWAo~-UzTBy!4)&zPzUSHcjm@7-`OUd?AaA@wi{8c*aTt<7q9MU>G7G(!NID5vQ!C;!>%Mw{8l} +jzU=?r2ZNeQBssL3DvIxQ8c_XI3^Yr(G5pDZHa||Iw=mr25gzc3Ts=XON3A;o`ir_BnEkvLTYlVwFc6 +=P;x3}%Y;o#z%D3su9p{=W^n_NlF|-gbTxr_yk;`n^`fDO2_p4+1%1XGIFj~F` +ZruJ*D;G2L$DYl{FBnrx@#CH4YaUUi2M&f4w4`#0T`H@5sV?nJc7c6p-B&k(U+|h +2V*>nk(&xDQI6uaf|`sxpZ>1fd8CYkDRERQY_?e2&q;6;UK&+R58^rn!WY7UsnbQp&n51*a|4ly6dsvoR%ASanjul;Cf270{ +aq6-Vy%KTMy9TX8OTKaS|jhu~K1`ltv1h5GrYH)ltFn<7jymLWUc@j_-G`bp=YRFohtg~m_N^Hrp-op +-zRgbYr`yY^KcIuKOh;Q2>9e>UaJnCqE}0X&sOzgYWV+q|Ia&eSl}K_NKuX4^y(6i88_w6y@kXa_B<# +8qkegG$a)4B`8I|c*3PiGHsk?afFf%aZt}i06gCecaMUR@v5X2~%nSyJ~5Y0&hpcAdL6) +{;MBB1u?wwQmUhuk$}^P`^KsBMB>7HkXjIK5VR-}i@2LkJ*40A5GsMITz} +H;q7NEaX%wsfo1@haBb(f}x69%POTykUrSVSm{M^uEgKYcVUoZ!rvIr)yAtt5oBrBuXzK9(=wM)Od|Z +K^0d%fq$G9|6@H|+(QFNxi8)lZv$khG9lUk&rC-X78ZP~s2eTa=QnG>2y(xyJuEq|MKI}euTQUoBbI8 +~)Ao(fT4;S*ZWy~K4TiwweqXEGzpqx-Jkis5CutHLkZ*#qzm0%kO7^;7Svqlq_;+JiiTs`MM{paiT;( +P!3=`&{i@O*FghtU)Nk^j7FtE!Dz`vpzm^qJ8fLjW{C1cuf(eisF+ZH1bXWjnN>jE7sMZ_xt$uA%4b; +`#3QLoj;oyfgI2@nK)yPHw~7JiKM+d`r&x7DKlt0Q>&Ei6vHU>*3m0hC*s{|26G!PAIz81j+7Ng5zZ0 +PVDk}+eB$8ch_p_yh1+o=N6*4&Haa?Cr{fVp^v{wK*(PnwC8~Dl+UJZ0zB4)|L?b}1ipD!eQQJ?o)9q +S(1(-{TIJVdt2eNL%Aj_1%59@luik^)P*n452uO2v)67Nx`=Q{xqiOO_VDcFHi<6ZiSH;8e&nIu*9=& +|QSt?P!f4yGGVMn~DwkstumPGnpNw2?et%h?;c_=s17xX6{4g1!Cv4WH5Km+Gqk-^R63 +%b*pe4dgl?-cF*P#*w$LRPxt&jM-t$I0c?Ks1bOkkf4(>Rg7b<0hk)`R&-9R1f0whSw5}^qeU%e|&S3 +O4P6)bIvWYIA`)xmls_z8!k2EA!TE(gjqVw#1Qxj~QDoP$S)&AzGp58fCn5Pez>gndGzOAOJpHOra5B +eP!pabgeP3S@2#o3}exxS +y6Z${@ki!H~k$63MqT3dXprhk*2jf{qoJeDqS-$?{}7CKN1oqsNKUD*) +10amRymmUJzn=(;yZZ>WtaBCXB=HZf|D@V56Wv5)43X5c?Y*e)h6qE0HB-%N}z!}-@SnunJlfl8ZoP{ +-HEjyJ`gg7UO!_EqGB4&kqepT6A4tGXVkIX^WY6KHAz(?ne#igg+*L%WvuI&fdTI>GxX^8oZrAeZSDj +@IKLCd?0N&rxxNiZ)`;f0D;dMJGKb65^|6|7WH+dLLJI{|;P^l%n7RjP$Td#C%zdLkoTVW17|_c?&q3 +6+KaKgv2vY=dCdc=Z(rZHxtW4MBmPr}KhFgw$|607y_76VSkzHyuIo4=_|w8d@9+^}OJJBEw6q&j +c2xaNr>w=1+|eGKW}TmKBxXEsJWMbWTnRM*+Yz!>C`T?Z6h0FyMxk8wRF*T6MqrNk>4-=fl5#EEkih6 +gNX8!*KX}gEdZ-6Ppv1>QXL6S*6eCJlJt~>FG#i_>%EF&9Pkz0-$ql_%X^7_w11>o~5~EOvGrPrm1$3 +lNH>-+DTG2Y_j^w;g0DLeq8B@!8FurS%=9rhy>r^W%_fIv?e8`aLtzn6|SLy3Ho4rRB?5nZx` +G>`<&U*PKq6J&nz#L|nMrk<>SDAO1RETfGB*TbcRenvV9jC4EmjRg)l%qYxVAeEXGUkbn2KhONb57Qr@LEzo!k=11E#!%-) +XHO*TpsqbQ9NR-y2M`=WX%4l~*EkK;+i>yA6ac@y<19*ar%o=QRPK{`;a%-E`S)Fwx>bI~8(u_Ki7$f +|*zMT-?m6VVMZUr$?vNZx}S#u6RM|Z*>pC5HFmiHV5yGAFG=vOy{}GE+YDAz{BKRVTF_?~7=_x{ ++c^%0ahlBQW7j&bWG6X`Zd9FRdzz?jBzdI9#R1HVax`t4ua)z96ScrD4PXF2B +fhYeK&_6h@SZ39;1f#I(AKTt~p1QY-O00;m^MMG4Aoc!Jc4cm4Z*nhiWpF +hyH!ojbX>MtBUtcb8c{R+v3c@fHhT;8O#m8|dh=jx+1i?|~Y>pvnZ9{ENOj5vW!r#|2T|Ea>X2&A@6aWAK2mnS!Lsa`d2T~{n004mv000{R003}la4%nWWo~3|axZXYa5XVEFJg6RY-BEQ +d97DXZ{s!)z3W#HE*6p&wt^mt0!Dq4;Nky?_nYXtf4I~?f2*#UzLeZ=Fn +TwB*{*zmK7k6Tgn+$seo&F6k5p^qzz^#&ASe?iDtLZVL`uRJ@0wbfDUH0&{nBtFtgBh_-)DB2mC3!U{ +d!u?;Uu&(<+^V)I8^!A+!F{kz+)c3u`w<^OXJsjQ3uT!nNm9d(9eE>aZlN@1gK0DWl +dltoe-1JCdo4|`f%zSK3wGd!*#j^QUwUDL1-28=)QI!clU6m9cLTv^mb(b^m#n6jo-8oRXa6QfEpbm?;e`N~f#G&}Cgq-9>gy$hrzmt +=&2V{GpI*?-$wAR}+XV}u+2=cI8B0)Ij8t9en^3Yw|Yk6UK7kcYAm)-|_JbAy1&ni>^;Q95Qx7TpTfXZq%64u>$Yxt +B5v2)}q3Bs^=}U`aA*~TsALph794~3UJTaH^%%=IMY-9jgXH|ld1~b8Dh`-Wp~5b){RYWdgRx<+*#9!7Atl2tr?Zb +Z>poEV=)9lOIQ?(mHmc%{$@2VJD2#%y$TJ<&KT8x#{}POc)$H-fuc6o$Lhe+Sen294jz*(3d*g6$?kE +`4UwJG#(Un3Pi+s%d(mc)|eho#fK4T4{3Q=po@vT8t0>KXPXtKk>k~&Tb^)(X +=soW)1mZp}xLZV)hR-Wkb0})cz{`t}ry`Pl@#K=03+bk2ev&Mf$!noktF4e+pPl}#wjn&PtWa{38Vn7k)jf +oTprRW*oD6&~u&g|fKz!x<`io#w+# +ry%IThOhL5VqrZWd>>V=+P%Us`1z91Uh7X{wF7@p$T<&2Dh&wY#T?{-3aKDX95Fk0VDU(*&mIAbFiE` +hjn(_@8eP50(a=gv4>>;D^N=V1QY- +O00;m^MMG3`rJD=F1polV7XSbo0001RX>c!Jc4cm4Z*nhiWpFhyH!ovoWn*hDaCz-m-EZ4A5P$by!Fe +bsW3IAn7zSkULzksn(RK~60(-~`ffi|-jZA7JmBcOjzweGB^G?+F*M +yPM=+`25gegvzEWZ}`-Vx@U*p^PJHF26OD_L+-SsY$oT$1ljzb6~5uWdS+PNx&OEwup=W?eF4MI1{Vz +Y4ux18*E^J6RdMg?Cyqw;_?dTcM)VTf@pyn8xNyQGy?S0XKN-&18ZKE+W|JTDWKMDNK@Oifu)f%_f +rx7b}vZ?=!z=X1TO3@y?u+FtxLp5r0?Q0r*oY}Pld|)*#WtmB39cY;h?9 +ihJo5FEYIW4;%0SR7a!e!G07Pb}!{Vi>#0S~G +@A|&VW6tI~h}D0?+xOb&h`Ahm8;VBKGPEYWG`n8)^uQwU-hYnI#*sUizz53_rg0Ne-3W4gPWGdyuTF< +LSOjo9FrZ2l+~+kK|9ab_ZMh$43d3O2! +O}f%N!K>w=N0|HI+6CpYLapv~U0cPCuId1AAm`%BZk$OIA`rG1yDD`mB+ftusO-n5vUKDHzWK&GdF7M +De+q{zuKUM*nj&{U0<_@9K}=OzQ}`Z!@ix_~gyhZ}W+o>FuUC-bs%%P2m09G2hb<;kObyX88PojtQI} +uVan~8@J>mbhBLosaC153=3`ewiCW7v>noH+&{H1`C_s@?QUa-l5N2e%Pq%M{RRvm>4*XHYW)K^DOq4qr +v!kbtoEwz#V6*h5%@!b@Lu468dCa75-S8Yeq+@xG`_R*MWPhqPJ9_{f009O`Mk_z)NAQ2l@AO&W1vU0 +jocdzPnS=f7q{?wvkSH>{BRGN+?;_R!nDbAT=T7csrK4W`X|0EG1L$Ae5?gN)HDnf}Sn_ku%?-np~oh +$(`Z9{1{Fam$Q?7*FVL{>RYEguwLu{Rd)mqoKK1B{p6wM4NOdG3qiR@ps=HdlG3-DL@%j3T0u-Amy1^ +-z^?J#L`tsEGASY$#m2FVy-u#eXQcd{ +O#pyS9bWD=I!FhM4pb}DWY8eR95MuHU#KuhR(?YELy3x0#5wT8m3=xnHF4)6tkW3fZGw^@WK5B<|6r+ +68OJQ-#zn)%if0fQBeo)P-T-Rbh`>uo@gE_K11>C- +(VE5Q$!zi$P)h>@6aWAK2mnS!LsSj1R?vzD0006I0015U003}la4%nWWo~3|axZXYa5XVEFJo_PZ*pv +JXD)DgeOF;`+cpsW?q6|mFhpKlB~3qU@Rk8y;2 +|xF6S!98R*Tiz!sW&LOSokTe^lz<&I!&UqD0#-7wYd{RUfALBY0&B +$b8AaD)&BGLduOPYEwA2#MYnWiFUZxDUoQ_%VF(5TG6{6B3aaMThTM+YXp@4zH~(2j}OT%_e5f(OBu# +c?j8@PsZ1y>3sAKopt69GUvvC=KobfW0;RyU?uvJut)STXB$u&*h+Jpvxu|LN}G956;ao@Xu3W411|Q#+5z0_iti=^KO^^n%w9Xhh}%A-%<`RR3H*d6^%-}=84j&i +Q#_TXv6X+ix75$48wByQ{-IhndQ>SnMSxw7tLtBryFU}neq}1$#X13}jjvYXi*5&80VeXO4o(okI(3zb&b)UY;U??Psg^7F^7buyP(<(jyV2kXnNT`Tz^#!hKPUNc5S#h +A{8G8To8CaDQ^>0rIvpbw~Wlv9q~HE}i0A2(`zjNLFz1(mx#Y_R_`X;C-_D5|n0BA{Fiuh%wLg<5q!K +!jO~WPO0JQTpGoq>_U4*Z4pjVJF3|FHqhr&&{z1VNuk>oWk;j=TA)P!d)LwWuB)?7pP0U)aCdAioa$d +-8GN9mB{FxZMIs}JtAuN7IZr5Vjp4|ww6{#9X_wE@k>yrN8KyJv%KiR@2)Kd-%zia!XcW&^8TTB+{Ic +>(jN6|AG(;1Lf}68F`=ca3{v%7383(u-uL@VEG#d~p_b`sC&$+S^)2lFDit*iB_37FKia(4a`Si(Nr{ +^W=wmWh`l8$WQJf|rM#3V>dK`#e*@TMYMx-doD_RpHdcmHyPf_pd`){w^Kd^9bgls`^y#5T{^8WPnK! +G ++pZ%=i<;-o0we=EnGju_@0Sh!Sa`P&yp4VSaLU?y+0sCHR) +RdporOPFwDW%kI7ykQg8A*&fPSTN`H$WcW$J-KB2fue({5FML;tTtHXt`)m*-Dm~3Pc~no%t>&!wcHuH)gX=YLR30|XQR000O8MnywZj|-w&d%NMpB>Km)y{56!|2Tz)|BPK%9T{o?l|X6W;q!Pk{+wug7jlu>%l$JlELXmuNc6TJ!H`1n^T%uO+@=lm+A-2mmNgSur<4njb^Ca-il*xK}DG8lp=Ank_y^4L+b&GM +Qc-9u-s4DYyB;n82BHLs*KXtze!?21GZq>c_%fxRe3|09akE1ma+|7#Y9c@J85uWKe1&dJVbtCNq$kY +UW4T|N8c8%z)Mcd0g2~?z!Opj_|UM2T)4`1QY-O00;m^MMG3O&$vd +<0RRAL1ONaY0001RX>c!Jc4cm4Z*nhiWpFhyH!oyqa&&KRY;!JfdBsw}Zrd;nz56S)T;gP&b{`O6Sdj +q*2K3M!hFwx6rW-c4WKay!?CVELcAT`k&lgkTiq;&!}Y==ug*7|(HkWN +gP15cx~-AI!+2_&V{}A?%!Y&p<^DP2#MP%Egz$$TyqK?g$)%aVZtZ(b)(9b{r%^FNuN13_MnfQZd(Nb +rEU1L#=VS$T>Ra4*H!D+FIc0qCxN4_9~lgS?ZVoO0E~;LZu2J(xxw$j-F#>mdnFQqe=M>Jb-yhu&2sw +k8J7y(fGiI97gfv4ZQB4XAIt;nBPOHo&330+}CG;VdQ8>=Jyr|_()zBXH&m-q7pDSGY^kzqCmz)y_q; +fft+nxocXZI8?@{7ulvWJ6DoC6`NJ4=2pl%UhD!>8ua*~lWIFCxy`ulrL8rC^Y!q!8l`;9ftZsX38X# +F82K(*I5bqy`#YyQVm9EA|Wq)J;U0dg(%FIvmj8%5kQ)vg8hN7ds85z^bwTEl5BffXMSBO^Jnr`AIC0 +AOmk$nm1%iKWEi`yAN`xY-(`Y#8jDv7(T8tvH=q1a|BFFYU3{PSGg%@_X^oXq`q#aGCIEu)9`If9G7P +)h>@6aWAK2mnS!LsS&>BK{Z%007h%0015U003}la4%nWWo~3|axZXYa5XVEFJ*3aVs&Y3WG--d?O0oH +>$nkq_pczlC}d+5@7V>~Eezzrag<|W9m|lFO@s76kR{6IMiy0)N@6VbzjubBZjO_4TJ)hn8w9XKaz1` +D9L`0<;qaTbt*Vq@_bIx-`U%?}yJc2VqZ#Hh;^>L +Pik4rdzaG|rVKG1kqk)#RXIf;2fiA!DtSCph&kb)I9TqqX9c}jBY1|(xK&0+bZW}<(;BXeFH1>5Zv8O +3Ar)2B~=z4+KFSFriU~_JtLsp3;ubO9jp&m0&R<*{~?i%B1B}FUr_~ncWaX8&8L&Qi4v%*(L{`uoQo(RQ!1grJ2H; +>yy)SxZi-kfd&ocgk0T;qs!ca#!?Hw?>MYQG5R4ZCJPR_n2aJGT>p-t{x@YuV6zzTo13Lc1eLuRW7@{7B=u +201I+uCkR(qf$Oad7+7rXtpXngZP4 +Bi8i0Fu;joR-(MGg|`U1|hnOCspLb=nMH^#dBH>== +>H!_)uX8aVksUCT29s%i=N+B^|d32PY??nFI{;)P;d)LWRLOl{7n>j6Ny^P1)l2uMx&w>TWqBX|nq>d1{^7mvPz?)V*ga*Q7 +rcgpDbf6$?<;o%~B_lw=+JanGV`Bo98--$kOZFO8HnHBoK*4}Xys4E&eSDidM?zly-Y+1wkmIarYnPM +yqR1lk{*phsR*VHJ6cXt2d9=*9DIYZ7^u*-T-kz-mA1lj$0n8fx`?^$;w1AgBP6LD1`u9QM1^iS4b~* +ReDoQ~!wndy%jnQU$s!sui>LYpw>I42?7e3YE?>+fbKk2Z1=Uf`6{=kr}Z=*RIj$dVRZkumCyz_guCu +Is$+@g&+P-%rmeG|Q)Se2dF0|lFF>O`mzp#Y_Mj5(9#kkWP51qRqO#inDz+N~-ho5rRt`iw0hH|t&cx +>WSe#IAVyfZ^lC1>5CZ&$fw&un#I#0;Sz$udy0|?sn5wL1y;GZ-l529|<|W@A)06aWBifc9Io+jYD-TX!Z0 +QWoBsG@qwJuM0PS)U#EUvgJSIMtWE*oDtPi3>ffxY+dKwMxEOVEQL8}xgbvi@)AypPvz~~9f|7r9E~& +iA9J`@#5YapfBcz0IHBNUI+x&W4<-Z`ZX#s6UVNdT%{aJyu^MLP?bZzmu1mNY +ivy-&dkafatFb5EnEO^dbV<01hQdDe-!*oi%|&J2t--5Kc)oS0(*>90_dm>6jOtT`U2D)h)HUD-A9FN;EM`86>F9}mF!mf9p*kk~yL0yF%xn}$SyY;_tw<_=c&)qF^Ti(4P@6aWAK2mnS!LsXZ$>E +6);005r}000^Q003}la4%nWWo~3|axZXYa5XVEFKuOXVJ>iaeO67Y+c*^6`&Wp-U>O`k7ek?tMLT`8g +<*J$*_9#``zBGJExD4M*R;%kpL_M;*m-HQktN-aqjS%dve|6jO{(wM0A6;|OLj1pNj6&Z6tv9B3Md9t`O~LS&w&KvMeKSL +nj#dTD3;5o`=-H=W^*f$JBCQ{h)xTulgRR-ONr4w`+G7D)a8B4sYp}_`Q#P=c{XGmLuGMUK!akt$nkTvFOMl}khokuQt+*-%^ +6!)NG-39ThHbw1V1l@sd6}U3RdshCG`Q;Uf$anE1>zM!A3w4M$Db_4Ir6We)RkIt_govAoAljsbS*$O +}@LkO^A@p-*vMu==bVdO-UyahiD#u>fhL&pva|Ry$>a`n{=eo3)E(G9nq$-y;AWAU=60$3sGFEr@kI@ +)5>LpB4z2gc3O&@rxEQGd*74cH6+f!X_VlIkNcFOrO`XteZW5kskZSy$9y+Amoxa~Q9!)?qLJwKP>B3J=z%Ylu@@GNnK{q{ +hP9DLsEb89sqefl&3jaoReS6eqnX*$vv)n@+|IGP!+q*c(&zZi3K`{Js2IMFQg@R>8UnI)W2~;)g+XE +tE#_Ae!&$FnAB#~hl)59ox&M}WCj=yS9QeJ0R@IW4{6aQlzhs0{9I8lo<_T4P@|(BzIFT?P!w#>KNh3 +SVmG)wHl~=%JtjG!aakqK9C|+x{mrB!RI$qM>kH(v!-_*tLLT|Syn{9}U6SIo{9>u4$43)+E`1z#T6J +6C#o&n1Uk!yz}^k_tDW}&K(I7)FqWIV|b^V2<&5QTv-Ild?#r-f#Dp@fBnz!g54=@DhS9V>;P972>aN +laM$4^T@31QY-O00;m^MMG2;Rd|No3;+OiGynh|0001RX>c!Jc4cm4Z*nhiWpFhyH!pW`VQ_F|a&sl(kJ~o#yMG05^TF~#5!wK400TZ;UPTwz$0FHWJ}edrSE6lpWl|NTb&R6_{bu+ODN1&-Y1&@yYG7l +T91iC_Lvg})wQO3_ZW~5RE;h4uBX^{bqGj*eir)}!0PM()3c6v<%#KQB;HAoH+HM^%y;1lxB|k|n2vw +xU2e(LVyOvjGq3UkxMixw|exofbZu5dxRcfDQ*VbK|l2@0{e|&w}V>#HpTehp$ykZW)?zY6CnVHQz13 +RF}4swx4+vavCS4G3?Hb?qrvpfen@|>*5)r`Pr{*)HCOq8z$y`#LMHx-+wgPC)2M=M^s(Ql=^{hliYl +66C`h3abDla)W#tf4KJ!p)UzO}nbiy;$<56M{7k;OCCB6Vn&0{_4xexal(>T#sMRX0v}r+JkMh*h=0c +i=|%LmcXPHU9vDk&B4s!=fGK20+b$Da{=gsS)m4pL%TSjioT2fFUWQ+4gSqLFC#1=RuRumcF(fE+N9Q4WCJWmv>)+w+;3x?@Xz2R@Mmd#0McMb@wNtA-r(xz>LQ?EXh?4tq^@9{(JK*9C&6&94jTCy!Gj<7tTSTDZb}KCf|%TM0w{ql +i1HS9R>=Bb!vqLru&-wf2C}X$K|;v@0-^&>`$+HkfWH*it>ABA**_BV?!)|(4`!L{x0p-NSQ=*R*yNu +-LKbGHX=#8Tv?Xhrl}Uq6I6^kNoPtYh42hCmQ?MMva7r5XbH@}|ycfg|01oj;F+wr0;u=DGgT}Cs8G> +GbzckDkHcG0;H2}s4r)pO4HHR5U^b`OqaIQP1=S^C|tw5Nvx-W7og_!3O9f?QsQxk`ZJgwkT;O>D99Fs*a68<)9j=GLtXQCWGx$VaR4h9ALl{&y6vL$6tKkZ^UOr6pl(x% +}kZ=_D4A@+F@MBWyS9pQM$_*(^u7b_e2=(=X{B0Fd_u*#1h2kX(P1G4gV{J4fvClklO_s=;pIFg`!O4 +Xo+DLE+5VPF_>N9|p%>i`;6kslD$)1DbQF8I(f&gOYkJeq5pa{CN2y#HMBpCU%vjP(Iml%1fi+c)r3d +(;cjQRl9fOKZ9+*MhK+hjz$twFDc`pAG0A=PC+@MOtM30B@8gg&TIEcPJcOyfO;&t!`wd7>jfR-iUri +#vI%bN6KG3sKbCt#bB`6PGOu${ss*-z9 +$kf6b=b!5qe2D||yP(}LW~4)uoip)Bbv+hk-O2*Ri +7dFCkDYf20SV*>WFxy9$ed{N-mk1QElR2Z|gN&4-`GuZ&TT8dIRi*-^8%-WGMOt(N3lw`0Ks1qr$<0t +`g2N6mu3F|_Q`VL)PS$ZJv7u(*~6>BGmv$BKSGt4rBLa(=RSKFn-k)DO&_`s{8slX#lu``%9_B1guGT +Q(qNPl341_g$Agji0Xhmd@<44n;2SA*e!=0z#M`K2L@f!jhL#rNF-R2x)egsCO^O!|KEEeNI +4A1P~d)0wRsN5P}x;WvEBYqQ~i#7f%MDKG)!>|HBBHa56fAF3IKl)uqKQemRaT+;NH}g@UKXvA7Mxjb +zN=tAkIa}kROk8xA`dmsY;+Byf6P`+g%#ww&v6YA+4`X(YN8w~XK?fwDUw&P9Qa5nO!s-Qrw#q?sx$( +sPma)oe9rU~An;e28#(EVVvMeX(CFX(k0TN1a3pSvLMQLKaMv3aDMC0|5!-zly`K@F%aK}V(a7PStW> +BflQOo6QppmOHjgkCgMZU-$eRY>27gScr!E=Y+BhL)=}t7*{Nn)i7e3wHC03{}U1oF=e_3M!v-odw +dtJ0`c5s#{Z^na!>LcnM;$r(>#z!M^r*ID-VpWv7q;ZSat<`V}8yD$bM@GBg%gXsmdMNbM1!-_@RyweWh^lQlQ~6De)l +(1D-HjdjWxm&g;at5eqeUWYpAI}rzg<3uyR)oUi5bRxJ<`p%K$#7eHq&QD)az(L&N{;Rh5-D(Rb;y<9 +g=q=^13gb_yFuXtY_)N|5Ut4P&H_p$g+&E?TzjMVAhtNN(_UIM)N0uLf^}MG7@&2X$$19NI9`#ulA^J +A|vv{ZB%M2_&9)10PRcvTAeX2@hta<(XzF>MJPMUs@PaYn%N>MN>42MPzeZubL{?YP2Dc(pdfoDfEzr +nLZ#RP;!Z9yry-P2~H0v$XcKZ^dAJH@xzV9LGuz81WY-~;Ajha~1s2Sti^N=3T>E6}%V0lx5x$lrqbO +D|9uGdEH8megH)nN2eCCd39Xkda!lWl%-l8~{5IgwUOCC3*7d+4(t1qUJUt1)79GA0VqhZmfaWQ1T52 +Z^pEgrzF!4OMe%yOvZAVM&GPqFGhgMij133#xZFs32{R_G$iRa_aFhx$RLdk_Hj8elL1jw9CX`2P_{i +F-(VaZG_LJ69r}6#yc^9N9$O4cMj(DQWIBYhO&vMblUH9{lNE%!=$a?GDH>lNWg0t6=9;Ow&vFdv%=; +qqi^D5M0R3ft@#5mEFCXVmU!Q;XJb(J+*}q==@Epv2u>9BAfW!F8=;RHS?P^f0HccU;)r-OE50>D>R^ +d-4zN1P@7Q>APlDX=|Vg!<3Jh}XKejVS9`NM=h#<(t2G}yKrlB)v&7d7}SO5Fqlkh6LCbpUJHU9x?{T +bBQ%q)7bg)bt-GEmUfAJ(3~BJPKgr564{Ht{yFhY54(p*#-TlQ79gOY9^<8iw(zSV5}r_OXtjTd}kNK +AGwZ7Ci%NE_);I&+a@uTEEa?C+m_eUBEsgh_!e~%aM+YL_%(u$q^wWaE2mg&Pd9oEbZI;Dj50?)fe6r +!lX>TxKj(|Fv`ypBWQVB7(Kls6#+;wrO-L65j&C;67X2|>InT0P#_!$Fbuv%tD(oU&jpO08f(N|`qc} +Ca#&#I5#(XgByE0r)n8#5uXp^;V$H!$5HZuFQc3Iw={d_?nn@w~XYfPr1!sS?)U>aT{M}4 +Lgwy7WjrEbQQ=frZ^j{i<&n|%62+V;j6T$4aAbUvO7hSxGT=#w_o_c7RKg4?d3qr7{R*CaX9UN>Bw($ +CoD`NN(~M(zb+*l!;%osA|hV3v}u!|O2uR-WPEoY7TAsk+fV@*T3(p8;~oo~%j6x)@eIHPOLl5AMh1g +d%ZFcH>sJ7314+45m`1Qq6jwo2u+Rk!&UykN;>XnC=@eIBh6;o*)ybeKPb|=YM*L?Hmg^q$=zmWz8pp +51YuiK5{sT};0|XQR000O8MnywZq8!=?Bmn>bGXekrDF6TfaA|NaUv_0~WN&gWaAj~cF*h%1ZeMV6Z) +0V1b1z?CX>MtBUtcb8d5w`xZiFxlh4(py#b!Vnae%J6>7x7DMFnT3kOBY3uRodiqgn<}rh&C~Klw4emxn#jN9~o(xdJuIhI02lK +Zkt3Rp_}pm0{2ECw~Vf*_YkizQ@>0odA3ti0J?03v4=TaM};saVr@-TRc2tCfexJgqToh1;~88hrGAD +N3UM1+HoL}CRJ`dFx=-0rnO)4>Y>e{yU?8vKet%^_%P6#P{^H_!KbWn#$Kf7{70)55Ef96Ho0Y|=3&$ +_zMqgWdWM=IdPCsKkH3n}Ulfv^x@x)BL8$SNx{x8HDF#ne=k@`riJ_5@qLzps0)BHv90Z>Z=1QY-O00 +;m^MMG4y6C&P73jhGYD*ym20001RX>c!Jc4cm4Z*nhiWpFhyH!o>!UvP47V`X!5FJEbHUvP47V`X!5E +^v9>T6=HXMiT#DpJJh)AeobyCdHwJ?^M7^y~X^y$+*j)~X!}BE*1po4Denk`bCNUB9tSI@M3PCDP=5d;mYDvkgW@$oZ@%)PB30ZP}CBnhrq$2d +Dpz}%`4i3l*o@FsSO<7J!TwaPpNf_mEMn`1M^Qz=&l&}(LC;2rid7ja{BG+-r;#o?836Y=ollOmp`eX +F`!^xYM(etAhuP3K3$3R)G!-BKCIutNxhgMNV?~l%3jf=Qi3gQb|#ARH8W-C@L2^XP!K#KqbaKw4S@} +jQ7PlD$t!2$U^yjr3B!$a~p48t#927@yy>Qt%ej^uS^hU$?et?Dw5uHzI&SoT8%#gGWR{ +WWiF3I4Nt%5HK4lI$5klr2!X@S2u_@jPPrf=| +D{AU}`E4+?IN>==2O(1j}^pM4q;H0y{weymUt7?=``tAggfBJoz5To!+l`IXbgkgcTHRFIjsVxnmy%l;xAx2nhM%6#j}Sn#cWT_yMo`>7X9<~sy>*fF(kU@Dy@CU< +Lj8En2P+#&72k$AVyCGL3|c7fmsraLLo8c2y+uNm?0GtjCLb*1aM;50VY1?Kvl;e?L)!i<+@S&oQg +`RY*J;)=eF=benJH=*)`3Z(V7;kfl|XV+h=Sew;HSi!jM7I&3Imvbi +r=?X^*-W0U3{*OKqe`HU^Q#oZr~wn1Q!tHvqx5*+LlYACaR3JCB2^qz!bD5ij-Bp+e=tLX~Cw4P+!JfJ}Q;bq9x?i +>uYtq3rPzNK%{b71f^~E$>>N6n5L{42A=O7YJH$NYIFck9`$tqTj3c? +ctRW=@4{sUw^Y}7KgZ`d1YB6I|bWJokTywK|iqdWqbjH{|_N~vVfj>p+26Izhg&^utD1&!e$6;6DeDR +K;rlnEIbT;^h^e43hA24uE&OGBtsQ!KEdGaN)!LiQ9Yw9a7w&(k$2I3!i@KQ!uTEz_H)qMjzKLST5Ik +;;up(6^f%RKhdjjmh-F*mxNWX&FsABE$9+L&u(mK^PYWvfUtc?P-X$QNaUIN&j0zf)Nq8QA@a5QkwdJ +$OXHM1g)?viN@F`a)l&KsEiz^J2}Z((l+w+!qjI|77=|Q5=OwC?AMBP$;_sxaF@B?*bMaTBg5u}eS-rU9FyX{nDHM=gG&97k@d>-ya(xo_O6Q69iAz-T$)vazn~+V@+&W9NT4iDIsomdHmri?@@ih>pW4qfa +*h&jc-9=Z&mB9FB^WgKAGS`aIUuB%s{o0(|*tkonw;|(em&h?>W*)IF;?9lUpT~x2c9FA=%ECa#nDp+ +5l3!f*J(!d9zJvHe7I9z8BV;7!LGyYU8K^x8lena?Wc=>{(o1p(B{7GH6pNNwY7sbvoDnK_jac-Z!k| +o+>KX2w`Iet3)?|khH-gUWHV-3!EV#IPQ}squGp>Vr<#97IXIQ^!p35)PCXxaAiOTeoLTa;CAs^7M*H +qXVl>6#gb}pnE2HkBu1bstxK~_xrv4zFzC{?Ips#A;YOy~>@l=hI`hhL91KR+^eNy@X2_X9`};-P--> +H5wt{}4S~$Ywg(p^9z-zdBk3$&Y1uelW4+p(qPVn5ZOdQJK%FqhPBe<$yEJ1D()xz88TCL?^niRsyP7 +{!y$)7e<=7kBq6bfP?2*a*P=v33-wee8iU>h9H$?QBOdM0c4hX+B=839F#8 +0IL!n##n7^?~6j}#O=mYp-3?DQp`1X337uGmxpt5AWuO<6ziGql8i{l^c!wApzuFH_Sv#rX}7)iM*B|0e=X|oh1$G +1fzk9Y)y+3&~Q61?W*3e6aVT0$6s<}hsk!K)9sJ%V^wP>9Se?2 +kFFpekCTlWIX#lWuG(ClaKO*+ZVTH;GaqOa9+$9kQduN+v25ehpN#|Jo^MPw`yrn1d&KyyEp)6PA%3E +Ck);wauwpj|K;?-o1MrogTfN`~n((mh8M;apN(hhM_)7q +vlv=yZFk+<;>mJcUS0>}@8+!~iDtM>Z(t2HJf$=dJ72lehhpyg4ukmg@0Ce*bpJ$Gw@gm}K>}RiTVCx +;KtxbYEXCaCy|d>v|hUk|6q@Pf<; +d4*(e~Np^duS6;eDEvdV;V@q5~wx@^Y0!5%eRuim(QGh7e<3~H+d8G3SC$5>1Sy>=u_v|-^U$;e8Wku +d1BjX-N*{qpY_2rXnyICCn;o$J_@ZhwVT^E;Swl3RdyPlQV)6##v?yA%eg0W=fhZQt#{lmJrDcgfhl +U)_>ON3CZ;mgex{AUgA+7kXPHZqWGI(;~ujF9vu#^u +O`B7TW>rFis;S!ydcG;@YPDSgFgL6N8di2u!urBU+7<>-)zB8Zf_dZz2fb5-)tr}Yb&0D7U)(n9YaV> +vtZ!t2+g-aUZ}j_ie2|xym;7d&74z-BC4flE8HtZph=p<+iJ9ppb%EB=OHQRl +O5yJ>E+(-)`N=Z`*v1`f|IemTpLd1I^mK1_W5Z4(Z>sX1N4ZMI`Y}s&=!iF7)s6rl^*HQR}vJV9NEn_ERixf(dNO +51ZR{v2u&CDc8XmtGdPWp?}sJL|4~+(^eno0d0iLM|T0Yjemu~9BkIRCkGk)$Xk4MP=1(|t4;Qj9=%w +vn>DvN%1(E%&2{#9{u#{s2KuNjs%5p=SrG6~R!~5*-7^LEw`7sRI7 +aQzO3hXXk{;}51n^8Jj`#J_kh^aYP(*-hK%71uf~Y-H2EVqB`d^H#ArD7a0)MWc#5+Y&cj9X0dR(4Hy +#k7qnlRr_U0O>+!)Xl>B1OJ=d!A=sp0o;UcP%VdHe0@>FYP|U|#Rm+j7rB*KlyxuMIizM7X!=Wz^;!y(<*SIN7JHcP|HB&j=x0c4<0`_jYh{6BB8s;~}3@CjGbi8Q&~RY=H;^3A=Q)xEN53hX4{)KH@ye&^T`BPcQWZ+zQjkcGOwCi7be&4R=dw +1Ga~omm!5Z6oVLFa5oko0i5#xUWH_)G>00D)6SY7s2BUkl#Zz7_D){1F&DZ6RTexL!%6fCZ4{nO}H3L +6@)-z$H1G)DeKF#7Ul$deqBq+b&j{_u@X%3=FOVU?%M +-8LOh!6C98nK=UQhq_nPUIDs|EmFY~h^3&BfbHw{QVxwW;9{%*zF_9q?Lvpl?sh^-a~{0F{8yw&SZ;& +F1NI%}tqIF5##x<gbK>ymsj`<3>_F-l61DTn^#_JbWdeW8~ +eN@cnlLBsx_rzLE@UkcYNA6kmk$ +WHk+u2#?;m~7EWuE)RsIx2MlJ^b{TBJT+bf`*#Ih0tT*H6cZOPnHk;!pDEb}#Gq#j=`9^LqgPy1XoAI|CjF1hP#q( +1Mox=U-&_6FEEldI+zPasc!F;QChPA_r~dVz~5dS +-l(IA%jBK`D1E;;QpW(W`ek*(Oa>4sJYwCHmp%ydvrlkW|)Vr)fvhKDyCh2fGt4&LgTob+qLHH)XBs* +f$_DZ*jHf0Vw0sL>XM!m~&=Lx>TLXrR&f*g*;LVAyvHSn!XE5!FLbqTE6W_C5iw%iQ3rW@QYylW7_Nr +XoR&5iZsBs-iJ>)Wb6^n@k2R?Kh))a8fcPg?ljAp0a64)Q_%cevb#6MjWE)Npk6h$M`#;O||4gxM_OD%9v#F7Fw5i@!woZ+8}wwif8iV7Jpb;~e3B-SJ&)&yV7Kok_g +WFR;<7{jmIdeY9;)oO!((UDy@?<-(6^luAvFlGR#60y9Gw&h14V1^HnPu5R6Y?Ho-*en`c$iW4Vl!@w +mE?ig8m>H|!5wUpiu`KF~`hB%-Y7`raCF%6m&5|MO-R{^bgkyMG{IiFj)xjb27Az!+F4rQ?=$v!lWjJUm$(Q06(h~0e8GkD7rcq5&CQ`A7J+`yj)n~%+$bcKJuz< +oSr3~(#yL=^^ske392&I5iXr}|k_FMtdZB-;^4DSvK2G}b|UTO-MbU5$fXOvW1 +uO&-eI;CcbcDCZ3j@fcE*Z0>fk-*lrz*qZMivW35BG37cEq`1ZI3U!YO@~$d@7=j#CGJ>EU0#Ixw +D8s<0gHjh`)0m?G$BUWV2}`y3q=W}sasW*y#fBDPg`OCNO5ZIqyzIyuRZ|={xufKis?1lUD*1}%T*KZa%9d +&ZnzO$97e;BB=e_e-GF;>zB{h)q%D`gaw+3B6BsRXbjTAT87te3ZzL?@TgSKoGrpR9(Hil@l* +v+36{AZjEIlFOi;nUWC``~XPP`-h`%8J=DPsk8NUR$zXVz`2J{=z-J@dYPt@&S~Gk192X9@+ASiW{m=jykK(oK9nEkmOV!yUVs1Y(`*2utUnF9a=#4rpt3f)6Qw` +%L^8#C^^=~bhK^W{7UXIc#1{B{a<0QeGz1U)`5x?nkR1jn#yE*Y$Iyh%`m9M|{LA6!x19F9w1RuNH^t +Zk14kOek%JaaDS6fgh;79R)d+N}4&t%k4au@=2yOI_CuI|y%KmFmy7GtE^7Q@47Th@VrfloMhP@vOU^ +a;d&K6~X_RB+6eOy-W%bI*8SiS5xtqCxQz|B^rs%}sJHu>i1|9t%hMgO0F$$$Q3;HDW{c}54yzCz>A4 +-Eebe}8sh7+CoG@j<}B!jne_mW71}$B#uBmtw$%=65oB+Tri4o{qoGrg57o`)XX5?rT=~Obz5IZ(#6< +bYHNB_y?-u1z3Fv%c!_UklQL7yf(r8BY)sR8IUIRVAdv763ZMuv-Mt_&R_ob#%sy8Gi2SR06za) +AZp%VQW2Gt}<|s(zAjCLm_5;0O#8n?4rMBZ26&?N*n^ijok`29qNP<=haD0Mi}@*mO?=|U$;@lLp*7)ebN8k6nEV<#9h{P~ej}3@pq@DZn(jB=3G=~ +O3{oy&!c*GJ9BxaH>xL@)ka7hzyrU4Us4+1C0k#zD+0{^dDMGW(&x6zEwp^b+8$8JdtJMr|UV1Wt?MF +|z_DbLUf<_UAf}S`G&XAv29e$TlM)X#QZ2I(AjIgtSyJ~qo{_WrXEqlf`gXNB)3C(ZOA`Kkabh_7$gF +b~QrB!UnsLOKRvdh2~U_DEI=?*D0xsU)+Kq0ldv|d@xv+RKJ%$W%y0|EL=^yvAiUp&M3G +6xb1=MROgp{n;SR(DJR9=$@9f6z$w4I05Y+akROD)9SrOw-8wuN*}La+tvGDmGuwJe8gUEARg^G`=V6*w{hFHuUq?WW=m14(sso +FlNwbz5@RZtjC>Ph<%m4n+KPym^GcO%)q3qRs>g{o`ITMPAX#4;6J}QH^N;TNt->^u%?4pE+WdsMf%I%7LY_muCf6KF{aGay>iUoOo(IrHdMLhEn81x<|KDfN)RrnxI-i6n +N*!6nOq~s(^oY2mi*^dQv`1>x$F!!_^iKlNWX4}W3E`LJf_1_(S(&j>;d8gf{<1BdaSppUeZ*G{qf2P +9_bnq4Q@c2>w`5|KW54|jph4P19D8D~UGfnmkgd2tK@)e2HvQ6lnNIp-p6{+h>oNGOlf_;Z~o{6|A{@ +!>;1{p71m?(b*SS=XsmNom`NfxbidTqiFKkt6{`6#J3=?q`EA4hM1Ht_h_zXw;BXra;`phdw96tx0e$ +iAZIF^b%0L3bR4*aje7WfJLY8AA8S}338X1->KV}OI +q_fdSKt4qI{n~+g(5Dd3&7lnH4Y6_f(POyNi?O-PyEAo>MB~iY#ssMqE$yJzJkw&96h&5*k(%NCjT+O +5Fg_zbl2(Umc62QSrsRPR@?W_ueJfq*ic*QOH1;sa&YI_d`K|F{B1PrzBSr8f@$Y#V2DKZo~dE+cZXx +W)5BdK+hX%^X(K4A?LVfmD}5gNO3ve(^_k)&}U?~KZh$DomOo3X<_A&o~@{wsqa!$&+;9=GG&7F)Qyx +gj*U-*CgB5WwyzQ5$-X)x|M*?+}acGSW|Z{b|6;d4B9LX)Mv2vdXe!(SPE!)mKGJUj7ufWyUV!f8LaQ +BM9dMGInrsCEU+y`UKb?1LH7`a!)t!I-eVlF609}6-a_)Cy@l;zo84sKG39NY8E8PT`Y_GntlViNA!o +ly4&dMvY3);i4xP>~_J>1eio69!;k>3_{Xs4P)^GnOzlViih +isf*fwD4UmUCSOYhI^506#|7Dxl8dy)~%<{)98!oGB4Bt~N8N(V)r=xUV;!>9A?Q2;~*AWLp3V!%-Pt +&6U>vY$9N2v!!*!7DK<&0vA+-&(P?HpZvmsL6U-)HFF3^-h@cWfGwvl45vhn>@7%zy6gBK^Bu3$1z~f +`}gndbS-L?)dNxZ`kW>>^_=wm)c#ZB*F%fp@3IJS%R;po~N1${3(0UUX+n#L7d*00Hue@9*7?|P}GK^ +e+muum@vT7!T;RRVqnKdjaD>?Lf`OL#3E6zk`d@1JYpoo3URn+gfT@$PJB1RPABT?Be~U+&`7I3B>V%{j&Ml-RYwKdL=GVL%gs8(n*wdT!`ZS87uo%Oy2c=Wz6iLnU +HP;}&n-@3wzP`vjw)P2*iruR0qhg?hHWR4Sex7lLe-xmN^(Gg6kHgWAp4OqpTq~k2@FKAo;4{s`L?xU +JG-b_(Vbm#a3NqF`)76AsxQRQ&ZVmw4;^!oqB|^LF1v(_6*vk<&|~>tXR~kTyD*_cQarI>n?{E};kR& +(JEyO(D@9s^97HY(v2Gngr_tpoBgEbi57%rrs>5&91JTkE^VP*JBLj?v0OGws-fCIU&|%}*xpfQs5g& +J5u!n8|0znlU)8@9#@;zQCKf+oWpZB3r(UF@cB3{K(WZS_JIHw}&T2ryo!ReH +(Tp1ZT&BG-5@bBprTG3F09eL=jERYDc;ZWW+iH(g$Zx&Uvk*uRh#FRPW&BoOcLY_ +=$~F<9}ZBlye;5zVcRix8&0l7ZzEKxu#2S}hZXehd|>fs_)eAd<*Yyr`E;t=0h5{)pAAi8mLpe#ZMbd&7)wKuog-UVDIMC$Ihp(Qc* +-mLsD=Cerd9%t>amYj!tIxP7GqA>=AWvf>)x^qLLG?Fl6HG%2-!7<~qpGkDur8#|Sm|tgX_qk@t>s`w +fTmXT<9w?40Z%h|89Sqq)zp;S}rVW3>C`5c-14Y}kYwO{hhzMwLN>r>cID%BWM +05&0tWkva9MA41(P;LwODCV=!RDib>Q4Lg&g=`C{F=MZ3K0|BkxfLi_6=ge-dxF140hf>kSRWN=SxE+ +#TT}I|4!@_7YzZ4Anp$DW#~DRQA+23nxFk0@^(`?x#xxn;J3?j+i!^4t$}KJsW!He7S~n^O=AuCzmUK +e?jyyKJMQB)n9YbL%yt03dDwH%n$V!I}AT+Cx7dMnLaI@E!j?o~RlhWkobf3hoEU3iC%f^`5*$8vOAa +iF}!JkoDTVJ8A|ZDG&*-wkM>LdTO>qK6Mjm^dlBClVIe@C(8Uw2i3snQ%&dzWk=SfdV{J@Q{OgJ3 +q5}ZNHbMgaEwcwpG7XUR6IBvtN2y=77ln+>$a=kf0o&^sad7GUu+tXpmg`ttOdXCJ2wAsumlO~XP-jL +urJ~-Rf?oJ=${qF=n!3kg%F(Lr*mHAKZ*5k)(OkPxp2uhA4ux%T%5SVTPJS)-4y|5@}Fl;kuL!NiY%= +c|Uo(vHKKFW=B;W#`Z@O`Mw*f@|3362YKxf^JoBosk=zPCuCrg&-Q;6^cH^Y;@W5)j=#z+Y2Y*3agV&Lk;A&GV8`UPZ&F&T1B1E#z-uSxvKTSfmm5; +krGPX+5vZJmaTkcsx-dTL2g1QWgpQNCytSGT)p4VaCAj!WH-k9x-V-Z|go~g^cWK%dK28K0i> +|7eJHd!fBAS`zSAv-7+M1lC#7>+t?eE&!L2Hsr81gXnH}}LQB@i>D|*7p( +A2vCA+`L&lb`n;mL^zce~}{Nf}#gctPtA#5(QwVW)<3v-0IaD4(pfIJWRR;;$`a_NstLpxtA?GW&A!W +IC^j$P6yo-G|ZJd-V6lDz9QZ>zZuab>gK`b?$b4*9%r$J_?oR_ep^X^YXQQ(xPmUj-N1z&Vu +SByv88s8u75_S5+K-6UJ^m`Zn=VSyT$py7Mswbjks%E=^nxNM*#syk#d)IaX*&4^t{)^s%_5{EjgCH~ +cww-0wfWM30xVi=m&CDgq$$Fs?3~2~nk!s3ggjnTilaZV8H{rwyp#(LMqMaf866w4^^7+xB@?}5o@BP0!Bp9YehxGWG1m^~o+6Tu`Inv4M5z-D&Or +3jYdR4mmIf)hFGQrY(o6bP#aEYu5DYVx!;pFTuUn%Kjk4lfWQmnfr989(@NK*?!1Jm?YGj_DbIc=Tv8g0}nNl&G$_;zXKdzxQp$Y9 +Gw%1Ow97$0m$OUM=p+)6H-64gWk5%+uk7knIIUl{m@~K&n6t;(AyQAv)k5i(_Kc|x9u`MiD$|0dqXwv +hhQ$ffG1~2S@l@i@ZIF+q?k@7qM)x$_Ja6Ra|u~_CQVfO6zBMJl)Y|NEhqgr#H~5Z+9q2R9TY4~hM+E +Kkyq%9^<%ggxc%py5AM>*=Ru;F0Q@Kp7Gww+3;cn$lZe3}fl#%ZL>7h8M|_6adA_ +_j^W!iE*%_$IT#y{BNOKp&GIjKJ5pdkkxWDe^+HHthpOYaGCn>5PR$Qk*$W7RR!22wV6wcM%*tGka^x +m*8BJC)1Evf{flre8EO%29}_Qc6*xxEBB5mFNt()rZ{$j+F2!zaCRx{F{xi43pKG70jB41jpyj%j7;J +2T?;iw^|`d~#aUCr`SpfrBxYWLxN@5G6cFPm#bI+AaOht93UDeH5W0ati|V(`9whCOs$c2Q4XfIPl>( +9Cr*FUIOvm$!sFDz;J-UGZI$F4XP>T1D*IN)aBdtyq{`8#Bs5HdqIcN#&@~uf{caM=sIY#L+;hPAs$- +!Tc4tFp9iT}73mT74%mUyp%QYhgA$L;jCIEAgs1PC8CI$D2Z=&D*<;?7M$J$eL~hdH_@^Yt?Iy_gO#AONM*?b|+cN+YmVI!kVY1JTH(Q`5PqN`OShFb_7VsERc*t~wyJbyUQR}X5Beubz +o+qYi3QUqfuS+_>h^b>h;l{hWX@cdRQ^!}Gk*M8La(O2!xRK7$PmBldUHXwgtt@-Dt#wS9JIcWz8sgb +i^W}-hyd=|txPW`53)PFDp;HcNRAm6?za`}N2>?ii8mjJ;nTu6;2@eg`jiz-ZvIWixD!LHAGoAz=(W! +Fg8|PVFELT^>MY$mn8L+hvcHTkpfdsEbw+SG@Oor~OF|b+0<%h|;&A7PQe^H|lG3U6!ltve_r}qoVC +PvFN>B_F}8s>_l8Y{)D%5vTTP1(YLi*ikcdu=NaAvq_e`JQs`rhx;%T6+SN$Hi)J6wC7NpwzZy;_rhL +X5EauS(=d58+(vOkM@gR@^!{9Y_-!C@NK)oYaXr3cKT@icc_c7veI1}0MhpVP-s|#Q#YjWTlITN3`$f ++LVSX>x)8vhho-RimD6Q|E7EX$%1?sX){?Ej`s2_vxv6AC=r_Ya!{6t-&m>Q2DZo7w~Lj+K{*ukjuDK6$`hlu +8UUyo8(KD4^JI^&h}S$x1q1~lcETUC;u3WZ8y+0nltVW!J0SP;j +Y+4XVl6_uBHJ?eK{v&ssEjA7)L|flzp?k5d@pHYK;xR=*SP${=%oHAX1QF;JPdyxaBYYu{N*np14F*T +G*dluPDMW)jW9{K>5$Zf%9FpLauuT4)TB8leI>BML%yP_iYJ;TIK-~EI^aIPoOs+Gfu45apqw+w)C_v+W0SmRq+3LfEa5 +js-4;1A8O0O%{jwGvo^^pqjbrp635|OD1_~bxF{0vg!^$h@e~**64;--(lK_X_!w$fLLaKToK +-aykIUhTGoekEd3a4}G#{9N;|R-^JP?dPB;_}UWqz5%(hWY(|Jz_X9eEFhJ!1)LG2qYNnl1Uim?B{)q +MJ1z0(E(ae)BT;5r?I*M--BzU9)xIfXrNRI_OpQ0EqX4n32ar{C8a54V4^?Rya@rX&y+IHV_6OlXvql +XC%BuD7p(r(GAEp$rC&1!40^R6FHONOH}j>%^@&XFua+B4%MB&|GndZ?l +sV3%vg}@ngfqN+!!>(DLUvM4rGw6)Ru&?)n>gt()!40A`tck=Og~=F&;TlL|7XE}-ZFLG@%vyF2=SG? +pO}R$WB6`#SkAc6(qbK*#)qrghjl4$`&4xH~ux!$ae05MxObEmyUKm?VKzMNvHF>Wm{TUG-!ZaqQr80ygX +rq2RQ;C|(PQV+h;^?Ymw~91fu0Em|7&Mxt1D4Q?gb0q*zkr!_w3c#&YWU +uTS-5G&;Sz3^_S49Th9D)fuHxfOnC)Z$Q@EPltOk^573ac1GiKfUyr ++z4Xw3CpH;3NvgM`aNaKn?=VW6huutlNO$VHfrrR5brJj)0=vYLtXUXpTXo$pY +zhJnWzIGA0CJS%Yvd_^%Kk>)=fFoR^vHi)&1t@$P+RHz2s|4TOeG)DwNa#pZ`c@$t|Ew%Ts*S>8e4KA +$iZk=Jm;UWrtvi_Hx&Nl|bG=$hqB3_bq(V@}J#8iE#+o;O}vK}=Ag!i>leu>S-}G2T={zkvqt#YP7r+!~F@` +nSytyTV`a{`|wwMlf_Fpx`zI^Ia}iZRhZC#$?#aIznb{p1gYL%X{iD^3ACUfdWeGydvH)5m`1mdt06@90_IdF`zpS@u#T1*Eo|3 +kBdrwh`C{yknF9u~14zS-8B>ZXjVElS~8=W&&3!EmBKnmCfT0CiD|1}Pf7-S8MnjzRNhne-iss@}E0I +f97~jpXzUG+i!HrM#4&EXt`9L17@2nqd<7(jpwXIJ|!(+hYW@uZYednss$q)x~l`3lV@x_^wGDDtSM8 +NMt~V`RlR<1%ge6Qn&8>cWO|q$djrVikndtcjaj;9rKwp&5;lx4%TQ+$#AXzSddIq>UfC)fP0@b>q)> +u+$V=>l;V`&{xOk|Cdm1o?r@av$>7?Xh4oiYp(jUc?Jes*TkEf#P&C%)(ltXfO3dy=U0UN`J=eQ)9ee +po!Tj1er!z7qMe6%5fFw))?bF|%LHR#v4P^Acbp(eabPqUl@y`PB!8h+zC2ct6+d +FAg_m;5BUf}lgHpTKH8u4-tV`ZhPKC47rfWw&eK*XJdMl@0B};tw;10$hhn9OC6Ak0Nw#40(`ReTwfKd7R{_{v=ug6^t{uI#*_k +r((0P5_{1Ff3n~DI24BhmdR5eyl070C?*)x=qw1p5zrFkG>sJ%3N&M{Tv%kIwz*+A4eX*`IVF72~WB! +^4R#nYn-eS}wh7rlEWOD4?#TejH1IaeiS +NM)c|xlVoKag`;bb^UUqBb+rj5ZJoIVI;2i_VoomfyN9bg;id@(zS6aaGZKntT1Bzrne-DPc(U?t9Lg +=ppFA7dgQwg){J!clk&-bNX1z0_?Tdq$Mmvf)I=a72czR6#wlgyO`W8@~Nd)e3?B&N$4ldnx5z0P=m9 +1IWXS;z1?Hi7d_7R{RU1!wgsK4Ue=kG>8=z^2`pmHPH7%9?#|FptY>IZc|U}kn}}Sa4tI*hndR#;;Us +luUu=Fl>92hb9OpqMKA$hNEXGGU2HM`NF4x@&&QHf75}(q_V%)@(Hf#8LQ6 +u~H8rvM3c>ScG-;6Q<8CcBoL!v+oP36b0hCm+a97m0j1(tsl1`z#U(-x24G(P-aJ;|MM3#Rtlh)mm74 +#?DYr$?ACOrgL*UYwSy7mP3_BR=?2jLR>)1yxPQY_^5HxDOhbRshLnEyGJ)zY?cl^qAp`&j&@dfZr +6?4{a+Y^y2;;8UVi`j-Cr|W^YHOs-kgSubkkmT9FJ&QKB3%Dc4CyZ_90DA0xz~pTtiL2M0l7Tc0rNfR +N}c$QHjdE1Jb|TS3Mp?GC&GDBZEbth8 +H`d?tVgh@c~h5 +P#sx0%>A;^4PPJL@HdoHiv{>>zD}d%r;H=%b+NIfy{Zu@A@cPx)f0F{Y5}1YYlP0U4)x4tScde4+ +MBqJcss&Yyi+B?K@L(Hp?db9yhdx(0n%Lzyh)g4=z62XMMF)uC_b3Zke8D-obcfSvOunYmBmo;UZNxv +Dt;svrp(PrWif)B?p|f3q=Z=nJ&1~x`#kOw1V$#|OEmGwobS+d2RF*v +o>!(j@XX`MV;JoVou_6s57ZRO9so>wmqjxj$Zdx{_q5d9zwm`;V`cehnbeq)C9nwQH`iU5YJSIhpxNK +%r7hi)QjE#%bu8{M +fU)?$+=NDw*l;yYfH|oqejmRd#asyA3HAsq^zjl;c;R;NcWm&^_fgPn)X=s$qV!{kC0u6MUt+q$qO9h +^4^&v(=S-$bh2>w`*X&naAzG+mcf!YoI5=lzr>f~(mKwVizxVN=R{*lQKJcPFb#^ibp_4lQU1`yw&n# +4wQZC!8xVvp#TjP*2K1YWfYbQgvJRMM$0KdPt@>*v#H+#|UVr}FtUyj(ZZYvNo%alRqGhT1pSoTs)^j +>cOT#1iGNJ|5#s-9t!Blc+agCP3=9noqm~$NtuUjt;3UR?8Qa();3gk1fZ*s&tyVx;Fl$k^#vXI*n+2 +QpPMh2QrS1>y5ba&%-tNaTKM?IE4$l7f)8l_Hj(>V|{NMBQPX}ZCAgpvv^HaBE`8UF +c`%hK7B+xeu3~_|@!RRUMCASUQ-j%lb8_BSEA0#G3o!%w)g{Vl7rCPO#)XO#XDvqkn#H+0*2T`yCju +Hvr|5F-ho_wxHv`nvh?!KwiV}{!D@$zHK6|i%B|bwzD<%IP7I-v`1kyqc-zd<#^K~WG*3YZ&HF~8-h; +hf#}glxJ|6rPaCs^=xgC1PuGVh;hTlgL;;O9E#qJ0i?&If=KBE+DFeaygC@(K3F{a@&$>HUm@pt>3w# +KsHvGbPu7Wf17xEpdaJkJw;H$h4jdLq)7+%Pt?0IxulD*+A<4gnhsMx)Tk+2?w6X94ga=xHJKUd+hiF +MGNT9DeTGY1QO^+HK1AeRfu{ +-!W!(778>CPa-`6FiEfUpoK}@XAF{wIfOZPJ1Z51b=&WM<8WdGFf?1D`k?xdpZ@K$WViI +WR|>@@Qrjw@m$POLY{GW4IR3++V;TLnuJHYHYUS_T53^X&`jRt1aUd7Tv?A&Tu1csOLjqhacG35nb+Z +Kl3`FS$??6^BYei_%aky|M=a{?Mt;*2i1n+?JDOz~>=}9)gLHzuSs0rBc_5>ab)Sra4wBg#)3Q;ss5+ +f$aNVI#81;rYec6oqN@tI4yu-@yG`wu?$oV&@`KKFFxE;hFO_H`anfV;ig0EBCGOXx`>Z=tNJ~O-kH2`uj;NRMZgX~lLS&}e?RF@h@MrCH9qI8i7J>y&M|7QmByY(;B +iOXH<7^ec;*yVtxUF&4Rmn+PSGm0iYAvxqE>mDVUm6vsXSpQHX4+H=0h2sCR-}QZE1d6^bmr=Mc-4>p +CzUtiftPt&{DTAh-_+iU9PKZ^eC*(}gX^Z4<9@Sx;v26>@isTGQ0LJlv#we$kv%x5$sO4;k01R$gH1! +uoClH8YL68he4Na=eBz~R2@bJl5G@A3IDSzo_OajI@do&KVw1vB6Go-ETOt1&b%x=dEFm<6smSz{N@habYZaYzyHj!VlRu2>qB&X`loojMStAcWeuof1?|D +w9Q+8l4uZ?2`_Zfio+VXOx~{E%L>cWa>il#+CK(@@O%4AoF%fm;?qdY3%U?b#9=@Dr+q)hysO8L8BRT +;;7IJbKv=2bE@ik-;WL`|Qd8AIAHqWl>+V$SNVH+@w3B!LQi&S518^mJ8Dbj3lvQp|wK$a$(I-zR{<~a_Y*hsO@oxc%FGTwhH>x*r3v&&+!7U_R4~;RI=GQ%A-^|0 +0!-ohPf_j!uFE7zWj%x9`^XLw60J;rE+?kp8%T2A!9bOqQub}QEWgfPH+hZbIUsArV?Z&!EAN4@f_o4 +4)FbrsShQ+c#3_KJ?3FhhMAQe@Qa77B~HA6Et-23@qC~Q41SAep_28mN=l#3W0VV5PW^2zVV1_wN|pt +{WtYgUowj}*;Dn+<$3S?)o88^nui1Z{4dYtsk^|6yF8X!V_<$&GC|8U&o*fpUkcct_rF$nm1%fC(^JX +)iDJ;V@|7OcMIUd%zXh`)a+}7E9x+nNCXEV>k%;k!0hDJtf9#0%!od(a`Q}@FEIEJi>%yl$EW_$o-2; +w`|v59e}=B7nn$?<(%*6{tWXwgt=aq8|%~o6yXMgm9T;r$kpwa1Z{v`W|%{slDS!nhGbtMN+NM04w}` +ons40uW;u_IfE+nUAO4O)zdDIUKq{J`z@K7+gT*vfAtlkcwPZEvsu_dN#BdaF_N?6+y!gvsj$gj|^Xt +K$&(}?}QFpDl5f^W;Pk0qNjk!N^IrSrvONEu>g4)m7@y4OILG=!Hwc*-Vtc=M9123BIf ++#Hd!^YB0Jn_4-!FSQ2-+-RN%(DMELQQ{SMdp`vc4GHi#U@50YMiW!w*rl&%;a;W_qOxCKezG9b)-WY +2|RXw52(OaRtd69X1cw+hB{rDm%Fc^H~;jo(TzCcO(MO`g$5mF@qeyUb@z^F +lXv8|R`iOa265^bsFkoI+trsGf8Dy)sxRyWnMSgU#ix))Wab8&QEld2Qz+pu-bTx3*l4x_9#=!y?he2 +Mn~GZ@zSnW`bD0%ih{HKQ;F3h2_Hw7D +5mvIs&v!ki9;Wzhd>%+Lg@;{)FX0>l+A#NVW(mD_O#@LLEv9h%xGU>PnXJXwxNu>T2m8A0~WhL6mi)4 +O?lH`WMY7|_K&!rg|ye@b*S8i{y6#=V^g9c^W=+42sIqoW=LS&!MMSUQ1-IG(f5XpttE5&`70NGCeeCoSdq<37g0_FKJ@-)c(7AbU&=`*%6oIoVK3%!01_1%*P>8w5&GB)I{ +!YRm1sIbO7(FyuBXK-Ev(VD7QpPAF4UzTd*@XIL)h@so3rzG5u-$L@veGv17U0d8ysUF_V}$RX@0h{c +jhKv{Bktwf0YkMc5%ov{)&v-@d_Xw|yI7;zMjtLQ`L9DCy8CWstyOqEA3Q+sjQ%&wy-mofUX1N{~i2Z +iL5IO8BFzB%^;H@;1S>)dBVboAc)o6#d1oMu-LI4ssUaC<&~?&Kkv6p-Caqsl*}-s2BL)I1o@o6+s7y +rI6N#1?x^W~~h-e>O;}CAM- +C!mQ3g<^X%FQ)uC|8MlBmXBso5QZ$3CM90BZ}*=*ZGb5Z*$6HG30?HEhC;v$Dd+CE&eoowIzzdvl?eZ +gQV`)2$=4p&GMn&`#~0-cDVyfW;9I< +s`dL@y>>6tbT{Q2@w6=nwVel|5rWJ_03l`yL8kS29G%uH=+;@@D0ARgKenol3qZ~#3vuDy_mU+*R`}X +)(Pty2f)5!Os2hwtq&kBmzJzlJf{cp>b~+86SK|EY!VeNrY5G3MeLR<69|WL5`GuO<-`npB!W37c4qyPCCHpuaCROJ*YIk? +K}|yQWLaIbCjurZFUTu%Xo(4p)~+u^hK~{ +4+4NORe +3M(5QQAew>5Fss8w#sNx$g~|Xhr)*$!1{v^h$qypIyPFj``CTd~MeAVu@9XPXCpCMcAW)m*iWFy?bKh +H0Psp683rc5a;%A(>zo#ha(d@?rgK`lFX81j^@xG8$hiFYNeAnLWRc+F=qqD>{XJEm|_aK(!$s~v`L! +aIB&az^ARMe8%GI$O^RMwtX}IygzmJva=IfX?^i^`h7j(Kel=+uh!5Ab;*6mYFXnpq=!n&VIVul6r9S +xAawk=LUNwG4Wg{JKRi+mCp<$MZN2;3KyRGn9DeGB-5dbF=W;$kOygfM-6YpV)i85H);h*?mQnFj%+6 +4-#c8B^^H~E0PFq@nDUX)-8#abOC=lf^*Ka1fUQTs_|zMf#}4)ksLfB&EVdte68X>c+4;X}Fj;ll;~e +?I69!=-4D=xY;m7cQ8j-9P-A3_Z_JL~o&UJqJ!@`LtZ9RlZHX!Ble)A8Zckiq{-~VzlV?`(+ZuiT%6Yu((P| +3uO|Itgdl2JSJN$3CnNjlhJ6B3!MrvXA*!WbA_Dw&>AVzNt@?aCQ7OdNQ>6o31uAk70E0FbLA5otG!F +w9JnOn}{j+1~enNQd^Y-L(PRmL;AxzQ7(3mW4-i_GvlLEhHL`mb%ervKmrmkUMPTN3GDu(NU$FWX(+0 +4L%BjAL;7Vq6ozV|dY>6}wv>On?|KL8KuQ5nKW2Rs=U>P}zHe6;wfxJ^A?;P2}XbO@8I3L2TzZOMGoT +Mnfkxn!r)FeZ^|vP4w7-YqMYH5nnEpDjCJZjOm(1c)yR)_qJR3%_-ydl&_ +Y531A4H+R>^4^f_fz_y{|o +uxN&#PhPAv+Ktozr9)x036|rRDm94mKal$s(_*NG8$`tAv9a2l^}O@V>@@W%|(T(SRS3GFtkXDjfp{xwYa +}>&hQYIK0>bj6HY>~Y)!CFhe0d$B0)KtZ`9Le8!?_@E=Ju3 +zBgD_z~_|^zbu!=Ai7I3$;4CCrCd89ME}poNrwkf#b*U&F2@7^}G1Z#}6?HApu$X{B5H{Tl?dGz!*K8 +yGE+$6k%U%z_FIc(_)Pwrv(;FZ{Rr8RCU>_=>or*px82rj+~OGBdvxmJ8BETdgGiQVs?df?roZjV@&s +Q2H&1{)IMk3T)LR&vLq|TNNh6e4aZPJPZF@A3O%~2hjN;(%iW1t89ZM2Yk7i(+<-=Cd53#*CwK5?6dL +N7zpaSoNa#$PkGS9i(ww^O1DU*YaoHv5xo!GlA5-z@Hs&1gkP0xIZ~ +|i+pl4Tt1GXhVn56IildLXxN^biF~)k+*JX|HMZgD}0b2 +GnU}~7y{Nt9j~t}aR55>HQZdK +q+r*)`>k?qx%A;@tv5MhNrH!9oeBUyYc4fb0tjlEDjwtpTB;a$_sv!y}YcOHCq!+o!*77^g-6gv4l&Q +Vyads_ht8B`Rl6m4h0p0CtXw=;aH-JT20h-NWbMTUcG+z{N)=mf#IJ|pFMl=*8TPB^@~^UV&`PFJDIR +d3M-(H`ioLjW^>jh+!nj+Nt7*S?V_OJf;+s$;AdE+LrEQtM#s9=c)?PI4 +B+_7IO0ftzQ9t@0iNXJUk+89j>K0x7=O>p`IPmsxvVt-?7)B@27Z3+#Vjus2W)_nFsCd%7O?CW*LH() +GuR1|t`eR}f)h7p%KID^H%k`0mBmuTLk>U%q`eb`%kJsz#qj3cO~^TY?-gXNpxCcm=5;EBS3=-Qb%ry ++CZ-rOYc>cnt63D0CkmpU^*fTpwC@yo%l0{Bq$trymdRl+@Hza3(H<LGFAu)<_!s-_(pNUyG4n$ +fvEf_>}Jr1e@XWra#6`em&VkkZyJ<~@hnpE$l!<Qf83gyWD@(>9NoF;&OFP#2&$>m%E +!whLfbFrUNuK+H@MEOg5cHWU!Hec@Uaw<^PPCCNZecNVBY{5M$L^BRf%`-bE3aSqU2%*V|MxUb*GceI`XcF`QDhOZ>B)DTI}Fh^QK(MUaZiHAVWN{8wQHxLQC8iI6H%Z +WYIBn%ddg;r3+txJ?-XPaF6?n%~58FB&SQMgXbTRsOiG-WN*>QD8_pFtve6%HWGE0EU_Ht=_e5Ez1eq +=eonwkkBR0OxL8}P6z6j*)fK8k4J0@^~RSTQpj{8I3PB+0^59;VlZI{w?KeL>leIM7 +w(QNN&+PCpCnGX^a(_oUK_?l2*Kb->k2THMu7s*rP8 +#dqnri(HD6(JE0JPW)2UWeW31u*!CRzTg+D&a=5@}PgkrGB1OEo3Xvbr +3JSVc`?+vQ9GrS-f=IEC}!(Uu;^@)@i%OfMf$QU(LsL!D?qg@t2sXUJM7cDaixoj48WQeT(1E(n1Q6X +sZ;aU!+kqxjQ1uv1%}yL+N))g@*a9jGyBh(nhuyB?Xbs=5x}cIFJ{0pL2sC>K_t)M+)!AIgNdt^VEt1^q+6>fMq0kJK$d|2c?2YH(lufM?JFT+ +l;j9M3%g9M8Mf+((h}k$Ig;+23N4ecNRvqtXfo>8Oxa)j95K|nga}3Mj<2GXy~pLuBQ#1pOxS##-5N9 +z*BqUDOI3ZTR4<^S=hr3e^c=Xyv4KYnJTm(iWwu>mw53-ICKeP<_C~7K%KD-7h1c{LxR{ZTph{h>cY! +lE?3v9SpmAptb(6tAV&O^HYAz06%F+$mcmdYs0`rWq?>I$gpj0)EfU&@`!|J%pF#7mzMxV#MK>BYzgX +nxp7Gpi1YH`eJ`LwYTQb!uej@$9wUQL$V +icbMhS|7vcZp?Yo!XB{8I5g*w7T#~63t9&ZZ5}GGeRtuW`LN0G8a>Kh*Hj=q;_ywXU9BFovbx~aG-Zk|0w(ufDRA(9L|3O&CiRo!acTomXod{J%)B`O^tdgJ1;Cl?Y; +^vX8@rzL=n+7fS5w%uJ|FjiY#)>;ChXLoeqZY_zfBNHh}c_?&{mwiCg!8>5do^;5KuVuwgP-p$5duz! +^xXqa>(8XkkSv3tCG&e)k8px*9GCt`=>9|M!K!@LxgI(9_dAULRY)uI@F3GS%G!QweVy(-~nE{h4P0O +6{l|=`+kr_nCZR*z!WNSjBk|XlQpYG&Q+IO#`7}32s)apI=i4kIP~p98E_l4L$csXnzS}8<=`llvx5z%ZGx$w +F}p!W2~KoA!4kK7;2#`(^ZNO>U%wzikZXy(_2Cb;lHB?|8zLYIaLc_>*UqbZ=%M0HgpGue?0v +khz4Js{qN)RPelouLceLw(yRp#R3<=4&=EtxGX8BL)JwDCU^*v_d5qvm#_yWA0&J{GL^lip~_zRe +LfVNhy2&6>YdyKoVp^G~%5b8W?xg#W|GP?W*?2Zw`Y|M6ujLHv)%Y8(b&v&0k?Nni852DD5@<74^VVb +xrussEtH`vj3l7Pr(1K4;O;MEUPD)Q`OC5+!=Y8{K$E +;lxu`=HE^gv98x&?a*VZI8lGH9^u?uDe{v}CyogrKrALN>2da;SYHCMeDL7<7Juti2GciQ@^-1P{20b +4%+$_LquTTo(PAW)QBdV6=okOx5riwar|c2|J}uU;p_`I#a!UD*dXc#lQYz;;u(7B`$#qGh>1`fl&4)i-Bms^ms3Q*^XXjXYMjQ6R7Hr$xzXmiWxqX>n<&E=J$bem+RU* +UeTQxU57g=*l+5%Q-u)|nKIQZhbyV*-j=>JzNTi;u7#?>OTndK9Iyw5y@Ujcq;Cx|H)RT=wEiH#P^ko +8vsG!%Wsrm%N=c0VbY!nxI)&K$|y(4^&ydKVh9AaUe?&7Za4*Qa#5ID3wc%;oJJUZf@%r_{mU;XKBYH +S0k$k9HI_+83G;aU&@U*J +*x%#H=_8uG0zmRx`x`9Kt%c|FXz{L$sJ!%^u;Zqw9XOLE9)k@6umo1wB=Ly)!7fXIk0tcgD3C+Tj7z_Hlsf#!0_b0`r#~p@ +WVN^_@{wNO88H*ehgoTR6nL&&(i!97Wtu&sREORUM>^lPehI>z?k|&^};l3clDh57~_i6#!47 +M7+W=p?kIv#3%GS&YohW*2QDl)6dTRr|%q1CIFP#$@6ex10cMbvm-e6Kb<}yIyjvM$9FpAe%f<*!NMc +i*#(=^L>-HnEJ=bzOks9;2&>U?OOC2kNr_3%9%MJ$meSsUm@=TOC9(|6E9%e&87H|pOi;wIHY07Uy$8 +uhI9oKTy8pJ3gguAE?ACa=<9z(2xd-+1yT4CUYh^1rs1h-=C5VQgcKH!Gn^`cX*MT_>2`S +b4Ja>zJkOyAE_69A)}4!Gww=MX&EILs4rLq4-nJwcwQ+WSX?z)mA#E|3-b5D|gy(@v(_wg>43dFIOz0 +Rh$dF&l+oo{~YA33Rz;iGKX$e1!81B2H0ov26cue4U98xRCn(oUPQEm>z*Z=)T1t)Ua3ew!F +t~n;WWiloz=IHWkZ)hP%ziKi6>7xwgD|1zP>G&ZwjLKo +T5GmITVi74xW#`(`6-5fm%K*)r(u?tH+IsMz@o2UQt^_#IPSCRPI#73d28RMcl=|D~Y8b;2sHueQ9)< +DGOFl(b`)JQtwx=wV|+JW0f{x{N2`dOld#r+XAa`r&C0AT}NcEl__($UOyaS(?4BWz>~b-H*r4EzqNc +<#BV!(cYLto1K0K^$cl<9W?j$ +B&UYEP@X_6fY&i^RYho>+|*#@a5iZ@Y%pj0HzzSoL?FNazu02e9vbm=WubeH!eS(Z<;|G};F?*LNyag +a{>L0x{_puXAz>Ej0V)t*6>KlXysz-=$EPzx=sG$DdKnRFuPUOI2FfK?!uSa#@?EOsEb8~u$LeOQtsH +Kmh1Q>yP=9aUmGFdA|7?g}_T$#A^Ehz`{eqZm^BwBspYa+cC&)^j$TdMAL~ZMFp#X!&qkV>NR2qhk(f +xsxceJj;evUgl%YfzXW;24KaGhKwA7gperTpa)I$>NpJ4{3#dJTZ0kK`o|TpfDepf>Q3Kk_YqtT{ND~ +k6r?7J`o!LPMjq0*LM}n~g!g-ydgilzo52MW7_}f#FCu++bPN)zWNQ +Ccfe>A0f5(QL?l8{1YcdY?+dW^WsBez`3N%Vl4@FO-fpM_P1tB^o() +?H}g3F1`=9PJn@_Yk~k_ZtY-F-^Qu*|?Gkg>Z(L~yj$pz85rKu3ud_$_qZ}@wkjrghVc6Aa&ZSgus>? +NPPUG-V3)wHr)Y#i_NU(q-m63gs`5$WJXfqpM6Z!Gv^ne5ZPr?5d>rWWcV6f +Mh@a6670s0uQ=g6(ilCU??_KOR&&sBTs10Haikr4&D8o%*z$2p7*#uJayV;vhe~6qv=~ScMduA&?vAA +yKkKdeID>;o~R)~LN{^-{*iH@%o)lQKAvCDFCD6|LQIWE{EUNob(#8V{JKH#I;RWyhT!KnJ?pJ0UI5& +RTsaqNo1>%|7;Ob2RYhT6ND;95uAhAUzFIdmd4=8->uX96QO`x!mytI_y$is&Z^=T5g0*gp07&nOD-4 +ad64}y4pU7$tm|n#9V3;I-aKax(drGbV^BZ!(rT3%s=cH-mp(&)4uF;LNsFv--wU=LTO}fXrV)K=>9` +ZlkL&(=;R-)<>ixuu^-XUIgI0@4LuR>Jp&aNCO-RO^@du+6(_A^*Z6KrSJ55xAPf*p3)!Rh&pVJ5=^5 +YdVGP1nw&Mz?`Fb7)CEMmqkp>zgZMqZL30-q66*rR7p!rMrgVw7XMgM%$7rUWL8O5ICk7C)Dr^e=S7u +jrEaX$txm-4dQ}#16or(^|?J?w6r|!n8Lx|5tiT+ogd5}L-P0-4o7BQvdom6GvSGujD!s#pBeOn|Bj- +1dA+d}Ze_b(Tj{&?la|ue)J@iIXIDaK7G*&xN`kp1SA#c7zUNb;+zFr_@cA^%`YOZOe&iqMryBU(gt9SD^NR+1Aa~y4hYzGJn#ofKY_G9&!|%Ou +DZ8R53U?3KWBoo?(zt^&SXf$h!vIm<~0;mq`+3BeVRKvl01Bjaivr=7_!+^(DCxJzoJc=;Q)D@{5DHh +fs+ks-O1OB(-i6o%&O@5@}zE1LvL#M%Kgd +tI04yhI=?@&(ZgqT{|n)(PUtWV?-!Zj!3L3A_E0Esqx3hNL$Q66txiuHCGOq0{6<-#EDuBN09@Crl#o +%8hu$2Xg#XB1wMPyXfTrwSN!J;#L(R1!*K=R}iC7HDL3U9FT&cdLNQYzi-)bkp4&hzb_?+M!T_K3ao%gDXyVC@r)? +C*v%zhDAB;u`>v135QF*=n6jpNhegC%v1`(h!q+pZUf0f$%a@RN3AuGStD>pBIgEYyvu=!rz>TzQ^cX +x>*Ig8DEFB=c)bpZn7Mcz7-+SoqlN*x}ih84`VXei*McE{=_vNgDe`q18lhQl1F@5u*L`5|vsTPGGUE +QDbyjQ@s9ad$Fu$^a)9@B>Cl?vSkse!sdbd$0R<|%zcG|F$ErV*d@CO{?e9N*l7ZD(Q7p$p)fiwn;~4 +kAS*?-8vH(2Xi=S&|Dex0M2DP$DW?Md;z*rmFceyfs*!>?v0gp0n@>Pz)%_X7h0^%Ro+^WtN#`#vgy=_Ptz$YxJfU82O ++*6FfAlK$Wr3L!2P~+Y0`XjRovRioa3Lsyo3As87JrY;Ju +8?D78_JP74ZKW2xSi6cQ>2`oKp?vdrBkdS`@ti?_>-aS+U{A|)&>d24RYbF7pS56cJNwe(G#T2h-5J$K +~#>*Z;X+3z;PGoKma15lVkln)U!^uXeT_QZXKO&n53(19RcIs0`bK0=!6h}Or+HJCm-VjgNKbIz9WLI ++Bbo{@UT*zDO-r`H>_y)__SVE*fF-WkTkDOrD-1O-7Tir8H0$NNlmXj0`a0l!~`%~Qz +=IUn@2I#Aty>Obqn0^yV0M#RN3Fr|GGf?iBF-3Q1VWvG!#s0rfQe6o@>_JJheI)#Cy*rX`&^`hNS4dw +85nO1ITh!U7|i^wXT|Vwb`*^#ms-0`tHBr5_dl!Pb?1N-*E+#V>e4lKe}&Us*P?9@Ev?$y}c>X3OuZ +%l%g_4u7-6&vq;L~g3xIJ+$Y+yKV9ZSf3$8TNcGiX$7nyKR6uU`=NgvKVl-C|6s|a{(Yi9kWZS4x1rN +{6oA!ka^RZ7a`<0^4b9XLBE@zn3LKu@C7Lm|^px{$HIAO)85YV@;zJBrctvZM>MYzDqS(HN&aoRbT<1 +hp2o7%6TS&6{`5z3=^~97uIQHPwyC2=b ++T26gI(Oa*97iA_E7xx3$49xbMG|BYoN${sjIns-R0xKhKy*g)}27gN&q^sh0-KC`w$MTD3nR<4 +-N0miheka+$yH!Od#Uri(#8!f;F5g$I`!#-82UYA#|8xlAeUE658m5?l>8U$JzE3&~OlxYd{;Z*-!inu7 +;FeIthCbXb(-EE$Q)`G&PhuaneyI%HS3?dj`b$-s&K*3Mqpvv=#jlMnbeK+8AaND}v)3E$#@T!Ro#qV^*mii@1HnDqNJqZ)@~T +AoiS&$stfbRDg?*TT1Lq`g$YHHFRhRh#_KIq)?+2ud7|kqp96qw3}+PC9h7ZXR-r|R@9fU89*s+oAsP +>_{0@usm5*)pQVavV^weg3{GV6oXsGh6sij)&=QOvq1^SYb&ue*Frm(!pV9g7ix_@3Q0g-nM|#&j2Py +I2AJUTcxuY4+tF9jNY+ka41^;!VP<^cK9nGUphXQ#wq5i+ +N^SV4%@J4UGP3N7Br!TJ6kvfjfS7g`OV7tTvcs&cx7-#Vgex8uGpmD_ysgx*IkuyD2ao$DFdqxKDtXy +l0jJ4z#PP&EpzpkMqZm^GEr-eE;av&p!X`zn4X6eV@(iiM$@=5~dK=`6Z87yiP9sX%cr`-c*xAd*0l_ +VgZ4=!L_n`!1E1Oz|Ow7W?yjf{b)BO3u00t=~6QGgsVe@&#qtSje!yXMq;QBcU1SeCufuO(%{%maKqX=QI}#*rvbHa;h+s7gsd=zBTM|)B8W>K|A9N=o9N-nvS_i`OR`3<`jsOxkwr&T?XvOd5>3}8 +T`+rr_RpKf3fmO?237my>x!dbiZS%9kD@CVcE)-6y{=vKN`zqh~I=qaD@y9V!~;U@njE3t8{iA@7Is* +e*eXhF%5~sVoOeK&RK6=B>abDgxET%a*{NJxwy^p7xGuG4zR^6y@FfuMTgmDv>%j +NFBd`hZoD>-Ib63x_3q_lQX7!>PR@Fv77oH`rQu +t)h~BBRBQFGCdInSH8L+asm8>ds*tj>&K-u(HQNT2Wu_+t_pIieQ7M@5}P7Y2O<4P0WIXtdtLvH!?v$ +QmLk6J3L#?IOksp_b-{Tt3{<&lscOt7)b%gzq_G+#C$s=pKOJyJv57u|2WE +Kz(8&oPPtl9OZsGk6}PecO=$~Q{%|Z(b>Tx>)rXPtm~`@NYY`XYQyFC$I?A5IeVb_t>+JX#MuQQ-CeI +|-UcrzvPU2Q%-@f@eh^HH5M*{^OVVN%^eD;JgsNfM9;s>MP5?b&Yad{~E%1(Bi&2gC3hQ$e1W^$Yj`h +F8&J0N=ClgIz?L#%KK#&!JJc{1x!QcFo+ek$o>Oja5Fk%RPh)2v?7UUv9qkI(KgUm^xIIV(=;01dsDh +sE~XGzpGVkc8TNF=5<|+_zq5uU@~)o<05g>+IcMU%t)0ef9kHvv0q7@#@`+=NT}`e|`P@OQJ?y7md;H +_Oh((B4s}F9#S&I#NcA?t!M6%q0In~O3%}hlgCAx6j7>IbLSCx+14)GjPh4O!t37DG_Gl!IHv0f!-3u +5i@g!v^cCgaLq0B;AUVn8$UO@I!9UfLg~u&c?dj8&`q4TV-m);O}t=8H=bc?fmC9RPHG +HZ&XIkX`R|J{khfj&|wTFejx*-#lw;6{%>N7++Myoy>ws +eFYhwYXOxu5^l%YUp4;OfTI}t +Vm8}KO7Wxy(cyWni!bYHCPkhe_s{BLQ274&Vk$R`f6LGCwst@8*94s*#VESJ +?>*gEp;7>Z_iYL_hv_IV*EuI6IO=8ma;?!33CqzU?igsTO(1IV;NF%VWklcU3E$v`BE>cN;kho>VAp( +Ck+)(_zZr+vdhH20rWwdl*U&AH5-D*Kib=a3Lp=CP&zyswV&_(4}pj$$c40BC1g5Pz10hl>v>U+q4B% +n1m9*k6~>pdCu9F@u{l*Ls|Ir!ICV+)VBm^;FYPf +)k7RWUo!(TID~oKTmzKD(6gGu;eh_Ay+kYgxS5&g5Vno@6+!!fES$tkyKEei!vtRI8kzIkyDr+apUtB +=_+@|8{PP!Ibl5m7`}TtNH=%_iag+Baj+ZrCf^UM#K(VX^$P46uC?AhWoS>U_RRCfzJ$r!?-*hT%KpZ +6LgG7N9EWO!f@`vDNnh#-kcqUKIC7&uTYsny`HwCGQ1srIW+h93F^=9e`IaWY~vf~D83eu}Q^MVqUL9 +KTjO3EKzlnZqZ5d8y>kD&3WDKq|VK-t6b2y<50LfYG_GBqao4MWiU}FGFz`%>`Q*!hWrGHX~wL4c +oyds>d113=W!Ehro*CQdo-MV`nnh`I!*m7Nk)A9gwwiqg~a6i9lj@hPWn?!TNDGdIOM#g``qrOYvW0$uK6%Q +Z)1Jl8-hG?_9!k%`}A3$5f5Skm9`rlbgG%L0o*1IFQIZ*LY5e+PHK{3%@sj=QJO8})GOC1cLE$byPi) +?Fc7Lxx$wQ}U1isr@GLy%H+W3r?&KX59%@Y~@bI~D=Lp##??(E5{LDaJB9cYPi)fAaTYUCf%?6=%sF= +buaIN!Xf6(N^T&Obh;e!%yVkU!Dyn(q?c@$v5bCewTCcX)pQ>`5sh$Od5-8f9MgV9z=M +7O1nv8D@uT-Tjqx +=8*x|-dDVHo@>NIlR=JOR=U<0W<^bmb7Ot)>;IczbMrcH#u+jkY9l{%ptbXA{#k*Av>javpXWrsvId% +32tAzBh3Pzz&o)mRg%cuLT%-xb!)p=v&Ep$H# +%j1wP)qkJ9qia2#TmVpy5)qq7on$lkvg{c2L+5_9^naa>{P=gN$w?nnATc*y81!s$!XjyL_f*M9Ct$v +IuZw*tVqQR{rO$@LI3!;H$!1idNKB<_R9y!ve^H(JMA!L)qBjU=Rq%`HIPd&0NU|8eDL&v&!s5XY{}N +?wIS*>`YCvg?xM)4ZLxVTK6qlHRq!mhW1WMdZ!BQlV9?|Y*MY+YwWaoB<)7bS$G_`-zs1TWLX>!b>mO +#wTHRczF!Y#7C)To_C%r^4oT_Pha*_cGk|iEEBnQg#aH_c6oI1W4> +2ob&fe4}CSRptjh&mKNMtzJob7&0VnVJyvo@0i3AF(-ak*}A|PA$od=K)Yl0|XQR000O8MnywZVI%|A +O921?G6DbqCjbBdaA|NaUv_0~WN&gWaBF8@a%FRGb#h~6b1!gtGcjXtZE#_9E^v8OQB7~cFbuutS9sz +=CDyL%h7f`ylXlu9cGyl;AO$7{<6#1LCXS^$E+{?g6A#z2w&?}2qLAqd%2Nl2i +C>wbdVOo(|&1qS`OQ%tJUx4`sc>#B4}cieMb|H;LlwmqHh9n{l6j4dR6*?wN{3}K7^F)wp +@Oz%5a&+)5eFR*jHuYC?Y=^j3S*53hZsH2vuscC&}>rC&3x;1#uytPovS$WO;u(2%d8j?bA!@S%b4dP +f6u40>9kN5(eU-ou!M2{JMkd>{(F@>^yRpiz*_=~W#?Ra!oadvNp|O8F@O`u6P2jDLHFkM_kC1CvG3k +1^$$=>0|XQR000O8MnywZ^|4PG-UI*ugfRdBBme*aaA|NaUv_0~WN&gWaBN|8W^ZzBWNC79FJE72ZfS +I1UoLQY?OIW9+cpq>*RLSd7aMRDV0$y_0B+K5#kQnqQw&28u#808#3WH5siX$_<9ifInX+uRb>m6}2!#0h!jQ2Vxkz&pUZ;AY{6obFd-xKo>KH;rBorOXJ<>MR +^@#Z^X#lhi2|5RYc)FO4xO-6B9bRTDan#XK?p7^1kVu0i&B+>VvJZ;aG^je=c+Og5q_X~!bM~-F#V)xF12e8?r#Q +>BPl}9P$9@NBU6-f6!Qlv0%JZR1*@I1vAKlU%wJwu1<=))P6=Zxz>`aJ)Hq +Iwl%p|vey%4>Z?{a{nTf%4xr~;u-1);OoL^nOyMA+tFXuP&aExX%6rLqSkx(zyF2#4(*EdcP0q_X$JG6um}x6J?JHg|9>PRk+3l`*r)7XC!aNXgcPFljh?$Db}6aAnuFT%sPY# +SwDVIWl|Y}-70-1Lbu)4INvT#`G&DZDt$F*Jz+&7rhS)u|7gBHn*>E{U_nfD2r-GOS)$W2JW@U8_)9t +h%f@B*vb(Z{Sd+0@z`2~x%7BRA#=O3djG&d=SXZqiUXmqzQ>seQbF6(?9&uVU=)iJ8jZ0`s(Lq|D9de +!woLu19o8o}X|AjOed(TWv~m|G6}*drUrnQbSV7|!aei3`Hawi7pxnQg~WgMyZp61dboEi>4#OrLWDF +%J;ai_&*evmW_Xa>^AEK+pSiMNN4sZq^RX>Z@_o;G&;4W1cVAa!8y#=jW3rPP6X4Nu3)S`pL5gaawu(XL*hv+*wYRBzhs9yCBa;SA^W?Pp-9S414O8Be +SEis4Vy@TVuTK3+Y?llR0W~RK`lYK~-KR;o@n)fDMTK+X^NIWhxnk!ima}O0ZfA5_3k4(vx4t&eLOQO +sb%Z5jbUuvh=-jD1QyY9W&EglbBRagCV+{?!c{XS=)=gI1>dfod_a@BscYObA<@^IB)pyi&jLEV3Xx@ +!f~kCLm$PrukTq|Ltb^Hf#W9wbhWgF7m&L-OoDIZs)0-AbO_ms?vYw5oM=O49@XiUy9Jw&MCz^XH*r> +ozS-p=&tU`_9V~)mwXTu5TE)U27eZWzR`@l4@%YQl%r`?n-M#%Y8)HQENSJLaj3EwnMJIHSCgKYL`4= +rL_k;#U~+<6JwI57y}V*jUV1u-r;0hWWM!wa^FcOo13p~cd0;xoVf8RV?((4^r0zs@0}ac`kh}xYG1l +EZTas$8h5;+vy(SIWNQfbcvn|oc1@)%uOI7nOr|AvnQhN>TDSc5ZBM8rZ8~`ud;w5P0|XQR000O8Mny +wZkm+kxZvg-Rm;?X-Bme*aaA|NaUv_0~WN&gWaBN|8W^ZzBWNC79FJE76VQFq(UoLQY#gt!5!!Q)Z-} +5Ohd07kX(APl)QG8Q}z6v3(=@w}Ikff6__T9ZnJ8A8U!q7gIbI-Z?CAVqgi~`1*E_6;X22xq$0&uNO; +6WPg32CCoO1orxp=;xow&kHQPSw)+b7DPc_ox-vaW9<5IAesYU!K>mP(eljAKH20Sj_`xn5V@^+!)=+ +?Of)YotUW}`Q~bC=K0!eIwf@Qvx@6fBT@ojBIU%GL4Ja;kmP2_1PezMXvU6*h=1Sm}>Eq$ +nTKXmPF6@l!3wK6Yt`C%?s&!I_tf6HIljA*(j`9R$N%OHk+OaPrYxW_-4vdXs<1H+P+#<(Jj3iSvnN) +UWEk<|+49SXKFRz9$CU8w-L25_??e{uHKgRlL1;?$x*#wu>>05|ue)`7!rf1})3m1U@A6l&S%m0Y?uN +d*w^Y>QNzXePO+WV^q-uep?6WQS3AufV{n+h)iWAP3#M*C*{g(9C&O9KQH0000807gYaRL{fMi%$dq0 +IUxH03!eZ0B~t=FJE?LZe(wAFK}#ObY^dIZDeV3b1z|TWO8q5WG--dy;o6h+cpq>*RMDzFEZvzNe2{z +kr>SqXV^oNpy?ipu8o_Ipf_jZXNGjIOT^B^>LYC)Ds?*=kJkLuDq7I`-plFeg;MEkAmJK}4eIhAR$tPe;0Zl3LBA1{U%|Hu_nh7-q8qPyVlE@fF=23KP{#iDS +jw?ir%&Dy_%2`2GbbMM>m$uHNWy1WL<-p_<#s~%FnYqNqHAX;US78u4I^tXu8I{3k48D!*k9L);n5N% +RvRV*{Mc*!M!DnlA$-9E7FMq@ +=^i^m3qs|AKhT-goNXwIvB(>1nFbGJ8vHr@}}WH$0{rflVSMCyGjx3+_o|FC^lh-Ysyba_UuodObIIp +8}GM8!BFizR133w%i=35HB?o&(e4ZbA6pR7W=6)+#EZ7jUvJrG{qeD>PG@=#JvMvnp(P4Dn`VSvzo&HyewmV_4E?INU$|rWfW>wDZ +r3I$T>O}=+{ZV6)5Sm8xl#9adkS2t~uS}s=^AHW5 ++UD`Y}9L=e23c#^j7VuPsdq$vIe&MWEovUpx?W3+muC=gjtJfKw39jjbMnJmBz;CJAL6Ib +qnY=Zs_3yaT`?S_pB+_`JafJ6VG+Hv5+5b@gb9te#-frmwC{Hqvhd8kqlotxW&Uei=nUh<|Ov*TIU!* +(FfyZTP;zFj2QmSQ4Esth`2jn-y%BiWQ=&3Z?_UUGLN3=M9HjNy%OJ)a<-|P)QgH?CNGFrI3MtWb)ovlWn +EZ7=X4C9P;i&SKfckmf9ho%N=cuOnlsCRf#lnL4V!4vA(s`?tn3B)!a1z`Y!w}V1&so*o$o_CT^!KQ_ +FSsWu8 +{8Idv3M?P7t}S)eTBVJvewz!klN@fa_YzhV%^ZXUd`h9zR?@OWl@*hX%hJ>Q#50CsAyN$v7XDE+l&nE +}z)oAOT*0kY1VSooU2u$lLNkA!xNAQ;2)&Yc8bloZA*`T7177fwOH1jH5|=5BXe;#8lM|cV!j`qD8eP +GufzH+7Q}=sY1W47#Hhsf5ly)NH>NUzuTf(8PB?y^vN{S4MCW1dR3ZKr~1Y1=Xsq;9eGp${%E=u-I>C +5N>s}sLhr^?CKFiPV`2cfq)dNkMl-gtl$>6BU4w=1A*w@6xT4OT$TaOa#!I(r;aonQoQ2*m;p8{ck~{ +ue3Py6UnLIHakx%0$79-#5homv<|Qg0^iMneddt7HT6TObzEWfrAV|gDzgz5 +79dh>b~F;m@NuHxAVDZ4I5F}v~qR+_T`j;4*&@c@1Q`1Ai;iu=W +9A?thC<|4_d7^u6rmy-?x>jI^R0(+7wDIA6Yle^+r_cCadS4*Bo@S&lbh+1v#f@HV=JJj;hmy{!evUW +?3@7tRe?mCRfk***s*oHRYInycn`tdm2M+)CrQPVBi-;QmM(N|3EA2Xczo|(Ff5`Ln4*WF<=cy&qN{l +((+G)RU7nG*2po8{fCdrmJC10U@d_KTyI!E}h5?chR?aBb{7JQB!bXAe#T-;^TfBj1#eE#KF7xWzWYt +kvarEdPpY+qAO>Z%#ouYKoZ7KgRQSN%!T!(_6NQm++u(t>B%rQK;^nWn6ZH)$@exCTAM+ubb8%9+}*2 +Jy9|fn~~{T@H21!X$*P^0*CWtU`fu$av<#UiQw`Z{99mbeusVL{OJE9vm^4EbEhh)>0QB$ZGwP*W*+$ +BU`09h6g>Lz9ClrYY^={lf4iONe0NbEO7p-TuS3vi$KDPa@6aWAK2mnS!LsUz%3m|*~003VK001EX003}la4%nWWo~3|axZXfV +RUA1a&2U3a&s?jVPkJ|E^v9hR$FV^Fcg0GuQ-@KB+$w4p$qF;ItDE(WDkQeWYs>l#bnD!a<{zfx9>=? +(U<3KcxcEU;B*eL4TG<_Bx&O|E*;G+_*(5AkX#$JECiJ~Y +|!diF`*_Xv+t9Lq!fSx#x!+Yq3TpG-rHWDpR1GoyI_7i|^(GZQM1iQ2jYX)~(DgDa^Oxej?G#Nsmm0q +{4LdbR2)!3}qhdNi4bFG~vNsiB`{FJ1Cpe)mMqU4hiW|;_+Rq`2=jp50iRQMnoQKD~4ZZuVET_;rNSp +-gxMwdp^HL?6egfI!(zumrw`nQEuu2%Duvq11c{3PX_MbJeMmJ+{4)CgB??-5yKz3*(xQr08qDP@+2+ +0th;mdKA7+#}~HTL%+9KD5T$k^#A9Gni~ +{8X2KtYna;f0Fw?0H2=Bg6**ATEDuIi(XxF(KAicVe$B9RSY~E#tDi|?qA#w;baHzM@_V4t#B2?-z_z +J0+aY~<#;;XXN8px-(ZEUgdsDYmca+X~#g>lwv5EuspknJ!Y+)hYI4t+7+dv(psr +1-&N66Dcx!2{nBJrh;1v32m+OcQrfFGy&c7X2`xSRfZ%#qz=y2i}u-K|Fwg@qQ84l!)LmEoOeTQ) +edn+oC~Gs?)VP03ZMW0B~t=FJE?LZe(wA +FK}#ObY^dIZDeV3b1!vnX?QMhdCggEPuoZk{+?g4GDvl#VE4Y}T67d>i*!ImQt2cP*-N}m_HcHs-3>3 +|+TVUN>(|W-b+}Y&B*3v}X6NOZ$2&`^);O8l4#ba=iz{k2Hb>+;InFUXJEYob*v +jPcA%e#J`92^oZ%+Nl-kD?q5UoC{;b9SnfRKBNYa*-v);6 +dG_z6uu`E_9gqh`QkiA)0VA;j@n0vO$Onim;fjoMHX-k3#^ib!h8n){luwFU2B~5!VfxOB2*stfU02>SrFg={lz<+a7^yhZ1WQDixaUfWITME5Q^o0R#<ZJ<> +VULK8^Q1EH!Y2_%>SDPJwxln+N2a-oZ7bAJm(S(LA>%-& +OE}05rleSgJ)(N*>08LKDnu$Ylr3QnJ>ZLwFpUp@VKMTWiali*D-qWu9t4LsnFjP +(vdy=4+Ov7TemW2HO=1@iSD=0ZI%B>eMxd=HdWu=rF7d+8huTOal_f-@_o26Pks326Ybi%VdW8Wp3h_ +NL8B$g?)f>baFI4iauYSpRQ9_>zK{zduZUG1V#Y8>U)kcZvZO&S_S9@IL>MUwJ4tZ{U&JFrj=ojITZ; +;=X-8gEu%$#2xc;fz;`AR{1age5vWIH7(SZpZz_xChW-DtaNA+vUqWu5Y*{q%A?nxSkZ|4PhY9Ss1YQ +&gRISeQ$=Owmf{+1YpHX5h6v;$*D5i5@B8EaV)6$jD3|=O{Jl16tzZ^Adwk4$M*B}cQT7^G`StYqqW^ +Hcw2$E|>PLLY1-;Q?ld%^H2x@#g_ezwe-f|Y6OW;DnzBO@s>!FI29a+yK)M>*L0 +lD%VwFY+WA;NMMp7y}0=wvIov7If;7F(rl8@kZy$h3uUSCT!xy!d$bX=gOsGPhfzEu#849J`aE?3!nr+yH_6QasD +dBz#QPB5WJ(ETMvIw;S?o8GI%7yehWs`EgUfQy4F{Miwe{?RJ#y(CpvCBI!rRpHFw!?X|TXH#-Kk^Io +?Ff$`C7T@b6Z-9{HRx^nPnd^Fx&Q5tJMWvh#U{hZQda%&C-l^4sRak!(J#LkElSE(pRB+Gy}KgB2 +ua#+`N={8?W2p?L6DZrS%tcT<;yARIv1FVsm>;@evAky&zB8&i#QQ;x*d +X&m6K_J<8*X8lo^V5s*2)Wt?sA~n-|3V7pW^j3-wfksi1=|J{eu_EW1yQxky?)%OgL$rw<-TordGBBjuZJF6l`qb +K0ztb2c(H$ScZ31C#GOv*m)-CH(Xcrb=bj0SJ8t%i&DIXe7{_C^U~$~etrMO#7NN0-YU^pl)2KFP-42 +{1g-)B|t|6DZ;iaG}@ckNrH~akdP}@a+&@@&v>AK0NSbxLpx<}5I_O%$+z-FjOM|HmljwON1dUa#JZ? +0Fz>Fc*ElPbFD*D84AY{Onl&v)#}ndHg8EdquLT$OZIJ7W*b(aeFJY4BGCg_LJ3AS1>|bqc+F?EJv*c +sP=&dBCF>*mfV(mcpvsjf*WnF26wS>3Kg`ny`UWT+d2|fl4(D4imff*Dlg;A7j{mZM=8>tKqk3-kx!-*7TUVaa#knp +~;xLvgfrBMvRoG{9!j)Ods5P47QYO9KQH0000807gYaR34Tdnm +qsj08jt`03!eZ0B~t=FJE?LZe(wAFK}#ObY^dIZDeV3b1!yfa&u{KZZ2?nQ&Lh=2um$0&dkqK$jnR2F +Un0U0kM^ol(@L!Q;6 +2LJ#k82|ty0001RX>c!Jc4cm4Z*nhiY+-a}Z*py9X>xNfcWG{9Z+CMpaCyC1|8v_k6#qScg)W1`;eyw +u8^;1Il(b{JrC(?|2G{f))sYiX$1;-KHVpoE-jig<&iBBMUT?Lf_x*j|)3X*yF(E+^Wjd2A2ne5~LTW +;jL};qHNK~!n)0QifcGIUR&$ljPsv{vMCt +RxIA3L>LEsUvB-|gc%W%YhE!7$@fhqz>hH!{r|sv@R +hFVof5Jm4l!&w+ipldKi)a>WpQ`lfdlmBG;r-pWEcq%^-yZDmwO+k=_G_={DO@P2A{w0onBpDUA%tVJ^j4jKTgvV5Yg{+Vzyt3r0W#;mhdKf}kYH~>Go!;A%Zg6~gd2)PxTqist7@j;KgvEeDN7TLO9M4D#Q7P49k +R+6kPksW)!3S@|bnwWNAQJJANzZ6(%&f5?w%P(PnxwphzucOje+&uzL=;)-C_UQ>url@@;-(cwH7{Faq0@L9ur>#}E=8nx9 +FWnqnZiz{)-4K{J1$2xOuGPv97Dego){QFdM$fnRcR}(*%qa}s-o4HN~r +0(si|jW3mU4f)9&{#r5J&3TW-s%tXxuC)`2Ug&c)f;#d%RpyB5ZZ9tTAh@zIu{u*7TIo5BN!Dl({a(2 +Cn-b1PJ9GxpyMon6{__?#ZhF}lfy8ri7oMF1xhvSJ#v5#01x?~eOt7cRi42540DZ7a +p?5>MiDHyS{w|P`m-CTt0%uJ&A$pR1dboOMMl%pFo +2YT@$qs&{dI+{H3j=c&vR%_lqe7svJ~htq2|Nmm_oJ2i(24z}tP02I`|(=k}X5LTrJ_(>SB +j~Fb>QxhY_tt799DB>AcUHZ%JU}QY4500s=UGW-34T7%E^UkQ^4XbCKvaA773#AiqQ!iz&ev2V10Gqc;=ee_xe4J&iI_9@YJ%4P@)65MfNZRe9>RzsUfu)*E;4lkS4S)NPs!~Q8c +}y!d!;Fga=?wdla_C^c;IVKjrI21!f1lhZ;xQpcH?i6MI1~K0>o$@p_!779bRje*l=T%xIO6TpD}c>1 +sDK$|;WI-_o~?>Cu$64Y0iDyGVT%QyGy4_@*JE%6ekqA)9N*FKo@f@16aEK$2vAM#n9@FZ`^CgSRb`T +46f%XMeEEe#E)sM}SOjUK3}*2}Gjlm%)P_Q0`vIJ*M>Gd0L7z=c@TC!hekeb;-TYN!7RR~o+hEl;s%@ +~^5tE5X$V!eysABJ1Oh%0Nz%p(US?`HRKf(yzKg(~g`tFXb-^n1OiT=e-h5gf~G!~M{eh-}@uZ>grfnJyI_4Ykj>LZU-+n0<87TI!wLX0Hw0EpAtlO +Sp?p@(1eoVD4iud6hjukUIYjA{$A^awFB}ngxnuuQmBS(Sw1*`>`uLb2VWxopl$Nw-rg&Cv7N-x<4{5 +$1Rr8E0*g}t-(DO}N0Xn)G@arVFEo=e3-6gM>GTb94qATi4W!kA?-Gv14<1IMSq@K=*rmNDI_KPcMou +6a@DV?>m%3xD95c1pvW#FJhJ#v>F&~ZZ;5md3OV_MmlO|J7$e|ZD$PsD1d};byh+{OWm?Z+@6aWAK2mnS!LsSym&@Tc9006EO001BW003} +la4%nWWo~3|axZXlZ)b94b8|0WUukY>bYEXCaCy~NZEu@M5dQ98F-lY!r>-xlbob%Z^hzC)AUP%nq*Z +m55P`M57Ysgjo!I~Wo?TuH*lu$lk4P~rGta#2%(KHOjkDD@=ktXmBO1{A^NaU%!?JwNGeKV%-h@wF(1 ++*Z_S1YB@?;cc%a6U&-YMO)e9492SxPdawO~Vv063&&7V{Z?!!)Lt3z_rBwPYk002A3vzJxiWS(Za!3 +!K$DUuA;P3zrMRs`|~=l4gt%G!`spk6W7OVJcZXq*b0h^O(iJ3nl(B3Lmp)2B4@8C(R^}n07#0UF}@0 +UaeLv%!#KICW+GIOpJ6`{;frxbM1dMU5jjw?p^1LePvzIiRt0_gv{xc7BV0FTgRm<+Z#_z`_3bCG9hT +W=G3<>4^Uri|CU_q#&n_KKnZX==;?U!aAi+#w4Qx;Ke1tCr%%o`Anq)8e2WG1vpuo>Z`$~^?N2Sw8v% +l*4q0EUsZZXmf@%2m*`kSUex6u#?YKZPr{BoCx5laRCmxAJ5$g4^8sj(p)2#wyisnrTD +5#sQQexp=fJ9q*t~~{uVT1%ojaO1o^qQWJPRgF-&D%T9~}0E(6iv4tGqU+%Av7uJ5wbO!@g@OFQ(Sb# +J;hnV@s(zTHbeD2tIhF!jMeY_LNQM!7q~JXi%U`tpZagUgZLwXdf&WNw_mL?sa=3M!nuF&z2Mfv$b63 +EC`4%S6MDmyU$$JjH)@FO1w`aiRV%w%94cX1yO6Tf7Yyc8;6ofzGT%absw`thQ;e;h+;2aMT{rKs@T? +0LdGo5dotht-XmQ4eG_n*p_H?fM?JQQ*h-SE*R4Fy@*^txJ`@erUM~pH-YQDOeM$X`(Qo};?-m6gj2~ +PNxx?c3&Bfzif4u)S>G!-_=j(wt3n=xXBou<|bjDLInUOvIjr0skUwFcxP)4Oz#4-$Ccp7IfSid-@>N ++J4?n3$weV)$Agn!{&(SwrJs?mZ)Pl1$MX!-Ct;u(!&kATR_=W*{gg1RyW_{ +UM#5J%NwrqV!XH2B8tGu?>LE+si_RxeTPhn>vfepe++V&-WDrtOo0qDvLtB1=o@Nsla9hg1jv1%~*z; +gr%2-e4W*uQ;KSz7zp_}Ocdi40gtdpOJOwPF5qP-WnLz#(i-$S_F)ocV$|?{pxB6*rMs=T4imxJGUW! +SBo=o&d_F5gbipVBFLpzy?e02T$u_pWEub#lyGEm;hs4rY@4d2dSz8DMs!42kKA-rmnr(uN-`LkiI_B#bCeH8tf<5%Vu^E{Ezar%UPEt;X-%Qx?8`(sk4*OHS}Y +Vs$GkXM=IHY{(KGpR1By>(=gqf7Xlx;q`99tOha)DH{)1sEXL^wBW(^MV9z{T3p`@@O&iBRbt$v-7AG +YL%BPoSJ +Cd_R3zvJF(UiUUijJwo4ipp^m!_WHWD@s^hP_{@obw{BFkrxzxXp~CJ!LeSh +rn|<&TS^ZhH;WatQJsKX?hTB18DLggtFfkagz67lCDYypHI{AEJjUgbZfrqr_GGr4CGmlEt*dk0$RkU +-n9bP%+=Au3VP$tJH=r8z*@DKHTToJjYOIRNoP$#(^>ZOpURJC-^ +ny2BU%+YEy$zt=?7a45y*0jB-fE++*~y0uH!1KR-U0=!xUlsG~mcjQVgqE6n6<8N#1*KKK#pe;;*Zco +Yv$5qA0rpjKa%IfIvo_b5=cNk@2Fr|_~nJe79NyM~uMH7l6?iK?41jZ;#30%Z%|!H`aU}D0N?MXpBm=>M^^s=P)h>@6aWAK +2mnS!LsafV@?XXT004dq000{R003}la4%nWWo~3|axZXlZ)b94b8|0ZVR9~Td9_tRkK05PzWY}^b+t; +eazeXYP(>@eiIcUI*ui$Ts;X7wjmOD=W1AU!cO&({0l^ju2#{KFEIn}K$dUiDzl1k4cASJ179k?-zRb ++~zW2?W_g)U5ebk0o8q#F`5Q;o%e;{@=?Et!IwqkU?$e}rF!SVeE$1or%o70rT8Nrj_Q_A7POZD}m`7 +)q!XO=D>YX^uP6SkzB(=>rRg@O|uqhu=`mKZBS8zdowl;@0I6gh!>fn+?5@~eOmh*E|QE9A)vmZhA)7 +0nlbyTYbL4iO=Mhy`KfVg+*+BsmFn$XI$wLlPoikmElB!9{vWkZ88PPLk$yMx+24HLImoM_EP!1~h>n +js=nu-jUbxPfhTgzW>BeTQ(2cx=pH* +YfZ#U1*tGlHSx3E435OblW8h5%#!P_U;X&O~{xP;J;kP}jE{TliyO-!+5^+Z+t7foXS50d=Im@3`nV@ +k)RWhHH5urZe$Xk{n5jEVijQW#UCHP>IxFx|oEKA$j}T57E)Ih^0%IPNO0(7@1CiF0+*7P$U%FhD>9c +6Bfi=)5-(B;w7k4`HopSXN2=|dzQv28MK_fm~$O1=l#GV-4GYw6{66HDrkd!JJgy)$&j-*IsyS^pICjLgeL+wn=q}=8 +xp5blj0uMcByI(U#z~`#QhUzg+DIifJM=HyWK!QkpcMmAZ9>sozc)(sdPQ<4}?6Yr5T!IzO+kpi;@OO +5>y{g16SS)?EZR&Xc*QIs7Z1akIW~G|otpx5C52y|uNkwDwlk?aj~IwRQXIrm+^%$4%7XeOBP`=R(eg +v{Kd%->YAC`QHA8uS?l1z9Zl3-*)(3zo_}FWX8x66A{GQxuTJ1_f8fEIsRlVJ3J3q&c$z3vvEa}#ztp +ki+~f3)Xf4@q(gy{UzYZ!q27zcoa{qL0Q!Be%y-IstISJfzES3DWnL&Fi2tEulXVy@X4N8Ur?sc4w_9 +_kn`_FbkVzEHUt?SQ3-$o)VtGLrq!CEm44;Z`C!yrpAj7dBqqI;&d4rbV8cTPi!gtFhRjq2PnXBQVwE +nFsg;TQr>-14lpS2&H3*jR6J7>?VU<^yHiclh@ITwYeGV>Vj%d)|Na)+sfzY@*+dX^_iI_~8|`%a=5yH}Z@y6GOJ%;2=51+yRpxhP{%F*3yhRYM?h>bL+aHwq +QJJ6W*8CGtO9KQH0000807gYaRFR$Rk7NV@0AC6K03HAU0B~t=FJE?LZe(wAFK}{iXL4n8b1!3WY;SU +NE^v9JRqt=3I1v5LUomP`5w2;}&2FVtyFDFENP+!A#J2<^+qBJpzhjf1YSKIDDm4uF&6{ +}xem;k*->x8Ib6OR*(8&Dit9oJ>=P+RPiqm2tp_5tAzwTedm@r;YCg6$SO7fEm`1aC +cuC`;qV^6@sz~B!fnfE>@{mU07nR9Ir_=hdC9J)3lKUBe&qZ)LpH>~(4N|3)kdgO*SAX5#Ezo?tA?m8nt8F(Fbabyct +NDvhFRob2|Kn`GR_Yhj=GrVV0)qJ+V)jLgV+sxg~!5iXsa%KXY9FS#~(N*1V&`7tu3}oUwH8m?WWuDMVs({L*q?wA +EYEF1bE7J1Q>gP7-AM#eDNF;sHz>HNHNy@g-j58rHv{28Si>i69~B~iH@yX%`F +O!9sc;+(04S)oZD?teXBN7JEhybZggf(ZMACNK_BRRzJ|*+u18VRTPH6p%i5-p64|Jrm5>Scj;mc{mX +_Yh*YNFLmBQct&CSU==I5_>H+L6v6E0M)uCP}?ki$%#Q1l+>EhDu=f9RNQ^@3xcw*!K+3vs5HkY%erJ +yf6mSM^`ssZT#tpT1L{{=51wJN3x^|AnV}!u5x-V^J0^q!OomA1)r5(d;c(6br5K&`=z;sizeTPU+*n(A{$< +92rogXe+@U@x4#ApL!HSZ#!0~$?syOjw4tn#!qBdRh1QnT(XU8v-L)ZE2Kv!)0N0yd`_yqjYhjkrI@o +c{+TAQencJyG8f9o}*E^2cSfXVpM?8+vUTGQHAde$9-igzS^o!ja6ng0Uq}I?{gS8CpuO~sR`&ve8z9 +(U8Z?=rBHJ^m;%v+5QE&FtX+S%8r{>QLB;x=Y~61hDMaNwK6;3Rl=Tp+qVEly*%r^zo+O9KQH000080 +7gYaR8ED~d>sP-08It}03QGV0B~t=FJE?LZe(wAFK}{iXL4n8b1!3Wb#8QJaxQRry;Mz)+cprr>sJi2 +C~OB>qsb`z0!8h1kNrvlTngMNUdk4}x$a-T+wKclk2iY%ZE% +L{r7(Nhwo)sw8oE}5Sf#lQVUM*cjD;$pl&v-Ls=>#M%o=<)dX+&W_Dk$pOF{Nn7zO8&tf +v3~_Daj}>4$CaPWD`1pdxYcq9*|_>L1dNB(+nnzM=@aw4kV5NSs6)kMmb77W%(R3IwKh}QY4|=Njiz* +)r2K8&tr>a%&^Fb59t&o7Bq|Im>?G{X8AK;e9H2Kay~{0NK&AeG|7R_oy=c+T~LS_xrixD(+rhJ@(lQ +rMvTNEn$BpHhp2FTLq?P)oPNJTHN?P#EXd5+$UOD1bY0C!&Qq+KVQ+jD=dOoomM$Ppxw8!`PO${Zi6i +6u&@c~?N6}v9T$98ZigK1F4v&TNj5rqwoyBZMlZZNM>hXD+A#lYHgb+x^xT~42@_tCE7e$qX_L_e1ZW +idod!QK(VL`m^^z%Pr90Zlodswfl&UQwu*C6+eHWoT1@z{uUEv+y`-S)Wgahs`1D%=WTY4p~Jwhe+{Q +x|QE2dl%6)eMi2(c=K{DMbZcQx;YXTTxestb6vzF17-mfZG@!mtXni9jcbfK?Z~I4_d0>^8+jdJY!yQ +ELACf9K9IbQGE8spodxw9e?z>$x`2_;nDy9X443~N)%p5Uuc!vV)OFvHk)11iWUnE2QUa>@bUdmefYT +#zx3hPKK#~)SABThhc^SP@$W6GyE3&X9GRic`jdk*({ +e*4E;R+ImVA4-uk(G_@fWM_u1QY-O00;m^MMG5N*Y@fz0{{TE1poja0001RX>c!Jc4 +cm4Z*nhia&KpHWpi^cb8u;HZe?;VaCwbW%Z}SN6y579E;0yg7aF(CDhQgQ9GSKW$dW6{69kiip|L2Nt +t<+pG?M}P4M87^EQ{73&`lpe)3pDRFX<&^dnVnaTJVVEIp>~xEuX;YN2jn-xvbVtplyoN$M(eYP9RYA +t(NOe1O3$i9)0rZBbW%K*HRfc7kHC>Ee(8j-MxOX-e$5KuGIE(?*!Fzp|{c)sVZm`v_|+?rM~rHi?s^ +GtjZymrqS}MZ3HwMG&8DbZZa*PP#Ouh=u@}4Rz|>$Y&L+W7FF9oAq1deBeb}>g|*JAM&v%!T3yRr;l~S0YYb%{n;PE(pMiL5)!#s)4*@%wd0pYlR03 +;eY5?Q3vIDrx4K}gt)0|`SwRYIbaQI1y6SUQD-PDp}^7)5AzXB`FMV#K0})3Mn+WLV@*5Ahf+W;6+=c +tFlr$kOMo_?V>;<$Q=15XC^xX_Nw=TAO>h&M1V8oP`v|ae_`HdJcR}14cq0LnkyyeRMdyp(2PQPQP5B +8**SoW@KVxBu={D+ODP~khtJ`fe$2M+}4a2X*ZK^-J+>I&qV=koo9{c8&MW}L;FbN*`uMXa`6%#LMbZ88Fu9cN9I--l +dZ*pf7m{B+as%#m8JB0!>^RA`WJhe5BEGT*k@Vwt$c7C#9WHQEcW={QC#%iz5c^a;N9!r +JNT`GUwfBFo0(G8|M2;)Q-0sUw;lX&&nLuiANG0mr&GRq)4^XIynS!?=AP?Zz7*w$ZFhe=>8|T`_e%# +qI{4`y2S0bP>niWwVv&CVP)h>@6aWAK2mnS!LsW=t?Q)R>006oR001BW003}la4%nWWo~3|axZXsXKi +I}baO9XUukY>bYEXCaCzNTO>f&q5WVYHOq~Ozf~G$XJqYk2PMunS8wasl6bJ%oMUJGc$tArXmf1spd* +AMol%=`>3KT6+0s=_Q&YQ0{Z;y_SMug{MyRKMS6Fz?Lp3$C(q#;43RaQLHMy@v{epaeAH6niyYo@K1* +0Lh0;AA(o$|AzdM&C6n)-wMS25VZ?I+{gE&aj6NWl0ZG6^7~+nR;cnLUX_~F5i$a-pN%!GnOlp(pEko +41j980i1go9Snew{ejIR5Xkgn!wO#fS?zLf=&77A4&o4l^7T2YB +_hr)4K6;uiR;2NJ)C1SUXYnobHE;<;~a4u1x@LlqG`9qD6A*q6`kR{5HD%UKGZ|tKJrL-+ATcofO5=B ++DQ?|#8_@Q}iYS|7oDOWAgC)86r+c?{Mq`pB08I~H+^cr@~OQ2a5p2vkB(K&rb|EuRyZS;CHrZL&{iBjE~R3$q%MPVFqLwth3<3Dv +MiVYvDrnx{NbB8y!#E)VxVv(jAt9LRK8iveF9P$i*iC1TWL46SfEesy!(Hk|HVbYPm4uI +X(TXz9d+8Zgf`YTW_oh62B=$RDDI@`Ja#Wa=NtLNClMn1O*U_My}sz7j}bEloaS}YYG3G--u16^etP= +d@%icbnWqR?zgt$zqDs+ornf)cU*CSZ%OVU`f|cPZUEX~k?KiV`S0C=K0*g8lW}_qM!b;Z_$r^(WEW5 +KBoSfaJblF-qv)j>VK7V3uK;-$HE+{$A&d##)1b-KG9w`wGpp(@uw@!0m`PnAk70nIS&q>M8NlHod@N +dIVlP{yusNfah$k?xF>fcyTVwaCP^}69_jLq8@i++gV96miyu6d4nnSIEKT4Ns6U1+6MAhvpMF8}t)BSwhQt0DCr&M~P)9w=^OT9#`WXTsFYQ>W&(Hm-7=mfT*kU>H&P%W>Z9L4 +d{$r2aS-eBJcD1;B#r9=sfMU2yP#_!J%5!T^-*!tNDe|MR{3+l0!UUY&?(G$cPvMW8imcMdtX$;22*W +eza2tfFY(gVa1Ptp(?OX5n4LlB+i?lQ&IAZ;4&w5{({pjFV$$WQJh(uDo|3Z214KY=d)gPF4^I|Eh{o +I~My{G$H}q`NK<0Q(tc5Q^@U0PFzwdx02F_Miul>|nYtVonZ{348a#?za!^b^HRGOLI`fUq;%C@-OUc +r)2-tzIN5Wy0SZh|AT8g==DpD{>u9PE%A;hp7Q_KE$#T;jqUKNd##U?(dZ9QO9KQH0000807gYaRCLS +F{^|e#0AT?D03ZMW0B~t=FJE?LZe(wAFK~HhZDnqBb1z?CZDDC{Utcb8d0kJtZo@DP-1QZNrx<7i$3q +8iZ4#hCleVba*;Z`E7GOOfu|c%-+bi2?hHxT}cSl~5Bn)EN&?(g9c~vPPbyZF1?|rceK12pYwhLg5)C +4EvpssD8-e_2=n_FG;Sy42`1}D3o3RwTQkZ0NBGSBiA90O2~@Nv}vp->Ot5#j0k>*f8kZJkz>!ulE#vg+)`8&2sB +AVAi$sjNxaK^&HTyy*qn2EL1QB+Te)+G4-$#q&c1Y?#$YfwVDMRQ7Au|>!Vgzb5~rLV{#WC3Ku=#~t5 +uLj47;&7EqFc;Lhj4PahR<)dAwK_W9X>9vZLqEzZo4pKYGDt8&)hiJ6FrGf(I*)3C`Ke50`Jw-e34~n +j{W+D)^ZFaPgyTKY9D=`1InK&9j_Eya?h%_y+?3{~%tiv%FxL(BH(S`noKOIMKg?e6bF4!4Kwnwt}@E +iu*iRGu0aL2w*ypjq7;rPw#jdWx213qdQKaAs2C$PNyDQ0)`1<*+0%l81&#*Ng%{&R=m#2H1gQlx`2s +}^E}Hv7Gx;NaA6gvLEC)^$j+@xo6f_a?k-XW5y*1 +Qu^U#xi;2Zqv!=LxoK83_xlf}+6DNdN+&$DZJi_P2k~uXxVV3=9wTkR9-o^PPyeiVo@KkmaWeA96l=l+8tJ{_zAPLh|`j +rhuIYD7=ob&t&_NL9nTq>9&$zKC0E4m^*LqZME=*y)_N5AranXtyX6}X{@sD3n9*|miQ};s!|ox}7yf +syBzx%@;eTf@{t)tY!F~>sl9RRUfDQ^%)3QHbvM#6*V57K57Rhf$F$VJpDU$TLOHjkVch11TGU6gpGK~$hBw6hil)0B4y(a!!nLNtr9Ds!H +L8K8rXP5=0z6x?cJG%#;V}e25wIq1fHihtlL>Rkv^x!rND$wa19EA;T2ETi9lU`xS(Z}h@ws3$YCK?{ +<4k_vC>aj8*kw8e&pe&hXkr6tEMO;~T~>K-Sk1U6g_jt!1z5|z?hh#qA}~J+L?txO>48#r_hkXLU{)4 +fMM#zYTUJuR12B-zVPN$cf+3|0-Qxs8LNF^4&-2!TFY5A{#G)YiR10hqM!E2?2?)gtVmxRys5lxLDp^ +nGS!FixLk6Kt5~-f}7n~J@GVphbmY^PpHN8bqu3G2VB@$$SX}22#Ok*cp8#t=7tRoP8Y|lER=^(Sm +>^^egZ5(*DvZUCDhz7!1SB0sw}X3BgyDAXp{fK)90)E6k6eU_JhB88n}BUyEbZrHZTP7s-Tjk^ia3YY&0glO9 +3X&|P*i!60>{s-im1&^k2!B;v8Q-MDAP+^EDlcE-{D-(`LH|7{OwOtL;v}&1Tqdp#6#VcNH)?Dni&p7 +#&o(n_HzqJ(CQ3~&j)l%&qW^L$G!O`w#0E2$!d#ziAq@>oBq>ykBHU##-kghVaA3?r9!B`S0bwsq2l$ +IskLC~6Q?C1-yK`;2bgOC-DUBr~;?IS4pXvYW?LbefgLP};mz5U0~PO?mE8dIpg%q_wH2Vp96)V=`rV1?uWsc~(bsU7z6RrcZIq)~wp&1S9P+ +HyqYCaev}jzF*rA{!XS@a=frZetwt0%#|~)cx=$laYe +`U7;$)HisG9SclprlP_FBXoA|L`%UlK*#y>c)#9sTTFTSz2Hb`M5DI#y6k<-0xG6M4pxdfKE^T9~MPv +Mb!C%H^(-gE1%aMeU9$zFyZz19F7T2sU=90b-4%`G=oK!RJjvCGG7xjYtiWeF@wIxGiIL<_kTx?fi5F +W0DL#`rD&fZM^QojhG7qc$C#0$bz+RsMZ^eFhyWBk;Q0hU?KA9#bEx<-+Ozqemm{p^ +x+6ioI=}G*~Ful9FZq9RFn+IiOjRPyyIG5upEL%InGAh2qof%l1hWBg=@7Tn(u(+aWTKl+dfwaeHCr+ +SfJoPb{L=gP8`i-DgV||DeT&HRUxLd8JO>J6%yWTdL)x2xAZJKi0)RfbT03?_?%IiBfQ~W<2+5#>|f- +|c-GJDeM_^c5kPzN1LUp>Emr0TzFBJ|3R_;CM2X-u5@vvNL%wQ>l#EVtT{Kn=2W0O`V1p2hA-^|d9Bw +IkVoE-@|?F)m2yv@N=zXF=^*pou2CcE%y|+K746qEhpdnJdG;gh>wrU*Dddf4F@8_T>2K!ipBNZH-qh +AC;cSQg?i-LP|x~L90u|@Yvy@HQ#p0U=YRvz+D?#@OaBcvxV4;ru-0)ewC*{ybBha_$asI`UQ%(3L=E +Eu!!$?>akIv1w(}jbxjMp#b!VD)LCO3$m^N|dEM|qIysf=zi#-T(Zg5*%ED3<*^0URSLmJw$&jh)1I! +z$L|W5*1!q=fE7M8xa{1?2mxTP;pVG)YZUMaX9w4^;z^WM +Ke#Es!n=3YeS~87qO*j$q+^RMVtwIMJrOzur)`+_7w@nve!47ohQMwr^{zjvjkfY%XHrDbpWf?%HW&= +Wtv{DBl*X}Q-MHX3Q!2KJ;#^@Qp#K*Eb9 +f>mHN7=nTCozNy^7bOiNkd^&dYN70^nsMuN?mWWT{^>Dw`qO9nnW5W(BY#^o9J?G3OqIv%G8q!DMc +`YaOQr=Q?)k2&8P-z9`nfQlF)rzq~-hLbe;3F)Gkftc>c(U#om{MQ7m&3Yg#0jwo5c0Hhre}?w9Oq8*E4klCjAL?6~%I{m-4^$lSF +=|swIwS)mtWRYZjF>LE?Nle6EqJXQVJCRoz}&r*NgCXbHoYHbAn?-?D+>?HRQ;)@i4HNVy(#e0AdUrS +NWmz-!^QC|OqvcC42&q(bcP3h9_ul!6_lAHomJ(#y5u!T?t={-FU{aVzF{luB;qvWDEaq6T7cx+8bO) +@2|Vy5xs&JTY=-KQ@Em)SA&IMWLRpHQ#1yB5u#Tyxq-7kC*5C+4dG$p4U9b05B5VMwbL1IGR;BEK7Z4 +ll0Y0JWVE#`w0FP0q{S;}Z0x9Xj0&z?uD#yfm1l%;(0vAWg9thSgIr+2_OQmsYJ=+q56*voGB9jS->( +v6E>gsUkJPXk*w+aL85d6~Y%dMUpMz5Lpz=GQf}y)vauEzuZi2H#}`#_C(2#=6+x4`==*B +`1xp0yc@g~iQ@myBxuK8*}ka#pCv&cW@J%Xr$~EiaVG(4AuTQNuS$hpk`VgpuF1*G-um6RYm)%!b1g#+Br +sChH@B<7MMkwuuoBgKY*)58Gjei>q3&V`)59#uuuzAAx&d-(gU~~wtTQ3vS;89xg +g^vc6VADY_yN^l9{k?N=~qW6Tj6E_-*GPi`u%oLgHzWdfg~z0afBstAea)qV6h6uxMv@N1Fsx5Bo8U9 +S(GWnFu-O)AXo(usB@7zg-MEP>4d=D&-2Y!9m3Xq)6Z2MJVW$JozPa@N|OP#;H70^RNbY02TSAN$7x) +|K@tPg!KmoR)9P{42)(7rI!}j%*dkpO`W=h-c+Ybx3Fo%-+7KqpQeaFmL3BMv1taQvfJIAO@M7{hfTc +Z#6Hf4K+Q{E8Rn~y%)k$#4e`WR95}&I~<%WweSo1g)AhS1mv-(-Jf97H8iunvAAo^mXN^6#JxI`?`8i +1jui6XkrswSCnSeLWBOj8X`xXc8{3XpVB1`DP6^0KWBN!LNP-7XES)*o<;uH8DsV&x-3H3mY6B7hWJM +-TPula{eg_#6){?TN0QR|Prp3UQwczslP-c|6|R+ne;?)GdW|10cJQnI<)m~r` +HOzyzJo7QYJcZOSW1epZNyy!^fafP0p6RM(Y$22-kkDHYV`ZI&Uw|&FdZZq%mr?R;jJ-f33HBx6O$v4t%3(Ssh)yMkI|q`UVH-JqLw0+zG6W&m{`R} +Q9FFOQ}i3C*F(I64j?twiyvTp2u0QzaXWKTmrv<4Al1nO^4$|%F@b9Z3ZUsC&&svy5UE +UGvnj|8Xn1_b)jaiawUw#>#=*Tuw&F!_7vvM?y0? +W-YpE378OPL +Sm^SFzlKZ5NEaU`l)`9RbP;5&9RK#!;%wJIcNgHE|xY{=))7_7sgJ?fh^GvV*Ue}kHSSmUT0kw=&x;d +yncHEx#`td)yG_0XvrIOEtFnH812cOTjUaAQ)IV1RWW}*%Pgeig*aW61DeBCVM{QlIF#b!l(6OK_aUX +&AHjJI!L#@8US3}Akhv-Z-X(Vy5=sJ9SyO$QE+Ml_huk8xxr|{Rp9f%QgrTZVK&@%#_Dr$qYRzOu;kg ++E`{^xY%c&GNkRYC7;rsr?JhO>;c7FNx>~uo4t5=@=%Y(>k58?R<_q{dO73@+oYBf}}gDh?NNN_M@v~ +g}BiM8Dr2;TC|NEY?3gE$wy-RJlrSgjL2W;dfVHd{={(0l7mu>=6aEK6?or^0z374}3qz>~g3Vlt~Os +E?$u6<9`OVYA6f(s(ixnu7P3FsZ6$G$vpsge03hF64iJ;fAF#S?D3nIUC?*At`k;Fdgw56<`fP|)!$0ztt*9}Kc +lgD_75y7;ig-<}z_Oq~@K>3c5)@AmUB=X9SXP_LW96gv+>J`2KI+5?a(;%`;LY0XFK2MGuQHWKSV?oWVvfqyGQR1dj#K<^cUa +5qx(qVvO^HeD&C6eUm_G!j)9&)mr&+^C%Orb{ugaA|?+sX8(7N8%^hg8iM@h1n3!L2l<8$CgmE +PT8uanI4J~#vtnvMWK(dNuRwh*BafhKt2w@TGBnBBWEUDp1%YdfjrD%9Z#2dtP#=`&y#f7Y?&@Y$+Ug +jme5@oeTaGcSIZsd7NEY4)i0doBB7iXt_Rp)9g43Lvzl^FL>HkSTgreOsxgiw~eDfTt9pbi;TrdI7SP +O)}INaMQI@K%srsNG2#2|hN;h^!Ijbeqb_(OsAJQkZ79m)<8istxPa%nRFFUR?g=`_Ir5P+4O3NJE{pU#$44CF9O&(Lk*XKRlga@f+UWlB=H+Dz!4r({^jrM +w7t*QMrD55LdY#p1)I<)`Ya$5nTSFpgLs9jT&Sr+B+N$h|Q9Nl)<8puDvw>V~Fr)-6TY(~>(wG4p)s* +IY94Ss48QAgZ%XjV2Nal{Ht@6%lhT5k>MzS-r0M$%n2_DF(cN|FuHf#Z9w(Q4@%bd6fZuJH+ptZF2Ko +l}Ex7OSIVJ+~ci=AaD`l!TPx~_Iuw?Ei#n +qV6tKdM;lI+DN4x%|udu`}$}W)r~SLnE!(?02k7`W7+!4l^FSR?EJ{zu(pT-M4<+YD>CrJ;FI3w=STM4?0(~On29sfvuV^-~ZHF!^8$7qaGd +R#_(@+!CWb)cJM%kTP!&*hUAe&kZ3(N5@!l6QP{;mFUsJMt*HuihwNO +IUTO2ynuEugw;{J}HpzEwM-8nqN$qL$C32=bwuqzRE+w +aCEJ2e*cy_cyOjcLiIAU>>!_cnN#W74dF|EOj+zwu(bbD;Ag&m`N8QinQ0HFo|03QGV0B~t=FJE?LZe(wAFK~HhZDnqBb1!3WZgX +#JWiD`erBrQi(=ZVJo?mgYG^Jg;l5}IzGVKG5A&?Lt2A@jRy2-UQb?ho}Xfp)A9ls=LGKz+TzvNz?=k +9!W4k5$?eYWK)MWOOhEJZFkTH~)r$FtVgGE1p~SaO+R0u=#dp|*t@IZPDGZJDvvT19YMi!cs?%d>GX4 +q;J(S|fa{vVuaI4k1T`7hgWV`S9s}IRJ8gb$xMl9Rz93o{)v)NgEP`X~SPqCOZ6Jd~oK9ibS`h<3B( +63z1;PnZOR<;s97^=ceO)esId~N643^?u2HWnH`O}y9q<%4H<&IZDKyF3{e=NM9$^TNDE#d8QOlg4oT +@skA@mVTvFl4v?NoHn_+g6*zq>0oLVJxN|V;9t>hK;SP8YaRf#jy_3YM6=^l9AUYBtmcy=d-z<~*PVB +21+8QR*ax*yqGuA51#i6<;2a02_5oB!$VT?Sg)_bqAZ1NN*i+h94=?`E%#Q5(oq7ivKIb2KOwIa}HX-J?onort9RH&hRPJ~zJk9Cl2tfx3Eh +faIC}rTKOh{f24x*Y`)?BojSH=zG5bP)h>@6aWAK2mnS!LsaQoNJ#(#005E)0015U003}la4 +%nWWo~3|axZXsXKiI}baO9eX>4?5axQRrl~qe`+b|5i=T{IJia3R9bUo}~Ai%mlumW2*EbUoUY&sDjT +Y)4u3x@5tk9yd#)AmqZB2#>R{K!nF(+SYo?$qOdxK|C%b01+Ek$5z&I$@wjyHO=r6@i +tQ;?sOA|p@qk0sHiZ?6;A>nDVnTU7=`;E~^xR8bNU3(H3vMtmD681*E>nVg>l~W_QXK%+?zfo2GnXwo +6oSQA?||%3JM%G<`KY=Ghf_S^rIFe7oH{W1KxHNxVHu +14Iz4^aBKML-F|jb-4lW|WUTOHiiRNy|?v=gkb{Cd6S}WJM9+OdTlJIjx+shTX=7o)L5Ei9dWn(M`)d +zW)vyRu@2BE8;db!Ww;RT=vFvFf{t*W^d1(&pwf_DQZwur8@ng)HUqFEQzz}BhxB_!;4rSyp{z%872H +Ahs?C<_~IJXwR{fqF-i7P|02QxUMAo#+7JPSDP6Ev!`Alzl=oIC(LE!{eF3n6H?ze$3{*QD|ZIW*zS& +(Fgjwl(dy{D1~wV2MenG%yq@6aWAK2mnS!LsYTI0biN~003nR001E +X003}la4%nWWo~3|axZXsXKiI}baO9eZ*py6baZ8ME^v8`R!eW=HW0q+R}k(&_QDa;6ex-SK6KMvbb% +r%Hd*wr2xMBKEH)G=@R8Je=x^`Lka{_3Q5_76oaZ+)-)Oa3WelGFbnJxou4s(yxc9=+@!zkWjLzS4C) +g;;D#e{E;?;F!`jeH%)?c%m;V-+oy!`Rv>hkJ)b~rKL3if+)$h_d)mN_BV&tD#Xz59G$L^DcOLOXHI- +rxTc?|=Jr^WpaX1NvpP@LVeJxq<{T+4aVHR+(B7(%F!5CGV-v5V+ +^CuQD~6IoW4T&c2TJN7mII6#s=W?5E?hLy^gr_e{GHT`a`DMQ&X>7;g^>nhzqp5CTwe5~- +n>eo(_oopsUC*YGx!NxeEtyQY>jnU7-0_dE1^CVEq0{rj-W%$dd3f}cz8Vy2KC3-LF>v+81laKv=4DS +KzNM~puI0(PunjHj~2g6by8B~h1dlGTsK(US5Yk-Fb1#PlQ|5lrV-5QUkYU~qH91Cog$)T{F)Lf0}6) +CbNC^ZjEDCMZlrXGb5P4Ip25YYxfVj2_*NL@O36;9`#w +fuRCk!uLNX+-6zQJv{#QMg&w4OdQVh77#)3v53%V_MKA%-aC)Vn!qg|F~zaH9^$~I3ecEs9kZYAt?+& +&s^vE=vQc%8YtD$^-;nYY*`nar+R8O$T94{l>duV>P_#l&B*%~EpaTTeghj0i*Yz1zUf`+MV(`z3XDX +0Oncg636SMl~v0+@o0TpRXdo4II!fQS5K$E%SnRFWI$TL$W`|t#I4U)ofe +7Sn127q#V)AJJOcL;ZNR1}lY<41s?ltr+)Kr_XIR-l>b|2W7WgVh&s>hBzMbE^OrPR`wzt1AEz48k^37&x1IG$X%oo650krTIv_H~#E*0bK?byN{9iqGZOnMxdGlk(C +bf}|-)*iK?Tb2f3Jl6R!27yXeCv2le!j#z9nP4jzb|@b5!M`9JcP(zHNoT*`B1#hc^MfM(+V9sS;7`36>=VYD89P#z2 +yjhoEr{JU5H-;$2C?72ozVG6oVWgq<^4eSXa`3IzdZ2s<_~mb7Yc*aE`2i=kxkYMADgc~Jgx_D&Y_J& +LfDi+lZvRc!Jc4cm4Z*nhid1q~9Zgg` +mY-M<5axQRr?LBL6|spDKf=!$;&&)|7NzkQ$7T2T|V$dkI(b<8iOi*miKvf +I06s$Q6n>e<=Zx2Mm}o}H_kt!nPH`bmaSjZRh*Rco!D|MLDXZ-0IlGnhPE=%UtB_5Hga`2DNP7cbwud +#RRXrBdA_Sq@_!0oqTp)w--2RcZ67-qz-0ldbfVC(Ei_sdcuFXPt!||A>}ESF5*T{8Z&QBMh3WaSs>*7j-s^{EqTT|9;LGeiws^l??}D;vvfLm3rY!SWxdtf +sEh`%LCC_U4_JL@;NvMAHL%NPoB(XNuJMU>Ox +(OULlu^CTjFEzPI0AJ~RMNr{S+Z=v?0>O;+5>PlTyF4C+N$G(aY7ofV6GlWP75G|TAMo9%5?Zq_w^-q +ZjJKQwn)-GY|tWwObs%Y9j;_2~KuV6F?8HguY;k~QKV-Hbjw=;eopn;ZCVNkE(B>7PgA02)8kcnOV{` +or0WGt>C1XM?Sw6}5(5uJw)H2i>$i|8_^q0P6X-2oH0o25Z&2nKB*E+a +rerPF|r=~dX|8VJ?eGEt|^*n$vrky!CAq(TBmmWUUY;4NCy?<55iRj>6TTLQ)Mq`2KAw>q}s8GeMVn3 +V-mZc*MA*K*Zt~z#aatYek{}rFT}WH;syfk*4Z>wbA3)h +Ybtg0S>?Q4*<*D=z5(jbZZC;zzy|dlGko5P!S-pf{DC_B~th+fB{Bv=z_EXj>;NfC^Mzb6qu78n;`A} +W0O@nC4$%GO0-_h(1Eq<&B}~`An&un}M7q`rKA +JLEQu+73yrF^uwCS2ECA7`xfHNqYR6&9^ezT+SHA@(J+cK?T9U7-pKa1`wW&0+HGnefNW8GWJh}_;G# +o^rc}Qa8S0G*?y;;v5*8&W)*L32Zh`dj-olceZVvPLh!oIhKA(sLfbnbOc2G3AR=>Re@$}E?OZBP*`J +&aA7Stk}cjYEefd}&@!{wCyv`QM +3^}ygoi3|qT0g--Pm7jp7DO;xk1z?}~GCwP_2IOn4^W{W6eJX;_6ZrThHuCVoNXGEB2t|198&Z+91vM +%SK%57rBlA0&5WFQ1?C5sKXs +l3f`i(;n#)2khF>jE+#g0Zv=NqrygrqBA7mdfE?k3P6am5;s1lZW;nM$uK;hE4f@OdQ!D>{AjkD-@T$ +0wp$PO9%l>O>Jx(E6mvXEW6Quy1Cw9!u?z$4AJmfCd&i7(GI304qlnk7B%)gl_$N$`~a0JWo?rt0>RG +rIVg0Wzq8HO&<4l1&X7F$Z8U@#X?7RRQA7GYik(eqQ~8edJyjAw-`JNB +4^ie4_cIh)RcRxNmd61y*pQRBfzy@qB6nCGB4P}Mo48m~JdZ+o##0DSJ&6h$;xo)uuPQ9W8H?@8+ +P9D4jS7Gr;AhAiWKCmIcFvL;S0cFk}YCT@tzpDguQ8W+$vJ;0lssK40XurZs +>%_VkQj>;3*EQpjU9hDETY6+)2ydoeknlWC5SbUAT_A3vby~e3>s>sJ1~!7T)p^6#>@9_Ujz44b(eU& +o~g0z+pn?nO}Uyll7N&BVp9ENMiGLF0*FvGHOlA+z>NDFhj?JWE3oXj!*whiXU2r3fGw7Tb3PgmLc0N +-|FMT6Aeo62<)%nsYp}~T#8)r}gB1t^Bu_v3fEl1|)`z`4+8|fc^Rs7PUypI*e@0GH6#nCtQ0M>heJ{ +9>65jM%Mle~j68n3MA-98kI3SEG7__!`+q&~Q_=pA~pgTklV~jp*mU_7y4RD7y2C;=}?hN!Uc8?op*B +G|(F*hs9d-XJ{pMu`saO^;022XmR#X@X=SbZqaae;rw`&xF|8PRH7wr~bM6lxLqR(a63*xR*#VB^evr +_P1}u!h5?k>9Bc&AOKCUN_RcNX<+NIL3w>bnMLC|3uU$`L{00o +ZB?6Ro9R3y0Df=?orw!?)V2b4R!7SPG+l$7PQ*V?0%w4~bwan?w9noOX5(zH$5~q74d@5xIACzy-@%; +J5w-HH4zV0@m!W7|mvu%avqX?Msf4QvntD(afxDW}3+{Em|c#|`QSII-RLhg +hui;*@k8-Nu3W)kcFH)V5a2GJ?m0XFX4O8G?eZ(n|a{f#F1hyk|yQobXa)$NA;UG-d5B`}4&Dp;l_Ha +sqVC^(j=5x~r>wn(X4vR4;L0S2b%3<|GFF9Je6Cn{OO8s3BIsVSa4pHs4q;)%!^WU69Q9}c4AV8}YWz +q6q)8}y!oISph2GaCT%9M;L=BO=bRN;Hyf=CwEb5k$gfIPy#|pPA{{9||ySa(yA`#=)?e0|L9r0~rnZ +*x^9fDg0%yBO`+t5(tHQwe4n>RZ#KZb6>0vFGZDd%1m92MgkDT42lI=2bYoRnOYVi!eS{c9Ey}) +=rAAjyLL-OFfH`OmY!010#4Eh*- +I0i;s^$ZS+t4Q3tUxga+3;7K>vd1;C68U3mtij(oB-`)4}0%cQoq3<75r&h|OA81TGwCS1i}WLrrbKl +P3o3g~cfv@1>EM#-d!^UFR@=vwiq~&W&$}ljD6IZvbXg^0*&_0yF%9|3l2~e1Tjk@ +-%9k?}aJ+N^+R3~j*ft#CwZh!kbFa^9$Z(^jb99 +Rg*NDLfmHc^Y_p-oRw+B^zE)dg6P7~hOq8^TauS`Nh}FkzV$n=qh5z95?R5qBSBe^=Gjg_0&sLRBU>J +!XjvxaPdqt;fdw+MgXMhQjR4P|SoU)b{|L{b+nlx_>x$0}Ww4hT~H3G6tu{j_Tvz+liJE%w|ew(DY>a +4-L`yf-CAH8cu9XY_ubuMx_FJHQWFnUKniW@9Yje+B85p!;_aCW*FTGUv!Yd{q+t@gOXgK7n17+n3t+ +Jh+M3TjC+F6OdTh0Dwk~{C&pwTNG6jLa={};W7+A{ESis(fL+}F|DPvN?V7!@hXZi(J5&=ERkXHp2 +5aK^9=k*f@BJ8NV1^UPr@1e)o6q!C08wC&Cp1S15A+7RJsrpsgL187|b)(SaC#Cg#ln$n{sWufAW3B8 +l%qOck8M8k;+99O2=RxZKCG9RCBHb!X3-V&by}NJe0Gy&5RcpcmM>wu<(cmr7Ajp>#1dE$iD$kuOn$0 +nEYN21q_x5Q~eXRL)v+LJNgyES$w3TJeN-GO0nJ!mj1>t0vwni9AC*i^dF~J@Hs|s{fx@BU1rbG4i0< +T4Cozamlsq5CYg1~w+gA+8mdiq2lUrpf1SdBi#uUptYW(>?>jAJl|Z+n9^|dp@zc$dKL8a3eylO|A|2nx>KJ6!7PAx&!V6_&K3WPj2v +XWWWmQ@RiJFJ4++JZ|E0rxu3MU;0dNuR}MJ+5%uQ)+bEN8$mw>f3p@R01FI5rFY9u~0apy2&Y)opU!^ +^3YUCQ3Jc6g2JM1s)_)f#AtCUs|1RL+tUIf&|+&87(x3j6D9x?tO{6W4;M)Ldb8w@Z89+C7u+R$#ogf +@e`t}903!Y9LlAo$@QCcmh{%m>k@QBi*m?uG0&%C4sSJOpKK!*Uw84GrI!#2Ih(W`yodm5LFfwj7jds +NyoKWJ|Wg*oY7&K@7(_{%%*!KA9A`WIWX^uhANBG||Pj2fjS3>`v!ZHr%u*nnLWu#DYY>$Mab +F^d4k`+v1W4Sf&G2jr89iWaw?N2_7yN%p_;%dpO2;^MmRm?Xk8w;4+%t2+jb~0DcTSZj@|f9S)&`5O( +XnLsp0LD?ggHI$1_WGx(4`(727!1O_mlv +&(b?2@!}!?7JK$VRzqz(ko9>t!2zZCu)i=}YL(D#5UaCyPlS#$LqP#DpaujF5oYqB@knCSZ6G`o?rM$ +3}sfkE9x5BXJ>Y!7zS{rhz(G0(xq=*nOaExDVVAnkU3(SRtE1ro6?W9o1rm}2cCo@PeY5S)Oe;17wS+ +yWR$!|f42>r6|DtqX}n%umIa5tNkH>$re4~?LBkGHECg;sXSzQ3}BMvqMJYKdm%e%o*|K7<)0IN#y~+ +!kt8@~NN#m%V3mKXy%`tZyHK@End3*$!ecPRy1acVx7AdiKZ&jOLyd9^B;Jt+;m^rk0f)xUPWrgnPe4 +->2*oiBGvv_h~$aM@iBKY?`C{sx*?CkFA_kM_B6~5I_L1q&mCCZ8SOt;vY%AW?%nosqD%P2y7v~V{m3 +}+r|olc8gFpux)|$ZLl}#vwcOUevtejzX_O5$l9+=gank9sCy*h@aiT7nhj#DE-mn$*-ewVH5tTu?VOS)OqY#I~ +WF{<4~Id+^sc78OdRS&tNU~^nd2}mnE-TqR(YSKbsul`1Vl4Ge}ghs?Hij5bkpr*Ed$Qp(FM3r))*^g9;3iAqb==52DVU2M;uVU2H +-FU2Ki#{xz2_DW_B!xYfT}uj+>SEpM2(Tk_I-CfyNNg_)aMZCXIcw&jMd}fBwVc{omsw$zv{%;D<_c@ +fdHgSEk;DyNAe%1`C~@&@Rh6^Zv@IaWXHmO#R#6TN1_YoC#%<`91&u64SSKX*TVkO~o +xQj5wljWmoCYRFP>tT14#|}vs!YL*{$%IH3lWPxyZn7$+rXGQmxnOF4I*~E$%S+ifJ<^h+ +x4gDk7$HdK{u(4)|Ng>Us1%cvas=FW}!7k&A@lk9Hfa0brS8rZ>d{D!)RX0dUj<_a)v&gf^J0I8p!ma +opQY1fS>W0#W;04xP`!M~0de>4O0hQ)zf)%+lVjVnH~|U`OFapXJvY9(miFio>b5Q@^RzGaCn-QpCd8 +q{;eN)9<~LJBJa#l1e)LK^xsl6gkZ)M_l#5VwtURw7F6XK00*#5OSTM!W_ipwtpwMo +j1M)ho4(xT7v405}V>2E6)-h!bWBI6SeH`nSZ)-S_k%Yss!*;u +@iMGj2uuss9l2c~jJLf|;E0S3a{cV-lcCPg=La_QsMh55FR$KTzPfz#lHZy*6gb-UjUDTGL#JQxay=Z +Q;uG+SN^BhNvAV{D4UAv#Hi@V +y-pZ`tDj;89$B=Nj+SI!BWs5p+V>EFN04FV3_d~O@g=VYj20oE#O_@)4bHcz(1I8P^6WeJYwd#^%>iZQYHE +EOKOl4EA(x+CE9c$m8G-X>dl&&znu1#|G}*@)I^Y}d+P2g>?jNnTlOSLLSet-GfkLPr`9sr%ASui}_l +kSVgr{H9d`mZW59TTsqHV-d5zf{YZAaY84IIUj&PC~46pt512mhi+j<#a>kjXaW> +61OnWoocy-LP2OZn?i@i3Ea9UDO8^`{PVC`PlvzQHQT#ANN|o8IZ7*#IcM@%FVmyDHzSgr0EZCexT6Di(eLn7Zu<#hh&xiYJ%iT!iZ}- +P(IFno(PQ;pn}c^ft|R%n!>eo_zEEIqfybV)B=#I`#6t$($7*}V+Qr3#>kg7|&#E5-&#pPM_7NjS2_6 ++d3&SS%yIOJ>Rs=kn!d{`fCCm+_ct2zTHnXM^YA{?aS-w5M__j-Ms>K=ZFQ4`w6gM}uBLHyJMVra?FG +8wwZxOD}r`;pF{&U#Mwt%|*H4OX_MM?hi`MkP+CSkEdP%!}NX(}1L{@SPxj*n1p{?ol7ryuWQ^>3PN6 +!NOb)I$Eqb0bfA_`Bqj2Ahd02SL83c>1^pme}P0={}K*Sj{QS!mGPobpt?yfhxJ^IiLXNC(dmzJB;+oyBybiUSAaC_ZdiKj8;1`2b<2%dx6e>m4#T*eIMoII>ZJ2%NC#zW_I*(ia3!=C +{T{EYvC;-`EuS;@d?IKmmn=QnG-ZVbfsKb&@MX=Rp@NJZs%%bU;c)8sxWqZ3$1{%=eLvcXc=2~O;kCL +S6tR@FUq*d`BK#L`}BQF>wyN)Hrcr~A%cd4v_D+C988CgAn-IHDZJa5KyqL_pLXOBj1sJ7W8` +5O~5H?$T&KkrD&?ebsb#-N424a~D>FvuOOEw9{JsCf<*HC^e>Bgo(f!NjvJ18POK4Ymlt{daj(atwz* +0J{I1-7Aah;Vu?F-bte!o)JF3!6D;g#rw=dB+?^%8&JA@BUU@W^iO-ceg-SLQC~d&<^AQ`H&c5Ci_aF +I-WOv2>HodUef?0US!zGhxwQTMc;C_uCFXj-A-|_**%|4Nbu2Nt?`c@%fcv{GDBf0;=Y_3|XXspPXM9RKFu*oWgF6%{S9tQR +36jMD2Sdi7zUF=f?~V|jF5_?0T|Pk5_U#XE!Bn9u+Ba*-gryvK3GciJt^~xHd5gn>EZFBEr4*jn0&k+ +-MHu8=Q?4(OSoq4ppsSNz7yG+sNVc3Cc29X~Fw2}xS6d|wuyVabp8@Y8eY3zJl~#(>3 +WRAs8X)Ynumu7)mhqa=WeD1KLi;u{l?4h!Bh4itu0(jlJL0whM00F>~#$1apMQ?C)isW8L@FVJQ%T7Zxg)i8C;8s2NGvJ?m5x$#Aa +XEaFKTl8?ZrqDVxA#7bOuG;#p|T}RNWMO`c-Xcv&+hHxU>dF`YoYU=#IK3kV}f|mTU`@=`>86IR4>)KVPU9DEWBZ%r#A-7@?0;P+T3@Mt@tkgWf} +k0+Y)*&H=rveI(Hk`n+@ph3BKbXynKRxliMeDTHSIp1$Qu4Q`mLt`CCMGaQnL)*h;yo%w4MBu2cxG8m +EBM4DUpWyr?o*lJNhFdRxb<%G8f(--m+6QzA+x~FpWJE&yjNI#-+}Dyt7Zqy-; +&__%KXlnp5s1iXxIl>nf_o=5G~jKHymkp}(E*VKly)e*4XiGjw23oS&VYsi&wp%qR7wDh49~$V +-d^Y|se$H{&sCCz+Qy>eBb;Z|V7{w-@ej**;t`6mh9^n=gQ!_`;UgecYN( +?yX^gsm&QA!FS7KC&Cjcq-Wcq&B6(Cn^1D6FO9K5`P6!upV_zXb%2?IhPWfIAq5i94d4MsbfbuVdV6#MK5B-u#HXkhHO?<~bx(ykL&l6BvG-*+cPQN +(~oyRQ{$XH(UbD1}CU`upWz{`eZKP_0Dh!O(JJ(LlW67E5R}@%6DJ4M|ziw0k4!t;^uH-@szNhZGsb$~xj_OOOp8Xf1dh#MFz^=Qc?LfP{Gv(GjL(qxv(?q?!+H) ++BJ?LGfoVX=m>an$h9)EDNsv?FG2MiQbC^uFGEW*aGs?(7 +O?qusdC*XLKQL*0H6wmBRUhI8@ScOAtDsR-;KaIvVSKChN00iRR759dYD_pnvmDdPK`nR&=t4>l)*u< +Pb)a?n|;$HUU>4QO6#VydwUODPNRWCub@D^7q0cJNdt(*0MiPO9KQH0000807gYaR15F-q*DR_0KWzR +03HAU0B~t=FJE?LZe(wAFK~HhZDnqBb1!ggb!TaAE^v9RR85cCFc7`xSB$v8N;IV$dWgh2x|Cn3b2?47pZ*&WbJN_UzB$^6cSl4FrX{$h8 +nmfy)8PHOdWHqYqJvkfBaRq9DNy<(Sy)6eR*-O2Ctlk3cv3G*t1fHY`dL#xQ}0LW54RgkOcyHeDL9(JWw2&hWUD{}G;}o%>=V*ep$V*ALsSe=!C4}K%@cF}VF#H4$r4^xZu11peE9qe +TBluT2p-lN+$2^&7_%mF@;VfFL;@kOT7MT{iM|SIaH}l2!aTJ +|Fw%+M_%V;$X-$Xjq4d-Nfme2}gaGq!E0Mu+^b0Nz(7v_Dc-d2htk2%TkDzIalyP(m0BSi)|&HeZ{^2 +AI{vs_3G`QtX0sEqP!R2Gf9HRc+66AK8X6tWNVr46oH!urMD-Fy2F_<+to+hje6adr|r_ry-#UR|a7H +a6MjLiHay;XCnM$HFp268gibvq?r?s{hvl^*IgvbiI4xKm1j^( +0|XQR000O8MnywZcEjowOauS`01N;CAOHXWaA|NaUv_0~WN&gWaCv8KWo~qHFLGsPWq5CJbS`jtjaE& +M+cprr>sJiC2TE&Ou=mh|0B5n?x@dqj3D(<_>>9F7+idj(lHSBckl)@Jl9IKOoU9LtmYk0_Zytvn31h$#F +saz`T=58gUHoSEKfHgOe_YHBtR2^hNHOOCY4Ai=7E&W_Z!e1s{|C3i)ix>JYN5h1(Z_0QTVz?0my++r +S8G7!=%PqfWpa?ksob2Mdr3TDYPX5j*@0{H@w~^ydcJsk_&kRhCJ!-mDN^oB7BA!F-^=B4yj-nV;Qjv +oY4NW=`;Y4zMk~y%L!4T@4p*n5+G|4u*1hNR&a!K +1+Xwdt?2p9|hDMVfe3vipQn9FCHy~gIRMUGPNT{lNmaK0`R$#a(;seZBu66<9ZWE6sGN%FIk0*Ku7SR +qd+ClU>6rq;>8DR-L|irWmx#U&j^+5rm~AlZx=(;Fz!S3?a>@>2Q@gvLtjAunnp3%cpe#_!0$%9-yqt +1T*K?aE$AL_Dhk#gkPPKIM5uPyn+TO#71*d3uJa^Y3J7R62AD^-W4@OoNnWO=iD8nMLcE=UJ)GKhAii +;qf$Dp;r9+hy}2$BhU}!a?kp)5g`tHn~v<1YEh;f+2CUmbj9br(Kw38sl4_cv7^-yZm+SNoKT6-KWkY8i%!}<1nc7UTin)AFqqm@kU@` +Y2BCCwb_oZSi+x`jW-Fetx`p`J^MG(~q}|(I5(n{ugix*SmHAB13!4&jVLkE2K~6 +Wk{V*Mw8`M2&L*sjfF9HwrhCAwUYi!%Sa|v#39k=E&a%(HWKk)eA#@MXd%K%G200eR`a!hK1g;l-HBS +tR@r^e=Za*cPh=IZ@SGBtDBV)6b5P)h>@6aWAK2mnS!LsadwN&0{U000vV0018V003}la4%nWWo~3|a +xZXsXKiI}baO9rV_|M?WpXZXdDT`+Z`?KzzVEM?8ZdSj*eY%gJuK<~PV6EDf+X-dr=pO!(yYXoA_bDN +y(rq>-WgJ_eI#g))k&Hczxn1tU0htufSzVw)~LNpTrRXm8-#x!J+mNvsH6iWw^rCa$huJ&JVAiP5?^2 +|92U^UNnm4Y1SNFYiV|IjpyVUMXF(!A`)2#!4;asO;=;lNkI2k!zK)CCw#B81 +#%k1sxfx0s8T+|7>Ugi!jqV|d0nxmC#V6~2TB916a+&ck*Ot&_Tp;9Dgu;7enXd?-HIqm5|ksNkC2bB +-TaktLCj_l#A5GUgE|E`!Q$Q8kr}W_)sq9)t#2pkRQNd1fiW?eGxZp0F5nottKFWm)+(yz5`#_0`qSK +fbmp-(}hE|TZLp-uv4OR*H;}eQ<$L!)YhU7rt3IA7)g4rBqi=D)2afteKN(dV~DOGUBlld_9z!p(Y|^I5lqie7wR%kJ&GiXI!4^ZxjWrEgzhBVjie*Wf7A8;A +<%p1u%pbc(=^FAIEppQ|Y7bdwlnuMBwU(wE2#)002(uJ%4z6q$$urxpnA0L$+!}OxPMgTIBqrx&0$&` +)HA7=R`0~mU6^bG`i;74L3{Z9>>_Al*`Effer!HL*K$8VhAJy&Zs1_NcfUPk!G2@jT*wBT{$=CJ6*`FB>! +6L@$K89f9F7U?UaO+D=OG)Q+?>fk`;FM*npb9JITkgS}EwU`3w_&qo83PZf`g(@{h;bJ+M$(Ulr9Dl| +;Xwk=6t%;>qM*}ogFA1XKJ@=~+NLXf+}eY>?#2IY5+~WzOdGfN5d*Qoeih0cT@KT$sg7TZBfPzmDsZg +oFP%Cmt!bOZ$zI{hWSlhmiA(cJ*fZBom@Rw}xu;!0_<`+`lY2PK>O7e*r#}=H8{7R*OoDa@=D%DzxGY +{>7H{To35zooO~Y?en$nvVHKyt6)QCtpBR#&__*u^W0Z>Z=1QY-O00;m^MMG4S@ii=71pojR5&!@p00 +01RX>c!Jc4cm4Z*nhid1q~9Zgg`mb8u*BZg^#QbS`jt-B;Ug<2Dd|*H;h*0!e{ao6QzQVIU7_;-CR?D +dKEfz%c}_G`88&lqyn*jiUYb4oQi+*iIbuWld(6%bmgY(*7INSY<3hQ$xm$>xN^8VWfy81t+^Ers8Nij>S5*YA-vFiNs~Q?SK +SjmSm)N={EszW;D~a{7sU-4L||@^j@jQ9xHiA_2(xm&c#(A10B7;VeN9VMKnMTw3|f^~LyZGS=ov3W_ +q0HU}66kFD~oP(*H|=go_3W!zUNCzV8GDafuUlDIfn(FEfGwcalbUT&CFJ=L5RQm?R(s@A+@1tf|+gH +^S`kFJ9&UoJK{pFXN@#XymIU~OBdr?GISz2-!jmQxy;4l7YiFY&pZT!&DO +gNRYQZ(_JER8w30%=Cg;1%Og4G}kZdwn}5YLlDMdcOW|OkLeR{#R4mnAbONg5KfW9aBA{=;(5pC4mcl +I5N6}suIpgT1zymlZJ?b=wMrbSmu!6_+Nk9aHTLOMJWOad|pLGKl(G8*NH +)W2`UJkn9Z$*^JRK6BWIW*8!o>AGL}na5O6}>9b&84f&{)7vV^O;5MCyAY082EVh}>yn-?bWV +}wmL_6@Ac&41Cq_%4aF{oQFVhbVaH{ud6H7aWci +PqcbEaRn!Cx%|RMigAvx{3i&f6f57I9)796MlJ$tJk&9tBpw<|g&_F2e3sDlsb~SMvSnVOX%Y^$ob>7 +Uv?OeG$noQvQDAxRjIPNMZT(5J1d!|x_)*Cjf>}q0xiA?DU2!&CKHjNeSer_0!b+n2;7Vz9wV?jhTG1yK^repByS3VU#j^Jez+q?QWG6XN=vR>B +Brx2Ldqc0Lz69$KO}zid&Wdy@_srC3G&L<8TH@P{)|Qo$T>Ftz(3Z)r>A4TH5S`3|2?4Jz3zew +RJg^4io!a#SP1><*^WPIpcsR1*|?q23b&P2J7s@L`>^=(T0$%Jj-OLIFmnK2r{wE|+eXu>_?jGtm%Iz +v4&zLks@`5>rGAT8O8#Zeq=AYE?4&tx9 +5+KdWYG+#k{^>G!XymJ>%Qx;|>3<58BV36D^LpTMp8>q4B%=_KxSUR{l=VUCsHxLa2_qhgU&$DXL4rT +-)B_zoovW3o^f&QuBSs`LfGDys}4ClbzbU*{?XB?cwFO!L~M)+~pRz)aKr>3eCX@^mO*{98%^1VpneB +n~qfM?iYdIx_2O{T36%H`xj740|XQR000O8MnywZ3yPBOpauW{aTovq9RL6TaA|NaUv_0~WN&gWaCv8 +KWo~qHFLQKxY-KKRd6iggZ`(Ey{_bBv#3*EMuHiUsQW)rmwCT12TURvMhrtLGS)yz%vZzsX9HZ!d`|k +K6QZIgq8q}umx#xJtM<-HeXJWGtq6NoVB4?Txno{`uplFSnma$^}WNj +96BVduK51UMl#S6s#DBPc%=s7*|P1{z!Ae)&&=m+~HtEZtt$Y++2UV3Ge>?`sudU>ysOrMw?8MbyO5A +UlN{@C@R9|ZKSKzx2&TjWFOgRbz{7Xs$g}?Qbaqn(6{){So$RAVjX2(T(zWCqHonzo0t +NabkkP4+UzBrrdOB+1Vxk6ts +ap)TGO%@I=Ir1L3YWgU(=Brj65@5s=VUWZUfW%zT=z$% +*$A?`i5A4;Z2j`8(>uB*}slnx3A{IjFCs0|(nQ0i?T>0F?q=KMV;V>mtixgEP2a-PfS=ey!D@JmaYey +0kmL*rvF8BFlb`HTIdOv7811VMuap$x9mKiuQnhyXqM2gEcfj0v{waheYP+T0Nm{0D>Ph?7dR)ceYFj +a$Ii(gd#NqO1hbooxk&eym%qUT^YBo +RL@BvGNSHU|>N|J#O^XkC$*`E5>mV +31}fB@`dMg*m6^FaJBh1-AAx!Lp$%TY2#g}V!Lch6{~yxW}5RL7?Fwn!-4lh`wmb_33ATz6%|YdSSB~ +~C{J8yoR8YR9gJ_vG*`&`dB;shK{N*`@T1EyY&IMOwooVzn?YSfdurc37br``g7=;)Q8ym10`7}WqpE +U^Zo#wU0Fx>K_BC>TB4N%?rktEe$z%j4fMb-?m(B78q^Hhv11=(CIX%XD@v^DDjQ51u&Sw|;QMFjkj& +Z(0PX7s7kzCB~+x?;=)|H9H1*CB_-rK$Lu1<=lV!;^@_wt7$UA|-$O4u44BfNSE;hN|C7~#7^g!`IT< +vrO~$)S79nFlNMCbt7run>Gg)uRS+20JPgvo +RH`R#NxHFf_0i3~kI|p6`s|KpcGb-Yi=|8JO)apsoS2v++LM|A?2ECVx4t~>6urnc$tqS;JKt-bfkMH +Vq*g5W!*w6kq547Lf^wb>V1Il+Y~XCGuH&XHoYyBk+(ip#Qn7?K*?p75wp9g}*r2+Rrs*`&xx63l!Rw +aNO#f;xUU!Tp{@q@DwaD738n&uY1A0RT{NcJo#!6{!dh85dOE7vsfU-0?N?B_s=GfWrt#;gAYw?e!aK +aUE(5%O;?ZQ3By6AU|W@ZyPQmAH|(;d!_2Ir|(Fq@=K#D;1dtOsj2S*!8;>Y#1U*!>ydPgF!%28ZPMa +VhZeZf=vo!vn74!vk4USOp>l{I7TS`pM@!LVJS-ee+VPqF=G)O1)8O1yG2}+@OeKM}apH$v5i-#e-BX +J$E#P+T;lAmb83knreqE$!aLh`k7E{ZUUWXOeMP)KoR+ggvo +j1EIBYQTL^O+ub^j_Q|!Bf-N?ZD(8$oQ&DP8nh-oWgYfN3^fCFI;!7XnDml3m8#o-}i+25r-W;LI72o +QEYh_u2Dyi5RSFTN4y1>_WV{*3wPyEXzg-)C3$wc{b6D{d$Rh5**#@U>7)Cd^#eG-}gA$^XsO+q0_b# +(9j4^T@31QY-O00;m^MMG5h7L*uo2LJ&77XSbq0001RX>c!Jc4cm4Z*nhid1q~9Zgg`mbZ={AZZ2?nt +yoKM<2Vw&>sJuz1MMA;(A|eU80ZG_>PchMNf3KxFlaO!TB2pHB~lQnB*tRrw@(#G*`iEkF5^RNQXh-; +`0AmYot-5FKJ~t+xHLL7YR9GB`ZM?>cJG2|kr9g_W?yqnn9PaUa-t3VVomNI>eS)qnX31VD7I!!F1w% +PlB{G}lhqOxS%Q)i)7B-Q&YhvGft$!Da;GGBO6Gh+bX^KF(Y)Mv9DdgA27upx95$rNIqV?pu=lbRC3 +jDRhHqmfABA{9DXVKP^9cf{!9y<;zfz}NUxBpY&%Dumay-;<(>4+x9`#?XgcN4AvL?*PzgSb~o+a-SR6RRYYc$CR~lY-E;$Vpwc1kD(rSz8OjC*;qI3 +$|ut@)_gbzT-gnEA}_Z?YoxrSVjSP?R;5DiDR)k-`1tzju-QF5cCjuEGSNzQrQyJ$u#Ua5cjy2Lsmj2 +)Qzjx1`P3E)ew;3Z4`ijKF)6c@?wTVc4aS%zthJLz#Jxz-u0`Qdm?a@SUCt5mn|Hj;-{W~OCED0z_8+e_{t7n$j~r`t%-97lW +iz^~ELU%2EAwx)xTQpunDhIWYVuwUCSI}4EeT7lUL{pXm3Wg-_1&kV_+(C3hLL~XnXILb=FH1@D+o_I +=lF4=FtcW{w+jrVHjAn%wYLCy=kvhiB^3NSJFcjlDx%s=y8`_Zv@*|Z$X+tZW9K0RS!WyA|WeV?A}@u +w%>m-(yE#`$T@vfT?bZVhg#Y6!tvKr7s*q=mHd5|L+K0C?mj4V38WWB~NWXlpMRlafY+_|-z}EjAX)q^aA4+GQF3=ywVHStq$Llbg}T!bap`$Cm!9e!YfDzN_y6yunF`wczlUV?a$Ik*)9|-YNw%tdJ$@{=-X`oN +V?xs=%z}Jk|Lq2#Q?*qT!6cWP$a1#Tj-&i5Cz&)F)4}548)QOmuwBGlDw+u$T5kHoF;0S9iFd)TvCQ| +v@2QFDL!Za#PANU(<1cTNYbI)@Oc*+j?oJE1ZlxofT_S5Gg3jFH()cgn(QQ&E0o~tgod@~%aJ)Oh5rg +_C8sfD<_ljz#&cq!Fhq8~xdHyiO9lc-q;ynx}%h-^2+QoRm=ms=JMHa*nvZu;S+sL-xqk;=;fP-SuU= +zIuloy7tlG(%++l1ywJd#NO*>G->J%=-)6$D@B)F9+%!Qyz|8)XP +X>MmOaCz;$YqK85k>~fGpW;}u0>G|7S5;TvWXtwgJK>!Ojg~PSML0yra9v64kN^V!N08UMpWRiz?8ucK7y^a`*SIUcBsocb~t0^`A?6d%gd&^y>59zkc!YCvSgt_lx1YbH;2>opH7&+u#1+s+haCC4BbN +yEmoW{mrlc@jw2jfA~-e^RrK1r1J7j`Ptq7@!@}v_+S3rFaGvdAO0;x%%xSpr*GbW??kR#|c4||nxkv1#HhL8I>2%$n@;Ev@BA%mH$a)f=NO4WQUe+Sb#O~qReNSbN4o~b{dzF~lV +-8oI@}R~S=$Z&xGnAl>SB?`;T%qz}?xi>n56w?`^zWai#d8uLdR3g!LKh-P<%~f*ynj +Q0p-nAaIMp-8PnY9$ +)lD^e>_Y9&%Dky?q=N~Bhz)JLQ~qNkxEH4&vIA~g}ECgQq65ApEM%2zfr7O9CS<0Kw@hMI`d_ah@Do< +y7*K_}TiN$Vs!FtQ@!CWb!NY>9X*CS^E1$=CHybE6ly+5awfpo=|y(nYJ9{teh~@+e+Z|;Gw)1=n{ +qID1rB4fXdsHtI#MV?NEuJdzDPn6{fBt<>F_`RNp^XH%4UL`*$mOsPx;Kpqc#E{zm)t+Mqo{?UA5GJU +!m^R%?_X=LzcFuTdgaiCBp^2s$L_AgIqkjcx=*UW`N}B9cTTB6>U7rFWS|iC8Q_^z`=Vxm)&(XYZ*jX +TWpfsq#+com#}xW44obHrO_P%G;xR_TEkHZhND)2SLk@XTh_2Jd|(WVBRfMBFM&``PiQE6!NqeJXJh= +>@ZME(80%!oy;60b1>nw2OcTS!J8+{r|aFZJ@72zA)BYSc>L1oMsCiHn4O}XeBcc74j*X0iFjz{lRnW +Ny@bKS7Azi$9;DX8UOGK^Gtk08njlcOA@J$I2STiPC_(h38RGU9ie%c;*k}OFRo@(*%zCC(fwnz7P*So9p3m%qh&i6KJq +pfGDJ^I(=_pd$nPWx2p_z`l+L3tz56z$Op@3PyVy>i+9#dlfS&XCg?L8PRQU_K3jD)*g81?(KnRg*o&!RtT(aLdc=h$~!Fh8ofLRwB +oVESc&PC7oyvtxYvpuu;6E~kFdpIQvBIrbrFV9>yFet@^11Ft1N +C)QJj1Dht7g8helFLhAKLZx!zkxrc6FV@rLBG}r!s2qJC-~HM>daD-#M#B2Mvr`ibEUtsEfL0hHAK6r +`3u(?fA~QXuY5M@zZPSr#AH&wdDPn;d154neFB3X9dHh^%~50Cs>WP$8as0;eKu~TyX}Dym4SKoFi{x +oq^g^K@X$ao?ipY%uyLN!xTT9gEP)7#bx9(&OQ;>kx+2PVL)|_RylGDJH)HPpEnr1mQuxM +Zn8mM1yJEGz8qY0Z+qxTuOYvBB(POa7!GhBTyJe(uiwI9{XwT$YrItRC%-mb1wU8CUcRF_V2&8aV!sD +WBqH%qH?bz8l8b&Y=1oFnzcS`F0vE^cIKS**G=oh1yH*J3YzQ`b2ICuf;~nzeO)d)3$1V+M{EUvyG#& +Q)ErJe#Ju&n#&j_%*02sY~0$Yn%9_ANShKK5MnE%DKi(1LJ7OHESvLXTol?k~S^+ro*B+HEyQG0mId!VG`g>%LMLCaC19hHg&e3O1qpzR(dRx>#Ri_3X+HT<(?bcS(8mJ` +-ReO!jXEu#r!?v>>b)39beA4fvS#wFdLOL~@{T%OdjTyA;?n=s|ndDd~xb2&B8Z|c&q;&ceO)sH4~n$Y6i7%W~B@| +(_{oA#nD=wf9Hiw3Uh+JZ)JdAM}u-$GK(QZ%q=pe|81{mtE?_J}Qd4ID#$i<=v+{ZPg|4VU(kt!ReJ8 +8uM9Q*|J3Rlig9m#}SG%W&x;Vyjs>i_^f7X4|cfz(ecs2s-G3a>mxKPlt1~V4SP-sG}yPZDc;`V2EkY +8n|oVacbb9f!b-BGY(f6y&`FrveDMa`ss}7eP_1v6cxSUhhs;*J&qJ6m>X$+d?+=eUf8m +OG7?jM^|19kRn&OBV($Z$!!8Lp@w%9>^wi=R@QQP-j_eWkcfUB_@O%DBw1psu7Zd#kQx25O34-}d^pP +s6op##a5_Iy1IvGOH%DYBK9grVQ7n32vI;HWS=5!7UEgu8g~WWY6l->OAzr=PZ5D?**;xpp0=c7EMQI +y`nv?8eOS0rv{#015XVMRRg0LuB5K4E}fvNPEghAGPpT4aMO?L>{@M@oaO4})#+(Xa}G|YouN53P#41 +0c@12h2Cf>oX+Cw*t6Lsz)|?txG)r62KwbA&T@6-lT82{tvt~($Xg!Q({?HN~x|V594b;(C56%2>OwL +0CL(xF}&^bSJ>W5CPuXDE=y*qX7Gw@Vb94?*4>lrkmsM$QD2Byh578&h#ddwtM*C=vYD$db6U0bYN`E +X&>v1?oStBJaE1Rl0LRp%9$O1PT6JFmbJ%T-{ftd5k`Uw+zI!_)uw*}J$t +dzU*zsc!A>=#G9RYmJ32&=tBvPiTZ@DEwTRw@n`ueha^a-@*?<$6ELu{0@Exzk?q@fpzdZ_(A7b;23T +13x%I+f%Z6{0h*xw65RG{l|~)ZLpLaw*p_R3>-mo7JD%^Xe205}3y{MCTd*tqpgAnK77K#GZt!pL0|> +Ai{2Tlm{2Tlm{5$+R{5$;M9XiOWQwqRsU0aA!0`Bka0qa3oxkqacQUy0-Pohu2C>EHAJ*kDj=K^U2m; +z}8?&8}95K2ms&w;YAk*bQ49(VjUX7Nx8fH)TDf=%QZ<$BusN=*NzJ?C8gie(dPSj(+Uu$BusN=*NzJ?C8gie(dPS +j(*IITU&?0Pd|3_V@E%B^kYXqcJyOMKX&wEw}3op8$@V=QZh%kb#zb$T5)^I1tj(#- +NQFj&!+>U<51wem*x&u$QaGh=zT5QRJ(967-SMl&>2EhkfW1+DY8f&4k78+}zu@)L@p|KVkYoW0gX{? +22T4<&P9M&Rmq6HA1U&sNMzs571Jj2N|oIJzHGn_ob$upch!^u-%Pk}wd$y00({Lt_4Q}({YZWNe~2Z +`tzK-`5I575X{qn^R!PtpOy;~7yN;FSjk=owd@apf6T9`Kb18{-*Po?+!_7!Rb)NB9B%`3Qf6A2gE(? +BW?ug|e*U*HFGsaknz=R*H#wi~z#BjrOD~B{K)c$bzmxeEHKg&;`0ecjyU?&|q!SCRA@H_Y&{N%1U_`%zh1^xy81^xy81^ +xy81%4noeJ|B1{2qQ_CIvuM@$h^2L7bEo{uTZeesER=oK;!jU*QLlQ#SZF_&4}B_&4}B_yH_&1KoZH; +NRij;iuBe4*w4S4nN?Qa=?GUf53mh56G(=@E`C4$tfrNC;UvM?Ljoipc04eb0g(pKnRGsjj@SpI5z)C0lC;TV;prulPKfoX02R{XJw^8^5{2;1Qgg?R`;Rj=tBK#5l +2tTN+l;BVBC-}i(0sUeb0BUCtnSFP}`@UQT%@UQTLX4+QxSNJ#hH~2UBH~2UBH~2UB4>%7v4>%7v4>%7v58) +)`6aEwa6aEwa6aL=LVeh{+jjqrgdO{^OLjhIo{l}(JURZcx;e~}47G79*0WjB2#qCtwPQ~q1+)l;qRN +PL*?Nr=O#qCtwPQ~q1+)l;qRNPL*fqV@+6}MAyI~BK6aXS^aQ*oeU8-*V@V0#?U08LP$sokC0-KpK3+ +T9O$x*S8;snPuei?&mxJ5{<P>u?%4E=jVFlQW*`n$cOKlYUaq$FtrzXJ0gPeFb~DtY&Tb$HN@Sf({X5jexzR +W;hhHKS(i(RjM_I(B(hq}TH9GTz43`|a4eg>ZE8VBX4R!uqm(hsseyTr~MzyAh&z7c$W2h?>ck_N8N> +W#A3MtW@Nzmtvj9o5S5&c^0@E9`<>zkSvP#gO&b+43;z%weI{@wxwy_nPVSl#K +L+8%wvGJVY!ydZwr!G+EA`E1+e7ea8sGGhr`7J-8{CmLow=1O^e@2kWBG(ViZ`dXnoQvl7&wQ7HO=By +-B7hupGOzA23&oN}Ss4$7v0H?QyoSgI)T;%{{Ep!7pu~ +=*0eQ!=AG?5G3m?_(%vu)sc&BhVLwo43K?~SeZRwSOCGq(f%fruxYV#VeH(llkrL#{=|raQL}c$2LA8^UmlJfqIXQYfMQG?m +Lg+k13XvnE^As^g&JxdXi7^s`xYH?LKBGuJ@-dE^PC5Jo-rcAq$x*~9vQ1|dPyb{vd_NfE{fvkaQgy+ +KG$NxfxJz1*m__9MI4BN_B(NYhh>S*iAY!k4fu2;Kh`Ev&gd>FL}H|zk#a^UXIw;Z5m`Tx0gJ16Bu +$z)?jmu>i&D&ZAigLvV38IE3E3Zr|H;8}JYhS@=6Nyq&KrYd6Irn+QerW{9E6Q(h*Ut5(k4oqj7aTK+ +9U%aQQG7#nL-gTM37H@nxr&|{+gsTiP9t~O`_3KxI_pSsJs(J#8Bh~dv{3EPV5ZY +3WqVCm>04XAX9)W1;`X2O93*M5t%$^k3`=p5`*gor8P1+Z$E>0IGxN=fPBJsN(^&B7P;ZfESAY;mbol +*I#{^fF=Y{9KqnrA`DCu(EXR~X*bWCpwC~s@2$?@R0_P*9oaDK14qBuKa42F*kW@JR$-?yqd`19F(;pKy-^z_UOwjdn3FRN$MK;P; +WNk4lapf%*Q=&cC!Q60h^K$rCF14e!f`s}L}<)qzM18)viH4?9u?0Dl^6uULdE;24o0z-&kU?2u# +*j{*dbeA>a{=n&?k_uEF1cRT_yeX_BKoB0>S +pG4w9+R1(~hP*Os~0ia2XtTABOWqt~toVq3(i+bTp3mN~^u{PF{)Y*acBGSD^^ksU0E3$ +muLi37TX>~DK)oF;KL#6_sfa(0wAjwcTBoQT8)@dWXR6kI^?ElNxzCQ3{sMuhp8W1I*RIb@Vw&JvS}$ +r6)UUG{BeTXrU7+hiqr5_Gae4HDFs(hG;~t^f7{EF70DRu-?e55C0)5rpeYxP`0r{^)F;D)hOJ8efda +xFMh=6GB_pdMI*So*lX;&w-1JunOB|I1{nru_6kGgxBWeT%|9PWjKVb$flp=FR6$+iE#8&|3(+_tk7L +N0eXqexlS1x;pk`D;piLL_K0|@cu4x_hpmlf2|_r|h;STdF{f<)&%Wyjr)>UDPAkqsWbFDE)76yRmdfb}((o*|im;cKom1GBnRw#9f2T<3>Y4LoL`3QV~f=+2Q(H>HZ)K&P2yW`4 +2btZQ+a`8LO>%gw+ct+UK5E&DoL^Xtn1z_#+vz;W=@T*nO5leU?r;%Ch|^SP=VGYAvw}qWd@Gc2xfGEVD+80^;Fk716BOZPN6ofq%aE{2JpS>z|lbMs9~O}1{KH* +X{K3*7+#zOj{2c_VuBW$%Qe3q2d=Me_GaJ^&M;}FnFeUqeVqXLSyZALEF6w|eKOe?k{yDpawoi1skE@hnGu~DOw3P9PU35`S3<{DBwZc5yAfY5Mhk{# +!BxsJ(sZ0b7HHATdZtgb1Zc52``165|m#hH3m5i&DHu8c}-8GXI)4~9!~ybPFib7_{AML8EY0~dA84= +qzdZRB`a_3iaWGHg_rpLOU}md#HIK(E4Te%7Ii6OGUrtJ8Kv|uk-BiOJwb&Yg_)>~Lr1S}kjy0#fOYCUK_nKOp%O0L8;2Xb@H +KyB#cMir&;BiHsE+T>}9Ld}G-QJE<-<*ZafEYCt_?MB&8IjfnFN)WbP$_zZzH3hb`ym?6D+M+)Rwv3; +IHath5Th8kpH@lHr$MNwpIopr=RSAA}O}~vCZ?k!~Fn-y#Fps3eK>TkZ&%iQ-s^MW-j)n;u@P(D4 +>kG-!*5o@me4>*$+X9X(~A#W?nQjj&_p_z0tF;^b@#G8m!l(H!2n7K+>RQ|&2D_;4$^7+Y^H +9-}TDeKJRs_Cqn$5m5YHN{m^RG}Ib?k;7U32vI;rU~kxX-*aM*ru4ruJ7!#{JZ92pEb3s^vbT%E5~e` +L-Tv6Xizyd>tSXyXe)-5LQu+k<$4);SRIbZCO6P=#o0S;D!csSCjsBx-ElqRK~@)tejzj^wbXYcx~{H~ +SjUH=Js$BDA#ShMXwpn#(d;AlezxaF`MDqEBiTF#U$Iti_X-@<#{A&UKTEM?n&b=+?-hiwc-6V)29D;NQ7i{I` +z;fMV<+{gmS7=2WqeV9zDq#9UVEBSdM`xZzDWl~!#0GhV^KlD0*rGYl%FT!c9^7VRJRFZ(@WD2Ucthk +{Q84zTh-N(t5ZIy_&w>E9+;&^8AuZRC76h;b0c=44Tj_{}To!W4wYcT3yUo#1Qs$!Ea#3!%ld~1hD&+ +ykZMhG(T-MosjMT?96!?daA?k@Pn%Gh_m<|ey->|HN$aiql9xo=MiJ +^j55#lmuHZ9t{gpAjvk2?&k*wrG0zb5D5vz??Rjn;JtNEq__=@bTuXbd#XZ6;o`K~72Y7~;kMPU2lm| +%S0Sb72Cp_cMBlF__%X+BT$d7957>*Be3^f +aZf@G}HGE$Ky)f+4sv1XqUO$`D)`f-6ICWeBbe!IdGnG6YwK;K~qO8G@x|njO@H_Y&{0@FD8H*HRTBIOepYTJ!JpyJ@MrkBVl5f|3_sVCCBt9fM@f4r@E7fwvi(h--k*np3KtV0yDYDWPPrrC@EM^^&p^c)%6QNLNxlnT~ULEqFjh+%jyaN=Eu1?mcjiT2cnNMf +s787yLMg>`qs!$f5&I*!U0NKe2PToM#PMT1NpST1~8<_76%r`2AUDsOBse=L!=ibVJBWaWf!Qvkv?hg +?62Z;Lv2;RX*Pxw#xPx!fOO(*=Q0ZjtgJK+!T2lxa0T*m@TX%zkdKR2@}!XM#}@N-FI(k~{ +|f&K{|Y~-=52)^b)nk^{|5gC{|5gC{|5gC{{iO#=K<#dCuqg(fb$SeQa<57;XmO&;XmO&L4tF6yZ4UU +=mrJ*=p+^lI9HAP0_Otf0_Otf0_Otf0w*=LQ)4?dwo_v}HMUb@7%>PtHMUb@J2kdbV>>mrQ)4?dwo_v +}HMUb@J2kdbV>>mrQ)4?d1}dXb_;Sf|Q#A_>B)jK)W^!b6hHuLz(B)tnb^pdXa0u{PGkN +fm|CeIILZxv>)XHD6ARam2XCvz7(y%U2)=lWjkCGnm%+$HrF`=HK8yQimHGo&ukV|Ut=_zt +5HQaW-7Wdsu4$Tar3I+@O6U2SF4(J7A@tv=!cf6gJ&q{%Bxmqb84Di_4fD)ksl|WdDWAxydIk4sZwZF +r2m>{*~T$!-t??GZ%%>l%S6K~a($b~^=+Jd|alQ6uZ(-sF(|3pL+T$rtj*`#a@RXTQ9>K1hE|o@_I-DU=`%35o9WcFL*tAz8KkAN3qZn$#O)+LW~zy6i8_jTNKDaN5 +S()@)`ve9pz)>Rdidl2Z&BVYA19)Bq=|VZ-(DU5nSmH;-wb&eQZ>Kp=|Dw$ink`XtIcP9>c7NB^pF3 +4ND=5ZJ7F3OmY*HcuypdBli-8miGTB +C?I%BzDc?sH=-cbZSBQmhbfj>-6wET;Q&jSp$Ntlx`_am0YplyCJq9WZ1B#c$Vf%Kf97~2ELSOi>k^m +B%AVmzlk@E~S(#tX^?;!8BKV=t&t(VZ?BDv`ef0^g{}S+M>Hh|dLn(Zi0r;1-?c0VG(c$c!QW*dEAd6 +j6X)(1~6IZv`H!*OmNE8ol8(X8eqrLtXQ(+Qb>S&p^G|A3ChNR#3f=_w(vr@9X2uCB7<=je65<#}sYd +RJ-Z)uG7s+ZKs#oPPNgxd9&z>s$wOHy@DtF)FbM>-m@#npUfnA}=VxNP}n<-+yg +HgVTnCK=+s0lZbHCjZ&3O^R@fp!f!zg_|Gul!K2@dz_0bzQphw%YoC2l$8Xr95^>wkD=h^Jj5g%FG@9@tV&J}md_%*=x7 +0@+ZJVF=Zxl9xa$23a8mR!D)21<6<-V? +o5*FlW)Gd@-8F(v0Oxl3Bu0f2%?6T~1&`aKiuOS;_(7pnKtUv +mCR0JjM&iVZ=+2C}=?yGoEKeO-RL08Nk#n2T}HG7l=D~eaZc{fS{_AG)YJ>oE8#|rH{hve)aX9wC|PL +TmQxg0pLU(_C~fjR#_rB2wNwYBXoOI%s+62!@UkorO9uq|#4)InES^(L0PvIO46Q<=;8JkWV7BK?+4m +c>Y+#q>dcu)1YGfW;UaMOjg#UZTjmV0N&rgk`CVVjGd$YmXBu@1WWya}u`9sBxTN6oG9f0$VNj1l4ldWrl}K&!~(7FO4cl@3ulUx{QSKw6c>YvRRd88%5)_?T;GK +(C=8I8yKTH%8@J_+n))1)+Mfq(}+e?81lqmTHR+&HQyZ-tS-gfT7}r!p+|(;B*jRu$uIb2V|(MGaKULM~?7yqFs$-8raOM%x|f7ne<=rx}y3;9+c;rd< +i$uz8j0XwC^p9&O=Q-4o5G^15kNW#r8@Em`OW)K9}Hs%)fflr(VF{p+e4n(eCAnb(=-s%frya^}IgEt +4|rzVd1!g|p@zJ<_8F+K=-GD;?HtpvQgbRAS_irfY +62q6LWY|i-3_dIv{e`Y&h`sC6H@CY)8>#31B5AtAup$H(84+GX`Isx#>7<*0UI&?IGkBs(+tMMRR`T< +P8$*_Dgt|Uk1m`(T*@#I^EX8!rjqkK%FsyX6-LBp%=($jH%`NgVbk^9ZU&g8l0jFcWImape)Iy!Z$Y- +9tD~B<;Uw;u{n&R4AJX6oSV814IGxWnoAM0W*l`i*D?dWy0#fOt`H8r`f1Mbp; +HZuH0QABuD>m%tJZz=-h02w{Sd%BMIDZ)SU}B~kp)kCbk8nl=sTzX=O)TNI4(Ggcu;*3BnD~G{=+J}M +z)0#gMCFKXN?B?ifzXx`#WNi#3W*}#GvoSWQoDDVO#Q%9du5bA_`s5h-gF?VSBI}5t(#@DoatQ(;nTk +i>AMwwe2Cw3^^*Wr`THMHpQN@kUdeh7-S_K-a +~5mY`hYdn$6Jq;d-IVDEcpeI^)0;#n}_e6<_6}yX+r`B;-X{JFA^wo+hPm!%@Wyj24Sfh4*jE?o@9Gr +Ik`dgj)?3Cl`C{%H|`MT5Br{H6AYT$g`>+9R(+>~>hLNMD<8)f%7S?^k+DN)#*I<3z%lct$xV4i{VmN +<{9+opJ5bB@5MuWxa@o_954mZyo1Q#qUS>|^j#If%2ON2m*fbj-^pm>9q*%y|8AAaO7E4kB3Jd(grWTvPUiZG*xAymOU!=!bB~5QsW;+&6t^~^3bSgjj6hXZk>2+GUt(hbB;}jQLTbqSIw9~wKc6B +ORP4r={j;(i)e?cFSIH(Et*9x=cdNDR<*MghoI&*MS!+4mcw~oj%7D2mbRs*1} +^hMm^wSj&Yn303+J*94fgTXyLYbWlBJEwku-0+oJ0PJKd&3o7$(XaDvQv5`n3TT>_-QEzT)x*pyASg{TuBcT{_^*p~KXn!_=X})S<()%~BS+Kzr^v@N|2>$#tx78s#mZd +pj1%Pr!~RV8;`%;|bUi-EWQdJfQlmQ3r(|u;U5XktIo^J>|1cjt(W|4khIdCFQQjZ<7&m#=?ZkZ0-bJ6!(s`&8z5$ +D-B3%obw!gO)ay4c(ku8S0m;fwtV7|uL*csvh3-)D?oi#{%H451AH2A95=s&WG)ga{)h$PwD2fK*?m) +OZRL46|?GCJZOV9N5`p@o<{)eYO{>jrv|L&*nKmDJ6_Vj=L-=6;O&-%Z2!M4A><#+2p!`*>=2|uoj+~ +uKas6DvFJ5Za?1iR?Eypu8FzM7bRJe@8>*H25AI52k5I{0 +&2sSp$lHj9FT;A@pznMU?Ntj9`c2>{s0C{CBWKZEN?ME&^#|7ra>~7D@f_koNtK-3qa?_Rk|2wcAbX0 +gs}t?$m?7#9j{ZeBA^?#Oa!w!QXkPS1MeY$IdOfk<*^l1ITLKy`@MfF1NDu&&MT52#9oeEL$ua7jaWe +HWWQ`!P0UJ318#yj|oalCH4-(+i+I4Hfof5RlLA+=&NA9RSz!FyhTeGUlEYakY*kL`P(M>!Dl!;cft0 +TP8=pi1)g(coz@uCY=rf6{CMG8=4Sc(31OdU8(9XL$J^@r%Lk~MT6%}ZBF(^XXU^L$U10}H{n+y{EI8 +Mz`rc{V87P4qWyqQ6P*4vrlUwmQOrYScrtr5@;TJ}O7}fQH(G`v8NKuSP?y`vYoC-oiysjvqMpMgb{~|Oi80bf+BOMfO3ue)~(_ +}bx`l(jiQvuh@w}n1gaICLYDVMp;C2Byo+csvQTnSx4AT)TbOYu-lk4f0BR=L}T6E>$fGnyQ;gGr>Ws>8M*4*TASqD^*X^mOpxOKhZzd>lwewd| +SKg(lJd~RZ`T|uuo~N>c+5nULef#`gy+T^fb{aBF0ZNld24FoA{`%@robzC+#}*uB>^SD{d1%wP|s-s +WxKMBmR9JZ|=)P`si`)Jm?I59_QYi@g{X?wT7Sz<(ZG9=cH2&g6*~z#8uP+J#sv_oL5fgcRe0elXhDe +{c#IJdC?YCiP9EFF}A2`AIhoGu(Ija$@^;afXZ4lK?`e619ec(`jb^?kyR*f72d+a!j6Rn(2k9+&>hNp64MkXc{n +jmablX{WD|a3n&QMX#hGOl%Br=>Dv31|l151JIi&a;i@`R>%h3sH2n`E(!%u*fCB28Dx6s0A;Y9CSUb +xIeg+4}gDn@lGKQfiALB*&}Ey9V;H;n33%;{8)Dl4m$T4b?lkZRyv#I|Y`-Pl{lW_`$h=YMQ#x_-uj% +GDK#V)PfbRaBA16i2XvB|fX*h9avaa5=2C#LmyoLS4i$ow<%54m8T~6R@!u?(5GgW>DILiMYt5K5j|d +CateUKl~@zQvKimPs`oW{%Tus`u2wuHQMD28cdB7WQ+s$>_pYN!`zeu+vP+Bx2v*V#b_A%4BG>}!v@=y^zU_8sSksHy+=|I5?=_5b^Ct#VSUn6^G|Q{THwDtn_T1qsJcGkvep7Eg|W807qlUBV$AHf +E@TaQqPT2QqaY!8}nHkJ^GpMYN7_j*0?@MZiXpzeCi_CXuqkehL=+92WeX<@nCgAa0Sh;nFL|aqQ+6Y +SJwjb6L>i>#z~$R&2Vg*lt-_^R!1#Ws{w%C>Pz6OcE?0_rhFJB?e|W|8`&?+E`~DiHL#|W#W!5-YEG8 +hvvjEh68oxMDD;LYEYwN;B72zWKn^HZ0qZ?07HXtEXiF+nlGRj0RkI0db9!I +YHGU)Wu67)Dl{eYLJStY5D!TM&&c2cSa45Im+TYp!O6yM|T@MITP+cqH^_%FYX06(`VFVSq&w*d#xxNzle}|BqE89YPMM!6&teLGc5Po{z~X7TP`4FR?ceK5LQ%-R8)*qjCNKL_^8YaRd9x=Q) +%>y;YE?esEFd4QxIjSV_D?ZWjW=h#&GUS{K+0DZdP_jK%!WW+eoJst{lREJ^44MJ)S-5zQ +8CoS?#Rkc1Iwij%cTy>r4Gxb4%I5o${`UtR2=$I8Wqz|UQ9p9fwOQOGGgUK9}7#OTckZ;Lu0N(t4O0> +JbXCp;vvmYWdP$5U=%t*96CW7l@DOcNFcuLu|s9hS{dO^MmRtCPR2Gyq!t7M+jwUY0KU#)9VhW1_UIE-YbxMt*a=-+mknJ+>GgYX(*`{QR~DGia5mRS{oyxw+lY +tEqYEV8^T|7H@}h9H(0aEMW2Wat&kXX5Kxbpyt{F?(_CS?@oeliG~sBz6?)uMLzA3th)FfKLBQ82h3Q +{=eaq}s;aWNRC3b}WnRrSK?;g8n7S&nRhYr7gKYIj!cM_YI}~N+sjM=)ai`Z@BXbjJm6w5w$x}~T*4v +gGmbtMQ*peKkHT)eM|aHOmY<$8ySq88~!1wx4UYR&LbDxJffmjf +|T-14k28s~TOa9fq6gREt-w=F^sG9DbZMR5xFDW5-sVpMm3cs=9Rsu6DS#890tK>TH<046)KWFI#IrM +7>;P29Bjj-RcY+_v&>juB`jO0oMJPfqCR}_JDc}RnGO8#XJU5s2;OK$2iNVQ>Sk|4&^*&;DF%NDc{Id|9 +*Hu-g7DOcoO+0Kx?%9hTs;y-E^;M--_w-m@2A)~Q4Li#>vP1rm`vx(`d!rQSGQM?dq4&E88v +Ox7PWMERE~`!gYPt+L4ckrPxhIKqD|~d{gi{Z?gpV%cO_$jwiMg>Dc8MTeCY(gJXqa$9w&4`7b;o^#7opDw4hj5xk6 +6$*2DkwyQ4X1b;vu0VSX*L@U94SfdR7Z)^1mk7zRZhH`HY+Q>o(?jEpGWWp}J2!FcWtV@ngR4T}K?yF +P~!&)~g6~1I;i!^W1o?kM#B?vIlzwk%xZ(Xu^4{2r)aM@*z3k40s8W&05gP7ho&2_8C;XB*ux}*b#9* +8L&cwZaDEx7fbY6!LSCE|mme2EXva8d))|`LEhq*sbKH;w$?x`#n2i_w+R`BCWSz82&q17#l#> +UigPCj3MqhER5k97RHd^{CW#x_oPBEb7Pm(=MGI01cu`t4*Z@x=q)IGm?*nvmF$n1ARE%7_f(_cxgh4 +>#yFWG(b1qXER`W;IxLl4@}+o&7%85w0@lSg?SlfQV%F>)p#33nQqg~MnKcuk&wEh!%f=aIZ{@egqEq +h=sQP?RYE(o(MXiqgr-ns{jbX4r}8r1l^_NxbL;mj +YBeTg?)4DO8l0OQE79fZS`X!o~&WSD}qxZxZ;ANy6UO)F|i9mSf>dIis9<{}JVkfM~3MXjC5~9#4$t@ +OuE&(II$GN26TJr1etRh^L@-5G0jDkB*b}b(zEU%;9=QE#!UUcALP5sG}d$#NC%@S;_0TqjgxxLs#NuB~J|FiH*32dQc$s8hOcAWuB#PC8kP4UwA5THZaIc$eI?ctoGlt+36oi8s +vP;kj?rPV_Db+of?yq^(7C`cJlPCnb%m+)|5W?G1TsQShRgo5Yi!-4_x19_-;s3`MB2cWjRx${oO;!$ +w{LIFaNQ_Zu6`IcD(F>ICelBJ0K3OJ<2X7_<(!tf{zp1dsFV}p1Mk4=%5B92qf|_)c0@A9 +N&YYMmJLb-`HB;jedYXYPV0tmu^k;Y2cq`qVFM*sC&9cHO&Xb>>gA|>eWt_@hYgZ{?+WC`AeDoQ>f=R +S2gin%mV%qr4-+z)j&n8{!mr}AJVZasy8pEw(C9nf+O<}Nuz!nqk}i9IY!{ELXHQ;T5q&;sBVV`EfGE +}0DGgQW9r^`P%73>i0)K!cx%3Jf_bM7#2Gy;6+Wb;eVir}RsG|w@kIUjH&=CXV`gz$RD4jpdMY@%F}V1EZN&%Wux|}6-sm!!>LG8`mfTojRCOaaRv +4#Vl4*tUK`HMW(~PQ^n{jfHY8U3JXN7XU%rUOnH^A#HtM&y2oaCTF>t_+N` +H&976EbE6$rVPW^Q!>a51*PL@}3Srg2sr3HOZRxmX0I<)c4+wl7BWg7QOpvLbD&?qW`z +A>Qj*&npk`A1=m-v-I}^{~VXi3o&nAQ3^HYyw$OSYoFlDYs!NQm)I*20mn~4}lY*07rJRIUtIlI0jIW +7ZJuZyC`Y8MJ*1zV!t44lpyRq9zc~8!HDOZAsA0l$Z!JLI2Tcm4&+c^OXmhKZ~z#I`Mv;*eC$FgK7>y +cNFq7E#V7tb!H5qa3q?IvpdWwVV8REmf+Qx2xxQy8py2r)0{4OByYPH}0U%!%#qt70`<8ILXI}@fL%; +kXDoOriFr8rK?!n_o|2`t_kAdKTh;b|SW!M{dvjKYpwRRur_Fchk3QjXnuxA6JM*Lp_l}28e5569h_5 +k!u^8FB;Onx@1*h{+LVoucHqci3LjbYWu2*S$%D=`>1GNR_)V3ySgQVBJ6{hkI7s@YNd^xqHY>@Nx}> +-DYBGCTuXhUe>{Wfz((-b0f;`#O9WoD%GDkfCmm1Qo?ZVnLv;;^_q$Ag^KexqJRig1o*C(eBK>t8-d3&7PzFZeQItK5LJP7qr`V))LtL~I!`fFWk?3?MCY#h~5_+46 +8;Joih$E|Na5YHH#d*0Tk;rV*1XlH^44T<$ej+b(za^0_?g$bYbsGg9p--^beQ|IW5A$*qyB{mHEnA +qdxr7(7GjzY{#yH%D=ON9@)BrTlQ%t-r#w{uRKqhD(LVzZ(qed&F6d5%Dh_XEkc+TR^H*7oIWGa*?8i +%rOJicISiWDLY?Rbszy6c_TtVV?59AN-|}Ob>yQZlFkNU-kx +Iq(C=6Ax}4`qZ?R}_6e_7eh*@eZec}3*T;PXk(w^LK@h3Q)*A%T4Ol2B1n41L&@I|$8Z5d&`=}<&duS +hZ-B=-V>Qc)^TA65Vy_^psfR67A0i@P%Z(u(UA$-0gZfB&K6}iINIR6SW`5s{=4+AjnVJ#+tLIeK_tN1Id;s=FQJbLfF6yA1?QXf6~M +SAqpyGOsM(3j9x&^Mj_@>A$%P{M!t7Wze}f6u#rU!c7Es|@9>U%~$YJRcDL0h}N3tq)#6g@8IsgDxb +f-m(cSka$+ughnz{<%DEkx#x|j;;hork;NiUgl5B^VeUzeDgSc5?(+5^u +?REPkwfH_v5?IUx$xB3qQMi`KndIKbO~hD1On6jeIn-nR=@F=FI7fdiQC0`8Ykf`}xoB>Mf%ebG9}^Cx%V&0YO`7NNgZUUv9Y{k-+bkRLyhcRy+F^1AnG;rQrhm*f5VqE%{}F7AH*=*j3sui +oC{y~p~a+d=rFCvAYtuGfm$o8onN`Ehw{-XT$CZu(7EOy0XxXPnL5N5aoIL;9z?x3BKPKfijBuROkZ`SIP`PhPya@lua(KPj!%N-8Dyuuoom{K=P6d-KKX*RMWq +Ir(Y-T&(q{cfb3jyu8b=`U{~A@y}nsfA5_ndd(l*{rkIg)5m7cTivv3ak;0sMreXcNO|(*68-I)6h1H +QQy-Uicb}EFp%3gg-{7mWkG=n$pwG@65p1pkbl4*;UZs|U`$H+B98 +7_m*T_60(>yfSNm+q^aU;E4dlQ&wV+X>=|e%_|qH!ohj{OOa2Qk8k^$$S4lP)h>@6aWAK2mnS +!LsT+cx+&cY005&S000~S003}la4%nWWo~3|axZXsXKiI}baO9tbZKlZaCyxdX>;4g^*evXMvenOCP7 +L`)0DBKv2`SxDw4;RlD48uFM$P#2*4t{3z2Ny{`S7NySPY-QI2Lx&xpVt@4o4sot+MWPrjU{EK|}iRG +jFQ|1>`xy>tV6v09R-$O0AfO!{Vh81Q^4;^|Bc$#MBe_6LJ6d;5d^Ju+DmHDlzB#X%IKX_rXG$g7*{Z +?E3I^9`6J4p=7Hki33(V)if2k54b(osx(P5;8^O1aR&E&7C;Sxllx~P9%6rVovPJHCw3js~-f-b0#{S +j?97PaZc52EEqX}8-BpkJWiM^oZJ3rMD84~6Y@YUb2d&mzc2C)Cml!A`0|sJtK;jxzd0Sr7p`6*x3u@ +qSG|9X@9e{%_m{g}v*jKQ2^`eVf(ZY#OLpBF0Rin&M!~R>-VQ`UthgD^*V}9H}Lh+^85zOH&jU@|791)%|!Xs^NMwPX(k}wW4N0BJbLPAMORWOUQDbYxLZB!QFmDZES;hru6re7_# +91g(2kVRz5)Hs-NFxoL_)-~FdT~u>MQ`RLkN%)+FT`=8<7Ku8z1oFBh<01{HWCv$7k<7xCN+2-@)<~o +e(A^4>1z?m9Y?dH~m6EFa=D|nI!mTdY?TjllK1*1ATc7}2d^=js+VKoU+Nky}Ox#nV*AUdxhm=;yI!jjDw<4 +mpJLumGdSKroJScd@L-d2^IXAd-qLxPctJQr={d`${C?`%}Hx0vRV7u)5iBg-^?V1#N)*pvyQmET~MhJiX^{3cWQ!&#`UAc^H +KFatpOE8-vAT8lu&E?~#kMU?Ap41oHki!_1<6nO%)uff1wJm~#0xBMNfNuz$c8Zeh;r9662}A5ZHN<);aYiW*y0A@`&jitk+ +eg0$cxrduR7Y6K7J;G(fei+c5Jc+h@PKV2v!&=y=P+zRqRqy1WZrgTx2;^Ajct`lI+q#(3C +A5ua}7w!NbG=Hvm@Vqs`8l`Nv4zp`YZ6R+;rL-Ajy?kz$QmBQLsTmL5=EYK#a>gbUtXh}CU}$&-i|;9 +0SSkc)+qq{%yN1=D*)GDd!kEZ}NQ1<;Ves`EXQB0QGq1M&S)4 +}$CZ?IrmLP?Ic1z~X>t63%G3Wo3dWcBlN($a6|5Hu3WNq~kYb)h6_wk~XB=c!5N*RVh+H3*Q1>=H`ZL{l)GN-N{^!DKa8Pp*wiiO02C1dv9?NA@PYc-_p6ts3{wRx +=%_{Q+i;82y$www^*xBwIGLYvS6`D_h?Y*kZ3zuh0+t>??u2dG&9&V4HT6KSKHwWuakW%DR6lZnW#dMws +@T<{vMPu4tnBf$v6?mPjVejdO&00GVSItu@A=zYfM;O&HaH-3t-vbZP+})^W~c~mK%ALM6Y}Qf^~L!y ++3EHBKYV`N@1Ii17Ccbt|Jq@azp>0l|%y5IofQGfe=2y9yL+w +iM^o>$UOit+&b7BI8*Qr5DhF8|Z_>~ss?qTi`I1mB-b2t*WJXa#T4p7}QW%!XM=U_g*}>{UOG=Ir;uv +Rt0flqG^uPXX$!zaGMj)-^Wy%GNvamd7KqD0Qn1G0))4Fg(_pC>aR%$E7|gKsn@XbHKW}o$lKxGU@*9ATS$55aYiumJgo8!E4E%NfUzl6ET^$>gIZzV= +&F#CB8vkaGH^~vkpW~#qF;4=kg#kDUsLEca09$LBYR(xNvveIXImjguf!zvY_G$Qc%lY(Z0K +JITrZR}cV(c59|oKJ54B^SN)y^0}DyC%}3?m<>Mn^Dt`Sbq9;^&%prNCO3f6f$R;uu3iiVcJVVZSbQE +uUey;uS^*0in=b8vim~akCHo1SfzHi*x2yAH2FKU~OAZFL)XwyE^fkCqFzBT*ewqAj${t>*yik>OYea +PmIiZq`4RBa=;NNZw7rcI9^LWO@>PfeC^aa`Ts`DC8*-AFCydWi)@aO<2x2^_&;o4fCk!y$x;Gr{KBq +5HBA+j5BDX2IE%b|GU5y*-z?bJZ}bwPk`uG2O9sqFzR%35r_fEz$l*V$NMJPHs@hzk%r4*F2|AbPN*p +9)Akvh901Dd)n~Xm%X$$#jX^VQ>FVKR|WRByx+K9nWdy1uVQwPp&UjlL?RVC27lGH_J>$~u$lQvgy6&wTy(}3aK7!DiBz?rA{qG01S>~ +Kl|EwCnr&De!RhiqlasdQ0-mWjYeYgoS!tlw4qo(WSgn-SQ +zL;@(Q&Tc`pPtnPCb#JU&}+)o#KTiz<{?xWq3ALO46!XqI|OtkOQ +N-(2cSSY$JmDrGYfUzDd&a-lvS7rA@HrF*Au-+c5!vrs9&E3W*`Xh5J&HZ$1_b5FN3_F`J{Iqs7vz9*~$(+DhY$b(q*KG%q4Lr0 +Dv>0fjS(`4cv(hCOy8PHQXWAq@t%f~k3jyVk4MsP{_%Vjik;WNKY>9}kj~OD=y(ldccI-9W6Y1`nIqD +*zJX1=biy=f0s8-BR8>jzA*ki1H6_T8AkvtGk3DxP6#*BWWIc-n@0`W@_YXih>#;UClf2*$Utc`tJnr +vZeM#}X-VwGLWe_WYzTf24|%nJeeALsE12$O8(7#KY2p`umwuMuU%$tn-)9$Lo#tsYrshMO!%IMxKM| +5W0(-n_ElJmL7i3-AJz6OhM6vP32)MTF@C;(W-enD1AiU7ueK?)d6QNdYa1*ZD6{O9KQH0000807gYa +R3c;@#DyOK0A!s204M+e0B~t=FJE?LZe(wAFK~HhZDnqBb1!CTY;MtBUtcb8dBt5@cigy ++W>j0`5qisD1Fi55+s)M +=4dk;v!KTrNbD)f(B>Ju&qhCdKBaOqZ+rFnZkm8XfHI-T(c;-obt}yNT+Rj9#^zMYR;`-Kdf>di46@` +_r@YiK!+_6PZ`?F#7KNiFto={P^k1^QY0GD1kn3nE}n)AnC1iy(!8%D&?(Pi?Ucpn{+d|{3P>vQBJlh +sEZFWkJ_T=bqONw0*7n$b~pM#-dq*sd^dV2)^ay`T9!q*8~wOSYguhX0*~HlzA6p8tcy!sUwyNY9-6H +RTcXeOU!LMkon~F(rK~Trw5l(Q4X~&FN^|tbtSB<`m*Go2OI8Ia%{+aaiK=>8)X$102dPdss_nE?9{Q +WCS*BYZEz*2`X&zm6_H*kNw7hv^9$hAi(AfNugYI??H9ycUC&q9@XGqZUs=y>VlXX+((aR#2QM!oo0% +$2VC%0R(O&3vLVFVmKJ3hI1dUkHARzIbwqJ93hFa6$_B$!C98#2i%Re?j6@lIcz;zE%+Izoi|*N7t2c +MJWgWN4M5TA51om$lAwRf7Ho}otmuE0u8#bT+cggqWsL#P#=VsKt;{N<#!~ZRaWfvZV*Ix3xf(^ +kjWEq#zaq`XsUj{wd{BUPBx+FU>p4zL25mdQ`kU%EWp$7t!@$bluVh<<-zgds~**qE1$dVNGG8*oK%@jx +}AxFc??~aREFY;2Jd1kH$N@?Vs>!yn|grzmNXoNE5Za!HADVe5(s-$a|tCOK2>gVe+j89Rm6HJ^5Bnc +-WboexjI>ITLP(o%hf<+J+&}&*g`j6b3;z_UfIoqdssk1N*@A~G^oERa8v{w!s +{@ryzpVJ$zL(WgVEdhMrh#|F%0<{*IqcWuBY2;7@01sfU-0Pfj<&p{dP+W=>I3-B#t2~3HiFyMg=NQ)3l4{g8) +Fk8QtgbgrB4MkwU%m%C*hs+iru>pAyFt-8MX$T-~z$OGp_ERYi+o +x62Lts!)C<<#{goj2`^0m#9D!)0DxF)v6f4}mWZ`J4+VjTM6FLkLEs@#>jif=0w6M+g#6(l@rO4d<9k +S~^;HNUh_#-Fj870Py$;!uAhz@>WEz6l(yNeZ2%^^0kZA~F8kt;}UVr2S9PB?NT2i?J2laq&7ewejv2 +gYeK;eK>;2=zaXz3&*!<@))5|n|c^(-XA{D4#N%iw4SA7Gz)T-OdZ2vhi$YspJte%Gy~VG5*=TZ>Iq4 +~P4MeQMrH1`fg$NFP_qY$nQK3itL%OP_@R_XuEB6d!!1u}>XH0laDzG!uZ@A(h?~MLsXCy6Axbw4c_s +GXw(AUKCMiHZB=x>VPTq2uxwm0YGG`5d|caB{Ao=fz6u;tpsf=S9G|RXeNLFnmeu~;-bxl*KccSF#tg +I+W<+eRgFOO0s<1;186opjM-WuE&VzKnD28f`NKWU1VVuM9V&y12BvV2$`Am|2|$hBV5DWsjH8Am(Yp +)+XfRG>nhp1&2Y2=;g&=@ZSY$=viA#6(NYp5U0Fo~)vX38qLz+E70c8L{M<}zR=H(Gf2Q>Yui%kGPdY +~&gU$S>J}( +fhmN+N-5|f(ZR273)H+X$%4A80gbnR4ZRg3lhE8#aw1SEz!(a5%}b#K-5|_B^AI1?6Z#DJK#7txKG-_ +VcP^iBOi}31VC6?x*FO7%%}`iRi*1;Tl$vHFV!V4ZvpOb3TDpFo%4wY_ZS6U-U5)UGNmIj$`XykWrxx1s{NTT=mf<1qLiQfJ=b@bfnl(u$jUDI{Wj{B?Sf$wI( +9ap&UG9(c6K+(VJ3eLKFn2z%iHtZRw9L8d&JNjDiD${9%up#z&W)Fa^TWcbWplU<$-Vq0QE5-c*C8u} +@e6ci#9$ijefttTLn3+kgj>X~_Y>G7z;oqL@wL4(Sx<1#>qWK!=t!cmWNS+|wllZJB`lFiaSor(wZ_PFTY-kkJ6bB85a06K$}%v~c6Y)dpQ)qL*92GF_ +twDgI%3aVG%$d!q2w+a7(fSpWvYkZ)=Y~v9H6$;0<4 +)944~_A9bm|T?opvTfbFF?dJ~^6LOl?j*MJ_#fx$fxY3ai0L6`y`?K&`+0x^vu5PARbp#nPcRK0o3CPJ~*}=i2Ae>fhb6t=r(~&V1J+X4~2iExJM`?g$sfy5VfZHqQ3FTurDbfFgJ5R` +nbZ0zyLxa$soCJ(!t@t{rhx+*31bI3D2L9vSZ6C+6*(ZnbP_kNLxm9qKIrWHU6 +}%j>$7%e1OxDYuS<0g?lX9I{tXZ{Pdk^e1rwRw7%ttQ7!r4yae9>}ZfB5dgSYD(4HiRyz+mePJ1d6R; +Ll(qvl%ra%C)DcKmy3YB!8Z=*g$9**9?67lI9>6&Z70GbJa42h(n1_KTpfTk>Eo}d7T0e3lIE|;Y}Ns +G1A8Q;(51Fi1Ut)XwU;?J@y{xGb^{rR_&=rIP%aUd)RF`u};auKm0l0uZZaS(`_Si$ +t4VikT@Jy>2*Ms#Q}xLPcrw)vLLn>OBFHv5Mmp#ak?*FngP+Ss4N5b7^Kh9T5o-h?64VEz(@&}jMBFogPx2tn +@ABqg4OA++_AFofFJJPe^dva<`fA=JheVFMvCoLjA>&SWyV|mnICM{_-gdq5g6egwU@&V`nmIL +#V&pgdx;lK8GRHUmm%WO9Y{-RPlH2yh4wEO?&K0fsK2~+CzlvP{pHW@}5Q6CzlvP{lztJLm<>&7VhK{L# +V$j-N_|}P=8sulS>St{Y&ajE-{4q%TMm)5<{rJd~he17(xvub0?P=Lj7g!PA)No`b+LkE-{4qOW{r~F +@*Zd#+_VZ2<=}!x|2%`q5e|3lS>St{!+PS!@-!3Jyg;cWXyTc#|%ar +K0?-qj~EQhf+emiAhDV)9a+a(K6uIT1(gTfF>rQQDRiOF>TcT6^bJ2b}fF}elZp)u;n)+TVb#^`|8-U +jZ{7|USMMsTbGALMc2=)y7NfQ|SX{}h2^`#7WuAqZO;!R9+ag{5#o2wNF3yU2YJhJJ1xzYap^M)KI~B +=LhYcPaGeseN_$CByM0C7u%qA-Lixj!9X0K$$3=%`Q>hS1I;^)J~tjtGeL83A4;vmV*(e +)ok7dQ3oU_P=`}+$_x=`{AZ!;&;33JrL^q-ClkVge?qxbV`FDY$BpRF<{7GSO(jl888T;N=|cb`8I?t +3myj{d}NWQfdrndB)$$p*pR3C=%jdVk*@4)u9J|S=eHVIrhM#WOnXBtd1q{Q=umx#Oh#z0EG7Y=I +{ew>(kQ@Vsrd~7s6y|4?r09efHVOOgNK%oF}tz0e?8!p#+@H4A +PAf3Roj{aHpcv=cB%|RsK#auw2C(&VV|6-GZX@OGBtj4CW40wJ4PX%yD=ETW=B_{p(y*jp$tRV%vJ8B +gCT5DICs*)5H@&6Cn_K$9=_X!WJ?-ozBGHo~tnEFZ5uAxCr*hY_9J#+#}Q0FWhd4sZbX +?4MEre3vm(jN_xaXd>VqVLl)w~l_%L$s3V(m7Q7JVm4#!n!*((D;ei{2sIVQW=S?W>VILd6DvQ8KoP7 +oTSf9Ayjbl{FX}(a`z0i-fFoY(GD&<|4Y?T-HV(e2uHwHr}mG0z)K`QL%g&3W^;9h`WhcCq2(-(#qW5 ++MV+w&KOAymow1O}hMup=1a?hJ-uC9{!*K83+QcxT_km~$9>6L;(b-OTw-02ZI7J?&Wx!&KN|46#0q! +6yqljv;n0Sy(nk+huzq!(gVwX5sqt7~CUqeken{y4kE8yS_1me-ZIXmKBo*L#X)uxer5(u~pIbO>2Fm&E4A&6yTn8>7+k#&r^b4WSW6ooV4?j2~&prr_iYHZu@&gpOXUvh#Q#<`u02D@EZO=#KwP$rA=F>~HY+mki0|8bjLOW(8KN?$t^YR} +gt(}9vx|K;ccG{RAYEtib9W_LzPwzEjXG(kzc~#M^eCR)sJ(R!-dXpk{ru}(->4XCuW#(H6-F00s`p5 +G_s`p2q%HsN;kWHma)V=k?2!JmQ_frU%logqbnz=LR_xy+CIa^p;-YVL1@A4uS6^}1UO@d=R5EbS;Rj +PvUH%zm#g!}*z^FS0o6V;GBN3al*7pLdy9C#}(bXzVR=TdW6nO<&EUOySSF0Oxw@`I~qk7!ci!V4#M6 +NCfY;QM|ljTHdPu*hJUq1Q@QnK#)RCVuUd%s~M=3-MTPIPtVM$uN(S-)K7BS};7*Ixu$~sy}-L4&8LvRq`v}q^eug`(o6F7Khu!!=agyd4gqOmf2_1ol|oyc4|f0fo +NC^b(P3+RTmL#W4!a%=KWuZ8+l|FAW6tuAwS^^ubqOBj8<_0ikWq9|0es#~7)KcAslt%BPt>yI>l&zf +A1hx$T0$lI@q2GrAgwz`p2Q;Kc_q1(IBZ6I`8J30LJ+1#xyAg;8vR+DIIk(ufXi;)*GEetunCaXN(eT +{N|i?ZQQ-=SQsH2>iB%k+~XqX;`2z*KUfG9<-eUUUqaSJSQ56bBdTj|*j;MQI13N2pTuQnasCNUDVz+ +AiT4Dx+_l*Sw~kB#pY?UHQpY?K-Tf>ss6Up}{9wb+C}s)7#yikOWtmY*q@tUyLRqHC5=FUe^i|?IKB^uMt9Wb1`Zn>tR-577h?)}qA +*6dB)tLT;jWj4@9Qt*yhgLgVj&o`SqhCLNX&q@uT3bJ^#Kq&He@?4(mdPJiDLBnWB%x75EoKmh+xZFQ +W%K`3J(xmjhxlab<9C}6xt@Xc`MB!y)E>oFfMd`?dn>w7iTCff6}RPgJL1~(X6l}EeXo2K&29|Tl$-P +wrrH1nv?p}dVA9YA?XC0fs^+Sy>GYR>KvF+$%;oKEZ7+_WJUMw9JvqJDnc%vkg@9n`s#aMMs@inFZEe +=L;F+qS8x>5I-UpSWFJjjrztZN_DRnoRHMNy1wPdvu_L|i6e);Eg+Sb)_XsH}_17-@X2zBI0otnfUxL=KIP1PexJ*p%Ipc!tnX>f7b^V%`G +v#SgBQmYbm0b`>mZ`L!wL2lVQhDq9lqKVSXp4(!mUztAGnnmY`zp`okotwt1nWUh_X&RZgcqTCK~HGh-E2nKlFTr;i826~X0NIon}wE_YOc~(GpbF|L|NHYC@?BZ2Jt6XolXDg51jz^~Lp=*z#(J%iP?S +w}AkU@ia>+%Zm&o4oA7OBRLzx;i)^WN^ZfLD@o7)G_7*u55n18BFrszshiH3ra~>5k58Ge{}n$xd{16 +z%hlvFaunw1x}?Rs0LmSr=51(qubzf__IMJOVM{q@7-Yh(d-f?R(J418XE=a&CC(8b7E|^t+>I1poUc +8h0dqAMNuhI;A_R*>=^cs(1Ow&I7?A+ew*A<&1=F41M?`2{IJXOzaw)H&WGN@=WP>!5<8t(Fo5*!PO2#%Os=0{qRi&b$Bj*Ge%{yg`z&rF8k1B!sz +~qc-oYlD_OsL9y)a#j7>lv0jFJ{nT4~#|3OGxaCri89srz55*$5Pa4aw}C|8lhBc2d_W0Io!M~HYPN$9$7bmcmC14?bOp{rYq8?=(Kor=JGEp#S_W+>EH2J*YSHd!T%6w+%sH?y8=$Scg +mWSjcvNxghjLolk+5)i4O07=TGsYBD9c6O`N6n7q4L`$vG!Hi{paL-Vx20OF)abNXUc8mG8quM^wRUW|`h%Mh2S72ND4Q +?d;9<@}5`_e%3o9Ilg3&^dfQ&rWpO`t0ipW9VDu=Cy45%goos3Sc}t|nGx>RY~Q>+jVjOKa`zwvUf>v +A28g+t%rXZkvz1W#KbbqNvjWsljr99?i*SL&st-sU!$E^aB_CqETwN5by&wrjip0VN$>swa-= +>9ZHITn@!D{jO4z`;|p<>tFM;a@^m|dItAaAXjv_t^`DF0u~Wth8Lx1JrJTs%EH-(Kf5Qax +NPmg(YVbf{~23=b~E(wK|M;YRHex?Wz^rPwD5ZNcqgRa=>B#j-7`Cq6+2H7%-353C@x#rtu8TlK)KXI +tDvjgAZW!P!V#M*HJhId5BzdU{)~{kEg8>|8(S%KUume*sWS0|XQR000O8MnywZZx+Yzf(8Hp{}TWJD +*ylhaA|NaUv_0~WN&gWaCv8KWo~qHFJ^CYZDDkDWpZ;bUtei%X>?y-E^v9RSYL13HV}XJryyJemOD>K +^RNdGc}TMq8_*_0l0F%RN=sBsR3O=RvnH3_D>*wo{pIJg)3bME*Ala5L4aZOup*i9l}^BuW(Qi=Ts(B_A8u|xUEJSa-QK;xUsufo7adEX1*?#~lC+5V!A>h+u_Zr|iffYu +5SCz4AkAqGF+V4N|3k_CyoF`O(p(;D5TE!|OO2vJSJb +e?8o%s?DQCSGlv--was+;JN=-!RK^n$ICkI(H6|+$fV0{E4Lc@6_2^FwVRYW3s8vRBD9WyafE_--j4S +mjB>SbB1VMVT`=>Oj=d?GHk&JjGUArEXoKoRh#o-m-BR~ocH>H)1n6{`_vz;2vc8{kcm1cLzY9+~4bP +L8sN0+nEj8fU0QB!J{owMXI&xqiO}oVfNO(#OOrpGKvGL-CdMR#fbpwIJ<*u`~cjI5z1cts2&w>2nk5 +Ht)85dXBtb$7lCA9W3|hHlWvXRu#t>dM(@DyetX;>Yc7vv8_&WzvshX`66uyQ$j0Fb)25^Yf}#r6v~4 +o@)ygk#~Tw3K|wG|EPiPxqc?nzp6-7u31b6JWv{{9G9aPn9DKFo19t8u9#bBT& +e^w6>1wQOXfmG=2@KIYQ{M`Kg|gW(E5>Z6JY60Mt383Hz(zP(-{Y)d+ +!&A%i6%MUWAP<+;?yyBOTSf1)L|lDmo>v~T)Q>Hst^EKSjL4UW;GV8wb(&eF5N(J`tG2jPuN3U;Us1c +&DkX%4rZkEqpvVCtIY%$^2Zfy*mjxV|df*fvaAAhxYrw`&2EH51VZSg74%iBT$t)d!^~WvUo0lI7}1@ +G`O;?g7OaW-F$u4gHtF!TRD(f!R|N{D_O;fVwN;W0j-oI8i$mP&**RydWpq8{!HGNITIBa`N(Vh9?YnSj@P9-lH8&`kfY4SRZXD2(E{P2C)N$CfHAG# +V#97?(gwx1$=FBJDdS;#W|noh{}@12P}j84b>(0EqsllizA`tI%tpQ#S&xO<9nc)Eicr!qSD>P~8m26 +j{b3nJ5v#d9hAT-OqYUe~&~8POGvj5d(sw&_glH<9#{{c#WPA!jd;2%3T16%GHLB7F6*pIeaD4xX7G) +?gyktSViO#f>MD2mkc!Jc4cm4Z*nhid1q~9Zgg`mW^ZzBVRU +q5a&s?VZDDY5X>MmOaCyyHQE%Hg5`NFG7`O;zA6&KDyX%9oS)k3PZ5BxyB);1NnnI=}%H~EQbtDzXIP +CrQn;A-$9J@`r3lwLdkwnf6zxgq2U2g_jx3*Py(UMIOV+owRGOO3CKdriOGW^g@C&rSwa(Xfz0z*Q)SJ!v<<^ +p)uH6gQvAzYE|VSx29x+eknT@gkp*eRlR|_$`A^|h=U_P8_>psD9AKvz594|{$@Hoxw?i-rL>H&YeJ6 +jvPNl=nrdy;V(BMv+}^^gmoHyGfA#X!4dE*qY~OHq!&NeOTMG5zrI>N*Z)3YALj)N(1ph_B77}%fz+ +k2P65hTgIo?$1HmuSH@i+)8p>|<+OQDggx+o;=+1v=5Idsf~4Hg=f$W*~>;fTeV+NP51gtc1mFqgQFg +vvNxNqHjF${2w*u9wwmDHcy~UX=@S5--WTtb*%&jpoW@^s?{KUt%644vwv)5W(2vc~G4PUUirJ^D~Oq)~?oU(|kz+;8S7=u`QaDH9%aDMP*@i@#SN)eI|)AKV183r20+gZ +LNpo49Y!T~A5-(WWT(N#kKG@F4JivV9y!o!Km%4U2FD~tIR4_7;vsk>&54`eqKIXJ$)hO`jQ@ll)Oen +{WuqFL%3&&|M8l-1%v>-g!_@e@MLrsNpPve&)GuWScSH>5lH?^^0qx((gm9O7Z!@OXOuo-UPMw5OMDw +`2YC;{A7z^J7!Go)Z +Q7!P&w}jZG4Iff0hk*Z+Lq0lyNfDVh2PLQ$nzp3z#d;y4H+4W&G|7p?%DLr9nl9WEg#WpP*Jys;F{EQ +(KfFv{MpU->808tb{5Tut8vXuhkN?fotyl!icZ+uv?lQc-*4->Xy<#TpEU2hL;cuvTW$Imx_qUGzPY$QeON`u91i!UK-*MBrFd|`M7g)vmAI~RC7H?_`^-j|Id`1HA +Fpf`Y)v4!xj +Hh!*$7~dh{Obuq`y%6D@|6T=e!-4fdY#qTeje!;9oh*TS|)pYf$3cD@yICD$(a@xK-4!=Uw05vrr0+@1fkao_stTV}FaB& +rVEna*r-MZ1;P@@Z-|^%1vIpSglrZDQ#L~r751fw2X~iyjZDQ^`fu)(=6UYVsp1iKZ6^4qX%Oc;NL(j +#R#9_M)cF9)ydJ9VYK~qIU0R#qQdwstu3X&m#f}jH2K`d&dMs>8Y-G!i4e?|t7s=oFgRFy7~qd~CmsO +5(KLJLZuIXr`bJX{iN;|t3RUl6ppW(#4Q@BV&j}h^g(LLvFzf%P0`>*i(m0vLv<@EMea8O>P)h>@6aW +AK2mnS!LsYTMpk8|f008m~001cf003}la4%nWWo~3|axZXsXKiI}baO9eZ*py6baZ8Mb1!0IV{c?-E^ +v9BRZDN%Mi9R1R}35kloEw@eds}e4w0Ln0gAM!-IFSiOL8S`P3{uhrCp(De|u+!%a`?VQ(Z*t&V1j@H +;=u#x|#s~%EPXZ+SzbxszNv?D;p+BYBI^!|D63z_Q&$$M8Qs +GTqrIIVhd~ME0IsS4JFyCL8?qxH(5 +6AH=A*l9#rJA)<1FdKa+5b|!i@Z6 +J)AC7(V{#>@I0kGxW%P`dB)JLDwqTeFV`+&ULAoiOVKs$!L5V9_m?xQeEk9>lINUF%$hIQ45{W!dr{`HBk!6?$l@pJsj7;0l$;)zfKpp#lH5^U37TCZ`@ +cSZYx<6OKVjXFZG&?t#1AgHW;oeZWBsVtLG)W*2M3K_UMbXsCd^?AC?|c+hGi;!#G;^>j86V0ccJgUoqvxI>B6)MSfu+LQEV%;5y +?iY4IQr^*DQOSNVHb-=qM*o<9!_xI?zW}D@kw{{c2+p*t~n`c{JvjIB1r=!!{iOI89sFO`_o+7ynuN- +z@`U-)%M4&Dc;2R*TTxt0VM}3K-KFRT>c|}gXAoj&O^ns-wJVTRlAM{PQ=GNIDF-JFN+OF@KWgXR8YN +E;fOf@ezKdE!tQ8c%Mj#S&hh>d0N#^H0NoSX*DMhj-gt~5fIU1`9U-F707&K#Gqd%|Tu>Tx=xT=Dd)( +QsL$BjEV~eoVcLwac{s+Afy5Pa?1I4F>-dg- +eZ8spgN|sUIG*GaWeCDQjMCGoNArvfJDbhU=5Z>G_I{|?WY`%e)A`0UzAgO!)0fxOm?wMs^>Mg9I}iL +?VWa-XD1O%n@-I+J0|XQR000O8MnywZ`EJ^0{RIF3jS~O>C;$KeaA|NaUv_0~WN&gWaCv8KWo~qHFJ^ +CYZDDkDWpZ;bXL4_5W-f4fomg9M+cp$__pe|*1deI?3t+L_YH;snkX2_YgyDX) +B=k*FAgQ&-N^;HZieJ?KEHZ)IlsIh+XInzjQnAYAd=Djj8u$~*MHvr`umrgP}5{QW};#X^5*8PUjOam +^}EkE@08+%Ny@V-oJ_%~3EvlaDG3;MH%ZHUPYPay(KjZNybSy95+mRGaspIKo;C72CZlbhXHj0rnR?? +w;>%r5_Mp3TNHbKYhX7*jXXcUe~G~=`a?O1_&dge*Eae$Pv=Ur +vHqb>PsAVpr$gfzI&dAfJrX+$cYi+%Tqr#I`7+1nBqoB>+J-z|Vh}X$@Gja>b2wV=6x^V&{0O)a+u56BmJSK12rbQ*7>%+7@W#KmQ(K_Vg=@^s)~D>LPA0pr{qS4)6E3*P2g(jwnHgnVNmxr8c;TkOY&uprQd0o$^ahXQt!K>xU~BGb910wXE3)0YH#Eh_VzM +bL=&rKj4Ow|1c&{9Kv2U!GN9=9!D>L5wDp2kCQsA6AONJE;=|M(CTYouJndKB+*9{C^eO-J=5c$qihK +8V}v4E_7}-yZT?M0$78*QZ>`UUCF~A*g=s}RhjMqw+C!WR`u&;Bw^AIoC1p;F0SMHA-p0Ym*jIUSU)6 +MR|u!0@1O#=u=NoOTD82(V?2PC!X@*)5O}mahD(pmVO;LE5Mx*1jHOS?~WY~`BS#? +I9Cu9ma_8rg@0IBN&8h}T(=gl12;K(Xks0CvZ4lR42AMW6a@)8F=u7xFD1`1!fXLV3@Y(pifx304^4P +LjEt``V)ug+rCAi5TnHVR*LecVk4=8I#lO1vZa^O?FBhG~}PrEkDLci5O$C#$SW(NNfBu5Z^7UeTJ?B-wXqRR_L;Qv3-^R%GB1c(;P +h1AmwGeE!Sz+6zLm>P1;=Hi*ywP}B3P#~@Z-r{nU)V-TATa5aAn;712|@eTl1GcFFs>7$ki=If4F9C{ +rXdjSdr*le1Ykcl`?m_M}RYQaH^E#<)!4oqUaV8jJzx0-bc^*tuj`uQFG1SiMo>Y{*;v!J&)lzp_<#0 +_g4ELKLqX2%d77oCn_TXFh(G^&MmIBAMbefQ;c8ME>B?;fO$RHyOyND}Evn46?NbgW$2U3f9Do19aru +gbdjeWO{;uqG@Y25x>cbEoKE9NdcqGOLXajEXv}ii}J3mF25Xg?=41{;2EyV1vZRw2#KW=6q8p+hmYa +-JI~u1k;B(O?_xirjwg8H4eP+?D79Yrcg}_Ho5&)Aif=HWrQb@2Ngw6IaG;bNsITz<7Fu# +x(^diU0s7000 +1RX>c!Jc4cm4Z*nhid1q~9Zgg`mW^ZzBVRUq5a&s?ebZu-daCz-LYjfMkk>B|%W~ov@$`tfSvbo5TE{ +-kN?q%cMS}T`JX;l;m3`N8szyP3W#9>YpP!zeiP=`v +3n{)+7>HU%%ZaF@6tDhp`_;GKzYiHqmc}x#(yR&xLzvMZU9O6<7V~u +;*F}+4`axm-s>rRo^h(PK4`pJ +KVH#n<%grYwt+8_`>FCEgXe91Nz@D9ff(_j`E5*mIcFh!Y+f}aKB3 +laP*TCQFO6Z`m*A7{1q^qQYO`cH@a^e^kedp-dA1-mH}p#U +Y$7fv;#x$N*vKrye=Cp!m{OD{A}Q85J48cPM&QGtT1KU;*JUnn$gnP>yvm|lj(8x2+D6XO`F0c+Sy8I +N)48CpVO2+EU2W2OF$&@+i-R#tvg6&ys0>tJXH;rO4`l}Hr1?5H2*eB3h*6oMeAM+82oh&eRgLIx1$d +rEOJt)jlOc3b%{1!Nur(SzrH7FM6a@5jvq*t}3_Yz#yliLF_84)caqf=K?&0sqz{3x{fp+vStlkn{rk6He{(avz4`rj-@LlLA;g0p1}8^@N14kK_?e)}GV1DbQP->L;^f3E&Z2xgxgPAR> +cYV{tk@E<&J)li*aB3XQ2K6%syjLv9FD4bn@QkiHLeDL>0t2Y+t<^tZeG2)`Cj9G`2{>fA_$aw@!cPO +3*f}?_~hh|KYx94^5*sptL-6K*FfQ^M5IIJP84C67YKTjlsPIz6i>R +z*eRVjJd0Zr*B*xW{fDumw_Ea6>3f}-TK+;+g_5!(t-A;F39W@-KbR&RDSByv>?DeIwFlyZJGJRAX~=P8aqY}5Zabbb5nx3|s;I#FFtc-GWxKuS}1= +5S>GQfjo+rh#7wGX51>6(+uTc(|-qQGWgKAjsmPhEH=5;fqx%)$@til+kJ>6V|%weUg4u??Z75OT#=0 +Dikxp2*yz^W)hZ4tryt?(1YGRupwR5X^|^;?dv%=0W!0ev+i +v34DgFMjVi?(nK=i)E_&5HHa5t0ptKXAj)DxR<_<0?1O*-t}f^m%1D&vAO|!gVkh$Tat4knb?ImWVk6 +miy!iyKM+SC=zJ;Nvigg)FY;bWw%VS`y2U3s;cQssqj>=F^4aK!>z{p?LrG17^6WvQu4g?TI3xplC)d +wV8T|9yxF?4zX?Q?p4HAKFP5%3qftWCg^2=T0{Bv-o1<7u7}t2qEIhKv#4|&8U?ZmZ3Ta+ +4*uA?QHO8kHT;L!c7iK}**ya312=9J#S%ppWV9ylzbrmV9JfsC?N}{~KcW<)WU18z^hS7Km?|xA4|## +I{@|~tR{}k7QOrqZ?P^@fIGv|HfJHW?MrP3gKFjEX#J3fDKMceOCiEZS;+b2+c^aOb8LUyL2=siNWg6 +@R7GYfAim0VlLrD>@u|KYJ4&NrQV&iO$s+V9P7&dIcRaj*Rsq$7en=h@fz#5aDswDVl;2H?j%iu5?U= +K=HyDH`}g-}N$zko350hJ=RvKk0`W5|Z{j#Q+Qf`jmh#sI`=8taNUO0cwlA{Jm2N;Dzhy<>QVZeOKfr +lm8rP>4SjYq4Ad^JI>^CP1VYqdZ;|C9nxKPr1$&3L8W1uIZa(d?8kjY>^iT0U3I%() +5mEShSrd8L4X(0N9ihuFL7a_{*dK_8X%RUtSSVmSKuqFE8yLFg-$FHkHxh?Dk~|_s07bWLdPYLDaDRJ +|9Se!kpuR8dZ@%J!4k>}M`O^t0Q7fQZ9(8Z;TXY01n`e~65Nlie6t!;46IR^WJU1-=J$bD&^`?F2Sc_ +^%sV^m-@wi$;CR^$cu!`(vTK6%4sbHY#EwkVG_`dyeL+5qLw8%QC3?o>pAQ`*A)QXgks1_t_j?#)FWyu#7mCmt)z!{hX-XVf9y=(v`S +~Y4djO#TL@2N?(p0VF=pc^bE?n?s?w-kvZ}~VDb!}@G;(rwPJkf5K#=ycel*!c6lb)ijt-xQ*&4Mx_2%$WQ7Ns +ceF<7(xg@*d>M8-w;vIiN^q<6uM!O*gu^wmahBTr)h>x7JXy6`>b$ +36%z~xBmuxMD$x#jLfG`Y16LY>K8RYbk@NU7s+|tv9LmY5ps$wZ|9$+D0*=};TXDGhT*$0VXPR59^XC +fW`I>5KSJY}r){cymnTtrmS*Iv&z&zW=&5+!Sm +3=I{J_1Q>e}_r#wxXZ&$+7aTbrkwdIv&WI_-ud;RJj^IyOWfHX3iQ}TgNCX7gC8h4`@QPQhqdIs +olcz|pp2aj*DTA2q58TV%^up}p%h{QokgtDrdd7|Cv^i2b*UGyNs3;=R(S*B1Dfx|lehxYqOe^{iI9{ +m7!7tP(DI{w^4hnHB5zVS1TRS!uW3q|q7gQXiX{iJm0JBHSd}dXXcF&h!m(_Z-n$<#?Xp@w&51y$4fOm3W7{+jj6t-vkkDY;$5e|eg +`2mQkm@ki0#H#CQZ^~VD1;Rm>fWMLH02lS7J%EbvNqDdnw7u{oCB$8-0Nt}oV^O8=)8HWC1QZ3c`YA#KShO{zCIz#rl?SvWGAK%(Fv7xts` +>+R*9orZV-|a2mZ&AtAyUtKI0NrS~^R!wBGUzo%X*X0hUpjr5HIv98hjq>wJu|wMAX+C%Y4dFfmeSR; +WuNPw$HnAhwFiI*r%hMonxOk00(zhFgazF5b6}$sjyDiJhqYG6Mnc))zJkYaC!lN9ZX>m;X%IjFJ7CMGF(Ah=`6uoe_BVgd`y3F=^wn43>4i1=h_psjPzZ57#Pa-VQG +37WX5lmWBCQL#2(WoeuuA8?Rk9^}FIVL+N!vIJg_2(GNXDYFl}ieemr2;#xAQN`K$FAp6vX_A=MKh=q +wMkb6X}NeR1mq1C5v}V2V5Tu`P$?`c9 +$Kjm>r*dywx#44unqH0K3?Dplf6`<+dzmsc1q}w%Wm>!M9TZ|u86Ns2ETOpsxs_F=?bBBv`t1IR$IN1 +m +e$WVeJnzZGaacbYnAUKQAI?@78c;{Z&&&0$%zh0+~lnaKvYY;<>C=%ghe;aZ7!5l?7mxXSq?$lb(yi4 +S)#nsI!nnPTrw8`tZ2^9a(v0GXk5QR&J{nz$hrKfs?1uwRdmSr*XI%FrjgGlH$kL)gWFvGkR3&;erSB8YvLgQAL{Mm+Bv(XWP^~ +Hlun+HpXsa-H1l#Pry18WI!Pm-0I>_ivN5Y50mK_9(l`bF{RXwJUqr$*QgR9V(H5Ks+~+US-;d_bR0RG|9u$#LSdN5+4^xx8 +O$kVFdd#JAc<-R0_3s=0RVf-UNdG%yHntL7h=WqOHTxk=aA*v&^@x +PV7f*z&%KLOEnVU-!tm2C8+GsXq46*0mQJrie>s&jgT@#Gz1GS?QQdD&K@QDdX?H;k=Z<)atn@CupJA +V-QQMgjC?u3Y@5m~sd!hkVyiYf<3)ua#vE;;o5Y`zwD-h}8K|X6G)las=oe +=BRVHd>vemXIa|R5YELD|>$s|0$=FmXvqG*t9MB;c72vGHrwKmv^;LF06cc|m(B;I +&eU1q6mS8w>}vO~g!(TUW}=Yw``emz2Q6Vq6vwTW{U8P~|~z5{S$>Qe4DY)oCfBNA$K-ybBz*+y(NT6 +f}-nFI_a?a0k*m4zZyCI%{mS6FlgP+3|*1p_N$;-~V_37!%Ho(NUB(Refr)&*7QMXw52 +A~W6_G&{GJ33@}G=bJ8#6X~W-9uzmR`iY|&c5i?=l~-y=QMB*qn>r_6nXQTuvmY6gOR?7;e6t*Y0lbE +nezm3dZG2%n;D@U1ab75|6Ey(k9jQXJS#D-Z!dX3F&ncoa;*R4saJP*!Lud|wkbiY1sdfPRx# +>B2GfRuA28S{7WtiZzsAo2NJZdk7pqlp@ZNs4cyR>?LO9k&&rSl7+%>-wH9;j~X{A&Rxv+N2$cZr$CE +zM2ZSAfqeAP;|V@Z@4C6XaDHXG1a#!w69oc9Z|j9M7IRd<>R-XcV?$M-|m@#Vrzr3I+&!0hA?Rh27-4 +y>kO(%=tJn#vSplvIREOCD?RREnSU9ud&$C|xt_DRix%u@jwg!awwZ353FIi?Wns)@I3ty^T#T#QA>D+b!#jkeR +F4|aFz~?son%VAtmxHeTzsoBMO|%17e&t#oz9k>;*-xb^zh +6i+$j5O8|A+)??1D#10i^TlFkUFSFkz9p)vfg&*>!4RSJnUA@(-F6(8|$DO0%i>_W?&b5E$UbCL5>n% +i5j^LensVnY^-lTiH*%?9i2HWtmpU)Jl|7 +tn4B`Tw_<8a|Tz>=v$xa>)}M{)534&V3caIq>B@r$Z#6`ZcTPHg;5GuI{X%Arw*RP^yQYJ%Oh-_mn9* +i}Qey-x)m-iVM&x;B= +%AK{Sh<#y+bP|&dg_6O&NSgLkw|SKHiRO8|1pS=r5F4kjE#Xv`)=}{NX!V@&G>z24X^^SCL=mP#oBBN +N7ziCDy2Akv+F6e&J~voVvvV%r_Pi=0CPJEs98pNslA)$PAv{lUr!?Y6j}`c?4*FCu&Rsxz<-vW2BBY +L(1yCmr4y%_SYKQvL0zS1$XFWQG=VeQ=^a)=~fk8pQ!e11RC +i_IeE7~w`yHLFKF5r=Fzk{2)D00zW4bS>KfCcZIfsWVC) +eiSU5X}?#1mrogCa(tT(1K$;5?)2UR$LpCj)u=TPZY3O6pPdRnvX&@wBx;>G9K|z +;OecmY69?y3Ctn)9*v2rgm#F(pK)5roR$om*Fv+&pG4qq1+y1-qLCna<%CLyQd+J;+%5yZV5GGr{>yPPQ-%lgSC;k-V5PEe0D#)7jVH*Df1@krZP;iQOLM_#=x)h8 +mCC;idVzVXpbwxEJ9I}BE4&~fe>~3Q9ESYm>XUt>u3^MyZ8ho`DasV^wx?2~`?Tz}gyW}Y>@K%|mzis +%_NRdE@f0O!?j75p6F$V^D+^~O(_1iZ+gf(4H$qBZm(^R|KrliceB^cMTpnKYRx*Xp{@6KDMFeh*tLd +b9j;Dp%H5VFPwS(81i@KCE#7hL!-if~2t35Ma@nDZ6n(gkk{$VI?MnygHnzr>Iemc{~_;En0xrUvitJ +$GPVY=XfG4(e%NwleR8FUZBlU-GEofOomQpMXmHujt+xP{kK!hs*&JbR@J3Mq@-+1RI)W(a9Y{Uu3Dd +_B_b#*^M*dp;g#Tb)(9-AA^YG<4o&6wnDS@jA+p#EGnBxuhx>t`el(U_^AXa~m+=Y7!Nq3z#Lv*juav +o#Byp_ih^lGuSnGY;{#_!SSdQS(fdo;%86UJfMTE&ggU!h{US7hn`k=WJVo8r4^ztr*Z*yinS6`&1yc +UI&x5?%SoNEq%n3kn<)K`66!*lh~Z{9Mg-$|zu?EX*A4R?wQf*6d|K*02j-&8;KGJ_?#(}V#a}S~v2( +-c+xH}Th$3*WjUzk+&X$rI!7}95h_1dRh)6;aliRkfq;YlnrDmqMYSeS#W8d_XG_Lu6!z){3vvY+io? +N-2x3hyb9ap{~u{3P!(XQ$Igi|nVzS_a$zim#Y6HkHfi$(+2cmZ>>S4cLEBNfdnx5qV-j#*3A%jH&?5 +xmD%T}16z-wcpi=e4(~PC98~PUH~KmRYUaqN`!Oa5wXtXsDG(wXn`DO_^3x&L+KiyWC*dATj4wj?5_7 +>Db?aUp1hx6XoQlnxn{-r9|YuRGZr7ZItEuwYTqV8lcuPJ2j>rYxOJ0_7HkJU8A@CN}HHgbd-K%}jzBV6Ga^QG8X=cD-RRnc6#aEIJgkOKMD%S1-ih@yptqoQLw +x3h)a{r0P;J|3*#~b0gmX5-phf$h-5w(am^eACi1~Ebg!r%WyA6$?`&Bw3Z@lN=-(=(6JUo65@RWmlr +U`Ff*Vj`_#D-4MgF}P999^rV@Aji(1GLK&VNtvTkgtDRLL7m&IJB-_2*pK76y2m>?I#?LK0sM&xe|Ay6^D1`)b+_S3mHsPPG6`zSa=<1y*eH{j78 +`Y8R}NdT~v6s0JRVKmnTTpEdKux-?r<4hV!4ar_Izu3^n)^cCjOCtDI?&fZ>l-iBSqH +k$3yZST%DGAy_yo`zZE6(s6rso{a}ziQ@TDN5g=Dy +I1K3P1lC&MRxl(2LjU_t*and9$*pDTPlH16MZCB9ST%e5L{S}5OA|wNf}BW@2BxCV8H$T8~E2j2NRCi +-S>3GA|7u~ +;>Dsa~I|H5mq-P5fIniT`8;aNe*!8s!+6D!U{|g6z*BVzCg=7sS>u8Q16-SmV;7;;@FVjaDrH7m?LYU2{a +o}rbxkL+<9i<%Z=6@rw=ME~!3H&kzrbj>6$=KVe^^bS$7{+fnZc!z8DcmZjR>JC(G#^kG +I4B@5#K!b?vDCjcnD7&owS$A^JNH_E{O82dzJ8`Q_Go4ky>OysH

kw%TDsf8@opsZ7P7e}2I~kkWCE!5P3n*|9y?9LOz7G%s6qh+ULd3e{>Oa0yfTBL}}_!)}F2C&@6Sj5r?YcVU +^M`p732Od5a&rQ%we$Gf{d}ywYU7qC>xW#10nNj@{(J!h(rcNTPP$Sr?mK_dXV5|9-+#*#aI7Iq5EZu +oI*bd%Vi2i2}TM0*iH-Ioi{nm_HPs1B4S?s96Sd;Tn83!|sT%J3j$l(FOnvwm)`4ATgk-8Zp!{{|_M1 +94r2SLCg@)`=NLE5zJ!J3a4E$n3zGjiNbI3S4^**zh3}85M~a2**xHCN4z^tCDLKN)$N!QTOll=u1>D +*E&ym}rl>zdgfD41exX)Yzw{swefDBB;$Gyj8INqjAeb0?a&r`S0zy+g-l1HOOmrJuqz<=KeU(-%)Co +D!Gl3oB+9=rBxaw}&_6RKUm>LBPy6M~+W8_lwnZ)YX!Zrg{IjL^^9GJ4EZlP1cL?{?R?v}Yd#Oj$MMT +7NlNBd=L9`+{%p`d~{J4PdWp?KCaSWa-Rc1OJhXxSuYn2<0%OJSI1Mv*Yiyqsnd +>{ID2v3is+Zez#c1{T3IR9X}%dNTm;x>A`!3U#uP|eq5Ky(TyQYQtAYi{IdjMpo49xbQVcXTgGa6i#s +5!H93lY?Ca?Ft4abtdZP&CTrW>73^UIbS(H$Y}4LbAR@T@0)7;X4S}a= +P1s!xZDu$o_J$Mh@G10I`mf3G6W^hq?d-UWaA$?(et;Dq%M7JZ);X)+q^MGt>VP#1EWf8D!cu_g#^4tsW(NLPZH0_VNVF=W`P&9Q1e?`Akp~U_Cm@kXH0N)Mh$tMxVbg?p*X5h@u)Nc +sFD=Rh?JNN3w-l9w&Q~YHnhZCH6b$>g9ejo{tK^QQn7Bt-wi}f%x7X+*`ZtACmx^5FSfKWMW_SqjVF* +hF4-L{(79>R>Pmn`EuW$Da!+P3YJKMxCIA2caA|NaUv_0~WN&gWaCv8KWo~qHFJ^CYZDDkDWpZ +;bX>DgNaCz-KYjfL1lHc_!rsQ&gbZA8K}c1Le3p`IN>))rVn`wa0W2P-xLdow{knS|m; +nYP?KoHYuymD006pD3J^h;L1`iJp4;Xy%&0;0esto5@vEo%FiZYB>3wri1|L1@nzR~auMzZ(u1cK<#8TPK8ZBSim*Ftrr^!AwhXGPIMMJ +6QB9^!og|xss@R+m4r1 +*6`8&1#Bnm=pFl`_ng}*#H$^QD#N$lll_GUk6j^cN1%AVmQXDkI70t;yP7 +AT(mwr5TM6`!L`~!2uhWSqfZCCOkqdX%u*&kiDCnamsYSeNm8=7A~;yAbitx{J{JWj$-(u_FYnH-fzy8wx#05Z!^P>l +;Do5&2FTinY{gUj@-oXF@b4w^kkBKss1r^TxDZiXuYx@wDKunqX#WRxzXYXJ+cR +itEPE@tsO7Ev4L1y4ci3WJCK%9|zQ;N`%H%_Wi(z>1170$sy38L=rW(1?j@7KWigKwn^e*aTcqTuml} +QY7;c;h3a+CDhk4{<|0-e>ZH*4Bz-gW&frNQqkiPxrn^XIX?YSEg)S!yNS|%oARrD-O$ +w7gf2AtK}d7;}0w@6*#Vx;m>{Qor_o34mv|7GcfQlV=&^y@5Li%dOwdVK67|1#qYoY7;i +rZY5WKrG#ZCt4em_{WzIo3Qun0VmDMH@mXt8m0nH}ph3~Umq=VaFK6{Q46P(cD)AEGIjh~i>>?s@AsK +7_f<3wnGw(V0^5hNvJo7VaJGeiW=s~Dp)HlmckBZd(M!NXa$TGeShgE?Cg2l>*|LR58uiVYGRvm;l`N +t_C_1c@^&^CYh5o`ncM=t=QDi&HtKyIMdGpV+!L4bX|qvUDCV*qRq9*w#r~6ZHqcsyMAh=OL~Xut>-w +ffE@Ffl3kQ=5GL4eGK7HKQ$>80yyy8mysNAkmgtlg(_ps00l$Z34)Q)^j1gFJD0MWhSX5MDu$L9#Q%q +FgCQI$5Fm?NY^H4Z0IDX}3MVZx%MkEl0QU&MWq+ENmX{ +#Kq#a(BppY%QmwGOx3I0ToD8>eg7-}O0kW!f4n1Uv(B*z6k?z`t+Q2;*ClY%PkxaM*PO7~49IK%#Zi3 +e-G$62%4SZ3a;qSPp;9AcVsOFd@=UgTo)LF3t`yWW1B<-nY2!<+s6bOYjK3Z2`mZZ?7rQZ9nN4gpxs> +M;J9aGz^~<5yWFPm=AA{?zBio%$bLtA*{i$tBoWBoIH%dxCww}gx6x`nhYdlk&GmRpsMCLzp9!AL%k# +#`xiQ3SBV<+`L`=>&)^T_iuYZ#e>>&>SErn0*+ZSv#zcDK2eE-IATNcr93?mi*u9SFxTcjvmGyicKT3 +r{6=DNC0lESC4tsS7p(Wz(Je;!~`}2t>YC91;E%9G~iF=Dv#?uIc!Z&m^Qr!6$^%HJ-F&S3}LE-<_qS +*YzlUkfT4oD7)rhmMOO90bdB6;j|b=^90vOk@?*}K(3xp&9=Tn1jTrzIOaEr)7{2KQ0aFgI}D#byuBf +uFWaO9&vX@US)8*1BY^zSJ^-!f5Z&LC#1EH#4_vpqJu@znuLtdG+Im4`;Ar{PFti!-y5ZbvCbHHzGb> +#IqtR;p*ehaT;aol3m_>d{q~CHujS!$~a3uQUL7@!(U41w@`U^_3HE;?!A9FzdZY0=kpnqddRRl$H>( +pp)%?9a+T6+wE${a*A;BS{~|VnX9`2tsCrG`2_}}uA{%W7kajXLq9bX)34iTSujTcHLH4)KSvq|`Tlm +?!v-Zg3>jY2y^v5iVx6cTjyBOXhjD8+_`w%kW)i+qW%)UrryK<~yfUETL<9br~+fCc!lqX4#C23=Pm1 +LzrYXo(2S8Z45%6VCC30Y6r`JAl53(Smld%qNhtCRH$*VrS!zOJ80!#5MoEGe2i1~Ss3M%LvO?$@fR7(M*=r`*mql10JGUjTc=|D +bxq&NZI#f}$%3jsL+IY)~BrnK4w6g+Tn843lQBl1Xf%yzerZ^(>!m8}UXL`6VCsM&hn+@CzH*Aa;Uhi +NAL5PpRI*!oYEd^GYhhNSX5q0@OP{oq0ykxRgwu3hkJ7#JTs2YtV?Uh9wHc$AX^s@HGK$T{XZ- +hbh+wn$^trs)RD|086vM8`Wz>PVb42RF~yAqeM?4OF#uXg~S +$`?I%)_KlYp@15(n=WkRo@g55UlblBlt2ZDOFpz?SSK~93<^UW&$PLzf2w|XF3vfJw&z7>Nf#Cq)!-l +!nlBW~)LJ=`Zl1qiGhf-P)0>qaZXU^q;^7*U84Fr$tTN-xnPThr2dHH9T? +=>EJExTsQ<)KhC^;M+Pqq0Pg$s!yduftp=9G$vF^b0=sK(KDFG1>^}-9`iBp#Vc|bE#8qbT4Sp~Uc_l +7n-7{f?TdZ7aB)xh>|s$*nlj50&^EHh!zaft{^Ps<{Qgk+lcAoDJ;Nz4AdWTp1SMA$o@ol{`Y6+H5h% +QB{zQoA(8KM##Vy5ZLgQhmbXk9%#1GmZ4*gXB^r!EAR53j%UBb?+(V +6uWO0eqQZcl_2eE8@R{H-xCHT$ndxwON#l?fT_bN +>8sfmWH +HpbZ>jrvu7&V>)8!l3+Yg0k{e|+tbu}{QS#z3Pk2iEWE7Y})VnFbBV(sO(^sWxcf)nEil8SQrrbxZ2Q +o+daMK@ab%B`7JnR)kW7MtYuONZhrpE!UeggZXRwM3U2ojRX1L+cVRT^ZdFg$9)lS@UOgaeHzp2_W+y +yf)mG`GVhwn;P5M+~k|X+Q@QCh}xHp9fpEJbeSVa9~Z8HbYt=+4_mW7CPhvdQGF;n +my~YzHjyvs#kxW**4Y_-F%!Kxx&&ZFy>*+0inJNQqdZrUzD-Lr=c)jStT>OVb(^pN4e8sDa0HzjbJlS +4e-X$TV;{W2744*G;ST|9S5rK2m2|yl_QwES|WhGe1W;ge;oxbW!!LKzNaK@vQ?BVVVb~IsS-8V+l&L +dv?)_Z$Q#dBc_J_)6A?{%5MV%keyyg1InqjS>^25crOFe9I=&3{m|S2o%8>mCG@oC|TyFf|rmg6IU}e +GfcoYWh9&^$-dBnd@sX{_xYR%Otjt{zhIK9MvMLP-cF|kpi#EUfB!N)JKDar~+f$^BxaHE3yR;DC+ZQ +~so3^l7JnQHM$DFxZ)KJt=AObnVT&wesn`{+JeGJ>UDRLdRo|JspLQ*6q!l1|rmic3=J2*z1d+iA5pr +y>*(>+rtkS_8K=o;4_T$wcgV;IRj-{$3MmmR(8IlI5ta6q|wK(4(;0wL260qRGhZ7skEM(&T}=9R19< +xu*po=chPtcOQF;lvz=TS!JDaP_;075UEw(ArITP+oq?tf%MyV{Vk1iJo3T~q3LrrgSG@vGwSHba^<> +_8Xo$jFkO7HAlfInzey(3#ZIYcR@;&>L$}Dr8tXKoDe36PEeXjeXVq#yM?A8aWVE|i2Ax7?*c6D>1m% +mCdcG=YziVr?Gz6>Iz2c9yuThsfEz}&@$Pm11R_8r{TA$E +_TmdQO_Q*;{s+GWM`m_<(7cmUb`pk=IZs;3C!sMoK;-_4}6N};5@||16$ +Jil}zv=!P2=Z$AMJhG-T|&YGG5=`mCnYVydD<)P^R<#c7W3b8@P%L>a!UFAtXKh3!r|7r4?2V*+l19z +*A$6zN$04T<3hST6_Px!Xp)+m&$ETc6z)*C( +G_Z5}+jPGnlpmM9zZqMYy})h10oQ|8mSF{cFAC+2fEGY);mdYhij2G-DHL8!By}|}qLIS-74r$>QKSP +u70#&Fg!+)Qk)XMg(d`nP?K3@d?R%^+8MP2tX +GVu%1650G-h|DBadu(`fAek92TRW^VTd|Ls1O+4FUXppb-BXzznUu!HiTlUWMp@Zl53DInUPGTkSqgV +b8ti$qq9i;^dg{4Q>ZVBiJ*H*nsGaBrC)IA9ld4aW{vBbZ)DpOnJZ+6fuKvz=xvm#nzSs^kC_&|F_xqIx5?McboVV_Jgh@bS +y>OryVAqyUI=TZYkDWBRaqngie>fj?{(Mf4_6^Gkr +a{7pk@aVb>;K6<3X=X17*=ZCr$wunC|ccxDfWydohrB+{R`o&g5+2cefbLw4(&QH}1+{?aq9^Rh6`6I +mZa2y^P{^*Ofud)YhLrDulr3;cE|nc+vfudwLx4rtZ}8ix45Ui;xBz8F +qg2a8DUd;|k~dN0%Ztv2~<~H?hHurqClt>VDfQM?(F7P)h>@6aWAK2mnS!LsVB(q0uP^008e6001Tc0 +03}la4%nWWo~3|axZXsXKiI}baO9eZ*py6baZ8Mb1!LfV=i!c%~)-3+eQ-p?q4xrP>{44R&vreA})|P +@in+M32L|f;26}3TuDTzC2w~bM|ZgU?KiW#q?VHGIK>_A^uZEm=b87J9XbetBfw9)S+2RzDqS>k&9vr +HrIjqq*}o2dj?Cdj&ku-%*T0@a)9JR;_B1P+b|b6hN@sB1|Af=Y-Z|}{Ia?>7IEU +xIUH$a-*UQw3sjGqu#WQ$u`O=>M{QCUWo6A>5YsodMYLy-Z=*`hWHfw0BHqAeBQ8qH&_YJCb+ep1N{v +MESK5)?k{>nGEjVu#*!`3`Om)69Tz@?UzSSIjF%0?#e-dO#nThBQ@y=}QE3)Ta@X*mYC0S3BjYYxo+^7FSpV_s08I09(e#qRhPc#s#;g#3)C6dMJEbfHDXY=l$;AchL+%C=#Q7JD9lN0K3JG$=AdCipaQ=A*&gz +Q0%;GdjC4}FcZTso{*h==O1 +hy27@*}E5o$H(4;p{E`0%Wl5v0m$t-%YwpVt7ahXV9g94viw=U4A#eN0zqozdV0 +84A$_LW@VVc#F`h{dd^@vJa=?_+CO@+%izg~N~UJ;)X`iCWbln6^n)jZZyg2uNi0eFcaG4@{Vst=MYC +?1hTE_4qEMBuXOR58gVnxGKa6ZLbx%Zi1cxNL^XbGF<$Rv@F|dx|;~hf0@kCAmx;(+p$RT7pLCoV_G$q&7xo~AXE3#7`be%jDGalrv9iQ`t8R{e!>~t(c?gxTmve@WR +hr@cGYBEj3G%=HG<_KkR42p`;e;NCBYVrA+3!^0m}s#!!+6klJk~dF>hgfL$>{-YNPLL4W2fyA;3C0g +T?q~m+IkU#Xf)zmT5ovin7pNf*d|XdE|M274)KnI{Uc1s0aoaa)y|T~ux1-rv5y=orD)N)t@O&vV1Pv +wBoJWQS3!IdOecX^mO$xlu{acnC&p(jqfzHx8+|u%`u9au*U@QwAX-oSXt`=If=x~ApM}rD6Fff&e+* +BE<0O3cb$EhIM8VNf&^-(O;uj6STsg|Xt@!r9Zi6lew65DIDgL*Pi-IdV&#rJOpV6|Z^rq%Hmb{AM8L +YWpHMko#T!~QQH@4bFuW-zQYI#v%&{c&}XsMSJZzD`JebUU1iG8|m1Q^M1>qYVHr21}mJm +$M;?mz<1;*(@-lAehYnrQsv3s`OOy7FTC72F25B1qNYV308;7tEfRF0@ipI? +@Epp@EKy8uu&mmal0`I)hGenA=ScJX;3)sD(tM4ut1 +Qb|eCSo1!b%o|>o>!vMc^)ZVFA_LDZfrrs+u1qPb$TcBw&Cy~wc$rab<0)4Nhr_w%{JPJwl0;@)+#PvwOQ5OLD2+mEy=K!Q^Vk``jKQXyS$WR^m?Kj +$HV#7APxTq(^uhdDG#<@uo&h6ucK-O`hTs7r<8|Q0!^6LpJY_UNj|cJv4a67TAf@bh6-gn=`V!XF3{~ +Xs~GN!Nk7Kno8fw%|>a)OT#dwI4%^~L#_mIwpR=Hsov$aYR~NVb@q6AGh*ql#ogL4xiprKMdJ2{@8}j +)DN`i-_8A-sHQ#B=BrY_2Okb+Ga{m|DS2w!aue~O_*^gXX_pwOvcZK!(UWEHmv;TAuCSS;B;{fuab-4V>OiTA~gMVWwlWxv;uf!BMxt@p5YBj3EKGq%Vk;o +hD;D1Icw?lyn2cmMl+wBNgbM(_V=7yT!?;y^>}BM%$;ziym=15ir?1QY-O00;m^MMG4B0I?|Q6#xM8N +dN#S0001RX>c!Jc4cm4Z*nhid1q~9Zgg`mW^ZzBVRUq5a&s?iVRU79E^v9RJZp2?Mv~w8E9N9?Nm?*Y +mNV=a^*`jNgVQ2@Cp0Rs}FMg(@*a|{(SY3D2R9&#EI~GC% +|2AS!8P#XDnXlSy8g9vWU~wPoLF59_Rk-fu~Vc_)Q^bAj9DSpoBlw0H5%O$D(W&1D!<~XQ?;) +v(w2!(&(1?|%O9?w1d<>#tuvUL63g$~e)mD_+hPS(ePQy!7Z-oR;{b*Xzw@L6Xd7?2_H|KcQ|7SN&TU +j`)&s5e7M*!Po%)2Ml4hUI%HE7kn8%4JRc1f|pg1GMwNSJWqm<5Bk$--(&sh)5S%9=(8zJv_EFzR?Qo +IW8O~98-HUSE$OkMKRpwFUx@9l&(8M9{ucbmz-Nm;0zWqJ;qmal*1*Bhz%v6}9nbln3~;bM8u)tyoRm +iczcIk8D~25a4to^-|tPMEUeHyg-Ia9_G|#Z>FZGJdechqJP7ZD72oPO;XVzsBrBXpH)jK$hFJu@dnj(Va +SA~N9_)H&1E3^WFA_c!J@_TcO~S#K3H&)-@Ku~{H8DGQB6x`2_$AO(#w9}S5DZWwf+_e`YdW&hJ3VDr +YjB;6KY>uv0Kr+dq)4^qLa+r-vPU)<_D*}J>>8c|MGtXS3HAVS)S9hAqlqs6s6@#?DDf)g5eu|vS(yP +M9)x#H28MEzbBJoo7^lT4;R>sw02&$b>oZt4C|S0kb(0N?1)#`_4CDff#UYC&33m{26O6im33-NzI4! +C|c!0q(U{SnW@)|ebDenTgC_T_*3VgH{JbB;{YbEb->bc+zYm@fQux)=LG-b_1`{O{6F5sFe(LrQ< +E~zX~FkbSB%Vs!y=g!#rGl)(l@LORvx2ZNb=7>f+FW(yaXO$Dn3kjAWFbuJ=aq7U;^l63F-t(Vhb=X4 +V4GPvn6p5S(YL>z*U-+S_2^LA3;8zRD+@tfblo}nPm)>2(~L_7OdfqJBZGJ33(T66+d9OPvv618|kGe +f85to3MQ7NpxFwS1G>NhLwVks0I&sI>vk1MVV-kI29Yn3BlN14~DkjUoMky-8e+67)_s +ks@TL-H+)S`yO?m-$T*lz~ts`MVzljYsP-17k9FI81jP~8-Qa +6S~$7PnIv(NE&?a$4{tcw+X`#Zo;zJEQc)9;=czh%)SkScGj5OTEU=04fYMaCYX7K>46XUbq8L8mNI+dyD+02l{)c%)p5|0O`6K_# +KkuGx8^H;C+nCJ4mgHB!=LjvNqvLsocKZ6VGCM<31@C+uNPq&KagaGHa%O!VEhQB_>ld+!6!&s@e!k+ +B}zgeGVTW)HIp}{*@+9dUa_+?FV{F4+Dh=R>hwXn;~dR?BLse2De@V>$$YT&8yKZJD1PQ3>wihe3=xQ +!ROIzQ)uw_dgPs%+j$w7Z@Rg1qB?SNKxT;G&V?!-&{g{~(M~y+IXIi^AUG$#Kd16(PH04l4y1^5s1>R +c_dlR~^z#zDN|L$C06kL{=sZ2b)iF5E=l{)%1sKqJE|FVd)ze9SEGBXV-)ADLijX6|$%M&vq7kJk%{0 +c{jf$#hv*L0(oo=VQ+j{nwuiN|G7Hw*W-_!GSx!W$YY&W2vyX_(&=2Nwz%-u^Nw`=DqR`0HbxH?8le8i25nyE3Q)k+9+y>+YXIPoep=<={N0utu^g#6>) +I+5%9Ccla%8?6r5U0bW!m5~1S!unM{0Ut%>Pp$K+1?{9V(ep@jQy|}wTXdibsM?z5^S*l42Rl&YNOjd~aZI$3$-2OWRh1;$Ku7$t)0eAvmgk_{rL)RwQ5NI^ +(O>xL{K=Z65228$GGWz@9%wA97~rcxG_DpqNhs)%6sClQK*3>^rC0?!nD8c*xmeOm^)uj8!UFlHnJia +{{F$df5&EJbA&kdl{LGN_zYgQASXgxia2dp>q?WdzHrpiQjN7@PGBK1_Dert3x&m}aLipl0A{=E?#KD +`0CrzXmnT=bknQoXgT`y@0@bP_+ta3H-Z;ZDFA3PNo+ZLgBV?j#}{Xyp7I4V@%l_Hu7Z4fkSq%VQG2i +tVx|CC;+&2WOJCdP&>26-Lh+C|3g*Wde7TCo(=F!2S;D((Du?cN(xRa&xD9kZ%|5BkYIKz#%Xo9Qq*B +pc`LmeR8NdiD1}FQ8yENp3eutqfpLRLmPTY;s-HqVmu!vQC^}AaiG$LpCJ#RlEmaB@MBo}BUS9ZrX&H +s^n6A|L=)w+n$V}b&p?;BG$S$Gb*?V|o90z|w-qFh*He0!age5Q36WW8&-NzUzXB>V4H(%UWxxokFM+ +2yQMs?I=TL}dvy^=y6q^74)wtC~eJ<=|~kv~>Uf;YaCOC7@_LSa*aD>5xMgijpT3l6q(LM8C-5d|lMA+QXdUU6V2bGqmLAuf5;U1^CbY{LF7!6FpszVT9Rasf^D*j{6!qz1K*Gy0{M7G@W361Mzw%ERY5Mb)AJo)q=8*fQKI +osPc(xhC8vX4ji4`dloK1s7@lf`4x?uJa~Q@EU54n|inJ>WtRRU4>^R{$G9~qRQj34dbbSfsm+V2|gq +OY?=}BvXl5mDu>1;N@G{<8vU#g&B-NeOBzTJ%PsLngt^#RjYLF>+}f&#>o$&O+E>C6~3QxZ?mfw7f)f6rn69QI1p16SZE(ijX +Z`pP2xubT@_Uf=&m7N>)o{+T~s;v +xC~HYy^ziLnDkU*PZ2Eo{+0581!6@ps?(7sCd^#)nP`Fdz;tJdErAKD>3IntHVf8+q_wzvh$52zgGLB +F`9>Q7ohe7mX5kdxy`N8Lm?)am#v?)NtUYzsQoPf7_%|0iNTL0d?hHyr8Z>o_#Hr9mwJm;#2rsba=FY +=;E>iU4>~V`q1ZM#G{8As2ypMfss8I;Zkv2tUIuY06g@O$V8X;)>)eU(~!}AIgD)p=&+j%=*sXEPcaZ +90p7rlyWO6N-S!kuBw*Vd+7D)XI!h0ST_#sV{Q0CUh_vk#GDw+2Z>P&e_9S?|gNHJ4eMOIoD&f2SK|= +e}B~b^nYZmc;!~``aar-TH2YdW#hKAljr?C&UGIH8?8?~rb$Eopf4Vm@M>6?yK6v%x*>OX3lPp31K}D+H~8?@psSNR&b80cl`wx-dN?TWS)#Eb8W3^DHBN&KK +I-Y%pK}RDM!+od}*J7|2izPN6FHEEnn&n%%gu<6#N_0l6b{j?EF!vhESeBx~WY+0a6LGDy2(rJW@6wyC-z2LXAYMwJiQm+4biSpC@>E#}tYvNh?#Q?NBSdHH&(FUKB6oFt% +G=H9-27C;~A%l;4~g^{Bp*J+N{_HR?YWpk=&XERT!&kR>^p=Q-;)kB;c{Xu5MVY`bXMHyJ3gJf=#i{T +j{NFSpvb&~$pLqkD-NIuLun9tN@k#I4%*sBbG_FV7;hO*sn6gFXK(JV3WZgJ1Wsz?ekR6oysuz?4QYr +Jva~z~mtFXsY58L>~qvexFaLFE0Ph{`u?WUk>^IzCCw#`Fg5uU$kh_Do+m+WlY9`7U1bzZ)|t;o94kT_*9F&SWG7IUtq2bklRD_OczRTh +T~BB{W~;NnGL$_x74IPG^MmQg%JM&4#X{QQpA84{^MtIiQse8;+!();Mf0gbRyiM}4``UgsKy0c)v)> +H=BF;4H~Mps;TLs6UiTU3O^RS+w0b$}261rCT}yU5kaysurWybC7mQY6hllbU;Q+!tjj^OUsN8E<+8c +!_5o1*7)#R_>q!1chnt_u3;-J4uZG0KAyDzg^YZJOB}YVZ?DnKK#NIrA=CC@;h;xNJY<$K3`t8@q3C0 +WM|nQxwlp0-$~a}@lded%;2LX{#ipG-H)pTwrWO%B;e8MGSHAgJ6j{;bArmfSY@$2DiKu^6SroAoQ6@Ikm7;S~BhYMT^`Z1(!~cmHu< +-j0q2G%>#OUR;0HA9{vRS8rA!sr2ByZ`N!EMR8b~*Ugv~w0_W0p_^ksJzqcQm@jWq;YU}`_@HC5(E$2 +c^}S=Nd3#Oc-M^mK0Y}H~iXJU3040MSU~|v8e)77n|rJ61|Ipp$2B9ctcKKzN +r`2q-QK!;5E9Qlx;zqCZINmzQ^${Nz`3Vyw}6SijMB}wc7$;@het%2Ugu_P%jDLyK1;7b;)W{Z0ZGh@B&E=S@;g#u0eDq>1w)y +}&_bs#Dbme10mhjGWKSP>!dK|uR+5i)BI}ZCQPInkk(=Dt|0sZ)PnqX4fNOR{p}Yb;J(x!544IyZV99 +4Xe-$e}E5=JH*`%>NDlD`_!GYnOMc|;h%IQrCLlp4f0 +LvvKRtHr-^?C4?#h;DRSdW0AYQ3fwXM{`ext@=#`ygUYaz&K|sRPI3AGevj@=b}sFaoLbFt~c2CHfpT +XlPEbvPg)W%vvp#Fz=kA|wCA`8*=6eXZNzxo=89Y|)W%jTJ9}I8nY;9d<}Srp70Z8c#iI;D4qW0=QoE +0_;ErAa33nCQ)kFGYeIpP;&}rScwiZOt;;WIg^GoU~2hA$DwFUM6XgeKjHCYtHR+g8r@)3A?J2mq<8c +hx-1gCH;hBdPBF?}9KfQkg{b4VRMlZZnt$VKn}08mQ<1QY-O00;m^MMG3uCn~0F1^@uj6951x0001RX +>c!Jc4cm4Z*nhid1q~9Zgg`mW^ZzBVRUq5a&s?lbZBLAE^v9ZS8Z?GHW2=@EeSHnvROJ-qij_Ika5z_Z%UmrNL)ZTY)T9_VH)|7N0EN*v=Lm8-4d^Mx6ZoAQ-hoSl95_Tuc~oXoZapvkXZIAR +!G_K9YUT>UowdGzp@IGBQ`OlUSB*N;EC{SS9H!~4e}3PmzzC@*vp^g!7lS8_>Ke3eW-F_B4?v{fg3xs +u9|O57t%Yr~6@e$LD!T}TjSB3I@JlR;yYT-Gv2h*K%FELcgN%0eps!h&Ejp+zy7kW2D0+%b6ACt=Ivx +Hx9oq*Swd@i_>Bw4hq=x-6>R;(;}B&&SDVZB}bzy<*sBL)Ic)P%&p2*>JOvutmkT3t@cx3)Z`N@K +eXuL7a)pD4N^imepW5Lwi4DXiAoKtzeTBZXfI(oFjl9fPNxg$dVWI<+)trT62j>mLv-awiysh@ZrCnp +h_3A|<7Q6x8@aGGh?G;uBK_BF0D%sd=W2AsbuMQqK?UGgH$(I9jKQ&wvZPvS2RnGno#i1(J}0YeU}Kc +m2cE3qOJoBW5EBq$4N`CQyvfG-WF|f8c1Qsa&E(^tAHCT@E3FmIHmm`AayR60j1y&t5LzN1v1|R#vZQ +CHtI123J@mDcYJAb1<}7ED6oA%#Qx3>ka(*6kCOf#&%hJwv2uMtJzul +egNaNFeEjXrJD^}xT5`*`~gK^E+hoaPRYRR=Qba}e9&*WNE +t3b{kKatsca}Vu&BsLqr>DbPMqQ2jw)zr!yCh9i5vwNENP%%X0>X74?%59D!F>Rxw}iq2ppt%#t8K02 +E?u+;2x?|&O^j5K=Qq27{w%$Rv_1!&7xT`EmoBamwWv$@&*O}mNa3%RqYNuA4A&&q+s|BIS8Maeb4Y6 +#(Ub-Spq`%Qxgy-3L9I1a1U@bFVEZT;L@>L?-k{aLu^KT2}wv}kK9EwYTK^)WmAv#ady?khkeHKMSfx +1A(FMR6y=(c-!YLbMbx_!kk&l&)#3yS{)(kM=Pc`ylP`N@U#9r$dT&ed-9|TSD(aOSL!ar;(rH+2Mj> +W}s>)0w%>-i^Hoh4bRBcIkRN2ti6%;CL$4MRNmo_5z1_D01FAX*|dL^D?? +0~g;Mz4YN9PvR8PtY*d{w(%-^V{FSv9hpx!mB1ue6Sm!FM22H$-tk0{3THnqOCAUVF_$)L-6E4-Kcbq +j#ML*pu?)&lWdJ>*^b!y)t2xzZ<4RWt!Fc#MzPWlFPOgWyqlY0D@-Td=s+oc7(LGj-dl)|=+rS$ +!mn&*}BXFJ6jop_V7*ztms!zDO9SLGL$IA%-9gx|CJrnrPl{tqShr}=%UeL}9(VA**1i +O+R!XiEhmqV`okES=Sj`d8k9h6z?jkumaFcV4T^BjO^ZdUJXjOt$b6MSV?Yy +YQCR4A6mT^))-Zr~15Lh7XVmCcZgth$1MSn%(ZoY&@KPSQ8!;cwg_#|l*!KzYIU!4 +204@Lk0B~t=FJE?LZe(wAFK~HhZDnqBb1!CZa&2LBbY*gLFK}UQXK!s`a%**PE^v9BRZ(x#Fc5yvuQ( +NLZnt1YACM^RBp3rG!I&uUGEI@2xSch}j$&t{n#OPE?4(Vyv@6h;Md!QkyYKF^*X#8Hz+bjpq+D4;=Q +>ZBwLCX8V``yOmfsYa&-wlIFYrkpR`q~LaN!`J!~k8`tgy7q8^tCt +s~SX_>D<;bf*^<@CS?@C1TKje^u_C0r;sa`#7)dH9$7Y%98>Rodpb}0WSWSU6aHgL?pGTD%bJgi|=P5HsZ#s$j;k36=1iCs>62!u03I$`q8sEjmwV#gc?4qY(`0>o +uGIP%L%hB~2FMPnZ)so#L}_B(ZGD+QzyM= +d!~0xVDAw^2cRMzzi{PPaOfgix|nI1>}X +JLWbnwct}q0|EWBkK{O#e~T_aMN4ocg$y-jzJtB(9%{I7%0gMGY^Drd4*(1lqE#*J)zMSbIg_BE1b0} +#?xSlu(fI;UgC7h-jR%T+fwy6Uoffx5%4;m{^)5o_eZR-u2db5+$GbiLeddjDJJKkD0R!WX3r{{T=+0 +|XQR000O8MnywZKaBml{{{d6mJLmZJqX&Q=TXNGpv!2Rue?hHwhqWpo%fJM& +Sxu55rJ32i*Jt2I`-Fho?Yr?e9TVbu#Ce$`{dw(DQoVd-`)Se)_5ti06ms(h9=;Noil&Vac(2LIFqTF +e<-q<<4X&z}donF42O=lOh+ChV)549^~rPxl$NJ+2%_vx4ae!LF7noPwqH*!utUjO9xe|`7n=l9n?vn +!NHD^v!XrwHvN)y0-dRffx3nJ0w~hk=sXmW8(Twpn=OP-Rut$gibcs@yJ%(!z^M>tcmPhT=cl`Zh7Vwm1hQQ5LW +7Sk%r_>@zZ6mjK~d#CJ%;vz%FRPJ@CA}5h2RGJvYv~B{qm$Pbd~Stt1I7YeY`Sw4iGzVyczL%qWqms +4_cm^+ZunuLV&wu04&?BDblC5A4BALcB$(*eXsCms5Tf+Y&~i=tpH?8(l}gp@r#MFTvKrV0#B2$2}aXk*ML~HXZGai +fj_4Cm0oYd~o5}cvzayc?GODA-GUgKrFFR5-UJ`Y(Q1#QLmDdo?5c6ylBH${~tz3Q(R00GvuLi4|ucf +o-sR5Pu#qXu6L&(=-K+ww!pBHg0XbRIBz>Mrf+s;e1$&H=R5)--I;9A-8^$Dh7s^t>#Ug?aS +kAk5qRJdctSvc9ma{cvpxfq0ZC&!Bv%Vli#!p+)yzy)X;96bL}w`<8f~tj$-Qv8qLnn|23Wu68fSZYV +Ft>NWhCwlqGH|Bcu%a`vznN6J9(0aJ4sfae365LC!%3&9poig^w8zzAYBjS#lrH8LT|u1gv^5j@jl`& +D0iCsI?E)xwxd2;`_t!0QxYN`@0wM<;y(B$BwJLo7)JEcM9BsCHw_FV#N0wFY +E-^A`VD9d4AlMkg9wftqq6d3S3c3jYO&ckaPMvGf@J=f$T?7!kSS-ML3Sq?4#R68-X>hC=@!=Cp6n2& +I6U1wV#Y3t8gr=0iWu%>+neXrKAJgM5j8ODFXKvJ|w&q6ooKJwi@A|#fQ^s`od}TqmW-oB9%fbBC-)> +DkB5wJ*DYx950vG7AOq%!AdawfO;9n2JwqXKs>NrmS#LNffJ^zOX2O)lTZ#T?SF1({B4$ufN%H%9rEY@1eoF7(MC +C?HMkOxbMQ8secK2PT}L{ciqY!gnZ9UM8W<%D$pC({ZtPUmYTD~ +5l{C_55ODzFwWeMV}Bj*Va(cH2?Dtl$g>+Yds^um#*Hj(>x|9x9TKSCj(R`@oW-xgB-S?!G^bsph*;o}>^0bLn@X&c>@oO +V~T7!B}LzRO-GL_4xl~mb-S{~-1gJf-1I??Z=1QY-O00;m^MMG4o`GkGM2><}68~^|&0001RX>c!Jc4cm4Z +*nhid1q~9Zgg`mW^ZzBVRUq5a&s?pc4sbdd8JukyU%_zvwTyseK{dWB<{>_-j8K0%Q|52iL>RJ3$2_$CTmw~o+w8>Ea~h&yFUkX_)9_ +0fRkPS{Z}Sa9jDqc#}iM+SrRT+dcrP>uk2(r`r-IwbTVd(jOi6;UvlwGb9X&pigWh!?>Fy1f4z1LOcZ +)tC_Z8Dt}o5`#}5}*zg=IESf6V*jFfX=fjI|3BG)VqV`uijg)bAQYa9#Lu}pNO{Uc0T-g8kfT*x&(eS +|#KVN_5rxt=YgjAk;{1Ns#TjXw?!W-~X6W-~TrxAyhJvQ)&rJ2*J-dBC{x+?dZ+dL8vN-|GH^JOLJ7( +FuDsU}pn%&RoSdJc{sN6^doVnJawe%X9%>|4OCiik$TR=F>;V%Hy4IohE`Iu#@mOay{O&U)cj@zjD{{ +k9OZ->`$Vse@e2571kH-t~R%PbO^SyfsHZ`+kT(pf*$pd;vu~kH;Fw48>f?4TNQ0X2zuyHnt+SI7fPKi +8wa3riRBX(Xa(l~@#$m7G`BDulHo(ZbdvIcu{VIg1nxSFvPv@wBOa*mpL|{!lt6fvLMGe?m`f7}=z0< +q{KbtFpU-ng?L@r+aSv{ka^zTs51bT0`{O(<>h{?Ro*>L|j#E=l>m*#H8cgsTN?2oH5r0aoW9%nuXpVU4siVN@kS_6($N`;aJ_kb(?Tkc9yQ1Ht2%yP^aHfH>UpNI{?y5PmYEBvx4SJ(>X +UM{tiTu=ez9}4-n@6o><$ +Cv(i5F5pJ%AQ?M9mt7D48Z6H#zX?#rTKOkC?X`7|AQ@qC$$}1tjD>#J^I8AixHk1aTr^3Id`TO51fbp +>rIvMc+YuoU4h9*h+3nAdmx*L~77S0SeRZlA^zY&K_}pkn1UvET01NIN^#X4~S3hD#1Jq06IKXrb6#I +j~T3gbuq3w4pH;>a)a$*z}BwFn3pCA1{CZm;T}T1!O}JZOD=e3Vw9v2B$kq9s+);pnhN>Br{#uiWODC +964WLit&5GKGmX`0EK0&%<9cO-DmFcEqY%vk`vg-y|%!*)rdpv7E`Spdj+902Os)d?=9mm-oe7?fhO)(>gx~_EE(dpj#Va9R;Zz_bL)7(m*+IDN(o(_H2|qF^qw_ogAOsby#$gRqiJY(1tkRO +E0MTn{RO;+e3UZYFd~*VPRHUXdqe+qE5J<8Ba@AcEsMa*vn3{KQT%Yz`>MnA>@;NAHSWS+k;(sRa-Om +*kIR4?7?^s|6Ui^6~#VoGpQeCClWCK^sw@I3u{K#2M-#-gRFG`1&iB2t(CRvD==r|WU#q;il5v(hs +=h{`A;zGifh)?8apG470grXrLulH|5MoPWe2DEX$b8%h;gESj~XPn3Dsu$+vVqrn{QvP7z_^f<@a|VK +U^^DcsTsW>BVq(d2>ml9k7POtKTeUKVpMzt+b9O!{KJLaW22>qv7izjg1rRwJ0>v|MmaKMrqsX!H7DYdwjAO4g;|9&)(XZs!w-tde1E$?R)~1= +|?WxtUc95A@Gp3zjH=-xK{AF6D1Y*pvg0@|~iZaOMbZVr~`(;bJDH}bVsUHgCErfVuPo!8JNaZXM2Wm-kVn2qf*3Of@qh;M;#kPcj_@8QVm%JS*+bKq<(5LGWKi^-I_~|@o6y0|i0=e;I`DOj +bCPO{U>K5{1XRLR}(C#19Tk4~mM+aefeuksVBtmtktBSm~08+V6>axnmnAGjnvMD+L?};|iZ3%H#nOV +V3D-rdZe8ej=3CsMgW<=fFr7eDT;yU2-`dhQ27qr1=P{1Ah+M6K-muZ=1QY-O00;m^MMG4#$^42;1^@s;5&!@z0001RX>c!Jc4cm4Z*nhid1q~9Zgg`mW^ZzBVRUq5a&s?q +WpZt4ZeeULaCwziTW{Mo6n^)w;9L}vGfhZ~VGjoKkf!MxEKQ2qTOZm$rlb>_h)ilE6;~Lx-@e0(WXg7 +(R1b+oo$uUl9FNB%f=}Hp*TA((?}c1btwE|3|Ew9Ol_mJ^$TPAO?>Zzw9;5>k(dfF-WW)4|oZrl@h=R +Wx;037E;iiSCTgjFyJtY_2PxAWo^tWGLpT2%Y@|NfokdIzN8If7|4t2)3E +bXKecdN32U9*ss>Myo2z$Qk((&3!0)PegY}@nT9o(3&{Ybz1{QMi5GLQ==l{o)n@&zdzEd!A~Xxl?^Q +AB`K+VFbr~9JS?SXc!`0TUw-;$1 +Nnmxb@{D;daL7eEqe=vupaGTVOF@{*^CJ>e^JS3UP12-38k0h;pSjq64tS%eJ(x&ajvngyv|S>7Z9Q45Y^fiFhavJIH& +WWoKR-oty+s#=PxN&zgMI0g&34kpo31gWB4|e#Ew1>n>(bNwOoO&xt3!V6h=)>-DTB+$%79hUkB>xfi +Ci$X?@*`(Kl(6(Yxee{dh%G*H2?cSE2b`H39_ekEYsj0^ati6397@2vv}p%S`n0;5S#3WrU_xZ$P*?g +n^L(uV6pu9i$4S-dm0_!DC>X9Xi +lIVA2x`QXWyS?jO>JkWv8=$kAULs{yZz?Yb{n*#FpUTE(H$@HsCTG{KRP3g0+PD{LjqlT{Y-GVPzT&ImyKb8zgP4Th#@50wimVQm@dmGrX#kagRX +f;E9F$eIEKt7E)~1%HufP=zX?V5lva!?wA<`ReK>IT_-w{4$xz+13Y>qC?#@|=Dv&H=oaro!6;$^LIX +Mw7Pkd!3^Ht^JN)5JCgkkQ9}dL_u|yrb&=hsSs +kHrs98D%nOos35d_#6V4R%@iV`O8)x8s7$eMZpf*4J(q_Re!XN;I;-?HrTD1SoL21l>p;`2J~d5Y&yt +_0#L%A^Rc*ivD~?UiDu*ZED%X907z#^fc52dJMAWmoCwE02sP%|aYfOhT<}I+zG_R+x$o6ne2 +AKZXsmc(X#!cMvq+BNE&u=kaA|NaUv_0~WN&gWaCv8KWo~qHFJ^CYZDDkDWpZ;bbY*gFX>MU`GBq|XaCz-odvn{k5&v +JG0-+}*WlPkYc@sv5fvk}~9izHsNdlWB~MRz1c#Bs>1l@OcB +V6aH|{k`q;0nzo5Fp33F2fibmL5X>63n#JNe~h~%#(iLai^IjziI(hL5~SYBu8vb%Hc~wkFWx*P!Ez- +g?2Ue9*|1bRgxpM-8;Aa28~Hp5!GVK7IG|zR#tF1A7)lbjTkr|WK= +-jUUUL~C?4&+sVWU_D;Egc2<;;{)E;6xZSK9C@VlkP4l2phIvIOIcjpTLwF$jS9-Y5oHIBv)r1Oa8>I +f8=&9Y`V0oP@Jv8%1bP5HTa+D1tNB@otxpDv@u<@sKu~U9W>nvGmx5Mxm@i#X&bnC)^kILOz`y*2ut)PT|DN9{F) +%*C#9s)|)sHd1mfl0&~(BVxd^P*oVNklgq#vL1t27&_bd%{gGx{O)s;f=L0 +R@<305zb517S6D=U|_IdA&;zTGd>9y+XPbm^Zm%38 +tjM}KN$8eaiFQOWo>k-@n%n3#h;~_C$s%JoGU`m(WZlVm(!eRF@lLkm0-KtC#HwbzoTmA76p*L0ubz`lmQ<2&3? +CR6#W5Y;bjuB+YQy-Z+nAp_m7Ua;xm9IuRhiqW?0-G12~WBBzN>86pyQVfUNFiC)>=b +ju!I8t&&Mwd*&P3|980JZ312BHN*Mx`n#903hUImBEM}Emf-K#Kkg4Arcv6NQ8g|)r^yo?jhEl+i6Ni~@xYj{j +6P~d9>F{jqKs*j~rk*`ZltZ?}nE6s?5v8j;G$`P52NCAGa*BE^eL89{L=h#4+gSw?b=!6X>dU6M5S*Y +C)QrK%AxZhQSvu%x#U?buFWWt8_%W9Xm0)R!GV|%Rg=lz0IZBvk4bU<1tk+q*7azc5L&F2TW&mGR^J# +37$ym?c$%^{J(kbn}<0(3x!0ostu8sf`}u51Uq0z@`R_+m1D1=_UiD;X0^!8LG#VKTBX$eKfnqdw7MF +&PSJ9XV?l@XEOZsK9x|wi}-kj?!OtQm$brxRVB$K(UrZF-!%-9Q?;4%xz5TtW_A>(xw4NM&#%B7e`nY6bB`cNRPkryEu@Z<**k1=LI4 +Y=fcjit;pbGJe0tICaLgVn_{nwnt_>4Pi?OZ^y2o^X`qLA|iu%*Z9F6s4AO?1zb|mq9bz9Uw>LxrWB$ +C4nl%VMuBK_L2+BRLzhv5*AmiklnyEEaXjnsFjN5K$|qQ?a}Fkjn0@0tC81iSutgF>0k}-hr=GrKfC0 +D;a;4cU*{Y>L8s=IoZ~0xEOQ<|d7PX}&XXsP)AJ?g>66E)InVauF=Cy%M&bTVCBe6J0TOutVND&{2<#$CaVpfn6`y5s)1gvv#*ZcRhyx +cMITi=7n*J8!wTn9b6lptAt`5ibD@$HaA|h%U_np5f#_X+*g9s +&it*`5bual)qVgwyMN)Pp5(W;y|- +Xqdrf5ouBO_Dfi6Ey79Rvrs`E-z6g`yH)awIxTBylA9Axk%8^Rf=F`&g$9vHI7s%B^&dUDixTO0uCpt +5Dy!GSrHNkQK3RFyGtD$TvYCCtZpTdAPPZ7-LditC +x`6dO8!ZXqCa-R{nyA+f}w2r}Dexs7Mag@*(&U(dw5NwCCmYbJ?z{0UoCN&3X?V^jgZkK!o<8t8&%e7 +0+fL~2)4WdqQk)c`A#Ytx=38lmPZm*_j=c8nlj*ClM`IjURT){H66U1AA5Wjk(sj=J9MFIRMTARdJ#` +E;~@Wh`myi~DDT+e`u{APZROgvjL&0a}v(JFbUqs);fvhgA&cnG1*9yQmYTSpk&Rm%J_nUBGUG?Q`pwf3Z+$Nf)@|gD +Bk<8;p%;R-jPA6krlaxNvADb#G$?OX`D;|ql-tG<>BI8+bs|3LCe-!04ex=lFeRJEhH;{00XM8oIGyx +I4O3k|c&}c&9;&&k9j@$v=yAS(^m~{P(0cbjjYAFKnG +0wCA4{9RudYV8kDGF?vMPTrIb_h<&3+KGp~`TL}5dL%OkO;wa>J*ac*w^vOa`owISf%-M#{p_0SY3@b +65q%0mA+GVq?Qa?w`*8yu_YRzxkO$v0oU;pO&k`tGfMJvFvRzlnPaY-_t5$imouMKC&B7p@4@FZ_Dsi +r~?s-VK;v!>Ir)Lf(Q?YrERxpzRUBrYZ`=h{WcX)PE{>B+I!e+f%{J!X+{*$=Zk8A=p|{~tz;S^AfcUs}1E!#wC4AYpKWn75)Z#@U>k?%);1=PBKw#Yqnae2| +0I<3mq=NB*ET#!Q4B&RB6C +7gK#SP$5y615^Vbx(3D-J{x8w0$Y~CRN#bP}E{Wgp8|Ht%;pmrjqh>LkDKIVpW{nQl5)C?y)3JHfdEc +zH(bHFaCaU_2!;^8R-qAHse;|@TDX`-GAOST|wC4WUV35;-Bn3~jMo}3R9N1Zk!+ds;N1-TT{^ZTC2Tms;Xo(Cx{C{v +Op(^1wrgN#E~2yS({{q22Hq71e72|Xwve)?Vt8m%y9D@hHDyUVp9S5$eKc|>XgeeRW#Dbk6K{0!QKLj +^=jB<7TC#s$9O9(lR7!b2rQu~sTOs|s7qKtQsYNRlyZ0}OCpeK66r2WYV@PXabUR6W=wtF +y@b=%?&}!XqZU{gpVg#*)0EfWd*e>cgnw1hx0EGlPYXm>`c6Ge+b!G;8Vw^^X!?WcADm4PPeAv;F6jp +FrrwR}g1yM~^(w2C@c0(46$Pkv641AR|y6<#Fj>(2?v`3Mn#R6d<6K}Ysx))*B)`xRIUE#B^YM31(~2^d5pS%w +uEL>paTq9f-_bbe1T5-CJ{(mOIok^f|Lf6Wy4AZK)e8oTnm)53`I#2`0rj(IOL{Nvv=ZqzQZ;ata=Fl +OmM)vq2!K1Tr|*#jw=#&R$zNz4iHl6Z6z2)mXC0cSA=c`1?$ur}jfrAmPf;1RXyX;>CS9FtohiV2?PIn5^%avGoRs1N`#_<4$xGD*YO8x6Uz=pq +O82J)mfdO0LdER4~ItJX(omN_df#T~7q5w5n|LjgG*bYW<(k^GOTJP26eLO#1efQqCo16Q2`p^(I~Tg(uR-)`y}cuej@eFLSM29vWIwu*W? +hNPTjYb~i1JU#%s>>@`@zTZNHS)@&=#*qEAM*>_EO7vPdXlZkJkG{W>t!PLF<|$zlE4KI!Dcv2nVM*7 +R2ql%KB!J=zGv0dDV7X@S2Xc#sXUHYXg5M-+kz9)gaw<3%0?`(ZscF%aM$r%$<5dGVFKL!Gk{UpUZ^r +CF@BYy+FfDsh-EfYDEQKK=cn8Dh{vqFj`8fr|;eWm*RV|h!-AG$$B2Xr%EXHk};Z=xU +W`?Cs55ZZxdG2xL1xML%C{4COs>M{N#MV3X({8^4==n1GHlvjyuijkLH99U(n!0`EW1h +bhWCJdbRp?et)Y7%QDM9U8*AN&JbTErW3bNcvnkf2KMOb($Ve8UW1D-*ED>1%S*IocopuecVTU0elKB +&;-LnWH)luXIYmZRA1aIHHey({k_l>2!`GWKib`!fyP-V)5ZhRkl7(eD7YX0n@Sd{9z?zkXt}o0NDgi +GimS)G6A{P(YZ#S513|r7GCs`2EYN9E=gt5IEjo#sL>GFwu;J;A0tfj5*)~wz+!Oj*!J+XvW=wD +26EDHrW>9Phz2kXnxXnQi-$|q>lC9}#CRb*3n}<(_PCr_ +Z*bh67zab!t;~+M=umV}xUAmPCBFZ>eM?k&H1(+J5#Iv%2&UD>LQ*;R_QFKGM(@v56WC6fKLU#080 +8^H&`-S4D0G%PYc>;;E1=h#U4$q#Q%xA~*o!auA;P7Cf`NxYBA6DnqI#xU~UXJ|IxTYUe7q?^w#Et +`uOegFZpTl^=WqYaagQR&fdKvim8(RlalxEpMM1-k3;BZfbqlcDPM^LSe>Si#!9MfN#hLfsmU-U?;y& +Q0t&k4-%ZJ%O2%)r(TP}>iW +QFf&%q{lGk(xZrO&kAB`2PmdeZ2Q(GPLCr`k^*WS-9=oRkySI@=Am)z3d)uM-t6;|9fe +DI%iXP%PJ~m(E>~R(MN0|S(zc4$`JcPmCLJ;261f90$RD87!AfSeL11EEoNhpu|J-YLtozWPd9u$_r3 +8D467Ez;wNx&mr*u=l;muqc!Jc4cm4Z*nhid1q~9Zgg`mY- +M<5a&s?VZDDY5X>MmOaCxnLdvn}2vhV-|2OqN9{67{26ulJX@-R8Q6Wz8iDq*79HbauF(|RQm*;Jxm>lm9 +lNt4A;lzmYrMm+}dEa`?i={1hbx}xoqW!F?DvVJWfxKg1hb0yX{$BGb{Q-BxR>RLW7{hpcJ0U9npCKP1OQCeOe5=KF)^-+cSmXNvsxdo80QyTDvcdXZMo5-CLT^5 +?5J?=R={U@-$%1_k+!pEk2U$^5FCl3jKAUbV$*-UIlyp_pCRholh+qN$Kj?`zG?@9 +YNP-cnTTA-6ljNVaUL0cTbj5p&LLv$r1XH7A(obEELB@7vs3|8zD>(!HS<+k)XO-XR$W?EX?Lv(RjLa +RWcj;SnC117Ww~|OoHiT_YD(bTl^zS{2svs_r<<;d(WcY4`k1UqvGHLdB@MX_MP;uHK#}PZNs8Ag)zZPwUlli)!f+>K=$5l#AJ +qy)V1no3u9Vr1~`=@2<`-lV6H{op`PERobltwr?6_)H)&8wso(eqJ}+|4s|?Vr(OFwsvUnhRw$D?R;N +n#WsEBA=jm~AF`-E71~7jB{bPC;-Dpo?YxyzwjpD|j?}zMw9x8nA7dJwcj5~4sIcamTj8oVwZnBsZUW +hKTUQg?w<;Uo);zprw`*l-)7QTsLLIcB((cyAfM0O$58ff`3ey6yumUW9isby`d`uXD~cA%Q6ki`l#v +7$JR*3Jx^YLG>QVS^Hf>psmgoKb+sp&#x!xV?Ud#mm%gOR-B63Jsx}7lP(idPc)NK~1Hd3Isfd-Q`13 +H<9^uT^6@6h5|7FB${S3mZn7801mZl?qi2;Dkwk#p#cp=Y3uI8G|4P7ZV5xB`SICVl6F>o3q$?oC;gH$*_?`l)fogMIBxQX(NA*x^8+^KK4OQt+YkAPBl@uwRyb0#ktS=ww#3uk +%&|3K5{UxBN2H4qxpLr#hc&R3V$p7t@SUdqghjv*?T^GKRP--N@WpQ`4>8<22x_l5jq~t7K;ph5L+>V +53dB8JhFIKX?Huc2&1G3!;mzpp}e(xixfGqNz0X3bfyV9ItB=qfRX<5tH>-W7D_V{>--9$mFCl_A2l> +Eo&+Mpp5-X*BJ*gWLK={lm#2VY7!6yQ4=W2(UG$PRgpb9^mA(Q0 +A_e{bRE6Y+FtOdhbF9NrQ^l1~nWUhvJ4&dOBc%7oagMJMFJH{>h}TsJ`g6GvwXx1$X6`Ux?C`ec0_bx +V{bE`EA_^z+&I$+)Z98~|d-Qwba`F>$V!$8$A^Dq_d4UREb4YO-84|7MqNmMi%Q2ZX5ojVAT +qg8(!Y(;|wtJaTGORo*7kng>d3hr(>%ORgwpF8tq-0e-l>jAsfWl70JddoExhZ-_ISh%66LFUUMj2jD +1pzFKSPu0nvUc)yD-;AwqA9(e+fS?WvnmveEAi{jEuE19c*|6j&2wGXymVtIhg%l?r@cBND+ut~X+0M +&%;#9Np?^t*Y7=Bf<>kfa>>1FO0pBqgZ5a6b1xHQfGRL +BU-m-xuS>q&#CftoVY9c2{dDGWs{;EYV;)X>WOpJiRP*z1`jk#0RWr>9!;gl>P8j?V1UDDxnX;CkSEO +N-^RZbEGB<7kembOUXviV}FNn$cip(=s+lnH9c=7G+pO!U@PK5$CQd@v6hFE*zb)F|E3XB})_KP|-%LVRUR3EyDEDSj +^cC!PT2@;_e)gW>_s3#ml=P48=r5*Ggb;wB%e$Tibcnz?JHm+Z6@DB)bBNWdX +%#p6<0*n9*io#&-*ygT>#TL~ +hx8&50I6fR-an0n`^=)5k8=so<>+t|I?J$Um#_ +KvbewP4FAmUd8i?3c-M*rh!_p*+jIEVB+OWx%mOVq3<}GH@jfL;wp(LgP-tBc4TEih5PlBGPh!twSBZ +It59Lx5I2$WF{nc2E6onoW +Gj*{uBEOP(ct#6|kVF67j;r99QT8KVff5zVKQ;fpknT_4dGQcg{qF)xUPNEs)?=K;RqK;|hL#_4B-Y! +MP(_ITgk?~S+W8>t?+(^&m!tk`IKu%Rkn_r-&W5<&C2cFYj55~>48b?0zo$?FwdXF6D*~+x`@<^4*z9 +M5U+4fW8?gvx+pt8U2RhoYd3iHMhb%d_vbnS&{;>fG%iwffgkV +q=sfs%I_#c+4$J{HxTd560Fkv@vJRH(Z>+o?`@tsD}#(Suw~8Ki0A;C!2p8!DK${p;ES#y`n2H&C}}8z} +`=JRjKIJ{CLNiw2@2B!KsUab{~*8G-bwRYcgbjqhyevqpO`2PhdioUCIN(z#r%fX!a!o{L!fFl? +8LeR95>~dsrHC~V$MExp@{1ZD-y&bd94v4>eX5tZc*6EtKWbZl1<7;k)S}ZglS+H*>oS20m^=s=p%A5 +jOS*J)RqQS#+2$G%&>pE-n^kr*-7=pXS~i1gBDXDafNC;CYFG>C9F#W2F)NS^XxsL&Jr}d0MmYo}T9Y +n);h>6wad6do#ZEvWFoGkg!4cPREcOT*1RS(%hB`lKvO$AHYG7oH0)|RR927CUgWU0mmC4+#z~y15WW +v1Ht6j41BDYOOnpk!~ok-^+{8#rr5IU!GO(s~uSwC4BB^ +Z8Q{{`$wFzM*W8PjkZr739+!6yKdcJ$fXF_3~gSeT^~7_907u +`#gynA!&)DUJj5PfVKdmDPjGKzfI~dlVB3}fJGNo%cW8rmkmY#Wu0^CRxUmW}uto@gktEbD^{2r1tMo +1w(P-mLQV2%OcDsR}&RIJlPZ67(h{8|1l@A8uz_*H??9kbs7|om+214gPa_;xDC;Nn(`Iku3QOO1*LJt0aPv8vA)5tfQR)hNiJtWnmJU|a55 +UKQ4Y7N2Y$06>0U{8y8?+I=kxgBdPqmBmzz|OkZ!DMc0KI6V#rRvjwxwy@v~_1>q1F;cJ53~#S&1621 +7<4LXW-?jxQ}j5C-=E1fFXe>R9ib6DKb)^h%7C>4(DelENjZbj4SjHDukRThwHo@D**yl +k<;T?GYD9+Q{fG`aU!6j{dx<0hP2}tRvaS~LxPkEzey8;^_0lGwWZUvD_?i9CoufMg_cdUFsPzj2P<$ +Hhox7P`yy!PnFv!zZu_nfcainO+xK_EsFHJ%3ZKx?GhR8G8zD?I}j)p2D~HJXL +*9Y@;PiSOZ3sf6{%ENfkqXoN&~6P4}vGzpqis>Erd&~BOi$MferQ}$YlI=wss +&~Cv>x}Q9~_T&xP7^W`3I~R7MG%S#m%nm!%H4$X5Yxi~e*C1hEow=@<`{|VEv);S`;HSJ5ZI09gDm>T +_+%+Eu@i~@95QEXf7zzn=qdqXMblUh~d^Pqd84f)F_MAaYn1vO7tiv|QBHU0u{j`p*{5q(~Y9tf_P#Aq+#7Le5^=dDR;8$P~ytEdm>(}go8VXTK8 +@_-VD4iC5Z6!^u_wqr#Ds7bGR^uX5_4(78eF0jFp`AKorFm|2U=&5LrGe~HzEiK)NE<@zm{mPVZ7Qjy +Y-W-x&9KNimh)VJMN_ki#h;hlwe7&Co3%pI#fM+hy>L^4JHx_l32^quF7f>QeJNS@jQlR*mWH{Y^2^8 +WDp$5*|N61rzZVc`l^uY9r_8|9B4Vf0mA%xhepXmjmesH^5`FgaH^>GF1}%+jbxGnWvn9{t1=&l*X&{ +lv@9DpL$b06%e<7see7@>?^VTkr*gM-~Oy({I=FnYQzbZB&at6Kx3DSXtttyJK1O{ +mY`n;Nr(%i+aJd80poXOw6e`E9an-`b^f5&siuZZ)CLecl92$))%i!O4}Z`o|xt^uXA6zW9GyCquu6m +1JjY#V)Ko7B9x#H(Q1F1QRvThqM~vCW#c-2)SvSC&+25KUci9_)Cy02X%WRX-Mawr&Z54Xh;BDE4&a=2k~iMiT*zLgefgmMirD-7& +T6)-7q8FcS^C6Y%*))K^!VHSDdjGm78_5f4m_A;=U_26`H3n#u`B=F4xMBV +a2sHy+_`qM?SNIDg-PRqoEkFn9EeSz91v6vtjWbjUT%m$Lz6q*)s=qy&3uYh1c3!cUMx~<9Mn9^g%;3ntB-h^cIAt+kR%sCWpvQ*+gs&mGxMaY3_HHCR8{jTK9dM|B2U&Kk +)nOANYOer*>~MX_H`PCk;p8Ck>^2FNfYoXSAD9y}7!gJnko(m`!x)qGoktd)bYsut9Y@w`;pc+sGL#M^D+_5g +0u^GRIsy_>{YI>7zg=ivQ~rSoqloqwZr*0^w6{4IF8Wxp1nImBok}4T*2H>YKF~NL_}ZA>S +T7P@B3{!GHo??RESQSPoqPdzv6NUm{sFUt{G}%n>&o1Q{K}2R{9^`~B_G +L*rZ&Hv6K$4f;+mK|rXQc|#6(1YceB3O<&Yhv$K!x^R)KoGEIEbNKS;x@#(6#-h8oj0+!?D4Mb?D9A% +n-w-6owJ<07b07yy;(5yu)7R+7FwnY)eyy6hq$xMBnZ&ff%tvcHL(x`9eeG$MuY3l-9_g`crygQ`E+_Mi4;|B$3+KC8L +|5$%}u5#G>4#h{0YOVGedNkC$s?al7~Ihuv&6ngg+`e%P4=ewdSmu#=;k(J9aeuO4y{Js8ABJHDDIm} +mWg*uz32k%_$B&lZqntUaB|(8$8&#+_GXzQ%yiczOp|AIv3+Vw@44PspE0?B26dmfmpd=O#Q3dn4I=l +_?d33Oyn+!bLmIiokCo`f+wd)?&}{-Q`5^(IM%!(ZEHz8;KLWYcwM +)O{yg?{5sUWV`~=h7)bN&prVh&7Rd?_hpS|oEdEfQUFk>d6DH?n2Lq@BnkT_U*2?2kiPq&uBXxzQ3v15G6ET%3Y0aV5fpaVO;ba-se9f +dU9(-Pon9o3I8_kRaWL&D7}o=p_5Sl95DhfFw=0)BEluGSZ3oR(FqqPOJ1!u{Y588vleB(A=i3;c~P= +x=lw5$(rSmVK%<=LcmXU7O&vlj9vvFoJ-9@hRuO<--@mlB{7VW7>{{^6E!?(VZ)5KYJm=C+cs(oqR%?JS7-alo?&VV#E!mzG0;Vm%pRHJv`LU+3|L`X2W6`uGVRYtk +5*CWl4S?{u0=Ae`c +&qDlMNV)5MPAG$D>{2J@uxL^q_?J7K7b{b~_j(?bgcINmoykRaPfCgY(ElkKcdm$!FN1n2qSrz28t8d +ZZZDcTa;#md&}{>kp^+qNL>`n$+pwuEszvNVcfC|SV*?;c3K0y2(R;5Vk(Yz|IK$~}6zJrEe_weO{eRyBV6p#@{tAeI4bbsb%bIF=r1yRYGq)s +|ZzSv(f7^k};RRECC0W7(0e`|XTcP2Co$#j<;)rAM(#F}eq|3^!2Ei@VRb7THOoes}CjWbHZ#`W)%k# +JlkY$miu<9#lnlurQp_BovYMLh%4> +(k$&TnpG27z#4i`+~8j~P%V*60w6vZ6RmL%%{UM(te$L#_Vwwrw6e#!Ls +Q+72H>&}gQ30HpxEb=#=WQf0p0;^DA>T{U9_g^kyPPw{jA&oqiCo-&US^>;;|~|k%0|E+_jumn?MpmO +Sf%VVA#;Q$X~1iAywdY#I(4^sb068zxZ@lohniW(tg_ny6&^gbzJ4tx5vGca>qSf7aja_)8~4&@hwk;;Cuw!Kd$2=&+Xd{NJQ!T7$n&U7Bdr)J6Bcs^D3dXUbf41|9_ +#0$?bJz!px(Vf;OQ;}8u!+lqKf?Zl?e+#NNE6K>iep;RqFa?Dy3;)Uiel-SCC5Jp4wYsD+jR*aR~39K +ej%H_Ca*xylz_kdB-n_Vl+;vqAqs1XxW6vv0`l(890Du`xbUuW|v8xKLoVG7S%OXm7N$@!Ms?9d%*O8 +Md4I5CStM80XHZkNgSh+!wyfw(Wwoix^V6{cBG&B}k%)NCeHhpFUYgG%81n4U8B=ATLj1@$D}{DUm3P57AU+vd|nC)B(wbsGwra%VtB2rVX`wQ>EdplgbjO^I?=vGSs%+RK8OQ9OV=%deRrRHb`n_m2 +irva-CI}KQkk7>Q#&SSqGUKFDw=;LkO?J)d9AlpIc{ix4a>M-)IIYQ^eatHbN$e*?3;jm$CV-no=^3n +g-mOh*&ykR1)S^n7CjlVxx0I^aNOCY|V@6+?McA(KdlTnuxo}apaZhM+_>brba=D_>JRC7A3KVyBwX| +$R8%A+-sP=R-`caPL?>-ak~{;ZktXYCt*)}HC-yZPBXcCVB_tfA!qNx~kI`h}mhojgn21F$?S6(HhNN +ab$3Ht$}}Vb`WM41`O`u3Gzga1e^a?elgFJ^_Q#DH)%ES`f2PgUVn{N{5?xNamfWL>K)4fW3(n#ULMu +rkoFet+&IJJ6|$iD;Y$S87o{NmJA-mQ&_#oucEJTV%7;xlz^3!jtkUwXRr>(?C-?=?iXC65F*{pQ&rRX +H1ION)(5%O=Q2@50x2sz2M!F4|iy*5Yc$kzAf$oRf{Tw-i^a05{T@NRP&2o}W{wuZGw+vABsU3L+}fq +v^=IVgB|*Y}GLrI~fUxbucWh1{=Drm^ +I3^v?ouPW*B$s8oIStf6zvK6!nb0)$&EAJ}#TR@T3_Q>4^tEp0#a{ZYNbLvp)>325V-MtdmCq^uW1#k +pr!=`N+df5qGb#iw0;gmaefJgY)x1BZtFM}j-+g6wa>{}T%h~$*mHC%qz0dkI_6ZlaGXPSk2#{0T5!T +P5<*_#0sea_O-?mVWPR`&=O_MW2Zsq{A+_M*dU#-saomVN|zkQvYsR3fQOf!+3h-INV5#6Jnr}b)}V= +_&(I^g$o;1wQE4qHw6ZA|Rr#*JBq(cuAtEx|P5+s44K5N+)GIuxQ77S)^9t*1Mh5Zcs35cO%kiYzC5S +C}M|mq+J_Dr%AAhS|a>)OO9P)8SDWdStWoPXu_9-bl{+IE9D49b%V-TaguTdPR?Clg7w`vPh14j*B#_ +%mZP&57(TifoP4B4a$JQhG`6R$JMP1w3BX`nY5)@v|T!nzJRP%q3Oyol0*>lAS9Y(w%(;{`nf(E(&-S +pwcn<&e}9qQQ{wJf>JafB@3SfDEP(d5@-IZ>iJhs#l^3V4K>^_|FKWZ5vw-37x-#;bnHJxSF(QZq)U1 +V{F1@wy;kMNN(D3>rq9o3cb)u&mdWa)PdE(E&r%rZr=V#U8`PBhhr~8l7|-8QnYvw~V2hYx+Rz_O};*{qFY%%B%N$^F{3WIXrcBf#>Ghf +|bxBETP^>wu>V6ju_WxUKDsuOlt@WbSvmn1T#GhXEASA$NL=)w2}aSyRs+qP=|2!{-V6l_nYsu`h9W! +b-SVk@V0DMlS|;v!(uf>-Rn~!k!6U28%*X&tK-@S>?>r${O!fYe)zzjh0<&cULV{Z4o9v-@G +4EJDfNjkD2ZD+N7@)lS^Hz$HD+^w?pii8g&#kX2vS&aWS}%I`5KilJIW_*n86Jc(<0qvGJi+OSxF&%V +0q|G65k;IVn8AXn@U6!LVr>(axottqy7+kx;>bqLfnrbFE-Txsc5Q# +3qY3w{9^s;96Qklf$52cuo#h#-5pW2MaEUGBEBouqX7s>k}3j?@)vRkN>?%mT6PPKB1w6aUUC`NSlh8 +zH%oAQDcn0h^_y;v$LXv=A5$|=5+Wr08hAH>NxN`nR0z|G{ipRO|uLwl{ICeB$uKi<@#nZEOC0*H%zH +Myv+YXZsmHX7M#Xgayx$$E{-P4rc3NdOh-L6e;Xo;9a+gL0f^B2&Ti7&o*F=wz9cO7j{u;L&G($mP%n +nI6|tA5P)-{e)B{M;p$+qNd$EnakAQV-S}r-K>a}gRSdTPm6HM%heOl+|G|>yPk#=})^%lgE=Z70q#l +!-tJRkRN&O6ixJVJG}U7c8@S?sZ<3B3{<2Wt4dcV@ZVCpCtD@oWiZ||`RA%n#99h&-guCu1^1~cXXmmNetIb3`)b@b@xK +j{hvqL1T=ENkE}&O$f)_zGJ!xvkId6h`kSSEbq@nO^bc2&=WRaTnL?lh-UIGkZ~A-9M@(RO&Er2~*WK +^MqAH*a{uAx1K0=T1abbJfkF@@7d49S0IC07P!N*<)fBKQ%vwpc#3t-M?kcd&OV=Z~t3^oTYn<3l@y? +l3k+*EBEdvRA+n@qSAWx6?d_c}pgfUWi0TjZW~wf)>(9nQcnFW%0hpC0fHTTs+My5|RU8{r&Su)DT8K +&}N&^`*bN86JQPq>;#3cWd*tquXl~kz2|iXF9>)^=aTU{Z^uk+!182*c-8=sFUO5O(RLymA?JR=1&)n +LIEpwPj3?K;$no?wts>cX*W5AcM_uIe}Z*dEkvHjzKzKsNiZ?dFhuq!<1}RaU9(duH21LuiS+KEod(? +x&|yprj!lSNH>szRWaAhYPO~BX$0^fyweF9tr9)76I5464B$U^H6wlbX%Ba(deRU-W80*LlJ +|CbYkQI9a-?)pw)x9M&M_9yjo|mi+hs_*f@M83dcr80*crfvUJM;GnpRDhWs>Q12 +ixh|%T{N*!)}?BaOo}-Zx!BB&y`fE5JhdIoW_0ZNt`ZSE{n`9u3Q0w?cj}qbiJJjYceQ|s@2(TQj23W +Gkz;N|M+>g!25vdA5zt})cxot8PXt_KYGswTn@2?vKye(Tn;ogMn>m8Bksd?!PU1E((1*_*!*SWX%z{tg3s}haN| +VaIjs)K)E`NqjBz3D=Y|oms_Za=MkU&EFtNh8hcW`S(KmL@4lmbgXw!6CaI{@R-|g^H)OSVK@T{62P> +kT@*>>QDIK*P~r5BW8S{^~W^uCSUwt~UK9Pc+ya8x0gC8?yPEJ-gXEeHQb6uKRGYE6szIpxw=>mIaPn +ZLY5z0!^;<{Y+6bi7rbr#s&5sRgJ6N`@0&?1>zQa~FA>U#gG*bXOpdCM*y+T+~@w?)F-Zk$|{?qR5$x +l7TD+w(EnF^Nh@orDuN3T@KBg^3Ah6)(}=^Ic!f8@o2_bGYg8-F7OO8axJRJ4u{tIKnCHER8-~g(4tH +RO_L2A)CJ%(or*m!egP@es^AyDC?};KJDT1b9@yYcfn6)e@f=&nj8~9sR6+b(Z|AX7Y%Q+mr3MRU*%G +GAEBuxEmw;)W{o6|ZZuz8x_H-(&PdAb4Rvp|QWF$a?wb(#eQ-sCVG)pwP9bW8Oku7a&Ja#S(;b4LTg1 +{M-EzNc4g@`rbmpZ7yM?xt86lqZ0QTwmieyu9XyVxhfRls723Im>&ML-}eBKA0UZ5QIztD#KQL@#pe# ++ELaEP^sOBI7+SJgARfMqg?nbx;!-5(*J0N+mVNEcPPuY%SY^(n1(}QL)I2DkwIkcbINo4qbH=pBge> +GIEFq)J!hYKC=gjX`1Aasn{(y>VCyA64se!p=4N3 +snBp=4u1?p#RfM6VM|6V`wbr9hA*5bmVUNIV95zer>45@`*AqzD!r1iTnklcp^4=ypwFXoKWvg=8Is)Q +pkZb?kFF(u4&Rq%;PQh>(ufo91RVv-=4SCx=rowx1h(Boi_?y8+_zyojCn`kTooVo{`Z0V`P#y2@gC*CcV +eV^vXu$42xYgsHFg~X9wk+gGV2`mmzz64{nZxi5*zEwT8{nG&v=fTVv_no2k|{T5Rdr_2l!R72R=Dsv +aSBkS?`Ih9X8;9tS8L261;|$;{5bCt9RX4pQQAo$B|+GO`i(&X*fGP!lN9jJYUBk;NcmjbrUOr}-~uu +L*6%!07RDKKZ`)PF2m#w(kcuCyKUrU&E1N*f72WNdONxGkIsf2+iH@{6q4Ah*j(AMEzDUCi$yAFJ-+h4rg#+u#9{-9@lbp2BQ;Pp$eQlweDg!KMJOjohboAz+x;wp +oYZ_ngg~>cjxa~p@&^O()&mh+Hc`Blj*ec^i_+XUNAe)+!a{F(l=YKr;Ij@zlXlx5g;w;9sbeC({ +CMIiS!CP#yz@GB@OWlH(GZzWxn8Rz)B?AAR)!ChEG8P;b6jf$Cc<*V!Fuk3(wfV3WJtRv}jVLS=S&M_ +!DQw1^V8e{?%lVUQdv#S7mABXoa^MAV*38{n&FQMCzf`EXH7 +NdmX7S--RyKlP%p%KnKLg__ESU!fq56p(&QF8H!gzQE5bV@>Y0I9*!HH0yVr8I +#-rO_6)_=*@iip}BJJPnNGbA^K)_gKv}rV4^Aat)FRmgZ5_VqMt{`^$!pMC?uzwb@CmxEWmdM*9NSAex`KjXnSCk?>L={%iz4_Wtws`$aN{5d99vH_T5 +DNmy3(kiOP)76iJRK_rwlwf;39$r~VT_`>upJE9V&_&@-HTXQ_0MV7okmWu`GrBwB=XlHGp)SzyYOq$ +vgJ*M$_rnZ$x_)@>w+26(2zCYgnJ9&ZB*GP$w@+$)Enc@McDaIiP~i=t`ej)>*l2h{C#rxK&?+G#H^K +*LcD8?>!xiD^R6q9h6J!}8^|SWF(Jm#*p2{OJgLt_w4X3mijA@kyz=x$K2hohbo`cf~dg+ +HkkQhJKxgi!{VLjU&=OejPEW|PL<5T9az6u+AeCeG{~2!r7}yc +EmaY<$%CS-_1aaZ4@ZZ!pjv~ZqH1Axito@YbP?DvLLk>e-YwYb?FUgdS@C%{*HavB$Z}^nemM_4LoN2 +uzytSjb)Mh~)Y6!e`CkFU?thiL2fdk2c6gopWa4*Up5+U(Y)RIx$le8Q+-M2*!#ehkNk@V~sWLg{sw3R0}iDpZy{hFP&2%rLa?cpW4>oo-W-nem<&LoSj5A_6is;8C6n=5(7Ns5*Bkhl +yy$l&;A#T3?##CeTqiQcWRnfEO3Jr^c0mCBwQ*U}lXCfI=ff!)o +wz-1+h(GYRgdb}Gir$(a2~E>)NrbnwZi9L)5O7^0)I{PYtyhr?gQFG@guni=sBco+3g(7s(x6;7#_z% +Q&;<^CP>`v5+C`eNj`XyLDmL~&8fYi@d5%zn;N)6#M?q%G^e_&87iU9u?i)$l6jEAFPZW;2?iYPf|_EdeN!1ePipiXl%ve1JCJl1!ab4?Ww3wCqypXBv`phN^D-SdH!+(;9~ +qbZ+H{e<@J59+u<)w@6~T=n0=I)u-+0GDG(W!r2va<$7|C)}Xxa$_9pyds#kExM#Z}7}Icvlt07e2d1 +Bz5*E^0ZE<-oL6PaGNz{-8S9FGNA)6K8yVnR9aA*q`rYt$6Ns9flp*C#4+?rh{=jPuK+Y?|AlO+anKTQ)&k_|{J~OY-NPQWHisU{m +Zy(K6&>u`t3a*3bcy%Zf+4g3E?GL{n>StBbOgx%>ZBnnlDXH+=4+k%Pe>@UzyQ1zNG4yc|@Kjn|U&E)ozUB +hYl6OsQ|Nb_cO`z!PG%2~J421{|udmaxyuKdihyG_I6z)p&Y2SAU`i#XiMglZfnpCZ5)z_KMH~nw+Rr +f>kRcA8SMf~i+@cf^b4N(%H`{51({m_;IG&@YoB9%fu-b0j%!Ct~uQJDuXbdDy-XQ2B<3*L$6y +axo(CsPi}>1b)1b#zM4&AOK71RS?IH}&kUy6q-rQ3lEpUB&rz&Y(p9CnRhnpV{oJ5=z@5cVrL}6bb&H +UkzCTwrpiue!U#CrZs>e;*e1`>2{?EGaTlvG+U*F%~A6BBvhOS7<1DREaYRvhy-hlp^%l_a0I-JNvq- +>k=#lO3M*IztKzEFQ5W7jH=O$EiEzx_ZmOO=*Kv-8tmPcP@n|G#ICf5+0GuZdw2p1>Cm_cdQU{^55jH +}_qkK1(g`|EP56m5$k{h^T^Lq#uFmkH;QN>3`SS=PUW_-}V3eyZ(2rn~2#n;Le~2;-&lXL~M{=Eb*qP +RekI~RMNi6vHMH(b;LrSB|Oyet4bP1`u_n?O9KQH0000807gYaR8K`32dXLn04UA?03`qb0B~t=FJE? +LZe(wAFK~HhZDnqBb1!UVcx7^PFK~HuXm4&VaCz;0YkS+cvGDi&3a;I)C|g!+ren$v8OXOn +dM9!rra5|X&4NG(BGR-){0e`f|4f+VPmV`sNLt0yr55*Ppj%wRAW40d*Q?m6(AE=Cg;XS^M;YnJl%bd +imdm_Ge%{oSK)FDbP%Oj73!<#4<>a8ed|84H}qi$^nW#CThzKJk<3A`M65?8JGhg3j^b;hzqU508(W! +NSSL3?PZRI2rRMEr&DaJbwS~@2|gq+ZJG=&}T7cC(e_%&&2naFP@&gdV59{30UTZ5tO+DZMzpvrb(JX +l~m}GE#^rY+`BhSlZi78r|td~i-RO>7jfXo^wh+b^F14}YZ(q>Kbi%s1r;8p$!yA7&WwlgsO5C2f&m+ +PvnXphSP*>llgS{AShf5zM>wpER0k&Ml9j=_?_R&}MNz-+oI2+XF@^}sjg}*$PXSd)#7b}9rJfHs@Gs?is;T_RB*&#J$1C$ZE +tdUkq=V4@HwzK#-Mbe-Pxey=^-WnDdUhH{%x$#yI^DR@ym#-OA9=^|<{ +<)$n&P{v7xhCv&1aIdGke3#0xQ7j4IRkzqOx12S^FE1)lL5HajS$flrqQ3x+o-UlkPZZZX87+`=q*(H +s8IwRvW1Vq~r?b8MR<-k8gjDU*Z1Lz3MI0W1yK+39nv$5C4yv6w3c(LpJPtM+CiXRt+1aF~O^RuXinE +;1nA%$-iNuRTH=4X|+ei}}*BCN|r-eEq}g@Bi`k&EuzMg_^ya1Gz#~9#5yhbcytV`wdf1v~89akd%1}2cml>;e=(2 +sqEPdn9u#|gS>;i9H{Z$BuWXnkn=%ZRvZ*!R7Bp03;O)-{mXYRUcPvB<}5M#{?&`8ub-WXWWas;ay0I +of6IILe{aY67O)?O?dve;bLbCXlPc;baTdli*1V^#<#qI1-IMnrX%?yOl82`GYqh&n0^|uS`G?tvPn)}3U +cg`O^I_-YwAvX7&UT3#+2q+Bpo1GS-l0t;5!NDj_I3TK1K`FHCvlV?M{NaqmVb*|&yyg5fOEMrBq;+E +i@Ng7!XENiNGhoitOOZb$F>v6_@tiCy;Q){d`092WJKuil#=U*0g&3EuN-{{(?e=OC?84ZGc_WBeU>T +NJsmd^fzWVg(sCE3gsbQ8t!cf6E6xs;0s24j7B?n@8&Q2WdKtUip=9zjqwGD4VX^%OdO|ZJzn2^=@+` +y>}2dy6^D7HBRlnWeh2puHb=kO`>Ll|Lcy9Dm77eosoxj7T&#azIhGZ6OTMuyTS^CABt&b({Uwl?r@m +_D-xFTt85fB_*G0b6&nMD#3-%``QD$fzh55SAq+IAf5bBa)@VSTG5Zvt6My`*mi~lJug5102Y(8&Ydx?wuI2a?Seq45P+h-(ZNG0QA-1nxmF3EzQhK&k6?3mS9Nodw;SSez4 +HMp%BMQq$TE;c~Log>1A2Vnh4e6VuVoDZM()PVUyylgx~M44iAd?6k-9uKmechJh!jl6><+It#%c@<| +EEC=cGi+BTdXm!HaDZ;-w(NpJD;g{=wS&K7l+G=YpN0CkbzrJeZ-oFY^k*s6Z0q +f}bZtX#znRunlED5}%Id2`w3rmjHreZ&)8*;u^5Mhfqesh=)8+ZW&-?fHzCC^T==UF%ZItkp>e^Cv@6 ++cKx7qsZIi@po);1X@UWR-L>yu@YF5@I?b_WLR_75Q5tP)#lrAM7=FbgAC^wcMqc%#rq$#G4RE3b;D9 +FHYAu`EKBS8bM+%lRj_j4%6=?|@WZRT`g%**Jk^Zh8G&!TBk!OAN)#E-aY`vytPX0-T@RzYh^^sKD=s +uz+U|{`6l*e=cegaz)QjYkF4cb!>}YXyfiQncADPx-F1~HKNGzaSMjj2`QU+VT?;$(lNwB$u~o-0{4? +?Wm)^nq2gp?OyEk3=X8u4A8fk_OZ`MC<=t2S2iiRxPBi6_(_j_UIu@e6(a;C{ +-6EM>9J?jtb9u}67(oK2!)?WqXYEp|56!Q+eA$I(ox^SKvh7+?`69xmU9L;M?glR@BFwD64us#`G$1s +q&FLYo~v!wKXRFgGZpQ|&62u`KJ^c$dzo0?$2JlUGU1sxTFpHf^bRaaM!rS|qPR4DQ7eRuDx6^bAtwU +1C6~{b`EDO%p^NVyg;Ip_EZbB?B+o1mjbv9;QgWP=EzFDoT8jS!g>+)JO^Zd>lqh +_fKsPijJceQ!e0hzpid9s%5GKb3uFF7cJ+)2hzD9?czoM!ohrMbDvjO?T2%xoAvgZr44~yR5}jW2zUq +b?PN$~?(93$1jr1xIKwz#aYkID!g8r5ORNS84kpk%zcM!{=k0tWYUFlK%sQd4jFTv`9ohnHx7+2s=O? +Ydo__fK@^3#kyS>l7C4tx{jz9KN&(F{#1JR+$W5Ml1t4t|eR +FX_NTtrkpXv;FL+$eYDG-9o`mi;#8NBzD~mi7BYp#vgO;2-peiOfL|r$>^|+rc7ZUYdFf8^IF`n?j#v +Dk%Z<$Ha(8#W-Ow(FB6cktu@;M(o-KGCs>|)0mQA6M)T9rNVeR%S1ptpqG&i`Ao$4Y(NOH0Sq%?2of>EJ(2 +}Ikrz{CCf-y$sK5!EB#u`48!H-PfF_Dj{C!tFf#rrSnpTs0G+s=56{(3NF5Ct$doMZ@J;6opd`tGic8_5z19ZZ)uA=|^0w@=RFmH=NCaq-KVz +w&rmP(6!Ao&&!uT`jRwk?-^xG= +bv)9ixgtPc6Op_Sfp1(6oe2&BifZiaNsIBPp8Jc<+H6iOSTqB=d3u)=aYYqPev9MZL;Uxw|KK +sNIdIivA1MB}w*4FA?*O{O}Fja2#DQv4mTI*vxB>%bW;d=CU_ME~hUvmEX}zk6E?%Eumqa +(&Slq74m%WR`S!vvm>PehbijgB#Aq3&fYi=j{bOL;SMmrTtc}9X*~rQKX{WSJ}d(BmkCHjezu|pjVCE +?V!sKEp2~AQ9uSwee1WlwhG?~5&6F^mXb8_ij)0-VGhTQFr1cy}M?Gs$G;Gx71%Lc3MDvFN1t(eMt&I +-TNyxd$S0wIA{NWwYQZlP$Ss+`YjVq^qB=ak>*nD6iGN8i8xRNwT5!g=>%qp!%y7y;kUc2&K2fv%lj+ +(pI2-AkbaT~c5WKkiMLNEw)5Se6}$ADevNGQKpp~X1}6ohmH7vCyE*3K%7GhrPxpA3jaLMgiDQDAc*= +&3k}uSO8%pE{uMnPtpK4DFfdXqe_f6nj-nfz}mFxeZ~&$Kg=J452}jS(HbUdQfIMlnC-jjz1;F`(x%`)#ZI3J=0PGgpbMs< +*Y>E)?%Qq3DSO?V!h*MR|EHuX|nU}}t})L;i`k)CiNQwLEkZgkr6z)Op$OIKqoHH$Tnl;$m^C6tb=Xl +$AmOD@Io!IK&T#tO(7Ks={$UZineq+edo)r_Lmf>+ZGzFbosQJXdDLYju2qp}@lq4sw;->jO8XhpcyR +20XFST5*sH^Acqn&)Gy@<_sGX)WoYh?w(u(&^-LMd)jU2Z^s)a#&BvIIn6hDs&YpdO0t{pO9EkOTcNO +$qo>z$!_ptp?yEiyhwewb~vnsb&p3$UizGQmmpqj*q#6M(hyI4tn5y;oom^}al3)rIq7%0L36L$Mw7B +U-s~*PFVMg`k5;Y2&)He;eE*==Ddd8NiK9wwTGd)Mck%wE%NHR)NcOMaHnR+$o7<<6>u`(-E2C?T_Pd)MbSs^~#U)rV$}eaF?>S; +BsGenkT4CloePvx+Htf`m#(K%Z(q{Dj$viM{M(Hfr{cPG_R8kfCd}WE6=1VoJHS?}XRM=r!*Tk-S-tB +sWVVq`HJKaWa*^QU4x}WgW=jY|jVAh}h@OfF8uil#p{_FGd+KeB6Uea9h>8SO94$Tx%v2P+Bc~7JGWkY*`4;N55?2xlw?#GouC45uuf5lU~+m%=@b(jjgeWQlZZBDM{jD_l&+8RW%X5#bR*n$d743NIPJM3)5sZ0 +ucWiI6HYNv@zO08vAOYR*{{t#q@1XsUCyaE$tZ>EhVtQlTddlIBk4p%;;a1lEPwb&iXkC@ANO)BaS3? +acmhqxY2$)0YY84$jSQcx?Vok9~jTQ{T0aemiq}hi7hAAG5fdL%CZVuej0q-J2cDC>+|9oH)2%wkKLzE=TiQ+P6-rBH +4ZZ<@VBA-IQ0VT%cT6|z5>ih;mVUmM1kZR9txiMNaon~gjUnxTZxq+zX!EBkqEFJFbZjn%x>O1=uRVl +|J885(%?_VXos`6|$={d|;&9xmC@+b!j*0M}T~+YIErd0)3JWx>q1TCJxHa4oFox3Q?#7W7q!H?^o&7 +W7q!vpAHac_vI=F{sS!uXT%s!F?tB-5KEH##OBqKAja?;>j^I$ggae{CX|)?MB_JP425;*P7t3H@U9@ +tuw*j$mHGvuEqp^6O;QYv^zDy&tI&tq2J0XznXm$6MR^)0$Oq#`rmBwt>Ct|$v159t5Db5uw>9ft$nPr9cjA~(BH#c&AnIW_kw +N>h0g_(Z1M*5vuTJ8z5Tt+93nYrp1otCozZCGN}cq +dDex~^?+*tgJ?@ghTaG}NEMJP+ojM7nIRR157cgj0B!Ka!M{ag}7+cwu|8`**W0{^e|af3r9J#q3Rgv +!eW(R+Pumh_Z5HlzG{eTW9YuN5|9eh6ZoO??=vk=TN`V_iH)sB;k1Jn$I9R>a!eZqlqVJ`?&LvXF(W0f*vKuYezI +|JQNesBb~aU(nG#NLZcJN*Vuf@mY{_quGU5S9tS}v9fJuEVG1V~^46dWUCMiI7-@<-;E=?~dem{A$-A +*ayy6OXF7RqAows@k*HQb>^3`f}ioaLMT+JqAF`AcQ_I}B%Q;h&FoI=`6JRwPA?QKj4a^RTOm`cS&yE +!dqZ%?An=tTS?Ep8tGQ1gm9SEg>6H+Nx+a>Am~-L5SruL;5x7J;zto(c~hERY#W^am1>S*w!*rB4@8) +%e)m+oK%1Tr)>DDCQ{MAXl4}gvgaeA8%jw@tVSQW{?f(vN#wgIW_0k4w7N7nK&C1lV$_bG{Vb6<6R+& +bV0lg$yMHn*B(MP)c=)vBL0ZFPeq*V;%J%RHju*zBlF6qHjq@KREDLV)z-JY>6FE +R>qabgC8jLe0?Y5*J=E78w%>r@h!-(p#m-Ou&};UZ%?c3J5&Nei-5*YRg*0eRBAP}L5}?F6g`R-6HAo +^wu`?S~8@cNwakK!Iji+q|o5tFpkncd-NK{pO7tR3P2-!fOuscUF7?aC=TI|kggi?4iB(v&Fv-Dw#!n +OsF66hx(msZ1H5B-Fzjd1^7Bbfg~$iR6k_rAaYJ+$;VNuTZ6fUY%9w@idAND>dt~W|D#mX~RN;Y +m^=hFg=e{z-2XHz=&MFR8KLxWGl)m`mPwJ0Q)KHcb|+F~>6Z>&}D#KpDc8*3|2Gzx6Ow@z(6S%o??yr +~ufmV;GvC9Oz3(pVZ3x>do^rrs+Q%<<&X%-tspcHk0{A{Rf-q>xk|xS{=t=%Xu7f*O;=W=Nmre^v>0!?Z3uSbb?2l^1#wH>G_GzA&r{U;Dp_BfFRwy +PvChVA6t2OI#bYx+sWb7?OZ#OuA6)5t9+f_AG>}|hlD?x|)|)Q8H8ebBxA3Bv4<|in$H@lmQDcm>DV7 +eZ*Ret|#f=syu(M@R&DDEK3YAqS?`I+LgA4SU`lmnsSseZ4m9xM119o+P%BCFu92`Q*`;RV4pu|Z;v_ +Td!v*FmYeRQ;`pEh8ht}t&d;ar>-bO>tIAPcRj%rYIy +y_;qf}ita*~Pi9M&VIDsC@(JA(tFhTwnj^+dZsppVu9yHUY^QYff*klnwA$`bzoWc!gYWyooe$`~_3~ +F0dEc{DaxGZrw);2$yzmC;`1JLBV-cU%T+(skkhM1D8akiF=VQwY1Qp1H@j$Ews`7@U+=+HQsP +;TSp$2>DE43?mC9Gts|CHLUhHO9xRplZI1r;pQDfMll1?kIl4Q)vkBV5SDu$=!wLq}1lavxaUxfp?CK +i1$;>9EhNp(Af6WAyvTJdjkjSGQi})Km70K7NNA~$aK(5XRq6o2OycQ3rP3;tMEmw}$feM7Hri>hV(F +uoqe0f$&_hY&#&O=nv5S4P)mH?3S+^*2J-mTs24ZP8}I)^agfr`W))T__NYVk@_Hh#=~*Q7u ++gVxubjI-M1)xVCaYC!S3w20qFK$XHr8xX4n3IwDx-+kmc%!N4etY+%d24(G_5=)y}=_nN!`JLukR^=9#*{F*keK!RQVFYEj=bw0d9AzVAW$n6 +=JOig$+C=RH3c*ps=aOgeu$>9uzk9m{0|J)4K+9j|p!Uea^#=tY1TbtNbaf_Mc#Zw$`6Qz5j$Nw9Wh} +)c8-B#i*sSSF_Hy!mq%W!mIZ$U;gGy;s3BRg|hR6>YG}iU(>xp*_}ca-1hDjO70Y@Ah&U^V7gPNLi*2 +eudt#sznTk$wZ|ztYtBr^?YRxw*zUzg&^%qKb7XOXJ4WQ&tnV8x@V}FL>Pb3oq;0^7!hn` +bHkDn_F=w&k7pY{Dz3Q=Cq_1?a@Q)5c2r3rhOn6E+Jg9HyBwf2duPN;&{?8?-5~OYYpPTb|RJ-w3E^Dh>Tk7d +<>*KTD$P44G&Y|A)^lWXVw?8&}Yn9&Q)ND(54OHq~G1Ba|1xNN=W37YT +2V!fZSnwEbjqKfq0O0o!wiQj+l^B5^ASN&F+{7gsF1|bY0l5{yomc5ZV#Q8VB`}X&H``v@~{ga0Wf9rNXEPwuMiw3D +t+=d!Yy+dN(7b$Ie7#kaU_rlM*4eM@%b?-rL7HB;`JTbe|n2@UPDrBUYuXllL^>Uo+(FL$vi*EBhTm@ +=Tnqxo!BmKGk=;kU-k=ywO#INog)`Ht8#J^;dEZ+?i-6eg0tF0=zK~)7^=iPxL_u`a5kZtbDa5V4zlF1Ju^m&|va;*I^R286e0_(R-kd{IVS3iM|JIvWtKEIqZ +&BHXzjBek#!t82Q1ZQ4VwcDE{iA%RNo*lyp4gVgyRg(#_qW;Bad>NbdI_lWj~Xsf7+ +rBPw!n>g%yL^Wle!=e$DCoU<7ms-=ilzQc6V{dgqHr;TkSvk@D?y`X$*VR4bv#W=W%FiM9w!vQH?~$)dk3*Xo?~MEeBHL##}+ZgZ_ABx>epT>MArQ0i1Dzr_7<|9P5|sw{YWs*W#II(+%^|I63#^$T%W&%9ZPwY +YgSvA7t2tWGcqr!pz?lTjRg#C~~&qDlypvPzp>U;BMmeBI1vh4apbAG&bD1yDatte*Sqf@_y2MB|9*J={j;~lb+-}{2Rw;pLS*rLe>Ry#QhE9!i>wB6Or{N_6-RJq3%;K&L?>%<`m2<4KvuBfn!U(`<_sqz+-o)%VEbwRatInF`(^uHcned3aj +3_fp?acpe%Tprt;SB~xfDgCN7@q2oL#zmHV4Ayl|)2j8GPBtO!kOoWwar58yQIL=McDBfp3&Ag}xP`( +bY@>EKA6EQxG!pw+f`8SCL0~`m;=5^rZVBa5K4pGh()#hXtIhrLimC^(?G;#y`%Ahpk4REtG6lmfwV? +>^)7BAh;((tl~!Q1|kz>ka_7h(@Y40_lTy*ltx_>`IAIGOfo)C@p`m5UiK%`pa1AG#uw;bamP(LD$=l +uYoJ0g*&R<0LbqNovNfWi*1hV&WBs!$2-a25I62z7+RydE6&k2(F@eU@k;`-*n^L02#cma{Ek3*Zw$3 +gi)t27eYQz=_H2!m!1z`SvE=Hei`4mTJur{Jq<*H-Nn`NE@fPXV;?9ymQ)VWAJuadz6-I@r2oH +sIZ#W9G@S^|}aClTl-e63h10JkpEuS%G1bOMUSP0)2&Dh)cBqR7tcOXRv%gVocfH8qnaawo}Eh)Pt+IT4iH+y1=h0rZ{a5 +Yb1{IVFGj*BlzDu6$FTH46AF5!rUy<==UZp`aWHhGtq)ux}KBoa%*A{;WPjXuwd4g-y!77c~!)c!H+U +BR3_V_)C*AYFT%{ria3+6`g)v=P_Ij&vDhOJ!C09;jYFQ%{(%WazZ9HVM}-J5*0eF!v@u>x1>uB;CZG +_l07IdH3+2cRCxTwZ%^h+)pqD&futpe>@{trk;i+r!K^gkv?HwM^QA}pVQyt>W&yIp34E-8W^Vm8t*fk-KAf`T3s*8dceT^<_KD25g5$@NVAA{2NX6cQPEV3n_)O +0|kw0cpe@UKc=J;yRtmy-WqIMS<+3hz+y8W+joFLGYQ6H$avUigJh%^cWf_&}V7-j8Cot*|jv}9?8ei +p$bf8;J5%V8KGpZCT{z>jhQ&xIMKgahGoBIY6)>?`c%P$npjjd8LS>S;> +N#2}c!1ffEFJW7R%aiRl7xe}tfI2f@|jY_7z12v!+9z63caNdqz9j0p$&G9Obw6UX^*P88Z;QEr|_pt +zoBlbM_yV2MAOW!fHg8Zw{F(B;`twyB|if(@o>mUwe*yEQc(?SpR@!Gh-xY`aVfq*C`$mEAovs +==I4A#YrT`AsDp7e9C4Rf2C}~#ihx|SQ9xiWndbs_k>BQc;(!;)zr+wdMp>Jp4AzljLu1a=Gb-*^p$f +hq3w=XB5fUZ0h!gluI*rdop#l^wU{EX>E?Ka7<8ur=%DDlgt8qCY4*jG +sZru-9WOehgl_^h~dk#0to`OY8hP}sJRm8fQ6k>PUIUSv3$^S2!v^APUGq@7Ob0ul}3P>eM0R1wJwXCUl-MUbuKVvZPl)ay1 +j%z6|&f!jTV5IP2TKEfC%HxDYfwYs(?ywWh)X^=y1szIqY$e)u+C +iJm7E!xP^YEpb~q)!tdP)h>@6aWAK2mnS!LsU^|hTx|J006WM001Wd003}la4%nWWo~3|axZXs +XKiI}baO9rba`xLb1z?CX>MtBUtcb8d7V~EZ`(K!zWY}YDhfMjB4l&uVSpUcB<%)B(jd-0i$b6zS|&o +10!g`X7rVcGhcDT*v)IMzAbupj8O{ucG^8H5uqRxSAW? +>CXjH$^yjxm8YJ}wM^z{A7+3DF2q}~v_WaJ?(M=YbOV`3O17e77y`1x^O1~q~=Od1B{!~81D-`-qa-_ +NhfLTS=6v_asS1)4uuXtg3e@5^es_5oFiw>5HBzP&PG55-TRD*0Ml +gS$(ceFRbb0X=Ap(Bb+%}}pYI|v5QI1x89EhqD*-)^s~yNd^MPX6%jO%QUCnx`Z7spq#3tdZu1u!pICDBlb*-RyCd&F~CCrIguL6S#T +s^IQp?wI$$$aweY>~$1Gh260lRH>ZEo4OxSYpml%UP?FH +3H7ZEL)v~C?V}M^>laY9*b +PA@!05|yG+doaYQ76J(T`q&-K;;MAUi$8>>%A)2QvJLu=lY}A6?QTyq1Fro?9XAs0Jjn4CrNZlL=Qd2 +gXEe+QY8ncFX70m?uVSJ+ks0T`Gk=fKpuO%@oV)BJuyqCcejrl5qekH$<^1iPqB6wb>lyy7$vCY-&s2 +bZ5#oZCwLIEt=PCpugM*5k)hk13|*wt{5Ca~TDr|#-%Wczcb!+%y5SvL{?GX +rFOker@pmNpUnXCuxZrlU`eh(nyb$VFW>SYXl>;rrX;J}0=Fgm&~ap-1?SJfa~I1|KoE`W@uBpdBO90 +KuKvcu!T#imzyZxYyc@Vp>;P}`gHPkg5FVI>{2;jORgP37L>nfo1qSH>6q@g`UzjBj+9aUVYA$D|PkU ++r=Bi{pPSO)t2eO#!AyBi+|SsOg*(8)iaP#RQfxBg0iL3s*vTLylwlfFg&5$?Rw=wrlD6`HqI1;y%qR +ZgNmOPQD@dTrFL_!Y%2PC9PI{&stm=ixxHLSizAVuX)cEcH@6aWAK2mnS!LsVtXZ`ffC005IC001EX003}la4%nWWo~3|axZXsaA9(D +X>MmPUtei%X>?y-E^v9RS!;9KHWvNPUx6qyYrCOUH{G4>c;ZYIo3^!;C0CN`W;0nDA|Z(hNw6SkTbu2 +F-*W-J#XfdsT~A6}0QY?lF5s6el71cvmh2L)(jeXplb!X_ddbdZvQxoko3TUhh`l~J`S$qr$?IE)4#GoF#ebr6b_9cEkT!Ul_C&)`T4@&ylB5QCp!lz#}d;7I|Ur8$HSeVGsp{6k?$LkrLZHg&m};O%4p!^nam^OY&71q+1(Y{D9c6@(kpZ$exI4AFTOW +Dwc{cBpv~@*A~|r>NSu9CJDJVE1aceKW$~ywg;|S=PHI+;cKHMT&HDz5?*Hb(1x`PL-_;~AvX2{vMW8 ++0bF91ujHf9Mwz(BGK0oO6N*Ms2f3I^w;U#{$nVB`5D#DThFyxZNHb(YfIuWtX`x+vhenBOhb?B8%lp +yXVdDk6ozH$6UpNRCWb9nnY& +<=m++B>PSL_{jPG?It8Q+YTV7r`Ykp;7{gMF7^a^uX;uR$2S8&Af|_cps6FQ>%y5^P88b~Im(&+jIqI +lH}^-_8~eRJZ`+>3DiMhaBg|nJ!@wB!kMFpD<*L>(OMQ#f|P@!(8ilKD&KCA75QB+4XF4;ehzgfp(*J +6UPXfzNbo@jK()MyBOV!t{lB@20nAWu+Z@S+R-FP9O3tTIi5|)H|MkIa*iSSW;vTLtIhZ0g=4ePe7qp +XT+U|@K#s+pnP!8XQ^)Wjr<3O3QAG!f$dQ|oi#j3(f=pzY02QgAKTMbWx0J7a^vz^c%ugr8$}9-_ +dJF_dnRK>7Kpso!-FnZP5GfFLh=0dj(c9k(59*(Gy}*`p(wG*L#|+d0>GmB0~dA=h^p1J*-qxD` +}hELD+~&Rf~(l#7(cOe2ef#4~S8#D)+Ag>)?>Smi;X*nI_o>$Y^a1Ss2iq!#lK{cy;e!F=k~)h02PQ +&6=TBZqs)Up_U)(R&@5+phQb96K4MCs3_1PM{r6fIi1PPA+?OHvOY#=;Ot~N5j{oBWjMkS+y8New8jkmj05%@mR)vz6x<(n`0G$p*+XQzCK1kLLO7lccwg +8%p;K&M?1I`2Pnj;5745rqSlNN%%qf?Xnr!-h#J>@74Sjh8IMb8)LUs+_! +iHK{-{)Q4|cb(kGi{5Mxu-YLJyZm1=vt|WV +;E82jiA-y~$hfZcW9zv4WBnAQfkxB{cYA}@&W?8I(Gvm?HIEffMH|2)nPyC4PSp{y$`wHjI>b}54B1_ +3nBa6T0gDb9@yzMy(~aI%K0zFL{k|biqgw?q8Y9>n4}^r5^)MX51O^cl +B(gLOCHa-O@)c{0N_?2rNO2*sY###8RCdT%s04!gCkkv(puYzn+s0AV~Xj+If4O%Foy|R0TSZ|@me0%^GBx +|oFe{7s#A)l83u8C=qXtb6)H)W)1wGa37|9;@xqnOtkQ(<0f)$hMvP4pk<>*a$xW6?c +4MltBgz9lSl1gQ^L`QJ>FUyBo7Y40A;a(2tlRO>V8oA9FaHh_lOXOo5TTzM^Nt!mhA~!cASJ)P +RJN+&TbrHO?C*BzX$+67u2-lP{pN4%A81TopS*s}PX2oO%?Z0(o(~#JX;oKR)7kaXWy!QF2TRbs18$5 ++{d!hBov}Ab7I~ZDCVEwY!}ptr2jLJ9@fMAG3onr7S7VjH0`Jk;gZA@4IZ3py-I55<8e{Ysl+=;EBQ*_|28dAt!5-J +I4)TPK9|vKn{Hdk`07r!;@;;cu5`nQsL{1v# +=9uB0Dgl#vj+4|M`g7M_McVew;36Y{+Lf;;aOoqhYR`Yk9la%o>h*u_7jM`I_vcj&Wrx! +pxO&VU3ec%&)%rr0;mVwg01Og-PV+{SZazXq;iawt@_L+h?wr;Ym&J@wTNXS`-9j~kJ=>{{cS}?Lz_- +zHjXQb>E+7d1+HD?H?@A%ca&tia&W0H%EEuwpeV|#a(E?|@?3^_REfEw*0~&vV_(qI{<~0mpG#uL0J7 +eRTf>&!9m6Klqo@6Hc&mgb{HBI=>swN$Qq$^THj1m|Rf}B{!rd(P>TxonZnhp~jZghDSB+Jr6?L2M5E +-XL-_}gg-a0XEiM1dz)xV+Y7F*;?biQH#j-u6V(H8n`uYY~na#uu|>UYPb{4A=KKkA#Q$<2~B7haC4c +obLW&0~-KTx`U1IaquSlBKLhno}eAJ!!wl6K#7rZYiV(=f!hZ<^6lQqgR7Qs?m2t8Vy^r>YG@zjLL8Q +Ru$(_+9GsD->rg*9glae7s^z)8Q(OC=#Jwi%|lza3x!+U?klnk>rahl+bjxQtO)87^<+*J=5nQYO-z! +0mi{Vq&HF;}Sk|0KabMW(?Ib|c2^& +yG-|&jx8mG;`5+$zEF5;hsaV27qwy4j0M5yUXK!OW6Zv@0lATu8WnWy?3`HiWtjbG;VtFnHv^Q2lZ^CtQfTQmqmyoaB +jr*>omMr{bImXolvW@!MUu^HZ`)T@E7y`idb`!@VU=us$C6aRhHe2aJp;P9YSf%J%`*+neemp}N#RZL +p*fbEMp(6MeFv}5gutM67G(rrZp4#1Y@L>Bk6!j{UAsjCH;TX6x;*XmRj1=J)Rzn?dwlEMepfV&!74! +R?#$Cerv+NJIv`-0Hf`C0xfxKdLGc!pisxO3BO|YuHxs81)kYmq>tg}r>N}S}UJ#yjS2y2nnrJqwYK! +u^vx{)3Pj=YuUBYhfLYP9vEju{#bC-mapuS_2op&JSwtx|*3ozxxqz_)44!T?rxQtpkpr5F!LA%E>*w +JV3FFl?%!0}@rZtMrPn7D7@Neb^z+K|x~(zM$yr2FlH1_<5JjQZeVv4;+${|OwHz=q2j8Z;J6{~Q#YH +<3Ws{Y_o=RmqOh9_8t;diuSj{Bt5EK3e|;P)h>@6aWAK2mnS!LsTFHVQEST0012s001BW003}la4%nW +Wo~3|axZXsaA9(DX>MmPVPkY@Z*FrgaCz-mTW{Mq7Jm1y;3&XE&N^<>_F>?u0|adbJHT$*K|3uLK_Js +IWpkoiNy>?l$$#JP97?j}IBojShXqzZVu?IFJeTiW$O9o`r;FT<%gtbrm?9HnbsMXa2Zhec!Z`6>8mr +Em;hL;+I&BEzA{`6{aVo79@A7o>E|1k@An*i1z`vi3EK6lXQW#MZyJq8&aD`C0t&9?Gr8Yw1r2r2R%Q +RIByvJ(X^5U0;N<u;J7r?u+u#RBDHpt4!XoY^RLWa6#X% +HUFS-peW{lHBQK|T9+`6)0wj3=2=lWVyav)+-lAPtaeA+1_AV(rD<_PZWcgF5o_tdy9);b!(4S;FEV& +<+~f9jHw;LUOuBd#5sV_~BEU1uhkZc)Q>BDQ?_P!_)&WxavX4(lD@oNal?IBKFVRTHT%@q2iglu6ih( +N2h0a+&otLnXQ@3spcGt@2WW!=vXO=K~5$6;L*R~H6qVRJ>HxxfjMZSZTy^icK4OnCt2;5c9z>}^K_U +=9yLv@hAKD8rj#B61(O=?t`%2-7=+O0zRh_KB!jT#qO2Dk1psYOI0%Kdh=F;nf7k*QeAv{GXs&e^(f@ +J3WtB~>bJR!{=(3qf-5vI*y%$;=s(XDkI)%8y6VJ-C=9vCz4-v6#%UJHl=Jx+m~On(l?aY1 +Gdf%!ylpg6R3l|h;xXZ%ah6RNrNy72qbWbF|V8okEB@wW=BUf6fJc82-;w_*eDbiq!gqQy@2U<@_Jop ++DrmFOXG98lS^B#ujiT!lgVop-DYV-Br{Q%UjE_Pm20NQ;!o^0oAq^=&1mN@6{JcwO$ni`NkFXg8_K5 +OEJVA~Cq-_TcvD$dWXc36vn(OTyomR+StDL+4cg|I)fTQo_Uh^v2Dv@)Kq6)>PSk%3VZzH&wY-LurFg6T}k9Gs!p>4 +QptAmIcm2_I!h5q>L;y=-+vw!`04q2s7V!j)BwDM5MqdFfR9`-u3*9*Nq?TvhZOSvU{KquU$RMTK-^d +dMt5wFB^aU!0-e)fPxk64x~P>)`U7x+6FojgK+>Q(^v3d-aKuiZ!IhuX2OGME|RFH$*m+5IdR2AFA%0 +Q4OAvl}Buu&~H!E4lX8r`ItBoR)|ElPU^1fz)8eU}j*i-(R`*<@R*w)=dKWodG2*oNa%?YdpvH7n2AZfv%(v~Q>#*@jTBo4^ +5#8jkJ$WEDD=)9B^Iw=fDtcn?L>pp0>%$!zF#Z)PvU>ycOw*$(tZ7T~$7?HRF@O-D`Vw(hwwsWbis(& +mWYK5+;&O#1fHNlVO!KRTZ>$37W7U%M1Q>gb$(n*a{r@`n3x-?m;d99thl754&Opv#8S6)k92KT*yHR +P@-<-r;oraIjVE?k984Dbr^s`W*SnIrm@fxp^-qdbTdwRj=c;y{m^0#p|EVONsvYQHxIL;zq>|pzCze +Tth?tpR-hL)tv^xP8jG2YPK$7SfM-|vGmK8V +0O;@08-3#}+E&{9X#(r$|WhtIqep~AAs=q&{?pJ*LymY@dwU`Ps&b+}_jEJS?g9PiuH`=wZL+ziOmsk}kmL8~?|-2~YKbHHT& +LP?gxzHGBDI717VI{fx76_T8_q-1P9_|1vZAZ*Gxw%QIhJ;=j0gV(P +)h>@6aWAK2mnS!LsW_7Wq#)l004+G0018V003}la4%nWWo~3|axZXsaA9(DX>MmPV{dJ3Z*DGddCeMW +ciT4dyMG0i-qd6)Qlfk$);f06CV9zw&Bm{Bw{I&cGDJcaH@r$hven4_?K=Zr07=Pq+C7+95(mIsm>J9 +rxl5cV2%^x6S39#L3W()I2_s$*M+qlSbJ(2uF-y_{>@wdAJkH#S@1?v$XtjC(CHe2|F-Np$^Q!ffrVgk?$uZbVsu*7s|%829BG$kR0WiaG0a>ED(rV +~bef0fVYb1x+n{)>reOdYn9EsR$&O>oX66Me8l;L6$)UGLxnhRAdij(L%p+SJGdTzE}&@O+UT@~yyeiJ3133Xl60+U#N|ML6OfI5? +WsL9*Ai{;^|7cUQ`De~Yk4jxy71-I`$et3S|v&*SyHo#mOA#{RwXIEfuZjD@FUCK-Zl)@A`t)7fA?PK+)|$pD|c%oOmD_;j5S_XzX53xi{;8{W{>lvJdT}69sl`_4=%T +pkijG-B%zWg0V&7*`Fiw40r$kRmM5Ho#b(9o18E$mo42Y$(uKiQgD*F);7w;oEqJ(Dy4bQJ$wx1z`F( +Se}Ld(;wB~@$C7;ylljSt!E7_*IBKPgi^%j+Fr{;J<@Yq!#UMsR!?*{-7Ks)5g75yp;nDH4=O+Fz)nC +Qf2C=}&L!QcEReByc#d+Ok3OKwY +ExZ{V!y0iyaDM{i9=PffPbu{-uLWSd;umV}Yz{8~z?-w*9NABw|0%GrkK> +-ye9*6bPMB1z6@=NZO?M@1MUFNlaFlK?^qz>IPMe#@y4X1oQ0GDmhvk@x}{aek>Qh2x+1X#( +Jbp8TwdbzcNOBk#(iq5o!S!Dw|#6HeXf_qs;MySgiFQERtOlPvS^8F(~ZuLYP?wjNDk-M)|Cy^wDs+{ +_q2dV!7n^5p~~cKXqKe*IvZ@Kp*2NkYI507T)GHy6^RsJqxb0N18|^` +HFBS>@pIp3cP1&3c&I1I26b;_5R*l`jWBh|C}GjwW;0oQ$h#Kz$p)W8_Ig~z3S-?AxjyCmekEjk*3wP ++FKS0In?fgbezxjxmq3ZnXyAKc*$k7I2PAVTjW}GMicpQboP4eRyv-c{pR*Y>tG)5MDKGoHYZ{PRXA2<95=j2r~Q8w3#d_ +q8+IZ*9nqtnP;iF+l>DA!d136$eGK-Gy{CL`91SVR4IPLa923B;pW&i{$h9fcZNQ)?w@3QIk?jr!5KS;Ma!{}T80t*>I&)- +{0EU25`IhiySg%R8788?2;0g_3BX=}I5lT4%{R!x;hk2?lqPC|F_|rVeEN0 +jKJEHf0|DM^NFh&gUUa(O4)D4!!Ill9f2&N1$r-&JDN;E(q77x~RkdiKZ{(@XxRT4o2tcbL<>4ka#*91>w&_%=HVW6U8gtXkT3KDmE +}F&m?q1MI$RYh$Fta8M>%wI=F>K#)c{_yLDL1$v>#SV6T$|%m;FWC2Ju-Juow&*4JW^e<a80htS5AiE7S@5bq=2WFm{h7`r7<-T_$$Q( +H2cKV@t{6?uMlKwASbCZWg019pfQ{S|c6b_&0cQ+<_H>rpul0jebK2C%)v$np6`3*9ahhX@wX^sWv%@;2w!L#Dajx5BZ8}|z019;D@-}yC +xM^2!m;(fp`Lhtrq$+351Aii(?Z=|Hl;6vd+hJ?<9UWTCXEb0@s;A<-00$Zn(JmI+Kl-jvbx#9I8WFHb_T5lX1zyE;c1@(2UQ`;H5_HjI9uR~XF8x-9gp;S~UL>)M-{DsRV +qPg>814^vRf1U$bT_Ynd_UiXHdFST4m0l7AKSm5Hit0{oYSkNZ8MKT&LR;@ZRhr!0YJ1%Ybg91mr*LUuf>}HkfCO4q{6yX_Hd9n$+P+_00GAU +E5OkJ|qpC*|_fw*!kl%9}PtqX1~&?q52tJtgsx;&T5LnK1P5`vT}%Eil7kD@K!i+mhyv7|!0*bs^{B@_DLiA()u`wc +;rOB(%dYLYeSltwWHD%?ENk2c0qM;+(SJ1b>Ssa<$)>CK>UZa#hJ5!oe37t*E1d)1LJ(u9d!+rhegVg +0oE1dJDPgV%LSje@sOjwIHe2Br#|8Xioxh3CPUvs&Lg4B^00Z7@-vmvyNj{~A|eG^x1tPhi3#90u!Y$ +5&ELsP6~uo5vUYE6_n%?HiRsuEyK^A&52Mb6n0tIOvie7dYx|@>vh3sMwPpR5W%e_eiff0**vRdV-1P +zEHuiY?T17xN;^=|pV%6$ +a?1n>a%@OlajRZ5LT+o*6OC9A%bXb6i_eBUYG8Omzyy`5znGvucY}74YATrSnPw2vuDAX|1ngb59ehF +d%9$@0?+?4G$+D7hUVyIwCMGyZH^Y$ksW{Ob&e12hM!=<$TDgIHY8R7Lu&p8S+$Dr{wWhvP^~Mp?x(H +TM^o70YCB(%o2KyugGseu#4-9IcFGH>$~;WW?>0uQl +32&CtO$@c#uAr7q2g#V+H`yc~htt`6{#jJpWPO(1sJS`96s{^G*I%QvIQ!I_p)|La4Rjnsf3hzNK9!< +|>)J$QG0WP0D62i-bZ+Zj_{>oKnj|c6N3q(}m|lDJ&XIIAthSE=7}XiBD^mkaILD55rnwQw9r8Z$>;A +fpjKxn7-^}HDdDGXSkQf&UokFP)h>@6aWAK2mnS!LsZ3f-w1HL000<00{|TW003}la4%nWWo~3|axZX +saA9(DX>MmPV{dY0E^vA5y=_AqN75+zonJAL&pDE8A%mS{6Jnet7$@8XnTrogPVGCwHIcMw>O#Om}s6b#--hb-mnMyB7`fBI(a=*6yvP(^+0rQC_Z%i+mbYH?uUmjO1x&Er +QR{tV;7NoFrQ44A>y>`TRl^VROPXU$wfSTqaVN +k1w=k$e5tx=l}s;_3LxYSVLVF)MRJ+E<2QrhRa +~go7v&@_ujB{7g>egg9UT97m`rmdiGh4qG$>uuubn5FQu@ieVM6q-QFmY7#KYj@A}QySsx&Ao%H)`z^ +`e3O^QW}BIvS75q*5r&(qTSIRMpwd3`!$DX!TyVrXdB6=KaJm&>A#aTK-&PRVT+f_DSq!o +{eJ%p3U=UaFS@v?lCrx7tNmWI3q)I_msc=x!*29wW8?Aqqm4(K5p;GwiB9^_;qd!;3gnB0Una#gElU_ +`l$Oy|QY05Q(Iremm5h4PxJZ&HA4fPHm(XSf$jojcAjc9a+GKx#h6#fP*+Q`Cb(!^wQa{Z +Iua=`@vA5CGw$M6mM`#({n9Mbmtgj`43ogPYASCMgoyy=aso_=|Z3k4tCOmANHbGN6$}w+Bx2 +f_FqLWkB|Pb|7`DB)Y^FkzgxZNr~Q*3j($9epv3Xci<5swN6(|37ypd@w*TT8VtnuCm&bdrUPVX8(f; +AfgZ;f{y=ec%?!k}G_FsG-eFrsP9Gyf5`-l4{0QTgFniOFBdruz&K;Ui5tb>Nige>{G9^lA^f@C*RI*njc-7~0u8+jPLI68Q?2M@p7gWm0Ycd*Bez4#}t#Dksv!(Q}k=WyryJ*syEaE_^<^zf%2_UI9` +xC8&~p6nmJK-}yey*N3BpNN~2qvI1@`KSF?d%bAqc>fh5=K1jvG=PYOI!6QsYQETGIEZxYIl$1f1BGx +bKfc;C{du;xa{$m@VRd^dadOwzhQNMH;_Oq{Fb0E;%jCOT#By7$7Vq-Wu*l1D{Vk9^5**h`FVaa`-9% +h*UdZ|fBGYUz8YgizhlLIF6~h*mGJzt@BAFy{DI^LD28%_~KtKBK1{P#hA&9r}WDWp`YXIH5t-#2$8v8wFg40UksDlA_47B%hbSoAWseaMVJC%TaAf83Xbby&T-wVpNDZZyn3D%Wp)0IG&co?k4zt`*DwOR5HMaf6)>>#^XKu +TOkl8C9!+xC*9&6YIbs|-wEn37xW6foFOsYHEudTz6Yux9*9}G>A;4DGa+;G8VFW{IoNEDs?-)DV(dl +47U57s~_(?v5E_S+6I!4wAPy4{~imF89bXtQ}_e|stn1+!CqKLh@1Nt=-?Uys?aHngnrBNDRHmxLg%v +dtZfvkoyV3b1#Q<(7-WC3YykY?1k5%dD2!i))iJ0kp>TJwykM+P#oDjOlSUJJ_(U|I)xHb|zk>SpjfF +W}9nUKC2;YEA}o5^R>225h948LlCe3Kx~sBNibN1dto +SihKGVr52B3C&!;e$~!R+vI?>PXZ +XPReey{xo_4v$3T~-)t +1+$`}nC5$@g==HYCNXK^}8q*bk}L2mnL(1<;Qhj0!lu8S0p=x`>DxIrWj!Vh$%z1@Ze(+ngK +=sj?5c=Y56Jp@9hAMm}_^M%}h`3O}1q4)sG8!W@&Coc+E6BCe4fn$hR6sh)59~41jbZ9k%xpcR1x)jf +=d|moQRcP@5d%^=2DX%K&4t9Y~imJn;P$>2$3AW$IRe(*MuX(($jPNii((6OT>Tm`SB4S+v(L` +MY#kdezY9kQlTCt+1RH^-?djJ0jQX3-t3|bd`=0t^bY)B=mmb>1kz1gYqh$Pk^czoCd|`tm$X~%bgzs +eXF2LNYy4ulEIE>Ve)zqi(2q{0J20 +GqiXMZFpR6@GB0lEaXy+)=qbWM9jb=^AZl&Fr`44+n%zop9oXa)}Ys}J7SU;UWZ&&K6ZVs^CvD)ha1vWKhPE&c$*f`%gdzdv|j%6<<2o`z4l(9o^9vg;HRDA7pS*tb=SH!F@;vb#XOyiqDfj-D +0SdCa7h-I^rA|!L6S^mpPQq)2_!Ar9wNC6SQ~IXWaiL|=4O +=Ju;p_gt~MDT8tFmuV^>r}4Yq+K08Z!KJ!H!-WNXpzEUk_x95@k{)){_DC0Vr_ROP=_#z&o$ThU=RLM +BG8&4cS=EbHC`b1b&4tgnm%B=>y`ZDWAeQwsSSHkZuwY|frL=VRd7Mr(T0^y4j@$+dW>4KS0W91g&eo +pcPW}p4-R&T8PaGig;SktI9SjZ5f)xhnUSV0_*95-q`yGeu^?7YAp3LwNvn`jc{kR;a>0mwsnP(WoYJ +1?mAQpu$)?hQsD!Lkk%C-Bm{sD-N*=FCA;tCh}=w`J_y5t({_N3?A*nIT(^Dn;q%U55w)~=Fw@|ga>R +5!&lV3$O2`l&P|>wnfm+jxiRcddzvOAwIUTYJ6}hX7SC_*LWk`F2d3k-6R!KRFhsham +v;jPv0v}32U`0V(ZDllZvYneE9lRm#A@e|Sbo-G}qKpza0Fk5#rw**Zm&v5LSBDW2Qt8%*fT=5>3hx9 +fC5(t<6YLiY|1c(mP0FYMA2l0_>>QJLdNGP4Aj%2w<}Iq+sk&>zK=E!(of5`)x67@%dODKS-jVb(s4h +CyMUQK4Z&(}HxDc(GzJu=v>(IYlx7q->KAg<4Sq5{uzIo=4Ed#`$QWfuKEKfXGF=ZAQkMz>zy9qhdL8$p30-|e0Jw716> +O)vI-KB4D$5hrl*`7T|#9YxQ7e6bttzj(C|ZTxh+^YZ21anI__AvW~gUUYZ_Klk^ZeFh&TxqeIV3}WR1&?8agFFTW8%`Nq7A@;-C9xUyFifPdhcRZ{QEJ*c@}#3|6FE= +!thSO7P0iW(8O9OkI?CX<2ytH@h)(jN>o84U*El4jQFx+kH*Z ++oW$7gGV2#Po<91Yf_LmdudL259IezL8$o#w*$;nEM37N_Zh>ew_>H+%kv +=Svs~8KlsTL%M6Uzu;v<`)-+JWol{U=GAOoNzD!%0)RQr@rGELR`toIs)r|sVZvM#4{dnkiV8!$Yod; +bE|ul<3eQPd19JGU!lM(2rvOek8ntkk&f+7lNqme;eipGm~1}3 ++0wiUTjcrTI@=@w}~S+3|so8|pTH8-Dr{#zOiO6vS2The$$@LspmL2zqk+cWIi3!Y&!|>9< +s2lVST!;tJGbM+IGSGq2J4rMCD;yw8Lxw(=U7zB_~+OPv^tBFVk@0aVRB(^CpXG?AcwY +#YlPGU)WBPFsAyVV0==mLLErS(lK4JSC$Z(IHHNbpj18rrb#;fL=YyfaxQT}W$iPr&W56d2(CwEj7pU +n-*O~0ieJho;Mn1>c>&1pJb<4^isHKHk@W1=8<<#K8 +D%|wSo1MF>L_%-sSr@Q$@>$=6bfT$1^k*aQL69_rue~X^T=juV7cSZKK7wu(fxub@5`q2Z{Rd47?#%N +{Q{Vcq*P))R)9u#qq*>o;m|7Vp0C&sMeEeSc&}3k*9OisI{K^b|%SMw!M`4^HlYs#knFHSp8%QpjgP` +dk&pwO*<8D98*MZ4h0VdlbWGT%&?iKSHU0v~;OWZM71dB#4tF(fP1Ne24y}ZU*da3fnC02)bRQBQmE}WE7_p*D +m*0CAqfEB78LK#u9KZmiqwvmnZgt(LcOs|WH^_yLrB?9>n4c{AfpFS`(YdY)z7DJ +O1=uc7{xcO?phG8N3EM*fBp5t%|{O(Z(4MU50OwG;y;^@^w-CmxD*@L;wxeH3zl4XR#nCSTud+$X#62 +^a|apNByinMWYvnnBW{R%lrB5Qxz0Kp@UDw0J9mfiuawTb8l=Y$*0FDp{8}hhgerO0LT5%hIT)l_ijD +$hG8y-xGKS3<?gyYJ>4l4sjrnZj@I6U9dK;tOk2lXW8zt{*sMyD+d!om!&m)Lqtj4g|!@X!47jHZdj+k~}*fcst!k)X?QHRVKU{m*yL)GO>R-b5557{Dl89=VEAR;<==CUQy2AY4n{=)Fr!@Veeo2Mff>1d +vfVwA?!?IJLEnsSe5;q^-xKjAxsPAu?@jtVD51L>(VhBgHm2#r}bRY+f_7Vq-w2oF=1>+FW<+ogFl+a +P(U6OXp@N~UNi%i;$K7XT2Zwy=%Da*@f5ytZ8Ypd-+BG@JFsNU_tcy{{psV-2dm)Ht&1Z}upv@iB{UF +f%-LPJnJ%i506+_mrh@mS1aRYb#>@@EMnSNga448}YkV*J{_sZNqf;Q3sxlI`-@tREYiz>zesTW=V6t +`otc_ZxY}CHK3EzJh(pKfhzjE&uEdQ-=~rjy2VKBnnk}ofH>!q)HS!{ +bqjju>e%UjYQcy@3rBjh}cOVz^tOvp=!*8b>XWecH*x!t}Mq5&+OUm_ThypFTA8l?t`W!_#wS+pYzqN +vG9DZCI!KMy9^yL>{Jp +K~?KKk;j&mVvB`4?YWC*Zwb=jq#cg7kwrA2zPnC$diWoXqy=T+Gk$QNzqzi2PJI3@x4E3|TjJuWuHf{ +ni!>)lOtRI^8;RN?YQDDs4ToOQ+)n!jb2i1b{zA2opX7V61Hh){^Y{q-*OqtgJ_pfKt=LjztEIB)%u5 +r$vnJbCI3N98`x!3YJ(yRclI}Fl%>5$l%pjS_W`e;A_zpBSrvqUf91KB`P(nD)jBky)phYB@y^m(!8 +u&k9-m!Uf8N+qskqK{qWSn+!Q6z6U&IB4iprxz=A`GvEby~y;<$l=WlC?FdOKULek!_kkU~7xPIT28B +8m)_F+^Lgbhwft=%Qt09?VVr*akrW=G5Qeb?ySQ%(VRChPV5bwtbz5_~;@5xynqhOZs`1T;p%G?eUiHgX@DdEJptKeG` +5$Qo%o`TecBn5P{BtOxpGoB4m@|7x9j!cnj{r_VF$i-K`TAdi+MvN#DtjMQ?oAxm(EZq+ceN$?PrcY{ +X1n-oQiP5u*#ap@Q9llp}l^lPjgvbT_`hursVwrmb$&CuQ^bx#{5fIfq3Ms}}98*t0?# +@!W8_cgG%M%m%2kcLbWYIX)FU3gRwJy0r(D#MWv1P$Ho?{rv?=pR)i49S_o+zPiH9b^ +!Rb;nfVEQmh&Mz=112U6U>rCKm>w+w_O2K?#nI`Jv$@zVuXd9z~f1N-L)W~fe%AKYvoEV-SD@bVv0Rg +*xHeG>NfgTXfG~ZLnF2atqG9gvvBj3NMy +gwumCDV(-_>>IVJKNI%shg2KNjF3<9r7z?Tu!BpoccBHq22w4Z^H|(^>(lqrG&N0#uMhqn38H=E$uW7 +-+&C!CfC(ZSkfTtK)3{O<#aIBASDDaXGh(T9vxMtbN*($G`^Oa&e0B35#FfcDt+Qfw`noa~56KIm4nW +3}XF4MQTSqo7x^o$G;fw&!NFw#Af1r3}klxR(kn^J+$%?X9ep~=>Cs-jpqouku}&0>s_!myfdA7f?V? +~IOE*D)c5{S@(BeeE2X5rY&Jk9a2zkx!$BHscCBm<44D{I008eB2yae0V-t?om#{-1cX^uvKanj{HV-8V>qq9eEW0wd#YQ|M`4asWydL9PaK6$=@rGu&x3-igTm37?0 +DhYz1U^J}0xhO-JRmjV(E$ngi22y~RIJWn)b|ciUxYjd(osMq|fs^1!LLH +HM=rNTbH`I7)R0t3k&PDpWA)X;xiZ?z*}%G*Er*y-M^E$gY}fJKk|S3(+u3tiv|$rK>d=;C9`m+>a`p~s8JkA)y(as? +;v#DwcwH*RB*T$x=6Wp_Tuo8eOtI8TsV@wrN5}-W~I-g_> +Ys5f!j1c@+Fp9ALkG#>!sspFjE;`Dck}JAPk^bEh8wRMi!Q(oqDJGMSI;NrH2Qm6Fa*POD3vd+IiLuj +icibtSzvQfnFujY;P%k}K6t@Rw_3FOq1fSn2$VRQVEpIz-_3Yv;2Nb+xHKqe)$%T9EZt)W;8g@n_N6X +;JHn}Bowo84gbV~J|E!|(Iwt$S~65j1f+r0}lvFBkOUTrcTtUjB;nG8IH+D-HOadW%EylTIz`lMQ(hA +Yo2PG?Ly-XzX~&Vwt@s0Q0Ovy68;7J_l@1Q-L@Rs)1%!jy*J>21f-%Rgu8RCRbG7ptHOkf{%UO@v$Mi(d!yB%)&_~@q4k+bWiKZEgcBg(# +U>n=fzsA{OLL8ul|32EFQT!(%MCX8Ooe{{Z>N!Rw@vqo9YKwXAh2OL5xt7rQArCGJCFR@PuYT+ghK;d +5e4{#_PLUNPa`WgO<->tT77yH%Abo->3xs=v!j?ZP(7KrvWpch`Hk6HEBf@y$h-HX7&)&FeFkQzF?_` +N}Ckc`l{HsB^*dvR?!BCqdI-Vka$qC)GMNbT9T)ztNDZD#F@~~jmF^d2wJj-I#B3}1F917vqw=1x4ZD +92rd;D2mR*iGj;|m@X^Xs7WD-{psud^b@j6-H^QfFUqQY+sA^R@;NRGoGcPSRA5B4~Pea{SL;bhvY}` +vdH2JNpM1$E+8DMDa)$F>cY@w!;hRq3{Mz^~TTyOzJ@OxkflP`B@IvMa_%KSJJZgeK9#{q4biTe`imd4JT-qZyuox@8tjEg+WrXpH@$6cd6`Pt8duMD&Eg +-oA&5^jMj4wqEXS1aClmxt7NjXEksews0N#e$$glHOP;X!xcKVed9<~u9!oR44Xjm!KKF7XwY_orOiVO)R2m^3V}x|U!Kx;--*A^W*fl2Sxe +2{yhR#AWWb<8i@O2^)XW<4Z6zKvCj%-=W8G@*6Ml4*ut;*cx;+X9O2iN9MHx4C6g5s?X+Ji|Svo?hQQC=Z}mR +s``XQOY}q1{t|GHR)1*IIwtvPsp7uNRa!11p~+(A2uOuy}Yzn^qD@R@`6H(;Q>KUrd=6_BK-evI7P2L~WTFX*f^`K00o{dlnb<0C%)#5ZghTjcZ0D>a63*Zj(XEv-DT +ekEX`s`ERg;t$#RmnCdJjSq;1)o41j?$q(Tg^8>IU1W;4-O7jT)0nP)rLP{E%yb4(Flo_M&wGd!3MT1 +0x4>L)e8#^?-KdIp8*#yp2q5cE5rO2g1H{-P^AdgBSln$aFz1r#$;tY;!%j%;rwlc1azZfJ=hxLn#gMN1ZD#>NC;jDPr_296`T +PKvjLUwj6aIvZ}A757OR-zKbo+OEPPNCRMReJB*HXC(Ir^Uh9p0ZB+O>RhRyd(7rv_ML4aDHcXGWQMn+u7B2cFe#D=a}xM1=8%8OpnRJTAb{t?=iXAH3K)t!<>CZ$xT@~o#L?p0hD3Odw*^%GHoccY#JMCEg+0wX< +lHV$15y1$$skg)GP!c_w?TwXBjhjxiND=WLI%=DXJJu#W30Sf`~O!9uKjMS{G=>MZV(FgO;K-j3$s`u +&Bu-zh)2Mi=5omF$KHWB=HX;@H+?Ue)P;q572YozfJ0y>Xmmq(xRp9(I+((KR_JN$LTw}>wwl79oJ&A +7rZRu(VW6srWra`+jf-mtV$9aJTticS`d0`$zOGn@5YS_zY +Y=RvmTMh9)}d8*!QKIIZ*xDJ2o{&e@mD)by)os-Kvev8@<+EMU{^`_tNd%bz`WE=i{KxNjc^l$iYDD2 +{%ZzBHS(SyfMv?;@VN?;1mMe^C8Nn-|=lrrfh2mex}V$%vx;xxW7EanP1%A0fsl#!s|p@UYqE=7U!eq +Zss8x8@pX2z2PIZY-0nG1)P356ZVIRWSpS@%Po}xpz?-B1Ve0Zc?;?K`<(%VQ9Q$)Ryt8$=YDFhDuXzA*{zh)E6$*G*DFz{szjtCuY=ZYL;j +D((#F@`4wl0<=zg+T%)V6=8#U3w+QHN=EK=42!TXG|ThG9Do` +n2JVJ?;piR~EY3VURA2}+GEcRL3C4y8Kx$xN3)F=Qi2@QFMcOIl$l#tC%2|?(<}yg+8I}4y8I&IL_QngQi;gMVB5L8pfp^rv+@6zPtutPjYpbNgOPX6LKW&VeP`&KWG%}1F +j>#a9R*Kf`zkGy3D}xHpXFHpbT25yB`Tk>#+|CiE6Ex7}l8S7Y~f^tjG58;;bv(X~2s{W(%_3uD*&O& +?rUx|3M@O?=-)+Xn^l-A)72aJ=fG>D@z}B=>9dNkw11lO#q|xmU?)E_&goUZA!C15FB>18o*KlXnz}Z +8qzR>H|%1iGnoV;h_i{4|H>Tu?VG%?xFDv{Y7?hJ4KSS<9_;N9dW9XYk@>oI?o(kvM<%)$ocg91=83$ +s#}wU-fElHR1gOTX*)WH#8E&Z-22Q-VPHv=Dzn+DveR3w{&5L8fxp0VA^I4eU&aoI0hDZnoafB~q$83 +bX{&Mf-S9<-V6H3{xc2f?(H{vko<2mjbcq~NCgVh8r+tT-qi;l&t3(sPDL>yXDg#z@$UC~uJEm||A># +KYc8ko3ZZrSmlC?Mw2$csvXq>UUm>0zQGgT)br(LV3tH;O@rsswAXU@B#fzsDLI6?a}GgO|vELTeH^t +aO8hyJ78WIIx0tb3iSH37LOEMbASk2IAG>TM)rktY4;d!x&4}rCKquDHyO;9Z3^BMukewgR+;6&O2RO +Hp0*mytNh>)=|aj%I4Dx5GhSJB^24Y1b;;RN9NtQI(T45U=l+xI-0FOa{~R43u75|zEajHrhyDssPyp4(1Y3qfbVS? +U*^FPxy;xU)j)W87V6qEq(pl1jyi)p1b#`2IB%Xh_xqwwr2Wj`z}<7-zAQLpg{{X*Idgar#g+lURM!a +~I`{ky961?E}|$H;PDmoYMh>Mx`i3G3V%SR{f_>pCV6D!9Ch>+spLQj`4E=|F>dNVJ+5U7Kx=$J>|l7 +I#U&rHnk%bzKsh^@^f(`n1=P4^1+mj2rBtdta9OU#@py6?H4>xYA+sMrIS%%9b;JSKA{+-NJ11aNyRg +=8DD21ofjV){6 +}+iLkj`G;6r$=hieh0svj-r!$&h3V%zwsHmN_o!yvNE=GSDTQFtTGO=dq|zLP= +Iz+jxThiOBN4t*#2O-E2=V{%s4UUa+z|aSiuc3f(^M#tYAWM0@6N(*+x#fTs>EU@I)DBTjgZ*%XstA< +4HOC<(D_($De-zPu~18{^~DZPu~1ejz?dA^_P}Ymqi$c;PO5S>TOdBSvcW_VrNG0+lyDggxsF7m3Gv= +&&Yoewg1(=-vM~*^dMkKS+ByKal`h8)9kH+2B*Tm@KXm->y$3*l~x~VF!;`gu%r<8cuAq#fz%&HLXhn +kE(i29O|y=9(6ia?|Hop=-Q*PbVj`)8g_WfNdsx`mu(iUp;-6=}4C0D~=DpKQTZ)}$ +&cHqf>k97t7vV((!!T4^+s#1QQ?XfxDRVnLyQ(19cA)hjb-&j+C)(8(>LM(OTSpre4@bh8mS8N*S>qo +?G^)VQV;R)dDw7C06v7A{TZbxT+8`<2#ri}BssinMRv0lD_A7B{g)>=tUv+^kj!I5|{NQ@*s$hlM4Y& +6jU5K()yaBh(|!E}8@-11@YA;oODNt#%ZMCA6bH+}g7KaH)eM8*%NN1a!*vV8!BfKQFJ4#Eu7C?pGG#(|<iI_Io~^v +cD+lL(4gtYTo3UWEN`C-%`Qr8Y@7ZK925baDu}WPX^CjuD$jy}#i~ +Xz&W_9A`mZ+lh)MgnfmS9ULcPzJhfW=UvfA;;oA(b0xgDk@i$3OuIS0-GZcr7@!v_2>%1uV)Gq4!Z$d)@YQWk3`ve~yG37S_Y1r2lh`vj +itwU@bB(p5qFHo60)xQstcx3;?SZ>6Ive*g8w~-v{XbnJ#Aw%Q&D=?-0SKwj=q-qRR;I<>%m8>58XL%7=2F` +KNISt;5^C^zIt*FgANU&R(zjB$8o@%vn7Rib0H!;x9NH*6==pcU%m=i9w(yY?vA9SiP=|aTVkyH>PrFY&tNL+TQg|Iy=d2t3CV((mQREciV_1Xbb+;FW_9-wr~4N*UolpDLig +i0CifF+hdlD?zg%Nn(^!fxC%2+GAI^hBkcoi1+vZKx2=<1Wg+fFlHv-D0LkDSgjyggYC`AEB?me-dhV +%&%5zJ{X&E2KIxik2wX-_f=#Ik2FBrz&1Wqw!S_Y-I!ArJaM)Y;85P$;2Qf&~tM)d}_rY=4wjBmEK+C +|FX>b1+{I(%n6`@#OaG@Lb-*4kz7pJ6_|K$Ww2C6mz~)WUQa^L=w%uz=NES-p>>Od +dchr7jFl*eG3MNABAY+w_*2X=A_b-x5Z@nA&tCz`$$FIlJFMeV&HJZg9e>imr(5UiwRH}H#GU8+zO&9 +Ho)6yI(p$;{ct3iKc9>bjx1G6dr%44KMAjd4kwW8o6)2V@NAi&Z@liyclvS5;^k`kB6V-S^!`Ytp{w2 +?=_tP|^Q_u$#L=}jFM5ZFSoMS;NG;LpE>KZ{wcR>z7CZtJ>Kn%9lWk~ls8S5G7hPbewcG)J?2%_#RQi +rK<1_=4Dq{xp7)XH`68Ps)4cM1$x0G()ILaqc4Sy`k=xioWder`GAnohDlB&&7F>P2UR3pBO6fn{&sr +ov62*#%=ZP&OBWILZ_azk_2)U&*;I@-zvGn6x{6LpjFe!nadir9~4`oGRO_zK6!u}Zf*JT#y +I7QM3;Y8=H@jGVdXv?_X9KNNv62C0gGN!HGxK+t$ph@LLvJ2TE|0sNv46y%r9fUn9@UZj9}H{33If*t +nI*W7nGGKIQrq3)J_2cTL>g~52O-gIx(QUl+j7FL52%;mToI|ef=_os2h{%H*UIH&GKr!XfUjGWhmFI +ph-;?Bpo-xlAP(8c+4T(=*o-K%Mad&DY8%_kn)f1dm8&!;%|o7r2WF#c53^QY41KWg$BIltAEKJPwaz +W=qDTO1XC>(ur$@!2h5X58_Rp34A2sWYoPX6;GEB^!=llOGUdb32;Lln8U1t?hyzn0PQ_b$5tNA}_ +-WfUnr?#3?GBJ`Vzr|et-^DBWMPBV>H{m&z9&r)-qo2QMWxM9Plw +N9vt$Gt^HtdnN+CBp{fFu2%$;{5LrxOMKMX$4RQVn8#5Y`tcEwqO#^<|Yw+}puAN57JG7Po5{Rpiosk +z51v5faDSL-&fa>DmG&@^xSCR#;Do&@pXkn$!)Vp9YZBd4VGy4V!p4DKvg!c#DADu$)mJROH-X5I_K9 +G6IlMRg|N-=Z$yQI@i4dHe-N%{`ZHf^(RIhE;KFp^9SgVvCQVn%txRg|M2(^paF=RkfMc?+(j!uLfQX +yD$+>#eyha?Ql_k9*2cQaMw^#U-v*_P%kiR%?d;?gj(37COJdd%VTKV&3%ya1nf5v*&NfhGhXF#^R_U +FqQ{CjGji1ZoB*B+2khL#3lSlB2Ahko?_6Kkna5bhwkEC2YPV2^~G5)YN46q>H807y1eRO*X!*Ue8tp +i)c`i?p6{`L63o;ioqxmLDU_!0zFciluO6K(Q*WX1yXM@uW0H%2aQOx{{tB7&aL!I1+RH1!;MHU$Njv +X3r-a1Fo7SY-Qt8wz0XzIa%P9c311;rv|1jnXY}h&ak-s4I*wlrz;Zj#8$2a%Ed=RA5P}zoJZa$Gh^Ayt%OZ?m2ssr95YM~oHV$;0=7w^du5^ +ObXwXQhjg?n<3Xhk(T30|XDu=fsYtEH(S%}>%F0t#%^F}Bb?s8ZL5x)Bgn9&UYbdk~C0f6mlSqOwQ?K +n#>b|2BAqGq}8IL-YbmJyWx9pSwm47m@JZE@|`pkTQDE9Vum=2v2@Qc8kwIcmC!pVr8r(d9L2^LWYuX>+b +d;V89?em?C0X8IB^*(LWT&$pMfM)Zz{;l3{wtBtksSU?CziK`9O}ni7XuX`V7my0WR0prAiHiM9MLmw +{U^J;Gt$La^Ne4+Tm=a@1JK6|v6y{w!9O?wI2^G3$1s_N#31~DYOj}s$){6QuuP-L?FVVyMx=;5XMw +9Z*FQc|w^&Y!wQE}TZOM{h38Uo~-3GfyM_xrTpi`rbK!A+9$0>M!aT~I$t<){T6`Bm@3_^9Yq-)X +(gA%n8c4?LIp?h6rFV$w5g&y4iQhgwZm3@yWl+3k^`a1U7H-;q|g?uFsSkhA8|5ktK6IvdR|F>=$F-M +3b(ZOp0~@dzWR586Xq1y2=?RIB&IwSG{#F34xl6PWm1L~yLWgo5py>N9I$1}2?((q9X>HGMu>%tahy(Q%ckc4sM$^I^aAoVILOcvDg9jZ>gMH{^~ +}{Q*-HR7H6=I=_=U|w+^C!`nYmTvRdZ#3Qk?4MWf(v=Fy57f5zQ1u9>LTUA9bqz2u@@KED+R@ZlEumI +ZmHTD|HO*nMe&*YPmZE=_3UWD{kls#;ox)H!5@Fw$aeo)!=ua5{wL!L_>SODF8M76kT{_7Mf6_cRlht ++&6RNnK~LF30w2>f3)I@VYK<^arExy-_ciJZ?u;BvLA9Z6@>-NJ&N&0H#(cW&2GIU>hpA25od<&vsFM +o29Te-AWa+@QXY@CbS4o~Tjvh>+|M2IMWBE6X8!`seznp_0B5U>WOEa-^XMbS0+qeNY(8FTG@D;w(_e +l})3qEd2u{O0F*-V6@7EbenT#oq)@VLtZ!`P6%WOwwm|Bm9B%XMWIog!rS1JpEgpjcn+K#k#-j7}ua* +mYrxOPYuCra7*`86fV)_Y1%`swi_DA;1`KEblMo}Vi8KFOYTo*-_X_MQN0o_1T-4ugSD5G9zmEXh=)7 +!KY*tUei)l%h@GC!-c#iAk%fHf4dQORAPXZ+2sTwSKgNDwr&nq^WY#Y-5hK>4>QkcVg(t)qEOf>v+XT +T$=R867|hOlWtQbpnF3nd4)F0@1T3CnR*hJDW^`t^pFLfB48b{yMml4dN!fxR;U-lf-@gempSC(X>;Dz6{~KqkIeRE>a`l78f&+s3tSkz+g_myrPVr@%J${y+nv@8zM34 +4Y&WTsuXo*1ef;Km;{BZ&zr(?NNkg_l25~6+qQ7@+KUM@MNRPxNc>jV#QPIc+D%HZYY{0;(LU@)>vT1 +p}}pki{)5Zwk{NHBDjjFI1z5v)MrF*c@j+Q`7=uadJgMy;#9TWfk~$&6JtW}CyUxL7F`T4KfFGLn)#b +C#&%iWNKG?Y6q2!3ZV(f+e`I{&m;vG8?r`rrXq#5voLFYTdSVC9AE}dhMLR8xjF9!pap_!L5tZ6Jb8d#3ii#SnuNi;3p1xxlGUo_CY?3@zO;(g@0x{u&%#BmhAg%cj +j*Lb5q>XmD}%U8PNh?2$0#u3k}d|j=%k&7_r`p}?Nu@3u@xxM6jdEsAXaXHa9DrLr7AEe!;U$01J%PV +47UH1ymN|3T#5ng)fT7r6fj~kLXSK}OG7x+fTYX6m3hMjsHIjarm)Q%knQpoU)&P*+gh*p;XKtCaiQ< +n1!D7}ld@QunfVii6mKVx?5(be4CGph5R4l(K1y5qKHO~KoEl8%7Dq{r$fr7qkiI|)RJyZ5+U9$@O5H +*4WhR|ynHyHFzL#N3HlxtSMT2l!(nl>5yo{@>UUZVY +tM-r1Ed63O%tuPOf*fjIjn}_wnF2a@;tCNYbymPY(G^1y@4bW3i+oy(X_jYJq(~ek%E4;1R*r!&CUus +_PR6o`!uX-NT&~K91FDsfr7{_bsQ}uR%z#;q@WvQJ&Ef_*oaCjsLsD5SgG2HYQSMlIC=s!y;aVW~l&% +mcG(PH|{0Z)3e>ydrtR0oRIbfJ2;WCq~;{)qOt)kV_1hK8YbkUY(TvyK5I_LMMDF`i*y0bewpiI*AKZ +D0E2_8EbB)>LVv&)W2EMws-a2S%NpCzz(RX;Zsjdr(ep;Oz0JS8OCTx8# +}*4iS8;h&H~*H>>B!%=)ks_x8&yf^siEt95ywi&VQOqpW0{yBJ`6LzLsq5Z9`frvMe=}V#ik@ysn_F6 +yoE+T1AMD4xufrMsY#LAEs-*t(4}iSEOM+sM!~RYIvW~mS23>lNX(!nn1V%^l$}2KB^rAqc&+V*>9G( +*w*n~XVfR#Ty;BGEG-hl&a5P#8iXC5TCzEsIeag%Iqt@9R7dqq +WsG{LtvH#QoK>_TiGnZ^oyzs@01!n9D_wbxjkU0M|GF7PHc8eDVUQUX*C2#rnR2fcJ;4xNhSY>_-c>q +ftq3-GN-d7+~<@F@fJv+Hcj8+Nf9ppkTmYyv^((x)dI$4IImv_Ptu}aR{i=c&=_yGZ6 +l5j6DH9?=j=WYTfI?zxycuGR987$^qy~?kVmn5;pv#?0d02}F$v+N>P*bO1VFhlL%iMNxQB`$BG>-fe +_90cnu7|&O;eHCT4Bp#;vw<3=&iLY8fIQVqpjg`4G8tTyQA;H=`l>Bjw+ipl0M6H?jy*9Vv?J{XLN{1 +AN-K6qWW=+bW16#3JAot`O?kDLN%vGVb(1GR4R>My3H1k=227ImQ1O!-`3pSQ3S^(k0dyv8I@6YY;+r5-jscwNzZkww!u(8L(^H39^2vqe552 +cK?mb}GM{D=XwMS4ju~-VfVqy$OHa*5SH+oRjw!D#%AwmsjH=C)BR6G5}Udf( +gfobW6!Y<*K?wl&sv`X{dlQ#V=R6{*#ECUwP{+CPGFM6bnF_XmuaO`O6`8VrS*PzKB^oqv9p_CrN{lv +&-z7C&lPmNE6Taj~}luzlA2URf +dH?@f5LgePAqkq1$e_&mHCE18&yLXkj0DJ6TfPG#|33e+2t`qOVKD{pz*bF6JYZF4F-y*x%Z;?x09~N +Kdd827uMU5-y_DBsGAT6G53}|8Rw>lOepH&$*bE6K?sQy-8v7|l)1kclylH2-8ux;5qc*Mpw?4Kg>Xy#o%b7MRDJKi{G +Ioehd+nG@jPNTw?#6z4D94^J|pz_^5J#&gy(&1B6hed1r&G|?5PdbBP`F_C#yPT7X=%i!ilXLqj$FRo +Us$<%=PApUN#XyT5x!|c=pwOG`$Vkkd{z$H4`Wy<{QY_;PZY|MH=;A<3hA6CT#rlBiJXM0RcRl>#z#3 +)IdY!epeau%P^vXG-B|A1bXmzMeS2?TvI)?=~QmRD__Pe7)RIR<9kCXA(T1q&1deUk)FADGW?L40g=( +*OM!puq9^t>>`Rq1*InS@mt<;zhkKy%|P>3;24)2Ya(zxJF(nW_e}9-Xu+1IeHi1S!g+V1c{%T_8LDXW<{1<^94j)yy3K9=!HE|&r3d$F)*F1}}Bs4#ZZ-ztIS>OA4ckkuN{?UuA==}%$zm5Y!n;ZZ!VX4TeV@;?}kdLU(Y&PIX*p^6xtCj~64ri{qpsFtIfmO*~r&53AwDsy^uUCQ5N0~6RWbM!5yz&9)w +6djz1+bUHwO}%07xp)};+h+10FI*awi2Ef^xmqza15>YA4C&aTh2>ys!7XQ@5}=n4zLhT^9XJe?)whN +viX{?)uPSRy3ngj4kXidjN}2({1o6uR#oj-E3j*ez-$%xlHDxCYibx@wDkinU$@Bt7c*lGX$B01s&*=x*@(Dj^SXH30Drr8@@-I~iBX0Mj0>m}olJW(MP!nO5#r1n#;u) +HlfuJ4fj-V(4h3GGwX5%->iPn&{c?Ka+maJ!V7rwz^dx=_1q+m6v`#P*8gs{s5jLN$Bdra`&kYS@%)O +tYBsi&6fjF)JThRem(=4oA$ZM#GD;YrDx?CyGSYmQ}#zbsh3{92_9c+oryj3X8XoN1KYMS;JMX0JOMw +75VzGA&z-hLWZU&eZWS5JfY<)E%>rmp4N3@W+4gANGGpp`(t$C$bSkv2ZF@_xyd`r>aseRwklNhoSFC +yH__U%QbZxskf1kM*T_^A#nXYn#wHmwWMZX}GaL7WSgVa5UStD7YCu=;Bl^tV-!nas~X|x}cADf3Nvm +KjgIm#bN@4PKfRWRIgFxQvIZqzbq!KMIJ>N}vzH}d`hzpED{39zHLytWl8R4N{g+)}>UMU~pkGiE|kW +~hFv#_$rwX$xf-8wjuwrPPD3mKqP(6}@^}49E$dUb36XK{Bqi-8r5M +*!cwG8xIQg+$#SP4kN%6OvxEPpd!>f2PRf3R5@t#XrYVxt(9V3P!SiyEAyIu+6DBfUzhRq01BmHA`22 +1_3;g*evHUk2KNYEGQL27SU3t#RNaF&)^E%IzW>~A^d99FM&xs3F3rR +->DKMH-&JUHgwzfu_o11DRWU+hC*fx`<5#OHi2GZ`49b=&UNP*ywn@%#xym=LCV~g;s$50^}n)a +$AW9*?L+5$NW3$yJf??f_I|lh@@J35baH86~?&f3lcgldeY*sr!B{rd{K^TP8?0KfHP;}?m$CHqtv@jD21C+u=W*r6p+oYeq0XFe4|6=;ioOzrO9n*65-8tSOL+WnaHoi@F- +>*y%cES6tXTzXRc;WOZsvknO9wg?)lrK6F>JNdV)6ww|_pBL||Ex?t$ij?8%{aGRiKtKP@o7S+?J^8) +6&iIc592744tvuye4g+2Rf?!els3Io6k-QP#S&jzqamTsxcycn4}$HgCnh$koaDn^G|EMaVv8exxe-a5HRn~fy1_rp%2Ah~AvB* +bk};ShET74Zg#Cyu??4qWlFA1x`xN;0#U#FJdoJekP{-(_pJ%tIJI?cu1kqmP;oibpGDXkv&NVKRbwI +6-?W*`fj~u-fd)b9z6W~?SxC)?+5R~dfGn5XeTc(F}lv1`pcwG>WF>@vA#HJEENBOc4K)cPqF<{En;P +*qlTedKI+>GtCg+$vT4=sB2%6qfgQnI0)POs-M#A)uAal~Xp?P?_2!006+v7m*op4gb~Jc +Jt>Iisg*)x5Mi!)Q`M%_LV9%)ilA@J&`J+nB=@YJpK1 +rGqrM}5rCWah`WB3T^V5#my|WJFlrn}z8biW>KW>lZv_Z0g^jP#sMd6xO+Qu=RPLojz#15cr2bma7gW +0;;fApg4N6~IRh1p?-LC1Zyf2jRSwsUlPP!rrr$E~hPK4F4^S(b(AxJ}8A1mpB%CmS7Qlbd~f)z>f;b +{v>+bo~a0ML)<-r`C!MncL#;(Yx(U_}$~AMev|=v%USO+g71DcZN9MWmH|~mJ>{#abOC(AJF$2=;R<* +A>ye*5EK?=qcrGAM^KGaXY4=`TW(-h2zwS=>7M2y;jkDo7y^K^URdROO7kVoGcif+v#U6RZWif~l2{B +{$U+26>wmR$pN1j@V2U3khjNh^qg-Do#Fv}BBp}@BnInEx3m_yhP@|gy_x^S%W0>Z14 +Hbj|V4%zwQ0=r=#O%gWVr?j$fhLS&+;K{$C-v$=PPj?MH(kW!M_d^FSizJN~RezgIPfEBLSmUQdhJUk|oa+ +y0lE@%tKJkOC8ycHX?~vsasf&HVr%{+Pz^|HGl%N*-8l^Kjo#XT0N~Q+rs;Q-|& +{^S-e+wmj6bWhZQE_7wC6z)JQO@ABCdO0Edy1->PNqp0(_`Zh6u?pDp%4g3WinTxd*+s-xL1aj_LbX3 +qJpU?AUaedLE+X_i!Y8&YGpay7W&IJAJR?c0)OzW-NR?-)8-z#htp96FQVP)XwweVC5L!;g;|uWKjMA +e+0C=6zy!{uL`t|PPUh6wF}&-Z!$0kf#9dB>{y{f%lCV+o5^ci@NyMUWjzuYG2)*R^thf`ra{3cIbS_ +o@e`>Ajs`7n6u3x&n*`xkc8fTA=I`Y?B#i|tAzH+Flag8tCX4znaUD{G4V>mR_L?&@&2Mbfa2x$6D#*>Ibd6A(%EcC+d +w$+t)12wWlLSyN$|J$1wMhS|f)A>|IuE@tSr=}V!xLF-G%;#CfcP1=h^UiLCF(RY;xE}F}wrCaO$lk* +%WgSd4{iK;XOp>u+qWJTwJsa=tKusJaa(~H7j(SZ~?_|4m$ejZ}S%W77(J>6$Oc{tMmnp0}jxUNiX5@ +hjYF;XwnVX=^;>`V5}76{_%2+iACb_F-wuKl?3*>`OebQHK`$e1>zeX +-(~t3=h^`L%8)~#4f_kNds<9nsBoUYOMYci&J8>S{6LON7evWpK=uYY)-NL==M_~1O0g+5q#c@R;GiG ++mP*7_Ry41-hvJI-C?ctX8qP^+m0!}6|PRZr`b;7kDP_d@o5yY{o^JH6tcTXoCsnwu07UrI~vA3o+EqW0>d{PY%jZ=Q?iKl$x8B9?jkkGY0X5px*nE +sv4I`+YBixF_ +x?(F)~5N?M?r!BPyk@rF)0XtO;BDhkW +dzmWg2(P1yuB?Atc2fT-VD`k?HN65zmW5&^iJz1r1Y`G$ByX$-%cPQ1j_(gnmN&T748`(h-7>pDV;SG +{Mtr0%5+(WC@-?3s_$r-pVA)1at(_f|LE!n$cldYryPaM1NUer_P6Ejzb&$^1#j!r#)S5K0emQ*%8Ccnf{)Q5iPcfV>jHyIdyttI}La +_Uh@p0E-e63TFWJiX|&N8uiAVi4=8~8 +52^_#ImnEM!QMsLn0~RC4Mb!%}@Z7OR(iNjr#VWTyn_p$5uaYCsx9IoBdDxG+VNZ4{wF~re`7$Wn<(M~~bfRt?YhF#8xWaPX*N>CUVO@~F=?H +$yPj_{uX|4G^$ZyF~{6e(m%IGSYpr@SDydmA_{4R)8qry=zI +kEM*_Y^G#{b$;g(0_52ylX69esz&n=Mm@6zDO#d5DRBO6+5qX_xFWlHy?eq{^*M@WKpftlFo=RS1<Ty)ilBAA;zNIywvIBzSByd;vLA^+Ri>aV)Gou`qZ*_DwYQ~T%)iFZAcB|LAgO4~d%7|NROxI5`-toIkq*Y$S_dZZ>G*ma7sVEx3*qV| +NWqTQ2-17?^@S9JQC_r_PthE +0u;|}d_J>9QT>{IFDcQ15 +d<5^_|N|g!&yxqk%g+a#2+bLgR*fwu_Lvsa+X~oyfn_s%30XDpVI`Hyq!0b +XrX0od*-YM6Lx}iF9Q~<5hEw@MO(c?38B*v(3E8tjxal|4|82D`4+t6Jw7cm9DZ2h#=!6ViC4-Hli__ +6WoEwtLZfY^H8CVJ-MK3fZWvVHocp3H};(eqY-_Z;jG$b!`2`4SLA^{jp~Ugot|+qa*?$ASE~ +e^%^l!ku(biZOuN34!zi%l&n@w3*N|G=r(`etq$uE3D_Jbi0; +m8yCyFFCG)LrH;9ar$}^w+eeW24ubY5BUSsdjs-RNOaL;sNTYu|0O>GDD#h!B9Km2JiVD%H8 +v(_5;ZRnWw{sSDT9I2yzM7qs!YVm1DEjwmKwyj$cHg;3?1#HeECLnBKB}OJ|JlD$Lq8~kzD{D^b%3~E +(F!}3{S4+)4MS^d|l%@m<4D-v3qVrwch*ijFl3qkFZ>lRO9i5{)Nj{px%6)QGRkL#I;loirEc-Jm(9e +s@hmRjZjUp~?9>VxBW5Lt&0k7YE%X?L{o8m)LiXRN|sglfnXfSMV1AOM&mrt<7QxHFazjT!&RHA%wE) +vdbSG=YC^8(HZ<|~Gk>RNt(Y$sX4e#szZ$mcND^K&&?$^e^|SISN&jz;NtoD_Huf4nE92ri~!zfv}C2 +n2?y;dD9ODk^zLd4$POZjAj1yuoN>$5KP`)Z={090?7Mutkm!7MJFs!j-hxY<+;aeY5!#sFdlkXq`S- +Kl}Fe=)vp$YbV0^Jt#ZgiquR~*0ua?Qj910HLi$6v(y6gCR3PgPc4_ +=SHch2?M#SjhTr>)>edB*FCHlBaL +XbDMDIZu8{U{mGQTF5yC4JpuZob#x*$5aF^@V?V7HR<`(MT<=4;n(bgFXD;;z$>iXE#f|nGlkHNw;9j +CA25{edv2wL(D6FULv*54B?wYot`aM5I$`SkH9Z-S^?G|zQa7$Xy<{-&#Z-V~U)(o~s!p*_eiL5vU31UTtyb4|A$03DavHyw$6aiO;sXlMhly3a?LF8DG-+TS)+1jmg?DIh +ep}DI>imNbo*yHEHjhyVdGahlI{&-2D$kMu_0rmY{c%9bO=GK&Af20-kpyina- +eU-5)OvEY`P3AA@(_NSnXqSN>E7fE4a(dP1yvkRm#2_NY(e40(CXIjh}A}k0u;^}o(OOonRM^ea;$;4 +J)uUH_9BqGY!-JY0Zu3@xXN)v?@u?*`aoYXrFDkx`?A+vASYnMkZXz +j%rU9e#2ezUODi}sdslhoNa&!?7-;{tpCBbPgz^LvSiY*WX9s?>qga+9NsJHD6_zu7qSra35k%>x{mUpBiOe7*=zjyn3ww&YCo|zv3~{VHxdK+X`Ys+taUQ-^t_JX-~>uM&qb;V)=~ +I_*+pq8T~SDTe}pV7bnTPL7=7g@7tI^*`CGi_J+|Ki;%UYRR@*vcxR(tZCq-Js+p1?HaiD*;&(j8S8=)c87F-q&upb+8C};F@{M@J0P>XuILcEgvAU7CG>mRw@>65km*DdaWlV+{U#8JzDa3ymNp>W!m)0o` +jj}=#XYvQVh%$K&#~vsbbSE(KwYJpnb{v51ntfY~?Jp)U#Yo6rh?XA@%3CTB~(JY;Lr_s8yP-rbgYTW ++snWjr>xh#q*g_aM7f<1I;_V*Um%^#h~@|k^u#7MQDWf=;{|o4{#*xwpn{eFbGGTZ$E?CSzzg|KK@9p +F`RCtXAKS_%W9@uO*O-D%P1fYDw{c^Ljy|JF^%CyFIo@y+5{2R^{ht(HAvL8hq9{<$iRV3#Uy1x9s3(0*s=)w|1ZXLHhLmNv@aOJ}gLURqqCVbV{pbH-7j5GI1;p{*&$l +jrqP$d7d)Bz3I3|bB>|Z#-dvC35;5(PU{Dat!O0UH!P6%(4hVD$>!4*T@t +UeyLqmyXq^AEQ+|9F_0#_$Anqg;C55Yi0k +T(R{PC<;Y;8yP?)U!vi?!bN*1cBET|yhPA% +G?4#BZD#zd?Td14XpWEr4N48g%#2>1sf?+kj}h>(uo)RMm3&VImR5WjZsIJj|x4YT&Kz9WEvHJe>MyCOW0)y#F1BX;qd#U|DKh@Hb1z0}{eY?7v=*1Kt5mUTbC*TBC=` +9H$`CjeQxG1->9?1oVM&*?(2?(GFxK5Q#eVgIiifQMbUyLs5>4y0tm&5hyt!t9<_izkBp;R~xAl@SE? +s?)cRX@;03&Wzu%Vc0a4?_=akSZ?F-wek`+d{`kd!N|VJpf8 +{2F&z7O(HER)t^iXrFE^5cV9<+f;;?pXGr!0MYqo&$2^nNM?<+$o+rv(TZHq-i1}KQz>PA5Olj4%7pp +@)|qId7+@80F_-c4JG#2xJ+vM`5Q(`=nEWj&jt>Xle3hU6{?=v%o)GAh`+KfNzd +2dCnov8Kj^{a0!J^`%@@adbqNABY(J%0YweVWtL$A|9IGkW^eOS{n%^CK_x;|B +!RuFhkN4rgIsCJq?(5BcO84U6<#z|qpY6RI{MW$``_Bij_h0QD?!7tinzGp5+~k7yUk?8B?cS5}>n(o +$qT=Q^a*m?%7`&(tX7RKKt(N;eJ(`uPM!|w=W +;RdAs-K*+FGLzma}Ct4y&+DZbx(c373-5vBO+{^7ykhi6aTd|#1n`zbGzz&hF9e84YXyePf9r>6SZll +_D54)8^OlS$+pH}nq6kuW0F_kdx>TcErpC%9t(>BiY;>i*0Vd*UMb0kL<5FKr +=j;a8euzFHl{{TQ9aCN*D4+|AK>P_?FUSyjFb3%Vl}SZuaHXBNwQqrT2tcxB*u1C4}JN5Dw9 +^KMP8zech%hOWax+^EBsYZKE87aw4NxWX3=>nFfw~J5-acjZ$f~eY{j +~586FY7FkhofraMv6vV)o3ZlS)Ko))VeE(wn7x#Hf0I9*&<2mQBY^6XteaNuj +{QL(sYeFZD}^f8~8H8WU8(S0#>_2m9Hb@AT*xT0HtipH&M#!hK3;Q^Se3&8#pt{7_2t;WJPNI#9)@Vh +4-hUDvoA3dMLh64kgsO9)}W2v7f$Um)u%QY^0tiQ+hbbRl7_2?C-6cF9PO69M-4=7*jGS39oLmRB-9C +!;O=u0`2zGq$0-RXOdCV4Zm^LTCPGKx$){|bF=Cr|7It?KHsT~+g{mqlpH07+goj4lt{Y{>;c1&<~qh +A#~Qy#a#DH!xG3hfikUcM;@61>_t&h{M12d;S3jP|Ei6QjQo4(whS<^Hl_*|`)BBvOK-GDxYoM0m{00 +bul<@6x1$=L|C2-lM!DsAr!6gM-LbcWf-a%?TvJ>T-%Y?jvm>iD5 +S|`F-C+ybzGmEygP+Vr^!Y9KFugha2bY^BFn1uW>|DQLyF{Ty*W7%s6f0?5_r(LmX%7xRmje1A`k!t# +`i?nsPf=ZA^d=o(X3p*T%O6XDnfxn|E?q!FVTu< +E`unC28Yl5oX18GAl&9vGyu5Utx_Hdq#Rb}hO_-@#|JLv0MT`HvJA4_-vmh1Fi|w{(K$8|%NhxCrS+W@jU9ckUxB= +Z@a`PLa9a5g!NF4|E$^x@Lg?jJ~uUMRNMwmJ$EeD$)W|LDf$dxSuWM;lG%d;U?pf{6105xx$gcR-3Gm +J0}%bEP{oqCUvxtnLK4s|XtH>;WQ#RPAG`J|y0G58Zwv*-JDlGp^6 +QMNrG#E%&b`~HWe^=`+3kOrLj%zQ&MzLgB4xdnN)#v}%i`^TtW7$7pP_+VFmvWyC!+I&80 +wKPhGwhkA*@S%*1dHpoEd~VD$_@0XQyknhI#LX^9m#gZ0Oq7)lMaAj6UC7mdgK4OlG;)f${pMP3BUqt +C`JZse?<+DS0n?y_nG;mbKoLzzua)XCB~=wNH3f8WMY0I)2SZ8(Xzz>&@+0X<8cU4^GP})>}XS60ok< +5iWJec{+MKrolE;7raU02})|_*r{FuEZFEQ9%gZ=KlYGX6?NT9>)PQ=Dl)D`$`c}*CgeS*MDsn6X4{3 +5R|!q_1Rr+Pzql8jVl+wkH|jFpA}7EX@SGo8HQ`M?VWhL7AWz87dzv};wd64*xKKD}cvDX;kmf-J?ZP +UwGfpp)E0kPt3{>L}a%?+NH}!;+6i?9u8QzrKI;=?z1l;9axNGwVo5%iE4Ty53jqWb2uoVq%c1q43Y% +GihQ*tV6tP~nkL%E~mbaCD!4LbCe^C`|KS{LbnA8Z|$qhU7kI8H*(KJBBb(0yK+*D_qQvzo_unr0Ko$ +^WM5wE0}|$O5<}lnXlq}I#^7}2QwMbF+Ccv=4X&j$;mG%Z#djOPoRKlR?O33al=wlCV$dC@BP6MY4y)oMt34DsbsB41gCoqlr7DHU;W}c#9iOwKjvZAgYtrAf{1txpDG78 +Smb!LPsl6U8N)S2tkMhNN(o%9p!&XPNRe*vpVT~DOT&FkwNuz(w-T_Ve0iX9I6@|<+{sCMy^TWoj5We03kmXd`8Mo)J*;+ +kL3dSDgxaoz<&MhuOESKf9+WJ2)9E}pCq@eIzB+UlreD%BB%SDPbTCa0@)sz^Q9`;oa{|IkI-Hp!DYe +r|M~IB9%jvZ6D?ZXG;&b?IiGgd3Ri4B}3Npr3j?VZP!EMK{$f*NP<5DH?%&kSQ5Beeji-{L`J9@r-@&Ii+pru|t +2AWY_G8>LgdC+P1*K)UJK7n-|{+arvR9n2M-}rE7h+aQC%4qrru+jIBVWYiXle(IK+VR)d8b(ojpWuGS>=daN$T%v +HO(Y@W6EZTFj>cJr46_9FbsOuI+(AwF6-U!u%qfSyZBhs-KFgO(mFt!Bf}MaMZ;+2kM;&<8<+*?R3Qg#VIKV;Hq4O<9Kp9iX)gVjO#^nIoQSi;$To9S$slKX3^?!0F +AlGFqjH?7QrM}usz|Y6=ShDC6xLFs%P1@pqw4oz-}~6KFm94$I-z|Ag+)G(T7U-be18g%Dky%+ZuuX@ +?nX%HFDa$;%k}w9Jd-z7d1*Yfila2H2`Pr6{H-)=#8%JV)JA}*<%@_N2p;Y2D%vx8uExLp>iaknP(qX +)D(<4j;zZfaErpgvwn|zPM>yNw!pf{R3cr8bqF18Ks0=sQ8Lzn&h?F?SiayT9~$%5*VB3YK?@QUeu*e;)E4t7wyYCrB~_gIGidJswHO +JiGX{gI!%J5iY-WFeVOj=>mVahRWjD>d6%kYa=tA`uF-}hEm9p~!u6>2OG|5=5AtfIv(`6 +r>`(*;j*B_PU#!$Srvpb<|X?h$>~hK3m8EXPVIi9D*A +72G4U|!X!;q%1~z)3gItP%0(4fB6lB0tPqiHVEqYA0-=aq5hwD+hkDv_Zkq;2eMR`aKt*z~Q(Y^lG{j +D#fufG1K4g&b74QbmTksY-;1Am8HcJRMi)#>dTeq@WGv{>{@-`&pK1&^;j@L +;YV%%t;RT|sqwa;?~TU|^^R+Ujgy|2bh3rjR>bTTT}%Sk5D8-yP8I50SDDaHNZgW@8~=ZX_@8$!9%5= +O9^ZRl6m!>8v|zB(XJHWCa+fc~ad6Oa&$l42-#VPq*lh$@ULpPec84blzKT0fr8V~TkpHnLtdll1&zj +$X3R9UUSZD9%N86-_WSIy|_R@eq4ng5m2s<*1$(FcKY*+IHcDn4BjVxTLe$MH!6Lp+aXu;(?~#p*fjm +(b*!WrU4%~O0}`CYyAszAsr!&Q6g3{$~D(5Gah49m3W@MN53f62eWpHJF9qEcAZy`%R&phQq~GG3P+p +AM*-cqoM}2kv!v{u7`)(+iuKA=1y2dczr}pxmI-zewh_am(ZgL;Dl|E~sn?WdF1o;d5pxEC{6?8zsv* +&M#4xDFdlZ+i*hG6&sW?$0I!h5Nsh75KBVLle0XzF?+NEa7PdWZYNISK)^17R6emnY>Km%(G4vYdt#= +2s4jMCAxt+ot|ACV0Bdz!$43=fV%C)q}Ll7{7nAG7eS*7zhuCHi7F>Ztt@R2+pD9h49{*X0o8SAl4z_ +z^ZmQ$D$LNOq!)q+dd6b1Fkkv;e)xgDrXx9*gRVI$TpP+8}=fRDrnsRk!QiWWXw7&M(?EZE;et#!;v9 +QJKwhwJzp%{5p&-l&!2S&11MSouNi{2>P0r2iXJGgd;@xv00R#&J0?-tpJXI!y29fb`lKE2si)0Z-zZWQ0kRA> +p)>f14^ZV@XXi!-KWL~tDN(1Bi+0jT~pQuHMbcOrSAS1Qg^S3F$gtJ34^vaUmb8dM@T{b@v|z(p^?$kI30h1>Q+Z9&VNd( +ajSQT_)e21;@o>@)@Y*2JzK6b(CdKt`N}(_r*68si*1Qv +6Bi@Ji3zv~Kq*A;~Oho9ed1?4h-*A>X;lXM09@$g~^Ey1cD*ge7+l2}COufa~(D>-0O-X>kZAD7bw46 +`vsQ-dROkezi}hx<>WgTuX--|a{Lz5o3A!4J`Qhx_|4qesu*?nkfQ9=>|M58wA5|2g{M`)6<9`{BV4F +YU-47x65iv&Jg)^?$zIJKT>RKRbL3+20&KgYx0a>oY3`aAs8DsYw+Q=J8WP!8G{9qmp1ft;(`y|(RQeGNi*hq743(a`Dg=ob}8-#Yxj9+~tftHJPNr)5` +xPg;&w5yCm+DvUZjv1&3SnA5H~DH+#|6_GT!TtT +r0y=)tDR4hxxcKiKSj?PldPyy7Y2_NEl47cFJo-t66XbNWrMG}m0cPe*OegJHHf8-C-Q_>D5-7s}rzR +oCVwKIq|pP*mH(zuIu>v>tQqfxK3~Hlh#IK%?w~Kd5U0-!#?EZ6J{6^XF%Y#jSINt8Nqw&CW +=G&Ow3hzYL!i)6Ei`=Cbxohvp>N#b1#%7y3V1`c><&Mv`>E`| +L_)y7#0rGPC1GHTlp!Z?T0Ar5ct?VC-%9Nl0T=waMQ`Z&h++SEHW2KQv+0sQG`=y}m?@_7A0VCT6$x +cSBG|6F=ZwK1aiw=Qr`p}F1n&cUS_jtx9$HB2CwuS&BaSYa}6M=<-@{gT5&`IhB!CHt=NwQ4Gg{~s;0 +;Hz#KyLm5Hqa{!kUI{87b2#S@Y2|O>Xc&peye@bP)v>8sqabEqOMv^W*OOSSiTYKyMaM2r!P@p3m6_h +^U3VF3bt!M1bK6$6m_a}8wL}SKsQthy>jg&)H02&>8@}m9Zu>2-SLtSf_`zCBr{rRD2#Zt^DIusJQek +h4D9P>msG+>+83Ax)$4WDxpnD+lYuMl564NIdoJ%{$rgO27Kf^D1;1lGMPa80e%<8vfS()OdEjU1dk> +Yk`R>CStvWvlPDbOcz>Jo(d95-vY$~hL!qhC%z7_jG9j5*BWKQR1m+jy~B{1B_R4ub=!%#^8+isG*Pe +RS)rdkEUYOO5~-d7Z-O+j&Fx+*rGTBQL6sJAISakGp}omcB_Uy$N2ywq8hs(4q+HCkq#SWC=V*5jn{6(g#oX>L{k-(TJAQV#*A_2${pe_=1ox +2O07UE*GK>FOovtdWDXf^*UUhGAC-G7nwb0omKM;CQLCg>Kap&zXU(5SCp#Jw58-i*NaR+Dg|Xs;3q%h7+UJSU$qCe}{$b_yfz%KLQJc}oGY%0ZqgZ&E3#8jV +iXeQGbV;}Y5*aqX$Rhz+0yj@>%VtxB)5nCglptW>a`&>7s+UZ=c3h%xc0v4>hAT83}%mHci&uX7O|@O +mhZEAy*NRY32o23ZQNkcz4fR!*;j7=$&ld03aja#=OvU|Dy=IrNiqY7a1w8*4oa2rnkQ2~6T#p;_9`t +;_x!$G9?)8;%`aQ3$R6_7pYs%g+zL)pQDk(46YjQ_Dm)Y`wGrG}K|*(t(iGNZeW+uG5K8Li6LyohQlCRl-*7PVVG}AO9QkThj45dfE)qXgh>jkrrTrZ +vRT`4&=hnDX7LRf>JgZels}bBvkJe4Xzl0*alw0E_aTIk7RPH3Wm2TfOO3ddEme&1@Asrml(M~|p@&Y +^d5f6=M8!(i3w6l)sS^oL-h!zD6&O9M9ZU5()A=Yi95jET_)&2o}6KzksY*yX^J=y;FC>Yr9=f*;%4KhK)H(vTKDONAhiVwL +YO{{`Ot9@U3UynE2^n|%_2LuqYD1I9qKj+r4AKI;s!nfWaIQ?@rwUX358U1dE&mtzd7fC!Chy9{5 +o38AQ(C;bS*D9E46yAPtRRX1U=>4<9K}Vp7>^W$i7Y)fctm_Y);*8MgiuTZ;9O +QJyhC2W$im#m0b^E4ZI!T9Rx^quagQN|VFO!%+O)`V3^5;5vkiR_$S#($1mbCwlx+Uj0KCng$D&U74#mrnw_DHEi_A#d@xGpu=fYH%%EtmDbA?_&QO)y#PcYXWnr+F4 +*Efr^s+b|2nlkVqKKm1B0D2T%^aN49^3Vf%4!DLq9D6o!!!-qb+%ZI(#38A>3%3;A@c_GwI;d0Lrp(j +8NiJF`YxMAnh{%fiVV&eHH&WJ&sqW^dXapdjg0?$v3H)%f0=`~P|#=kt0-?}b9zItw_6E82CMoWs=66%M0f8Pyy&%{DD{E4N&bxqr5Qam +%LTY@`|;(Tn5N%fqyOnM6_xPow2Bi>s^kn>YaP{Pi@P*4^kQDh%<6`eHZQynzmnu>B|$8_cla*%mmyt ++LE4T{I1?!SK@S?>U^QO{*_=mtQO93mxBQ0R +p#udDqe2AJuOI2Gq#Fe;W_%q^iPqZs2XZK+f9lwy*M_p%NH$%qvT~EWGXW3Y%U +g;PfkqvCnr!p?6$kmpSzkdSG$UCMiqPR?K;9oj8soj30(d@$Nn`q8R4PEu;?rcTL%yeThH~MQDE-7yd&f9-jN*Ab00Cg6e3B$mq)x!a?OF-f?X?7DnY8E- +qj+)lLE_x&T3t@*k#W&%nl2Z2bv7Gh(_PBcCGOA(SJRH#WC38qfSQ7I<^EaT=$=BnWi(FCV5{|KOz-N +j$*Dlgb%mfxs9fW_LeH>xd}JzE7R}`L=w1WN$IT^fEl4vPOborCiqdg4PUgyY58XG(EJrAbUiY>Q3+* +zi{3|x9q&-KTntJCkkWgZFp4xTRhA`Vs7dhyunA^)GV4!1I44RkvWLfNL=EnX6WBfwE(`!(C7hgK&Kz1Ogb)52%O4`NPS~|%Gw6H>rzx0{0mkBy-swe{v8Pi@hM@lcL%>4S%0qU);Qq--gL8f^+wHN9<(<= +g6Q8&zLfGG%bgu#b2OX7~N-bHj^+at?xW;F-)e?8hL=GWsSdLQR0I(7*IL4!oj#V|Ez=?6=D2+Lytsn +OQY5R%p!dGpS$WoHkD*<=EHD@C~H78V16JBGpCbP4nH5KH}mU8rAZQ{M+k>(o|g +zPz%ItBeCjwO~0m?V|q`t@I}U{j|S>#mMp9J&aRTAU_|ZJbw)GD_=3vPZj>6^e}*tkUPn^wTQ+fw(oZ ++q+`B$~Am|@=*dByx9B8;MvPJ4GsG6sm*yMdopB)XlmPBvJP=aQQ2&IWHRcTDx^v?*;~jEk-I*crHDjit +8>Q0ireA#|LzDsqx7!_QGsb(St`dX1Qa!yFbCfxm+PvMXdK=+53LWNty(8w$1VD2|;$l=cm1{z$>j50 +0SX&So#r^KP_*PhD$%ICgctHymp`$g;CDkhPGB&M^i+XR8-Y(rL$JR712LZFT9t6?}_C7u#t=3TO|AL +tI_Y8wH%qS>ACU9`QhMj-BHQzZbm_=6-~LVDj<|xCmeTtgGt{7E9=>}Crh!biP9ZQ(^SM&UU +gjTlLmRT)0;kzwOcPN3-Nfa(PaW5e8$vTca+@32^5(gzoAerW2Fxgn*=OI{(A5!(vXa}jGaCC3Tk5wM +nVPDU)L6&!@ESOo5$UUZ!;MCiJXt}p^0hVQ@&>7c)YXhU#D2J`r|IH_b(uPT*5XP +F9I0kfqR$koW#9=FCn7NfJR?R(?PV)WyW{O$6`AGfx*w_8EA@`T-dt8^`!s70YdQK9m{QY(K=Z@3zKw +`ITFlDAMbzT3VR(l*~z^I@G%MoGr5E)vSK={#E6s2VoaK$q(J`$$3jmYRGV%6HT5xq@_z~ +${|7B(qP3?I(q~Z%V2p``v)yaXbNtu5X3QwAR}4^66{s{7#)8{iMkms*m=TN;Xa?IY1xr!uUQfS^K_T +|Ne)c~fwA42HmGgruhEx7Ge>C=BY84v92V~y6**kp%9``rR^wQ;i#oYdg}yf~vYy{^DunYRzZ+%mN$( +j`#3c*w%g*O2-dPu4R=ziagZ*PUaIn3XPkPb8A+XB_Zz2plH0wNu!+H#ZAR<&RYC$4MgGpNbVg}51r| +X#K%;QTY-+UF9p_e2*yW}DYBA7;^wnTcdI`~Hi>-dPZe8hUX3Sir(yl63&#E2%9Pa-z5kmOX9-6|OC> +u8uSMv2O0A5$9?aBDG}WjSdxAoE31zyW*Ce*4OcjmzSJ#C#Xfex&i&J-Ty9r)TMh0d(8NMpVrdPR42V +x`jm0(f!6Q*vXs$76>tgSf3}(4MwZqqGx=(!a6@2XYt(8o0L%2ptgUY#M*((-Cs`yzXscamKu&75y-N +p0*?a>1*DGhS)R?}bBta#XYZK8Dz2i8rDV;ORU$^veM;Aoiz&8IF?l^L?iz#R+jU;*4`FdI`!WT-$TO +H*{f5=*lyWiB+3gd=^1)igNc$f@mj}f2NOkc|YL1s0t(!U20(Phtn?jdqp60D`Nh^JvDd4VK*1-*nT0 +yr*wGfX&Ux0*4C%n~N!gJCCGG&MlE}%+5hlwgRbh?P7%54=B`1_6OQ?K;=$zvfY^m1u8qtDPvAld_!@ +gMvJ4Yl}-?}zBXZ`>-36sD$gVxVj>e16$Yio|R{?h2?i*Zeg-f2JSnJmhgPa0bY9-0G%1?pB@>y8OT% +Hn%u5ilxc4k1ll&;e=V~;1w35-->Ck1o&|H(cFVG#kBh1eP0)f-$D7q={}So5(23P4H +M102gU#lSfM?2Wn(uGCShK(~n%Ff@5$q6_=$uBnb{MU5^t6mgK}0#4xO>ELo|qcb +v!hm?hvgz85h`VY)$(Fv&TXgE2``mV`h9W$iZ>bPfX&jRW9MSGw?RcH__Wa0DA3v0fZie0XtJR8*KA# +jo$-qgt+#0Ouwl$*htYbXobPu#Lt?<>di!0eUALBDViMqJp7U|_v08U{% +;$|_xSMgB}63quKcI#yAs+2BGAhAGWd-mTQ5{C4aHmoyY4#k$5-SJr^O0ia_ZXh=Y_l_3^yj0cf-3+KrS6vVt^JIxQ64Py$nbpQR&e0j?UZMC|kNN($B3vf +{B-w=)|nS#jQYc-P$6aY2L3knv^6P}3RNA?*}kHOSlVDo>#n)K=>xriIbnsI%4cJxAPz1{6)J0$&Bx3 +H^TGXcR2nS}oO6vb(k8arS?L>^G)=CnuPQuDfbzpi_lS1W!(6t@tH0lDu1_cNVb=Q)8C|MnyVF$1&O8 +sp~eqd{1f=i~o~#I6WzSx1_oGb&Qcq0_hF>B+P`YDDBwtjfcs{qRg&;F?K@?h@&t$ICjXv;N@aGCQ~R +|kBEwPQErzD_FQ2GNXjY`w@g)d7twq_rs+=DviaAbGP0+kgpQ5^0x#&oQ~bKM`GSxVmCm!6)gC%^mY# +246BHn1Mm&jV7*9zb6g}7&rRV89`YD}(Fh5=trk4Bi>hFtq?AmZb;wTW7wa2!!yAQ+*wA0>jVzjFF_i +cz!D61wi$r?JxGEM@t=&#RSQS+T7Tif^UKe*%Nf|Tp`kz`N2v|F278=IS(TYiRgN{A_#(RuUD*I#}4V +8eL?ZLBm7XlO6DRsEv)viBdfox?uRa;w#LR`t-$AL>Y;6Vc!F&!>COp6?(O3gcTOQ{n-MHSHkE#RVKJ +54t@BCz&QYTNKD<=Sz=`7!1_9d6~^$h(XG(wevemV_4K!?#iawiT0*Qs6&-5dp0Nt3(vZttjsqGj{wS +_c&<~c{)@Kmu4?43a>!`KoZZmsBd9{j`iUres~%1=K!f)(V5LEHQUmdGGYH9Jg?nHH1l3Wdua(9idep ++kElwkj!`dpbNC{SUY?cO>v4XZ%H_2^NNYyjCXX +ddGAWjcG4Ex|?*VI#o+_3|^~Bha`6&E636fE|H|k}g0B7}F^}vFMb0klTlNEyppB^YdixdY9&x%I-uF +a1o(}nV=R*wOCj>9gY_xHVcIPadLu`<>Z9iUIG=MXATOWY&NJQ9ujc4VD2XQQ1RWwWAnEi?i|ML_8XVG3Eg08W{I8;OhNLSZMC?t6WRmgsMTRFF6FJ+u1l>*07qBZFTzY9Rz6T7ccCv`LNUQCIPp>|69Y-llUP(qG!VpBrXc1Nvmnk?;8XvVyl|A|1}$rR!=Im_h!E;xf68B +xl_R7zOn6@Q{gYs|f^WG6vh&2m8*aQ5NBVvgESN$Qx-RC)BpT*% +aS>{%`h4ki|C{?*XjZ^>Plq@Xvt*30DHw|y4dKza^&DXn+T-l}x;O&bPb_^$c&5bM +24)6*c+kodLw266!UfSeBjuTZ_h2H-|^o!sz8bw(YY4^@P0M$oLC!y_7Blm%#O$|95w +=(%rTwJOv~*;x=F@Cs;aIU@Khfx2b?87Zd(yRCZt1{>q_Xmr6`55104)e18Mo3BwqSu>Cfc;$1mi?}^ +JD)wO^WPwg0Pcu>C}?NMpV%v7&&8UsZL&qF=fb%a$DO%vay|ouM|nqVO^rRst`s6Ll +?0OGm$l-e_JEsnBm-O{=gXx1y@WvQSl9nR{vFtOwl81xLH;3#=_^w<|##iye&=yNrnKCuwr0mGLH7k| +YZHS)(7Q^Sk9PRa(qZVY>g7c5|GfG3uf>kZzNW)$B`!%ECM&lGD#&GD|)kWfLRH4lfKRJl3CVKPeN%A&Nqdbq2{x#TEY +IcT+b>1*uS$MK|Stjf?vm1>tjZEhg9vf;G)us>n2525jI=!3yyg`F$>qa}xxa#R`v(lk^#m(oi$M^#N +N4?wW2O8?F3sslq7Y-+VlA2-O}+X5L}rv@KWSqGe +ivA#MDxIdMl#6<9KyrN>*h0N>Not0D{y$M*~XeNvw41%b58#FFmV`>*zr>x3v{U+i8+n7CeG#j{TrKEy}Ezq$Im2Bt9DJ+N~J2gehsfpEKKPX5VSFdw9&8{@4 +5cCP?jqy-KSUGC9V9IHz7spfW;lqHd+Dni>cPz&;;+VO7=9%rnmD?F=KoO!qge$_Kz&(v-ZBl$8<-ca +fKT^)2+a5^lP|gMWVP;n_a#ntVS6407a=tCMon4Jsw0-yx3iueE!oMNECh=XnX2Ap{xJA%o82V$E(Qy +jtx}_lFnw(x!`~e(*Q_^=1Bi!q3yaZAx4sAS!X-6xO_es%@qGy8k#A-&=7`n2)n5%*tFQZNaevc`$eFdDli@JYHm~MevxjJcE8s)Vw8$>((vwKunBIB +oHQE_oC{M5lvlSb{eZ3B;O=9UXxbWnnTlx2(_AM<6WH*0B4d9&QRHoBvM6t#kgCjI2w?lXlI;)#J;=T +wIf%C<(h_@#c^?wp3Mh@qbXQJR{!L!(?i#~9QFp@(6D^1Y)GVdWmx&MyfUjS;hQwJ!6hS`a&+|pIYKcYh4e!aMJG2Ae7iNfrQs~4FL@@cTItOkI2 +wEqT1<2CJT>&6oCi>GE;JubvumQ{xFgxwn$C=X&A(+*zwHOLwUz*`X-zq4%022K%Y@Kh%;ErQRyP0AF +)74x?OZ%5MtMfpW2eb5#wNr0)81{P(J}EZ6rVf8$W6Iz^-LW@^%D+B_4+Z?O=3Nj=DW1QOtph~Hjp!J +sbvz(c^m6tpqP%p!Z3U;GqD6R!)V~nt*(N?U?x{DCo_nFRq_^2<{!8r<(Fq5ZX4r7``qfQSAmGk(8g& +N$igpz@s&T(7yOeK1Yg6=>D#M*q1JZ#0m6xTA=lsJk; +0DPAy#I8QZ0l7oc5ZU=6jbHUwYWtqLXZ8|kHS&1&YS%}37WW*NXN1xY`jkR#c2F(H$hPL4O6AO?2kr( +MC_*$n}gp_(n9^chliYKAMU^)ZweWqHIxtI?&|Pr?clr?~Bvjub^XEGlsoV+ALjN@5M0e&V% +_c<4B?^GTwazQZVhK+s&v=1o6y&sj8+~FOp#Da@&!3^3f|H9nrBQGNcQHcRn)oaVxb{tsT6&RkwRt}> +`GKwFjg?b+abaoO}Sw6Pm&3&7~C#B)QLNG60lm|liw*JLIHtGvqhnNTQXz5!30GCIL-0g3eOuV7s%AC +^&EZQ%tnEEc_oNb`-Z+q=+UCpi(Vw7B+WCJOSGb@Tot?&VutQY1xb&0)D@dx(GI#xoBu8`KGdGO`q;P +|y-#C%vX~aoZWv`$gu>0ixf9eqHucIfSkvgg#g_{}DcN2MhkjAmd*n*JRoW3xAAdrNgq@C{mJ^p_IZ< +8%IQpfXr`HAz#SoRwIK5`fNDy!ds3Dyg>B*&=v_f_(GvI6YdL?)zv8EV#g)ByPJb`US<01%B1OSElw~ +e%XgM$l_qe;;>t;NO$9cjh7MbD2*MYx(0tC(J-we=OZSFG5#vXoNEc@u1AC?vJqu>3i>CLKw+T4YTw6 +I76NtnRsS8uj2L$z>pMK)dct4$~c+9x}yIlq5Vm6fFTa?}P|N;5KIss3EL1vwTnB$ikRb3bX|ItxLSV +!8kcF1slRm{6*7bWB1fltF9iGu4vVVL0z}P&fwnNOfU_8{NOo?A2MU3u7*ybi_}kvD<3Q};J_Y)*U&> +3UWPORvM`QIBT~x3gbA0-4K6;X$rVolevuhya)3 +Q97jbj0eR5mBMf31u+Cs)aM9Nu}RFgX5kzgVX!^%sRQq7b#&YtI3jI5>Nywn)^kyV-jyB4#ns6i2OlO`@}=3e!fAK)-GL&Vjtc5(la-mQf;~|a+B<8j7qCdN)72G_2A +(q=uPY-INCv|De|K`{^XI;{fCPD$l(O(rbW!o(ea9I@N3Z?U6P}*1_r{kI6aV@6|xh;MoeZ|9_QDQx> +a0g}53yaSYd(6kv$eUox +r}?F(=e>YvicVWZHqZ->lTb-89f>A+iJPcPAXPfh3@r9oV8q<>;*)GfVx_;9x@ +1q3g`8nEdGFk*wr&Cuy+2=T%km7}X&N-UT4W;YW4jD*+X5`b&B1Gd&89U|H&O|u)qtF`LKtfeM2fQz= +Qn24WxjI*2Io7t;N^7Dc1oUx@doDvdm;iU7q4Q-J}Zna{v1TAVd%-cIH=u!r{aLPphEp!Z&jKc7wM?% +QZSVXyzFq#dI8c_;73!o;fVWjLPQymn6fTGASDf|t0xXjS#M-+-9n__^BDI$2I7n?Rs75{KV=0YXt`B +)tB*W*}?UROo(;)sMen&bOgPlu%Opcj$@Iyl4q0)qhQK}0<0f!Alkotw-KvP)`Y3^)(U +vBLEfQ+T9DdEp?(mKf`gsr$p&AUawHF0(6Zz(sFKaSU|du+bY)?vDNumQ3cXfeSCQ%{NyXT?iM;6RE+ +Pw`Vvar95^Q6*+wQeUpyV3XQ7sb56*iV~1wI6NVkeWJWeZV!I%*u-JUB+s97DhLxmt-ajL9(0u%C0?a +}97hanx$jlypq#gSg;1!LzO7OLZB!SVpsvpPs6Mt;G@2lQE1Y3r%mE2S!Hpn0_nEZwM{?hoIE3F&lvwZrE_|7(>|uXcJR`vY|Sk-=g4o*vZ3BR&X +yO7>xH~xgxu;787$4m1+O7V!8LvoRa0caDLS~Xoux?>sU$EN(iKxD0=jeenn-7GAsE9b{Si;S?u3)5L +A5|MOlLjT#OX;ooUcTiVvR)l-f=Oq0;4Hw2r7o2k5W?J$N6;PG0{d`A{ +tzz!oiZNaz(C$7ezl1WPDar!jPT5zVN+^bTOstGzNF}nxFdHu>QzdSY3l_B+W7Sf*6=V^6b&F&Xi~BU +Pcq`b}7P(vnczR5DNT-BM2^kjzIIzga@yzH*Y=Gv^hRtk|I0p03K+`nbvoY#FId+&wK9@yvW@HdA?w6 +i6QwkN(6JD8@G;KGNg6TV@>mqg;z7`2_G0!&G8j|CLTFjK(O9sm_Ee`@bmxL|4OAK@f?R^SXeT`t7B; +yf{9<5PW>v@_KWXqc^<}>ze!&kxL70mTy>7V6uCW0m(M&5r4^&q+^a2r6sA}7 +>C=cf?fnFu~A1#8^wC(?<(t+v;C~+-Y(N`yo5hXdw2XHq3-SYe#0x*_B)goKN!3`A<3wV-b9;a-8L! +JrVA^g6Xj#eEy#DYS-K>%*bq#I4fpG{%D~GT{MuEpRwcv*yM+Nf1l_lzRBo9E_8R#ionIVK*y>KJ1#R +)l2lm&kVVmR`x-M|osiUo9kC*zCrlB7OP^5^>NM{{+IIRrM-C))Psc`9D&k{2EtG +QO-H~~0p;-tVNT|9};@@(Six@*G8r~}J}`B)SN6!AL_3u8-|;nKoZ4Qv^SU880hM_6ZMfrrqei;FzOa +O1ksiMr7jus-qZY79T5^LQ(YmY#lTGzX>f>Vj4+wf?LYgce6V80=~_z~H&-yd)XnWH$&F<}g1FDqKj6 +38Y?0cv+%kgVUlYUr;@A7kGPmbW&tVXaS)QUQ3w8+&>7uh4gn;#d&+`gmXqORiWD2C$LY?Y0x)i9&zL*~ +5bJ3^QTf_);x$LylteN4a+a7`}o)$NPGf)R!XsscJ)we45XX9uqm^3lMx)_Iw6m|RQYR>6o`ZH`ByI#>tmT++4OwS_3gJP^e1#cOcLM)MjI%yakPhr;& +e7(+ClgR-}a)1+$|VMGCjj5a;G5?0>ACH6oyNFX0WNsr!a@<^%(d{;I +u=W*USd3JBBhj%aQ*7v%QI@Ua|uG-PqO#PV6EZ|IC# +=qeOvF5Har0b6*t3B~ww^kWefAVR=D_-`~m!~cFfYgKD+zWr9Oor><$GK$*OrNg1H*^4?yl7w^;|MuwY$IEeH!PFk9N9IZd|DGYihcTH9V#FiwoLNNWr_SA3yqB +Nb(}^4GDPQfJmF=`(eUD*@qeBN}JleRoiUaKKX#qPEglja-MwXKppQk|Ly3*UyhG9H@=BC&h|E*9tG8%DWCH?WBW1kN5DK$4f_}o>eb6^{%ne^JJtifMRg$6J +&dR4C|B{tgy&cSZUXU| +7JhVU50!;tlr9Ow#&m_hD{?HMQ;^{p@pAB&X;uzr$@j^4#+R!}Twu6IiTj~!_c1eXYjR+oY8eO@HzPG +_D@W8wM31sO&#vGIy`IkF53D!KafQs#RPyK;%_Hr?)uDwV2{~8US`2P`3m5Zo3j<0(^IMw~j_k{?zW% +0FP8o0fWKzbbLn!(DB8BsFGRNYthtOXMa0JBw`kI6b|Ug$-4~!?2M4Nh2O^*_p?;!Me?D#U|1OMKD2c?9Vq3)_7=it5{v`mAV8uoaPjC;x|DG9 +!`hn8slxxDJVd-Itz2w3DvAnX=Rp)WO~=481zMR6DfD1nJ2%~SZr*QhryhG+YK+Btt+Z0{DKLXQ?KLh +?79$#Ev@PEF32{WF#$-P1n`U2Qe@-dPEBn>x@;GafW{YbpHy5|J@mJVRgFg^FsVPwLl>@yJZ5MQ*+_R +m?-13QEneB00WkN!lQDt0*RDZ}JNeDifHz1ysGdKsjC?nz5tz)FRTf(dG{|>XJqiS-oy5Yd5=5sC|zh +M`-I#de3R&5ZS)s47EAO46{WTl8#$+7$jZ}E~*=W_90GLWNE_20HlLu02q!ZgO)H;k%(c-54-?8 +@QCc;>H@-~s1!qHLoHn1TO8SjHRZNCSH%uPFJGyQwW|bOu=S-YLq{DV0TO*`i~#Edc+D@ZUohUdF0otF(8+ +a#5#L6@1#o2Qi!Aq?gWYzPG#gC~oTu|~5^P{l@1V_eY8pMwuGG1FMXmyb3cbkD4}|cRrU;rof~_*nas +m=67Ly4iBc)G@KZzb+XZdACSIatzrYSwzgk|zoFS>Uh|H6;$2M^Gu68_zTA75Jcjtzr;)PC{bsHph!v +zOmJIe39zpB^0IpFRBV`-8*R`?f{sXBm#8_Dd-CSwVc%4_xfQS#$u!J~739nS$;o!D>Z#Lnn2W$76nCPjhz(UfCG3yifvW>bdS;ycXTcskCr7;lwh1bk +=ahpn%Q#i=~C9M5QgV9?m{j!{ZUIWd3%A#6(!mCptQM|eg`*m2QEgGR@|-Br#*DLq$r-PJ}G@UA}u9y +^PWYYC>3HA-C$qedD7Q$i?N;aCc8>nmdN+NSzk7H55q`B=UHtRz9liN*{PBY=P`tpe)N&?=HtTkTd;t3(Pgt@`}qgav)P{mya2#fgSb +e(4-xxOjuVn5G!%y4=s!0u__aD2R!SU72K85}#mETR|zWIK9zB-l6LscfbNSLjNC7O9KQH0000807gYaRCGcODb5N207fGK03!eZ +0B~t=FJE?LZe(wAFK~HqVRCb6Zf7rLcw=R7bZKvHb1ras?OAP)+r|<8u3xdG5gcht?5SzpShfze4L3- +UI!5duAI=wQMXn^~$R)A6ytCl?zjtPqTrMT*d`=6r1$rNJhPRxfJ$SR#TS1Six&85^WTaNlcX}F1JE=`(>V1nd +nH=`&oAurw@Qd>`}lIN@}kJoXfa{%R +|9R}k%$jQ@zf-|sCQg8rDn@J&Jd1C6T7_;(rXtax3HokUnwA~M4VP-ofjeu!pnd?Vk6uivEb_Cd^&&p +Df&koL{1HFKuh8U*TPBA%hDbx2!b^%=nc*6)(vpyMZsD{Gu23wm)<%JJ10cq0ed49tS`At1v6k0xm~b +Z0hX4aizYRUvxh}x9<3;ep_e1l|Ju8 +B~;+-QTAp}KK0vrpx4`w(36mPW1XjRV^2(1NEJcp@x;;2D{aX7M2deINgaG(8cciVj +|YY-V+OodXwpsWm%<~CYgd`>}nrkff8&$BIv-=4RRL@RcgZ+E5_61Q_=1+-I&cuznw01LrHyeSM?0tN +v~)s;V=LO{&SvRK5BqdkZ0-O?=_iDFD>?rG9bt`)_{U}VMKzp2(po4sdl)5b_1pX)g@&iL7i{Ar64 +UgDrsgKr9hBNISH6C^MHml`Q*COqWZBt)bDVO&Kl1zN0vGyFr8auVbR2^@HQ6g;=nykpn+=RVTD1lLb +dF7MM!B0Vaz;zq9#|b4GG6NzpuWKPQ+z_Kmqf-k47O;nm)rFRjc +Tb(hmJKOO1snYqVgrJNaciHaIi2Sr1`F_3t$~2^!B=X$p=c`L|$Wrv#Jw+Y@B6V<;{^PMnXAUw$Mzaqcw +rQsb~>2bFP@Nt`l;M2`u1AGA;u&}4L>xb_^=S0>K#{507X+4qDL=2e!_CPfdA2WQP +kaTOdX5f65UgKeMm1hY8;7yXTzDCYcCFk1j=@%-+|p^LhWVZAh+u=+v`2LR_ZQ^*u!r2Elnx|)wz!s~ZElfGpWz4~T8Hm$HhNmOIn)xIVRw^5qSpIzT@~Xn;Y*MAN&ZpkCTlp* +J36_VE;`{SP;v*&;Q=1CA8utFJ;)v%tYd-{>QRRcwXrFRz_HY(2jCWzMP!$bK(jHbh12B +Sl97N9D;+yRgOc@dt^oJJ9~cSWu|XjVw&5$^u&|vb!EhYteNF}D=V;Wisc7-5V=P#)1t|o{W0AL4 +ff{tde#B63q=pWK?3wiL7`9TkJ&r?Msh@^^TZNw1b3pSAr{cl_f^9nrrAmhLyhGMNI4GM{08z!24wP0 +&eug3F~AKrDqpIY{ea!qEua7jytf=1`^MUEZx7k`ZIHX6PrTjbPyv;Ej}oS8U!#tI2XufwqF7ZrcmfC +S$QlJP;S!k#OXqRtClb!){SYHXy?-UG@Amdy9FMbFwVt?IwYCJkS8OXxk27r``{-&LM4! +i$41lshvr6y=b^!8&$d7M?T2~ZWAf-jFC3~kDv0B|#w^L#~{)plwmex-Z!@fgIBOqEHmN3Ilg8k>flN +Y+3EPY^`odN{J7Nq~M(5r!EmC*9cFk1>A7B7>Q*b!_UK@lMr!B*V)a~NRu+X@v#2LSc_#Y?|BwV3pIK +2nA0o@V=i0HFPn^yNcKRzfy!ZlR{R9p-BRf%`i&5JFSb^7K +o|L9FBi(CDTSesB0_0P$TvhAAN8r3H1wfz?ZCX7N`0XCh>cfG=!&4lH{I^D98om~6L39?Ykv*#^TQ{a +VMOO;7LRg2CZvQK61K)z|&z{RHPTcFoiiKyhGlrcyhei)?l(QUR#KJK_g*zz$Bx=AvG+-N*Pspy3>o$ +_FdG}3P)A8FzbO(;N#;*dT&iF`SKiUs5H{x3;vLIaV{6;?>i|hSRYdzZVBF{kN73PNyB)66iSi31QDw +f2?%v2}F(+=AZ%IM1^Xh2AJI9$!#*CR*^sHbuEc2|Ns61U^oJ=R>TdNtw0;3K~UJrc4d@;!L*;fHvC{ +#}c+hkNdO>(RBbCrvd#iE;MPV(0eiDL$H#Ae%8 +oYDvnrCdvKn*FOLdASv0NH+#2N@9Bdrfk30tXmmFk-QbqEk;y{lMSrpC#Pda#m*S?JCw-ZgaT&`(7v{ +3lndRAB^o1%3!)Y8{hoLH-WVzIjwpH1(j1yCRTqIF((-Yw=iON!@@J$wzXd%N~Udx9tkJ4)yPHv*S=y +W<;oh@;lWaB8&7(&rh&cswE@jNc&G)&^6^g9AR@?nt=#HTdQ(os?7J@Em6$owpka~Q{Ek1A2a4YkBjc +s-BnPO|wpPUS$1vn+uJKSoI*`O!R12jcyr1SnB*v0BJc%#Gh=sjd<|JXU3!|3yiX-G^l!#YvoAhYCfv +(?IMVxu_1Pt><|^6JT!9&)t(#)Gpc$0YeupZ(nZdZ)S +jQPU4xCU)t67{!D>-*j5;+*~PqT8WCHI#spZZa?* ++#lS*QI*~rEj~>o*Si({b1_nWV0L#!>dVN3^XcZ;rgup3?w1OZ6Os;A2E}BaeC10`hyBK|?k$e~Y`?B +Bfe}x(N?)7I`4m{#J-37l9?;LzI`2bOmsfj +$gJjRoqaS!raU+c^yJT=As>ZW@7vL^i~>DDbL=>e->#ugYloMX+kbzeUMXp5=L#`yN)CFM(mlQd|QCN +|bUpATC~bfoY1Bc86l$^cy{F?ALlm5((=c4oRRth7QzhL#HRQT*$vJK}o@a13)%*(8gfr@_MK^i~j8h +rXPGEJ{kd-9=5(T1Z~w4Yt|9N-Wj6)sZUH}CRrYdQ!e*gAOQ!;GE9M|eP(SQAhJsXOiS}->kcXLNw!R +}VwC66%GTk|Vq`=MgwbBCx2E083gi}>AutXCkoQ`rgz&<_UdMMx88B?(G|E>!3r=_cMHik-<4IJK +sepq#;HGRbD1(QvHw_t3NLEk;v>yr@SNFw!m)9!~ESezO`$;q(Pa{zd5H-IXy}0a&gCKYUg?eV~4QpN +2X}AC48N{2hsU&~_l4)TCD?tR)XvWf2D#k)fRd%$_ +8%AYi9Z6HV5srnE89NEUo#I0KhhA(~I&T$a%^DkC7jp7R}Hlh60ips-W|{#0~^M(gOV3?M`LmM#G_4c +vmwBL=WmCpBB?C2uUyjN(7E!LVQ~a^w(()SoWr3$QutnWN{0RWRxz9GqnRpFmnh9&iHB(cp=d5&Z$!i +-2j@HQHF3Gqvd(=w3}Ewq4d}~?g{}0N?;LNreB(+Nj3qsUcs!MA(3GfnF6cd +L$D{veiPdwC2K2X)9P%#D8ZhyhB^U(kuwv+sw%6k(XEsVfl?fqcdA+0R`<~Tpt24$IY89Z%pOBAVlLv +Vr-+B3O~*ILuPju1ZYpi>5l!AoZ4l`S(X>YTb#nq%KUh8Cbcw7Brq7D4e`~iUe2vnMH3OEt;`xb$Iq= +}QwyFd8?twb>v>ifvFa#lR7iY^t+xC8oE%Ge;Ahom?3-!1lIiJf(nXFX3sX#A@(r!|#TCJKv9z{Z9X2 +I)efTTNxrc==Y6amI3auO{INlLe4dSHu64^iRLW3V7uG6maG&dO1s`a%-(j~CR< +n;C0$wNIGJ0_F=$6zG{64kozU8(h_hKxR!}yw1cnG~34Nyp3N(liM7v7Pe@3QKiv1LDR?-#O;=i#9%$eOFZ5?9J;CzPdEG^&(X1BRj9dw$uE3f|gV#zw +9C<8h015tNwpc@< +dTW#QGnTBjc65T~acHmvcjiRGlc*W(kp3RMFmfp%E|9ppS6BNQ3BUgEZB?W?)woG(|?BJl-Vfauz1|f +W?$8Xeys!P1rn5(9oJWP@V`|q4VN`@`K+XjEG_v%!2FWfo0CjXa^ATWCK-T;WGcWfL07%$Vb52_2Ze- +K-IXTgz<&;N#l%|I*(4Nn- +e~%Xo5Y#4H{TNOJf@3Hoth*ADwmZ5Jp-b|sWApM8wC5`7}Ldj+AMfs{?JWl`?3I4j{RAC|C}J|~X>`j +^sK5>J!|3`hg(6^W-EM{&9U@dks!`9(>mJUB{pYm9zDruq?kx+2v&hVBH6j5s!(XtxOv0ayUf8k7v*1 +#yED3xa4D$4nbY?3>PWcI`7J8gfC7P((XPBrzjYR!pxN>zW3><_GEnz1$`GIZZuuIq51;!B;0zLug6! +cXbsQP=KFA?Gpj#*a?d0Xguql~YW7Ef0K%A> +9!-zwDB!wGTO{NJ_014GViv&`^mVlB+L5(5|up&scW{4s(g$bWjjH>Xs+AYdeVx3fxg&}Knn$`{wH_n +6^BlL^xPjmB8O^rGMi`ZU)!2{Uc4`(0#iB(-0k7Jm9;~+z}Ci;)D**v?`mdtEfE(sJUWKenB +h7eYKi3?!uKO|`X3EJ5m>H|yU6U5mG`FF?=Rao2VD@%ctmE34qkE*RXU_1 +cxu%;(hc2%G&9|RQ}rE1fnh*LJVQ0}71_fqT;t5Bj>D`II=!5%Q@YCe0$_9`LLbbUGz7ZMfj?tl2Sv0 +n%C8I5iNFR*E?G7OHiAk8wXXW7asI+?N0cWZ{go&KXiHQVbWBZ7bj4piD)C$pVsewk2MeDj7NWzb +&FX$!*#q??qCv7maIn@e-EM2VEdLTzOESh2J0P{@>Tab8Kv986lQX92e&F3OkJ!|hB +9|UU}Sk^2VhVL>`gnARc1?6O!sFM$kGjv&kH3VGC#!z&Z#Z#IbPQ>K6sdcCG-qUsU4aCI+CfI1~y3)du +ZXbFxg9DDu_wQS5qIu)i-obq)fZO3)poZGF=Kl*7IlTn5b@3h@dp4xa$@u&CcwKt?iuJV|x&c91MyRq$Bm=aRVThW5kIQ^wCO4&+C85;?!Ro +c*kRD8AbzK@Pzr$h<#Jt0=c>4_1!oyw#0oNEm#(O9t#r9#0$WX`7K3Y&3I=Cuit~uV?#rHRznFy9@HkbqQ^Z!3^ml8WuHHQNvH;{hgSpEs=}+m!v>#Kmf#IO3QZ+)4F@@A=_v +Vtm@uEyY~BJ8I#Yxq-v!p?jU-F{MhosGoJZ(2`U=1LNp_Fge?arroWJiae%`X_s8GsUxpxLuKO^)<>s +~IKv}Zp=S(WpaNEASSeKuY6B`Q6aq8p4n{CLLIQ*Ff9OvOQJO*vl133&jkji1+ZtTYF((T8Aa;10b2Z +Pw!jk50%6i0x&mO8thpvUb^2OlJ^i;l7SSioyWM5aNQ|Dr8A0gWiY%tgbh@uc1%aXX~H;N9Ni49Buk5^1)I +={qUzeTQ07&>s&2Lc#(~hbBatpW^(#B$mAR}Hvw>b4~JK*kG4UqP~sOi5g +y~8|LdpYk7r_$73o0G&H=_W!vpUG7AV-T*EgjYW1I{&giSrz?#n!h7S$dKMwILQGYF0`m>4@%79k+z4UF7ZY8a!p%$O5sDwn}!I)Fa*? +q6Ew?!G`F~u$l3u!MTq0@H+n)Cho0y%ce0xUSrp4ECgpPCRD4kJDnC#ROR>$wvf4L-pWP;hThHpt!Fu +GZ8>_swJj|0?#oEuW3jKkDK48ow7#I>j5fNbE5CBT`Co +|>)5Fv-ajO&9x(TT+T=6dzTHa{3}X2lwmXSXVd1=AZSiKKNWJeOc)p}Q +x%h`;@4CJ8lDlP;^&KB-U@O?u$qe~J}_f_7u{0<^%s|52hPYPOknR|S0oAvFmV^4l#+?sZ_l$3V=zR7 +g09C_d3V{=W4&>*(n^!lJahnPq)BsasBp@cblWM3CTXsG(6mt10e**rmMKzc3d{xE-nUk~zh +3}2QcK2ehwnGPdFC~{s0#wNMN}e%}v}{l1+XgqZaC^sGGIXgt)cKCbYSO|H?&~PHhn8yB&9 +6*Xg6Z@*$VJ1y;wl)oN7Hh^D&lg=P*&;(CEfslb00T)QHaS3XXoRIJ@)i4K_ywrU&O)=}B7^(h9zE(7 +qFmV4H~MNMeIUKi*v8jzP6`&nd*wgF;ywMR6hOBEh!DAk-PtN)-@7q%Lp)bMMeV?(T>I$&kYhH8uLzm +6lQT$J&IciZ7Iy+(sTPHBreRpAX`oQBnTu@h-vfGeXx0r<_aRLgXlRhb3dLhC(2VAav~aq66Ovec3kx +=*e?!JcQSe9Y;t#5GWluOa*??&CB|QHe_xO0m`p0*qAh`lhjB*l{VRXU~rvqyPTvvk&Obyf}LeW}}j= +lMJ?TD$9bypQL!p{RmP>Onp1}Y?7%nauW~FN|F>37%OblXh{J)r+4y%Kj|*Dg?5x=GdBjvQm9-QOi@9 +Ij*hb;5&(3{oKL6Px+j$uqgAw}d&d%%MB%mvRG-)yYF2GYBXX$14f*4il{KU{&Q$q?4>-_1jO|zr(nL +nbUtJwu9G@HkK-=f5RWxR4YBf!pHpc`qsfg75UtmHmqH%GxR&m}>*PU#mI^^&+m@Av{?x%s$Lg(t#Ir +&mdXZr^)liOnYyOleKjkjs6Lra5wO5-+j2xPoZmgcJQ)x9 +!+D&o}{2qNrFoc +*pPT6bKTdO>ttIzQaLbb?v!}&^vpU|17V9`f@*(VW{9}5TLL#1&*+aQw0m5r&m~x`Y-<|FAJdHvM!|? +qi4bICBK?%4G9<#^R*JQMbp;eOK`THY6|cgn*rY9jmS`z09(amKKIq=e!d81p3q8dpb|ek;9=syQ8^x +|~&W57^Dw=8PQ;+DGeFo3(lNpAiiYie#<1^zqZ&;Mzx96j!cVsF%bjV_@R`B?kRCP6*Ei>8ZNQ+K~$r +|0B>0UXl?|B;>)#tO~mEO#1q1`I!V3B8c@l^Gqt~x-98&rBGL`%`vfYGo47(Iv1-Z%5p*S0BI>yu<|2pZjV$`;ppdJV%J?zIB?_QUbVp7;oVY16;(wU +@pJ$~EvTH#?fs;W(RO5~r=KyI;{|`W^mQ%VOxe?DkDeLJGSK6~EaB2$OJzXGOS{hoXjYBb(IysPXt7T +Fo13;V{)y)GpuvVg)@hx(qOT@4BGvGm>L1C_@L|!@r)LQ)~vJc8-31)Rto>TjmpdFh#!UcDqi8F-hMr +n@%y`Pdo(TYXc#j5cu%JLGa3X`n}Tt22{mRz#IAC6GPwN-!`ZijYtnMShV}1EB^RLu8i@c-GA=3wXw0 +G`%DP?*|_lEdbN$2cH7niU5 +~eF%Ul>Clx{Ai65vRv};X6XBWWpN{O7h@o3bAU$~AQ>;si*((1L5Bv_qjQ;$!@NGYS=G4sQ=Un?}KDo +%}B^I^kM<*BQx=suO_4;m$4w^KfS#O|MK&ji?i_b=i`s(y+?t{2e4O$`M +LNWQq^^9G_af?YyB`-I~G2Sz5E~-x*W>ZgcYgB&A!Dtn2!!(N(Jg(|eBUau= +=AcuS)v%-#ReX}g;}VH|UfwACjpTWp3&tTl%oeoO?8R%|<>3J&uvz~2bUH;r*%2OrfZd(G8Y77m-ceY +7V-4J*i0c>#VXey~rD(f0D)qs)3TXQ|wcAs%pEsH4qu^cOzNlb(r33*TN04IbX17g&#evL79R{cqfKZ +&FH+)OUB1BU|6u*y_Q-Q&}eio8$T;dO%y6*1P*O$}QFlfJ*r)KCWaQ@Xsps!vHZ^d&o*ag!cJ#q4x0? +TeMJcT$Z`I|IgaXTKibcUk`T&l^F-!3~bC0!oR67vFSJo9gEXk3Rqv*>~7-9mVX}!4Ks^-Nr(Hbxpm5 +S)SzIi8C}=*kUJdYW3el5Ic3iX+qxN|149o +NGX5TZaG@9~`+6L2>G)BBa?pJ7>+|zP@WsWnkqJZ+%8TZ7It8Oi+M);ULvG5jP~Tc%>hPfIJ>9gkdc? +lh5LC{3gGI#?*(t6Fg({1{mTaUXm!2Cu6T|HZ*-oLO?x +o@M?KvHPXIGJMIWa;93BxLC*j+m)JP*PFl60#M^MH$Y*vJ%SBQ +j%07lmogCJu{vg5c`XiI{JbiKNzLB|-YXggwKJTl>X1F4LKKDJ(_>br9wvOW^Ndst47D2q5wXPHoe_l +J?V$>nV5-IV2`80_s`LodrQu;hHt__VEW_wjA)9hu*Ud(n}=GFX$>@^BBjsN8#7wHY+AooxquRfa|Vk +d#4Llb}w94t7hNWK$;s$%BX3%}6=#*wQ*loZjj%{-}zHqo#Nij*pRKB-p6bx=jdY4JuHSf`(J`S5ic} +yLZ{Lr&gUw9v&YNtN2NLD}{%X;NcO+eJU^vBrxe177#oc5_E^M^w&JR)7EQ#f4&=sv~Zl~+$d^B6XVzcU!Gqd8CMNxNge4 +C)-iSL-^NkJL;wK*w5g!~DlNXO_XvvpNN?Pop!0{xp8a?s^o8CZ +-~9A5{yKmbZ_-)(@GdJUp6vYs^SHD8IKRH&lTcnw)T*{-n1yIHai!+-%br;K=(2O!-ZvgvyB%{UM$l} ++xN<_r`UYpi|x9u$FQP^8`3>a~M +^%H}O3c?UX;GQQ$o{)X9iYl$h6fG@nO#QGdn9Jeo=nfI2TSQzPTtDb54o>-;8iDpOccH!;)zRl4dUv2 +|^XK^y}hOxR>VxxT=fvV(T9Ajhnt-3aF=rn|8EipSNuE$rALZEZ#B=5d3Xb9*|)NK|(ZDKTK~^i&IZl +3io64vBn>XaySJU3n?ppGH?rs27UJs+VfWth4<>N_}}Dpa|liVVRVT$T5?Un#CwFWr^SHJ%RWdvR!meP&*LIQ`hO&j +kaJ6cB6Gi}s@c*X4rDEfu1tM;LP9}vJcTE2jI57jUL1LEfp**her?x7Qv#av+TR0B*~qQGHey{W-fci +dA-Sc}PRTii6lSHwYvxfLDtt!vm%4CB#}WfK)vPAe$Vm(;uxbnlow8g)G-bE0_JtK%0b5+Qx=GuQd5Q +G^G!|4E4k6%?i!;w4>TRakUz(a^+DQ9IZl)~_Oz%vAgOw7@zEJ)oSpmw^SoK1)>>>MDI`0Fy)8KAX@K +#fNRHF{ylHOM>;(T6LyxSKqQ~?ies2uCA1V>XS)eLP&KfS`AlMeG7e?kt|lJUG#t~psN_+j +5A%~I{yZLqK)fScJe=ccSl)TU8aS0s;uXOafgO|zTtG0idi*mD^bwml>g2~BR@~_JnHq5dLX}7PNxVm +aM*tTc5#!L;rT|(BISz(>1z1zY_4ZTQ*Svo`YWk;x1Y1)1_utQbz$AGh5d@A&Sp|A5KY^elpqpOg{Am +DdRtXPx-dw@g-k<9rS>OEZ+h&!l*>V(}JwxvZcE@%m*!wU!GG*mTA3jm}JKpHJ501dAq$*q)lL``q}Y +bKlS{F?^q#y^alUw(HNvjKX-S#E*b#8=^q-EFbg4SFa%>~*-V_Kw(nytaKCNj0i|zJyJmEJ~QiTIAZF +c3y7(quU`A1+}u>gWcWzeWwTjfe2pG_4o6IURtl;sG~5dTD-i +hT2u{c_(6S|hy$#QU-;+#{$(xnYKsDq@iGrkR|Ve)Dt@FKA2~f)vGaJENp;tH<_H?PHbVz8JLy2m4T@ +W|@W&Is0%$pZaCbn^-oSG4Ij3fN`wII>Zl2)XGAeY<*l@6-s4eWyv6~%HRi{w;9w~~~w288=9#giNM +U8BMpnJscD`g(N1;NQXG9WUZMrl|(!ly)$AQ%n)p$grr$D=XCHQ{FbSUlyWYg{$3`yn*(*yUv-h>fmB +YNFwj_Ue)D3IetVQVkjd1`pO<5WOiTg4O|cx}1}#Gkn?8Bhwa6i{7kRVO|4l&_b$x4H<9o=5J0d>_1H +PE9t&}{Z1w3hO0V|O|c*~P;G!L5vgdtkHNA$FNckJX^n$0i770b6}dtHq@4=-hAO75w}ibQ{xg%g@Vim%OruRLakuEB;u#D$}qns?D@)^CZ#w9}~%zu&)fd5t=@Q_0^>Vdf8WWH4JGU{f{oICW6mfR;K-b$Fllu$m&+l!0>Ol9*rWf7mhA`+IoB +C|UUPN{JwaxAZ2sQvSD0-7xMd@#qd_e&3)+kQP8g|I4!!RA$*9e6Ky)N +;Ud?#Sb-}+!NiBo^C*q3r9&T@A?=SbX`T4K3xyZnsNhTv^kKW) +6n^^lC56P_1Y-}l!ot?J31{eRa|EnYTj%}w5y>#Kl3#;TOC^@$8dv$-jG(S$9UQSN@s5 +kCSoUTqz?7q0#v0oFz<8icKFF2?dRNbDMZ?7E$Ky=Lghu*3#+7OM1@%F%uPH^!+3zeijE$ESS +@(Sx<=pjgRBeo>aBZZtbxX-IoxGM4yyegLrWmlZV*}7S((}D~UMrsS`c>6{!xbpR$QyWW4?1Yh)d4sJ +N9xznnwk7!gXT^J&wlfhzWmd5`DjR|n69ruIip)Qu3X)$sK!+9=tkB!ulOhEUOF`gZp~5mc%Lo>b>6b_;zjq83x6_&#|KHZ&u;hm +_v7{3L`y;wX%%0|a|a&RkzNr$$%-^wK#A~>p+TC}48vfLf~!LR*Txu7d +?|cgFSTQ}^`pf?rkH1LmiuU+-ToZ8gtjYHwxzRMpB%9k)Y0z#rS%fM8#%fCAZ5-LM*FKg6U;cLHw)Aq +Q)IE4B2f3Ibo=QfOMJ}Pajbsz^bbP^LBOW58BjHkHdiDBHoP1!2BYg5bho;1qn2{8sU_}YBe4LgU_@7 +Ld}oGW=gaY0dOe8NOSK=Mn?#b^3%3ZGZFb_1QZN%k$O!U!bzq-UQ}yR$#|mG8{F!4` +*i|H{B>!ThcZh1>uuMYcmYZ6*h!V?;KoWy-BrR2{cz5-WI0_S`F{s){{;cVy&BZR^?Yo955%yTk+btX=qsnbL@h7czzi-&l=H>E`nZOluvN^XdNiSBP}4Wa{=55pB?Ef$aC)5@ +e8B`h>Qn?(ogt6RqByDLSK%A5dIFC)2d=*2#!a&63tGZ)kwnD}UJ;|$o|7+Pb<3>jZqDhI>RYfs>lXM +L2=dZi%aUJ&YVKCz@Wo}0adA1`DMa@vuDUrL6R*^Ench-BK~Ydm(#w5sDb{Z;qB|He1~PPN7s^<9QXI +padwZX^{XY*z|FM1f4Zr8M@>fi1}I)&Qr;vDJ6yLA&WTjM18rt@RTEE0$h +rQ%N=WRqn=VGak^~VmFgHMPs6uTwEvF7;HX$sTseDWD8e*A(o3NdgMAG0gd@}mUyG^h_e(ZMd1$BdC= +!{Dp1(2Z~CqlK^V@Pguu?Q$RIWl1+} +cX1wY<~31H$|L%-pQj!S_?pZ}q~Bj=s1VFJk_Y?k;UyCEnpAf7OX~Vk>gLR>#o;+F?y6x^y1=5XcimX&C=hCunleJI^jf{P<=^=)P)h>@6aWAK2mnS!LsZo7d|U| +`008@9001BW003}la4%nWWo~3|axZXsaA9(DX>MmPa%FRMY;;cPUgX(}#b^R~(E(3^f^TXMhsLBXx`Baw9@O#L{j4zNcVwR<%V*X;0@!VIygT*3HO_m4QAk7p08JnplfOx2JnN8-4MaX!y8XMi>sw&fEU2&t=_ +>KA!+=LK+MQ&zfddt!{>Mlvz@AW;0L&$-|`Zu`uCzt{Jh?Zps7r7 +L4bRaMO4EMY~MTZxby<{l8s)Cny%*OB^&O%E%NH_H}_8BgBP^;o-+{ibRWZtR47l|sZrH4nE~9-`^O( +bcCfj^&S*%ygh-$skxof97){ya$|yrgf+7H^HLxUTl-F4n0Xx-P=q-z0fECaR70*ieeZM+X<_5TO@I2l~lzB*V-*h(v@8nDbpZ|RI%F +c)-#?|OblF1*RtacY*$FnG1iF9-*QvPEn+)w3O2xtE6IV>!6?K-dCG0~`&dWVd8o; +;@vkBKNPl4kw(-v2?Z +%(#9ijnacr#Oo@x$fj1C62KpNsM#hW*5Df(8ZEuf|GA_Cbh<3O5P~P^bVe;aR$c?g>@;swHY-iK31EI +g1m$?Z?tw#F;BHFf!&WoePyVC0j$2>@#73PslQicGOfNR5{ueKg!wx?9H*p#4gns08r1Mmx@$3hFL^X ++sj$__Nc*G?*hDeb0aDJs|BsM@wlw>2sNbeN2BikJGs2+towTMiX$G9Re)u`=kd^a*0nDF=+ +eEG`b!T5herGTPR=AhFKXdP(sXKy?(u>C10ghs;rz`cuX!i0m)0razQrQTn|GA=)fk*eHt}D +Z&v6LB>9y@c<_zWtxXxe{aIdFnE9#&ajA$NIdrYdLCc~>``Kzq{YUH;%;eMwVN^|G4;XJ*4^sG+{j&pIv8R>8vo{4q9LpBFVJd$W3K>K6b0LGzJs5sP*9rYMTzEz*ut8#I8WF*227y@)U +`;L8SlCwEZmO>KrG&AT^2I3+0^%T9d6pM1l4sDNK+5Z7W`{6Au%>^AnE`dj&P^KKiq)2?C3ya?XeZwR +(*O)$qSH%nguQx9FB15cI}GJBYt`6VF)z}{&5G;yh0i`*X<3<`&7pEwJS@iLRXsf=NNAqBgnPv2l3@v +&85f;DS>B*0Vi4i_Mty!A3b~{bV10vmXH2)WgS0VG5+7j7ww)e$F#*|n5T}q>-nU4!z~_PE0k#OW3E6%?=?{_+It<9xkX1maZ0 +2OK7)4`PHh&}SR5+r+IditRsUYelblRK5aV?e2(FL_vl2F+9jc|&caQZAd>o%l|fRvZE`skhiz(PRnQ +B@B0hAl}k78xusIRX#;zlZ2-4;dViZWuc1Evnn|gWiAaz>Ykxw|H +pazJbA!UB+l7<)k)5i=t;%Mg~Z^^iqTks0Yr+=01Vs~6rA8WKzFfdC(>Ov+t-cf%f&*%SS;Egmz*&YGNc0~+w$tJAm7p* +&vxrNLj;zGT?_}v{I-F(DiSVT;aO2^1mTKdS^gOajsi(h+x&o-k|#>L&&kjko5-oTBld%o-xWJE0Nv} +4F=2ir4J7Csspm@0SM=TQ_$pneQV(Mg7zT&|w;Lc(2Iu9)A{e)nt9O`IAOOAU4jZJ{fZ#3`h$Q?F9M1 +1mx{_2_ED%{B@|gX&Zr~vOV8pz@FnLW5VLYqnO{7;B!}d|JhZN55wcyQw#z9(-g($#CQl$&&J;xQ0V! +76_3t5f0C>$D4F<_HlxZ^W_TL6G8-SF%HZDc?*aM6-eKZe#FdNDvbi(LWxPkt+qA$wRCr+?G7zb9qTn|Er*_{I}KlN)e*Xlyw5NwX0?)GTGiGG{a&)k)it}m +ns{K_oy(ZsrHtiWQylLK19{G7u~wUAv`$Oun}SvA+4+M^nat>6<{ijp?ObD9 +&G58Is5ZG8+ZkF(A&+Il1ICjLRM9*Ut(K^a1(Qb<;TO#z$PD-peGFW{-#_RpLFh(8%V!73qUvQ=7xDn`*_`zQQ&=*_5?uPkYVq6{G?Ed< +k(xBR?h02e}*j!<0!CyKY*CD>hJLnWg9Zt^hHCA85t*_25CG8;ZB4WBJHO*>j~{mvWd1o9Qx4C+2(v% +Q{0+cb+y)Ol +)0L^_*Q=y|aGA9YBzsFrsmtM#`a$RbIwjiwHlV +IttR)o$`WWYQ9@@Dt}XVB=Ff6-?C$l-p_0KC)!Kq5$qDT<~8tp6i*0ygFkO*#Wv{;QZaQmGBly)bBh4 +saqF9tx-byXM(B8NFTWK_cF!qnZ?w;L0o&+UYQ6$JMDHnPqZ+@90%n0ZIUoNy=S};U*KN +oimbV?Q_dER0IR0rUrZ=h#dcSd0ncHx-8#~z_8Sq>K^61SQX&TVF7l)!m6F5}0D9I&*Q)_dF)xoC->O +e=qHwmOeceILC0)o~zkYp+bgDTJFSUHeKUX%N3I5MxtfuaDm`wEhGMqY1I)_Jf?(Cca`}sspl@?z47d +5MpQ3t#tDJ-uhY~zgtl7U#lA&+-B1zSXI{j=<%h^l>?{!IBPr7Nw`dSV_7p7=(i@qLlzdZ-hQeh!i+p +8hhiN$#0Qvd#UPWgB7GK~yDcup$wgY<<7U5^5hoZU`RRCEikLJ?aXyjmadN7TCUw)VVeC}~ +cA@KwHBtQ|Hei@d(=f7hDVomA-k#mC)pQ_FXe_aCuleA8lO{Mo=_@UYoj|{7A5sLprHu^b>qvg*n2W8 +)uoPh5VV0inMUgj{0{B+nfsu#TZc>fHLnk=O$;efc6DjaaMBZx8TyM{Eh3kOns@NUu^eK$M5r{KqL_9 +MZL#AIgCeVQzHEUuMprAec`A{Vc+BTJ0vGG**#=IMhEy@hE7&d!ZVUL7Z5TCLe2PJL9bla0%r22Ft$r +w@?j3$#0pg|jcPv-7sg&*xUQCFu7G<%zpdu88A->}UA(-mV+qdyy~FBXpWO}%BgYA3(^iNf9i%5#bfe&KDo0&|7as&4=}jh9_o@tqY`gl(!5N%J0`d~}Y5?C~jRJY(2I_&*aoSiUnOo9AYPpdX+g2Nr7U{AdmYLSE^sn +m;ACV*c6}h&b;SpjF*ecYoQ<>hMIk!=pJE}M)SY3}JKzlT0Ghg3feH}pY2xqT~vHv9%%ImXKN}#TS`B +U$VBXyUel>_HiMZX+S0*N(IS>((X%V2IA_2%-e!dcB&Ba5g$xe{(_E$7m>(Agt6j8t3lB?G+0vE@~|< +?K+@GH)U0QZL`dd$f`$&CB9E`M|}!DDs}UV=)D0g|n_d&;bzGd)gXaQ@rM@6SM#8(}(vUdSx1C>3_%i +lE^dA4GT$)^QgFa%Dn3dnmNeB@B=A|KS>7g_m%f#Nvv^X#-wq~8r%BC^1d6AHBH{-{j+WCN-zSuV*`vb!lzjD +8mX03{%fdD`nvSIB9j_KWmv;k`Wm9%_<+1}58Ym7fJN2D>->V!zd$t01#lelzLg6| +L?1$dq23D8})5cP6c#@qP2BQKPeKw)&BMfj~822gqZ(t2UR +B6-4TvQ4IO}*JLD95c$lgO(Zd&~nfcjvG_q88Y +NjW3A+?DAoYve@o#v0zx+^s+|KMG_=erGW(8p_^zh&&WeD?!va2${Ugd7$wl$7q$_$DK{oFpxcMwEIu +Yp<-VUg1hZ)w#`l+7EE2!_lX+^r;LB3JfK0_V_fP%CE+|FwZXaseG#?*jFMvU|m_DPiXSnMyDI2Ct$G +ue=o?#o1Ai2)BKz)md`QlH{u&H`zAq##joFp{%4N#=bIxZ5&ikMW@OTp`>$9{*W2T%uqv#Xd2dh}bYF +6H@Mi#69WJON*siD??abZwnb}Z<%E2UVx-aCA?9E+O?ZouetE5=rOUd{=+_)%jUtPb-(q$Q!hgY)Y_^ +#S!-z_41iKfnY>y&GZ`Xot}O|P><;VT+M?QIZ3O5dmhlwEYjzX_{zt25$wg3X^u7oQO$9CQ;w$?(}=U +FR#P?SHZmRtCGu!G0w`+UYa$@pM4F;iwRddZ5x%e99P>oj#~jlkdD}h~soG-K)a|!g9Po>pW(0xD5Su +zGSN~39l|MgK%Gi=-g!LcN1k~W`%M*?oFu=$Wn%SsR#74_b(F_O!rxHL6{>(-z{E^^4fFee3fK>A +im@1AdCGZH~s3owPidVWllCkWrofR&@T1%J)vZv5YTg30MCKuz9DD!x9*ssBg +r6DUsk4*a|J)2&*Ze8^0YIIRIfNdFCS}9EmH!{)osmwR1~y&^mBA-^V +Nm62H7~239O3y-o;B~(D!-9@Jhgc!u9H|T?^-vvwL|?_t-EI-G8ghfUCFapzRU_6ik;?)SIBJ#6Fp+S +FfU^_An7Vw*m{sUxY1qmC08`YyK3g7n;&#DM$k(V7@F*f3-&&GMUFshYt^V+*ft{C>8DoQextdcF^%T +VgPIhZ)DO1VmI`n%aDhLYw}^G}AO~-x+I|G}UsLG!f@2O7zM$DM-(K;Yb4he?UJ8Og+s}2+<`F=1LCm +9S&r5zCPphT?eAR&MG-5Y;C&$E_o^p3lg@2MkM-|wmLeK^8Wl&IuPR`EG?EeVGxa7C^Kt<_WXVx?4ze +q9E?0*1IO9KQH0000807gYaRMg4#I$R9^08BIh03ZMW0B~t=FJE?LZe(wAFK~HqVRCb6Zf7raWpi|CZ +f7oVdDU9|j@-5p|NowXS)({9-rL;SX;W{pX$B*H4`<@w~KOraoC(%UE8|`$v~|F_V+kvv1k{wx|+y6GaK9+bC-9;vy?)jrZZn$w{12AxO +C|feok<;X;;@ayFaEzd6mAC~3@yqTLjg`o#ok1lu$z;W@djI2wR7Ij^NPM8`z_P;)CLSRM7!v`v&iQz +%}q)F9CoBXvR63`Hj7cE@}oNxh>$UnG39@7IKu-|#K@K+}eaUe+0bRozrDLlYV!>!QgM5LB_afw3a@& +?Ia_o3sXHc->lPM=KiFtP%?k;f>lBgUTREfk{PEBI*itrcGU(f#M&S5-;s%khi-^z@TUaancQ5-qEZ~ +*>c%G!t0jTyRi)j!lgxv*Ar<|Wm2u2P}YZyfO(*36W4^2ZAG(;R)hjtQSFS@Jf>;7C!#4!kO*@e?iP| +4JWqMfUTZ1uP_^KDJvlsaCIeYUR^$gTWDXpS}Ydt;rD +5H>JjsVAj&IkgL=ovX%LeBySx>JFeee{{4sV-h8R~9%Ah5`b--?QXU>jkDgg%?usHk>3ccnl?(z0mjt`IE(8N +X5Z~&`Z!4GRFk>ArBbL*3$`TLPNRwPD3X3D(OcT2y=oqs~)3%DmG~U6I_)l!+5W31*vlckZn#5AUj?& +2|9;N-Y$l1|0l_A4#QMi3P+Pciu?bbo4u}vL0(+;DeO+`}qdq)$jAC_dxYFgJ-&{ZSyc_^z1{DqOT9a +}_@JtA3mSlk|t(WNbKMzop5MVhj>mLeeVMk+?nmPTc?@Y77`Qn9+Ja;cIX;~<#UP{#Sf+!K|JjY4Ic7 +He4o(3%ZhCpeHo55+#bK3W|eTdldC>cAF`MTN^n#Zp&sync}$QWx9shk_dMFWDC&ZN`()e}wBuE}2l+ +SNI$ia=gi8uxs{$T2Gs+LKq!x+M5?3A``ySu=C=D3KED<#S~*^@5c!jI2;Dj*QYjakP5)QUx7UwCpao +89RjN&Y$XQA2K4ZVM9lUBPxSWA&~`Bw1cm86*|#lChy%pwL%Tu(pX`SkkP;89j>D@baGx_+{X%Z +?1KiV*>%8VF^^OqF!MMWIRiF+&;_1c4ZYv1FM-!$Ln3&sel#>Ryv#{UeB0%`eSK +p^sR|^|htw_4VA6M)Ra+o$t{a5T}#Q(y}<2r)rlW3Qb%2O>~ZbM+rZFc}DONHWGQz+hBLdT$FwYwf9VGBB!TdlL(08~A8AeE^+zIt0VMp<^t(qv^29+L#EX&o9vHztmT7k@1AfZ!;ceTl$)B+eALf8#il3qOFfW +5U#vtpCWBXt4w8=m7E!jv6#Liu%*BEw=FN+MD;HDamQwBYE9%1Ws& +5FZQj4XlXB3{-3^0r>1pW{J8fQ%HFLr7Z_ogTNt_tOWt;pcHE4dkQ3!=b}(_U_$+ggD==;Lo$;pILp@ +^TAHf9An&gCAgR?Ed4pH9t4v5E6#mC{dI<2Zc#h}Ob8R)zAMh3*u&YW9VbXy_6UPjyF5Ni^7)OjFUyJ +b)Y(O(-*OzKN!MZ5YIk{3d;5Bn%>PnzN>t5u9@56re@^w(FkWZk04@l4!CgIYOssgCOw;^#l2;wJ8>&#;U~i&Frw&W36imDE889a;a~7^RT_Tf9{%Hn&96m+;Z>}al=blAnP0f4#J@s1MdE90C^DvIoQk`Upsk;@WL`v+7tis+_2yVz`}D;Q%I{wHAkgGs5_n +0*7ouvqTA-qVuzI)9nlOY$33f=r1z{8d*V>l2tqV#+3={5-it?hhJHlgC6mu1Y-c)hZ@x((XA~$Dg;Tah5C{{SYwmdW^>)(@B@XYa +B^-`}k`shfMzun~$jUkpAaYM&d8iHxfDr$Is +6^~MqAk=5YCp|1BBIK)W6ZrSt=lDqSJ&QksU@C$sW#bb3WdD1G2yd!)866H;{X6CyhvBbRIBN66TwWM +8k-$`8oG}`y9JtfPNqHW7_{NlF)a2sa!DX*2MB^5mJ7&T{3k|gC{j| +KqEzYE2S9fgXW`wIje!&zitgJeR3qV{Oz9r22!CUSswfU#=ADN)-1V1A5HIsHxfSilO+apbj)gBpl&D +>iCS#q9b#=4XE!u4~PcwB8fLuCoG +~osXKr2nm*kHy&)qr%)W@l!6L%C4HIBL8;#LR0TZMaZ9x}d|)=S@#Zhy91b?h>$Da4XF1_l3&%=|m7Nglt!_b-&)&tKr8^d3Baa7{ +kBigC-UY1*L!(0^_!Y}uhtmuLnT&BpkOTv$$|v!Q=pH@YG!<2f}JjAT3y+S@r9W=2ail4kTSxR@Ky0r +Ks1qr4b8;76nTBji+NEr>|GmbXE8Wr#i_7i8Iq=@0H)%lF)_0VX!VzODbDwCAy!9QJ6@_ARm*!lK7Nd4E)Rx^7)Fqcww(V +Me1|l=EjC}*f`+@R-G+=EC3GPSTehRxbJ&ArQr*3vw%z0$nVI-`T6)cFUR$&fP?n1wEyH2oI3|D?tJ$ +N==qO)*oL*gT=4XEFk-8Ec;OgF6I;)oy5^cN)vWtvSj)7LyP$!2&Vn=7Is?muLv>7xgo9;1lV}BC0o} +#3=b!%m51;+<#koY-h^!$;?F~L#T?{nQB0c(z8SH*}|ByT^EqL*{Z=1QY-O00;m^MMG5U`6vv~3IG6&C;$K;0001RX>c!Jc4cm4Z*nhid2nHJb7^j8F +LiEdV{c?-E^v9ZTI-J!*A@Tnzv9aI5Lhf61V^|!aJ|Kdyw457967Ku=s7uZ&~y7@^9$Jt=`N@ou@cu4`dZ6=ztx&ob}kILvoQ~b+wLOY|G|*Rc4x7IRT=(K +@W$L6vN3<7ZH2zXjpievg^_X=qmfI#6R!9kE(2&fDB!x^@)jKiH&DYa^BisS9D4I0mIH&r1&Kwru&}T +&#G-_JD{w+#XgZzdR}D-GNxw_vF2r84e9HzSAO$SWJ=k`|T6E@ufn&Q}*Cs*eLjeSg%2gaXWc3D+{6m +Lw@ZMWlmhbp#^wIJy1rk`p&ICGgKf08+wb7D +BhZ5<0MNODKR%$$p{Awmi~yh;$0}TM57^u1K8=SqK9TT%w3iIRKo!M66)v&eSk*QY|E8ej@vs!tp{uE +#wHhR-J4vPPHVp+eN5Kp^%$eUJ$!V>n-0QJ*OMa@woc#;!-&0dUg+-IO^mfsM2Z{yUg)imIXHS9V-M! +t$;0&v +xZ_;)1Mx_qChj(VPLvtB0*gI<@(X5)Im!n|`lbi7W6GiH2$z5uljmpNsD>>x@u)=uW_B~YFf&ae#wII +o-zwEi#yEZOV~ksH)4yCuT6P?D5Va3KfFGjZIHmmQLpn_gybDcC==ospQ>&E6RzeP +bUpLe4@Rg5n;A+O4|vce?6m}(nPN4IZR{?5e??bGE|jKI_{zyKBtXb$Mc3U$Yr?h+i|>*yMURJv^%`DLf#~gT0OTTw6HesPaJOp=$BBx9r$2FCn7JlUQCSdL`lj@ij^rVt=J;B7R%D +es^nB*%65>nrZ9@7=n0C!M5{o}ee`Df%isO@ByVqi5)k={V{!m{)GON{*3;dzDa*Ue@TBu&(ZVr*Yqv=8~R&%k^ +YXpO@B}SK>tWD(Ld2OdYQgM-=$aRd-N)OpI)Qa>7VIe=neV-{gD2Z-lVta-{?BMP4CdV^dtH){e*s+X +jCgsnT*Nk(+sfY0dMy^t09YxTq= +VAhPk=IzlLgW{MSmKn$;tNiQ)@H5#3RBasiTcll%xP#RJYzvc0OCHIYv7-6}p~+7|QoJI5w9t`#ATUGMs-K5!A$3I7;A_Mr| +>vHnB-nlT_0jqsG0^p3VzxyS-pDGqY2vZf&Rjbav|7Zf8x{sg@G$e93p5BeR;xnUjnRp4G}?N##~TZ$ +L0ntO_5B)hbHWB-O;IwUVILG?dzyzVi{wO(CQy7*#6@Y7?cJ(pVEQM={h2qrw$2M={Dx#2m$_#O}|;v +eZ?fTvRFD`Rmzr7*|L-^Bgul*I_8R5*70QnUpB=SRn&l*G(az5R9ytkY@pPJ +q#8wxYD82Wr5b|T#1e0ss-T+azNXY{B0W)6R4iy}RjD%}xFY%2^hz0vT|p^{@IYt4qE}Ef9Bit@lcD0 +EsA`H#iZ-73iB8j4_1#|2wP$TM5&w2K#gc5^WfeUY*0|xIK3q4MYPYTrAWSn02Jy}7_Wly6@(tSuIkky( +u-iZB~#csr(1l}AQvfE-5lBN`qrZ5 +S>j>wUMsYYz$f|acSf);Oh0+#x)Y2>4d((+F1aUK61#($C;@%C1SCgMVxcIZVMiYfbgB8O@S4mCCrNe&p9%DfAkvEwm{v0jMBct}$!C7Gkj^a&90K#t^0qZX3$s1 +y_OD9eW3)%RxYV}hGxS9BQbT6cq8ty4sxplVPOV646* +Ox4XR}qz3Lu_bNHRO;rs=A~$kRuRQbwM=|b4*jf*EDs+QPXUwg4)0a2eY9`DmJs3hLkl>SwqSio(8X%1Qb|dykJ0JCf{OG3#;=%kDtbC%41UU1Kt=OXxadwGl!Wl|rQ>ho^u +Ls6{x-op5KKzP=|5^a?^5MImpMH4z;Rg?|e17)fd*EZ7MKl0J_Mhw5AD=&i%E+#Y2;IMPfBmx)_t)>= +g}?RBUb}w-S0EpMAR0E#ZQO;wzi)iJaeL#=#x+!)KdVKAA6)v!%?EEjxB~y*dT=+x_vPQLNzBp!|!S`lskJ9q +Ivx32&9{7qDYI7<<+&D*Cp*Dq|YUqZ#$!H5a1y|a1w%;wsy&9y6=YoBbcUD#Z^v3dCfs$>Roc0?JkNsfn||14~N5NhC_ZN +YNztJItHq!v~l82no^Z}+rGPF1>H-k^BhvAblEj22gYfg+hAvOA$E0{@~de2b5kd&Ob_7u5f0JY&hM0 +UYw@~7z_s`mk>oaqAV{`0m-ZkoM0zmczdnhAAV{&riX=&Oxl{XOm&?7~1Oh*+)#}?4bxWBGFSXM~WUx +~-5wy9eq*Gg!D|ZyK%&==)@AuTlD5xJWP$Kg@DP;k6!WPB|yGPGO#JOt-PVNk> +svsgwNT&0^C7o+<;b!#DWXc+^$7N*lTes^BN*QIr^xb?-8oR3EFsMNGC;~cJX5R5stdpQxA{v!=u1|W +$Bxok;<~vPHaKwTQEjt8I-FSJy=LLN1zXzz@sP0dQrm9BJznFjg{BSrGpxv9FEMCR~+T*g8Fsw;%pt9y`xY{LoI((*#P21EPOVmoS& +bHj{$wA>oZTpUC5_du3`u-~~|j&mepwaYkfB@Oc-uVIl9WdJ7llpL`kx#8*rLVXo5+dJuyb7i+(v??{ +|oQd1X{{CvsYw<4{Lfs!*wU6kTZxdSeMBt<0b8r$pAQAn0>m#Y%2kXFzST!>0y5NTs$MtpSuu~Wu&Sj +gqFF1BFAdF=i7gLXJMhk|IYtaB$2!V>xx4)RuEdO#(o1>9E@15R!&@qsi{S=FvFi@~;lONM4RY1lv#Y +T+uQQ?ND`;wJ!>-mt?rH$S2Tn6GmvaMm%&!%vKP!`Z1oNS0TnCj{mQf&VSAA0OSOODBCEySe%7)fZo0 +-rNXWKC;?k5(DeNXA-~0JgWjVNDJMI`W6!vdHzcdQFskFQFw1x+A7`v+BKZ +v#Ulb(Bq4Dm=wnfwQxv`spV3hC4P|H}Kc_2dIuqxZRxyXZDOVh2!nfMkU{cRQYF~>NYij-@wvzp&eim +V;T;-`Z)cPQV!z=b67+&glF&lF8*Gu{_7CMNRw91oLz5NAi+pyV#TMG~* +OxEI8I7XAb-us~&Hbjy22y=pj`)txc&1<}F23OckH6;s-0n!|#36mwQ*!K-a98_YT;1b4$KRM_-@SbOJrsJJfWN@4sL<*yrP4xHmESL=qh +-YWYsF0}E1BZK@dllf18rX9J{xp9I{^r1WcsUZv|1UlJyK>@M#z+QU7?9>|HiE|g(0v9Bs__mY>VNmG +MtGeYf{`5^P{M315Wh-7Wt_}$gI!wr^2TlY#KsI+rdotKPM6rL*;goYJCsQ+#H{bsDVAW>STCl(l~US +IWET0&<2iy{_u65LgmDN;m9Yg>EW$6FfQ<5n>d{S?qxLU>2bV*A7@~?otr)n)zOd`Wj^pJ^G1svUC8r +(H00U4IEwWt{07+V_|fycRbhNQaj5Mx%y5noZS7+c&2!GwDYMjbO8A6#d;*%(0;8F?DQeMzE`K#Sp{q +J5GlUs(HhRbWAoF~Z7+UpbuPA#z;Oa2}jOYpy1ADknj4bz%qz9~5L%UE#ek8m&B?_#sSa2hLK5K5HsB +BN^lwekGsBty$81W@GP~|ekbh#Goh1-)zKI>l}xt+m2xD5E@2Vx*@cX)cYs%`;71Rt8W=QqM_x9(CAaUz3yntao3O+ +U%Rxs%cXP3+C1NgT#@H6Wzvt$JOBt+5iSZ36P&WR*ExxGYpB*9Wmc`lNLccBH=v51yeaQjNR2iPd<4G +(P)h>@6aWAK2mnS!LsWe;-#)w;005O%001cf003}la4%nWWo~3|axZXsaA9(DX>MmPWNBe%a$#*RUte +i%X>?y-E^v9pJZq2JNOIrjR}h*HruJmUn?-8da!wibABKUb%cKw3>`q1>HuCt0iy@y%F-Jz)zfBsR`sx5Q=aCd6de`YOz_@T@N +!uMHKW%p*rM5#6gOi;Aqz@+#}PMRb4YqoaD!s;E0Oh&+=0ms7vfb@W~GFMoyx~q7GTb?bVu5V$F@vJcKElXEM!V;MaEZMJVa9J1XGYl>3e!fNy&1SQ!+ +o%JgR|-KM^8NrD*?=^{-gI7Ow3{r#RU_g>W+gb1wF%1A9g>noC7#{QfQDB@py+j$?+}I9;`L*z56zqz +fpbZm4qXotVPTgrBkFaOYY>PINY2AwMl=~7*L_yjgdDxVS08Hiq5WCI1}0wPfbVy@%vGc}zyuYkO6^t +M!$GR)Ga^cZX`lFHOKX9cs|p4cWzOX2cUd2SSVVh38s%Z1_4!T}c0=?B3`lwEGMcS!-@RMQi$ZOpGzI +MXG>tn|Z5GitxZO@jfP1rue7*e7^t$R3A#q*5+D8hHR=c&LPW-(DYhZEU@uFGopM=(LgdGV0i6GWv^Hz?K%5+{$mq +YV-*{GH8Kzx}?RC2$gexiN3glj)-DQOo_3!Ew*3SQO^!ZavuDZ4UBPl@F*hHitUzwXV9P;c2WpKrx^U +DFCU8Bzjv%8f32pZPOMVVh$R<0p&-cnxS4-Oq*TSp-KT&0`pZ(>w)0&F$Pc}fv%(fQclUz5a*b&Lfp@*#*V+UPFcPJBhl;8+g&E`;n9>^ciRKhOwkvIt-(0wX5r|2 +u0 +jCtIku;it{V@}C1`WxzfpW?uhU(>uVQg)K*6BDyz5@<8=~YBtCa^c&)0XBD7` +46yqiB@&ctL0UqSEE*p-KoB)IFln`>Pw42$3OLd3+_6Z*VB?&7!YU&Z^ZVF>_4@d@jZ4jcyPhmr;I +ROv9zjCXBe(|Q1E>=miIBZO&k|&->$4jCMC)e^aPl;y3^C^M%(fEV`f!p}S?8u1nhnmR8OASEbp~rZL +}O*X8ZP#EPICMiC0L%Vp9VZ|90c%hpa^e9TM_8+ZV@bzkk1WbBujN_1W-nb#DID+swS2>6o1^fh(7`T +bgF&LFF52AIZVx&w_zS`VvTVlIOjYRM5Bio1%wd91>StekGq{drfirxikJb)J@}z8;tj|ahUzGvV`Vp +p&~%LpfQ(vv%@)MJLm73d&m5q{nk+Vu5Yg@Nh!yA@wx>oTvM|#`leiYS{p9noH+0N+OqS=WV?e(ef0f +q0R~z(iz}ta!a>f*0T}>+1Q=X3M_gQCSKob%+M1O#Wn-hfg64=T7AwQfBMg?qiuaFSDBF`K1!8l&US~ +!Zq9Ma+?kZ=z>0dsKNmH95J5Bqz-3UJISu;4Y229*WymGcos?vT;7g$#NHC0_xFVCGJ@<=-(XhUY#WW +8r}HNjhLB67zz)xl@sa41$3MoZzi^<{jK-03k~xIVE9G2ZSb=r>z9gnoKxmHD*`mM(n +fpA%!EEf(I +akNvDy?37KIm#M`9HfIR+i(|AaP}XQ3JM=+Du&jwaV+rn3eVh=vHhI5ZWX69#YdM--|B{!WMdK^MRGo +hbznRFN9w#5uzsa?p%xHgJcpqe3Ikg~ZXvhqAfTcE1bjA;5VmYtCeV;y{dMlX_6I1%!B8n0Re@K$5;4%1sQETF(datezO@jVH;A^hiM! +J--=&z5Cx-iG!-v#lYhgEA8xHMK7Cd}EZ)KA4%|mjx&0zi7z30W4-g+vAVMe&Uxl_q*F-oPZCz}DEzn +n4R@wf($Y}Hp{m=fjabHtb*s0N0tOYq}q%^0l$%|NER-gqlXY%^1GtSDIod~oXLq8Xh1j7i&94QC~S& +W6CpIO~$U5DVvdaiANA4(cZ*~sl8r{=s@hKD+ZIID!+q_n%3{-47kUxrJ#d>-Dvx8{YNXJ@B0>n--(qm!1ppY +026#F&QFy#Tcn-C5V7uM~@D})a&cJH+<%mK=+tHE>aWU~!Qiib8#{QDMHMWH)NuI`w&e^*n#O#bb09y +QJLFEp@rZ{{w75szQ5`C;^YxIL!X97aT-D!&~;Z97*}+|J$ +O4lC$aupf0?%%(uNC97Y1}jpF+0b4D~>Gd3+eiO|F4iVY3^dDX=i#l~n=Qu~H$gaZ^$T9~K|V8)kx0M ++IwHoipX?h3W^^1;0=12}$%#Gz(q$*>S_p3jaITD5>?O?So +T5TzIU^!+eP{4_oLsr<3lDAi!Qwk>5;;qZue=>e3KBgX|O$8FXYmEyu1`K*MENK6uasDU1^EGC*aR2X0Yl(6(X8STOd<^ag{11vFcbB=WN5dPB}Zy-Wt(H35O{!?1UsVvlwI;I$=UE}2p%*3pLU-tvvYR-nJpm&d>H-QJ8%k1j;Fgh+EjkZ`!NAH58{4rjxK;t1Y$hrrK%rRyIOOK +WD&pmivc(#gZr%qlPW6wUsx6cDL2i>MYhYn4+OaT6s5B}p0{E5OQ9H|KfgZqvXovcX8zpJnaER}>&xb +IUk^(*SGR1+l7CbhMM&p1{R%b=`Ru<+U@IXuyZ2beUs(oOkx;vQvQZUSi<7WU5w;|hS_Vg$ioY5+>mnl>=y^I43L%s~AbT4&J0To=~jV+m;0q-E2gO!RXyNWl!p7yDJlquK(##!h?=aRZ6 +5Xz)yJCmZyIpj81AZd_msZ$~+^jzSIyh^q{%&{bt!WO4s6W+uqe>WBH&65B-4)VkaNHDw_k)zQ +=3;+YC^liO-^SCU3zCul`?he~6B^Rl<#jSrn_##>1AI9JAS9`m6B~Nk +PeHi~HG(m#BFRrmQ?N$R7!tfefeOVdd@oBbFI)(Jh8@8RvqkJ{m~aFF0P}Epk_QhzQl)N)*MMW}o;~H +9c^>)e&n4n6Oe_a#fx5L}9SmbQo&XJZtoc=_ge8L{E+)4qFc}c~US_B%SkL{=LV3?t@~nXN<3F{+0<0)@|p1#*Ae6Ut+(?r5js<8u{q+Lv#KNc{cga6B!(n9}){5`b@FCORLanbWUf-b|4 +sm=>I9dOS+zl$*(!Q|YO!D5BXnv!MIJOQmGdjEZFFy9ub-bna>rRqUdhdFUj2U1Zg-LM^m}xcJz9JmV +*gCeWn7PIC+X5+Iol`zZuRfX4lt)(w%*eAbOJoT%$vP`eZbS?k&;7jX5q37y9EoT3sgdVCx!f==qjg^;F#Nb`|f{72jo;WxjliQXi2(;RNdCtTz> +Cd&+T&8?4RJ<1`-SY}}O4&Z4XfN!WdqTk?l&OAC@h0&&|8n{zEDy8wwYM?+qOoN54Gl2e)NxM8xTme3 +jzsUe2W-fbVAkY!x_@?$IsGQA?0%r=bkij2egGFPgeHt{*?gafAbt*$!me8Yq)^#&d>Ax$@ +EhW!C{Zo=V+=*XHngSJ48m|D-&CIcRdA6sJ4pywXKeh2K`>B<&vT&Ep{L#C||FxcvFu{$ZQQS*oQlB^ +Aj2ZYCuQqTb}r_=tXJ+XU>)=58>1-5SRJwv>(pcb8OP=lD6CvGH+19_bW?J}Ayuilz&3 +i+ODbgWs7qixtq#qTfv<=D18kuUVwHVfAB-m2?ow};zUsDPWiP5;zF0xmNA=;5{8T +~X6@!OasdI_$8U+pH{haWXGp2Zy@+9}F!Dyu`FAfp!}Qx)a?tZqxIX-X)HLAoP=BLA%d7>E66QQAa5t +giWu=!yGt}VZFS?bdJM?Jp@IHrEg2%0X1ChTxLJWZC%jy7dB2m?-q_-0H^KA_F09!7>&I4#=g-lM4-i +ZkQ?$&Q|m!E#0ydf6(69iKH@=KjDo}+399HtuMWtyVH*ol!3-&8yAX*lB{qT?^3uSO&qwaZXe);N_;& +Sb{bbpYw%+O{+v1*6?*vRZd{Y&}X#i;Cu0~^xNA*;bY`7u|5bk8mF8f6|FV +pdQSoxc{vqk8eEq%p!j9O^T`1udj8E@wN)xPqF}*c3ojU99kL(8_?O!L}9B_S7Vlxi+E2U{$^lZwkz& +@L$@d7fdUgB+V$$1eQ??xO5y#ZfSDVWEV0`a6QPBZL@+ACUXCQ^svKWoF5(rGWbK;+yS#(opXw7Oh4h +9lQJNGr7{#7stp*%p+chx(i`sgw@fq}A*Tn661$rNH>q)Ffi*zP_Ev51dZB2_lF6G}Il+G?!YYL+{{MgSpZ9zEdw-bQx+$%Vn@EDuM7!uc9K7B&9|IK?q(WYKrn +i5dQ8_B${WUz&r27q`g#F)w;gjpf@ZSxDs$XI77xI1c%=%}cJOeGWNjmEZLtVlz2%%Fp)cs_`!=X9O< ++b=5@ofln821$e9okXU@68vELJ_kSQ9!o3fhf&kE3p#lAS5~(mhRz=tGZZ?1)uBsqIZOqU;_SRFKn3=E+nL*9Dbq6SCi~HM9tT_d<9&AHD*OUm&zq#UF;oUtj<9_Wjr3@u +BIz00F1a%=brq`GQ6je$}!gJ$muF|E*g6^$WY%U%s;ctv8n}8XnE5EIPMGUyw$>TvhCw{xm0Z`&??^n +l75zHlGZe)Z0FY+%1hERbb1(9 +1NzFibW*aKx(sDwQBzAAbdKAG9Ldqr^;`ReWkGBP)6vUUdm016ZU03ZMW0B~t=FJE?LZe(wAFL +GsZb!BsOb1z?CX>MtBUtcb8d9_$=Z`;Tb{?1=9$9xb~(6lArT@ONRAWfVmZO#d7_lzP4cq?)(?SCMf}2YM&wim7$Wrza=f-hAXWbNW-GO~8MMpk{56|#mY#`4{$mPb*RWd +vhByuZHL=-jY%C0Pj-OHr8QGha{6M)$00`DBz5UZ>%8I#6$DP$TugBKtiT&YWYr0~sYV>?|D9i)fUnO +`pwTJssbXjlPVr`bvBw0ZaT<;CUoh4aLfgt{d+OjPhh>-^E3k}GONljZlkEqT!J@r6=Sd9gcm{kbK-!yYd_BUV-o?q)73Vb)2ozN1ff1^9)-M +veWEJ0fu8&Pt{moRy3+9~v-6^9}Gl-#2IUaa8jA(I=v3^b=R&Zru?fit7=usS)s11qXESEriKjgo6HB +!c)bH>$K;Qb+twST7+<9+=AM +lwqn0Xl@bz>{lads+y~4`tL3k3Mz4REOrGGg$-(W6Q~zwY!?U9q2i-cY&d+F)O()qTrRVPP`{9i^QP% +Lu)~Xe1Ij0AfAq6tF5ZHH^$G{MGyY99D{IJ10?E54IQk9`Cp~SzBR +Ne8nP@t;m?Q@@zy>AXIieGP60ZURhvVyOz&OnLf5v6!cCBkzL}1_PL1d=E=qHgm-9`o(zL%qz(3~#1R +Gh^Blr7a9X#h3BR;mL^Nkx4|?XpHZ_K7eLnNY18WBY<;xlV>JI|&X(4>qCeBsn*zeQ(PqtJKvbzI=n^x6PA3%o=eNG<{;Xw4;PaDQi*`U$reO30!P;SehyJbk>L7J?&wi}qM~Jk0{Y)owXU`%FP! +^g$=yIYxQ*Z#+qTACl643U{Lj80A8=7eS4!?m+sXwa8}wLlkLl(U2PMCWyW9Am%}oy+^Ym@KK<~c-Kt +>X;*}URic^Toh5NLCT%e2>aefhSt2W)Uw1S=sH>k{g9(?pLzpmbbd1}&IIT34f<)OP{w9&MdHci;)n( +B~L5g*QudoRwT)@@N!CYlX7kHgHxuV{JP+eE(LU^?E?d0Npz83*x#Ah71Lr5G1x&+v(g8&|KB5%35Rl +Oz($X19$uO^40s>>n=`f*)Q!Twm}n@#1KrKTs;FguJ7?8A5lLZ@8_bx0rZCXWUpPcAJFt|;y_tUV9Xe +mU^}Jw&5P?C7Za!S8hY{ZhJCM*?L5*BR!Yn}RhqSgGj$5tPrs6h`WIdpi>J&3dlLF8e;c8*7~0=;!dr +T5Q9RN~A4p%lkgu)`k2c^9ik=OUO-SqoktV&AEmH6t(IC)#7QD>%=93=B{Sjn;^yo8@21&*5LzS_*$$lk_bx%v{M?}w4u ++NquaP$M64aS`{jEbKz@^{NCS)#+(ndoeh(hXqdDSg1$fQh#ZTY(Kz?#_=FsST5qmY8PI%SgN6IvRYn +c*ZH*K%DgV7sP0;_3%2wdrH^-p(ES;w$YQimq$m_BpM{|zFkV`26K_L`uyYSo!u3%%%}YuDSu@3`ihr +WD-1HB9r{DPdnqw_7n=g;I9|hHe}opdU1bkc{TWxlqJR0@_4~_L+-mJaM6P~Zqb8yaV{K(@s$SU4yhK +r`P!my8*u4~}ewVUeypwHR#+!26&FX>K8T4jFn}eO9nj2*r +~c>t)_)UEkH5gu0VBWWRC@4*hd8J;pQjEGy9v1P1{C0J#AG03!eZ0 +B~t=FJE?LZe(wAFLGsZb!BsOb1z?Cc4cyNX>V>{UoLQYWsgm3!!Qhn@A(yi9Kj4+E@dThiHnJ4W^nh$gyT +wT|4D^s%vuet6maH^ta!QZMTpwMhM_6q(YuIT6D?fnn)t +&}2w_=xH#}!?1Nj4+Dy=JG+Wa*V=5!qo}67?Au34w$o-h#1ZxQNWRB+aCm=!+BL>Ll@Pc+e25XHHk*w +i{1ec#FDhdh$?CoeYpdKU>Dk!IGwnfslu`}0z^ +<~I%`?UaQDK`udqA6Ixw+E5Hs)$qDv%>}z6#ochKvMv{Dn2|f$&LF)1&v`gm)S-#yF73pyl64=+Ux{! +U!UwXe`!JR?}3#LuaI%k6L^9_~X;v9R!=2V%LkZQi4v#W3fz= +zNQtOjPQANqmq06iy&4b%ztlf%yOZ8t~8vS)%f@YB;a`rS>6LFR +Fk-Xc6+1#^-pHUWSFcxFKGk!JH%GSxgvKB>V4eL&mt|iA8xo9~`V2CNOu$Pxa>?9BC-vxXNp5cfKV4X +1fX&uA;#GP!#H9Sh{WA>(`XnqMt=lVBhiMyB@6aWAK2mnS!LsY>@ndiC`003oG001BW003}la4%nWWo~3|axZdaadl;Lb +aO9ZWMOc0WpZ;aaCz-KYjfL3a^LwYCejCz8wzK8KjezFbd@Y?V^w6!k>pENd@guM48=Kt01pq*+^x-T +Pj}A)Gr)kNY;RJx39D?8z)Vk1zq_Y_V|Mbx30vfe%lS(On__@)v?Iry* +kXE3;3$&#(}q)r9E$to_hl2t3gs)A?bCNC;xro&}kv1<*L)un(-IZMP+W@5mzgsovVLO@8FSX464%7} +0o$Th*r%V@)^mHAobi+fQG2FoH}vyI$D@q@^cyol-|P38Q@Xp`sZnrHk@6im-~50~DmOB1#!@-Mp>r^ +hg*A5I})FIg!JkT{#kV;Q!``3i&E@g#2tPs*CMZhc%}Jz!|TN(YXO>7u`?j9@kjpz@ns=4L +}D}HEX_-iAbrk@A}^jaRWVGX`sC?IPMU=KjqR_efVjvWcq)@Of+s?O@vb}t)LZ_AX!m3s-ihs*mE0%K +evh))P@(zxL?BhZ_zDhQ1DU>-eK$9k4c_L*(-v2%^yG<``GVtxzworyv(@wnY?4Sj3+S7Rd<|yA+ywB +Xof9_aV3eu?tf3x=T4jNZUZ4Mb`r-06K0A$HeR%i!@;rWjdi!R=#22u3iz@y_ZZ;x`(L$Az0SkQYL=} +rn8C+#{RwSM!nj*1*?Z)L|CDtOA%QzDv5lKHFURNt?yC%2|u%!jR!|M}PiWCGfCJQ&#+kw5+i>d}|W) +&B9d;x^XN?FMV@mek_OQZZ=HUrHb_2szANzore}iP>_ +9u=0aDBN4pdN{XeCuJTg>*Fgi9s~vLXjM(I2Zr|Q-a+qt>_L5IgijuHL7xT_HQ?Yoc2KjMLTvu_i0ZG +F7UEDdh`P??m$?6_~Cww-^NqBzk*BfPaZW!M{i|Wf~Wy7lr4}vhje +k+-5WOGfzQh+&ecH|9K8KoA>i!5PUtOZB +JOGq;rPoPuPPfG5vB71MF{Lxe|m}fTyXu>NF2*XIh?&Jd^UT-GoTsT{%IR{3euVK?dET^AGI#@Kz`^*946LV+ +Ge$wAcph#73QsL~O+HFL$1zHD}p<(TvDp~M0dM=4#fH=fYf@c#3aqM;_7b~_viI$3PMGpRCtI4|+8j^ +={L!BW6f0s8TUveqI(+RzE<)Z>itZU%UT)+?tlRdCGTs=Ew^Eyi)Scjhwfwwn?OL^Nm&2~7hI04Cikl +>EcRJ#}u7t1(WjKFr`&y`2nsKdC_~QoGDA}A61GNWKDI{^n%r*-}j8Z$b$E{3Lf>)O{Pk}| +i@dc>jxD-TD6yaP7tk~X1H?{{>Jy+v4)R^5 +P((Q}awIz>>=pi2M584VcgTzTSY-*V(Rt<|2>TvqKhR<|Zr?+RB=29*qy!RkE=wURr2thYN2PF}BA(3h)BqkP?vTj?USK^JU +Zen+o39yu(KT}lr*~lA`WCLF;EGj?949pZyx{@+afx6Si^C_%cIWz2|k)(%SnSvmGC?QIlPL11s`SPV +f)X?9#Q$lEDi!54QAVO&daCd+yqeQO3afEXAqdT>P1gOrc(Qs8&o9UnaGz9-SHWrEg#xclYQN}SW@^R +<@f}um$*;3x&x45m9%|)$T!$6F!M-ZuopL!ya4@HhGpwGX3Xzqt#Q{z8~`z%OULV@S)hVFmV?LN)NPJi&?q8+t4ps_5BW2ORT)yK&vIX1!A +frNS#`DPPYM2&n6fXf@HcR+hN(MlS9lOq#n9a-R(K3ZK1W=mJR;)@g`5xaElAt1=F- +U`G4LmQ^C@_r2T0bC!zEP@RqcK8XHdy{uK`Dfs5GMee>N$B+9WXZ0y^i)AgTa2<>#AOU?k2O}9_u;4z +DKC%fYb57E3!dEiwvT&LI^+Zf>4S-K>XvYiW^uc=1$o;7SPze*lqIyV!-0A#z>sbK@!ABT80x+$Z2L- +?Ffde+PDcA4BR3GQKcQyT`XaG$`Ufy2V3d`jC9C8yH;oB%I*mGLetAxNMmLPYH3Sd>3=HXKvJm+H7yN +m^w+avF_6tfBzT>s(SVRl1_QfRyXeC14s9}q!tY8z&$bX-Bcsk-H{*Z*C!{yGmxV+--7&)BXEF4Rc>Xq8V#vJJZ +!l^6oZVfv8V_vBr46iW&e?`?>`YUxYw;MceG6@L+7%=Y-UmH&eSN+%$M$v#su`Z?amBi9S(8lVF%tF= +PSB*dtZF6Ch4;qpV0c^*E7aHlRlU$-s&^&*FOgFo$yW@7fl+cq$i3hRwYv>;G&~1Q=p&FAm3vDh3qW2%E(v7WHAU8-#Eh~(|Nsxg1E= +!dpOxRHes{c8X>iCpoY6>~*Q3Oi8=2e4OYg?#x5#0pkK~FF|JHN)V(7%7UxITY93=+X?T9%0{_U&0g= +P?eUfL#yu26nwuduj~Jgl2bV_H5_f)w}ayU|@q8iSr}t`ywxuIiH3IBulK*@@yf9I&Nb|FO_herA&q1 +=*MTD!UG}X^u|5^bTBnrOFRm{Lln7eLqby#(gSbQleK})c6@uv5YRVifREBRxG}r=efu(lzIs~#;QMU +HV&Y_mcvP3frs1#Y5WxS+jUQON!m(JNF<#xC-#0GZTzdK0IA)3|Y~thuJ!+tiN}ie^nlQwxy8SNUNT? +~{$qfl6&r`>omC#4Nngrby%8eiI6zxt4J3}XZ9R>uwxdk(`y%%n!`xskb(m7w;Bd(~=DC!u}h#|UMs$ +zUYc&=3lUb+t3?#-E^GCHbu;_V3=s+&VyQFak|%kKp<83#r|C$j0=3M|tkCxITXQEOQ}7 +}ovux3RbEji{LESPQITZt2`K*xNR0<23HVDfpHSyUI=A9#K-?Hly`b&!0GM1GpbiRxsaHqHI|j3kOE1 +BR2dNB?5Ue8d4wha9{ct2H=wIGy&BWTV}fGNO7HmRi~U2>Z@x=rmwpu$X(}Or78h7okL~5R;}0oIlwT +}#6wtjZ#!v(%2GQ?nHkzxOk{jBPg_hPet$cZX?WtH1jetTVJ;FdiA_Rwuxb3C%+PF71?cN~mg-W<59* +OQwWsYTWwir`>NLvaOWQs}Rum8XkvyG-nRflF>B+=eY|tL6^4HAk9v!*79D5q4Dudn92$eCy{j4KhVx +??pIPT7kl~UP;`A{WA$BA})w93n>H=OWWLPtmMA#H{0fEd_yg)a%&1xB81%~OmKMDkd0Vd{u +(h-@#Sks*uIz4dUoD90(Sco~4A}ya9_wgqQ!|2p`^?udyF#r{oUv^Uf>BOOzQsovIf2zj($NOV)k{Vbcv2!xS1+(6Ye3DZn;f#9{yM?oED&wqNUYPFuc3nS~N7H0CQ(0Zkblo +mzugc0CQY#)kww=vIu(`0mB(hO$nM)p5p;BX!$xMrEu(Br!UcxQTO=C8a%RnEy0mrdDU?*T}h;PGVw% +t!jU_EA+d&xQnbZ-x^I*E%a?>U_}>N=!mGlCVC +huyM8v&=&*(6Hnx7H0{@>eHCS~A9vc1y;#_m|i-5Zazcxcc@|foWM&q#Kq{dDwZ2rNUbCBPcbNB|20y +T>^?E?RRFdCIX1L_Ec@mJAhk&ireU^?7OyFWAuHVhWh^pp#Ja=K(XdY75iwq;!v9 +g-{;XNZwvPD_*)K)J&69{@gLyPsKbihjSDMw-E%*aowv$)`=fOI^lJAxY?Rh^)zq!VU?E0WV>8o#+bz +Cs!-s11@X+yEK3btM&39AYPO|GS5 +u{FH#}2T=Hyajchzc$5^cuXI(kp_+u}#c+o}$9m~R9C7_OdA0Ms;u&NzJ?M!2t~FeYf`ftlfde$J!CW +v`gv=UDmkHQ#BeF^bL9@f|(ECJ;c>nG2UO>pRkdW>Nn2w}`!`Cxh6?!*kq!jCf=w6CsU>fyKd0C<{sU +yV?U`o}-1)X4gJm1QnlTgTha^wE~1=#Y;MjR2E)8>d(~KT;#-{l;cE`rXw;3&&h2B^&?g9$hO#GDhazm`dUYR%WH)N-SGYxLhrmpn((IJ8z`t%BVF +Uov@hS;9hhF)v%7zh$z`z=5;{9v@JsNg*O(;`p!F(CKj(n?Jlc|dy>x6?o@jceb7r*v^ct8f59lsB!! +mr)8fOOD4MUrax#L-FPyxogqGVCKWW7Jto#hYpwD1#WxjGaReO2PYgujv`SW_Y6y*3J`KPl2vtn4Q@PqE(ZVNQt_VQR@B<^8)=m_N&!fEGaEd25AEO`t`RO?JP+hx7_q}84Sx_wPLRuE~mo&3qtSL#wXb0}C=T$~sgKR_3aTx5dg?W**Q)NPJP%JZ1JxNMU%E< +?8%0EP}LDBL-R`N8YQw%-aAW3WCQJMi)gW-)g;x34_OdX_sEjdk0z|NcUq-)1%XV%M;BG*mWT5)$6M% +Sdw*4h6G}Li5l}PdNu_MBG~bZKR-k3>s_Z +A@(t^lmvMy|hrF5>FbAI%c3)w_9-c=pUQp>c<&_9zW(r3G{&5U@1o!~)ZN18{w;1s?upK`1!gcx3g)p +)to;Yti96zpR-@+USe(14J!HZOyGX-MV*YL?5-p)XU_j0$#6vGbunsxk_JoYyfyQ2@6aWAK2mnS!LsSB)vL9&%0006R000{R003}la4%nWWo~3|axZdaadl;LbaO9Za +A_`ZdF@!=Q`<%me)nIolRVgFjGfXxbTok(0&XE?fQilYq3J|tX>DJTbn4v+*Xgu>dw1_nG6DjmP1__B +KiERL+x>38Z-0oVu)VbniArU$h@i6b?Qi)`r}N~=la9t;D>T*&MJYRfUi)-9)1@?!tF+1xWL{>NV_^; +0CBmz)3--^Chn-H8sB*34Vre7jC4Ja=_SFu|*6;%s1==Mom-g+j6J;{N!e9jZrAU^zGXR4KC&vfl)5# +d-N|QT{kfIebGeZZkGuJAIAtO-Q(gtIsDom%-NpTJVelI6CDjh(jvjJ>vU9N;)n10j&`jC|a+F^B-5M +oiJWTZ&x3Zf(v#zb*A4m=MRdodk~w??JVA_s3h3cn60N1?#gO%pMw*)Nz-9OC%<@idMHba8e*Jw7{~_ +&<)u`-lGO{A>~yoL|%z`_qFXz9bKEd^kQCPscHVxrT*K7{SG>lgFTFZFJv;2vVh`2#Tx^hca=OdOd(l +QUKH(Y(-2P1~6M&y0FTH%UR-&ESy*Jqt`$|B~dj{Zo+8!PlXka^gi&uT^Qyv!|hC7VuQe+tp-*DnyGZ +{EIfqc7o&<6j(vDJIXfj|T8d1*6*JQN`I?w6{;8`aiWK#`V$LRxrqgpc^2-`GD@i%?pz%bhONqCQbI= +alvzJ2OJi+5kbIk8U9mm~5}-2SCXQ(vi}&}|636QwaoqP=US(F2D+^fox&-uGiFDYI9LJk|WH +S*3%#c!c$KRsoy)LhCP6o~iA?S1Ne0}ed0dx~pSSn?2?7GA*ZP_SGlZS8KYx@9_%2<`Z30yk_t0ihSP +%qtfOX(PrtBy~a#wnFCS#SuLmaqYMLoKm|yu!lycf~7?+aAfRfRy-gJk*4r+cG?kvmT9A!zk_A0& +@|S(Igdi%rZ0AbF`f>50y%ZZxmKVavWOOJOB&5-S1LuX!t6TQ0%u!XgW%5X^AQuG{6C}{7OM{h=wn0U +Sd4;->FxQdh05hC($Dj~-5e-0ai033GJMer)8s|~mBin_`1P@_AtwU_8TDaSX=i$oi#r~WDzayl9@9e +XAx1<%ZEK{pD8dIq`9a<-Sp;U&V7{b`aZInvm;zx~Q6neyno5G0t!N|3Ok#7MbZW>Sa? +y(8sjjf;6AtPv95Zs>Y6n{Vc31fbS)PlsShwgUn&f=lGC8J#gG|HBAAZ0^b +hVVpl5*P6VBw{zRc1JC+~O4mOAS4aqDBf`1JjcUB&e;N%S2cVRQt@j!$nS_^!1|@cG)&dDF6riFsq8x +tGY6HZ+!h($rp;ebymrh@jHqdiQcfpyg!8FIZRoe1L$@6Db=d(C9b=D+AekQrO{TJ`r)P@1jNtltG#-f2pd>l5j1mSz04 +0x7e*{FiaH_0dwYBJ;8t(A_JnT1?#5C*%XKLq80*s7(nO;X|ITDFRC+O5pzZeCCce +0_bc?vJqL~LDVyW9u6#33<|J6=c|R7XrjUtVZ#%;bWdWXfR5d{!h;4Ccg@k|~g)UEwh*xkM6+Dsdw{8 +Ww0KUO4p=I92Hce-zr)WKyV6d2NhkO4ANk_l!C>xI!*y+@x`M%}y?PgW}{co;TOW>sfd>@fW>5SHEyK +YEiJ +jqGk}s;mp*Jt++(XV`zGJy((R!v4GH$J}{S`KrBOqx;I}ZLjZY*dMJ +7jI`;n`Icfu&q58&D;0Dq{S#IT5GUX~KH$BRrdv6FG4SHfTH>$GaqF4_Fsc)7LaWRP+2xMeQ^-<~mzs +sKw%8>8|AieI5gA$eQ6#YB-WhwC7ZavxX%AMHCd-*D*uw#iSRF0dAAoj5h{S +5O0g-Jzc9ws`JS%*7YMd{%;~?$XOGkqDbC-%BR^YWPJcpOa8n0*{bNiWypbaQN{5HTWpTkN-4`K0LQu +`Cm{=0|XQR000O8MnywZyR?Zba|-|f-zNY78~^|SaA|NaUv_0~WN&gWa%FLKWpi|MFJX0bXfAMh5DfR7omMHthcP`#wG-O19(lhC>f`-jK@T_kN +S~9vMCyl8Kn|Vt!02JsUp5H@#lJ-|tEGwPH%ElvaAt`)By+^)44&k)@bcIRpGcQ(h>d7mOeR=_%| +$^Lw3y~hDl!w2TzHCxevdCpAvF=oKS}1FG+)-w3#t}5AJPH4m@4-4F>#CIr +;k|y3Np8vPQ?C +Ev{MCqTGTpGGtQ@q!*wZlfB-HcjuR9=a<>#-`}5Qzr4G6oBew6=Is2%yVJ8%G9nQz%iI}x|7N&at%hL +X>}8c}4qWxV!J1M{qh7B!Wiyh25%?rSKcd8OrBJCQn5d*mt%RH=$2| +fc@Zkm1l?2CA@-rfl6F?$X&D6LU;r2-X6*#E?YeR?#QdSxe#(X{$c?7|;Ttd7Mh!rhLB4&i6kEwRJir +y;o9sWSbjoE@;b5ThGU#8V^OvXTN#Yn-})KHfU1ioet9f*zDgn|;JWTJ#MGY48>d{wR?HI`UdV)MMmB+)S<@45y0N@Zw{hbA9XZG4w%r2vL&rD@FiGrNm^=isv~9 +2m&p|H7EeIen=1CKZD9=q!19R3X)6HV!{GvG@Fe= +Hcf;eM{O|J!?c4?GSjB~bBX+OnqrnP!dU`%1A5T%HW-3%NJ)!aA@>NArdEy0FYcLUR6vI*d1S*%z-8<5aMl5!w^F7zu;i%rj@6f%xXb6G& +=g~6jzSl0=Xp%7dt+Rcgm^78V%u^Gb0UWrEf6Rqh4D!Ks-`c^QsKqO;u&q4S)%Us~69YuJ-b*;$OR*4 +@3NjF4P8(>3-gzVVYnwbC*Tb6TP%=7qDE1^1!M`X^xL69qk!hl46EgFE~i*C*Ah_#OH*F1WS{W%FmFW +4^8v6>@`UW%Jr6H~1S+ZI>`d_!Q-dxh0~v +^5-t|52S!`5a`tS0Y)^|ME=o0DI&$V_KZ%*g2gX%Aj$Y^WUH?f593jpq&KL)u?XvfUS{9#dYx@FOgUju-mLhieRA3rL5R4P>2h +i6-Fj#OwlfI0||Sjsz3$@yTB(4W7XgP*acV$1#nnvc1ln!v&RRACY@@W+DYSz=Tq2qVc@!bmkYlogQS +A?4ZEqpfEcj;`B>r*bBqnXwI1XX&6hZoY*zGBWB{ViHG;S6Rs;hOAbf@G(pK;ks&pIyNYtb_&0((MdU +1zX7Oe&hkVQ!$dv{@4r~nN&@30@9J!@Itg>WMf#6GUJgEb2Uj^3U=X(Ep0>Mr2=IfZ!{yqW|#m(%5VN +@35cR0ZY3y5AjTD6`A6n{r4&YNux0m*(u6<)Q2$KPMdy$?LC&AI?5}h}yzp^ev}PjA7!NPL4VT!901> +9VElg4d{DQkCEmKC$PW&xbp7KQc_?Je4&@zSpDNRM(8y!XJGqv^*_8k*`T6Y(C?=rFh9Jnj$Y7RIu4J +XJl(7(EPPj0f&Vus>!sbP?~}u$&HBQ^chwj8e}leW+NS!v#zQn)3Wyqz>2ZS+_aCU^2dYmVkQkSeq*b +&U(i@AG6SZCI_Q=PNAMI&Dv#lYwOg9cFG$_(-Yh`9m262Y*CzUbwq=xV@3^%y*Qp6qC4lBvgNxX1}1i +!o>M^6u*lGTDw7GMlfE|SL+x^;aH!#|v2&)6D7;Uax`UW+ZFjBs+BT{F6HZ+7>-~0c6gHhP=?}?qa!X<6 +-{o)>c>7a9qP{4cJ7v$xfL%XRkzHk`q5Qhh}(;HENDOMqtUlD?RSnuyW5(SKU)Y{?RpXgeDS&vcPv#G +-r3LR0D6x60&?yOAEMDE1FWi3(P!?ReN7|!4%V^yUhG^-5sa%Xf8l;Ua{Wi9~>%DM9Hg9V8$g5 +ey2ZjzTg^zDw!kY^7Y_5tM=nssMh1R7y-rt`?fK_9>f88(DY~OR-=dcfBYX65He>@5;YbYNakmn;XG9 +HjrD#Iiu&&iX6gMY)+AwqN56>!{g(%`gQpY-;~1zYjL7M&S~A_w5y9DBiAJOP7pE@ozVET-nhaD_LB9 +V#5Ju+7aVUR^qR&ODuRnfljAFI9|PZR+G8M$lx>YjyJ}^T|FNDMp3)ZMK*j)GqPmTT&!?A +Z9;6P)t{52QUEIcvlayGjnebHjbr}3d_hWr*k!e#aDkle|K^A;^f0wvWuTPWm>y&kAYLFs&O0 +vVXN)HmVnV=*#E81UO)oi=>h)q0dKF-9+KG$H*?V@`J5NP2>=Qx4GxZA!}$q2(HY_u0s>?QN=r}yhHYdwL>2Hg&`II_om-`izaC!}01%eTOqTnVNb;U~)q9FZ_D!OgIbmz^@R`<)=)w1np-QA3C +Jvx@QerlHIfwt^s!b(j}H1y7KrJ1>Q?3Vmj_TGDfi4L{BeMthNCf=2s^qtx^>}$W6b@Lx5Rmt$TEcM> +q^Z{ym$xT4gHXtDCQEo>mBOoSx&boIqYsG#hBGJgl82|@N}F+ihbe*s*De!|MSM#Yo*PmECljR|5QXsb^*u*Sd(ha;kHw1K)i3Tul`#(iLo9H +k`z(&_@wBwvf~r%sMTiQAN0#yd&nYV(OXet;_0Gwd<;{2t)+ilG-p--56V#296V0EG2rPW|1-ws*O9e29I&>wb1c@bZw@6aWAK2mnS!LsS^8ski+C002S=0015U003}la4%nWWo~3|axZdaadl;LbaO9bZ*6d4bS`jtw +Ny)Q6EP6J`&W$GLlcy&P;x<$Dh@4&f}ltRdO&F9?9L`Gj_vxfFY +(4v2p3GMM5tIVHK*XgAqWq~A{FmrEzK9q#_~9$u|NH;1-0njWd!uLUbXnHLj#mMi2rns4+RLZc{XB1q4i +gR1Rk8vlBol{)#NLO(<^U@bQhQ1d8e~xvTqO#T+&)vEYC&Zp`v|V^Wy70?W)^<1F|7%p{2ya)B5$##T +l29uO-#|mK#HNkPv*d^!n%?mSU}gkY1?V`LxvDHrCn`R|ma04GrTO1b6hR#X{&{P|}$SJG7$6eQi>di +HPHrIwnv_&D$B06*p)Pz?$>dSC{Y3G2WO~fe@d#42{AVO`s+3@(FpfzotdU+dm@vVJ>Cu%l`vP?d`@t +?!<6)48Kp*8*byvb%3=In>BX#Bkl_Q-&s4Rq+}7<8lYYkh!+VhapYnb}(yTe0{)G9 +z;{23-2T)4`1QY-O00;m^MMG4*Cl@-v6954IM*sjH0001RX>c!Jc4cm4Z*nhkWpQ<7b98erV{dP3X=Q +URaCzNaZI9!|k^Zh<(Km|$sf~tCoG*6@gge_w&U^9Ni_L5dV>6IAWRHeB6sdHRqZJJ2x2InEm83MYu> +%|;U_BDMySl5oUY@FM`h~c9c_oUrteWjo^xfUnf8vwb?Be2LrsUsxsXLt&ZTnD3J^TCMGn;+Y?)G_C- +Bxwg9g&U{T`O*-$Zu=<+G{B`Jie}Ov#;pe|K(~U4pnzA+!QlETi;c+7S(Rws!oeL)$YW-RB|CSQ7&>N +@A{g@n_d~McgDY98T+IC-c>v4p69h}%3RH6L^NAhO(#{8*XwXfSoOLAo*v~|cM9ZUdKbj1aB~=z7NS@ +6K37`Ox4tpoU$^k5hQED>vUr{E_eg8jspE1c;A3aIS29QO&*aBK?mO{{p8r9qRz)4lez!ZWU3Zb|VC- +yG)VbC$Yw_@w1(~+DA7s(ZnFz?|dzJ6C$i>D<+VtGuM(wIyRbVSH0c?Hl8ewaY!1cZ4{jHi48!A8UVL +n_{1+qlZ-sJ`LZ&fK3PExc=L7)0aBzJj}Z>15X*td06fR-&pmC0-&N(mHpRU^gWUUr}XusGAT$Q#rIE +xU!-!bUYPrzDbPyUVLai}ns5S@jZmQ_^o9A8^#FYFmK@xSlLD0UV%cuiBJ=;jB+;wJ6O2dPx1iP2Bc`WqWLLLEOoVrQ4J@9cM`YZb^Oyv9A8;9}9* +%t>z5{i!Bv}7QRb-;YySLwninS7aq7wIc*(4q6Fg^Ra4dng8D35yp1Dm$9JCvDSzy+oWj!c4847p%o1 +hik#DvqM8N}9gvP#eJ2$w#nOHWsi_Sa+xTf|tj(4cf&9=BS}~VAqE(Gaan-J+Ja+A!NhBW|dH|N#>3e +?O%CHg@X0J9jpx{3(oLhR|z~!sE2XP>HA1fJgL#o1+lZR55e2t2R~H4)9xqOhdM5%NZqM?y8}<*+HL~ +vsr0&U9;K@8DhvuIlEjxHJpTeO5WGq>f5%Nm~u)TdE9 +8Gpv};n2V%*~GM@cG9v9*`;Bl%`C~n}mm +m`lHi19u4y8#=ap7HjD;pL1|8}I-BV8oHCJ34aD&{3i_ROk6Af}iMghuu%o{S*%#AtZLoryG{}x~7x&p*mgC>JtYC*x!Ss5>fbe&QWzQjg|3m{DwH5{B +cmq}5XssC?zMwPa|9d%^ukTqxc6w!>E{cQ=D0U_dkNmU(riUw+RtLt+Y +Yp}5eCN->KQ_y91f$@~gcbpWAqp&_UPl9Hu$6=uJ2QAF? +^_$gF%5^1K*m#Qi1zLa*yoVatf)lu=~7M%|)#mrL#kijrE3Lfc1)ESnvJhy{lAd>tYszN>$yug6KFET +R1E@fq+h^rjAG7XlK*oFJhcR;~ObW?#H;+ETpMuGs+x&rS>A~yvh%DPDeM?prfL4qKac4vz`kU#+7GR +dU#zjpU*v@*2aa|C1ko=bJWi$JIf(txps5i4C-gJk>Y4Jf4kVa1HglJyb9*Ckqf=ru9N-XW4QIbnzfG +{6?AuuhkWFY4M$gGzTMdpWe~fk`TkAN +L>sW#{IRNK@YKlST~k+tJeAz`HSA}g7nH)WLc*7QRXl)2g1$L`4R}~JSg>A_Mv7PlO3W>-VsjE8+`j&CN1u?Gyv#x2NUSr>xbHb5;xb*Vc~`7lrW`i;WfQG{M +MT<5Tpr-dj*Sa+G$!Lz +LyApX4#9d=Chl9r0VH2U|v2@j|?O`EWpap4uJ#|9W?(ME%0KmcYW9gP!q;^+Mnc!EmZ=gH;SP*PNp;i +6%k|^aS@B+lTU=f=-cfusN`t8GiAjWNyqOY{Cc0d_J+Kvv5TqIpb(jvy*&?GAM2qfQok1fJqoHk_QCp +RO=!3fl(YW?2u`liL*lOaCBPuCZmr*Wf?>GgFKEZFOlB4PDc5d3`P`c$~y>Ouw%F`^0fBY%@T8Y;|G@ +^;s>l)ONp8cR*Zy*C7gxe0fLK8?hqzV>Q;;_vHOq-{2VEh3SgG!{Ykzjc@|(O-4wfyO-JkuyF*q_vuX +AWXXV1O-;H^^kA~(`JL#rAx0l@M=WM1C-oI)q2Zh9E@P2}Cx1S@HKWRf_c0X}D?a~Gt%7mWUPcz+zY`hXmh+>mPm`KC5tk~=ojDCgZnE$liu@tzrs|c +v#Weft-ehDA&HjmvQtP7HNVWj$;ldJJP@tHaNH!dE%I- +UlHL&p@LfH&7lwDm)LvDkCbOI};lm1f9%id&rH)F^kW+=UGIUONEwzNoyx6hLaP;C;#g;Xf%eQQ|pal +ci4MwwtZA7iV8&6_X@)FV69XDh+G%e3_(|$Fpni-xSCA7YFLwtTuXl=!j`sZwET!QfT}Zf5fd9Q*^AE +=e_lP}Ipv3WC|x}v-SHv(K*(;;FC=2DkJfm;dh}-uRFead+Jd!>6js)b9?ATKto5X|}6E!q@V0qa%F&v6;L#xJkTxHk;|v!yF5T(|dltQZbK;MK+b^cK!jWKj!_DRilb--_RLm=x +i1u(Os@Ojr+~#myt8dd~2FqOm%?h=bMKoA->WG0-HhqGgUD=i$>fDL9eY`o&CD1JV0tpk_^|J*aSZGRp`456LGjUNgK1^wL$Z3)hWI2I>A^*0vi6XbG2ATX4 +GwQS35#*)&Tx-6LU@s}0oDM&1@l&@WlIzpcxm02y0#7hFEeb!u4n|-J7&~BQ0wxUB+H^f>jJu6rQJ!D +7{OU|&uVc8-6dgs`IVQ6-+xV|?b?Bb}2zAl`?g8wwN9TOF{j8Jo2<;={|}`wE +RGCEkA177yXAKSwj$xBE147bI)wHvv$w=O76Sd0lXiUzp{HRf}tBo^aC#Yqxd8X!HOaQd2kzUxu)6Wo +0C*@a++j@~OHZB~SY!XMfeiZJdZFyZ~2xfa%7UcIJalgnjAtDxRD!(3#)!QRe{mk9Lo{#1*%I@FZ9M- +p(89>28xy7|l**@J!cS=3Ap=Y?^28-J028<1qOc9b_9~DLSKy-dJGl`^j}H1g&C +#xEFlW+d(5d~}7(8`CsR5L^T9v5vo!qR1uRt_-N7G$xBV2-S_F1U(rMtehFed~R9kp$6Dud2wz74x}e(%q`>)}elNkYW<&KF*MXfO +t-qkFF}?aVbYyyt~C^)!J!SWzx6D97VPUkvVIDyi{i*-HHA1eyS0yyKB9#jkzAi<~|@A_)b3ap{RUs1 +BavWe#{uc-22OcPN&?PuLf)Pr$R!!iQQGy+X=VCl4Cr$9)B>o*-W7B3C6eV3{#!DB2yCo5v$e1HS7vZ +iG2-$dAd_UAM;<-%OXE!ajG!=fC;&f5of(i8uZ>FX>v%iYiq`lf)JMVyVxq*_y6ir=>#MNMhZbi!I)% +YuvkP5At|uRp|=*dMPe-GKkvO$35TLOp)j%9|D>QZB*vvSkD+<6ycWlw4H0Glwxf~5K~WVdO9tx&l{&j#RJj|+evsz*YE1g_rQIiX6{AZzyYTuBT@b~$g*tlS1Y6 +wOw&Cj!VRC{Nj^Ov(m?$K01WQvmT!4(B>}?mRLo-?uw>0TWC@nLhBS6xGoni_bHLE$)#dHg*eL^<>jBn| +GvIXW@E1H+wjEob{8N2kT@V&+>=N~Ygoi{d%;A3BsR~W7DQfUWvN>CbF&zBLC3Qqy&UzO`_9I%tp<+J +U~fCpn#E!$ik1268wkGhxD4M!bPa^zEkQPspb<=b75hkZk*ml-+QIk^3La-BH-Wn}-g3wYd-_-o#`}k +2pa^4^JqR}@V!5^32zG;Mr3qrzig~*L0IV^7^MR@XUif|CJD6$<-e){uez?N8;;sFyJ0|rghpWQqnLp +#C%^%do?>q%FF2(Qty^qh#^&)T>fSAykkn`{uc}#>}p9*RqU-;)p244~l-_GjVh=$`XqVej^L^K8^m? +@az{HUs7Pj~z|j!Ajt0ezdf@oCR@V_X@$QRUY>Lb|?bIva>dtogQiP!fm~U-PyzweZOG)GH|QJp=cSM +X-Ov3W^gcY9B#Ln`*@im^ck~vqo@s0-^@<^GmbysbJ<|?oO($bgxsnR!bgxop(0IjM7*mCIPw09OgMdz26d;xiAb=!AS_`zEmpgb}~XHgTkZKiD^9DY +jm{{c`-0|XQR000O8MnywZO&G#2g#-Wqb`1akA^-pYaA|NaUv_0~WN&gWa%FLKWpi|MFJ*XRWpH$9Z* +FrgaCxOyO>f&c5WVYH4AMjFz|p0bMSwlDZi=R8+9L7p9&K72TWlm!OHy&XhyM1?P@-(fj*Vh{u}lr$n +=ihh-@x_NHDpFAy}p6kude^#l_a^ixJWGiTch(X#g_~#uZ(ud&%;lW%yQ+RG_o#`u(TISJMcMzLl0&J +4=vCo?2ytxv9hLwN>%Cn8MQPvt!+`L<=Z_xYmaM&#*4NRJuvJyVpe}4S-^#f9 +9*zKAIgTad=NwPvX7rnfV%%i(+!C-uo0DZ{aS&kNALr6k{D3@woo7(MyqL_)_WLa%3O4#Iz5|Rro3ra +6+O>F~Go7XhLCgDNi3g&aAm7mW?4vWB +I$?8nU!9)#x%VUrykw(Kznx*}-&gQ+ym61P=~C!|DO1TEVD;q>j?Y2aDi8|L9@TV +z)DXa^ZycwnLdfM>gKe-Vy(L@x=9AFm;7?G)(g(>>8(C)rR%zTI)_fQ>7$#UTCQUs9le}3yljHdN#IF +C{+X-^zUd0J~`g!JBq2P3#l(XwH&_dJ +FKWNPIh)Uscg;qX4@ScKq;PxsT&Qw<}&71$2G%)@?g99v?-`Ayc2j%U0 +xCFW)m36C*+qW(HM7+xdE!v=1H8h@KD2p$Kui?5H~Xk9N5%G)u-XvO{WgE~nGldAhZ-aw&9Bn6=7a72@kDi?+B?T8d?X?~ObQ+vz6Ph2#pkRw544O +^$j`hZ|_poh2bRA-sWqgw^!k4KK#7eKBgkcbr@-%1T%b`HDMwS@}qz-BZmX%m8)*AFv|L5**I~#XDH> +2;tP53N?4OZZ0kKzk}|1+%^wT`m)$my1|46 +i$}qBdY~V{p0!&tPY8+o>tkCObYWxCFO9KQH0000807gYaRACk;xsC(?0E7=Vzcg20wDl~G379yZk;1Sz>ta3DoV#9S_t*=!c=1V2KW?kZIYl +BPh9MyM2&DO_b+MLCNixBMvahZiX_wd3OGf6H1nUu6+lj&%O)RIqA2L*N2i_m%NO&W9@eY?B9)1m%wxTW--;1m~)P9{5l2{aH&gq3qpT90_$2GID@VlWGn|4g(NZvYr&ssPGG~GBFm1%$mt(W7Wi%&)NZvB0v +C!JM8$LtC-4i#jJ#%Ab_uBU!D+us-X}i+)m)1LlS9)t7~f)TJHCY2iN;Ha9Rs~;6yrBX{PTfI@F@>3T +s%qGV48)d^fuP@y1oR;pv;7#+p5UKQd=(t-(;JjHefj?lEuov03H*#wE+0-MsQ}~a7*UgA=on-qI>I8 +dEix%qisZSfmhrj@k$xLZ8>@eqazPlNxU<+9Nn&MA+{vV0hNi5tWSwBfLD!NQW{c&#IW9>yMg9a>sOm +RLwJ8eN6feXLR`yBN6LMG-fh6|WuEkZM8-INW=c04&|k6bJptTSH|Sd{&TSX;pt?H+d%a)J +~jllb;b3iuB9yrV2D0`HvmP@Ft+%I3cfNRO*5&tTDk`u%hyZ~uL!0DKQ0xK>jHK4J@yCoQ%I?f+ +Wf{e_>CIzp&UIBU_!?%GA~Cl&5jXH&?%PEP|r_kuV}MMa(+(K;r~m3$md1C%y(WElj`s#!YyU@wZM?W +6T0Yj>xBRkX@NCy6GRg#0VwbQYiXno#z_iUC;#o375vJlN?4Q-lCBL=q(M)o|bhTy`d9?$2a?6HhF92 +h3+germlN;E06QVX(7z;A#Urp^K1^KhU}doB-BNpVCWuoak?|jFqXX?wh@ZGO39URD3!t*=-3nSQ;#f4I3@rK>NWe!jl%r+7GXopiyTV9F^m4;8Qw1SIv?5-&P_z#; +l9P%U^0%zW5mmD>3e-zRq1lRatQxh+7pZLRqwfpKNRZz?Hr3K{t_*+Tou5R?}~AV{9>2_9C^o_Na!MS +I%{#43ryXWAs0w%<(a!7c_G!^74d7p>S+Dr=Wwp@9JxTXWj#(-&~~t)(%6QC1_>BUB4=Q!DgyJB$Kmo +c6uX(BP53x8dW-Gupq~1;?t%Si3rkV$yDoezYiv9vnO9KQH0000807gYaR2xc +j;duc70QCX@0384T0B~t=FJE?LZe(wAFLGsZb!BsOb1!IbZ)hk-+V35Eah&q1ieqm!es<5@x`*9uuMN +(br`&$g+lp@y^q&0xGI?krQ+Hhyxl|V3DDFq{U}}JmJ@>zO6n_9vO9KQH0000807gYaRE(b4LLnyr04 +#|B03HAU0B~t=FJE?LZe(wAFLGsZb!BsOb1!XgWMyn~E^vA6J^gdsww1r@ufSR3TdumI9Xm2i5CB0*zILYV%xNaEL;?@M!^8W2;J!LMI8>`TFRJso+I8#0 +XZU1q@4S~o;)kUtLZCR{}PD!T{fHWz0^IlvR-9= +HsEE=8VFyrh-t+HLK)%SIMx!b;Knz~Wf7rIhymsNSzuR(UTw~Fp6 +gt_z3DFMDpe<1tBbDNw)01i&SAveS-Pq>kGAdlk-_AnqHW=qM^C@{<+IeR)vT^fi@eJA_SQ|kQQKmhF +0OQy*G;->N|?^mbY18YrZ3$Dk+1RLZGB3;ty_x<8cZ)XyRs{`S<@}nb+ZBNXX7AtT~V6u(52N2cr)Hy +e_H8nSJaiAX|ku_=cUGx3D+~2e3qZWe%HHBp1f`9u3pup{P}&o$`Hs~9FU$(1v5o$;J&Zg-4=h-`J1h +7s6DqyFJNQs__0r>{i{b(YDo#tkuU=tE;x?iYxuHSamXDn(ev^)9ky`)3?9N+G6z_9?J +U_04{n+{O4b?W`VC4IY64JbKNcY#o_`MuVIbw_x8p-gysTm41qYZVCM&*BcPa*)rH<>GSq!5M|&^!;U&-=DnsQ8r|3zSzXsZagsN* +axo!#G-(yHC0wFkk~Aou3l6bZpH$(3#L3%yQ(1iE!suau8KnXd%YN2=P+EmK=QA$jb{AgKJuObvCb5p +%DO{xE_j74Eq#&G{1!kPTUZpl=RuM4EH3rU0?@E1ixxJOj|1-~JgP2R22{Xm7A^1~-Ogkte`)IqR=1u +357}aCUCk8i-|EuzC+rs8&D2uWW}9{Xs$OJenVpp|mmjk27EwZvnTFu_0fw4#SJAxa_ZB!|N5ApOpWz +~B>g=Y|X0GjGd-DY60(?(H+p}E(%%NIvLpT)%`N7`B=ZWjY4acXY{)B(pBbRl%c7gq!qXK^br=P1+5F +4%TRJ|rbSKOK#u>2@0I7z_bRR#m>x_Seou>ySDVE1iP1F~Dh4eV=PG(gko-n&;XkKes|ak@A;eSUhZj +s%MY6r|df&S%R1*;h{=f8jJ**Sjj(=!w&)2AS8y8a;IybsCopGG$@rH{(XXbQ%F=Y_bYYY1ru59`L`H +uU8l@47cahh|KlGPC&zz!1<${DtPbFRPrlqcK7IAhfA`fFPxki +qR%O=O(`lH-55=dVN?3SL=QO?F0)k<3-3|Q(92ICE4inH-(&}<8t?&oL`tN{(a#jSOkpjMiLK_5bN;2 +QHgw8OJ4pGIib~xFfYq@fZ8FSc78F(aU}sPV>p5i8p8pM+an9g0CImfC3Qs2%Ua&!P +5gDwgYGKo5^(S9rbhuX*39(N=+u|UuwW{zr5cf!56EI24y0*NM4A%h69~#+5`o)k80X7#526tz;#4j* +%o@G@hoAFv>*PDMOmT}gJ)&EgR>(FfeU~Xp)HUF=r(YWGlc?7Asbi7^#G~`_vEnK!6|Q3^#*uHgW3`- +5Y#~ETJYfb%yzULfXQ?!YtD)ePlStVXChgnky!#UxHC!JV1zU-^k<=9i)G&~t*Uif-+R^| +tWhnZcq9|v!7epfiRt2W*hCUb@Rjbr{;S32IRM}avcqs{OqxlEZxlL^@;lWDN%OOk0**aFb#FK4#`Q& +)EYyK;eDO{cMqx56~xWz1AwxB9O~r_D}J9g1l6INjXi%%kqoCiMTA8lL=~$)45u4Q)=QtX}^J_4-3Pf +MR^yhYQePpTht?^Z5S*4?pS)0uJrDGu`u+q}TfJH;`k~nR+_@c1Ff42;G~lvwyJOFYng}e&4mAkBB1I +PJI^TtS`ZnK}Zf+LRJ91{dZRGShq?Zyr!+#0AO4jNZ+dhjLr1H)Mq&Zp649@yM}m)`$Hq(v|yA>aZen +@_O0~wLM%^@W7%ghPKDU}>F24_7*{iF%g?28-x?kecwmNEi5!Oq^A{8x+^oEv_u>0nnI8^?oG&YfY?; +|!Rz?}{J$T-}dRbQ!(04ODc`zNAU&WG%rrXYOfVVeK!E{jA=Dfy(*wnBYW2_cO^f?zxx^b?11?$7XuN ++*vKmAtU$(a*sm$Ioe#!O`od0Na;`O!F!{%rp25e>?Mt0@x<5SEXLeI@P!YN|hpkH{Qtf6q}o<97N_F +Jeyz6HJI}%!uoSdWUp?Az>HP(UE!*->x-Shig=auLiH_-1h*U-UeXCD~SOKrPHwEj2G;8j(1#F(9k!z +aeAoG4BPUuZowfA@91v)Pu4WqO$?oDVmLHV&`S`5N0%)3kJilE4Q7vUi$vBOtuF!{Wu0!aOUJ{Ph@e`as5)AAe)HjxZ`RJCLe;{GI)VTb9rY +n5J+z_8GXxcypWmT>E@FG4Qq<^kI8DI1(TPW<;Y{f(fCQL;C%$U*mTXl}YfLYYY}hIdEe3+XjI>f@Z< +3Gj4#7Eb9FGE`-Re~VD+g|e&SnD`HcLHt*glx3hbp0GF30kT9!H*82Twqz{oFnfn2%<+Xz_6?gaM9I=qAsnLmE+ipC%U4dNQDSK@d#%Il4-k!xb?NZ_^qS?PkeZ8v@om`Alr*#b%9K-Mal&*9XaHhD-5X+{5fgoimjD7d+GQOWX4TYx6kTg#~)h;U~iq=SD9Fbo?yZCP1+)N`XYKGan*yta)!hVOXi_GC ++bX-q=m*crDh48Mv|A92hps<%b0HTT)xW7W}weB1Vn!K2v0r*=W`^m|;C_0@GI8GF$m*ME~iWovL^$@ +0_hlP+A$S+E`%7;Vg@qdIPX$iMPrzzYsog7y}>P|8p^c&ilE-s0(noDldU`pvH$sWk%NOl*jfuNo2;S +n?}8$$G^`SoUw`C1SlnARxD?ibV)!2bckyGS+=_5x3oHCLK<)~vU6?EDEvO38Yv7?p>XSCO!}6=_i2;jPmEZ9w(67^Z&)C7d;uxROn{9VPyVKGxkn4g+>4 +k!5VIMxaUJ8WCW`*b2GnOki=D)nw^vE_hEbIs@TI^u{_PWT!Js%6UkNoL%;b;9Y6yLOiaJ17Kf?}Pve +J|*slNS$lv|ZnVBKw@0q@X}-pkYjb@TEQpQB+&;uOrvYq{bpGj+Eo^vM)IrfT3l7(iWj1*66j_9)B0; +mF%*&oAiRX=@C(q|HAG=fNgq7LEs}IQvZeFA4i62-4g^yt&tPtpwC1Ber=E7!}jC1q$N6ta?~qxhKI2 +h4AfFAyZtPI&(fsHs&<31WQ^GXuWv-lD!SD5T%o}hKyb)rYdK7eML6s6k3Mn@v+@2L!$sWv_ggS$=?T +DpOT5OCfd7uzhoyojGjd45e^30$(t`iaFf5lMf>jX{>knf8b{f*f)@q9()?n +J+<88pKBlnF6Yeh*4(R0s5@3>Yh!=Nz3y5sp5@QT6dyEC_b(p6d!THb7&g;Ba=gmODcVB}nZ>y(@F$v +}DVqD+t&ot9BR?{zm0BPPMJcI}Cb9zFTRvt8(2I4dQ_y>Gc}(lm1!4nE?z0G`+h+SUXKycOEC2PO}HA +OF;23+8?h3zQ|iVDGhMRn9bAr +BNym9rs%BNk0h-Q*y`=jX*01=@_!<-4a?3<)jq0u!SbMB8942IV#JDn?ofP7)KVino#lC-Uz|E8MQ6_ +f58pj*-TQ&V&S~@{>CDVVmi&VUDQN*ap8qFpx+AOCL!H-yuplK~S}r1n1~}eUj!IG8UoZb=_QIyd@J+ +D5K<&&?xc*IIuswKRH$Bb#S6_vs9s2+DGxWm&_rF6=#Eila*j?J2<6H&?xmV; +BtzE0VTaW=rm-Eo_FI`*vwl0l}t9}PG9K*ID%muAx4cB`9YdVBT}CQV{evZN&BK*nSgww<%iFca7)O` +OeaS`B=!2n8mItxU`h9|3ph+AqK6WQs7pXaR`ll{z24{PB6r`$}&6_nf=Q$)>@M;&8)FH7RYxrYtkP* +S4aM%-vHEkk3~%Q7;kxBD>NOX;*muHR{a7%pAo9`uj4`(D~l>GZ#al7NvV$j4sf-K1byrF +&RTY2k;+n3t8$mKM$<=~O-d!&{b!SjC)wdxY$>r_JxxD()4D6ieG5GH(UT`npSk4gL=XtAu~4=30Jz) +k?fM|7CS4d8lugHjVM;5r8H{&_^5z{m`Be$5iM)>&1x#j}p>0CM?DDyOQY9j7n|P2os-J_PsBYMWN~F +P(X-z2z)gkAzvY1k&`z$wEQFirm=73tFAYCfmt*pq(8q7XbPJ%T}Zwa$mP>Qed+dE*`H`=OquV1LAzk +2pHY-H)^S%96%e1iTRTo~H?$Vq5G6|$LPCV^0A)N{t!nV^C++4%;o&!fIffw$h$4|9!SZ2=yZFjNVhAl6 +G9D2p%&P4oz#TG#iy!+16+|7wa1ba)Inax5!55A=}PZSc#MzOo3f$*k;XZFj(1DB9$$E(s1{}a +*0rMM~@r+h;U}L=oT%&r%OIwuE-ri9+1xj$>stx{3>8eOi5*Srpt5^2DV{DmpvuB$-xA~^aNT)lilt+ +inARrK(4cq0AyfXtAy@Kcf^!S;U2aVyntuo8pi0-Wa8}uz4oUkU4C(-CcmA8fZ!=pkF}o$N8xom4s_lSU?w3Gs)IFJa2pEpU0+V{q+G@GqYMmjy{2swp +~ve?9}E2&FhkQ))o}eg;q@;>O@QBGCLgfIgy?iNpK0oOv4_8OR#rap=!$wOZKb%tic4hR{cW$vC#pfU ++X>7cLqn58MBI*pgW+XzyW#$y~9tECZ+S6&9&DrD926VU>I^bZ+R9>4;rJfm-r$8aPIJ9co~M7$*(eA +;wj6FB`;|;X_|iZ?8v69TRUWOn!!kDas0BHz=kC$v6@l93mCeY+}MzdqtDNuwH>f$pOOz*JxRsc&w(w +Q%`x>1juzpaKR?NjGoz<36Nk#CgyM +9Z;lm)nHa#bXR6szU30xVzkmmz36`c5E)6_vT~SSN3qZr{0mU50LAGD-gB9XHQ9-d))ZHnTI_i(uS5g +&B2dF@lWXxL}AFvcqt0$9|z@_Hm~ajU$K#VzSviP{HaZ8S1Dk(I4UH6J +J%1YDa=Kr^J!xoKQ@WwKSlx>WEUmqDoSqGlsUuRfH*dDvT|b+**iISFxFd&~7yv7Jdyfik2P +`Z=tt01`8Q$12VvNVUWHXUD;JUjyW<2=r`1B=6Xy(`7kfVKTkF!T>!QV7PD)ZM6dnrsBNzJ_;iSM8ht +RAJhvs^JHb^`utYM?EaFVU-e;_veTB*JU`J{i@P +`=%aCp4-LZhl7W&6p5Yx!ZWFh(KX7S5PK%V4wXC|HizEO#w1PtO>VQJI({O1vvkCvv&K;rG;fg0j@9B +TpE}eRMG&>?vlbz@8nNj0b`|S@9(Yz3DWBwXc4_+9=7N&~g^lzAY0gODTxV^X5s35a!HJ=*gaU}W3s_`T!|&EvWnwL* +-*^vlXjd_h(ZV+wq2(xDN^`9P8{Zp+yUo29Ui^ga5Q;58PX@k_?aqgr2l9#xu11J?z5P6M79oRegnE9 +rx@)0PaV2k@vxIrmyC7b?M>Txj;>6=46%+;6-n|OTo&V8M&Wjm=C&uouWl0a_tc4WhjX~id&amUMVJW +*j}-%qR}AiRc7IkLuHbOv2`^SXQU}dt+TK-0$pH;8;HabvW|ByOm1ThA7G2!cxejD$BR5s@ZA)2zm(ndI?qWVWKQ&d)s~eC%XDz;{xX8NqAHd3& +%U}xum$XdcoWNUvbpYZe9Tabw0)>wE@Bt&gmx#s#hSec-gOHe37(FuCf|rXSRT4 +;&c%g#5-hwicB)QU*&N&*9)B-thB!NbqQmGvkda{R(!hlzR0JbSxyr1v}1CAJU;=&YkaX6sd+70p*9r +hC3Brx&6aA4fK7qEbxN0znTuQWr@C&i9arznvVg8jN%NgwYsvn6ZT<_|l$*<3zoFM;HW3(i%Y;8BsT7 +zP!V=oMF4iN9E&nbIy6SaM_6G%;)%6)fi-G0L=Ndct2p?$VP2({pboz5i)q!pRf1ebCPbzX?I(ue!{( +KoI<%CdS6)$GelF&EcR4!nC>GGx`?)rEB#@npL334BSThb9F3fwlC1DS+51382Tkto)AVr3rf#Z_2uI +)ky@TSejH@iI(UnXfkA=8qK^uwmtOX;-Tm*v6l>`Fnl4nxHsrZmF6|LFrjtegN5gp~10hLvdOM#mg4Ou9eufEM< +wO7!P_&r>8|q1OkHrNruqd?34y?f2^f^S)6@HW6)io5vIIT +^O%ymPV~OXN%Jp$QPE;{X&%FmUckc0Z5zS5rO;MmXqFt`LH9;?M_+^GXc>q3~pFgFfK~F!Q%MTRqle> +Z7IP&r7{7U5SB-C*}t_i>N4k&1^R1)c@qE{_iV7SOrkO`|KdB`b3hR)A0uA>v_E+ +BhX>)dGn^=Pz53S|rvBAd7jO{|8ruQP+cgXC4j;MFG26f#xiGlcVCFBeSvUgSwZ{8)0p%v2MeyZ9$i# +!1HBEun^T=lQ=aMdlLddx;yKFiJEJks#IWeN3a1s)6j_rLO6h09$|*ZmtD?Q2+J +~%ZZSIn=OLgq6te~+Q_R8<7j5JR~%#C6h(PKr{Y6J|c&QY$3?G3X5K69yWt}!Z*HRn4@1qcqH?8TA2e +L1z5Odb!n^0O6l%3~zGz}KMWd?{EHXEg?;VfDvifu8O0WO;n*wf@xCE~^7d-3w&)s;pa`caOZG1@ +_G#w^-aCC{p8~klOn^q0`*~L!lV`oN}w7Rix%6N6c@kPZ=;#mT%Hy@{;m&CL!R+nTr3bW5^xz`I+6qI +dyad49X!a%q4Z|Dm;04x)3`>YCHQ%mQUW;oiG2kxw{%ON<>f5RJ2=Co-`2M%4KAeJd;(O;s5=lc?R!l +M+5wojO}m+208Xwe$BXJG+k;%HyPzf^u^GA|p<)Woy9Dhs4u&P1h~0Y!3fPO3U~t_bwUpE(1fl1c-?f +HNms-MMRplQ;Vl(W-+3*#3h9oCIY}coTHlWln2bE^&}Ie^@T#*15wy()!Zfsj9C2rknczH|yVFvx=x_ +z{_+v?HBW^`IZ_-@+ip%HTgATLlJOcC&?F2o|&SV!JWu*@zLK;E8%rU|8|t~FGe`=o1Z9hj<=UBc;?B +VRKVW3f6L8I!9%(sYJ@(D*52zKA(Z}ZtD<+wui%aVen#u%_B3`c>e1`$P~g-1$-q=KQN%gc68K+T ++^A8Wppf^ks0+Pb{bc7E-08m<0OoS_OUP5)1z65vCUp?m@pdzR;Z~#BZTs+I>p}G- +Osug33Q=Rf%(*d_VD$atGpfx=%-!jt-z(SV$HYa#~M1d5(CxHfd+;IA%6jhb9hbz!#W8+buY2vG^O`=OkYtkngX6tr?rAG)mz=Lm5W*oqp(jeU9(W +KD6FH@ANdP1*44wesToI)vk2NHVTJT5o7N;|1!e? +CONt6ZZ+e4ngSC6*78o`CEWpGhGmX}za9v_#s%p16(`4%NeH}$7S7%5ry@R0NH9@+(c>R%nWnw@% +{q08ry~S*Y9xTg0yQTs}2IPIvcOuRio(H^EkWBcmHP9!z6*G)NivJgPL!h}oNL +kCUA>wrKJ0#4WFC)t}RxLqz$KuSMzohsQ?R?y{*eT9|H2XSe7{(_Wx#_rq84}`D~c2knjcQhi+z$ +O(W6O?!IyJx2OasQ&n=+C&o12uzWa5c5Oh5KYad;e{28rv;A9^r<6K{0ZXRw)d>*{PNB#cN6}|oLj%L +Imk=cMs!o`p0za +zC&XqR=IcfW!CwdmgqI^6#Tyu<@-l_2oTej{tm*?c>;vb^9l$7>73EKGcKyL9Lck7FD04((5?E2Y})l +4?Zo64Z?|(wcMcr%}Dje;Zbv8x4dXYQAz7*M|WyP{WjgM9SyXi9&0J(yy>}w2K>u38nBn}K0MHkvh|q +wGb%+GR2fPlPvLa7AtIK{4)}k%*INofnbB{p1u*>5H2y`5ixG9oMn}pQkb*GALs|%bjL9~?j{t}OV5* +E{ms3;9al_v}9DebU{^DhL&*|NfK*c{IrJ8nss8_nJw}acL)b9*=pFuH4#yzj{gz?{r`wtNuGf$U48PAdrNn&b5@djnY8U+uaZazf +SfJ6RMvYsxOcb_n$Tc*P@Dg7OLdLf!<(^1JMtY64nits)uTv*joULg0()AH|k)|Qdc5yexZ3HW9&o_E +(Hi9))WCv%x`C<$o`uc=1d@PXVa_DDRE)ntkCf6PM3?2WfV;O}$ROjHJ>!I1umyXzeYU@&i*;#XTlZ9 +ulF9oVLB}RBN%agCa_}b(Ql)A(3*5Z26OKojs$~Wn_b9rPKHSb3^OFY;HsBkx&s%Pe@!(pCS%1DZa8CcIQ+ow?eWzb+u3Tp{Wg

LA<;jIQXgog}WDVqY ++Hhhef?~9xL!L;m@O)_Ucv2d$yg>+IQ&%-Nc%*|TEO}G>918fhJbeB~kbHpNHla_FBc^zaXG>*F$(Tu +GR%|$P(o`GgA`=qi1hl|Nw^?yG2vkWj-Z>R=8D{VH2O-`fwWh#w>r{nxi-LP#$VJbxQ2ZEtB&@h+r71pcxwtsiG=3}R^Nu7M#3`qon+9lQj{2I78_o* +q_v@3UE((n$f-JXpo=I70B7U^WU(+!$C#J@nPMN8p{C^?vvE^o)NyA|MqfWq^f&&wF?TlRb~rPMX@8E +Q{YSlFa!r6s!%+bH>W}y#Hr#Fs>8z9y8sEU)a>d4(<}b<@sBs}mh&D#RVOdsNZ$PkPL`FS3JS+H9$Sc +S34y+9c^Qx#z3P{C2nznCqH`P+E!| +y_w6!~KKz$|%zMcLHy5Hwz@Nn!5GSJ#uNkvXg?{M5J)P3{CMuuPUY&|nV8W-y0e$6kj=LheKY$P%*cZ ++I9pi{hU|PjtG$Xv_J%e64qaYEdOfbG)2JgFW1ih92qj<+sEh`E$-qtL^PA)FYzIvo!MfxUDT2mP8^H +Uq{1KV=CSbE~Y8zgBPA~U`RnpYQe6x;m6tS6*4gc|56P6u$BUUF7*xj6fSwrKz|dm-ug#adobiQY}c>76gOsrNq&S#-u*W?Ru$^nf!OCO;SlWjcm(R%3?o5csN_Uz_4b|GfBMzaXZ}7$#hA^mc5pU&TP^;4hRnGYcE7Y+FGh{Q@Jrae-8G%#!!}vOy=l$GmV8ZQj^9E=ZOxRYNP4#S>ED$}6gmg +R+%Y8%@N)LKI_bZ;!TKiXJjVaj7kBox+3A71w5UFRpNwV<_<3pCOxuJg>{oHQVi-(zTiBdlXAT~OQ61 +K81>^rOP)h>@6aWAK2mnS!LsSwx-hpcY006fF001BW003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJ +vCPaCv1?J#XVM4Bh=Jh~6N(4YYI%5Zv6}+ASyy#bRP2isU2Zr2h9uIc||$xCs1skL081G$hU-lT_6&_ +~=QXOCABgNV32_G3;D-yg2qHa~fQx9R^<@B914JvFmj)m*?%sYo0QpRx>V41EV0H(L>GncSP0HF3r +R)``YKy;m5fSQN%eVUxW#IiCPb2)gJ@OqD3*<&qbTfqcT^#mFzgnMep&jt!ibgxnV0dMjd%iUs^UZ7m +{tjSl{d1tUvEyH{)&1ZRO+EM*H4(DOb5AD53Hj|4{T!KV1qdRXB}@eg#a2KL4)%0Z>Z=1QY-O00;m^M +MG2$zvA^5Apii2bN~P#0001RX>c!Jc4cm4Z*nhkWpQ<7b98erb7gaLX>V?GE^vA6J!^B@IFjG}E3lIf +lICPOndEk}s!^&O$Ft+Ryv}y^ZY!ITXbQ49rbrGScC=I3-+ui92!NFB%-&#EqORorO&rkpn`oi#DPPKqppnc=cbi+9yZS9ytDLTs?vHosS`CQto`OGq_)}ahu+d@#bDApsxvAo$SxApX +Q!JpxRGkXmj_CQn;G>PMF12Ymk&%E*I-pX_%N^*$1zVe>nW``h0PE{OaWN_~?A``sB^Yxd6E +Wm=?xLuj4jr7W8ncR%s2$NUrF+v|proqpLj57HyMuqr=?uxJhp`;<7_V*ydVq7dOy1OL1a$I2{A2>Ta +g*-<_VH2?+f;(WOUNM(KG`yovMesa~ZOP#$`pl9Z<%p|D*GLO0AZ{upESZdOXG)tT9Fn1c>J3Bu-Kfz&uP1m{tK2=FpB-c} +bhQL9|++L;06?_0$M_mMi#YxgupaAe~tS*5NIckYUZ=$_)jUS^jiyNG|n$Oh;aPaiI(TtGPRNI+SFy6 +Mgg6>bFXa7Xc@vk&ZE%Tr{Y=E~f+C~%C5Y*$i%2Hja<|@v+A?_Q1zU%>dG| +zEIGtz#0dq4+K0HR^XqFK#%U=r5P-2>Dx01Q}W?&!e@4+mQJm4>x#fV`lsOW=>PN)f-(pQvjPT^T*n# +Mk%^6hMI#LHsa=uQXt&%+e&an*dS@aMEc9aq54(0r?I(=1aL +nh^pJ3lIWeNY&QZXW6ZLX_mT2ACOIaB;f#Wfy-u=T9pRbw+lAyZ2#c-&i=tT-2ah!NfL~J@}lvUrp7w +DjMR;;()D&?hQn543!5Io8bNgPM2~v}mrZDbc;3~i$2O)Db(lO15sY|?gt^0N<3PiQvz$x@AVh76dwZ +{MFgWxTJf7-JaibM9u9?MPvqPpqs|4v0sbk()xyd@MYI+yn6zNLE88ALBhJhgqI)qrY6;T%2#Q2OQIR +~f<0ybA4uSqz@ps;Qx$i%^FpzEd{Pmq8&hC@CP6zm2-u#W}Up&XQD0O}(&__Vj@(8GW4X$IP{EzV^BH +t4t8`Q19f@&`B-b5ZsEbO+(DKY3O2Li|yL`5dtWXCsEoKbkTLGrM7ZE6laX0P+=kf8=PJX98J+bc%;k|g^5Z<) +<#O-PL`zQ%gu}2>a!i+uiCjFe|W470U#CyzRYqA+CX|rhJ3a4G`Y)#fe>F5AJ@+puMwgA+_r?RjJKH+ +rnnE|6doSq;)mP^FUa%srJ685UqD19hsU?GBSrHVCB^|s?I*nW_8U>pMx1snH%Q0>KvRK5cclz$R~wG +Xn~s7%Ko-34ej)s_WsDMgiDreL8eLk;3x+qk(+6Yao*UOEPYqi!#1oKoI&E3**BzzAS%P9mox?pP{m> +juo74Wb*FqpfLIQeY3Pz=xuBWW{BgfD6%p*M#Ds;?+%@H{d@NZS4SrZVAjp(<VS)lxzbIV*tsqv@MaABnYUZm!RFjhO!JQ;^J4VLYyU_cwP3j94X6#ATAQy>g`g6>YMRo +xk^m6ACtyIdGL--g00I8MhD-A&U<$U4(wj1^QlPZb=!GJM>-O@JIEK_dH%6Sp#<>lERWYgyrp9dwdJI +(V{^8lt$%#s?V%#0bbkE6bHxr5iASaErK(q83;Q;|aVAO~6AD&Am7>Vo;G5~o>AsEt-q!Mw&q^O9j#2 +{oTtr?z1M+K&9Nw8y9=Y=A(o_K4jZjm4MxigW#_D_c=1U$gbtWWuX`sQQAkjEniHJW&xM0bVW-`Mn?s +!`jlpF6#z2WpB=DT$ARolEj)L?spQkldPF-{J>fJ%JAgjDgz>QQ#2zf$0CmMV>%LnXAZbSeadknIGor +YAYO%oca}Dz&QA0nMJn-oK3%(nWHOg9YAoj>n4vkTK#730I-i|LwG%}T34XYN?0)nL;{}D3@n)pv?xj +0{tNoIQ=q&`wu#Bg1_N*fo|*#;-Lg6|+jl+!(;dODQ&`o-R-OKEq<;6^(|=}Rgf`dc0U0yORmZqr<2c +3}tbKQo#Sahx)VRS&5qk24-BvyQN7fuJ3zd7mb@l^M?KL70QRb<%v4iFsy?;$!AfjYMy5D(E-Y7`M`1 +#{0ap9yV1=z!(Pyn$Wg$*poXV0Dr%*h}*e~7{3+jAEDBX1HC2O*LG(J-z?S^~BFibx0|PqXNj4O%QmW +03mHdn@#r3?KD+nsuo@_Wa)b(6LlGY9k|$y`T-5K|O$il@Q@bI`nda8SS8$JMMin8|w2wnw*KKh?G@D +!3NF-HhS2I1p2X8y#8{>m)5!;PE`Ea^w=m0sp(Yy?Iu&w=74WK0&N2M8fV;K=KI6<~#V)EQ(>jXyq_e +ezd6!0=dkRKIaTp(1Y)up +vpKntIWk8F^Z^x<>3r;BVWM6LUv1*goiGjz7N=lihjHfd=or?e(Ng>6i$mN|gyF}Sy(u5`WNJAz3EHEi +PY!j-62s$|?tpt}zM6V&^WN(C2?7E6J@K+(`l)-~L(CHruhzR@g+2G~+@d1x)RUopPf|~nzGzdh1~|ep4xvdfC?q(UzkvNqz+-!XXQc +;ay*@A|#X(xv@ZsReKavC=;7y#h8q|MHXZ}k*J&!Lky|f37>{ZbQhO +Ri65dfb}!#EFpfxLt85+)@^t+RolYiNQpouwC=bp{6NqWcBiUq7A2fO4f%itsQH|9aXD#m(ph&{zYi& +1vCNvQMD~RXGKUcp11#bQ@M`4V2r*II4uLd)sWc?jgh9<~8(~r8kLp;1E~oYS@tqasBgv9_;xLzVFN1|`7NEV%iVa~hK2(epfyKk$Y_F%Zk=AXoH&A>F7AA=3sth;TX2%{M{f8{T&1|<)se6QCbNXB@Zt +0|0K37A4S;LmynVNLfBNn}{=^(Ytg&M@k$Q(mWVb0sd~Z2hW&0iM^A#ePv0x3EAM3UqZ^RKuI2Kp&6-e&cQcCY;g~1?=sqZq`vzT^?LDo9v)kCm6qbRI~ +50|J&$U^voro-TmBn&wMTcom%TfK?n9oUzyZz=4$lg@!_kHPiH&j(I1Y_NA3h)6`&cwe@8^g@@us!Fs +HmO)22J|uA|7!+4%vp0jG)x{`B#8HHX&$dfiKs*}a5y(PDJ@Z2K~HZn^L`hcXp2ZoE-SF)~8ry4 +0C)UvrQYxyv5nNOCr^J0o-4KY8DoNof#ftQf^Es+`ug-7y(mHe)ss(^&@WRFozc&Y{>f?8hAAfqmqra;-y^9XHJ~vW#Q~8r4X6erXd)j +RRyrEC*hmJbWaD;k}`b(t+er +B&1KiOT=?cyD~$%{{&HeW2#JZ%;W(&H1yHGecyhh*jKr(Lm!n;49t8!;n51~0S?Yhvo43uZ?AJX;E*A +|C0(izRmv?<%c_I+>)`@8!dbWhbj-Ds-kyP&?zE&H%tyl2LN#I|WT!W|X?x)p5xgSyMc05y5=K(D(On +9KXZdhI7o(=4pzg$Z&Z38O0FY2NMuRgHyIYvPWH*d_eRIr}fO#Xk8T1MO@9EKKbrB@f05okvD>Sz1!y +5<0s#ZzD$B;0vTJ`Qz--V!OQM!yps50xSCDvlRRmkgq#TN*II?-^B522P;L1<2g~4Mk8EGTfas +%pOij_x+9ai7);-z&E;P{JutOjV!QdO1Z%Un3JSj!ui=`ytDp{`k2s$JA?G6G=et}>kfWp!aP{J%70C +e_R{Sj4$;q4xTP7Fw9ml()h@`+qpu}vm>3A|sW%hy!p~7lPSx0MK;RUQCIBg|f*Dfx0rm +GL{+w>wjmq22g|56LAafK>BROV1`A>RP_x6S?-K1DPWd%D-NLeadB1u*x9!>a+NfzSDkp*iiaFJd#Tp +?8GYReKelYjgPqs^U>{g-H*)b=%f^BbT +?VBg~x|MgFGk=xh!#eXgC<9x9CFtRCpuJh>?k`COD5Uh?pfgJL2#U; +rE3SCR|(i)0AMq`JBS;wef1yMJ5jZy+{)j(e4yqUI~wxGXeNV$eYmf6<1eU?VctOSri(_Gcz2*`3$l_ +P3kR0um5d5jPf{}cn*C9-W;7Ac5x)hcO#$L-{aWpH?s(5&>I?AYRAA+a`0)ZM*jww +oTf3w3E9*fZ}2Wigak5^q_jeb(cC*9

i{_}~tR-uU-IHwR(6FumsL&L6wL9Stky#8(a`LfIP(@z>e +z0nUEiP$cnptZKO&VG{{*S>o;U;PrCp?;tQiirfHjNp+?~wlXW?Rc~zCD&3(mgxCcRvGQ6%0RRd=d1F +!d{NPoJWx5APTpCR@Kq$SjL~VJ){aDOr_Dima!3S +jX>To%=$u!LA@Nr5&N!9yNLE@WwW!xd0;FY+&wjgH_b4;xBiYr!xES0cN5N(^nuXg_*Z#}U +h~~~Gvtrk?3UZ@y`B9_!nlqdG{{@+F4nq_pFaG9o&KJP|6z#sLj*^+>sONe@cihpnX7N& +>^9!kRFUNX<62_ARj^CQ<2)bm8CPwhC2S}6p!A%<0ei?M+B%7Nle;>Y{9QM9>&^}m^stFk-o0QpS=d| +@AuQ$T0)F<pnVexIj@Qfcs88@LyDLvb(zR54z{PTLf_D<;4VaT#)=;sDxAX+&k@` +c67mdZ2F=h%dFu8;;p-OioJcbgz+=Bjv&h{q*!Yj_GO8t+Rut_yJq6pM2YOes9h_QVCx;}x@-D_W^r>bK9}qy3 +Bz{tmB&ssuRIzDr}jS9@U|q1ov1O5@;Tj5=zFrOxQFgn;@TYdCiwB4(VR{TLQk0&M@{-#&4qJbGUF +pHEU0CFAQS^2=uMQMD`q=M#Y!c~Ty@bF9!mwdGfAqVD^MrcI|Kc2I6Urd6$$T2tcLb!KaOi}xcf**cC +ihhKRFy6Ub*CS^@^a+uG;mQuW+UxwW+A;D(Zk0eU4e&yJuB8ad>{STTuU*rGABlWFGS7+q +m+P*9|JPNJFbjM%kYA018@_seA~H_3jh%qD%{|vz~Gud?>0sf14q$UbY%|LHm(b13=B-0>kGRps&n@! +g6LvzlEfPn#uE>Jl)rTsPYqvH7%k{FhB;lzFn$0R1(#uRii~Bg;Fd0~Y&~m=^2Gcwz|c)@wX@5}Qshi +Dz_Xlg_QTkng?h*7fa3|=c_QE&vi9@Ql}@htH#?mCYcBD_M8Z_=Nvn&E{jrYvYs#&G8~IA?gsMwyN-3 +DJBtpnC&d?tDeJd=KqJC1LAi!58d9mOOa(foTmV$XcqJukgOygdc)4z&<=%3#>)!hR>+B4=mss;SqeD +Jx*|J4WwruoT;ps;20NmBvWEioF4z%hvT#Jv>j;^l|8uU;PmQHrVuq5BIV9KjUb-UBJIn8A;XC)T2U-_g>~EA)MV +-py6k`t*Al(Hr!WEC&2OMob4?B`GTLd(b63uCEm8j$e!eHnU2=`bD!&Q5bW1rgq&Q#C{o<#(eRAH^P{ +{Rs-!&F(%>=8rl6K0UKdp2bqIolTJuT59Ha`Q_apc>A%m`(2CuaKx9R1{IxLxxdO3;`FAEL#`nVwbxC*K7wmC>;(!QX@WbaFR^sHlB(yBV<>M%DA8f~( +5?jUCn>6ii{4kdPBd>h1s0uPf))40Yk@D_oHTc>-V#4@hfkf4)kQV*mTYVKK_dIxK-WDinQMrzC+d6p +z#u1%z3KcqkPFpEt3NONeIR2qTY8{f2QR$Z7m!`7?$`bD7kZ56|5(mFLm|fxLM8kt7d`S1g28vYG+P1 +wCDcR&(;dF{ho5o_XBGzdRPN(T1<3HuSPx8+`c32)k!n-_Zto4Cf4ghT!}=7OfE3v8bAdfuCe$yAU>! +g(OlDfmX6i}wIC?yMvkjKkTxgv;9aNoSHH-Z60e2>GOKXn8(C;d^l|4ItMNBme*aaA|NaUv_0~WN&gWa%FLKWpi|MFLQKZbaiuIV{c?-b1raseOJM9+cprr +^D8jPcqk>dV#~7QcqX~D>9o^M+i7x(GY~{V5@Hfy0MNGD=~wj7OTVsP(#0-FKyp$YY-0CevDjU_1)j2 +#XD6&OwbGkw*8BCzRge^gee&c<@qR1WatT`LmP=+y{H??(9`nBkfqO0WPxFvhK{m4$7U9}#?h`tmE2W?qWUc+@V=uD)ve# +=MBO=BKAc@y@i8cFMNmPO`RdyaKN&P_TPlvz75%)_0w>Cpd1*J$zQeNp>f#gKa|;)&;~ShF4h0L=#~3 +jC}_Ik`#*LAzL$ZyIiKxFF%G6m@blD>>#CJ1e~*0y3WADl%za!=z7@6tOx~BV5(=%+rIKWOdBHplQFk +__bnu;C^&8RHT#1S^OXIdp&(j;32bI4JUczTW|Oiq+AH15@_2e2-#4KE;Qzn>{F +N->o+>Mam-Xn=oc0mwzuTANF0|2H^nPosf>fwG$rXe#nEtXR1~@IcAS*n?SZ1-9pI!tFWKa5}WF$z_F +EPl%dL^117DWm8G61ozITcMn4RwAf!m)aUP|4gC2Bm>u)!}%C^2&oVN553dfmTQyi|n^}k|74Oc$QB` +&%!#@)+nf$(bPGmr8Rf5=5Y90p<#;+W)y`nohRiu0TZ@1y{a=+h&eO}AgOsEj+F +!|#5I}H?0j}Q9n7L=HksChhq!7>a72N#r?UdJl`Jqy_)o_?`w$@R}Y_+C?GqAXcCr* +zqss%xn;6JthVE?Ie!(!8Lgv=Y{?c|b+3rL&iYBmQzQM`u|;FUuBt8QJP#ho=@ig!UK8bl>?Aus=%hw +B8k+U*ayWT4{Ppe*7GPuOi2;8&xF&Se#+}H%4b}o?*xvsW*O`IX0>z=Sr|vEA)OXR5SRV#N*;;=ed_* +8-7P5E9@p;c#-2qCO!bsInfTTOf{b=9v&8^wh2BWav4a@9wW8dyLkNn#h#f6 +sn&m?W=Sb|uXGB~@<^rGaEp)xx%BZOL;jtwz*6~j%D$>hl_CZ{pgZSLV5Q$c +?7T6R*yv8m8ZHX6|}C&tziY6W^k(-8mCx>26+82i54SW(Np+K;k?yn0k@`$y#qawF4VOleMW3nAxG{*=rV7n0c!Jc4c +m4Z*nhkWpQ<7b98erb98cbV{~edkvUYy_kXibdZFqb^`LDH1k6^i!TJG0BHY`Lu-;*fjhcIM11&tZA7ghH3H-d;lMHp?IQO%$D-oka#8TeQw*)|s|&tw9_8{ +rne2Z-o;ug23&BgGTSs!0){e?=jjKT~Rotuy9h>7G%|EI`LFlC%;gIJgS>*Xr$p-|z{zmy_kvDi>H3}=Noduy +3ROoiPr2p3?=mw1lb?A);=lMKno`bNkM>3?p93!>_Ds*$m^9-())!wc#`bn0^XNq}SNr#msNXX%u>>u +zzQ4IqA(NK0+g43`@=A8oB3~qNgHUSLfT&>Y?H_$ubqA5>)2I9=I$KD6J)K`?}6xbw0jT3c&i#$)ex; +T8o&jC|SAIx|-IvGIT!Cq1cg|3~Db)bJFpRF_ah3bAnlL86G9H=Dkt243Qi6bTPfwZBRNe3@415>_GS +;EzeidalBcky*mVB_L@LdVoEB@5rp@4i`G$8)H-xq0{7Ekj?z0-VFGX>qVo(z=8U7mS|->Tw?Uvo_RB +!TMq%cPMBG>|M+?lirqChrx{RNk*PPgVfu4=;)JBt#7Fy^Z2GSd)J$h6-{G9@OZg+rDASM}HmCEWr15F1Gxg>d7*u#&gbmpT +aBuZ*1_HF#V0=m&uXWYeMIH4;Wr1d>2om$;ENC)N#iNRZybY9(vwR;$FK+N40KiK|b#CY~=Y9`?d)ZM +P2i$Czy8izFpXR?$Q+a^szFT=p{>`-psU1%LiEcNr*2_;eC?nk3B~kI9fHQIUqOPSQJv&(uIawaf@Bz +x1=aAs&?04{bvXty>rRl)l+`&zQ3RP +Dp9@Si%w5Enl+vFPUqrzCW&XRC$4`;p`vldGR%^kC7k(}w8Um*E38k(ptEG+U}85}>&LdF+z)*1Otxm +|=U%#gXS;g4kZn5KO@{)EsieMVHwCnQ?-TL+3P!%S@`H$&t3dP!fNd!u( +F|fBx{q>JDxPI4XNIgdGu|v>R@0EGH9i<5$t_(olzE8u^9}4V?CC;n#RMq;Yf@h~Nm#ffodSH%Ze4XM +Xs)KOvZxO8r*_8f;F>oVIc@meJ?97`~J~_>JKMF>L%S;#ahqg*kLvrT-3kZL{)q;Wz8?KK1v=l|LU3T +H61~m_X{Gi)`@u->Zy&>~j1Xzp-EApJI3e$q@K|tf_POf;?k%3vTGo((R0Hw>!EH4c!)2hrMUnmuQva +4<;@*dPci%+KMS%tul%kwx*|M%!c1jR(c!Jc4cm4Z*nhkWpQ<7b98erb#!TLb1ras)qQ<`+qSjv|Na!X@;XwfOvg@|o2gN{G;vyQX_E +P+-R5KrEkZV9iBw6-j@zgE?9X`v2#}PV?cV!5zw6)DNF;Co9GrI?9Br$edpl}cq*;D3R;zlp^BA9OZ4 +Cy4ty2HI(p6nWt2&!kTmSU_wzf_#vq~+BbT!v%Sr*q>sw;&}v-(!eR{6Bfio89cWsS4e)2jKF*U)F4otr0FVLlbMRjJLV +s+eBs+J39c)wKC`Ydh3>v7BXd+wCSPbHJ5-|4YWNXJxT~In3u;mM!n!l&LOt`XU49)MlA2qxf3qX;DV +2at`x-K=?Hs7Ri;4FLeUls?Y1OOv*~f@MeqKM=`W6E0{$bn>NlPX=L6^bqU+Bt?DAqlRCTBG2jALs9< +wfIqlgctYD1n$@B_vl2)+z#S#FV)Bc;8WI69*OeAE+Y>y?a8G^s8%er31^Q;0QsZ`9*@T +;Jxw`aJe;P2;EQNy$WFVqVba9itYgj)?yb9sHCYoOgv8N8uh_~kY}zg;F(MV(i<>7G=Yr#n)(tP5Sn_ +3aWtW>vhreb5CE>-;(^i+rK;+8xS&{zI}{0@R^hOK}Bl?EcW#k4YKh>o~Q96fw=N%BJmenBrkx>AcDi +yA9Dr`qNY|J;G!p9p=}`JWEfHUX9G>?+LLZ^%BVX2Vk+EnBqt3G%xi{mZ!=2Tz^}nw+Cfel*6s9*9Rv +@&*PVeuMUpYM1?_=>$;old#M;l0R&_9_&&hH&lP-m`0&ARTR^i1AQ^xTNrvEfM6*b-bpiXJD_vfrXwuhNv8q(6=h-3ydQ|87GJ$7hWX +F5<{Q1G#llb8E^EWRJUw;Q94@PPbeJrw^5moA_S^{N<7ZgpkCREN}#D9Q&?YM}6 +3y#)23w>C_faAN(zTetL9t@cJY^Jw7-Zb>>_K$HlA$p{C#ckWI +^?f^Y8x-S3{S$`ZKtN8X5chcd1*0|T+Uu(s7(+=7D~nFe@yHBW*1)X~9r@$ugk$WQ$A;-@!9FGeZ{QU +C`0g@kYIfmu30Cb(F$oWHDedHZ8BU+IHSVH*kErEUHToVfb8&FmjBj?o2i>&X!30mdvkmjd6|bm|9Me+NQa%WkIX2aL#W#%CIBWt)aeW{gU +O9f;FWDVazE=*CXX$MU3WL`{@`O`pf4BCu((^F(-BmLfS`MI$L1X8ea0+0l70O4m{vH`KQ$ZBa{s1_{MYo +N!LnxZP_dEps6AALeK?D-M9K4GLL%WaFl}Zb+mG10&kNQUUY~Sf+l3!?bF)z+lg_dtV{fsGm!(aqT3k +-ZN+qeQ9MOzReoDpGSgbxpgU4--@qf5eV9U`iOH~;6v_5`#1r~x>ljf4Fsx~wjZ)MFSrjT-)Vj^tDE7 +=RiP-WN%Y20_{|iDxjO`dsR1Hp_I{hzcYrhvp)8axQE4n_=Owmz~#HbBu^a#B`KjUw>Z#gB^hAMT0H| +gV@kTn958nPC>Bd${5m?eyAg;paj@!wM>&*N8}vIDld~Nsp~RK!7KusX90?-nP3XEmPYg#jV@=tsm!W +cEy28<>pU!^UtQE-#>10~`VzXo1~#YXQ&x!avOuE~43mkv-VJ23yVV4lg%!Eh6 +~1rYHJmc@b=~c(@6{;g6xSx2!(GtcXs*-dwT=1ZG8<;Ce^u84Q$xccj@M_91V#UX#`Y^p?vqt5A+x%N +#rtt?>yMNtYm5Z*&0G>&F$a5D8hGwg8ja`=M{8A0n{qYe2#hjGv06ZE^k)JktvPt&=PV*1FD;7Q7E9N +r@1^S*XioTI1(%_+g}AsW9ydG}l-A`+tbMZb;Z0*r2^lRWz&Wqz-weL-1kZD*MGzm^_v5!8`{{kS$Lg +(4tQ@u)qQ)PkfFL6ayZi^2s&X{VhP#BA;dDf^k)2z=HbS0FDd54Rl#8QEQxM#7GP9cl`CCayhrkrHHU +aSDKorK!hK{uvh&IOw0p`vssK$*TCO-y(5?+{fM(2^n;Sf3?K;6gaBj#h)kn>aiwDy=kphp3gVRnjV2!MA)lG=7`M-zWJMe;X-%?n +@)Hg7giMuAaI?PDNsYbA|Zugj}_Qv=zm@6+>%EN8p@_AbeYd@QAnYV1&u@0k?Lw%X3H8-IM2YMt!gkV +X-kk!+i-H=SuR6N8VP)WX2!9p-$goXbL`GCLr<=7)9H142Y8Z!Q!$5r9) +c{cme_#)c_sjL1(kgUlC!;5SVFy*xR6^XoXZajf+7+99;0LEPmmc@a&rI%cQI`qQ4Ra1x|a1=uPz3rZ +seS6KM5*cTu0oTWi+e*fyIty1$!PS&QToV%%%9)1gLVA%elmfwVYT)tBL_oP$-LWR;FJ&bykB!QQnRk +9&tWtZ83c#m`fN?z)w6u^p%^oz1+s{(S73pa;Ges{{uV?SE<^KSNUNBkymP{jLX{p{G^;bgDEcx|ukoL^7~7@o-)fD%Od31a^IK`q)(l%lPaj) +CTSg@U1`}%ud=K_b32X7=XiT1e*0(+33jEvd0YWNZmSl4l@4x&0%?}40zy|^%Bcm-;84~(JH>)hAzEz +}-HP`_dWF7DBp0B{3S>A%i&!eKe*d+^a|Nh>ihwAq|piH+5un|`07?IyyRjbx{3IT&XJnHQhH0d-r2T5|}Mr59yBNgbR1S!LgYKfGKS_(G1Q74wP33#t4Z%@3;U=rrU0XcQ(4 +vZpysh9>=i*sF8mO5eLVkEKV{*cY0D5AKr{_sJis7;llXSc;R26}u;TLcEtKB(Kv477Y&Xj+Xik5+kx +a6oZ`%?YxiSt5mXz$JxQp9kZ>T{?Ovti@U4K&uw^ozCWClxiF)43cV^Wlpe&A^{V?Pb7=wfRgD)@w)X +U6N^9SPydF^t_&lTXdpB*U_=mwEw@~j!rl8gNrDz=*8=Ta0AufxM{`q@U3Q@cG4619zX1y~C+Vg3x~f +LReJCvj!26Nuy8pgw^0ma$deiUFkS;ni2_2V_KS^FDiTEXY7*)lmKIFflQZ*g}N#7Ps@HxSfCZDsq0$ +OFflh#<}U^rJWP1v$&R-=VjUGY&1DI*@Z>R4m0rs@ep;alE$V9e!G9po42;a!3S0smG4&mhM+CfMM2l +TRwT6J$Z2z5q1Pc%!1|t#?RxyUu674&O +nedr=n8;QmK1E9U4~%pM9cfLkclP-GQ`fx^5;LL_;nGU+KgNI%e?I;t10NwJ#;HPLAIE0kpmPrMM`=q +|8@6N584s4&?gy-(Z8ig)gI=6kXcT0KuLRG+30_i8F9C7PRwhWz7TF9PKba2@&$L+H8eG>&2`C*Q>1q +>=CrXqhVjDRYOKEOEk{l5g7r^XKS93UPWlAI8n$9nfBhcBQqfY{h2Qem^0HPEoe2Xay7izXDk>T2?$3 +BLFLD!~2NF~hN0L2u9S!|dudit>O}%P*w9S7>#!>eRSafTOfD2hi703RdklIMSz?LjunEYplFnOlvco_UCbJo4fnX?4RSWQ +DMBU>Kp|$3FF>IfhZ+3Hn-GGmu&v>b3-`+Q22SlFapF~*|%g3Ib=};;(HO9RG@b_%_((P>qkqJov%yf +*9;_w_R+%ya!k$hUiU=DQ?VVUQR7?FgahHmS{l8#0=4+lLE{G4W`#7nF+F-D-FI>H|GHkdPqSi8XxW$ +DmGV~e4P@W+OLbEsA)pw%E;5PZAvfdBgYK%yK$~NJ00lyd9F*owlGly;<(`#VT)}#Pkfzvmi +idV6F72o!NWs8aWYZXJ?H#M5(7}K}}Ki&l4}(2HZOPne!jW%}10VM%d-E$2B%R65s9bP!y-SV|u^R +YR0^p-#&NAjL{M^+QweiqELd7mYl-S@rGr`nsABlLQ=1h3Mu(c67kN9Vos@aLsy58FVP?-4E_bg1pZ; +ByI`hkA^W=ce@FC(PV0uSIR^yQ9Zh^AS+{4qo?P2+HiB74CjSzU|L?5eku6T?eU&%^nn-prI;7Cz+`7&H>)}tvY)7T< +za~^jIBp9<-x6dXhDphwob@r+m~2r2qp?19O9&_5|tHJ$>aR^tzd>JK7}komim5!A(%&PQq>7$j%|kp^e{7A1-MI*>@;Nx{ +}K+Jy|RN%!$)pppyNv=Ld}W*Y=y=?ZNp!IimkAd4I$RV{eTvCT~sTbjv;dqyHd2q9yC?9Ji@&9C +^l45NMapq1%Ha3>~lT|mYJGNhh+W9!s3bBpL$IHeYzeb2A|i +$a2Om+lr4pyohnjD*&fNmhQ2;IKh3;94;E$!kK)QrL;lB}maa1d4f0-I)cmqL>Vb#AjJ`Il$;!IT_$t +xSr1qwUTy&Z4T2RvO{W2ADbbE4Jyk032p9_5PBE@M5J?p84N*n;IR124ve~#r9gA&fUzb<3!lmXp3qz +{2@M}mKXqBqTOI0SNz7n!kOlqP^JYv6@3+rqKpg3Rh5-@sW(K6OJqAqM_NZmRUw`{I88DdGCLq4&mQ_;2L@^%J4nFv +eH)j;2f4wbNWwswFu#W|Rt#FiojS<|rI}qN +rnr-;RGrq8|lQ)Z)$4Y3v!W@qVeh|%(~sR87t)x!yh%<%H0iNKJ*U2Z0xI*kdirtPyfR)s=1OtQQ<)oh2*u}bPXUQ> +f^A77vl_B`h~FT?!FU!`PWvgVw^sLo+M3UlQ`}oXymr-!&b9wK~W$2Hen0U1dggM8!RD +FMqYP?QhPKdxMtI~*M5P0}N!yRKhJI|DXSFM$G^e2!pIpt+fI`V=LbgQR9pQJZM|bXA$lg` +6$0y}$qHQKUjtwhk;aV{@~E&Naj#EkN!?!@xOAdw~HmKK_+NS_xU8WJXuFL?K^ly2FbHP-XB0lvWbm` +$k$!&Ia#-_xHl+%WsDG@#%XI9++cXP3Uq9L0gu|#Uj}Rj4>s^zP7+OgZ;Fa_rUzelXu_18-Qvre0JyP +M`prixe=Zcg9T#APkrf0QoEG98uH{itqkFd0W6Q{uCg(N`JXP`8*;+7q*;i%b!}6Xm=omgwaWnfXzbn +qv<5xr9!l^#|x4H`ku2*`5j?&hK3iwXa026go;z3|nj<0wnVQTN6gY`Fdu7qb||0~pwL2&9B?Fd +1|*pxPZkhl8)-wUWUNtg~^ekHMOcj&9DAH}|vlz+WoB^=CkGcH#_X6@eiIWIOD2W%{<;RhF*UWT|OxZ +Ogx(DgVDeIeDx2c08%IsD}Znu}jN68lcChaGiz@{aPZgIQQ1viNJS(p9h5M`-G7yOt +^pUs<;k4OGHmq#vOsvFaBgu0W +TmUn)cl~YlC9rt&mpY>T%>D25cl9jEU^-emA5P^x&|O)yTHtjp_}DBe*ztvDSEH?vZQ1XvKdK9TR6-U +_g#C5{P+yojj`>Q9@yrrkKRqZmyR?Qf@NW9$T;k=CpdgTHY{cPvD&B8L7)Hu3==GVsWD?4(x-9HcamWVJ61DakcycS4&dGg +AFhQl@qS*lNwo#BL2N3g6;k-YPdIeCqV*&<%QpsM{X=;qjy4*6Hh`gX4pv9}ix{#|I~XdqDRu8nqUa? +cmwB&tDw8{On`xlql$E*1wFP1--RlT~t`E>is07S^({@(tB +hhIJV&&Pk*iQ<0_j00kV#Leu&RhczX;xymU)ifa=;1*-dm?>Z$nJ5~az9zJ+rjnQiXgx_@uH2yj?zl! +>$ze}wI8wl5`XZT2K5M@7?D+ZNA^YocSZ|I;*YP?YU{`d(BQq|?7mjAjaHb_Dmxg;IlEKu$%@(+1!?> +=_viE2A$NP=I1?t8gmqSiv!%1F7S(VK5)uLUSp!a?eUXPewmRL(Ayd0^$N5kHGMNXbY2L$IbG$o{gQxsNg1B=?p#P{$=^==bRF;L+%|l5-zcH?=RZ997$ +NIKg1N)5mbHE85b6{2p#)8QlTW3_{lmEVnv4O`XFvl4?Zjo^){K$?1k)+y(z6)t)fuF3|m5r<>1n@QE +tKl{tQbouvaF2NE9@W75aDHlR{mi^)qNV#5K=r3ETEB*da`LAyB6mSq8puvEf_N8t7gE~g2erSV-oVj +fDyiPm7P%-R@o$Ya>Vs!P0tljV5p2@fE`Y&pWKMNY<@$0Q)Pv9j51v7$@Fros@g$KhK#R6&b_PC^7AE +cP5eGQ}V8G1OS*T2c6ff*=^Y+55wOwD;(7v={BMCeXF_^#1PtLtoAqFm#mpxp3~^XGk6oVgi}RgxM02 +gZJmClwX9k2B%kHFnJY>q(Ehq0pu9`q#Up|v~{iEA$A2?$w(!^cPG8wG@+VBp9wuJYRvYQUZh44_HgJ +8O4$BPh%!g&uYPal;{`1yh+gH)FGzKJ8=MN^Bjkw|4ChM8UiUKRI%BK9R-B>0Cu$G16@7jR +H1ls2L|nI}Jrlp*op}FF_wKfDVckItcU&T=$Qh(c1K?;~$4)wp6A;sNyCj$;0u`8U0djo6Sx=0n(-8&qv-i(^^{!CDrrZ34MnBzh)hFP!o2gP=~3)CdJ?QR= +W`+Eh%K;S780{WkPMs*l{6N0U~uF?~*-OIWsHDtj6k0bd*6^x_$IhaU^lITyi7n55#<>^^!7|jj3ANG#IKlJ2rzUTSe?!3lekrcopVRoRkn}ud;Ni8SC*!=z`*kYVyy}R +w?0*h(j`x&NMkg44$ch!NgBx^HIy&7P689(YntzQ9+ia%h4gg!XRyU7Tm^3B1}sHG9;WGt~%RE;Mz^f +YDL0BY??D`G;&v_vo2(w#t8q-1St#dKR!9w_T|a9Xn&sXL&wH@*FiY8tl5ZZff8*HwW!bXj3Z$5f^u3 +?ACe@iGMXR3O6me!i5{LK+}@%f9GVeBl9zh$Nr^fP{AF)VH@s-y*xR9hWE$H`Xtiw3pu2GV&T5cQMfd +_T@wcW2cmm)3+7F>Z90Rf@#eTgl1adfLx7437BRMtp@8h?}X(er@1maV;&|KBXH(Kkpz2J9xoWL0f;X +1aw!2AtHHQ}8;%s+xnMDa) +BzVn4Bo>qZmA<8eI194{Kz#|4Z+91C-kk}J)^%!L;D~p3r+M+$_s!hg%M*<*rpqq5Gkedm=(NGz^w`s +YmX~L?hwnQ$1;E^@%r>fD74vIt*+NLkVtWK)XH^mNa{7QDv_yGafMu0jX;a49IjJ>Swx(XI#Oi0+#fq +y3Glk^K6-B6IE?CBeFMpCkrMftF^QB4{9vPD>fQcEVa5h0>394SdiQgW*`Rm`v=;Oj;G&^tjs&)3x(; +S+FlCaCcLS^)^@wB;)M8n#Y{ +Yi_*pWk5|Gefo5U0B9*P@2)0ZCjp3u5aSbydo@%6gK{bMU1V*^KVM@mIAWJ@0-+;1=AQuW?`+4v_K=P +`rdgm%jI&PtsR_1K-s{g$!gv}mf1M$>~t`JV(t@TwVgP*z+7*-jx^wVgF7ZOW3W!)N(#5V-EWGf31BM +YqX_UF=WOOc@r!Eriz-lGC@BEu{2D +nYv#mHsD0mC()BXE_6e+bOKhf8-`CZVN(`?*Ar3_#nbB+npJ+;q|9ypI4cm*8I*kPK~$r`!Xmb}~QPs +eXwoA4W52$buG^^KWUlTAQQG#2IOV?VrASP2-NR9Ng%(RqBr5>Cs7{_*L_%Ln`MtAmm1JpA^c>)cU(@`L?A +@jRiisjHFtf?TZk9Vrt3LdUq)ZU} +Di^9F5-NBP=8dS~#iTE0U*);PKaa*a~eXaLBPsS_^S2ht6-yhT5_QWZ8P^MfR23~pc!C%tOxej_D?{z +?LtNomcKC6cqxBU#ra|iOadXcfADYUsSW%@90e(#YYR^Opiw|4eU8xs$DG4Y_8ZRNODSy#jb|`O`As9MzN5sSgd%!${DB!gbj*88bCNQNjg?CSI +5|W7hK0flbMxJ%E*qg?ToYS+6&)H|bu^*h5(0;EwYb}KwWlEV2S%HqhM6Xo1~$Jmg`v%n+@<~*f8K2b +vN5?>aH<$Xv!#B~zQjGqa_d7iQnIoKM7A<_B2}{OI^~xx1RkBA;5mmmw59sQc-JGfm67R3U#=;jKQWlNe@VV(1ROO +tDCt@Su{M|L__=$7CMc;WJs2^3d*=6O%W)$Xae#$kpuB3}AG%`DMJ9IA*AQ3 +KaOjUMr0a8FBvHG%WsdGeDz^>tbmXAybU2zLZkEtDxOuWY7A!4kCm9@D_dF>3{<{+tFTDOEm@{p@$** +)&tAvhA3S?;a1+p)SqgGhAhfHbSk;D29uy0*5H^rrsT7DF6Mn~!-Imma?yLmF?;KMrbLf +~qaPkpQbli#ZT8{6q&BS{lOM1sB@FOKifx?P>NKCNZd&ULf?;#f0DopXJ}=VSa4F&USi*kIrl8p5L(* +kIg?#MKE@A#DO3X5)qJ~ll$Na1iqrC8Hm?kOL_)?Vdnr2uY#^-jNOiVxS)co>6du|anGQWn^`YnW}zZ ++?9{Wd}eAmPCNAX4jh*EfZt>~MF%?4AzG?`@3C4+i&&jNacu4+qb3^ZOf9`ZcGNe~*XTazL36RyMP*& +&mLvB!k_ULEmpCZJgIB|B5k%dhoTKM=$XI3s6e~1QY-O00;m^MMG5W*K6$70000P0ssIa0001RX>c!J +c4cm4Z*nhkWpi(Ac4cg7VlQ7`X>MtBUtcb8d2NtA4}vfdhWGx8hDj4bbaQd=YhW|P&6uXbnKUUqysP| +vs~}*t*{ur(D>tQWv&+fm?hivyhb-^V-K;4+RA1?b4<{aokbdR7ZjjkrE&O^X#63V0jEfMHtpPx?$X3}h5klMuYn +e6uT$ZMOjgc{jRK^7QCiUZo=9I{g=_*5J_CED5r*6f6Dj)BQNi2>;VyEXZk;6@?n2RS+O9KQH000080 +7gYaR3Bx#4>Sh=0Pq$703!eZ0B~t=FJE?LZe(wAFLGsbZ)|pDY-wUIaB^>UX=G(`b1ras)mY1p+cp&4 +=PQWW#4~XG0aFA6qfOdbG$@*&Sz44t*{mf|C8=@z_dS=C_>k=)lU)Y`!5W&v?3;w%SqSX+O)9LObQsZr+65Uk=hR{EtS|Wc#dtDN +Stl8+JMfSPt_~Dt&8$G;>g6TeAay5#*!P%nYLPst2yEVV%%>QEyV~!*|W45$uz)&)v{E$)f(CwbC&>d +trBj7LCxNuf!@Urf7v<(c$>ag?qG8^(HLAK#+iNurOf`(_{pj+JZHeKJ$T07c;6Ji$R(#w{N?}uZWBKpSQz`PNDD;+8qN +b%yJNrkyet4=P_&!HlG7wzu8D4`ca+0i5-`BMl><(N_nda3{J_X!95aKA=VtiA510*yNZ_wPv*}(Gti +Ij3wiz4oEz1C0w|Xa?*teFV)zrtX+Jjk!aXzu0jI9`$czU69-8yichK+kWGUL@+y)CCzP`3+S}k+IaK +f}32-@zNlP_4)6_-M8 +t3Egr_b4M*GaN!k*Y?q^UyT!vjQcf;vRBC)u|2*nt4|DJ%-ihN1}4925zc#>Oo +uN7>qUC=}8{<=2dTMJ00YN44pYscBe;DV>bu<+Q%!1o*j<8?kYVms%p>!QdlJwGRxz2jI(y_aAv{(0% +tm%+^3#>fJP}CqkP}$rMIi8>((Vnau^5v#XDg#bD;O$>lL-E>TaokWeD-;NAZ#juImR%OK<0{G9xyV9 +b&-o07nEqX~iee#VkXTTI=YlekudEz$2QgkX`^g=4<|E>_`HX2ycTyoP@DdBzfFF131VrfC?t-nMOXA +r~7TDAW&>UGa_P3Gr@XY)h)WJbO)5VfC4`;(U{)FPs#Xtm7@S=OG=%AK}nnKYw0>;G>y+2)M2e=!Hd} +ktht3cUbXG_3c!sEUD|csJs-)F=uyl#vVv`4KWBO_`)3t-?>HO{$rq?Ff45f)~V1P~NB(2P+hGMh&(OSKa(@P2y$cJl4 +H9OVQTm2F2PEmI0otnJ(X4=7f^Ae37rSc|^IK5R;T0J|$K-euD(@?__)A;wtDu-@I?0ZXv?2w=%(UIB6Q*L=ae5ew$8QQb7HE*lJ>|L|};alKz~sxSN~E;5!7r!^8IfdiwB<1jtMEK4B(99f +4Y&>ar>4kl%v#}wyVE7qQOrm&hcD7XHQN`!i14Rj!Mhi)8TVW){VUCAuqah|!cVLYCLFocth)UTGDz105+hQ>f|2H^VhL-g-f&zlZIDRP^l@d@6aWAK2mnS!LsX?l(j_Va001ur001KZ003}la4%nWWo~3|axZdab8l>RWo&6;FLGsYZ*p{H +a&s{h2iFF%XCp8!U{@9+e~)|Lh&{qD#rj?4h>~!hv|jTYV(gFv2Q9N$SA|Oko +>Ox-S%k<`Zg75;|f8xw9(kNeK2;Kk>|$!$z6qrJs{>G>{2}r&`&m~nvYrlP3JM??I@OunBuh~F +7lc!MC=^!m?-(72I&GH(ilDIt)C))k?09n=wPJdH>y>8687^Lt5s#=ecA7bn1(e9dzPV-1on^uj7ovt +d=|bwEZ7cq^1!N;E=p>CSGZ}H-0-x7sYbe^_Hjif=cWm*NwPAr$1$(Z``{+Xhy|V*Dy<9#3Maj)m+dl +A1j)-Fw*7RD5;LA`2PM-YZIbM!_lodmuVGIlHFL;%~{v2c`*%gzsCx_&E?mhJ_tk%k_^u{WuXqk386h +DIF2UqZ*wK`<(sZ8y0TaMxu+sK(vuiB3H<#Xd9_0=FA?yBes+I-ENkIqUTf3?Kk9^t=SR +vr@7WW;_&TBi^H#C5C$NyUj2rB{WdR@Xe{g$q6tVv@sCzCi=KD=qF)kwdnA8|OhIDm$~o^BghR0=u3kRO1Tq5@95imqnTH49@Ql_JF(An4T`fsdixnxZ{Fb +Uc!50^;}g=nt+x!n7~OjxwLe}KVpCg2k+z$MI7CaFEJu9Z^kYOR1Hy@sD-4T1-sOVH5$WBFk0z-QFvV +_R3KwLRyo9EM)(#(~QlHR2uH3TMBzOrZ8U%ZEU>d0V%IwL~uqy`vw?{gK`%5Z<;?Bh;#BLWWk`A+zfh +13IHo(SRJ!hGRJ}?FNk5u}}+#{=PkRfYMIXVh~(rH-VP!v1!i@^8fwNzCXA9qgzYr#Q{4ovGrJSM&5- +azCss*3^hx-Y3W+H*%EXCwu)<7hPgQ)!PSV?Nv}x@;qJypBO4H`_l*mZN^K+AwqeBWV2pCZ(L#f1=BI +ABthDoB=Ob@uJ*Q;2iN*;B5ln;AZf2V|uv@kOxj!ETFn^EkN(=<7K9?7%)?I2@ED9t&zj5mN+4&>*As +R3&sI#Q74uYLl~UTbj +Dew$zCn}WAQ8kC-e2*sXfYZbz4P~gMkr?qJ)v29HY+q`3p9%>_9V(R{#sgV2=iA=MJ~%=3fVgM(OSLS +hL(w8cBbxYxR^zD>GqbG&%Cu?h{88Eh@i-!6+>1VmbjN&0lLknLU1P+mD=gFW+F_j!m`M!@t9oU23q&7X8 +^Fs@@mC*ZT{Qe&Zp`Bw82bd#Oehv%d~HWXb0RbNY^&c2c>9v9AyfgHy)T<#D43G|$OS;{6HUVXS>$ug +3V^U7$aa;-N92ciZsy?ctz@DkrK!0N(_Gk$n{VN8DyV5HuUstChg-?zxo8JDU)K+hC(Sz}C)XU%kMxn +oJJ3$}vadeQZHD9njSbi$3+pCp|CvL_9*dySrD5|2x0{2^lUH6&eyN`Osf(0;{IA-iLbk{`-47Mtja% +@K0YzaHHwyBiRSzc9a#E6P&qcb~fE8kDG>{H(9KJgg?OmU?B{#@&}9pHbVw`(OkEjccaci<#D4_?i1N +H5g{TE8}O|b6u1_OGL(#axY*y6hOVcHBeh1-*%V9G7PGXs;H6Xuk6rRnbef{?cL +42A8Y62rT}~(;#kmMKAXy_+6?W+U=ik?<;r)i)=9C0|UnsyOlC*j9T8RKYXNOs9TzxZSWjZ}9!MaBws?q111JKL*Pn +1p{FpukbAT$&BeO_+ouUy8I|Pkt;9wnwVvjIv>6)a;ke>I(>ZZUIEn;VPErH1RUBwn>DPX0_8$WdLj& +V`L&;|JR>p5o1BpZ_F$335#C{!^LrCzy-fATh~u3Tq5Fvf4~XQZ>-m8LG51`XV2rlXSl!r#Xv&mjKp? +SAFrHGb2^e_<6l|*@e=9gTIr-bc~CD@2q0>Sua>WAp6rN&?IYO}k90f1L>SbLae@@-5*u9X$Db +VPL+JA_^(p^RDABc4rG);T%Rk=QIi%gee&sD>3sBMfQ?7G~k?GPABDR~&X-4Y)j5F*nRSKcWLMK6L|v +N13v;%-a>;UT0{brN#|6+3($bKp$7g4A?hiOcUwNaV5{y3@to)&f8~97I|ht+Klm{yvSH_JG2Fp+KhY +_e0jruIC4lVRibgOFYkfkO;C$3_rpkqJ*>gXLS-|mW*LFfbwp}AL4E>ZaD#TJW_!`^#}n`cEWO00-k_ +RSTvZ{x`lSJNC?N&9c)93V=S|9ql?~&l^q4+@^Mml3potTt_DDG|_f+s;+(CR{K`^?+WcgpPU=->7vI +ynfd;_*7wu1(|+J59E0H4=c5PYKG>fp6Z0FP8=6b185sC+vpqy2q>a)M_5*w$AlHgv-3e%fBIZ-1NKCS>3*sv>$aZwD2*P` +eHX?|2#NV)eaYlXtcI*hz-in9}qye)7sMg|<6Dw|RLVDckQpGRqKKuUXiT8hx-WTvNUiLNS<+=t1PKg +Qd;Wd9Mo54f(`vQ20%$G!5kUXT;FF?B%n)$QzzSJIeZE+mYZgL_GpQ&ipO>3*t{l +AkJbqvR*tK!Jf3|fW9m#-~IfSs%I60b^op)gX-3o9Qh{mPU;U5!+(D3*88`zV7CX|OH~mFtOkS3`2+H +B4c84dqf4xOC_%*7U&=>BFN{Ex%Le^GL?6^FoDDX;1CqP7cY5u36Ii}c8{F5tY>=8@CnjuzUt>HUMGX +SLRYYbgbW8S!HT(TdWP3mHQ>!IVQJG5IV8|XGNaFIV;ZyNCEn_Co(Ijg4WVoHDP%8Fp2Ub11zJ27)## +Bdx$|KtO(7Nla#yc6|&-Wb!sLg2+*FPdmHYhV21px!o#APoYSE{=5l&RL`V+fe>gxVb7W&JN=B_p&F+ +J30P=$*>miw?82yc93ro(Wa8-@LOVykAbl8NPhvgN-<#rISs8V%wfQNeJ!19x4FO?WuYkHllU4#>O|3 +lNKwMVQeH|!0F=uWg3%dj-~1;GJ@;VGX+H~P(ffaGd~(1n;qmnW^)}o^O^MP@jg5CYWDtO%wAJ&_8+g +n^q3Y^%=5bHv;VxPcH=+)j{>!Mu6+6xwdmhwH?J;N`_I?M=PTAPAV6v#@d-|WOcimjDc4kCz<;t;r~p +>tl<*);Q@yM`<3D-Tn=WDJY2nPOye3Vqig~5x{~B?;Qt0-dbnBYJpZmD5q3uD~!i`e2agRN7piyF>W1 +n(6s9fti_Md!st8xR35{IC(8~MS5Ss{~yPoe!rhy6Cupp~e7uN)KxwJ!>2-T?HA4!f{$V%(TP)k_W`< +2jd?DDZ49C&(|7+)&A~O%3(QVsi|{Gngwd&R;gvsP<33AXU8BD%+tL!8V^vU%srtpH~;NQZ@IOV`2n4 +7J+7L>2K?{5m*xt|Er?IzHNt?Pw~No0GmvQ93Rsq_Yao*cVA&#@DT#}xB-rj?U#Sen6IP;e|I0%?CoD ++#gfWIKFMEDq0HBAa|WLEws@OXH-1g6(zKs42dQ|GHz7VZKL;$t%7HAO%qbcw|1_8{v?>`CJp_7mpc1 +nHuxgYCd*Eb?o>o_WoY=!30#BS#I!UFKcvZ*{1-j>p2Ta$(Xz3@>W4)BkaoXIR@HO?$2fXJH%U@!pLN +?Q>CxM4qh~Z`Pz!zEFauA(Ls8I`=zV<*xCT?t8A>8Ov_9Xq +QdzK5i-k$*nPL)R3Q8X3@wj#$7*^$fj=*J~xC2;OJ|KR}y7jvBg8r@aC&20oCwm@mnJ3<^TM!K!j#t!FacWizOYoj>*t +=HD0odF^Zc{tj1LTkP*dwdj^F?C&R40o3v7t?DW2HJM!_d<{{8?@~0AnqlSW>6(ZV(F0rIC +1$krn*Mb!Z3>sGgQa(c7xDFHcToUi51o0?jXBjnRp<59SquL#I7SwQJ+6=Ksg1o=46I8oue>%jUw{9* +--Qj`&)92;FkMVbChyvIm1_{gmPkTrL)*ZLZb7isSsO=clbu?#dBGdtQN;?`1+p}Vy>5|{)y +F%fhI*<~!jVM0dhp;&_U?SVybJe)W*LBub=kW-nA*K~WwR;(bJ_7dp4-4>A-~K6YMVM@RurlTJ)!gEfw4M>JF~jip`RXJUMi*4z&23>J({j3yB7dsKE +ttNj0%1Ji-wCw+s)ZO04XGrctURcSI4gC#5<>2dWf+acip+AeVNegmmaH`Vb1Ppz72+jE?s`FJ+D-Tj +vvi1O3D3u5IJvxBor%ul*}=l<2r4d+G+CxkKh^Ub@BZpcKYcO*$z*D{@$nW68y|v;PB7O9KQH000080 +7gYaR8-v1a8m^U0J;(Y03iSX0B~t=FJE?LZe(wAFLGsbZ)|pDY-wUIb98cbV{~&aaCxm*ZEu`L5dMC@ +VtV}oDxqpWT6Ls0ZK|qjRK-zh$+9>O2D3R}>F#o8YWcr+c3EB)INM5cI$0d^KJ(1%tXWxep@1nAit|E +lHksfhgb6R}nBI5fgck)Sit$QD@jlsXHc1gn3BNKyuQB~y#C7iR{U`e6Uu=Lr+wJyexYO@JD$yjW5eO +%ya!9QZV0wo#B*u-ANHK#bVii+SEd?6*fl%D@M +SLBrRDNO_8Qk6}o(Kx0rPSe%oYpACw<*&jM=m7B^6sPRrO7d8?UZqi;aUfHm~z +rI3(MMeBGVPkR)A6S+H>7oi!r-Bt5mIFFO+Ysbm`73 +x;X33`aIey&2dBYV*lw@Do6ivmzB(ogXo-y8}XcL6@vQEyE%;MVR@~i##>MCx?jBwey&2Dn+H_3st$z +?GGpTAH)(XF8-o=Q{BDUNgvwxR`=qF4xsE90*Di;tmJ~8G;~sV`Hok(IKwSJjTiegqxWivp?{onbm}# +OeIo9M$LVP)us(lEZ|5;Td?OwM82|d)kTPG!%3JC6KHe45kbyN?=jupuPWL^nUT6K)M9)ng1?;G`%A% +;^)qf~>6j641wR)?$zP`SIzgv~_3VsZ~aIu(p;k>ubOts&k(oHlfpQu)%bzA3X&YX#bo5Q%T;eCR&8p +gzIge>rGeIX70T347|H%xMh+;fXZyF%c`6H*W!tqz{=`_Hd}C8r5_3ErXGI2PG43xGQoZL}|RbZ9tj> +G}22`Xigt`{B!78n@J*1HLmRhJg~jjT7pv)->6^z>f@1i<`kev=h*=W+K#`2w5j&&CuOo-@-0qRZ4bL +lGE_^cNVs9Xm`-)+nH+nJ0M7#MYXek;tkDSRvq~P&C%6VDT<=iBE31I$C}g=?9dTudD)Khue+>pLDEF +tk}kRrCFJxTts+c~B9#l?+~rUzjEzcEXjd-^*Kpn4A`HJHWd1L4%#Xge8IxqjqTFQ +zJEeYr*f^{_ZgW{)i+EV&XcolrDxHdJ!a5l0ZlvP!zP^N!YEm@$PvD_J$T196Y!jc)l(QT{E9`y3T~Z +I#4FZ)5O$9OX}87JL#iFiLLnvlV3E0gA>g+-m;GRs`&Ky?00jT_6dPTE1B7u__{jAd+uJ1IWic!Jc4c +m4Z*nhkWpi(Ac4cg7VlQKFZE#_9FJE72ZfSI1UoLQY0{~D<0|XQR000O8MnywZ8`mypV*mgEoB#j-Fa +Q7maA|NaUv_0~WN&gWa%FRGY<6XAX<{#9Z*6d4bT4CXY;0v?bZKvHb6;U%V=i!ci;qvt$%&6wuvLgw@ +=Yu#$jnPu(os+fPAx1=%}Y*Iisj-eDXO&MQUHRqqWoNin*ab%O9KQH0000807gYaRKxl`YncZC0IU`O02}}S0B~t=FJE?LZe(w +AFLG&PXfI!1X>MtBUtcb8d5u_IZ{xNSefO^*)Q8%E)(?F&ssg#`exw&S33dY%7wJN!CCcKiEUF|G*L~ +=3?-`PkC0X`1KrD$I9t~&a%nTJp(MOq;%!)rP<8{uqg11%{ZN&%?M^Us`$b +F-@Y}`|th3`So1p^YAmlav1ZSuG^} +Xr%sR^(zqLatYUTn%i$7Yag#mO}9lIA&td!i;-&=$XgvFmtB{ONOBiq3mHN!sF3n%(f*jCrZD@uQNor +!LHgZ2t_yK&dBnQrH94E{^|RmR!#gnZqNom9U*>E@OzKdYUprx$wT529*$!}ZQ=dK`$7Wpykryu*R4ugd +pk?{WU1rnb-3I>^~HRXnFm8vlQj#mZ~6Gv(o@QGAnUYVs?G1E4PcJSm?a@Hs#{Yw}O(vmBTH~pAfU<< +s@tm+sewmL9%rw@EGruW_tx0p1+b)b5;nq2tF`ExOLwkyPKU2C>WD1VV0PwU? ++ssC(&@tE#A8o_CVZr>fp`68*BEnD0o|0LyE%->mCrEI0w8dftMjslK4SOi_KUkstTrB+q8B9`5U}=0 +wqtfWpLmK`5n#lpjKg0JJ(V1LPX?h3jN^HQjbjjXG`+`2=@bARVyZn0{dlnaH)`22Yxhu5g0wExeK9S +>Jjm-63wZ9i9(d{oCQL%V*;<}*+?@9{j7%hYXrFVgzC6NVbdh|kI4lI{#QfdrC*GyJ^Scxz#y{zh&?y +{l5@))K}VCara0d)B2L17@Pnn?l@a4A}o)J +L9pblxx>zTRS`){z*u6cQR!LB~Ler1w44174N?0FSbuZ$=EBeWbUWtSW +13ytXfgU#Fgp=oNKwP>DDjoq{$s@Nd;-c?hC(IQaIZ_ZN-!|P_pYx<&;4%O{-2A-g#^Zl}EgIX!l#t7 +_>#Bk_i{`UUp1_A5Kuc%V%izwk9i|L})X8O4y7L$z3PVK2~NxKVgo!IodMdINNd~Gip%9EL%^>>l9>j ++M0|vf+n8e;3b2Wiot-FGN=|evHpUCF$?tsmqgajn +A!|^ml%;D;wc#doA}?rheh}A6PARHpu0Bv0seHC{;F;W;rBZzXgZ7tHq(jXDg*_y0xGW5Kw%b?yzW6S~8R_tW +$ilaMJp%2`SkS_znmlITM`Gh=Mpy98s;@)=N^QFJb_q +RQj2zowSUb2B)@&escF(xp2p4bDK_9ismHi^BZ3jI?7+IAev(>KXeT`-BHcpI^A~=fjTt;p(BK>0uH_ +Y&6Gm2sD_!A6CAQ2;wo>6ZadBh?xxD0X1kSo-%486Gr0^MqpqcjebRSz&^cj0WAAJ%QrRg4rmNbnvEuGqtIujUzM)%o11 +90_y)!?+B|3sqQE19dyJ%gVHDUb +jxFqKsNs-@rnSR-Cy305+oO!MAMDL0Fy%rS*-x-Bm(Y&`mldS4X=D$VLc!t5AkRlZ5*p+ROl1-6yKG| +|vaEfD#fdBCtl-gT+X;64Y>A6$dmcHXaT4VMT~tkv`SbXP5ffsZ(O;IWIixWgBBP9UT{Y(si*ccsb!^ +Nd9Q%Uq<&?5Dhg6{EGRh5X%p+ubxtJU9+-Njxm&UQO<+)(5(;)D1*nn6T&ahHLT9z(H@Dnq4V32g6Q` +k08M(xy$Eax@Ji62+2+R51sz@tFVK8dJ5WcrdpR+`0VMzL2=r0akO>{+|q5u+M8enzAVQx?e-?G&X8l +uKrd94ERyh8ZhOvH%^c%_+*LWso6!`z@G~g`7EZA*KQ=8us;(L0p5h%%vG~+b|ct{q`YqK?YbDWN0nT +VbdR~2<$3@nP_D>J!*l}?UfajFnj8!Pt$DXF=^*a@~3`#9+NR=u9G>tu6=XsP0dgatxNu0`QON7?xw% +ZDyIq;)8#(Xn~k~?ronrN6Kbi?X^-KCrPwbV2jV-4{PLLIGN#=JWNV;c9^Gb^V6m`l8acY;D+5n))HL +mRCI|(#8L$yCq5?MM0Y4E@mC=x(?a?7vnfB213K{hBo|=cxPE~XsJUQQ2eE1Z5O#R +;3LCP>yfZ0tzM4d=xMT$Ftm_i$$6Wb50Ev{khy +P$-2HAAD*MqNWa6w&e_tekkV%mg(1S1~-t(QNk84w+OoAuO>7(oRz9I26rp$b?p{gs^%2?UxxIu!S}d +-8wDZ_@3-cA1B9e?dO*Fit$;NX^FJ2GnCh!6mZ=LLH$F4|!|@o)G48VUnLFJbpD{m}h}Fi2-6A64Q{w ++K{jTh&f;umPH&`Qvzs)FcFwgdNIHW8WT6MapDd#B#3{|1_1y)xt9R66_Q$q!yA~-rD4phtgnE%(sVN +mZ{Q;Xe2QSo+*tJJlA;81E*ppf;$*C8CD)rdrw)uN433-@@!_bn76$5(a|Vg)7E>hnmXU0pVUY1A>HR3zAe7t)Bwfv*?ow$+(BR1|~l`d~eO=X%Z4)pYi$Czm3TWeKcs+NzzhT-gGv%0$_19Y)qZo +D8jA+IMB21$|oI$Z3ZI;@Ox}f6I5F)=nTZZ24*aDnn#v;L@Q5b-87a0Ps76eD~F--~Ro*2k(FN;O73n +?tS^-)~|lJfAhhIpTfhp@810Wlh5G+|8C#?;r{-XUof~vL07PPmXfAi{cz^X6i|C(lWF7^Zo@l87XP6j{X!uJNacRx;~x2%8QKLoBH~6zXHr=`$MP4;?0O +1ZGwrl;&VZ0+~^pi$mH)DHphIb?d1<($>71aBe|Y4ntY09#J%cD3(g&-A&Dh-~@p*$lY46puxC>uerW +<@$!Xd%g|bpvJ#Ui`kjY5zMeU%we*pUBt~vv)m~2vhtDkekF2LIM}Y(B7V0N*E&`u2F2y4 +#r03)-jKt1HIR(h`0v{manbYM(M%t<&0*2z8N;;V3PII$dT6QM?Y}3W3=nXGtz1JO$DC@gzF4Y_wKd# +`4M4Cz1%&)KU_y&Que5HZ;l0YinytUl(XB$cxP3RjE$3XGx{X=BGib<+ic1e8xC^`V8O{c0RG%T4xOS +o|$b+DI_Ry4NkUg?Z^h}Q5{Ej(7uGOAeW~PF-LAT1*GslKVp8= +iki8KoRaxNvTa9DIyMe}fR#kb4JwoIcfD{Ya%mrdu>e}71o@z8skQZd75yR6t8gm<6*`oqg(;*8B2xS +Wk23b&tet3EX_3#RkyMet;UQGhQaP|cri&#}%9#oyCX=Z_asG%~s<%LGB|1{xi +oXxIEwdF85A`QDhsG=;+XUSYvtJ-a(Vrxo=tE;N%!YE**MMruzY`yu+dlV%7VlZg$IC>|wy6#^8auF2IY2YnSwr!+`y4yth@? +R8v(&exVC|>o>e=-DBXS5E~@$ZAL^uc4_1ho7y9VL@}f!0h7xw+w^8xVpGPJo-=M{@MK9YkVm$e4;74Q{B3zCT{5dmPi0#PoK;?8e@5Zb-i?&>$*G?$4di%)f)f3HJ>ME9;O +UA@uJ9vWa*uh}HSf^4RCi0#dt-9UKykI*xG2kYE-69$}0a*Px>m4>&0hXg>+JIU~RLlICatK8y7u)5o +>)FF(2%vk!_!CM4Sz?F>(wQRc?(Ui;*0@yfkg@D2uF5@ML_yhS=HB$l40)B2Q4lhGIRO!KEf|v|Mo7o +I2*`u-RT77s39u~S3+^vV&JG;JBhkUv8k{`G1&L7h(&`IFfLK;`vmgWBk{1k9brgQ4F1S;({0C4=0|XQR000O8MnywZ-@||wHwpj%a3=r&A +OHXWaA|NaUv_0~WN&gWa%p2|FJEJ2Y;0e5X=HS0b1rasU7AhHra2LX_x&p#aHG&lzALqGAu1@$PQisp +(=v??I-`s&GXLH>r|zCNCqqvaxsp5IsZ`~8fAad(e?R~0^|w#oefs|6=TBe1{`$k~+mHYF^x^ZT@4x- +#yO00;@V{@q{`~j<{Nmp~ynFZS-+uMghd=%PH-G%yA6~zF{rTN1{`+Zp|H8kYz0YKQ|LXDo&+Ct%+51 +4Y-&*)hpe_EMWz +xReLP5oo#<+iLin@`RI6#?I{;Qa|r3*=6C@V96m}T83dRU898)l=6UF_vO+h!?{R#z=`>^X$tYVE&Y5 +=LfN0T7ohICT`?iMPK8FOC9yYBp3n(pjW)N<-m<|qHg?K4=mjOc$RvBk{&ek<542ACBkZNb{G>c!gYB +d|AeJNL2^XQ%S^I$L?Ft7zuVW}&gf0-P6H>ZVVHrY7mm0>N@_<;!lqc+jT_EeEJmDfVfsR>fF8%BcFs +MN6jgZp$jwK5z6EaGyPRaw~1cj8=2Pb66rtLh%DNl$l&7qJpPx%HHOiIcVqV;u^#BJD@7=bWyn0b>cv +h#lFraQzo;g(t2EV<=yb#Cmg+dGnz@G5D9G9iwm9dj&`%$umYcFA!yhm<-UC$78Ln9pXU-!$2A&q3&f;Nm;E^%2QcJ0ORK=3h3o>cnju{vJ`8CBVW?A{&;jKXuZpQlc|h#>RprDj+Ju +njh~kQi9;SSQ16N+ip%4uX8T%UW)>59(2&GF47sOgyN-j7>Dc_*s{H8qN0Mv$TvgFi~GfNJI=#n~+aS +3DQO}k|5l4+MVCuGZAyd2wg=_R!sO{6>_R@22$FCOZpM>~?6@NCFRjj6LDM%4-yB4iZ^%V4^ftZbItS +`q`aB4^Wh$E7^sAiPRCp$mkeuqr3cc&I~4$<_#)l%(ewQpVod`7Y)nlIYS9U(t9Inchb>*!mE|63Im< +v$P1+TZ`l*JUhP|4s}Qqh#eAg3&b_Lo7m*dZto#p<#wF(kf&Yp0>{8~@__I|LJD*&M93|$4ZtRKdMAWDAPz#x1LC?*c|c=Hs|q_|SGW +naOE^I(Pw0d?B4u*b=*92J)#6T;U%i6}Yo?ut2_*0t`|;b}n0g +F>VS@hn;zwy#FKD|6DuUa4(-XrISl1hF()=+MOlVOv)`sG-{`j17^HS^=bY@T^oEtK?qVw< +4Sxl0*|}qpPQ07oRp^DSs=nER@eL)>Sfp`5Ly33TtkdZ;_2qg&rH>Lk5|0aeVpoiv0JRj;CrowVR#nOQ>9wm4s)+R@ea$NrK@T|lY^W_9;U6> +O)O_yO>PploBxXvDRVrK`ZYu#&bzL$m|eP!u&m&Q#px)tq-m7Z8DvD`jZ>xHv))xq=e5lZ`QE3wW=T< +2KJRDyTnt(Z-wIx%+DoO)TWo?dSRF{cTOG^2x5Z@%N?%@RtU3L}lH5$d#Tk;W)PY1}gTK(b~nOG;OaB +UHO^OWdpAhD&lydUOY#g&myrG)imnTt4cE4QQwzb>Pv6hs1>uS0I{(lELo^9}22ncoWNph%^I=t-&qQ +o>=Sd@J^t#CyqS{B_V{<4TMsMpT{+nJb1@$$A$B#6Yq=TexkpE-lI>I}m9Ogt2K#;dh!B@8x0=_o6ojvjU5&ZxCXKo(a*XX)OxbRR6;H +SUh|NPLyfh`3*a=Oqkv#ngB{3$?D&D@*GhtcG(Ls%s_moSW>@O1C`4?K;J+Vr@g|a2m}e +)KrZ9{-_f>>uzGgB0Uo8_GyhX7-}e9S$b&)`GXkLRmsjuww9)EA4)fJ%e8FkoW*QUzFFARx-CbkKeQl +iiDl7Ro`&?lPt13lbi+@)TjGA(j4ZTq +MLr+MsZ9&ueFgb%e8!>0(f&qa${2t9k$iLvdWw&2Q2LP^*@D(3%DXKCC+Q1V7F8Z2}etgi7}0R94A>X +cUj#M?bHmONI3S(|79v9!E6Ac}7LiKeeFd^{PmUKxz-!zNCR;`_!*Q%e*Yw&XyzpWsV|{ +@sDMS~5Tv_ZAU4Uo)WPC;XO%6Ixa%0Dnk^maq(9)y&YpZ)ne-C_Gv+oB?&dL7W+UjewThlWzef-w5`) +GZ<|*FFK9@mKi$omOo-ruRG(ZO4lQG%?N4|T$pY +7hqosm`b=~ssB%usvP_Q(?zdR-Zv_Yv+OVe$I=`ARpNwndHnQ>jT +Z=PeK5g8y`>cl-eJX1i*M;ua+n@Iwhxg%EM(z?HMW@91mo(7V84SR2_|*5@=J}UYp|3R$u%3*oS1Y%V +FS{CFX&IbPC}##E4eF~ZOS9y5y*2uC2Ho_PH2eZS!A2j7i~|65uf|`akKa6uUKZ|~FJaqX-u)j?O9KQ +H0000807gYaRDUk+fGlwU0Lvo+03ZMW0B~t=FJE?LZe(wAFLG&PXfI!7ZEtF6Ut@1%WpgfYd7Qo5avV +95DEPi#F=xhXY-ViLR^2_*-Lq!a4u``5xc?vj_y6;M{h$BvzyHJk_rLrD|K}fnpJv`T^t;R(v +7R6PSO2MhoBzn0)XL_Gq0M}hyCP~e{w*zb6qJj>$9`@~nLKj~)ts|flDL4!f=d;jcp{G^ljFw#qn^keQPL7ocO`Odm-P6mvVN0{a_00Slo?m* +j!nKFA1puB?try7uUS(FBRu!1z?!a+FCG)|soi60uAzZyUT^hJZ_S<>-?%f<-nvFiBU8P89Wc&>zQ?r +4ZZf8GK4&>#7!K+z!ddn_Fy=n+79e|s@zs+GFKLM}uM`i?+@ARi&na|89md^PG>=a=6EXzz45eVNj +LgLQ{A%c7cNRS2T&%aw)w$A+_yhvW``i%2&{w+n1<&H{FbMHae1`xL7U%~6Bzz&_*2L6sfpb>J$ +r2{nFW&^k2*zWUWK}yVSR8|rbmP?fml?)?Q#AP3im09$0~m+#s1xAcegxPkPGT%!(3zO8VcsQAOvibD +mP-x`;$;<$PlI&mr}!&JNTX+n9=-)QU%I^n*1czV)_0TG&vf@+86a4Rp5cY0nn$D)y+%phMv|G-|rjitw}NZ0T+v=Doj18x?x0Kv2k@5Q +4a0?{1dF;cLa{vY8%X54?ni{q{abaTE$C1^rurD21~I70y4RTgrGD4a!fCwS^Ju_h{&UHSOm|KA^e_< +{ZK!=L`F|Mmy{xBt+8V|Bbg_ccrI(s278@Y&8?r-&&@yu=oR`)YhH;km7qgr$5c1sJ54RBnZWcx=G*G +RX2I9t&HQM}fAg&#{*E`Q$YX^@axd;f#<&MeAQ+rRe)f%m@TMZvEhLfZE?cdxXrw3#^0vL|AJC`HVUn +b%#QNur9yER#GC2<8TtORLkU;z)88Ta`O#quk;_K_0;GCzoRAh5}VtBj||dFtkDA|G`d_j?m}bCmv4; +!96$+QDJDqm0W>s!sa`1u0k>%(ceN2vOK`vkRZH+CmY{%O!N0`o0SBTb_9eD{+-L8xFwV!A>oJ0kQ2S +TZp0SZ1VwPV3$fcjM34*-@SY?iUFd>&ZL7MtGLO2D4i77H|8i#(Mtbu~yU#W3DE4N3;d@U^%wq +yGbN2RAje@Uhk=KtCj+b(ikftWV*BZgtPdVbi0l=O9j74e +20^Fu`3yk@acKO24+zF}iwzP?`5Z&JN#aWzf +}Q|0iMz%p4*@hUJZMv<+BS@m^mkr2^p)85Kh+^#k8f4Il<(R-Zm*a^7;x^=auxLcrIYiW!oMPU=~0i^oas8=*N}k;c%T9PD1aTz2Rt?r*V!BaKEr3m>U5+ +490Q;l4Eum*pXgrK4-GT%0V|+Dm}frnF+X5+5CMY3=lcl+d=0>XTGa}`a|2*}?VPr$@=EF|?tsw{j7W>MPh_^;QVOB8ioIgPy(Iz#XF$Zl60fxF`Ym1d;az?Bz;u)bZNi8iSqyJ`vfc7-NaXtclgYC&jJaOXjFvz<@dD^t67u&Hh0JpUK#{LXGq&voI9 +iJO|Q+kXSGY(*>SV4R$-f)a9Cilho?gv2*0W!{gPfQeJdwh)5dR)$u34&<}j9G#^r)LQlfQZ%#CmMnE ++BfD~5p}e-0gYML50Ywl`xvhq;}}h$V{8q^e2(M;ZAgysvNz5}*jNNoV+7U)=tm!79-pvu5;4Gfu7Ad +pDaq5+fauxIr(e{=5IthaZ$~(0_8AK-jk&I2O?(Ita~pDdTSNRokY(sta}^+PG<%9QA@xfm5-CBPV7* +PnK`UM%mv0du(jY9~!Uh3jlQXtJ|3;xZ3`0Tm-9cpk)Ty0{#6JW4ych6+@nKav!79SH)X6xI{`m@O&D +w^0|NKYYrvLWmf3JsoQ{gXZ{XW67g8NDxLm6Sb*`zyUVW_9!30@%6KsZ?*-(RR7U%=l1JR10XVqxG*1 +kAWDaW9rd2o919xyLwTNbN0#p=0zDyz-{vSSGGo0f90Flo2{AKf&{|2*JwJFA4vvFL(U*oO3(V>o{n-SkIqX_b4C*nQmOnQDN#OBs&fskn$SM1s2o+_+-;P2yQWkh>j1foSBg`T +!j#n5u!;M7Be`>^L1ALpJ`6YMjlbF62OfdQWjvi +Z_mmEdQ_Kui)tVZn_3_B7_!XY|_<@7Or`?N!tb#`p*5RV=%duq!3tP&?dNJT{h%M;hP7vFE3-8>p%M%s8}eECid(R=_K40*h$a1c}SR#7y%zwxCecbqj6A_6tS$xGGD-f+0KD7PK$N$arH*~m=yI0`Ze8mHn&xp +%F41u)FxX45_Q>>sK8wGq%uP6N>o<9C2j8A^16^y71cB5~7s9*^D!7ze0wp@LYC;Ju8!+gHOj9 +Kv&YyND-2h)-6SwG6TwL*gY3ZSewg6;;&f)#Kr8NLFtd2TR$1k~b~4OkZG6R>aiSBfE&4#$#eoAdP&- +{5UPTet3kfVaUJhJjGce$KTX`;yxB&xvWBh#BU~ +|!@Diezmw>8_NNp+iK!P)pA}aIvcwHZW;>8^M`k;&0?(yW|bGZ_p%1>F}_{oW=(#24_! +9(lM#2k<8E;iGMz!G@`QWC8HieSma>-(w;+dtPK9`_T59_On}*xFwaQXZs3Zov=>xbYiFC +0%`pnphP1!bOzKHqfouD?!XRIq*&HyQqNbHVB`4c3p9R$iEuKi8?~w-NOjt8Z;jz9aLV1YpcZ_l4_sf +N-TG5kgU!T+q~S6&!j_N`YwB4F>n-j^c6Ft6|-^I@5u%H07m$V#C)#DiCYo*Th>0|Hct$o9J#gAI)n~ +)o#Hu0 +CTKKSDDvmZwrwPL({^5Jv2G``)p8fay4?q0St6|K+S=HJRiNpOnFCE5e8+r5=!}R-!VYx-)oqK(5kn; +|7mS)L?C2L)Zy&#aF*!K##lWW0s_9FsGX|l-~Dl8V1B9pm(U7hS4x7Tsz@S!%&cP_79#q2}zPOL{iuf +aeG&e>^c|*CMVzC3N&&38s+km(-LS5Q@XObiQDA(g}!A{S=NX{(*JO>odSbAR9m&?rbSAfJrf1XRSoU~7&J(1#AJw$EUu;=r=gFmCTiu( +FsClrqnyFt=bcI|};>W97* +#mKG46&7i#PD~c@n9lVBwa%=9BOB&oxrn73wXtmgz&vvsb!>p}nz&;?!1Vq7$rJR}SzW4G-Ga7}^o-V +FA<@6_5WT04XW-4?=7Vaxm-!tP@m#||)wm0dBEVIyyW?2gNE&$ESaDv02^8l)=F0V3Uxns5&o`e5uAm +3ub81B&YX|w@DF*Y;$#oDs;`mDOWI$YjkR;%-#wuos#Ape)9U3+#w#C~H4I2}?!)=F#O^F+#ZHI;piL +Jr5L&Ii3+JNcL(5QDpOOJ75nqBHM&Q*zV{~ZmbukD&<*(9KE)S4FAq;Or|HH|SzXaC@-laM4q;?z;vD +UwallR7`kRLX$0w-zw1UT;m=nH01>yfuYqlDO3FttmZ{(EiC&Hzi4f<;S=Co}Y2|P6xOae?nl^@AA!} +Gz_N(Ky8)ZqgK&N!_$L+O>u2qy(Bm|MC~&yGVJRnf+^EJ{el|jBEwWa**9T`*Z#5zGK@9K#~>%zD!9* +i5cW!Q8Kqg0cQbu;aRm%|Uc?PDnAE$s09IT|l_G`Mh&saET|`Y@n#FSOvAcrWGmj5m8t|=A4(Cs6`xq +l7Q4Rnl(}#uAJ7#NNy%jt}863Kq>fs`!74SnA_0)p4aT~P@Jwx}W_jf25ZJ&1V95c{qW3huLn1S!IO* +?pYQB?MiojS-!0!ZcHk5pJ}^#yKJ$E+Kl&DL_>_F-$hae@%WdIeay56w|eO@RAvaH|~DrI)BN5=WGAt +m18`Pf@H6t5KefgkuLG+E{PhFn~qCQFe5p4)J=yEH_5#Sa$0=LW%Q~h2jKQS(W9V5p>LF0$&D3N@bT< +5HL{zwgV&u^h6XgN2tKm>O0hg14Fg;asV=JIZ|=;?y_=4w!hGrbIGKLM5#kx&=u~^M)Ki6mAKNKhv?P~gHqtpfwFbOk`#!pfZV!aLNL0W{V9b{Vx +Ae83117lNu0uf?;^Pd<58|cz^mw|#(ZV7#zN}?TUE5ejU&tn@$P^@%ZKnnh{zxxR;Xm)iK~g +8iufvn@U4b15X_XpIJl1BV>Ch=;Bbg5QFB3BHQMSVTW9&SiM`n$adZBE~GzLR~y^;S{@VprMkDcMAolPoYMUszK3IZQu4S3m)hpNf2Lwus2R$Pl{agfJCMj-P%a3eTn!SO3rLzLwNWu+eP +wyyJ?;?Q6&7?f3gH;6JezuAfpFdix1CY9$KUy~6!XgFYIR`?cpCA +mV_p>fAZ8#Nz$CvXt-mbEXZONm~xX;x|ip>n+T|HNy0QtigzmJZgl&v6)*z*ia=>5d^EiRZGyVzUGAN +z<>3JKO8FShqNmqTvvd}+L|s2V*av7*+^KVT<*-3(XsQ#ZxK +Lbott><3f~7uYGb>ODftc+*>14=ITxgw&r7dyb3Bq`ya#?~o)xLM^zHEjFh~<_ot2ChwI%8K1AT>R>l +bK^)YGda)R+znw@<%CSl1S_$Nau|Uu6YA-Jq9?`|Xe^bnyc~^#!g)XbS`GU{5@;ic05acNd`I*}_N|G +rSN&B1-N`he0>k)ob{L|9T{~0hwrn7JhAPEzLsZu*FLsros<=aP +bkI?j29|OW{aW>;C4|*TO9ZY=W$voc#!2G<@?iWTQ{sauMx(qi3{fkw6{u64#D?e)ITeL*HhT=Y-iej +uEBk*{rHc+eR11fLn?sI6%isy8}l}kz@sm_$Ji4w8qA~{~wQ2n(6=Vpq_rp%6~SL~~&2x~CZyQHNfXx +DS#F0{=>mx>$B`ds!Lo+%d4@*oC*w=oz2UM^sOh^AVe%xqx1Ic`2Ho+#*S;ty2o>Q81X9x=#P%l#-7n +%RQJI1bIFaDN{G$HFETxk*ak(Fq2I`Y3w}%_@ERfnEoD+7uq%hPKfd&aDr0=(0DfLKoW3vr8g^AY1i^ +m_JZ1+~F-~R9m;}sEOXHUB@;|VA1=d>)3h;G}l(_I<{K~+0Od3j!oj7VLXv)Q0DjM3z7lSj(@S-1?nO +%{DMJk+r*p1t2#9&^bj%8>Drt;fB4ZvNXNzQ%@>d5kth=AiEykpx&?R+0<_T|t7);a^pn!~=dmXA;q9Up&WXja&_M8_W)nick)vG +GTSW&yID^=TcO!~^x=+w?Flf2uaiB@nKtY-sB#k~LSC0>}-`{h=axFLt7|RbuK9?yC0PNfZ8Pi +vs_ci{wNY?;7;`$~cUB@}8|aHhqJj!X9$kP#mJ51rqu(Q4{bQYATL_$Bc=vUEb-08VBvAx1OP!Q*eKJ +O`EjB_KUky#Vqw^0%e)Ew+)okpN)%|3}=el_e>0NDplOv=Kbnx`?vkhz?zLmK?c`bUK_yDWQh0(Uj&Q +5TqX}k_g@i+T$q=PN6`EC>sUhHM2s06nC;I5Rvg9pcENPDj!>jZMIG8EdM+c%T+AJdza%d|Nt5n?bamuKzwA>PF +E4wlrOZDT(`E^a#MB9Q3`2&txblWP!qn0v6Y??Y@?M_vKcDYe9Ya^+elGJjPf-(2ER1GiEwaJW?(!wF!HehgnAzS6+S6Ma%#C;ZRn +tq@Z|b=i2YJohNZuu7sDdn$6-(TDjU}jNVre_NI6-{j}6c`iN&@~g@HC;an^NxHV<%{$F2y^wMbc_?pMCS2;Ic*>Lc6fGm|zNX +yNXzV~{x9R6V?n0DQQ_)z$KZTAw#<*fG!$ErLe|Pa>Y+w&KZ}3i@b$T{^%x!bgS2q{~kMHp|S->(3Ze ++q&wwpg2+yyMv)*dcOAofyCZH#>)?nPk2!-1#!lNjdKrH@*yf$E +fZY_q`}8`^QclWF!HMX{-(k4nN_xG2hLr++b@kwYf1WE-1`IL0_GteWaoCk&(EDC=t;|lPr%!!4|kQa +R5d_Ty)S^p59lRy|KC&`rsadC8o)FfabEWDd=Ca +L7x&&_xw&5h;8o@kKqDrqFy^w<<1W<0;$q~pUacWe-^)*QmAa{3&IdAVbiTU-O(T3Ty}k^9NU@#jm3= +UbQVM|SYFG(V3|=)Jrh~BV5Nb7sZ!W?afQY$tLk0CiHjGPOjH@ZO9D~kRegFD;pplm(|y!BS +6*dM@yA6yF$Xc%Q0+q=+(PXtLJ!>IPN)tI*Ps>~UwL%i$pesYoIpL%L--Ym-^r=W}-H*BSyLhJlX1dSr%!pm1Hf;Gp-NsR> +YyGjCOW|qL=8z{vp=QqNlchAxp=v#5BU#YBY>W{%US`3BGqN0uh=YYB7lB4wE4_zEgY4xTtv@d&xN3K#WF5k&Y +uy2I6=hgG?Y2?)eQ`Fr7RULvC5S4V6_pE9M1=ek~kkn_G8m^*0# +LekY-*4N01c0ntY*(?@q@7xEP&6LuPc2UoAh{I9m)NX$JsU?l_yF0y%bTk`){PS%u57PAG2w7s=fDJ1 +Pb$~93AiYRtvNqJ2(yzie-s=lKHN0H;&x7v>sQBM9&c4J%Ih%-&cE>9L?}Cg&N2%&kDi)XW!@Q-&F0m +86M^sE#j94`jRzHQ9%ccQi@Z|)nhMf5G+3Z7^agCGtp$<+XBdz5LDlXxfF$z1?;=dApu=~c`mO6%Xde +tOi9l81wySu;+Rp}D9JKa~cfU6=+?$QVOrArYLw4a|P(Gs3d$0qTWI@!+y^M|YQojekHyDrOah&-h)! +ReuuMKrT<~}Z(%DD8@N0#0gfQ~xrUIpFa9?Lx6ag=$HMTtfa#aMO^5S}`DT>WS?V(VCeB!zcS!d4b27 +-<7njO?HWI%#iKjBKC=zQfY37}-B5D*MMy9b_Z{*t0kti%P8$hUA-hDyLPsox6`gdVySgg`3fHnPc2O +X5w9(r1*p(so3ogWF>=V2%@61E2xpLw8e&@Cx6WO;$9sX72T5vD@YUJy6DeFV`=IJB1M^cRsV~DpwhX +6h0F(o%7rknZF$rylJ~?A#aIWmuf?G>NZ$^g-bGDbad$z^o@W?fgrwIoB%P6gkMliLM_4>B<5NmfY#a +cj8yA-&@ZA=U03W0BU!HG2vcic;#L@8_YL)A +So=t-ospGdM~`DSI^7AAXV4;r+TAyIo5{}H&&o=QoIe8ONbWEjPG~k4)*>%XcSepV-=LwGgHrq%{A1d +UwfXzLqy)p_rBggiROR$ualMY8&4~se-og8BSAk1&<`Z&_X6~L8uWwg+mj0552F1KB+VZM=#M1m-v#L +3Nzi`?(0`DiKMByENYI}J=+7kRF9P%z67-(}^q&<_Ad>BMxpSf8=1?^_5LcR{qQJoE>s{;ja9f+FVe9 +wmZ@eU}N-tGm+UmiWm2Jz{Vu=0-(-Sd>vnm|HwkViP;aa{1Mj?V-J2DYa*a2+5OJNa?t#6`w%_@xk{2 +H{)1ztbN)wTTty&BBKz6v<4YO#fW$Aj0p2dAiAuk%nG*)QKRN#rGH?@h$3Z=Gag^)Z0P^(P$bP|>-pr +7bd~$+rsfH-0uT_)d!N2rD?B0Ea&K+_ECzi1b4PD-#E@#)&snb1uwxA%b!%qD5OACG^80Uyi)ZI2WjX +F5SRr6R!xANfAOZYz7&XH`bxGuOs~ZKt-wd_iS+b5#AnN;A(JinZD{6RpqG +Y$zPPZgjY=qUYK1Cw;4da5(QgoT?*K$43EAAjZNf$Ng^Lmf>cIQK0w5TZ=kOW;#>h!nzX|PPQivJR2_ +h6y*hNLs=k>2Wgre)AF2{PPtzj5ww5LqypL51tWOU&R}eTJ#qhdp_c}mA{$o`pu +BBJdUW6%dxsd5c0Oq}L;?eSGbJZTt$LS$1g>=iY#&aJ0Dp#0IC$z!Sp^R7vO=`NS{-RT`HW +cw(3V3#I*|rwybe(HSQ4@K*K6fRvuR)KvZQ!kE`ny*&*pBet*iXCuJg!EN;QVc&^L +GM&dGzZD)Q;pp%Ga2vMJbP2c0zpg+<1T)Zp@ixNq?{K)1~6E3QlvAGP$!^^R-z#{UE9*SMP2^hu|vg^ +>U-BHw3#_bE&a2S{Q`f#S77Y1rk%E|O;aWN;rp^to@{aq*KwUE)Lw1V!Nlg@P{EU3S?p|*egv;{dycx +E9?vm}oEye7-tt0YSTFBMS!7W;own$H}@_v1!@^%9jDc0SOf48JRM}*{0Dk#as= +ZMlF)PkN&d0wZtcYsWGUSmL#l4;J%8^w7fZ_>z;7kgjymazey3ajmXamv^rr=nd2y?AF-HA)g2EEIvJaGw|;$rWNRpbO4l7U_DVKC}wp-;D(@Mw2&%PDY0N_%-*PGKurms` +2z6m*4yy%TmJn=D9TyMXN}&n`gXNP%_{E{>FF7h%(wBJF>InImP|#ktWb)a-oJl{0Ys;LX0mXyNk_L@ +nGsf~vKrXQyr9pu$Ec +B1&UF9D#dw*aDUI&JJB7#niMvbm$T-CU^N}hb|ElOzd5;in`8)q<4v2BoZ)v2E9H(W`R0xiEuWdmu*H&9uhnxjGS +af-Gy;m04zesc?SP_n#d(&Trl7*X-U+)kFj9jCQiC1n=H57hGBhzG3rRuxTN9>o&Sz;1GOP +mMZo|p%L|f${Jv=K4`su}@Q~HvUei*Unl)5B!J;+#eO50>$?}A +;*1_zSXE?xX8(~0DGrRk<~yxMdVHooF)Mecaj*@m8^w2E`c{7@89BX;cPyZ2qljedF)eWS15#Gs|W-j +YqD&)$xY%Wto92*jI)EKj|0oCffgak_0AuNncpq2G3Cd7THnyWVzbe4UAFqrdIaek&_`x2!Y4#*5@)o +fScGMLze#GFuiZ9EeIOoK-2}Og!NecOLCTrxl_iqv*s#B~~9eI)$+5aevS-?wA2B-3JYWjybqS{6WKr +6MXC)at(K#5y`?e*5awK7qZzP^C1uJ{f}-e`ds5<^~{7Iq)!t*R*#DaO4o_T$Lh(Eo!;JontGB9NYd( +b$nqIt7ON +{w*m_lUlDAk*UG(l%v`#q~pldi^Y*Ss~(R$~+P^L*~op4?z)3h#abY3K@aoCxqNFI*Suug4^hOf`tST$Uycak}-* +E{JNuiLkwc3i)2K~54{J4y>PAQCmz +l7j=sn=OS-C?OHHtG54CexF?`VKMumU@_6L@;hoC36iCfJsD-ZC2elBk^+Da_%|57;-sywZDP@{upln3fjMh4Fm+z`jx`QVjTyl>f`LQOd1J_{;NXyO?udC6v{uoIvQx@}N&I_l +aA_es_sIr1{WG1LWP{!%Zs!h};$rWNRpta6l7U_D<%6z{PPwxCv;`{d%RhCB9Z}Ox^HZnP5xL8Uf9e! +^or%3GcA3|>ko0zu=Mh{!Te;DIMn{5fI7KZf>2S*pry$g2n8XQPkt7y}1z#{6w{N_ +s%txfE~LfIzxU?FWEeQ+~q6Mk@VXox?Uw8Ny#WhmVh>(e%kNIQeh2W>!0yIRg?Y(VUC{hW{2YAo#Cu< +CD>2T5($;2;{*cl68qb(}W&9w@Rl`5q{`)>`YLZj!x$+OGZSlYzYp_DOGWAZhJWel8fntE-i}O?b3$ +?>dF6Na>$;*C|~^>k{u>r+6zI?47X7*JMEwTLqjkzdIz}SG^#R+B~cx>Ds)gA_?0+rE-zCc|+x(cbkG +LWp^0GVLTxGto3g;%r=o{J8_%9vz@wq+_{lQo3L{elZL3XNgj;H=EivanpMvcE`6Evn#)KSii^E7R)ayXAsJYW#;iXY>mrKNy#_S;OnA>FZbeC-%!b!+S0vR~Xp4V3n`Qfu +yyHcFqsc`QfJqG&h@-{iREcFMc*hxP24%wwoF(O&m2cbyenZ!jxnXV6JUYYpAH#PL4Zf(k-%GTO@7Y;pE@Bd!8 +30Nbe1tRFaIq6*EBB;N&p|*egv;{dyXxvYjk4GK-?C^SW)epvzZPiGTRB(Tt0u?HiD^t4r0Okap1PiL&b`-1^`?38ahN-8aN-;FGc_2)@w +-4zU+x-<@Rk&z-vHND2^t5Q-v(MLG~w@@e@2g3e61pQk +fc6DRf({*i=N%hPRu6(@~dmWZ_c@`KB$|LKppB)z|Av<8_fc=H6>vp7Kqy?X~H#4N&cYyi6xU6yra$$*gWx +6rFCfuj{=4?F{L2h!{3mz7?8Ga$OK_SD;Z +X6@HSUvKn$Ct$7afz;iv-ubyjaiRxG!iJ^z55wK(@~5KJ;Kd;@3Z!?(oB!8@dQ +?3(qmw}c~z*cF*Y8#RtW5$IHf5_+%t@eE1ezJ0QAp4uKxTIm+swhRRFR+n?nT0RS_5@_RpN!Xh>`<22 +q*2mn%)3ZV(`P54TYfg~q10R~r>!Xmr;;ZlfZODv|wDr*VKMZ8ik5f2PNU##H$LgOU-x&g<9b5`pRdi;$_^$3|B4Wl$ +Y!gh_kQH#D#WB<^pm54+?Gtfue>lMX&i#4^V{VF`uP;GEGUfHq5MPd{AB_L`%5f$Oo0OpxmWeyP_8^%5UbD$pL_MrwseXT=i%(F_RW9_KMb8@SG2q +x=_^e{mGCaCtCF3C6MjgVugUB>K_1@rmTqjr9;) +BJp(%CQ%4k9$dXv9-rjY9ivS7U2c7_E&J!isReFO}7$PQ0$)cm8?bjG26?SP2H|o{ma2GXmzh8;{A!? +QqSXzZPX%8OUMNM55aD#&;-a5zwiM%>R&8gUYpxyN*z+!PqM^tK?uBijv{YUC=)3pknK^4Dppg3w? +xv1zR@PrW9#VTC2Ahv(HD!kV9tg3XCGFBF_qk5H%g5L6OQDSRdtEz#}{>hrS+Ek{h&=93O>==#;9u6W +$;SL9tOVbVsv0bc8M{Vq{0!b0=Q6iG~WQX@C2}uHnfc7W>nPm3QRpn#Qkrae@==|7Cc#gE# +jiioj*p0L0LYGh<&_cafdg(UwBxO~c)l9S&upWa +C4El1V=4G7fjdIOij|&L|9MGX2)>kWOEQXQn5LxT+7WyED;Bkf(aW6*)GtAx +NX5gm@YO2`aTxk6x939%8h_77JjS0^UPYQiIO=QvOtDRW#@j!Zc&GFN2!8YRGs<;7{HCh4jotfXq8p^ +gkK76M0N77K;T2~t9=?4Cm~5v6B3zp#fjv|wc@68q*!qix^63fpagi)geq<5NlGNnED6LlV`=NAI +_=mvD6a>e@2x`#|;2*P7K}AUim092yFk1G6;-=G*dS@H<1YE=jEf-CH>HyZ-a}R=%Ok +Hx*ocU;1hiN^T8(r67#Kd?Sd#=Z48-TT$x1IQsFv9^=ZOJ9a1X0gg>jmE2;2ls3Y~gg}{;O-a_G;Sg( +zVbsy&u`i-GDr`vKg`jq@-|CXlUWX$yhGV?jTffmhY*pAoc(Wpw#|65W~oUWFr=ew#2({0Sd|4 +%ck;q7-D6utDTU8GZ$~|CWZ*+o`vPVwwc>zUHl=m?nj5EA`e;Op?z2!BZz8NpglrvUw)e?*JxsEn61k +$P$;#^@He-W-Bd6^VV{SNdFx3x^ju>lAC!?*}%7d;FKgFQO``&RNWUpskYOW?WF$0Q`@tqllo6j-H)1 +1>OVehc+zxI|M{u)LDNZ90NNHjz=|>qIzguH0PMm7mnY&Tz46}YX$6Sh8?8UAz>N1s&k<0+)ZT-}bU0 +S82sZRBgdcO38t*sGAL&&s@jD&$j&Aj>*@`_B1nPG6oBqQ`sJWacQZg&c0O;&=0lrWmr)t-MLfe2{JQXM^d +cN-BSwWGxtivvzAP!>tr%#)yNxHKNoq8C1{_rjVq24b%yh{ko_9V8%uFA>%9=4>Zil^Z*Y)Mp=iuEOI +iCz_k(xdZ-_Xr3njC+JIY+6%dSB2qLmXf9_j0PPkiK@b|sz!-!2t#dEjB9-Xnx!yu0tjmJ2dgS^YHOE +QM*f@Pfut~SL9)jM`?SLrxxA4Ys83XY0xA_r6STxH*oe6C^#W0k*=`Cu%B-$CyXaOlqDLkD1;fTb975 +MzoK5j3bOnRY6#i{laE3Ywvu{hd +49HG@~}}*q>)L2PDgL_w*WjASvieG_*w-hlr>}~&UL^^ySb`dStPC;vT#(Y+WFoZLd#G_OZ3xcSz>O| +x2_^!9L^R~g~0>Eb^XXS83s|zcb&0>9K!6tKNk2E30Cw5b7{u_bcNTToVq3OM8t%?Bwt5EPKW)6Rs?# +@H*z4>Y3OCw$c0!Za;^79PDCrI{j;Y{v?SG;LFM_y8N?X^`?TMlH;8}{)K>uH|K>0sCjd~f9y +gFS-(`h+ea?6a&n!+jt#Ojt?O7<68mY9sceq1%)=Y~rJn((6JsBF{{cX_HmLv+s9+q1MGOzJTTQ=VAU +9a~*sCPK+InoDBwn}ZntE*gD~5`nCxYrj5sZstVYl+Z5Kd8_0&)yIR$()sBae$;a9gH=6)P|RMJU7Ea +DepkL1!Z3DH+VTm7f4w9tWo)QHT5)XLX=XS*%kFq<*n5d6dyR0Hi(>FVa=7rk^X2S*GUk;a33ZtT@-9 +O{Aglr8PT-W|b9j=@Ya?y}3X=AU}8x?TJica_|k>GR8+rNp$0v8o(2aO%(ZcgglAIDn@m9AKI@NSw`U +p^L>)cQ8|4Ijl)<)VWECT*;=^uW4(b|UI%cHrg8a7{QMz^i2Dj-9YQ`t?Lr%6|Fy9c8R_Ia1Hm(PDT* +(#*&y_A_R5_*2%`trOBdfkd)QZ@_WciLD{Y01Qw)hn+d$*kLSnk?t#M9a;@dxPN)nK$XMoCWn20XL>O +|qbc4v@GXIW&X!THsI)e_-o!<7#CeC4)s>_=uq^k5sIj1ozDzKxqz8p6Xns8LK)9i&~F0)+W}@rgtO7 +eRuE!^&02I-I}*Tfo}6R>Mj~US<;s7K +5S^yI&MekiY*ehRId)5LWP!xLwS5ZpFq`{-Prj+6no_qZjym&5*x&^NWcgvo)DGCxBCSSe><$=}?NT# +w9jUId!(bRq@piJm3CGfg~GW-EZDruw(tv*x4Msb?~cpYsrBNvwr)I9Zj_$rgt6KIo}0}d_4+x8Q~@~ +75&mXu{6@DrB@eGqq3c=@H-;L<|{@G)`}>eyVUi^W3l5$S(y0@-o!Y?OjNdZKf^lqP-%{ +l}j%{2H*B8fHayxui%xO|3uc)i&;%ttB&RznePmw|DoiXjKxK>Eo*l6{rdZtE!mvhJ`LC4F?W{t`ob= +q~p@00KRq?teC0y*bvAkP`$Esi3=l$fBO|xwbYcU~%+4)_q*BK)GY6)MIrQV7l7}H&J7xo_J5sP-~KT +c_!)vh`ru0&|$~j9RsOw4O9(*m0Ji_9<$GJGp-C3xN|?|ss_v98g7g-(`52lIZ!$9w?Qv6UyPyr<`dM +MTuQSfS3bu65e7+LfTdkoIQASZ)B?^Oo}ND&$iswR5DYH(?1HL@Cz0jNb(KzV=^+Ag1At0X9Kk}D#bY +Bd{KbF>*Gn$eYZx%+XXVcLd<8ad+{G;{UXttixUqtva~+l>ay~7A3T3%CH>?%b*g**Wewi;a>m+(A8~ +{QtE#Fnt;&r&52pNZQUJ7yV76A_ZWWWH4?U3xr#5{@oL9A!reeg0S#fgZ-*YhE}gd$OE+PlyEuKazAuc2**iPceGB0Bg5K#|| +^GaqHRT)u~Z1D0q9cBV@lhtXY^Y +mDc51d;tyr*RpfvA%@!c5+ +q`yeN6kMxBt!k8ZvLs5tDIK#uuk1Q`#dky*KoTgznFe3g+lX6Z`}+Shm3SAPazJ{oI11H+o@Ji&`FR= +MbH;uWrjTmf$YFv+yX404`h;cUe=PEBCVIPL*FzQpIuxTtNUwgoRR)ZqIFLCkaG`xqk1G!kiZ*Ir_zY +M<6Ha4xp-&RxW7oY6vR*c~m$$G6JZVsXX#Wd1_AJbpQt9(lmk{-UOKV +Q7Tfnsa@-Qe5o+da438GK7xtERSbK8VAa#y+gkuc%`b05bIO&!{2mG!-T?TVpY$pbaBW2^6|gJKj*8b ++Oh<+5Dyl1U%^qGB+E=iqDM(yxY`ITX=Dg=dNnCz6ULt4*csA%HGGTYzQ|F8y04nU{1l>Mcq(J2LGvl +t6flXcuGj3WL=#C3$#yu;F$oi>M2Ni`6V&&Qx8}-vRzL>CquR<=%uMJ37?78&$_y+1i9IEwY8DtQLU0 +-FLT)c;xg|UaTa=l8-=7PXW{V-SGc<_J((&ZqHY)&RVU7yj&;$#vy=D-6ZdlN}!|JM)IW!MeskjXMaNIIYqqrpAQkC=a%N>Bk51n2>qCLn8zzvi +GJ21_``v`i`Lk;0e%FBD62?CPWY&E2wRVpH(ay7RvlL^~eywq}6r;NwXya}vL1h2bshx_%M;bCa;Xk- +^d;WIyEwo>;>BxEohtLtd42#!A`FLb@(C`b1afl7cst}pNynKabiG=8kfecOc= +_cxKaYwFVA?j8~P)^@<8CeiG;7nS0NCNT7PZA(DhA|%5{O0#-y)sR{DbC^!rOS5LblmkacI^S3 +bODB9#F?xY2q3@}Y?!^|XxMA-t_K3eUj!Mq|jk3Fog?O*rvpW7EW_b>hK`3PJ%gohT4k5EkVj(dZq3- +WI{oVW8K%RRe+olP?i~;cdavX9TI95dK8Lh`2dOKMwnNd;1jtNG*&;QI-O#aA}oUenw%@Ch_R+y5hH$ +kTzL@@>>I?%TNmX@9pUA9XM^pfFwP$l8URmk)PM(3fCMfh%H2Gr)?o!J8^3PH?n9U<0c+%F;}V0x+qj +FdyMBOk&kub5d_@K!BIn{B@2@H%t1_4R?$zt8VT%mR@ySKmt1Mf!M=kktFK&;kG&Af#TZ +d6oa2DYvozs3Dz!9{I*PV5(z>1nEi?(cWhs}IEJ$L9fT;p6?XVrSURpA6lznN*!F6Zw#4Y#>7K6DEBa +(${5Go~NnlT;KVpMbb(IRsD=N&=?dXmy1PNL +9SD`ZE_wRZH5@@wrFxIDf?x417>l4+`-0 +NYTMW8N_PIp~n#nEW9vfHHhf|8!uyGL70)Vr^#9Cdk^zr6J5(rLPptbZC5Y{md4`j#8Q} +s9jO0r3Q1+zQAT{CM3DTXbf1S-fK@EyU^;@Ion}73U#(*;HcTzl7nlEZn?+kf|Wck#E4|!9IJYL&vw| +3QlBjuII4cOMhWPo#tBGEe7s;i?uvBV{wkB +|t8*R_SQF*jI6W6db&XbGQBfTgul8b9t%qpeMs7-Ut(q>vm`O;=$*Hhue2FbTBYTA|uN$rw!t}`C2Uv +EI8mHm2yhzm+um##MmxFB^Y_VotwVg~juxP*&1khBib4w)ZjLo#k~zI)$|-nbKJ=FqqsXlBuJN6?y4< +F24BC)dt^;t|*?*4js}M&c-5dl4>IqwZv)j~d?(OOtW8)XZNXd`W +H2^$!+uz+q3Zp%l}nzfHzgV0z8xdpMKB616A*MUL9MW_qZNp8)ABzNesr986JeQjSXxjhd@-Q@O6TyE +_>_gGxKn({??kzAZ3W1adY;z;iTr#p6bBiq(*y5k*V7vTx@KQi +t?MjIYa4(5)`an^PLEMI78p+9C*UrEMJnZ{pA*{N2F99s8~mH*}mtcl46Nr@K_aq-&WwRHJoS^Y%RG8 +^{g!FD_i{{KBm4-Ez&k3zR^&b191}S&p#RPaViDrlOm^#e8%#Xgw)gv1u_g+wgHu&nky;z_&;h|MuaX ++9(xh&Hk;Gvf012lD744n;10vw+$Se{w+mYDP%7lHOK6%QqcbHcelx@F`?bf?{1q@wc?;#);&LM*eNwyJGz29reI~lxB>R%sbw0b?By@v?y&FzxV; +&^6L(I5>kEFQQ4x1Ku!#>?$K>yr^O}fFsCHjUPI>pD{A&2}4MkEW@Ae2v{P}0(;t&r)x!qbK!K=iaj{ +y~Er@NRAXeHoVGt{E`#4Awi#CCf1|AKOkSg^s$p-@ncsrhnX;j+5Y7WQtq41>Xgq; +{EwxnKlumR9aIW72}Y+aPE~O#j5Y4U$&WE>YiY5Osxzy(2DJn@mV@hp>__=2?=3vdw!W3 +u*g@NNxsgULZL+xXneKwmXdCFdh)T+xj;@6N7{6+Tu00L818AJLE7b1S67#!?0BHvo<0+GPX9;I&!!+6T8mF_uK++pXaq +L50cs;<~ct^=cS(-5$V{+C%2dtEgfk1&Sh2v_4 +hW^_K%;oASVgW2*Pm^7rA!2KCG~6bv=Az63oY=j()=T#5zJnCGbwHkFS5NL%X8xpDI +p)R%R~2qr`vt+7{861eiY6XcHuZ%!md*+SQJx%KceJT5E5D5jnWH3>@jOoRdhih-Nhq?M%0&8Gh$Kk@ +Gkd$Pcr%xjweAK%UuEUL1~3+>I>YEjPZDIowD_9`&Q!^#Pt0Wk8orJE5o&m^JNjY)iIA`iEp>-3 +Kk{);BQOgg=-=ij^^VFlaQDSYQyN2M%3)G>>B?!&R<(kRZ2DpLD8i>o=2b?f}R?4u4W{dN!vc?W3-B@ +Px2`5!Ik88+$qW3MPl9;C%%(SJL?@w5W&1%n{-itCsH<1aRhzRbJxA6A4oFLtc|ZbOJwqgWDX_PKx##}M*f3U&lWofM+>IhLj>hN8uDz^4d2!jqH=*cQ44UKhL!K%W~ +DsVFBp{F^gCLIl&O(B2z!t>S +?(w$j&(V9XoTMI8+Q^?h0;ZtlHyHk3i-@@;caUQ=>ROeYfT{+?uGZQDdZBe@S!z@wCD +>TTT@8iVBxqm#gCHWQ)>zt{aW_?|fbxnV-&z)^lJw#WI_2HCl{a4he@*+V&aZ#!&NQbH{& +^8ob<_nD|%bIb=bD)ZMZD`Fas{3$%UR*h5Nl`CpP8XZpylJ2no0K9DA#2^8?;q0$W#zZ?{f_`vp0Kvp ++~bHN++{th{cOm^9CW>O7^^+a69B5}tNJHGZLcjDz@A4m3wf%2hgPVLuWCeX?m$~_6hv83)w26z&a$F +}YdXxcEM#3>RBA=fu3j95>U-;2DlAteHrKVp$Es!&Z`9Ly!c?KckI;prqX+*Ew5l=O(>^EEh+Nh4s&I +8VK)JgcfUKA<>1i9qUPo8$-MkN|kuD6UjdUka)xUS&LtA&!4Rx%1SO12;fKo3b4)M^R7jLYU6Lh})6o +5%K?5QfE%ew4VC*-3fy?gFNCZfb;T)tvIU(r9L8|Iy|(AJLTC=1BT=0j6qdvV_347Eb9yfg$Ti4H)mM +E!&k^SRlzqP~_lj%6WX$+#>c7s}cQy82T`7L8bWZFWbf;+%Y(f4+6q{DSiAYPBo08BsMSisnap$oqV% +37KimD@P{hvi{eFJO9e;JpRIiPwp?6tmXIWUwC7FAyNB}^T$vlS=1JnpD}qaEU0)qUxk-M84$wLC$DB^DoCmof>H@;b) +8j?yCbpo3-wcE3lI9TvQfh6RUtUJ{vy~n5u9a#=B$SNqeHdKVkz_a_cD|vhEB^$}-OCFj$8`{BDThi +L7hdbwd%gQMKh?;%2#G=;0AIRFz5j28euF_{$%EDBJHpHQQzDmeKnA-)r>43P3jR8qNQq(SJ7EW$UKV +`tKV1iP>&1KXn%U~X&+w$l6&YKCc@obl%c-5$Zc-HD<;zOx#vxBzPw6Y=nz;xx%Ebni&7q*Z9`&9-5ZAqCqM$GPvh@qVB +K@)g@_CoBl}feu`=0=;D!i_1S6L)#mmcS?{-t~y!NQ=MdBd0s$Lr)l2o=dz0IhU?xbNzZ<#Oxu1tH^G +5mCcae(Gn`JLRdr0TwAYjbiEM8YVuk56Pk0ll`?WjO~@6DPMFc+0xnS`I!;l;;a>H>$oB<9 +{+S$PiX;_4a2Ja42Y)CL%yScSwF^(VNODt-k_1;|P&99TZsBgTQg)U(Cq3N#Jm>bHL(At6btHyeW?Xqu$vc>gojjBQ!F4^E*eJdnh{oeDW9zn>okw{v72%k1m$kh`9s*MzKb%y9_BZXY)AmXZ>vCUmzA~odvp?2iNc9ZL~D0!0VO3o{9 +Yv6IrHw5KlC5fZgd@-%S +4NXyqIaCoz=oso1-uaetnzoUxLiFkx34sd$92m4S-I^o-?u{5^Z`>4Ot)^6+VIo}`;;#fTw(!P5IiczQa;G`M1@gAoUA$O>tw`YUPRovr(SA+4$imS@>ab$_BmtDTCkWJUouf +?6$OH(S`a=AFb{>4`=gI+`We5CrhG+*0#730dzfBaAsujW2@Ce*#M8m|Fr!ZlQE--@tr9LsZIRJd>ta +MK}IcomgcI=}$&qsK8f-{MP9Jbn2o)|GLtk7U>M5jJI9xH5`JR(KN&+5o|nk9Z{eDo`gW#D|NHWWqQ*SJc}3s|Z?ngg`WI+*tq_C5{d@eqX&s4$T&x)9JB2d{lzlI7o>Mr%JVPkN&* +uY-f7lxWBN>4@O-Uu_40D*JQ*t=C2NKK%m`!~?bmEk&8&}~WOXk@io&^P+;-gMPkfn3JfmGMOPMpv3o +r$4*Q+z%Gn2A5HT*3mSJ|#NhiUl`@;?RPdinz;)E4c}8j@8a(;Whp1Bf`G +Lmed#2YzA*mf({od~Nc%ZBJu_ShuAdk#7(27wZOzyVD)+SE(<)C8tACCtlZrUU){T4L7#F)~sjb2n!V +M!kfZ+O`49b*nIKbh}v)!9P5MJ<P|2l>$~j*a@~mZSfq+}ONXp3uU^2{0FPU@uHm`W$E$Za=!kp;2&uk~_2N+wf$Wb+RZ&Q_nR`TPAM56 +PF;CEpt*bE`OjIPkz^Hehh1}%~XA!3p(sD8Gtc$Fy+`e$XF=FbcydaMrFd8EUR1!`S0`+hh>T$p=7szBdQVn$%rhoT=`4iG|p{QE(KtkVlpEBlEECnA)($oj?QQZ +WGFcf2Icy2RvLqe;Yc3~1rlg`A2#Axpre2-MEAF!y!3f#1>ceo3wv10NaDm!#GYSj=4#j8j(wzJKD2- +~>$v0%vH-r0y0B0&auDOr50{SoL8TB#h}{cu5X}K*8hrl3eOI7V%2;La5tkzCu=dTc1!|$VC8sWPGeH=pape72+;X>Qf=e{1ER?>O*{)?}K4|d_#WdvOm^cc| +*>V%Pax)enbAM%W={(xYVurj6d(s3{mLkE$MR1uxNt!A@y&~1l-&AwQ|2D?afS_# +dV~S@5i=I084GZq>Vgh~Y?z~9-8)hd!~6>4Tg*HeAhh~)ANgHv`QDRS#4%V8IXLghp&juRV&JFxDqDe +8A2(sz=K_RM*8qVsNsZ6drNxnY!K_}^-;)E(k?^PL(|IITQG`*KB6qL(-X#nxmij%pE_39JJH9`vn0S +F!w^<`U=U$0#O0=#rC0dZ{7#hF7zJzcjJ{{N~!My6WNuZ_N&r=5#1zLTQiVbep=vLikjN*CW=9%MHx0fUC35*OquL~;jM +*%pDAIQ%|e1LO=QCERTREI?v^@XAyefdCYdc@|ut{)l``2#sN0&|}EXjT0{NojS6~=@s#}dH&_nWpoCQ&w^y6^GjGYM7y06bs#if%Nc6D!Q$qGENi5Q8%VB`}PfFznzS3-;L*Uc# +$!!3LyRcGwa;NzNO(%f>r&}RFXG@~3t+_8)TpV|i~9U3*S(JrW})VX3RApALt2qOxo6QE~0iK9u*_J`c(eWhy +B_oQnHEA3_TG(lgg9iX=`)j3wir6JCNBZOFA +Y15D|pfiRj>eE{wp+mzH(zd1|v>R8|UEtRJ*fbuY^S~2Qxr(rfah+!2uk=6_h%(;6x3lH{i?`BqL3dc +`&r5oc3X-Z7u1_1uI)|;!3C(W|M~lyCj3nTjf@lVN&4l2y--*-3Z1~$z$VSR=O=-p8xLna#gvDAnO9E +{s$g-46Dq^z%4zm*q&auP1YdH6W@^Y-w+eFJzeXSE{W1;6v1RaE96UKO5Ato!Qm<=Lv0>eql$PY5S-{ +{^{hNtcmrlLTpKf+Up80%Sa384s(TrNz@#F$F;U}QQcP8z|CpOB79I>&kjBf{3r1=)P*MoGM9^iWO`V +-D39v-G#8v6sc8-;VgN7$?8Iin_rV|Lpn-lKH`$7T*`rU}yg2z;Ft_kn-U0d9;LlA;pmmeJrytgK;oe<$uyg+u`V6H=(BllrG11|7s+hEvPcKgzmY0C= +Z9e+^sJwA4abgLeVLdO(>xJZwuZjGkM*213==lew)8vMxp{n2@>f#z=7Ukk@60iTRJVD}2_ZynS7>R!js`q5Hj?%>jY7t{N3<;O|;84{bZ!LHapHk^~7XdKS3($+@^ZpynY=dYt$=;=2 +5Ee@2|ouaU!2S`gpH+Q>R|IO>wtGd3)};$*su_yhqE&fqEgUZ~BU4Iz|GQN5(HK2K14>#LKR9L%!#R$ +BxTntgYe)s-8mcE=!Hi^{-t$NLCTX#Fp1-;eJi-ya-oAVXLzsMUH#g+QRa~nmuT-D!={vB) +U?46q>-Wm=xREO>%QCSjc<_W{_a+7B^FSpO-o0gT?i7zHBYl;7Q{P^mFCV;}@9Mkv!?>%0^_zNzqbD! +W*kQ71RSysEh`4E9<}Hz3fd{pGrVZmnDd(!5Tiv+dXYwf~h&0a9u}DBB-+Mj-K%NxW&;S3%u5`DJA<`7p41jxb?P1qtOQZyw|KK6&Rh_f~VINHOD&CBow;zvkVchy(jB<;-K>g +qXqs_UAruPj~927}((OC4x_DF{nv|Mr-?`Wflq2*JC1hfBKVa1DFDZUdD%fNY&^&QZB@hRU*}FBOHbd +&$5kXBM(gO%}3dT!SDy3bzo)s8>0ErSenkn~j-Lv4aQewfIRH{$G^+W +?T<-^)E4k+*elzkm5=TXGJi7#R12u4qoJO1Dfq9mo0&*Gp$h$9yI5f+m&*_ +Bb54DHZ$j+5uXfs;d}6TCHF>jcZ1@oStQM$Mx_0eMgKq2u9h<+9S(YSG#1BLJG1C4(SSNppenv&Ac&G +$25XDxyMF+s%z<;t8D&sp$l>2YoTR+%*nOGeX&PP~Znso~2zKc +HmgD-sY_h}Pw9Defvy_eZK2GsczwT<$74`*28k2!wJMyco8mEzC&`k0t|*ov`Z8o79(0n_ipKiInMW< +zQX3t-P;x;wStQp(vB?;=>Kf4#g-J$Wdm46MpZeDk`I2(D_07kf!zmSWQ-sDJ3DS}ml6kp4+ci_Vrl| +m5d){_GuOWd7%AO~v&BoU>Z-A`b9QH2H1nxv>Wlv5eDXmQf8myY9urm9#2$Djm*xKSp8JgEV##$K-=PaEinbTE+X(<&Jc;O7R +O_tD3P8-5tvXSLZjwbEr|->b~E1rPbnQi&$g?zW5yreF7E9s#r9@|E%o{VsPP*BXL~ +#eF@^ge_gUXSbC+~Fg)??bC7PF~bN!S+6L_wF0wwjO|>KM({&$>wTe0qIzy2-_IbsNy7==q->l^iMi(~}3EV;MOUW +Fi+&H9$++Je?2Dguv7Uo>>Piovxm2Uyny7{laj +kCBF?+)JHv1Eu0^e7(Ha?aE!RG! +)r2v>gr_T>5i~?dxc~+M_6x3QfqeLAUj~oF-CAC6?$XER}gPx1d}DZ#`E5Jd#Sr$%Gqp{>Y9~=3i6@w +=ohZc79wD%%y=4bVpn(?`Xj^JX@c!UMnAPkX^fF~1Fa$uY6VcMPF4KtLVtc7tBfW6KFBKkWX;$EQ&5i +GR2w82Yd=Uz5^eE8JnRU3l}gUOOdvKD!_HnnIBlA))vhZl4YffnI}vcF|H#rao9LXn-!5gzmELLzD;$ +kKZBg801rZ8HC_-#Gpe^fJv4ULRK-W}soKrkVe2OZ|(Pv@$)}ykX(Hy+P!8?ZUX#WoI^;RRL64+6l8u +em-7-kMChS}bFY}%)AffcKU#vvtyC{n*(j!cqM_)S$0qP~acr3z{bb%|%VO8d_c!+*^-9@=VV*Cb_>v +-XzUh!4{sXF|}4x{gG>|JoRr858|y7twWq9dx!wf^Z|Ot;E3RP)HqH%5{0g>;hDKaqbKH24f{nL{C2Y +wUuxSI_lEr27GG$sK$rZdjG!eo;q&4oyt9~gbLVk5@w4cua5sQs_5M6~=nz$P5#G>?GiEUOR6X^Llkc +@UgYG$u<}}fi@xZ!n$MeVg`CEX1?5CW@mGmFSL}A^y_Bt7JhR5bHAfqi|fR(Bg?As@-|d>llBKq8 +Xh!hanPixL6bHHO&S+8X;sjqIYE&wgOEW2{dUP(4<*FllB0O8UirSms$Wc0sU_R +^WOy6zX_Co6Y%~faQ!|&|6l*`KTt~p1QY-O00;m^MMG5MdGEQ_0RR9f1ONac0001RX>c!Jc4cm4Z*nh +kX=7+FUuA7?YH43`WpHd^V`VOId2Le5Zrd;ryz?s-?1gL3DI5jef1NLhrDj>F +N66{s&_$d&DPeNY|^t?Wnftt$7CcL?U}UK;!Rp{)&b5j3J-P6Jy?PHs@l`5zI0Rx@zC`8}1-Kl62e;I +m=RKjuh8uU-a&SUMMxn1yQ +9OD?lE&S3gj?hVsOegTsHMKJt5Qd9HY@a@_q*x{NZEvLT+`q24l&eH?>6(w2gqv^9OyVnW&L2mw;PK# +|j5714W4iUIJ=)Odh^d*L0DrjS@&x#HxJ$pLJOb{?%h4VGx5!RJ;>{8<9bXH|Pty +fXTwtgamr#|LT)?_Vx?{62?DXp@R`T6xdn#iO19!ZLXRMU5+_T$6*RZNG7gKn&e;iY9JgAqQY# +;sw0Iqz(f#4(+5=;@n<9h=~iA@BccL5iBR-9%xLW23O8SQM93hDA+nm*#==3UKV&F;gV9bnkqP7;3ga +zfDb5@z{0Lp&MA_{VRGKHSkiejL%v$KS5{T^U*9fP+IJOGR5}xU`P$$dreCvSgJKYYQBfZG +;rGft-aw6~a_tUT=d^2>nfapj2`jh-1m80mm5{;k#6<_>>7RKDh8G3V52Cecl&-mge#D~#;&+t2^Pqc +rt*_=eps#@yaR2|p+ta*1y!LeJ`8=bK)zQ*tEhQX60$#=pqa}kUf*vP<05of>$)ZpU+Xo+Ve$yo*eSc +x>SJZ&VpJ5Byjf2brQT3F1W)x_eh)1q$mm75A!@0<48QLPvOBcRx)4vNSMBl2VL>;3JTqf~h%cU3vo3 +GYtd7N%mdCZ>)WX$>eO%q8}QFajV(StrBeL1tz{I*f*l)Fx4X~PECp~qUl(AXxk=I^xLI<&+4IRECJ< +_<`91kNx&6*Ge8o|QXy9JEpPfj&sBhLPW_6iSITCuT?CA>wq{4(G&tNp6pHa)k@&LdTNfru0GkstQO| +k^Bz0Q8<3`-`grDXHL>&OBP^~yir4Uu#OLJiZs_T!f7TIH)iSVAHKtXS?RJ{08JD`^)Ef1CSSnw+<2y +7=6yy-6dAdEzJ-yZn~=I@#eQ#_9ZWLGh>8j-7{pv4o +D9QP}pCR8acxPYBY{z<$41!UHcnIv!A+9cIzNdb%}Yyp%uNL>G>MD$Fg*_V28;$`egSz)l5tC#&1W;CXul~J$(N2MPYiAcpZG#l(D +HZzR6sf8BTqFFLTShkPS0{b{VwZ{xvCwTXPj1xrP;sTuXV{jmplRXqq_Bl(o6TkRy +6rEweV;;ZKy44S)C23I<*@72wc!kvk4xwrjK;fW|qQWDA^~>l5Fx7+k{l(4Lf!>`j;!=2QSO?WHS>(N +1Ie{3B6o13{#O8!={5)k6A>e#Pk*Y{|f%4>EBCV4~s<#YTwogwVXA=Gn6e*)RR;>vef<;h~aR=W +7#`rCj9d^7nY;YXt@hkwbgW&B~75HBAe`^R8072D5tFNkKJ1B&TaLr$=t=V~Fmr}|`83iM-Q_Sp$Rx` +Fo@iIs#jiZcms;3}!^j_KfkkVd-6lX0@>1>CEZ0WcdUU&wulzY~SH6!LiAPDOL2tDOPko)Q*`H|zw;P;B-Fu~S!+{fqeakm`~tM4o?5J~h86D)i@K +1V={Cr1>svYMH)PuKz0w0+uc5OK!AD|pvIH;;d#pwhPA$||rW%~tY1e5@(aaq3^Kz(0^IiVX(;Mb#bS +N!=%A-%P~v=4R>q|DVF(*syH^VYb0s+p_|~=_tOi%hD3w;Y3!|Q`v`=FVkw}K_;6K{2bzBHQ4nu-K%|NZ)g+`NBt^YO#ycM1Al!+e5ns1OFf*>r5FW)IqtZQ(ny +@9m`l2(QL0*#^PW?c2+`mBMSh>4u5>_{QqeDI2~m?ZBbUoHyRddMnk5>MgkIq@vubE(&)RyH4j0{MZZ +Hw&;^QbapzCC94o2yylva$j+FjWui)k(NW$LLzbaiDFxWssxzCc3wFnZ2fU@Cogx~lk1Gs@oK)7Mtcy +U=YL%e5lRMapi>D9h>5m;A2;>PIP^@9#c4@V?E2gYYa?eX6#$`dlYi*ccceofm{|9}RHOodPlKO)HsQ ++GoSQ`#w2MZu`91df?$B^Je02GYIum!&XzA!u9790Y=gV7j9AY*hNd4E(konV(apG}ZMdx+3_4)tY_A +>1c^5Ip7c9)jiywZO9q!Mh-g@-P+VQ@$6sl3pJF-+4A?=`-Awy-CEti7vZ6InXXJ@S2fY&hu^t`$Zn( +vpI@wGr&Wd`ktdH*ix-)8p9#B6YNrN@l|!!&DrFiolg&nmr+B@68dT$y-d)nIG$ir_R!F}?5oZ%LW3L +^(4aWj3(RCM#raf6t-c7BV~Db?1RO6@bs@Q)%i?i@Y_8|iQkXdtkSGd)$X_KWV1u%1=>aks$vdVhA@6 +fsNl~t;wH0qp$Hw-0)dn7LDtVvTTdct28v~mRDR$SMx+@{m0otRHleMM+(JNSvNyT@l^PnCZD!R8{M_WJQoI$Oli|V5F;xHB +aEIwpQ)p%tvJ5M(SUD8FauAe=Q9VduDQ^zS&cWFg{7beMM2At|9`cZ8Df9P`bfsh%g*x5cY|=HTw&91 +QN`hQdhz17Z@z!94Z0iJBZrPZ;+p43-{BW6jx^y6&tvkqa`RO9cW>uUZ~=wSBc44O_AmN4Cym$Q?G?w +fw`+uZZPIcdG!0*y|Y4%F6JPw+tKLedr#%VHB@HP1{X~n}AVawp2@)H&FT^WW) +sgHyTU=%FJDzC=%{o>i!6v1*zqq({dRGwoUhb0=;BMe^B?!{dJR^&_NLLIi!T +?jfWbE>V2*#;kCyCan#EB>jlhTV<~@ou;FsOt>M(0k|Ucd*TH3RlzTLO21pnPD=!`C$ePJ-YRz +C5uVv=F}@a@9&WVxf2D^RKPsoeVA==Hs?n;iK4Gz1Tul3bx-)QHwxjW`^ +tqo2mINRO1~4##_qCbCT7di%E%OYq66-u6M>S{9kN@09kKo`7fjx_Q)yqx^+m%>q`$_wT6}V&P>pZoX +dFcZ2NXu7uJV+zkvu^{`CxAzc!Jc4cm4Z*nhkX=7+FUvOb;Wps39b1rasota&0BR3dE@BJ$Ty +-C0%p0UUB6nc@8&<0AnYz(<5CAhIS88)$v?d|^kN~6)|dkjm%N|5tvq@z)u-K_lOu=`L~`_=pAblRxy +W4}9`)F=1tXf*msEmvPRTlK{bdpn)>$DgmSH`}Z4-PdlvS$C_e-Qo4xes_KI@Ob~cIlip+o9CC^dZR9 +$y6t-R{iv#mdfB~y``BKNp6(xR|9pCU{&e%l-Ew)Se(`HvjFkEMtMBdCMOBZLYnS7Mw%VX(tfp0t4V_ +n}o8@?FN6*JP7klk!;g_?|43&SQ>He1!cvAUY|T|R$p=Xc#u_8xyT3|mdji!QK +%(d(dHi#`5N@6r{KX-AOVe*29*=c-H=#O*cPP1<2?hMrs_R-z_Z@({}f4yJ+&-1Dmd|o{lBPAYAre4s +j1@`lnquV|^uHz+(C;B%8){gTF1#5cw5>I~osLs7*hguj`O$lm%bwyAt-NIHa6N_6YSMRA}C7D$Qm6$_vQ`3e}6Fki6%N|>)$ASIcvfJu +q+6$_+9`HF?&KT8$l%fl9j7BT^A#Dz$}pds=VD2PD5A_o=7SL7fg^A$1ZP`;7^2vNS00x5}nMNCSNuc +SaqkgucwN-|#&gA(N{DS#5?D=CnYylM!TlptS8fs`O$NrA5}sJ$XRBJSG#$m +*?a{`D!>{0fP?aD;7Wq^A!uEB=Z$8DN(*+fs`m;u|U^YGG76M66PxwKne2|3+Hau&Rpe@66GrvNQv@w +?oMwpR`yT!Z=JoC>{~X2A+Du#YKUtoof+a#> +OoV}E-><)dG73?N`mlfQnGOo)CcB{V2f5EV9=c!Jc4cm4Z*nhkX=7+FUvOz-Yc6nkWl +%wC!!QuM>lK4facBa$`cTNF$F}rZN>Q3sB5G^hm0Za0Bdz5o&;=o}GdnX{Cp;isMjuY_!^o2GGA7T#_ +QseaIgI}6`}4ruuhze|pD1>JjQ7(1Xt8-jd36T4nx=WpBS>e0^AZyRhfO}DB(OjzO%jyR+e}d1t80s#;=IM%xbia6y=c0}0rv9@$VNpNsxXu0n5Wa;K#c@$^4Zme?-Q^|mpR)L8KW&8|2MEQ>?_z|Z7 +`jx*h5Q~~%<88=t&7A$7hq(N_Jsk#kinY)JWT)VBg0#Hi>1QY-O00;m^MMG2o>6c{G1^@tH6#xJl000 +1RX>c!Jc4cm4Z*nhkX=7+FUvgn|X>TrYdCgc`Z`(E$e)q39NFF9{ikGf0gE1E?)^;dRbVE~M4?&>P5@ +mChL`{_9q`!XWLQxkxY5Fi=2HIF6&;2_ek7>%czt3WNvk<8;5I&sd5W1HV{3J;pgRg0r)wg_0Pt(Hnqh<7fz3M +)uvu0x4Oz~vl59!-?h4O;~;urfODuDwJX&cDhsJaCl-rES}5n>b+*${ztcN%c6Ro%x(B=cTc<6wd(}d +wb5m&tssfD?5VyUzLQ?)m+f%mr3yxb^USOdPsx6k-hX)058Wg?RO%3^ +^wWqZ1j)9_G3|&=dOuuQtI95tUbIxpwi +EpYXumF1E1iY~gs&lQvxMM(M;f_Xw!hh|-N@iH+!60x|9}fpguKsihT2c8h)=%u+C-efIUy`DV?M=fw +7<6MR1>7}SwYni#R1(?>-c|%K>=^Q=-J`Ap=b+TIhw!63PIVR=?TfYSsKqeZ~8=5BDDHdBq^;w^sQtc;8fP=o +g;j6sf-;#8BdRS!r0dk$B=9NbX2k$QwB?sZET*lKJ$RDv!Z;*JtKks0Ujw;om}`;&AjA!DFZjKJE<`e#gQz;rYV+Gj52giE +BNOF|^SlfmgJ)&`fCi;=%?^HGC%CIlvLp+MxMrl(juMs!^eDmatOzeHbtc>wu<)ziML=dkQ!{~ks`Aw +G_Zxjrfum*twx(NTOPaU_5s(+9}S9rC}Aqo4!qRuv|r!u8BR(*~y6!U2n^aW}R!CIAlzj=FAaig`NHz +r`cu^T5Mlv>EKbLPluJwnJM1M025>ljb8XXduFS#%N`KMXr#g#Oo1aRh{+NODp ++oE;A|hqS2F4XLAC%48>uLxXS>&c(Rrx9K>Sb*Yxt9glRpiZk6vx>R?B)9FjZVW-Eh7LU(;SaI*}FpF +UsYt^(4Pa}tg$LxvqC(IW6ev(8T8Cw{J3Q+<>0#M-Pd`1kWdZ|9jsoXm+6;>tgVW@D0Z3iWO^`r_}`} +z=bvVWgeTGd^-WuLXa|SqXYBr-&SRe#GY2{>Tuiq0Y;j0TqcT+Ax>PMu9P^u53HrG +z8;OC;?xuC+gun=CpCdFXpFy7U+_S(Q_@>P?-rs*cqA8DsSyqGSl$gGSj? +`Tg#$UP~`(`#eW`?PSnVzuI^T$c%dX$QuKxv+dj%v8ztGpzsRH>5$HXArg64H|-XQK-`9FrAau<39e7 +hVa_ejT3a(ci|chhH9Fxkw8QHN8w5k;42!O~T@vG(OZOS8LCnVRu}=jz~Ywi!?IE@Yv&xc!Jc4cm4Z*nhkX=7+FUvqG2Zf<3Ab1ra +s?Obbj8^sy^o?kJ?Um98`K!ApFnw~1Qf_3WHspODyfJ4{v+TK>y8c9w_8_tn)F;2++BH1Be%?ywhD3~ +;ma6gA1(0=X5R{a6ZPw33f%3AI7?!|UULes=&XZLyEdFGkxzN;Onudi=QVb&>^?Mjtd6`M^~+?i*#{F +oI>&bF#=cxDSz|Mup_*sxQy%T?RE9&l$5SDdNo8rxcYgcY3fgvwrUE7NmT_VcQDS@o`dIW=QBrR_y`< +`-;h(4e75Jg$9qWyYyi9ky?&1F{kFq>7)&HZe~op2^~YI{|jof| +JX)#-jV;b{8txtap28uU7#U)SeRx5BD+siYYkrQe$yPfTus?(OL# +<=abpFPoOaVt=}idIprsWIVLB{u6;ykbpHcWbfT$Qa79!swo{1DSl50hSX(dcWyX0_Iy9vlN%e+yn7UJhV9Gb$8rPvhckII3HImrjTW*>#-O4e$&K +vEtCF&Nvm;~MRmlot+2_;+D-30ZhrQx5`&BLSp3Z^Meb47}&kl{Tq0!;NtO9pumAcIC;jG8*6{#vXFr +3Nl?Pr6Ty_sjTUd~a)l=obHl?R5h9;C|5sK0@++~|m|&cNu%SYBQBtJ>zr*0LVR6|$yzGWlFVH_o2?s +47A?ugW#*5vjZ*S;M58zPE>zi@x4p$aeJ%W;4TztKheLPloMV`qa9$rLZrjNL5XDu|IlleG_i2+V_lq +B$xAf_@gfbZt~Af_KNN +r}EC)=>f?GCpu?fDaMfu^2xnp8g(IivKSj9q3^jU<5>rxt}G*o5BRP;tP|Qz*d?tSDH|ko4}SgO>(X` +-hBMAQM|tAJ?fq)(qIknt +|x!I@QOTfw=Y6$v&=oD`jlhvfHU`HgX{fCPoVpS{zFi4xB(J)h7jf)%2 +qplXQ?4)}}coU&(2)%{S+X$_oRMbVRu^e@A)WuO3M_n9sanwaEryL=HkVJ@h1bG)B;;H01N+oXPsEea +6j=DJN;;4(GE{?jW8yIm{d>^3?5c&|IzaaDxLLZ}4B6uPqGStOU7e`$jb#c_iQ5W@*@+Sxp57mD~hIYM6`^d&-HA@nsu-yrlYN=029b#c_iQ5Q#D9CdNj#Z +ea#_z5Di$2dn|oFg#K5g6wPjB^CWITCeA)Fn}uL|qbfNz^4#mqc9x;~ar;j=(raV4Nc`&Jh^r2#j+C# +yJvoNz^4#mqc9>bxG7EQI|wr#G{G8I7eWdBQVYp80QF#a|FgY0^=Nsx+Ln7s7sXN8SV4Nc`&Jh +^r2#j+C#yJAx9D#9;z&J;uE{VD%>XN8SqArQLBb +L+Wu>d~_>QPuYYp?>uW`&I=DlCzgh>`m@_NtJi5|~m;Yw*eLvF?SgIlg`Owl>ReAXmqOkyTR!|btZoH +EJDo~t){JkNAkLi)z7Qpt78(Bw~sn%st5lx~8l(%ChTJQ +!FSAvnn+%n&d)2lRH-~B12da{nl4q1&ChVosz3z_Bb}o^456EBu#=V#p2uPMf2vlalSL=*2roV$0|>i +K-W`Yrl#=nHl<0-8r*!h%VbrG$$FY*eQugp;7wDxrrF%tH$M#%4q2sxHqc=wm=0{30o%M_l8Zgnb*j +_J{cz<2FYA@}10%tmBF4cE&~VDs;nb~g*5vKP4O40ZN_`^5v@l)VXod4WnPL{0;ntye-y|P|nVw3)^p +VN?aX9Z!!+DnSTD|qvCI4^9+A@Z6#L-TAnFYdE}%>O>+t +%m5@ki2^TE;1vpNP+*e+mnd+V03&dL8>EZk+6Y|?S9-d;$+dW|xzgn&-io!eHm}FqeS#=^M?s8zG1l%A#MxW1c2k8 +oyC#USdkW(1i?Mc1kYI1c+j%{{{MKgldp!_qKf0OrHzO#f|645H9y@+IGa%Z2G|rwh{yW1za{l?*L-z +27muagKvk4?(YZ{bxlBVVB(e8@ +x&cw6FQD~MIUDMVZ0kn9I~z2v>m-iG~GtB_EO#KqTLLvf~9xR_stU#zV8ye^AWz+DezDC#Iyb8;$5eV +tS8YXk?lvcb=vL<4Z-4c#i`b2tmLm2s$y@LkoIigyEs!7yKGI^n+t0Haate4((5+}lzn#-v3C6%1X=q +wOivBMk2^4Sgz%e(A8ybf{9pn5=Pg2z@`N8ipemCDg*t22RV|BOB6upan}2cH{F(1ToC{p2Gw-@{;av +wV76aS*OV(lHNhkbu2k(21-d7LWCwbueUUtnoU>)4#xcK}0-)?mOhnwneH-dJw2JMu!Yp1Opdz97Kqp +jK=-ItbKRf~7cDQ@<8aJAj|B=m=OrB(Eca#~I4w3^asHKo&PN+J>0|XQR000O8M +nywZ=1~*U+yDRoUjYCB8UO$QaA|NaUv_0~WN&gWa%p2|FJE(XVPk79aCudbO-lnY5Qgvh6)$^Ape^)T +Q1s+QL}>6*dWh|;8_XBUtg!#yBx{A{Hkl{SJCiX-4_=ZDU$8#K%y_khH_%I>50iz^c(@gE(1Q{}T%0K +dM>dyl+31r#tAjv2!!SIfc;g((WIf^!Wqi)ou?=t)-Bm(#^eN?-DD%>*D~;foWFa>yY#*Ul;h*${xU~ +^Slos1Hw|*v`b3l7~+V0QdUzp}Hb>jw>$seG*`Yi^!v%gmkCUgif)FkjkYZ9bMiNY0if%PIpPoaK64J +CCqNQ>I7xNI&ZegRNR0|XQR000O8MnywZVA>K~$Subb8T*&5p6c7HU0;e@agD--g45z;89SSIQ#EdI9}Ldr7si&E!h2zyNIqD- +qr(b%PFwOV1^Kly*bPwfJ}GGFje*LA{EqM{eKT?I`nt#LMe1cXKXqd9793PTN2bec!Jbxl*yEU~y|7kc=8gf +Ji1mNq~n6SsQx;F1FX&-GoL}|Gnc~UulAhR6iv4%$YNnJs!tt&V>TGkz^@&3K3N_OsJGhLTr4si4gLw +dCXQNo~ra_VLwBbE3 +o@YiFmP6Orv`3kRIIAWMv%Asp;fXG00>=!RCayLho{li0T7>@hr{xG;7P3L!gKbQ}vH={A$+)gJK!`W;! +zC!Sch6Yzmm0534YiKuT7YCQN}NyNSGj|cv+(TwZg4jv}c!Q)m6?5RMR{04t +MnfRmz&s20xv9cW{*6zOpI_0$mX42@QdfNWDC3s6=rZe&%m4L4%CarW_zr+=ZOKRj)>!1}{Ts!EYpFx +~SMYE6rU+#dp?JDZ~=W5oSY1l?;jV!Bn(^@;Np?2geSBWa=TIX(?JiQK46SgiwidAQq1c>fH-F5LU!{ +>jHe8XC=#LfaOHyUo}&TO%zV9kV#d4}*}-{EnW2UXfzeZHk{MY}2efwnU^JOKQ+J27uEl~`P;2rhbV` +xdJ>iQo)(zJfY#o9V3WAKLEC}?z4}z3pZGqMKs8pW>quW+3@4qU|S16Bj +7aK;Pa77$G*Te!9W?1#Dz1*vEdDgG$*2QB|EVZ5A)}GS>3ziGJO6NG_4^T@31QY-O00;m^MMG3OPaoT +a0ssIE2LJ#W0001RX>c!Jc4cm4Z*nhkX=7+FUw3k0a4v9pja1uG+b|G)_gCz=FLvW*fVMB5F*7Z_(Nc +PWUV+h=SV`2%l8_W2e0^7vFA2F&J$Nkb*|WPxt7Wy4+JdIhSj!shTrn{L7ETW>)#W9p85}WVGdP_oPN +RSvjwt7*MY;{)RAexkN=3Y_!4WQ{YH{wL@Y2{Q(v;jtT|t4tha*`l#%ZGCbMyH8WPsl|jiRWcV{j;wS +bA%7FjlAVWWUSo%%^n51ZL+y2)MY&BfzDkVU|gO5qA86BO-NaM^hivhadXAXU{s1G{C2r(V`PGAf$z3 +DQJk`ma(NqS1Md3J$PtTDU!5eG +B#2y~rTr$k4ZctJE4%2bl}va<2LbOuWd`;96czVUew)8M?0D~7fz*Xo&%@5<@AKUwSGR{wl_JOKkj-R22;0abT3gW`C%%n~-Dcc1_My@^Q<8Xh@9DGWP+pF3c1@=2&tF~(sjl!X&#rIgw|6gI9=v+ +}=Iy(~_aBZv9)J4$lG{`w8xH4dzSZQ%vQ8z^t*cX0;0I}6Wh4=2VyP)h>@6aWAK2mnS!LsS +lHMNy3b004Re000*N003}la4%nWWo~3|axZdeV`wj7Vq-3Fd5u!bPQx$|yyq)c;gU!t9}uYssKk*2;% ++(ahL|Q^%ibdT_pF_U@T!ClQS8~-of*3iG=c66*vV61xVzsKMPWuABRp9%JfYiT(A|iYKy_PytgmqAsu$oS4?z;Jr!P)<^47o@nHa>{Xl~or +@O7qWcHZ&m*w9f~7>_Mq`>@qMA9h9ofD4r>0(*mD7)^L3T9nrYXl#aW_{hHKw>tVIN+D=lICIR^v91J +>Y=1}E{8z_}ZOm()TR9S;Wb)ia7c_lWvaC(wz*lrUzY3l@R0j^}YewlQeF4@o1Fvxi&kJCo*dw#{%d^j7K +fLf`lq8b$)SD-B%f-6-;Pd;C~Nf!K)y*VyL{P)i6du=BdxI=9bk>FzQ%_6b<0V&=_ZS|E(zn +b<#kyh&NLsLB +0=gx|&FhiEn-@EIZe8}b0?wCJb<)UalnUeGG9+o?oI=_RKXlJ0uAgxn%cn=Q+1Myi_3YhYm_g_zC(oV +Os9#yQk46u_HxvjHl4`4{>4lwBH#l4jkyr5fU?d@O0j6+lOq_@n_|%16D(H-*7{i4P~6h6-(YI(1|hO +xG6cP(H@`i&S|RlNX>LX$PdKpI^{!UGT}|LBW>QQ_5F$P7w> +vtkP(uN#CeS)LaZzn#~d*CikdgjZRyrX3)-=wO+X6X9R}K>dfmkC +MX^pVtd_%H4MVnb<#cqym)VijsOkhRU +p4tyF57xt<(8=nWhxTt^Y_|XZ^;y+r`}E)(jp7d07 +ePZH!#YgY&<0o=^_KS>X55vfMI!QvYdqH5JkM*p2J(@UMPdSV|=BI<&!#T*AA(7EC;xdRotTm9?e@e= +V&L00TOe`AUsG6!74I^@7Em#ZxcJn)m^-=s9|}6l-GjZjt36wAdZBaAqjA<8A0cQ74((Z_Z5d6m~e4Qq5FL0sM6L+tlq-J{{+d;}T`=Npi| +jWdp5D%ta7Uz35^AhnLZXXLoyeXzZtep~b0$*N{*sKjiF9j!$tWr@Lihj}`4V(d|Fw)_iS$r^NyU^zI +i`DnTgZ@bfDugiB!oOSfAMu&k%i2L;rpKGprx3+x1yrfRCM@BWY|(1FS8qZn6=)#=sq@5e2GCo>Nc=S +A1^*sRz?+011HNX6M-`QbK#^7?|nb68nq_ke}6%1E-|OcTLuLs@XvoKbd$&g=`BcoB=V14igq}R3`Jj +E=2|Wzm3Td;(K+G&;Wi>^ef64ad5zHF^_)i54*xx$QHhVuSE=g21{JJs&A>-g_Z#R!y|eFBM;tghc6( +t*)w&X}xw6-MBzi~P_lLb)Yqn3+-)LH9m#kcuJ=dnWLrlK%?PW$0!$NAXr(_OCEVjac!cG)*I65IEkW +tN$1&KVuk#8Ht{&d~s(3gkGR7f#$Ev3H|tP<^g!8#tQ8OOA13TQjTQmCblB44F3F;$O7TT-5OtE{1+K +pk#k==*@NPtoF4^qt_sLB+?=LeNW`52T_81t={%m@bvtywk7ORAHzsD0s$qp{*MuV-YpxaY}7r75p|a +B+=iOv;v!QnyRT$7YcvX1GU$R{Zqg6hHX3neoV-{*}!XVk)z8D+GJ=+how2x*g`{4@e5rJ(eblkw8-T +c3ZZtuXq8Vq7+RR_Dbc;-7^65Is4E-b1|YJwR@w*y5|G=T3S!c;03ukOe@5|PL(CJSYnF!F6?~%dRIc +BqKGdyf=*AT&mJ{D??%pNe?xkr&)*2o|NLzKHhoK8UKC#f_;f^34eWd+{T6}Cfd=KJ%^x>~67!}oV$ +esbfIgQ!?+oDB&jJJGt;k;f~P!d8VxM!Rf2;}})d`APMsQospmQ<3Cb{WAkVj0wBU23wjJDG4)rA8En +HQ?MNt=Uiz3%KZwPu!uC-qp#J0}b?sFNvHN4ds**Ba_nmTihW%2}UKs43C#y;YebRJxjXVMbYqV4%t@ +ots&xHTj+5+!hdta?CF;(Nb+IfioD{AHGl-B*{Pq9`9i3{QZmgqo?p>`GO8XL|aX?TP;ap#w*8 +0Y@*H>AwR8Q^DGnbQka&RbTVB@!x8mQRF9Nl@nyt)GVBWo+m`^gG|pxgq!me7ea-&&0RFJw_1L|J?>$c# +nZifGzc$&pxqeks)Xlg*!%)%B4@6r=B%`whF+%z|gY8D94646R_a7Nt-TE6^er4mMJerOz@_0=6j5_26xVXCYIAw)HmrX>_SX&TH%e_kc5)Bm9s>SF7UmmanCy4iuZg7Z?~nXx~{dI3@Sv3M)Li=Ugk}Lx*~bjzD>`IwVRhYEc{{T=+0|XQR000O8MnywZ&9N-~c?SRh6dC{k7ytkOaA|NaUv_0~WN&gWa%p2|FJW$TX)bV +i?OEM&zCMA>*ZZD(haZD;M9MAmR95z=x@kqijh>o)1L^jZ33J?9X=lI(4J(aB +_j@mRvggM;t<063twqTaJjT}l2?mc^PC`=%C>wO!K)-nIkP7kscqN%_hy)` +x`r1TdY00h(!&^0wWr`CkD&W}@V&wL$%Gve1o41e(Id9{h@U_^ry%KC@RuG+ +}GW$tJ(^l*HI?qm}EiT(?T&=8$6L_b8@fL;}PLhyb4Kv6yA1^BcxQD{(_b=7@UKUVAwaBKNb9j`XPFH +jE0Cb;ZG#rk}S+io2O!O&V9sQ}h(A&a_#(2NP#LWb`%x%q$&RmmD}iz+W59F|~YNwqQ)a>zKid(jV#+ +a{~Rab!i5^+sSP>aJ-+D^YBFJ?v{k$litGeOg4~n_(M=T-8`&u*6^!gG~%}X0S7ZO$|0R*tx;Z4R&F$3xi!6?9yP!8g +_^b_F^4uqzrj@z!zxW5M*?g^dx@3l}zaOfOy7m@=L9uy4&d(%uT#F*SgMV +Jj=drZgC_eem;JXAljhtUDZ~Q|Vyj%*OmmlbhL?&kSZ`o)|aJY|sMg8ym^p7)q)x=z66*BjVKf`w)xn0bYj2Pit!gI_dHR(G=Lq@((<48e9w#(bZNdvIdc^n +P@WFyHZ<$4SWVt}o#5E(=NXhta7sm^|J4GDWcv{~fuxf7JULzgia)#}kgtdOl9&Ma8FEc|Gq@TfkB8M +aR9T%IKu$uIUqe0`&tNAW*GnPiC70BuOb(v51gxDayjM%Mx5de%tdgG?EfvH|y5K*Uq +%9^IHz$k`&&pafbEa)Q^6yGqo6Hovp(Q=fmyriI#9JAt}LZ>MEKBL-}l4j_Zcr?Tl#1hKL`Z_H4&{Jo +ZGjPJC9(luf2|Dp!aipxrV=4gK$3lJxgR3ut=va_k++=Wqv^d|s!2PSDY`q67K*@44U&SCHsb&iUP;* +iX7O#5z>3OhuJCyCjU6aF3i0kD(q`99r7_U}G`affKJ5`$~kQosh_=*-v$YDy?6NBIGs#@U42Pn~$*p +RLHChJxB(LqUBLC|`N)0-RcOnP-J+Wp`P4g{PKi^fHAC-;@Dc^me;nWw +9R6TPKyI`=^rl$i#H&vc1Am-dy~O5U|NIkV6<+h4ZRoJ!>NKxq!W&sPbSmOvduF}rMx{n7pBnUNg*%~ +*&C;cs)LkZHfKsZWbVwoq5EFeSY>A7E9G;_KBk#lQt=y2pAk4d%F%8j511Q +_o8q(r@WZ{(BPEo!${w{EX}YV}QquB@55*SsrflITk#0(~G7J;RR215ir?1QY-O00;m^MMG4|?%gL_1ONcQ3;+NZ0001RX>c!Jc4cm4Z*nhkX=7 ++FVqtPFaCxm(UvJws5P#RFI5-$4Ws2Pa1r`W!fu;3^u1N|s?fPH@jx13&SDG|PYKd3$egC(Y?E~(U>_ +|!$DJxwI%z#0Wy!-L~-&ImNjqCLGLJUC^jTlwcLYWxb24U7DADg*|h{$Zrfh!T_@O;*+kJ1yj&AR +%<<1irB8B3SDchktaF(c_`ZS)HT`^Y3R=JylhYKIwMIU@CLrl*J;*}tsL~)f+wHk?Uc$r4={P!@ef{) +uad!Uv@w3J3e0DLre0c>^n2-MX`^QlV2g{#B%U|ts9nCJE455Le_`@x~yX7~x{OXop-14(qenPCTUY( +yiFvPGTL{U_*Tq!uqW$e2o$s)ktXf$%JRFDIDn3k|)qId(#T#h44@}*oUM{ItI{y-qEn8OuFS86eO6fW$hPU+smww_I0DT} +QF)51yK=re8B#CMY) +L{gK$Z3SgEO>|&hHah)XPR^y8U6#XtWA;3b@cVN`Np$+Na0po`oez1EBX@C!HMa8_w5{rhB($0oaZbR +<`XZ#@Y5jz_k!zunffhS!ECw(9+1PE4R +jhx7kAZj47rRd2!$Q4L?1h3cFFO<%4j4(aJh*af_8G(h +Z%PQXxC2;DLc*>ChiHlqjD})u$)OAzG!@0%v>jutrEQK=?qXpHwaX-9FIkeH+4-!8k1|lI$hX(7jDGUum^8 +x!np#4F4H0#Hi>1QY-O00;m^MMG4e +@elxr2><|XBLDyw0001RX>c!Jc4cm4Z*nhkX=7+FVsCgZaCzlf>u=-65&y2gV!``hGS(4@FE0pC0H3Y +g3H906vz_bJH3(W-Nt;kym0bDJI6xjB`k@7ypb}E_nKVJ$^pyflo1!hy|Al`^XLkA6rAXR!jeeix~^YgemgDv&TJe>tS!}YyI5^ZPFJs@=pTVCOa$^tri>MME8_NG2 +@}f!VxF0c8PtjOaL6N9P4MWspdpHmOLGaiLuQdbp86dUax&lmq +193rxL&~dESrG$Uf`!_4SQ;IM{F>02cVM&G?TKWhI=!CU_jFVM8@PkKUYF5%i5+R7SfmuCVu1(0A)-B +ClSb`5jo-KG(;>_yb#r9gE26kgdYjssAP}@qC8Q-JIEv2aFN>g!7rxAsrD9f{zK$vtt^J+9hglRyr?cOsmsgi@`{r0#KS3yyXL1}NLL_? +WjyWHD_v3hEX=qyT8lT192n2Nj;Q8AA~VnHpjUDtJtqz0T3gXYKEBH%+6 +5GUyr6w)N83)vhAz@*v3rde`Mk1J1QFh8!=oWy8FU$Ev161qbiC%6Cvs^^zQJaLY=YX+h@x-_81SR!*q>4yyZVwD6}u| +~B`1NQsVCilj{U)fccyTGJBBJK4CPA1PVd3y)-&&Ee|LND>Atsrcz^$(e{guv-`m}H$5epB&t>s-sua +oM=}Cv65^%dLgsMDOXxrT1>i5gxZUj20^q}aaQGUjTVgf;)b*V=z6vwOk20ZhC3h6eOOZbTRB!)f@f= +jk84dJOY5F5K+CA|adDQO^Pz=QcTjIUZp1Ow{`7a2MuX>HN-m`j)sW_~2VHmMn=9)o|5j*B*HHiLZtG +|A?wVd<%Dv=hY&;U2&SIdvdzs=R5omBo%}K}jBYPR(=-CRlh}VU*HY**j%KX|8o@Az)Ht%Rn}AGdfkeDu(ZMU!ehZgD(ev4KI5rcidUX47_`eK8ZBeC +nNEhsueldk&WTmOb?DY(;qQ6+-Egl&&WUsNpEU5-xR-P-mz+!;{!wOuzdLyoh|GLnxf%;0o7oCeaQV-JTM6YmdMORu6-)v6n4KRCD&5F2G_adLgl)UZ-bJ~j{9@&;MaypNpdQ +q~5LAKT=Yanb5tMM9&UbCFr$=u*nnNOyCwNU@(iClHwH?Hw&`u|&**N!;1Rq0bl{ +&&URJX=-Qd;O?&Wu&xZm)Mcba2Nloq7P2}R%`w4-SyTbxx8#$-d(@c@A9E!0cKUCWh>fMMcYY5Z`8?N +U(ZAscco#YY;Sw-@cvHEd)V9DzEVy1CTjM-ez^IhS1ntA5!otU2)6XMh7I&Ors5?cqAEaKZEP)|<(0k<(HMTDh3qs7m{hq)S>0CKWnhRtoiTB;@xENuVn +eR8*0uJU+H;MGg02w#!`)bQ)%aZ|Iy=}nqb45^p6zs4rwN3p(8~$B5#sw{xNZ?<+z4aSc7*-Gbxk&aP +LX~n|r$ln>+h8f=!S$qiS-h2InPA#(pOkL&{)WQ{i|g85ez@WVBTBOwtQo%dZ+ +4fRqjt|ior}qYNVcIBu$zg@vC$tJ)^(flAk<1FZ8F>^W?eA^QJxvJ{dw@-`ALk$3)WhnJuNs5E)<6G7jRXB5Js0^ixL0a3ncYmB9nk@ghO$*kPaOC6zR|!#m9@q7i5EH@k;u3`v5I<#e2X$LD6y&>{-7XUc^`$ +9zdX9elmGOJ)hxfAxfJ+km{|5nEPcCq|Ze+&<$xLRi@rc_1FL5-BmtVOd7w*`D1YGt-lqp4dhl0^ycO2t=e15g{I +jT+k{6B%b2OkgUxKegak9^XOUc+VX`1o5?J`wD#b1Zo@l{lkO@Oww;hj#p|cYV#kewd@zu>u=lUC$wqCzhN>%ntna!(jU6k(`r{F3Zv0V@xB3 +F20$k@%C#U2ChgFualX97GPMLY&??53_KSPH2dk630nLFQzLFk}rR>*zomb&?=tmibQq?Yz_Jc9!X%v +p)TFJNUEf)Atu&k{7Gzx`Wd%n08yDFbreJe2_Ln7F&YtiXLPlZGm#6Cxg+KCqXO*_+;smwbJRX!f9Bw +ZCKu*+nxdVF-`L|CZtbs9&Mu&T)mJX+M9WhvLQub7-UK4?g2g7Hl*hHbd)I@^q~u|@MXIPTlBqFD&(& ++k*BeyLKxuWj~A$w(ZGlK(U!rn>&H_0I+S6vo-UOsC}wl46g1}qu8kd&kV(qp8CTl+PagtgZN6VHQU#v#4=WV}2>L +aWn)6~J(IZQ!1lCjk<28;Lk}g>JH>H7oXUp2bVVD^oPn+s-Wg+GhpjZ%sy`E +Mij9NC!xl&uP+O6Y^rh`VqnngjfimP>Ewn+Z4_#wZJ^r_Ob6?j3uS-=1s(K5=skrXY`TURb!!If}~+Y$YZnePW)z+%z7i)5yVt~)%vA!`sWUVoEzeQkndY5^YeL{? +m;*F4TY$sbwvEqXr?0gvT>iAS;%(60%!9}lX2aDlp!;v}s~9B}c(yjW!4F1v(k5UTn~&snh59J9mKex +P8#3R^wXTMI4gbASGZC(RA|JtBqt-q;q)aHwgBX~=pi7*#}Q+3WWQO4r5qt4fYUiH&V_q$)4r330u0r +;P_%h1C~x_JbBwkP@p=9~$5#CA3jzwK>TMRe{LrSEdJcLu#=Tx>R$i*4ORBw-(qQz3#6v77SYE1=gSAbo3=u +tzo``wvijhU&!-P2&nG`W`{m*Ehwl$2-yJ-@J^gGlz4yWX!;hvv-aVMy|MT{Te?9sdWu}k6ntt=-*-z +g-|9C>Tcb-n4-v9fzd(*q0?*IB||K1lUkLL%IC(}EhpcdM1!8vUtD#$Vp6|R^-$zPzYbF})kaL+iT(j +55z3GUdY4*R}o&p0{O+~4U?ODfliJcnHUh2yBu_y_Wn4w68q&(L8{BQ2# +{i^*X+YbN)NNOJE?A?b|t+T^MqtP#PHyUKL+oxF}_HkIO(`?s@_&JlUb(ZeLGL6$LKjuQiH;bT1gKeD +ixJ(W^J@zswF5!^})`w(Sq-kts#@QiQhRdxYTpagNveARr|MAOZ@a)ISXaDx{)r*dJ74GEf`mm2>N4( +w_QJREtM-ZUJ)4RbwjAcNVvSSCY!?B$L9vxPsj;75{`ulBKV1jcmsdZ(e0A|taQ)-u& +zG%Mw01>57vd|i&%(_vJQqm{>i;0KmVn<~)UOrv8i5Y>$D+jfShQL#r2sKE7Vm;}3%T>#Vm=q%uTio} +Z*vb&mvNZqtcEv?q72+Vr!_p!d!0y;t_3h7hU_YWsfqls$7SV8ERI5Rop)hQizaK+03&?@81n&SK#=R +Jzg#|h{nP6!fD8#zGCyJ}E4dZ{Ss@7gT*m9Rc=El-i;OwMUnYw~mWZ`y3DW(9xZMQ2>~lrZ>*HS5S>cnnZ +WZvJs)Kpr?&tYcJ%avgvXJ3+=UyN6d^#y3bH(gNMNEKZ?{o_6VCMfEZS^~Kyxv5!OYCe1!|u9Jr{0x> +-Vd~iO2rH1(&?`hwg~txj%Bjn)m*=)XuSo04-e-emI)tw1}%PyD`A2rMDp}wr2tQ2jQ%z6D=GIu +e#5Jba6~h+N>>}11%~jX4j&-=%r-4i&^+b)3?g$-4rs-Lcl~}yqns8T_L^A1C5MChk|@$}XfKJFqh7< +3G~h_D>@d`##AJqChDI;LvnFOx&f&CagxHxiERIt~XO_43Zkc#x4kj9ZxJz3_e6Dq(1~}rKDMyY-sXqRE +l{Vo*~lAm8M*1Vk`|=M;cd|XjjS7BP2C#nu%8UavNqvCJ*d#laVc}u|E!-X*FO~5IBxHF}g3LjP(wjo +YkPjkXGF?&5||55#_%)G^;U%GtM;mWw??i$ed{j?2U0Ys;!CAP95IO9_X96V)ndr`d8FF;Bx`(-4h}nw)~HF>*A%N#m7FvXp04( +p?zuQZ|zbE?Js`DYEpIRBKWlI^%?SY7EGvQGQRiBTHV3g;b36Q<1(pHycuQf!JfcH%+fmS8V)N)W459J}68Za`jY+{gxzoDFSz`DQ^?DV5qm@n4DZS~e*W_nZGxpph%~o~QVVE$-Qb&2a5E-B&;&PF?>|tqCR`2r8`)?7}0tze!(Ej(!tEaEuTy|P*SoR0gPPN7H%RaCrg=!`$QC4yt +B@qf*cHpqzb&kC;TXF>IW+hMcu?M{jFxDA^whQKY_9W<29q~x$$$n4z +ou-`^W@g7wB3UWlNJav&1-PAWmT9+7$r|MWa~x1ak*iYdMViKrywA3 +Bd4ueiu>=GJdqz7rw?a5kBF_9ZH%ORIqxn1#`|HyHGLc1HdjL^bIp`Eo*d}2Pd@ +ybl`=P=G0VG%BGc-UPKDOmDekzFeyJ8Bgd72PdUICwznO*SfV=ycMxEzq)eySlW@N!%v&&QD#GT0~Cx +p4k#EUCauQH|&^)4B%dKqGZjv)y1zKlkw@L%_cp)G)Lz9R<2!PzqKa6e-JM^B7P|=WRGqL=ZJt`0eCz +s>I(BqIjLOPpW-8zba(!kgwo8*-5M#kTVU!NYYQSD3bWjKjHx0umA5-tY}1tqlUV2ksB3>2Lp7$WM#x +-TZjl^rz4a`EV;_`S>Iz!1PZd*Ce4UHwlSPEFFOSsNoxx2_$6VRQovxl2vbdEp5xpmH*Z_8x@gau<|D +d=*WaO>lFG{eUT}n4LR5T32yTuz;Li4r9+2a#4Rjbg@*mJ+W1JE)`j_*W&!lr51w3R}Rr_5C;Rjuewn +@%d!|}qlR_?54r3h^SjfP!uD+j+IL3rOs+bD8d~5tP`khyPE>z{(Rqz@@ta&0 +_nMrntoZ3}<;M=2v>~(`#cK3>tpaCIwg?D!F4l1x7D`6*gmS8f$JmEoV%h?!+Ib4AIIO6sapm`(d=I; +)eW$hXbrPRhI0yBvN@7Th=2BpHV5}O2`(PRz^z}?X^i|nLQsCxuzX>6=$yflk8^adJZ%^BMaJ5YV9hBG|a)o(k+pu(IBBYxv?54EHU+dGwG7 +7tX=pNs0-PTdX0XT)jO7zygd$Vqk_xLLPT1K*XIoJAj#pYW%0lug4$s_6vIrOPd-M7Q_41URV-MsF(5%l5@RJHnh5N^f)ZV`cJriPO#Zaa8zT$E&G2mWf|ZYKuS3#qgmjuc6^@?a7aO$e +>UO=n}&&F6w*DtC6YNN7r^-@Q`4dM7P_0-`Io2q$gy)4EN|YK=-Z=Y``bwhW;{`FnC;F*7t@pujx4K +jb>h_8rK?#H}(rmsIyM#O^5h(#}jMKnV +DA%ZveZ2lP}|HC?G;C#~)&Nqd!+8g7&2gqQNY&WF@?#Jt^H_huC1^8o{jI~JI*l>J=a04YA$7lRY$7l +Ro#pj2Gq*Z#GY_f1ARW#zOiF5n%;pFk*xt?o|5b9#1Nbx?C|GtfityoJq7N}2)y45Ce*};R5{k9f+G* +9mvgAh(O@UMXF3grz{FS>HYLD1AHxW7r7ePHU{$GM88cAux*Ve`gX@t@Y@T5#*w+#JI0w~ +bP)F^yd?{hzp6<+|_7Jgq9t2}iSwhgQopPVv+qY~@EE{soo(sV%U1HH{mndGt}h41r%ngm8w>_(CA1D +;=G{^(jnQ8aoJP75Wl)0)?GE!cHt&JWaP*n|oY%EH~7u&8>2v(%mWt-1Zj#S09C`R$?VBfa?`qv6MXZ +&mEprM{iJrW@(-WYbX}g)eC+t+a0$~>-H%wCh$Fq@@9 +J^T)S|ybbQxXNK9{&j#WNEYOCGS&CqFqNq7Sm>b00+>N;)%mrdDnlT;S8%A67;dl_By9WXF(1TzXMoA +EO&0mlc8U3+)lBeYxb20u1Q}E+Cy`lo8DuU!{Bj +?oRC?|Ep6Tq5(AOs8;vlpjk}`m*H|CU|j)slSbDx5}M_MSM=5(EI*}j<{)4Bj=_gKA_*%?lvOGD7mj1ach05 +(YFKq_G_f}uXS_9SWD0VS_us5d%^=xL>)78YYz?upZF8<)AuIzoKuRNrMG^$PDiZ0Pxjo;pa)uc{k5m +o`PynI)(djIS?g)WCi@;Y0>8BzZQ#5l@8GVvXRX-9L$s4P8rW5Fj<2uzPl$_69cZ;xy7WG*Pi(YXe+N +)Y0|XQR000O8MnywZX+#Z9k^uk!9s~dYApigXaA|NaUv_0~WN&gWa%p2|FJo_PZ*pIBa%pgEWpplZd8 +JdkZo)ti?EMuZrvb@v93mQ|L;(uA6of8{gu!cL$=q4zC4nIRJ-26qO+g-tn|tld&WzTn(QELo%vFYbU +24O4ir19PHf2Ep+~RrOvWTk+V_j%7Gr7IvPE*z$c(9-E`?D3nP!b?BL@Ge65-f@hVW};*BE=PSirAhl +Q)m&MgIdf0x#BOLDJ2cWJ|F^X^!k06SY_mZQtH~AAt!S4E3D``gO1LGUO>9y$I|GM4DZ}2p%g3Hb}A~ +;F0LO?v8fX|5@*EV71gG}b$-G>etx#ayP^?w4C54_3-2C6-FoMZQAqu(z2p}4wugNkgxfk_vb!kOWQ) +sUXD6Xn;B+!Vs?9p)&^r}PUH_^<$tN@zD&el-0VvEu%;&zeyN#ltcNf?!yZ(G0wj2K4w-Ac;Ls0v+tJ +EL57ac3{P~;z!G{)WNzNCeYIY4`PJ4E|Au)9hKc4$JqK{oukwa6K{GdcrOCqYa=@cpWk@cl2#6hi&$RiZ*RMV6L$KlLGZD>u)JEoe>k$| +^4aRoaJT|Kp;J~`?gV5a0(pt6UOr{s4bVf|-|=d&^;_kCOPmD#yrr8w1Y=PfQ$^X~&!=cce+2avoex# +N3pmZ|$Q11Jyz>{lGF*oXNf$&iY`M6|Wsa%ZegU_b;w+A3S;` +onzD>zZpbUR(8F11ENSp}sXG5^UQ~Z+tl8BC6rZkD +`-m4%{RmWVIwFp_>*_9vY=!MIrgm;AeGaH7WT~A*~aqvq~8M>UB0lg=Y+2DK86evBEEM?W)spR8=OP( +T+~A4IUS%SFOTV53VP(-QZDXErUgyMalf5bBw#fm?3rJuacTx9LXJ+sO~`KvdJ~A+DQO(OOT;h=mw2L +>Sz^+z4+ISw##CVKk$~CxFXl|h^*g=XMo!s;H7z40v@#k#0zdEeNxa3BugsV;CblcMy_B0G|EI~ +jiBZl*)Z@1mo#OdAUrnukx=RKlYd<6*zs&=PYyxJ+`LSi;uNGNziy?P#d+(HRai<9?k(8 +PuNFTQ~mUY+ujFZpK2$9x6k`kq9YZI%4&K2b5H|biyGg1K0==3t(VY=vrgz4ea~j8=O}+Dk^^?F;(CB +po6$=Qxn1|$xW|HiH&Sq`Zj&tvcqQ@W}i=2ouRo;%8ETw+;34mBM@?z*49s(;aLm^4#WX?rw1HcL4#o +%2Op1XGxY%T1`1vBI;<{qs;{2$?z4{dC2T1<198 +z06GE~luSXVg6mKU?J$#c1DvqSlfuYH_=pf%Ibe0WmR==hgHx5N`+Pav1$ +`6k)C{5DWD*!fZiL8Wn57!f13qdtH&Z#tjdll_YrfN=Q+Znh$xys1RR +FSUvI+!^;=_*dBYZ!FK%1n)dQ$8ACcYQO~RBM)drG|5p{hUmu^}^q`vnCSYoX0r}Etv!*+X3z#&4EtR +2ro3>o?N5t=9nS)X87lYaH?G`fngU|-ir2E-0HBOHJHAN*x(yNE^K;IZJhbKjAftB%d769u&`HVfNus;{M3E4k~y*?reT8-i8NixbcE)Stw-ent)^<`Ih!}1ba +Nr~#1W61_!%{3Iy8G-P-p;g6;BbdD=%1l#->JkoROQ1p!~yWz~eoxvv0)5)n*$+ZO=#mZq)lYM2OHu^q5(j*!C3o1TctPj}2?TCTR +WR`DU5D2qSmUn)FyjUy8!{Bp=<7c^uJzJUwPgB3R!lwD^a?e}_Ho`<>YcMEg!Obzf@s`Uky`01tH26M +~Yw=WiIVS(xpn6e8{OBS$eh7e}NOGP_zex@E(9xULq;c%t?x!I)9mw;!iF{sJ^QIp$nY*{INDuUrO{Z6};{%{Mm_933$AqjojeNPa&XhC3XUL +7wp;aYlwzT-Thi-uRHCHni(llbB7kr7w+Pu?Sy_K)>tvA>$U8`spES$9ABPCGh4@DIN2K=Hw*VKP)h> +@6aWAK2mnS!LsUy+fV5Ud002}y0RS5S003}la4%nWWo~3|axZdeV`wj9Z*FsMY-KKRdF_2`liNm;;P? +I&7&^BOUe#1ZM +-DQ8Z)-TF#QEV6&w<@tLoO(f-9OS&@W#;Zx(O)o#_5mQ#XB6R||f1v#}HKU0Yn0r|QW +pdC@GlYyN(!=B_+17H{FFsV16A4-)lxb~3}ir+@n4N&e{RlSlvh?D%_nbX4Eamq*2VU7W8=`t`V4^z` +kS8k&9nyz2P*i(&%}(T`)*yXEP2ql=wv`l_jmH8)$n?@bqMAshmJ`>|G~>Fc6^2BrrG)e6vP{;q60^) +j#ORg*l-lJvK;4nmW_<}Ijn?gH~FDebGc~Lw{}~@Ea!{Ma`6^Ma!{_jQb5>Ln|c1Otd~tYCuq6qa +9KmUojZ{<1=NIjV45;df+p$JG)cZlHf?cnRU9UDlPnrFx&vCaxk0(MZCZur{bhMoGJ4JP@~Zi{%G*-y +w1q(!_o*(rZZ6cLdRevxdDPY{`cu^-v&hNw=Hew5;%ddZx~R?8gda2d^Fr**xf*3-z&?T>uWq`&yfUx +rzHQdF0RH5c*jfGR3HIe8SOK9ZyLzimHzP~ZW@YhU{0)5_yprq9*lG6 +&S>_icHhkk8Ny{Kc=jMYAd0vF7;9yl>0WRDFfN^sDj$25R2XPyMpLSsS>o;Kz*qSkgjemQEp!8EQ4ID +z)Qt#9LkD@ssb4etdqKpFVl{;@R=h^ZfMblNV1E-Qv=xP}o3tZ@LB)V}}2V)*Z-Lb4Gt&sl(wdQVfT{ +i7h_QuPe2`ug!M;iGC^!?V5G@U0L*M;X6@bUA-$UQF&L2S6#14cXk%w*TKP0&yF9T{PZfx%xO695JS> +wl4Z$+Tbvvm2n2@FsTz7)zJ86A@U=PfxqQ?U2VFmgYSwGG;OJ>9~|JhmmD{bE{pnt2`L_*2M +5O|YW9zgzki~@>H?`E<_C{Xj$fTTf092veepd1?&Rf*qf=F6GMW7O;G5q(K6wNShbQmDgKsX?X{r7wm +Y_%$mqpu^eKz^=^t*dsPt;??!G{MQ@Nainmi@Awv0P(Jae{hSGnd_I!esGBtg5e{WS>RqLC>7iGO}W_KQ!KNtVDO*f%I}T`l{|L&ZGxy1d%5^i)@(DN(zvPVOue&UJUNIuySw0eOS!^f*#~UDahrjUW8MF +pchTh&Sm>|M_>K5GKiUqQq1(&lBQH?Ql9Z*u!vQ{JCHNW*qDCqFCH$B6OIXD_&98@!zf1#RYbTUL^d& +z)};OhqL;ks;jH*m7Q68h}oLO`&iB5{mz=|4AV>NcK)>8s)^^tFIvS&tFlR95Mh=y>Q#GPb!GBhq4+K +XvaA(WD_-kRZJ$C^AtE6ITJp(x8dctCs}6z&e_^HB@qbU`kT4&Q^twN81Dt?5S+Vd~bANw=(b}&VzZL*X4Ddr|#p +a4@i|;DzQ;f&5T;rzvnm!Q-2=0nw_id1|)bZX#o%`RNb{-nTQdyQ~~R*nGHk_&4kzrf@a>Lk|me>S2E +OvstnMWonR~-@!)vWWG5g)Fg!T8Id|3;RN|BBYnt$BjhE4ufe4J&-M!O(L_{N!t3>TqZoGM9i)e)Q@K +_NLpaoS|)rtbti!w!Yv7MW`n^f-;gN+KVd8Uy~JyYM)`!mAwvDOTnTeWDuk3rVG*$vt4_fE*XKX$_9a +tbPc8-b}e%TA!WAj~^|9RbT*XD3uHr-1Ue5twE}?SyJdD!AtR=#s%!+he`(z9r^+E#xkK`R{z^1WUdT8TIkt;1A)|2W +diHR*TC=Mc1eL>cVPsjue3NpW&XXzbtyyy_@8`Ozwbg`cBd}xVAJ)o^)!^j&&%xm3oMQ)2Q{*)SJve< +a=`%y%y1tNgtrm{aQR%d!Kl?LOoGB00hf +L1$HH11Db{O{%Zow1*nu2~YD-@hvL4&*%S_)myn)8 +@db?id^3o^s?|V>l%*$MCKtuloF2~X*?-wP`sk6j*aRy32SXM5NDj~R6xGHM6sA1J0Yp~1f=auGJ0ER +$mK=q5VRzDQMQ_?SL7SnF(VMkS0J!3i`gThfHrD`Y-aG_nEi0Q-@3*g_+j%j8=^witl+`vV;UXpb3=X +#Rd6F%7{DVJNq_V&F#Cv1Ijzb|_aRS`W2ilg_bR&MJoeY(4=E#OweIhg|SS +1)2>0fDSsyelfa@lAlOS^LLS0&CUHCl0vi0_z@{U5gjuyj8`?<~Kl_3NLEl8oOw3$lzqYdxNTabjeR! +blWL_qf|adMG?TEzQwQV%d)L{x>{084Yx|e=jZ5tBO`%~8gO56E9xbG8{d9%CjC9A=VY_(E@?7S+xma +fooL3~YO|K2wBVrjzd#tTa0WC40_^Kn|-TJ&9~ +8)pL%AHwNWN5jM6F4BsN2msxW-yR;S(q#l$b}OYAK1OK-dJ4ImeF@DSp9=iAi^8TS8dsIO*S_bPr0z^ +$J@C+lYMHdKYu95K7AIo;r3 +i5&2cDa^q(AK$K6If@Y1*R+E#PXdrqiP(0-GB2=F`p>|n+{?>;Ilz~S7O?e9+oxTKNodUtkqK0MGv-T +WXHD$b)ybYY(_NX&{_hb)z&`e#1L^4ZQ#v@`Q;HYGGokmE>p6x!heIs!0U; +nv4QXup#H$`ic9~)#8*-9cnz5_19vPLB4c;;qr7@!Do~+pNc~R07F2(g!45|9+TBz2jJknt6AlVNZAxr^ynouji#g>zrAe>95pM5~s3ARv +EWZz71UJx5}!u2UjI&2Jivdr(b*&L(07Q1z-^E`GI}72(h^35N#@=^et@$B5@g$~`d6vW_)6RO?aX0T +$g!gX_Opcq2Id>^A~&^|Vj|`=eAe2Q_PWyhe9|abK9v=QHmY5~??E1QWb07foCA4YR*Yn1(1uhc`NnC +T>x(^tYiQW*l~5=vM5|n}Q)i`Nl3vY|dPZ)uw)@cDb4cYC}`)y=M<$TFC%O2RcNi1kmC#;vTb?>D>Zm +8odOQyLaDSo1fTiaSB{YQRDj+ZeR1F3*eSSBTtKA?UMiGR4G}v-zB5>+MCJtjB~fF1=#R{race +M{1e#8xV7tq54O@~+&GQ`Dgggh^UDZ~e6UbFExoDaTxMpb-!cAakN~%tSdQ;dM3{^>d|Lev7cm^D4u> +jfh6+E8=T}NL4)jNNt0MuW4DGZ_#z(UvFV7r^Z*?~566|+Xqe!vkhcu9@@swd!(K$q$1zmRXz^OKkPt +3SOueewc*Xb2tP_GnqO%K;T+^YBWsTiNUY+;VcKtNHQKiznD& +ax_!;td^Q&umaTT^cdFIsW(@&;;KuhA4i;IPSI!id9zTnmKq1<`5GSBTX!mz;8V7y#pbn16ze-I*+IQ +=-hsc~q4eE@cSGtibofr$#Vubc{Ak*n4499psHYgZW%*v;zTY>DGSS?p3JuevZy(vN|Ijw?6d&Ftm+F +-!lXN+R?2Tfp7G>AjuK&SvRoA4F3p%WWcTzjtB@QpJ#t>)0KmqqSQ0Ijb*iiRqui%-vCiMVR6#9qLOU +2Uh*|8{UYpO-Y4Ftd;zG@w>nkCra3ezssZ2*=*l|9uPN>&&c6W-U>+pF`k9g-6a%%~aH&|D=)T0w$Zi +pcm}RfO7Fy!{NnwPK%8!HrMiUZWGskst6K_{UgIJJtQgkzJYSUx~i`X%B&xTNbFV4s)Gwg=jKcBW)WfX<{A!o^gIdl?@O)Jf83C+=A2F>C0qRb!=Nt;)W +N*KGy&4UO9X^~kpHmu*!V0r|u>@~wJM7RdO(##SUvNs@{sXCtYxPFwTsfM7VT-FE+&-EF4bMRBZV8xV +HgK?|<;_x??2%W%8WfF!B8;c*d_Fi1hzY}PmU#Y|0b-+_?EHb>p$L`ZjU$|ao?Yhu4XX)E@{c@B>1;q +)CFUJLac9T)*E<#kd4l`-mqA_qRj`FbuG2PJDSBfCT(6)=+aO&g`_ +23MTX7@RW7-ysC%1%%F^!BhVSBGc%tfz`+L;4^*>oBZM2%0^e={1}(JAvfyC>~CD5Su$dg2v@$`kbBM +l@K7x1Pe^Yki+_w4fYw(?5gOig)I!i-$?%<<`9Om+GmPY;R}rpP)G3+yrAmM8J_{&uI4rcP@p}U10o@ +tM3X-yKDA!M`;0GNVJM{}6>(Z1t`bF9Qpl|pdG5}B28V-&K?ekNZfVw#eBY6vsIM!W81;R@@JQcBtN6tE2l-hfQZ{HD40rzXV`rLr$Lp()ND?Bw6K1^NuC +r=dvr*5v@en-lwv`!D9APYGJg#8H}2mJuTSS%0E&~nWB#tCe|VVri%q~?aSZt!anrw>_^p>gTp1>(9(SQN +lPJN8bW=AwTx=v`!nY^;SSRDFJoyoNJzM{PdAbW{c0yJ37l+#qnAOd|br@O|Q)E2s?f!t|wr&iT=fc5 +MSb1qMbX>9~LuC+Hz`O-_fZuGUS_N9tJ`XzB&T(5)pLbG}d~0EK3;#1e!HI5fANWX7wWIeag+;Zl(G!or2B{TCwxc>e78Nu>K!!|yyrz8mSf!FuRBmY#m*edWC#;O)d^=Nqqvr{ +>K(9?dUZq3I?3ao>>sDzwq^0)or!~83?2F^{K1cfo5f{%fj&Kpy+Bam@ydk +An-gAzI%<(d>N|&SZd>PSt2yZjSZkzY4k;WNa5)IKkIH759pahVsFxf;Uzs$3#?G&Ej^R`htH(TL$ISek1>Q7!250EbiK?Lv&ARodlE%hizzLrIg0~%;4N>J-oXyA{oU`BBcu&X{$o5AOh|kdrYKHsbH0>` +@*smFxOO4027;aRp3f3Q-2tkPKJXnep-4o7)5P?Df`_77JQ&55!`(k<&X3qqkS^ +-CKO}#0@1tgT5{Nvl?3Gm;Kf$6+I5bm1WXqEASU++IzM!_N-oWst4mC74>f +4|e(%7iArBif_KPF6s#T%3xPhLV)b+PUq|9+VODaK?rb)fl6J~^H;w+ulh+u8rusI;WOONJ +-diq%gG=#zr5L8g2x$l5Y`)B&f87V_7&{JbaKxVI6XN+hMUK35TseuL^g^q5}+UxjvKk555dv(q()5? +8?{q$ZDvX_==hm1WC#y7hm`(PmOPLh5gxt6{UBR|Soj!sdw9 +4jmGzTLyjF8M$+uYRn}oRjxLc`k%n$wXjla{H1&rYcrWEGI?`S$XsZ|Gndq)tQPDLZSMS3$Hj&Y9xOOa?^Y&Pm=3O~fgg5W0p=;LGkq1ljWLDA_OXY3`X{EG2Tx9y_pOuEA>Si62X +T|2q1V*!7#wnwufH0hH9dJvXa4_rh*-mG_brs;z)wK1v=pi +>-yTWhBO7Q6O&FkQ6Hg3`9He>t;ECf+s_C%|V-=T`@z7fiw#d(yY(TQhU>-o*h_xabn!lYG5xwYJeh3 +YFhDraiwR5`3;3Tot^AOBw*rQ7}(vlxR>h9h_q+shRSWKtbMAUeH^vy;a3E}>o@nswxYnO +2b+-L1i6PKy~4xV`+uPInVfwT4cPoMe-Gin)G>(QCg5_4>1pB+P!SLREoreIY&hm4_xb~CLz?d! +%qQf}lawa5sy)3(h5_&Ms!vFyzr$kXrE`pi*>5vX(hsGkRT6Dc7_M*rxz|fir%{r}6>G>_0g)o6Cyj! +a{U#opy8pVp%%Jcm=Ux|wX +&AO2B5}P1AwKWPN18t{%*wYfq4+Rq6#L!L8Uey`}P8uaw8bax?Wtda%VsTH~zvfV*@qBlbAE?1JOPG;D$WkDQQZqW_$9j;c~qs3#IaPB8dR{IHhz@$KP8xN_-08^!Ufk#1Txrkq*i4OV07r2;vI|)43&lSX*CXGV&U>5X-Uf8=s&l!=aHWkpn+%jV3Gk+`pewJ=^;xCpb+^S7z24tLexTM5j+iRC3jYe4d=VVzRE<{h@8n)k$| +l!K9PmXw)A}%WL2S%-g5;5U#m%CHbhWl;?P=)=fH%_B%aNr*Cz>?de#Wi6d&J2Nk&?iT3UG{cE=UU&EH*2qZY+11d=nlmc$j+D1Lkxg0}t|Lz$DC+krD{iE<+Do1Fa;8F +jS#7KsS}7ep51Glg$7%q?LC!tA^?+Qf_Tl8lJ&6yW616NAJ5Q?|JS5EaBUng6>#*$ad2JSZp37n}=&m +Bc-vB@3Xh+BiZVr>&y<+BP$xuxizMSbC+dc;zb&_(V34X?cRIptwT5wrca!92ZtDOy@?-9OBbE`Am!M +ugmbmXQ#L&NQN*Wfj`e!%W(w{hi{uUzyQ3scCBLhNS8ntUNe8B(YLmlbKw=flOoL5MWnN?d(!xm>!## +=Sow&f)??rK1elV%0D5=*;rzDa&++V%4Fmv1Ivqf|?$F@ZyVx+`&{U +aaJiw>~%k4h!PwoZNFGhP3*ID$~#jH~hWG#e~it^BXwmH`|ezA)b&SmWTntB7TM`D#nmhU*{L~O@B#u +0bpiKA-51QC)mZw9H|o}W`Ix;)dICGLM;G;R20kXI@Zm?$$1U2C;OXCwV1UWO3rRYU&8`ShxoGP@a +kbVDxen)@L99wnCm?6(IQN8dt?z&`)-Kz9@uCn67wh%0XLVK;CePh1>M*o$qXeB*6XAV^r2n#Xik8gl +n|M6r{i7?U>=e;^3e}dgWdT^Hd*xLd$HCfo~M|DY@QA*b@!NyMTHypde8j0-~-G*oPU2E))831=)blO +MK{^owP8VT`;9&dh+B1>m6fOV|Y@DNY*ChJpGvNdbYUp>M{GDXebZ7y%?>#NJwL#}y +5)fk@XuQ*z$#Mtvq$ob%!ZZL!TEX>2zxAUn+F$rK$nap^i?9RTrmAZ=Zxpuyp3lps?H5y1L?Pj;<^d4r_alX(^YQda+D!38D?=d&F(Bt$Sd-Me`d_3z +ww09xhOPL7_(}M2kN(pPbxxA&1KzYvx!)!o>3Gz}!G=7_8wnp^#;l@brpzz!86oW%k9WBxqu}*GWLJA +Q@x$^dsO0-o_IFQ59~#^0uli=W0;+aLe4SELK0`ztNXDXNi%&{DNvFGyK<&J>{=Z7CwqO9cmHNAG9D- +B8vl&eRvX*{ooP|c^$}tSuG{i9^dCsC&D%Titf%Ep+g4M?TL%VK)JH=0Sa*M(x9 +4I{eA?yvw{)8*F=sQHb`K)h9aNQjly3jqAkh9ydMMiLB6a%S4l^bZjGG&sEkPM6Tdnmt$`G~5aQTw_uF~@GdI&nCA+ +I~2u9L_Mrj;3LGN`N38nU4Q*n=D;}iId_fjd@!D%4od56HR7n9a{=wl#(ahO<_mohO{Avq2XK0{ijq-aO~4@=M%~ +^`I1x1|!mbT*kA3^J1a%l~_r{6W-Ue26@X^8f(xI7+pmC=aQrDNI&dei&BL_+mE^dMevsufnQC}{q;+ +e1PPt7mMiHo7LtddE1bDfvkAe-?fHQ9wM@PN4#a4oL4UcimrsD67q4^oGEmelB+Q`8!1*)Pw{Msvn>& +x|dx4D0XYC17mVAv>!Dk}?w?+ax$ZWtp^QRL5oCEE=Ji{*z+PiWc%~udBBuMewal+6jOym>h_#;%86@ +f*;>-9Yuu7+H91Yc6O!MwxE1KG@fF7@41T{kD1*KX@w<@-hNAk_~Yk +>GihGs=x92DQ<1yO{K$2mv!UH2*+E^}CfQ29Ngnt%na2%BIeB +sqj0iMhFQa3N9{iz`iR-{C#$q#N04usajZp{C!4(}Ew~F+i$;8hbHnD-bst!*e2`+}ork9D#VmA*`k` +c|(GaS!N1Rsopq{L4q08V!m?s|OyF2GeE;M#K6AS_6*OC&%O%_lQUZywD!Fk2?D!U@y{A73u@XTK$Cd9s0_;8*I+U|=Z?bTVQn{Rwl!qx#^rsHR1mH`%%JhoryddX`M$X{-G*r%_J6b8zB`0S7+D0m|n +(g1l}ea>+xv_?+^ttI%3z{`J>G2Uc-ii$A(nq)oQ)XZ8BCdgt33OqNO|cw^1PX>lID}X*85iw9X)_Du#*$7QovZDdSlHFJMVkfU+;hl58PmL)U$4}-Y&~z^5=RYWj#zKzl@>kaOx~? +J1D8gLH8M_9x3oAAf??8<}C3u`tI%Vu1VA0%p81jvv0Bpog)Uo1so<}Mp_dPPzjj_H%H{4dxX@yXBC7 +CS6kd-QrrM`)vc>V89s-PZmZj@t3EHlA-ruiK0O}nZJ6#oKEERE>|l+GP%Ag+mzi(FmDEPa)c^4U)A( +bTs*iL!=2wDnM;JDfPu_zv9_B+)-?qs0GR6Vi!))?w?(73l%}N*#llw#V;!7+7A@~L-Rd334l1!4j!% +NAiXjr=xsKWHk@CvUiZ5b?tcFMQxLA=TMQ=(5KWv6C3?#k&C9435N4?^AcITuGDaQPO}VFK?v!gPp8= +!Wf>i2MAXw_RVYq@&><>B$RZlS3{AJV91#xZ*Q4PWaJK6%HrABO1DnNWY_)h$O#nNypgEi<;_1GDoHQ +X-t>S8HzcT335+pL11GJp&(8FEhvSh$u)x(aFz8u1!WAWEXg2LXgNlh7}Qm#C{nWZg3W~~%Q1rxEd7o +gQ09ohxFill#*)w+f|11}hn}#a68r(zZ>IYS{bLoCL$Qeu99iiXp| +ebs5=Dg2$z(L6G$INKzrDx4_{jvQSE9&^Tj!vcD&nf`K%r4;BS1B64oYcGg6j#E6t+!-NK<3RklpbqF +k2Gs)NRgu+z=%;4MJnICv=6um?Sf1%bl^Cz(R+Rc_3e%)3TXqbb{zz1ExiNH6j<8vH_sTdUxDP7FqPx +tbV%d*Zt^{X7`qF`ILe`ushN8d2;d>}Kx>~JG(NYKsHQoJOATg)>#tFW1D1Knc^ ++wVMW05;LM6Va&=-KKK3kc@lVF~_23sQ<8Y=;zp956iRZLQ7Py`#?1>jOcff0qTiA^7bM1o6Cs2rET< +2e;1MC{WX2Ni*14DX;2;5Fr}q2FM2&i}ZOfI7X|=yAsx{s8K^!oeoewY}sP6xOP(FIjB&%tNBqt!1dcfk0%n!~sY3#uIg}&Ou@=qPgqICc7uWN39ufD|=d8Xx($_OggDw$qfl_NnfIAh*2 +wgl1;hM{MkR0VT-uB~TB8@ZM&FR!rikYFw +?!=kaSSFm|)HjlQy@mMYj?&|qeID8N6MdpE&NW*94NMwXqB@?N`lINbBdVz1vp_Ha;+3iYL-B*xK|`7 +U+*EZM;iIXiYwQF>G&L{nov^+V(?_Srt?X^q!Nc9#T*3~6W-zLA-DyD)c625sSz|b%37%NXEQ&?)6V9 +at9KxI(ZRh3t4a6T*?}v?U_HFA2#bNe0&M=0S!H>lgwHc6e7)q43x0 +3QW{gfnwf-GpxejqEQloc$CY^%mhZ-}W8Ai0#HJkoZs7dHn2l+=fm +}#g^M&?vW6KC2O8Oy?B>pOU>W|6dxJQ(B3g#}sNG5SfeH3a`W_RKKS$*m_AsxROJ&G7m>Ff#PVM0E +W;2ZK&o*=wKwcyCI#WfpD>OG}akt73PjB?tV#C7D>^?`S6l&*TpKMj8t&V1}D!df(2L*`H^l6m>-;lo +UO*Z6Yw5)I=nBWmbm*Pai=T8HQSDjb +wF}+5N4Zb;X%A3vbkvWaKx4RT8^+YI*u!y~aMNo7JRI=>iV&lWNv7Dlz{CQS$V&l=RhKq8TL)+a*$;X5)p)M336&Z9u3IeG!ln(;1$+y!KoPucr?y};QS!XM%eS%8dcdG(o+B_{ +sYbmpna%tA!(zwK+*l9>llAc2xx)1$%5bzLA5u0mBe1az>zuq4tXG{j^-Du+yK=O+`xhcZdnfZXjW15 +K8i;R|hVQ6i>4fcXIcxQWT^P&WGsCYs?-&&KML@(nzx?yUv*~@jdGKX +dN^hFP!a0@f#6)gk-_Nmz0bSFs +&xdZpboYuAKBQpM(X+W0tDPbX=6c5XJA8-j&8Q|l?$E&cuicI~`&>zUdi&9L@QFF|3>JpZ?vc!b8;tP +sLVn_Jf-65y_6aJfBJrMsTgqg@DheJh9?2LAhV_wZE+qm@$>WIpj3T$4@OdaQ5}RJfSHZ!}3J>P=zVS +;zHM`#mBtHO=F@VQukqzEQ)U8p(AuqN16I`lf?JkfVb5qe_P%}9dvPCFos%Qbc?DQfI)YUi +>h60*F`%}s938bC9jKm;C*OuYV(GnjT_8FL|4=`Z9h1GA)SQPL3ha?U!5G!6V{Mp=;!k?c~`8fCA}I` +R=|o1`2eP$g>;?3Rww=;P_iy8Z<0dBT{Ig-P<(VkK$3L@E{#2SDr0gaj&T=Sco8ya#es(m1A#0trUr7 +=RNLjWzZ#VPhGY~+6K|xi!(GCU#=Tf%MD;GgcgWSRjBXzSS?mnSC6PAP>uynON=!x%*I`u5Ue4_V?;? +Dp0Sfm9w9gc3OUw+q7|*%t?38GLGT`x#i(?e^p4DjCe3M{0=beDHwQQ<)mZw@;@MF5V<5)Hw1LudTSF +j-GoE0+S7(gESkV#M2MnXMR2X=w3xHE9M-qn`$%9-zjq5v~#?*qWwoVy +UpsbU~vUWA(}cHz!CDQENXe~!_sCS;OlS +NkJIE|!jLc1J&-3NyTKs-fik}W%80u^Z}MkWdxMv6GF>!^)Oj=-rl(68kHvCV7Qd(*Ztx{Oh+J*mDt= +3x;rS5ozC8BBe;5zOGj*DY^2uFz)Yt3baEt`V +LGP0-_(FG>%D{HP9oG>Mgzex54f(;^YXm{0Rqka2!e@LytoG3yX8Q}xDbSlgb)uJVH^Z0i<1O3cEY@$ +B{#Dme;SSW7Y@k*Dil*r)<7pLl%!q^Hyetwg0-DhW*{6=1_m}n^P*9x5{~N>iCCkc>HH!06MKd@PD7nBDm8tq%o_}O%CVv}(CN40gQpGtT}VSGL!B$nmxf(9`X(ra +))#NUK5F8W#o3N^k5%xvrHG@UvT30GAwR}ySOp|FfB_4S2lqu@5)pbuZ=&A{^Jj4C+@ +(;03qm&Wh%0z7{{OmBD=?@70(}JJyb^AQ!c5_X+CUuU8=6l=a3P?=tG2kZ-8aJ?4}Sf%r*sfuhJr19v|MUy7DMAmt79Cv9N@ooVUw?P +)O@0aaOImD6R#BtV&6d!*Yo4fhenBEg^qiz40hU$`Ws2n6pM#$5o)*royiSBtD*@;A_$|r#o#kG3V+N +2Y;+>am4DfS`UP6N!ZIDXo%fg6kU}hs--g-&fmgC+i_SV_Sp?jZ# +k)#AhTbkaif7_B|S4GCY^5&7Aj;6RWLOw8fB`@8G2&j +aA)k!16@a6x5J1`XUx1`FLC{disf~?;x@Qb(kB2r-v)1*A)!?YrNKoQw2HrVPUoX +q`M%-I7*nd(-y70QhdYOY5!f&oxX=EMpMEfH7vEweN(;kjpiDDG?vVz2saN2pw=j+P~eTuMOz#Y)e3> +HIolIC@l2j`<0-o4DbYUR{}!7x185B=G61IRion%v@yegk+@H{v%E#1ZlH3pfzhNZ#4}wOcpWkc_PNM +`7uhpgdSCoxY~wy&3E^)|-1BriV_Sxt!a5LsB7O@DL;X|B-e1-^c`9&E5{aoC3P!;&cKIdyKz+-dqrC +jajSe&?V>}rrCc-rrE!8jE>I}kMM6~BONyT`R$|sYHm}v?S>^45sB+t^#CradXq*=6~8cY9oC|g_3R8 +&yq}!~$KiFMLxb)V&m5u@3c@G!9K>JE-YC(AcO|NUh|wHN1gyXR5}V(>Y+r@4<{!qd13Gf}NCU>PKwQ +6a+yMAk9tBPGfHPs7HVYESbq(-{5L-~1e-of8gmv-SYNC +T?fC{TEarV4;s_37(-58n8bDp-JEHtBhOg+}8ag4ghQTPiLG%{QX2VVYHu85MzPCYW<|R9`}1~lgWu-gRJaRZsN<9s)wNtrD{EQheGsj|FH_mQnah=kNf&c5U?RS2*5DI2d4>;1?% +JpMPi~#(I37OCbi@y98iDZBv*X7nKfT(2b>!!ZrHTfW)eEf5L_wHTHF$uIr=anp$%jAbYojyG|es=QY_|eJZXUE@X+kSQLYj}I +pY{A0lUDY-<`eP^%q1~SR;2pOhiQ)d3G08g&Gc6*yRN{9m#}!ploz~8)=+3ERH~q>XncBu0PgTD94T3 +O&!4Bylyf}+WN@*0+b<-(UPl_()p;bdUnYndY_h~@K+j7ygOaB_yP-c3qsc=ZA;S(vTFX!o(MKi^a+O +*=CW2m4X2R*DC8ZJ$;7`T^po6atqd#EiTo)OgzIszM-!r5?OClP0eQ6efg4aI;P;8-!d%@|J$pLlF`{ +gETi=H0t~`(rOp!4l2BNt!Kop-g{yiq9P&vqyjPokpD1%$ +103~lVI^|(-KOX|xHBEJzvvZ#yAldx=*zQ{i0P+KSsoKx0TvZB4xHQTqUt+DRvbCsd0(R4Ks(2H>RcM +=DBpY$$|PR~(UqR{aP|AP(|PAQysA+Z6;1yE&(k}d!v1RAs{)6sZM`@=!*bHutan&pj&(xGHq5c_P_a~ezwraNB`bNoa1vnv$>AQIjq}~^!-G +-s|c;r+eu9X}zgwUEkU5@h$c9d9$K~8tMcCgBIs1bhsX|OGJhVY+)@d>!(aPFO*wi}GeDPeFt*$S`{G +`Yo6VrZ&x;!@}C>-uF?Ph*Nv(_r+%7j_6OAA+aMoB%7XVx&3B`Rd6LSeP&joN;MzoCn>~I-jq>L}l9zAzDL%`;m`lSAW7h}OqWjc +sr?U=L6rlp3Ht9%clCB=Q^Xpl2v8Qr6Xh_-i;7(Fq*FY6L%FF7j1_Ru7X?+iOZNQgZ{hY7d}+-i?zsM +5FFg(B9|@wk%6-bOs=@Hv6kOjxl3X_|%{gzAZB?4)7G(siy(4dAo8Dk;e+kdR#afpY4_<=loJ!E;j`s +#<0XR&yX|$sT0sRp2)2PyK+009z%b;l`sGG|#8AWOCZ@9EJ-EH#2fcMJ8EZP1^J1Ts4W@kL>2{HP0JS +ud&)e^KVg>GIh9LWCHE=gGovh7eNE|JckiRy1kQajqT!ndM~2@40cgO2H2->@G<7u1fH4a9m4=ee@$1i>FJB-pZ^eN>vU&Ey +vXF@jm}seJ?7TnIP%xrLSijKyO{6jxlNtQ@*Yg<4D6X9!WUYQ0hO*e7MtRg~Rwu_ZOZ223zn9+^|)yx(Vj^X1i +fxm;5FI`3LvT#S~VF6Z%~|6d +gGTR+~L)oZ;IryEmzs(gRS~;^6&!``1sA2#lt(JN@RioB!xp^Pd>m11O#~Z@D95EZY38U1?#A9<%@v` +OnmZL!+ds>`w$Y@e_%}HgQaqIPGA^dan!SIAtslYVXQLd!IFPU9{lPUxL7M9oK4yfvOgaupNyHiFEc& +d9q53E#J59PGrve?bC}6t5+A8xsJ;)xC;s|_;vx2*R?S)5s@AK^23+y^(F=$mhNm#-X1bcpz1d4XeE4 +8tef;<_Vg%+MLttCYA^Y7CM{T>xC7x2&dtRJ6bNUnRVsgLZ*RxNC>izlxx-*fUq&_D3Ske8jDGZVJH^PhDRw5c!AB>1ZcsEA!JSYA*8G95ufhkwvnEgWyR2}JUG`NN~+b@c`)NU2zYFRM4gaNzg$>w~$7>flmG&l12TtFF~I1}bY +e3pIwxSM&Q`ewYcl_Q1<-dk!wqy+Qlw^!eP_o>S%etu-q1phjeY1K4Jdij4)O9KQH0000807gYaREt +c~N!|ef00;#D0384T0B~t=FJE?LZe(wAFLG&PXfI=LZgX^UVQFqIaCxniO>dkq5QgvkiV-J}sMTY%(p +HMLQQAgHt7tD#R3R@6iz9y^+qBt#UxN)88nu`Bgz-D?JTr`Gv=U%19g}BZqEp(!_s%jUDKFso^y8*He +7QN?eSNr1l4j77m%h7L)RX#~-`=xVCWAsCHND13aqqVRrA-pntX+2rxaH$2C5_^9+`(^)>A`cE0v=J; +sOgF0@zUY6e?-%Bmm#S*HD(O5nlhQigt^a`rs;eRwng~OYTJTpfP$Xg!78^uvtKAd_TuDey>rne>V85`=lV1{>BAIV +g#2d%MzvSgCkvdj$frigHMkgjpl!l&EK1M%$8e!|`v=kVbZJSd4v-Gd*As@q52YmqNv@7-fE&8oHxL* +NKkQ3Zqp#~J1!o!VrUcVR}-F?OU(uq7P0=e1ftCsP)3{0-T@I?BqrWVUFQ +zqO*E{W$7i2KA|k>_tfj29$yAi!iBuwtD*|Esg%TE1Urql^8o#!6-1XzqX7v{)?d5KBH67G)=Av{^O% +F4Xj&*fc1Q?x^jxjQx^7P)h>@6aWAK2mnS!LsaV)F5Sij004Ov0015U003}la4%nWWo~3|axZdeV`wj +9Z*Fv9X>Mh5b1ras-B?YJ+cprr`&Y063P_DsiE}jKqCpz8Y4cG8+X97Q2wa=8nNXr2QrX=U{qLO_QW9 +m!PMY>mRF@Sg&YL%HhU9pQMwd)l(O9jOVX~}sW7$Vp=So)xVeF#7752WC)uHE&+ki~d%MeB%Kw$qi-N +{q?j^UQrnPbVBDGtB?g8Y_$YSHd3kewcm(3=5@iPv_r?YA>3%!nDes&Y}buitB2xTt{mglmPHqQr*jZj7Eft<@e_4nn#wsQaaOnDb(K8*hIETJieg*y?BC>48qwNbOU5rx`?4PoJ&-4ddkb&%-@f2v9#$c8|-p< +8oSh?ITcs>Q8C$W9kZTQplA9vljT?B-~Mj^Tn +f?9=U=MM+xocfd$^`O#wVd5FGg(9cG7UiAxz_U}d;Mr8i~YA-xwl7Gto@vagY~1HHUgfJ5`_)SweN0W +?YPmU#f4UTzj#J1NUz6dyxR9rjCx$C2+j`jgQy%uztQn|+8j>q->!L&eSFEP>(a5TEU$JV8yOHJi}9> +lvDa;R1Er`7wmb5M?<{t+HO!#kV>_=5i{V7>b^=#`@x3TG)Ox?b*EL?u7|yB_jzv4TctwM6MXOZAU`5 +o(!_h`rheGYMGZ?$?B|7WBUlDlTHM%B$lnrtSKM-VXq&f9TO9H9G9eC~sNcUa#b;#CTp^VdnoKVxD>r +%rd9X=$yZQ5$bt%xaEX&>6Udr4W%_v`DX4O%>*PH1?!{|S)>#FllOd?C#eum070d58REP+uI~QB+I(SLw6o^J%IWM(`w&Idme>=CQP(q#7Ca2*=mgn>CcttzHN%H)v&olR +-RupufDnG8OP8t@I`o_-a&B{76ej%bezlzUh!5$}LG|KX#(Q)gj#&42?k`rTn^=eL=-)eTlj8U+U%^|7v{YaN_-!@z4ch@+H1XTcVF3X7l%n)t4#>4Dfx8HW0m2xl30l(Y9(XjPG1J=1-|qRVXYQU%79J{@M +q9QNi36y7trX{&K`OTg`%YmK99#-_*^a{MC=dz_AP7mx&y!0!M|5tAD+R3#{Ja>_zo_E(MP!mMqIC5T +6VAtG@khPb3WNxQDF?yTQpB~#S}t(lyWM`r9e618GaKR27fBc^2f9hj +VUh^gEJ7GVg}PsAwOVO`z3lln?!eI=c|gXEmmZqUrVUbw$43&Vl`L4gdFgdJ4n)CxI1U`BzgwOEQnz= +gTCVT6-B%v-y}_N|Ei#A-^6TD>R|35lK3rG9c0AYLCVcv51*O+@FFPJ{I|J5l`JUI^=6Z2){?l)>3eK +x`{}k4!g0+9$yJxLCzu((Y^2O7itAt&*ue|*nRWb}QySvTkVG)R6?!d&beb%pE-2JRqz5DKA=F9!e7& +!N?e|4C@wV(geZM{AYaJ3)cruW8UgC53l=kDh4IljO6@~SE{e7Enhc9(V9UGK0SuaD}H^RH}JZ`ju;` +}fZ){GY;@@^2IcQf5G=DAntA7ZaXp4P_pvSwI;qv2aKTU}R{4vKy>8iD4lyRW<2wsbC(gVV?ZWVYC!7 +5shX|qq<@$4L<#z5Vr&i6T0ERZ6ZUeaaffCFn6k*F|z;jnt$p1)%=(P-MyLdiJx3(ry5Dl~AHY{m`4 +dB;d7#)lSfI$N(wvi;_~2usGg8;<%@0`Xt&*Mvzy~6Hw4UU~mW^B|wB2UeC|EE^j@Zbb$l!SsewKAvt +E`l*t!$UU8peHp=y*bbvt*q6bI7B}8bwljsGi!fzHt*qhEKN$j7c~n;MWV_ +BT{cR=>#f)Gh#V|MVd9IC_$aCSuyEK6qu +l^GLJq^$fGe>JL?6^t;VK-;5nRU8C@dEx|dyv7!0MgYV7Vcwl!V)e`iAsKurrk)LbRO6#jyXDkjD_GLNLW}C!qvoL$WY^ELuY_9;d-dq$2rrEN1f@KzksZ;LEK?y2XyLxSZ +j`NWJTj1OtSfnkzF2UO`J5#3m4;h1ZU48kcI6-GJ=Q4+VC4}~f2kn%yKn6ZV?oyXMnj%x2|GSYt>O8t +mHRYpbqQpi$_>^a%aglzAOq?Dx{5UCUmv3c-zKmCc_~%R6+_i!+}9eadxT@X##zN@Cm2L +Ej@%*Zrsc#zJjN$jMW|bYPJx;bRIYm<0TlSn6Xk1$ySvE>N6Z +Al6T@h5z)Ag1@0eEO9KQH0000807gYaR8(*%P`d^I0KOdn03rYY0B~t=FJE?LZe(wAFLG&PXfI@CW?^ ++~bYF9Hd2D5KE^v9JSxax@HW0r1R}k*S2DC!+*z7id4~y{Kr|9gj|M2 +R9LJ82F{%=x|{IWG?Bz2Fs6$C|PN(W>S`p^r3Ii^X0GQmKw5=>&KB!(y@c`04Y9-@e>uclW=4`E++{2 +!BW=5{vi~ZO}gp1V2m08Cl-i;gmIHxmqVyB8Via6Rpgc{>gdC#b&u9d)$<2nK;3=m=x`3wfT%oNd{3K)Ed4qlE&1$iVw1{!kCa)Qh8Fc^wHc;L<^un}hwy{UWAkWRK0v^XeFY&1A +I?AS@o_J?ekle1!4p7Wja)2iE!1|%rJT01&)Yt|uxRP_N%`Zt*aIm0_p?+S0@+T{JpjaLHsr4P9D5bb +`V`x_VtoZ=v@kNkOX-mjw#MmyL~v>OBTP$w<~A#4n=gB|2Z%91~gG3{svs&GM=!edl7?0kB}!E9!%13 +Vq5B4dOdbiQV?Cb>$nQet9N35qy($V+#|vFFeeG!FYtQI5+JZ%Yz}aDpPH?r2afVln7AHmfqvEFG5!! +Nm*bBVQXxN=F)t52UPTUE-4jI${Y~U8any;kh!loe$oTZBv{uokyT-&%+WB*@cBaVZkU1X7CK +=5&V!Fz$0bYXXb(`3Q2N;oS<0o165W{{HWGqMXR7xn8*!NR>LbIC6uFSeKl5xNiPXfi!ff}?l)Kp1%| +1(C&L9=^)E2BA;_=-b`yA=#h~}__*;SVNcr+GIj<^w0z>P^>zV9mE1Dn09r5N>MAFdf_pfE%yl$}y7n +xL8s1w%EIEKU6Y&Cah;*?W09ojSnpdiq?Ml&D~Hq&Vtls@+8HoCC!u@?qPOEyQzdGnZ)V5%LMnTa*kH +at7pv>teCQo)w~vF+S_$B|Oqo71olJMXq*)r>9?k&P;S6@uFY9&RSEv_tDRC`BD~;|#4qg+H>#AK$wnqU)kP6e +-ZPk09=+}=G*0pZ_#mm8EO&L4&OacAAYR<&!7lz=O#XLKB%}f7eCLXlOp>Gnn5V$@}LxzbSO7+|3Tpe +`4Q%|lA=)JwVXKwqlIPOUO*EvrGbgO)jrd_dh8oKk?pCC|Wv}9i!9_H~lb{waqGJgCANLYO}ZCfo(w~ +&)zk@9=!s2vSE-jtoeK1`89Lh0r!UB?cxiQlA_)_>s?8s*T((nc-M2 +_z%IxZ7sz;2dGt{QD(MpgUvZ;-bC%RLI&AV?Cq)*ii<>{Rga47xw%WAzw;8Cpz5jg)He{HQ{4Z5+mTr +GdrSKb6Ib#&-Mtwrs*KvD;c35>-4k0?X_SDL1lz;130$*DI+6#QwWov;e@Y|QVq{v@n)-A>!?I;~+ZY +Grg;OSL=d=dp+mPmBvP4Ovm9^D;AfrA?#t;y+MJ0|XQR000O8MnywZhG=qxZ~y=Rw*UYD8~^|SaA|Na +Uv_0~WN&gWa%p2|FJx(9XKrtEWiD`eb&RnNgD?<7_k4v#7g+KENSXQ}rzkz(q~&ra4lr0w1-QEnT&HTXgXa5g6D7rT;N4Us-lKO +s}uKb3^yPv`bP)h>@6aWAK2mnS!LsZ}m2SxY;006}a000>P003}la4%nWWo~3|axZdeV`wjBZEtF6E^ +v8;R&8(FHW2>qUvcF=Ou{@N-M$RM9Lz}FHGOdhH!CoB0ij7Jo2?`YB;`d2^51tP_39X1zC`4`J$HQW& +Z4ZPGN4<%$dxR?w6&-XApG^+Uw>@)&6~~5yW8#WOZZqDA*-ZV!k-m=EWAndrKwwksyBM;j~~Q?s5%Xe +hY~B(Ykcy@UTE3^2a!E=0*Dx%-;)2At@GEXq+h3qK^0pt4ylM8*qFuSXtNl%ogA~s8w<(lNc%qsU!#shi6vSiT5ZaFLEr#jXy +5?4_|-1gdHJ3wL{$$hForJ#-9@<5~}g4kH2TG5^M>~5J+}UnrV?}4O{6fg3UvU&Sh5z#@JSZvx0wGFv +r9|m6RBfU@-Qk(?{;CIoE|Wnsb7%XV%V!cCTwcczR5f{Wy7`7LPUiyx!few|Ae&>d^y@f&JaQ-dt_0w +$Guzdd;4^RfahQ6qPWX2kyrHX)N;PaIz3$&_<0{4o&RoySEZgxO)oDDp?WGLA8S!53Ju$%WN&SWZ?Bf +`0?5u!aO0 +yXfV>DodDS-LgN{fjwUhO=EQ|QjZC7hzBhmmLYrus@9Y^Om&nTHGZ%R1D-UWeIt?7|z6P;T?Hrubcbp +<^Hx>3a)cv4@j@tTmOeb95x3{ +w51;(4K{B8`S!6Ze1V^ZYVDSqeBGj4HkujSeK%}Hh#e-v_jLU>dd*#;gVPHw9j6934v{h!DlTnWt(y_ +&gOn#GYF@%f&_|Yg?*IgmF#@v>{pNEaiB1f;F?YSklp{e8EG&BAkri6Cj7IZ1)YEfT{rAm-^zNt>lOe +ThYp*r0yZLP1r}MqXoC^Z5Xkb8yA}+_t_(xJpg6aw+euDyk@GSU73VaBFKsl}8{@Bt%e&I%PTQ?$%5h +EJ_~SPXF0Df!qL;1u>p&qdi +u;%M;o?6~O9KQH0000807gYaR3b|bBsB5n*vo;nL=uG_$NnlQht}4Au1k6#CNZWQeyCq0xjAwz=n8-s?N?}k6y +&bml9q~S`%hXAia4VMb3CAn(cKB$uaPfMmk{dbB8tQvx_z@s{P!`dDc_==8R@cBnAHJ%qK$L_T44Sn7 +F!{2Yg06Vhdx3Syzo@6aWAK2mnS!LsW9SL +8^HI002z}0015U003}la4%nWWo~3|axZdeV`wjCX>4U*aB^>Wc`k5yg;d*)(=ZTy&sU7{l!%ZIs8qyK +mSqLn-G`MBTB^uxCaod0BYUE5h4^>IcGA>s5qU{kpE+~RTr78;HUv^9jnO-xLnqY+Wcc^1v{b;2Iuvm +KSitl5r`u}r`F8Q;{^2eO0i{q@j`$n?{)lT`qZv*KUuisj=IDcZcKM0F?ph(m7n-QG_0SyBo!*WxCJ=oGxt$WHrs2U8`(%_mb?2RO}K$-)F#3geio~ +*_Os!A$JRh3z6n_|SwARTn2g-&S@Pt +NP@^5OR2<;%f=aeGM=y5InfZ2oe+kweB$*D92ni4O^i~}#K;4uG!LPb%92oP%pADz;0fh(3uzIa4;|h +bqfOSNAq7v4+4MV91iRi6tk4A)p7u9yOkm7er&Cx}f71NO8`{S$iQ0KQZlyx|&*tv8ZZ5pHNT`eA^ti +9Wm*29vf0dmuBuQ$Or9ae(kg*g)P)vA~Qi`raRcC2h{?t-sL2eFj{BeE}RAW0>e3>nyQ*7;(Bmp~Sxz +4#VD1M!`FBB=lO&b-jSOnTj+8)>TA`M>&UGK`~Zjw-};Q0dSo-2D+hPN+gumX)XUM){xP<_F5X?MJPI +>Td|1y%X^KD4O9kWJ&?w7uOTs__a^hMJiq1wMHW2s!FHlPZ1QY-O00;m^MMG3k{$emd +1ONcf2><{b0001RX>c!Jc4cm4Z*nhkX=7+FW@&6?b7^{IE^v9ZRc&wEHW2=q57D +5x1tibN2fl_5nfnfHkDKhfzh?+JKGMVS7v9dv9Fck(3REQa!vq#h*G*tn_ZqPje4md+_CE9dI#&V7(Sav0lR +k+=rBGS&AZj2m)6*d#X7PwWtN`Z0-~+yN8D)C;As6UI*ihve>%Q5!SM7ptapDx7qAh~Rvh0K9-o{mJEAE +WYoJuwW=2vBe}5Pyi^96xVkzG-g`7{`)rV|Z;6_l-6x;ueImIgJS=wdNR7s +(Vs3(OEY~#ox7DFUK9|l{i^Ryza+{jA6TjL;|5ImBB7RgAO+4F*T{Vo&NlkNI8=jYEi^U>>)pa +|5C_S+k{&hR4Q)a8!ZUmbR!(qwJ!C|@CwAeca(wiquN`vU+%Hu@|G|1ib78!dbjT^b-iPB<+?szI{kx +F}Fe|}jlAuoj4L#C;`##NmU6!L&DnVo<425y!!C{a{AoB6y*ZR4zpj`kU4sWjUZ6}ZzJfs10+wggGW` +M5oi2yR3QA6M|(jGKq=hvV5Ie#8FzJ94;QOdI@_-Zebu&7cn|AowAYz}0Xfeh%nMPbj`FNvT`9234;c +s0)!&3dlIQQZyMQfMg|_f>nDq9r&oOWUv!T%hwj0PPaQg^G8uM=);sq)0ry6r#D-M;})O9KQH0000807 +gYaR9m&dTQ~*)03H(n03QGV0B~t=FJE?LZe(wAFLG&PXfJ4KXJ~9`XJ~X~axQRrwO4I(+C~um&aXHtZ +7dlOuYQSYL`kNZw$nNtH=WLuW8@P$ff6C9cSmeuli%LG6X*qtU{9t3#OZeTx!t{ISCY@-1tRVg1&btR +0*zk3X}~oXj7-IXih1nSe5oT=Nf6DpYQF_sG|*pB5J$CCZVGxQw&M3NuGMND^^r4;7j6(yhtV0m(@)e +NS&HNAtk-jl8Ae?DPI7dGRvv~+VL75KOGBW2!o2((1aEel8KW1p28* +o!DqYPAToGEzaI69}H-#{{hR+`i?Ks8hvCn`yDl!pf(nHMr60usfP4rGZ75>4qQGx8X*Ss^v@P+O%J7 +W$H|WThC8=FH~;&NT@*-9dW4O6X6F#gOh_d=$k3$%r7iD&=Y&@C?={;_U900#dP$z=Y>Pq$rs$l7A#g +!hm{aF&Ei5@KM0G#=2a+p=efKD#LS>e*?9)(l#H={;jp$ve}T +x@_!>I+<9Ky`_{XInGcY1d*!a@ePDEru?J>T^O>AOoa*_$AaU` +IUxDx(7IT>aW8hJLh4Xv?*PlRBBn;|-r`%dGuy*35~;U^Lr@lRIH(yB~dTVSR9v2rV0iD_Uc+`ALn*K(&zqYKQ0fY1PuAmx(E`zhatq(1^T52KHy +X&TL4;VX>4;6~mQxy9Uk8$5ym*@7n)W6u{(& +`%swo3Eb7~xAL4zBIt9rY<4hJos2LH5*~0HN&r69?xhdEkh04od~4w5P*JCj&2(_0(=pUgeKN#e9Y_t +Ux9_9`Vur|}uqsg#BIY)Jt>c!891tA9s2eA^rRvQOLYkH6R(w*bnJw7m(HLWVJ5hFUGqBwuK9(QzWT? +D`N>bMkQc#?f6Po-KCe^hP6ep{LSS|z49;bn-Qn*;-X7RfJ%Jiy=M7v)Vc(%~fQ?7#l`?&{f{T^jA_(;s*oeZ5Z~Zfu8IV +|As7eU;+xR0=$_+48inQvQ!3sN(Hj(i!D@MalLfT|KtNmX_~pAYbofIXMm*z>YZ1f&`J{Xcj^*;0{b? +3u3`zJ(|X!C{t$Xdo&mMBbu-lstyYWPkwpU2F`I3Z{$fsvM_KhYb-KO&>Djs2>sP^cPz!ad1WhRc+w +5Bjo20$YQvG9E=ZSJ?cRCYI`8%RNK#ng8MXfaP +)h>@6aWAK2mnS!LsX$%-J>l9006ra000;O003}la4%nWWo~3|axZdeV`wjGb8l`gaCz-l-*4MC5PtVx +anq9w$O4u}4;p4<8M-~V!O}hjg+NPG%tj^!l8)mQ{oi*->KA1@9hPiQ4bV#F9Z$!*@4h=$TJ7MoQ4++ +iQQAVSSZNX{_q)c-Dw5h`BjiITU&&(v*Q~DDrsfH}Z>&&~)d_r*_%icbQp=xhx8no8x651cu&wc*<+_ +vparb`xZdguWy|3%h!fZAxYG#a6T+RUhq9|H{=Cb6PoPfht6kBLCxAuq+A+6U=XHI>kAB^8ff9|ZYv3 +kCAO2B2IN?t}#ga7{4Y3sFa3YN%M+h+6!)83I)2O4!LCVjL{XzV9nO +RWC_2^N=Sj2d1CecWuv8+Ks+FSY!-@k8SIu>D3pBS8tr()?ILQ*+3JA|u9DLtSOWQsLW ++EHitJwQ{7lY*^n#5LY!{Sz++2{i5LotS)4B7WCgt1#=CJtL=??@&JcLS)hhvKEJ +mjv-b8{S^hc+b>JW&cV{|H4CQgSHkV;joH5zWRwLbWieS@<(l?PHtuZ=pgP+^l_0{Oux`^>2g1{1i#Z +#@V#5#B&hUh;cclVA^Wpd4O==#Imv7Nj`e5RI2=-S<`~%jDkW!sEB+#JbZQi;yN2uyej*0qfVJqK8Fk +!_2|GPTDms;z1;p)xkUtxXec-&yBo)?20NppTDAGi3+plgOmBqM#F&0S=(mMqMVA?f(Jg8Tva{lde8- +L>;%~{GzICQ%|J$J>0Kw}Ak5Q^FG{-J~Lyz?H+CkvlfH9$E3<-65AF-idw(ZhzEm$r7db#-p=zY^MXb +Sr`9)(Uz<}Jsepw`}UB>Hyd-(oECW%2saD4>Sdj7Po2Ke^p&IiUb|Nr5##oDzxMa(EC=TuyEpG;4M5) +LwAfGL~Ulmn~Bvg<%6o^IY-+PGR`|eIoe(CxRd~-yRK4)i2EmXEdk7LZ_-7KB0^~DaGj2B +-plFkekQ@2wV+*+?RcI;mO+%~J0@hFV|R4h+B-Va4-M0XkJrr6cpWF9_;y+;cEOX*=;mr7>R&AA;6;B)rWVZ^)0WP%qdgBR>JX-hK1uzV@n}h<$v$H22+XgY}At>y}%%bFG!mPo)?^6lH|o_M2882Yexz$e+~3pU||3LUMGtZLc>7pVVa}) +tr^1I-@cSw;cr9Qw^7KZ$5!Y+h`8Vc%zi+aMSdAz1sMD{JG$bg&X%kc#=JL_`y~Xi`2n3uA+~ANJ5a2 +HTcpy_JjWV6MS)-zDA>q0-lyX3mY$foCmRQEfO`wy}Lq!WiMlS~@Z#Eu+?QX&5L9Xrlffz|1rPS*#B=X=J#nQ^LQLG-@lVncXQN~Ot}*azgC$2 +uTa8WelTAt2Yh(w>(Z>97^tfTpn&mCV6$D%cbtbSv3Vs)y1F^Lr +t8b)YUz33et!Q8Y4mcvx~3O@+^){nWKJfN$=}{-sen{^pTm5z%eaQ)s$?-lNIsEIpwe9Kj-Mk|Yk87$ +0mm8eO{OCuRl)L;R0@5ZvV!OPXaypd!Soy+*`GD}!9+z?Qpjo0A7gCaMun+63kt+UDEC6)= +io_;~E3lHP+JTFFtihQffJ?44~B5A4@c?5qbaz?6*W4R^SDGZxry2#DRX%HbbJV?0>tvREVKuRd(f@@ +0s3i33tN)e{70;1tr+s_#}UXU9poGbG)!l89Aw<=?X(L{#%H*ln&RJ7m)Jk%n|f%+q*fN&A#bpla`i# +zmv9}swcpMG?--7&SPB7-Sw%LZz&b!QVWVtvR7(+q=pnV7J?lsV&K67}&0q+ytBTDtju?F{g=3$ddO4 +R0gzL{h1UzYWOK423N##Jeaee`fTzhUkop47WM{d&79UhT#nL#ueyVH429qTJdKtdiW%XK?@V)md6?D +wE#2Jf^D&i{~Z9hVS-T&Mhgbm2Vv()g#tOwBi~7cP0p@ATB0m9$Isb}kWXg +9VRU?hBLF&ct~+R>PFw4K`_Vgg?b4cVH6H3TwSEuf-$(L0ApZa1*Wu{>iVgtccEh~|1i~QdPzY7bO7O +?St&?!Qu(U$9eiqjU!5C$P1y()=fAV>PW&g~I@?k)Bbi5o*~`XW`Vjos`(3v4Xe-M!_qvc +yzrD};UVmF(`u~srSC3m$7E8LkmPxn3IqTv-gjqw#5A{R9rVtG*I+0cmfJ +~p9h+mn_Pn$9#;r}pUE%w{8T=OCS);-(bsqJA+}UU6+2Hm*&>TTG2dYaa3nnsqcZ)y5Oz8sCnC8hc_S +Q;?#UUVPw-EvB9B!Hu~BculDiuy2g;QF7sTH`%1;ro}t&k}x$73p0)qn43S&p2MQuzD;8!yh5Dqf7cH +mZ*_!u^QP$MVE=aLn&6)ewZ}$_4tB`=?Zd@4#+rZ{HLdpjE!bDx)%U&5qzGMR?W?XmvWoE1N>E4gda# +Wd{@a)ur#Nt+)c7t-5GXfNUr1a|OQqysB77p3%xo;vX(VQdrCkQ9Iev9pCBtCwredJZ(|oOJ2nIGDYT +YJ8c;yCOrCFXs5_WPWE@*e3rQ!&oqi)3=Y`nJ@_+828z3ufjDr=&2d8!k4Se@*XWlPRO9KQH0 +000807gYaRCf;Xv-S-D0N^$N02%-Q0B~t=FJE?LZe(wAFLG&PXfJGGd2e-eE^v9(8|{wU#__+Ng5{r* +2}AhOe*#p*af~F0;~HnDKp_YOk6cNNDN^N!@07#6LHj0ssy<0)W_R|BlP2%FbE#9lS)6trU76JUc`^%e`*^BR9zWCw$*WV^I^i5R^^0)5+ZGKY=`Sq&m)%ffDAj)^+k!SvN9I +Cd-Yx(t7{B;yfq2?^GpBjKl7V$!olV-q4)iOQwk#(YP>ko?AG_R{&qXmW^YNBWxfD=6RLVhOvizKK|f +@{%~l81Mvqu}pr(U0|@Q0=ST9x(5LS1mJf?7lO@3h(3hI(0F!30D)t!;AQ=_` +o!9}fW^epbQ@z+7L^JT*TlvY8!^ueCEq)-6i$%3{PjyMcr!~jwm}Vb925pxjIqA>|jp7~rzE~`ZI`8} +7Reoy6L5eFf=N(IAVHiFKikq_fP?cj|2Q`5Q9l@tCy&yQr+LD=)LkO}YZCcYmimS~AHkW`u=Eq<~dbk +cHAz`9$Y!;HHSrD7(jmOH%u4}vKUN#lN_k^uiLlBx;Y-s2f5-QIGVLa$hHEneBF&=2~>)0kY!a<4OtfTq +TVLz%$9+XA8FLm=n|j{!#Mcjk066aNNVv1*Qe^pR|=0iDRpxtG1?T65h&{gN}N?mpeB~apj&ClOV6@t +9Z_amw4v~}Du+Gnua>8W{4S$04Y3y}APYndfNSNEzWPO|VZBUqZOK4S4%I+h8@9;u!g~pqHeg4;>mGv +Wo@jXp?t*)X{~->YHDJTm8fQw>y#Sn-am4z!QzhzBx+|9~a;Iq_Q12q?v?94@oCF^r1XV>|ufjuBmbD +1u#92(|x-v)Y&XOGDtfib04SR@g+76B{lla1$dK6(|aluxjEfAunvAnNy5QPNT!nx(z0F7~=_?AF!N4 +hM>zVf0jYbV6f3>{)tfgX~PkcI)QQ7l0Gtr#H8g4+bBAQFf6=PH(_S~YxXh$eh&Kk}YpVgviCF2M;bb +s*IqZj;P;R3ef?^_txD)NO7Y7QUgKL0~HOME6 +V&Ws(94NX`~$sDwcwlAGaC{8Akw#+|sN#IDjwpQf;=oua$ob43VoY9VKSV+V;M`ty|ys@3U5TaSn4S8 +7y2i)WNdPW%>nB{6|&{r&$-wdC|vx8(S5u3U%xqM6;7&x>!mGhkzWqAs&I>!R;7el*Z^rkf|xP!BeB}4XYh^K=8$joNCQF`mrR-- +f&Mzkxj+nnlV+&46~qKYDp|jT4|A{}s)(8yd{QO^)asP!0=ffaz=!dW&7=KM&R)cKWsu48^*nKM9{Jq +XPza!CAHn#c>Ip2mf%@M;`e&S}z~!9I5%#Vd6{Fhia5{wMc25y)X~)S#JEW!O?;d7~2G^_1sF&eIi#|&ng|SwG=1jryJS-Rx_!P!I*(Fv}0CAPLXEigfB)$w#;xL6$G_%s!E^U3TI?61wTiG@U+F ++M}(&u}{6RO{exOOKT?Oi!6yMR*jl#g|%R48)F3YuWuTd_>sY3P0q!3>z`8BoV|c*kmsasF=-`ZH7(-pt~LnLCK1?7MXG&A}mGSW0Do9ujS|H;#Gz +!I%J)J_@z}JL`wf+&aD{59EodLSLncxfzczkQbe$ZZ_belYURrg)N4}vhuN;7;3XMuN85I+> +s9!{`!~_SLTDtb~97T*Aea3DdwRq@>t;YJShHr%Sb)j@1xfu*GLZ7PIV{81YtWB9*N!xj|JmJ=AT5ux +V;qKFHe~3-z%n-4c#}XHAnXO8O{wUrVZb9JSGfx}Xd$APb?)bX!Mi3LXwl#1nAj$6is%KA#%_W=OUd` +AS0W!g5itJGS+8qs~O?_xL@9p>PEz<$Kj|J@Jda3!AHnoyUr!QVUvSgq=xecD%vG1vEbB0Hr`|)tdJMN~L1}lk +x&@UIx2~a1A8>u>ErfzWR`z-cXiMwIx#f3@35`Wx=pw*A$G=Y +MEl3BPE>xxj2?P$#p;+3-FpGI>(4%x>D>^KfS@*EK?&NNSf<-kax1 +n8s-}{G!_VEz9%XRZ}<))Rft1q1>#;z9;B3>#RnYQO=GEMw(oSh=-g1h6rW_=ZL2B$JVYfFnZ@Pze5! +ATE$QEpmJ^TV<-pG;X&wIwR^r-|DdwAqr$B01+uoX=F(aw%^xonDAj=U5esPKf0aQ*x;ShqK|cRfKLa +$t*)fS9FXANL8yNm|#ENeDRbXEz=)xYjzpDY5Pi5sd={>@&2txk2``M-C$BM-o$=P_qw+FvMZWnF}6w +pJ1J;Xo}tfwHWSF0VyFR}O<53->GX^?;yg%kCtZ{LV6&c>jFG6?N<(ZcpK)>p=~OhcZj&eH@&=3IUdu +{17AGrAmThV%{>`qT@W*@!y5Q8&d@j;k_n8#yHA6*SW8}Q&0XN*ciPUmVVTC#GS@mZa+83LM|XJIS}qAZ>}Z>B=3onnFhP3YFp? +#v$Y_ac)hGw#GGfl=Q+(cO6XP%S$3Sj^GQ7o9*O&4aQk(2eE;_Un2+Uip$hE_ECSc~jMbmUo^eRggEH +n2jp3)TQ7vsS0#x4QF_c~5`X5b*G&b+=TmVDK2j*wodcZ +176F}69M2dHUn5WUTYquo+JWxM>UIZ@xE&GGIG)z9y5!ArAko~s`z5)$4!3W8cjoDz|AU7W`DmS*l2s +Eg9A<>DoHJ&Vn`s$gQ?l&_QAVz;lHk2Kt;~bo=*p7ygGC3`uZA4k%Qt+b^bv3AF0{MlDCHvH=s8pTcR +ju9$`w_50aInxu}gcTDQ#E?p8LlC$~OKy7|@g=i_b86(if7@}Gsr;-k6 +L<@Cwu3QBycBvOTDU&NykuQ#Nm85v~W?D(xz>;~3M{*?%RgHM-7X4x4ireHyTx{*=Ik!5%R8fI`dRg-1mrN7~r|63TzCC{yRSn;K69o1G+La{R_?rCVM6 +)2Lo3il#Mhn>(XmDL}tPQ3!7_X?{kd3(7Ek&kc+MXRr#G1RtgA@N~2hp4qgu}MvH${`55MzGMO@}@0M +K%=DP%h*Fmvu6>iS8&#H4|)G(=wpPT%~PZ|w8sgp`k}qg!Z5Uao91taJbN2DeZo{;fJjWW*bY|{{5U# +ggqhzc-xuN0aLa~$>al}LOm`&z1yD-^1QY-O00;m^MMG3X@P8{44gdg;H2?q@0001RX>c!Jc4cm4Z*n +hkX=7+FY-x67E^v9Z8(nkUw((uR0%fLSUP{w);wMcnQ%7=bC629;<+SO|4NdWII#xX5N`R8Cnf&+e0w +D20;38$F_YfJx?qadu3n2A&$2vjyo*%6{wk2ZI(Q;L{H>6fGZ|-O-GIIHzRksxLG)jy>#$`M<-L3;duV{@w5Pf_B674{G>R{ZO| +WqN(p_(aB{8sQ2(mF_Mv=X(#HcY(C!6Zr!l^pQzX{E$p0E9i{Dn_DPQPlmNMndVqf)9UWCo$vG)5>AI +tQqqLT)KeLk~0>30lUTbZ`pHhIln}(B4VWcwxpE`QeHzn}e!ba}OhUb8FB+*xNO^Tv!Yf%&_r_DMexV +saQ;Es}PAXMyVS8xiVU7ZlvR4HcU`FG?4YpLP`e~2%IL*|l-J29mMVAGE-(h3#;FloK%%*^$Gkk0av^ +;Jo?teszVJ)N1Ialv+SS21Rhe9kG79+A4fjp5vHz*b1hgoS-y)*^jLUc@#zGw6~;EjC6_dC`DBx)AuQ +*WM~MFC?2&P)G3jsQ1x$P>-o?#J0y6BU0ZuDO*zZf<5ndt5TrfOMR|tzH7=oVQT=`lNXW}2kF&oUh>W+xDes0}KZvtmxp=(_A1!Er`^M7BUY8~B@#%MB4E9b<>J$Pk={cml4#McGz#qz{ +T|8r;2fk`O4l?`kO#V1$bm>xEfddv$uvSmP}Grj@%Y8%b2q0dmV$)ZN?P!7r(yh)O85HV@DRsKJMFa= +u0h;lwH!!SM*+b8=R6B9yR0aiy#}EDX8X_dvjHtJeV +gQjJAeaHo3dR +sj)bKsLBcgI#fU%)TQj8y?T;=u32mBs$7`M#p0F6OW5rNdEEY>Y*)PLRU1l +-bLly{RX3d4i8009VZjipt{K#Y>>(DaAQf7HVP~k8sZ7~bRgb@Z6oE`8?ovs1$RW|jd*ixR^M^|$UH3 +Bs;x|2wW1enG^vWS7$Vmx3eu51Ij9C9Nt5ejABk>iXcfr)L;1^O=lByJsH8}QsR7#C_tQS&ibL7pG~$ +z{q%CJ6;y*hR8k`N-vT7MW{<@n#|07znA@qY1liRGa$>KLC#rY3{3j0uQBEM@Q=!Rd)Vy!9_P}Cypk~ +DT?OdVG#vWvbphPRqyu2eZ2x{TJ)fU3A5m&-MQm&z6wOy3A%C}$b~T(OSuH9TkAz?c$}ZAN7n*< +BP9VI6$JW^{)-*HBr;h8f=|%3j=c&GutgdNpHB2V#j<7DBbe2t7na7#awfx_p%Y*HT{TS%6h*nxN1wL +xe1O>U=ZRbL{qX>w6Ve-NpM-k1H7d-L^LYhC@#jO7+<~g1g{BaY +lu!mAcde}g{iXx^4Xr@4Lak|Q-6d$JoKPTevD`>zmr9rC#QDEIS&0fnJn?%`xmQdPJJk@}$Oft +&2Rwzp*cQvoU84?HFC~PSIC)|r}A3n};^l7;@3Ur(p)CNgSpIC;8jl72)2!HDu0%sFpMscCf6%IJO13 +x-G+c|z8Mme-!f3L95EwcMNn;kHky7kRD2xkYqX?(O8^_hGmA6^L7arNLLrh0Vr{`9r=d3ZW0!}6it) +*GK4-nFTuon~d!l4&Xr^JVBj%wZh#gC4r;%A0L@f(JDfdY9dwQ#_N?2h=i-s?%xjFjvK1ZRYbyUuN+< +DQgheS@7Y|fdGA|3cNM33Ue&s7T=egzImvq{J31Y2zOw!2HpkrNMGB8?F*S@w42oekWtd?Bao%zsmMQ +5f=o1?W8v|(I$W}o(qI??_r&V(QDJIyDZeEhj2?okK7dX6p6A24+IVXdI1&%_pjZ=)=u?bw3Y&At1!< +ygu@Y;g)ZS2L;mjf>xZgF$w*<3K+>+|T4SH-#3hrrJ0-Tv`Mxo#zx1%!!{YMPRKQ}lEY$&Ls5O%1Dnb +?F=Dumd;bBGWdLAi#oe}@f4#~f-*yVj@ljv&;x5T3n*aCt9SV*_iIm()4|xRg=QYp}dE$k~ABT>Mxoh +dbC{L+{65bq|^vkXb0#s%F({Q%4!;YmA}$G-rkW#nabMYEC~(vQHLgs9BBOh2cF3z4vawdb>+i__1d9 +(z-?o-k|)^p7(L*n)rJ{>t-3X`VA#aFxS$El>hkC5>7qTNMUa5%Q{njLaB@GHB&6%qk(z6&lvH?J_ +;`og9UupUTJfvHjDL73a2YnI<~GtyIwH_h*OAcD)_jAgvhl}PK +OAdP+~V_Li!wfPN>u|4F^NOa{Qqow41AE@E6TYQdAQeRSYei*$j4Q~eWA%5OVbBL0GwEQp%%3%t1Ea} +h7i^MNhuE@2-v)VY3>Brsr`k{L&66ohnfcYPtSPsMmX +9UoKcVs}%CR3cf!eecRNx_?&}W44aFb*hC)X0E!GNQ;Wr)R(8H&+t`Uipri@HS!eRLuy>5tnD@taeS$ +pwVrzU(7IF(v1zDf7=}Jq}j!r%F$=(_BOsy@<=*s_8Y?Qgf@z*gV@kmW2xAwbx@@q~D{^;na#ud=dUa_tH1#!~HS4*82k;g;#?+#qaCDi5cLIt#aP||=Y?V}jB}J-kZAJ +|6zNXDeKkD$7k8@?F6}o)J;emky%xP7!lZC7GRs+vli&j4T;&by1M5|TkMnalEnyeXvra8GTJN4(k$; +^P|^@Ci;_Ns0pKlXQXh=_m7X%Dvzp!5Ahw@f65o7hkH(-TSr8}%#F$SqJV0?rh{I` +NIn?ncpFXsRyBmH*iE?H;}73>p~~D_?ut==uswiEJkQq1=KOpv3V_GJbMtB){2gNf&i#DgQN +N3>RtgRt6w}Ue@jZH0(`BX1yq?Q3l8~q~qBDTW!kr#@G3$w`Ud)$xpvr+QT=Wo#E$C4)E*G&hUqeU+m +%Ohj;ey-H#6N>1$_r{=r%3?8hJN;oI*o?BV6-@9p7-f4N)u=Ld)KnM3*N9}e)4;ZC7B$U29KAuhba +y(HSmI4x^au*8u&!nMkI)0rk-R=xm8L{iupa)-7n|0>?(&4fmFHh>$yOGBqCi$EheH_M1xfT<^M2E|_j4W0yAe3Nx5*7V +ypO+K-{t0+0`I|xD5K8Y;l;G98E1!+b;$$b){!(fO%H1ss(lBW!MNiJrYE4G8D|tnk${BFi{{c`-0|XQR000O8MnywZ_O^!vFa!VqQw{(C9{>OVaA|NaUv_0~WN&gWa%p2|FKlUc +WnXe-Ze(S0E^v9>S4(f>HW0q+R}kt&3bX>+UJ3yUV5I3Hz&0tIq?aHd6nSiOL5l)Od+YxC4oOj>9!Yj +{tPZxwdCzBB(dU*mJHp)dU8|XBDxQ&tW6L3m*w(P-Cy)vWlr>vHE=!X9nvvhqA|m +)KsQJP)$cjh66$DHzYjb*nW+P%0rO6IrF2KEQJ +LW2$yaWf`4<-cL+1j3s`?EY+9}h3qGALAe^laeO7A(x6C1 +WFI}z`%05TbtW%Bj_n2+HhE+vR&uADta$>FWSqRTAgksaGKiP2Q0u&xbty>t;4>mRs9D*5)iG*8s3E5_QV-c$MRf}QzWB+7N{S#|+M)2qP8C4ihhukXAbnq>)iG +3rX3$bFU?m;608~7I1HR?IWsQVc5jQ=%1ZcI~BTIQko?@N0haw`-w>7n&eDj{vmHm>f(k3##5q4};+i +w#(m9x(gFNt@*h>{!zn&%~B+Jfxl3AO&mCN7+oW;O&uBZ-O;SS4}-W!>z>HnKQf;vuWr<=?PQVUG=0y +=Ajwc1KaJj0ox!jDU0#a`<0Anfy1Uw`PFK@zFB>~rt9m6$MtPCV@^Wu>-FmXn%>;fFE_W>8Tloh^Iy# +ESv8BhGXqzT>-)Pkef%pUKQAc%s8i-i7k4j6(&h6LTAZl?!|TEBCBtnsgvD8d&>Og<a~@L3{6W=Jc2LHzRGeDgUT&q#QIlRFr<+a`w$$V +wI*tI3s|Jpn(wUD3{)FuGqhjyWKI)JRTP=TfFJ*Tvp7m;^VgePsNgz=b6yEp@q!A-*&7YLEd*RS@6#G +thtNc1hq44X~);){u}3c9xt~`ucYjz+C`?XN2S^Jj69eMkgsqdg39<6nnO}-uG@SvkcH2@Guyo6IE|u +qOuf>{7{19U3u!vn@ZFURJDo>qPsDM_o|Hh5Stf({7Mr#C4$7?0*ldSSqt4Q}`ez1wXpQ +U~GEUGt6#WNKO9KQH0000807gYaR5S$x1a33l=FB)2@ +oLb3^WllO45w)@_0{El9eQ>^13MbM6QYy6l%tCreg4&(sV2d2$(elVV>_x5kHYuXX)ffQu$B`s-(crU +nxmo)pebd$1N=hEkWTZmD!vkX7}|Dc>#IN0-R)Pvaf28{edFrI@{C?ST;IY18-n|EM^%1mz8K1tfiFz +E;3&VR^=1&ZcSp6(jDrqO!nlFWdhKe#Sk#gN+is`)Tkt&oZM5v$0QTL;vSbEJ65H2LZv3MQXsWdZ-kc +poNah3yV7MSjeH3RW5NZy9g|9X!DxcQ)mNrRk2_-Z7EhoCLj{*Cxo(0xW7pf@^7jF2;yME7<`ubV8%GmNl+yVxLpT +w*i_#lqjVEqHT5Js>=ZawjAhaF(~2TsNzz79p~I4jh?h>qIREI=`|3LSb#DHcf%oigbcefIpOWW#anW +#$1KG?G;WK5!;Kjq>f#P`3)`1$W55%b4?vG8($!hArPpd3%@yJ>1Y%s_kd`fOAfd4sZ3`Vu#xRSM^EA +zLa8VG*6J(742P5DX7)Kz2x~~2}8OvbF-F{Qh5{XDasSnuxhC;utp`ckkviN{SAqYVbS=WGod4<8Q-F +_+gA+NF4Q^BPIk3L{uIzg+oB&aRNVIx)ut0I1a7*=l3kh+`pQ~Z<_HB@?PUT&F8e`rQ`6gCH<{oNg-4 +_S+V}wS(8=Sn>8e3v*TW_VE<5$U%{1z)Eo&`mq~{oSOs*2I&*b$<}AIDX=0@u(PU$3Mp!bc;t^cP +)Q+yNLFMr2lcDkH6Ba%y+(J=A!SBJsHJ_*)xLnJ0hn172r^+_9Iv>b!!SdM?dG^aK2_~leQ}x8(FaPz +=tLs-c^QMwsHgN$fYLw&l_Lf9s*+?9`xm*O}_V(k|jdTC@^8A%E|Fbjw>hk^N;?f?u`nY&^_2I@IT3n +xBI4~d27Z-2!z^(j#`|i!#_wcv4yk1?rKfkeMz~X;tMSLkix4M>8Qo1Iq6_jRTwF=vOO7nHQxJ(n@j6VQorE5!8TkoE{D +sMLQWOQj~J1KGqteecN#W9(Ai}t6RIo8+!`=S?6MtO^{-ts}hO{5>tRez8klF$pYhS}M1FOZ562I$NI +a^jOQV;P_PgDr|^f`#_B5qbU>DRz7A;Pnnpl%q-GIMUW4`8{%+s5v4>P2~ik%Q}FE9eBF}jGTH9!yiI +;e%~cwALgU>9N&7k<7`oLHTD6NT=FlDtQTX*q^N9Vppgi{y$Exk4KDIGS85|6Fqso{h$2 +9hmH|PUpYbP}L*G$KQhT6E;-ol$c2Bbg=qX_X0jgKi(KCW3k>)|`(hW2lEBM|)T@vD0VE%= +k!F)b!A-IUmuBpizIYJ&36SsfVeCUCfbl*E*ZFKM27;sj<+71i!NU5sPP!Ax+}zY2v4$=Q=!|b-JLy! +ZzkG$HE3^OoEzIj^$u5vU^LEP0U0%@_DuRjd>!Er;&xaZi-ADdB)ZxJ{wvW!k49$yi3W*Z^BqN+Ue3y +9*wmg)X1uEFvkX=UA!$EeQei<6^Y1DYAiHr{j-Ok$RFy-5Q6RJe%LiF_#N1x2whHFTorQ2rHMQ}gw)f +XOU5eZ>JU>600djNGKC0_9a@%^ScYCc+8+!7N +9RCaPu|IY^_tMNq15Pf7u}S~G^!9!)*9U2QF+n@i1c$KxA5Hv2hDj!!bD39*Tb*Q8jr-LCmZEY-dc8Y +m5~|n!0cz$w3>i>lKS9LB&M==a*=VqQv_BhK-IbohfzDEHowW2f{1(N+db+hTDNPTkm0fQ;4G=9`(_0 +ztz6^F=tj?7?A^SRhO9!jsRar&mNC~%P<$z~dS*#CRhWD&0H{aa^J7kQ)SvzMGaC(pv>T +s>0v9c&Yz?_!=M7xGn$&~=U|P#tuu;ji~it=kT3^NxaL+n~gceuafcOZ%Od&QUdz9oc~fjhq~53mX~6 +ttLNsE`-hvkPVP-pgjcx1fDX(;D)jX`M4%#@^S2B5{x<^_(+AypjDM*E5vR-oz71FG&zQ!+5GJI>{z4 +7eFC70E-QuqNE#E)n%%#XOqvnjYNET`r_<|e$0gPscePt30( +F-#EB +bv-QKZj#Sa)oWVQIE{Hag+KiFg?@RY(=U%q{Z4thQNPni%GB>PU4!LQCZ_PGe&vp^DNhfkTZv<){cfI{FV#O9KQH00008 +07gYaRO8!eway6u0D2z)02%-Q0B~t=FJE?LZe(wAFLG&PXfJJHa%**PE^v9h8C`SRHu9an0%dN-WR9k +rKI*DAPU1;3Z9c|!+Xsrrfka4VO_3}?*;YON@3*@ENI(+hbms2(V2i-+V!uDYWm~TqmmMqCP2F~^EIQ +HhG81>a^p?0;H?Yvvt%2ZO*RDhdV4hxSg@Ww1O;N23+*@9jd|rx(eL#}*>z6`y5&Ouy#ZAOM@wLdWHw +|ulZn~nbco{Lh@M{I{o}wFzwyj%f2!G`5?WVcFHN7vpZ7Iz56~5?=PCWFIT{XM{@~~p4uIoPvvwMLrz +wx%D@0EmoCND|96ng?q_id_`xgyGP5xJ@gF|mc#D!t$*%b-7?c`Lh&-H +g&N>ceso0{fWDS~HlLlkh@(88^qzRKv^Ao~BpoX`w2ZoiC-gpU6Nc%&pE#r +A!s4WYg@g@9Y9UMXAdoFUZWLX9@vMi9IT!!rQ2V_dgp;Xmv+KL7J0zL>DBPCWW)r)mjA=#(85=@j*u% +-Xl13$6H9oQ$oCmSk;UNj*7MP6N}r_c +Q(f*b-=XLHlgXB*r_A8mtBf0;+~=ue31T=X&HL~yspFp=mGcY`5$7@5yob2!W}To&m?h)r4ch^dg!9M +t8Ycl=38`jxtV*}g0I&kMNe66lX+l#u;CZ`}gMXl0q3 +mk~rCMv&)XRh*9M|jD-4bL12nRAofEq#>7dE+d`DNA*9$!dPrIZYdI;kF#a!HN{;8~*g^kNItofrX&; +ke#J&r6Gr5KC(#7Wm^i0%|*E{iO8t~Mba*^OMQSUtq3|$IlwT$_ +p9GClzY$r)!9Qp?|Pz9kIFkOP=+Ylt6!e7Cv?6O)jB6s)uyr4|NhT(Z5h#|Zj#mruU&&K(kEy!&040iGR#AK-jS{M@QkRBV)HyV>@5GXCN+@! +`8Om>pBrl{Lf7XyOVIQz@6HpL0IfvE>ZLkWp^Bc3U^q$-fA6Vld$)}3VlQxvDWV}^DnKk->rBMo +Ey-9m^*xs9YlNc&%e#T?aOOg?oSAS6d8rIDX&B)9EG*P7DbVM7IjPTjc_`s%Pl)tKv>nN{V4tG6+lZzFa&+EXY&~fPNvW%^C-G=vBoXsbo99g-aQVo_y%?}B_g9hJo*rqCW +50}%Zm(~!%aGE?9>`+&IX(bmq8NlK-P@k1zY +98Y3DfGh2Q}3(3Hgj#)k!*v|lp!&gmn_F~}jbuHEk2d!R{`5r$#V8F~C6CqGPBJS;@h^`0?)i1HvS?* +^lw_$>X!plx>Yh$>ai^K`;s#_H?tqxtp3@>)n7yHtD1t1XFy1pLvnLPobi2U`?$C9+Gge%3C3U%|mqg +?_;J`=6>bIZH=1dBZ72C`&;hC9%Iwhljk}$h{v~ul?|_cs7=G7d6Vl4X^T2v?eh8ab}&)@xU2dA|RhjXEZ4tlQdGUo;fl(boWQAXLWMiiSY4*&_@aO4tK8Oc6X1GJ&+#Fb2PH>0rFg +(gY4Tk++Sr19dK9F_E8w&MU6Nfdiea!@WW^6tF{u0A;#9@z~DFS6V}Pc11sEoTDuzza$Q@E^9UseZ_I#up=)mIDJ;^YOn;Af@IxKEIIPKlv6s2$mwcQ&##q!Qz=3MM; +=^Fy-2@iGe^YDJ-K-+&nvsFK(EPUa{4Nb*sa)3hmV|rPZa&oxeP`kp63<##R`? +3WjH(e85C8RD>9#~*tC4L<`d8(ThuU%sq;UcU;g~-7aTf=*)M5Dp8h1tvSz>6ZJ8%$xZp@~iO0~@fWg^^nkUA09{Gdmy#zN%V&#QaMkH)ZGJeP5mfx6|NT9G0#5b-2}1 +HXK|LX~uw-we@{K_a1tV9lj)}YYAi{K4^T@31QY-O00;m^MMG3+f(T7h1pokw6aWAl0001RX>c! +Jc4cm4Z*nhkX=7+FZDnC|b#i4caCyyGTW{Mo6n@vQ;PfN`s*%2Wb+8}{x?pHJq#1@GFce0jY_7U^Bt0 +)1w%@+PJ1NOd)~>+xVv#!MJBQ~^H*Dz8up{q}vc72um9IT|Dh*zp-C0aogg@mK5k3DD +>M6?nr&N-^us)J3)sYw*|WU`G>3W^1G|c@2_v(CK_vDVF+Ub<7RWm1~F7a>onjcBYkb*8LhTug}F!)+ +QhKS1i_jOW!5hFOqP?*4-WehNzIz0&p+Oa +CTRwxRa1@NzC5AEjy%0vReFF}Gpb$@LRg(ts9quzu+9pS@&LzAyi;?k`2vpOiAplen^hm^kklvX_nMt +3upWG~n$r@Uuh3cI5O0;9+> +4M;Abg1~ynb~kc@b*m-i?&PiC(EgkH5n;J+}rs;#kMpbl&K3H* +(#=9V0Ij&*H3_j4qJ!{l{F?qFf76BYPIl2zF?b?g%yQND3LFb4da?{6}4mb=Y4cT4&jE)!B6tgoW-T9 +ESu6UFRcH<&55lw&zH0H`MclMH>n}V7T9qlP+}Xo^)e@pwT}(Nc|ojPy>s8aK#yYOB%dy1(! +`hk}P5g_Pi&Pa$bU_oRjdS!YZH}MHCDX-dL1_enROovS$Pk7WF7^9a0|QJ5zl!zNx_uX%h1Ri)q_xkm +-on4z&wynB;t5S1rsxW=>k7)J#SxxJ(a6e$Pxx@X1eN@HL*D(wBs|u2kV^WlZ1z_heYxsV@6lj)8W_T +NpJV2ruo}*K>hk{D@=L9P9|YIc0!i=wlGCD#~ID0Oy4r=gee*pI`toEGj1;2yUh9Aks1AWOPnF5HD^9 +;U!$jy(PMCR5378OhC<=@A(v(rjN9+z!1$a@t@E?+-oORR$6(HpD;rr0y;%Zv#NA=`alc!6#pN +#xxzatzWhze^tQ(5gZ-GQ@)%Del@BwqbdpNZQMVT69{B&6lDR-F?ycfKht!OEZyH7_v0qGE|Oy{aJK!aHgOpCZH*c#Kl-bAAkb9xxFLQvRqA(;^rOthiDkv=xG@s#?d&8WKuI-X2vS+(MkE}&b$SN#u--{U~yi~5LtQu4 +w%ELV9J*p@~IQkd&dTh)5`x1n4RUh{YR#FIoE5+Wv*O$P)q_V#;PU%08mQ<1Q +Y-O00;m^MMG5Shu;h11pokQ6951k0001RX>c!Jc4cm4Z*nhkX=7+FaA9O*X>MmOaCxm*TW_336n@`da +Y`Qo2}Ws@C)%|VId0R7(nU} +enTd2dU}Sb~{2k>xD#)gyA8uPZ9e+o=zLI7%Ss9ss_3f>sVvzZhdAwjZjN278C0#E@tuD-CO}VrSI(h +4qey<*e3A$Iy#wqi-TCLua-45OOis5soEP%D~&n4s1I#AtSdG{$S4Y;4HD+JzFr0c-K$G$O%adZ?#uL +SuFT}!qUh-iAg1N6H@#j=%Na(+W<6p@e4J3T#xR-lM@0FGYMs%oMX;%6y5Pg2k>SVs+qP1VyVNet9Wv +F{v?7=r_G7^oyizX?UGMnEGE7!S8N8v$CfgLu(TSBPMhgAy@h)21NU{(!4Cjg(ED0zpeFT1p%c2;Dhc +bzP8K*iiHf-LjI=9eif;0NpEJM=|c2!h{EtisUISop7A?Eg2zu&uz!i$@Hh>9n8VD6xYzh2o%kaMUHY)kk<8b$$ +`vsaI5{1?9yu3afG@}=I?{vjP7;oZk2EmYm=#u{&Hj1Xev#Bwm(~|zrEd;z`g((Fo6^exrPfTDcU1O* +PxP^-=J0Y%`@y!%w|?c(SHX;>(dn2f@2nj;wU$`YOrX}^ld7Y(oV`E^l5Hmeb97i_zK+e&q8-HQqedE +|ghEx`wc2s{^lA~i(2&#LqxjE4d>k +%x5~>@WgD6cMF5+4H3s5K4O)%00+@l&j4>ek9Ahrf9=;a0U0S%8~y48ZPj>2yQd+50kjfl%gb)ZQD67 +=t$38aPBNxp@)e<<@R&sTErlM|0C@>q?YNR`>M`>WS-4$L0*-X0tPE!X+LjwHk$8@A;u`cSKU +NIW`8Lc+K*}6CXG_1k4Up=R50wHxk}ppI>S{p8UyvtA>G@JKKz}mxZ2;{eQSMEI#6jigDU`oU)*LIFv +jIU^-EHI56v9(}2_wW;GXC*p~*BI=()P>X>>oEQuqC;IWH<6_SkP*6S5lwU=FhZM_XGxEx{2M|U2w$@ +xbEcsh#DlpEqCY!8EIy(^f}dR!je>^!ik2>+ygoR9CAm+F=C((b)d2gJalK`O>I+>A}=7T<vad +;wy$MNjO@;ef)v`7#@SL@4M5fp^eC5$!N(}XuKANQPdn2mdgWpd60Z>Z=1QY-O00;m^MMG44Hg79>0R +R9-0{{RS0001RX>c!Jc4cm4Z*nhkX=7+FaA9X09Dn{4WqFP+o#>e#l%+CJRl!UBifnaY3%f2#q_j+o$7m4 +^(cg>dqo5<>VP(NEwVy@J4uo}DMAR<)>u$5&P?tq!XuA2T63ehJXQ$G$e|dF_E&%S}>vOc~FsK5wanuLebvBE9vKpie|3=C*8K=h7NtTD!OVdpJZ@bP^7+ww0*o +mB{Y67q0?L>ZVn#)^V(K(+|y9QE1SwbS^pgJvO;?4bP&A+-lg7M)E>K!E`v8Chy959LL=6A{8vpN#xAonL9I8mr$lA2U%`vWk7#bW|G;}Y+Ef&T^G99D%6%Q(`7 +E)zS(bNwQe@Qh_72wEky)(+f88~zkd42uYde_{nPEwHxs84FYBUK+$f16rcu4Ni+65qGLhL(bv^<7k@ +`k%V*V(qRjpzrmw9Z`MIjoPJNq%2OqNBeHGE1D%?PI*1i^dQxD}`~NFP&KkS-C@F$zpbawRh0TvpO>& +a^19$cxNd3-8Imds&$Xntu-up*zX`tXj;S8YEu755E>h8d0_C19DT)!H#>D5C;KzMM0Z=7m6?T;}r!Xc5MdS;rnaiBcX0I++O0AS-VV;m(@z_f@rw +-`R2pn64`jLh*2s;68Ka)*j%O?BkL;3f#i! +~`Fq_6Z5twy)Q+QV>YiNB*j{8-(+Ji +|hzg&JVk@RilWS$Tog%nO!=zcnuIJLyZuF8g?lr`Yv<*(H!B?I&%bxbBHx+S<(LxuCCy_@JQqm<_cCWiz +$MBwWYp~5O{B-+Yv-3IOO4r?FyLO*Z^YRN#1^ohm7VFYB!1f+SpD!sKPim5O_a@@|q2A30mFVvgo-E! +c22pL=CvDC<8)`>>K4uJMgDv64q4%Eo!?2ulVdo%q7{Z8c6OaAs8GJhswv%z+wnBChdG&)i*of{rQBO +6-DZ!uQ%H$&|L3LOHl7SNtMCO#Ke-X_V0No17C25A%eZ-4__uMW=YVD{Q2Vx+y#%zEqF6O4&Vqmc`8$YQ3cI^WL +jR+Nd*YwrG1>qrF7PJ7d~a$BGHJ4wh5hw-qj31Jrc4-O{|8V@0|XQR000O8MnywZJCkPja|i$cy&(Vq +82|tPaA|NaUv_0~WN&gWa%p2|FK}UQWo#~RdF@)=Z`(EyfA?R(X%CZI#b}2<8B@@YWa~cqfiA@`WPwW +Cbj((w1d(py4g24B{1SPR?6|?Or|H2F$>ZJe?svx{m33QJMC}?bt_iQ2x>e*&qj)W7nURa%-<}sQUY@ +`B`N!8kOeSkhJ6qJZp7MEpn~`^K-oHLOKl8)1*fft)ex&wav`GoN-_vVOgGDs$JR1_*FM9b`5ibirp$db^-61`Hcu9y +VeSI^KEl7;cINO`Gmk@=PW^Z9b~?+&CI`8t4pwFw>B-%x8E_jEkVL$SyCxsS%Q^mY`v+Kl_beC;zb2B +5w)R;tXg^_2_=iVg?>WYdMj3hE2(EFSb>~P443m;S~VrJEcJ7Gdg{5(nwATdS`CtytSsw{{8qQ+>Z@c +rwez2~*D_3w)JXB_rgJi?ZN2!&mTJ~<(3ndN+G+<*GxNEIqL7M;rC%XibHOAu7%A)e6RFqc-K{v4jFE +ZE*7FavX+R#oEr9ojAW1)GY)!$~z@^rbXAa?kNYXVcj82QXE|F4aT$&Z=(dCA=bO{cUPPtlq1HW80CE +bx)kQ**mHF%_C*L1lfKv{8M1N~}49<)?K&jYfqwPTQ07wwh>b=Yk~!H+{_eq0+$V}VBd3pkf0k*Z~Cx +zUW)x~+$u6ObKl_)2YnA&j>-Tmp2JWw2mG@;}+ia!{UuMbH67ZP2A4AE|i()9sM+men=&Fom^w?o-S@ +5w&1Rj1xVhI984&Kg`k?fuueuUIO;75LZ9qD1o(6A9H;TO!Z&7RrSe=DTM9~N+3awd16<-EoEyFK|D6X{QAdQ0WdcOXimeOGflAO&m5bmTXxZt +WN(f~77uCtNsGbag7KS>s6n7PR(x!=&j*n{wD6bx3n^!vgU%+u!YQ5I%5oX7hh5GG52GHWC0a=SR5vn +M{9xyx1&bM2oYW1C0jM32Itj@=B$?mTRjT9gTuY&7}~Q<_kT^wEGHsAI8y7nQ^5e7MsCY5FK5kEhuXq +TM15sw}~joSYiwbA+T>v@himnlRDAKnH$tw*_==(J(SJ?!#yZ&+)DY8vi;@U?)dpqul&9mUkGz1a4!= +9Wr{eO(xAPF#5)b(r}J&feCHO%q<@9kjr$rg8?4&$tm~l@6GKpQ65}wGsaU>KUKCQ)g3y8z#bN|$Fh| +FCyy^r9{+uQI6Cr8U?-+vO+swzN?8zE!g>X4NuO;Eq}uIL)vYbqB!jKTVn4UrkKTC#Hq^Ei8ZQAn7&9 +5_2P@(Z3|r-aOsaG5 +oKlyn*lk4MMiqTS+Uurm~6U7*BLVzI>Kdd91a^?bel@(f_)ACf_BLtBFRWXlD#5CUEH*^aW%nSMU2M^ +MHe#N%L;s*KA!gC#l%q{>PMIk`@Memz&_sfUA`QTmoEf>pLY}nx=_6f2A=S4Bp|)V!GK9T9!7faf&`v +&02Mu@_5!1)!(MD4y8ZC5$AOkFH-$UT4vq!>pbOi%yLd_bK}Ci>cNvpJ+eds26YU~JC`H^hG~0@XE&&CvHxfK`bfKe7rokkWIDP&yb@0Zh6!CijnI;;k9SoX_gS3SEEfDT&;K;0_lH +O!3QZfA`YLfOV}C~!d!`b0FKjHp%be1iGRMhosx*lu{aD#jgSdr!!>qYmkn|D7ki3Ej2qFlELlb_U74 +>$c5`DrWUbJNdm-ryb0zZ8d^vyPWQr5FZ+#e)Cd74+0acES`@oia4L-kx`Cx3AVJx>%cMt0PDqP1e$3 +yJBz)$WMx^DOh731%`_RrU97^xXa%<4Ne4RYjS*1fNF8gGJho64j#xQ9eT_J+G`F)M_$)vQ)1Ag>L3( +C!4H_+0PXm|`d|z0yxxCx7{wtycc;WZz`LZj8cV@=Q0Qt!)4klSTl8)* +s*Ht2KXjoYC5F?btuK|s{LB_N)?iL93-dzuUn;VAnLZgh0|MU;CJ4z8mP +Zv$go?}yJttyEpz6QWq<2&KJ~>VBYF@pmD|QpIq!J@-Q_()u{jNa~kCw_nuy&!7KVQ5$_+jceNOj&Y< +aDKg^L0B^>sM^?U}PPk4oaJ}4(K2*-;d{fvBR9un!tnLZmG9Ib +W6wtjCMT>*`=iWC_V4C^HSJRIDRh7nxs9ST-&r(nS_g7i<__FMImSfz$H1HP763db5Rt@oR +F_c)6(mT&LOjbEkCo?a6a_O+bQ>7MbM%D1c(Tte_-&pwdCy0`{%!$TQ-eBwEnu?EwcBSyLVBWC +ptQ3_JXl@Bbp~S8?KoC+Pf&Xy-VZViXB{O=8xUQrCX}|@6aWAK2mnS!LsZJ9mY04U +002CH000^Q003}la4%nWWo~3|axZdeV`wjMa%FUMc`k5y?LGaI+qSX4>#snVA4(;%{Mo*~n=(_^aZ|U +6<8j>Syt&>mlmy+;rbv~fd{%Gne}B7+uLTI|Bq#Cf^p%;MDPRFC7K`1*VgZ($ZPWH*u`8>-th-66ey@ +tYSXM>XNt*<@TeU%Vn?LzA +Za=Tgi2?tNIlsujD^=Qq{xI6CuVku`Xq`f`7{{x2dX}?t>{)c03QT=$oeMTy9k^b%XtW>zewm*lx@E@ +>Sb>*uQ}c3j&D-CY=a)-u%z2=lQcgJ%9F>7cak=QPR_TuU?)NRaGo1seXN}dP)RP3HI#;Am#vxF!c8Q +771BY>emlaC%@Tk4eVcQ0GLgt6NTZn+|Kj&vR*aqye*ek^Hy$KgYauecn!Z_%MS3EO!{_zMwOUR?E6* +}oyhSe-!!XTB`5O3Qf_D@A{p#fh%d>CbeKIN6K5wa^(j8F*^Er_?P +G!u(1jR_5OK1H;{&pFE-gSMs-hU_it7herzlSkiSIu>pu6n9CN~HoTPGC}t9OfqRL$i1b6EcN=&Twi> +#l5ct4w~vvk|fWrB#!A?6tz&m;u_d+*~+4qD{)=+SHzp0P^>kFGE}ye{jRNjwktc}$zJhZQLntr`Bl- +S$c>21)FO&3NKi_u_?Vihd7gMRJ%#sjvFqhI0A3^)wlm+zUP~vjZd&Y;LS1$25bAT?yh9LaGTJ#=byA +#PFlt*#nB%Nh-B8UQra6erzNnW{H1N|&S(w;$UqGhlucVRF0;`@+l$>iXyEDrP(2_`Xb3i^;kEvf5dr +e(uB?&R{rrk+IC~OQnz3b#^CjMApmla4$#3;lP*cE1k!b*Xbh>ss^;fL1^`=wXSv2xMv}u +oeybtmv0l2n-TiD3PZ$SS^+XG}<*AV0@|#xUlRxd~INCVLWQ_?A0D-MUB(3qDfs~X{y@FST^WDq}P#sLo`tlHz{ICVtki%eyEzwLtzysn|)4&ON9D!QO6$mThOklTdD?tr|mMPoit}2YWm}q`0s_ +SCkiSAvw6{x2{4c1T>iaVoUT3bB`k5Q_=0VNFbPUJ*!V#_5HRxyMG@T7U962DOOO& +s#$jPvbito`#=Hc=zYLzU0&YD*?kFwgqG)5{igaHse4bex~*8(rsm*=IJJYmpIZQuBq|$g$&*wXMf;y7yx_n{p!;yLtrzgaKUGH`G#$4k+?s-|*034!2r4MUfUL +xf*lp?+L#9>sIq;7HOVvM9zkYl^C;ORL2$)8<*zDR)R`1bL@9JNH$+VJ1H5YFHf&}}z06m6X!ZJUq9( +5hC3jcNu3C{AUKlo)t605@Js|;*5@gJ~`2fb#4g4XjTe7Ku# +F|di0q8&zL@PrrUe-GjQZLq=mTggjc7e{Jp#}2}ZGRjgSZOtqs4G9v8VwKyJ7F&xRJ=nPLK%)RGg8L7 +N0hxwTo_roghd;eA)Y|gqX2Us*Qun3<+T82k>kQ~AhsFL8L5Uf0HwK1oNocI-kI1`o0BB5mi)zs8#pr +AUP1T!edr>D8UAreFk( +5{@fE8X3Fz1Ny +e10`;mCOdD}btjf06S#zjh+KtJ>oNkz&=cniUvX{6fJVtktoONMX#p8ow((l$+f~==^4FmS7-tLEC^@ +gEj490j6b17S7BXhN$tt_IH_JDtWVWe0&_29)pmE)X4Phu3iSHKm%ZIA!!bAh2#1dWhs-^VvYcJQgz+ +J(y60PFx2baW&zeTpsw?wFldi!oGAr#0PKZDv3xfZ4-64Es-)lE!v_!i^<~uE7ISKyVqfEO4_#Ac0y< +5qszIsfE!*6REf5wO)z=bWm$W8D*X>*v#D}5KpXo3uqQ(hwe1H|t47|Vyh +xYHNFPX@-RV$2KFG$kqD67zP)P^Ih*IPM<*$gVON71Qg^8oOg+%)*+CB75^GxJ +jdsk$10at}z62WQc?zqS^-Kiw7XBTY%D}`3JlFLfGNniSIkD#e6B9Aibjv*1G!A|w-&1!^<$Zik;C}; +t>`(!)&6~~>7w(?MmWS&9-%Uw+;El2t8$kdv#PgNJ)f=;cxxh>nd&48!@n;Rz*P9dB~#;c@!Z?+z1BJ +d5KG~E8+)(6XDl@{A=wZ|8=%JogJV5jJi;iDP9EB`5n_SQ>ltaMx85%NE)0)CZGTzzlVevL@|jT>I8& +Jo5h!!g&M_9G2=e-r3{*?w{(b(3GW#bHzaYh_l7>!w`^ghqq@KPLSDl?jinu0T8-pn}SVHes!WzHQvp +!1i}bkdWwl3OXM(y?^0_19~lnJ@{d_ptS+45i|%{7}wp+pChv0ik?{+pNlxT4Jmcf$To&I4|%cp%27|X%!YWSd@fohG6}&Fwd?n=hD}sYlDm +lz;U6Z!QU*NO&t!T2n4mXlNL+l@$qmK$a6X;h+K>>vegtz#Znm(FQGAgM*QL6bs}ds{i>h1(Fw;oCjZ +?vwT4=VQug*}l=$2)fH+2=bC48!}Uvpfz=3b@4eh;RO=>bLWsElN!2M%v1lMw6V?{$K!B!-KR@*ab#1 +oLC61U_t`G}FO)Kc6&X;eMY+nEfk=FE@5bWG!UFsRjj86Ns7OpiXHipzPk7k!ap+tFk9sH&uagjC?fL +9z6$~aU|(qV)f;cyNUCb^j6-*K>Mg6Q +Rcc>VO*^B>MAO8UGfCyj}xJ|~oBQFJcQkh>wAnr@yyuiuv~2FX>$X0a;V5+_Zh%1Un#om)c6CLt1vRD +|bQoKiC*Im`$Q;dppELF-`n7(zOWBV>{+Ius!vD@++FBd|(v1qr=jIn@~cxw$p4CQkoYcvu?$Q-WZQ7 +Ocz`%eArZ-qF{VK8{p?oVc0N>E>{L4POa0zv^T{bqo7oAFjy9 +Q-}xFuJ3HyecITj~nPB~J(i;>(%EOv<)Hct)Dmn^3qe>F3zm*x4_@I$+^r=?S#`@7`MO4;g@_To(MES +H|f_!2=>>7TmU1SPV?prD6KyIQ)(KnlNiR~87Ni?_47#K#v@=Pf0ugOH41+k1~D{CcHf{bO=bTXPlwq +uZn=P3Lo|3nQ&u33JNwY(~;RV!<@aK?Feo**rf3*(oto$BPaXrc4eC@2s;`*fm32gb@-U3e-d@0)iZ5 +6C3;!|t7m(S-j-N6HFSLEn?Zn!0 +yfT2YMzkJq;(WBcyxON2e*Q4NwWZo2SEyI!{K3VXkK=H=%#}`N$sl)pGYyBATEVGy2Nfb%67UhIY4RZ +bRS}viqoA%8LTShx5g;~K2P?&cBT7@*&6g$0VQrS{?PQ9ev(8BJWpnQ&M#T8y93Lyv(YvhOQtML3e~? +_O%1vpu-|+Fb;PBxMo5-6VFb&;TZp(pMAb+=7ddyHwtjiC8`ECvWPW_#ZV1s3_i@{JD945hMc%X!2^% +4{pi`g~(gw}MuGZo=_UBYrA*eBp}rEg%h?HqZW2F@@?se}w?+1BGhA78J+FEe{IEhX@Q%fSQxijVYwi +@dWRL81#(P-|b1v^qY4m<4|FvjU(}^|C)n=5L!)3k|PVgN2tZ=Gsxz4_DT9Skut~=UbQ(z8DeO2CK0^+74#Lr0E|sm>oGSEoV}AR<=k9|$z&~Irol-)eZgkrhpJTVeD)}B{OmvI +r@H|37il@rF(JpD-%cdOYHq7xMg#LQkAJ!bcsnusmbuB5YUK@Um{hI0EXR6Ox4MLqnH`HMWl3 +Zs?jl_dY3Z`3Lc5+nlG^pavILbKQm^04iQbxi5MhxOT3w*B79Ft%K>;&Mc{mQ48tt0m7?)#JcD-K*hY +R-5CDwS#uSNk#xPMrisrz-9R!l$eX6r8CqX>Yfb{I{2)0=|*G<3~x0Y<&k53kg83Ch+9twnnvjqQk0X +7(}y9=>BQ)%r=pfvfi4Qq1}i4_=&B{KBP^_ri`5FHs5SW;3fC`zve#;AdX%NUWv&Y$0Y>}oh;53ylvp +K}o%rI0GU96|b94i0S9YqB@B^ub1Dmar8?UNc_tV973`I2(^R58V=Eyf4Ly_{BFxT&GIO;;$F0cMyMkccCQ;<0}VDZ>U#XF +j&?7`ZKScA?iqZzEO-9Q#_4eG-=+GBy&U#QSyTF3^ASIuHh67&tb0K~ZR!$mRPQ^FT^`mz$e(JU6b9$ +N1K2Z?w7bfIH)u#IbmdF<2=a(w9ZPZ#?hX$wWC(*ZQ=%@gWtO_x*iW+6PXXzwN8GAZ}$jN+~D$#UZ;TXSA&&=DX7@uJ&+#y +l9#LQ4DXRL@{0Do)WU7oUF8}KkL|bub1+&J2pAY~h*oZz_uQFe#j)YRnHaA4Wr)?{}@XgjL_jgZ>6$jwA_2bhXPU_0WtMSgMNa}-VTmQD$~3S;gLHd6s+rc +9?1w+8xEV8#I)8L5xQz2;!@YlGF^`vx?Ef}uEO-N8W~o+MK2!j=Af1F!@Tt+-CN|Ycp0FB!>*tbeK}X4#6h}{UlZ1(F>%K52-Ls2#Y|m=rOBX@@V+ +ce&U62WB}OGgWtsJ~WO!Fvm|JXN$&d5afX!9PBsS6m`5qrg?X*GNkh*=}Y@N*K^W>CcgcNB(=r-eUkS(_za-36@an3;->6e~Dzv(BZU +z{k;f27R;=RLxCG$Nz$Ing*U&(T^EALahhL*r~oYdK&%yt1FZ6c5Mu^ZlyG^?~9DFB3hoh;dm$F?cy5h5--!Q8FiWHH>%ZFf;pjc(kK|`lTs%M@Qnw-#G(4A?k^)uM#FCmFqH?n`86M&a?B2IKY9K#eK| +W^qy0v_YayB$>OVEIvN=2Ppqqr|T-dgJE6K{0%^2tGml-XVIYLlXiYyRxH8VN- +t{H`iMB!9qC(mqTjW@C>JwNXqY4N^`ng@c#DKF>I0V1x` +{()i`!baycKn`ReG=^uU&Awv?-=^`Y}&VsU@;fI6Rx*K)a2jjm)5Mpfj3ReL?FKWicu2={ +EK3WY#0e1stu^y~<`=>(hUBiZyP*-1y)NJrX72aV@Jk`u>dH288iF2GfMchkBO%;v@Mpr7+WOg~{Ta! +qbrGI~aYs+FvWBZXyL^0|8MDs-20{RlA`5s^c`q1)*h&KQzdhYs)z_Z;j_v)Z76@nZ0IZ9q`{ehnjI$ +aa8y_$c%OChfb)zl8wfkxM)bMV}xChF0gt&JBew^dYC9e?L`>F`XAmG)+Bh+?{m)jBVA~)T7&E``ptz +TRzn_e2TPXSqk#;Di3O%80f>DV^<00^5VC_3=}0Zlnu>>dwGHcw1m3=c4lZ7-t +bZE(ULv=KoG>4+^1?XgIhJMSYOwnCqUN?n>CAsQ=>QjVwriwfuKq(y`T>d@+%Rd`?t@iRF;fh#F +sa=s(Y@YTccL!w8*KJGHJk!{*Eor0zDWre#YDTSl#5u{AR=D9BrytaBVG66!?U->o~{U5hC2ln#rIf# +YztD8X1O5e&He=!(&;LF@B%hCk?cuAvt`1zKwfJlH`@T>w516zAg5;3jIl^zH!&;(M^A4AD)IFlAIQ= +=|c59x(*`|zm{EzhZ8s9;WCEv`1!KaZWo2Zcib-epMcVzE1)!b1LlAv1b%Gur(cB$Omtbat4ekqMV-D +c%1T|SN*q0ULU0hls!s-Po31Mt)n465d5;bUAfL+4-ly8|Z$1UVs=i%l1sKXwra6tIW48|aVps$CA>h +G`5(L7x8jcq@uR<-62JA*eV +655O|*NTMtO?;1mRpt{9?%(rZTY~&a2=XDW?hU_+`>3eLuyMHu&+BBkn`~w-CJDC%j~sx^~1Z!@HVpH +IO<2_lT>yf9mbgIDvkV`-{znths(u?RmOu``PFE%-8?a4x0Hi2`?OeU?cV+jL~c8e);mde|ssV|2Zgp*hP|Ev+mU;l>VowFy=#h({Y)V|C)*P;Y>W5iN`bX1lCZ$y>)ObXe +U_|EuhP88Plb1*--LZ@&K4q#%sHx&)wZ5%N9&!(2qcd1TX%_iyo8qY6opC@O81nFD1~$VY^ETe@%d&c +5QNT8{?#8sjhKL&dl|1ezU{K57X)}qiKu!GMclMh{-Vh-EQ-bUD2PIwc531QR4wt7*Id|BHBlF +)rUK1)~Kij2Bzi!fVs(FJ}`1?8B#N;_EM&pH2m}nK_C1K6Nxl^F9At6E!42SSs+mqwoFnzdN7?%{ufY +70|XQR000O8MnywZqpbi&6CVHoR*V1u8~^|SaA|NaUv_0~WN&gWa%p2|FK}{iXL4n8b1ras?LBLA+sK +jM^((Nvx-#g%w6spXsDi!7_QvNVyV+VRN##^33L-%fD-hrTpk>D8`|a0{dGrhheAwC~R~MEo5|~EMOi +y=DPft%{(bTIbyPZYFYF#&7bn)_40@rQVWV3FScguQyvOt(wU6%Q*E9$D%u=D)CH+ipgBCx$H{+6rf= +UJD{%B*d3`@FuDM2jLXEnwait6W3j?|EK!85ggzZmElAc~SD+ZrSA7yr}MU(YNpOs!O6D|4`5FljxF) +73g+tn{Wx;%x|;V{UzKrjT~_kdJH%VfRGE0jK7haeoHcy$rwSfUPR1wPgNbhZqA2qgh9HUV@@_hV!Kq8t%Za+ups) +BciGH_fyJE5Zj)ooxm{)V|57iyLY3j{dp;#7o%M$)Whc%l2w6_${Pn-2t0Q`;S>0s&|kuEa ++$UFZ(m2L9>sXXcScE6R2>Y2ZYdT5m>RBlB=3&^?oHlZ0)uP50#N<)>gpQgqO7y-`sCz<bzez6=FQDy3OEQy+Y0go-y% +Vv|0rAPo1<&BaFVu6vAyphM|ZI?C3boyqKcblf7G6(4g;xgyi#9ZYcW>cJ+&dpqKg*xKuW!C23ewgKS +^ZMF-;C)sKco)<|eJc^mSx*55INfqpo6G*u{h#WhLWw!S&Y`t%&pm6^+;z^g(v_aeuB7Gz&8DYG_r7Y +(Ja1=BLCrmnz!rhAAN{3n?qOn{OeP}+>gvwvKI=-<$05p^a9*hnYV!EH`0ky +J+rO$;4b3#o>y^=h1}#T7mh4GXu@~qcX2X<7iuNq6Z)hPOMycPE}7#C4yh082B}bYQ+qI{k0&;9Q8z%hOqWI30PdX-r?#1^*_KH=%NB8Pb_AYyf4FQOrVbM%^09&Xwe#r6bw|WDdqI5sD +O|wms-@fvr}6q+q1C|MWdfDgoEGS7xce%cv2~cGk| +h!etYe#G@aXk&G!Fba^dps`rP=~ +1?He5ytu3C<;{yhwcYoT~4nKNqCtmo3zGR;qs_J5+HR(9R(6+P1=v60cN!D`=RKTb|q{c*`kvwB +Ikf1zOa1tN6SpYb9G986UoY{`0cHv)9?~-Y+L}YsKpmAUs(?TE&w71W99i!%z<2_a9W(i>}V?8VSNFs +?1QzG!#4Gx(|}wlQ|1N7n8q9W>7fP2R6b3f0DI{{HpUq>oq>UopOf3|ihU9ZJIbz-Gw%NrY_tSO@X!-`Io^e-{mP&94X#T(56u?F(sVzg$AXsKLi${+%Frr#i|}L>VX=yrAa?{32bm?K?`yQ0%hRI+0CJ2N?f~@E7xI2Tx9G|LFJm_S>eZn|>whOgP}^37B{KV8y~V +C;COd!{0d6>OYSk#XGj)CxXNM{_!1h5{>tWyy-cb7_u3XZar6w-;CdQI~;hA+Phsu~ls#v03=Xr3&^o|M^Ac%D{i1}=C8dyNm? +o6zAWL!rG7SU|`uvC*2Drx=UBRCOetJD8;vm=EVBZ1-| +`AUKUrdcM{3>?eOCeE6Po0`&JPjkBim3nJ3Z1)5$>FFwK?l40ohki7QS$52?|YLu6#Km<48mF#X|N?8ePKD9S5XE&2vU+DQuxG_mk7Q@1vVxsbO&0HpE#J|+>L5Lz%pNS0+6*(V2cPpBF;ewt_XE-6)Ls*2>m;-E*2ff1 +&O_K!3Mji3OvRpu}qnEZV{6J%J_#{C__C`Ns!M_sbV2p)zgP2Tk{6&!9s()XNjdJ7@uep{vrlX-KB+H +#nGs{t24&do1n~mLy~W3nP@tvax`pJ{S}s|;B%4c_Dja>YYI_nf5-0p8WL^mFCCI>)>)d~`_qSF4i>JR5{jyGCxgEb0BCI7yZ|Pl6*W2>7Mrq+=y6wx|MFjZBmV?@BS)!o!w5nvA|rrA{PJ +|SZufS-`y;b|2fR<_{kz~E>Gte|lZ1b{^0)GmT9O^C$~}fnJvt2->KfR+;Q~t@N+nr-&h@v5`tzNvsD +q^P(H?J>53+3n&Q*cXwXoP>zsf$ur`(PS-SKu$Y(SBOw1G@6G!0!!x=ibBJG!ter4lmF5ZhVefq2-6< +f(BnQs_}WcVWz8pEpcA3(tk^O+CS$P6gPmeK2niEWlrZ-bmo!PMF>Nz~!el;-o}E9#eFF|t!V#ZY7 +ObUbyewx?6jzp;WJ_e=w-2<+~do*D0|Nsf}gySQ(haxig#X>o_7Ph$f9x9E>mxwX*~4+X`Y*tm*ylVk +K}^i$Dk!&G{$F&ybvKilw|yP5$Ic53d*;kBS&GQbAQXxwkaboXEzxE;go;R+1AY=Iv7-xg(#LH`Giy0 +wyYsQQ=7D4r^?h@C;gqAAuwvz)4Mp3i{u$`}dbDe^FN43<7gG*T%HIDs5V7MgVanMlI3;AfMApBF@VT +|ZQ1ogJ#g5l=*ooT~?cV=|I@+FH*ica!J|i1+iaCoiHmFQ0_hAVrlm+vx_(k~R=k^C!^A3=$DY68*k- +nMB_eFQdGh4F;SYv?U^|_JSaf*$Npl7G=j$r?Q{ZEbH;wtE`-DN{o&KUR%`_(UD9sE9Yj^94?eW-T^t +ZmNf~6fMLe$EsPy{JK7a*0i$jfi{gW1`E@b7C-^C}aLVQVcp>Ju-tDW=?Y7JDpu`Ax2EV@JuQ&X4$zM +P4*SGxjU;On~_`2?+JUjjRmtHK;4xhqf^vdZ4cY^!CUEm&Y2e|#*d~7|m_Vje1v1Syf6bmY&_@n34aC +dYK7>~6F0(1PVXfaj*rgI!_VzD%h&e)_n3)IWIGmFtjuPNur|yyOS!-{oeN;U;=E=cr$Wf<4}kG(827YB=`v +`-U~&MRyA=gz(DI15~`!jAjgM9Ebq87Qk)!oOttDjq8JY)8S1W&U#KYpWpnCCgcqV$oT=Sc({$@$P7hr+xYG42!QKZK}!?bqV +KRR9M?p9%!TzQL>x}ij-^bvCs{Oh_}M=hpo5<5XmPN=Lv?yG80*hLyQ*~-$F9A5<6hyo7L1IocU9{)M(;=!Ohw}n_EQ~V(l+xQ0Od(g)6bP4VzXcTzsJbGK +cOH(9q!Y@mia4Zji;HS|O{xG2V0BE^;gq)>w<*-8-0Xk>FV4Xl)nPk~i^8#(f!-IHVIp;i&DKmlorq1Q>>m#wSUfB(kS>vgbkbU(mtYV&+IyY;IEj=) +2RYBKSh?yi(g?a5g>7JlVwZc7c}knvcCPLmJNhZg{-=4O$DD^e_{op)em}j1Y-CcN-s}iE +L#7loPfR$u|KZ$ENEe55pm?BB+u8egkxarAfCn%}^|6TR}1`8^J>TYMDd-3#&IH%eRB|TVaxMn?p@8E +{-Ee;w$ALf01nyTe{EubGHL+QvNpEBA;z#+rrYM9gJ;(XWoJ`e{+L$xw&!ZyUg0^Nf)HCUU|9n9kjiS +*tyRtRU(Hb__zoD%&$90X3Kej2L_0(g?$Gz_Stah&r+e*cn;$Iyl78#9LS9J%-q6=M<&qt<3}3Q@MDn +frxUx(lWX?aJ7)h}AR0$caeX-O*W+RO90>F5i}i!xRL)OuIsdE~{DDjfPT;ckUN%e$dO9pu1hg(7sF3XVWcW_Z-t +&vD@D=+y0nx4Ef^!y4RMyvH)@O(2Y>qGNN<$nZxB$Q|t%R+Axb_Rd4jnq&Ism(5Y4t!c$DqjRKCxH@gp7dlKP>zJJl-YqO+KXXc +bC9l<2!9o9uCFT{PSS=3}g2!yBppw17=^TGOP*vxp)>F_P_l*Z}S{^IoKJwxB*^P^S!v!hM^y^&yHHyfMr?9;Ip<)A1KEeM%sPZ`11lVlJCw{A( +{dMw>_5-lb3XJ3$m-A!Yuri+5Qq!J@j}YdP;{XHx+C|o%#}X(tCPHtKg9JSUnjn*+LvaRgEmqnhRea +)&1?dX^EH!)w&rEY#Eiha@XoorSH~olDy&h3!zm$^txx?qB0KoAT84CUJI3TA0ehx|l;6Ac5;{fAy#6 +I<|hk-%*Q}5aZ#{SwvgQ@XQ*n5MFqV)%m*8Idp4a<%@Be_q~d~7qkF(}>i2ClyIq2Signnn+sI1tYYK +j`>CrqEaiS4qf`79S-UA&v|jvM-?!Z2;P@(Z;K5>+f7-tF|GUSjfYK6QRW8K|iHRFc)g)+t+SOFH9>t +-c@>p_TA^(U9CIDbA`4y8w|?~B=(k4)da(ZcD7Xdkd#sx@&lMH8t*=|Bz7Yu7ix!>oy&v6V;sjjR)g= +be0ZBD)D1oDx{d+E#$4k-8bS0=?rcrH-rpEm7oZylTd8HVXs5KC%fK*xA8NEC^6{ROhbI5$|EF|^ipo +~V-TW@zaZfMTVK~iF5`}XhiY6bB%8BCRpB&x~87bcpUt` +8Kd%2!1Wg{*1);M_Zm@Y>=mVG>Br*XXEEATGMa)SUx6AQbzNUIpOOe>XH545tAkmw*hWvNX-`Hyj62UF%0AJzOFfn +9I7mM)4{|o2)65(@xvf+NEK|*{#t<6CQ6_nBAAxM3ogE#=frFMz7AJAG4Njvf+_cEJOGXkp8`=NcQI0NYoZ&YcZto{m<1-c|1=QD+vtg>o@Inxu#WjMFYI9b-sjpp;48 +|JK=8|n^+UfkU5&4z^{W9I}|JuBrM&PK4)-liU>(ki}EHMn`9^y#C0`;!`{1Wf(CbJxE8j8O!uw>O9s +-$(laz%2RS*!?XB4Sm*uoM8VnB=*vW`80dH(U2AOS}H;!JV-NWO1};mwB8U3hwst0s)#z=2ddP_en7_ +}GQeON^+8QcpaH|>Zy(P0HG6*5r%!d=}gk&6pPrkLnL+G&RUX&6#mCyQUO-S=z +lo~SC&-7;$W;1P;^OZ|yWj@Oudn9<~GmXn5N6ejd2^c7LCp62Mu)g4iiNqr#j+lc?WR(NAuGg3-2%v1 +Fh`Q&lG3Z4r7AtbNxpD%hqF?)+2&C!c8oa)99k}GQ@k-G*boA;_6vd)HTHl1CwQO&*^%_%ad&f}R#G5 +|OaoFGybxN_1^mcVWBytDq`k^^=Q=g@m#(Qv0C>KS}Ykx?Oe1UO9>^-pUd%WSqn>DA$TQx@*N(Wmw98 +0CvS#9mA!&4qbjF+ID-J)e$K7y@o$QqiZjYppYTeiS2Oc-G#%;vt_8jX9n6>_?LZ%#EYXio+-H$C_!2g+5+1 +r0i%k)lrXL^zYAMM+B8@KmIYGL$y;V=oCooV$a0vgw@T3vfYTKaLv>6#6ON|ahE6ofdt`GFpkN7_K%m +My{33?K=+!tpJU9)=l^A(eUX9of86fc{e*LjTLj6o;l+AnS17kyX7e;Q9)5k&p1pkPx7|1>+NnCvG_= +Vd&~a{{j&1dh4DlSS5_prs&h39E+c~{^HGUch6>8)DQ5iqyeZSoza>eY&d9Td~bit}&f$6Z`bTaAxD! +b2FyYXu->{}bf0+V+iI=2_WCwZy?GuCtkRsS`o9dKhfy!UfZR5pZ~Dtp_Q?8MWdN +nrkg8Hr)(P5ofcePjClJ-epdkLW@*y#G?N9-rG~g +pqJKLPye}B$WuCJtd9Os{W8KggdD#5?2~V4K>r*5@kS{1fco6L +RSvt4)31KE?XX2XbV5j(?z7t@1hU$dubCc8=S48^muZ+rK#>(NE7baDIu}abtFoKi>&q&oFte2*>DIM +E6zw;J+{O^vit@=-*jn&19z!VtDgJ9nul+Cp5#hhaz9-*Vs3G65rzN468xj)vw5zqXPy?3>LUyyZYwy +H&HGf5jRZg#n1P-N`}t#=aX>mG5b2}UXdE0RDFkDS%}n3`Kw=Say6vRGByB+lt?X6h7y;#RA{e!id?J +Jfj`l*@(UBx3nr21{Nuw9qRd%e^R0nq8hBaC*k~W=yAeID9mn;)$5)baakMUDr)^x601(i1G{rHnTf5tr +shL2Xg~fS-p~XY(N7=1Wv$igUVIm4|pL8n++PuT=wHe`Q5mv-Bw-pK^MNGD^aX$Y%aaD=7xGKRZmzsf +AZuB4r5u@>nUc9i8*>vu1K!k#TLJ?kk#kqwSDLHTNS{HE7iNaQWsH&;5wFoHlp6G$0%0p>FQw(X`RK&1{Krj#n#?He +ljw>Q#I7{Mro;@7!ZZqaR?LyRB(6OwpSe41C_Yk9{0rWIu@aDE~lyE2Ix5A;eoQj?pLCED|Ue7fYMHM +j4JrZ}4DQK}+~%`<3q7wa^O4c^wE=t0j20ooNYHt)c^lcsC9W*;pq};}dGBKGYO9`K)f{@~{Ua{lE0^V({SNqa0e?b6~Nbetj(08GB#rD})Z&&t@zU9M|5TiEJb`tax+<_TIHl9E@3~b#O2`SjP^ +AuLm%|jl8;sk(xolZWJ#DP;B$EtRJo~mqm5&V@M(q3MxDaEZZ_i%Rtf%Q!JvO&&-xddOG>lcrX0d68? +p^xrRs7+cMABm}uv$=Pu^Cc7k7M<(yJt*Kzdg=q%vC)^(TlT}*R^7OV029$Ca-2`hdg4Q*-BWftIrAT6iT(1)3q5shSOOVgWm*kwea4w{5FHix#kmow*en!=yYk5x& +wBIjE-X2IfG)3RGwIG!O)qKbcTI`vE_tk+J(4lSGzHO>PgN|L*>Ativ`Y;(TbxHx&wtFC6fhkK*mjd+b{Yi2RzV`~0UqD4yH0DH#YFfr7I^j|}F1WgU;H|p +_K^`UAs#(_~W@R9i|^>|>7VIkNKpA5padNjcPXcfE0hgAK!Id*KZ_=LP34jYi)mZaEIP79DO$cB|Ii2 +SS@YQa7uw5h;Da0bFz$7nAW-@pC#`elCo^*>&cj67d07K@^$LXhuyyW>oVKT{sNXGzuz0-q>~lnn%-B +p;WOF3ED)vhQTP`HwmwYD_3;gtLPiqpFbxXmst@doPb`B$Y) +I^%Brcvo^78hhK>{`WNg9EQDEt(GDl=AK)^@Lu$H_W-eXebvZlqRK;6n9yz_+I$g0;6!JyP^CC@?VBN +;X_pfFGjR2(5>RmEJI>{HpaWhKdTutcBdu?+`Sm#Lp)Ya*3_9LJ1VrPG|T7!FiM@Omt{w~z~WfPu=Tz +HQe8qZnW^G*dq`*S1mth7Gf+8u=;wF=o;eF*8GB5TbN04rU0HXVVj&b?l%#>scaMd-h+d(v~Un`yiVi +nYF)dgRmjv)e2|LoOc{M%W^Qo&7d~>3jagvo8GS}f=gCJ4vLp+PyYR7d%}2FB;g}wWfLq- +f?~DuFY=F+jAsdiQLe5`+F}QUNXZ^q%Qbu1uVcq%{%x?} +ms!itq4Vg*CWensnIsAVp+#&Qs?(0sS` +5^p`jKUqpC{JJJJts-I#qsf{_qmcg0Kdh0I7jZ6}~mP(1Myamrzx4oMaV6Rn3(l=?*V!Jh%J}CPGSTf +Xm@P9|vnMmlF;ERmzP4yR^ajMq1CAXz=69B419JLxqRxZpJ-`20OAXUDX^*aja425vfXbP{L59=(qp= +CvpsLvc=N?C~xmZBw*kg7tGmXLy9BO(`HLKR7(=EYPaw6P1WN=&j%(+q69nBXn*g_quri?G%Y!n(~%8 +;@EJ*jCYp?U*>NKu>nNn)$zFfF&gFM)>510*{Haq5oOX3H6*NRGRQJE&Wa01QuINhRFt +K}7WhG&iAk@gG^c?MCK0QqyLhAXouH;s#IY{M#bJP9?Ow?gD7C&OR9t5j&lxtEa2REp>uvp_da>It_$q$j%U?I+yCuL1QNRj$>_aH}sS*7u}gIYMZ +FJikWYu=0X5hz|$Rb&Uxz6CDsZhqiUcMcBO*(KC_GYxQ;{4I=3F+u8(Zl?uE{p+-{jDASaOW&QkupV) +Zs4lqTt0?)3ZX=?LM^>TWpL5-&qR9$Qvl`7RD8>=gZrQI{f& +!frq2#hDD!SjFpwe~ttif-`}%WhrEjLV|Pe6fomoCFE0|d``Og_f|7o8?Mh(%Ge?Bh>6!9A%h9A0|aXfsI!&rFyHUR^D``soGn+$?F29WH6MgzH@`4Z1|)Wa!gYfjzCu98kfPFv%kUnG*c(ml=YZl_ +&9kovx@k5WZ((l4>^YVZ?!-QwyxIzUppL&`35r!}75Vgeu@jKRwSW>`xu!r&P^kdi2v|!A>*1e=*0lX +8B@bhncIG8H+qH6w5(fTVO7*-LVktJ>sUp5fhiAZ`cRf20?fh&`!m;a^z$cG>UbQRtE~!X?Dm`n9DNQ +^Q_y?1Cik#6R>~b~ot@G2#!E~BN>fD=7)>WssIG&s?tuE_7KG<=<7>f!G(a-}JfMifH^Bk>~=h2#wPhgLsy8~T=G%& +||rdDJ#>So3cdbL(X-Tlr@%FC`+dX>s9S1auR{S~0SG&K<`_U(NRlY@YbT@LPwH!ik~U21{jg$L(MQ`}Pe5ewaEPe-2O9KQH000080 +7gYaREa26Gw2Ec04pp202%-Q0B~t=FJE?LZe(wAFLG&PXfJSbZ*6dNE^vA68rzQBHul|L!D?TmLaQVX +c`?>$v)O4IY_|#0Y=Ocs6xyO^)R9GjqGnD1&b2U+Z8-YABcx77H-L5=b@h(*9dO4|@1z)h$w}Q-^$ySx3V8J{a!Y%7u +P_zl9j)P&ysCS0TffhKpqi- +q@1V!jSoV6fo6V?`m;E)!n317pLg~70yFrqnm30HEQMwov1iBDx$Lbpf3VM&Kfq%GtG?*OdVFY+3e6J +3{W$=IOI;*k`xYu^}5vfTY%xE^+Mpcm$cmhxk +9N3(SR_>Wy80$u~@=m5Nr!d +$=V!X0>|cU!_XL6E5V|z1;hUXOBANMY1k!g3Tp2 +ecs3kgtXbO4Mwjv;>0;%=&mGgS=W-k$^SqN{Ui?4J1py&!r%jJQJ>!C|E9E3D^Y}hK%k4YA6s`n5CZ4 +~i#h!Bi{+>DOg`zcj6Ost&T7v3q(r+U(IIT6Ds3InyW@ZlLjG*|^Hi2#ns{6}q*->X=DVDgGaI}g^*!{t8;`ysOaQ@Tb9 +8UgfIun6M%63N5nQRGl9KzSkL4oXxgBTzn443LYl+!sR&`QC)~hVxFp)kQL9X(%y(9-}n;T<8ikjG`} +Iyde9!VJ$tNYP9AHRA+KwY6`oIt(Dytman6pA5+45Ht^psV|^?7Dy6Jvc3-iao!aMDDQTw`{phkbv~z +6(I7ILeTGLlHpiBx@S*uzj*i_+w0&qeV6O(l)6s)4{@6r`F5OvasMdmU4TAA-WY7Z;>Badl!Wxn&1N? +Q335ipC$e;C2WGRZizVKKGXEn*|?mHx`c+F7u+V!{$&+Vog%cAa(*bKcts(hptN)U5KY3zR|C7UzS-x +v1dG)<4zJpc@qr!8^tA1cxF}p9yM{6dD6C7R@C70)MJPd@(~Y!bCLbK1uJ)mQPud6I1FI=3U~+@<6Yd +Rlw&8@?Wsm#zhtS{)dtRJymtzHT3AYZ&WbOfxKP;T8!@KwGrkmh+L)bkqju*=k+rtBELEhiS)|sq_Mce-4}W>tmx6Gfvd1z%0$^t7BjRT +F+m@dc29|Ndx`5mCcy92%Z=;c4-bEoTKw5fS}ZGfgU`GsQ}zL}9HI$NM4#vPgcFDsFmAc}!1rX=^F1F +5B?WQ{~BQw7X)vYvZ^kgsNb+R8s?#J2Dgq{uOS~P}u+1IvvG}r*jI?7|_c=UcadaH7J9WwmnYu8I_kJ +O;tMMOhOIr6%kP30Ab=5NB5I*(3d0*frShQ7T#E6Dsdg^f#|wRGi2W1ILdW)KM<8|td#@W-s;WctlJq +wjvBu~dLf0_e?f_lKijfRQ+qJq}#3w^g%nJQ+FC^W%m8pWx{4fyIr*V1w#QC*f680QzANkrc=)g2pCeOP& +iunw!EO#JSck}mceqVBZz%=RfA%PUsY0>%OeKd^uU5^zWDxI}VXVBgG0|_QqSa^+LB}%DcZA$__TfFktOD`T)_aQ?`xg +}k!-_s+2|p%)#p?N4_#ffJ6fn!tlPrKAlL;ol0}_;pc(a2P=6S?as7;v6W}C2cuG@iyM?=YSl5wA($w +hlQ-nXkMmv_PLN`@;c4GL%oQ8mUMXH!U=K%SgF9{C`M9X{GaB3G#P^3?r-hMZFh(er*vF;Yu*$aBNjs1=h-hZ8uLc1ca#fkGu>v{E&7yY~fTVqaPsZeyNnm +9ygy8kz|LC2@3E?sdtvI-HP=!CRGpkUa6>)A19ZoB%n##*W%zy0qg!i3`Z!Woano!YMQoejJY;nHJEFY8ta<-xIw)I#tD +z}E75BCnMZ<5I@N%fjTv)bGn!!i+3=`406zLzbehOBwsId~lKwOq8hnD4m)@@lPORVZUK`#$_3* +Ai5XR#$gLc>~&q8W;b_%l`GBs%ACZ)JL!|TGtz`mi3c*0|BC!{db8oxD{H6=Rv1R6MY9Zi_kOAOO~MM +YbJ53;>QRmkL4|6K+bmaZ2e@rQI!KeJjExEpyvV3S@B^Ad9fnT%sriY{u?|$od<#~6foD5Dhg}=WZ40 +qCEu4F=Swnm@?SK~hoP6)@LJmSiO-%U{yZ1a?Gw%A>Q0mM$)A9p5~=rR8)qdtiMejudUvGlCbdLDRzW +~Xo`bhgL3aS&XGuOo=q66#wQE$`4Qo>ipP|s7e};^wQgxI|&hh?6$cP{vb$9mHHzE+{UJSK7b-{{jU` +zI1Xr0gw5($Q2E@*qHeszqBWHUcmZC>4}FYnB-w6m;jH*fw)mJJ`O=2-5;5jwzfPj_qy+x`PkO9KQH0 +000807gYaRKkLZ+dl#T0C@!f02}}S0B~t=FJE?LZe(wAFLG&PXfJSbZ**^CZ)`4bd7V_jYTG~%z3VFm +VyBgH@FeR +A%z0Juw89Bw+`0+8BYl1RdRwsh>tg<6`ST?xJXJ`mF>@VP*sS8#27xHX=ve@CH54s$!VV~NWfCK@GRc +&*s=`iVMUT+<;vcofAYd=c=jX+0`Th!z5QZTaUE>Iz3J|V`!e*mB2Jd@&60PRDXX4K~}J2`9IhvVeKJ_#ZXQg8}5^cp^e +jMl}kP}i@IO&hc*T@o}hPiAdrXA=W2okG@kQUMEteS`iQr!$cNj;;LRWjyWSg}nLiPaTHRQC=c5gv3FI +Kv`H&58aUaJWd`IV}bQ%^(XC)9p?EK(Len6l+z)@Vjnn?E!ZNIR^%{KZoI4CvPc!PRK=(pAH8{45PRZ +gL-(f!Tgt@U^uN<_CH%tuZ*|8uhkQCy*gydK}kS89-N`(hW^gy(s5p&19mS3q;l##=LiVRL@~P)h>@6 +aWAK2mnS!LsVVDuGe({005={000^Q003}la4%nWWo~3|axZdeV`wjOWoKz`ZZ2?nMT;>G!ypg@dtR|} +l{9&P>(nWtd;sACPJ#o$S&4ri;uLH(tKIRfWav>@0yx*w6c3wed+jxmF~%j^JDwD{$Yn0q)nH^ab|!)JoWsZG(RTiibu*ca2DH<84muvw}rWJSM(*(>QA+4pIO83s6e~1QY-O00;m^MMG2smp(@d1po +lm5C8xe0001RX>c!Jc4cm4Z*nhkX=7+Fa%FIGE^v9ZS4(f>HW0q+SFq|KQlSbd3iROCi%ru62pYtN*K +M&d41H|NQA&I;84+YeBcO4cuRyVl@bccCH&>o}^$AImK`GQITWuj3#>oi> +Rk^)kNyn1T$rcR8&L2ATEhwR5P+(V_?>6Vy+*o;6Q4U2^IpNxv4~IP7`Khg%`u9dEG)AN6Txiae(N*Q +52Lc&l*4@0N12tb}m?ZQ3Chzbcanol`~XCGx>qn4-H$cI!v@Em`H){xMNH4x?I*zVB0VaSIpWSchpD3 +ui5;_T?O(rCN-N7z7bNf4rT^NK^3ICAbqePoV+TGKb{d@LIu%Oz`+1iL^LK^IO(z0>^T$27n13ed^gP +1#w0N31MJJ|RTvI3GjMVo<`aWdf1!DWw;4{I+9U_WQ4z2aq`)n6f5xHDtu$IjjJ#}Utr??Jn;F81r=( +th{}?c%<8=`HB~n23srtt?V0-2tz}@5YV6eYZN5AjFxanudbml%d7fHK+Hh^@yNj`2KoO`AwbgC%VDq(ekiR6&tQ@|BuE008mQ<1Q +Y-O00;m^MMG3+r_CT11pokL5C8xe0001RX>c!Jc4cm4Z*nhkX=7+Fa&>HFE^v9ZS8b2uG!XvYUonIan +;hAkc0mYL1Zj039Y}Ye<$w>zDe@+6YvekS?RMK+A@L*lh5Qo6Gvh9Fy9T@O +gj#}FcdfSYixRDx%@%H@U{WmAuyW-dUU9o>n|`_GQkr4eJyepb91OP=JsI(y52md$t>lC83;&o8KYr{ +i9&2*A=BnZPnwyQZ{nkG=-QIFNZ2iGMz7jj3dJALs0s3e6&@WiNv%~v0_?oL(YMCxoH)G8p(Ssb%;xmQq5 +HEyD6lI|$OU}M7YxH-+%hfs|k)ycfe-YBJau-W;eqT*q~S`_JEhMbJKyDaG*3zT+cod +JFA>qBnsd#tuFLLzf;P2+Wej0k4Vie#ehW4p3f*M_@18TW9T8or4r|G*QGek$hp39Fm$VJQ07j8mWrq +$|e*3y+tvoz~>VwK~)JQY*nQpNL()RahB&W%`%h-6Re))C(<{^cxz|ql8}#+FhZor6J&^U9>@8Bgh9* +4QJcqw>r94VkXZ)j-@t2(SCFk(9BMfYTr>C@E`pK!XeJDYUzyzS@3d}pI$EVbo&|t2V0yV(P%U&;4t&>f^rAT-ss +1!b9icn2|3v?po!!IViKpX-uWU1)OobrScsc}@UOnZoy;!qdMek+@lTYEN +J?dY5UVI5n%Z)l41c>9!FjETwYhNL)axn;c>sL!ya?7mMz6mA$dlZ1Hp3HTYv7#hf-!u%+8zyDi>L#t +JhAzJ%VbxB&Cg>tN(I4>8F=lc;E(?;W?(0JZ0GkgiEZ8iAh9j#LKv@;DmXiLBu +8MP7i9C6e4P=qRCuRtBf$<8KkLC=kw>`zzjZvi!6_{pPfc5tlp@aS?)pZv+5)h&Wq7SC7rD2Z~|j5xN +HK_7@vw|7KcF?p^Rm!=4ptA9}tu7L@Ps7f^F#Wn4|}G^tDv@YeZ$7OrrxSW~CnE4`c!30x?9_H_lBm4OvKx~IgQIjK#d2s>*(h9brwW7WKDQ^yhI9A=TgaB{g=}xj1oJ97BTO>Rpb-tP +hK_OAdC>FJ^(=Eryc}0Hj)2qJjlg65l6j>;d>kwJGu-X?MPmt+iecNwOTg*( +lKx-hvWMuKg^y^3uRNfDN=Y#3U4<17f?$B1QY-O00;m^MMG4KfnYs!1ONaU3jhEa0001RX>c!Jc4cm4 +Z*nhkX=7+Fb7OCCWiD`ejaF@ITuDx{l>Ya +QB-^rg6R05@Su>iKXJ#I`)~bP03BgLsl{6XMm%y7=X$zle+j4nW)K15q+hGKc{ +dbPbvJ?Itx^!@YuD2EyB6%$PY(>f0pUt^aE@4r?}lKwp21PsNB1kL7VF?kEyl&`dHkCN;1kZ3h=GbGZ^P>YlNHn6{9;kD8noXiOsQIy_~U-L0n&rEHCB6Eb|m%kZ^J*!t +w6N_tL+fg4s!USBnw&weHVYRli9#tDS@&_-Ssk#o~11g9j{oFf26|n3JrZJ1d|7QocQ6=&RsYyj1fb9 +OKS<={Rrd&0TSRMgoHh4Pxh!JJW0ME-$3oZBCBOXyZZlAHp;*Zi%6+Xaj%KJ_AhULjOulx;^7@n$?HrM1NXQY1Z$5u2alf0uosm8K +5Qe?bNhsMx2r#YR9Z#8-l^mNr4q?r;!LryRP9YWTk?xu0B^Bb74OqAb`#yyN({$d)UG1TUL@MhvGGnQ +>=9$}LLW+W5>TXx4XNOszjZXp%xr|tqgvk$?1^qncx&&TN=8hqLFgp+!8Jok$=SSYrikEJt!55zBbI< +M>HHI~qeKKp}#M>ajzRxCrMO+ZCWf$U!2Qc5cK>|4$EwaBmtp8MJ8M)xB9khC$$2MdzcMz_)xu$zO4( +Y}Aq^I-A`ciR5P5JEYQaMsi9+$7Hh4Iega;|m(P2XPrj?Zdtlh*)?hdhJl{x@#!mG(EVJ)x{GMc5-z> +1<#ZAq4*gP!#S;DX{f(z^XUMmstA^z&FrpdT8jzQDdo|@cYCa^PdMTZ?gjLwMyws^YS=+CbXEe4P)S! +$z;MUGd8J}+CVK7#gW`o-LL&{JBEubEx56TstbF>xZOByS1GJhxJtvV4A*J+7U*w$AfK2J3jR=9RAe{ +WsdzcJ^Utg#1k*Ce*O)L_Wh*i-7-<+@>6H`WRf0^?eAFGc_nj_})Ub2ymTKA<)ZT6hUg7wOfMF?3<-x +BSTqtJTvQ-TeitMl&*=l{YJ2S++%hiYL_v_X54<9Ce{*5K|_|Cq+ghF2PEE76~Z22ziq0f@6aWAK2mnS!LsUOC{;pC2001`z000^Q003}la4%nWWo~3|axZdeV +`wjPV{&C>ZZ2?nZB*Nin=lZ4=PO1$k&5yGk*Ksvx7(`Hw%W~0)vb^N2CO=^Wjo!bU*Ewt7?b58fw`PH +b7t&b%QM)kVqySxR#IE|rYw_!@Dh$czTY>8&-aI~UmhQ_te;{lLx(dJc8-4bpR?0mIbB@S$MLFYa5h{ +@H9M#Gh7)76EMt9IYM%if)R-!BD0g}=`=#g#u1JaP_HY;(?^YqzlI +GPe7M)9wVRo1{j}cC!{XJk;NW>*n@R9Ze#X!Om9;FC~*qG-QOYI>~>4b=m_Rus;Fxxb7B8Kul3i&R=m +|L7OZ6ebBxpeajYR4{y5~Vn6$rRX}WrtZODLICHBHVi+r@Ho&yrrM +)mUmDP^`P!rO|#GwQneOZHZ&l*0dIO;@1RzHv&U&pr&Et^Lg$j+QKQwqbB+K9OO}*SJv6Fgpsmgv`8# +KRfheen@y|d+SNd9<7`E2eFu1sS4vQviJQb`&6`kRRqLWUVrk*1)Cr;5|3#@e6V$Aj1Wad+O1(8gsd2 +^24T;jXR=eL46zS@tzC_Bmg~Nr1_aI6z5=9H=DN`X6+z2A*tD_omiu^^q=sb#dvnx)=x$2Z$M7$oGnl +91O(E}#pz3OT0_K7A}M)59j2V!z3J|rNdb#Q4?Oq}Uw{{c`-0|XQR000O8MnywZ`xp5Kz7qfdY+V2V8 +vppZ{K^bMOCZ=mT%TUx-N^V3C{Co3_p(+Sh3jT^QI` +WTGnROCYs0d731}3!z!zOk!Db|h_hO>$cp7M&6l!%$(jo&VHK|}N>;^9QOWAKX)0*a$oghm8lA(V0KV +JrzZ*wq-;U4zdVcxMfQnwF^M?O*4qf9}#`v#`v=-%;@tP&Kn^M+Xl}%dYamIh$uzze=J{NUHv)gSc{( +6%``@vEFh$A+fvrNyLBNnA~R0Fyhi?BAjPm^X<^X^oTv7G;cDMs^ET*Y%hmp87{e~OW6tkgw)F<`|?M +W$<3Z?a|(ROx&bVTEW@H`|QKMmPB5=qO#-6dTbXViHAO7rMt8|2dFOMtMSDJpz@M_oSj}@pPzm+j;_bIZ>}$){1Ynw_UiQ*e*A$qx)`5c!>>PbzJGi5HadHAeRG +9npYrDCug1FUGb$Tjo_=*Pj!rLbqnoqq@fd;siA&!3O}pyPd?(tiq5Vs-n=GwfACaeIiKtJ`t)WTonJ;5=a)#2m!AT|1gp+~tWZQUK +G8ZbF*rFLw95to@UgRk*B(t_m@k!}hJ7Iv&YmPd8gm4J``=h{_$51umdK!+16r;QUAbGg*4oPe824ESvfkH63`Xzb-B5_ +%whDeM|=u)Xdi!aFI;c#j}zEWU?0Yp?Sog7M@@VVkZBcu*U3zUhv>-e6d&=X~Zr3OEtNll>-Xg^b2cB +iGf3k*yE0zY#yQy1U?vr!XC*dmA`C6-YX)+}4}gJ)j|i?Jc%xv|T*ZirahlgQoAIkyv#D|d6Dk_@ +`G{YF)`5d>wrYIo2A9oBqX1^Y!r&X$P{V*XL@o+Ed?UYTF#_qOMmhi~aNDBmqsh{iG6zdnQluCNoX8N +YS+gp*dHPbtS>ekUpZqcSeem+LzUE?GW+@L6>TsTcgBA#lf}Svny+JVFz;B=}&4-%;qgMSn9RA}`&zENW;5WD7&Y=DCSXANYVGMbcypFk=fK8+5~p$p}D9?ZG)vC6c^--tA&xQQ=^}; +5ZC+%Xbw1Q;dCrYBs&QGs_yMG)n6u?nyiSuOqYxnuK6ys|1`;+FDC>Z&a>#JeTtkeI#SmR;mEUq~N+< +>U3&@oft6BA)5%44hGQ`_}Qb3CTps<9XGgosm5WObu);8NYp>Cw96MulUzBQ;YG)cDKY-fuj)9CmUR- +az~HuyTOfs8TChDYN-u9w_PD}vQ6spjUq!&cyDctSvvWa +{ph2kSCsi2|FqOiR0ihIiXm{tC;tdx_BX#>Ku9-}PU$I3DDGNbCqS_!dsy;Y3c0yU8p)Cy>b&s*ze7U +o&rTE)^6J)crjNBFfi +`wX#Hcj#Ch;hXD`yw*@J_2WiWp*2P+h@LduCh_fMDH=pMix7w>=l^(H7&yvPKOxSuW59xlVkuj*tl&0Z}&?R6gu5N)#Tht@4^JYd1N!d^x2OPDP}xU*tZ`eOIkT8C3Y!9)2N;u#1i3my +g4AH#)~MFan*v~wU9W^nI_;-&>-i8;vkxJK3`3p6)5!c-H(^ooc*Pz+6f2|9y=_}vuNi~!GCE)(Fz$!km8UVYGdSQG@u19TEouZUB90MN{LgV*#zfej-A?|vsdiA*<0zG8}PI-8IbS$y;3Pm1=%QXFmSJU9i26XlO?tBp~U=JRZmut@T!_OyGj(Q(WS!5xqyATjvwU|F%4C-{&T#KAI +s4~agXc +`xE%GP+J4FS|HxGa68d3X +CWjsbcL*YJnkDz7@bWMmeHIiBio&QG!Nxrz6<$XiikjC5YF|^uG2 +F1MmOtF8G2*a)bSwLNh_hUjW%vau9iw*p9j8u)s%SCR(%OwxXs`=n2?JLdcp65P=I`94$zm@{1D6HfH +%z%%N)eN@FH$Na6)tC?`0ETNNzLWg;nPvdwT|=!C@QR9V|I^p?t0mK2-ZXzn*K`LU&E|_{15q)x*y({ +Dj9A-4BR3WG8B3oNN@Ur(Pl2HA}tlY9Y}PKFlE0f45^rWrqlg#TMCOhj+q51*U7F#T2h6>OAj4W>p<` +an1HlA3*4bmiqUVZDKhdNlDP7=p`4mWD>$$Hfx5*QG(z70AKz)V>_=u*kcZHB4pt;=56<28oWrVg>f3 +fr8kD!{NT)6z=9ry^2ewIZ_LjxT&PEH?58?dYMGSgcsOToD~LJU`nU`4*{>Q>t38;}3i%8QQ_$p{pIlHDV=6sNiGWmv*t{EB +r59!3Y&#vKk@pwR3?}@xMD*>=FpwiiUJTMov2;W=wg)X-A9)2A1sw5L&o*%C +{0AR_F4rM+U +VgFop${^~?L%}X5OXpyqtOtY6^1GkV!;$+Wy!Q>ZHW +EWhM`%#D=E&>Wgay}X_>bXU0U&HzfZPzzPy<$-AA=%r#Q1(E;1H$Bq0PX1cCg}RI#p@6-`sD56_qXS8 +dua(~=Q0mD*bxB8-`AiAJet%nsg-QE3`%iPt8@wJ6d=?zV{@lh|Pq{o`WVEKC8~0%H=c;vc5*TVxg8i1dh +0chj_3;=G<^7(UdIhjT$Kj&@tOheddRP;E<-k8H2;-S{2PS<6YF18OoBi41ZL%{1ils&`qTk9D=zJ&| +l>2gzSYR@JMofGEgct85NjmI1v4Ad#+dL3sOgfZR;(y@vAG|N=5Bj<7-Z~ZEQaLjYO_**WH8v4;xTgT +AFbz>Y*$U(S53zl)*@WY&y_-sH?(%jHm__RyY#dGgZRyixR){w2eClg6=!u~{WrSO7-k3u*zR=1j34c +*54$i=aB0%PF8tp&*5dGK$Yh?83euziTT%{&lx=xkG^WD(vy{Ag!~+Fr9YIopiR4!o=RnI%_;kw8y5& +1ov5M-zSLHbrmaBq-SjL=q$xkxu+Nb?DI?N94?HIdyAf_m%E8!~IfXALHr1aBIUicErdOZptKX7;!&D +y!z@Q1b13gwpVyKD}My(;eh?(bI5+zPbEMCPjMfJms$54Tv_V8E#Q|dmwB`);9Ot!@`npGh(}gbKLUR +U?$4h+geILk6aj$A7M&E~9r_VH5Hu0H18NuMU;p;7?@;df?-tRJ5;1XK<%A=F`(AoQst#$K!?a0aMk-d<*4bK${ +fGi0Y{kEg9V31u6^~!pGi=4Of|6Dk%VAlON%Pvkz6_9Fr?z;8~17wsn;pI}a}&c>0$U +zzjRvg9AmyD-!fp!lCDkWVg@#&kEpY@N)MFB0ju;=xxC%)Q)O=jC2s}da~icSmGzbE=w%kv##cc=V1? +Ty`K*FwWURV-Dj()pL~77O$3J4qc0m=Ac66_iC|L9eQ?D6ehPvC%B>a)d`2tlkd98V!Ee7Ekl$hUKz` +}MwS=8b@p~xYLqA1{=+WQdNBNts{_g%}Er%9roM5tjl%{^neF}c6) +g$p#gD0Gj*bcguwJDacgEammmtLm9#ZS*N4K>p<)Q42-*6U=7)}hsVAa4tef}VKlt|w_!>oW0zV^7CE +J@YL`z1I}HR;tO*Yv#D+!m2e(@YzGnsa$|Zkm}Kh9nq&yqmC)|d8}vQg3MgY%d_?2`wHiI&8o +)G&3J*Q?inN<{8VU{Y6|+<3ZfV7L5ZA=fd4%WGEN%r(IR;)NfV(uUBW6WpP`J9y=gCEE +`36yhc9&;ae|?)*$Cm1SB~U^ysL^_k_wSUasR2ZF&{&na);eh%zmQ(R-kCQ4Q&FO#e%@dpgxyP`wZ8J +zV;=rwgqCiw?K=+M~`o`5UPqrPOmDRO!XXLyogb<)+J`0J7ZkeWrwstXqwCPcA(nHX8)Jatm<}?hMjlLvG +dU6U<@zT>uWF&s%(R48t*e0U6je6`d!~XW)#8Hj{M9$x~0Br&F3nG5b54t5?!i%$^%g%R`w3YM>dX*! +Pd+D~EopRp+No7cUQ}^@*52#gt37gB#?}BH_cn4!a;MEg@g@&&;DG2VwI={yhf5xG`7c*%r(vN8w#w+ +{5@O-6=!nAg1K#5phHZ3c;)2=ce?cueD|Jzfem91QY-O00;m^MMG2oLkGw%1polp5C8xh0001RX>c!J +c4cm4Z*nhkX=7+Fb8u;HZe?;VaCz-lOK;;g5Wf3YOjQ(>Qb+6bC_n{*G-!j}ra_V(3d0~6i?WH8DS@P +u7)AekhomHuvXefr$NG?noCoLmaahZC2l~))u>rp8TB%`8m7c>VZvOt-Y2FIj%;E9(yK8dw^Yzuoo7< +mev)ahzM4_NyQVp^XcQ?1U*Y^)SeaEQUOEyq{amyVOx@XYzsTs+SW-$=hs~-39dp6^BY(p^v{5kG*D^ +%+hUAg6a_;6mRIovZ*F?r9_zR|TB-LzCA@giS1S_bDoSk_`>O_Jmi +`YZw!d`Haz`D|pklpE#Q2X7!nZ?Xbz&39Xm8dA9z&>i%)6>z=-$=BPwr)7Dh#U?n7{hveI`-iG8L5@V +wEmT}}4Ltz5q_+%JZ?@VTZ5HG4Xce^5R*bFcHEo(hmcx&%rkHbO6eUS)iOY661~jt5?m~?^kAoCxHDR +6THCcevW+B#T2{m17RBKefp%U{JB;uZO#U`ov$PU+1wz7bm+U12S@hyf$urW0I&Xh48c;tY}!!q!tDG +$ZO5hqxV?Y%T-twtvHx@MjB)!5un*9tA5 +V+z(X)4yt?#)e)WxyId(5z!^wZu~t>N5bB8hl$K`)WQ|vrHUEvdWglDwgF!GxvvzkwKYZ2yo0aEa}no2+yD=Aa3= +*nhbTV{9X^XiAS6ygx$nf$APn^a%Q$i{Y9sxAw2NC1Ih)RF}UsYwmG>9ll%X}*!XN;_I +rSnK6QcFdV0jmY+8IOxO~fo)dAV}py@TNC8jznmQZ%eZ*@dU|hi{LR{|a3s@`KkdyYP94-w8a4J7a1C +3k;E5qn*;-@O`&jk=WcYWJVXSfjug87$Wrrz)LAJb3LCLA<#R$BCQ&X^Tm|`D$gqW$25Gb*<30lhqAx +Q!7HFT10cC&>p`(H|1NqJ@0%C(V?Lhm4-%c}Dk$(i2g +HGSZ%gE>c<(T#o)s-TSK$aGzRTb8lJfiU(Td< +@6aWAK2mnS!LsXn7F?03=002o5000^Q003}la4%nWWo~3|axZ +deV`wjPbYXOLb1rastygVt+cpsXo?k&|A1W29khbU-0~(g5+mK<+fF=7B7y>O(Hal4qL@J5@{f_UXEI +a8o0c|Yt?zy|?UP!hh+aqxp2uE~3uu-7<5!Ymc>%Z^e>qTqUX}`4se++`M9(OrX5?Z9FS`f>JI +<1UBx;vrs(Oxa$sC;m|CvsbiEG{sHmYlHLPyUlSx4nz)o1(Jku8zzLUy)(;HLyH`)O=cl5jY_YO52WM5d +*4)7S}SdlAWWFViWI+OOHB|b|idP4bp7_gf5!6o%S051gDKW^cH9!tucfDP<$$E4eDZQNQ +H{KOo6kyYHES-v{x+Z2&&sv!gDILdDpmUPc}7-9)?{fCcC@S$w(<=oMQ4e~<3y~GVhIF+&io9Wfglj0 +C9_pTLScHSG$hOxqoOKfpXZ{o5=!l1yj0nuDD8wv&6gYrXw*`h&XIyGBO|#6EY<(n3|CFHQVlepTDR= +SLLM!e6qe?1ym(AvdHg9>5hLz7CA}!`$0>lzbOHV}j0{x8!Ih(TER~LC=-rQ&m{pKXF^zpp;3+^8iAP +IJQ6?S_8sb+1GjT`Un1j*Qpv^&j)6*QW%{NjDUdZ-Y^h8o_Hz(g<)6if+UTQDbGI5_Bch1{|CUVNqO( +%QJHj@)}UA3g5TFHs3R*A(Fm-02D@h=suiOOtQ@`<-CA2>=+1s=~i^0cs_g*#8rP`$(b_Uxt;un`!Rq +#au`V*ka4-ES5cKWR^^{7b89Bbp`cJGZ3oHyySEZQYTEgSMCzh%Nt3?p}a-)d*IgGVYhamWH(V +=mqtKK^_SObzvvFXTpv5qo~}BcP>V#*@7c#44J7jANF>Jt8wg=NypE{RLp0Xeg4Nd+`I&&QTTCvG-B@ +Lx|++Tiu`dZEX9BejTo6=!&wV#&<2hUY$q)MU=|*#}s!$21!K +&J0+E-PwLg)uHjCi}pD>b;-qdgSpizVH=3mfkU8G^MFH%cvG*Gl`@aICIs_NJptF-;!!cnb-`>udH%8 +=zbeHETDF33;!bh9pCn+il+mDLqO*`s`WYj&0NAM!6;Raq}oIUk$ptNwQaJUs)aP)71?WBW@1o^v(Wl +hlqMBlZOrK;84^}aALTtaoL4N9Nk*1RmECtaBwNY}BaBs}fLUVqBM$|{DD_98XjZAU +_SS3VsSP=okX*M#$Sg8Mp9@DET+0|XQR000O8MnywZywRznUlsrWWoG~Y82|tPaA|NaUv_0~WN&gWa% +p2|FLQKxY-KKRdF?%GZyPz1-~B5%T3{mO6rHWanZy|{CY#Cb1((eXZ08OKkD;_B%Ib~Ot?h0l(RzKq{ +p!JYvmc(p-UWvhf=EpktBS=USye2y)6F(7DpBssgJqF##B!I-t2|$qBITNOv7614`ATyACMn8QvNpAO +vM9%5vD<7Ff+EQl@TKbUDa|Ubs`lG7yU|rIv;A1ild>9%AJaMf|E7{fa=n&g@ixWMpSD$+XUTdjF7{g +}eV@VO0i&8|EV3x_LXn=#^L1Y6npgNR=C7ZDYxx>MRl)hbtmI}afLyki6*t!kLm{^YL6Oc^Gb|X3Gg< +D|suvSrbCUvJvuY(bQbYgv`j0Q)zrC1UygvK$n|CkY&MyA#^`Bn@?+W??fe#K2ekabW{TiBOWtC)eSq +c!5D5-2AmuZ$_uc5S%B41WA14y7aUnSX%MDZL@dlZQ{Wtm)-74SHq^1&6*n6Hzv6th31)yaW?&tNck3 +CPQNk!~xHP?d`tS^aA%E0HMDNmUi;^{$fQI;|$q;DB1rX5~7s%GnHPT@IiM@nZ$B3YEz1Y&I>-Hz2cs!U^2DGcdaW@m>j`%{EEaPZc2N8hh8>25b$R +%KzCVn{P;{NlKi(Ai4)jIWUfwLW!i?mAC>0HQaJ`tdr4zyS$pQ +LyUOeOGiB0$UcFi$ffQ}|hkYtYM#kPSb4xF~k=15(eIOML!gvMyCYA+j767SJ&$M@d1k?s{=kTKTKKu +qvxr3mSa|IMm>dPI%U0w~Wv#`K6kOALTNEsac{9Y{azSdfW$kA(}Sxw1mB*Kej@ClCTN1Fs328Fu^>XOVE= +>#uPvgS%EgDA6vxE_0c;-7&|43U$4wE;}!dSdQ~XHTEQ$`_-J9D^AY0yH?!7{SBahX3b6ZL0rp=NsBZrb?9^?EH +U{jb8IIripU%WKL0yG)UWuEi0wBod)}T8CyW_|~e+17{=XnaxkDceo@chJiegesKZ$3i*3_^-FGXD=@<&ffgt{l)8ZuiFFIZw4p)<;Zp +sDZ{-Di|N}fj}`J3gf;4yTNf`jYZF%62N$BThPDIZBh*CRO-z+5t$|wku~PqZYa7bdGLN~_s{v_xYy|8Q#bnv0d@w^OgzQLHz=-TFwyUBp4~ya3z&q5T;ymNld83e*)BVc +Vp>!uDwd`gsy~4K*N8_)Zws+fFbuBAt+=mi?fnonT5`JK>aqcEYhz_U~;shop<0P+BQF0ksl#0tQk>E +vdl-8!Cn;*vEdE?E{?}1s*PKZgKnpV7TcuG_p#G6Ka!ul)QNlmGakgp4?)3j=H!iMzR!XsY4KqN<~IS +LV^p&zb9Lan{f5$AmE=7F_(x>AuhRqkkr^61vs>iX0hm!Mm!22#1#1Xr{MB#hF<^uCz?y>qyZuHQ+)+ +6G6yHj0U#fHS_e~pRtWi|4ryJj5cpXgm_4Zw@aSm+m2@Oi+w)wxjnJk9eJt)_?gsh8k~^pQG-(UZeEulPZgq~ +5f^D1D?}w18PjIl9)oX#%I>>t00;m;GDP0Ss(mtheeL6kW>ed3xdZ%@*1<)v+R!VA +J$ef|ofizTJe*1B?Lkxg>RP^?Z78xDx%*2~wG$$3fbhjzhe9DVwZ-oBT|m&Mg>K^lG>mR&pd!36!au! +7!ao`W_-0WO(jO=W4F#)wVJvaPKb)^iG7eM#-I@o3!QfRPlL}Q*JV4k79Frak`PW_gDOt;`A}<;Xhoi +9oro<*Mq}a-0nHQTR<3j_DQ3uH1zkNF+zq5rmJXKMfyR}Q#<+$b(Z~#S{UlIG?17P#4tG^Y}EQ!6LANSL +~^3es!nk{CbJpH3YsCjtz%9dG+kFjkMy6Vr{flACfkx~u6QE>d=ZcC1SBO;0JOWO&HU&=XZ9M_i)(PE|PN +LhEI!^2c0$t(FWbd*YN$b>T4=YHv}MKIKyF8miLoxKz1;s_`LNbdZt0icF8seVjlt{ogTT2Y!-)%o-3n2Tz?S2YD6|ghx +-IYokafk&Pr8RwR!IWi0vTcYK=$*Gmj0f63EqXm`&MdhsA^5OUnY2+_Ev1|F`uwgx_X#)h_mL7q!Y3Z +)~*3jH`gu%^O%hAuIkUCMP`&I7UqLMt$v5th>`0kPB11%@9Te(QD_8IDm~th_1u8DRhzv%b76DOW9^q`~Mj +fb~S`4*Sh99AnFjhp*jovrJwdUPad|581RYvZEfzp7cdF?SbrBUu2JaAnP=%@PnF<3Gd*K6nN)g_+;F +;MaGB>b$WkGn|K$XO|MRL?C;S|JRggrCiC?l-HZEdS~v~mmnz)27WwDwrbrel8AGi$qY2)ba8|$3Z`s +@&($Oya8(U9~8ii*MMNa9`Koqd94YBP`#Z3n<)D{OFsRz~!WJ7fA2XoPBxJka0>EGljp81ZXA +R{Xfm6|4SXHBY$~z5hZrC{6ahb#3l2lw#a+s)Efm2Q<-f}7D72m=zg(YnZPN%koEG6s_K}@c`J27$0a +Hg1c$V;zHi93Tsw!t7<9f#9#^Sdhc(F7#Gh!Rw}MTE;yTlr-!xB6PwgiMI@J@oSn-QH?Ih&wb&XgeHD +*7;{y4BO5^x9R-jY?&5i#UuHU;$x)~PBk~I`24{-yR3m#tAv$Kol>#nACjO=fg>zKZx6Mt +}Rf4oykfdN&{RftjbikJXvIX6d3s}pjse!zV@a1Z`<$dm0w43_A4M0QcX{;&PeAbCKw7g|)dp!`ZqDQ>^P--8Ga4_0`niz?Iz0LI;lmR=)2zkj +wymQrJ6mxG-@tpRL_Q=RYZyrH7{gnT@Sx9Ki_*+lh`h}lA)6xboK9kp1Q`?FI*zv=tubP=Y;^V#T9Ku +`%h()_=b>p}M~z&6hH6(m@6V9dmIjt^tRnoNm*{ar*P-wh)tF~u3q>0K26A+y23tN%m6`2aOZ?!~O2Y +mMB*_LMi=%|iEnTL#y}9_@3!6>6g=xj;lsn~wSz#POMVgoV +u(v9x~AhongX1D6Jhf)ea$tc%zph(o*ok_BBuu8JL{K8#|#^3kL-t-S+EywN}Oxf%0o0*1E9s +IgZluzXj|g834YF(0DM^DU)kST(VET)^=r|0Eaj!z{W+7hTtF)|##fayb~mSDVby8jGoMQ_Gxhi`4k( +9?rav0Cc91I-5u>k<`ona2EUkKxI_;E@Vq?R*yW3h$o0yy4Dj^w<3%e=w0H_4q;4V=`|D)hp^j$bG60 +s<-%BDQVUm}p^p$?Y;vx|8+RJH{we|CJWn%lLDEH+*Z6^Of3TSl+Nx@fV+Os{{v6s29HTaG6bMBgo5J +W|QqHTBYZAHth+tu{fe*7wV^?|VIjAux_dwh(ji!mt*}1(lEt+pB+5TYS3eMLQR_$S3e%p0gxdEXiSr +O?Cy}E>wUce(I9KHmp>eL4{UbPDdqsFi>LU}f*JFN;+2FAmX2#sOXqX9k~SA>Yi+St!+(ApuprNX+tw +2M8+vj-7cwV;Ilxc8lqlab!lYS1b|5xiFh->f0)A&P!oXbzHrlSUWXtDILIaf{4-Q{2&;JOU%}g}5aO +cY`Rx5$AYBJ7xD1#DCx~7i)K{oa+TqZia$M%&L+A9k&7|szrQ;#Ns@kj_S86Qibz07*=e;>gZ+|W6bg +$0ORmX~55QXJ8b)BkjkVpJ&U3Tj)n^V`!i75c-6I0)2&<3j?t+7k2>)zGe5`A;q8%Td_>?Me?h$F!Z> +>dIe;4p4QT_H(2lNxCJZZG@IIFR5hN_N)>LEE)8O`9hmC7Pm{w}zF!z9s2bvkgOzl&VY|mt2(}PL7+% +yS<3V*$JtC3#Ge%>ilmxP7A2!wwUO-b|<(0U?59FNosnGS0(2MbvZmLEp}9l>ce+~I{8}-S2<)G_a+2;he^jcym>en_*WkN3(%y`frnj+u|EXD`yl>8*Dk@a~24OsxI#%dN(Br&_(>azC0>v($7eJ0D@K +sdTi4CST(Q<&Opo<9`-l;_=|o?xYTx(n8Lw^&WLfzku0MqYE_W*yg5-1UPqq1=N}Ct^lhU-;9Ds>fQ6 +m7L$<}WzJk`x{E-rFv2A3ii0ix^sG7<_WB<<}23>gXIs +EVnV^$}~MVIIte6IR+S+zZ}757gaL<==>3b5}!@_ciHqeB4z~F@@FDco|T^0Zn(tXG_+lgY;Z81;~7Z +CL*mg2bD2G>ObKE+_?|mKUAlD$eN){1e$bdyxGT_^vbfoy34JiM?s&CI_@TBae461QR|N$)_Y;(+ONsDmf{zQD^6n=Z4EBb};`3P)h>@6aWAK2mnS!L +san!rcl)Z008O)000^Q003}la4%nWWo~3|axZdeV`wjPba`xLWG--dtyIBoq%aJ<^A%S10usvyAW>;F +s=BMycB{6Ro}!cqOe9F6kg3GqZ-NsDRK1l`9KUBj+cBL{BiLCB*@GChG8SInp6==S*Zuj=@5hHM>pY? +wIh$^VN6cR|M=osuOuYA21iYXbopv5p?u$2GXU(%rbo*>|2JS;ntK_6M))~z*9{y=7+^K|TE-&0X^XW +F&XtDR0A!`RVO_=k7;Rzupt%n&Hpf0Q2(X7NOTVN;CPe}0J=7xNqqp0B|=N&(iFnqoi?4e0c6ww;x1l +lVH*Dv8(e2nDuqM{4$fKnlar8J-T(3J_c2C~;hN=)S(s{m5K&pUWjl5dsyKvhy+lLXy^PuMQZ$onZr=zOZe-i%!1eCl1;u5asIvYz!(MB?+k%iFkEDsI%FAw{+9ldN+3$Y`*3sb9ML +{YzHo}{KTt~p1QY-O00;m^MMG32Yc0)I7XScqX#fBk0001RX>c!Jc4cm4Z*nhkX=7+Fb9rubVR$ZZdF +4IrlH4|O|Mw|a)SsCXmy&&#RI(LbWi82;?kriQ-HVdiY|-2q%q%SqIYn}`nsfXpd5FAHo+SMNfcPS3R ++4qD3rjUi5{*Wq(daJ#RJqwUZ67sVx-I(Klae2|Rnf1Sc5||7n@zMWw`u-f)XSz#+j4Q6E}FV8%38Et +BrALmPo1jWix2%>TWq;@akEfR=ifX@;JNGDV$p9zf7>h>rr&SNdac3geG)w_7kv`F=tW!HR3d>EI(Yt +J+m}sUR7rFp;PG;|#j?x&7JmOyL(z#(@^-)8h`R66N_-HlrWhX%0qg#)MW54~{AQom#Ri&N??l(hm%y +uhRaOE^CUAEBz7h)M1w9m9^ja3vi$k?7is+4^XrgA{yc4ymI6H~pdeUsLETM;IZQHbb`<;McEf@UoXR +*I)+9f}{!d~;;ZgV3f{100gpkCF!=vx>^zQ4pq`S$H?*^6#lEC9iLg3euER*K9gRnc{?n*Q5nS1;wLr +g_ygTLppl!1cE4W$B`+8a=*G@F9sncIsu`u5UC<-8I7?JmJSg-LQOhN%W^(*O#mPOA^u~dIMNQ`$lxT +O11XWZoBUXdHNGSzAQhKwS?G+qT98)t(W|WU6lZxppI*a;73*H35zVi>80LZ!u`n!u^J~ql<}0ff+?0 +nX_{W2oVgf+}FQ7=x>a^Q;z1Ym=QII#FTQ(zc}D8uO7kIMhFwE1ejbGJjNi`Yu2iZ55 +}+);!-7~s$%&#smgOe9YSy>j{hm_U*1-Acq~ebt{Aoh(95&5ym9i;Y6vx9GGmPiZr8x=%;Eu`>+t(0AXGSo{B|7j2Ynx=z^w +NdiejXXiKy(POVlfE$pZt`eKlS5wPdnuHrZ|qj0Ut4981VI?BI*b->Jc;rfD?lJS0^;YcT2G{LLH2 +=D43abqFN;p-RC{&Ev=a6(di$V1x$b>;yck}%j8uv73&fL5FLIoGNMM+YKsyGhalv|2Apby5=&xn6g` +NxZL!`IXHnfmi{?GVk_Y>61G;|QVm!m$p-xOt3+#!8IuVWMr_d*dNynSUa2fZ*uw59V1iwWOJ*mXH0E +-69G8ktMBX&2>%ew6IT#XY#oN +j?~fJ0CFP)wg^5#n7Y*PE^~(xy+Bc8Ts78BFG-t5$q?o69Zcdh(6~af*H;?NOu%JcuZHE1gk +6YV+4vuK%s64Nmw{XFru0Ex(F}h>u`m#FRF6kRpHlTl?J2j*3%`Ss`G$O7!hNXK1wYqXeImf^5d+RHG +SM#+6tlna8C==L^~WNQ0m}=NPE~#+8yrorr3^|jWLs>D=G%zy`$|mWd}B9olj1!X~h_ZKHA)UX0`c!) +4YpzTR9=inj8>*fZl&8o%w(%BUceM_iYLBX1loEJ5X;$R12|0u~;{(<~L2(<8vhnxaqcHfr&$>o=Dee +G>cbF18#AAQ?&f&ukjqKS_SjScxBHj&2go_wUne#WE%m>zJvY6%8oo^k|vM +an|qL;{3LMMfs5EXlORM{fEab%w4!+DmFSM+->b9JudY8qG2!*aloRWnnVHicloEy1?QVfShE!0^%}- +)MqSw+wfeLVLA&R0%N}#%0ij=87Z`a*G5*9==@=l{Ccn@fF#Z-gw>eYb2^@gF(OR>cD5r~SL%A)aEjd+j=<(8HX8}Rr+^Or>x-RYd0jsM#Mth~Wbu%3BMiHB~y +1s+e?0#=D+l}X%SquM?v@L5^+7UBymLxhZoV$pHLUpWM~MZE^3yvjqU;pf_F;KfQtw%u*BtCrD?06`_ +?gMDC~4kSciMkDAQH?Bo@Xiv)^bp&{HA$n}`8rnFA8PvNh84+BR@BFS@_P1xzTl|Cd7E;jVe3_vND(g +kH!&Hiebq<|tqaS}n1@+^PO4f_2inKgMgnekSFK+U#{A-B$_!hYUVYTEO-Kd+H_jQT32#CkOo&r3f@MS=Km3^7XD}zFcvur#q10&!+XPpl +gSXO7|4WBh1sI&k_dxaD>GnVVfV~<5sLCm7g2@$mak$b191 +~88m}!&S%i>|#Y3d7GwPKStgu^>v3S^J(t2ldRP92`{ASkBx}li1rI|6h0c>m=Gh>u(AlIN}o{0k$40 +g>8$cC|$EZ_$lNZXuDkEjhWSe0xTSQ{jejGNB51>#COfnulMyu=&jK-@+t86sCPH8O`Kw$;gO!E$qqN +?Fm(Ppca&hcz>4pejur`H8`tHa^^IU96R2rtfS3SKoO +)zYT8bsmyvB0FCweoRjUHxX%ujPOc(ZSs6LWokeioN)pWI&!dOopvM(A3$sHyuP_iJ4la;skCpti>p< +>FS`?U&MZKSsUx7VlKY+IrP5GTe)8Ja@rcs;o$_bUQ3qh`|at{yL1($H?X!1!L_BNGeLy~EO5Zbh$O& +A-WV|FH(>ot5jLq>bs7OYI$@Acr&{2!!A_ki+DHtX>u0_#8KH)ui50S>*wq+BC`?h0H<1Yt3_cG;G^g +=qy6PeaDAH+z}PThaCrazwE{YBk$}Qo!M|Y$W4oA$d#;*d?*%<{Nm4<;Lt1% +iHXpf+hu1*&WJsYsQ*y{T2CjCO0Y7?^$kvzPIvTZI;@*Elw=t1LaP2d=UVZ49hlT&B*5h^b;rM* +1PK`BIO5B-FQvPDB=c;vjzrxGi}Ei}B!p4~z0vE7WMCX;_%`wlH;L*pZ+ctXtUhOIFMPq$1DsSRHh+Z}=iqHo9?L~odvy};xrmptHP>k=22 +v4V>Z!KeAD{(wvyCm(s6=K=p#*@{q1>hD#kX9b|DrkEtw25cUDsWr@90UYg#8VLP!gqGD1LUts4T0gd +l@<1?kO{(aVmkC-Mw&vMK9xF!&ZT1d>e}ZFUbtZi;}ACA9diW&Fu~~t%l$Dgv@Up_(H>OuB1@+YtaMs +%&56Sa?b&oZz+v+6n%q6&F_GYss1|qZ`Pw@=Ao7AS#$lSp|5?X=;A39|fECr$kxnLZ2^p&lJ03716>X0|g&R>EE9(4&DmkAvm;AgD?_`QbGBDl7&MqKkLsHp +1Q9ilAMMXJ*MjP~~7f9(6^}znCqLOF`}nTn6I=3YME5A8#J(nUo$>NaL`j9NiQqX@~g-mZc+v6MFJ61 +5Sk*Mdv0!K}mICun8Kv-yGxaj#FfJ*VXZ+WBjGrU|?6Uf6TN_oJNipZ|m~izrmm=wd2juxm_*1yEuR- +NYlsj_MVEswq&PJWhX4YLa5 +VfvCWW;b(}vrxz~Sv6G9CrqdGQBL#49>z1Wum-D&x9C!gt2nP|=-BkLPhF1!LAcE%{+^hfv;wd_kbCX +oBzCo&6b|k4DO87TMKH5jkS@lT+d$M>8qn<(h#{HVxj;lxWB=n+fx-MT8OYoMl^^kLG4FE0OVvJddex +`|^kA?rHK<_p+C&q?!07OQ?)RJ7!!NmV7Hv~+lDJslV!CUGW8&QP=kv-sxdfye9AU-hGg +{vi1#@+p$3M)u;=l^s +8Gz>eZm>2q_JNlG%98gxmA@du(mVlXO#j$R#G1$C8y3Jl0<&(j2xKJn+~2F438h4htvI#`N-t?lp|0u +>sDW?*8PTc`Sf{cARAx?FNshc-Gg?Qe#fgYi&ZCg~iTViPm@>z);eWh-+3W+>kNqIs`Il##$mqqk3!zTuv&V_K=Y^O!C@Kgd^QO-0%A7Y&Y-x?I2}djD0|uKLFzv9mTUmYbP44;RXi76e?kyrrRwmH +cEs%;25IHV!X<=q1T#fT8oaD9la#B-?%RGY_qh4}A*IPRC2wiRX!PexmeKk3+=T^d2XN;|#QRsa6xn% +qGm{>`q!_bX{qM*f^_b~T&t5x|Skh*&iU6lAefoOp%x8Pi3?%dd#MM0@qA-wgJN~YaFbv-=j56F+-gs +M(iSOfWJ>`J2-R1@|l9yJC^;S}AXEOShIhxsgLMT#>nw@}⪌Ut^y`yPI56V}f&Crsj)7Qg8+-H~? +Ly3Rz5KgZ#eyeBxqZdss8V_%c2)EcRRzO97;G7#H&wwU$#vZzn-8iSaN_)aES!Y=Zx}`VH9#; +4*Q7e+7`=^B~!dqlDiv$@mYsqm%$ngR!mNXGkC`68o&XU$hKsiKHE`t{S~_2*9m{u^IC~A?Xn_`k>D1 +<<_^DKRlmyym1D(QliErRHT}IZ?Aw_#iPt9{vX7gQe{cFpvCi)gt$&6WW73}*2-T=+pzsrw)Tm_mT{f +&>&>hT#Di@KqrR3@>89v2qr#loy|1RERN#nci}#Q4; +A4Tp`0PN(|wY>0Ur&k?R;(<+}lY99U#`iX`&c`-|1QGp*{Mzr(8b&-~axf$XL}^Nu9iIcsUOBivWsg< +%DG=@ebiUG@a48=YrUti?5+*yRKM%gsS&9--X3N3Bj@Y{dm=m$|h`ML(2RZvnS++f7F9rPb^oac%gzo +c+BEBu)tvqx7>#iHV7`uuT-=Cw^+ht29X4z@KO?+7EAOTIU7@ndTk!$30;b;@BpaG8EhT*P1m~5P^;^ +{L$0pyQq*;Dri`bT@xmEOUpP)I{?h`M{`&FE8k&(cLtMf@;PFL2qJ-5H9ki3H+;uZgTO7yPNc8^oob} +l#;&SCEU5$8p1(N+3t^Z7gmsn{~{tD|c`wwhn+>x=|*f_rNNixz}9HF|uZ!?F;K8$6WP{u7S*C9{Rl( +7j|y^rHC87SMXP+O9G(7U}aO(!S#)f3t-ndkKF>pb6pjnDJ=Z2XIU@=M!Ay9O1|3G-dImz&+G1kJF5O +3&N%4u|YDl?-|hJgY@plJ3glH`d2O>;oEn7~@U3xRvQtqao0&%e;^+47g+5i)Ea3+=#w-U%>o$eSZ1e +cz-LZZ5D5hlWw$i_LReo9>hTcAJgXP!oVD#o&t`AIOSCo^Y~=fXEBxKZdtKlZghRq3R;7-D$-JD=A6i +;9uPXY37a=E*Qe?O;@y3^P}*H!KlqgWV6PLFmwexDIQwn6AIlQl=VEW42f7dal}$ei`>E8{9{HxhIhJ +}RQ!c2Q%YgSG^3Eob%!hd}cfS=`X`ba^dR@3Ffw)uW+nQa!-SyE-0>fOw18cj!IbDigEc*F<2yY$2LF +;&2)ei4x5eR**4XnI8k9RLtcQ(acv+7;44-kia!fI}xCdn4^q$t!IPUUSN2)hsMc;XCbrcfJhnUvv)o +7bNTN|Z9QzD0Vx#yq{TSv9zKBPz_@WpSir{s88rg=y^_GQ1CKJ~-1Hw=f0T*E_4dsjm-Nd2^e;BV`mZ +K|lri`jRgCgOqjZK;P(p4-@!5Hn@f=%hc-`8wI7eGen;nhC(jL@q06v$3q(Uj_ep3^HXDiQLSn0@e`V +0(9|(RRW40#roQxLxer)58#$xKbc`KWvyPrI3O9KQH0000807gYaRKSEf{Q4dM0F{pb02u%P0B +~t=FJE?LZe(wAFLG&PXfJeOVr*qDaCyx=Yjfkqk>B+zaCEK=?qXTeI!XkcU=G3uVZvlKZ7CVnGd|q-v=D*-!)7kfb +-gkYyx@Rfd*WZ4q+SR(b_20iSO-JVZ_iw6hzg7blhTO>?%mlYE^GxE|tlG3X*y +YpL;|4AgE#{ +}7;W4)(!Xahe&Xae5mWNWa6789Jygwcv*SGi{jfnfwBKm=c7)aF_Y$VimwdxI0kkCB&vbjzAMpsH`X5 +7~O4Gay7JW07`mP{5f)2bFfwe|H4zJflOtoG~m#LD`E(kQ?~M7a9SgtFl(pS*m4hlps|bny6h_^XQ^-MZSimpzOJ|RX1`%%$VrR~oH*MCDIn}DdBse1$P|J +ICd#|VFj3we&jiDcF+mpWK@7YhlL(0R9mw^j+8QyVF;b(NxEt%9Wx4C|gMwE>v9pYAo8q=Dck=|zF>v +%nx$X>0_->wj*H#~J{30AVCpb8wv&@yit}RCK>@w`5m#_dNP*ZGDIx4cjuH^4SP$r +r6BSFBH)~fDf<(HE?fPKmf~wcG|)=Ib8jz>OqIBxpv}+I)k1A4`91k@5wt6%3UM4N7=C5N5V7aa)`s# +y1J`@4a+3;zGUa+O@%(35{|aOov9iV6j4_0T}M3An2(tHH=y$DfPksB!CENl>$0UbmPy;(2KL6x8)IV +pnMDOO9dTvgku1igX%WoW +5(7B8V2QtO^iO{-rd9W)bI#g2-)Hol1+ZXu#D{bBvj&{NSUkShUb>RL+}^Ri`S4asH?9a^W|?+|S&J# +g7_?U-5)uocU;yfso_5xi)xJ3A_$@VM`ilol@MFV*A#t9UV;s|l7Krz|NURjq@8RQCL~*+r~|p|mIo<1w@dy@oer +t}1W}#wf6POFVAx{aSf8xF?<0V8{ZokVBnxbU`WGKHc8> +n?2ovn7399%3YV0+y(g`UuwWIy5HHQ3M4)PU4Qmllm{l@wtJVAxW*WfX)%?Ddvs0YfTJMT3`Zvj^=>Ot_Rt*E=mMuxEz}Xq14R03$eEVO4j#5@<&da)DJ4P!%Q)y(mAF +^_pIGJ8(77?p|IZ-pfnCfqLw=2G`KmTfG>!NC!3?+^0521&(7=r{Y#6*L^!yIP +mq_a62Z=ViKUD|G7M{pF?Q@AA@{AE%-fWc{U)Ab-G95?ogS>$pQiLX#~htck@ATycy5cq2cYLxf~vUG +=FxCg^@+8=)qX1Dyb)chj^uT+1z}Asqn#pYXbd)de!c?yVw4!?;|-FxkTJ9aHBrEOJN)ZzJ઀xE +)qhJv62T7Q9+Uz5iXiY!_+>mC0ub#NaTw=0yEV+!bN!mYE|$E+iOOW5qj(4qOo0GV{vCq3zEu|ZR!%MOtpd!--p|93KY+5Ik`4MP?vg +SK+zeBWmMQaGhM~&BU=P$6c6b!Y2n*Ku3}H})&ct&v*CctdV6rP&#IA@AFo6-fm=F8I4TQ(n|E?m>qK +f=LU8SG1sD2)cJ7h7ndt3!aoj!!dSj=2UyoVIvag~f}i;V^f7$INt6Gzd^qACmOo?p0do&t+N@Nzom_ +IgCrx;NJ?bBozA&RO5MMRpmQTTSDFpo>XL#C>g6X1P%$E`V960fz>cX3KM{ab3hfpme +a-|$ReuNL7O9c@DQ~q}@wL}C=abrG5K-huJg|2Xcv@4uzT@j29cTtxI`qLvy9z@Ri#VvCDz}$5UaieA +8f;%2v?mBo8aK|^x9aRt+rUp)Yiw;=>=zNc19GR;QK%C4-Z4bl~s_|KJs{n$TYxKBID{%D{t_M=Fi~# +Xss9a;=s7ayX$+@F9W?U%LcdHkowTbK5a3DV5P1T)_+NBIa{>;>cGYx=orid%(od26T;1%e)5P@1l@V +*9(@@*>lp9VFY)~1>g2jwXYxv`N|bl|SrdTE`v#kzZ_?>6eaoF3u0xL!fvw|G9mu;aqJFBArzgxee@h +yl8I+wjUbvyofqceRwV2F48qONsnD!@)wvhoWKF(8KYlQy2Ho7x;2xA+mE1$G#L+4uRr|E(|1iQ4u>h +etCf~!zAwmdZX$c@0`3)=))lp+4q8pnns6a=DY>3A$Q$5F`RPse>OTEa{q-3E +3rm^rFWIKVE)F@ECi+<;gBu5U~BOs#NW#TDpK0#u`)HvgA;Cr}3)94@rqdurZbAVRym$eQa4x|4!yKh +2ZpvFZb`fq6`xC1-v&u@62V4Rj+GpnCdoQBZ(s-?o^yur)zfTx7%shG7c18)fdKZQJtfM@&N605PgvXq +`l?p&|fezTuU=enx`@3n3E#!3a<+H;41S1Ub|=V_(_t}eS24K~@QQkxkt8@W*1(MH^!tU>sK^O@f3Mi +SyZ(vc0ECQp-CzfNTjKZLBxb$cXPd|>FN?hL@uAFiNc!+sj;MPOQvbVrVv+rFXtvWei)Z+590@(I+8s +4!%Hl#6AJ52f&&Q~reWCrsobJFMytdnY>Tq3A1c&kK=UWFrf_!4=orF@7Ezy%PLe9W55su68!xM$@$Y +fbBuBCl3n`yFT|ZL1DMX13(XEGh5IjvyN?rBXfm+t}T}XskI{3Kb-z*fugCXL3mk=;uqlHnv($F>Dmq +Lu^55QbMQ_kIC)2y-3rRE9Xb@?u4?gdwgo3{xlV_897P@WcnHOZ?}@wZqc8|9u<*S~uN~W|wat7CQLg +zYqK}}abD=RH@+g{S-`G71BPqVnDUdev$=f=nsqf-736yDM_B-gm4^k~NN~(Z0&e$OXKMesOT@JK9Nm +5sxOoJl^pm7#0Q(86aCH`;JjYr15k1Ps<)WcU*S7Yj;mw4|cBHC`#aiYfNwjb!dqcRVFnllIk&i@$Qp +XAtqyKbQ5>p;$5sHAOG?oE!gt^U4;e!wIo@*id#qyXx~3BMyQgUqCm1*O?z31L;wM+G>ZN9mO+o6$LL +U=z;WsGIp>)(I~?rvo1j&*wq(A&V$Y75vX4sx4P~YEaeY;igjzj{*+2oU%~0<%7ja3+3wnEUHR!{UM9 +a^IU((!l{|FuN|K|x%rgE2YGHjW#MSd>2DSrBf0ut#tV%=!i}L+uh1OFvu$n%^Ifckm3arjIgCfSdV? +nk4tp^e4Z;YOs>mxDh7_kiZ6p3Wda_pV3_X04$?|&}T_-ugvWn8Z({-Dpd|6oi +vEqWFsioGH%T`1t^a#P+Il22h9^^S%!K=$UC}Yfr8cL7|&G432<-ez&1cxcYbh<4?oYoX?i$?HaU?C`C%YUX+-AePuKM2h^8YGU3?}9@BceDjPk%5gAkXC|$`%e)L=s!$T-efGC_vK}i_H +GsEua+DcPj5qI7`u8eV^8uqD9li%}urJ23fc+f$Fho*!N6%OGi=P0R*H9MIms5W5`mMuFw+_LP5qXZT8<3--?>{o~Za-1T#MuyFa(=v51pKhC3Po4QkvVYLWN%Q= +$ZR4}?&cU_x(B^Bhc}r~$4V;V5eYqhK@t~VRq3;GX)2 +8Iqm7X4rkt3fsi8->R>mgNn>b3K#H+rxl!N99jOA|E>kjvpBL4PHFsnG7JTi^xu=0T(#>Z +j_jXX=1_fP4f8M>Ax^^@~5o#spLCJ~2Mw<=7+%Lb$yoVZr9HB;3UU#8}LxWTKl=zpw;6rP6($w@^tVp +4Ap3d&0-^hIS2$w4LeqYMf;vB5sfOLJ32uTQvA_EJS_CFKR!g^*6D@y^siF01dV>&6cINO*yTu5qu>h&dCT_K$j(N|EcbNLJ}Z$TaX +!=ndr|rj_Tb+#Kw2H2OieX|Q5o)uEd(Jl^CJ%IV1F)Y4Cp4i5S(vXdg~B9w;dLH~xa)WxnY9K##hgb* +WE8N+ujW_*>3SMe2^T02^CiFM=PLNG46I2=CAfLd?SRVh|L`t8$Xi|anWAxHRzj!~CTpNn0=&=C|quF +hH<$}Hjcp|v@82d!EzQhW#1v?^3#!~s2c5uzQ4SGpZIEDj0vQGyrWfsyW-wnw9n_tqIzgqP{8?|lVyl +nC*u?iN+o86IT4XGv&r0_n@U^iqi|OU})hg|vgpSH#frNcOWZ3XI%DA~JoUt4oe6ZtH!y+nm +NSR*5$85wno{kzvIXzM-rQZw9WpXUpyiE~pBpb`_Sc!!wRdx}3`7MJhKX*_S(sc=^;qZ{sw%K9NS-R< +m%pib`GMHIXL-}F&V6O47A}^#_a2B1h5iGiw>pVsD+^?z{e)qYepMk9Q>u1>i!RrdjVjF9N#yrgH(gNhNIJb1x;VBvFG*_j526Pw;vRq)DW98bLdNRnYY)gnxJY>6G +RpKUX@#QWl62BTOz+q&)rRVpL92Ey?sBptBUEj{thZd*{JD#b12Q4!K@79|HhCgE1fQ^J7_0v_L*O$dZ +IC4l(i~0S3*Y(_H9sTMp@xlv9R*;UF;xv8cFTW +6%R@(81!Tp7DWPiT)$l#iGWvJ| +)u0ix*`o;hmEK3RCc+%Dr>p4VR}NAx2wm7jC-Tg(FFZM;w{QImW$}re=#8HAH5J6MXXhBS1d +xdQ`Y;d$EgY66LDj(U#nj$bRADyYtj<8ceHbo&dc{;WYvx6{xT)rJNB24B2lL*vvfP6y!?;TO=fB)=w +^)m(+>92}JsBafYrY?wk4)W!EaKTCmuWnWky<*Ig10Y->rlcF*%edKWh!+o%G(HcBT&!Z#sLX2iNPRJv&2nJbO-Z~e|^4t+yMbX>`aW6%|8>wVtZk=2UCpc=(`1? +nmf-tAN*Trdrce#Ogt}9GC(_uUY8gO5ndLv6N)yy=N@R^H5CW1NK(RQE|RGmTNC!plg4+YcS6H!XUp@Nr%0BhikL_=KyiD&+>n})9 +0@`44isNt8=de>B3h)`6^Ra6Xx*4uKl4UE0ABWe>!6tE3`g*R=*&@K0)Df2@}t`=VQvRXZa`R8WBjDD +5$*Ze+wHoSZkS(tm!2ni)PZB#my8`JDmY@IbiDeeY+2N!Gn=5J#@~d(m46mp_6kzUN}D&&ELXu%CIj@ +;0tvx+VM^CI7oKq7q?@wA4NT`c4w(dKz4z!bRdK#p@A;sszVXw^V?Vcm&(T>i@__2uLl3APxl8D8H%a +<_>_48D^HK5z?slklM;71_UWZh>hzwd5v(Zx50?cp)Rj95=BSFrOY%;#ygTAejZN=9O>mR7m=NoLF={ +Twk7rG9LAvO%6?xO)@iMRqQ@MAPsc_;VYqVA4LPSBk!WQ?9q)aKiP!0TNT`FBQwiS_#d>>4DdSo0Z(? +T}-_@=&Uu6-SDH;)S3}@Q)ao!zWk$Xk}_;OtCZjmE$;PK|;M9GOC98ssiib&eh>Dcj&0B!vyU&*vS_J +{F#rS)Sok>IE`M3;xwg$I1iuZCEe|3J3S)FBod^z+Ic8hjQ1i2R|2WH-Awt$rmA=Kn8fsS2$NICbGCK +94TpDv!{Oso(VK~Z;}nB(cevx%W4TvOgsU=gtg>V_o7n_(3}HTTS|b($>TbSBZ&b5DL%$PT0n^xjx6z4sS@u6(Tk8~S?s@sY$+rxW8IPrCcU(@5$@V(mty|t$cW^W7h7F +I5p4B|zu40LV_bng$e;Wu+zpu9X#MA%eoZM&swPz3kRz>7lt)LJ~y9{1EWnG`Y7`j))G%$bP;OO!}m6 +Ww@BW#h^psvmiEOzW^GAKN;r``Fe|<)6ECoBGjRhgBcjHmv*DrUj{K1NSfCqt=`bZPeU-v$H824*3BT +TA_@riv77Hw!WQflJw+tULF|^b9_T(LQ*G)p^d}TwJAXmL)(z)G#W?4!*Dr=M>q*1qWhQ+3ezw+CG{9 ++PX*$`U<0YR_TnVm9kleKJ8UT~YXq-4xykY~kop~@U$}7SM{$llFnZ<`Nt0{;sG)V?M?Mvwf<<#dV>} +!z$4B&TE8T?gsw0s&eB2AWjO(JserD#AGJPbofuzRJx6vy<@MMj&3)Sk%EI_GpI1D*I9#l@`8DNfyxIjK6gDxE0B+adUfTa>n(?q;TkEk1B9O<2L^B@LWB +PzQ3nR7;b-2-B +ZD5mUvs_MRvhY;o}52hVQ#zH=bEVMc2^NXl&Zt! +c}>1dg$OcvYb{HJ0^$yK>{e@)jj2e>Vt1FI(m5G}+`R^{~j<1@^<-KBBy@yVCNT`3V}cBag1BTT5vz&@lapO(+>|C92-#(B2AeZG{N+p5QVnmw2Ywz%+L<3OGumrR9Mbc%feNKXo$&eAs=86($YC +FDvlOR>->5^SRS2i@kPPodU0hgNfA;X*wA%Zd#I>K8l;pZ>BQ&~^x#52K6j&95ivekD;^ytz(-!fk|% +n#inq6jl0gBaA~1+usv>~!QC>h0H7s#4=)oQL71TO9m4QussrHaL$InI&V9oeEuHRftYB`B7tz#NdMu +WOV|B}*yQFvIP;u9YU;O&J2fpTce@YZ<$k;7#ea@Z97oDG97kFxv29DAePz{r6+p!9}9a>_kEA}Z$-K +S8SMLJ;!wi(*sO+oG7v(OKBF<@KhVXvPR6Krv*H6xqo$qFFIni{Sgtp_rtK58tu<1?+)IG& +2UmJi?bygUp#}c?2-4};Hv_T(EY_(a@*BgtTzHl-7H26K`D{PheolL!5HPAZz+tQ90>A-$IdE1w +5^4GHMlCPT&b=7&RRdrfDpS-~z@~-a6&2FtO5sgFYbM5(rjF|uuYa2c>AG-n3pRinr{HvHy0kWy$N^EcyQI?2McE7xeu9TrKOMX+Zgt +=h>&9e3t$0cfO#M+`+tFt-&kyO68qB?l1K`pdG)VcKpU?>rHdLukdHFqhgCT;nzVEy!%^t#HV~u3*KQ +ebb%R11b1x>YIGVcYxgkejgBIe(>SEYa^e-xwOaH^kdVK5<*7Rf#qF59Ryu=k*`E3o6lwK?bZD)yX)Yo(4!cvi#}kBoxmBnb$;|O$e`Dbis{RD1I6&PtGUHdV_P4elGGNVA +lfY=N|*;$64|*f_{AQ3vU2}+AZ$0plPZsKNAb#SSx?=jdV8qossMdAsmjjE~~SjR22UYP)h>@6aWAK2 +mnS!LsW%8bWU{w005*0000~S003}la4%nWWo~3|axZdeV`wjQVPbV`VRU6KaCwzf+lt&U41Ld6h&&}Q +HSFt@6qar;6n3`^Eqz#)!AX>fx1KoIo|)$FtN4=1WG}RVB(^0TNk@_!t@cnUDY3Fbb%yb>08&+`Nk0x9u;qb(DM>;0)7QN`%_K01rG}EGLSw;9tV#N4%Fjh3fE!tMq!G=X)ss4 +nMR_t0yuSFe&8|?Mh^Knq@HCj7Fo$qcJM3$Flzdy!Jk|Z@YK!Sth7Pot!YnA{#VY7xbQ1IaLrO#u!av +D}xiR+1h2V?ak6mX|H^a>SsqPJ8W#`ejxFjKtXAYwcZ(TIpYPgKuf-c>*-LHPt-$@A=@#+sYPY;_minh7BV7X1u6ucpW_d5tDrhu!iMKzuS2YzAi2!=*!Z^7UO8-9@1jIKt~pGEm!puy%PSckhod(hpiCcd~-htT7 +lvAnAgPA!cb6=xXp*EEHw$Mgr6`$s>CEcS%^$MI$3B1@N}0Vg4)Ba@~NE0WaY4K|~j7=VW3mimFQfQ8SE^v8`Q(bG@Fcf{)uejvN-aOL +<3Z0j_!w4XjOrItA#v*sA{DxY=yA_{HU!^GA{ +#2&UMKdD;zW2t5WIAYJr&T6ki;e5Z3bQ9RFM1F@DmLv5dIR67I=56%xsF_zgmClBbBc55XffpEDQVc*Em42~~a98dONjsd8)xfAbJN{-0V@T4T~ +o!zhsG_QGXXMu$9z>EA`TH{Dg7D#?dg85bZv*HipDN(p1mJ${GVNoUY&6iv_1zrAHQ_Vn941f1ms +}@s=R0M8S|ip@?Z$2v{BZt6-lV^f0^u{}9Htb80$#XI;G0>wul4~`@Y!EbO9KQH0000807gYaRNV=5c +;6-f0En#s02lxO0B~t=FJE?LZe(wAFLG&PXfJeScyumsdF_4clG{dh@c(%Vn46SAiQ-EBwKZj`R-Y|z +w2`HhHM?7>F+UnZ_RPQn0U7``nkf3}t2{%VArF=($+`69^aUVieA&cVmdhFdjnmzyPoF+_l-pg?_F1b +=F570CUGD33-!xU1mHc2=w0&7rGib5duXU?!(O;VeSL+SmY<8+G`ldAx%3f`+RNt$XpYO`ueDzM%o2H +$&<@$QAw$1mYY5g28{#>+WQTN=wzulGfm3f|@Wbixt=YM*>`r;p+fANnmUj1Q4x1QCv{KpqXRTUSN;; +S#qb?9oryB0hPNpY3uKB8Jnw=RJ{=KS-t~U>N<@&8f9 +{jz!0Cbv%H*I0x+?4OijapS@t+6^Us`9EfkDuYi*Q&p6G=Ar6Rk?M+i&drSS=On3MOR(LDxa!2ywyDgcu5ZiTO5cQkH@4w{6`Fs)-`xUsO^ZMB<=5r=veqrOs_6EuGA+L5%dN5?I(3CtrokJ +&G!OgR%D(#sFJ}DD+3il9oRpV7L7ZmUZ?aumTy2ZftZuS(^A3m)m(b3;YaGBY_;P0cU;^l7FpsV;FK- +$7v+OlMxvZKSy%;B7KL6_3pI)A={`jXiXD`0`=hJNBy)elZ*<_Pv$TG0vAKj7Pu4)lUG`>I)VbRo(^Ep>WHNaM8^3+4Hraj$1G@qUSy^XYvsGCSeb1rE3AOEd +;2Nj!us5$FOuh|wH|jmL#b>||;)ZZDXhxK9DyK^$U)tA*QegDWx-5Da;!O!Gs=rnlV6t{2gLTPPfaP7 +gTIHRpE~nX}r?>-nlK5*?zi(^JaLn(L29|%oSLQU2kF$)gV6gUY8s;bM$LYj-8wfQoyRwEC>$S>VQ$3 +AoR=|wi?fGh}`eN$AP*tan7zR#FbTE}enMxcWTaq}y>j()3a`rTHT{S0aHW0t*YfYrutKV8^)9(vh6r +mkj4s57R`jDffYFqJ28lh#YO-j;PvZ*a#`{p!?v=`;HhLYPx~*UdCqA#63{H{HT)f%6Tl3on3&{;#36 +-keB>xZW4HA?n@SpS4$=k0_1E9Q!!UUhTIRa40mF+4{O@i*=935G-l2+2B83M*{3OG@$@8@-!UqY4$9 +u)s4O8{atLn2hIz-eb;m)64+c$>-fdexO8ikJ=Alex5SlR1dHglyt;Vas4 +cNS5$kIU8w#>srqinm59v&g7jn*z*!$tQTWuj$PVA93b35%gp-7brnA&CKt|?zX|ymBcVom9*AJ38K}Tr?{sp14+;wF)+Ckm0 +)SKf0<72q&NIW6@V;hwBp+!p&2t!(o8iSAfGaCCBhVfu~Y|$Hf2=M(a{Az*pzPKPcI_700k#*S)VHOu +O%~{x>m%0S$eWNLdUL3-RJs? +-Bu4?*jwSujA?l$oX5iyy$8w69{&}1iX85)uI^s>rZfM_%Hh?eou5d;pM4^;5ktU5=}xa%<AzqP0Q}c~bQETFBmd1K5p0_IFB_J#FevvQBR`;1$-iy4 +{=yG$%!zj+0wlOe+^8hWHut^etc5ubmlN1g&r3el!(-OFbb!YJ%Z{`w$*E=lmAti|3-BktX^LJF +AE+?N8A$@QlKrhmlj7hkD>ZxTQAZoC{3qdGqPtm%=ViYO2t``t6ghEA)XZjexmeXk{addc=Ye9eA>~8 +aEqQM-_AfO9|7dD`2al3G`ubTeF7StUyU8s$mlKLT>QFHOVTK9=HgDKTbpO_X+C@Db&{SGc(wpeiY`q +FBfyb$g&U&{$-OHy~2X~a{2g-OqVo|6^9QJQI@swAvobjT^DLF$HI6`)MZSzf6g&6ReNT~)5_Ap+Y{- +&rPU5kUX|Vw|g@&m$EeXpg@YDKV_+c@H%ACDGPS1jTi +jA|N5y$I{Y#sZ;Plf@uxm>4&_xR3`l{*qe|F?2FOZnR1>!hDiKO#RCv0+V>0baeH^ +okCR3hki#-M|T`$7HO{+%_BqZtz3;IYI?Z00pu7D%&+ZEKdo_`E9mtRng;31H8EE(yF>P!*erj_*UJz +*a>4+v+sBNUJEv8AV%?T>7MH|B*jn}usKFDpY0&0AyzvRlH%0g;tz5%bj>yCo929rOryk&v|&&%paD3 +ao4aQU{8&v=CYfaZA{=*8a4v003&qmM6 +;*oQ4d@@L}6;%p +EoKoUjI +1rA@qWh%W#eEq_j~@awTQ9pDrNlOQXK#+w&!{b#SSW7iv=Da=gFJD2QS+uRrfEV7~UO2k5cfcUDR%=uq7kwy}owz>^-Zg$Zf&$czMw$U$tUFX0cB +L%|j+x@yXywpF=3-k>=f}L2E#yPZ^6IY~I7=0hZDaZ&=+=AL)f7+uV00`gd7eL~>VnaGK@49ORdJU!wm6P&y$Z6@%j`^_^YpxhK7Sy>7^O+=_CCZi4Hc97Ux2i6tkge3I^% +Sz*6#ouoc&GWLv`>wS`k>U}HbP;MDFk4uYHM=p#o@9OCxBL0DsVlW+)PD476^fw4T}XZ3B$CwPDn`9y +bd3%h%J!TTJDPyMi0cpuMRA~tRLGh2fZFGRC5piW~;fX799wMTnomvz_1YN<+c5@>jIh{G^&fn7J*Lo +dJse=(o>n+SM>2>3r)JTv5;MoiivI%RsbtHWTn8>Dtly0YJmY-HwB%b)9jPT$K;-#pOQV_7)`}%%WwkXrN>J%6CC) +w<3x^lHZ!F0l@+lQQ6(7PD`$thjy48GE`~ER&~Qr5-*8}V<|W@J2AofaJs97GiKB>t*>;Fo11|FC35Z +YqD36G?^cdT6%cl8!(3ixIEoHdql88VGSf@+X(gCXlyAn?lJUC6b7<(cT?k(xN<&kKog}<_HG_x#0QgjNI)QSh~_JIgQjJ$V}`+?|1~e +?fz@UvYo%)7|gy>Q5D1MVe~3*qa9XkWDAp=gHFgmw+KzWqw#{65=8Qo(K>~SuElh;i=mg0$U-ac_Yu* +pIlyjqic!Hk6dlXHNF&gNCI%ETwD9?cE=&-8t*(l`e5W|uh|&!^7nLye1bHSg2!$GyH4yT)@H28~!oU8lXu_e1UClYvAl4Y{X=Y7idc_wm@D3F*K|qZWxQ{dFWDg!( +7xku6Z8sc7YiUHi!yqv8LYAX}7>zsFeh=a$NUap_DJK2=eSy(qK7BlW`jj0bl;O>)FFQv()z37Q(TL{9R2a< +XD-sGK5em_AfF?k#2z2oeol9_E6)Ih(+;nu24-lOA6jRl=o6WB9EdOazL2 ++U=BRCFmmKYV+OlcyMTdxeB2&7<{Dml78w8V8DrP&fuO)-EQ=%Zkdgu+u_AxVl|HWjIcJnxTzlIG_(W +YqCm3lvgmTUtDY9oFEd_qwkW8W!>yqI=6RNHK5( +*EB28=JeB`35@(HjoQ8s1x`ne9QxGt|Ski^Ip#?_~ZCdV)Ak4ck=VUlq*Rd7Dj8N%`qk##qXjdlyOOycuCF)9hR$PAs{ +si@{VF*Ba8oz#%>faQm%B^-nQsvSnaZFF(~KH^jgQhs0`P-Ec(+#JLEVz!y&hJ!3GJQryYGig4~F010 +ITRditpacM2g#FdQdU}7K_>b8MlfRvzGi~)mfxxsze>sX}C@#bI=Hh_^L8`V)t7v +1-Oq^OxP{YH$S<)zo;DbLimEWKZYT&2C*rs1Q^OAg1MoBfJuc9HqDyyl%M+V!=UTqXg)SRxqW$cvf3X +l*tW&M*YRhZGQPeB6XODjG3Es56ZLskLIkImU$W0E=w*VJ{)N?2OU&QkWvwRjG|I7!k19XtSKj;PVK1 +d_DD3I6%dqLPYCEpAWXN*nz>U2t&DR3d?Vj={-tGh8QI501U#x^K$ahY_`&RVO0AfZ580Eb?%-nV>fZ +9rak3!bv@x(4&%ncU>kC?c-0Z$#_#OwE=fbW->{7ymb?|z%@g^DE``H$(MdS+URYDlLGrR{(TA4@%$F +!}xt&L|=VL9j_wa +6*a^j9iDZud??0@(IuDc}R?+Gk`i_ORYEj#Byu7LEtU-hcOFa$U~l&dU(NPr0K-xA`{I8FRlVP0bzrrz5kV +NRl-v8cn5UmH&HC$>%K3aCOYv!7hm<+q)L>>)y~BP##$eAMFNX}RqTJ)5{PxF3rM1)OjvDCU?Dl)Z%5 +5nk1L|=ywf$gDyTE0!eyiiev}0OUL&B#k8y-rRp-RYYcFoQwoJ0KIF#XNv^QDO4{ +}3)Ty@+LAjCqRhAPEb-6a(3v?^a*CF&LN4dfx&^Fa(qG#o*72o7bv(>E|CO!m;_n?)cY$`j<K8)^HZb=3hn8{W9t8dow9tCa@Pa&{?1UA|7_?vm6{SHO&J#jIkP#= +1|x){z%>}x_;)QUQ@tcs|aZ`Gp{_=s!u)E!U}>(zwcmpRbTO!-Vj1Tp>YXW;(d=6Z;d;HMve!c^FyZ* +dHxvJHffjCfX!JSwhlmBXYYU+)8j*$O5{?8b|yQi+)XE905-F3Fq=WzA`NTPLw%TulixuK4h)HfxB{6 +3Y+?dM2dP5U5)a9$VgkwDOFjtGhb*ONp1Gy6)}g@du8#`S&~YvG9{L5u7Z)b#eYoxco`7lN798~NREy +SmfJ4ql%4{0Xnw4o$o(A*AST_M!l+HcSwpbwD+O2ENhq+BG@P-6IQ;u$n*F`K +KgAnE2LwYIJ|6T~VJ_JN-FT)~Iz22ger_JMN*^tvGk?x5uL#ksX^#+{uI(y}(4k2`3i8*`!UCJ19n@> +oe|;O8XTu`f4H;;Yp3{3J9Pf&a^|7*Y>I`uacRSOA)W_JRj+LsK`pQ^E%*O&~tm6^HW=6)Z^L6pQ-0r +usexLhnKqN!S8Q&uh7Ix=YD(uXpoqBfYdB7ev2?y>!6*~4)ZgqC6EenqqZg>6Il^9 +pVsb=u9Vk8->20>p^e{#8B#@uA-S2CT37$E=X)X8JB)zuCt*{ya$K!DT4TsJ!8&C1#14evwL2Hiw7oz +dz()e=IOijy*ND#J@DOJk_cI^rdZ1-KywQEi8re!@(JOP+75whx)I7}8I8v22bxA3S(as}9X{_7vTy% +;?6na^N#=K}<7-?d+%F-~~;2#vnDt9~^^ay~t+kREoF2vf3Mh;tDSiqPOR%iJ(bzFGCRtcaZ{lkV^esxgR`mC&{37Kn6H3V)){j7lG7!fq +4g6)yT#NvP{hF*KaakP{@^wWW4~nODe5pgpbmzaoa4?uIGX6iYmp(Cv4&z +dq3B?YlLRJKHS}M2kTud{*mMdk{CWNMx7laIgP;Ql|2Nq8fiaU0_NQLA*6KV~rKq>niDEi4&Yq#qDvjuZC +gnWcE>1g3_U$W%X;3B;WZdWL1{Wv9M?MG9bvh#2K{HAJUbJn@d?I|G#mj=fK^f_8Gi3t$Gv>fD1q~V_ +`D1E)UL(v4v?J+ynv5eny*-~}Y_!1Np#_xaO3lnUckZ>2gA-)Q(OXeDuptN2k#kJbd&>G0j+=c}>2dq +gt~Yj;c@qSh1axQr)z~Z@smGf!nI5gZd*mRLCk`JJBgy?Z$)e`(EP13i=Y&|DT8@7;n8>bL%73qWw(^ +|0<(Op`d#5l{rYwF(rX$Rp`Jwzjp5=S%7w+OCw!@LzAVL23r1F#>VT_Ou5%7;D+&d9$IIepWX!BOpVZ +vC(cSS^qsLz`E7Wr~q5@M>BfgE_A(^t(nqm*;8bf{*LC>=z)R8&A{REF9WW$T5M9GF5JZ9*YkoeUDeL +Et5ZhPmPY9NS3n54&Rog@*0!nZY_DiqH^ws*)6$FnncCusZ!lqHxi{!|lj;2-8DaIPs$nqR|8v_jJ&K +zfZWN7e%)XG4e!s!S2>X26D`PlA#~g09aCrz77Hs?>gvWX3Y*1bcK1ZJk1f^)@Npd%gE#*@~8XkL0oC +adb-H5aC%0r_>?!3sGzEvn-xVF3_3htQn;F&7k`i*(;RH*4&aCak!F}_-l_H-@85%o`*wt}0`-Q?ITS +8}{Q(0yTunEcdBPd_g4_7K*LNU9rLj~14ij8{PGC6nW$7!MF?oAnQ +XdbD_#dbL;ZB^6l@BnSj6gQzx;M>(f%BSbFh-P985xK0n&*>XJ}W+)Vy{7T(qhOLPB-wV~>C^ap@cueHpKnX?PD7FwAETS#lT`VvOgHXW0XD?P)SDfB+X~)fV-Yva`Y{cpug*fK74nUKYq;OkO%o)J +cs4`JWEuXDTiqP8qbro08s%_bElgyP_nC@8{ykQ#IGcMAFHiaw-D}p<@b~NkP;LkCyXdk6*1X?c52!PW8a+_fI+cj{H0GaN +?dofG<0yn)<%-RM4ud}6PgS%CX>pKiDCrY@i4}%V}A>0^url_yqKU@hu8DdM~v3xK>Yoqg~7X}55MS# +Z(d5&Ik3+T1lj*m9|9Zsj@L2Y2pdq%{(^NT=);~zRb9GsMFuahCK**_>@)v8KJBcl6=2ZN-M-0X-~6Q +#5=OqH<$s>le4eVfpyE`cpU67=l~?zH*L#@kSi|-;|FkNN-K?SyJ=@HNk=j8XgnMU4gnJ8XT-Y)^w&0 +FmkB7_eP-!BW*r4+%;!;E}gQ_$G`Dwzilgddm34U5fOv@N^napT&vO+k9k0iwff7En#FOLbLa`pyoB& +ayazvVhRI$m&=A=NK}MO*02kQQLfh-iY^I%Q2RvT;&>9YB<*ahJ~Tkd!%sDMO;^&;wgYNl)Hb4d=SJv(ug&+did2nMC^N?tcy6izr_#%p?}vda8i +vO*t1N3pP%+SM?^z$()+z1M9XD}x9;r~{lJVY{7+l6why)jYVF|o4P$UQNKS|6XeK`|33R{N#~8P7W<*YyW +WL3jt%Zfq+^NaLW(Z?Ydxmb)xO-Q!4kl_(Qv|iy4r6PG5(+b{%=AW*D;>4n9NVyf4e3JP$Cet$ahK#A +EA18AE=*N`Zjn$%dWu<)n;+LqX+_}O9X)>=+7FH70qj3U8aAt711S1nUE4VyMI412FsnV3HwNshXo!t +2*6VhX^U(k7{BC*qnhgY!=Re7-mAn$wC-HP<9!wnikcpGH^VQtaQu_ap#WiV+ia-Z8Mgv4RI +aEG4N-1;1!|Dw@xbfLkVnvCkf9~~y9){Yp?Gp`zBa1Imz^$S7`UIsSE3%zvf!;~jReZaWLGWS5h)6IG +wA}GE@7eqUM!;zQ6&BhMF*nE*boPXH<=t5mbcL~L!gZy3XF(ysKX+yD-m;o+3PFJZdk2IOIfXO!B?xv +DSlLD*A`dX;uOCVy+$FL0FfziSMKI3kYzVbJE!kp8H0-c6qYuo@R)n&+RP>6{I-4x3gtE{cO8hao2Ej +I7KCOPPR}Jffpg-J0n6pC?A9nME7|QUI>4{bjo5o%YN8X&>fbw+koVu+I6X!KkSfVyKWdVHY&Rkdm@nK4jN|)KN7lyF* +Q5^=n9WY1PO;H;HTZgNO-O!w(VMVO=h5y#H4pkwcqtviQ*m3G*cZM3G1?|42EDrd)TX2WzlC?gtEZWD +R8lG=h<@-lhhv32smig>q3EAl&$x>62FdzK|eKq=&aPcV9&DIdSC4doHr`D<+?1e3b|_W>9(nG7zHAz +1ax#7ulwyBNKNYrQ@hOb@Usf%6I$a5oXwL9rveYOB}$;Sfbyzbn*@6aWAK2mnS!LsS_Tw9Kvq001iv000>P003}la4%nWWo~3|axZdeV`wjQXk~3>E^v9hSKV*hHV +}XJUvbc0q)ZXeR|6iFt=Ui@YlFsp7`#AbBs%6MkpfA#HH`Fc-yKPP&~k!q7^VkHqIk!<-~H~xqV1HnP +${_;j~&y7>%~^97VM!D@)3mp{#sNvhZ|w=_szQ;eq$Yd&f#5Wg_5jUc&Vc1Tefd(Y3!llW)Q#rlt=$rV{@nUGw=R%r-2BtEx{EXiSScnuE+SUUO +T$FEvcy8^|GYIyOpzke(iPUV$;G+sGf!RVB{-59HbJ@+}N;AXajD`>s*ptj+B$yyXs608b33V7{-Ftq +koN$$*LV96c$EbI>Cuz4^*$Q{?hLi(Uo6P@}dd4*Yvw) +r602Y3@gKG8yPy1$2&^Dpm>UjiAAt7MK-nk^&UMSyvALJN#hcSti3+W`mO7!Jp$5ua@zBViCf>rNiEp +PW$ayP8>^M&Ic=&Q|E6C@yU%&`EDTFtv}Iu)HvksC-<79?OR8qY<$Lkt}q3!+Oe8@8<=*?3Fu|BwlM4+-9 +iKb4R%oZI9`{ym|<(d~aq&N_`b&g*m>H@r`2jkkPKB;S2v_p;a|^IENxbS6paDpq-JB1|zAwNKAX~oexT;Qr +-zjT^3I21KQ_y6Ydmmw94yoDrVIvR{CF*ok8Jy7rYZ^eHF*r`IdhUi1pc3Ofj9)aN3!udgIHjdzs{p- +&1JLYEOp=wtd`J{x%8?Rp{swf11&sShL4WABpT1h{)k6Pu|4qNU||$y>Bb;u&)eeAlE9~XH0ieFA$wP +OC7a4W_MJi^m)cUOV;;%PFB+OB1LI~qZ%^dmYy-%aUmhY*aJRb!@WJA%`yrYrNaJ{!v7=NGb+b#T_8oF!TJxu;1{0-I0>hUV}z7*xz +b`h4S5dYDk$Y>GLxtbClZ_Dn&~($eDS_D@>idn|xv{<543TCj1OxeH^?zF*9!0t{artp|qe$gQm;P>7 +YUddgHrPXh*U5BlfvftZ8%k>Ymm|v%0<6mDXqE%&->{DK-~9y+uVs7AfgbS6yFlJ@hYS)C|$}Gwhrt3 +TN_cu7on?Qo7n}jUen&mvyM1*}n<8 +>LxLNCY}gX%47|-Fcs5v)<^WRRmPr~j?gpgv1xR42CEgkIw=oKpx>v-oqUk4SYp1Sb@0G?Y?9|tz-{S +2aeg5v38`n5C7G3!WsCoo$}(93dc!Jc4cm4Z*nhkX=7+FbZBL5WpgfYc}pwG&sES%Nli;E%_)g5E~ +(5(Emp|PEyyn_QE+i}a}4zfi4P8m^l=U5N&_n`$w@6aWAK2 +mnS!LsW?aN{Wye002*A0012T003}la4%nWWo~3|axZdeV`wjQa$#d-Vqs%zE^vA6J=?C_)^+dm6*To= +jy$HNqz}fxRIFNZEX0-sNsR-X98jF$o*DYgkYkdgbH;*zG|5{G6fK&f4Vs5u9`aHMNm`&cp#Rb)visC +u=vr&vFPw8E%T8LDNpyz$vi910ulrt`S+vb2%Japp-?c2yqiVBl+CC~~U9;ZxEa&f|ktlCE`D?o_`bE +=jC9BY}Gtk!Y!vVS>NyVJn!R+tk~Cmai(hMO;q)`ea2SG;uYH{P!I5BH2Uz??HhMKyd +PzXCjoHRvrRINvMh=}tYEiKyLdEu|IRzt-@l)KaQ%Dv`!{cY`@wtA=js)+`2K@?w{CwMir>648jVV}h +$>h=;H6{~!E<>+f5g^J6&D?eO*)32x0{;rW~WuzuZ%`j-5=A4S9m>4t1a?%RkLmi?#Zq=Lujn1JYR1M1kRG%+*RmpUN2klOF-)({1JE)REKPD&SOF+XqZ@2d0CPt>(jtIb3*A&Fnh#7YRihHA8Dk=;S>t`k8-QS#u +L_tyKDFn0v=(>TOE?~J~8?jW2484?+wW0)B!=7u6bWBYmY(i=mCcSRpFD-$M9&w! +pZ7}9A@UrRvsXYe^O`}HzpbRyKVOv~144pTNL^C7@*e{}Pj+Z?K3IzjwAsC`W+6+U2VXS3W)QPq@p$) +YGI%%VA(XVI>ApG?XaIkG6!M^tx*k!fBUQ(7!QTn4=epEHP&fp%w{;;_PT2vhK@pVD)7ohm6{S +5z2fZAsc9c2mEroMuX*F0mLy!AfxxaaviS4`;p#cFWBiUd|h|N51NyvdB;fdP=OGx|3$gkK8kD3Ca=n}9;vD_5 +XsBVB#AAupK)@_!fPXZ+W_z5=bz`#b?z?B=aQ88U2Exm=){<<8CJ%O|JmH9++E0H2c(M#dgaX0xquwK6&F6sDHM?XIrDRLEt0j#@XK@ZA}^B*X!`FjNKfyUI0^7>v-rGInro*#>wXDF`G +*t&K=7X$*DCjo$EtkR@_76WXF)vP3l+PkjLiw&YBzN52}MS<8wOUx?3Wswn`k(bID&MJiOiL07(mD(QKJhWTYe`2@I!dv4^G%$bL7YU=o5RJ_T#Odc^Lpm?54${ +v=Kd2onRVq7+swnopoIiY?B_V_;8;W&wHaw&t8htP1Vd#b#C(kt6%27Z!Jhq|3;0RWMwY*|+<{s_+sL +E^+|IO!x*&$my8xKs9WtPfXco%nD|KQcHA6#ws3N*j$MMidq#)qatV;t0z&tP#K6Wv*3$ziq+91Ibep>}ONAz#>F3K5>uZ#&!LEG|`M|-YrC{# +f2el5KL3PP>OaE21=7}n&D2anCAw?U*HOZgr`DCYsDn@EEkFD}b87GXSxvEFn`UKtqeevkIL+{B!dh6 +IEq!sM4loSJju5M!Dq(rR)8~&!-{cFc|4QqHVyQ6nRdh5wZZG(X{()4Q<9D{7G$c{5zbAg +h%rN1u2@{1vkzJ6((*lQ78%(OX&cUqc%>yb@#2Z+FVO7zcI$&GoYty>1*RyLsoiQg?z5707$EXq1?~o +?;U#jjss~2XSlvg2(;xLUymMA;lrqzeT4db+k&eKUL)6&56KIe_YZCNnBs9F^nj5XTLpnc$5^oTO`ju +N!=v96Pf_6-9HPWwzi`OrdRbP&JGbIC2!$`@c@Z39JOkn#5UDNrLebU^;1J4I_~z?4%eiqD-Xcf05ai +L4$L;JL{Gd3iHoHwE>S_N#PQc0loy^z*eVSr6!|+IfvC0XCT*&Z6iw=~at~BWqADg6tSaoy~a}lgWOM +y`jcJSQ62S$ONz%{d%Cm12y}zp_;RbLu=WYsCc3y4mr4GRiEeD4(r%@;Y6oghs!>$ +P%`hpX^11WoD&fxdk&q7SYjn~^x+7Hp(f{@kOY}jBJ3S91^aNu2=w76P!o^#pX)TnCSU7B2CEG3tr8~ +yVaH8cE)#9BOd`|p7Z#&*+|9n#LUmU`Q(y)K$SgD*t|9-iEzr{aF7_m2$d66p6H^1?x>pJ4tDw+6-c> +ECp#_BzL_7mnl`Cf0U)YzE*n{VIl(b42(S9n-0Uw9M3pN=FHx7jTXe>D}{k5yO8If_;va3w}pP78+04 +FV-iL+M>G~`s2@CsPQxTw1d9KiM@b`aAFJkwlfH!&4)7KJ8E&1{{T+5BfW^>t(Bv*KVEp^h@26Gsl>i +tCid5z^-9ShYkdlMQn~xa#*vR;sVd4oH1fClBuur|SfjWgxDCnIvr=h3Vaak>-?tfq5()4X4}%i@+w) +B7W?2eWiU8ZNTNl)6hcbOCA||RRVoADtcI~*{)|kx1d^u+H0hfBRu@JD__o;5k6n5=HDOHj3N10ZB(qe0&K*0T83xWg&U05r=O^YwJ5WlUz4c72lkI6=` +deqAwYfV_2rs7vHDrvsDa&2Bb!(RNXPvY@KnXZ`?mXk`OdOK-!Ii+R^0JYoMwxSUcTe(FyTvgo;?o!a +vW%fp??QXG(JO)w1eGO?M%}iD~I|#$@MZFYJ9#zry3tGe*_;LS&Xh5vPT+bJfye*>eh*2sVRnaEWDbp +a?>3G1s?VdzNlZ|ofW`H_6RmE6JLUck}WQjXfc>%ac+Xeg_0{SoLJ#;bmo-|cHpd&c_ot|TMVRaoRhL +KK49^AL~+Q}8%h#-xkldwjIFQ2kRpS}IBdWNcAxWT=@K>5fb7e2rB!QDIe9^~(Qc*D*h>W +T%!WleHUcsgea3cb9a8%_OcFESgHS0R!`as-p-IA_eGWlQiyQa9}f&)fajojBjtSd3k^8#v{5AjEHJR +|lbuqeX!!FxQL~hD`!yL4(i+Lo1J=uHMTj5IB(7$kc+#k~GgTl#%D-Nw62m1G^g)1)9sv&EyX^;m-{j +8Q~(sa4^n<0|6tNXlkA(!>rA7PZ7~SZ_3l5Bg4UG1 +5IRr--7+}*ajn?qyH*=Pnv!#pz(VI=8yauCDJ8hZo1)!M2>l!;2$rn4smx1(od!R@8<>-P1~RD4=i-KMsOQBjV +Ds_!NIpp7FvUqE4svRbPKA$N^=#86VL(rYsBh?8L_QQ=wIhqeC<~4z{QO!NEzWJv30#k&E#u)yg*l*P +YfCg7O`RlCsnnOO$0)if&f}abgFKHXG%@cWjdwXyonz)cYQN +0FOF+#$-EzXicNONf7V{M=quH+KRmBoqn}&60cw*A)vaUXXmX3!+sl&lUPTTnUbx~_I<%{#hA0-88))rYUD3O4|+^44X}FU)4VH66;jm4-~E%gcc-R +6dw!$YqmW!;LlJ9?nkw~{Y6^8n?Y}<+>Y^RU7+dht7(vf5C-@*o(P^Mxl&9cH+hgL|R|#{9~|BfrR`F;W4-W#=L +wuJWgJ`MiJyI0#^YLghsv)Sxb3pf6odhvD1On=@bV^afj3o2n1bo_A*-?*MhDyZm0ka5u1=0;GAcecE +l=yeifql2+3^kIJ67an}`Vt3GpLeuiUYek&kzKMG(-AT$Rt({&idF<%`08#_9Ip${&IG?U(+5q@%oZ +mJoRZ07S_+p_Wy_Eh{fecMQw8sw-2r6c)h_5~_4-hIFyyQqnS;mq7_?B0CRjge?fzE$DMSF$L6tLs7J +U5o9Vpon&M9!CO^M~{P`iP&AwDZpMyJhfVqV-{+MCmGgAJe)e7_dm1xgkGc3A$b-m@&&4H}17Y8}2IvTH{660?$Z*R_M%t@{Sn)LO@TKv_Zsmt65PmJ +xD!f@yNT}b;Qcuyui;$(JWQKu!u0G3@#dT!(+E-3_Qc^CL}zYdcBXz<`l5w;j&&{4wvyWP4H+5)3yAy +ofBQNQ%d8>F(z?_VL&|4pqB&*!{$7iIJFlokES+&V_HiaCJ3_EugXv0l%55yVOmE{mtKj-v?%i45(U| +HTTpH&M~6>;MK@K?zd9%mooo)kOe}txioTwJT#2VeLtiUYRKzK8oLYx#UieTCe4d`-P9|4SbR(FbKOa +y@&!uV(#1nBIV6)6uz)$+Jv`EZ;{KU=@Xj#EON|9LnIG87J4?l{4O}mMRpTjr+rK2PZ{2YQjbF_^uKV +65@piqzrU4e++mG6{ZTQ~=-!ITYr5K(l+ddj73_(`aXxlJX=RGG0BI*oQi&L&s}e%b4Gl99Uoj%E5pRZ!%zc+Ubb?^`wD}1AR6dzNR$XO&rXIuPPl +(ToC!T>MDUs`6I1heJy}yw(u^rfE>T#WzQKf0R;c>i_dEgq&MD(zTqQF=8+N81IoBSPk)M~clM;SEJ! +0wME(HY>I1VBL$J&qdFpw6&Qwv184$$D7Ek4?HeYMzUF-AEDV~<|!Xee3~@J`*G_N^3^4evZM`8*yS*=m7}6tIM1^UvU3hI1%v +d3$x-WF{lqsSQPPIGZ^7pBIwP;tY6rup#i2CmB$TA@v(LFBcQlwCRr%%&+7CN$(qmoHc`R4vu9&^YF9 +jptxWVoNcw_)Go9_~TLA`ig7`Q~u57qgx40l^Q=+_Ok)9S%e;W8YMEQ;N}YX8OxdVK^5Eh~ +tx>N_|Yw+#oZlyMZlx{)p@_3gT1phY9xRU@bnJZ4Xl}K9@r>?Qpl_!`1TS=jw~(A383>U^@y>@Hr0b$ +Y@ky_7BhRrmw~4V0~A0p2y+O#u1!DAMocb{BH{L*%<$45h_+NE83(8e7*Ja|M;tCfBE#cPygjN|N66M +|M;uVpZ>$=zxctkKY#k{(?9;~XFq=SPe1wm=}-Ub2S5DppZ_hidG?FHdG>d|{LMfA{cr!|Dc1hz*Ux_ +a)BpMRPoMqd&p!LNpMUo0UqgE+|NQAMpZ(}hb&!*yKH7@n-v-9gH=@G$=+8C(+JTItyTxuDUGH0l!XsdO#NS;PWwoi==)IynX=;#rp;ix8y9Kp5EnGu`>TlrPkvh6n7OTdocc +f@s;3on3K@#Ge@GpRgkE}X57dpX}cGy@>er#bZrH<#g>OH9MaXXyveTr|H_{P?Haq>~OE>9L84Su08) +Ytl2wDGM1^GYAhm*XyGH2PmqO9KQH0000807gYaRQX-Xj7kas0HPxR02lxO0B~t=FJE?LZe(wAFLG&P +XfJefWo0gKd9_;GZrsQbeV?!B(0L%&6rqtXYYo5!6kEG%@7i8S+U&z*z)-`UnO^Y*UMvlehuj|XkRV< +J2m&NP{ve;^FUTjPs=AwO-XtaK5Hg0{tg7z1^r`A@Z;C8o)jk*LmWd?Kii*9gco9}v;j*tqS-I?OUWq +IXW0zgjdCX_C4f1$FoMpM@!S`Sz3Z$p^I4mngxX#iti@7F!E}O1?k>X32o$)k+kuPI@vCp|~pYgJewW +#mwd=InJqF%}7YjGn|MUn8Ztczx_*Rq-LREsG27F(L&TsHN`YTr)u92>6uIj_R?m3qh7neav7P1PcSy>hJx`GLNGa@}HwxwjkCk`)p%c0=254r?!Y->7wyj0PgZql)lAgsP<>iQA4?h^v`Ar^ +zY7w(9vn=jNJ&DVVMWW2(aL?8|5l3K!uE>j`=B=!q*zRKZSB(h!viWA1(iR)ErPCGqc^H>UD)>@*D&i +X!1R@nx5ZJAqdAxDE{#*3py!rfz+x5?)4L9a1tGi=XA0d=hbO%;kFjO3<&@k@MFwJ+;(IkMuiYyx?aM +;0T>`j*PMMrT@#;Y&&?tYTd;!8!lpUiObO*Ok@+TRO8sUsqaM5y7GeK#QCpA!62i?SfWghK~YVjj28sc=ZhWe*iGk +10Ms#Ixb^&696cA^&=sz8RU#Z7D{_=#3+CXvy@*e&ts3vu6JU+V+qXv60%ucfQ<^4WRchi9(iWeH1BB +^aSB98k;71NhyL~r*dPt)rKCt_940Tj+$qQU18e~)ou(54D^EXNFlKi6Nn0sa0Gf7>ZvoSmMwY|Bn;wn9F<|84X3w-4`s4S%ZjUbh@~lJ|Gb+dn_N{|)@9)?aj +Mn)io4HE;j;@WUVBPqqH4TLy0%CxP;G>+{x980|@T#RGDPEg(K`7EGkD4>4;a3SY(C1vNmW*T4_SOph +Y#@tD7ZoHc^@CXC?&OIs}+FD%zW1X&vIyJO&^g4Xoxl4iT=0t{fnkXerJvw4Gk-em^(O9)~gwY@d2Pa +Nt!2);c9HY3VyVUY?Q7{Z^Sbhvs3_~NC^xK*R^ZISX<7jg9^3)a +Iu>WroF_qxN;nG^|#CcA&6eyw1u;$m$75O?mfBte6Z2X-YI<~U8(tP^p`ISE7p2R_Bdud=M{qAVcP}i +HRcLpdx;Uc0+mVuK<%!xt70q+L)@Y(o|NBIb}OaJ&TrN*7npsPOGt<47?DSw^@gM415u?sKls#h748y +#>&`wzx%>(Y3GU`w-NEhxMb}~X~XyT +#5>$)fq^Bx-c4JYbN8n3f+yGzOle_rs7xM}^Z(5t)8BG8#TY|#fBUB*%kP#Otdev;kxz@YMEM$SoAm< +poY0jY+;I*-DN4@Kc~Euw1YYsw_N38-h3_JEajVw1AonuD8So^D}@W0sLQMx@FpBeTJ0s;Hcx=0w`v0 +qUnWLN8dr4=EVmRu}{z#GuCQ`NkQBE2^T;{xG?KLhX5=-FMoE05!O@!uV%=_JTvsqmwtCZ?HU!_bTKj +8S#^8N_?PxFq$jG-bL>lPYa2u~T4j8Fc%%dGPI5N&Q%n+jTuU~;{ +-3A~kfZzz{08HOV)*k<#L%1}>p_H%FK93Ask9sbL7G*V~D%&0bPqZ8;tyG)m<-BHoObvT!kyGL3Z_H+ +^#W}{Jv9`cPO#}V%F`bj@yC0kd!5hjT~4?*j}epVgsf4u#yaXnxhZ;kI}X$OlnD=DNZ&mXs$O++e^I- +zo}jftCKpSslW&HD`8({>B&4$oxOh|>?~Z0+7fqoSsAv0?w8t3`HzzU_aSE}tew1mo#|aM5Z(YbEt&u +k}?^rtg^K0UcHVy;2MShBlaThM%y<{jro&U?AHV8A=|>>S~(aBpYuMqcKZ^QPK=*Lz-&`{HSLd{MzN# +Asks_Qp<;?AJj(92rye|WXy0j6Sx@DFo8vg$YcdU5`sAbYr)t90RC{BgbP4v@aH>T$Q4ZKEEl;Kyo2b +^3J(`^|61@1$hi3}&6OD76Oj1+{GJ1z)qHLl^$dk5M()As6hsuqfrZ{+TH0!2JAbe +;vkGyg-_t9zQv9=kr7N>G9!UW+e4>xMxRCNa{0^n#CEOIXBV~Vv0QpdvyHBoj;koj~;(IE)1tQm%={n +Op%@D9{c%xK9_U-8uR}v9tjc)0v{c@PaYk+&z>FMBKRo@eu_M2*|z5FZOW&nDrG)yWX>ey(JtJwtY4@ +rV||M91{PRE=clS#t^j%$bUT9d*hAf;mq7XgsG$-io&;A#7I$xWh(I4_srdI*=-W6sn0dahb{U3XwF6 +Lqu*%ZxDnvtJ@foCba>)(I>!@t<_l2P2Q&hT1-uC82T6GfL_?LD43b#*L)-RNuET5KSR2AeE~9 +gKO6S6ZDq4Au=SS{W&&K)v*-3{^WLqLy@gw@1CNS0`1Lh;?6NT{FG>dU8o1;U#MP=ie)r;j*O{=WY&d +Uf>~Mw6)h!wz(p>~_nvjJ7!0|;n(6IIKn5qhnR?iy&eSJ+b?ctFj%^O{G9nnan_oXi0MpU--s>bb +){9^UBYTebB-ZvCU#JQ572{R11AOy9-ln8MB;IF|?xzE@C3C4EJelITspa5;RXa50EO9KQH0000807g +YaROTKQzvUAE08vK(03ZMW0B~t=FJE?LZe(wAFLY&YVPk1@c`sjIX>MtBUtcb8dDT4aa^pyD|NRsl`9 +~E`wyOd&D*2DWB>X03MOZQy%j~t +<1WA-^Kw~p_5&}{eA6EO4RY{XcFni!hdfP0ac~GAA7m`DQY5U-;1#Quf}O2-4FBkn3Hu4C$vk6k!V?x +Cz(@~`#=i#)+q`BgK$_(ht4jeWWXa|-6-+$DVqGzru{d9?Q^~Vfu#K#iL`EYC0maW6MLw%IKy!d!!_( +Y_W4t1UmsPc%zIwIUY(h?qhIz4gl`5d})rZUTi>sT9V_=rRf6P)*maGuJ)UtqO&bExNftQ%ifWwq;SY +9x`CvaJ@R6Jv&vm17KGh%PgZZ2;ofaBBU?GGP+y +k(!xuCLFoZZ9ux*vD&j{_*PF(A1Z2d+xo|OOY@@K+Mm_35Ih0 +&_Jv#t`+K`a!n|aac?IG`X3B$kk*^q^#Y_*Jy*;16GYFB#)k;*$JW()lp2c-hh^%6kpQ;9#s9~Amn(d +e@_SB$RDhZQJw!7OLT87d^1 +tw5C?vNB(1vfzJ>atK^FVSQDVsxceGzm7o3+Q1U<#P|ubl?FR;Sfo;QNAR0`&WNu$sKUui?9yvH}cfQ +ZE-$d#10E8DH5O1mel60m9Z4$|~QB1%fj~;CIC5l_(-!RbsVnZ`J^CB2wPg +;?6b#q`X8vqi15PSfa%1Vt>K+rpWEO%wZUqK4EgsHZ5++cN +3}0|&5l#W}zX*~C7)C_qg^SyGpi9-x0TA9{Jp1NloG> +vC?V0W6rnF%q1xN@P5i)fPAcVLF7wgNPv%1eR8UA&Y>7c!TLcr-TLFBP&GgUWeDYr7~fgrHq#_vrZvm +g%Im2t_qLT$+9u9U_P4n7qSV2k8^2AlvvK>HIff{}eany?vid|HL)poAEQj}M}2QT@czTYrvuI~oJt@2U +`k*)-?LK_cerunp$flv&hccKmJgq?WhlWjQ$eDB;DToC3|WY&&5`N6FWXej;2Ai=RJRymym^#@*Datw +Zc31b)n58yn=4J!rOwjz%P0FbNa$8WYLHhW+SFtHE2LLnAXX05CQsMA;47y2Tj!;*GI&v==9jb@l +@=Ks8ij`d7xYzZH+hlt&P5&Xn-6T$zlW@>*UBq^BVgaDhzfkY{uzwX&ENA>CXjk$6@O4_J7=lL0^)zn +PEXluniFf;se#WYcVndn_y_3fLP!3=xPc%5k(Oe5U}13!Hz3tu{)~Q^KlCLKa+MWkxxswmqzYpn68}s +h6ylGdGfY-C`abs(4uhNpkMl5!;uJ(2Mer-*D-lIcBqy_eyA=~Q8bD8pI=QZOkm)f{1r%sj@%zK1XOxfrytlVhN2)x4?s6cF9X!Fu`<6Z6wRcG7}kYMq`@cK!&|={agc=w`%5oe4^gD0_KV#X+ +p`6PqQQm9PV@@E8qZWJs_c)BL3NBJj$eUjnH5}uX@_XP2M1Rlqw9;CA3vbyR>mESEwy*~nK~3bS8T>^ +@bnMn;F7Cx4*>4`8IiRd;wz>`F+eGVKDVjN5UWZCdK~^$V4+8?#PfRRIR?8Gg=;AVy}AIhs>_Oz-s{~ +sW>JJj5Jgi}7?K!q%D)Mfw22s#IzT^{B27v?<@(|;*U|gSix2N^rkc@vUPv-XRh%I&hg +)>rWFOHNatgX@apW(7gJiSOmLxd856_IRxs4^n5vnS)(6gb{I#@xmVS85RpE{Jr54~$K10}d2fG(2nu +=l-eq5{bzzkzhq41zm*+G<4V=w{;sZ5=@^vdbCVDjYlr$@Me&4dqmiMFzQIwsPr*tR8uRi!y`&^M1k#S(nu8LK>Ou! +qV!7(f#%T0sN=AFPnLl!qU;^v;)+!`eagsu0(wGTqdLPh*0V*THJ3$6DQ-Z&rZ)1>k%@wbFryS0a{Dm +~{8Hq#coYn}azchds3wfwOuh64cTp61(dTq7vKahUopLgUC6;8%CTO=uo~mN&RBIvc(TeJIXmz_so`} +fQCg31>Pi4c=kUU*z5TE2S_vDiZ%dAZ$Ibsz +??%R$&2OsP8-M=<{QT@YCJM?yh$5f94rviG|%(^=$VM)TI&+)z1A=kq#LxY!_(_2EsS^Vl-}TmjevD< +vh9Q!C?w->HfZ})5ZaRAZ|QD6Z<3{;z%V_j&D@C%4hTkR=4l&{7DeG*8VIXyn)8zw?N13L60ai3vbOJ +QXJ`7+CDApEYH(BPs5y;)G{++9tW)$rY+wP?7Ast27wX8ggFQ;>tjE<(fV~;)Rd9lY+y(84YTONMpT_ +R=#YI9kjZENTtV!1uWme)%1`jLuL0FIe4ce}CAjy!ys3lD2|8@tb@ujL%f?gJ0R^%CyGh@SkChmPlcx +sdAcA@IMCouY+gVMDG770A6zzB9LI{JDEzjVa57 +;d{fbK=v#tsyMMC~ffvsD`7|qsM<5eej3$A!~NlA5?`xy`(l6DPdR^uX +eO==uNcf~_CxC@{45dRo-ZC_!qzRYLrmYQ}S206NsXT|J06vI{9vFwe;@h&f2q4qLEq*SQt6Rsrxau4Fv<9&$rkb`}^cez4qrLTwc(H{nrB4Yu(VkZxeGEsP^4^NQ$w~&x_K3Z*j +YS&}uQV|gy|HdA{27E!Sp3`bfh>xIzl;-zuqi)rvhk`|Y~uv`acRt%Hdy;2Bm)T4Nm)UFBXMZU?GQY!+C)g*M +r8PPZ!X{y%N(nbiImGPuWh}XH64*&?bcqR<~$_ZL4RdNKXM;PmQF50ph90rxy^ku2bFJ=vw$5_l-R_z +Un?iDTkxA`jQrqo;9!_bfVar^RAqIq!Cy6J9TblW0wk8tq5^vGOtd3Rj)Dm}tz +vxkWDV%PPoyAzbvIppXHx#t4SuFa;)R9YPvCI)Rri4VP3aWtdZ`k4R^J5-_6QG-1NV{o5EI}dKgF=ga +M72)AI!ss4lu+L4$&9V0;-4YZkSKMj(e+=o~<6CaIcV+ +QmDlQp1wsci6*#dvLw|y3w0!ceKOxCVew@stiIu#M+y*v!eh6-f5U{v#}m#sG4RG8^EAN*oRVQDDJMK +R^1Jz>QXm7H_YSkpn!Lj_6?Gg@T67cP@9{H2iSRaTAg}VullC5Z<6s!?3;liX|Dr&9=PKhzd`5N5tZN +PxYHzD&;iS^u0?f8mqgm`YAqBB +xQ=;`BAvoV_`egTB{KK}ZtL6JzymRso89W7zUHDZ6H^|(F#H(Tl+@I|m69cmfsP@)a!>+^9`4-!QPv` +D2QrMvb(XisaBc)-6;D-iX6>ZH5%g-oLj=y>c+D)vM=rNA%@C(N``-swPVXAEV4+jphzjXqwGxwXRPO +5eP3a`5)W@BcKrze2awph}`nt)kB}t>!9P)QYY{#{UD#-brzqwbBPPr?7}lsN0#KGam0&*alxy_V(XS +-V6{Kx+N~RB_1phmOp}V55-@&#x(yS#MWSySb&6E%;dQ3ebBoR25X=ZF5ZFl}TR>aI+Ltwct%}03M<dxDz+uUf}dKsDNZ(jp6Di{*0qU7uN$)8>+Mx-iS +9B~c7s8n&x04^`?USiEktv^84}yO0x>g1TUiUf$pL)dZ@s3~VS2*)9U0 +j2fSu6+rnq&D^XG#VInlGy7or+eOlxQB^-=^ZJ~WteXvhf~G6S`uX(lwrfKRX2RpdHAj@+#+15D8=oL +x2W88+Z3n;2#DU>7F{jsnZBzlEXzLLc}9nWi{s38@9R&m=PyNyVno*f|G0?%)cHK%*Ah@W1tipu1D6W +cWwm$G=*^eIokqT{LnAx)svdyx1NI{7^qc7;2>r4(urZc1lR7q>H!JdKX&jz*DnDRbYu$wyr84VC9X@ +&yM^+C#5~}rJfC4roXZmYVx^_?<#Zt5yCrqw1RhVgmg5D{M;} +Gz&1Se|~-U-htt_%^23k9_c5%qBBJ;V#*%XkEd_3v70J`Yq<`idyyr15t{E@!-(V8S2DN%*ADk%ESoQ0{PyI{e-I +sU@j6ZqX0uclF0Qq%O96$?l>L)q_oPZfAyvLmt7U%vXxf<_6BszWE;h`P*<50^tIcW{G#St?;hMNCB> +x_$Z4#VyWi^gSSj&a=9)3_Jn@EgIl(Ow=$ce@{UO5Jx@?*oI)XJ3CtX!pRC?RVI>P#kW(QI6dK6|*O2lI0bdf#4R8U8T;v&NB0*SkGk0MsClR^$P`Qv3!$_NveonJ=QxBMNfa +k{K-P6`!Of6nZ=gT?0KW`|S0NykiNfGZt}K26$!!U7YU?#ZYyn7R2}tLd@RTQ%mzWi7hA@-Qs05`0IjRN +Mb|W>xo06A|FSudGt?VQfc^(Cn%0OC(#7LRxdO@$6p;_hR+e?*P0Mjdxa0#_mhM0S$DCc<;KckpR6&V +yP;bv9q^^L(rZhmEg@T$-2UoefgXw<3+{F?Tato(n8>c~OnncN$qIgo&go_bLr*Zz&jfG5Nb^*?5n2E$RfG=Oq~-_!AVgy|e=$m2+am)obaqMf%(y-i$E +^I}9d`vUR%u`qk`b$Q9AjuO!aW)|wAOB8AV5S@EzE}lt@)HcDz%roybV2m;gQy8y+XZVCf)Y8ewRg|S +9BnGp2|*)cfFm0YyTE5cDzx*JzPAkk5wC1+S#kH!fFkv%G#ctYB6z!(`SeN?gX>EPHo%x1nPhCo +>t4{5$+fILiGcNqVYgU!ryI5NuQB~T+@=Kwde8j}`%AHI_FBKu!$UXZLLJ6a{UG3%EHsG-;Ha5wzL)z ++FEZoqJZN%?wjDwa9PpQLkK@#fU{#1tRQx&wm+mD>=E|$6KA~O`8*`iY_{&AVYE?4TWxb7eAbx9|+Z?5@|Fs*2X^du83wt(^UGwo`{*oL-5-^%XIwmuk8r4eI;|Bfnvp +~nJWOw7tU`@2ZXDy~lzMcGENFBOVbC_y~%Ho66~WT@JO<8P4=G<3DL$y>jwUF^E%q&eN9|9ipwBVfA?NFe9x|@?E+QBIowM(a{P^&6sl+YgsvW`x{a|$7P$?kil +w3)zNQwtm;74S&Asho+%ok31yD-^1QY-O00;m^MMG3oJZlAg0{{S+2LJ#b0001RX>c!Jc4cm4Z*nhmW +o}_(X>@rnUv+e8Y;!Jfd7V{ZZ`(Ey{qA3JP%yv-9NBS;eejkITH-D0T6>7yWkpdav~-f#P$WxIanz#! +eMebt?b#cO>4Rk*pWeNDJf64gxBoK29yC-7^F3)yw;83j>}>QR^@KP3=&JmtuuUGy91+k%BbFb09nN(1 +kn=WWdOfK%Xm2?j=Okuvv|FNyXf{dny=#75*D{`wU}SWt9UV|r(YqOzk%Q5`SlQxY@#&yq>a~4BDuE^ +Gw;_D@jyVXwt}q2l;=F9x@1wa0-;ckXe5;b8coHm-$+aHGGYrp~w9N5P0{<=mJRj)@ +cQ#7pDljR?AN{^8w>l_wDQt(Hg&vOxgS9JxCOw_c2bT_>9-EVE95&mcr>nRckDS77D10{YH{gvEB@d_ +^Yv%m-@lsUtknoDMhG8val^tG~ytgETdKY;U}fHq><1G-wDrftJm>KK&ahCgtP8E0+J_@~iK7J}Q-Q= +nnOo-MY#KCq_7Z<%-wT^hK&gz=W%Uj|)mXs=xvv@sNi(2HZJb*G_|W2nqdL!TW(%|7%w{CN2VPk$%>s +o3Jt>M4WaJGdARx*c%p8~opq1)n<1=TE1I2cLtEwLq7oOo%m09}>wb?5FE#*L2|(E%@Gf8;0R<7mQ@{ +?l5T(1izv4BcvmOycVK4|4=ishRzRoV(M-Wj&qt?ZJ=$xHG(!Ot5ZVV-y7711Pt!){Q>uM6sD8Y)#Xo +Om$1ECEGm@FQrEtH*G8OazB;>GrlF-#W<(q&i5KOwC&^&D8QXywxo(!sj8Wz*#{uELlI|0J1F63>vtJ +tBkMSMvQDf{pIng>t;%MTP^sO?rZ0FB*!dP8$`2^hgDU8h6?dPI%Un+?|ACQoswy27>MNnCXDGof~G_ +{QDkB5hE{68c1Y7W96e6P6d?=lT~e*;iU0|XQR000O8MnywZsNopy@&W(=*aZLp9RL6TaA|NaUv_0~W +N&gWbY*T~V`+4GFJWeMWpXZXd6iVrZrVT)eD_zZ97O?%m^7*SK-Ef=kU|?l1*B0FMb=@j&9(NOd$*2* +qWpXJjA5Aa=#3{q6!dDxtvd& +tW|G;Y)u$o_Cnzdb}7-uNH9KpUwJ{#dtV}=?n(b$@zFOo=*7b0{W91_&%PTcK|siUV{&Xar#-LbP;0g +@|q*=2}txtkS#EhiHz8nN=uOVmnZv$)$A%X<1&(ESbzD392ivOa-3D3$-Djb;0wVml&NxA&Vf +qM-^)m5GoN#T0;X2OOl!8xuls17B@eJ;b1fzu&1v*5BSqyGo7Y2tE;`qJVP?;fylBs>qXD=VoX3JgeK +%$w_>7}agflueh>Wp0ly8$pJAdEZZ!D5-*>|hF#`DD7?ZBqy&#A+T4+cE2JS6m)vcPr$w$MB8Xv)BUG +O{GZkXXcW<9=7w5eH)LO!NkP|t0IPv9S(1ZN44)ashVoMv}3Z*O0Exa-so?%uY*>#e)XR_E9#txqF$p +vIoM~@?M=cwUK-Ve?EM8$O9KQH0000807gYaRM36psl5UK0AK|G03HAU0B~t=FJE?LZe(wAFLY&YVPk +1@c`ssRW^Zz3E^v93lu>V+FcgK~`4w06p^ZdI*G+rKq)BO-Eo@aXg>+R_Rmg!0@n&phn^H9Ozwa98*0 +c}XP?U)4bC17sF*$&ls#?v9orTkrS8w4{EjUUzXY!k>y@MCa%Is^&9XYhBhLTLBvQQf&3vM9i0s-$+tSoQ|sVXbM +nM@HHZg<@_gGoph*Mo)HT1IL{`ik!Ir#fJ^1KwF%O~&J(TmLZBAU&Y@%)%zJNcy)Xbfo +lQFBc(w=J-WSW>nnLctnP8d#x`)~s@@jpmliA^@Xu+c1sfl5t}--_~|-P>*Dk_o;wJ#U%LC7^2vRvuP +Z~0eM_So5kvK16R}adb-?1^B7iZn5~xQ(I#3g>Fxtem)Gz)TAl}hG$z^x?)*Bklp@ss +}O^rab2<<&s6s3WP%4p_UW}D%2%6?m-&D%g9CWl3QlG%8O8;=h22rTd-|K{hpU=RYJw9Fu6mSDIHprE +akR^L73E*3qyVR&=YR1zs!@_Vm_lxA15BrHE4w@iq6&5{_4C&tJ@h9A|_t+JTJo>wn(utp<}lrrz7n& +iE)An`1>9H2#(*wQc3I~eBVFox*;VA(4!+!(Ncb9Aya5za1BYhza4=eIe65x%a9_x=n8(|VkH9aP)z6 +~*>2Zi6pqCmxtp8kY_~y2cKZ)#WN+LlHL67DDY|FIti`gjJ*{(bz>bC6|C)=tdfU+D{9POBeY9Y&ocr +XY-3!wL6W!s@{v?D2+Qb#NEd8EHR^n5bFqfl;!vOqecHQ3xeO#_bBdZdnGcK9fa~NVLvM#r%M-O0m+0 +V`4aGJ*-)=@tgYOl2%X5;+=P)h>@6aWAK2mnS!LsSF{?Q3EK0049c001Na003}la4%nWWo~3|axZjcZ +ee3-ba^jgWoB=3WnXh_Wo2+KaCwzg!EW0)5WVXw2FfJ{6sFrPdT`MNT*qzP2F}8ES_DNQ(9%d|mnKz` +iXsI5_Z?D-W4l>w>w{%+-aNiH9F9+5tgF_Da_!*di$7k&$65+haKY7gT}LNBg|%JR94@($x;YO2c}8E +aV9r~()G|jCoe<;;^9K-`Do!5d;|bqyOLRoX#qktl?PLP! +L>&#-bJ6l8i+Nx@Zy&%iC~kWSy>gt;obVOB75g~gE(l&bR}Ih4o2Fqr2xZ!o=duIY^Q-B2GF +wc}NNj-LD2djB!5_6SWOLO5uSiSASENw#2DAZQ8l;%hUTb576RJ$W>cTbLAhG1aIwMxKJ1EqnGV;3*p +i*%K@n`|lMGWsoi|HaEjxW>Y<@L=HzKrJc(QG-LEZ}+$K$|$;*jFij8pGg_WO7u_&SqwQ=Cuit?k +VFnR-(s91W3D%XZNR6G-|g&vsJPDo36MW4f#w|`I4@#SPpo<0mCpihsLx-0{$U;AI?IXcshxs(gii%} +HiSilO&Hl|i0Rw*^#n)ptQN2b=ph7cd-#RE9|3uanjCnb*KcYy;kf&d*Lfy$Puz#ZfoE%dC6kk4&OCQ +bvBcY}sD>}|2Dun;GY(Ny9c$|1Fv>(=OMq(T*X2rI26yoL8%(p`&!#J+l7xbM=hUyqG^OM;DWzu<#5x +4yBh-e9jY95Z(gH9osKZhU1O?JL%Xay4t8 +<^f@s!5^Cv=lsvyDz{$?~uBpQaY@u1xe~Hqt^Y&D^!joO$TR04vd@z8_aS`zM +^uep|6Z4Ym*;anSI6*as=RcPY=jG8S&!7A$63@6aWAK2mnS!LsX`0veVoG003tN000{R003}la4%nWWo~3|axZjcZee3-ba^jsVQ?;Rd2LkDZ +rU&uedjB#!V63^bltQErcR=i4Yn#wgs!Tl37O<3xHEQUJ5BQm`>y@iuAP)YM}%-Cws52`$|tjxA#Fk@P%>gDpAGx~cAOIE{7i4=9GOOP9$pfs3 +5DQODq7GYelgobuy0N+RqR}wD5bLcrh&@Ki2_ry@E5_Uu?m4(tEQE&qp7YO*2U}1qvNYt(noXG^C;&$ +uHv?L)>+_w~JV;P|t;R|}o4spP&7reE$7!8M2RfWt84VBJ^q5+xV&3rPA;^`TQ_3&FM&=}D8tK^z&Zf +al!X-U|I6be>>(!g?!v}TplT4`>%%m-jpW-F$VSW<4R=9|(U1@)|q{2l@*DkdQq$1slrxEjavct9L?^ +VMu|yMnv%aygDx^Jxr=B}^94^?Ws7MD+9##?d`|nMcnQ8=?0u!F` +gnY@oWH~~v9#KoO0|n|GH|`(}$xDev@Ey0z`kDVsg`Ex+RN8{&JKW#b1#!_**4~Dz`>)gWWHz0U>`$W +((DjVnYGkR0cT&v22*jdiFi|o!Bglkewhw0?AW{;Wok0-zF?LX(M483BCMISfMZs!AfnZWP&E7PFoIl +bFAdUDLENH;~F76lIGF~kF4~`Um_SClA +m6ehBmE{WZAu|Q-&(Wt!bOZqh0@z6oWQ&)%;!;+c!6DC7fsMi*`Y{!1*FHlPZ1QY-O00;m^MMG4WQZ2i*1pol`82|ts0001 +RX>c!Jc4cm4Z*nhmWo}_(X>@rna%FUKc`k5y?O5Gz+cp%w_fs4=7m)%-Y13gB9x}{z-Njwu3~{<52nv +CgD4VTJsuWdM7zXSe_J(_s9ZHl$`6qSKtXqNlqE*Pl@BDm+=N#z(h9b!&n=cfcK6?E9-+%sf`snmAyv +SlkIXol$t;jkDYf|t+q>GHeIgzngt#3a$#(%zpOOnI6h(jtn2PpEA1(c^WgpA`7s0D>VLIV8H?DXI_D +pMvnoO+MI(E?qw)pdVBgj{5>L{KgiWGO`mmO{j03iM+@69tSzAeKqY2oET%m|7HS42Xvi*9Jn&6hUc% +@(KPG*>XTsVemq!qPO3B!xYv+>pVVuF7?hr#3;ei=`m^?+iSP!0W$UJ&i*T0VZ;rVEY_ +W#`P0RAE=mXNT-^FL4?3h61zNx)PN2IZ0}nGZ=EPtgwA>2!ja6lCGDKO-r1P`NjFI&@3GZnry_VW3H% +KyO1SuiY=sfZkJd&S>hPY^ON%lg1$C*pjM+2#fWQM&SDaYWIC7rE%0Vic@V&AG&Spx-K052s0t#(iZ( +oPJSwPrs1B7dt4FeAlX=DF$5~n&(EIZ+>ZT5yYBwmp`-P@f~{0sSWC9}pIqxo#jaChxqu*fe9D_ +-2az0z`cD**2+)~5PAV8pOs;06IKG$EEnMb{l=oT=K;TB=`NeC?+$rZ+cF(Tq_A{iavA{HAbzA~mgbOkoS6UPQ1jg^id+McXK6+vz6ku3JM;%*d^PRj%&h&d2ywdhGQ!k=saHkQ8PV +=Kx8VZr#`@F}}J-EQO?+7rXwoNNjP?Yn*5qmDb$8;<$Fx@~$fPD7Q}dR=F&})VSpkc%Ek+eS_&x@0QE +EGHA_cJh-;fh-Zne3|<|Em@H=@0n8zEZUKwY9tUnvEh1s|9VI)J{9Pn;~N@BiVrpvXHt +;*_5(4h{67j>BPreb_4)o#E?d*Hm!*J3#-Hm2;cs^*b%AbP&ysAMwDc8R$c+k!{JtwREW5KReSeN)3? +PR%qW1OR<%1+SbkRB~r}sh@_tW@`Y*c6hiJ6cl7#aI-@rotMZ6Q9H5=93 +$d^K41E+L{@5K5R?|wW*(+!*}1_YHP1C?rXcq8xb>_dtmad5Lsq>%d>}CkZ|(O-=3L+ULb|J~S1QgbWe@%7s +_@tjlUsg=)t}I93pOGZ$DfQ;9PbDd!8fX}El%3sz2fu_P)h>@6aWAK2mnS!Lsa!v&2^~*008C+000~S +003}la4%nWWo~3|axZjcZee3-ba^jxbZ>AjaCy~MO>^5e5WVwP?9dmhBh!xC=|LT5s>n*MBqMi3r5T? +%Ai1Q_0Ra{OE$P<((0`a;k_D&_O0nE@>K>|tL}K5*eft&!bp|6XDAKk&`4SWyFeJ$ETf-Iqz}KLHe5-#j; +`R`0m4lv?EORxYt=wSq*7UE3=#!5P;h~Os|;%kTtcR*T5u*ageA8NUuHuR5yiuXLZy}wni0OHyP}H&X +1(Brwe{fga=Bba%nOZ_E-yt3GM67FqwzEzUyxW2|0o3-0~-HmxTZGKHL#krWGp3xf-OO5V5LTiS>?1Y +HMd-reK4x9OQw-na&D~VX=4wJ+A5=dy8yC^NeG8AOyUsU4C6`MCyq~(`Q81;IeZ$Jhc1cA!RGapM +MQNM24Xf>+!!>sP*NDhjBc(iT{nZ7=P*CZ-_Z#pW`aKm0mQMt9>8iT-5}0DZRDg+`WpxLYl>s-Wg|ls +ux$m5wY*mT|k@;%8{}dc=f?NfHJ@kO@Y88>{LhWd_elM>Kph>a|tEFdU|2Im;}#Ftl)Igi8SzvRHC75 +kXrGKRXJx$*RyURPNVvEFeiTs+}a~21U`Q?Lul2(VRzjqGxLie0Xc*t>@N=$3HrcTa?g-ddKQ_h<vQ}fLD6l`%8#@%Y<=<#a;v1(p7XczvTjDLIG(LgZAVo9n251 +lU?FB-d*@YEn%;+r<_rM=l#h`90X9&hHtqE48#Sk>R)1-*zKxoT)Pw;AyIhF;pMEy1(Kba07ms?;4>T +-sBdTD!c^G2Dsgj>;FXvwX9&vY7o*urI8@GhKv^o_?%#AfD1_Ewk$Xk3Brz>O+(Xxgaq-}LCCdX6 +wN5Uq*gYJ17;e*8)M4R#l>#73t1yHlq$a{+8}-LaXy_bqS+e~+l1eX0<{K(Un{Q2=DG$}l9q(6Nnycu +AQiA&A&nVnweA!*T;u_0nVB6^NGK`SM)7rJjuO=?BfrA{N);2}P9m5`E?iHdc@z-F=lSx(?fnuyPwws +}i{*S4!R;MPZx=W7<@|O*t#>e4Ji@>8#Z3T6X(AeYE|t|!BDqZ=rZ!&@;*o$%wt{qt3D0;!zC>QJ93h +wAPzkaFC8{mgb|E#%O9`dmTW*+XdS00d9ft^|GN5bSf10`^D96c^+(OCAF#d)jl`1qSSi(&WUEnp-c! +x&SHvFg2H*#VOZcFnkp;3WY{yeZ@pR%He$Rc)i)aAIP6V8s%~d#t*|2c|r?A98)iagu`3S}t3>K0n?tS$@l#Vg_-{1vhc*X)H3TM(cY7 +Zbx9P*%Dr@vO+TR6m()%3n}pF$t5XdFKlK7aDM)UDmmAqUf)F2KD_xGY;;R$A6-$Ecz(F2?&tZ35E9d +(5<~NLnz4T@TOyULX!GE}L_$Id3E<3f;|O>zq(a-CZm3MDYN>}=?QOan5jOOQGuXE>aUu(07zVw!dqE +|=>KgA+pklOytAq0ZhTr`P9a6aOp*$XV&tE2RFmxil?P!x^_xH89qvMRPG3Ubboqeye1ruvq+_VtK)$ +X-}a{WIhX55xfCdQcvz^WYEp8#6P~Gy$AfSGXb$ZyuDPHQI{Cd+2 +8XTgAEVocKwfvYUUgL%qOUm?DOvH(TMMttvwym)$8N1z^GPK!vNb2xz*wd1v~V<0R}rK~yfP9$syOxHw7cU4SRK`iju#H`J;_gZP2#luD>mX|6{Sy7D +sIy8q0Ra>P*GwnN2O9KQH0000807gYaR9a<#S(69=03#Xz02}}S0B~t=FJE?LZe(wAFLY&YVPk1@c`t +WiX>=}dd9_*1avQl3zVj(i^dY274Jmo;gHlQ@SC(TryHZM$qqtly7B~b+*fYQ^fHB2A?K|WR^CbBim> +-a)D7#|wAaVwcM*n`@4LxCJx>y^zSUPq*I(qTnKmT()IzD1=%1jEyUUKzOmz^hDRP2qm%aXI#++=#Sz +5MJDe|}=ue9d0#Y$ipEZ$Wt^we=sbI=!fn#XjEJ1_9kx#DCvT&-3K_kt$ +cEQVPivcq35&dx7y&JQ81Cx5FlVJ$P__fi_DIbAbeK$etGAz{W>OdG}*Mqtfpl67UIlWH+wR?ppv8v! +meX`PYN(rp;3mJIsF1TYm>tUJD87dKt@%lPKvW&j>{7q_pk-rlmi@%8oi^7i8VhFx8=v#ZOO7q=Hzmw +0-`#+UEdKQ1m`4w!(MaE!Pw49O26C7Dpn$X+)>YzQ#dK_FX*RL*4zz0{)Q3&9rpvoH$kutJzzT5_a?c +r$RxWG)?d{>>LkC7liq)W$JBP3xZq8+Bekxpe`?ozC3ooE5T2CZ7e?P2z;&sdQ^r5l%`cGYf|EYEN?e +?w{wAv)AWmQ1ocBZHxOEMI-NA*u*`}}H<@xPdJr@j|8mw3{JP!lcnYWR)G=CSft*Z +5TNo`lv5>+hAno`)KNAaH?aGB)>Y0B(6LU71q&Ryr=~{MA$utO^D=X?z%%W$ZMsiOnYlycmo0NPFI7r`*YHDVc;VRTDI2xNMB0)D+ZLdANo~qn_c$)*@?Ok(j +RtLK+(jX$JygT1G*lUc0#0GBYi#`b)47V3^@>7zCLlf@~B#4_jlG0ZO1zub(t@qbfrV&W^{a%uzR$a;xrGMu;{2oM|;5=->-#sM!o=Eup4-Ah;ny0K6o|4K1eRj +ZlJEc0@$)UgH$r_(_xbiG4femUD&pbU73oHB5S)q+wNbDyZ~dxl;H4aJg|7H!JFqcSYNMz>(2oI*DP91n$$AXV_W6 +Q*MNN>fk5(Ta$ZlTM@j&t6F{@M)yL!TSh>kAn7+v`4%wMDJPu1ADrG^*cT>i{rrJW6R?Cx3YL1SbS<( +{M1Lx)}#~(tpcF$Zx*A%Al-Wbg^ofu@eGjYL|!;MV8`Lr^X3(`TI{*qC1GUSZol^LcZ&AN=|3jgo5)2 +W2@uu;Cd6@{R3@0HGM@@F05T3(CRA@rz{vOwQxbZU>ix!nhwSLX&TfbZ9!$Q?6q717A{UC1=fOgQKE9 +y?LT!~6@4V0wRLWLa0=pTXlvFHX|LW;8&r0DVB0k)YB-I)PPt4DA>(LHO0T?h+zkw3BEKov23s0Sw)s +P1skU6?5&#Ry8iK&ff8MIF%=_3`eZP{ua_SeHvwB@nl83u*qxADIxcjJrO!A1prIMyMw4|9BPE;S-zx +%s_G@=Gfk)lqD}2xB6Eu5CzHa@-> +P5jVo%WhiQ)jqb@rBmq{bhyf=)N?6tOX_ODw5>b)!tZa!1n1&b9Xv#4*r<7pi7+)|KC<3UB88)eO%~n +f6w-e1}0yNX5Nkz@BRQxlSS;G-_DAgyWSBlL_<45fQ1|c|KX?L)BI`PUr(?Cs}QVj(aZDtPK +C9i_JdvWSeS&pwZYDDYZkk;zAnfp=nP9ajr-pW7Ol_s1HgAmfBHZPAIN*T97hK}-p_vx!bH)18mYZSw +7ZvY@nz$6tqIoZpWhFFK(N`h;D{QInu8A>2cWGnJVv$1BnQMka*@CDyFz0LsaEI4X!GDapTu^FK&}G1 ++OGYt!@Msey|;~pEdpMLVbPDY{*EG|%8==DCj7P8N`h`xA=FQ^y)#Guk!U_}nJI!wP-?aQ+rBTuP!PT1vDM-5nx#i8dEp`P*5MEE0B3z^OzikN93`^T}U>5)7 +x>Kn$>%d6@Q>z^_V77jHbmc2O7>+Q5uC0@$VyQBadp%@8>CI3 +zMV72qWUvMSdATkp$(};@^ ++hfeIL|6HXw^-2B~E?V?!K)Gwev5BtcQZUmFskrJok`B$W87J(aZ39=LoX#ffT1NM*a2$-SOSC7bEKp +sLSex>W+$FJ#{u!t}T2`yh6RHNJ+tV(N|Q&R1ilO2#Js~;Toy3Bnsh1^6boqLDNrcXL*~Dy^sPWB~^X +1SDU}@|K%{HdMf6^ka(5tx60uE2gXaeSQ2VBS6&sn2d9)RJglx`N+n^1oM4eS_B;OrP)h>@6aWAK2mn +S!LsY%ctNW_}008Cy0012T003}la4%nWWo~3|axZjmZER^TUtei%X>?y-E^v8Wjy(&)Fcd}i{EEwSP( +gwpvqPZ;18F-Lhfbl|2!Ygu*Xr-rS|^ux-*6B25K)HU!xE-0HB!riV@X6pSlfnREsj`Gh;28}2H$7Os +hzu9>|DVdnbx2B%kkjjT2%$gth!`cHxjxqxIX)||M9pOrIl$WP#Gca +9D5|6Qy8~^|SaA|N +aUv_0~WN&gWbZ>2JX)j-JVRCb2axQRr%{*&!+c=Wn{VOo^2T2oI<5zZfROhX79A#HEwv)1zeVnc0QWR +u!OpzLritY3Izh8F)1OX7#Bbn@-suD{i(C=<^H$X=7MVb{XFS01P+nHtQoE6Utp0h~YxCj;txbrDXpP +ol>Lk)q8<(T#kgU{%np9cQfUk7Ku3@`uErAw#Dv-olr#Bnf*x%l-y3JdY=LzeyzPp-NAIV^Zq4g0t#q +BIF&@oU7Nis483eYwCvogG2VB3ktPFFcv1S+7Xvan$oOZW4Dj@ZSwDyXE)yr=!7Wcrj2H{yO-F`hNcL +?DX8Yd-?g|-QY_7{CGAJ-{(OQ-up%BPlJLN(VSbC<1`Fn$Ms}6pYV(rh-RkX`ZSW*s(APm6d;*oXJ_a +1`fND#&qi10>;y-F^m1Ob!~3iqb=WM;Sj3`)WkGVs+ee3;4*Rz??BMW^9l*QGE_qbk^Ngi427hzTU<9 +Z=3FGCIv)`6!5up5m>g<65;7JfZz8BdD%ncWA;H0Dzl(Ld6;q>YnSkw62(-`n>3$LT5U3>;LoewVuTLHLDZZiO)p +qvj!gDd!}&u$>hf!Q^C6>c5#*~g2E!R2Tz)}7JEi*x_)*M`bHMzWB%{L{<#{^j8BND~YzC;Zz$kI3Jh +f&u?B_@_cz4G=M)7vy0S`7uY6%h?+l8hX>{E-LW1x90;K1TnlEj)usG1ZBZCk$WvM1 +YetI@QIUoo-+z9V|q5tvY-QG^TKKxnk@9+P~>oT@04092LTpv}aQ9p}OMKICtC+hyGxF1IepK(6b2hG +%=GcgDpY|iXanHu$8j0%G+i-J229$YNJZOgH(Tabbrdw3|uqMsRr!x%Z_?U}|OIvx#s-68Kq;jkb{q? +hJ9pU}HL#A#4~7|VEja|7BNcQFu;cYXn%kO&Kjkw96i(Z-MZXN_?8mN%4E_v> +?=yoDy4GQPf2Ku4kd4eJLTEJM5J59wvnb{)o&3tfg3#hXWO26WWgKvK=!#GcQIofGgM<_9dq<-h#`PI +d@O31kE|c`PpwG^J-alw&Ksp?W3}5n50adQqaz{*B$7N`W+4|yAMa7Kqio6h%3*fdL62QOL<=!31_h&3U +}(Y3m>@{bVW=P818r^KvWr){Wwex}3$TYh$w9V^IS6j>1oAJ4K(Sy#EI?%dHk}&y>@mnha1a_|!!0D% +z7?i(6q0@Ufj|HB1w9aS6lL~Z2$u+Q3YLcYjH4Vf9$1LkJpID)3dZatmIwuL0q2Cw(j1Dqesj +VOOtfhN9<$^%5MXPy)vONh1U2E4CVaFB&3?$hjgZiBOkZt!N(iye*^R|mO_un{Ayy|-0^L_hGX?%i%C +K%9jE$LVq-_BPNSCQ*vr>M>2nW3t_rlVAG*GAbOo{P0=W8IL&29kc>tz1}@Um<1LMt81m$O;)#HT(ie +;O=rn26O*1v}3OCr2_$*-oyLCvGXA#{6RyfwTyMS-C6Ld|!|I!R2ud;ndBkl9u2F@`i*zTAZjPBACIV +May9+Q3GPfkRf@yzOd7*Ub-xLXecVTp+!oNj?235M@dxpemm#!jMi+lay_75EDNeg8RiaqX%auHn>Yt +Cpl|RTxWVa~(Lt`1_beS~^G&?%^KKd=-uROeAs$OmaoQRZ2v^V2Og&b{; +G+np0$&VgSp3QgCuT!?=JVF9!;s;*>;H;h(jmgp>qnZSah$lD}zOM@0G$S0Dd-aH*041ran1OA--t50 +&AB!z#g_aFvL#XcW#Ycn<-60&7?bwQDA!Ou#f?g@X}G%ui_H^==69*kk!~QUp(efWbdLoe$53BdCI|M +@*T+CR!#j`=qJ9mb9VaUQo7IRnc4jK@$@eBnL}lx(66`X#SuuCewDdFx{ +Z@s&bQz_%2FWEC~!5ojo!u-5EAfXR5cgpBqJ_w74UE`3nz>vjTE1efgB>0L+bjU;s33#L#7!S_wpJr| +=d_~rF?=2SNY%fK}?Q~jgR_Sqy&<4W~am2P!cBVFnmSs!y)s4|Nv_nXavOaN`6uXBye)_g^-(H{at2==1Z{47nyIsxl|X(Zo2n +hJ8vsYwDWuc=%cHqwHitFd)4j~j7fHS4k@9a_zpEGN-jL$|X=8&k}bhT&39$(Nu(@_~!Ld85Yajs-_Z +waiqiL}{BOY*coSr-T(PMHb=IBq+_tT+ng(?pr+=Yc;=v6%Q6XSy7;z+XjrTE^=Y->dKGR*C2#!DyP~ +e7vT{5Y@k^&gjkv?mP;-4k)qP1DM>Bw>IVG{fo)ZYvZ3lMP%;)lx&=9O67n`q=~8Q<}ja_Bl4(xgUx*g`x_WG|GZwA%xjcp}tzvUS7wtd +uo>7vWW_1Tc3Txa**!y)$Sj)E=VH^0cdUkt*CPs5S8@05$5ScFOwpQMNm+b?@0K9 +dWit*S?#ur4%8#})1+VRbc&9=ao6YROvH`u&I-PvR`zATAPajDGSe1_WxqgUwd&cs=EpoiMRasaHHg` +$@gd0LmSnp#m*UIJhVe=6G8+HR|HosK +ck7FRh=6WA&aB?#p319?j%yF3UZ2(drmy_7H|%bG1ob_^$|nmm>ptWf;Q&fa*Ph1=~ry}zjUxXQ+fW% +lK#?A~A}v0H97NNt`tcQm_(O`VwORcD3MNg?GvEJQvv9sEaEIe +OtBToL6hwX)Z<^IP__iL>Yd!_|whY_a`I?k +2`T~w?ui?;kYy)Z5a958fU95qjsWdUMO=7NTn1W%q?u^Ok_V^Q&_KMKx#3~xyN3s!sGDbL+Qo!UCxz0 ++;|eA=G^3(U7-=(LnSuc-PW{O+f3c6OBhUYznXx`bnE_&2DULin83CP70v`|)3{-xef2Em?XokdxPmC +bQ(E$bUD>$@=@s|5pVBI{9hAoiF5)nON^G9UZ8nS(E_Ziq2skAvmFr3XT!l7-$CHM#$;alz`DA^P +77wAcnS_RFZdB0RU+imPHL2I$fnO6s)YpMZB+8`DGC1JF!R3T=(OTj970?Q*(l;d)%hLNZ#_M3 +_6LcY3;6QftAbA)JW9SR7uXanyXSj)JXO`)fA%eQGLP4oyyjH_>VBW{I#-9Xv6gr@6c8Uo%WTGI}`dqjtA%YX?*fUk{#=5Z)7)EcfQ|F=!Ia6 +HV=|fd!=#P%W!rKuWKxTLzsBEWr7h(TPEd*$^`P`znos?brdpV;-fQCxQg>QyZ+3eKB{cEwKV`! +HiwbE}c1%Jm%OlDQ8O*0@~FshWl{w7bQ!CMRM$LINZPWFpSq`r&Oj)C-+VX6)>TjwS@w4^G61kthzAv=a47ctL;is0P$Vy2Uo4XOI*wi<2 +^*#)K8tbR^PPMMkk-}@Pqt*+o^?pf*$5B>#y@YFy_fkSudn~1R8mf?OY#BeBhOpN)UhcGT1>qZ_nJyD +k=o^=Z_;EJ!R#keXAh*s+^+>1Iai8a5P(Ie>3VA^G)Ix!R}44W#nCbW +hiRMLZqNzI8qhv8f-BFBr$gUG5+;V?>~&-MC@81<22{=QW=rU+WO9&xzo7imZB~R2C0AwK_Gfw=`P!c +AtY6L+bPh%I&f#qrc}*gik|v+-ZXHc?&3iaoa9wl_p +Tc}Duy7TqgUKL?{<=|VDBJS#=j9RWDL_|uR6kS!d_=Yz@p4Ev-CmA>jemR^_&Q}#B>PC(x&B*&0ZGz; +v9hRrXfMO$(=NXHV%q~0lgR*~dw#i>65k7C~gP7wWlO> +Fty)j_}X(?66mCvCD?6ZK+1bl;R-DB|i_!6t3QmZQ8y0TSk2DJt7L52Ws6pX_Wbj +x)NqxMj`breILI(6;ly80K2eptaQ>UA+GuV@eyE$>p6+PU#nqB~ksZ5S(vS>d5~NL*^fl*bX403f$2E +l$)yp%rIe?6t+b;I&$y3FA^tD=S_a;GU^;WpCUGrR5;)Dnj%n8)HKnCyKi_Qk3S&y;2@6ucgoHR^T^j +#K;(klXuzabjs+_qo-)ToU`IFg~g@F0?lahpXjmo992|qY3BU5B~QZg(O_`hV+>+%#o<1BDu`j8i%&| +WGxqBeDx;&`3hRJiNZh#>N5NmcX8w9uFp|bJx3rA0Z6W#}*;~~^{^e? +>B=8>S-M=b&G0BvL&vK$zGW}D+D86P`%!XHdxs%R27>7_>5Qp>`m4rDT9cLg`!KayOW3ph= +D7<*eQ`GBOUp_{f5A7+nggI%;z3$SY9+eT`H7wZW>7K8)lReiwYZuMZ7j$pPP!CQdl$@p41mpTz4E8&e5we9e>en>9BQH{1FcYa_5MNpb +77?mst8%~o}az_qz3VGgzZm^$c}CeZet?+OgpkT2mO3}FLwaTaBGVEP_Uk=J{JN2)8RkE0!pD4F3-Mi +Lks8Fpf?QPI{wbTr(vbm?kK9$Tns7-8O%sNcxHdq@NRUPa5Xixz|_g|pczQMUQyqea%}TDCaP@93Jy4 +$YU~2|7K`yAosu>|fT1f8iUjGA>_>2i}n58vyaJy~Io2NMOP=&8Acp(#c)%j +co`Kl5j+sZOU-19eZVBZ@{C)L|HvrkMF`RiXpy5~64ho#1%U2+K?I>GmYDwc2dPc+b#si7Bz0dv&AL* +4N@yFY@hd;liC!yMJ|9EtKTpMt3aBvL&Iy?UhP)h>@6aWAK2mnS!LsWv?F@Vkk004Ok000;O003}la4 +%nWWo~3|axZjmZER^TUvgzGaCxm(ZEu`L5dO}uSZ%&Q3<&Htj*+e>=Smu@u^qXWDhWj#J@#xWjz!C2^ +{(!J@4oZqD2mkkaO@1v%+5SBv+R!GJt%UDXt_tA+&7p|A-hKFg8sii70u=Hh-%8(#y#~so` +Q`Yy|-TL!~I9t7oSHE7}{NjSk`rv}whL*U_D;IpM*}}5Q-53{Hfc=CwVgkF)>Gr|u-!x_8XOE~ZF!3q +gSEZjdIcX8m1|PWew!%5JtQR2m?|t_0KoCS{r%@327veY4S=svPI?nFm?6>tDSO5a;BnZ3lohfGZSL(-dl_ZRf$Y454!3%9bu+gLH9R!9+t +vCR@8`zvxk281ynYkkjlqIQW^v-BOJ)%~B_Rvl#KdeJ2*3+a))d_%BH$;SkY%LO9ATFNj8$b>h4QUhv +ZBzTb%Nql?D|b7=AQ#spWzkh!C*YWH?r2P~!)oD7GRms`o +OwcZZljDI{GlB5p^=mI=cIU(Npb?TaNVPN!aEP|QI8Qcb!}&&|DQ?81;@z%AJ*T|e9Lur_v;%uSBpJn +-9$;H&A^^qsKnHj~$*D{F5$CH^&K!hrh3iMe#wQ1x0g)T&8c+;2+S1pH4Zvig-uQA<@A9%mE%-gJIus +MaaBSG=15)k^%wE=*f-NQlwXEI+-y#Q(c~ur7GU0~V8TUF+@su^?zXQri)>7gc%^uhEVXP|h!&vcvyQ +x)KcNC3vE!s{&TY}rM?$}jbCKxp;S*ffjCwnOUd~@|;8iT|7SP1Ge)U(^ +Qu~z)U;v#YdX+jnkM{N^f3h?C3EvpQ}WE?^5PLe*^pO6JY(39IG` +??P3tcOOfoP4;*)9D4F}Z>5$oxv15%_sA5T*7L5iO4)XCkx>e{FMf||2@Rps#yaPNA8k_NMu_lco4xM +SUxbsGFRT1?yVnL6yLriS`wNtE5!;H~zcFoKVo8{Rl`oG#wks#vzo*B>)&eE^D{hx?Ta(98aW&mLq9lH!R7DbTiA^HggYs$l@5_*dYtiGrD-Jo1G7XfNX@6aWAK2mnS!LsTJ2Z +5&Yq007Gh0018V003}la4%nWWo~3|axZmqY;0*_GcR9XX>MtBUtcb8d6ia6Z{s!)zUx;Ev(*m%(+K}#c>4Ml4Ch*$mf9g?CY+esJoAc#8&FBTzMRSOHfJblPB1lAqS-4j5~_^9C6M(FGgeTdS +pa$P!%?AK)1sG}v-49Z0>~kvG^AmLzbefxl|eK>4JP%vO8VlyKlik*=+Z5qmVwWR|B;GV&;V@>1R>yd +o)7S%lwf>_hIOWyN06*ieg6fn^3`qsCOPP_C>OYW(RaS(9WHdC%v}$(#i|=8YVIL(yZ+b8M>C4YH1EC +3_5jK7mO+1QT>+{B{06g#q2dMmSk4YK7 +fk^7ZP7l-e%0-e*g9BpUa!%oHkDQzDL=|4PoG$7xjxA0!(=K9G)F5xbA-1EN+jGkSq9VvGp<-Mw|w>K +6xo3O^xtI*=Um25N}=ho8X13P6GJ=o4v5mA&qGR3bC=l<(8h6A`}uaCX{fDRs9eoRH2BT>qASy7;58) +Mw!$8X@M$BTl;4q0OB;XZJW5h36(2N00w$qztCW%cv5~e!T-^TsF<^wG*9ZaIMJ#sx<6<{xO1T`qrt= +}uNK_a;c+i5T&2DRXOZgAT8eLJ%jI$w<9r@QHz#6p`8nVuv=dS6)}p*?8mb0|G&FDBlB9nFS2VP6n!k +x1&dNnNOjT9ECy88v?<*Qfd3rTS<4($aX2N}>)Gd7MymcQ#r+ME~izpiuOT=eg_AHzHI{}%p56c4mrDNbBV?!uCr;%IcJ`)l|;v_*G7dT-;2vn#L~4hS!ZJ+FME7SWBW&q-47W3=aH>X-AMf9U7*{a8mb|~FA8&K>ck& +TCMT?Ho$-yj(e*sWS0|XQR000O8MnywZ9X}It0u2BFJ1PJGBLDyZaA|NaUv_0~WN&gWb#iQMX<{=kUt +@1V?GE^v9RT5WIJI1>JzUqLu1EO%|8?H;f|02kNGZf}d*-4<;Zi$gAOXo*g^ktJ26{IZAp@ +AnKzNu;DW>E8K6Vq3%Eyw5YFH&wA^tJS8~btP6SCbwl#X~x&8$Z9QC_Vd}9u8tRH46h9>NQx{IiIzpK +V!lqARX_8xl=7XCJu=xHG5~MeyFOV8t3&GpHK*WR|%ft`)1k4pNiyuY%|8r*@uklO;K$ +ZsuYRb$mD|kQaB!p@g0{LZFOe&CmC1D^0OP#D-|19O5|Ept5u{#wwZMg=~ZIUS)cqMwWFRhh_=$lQrL +Gpp4E7(E1rloPwq##ojqiu_f;w?k$x`|?TBKlxli;i$0joU5ju*>QI*(=--?z-$wTi+jIWxf658I2qn +ev{Mr25}TJbDHv@F@x))UG-m7)Zzw +*U8TS${ycOCJv_3I!THjq}3VsfPv`Y$^dr9GpvwZnt9;mncrO1Vs6GR=a95r~mcj0rN0ciY>XFX0`cr +5KVzU&CifI34Z0G+7_6t@>x;(_mqL%f2n(rO3!?WOgh6Lufx0v%}uYBG0S82LoAV85sI~5zU7$`v(7 +ZwdzgG2Asuo>P00&wJ#aDfKv0N+l|jCxB0G_9r-JK*ZZ=O&D)gAdLrLL}Ax=0Ypv$>2KL*uv6o6D*Dg +j8N0eox|5vf5xQLxA49aeKwUbC1c +Wg8q7Vy@Ew%0Y@dL+&Z_#+3bv7E;mKNRg!rt9r?0rDDKxR4vM7Cj#5nnU)AUOU!b<1xjqyBd;dK7Tck +`C0yB#m@BE}4#5^8oclemZhdLeR8qL|Y$yrEPiaCor?&)V5*^oN%5{gq-nj39YI?AcT&i?YQFSH5F>5 +*H7QXFtVG!MrLIEmlC$u41=y4`_o(SVx!|mhSOZMHXZ(qc$%fPaMuoUhaD5NdJmK}u)A_Mj#Sp`olul +}ya8cyn86{&M`mNjr1hsKdmUnrEXsSiK5@b7biTO1Gw+!bGKv*;|O|akjjC? +wBKTrD125ptfiLR+fuB_=J%Qk;%?zh({TF3`5oGrRS_qLYhX?PeLy)i{f62>6}e +BMX_A-YWe^%yu3(S;x+$c`K3M_hSXP63VgJM1^UaazMB%pnSM7N(tY~jbHnl4JZ(gnvzGmE)urS9ljC +kzI{xi^FoORb2Lt!#?D=zB0DRzImzV`Z)6Gr2oW(7#9$pX7y*Gt;bSU|aV;nLe33|wSgJ%@5l*^GLpZ +DB2d!P?MhVr-~B-gAAo00&EdSIzIz?SK78RY5L$Nm~;zNdip!EhB|U^JsW>^`G7xoVbNcX-1#rc(=_J +|=!jciJldMCWN@vbSN*>}5|9oZ74UhT`t@>4GLx;j(ln`FU&69 +w%MXV#l&2bvht}voubrqbBbvlg>6aUk|aL(T6Xoe1hm=*^pglQ9q{Ak){AILcftVTjSb}+mbJx2qfXw +B6NFRf_e@=6iD;%MT_#snS{G>-4>fOa)cuV-xWn(gM$dkZAP+)1uIi8IOJ3}WZxsuBR=dD;%<-NgLP0 +P&{oZwmBth(Vt%2O7gS>=tk#cQLf5>FOWiXhteSNb^=2`;vO5wJ40_2;I(TC@|PBl^FYJ=-+S&lcu$3 +4ui@{?g$xKW5fflKw)rFbu`IC#$o%ShMC2I#twVTMB^1fW{YTQSi +fd-L+=XLCr>9r)NI_r^Sf9_k!SW^-9*bsKg+W7V-b=2&!F4w`3E)kD!d7T$pl1tG??gjeZkSs&;=&it +g_-E9EvMp*5^?u*#Lm_sMo5oKI+qGn({;<6Bmj+1@i1U6WiDi3MA-q}9KNU$=MW)ymy!{VZJS-#yOnW$PZevetAu;*tbB +A()!W6+@^HvBK`$zm5>Zi9X$16p#y7PVr|TZsZJ){5y03B4cW3@lidgv`k2T|hXvW@F+xVYX553#0^dsu@|DY!z|_u>ofEjIk_^doYiJb^LrZ0HQQp=VlTtf$2i+fzAWy#u8o$~rkW7^LH3Jw!Xk0sYoWuf`2gTT{IHI4VJS64cwe-Sx4Z43 +Q~?y$zoNO#7R~=1A*N?Z)@)Hv!*>_NeYj3i+pW<7{kV#-pxym=`5FCLeQp_hi8H(X=b-2DFY+i_S>fn +y-v>^pSc+YL7i))~?Ds^K46fv`nPEJRrL_?Zh;R*iX)}jz3Z%$LF&DBL=YT`f9X^KaK;sZm(!Aw2nAu +f8z=H5M9=sM`^j1m=TZ0n0H#2nOqx6xU1`w&UeiN_yP4IxkCnx(@44(?Y?^A*0DWp`JGqIMs&U2=VP& +aCCahGe>W6AQ_(Xuo3Ljr>IOELnj&Sjn%i+}IEnewLU(8}K0%$X6?TxfdEEs5;0`jZOglOhB*KvraL& +FjC{}Y}&*~6^J9Cv)MJ~dDcosg4do~=5%7&`jr7Q8ht& +p4ctXSB)8VU*c5i +I_0?T78wmU!!lUiqYiMsne(n{p*`H?_3jcYyWC)ZnjXPNLywUJS$h0q9ij0P>SD*+4!M^X&b;{O<6Mc +$GoL$DqO>*!H40{S{mwC@pq<27)0x4N>0ZFC4BPc!#jHwaUd*84l&2?Zd;F+*lc7X&9!#SKGP**i(4z +Pus^!0_}&I`cirve^B7r4?RD~jek-Nzb&0>Pla8*EnuWz$tu{rL8XwEN7U?Q$OLjCdp8S`dbh+6T^sD +O-2#|;rOHQ_UaA8I-f`s&g4HUIXD+0;U!y=4SI(ITR%DXehZ^Hao0Pr=1PrO=SZ$0eh7NWoZ?GsHssZ +dEJ*Y0;ZLypkvMkYz3s6e~1QY- +O00;m^MMG3(_Ca|+0000#0000V0001RX>c!Jc4cm4Z*nhna%^mAVlyvac4cyNX>V>WaCuW!2+7DSR!G +atNmT&S1x5KKsmUd&DGFtoi3-mCF0TIJey%~mT=DT`sYS(^`FZj23bqPLhI&S3dKOAt08mQ<1QY-O00 +;m^MMG3A-%64R7XSckP5=NQ0001RX>c!Jc4cm4Z*nhna%^mAVlyveZ*Fd7V{~b6ZZ2?n?L7T=+cuKF> +#soN%b99r=JR$_?fKoRw$k|3wY|2|yuECerbtL)O_3}?TG4j9fBVi101^NxC+X{ZcRy5lFQ!0XFc{1? +23nT+h6Ta0uIiEp0ZTSTUREqzh&-(;9?0*5fohM#idV^o>+fm4S|!;^f6aw{Dw{4MkM4M-ziq=Zg8^c +&#EIoQJt;5CykwzZH`F}CuYLUxfxNETo^#nSke&S^jPAk}7rMVlJ~(fDX!1AtJv^w%^o?AE9xYR!Eh%QYEQZJ5lisf@ ++#ahM4M!Z@xRb3SQ5qr?cxZeYu)`b3RioH)9sLx`JdJCD}$DsL9JJSi(fSEXpLSBpONq)Mc6`i|1PW< +-0@#Ndf#)av@|3Jmu*<4)FZdVji4M=QCJ`wv9eMc+Z|ZgXR2j%$~xUgOkgP`Sk4Kh90gj&x +4cK)9c_Ghn3uqq%!x);k&;deR1#~kN)%U%dh;u2e<$H*OQ~K!=rypkN)@l5a0}?pxV~RbF9;t<;31fY +KOyNV+vvh@--nKlUt;;FKv}?L%3yN0T@`H`y>XUgWdt=D?{XJQI&NBf=nP6U;x3O$KnWA5LU?o2wCk| +8t!-rWUICuHZM;>832%&Wqb=yQuhd7s-7t*KAba5*&W|)^D@R=1ZJs#V_67vuMuz95SV?LtZG!2+DHl +9Y}%Iwcc~Vq5vmGq!Ai0ytz)iK-VwXKg~fo5y1kvS8!q=Z&ZBw*1PRGl8^ltQ=(iIUd7e6SyMm_M7J6 +Qn5f7B4%2_I!MZRI`4Fm47n9E&^1cs6tVA>!v)s7e=q&fqVr#rMLa-h%7mSj=Y2p*5IW2W?a%$ +H%ER+8Rn4%$0rq!Dg!?G^f}XW-()w(BHXYZ?m{Cn8*+RH+#*!d1!-VS;o8R-jsMm?t<)I6t`xE-p`J= +hMI99zO*k%u*zZy{jmu3%*W(i9$whkzyalUIF#^hj3G*e9V$1+vPPlMPiNMK=cy)fHpyyTk-?kjxqKgRiuutZh2>8stRPk%G}e)Q61CV@>|HwqKc3p98_*0lmnYxN=3~} +01>enPSJU&eA7-db#_h=Wdg9AcA{_3(zs^W|N&0hZacr@pUA6Y8ad3BA6YUk0#O&Dss-z@-Cj7D5hHkJ)DdYcK{215 +_%dF)>&UOeRW-WJNS_u$ri~fW9`ys$UEUyb4pn`vFV;-T?0bucB%j*%QfraykvDGph^??73S99OwhyQ +<5cB5P+1W%Q5>hELQ^le0jGuoVi5l1PEWQ{`zcU@#NjsFY>}0N*y^I6Z}!j>fl3`{79e@vhY +`z4?WaKSAAxYmoI33fX< +Z4wY~}A6$ivf@FYpX8PXHzuPsCcF`T7n!6k4cnkgmoFWJP8Q>MbfxCvekUOcn!AsiBz|Xh50*lMQ?yh +q(-O}L)r30%jrMCs9wnB~%AyCd@;_XJzq|Zr?$E&}bUidBYXBk`ZjF%WiKy+zJ2H2cDJFK(`B4FlZdK +%Jx4Zvlcrn{q`>M)gZ6zAwOQtUM*pQT#Yf^6kZ!3TFUAvaNyB?X<^8dC7w*Bp2O%+w0t2#oU#kb1q!N +J@_bjdN>}P+x7hvCk#C?xfpMR`~}o;FY9l#L=2{)`{pejAqd8b-v{QYiyI5@&`7ZK+S>1#!wCCIlZ`% +kwlH?{Rz6*6ioB{t}Yau4lYTWwuH(v_)kS8)Hf{fU6~*`ai?4328)0Y2z`13J|%s6CJ;OJM<9{3Ro-%U|{`7CQvImI8@}Op%$T47%%}ZXpO+V77}d<*<72K_#E +sj?Tn-!QdO-C{S;B5wt$b&0{3Z!vfiwU!PduX4AM-cn2&BwOeIP +YhiT=mzvgbQ*vX0*;iENO-cWy#1Te^;gi55eEuQUpGjzVK{ZytM)xtcZA?vgbjodWI{3DqafzZAN)#j;{>LmH`BQY9wKs-{5HrA{9kH(+0vYAfR^S;G(^K +N_A#)hv#%3@nOFvLWGv56B{;}CG>`%qKb3`ZDJ2<~x>u})Cc04a5a@qm4s=MbZ?X;H9Q2KpYu6|GX@9 +5ewMTmS`cm;yo^;?4{HEGi|X6NhG3+x;T6ijo)LsJ041W(y6>8lG3I+>xfv(nj_!9I*N2>E(pIN$Rp`USyg*BlXU1GWejQ#|h%|FJQ+ywmcb%9ilte3eO;KPMT3A;(2r@@8ebQ1zfpGUo$+N_x(W;I +YY*UnI*#a)=N|{1MYw47Z(ZX2HE@9!k{(2@Rn95u28iQ%Ch#B^5b$JYAAA`Y +KN=CLFmdO!;3yEWY?H^yawm`ScrzHYZgk!ScFx!6j`q +x>p8O~;cAh1&LrfPOg%AN(L%p4zv+H;5h9j@tVIKu?)Vs2G!#4I_|3c#KPIpFu7`qyozDW205^iT#W^PcNGZZ)@fu+sk8dar5O;#W8XY_VHq_}yy`NMNPP)F +AGov-wUIzpcnOFio?bdwma^@PuOoIUbQ?csMag%_#72@8=3ebqj6Y02h^`G>1z%37|UBQV(fjecZYWj ++Ki(SQqqoDz`VHKtHJJ1~3;fJs}X0pEx5I2Jshcv?X-OsXWVK2TCr?=?X@Pi`oO?ri8*Mu(;#+4r-{H**6>TYu+*r{ +sK7{^GpFP=mgVCPote!NV7sk3o`*HSY4yxWU@UMKvchjpS&`;bD+^v^z93M4hFdyD&646&(H55!03~v +b3%2~586PfiqtcXWks`1QW_6WS?}3No{h90oJojxCqw-yvv(+s>OjCWPa5B4|2iLQ|yg9p`o$B +I}E!dw_X|eX1raZb;Bx2h3uQCL`XC^b +I7ef!!e01=Xn=^qjNe-%P2Pvo_DaQtvqY4Sk)K-tM+V>oz+0wg$F&#E35!ei2q{pMNOeE5;0-en0Akp +vZDl{^JD}H{Ui`WL;wvk +EX49MM7){GNsO_OdU9E}{2V-EF(bjNtEd!{UvlX9@BgKf +uXF>EFQAB!Rp%gwX9;GAur#=GmlX=9X*Gv@%*L5sCpy?rPIakp$wPYg*q8#i_&*^bto?@nhU=(ld)=u +hiJ9Jh~c7fUuET9IZ{>O=4!jEZ}zF*IWzV<0H5`T5QLQ#>-D2mdL?F4elsw=86*yePTUt4c2$V|C#bm +2mABoKN9pS5aw&x|iu2#ss!kW1M_w3l@6$S|g4y+WL7&OT|>STJ!LieRA>QTM5P6!Cv~Gw-cq2NV2B6OBuc7OmJDa +BBbcTKkc44u$>FfCsK+L5kA3NK&|Wj54Qn@avbUuBzQ6cKBDdmI!FfrEltq$-B`6{ANRH7C>+-7yf;E +Ywexg%wd$vBy_JzC%OPPU-%ZpiuG0_U>qMlZNQ)O?XE`UAB@z}%GZjh?HSKC+VlnS|k>#VpeSrxN`}PK|BC50WdSL- +&FJ3AfwR}c94MEY!>xd+uu1o%9MksE(}UAr41ES +;uV0<8XD^?=RQXQIWKJGGUV##+7kK;dv0}OAZ-OaN@%Y8pe|%^b#6AW&NmAjDhB}ncd*2Pb@zbM(@bk +cxTx+z|;#^bpkXgq4@&}kY_TKfQ?AtUS*CNM;7SZ`dYYbuOG(v=Fe)?V1ojg!tTl$NAc#AJ5q4M5Piw9T$sJXVL_0Q~_nPG1u(b1|5l$%J_;Rj~YzBCJ +?|L2fhn@5X{BqY#21QFYVjBwM`c`x6qUQn^sZdE`1C*8UloxhP&swD?eqGe`|0ja^c<9p0MUGR~f0WS +ik~*HzzDf7GO27L(^2GUfr{{O4hd#fd)3eX3>ANYsPvRf+XtW`ezveU;ke||viu8AQ+9#k-s71$CjadwFe8Ud +{yae?h(JB3xmtp*b@&+I)3gu73AkWjEvjLG$Y@UI&aJyd7}3Gj4ymo7O$2Poz2ZS9f;Y-)(U&?xgw3S +1QC-6P9X-6RG|s8Rb1xU?)8xUefW+ndsJz&CDGvySYZwO6jNe43q8&HNT~W>Y(JZU>$Z-{p=Q2#!+S^ +$?(T6DgzAV*~q=Xi%Quz6x!^9AE4R}lrqOZt#lv~S}OLHl}d^$K^n^6jyTfFM_zF +{?d01&B!=M>n%I-Ti_Uod<5^eI +62K`EB*NT+4+Z%|7E1QY-O00;m^MMG4XVHo<}DF6Uvm;eAJ0001RX>c!Jc4cm4Z*nhna%^mAVlyveZ* +Fd7V{~b6Zg6jJY%Xwl?R{%=+t`ulcl`=1RW6ZU3bO1ZGpkxn%CR*ws`W!_%WLCdu05Jzc)QpF{1sVx#K5vn{Xr!T~o<7j;#sMOW0 +7eqwx(z~>KHtKPqVMR2ElrKvxu>Z;f(=i+N2z+wR3Wt5zy^u3lEHS^xsPQ- +AJN+kND1;(M>^MTR5!V^;R=LcPvDzf)bab1uD6cXoo#^{b}t>V-Exxb)e5^c{>>HqyE3@0WjHFV!|%e +9BhJEL2;34(_CIDc#h!whhd(SJJBCIqO@p1g}-MuJhKkX}7Q!N;ks2d?(kWN#7Oa0PYp-%wC-3O}*W! ++tNS^gCO3-FDXXaHDjeqbca;UKPvwKb<*Ii(q1{>SoKLRI_c}7TAT~)}LV3whAzFO;|M +BG8*|0z}DL}gCFkQwk>CytXr&SYrwZE+Zezv04y8_Kq=*%aDGakY-y^`wbP<+N`3c3Q%;kasup#wW?j +~-)V`Lps%|z}S^P!OXpnIDSN1#y5b5?b!TGBh+&Vb;+~C{|!4mhKmP>2_9a#(jF{ISpCEvB)mE1o0Bs-2&2)+khFxGFOhbZrGr60Tk5i%C +T+i1!<^}XGirP`Pkn-hJzfPU;Sdb`r&2S0pt*XY8B(D{&b!XQ*fnjb{vrtuc +%zKyc-X$O2UA7wF-MWA=7j4qFYT3hvER$W`H@YdH=B;W7dUXUp`z`I44>#Aq9QdhOJ^I2#7xv;!T`9U +kXXr)Q!ZmxO=uWPdz$S~T=w`EVtIFjx5!`^T&k?}HtOt%4XN?W)Mf@~b0Xr5`)bZ#|P0f>bs}{sA($V +C=Jc}KsbpJd==P?h1=W+bVu2)u&);Co{D@PTam=6V?9S@T%APv$H3_H)q%>f4j{}xpd>ep-vabNS(PKA`wII- +)ALkQCCBE$GlxxwS!r8FsdRe6U&*yfzgw8WZXkA2Yqts*kA)Xw0Kfg?wsA04r5-l*-Z(9Su1Li4uaXj +fh8hxy@nG5|GEsMnuKT?@{Y5Ull3ay?tq_FY2B<&7X1ALnZe07S$30s^Ym2RES{XaDsE0#*n;+l<?8Gog3>BaLOo?pJ1Ci3g!+Yhf^{^8Zz7yt1$7!4Dpn97X(pVNTd2K4QE-2ekRZnL +Ed2^$eSICYH4yy|B_r?X9P>`>rAI+D{99j*}$%OP6HSf#5p8No!e5+5E-rnIW?Oi^{U0i}r}t|}l<0T +>Yw(z!np#B4i~D?C|W7zq**+(TskfW6QIqT;tt%!n+FfsuXvh~O9(3ujC(G8j+`j3j^GWnJICDk?($8 +^yFLM_PvX*V65z#QTd3$u2Y@zG#O8j5SMO)J0AcJ2_3CAiY0LPu<7=-nGR~#DehiwkmhYUEO?wQ&1&W +gyhN7l+OiCUjbdg)h$*)LumxM*)xBcL=v&!S<^7OM}cGrFfwPxt1@I)RbJc{d7rsVSbB#QGoWDIvSeA +-S%-@Qi=aSAm|#=%xl1GJOy=D_GuY0nBx2))AO+S=>Bhp++RBxpcBBP!tA^nrv +Vh46r3^&hZMiy<%F_H7JxIr`3|A4603&=Sy5l92hhNr0N$PjAfm*&NP7tF@j7P+2LPS-eo()l0D;NDa +YT7P4>A3W@q=}O~1K;&SA1H!33mjvs)yVu&}V+gu)7sTbjIvY2uA4Iki%SbCQw`$Ye!F)CT4b;&D$58 +YX(VOy+Z&+bTMdMC+&i`njXID}b!S2o?ac1CTecm9SbnzJbC4+{E$bK*SbA;&(^4%3nPiytfuK +5W5mEI2q4%)5CD8nnuJ^ozG?EVBkYTBTAHY_Vm*Brpd=ObPbS}jZ!{K0?65IR+Pw;ro8#cy%->l%)sh +_SC#|rK%Fi_&}a(+M<@2gS)W2|BE8V!RM7SE)m5$ +f}{EEYvq?)+X+>nfDfD`{Rhg=Mko8(IoIw-C(a>vW#s4y9$Kg^@&cowg1*?hqMR13Mw_v$`c +zw7Cce_DMUiuTKSkYQMk0)UcH+U8^+no_ixTL-a`T*tm)_%G__kB|=HIqJ`1);tu9|tx!vCkcGBDQCT7dbi|R6ma1-gGI=H2zS)9G+ot} +st9~935!}!R%0)H1u>PzLlZ%R!=Qr7^R7WU!uIdJu$A%_=PXN|TkydB7HE1koECy +L>*<`B?uzg~sX#nyg={|URK2`OdR*it>ljxgdIm#rO>5A8)W@Et=_wdd<->7YwvD_E*Q5LArMjIq^Pe +I<34#p$yVJ1C{rpZq~J6jh%`qPM(Y4o!`7d}q!X)fp)Jmn!R@qtVTIf>G)ATIZGb3XOCe0;hAOpaA-1 +5h5lHO3@ykL8O!h-irK`dCyuS)68YVJMTX7ZNITEw%nL}*o6kv-n9oVkfqpGjCFFIxZ)I>sTf@&jO9F +o0i|qi2&s|oa)Vi!$2S7XpdXHm5`wKc<+y_Ic&>ACC-w8O^#EBRo8kF!h!u8<|%o|n7`JPiKSZnO%gl +bJddR^2ezJmOUr8CQLEh@wk1kWmY-T@kd;>;%UGbE0dw~J`uOBQ6V4P2yxc%v(Mip;XUbzS-+Zp-WFP +e`+wK>PN)_1AwKwZe}tBfB3SUW0}tz-?gE#irjRq@N-#XvIFl;u3B6Fq;_a#HST#j)et$y9OpymQ(ou +2)#wDres7L9h63tcZGnOW8- +DiKvdKxwLnNfOLH1xECf7Rz_BT84@692FONz1FB?wSI^Le1<+0>$vKE5@va{_<_nf4a(@LuTr)P0P2a +H@Xg2`IHF=7o7sNYUArTggB`X;NMF6P*#+=OH?d9E_buhP}Iv8j +u%V+8*qjOE<21pQa}_8R80>u&r|=B%RpYUw6k+&Xz)B9$oZJg9ynEURXNuVjIdFF8vuO?Q5WXW@dAot +huV$*4$?#E=A2sG(v$q+~au?Q>eoen9yiP&LV3ZpCoMQ0xj<-5hC?bIiGqw@MLog54wSX><0){<=Hlf +Luq@KSVI7509P6|we6h*4^ntsFb8A99GJ*3dx%(puUqi(a`bc`BL(qLbiY;24hRk$a~NX|J@2NV`&23 +oX?DOP0$Dm@7imNkhnc|lu%{s~I_}!kq;5&(2MSdA>;b6-a?pr?N$69|7)B0O>#;IU$!g;=_*5=U!e_ +`rojQwLP +CDkt(*GJ^QY31yDJAW8p(dNY$FP07_syP-&6XH!wKUceqBrYf+oGK+qOWJ)`isaB2*MF`~DR#06R8Ow +sZ|pcs$Un31`5pTMcxzsIoFe<5#8FyOGzd4rnQ+Ub;k3f=)nQZ{4tyqHTM1`sC?1Pu=AonH3n3SDkla +Lbj8s$eltn?Be@~vK-=x3!mFySMjZOARX^UszK}lFh+K{c^CnV>ZPNS~ +XSD#ca-j3w)V_b6}`5Nee+rbmZRRc70h$3h$o$&rm7~S-{A?Fl_ +OGc9eUgG7x=bel`q)!Y@1^`$92D{3Z7~$_yC7s{5hM^&HgraYPH5jgTO7xgq~!6ti)!g~wyz)4>1^FK +{Ciuxt2Qyo@M0(p~Ux=o0+Ir|b-~pF?4pSzgURMVpgMRl~ES>mz2JJn1>C=}qa14kpRIdzvPq_(v{M6!oLhe$dXx8%X +Hr{kV&Lgj%8UTlVOhdz^5V~=_c5l4SLV!<*cXRUX6blMwNhh@j-Muadt;XzCzRtl-N{y%c*Jn92Js{1?czFFWCueQ@sN* +$Q|?$9vwSv8_1#-;PtUj8OG2ZcQUZ`L;Dm8I6q#+_`jC_qdmyt75~mY_6LCUY|0xS4`HO05gAHPl0oqT75l1EqQQb$0L8JRa<#zmhwe0TUT?j4m8 +F-@wlCdXbX%AmPEKA9iA+`g?x|Q+n>l>2+R>hX4ijrxvBvv){_Tr9t;vZt7`m#Mj_(?{$Old!VjxI1z +6M_BBlmim`Rm +xb-K4DRPx5F6o4VqFQWQjTH4FfA$8Li3$*`1w+3jE*aLNzPTXX+=9jiy0@V8bNH|2I{~OTs^iy&e8tG2{ +#!KA)W7IEO9!I8#P$ZkmT49_ii(QW@A)~$pquk$!OS5MQ&Wzt!qr2Hr) +;o#Clsuy0xaWaS0dojmD_kXatTfSr(^+DSd{9QPBm+AW`OqqpVPe8n%{<6|))Xz;(Kr=|W9$436?NXs~0dy4KEdxYu>>B%~~-7}gxi3tJ6^tk0sorn1 +aUz4EFC{Ak$Xu0q}bKrv8k@vvd!Be6Ipr|WK(jt>+aLe~Scyq(j5>Xn2W+q?oNrYjaR^TO~Nw}ch7L} +I{X&u3?GYbRb;B=JgR+XHmhR7{ysBwHyST<jIs-yF6!m2acC*f +{KLf&sz%MgY)h^xrIk-5TDV*peo7ZnY&?4I{6Nbz7Kg6S6I^`W0Qp40i8YD!CwkUf*Jd|`3(s1w4;0c +|FL6=7uhEoE;i|180%I2;o^FlT)lmd|9^o0RJTYc5m-3qKFn*F&xd!fNZb>=b&MYgCKrS-@Cf-pUS?f +JD5t73*Qs{yOMU2j>QqC5i<2*m51s_iv3&vUR>!36dD*$nxTB0c8oJ +HdLvvK$cC~4#r({tV<2;U^uh0hOLAhKWBRx5Ojpi&~d-PlrjbXyzCQ)*>FWlEhCu +e0J^iY>Z&ex6OIY*h8_<13Dm@I2nCQn&sD`Bz;dIYplOhUW^hos(x|2q)n?G;^`JGMVR@8b%^viTgB3 +8W}0W`RaYPRm8Vp_uuJ5Q>h(4}D=Mw)Rg-rG_(8X_f47IiHOv=N4zTh@@L138DX6mTUBGCyFyr#kgryRir8fgZtGxOSYSj^W +iCpwJwzvxc=Q?WjQ=mRb>LPHK~9Pfn-s-&22{&z?NPtKZ;%-%irx0t+yhi7#qEbaA=z*hN*t#nkzNE; +w2sttM(Pm>X8dlMAJ-Xp%aEV#;8V{{fk6q%r~S5Q*)z6Nqb5v;A>lZ3T(6N5d}zWE*%`$4&C~9qhzo? +$({aPv2TKm|{LelHxo^_E|7@LHbmzDjMqm`5O$!z;Xn-e9@E+dsF19^;o;_B!W{BC2=^u<4v}6%Vmsh +fXC$T38RRo<4VHuoRp2^(AEJdyTIx;qqT%kW56j(5V%`D38DaDocVn2_6Q_e$F1nZpD>?N8~^Yv}^@SPx1hgwm0nSWUt!JazBg4-rl=f>D-jSRNj^^T{$>B`F0fL^a-bU*7QLtu5Q=;dS`M`M^4A(FWKn|sju#%&N@ ++_=7MZ5FkN!Mgmy9^?9sk|GSRIFFx0U)J@QI&&^5FR6(%`sb@@pNv0T`;w3O{tf7imGTcAqU +h6!j2K6>DHP*x=80e=Q6N+wOd_B}%Fd6%z5&tuw)4*J6#Hd*%Xbyr9}7XpTnvk}lBb8_;q}Q>U1)nJI +>09~6_17f7wOgFy?hP4;Ia5&yiew1P+*Q?7Lo+Znw|2sCTJEBlnO_*kJt80ooN1|h7zV5!JHOSaSEJP +A+wC^+dOIq6=+F&S;CdZyELC>$BfAdS|u3j6k88r7g+Gj{y=@pLiG-xsb>=e|=%PO>EDV_?A>DUgr^6 +(S#G6lO$2Po|yOf$?#pKwgyG;LA+Kl8j!c;t`G}Mq4lHRhbGF^!(QS3%HYu&6y^^O5J8nLBa%Lv_kI&=*r>VAdx8jgPHD^n0H!_rJ +>69YQp+|kCtl8hjM)nm%AOql?zg +AOPp3bVL}v_xL(gENf7elC5-zr=Hzz^_&0m7so&enMB1}V&V$W7HD(m9(U+UpDI^WdpScp^+c$46UR-0YfdhR6y +JrL7RN^OG>kQ-2SNdU-TyO95O${t>f^+2^T@>L(Q@hdCPLrQr!A1Z=`m1$YwaDqIWW`GL)2aSbD5u8U +&jc_LbHF1-%EUU_$;j;R}BDMpFDPfC`=CzP$2GVa?Y^qS`vE!k8RP_~x<4Td_^O>Po~O)+c>f=pRd4wMa-ZLQrsf%qCmi&zBRjn&QOI80H+J#m^Nb%|L +)lFNPnKsJ?z&s^dhj3}#iE2498T3Ir8fE}b7v7@e2GrV|;YsQ +t7ub+6vAphqARkMU0N4h^D<27rKrRP_CHbXmbKzS=-hI-{Fv*@Rb|@IzI}_6hv`sW!9hxxQGZui-*$o +VbN)3Ws_CiM<3SxH+Cd@a2_k;avba!eHddgso`Qd?y@eZlj`EcnKyVvL5n#V1*M_ +#LDQG?jgtv?ZJJLL`TkfE$F82n#+^6D}QM-*S(>r|(LvBn^UJtqD33&Zf&Bo~>I5_3XKZ$i2ZWKWkmP#xu +mQdSrNOpZRjd;8{x*&i?7y}x|>X7=X8>pxt)J3=Si06e|)Y&HU#lxGyrNA5yGR`Sl0#!yf?urkqh(qV +ia4@EN&>bxLeNQrJT%%Z?*!T%CHq=$c=jFM6M-@tjsjY?Y}Fx`0c)Bnki|MD|d7y@C$u8@9>!Xys3({ +V@94g8Gmni|$mhY7QLlX9E&C@=>aSY?H@b1OLQHi*DRl;)ZzFB_CeL<(0dfkr<3c5WrJF}*rV#-=n)2^f-)PO9zfA%tI?n~RH_LM@UsWu0H3hwR96VNV +5K4w-p(x=b-WRuwLXhPdwZ#th)KS#8A9mP+NX>yGhX`q3n6w9-{)EUajyzzq8HZU=JP(?LY3sB|P1^> +d^DrdxuA`2O=X+qU#1a;iExO`rZQ{fs$sxZe43kBgJ8yG^+Vi4EptO_fE#OUoM-_pioR>#cBb;%57u=s@L2zB1>+ +Ehoqk0(Dp{rMiHP +tx1xxV5kTCS)_ZIU_LdU)S9I~XT)l}3>Fq22$4C&1vA)PHTNO1N%qol2NS=eX&6^mtsAAjzFxUsO;&# +GdwT+tB(y3FiQk|6=`Mm=J;G)u{B3~M@GG0lsd+17kfyqPTZ?qOHdSt6C$WFUILx$X7IH2((Ou(URc6 +S{qi5p{Kj~+EgQtr|C%5>qS`;WURX%)qB>(5siP3|>??A0QNZis&`mLmd}+7}Hs!wT?h$fh?m4kzy0{ +qdFN9KALa5w5@d50&P_nAQekzYS)c? +dzld +@h>>iswo-TM+cSx#R+wd;0CnbAJ2pe2y0|?^Yt2>n7)vi(7n&xtnt#9;?gcATW4TB8V$_wh;LY>p9z8 +VN8;m&p)XhIm*#_H=i$f(B98R{kfH&*$l6=b}DjZ21v|J(BdXmRlb1mF(Bv;rh_x3_r$STjNWf~wyE< +oe2ha4y=ZF6?QB_X22HKwYceVRp;N>8}KVQ +-1-_*DjCb4QH8@i6zHULJWQ22;oWVm`33xhksaT&hroZ8|35Z}M_$}w{%rYmWT9yIF6O*;JEnV@>e!2 +4nbsk-1qkeNmA1Mxc@;%bAOj5mMi+H4Srzee~8U!0~f2F{lL>NhaBgBB+JeV_@Vk#2(D<8CxYNmu%30 +88)-LCM#_28a;04gT_*IS7efcKge37GNhd4Xz9}chJ>7;anUjq`r7ib@wZ7O(b+aw?q`^_|m?x;a+NN +j}{hn2Kn=*EZQ|E$WYi1@&FTl#4lZShvEwAjUSeIB1G(^fnz*s`@s8ED +O15%Npaz5hjX-Ra?$KQdLn%sHFxwjpWsSr)~N}7fy4x!@Sr(9aO2Pwl~BX6X%IsWMg4ooQi*}&U}z8k +>B=?jg6RLxIt(2)-$blQ)JwP<)9J%I0bGB5$hvxbuRr8u{#-K9g&{CCF`8xt3gW_ygkKNA9MoJU7(a( +Q)zgn!S`FbFO|#X4M$=&)Z)!wW2qV_m&>`lVU~GBVJ>x$4Rmc-aj9IAPDe1)m)NruMMiy1(PSb>XYZT +~Yjh{Uvtq|DkWO`^|5j4Zp_Dt=ZyBrux-E{#C%#m;Gk5vsZ_5K#T)5I`Qb;Jo22Iycp=3)(DS;9c5~e +>ibgZkW%|RI{`>Xa0bi>H*b+)fVYDwLC$oD)(=0ix}6Mz@Q0b}J%SP&tjgj4invV?wegh~`73p$TDe_J`9&aF +=jN==dHzYLC)=AuyO3iOH-sY9um+z`>}i6_)kRZwqn^|D$7SK*%}PONB*nX;C9Wgr9)`n#-!ilqw~;3 +LhEH-oWm-C^HKI&K_!PF&3o%l}&X$;Ak#mI}G1r0{j2Zp8kUSctG_SZ8{kRvPse{R>l8x7uYv{pkjWR +N!}zWsUx?^k=%#pDQ@MDt)irch!cvHVKwFON? +fVh2h;J(oI}B#|KBqwrmdW!%LGZ2Np%Q_|I=!c7Ij3LzxH4Z+o-l9{eklwMiuiW4?`SuAvfzsZ7?L@GB$SvU1KV^N0P7Xckr +wltV9tMI>=zZlNg9G|Tx8yo6LH$QAM?&@7FrtX%kv1?=ix_)fpWN`!=$|?Phl(L!R1-!w-6?ZAZW?+Q +JEh%SUfuoJY(zr(8XJMkDaZ`mDxdQI6u~R*l_B-(atYuhs955YdGl@R#Cq`PGCG{*=?@efDn}p^4zSY4AVEyU^%{s&cvfvzr|+7=V9%Iz2l+<$z0FQW!;v{|8V@0|XQR000O8Mn +ywZUd&0g>j?k=86W@vApigXaA|NaUv_0~WN&gWb#iQMX<{=kWq4y{aCB*JZgVbhdA(U(ZyUQ2eb=ub6 +c~{UMG1Oe0^vG9uA(#n94D~s_Hj+^QWEQ3a!Yb03m5Hg@63?@E?xOaFAWmoNAylXV#H4zOZw4VaM!(P1;f~o7#;?idckI4TW#mSJ*}_P}{o7`w6rVRgHR_NV|e-*+y4`2o5vjA4JEO>`Iw&QyNL1uLM$VNx`-g3g@v{7$-L}2E5pY%hWQAK}8|6VzE|A#EAD$$Q%81JWH9 +|iH11lG)6kE_G+JXQ^0iUPt274g`2HydaB3;#7t$2hvu?&P``k-r?rt=sdyUE9B?{)Ry+M7Vx5Syw#o +~qGwx&zdx1sh+BL^f*!My!2L$=nnBL%lF;YMfTcQe)h-BvXInTM_86DC&yK4tyMV51iZt-*GWY_%RKXAez +WBoR(7Z5|EOX>|HD?Bt6Suh0sVS>8g0c52>CShVlX?9k@0<*c*%C9U`B20QjX(1#79OuxQ7j#7g(V;d +!1Wxi_M%8FIEif_$uT+?pfKsON8@sSEFwWRK-2(1srGQ_69{C?4aC>Zi|Z$>pzAz_1jdRVg)1fcz-Bs*3uD89U2qo@rBUJKCmdv&L +cIh7Y^?#!ImG1r0V~L+c1!Dj?>_$Y0NYB!ns9Pk%h>NdPd`1(+UKpc>8_4R^T(8(5vpAzJO(f*QzVU8 +$UTCPa0lUpr8le)W-rVMg9BLrP;EpL4RN7#SsGzQ#JF=j-hly#hJqt)(YsRZgptnc0CEL+n6&EJG3>Y +pqSmJWmu;5Jiq6)98}#~b#G#XBCOsxiSx*JoH0a>7FX{sa@pUTg4m2xqXcj%}-WEJfk8HX4d2@5S{Cd +Ayei=yE%Pe=tx&?Sazc2HdDIh@;9-D?<>s_Ov-7w%a{GX=!0J*GR^&*9`F?ogVk_e#^5yqCr@D2Q;#7 +aMR(5|fo%#TU@fbMGz=MilFJ5P(iG4mB@hID>&2#^pUREr$jdYEHL=(Aw>Dg98~03+4HP?Mh>An`vs<$ZT6Lq&cUo*?xKwaBsB%z&Ttfkc8%Z(mQ}^DgV{3r^w!B&1eqTh(+uNVF2!YdZytz77vb;5ROw(7tmW% +ISd*}a&3AwNlwj=*OU0pSS0tgnW^74|Sap6&K5g$~kUl`b3hDXqbwTv29ss}tT^&h`gvHm9z*XPvTKm +$=K>=@9mw9EW;p~PFQX(mHm!d9Pe23X*`BD+OMy05Y$ObpH0=^U?_hCq-xx4#uKV+%d5_Cz2^h43^`358BYVx1--J +orWvXW{ec9cTkHz;D3VF56`rzQ0uHO{stjTw_Un;dv`H{QYh)gH;Ec*tJoVli1-V7i&Zvs?keQ>n(J`jyzu?GHfY>!SRF +}U4_2T1%*^7O$^+iPgAVgP~o4=N8xj+&^{;?c7XhVViLVd_R(Uz_TMPpkc$+>o_xJxQRa0@|0DxjDVU +3^$bHj)N{FTOS?t9)=XbPby_A!E{eh38`{*X~F48xw0O*Yy<~&s&vr2>s}KeVYLs;GC(MmmnZM^(yRy +la?&)2=mEcL<%t7Y+pe@ak*1T&TEomM0EcA2+a>d7Yq1gu-RAV9rmj`f;vZZ=72 +0UML!nE3L{%&LVzjaWn)jbyeooxGk1<3JTREMV9XWCXHRWwPFhuu%oqd>{Ux2@1Z?Qp0vB-Lh`Hz~fw +V)SJ(1jYR#Hl$k{=+ubR!ip}KYaYa-hB!RuBrhHQG6B1Jja(g;p)Ay`GL2ubUv|N2e~iZ7_N +`_P7gvq^2a*L{kkc=m^je&5!CDs3nFSFQoWs(Z*S@LGQ&ju9C^bd%(_#soZ>!-@V>3TcfDv#qiZ>6

$Ab-76ywQYBa(W4$(rUwCoBpj_1j-t^F&UwM^E*DvN6S}!jWz*~dFw$uI#P +)h>@6aWAK2mnS!LsZ8oODrG?004s_0012T003}la4%nWWo~3|axZmqY;0*_GcRUoWo%?~E^v9>S$l8W +$PxcvpJKrv5Sf$KwtPVYwJPd!?7IMQ8YDTig>6tPawRdQNFH|?TTRo?-kE)n%ZGf)p%0*f0g20<*?Ii +twO*I`j)dX5l2ysWkR-bzFC}3sk*Ag9p?)5X%sSt(B&C&1Qel^N$&Sl?!Rv*Rk49@`OA8j=u?-iNt4J +P3qfyM)WK(e=!YI!q&t!zxaBP7WvH|X%XKuH +ou2sGJD*ru@s0z2;%UK4vaYfSorM}`MucTC`K8Jw2S=dYQcg5)qIh!&zqCQY*oqgpm`T3bqhLwKW0GX +#-Q_t!5sVw(vQj2dm9jG312tb)DW2EkEXe&fiMC*x%~ldb8%r|9ACqffUf#8qJunopO5E +TdkXb8VrmkAnBmS`#dPyj!$444`4qxHzMbl<|DQmoBbEe&uk%KTFj14Aara=F?|!1EH}vV;?t7TSQ9h +TWNR$`qY4)viW?sw|1}m>WTR*iFFELb5F4z7l1E8G){njFo$Z*PuB-%ev6tH0H?H_bR!bzVL#P<(TCN +vAqvY2AF6XM1p=Edp9>X0IQlev4tImvX(-dG*1k+n#$f}YK&xS)AD#D>T9l5eQ6^FJ(wHT@ua>>B4&lcd^o^OAP

$CHVtBW@u-UIz-wYBnYs^jC?%$vi{r|>;7_Ik&QltoZvZai|I$SwT1@ +u)-d{9MuKpJrh)`Z5|lA!li-Qd*hA_ZEUVQW;NG-s6YkW6Tc64=0!8nTF*veENY72}-LXhMeoGgFn|s +Kog;xwxu6Mfs+06{CM`)FCNt)kIVIL6?PH&v1HkX`zXUiOYj{zY4(BbVH*Z6Z1qv5iGKNI6qq6umf9} +i4zQjSX`L=I&f}De5P)R&?4X_s6G}*HmP;Sxi?%_pOdeu!t@hJRnOB8>9NcOr7ns+8Y60Xl%6A162)| ++J{llXl^Ca`H;WZZ#gOaNc2$VhaZ&dWqvGk7bg&*8%6V%W$Im#SQMYZy+Vr?XM(!#+Sj^*h2f2o2ifY +o*Ue^s+pky~n6{*sq>DB;VJt#$L$l<<>dI-AkoEkmWLLIKyrE52o)5|9xpW>l4_-T;{Z48AJi2$0rjM +=1#hj_M!N;L-LC_oorvK6ChEH=fC=)4I9x%%a;GPHL0#~kQ5^8$ +m3rOl{jkoXN^Xgi8wzHt)CsmdzajL6>*V5lTnA`_PC1g2~#)!c}O_Rk1yUtA6!76B&)7zZYhX2F=iR7 +Iq2b5yo5IT(*Ia!~TazGi1;w~2NJ{LL|e&zA==D){uJha<3c +9JdLM9?h&*oT|aH$=Y3V+b&tS&13A5d5{MTjUw0auQZs5A42VN$luWX)Bg5I7mueL~uEe3BRQ-VA(D> +TDUP1(ut5;VSL{$i*%Kes?Tt!;_3R&22r8O(e;rxN^fM`A+weT@s=lOU}#w%8iC!II!j-w3l+Q)6`R! +Tm|@q~=cJ(xf>&8u>FM{lbvUV4>gEe0{urp4>MqsRW1Z1%wr|tLn>0-jYkFN=A +_t^{*;-|y?ktY9vd^UK~XKmT_&!ENww=!L)3FEbz_CU +z(wiR3V&kqf$^O>P|9Oa7OM0Fngd852|NdQNtAYy091>;|}oG>2#UcVH`1sss*JtS+e7g)H4YR`(V=9 +L(-c7T%{5@Au?x20v!-gHpO2PP9rQ$OhN9P3{G^slZsY#6FOl-7OQN{bsZc-Yw;B|_n +?d5#4L#PWTOo07#txsVvX=bsn+ebH3xVY@+nhK0&?tC;J8|WG)20DuK0kpnTJB8cUn`xpqQVr6lFvA( +&G+ifjTp?a2;kq|~L2uIe|C96lI@kYY^KM&4w>;6}HUFN;-KLmsIOJNhbwVx~)UTlL0;Pa;K?URToS3 +`XhSp_!ZI^F@4lWFGT1BWvNlP*VtDg7{2YV}dK-V_GK>GZ3^$v>b>eV5~|6q7QABbvQLs3yUQ0&yw_F +z}H32_4sJ*l-Ch|W@KAhM{tiUZ)jg0sZ{l)LT5_8vt585s_TiW8nBzn8tM9NY#V4JIuTH2 +2K6$C1}?q{bD(GPak)$Bbr-{0fyF~k1(}zA7DIa{#Muw+Uyp4ygmf5s8n8k!}x6+zgxJOv8B;Stp_Xg*9M{fl)*Mta+U!iHzt3zk~Kl&F?O9KQ +H0000807gYaREMj-qkaPb0Eh_y03QGV0B~t=FJE?LZe(wAFLiQkY-wUMFJ@_MWpHnEbS`jtl~uux+cp +rr>njE-7LW>?K^h<^T2;(8?%x3v({cdZ+&?ewK>(t13hC!9BXhj#lh8P{1WP&Rhj{DfZzwCj +0QcgZ}|<*CRRKwb{H*9yH%3h8{yEvb>}r6>}?U@v)%9V!Q{HqeOtnm#_0 +Y*ozjF4h6Hn{`qZ8ZizDmqDraSEDfmX=x>k|RI^R2+LKcR)(c(zkF~SesKKKAE!lC0pznyx(Sjvm=kw +5et}RGmN#Pc<+ZEj9;07Yc0#yNxAly}W^+uMgg6pQ1MCPXaHW(>I^(xBGj&(0%m?;sWK@k7eaaCi?br +mAy2TlZ$;feCq(XX3}3Kl3Wp4xi5*(B_EA;SU)1>(s1JpAgUPmi+j&pu!TyLtUI{=w=PhWVy0Mh>%Ig +MWS|*&|vp1`YNGYZ9#4Y~Uq(o%}$=zjp|{X@nD6c@3YX40QaK6m~mdp&eB1odcTo!vP&K*b-C7iK4+G +Y`oE?Ja4&j1@}8q?_!VI=QjsLgrDq1_VXU4c@>*)+B?U2ULDpj?QIC0?^PRtq|rAFMNo#j{)zu@8A05I_@Hs8?xYCO!7d(pC| +ZnTvJg8!g0TPo_6_Zq^Z0^tZkflJ=TH%sEa6lMMaLI@i6)Bg_KYs+@J~#-i+1GK(X--$w=(Ab<6o&E( +dhuhibf`vUv*6VX5uC6c$ww^kizYshV}=^;e#vO +zQ;w73x$PXPfXP#?ncv#tfqm`xOqo^QLhYgC>Ky+71VE9BbLW!I{lzfUIi`KB&QwP|%-8TV-0Rhzc1OaGv(FE4dudPbHD#&SFwz+17QnM#YhBqzjrvEYOdH5cU*D*9R~N?4=~`W82gFu*W;) +X42tYT=U=V}xOkoa^zv_i{rUZ$FJLaSbb6%#k}lPhc`)555QxD8II!^#W +RB1LcVo)@S~Ug;)0>hPx`}521zUC7x<|P6K^k*YH^mg0J^4aBFH1qp7chzgLN=G(9>m{>b|;YwU0H~= +58qxCOK0 +|m4!*E$EpK-5nl*c7Y250;jQ5qVPs +v_o2#(_Q+Lfq<+3P1xXlReL0U$K0yhW4kz9?Bv4{=FytEC562UvQkY#Xmtrth8p=o8cQKH@o7|cLhUh +p`QmTk&2)?Zv3jR&B6d294-Qv?AQ8H6uPeRp_Spmt`%mz68HWa0Kyo&bsZe&vc?eH +TxDKni<$c?-p0Cyn}W+4(I+X6O|LTyD3zhqaoglJVads%|?H#5>cB=$mBPwNnzpEL8OQ~LX&QLT>v;cW(cf<8w_B^7yw+fN +7tW;-ELpaysgOJyhzsNzlnqy|RwNZwh}l*vOObQ19+E_qsn4{wC$!QJ5I{i0%}!OrbD*1JXJ|!xjl2o +6;o;qAOXStc;Xs65t&r64g;Xk)e8R9j9+ZeM>;tz)=t)gD$n!`J9+&zGto8a=5Mmb^P-yJ*nB<1o;rS +3_(cgrv70&?g+BFquer!K@58y43g{+8#GxiMz#|jJt_c@1l@J3-UO$Q!t+H*1UAQyV;KsW*+67CEz^a8|X +e0G|(4A{-$flRk*Z)WqD03!9Lguz}OS!>9zI!c&Rq>vUG2^fn_0BQmoFrWuZpZafR9UMJgGJ4Fw{1gJ +7m#uyT!XNRCJg`{+Uvg<&n2icyJzU~lAG0;X{UKX5280;WG>~x%Elf42L}#r4v*$e~#9j^AAu=sz`B~ +PN4J4>zNrv_Xm@#rfv@KKd-@RI>!NtJD#&p29n`|V7-)^oruy`vSY>>GH~rAB@yO^#Omnw=Rl(aa0uu%pw+URod{wU&TP*Y0f70V5PqLbkc7-hWl{tkZeukYzwJo +z27pf3t4H*nrNxY1zy*xASc} +grqSAm@}0(=`FXk%J3wij?F +FWU`Y2~ufwDy;!;<562VJvblZ{;5B@A>(}L;UW$?_A9UL@|~l&$H#zc`_X*+9j@#Haq*_<%hF{I74YY +|LUvDy1oQ|wyF1Do&76|_fnUi58xsDL&;&V~Tl@%0|2i&)i`EM1((IP=Oc?GlWl}CTEQvMMLC6z~r-HMe;@tD1uZ&V&7;^t8Mm>;67?f#|P5IBQB!<$i>nTe} +P7-v3!WwWt}uWO=jOlOjEa;95Vs_bS+E!XdS^}K7wU)0XY-lJ%j&VmWKR!qaHU>W8ht(Pi_G#a6lrI> +-&h&$_TSc-4I_bYJA)UCCGdgFv!?RY$HsaC&3?|z603LwM}b@h7N3gytl&#B*kxnN0pJew2??!8qR_c +LZ-c1^$r2S9RwY&V2s7#_&ert1Bf18TwM+oB%3GiNl)Y2vD~yAn^*%5YvUj_^>jNpC{m$o#ri1D5!(4 +G(p*>JUnLX)%XW|zLfKn0AzsmeAf-@M;S(>bLItGy=#{yGrGKLvoNSb#R)5eg+@WY6`Ol{~)a?-*u^D +Ds{YlGH_A609R)yy!9JRaLCCU8`IH%y0M+hn*ItXD&aG;KNiwIU)t5@eg5v1tM|aRa)Y{RLvqZaQ?mzbYZP8%6@f!Zg6uCFruKGWO4kYVJ1Onbp +9L``qAMnk)(S3NjGO?Xy>D>q`1UBBb8^F*!G6{(IXRof%Kzw5zgQRy7n{bO@r@<-<^IrO^$-im7&Ag# +$ts2nDb +k3Kv|lxBlVGJv)H3a&dqsn~f@%iA(0-LRd9IIlRk$|Ddo!_eTvk3VqB!q_p*)J!_2PWP&m4rvREvFp& +=g9zq&;R)lmrsw#HI-3s8(>J*acE%s`axs5#?X#Zg7dahuvnoGdI*EL<_d}aX3&_1nJ9@4dJG-)#)zZ +bkyg#=t<&+b#s3|xs3!YWa$^F9!@T8dJJ#O|p%1p~ud`PuYs%~fx6P#e9~0D79J;iw_bi41u}wORCee +rkDAXSC)7%mxc%{}9Nj^bm9pzU(z3P{HfuKCT+M5Z``%2U=tqKUvtPr}>&Eei+!QzKbGVv}^kq-l4s2 +1uO9QwaC9;KYO<*kz$U;Nc#?JmMv%4Ni{vvNV?MkS=UjF#P@@=oQj{;TaDdSgnL$}IVUWm3(oHqf;4) +edYP+F)r}MFL5Pp?#UJNG5go!A)4P7V$^f1NvN0(N7Qv`w8^XOg*?LWya6{Ay8U->$O12o+=8`Vf_$7)%nJ;JD4mQj%vqqYH#y#t5Q9I7-ixxte3Cv7paKb +CVuUZ}|3#%2z!^xCpFV)mUI|oUFcI^^@u3=SC*8Ss!yXCmh8|0!3-_0}|$e@+D{U1pnxW{mGh#(J1+} +=7OGCrG-xq4*4$hUYD}LAmto0pp*JKmW2-Ex-`6E>*=#|x)R?BQGJ8UfV|ON5m*ji7o?bj?; +B245qjyJV~^O^h29=d7Ee)dnP$dv7f}dge_kEAj%kA+0S+|0W89s$@1v$=_z31#FHC>*ur3xVH=pli=W@Vefi=;u(Z_aJT8@3OCs;aJ=5a_z(_)=ks<7K4`fTrLVlrpFdw|$D0grV7w6@ISnZ!B($*2T3Ylly;?JpLTZB&NjL~%8#1r0j1wpFdD#f +R4y$R_*~#cse459-~q-PP4o3RsH!k=!1B0jbd=yWWOr;tPvyDQD)GDa#@vmC>+Vo4uqG0exZCVlcfkJ012E*!Xiz8*?lW +^t*HQu}w09u7{p{$8Gk}Mf2^Sqjc|0OG;+;e2^^j;Qf_HWEacVoG4ZhalOIK`C<7tkg(QvGgzSGY2C& +ldv4u+fa$(_MI7~Ib|^Kicl>;^X#<^Z~=?3J|>*jb_(qzZo7(2?H@#I*_lLfV0g{0~zqFKr=}Qbel{9 +1Jpe%#riK?Af4zG?+5#1s&A*mg|CT35=Bz8!U*(pr*sTk4*S-!4Omig6B6u%$YI9}dc-N_#Q}E*MoN6JjYh6 +&wox88ERC`l5SJa$G23f~ffF!}%1O=bXu`>%yBQ}>}_ck|cB1v(0eZ)!_OtR?+znhq)TqNpbcOdE<^K +kbb19}1#f~u5Lj>b!F+(iEmi9|z47#_XL-Cla0^{uak2xOyC-~6SC4U=SUk-AaA +dhZuT|uUgk=d;0+gXp6?gPGA0ZwX(^o~p$XE@3GlNG&Z9SX54>nDFX~g62;P3?MaG^=GX2n;<974tIg)ZdL+MwXiuD4!D@pnpjj04pz}Gq%DW+dEvn6Yaf^r)^Qfek!Dr_M3)iG{K?d7yYg0 +CEH5PSeffGBjWu_IW#a2Ezt!b1WQVjh<4U@4eoXWNG)iQcbDNz3%abS&z6ab-%tUam`e-3O+osh%ZK2 +%`xQrQpo^Bq2$0x<5^t+1_?4wo>3X$7(0FKVy?HZLO&77t}Jil(Kvhq-Rk +f{8M8xSMn&=xC`DcM25-EIUc0XcggvmXvDKweiNSLnv}hemYBzZH&`_|&0wX +U+dxg6`?<+Z);-6!cD&+gpA+`UQj&AqEzFjNrBoN6&1Me$j$!8mCfPLj<fj?WQS3JA5Jy$#zQZP^m8%0_!4OkzrNH{@ue76d;DZ~OL4~x%DV3ur$oG0 +!%1c(1p~h>O^K6YnN722u1CvO&iV+ZFN&UxE%D9y(HqRO!OF!++3wYCQlb86-$x9!ko2slSLA~#O7i$25cp +($0Q@xKM0dcTH8SX27oUgM2%^4zyZwnb68_U|h{MLy@gnjahr0hN6Mx3q%kR6q#GjF7oPPn6sCLc>MG +q`){p$MX-LXP+mr7gQ8xXsIQx#`fm_GXI(e(GgoJzG2tqjVy89z_#Bt03eQsf_}Ke|e)T^O$%twOk^S$Dv~ +@NDpIjujg>@859+;OhS9H)j{~@ml}F*V_9P_Uu6gZ|hR-yNbK#_RSZs`%O>ZsHy@QG|xc(;14$8TLmaY<%m08zr+bv51 +PE;RW`%gr54_(PI0EQpf82ITmWPsy--{hGGbcY5Jc`%|aobIcoPz@&_LWEu*si{{v7<0|XQR000O8Mn +ywZ{EzMerw0H4VHW@Z9smFUaA|NaUv_0~WN&gWb#iQMX<{=ka%FLKWpi{caCya8OK;;i62ALa6toB18 +MXSbHv_>U=+15eOgh1|2YYBVY}%q?P9#xFQE@zt{P+EeqMlaffx*leL2Qx5Vm-ckDKR>u%_gaAW#nc< +Dl4?HBzC1vD=Rnk^K6zdU6iO)7P_ft+o(E7c$>c=2(YRR{MivCrVnm!;T0V{4=^)uODzrj=Po4AGA)lB= +Xpik7;@LPUNtK*+w%*@?i9{iXqER9>lYPa4cXZo>cxwd!1!ECwnSDpcCS|$kb|k;mY>1SneI8<3a5Y? +hGGks1qgAxb_rtwwkI^dKo?!IGU(EY<>#sC2xtyAK!QvLy;}1(#crL+_CZ`&YEzhy9iPl=@``qV}j-F +LDG*ud`}BDC!6v=*XxjOuCG3Z^zr)p>-F_A`o-IKIzIie>o1ta1>1$68rxJQGiu>W;C?(F-!Y2cwVWO7MfP45`HAo&?ztxp2DeXnQ&6QOmRXLzi@OAMs6>d +6dxox+#G|*-zN+cFtCzkED78&b^$k<00f7S;?KmG)=d9M~ZY8*uvvuMh|*vu%E0#b?$?zJ4$naC@VcK +ApT`!=FmOM8){Xt?V*y=7dGOJys;bqMi?I*>{#EoT)jEu8gzQsIv-n2uvOhQ<`Lvp831L}=*?LYqX62 +bmK}90D4cs|zBsV9U(gbD~;=Z|u2T-r*LpCSjb~1p3IHO0kfRJrzy**jw|mL0DB3(kzy_(z#^2Fx`7{*m6>=4`aSBGx@Jp}lG)3Sp^TFT!n5u5$b6KNdHeLMW +kf!zz-t|w@DF$K;MBpa5OtVD4mJXIaMjQ62CL +@S>lq#3kLFu0dKMf2yf(y82GG)XmlXUfpzpdyd{LA3j`yL}6vTl~FD@D}-iE^vgukPV_5t&!7t#^R{~ +{E!ZGJlp#~r9gVaxHqoVT~zNn=2U1)L+WxD5I3PLNen<@;`Id2_zodKqJ`9Da7|D^rM5szp3qUQrG$w ++=k1M0C$>;t|csv=H^A7`4dkZfcdg`Dp66r@RZtzi3>TcMojLW^&5#6BJJxk*TfJ~fd2R2WQvpYuWF~^;4;jOj4zpCt +^C;n&DJ#+^=68iEk(mv$c2A>;?CwY4REYgZw1OwhBU48o4vf^D<&{pX1BD$jXq3&fC{G5YZNDPFK?r! +g{ojI3OlfhPIh=!JgSv2xR^lz^HFM?ai)oM1#N`9C_-a9K<^F-_Uisn0E=HbLH!jeS<$%0AwcVu7eJf +yjIzMH81)_gg^1D;4*9=NB+!{xn>V2Ls-;>B``3o9J=*!=9+>{Q;e@oO!Yb0#B}Die?L{ZEB_oRmA)> +==LLK-+GoHtooAucO2PKO%bF$m;wbQsLfKbSun`7VO+a83f7zVf~8 +hR(Bn9Rfx>qmLz0d=KiFU}W7rqo8fKz6Jo}JYbd;X8;+ytVZ(>wFTa-;fc8~7jD?@#xu;%2*RUL7L<7 +03m>wvgo^+{-{!|BXbkBLqF!gz)D9m)Ex-B|OfNS=%YxrdG#P&M27(j595d~L-!X6c{cc`H<+T0Ma$e +K=G5?qLCf{CPf3@Yna=^9-I4^d^c6A2mdS+$sO-!n-QcZn))RtUctKYfoka3X?-2HQxtmk|wf{*Q~b2 +g)!c24{nB?``%FK1(^$K~)`V!k14ip<8Pyvw)Wl1?ks^xtiNa_-&c!Jc4cm4Z*nhna%^mAVlyvtWpi+EZgXWWaCz-LYjYdPao_nXCQ!KuoS;3 +Dy4*RmX$*B(Xcw)7{h4)2|sVt8y(SlV# +hqm7GjOw%(LgBhp!2=4~S<{QclSJg*C +i61S<-EztqSkPJyuJPDN0}~U^(LD)sv!_ma68@Xby~}tn|CzAm^xk1$k0Ufk@~vm0Z1 +B5l#;h(C7XBfr>usPNs+EWW=97H2lG6wYv9&0PaDZhtA^$5FEC3Zp7DiTf}CeX)=VbDTINgj96$IqnJ +lxaZYCf|FxqX^%HZ`PZBlqM8w`RMFbq7$1&}NxP6v=s!^0sUW=96R)26A^;A4TfJ1A5V7GNP%tD%9c8 +d^wp2n7i7asXvZQIrimwGW*U@WnycI$%Jwqe01`a!7+8#5nc*jEB;%I$$jnxd8s{0q^$8mR?66WPC2) +rg<%U+Nnt;Ef8atGn9F+bP7$lv?}Fm5O_pzUeL4mul_Xo`1MN#62e6KFqT=7=6M88mn(X +0{r+#+MlGxxkWpz@7Xf*Dd3|#`d4KW#^~E)GJ)(zKw?AH7tA{u6^q6(V$5-#(U45Lqd3E~=9-hR8_}a +DG%gW>L#dFcePVQSHInX<#FmY-6-&o232o=t*k!e+>yWz-PwjS;gp%lyjkrko@Vk)tM0mMAdWYN@7X#I0(TBKQ^h}25A6W10k=(>rg +x)sfF33`0wM_BFg>1(uPbZLX7y42QPRuj&s#*~&~J@cAgM>P%4%1ygLbq^iXK1M>v&|%1ZZyz!_kNq#u{-T5J?RKHp9VqF#2o +<$1!E`~nPK<1S4UG(pkp3Qzh?DD9Gp9&_(I?$@g?-1vSD0Mr~-S8 +W3U<2G>2A!U+QD!@JH7qGB18Y`wA^B=o!BX!6&&|4Y=Q!#5B5^&?TPNy?)*r!thES3ck&$F_CHT_~C*Z5?6C +wYBLr#OYs3l!K!R?QAMhnqY)7KwmuL4jkU@nv3@BE%O#{j_WDN|4qD1^}X9ZNk=2?G9^k3fw=PX62M1 +!Iw6dW5R3>+Yq2KN2LPBh6GM8FouFEC0&r2!D>sdXBDv#<&qQt0bEwFgKf*|Ua|G!3z#ji3F6}h*CtB +;OoHwL!-(xorLGX_qpVgt^eF+vp2*pW(l?&YM4NQ%&B`I})C*8GS)L<_sy7h1Xe+d<01W7fmO?g(HxN +(So^c2!>>+XuCM&36?m)xSn6tE|Irp^jp@R29tKUPVRsF%sDqEo^W`Z7e{EsX;nZE+WwgOFxsb4sd;t1-3@|z=FwJMWDuy6`P#3E3s*-O<99}6_?Q00z?ya3)ZDz1Jb7x7I~G)+ +ERB*lSdEra^?L62xtr)|JhbKi1$k!IRe)sxyGMUE0y@!f+*vldbU|K{@TjA@$rxa5HdHjJ;^CLX3@If +_hy&l_X6y$`8~#-C|IXd77RB7D^FIS>BYJQwAX3l?0pYu-b!3RdY|P`oRWjFaw2efB;rbQZ_Fk-`z*m +`d4Bcb_Tt0sWAX +Cn1b@85A3xxaUw)2kaAGv)=vL~Q*@5)67Fu#PA6TC^=rsO!QL#dA5D +51%~f5DAqE{AGz#z6o)=2xhuASLQAOHjwa4?6h3^`Jq3h9v_10Q$p!se}XGs=xf#EGY1n{|Eu2zz|^k +!++^Z2byW#gK!wuWoLS3{nzn{h1T&GerG#z(7}G`1YOy53WJ&al6I=-o8>0{yd(e6tn;h`YeFG_30f5 +<2x#8JGJuEhGw9~XEHTi0^JJ4qKx4)cQhYWR!#evyb6Kn=&2A$>XbFu`)CpFsz+WK?aZST3{1v=$5hlXcA?G4$rHGnF=m+46FV;o3{=%Rs%L +XRBvI3!si(wU0mGHA|>`*Rp$E%RQAT8QQGBTOl#tS9TC= +J)2aAO@F6j5OxZH{E+$2#9MUdgU|_wA!J&Cb6E-Ho{6L6JDMByJn5{1h<5UVZvJLydM!8oeTY%>6kId +UfFJeIXy<(dl%m-D|x@ykG%wcsg}wg^@~isM>@*7_XsBR% +2oF<)gUVd+hcsM#q(OcTbMA2774F7KD{T&^1eQy>qi0j>dx*AEc<%Qlt-QmSg-Yj;pcLyE<71c({qHn +E|Zo7j?c}30D?KHxu!UB7zoW3PLRbS6+Z=5fuKA^VVRT56rMxEJF$#m&_hG?5BoJco60&K+p5q=q?@b +!g+CX0~VmCTxW8L84L_wkf~P)Q|^>>`sU>-0i}Y9d)RqNQ*f=3ttQ6MC|I8zoHaa3%)Eha^mgwoOF`)qR7sSeHl)(tRnG`w_oMM)A1wEsIu}EK3EJ@J%RD +5?bhW|%uK65nIWl^`lN)k<4_uV`>r&&SNm8F;!O|4v#l*$V866Kd+OhI0z&SE|u$KWxnR%u4;S5vCj3 +F_fPl~qI8<2t;^!cZ(kebWp-0d7NR$*vFlfz0D3ZgQ(T*Q|hs3ff5gMjUsin1q62jb2$`d_m%85KNcO +vMj79#O0Jaw*^H-U?+zg||CI612T*Qk@43tjUS3DzaHTti`QJj@ +NNXLpg$KZNpd&bdcE)lIs|pOedMxg^DpW0BOxP$mu(J;)KY#e+hpUet_Suv=bcV +9zxFj75vyWW{z>!B32E>U7t+{GmKsEV*Di%O#gp?y44lAuwG(0)_4x`B5jnEZ2J~|S=)bOWszyjk!r%?Afw6b~8ZfNnE=o&_NvRT_ma;GF}@3h**t%qkI42?Y18q!2jl +ug3CLd}Si{UQS{7B$!|51=qG#iLcQ1MkKt;}i2#hYk(&eb&k&fgEFbYjQzbMXi_4pxVU^QwzNnh9+9+ +CA34h!P3rcmOE_O9mtI&eTptxse?<=w-j)S4drOxXh%TOK<;Hsr|0KBJ#OfTRIL0r7)me{7L$wX>#OU +@`MXy)oaPx`UMXMF7UwaMkEE310G|UyRc=I}#%@J4qv#Y;jDrySn9DUZEj_FBjm^iB8;_2zq#_L5);A +?W%COj#p>aco*c-f|O1GZGFn*$?)E(s;uBPtvdDV9ssor7`rK+iQoZn!#1Z(vlsU3)NG8vpx30;Gs&w +39>ITgRaNPXKx?1lmQI$ZXo^6goZptTUv)3wN?|HxBro;*craZCxT*KpVkyV;p1QTChf*;3wOLuH}r` +PPBcvH%&S-GH3_Z0WY*dXc6@K{n7h?!@W#*l7C&aMmvO$=+-*h!?&=x934OuTaWut8>@C3yuI8&XHP} +%+WU7&$)AK0@nE!JnjdXiw&2-*i$uQfoUQ1g)8|&JEAJWVW2#K!Igr^KgK8um$n&*&H)`XAFd*gTi5lHZ +VP=&1sC92$Lz$2v%1M3S<;ziW@|Ys8F9VwIT%UTG?QsxuSq0akSSo7!PT-SiY&j*1zq5L{o->&lsrWq +=&(DK+=~{8e}MY_WfrFohwB!f{;@w5MY9JS|I!1zJGO2eC3iMj-FSNn70r}!ycbd<2{rC%l;?$KlI|( +UW9wpJ0BdyVTr7RXjq@fc&FWl=+K&#S(W#)fE}sAO$Ja8>84B_NUc#4D9O!TRc-;{tuf})hca8RXp{Q +c1VGwC`wUsW^U?H{y?6X9dRT`Lf`Jzqxm%pCMA0KS`HrwEB#Q(gDpC~HvaJF*ZeqlJqwFAyS9}_rDBv +34V;9`SC>&0^JLnLlPFJOhd$oA}FQz2YVn?OWSo=s74;ku;E%xEy4lC_IuV%40&lA!y4y8Rs5Bn_cPU +D179!6FSc+Bw1mZk;#(i=NP$=c;Io9kjcuJq`F!}4O-0MP(KUU8a~s>V}sSE4bo44K6I^y=m;yrwMou +%$0G=<~yoqbMV^#1ej9b)gL-w~Z=EWbuKicUD&bP1zVv-edRAG^xkFi8UFZzH<*=-gV^WW7CE5aME?d +6S+woMJa1kdTX%GFsxjYc|r&xEtL +K-RT6A$FWWr#z?r%2(6P_)`}?Yb@$*<^u!D%l@qKvIxbRuCs3aeGGd1$w=t~SrBh_u*gbLGk1Eyq+)D +y->w$zsv&zIyooS|iA3dR##x~@MN72^WKakcHr7A&NqQC09sSO$;t1_WkB3tnPb-G{j*KFo(TsU(c%x#Qr%(hJYc?9_Rg +Bs9G7&z>$fV2klPaP3*QSg52KxS{Wjbx%_POXHa02P}yjs@l1{GAoo^2d(+`hd-7ZHM!dGu=HS5-aB{ +S#}LnK!cRP&?=7s}1L9HafR?X85L(7FD#*!yITJ^wimP+r5td(gkUM9S)Yi%Li3F1~ekCo$oje9{9f&5_AF5TAs$4> +WVe9+}GRx5gbMo_oN(0b832DvtkkEKZJ&Ps9+BIsNwAS-YwehLx1n>f5ZYTY3Eb$-n(_1cUd0;}b2Yx +WH7K$2f{XN6^QVyrHw6DF2u5F%S-V-=R9pvU4=K|Ws=%G64 +`CRB;90?*>~p<8Zp$8~KhhRC;=x8Qs^L3sS2nS;?% ++)%lK-?`cbhe_;iMu)P&YuM=;XT;QlR$xPn1?Ua=|B#Ooldzzg&F&brx<+B5-q2dFL%R}%k;->6r?gX +dL4&I!?Lp0YPXL^Nnpa&*kS{o)O)Of$xj$W}t--S=AlMBEMHQouz10N2qvMdgNR4X1j{o!9`MX{E}Z{FnM%X{8Sl`mfa)(@LEo3<1+wQ~u?@iU^$Fz+0W>P3O`FY{aw +iEOLbbS*B{|=A-w0>({6Z;J#wgz7lwShO^tvx$O!y-ZE|Tj^)vJhQ;eN>X79d+zvTqd7sI@q&8!mftT +`R^q&b86vBIR&^|F2NEmqRLhU&!!`njKgzW~pAB~wm9xHbTx5qsL#iHp*9Q=EaK15G1JY^Vt!oeSHk< +b-r`lcagi+y55%lAd8n}1Ia1*~+?Jv>Ai93XIl^N)gj8bEHf$8vC~up2U16GcZfALj@=TURP4>8V_x0 +HXvH=F~}YH4cgM;Bkt%^0}q4{{2)!_Tc41`w=>5Eyq=d#>G8x(l^YnxSg3kWDpy!}P +p{1U`4LS^X-FCX)0N~Pjw|HuK+|M0A4bi!x;nO%H@?M7JNdlY5W(H`NPeLA%uKEq)6M+}H*`Lgxnm9<{f1O5-Dlf60qzwgZ}KIybU(ZZo7T$i|vnlvB$nNU!hS+2W~^x? +NM|OxKZD>6T9cfq`vEJbVyk8|aBDr=4Y)IMqEDflb6x&{L%gmL^Sy_7*eP3K?lvw3V*3m;o0ClEr%P37e69{GW1XQ21A}~T_ejOx)zPby +j*2-Z!@-@cI-5?E;bGS`GM%U1M6f^<)S|39Pu##$(`TEqV5q&q%j4!cP=gF=3l2wNX`s|H;ZudtD_9Fj +Y#IUD*U+LbSI?k|tSdYW>T`uWv7%O|ailNeXmIMI>?nZYY=>W@mEf-ig9u@^V;e(_vg3yOq-v#cL@|a +Z~Jx<)&X*y1t{>*^r`_3DGzw|7`j(LC|eUoaCl8uf?U>?c91bN%Dc)?GUbcM>^Obs{bB!l;z>opnH|uP5*Ly`_IlN6qr+QZDAs-{2esbSi~YCMmO@})Oou$t5c^yli&#i_Y6C<}DUz6J6$PtPHZjtgb6waF;n +;HmC9!^F8R`$p@I&^$yu594&l7Zip}2t)k$Xt4KS-*ODN^^p_*P7(R9oN^`#84jMRg}+{@8Uu8NI&1I +EIM-@FLbQIqe#eDATV-d}Ws6s}lEs(Rj+Lc*UoPE?V7arsGuP{6uJ%If&@pYC-Og4MaOEl2tq0eZ?az +;Hb?-0rmS{*LWV)hPcM!?C!NdM_5{ql@MGu3MRl7iSZ>{aO<>m2jYDVRlMQ9iZ3eUibq +Zenvvc+P!49esvBscWYvlJLbK@#**!I +J!^gf9ZvURX_xz7lLJ>Y1lpd9Z%!>-Thwi9^5*?kbAKh(tw`%%J2PtaW)?O7f?$B1QY-O00;m^MMG2o +00002000000000d0001RX>c!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#5UukY>bYEXCaCrj&P)h>@6aWA +K2mnS!LsTk*=@qpB006xM001!n003}la4%nWWo~3|axZmqY;0*_GcRLrZgg^KVlQ7|aByXAXK8L_UuA +A~X>xCFE^v9plR<0TFc5|B{uP5R-N0f)E`dM}3vogY-2`Xb9!fEaG;52>8X=9H?!T{Ob{l6KdaZ9BkG +^?&Z!Cl;cD;!(kRC094>TE#=^dquzyul@6$AGO8}FfZopA{0CKJdF=(sFIf)r-(6c{KLMWJyICbrUho +ZD9y*9D{}AdkW2PnMLl%Lbs3>uJ7TmOp^CQ9AuXzfRCJy}>*?g4xeHQ)@Z_VRX*84vd?tdlMooHe|R42EY~c63xdSd2*sMh-@?nQ#q}j{Hn +H&@6aWAK2mnS!LsU3r3CU*+000^*001Ze003}la4%nWWo~3|axZmqY;0*_GcRLrZgg^KVlQEE +aAj_1X>MgMaCx;_>vP+<5&zD=0#zns=|-mWnCS;kbsb;gP0HOcF{eA#zgCl5SW{nk{WeE8)d^AvQpGQB~x!-0+ +f}$msUV=MV2#lWxfkt9LwQRh;ZtnTa}vIXPdwCcLOb-H>aL_oEi~C_P9~HZ@aumKc?LlJYuj3)#>zMHfqwi*kd1l_n~5fPvx-Q$S_p<@q6wUWM{eFi&03+zI+`8!;XhZpms-SV>no7 +{I^^SOM!B{Y+>s1=-SF&+F)g8f;$kR1M&iry{{D2Z%tNd)!Zf`>D?z@qjBTIVhOs9%5mQUi=-QgZZrN +ERO7!LK(p|zmp93e%jNZls~^ZYIce&aokY>=m|U%qzrvqF8@cVkMc(D?fdk{{(I#A*8E0Ucx#Dd7u5t +jtD5G^2S>FdPM+}L!AqsY)T=Pv^E5j2A1!WyT4d}~jQ5LLhh|@ccCQxA_m5Y;P-8Nv-B(VvXuB6D@h9 +&xY6q#`@>{Bi_8;msb^`6!xe3gb{9J7a%nXoh@Q)Owi=w)4tdhWjdqUY*?kM!X)YwEp6b6tx@q$2l*Z +f-t!-52=C{U&&6XPFdg-+tC#KQb_MCOaZofohHis`1&3 +S(>)tIS_&_9WVG2yl%AQmcS@tNbIOr%#16e2pFAr#ngby(ZLh<)Ke)s(jFmKYFODybFc(ZLw*(|i=qg +83txeUqq~F5$a_afj6y6Hx56@HbOdU9m&auTWbd8yUsK&o=eqPsNMx(uU@ +qn|$2Q2#l0eUwLQ@2j0i(zaW$@&O9MWQF>#)DY(x}M3tM5;bF|I61+jEt@Y1+!E1j(5!L=x{VJ`VUR5dPyY9~Ou +moG@cHgvUbm>ijA0)IH~^{a#PP_JLTXjE>MgK|xS8IevTj?&8abr5`H*5mp=FJ-ouywk{RJ +fcnAH6e?}f>?@|9Kov8z3ihC%HK%vbmaAsAW~Vm8?qQGLfB>p{bB$DA1~s!20<;&9*bhawPBKAwc3)N +^+xH^;DcPWA8m_$zV7i-yX=|*NljYUN%THgH9pQK1*}R(E-P;V&UlaVM+?YT^Vm&-Hf9FmF500)!vLC +%gNGz#Ff_^r;AjK?pgMV0%7r~nbN@5>=YnPn^uX|~cG{xvyS|UiU&Ql2|1 +~6|N^RJ{lo&?YLIGz;);G^$JkHP_ebOPb3`ByRC|h(sbDIi-i>diL8_pgrF9-8QIKN9UrsH*fd23|4g +mIR!Ow|#rxNNNK_`3=l*dDt2%&$r%8sz9hY@yUm8X-td>kXS=O@eLll+Dfu>OZaS;is#8wyAI{&HWk$ +1!XeMz_caOGJpbCVOo0mqF5R472^_ +^P$|j<`!>1l9uQ>vfVMx5u%|aRF54XRu65(k%M&}OGTUeC#MK+tnrC`Cy9{0LbXT1^Z6KM +zWAk_)|=?H9Q~q*&L|-jrz<1Q2M0*P$1lkvChG-l^TSTgdY72kqgC;%YBCH4&wg>dBF;a%?X#gi#$H% +X{L5wvn)>ZlOt7kk>C>59#q^c5VwYd4IW_L<5>Z3(~o%*NeuyOlyW4lko)Kt>zMz7IP5@JtqlX52;!? +%4aqVa~*quJ;#MsV0g5foT}gIF3)Dz_6GV6O>QNWIb&48Gq!3s)5&Ke2X614OLF= +>CI)BqUN8(fITDzlyFxr(oIZZK+hD|lmfrsyY6|-@j8lyFoA@!!DfNbg}Ay%lY)vx>eRz@tSMGu`pbmP(C}gsx$~2mV??_)G^$QX2)a0ko$VNIRMJ(xi!F!*FV&bu +6jO`wRCPmSgGRiCG{-SO9a(P7d3%F#&WG9gCeu!SxVSN71SFqT}%F?RSO*Uxnu*p!ro;9){#B*t8xLHSjmd`r5myMb=#xOlSR44V`S(>QnLe7ncA+>>}`td5!1Ogq5ktFzwN{5d|cu6t<50 +Ia#%h>Y94ou!jOrik-fya7zGP +0fZF$Es0-IwR`>+^M0W4+6dzP{!n0W^CVp-)Jl$`h5DLX0FV3<1QA>9G<4{i1xY?mpzaJ*lBex{>b7afCfuL`5>K26tqQQn6I->*UQ#IS+5rd9fbq-5ZFe{66hagso11D +8qzt8AgKjIwAJv;{vU-lqlPpUOihUe9Tt1!=@j#~9<2YW<)hk?HYNH{czgEhKl$J%S*Ux>_tF2Z(x76 +fWrZ_mZ?9?Jhdw)guAFec;YRmP?Mk$?lu=vh`OHYMJ{8adSo9(2XwDFk-^6|E^Wpje|vK=C+04D+D7V +v3%Ti=0CN)=jR|zsMN=W&>ecQ1B1@BUQV~d8&Tz$MK$NO;gyEME(yK!LLImu}=|={m$|0)7;M`VGy^W +`6Jfs(M5w+^We;oY&bC~c7=T8Y(*RW2T)4`1QY-O00;m^MMG4$$3y;91^@uM5dZ)u0001RX>c!Jc4cm +4Z*nhna%^mAVlyveZ*FvQX<{#KbZl*KZ*OcaaCyyFU2oeq6n*!vxKj~S?o`D|S70z;3_&Ltk^=yc@{v-3nkdPQZ +#|}BT&KaW13JQl_14rav^0!;lZ_Ql-lI;bF`Z8g4n?W;Bd>epnt>BFotN%^}kpJn$DnAqh)WqG@%$IWyY +wv*?p)yL~oUKBJ|j29pA=B-Id;(M~CGL-CFnDYl5={rVo#*nKg984xHzEBVR3E-c%N-4Z-cnBL_Lybo +>{StDXR2c;(A)%$9r~*<>iUewwWw53os6Iad&$?p;G|u4RIGo{fMv0_BH;bMMt|>&Xii505gOw>L1uv +<{9w9;T8h2A9wUhwfp!{tfpPb)VFj1ISayTSbTUEhVbM$OM^Qm?j38W^#2JwibZ`&F_4f!qomlsFy*@SK|@>#)D6#0^7o4}A2Kv@UoQ1l(Z +DjiMMa|Uuukc)-0?PhitV!GiCc5I!~8q1@*p#`$FK+2rZC} +7seQlZJVL5iXYa8{ +xm0_m+vMt2rju@%Qli@&it)GChoCnH?+;4L*C!c!px*b+97&4o7MuW~9ScCy_I-t@@tG$#22 +DH01@#98X`)3)Sgd^f(sqp-fBFPw>jk7Dsxp`@Y`xpg*|BY-&-)l&+@g7YM?w@aXWoQic;|ITCH~QDH +XTU+$vhNH(hItwf)=rP0jMtPkw)Hh0R=HB%tHZFKhC%`-N5l?-83lp`YVPa_%+2R7`ANmdXMSgxHgqz +KydFg{Hyk}0pUq&YypbySL-D^5w4(PB$SQLB}2!ZmszS!IN_{M|U|b=Owx0KDnbn_FD1f$mF +EH@5LH^FgSy4al4MTg;d?WxS!mQ^(1hxAVT@qnoi2HcJg^=uZ%a^e?}~Se$hw7#-$)F6g(?c5{ppF^s +f%lhVG!QLvA<>A>;0qU=0^cIC0Ep0@H~f;JV1{+^Mo*2)wWY<;q+DW~TrmzT?{vnOiGh@L%##n|L>+j +@6P*2(A9`SNOYar$J{8bR(Fb>Q~*pl#2)ciIE!$ECG}{J$)Y|4q@`UwQv+5uD!4u?{-ni>cLPgr630J +e!Sj*s;Jw{$+MFPU79f^P0jX=vSL;jRbS31;?jM_YB5T(!O`S>9e`)eK9*_>)2kl<+{n*eQZ1FIjpmL +IP6~$fN1dn&tytnWP;*P@501I|M()GO081wt2`^r%|p7h^?$JCl9j|&rnyNR(gizf?4<>HMyl`#C +Zrxq(wIhM#L6)KYY7oK?w^~=t~7=>+LZ+mO0^R)Xu%31fZXR_9L?(K5*qaP_F_8iU(SB9f5MT3@!pu2 +xCy0TMl{sB-+0|XQR000O8MnywZV7Z!JffN7$1VR7+C;$KeaA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa% +o~OaCvWVWo~nGY%Xwl#x8l?vCVQL=OI{qR2A-h?C;i~Yv#0_yksy}NfawvCH5n_W$Vlf29_sS37~irwsrwM^M7pIyo%ky}=* +MJ`yJ=7lQ5B9>{+;w9V3l5J&~M7<=w7p#!%L8y4SV~9Bvs)(0y$O{3$se|)M7Gj7fStORcObV973&m9 +ofRXIINM-Q?9$XA8T#N8NPFKIDMN=UnTn>PE6vapoPkRfa5=IFbmq6 +}=Kv3CscSN`MYxCBh=vv9(Y*%wQrbGq&arC=w+SUc?Uq0G47~OGt^omoPH|asCV%33+OThBDn~@ie6y +%FTwSC{o{tmq?r}5*gl)Mr^_Jb+53s;a9l*IQ<1=5yWXB0|PbJ8bRx^CXA%_76KeakTovE3haBsaVhrp?(T+!16Gpzj7$ +xMvj9oU6n%(sHlOElA;K~*h8fz@u?bh)VKx0;{eX)jhzxuHxNOaU1VgWKh=_mrKR@A +9c+!$YyCNgU?U1UB#=xL=8QfQ)m?BH?qpeL0U=8_u=_yp+nnT?2vK~a%9CpOHE{$>*yrQ|<4>2Yj$?g +ISRE8>4Eahb>cxED?t!FmM4bB&`~}W&%?BR>J5bqdB3BT!SN0X7r+wVzMx@{{=380BNw2l69n0e{b_l +_Iv{5^Db9;SveR2IRfJhWvyqiw0?s~l-fJg^kHD;gs9r3w8WPS0aP_UH-h`0Lwxz~G!p%fzFmhW=Pvv +R-p_IwuL*DRdoj7a3$CuOCQYOGX>vQg{Fw%ZP1x(3yXp1S`MXZ|o5|$11%EsFj}Oz^$(w`l1paN;=;itJT`; +`_DhMz@d}yH+Kfsz{vf>QVhQjk6hU|Vo_1^uEJ>Uj$P#Qj@tDD>#4A9N3LsP0HQ%u1ihY(N<{e_ZOis +C(h2tM9U?I@2)TYGMoNw0xO?=|N4jTdOfM)Re+uy)KP>S-Ml&gfae0TPl!ww2Fdd4&!9yJsxW9mt +G^P(J9rez3xX8$qyWh7L9NL;vr=tO{r57x7rPS(QBXhG07g|z6~azvhmSDDv*ohi*NJpsi_SooULp;l +oDCqzLE2l#u?900Udu=Y*5dFeY%M@5yC#|=opl41=mR$0UI+*a +f#iGU)Vxp=UI$Kny{AHe7np1ZY@+nmjvjA)Ln9H?z}R1l@IsG;rZu(b%__aAGSFNb1`r93P5VPV1lt3A464}yM6-aBS;%HEZyR9#iw|}3s +(1`Vr6T~Z8X}&byVO0mRp2JhbKMUyRV13SZahK#n_VHa_VYf!U6uz>0vjSqztFQ9NjAyA;kid3Wp_Ju&7fYs{8ua#r>7`>o +X$6paG0a1Z6rVpm1cT|IepcJCwzo3Fj5>J-@qv9u#c1vITVwC2zTU7g{hp#O^gm?lXD{|Q7qN^EJ;cQ +k?p>Uo+KATdnj6Q?6Ce)otR$F?HY?LX2qfP^5mjKARi@u}>;@F +9$peZT*?325RD(&mFBflFep=IObEeOUY>^^NJDPl-q^FdKdD1UD9;p^V79KF`BAhJxi==15Yjx7RWIF +p%j@5I`uE@TYIC&RY#p2N884OkjT_QMWlZsHQg$-{ZE7twu@@lq^@e^N#qKURwD!Q1?fDlq{0s#ACe# +e$-1CN$nZ1#X{rzVcnsWI7|RE-{rmuVvzAIB{rVC*F$#dD9KTbuYK9;m&NkrhrV91K_5kH-1Tz^ya7) +NO7gu-2-x}|z_cRvpUGW$>UJXPR@@M+_#wvNVU8|XuH!kpR{`C)Kr1J@!JZk;2u)b)I*Gx?@uq}_g(v +_YJHMIcWaZdmuC!t+---#?Lt!6s5%wK<(Sl=ELHjLO+iHhQv!3)!docXJ5aAjED|OHH;X$VK=?PLdWR +No0_(o@HJXA6#0XfK&fQ*wvE>U%C%rQkR=N0CIDBw&p-s0Qg#O;oHt%mE+;gj-;Dqn)#YKs(r=$DWLk +uGNESFB10eRiJTH-jg@CX!BvAoO{0@jN%kmOMxOKx9h+LS`tIs&7BoKP}P422oWful|8-l=33KJ5w0= +)C6-6M+myga<61@DN8&!tEGP>!A`-dsUCrT +PbGifaXORlU6Xfr1mkAdQ?dTNe^w$AqEe$(8w_6K&4;3&=6hM8b`1g|1K0JA`4rr_gRi2j{;h;+;S%p +r>!2C@TT#F`=D}T#X3My|UqBSL$Kw%^-p`KL2A;mp#G}|InVksUGw{lY3RG_VKsk3%%vqv&W=LoTdj_ +boGcYRY%lI3GDpxf?9`ZrJzHKsc%8FbjlzK5ByD$~T{wwrUk@n}+;`C|zFq_?3P>tg88IHWU4)NIJHv +_Ys1wh02LNebEwY<5q}=lV#QTRdjIZ(e6SN+_#lZ?0xKR994(Y>(M&kLxf2?&74XL!C4lbS6Xgt8fVl +Ex^{63UVn$=Yu*#qPC#`-=flW`r6FrEj|hKkh!?`5%hs29?RDvgDn6(*W7F%l(-|-x}bd8Dg^UR2GyZ +5EbINIndMr({c2ao#`>p9;a(p^1_@R(Gr=&ecX&M3&b-+AAyaFini8{fIOzl)W9h@MkFY;L8m|wiJbn06rxLJxo!A46m_ +pB%;FWt{rf$kWnV1SP;1j}b$`QQzGGf)CPym@F7(x)i4(aI@ID7(+z!#fR@0Z8YtQrg22I%P$~roY?bU(Okyz(`g*&55mVK*cfVtld~aqmZ4MyVn8#K>&t#ep=b2F=r^~^W- +eR-QzObbl=d*nxPhyKr@sj$Z)uf|YRz)w2#so$by-Amn}TPLn@3W&lZ(mpr^%aO_V&Zwo9mBP{~atHB +mX1pAGd->-Na*brr!0IL+rq4ssPq=+-2DC9bnEJ+Ixd8ZIFO1ME{QN;qVAARVaOl3CAMrVDtx1;m+~i +Zew)oop&?5eutNKiWA7|qkIjn#dwJsKw+=W91+zav(;ST=^a36yXg~KLSHfXM)lb@%&qnJn6c>;_*v6 +e=~(3J9o7|0%V9Of{}o<)`hU%5pUlwz8;?C;jsK(EwsOe4mX-EM^L9L+aAsL}Co99YT>xcdoCJ6y)F8 +${;9%94buklbvasj(Z4w+C#)Uk>+f-Axfqld?{0<8{Xk~Qh|C`Nh-_!drR0GfqB&>gpXK=>S8`_CGf6ERw1>fKxeE^%b5Sb&Ys{8t+JrH*U&JCZlAH~ +vkQ7C!W?qMBfI{=1iz97xDB>Du~lF!aS^9n?a<{mW2$f*F`2X2uHCC@n%cIi6Jw1(?p~m){T9Y9Bl)&rB)Vhp8(pSRCjJ&v#r +u5D4cSNU=~iT0WX7;JP(x!UZJEcvit)+WQ$)~`x`o!Otyg2#YVR+niRY4V;74G-XuHwv~Ip+O#DTBhiQ8p-4C!!&vuH~NL*EH8hLk&S7QVZp29ES+k7dQj-ivz?TyeayrUXMDg4yJ +)QBKVW@vCV0FYcNsUOx17A@E +hm!bD}g9o*5tFEqx!2l$z45oX`MaM^!&nmkiv)?|pJLbb#l3b|Ht@MDoaTLPwpBxrH3V(-_4$?X5Gq{o7%Cbcn}>s__L9C@Jl)J|(k#c#?2hQ7cIQF5p0b4b@r$Q%9dAZ_ +O?_IXbeWQlt)Wsa@DK{JTK6cat8gVE5hw`PJWj3p;e(dMz1TUHfWPP2N)@%$Uo#D9ikr}BthD=j7HLD +(7UN-|njF;e89PTijY&B>+y?(D{Nw8Jpt&?TK?kBKAfJVo@XaFP>_srD@N{_{vTyE4faEmaMud2$uog +ihWbhSd?Cu{4ZQTOso+K~sCwA-tMpwGCPHIHL!t(ErT^iz_=1 +5{Hz*7&k#na!NNIs0&QOtoeUkUh|e6Ldk*!r-8{Q;b4jXKfXNU)5$pY_6&wFO!cnE)DmGnwMyLq`|N6 +BlW=s@M6TFHYKt0#Lm*=Ev06(UU2*slaWuyIRO4GfW!N}YPWg(45F?K*!)tUneu1|ecM_n6{J%C8vzG +vdlx7`t1~h)%V=2aXP@@|6HrS71QY-O00;m^MMG4;@4Dl`B>(`Ch5!IA0001RX>c!Jc4cm4Z*nhna%^ +mAVlyveZ*FvQX<{#PWn*=6Wpr|3ZgX&Na&#_mdF6fkbK^GB;P3h?u$tN$c_MSi<0N0o7w@h{mSm-AZNxPb+hi$>wb +rNxMW<@P0FfT`GUiA!Sg0?OUhu*Rn6gPc=vV<+mw7?6%H;nlqf9!B5frcUj_$dMHkt-O9H(2k;7Ph2g +#?;Gf5k7VOOzB67HPpt1I=OjQCj9et~gEZj)4YiXZp}n&EM-FZCB|=(zJ1TZbmoayKhfnf#O)m2bmNl +V6_uOa-m3`my)?T2MQKqyNbe9X9KGSzXN%I_?avaduku1Ns&c!;GsnsOHaHn5p7zBe1#hWaqMHyMAAe +$dN7IH3ezLjLwHLD3S$CX#jEh&ryw+T0KB@7U|rK?#~pf_dY(t?2BQU;L}Kz{Q#Wqb7dZ?IbLOo=JQ5 +{;mm!Q=oSk(#0)EsxSUk@MDlO8?Q(MzhgL*mfPoeoo1i&EnBZA~S^LQv9h?)8dWbdfc`50_AJKPjNj6 +WzI2-5|vTp;E_UIf`9%7K8e2XkC(*hxr2YP3vCnuYj+>-s)T7Oz2iV +E4|6%$g%t(V7;09tZ!R1wjk|?I>2f;EBsL<4vB)AWxINUjGHHbQv#@MS(ndw173xJR7DD^w&HEnK0jJ +5eHi&jzXEh;@}Fv3ytsV92UXz2=MVdPQ!b>D#LWM%Rm?vq8A>CcW+O=JBI&#U(Z_nh>ZQ$?Hqph5?TD +2``rKs0$Z#7j|>9C-NBL+a?uydOp;s*S3!0M>;Y&8$xdv5&Pe8Y5kv`6Bp_HJ;J~yeiLflTLB>-E@;n +Wr0APZM3(GZZu7I}X683j4dbnEMsp`=^>JvB^Y$1bK?->2M;&+gSz-=MI=|iJ1E@`{y*KxFtcoc>PAc +#O(%Jm7~KC*ta#D67CaZ}FYC|~sjuoNU$7hqNM$8qDcWDT;j{EO&pAz586a^(t6PRfc;p}q70VvRdIdBxsi+KU$B%rNiJxafNwbiS9 +1wsyakqIbqtMC+!sbz>pj;b?)^}xM~*!k>fp&&XXD}LtHG_f`FwjbnT`OB3jlpRzP`MLkw +%|J*E0`BhG$~*H~2$LKMt<0a5#cD_zW|-MO?*ja`W@;_`}DU_&B+`7{SB$BfxO*{%XX-!32j_gYl=nx +EOpId>B!$2|(g`VpGOceEB%S$2jf){u|E5lWUyPaB@Ang+Kc+WjhccnT=a>feU2$BKR6Kn +nOVSShiF*P|8lLDI^s@RQUBdZrn(y+1Fbc;Odu?w84Zl5P_}4Ez90t3ovhu~U#`!Oq74{SBCi>J1PP7 +BgI;G)(Tek$M-W!NL#Y2*f!<06h^U>SZAjF;K4lz1*o6pv{YHcP7Luaii`1d?UkX8HH!sta(TMY2Lij +dWt@3ilKaSbe*K2{Q2l8%08e +Acn@qPsUiIq7I3Sr%3s#%3IH-3@w4FfhlZu2b19og2<3v&Gu#yKuYXw?_Ju%c>uc#5}+YIb80KjWycw +As>%c1}SIzlrV8f9q^f?@@gN_G?QA()k~;~0P~QV_G?mjOS=(Y=Jg+(C~Lfkp{#!JJ0{YkQF< +uM5=Y5e*8kkjVL;wy?=TyDB6#&2x79*p5W{lF@#bLQ62CS^tB|N0i{_1jtrsk7$#EYFETUaOfhXHgKR +Ppuir6#RLovem3c*j03X%a#;N&lrDzso-Ekan^&)Ea2^9w4s1O(6JlM0Rpw%V2D99;vr8;UJ2EQBjH+ +zRG8f{W#j4<)hJmF>2+<2F!i!%`|aY0r=y^JpP;r(kcQZw)>qLBSRAUL4DO#m8s&@ +w{_6Ch=@v5WS&*YU%O%Y4u?IqX8Ea=b6_@85#Blo!>M!L@NZ_=M4Ut+>1^cz`a@D{+O^tWYci$e(Ey{P$Or;ZM`?{~W;#PQE|=;oFWu{6b!|@Fm9#ckMe%%D*-IHg +V0w~m<577dgauG%win^3Y4bR+~3+3ip!3lJ1(k%*GJFX$NV9}!YkMRH=-JgDjxlB=(vw3dnVh^?aXn6 +5)g#Vuoe6*ze!D#Bg`|f-H!|;<2)*(#1|D3KT?|#r-0m|X7w=W&@_N5~l$bvNu|Gj(b-%PH4J~@5+-S +bd>Zub|?_n$ReJ>u~F@FlBibbU5AsD97I*68|7E_&)5_jP%*X`#L_0V;&#uB{O^Byk0V^r?dXkx +%~zE>IHkMnjp0N;Tdh8iTmSZf5A#Umm&7ADp~pOgIrk?S|L%ORi2S1uDnQ4rVsBKk7XA|fi9^NPjCysw>zkH`ce=UCX?}YlFoemg(s~``GBI| ++O0bZF+_wLadyNE55{RKLBcJp6>0PJ%&IpQ8#=+WQxpWf)`5gbpShvVr}aXftrj;D{~NF4Qa9I5$19I +YjOdZR~i^q-5R|8zW`hUk+qeFk5u4o}8(KWnzM0xzVqkW0~eNW&OnP!Rw9lqUCbcf1J-aH#dMEjenA0 +e*}w7l<3+vSTHDJPQ)Z7AvgbK+u7Ws<9LCctVdltfC_-Hn0Ql$ME-P`1y7;yB%ClZ!jpU!ZtRD{q2~h +ZQ&u8sGk$?ZPo^5QN+)8;%r$a;n{C3%ktY}v}}tU9irsn_BEXvA*;Ok_NXrDFyfr|ZbS2uZFbZrm| +FMCw-9gb*jh?)tP!p+SpAZiRGV!K{dE}A23l@t^=6SDm4#w^j-y9n6sPQCRmC3! +INB@w3g+Vqili>pi%AVf#HA*cMs22R2a|34EQd3~EYH@I7Yp@5_ZvRdj#%V4WA3$lyWf`|Zn8OhFHSh +CrNzdejBMc}zXzD#8JwA@JUIOm?Ud5Y$eozf4^-DqPf0h0v;4fCdV03Yk7ii*~0@HjPkjMhhfd2ne!t-4rb96A6u6tFmxgDUDlJWY8 +xae7{Y6Cs`r|NH7wWnxqYWSmr%fDD-(-{9+mF@Oc`iH4vYCU+gpk-S#X@==XDKv&sqvAegU-$K`9ePBE($6RyQpB~o~vSFYfH^I+kLpJlM>Q +`gryXHldXJbn-FI<~{C*I$QHfG8LixP>;CfI`o1ebjOE{hsb$uo3sS+hd$5j02D?UwFNyv|K%=s$&fd +ZpO!$B_0&fJcXiBOx;h?rGDXxvskFuG6u4GYX+5N=`@&yj>85wYhv4uGR;hPH!E#)DblXu +o0Qv5MY>ssU2r5j$_6Q4jlP&>?n_X>3&@W^afd>Lw!tdoWUiKA6hE~AGUZu5_nzmksRb0kVi15yy2I) +upeMq9fim22t&5h9lTc>j!e(Nuy7G=$2I|*aDS=EkqR~|fIg2hsmEyxE>?mx!VkLa$XENZ2eRoO)X15 +lPjks6@>A+xl$3l}KHb#}m(s~P|;%m+g#%M5T^P=N+f_i#E%ECZFZukk@NlqHE}4Vh**# +L)nzGSevKsEdjF@vh6eTVbR(x9T3;A+dDI`QRaq7A9)g66{@gAF>*)5rXLu8Jv}L0&g_ +tE{=d*4dq!G1ox?8zQSYo>Ytv1}_^m2+?48y`^be>ts=(fbit7ykagnT@CZ7VK)=GQ~}2#72`imD3De +`aw}QHcxh$}Vf#AuXB8n6h>HC=i@$>9;za8frkP4M+km8i6;i29^&SeAg=87A48o#b0^-O37ZFbbF)a +p@jkbYK@CM$<4LG@1?~gGS%wRH9H8?K1%#HY=;2rL@(s$1`xA&j?x{0GOLg<{h6;eFk%zN8Kk~9nNCY +4H6CYZq&?+j>EO~Z?1(pPK)Cc5fL1r2q^9A@WG-XGJ%fEO8LBphsm#Gc$!Bo*qAHA1-9SU{s_HVX+`(1ROON8OmM{lWtY9TTY~@^%OP${g2-(8KbOI4FoWNp%>QD+8kX`w2WXxVpKnJ7`U%kZz}~a&N0nZT5ZjsA`4D;uHXB%OUU8DDU^(_b +mZV;l?6CO>}E`du#5cux_x75{w7gNZ6_R-th8P;^vV(XQX+BJf1@3qORO;B +ZnZ=q2R+be&_u+=`oyMNas!Z% +wKCSg&8G_bCgv}Fk{BhGDWH>`?Z;4$#C#t$YF8WXJ1?(D1v&R9pXAY^DUnwIDmf$|3w>^uC+|Y#u0NA +3MX)|cxY+imu3Bl*0%W(%xZ$1-$Ty(`BMb8A?H==Wg{d8W_i?m*Olsg1|-_RNojGWQPvVUaSD6XT7I* +9{M67!?54jOqT!Sb~g*zA0^94dO(vBD=lPZHRDI<+x69Jat+=BK4}szYP&Vv6v*IQq(C(;y>1kB`#8Ycy%s+H20e8U +ZHhTXli^RJnRZs;k&o43quV|W;XraNBNf)nDF=ZhL$8Z_8jEyrhP+?FMg~(D#LgdcTyo|HQ?fdnfCcL +wfl6j9S&)^5_CUrTN@z*JhOrv;MK_ywDcZPf?lrR|EXmTNGhK +tL>pCpgcji4~D#A*-EKLXvS@KGJK;KaeF9!sdT`5qO;7qdFh=XF`1JTNkw_5nLRf#!b$QgNZ-&Zv@sK +c@a+JJ>uEeqaXz;3ZHX2TdxXBcdD;ISd0qb^)wueMVkD~2#)P-bE{$T@Qo%NGhP(xpQn2Uv8MU@44~F +^N2Z8$a*YVTB;SN8X5(3yLB_l{_1$VI;$>ewvr?lZ2F_$@L*-hgQP|i@0y3%w`pD8>S>5vCMZFtTz$; +=$W<+{wU>0{aaK)%O1U?4M}lFEbnGEtU{Y^(m>0!)WV|C2GmHiVZG^do=D$dvnS5!_Y68o;+-BCldxV +gq@$o)HYL89!IHVo;odGICD|&PG!|Tq_uO@FwQ04D&}4$W)-E$$*v()3_OLXw(RivBGC^AQu**5#7ay67of +-#|p?hKemMb3h-GJn9v0Nrbzqp);0zy+cbe;nD(Il>2GRf*?ZsSg8gC7YaRXJ}`HYLQE0s$@pn2S7G% +}Yv}SJBWs_=1^KynFNJ^h6v}-RiO`h6rMu+^$(kimYV7BbSd(+oA-R1+NiNS+E$@FX68kkzY +nsA3>Lw22YkZ*FTc|jmjtSdx +&WbYc>1js*+W@H1cz}_Nn6qU)}L)W&iA +5q7q+Vm*^;&dC?c0J4Qt?KhW$e0z_v*8XBKX(n*Q|PP<(?GHLjK0Y& +rAuoubMEgiyC8FCA{`pHzzB|A+~qEF{?xhD!oDO9HGyVp?Mw^UO}w-!w(AoSQSY*ET)_xDJ@Nirqs4P +X}ix@P0$+tONcw)2RvZL4ll$*>)5QrO4oedlj=yxwxlisNwXKXc!6eajx|8km^ou3^$1AmCorRJ&z8S +CY1({oHk7?TpLY61?FtoMY)0)zXUn$IAOK5pT(%rzBtoaPF|Cn*y~bqsvSP)Ccd~%FGvs(g9`s=jn@81q9`ewsq+|iX&>@QF%A908Sj;Qi1E85b8+!#6>?bYprWMna+y +c}Fz~8sG<1muAJeHrI)2+zz3NVs=SO8v>R_T-PvQ1a8Jqn2m$MqgukN}~X10YqL#}2(@DqY?j_Sh-_h +L?(x>*y}Yc#p^o<_PV;m}fFG)Q~?wR(3>_8nto?EL+;FWgTRzSIP!?z;B|&xwHT7rq{(f`Vlwew}oKK +Tj59twIb5_Lw%ciSERu9AsVF)>xYv-D5;$=9oXM(7}zQ(s#CXP#9fkN=@kU-LQB)mH~?9mv=oeRhN9B +fznqAGdO}PSNnG7MgdJdm8mA@*62>?@c4km2M*iJ1#j1lC^uTwqNxsHmWR%KTlwUP?KSrpXT2^@@Eu?4w7?6c(1(VVS4 +o-9!3LT3Y60j{P|-LR*@D~PQ3h+Zl@_-3t|XjwadVV7U^XE4!EubM+lwjj*eH>~ONikKUa!o8$B^1Cp +N=uHSm%NvKb3b*E`RGWVbd0Pit&x-Oj~t%9Wo)_@*K=DpAOHxF??xKQDMCWQsGvr%YhU%VJQs4nQW(e +wlZ_Awv7Bpbw1fB`f&3v)o(S7I~&Fx3&wBsqcRU3m5M#;e*Y)+3T1acrdU|upavyOU#MB0A(u64JV_8 +4Ldc$PtHhy{gLaAY5`O-|^-BG{%sj(GO}w}aZ#Lsnnl1NvKC^PhLMzV{X%WPJRby2#2YFS-%OC4ybdA +!aPA}FKNWU08&rC4ih?eW*ezlk0Y;KmL&|Fq!fk__jmU%KWTPFh~nOdAX94V|`S_bHBaxpp6VrGouI* +cVKX^j{O;J;uR%$Q@SMf#V=+=L&+Nt>HcW$-s*7aESj`WYv2_GH~|hpG-N{2N~Tb5VHA?>DKirfS^FFS2_d27dibB&R)VWdM +Dnxi_gQbt_b1E#cHpl1eZiNypNwHwCmQ$~cHXk{HhC*#yoiClWHa+nuOH#Ob6FRG8mBtI5=dTjZ_}*W +gJYv8SqBSS%72aXWgQ!FL4_3@-Q1E9$_|{ka?X8*90&K7}ft`ZfuHO!?`&{e+unm|vmtneIr*z<8sw} +eYY^2#$N1KpizG!o)DbtO%V9`;K7xb!$$hQ_E)4{bBq$DGAEjhXy;L)vEW1>t*;i0c*HVQ#aA!inJ-) +U|Vgf+e@#kS+z{DUczlkvrrFTEec1=7H?o6SA(i5#donocCz3+GN_av^tCdePuIx4kKom8wf(voy~=3 +?rcFr~V>C*2zehTd{&2kJj*2I^_F%40wN6Y?#T7r1Bk2P0nm`3;aMqywOLXi}VeCtV68LPSK>ySm+D-X7d@%Z{5i_J!@Iq&VFN^Wcad!I#97JMbkfwVZrEw8ge_2q*i0uHwM?Rh)i#p>o_ +_@twO~eG(@n)I%x_7myPtW6)x=tY3ZRDQZJOTyMO1PA5eMK6D+octbg!sEPlGsWf~caU`#`*hS=|)bJ{ZO(J$wy? +f$-zWaeA<4=CL*L`zIvY=_reyX>Ee(Y;?yF(FgU8tkLJ)W>$8aOahu;%e%Co5B4~R{%on&G@MhXL;xiX`m`N(S)TCzKYOAT@e`lw)c}d?`UJ~CR@U#=bc31!R_-c5)sPWB{N58yMp{ +;=_&u*PAq(0Y^=f@{cA%U|<1{!TZ`y5j_=Zx%5hi3WMCtVJqd*02u`t%Ca!8xaMz6r9s9R7K8zs29&Y +7td#R(ET?x3mtS*I%OGFFP90sG_+7qiY&S>_qA!5iq&{VX3|=`0C{3yHoNd(cL<#^>_`%48ke0Ha +5|_I+XAU&BZrG?lb#pH2kK3rbINC2!ZNHRbEP^$dVfrQx2B7cBa4D%iz}IJ=4W7m-D~Ui6p_YOE(gy6 +{0?aWiBvJjuZ@<-dk^c6ZcJb9MDO?3YkXl`mLpO3%BA~(PMp}5q{8gS9=GC-a)T^KU>Of1mxWDC!4wX +99enp2P!311)dquNZ{@9Cmf+bS1<4DjV`}9el%4Mukm*Q}juzTu%at`$ +JcY@?Ge-jm&BQU4ge=tE=A32-XoFd*WyKfbrWC+|`!jn|oq;&gm$}BY}uys}a+ZNx8-t +3SFpBeYkLXr6=LW*7#ex>_6&QN~ylbsX|L6xR?4E9!AA)FYRg}W~+jAACn-rD~U;h?vc8xMB@+9ILu~ +=3AGgJFPGiS1!?k`UYE}sO8kVikE2AY4=CYxBi%IMS~M9)Mol(gIpw3i*>_Y4X4i0ZJM(Wx|NZm$c63 +qOKT60^;a%12dU8EdqZz>6*}CI4XY9yP+_pG!Wo9<+kG*#by#l!seK< +ZXTc+HlbxUyA2H?$4RSRMH%tG%&u{&=vN22&8Q&Pt{>4Cov0-wva3Q&ATgIGVd@M<`Z*j-U#G=peY$i8 +8ao!5KEDEKie)KVb)O*xQDu;U&dX@J>QmcQW;X6qb8T?PQuebE-K>Qr@(mGPGY&;259T87zz82aOKaUDTcT}Z4mT$>gI{Xn+*lV)y38OR>v4-^6e$-HZw`_uIqJTh70Rd@L{%A +LG%Zn6Ki!>T-;Tejpi*Zhh2dsRW-5 +68Ay_3-vydig~n^G`sYm5hLXrjqQb!Q5Jk1XcdcUOuEj_c2e=;%qG +;v(*4IbAn@hghx!iDvpvgS)G97($lzS7dxS=;Yluc7~vHMMTqY_$80NdSFT62Zi}er?)vG-w{jxYHI& +lFC@B|D)oAA9k7)Gs>-qOOYD3|UB6nSeswN@IU?#zm|_wJ0GKu2Snp@S-JM+cGF|3w6T9S#HvzqE7z| +r=bsZmfbAAYw(UN5#bqt>pq_iOa8z(0nzt{27F(pP8GDizoO6s3- +@MpBfk6gwDR9ke$r>z>xK$LzImmht^0ZpZQW*V#BFB!y{1p1reu)ZrFbs2HBUV`kzF)D4y)n=20SVv# +6(+rFd}A6o)lA%-48HTyllyq0?Q7GCN*FKZLG?M-`Sd;Pw(#@%?`R_$KDZmoN7 +ytXRf+upX;!q*Mks^am-JjLLIPK%zM{{m1;0|XQR000O8MnywZ%TmZcSqK0Cxf=igBme*aaA|NaUv_0 +~WN&gWb#iQMX<{=kV{dMBa%o~Ob8lm7b1rastr=@?+eY#`f5n19P|1+!w&xTFA}U(sfd+?5jg!+{Q3U +jg99cvtF3Vk75sLozo7o4seEFO<{9uv0^Pbsxte>#;#hRre%gei%HEO^9C#?iw7zQ_oT(YCcngS4_R6 +H*wt7>td%UqPaV6v$yQ7g6=HQWCD;$K_Z{gi`b`&t~?DOZQQ44S$q^4&io=F_vN(%@aK?C+0k!Al086 +qLk+iM`!et{5+~Kz}?#Qi4IrcStBl8vCY9l@=*i=M@9w3pGP&6)y^Qecp=nqhz96Lb+sMB_Szs0od)W +B)HpK;$QP9Km&l)D?e5R906@Wd^+g~Z{HxrnwNJ#;#zIl9=K|1kP&;M7%!v<`beTE#0iaV894Ab2-ck +~Zg0t;=LCsvzS7cN@%ZvGilW=wWeYe7Hv)TRG_Bz%6tI_Xw^L}(4s&>gNYUeSXg=0E33bVj7zOAtR&g +m$qRym_64hE%lL&$+VkOEG#{pwxDU6UBQgK9EXOJ-^SR-54Xz9>DNXV{ebKr_h4?r9-+>p*$Gz8H~i2 +#ZMMxupL1g^9mXl+q6+MmcZ6D63iB^iyCh!!eyZ-WVVMjlR!90Or3^9+OM041G`5-2yVZygGJHQJla)f7#728#{e;#by7su4JK}NYxunZsbcM5%r3CrVE}!MV^*EjL6iZRmUUqicHVq$D1ZNh-d!JrRN+HPJ)2X +COoN)(`0KO`rnF>JS~_Bvj)-R4;8v;flw*LjZquYbQ(Ya-&mEKR@F-%yrF5=uyvdHG +JqFeK(X2vmL6N67(bMge?Ep;GLPUVBy7qV55mcwM4Vr4duJiXwx9_L2_lB~)}O%k=!-AQ*Uu9ns4|FV +WMz(G!}ua1{f?)g?*_l^oBaHlt0@+(neAOkQVUpIYWb!D16LSwWib(IZ8H>EGu2h_Tn0D2}2gvY331n +(7KY3`24Ur7DTeaHXooqmJTaB9&1tE}^{qCi?cf=+h;Y!8+eX2X!o-XxpxB$?GUCSMBS_VrFZp|JFR0 +5E#!ADNxSPKpvtX-0EfRuqil|A3-##gS;^dmS_~Y14Aj!p!{@mbN!-SUFq*_w=hPmgeazwuW@HYfEI( +<2(oZiOs&_7y@gYU@97#v#QVrgen$z|P$2sMHcJi)Q+N@f=Nw4IYYBABCQgGaX3qldu?>5RWgrNGw7{ +ci@=GV%qObqb;L+)%-yd03U>aU4%-q^4%(K2OI`&(#`<%P%Ws*YFQqnIO?D4GUWv-HBA)(l>*affeB> +r4{Jkguwt>wo3DABQ)2y5;QGhk@JY7zD~!)1rsR8TJlTCOz3Wz-5VWbMgV!YLuGw2+=m&L;G{!V|qKa +(O_N5#F~7*-0{ucJ3!VgGm0y~(XPAAJ*Z=Sjj +;cc$tmQ+l+?BdQR_VG)J1mwMb|ijF#0u$hPyBe+bk#i3p!{4hs=%ri~ +E?CVlBi%qgUgiZVN*selOQ*gTvaJOZ3MgqG#k6&k{oW`Y{DLk8)4U+vBLtR|B_~~se1267%uIeTCe%R +J&YKf*-VusQZ+<92t4`V4lV-4BZW(-cCCB9fQ#MpXji*uIW}G);UUGx?ZE%hn}x4AhJ|j-iXj#I`Ga51@%kV)4X_(U+%&~9z;`Q3$_%Xj6yePvlLaS${?O^qN@vEBP+CrDJC_4&rkkaD_6AZmk-)l7 +c8pq?M0`8`2HiS$xY*9e2jL}JfP8k>tHUnIJV@T8(KgYC|y-!m6X=H3g*9f6m!>vyKbXq2EiMUOHrpI +JE=74gV#O$Q{#o!kJxCLF4G{T_GR*e}LQ7Q0(~QBbEjU^*teouIsZJn7+t(xa~{hn)u&-fS@H&259@Z +YkXG>Ej!x)tJk080}(6x;E9dy?Kd_o^Rf1Xi2n)Ad}rWF;`R6xpu8B&6{C7XZuwjQ2LPDDbPPB#)jT} +&{1sfAiAZty`tI2gLGX}f4OXq38^SI-+bMz9`Nv>g$J+~7o8b3l52Im%BQEb49(MyZHrdMWv?4|a#AZ +me0tZ5gGHhl(M=7lmqO{iema+!VU*)*fFr%O2;;C{3y^sMIONdol5IBZ+i_)Z(ycm?Hin01E!9K@67)xsHlO0`iSYnW)H_--(#4HITiY5x^o*8vF_c28I1pb^n@A=d2wI=e&goPbFnk1Z +uh3Z^x)Ql(boX1ozCL!gbWC|`73Tu&HzGBS+RCNx6@q%jC0Iy!z+&u&d1|H+`9wui^1p?q$g6F1XnKe +t>%**JtKF{6^W4`GoZo$08mQ<1QY-O00;m^MMG2o00002000000000u0001RX>c!Jc4cm4Z*nhna%^m +AVlyveZ*FvQX<{#5b7f<7a%FUKVQzD9Z*p`mUtei%X>?y-E^v7R08mQ<1QY-O00;m^MMG3B&n->v5C8 +z+L;wId0001RX>c!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#5b7f<7a%FUKVQzD9Z*p`mVrgzMn8E^ +v9p8*6XkNb)4-5Cv;+_)lO3&A$e1ShVr-uudF-#hs&2R4?FTrsySmY626xxHt +E#JC&1SQ)+}R=7dz;vyBo1jvtmw^$|00j9ZFfUV^0M=wZymeVj(A(Lg&&daxgjy3+kzjF=|&;h2Hw75 +P%94TGBDlH_kyTPmODxwJ<}mO8cym*>sOtrLFAm9ut|KJwy#P(%zO(m0CLn9a{M~jRfi{{ZFl~o5$6 +=R@ya0qZBN9+E^xO`IVFH9ZFLpL$O_{P_%79a44bSXr?L|AXej{<~hYlg{hww|IL +Ew+(`EP;!xQj^3YLnAm|KcP3bD1eg{`mqw|NXLt-(8nR|KfOa8tmw~bzK+)-jP3_Z&>fhO5_R=fvCFmcSu)^@;KTR1pPBf)6 +4JB%DK+feX57%J=+-E7#s7%dw{fz5oU13;D&Z%`J|?bv&pbK%s01TzrxABdF>ledG>V{h?)%2f2@wPT +074gn7W^6NN)#t<9X0C3SjrxO_Hkb-f6iVZp>E+(X8?#sdj4ICvVwsGJBYwisj4@ +}57|A$%;wjlYf=RnM%n&3Mdo5fAy0T`?18XSn}#eKo`A`qL4f`j5`qn&hxI|xX0J#IjXk-=4zR0~iH7 +M2jc1OuDJYfj~EBFC*xjM-@UFj(khY>@e4_H8`Whom_$;Jeu&598(S?0!iAVlkL5zmwUB45r`7&*SN^ +L-b$f3*9itY{AHl@8*-S4(;QqHn|^;r(ekp;7(^tG8x~Emq2(qV@wlrW8FZ4cltuRh0npwcrspo=i@d +SFQ-U*G+U4XnGY7rv35ThEXe$RF`pSah%p4x)A4k)08aXyK3#T!Gqe%?8+;Jsb}*SBJ4SDC51K4cR-( +=3-xuSrw@Y$6n+$bmywO3z!OcYH>_91+3;toP +)}H62zuzJ%eq)we`QpoVqq9@-;dt(&_#N86(^VwCVg)Xi0iQj4gY??6$lW-CG@r=5g*kSWOc@Oh)$Mk +D(|R%=0W`E<1td%kAziUqwqb8mV|2r}FrxcboBZvXG>2vYvEBT__%jSLX6SklctNWo7T+0bP> +ir_R&qV-DrrJ?m8n4fGcQjwSVpXCi=lDTMvMu*mr1aZ~84zza!?!Zs4!(sXhq-hO1BMy)$@N}bf|vwM3F7xJ|AC&) +=8xd*ODgE!$&LL;j5uI55w&)%ZLz|p--l8wA}_2O;}pmyrXqbOSQ4Ezji6+qD1~FLsY7wHXCziekR;U6aYb>0jq2z5eQiXi(jGi6)mjU$DCDylO6sETIBIOpJi2bA?PT|P)I{2`?P^&HH0Y&= +>>yMqQ>(I9ZW>tzrp0?=2B`jKFg@z0{Er347hfr%R6TQI)1!)H@;lqUEW)2&0Mo=ee(Sh;FLVRJq{dtRrxFojmz20>uHsZDorWUd`r(lg{G8xE1u&izPf +T0+7twv2~dMkapJwt!@CE#`?9Z)>AuP%c?!RqLHYZCxvb8RPlT-Z*2=BT?qV1ehyY0W9=EyW+3|zVwq)vDi$Ql!avgHCNE +cZ1U>5Q1>KxGKJuw>*#-Zl9(&D?2>b)=>=w6aEFoq}Vv55frllAx-5rCNK1_ZxDL@%YPo2ONd4N+WS3zBy@)mjF$y>yFQ?w+-+aVB1TPYt^YMYbwJ?af%ZIV+@Wm +?TGL9N4W{7HWWn+bLrKHAWLCwu5b}i=T$tFcB3!D5Do&{1zn(+A!M7u4BK7bUoKs8n45 +c!NK?u4{UxQGR_sxi*&(RhYTLv>K)GNvP|+)+f$n@}Nme5e`toYEkd`*ZBmz)AOQO8F*)YO<}$I62;# +*Oc;nU!KUL4B}|#L6=Prnm@~ZA{!i&MJ8NVtkk8Bc!J`4<$`3S-r)m7Zx3l=3T4)xqPI%3?K?k3! +sPY2i+S!GCdSYQynPq~s%E(*cO*5S|M_Ad~C)2$P*C`+~%`5NtDXw^`znr= +<04$6~NGm2ovxm{UumaKnL4az6Ca!G22r|#m`#9t%7x)om<%sKY&a)xrz|DY%Qm_UD}72o3pKWI++=t +b=GmLt}Qs+_px7R}Rrw>)B3<6Clm@q>mHWDc3GnrW@%2a6`0nAk2&E&FAAMJ2{l$<-;W86*VMz_p+}k +m`jnU(ySCHl4Uo8OkCQhe&M66-Fvgv$hmpm6}fTVmGQ1sDfu1 +1$m9mjsa?MA4ClHke@JsT7n2-@7Of~cW2AhBuuK7h00cr9Q^XuXD62xq>az2*jJfLa?62RI(I62r$^Uuad1>W~)i-&ORoPKq#-Vi`0Hl4)gWTl*4?jltVec&5;>Q=2JoH$Z|~0h(~FaNP{@Zx#l2BZW! +f`H~&u3a*cR+oNn{e=+l3sAif!vZ4&?gxA>GT66vda<&eRppCyx>bgH68T^>|Av5~%t6qOSkwV`r{Fy +XH>RBm~tz*0kbdQ2h3R~49a?o(_mAQevI3T-NibRJp}zfY*TbTl#t5A=6|8Ri_KYrCuTd|Rf_A|}hws=-4ocSIlAd-^xll{;zIMhlAf9djoL$^Oi52T}4z7HQm+AVA*Ft&@*4;W!x= +yx&m4p!~??7>nblF9j4nLejo^NisS*eHS;*^Y<0xX}h)z2Qpa&4Xk4LuXz;YOqU&B7Nk2Umr65}Nhn= +Ypel=&oT`?YlhtE?$i9*&vJ&jRNjV;F;g_73=>Jt?KcJVdVYB&-w(B%e_CG1}$CP>unQU{(~>Rai +G~5iPnqDj5v*+R#A*%Oc5&h${HFCdu8V_bK$J2`#wGvgdAM9a3T7`_$c(`9+RMzL-8vu +GU=5urRw8*8lm1$Pv`KIZ9wL8OzrF8Q)_$xs+7R%=IKW#*l7JC~~>mN#0VZ`&1fO{S~RmRc4VVMo;CP +x?22-6pnK|dQ-19=WV*LF8Ue<3|4lI0tiH5J;S{{4ilU-J4{|^WU@{;#I_?FDHq7biC%TMV{cBeV?O^d +R}XR2z9RQjf_n{r@3p7OQc{c?0ASxYpxdau2!Ua!~h^)lhbGV3o;L6EK%JilRf1KIv*<{C73rU9OSgB +HCER%`^ELUX^+dIqhhymdJ-L~9>f&x@_t{HfTCl&_KnrJ=roBpVNMC*Gk?9zPI3B>nCgq0iLC`}Gk%y +ZeC86NJLd40crHgR=H}h4wr1HQO<|CZ9il&Xm_28!VmN`^>b5A*QCdi<{btT6}Y0uHPB-zcF#(}ts~QRU|<3Kq6~ZlMY@v%yetEp;dqPN?w` +12X%MK}S06t^#7SKb_-6D5X0xZH^GxbwC*_;30R+%C7T6aBfT=h2B76JB0s5B(fWaEwlcQhCg8hO!^c +wDCWn+#&pJWp3L2Ar(*p;V!|C!{I(9eCLl+J0oy~egyA@|vMHb@>Q-_iDMd~&tJFMMGd2N2A>(6bT*{?5e2_pV9)htv +vy79@&Y6#3zolamd;AoqMclJ>z?UCY~_C=ZNJ!elNv>0ey*VE8|Vp|j#FR!pW9p3PCdEe{!WrE9}m9s +e~3D|{)r8tBIA^x|^$Rl8dmw}Z2*b4+-zTJKcLAuW!gob?X#>7QN+B)}JZZVvG&M;TS~(QXIu_q4Z~& +nDmdXT1vrRU3S+;&u%2Dn+bgj9%~as2ZU}D?reXkCJwyQgNQVW^CJ4SyY$1DE@%R!zAe^w|N*Md0I +<1?0t1vI(S=FDf*Gc<(DPB_;xx(*hk0V6JkME=r+PnDfT}08mQ<1QY-O00;m^MMG4sDyO_z5dZ*UHUI +!Q0001RX>c!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#5b7f<7a%FUKVQzD9Z*p`mY;Sj8Y-M(3Y%Xwl)f +;VZ+qn6=e+AFQq4LcY(w7~I0NIeH>0Pk4DdKd+&?^L5rej@XQAbK~y}cM)H7ZxuO0&g@H>$zOYkb~lbDIj-b}Nc1FWUv +|E;cJ&DlvzxS3)mE=_whVX`^20wpvKUNvr`TATH!w<37~_M%EfOS<6b^sI{sZf-Q1g<;nmNMFl$-R;= +}+E!7B7ljU05M!;O42`FM+UUCi**20jJlCcGKG2ues%2XW3Aout!p0$Uly +U6I^+KhiF$k(yvlOINKR@$td9$sR^>0O^Orv$#4e0L4DF0+_**!L<%^UyLsCB(8fZWm2=(R|_yoLLI_ +Ua4-+)PEx-YF|e(QHSf2f#*Pn^8AyDUDE{YlFN88NetIObT#g|w<)Q?7GkD3) +&abX#+10r?0f1?)*EJxQj0F75$B*#m#rZE6Zw1b~cy)1hdVNl#zg0>4(_bgQRrGfL_T|ou@f0Dxyu3b +r{dzPRjYbQ#6j{E^5TgvK&*s}k*@XUY3~*s`OdF#h@b@ppovHxoe!^7bMv-iRQ7?(I`R}0of|yy5h5- +}eZ|l}JOpt;vR|@n7nKa*$BIL3xl}V$GjcQs`4MdPK)H6bWIfOrhNw;UOPRml~veD+HTFSNrS%w6Zst +PG4I1zUWvT-m^=26quB`}G99bixi%8l}MeuC%rysA+DbzYEj04lm2Vyc6kZShY98iBaFjYl-)f%t&_! +>Jg%j$oa*Ra>^mJ6X2MlHQS-D`DkY32hdh*EID+B+bX8PwWk8rrQl?I2bhN@qszOFb`-)TGwE;SHRVu +hLlZ`pKwtJq2K76VDK`>nS(0RE&C3|>E=2zqXFK&9~vMy{lZ2_Rgc);)b3-lP +&JE^zX9DW~ATBoew08w+$DMZ#iBl}=o!LY&hLdJZ5L(Vf;27+Y|p5|G;k|wJ=%)AEhtR3Mo4lKA2MYB +5Nf$x+d?h^2q9X+mLsOJ@gA^83N`qgvK&Ooym%Z|Z>6Z09?WYQS9O-kF`&qM5G`oK-RX&X5&)hR;m#X +uX~LkhIuN)}e3L%?{L&StOAjR7mhR7Msh_agdMG2zcq{ +OYu4zBOt&bP>)j7z1w&lYafAdn%TctuYnH(FO+jB;HV3Lo719`4V`T+#|{S3N?K%!^nb;#gBF@eiVtCPKIU<6M}re8F-_!wkj}DO~~;N?3|S!OijG!S>9 +h#V$}OnmlLJpJ=$!SXQLu1#Mq&NsVI40djAI|69p#qm4;Xgar}?AAU9p=hHDW@v~tXK5QIZt92LU0%GsKEFyj|IKSAF6cTM4|?ujRO4LsJ1~GwPy-C6U-rd;D+Ud5TLN+Dq +R&hn4Ta<6nX*1W}jcWoH=D?@15(K%CWOZ +#r$TFECsHh6A+`A66(9G#QkG-b_@9-T_{rhaoa2(Js(FF!!x|aKnR2KEUR=z`kc`JQ)m9b-7GI*$_ef +^G@+FO*G)mp+alT#X0y%8=nciO4h|9kQ=w)p_yh5#(SZR)&|x}HIXMwW$AJ#uP9q=wXiC-*?`ysk9?p +R6B!D+qyx%CN8IC@phoC^pUAGOp{XNcOunDjEl8cLHds^Hs&I|+wb+_+{XvgE8zz&^ud^wvnvT3bzee +7>K=EMTpHL&4?lgQJ$B%JhhFf(Bk`rH)tgPbrIShZRw@Gs-C_)rN-A2EZ%<|_dcS;nNDh>yKjqdrJF|M{6SK%h2Xr8h>mb@F&Jp};|7$dRa_kS?*a(SX+ +rm`i{^d6`r5%I_Q4#GW|%RtuvsSAnU;vdAge*;?iBq86TrUbNquC4NhW7-Wavn;A|*7W7zunFn7?zIM +}P6b*8hnhhwPJ*@UjqbAYG-tJ5XVt?-F79YwUzkz}wPDB6KOTI72upyJ|Y<-`Wj7L0L93yeqE4sA@Ir +6RCn72i_V4^uc>m+&*m)+F4(;_DB8)%6#z3c6%%|F5Up+ra@^Lz_Kgd0^bm$^pGXTlrn<`DSOnw>1X+PQCPAXuAk!QaHZJs +Uz=7D1>%O{Mc+5V&fd50FF`aNnWE3D3Ml{-IS-T^}p7V!9QZX$}v_h +rx|1}&MXJJZ3;5=Ss+9zb{rmVzo8>4W5cD<(4Tyeiy~vtuN@S^1-tj%rRU=yVFtYdHJSRRe1+HtPpT& +ie{nNz+y!u5vpKcVdSRltbNVh~s`g+3|@*<3O#Ige_R8=#){e>syPM;VOIu{Z^GSMLv*HDlVXUQgShM +ur}%;i0ekXBdD%L*)Qu!WU(Wd3ftXoE2l!=^--cKmq`6lmjR2E#(c*jv}C`%dT<6vLvC$b)bKb*q-#Ev`UFgSNv7=TPIc*+NSGv0; +L0^4gak3|heK~BU^qKtjeCl8AtDA!y;)j{jWxT({XMATQO4;b8pu1PmgOU7nCo?t(88P*^h;;btUmQX +;-MY6Zl=x5#Q%oKm_lca|juqKBieHu6HsePpe>6j%ba$e6TF#jol9w^d0QV$ +TglTV;bl#h@d^!D+9i|+pz^(h&Sm?lLBDi4#Bt}89+Xwp~W>|=#oOYP6*5ujo3Xpu;Z$DaZph`5T{*( +#|J!sj!*-YC3u0S4!8XHXEO+cjOHpguQ7y5Q@*igSbkAeTT@gSv`>J&Vj +2UbjlsVx^(r0j0px;N#9|FsP2HvP4VWLN3WYsUL>sk%LL>Z9Ef8u8!UF>w8s3)a5AFwLbg{pl3xD?1kC?FTIX)vL4P0?5sT|)kQ+wR);p(VfI-OKd!BK{D)99pyZ6muI8VYz7qV;;MfAKZU>Y}Qxw7jW$4?lihWB4y!>TwM(!Ddeo +h!ay;!eM+c0GqG3hV~)gDUPg2Bp?py{Qx->!0gISG2db@rZS?2kTeGy?O%5gn97pO%N#mTXo9upCjcw&emIT#0TCrf|z +iR{?OP+zc`qG9t_z_Gyu8f52`JZE(@Xf!pEY2gVg0i*urTJyKt|5EjS6-<)|c#3AxikFT=LWQLo +8Cf*??9u%&rX0xsblsBi^34pdDZa7`J2QSRb*hY7bH0L%^EaaTQUVeQHs57e*a*XPssQCGyf +g6|Qb%pU`*t>4b!|X2u_c919`hG>0TMDUuqv#A&%poLEta68O_=r~vslR|U( +gTu1Umz?~xq9FL2R%g=t%w76r8Zd@T=Cr><9)46?qCmctUjxN6c)3Jc$3|enl1qf<`WW8%8jwgy9I^m +HaThTY5vhF>u!!5q;KKg$1U%@W~(7?w>eFeJjjE;~(er(!27w&5lF$bR9vJ>}OgrSy>{m@BU=bzVKQI4In&_H}s! +8K7(0#h^%rtGhmkbMvf{|oLNRAK;&h0pctS@!Pg^7``Z@^$w2^Q+m#<=Yvk+rK!;hxm2(WPB`=qp5h} +Bus-(aq#I>9Qi>2bobZ|K8^-cKl~&fe&U9o!tlR+4MxV2HKonk3TuTb%Vj1@td+rC;~$s|%C8r=0JQ; +t3YrMq&9Qrr%)|7N;fS--!4*JdvbFqu$`52?dztak?fc2KM&T7aQnrKwvxGHApO2oKutW5tW=fz!w7iuhnYxohDOWmqKzN_Irz9|?-#$)AIJ=rPI +q`S_1jLwpYSoPt9kk8KTt~p1QY-O00;m^MMG2o00002000000000e0001RX>c!Jc4cm4Z*nhna%^mAV +lyvrVPk7yXJvCQUtei%X>?y-E^v7R08mQ<1QY-O00;m^MMG5IX^-9}ApihshX4R00001RX>c!Jc4cm4 +Z*nhna%^mAVlyvrVPk7yXJvCQb7^=kaCyZ&`*YhilfUb)z$w$Ilq$T$PJ4Hmx>Lt-8r|pD$xhQ=z6?! +?kj0uJRX%L1-+cf3?E?V8r(`*I=gCAQu)A0+b{C5WfoI|6aB+Wc<+zIr}5Q?^N&{oASQ=rSHFw%_u}yEck#FJ*}IWA{_ +SFNe0eF(CqQg`dT}y7hSc%d(aFbmB +OvvDe07F&-=9y!p}07lT#b)Do*YiZ#mC9T`Q{42bO%MXVqCs-Iz +JNyWBm>`$p==|dM$@rHKSK`C@$-84ne0vPs9lkv|=E9(AM<<8l(~)?0czXEDF=3qp9jqY&GLPcZhht2 +{G7sV3(bf3;3@dYVes(p1*Adipa%GS|jW3T!;&3v)M6tY|oS$MfQLun>PGkV{?3n4G(93NDAo%|A^4O +3R?~V^ofZ8P@b44|{)9dy7{f}7?g2sVP%t0yc6L=;)^d)G52bP$lT7XwsgXu+LkMwRI5PQ9O0t)ZC^E +}HF>AE6Vq8@?1rf~?yROm#v4eyWrZgDQJjoapy-ZL+fUN~XP@>v}oxkw9q&qF-}); +>W2<`gukCI&pIIQy2VxJh_uI4gG5d96{+qoo;->>K*dK}4LlD_q0O*^ZfIoCr(Tz(I0Neq*kA{>JfET} +!Ns$E!Dr**kS1vN}LFHufA)^fBBTFc48bn^Q)~VBVhO)+t)5G5`$Nzn-SYCP$Y4Dfq$uO18yiL7Sa#| +OQB8;P(c0ReWog>V;g2y`Fc@&_AHt>!$;)3VI@+$N)XxpU&zAnj9>_7(nKfF7yKja$V-!t)_tleIC@2 +ykpLsGH72c)yqF;ImppbmqJPjrK`h^FM93>df2P6XVF9-VlV +(q5*=w`#BNRp2DZ4gs;VR4LqzMO;gg%Xr{0DacHl8t|f1k;R!Vzp=Tvt(Tc1}cN!2E(CAln*nx%EUQn +=^Xl|<0OfbGRiZM&T+UQKfK^H(->g3?zv~NmRa^_;b8^)e +56I+!lSy1j-97%8zBxuj~U5IW5=*31D=O}T5Cp`44fe*$}?C;QLptB^tAi;5w3b`Tp)x?=Q7Xp?%l!M +4y%7XfsIp@5QYEtyk*imz;@aEwEC;=2E1In2x)YZgYrrWdhf^3>7q@OYK3-H4#=bm_ft>4LXmXvjmbq +<2UOex(+Slp5rA<@A!s3HFJEW8_8paEGh^p%APF<%~LXv0Xth1WQ|lY^l}8pN9sN28*gkwP4j$whbZE +f}xsrdXEKuJIUKLGT3sJhXF>--HkA6-VYKC{1sSvfn@>YOtNsXG4WnkLx6hcP-l+~$d%kD;mHVI)&5Xt)kRD8QlbLf}{7ER`S=ol* +HI@rCJl?Iei-blResxVV&jGasp0v*LXdEeneEI_D+rFB}5DlSsVtzvqb%CMrg*my=*_+n8~xE+dn=Y= +`uD?$TT8#7U=>331eh*5`Ct|_%_tg5lO>*N>eJGZu5YGaGkhBoH98fT_nm1gS=)H^DyBzF9t`w +9aF6Yz*d!Sk02+;;$oPwZbXWWzTc+;H(r)KJ&crjvfD%8ke{QxFH|Q(_m~MGB+J&=-K7BmqUf0b5v&B +=Y*DY-Yw(A7^Q(1Y~XefGJoE*&e5x*Je{Rg%YdV5$;r=$}qQ4d>^T7^dkTGr& +SsTmsYdU)YV8lhkfrs6v#-*M#PaXI@Hk)*e(0$u!p08rVFtlBM99oxO@ +}Ea4Y5vh*QHg9v9-XL3O1YsJfzp*fR<|C@rvdcQ+}N@Gm0Rd|=Cx+;UNh^1uXLF%r&*{yfe(E{4ZlVWCjgUD%~eBRv509V9Ha@ZJ4tXF9L+*-_mYwWH^|D7?>nyra4E4*c> +TRK{I?lYm0WnKiK1Itjbco+Ziq20r9@DiR_c_;q-vQgn?Lg)!4;Lj7A%UybZOGJneE^X^<3ToMh^Yfn +yoIi&92=`Ah|TolbITAP<4=AihjyVOUzhiebwK@Nm_xtZV^fVZEMfqJ@Lz +ctZ~ZtgwVkYMjYsYL8T`kOULSxnNHZPJ+UBty-ps*NsoXJc?)OCATOZ)o#dLQ{Yd?m6*RjyQKNf@i`7 +%N-sf-|C^NIs1bi2giu?8*Yn}{GR+|!913L=FzTt9R-va1Huu1n)F_uot6(KrRG5wroYjJDTV=&UTQEMRGIGb5nguW}u6IZlM29!3K-#Z0y;3t?C9dpxH^I*0Xdc|GaEXuH=@GqO@OuM7Q3p%>t~Z_aM~zu +6$qr)ZB`JI1Pp|py50x#|X*E}4wN9i`i`Cl2=O#FRx^!J*Oa=gZ~V%@z +<$__hq%(#r^qlKGJY^B-C;Wg<=7FS2X}!A*P{$UnSog#Y!g_N}eA1lad3+gg-ahW(%xR +^liYY2->ieo@pi4@BD;p+6{!n_gss#Q}J^I-rbXpT!Y=bR=?x%7h2T?PxK0SV0Na0~j6h|#(Kxo}oObMw~DXmg)0lQ57s+2-h38;w> +w!??3tBXsS+_6H`Q>dX+er=+0^vk%6P)pcE;gW_kWt^t8O>|}#!R(f!4C`^lPfZAa<}xRk|DuN`kVLK +$rSbUK2$ROMTbZQ=@AQ7z&Zu!aqF+4e#3qF7mV#LXyHbxGV6Go{VN8zvoq1Auj>_vo#~pSBiTChUCu6 +~MkxFL?_C3B<(@XWPl~j`}!F3WOy(qY2J*o3og6krf1r+IB@sCEw)K0AImcZ4I#)8)_EC>{6cU;O1S$ +fqpip0(qj(nz}9!%>-oeBgTgmE%k#If@K+3gXg9N8(F4-2xJxqLg}@lps5$ds|k)?Dk1YI +FBQxZ12sJA`rLqUK(`?!zJiUrm@nFQ+|INm$b!#>aJE*d$Ze}^*2vK@JrmW1EQYSpviGs8*wTS3WIz5 +E|L&)xmGKr^gR)jT`SH+l}+C=MN878Zl72t4!a`^nx733)Vw9;+;c6u_oI4U| +WMX2byzTnnS-xv2mGkaO?ix ++Che>ZRC??8yBZ1l}Q|vb=&sXzagXRfqGf(H(%T$cfXBEInepAY@hkLSk?b70-zB-Tde$}*Ij~5FM%5 +!}+t?Lha&3sX=W~@K7R_bY8j+f{l%e75zm&rt0_0fx)Wdp`(#$Ks_?Pn7y-k;EB9%USxoq|2l0Wp8JJ +32G_XZjS}a2I5NfnieO-Ry|`M;t^uqT29}#Z6J%JL2ZiQ%cUGoy#_pXvV8=kLIqzJbgTF9_?7DLfoy` +VyvghWU)(|n>$F2M2XufV%O{@(2)_Yt~|b;)R-{FN!B~!X2x_Li7<@Zyz>nl(=s( +YhoIW0Np+k$`Mb-VG#hDad~c0o)~k4Y~*5je5TUAE5R$ja~3>WVTA;hoB{3*?>J!*}K&IoP_o+!0kD0 +u44lUbUg3m+=HPAIgSrrju~l>!&b6bN5fI$OSlr`#AAWZ@vnRPeHa +&?KP2JxZH{6;WW(>Z#I=G^?MiKn)KJG;Mbu^|D(A$ilMONEd0i*9|28_JH4q6!8(Gau- +c347LVr}m0*@Ly-S2l?vV|%NZAQA=+#eS)+mKj?#t%HRvm93z#o4ytJjVi~gvkkx +4yt`&xw!~ADM}((3u`Mx8U#W1}=(k4J?uD_7w%V3}tsWb{1y`S$eD0g+aI<;A^x +XKU9aq`Jzw~y|^LE|t<5xnZ1X54rpK0ImVsrTz5HG@0jh6U1Q?HfGwU0fPA<1BOC&yW6uuw2-nAAz*;*@Ebf#5YM_d?TpVqan(} +{(#-ZFUVZ{TmTPpa_Px+`&J%m73bj-=5Z!LV)&CMlJnJzL1zg3Vv4ijshsEY^hnD2`mGFe6UI|7R3Pd +FA&SrX%2f!K^w?Ab$im0A3fS*WH83x2RVXF2)WLqoUfSq`=ilMh5f}IGAYo46xzx0q9ooY&K?I7GbjSEq|#V(J +56#2lAIm%pa<0T{R`5bIhY@oJYQ^PXrpMggOT*gVEKed5o*RoIFs6W1Z3~c7e4|`E+TFp$;sXg=xJs% +wqI$(TW_jDSdrfH5{efH5MBfY;2HfT?<(HuQ+gI_yj4m6vF3lAckrUYIiND`jK2%Hfe6dSzK001ASHp +!s<@2*Q(3r+$n-+YK0MY3ctvVPm)xL0#C`LkEGT4V{6?e1_V0`)L81hsq%&-YJob6j}C?a5c(j~IIf| +MrQB6J23HX=bODwdYechMTNRVNTL&5dRB$Y(*N&%wD!7F&Y)4fvjrNaD>sGGQ0Uqe^{Pw=d;{hSxAs~ +Vnma%D<#b$g3)+w9;0zKQp&qTFLhs{m*pJ(B-8LZ&Vxf +aUW9j;*~u-%NsE`9}nJKV3Yv=a~;$%KUtDP(7;JiwuhVL_%u#Pb}s2>(EsUef9T-gS(O!PJbXozJ;1f +K1|_dN?Mr>0s4pLAE1nGpFbHa-ssZrXW;2MHMg0vhg2aw~qpY`xs&mwfVHfc6(Zy54lI#fj)9m=q+zT +;MuBLH7-SB1O=T~3Ej|bwFwZ)ooCv?)oMBd1Uf}oYS>enzTumpALWwV9es%Qb9#Z`EnQbs8sK(ZxoTe +0>CmikqX-K@v@EVoZ_a_c1=-{9HSnHTw92oao^g1V&;x-B*+xH?jHkUEK6h2BgKlK$WS-X974frlaO1 +|=9*rZaCPwaplt;D@RWU{X;FrR0NY0}FBDL;B~JUu<`8^nEbR=OYocpyl(=fyT2fztI>M;}m{tWq*XC8&5o?_!;XaLUO$!yjq?*r+oYfu9UB4f+{s +uN1iZ+40-7uc1m-0zU$AFY)lFypQ3 +kr%Uc*i~}DVS@D%`%-Q>i9kAXK^l?-UqMB)z=gb7~GlbL0h#2nBDf)Q~3oQc(0PdP=T_GNzrfvX+u^q +YE7rgnHYdP=z&E{YgG)V<;zY+~=L(dVh9AxcT17>zIta7N9gmFx%a28rbTi!@ +t@k}-<;AB=*`DVVS66wE#6`;uMFSHLS1c2@CPdR^W!`#9d8HVjhf5Oxi||A*~e=nq==*z564-sf2ihBbZPO(Q29!xOF62LPt=CkOKdp!IN$51r7!Al7EN$Tj1PX`S$r^?izR;b0|9P9w84 +{JblrfIbGP3jV;@N<>q<;Eb-UC~)0nU)R#*MIC +1a2i>yZ6T-2Jk9W^T4WWk-tpAE8GY;2$H=eLT+(p?wVF#(xvgprpkKS@L~_fTBd1%`917uTH?0&}bzuTbmoT>xsQ#NK(z~@8ZD$hvdl*F4l_ +!J#-=lun(s*lw1tI!fr->FMkyIlkpwM7!b#-HNC9DP&t;4gDD+Y>w2pS?7>9&v&v})pIB=NM~eFP1PO +nwHKDa(bEfl86gNx()|l=7oGkxQ-Ca>sh0y5vW6(RTj|Zo9L8orih4sCLJg2Jqw}3s7dLKH9Nl#MHRE +X?GUjp$U+dTFrP@1&SlyYQR>AJu0oKs@qJ4&BA+GNbj|hgSusdjs}(w-Yg5()LGMcr1!WR2jAXc*z)F +jwcdYI%vax6YTN1IL6Z|T5{w5m=2r^;jPOejxVmPgCwii|X;2Zd-gr}|-Jm{GrmpbAc@?u}9 +_<@BtbJd{xfRTEq^A%mAA(9VGYK7qfckxsFj%j{ajbhXET1}UB}sAklrylKLxP3xPBVw`_jgnEkmF58UwUY-pP>e166xm)CH01qD|U6Nps^V-sFJG{^qc5<^5)OXt +l*Tha5|3=Qv7-x&^*Dwr)mCMLx84ar|l{7nhR5GXXg?f!cy9&DM=INz5 +JoWLCoj3_@7z6LufkNqd3lCZ2wvMPznTLiRn47sQBy7iGAow#$hS!BFy08K@^KfHcvpzI$uEAm*8<)| +P0DBfB%GuExXVelRo=oBr2;L@0DG+-NhUA~^jh`ihrYFmqNz;8fi+Kqb4U6_8sY`U*&Aa4+u}d#+Rib +9Q^Jth3Ic7(igU7$xSEPk8Z*$S`9C^AfWzcc=mI^WSw&Q37ZX5jRazE3PADH5w4TA?-!$xtJOrwnpb6 +j9b#)6tU}%80hD^2L{fbY!Nx4*GdEfAQ~qJtK3VXLKwLjV0a=@ceoD{JGwxY~7%#?rnH)%^qqQyb#xF +gn2Dq{G=w<=qiV6DCN3+$`F$QKEUWt2Rl +2h6J54p5TmE0^*&d-+q&RiyNAG^WSh-ZbY2a+^q%E=SKGbKdn|FP&5?!zgi(h408_S$Yt=CidNp^g_S +z$i+RHfpFT-9y*Rqbl=#qF0nPTN#rt_H)3Q%$VwwfRTYc+9yLHWBF?5lwPAfuxV;C)yuPr(}Qs+vNDk +)$_TUMW-f#^XD*V}8Nd1+8All8x+hL3a{TQuhO3a4=FDC-H1gfF^w_w)p!TU>}XxGje#^n0knkRnQA0lwF1jdq=0GhKIo-x)mX?U*M>}m_&zPWkFMxY}%^QB?v7#*|<-5dnK!npDp;`{c4soP- +f~+zVmNt`caBl`(^R`;i^ioi&T+A+|7>-yf0M4Rl19)0T%S8LiQjfuS2Bh!u6vV&t1)=y1y7t`!shXsXNxySdBLZz)*~5332u~o~wJL_{u4CKP$XkDqra&^$ +{u&pNEpd7D*gD|rmg6llT+?MF3(o1Fw+HOGCLl~wNZ{lY(LsSa?S1$?Z>w#xNeJuu-2o?&iy5Y7) +4C;f3zK)b@!HTv@V!&Ufj%o=n0$K|ULL(YD03n));O~6-GqmC!G7=e3i_{fu(s#t*5)@%Yvm~U$y=UA +sG&+cv5 +e{;AW9o1i@VAP$wSI(T+ou5tIT9g3G!my9WCtb1k}rA?oUEA!oN(6N{cHuGTJAvsmq?DT3DwL%LDkA_ +kcfQ29GVEh%!ZelVW{lTl`SLgn?!j*Ge%jXX5YgpM_Cx~Hq`v?xl_Ut#jSn1!7bQ*QNd3QJA+IVcYyi +xo54g@6aWAK2mnS!LsS3&00062 +00000001%o003}la4%nWWo~3|axZmqY;0*_GcRyqV{2h&WpgiLVPk7>Z*p{VFJE72ZfSI1UoLQY0{~D +<0|XQR000O8MnywZ-ne74NCE%=i3I=vG5`PoaA|NaUv_0~WN&gWb#iQMX<{=kaA9L>VP|D?FJfV1YjA +IJbaO9lVQXb(X>4UKaCvorV1tSo`RSW7<^*iE9u$E#Lb3X(i8ltAR+&lmiHp5o8+02lR2?vs}Q^*Vg16tX93IPUk`xAF2_x4z1;yTOVqJSsg9_`$pE&UU!xkoW>o&3h?7U!gxjk|`zRRJ!1zK__OC}TwR5wLgYx{PUF$h1a#=A^fZVRXv{QwK-cKI +5~_6K$k7AToyM45Bx_izJKuaal(b-lEeyOv05%UDi)Q-cQC_VWl15U8>Sg1#k`Sx{vjap#o+j2^a8oT ++C(udA|5`|K)CddB0f9Z`QZV@AFeYQ49%jG=i1K?eRfqMZjPQ+E_yy4Na?UHbwx=j=rI3m2kE^y8-)t +mZvrca5%meI)wtL)NF~amoiTmapPsegVpWe5T-auzKP$O#6ec4i=^6$N_R#&b +x^HxAE_{;&#K0--3oVyS7D$6N` +KODMPNDOi_~|Jmi)wk$U@DYMmEk?o7+w#;|Me&SpO_FTwsS?S*4KR3nFS|kUJ>fezJsXlQ3B;B47s!{ +b0*?TcA4s$&F%pe|iW)GwBS%`*%rKoE&x}O-vcO86y*FMhv-~QAX-TkkNaT5On +P)h>@6aWAK2mnS!Lsaal?X>2cJZ*Fd7V{~b +6ZZ2?nomks$BR3L#*H;u|1a28hduB3m76RtMnRpUoC$UFyEopYK>j% +r?rLLz=6}>Wg3q`SNTw{1qfY{dBIABYwW#f1ezK=$6-Rkm{Dj +nosN?tpml}%?q>ypvJ6El|I8KX@)TeI?&t$BCSiZ5|%&xA{>5BguMo#QXzK56sp?eb!#K*x%eHihA=8 +jVI3UxBa%8mo9oI*ZC^w6w}-X)*)2fG5cuUfF(YYhH?#C`W)lCvpX#3nW9K;IThC?q7g+r7G +OjTevx{(zu@r=}#SNX^bnbpj&t-m+(3x2Vb%-Y#v<6NDWQgG$+U*_|tkDc@d=;dGdXO!}w9iIWZ40SZ +wf)uYDZtMEa$9{_Dp+$QkB`~>Xtp(%lhsEL(la?HX2>PoDi~VREOVE*8&6N>ns#`Ubi5WhsRUvHhAn^{sUNt2w|o|85lgnObd=%EYe0e +p2KZbp%kYv0u~E*tr+nNDbNZ*vk0OK9k^hTqnJmyF( +e1Px8n*)q~x7@Ilx(Q8H0D^fO2CjVI|N;e+D7CdIcf8A+%l=vFCyB=o}%Nn2ANuB+#W +$Y}spyb`Q_MUAGEIJ}J7q1nLabAm3nNN@@L#$7fQ3*86YKxt_cIAH9i4;Zb>_SlY`mJ;vF+aGPxW$9U +3HqgVbR9WtWE{XfT%!;HZ#!gtVe0WTeDc1$9Zddgu^>OHTDH50{(ZG~*JNn#%wGWZwo9(5M9OsJKn-e +sf6hGH)X;rk88D~7z?Yx4?ZEmiw_&j{Gdw5jYg)PMI4Bev9TlSgTD0<;lGpopFmM(9~{&|59JkVFPa! +4C@N8Rtf)9mdBGOIKGs8;eS@@t_U7C_!6+`Hz_$XQbRPVR=E}%(`v*Ii0k!W_{P@q}dH&no?XL&$VXJV!wKewA+GwYzP%?! +fNA|!yhA~8a-Gw-23``qD^59U^96qu$s-jQn=YonGH+G^TE}@c+H7fZIV-*=YRb|43TIT~X1zs$MBp< +u{aPdexwX8@}$R|oCLti`idOlq-=O{auVb`#vrq7xS61dXL>Iqn4?>q&` +7MuhZY3Z;HO51Nsj{Kr@ixL`(ZDeoZTFd5sD;DXC?Y-qU~@rd_6Qf8y~V!#{w#rlN8or0f*Pe*Wr+GF +iQp{fTe-koXmt3rwK01bDm942s!lGJ`6Mp(-a(JrxEG) +Q}Ocf{B-v*%yV4>q6x!G@Y6xfjemkLPt}$)gERFia&us8nn*mEC!Xz^SI4!z%KL}Ac?#+;x6j4>)9*K +Zl+IiTHjWOU8xEx$ZkR1Zy}R)Y*N5%g+c3_YNMf`9)fLQ4o%yUb^FqnTg+OarlMQN(pF0n`IRd>%1+1^_2XB?s__>1NkOaqD{Lh^~FAq`(FDfJhjKT +<ApigXaA|NaUv_0~WN&gWb#iQMX<{=kb#!TLFK}{iczG^xd3{t(kDD+Mz4 +I$Z^sq!iTzXq6r>NalsTJ^F)W@$56CY3kqaXa`aTHZ&l}25gHF1UN$gq2SkM^9HNe_4>zZ!+xZPUF-d +Q^&;{4o_j%J4}ahP%pk{#?r~<_#6eNao3pGuhYLb;xc7k3I*{iEjcY@%b+;Ev?2wB76el&7?np7G+%S +~Ub_N!C7m&#U!O71(bFUoGR*MS-zrpVYj`&0fN?RC=R67tOgPcup6eqBn50K4c7f0SK_oNX>1FkR2&Kb{H9oeI_t%vsE` +A9!5b+E)}CkWY8W)h&df@0Fi$0dsg;^9HT8kaLL_vv@X_=v^V{Fb$(Ym2br?%KYfLS6u;G%MVQp|hhBt|kN!PHB#XRv7hUVT-7o(?Ql)!}jE ++-6vzBR9vKwn85PEy*BqSqPe_tv1QTsBA=orJ(f53V>W#S|3z{;Id0j`LS9Tnbl@a?e8%El9I{TrTFN +5!Ii#Hybs01stEG$Ud5R*6TmLM;591R#C;tIZO9KQH0000807gYaR89l-pZov-0P+C<03iSX0B~t=FJ +E?LZe(wAFLiQkY-wUMFLiWjY%g(jWp!mPaCvP|%}T^D5WeRr2KLeg30l0kuvbqjD0>i3r8JXeFwLZ$M +#ZN$NxQVDfk62F3H5=;2|9KTyNTF~Qg-AXv<_|e-d<3EW{uF-Z%QXj_x!PnhKLcBBAey<`K>-ENM{Ex +nE<*9(SYSKi3|c-o4N(q!_ygF$s7I@4QI@HNv>U8Kj@OPw9H|xKoflwG)>PYI&5Ye@u51G~yITpNVSC+}c +CD_S1y@zY}yD0(w&w!Nz*Q+4{F`;|(0r+#gU&0|XQR000O8MnywZl4P$`>IDD*8xQ~hBLDyZaA|NaUv +_0~WN&gWb#iQMX<{=kb#!TLFLGsZb!BsOE^v9JSL<)nND%+-zhY#Bl8D5B4xv+|B3cMXbrr3y<-VMdv +#}@5QhPV-uA2tL|9&&;x0}K}qN>Sy=RLo9cx`kJal9^EVK9zC=38wXh?Uh@;V>@GL9k}Jm9Y5oMNPAM +`2tm<>I2=5ZyI;oYdX+A20JE>B!%J4*|`-L&u)Z|-{+=y$mk(GCi&?!je@ET3*_FJ?;@CYu1wIJv +ZZbeog?4;XB1( +{S4Pv{hSii_iuvqkmrlISQ>Ur||ft^uuqg@ +A|9UPE%ZG!eJOVv!4e*pE~MByG(M7<3f?JG|qKeWEfW$@CcOtBIfY!#k1!@nPxckygs9)ur1{&z|3NK +99r>&%$TlB7zFXV+pD}S`vO6FHAs06oR~Z<4K{troSY+}Rk3MLHQ~$7xMqEdubHl- +ieK0x?3A!?gDdn5a!>!SG`}p8hDlKC+PDHY))lN#k!Z7sTmm6|FDV&A1HbDB&2#-92UkbFYhEWuF^7& +R6k$0RarSa!ns~1$ywLsfAIZm7=InEzLd4%(ILtnSGIiP_%O22n8#GJFK+MP^c+n(z+>-xz-sXjT ++KgKR6?lWt3Phs!yEgCiQnBrj8hT!|JCU`ls|6xcE>OTf0Q_KjO&gg7TEn()L3{bha6Ztm7`8;T +3y?XVkU)PujfiiZk{Hcl)G3N7j9NVKT`OSp{b3u19fS?(>KpW17Tl|b@4a +qN&x|AZR$j>U!-YwA(n@8WPzeqVnR0q3Eir$5YpoBM{e+*Zd>~*z!y{oDMqIc<_DM&N#h*zTH2H?Q3d +jAa^@*4UVuCtehdMwbs5|3GMoZhUA8M@)dy5{=9=7-i8v%!kv2~Mt#+J3tjegS17enxmTMw7kS?NpiQ^N_Jwr +qD62DbQ}y+>No;wDgt;jC#I0=TLhNEL&>jYTY|1DC(Suc1hbQt+Q<$^G-`x%nA3(rw1%9ehS`zJO|x8 +g8ADOe0#1y!tXgRYJoVc+l#6W4#&`UsdmV(xLL63dNie0u +KJttp&e`X7TL=M|PzrE>oWIFr26P{Q-hWSVGz1hstpU|E +tcJXUFz;4pJk&8Ayje|tfW$^_!~CzYXap7H;rG9Ov-0jAD?q*iog{^!43&5*nY%l+&wH88GK)_+f%_= +z$?TM6?EpupgUC)@|5HQ5kBVL>`x27zKMsOs2%7I;L^}P`4#w(b&aEW!FmX+Yv4 +rJS?BayN39tot?smiKekZ_k3G$SG*5!R0Z>Z=1QY-O00;m^MMG3JDAlxJ1polH4FCWn0001RX>c!Jc4 +cm4Z*nhna%^mAVlyvwbZKlaa%FRHZ*FsCE^v9RR!wi?HW0o0R}kJqY`{^1=CXAW6zOiZ$syaIn=T3zg ++ogti;YBjNy=WM=zs4Ul9FX7$f7`Xu_bao_~y+Umew?4u_#;LT3RfGYSzYjA(zh7t*1qNAB{@hM~zf< +M%EhZx}A4z?bTXZf2%jrDyjWvWoqe_(eJ6G+|R@(kL90Cs|#s&AC3ROf8%0uoMrSir!^b(j&Dd7WbdV +QO0TXtX18}O^C!6?mpSz{Ys`jvo67t3BCi!`9KnUxS}jMTQ9-3pZc*~8aa2sq@~`Q9B=C&KN9+jI0kE{&>6F8@`EYh)3m8qS +HrsvJNmREpq8d-0ys4^o1x4Iep@VBQGA~?#FE4>E|19>s(9X&G+BE?Y~<>r8Vc2?PG-1SORh7y;V!pK +4892Z7rR9CF6~f0>BAVmMT}W-k<+8oqsEL*-L4}B>smKR2ehq>m)^Pw3kYwo~1!ewF$L-UYbh!fx8uX +hYV{1+=Vb2c~!D?OiwYPY?X1LanEG@o0iL(m_7x0vJH; +YvouCYd>l^`)8UM)UsR!k7VFqTllbb6Xnz&<4tQVJBJC8F+>lrjy1=!0PR^BWUGD@tWcsuD^;d6Y4tv +r$+8X%*v7`{8UAZEb98?0-5Gj`~LTaI3G`wz&Mf(Ba$Zv6R*k9bsS#0f$(Z54F5P{CqJn4mFoHk@tx$ +Eo$qE587h8A25lqP#FG5d<#?vqW&krqwO(sk6pZ_w^2!d3yf5&|h4=%qc51VU~p)Rvo&f*`b5WgSYAa{@U +?&;Y}d_r2FvtT{g0V{jM$gSg!pvb5YWU_isTz_)ZiopUDlAQMl^Q-`Ula4DWMbQGXFzA$!yF2%*@ ++2^cSao*flIYD{`FtQq4n?d%fQN@D#pV +6&+uidX0F;x{e%L*JkU-2#&-7z@`ZZh^`Ibe|x~}SiM-fZ5yS%7ayeRXuu6QKA_j>X@-^NL*zNGohO_ +JTHuLW06RkGF3`?$!UQ`uYNOv^k?`Las#tW;BF@s_WudY5w1C8>B(<$0<*RPjf?-z3m3I)ov=Tk@R)B +7Kr=_?n$hU!J{tJ&WEy$3||YI=TgHGMIQUQN%=r&rg}^VerD{^K!(v>Wmxlk{r(=JL-|JS1M#;zFkcbMdeZbj6iwE<_!oS=b;c27nRP_K;FJiQ0lb;(z9HUyM_aVWb0lffDS9+WWAN}4)o_r+`n=J0sj +vt@}!P9%m)VfRkH8$wgOnw;W)VU;OOTLl4>Dg#-PXLk(PEU;MKwY$sajoD*F<3Z3G%BJK@<@PP +gQtqakP7RhC@bX&HAhI!;}=OwnjO40*t7FFQ7X!_NN*}Rph-Nr6Ak%Z<$Jb`vwPJ79DtpXlD^xvf+iT1HeBS{=k)%exg@1pxQz6 +bh%P?n&vj`?~GocjZ^_8|5`oLVTLnurRZO@ZgzkiAZ}NhKk|_Pfm!)F5zdBo)^~G_W+!clM&sbQhGEn +7x|K-Wm-@CmDtu(60w+U2*nobTWiLr}*a?{`sEeW&=JO{oCVE!}<+qhc7NDXE_7p)O6a>>)Atn`u}Po79Yei6b#IXCvxrS;lYJrq;I@2D@NA`_;DF*HC +l6a^IA)@`~?ZZ?%Ue;#4462QOHZpF{V8ivxT2*VShG{HEB)3!RoeRPxOAfPKABkYo!4LYJ-x}=jzLqm +(F&iLI97KvxT>W0&4U6PzP_B5``-pGpGKs2#A@C@c;25<6}CGLncAXI~yQ6T)4*zckr1A;CjU*SY3H+ +h||+D@V8_sUcoV#hoqBUVb0oKv1GC?9xy110D%$$`ll4!qp%;8X&x23vrZfVpI1mZW=#)iE4Qgdqn6L +6U$Zs!_wDPAF=85CWQ#z87sJala3M9-F +X@$uIy&@o2B~`$XSm1!FOEAnmw+wx*lkoIk!x0HdmrK?zA->`nTL(fZgania2NOU@h^+{H2_YaVrc9D +zV2O9Ia1`A{tb6TjY$L-a(7N|?Lb(#ahXmRH2b+n +F`RbJQxlPyfNkQD9kWLofQ&v~ZY#?n%2C5K%B_!RdVPO!~^9JbxU%RD7kZb4L#cnI?z&tpBBmYvt2h& +7xQ7?Ss}38d#B1fxtj-yx@bA^qeo{xkcU1*hz5`1{G2_oV04S@)S8vlHb*(bl8Ylp*Rw#LXoX5_uG!A +jN?c<8_@a$McZZGq={}sKWQ7a0DmlC_JUV-@@N83_oas%9X&3(ihJ-+NU7>X`bC!{s2g7)~*Sx0793D +D9YGU5|lzsj0UcVEWlM|4LfAae%)|9K8H%`ZI?+IbBVDC_}vCvvkJX7R67U{*zIPem=G};I*NT`t?8z +U4I)mqXLol17HD*6`O-*Y*I-$uaRFO2&M3W0*B1_nuI`O^~NOuO39s#j$Y@!7HE +)GP(~OY_ZrLs1x3@-MVAs>Y$I}7V>Ct77jfJh?F6nX9@KPrt?B|3o0?ZKxzr$iK$kJS7j-)Nn-VC)!ZH)9_4+s +E{e@E&@o$XQZt}cRc)@Gr$C)F}t-F5Wh@_c$dNA82M)Nw9}(@UU +QUlr)QdrB?l~%-nvaF8fhbX*G#=*1|0Xm$zYS67cVTGSVNh|dMsb79f!8lDPr*5l@y)P1zhE&-S*CI +ge!qWtcI;pe3!}TniJUv^7rFD~!K!tch|)Hs!*5<97EPx`}rlc*|}bGTm@K=&=K1Ph@-_kOcwG +_{Y7K(kF`w~gHy3RZN@Wxqg!}R&p3DQ&8p(qFnK$lw% +3`M~(wM4pp5Pbc$=q-2TPbBXGqCOcg!U4`^B`UsT@XIRhAty?k6omr&uEN<1?u~NL>K4RUE!pS%%WjIL6fF>xE__}H{pse>YJedBF}C?=Ws(d${dZ^R|Px%clg`4*k +sMt5Cp5u7y{slMe0byh=h<7hodinOLZC(2a%_>z70Up#7rkI41LB0O5IrGHf&gy!UL_mk44H=Z9kc=*@?WvvGx_@;KIr+8F>mkTK*-o>V=YhEnW*D>H+zAAvYdjLzoELN3JNdjnWJTQb6jM0D#B7`tV2zeFl|IL +nU8}r;!xuS+1?UMCk~fM3sdzA{RHcHvkfH0nTv}VGTdoN#a%f!#_6!(k#S@|^z*I_Zk}OUIhW@7Z0k+ +&&_GpHInJ=Oik%fv1T52jWj6!7+FnK`~BL8B;mmfv_E~oV=!uSTVIU2?GE`y|9HV;@wJt)Vve5;|%117Ora_fTGrh|$TLra#gFp)*+2lHQXy;o&)?!rfq?VuYP_zW8x02JfY@EpT^{LNUgWfHqX +|c&r8)qOP!y6?u)x*>xACeS|%=%QN++{gDOFRa}==kK_|5g7j8JZnAv0agpE<@LFoDBrd%II;SX6-#i +-XaB-DeSPQd3?>xsNvxeaE<$;-$=G3=OY15aRN+GWlRhE&94BXl;t1MI)z3mXwhVts=T>id!Ymdg*EolfQCz5>9*A%4ziXq_)u>wBgZJ& +}7Gl?7gFl3|k^|XJDG_MaIKill##-9btLm;u>g&E>aAe?^{!N9of4>NxQCWU0a@R(6w%g)2)*fT_P27 +GaUv4UqtQJFOfzo@Z|tTuh`;-D!lBf!V>cD6&%$?+ERj~T^IA3EH3X|gtt`vcU1RL74g!B;7Z1os(@| +3KCCg}>I#M|M78}RSv{%kdMdb=?vDUQ#kPVU((-Wa<2K5hT1jIZj4@hlP1Lxbs)wMZrGENm?yq#JFPs +u7VZrjLrO?(kRfqN+GyG62NZ%w-1<-M+?EMuU8fciV>om2mca8;;NGc?}^d7-)6!hve`mJ&lT>*j`MB +w49?Fl=#?%q<7sq`w2MXV4PP2=2nm1x8(>;I48!_=)EB7^KjtFv45hO6@2yM^ +q!X>B|0AzWN@Ll=LkQBo}&@UEV)3w2IX?JF0{&DT0YD8)NXKH^Q9??xj~$sUMS0~d9)2pu>V)DAiSHo +2T1e+z$}{xZF~co9vnt}d^d9BSjfe^J>Q;Aqf;Y&B$+y<9Ui05Ge(YSE!61hDPpiMQ5f8OFmLH +Klw`W#2cR8SGwk36z5hwue>((tvG>;h?q5NoCsg)L3rUJQODf%ILZ)=nfRm9j=?RSk+cI*HSa5>dYD? +W^R5(qZ>N@ith)K%5`p=1!UgZq(+tQNJ>ERV_yigN+T{TGgcV6m_7{9;y(JSJQ|Eebp(OeiySn}e%)l +>x4@r1j3VFZYIQ05pRmqE{g~qCKrr`{v6em$HD5p31`oXVe)@cp~)-jM^@|@T$;pXqnZsr|LpNTJE +Pd8<^hLRhgGsCC~J(-5w3!h1Ia3Lj*%C{&Y*X)s4KCJ4#Jes1Q`4kO$;h8R2>&{>$n2YmdS0L%3n(W{ +Eu%>!XH3XuIwwY`iG*P4SIhAP)h>@6aWAK2mnS!LsX=a`^Tpi000?7001BW003}la4%nWWo~3|axZmq +Y;0*_GcR>?X>2cZb8KHOaCyxB|%CREj#%tDYQd7T{ZbXQ!8Ub7-gI#IqYCzS(-z>u5>1Q-A +m#cVde{knS|m;piATbB=~QdxNP^z`)fy9Ztr`I<%1Vq0ws5k*X{H+fMpJ}>ihTZu^BcRKp{YRzMFotN +gS+}q0?FEW`e%gzE3&t=BTSW1I-C0r8ODr~(%( +K$K_BsrHCRr(BSiybDt3_U{e^O)w^zy#QU-r{@CD!6|R&F;qP9*Bx^mg(|mLxKK+jnr$=>Xk(dVpr@o&jdbsEO=HD +0{!gca2f$=aQlI$rRYqi(fyaZ`|&LRyAP-1(dUQp}hr7qS(cR4y9{;Jks;bS +|d3fIabEk8{KJiV-s+C}=$d=WLcWiJb4&j2W(gHO;qOblc+jM)!BpqNf{LbHoPp=%&i!W<^WY6d5Q +Y{pT7!K2)HV%jvA?}qF=#gd16e_X}J-xT*!F9?)TLSbm%gC-%7gC*XZ$Ps-)IF0Ro;cE@8_&m}8XK6} +>u(#tBS1ocJ3iN04I#e0@0FUc9o4E@(8mnT&5AkFK@_wn^(NGu_=sw|CL#?$iAPnC;2kZJ-|!+3wBdQ +3{R?05aaboWG@?04^`or8CBvmw*Yv5h4ZkI2rw6{0P3aWIRbkg2v)2vg8i@3f&qzPXA8Le!_-K`BMgl +nu8??;n_6b7BTog)bn)??_`GZ&B-soFYanAH((FTLFWVpoHFz|<>2gWC!b`v&i^LUl!tk-JewkRS?%G +Xcos!8m5HF8@<#1;sEsMu&=73U8Tg*Rh`1`x=3s74Hw6cm1O%PQEDSs@YOyOPvKge@dDsd09^ +4R5$NPk_pp}JotU4NG=F&t^PFnp&xm+*7)z0f0$hs(e+}+L;<{jhO(7Pd&}(JoR)XsQFTo)sTHuR~C> +B5`G77?>1X)>#c+Yy*AIE3o5&YW^TtxJUvf(fWQi;}#t*ljZ*Cah +f}hM_8%SCL_UZb2_GvgO19m-~Dt}6zl!%f#m^0Eui!hXeYvU!jrI04My?Y!FNb=6Z%f^miqyVdhm@R? +bDe~=dMKKQU5p5^zYO&z4ph>g50&@mY4?xfNY^3$8w-?oK`a~e&6B(|FAhc%a2x0#Q-tuQIQv?V**W( +Yv&o__JXmbB?{D9`JJLrag$z`Sj)<0Q0*`@9O4mb!r?*`51qmM)Qy?E=sX@@@sjd)tYkIadW4*}gL57 +S}GSpC#}^c#-5?>!L*Pe2yDdyoiy|L0Es70c~J(qJh+<%xj62OhTjdqNSX;G>;^y?l-qrT-O&ePOAix +HXcQtfHt_igXcRL|o-@oi_pM;7&O5>;1l+_v^JML^K^^$7T3*D?o)^K!$}~)iJziX +URD`j3!4fYz`?|jctvYq7yto7LyE#~?{3E}NO=^C0wQ0Xm>dA)IvvAE^Kdi_UC2}%9sMNsuf8`HK)?6 +)AQOze1YvX2YwMy-9e*>86#in%xRV$Ab +Y|qp+c|MT>=ad^Gq|a7ajO4%_RFhG6!<1yy+=g&JtnV2ma56m&-md)e)`%!x$*`Z;mXw@-#lEd}hR+H +=E7x{JuBw{px%hzsdsb8=nf$Q-wM}2DLZ30So;YGG +vFEc-DmJfCF>sI+7@Xl=a0;){JN_QdQ +UjRiR`;u>AbjG%uWx>HbP$eJ}JJ_%mblQSp9<2=}z?XUYET}jTvJWkhB67EtI1{$%1&3ho5^$_Z9+#o +a&qQ{19$vf;U(R^)j4@1dx-G%CQ{2~r?gS$`vr&$JF+Z6qC4fCF!g|1krMUuuJ{)q$Yxoe%qqcc%*xp6Y3((<*!A>Tke)`&-4|zA +g`er^ZDsU{gc^GM-gETxGzVC(Zg0dcYDb)>48(xsa-IBUH@`?NKVh93evV^q@bwPBhr?g0JaCt@EQA4 +AW(*6={_Y-BHeb_23T<5iq!{NP9tNR^la*O9}f)IyV<8B8BLq&_O6{2SvJOjVcUs@LjogpfQ^i!r2}~ +ngPJ~!!!rY?I|JF#T#8EyP{f@%Si&lS|67B;JsVY3zx8a9s&gpj7D>2MmYtlhBI(^04tXngf=qKCA$I +p`Ry;=P+16%ChZ(f*iQni5b#7~F$i?854;1bf@#5Ke|hn5Y?l|X?^vGPUyvExTwaDvZbfR}uIl2mJ6U +LO>q$wYY^BUBkwmZ`s^>ios@c$5E$caWfB31U!p>D~*p{2Yv%R>94eSk=14}`*g_R_wheRB~(qW* +*jV{~z$u67_%MXAELmiAYC;XkRI5ry&lHO=@MBsPA=VYToLggYw9FFNSGqtx^eQ{#ogFiTb@39796%+ +B4MU$PxS5Oa}}<*h)~KT4J_UmgHE3f;_P@mV&UNucB%p4JX8*UZ_T77CM_L9Jy2NefM3+CY3H{oU&_G +WTTn}7N4o?tmiVIf6$=UEU)g}D}yW5BilSQ4td%><%w|ap;t +pxcXSPQ(^%0dz2MA?k;5?uz?i%n_=Z86PSeDutlUW-6I`BYc!EYTVQXAw?S4Tw|NovzJn7Br@I1PWey +4?O`z~#2pTThhvM_ +|EAiP2h-KVcjTvPo^34AXVAJ1btS7u%HHBpj1~d|MtM|NE8O(`?LhiP;cHixlsR~wIWT7@6Fg^=fliWCVMi$i9m2L03Z24 +4dzi(=eq)a)DXbNxypkNaET1r-&tpm2NJ=j8NDEaK^bF2eeTYSy6kUV_&%i5{WlPx_mo`FWT@4Kx)-6z&O +xWQDa=(L6j*`NK>mO@m)=MghP;Ey{y)b;_pj;q78krIK-@Uu|y|rdw*-b@tzFn5#M$v@LcY?2>fr6f6 +xY{fiTJn7v>NQ4K&Sn2`#d@$$zYEyAzG{$~9H1GlK|+8VAK8tMaBsRn-Sg?U_ZEy?wTuS)hv&1Dd||G +j+s%>R1?xEp53bY8TnxQ6nf_o+p+{U@3Hju!fOGT7-@|!_%OLma#gWEl%G{ZxwF|9eBI7qe>beDV~PM2F=By +R7Oyoh7sdFH-Eb=AoH8Ln{K1DA{|>|CDR-9LggAKvJol1wm=h`6Z-VUU4;NyUpj&9K8w$=+1#2_4r?2 +e55NiYUsS3yjhejSSR+VxGK#26=})VhJV*0_w_^iWcD7R$vcQqT>c^q0RVT)x<;H@VmKwA%S$`h+Yr? +1|NfO1O1jcePf^I%cU-LqunjFS0@MaEICD4F^We8a)jq(MD{F;Jfi~PGcP1!(J0>lr~WYha&!0Nhsn+ +OO<-J_K5IyR(KOXq&#K_>zw3i;Jjo3c>rJ)S9d*lVkidok0OEk`2pckF0s3B)s^03Ra9)O*U@DJyJqo +*C?Zg{8Xw}Td#43KQ2l-_Z9j>b)Nuw~Kt0Qo&A^_cqQdJNeq_#YAN+;@>?lw7(TDzs~)fk1sskzi}n* +775qC^(XQ=mM;k|TJ$qz%~g(beNBEx|8E@JF?5gHEI1=2v?35fOE=$Xiw55~)imHGPx=*n)JkOoRu4( +8z-w$-q$H(*boxC_i+|M~!lUPlA_GXLyDc1-w4FPIC)W_P6HT)T0~Wgj15xtE%x2(fpp0r5w=Vn8B>J +Ni);q!eUT{p%L|}^JmBDx}|dK9iwg?eZ|+KLnPj=3n!DTqD +k5SO%XqoK>P5(B$6WPcL;1Z)iA0|Sl-uX$z6qdCIjCKc^`!oJ8MKD`C6GwXi*iK#vl6*9;K!@b3ZMAiCX4wKOQqEaP}uX +DjAx>og?loVLlK*>h^Hw{ZTuK<3 +PLkHM408^8!^grux)kA*BtkNqzt>`7&MlUBc_Q>;%yy+Ou(jA(P?72Pe;9?Iv+_jh0_PjT_Q{U~dyD44tQS6!>3%}DU^pZrXTy@m +gbYk*hs6a&9ianjv=)3X(t3@G1Fd)X(lnByvtak#$1R|B6WR~Q+lJ!j4R7EgY?mvva4kzx}D%KFzz8-6gg(@RhdqK-L`7ke^C`nOeD_OvSj4iW#C5s*tgqX~xreszVp(`n8pT}QxmpyZ{HZ +DhV8)z10E!;^`%^m=jluR;=d6lvl;O=}Hwu{z4rO%|CBfhWB#1&5G5|LZcHN+<;ct2n_73;mo()Y)6A +?}>!~`}GVa6Aa;K5>Qh*-SNHdx*bmAIS?b@6B1`F+l{b^vVe?D?(r)LEFz*Ps%{O0P#OU&2?+tE({>d +zIGxrp9>>5$Dg)>2;lt?i`*-izR2`GUQa9lM$f(Sun?^SYL9s==Ah~j*iRm?f`nFVq$IxoW1?bDem1W +1fC^|IH5~K=<=^YS=f(GDyoOgb3W2Ue#zcz1OM$ibv~+wJ;l1vD!Do9QDB%*1WRnk9f@YS~ +zW!@LC{WIdRz?X6)nRkjfA!;>`Vjp(aeb*_!kb5f$- +Xy1Mgegqvkw#{hM3Ufs`-d{g(^fkFw`r>h!*O@D7~H^(`Bof?kVMAMV63eK;LWCR8v4$)BfAEbUl+Yt +s@z#|OLgy?fW&w0WMVJ^cZANQd_7y+W=Z`DnZeYR=vrkB1^BAab@};@V%!+B$`^v++4HC0rlOH3U>qb#ZvR!e@i~n{=XEod|g29NPTXpgH~G`GJ!d +J1GB!-J!;>=Iv-rPYX~FlP1NZ%&8!IUMKu?C&Z~pNTrRdYwjYE)wZ%SC{Bmrb2}Ya8$-iop+idYS;O% +$*7f?$B1QY-O00;m^MMG4fndnN_2mkc!Jc4cm4Z*nhna%^mAVlyvwbZKlab8~E8ZD +Dj{XkTb=b98QDZDlTSd97IcZyUK0{#}2?V2!|%Bd=q-mrI5E03&gF26DD9POd?7sX*;=EhZ~+yW~bz| +N8re+y`Ylk8A4yj?Bl*H#6Tns3b|=EG4ak%a-${u}+JX98aidbmo-NRMcigR~xs)=i?OrrX;PE+9^@e +dMPzER_PnMzJ8S^NirJk(1mewMsJqNQlUyo_`lJ)tjR&s)%8m%RVKBSB&=V`OwPYn(gtn3R(XvOW?f# +YMM^|V=c?JkL2fdehV9hUHwVWDt+;gQR^@1be*nr9Y-4S +8rw`xRhEK^}ZR&+e}uD&i(pXU7NZ+*n95;@zruPn$KaM1x4m_tR*laeUcu60HdrFIQLxEP8BK>PI@`x +-$dDjkCPy?!Z94rWkK^?TgD&E8RvRRok>$T;dZ`OWuA#Tw0i?0k-ycF$Qe`GR7qEO4l#2M>LTN7JMFFgaI00-0(NZw`wzh-1!?0b*8vaz)Y3JzrkA3$GU( +f(t3WW%>=5wdeY??4+|Jq)r7YYE)=p`!mMfuruAD${YO7MYalM=FPFeu9M=)$9X%ewSu??s}S;M!Rvc*NTOa!?B;XLowLBL+93laXW`U{`J|D8HvwE<&;Z}B4NoCh(!GvSxSoy0 +2QHPtPFB=kl>I);J)njQ3cRNEpAq*Hb{U|vJG--!}26ja#1R~lzAkgGAIQb5-Sr564Sesd|hxvE!m}6 +b2hj(H$-%~mckkhsi;Lu1F-23R>66BkI?A}+$Ngm|8aZN}?RY{$XllT8hK +Rj+TN0t$)6nsVQt(9AjlUu#NpP=H`Lrm^(#|C^eM8|1#`hN;jBnQpCmS2h!Tq#!z>3bQ&MsyLN)BQGP +v7EQvV!=lg6xQ13qbSvXa6LC%p?qdM?ABVQ(q^KP>=+uY152@}$iE*Mv?ZFI_qNlF +c>%H&Qm?B?Gkx7)?-}jO!`BCuzF-w_*rGElC4xj)1;_~&`^V93I$tbEAIGBbG+%a>~HE3t%jaEFWjm_d?OH +VLdSwA1?%&$+`!4ue-^Nf^s6N1u(p}*1ic)G>w;1%@7Qhbunu<-KP(IGR`HkF@Cs(xna2h#pJw88KQ6 +N0Mo8J<5$gw2$Ksget|JxMt1nM2Y+i8lWhGp{N(9RfO2`&p-*MpPB%5cUZ+hxy~|7Rk`hXiV_)D{Ajb +n}z^&$xHGUEjv@rPj}MlUCa)$P?~9h!S2S?$fK2K1P_b;^0-U*LyT=lv`@)p<5U=2bE}E!QP0gL?%Rj*pOx@$>?w?b--Q7h9 +G`@1XWmCZ2Vog?%HIZq)Tt4Ll>_3GH~^!gcE$PQ@EFg=pH>geC8?Ng*uqglw5m|^@ZW7UFK6-Ab2rF{ +5Cgn46qox1GZQ}pwQjPgR8HfN&J(fK!6+MG+k=M6@n}Z4g=jvnP94AZT>;AMVxk&U~8i(!cRTJ)P85) +2`v&}w27yj>75{fcQWU;nrvTZmRj#?mcf7VyG7nQ-%dy>-}diZdVco$&HVD}&H3fU=_|hH7ha$J`u6< +w*^A+DAX5Lz`F}8)e_Aqr54C$zww)?Gs|IJrz%G~oIwA&*qsedbfO`J|i{!oyTJK5zvdKS-&%PAolAr +PH@xcj91t&g%C6TDk8CbR8{Xk*N)J>WDX}T=Q7hZG$46FR6*H-b<1M?MxM$&i?==CY>3!b<3JB&SbK! +Hs9Gv@w+1`}y4)uI+P*jt4;q?f@BZNO!{?%5UxAHe0YZH*%Q1bj9iO(7?G~;Bu9HVb_w +UEofC%Ku@XJ!t23Rh<_TAV;=cJi^zPle`(J}_X9~T*KaKFP%(zU`^H5&4kPV_%4bHaT9Hsa6qtJ#bp$Jx7G6+okHR$e$R_lN#=}=u{6Gk^_exY_e(Fzq)R +Rg4=I7t-Q!$1O_kJ7q7SwHQkLo*!I??Z+e0cEn^j)q2<>B($;EB#(XbkbEK@6aWAK2mnS!LsYU5_qP8B008eA001Ze003}la4%nWWo~3|axZmqY;0*_GcR>?X>2cZb8K{S +VQzD9Z*p`laCyyHZExea5&rI9!TNAmyXVtow}+xQtbuO!5?s*q5+vRRZBYocOxx^Aq)SqE+@k-zGeb% +yEh!uH!?pg9wZ)l-^Zufh)lM77q#jBC&FbQ_aP2Q!jz(*vE0$&Axez-iwX!Un-W&aVd@Q!25}%ZthQoZmrSk+PYJOCa)N8c +AiRTgTdDAC5FL%-4Hk@US*5K*apA7U5FhSunBECPs@SYGCw=+7MHPz*gwrc}vJz{S?|CU#+=(0o}WauqFm2HCe2vlYb(rNn0yNvr+6jiKWimsl!>5%%?;md#3~nhZRZP93xXU- +l#fP0vV{_Ls%_lp8md^xy#W_>9q +OGH<%e*{Ln{^6&okR;||miQf{vW~umH&z${kks`gmV)w#8b*UIefaE3Qw_4dP|17dpN-Bv`=cU%WNhE +i+(s|31#1xbwxIHK0C;*IbwNV6`P(M=y`oQ~j9x>2mMX9ZrMEGl23Z-8F4_40tVZ;hiw+a`*(fsYjyY +FXgS+Cc^P&5zV<>V7I0|5YQ!%1{ndL`y#Gj4(q%74gH0nK3*{Y0gj99H5`O65EDOKrJb2e +!`bic;cCS>r_8h(np^Z$`6d@V8J@R9nGo`h(1tH5pG-G}*g<>>oby9%hsUi<6yLT22c41t8WY|P_wArXI{XrC2rC%63RfQcXNWNGTHz*W?kRgeXa6Fbj}Q1~ +IsW&TVo54mD9ByxYr`gfRG%@(w`CJn(=q#+(G|04)R{3*{7?edVdx=66fxe`aBA9923rD(99Uao*pvj +Ay5Rw;bBd)@xC+iutL|O=KD*^gJ(A3ohK^2<-x*H;fYZutE`^G+EGvF6<{v|hxKRjW4rtOG|>ke +s!p#nFR|)9Tq&7=GySpwG=d_k_kv>RpBlAD-^HG!uX#UqmJ7tkw3$M=v4}ih$S)cD{0jfIg4nA^az-x +x@JAn;ydllX-^rgcfN+U%~=oqzT9LyPc)hM +>A4RhAqI$8qbp!Hu~MrSM|h9bP{ta`-4@LLW!^xTjA

d_YBdo$Ko^)ToJ +J+OTsM1d3lqIh~q_bB?>6{xhImkW1XZwbckc5bW3WtxS{3H4U~+RlM}HM*r?LcD`t8N@%VU4r5*=y(P +*w+*Hq01-&gcB7ccY$z6=10S^FSMNMCsI6Vp+yJN@${mUH$%#zJJj_=x+GpN;RcFU5tJzHIuE4ma)YWvbDC<4x^vtO^3BU|CNj>}Y;pavEaP{HG8S6QCdbn9!O}nu8`HDrnXvPx<2c3jhEUCjbB=00 +01RX>c!Jc4cm4Z*nhna%^mAVlyvwbZKlabZKp6Z*_DoaCy~QTXWmE6@K@xz}VxlG{eyDrs=lqy0dALO +*50-WG2q`QG!TFLPHTO0a{TX`rCWX!G(ZG#ZKDJw0cM+5;!=Q?_A+^r*>?ySofyy#A3nZu2r33e5F<0 +8?msz&(7R)BX{EL?1J5G1*^oG_qAbKm7j!trFxUGUW;qplEHtFa#?e&y?8Tw|)XY|^=) +2!qTTag_>6%_+Hc`)i)b?~cIsxIuVJO^Txc(SU&B1OU4gW0OazJrg~)@@)3j&6Xb+wbz5jCF!nx8LVC +bH5(J0gK>FY-Cbqu3Lh5N*WxqZwV=>a?XIupma%s +oYeo0O?O?P0R+d|)?nT$hN@y}=EHVB@ndgra`dc{5ysB=!qJDETpP#Ud)QAy6ofZZVyJ5VpEt|aKJ7G +kp5xvXhFRBsC<>UBn)Z({^qvHw``yl*B#wsErLPWwziOeuvj2GRUnwj +CW#)85tvALIwl5M{Gi_^cG?muo+^JlZUquSw)oxi!v8|2n=X8_o^_5RyZZ2!ZNn56*t5ZE=z3TB#Nye +*p7deyMD*`PW7MxwYD0Z$p*9vJ1RZLGxuEjpy9|szzKw$R&gPRZ5^r}zU#g$1&G1k?W9F_f@~|U_s`f +G$GUg6)dvmd_#GK*JGBA_INWo1)^k=w}>Ss@%{b{+#136T=l?o9FPA(xlH`0i}1*&jRpjVtu%<1j)pg|FG-)_y7Fnb{yJP +zLVM&1twAa7F;Te;1)YX@-`B7$34Tc0v;>Zg&R6K{T$bpxr?%Kux|O{_@9Ic-7+;gI=7Q4Br~iSoeKy +fmt_DT1%pG#@A}?~vhW+L4?tQRY6it4DjV_R9>^-UDO0$>0e89!3M)$201Zdz8 +svU6%krh=PVpt%j8f!qSI`$5JbU_e`sj)O9iBH)ihiuBauLc`$9R4IROhdo1@#tm2Y&)WW)uFyB_3f3bO#RP!5m}>N=L=sM+`8 +Yum#m6bD_0z-_GYpBuHx~_v2gGjQ<_)w0?MUC%uNP^#ABoZFpxQ_J>ShHG~#$8j6H=E`5HfL; +Zf)IUV5_tIEr6e$Fo0ENmkjK@zg$^2MToguGZ}$$~_oQ?E!BXLQG5)OtTfNoGE@DFq{gUYCz)A8oFpbR3nAOhCS9 +(wV4aTDSn0MrLo9#>}(`PK9VJ-g5h4XU-2;wPzsD_l2QR@O}`VJES&~wU;?2Tc&9@5A8csDL@q5?B0G+jFcBGVmG7HOLmVOV8nY;1N1) ++5HVNQiHj(W?DY)4c5xJa>iVhLg^UG9lxXbQtN-&7AYkkEA^vqL_6E5m&P>Vm#cIX*Y`n+X{~|VK^VB;gF>JxWRF4_;Tru&_6H_PTG%XzYw1KlHN%Y-*a;Ti9U-Sb +oECjtF(CuScykLoXfZgly=QN(-a+cu;X#O>y#Zkh+UXLO-=0D%N4%=^+Mnd?Su4xENKX0t_4#2aeAHN +A5XPQP4#iiN?jjA@tIqdz^OT0Gr%O@Nygai$;hFaj=FuemkP(L7+*G8d3}0X>E0)P&%PF^f@kkh#880ZlY=%Kx%IXnzX~gBxa-yX6O-O@&Y^NkT8y$wB;!IPa($+Yo-AcyKrKi1bRoH!&65u=)q%}$bqL(<+_tLI7E43ln}d{lCC-7(CtMvY3>U28|B$9FuuMF~0y-dP{g>1k>%fOIzA4lgRvil +)Mmvzw`hDQYr0r4er9|BmD6A~DDFCgceIzKUo0P*(9(E%g?!YoWr1xL7Rz`IsoV^xihunx^Vgp7Cq!) +zgOhPx{K&1$$7}WcEoQ?v-~CF0^Cf0?d$|z;d=UI~nNHK%Jt&=l)~~c17c5Q?59@%}#(Hq@FDMBK7%k +7yYK8D~%}#jLpvT&Ja5y^QpN~lM%)+_WYOf(rS9g~k +`Fy={rDcF-z{smA=0|XQR000O8MnywZ=c|?Zr4j%D-!=dM9{>OVaA|NaUv_0~WN&gWb#iQMX<{=kb#! +TLFLiQkE^v9RJ9}T-NRt2iQ}l>sEe%E{ye^{~hLGSS>=DQsnB5(4glx63HnODAgWx>wvtLzpx74y^Nb +b(R87#Nz)z#J2_2^8~c+OmRTI5B_U6%#(Bu;bYjk7o`a_)-XosJw&d1s0klQ<0dBoE>!Qz(%)=YC!!A +@2wn+vX1wp45O&_3}K;*a5pXvdN6kxzS^WSL8GNp2b;? +--toqo*4hL;OPP%rm1%~=TUBqI-NE456Gbkj +2=Z#Pfc#0C}U$*&^X-Um|qg4~DM>XP5490Ai&a0h1u)W@@Zodz;gv&DUF-zl^?Ye>1F(kiP}=gL&ux^ +yj0^KSuH!ur@YFKRaLh7GPctPa0?)1|NZIwjkSpZ8_GVA>jb5-#4#6+}!jJ*Wi`*=K2GTXplFDFt`MD +=&YGGj{L>wi7{?pot?ZoKOV5J_~ZEe^62!m*MVg?dH?&a`~K(>B}U9^Qo^&|&bJ%e`m*z_`fYUH4*n@ +Y4IBoIf!^@tF1$Rw*x6QZfzFp1fA}W;e*F?8_q*RL!=9oM<|YgtNLoFH?+%m{R>#eXF>Zk`20$4OE8& +bV+u4Qz#phecz4y|<6MGK!49#?nJ@VN%+3eXqGaQ3i49O7+O1q9SS(#&f+5fg~;wvkYx?4rjaDdESJ4 +MH-(cEj&yk4S)R7Qg4?o(1)hfDN#+vxxNOsAvK-&sjtCwjPw*-k67?G?ijXoT|@boObJ+njH4NhXahSVzAdT6`lTmJN;GU_H}YV2hNkLv*F-kF#LURT>6Tm +m#>Zouiv~q`P+Y;zB@aA|M%g=<<;;1_~*a=@WvCLPw!^IzdwfaC{F%Nv%I+f^sxB6^=x}*cW?hcp8sO +IKizEpw}I|wU-KFU+hE35!~S<1MCSDaTW7)_fa72fa3nEp&yOqw24DEc`PsldIo8OmZ|{9wx6qp*!6o +4VY4ml;{58Ld0$%NuNeHaeF_!# +9JrQ|W`*m+rpq=Fz=_cL(RL-1joB@j;5ct0s)FG>w&@`wdW`iboJCT}iZ;!=qP&)4|1s`-23ox1G)Hk +s_mX+rTtiHGeZAO}KB*FD~8p=fg{>ec)uSXJ6?*R3V(bq;}jdbT(RGUgB)l*G=pjrM&W&CM}+u8nw@%F9KKdu_47vWKMycu0U=J#UZ0mR4Z*& +$WkO%!fOd>;9hl+U3a?HGVP0V5*9XAAUk!%;Dj{DFkKVk)U`!2YbP(+jFgl${=w%RrrlDB{+@=A)foK +^nTb3gFDwX&XgSj&nmD%!M( +{3hytUcO7y@SqMO7s1MLwHR7z@nGAe)E+)B=Zz)EMz5UdA_r2t>((93orhO(t>bqgW714`07x7^&Lje +CWY-voOvxNLaw8EincL0OJw=&uv{Jd +1XH3zDvRQre%M*=rFn)4h6#3}K`XZC()+ma@rO=JEm76uww>593M8yv}(3DNaAKP^RnJ) +Wp69Yo(l9o0bwA$Lo?xL5y{XC4B=Am{RS%3a4p=Ppu6scZ=-h^Q$$z{>EIQcdkb2+F=zb2o8;j__(%^uBzZyt3!9KK +q+bgC6Z?XE;`;H?7h1pOC2)LfY06o>*0M7DB +d;&u37d2dRFHhl;Q_zseq@O}63`$a9_GV+w!hJtMVEL?l(mzYKw!pI=!sW% +QeRxgPl4q%*sycoDy^i#wV0!nbMQgR7sv!Rd_jvtAVU?@b?5p(Y4V0XTTA%r=Zk`jqz4z2i-&+H%i>$PN4l@HWV;93oJC5b60?dk{plc$Sbedm2Q(>DM+H +zWSAI)s1`-V+K<2TKJ=+fHgyocpM94`Jzsuk{SLs-YC(1!J(bH8mft>HVq_evO?eK=;POpL>qy5Un>$ +D>=|=lq~t9(o6Dm~>~lAW;LHwucQS(`)Wjeb2uE-dcp(Pk@r`24Th&0l|(9;f23oNsWwO5vW@PD6AqaRo2i^2_ZC8Ask>I$A;7nyGuEL$g3GkQ( +gm#stdy(f{gOfW!c7yoJ&hxW0&A{VJaEtC>(BTZSEBJE8U^IE2b-HWicL^6HrU`5rRByyL8vP4A%f6H +th9`$x~psBrrv52DqkDAZ-aH4_EQW5`5KRv9n?vRVh^H&BwkcJeniE>^lfJ6LSmVkpvSktEXueaiq>5 +q<2XrK)+fxA)hJj1*{g7p2m0JxG{J!#9jCvT=!;8F+EhYX*W1oW*^6a=o`U+#?b7NjtLEsMq~)ZPxme1@iA=)9K*{yv+|4+JESZTTa-M7Kf +{XSjgpGL|hnXGld}_z(U4NF(L)DsG%S3;9bI;zkcgdWRj2C{qiM)xFBF_$F*#wVQs+f?Qpg3Yy=H`_D +h2UWD>{F=1GZs0<0|)GSgor0mkO#scAvzV;F`@wi7;vNO$tg)Bw948gOE7aKjglw1j3ItowF(s&_NpXT}0dvA?pFRU236K|VxQE|Tt|U%Kn9$Rr{WTDV*D6UQoZ#Oo6Ob{>v* +u)4nS`jaiP#B3wKB$(<^aNqd?`+~SW>tlNsU7HXp_LyVcAx|Bhn@YsFF626i?S%BW?dniLn@(=IAmF< +2xh=y8?Rf4G-d^MJ0N^&oH{7dPXJTnu^zPI{=8s@)R;|9O=rmTTKF1QcMBnU{lE&mfdQKD;K?#Rh4`C +vSlT}N+(g)gI!GHOj!k@Y*NyeX<)5L8o;3d(~c%wVL)6l4k9mIxcMUCOJ0=H$Xf7$c^{5i^+KCWb|cn +yRijQ54u&AP-v_d_PL54Sx1?QzpDL6(9sCduP^#KGb_VBXD;-Ho1PYBe_#u11kP%Nc5lLi;7n#qRgz) +nj>;hs{CKBmu!gc_8)M*6=-V&o`*X!GR(y|pj^b9!KE@Yjve7fFoMy=31%=nMcdA5R11u4$K_Ap#R^% +`BCb_GfcC+#_;laZ>V0}I7+LjZtcTVz{3KaF^!JTEWnG@lNrR1JgF)(^ +u|22WC{t7xLZg%dESCk7&Y}|>ApZzamD`ENn>fP+Vqhpdq-ZhFt0H>d$8DV6i=1CZiLZYW}YtUlcsA? +Ns!p?J!l?-P;s9O*;Z!;T})#q^op*bEwxENUEmfo?jpISx|-M6Oyeq2Q34f5v6oh+V(7WMD1o}6Wmvr +i(R$mc(qZc~rDBn$ttnGkOpo0BBtN)J3yweh9XAEO84Xy=iXbv4$7e_XKe{N4GhE89R5`I$v< +1gfURIDhQF0f_Tqbv~WOT5?0SSs#!&e|F4(&LyXsk7nEwz&#DNRa2%Fa<$n3U=k08+74oge;RDh;XvV +1aGIGI=8mpE=a0c5dyfG`!XBhT7~U=zWt~+9HUrZ=TZm{bjo93 +$dLcQ^Bh12b6y>ZbK?@Bs7Y`j>jxK|{c=UeSO1*2SupCvFexjX^0_ZJWW0M+|ai;k@UL~W&>an97Lez1Qi{CBX%6j10vfh>Nv}*0KHT +GH-Z8Gm8wIa*IlPz5vf-nH$^OpJuU3wFjY()Waszry8pkTW-z^fhtP$G}{B9>(&S$3pnyjLe7F3*q89 +X2HM5hbxt*sTOX#wqtcu9DQ&&xN{Kw#9qszn<D{82l1Ky-P->EP)h>@6aWAK2mnS!LsX(hzj43^00 +0~n001BW003}la4%nWWo~3|axZmqY;0*_GcR>?X>2cdVQF+OaCy~OTW=f36@KThm{Jd-T#8m}1OZ&Lf +eSdOkyJ8l1%3z&Vz_&joN{(&Gc&6df&Tb>XD-VnMLF(UOW5LN&iUrtFRSX-STD%h#!OWF;z(2Bhi`i~ +sjR6*)is4TMmv#CT4}wKdNT2L|9T?u3Upr8lu2sS7;hR?Oz5$o){FPy_jlGB`wUC?EZvB8vRX;4S1Yj +;zfNz>XSu(}ALV~E_LC`g6yc_GG41i|sxo$ENtQ=H^j3MAewj=rg_h2VXJKaVf}qMYS5d$gVBA9faHEl7Q*Ad?~U;LmYgt^c>CeK6MNH%LN=mvBp^`$P|aq9@mlyT&SX>Ufm +NH5EY7_2RCPLnXtg6jt%A!Ua@Co1&aB#a@h<|jRt!o;+7xX}E +CP;(3vc08nu$rbMhmiOen1RLkrD-nxz;z^H)OrriV6YQYu@Pk9JA_&^|JWW2@ySH5M_g7Q8g+Ih;7qp +c>}nB$;MVkWu|=?yfu-0Q1L`&To~Su+v9OWt2XWW1kfq|VlUn@Js7G@1!EvD8A|s$WsG1EhAtc96VVV +a>2QFv?OVo0Qh=ZY=W+5P0C6#8&Xm2(It?fJn-&Sq5*G*Ti5wE4F6zo}&E39h0u`b3)YZR1)*`ky}1) +o>y5qNxCFeGkH(z33trHYQN0o6XMrZhb$d`J)AG$w=2APfZ8B%K!@_I?Y%(vV{(w$?nTlB2J;vTex%j +)hnL3c=R-AjPEl;Y}sc``8UyOsYagajompY-cVHOlX*S5hxHzZL(E8y-F+YQ +C5_WWlq@4YLo4kJD}?*SngbNZ9j?Ung&gSFWX{yYLAADKhcJQ}YUMZ;7L$ppxJoZ@rGxw{)l^3OeJN( +I=Hk0l#V*9ZVm*mAp2v8x210I-j8V1)2`vRWr+HD4D +EyzWokWlkJkkk5ahBe|L+j@{eqhThq|tECR_A&LlL7N*n2CQRya8`%5L`JTx@-ETQb?r +nF1F!a9h>x?3DzY=ejqTO?`dm~;gzRQ8Tpn)WvF2!FL-yb2Rt~yJ2$E;V}M(L?^7vho@( +r(xzOq{(7HqYH +0&k7zpA-!7|9Trp35%nQpV4Cloh=2>?_kG<061+?4VNDfKke`c|TQ3ByUu7nQ0)nbYT%wUzRyx-$G3U%&OF&Zzb99-BljEw +@%=Hp1M4g0J2J+CxW@W0iy+*=`r%Uqx=N|QUGM)e5o+mnLlJor_2KkC%Uno5-2MFX``c&Y{tWHiFZXd +BVcVGXzr}DGXN04}g{6%`;M-(1#=DxNK)}8erU{nM@hFgn3?GKap}{s7FfbZ9;;3^&qb|)V(4Y3@IM( +?yUD=BlOYxVRn?rF;(J)Ax04GmED60_Fubq`7$UV%PJhByaTi^XuQV$z#|x{nn`msd +*ie516C5C`|K}D;_3S+%S<=(ImsD^|nQBfekxMFmx_LX_p%LEskM4q&u!0&hUm4cSR_kGdJ!V3du=|X +J}D&6vo9o!(b+io-S>!t2{VU8OnSS9u8pbQ(-S1JyXpvLwUm$g*$&ETC9Wrv4&&MA%^E;}2p=Dp +(Q4sid8SC67eR>=8;6l6>?K)&$nMw>Od;EAPj5qdtP`E|m?4dhIjPM!i9HdYBI&vIXx#t+l4LY^Oj4( +?~gK4|H2R$s>&t%}#2aMWzVg7!T2xgs&HIDZsBr(wqBJ=NDU&1X8Da&?K_n@K~5H&|2;#Uwt@*r*4}& +w!%*AA>+H1a~N|hv5WOmcf`i?Dru(GEJ`C^w=t!eGWmsrsb%u#0YKKMn8FJE72ZfSI +1UoLQY?OOeA+eQ-qUr(_Yqo9OJjFVh@E)g5B9i=hqI6>sJxJv?RMXoH?)KcIsE$fN~d5r_^UM^2^Gy6 +d6^$5JyY{s}=6Y9Zx=cP$57l|P7hmw~Yxy +U$4maCL48JAQh@HLwgxnN}a)3f8tpS~w!BaR43c}(+I33NJTM7c3wrlP5zWK=S$7 +>G)#O6s;^V&$A^7!+9Z#oP{BtFv}$=cmmq8Fij-OX)1a>vw%+{Vfg%%&R8le)A{kq_~JFAe^mRG&PhL0yaU2Otn&|!zckHagoU6 +hV6#tJ$3$3llf>GD*h#v(E{BLv14Tr4I|%Z1L^@tDoPB%RAfrOA)$bF;08qG01FIW?I5N2>10B#*=C* +Pu_#rI*^R$`q?C(buKzF%zuu%NG8H6{2ki}65p^Xj +a!UL?^%AAo|uNCMdT$XIv*PK?m=`V0ahL?##@=yE(e?7Ad~O0~b{0tj8PKr4%{qoX5xXux6NozUp*#V +|;rpKUk +3u!c3W-rMV`NT+RDht|<}P1itff>kql%6Ni+u$?*7u+)9C!n(vk%$Ld2B*D&9dua)mJbz!EE(8hb4tQ +*to(&%yK}<7{fpQt)e@t+_Qv!<{c64XQm?2Hp +@bl8F_KAOXJqdVhcayP)<#%QDp@KC48u!m7YH&svamo$Xd!NDO$4ZCJ+Tss36JZBfwn3S?pCrD#NLgdmAE2Xh?`#m +cxY4vyuf|&gueIs9VhCD#5qpidu`59ZzKZpRqm0m+S&}Zz(JX|0+}{!1%OuoZRlep-UG^tUF|6ftnY%nzI-}5&~ +;ozMg)e2NGQ81Raq2bDrRGQ-zRABWL8KP1S$lp@_tI8VMrpH>NH{Q9F_VV0-S76iow1LG%r9-_btXs9 +F{B;;25XLtOVbC6Sk-Lb_U|>D8v_DWP*9Y0fmM*XIEHs@@WHTDhNTzM22Bsuyn3-Pc6JF?<0Y4GMBPX +ZK0i8oYU)#a<P@W}rjaZwo)29+TTi`vY;P0u +cD7F_NEIj!3eB4-j@NLRqS+Ab7S7)s3O-#d*@Kpg7cuvz4ySFm44GF_o5r-ZaAcdmpH8R^1#gD!Q>a= +k+FlkH)$KGJJk(R<;Z|%BMzpyRuS+tfBCROi`*+F*~N}VZ*Gia3I=Exvn-QWpMUOe|}*;kz$oVQu2xK +ZDMm;7o^pCI;tge$1r3%?Lz~r+-5lj(dov6fXLN(Ht5qu +-%lE_Qx9)2e0ZYx1(jtk$}8(2UWxB_9AYpeYpD5Pt_{KqG+Aah80_{+sHl9Wc3z*DM*snv0b6fU)19mSK|*0yvV*+@qkoWA529;P_wkS-; +!mX&@AX!OTGw644b(J$UBvpA9BfIK)V3}8Y0Da7sm~hwl9C?l1^ +(80~H4yz-33tVIeWq|%Ev#&z53LEyD&}CQF@GC27;6Pk&GYI7RQK($He;wWc6Cn3nO;%>8!Fcsk8<5a +r@Dp8+qJQbHN|_yIH)Q!~973HDNU}fGE-=^(l#&R9Y +?E3n~6gQO$|6Hh(>t>z=e4ew8`gbWyd|%K=0?wd&`CS{nWYZSWhy!r<_W!@~X$@>x-#M`s +{yY1`KYOS<1LRXfwB1|x&kY-Vsrgv=+4F)*gw_pls6I4SX9fNUi-Q8sYb;f*Sgll4#La7EVH>X+>r#q^j(3Av2*LUqcsCKoDYz^ICn|X>Q+ +If&>bld)$i6KZCH*DlFd8EdNcnIw$3nhcqm`Yj)cMXSCMAmg~n8Arwbt3F;^+pKp7MFwWEs3SWS6$=4 +q^d;L6KV +1n%7auce-0N!e`4gumjNS(;>ucFI?|{{|it{0|XQR000O8MnywZ$E^s91qJ{B6C(fsA^-pYaA|NaUv_ +0~WN&gWcV%K_Zewp`X>Mn8FKl6AWo&aUaCwcIO>?t05P56$CCXS}KJ1wu`hFZbllGDx-W!9lVk +^er0o*w4w7vX%dbKeroxkI(FW2fN+Cs ++?5^sS1|GC;5EiHc5W|EY$u`ZP?fQpUhbbhiyOEt2*TwdyUU3yV0piWLC-z`||qjiIq~am*2jA|Ks&L +d&>*9lU1zJvR3`r82&T+@#6>kma{CcnB1xAr&{#qL6z)HrIOXZ<4cvF;z}iPntrmq%w!Q)a@Q<}!;4TWdOFQGDfUl=PtZ)Q$Z2@;t9B0_rfla_e6!0EQ-SL3CM!*qFfJ4AnWWZM_;49jh6%4poPJ>wC2 +)MEZe1+mT!^RGz1Kxw_YCPa8Bj5-oz#-sC{SZj&gTA?G0KFd6E>jvklo^lq+Jl){S;FJN%y^c}K+v0G +V>H*s4x}^FgK-gWVQ_S?Kf~kll=EO2+H5or`$ptTaw`y^ngO=C)~zK#nVjN!$5<=eN4fUtI1(V&ycq} +8B-m7s6HG6SO&kHybD9F9xn6f5{p2DtvoEAPA}|1%u~yFjrg;^uooP^Ca2iBy69H-xGCToFp(Tz1Okr +S2Aq0a-ulvl*u(1Q_6!u_w$s&1)KsX7o->xCOuR~lE2e~ce2i&ebs9&a>2~lQ3+G_%&w`&Mf=+4lHR~ +`Yag&U&G%vibu=`*|s|5D{8PG`h%NFjaVhV|KnBT1fT8k*+&=8XufPohI<_@n`Kvjf*R`X3wFq|&o&3 +4_Ec$4C<-$&`BAqDkoX4BzSQU7%)LSXyI53R_z)@GF6!TUmiRPhn|<5Giausv!EhHN86S*Mv7sVsMNU +wvJ8U25WNlbUjfagh!U$p*?qxxe5!o)dI>vibL8c?#gQsFY;5Ijjp@POCARBEoJecvR(dhyM!{T&nYY<2FFMfB*{vZ+;^5U?9@f$b|z=xcu? +g)wikg?^9B;Va!N0WwxAd@KoAB9+5iCz5OxE4G|oyDUESvu7i+)YJ388rVd64Tcn^|jyF4E4&}b;|nL +?xeX-d|gjy4lJtd>UmswQg{qV3pdIS0i`N70dN;UU~CTRYTfnJF|y1!zZM^zG=SU9{a +c~kXjPT&wuqK1sDffc9$IGG_6+km46c!U8SZGZ<1fFm{vZ9&|qYp72c;L`^9zyLU4aecx0lXAz?sB8xR5m;2ScHHk}w8-9oVeUyenrGS#BI5rGf{56wrXLEr(HNp!~Q=#KF3|{ENUTtKi{G58(hkSuAIUE)RvaBbR2_g^ +Vmo=QWuSrNm(A$TlKEYaJIszk=|dE%IFwp@38$qTr1!}osElTa1gO@_k+R}@4Cl`yK+h+=GxRA(Mxob +kYh1Gbsc*CQfMt9g1T>1{s*XUEzBpo2_5r78gHK@R7OeE*u-_C#-OzoYJD3IK@CNi0?<7wC!2qM5dIdN=!4k6P+)K36ksW>ZNRSlQp$qwO0z2 +{d-HSc&#fdO%`PWRd~Ab!^u*0#voXef^OHu~d7kBPEXg=8fk)&tNdfGVtSoYm}9$x +!l^K`6<{Mg^fFZ|20z3cif_6hB*Yc!%L3D0FA2m0*iznS4y7@-|pNP?z<`6e)@b1>l4g*qa@6k<}#rL +uTWYX!`=L01QroykN4AW^C@hUff^m-!g}gKD1tXy83)f+$;_G4I8tnkYG7}K;A?0B{!eL?86GRt4j$v +`)EH&1LJEVw_GsPf&@8KQ1I$`9t`zEkhFWKQ)p?>wJCN33GHGW;g60up(Cv+EcUnd-CI&I7Pt;OrW}J +lyED0e`sn9F8-u5a5d}SKC2xzTwD!9fCNY?xhhu*_tv495!QaQkyyLW!+$BtXraDm{zZ0}UV9Iu!Vr( +TXar0%X{p-)*h`*Js(&AlwYGq1}ko~13yOBH{^pa!*}7d}N)o);nruPND+eAMG1;yam^B7DUB9p{qt4!0F{=vYI5o==*JC#wW(*s&BS +y%v5({j4qf96gGj2aXh(pD$a1M~AYeeM%BuLpvT?{~kR_0z;rJ3-Qkfpk2a`a88z|9QpOp-%8H34#~+ +Ma?vJ)6wiuF8bP^l7rueA3^ZjK8jO@>!?-L<(zcE7Do6W%B0J~w_~xb)tgsrZ;;>`xuq~9?-kh5$*cj +}20Z>Z=1QY-O00;m^MMG3)IB=)A1pok}82|tw0001RX>c!Jc4cm4Z*nhpWnyJ+V{c?>ZfA2ZbY*jNb1 +raswO31T+eQ$+>sKri1f&87o52y%s3Y-g|TVOZrPX` +y!Vw>tRQ*OmaEjH;mWu5nw@`~T+Anudr3H +^Ap>e@^eTz(kms#Zo+iZe5WQQ+2}fx}!35%kU{ZoZrUiTEy&J~y*L2-Mv(xcpHtztfknbSrJzNFOGmG +*;zmYatpYte4$Q_9|4$q``(y`ZMD8$;A%jt2u)oLxt3Sq`b!o37jMwm-B0aN?DB_G>qjiFB?(hgjF=WO!lH|g|Msz9-29`;Z#EI*i( +Itp-{q_y(Ip|HU%D5@A!V9qvT3qdb@*Jt?yN=90r`?P29YH52NH5fhe%V9xa=NQ1y!kGYXg5)`NEVTh +U+^8d!3IPbx`-np_U*?9eha5Z2D#T5;m6;KD7bb{=O53{(fzGBvuuq6q7Q31mUAU(n|Dv6Wqi-NgQIs +xwN_FVcaM+X4ZDNAU?Ju-+7B{2y*$4-K#Q=<<*MAczTbQK6c}DP +O0&gFJL%*FX0PsIJjl&0usCpeB5jaaYku8?LS!rL3CjUe)oJ36wDj*j6pMZpoxVK$Bh`SV?LHrcn@TF +^zC|a+##03{qB?EYXF&!4eJWWjj^bq9(zLAqE8b7>3AnYa|W;LpUMm8xEm7tMo%Wj`IYRhXfLU5$>uS +?169!J*eHTWTQ?wfys}TxY~(MBdJX#d$Guy_BN9|vT@{X)^`@0$#k(9kKqf~;D^Nq55ZYSGdk^URHjo +q|NOoeuF%=9uJ?u-z57Ay#)N~=*+5~Ttqsu`Tx_>lS}!)oeGx2EX;pps@0UOF5|h1aKgCcHK7=XXbk$ +rHhuqF$*WF4WhpWTk4rT$RnE}5(+8p{_6G?p*7YS=j66aUWDd?W^TQvUssnwuhI)N{c_xp>p5#gzbWD{VG8B4t(Giw(%(m;$el+MW0WPFiOjtf}K+-zs8eoac&^Wy;MZAr +-;Hmh_=$~$dh|^K;+9|nr$O{%EL0*Zu^&)Jl!gbCC~Iv)g0`4r-I=$3+KhiDiSX#p806)%Qk@UdQXUN +L3E4@t=pRLbnL`CYuV$m$9MwMg-atj8LnWk^>OgkGh>G}He}OdHj)&l$VQ6N4^x=5dOyW9GIONuX1#H +;6Wd$tI6HvEPu4C1Ds>;c9tD21iU#&!-7PN%TCLEa$5c5sh?5j+!=lV1%=DD$+U~eLn +Tg_fddzH5GQeNT<{3*`6vKGc3!S{GT1JXS-DLc!Jc4cm4Z*nhpWnyJ+V{c +?>ZfA2ZcwcpMWpZC+WoBt^Wn?aJd8L#?GDJy{lHCz?!}ldi_!- +v6r?ILt*lTVyn&yp&}+&&Aw`a!TTQXSLW4FDCphy?WY6%@;Q|y_}XKapXfW=tl#Q+=z>G<`%k;i!`tA +&Qe8rK_l__;i#6{j$FL@lcQW +g!pi)T+Jn9Q&PXh5nwRa?YJ+Xt65B#e-MJH~akoAa(O@XZog$Y!5dG`ZgMPo$X>6Vg*Y>*2tykCmerp +{@AsmEoH-ryExEI3x5FUhZ=)=+nc^FJWsC;O{H433whf%0B3YA8o(kN6Kg-WAPX%s4rLZ#6#gmDOE2t +&1z3ZV{Rs5kQU3g!pQCUcAVA#se8B87cbGlqCrsZg-zncF-y`23-yPo?-xuE$- +;ojXQ|2S)nE4s=bLJP!L*`@V5%ZXN!aQYu$^43W#{8Q34f6@}Tjo>dcg%C<_snO^3+8j?56mB#FPJ|u +e`fx|eCZ$cD-K>W-!Lc4Uzz?K`9tJSkUu{D?D&Io$(%A%=5Ng3nHh7&^l#UkxnTam^siUJ^snWT`6u& +=dCk0G{>A*8`4977=G*l8%pWFM0QOoo`mm`F?#OcW*>6T$?2V)Tj8Cq| +zbePZ;9(I-Zq7=2>&iP0xUpBQ~&^oh|YMxPjcB>G77k?14QN1~5JABjE^eI)uw^pWTz(MO_>L?4Mh5` +7Z%Nzf-jp9Fmp^hwYsL7xPD67)&XCqbVCeG>FZ&?iBk1br0xDD+Y2qtHj8k3t`XJ_>yl`Y7~K=%dg_p +^rizg+2;>H2P@t(deVmN28BMAB{d5eKh)L^wH>}(MO|?Mjwqn8hr?T2z>~B2z>~B2z>~B2z>~B2z>~B +2z>~B2z>~B2z?Ct81ymdW6;N-k3k=UJ_daZ`WW;v=wr~wppQWxgFeRjbn1VvPxu2wRR8xjHoxV<*N6Y +IN|tG++qb_>{{v7<0Rj{Q6aWAK2mnS!LsTZZJY4ty003nH000jF0000000000005+c00000aA|NaUte +i%X>?y-E^v8JO928D0~7!N00;m^MMG308{@xi0ssK61ONaJ00000000000001_fh7R|0B~t=FJE76VQ +Fq(UoLQYP)h*<6ay3h000O8MnywZ&BwqszyJUM9svLV3;+NC0000000000q=CN!003}la4&FqE_8WtW +n@rG0Rj{Q6aWAK2mnS!LsXWvaG_BF002D#000>P0000000000005+csRRH3aA|NaUukZ1WpZv|Y%gD5 +X>MtBUtcb8c~DCM0u%!j0000807gYaRC#qmF}Mo=01GAn02%-Q00000000000HlF21^@tXX>c!JX>N3 +7a&BR4FJg6RY-C?$Zgwtkc~DCM0u%!j0000807gYaR0Y%3l@$vB0O2G602TlM00000000000HlE-5&! +^jX>c!JX>N37a&BR4FJob2Xk{*Nc~DCM0u%!j0000807gYaR2=dXO3@Dh0CO_{03HAU00000000000H +lFx9RL7uX>c!JX>N37a&BR4FJo_RW@%@2a$$67Z*DGdc~DCM0u%!j0000807gYaR8RvIgxVMY0QXb?0 +2=@R00000000000HlF;EdT&;X>c!JX>N37a&BR4FJ*XRWpH$9Z*FrgaCuNm0Rj{Q6aWAK2mnS!LsTaK +qo?Qq002}0000#L0000000000005+cibencaA|NaUukZ1WpZv|Y%gtLX>KlXc~DCM0u%!j0000807gY +aR0Skn2l)s9074o702%-Q00000000000HlGXM*skDX>c!JX>N37a&BR4FK~Hqa&Ky7V{|TXc~DCM0u% +!j0000807gYaRB3wSlBWp(0Kpmn03-ka00000000000HlG|PyhgMX>c!JX>N37a&BR4FLPyVW?yf0bY +x+4Wn^DtXk}w-E^v8JO928D0~7!N00;m^MMG3_-GG0l3;+NVFaQ7^00000000000001_fxlV+0B~t=F +JEbHbY*gGVQepVXk}$=Ut)D>Y-D9}E^v8JO928D0~7!N00;m^MMG51cj`1~0001l0000T0000000000 +0001_fuUyr0B~t=FJEbHbY*gGVQepBY-ulFUukY>bYEXCaCuNm0Rj{Q6aWAK2mnS!LsUSHU!?{J000y +k001KZ0000000000005+cL}&m2aA|NaUukZ1WpZv|Y%gPMX)j@QbZ=vCZE$R5bZKvHE^v8JO928D0~7 +!N00;m^MMG2;>ls`H3IG7u9{>O$00000000000001_fs1ee0B~t=FJEbHbY*gGVQepBY-ulIVRL0)V{ +dJ3VQyqDaCuNm0Rj{Q6aWAK2mnS!Lsa{^cpaV|003@p0018V0000000000005+c&w2m=aA|NaUukZ1W +pZv|Y%gPMX)j}KWN&bEX>V?GE^v8JO928D0~7!N00;m^MMG2|W`@cs0RRB_0ssIc00000000000001_ +fvTAR0B~t=FJEbHbY*gGVQepBY-ulJZ*6U1Ze(9$Z*FvDcyumsc~DCM0u%!j0000807gYaRBBmde2@e +H0H_H702u%P00000000000HlExn*acCX>c!JX>N37a&BR4FJo+JFKuCIZZ2?nP)h*<6ay3h000O8Mny +wZm>Usq2Lu2BHVOa$AOHXW0000000000q=DR@003}la4%nJZggdGZeeUMV{Bc!JX>N37a&BR4FJo+JFLQ8dZf<3Ab1rasP)h*<6ay3h00 +0O8MnywZ{dxdPSO5S3bN~PVApigX0000000000q=ALm003}la4%nJZggdGZeeUMV{B?y-E^v8JO928D0~7!N00;m^MMG3LgYW%*2mkOV0000000000q=Aj+003}la4%nJZggdGZeeUMV{dJ3VQyq|FJowBV{0yOc~DCM0u%!j0000807 +gYaRO)dPz5X>c!JX>N37a&BR4FJo_QZDDR?b1!3WZE$R5b +ZKvHE^v8JO928D0~7!N00;m^MMG4i(w7#`2><}_A^-p<00000000000001_ffDWj0B~t=FJEbHbY*gG +VQepBZ*6U1Ze(*WV{dL|X=inEVRUJ4ZZ2?nP)h*<6ay3h000O8MnywZT3!3Cp$Gr~OV0000 +000000q=6>*003}la4%nJZggdGZeeUMV{dJ3VQyq|FJxt6b!RScc~DCM0u%!j0000807gYaRK`daSf2 +#|08SGC03rYY00000000000HlEg0RaGTX>c!JX>N37a&BR4FJo_QZDDR?b1!6XcW!KNVPr0Fc~DCM0u +%!j0000807gYaRR6Q$<-r300EY_z03ZMW00000000000HlHA1_1zYX>c!JX>N37a&BR4FJo_QZDDR?b +1!CcWo3G0E^v8JO928D0~7!N00;m^MMG4-$ot^q0ssJ~1^@sa00000000000001_f#M1Q0B~t=FJEbH +bY*gGVQepBZ*6U1Ze(*WXkl|`E^v8JO928D0~7!N00;m^MMG4H!<0Pg0RRAO1ONaY00000000000001 +_fdLKy0B~t=FJEbHbY*gGVQepBZ*6U1Ze(*WXk~10E^v8JO928D0~7!N00;m^MMG4!Vzrn01pol?5&! +@n00000000000001_fhQ0F0B~t=FJEbHbY*gGVQepBZ*6U1Ze(*WX>Md?crI{xP)h*<6ay3h000O8Mn +ywZA^oB3Ya0Ln^=tqDApigX0000000000q=8-*0RV7ma4%nJZggdGZeeUMV{dJ3VQyq|FKKRbbYX04E +^v8JO928D0~7!N00;m^MMG3*Nq~q<3;+PVF8}}@00000000000001_fe11I0B~t=FJEbHbY*gGVQepB +Z*6U1Ze(*WY-w|JE^v8JO928D0~7!N00;m^MMG3quJbQq2LJ#;761Ss00000000000001_fsj4{0B~t +=FJEbHbY*gGVQepBZ*6U1Ze(*Wb7f(2V`wgLc~DCM0u%!j0000807gYaR0qo|rb7n+0OJ+_03HAU000 +00000000HlF1MgahDX>c!JX>N37a&BR4FJo_QZDDR?b1!pfZ+9+mc~DCM0u%!j0000807gYaR4*fz@R +c!JX>N37a&BR4FJo_QZDDR?b1!vnX>N0LVQg$JaCuNm0 +Rj{Q6aWAK2mnS!LsY1!xri4B002H10018V0000000000005+ciBbUoaA|NaUukZ1WpZv|Y%gPPZEaz0 +WOFZfXk}$=E^v8JO928D0~7!N00;m^MMG56bqy{%0RRA60{{Rg00000000000001_f!$dF0B~t=FJEb +HbY*gGVQepCX>)XPX<~JBX>V?GFJE72ZfSI1UoLQYP)h*<6ay3h000O8MnywZXbO;_`~d&}lmq|(BLD +yZ0000000000q=8*q0RV7ma4%nJZggdGZeeUMWNCABa%p09bZKvHb1!0Hb7d}Yc~DCM0u%!j0000807 +gYaR0(O-%s>GE0H^{004M+e00000000000HlGMT>$`aX>c!JX>N37a&BR4FJx(RbaH88b#!TOZgVebZ +gX^DY;0v@E^v8JO928D0~7!N00;m^MMG36uUOV%1^@ti6#xJv00000000000001_fgoQ20B~t=FJEbH +bY*gGVQepCX>)XPX<~JBX>V?GFLPvRb963nc~DCM0u%!j0000807gYaQ~*%3Xxae)09ynA03-ka0000 +0000000HlG$WdQ(iX>c!JX>N37a&BR4FJx(RbaH88b#!TOZgVepXk}$=E^v8JO928D0~7!N00;m^MMG +3WKTFOa0000U0000V00000000000001_f#7EW0B~t=FJEbHbY*gGVQepHZe(S6FJE72ZfSI1UoLQYP) +h*<6ay3h000O8MnywZH*{&Jf*1e*@=pK&AOHXW0000000000q=7wX0RV7ma4%nJZggdGZeeUMX>Md?c +rRmbY;0v?bZ>GlaCuNm0Rj{Q6aWAK2mnS!Lsa1Dzj?7D006I#001Qb0000000000005+c{eS@gaA|Na +UukZ1WpZv|Y%ghUWMz0SaA9L>VP|DuW@&C@WpXZXc~DCM0u%!j0000807gYaRNE`a>hA>r0G$~C03HA +U00000000000HlHOqX7VLX>c!JX>N37a&BR4FKKRMWq2=hZ*_8GWpgfYc~DCM0u%!j0000807gYaRD6 +QikuDSf0MbJM03!eZ00000000000HlE&ssR9SX>c!JX>N37a&BR4FKlmPVRUJ4ZgVeRUukY>bYEXCaC +uNm0Rj{Q6aWAK2mnS!LsavR+MRm{008e6001Qb0000000000005+ci@pH>aA|NaUukZ1WpZv|Y%gqYV +_|e@Z*FrhUu0=>baixTY;!Jfc~DCM0u%!j0000807gYaR5%N(dK(G=0PY?D03`qb00000000000HlFQ +#{mFvX>c!JX>N37a&BR4FKlmPVRUJ4ZgVeRb9r-PZ*FF3XD)DgP)h*<6ay3h000O8MnywZv-DZ*7Xtt +QD+T}n9{>OV0000000000q=Bc=0RV7ma4%nJZggdGZeeUMY;R*>bZKvHb1!0Hb7d}Yc~DCM0u%!j000 +0807gYaRNV26QECDJ0Q3g{03rYY00000000000HlHY)Byl+X>c!JX>N37a&BR4FKuOXVPs)+VJ}}_X> +MtBUtcb8c~DCM0u%!j0000807gYaR9-utC-M^j0Od;n03HAU00000000000HlGX*8u=c!JX>N37a +&BR4FKuOXVPs)+VJ~7~b7d}Yc~DCM0u%!j0000807gYaQ~(yir3VWD0PrLL04D$d00000000000HlG_ +>j408X>c!JX>N37a&BR4FKuOXVPs)+VJ~oNXJ2wP +D002J#001BW0000000000005+cANK(OaA|NaUukZ1WpZv|Y%gtZWMyn~FJE72ZfSI1UoLQYP)h*<6ay +3h000O8MnywZ6)>Prc>w?b-U9#tApigX0000000000q=A_C0RV7ma4%nJZggdGZeeUMZEs{{Y;!MTVQ +yq;WMOn=E^v8JO928D0~7!N00;m^MMG3o=shaH1^@ug7ytkw00000000000001_fl&DY0B~t=FJEbHb +Y*gGVQepLZ)9a`b1!6Ra%E$5Uv+Y9E^v8JO928D0~7!N00;m^MMG3#=#67&0{{Tn2><{l0000000000 +0001_flvSf0B~t=FJEbHbY*gGVQepLZ)9a`b1!CZa&2LBUt@1>baHQOE^v8JO928D0~7!N00;m^MMG5 +Im#NLd0RR971ONaX00000000000001_f&2pk0B~t=FJEbHbY*gGVQepLZ)9a`b1!LbWMz0RaCuNm0Rj +{Q6aWAK2mnS!LsVKYbX4mM003Dg000~S0000000000005+c`2_+1aA|NaUukZ1WpZv|Y%gtZWMyn~FK +lUUYc6nkP)h*<6ay3h000O8MnywZ8yxcLYykiO;sO8w9smFU0000000000q=6n20swGna4%nJZggdGZ +eeUMZEs{{Y;!MjV`ybSaA|NaUukZ1WpZv|Y%gtZWMyn~FLPyVWn*+{Z*E_3a%E<7E^v8JO92 +8D0~7!N00;m^MMG3k1xIDS1ONaM4*&oq00000000000001_foL8A0B~t=FJEbHbY*gGVQepLZ)9a`b1 +!sZa%W|9UvPPJXm4&VaCuNm0Rj{Q6aWAK2mnS!LsTc}R6)-K0068F0012T0000000000005+cY9j&wa +A|NaUukZ1WpZv|Y%gtZWMyn~FL!8VWo#~Rc~DCM0u%!j0000807gYaR1P13N-_Wd05Sjo03iSX00000 +000000HlF*C;|X*X>c!JX>N37a&BR4FK%UYcW-iQFJE72ZfSI1UoLQYP)h*<6ay3h000O8MnywZt357 +KN(}%2o-Y6Z9RL6T0000000000q=Drq0swGna4%nJZggdGZeeUMZe?_LZ*prdVRdw9E^v8JO928D0~7 +!N00;m^MMG3WE-ze10{{S12mk;c00000000000001_foe7a0B~t=FJEbHbY*gGVQepMWpsCMa%(SRVP +j}zE^v8JO928D0~7!N00;m^MMG5KyBnzG1^@uA7XSbu00000000000001_f$cd00B~t=FJEbHbY*gGV +QepMWpsCMa%(SSZ+C8NZ((FEaCuNm0Rj{Q6aWAK2mnS!LsZ#!{h`|l007G!001KZ0000000000005+c +5kUd~aA|NaUukZ1WpZv|Y%gwQba!uZYcFhJdU;=WXk}$=E^v8JO928D0~7!N00;m^MMG4bVHVw<6#xK +PK>z?C00000000000001_fh|h{0B~t=FJEbHbY*gGVQepMWpsCMa%(ShWpi_BZ*DGdc~DCM0u%!j000 +0807gYaRMU@EF}no-0NW1$03HAU00000000000HlElVFCbfX>c!JX>N37a&BR4FK%UYcW-iQFLiWjY; +!Jfc~DCM0u%!j0000807gYaR4uQ2U%CPS0RIL603QGV00000000000HlEcX956lX>c!JX>N37a&BR4F +K%UYcW-iQFL-Tia&TiVaCuNm0Rj{Q6aWAK2mnS!LsS3&0006200000001Na0000000000005+c_h|wE +aA|NaUukZ1WpZv|Y%gzcWpZJ3X>V?GFJE72ZfSI1UoLQYP)h*<6ay3h000O8MnywZ>CLabA_f2e^%DR +9ApigX0000000000q=7qX0swGna4%nJZggdGZeeUMZ*XODVRUJ4ZgVeVXk}w-E^v8JO928D0~7!N00; +m^MMG4?z6u&A3IG5qCIA2;00000000000001_ft+vx0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1!CcWo +3G0E^v8JO928D0~7!N00;m^MMG4XN?}F-8UO%MUH||i00000000000001_fdhL20B~t=FJEbHbY*gGV +QepNaAk5~bZKvHb1!gmWpH6~WiD`eP)h*<6ay3h000O8MnywZ000000ssI200000DgXcg0000000000 +q=7`00swGna4%nJZggdGZeeUMZ*XODVRUJ4ZgVeUb!lv5FJE72ZfSI1UoLQYP)h*<6ay3h000O8Mnyw +Z{H@P1UjhICd<6giDgXcg0000000000q=Al=0swGna4%nJZggdGZeeUMZ*XODVRUJ4ZgVeUb!lv5FKu +OXVPs)+VJ>iaP)h*<6ay3h000O8MnywZMiwmZbOHbXumu1BGXMYp0000000000q=7Y<0swGna4%nJZg +gdGZeeUMZ*XODVRUJ4ZgVeUb!lv5FKuOXVPs)+VP9orX>?&?Y-KKRc~DCM0u%!j0000807gYaR5G*>E +;0iE0G0><05Jdn00000000000HlHXngRfDX>c!JX>N37a&BR4FK=*Va$$67Z*FrhVs&Y3WG`)HbYWy+ +bYWj?WoKbyc`k5yP)h*<6ay3h000O8MnywZ;ye;Y=m7u#Cj$0swGna4%n +JZggdGZeeUMZ*XODVRUJ4ZgVeUb!lv5FL!8VWo#~Rc~DCM0u%!j0000807gYaREMaf#X$l90DT1j05A +Xm00000000000HlGapaKAJX>c!JX>N37a&BR4FK=*Va$$67Z*FrhVs&Y3WG{DUWo2w%Wn^h|VPb4$E^ +v8JO928D0~7!N00;m^MMG3aOoJc+1ONc|3jhEv00000000000001_fj6T90B~t=FJEbHbY*gGVQepNa +Ak5~bZKvHb1!0bX>4RKcW7m0Y+r0;XJKP`E^v8JO928D0~7!N00;m^MMG5K-4uH@0000p0000i00000 +000000001_frO_50B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1!Lbb97;BY%gD5X>MtBUtcb8c~DCM0u%! +j0000807gYaR4dcA3K;?b07?Y_05bpp00000000000HlEfr~&|RX>c!JX>N37a&BR4FK=*Va$$67Z*F +rhX>N0LVQg$KWn^h|VPb4$UuV?GFKKRbbYX04FKlIJVPknNaCuNm0Rj{Q6aWAK2 +mnS!LsXBYSSrFG000zg001cf0000000000005+c6R-jRaA|NaUukZ1WpZv|Y%gzcWpZJ3X>V?GFKKRb +bYX04FL!8VWo#~Rc~DCM0u%!j0000807gYaR0yP{bdLi70O<+<0384T00000000000HlE&(Ec! +JX>N37a&BR4FLGsZFJE72ZfSI1UoLQYP)h*<6ay3h000O8MnywZotOpt&Jh3r-aY^TApigX00000000 +00q=Dwt0swGna4%nJZggdGZeeUMa%FKZV{dMAbaHiLbZ>HVE^v8JO928D0~7!N00;m^MMG34qt)2!69 +51WL;wIC00000000000001_f%E190B~t=FJEbHbY*gGVQepQWpOWZWpQ6-X>4UKaCuNm0Rj{Q6aWAK2 +mnS!LsW$U=!R+`000bs001BW0000000000005+c8T$eNaA|NaUukZ1WpZv|Y%g+UaW8UZabIa}b97;B +Y%XwlP)h*<6ay3h000O8MnywZBLu(1a|i$cpdA1J8~^|S0000000000q=CU40|0Poa4%nJZggdGZeeU +Ma%FKZa%FK}b7gccaCuNm0Rj{Q6aWAK2mnS!LsS>Jlrnz>000#b001BW0000000000005+cZY2W%aA| +NaUukZ1WpZv|Y%g+UaW8UZabI+DVPk7$axQRrP)h*<6ay3h000O8MnywZ8s)9w{2BlN23-IEA^-pY00 +00000000q=73d0|0Poa4%nJZggdGZeeUMa%FKZa%FK}b#7^Hb97;BY%XwlP)h*<6ay3h000O8MnywZ0 +00000ssI200000Bme*a0000000000q=9Ef0|0Poa4%nJZggdGZeeUMa%FRGY;|;LZ*DJNUukY>bYEXC +aCuNm0Rj{Q6aWAK2mnS!LsaD(%c=hW002h<001BW0000000000005+ct40F=aA|NaUukZ1WpZv|Y%g+ +Ub8l>QbZKvHFJfVHWiD`eP)h*<6ay3h000O8MnywZ000000ssI200000D*ylh0000000000q=D#10|0 +Poa4%nJZggdGZeeUMa%FRGY;|;LZ*DJaWoKbyc`sjIX>MtBUtcb8c~DCM0u%!j0000807gYaRL_y+Y_ +t>r0B}bD04o3h00000000000HlF4NCNc!JX>N37a&BR4FLGsbZ)|mRX>V>XY-ML*V|g!fWpi(Ac +4cxdaCuNm0Rj{Q6aWAK2mnS!LsS3&0006200000001ul0000000000005+cFkJ%xaA|NaUukZ1WpZv| +Y%g+Ub8l>QbZKvHFLGsbZ)|pDY-wUIUtei%X>?y-E^v8JO928D0~7!N00;m^MMG4>03zQ=1pokK6aWA +#00000000000001_fqz{C0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZC3Wb8l>RWo&6;FJfVHWiD`eP)h +*<6ay3h000O8MnywZIYhTA;1B=+wMPH|F#rGn0000000000q=67)0|0Poa4%nJZggdGZeeUMa%FRGY; +|;LZ*DJgWpi(Ac4cg7VlQK1Ze(d>VRU74E^v8JO928D0~7!N00;m^MMG4b%fsCW8~^}{ZU6u-000000 +00000001_fj@Ku0B~t=FJEbHbY*gGVQepQWpi(Ab#!TOZZC3Wb8l>RWo&6;FJ@t5bZ>HbE^v8JO928D +0~7!N00;m^MMG36)mp#21^@s_761S@00000000000001_fs>E}0B~t=FJEbHbY*gGVQepQWpi(Ab#!T +OZZC3Wb8l>RWo&6;FJ^CbZe(9$VQyq;WMOn=b1rasP)h*<6ay3h000O8MnywZ`I#??Aq@ZkyCwhtF8} +}l0000000000q=BTD0|0Poa4%nJZggdGZeeUMa%FRGY;|;LZ*DJgWpi(Ac4cg7VlQxVZ+2;9WpXZXc~ +DCM0u%!j0000807gYaRGWTqUlRiW0Nx1z051Rl00000000000HlEur2_zPX>c!JX>N37a&BR4FLGsbZ +)|mRX>V>Xa%FRGY<6XAX<{#OWpHnDbY*fbaCuNm0Rj{Q6aWAK2mnS!Lsb2v*0byc002)F001)p00000 +00000005+ca;O6UaA|NaUukZ1WpZv|Y%g+Ub8l>QbZKvHFLGsbZ)|pDY-wUIa%FLKX>w(4Wo~qHE^v8 +JO928D0~7!N00;m^MMG5n*Nt|54gdggEdT&700000000000001_fv>Ft0B~t=FJEbHbY*gGVQepQWpi +(Ab#!TOZZC3Wb8l>RWo&6;FLGsbZ)|pDaxQRrP)h*<6ay3h000O8MnywZ000000ssI2000009{>OV00 +00000000q=9<80|0Poa4%nJZggdGZeeUMb#!TLb1z?CX>MtBUtcb8c~DCM0u%!j0000807gYaR7!X`K +h^;N0QUm`02=@R00000000000HlGryaNDmX>c!JX>N37a&BR4FLiWjY;!MPY;R{SaCuNm0Rj{Q6aWAK +2mnS!LsSEDLc*5<004mo0015U0000000000005+c$i4#raA|NaUukZ1WpZv|Y%g_mX>4;ZVQ_F{X>xN +eaCuNm0Rj{Q6aWAK2mnS!LsaBrjcert003ME0012T0000000000005+co52GBaA|NaUukZ1WpZv|Y%g +_mX>4;ZV{dJ6VRSBVc~DCM0u%!j0000807gYaRJOE +c!JX>N37a&BR4FLiWjY;!MTZ*6d4bZKH~Y-x0PUvyz-b1rasP)h*<6ay3h000O8MnywZY!f}Mm;e9(@ +&Et;9{>OV0000000000q=9wJ0|0Poa4%nJZggdGZeeUMb#!TLb1!6JbY*mDZDlTSc~DCM0u%!j00008 +07gYaRM57?j!Xpr04ojv03rYY00000000000HlFR%>w{%X>c!JX>N37a&BR4FLiWjY;!MUWpHw3V_|e +@Z*DGdc~DCM0u%!j0000807gYaR3?t~UF`z^0EP?z04V?f00000000000HlG|(gOf+X>c!JX>N37a&B +R4FLiWjY;!MUX>w&_bYFFHY+q<)Y;a|Ab1rasP)h*<6ay3h000O8MnywZxg+o|3jzQD;RFBxB>(^b00 +00000000q=5?80|0Poa4%nJZggdGZeeUMb#!TLb1!6Rb98ldX>4;}VRC14E^v8JO928D0~7!N00;m^M +MG3ucU`$Y0{{S<2mk;d00000000000001_fmqoC0B~t=FJEbHbY*gGVQepTbZKmJFJ)(EUuOV0000000000q=D1i0|0Poa4%nJZggdGZeeUMb#!T +Lb1!9XV{c?>Zf7oVc~DCM0u%!j0000807gYaRN*EKlS2Xk03QSZ03rYY00000000000HlE)-va<}X>c +!JX>N37a&BR4FLiWjY;!MVZgg^aaBpdDbaO6nc~DCM0u%!j0000807gYaRL478-{%Mb00kES03iSX00 +000000000HlGT;R670X>c!JX>N37a&BR4FLiWjY;!MWX>4V4d2@7SZ7y(mP)h*<6ay3h000O8MnywZq +t#C>SOEY4%mM%aAOHXW0000000000q=Cok0|0Poa4%nJZggdGZeeUMb#!TLb1!CTY-MzLaAk8YaCuNm +0Rj{Q6aWAK2mnS!LsU}bJykCS001To000~S0000000000005+cUF-t@aA|NaUukZ1WpZv|Y%g_mX>4; +ZXKZO=V=i!cP)h*<6ay3h000O8MnywZ5m0CS*#-ar%Mt(p9RL6T0000000000q=Clq0|0Poa4%nJZgg +dGZeeUMb#!TLb1!INb7*CAE^v8JO928D0~7!N00;m^MMG5Ae-Wdi0RR9S0{{Rm00000000000001_f! +g>30B~t=FJEbHbY*gGVQepTbZKmJFKKRSWn*+-b7f<7a%FUKVQzD9Z*p`laCuNm0Rj{Q6aWAK2mnS!L +sTVeMYdQC0006l0015U0000000000005+c$NB>RaA|NaUukZ1WpZv|Y%g_mX>4;ZY;R|0X>MmOaCuNm +0Rj{Q6aWAK2mnS!LsW?GQMnKq007uW000{R0000000000005+cTL=UIaA|NaUukZ1WpZv|Y%g_mX>4; +ZZE163E^v8JO928D0~7!N00;m^MMG3Ov<$F!0RRB01ONaX00000000000001_futb>0B~t=FJEbHbY* +gGVQepTbZKmJFKusRWo&aUaCuNm0Rj{Q6aWAK2mnS!LsY>`t)tKb002A)001BW0000000000005+cRw +D!eaA|NaUukZ1WpZv|Y%g_mX>4;ZaA9L>VP|P>XD)DgP)h*<6ay3h000O8MnywZNDDTKpauW{6czvgC +jbBd0000000000q=9571ORYpa4%nJZggdGZeeUMb#!TLb1!pcbailaZ*OdKUt)D>Y-BEQc~DCM0u%!j +0000807gYaRHr~}smTif0Nx`203iSX00000000000HlFQE(8E@X>c!JX>N37a&BR4FLiWjY;!Mjbz*R +GZ)0V1b1rasP)h*<6ay3h000O8MnywZk42gj+X(;w?i~OC9{>OV0000000000q=8X71ORYpa4%nJZgg +dGZeeUMb#!TLb1!sdZE#;?X>u-bc~DCM0u%!j0000807gYaR6MD5oeT;90Lmf&03ZMW00000000000H +lFwL<9hEX>c!JX>N37a&BR4FLiWjY;!MlZg62^YiVw0E^v8JO928D0~7!N00;m^MMG46p^g_h0{{Tu1 +^@sX00000000000001_fwN8o0B~t=FJEbHbY*gGVQepTbZKmJFLiQkb1rasP)h*<6ay3h000O8MnywZ +T7j}BA_V{dgAD)xApigX0000000000q=6+;1ORYpa4%nJZggdGZeeUMb#!TLb1!yja&&cJY-MhCE^v8 +JO928D0~7!N00;m^MMG5X5-6xk1^@uX5dZ)j00000000000001_freKE0B~t=FJEbHbY*gGVQepTbZK +mJFL!8VWo#~Rc~DCM0u%!j0000807gYaR4=XG#V-K>08|110384T00000000000HlEnUIYMeX>c!JX> +N37a&BR4FLq;dFJE72ZfSI1UoLQYP)h*<6ay3h000O8MnywZCU|qpDFgrj=L-M;8vpc!JX>N37a&BR4FLq;dFK20VE^v8JO928D0~7!N00;m^MMG3k*WqpU1pok +c6aWAo00000000000001_fxvkL0B~t=FJEbHbY*gGVQepUV{V?0Z*FvQZ)`4bc~DCM0u%!j0000807gYaR9m9I0Vf6k0AvyX02crN00000000000HlFb +rvw0SX>c!Jc4cm4Z*nhRUukY>bYEXCaCuNm0Rj{Q6aWAK2mnS!LsX?KbkP4R0017n000#L000000000 +0005+cu&o3DaA|NaUv_0~WN&gWWNCABa&Inhc~DCM0u%!j0000807gYaRMPe2&jBF-0QH6d01^NI000 +00000000HlH9*#rP^X>c!Jc4cm4Z*nhlX?QMhc~DCM0u%!j0000807gYaRIdMFObc!Jc4cm4Z*nhmd2nfNXJ2J_bY*UHX>V?GE^v8JO928D0~7!N00;m^MMG4iD +qnCg0RRB-0RR9N00000000000001_fnYra0B~t=FJE?LZe(wAFLq^aWN&gVba-@7O928D0~7!N00;m^ +MMG4aP@N7C0RRBe0RR9b00000000000001_fy6!q0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gD5X>Mt +BUtcb8c~DCM0u%!j0000807gYaRMI`UkVFCi0AmFJ03ZMW00000000000HlEyKm`DBX>c!Jc4cm4Z*n +hVVPj}zV{dMBa&K%eUt?`#E^v8JO928D0~7!N00;m^MMG4R=}f=>1pol46951s00000000000001_ft +W%C0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gJCVQ_S1axQRrP)h*<6ay3h000O8MnywZW5YD7b^!nYl +>-0(ApigX0000000000q=DE-1pshqa4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PVPj}zE^v8JO928D0~7!N +00;m^MMG4kHL1E!0RR9B0{{Rb00000000000001_fsIN90B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gP +PZE#_9E^v8JO928D0~7!N00;m^MMG5D(q2t55dZ)QJpceE00000000000001_fgDT)0B~t=FJE?LZe( +wAFJob2Xk}w>Zgg^QY%gPPZgg^QY;0w6E^v8JO928D0~7!N00;m^MMG2wfxlfz1^@tR4*&os0000000 +0000001_fstJW0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gYMY-M+HVQ_F|axQRrP)h*<6ay3h000O8M +nywZN_1|4?F9e;IuHN=CIA2c0000000000q=6q~1pshqa4%nWWo~3|axY_HV`yb#Z*FvQZ)`7UWp#3C +b98BAb1rasP)h*<6ay3h000O8MnywZ!Lvl)(+B_ne;NP)B>(^b0000000000q=8Us1pshqa4%nWWo~3 +|axY_HV`yb#Z*FvQZ)`7fWpZg@Y-xIBE^v8JO928D0~7!N00;m^MMG4a5k_J%0RR970{{Rc00000000 +000001_fo5|B0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%h0mVQ_F|axQRrP)h*<6ay3h000O8MnywZmJ +(o3fB*mhssI20D*ylh0000000000q=DIV1pshqa4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PVPj}zb1z?CX +>MtBUtcb8c~DCM0u%!j0000807gYaRM?QYe@zAe0Gkj104)Fj00000000000HlGUbp-%$X>c!Jc4cm4 +Z*nhVVPj}zV{dMBa&K%eV_{=xWpgiPX>4U*V_{=xWiD`eP)h*<6ay3h000O8MnywZ9m|*ks{sH2tOEc +5E&u=k0000000000q=7no1pshqa4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PVPj}zb1!mbWNC9>V_{=xWiD +`eP)h*<6ay3h000O8MnywZ?(|7oKmY&$J^%m!9{>OV0000000000q=7Mh1pshqa4%nWWo~3|axY_La& +&2CX)j-2X>MtBUtcb8c~DCM0u%!j0000807gYaR4*W{;hq2h0RI3003QGV00000000000HlGgegyzc!Jc4cm4Z*nhVWpZ?BW@#^9Uu|J&ZeL$6aCuNm0Rj{Q6aWAK2mnS!LsT6gIv*f30s!$21OOfY00000 +00000005+ciGKwEaA|NaUv_0~WN&gWV`Xx5X=Z6JV_{=ua&#_mWo=MP0Rj{Q6aWAK2mnS!LsXaqs6C_ +v000;Z000{R0000000000005+c<+BF>aA|NaUv_0~WN&gWV`Xx5X=Z6JV{dY0E^v8JO928D0~7!N00; +m^MMG4h=VsG)1ONcX3;+Nh00000000000001_fx@^40B~t=FJE?LZe(wAFJow7a%5$6FJE72ZfSI1Uo +LQYP)h*<6ay3h000O8MnywZIlqJu?>PVf7J2{x9{>OV0000000000q=9z52LNzsa4%nWWo~3|axY_OV +RB?;bT49QXEkPWWpOTWc~DCM0u%!j0000807gYaRLkdQW;_D`0Nn-v03iSX00000000000HlGU_XhxQ +X>c!Jc4cm4Z*nhVXkl_>WppoMX=gQXa&KZ~axQRrP)h*<6ay3h000O8MnywZ;8`d=JqZ8+!z2IzCjbB +d0000000000q=6m#2LNzsa4%nWWo~3|axY_OVRB?;bT4CQVRB??b98cPVs&(BZ*DGdc~DCM0u%!j000 +0807gYaRK@A=1$P7h0RIjE04V?f00000000000HlGR1PB0dX>c!Jc4cm4Z*nhVXkl_>WppoNXkl`5Wp +rn9Z*_2Ra&KZ~axQRrP)h*<6ay3h000O8MnywZ;Fn=qzXt#S_7eaABme*a0000000000q=8)t2mo+ta +4%nWWo~3|axY_OVRB?;bT4CQVRCb2bZ~NSVr6nJaCuNm0Rj{Q6aWAK2mnS!LsVS*H%O!f000IK001cf +0000000000005+cUJ(cYaA|NaUv_0~WN&gWV`yP=WMyZfA3JVRU6}VPj}%Ze=cTc~DCM0u%! +j0000807gYaRM-q130eXG0I&oA0384T00000000000HlFQ7YG1wX>c!Jc4cm4Z*nhVXkl_>WppoNZ*6 +d4bS`jtP)h*<6ay3h000O8MnywZy+WEXXafKMKL-E+A^-pY0000000000q=DWU2mo+ta4%nWWo~3|ax +Y_OVRB?;bT4CYIW#$Na&KZ~axQRrP)h*<6ay3h000O8MnywZLgTaCuNm0Rj +{Q6aWAK2mnS!LsTF)#Ly}Q005;9001HY0000000000005+cK`aOWaA|NaUv_0~WN&gWV`yP=WMy008PV001BW0000000000005+ct1$=waA|NaU +v_0~WN&gWV`yP=WMy($`}r008Sy001EX0000000000005+ctBVK#aA|NaU +v_0~WN&gWV`yP=WMyc!Jc4cm4Z*nhVXkl_>WppoRVlp!^GH`NlVr6nJaCuNm0Rj{Q6aWAK2mnS!LsSh +Z)3TWo000g)001KZ0000000000005+c#I^_kaA|NaUv_0~WN&gWV`yP=WMypj00000000000001_fu6|-0B~t=FJE?LZe(wAFJow7a% +5$6FKTIXW^!e5E^v8JO928D0~7!N00;m^MMG2uc_nI26953aOaK5K00000000000001_f$#YU0B~t=F +JE?LZe(wAFJow7a%5$6FKTdOZghAqaCuNm0Rj{Q6aWAK2mnS!Lsa2Vh~7_0P}c!Jc4cm4Z*nhVXkl_>WppoWVQyz@_ua4%nWWo~3|ax +Y_OVRB?;bT4dSZf9s^Vsd47ZEs{{Y%XwlP)h*<6ay3h000O8MnywZ^MsNQb{hZyVvqp@_ua4%nWWo~3|axY_OVRB?;bT4dSZf9t9Zf9X~X<=?{Z)9a`E^v8JO928D0~7!N00;m^ +MMG5GI~BDfC;$L#00ICf00000000000001_fy#CX0B~t=FJE?LZe(wAFJow7a%5$6FKl6MXL5COb7^6 +2ZEs{{Y%XwlP)h*<6ay3h000O8MnywZH4xI3JsSW3kdpxbBme*a0000000000q=7P@2>@_ua4%nWWo~ +3|axY_OVRB?;bT4dSZfA68VQFn|WMynFaCuNm0Rj{Q6aWAK2mnS!LsT0t)-xC!007E%0RSfe0000000 +000005+cvAPKWaA|NaUv_0~WN&gWV`yP=WMy(|8Z)9a`E^v8JO928D0~7!N00;m^M +MG5N?C_+Q1^@v16aWAt00000000000001_fezOR0B~t=FJE?LZe(wAFJow7a%5$6FKl6SX>Kuaa&KZ~ +axQRrP)h*<6ay3h000O8MnywZHgy@_ua4%nWWo~3|axY_ +OVRB?;bT4gUV`yP=b7gdJa&KZ~axQRrP)h*<6ay3h000O8MnywZtxasvPW+y?*vCIA2c00000000 +00q=5(H2>@_ua4%nWWo~3|axY_OVRB?;bT4gUV{>P6Z*_2Ra&KZ~axQRrP)h*<6ay3h000O8MnywZY4 ++g{@_ua4%nWWo~3|axY_OVRB?;bT4gUV{>zDE^v8JO928D0 +~7!N00;m^MMG5ZpmKBa2LJ&07XSbz00000000000001_f!*^70B~t=FJE?LZe(wAFJow7a%5$6FLPpJ +Xkl`5Wpr?IZ(?O~E^v8JO928D0~7!N00;m^MMG4SRqtAX1polm5C8xs00000000000001_ffM`*0B~t +=FJE?LZe(wAFJow7a%5$6FLPpJb7yjIb#QQUZ(?O~E^v8JO928D0~7!N00;m^MMG59k!La>1polP4gd +fl00000000000001_f!F~G0B~t=FJE?LZe(wAFJow7a%5$6FLP>Xb8vERVr6nJaCuNm0Rj{Q6aWAK2m +nS!LsZ9$#)Eea007r8001Ze0000000000005+cHwOv;aA|NaUv_0~WN&gWV`yP=WMy(^b0000000000q=B&-3IK3va4%nWWo~3|axY_OVRB?;bT4CUX +)j}FVRB?;bY)|7E^v8JO928D0~7!N00;m^MMG2o00002000000000e00000000000001_fqx$g0B~t= +FJE?LZe(wAFJow7a%5$6FKuOXVPs)+VJ}}_X>MtBUtcb8c~DCM0u%!j0000807gYaR7|BhxWWc!Jc4cm4Z*nhVXkl_>WppoXWprU=VRT_HY+-I^bzx^^b1rasP)h +*<6ay3h000O8MnywZhKOs`vj6}9?*IS*AOHXW0000000000q=C>f3IK3va4%nWWo~3|axY_VY;SU5ZD +B88UukY>bYEXCaCuNm0Rj{Q6aWAK2mnS!LsU}Pt%iyN007zv000~S0000000000005+c!7~Z~aA|NaU +v_0~WN&gWV{dG4a$#*@FJW$TX)bViP)h*<6ay3h000O8MnywZ%fu1WaSH$d6)6A!BLDyZ0000000000 +q=AJu3IK3va4%nWWo~3|axY_VY;SU5ZDB8AZgXjLZ+B^KGcqo4c~DCM0u%!j0000807gYaR2y$aa)SZ +@0DA`j03rYY00000000000HlF8Lka+JX>c!Jc4cm4Z*nhVZ)|UJVQpbAX>MtBX<=+>b7d}Yc~DCM0u% +!j0000807gYaR0tak5l{sH02~zn0384T00000000000HlHXMG63LX>c!Jc4cm4Z*nhVZ)|UJVQpbAcW +G`jGA?j=P)h*<6ay3h000O8MnywZqA1qp?ganOV0000000000q=AJ?3IK3va4%nWWo~3|a +xY_VY;SU5ZDB8WX>N37a&0bfc~DCM0u%!j0000807gYaRK`g;@Ld4_07U`-03QGV00000000000HlGi +Q3?QXX>c!Jc4cm4Z*nhWX>)XJX<{#5UukY>bYEXCaCuNm0Rj{Q6aWAK2mnS!LsX$A#W+SQ001kY0012 +T0000000000005+cN>d5|aA|NaUv_0~WN&gWWNCABY-wUIV{dJ6VRSBVc~DCM0u%!j0000807gYaRG@ +HVFc!Jc4cm4Z*nhWX>)XJX<{#AVRT_)VRL0JaCuNm0R +j{Q6aWAK2mnS!LsT;9NX*t00009~000~S0000000000005+cVy_ASaA|NaUv_0~WN&gWWNCABY-wUIX +>Md?crI{xP)h*<6ay3h000O8MnywZDWQG*A2R>|`^o?S9{>OV0000000000q=9n83IK3va4%nWWo~3| +axY|Qb98KJVlQlOV_|e}a&sc!Jc4cm4Z*nhWX>)XJX<{#JVQy(=Wpi{caCuNm0Rj{Q6aWAK2mnS!LsXX{Ktu)y006=h001 +5U0000000000005+ccL)mraA|NaUv_0~WN&gWWNCABY-wUIZDDe2WpZ;aaCuNm0Rj{Q6aWAK2mnS!Ls +Z7pJy_!;007090018V0000000000005+cxep5faA|NaUv_0~WN&gWWNCABY-wUIZDn*}WMOn+E^v8JO +928D0~7!N00;m^MMG4bz14uQ3jhE_DgXc=00000000000001_f!Q<*0B~t=FJE?LZe(wAFJx(RbZlv2 +FLGsbZ*_8GWpgfYc~DCM0u%!j0000807gYaRLAs1xfvAz060Ye03HAU00000000000HlG(KnnnHX>c! +Jc4cm4Z*nhWX>)XJX<{#PV{&P5baO6nc~DCM0u%!j0000807gYaR6tj{#RIwk004Rc02=@R00000000 +000HlE&Rto@dX>c!Jc4cm4Z*nhWX>)XJX<{#QGcqn^cx6ya0Rj{Q6aWAK2mnS!LsSsWF9jnz0RRBP0s +tQX0000000000005+cSP%>VaA|NaUv_0~WN&gWWNCABY-wUIbT%|CVRCIQWq4&!O928D0~7!N00;m^M +MG3OK501m$p8QVpaB3I00000000000001_fw)Tz0B~t=FJE?LZe(wAFJx(RbZlv2FLX9EE@gOSP)h*< +6ay3h000O8MnywZ4W$)bqDKG#)&c2ZVc~DCM0u%!j0000807gYaRHvmf<9-c!Jc4cm4Z*n +hWX>)XJX<{#SWpZX>c!Jc4cm4Z*nhWX>)XJX<{#TGcqn^cx6ya0Rj{Q6aWAK2mnS!LsSSZq|JjW0RRAs0stQX000000 +0000005+czbFp?aA|NaUv_0~WN&gWWNCABY-wUIcQ!OFVRCIQWq4&!O928D0~7!N00;m^MMG5L=|v-1 +!2kdNiU9x{00000000000001_fqzpF0B~t=FJE?LZe(wAFJx(RbZlv2FLyRHE@gOSP)h*<6ay3h000O +8MnywZwEh;b3n>5qzo!5I8~^|S0000000000q=69?5dd&$a4%nWWo~3|axY|Qb98KJVlQ`SWo2wGaCu +Nm0Rj{Q6aWAK2mnS!LsW^EZ>U59004*t001BW0000000000005+cRz48`aA|NaUv_0~WN&gWXmo9CHE +d~OFJE72ZfSI1UoLQYP)h*<6ay3h000O8MnywZ%BL;iEffF%SU~^)ApigX0000000000q=DE#5dd&$a +4%nWWo~3|axZ9fZEQ7cX<{#5X=q_|Wq56DE^v8JO928D0~7!N00;m^MMG4IHW57z9{>PhegFU@00000 +000000001_fkagi0B~t=FJE?LZe(wAFKBdaY&C3YVlQ85Zg6#Ub98cLVQnsOc~DCM0u%!j0000807gY +aR5cFZZBHEl0PrjU03rYY00000000000HlGGbP)h>X>c!Jc4cm4Z*nhabZu-kY-wUIUvzJ4Wo~JDWpX +ZXc~DCM0u%!j0000807gYaRF2b$N!c!Jc4cm4Z*nhabZ +u-kY-wUIUv+e8Y;!Jfc~DCM0u%!j0000807gYaR9i9wCO}9400>3_03iSX00000000000HlFDnGpbRX +>c!Jc4cm4Z*nhabZu-kY-wUIV{dMAbYX6Eb1rasP)h*<6ay3h000O8MnywZv8%nG-$Vca!pQ*uBLDyZ +0000000000q=CEP5dd&$a4%nWWo~3|axZ9fZEQ7cX<{#EbZu-kaA9(DWpXZXc~DCM0u%!j0000807gY +aRETrg;kpn20FONY03rYY00000000000HlH2CK3Q}X>c!Jc4cm4Z*nhabZu-kY-wUIb7gXAVQgu7WpX +ZXc~DCM0u%!j0000807gYaRMO>LR9XN40BryO044wc00000000000HlG{HxdAFX>c!Jc4cm4Z*nhabZ +u-kY-wUIUvzS5WiMY}X>MtBUtcb8c~DCM0u%!j0000807gYaR2drQfu;cf0QCa^03!eZ00000000000 +HlF)I1&JGX>c!Jc4cm4Z*nhabZu-kY-wUIUvzS5WiMZ1VRL0JaCuNm0Rj{Q6aWAK2mnS!LsUyoZq6M7 +008d>001BW0000000000005+cS~?N{aA|NaUv_0~WN&gWXmo9CHEd~OFJE+WX=N{Pc`k5yP)h*<6ay3 +h000O8MnywZ000000ssI200000C;$Ke0000000000q=B_O5&&>%a4%nWWo~3|axZ9fZEQ7cX<{#CX>4 +?5a&s?VUukY>bYEXCaCuNm0Rj{Q6aWAK2mnS!LsWpU1Q5aj005T*001@s0000000000005+c{X7x?aA +|NaUv_0~WN&gWXmo9CHEd~OFJ@_MbY*gLFJWwOXklVybZKK@Y+-bCa%p09bY*icaCuNm0Rj{Q6aWAK2 +mnS!LsTMw`^1$10015V001Na0000000000005+c6F(9FaA|NaUv_0~WN&gWXmo9CHEd~OFJ@_MbY*gL +FJfVHWiD`eP)h*<6ay3h000O8MnywZ^T0nB76SkPfeQctGXMYp0000000000q=D)`5&&>%a4%nWWo~3 +|axZ9fZEQ7cX<{#CX>4?5a&s?fZfa#?bYE>{bYWj(Xkl`5WpplZc~DCM0u%!j0000807gYaRFctTplk +yG06Pu<03-ka00000000000HlFYLlOXRX>c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bY-w(EE^v8JO9 +28D0~7!N00;m^MMG2c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bb75|2bZL5JaxQRrP)h*<6ay3h000O8Mnyw +ZU~>Nt^#K3?z61aODgXcg0000000000q=9~B5&&>%a4%nWWo~3|axZ9fZEQ7cX<{#CX>4?5a&s?tXlZ +n1b8ul}WiD`eP)h*<6ay3h000O8MnywZo;h(^X8`~Jrvd-~EdT%j0000000000q=CC=5&&>%a4%nWWo +~3|axZ9fZEQ7cX<{#Qa%E*?y-E^v8JO928D0~7!N00;m^MMG3lj1ehR0ssKB1 +^@sn00000000000001_fo*CM0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo2PxVQ_S1a&s?dWo~n5X)bVi +P)h*<6ay3h000O8MnywZfN80hL;?T+@CE%a4%nWWo~3|axZ9fZEQ7 +cX<{#Qa%E*MtBUtcb8c~DCM0u%!j0000807 +gYaR6agv{PGR}0OdFU04V?f00000000000HlF3brJw@X>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs&Y3W +My)5FJfVHWiD`eP)h*<6ay3h000O8MnywZPz0y3{|5j7-68-0C;$Ke0000000000q=9RM5&&>%a4%nW +Wo~3|axZ9fZEQ7cX<{#Qa%E*=b!lv5WpZ;bWN&RQaCuNm0Rj{Q6aWAK2mnS!LsU(z(1%hA001O1001f +g0000000000005+cu#6G_aA|NaUv_0~WN&gWXmo9CHEd~OFLZKcWny({Y-D9}b1!9da%E*MaCuNm0Rj +{Q6aWAK2mnS!LsYRDw}2TA006Ez001ul0000000000005+cN|zDMtBUtcb8c~DCM0u%!j00008 +07gYaR3Rc!Jc4cm4Z*nhabZu-kY-wUIbaG{7cVTR +6WpZ;bVqtS-E^v8JO928D0~7!N00;m^MMG3&if^g+0RRAn1poji00000000000001_f%UTz0B~t=FJE +?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1!6XZ7y(mP)h*<6ay3h000O8MnywZ*3ZX7>jVG*#}NPkDF +6Tf0000000000q=7NE5&&>%a4%nWWo~3|axZ9fZEQ7cX<{#Qa%E+AVQgz<{p00000000000001 +_fhfWf0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1!FQZgXg9E^v8JO928D0~7!N00;m^MMG +4Dc)F+@0RR9|0{{RV00000000000001_fjGqy0B~t=FJE?LZe(wAFKJ|MVJ}}_X>MtBUtcb8c~DCM0u +%!j0000807gYaRAn&sGa&;204@yx02u%P00000000000HlGA#u5Nc!Jc4cm4Z*nhbWNu+EV{c?-V +=i!cP)h*<6ay3h000O8MnywZMW+W2zyJUMK>+{&8UO$Q0000000000q=Dwi5&&>%a4%nWWo~3|axZCQ +ZecHDZ*6d4bS`jtP)h*<6ay3h000O8MnywZpUUp%uL}SG`!N6j7ytkO0000000000q=DYb5&&>%a4%n +WWo~3|axZCQZecHDZ*pZWaCuNm0Rj{Q6aWAK2mnS!LsZhlg4n?%008-`000~S0000000000005+c!`2 +c2aA|NaUv_0~WN&gWX=H9;FKJ|MVPs)+VJ>iaP)h*<6ay3h000O8MnywZ92|gCAp-yaSqA_B9RL6T00 +00000000q=CNs5&&>%a4%nWWo~3|axZCQZecHJZgg^CZf9k4E^v8JO928D0~7!N00;m^MMG4K#Q$Cw0 +000L0000W00000000000001_fg1l30B~t=FJE?LZe(wAFKJ|MVJ~oDV{2h&WnW}rbYU)Vc~DCM0u%!j +0000807gYaRCJnn{`Hyw0B{}y0384T00000000000HlF${}KRjX>c!Jc4cm4Z*nhbWNu+Eb#!wyHe_L +RVJ>iaP)h*<6ay3h000O8MnywZjVD)F-~j*tUIYLD9{>OV0000000000q=BEB698~&a4%nWWo~3|axZ +OjXK-O-YcF44X>MtBUtcb8c~DCM0u%!j0000807gYaR0fi5#ufko02BZK03QGV00000000000HlGuoD +%?WX>c!Jc4cm4Z*nhfb7yd2V{0#8c4cyNX>V>WaCuNm0Rj{Q6aWAK2mnS!LsUCEoztxW0021z001EX0 +000000000005+c51kVLaA|NaUv_0~WN&gWZF6UEVPk7AWq4y{aCB*JZgVbhc~DCM0u%!j0000807gYa +REhtqJOBp(0LT{r02%-Q00000000000HlHYo)Z9YX>c!Jc4cm4Z*nhfb7yd2V{0#Ecyumsc~DCM0u%! +j0000807gYaRBcnb-Qyep0IP-o03QGV00000000000HlF4rV{{gX>c!Jc4cm4Z*nhfb7yd2V{0#FVQg +$-VPk79aCuNm0Rj{Q6aWAK2mnS!LsUlLV;*J!005N&001HY0000000000005+cQ^OMgaA|NaUv_0~WN +&gWaA9L>VP|P>XD?r0VPbD}bYEXCaCuNm0Rj{Q6aWAK2mnS!LsS*5lA!be008j;001EX00000000000 +05+c`NR_daA|NaUv_0~WN&gWaA9L>VP|P>XD?r0X>MtBUtcb8c~DCM0u%!j0000807gYaR2wQfV~7p_ +0N^YD03!eZ00000000000HlE|#uET=X>c!Jc4cm4Z*nhiVPk7yXK8L{FJEn8Zh35JZgqGraCuNm0Rj{ +Q6aWAK2mnS!LsXq~F&Z!j000^h001KZ0000000000005+c_0$spaA|NaUv_0~WN&gWaA9L>VP|P>XD? +rEb#rWNX>N6RE^v8JO928D0~7!N00;m^MMG3Dqwc!Jc4cm4Z*nhiVPk7yXK8L{FKuCRYh`kCE^v8JO928D0~7!N00;m^MMG3> +lR;YY1^@s=5&!@t00000000000001_fx+k#0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rYWpQVP|P>XD@SbWn*b(X=QSAE^v8JO928D0~7!N00;m^MMG4&32k$X5dZ*FJpce500000000000001_fg +cML0B~t=FJE?LZe(wAFK}UFYhh<;Zf7raVP|tLaCuNm0Rj{Q6aWAK2mnS!LsUWY=rhg*003wZ0015U0 +000000000005+c<{T6NaA|NaUv_0~WN&gWaA9L>VP|P>XD@YhX>4;YaCuNm0Rj{Q6aWAK2mnS!LsSbg +3#IQ5002oj001BW0000000000005+c@FEldaA|NaUv_0~WN&gWaA9L>VP|P>XD@bTa&u{KZZ2?nP)h* +<6ay3h000O8MnywZf}TR^cK`qYf&c&j9smFU0000000000q=6kX6aa8(a4%nWWo~3|axZXYa5XVEFJE +72ZfSI1UoLQYP)h*<6ay3h000O8MnywZ`#uL!Cg6aa8(a4%nWWo +~3|axZXYa5XVEFJg6RY-BEQc~DCM0u%!j0000807gYaRCA@93&I5e0K^vn02=@R00000000000HlF2I +TQeJX>c!Jc4cm4Z*nhiWpFhyH!ovoWn*hDaCuNm0Rj{Q6aWAK2mnS!LsSj1R?vzD0006I0015U00000 +00000005+cEI$+gaA|NaUv_0~WN&gWaAj~cF*h$`Z)|UJY;R{SaCuNm0Rj{Q6aWAK2mnS!LsX9or!~m +|0089#000~S0000000000005+c@8Lb1 +rasP)h*<6ay3h000O8MnywZ6!aqg7zh9W)E58%9smFU0000000000q=5iR6aa8(a4%nWWo~3|axZXYa +5XVEFJ*3aVs&Y3WG--dP)h*<6ay3h000O8MnywZm%HiS(E|Vgp9uf}8UO$Q0000000000q=8gY6aa8( +a4%nWWo~3|axZXYa5XVEFKuOXVJ>iaP)h*<6ay3h000O8MnywZ7FBqL-3$N#bu<6~9smFU000000000 +0q=8*l6aa8(a4%nWWo~3|axZXYa5XVEFL!cbaByXEb1rasP)h*<6ay3h000O8MnywZq8!=?Bmn>bGXe +krDF6Tf0000000000q=9y06aa8(a4%nWWo~3|axZXYa5XVEFKKRHaB^>BWpi^cUtei%X>?y-E^v8JO9 +28D0~7!N00;m^MMG4y6C&P73jhGYD*ym200000000000001_f#GBn0B~t=FJE?LZe(wAFK}gWH8D3YX +>MO|a&Kd0b8|0WX>MO|a&Kd0b8{|mc~DCM0u%!j0000807gYaRKSucoy2nh0RN@|03`qb0000000000 +0HlF)a1;P=X>c!Jc4cm4Z*nhiYiD0_Wpi(Ja${w4FJE72ZfSI1UoLQYP)h*<6ay3h000O8MnywZVI%| +AO921?G6DbqCjbBd0000000000q=98Quf{0E96B03-ka00000000000HlEm<`e*MX>c!Jc4cm4Z*nhiY+ +-a}Z*py9X>xNfUtei%X>?y-E^v8JO928D0~7!N00;m^MMG4O>1$PQ0RRA)1ONae00000000000001_f +hy}10B~t=FJE?LZe(wAFK}#ObY^dIZDeV3b1z?CZDDC{Utcb8c~DCM0u%!j0000807gYaRL{fMi%$dq +0IUxH03!eZ00000000000HlH2>=XcSX>c!Jc4cm4Z*nhiY+-a}Z*py9X>xNfVQyq{Z)s#MaCuNm0Rj{ +Q6aWAK2mnS!LsS04Es$03!eZ00000000000HlH402KgmX>c!Jc4cm4Z*nhiY+-a}Z*py9X>x +NfcWG{9Z+CMpaCuNm0Rj{Q6aWAK2mnS!LsSym&@Tc9006EO001BW0000000000005+ccnB2$aA|NaUv +_0~WN&gWaB^>Fa%FRKFJE72ZfSI1UoLQYP)h*<6ay3h000O8MnywZ?nCll#smNWehUBq8vpc!Jc4cm4Z*nhia&KpHWpi^cV{dG4a&ssP-08It}03QGV00000000000HlFe85ICc!Jc4cm4Z*nhia&KpHWpi^cV{dhCbY*fbaCu +Nm0Rj{Q6aWAK2mnS!LsaC~_UbMJ006ZG0018V0000000000005+cu^bfuaA|NaUv_0~WN&gWaB^>Fa% +FRKFLQ8dZf<3AE^v8JO928D0~7!N00;m^MMG4GZ0&N91ONcK3jhEh00000000000001_fgB(e0B~t=F +JE?LZe(wAFK~HhZDnqBb1z?CX>MtBUtcb8c~DCM0u%!j0000807gYaRCLSF{^|e#0AT?D03ZMW00000 +000000HlHIBozQ~X>c!Jc4cm4Z*nhid1q~9Zgg`mUteuuX>MO%E^v8JO928D0~7!N00;m^MMG50@%v_ +D7XScoTL1tb00000000000001_ffFVb0B~t=FJE?LZe(wAFK~HhZDnqBb1!3UWNc|}WiD`eP)h*<6ay +3h000O8MnywZ(`gXgkOBYzp#}f|9{>OV0000000000q=Bc!Jc4cm4Z +*nhid1q~9Zgg`mW@&76WpXZXc~DCM0u%!j0000807gYaRI$hbUz!8}0A&jR03iSX00000000000HlGu +LlppUX>c!Jc4cm4Z*nhid1q~9Zgg`mW^ZzBVRUq5axQRrP)h*<6ay3h000O8MnywZ&S7cKP9XpQ!F&J +!9RL6T0000000000q=A)46##H)a4%nWWo~3|axZXsXKiI}baO9kWq4(BE^v8JO928D0~7!N00;m^MMG +4sB^XiP0RRBn0{{RZ00000000000001_fgWlV0B~t=FJE?LZe(wAFK~HhZDnqBb1!XgWMyn=Ze=cTc~ +DCM0u%!j0000807gYaR15F-q*DR_0KWzR03HAU00000000000HlFCY!v`-X>c!Jc4cm4Z*nhid1q~9Z +gg`maBOvFX>KlXc~DCM0u%!j0000807gYaRCdGa6-)#G000aC03ZMW00000000000HlG+ZWRDc!J +c4cm4Z*nhid1q~9Zgg`ma%E>_cyDlYE^v8JO928D0~7!N00;m^MMG5Wv`PAa1ONaN3;+Nh000000000 +00001_fmCx90B~t=FJE?LZe(wAFK~HhZDnqBb1!paVQy|^axQRrP)h*<6ay3h000O8MnywZl<_qzUIh +RE77_peApigX0000000000q=6B56##H)a4%nWWo~3|axZXsXKiI}baO9raA;|6cx8BWE^v8JO928D0~ +7!N00;m^MMG2zijwc31^@tY7ytkr00000000000001_fv$ZO0B~t=FJE?LZe(wAFK~HhZDnqBb1!prd +2D4aaCuNm0Rj{Q6aWAK2mnS!Lsa+{lo)RZ0093N0012T0000000000005+ciG&pZaA|NaUv_0~WN&gW +aCv8KWo~qHFLZBfWo|BTc~DCM0u%!j0000807gYaR1sE+q_#`|0MzyX03iSX00000000000HlF4j1>T +IX>c!Jc4cm4Z*nhid1q~9Zgg`mb#7^MbaH8KXD)DgP)h*<6ay3h000O8MnywZGF-YT-3tH!qay$S8~^ +|S0000000000q=6{e6##H)a4%nWWo~3|axZXsXKiI}baO9tbZKlZaCuNm0Rj{Q6aWAK2mnS!LsTMU9m +Itn003m2001Ze0000000000005+cKjjqwaA|NaUv_0~WN&gWaCv8KWo~qHFJ@_MbY*gLFJE72ZfSI1U +oLQYP)h*<6ay3h000O8MnywZZx+Yzf(8Hp{}TWJD*ylh0000000000q=5MtBUtcb8c~DCM0u%!j0000807gYaR8}aRxQ++_0CX7u04o3h0000 +0000000HlG{3l;!yX>c!Jc4cm4Z*nhid1q~9Zgg`mW^ZzBVRUq5a&s?VZDDY5X>MmOaCuNm0Rj{Q6aW +AK2mnS!LsYTMpk8|f008m~001cf0000000000005+ctP~aiaA|NaUv_0~WN&gWaCv8KWo~qHFJ^CYZD +DkDWpZ;bVq#-&WMwXJc~DCM0u%!j0000807gYaRQYb&XZ-~L0F4s>04M+e00000000000HlF#85RI=X +>c!Jc4cm4Z*nhid1q~9Zgg`mW^ZzBVRUq5a&s?da&Km4E^v8JO928D0~7!N00;m^MMG2o5812WB>(^d +iU0s700000000000001_fw3PJ0B~t=FJE?LZe(wAFK~HhZDnqBb1!CZa&2LBbY*gLFKBdaY%XwlP)h* +<6ay3h000O8MnywZd4P2MxCIA2c0000000000q=D8&765Q*a4%nWWo~3|axZXsXKiI}baO +9eZ*py6baZ8Mb1!LaXD)DgP)h*<6ay3h000O8MnywZS5%?VDF*-m?-l?6CIA2c0000000000q=9f-76 +5Q*a4%nWWo~3|axZXsXKiI}baO9eZ*py6baZ8Mb1!LfV=i!cP)h*<6ay3h000O8MnywZg8;E8>J9765Q*a4%nWWo~3|axZXsXKiI}baO9eZ*py6baZ8Mb +1!mqW-f4fP)h*<6ay3h000O8MnywZs`-R{#0dZZryKwPCIA2c0000000000q=8L}765Q*a4%nWWo~3| +axZXsXKiI}baO9eZ*py6baZ8Mb1!ptXD)DgP)h*<6ay3h000O8MnywZx5@m9Oa=e|LJ|M~D*ylh0000 +000000q=8kG765Q*a4%nWWo~3|axZXsXKiI}baO9eZ*py6baZ8Mb1!sda&2jDVQemNc~DCM0u%!j000 +0807gYaRH2A5O6>~(0O>6N04@Lk00000000000HlHHnic?XX>c!Jc4cm4Z*nhid1q~9Zgg`mW^ZzBVR +Uq5a&s?qWpZt4ZeeUPH8w7Ac~DCM0u%!j0000807gYaREN;^9FYtF04pp204D$d00000000000HlEc!Jc4cm4Z*nhid1q~9Zgg`mY-M<5a&s?VUukY>bYEXCaCuNm0Rj{Q6aWAK2mnS!LsYKHi2aQ^ +0058?0RSfe0000000000005+c`Lh-PaA|NaUv_0~WN&gWaCv8KWo~qHFKlIaWpZ;bUu|J?y-E^v8JO928D0~7!N00;m^MMG3&&TrUZ4 +FCX>BLDy)00000000000001_futT60B~t=FJE?LZe(wAFK~HqVRCb6Zf7rFUukY>bYEXCaCuNm0Rj{Q +6aWAK2mnS!LsTFHVQEST0012s001BW0000000000005+cL@XBoaA|NaUv_0~WN&gWaCvZHa&u{JXD?x +6bZKvHb1rasP)h*<6ay3h000O8MnywZiREQ}=MDe>h%x{G9{>OV0000000000q=C#d7XWZ+a4%nWWo~ +3|axZXsaA9(DX>MmPV{dJ3Z*DGdc~DCM0u%!j0000807gYaRK<4R2ynar02n<30384T00000000000H +lHNLl*#WX>c!Jc4cm4Z*nhid2nHJb7^j8FJo_VWiD`eP)h*<6ay3h000O8MnywZbV3a&&I$kkMk4?KB +LDyZ0000000000q=B0N7yxi-a4%nWWo~3|axZXsaA9(DX>MmPWq4y{aCB*JZgVbhc~DCM0u%!j00008 +07gYaRH+>QDoiT?0GpKn03ZMW00000000000HlGc3m5=!X>c!Jc4cm4Z*nhid2nHJb7^j8FKA_KaAk6 +HE^v8JO928D0~7!N00;m^MMG57?|fVd82|wLVgLXj00000000000001_fiyQ50B~t=FJE?LZe(wAFK~ +HqVRCb6Zf7rYWpj0GbaO6nc~DCM0u%!j0000807gYaRMg4#I$R9^08BIh03ZMW00000000000HlF?P# +6GkX>c!Jc4cm4Z*nhid2nHJb7^j8FLY&dbZKs9E^v8JO928D0~7!N00;m^MMG5U`6vv~3IG6&C;$K;0 +0000000000001_ffZgD0B~t=FJE?LZe(wAFK~HqVRCb6Zf7rbZfRq0WMwXJc~DCM0u%!j0000807gYa +R4qsTZ0-jD0F@d50384T00000000000HlEc!Jc4cm4Z*nhid2nHJb7^j8FLiWjY%XwlP)h* +<6ay3h000O8MnywZeKX%aychrgl~w=%DF6Tf0000000000q=8Iv7yxi-a4%nWWo~3|axZXsaA9(DX>M +mPWNBe%a$#*RUtei%X>?y-E^v8JO928D0~7!N00;m^MMG43BoeZA2LJ#H6aWAq00000000000001_fl +rDU0B~t=FJE?LZe(wAFLGsZb!BsOb1z?CX>MtBUtcb8c~DCM0u%!j0000807gYaRPcH>1P1{C0J#AG0 +3!eZ00000000000HlEfk{AGRX>c!Jc4cm4Z*nhkWpQ<7b98erUte}*a&u{KZeL$6aCuNm0Rj{Q6aWAK +2mnS!LsW>VIlB}B002k?001Wd0000000000005+cOOqG?aA|NaUv_0~WN&gWa%FLKWpi|MFJEbHbY*g +GVQgP@bZKmJE^v8JO928D0~7!N00;m^MMG4c!Jc4cm4Z*nhkWpQ<7b98erVQ^_KaCuNm0Rj{Q6aWAK2mnS!LsYx8i7Rsp007@70 +00~S0000000000005+cKCu`8aA|NaUv_0~WN&gWa%FLKWpi|MFJX0bXfAMhP)h*<6ay3h000O8MnywZ +g0iB|E&%`l(E$Je9RL6T0000000000q=Dc!Jc4cm4Z*nhkWpQ<7b9 +8erZEs{{Y;!Jfc~DCM0u%!j0000807gYaR1!SifolN(0Jj1F03ZMW00000000000HlE^2pIryX>c!Jc +4cm4Z*nhkWpQ<7b98eraA9L>VP|D?E^v8JO928D0~7!N00;m^MMG2$zvA^5Apii2bN~P#0000000000 +0001_fzb&W0B~t=FJE?LZe(wAFLGsZb!BsOb1!pcb8~5LZgVbhc~DCM0u%!j0000807gYaR6WbzdW{A +E09+6N03-ka00000000000HlE?D;WTAX>c!Jc4cm4Z*nhkWpQ<7b98erb97;Jb#q^1Z)9b2E^v8JO92 +8D0~7!N00;m^MMG2wjkVu=1ONcN3jhEj00000000000001_f%P#N0B~t=FJE?LZe(wAFLGsZb!BsOb1 +!pra&=>Lb#i5ME^v8JO928D0~7!N00;m^MMG2<+2}xZDF6T!f&c&=00000000000001_fw49j0B~t=F +JE?LZe(wAFLGsZb!BsOb1!vtX>4;YaCuNm0Rj{Q6aWAK2mnS!Lsae8YwXql000>R001HY0000000000 +005+cVPF{maA|NaUv_0~WN&gWa%FRGY<6XAX<{#5UukY>bYEXCaCuNm0Rj{Q6aWAK2mnS!LsTDSyAL! +6008h7001KZ0000000000005+ccVQU-aA|NaUv_0~WN&gWa%FRGY<6XAX<{#Ma&LBNWMy)5E^v8JO92 +8D0~7!N00;m^MMG4jN75xK0ssIn1^@sf00000000000001_f$V4*0B~t=FJE?LZe(wAFLGsbZ)|pDY- +wUIa%FIDa&%>Kb1rasP)h*<6ay3h000O8MnywZ8y=={LlOW0xI_Q|BLDyZ0000000000q=8p!831r;a +4%nWWo~3|axZdab8l>RWo&6;FLGsbZ)|pDa&sc!Jc4cm4Z*nhkWpi(Ac4cg7VlQ)aa&=>Lb1rasP)h*<6ay3h000O8Mnyw +Z000000ssI200000DF6Tf0000000000q=9XN831r;a4%nWWo~3|axZdab8l>RWo&6;FJo_QaA9;WUte +i%X>?y-E^v8JO928D0~7!N00;m^MMG2@*Dhyc0001-0000m00000000000001_fwqGg0B~t=FJE?LZe +(wAFLGsbZ)|pDY-wUIV{dJ6VRSEJZ)|L3V{~b6ZgXE@Vq-3Fc~DCM0u%!j0000807gYaRKxl`YncZC0 +IU`O02}}S00000000000HlFugc$&EX>c!Jc4cm4Z*nhkX=7+FUtei%X>?y-E^v8JO928D0~7!N00;m^ +MMG5euS(W_3;+OXA^-p!00000000000001_fjW#C0B~t=FJE?LZe(wAFLG&PXfI!1ZDDC{Utcb8c~DC +M0u%!j0000807gYaRNupZ7B>n20B|P&03ZMW00000000000HlHPm>B?YX>c!Jc4cm4Z*nhkX=7+FUt? +u#Y+rY2WOQhAE^v8JO928D0~7!N00;m^MMG47F7ALVaR30zBLV;*00000000000001_foG!`0B~t=FJ +E?LZe(wAFLG&PXfI!7ZEtF6Ut@1%WpgfYc~DCM0u%!j0000807gYaRO5N?xz+&y04M|i03rYY000000 +00000HlG@6dC|c!Jc4cm4Z*nhkX=7+FUuA7?YH43`WpHd^V`VOIc~DCM0u%!j0000807gYaR7upg ++nWFY00{vA03HAU00000000000HlHE78(F>X>c!Jc4cm4Z*nhkX=7+FUuAf7Wo~n6Z*DGdc~DCM0u%! +j0000807gYaRP3p5O02Cbn02}}S00000000000HlGw7a9O?X>c!Jc4cm4Z*nhkX=7+FUukZ0aAj +k3E^v8JO928D0~7!N00;m^MMG2;tL7WG0{{S-3;+Nh00000000000001_flDA70B~t=FJE?LZe(wAFL +G&PXfI!EZ)aa}Wo~3;axQRrP)h*<6ay3h000O8MnywZx)16eB>?~c)C2$k82|tP0000000000q=7#q8 +US!P0000000000005+cwJaI{aA|NaUv_0~WN&gWa%p2|FJEwJV{0yOc~DCM0u +%!j0000807gYaQ~>FhWYh)#0ALjW02%-Q00000000000HlGc!Jc4cm4Z*nhkX=7+FUvgn|X +>TrYc~DCM0u%!j0000807gYaR7gc!D}oOI0GVe10384T00000000000HlH0G#UVKX>c!Jc4cm4Z*nhk +X=7+FUvqG2Zf<3Ab1rasP)h*<6ay3h000O8MnywZ=1~*U+yDRoUjYCB8UO$Q0000000000q=A-18US! +K~P0000000000005+c{Ye@CaA|NaUv_0~WN&gWa%p2|FJE_ZVQ?;Rc~DCM0u%!j00008 +07gYaR1RxJQH=or0D1!e02crN00000000000HlGqOd0@iX>c!Jc4cm4Z*nhkX=7+FVPa!0aCuNm0Rj{ +Q6aWAK2mnS!LsYt3hlITd006lt000>P0000000000005+cdQKVuaA|NaUv_0~WN&gWa%p2|FJWwHXKp +TVc~DCM0u%!j0000807gYaRL!w0{dorf02CSk02lxO00000000000HlF#R~i6tX>c!Jc4cm4Z*nhkX= +7+FVQzD2E^v8JO928D0~7!N00;m^MMG4|?%gL_1ONcQ3;+NZ00000000000001_fgN8O0B~t=FJE?LZ +e(wAFLG&PXfI-6axQRrP)h*<6ay3h000O8MnywZpz#m@hzS4yZ6g2x7XSbN0000000000q=Btt8US!< +a4%nWWo~3|axZdeV`wj8Z+I?nc~DCM0u%!j0000807gYaR8P6>61@cg0KE_Z02u%P00000000000HlF +xZ5jY@X>c!Jc4cm4Z*nhkX=7+FV`Xe?b1rasP)h*<6ay3h000O8MnywZjUgb*`4IpBg+l-U82|tP000 +0000000q=8;@8US!<20B~t=FJE?LZe(wAFLG&PXfI= +LZgX#JWiD`eP)h*<6ay3h000O8MnywZi%il<-T?pr2n7HD9RL6T0000000000q=CED8US!Z*yfXaCuNm0Rj{Q6aWAK2mnS!LsZ}m2SxY;006}a000>P0000000000005+c4D1>JaA|NaUv_0~WN +&gWa%p2|FJ*0SYH2QTc~DCM0u%!j0000807gYaR3bc!Jc4cm4Z*nhkX=7+FWpZ+Fa&sc!Jc4cm4Z*nhkX=7+FW@&6?UvP47czG^xc~DCM0u%!j0000807gYaR8jt7FhB$V0M7{ +k02}}S00000000000HlEx^cnzgX>c!Jc4cm4Z*nhkX=7+FW@&6?b7^{IE^v8JO928D0~7!N00;m^MMG +3uwZU6B1^@sa6951o00000000000001_fsgna0B~t=FJE?LZe(wAFLG&PXfJ4KXJ~9`XJ~X~axQRrP) +h*<6ay3h000O8MnywZpAoyAuEa7ytkO0000000000q=5wg8US!c!Jc4cm4Z*nhkX=7+FY-x67Uvgz`WMy(LaCuNm0Rj{Q6aWAK2mnS!LsT>c0 +|m<|k9{>Ov00000000000001_fyXu*0B~t=FJE?LZe(wAFLG&PXfJJHa%**PE^v8 +JO928D0~7!N00;m^MMG3+f(T7h1pokw6aWAl00000000000001_fz3c00B~t=FJE?LZe(wAFLG&PXfJ +JLVRLnIWiD`eP)h*<6ay3h000O8MnywZ>4)D7;{^Z!Y7+ne8vpc!Jc4cm4Z*nhkX=7+FaA9XChy959LL=6A{8vpc!Jc4cm4Z*nhkX=7+FaA9s`Y%XwlP)h*<6ay3h000O8MnywZ%BG +f=ejES*JbwTH8UO$Q0000000000q=Cd+8vt-=a4%nWWo~3|axZdeV`wjMa%FUMc`k5yP)h*<6ay3h00 +0O8MnywZqpbi&6CVHoR*V1u8~^|S0000000000q=9;P8vt-=a4%nWWo~3|axZdeV`wjMa&KpHWpi^ba +CuNm0Rj{Q6aWAK2mnS!LsT&Ew!5kb002@R001BW0000000000005+c$Cn!baA|NaUv_0~WN&gWa%p2| +FK}{iXL4n8b6;X%axQRrP)h*<6ay3h000O8MnywZi6~Vw=n4P;D=Yv28UO$Q0000000000q=B!X8vt- +=a4%nWWo~3|axZdeV`wjMa&K*LbS`jtP)h*<6ay3h000O8MnywZ!h(t0KLP*%c?AFf8~^|S00000000 +00q=CV>WaCuNm0Rj{Q6aWAK2mnS!LsSHpK +1T`#007kx000;O0000000000005+c^{yKLaA|NaUv_0~WN&gWa%p2|FLGsYaxQRrP)h*<6ay3h000O8 +MnywZX{XH~76kwRWe@-W7ytkO0000000000q=7ZG8vt-=a4%nWWo~3|axZdeV`wjOb!=rWaCuNm0Rj{ +Q6aWAK2mnS!LsX1`U_EpM000^b000>P0000000000005+cfw>z1aA|NaUv_0~WN&gWa%p2|FLPsWaAh +uVc~DCM0u%!j0000807gYaR6jNTu2KR305=8z02%-Q00000000000HlE|z8e5=X>c!Jc4cm4Z*nhkX= +7+Fb7OL4Wo|BTc~DCM0u%!j0000807gYaRQnhC2fh;k0Bl_V02=@R00000000000HlGoz#9N?X>c!Jc +4cm4Z*nhkX=7+Fb7g03Wo~pXaCuNm0Rj{Q6aWAK2mnS!LsS4m2goi3007t!000{R0000000000005+c +t<)O;aA|NaUv_0~WN&gWa%p2|FLQ8dZf<3AE^v8JO928D0~7!N00;m^MMG4aC^2*P1ONa@5dZ)h0000 +0000000001_ffU*s0B~t=FJE?LZe(wAFLG&PXfJbgVRUtKE^v8JO928D0~7!N00;m^MMG4)(W#?f761 +TcX8-^h00000000000001_fkNLK0B~t=FJE?LZe(wAFLG&PXfJbgd2D4aaCuNm0Rj{Q6aWAK2mnS!Ls +an!rcl)Z008O)000^Q0000000000005+c*!3F#aA|NaUv_0~WN&gWa%p2|FLQKxY-MCFaCuNm0Rj{Q6 +aWAK2mnS!LsTVeEzMRJ0044n000^Q0000000000005+c<@Xx^aA|NaUv_0~WN&gWa%p2|FLQZrbYXZd +aCuNm0Rj{Q6aWAK2mnS!LsYP0000000000005+ca}OKc!Jc4c +m4Z*nhkX=7+FbYWt3Y+-a|E^v8JO928D0~7!N00;m^MMG4;0(-6a0RRBA1pojd00000000000001_fm +1OY0B~t=FJE?LZe(wAFLG&PXfJeSa&2jDVQgP?Xk~3>E^v8JO928D0~7!N00;m^MMG5G33PbhCIA44t +pETR00000000000001_fr~R70B~t=FJE?LZe(wAFLG&PXfJeScyumsc~DCM0u%!j0000807gYaR2dhv +%&r6g04ojv02u%P00000000000HlGSS{wjyX>c!Jc4cm4Z*nhkX=7+FbZBL5WiD`eP)h*<6ay3h000O +8MnywZQFZoEM*si-W&i*H8UO$Q0000000000q=AKB8~|`>a4%nWWo~3|axZdeV`wjQXk~3>b1rasP)h +*<6ay3h000O8MnywZi33WCkQe{}Ph|iA9RL6T0000000000q=5ur8~|`>a4%nWWo~3|axZdeV`wjQa$ +#d-Vqs%zE^v8JO928D0~7!N00;m^MMG5iUCN9~3IG72BLDyx00000000000001_fzNmx0B~t=FJE?LZ +e(wAFLG&PXfJefWo0gKc~DCM0u%!j0000807gYaROTKQzvUAE08vK(03ZMW00000000000HlFWgB$>G +X>c!Jc4cm4Z*nhmWo}_(X>@rnUtei%X>?y-E^v8JO928D0~7!N00;m^MMG2>+-+>F1ONc?3;+Ni0000 +0000000001_fpV7|0B~t=FJE?LZe(wAFLY&YVPk1@c`sjKb9ruKX>TrYc~DCM0u%!j0000807gYaR8> +4{1$_em0GI~=03HAU00000000000HlFkoE!jfX>c!Jc4cm4Z*nhmWo}_(X>@rnUv+e8Y;!Jfc~DCM0u +%!j0000807gYaRH)$??(zZv0N4cp0384T00000000000HlEypd0{jX>c!Jc4cm4Z*nhmWo}_(X>@rnV +Pa4%nWWo~3| +axZjcZee3-ba^jgWoB=3WiD`eP)h*<6ay3h000O8MnywZ1PkqJVgmpGbO!(cBme*a0000000000q=7u +98~|`>a4%nWWo~3|axZjcZee3-ba^jgWoB=3WnXh_Wo2+KaCuNm0Rj{Q6aWAK2mnS!LsX`0veVoG003 +tN000{R0000000000005+c;Hew{aA|NaUv_0~WN&gWbY*T~V`+4GFK%IQE^v8JO928D0~7!N00;m^MM +G4WQZ2i*1pol`82|ts00000000000001_f%U8$0B~t=FJE?LZe(wAFLY&YVPk1@c`tHhbaHtvaCuNm0 +Rj{Q6aWAK2mnS!Lsa!v&2^~*008C+000~S0000000000005+ca4%nWWo~3 +|axZjcZee3-ba^jyZ*p#7WN&w6VlHrbP)h*<6ay3h000O8MnywZT4jJ)lL!C+BN_kz8~^|S00000000 +00q=B=#8~|`>a4%nWWo~3|axZjcZee3-ba^j#VQF+OaCuNm0Rj{Q6aWAK2mnS!LsY%ctNW_}008Cy00 +12T0000000000005+cfWsUBaA|NaUv_0~WN&gWbZ>2JX)j-2X>MtBUtcb8c~DCM0u%!j0000807gYaR +K@`O_COT?0FPGy02}}S00000000000HlFt#2f%{X>c!Jc4cm4Z*nhmZ*6R8FJEwBa&u*JE^v8JO928D +0~7!N00;m^MMG4A+%bU80{{Sd3IG5Y00000000000001_f#BI30B~t=FJE?LZe(wAFLZBhY-ulFa%C= +Xc~DCM0u%!j0000807gYaR3S-i98m-S0Luyh03QGV00000000000HlHB-5daLX>c!Jc4cm4Z*nhna%^ +mAVlyvaUukY>bYEXCaCuNm0Rj{Q6aWAK2mnS!LsT6<6LJC#0028G001KZ0000000000005+ca^f5SaA +|NaUv_0~WN&gWb#iQMX<{=kUt@1V?GE^v8JO928D0~7!N00;m^MMG3(_Ca|+0000#0000V0 +0000000000001_fwk`(0B~t=FJE?LZe(wAFLiQkY-wUMFJE?La&u{KZZ2?nP)h*<6ay3h000O8MnywZ +E#FF#2^RnWY)$|GApigX0000000000q=7N;8~|`>a4%nWWo~3|axZmqY;0*_GcRLrZf<2`bZKvHE^v8 +JO928D0~7!N00;m^MMG4XVHo<}DF6Uvm;eAJ00000000000001_fq4fV0B~t=FJE?LZe(wAFLiQkY-w +UMFJo_RZe?S1X>V?DZ*OcaaCuNm0Rj{Q6aWAK2mnS!LsVYONww<<000>v001EX0000000000005+cnl +T*!aA|NaUv_0~WN&gWb#iQMX<{=kWq4y{aCB*JZgVbhc~DCM0u%!j0000807gYaRL3YwEFcO10D~a_0 +384T00000000000HlG$I~@RUX>c!Jc4cm4Z*nhna%^mAVlyvhX=Q9=b1rasP)h*<6ay3h000O8MnywZ +hpWG%eggmihzS4y9{>OV0000000000q=6qs9RP4?a4%nWWo~3|axZmqY;0*_GcRUoY-Mn7b963nc~DC +M0u%!j0000807gYaROq6Si)a=A05eSh03rYY00000000000HlH1NgV)iX>c!Jc4cm4Z*nhna%^mAVly +vrZ*OdEVQyh(WpXZXc~DCM0u%!j0000807gYaRQ!+b0;dN60AUvZ03HAU00000000000HlF}U>yK(X> +c!Jc4cm4Z*nhna%^mAVlyvtWpQ<7b963nc~DCM0u%!j0000807gYaR4FeQ2xA=p04r_)03QGV000000 +00000HlFsXdM7>X>c!Jc4cm4Z*nhna%^mAVlyvtWpi+EZgXWWaCuNm0Rj{Q6aWAK2mnS!LsS3&00062 +00000001Wd0000000000005+c1%@2}aA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~OUtei%X>?y-E^v8 +JO928D0~7!N00;m^MMG37gXtBu0RRBK0{{Rq00000000000001_flP)S0B~t=FJE?LZe(wAFLiQkY-w +UMFJo_RbaH88FJEDBaAj_1X>Mg-Wo~w9a&K-faCuNm0Rj{Q6aWAK2mnS!LsU3r3CU*+000^*001Ze00 +00000000005+cP>3A>aA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~OVQ_F|Zf9w3WiD`eP)h*<6ay3h0 +00O8MnywZxW_~OR0aS5x)A^XCjbBd0000000000q=EgE9RP4?a4%nWWo~3|axZmqY;0*_GcRLrZgg^K +VlQrVY;ACFZ)`4bc~DCM0u%!j0000807gYaRA9N9UV#(<00cq+04M+e00000000000HlGIn;igfX>c! +Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#Md2euKZgX>NE^v8JO928D0~7!N00;m^MMG4;@4Dl`B>(`Ch5! +IA00000000000001_fnBg20B~t=FJE?LZe(wAFLiQkY-wUMFJo_RbaH88FLPyMb#i5Na$#c!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#5b7f<7a%FUKVQzD9Z*p`mUtei%X>?y-E^v8JO928 +D0~7!N00;m^MMG3B&n->v5C8z+L;wId00000000000001_fnDDn0B~t=FJE?LZe(wAFLiQkY-wUMFJo +_RbaH88FJE(IV|8+6baG*Cb8v5RbT49QZe(e0XLBxac~DCM0u%!j0000807gYaRIVzgyjc+d0Ae-(06 +72v00000000000HlGT@ErhfX>c!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#5b7f<7a%FUKVQzD9Z*p`mY +;Sj8Y-M(3Y%XwlP)h*<6ay3h000O8MnywZ000000ssI200000C;$Ke0000000000q=8Wa9sqD@a4%nW +Wo~3|axZmqY;0*_GcRyqV{2h&WpgiIUukY>bYEXCaCuNm0Rj{Q6aWAK2mnS!LsZ{skKQIB003%-001K +Z0000000000005+cnF1aFaA|NaUv_0~WN&gWb#iQMX<{=kaA9L>VP|D?FLP;lE^v8JO928D0~7!N00; +m^MMG2o00002000000000o00000000000001_fdC{P0B~t=FJE?LZe(wAFLiQkY-wUMFK}UFYhh<)b1 +!0HV{344a&&VqUtei%X>?y-E^v8JO928D0~7!N00;m^MMG5HxMQMtBUtcb8c~DCM0u%!j0000807gYaRP3tc51I!603{Ou044wc00000000000HlEgDINfDX>c!Jc4c +m4Z*nhna%^mAVlyvwbZKlaV{dM5Wn*+{Z*DGdc~DCM0u%!j0000807gYaR0_{r2VMdI07V7>03iSX00 +000000000HlH9FdhJKX>c!Jc4cm4Z*nhna%^mAVlyvwbZKlaaB^>Wc`k5yP)h*<6ay3h000O8MnywZP +6PIz`~Uy|@&Nz?X>2cXb!ByBE^v8J +O928D0~7!N00;m^MMG4QWUo}}1pojW5C8xp00000000000001_fx0vv0B~t=FJE?LZe(wAFLiQkY-wU +MFLiWjY%g+Uadl;LbS`jtP)h*<6ay3h000O8MnywZHYnA!U?X>2cYWpi+EZgXWWaCuNm0Rj{Q6aWAK2mnS!LsWvTHLv;>008k-00 +1EX0000000000005+chd>?xaA|NaUv_0~WN&gWb#iQMX<{=kb#!TLFLGsca(OOrc~DCM0u%!j000080 +7gYaRHTyo$EOwm02xC703ZMW00000000000HlGyR~`UxX>c!Jc4cm4Z*nhna%^mAVlyvwbZKlab8~E8 +E^v8JO928D0~7!N00;m^MMG4fndnN_2mkc!Jc4cm4Z*nhna%^mAVlyvwbZKlab +ZKp6Z*_DoaCuNm0Rj{Q6aWAK2mnS!LsaLhmHDL-007@M0018V0000000000005+c4vZcEaA|NaUv_0~ +WN&gWb#iQMX<{=kb#!TLFLiQkE^v8JO928D0~7!N00;m^MMG4gM!#{u2LJ#Z6#xJr00000000000001 +_f$*Ll0B~t=FJE?LZe(wAFLiQkY-wUMFLiWjY%h0VX>=}dc~DCM0u%!j0000807gYaRCv%IaWV@408= +Rd03-ka00000000000HlHLrXB!rX>c!Jc4cm4Z*nhpWnyJ+V{c?>ZfA2ZUtei%X>?y-E^v8JO928D0~ +7!N00;m^MMG4_tq6++1^@sPBLDy*00000000000001_fnu^A0B~t=FJE?LZe(wAFLz~PWo~0{WNB_^b +1!URVr6V|E^v8JO928D0~7!N00;m^MMG3je=#3K0ssIR1pojf00000000000001_fv3100B~t=FJE?L +Ze(wAFLz~PWo~0{WNB_^b1!XcY++($Y;!Jfc~DCM0u%!j0000807gYaRA)GFr?~|H0HYZI03iSX0000 +0000000HlE}yB+{=X>c!Jc4cm4Z*nhpWnyJ+V{c?>ZfA2ZbY*jNb1rasP)h*<6ay3h000O8MnywZ+Xn +pBr33%~(+~gvDgXcg0000000000q=6;D9sqD@a4%nWWo~3|axZsfVr6b)Z)9n1XLB!jUv+b3a$jU+W@ +&C^WG--dP)h{{000002m%NK@}K|!62=|?000 +""" + + +if __name__ == "__main__": + main() diff --git a/requirements.txt b/requirements.txt index 9eb0cad1a..76d476a1d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,5 @@ pytest pytest-ordering +ply==3.11 +typer==0.3.2 +typer-cli==0.0.11 diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 000000000..b05f5ab37 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1 @@ +*.mips \ No newline at end of file diff --git a/src/coolc.py b/src/coolc.py new file mode 100644 index 000000000..4c89ff126 --- /dev/null +++ b/src/coolc.py @@ -0,0 +1,21 @@ +import os +import sys +import subprocess + +input_file = sys.argv[1].replace('\\', '\\\\') +output_file = input_file[:-2] + 'mips' + +print('AnotherCoolTeamCompiler') +print('Copyright (c) 2021: Yasmin Cisneros Cimadevila & Jessy Gigato Izquierdo') + +def run(): + sp = subprocess.run(['python3', 'utils/pipeline.py', 'final-execution', input_file, output_file], capture_output=True, timeout=100) + dcode = sp.stdout.decode() + print(dcode) + exit(sp.returncode) + +if os.getcwd().endswith('src'): + run() +else: + os.chdir('src') + run() diff --git a/src/coolc.sh b/src/coolc.sh index 3088de4f9..13f6c42fb 100755 --- a/src/coolc.sh +++ b/src/coolc.sh @@ -3,9 +3,18 @@ INPUT_FILE=$1 OUTPUT_FILE=${INPUT_FILE:0: -2}mips -# Si su compilador no lo hace ya, aquí puede imprimir la información de contacto -echo "LINEA_CON_NOMBRE_Y_VERSION_DEL_COMPILADOR" # TODO: Recuerde cambiar estas -echo "Copyright (c) 2019: Nombre1, Nombre2, Nombre3" # TODO: líneas a los valores correctos +# Si su compilador no lo hace ya, aquí puede imprimir la información de contacto +echo "AnotherCoolTeamCompiler" # TODO: Recuerde cambiar estas +echo "Copyright (c) 2021: Yasmin Cisneros Cimadevila & Jessy Gigato Izquierdo" # TODO: líneas a los valores correctos # Llamar al compilador -echo "Compiling $INPUT_FILE into $OUTPUT_FILE" +#python3 pipeline.py final_execution "${INPUT_FILE}" "${OUTPUT_FILE}" + + +if [[ $(pwd) == *src ]] +then + python3.9 utils/pipeline.py final-execution "${INPUT_FILE}" "${OUTPUT_FILE}" +else + cd src + python3.9 utils/pipeline.py final-execution "${INPUT_FILE}" "${OUTPUT_FILE}" +fi diff --git a/src/utils/README.md b/src/utils/README.md new file mode 100644 index 000000000..491e27b8f --- /dev/null +++ b/src/utils/README.md @@ -0,0 +1,49 @@ +## Universidad de la Habana 2020 +## Segundo proyecto de Compilacion + +### Integrantes: +#### Yasmin Cisneros Cimadevila +#### Jessy Gigato Izquierdo +#### C-311 + +Para la ejecución del programa nos apoyamos en la api-cli brindada por el paquete de python typer la cual resulta bastante sencilla, con solo ejecutar: + + python3 pipeline.py --help + +se mostrará un menú de instrucciones: + + Usage: pipeline.py [OPTIONS] COMMAND [ARGS]... + + Options: + --install-completion Install completion for the current shell. + --show-completion Show completion for the current shell, to copy it or + customize the installation. + + --help Show this message and exit. + + Commands: + test-context + test-execution + test-inference + test-parse + test-semantics + tokenize + +Los comandos principales serían: + + test-execution + test-semantics + +- `text'semantics` recibe un archivo .cl con un programa en COOL con tipos `AUTO_TYPE` y devuelve un programa en COOL con todos los `AUTO_TYPE` reemplazados por sus tipos correspondientes. + +- `test-execution` el cual recibe como entrada un archivo .cl con un programa en COOL y ejecuta dicho programa. + +Los casos pruebas se encuentran en las siguientes direcciones: + + testing/semantic + testing/inference + +un ejemplo de la ejecución sería: + + python3 pipeline.py test-execution testing/inference/program12.cl + diff --git a/src/utils/cool_grammar.py b/src/utils/cool_grammar.py new file mode 100644 index 000000000..d1bbddad3 --- /dev/null +++ b/src/utils/cool_grammar.py @@ -0,0 +1,293 @@ +from fileinput import lineno + +import cool_lexer as lex +import ply.yacc as yacc + +import utils.ast_nodes as ast + +tokens = lex.tokens + +errors = [] + +def p_program(p): + 'program : class_list' + p[0] = ast.ProgramNode(p[1]) + + +def p_class_list(p): + '''class_list : class_def class_list + | class_def''' + if len(p) == 2: + p[0] = [p[1]] + elif len(p) == 3: + p[0] = [p[1]] + p[2] + +def p_class_def(p): + '''class_def : CLASS TYPE OBRACE feature_list CBRACE SEMI + | CLASS TYPE INHERITS TYPE OBRACE feature_list CBRACE SEMI''' + if len(p) == 7: + p[0] = ast.ClassDecNode(p[2], p[4]) + elif len(p) == 9: + p[0] = ast.ClassDecNode(p[2], p[6], p[4]) + +# def p_class_def_error(p): +# '''class_def : CLASS TYPE OBRACE error CBRACE SEMI +# | CLASS TYPE INHERITS TYPE OBRACE error CBRACE SEMI''' +# if len(p) == 7: +# errors.append((p.lineno(5), p.lexpos(5), 'EOC not found', 'CBRACE')) +# else: +# errors.append((p.lineno(7), p.lexpos(7), 'EOC not found', 'CBRACE')) + + +def p_feature_list(p): + '''feature_list : empty + | attribute SEMI feature_list + | method SEMI feature_list''' + if len(p) == 2: + p[0] = [] + elif len(p) == 4: + p[0] = [p[1]] + p[3] + + +def p_attribute(p): + '''attribute : ID COLON TYPE + | ID COLON TYPE ASSIGN expr''' + if len(p) == 4: + p[0] = ast.AttributeDecNode(p[1], p[3]) + elif len(p) == 6: + p[0] = ast.AttributeDecNode(p[1], p[3], p[5]) + + +def p_method(p): + '''method : ID OPAR CPAR COLON TYPE OBRACE expr CBRACE + | ID OPAR param_list CPAR COLON TYPE OBRACE expr CBRACE''' + if len(p) == 9: + p[0] = ast.MethodDecNode(p[1], p[5], p[7], []) + elif len(p) == 10: + p[0] = ast.MethodDecNode(p[1], p[6], p[8], p[3]) + + + + +def p_param_list(p): + '''param_list : ID COLON TYPE + | ID COLON TYPE COMA param_list''' + if len(p) == 4: + p[0] = [(p[1], p[3])] + elif len(p) == 6: + p[0] = [(p[1], p[3])] + p[5] + + +def p_expr(p): + '''expr : ID ASSIGN expr + | OBRACE block CBRACE + | WHILE expr LOOP expr POOL + | LET declaration_list IN expr + | CASE expr OF case_list ESAC + | notcomp''' + if len(p) == 2: + p[0] = p[1] + elif p[1] == 'while': + p[0] = ast.WhileNode(p[2], p[4]) + elif p[1] == 'let': + p[0] = ast.LetNode(p[2], p[4]) + elif p[1] == 'case': + p[0] = ast.CaseNode(p[2], p[4]) + elif p[2] == '<-': + p[0] = ast.AssignNode(p[1], p[3]) + elif p[1] == '{': + p[0] = ast.BlockNode(p[2]) + +def p_notcomp(p): + '''notcomp : NOT comp + | comp''' + if len(p) == 3: + p[0] = ast.NegationNode(p[2]) + else: + p[0] = p[1] + + +def p_comp(p): + '''comp : comp LESS notarith + | comp LESSEQUAL notarith + | comp EQUAL notarith + | arith''' + + if len(p) == 4: + if p[2] == '<': + p[0] = ast.LessNode(p[1], p[2], p[3]) + elif p[2] == '<=': + p[0] = ast.LessEqualNode(p[1], p[2], p[3]) + elif p[2] == '=': + p[0] = ast.EqualNode(p[1], p[2], p[3]) + elif len(p) == 2: + p[0] = p[1] + + +def p_notarith(p): + '''notarith : NOT arith + | arith''' + if len(p) == 3: + p[0] = ast.NegationNode(p[2]) + else: + p[0] = p[1] + +def p_arith(p): + '''arith : arith PLUS term + | arith MINUS term + | term''' + if len(p) == 4: + if p[2] == '+': + p[0] = ast.PlusNode(p[1], p[2], p[3]) + elif p[2] == '-': + p[0] = ast.MinusNode(p[1], p[2], p[3]) + elif len(p) == 2: + p[0] = p[1] + + +def p_term(p): + '''term : term TIMES factor + | term DIV factor + | factor''' + + if len(p) == 4: + if p[2] == '*': + p[0] = ast.TimesNode(p[1], p[2], p[3]) + elif p[2] == '/': + p[0] = ast.DivNode(p[1], p[2], p[3]) + elif len(p) == 2: + p[0] = p[1] + + +def p_factor(p): + '''factor : ISVOID factor + | COMPLEMENT factor + | atom''' + + if len(p) == 2: + p[0] = p[1] + elif len(p) == 3: + if p[1] == '~': + p[0] = ast.ComplementNode(p[2]) + elif p[1] == 'isvoid': + p[0] = ast.IsVoidNode(p[2]) + + +def p_atom(p): + '''atom : ID + | NEW TYPE + | OPAR expr CPAR + | IF expr THEN expr ELSE expr FI''' + + if len(p) == 4: + # p[0] = ast.ExprParNode(p[2]) + p[0] = p[2] + elif len(p) == 3: + p[0] = ast.NewNode(p[2]) + elif len(p) == 2: + p[0] = ast.VariableNode(p[1]) + elif len(p) == 8: + p[0] = ast.ConditionalNode(p[2], p[4], p[6]) + + +def p_atom_funccall(p): + 'atom : function_call' + + p[0] = p[1] + + +def p_atom_string(p): + # 'atom : QUOTATION STRING QUOTATION' + 'atom : STRING' + + p[0] = ast.StringNode(p[1]) + + +def p_atom_true(p): + '''atom : TRUE + | FALSE''' + + p[0] = ast.BooleanNode(p[1]) + + +def p_atom_number(p): + 'atom : NUMBER' + + p[0] = ast.NumberNode(p[1]) + + +def p_block(p): + '''block : expr SEMI + | expr SEMI block''' + if len(p) == 3: + p[0] = [p[1]] + elif len(p) == 4: + p[0] = [p[1]] + p[3] + + +def p_declaration_list(p): + '''declaration_list : ID COLON TYPE + | ID COLON TYPE ASSIGN expr + | ID COLON TYPE COMA declaration_list + | ID COLON TYPE ASSIGN expr COMA declaration_list''' + if len(p) == 4: + p[0] = [(p[1], p[3], None)] + elif len(p) == 6: + if p[4] == '<-': + p[0] = [(p[1], p[3], p[5])] + elif p[4] == ',': + p[0] = [(p[1], p[3], None)] + p[5] + elif len(p) == 8: + p[0] = [(p[1], p[3], p[5])] + p[7] + + +def p_case_list(p): + '''case_list : ID COLON TYPE ARROW expr SEMI + | ID COLON TYPE ARROW expr SEMI case_list''' + if len(p) == 7: + p[0] = [(p[1], p[3], p[5])] + elif len(p) == 8: + p[0] = [(p[1], p[3], p[5])] + p[7] + + +def p_function_call(p): + '''function_call : ID OPAR expr_list CPAR + | atom DOT ID OPAR expr_list CPAR + | atom ARROBA TYPE DOT ID OPAR expr_list CPAR''' + if len(p) == 5: + p[0] = ast.MethodCallNode(p[1], p[3]) + elif len(p) == 7: + p[0] = ast.MethodCallNode(p[3], p[5], p[1]) + elif len(p) == 9: + p[0] = ast.MethodCallNode(p[5], p[7], p[1], p[3]) + + +def p_expr_list(p): + '''expr_list : empty + | list_not_empty''' + if p[1]: + p[0] = p[1] + else: + p[0] = [] + + +def p_list_not_empty(p): + '''list_not_empty : expr + | expr COMA list_not_empty''' + if len(p) == 2: + p[0] = [p[1]] + elif len(p) == 4: + p[0] = [p[1]] + p[3] + + +def p_empty(p): + 'empty :' + pass + + +def p_error(p): + if p: + errors.append((p.lineno, p.lexpos, p.value, p.type)) + + +parser = yacc.yacc() diff --git a/src/utils/cool_lexer.py b/src/utils/cool_lexer.py new file mode 100644 index 000000000..76c903e89 --- /dev/null +++ b/src/utils/cool_lexer.py @@ -0,0 +1,143 @@ +import ply.lex as lex +import utils.ast_nodes as ast + +lexer_errors = [] + +tokens = ('NUMBER', # otros + 'USTRING', + 'STRING', + 'ID', + 'TYPE', + 'TRUE', + 'FALSE', + 'MINUS', # simbolos matematicos + 'PLUS', + 'DIV', + 'TIMES', + 'LESS', + 'LESSEQUAL', + 'EQUAL', + 'COMPLEMENT', + 'OBRACE', # signos de puntuacion + 'CBRACE', + 'OPAR', + 'CPAR', + 'DOT', + 'COMA', + 'COLON', + 'SEMI', + 'ARROBA', + 'ASSIGN', + 'ARROW', + 'SINGLE_LINE_COMMENT', # comentarios + ) + +# palabras reservadas +reserved = { + 'if' : 'IF', + 'then' : 'THEN', + 'else' : 'ELSE', + 'fi' : 'FI', + 'inherits': 'INHERITS', + 'class' : 'CLASS', + 'while' : 'WHILE', + 'loop' : 'LOOP', + 'pool' : 'POOL', + 'let' : 'LET', + 'in' : 'IN', + 'case' : 'CASE', + 'of' : 'OF', + 'esac' : 'ESAC', + 'new' : 'NEW', + 'isvoid' : 'ISVOID', + 'not' : 'NOT', +} + +booleans = ['true', 'false'] + +tokens = list(tokens) + list(reserved.values()) + +t_SINGLE_LINE_COMMENT = r'--.*' + + +############### Bloque turistico ################# +def t_TYPE(t): + r'[A-Z][a-zA-Z_0-9]*' + if t.value.lower() in reserved.keys(): # Check for reserved words + t.type = reserved.get(t.value, reserved[t.value.lower()]) + elif t.value.lower() in booleans: # Generating booleans + t.type = reserved.get(t.value.lower == "true", t.value.upper()) + else: + t.type = reserved.get(t.value,'TYPE') + return t + +def t_ID(t): + r'[a-z][a-zA-Z_0-9]*' + if t.value.lower() in reserved.keys(): # Check for reserved words + t.type = reserved.get(t.value, reserved[t.value.lower()]) + elif t.value.lower() in booleans: # Generating booleans + t.type = reserved.get(t.value.lower == "true", t.value.upper()) + else: + t.type = reserved.get(t.value,'ID') + return t +#####################################################W + +def t_STRING(t): + # r'\"(.|\\\n)*\"' + r'\"([^\r\n\"\\]|(\\\n)|(\\.))*\"' + + t.lineno += t.value.count('\n') + t.type = reserved.get(t.value,'STRING') + return t + +def t_USTRING(t): + # r'\"(.|\\\n)*\"' + r'\"([^\r\n\"\\]|(\\\n)|(\\.))*' + + t.lineno += t.value.count('\n') + t.type = reserved.get(t.value,'USTRING') + return t + +########################################################## + +def t_NUMBER(t): + r'\d+' + t.value = t.value #int(t.value) + return t + + +t_PLUS = r'\+' +t_MINUS = r'-' +t_TIMES = r'\*' +t_DIV = r'/' +t_LESSEQUAL = r'<=' +t_LESS = r'<' +t_COMPLEMENT = r'~' +t_EQUAL = r'=' + +t_OPAR = r'\(' +t_CPAR = r'\)' +t_OBRACE = r'{' +t_CBRACE = r'}' +t_DOT = r'\.' +t_SEMI = r';' +t_COLON = r':' +t_ARROBA = r'@' +t_ASSIGN = r'<-' +t_ARROW = r'=>' +t_COMA = r'\,' + + + +def t_newline(t): + r'\n+' + t.lexer.lineno += len(t.value) + +t_ignore = ' \t' + +def t_error(t): + t.lexer.skip(1) + lexer_errors.append(('error', t.lineno, t.lexpos, t.value[0])) + + +lexer = lex.lex() diff --git a/src/utils/parsetab.py b/src/utils/parsetab.py new file mode 100644 index 000000000..d9328729d --- /dev/null +++ b/src/utils/parsetab.py @@ -0,0 +1,92 @@ + +# parsetab.py +# This file is automatically generated. Do not edit. +# pylint: disable=W,C,R +_tabversion = '3.10' + +_lr_method = 'LALR' + +_lr_signature = 'ARROBA ARROW ASSIGN CASE CBRACE CLASS COLON COMA COMPLEMENT CPAR DIV DOT ELSE EQUAL ESAC FALSE FI ID IF IN INHERITS ISVOID LESS LESSEQUAL LET LOOP MINUS NEW NOT NUMBER OBRACE OF OPAR PLUS POOL SEMI SINGLE_LINE_COMMENT STRING THEN TIMES TRUE TYPE USTRING WHILEprogram : class_listclass_list : class_def class_list\n | class_defclass_def : CLASS TYPE OBRACE feature_list CBRACE SEMI \n | CLASS TYPE INHERITS TYPE OBRACE feature_list CBRACE SEMIfeature_list : empty\n | attribute SEMI feature_list\n | method SEMI feature_listattribute : ID COLON TYPE\n | ID COLON TYPE ASSIGN exprmethod : ID OPAR CPAR COLON TYPE OBRACE expr CBRACE\n | ID OPAR param_list CPAR COLON TYPE OBRACE expr CBRACEparam_list : ID COLON TYPE\n | ID COLON TYPE COMA param_listexpr : ID ASSIGN expr\n | OBRACE block CBRACE\n | WHILE expr LOOP expr POOL\n | LET declaration_list IN expr\n | CASE expr OF case_list ESAC\n | notcompnotcomp : NOT comp\n | compcomp : comp LESS notarith\n | comp LESSEQUAL notarith\n | comp EQUAL notarith\n | arithnotarith : NOT arith\n | aritharith : arith PLUS term\n | arith MINUS term\n | termterm : term TIMES factor\n | term DIV factor\n | factorfactor : ISVOID factor\n | COMPLEMENT factor\n | atomatom : ID\n | NEW TYPE\n | OPAR expr CPAR\n | IF expr THEN expr ELSE expr FIatom : function_callatom : STRINGatom : TRUE\n | FALSEatom : NUMBERblock : expr SEMI\n | expr SEMI blockdeclaration_list : ID COLON TYPE\n | ID COLON TYPE ASSIGN expr\n | ID COLON TYPE COMA declaration_list\n | ID COLON TYPE ASSIGN expr COMA declaration_listcase_list : ID COLON TYPE ARROW expr SEMI\n | ID COLON TYPE ARROW expr SEMI case_listfunction_call : ID OPAR expr_list CPAR\n | atom DOT ID OPAR expr_list CPAR\n | atom ARROBA TYPE DOT ID OPAR expr_list CPARexpr_list : empty\n | list_not_emptylist_not_empty : expr\n | expr COMA list_not_emptyempty :' + +_lr_action_items = {'CLASS':([0,3,21,60,],[4,4,-4,-5,]),'$end':([1,2,3,5,21,60,],[0,-1,-3,-2,-4,-5,]),'TYPE':([4,8,18,30,31,49,59,81,97,134,],[6,14,24,57,58,82,87,109,120,141,]),'OBRACE':([6,14,29,36,37,39,50,51,58,61,62,86,87,94,95,96,111,114,116,124,131,137,143,146,],[7,20,36,36,36,36,36,36,86,36,36,36,114,36,36,36,36,36,36,36,36,36,36,36,]),'INHERITS':([6,],[8,]),'CBRACE':([7,9,10,16,17,20,22,23,28,34,40,42,43,44,45,48,52,53,54,55,56,63,69,70,78,79,82,88,93,94,99,101,102,103,104,105,106,107,110,113,115,117,119,123,128,130,133,142,148,151,],[-62,15,-6,-62,-62,-62,-7,-8,33,-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,93,-21,-38,-35,-36,-39,-15,-16,-47,-23,-28,-24,-25,-29,-30,-32,-33,-40,127,-55,-48,-18,-27,138,-17,-19,-56,-41,-57,]),'ID':([7,16,17,19,20,29,36,37,38,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,80,85,86,94,95,96,98,100,111,114,116,124,125,131,132,137,143,145,146,152,],[13,13,13,25,13,34,34,34,67,34,70,70,70,34,34,34,34,70,70,70,70,70,70,70,108,25,34,34,34,34,122,70,34,34,34,34,136,34,67,34,34,67,34,122,]),'SEMI':([11,12,15,24,33,34,35,40,42,43,44,45,48,52,53,54,55,56,64,69,70,78,79,82,88,93,99,101,102,103,104,105,106,107,110,115,119,123,127,130,133,138,142,148,150,151,],[16,17,21,-9,60,-38,-10,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,94,-21,-38,-35,-36,-39,-15,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-18,-27,-11,-17,-19,-12,-56,-41,152,-57,]),'COLON':([13,25,26,32,67,122,],[18,30,31,59,97,134,]),'OPAR':([13,29,34,36,37,39,41,46,47,50,51,61,62,70,71,72,73,74,75,76,77,86,94,95,96,100,108,111,114,116,124,131,136,137,143,146,],[19,50,62,50,50,50,50,50,50,50,50,50,50,62,50,50,50,50,50,50,50,50,50,50,50,50,124,50,50,50,50,50,143,50,50,50,]),'CPAR':([19,27,34,40,42,43,44,45,48,52,53,54,55,56,57,62,69,70,78,79,82,83,88,89,90,91,92,93,99,101,102,103,104,105,106,107,110,112,115,119,123,124,129,130,133,135,142,143,147,148,151,],[26,32,-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,-13,-62,-21,-38,-35,-36,-39,110,-15,115,-58,-59,-60,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-14,-55,-18,-27,-62,-61,-17,-19,142,-56,-62,151,-41,-57,]),'ASSIGN':([24,34,120,],[29,61,131,]),'WHILE':([29,36,37,39,50,51,61,62,86,94,95,96,111,114,116,124,131,137,143,146,],[37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,]),'LET':([29,36,37,39,50,51,61,62,86,94,95,96,111,114,116,124,131,137,143,146,],[38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,]),'CASE':([29,36,37,39,50,51,61,62,86,94,95,96,111,114,116,124,131,137,143,146,],[39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,]),'NOT':([29,36,37,39,50,51,61,62,71,72,73,86,94,95,96,111,114,116,124,131,137,143,146,],[41,41,41,41,41,41,41,41,100,100,100,41,41,41,41,41,41,41,41,41,41,41,41,]),'ISVOID':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,]),'COMPLEMENT':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,]),'NEW':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,]),'IF':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,]),'STRING':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,]),'TRUE':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,]),'FALSE':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,]),'NUMBER':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,]),'DOT':([34,48,52,53,54,55,56,70,82,109,110,115,142,148,151,],[-38,80,-42,-43,-44,-45,-46,-38,-39,125,-40,-55,-56,-41,-57,]),'ARROBA':([34,48,52,53,54,55,56,70,82,110,115,142,148,151,],[-38,81,-42,-43,-44,-45,-46,-38,-39,-40,-55,-56,-41,-57,]),'TIMES':([34,44,45,48,52,53,54,55,56,70,78,79,82,104,105,106,107,110,115,142,148,151,],[-38,76,-34,-37,-42,-43,-44,-45,-46,-38,-35,-36,-39,76,76,-32,-33,-40,-55,-56,-41,-57,]),'DIV':([34,44,45,48,52,53,54,55,56,70,78,79,82,104,105,106,107,110,115,142,148,151,],[-38,77,-34,-37,-42,-43,-44,-45,-46,-38,-35,-36,-39,77,77,-32,-33,-40,-55,-56,-41,-57,]),'PLUS':([34,43,44,45,48,52,53,54,55,56,70,78,79,82,101,104,105,106,107,110,115,123,142,148,151,],[-38,74,-31,-34,-37,-42,-43,-44,-45,-46,-38,-35,-36,-39,74,-29,-30,-32,-33,-40,-55,74,-56,-41,-57,]),'MINUS':([34,43,44,45,48,52,53,54,55,56,70,78,79,82,101,104,105,106,107,110,115,123,142,148,151,],[-38,75,-31,-34,-37,-42,-43,-44,-45,-46,-38,-35,-36,-39,75,-29,-30,-32,-33,-40,-55,75,-56,-41,-57,]),'LESS':([34,42,43,44,45,48,52,53,54,55,56,69,70,78,79,82,99,101,102,103,104,105,106,107,110,115,123,142,148,151,],[-38,71,-26,-31,-34,-37,-42,-43,-44,-45,-46,71,-38,-35,-36,-39,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-27,-56,-41,-57,]),'LESSEQUAL':([34,42,43,44,45,48,52,53,54,55,56,69,70,78,79,82,99,101,102,103,104,105,106,107,110,115,123,142,148,151,],[-38,72,-26,-31,-34,-37,-42,-43,-44,-45,-46,72,-38,-35,-36,-39,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-27,-56,-41,-57,]),'EQUAL':([34,42,43,44,45,48,52,53,54,55,56,69,70,78,79,82,99,101,102,103,104,105,106,107,110,115,123,142,148,151,],[-38,73,-26,-31,-34,-37,-42,-43,-44,-45,-46,73,-38,-35,-36,-39,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-27,-56,-41,-57,]),'LOOP':([34,40,42,43,44,45,48,52,53,54,55,56,65,69,70,78,79,82,88,93,99,101,102,103,104,105,106,107,110,115,119,123,130,133,142,148,151,],[-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,95,-21,-38,-35,-36,-39,-15,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-18,-27,-17,-19,-56,-41,-57,]),'OF':([34,40,42,43,44,45,48,52,53,54,55,56,68,69,70,78,79,82,88,93,99,101,102,103,104,105,106,107,110,115,119,123,130,133,142,148,151,],[-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,98,-21,-38,-35,-36,-39,-15,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-18,-27,-17,-19,-56,-41,-57,]),'THEN':([34,40,42,43,44,45,48,52,53,54,55,56,69,70,78,79,82,84,88,93,99,101,102,103,104,105,106,107,110,115,119,123,130,133,142,148,151,],[-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,-21,-38,-35,-36,-39,111,-15,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-18,-27,-17,-19,-56,-41,-57,]),'COMA':([34,40,42,43,44,45,48,52,53,54,55,56,57,69,70,78,79,82,88,92,93,99,101,102,103,104,105,106,107,110,115,119,120,123,130,133,139,142,148,151,],[-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,85,-21,-38,-35,-36,-39,-15,116,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-18,132,-27,-17,-19,145,-56,-41,-57,]),'POOL':([34,40,42,43,44,45,48,52,53,54,55,56,69,70,78,79,82,88,93,99,101,102,103,104,105,106,107,110,115,118,119,123,130,133,142,148,151,],[-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,-21,-38,-35,-36,-39,-15,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,130,-18,-27,-17,-19,-56,-41,-57,]),'ELSE':([34,40,42,43,44,45,48,52,53,54,55,56,69,70,78,79,82,88,93,99,101,102,103,104,105,106,107,110,115,119,123,126,130,133,142,148,151,],[-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,-21,-38,-35,-36,-39,-15,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-18,-27,137,-17,-19,-56,-41,-57,]),'IN':([34,40,42,43,44,45,48,52,53,54,55,56,66,69,70,78,79,82,88,93,99,101,102,103,104,105,106,107,110,115,119,120,123,130,133,139,140,142,148,149,151,],[-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,96,-21,-38,-35,-36,-39,-15,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-18,-49,-27,-17,-19,-50,-51,-56,-41,-52,-57,]),'FI':([34,40,42,43,44,45,48,52,53,54,55,56,69,70,78,79,82,88,93,99,101,102,103,104,105,106,107,110,115,119,123,130,133,142,144,148,151,],[-38,-20,-22,-26,-31,-34,-37,-42,-43,-44,-45,-46,-21,-38,-35,-36,-39,-15,-16,-23,-28,-24,-25,-29,-30,-32,-33,-40,-55,-18,-27,-17,-19,-56,148,-41,-57,]),'ESAC':([121,152,153,],[133,-53,-54,]),'ARROW':([141,],[146,]),} + +_lr_action = {} +for _k, _v in _lr_action_items.items(): + for _x,_y in zip(_v[0],_v[1]): + if not _x in _lr_action: _lr_action[_x] = {} + _lr_action[_x][_k] = _y +del _lr_action_items + +_lr_goto_items = {'program':([0,],[1,]),'class_list':([0,3,],[2,5,]),'class_def':([0,3,],[3,3,]),'feature_list':([7,16,17,20,],[9,22,23,28,]),'empty':([7,16,17,20,62,124,143,],[10,10,10,10,90,90,90,]),'attribute':([7,16,17,20,],[11,11,11,11,]),'method':([7,16,17,20,],[12,12,12,12,]),'param_list':([19,85,],[27,112,]),'expr':([29,36,37,39,50,51,61,62,86,94,95,96,111,114,116,124,131,137,143,146,],[35,64,65,68,83,84,88,92,113,64,118,119,126,128,92,92,139,144,92,150,]),'notcomp':([29,36,37,39,50,51,61,62,86,94,95,96,111,114,116,124,131,137,143,146,],[40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,]),'comp':([29,36,37,39,41,50,51,61,62,86,94,95,96,111,114,116,124,131,137,143,146,],[42,42,42,42,69,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,]),'arith':([29,36,37,39,41,50,51,61,62,71,72,73,86,94,95,96,100,111,114,116,124,131,137,143,146,],[43,43,43,43,43,43,43,43,43,101,101,101,43,43,43,43,123,43,43,43,43,43,43,43,43,]),'term':([29,36,37,39,41,50,51,61,62,71,72,73,74,75,86,94,95,96,100,111,114,116,124,131,137,143,146,],[44,44,44,44,44,44,44,44,44,44,44,44,104,105,44,44,44,44,44,44,44,44,44,44,44,44,44,]),'factor':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[45,45,45,45,45,78,79,45,45,45,45,45,45,45,45,45,106,107,45,45,45,45,45,45,45,45,45,45,45,45,45,]),'atom':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,]),'function_call':([29,36,37,39,41,46,47,50,51,61,62,71,72,73,74,75,76,77,86,94,95,96,100,111,114,116,124,131,137,143,146,],[52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,]),'block':([36,94,],[63,117,]),'declaration_list':([38,132,145,],[66,140,149,]),'expr_list':([62,124,143,],[89,135,147,]),'list_not_empty':([62,116,124,143,],[91,129,91,91,]),'notarith':([71,72,73,],[99,102,103,]),'case_list':([98,152,],[121,153,]),} + +_lr_goto = {} +for _k, _v in _lr_goto_items.items(): + for _x, _y in zip(_v[0], _v[1]): + if not _x in _lr_goto: _lr_goto[_x] = {} + _lr_goto[_x][_k] = _y +del _lr_goto_items +_lr_productions = [ + ("S' -> program","S'",1,None,None,None), + ('program -> class_list','program',1,'p_program','cool_grammar.py',11), + ('class_list -> class_def class_list','class_list',2,'p_class_list','cool_grammar.py',16), + ('class_list -> class_def','class_list',1,'p_class_list','cool_grammar.py',17), + ('class_def -> CLASS TYPE OBRACE feature_list CBRACE SEMI','class_def',6,'p_class_def','cool_grammar.py',24), + ('class_def -> CLASS TYPE INHERITS TYPE OBRACE feature_list CBRACE SEMI','class_def',8,'p_class_def','cool_grammar.py',25), + ('feature_list -> empty','feature_list',1,'p_feature_list','cool_grammar.py',41), + ('feature_list -> attribute SEMI feature_list','feature_list',3,'p_feature_list','cool_grammar.py',42), + ('feature_list -> method SEMI feature_list','feature_list',3,'p_feature_list','cool_grammar.py',43), + ('attribute -> ID COLON TYPE','attribute',3,'p_attribute','cool_grammar.py',51), + ('attribute -> ID COLON TYPE ASSIGN expr','attribute',5,'p_attribute','cool_grammar.py',52), + ('method -> ID OPAR CPAR COLON TYPE OBRACE expr CBRACE','method',8,'p_method','cool_grammar.py',60), + ('method -> ID OPAR param_list CPAR COLON TYPE OBRACE expr CBRACE','method',9,'p_method','cool_grammar.py',61), + ('param_list -> ID COLON TYPE','param_list',3,'p_param_list','cool_grammar.py',71), + ('param_list -> ID COLON TYPE COMA param_list','param_list',5,'p_param_list','cool_grammar.py',72), + ('expr -> ID ASSIGN expr','expr',3,'p_expr','cool_grammar.py',80), + ('expr -> OBRACE block CBRACE','expr',3,'p_expr','cool_grammar.py',81), + ('expr -> WHILE expr LOOP expr POOL','expr',5,'p_expr','cool_grammar.py',82), + ('expr -> LET declaration_list IN expr','expr',4,'p_expr','cool_grammar.py',83), + ('expr -> CASE expr OF case_list ESAC','expr',5,'p_expr','cool_grammar.py',84), + ('expr -> notcomp','expr',1,'p_expr','cool_grammar.py',85), + ('notcomp -> NOT comp','notcomp',2,'p_notcomp','cool_grammar.py',100), + ('notcomp -> comp','notcomp',1,'p_notcomp','cool_grammar.py',101), + ('comp -> comp LESS notarith','comp',3,'p_comp','cool_grammar.py',109), + ('comp -> comp LESSEQUAL notarith','comp',3,'p_comp','cool_grammar.py',110), + ('comp -> comp EQUAL notarith','comp',3,'p_comp','cool_grammar.py',111), + ('comp -> arith','comp',1,'p_comp','cool_grammar.py',112), + ('notarith -> NOT arith','notarith',2,'p_notarith','cool_grammar.py',126), + ('notarith -> arith','notarith',1,'p_notarith','cool_grammar.py',127), + ('arith -> arith PLUS term','arith',3,'p_arith','cool_grammar.py',134), + ('arith -> arith MINUS term','arith',3,'p_arith','cool_grammar.py',135), + ('arith -> term','arith',1,'p_arith','cool_grammar.py',136), + ('term -> term TIMES factor','term',3,'p_term','cool_grammar.py',147), + ('term -> term DIV factor','term',3,'p_term','cool_grammar.py',148), + ('term -> factor','term',1,'p_term','cool_grammar.py',149), + ('factor -> ISVOID factor','factor',2,'p_factor','cool_grammar.py',161), + ('factor -> COMPLEMENT factor','factor',2,'p_factor','cool_grammar.py',162), + ('factor -> atom','factor',1,'p_factor','cool_grammar.py',163), + ('atom -> ID','atom',1,'p_atom','cool_grammar.py',175), + ('atom -> NEW TYPE','atom',2,'p_atom','cool_grammar.py',176), + ('atom -> OPAR expr CPAR','atom',3,'p_atom','cool_grammar.py',177), + ('atom -> IF expr THEN expr ELSE expr FI','atom',7,'p_atom','cool_grammar.py',178), + ('atom -> function_call','atom',1,'p_atom_funccall','cool_grammar.py',191), + ('atom -> STRING','atom',1,'p_atom_string','cool_grammar.py',197), + ('atom -> TRUE','atom',1,'p_atom_true','cool_grammar.py',204), + ('atom -> FALSE','atom',1,'p_atom_true','cool_grammar.py',205), + ('atom -> NUMBER','atom',1,'p_atom_number','cool_grammar.py',211), + ('block -> expr SEMI','block',2,'p_block','cool_grammar.py',217), + ('block -> expr SEMI block','block',3,'p_block','cool_grammar.py',218), + ('declaration_list -> ID COLON TYPE','declaration_list',3,'p_declaration_list','cool_grammar.py',226), + ('declaration_list -> ID COLON TYPE ASSIGN expr','declaration_list',5,'p_declaration_list','cool_grammar.py',227), + ('declaration_list -> ID COLON TYPE COMA declaration_list','declaration_list',5,'p_declaration_list','cool_grammar.py',228), + ('declaration_list -> ID COLON TYPE ASSIGN expr COMA declaration_list','declaration_list',7,'p_declaration_list','cool_grammar.py',229), + ('case_list -> ID COLON TYPE ARROW expr SEMI','case_list',6,'p_case_list','cool_grammar.py',242), + ('case_list -> ID COLON TYPE ARROW expr SEMI case_list','case_list',7,'p_case_list','cool_grammar.py',243), + ('function_call -> ID OPAR expr_list CPAR','function_call',4,'p_function_call','cool_grammar.py',251), + ('function_call -> atom DOT ID OPAR expr_list CPAR','function_call',6,'p_function_call','cool_grammar.py',252), + ('function_call -> atom ARROBA TYPE DOT ID OPAR expr_list CPAR','function_call',8,'p_function_call','cool_grammar.py',253), + ('expr_list -> empty','expr_list',1,'p_expr_list','cool_grammar.py',263), + ('expr_list -> list_not_empty','expr_list',1,'p_expr_list','cool_grammar.py',264), + ('list_not_empty -> expr','list_not_empty',1,'p_list_not_empty','cool_grammar.py',272), + ('list_not_empty -> expr COMA list_not_empty','list_not_empty',3,'p_list_not_empty','cool_grammar.py',273), + ('empty -> ','empty',0,'p_empty','cool_grammar.py',281), +] diff --git a/src/utils/pipeline.py b/src/utils/pipeline.py new file mode 100644 index 000000000..d259a327e --- /dev/null +++ b/src/utils/pipeline.py @@ -0,0 +1,330 @@ +from cmath import log +from os import error +from typing import Counter +import typer + +from cool_grammar import parser, errors as parser_errors +from cool_lexer import lexer, lexer_errors +from utils.ast_nodes import Token +# from utils.cyclic_dependency import CyclicDependency_, MethodChecker, cyclicDependency +from utils.formatter import Formatter, CodeBuilder, PrintingScope +from utils.semantic import Context, Scope +from utils.inference import InferenceTypeChecker +from utils.instance import Execution +from utils.type_analysis import PositionAssigner #, TypeBuilder, TypeChecker, TypeCollector, , TypeBuilderFeature +from utils.auxiliar_methods import erase_multiline_comment +# from utils.cool_to_cil import COOLToCILVisitor +# from utils.collect_dec import CollectDeclarationsDict, get_declarations_dict +from utils.code_generation import COOLwithNULL, COOLwithNULL_Type +# from utils.cil_to_mips import CILToMIPSVisitor, MipsFormatter +# from utils.cooltocil import ExtendedCoolTranslator, ExtendedCoolTypeChecker, CoolToCilTranslator +from utils.cool_cil_mips import CoolToCilTranslator, CilToMipsTranslator, MipsFormatter1, ExtendedCoolTranslator, ExtendedCoolTypeChecker +from utils.semantic_type_checker import TypeCollector, TypeBuilderForInheritance, topological_sorting, TypeBuilderForFeatures, OverriddenMethodChecker, InferenceChecker, TypeChecker + + +app = typer.Typer() + + +def read_file(file_name: str): + with open(file_name, 'r', encoding='utf-8') as f: + s = f.read() + return s + +def write_file(file_name: str, text: str): + with open(file_name, 'w', encoding='utf-8') as f: + s = f.write(text) + f.close() + return s + + +def print_errors(s: str): + styled_e = typer.style(s, fg=typer.colors.RED, bold=True) + typer.echo(styled_e) + +def parse(program: str, lexer=None, debug: bool = False): + return parser.parse(program, lexer=lexer, debug=debug) + +def check_semantics(program: str, debug: bool = False): + context = Context() + scope = Scope() + errors = [] + + ast = parse(program, debug) + if parser.errorok: + errors = ['Syntactic Error'] + else: + TypeCollector(context, errors).visit(ast) + # TypeBuilder(context, errors).visit(ast) + # CyclicDependency(context, errors) + if not errors: + TypeChecker(context, errors).visit(ast, scope) + + return ast, errors, context, scope + +def get_tokenline(str, pos): + temp_pos = -1 + line = 1 + while temp_pos < pos: + temp_pos += 1 + if str[temp_pos] == '\n': + line += 1 + return line + +def get_eol_pos(str, line): + pos = 0 + temp_line = 1 + + temp_pos = 0 + + while temp_line != line: + if str[temp_pos] == '\n': + temp_line += 1 + temp_pos += 1 + + while str[temp_pos] != '\n': + pos += 1 + temp_pos += 1 + + return pos + +def get_tokencolumn(str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column + +def tokenize(program_file: str, debug: bool = False, verbose=False): + program = read_file(program_file) + + errors, program = erase_multiline_comment(program) + program = erase_single_line_comment(program) + + lexer.input(program) + tokens = [] + # print(program) + while True: + t = lexer.token() + if not t: + break + # tokens.append(Token(t[0], t[1], t[2], t[3])) + tokens.append(Token(t.type, t.value, t.lineno, t.lexpos, program)) + if type(t) == tuple: + column = 1 + current_pos = t[2] + if t[3] == '\"': pass + else: + while program[current_pos] != '\n': + column += 1 + current_pos -= 1 + errors.append(f'({t[1]}, {column - 1}) - LexicographicError: ERROR \"{t[3]}\"') + elif t.type == 'STRING': + if t.value.find('\0') != -1: + pos = t.value.index('\0') + lineno = get_tokenline(program, t.lexpos) + column = get_tokencolumn(program, t.lexpos + pos - 1) + errors.append(f'({lineno}, {column}) - LexicographicError: String contains null character') + elif t.type == 'USTRING': + lineno = get_tokenline(program, t.lexpos) + column = get_tokencolumn(program, t.lexpos) + if t.lexpos + 1 == len(program) or program[t.lexpos + 1] == '\n': + errors.append(f'({lineno}, {column}) - LexicographicError: EOF in string constant') + else: + lineno = get_tokenline(program, t.lexpos + len(t.value) - 1) + column = get_tokencolumn(program, t.lexpos + len(t.value) - 1) + errors.append(f'({lineno}, {column}) - LexicographicError: Unterminated string constant') + + pass + # if verbose: + # print(t) + + return errors, program, tokens + +def erase_single_line_comment(program: str): + temp = '' + pos = 0 + while pos < len(program): + if program[pos] == '-' and (pos + 1) < len(program): + if program[pos + 1] == '-' and \ + (pos - 1 < 0 or program[pos - 1] not in ['<', '-']):#in [' ', '\n', '\t']): + while pos < len(program) and program[pos] != '\n': + pos += 1 + # temp += program[pos] + else: + temp += program[pos] + pos += 1 + else: + temp += program[pos] + pos += 1 + + return temp + + +def test_parse(program_file: str, debug: bool = False): + program = read_file(program_file) + ast = parse(program, debug) + formater = Formatter() + print(formater.visit(ast, 0)) + +def test_context(program_file: str, debug: bool = False): + program = read_file(program_file) + + context = Context() + errors = [] + + ast = parse(program, debug) + TypeCollector(context, errors).visit(ast) + # TypeBuilder(context, errors).visit(ast) + # CyclicDependency(context, errors) + if not errors: + print(context) + else: + print('\n'.join(errors)) + + +@app.command() +def test_inference(program_file: str, debug: bool = False): + program = read_file(program_file) + + context = Context() + errors = [] + + ast = parse(program, debug) + if ast is None: + errors.append('Syntactic Errors') + else: + TypeCollector(context, errors).visit(ast) + # TypeBuilder(context, errors).visit(ast) + # CyclicDependency(context, errors) + if not errors: + InferenceTypeChecker(context, errors).visit(ast, Scope()) + print(CodeBuilder().visit(ast, 0)) + else: + print('\n'.join(errors)) + +@app.command() +def test_execution(program_file: str, debug: bool = False): + program = read_file(program_file) + + context = Context() + errors = [] + + ast = parse(program, debug) + if ast is None: + # error en el lexer o en el parser + # + errors.append('Syntactic Errors') + else: + TypeCollector(context, errors).visit(ast) + # TypeBuilder(context, errors).visit(ast) + # CyclicDependency(context, errors) + if not errors: + InferenceTypeChecker(context, errors).visit(ast, Scope()) + print(CodeBuilder().visit(ast, 0)) + Execution(context).visit(ast, Scope()) + else: + print('\n'.join(errors)) + + +def test_semantics(program_file: str, debug: bool = False): + program = read_file(program_file) + + _, errors, _, _ = check_semantics(program, debug) + if errors: + print('\n'.join(errors)) + else: + print('Check Succesful') + +def print_list(list): + for item in list: + print(item) + +def ast_null(ast, context, errors, program, scope): + new_ast = COOLwithNULL(context).visit(ast) + scope = Scope() + COOLwithNULL_Type(context, errors, program).visit(new_ast, scope) + return new_ast + + +########################### +##### FINAL EXECUTION ##### +########################### + +@app.command() +def final_execution(program_file, program_file_out, debug: bool = False, verbose=False): + context = Context() + scope = Scope() + + ########### + ## LEXER ## + ########### + + errors, program, tokens = tokenize(program_file, debug, verbose) + + if errors or lexer_errors: + for (_, line, col, value) in lexer_errors: + totallines = program.count('\n') + col = get_tokencolumn(program, col) if get_tokencolumn(program, col) > 1 else 2 + print_errors(f'({line}, {col - 1}) - LexicographicError: ERROR \"{value}\"') + for e in errors: + print_errors(e) + exit(1) + + ############ + ## PARSER ## + ############ + + ast = parse(program, debug=debug) + + if ast is None and not parser_errors: + print_errors("(0, 0) - SyntacticError: ERROR at or near EOF") + exit(1) + + if parser_errors: + for (line, lexpos, _, value) in parser_errors: + current_line = line - program.count('\n') + col = get_tokencolumn(program, lexpos) if get_tokencolumn(program, lexpos) > 1 else 2 + print_errors(f'({current_line}, {col-1}) - SyntacticError: ERROR at or near "{value}"') + exit(1) + + ############## + ## SEMANTIC ## + ############## + + else: + PositionAssigner(tokens).visit(ast) + TypeCollector(context, errors).visit(ast) + TypeBuilderForInheritance(context, errors).visit(ast) + topological_sorting(ast, context, errors) + if not errors: + TypeBuilderForFeatures(context, errors).visit(ast) + OverriddenMethodChecker(context, errors).visit(ast) + InferenceChecker(context, errors).visit(ast, Scope()) + TypeChecker(context, errors).visit(ast, scope) + + if errors: + for item in errors: + print_errors(item) + exit(1) + + ####################### + ### CODE GENERATION ### + ####################### + + new_ast = ExtendedCoolTranslator(context).visit(ast) + + scope = Scope() + ExtendedCoolTypeChecker(context, errors).visit(new_ast, scope) + + cil_ast = CoolToCilTranslator(context).visit(new_ast, scope) + mips_ast = CilToMipsTranslator(context).visit(cil_ast) + program_result = MipsFormatter1().visit(mips_ast) + + write_file(program_file_out, program_result) + + + +if __name__ == '__main__': + app() \ No newline at end of file diff --git a/src/utils/requirements.txt b/src/utils/requirements.txt new file mode 100644 index 000000000..f7d795ad2 --- /dev/null +++ b/src/utils/requirements.txt @@ -0,0 +1,5 @@ +ply==3.11 +typer==0.3.2 +typer-cli==0.0.11 +pytest +pytest-ordering \ No newline at end of file diff --git a/src/utils/testing/inference/program10.cl b/src/utils/testing/inference/program10.cl new file mode 100644 index 000000000..6d36fa371 --- /dev/null +++ b/src/utils/testing/inference/program10.cl @@ -0,0 +1,17 @@ +class Main { + main (): AUTO_TYPE {{ + (new Point).init(3, 4); + new IO.out_string("done\n"); + }}; +}; + +class Point { + x: Int; + y: Int; + + init(x0: AUTO_TYPE, y0: AUTO_TYPE): AUTO_TYPE {{ + x <- x0; + y <- y0; + x + y; + }}; +}; diff --git a/src/utils/testing/inference/program11.cl b/src/utils/testing/inference/program11.cl new file mode 100644 index 000000000..a6c6cd8f3 --- /dev/null +++ b/src/utils/testing/inference/program11.cl @@ -0,0 +1,16 @@ +class Main { + main (): AUTO_TYPE { + (new IO).out_string("Done\n") + }; + + func (x: AUTO_TYPE, y: AUTO_TYPE, z: AUTO_TYPE): Int { + { + x <- y; + y <- z; + z+ 1; + y; + } + }; + + succ(n:Int) : AUTO_TYPE { n + 1}; +}; \ No newline at end of file diff --git a/src/utils/testing/inference/program12.cl b/src/utils/testing/inference/program12.cl new file mode 100644 index 000000000..fa957fafd --- /dev/null +++ b/src/utils/testing/inference/program12.cl @@ -0,0 +1,22 @@ +class Main { + + main(): AUTO_TYPE { + { + let total: AUTO_TYPE <- 20, + i: AUTO_TYPE <- 1 , + io: AUTO_TYPE <- new IO in + while i <= total loop { + io.out_int(fibonacci(i)); + io.out_string("\n"); + i <- i + 1; + } + pool; + + 5; + } + }; + + fibonacci (n: AUTO_TYPE): AUTO_TYPE { + if n <= 2 then 1 else fibonacci(n - 1) + fibonacci(n - 2) fi + }; +}; \ No newline at end of file diff --git a/src/utils/testing/inference/program13.cl b/src/utils/testing/inference/program13.cl new file mode 100644 index 000000000..f4650febc --- /dev/null +++ b/src/utils/testing/inference/program13.cl @@ -0,0 +1,7 @@ +class Main { + a: AUTO_TYPE; + + main (): AUTO_TYPE { + a + 1 + }; +}; \ No newline at end of file diff --git a/src/utils/testing/inference/program8.cl b/src/utils/testing/inference/program8.cl new file mode 100644 index 000000000..4af801c34 --- /dev/null +++ b/src/utils/testing/inference/program8.cl @@ -0,0 +1,5 @@ +class Main { + main (): Object { + let x: AUTO_TYPE <- 0 in x + }; +}; \ No newline at end of file diff --git a/src/utils/testing/inference/program9.cl b/src/utils/testing/inference/program9.cl new file mode 100644 index 000000000..a27bfe896 --- /dev/null +++ b/src/utils/testing/inference/program9.cl @@ -0,0 +1,17 @@ +class Main inherits IO{ + main (): Object {{ + x <- in_string(); + out_string(x); + }}; +}; + +class Point { + x: AUTO_TYPE; + y: AUTO_TYPE; + + init(x0: Int, y0: Int): AUTO_TYPE {{ + x <- x0; + y <- y0; + self; + }}; +}; \ No newline at end of file diff --git a/src/utils/testing/semantic/program1.cl b/src/utils/testing/semantic/program1.cl new file mode 100644 index 000000000..6f2c66f34 --- /dev/null +++ b/src/utils/testing/semantic/program1.cl @@ -0,0 +1,10 @@ +class Main { + step(p : AUTO_TYPE): Object { + p.translate(1,1) + }; + + main() : Object { + let p : AUTO_TYPE <- new Point in + step(p) + }; +}; \ No newline at end of file diff --git a/src/utils/testing/semantic/program2.cl b/src/utils/testing/semantic/program2.cl new file mode 100644 index 000000000..3a2b4905b --- /dev/null +++ b/src/utils/testing/semantic/program2.cl @@ -0,0 +1,3 @@ +class A inherits B {}; +class B inherits C {}; +class C inherits A {}; diff --git a/src/utils/testing/semantic/program3.cl b/src/utils/testing/semantic/program3.cl new file mode 100644 index 000000000..33369a149 --- /dev/null +++ b/src/utils/testing/semantic/program3.cl @@ -0,0 +1,9 @@ +class Main { + main(): Object { + (new IO).out_string(suma(5, 5)) + }; + + suma(a: Int, b: Int): Int { + a + b + }; +}; \ No newline at end of file diff --git a/src/utils/testing/semantic/program4.cl b/src/utils/testing/semantic/program4.cl new file mode 100644 index 000000000..4c222fb11 --- /dev/null +++ b/src/utils/testing/semantic/program4.cl @@ -0,0 +1,19 @@ +class Main { + a: Int; + + b: String; + + main () : String {{ + a = 0; + b = "hola"; + function_with_errors(); + }}; + + function_with_errors() : Object { + case b of + x: Int => (new IO).out_int(x); + y: String => (new IO).out_string(y); + esac + + }; +}; diff --git a/src/utils/testing/semantic/program5.cl b/src/utils/testing/semantic/program5.cl new file mode 100644 index 000000000..39b27f8b0 --- /dev/null +++ b/src/utils/testing/semantic/program5.cl @@ -0,0 +1,10 @@ +class Main { + main(): Object { + (new Alpha).print() + }; +}; +class Alpha inherits IO { + print() : Object { + out_string("reached!!\n") + }; +}; \ No newline at end of file diff --git a/src/utils/testing/semantic/program6.cl b/src/utils/testing/semantic/program6.cl new file mode 100644 index 000000000..6ca4e49ff --- /dev/null +++ b/src/utils/testing/semantic/program6.cl @@ -0,0 +1,35 @@ +class Main { + main(): Object { + (new Alpha).print() + }; +}; + +class Test { + test1: Object; + + testing1(): Int { + 2 - 2 + }; + + test2: Int <- 1; + + test3: String <- "1"; + + testing2(a: Alpha, b: Int): Int { + 2 + 2 + }; + + testing3(): String { + "2 + 2" + }; + + testing4(): Int { + test1 <-- ~(1 + 2 + 3 + 4 + 5) -- The left side must be an expression + }; +} + +class Alpha inherits IO { + print() : Object { + out_string("reached!!\n") + }; +}; \ No newline at end of file diff --git a/src/utils/testing/semantic/program7.cl b/src/utils/testing/semantic/program7.cl new file mode 100644 index 000000000..e887a7231 --- /dev/null +++ b/src/utils/testing/semantic/program7.cl @@ -0,0 +1,42 @@ +class Main { + main(): Object { + (new Alpha).print() + }; +}; + +class Test inherits Object{ + test1: Object; + test2: Int <- 3; +}; + +class Test2 { + test1: Test <- new Test; + + testing1(): Test { + if 4 < 5 + 6 + 7 then + while true loop + { 5; } + pool + else + let a: Object in text1 <- (new Test) + fi + }; + + testing2(x: Int, y: Int): Test2 { + self + }; + + testing3(): Test2 { + testing2(5 + 8, true + false) + }; + + testing4(): Object { + test1@Object.copy() + }; +}; + +class Alpha inherits IO { + print() : Object { + out_string("reached!!\n") + }; +}; \ No newline at end of file diff --git a/src/utils/utils/__init__.py b/src/utils/utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/utils/utils/ast_nodes.py b/src/utils/utils/ast_nodes.py new file mode 100644 index 000000000..66206837b --- /dev/null +++ b/src/utils/utils/ast_nodes.py @@ -0,0 +1,190 @@ +from .semantic import Scope + +class Token: + def __init__(self, type, value, line, lexpos, program): + self.type = type + self.value = value + + self.line = line + self.lexpos = self.get_tokencolumn(program, lexpos) - 1 + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + +class Node: + line: int + lexpos: int + scope: Scope + + def set_position(self, line, lexpos): + self.line = line + self.lexpos = lexpos + return self + +class DeclarationNode(Node): + pass + +class ExprNode(Node): + pass + +class ProgramNode(Node): + def __init__(self, class_list): + self.class_list = class_list + + +class ClassDecNode(DeclarationNode): + def __init__(self, name, data, parent=None): + self.name = name + self.parent = parent + self.data = data + + self.parent_pos = (-1, -1) + +class AttributeDecNode(DeclarationNode): + def __init__(self, name, _type, expr=None): + self.name = name + self._type = _type + self.expr = expr + + self.type_pos = (-1, -1) + self.expr_pos = (-1, -1) + +class MethodDecNode(DeclarationNode): + def __init__(self, name, _type, expr, params=None): + self.name = name + self.params = params + self.type = _type + self.expr = expr + + self.p_types_pos = [] + self.r_types_pos = (-1, -1) + +class ParamNode(ExprNode): + def __init__(self, name, _type): + self.name = name + self.type = _type + +class WhileNode(ExprNode): + def __init__(self, cond, data): + self.cond = cond + self.data = data + +class LetNode(ExprNode): + def __init__(self, declaration, expr): + self.declaration = declaration + self.expr = expr + self.dec_names_pos = [] + self.dec_types_pos = [] + +class CaseNode(ExprNode): + def __init__(self, expr, params): + self.expr = expr + self.params = params + self.cases_positions = [] + +class AssignNode(ExprNode): + def __init__(self, idx, expr): + self.idx = idx + self.expr = expr + +class ParenthesisNode(ExprNode): + def __init__(self, expr): + self.expr = expr + +class BlockNode(ExprNode): + def __init__(self, expr): + self.expr = expr + +class MethodCallNode(ExprNode): + def __init__(self, idx, exprlist, atom=None, typex=None): + self.idx = idx + self.exprlist = exprlist + self.atom = atom + self.type = typex + + self.id_position = (-1, -1) + self.type_position = (-1, -1) + self.exprlist_positions = [] + +class ConditionalNode(ExprNode): + def __init__(self, if_expr, then_expr, else_expr): + self.if_expr = if_expr + self.then_expr = then_expr + self.else_expr = else_expr + +class IsVoidNode(ExprNode): + def __init__(self, expr): + self.expr = expr + + +class AtomicNode(ExprNode): + def __init__(self, lex): + # super().__init__() + self.lex: str = lex + self.scope = None + +class NewNode(AtomicNode): + def __init__(self, type_): + self.type = type_ + self.type_position = (-1, -1) + +class ExprParNode(AtomicNode): + def __init__(self, expr): + self.expr = expr + self.expr_pos = (-1, -1) + +class UnaryNode(ExprNode): + def __init__(self, expr): + self.expr: ExprNode = expr + self.operation_position = (-1, -1) + +class BinaryNode(ExprNode): + def __init__(self, left, operation, right): + self.left: ExprNode = left + self.operation: str = operation + self.right: ExprNode = right + +class PlusNode(BinaryNode): + pass + +class MinusNode(BinaryNode): + pass + +class DivNode(BinaryNode): + pass + +class TimesNode(BinaryNode): + pass + +class LessNode(BinaryNode): + pass + +class LessEqualNode(BinaryNode): + pass + +class EqualNode(BinaryNode): + pass + +class NegationNode(UnaryNode): + pass + +class ComplementNode(UnaryNode): + pass + +class VariableNode(AtomicNode): + pass + +class NumberNode(AtomicNode): + pass + +class StringNode(AtomicNode): + pass + +class BooleanNode(AtomicNode): + pass diff --git a/src/utils/utils/ast_nodes_cil.py b/src/utils/utils/ast_nodes_cil.py new file mode 100644 index 000000000..755b1daa0 --- /dev/null +++ b/src/utils/utils/ast_nodes_cil.py @@ -0,0 +1,452 @@ +import utils.visitor as visitor + + +class Node: + comment: str = "" + + def set_comment(self, comment: str) -> "Node": + self.comment = comment + return self + +class ProgramNode(Node): + def __init__(self, dottypes, dotdata, dotcode): + self.dottypes = dottypes + self.dotdata = dotdata + self.dotcode = dotcode + +class TypeNode(Node): + def __init__(self, name, parent=None): + self.name = name + self.attributes = [] + self.methods = [] + self.parent = parent if parent is not None else "null" + +class DataNode(Node): + def __init__(self, vname, value): + self.name = vname + self.value = value + +class FunctionNode(Node): + def __init__(self, fname, params, localvars, instructions): + self.name = fname + self.params = params + self.localvars = localvars + self.instructions = instructions + +class ParamNode(Node): + def __init__(self, name): + self.name = name + +class LocalNode(Node): + def __init__(self, name, type="Object"): + self.name = name + self.type = type + +class InstructionNode(Node): + pass + +class AssignNode(InstructionNode): + def __init__(self, dest, source): + self.dest = dest + self.source = source + +class AssignIntNode(InstructionNode): + def __init__(self, dest: str, source: str): + self.dest: str = dest + self.source: str = source + +class ParentNode(InstructionNode): + def __init__(self, dest, source): + self.source = source + self.dest = dest + +####################### +##### ARITHMETICS ##### +####################### + +class ArithmeticNode(InstructionNode): + def __init__(self, dest, left, right): + self.dest = dest + self.left = left + self.right = right + +class PlusNode(ArithmeticNode): # + pass + +class MinusNode(ArithmeticNode): # + pass + +class StarNode(ArithmeticNode): # + pass + +class DivNode(ArithmeticNode): # + pass + +class EqualNode(ArithmeticNode): # + pass + +class XorNode(ArithmeticNode): # + pass + +class LessEqualNode(ArithmeticNode): # + pass + +class LessThanNode(ArithmeticNode): # + pass + +class CommentNode(Node): + def __init__(self, comment: str): + self.comment = '# ' + comment + +class EndOfLineNode(Node): + def __init__(self): + self.text = '\n' + + +class GetAttribNode(InstructionNode): # + def __init__(self, dest, instance, attr, attr_index): + self.dest = dest + self.instance = instance + self.attr = attr + self.attr_index = attr_index + + +class SetAttribNode(InstructionNode): + def __init__(self, instance, attr, source, attrindex): + self.instance: str = instance + self.attr: str = attr + self.source: str = source + self.attr_index: int = attrindex + +class GetIndexNode(InstructionNode): + def __init__(self, dest, instance, index): + self.dest = dest + self.instance = instance + self.index = index + +class SetIndexNode(InstructionNode): + def __init__(self, instance, index, source): + self.instance = instance + self.index = index + self.source = source + +class GetMethodNode(InstructionNode): + def __init__(self, dest, instance, methodindex, methodname, type): + self.dest = dest + self.instance = instance + self.method_index = methodindex + self.method_name = methodname + self.type = type + +class SetMethodNode(InstructionNode): + def __init__(self, dest, instance, attr, attrindex): + self.dest = dest + self.instance = instance + self.attr = attr + self.attr_index = attrindex + +class GetValueInIndexNode(InstructionNode): + def __init__(self, dest, instance, index): + self.dest = dest + self.instance = instance + self.index = index + +class SetValueInIndexNode(InstructionNode): + def __init__(self, instance, index, source): + self.instance = instance + self.index = index + self.source = source + +class AllocateNode(InstructionNode): + def __init__(self, itype, dest): + self.type = itype + self.dest = dest + +class AllocateIntNode(InstructionNode): + def __init__(self, dest, value): + self.dest = dest + self.value = value + +class AllocateStringNode(InstructionNode): + def __init__(self, dest, value): + self.dest = dest + self.value = value + + @property + def string(self): + stopvalues = [ + ('\\n', '\n'), + ('\\t', '\t'), + ('\\f', '\f'), + ('\\b', '\b') + ] + s = self.value + for old, new in stopvalues: + s = s.replace(old, new) + return s[1:-1] + + @property + def length(self): + stopvalues = ['\\n', '\\t', '\\b', '\\f'] + lenvalue = 0 + for item in stopvalues: + lenvalue += self.value.count(item) + return len(self.value) - lenvalue - 2 + + +class AllocateBoolNode(InstructionNode): + def __init__(self, dest, value): + self.dest = dest + self.value = value + +class AllocateBuildInNode(InstructionNode): + def __init__(self, dest, value, typename): + self.dest = dest + self.value = value + self.typename = typename ## int or bool + + +class AllocateNullNode(InstructionNode): + def __init__(self, dest): + self.dest = dest + +class ArrayNode(InstructionNode): # + def __init__(self, dest, size): + self.dest = dest + self.size = size + +class TypeOfNode(InstructionNode): # + def __init__(self, dest, obj): + self.obj = obj + self.dest = dest + +class LabelNode(InstructionNode): + def __init__(self, label): + self.label = label + +class GotoNode(InstructionNode): + def __init__(self, addr): + self.addr = addr + +class GotoIfNode(InstructionNode): + def __init__(self, cond, addr): + self.condition = cond + self.address = addr + +class StaticCallNode(InstructionNode): + def __init__(self, function, dest, argscount): + self.function = function + self.dest = dest + self.total_args = argscount + +class DynamicCallNode(InstructionNode): + def __init__(self, xtype, method, dest, argscount): + self.type = xtype + self.method_addr = method + self.dest = dest + self.total_args = argscount + +class ArgNode(InstructionNode): + def __init__(self, name, arg_index, total_args): + self.name = name + self.arg_index = arg_index + self.total_args = total_args + +class ReturnNode(InstructionNode): + def __init__(self, value=None): + self.value = value + +class LoadNode(InstructionNode): + def __init__(self, dest, msg): + self.dest = dest + self.msg = msg + +class LengthNode(InstructionNode): + def __init__(self, dest, str_address): + self.dest = dest + self.str_address = str_address + +class ConcatNode(InstructionNode): + def __init__(self, dest, s1, s2): + self.dest = dest + self.str1 = s1 + self.str2 = s2 + +class PrefixNode(InstructionNode): + pass + +class SubstringNode(InstructionNode): + def __init__(self, dest, str_address, start, length): + self.dest= dest + self.str_address= str_address + self.start= start + self.length= length + +class ToStrNode(InstructionNode): + def __init__(self, dest, ivalue): + self.dest = dest + self.ivalue = ivalue + +class ReadNode(InstructionNode): + def __init__(self, dest): + self.dest = dest + +class ReadStringNode(InstructionNode): + def __init__(self, dest): + self.dest = dest + +class ReadIntNode(InstructionNode): + def __init__(self, dest): + self.dest = dest + +class PrintNode(InstructionNode): + def __init__(self, str_addr): + self.str_addr = str_addr + +class PrintStringNode(InstructionNode): + def __init__(self, str_addr): + self.str_addr = str_addr + + +class PrintIntNode(InstructionNode): + def __init__(self, int_source): + self.int_source = int_source + +class PrintTypeNameNode(InstructionNode): + def __init__(self, address: str): + self.address: str = address + + +class AllocateNullNode(InstructionNode): + def __init__(self, dest): + self.dest = dest + + +class EqualAddressNode(InstructionNode): + def __init__(self, dest: str, left: str, right: str): + self.left: str = left + self.right: str = right + self.dest: str = dest + + +class TypeAddressNode(InstructionNode): + def __init__(self, dest: str, name: str): + self.name: str = name + self.dest: str = dest + +class EqualIntNode(InstructionNode): + def __init__(self, dest: str, left: str, right: str): + self.left: str = left + self.right: str = right + self.dest: str = dest + + +class EqualStrNode(InstructionNode): + def __init__(self, dest: str, left: str, right: str): + self.left: str = left + self.right: str = right + self.dest: str = dest + +class TypeNameNode(InstructionNode): + def __init__(self, dest, source): + self.dest = dest + self.source = source + + +class HaltNode(InstructionNode): + def __init__(self): + pass + +class CopyNode(InstructionNode): + def __init__(self, dest, source): + self.dest = dest + self.source = source + +class EmptyInstructionNode(InstructionNode): + def __init__(self): + pass + +def get_formatter(): + + class PrintVisitor(object): + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ProgramNode) + def visit(self, node): + dottypes = '\n'.join(self.visit(t) for t in node.dottypes) + dotdata = '\n'.join(self.visit(t) for t in node.dotdata) + dotcode = '\n'.join(self.visit(t) for t in node.dotcode) + + return f'.TYPES\n{dottypes}\n\n.DATA\n{dotdata}\n\n.CODE\n{dotcode}' + + @visitor.when(TypeNode) + def visit(self, node): + attributes = '\n\t'.join(f'attribute {x}' for x in node.attributes) + methods = '\n\t'.join(f'method {x}: {y}' for x,y in node.methods) + + return f'type {node.name} {{\n\t{attributes}\n\n\t{methods}\n}}' + + @visitor.when(FunctionNode) + def visit(self, node): + params = '\n\t'.join(self.visit(x) for x in node.params) + localvars = '\n\t'.join(self.visit(x) for x in node.localvars) + instructions = '\n\t'.join(self.visit(x) for x in node.instructions) + + return f'function {node.name} {{\n\t{params}\n\n\t{localvars}\n\n\t{instructions}\n}}' + + @visitor.when(ParamNode) + def visit(self, node): + return f'PARAM {node.name}' + + @visitor.when(LocalNode) + def visit(self, node): + return f'LOCAL {node.name}' + + @visitor.when(AssignNode) + def visit(self, node): + return f'{node.dest} = {node.source}' + + @visitor.when(PlusNode) + def visit(self, node): + return f'{node.dest} = {node.left} + {node.right}' + + @visitor.when(MinusNode) + def visit(self, node): + return f'{node.dest} = {node.left} - {node.right}' + + @visitor.when(StarNode) + def visit(self, node): + return f'{node.dest} = {node.left} * {node.right}' + + @visitor.when(DivNode) + def visit(self, node): + return f'{node.dest} = {node.left} / {node.right}' + + @visitor.when(AllocateNode) + def visit(self, node): + return f'{node.dest} = ALLOCATE {node.type}' + + @visitor.when(TypeOfNode) + def visit(self, node): + return f'{node.dest} = TYPEOF {node.type}' + + @visitor.when(StaticCallNode) + def visit(self, node): + return f'{node.dest} = CALL {node.function}' + + @visitor.when(DynamicCallNode) + def visit(self, node): + return f'{node.dest} = VCALL {node.type} {node.method}' + + @visitor.when(ArgNode) + def visit(self, node): + return f'ARG {node.name}' + + @visitor.when(ReturnNode) + def visit(self, node): + return f'RETURN {node.value if node.value is not None else ""}' + + printer = PrintVisitor() + return (lambda ast: printer.visit(ast)) diff --git a/src/utils/utils/ast_nodes_mips.py b/src/utils/utils/ast_nodes_mips.py new file mode 100644 index 000000000..c0f223e82 --- /dev/null +++ b/src/utils/utils/ast_nodes_mips.py @@ -0,0 +1,250 @@ +### nodos del ast de MIPS ### +class Node: + comment: str = "" + + def set_comment(self, comment: str) -> "Node": + self.comment = comment + return self + + +class ProgramNode(Node): + def __init__(self, dotdata, dottext): + self.dotdata = dotdata + self.dottext = dottext + + +class DataNode(Node): + data_type = "" + + def __init__(self, name, value): + self.name = name + self.value = value + +class InstructionNode(Node): + code: str = "" + + def __init__(self): + pass + +class EmptyDataNode(Node): + pass + +class EmptyInstructionNode(InstructionNode): + pass + + +# data nodes + +class WordDataNode(DataNode): + data_type = ".word" + + +class SpaceDataNode(DataNode): + data_type = ".space" + + +class AsciizDataNode(DataNode): + data_type = ".asciiz" + + + +# addr node + +class OneAddressNode(InstructionNode): + def __init__(self, dest): + self.dest = dest + + +class TwoAddressNode(InstructionNode): + def __init__(self, dest, source): + self.dest = dest + self.source = source + + +class ThreeAddressNode(InstructionNode): + def __init__(self, dest, source1, source2): + self.dest = dest + self.source1 = source1 + self.source2 = source2 + + +# arithmetic and logic instructions +class AddNode(ThreeAddressNode): + code = "add" + +class AddiNode(ThreeAddressNode): + code = "addi" + +class AdduNode(ThreeAddressNode): + code = "addu" + +class AddiuNode(ThreeAddressNode): + code = "addiu" + +class AndNode(ThreeAddressNode): + code = "and" + +class AndiNode(ThreeAddressNode): + code = "andi" + +class DivNode(TwoAddressNode): + code = "div" + +class DivuNode(TwoAddressNode): + code = "divu" + +class MultNode(TwoAddressNode): + code = "mult" + +class MultuNode(TwoAddressNode): + code = "multu" + +class NorNode(ThreeAddressNode): + code = "nor" + +class OrNode(ThreeAddressNode): + code = "or" + + +class OriNode(ThreeAddressNode): + code = "ori" + +class SllNode(ThreeAddressNode): + code = "sll" + +class SllvNode(ThreeAddressNode): + code = "sllv" + +class SraNode(ThreeAddressNode): + code = "sra" + +class SravNode(ThreeAddressNode): + code = "srav" + +class SrlNode(ThreeAddressNode): + code = "srl" + +class SrlvNode(ThreeAddressNode): + code = "srlv" + +class SubNode(ThreeAddressNode): + code = "sub" + +class SubuNode(ThreeAddressNode): + code = "subu" + +class XorNode(ThreeAddressNode): + code = "xor" + +class XoriNode(ThreeAddressNode): + code = "xori" + +class LuiNode(TwoAddressNode): + code = "lui" + +class SltNode(ThreeAddressNode): + code = "slt" + +class SltiNode(ThreeAddressNode): + code = "slti" + +class SltuNode(ThreeAddressNode): + code = "sltu" + +class SltiuNode(ThreeAddressNode): + code = "sltiu" + +class SleNode(ThreeAddressNode): + code = "sle" + +class SeqNode(ThreeAddressNode): + code = "seq" + + + +# branch and jump instructions +class BeqNode(ThreeAddressNode): + code = "beq" + +class BgtNode(ThreeAddressNode): + code = "bgt" + +class BgeNode(ThreeAddressNode): + code = "bge" + +class BgezNode(TwoAddressNode): + code = "bgez" + +class BgezalNode(TwoAddressNode): + code = "bgezal" + +class BgtzNode(TwoAddressNode): + code = "bgtz" + +class BlezNode(TwoAddressNode): + code = "blez" + +class BltzalNode(TwoAddressNode): + code = "bltzal" + +class BltzNode(TwoAddressNode): + code = "bltz" + +class BneNode(ThreeAddressNode): + code = "bne" + +class JumpNode(OneAddressNode): + code = "j" + +class JumpAndLinkNode(OneAddressNode): + code = "jal" + +class JumpAndLinkRegisterNode(OneAddressNode): + code = "jalr" + +class JumpRegisterNode(OneAddressNode): + code = "jr" + + +# Memory Access and Load Instructions + +class LoadInmediateNode(TwoAddressNode): + code = "li" + +class LoadAddressNode(TwoAddressNode): + code = "la" + +class LoadByteNode(TwoAddressNode): + code = "lb" + +class LoadWordNode(TwoAddressNode): + code = "lw" + +class StoreWordNode(TwoAddressNode): + code = "sw" + +class StoreByteNode(TwoAddressNode): + code = "sb" + +class MoveNode(TwoAddressNode): + code = "move" + +class MoveFromLowNode(OneAddressNode): + code = "mflo" + +class MoveFromHighNode(OneAddressNode): + code = "mfhi" + + +# end memory access and load instructions +class SystemCallNode(InstructionNode): + code = "syscall" + +class LabelNode(InstructionNode): + def __init__(self, name): + self.name = name + +class CommentNode(InstructionNode): + def __init__(self, comment): + self.comment = comment + diff --git a/src/utils/utils/auxiliar_methods.py b/src/utils/utils/auxiliar_methods.py new file mode 100644 index 000000000..877a17684 --- /dev/null +++ b/src/utils/utils/auxiliar_methods.py @@ -0,0 +1,73 @@ +from os import read + +def erase_multiline_comment(str): + errors = [] + result = '' + i = 0 + row = 1 + column = 1 + + comm_init = 0 + comm_end = 0 + + while i < len(str): + if str[i] == '\n': + result += '\n' + row += 1 + column = 1 + i += 1 + continue + + elif str[i] == '\t': + result += ' ' + column += 4 + i += 1 + continue + + if comm_init == 0: + if i + 1 < len(str): + if str[i] == '(' and str[i + 1] == '*': + comm_init += 1 + result += ' ' + column += 2 + i += 2 + continue + elif str[i] == '*' and str[i + 1] == ')': + errors.append(f'({row}, {column}) - LexicographicError: EOF in comment') + result += ' ' + column += 2 + i += 2 + continue + result += str[i] + column += 1 + i += 1 + + else: + if i + 1 < len(str): + if str[i] == '(' and str[i + 1] == '*': + comm_init += 1 + result += ' ' + column += 2 + i += 2 + continue + elif str[i] == '*' and str[i + 1] == ')': + comm_end += 1 + if comm_end > comm_init: + errors.append(f'({row}, {column}) - LexicographicError: EOF in comment') + elif comm_end == comm_init: + comm_init = 0 + comm_end = 0 + + result += ' ' + column += 2 + i += 2 + continue + result += ' ' + column += 1 + i += 1 + + if comm_init > comm_end: + errors.append(f'({row}, {column}) - LexicographicError: EOF in comment') + + return errors, result + diff --git a/src/utils/utils/cil_to_mips.py b/src/utils/utils/cil_to_mips.py new file mode 100644 index 000000000..82aeb7ddf --- /dev/null +++ b/src/utils/utils/cil_to_mips.py @@ -0,0 +1,1264 @@ +from . import visitor +from . import ast_nodes_cil as cil +from . import ast_nodes_mips as mips + + +class BaseCILToMIPSVisitor: + def __init__(self, context): + self.dotdata = [] + self.dottext = [] + + self.context = context + + self.current_function = None + self.current_function_stk = [] + + ## basic methods + def register_instruction(self, instruction): + self.dottext.append(instruction) + return instruction + + def register_empty_instruction(self): + self.dottext.append(mips.EmptyInstructionNode()) + return self.dottext[-1] + + def register_empty_data(self): + self.dotdata.append(mips.EmptyDataNode()) + + def register_comment(self, comment): + self.dottext.append(mips.CommentNode(comment)) + return self.dottext[-1] + + ## register basic data types + def register_word(self, name, value): + data = mips.WordDataNode(name, value) + self.dotdata.append(data) + return data + + def register_asciiz(self, name, value): + data = mips.AsciizDataNode(name, value) + self.dotdata.append(data) + return data + + def register_space(self, name, value): + data = mips.SpaceDataNode(name, value) + self.dotdata.append(data) + return data + + def register_instantiation(self, size): + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + if isinstance(size, int): + self.register_instruction(mips.AddiNode("$a0", "$zero", f"{size}")) + if isinstance(size, str): + self.register_instruction(mips.MoveNode("$a0", size)) + self.register_instruction(mips.SystemCallNode()) + + def to_data_type(self, data_name: str, type_name: str): + return f"type_{type_name}_{data_name}" + + def offset_of(self, local_name: str): + stack_size = 4 * len(self.current_function_stk) + index = 4 * self.current_function_stk.index(local_name) + return stack_size - index - 4 + + +class CILToMIPSVisitor(BaseCILToMIPSVisitor): + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(cil.ProgramNode) + def visit(self, node: cil.ProgramNode): + for type_node in node.dottypes: + self.visit(type_node) + + ## + for type_node in node.dottypes: + self.register_word(self.to_data_type("name_size", type_node.name), str(len(type_node.name))) + self.register_asciiz(self.to_data_type("name", type_node.name), f'\"{type_node.name}\"') + self.register_empty_data() + + # + self.register_space("buffer_input", 1024) + self.register_asciiz("debug_log", '"debug_log\\n"') + + for function_node in node.dotcode: + self.visit(function_node) + + return mips.ProgramNode(self.dotdata, self.dottext) + + @visitor.when(cil.TypeNode) + def visit(self, node: cil.TypeNode): + #por cada atributo y metodo reservo una palabra + 2 + size = 4 * (len(node.attributes) + len(node.methods) + 2) + + self.register_word(f"type_{node.name}", str(size)) + self.register_word(self.to_data_type("inherits_from", node.name), f"type_{node.parent}" if node.parent != "null" else "0") + self.register_word(self.to_data_type("name_address", node.name), f"type_{node.name}_name_size") + + for method, function in node.methods: + self.register_word(self.to_data_type(method, node.name), function) + + self.register_empty_data() + + @visitor.when(cil.DataNode) + def visit(self, node: cil.DataNode): + pass + + @visitor.when(cil.FunctionNode) + def visit(self, node: cil.FunctionNode): + self.current_function = node + self.register_instruction(mips.LabelNode(node.name)) + + param_names = [x.name for x in self.current_function.params] + local_names = [x.name for x in self.current_function.localvars] + ## + ## self.current_function_stk = ["$ra"] + local_names + self.current_function_stk = ["$ra"] + param_names + local_names + + locals_size = 4 * len(self.current_function.localvars) + stack_size = 4 * len(self.current_function_stk) + + # if node.name != "main": + # self.register_comment("FUNCT PARAMS") + + # for i, name in enumerate(param_names, start=2): + # self.register_comment(f" {name} = {stack_size - (4 * i)}($sp)") + + # self.register_comment(f" $ra = {stack_size - 4}($sp)") + + if self.current_function.localvars: + # Espacio para las variables locales + self.register_instruction(mips.AddiNode("$sp", "$sp", f"{-locals_size}")) + # self.register_empty_instruction() + + for inst in node.instructions: + try: + if isinstance(inst, (cil.EmptyInstructionNode, cil.CommentNode)): + continue + self.visit(inst) + self.register_empty_instruction() + except Exception as e: + print('ERROR ' + str(e)) + + if node.name != "main" and self.current_function.localvars: + self.register_comment("FREE SPACE FOR LOCALVARS") + self.register_instruction(mips.AddiNode("$sp", "$sp", f"{locals_size}")) + self.register_empty_instruction() + + if node.name != "main": + self.register_instruction(mips.JumpRegisterNode("$ra")) + self.register_empty_instruction() + + + @visitor.when(cil.LocalNode) + def visit(self, node: cil.LocalNode): + pass + + @visitor.when(cil.AssignNode) + def visit(self, node: cil.AssignNode): + self.register_comment(f"{node.dest} <- {node.source}") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.AssignIntNode) + def visit(self, node: cil.AssignIntNode): + self.register_comment(f"{node.dest} <- {node.source} WHERE {node.source} IS INT") + self.register_instantiation(12) + + # puntero para node.source + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + # $t1 = type of node.source + self.register_instruction(mips.LoadWordNode("$t1", "0($t0)")) + # $t2 = value of node.source + self.register_instruction(mips.LoadWordNode("$t2", "8($t0)")) + + # Save type of node.dest + self.register_instruction(mips.StoreWordNode("$t1", "0($v0)")) + # Save size of node.dest + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + # Save value of node.dest + self.register_instruction(mips.StoreWordNode("$t2", "8($v0)")) + + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.ParentNode) + def visit(self, node: cil.ParentNode): + self.register_comment(f"{node.dest} PARENT OF: {node.source}") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "4($t0)")) + + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.PlusNode) + def visit(self, node: cil.PlusNode): + self.register_comment("ADD") + ## procesando binary op + # $t0 left op addr + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + # $t0 left op value + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + # $t1 right op addr + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + # $t1 right op value + self.register_instruction(mips.LoadWordNode("$t1", "8($t1)")) + + # $t2 = $t0 + $t1 + self.register_instruction(mips.AddNode("$t2", "$t0", "$t1")) + + # procesando op binaria de tipo Int + # self.register_empty_instruction() + # $t0 = node.dest + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + # asignando el valor en la 3era word del objeto + self.register_instruction(mips.StoreWordNode("$t2", "8($t0)")) + + + @visitor.when(cil.MinusNode) + def visit(self, node: cil.MinusNode): + self.register_comment("MINUS") + ## procesando binary op + # $t0 left op addr + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + # $t0 left op value + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + # $t1 right op addr + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + # $t1 right op value + self.register_instruction(mips.LoadWordNode("$t1", "8($t1)")) + + # $t2 = $t0 - $t1 + self.register_instruction(mips.SubNode("$t2", "$t0", "$t1")) + + # procesando op binaria de tipo Int + # self.register_empty_instruction() + # $t0 = node.dest + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + # asignando el valor en la 3era word del objeto + self.register_instruction(mips.StoreWordNode("$t2", "8($t0)")) + + @visitor.when(cil.StarNode) + def visit(self, node: cil.StarNode): + self.register_comment("MULT") + + ## procesando binary op + # $t0 left op addr + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + # $t0 left op value + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + # $t1 right op addr + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + # $t1 right op value + self.register_instruction(mips.LoadWordNode("$t1", "8($t1)")) + + # $t2 = $t0 * $t1 + self.register_instruction(mips.MultNode("$t0", "$t1")) + # mode from LOW + self.register_instruction(mips.MoveFromLowNode("$t2")) + + # procesando op binaria de tipo Int + # self.register_empty_instruction() + # $t0 = node.dest + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + # asignando el valor en la 3era word del objeto + self.register_instruction(mips.StoreWordNode("$t2", "8($t0)")) + + @visitor.when(cil.DivNode) + def visit(self, node: cil.DivNode): + self.register_comment("DIV") + + ## procesando binary op + # $t0 left op addr + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + # $t0 left op value + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + # $t1 right op addr + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + # $t1 right op value + self.register_instruction(mips.LoadWordNode("$t1", "8($t1)")) + + # $t2 = $t0 / $t1 + self.register_instruction(mips.DivNode("$t0", "$t1")) + # move from low + self.register_instruction(mips.MoveFromLowNode("$t2")) + + # procesando op binaria de tipo Int + # self.register_empty_instruction() + # $t0 = node.dest + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + # asignando el valor en la 3era word del objeto + self.register_instruction(mips.StoreWordNode("$t2", "8($t0)")) + + @visitor.when(cil.EqualNode) + def visit(self, node: cil.EqualNode): + self.register_comment("EQUAL") + + # $t0 para el left + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + # $t1 para el right + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + # t2 = $t0 == $t1 + self.register_instruction(mips.SeqNode("$t2", "$t0", "$t1")) + + # $t0 = node.dest + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + # asignando el valor en la 3era word del objeto + self.register_instruction(mips.StoreWordNode("$t2", "8($t0)")) + + @visitor.when(cil.XorNode) + def visit(self, node: cil.XorNode): + self.register_comment("XOR") + + ## procesando binary op + # $t0 left op addr + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + # $t0 left op value + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + # $t1 right op addr + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + # $t1 right op value + self.register_instruction(mips.LoadWordNode("$t1", "8($t1)")) + + # $t0 = $t0 ^ $t1 + self.register_instruction(mips.XorNode("$t2", "$t0", "$t1")) + + # procesando op binaria de tipo Int + # self.register_empty_instruction() + # $t0 = node.dest + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + # asignando el valor en la 3era word del objeto + self.register_instruction(mips.StoreWordNode("$t2", "8($t0)")) + + + @visitor.when(cil.LessEqualNode) + def visit(self, node: cil.LessEqualNode): + self.register_comment("LESS EQUAL") + + ## procesando binary op + # $t0 left op addr + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + # $t0 left op value + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + # $t1 right op addr + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + # $t1 right op value + self.register_instruction(mips.LoadWordNode("$t1", "8($t1)")) + + # $t2 = $t0 <= $t1 + self.register_instruction(mips.SleNode("$t2", "$t0", "$t1")) + + # procesando op binaria de tipo Int + # self.register_empty_instruction() + # $t0 = node.dest + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + # asignando el valor en la 3era word del objeto + self.register_instruction(mips.StoreWordNode("$t2", "8($t0)")) + + @visitor.when(cil.LessThanNode) + def visit(self, node: cil.LessThanNode): + self.register_comment("LESS THAN") + ## procesando binary op + # $t0 left op addr + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + # $t0 left op value + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + # $t1 right op addr + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + # $t1 right op value + self.register_instruction(mips.LoadWordNode("$t1", "8($t1)")) + + # $t2 = $t0 < $t1 + self.register_instruction(mips.SltNode("$t2", "$t0", "$t1")) + + # procesando op binaria de tipo Int + # self.register_empty_instruction() + # $t0 = node.dest + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + # asignando el valor en la 3era word del objeto + self.register_instruction(mips.StoreWordNode("$t2", "8($t0)")) + + + @visitor.when(cil.EndOfLineNode) ###### + def visit(self, node: cil.EndOfLineNode): + pass + + @visitor.when(cil.GetAttribNode) + def visit(self, node: cil.GetAttribNode): + node_id = hash(node) + self.register_comment(f"Get attribute {node.attr} of {node.instance}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.instance)}($sp)"))# direccion de la instancia + self.register_instruction(mips.LoadWordNode("$t1", f"{4 * (node.attr_index + 2)}($t0)")) # el atributo de la instancia + + self.register_instruction(mips.LoadWordNode("$t2", "0($t1)")) + self.register_instruction(mips.LoadAddressNode("$t3", "type_Int")) + self.register_instruction(mips.LoadAddressNode("$t4", "type_Bool")) + + self.register_instruction(mips.AddiNode("$t5", "$zero", "1")) + self.register_instruction(mips.SeqNode("$t6", "$t2", "$t3")) + self.register_instruction(mips.BeqNode("$t6", "$t5", f"int_get_attribute_{node_id}")) + self.register_instruction(mips.SeqNode("$t6", "$t2", "$t4")) + self.register_instruction(mips.BeqNode("$t6", "$t5", f"bool_get_attribute_{node_id}")) + self.register_instruction(mips.JumpNode(f"object_get_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"int_get_attribute_{node_id}")) + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + self.register_instruction(mips.StoreWordNode("$t3", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.LoadWordNode("$t5", "8($t1)")) + self.register_instruction(mips.StoreWordNode("$t5", "8($v0)")) + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.JumpNode(f"end_get_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"bool_get_attribute_{node_id}")) + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + self.register_instruction(mips.StoreWordNode("$t4", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.LoadWordNode("$t5", "8($t1)")) + self.register_instruction(mips.StoreWordNode("$t5", "8($v0)")) + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.JumpNode(f"end_get_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"object_get_attribute_{node_id}")) + self.register_instruction(mips.StoreWordNode("$t1",f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.LabelNode(f"end_get_attribute_{node_id}")) + + + @visitor.when(cil.SetAttribNode) + def visit(self, node: cil.SetAttribNode): + node_id = hash(node) + self.register_comment(f"Set attribute {node.attr} of {node.instance}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.instance)}($sp)")) # instancia $t0 + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.source)}($sp)")) # fuente source $t1 + + self.register_instruction(mips.BeqNode("$t1", "$zero", f"object_set_attribute_{node_id}")) + + self.register_instruction(mips.LoadWordNode("$t2", "0($t1)")) + self.register_instruction(mips.LoadAddressNode("$t3", "type_Int")) + self.register_instruction(mips.LoadAddressNode("$t4", "type_Bool")) + self.register_instruction(mips.AddiNode("$t5", "$zero", "1")) + self.register_instruction(mips.SeqNode("$t6", "$t2", "$t3")) + self.register_instruction(mips.BeqNode("$t6", "$t5", f"int_set_attribute_{node_id}")) + self.register_instruction(mips.SeqNode("$t6", "$t2", "$t4")) + self.register_instruction(mips.BeqNode("$t6", "$t5", f"bool_set_attribute_{node_id}")) + self.register_instruction(mips.JumpNode(f"object_set_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"int_set_attribute_{node_id}")) + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + self.register_instruction(mips.StoreWordNode("$t3", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.LoadWordNode("$t5", "8($t1)")) + self.register_instruction(mips.StoreWordNode("$t5", "8($v0)")) + + # {node.instance}.{node.attr} = {node.source} + self.register_instruction(mips.StoreWordNode("$v0", f"{4 * (node.attr_index + 2)}($t0)")) + self.register_instruction(mips.JumpNode(f"end_set_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"bool_set_attribute_{node_id}")) + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + self.register_instruction(mips.StoreWordNode("$t4", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.LoadWordNode("$t5", "8($t1)")) + self.register_instruction(mips.StoreWordNode("$t5", "8($v0)")) + + #{node.instance}.{node.attr} = {node.source} + self.register_instruction(mips.StoreWordNode("$v0", f"{4 * (node.attr_index + 2)}($t0)")) + self.register_instruction(mips.JumpNode(f"end_set_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"object_set_attribute_{node_id}")) + + #{node.instance}.{node.attr} = {node.source} + self.register_instruction(mips.StoreWordNode("$t1", f"{4 * (node.attr_index + 2)}($t0)")) + self.register_instruction(mips.LabelNode(f"end_set_attribute_{node_id}")) + + @visitor.when(cil.GetIndexNode) + def visit(self, node: cil.GetIndexNode): + # ARRAY instance[4 * index] = source + self.register_comment(f"{node.dest} = ARRAY {node.instance}[{node.index}]") + + # $t0 = i, $t0 = array[i], $t1 = 4, $t0 = $t0 * 4 + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.index)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + + # $t1 = instancia, moviendo el puntero al indice, $t1 = valor en la pos + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "$t0")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t1)")) + + # en el destino se fuarda el valor del array[i] + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.SetIndexNode) + def visit(self, node: cil.SetIndexNode): + # ARRAY instance[4 * index] = source + self.register_comment(f"ARRAY {node.instance}[{node.index}] = {node.source}") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.index)}($sp)")) # $t0 = index + + # $t0 = valor del index + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + # $t1 = 4, $t0 = $t0 * 4 + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + + # $t1 = node.instance, moviendo el puntero al indice + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "$t0")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + # guardando la word + self.register_instruction(mips.StoreWordNode("$t0", "0($t1)")) + + + @visitor.when(cil.GetMethodNode) + def visit(self, node: cil.GetMethodNode): + self.register_comment(f"GET METHOD {node.method_name} OF {node.type}") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t0)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "12")) + + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.method_index)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"8($t1)")) + self.register_instruction(mips.SllNode("$t1", "$t1", "2")) + self.register_instruction(mips.AddNode("$t0", "$t0", "$t1")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t0)")) + + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.SetMethodNode) + def visit(self, node: cil.SetMethodNode): + pass + + @visitor.when(cil.GetValueInIndexNode) + def visit(self, node: cil.GetValueInIndexNode): + self.register_comment(f"ARRAY {node.instance}[{node.index}]") + + # $t0 = i, $t0 = array[i], $t1 = 4, $t0 = $t0 * 4 + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.index)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + + # $t1 = instancia, moviendo el puntero al indice, $t1 = valor en la pos + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "$t0")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t1)")) + self.register_instruction(mips.LoadWordNode("$t2", f"{self.offset_of(node.dest)}($sp)")) + + self.register_instruction(mips.StoreWordNode("$t0", "8($t2)")) + + @visitor.when(cil.SetValueInIndexNode) + def visit(self, node: cil.SetValueInIndexNode): + # "ARRAY {node.instance}[{node.index}] = {node.source}" + self.register_comment(f"ARRAY {node.instance}[{node.index}] = {node.source}") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.index)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "$t0")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.StoreWordNode("$t0", "0($t1)")) + + + @visitor.when(cil.AllocateNode) + def visit(self, node: cil.AllocateNode): + self.register_comment(f"ALLOCATE {node.type}") + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.LoadWordNode("$a0", f"type_{node.type}")) + self.register_instruction(mips.SystemCallNode()) + + # $t0 = tipo de direccion + self.register_instruction(mips.LoadAddressNode("$t0", f"type_{node.type}")) + # ajustando tipo en la 1era word + self.register_instruction(mips.StoreWordNode("$t0", "0($v0)")) + # tamaño en la 2da word + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + # {node.dest} -> direccion de -> {node.type} + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.AllocateIntNode) + def visit(self, node: cil.AllocateIntNode): + self.register_comment(f"ALLOCATE INT {node.value}") + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + # $t0 = tipo de direccion + self.register_instruction(mips.LoadAddressNode("$t0", "type_Int")) + # ajustando tipo en la 1era word + self.register_instruction(mips.StoreWordNode("$t0", "0($v0)")) + # tamaño en la 2da word + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.AddiNode("$t0", "$zero", node.value)) + # guardando el valoren la 3era word + self.register_instruction(mips.StoreWordNode("$t0", "8($v0)")) + # dest = dir del int allocado + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.AllocateBoolNode) + def visit(self, node: cil.AllocateBoolNode): + self.register_comment(f"ALLOCATE BOOL {node.value}") + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + # $t0 = tipo de direccion + self.register_instruction(mips.LoadAddressNode("$t0", "type_Bool")) + # ajustando tipo en la 1era word + self.register_instruction(mips.StoreWordNode("$t0", "0($v0)")) + # tamaño en la 2da word + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.AddiNode("$t0", "$zero", node.value)) + # guardando el valoren la 3era word + self.register_instruction(mips.StoreWordNode("$t0", "8($v0)")) + + # dest = dir del int allocado + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.AllocateStringNode) + def visit(self, node: cil.AllocateStringNode): + self.register_comment(f"ALLOCATING STRING") + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + + # $a0 = length of string + 9 for 4 bytes for the type, 4 bytes for the length of the string and 1 byte for null-terminator + self.register_instruction(mips.AddiNode("$a0", "$zero", f"{9 + node.length}")) + self.register_instruction(mips.SystemCallNode()) + + #### + self.register_instruction(mips.LoadAddressNode("$t0", "type_String")) + # tipo en la 1era word + self.register_instruction(mips.StoreWordNode("$t0", f"0($v0)")) + + self.register_instruction(mips.AddiNode("$t0", "$zero", f"{9 + node.length}")) + # len en la 2da word + self.register_instruction(mips.StoreWordNode("$t0", f"4($v0)")) + + for i, c in enumerate(node.string): + # ec = c.replace('\n', '\\n').replace('\t', '\\t').replace('\b', '\\b').replace('\f', '\\f') + self.register_comment(f"CHAR -----------------> {c}") + self.register_instruction(mips.AddiNode("$t0", "$zero", f"{ord(c)}")) + self.register_instruction(mips.StoreByteNode("$t0", f"{i + 8}($v0)")) + + # null-term al final del str + self.register_instruction(mips.StoreByteNode("$zero", f"{node.length + 8}($v0)")) + # dest = valor + self.register_comment(f"{node.dest} = {node.value}") + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.AllocateNullNode) + def visit(self, node: cil.AllocateNullNode): + self.register_comment(f"ALLOCATE NUll into {node.dest}") + + # node.dest = 0 + self.register_instruction(mips.StoreWordNode("$zero", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.ArrayNode) + def visit(self, node: cil.ArrayNode): + self.register_comment(f"ARRAY OF SIZE [{node.size}]") + + # $t0 = {node.size}, $t0 = value of the size, $t1 = 4, $t0 = $t0 * 4 + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.size)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + + self.register_instantiation("$t0") + # destino = new Array[size] + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.TypeOfNode) + def visit(self, node: cil.TypeOfNode): + self.register_comment(f"{node.dest} STORE <- TYPEOF {node.obj}") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.obj)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t0)")) + + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.GotoNode) + def visit(self, node: cil.GotoNode): + self.register_comment(f"GO TO {node.addr}") + + self.register_instruction(mips.JumpNode(node.addr)) + + @visitor.when(cil.GotoIfNode) + def visit(self, node: cil.GotoIfNode): + self.register_comment(f"IF {node.condition} IS TRUE -> GO TO {node.address}") + # addr de la condicion + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.condition)}($sp)")) + # cargando valor y comparandolo con 1 + self.register_instruction(mips.LoadWordNode("$t0", f"8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "1")) + self.register_instruction(mips.BeqNode("$t0", "$t1", node.address)) + + @visitor.when(cil.StaticCallNode) + def visit(self, node: cil.StaticCallNode): + self.register_comment(f"STATIC FUNCT CALL {node.function}") + + self.register_instruction(mips.JumpAndLinkNode(node.function)) + self.register_instruction(mips.LoadWordNode("$ra", f"{4 * node.total_args}($sp)")) + + # guardar funct en destino + self.register_instruction(mips.StoreWordNode("$v1", f"{self.offset_of(node.dest) + 4 * node.total_args + 4}($sp)")) + + # espacio para args + self.register_instruction(mips.AddiNode("$sp", "$sp", f"{4 * node.total_args + 4}")) + + + @visitor.when(cil.DynamicCallNode) + def visit(self, node: cil.DynamicCallNode): + self.register_comment(f"DYNAMIC FUNCT CALL {node.method_addr}") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.method_addr) + 4 * node.total_args + 4}($sp)")) + self.register_instruction(mips.JumpAndLinkRegisterNode("$t0")) + self.register_instruction(mips.LoadWordNode("$ra", f"{4 * node.total_args}($sp)")) + + # guardar funct en destino + self.register_instruction(mips.StoreWordNode("$v1", f"{self.offset_of(node.dest) + 4 * node.total_args + 4}($sp)")) + # espacio para args + self.register_instruction(mips.AddiNode("$sp", "$sp", f"{4 * node.total_args + 4}")) + + + @visitor.when(cil.ArgNode) + def visit(self, node: cil.ArgNode): + if node.arg_index == 0: + self.register_comment("FUNCT ARGS") + ## reservando espacio para los argumentos + self.register_instruction(mips.AddiNode("$sp", "$sp", f"-{4 * node.total_args + 4}")) + ## funcion de retorno (espacio) + self.register_instruction(mips.StoreWordNode("$ra", f"{4 * (node.total_args)}($sp)")) + self.register_empty_instruction() + + # self.register_comment(f"Argument {node.name}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.name) + 4 * node.total_args + 4}($sp)")) + # guardando el node.name + self.register_instruction(mips.StoreWordNode("$t0", f"{4 * (node.total_args - node.arg_index - 1)}($sp)")) + + + @visitor.when(cil.ReturnNode) + def visit(self, node: cil.ReturnNode): + if node.value.isdigit(): + self.register_instruction(mips.AddiNode("$v1", "$zero", f"{node.value}")) + return + offset = self.offset_of(node.value) + self.register_instruction(mips.LoadWordNode("$v1", f"{offset}($sp)")) + + + @visitor.when(cil.LengthNode) + def visit(self, node: cil.LengthNode): + self.register_comment(f"LENGHT: {node.dest} <- {node.str_address}") + ### + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.str_address)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", "4($t0)")) + + # borrando el tipo, tamaño y el null-term + self.register_instruction(mips.AddiNode("$t1", "$t1", "-9")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + self.register_instruction(mips.StoreWordNode("$t1", "8($t0)")) + + @visitor.when(cil.ConcatNode) + def visit(self, node: cil.ConcatNode): + self.register_comment(f"{node.dest} = CONCAT ({node.str1}, {node.str2})") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.str1)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.str2)}($sp)")) + # $t2 lenght de str1, $t3 lenght de str2 + self.register_instruction(mips.LoadWordNode("$t2", "4($t0)")) + self.register_instruction(mips.LoadWordNode("$t3", "4($t1)")) + self.register_instruction(mips.AddiNode("$t2", "$t2", "-9")) + self.register_instruction(mips.AddiNode("$t3", "$t3", "-9")) + + # length del la cadena concatenada + self.register_instruction(mips.AddNode("$t4", "$t2", "$t3")) + self.register_instruction(mips.AddiNode("$t4", "$t4", "9")) + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.MoveNode("$a0", "$t4")) + self.register_instruction(mips.SystemCallNode()) + self.register_instruction(mips.AddiNode("$t4", "$t4", "-9")) + self.register_instruction(mips.AddNode("$t5", "$zero", "$v0")) + self.register_instruction(mips.AddiNode("$t5", "$t5", "8")) + + self.register_instruction(mips.LoadAddressNode("$t8", "type_String")) + self.register_instruction(mips.StoreWordNode("$t8", f"0($v0)")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreWordNode("$a0", f"4($v0)")) + + # copiando s1 para el string nuevo + self.register_instruction(mips.XorNode("$t6", "$t6", "$t6")) # $t6 c + self.register_instruction(mips.LabelNode("while_copy_str1_start")) + self.register_instruction(mips.BeqNode("$t6", "$t2", "while_copy_str1_end")) + self.register_instruction(mips.LoadByteNode("$t7", f"8($t0)")) + self.register_instruction(mips.StoreByteNode("$t7", f"0($t5)")) + self.register_instruction(mips.AddNode("$t0", "$t0", "1")) + self.register_instruction(mips.AddNode("$t5", "$t5", "1")) + self.register_instruction(mips.AddiNode("$t6", "$t6", "1")) + self.register_instruction(mips.JumpNode("while_copy_str1_start")) + self.register_instruction(mips.LabelNode("while_copy_str1_end")) + + # copiando s2 para el string nuevo + self.register_instruction(mips.LabelNode("while_copy_str2_start")) + self.register_instruction(mips.BeqNode("$t6", "$t4", "while_copy_str2_end")) + self.register_instruction(mips.LoadByteNode("$t7", f"8($t1)")) + self.register_instruction(mips.StoreByteNode("$t7", f"0($t5)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "1")) + self.register_instruction(mips.AddNode("$t5", "$t5", "1")) + self.register_instruction(mips.AddiNode("$t6", "$t6", "1")) + self.register_instruction(mips.JumpNode("while_copy_str2_start")) + self.register_instruction(mips.LabelNode("while_copy_str2_end")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreByteNode("$zero", f"0($t5)")) + self.register_empty_instruction() + + # valor de retorno + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + + + @visitor.when(cil.SubstringNode) + def visit(self, node: cil.SubstringNode): + self.register_comment(f"{node.dest} <- {node.str_address}[{node.start}:{node.start} + {node.length}]") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.str_address)}($sp)")) # $t0 str dir + self.register_instruction(mips.LoadWordNode("$t1", f"4($t0)")) # $t1 str tamaño + self.register_instruction(mips.AddiNode("$t1", "$t1", "-9")) # $t1 str tamaño + 9 + self.register_instruction(mips.LoadWordNode("$t2", f"{self.offset_of(node.start)}($sp)")) # $t2 str init + self.register_instruction(mips.LoadWordNode("$t2", "8($t2)")) + self.register_instruction(mips.LoadWordNode("$t3", f"{self.offset_of(node.length)}($sp)")) # $t3 str tamaño + self.register_instruction(mips.LoadWordNode("$t3", "8($t3)")) + self.register_instruction(mips.AddNode("$t4", "$t2", "$t3")) # $t4 str init + tamaño de str + + self.register_empty_instruction() + self.register_instruction(mips.BgtNode("$t4", "$t1", "substring_out_of_bounds")) + + self.register_empty_instruction() + self.register_instruction(mips.AddiNode("$t3", "$t3", "9")) + self.register_instantiation("$t3") + self.register_instruction(mips.AddiNode("$t3", "$t3", "-9")) + + self.register_empty_instruction() + self.register_instruction(mips.LoadAddressNode("$t5", "type_String")) + self.register_instruction(mips.StoreWordNode("$t5", f"0($v0)")) # tipo en la primera word + # + + self.register_empty_instruction() + self.register_instruction(mips.StoreWordNode("$a0", f"4($v0)")) # tamaño en la 2da word + + self.register_empty_instruction() + self.register_instruction(mips.AddiNode("$t0", "$t0", "8")) #1er byte ddel str + self.register_instruction(mips.AddNode("$t0", "$t0", "$t2")) #1er byte ddel substr + self.register_instruction(mips.MoveNode("$t5", "$v0")) # new str dir + self.register_instruction(mips.AddNode("$t5", "$t5", "8")) #1er byte ddel str + self.register_instruction(mips.XorNode("$t6", "$t6", "$t6")) # counter + self.register_instruction(mips.LabelNode("while_copy_substr_start")) + self.register_instruction(mips.BeqNode("$t6", "$t3", "while_copy_substr_end")) + self.register_instruction(mips.LoadByteNode("$t7", f"0($t0)")) + self.register_instruction(mips.StoreByteNode("$t7", f"0($t5)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "1")) # str addr ++ + self.register_instruction(mips.AddNode("$t5", "$t5", "1")) # new str addr ++ + self.register_instruction(mips.AddiNode("$t6", "$t6", "1")) # counter ++ + self.register_instruction(mips.JumpNode("while_copy_substr_start")) + self.register_instruction(mips.LabelNode("while_copy_substr_end")) + + self.register_empty_instruction() + self.register_instruction(mips.StoreByteNode("$zero", f"0($t5)")) # asignando el null del final + + self.register_empty_instruction() + # {node.dest} = {node.str_address}[{node.start}:{node.start} + {node.length}] + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + self.register_instruction(mips.JumpNode("substring_not_out_of_bounds")) + + self.register_empty_instruction() + self.register_instruction(mips.LabelNode("substring_out_of_bounds")) + # TODO: Throw an exception + self.register_instruction(mips.LoadInmediateNode("$v0", "17")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "1")) + self.register_instruction(mips.SystemCallNode()) + + self.register_empty_instruction() + self.register_instruction(mips.LabelNode("substring_not_out_of_bounds")) + + + @visitor.when(cil.ToStrNode) + def visit(self, node: cil.ToStrNode): + pass + + @visitor.when(cil.ReadNode) + def visit(self, node: cil.ReadNode): + pass + + @visitor.when(cil.ReadStringNode) + def visit(self, node: cil.ReadStringNode): + self.register_instruction(mips.LoadInmediateNode("$v0", "8")) + self.register_instruction(mips.LoadAddressNode("$a0", "buffer_input")) + self.register_instruction(mips.LoadInmediateNode("$a1", "1024")) + self.register_instruction(mips.SystemCallNode()) + + self.register_instruction(mips.XorNode("$t0", "$t0", "$t0")) + self.register_instruction(mips.LabelNode("while_read_start")) + self.register_instruction(mips.LoadByteNode("$t1", "buffer_input($t0)")) + + # + + self.register_instruction(mips.AddiNode("$t2", "$zero", "10")) + self.register_instruction(mips.BeqNode("$t1", "$t2", "while_read_end")) + self.register_instruction(mips.AddiNode("$t2", "$zero", "13")) + self.register_instruction(mips.BeqNode("$t1", "$t2", "while_read_end")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "1")) # ++ + self.register_instruction(mips.JumpNode("while_read_start")) + self.register_instruction(mips.LabelNode("while_read_end")) + + # self.register_instruction(mips.LoadInmediateNode("$v0", "1")) + # self.register_instruction(mips.MoveNode("$a0", "$t0")) + # self.register_instruction(mips.SystemCallNode()) + # + + self.register_empty_instruction() + self.register_instruction(mips.AddiNode("$t0", "$t0", "9")) # espacio para sixe, tipo y null-term + self.register_instantiation("$t0") + self.register_instruction(mips.AddiNode("$t0", "$t0", "-9")) + self.register_instruction(mips.LoadAddressNode("$t2", "type_String")) + self.register_instruction(mips.StoreWordNode("$t2", "0($v0)")) # tipo en la 1era word + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) # len en la 2da + + self.register_empty_instruction() + self.register_instruction(mips.AddiNode("$t3", "$v0", "8")) + self.register_instruction(mips.XorNode("$t4", "$t4", "$t4")) + self.register_empty_instruction() + self.register_instruction(mips.LabelNode("while_copy_from_buffer_start")) + self.register_instruction(mips.BeqNode("$t4", "$t0", "while_copy_from_buffer_end")) + + # cargando el byte + self.register_instruction(mips.LoadByteNode("$t5", "buffer_input($t4)")) + self.register_instruction(mips.StoreByteNode("$t5", "0($t3)")) + self.register_instruction(mips.AddiNode("$t3", "$t3", "1")) # ptr ++ + self.register_instruction(mips.AddiNode("$t4", "$t4", "1")) # counter ++ + self.register_instruction(mips.JumpNode("while_copy_from_buffer_start")) + self.register_instruction(mips.LabelNode("while_copy_from_buffer_end")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreByteNode("$zero", "0($t3)")) # guardando null + self.register_empty_instruction() + + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.ReadIntNode) + def visit(self, node: cil.ReadIntNode): + self.register_instruction(mips.LoadInmediateNode("$v0", "5")) + + self.register_instruction(mips.SystemCallNode()) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + self.register_instruction(mips.StoreWordNode("$v0", "8($t0)")) + + @visitor.when(cil.PrintNode) + def visit(self, node: cil.PrintNode): + pass + + @visitor.when(cil.PrintIntNode) + def visit(self, node: cil.PrintIntNode): + self.register_comment(f"PRINT INT {node.int_source}") + + self.register_instruction(mips.LoadInmediateNode("$v0", "1")) + + self.register_instruction(mips.LoadWordNode("$a0", f"{self.offset_of(node.int_source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$a0", "8($a0)")) + + self.register_instruction(mips.SystemCallNode()) + + @visitor.when(cil.PrintStringNode) + def visit(self, node: cil.PrintStringNode): + # $t0 = node.str_addr + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.str_addr)}($sp)")) + # ptr al primer caracter en la cadena + self.register_instruction(mips.AddiNode("$t0", "$t0", "8")) + + self.register_comment(f"PRINT STRING -> {node.str_addr}") + self.register_instruction(mips.LoadInmediateNode("$v0", "4")) + self.register_instruction(mips.MoveNode("$a0", "$t0")) + + self.register_instruction(mips.SystemCallNode()) + + @visitor.when(cil.PrintTypeNameNode) + def visit(self, node: cil.PrintTypeNameNode): + self.register_comment("PRINTING THE TYPE NAME") + self.register_empty_instruction() + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.address)}($sp)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "12")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t0)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "4")) + self.register_instruction(mips.LoadInmediateNode("$v0", "4")) + self.register_instruction(mips.MoveNode("$a0", "$t0")) + self.register_instruction(mips.SystemCallNode()) + + @visitor.when(cil.TypeAddressNode) + def visit(self, node: cil.TypeAddressNode): + self.register_comment(f"{node.dest} <- DIRECTION OF ({node.name})") + + self.register_instruction(mips.LoadAddressNode("$t0", f"type_{node.name}")) + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.EqualAddressNode) + def visit(self, node: cil.EqualAddressNode): + self.register_comment(f"{node.dest} <-- EQUAL ADDRESS({node.left}, {node.right})") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + self.register_instruction(mips.SeqNode("$t2", "$t0", "$t1")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t2", f"8($t0)")) + + @visitor.when(cil.EqualIntNode) + def visit(self, node: cil.EqualIntNode): + self.register_comment(f"{node.dest} <-- EQUAL INT ({node.left}, {node.right})") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", f"8($t0)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"8($t1)")) + self.register_instruction(mips.SeqNode("$t2", "$t0", "$t1")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t2", f"8($t0)")) + + @visitor.when(cil.EqualStrNode) + def visit(self, node: cil.EqualStrNode): + self.register_comment(f"{node.dest} <-- EQUAL STRING ({node.left}, {node.right})") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "8")) + self.register_instruction(mips.AddiNode("$t1", "$t1", "8")) + + self.register_empty_instruction() + + # se asume que son iguales por defecto + self.register_instruction(mips.AddiNode("$t4", "$zero", "1")) + self.register_instruction(mips.LoadWordNode("$t5", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t4", f"8($t5)")) + + self.register_empty_instruction() + self.register_instruction(mips.LabelNode("while_compare_strings_start")) + self.register_instruction(mips.LoadByteNode("$t2", "0($t0)")) + self.register_instruction(mips.LoadByteNode("$t3", "0($t1)")) + + self.register_instruction(mips.BeqNode("$t2", "$t3", "while_compare_strings_update")) + + self.register_empty_instruction() + + # si no son iguales: + self.register_instruction(mips.LoadWordNode("$t5", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$zero", f"8($t5)")) + self.register_instruction(mips.JumpNode("while_compare_strings_end")) + + self.register_instruction(mips.LabelNode("while_compare_strings_update")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "1")) + self.register_instruction(mips.AddiNode("$t1", "$t1", "1")) + self.register_instruction(mips.BeqNode("$t2", "$zero", "while_compare_strings_end")) + self.register_instruction(mips.BeqNode("$t3", "$zero", "while_compare_strings_end")) + self.register_instruction(mips.JumpNode("while_compare_strings_start")) + self.register_instruction(mips.LabelNode("while_compare_strings_end")) + + @visitor.when(cil.TypeNameNode) + def visit(self, node: cil.TypeNameNode): + self.register_comment(f"{node.dest} <- NAME {node.source}") + + # $t0, $t1, $t2 = source, type, lenght + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", "0($t0)")) + self.register_instruction(mips.LoadWordNode("$t2", "8($t1)")) + + # $t3, $t2 = direc name, length name + self.register_instruction(mips.LoadAddressNode("$t3", "4($t2)")) + self.register_instruction(mips.LoadWordNode("$t2", "0($t2)")) + + # $t2 teniendo espacio para el tipo + self.register_instruction(mips.AddiNode("$t2", "$t2", "9")) + self.register_instantiation("$t2") + # $t2 reintegrando espacio + self.register_instruction(mips.AddiNode("$t2", "$t2", "-9")) + + # asignando la primera palabra y la 2da para tipo y espacio + self.register_instruction(mips.LoadAddressNode("$t4", "type_String")) + self.register_instruction(mips.StoreWordNode("$t4", f"0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", f"4($v0)")) + + self.register_instruction(mips.AddiNode("$t4", "$v0", 0)) # $t4 direccion del nievo str + self.register_instruction(mips.AddiNode("$t4", "$t4", "8")) #puntero al promer char del string + self.register_instruction(mips.XorNode("$t5", "$t5", "$t5")) # counter para el string + self.register_instruction(mips.LabelNode("while_copy_name_start")) + self.register_instruction(mips.BeqNode("$t5", "$t2", "while_copy_name_end")) + self.register_instruction(mips.LoadByteNode("$t6", "0($t3)")) # cargando el char + self.register_instruction(mips.StoreByteNode("$t6", "0($t4)")) + self.register_instruction(mips.AddiNode("$t4", "$t4", "1")) # ++ + self.register_instruction(mips.AddiNode("$t3", "$t3", "1")) # ++ para el punter en node.source + self.register_instruction(mips.AddiNode("$t5", "$t5", "1")) # ++ + # jmp pal while + self.register_instruction(mips.JumpNode("while_copy_name_start")) + self.register_instruction(mips.LabelNode("while_copy_name_end")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreByteNode("$zero", "0($t4)")) # poniendo el null + self.register_empty_instruction() + + # guardando el str nuevo + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.HaltNode) + def visit(self, node: cil.HaltNode): + self.register_comment("EXIT") + + self.register_instruction(mips.LoadInmediateNode("$v0", "10")) + self.register_instruction(mips.SystemCallNode()) + + @visitor.when(cil.CopyNode) + def visit(self, node: cil.CopyNode): + self.register_comment(f"COPY {node.source} INTO {node.dest}") + + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) # $t0 source + self.register_instruction(mips.LoadWordNode("$t1", "0($t0)")) # $t1 tipo de sourvce + self.register_instruction(mips.LoadWordNode("$t2", "4($t0)")) #$t2 length + + self.register_instantiation("$t2") + self.register_instruction(mips.MoveNode("$t3", "$v0")) # direccion del nuevo objeto + self.register_instruction(mips.StoreWordNode("$t1", "0($v0)")) # asignandole el tipo (primera word) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) # asignandole el tamaño (segunda word) + + self.register_empty_instruction() + + ## + # incializando variables para el loop + ## + self.register_instruction(mips.AddiNode("$t0", "$t0", "8")) + self.register_instruction(mips.AddiNode("$t3", "$t3", "8")) + self.register_instruction(mips.AddiNode("$t2", "$2", "-8")) + self.register_instruction(mips.XorNode("$t4", "$t4", "$t4")) + self.register_empty_instruction() + + # copiando el objeto + self.register_instruction(mips.LabelNode("while_copy_start")) + self.register_instruction(mips.BeqNode("$t4", "$t2", "while_copy_end")) + self.register_instruction(mips.LoadByteNode("$t5", "0($t0)")) + self.register_instruction(mips.StoreByteNode("$t5", "0($t3)")) + + self.register_instruction(mips.AddiNode("$t0", "$t0", "1")) # ++ + self.register_instruction(mips.AddiNode("$t3", "$t3", "1")) # ++ del nuevo obj + self.register_instruction(mips.AddiNode("$t4", "$t4", "1")) # ++ + + self.register_instruction(mips.JumpNode("while_copy_start")) + self.register_instruction(mips.LabelNode("while_copy_end")) + + # guandando el nuevo objeto en el destino deseado + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + + @visitor.when(cil.LabelNode) + def visit(self, node: cil.LabelNode): + label = mips.LabelNode(node.label) + self.register_instruction(label) + + +class MipsFormatter: + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(mips.ProgramNode) + def visit(self, node: mips.ProgramNode): + dotdata = "\n\t".join([self.visit(data) for data in node.dotdata]) + + # recorriendo el dottext + inst = [] + for item in node.dottext: + if isinstance(item, mips.LabelNode) and ((item.name.startswith("function_") or item.name.endswith("_funct") or item.name == "main")): + inst.append(f"{self.visit(item)}") + else: + inst.append(f"\t{self.visit(item)}") + + dottext = "\n\t".join(inst) + + return dotdata, dottext + + @visitor.when(mips.DataNode) + def visit(self, node: mips.DataNode): + return f"{node.name}: {node.data_type} {node.value}" + + @visitor.when(mips.OneAddressNode) + def visit(self, node: mips.OneAddressNode): + return f"{node.code} {node.dest}" + + @visitor.when(mips.TwoAddressNode) + def visit(self, node: mips.TwoAddressNode): + return f"{node.code} {node.dest}, {node.source}" + + + @visitor.when(mips.ThreeAddressNode) + def visit(self, node: mips.ThreeAddressNode): + return f"{node.code} {node.dest}, {node.source1}, {node.source2}" + + @visitor.when(mips.SystemCallNode) + def visit(self, node: mips.SystemCallNode): + return node.code + + @visitor.when(mips.LabelNode) + def visit(self, node: mips.LabelNode): + return f"{node.name}:" + + @visitor.when(mips.CommentNode) + def visit(self, node: mips.CommentNode): + return f"# {node.comment}" + + @visitor.when(mips.EmptyInstructionNode) + def visit(self, node: mips.EmptyInstructionNode): + return "" + + @visitor.when(mips.EmptyDataNode) + def visit(self, node: mips.EmptyDataNode): + return "" diff --git a/src/utils/utils/code_generation.py b/src/utils/utils/code_generation.py new file mode 100644 index 000000000..3e6a763ef --- /dev/null +++ b/src/utils/utils/code_generation.py @@ -0,0 +1,578 @@ +from symbol import return_stmt +from . import ast_nodes as cool +from .semantic import * +from . import visitor +from typing import Any, Dict, List, Optional, Tuple +from copy import deepcopy + +## +# creación del átomo y tipo que representará el NULL +## +class NullNode(cool.AtomicNode): + def __init__(self): + super().__init__("NULL") + + +class NullType(Type): + def __init__(self): + super().__init__("null") + + def conforms_to(self, other): + return True + + def bypass(self): + return True + + def __str__(self): + return self.name + + +class COOLwithNULL: + + def __init__(self, context: Context): + self.current_method = None + self.current_type = None + self.context: Context = context + + # Dict[str, cool.ClassDecNode] + self.class_declarations = {} + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode): + # list de ClassDecNode + newclassdec = [] + + for type_ in ["Object", "IO", "String", "Int", "Bool"]: + t = self.context.get_type(type_) + t.define_method("__init__", [], [], t) + t.methods.move_to_end("__init__", last=False) + + for class_dec in node.class_list: + self.class_declarations[class_dec.name] = class_dec + + for class_dec in node.class_list: + newclassdec.append(self.visit(class_dec)) + + return cool.ProgramNode(newclassdec) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode): + self.current_type = self.context.get_type(node.name) + + parents = [self.class_declarations[owner.name] for _, owner in self.current_type.all_attributes()] + + attrs, visited = [], set() + + for parent in parents: + if parent.name in visited: + continue + + visited.add(parent.name) + attrs += [feature for feature in parent.data if isinstance(feature, cool.AttributeDecNode)] + + expressions: List[cool.ExprNode] = [] + for attr in attrs: + expressions.append(self.visit(attr)) + expressions.append(cool.VariableNode("self")) + + body = cool.BlockNode(expressions) + constructor = cool.MethodDecNode( + "__init__", self.current_type.name, body, [] + ) + + self.current_type.define_method("__init__", [], [], self.current_type) + self.current_type.methods.move_to_end("__init__", last=False) + + attrs = [ + attrib + for attrib in node.data + if isinstance(attrib, cool.AttributeDecNode) + ] + methods = [ + meth + for meth in node.data + if isinstance(meth, cool.MethodDecNode) + ] + + features = attrs + [constructor] + methods + + return cool.ClassDecNode(node.name, features, node.parent) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode): + if node.expr is None: + expr = None + if node._type == "Int": + expr = cool.NumberNode("0") + elif node._type == "Bool": + expr = cool.BooleanNode("false") + elif node._type == "String": + expr = cool.StringNode('""') + else: + ## adicion del indicador de vacio + expr = NullNode() + return cool.AssignNode(node.name, expr) + return cool.AssignNode(node.name, deepcopy(node.expr)) + + +# analiza de nuevo los tipos y recopila errores, +# esto no es necesario pero la recopilacion de errores se me hizo mas facil +class COOLwithNULL_Type: + def __init__(self, context: Context, errors: list, program: str): + self.context: Context = context + self.errors = errors + self.current_type = None + self.current_method = None + self.current_attribute = None + self.program = program + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + + @visitor.on("node") + def visit(self, node, scope): + pass + + ############# + # main flow # + ############# + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode, scope: Scope=None): + if scope is None: + scope = Scope() + node.scope = scope + + for item in node.class_list: + self.visit(item, scope.create_child()) + return scope + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode, scope: Scope): + node.scope = scope + self.current_type = self.context.get_type(node.name) + + attrs = [ att for att in node.data if isinstance(att, cool.AttributeDecNode)] + methods = [ meth for meth in node.data if isinstance(meth, cool.MethodDecNode)] + + for attr, attr_owner in self.current_type.all_attributes(): + if attr_owner != self.current_type: + scope.define_variable(attr.name, attr.type) + + for attr in attrs: + self.visit(attr, scope) + + for method in methods: + self.visit(method, scope.create_child()) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode, scope: Scope): + node.scope = scope + if node.name == "self": + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - SemanticError: Cannot set "self" as attribute of a class.') + + try: + attr_type = (self.context.get_type(node._type) if node._type != "SELF_TYPE" else self.current_type) + except SemanticError: + attr_type = ErrorType() + + scope.define_variable("self", self.current_type) + + self.current_attribute = self.current_type.get_attribute(node.name) + self.current_method = None + + if node.expr is not None: + expr_type = self.visit(node.expr, scope.create_child()) + if not expr_type.conforms_to(attr_type): + line, lexpos = node.expr_pos + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Cannot convert "{expr_type.name}" into "{attr_type.name}".') + scope.define_variable(node.name, attr_type) + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode, scope: Scope): + node.scope = scope + self.current_method = self.current_type.get_method(node.name) + self.current_attribute = None + scope.define_variable("self", self.current_type) + + for param_name, param_type in zip(self.current_method.param_names, self.current_method.param_types): + if scope.is_local_variable(param_name): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program,node.lexpos)}) - SemanticError: Variable "{param_name}" is already defined in method "{self.current_method.name}".') + else: + if param_type.name != "SELF_TYPE": + try: + scope.define_variable(param_name, self.context.get_type(param_type.name)) + except SemanticError: + scope.define_variable(param_name, ErrorType()) + else: + self.errors.append('(0, 0) - TypeError: "SELF_TYPE" cannot be a static type of a parameter.') + scope.define_variable(param_name, ErrorType()) + + try:#### ERRRRROOOOORRRR + ret_type = (self.context.get_type(node.type) if node.type != "SELF_TYPE" else self.current_type) + except SemanticError: + ret_type = ErrorType() + + expr_type = self.visit(node.expr, scope) + 1 + if not expr_type.conforms_to(ret_type): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Cannot convert "{expr_type.name}" into "{ret_type.name}".') + + + ############### + # expressions # + ############### + + + @visitor.when(cool.AssignNode) + def visit(self, node: cool.AssignNode, scope: Scope): + node.scope = scope + var_info = scope.find_variable(node.idx) + + if var_info.name == "self": + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program,node.lexpos)}) - SemanticError: Variable "self" is read-only.') + + expr_type = self.visit(node.expr, scope) + if var_info is None: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program,node.lexpos)}) - NameError: Variable "{node.idx}" is not defined in "{self.current_method.name}".') + else: + if not expr_type.conforms_to(var_info.type): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program,node.lexpos)}) - TypeError: Cannot convert "{expr_type.name}" into "{var_info.type.name}".') + return expr_type + + + @visitor.when(cool.LetNode) + def visit(self, node: cool.LetNode, scope: Scope): + node.scope = scope + + for i, (_id, _type, _expr) in enumerate(node.declaration): + + if _id == "self": + line, lexpos = node.declaration_names_positions[i] + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: "self" cannot be bound in a "let" expression') + continue + + try: + var_static_type = (self.context.get_type(_type) if _type != "SELF_TYPE" else self.current_type) + + except SemanticError: + line, lexpos = node.declaration_types_positions[i] + self.errors.append( f'({line}, {self.get_tokencolumn(self.program,lexpos)}) - TypeError: Type "{_type}" is not defined') + var_static_type = ErrorType() + + scope.define_variable(_id, var_static_type) + + expr_type = (self.visit(_expr, scope.create_child()) if _expr is not None else None) + + if expr_type is not None and not expr_type.conforms_to(var_static_type): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program,node.lexpos)}) - TypeError: Cannot convert "{expr_type.name}" into "{var_static_type.name}".') + + return self.visit(node.expr, scope.create_child()) + + + + @visitor.when(cool.BlockNode) + def visit(self, node: cool.BlockNode, scope: Scope): + node.scope = scope + return_type = ErrorType() + + for expr in node.expr: + return_type = self.visit(expr, scope) + + return return_type + + @visitor.when(cool.ConditionalNode) + def visit(self, node: cool.ConditionalNode, scope: Scope): + node.scope = scope + + if_type = self.visit(node.if_expr, scope) + ## + if if_type != self.context.get_type("Bool"): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program,node.lexpos)}) - TypeError: Cannot convert "{if_type.name}" into "Bool".') + + then_type = self.visit(node.then_expr, scope) + else_type = self.visit(node.else_expr, scope) + + return then_type.join(else_type) + + @visitor.when(cool.WhileNode) + def visit(self, node: cool.WhileNode, scope: Scope): + node.scope = scope + + cond = self.visit(node.cond, scope) + if cond != self.context.get_type("Bool"): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program,node.lexpos)}) - TypeError: Cannot convert "{cond.name}" into "Bool".') + + self.visit(node.data, scope) + return self.context.get_type("Object") + + @visitor.when(cool.CaseNode) + def visit(self, node: cool.CaseNode, scope: Scope): + node.scope = scope + + self.visit(node.expr, scope) + types = [] + visited = set() + for i, (_id, _type, _expr) in enumerate(node.params): + _scope = scope.create_child() + try: + if _type != "SELF_TYPE": + _scope.define_variable(_id, self.context.get_type(_type)) + else: + self.errors.append('(%d, %d) - TypeError: "%s" cannot be a static type of a case branch.' % _type) + except SemanticError: + _scope.define_variable(_id, ErrorType()) + line, lexpos = node.cases_positions[i] + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Class "{_type}" of case branch is undefined') + + if _type in visited: + line, lexpos = node.cases_positions[i] + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: Duplicate branch "{_type}" in case statement') + + visited.add(_type) + types.append(self.visit(_expr, _scope)) + + return Type.multi_join(types) + + + @visitor.when(cool.MethodCallNode) + def visit(self, node: cool.MethodCallNode, scope: Scope): + node.scope = scope + entre = None + if node.atom is None: + node.atom = cool.VariableNode("self") + entre = 1 + atom_type = self.visit(node.atom, scope) + atom_type + + if node.type is None: + ancestor_type = atom_type + else: + try: + ancestor_type = self.context.get_type(node.type) + except SemanticError: + ancestor_type = ErrorType() + line, lexpos = node.type_position + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Type "{node.type}" is not defined') + + if not atom_type.conforms_to(ancestor_type): + line, lexpos = node.type_position + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Class "{atom_type.name}" has no an ancestor class "{ancestor_type.name}".') + + try: + entre + method = ancestor_type.get_method(node.idx) + except SemanticError: + line, lexpos = node.id_position + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - AttributeError: Dispatch undefined method "{node.idx}" from type {atom_type.name}') + + for exp in node.exprlist: + self.visit(exp, scope) + return ErrorType() + + expr_count = len(node.exprlist) + params_count = len(method.param_names) + if expr_count != params_count: + line, lexpos = node.id_position + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: Method "{method.name}" of type "{atom_type.name}" called with wrong number of arguments. Expected {params_count} instead of {args_count}') + + number_of_args = min(expr_count, params_count) + for i, arg in enumerate(node.exprlist[:number_of_args]): + arg_type = self.visit(arg, scope) + if not arg_type.conforms_to(method.param_types[i]): + line, lexpos = node.args_positions[i] + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Cannot convert "{arg_type.name}" into "{method.param_types[i].name}".') + + return (method.return_type if method.return_type.name != "SELF_TYPE" else ancestor_type) + + + @visitor.when(cool.VariableNode) + def visit(self, node: cool.VariableNode, scope: Scope): + node.scope = scope + + variable = scope.find_variable(node.lex) + + if variable is not None: + return variable.type + else: + # get the name in the att or the meth + if self.current_attribute is not None: + name = self.current_attribute.name + else: + name = self.current_method.name + + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - NameError: Variable "{node.lex}" is not defined in "{name}".') + + return ErrorType() + + + @visitor.when(cool.NewNode) + def visit(self, node: cool.NewNode, scope: Scope): + node.scope = scope + + try: + if node.type == "SELF_TYPE": + return self.current_type + else: + ret_type = self.context.get_type(node.type) + return ret_type + except SemanticError: + line, lexpos = node.type_position + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Using "new" expresion with undefined type "{node.lex}"') + + return ErrorType() + + + @visitor.when(cool.IsVoidNode) + def visit(self, node: cool.IsVoidNode, scope: Scope): + node.scope = scope + + self.visit(node.expr, scope) + return self.context.get_type("Bool") + + @visitor.when(cool.ExprParNode) + def visit(self, node: cool.ExprParNode, scope: Scope): + node.scope = scope + return self.visit(node.expr, scope) + + + #################### + # unary operations # + #################### + + @visitor.when(cool.NegationNode) + def visit(self, node: cool.NegationNode, scope: Scope): + type_ = self.visit(node.expr, scope) + if type_ == self.context.get_type("Bool"): + return type_ + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program,node.lexpos)}) - TypeError: Operation "not" is not defined for "{type_.name}".') + + return ErrorType() + + @visitor.when(cool.ComplementNode) + def visit(self, node: cool.ComplementNode, scope: Scope): + type_ = self.visit(node.expr, scope) + if type_ == self.context.get_type("Int"): + return type_ + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program,node.lexpos)}) - TypeError: Operation "~" is not defined for "{type_.name}".') + + return ErrorType() + + + ##################### + # binary operations # + ##################### + + @visitor.when(cool.PlusNode) + def visit(self, node: cool.PlusNode, scope: Scope): + l_type = self.visit(node.left, scope) + r_type = self.visit(node.right, scope) + + if l_type == r_type == self.context.get_type("Int"): + return self.context.get_type("Int") + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "+" is not defined between "{l_type.name}" and "{r_type.name}".') + + return ErrorType() + + @visitor.when(cool.MinusNode) + def visit(self, node: cool.MinusNode, scope: Scope): + l_type = self.visit(node.left, scope) + r_type = self.visit(node.right, scope) + + if l_type == r_type == self.context.get_type("Int"): + return self.context.get_type("Int") + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "-" is not defined between "{l_type.name}" and "{r_type.name}".') + + return ErrorType() + + @visitor.when(cool.TimesNode) + def visit(self, node: cool.TimesNode, scope: Scope): + l_type = self.visit(node.left, scope) + r_type = self.visit(node.right, scope) + + if l_type == r_type == self.context.get_type("Int"): + return self.context.get_type("Int") + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "*" is not defined between "{l_type.name}" and "{r_type.name}".') + + return ErrorType() + + @visitor.when(cool.DivNode) + def visit(self, node: cool.DivNode, scope: Scope): + l_type = self.visit(node.left, scope) + r_type = self.visit(node.right, scope) + + if l_type == r_type == self.context.get_type("Int"): + return self.context.get_type("Int") + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "/" is not defined between "{l_type.name}" and "{r_type.name}".') + + return ErrorType() + + @visitor.when(cool.LessEqualNode) + def visit(self, node: cool.LessEqualNode, scope: Scope): + l_type = self.visit(node.left, scope) + r_type = self.visit(node.right, scope) + + if l_type == r_type == self.context.get_type("Int"): + return self.context.get_type("Bool") + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "<=" is not defined between "{l_type.name}" and "{r_type.name}".') + + return ErrorType() + + @visitor.when(cool.LessNode) + def visit(self, node: cool.LessNode, scope: Scope): + l_type = self.visit(node.left, scope) + r_type = self.visit(node.right, scope) + + if l_type == r_type == self.context.get_type("Int"): + return self.context.get_type("Bool") + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "<" is not defined between "{l_type.name}" and "{r_type.name}".') + + return ErrorType() + + @visitor.when(cool.EqualNode) + def visit(self, node: cool.EqualNode, scope: Scope): + node.scope = scope + l_type = self.visit(node.left, scope) + r_type = self.visit(node.right, scope) + + types_ = ("Bool", "Int", "String") + if l_type.name != r_type.name and (l_type.name in types_ or l_type.name in types_): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: For operation "=" if one of the expression has static type Int, Bool or String, then the other must have the same static type') + + return self.context.get_type("Bool") + + + ############## + # atomic exp # + ############## + + @visitor.when(cool.NumberNode) + def visit(self, node: cool.NumberNode, scope: Scope): + node.scope = scope + return self.context.get_type("Int") + + @visitor.when(cool.StringNode) + def visit(self, node: cool.StringNode, scope: Scope): + node.scope = scope + return self.context.get_type("String") + + @visitor.when(cool.BooleanNode) + def visit(self, node: cool.BooleanNode, scope: Scope): + node.scope = scope + return self.context.get_type("Bool") + + @visitor.when(NullNode) + def visit(self, node: NullNode, scope: Scope): + node.scope = scope + return NullType() + diff --git a/src/utils/utils/collect_dec.py b/src/utils/utils/collect_dec.py new file mode 100644 index 000000000..ac313c636 --- /dev/null +++ b/src/utils/utils/collect_dec.py @@ -0,0 +1,74 @@ +from utils import ast_nodes as ast +from utils import visitor +from .semantic import Type + +class CollectDeclarationsDict(object): + def __init__(self, dict_attr, dict_method, context): + self.dict_attr = dict_attr + self.dict_method = dict_method + self.context = context + self.initialize_types() + + def initialize_types(self): + io = self.context.get_type('IO') + self.dict_attr[io] = [] + + self.dict_method[io] = [ + ('out_string'), + ('out_int'), + ('in_string'), + ('in_int') + ] + + + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode): + for item in node.class_list: + self.visit(item) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode): + class_type = self.context.get_type(node.name) + self.dict_attr[class_type] = [] + self.dict_method[class_type] = [] + for dec in node.data: + if isinstance(dec, ast.AttributeDecNode): + self.dict_attr[class_type].append(dec) + if isinstance(dec, ast.MethodDecNode): + self.dict_method[class_type].append(dec) + + +def get_declarations_dict(t_dict_attr, t_dict_method): + dict_attr, dict_method = {}, {} + for item in t_dict_attr: + dict_attr[item] = [i for i in t_dict_attr[item]] + + for item in t_dict_method: + dict_method[item] = [i for i in t_dict_method[item]] + + for key in t_dict_attr.keys(): + _get_declarations_dict_(dict_attr, dict_method, t_dict_attr, t_dict_method,\ + key, key.parent) + + dict_attr_r, dict_method_r = {}, {} + + for item in t_dict_attr: + dict_attr_r[item.name] = [i for i in t_dict_attr[item]] + + for item in t_dict_method: + dict_method_r[item.name] = [i for i in t_dict_method[item]] + + return dict_attr_r, dict_method_r + + +def _get_declarations_dict_(dict_attr, dict_method, t_dict_attr, t_dict_method, current_type, parent_type): + if parent_type.name in ['Object', None]: + return + t_dict_attr[current_type] += dict_attr[parent_type] + t_dict_method[current_type] += dict_method[parent_type] + next_parent = parent_type.parent + return _get_declarations_dict_(dict_attr, dict_method, t_dict_attr, t_dict_method, current_type, next_parent) diff --git a/src/utils/utils/cool_cil_mips.py b/src/utils/utils/cool_cil_mips.py new file mode 100644 index 000000000..8dc364dd5 --- /dev/null +++ b/src/utils/utils/cool_cil_mips.py @@ -0,0 +1,2625 @@ +from atexit import register +from copy import deepcopy +from typing import Any, Dict, List, Optional, Tuple, Union + +from .semantic import * + +from . import ast_nodes as cool +from . import ast_nodes_cil as cil +from . import ast_nodes_mips as mips + +from . import visitor +from .code_generation import NullNode, NullType + + + +class ExtendedCoolTranslator: + + def __init__(self, context: Context): + self.current_type = None + self.current_method = None + self.context = context + self.class_declarations = {} # type: Dict[str, cool.ClassDecNode] + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode): + declarations: List[cool.ClassDecNode] = [] + + default_class_names = ["Object", "IO", "String", "Int", "Bool"] + for name in default_class_names: + t = self.context.get_type(name) + t.define_method("__init__", [], [], t) + t.methods_dict.move_to_end("__init__", last=False) + + for declaration in node.class_list: + self.class_declarations[declaration.name] = declaration + + for declaration in node.class_list: + declarations.append(self.visit(declaration)) + + return cool.ProgramNode(declarations) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode): + self.current_type = self.context.get_type(node.name) + + ancestors = [ + self.class_declarations[owner.name] + for _, owner in self.current_type.all_attributes() + ] + + attrs = [] + visited = set() + for ancestor in ancestors: + if ancestor.name in visited: + continue + + visited.add(ancestor.name) + attrs += [feature for feature in ancestor.data if isinstance(feature, cool.AttributeDecNode) ] + + expressions: List[cool.ExprNode] = [] + for attr in attrs: + expressions.append(self.visit(attr)) + expressions.append(cool.VariableNode("self")) + + body = cool.BlockNode(expressions) + constructor = cool.MethodDecNode( + "__init__", self.current_type.name, body, [] + ) + + self.current_type.define_method("__init__", [], [], self.current_type) + self.current_type.methods_dict.move_to_end("__init__", last=False) + + attrs = [feature for feature in node.data if isinstance(feature, cool.AttributeDecNode)] + methods = [feature for feature in node.data if isinstance(feature, cool.MethodDecNode)] + + features = attrs + [constructor] + methods + + return cool.ClassDecNode(node.name, features, node.parent) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode): + if node.expr is None: + expr = None + if node._type == "Int": + expr = cool.NumberNode("0") + elif node._type == "Bool": + expr = cool.BooleanNode("false") + elif node._type == "String": + expr = cool.StringNode('""') + else: + expr = NullNode() + return cool.AssignNode(node.name, expr) + return cool.AssignNode(node.name, deepcopy(node.expr)) + + +class ExtendedCoolTypeChecker: + def __init__(self, context: Context, errors: List[str]): + self.context: Context = context + self.errors: List[str] = errors + self.current_type: Optional[Type] = None + self.current_method: Optional[Method] = None + self.current_attribute: Optional[Attribute] = None + + @visitor.on("node") + def visit(self, node, scope): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode, scope: Scope = None): + if scope is None: + scope = Scope() + + node.scope = scope + + for elem in node.class_list: + self.visit(elem, scope.create_child()) + + return scope + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode, scope: Scope): + node.scope = scope + self.current_type = self.context.get_type(node.name) + + attrs = [feature for feature in node.data if isinstance(feature, cool.AttributeDecNode)] + methods = [feature for feature in node.data if isinstance(feature, cool.MethodDecNode)] + + for attr, attr_owner in self.current_type.all_attributes(): + if attr_owner != self.current_type: + scope.define_variable(attr.name, attr.type) + + for attr in attrs: + self.visit(attr, scope) + + for method in methods: + self.visit(method, scope.create_child()) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode, scope: Scope): + node.scope = scope + if node.name == "self": + 'error' + + try: + attr_type = (self.context.get_type(node._type) \ + if node._type != "SELF_TYPE" else self.current_type) + except SemanticError: + attr_type = ErrorType() + + scope.define_variable("self", self.current_type) + + # set the current attribute for analyze the body + # and set the self.current_method variable to None + self.current_attribute = self.current_type.get_attribute(node.name) + self.current_method = None + + if node.expr is not None: + expr_type = self.visit(node.expr, scope.create_child()) + if not expr_type.conforms_to(attr_type): + line, column = node.expr_position + self.errors.append('error') + + scope.define_variable(node.name, attr_type) + + @visitor.when(cool.ExprParNode) + def visit(self, node: cool.ExprParNode, scope: Scope): + node.scope = scope + return self.visit(node.expr, scope) + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode, scope: Scope): + node.scope = scope + self.current_method = self.current_type.get_method(node.name) + self.current_attribute = None + + # Parameters can hide the attribute declaration, that's why we are not checking if there is defined, + # instead we are checking for local declaration. Also it is checked that the static type of a parameter is + # different of SELF_TYPE. + + scope.define_variable("self", self.current_type) + + for param_name, param_type in zip( + self.current_method.param_names, self.current_method.param_types + ): + if not scope.is_local_variable(param_name): + if param_type.name == "SELF_TYPE": + self.errors.append('error') + scope.define_variable(param_name, ErrorType()) + else: + try: + scope.define_variable( + param_name, self.context.get_type(param_type.name) + ) + except SemanticError: + scope.define_variable(param_name, ErrorType()) + else: + self.errors.append( + 'error' + ) + + try: + return_type = ( + self.context.get_type(node.type) + if node.type != "SELF_TYPE" + else self.current_type + ) + except SemanticError: + return_type = ErrorType() + + expr_type = self.visit(node.expr, scope) + + if not expr_type.conforms_to(return_type): + self.errors.append( + 'error' + ) + + @visitor.when(cool.ExprParNode) + def visit(self, node: cool.ExprParNode, scope): + scope = node.scope + parnode = self.visit(node.expr, scope) + return parnode + + @visitor.when(cool.LetNode) + def visit(self, node: cool.LetNode, scope: Scope): + node.scope = scope + for i, (_id, _type, _expr) in enumerate(node.declaration): + if _id == "self": + line, column = node.dec_names_pos[i] + self.errors.append('error') + continue + + try: + var_static_type = ( + self.context.get_type(_type) + if _type != "SELF_TYPE" + else self.current_type + ) + except SemanticError: + line, column = node.dec_types_pos[i] + self.errors.append('error') + var_static_type = ErrorType() + + scope.define_variable(_id, var_static_type) + + expr_type = ( + self.visit(_expr, scope.create_child()) if _expr is not None else None + ) + if expr_type is not None and not expr_type.conforms_to(var_static_type): + self.errors.append('error') + + return self.visit(node.expr, scope.create_child()) + + @visitor.when(cool.AssignNode) + def visit(self, node: cool.AssignNode, scope: Scope): + node.scope = scope + var_info = scope.find_variable(node.idx) + + if var_info.name == "self": + self.errors.append('error') + + expr_type = self.visit(node.expr, scope) + + if var_info is None: + self.errors.append( + 'error' + ) + else: + if not expr_type.conforms_to(var_info.type): + self.errors.append( + 'error' + ) + + return expr_type + + @visitor.when(cool.BlockNode) + def visit(self, node: cool.BlockNode, scope: Scope): + node.scope = scope + return_type = ErrorType() + for expr in node.expr: + return_type = self.visit(expr, scope) + return return_type + + @visitor.when(cool.ConditionalNode) + def visit(self, node: cool.ConditionalNode, scope: Scope): + node.scope = scope + if_type = self.visit(node.if_expr, scope) + then_type = self.visit(node.then_expr, scope) + else_type = self.visit(node.else_expr, scope) + if if_type != self.context.get_type("Bool"): + self.errors.append('error') + return then_type.join(else_type) + + @visitor.when(cool.WhileNode) + def visit(self, node: cool.WhileNode, scope: Scope): + node.scope = scope + condition = self.visit(node.cond, scope) + if condition != self.context.get_type("Bool"): + self.errors.append('error') + + self.visit(node.data, scope) + return self.context.get_type("Object") + + @visitor.when(cool.CaseNode) + def visit(self, node: cool.CaseNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + types = [] + visited = set() + for i, (identifier, type_name, expr) in enumerate(node.params): + new_scope = scope.create_child() + try: + if type_name != "SELF_TYPE": + new_scope.define_variable(identifier, self.context.get_type(type_name)) + else: + self.errors.append('error') + except SemanticError: + new_scope.define_variable(identifier, ErrorType()) + line, column = node.cases_positions[i] + self.errors.append('error') + + # Cannot be dublicate Branches types + if type_name in visited: + line, column = node.cases_positions[i] + self.errors.append('error') + + visited.add(type_name) + types.append(self.visit(expr, new_scope)) + + return Type.multi_join(types) + + @visitor.when(cool.MethodCallNode) + def visit(self, node: cool.MethodCallNode, scope: Scope): + node.scope = scope + if node.atom is None: + node.atom = cool.VariableNode("self") + obj_type = self.visit(node.atom, scope) + + if node.type is not None: + try: + ancestor_type = self.context.get_type(node.type) + except SemanticError: + ancestor_type = ErrorType() + line, column = node.type_position + self.errors.append('error') + + if not obj_type.conforms_to(ancestor_type): + line, column = node.type_position + self.errors.append('error') + else: + ancestor_type = obj_type + + try: + method = ancestor_type.get_method(node.idx) + except SemanticError: + line, column = node.id_position + self.errors.append('error') + + for arg in node.exprlist: + self.visit(arg, scope) + return ErrorType() + + args_count = len(node.exprlist) + params_count = len(method.param_names) + if args_count != params_count: + line, column = node.id_position + self.errors.append('error') + + number_of_args = min(args_count, params_count) + for i, arg in enumerate(node.exprlist[:number_of_args]): + arg_type = self.visit(arg, scope) + if not arg_type.conforms_to(method.param_types[i]): + line, column = node.exprlist_positions[i] + self.errors.append('error') + + return ( + method.return_type + if method.return_type.name != "SELF_TYPE" + else ancestor_type + ) + + @visitor.when(cool.NumberNode) + def visit(self, node: cool.NumberNode, scope: Scope): + node.scope = scope + return self.context.get_type("Int") + + @visitor.when(cool.StringNode) + def visit(self, node: cool.StringNode, scope: Scope): + node.scope = scope + return self.context.get_type("String") + + @visitor.when(cool.BooleanNode) + def visit(self, node: cool.BooleanNode, scope: Scope): + node.scope = scope + return self.context.get_type("Bool") + + @visitor.when(NullNode) + def visit(self, node: NullNode, scope: Scope): + node.scope = scope + return NullType() + + @visitor.when(cool.VariableNode) + def visit(self, node: cool.VariableNode, scope: Scope): + node.scope = scope + variable = scope.find_variable(node.lex) + if variable is None: + if self.current_attribute is not None: + name = self.current_attribute.name + else: + name = self.current_method.name + + self.errors.append('error') + return ErrorType() + return variable.type + + @visitor.when(cool.NewNode) + def visit(self, node: cool.NewNode, scope: Scope): + node.scope = scope + try: + return ( + self.context.get_type(node.type) + if node.type != "SELF_TYPE" + else self.current_type + ) + except SemanticError as e: + line, column = node.type_position + self.errors.append('error') + return ErrorType() + + @visitor.when(cool.NegationNode) + def visit(self, node: cool.NegationNode, scope: Scope): + node.scope = scope + return self._check_unary_operation( + node, scope, "not", self.context.get_type("Bool") + ) + + @visitor.when(cool.ComplementNode) + def visit(self, node: cool.ComplementNode, scope: Scope): + node.scope = scope + return self._check_unary_operation( + node, scope, "~", self.context.get_type("Int") + ) + + @visitor.when(cool.IsVoidNode) + def visit(self, node: cool.IsVoidNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + return self.context.get_type("Bool") + + @visitor.when(cool.PlusNode) + def visit(self, node: cool.PlusNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "+", self.context.get_type("Int") + ) + + @visitor.when(cool.MinusNode) + def visit(self, node: cool.MinusNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "-", self.context.get_type("Int") + ) + + @visitor.when(cool.TimesNode) + def visit(self, node: cool.TimesNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "*", self.context.get_type("Int") + ) + + @visitor.when(cool.DivNode) + def visit(self, node: cool.DivNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "/", self.context.get_type("Int") + ) + + @visitor.when(cool.LessEqualNode) + def visit(self, node: cool.LessEqualNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "<=", self.context.get_type("Bool") + ) + + @visitor.when(cool.LessNode) + def visit(self, node: cool.LessNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "<", self.context.get_type("Bool") + ) + + @visitor.when(cool.EqualNode) + def visit(self, node: cool.EqualNode, scope: Scope): + node.scope = scope + left_type = self.visit(node.left, scope) + right_type = self.visit(node.right, scope) + + basic_types = ("Int", "String", "Bool") + if (left_type.name in basic_types or left_type.name in basic_types\ + ) and left_type.name != right_type.name: + self.errors.append('error') + return self.context.get_type("Bool") + + def _check_int_binary_operation( + self, node: cool.BinaryNode, scope: Scope, operation: str, return_type: Type + ): + left_type = self.visit(node.left, scope) + right_type = self.visit(node.right, scope) + + if left_type == right_type == self.context.get_type("Int"): + return return_type + self.errors.append('error') + return ErrorType() + + def _check_unary_operation( + self, node: cool.UnaryNode, scope: Scope, operation: str, expected_type: Type + ): + typex = self.visit(node.expr, scope) + if typex == expected_type: + return typex + self.errors.append('error') + return ErrorType() + + +class BaseCoolToCilVisitor: + def __init__(self, context: Context): + self.dottypes: List[cil.TypeNode] = [] + self.dotdata: List[cil.DataNode] = [] + self.dotcode: List[cil.FunctionNode] = [] + + self.current_type: Optional[Type] = None + self.current_method: Optional[Method] = None + self.current_function: Optional[cil.FunctionNode] = None + + self.context: Context = context + + self.locals_dict = {} + self.param_set = set() + self.attr_set = set() + + @property + def params(self) : + return self.current_function.params + + @property + def localvars(self): + return self.current_function.localvars + + @property + def instructions(self) : + return self.current_function.instructions + + def register_local(self, var_name: str, comment: str = "") : + local_name = (f"local_{self.current_function.name[9:]}_{var_name}_{len(self.localvars)}") + local_name = var_name + local_node = cil.LocalNode(local_name) + self.localvars.append(local_node) + return local_name + + def define_internal_local(self, comment: str = "") : + return self.register_local(f"internal_{len(self.localvars)}", comment) + + def register_instruction(self, instruction) : + self.instructions.append(instruction) + return instruction + + def to_function_name(self, method_name: str, type_name: str) : + return f"function_{method_name}_at_{type_name}" + + def register_function(self, function_name: str): + function_node = cil.FunctionNode(function_name, [], [], []) + self.dotcode.append(function_node) + return function_node + + def register_type(self, name: str, parent_name: Optional[str] = None): + type_node = cil.TypeNode(name, parent_name) + self.dottypes.append(type_node) + return type_node + + def register_data(self, value: Any) : + data_name = f"data_{len(self.dotdata)}" + data_node = cil.DataNode(data_name, value) + self.dotdata.append(data_node) + return data_node + + def register_comment(self, comment: str): + self.register_instruction(cil.CommentNode(comment)) + + def register_empty_instruction(self): + self.register_instruction(cil.EndOfLineNode()) + + def add_function_main(self): + self.current_function = self.register_function("main") + local_main = self.define_internal_local() + local_result = self.define_internal_local() + method_index = self.define_internal_local() + method_address = self.define_internal_local() + + self.register_instruction(cil.AllocateNode("Main", local_main)) + self.register_instruction(cil.ArgNode(local_main, 0, 1)) + self.register_instruction(cil.StaticCallNode(self.to_function_name("__init__", "Main"), local_main, 1)) + self.register_empty_instruction() + + + all_methods = methods_declaration_order(self.context.get_type("Main")) + i = [m.name for m, _ in all_methods].index("main") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, local_main, method_index, "main", "Main")) + + self.register_instruction(cil.ArgNode(local_main, 0, 1)) + self.register_instruction(cil.DynamicCallNode("Main", method_address, local_result, 1)) + + ######### + self.register_empty_instruction() + self.register_instruction(cil.HaltNode()) + + def add_function_add(self): + self.current_function = self.register_function("function_add") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.PlusNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_sub(self): + self.current_function = self.register_function("function_sub") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.MinusNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_mul(self): + self.current_function = self.register_function("function_mult") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.StarNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_div(self): + self.current_function = self.register_function("function_div") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.DivNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_xor(self): + self.current_function = self.register_function("function_xor") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.XorNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_less_than(self): + self.current_function = self.register_function("function_less_than") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.LessThanNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_less_than_or_equal(self): + self.current_function = self.register_function("function_less_than_or_equal") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.LessEqualNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_equal(self): + self.current_function = self.register_function("function_equal") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + constant_null = self.define_internal_local() + is_null = self.define_internal_local() + type_of_a = self.define_internal_local() + type_int = self.define_internal_local() + type_bool = self.define_internal_local() + type_string = self.define_internal_local() + type_a_equals_int = self.define_internal_local() + type_a_equals_bool = self.define_internal_local() + type_a_equals_string = self.define_internal_local() + + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.AllocateNullNode(constant_null)) + self.register_instruction(cil.AllocateBoolNode(is_null, "0")) + + self.register_instruction(cil.EqualAddressNode(is_null, "a", constant_null)) + self.register_instruction(cil.EqualAddressNode(is_null, "b", constant_null)) + self.register_instruction(cil.GotoIfNode(is_null, "a_is_type_object")) + + self.register_instruction(cil.TypeOfNode(type_of_a, "a")) + self.register_instruction(cil.TypeAddressNode(type_int, "Int")) + self.register_instruction(cil.TypeAddressNode(type_bool, "Bool")) + self.register_instruction(cil.TypeAddressNode(type_string, "String")) + self.register_instruction(cil.AllocateBoolNode(type_a_equals_int, "0")) + self.register_instruction(cil.AllocateBoolNode(type_a_equals_bool, "0")) + self.register_instruction(cil.AllocateBoolNode(type_a_equals_string, "0")) + + self.register_instruction(cil.EqualAddressNode(type_a_equals_int, type_of_a, type_int)) + self.register_instruction(cil.EqualAddressNode(type_a_equals_bool, type_of_a, type_bool)) + self.register_instruction(cil.EqualAddressNode(type_a_equals_string, type_of_a, type_string)) + self.register_empty_instruction() + self.register_instruction(cil.GotoIfNode(type_a_equals_int, "a_is_type_int_or_bool")) + self.register_instruction(cil.GotoIfNode(type_a_equals_bool, "a_is_type_int_or_bool")) + self.register_instruction(cil.GotoIfNode(type_a_equals_string, "a_is_type_string")) + self.register_instruction(cil.GotoNode("a_is_type_object")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("a_is_type_int_or_bool")) + self.register_instruction(cil.EqualIntNode(result, "a", "b")) + self.register_instruction(cil.GotoNode("end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("a_is_type_string")) + self.register_instruction(cil.EqualStrNode(result, "a", "b")) + self.register_instruction(cil.GotoNode("end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("a_is_type_object")) + self.register_instruction(cil.EqualNode(result, "a", "b")) + self.register_instruction(cil.GotoNode("end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("end_of_equal")) + + self.register_instruction(cil.ReturnNode(result)) + + def add_function_assign(self): + self.current_function = self.register_function("function_assign") + self.current_function.params.append(cil.ParamNode("dest")) + self.current_function.params.append(cil.ParamNode("source")) + constant_null = self.define_internal_local() + is_null = self.define_internal_local() + type_of_source = self.define_internal_local() + type_int = self.define_internal_local() + type_bool = self.define_internal_local() + type_source_equals_int = self.define_internal_local() + type_source_equals_bool = self.define_internal_local() + + self.register_instruction(cil.AllocateNullNode(constant_null)) + self.register_instruction(cil.AllocateBoolNode(is_null, "0")) + self.register_instruction(cil.EqualAddressNode(is_null, "source", constant_null)) + self.register_instruction(cil.EqualAddressNode(is_null, "dest", constant_null)) + self.register_instruction(cil.GotoIfNode(is_null, "source_is_type_object")) + + self.register_instruction(cil.TypeOfNode(type_of_source, "source")) + self.register_instruction(cil.TypeAddressNode(type_int, "Int")) + self.register_instruction(cil.TypeAddressNode(type_bool, "Bool")) + self.register_instruction(cil.AllocateBoolNode(type_source_equals_int, "0")) + self.register_instruction(cil.AllocateBoolNode(type_source_equals_bool, "0")) + self.register_instruction(cil.EqualAddressNode(type_source_equals_int, type_of_source, type_int)) + self.register_instruction(cil.EqualAddressNode(type_source_equals_bool, type_of_source, type_bool)) + self.register_empty_instruction() + self.register_instruction(cil.GotoIfNode(type_source_equals_int, "source_is_type_int_or_bool")) + self.register_instruction(cil.GotoIfNode(type_source_equals_bool, "source_is_type_int_or_bool")) + self.register_instruction(cil.GotoNode("source_is_type_object")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("source_is_type_int_or_bool")) + + self.register_instruction(cil.AssignIntNode("dest", "source")) + self.register_instruction(cil.GotoNode("source_end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("source_is_type_object")) + self.register_instruction(cil.AssignNode("dest", "source")) + self.register_instruction(cil.GotoNode("source_end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("source_end_of_equal")) + + self.register_instruction(cil.ReturnNode("dest")) + + def add_function_init(self, type_name: str): + self.current_function = self.register_function(self.to_function_name("__init__", type_name)) + self.current_function.params.append(cil.ParamNode("self")) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_abort(self): + self.current_function = self.register_function(self.to_function_name("abort", "Object")) + self.current_function.params.append(cil.ParamNode("self")) + msg1 = self.define_internal_local() + msg2 = self.define_internal_local() + msg = self.define_internal_local() + endl = self.define_internal_local() + method_index = self.define_internal_local() + method_address = self.define_internal_local() + + self.register_instruction(cil.AllocateStringNode(msg1, "\"Abort called from class \"")) + self.register_instruction(cil.AllocateStringNode(endl, "\"\\n\"")) + + all_methods = methods_declaration_order(self.context.get_type("String")) + i = [m.name for m, _ in all_methods].index("type_name") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, "self", method_index, "type_name", "String")) + + self.register_instruction(cil.ArgNode("self", 0, 1)) + self.register_instruction(cil.DynamicCallNode("String", method_address, msg2, 1)) + + + all_methods = methods_declaration_order(self.context.get_type("String")) + i = [m.name for m, _ in all_methods].index("concat") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, "self", method_index, "concat", "String")) + + self.register_instruction(cil.ArgNode(msg1, 0, 2)) + self.register_instruction(cil.ArgNode(msg2, 1, 2)) + self.register_instruction(cil.DynamicCallNode("String", method_address, msg, 2)) + + all_methods = methods_declaration_order(self.context.get_type("String")) + i = [m.name for m, _ in all_methods].index("concat") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, "self", method_index, "concat", "String")) + + self.register_instruction(cil.ArgNode(msg, 0, 2)) + self.register_instruction(cil.ArgNode(endl, 1, 2)) + self.register_instruction(cil.DynamicCallNode("String", method_address, msg, 2)) + + self.register_instruction(cil.PrintStringNode(msg)) + self.register_instruction(cil.HaltNode()) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_type_name(self): + self.current_function = self.register_function(self.to_function_name("type_name", "Object")) + self.current_function.params.append(cil.ParamNode("self")) + type_name = self.define_internal_local() + self.register_instruction(cil.TypeNameNode(type_name, "self")) + self.register_instruction(cil.ReturnNode(type_name)) + + def add_function_copy(self): + self.current_function = self.register_function(self.to_function_name("copy", "Object")) + self.current_function.params.append(cil.ParamNode("self")) + local_copy = self.define_internal_local() + self.register_instruction(cil.CopyNode(local_copy, "self")) + self.register_instruction(cil.ReturnNode(local_copy)) +# + def add_function_out_string(self): + self.current_function = self.register_function(self.to_function_name("out_string", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("x")) + self.register_instruction(cil.PrintStringNode("x")) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_out_int(self): + self.current_function = self.register_function(self.to_function_name("out_int", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("x")) + self.register_instruction(cil.PrintIntNode("x")) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_in_string(self): + self.current_function = self.register_function(self.to_function_name("in_string", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + local_str = self.define_internal_local() + self.register_instruction(cil.ReadStringNode(local_str)) + self.register_instruction(cil.ReturnNode(local_str)) + + def add_function_in_int(self): + self.current_function = self.register_function(self.to_function_name("in_int", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + local_str = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(local_str, "0")) + self.register_instruction(cil.ReadIntNode(local_str)) + self.register_instruction(cil.ReturnNode(local_str)) + + def add_function_length(self): + self.current_function = self.register_function(self.to_function_name("length", "String")) + self.current_function.params.append(cil.ParamNode("self")) + len_local = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(len_local, "0")) + self.register_instruction(cil.LengthNode(len_local, "self")) + self.register_instruction(cil.ReturnNode(len_local)) + + def add_function_concat(self): + self.current_function = self.register_function(self.to_function_name("concat", "String")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("s")) + new_str = self.define_internal_local() + self.register_instruction(cil.ConcatNode(new_str, "self", "s")) + self.register_instruction(cil.ReturnNode(new_str)) + + def add_function_substr(self): + self.current_function = self.register_function(self.to_function_name("substr", "String")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("i")) + self.current_function.params.append(cil.ParamNode("l")) + substr = self.define_internal_local() + self.register_instruction(cil.SubstringNode(substr, "self", "i", "l")) + self.register_instruction(cil.ReturnNode(substr)) +# + def debug_print_type(self, source: str): + endl = self.define_internal_local() + dest = self.define_internal_local() + self.register_instruction(cil.AllocateStringNode(endl, '"\\n"')) + self.register_instruction(cil.ArgNode(source, 0, 1)) + self.register_instruction(cil.StaticCallNode("function_type_name_at_Object", dest, 1)) + self.register_instruction(cil.PrintStringNode(dest)) + self.register_instruction(cil.PrintStringNode(endl)) + + +def methods_declaration_order(t: Type): + method_decl = [] + all_methods = t.all_methods() + visited = set() + for method, _ in all_methods: + if method.name in visited:# or method.name == 'get_type': + continue + + meths = list(all_methods)[::-1] + method_decl.append( + [(x, y) for x, y in meths if x.name == method.name][0] + ) + visited.add(method.name) + return method_decl + +class CoolToCilTranslator(BaseCoolToCilVisitor): + # Notes: + # 1 - All the expression nodes are going to return a tuple [str, Type] + + @visitor.on("node") + def visit(self, node, scope): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode, scope: Scope): + scope = node.scope + default_class_names = ["Object", "IO", "String", "Int", "Bool"] + for name in default_class_names: + current_type = self.context.get_type(name) + self.current_type = current_type + cil_type_node = self.register_type(current_type.name, current_type.parent.name if current_type.parent is not None else None) + + for method, ancestor in methods_declaration_order(current_type): + cil_type_node.methods.append((method.name, self.to_function_name(method.name, ancestor.name))) + + self.add_function_add() + self.add_function_sub() + self.add_function_mul() + self.add_function_div() + self.add_function_xor() + self.add_function_less_than() + self.add_function_less_than_or_equal() + self.add_function_equal() + self.add_function_assign() + + self.add_function_init("Object") + self.add_function_abort() + self.add_function_type_name() + self.add_function_copy() + + self.add_function_init("IO") + self.add_function_out_string() + self.add_function_out_int() + self.add_function_in_string() + self.add_function_in_int() + + self.add_function_init("String") + self.add_function_length() + self.add_function_concat() + self.add_function_substr() + + self.add_function_init("Int") + self.add_function_init("Bool") + + for i, declaration in enumerate(node.class_list): + self.visit(declaration, scope.children[i]) + + self.add_function_main() + + return cil.ProgramNode(self.dottypes, self.dotdata, self.dotcode) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode, scope: Scope): + scope = node.scope + self.current_type = self.context.get_type(node.name) + + type_node = self.register_type(self.current_type.name, self.current_type.parent.name) + + attrs = [ + feature + for feature in node.data + if isinstance(feature, cool.AttributeDecNode) + ] + + methods = [ + feature + for feature in node.data + if isinstance(feature, cool.MethodDecNode) + ] + + for attr, _ in self.current_type.all_attributes(): + self.visit(attr, scope) + type_node.attributes.append(attr.name) + + for method, t in methods_declaration_order(self.current_type): + type_node.methods.append((method.name, self.to_function_name(method.name, t.name))) + + i = len([attr for attr in attrs if attr.expr is not None]) + for i, method in enumerate(methods, start=i): + self.visit(method, scope.children[i]) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode, scope: Scope): + scope = node.scope + pass + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode, scope: Scope): + scope = node.scope + self.current_method, owner_type = self.current_type.get_method( + node.name, owner=True + ) + function_name = self.to_function_name(self.current_method.name, owner_type.name) + self.current_function = self.register_function(function_name) + + self.current_function.params = [cil.ParamNode("self")] + [ + cil.ParamNode(param_name[0]) for param_name in node.params + ] + + source, _ = self.visit(node.expr, scope) + + self.register_instruction(cil.ReturnNode(source)) + + @visitor.when(cool.LetNode) + def visit(self, node: cool.LetNode, scope: Scope): + scope = node.scope + x = " ".join([f"{name}: {type_name}" for name, type_name, _ in node.declaration]) + self.register_comment(f"LET {x}") + + i = 0 + for name, type_name, expr in node.declaration: + self.register_local(name) + + if expr: + self.register_empty_instruction() + source, _ = self.visit(expr, scope.children[i]) + self.register_instruction(cil.ArgNode(name, 0, 2)) + self.register_instruction(cil.ArgNode(source, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", name, 2)) + i += 1 + else: + if type_name == "Int": + self.register_instruction(cil.AllocateIntNode(name, "0")) + elif type_name == "Bool": + self.register_instruction(cil.AllocateBoolNode(name, "0")) + elif type_name == "String": + self.register_instruction(cil.AllocateStringNode(name, "\"\"")) + else: + self.register_instruction(cil.AllocateNullNode(name)) + source, t = self.visit(node.expr, scope.children[i]) + + return source, t + + @visitor.when(cool.ExprParNode) + def visit(self, node: cool.ExprParNode, scope: Scope): + scope = node.scope + return self.visit(node.expr, scope) + + @visitor.when(cool.AssignNode) + def visit(self, node: cool.AssignNode, scope: Scope): + scope = node.scope + variable = scope.find_variable(node.idx) + variables = scope.find_all_variables_with_name(node.idx) + source, _ = self.visit(node.expr, scope) + + self.register_empty_instruction() + is_attribute = ( + self.current_type.contains_attribute(node.idx) and len(variables) == 1 + ) + + if is_attribute: + attr_names = [attr.name for attr, _ in self.current_type.all_attributes()] + self.register_instruction(cil.SetAttribNode("self", variable.name, source, attr_names.index(variable.name))) + return source, variable.type + else: + self.register_instruction(cil.ArgNode(variable.name, 0, 2)) + self.register_instruction(cil.ArgNode(source, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", variable.name, 2)) + # self.register_instruction(cil.AssignNode(variable.name, source)) + return variable.name, variable.type + + @visitor.when(cool.BlockNode) + def visit(self, node: cool.BlockNode, scope: Scope): + scope = node.scope + source, inst_type = None, None + for expr in node.expr: + source, inst_type = self.visit(expr, scope) + return source, inst_type + + @visitor.when(cool.ConditionalNode) + def visit(self, node: cool.ConditionalNode, scope: Scope): + scope = node.scope + self.register_instruction(cil.CommentNode("Conditional")) + + node_id = hash(node) + result_address = self.define_internal_local() + conditional_address = self.define_internal_local() + + self.register_instruction(cil.AllocateBoolNode(conditional_address, "0")) + + source, _ = self.visit(node.if_expr, scope) + + self.register_instruction(cil.AssignNode(conditional_address, source)) + self.register_instruction(cil.GotoIfNode(conditional_address, f"then_{node_id}")) + self.register_instruction(cil.GotoNode(f"else_{node_id}")) + + self.register_instruction(cil.EndOfLineNode()) + self.register_instruction(cil.LabelNode(f"then_{node_id}")) + then_source, then_type = self.visit(node.then_expr, scope) + self.register_instruction(cil.AssignNode(result_address, then_source)) + self.register_instruction(cil.GotoNode(f"endif_{node_id}")) + + self.register_instruction(cil.EndOfLineNode()) + self.register_instruction(cil.LabelNode(f"else_{node_id}")) + else_source, else_type = self.visit(node.else_expr, scope) + self.register_instruction(cil.AssignNode(result_address, else_source)) + self.register_instruction(cil.GotoNode(f"endif_{node_id}")) + + self.register_instruction(cil.EndOfLineNode()) + self.register_instruction(cil.LabelNode(f"endif_{node_id}")) + + return result_address, then_type.join(else_type) + + @visitor.when(cool.WhileNode) + def visit(self, node: cool.WhileNode, scope: Scope): + scope = node.scope + node_id = hash(node) + result_addres = self.define_internal_local() + self.register_empty_instruction() + self.register_comment(f"WHILE LOOP") + + self.register_instruction(cil.AllocateNullNode(result_addres)) + self.register_instruction(cil.LabelNode(f"while_start_{node_id}")) + + conditional_source, _ = self.visit(node.cond, scope) + self.register_instruction(cil.GotoIfNode(conditional_source, f"while_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"while_end_{node_id}")) + + self.register_instruction(cil.EndOfLineNode()) + self.register_instruction(cil.LabelNode(f"while_body_{node_id}")) + self.visit(node.data, scope) + self.register_instruction(cil.GotoNode(f"while_start_{node_id}")) + + self.register_instruction(cil.EndOfLineNode()) + self.register_instruction(cil.LabelNode(f"while_end_{node_id}")) + + return result_addres, self.context.get_type("Object") + + @visitor.when(cool.CaseNode) + def visit(self, node: cool.CaseNode, scope: Scope): + scope = node.scope + node_id = hash(node) + swicth_expression, _ = self.visit(node.expr, scope) + + constant_zero_int = self.define_internal_local() + constant_one_int = self.define_internal_local() + constant_len_types_int = self.define_internal_local() + constant_null_ptr = self.define_internal_local() + count_of_ancestors_int = self.define_internal_local() + step1_comparison_result_bool = self.define_internal_local() + switch_expr_type_address = self.define_internal_local() + ancestor_type_address = self.define_internal_local() + ancestors_array = self.define_internal_local() + + self.register_instruction(cil.AllocateIntNode(constant_zero_int, "0")) + self.register_instruction(cil.AllocateIntNode(constant_one_int, "1")) + self.register_instruction(cil.AllocateIntNode(constant_len_types_int, str(len(node.params)))) + self.register_instruction(cil.AllocateNullNode(constant_null_ptr)) + self.register_instruction(cil.AllocateIntNode(count_of_ancestors_int, "0")) + self.register_instruction(cil.AllocateBoolNode(step1_comparison_result_bool, "0")) + self.register_empty_instruction() + + ############################################ + # While loop to get the count of ancestors # + ############################################ + + self.register_instruction(cil.TypeOfNode(switch_expr_type_address, swicth_expression)) + self.register_instruction(cil.AssignNode(ancestor_type_address, switch_expr_type_address)) + + self.register_instruction(cil.LabelNode(f"while_start_{node_id}")) + self.register_instruction(cil.EqualAddressNode(step1_comparison_result_bool, ancestor_type_address, constant_null_ptr)) + self.register_instruction(cil.GotoIfNode(step1_comparison_result_bool, f"while_end_{node_id}")) + + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", count_of_ancestors_int, 2)) + + self.register_instruction(cil.ParentNode(ancestor_type_address, ancestor_type_address)) + self.register_instruction(cil.GotoNode(f"while_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"while_end_{node_id}")) + # ################################################# + # # End While loop to get the count of ancestors # + # ################################################# + + + # ####################################################################### + # # Foreach to create the array of ancestors and fill it with the types # + # ####################################################################### + self.register_instruction(cil.AssignNode(ancestor_type_address, switch_expr_type_address)) + self.register_instruction(cil.ArrayNode(ancestors_array, count_of_ancestors_int)) + + step2_iter_index_int = self.define_internal_local() + step2_comparison_result_bool = self.define_internal_local() + + self.register_instruction(cil.AllocateIntNode(step2_iter_index_int, "0")) + self.register_instruction(cil.AllocateBoolNode(step2_comparison_result_bool, "0")) + self.register_instruction(cil.LabelNode(f"foreach_start_{node_id}")) + + self.register_instruction(cil.ArgNode(step2_iter_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", step2_comparison_result_bool, 2)) + + self.register_instruction(cil.GotoIfNode(step2_comparison_result_bool, f"foreach_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_body_{node_id}")) + self.register_instruction(cil.SetIndexNode(ancestors_array, step2_iter_index_int, ancestor_type_address)) + self.register_instruction(cil.ParentNode(ancestor_type_address, ancestor_type_address)) + + + self.register_instruction(cil.ArgNode(step2_iter_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", step2_iter_index_int, 2)) + + self.register_instruction(cil.GotoNode(f"foreach_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_end_{node_id}")) + self.register_empty_instruction() + # ########################################################################### + # # End Foreach to create the array of ancestors and fill it with the types # + # ########################################################################### + + + + types = [self.context.get_type(type_name) for _, type_name, _ in node.params] + type_branch_array = self.define_internal_local() + nearest_ancestor_array = self.define_internal_local() + self.register_instruction(cil.ArrayNode(type_branch_array, constant_len_types_int)) + self.register_instruction(cil.ArrayNode(nearest_ancestor_array, constant_len_types_int)) + for i_int, t in enumerate(types): + x = self.define_internal_local() + i = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(i, i_int)) + self.register_instruction(cil.TypeAddressNode(x, t.name)) + self.register_instruction(cil.SetIndexNode(type_branch_array, i, x)) + self.register_instruction(cil.SetValueInIndexNode(nearest_ancestor_array, i, count_of_ancestors_int)) + + self.register_empty_instruction() + + i_int = self.define_internal_local() + comp_i_bool = self.define_internal_local() + type_i = self.define_internal_local() + j_int = self.define_internal_local() + comp_j_bool = self.define_internal_local() + type_j = self.define_internal_local() + types_comparison_bool = self.define_internal_local() + + self.register_instruction(cil.AllocateIntNode(i_int, "0")) + self.register_instruction(cil.AllocateBoolNode(comp_i_bool, "0")) + self.register_instruction(cil.AllocateIntNode(j_int, "0")) + self.register_instruction(cil.AllocateBoolNode(comp_j_bool, "0")) + self.register_instruction(cil.AllocateBoolNode(types_comparison_bool, "0")) + + self.register_instruction(cil.LabelNode(f"foreach_type_start_{node_id}")) + + self.register_instruction(cil.ArgNode(i_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_len_types_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", comp_i_bool, 2)) + + self.register_instruction(cil.GotoIfNode(comp_i_bool, f"foreach_type_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_type_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_type_body_{node_id}")) + self.register_instruction(cil.GetIndexNode(type_i, type_branch_array, i_int)) + + ################# + # Inner Foreach # + ################# + self.register_empty_instruction() + + self.register_instruction(cil.ArgNode(j_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_zero_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", j_int, 2)) + + self.register_instruction(cil.LabelNode(f"foreach_ancestor_start_{node_id}")) + + self.register_instruction(cil.ArgNode(j_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", comp_j_bool, 2)) + + self.register_instruction(cil.GotoIfNode(comp_j_bool, f"foreach_ancestor_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_ancestor_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_ancestor_body_{node_id}")) + self.register_instruction(cil.GetIndexNode(type_j, ancestors_array, j_int)) + + self.register_instruction(cil.EqualAddressNode(types_comparison_bool, type_i, type_j)) + self.register_instruction(cil.GotoIfNode(types_comparison_bool, f"foreach_ancestor_end_{node_id}")) + + self.register_instruction(cil.ArgNode(j_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", j_int, 2)) + self.register_instruction(cil.GotoNode(f"foreach_ancestor_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_ancestor_end_{node_id}")) + self.register_instruction(cil.SetValueInIndexNode(nearest_ancestor_array, i_int, j_int)) + self.register_empty_instruction() + # ####################### + # # End Inner Foreach 1 # + # ####################### + + self.register_instruction(cil.ArgNode(i_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", i_int, 2)) + self.register_instruction(cil.GotoNode(f"foreach_type_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_type_end_{node_id}")) + + + + step4_index_int = self.define_internal_local() + step4_current_min_index_int = self.define_internal_local() + step4_temp_int = self.define_internal_local() + step4_current_min_int = self.define_internal_local() + step4_comparison_bool = self.define_internal_local() + + self.register_instruction(cil.AllocateIntNode(step4_index_int, "0")) + self.register_instruction(cil.AllocateIntNode(step4_current_min_index_int, "0")) + self.register_instruction(cil.AllocateIntNode(step4_temp_int, "0")) + self.register_instruction(cil.AllocateIntNode(step4_current_min_int, "0")) + self.register_instruction(cil.AllocateBoolNode(step4_comparison_bool, "0")) + + self.register_instruction(cil.ArgNode(step4_current_min_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", step4_current_min_int, 2)) + + self.register_instruction(cil.LabelNode(f"foreach_min_start_{node_id}")) + + self.register_instruction(cil.ArgNode(step4_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_len_types_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", step4_comparison_bool, 2)) + + self.register_instruction(cil.GotoIfNode(step4_comparison_bool, f"foreach_min_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_min_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_min_body_{node_id}")) + self.register_instruction(cil.GetValueInIndexNode(step4_temp_int, nearest_ancestor_array, step4_index_int)) + + self.register_instruction(cil.ArgNode(step4_temp_int, 0, 2)) + self.register_instruction(cil.ArgNode(step4_current_min_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", step4_comparison_bool, 2)) + + self.register_instruction(cil.GotoIfNode(step4_comparison_bool, f"update_min_{node_id}")) + self.register_instruction(cil.GotoNode(f"update_min_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"update_min_{node_id}")) + + self.register_instruction(cil.ArgNode(step4_current_min_int, 0, 2)) + self.register_instruction(cil.ArgNode(step4_temp_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", step4_current_min_int, 2)) + + self.register_instruction(cil.ArgNode(step4_current_min_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(step4_index_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", step4_current_min_index_int, 2)) + + self.register_instruction(cil.LabelNode(f"update_min_end_{node_id}")) + self.register_instruction(cil.ArgNode(step4_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", step4_index_int, 2)) + self.register_instruction(cil.GotoNode(f"foreach_min_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_min_end_{node_id}")) + + self.register_empty_instruction() + bool_array = self.define_internal_local() + self.register_instruction(cil.ArrayNode(bool_array, constant_len_types_int)) + for i, _ in enumerate(types): + x = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(x, f"{i}")) + self.register_instruction(cil.SetValueInIndexNode(bool_array, x, constant_zero_int)) + + self.register_empty_instruction() + exists_error_bool = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(exists_error_bool, "0")) + + self.register_instruction(cil.ArgNode(step4_current_min_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_equal", exists_error_bool, 2)) + + self.register_instruction(cil.GotoIfNode(exists_error_bool, f"error_branch_{node_id}")) + self.register_instruction(cil.SetValueInIndexNode(bool_array, step4_current_min_index_int, constant_one_int)) + + + step5_comparison = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(step5_comparison, "0")) + self.register_empty_instruction() + for i_int, t in enumerate(types): + x = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(x, f"{i_int}")) + self.register_instruction(cil.GetValueInIndexNode(step5_comparison, bool_array, x)) + self.register_instruction(cil.GotoIfNode(step5_comparison, f"branch_{t.name}_{node_id}")) + self.register_empty_instruction() + + resutl_address = self.define_internal_local() + for i_int, (var_name, type_name, expr) in enumerate(node.params): + self.register_instruction(cil.LabelNode(f"branch_{type_name}_{node_id}")) + var = self.register_local(var_name, f"Specialiced variable for the branch {type_name}") + self.register_instruction(cil.ArgNode(var, 0, 2)) + self.register_instruction(cil.ArgNode(swicth_expression, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", var, 2)) + + expr_source, _ = self.visit(expr, scope.children[i_int]) + self.register_instruction(cil.ArgNode(resutl_address, 0, 2)) + self.register_instruction(cil.ArgNode(expr_source, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", resutl_address, 2)) + self.register_instruction(cil.AssignNode(resutl_address, expr_source)) + self.register_instruction(cil.GotoNode(f"branch_end_{node_id}")) + self.register_empty_instruction() + self.register_instruction(cil.LabelNode(f"error_branch_{node_id}")) + self.register_instruction(cil.LabelNode(f"branch_end_{node_id}")) + + return resutl_address, Type.multi_join(types) + + @visitor.when(cool.MethodCallNode) + def visit(self, node: cool.MethodCallNode, scope: Scope): + scope = node.scope + obj_source, obj_type = self.visit(node.atom, scope) + if obj_type.name == "SELF_TYPE": + obj_type = self.current_type + + ancestor_call = False + if node.type is not None: + ancestor_call = True + obj_type = self.context.get_type(node.type) + + args_sources = [] + for arg in node.exprlist: + arg_source, _ = self.visit(arg, scope) + args_sources.append(arg_source) + + all_methods = methods_declaration_order(obj_type) + i = [m.name for m, _ in all_methods].index(node.idx) + method = obj_type.get_method(node.idx) + + call_dest = self.define_internal_local() + method_index = self.define_internal_local() + method_address = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, obj_source, method_index, method.name, obj_type.name)) + + self.register_instruction(cil.ArgNode(obj_source, 0, len(args_sources) + 1)) + for index, arg_source in enumerate(args_sources, start=1): + self.register_instruction(cil.ArgNode(arg_source, index, len(args_sources) + 1)) + + if ancestor_call: + self.register_instruction(cil.StaticCallNode(self.to_function_name(method.name, obj_type.name), call_dest, len(args_sources) + 1)) + else: + self.register_instruction(cil.DynamicCallNode(obj_type.name, method_address, call_dest, len(args_sources) + 1)) + return call_dest, method.return_type + + @visitor.when(cool.NumberNode) + def visit(self, node: cool.NumberNode, scope: Scope): + scope = node.scope + local_int = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(local_int, node.lex)) + return local_int, self.context.get_type("Int") + + @visitor.when(cool.StringNode) + def visit(self, node: cool.StringNode, scope: Scope): + scope = node.scope + local_str_var = self.define_internal_local() + self.register_instruction(cil.AllocateStringNode(local_str_var, node.lex)) + return local_str_var, self.context.get_type("String") + + @visitor.when(cool.BooleanNode) + def visit(self, node: cool.BooleanNode, scope: Scope): + scope = node.scope + local_bool_var = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(local_bool_var, ("1" if node.lex == "true" else "0"))) + return local_bool_var, self.context.get_type("Bool") + + @visitor.when(NullNode) + def visit(self, node: NullNode, scope: Scope): + scope = node.scope + local_null_var = self.define_internal_local() + self.register_instruction(cil.AllocateNullNode(local_null_var)) + return local_null_var, NullType + + @visitor.when(cool.VariableNode) + def visit(self, node: cool.VariableNode, scope: Scope): + scope = node.scope + variable = scope.find_variable(node.lex) + variables = scope.find_all_variables_with_name(node.lex) + + is_attribute = (self.current_type.contains_attribute(node.lex) and len(variables) == 1) + + if is_attribute: + dest = self.define_internal_local() + attr_names = [a.name for a, _ in self.current_type.all_attributes()] + self.register_instruction(cil.GetAttribNode(dest, "self", variable.name, attr_names.index(variable.name))) + return dest, variable.type + return variable.name, variable.type + + @visitor.when(cool.NewNode) + def visit(self, node: cool.NewNode, scope: Scope): + scope = node.scope + local = self.define_internal_local() + + self.register_instruction(cil.AllocateNode(node.type, local)) + self.register_instruction(cil.ArgNode(local, 0, 1)) + self.register_instruction(cil.StaticCallNode(self.to_function_name("__init__", node.type), local, 1)) + return local, self.context.get_type(node.type) + + @visitor.when(cool.NegationNode) + def visit(self, node: cool.NegationNode, scope: Scope): + scope = node.scope + source, _ = self.visit(node.expr, scope) + local_int = self.define_internal_local() + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(local_int, "1")) + self.register_instruction(cil.AllocateBoolNode(result, "0")) + + self.register_instruction(cil.ArgNode(source, 0, 2)) + self.register_instruction(cil.ArgNode(local_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_xor", result, 2)) + + return result, self.context.get_type("Bool") + + @visitor.when(cool.ComplementNode) + def visit(self, node: cool.ComplementNode, scope: Scope): + scope = node.scope + + source, _ = self.visit(node.expr, scope) + local_int_0 = self.define_internal_local() + local_int_1 = self.define_internal_local() + result = self.define_internal_local() + + + self.register_instruction(cil.AllocateIntNode(local_int_0, "1")) + self.register_instruction(cil.AllocateIntNode(local_int_1, str(2**32 - 1))) + self.register_instruction(cil.AllocateIntNode(result, "0")) + + self.register_instruction(cil.ArgNode(source, 0, 2)) + self.register_instruction(cil.ArgNode(local_int_1, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_xor", result, 2)) + + self.register_instruction(cil.ArgNode(result, 0, 2)) + self.register_instruction(cil.ArgNode(local_int_0, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", result, 2)) + return result, self.context.get_type("Int") + + @visitor.when(cool.IsVoidNode) + def visit(self, node: cool.IsVoidNode, scope: Scope): + scope = node.scope + + source, _ = self.visit(node.expr, scope) + null_ptr = self.define_internal_local() + result = self.define_internal_local() + + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.AllocateNullNode(null_ptr)) + + self.register_instruction(cil.ArgNode(source, 0, 2)) + self.register_instruction(cil.ArgNode(null_ptr, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_equal", result, 2)) + return result, self.context.get_type("Bool") + + @visitor.when(cool.PlusNode) + def visit(self, node: cool.PlusNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_add", "Int") + + @visitor.when(cool.MinusNode) + def visit(self, node: cool.MinusNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_sub", "Int") + + @visitor.when(cool.TimesNode) + def visit(self, node: cool.TimesNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_mult", "Int") + + @visitor.when(cool.DivNode) + def visit(self, node: cool.DivNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_div", "Int") + + @visitor.when(cool.LessEqualNode) + def visit(self, node: cool.LessEqualNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_less_than_or_equal", "Bool") + + @visitor.when(cool.LessNode) + def visit(self, node: cool.LessNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_less_than", "Bool") + + @visitor.when(cool.EqualNode) + def visit(self, node: cool.EqualNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_equal", "Bool") + + def visit_arith_node(self, node: cool.BinaryNode, scope: Scope, operation_function: str, return_type_name: str = "Int"):# -> Tuple[str, Type]: + left, _ = self.visit(node.left, scope) + right, _ = self.visit(node.right, scope) + dest = self.define_internal_local() + self.register_empty_instruction() + self.register_instruction(cil.ArgNode(left, 0, 2)) + self.register_instruction(cil.ArgNode(right, 1, 2)) + self.register_instruction(cil.StaticCallNode(operation_function, dest, 2)) + return dest, self.context.get_type(return_type_name) + + + +class BaseCilToMipsVisitor: + def __init__(self, context: Context) -> None: + self.dotdata: List[mips.DataNode] = [] + self.dottext: List[mips.InstructionNode] = [] + + # + self.current_function: Optional[cil.FunctionNode] = None + self.current_function_stack: List[str] = [] + + self.context = context + + def register_word(self, name: str, value: str) -> mips.WordDataNode: + data = mips.WordDataNode(name, value) + self.dotdata.append(data) + return data + + def register_asciiz(self, name: str, value: str) -> mips.AsciizDataNode: + data = mips.AsciizDataNode(name, value) + self.dotdata.append(data) + return data + + def register_space(self, name: str, value: str) -> mips.AsciizDataNode: + data = mips.SpaceDataNode(name, value) + self.dotdata.append(data) + return data + + def register_instruction(self, instruction: mips.InstructionNode) -> mips.InstructionNode: + self.dottext.append(instruction) + return instruction + + def register_empty_instruction(self) -> mips.EmptyInstructionNode: + self.dottext.append(mips.EmptyInstructionNode()) + return self.dottext[-1] + + def register_empty_data(self): + self.dotdata.append(mips.EmptyDataNode()) + + def register_comment(self, comment: str) -> mips.CommentNode: + self.dottext.append(mips.CommentNode(comment)) + return self.dottext[-1] + + def to_data_type(self, data_name: str, type_name: str) -> str: + return f"type_{type_name}_{data_name}" + + def offset_of(self, local_name: str) -> int: + stack_size = 4 * len(self.current_function_stack) + index = 4 * self.current_function_stack.index(local_name) + return stack_size - index - 4 + + def register_instantiation(self, size: Union[int, str]) -> mips.InstructionNode: + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + if isinstance(size, int): + self.register_instruction(mips.AddiNode("$a0", "$zero", f"{size}")) + if isinstance(size, str): + self.register_instruction(mips.MoveNode("$a0", size)) + self.register_instruction(mips.SystemCallNode()) + + +class CilToMipsTranslator(BaseCilToMipsVisitor): + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(cil.ProgramNode) #### + def visit(self, node: cil.ProgramNode): + + for type_node in node.dottypes: + self.visit(type_node) + + for type_node in node.dottypes: + self.register_word(self.to_data_type("name_size", type_node.name), str(len(type_node.name))) + self.register_asciiz(self.to_data_type("name", type_node.name), f'"{type_node.name}"') + self.register_empty_data() + + self.register_space("buffer_input", 1024) + self.register_asciiz("debug_log", '"debug_log\\n"') + + for function_node in node.dotcode: + self.visit(function_node) + + return mips.ProgramNode(self.dotdata, self.dottext) + + @visitor.when(cil.TypeNode) + def visit(self, node: cil.TypeNode): + size = 4 * (2 + len(node.attributes) + len(node.methods)) #### +2 + + self.register_word(f"type_{node.name}", str(size)) + self.register_word(self.to_data_type("inherits_from", node.name), f"type_{node.parent}" if node.parent != "null" else "0") + self.register_word(self.to_data_type("name_address", node.name), f"type_{node.name}_name_size") + for method, function in node.methods: + self.register_word(self.to_data_type(method, node.name), function) + self.register_empty_data() + + @visitor.when(cil.FunctionNode) + def visit(self, node: cil.FunctionNode): + self.current_function = node + self.register_instruction(mips.LabelNode(node.name)) + + param_names = [x.name for x in self.current_function.params] + local_names = [x.name for x in self.current_function.localvars] + self.current_function_stack = ["$ra"] + param_names + local_names + + locals_size = 4 * len(self.current_function.localvars) + stack_size = 4 * len(self.current_function_stack) + + + ## + # if node.name != "main": + # self.register_comment("Function parameters") + # self.register_comment(f" $ra = {stack_size - 4}($sp)") + # for i, param_name in enumerate(param_names, start=2): + # self.register_comment(f" {param_name} = {stack_size - (4 * i)}($sp)") + # self.register_empty_instruction() + + if self.current_function.localvars: + self.register_comment("SPACE FOR LOCAL VARIABLES") + self.register_instruction(mips.AddiNode("$sp", "$sp", f"{-locals_size}")) + self.register_empty_instruction() + + for instruction in node.instructions: + # TODO: Remove the try/except block when the visitor is fixed + try: + if isinstance(instruction, (cil.EndOfLineNode, cil.CommentNode)): + continue + self.visit(instruction) + self.register_empty_instruction() + except Exception as e: + print(f"error {e} in {node.name} {type(instruction)}") + + if node.name != "main" and self.current_function.localvars: + self.register_comment("SPACE FOR LOCAL VARIABLES") + self.register_instruction(mips.AddiNode("$sp", "$sp", f"{locals_size}")) + self.register_empty_instruction() + + if node.name != "main": + self.register_instruction(mips.JumpRegisterNode("$ra")) + self.register_empty_instruction() + + @visitor.when(cil.AssignNode) + def visit(self, node: cil.AssignNode): + self.register_comment(f"{node.dest} <- {node.source}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.AssignIntNode) + def visit(self, node: cil.AssignIntNode): + self.register_comment(f"{node.dest} <- {node.source} WHERE {node.source} IS AN INT") + self.register_instantiation(12) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", "0($t0)")) + self.register_instruction(mips.LoadWordNode("$t2", "8($t0)")) + + self.register_instruction(mips.StoreWordNode("$t1", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.StoreWordNode("$t2", "8($v0)")) + + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.ArgNode) + def visit(self, node: cil.ArgNode): + if node.arg_index == 0: + self.register_comment("FUNCTION ARG") + self.register_instruction(mips.AddiNode("$sp", "$sp", f"-{4 * node.total_args + 4}")) + self.register_instruction(mips.StoreWordNode("$ra", f"{4 * (node.total_args)}($sp)")) + self.register_empty_instruction() + self.register_comment(f"ARGUMENT [{node.name}]") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.name) + 4 * node.total_args + 4}($sp)")) + self.register_instruction(mips.StoreWordNode("$t0", f"{4 * (node.total_args - node.arg_index - 1)}($sp)")) + + @visitor.when(cil.DynamicCallNode) + def visit(self, node: cil.DynamicCallNode): + self.register_comment(f"CALLING DYNAMIC FUNCTION -> {node.method_addr}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.method_addr) + 4 * node.total_args + 4}($sp)")) + self.register_instruction(mips.JumpAndLinkRegisterNode("$t0")) + self.register_instruction(mips.LoadWordNode("$ra", f"{4 * node.total_args}($sp)")) + self.register_instruction(mips.StoreWordNode("$v1", f"{self.offset_of(node.dest) + 4 * node.total_args + 4}($sp)")) + self.register_instruction(mips.AddiNode("$sp", "$sp", f"{4 * node.total_args + 4}")) + + @visitor.when(cil.StaticCallNode) + def visit(self, node: cil.StaticCallNode): + self.register_comment(f"CALLING STATIC FUNCTION {node.function}") + self.register_instruction(mips.JumpAndLinkNode(node.function)) + self.register_instruction(mips.LoadWordNode("$ra", f"{4 * node.total_args}($sp)")) + self.register_instruction(mips.StoreWordNode("$v1", f"{self.offset_of(node.dest) + 4 * node.total_args + 4}($sp)")) + self.register_instruction(mips.AddiNode("$sp", "$sp", f"{4 * node.total_args + 4}")) + + @visitor.when(cil.AllocateNode) + def visit(self, node: cil.AllocateNode): + self.register_comment(f"ALLOCATING -> {node.type}") + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.LoadWordNode("$a0", f"type_{node.type}")) + self.register_instruction(mips.SystemCallNode()) + self.register_instruction(mips.LoadAddressNode("$t0", f"type_{node.type}")) + self.register_instruction(mips.StoreWordNode("$t0", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.AllocateIntNode) + def visit(self, node: cil.AllocateIntNode): + self.register_comment(f"ALLOCATING INT -> {node.value}") + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + self.register_empty_instruction() + # + self.register_instruction(mips.LoadAddressNode("$t0", "type_Int")) + self.register_instruction(mips.StoreWordNode("$t0", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.AddiNode("$t0", "$zero", node.value)) + self.register_instruction(mips.StoreWordNode("$t0", "8($v0)")) + + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.AllocateBoolNode) + def visit(self, node: cil.AllocateBoolNode): + self.register_comment(f"ALLOCATING BOOL -> {node.value}") + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + self.register_empty_instruction() + + self.register_instruction(mips.LoadAddressNode("$t0", "type_Bool")) + self.register_instruction(mips.StoreWordNode("$t0", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.AddiNode("$t0", "$zero", node.value)) + self.register_instruction(mips.StoreWordNode("$t0", "8($v0)")) + + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.AllocateStringNode) + def visit(self, node: cil.AllocateStringNode): + self.register_comment(f"ALLOCATING STRING") + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", f"{9 + node.length}")) + self.register_instruction(mips.SystemCallNode()) + self.register_empty_instruction() + + #### + self.register_instruction(mips.LoadAddressNode("$t0", "type_String")) + self.register_instruction(mips.StoreWordNode("$t0", f"0($v0)")) + self.register_empty_instruction() + + self.register_instruction(mips.AddiNode("$t0", "$zero", f"{9 + node.length}")) + self.register_instruction(mips.StoreWordNode("$t0", f"4($v0)")) + self.register_empty_instruction() + + for i, c in enumerate(node.string): + ec = c.replace('\n', '\\n').replace('\t', '\\t').replace('\b', '\\b').replace('\f', '\\f') + self.register_instruction(mips.AddiNode("$t0", "$zero", f"{ord(c)}")) + self.register_instruction(mips.StoreByteNode("$t0", f"{i + 8}($v0)")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreByteNode("$zero", f"{node.length + 8}($v0)")) + self.register_empty_instruction() + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.AllocateNullNode) + def visit(self, node: cil.AllocateNullNode): + self.register_comment(f"ALLOCATING NUll INTO -> {node.dest}") + self.register_instruction(mips.StoreWordNode("$zero", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.LengthNode) + def visit(self, node: cil.LengthNode): + self.register_comment(f"{node.dest} <- LENGTH ({node.str_address})") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.str_address)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", "4($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$t1", "-9")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t1", "8($t0)")) + + @visitor.when(cil.ConcatNode) + def visit(self, node: cil.ConcatNode): + self.register_comment(f"{node.dest} <- {node.str1} + {node.str2}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.str1)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.str2)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t2", "4($t0)")) + self.register_instruction(mips.LoadWordNode("$t3", "4($t1)")) + self.register_instruction(mips.AddiNode("$t2", "$t2", "-9")) + self.register_instruction(mips.AddiNode("$t3", "$t3", "-9")) + + self.register_instruction(mips.AddNode("$t4", "$t2", "$t3")) + self.register_instruction(mips.AddiNode("$t4", "$t4", "9")) + self.register_empty_instruction() + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.MoveNode("$a0", "$t4")) + self.register_instruction(mips.SystemCallNode()) + self.register_instruction(mips.AddiNode("$t4", "$t4", "-9")) + self.register_instruction(mips.AddNode("$t5", "$zero", "$v0")) + self.register_instruction(mips.AddiNode("$t5", "$t5", "8")) + self.register_empty_instruction() + + self.register_instruction(mips.LoadAddressNode("$t8", "type_String")) + self.register_instruction(mips.StoreWordNode("$t8", f"0($v0)")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreWordNode("$a0", f"4($v0)")) + self.register_empty_instruction() + + # self.register_comment(f"Copying str1 to the new string") + self.register_instruction(mips.XorNode("$t6", "$t6", "$t6")) + self.register_instruction(mips.LabelNode("while_copy_str1_start")) + self.register_instruction(mips.BeqNode("$t6", "$t2", "while_copy_str1_end")) + self.register_instruction(mips.LoadByteNode("$t7", f"8($t0)")) + self.register_instruction(mips.StoreByteNode("$t7", f"0($t5)")) + self.register_instruction(mips.AddNode("$t0", "$t0", "1")) + self.register_instruction(mips.AddNode("$t5", "$t5", "1")) + self.register_instruction(mips.AddiNode("$t6", "$t6", "1")) + self.register_instruction(mips.JumpNode("while_copy_str1_start")) + self.register_instruction(mips.LabelNode("while_copy_str1_end")) + self.register_empty_instruction() + + # self.register_comment(f"Copying str2 to the new string") + self.register_instruction(mips.LabelNode("while_copy_str2_start")) + self.register_instruction(mips.BeqNode("$t6", "$t4", "while_copy_str2_end")) + self.register_instruction(mips.LoadByteNode("$t7", f"8($t1)")) + self.register_instruction(mips.StoreByteNode("$t7", f"0($t5)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "1")) + self.register_instruction(mips.AddNode("$t5", "$t5", "1")) + self.register_instruction(mips.AddiNode("$t6", "$t6", "1")) + self.register_instruction(mips.JumpNode("while_copy_str2_start")) + self.register_instruction(mips.LabelNode("while_copy_str2_end")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreByteNode("$zero", f"0($t5)")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.SubstringNode) + def visit(self, node: cil.SubstringNode): + self.register_comment(f"{node.dest} <- {node.str_address}[{node.start}:{node.start} + {node.length}]") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.str_address)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"4($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$t1", "-9")) + self.register_instruction(mips.LoadWordNode("$t2", f"{self.offset_of(node.start)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t2", "8($t2)")) + self.register_instruction(mips.LoadWordNode("$t3", f"{self.offset_of(node.length)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t3", "8($t3)")) + self.register_instruction(mips.AddNode("$t4", "$t2", "$t3")) + + self.register_empty_instruction() + self.register_instruction(mips.BgtNode("$t4", "$t1", "substring_out_of_bounds")) + + self.register_empty_instruction() + self.register_instruction(mips.AddiNode("$t3", "$t3", "9")) + self.register_instantiation("$t3") + self.register_instruction(mips.AddiNode("$t3", "$t3", "-9")) + + self.register_empty_instruction() + self.register_instruction(mips.LoadAddressNode("$t5", "type_String")) + self.register_instruction(mips.StoreWordNode("$t5", f"0($v0)")) + + self.register_empty_instruction() + self.register_instruction(mips.StoreWordNode("$a0", f"4($v0)")) + + self.register_empty_instruction() + self.register_instruction(mips.AddiNode("$t0", "$t0", "8")) + self.register_instruction(mips.AddNode("$t0", "$t0", "$t2")) + self.register_instruction(mips.MoveNode("$t5", "$v0")) + self.register_instruction(mips.AddNode("$t5", "$t5", "8")) + self.register_instruction(mips.XorNode("$t6", "$t6", "$t6")) + self.register_instruction(mips.LabelNode("while_copy_substr_start")) + self.register_instruction(mips.BeqNode("$t6", "$t3", "while_copy_substr_end")) + self.register_instruction(mips.LoadByteNode("$t7", f"0($t0)")) + self.register_instruction(mips.StoreByteNode("$t7", f"0($t5)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "1")) + self.register_instruction(mips.AddNode("$t5", "$t5", "1")) + self.register_instruction(mips.AddiNode("$t6", "$t6", "1")) + self.register_instruction(mips.JumpNode("while_copy_substr_start")) + self.register_instruction(mips.LabelNode("while_copy_substr_end")) + + self.register_empty_instruction() + self.register_instruction(mips.StoreByteNode("$zero", f"0($t5)")) + + self.register_empty_instruction() + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + self.register_instruction(mips.JumpNode("substring_not_out_of_bounds")) + + self.register_empty_instruction() + self.register_instruction(mips.LabelNode("substring_out_of_bounds")) + # TODO: Throw an exception + self.register_instruction(mips.LoadInmediateNode("$v0", "17")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "1")) + self.register_instruction(mips.SystemCallNode()) + + self.register_empty_instruction() + self.register_instruction(mips.LabelNode("substring_not_out_of_bounds")) + + @visitor.when(cil.GetAttribNode) + def visit(self, node: cil.GetAttribNode): + node_id = hash(node) + self.register_comment(f"GET ATTRIBUTE {node.attr} OF {node.instance}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{4 * (node.attr_index + 2)}($t0)")) + + self.register_instruction(mips.LoadWordNode("$t2", "0($t1)")) + self.register_instruction(mips.LoadAddressNode("$t3", "type_Int")) + self.register_instruction(mips.LoadAddressNode("$t4", "type_Bool")) + self.register_instruction(mips.AddiNode("$t5", "$zero", "1")) + self.register_instruction(mips.SeqNode("$t6", "$t2", "$t3")) + self.register_instruction(mips.BeqNode("$t6", "$t5", f"int_get_attribute_{node_id}")) + self.register_instruction(mips.SeqNode("$t6", "$t2", "$t4")) + self.register_instruction(mips.BeqNode("$t6", "$t5", f"bool_get_attribute_{node_id}")) + self.register_instruction(mips.JumpNode(f"object_get_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"int_get_attribute_{node_id}")) + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + self.register_instruction(mips.StoreWordNode("$t3", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.LoadWordNode("$t5", "8($t1)")) + self.register_instruction(mips.StoreWordNode("$t5", "8($v0)")) + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.JumpNode(f"end_get_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"bool_get_attribute_{node_id}")) + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + self.register_instruction(mips.StoreWordNode("$t4", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.LoadWordNode("$t5", "8($t1)")) + self.register_instruction(mips.StoreWordNode("$t5", "8($v0)")) + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.JumpNode(f"end_get_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"object_get_attribute_{node_id}")) + self.register_instruction(mips.StoreWordNode("$t1",f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.LabelNode(f"end_get_attribute_{node_id}")) + + @visitor.when(cil.SetAttribNode) + def visit(self, node: cil.SetAttribNode): + node_id = hash(node) + self.register_comment(f"SET ATTRIBUTE {node.attr} OF {node.instance}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.source)}($sp)")) + + self.register_instruction(mips.BeqNode("$t1", "$zero", f"object_set_attribute_{node_id}")) + + self.register_instruction(mips.LoadWordNode("$t2", "0($t1)")) + self.register_instruction(mips.LoadAddressNode("$t3", "type_Int")) + self.register_instruction(mips.LoadAddressNode("$t4", "type_Bool")) + self.register_instruction(mips.AddiNode("$t5", "$zero", "1")) + self.register_instruction(mips.SeqNode("$t6", "$t2", "$t3")) + self.register_instruction(mips.BeqNode("$t6", "$t5", f"int_set_attribute_{node_id}")) + self.register_instruction(mips.SeqNode("$t6", "$t2", "$t4")) + self.register_instruction(mips.BeqNode("$t6", "$t5", f"bool_set_attribute_{node_id}")) + self.register_instruction(mips.JumpNode(f"object_set_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"int_set_attribute_{node_id}")) + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + self.register_instruction(mips.StoreWordNode("$t3", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.LoadWordNode("$t5", "8($t1)")) + self.register_instruction(mips.StoreWordNode("$t5", "8($v0)")) + self.register_instruction(mips.StoreWordNode("$v0", f"{4 * (node.attr_index + 2)}($t0)")) + self.register_instruction(mips.JumpNode(f"end_set_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"bool_set_attribute_{node_id}")) + + self.register_instruction(mips.LoadInmediateNode("$v0", "9")) + self.register_instruction(mips.AddiNode("$a0", "$zero", "12")) + self.register_instruction(mips.SystemCallNode()) + + self.register_instruction(mips.StoreWordNode("$t4", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_instruction(mips.LoadWordNode("$t5", "8($t1)")) + self.register_instruction(mips.StoreWordNode("$t5", "8($v0)")) + self.register_instruction(mips.StoreWordNode("$v0", f"{4 * (node.attr_index + 2)}($t0)")) + self.register_instruction(mips.JumpNode(f"end_set_attribute_{node_id}")) + + self.register_instruction(mips.LabelNode(f"object_set_attribute_{node_id}")) + self.register_instruction(mips.StoreWordNode("$t1", f"{4 * (node.attr_index + 2)}($t0)")) + self.register_instruction(mips.LabelNode(f"end_set_attribute_{node_id}")) + + @visitor.when(cil.GetMethodNode) + def visit(self, node: cil.GetMethodNode): + self.register_comment(f"GET METHOD {node.method_name} OF {node.type}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t0)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "12")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.method_index)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"8($t1)")) + self.register_instruction(mips.SllNode("$t1", "$t1", "2")) + self.register_instruction(mips.AddNode("$t0", "$t0", "$t1")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t0)")) + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.ArrayNode) + def visit(self, node: cil.ArrayNode): + self.register_comment(f"INITIALIZE ARRAY [{node.size}]") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.size)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + self.register_instantiation("$t0") + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.GetIndexNode) + def visit(self, node: cil.GetIndexNode): + #{node.dest} <- ARRAY {node.instance}[4 * {node.index}] + self.register_comment(f"{node.dest} <- ARRAY {node.instance}[{node.index}]") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.index)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "$t0")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t1)")) + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.SetIndexNode) + def visit(self, node: cil.SetIndexNode): + # ARRAY {node.instance}[4 * {node.index}] <- {node.source} + self.register_comment(f"ARRAY {node.instance}[{node.index}] <- {node.source}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.index)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "$t0")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t0", "0($t1)")) + + @visitor.when(cil.GetValueInIndexNode) + def visit(self, node: cil.GetValueInIndexNode): + # {node.dest} = array {node.instance}[4 * {node.index}] + self.register_comment(f"{node.dest} <- ARRAY {node.instance}[{node.index}]") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.index)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "$t0")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t1)")) + self.register_instruction(mips.LoadWordNode("$t2", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t0", "8($t2)")) + + @visitor.when(cil.SetValueInIndexNode) + def visit(self, node: cil.SetValueInIndexNode): + # ARRAY {node.instance}[4 * {node.index}] <- {node.source} + self.register_comment(f"ARRAY {node.instance}[{node.index}] <- {node.source}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.index)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "4")) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t0")) + + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.instance)}($sp)")) + self.register_instruction(mips.AddNode("$t1", "$t1", "$t0")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.StoreWordNode("$t0", "0($t1)")) + + @visitor.when(cil.TypeOfNode) + def visit(self, node: cil.TypeOfNode): + # se guarda en la 1era word + self.register_comment(f"{node.dest} <- TYPEOF {node.obj}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.obj)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t0)")) + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.ParentNode) + def visit(self, node: cil.ParentNode): + self.register_comment(f"{node.dest} <- ANCESTOR OF {node.source}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "4($t0)")) + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.TypeAddressNode) + def visit(self, node: cil.TypeAddressNode): + self.register_comment(f"{node.dest} <- DIRECTION OF {node.name}") + self.register_instruction(mips.LoadAddressNode("$t0", f"type_{node.name}")) + self.register_instruction(mips.StoreWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.TypeNameNode) + def visit(self, node: cil.TypeNameNode): + self.register_comment(f"{node.dest} <- NAME OF {node.source}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", "0($t0)")) + self.register_instruction(mips.LoadWordNode("$t2", "8($t1)")) + self.register_instruction(mips.LoadAddressNode("$t3", "4($t2)")) + self.register_instruction(mips.LoadWordNode("$t2", "0($t2)")) + self.register_empty_instruction() + + self.register_instruction(mips.AddiNode("$t2", "$t2", "9")) + self.register_instantiation("$t2") + self.register_instruction(mips.AddiNode("$t2", "$t2", "-9")) + self.register_empty_instruction() + + self.register_instruction(mips.LoadAddressNode("$t4", "type_String")) + self.register_instruction(mips.StoreWordNode("$t4", f"0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", f"4($v0)")) + self.register_empty_instruction() + + self.register_instruction(mips.AddiNode("$t4", "$v0", 0)) + self.register_instruction(mips.AddiNode("$t4", "$t4", "8")) + self.register_instruction(mips.XorNode("$t5", "$t5", "$t5")) + self.register_instruction(mips.LabelNode("while_copy_name_start")) + self.register_instruction(mips.BeqNode("$t5", "$t2", "while_copy_name_end")) + self.register_instruction(mips.LoadByteNode("$t6", "0($t3)")) + self.register_instruction(mips.StoreByteNode("$t6", "0($t4)")) + self.register_instruction(mips.AddiNode("$t4", "$t4", "1")) + self.register_instruction(mips.AddiNode("$t3", "$t3", "1")) + self.register_instruction(mips.AddiNode("$t5", "$t5", "1")) + self.register_instruction(mips.JumpNode("while_copy_name_start")) + self.register_instruction(mips.LabelNode("while_copy_name_end")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreByteNode("$zero", "0($t4)")) + self.register_empty_instruction() + + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.CopyNode) + def visit(self, node: cil.CopyNode): + self.register_comment(f"{node.dest} <- COPY OF {node.source}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", "0($t0)")) + self.register_instruction(mips.LoadWordNode("$t2", "4($t0)")) + self.register_empty_instruction() + + # self.register_comment("Allocating space for the new object") + self.register_instantiation("$t2") + self.register_instruction(mips.MoveNode("$t3", "$v0")) + self.register_instruction(mips.StoreWordNode("$t1", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + self.register_empty_instruction() + + # self.register_comment("Initializing the variable of the loop") + self.register_instruction(mips.AddiNode("$t0", "$t0", "8")) + self.register_instruction(mips.AddiNode("$t3", "$t3", "8")) + self.register_instruction(mips.AddiNode("$t2", "$2", "-8")) + self.register_instruction(mips.XorNode("$t4", "$t4", "$t4")) + self.register_empty_instruction() + + # self.register_comment("Loop copying the object") + self.register_instruction(mips.LabelNode("while_copy_start")) + self.register_instruction(mips.BeqNode("$t4", "$t2", "while_copy_end")) + self.register_instruction(mips.LoadByteNode("$t5", "0($t0)")) + self.register_instruction(mips.StoreByteNode("$t5", "0($t3)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "1")) + self.register_instruction(mips.AddiNode("$t3", "$t3", "1")) + self.register_instruction(mips.AddiNode("$t4", "$t4", "1")) + self.register_instruction(mips.JumpNode("while_copy_start")) + self.register_instruction(mips.LabelNode("while_copy_end")) + + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.PrintStringNode) + def visit(self, node: cil.PrintStringNode): + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.str_addr)}($sp)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "8")) + self.register_empty_instruction() + + self.register_comment(f"PRINTING STRING: {node.str_addr}") + self.register_instruction(mips.LoadInmediateNode("$v0", "4")) + self.register_instruction(mips.MoveNode("$a0", "$t0")) + self.register_instruction(mips.SystemCallNode()) + + @visitor.when(cil.PrintIntNode) + def visit(self, node: cil.PrintIntNode): + self.register_comment(f"PRINTING INT: {node.int_source}") + self.register_instruction(mips.LoadInmediateNode("$v0", "1")) + self.register_instruction(mips.LoadWordNode("$a0", f"{self.offset_of(node.int_source)}($sp)")) + self.register_instruction(mips.LoadWordNode("$a0", "8($a0)")) + self.register_instruction(mips.SystemCallNode()) + + @visitor.when(cil.PrintTypeNameNode) + def visit(self, node: cil.PrintTypeNameNode): + self.register_comment("PRINTING TYPE NAME") + self.register_empty_instruction() + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.address)}($sp)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "12")) + self.register_instruction(mips.LoadWordNode("$t0", "0($t0)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "4")) + self.register_instruction(mips.LoadInmediateNode("$v0", "4")) + self.register_instruction(mips.MoveNode("$a0", "$t0")) + self.register_instruction(mips.SystemCallNode()) + + @visitor.when(cil.ReadStringNode) + def visit(self, node: cil.ReadStringNode): + self.register_instruction(mips.LoadInmediateNode("$v0", "8")) + self.register_instruction(mips.LoadAddressNode("$a0", "buffer_input")) + self.register_instruction(mips.LoadInmediateNode("$a1", "1024")) + self.register_instruction(mips.SystemCallNode()) + + + self.register_empty_instruction() + self.register_instruction(mips.XorNode("$t0", "$t0", "$t0")) + self.register_instruction(mips.LabelNode("while_read_start")) + self.register_instruction(mips.LoadByteNode("$t1", "buffer_input($t0)")) + + + self.register_instruction(mips.AddiNode("$t2", "$zero", "10")) + self.register_instruction(mips.BeqNode("$t1", "$t2", "while_read_end")) + self.register_instruction(mips.AddiNode("$t2", "$zero", "13")) + self.register_instruction(mips.BeqNode("$t1", "$t2", "while_read_end")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "1")) + self.register_instruction(mips.JumpNode("while_read_start")) + self.register_instruction(mips.LabelNode("while_read_end")) + + + self.register_empty_instruction() + self.register_instruction(mips.AddiNode("$t0", "$t0", "9")) + self.register_instantiation("$t0") + self.register_instruction(mips.AddiNode("$t0", "$t0", "-9")) + self.register_instruction(mips.LoadAddressNode("$t2", "type_String")) + self.register_instruction(mips.StoreWordNode("$t2", "0($v0)")) + self.register_instruction(mips.StoreWordNode("$a0", "4($v0)")) + + self.register_empty_instruction() + self.register_instruction(mips.AddiNode("$t3", "$v0", "8")) + self.register_instruction(mips.XorNode("$t4", "$t4", "$t4")) + self.register_empty_instruction() + self.register_instruction(mips.LabelNode("while_copy_from_buffer_start")) + self.register_instruction(mips.BeqNode("$t4", "$t0", "while_copy_from_buffer_end")) + self.register_instruction(mips.LoadByteNode("$t5", "buffer_input($t4)")) + self.register_instruction(mips.StoreByteNode("$t5", "0($t3)")) + self.register_instruction(mips.AddiNode("$t3", "$t3", "1")) + self.register_instruction(mips.AddiNode("$t4", "$t4", "1")) + self.register_instruction(mips.JumpNode("while_copy_from_buffer_start")) + self.register_instruction(mips.LabelNode("while_copy_from_buffer_end")) + self.register_empty_instruction() + self.register_instruction(mips.StoreByteNode("$zero", "0($t3)")) + self.register_empty_instruction() + self.register_instruction(mips.StoreWordNode("$v0", f"{self.offset_of(node.dest)}($sp)")) + + @visitor.when(cil.ReadIntNode) + def visit(self, node: cil.ReadIntNode): + self.register_instruction(mips.LoadInmediateNode("$v0", "5")) + self.register_instruction(mips.SystemCallNode()) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$v0", "8($t0)")) + + @visitor.when(cil.LabelNode) + def visit(self, node: cil.LabelNode): + self.register_instruction(mips.LabelNode(node.label)) + + @visitor.when(cil.GotoNode) + def visit(self, node: cil.GotoNode): + self.register_comment(f"JUMP TO {node.addr}") + self.register_instruction(mips.JumpNode(node.addr)) + + @visitor.when(cil.GotoIfNode) + def visit(self, node: cil.GotoIfNode): + self.register_comment(f"IF {node.condition} THEN GOTO {node.address}") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.condition)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", f"8($t0)")) + self.register_instruction(mips.AddiNode("$t1", "$zero", "1")) + self.register_instruction(mips.BeqNode("$t0", "$t1", node.address)) + + @visitor.when(cil.PlusNode) + def visit(self, node: cil.PlusNode): + self.register_comment("ADD FUNCT") + self.preprocess_binary_operation(node) + self.register_instruction(mips.AddNode("$t2", "$t0", "$t1")) + self.postprocess_binary_int_operation(node, "Int") + + @visitor.when(cil.MinusNode) + def visit(self, node: cil.MinusNode): + self.register_comment("SUB FUNCT") + self.preprocess_binary_operation(node) + self.register_instruction(mips.SubNode("$t2", "$t0", "$t1")) + self.postprocess_binary_int_operation(node, "Int") + + @visitor.when(cil.StarNode) + def visit(self, node: cil.StarNode): + self.register_comment("TIMES FUNCT") + self.preprocess_binary_operation(node) + self.register_instruction(mips.MultNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t2")) + self.postprocess_binary_int_operation(node, "Int") + + @visitor.when(cil.DivNode) + def visit(self, node: cil.DivNode): + self.register_comment("DIV FUNCT") + self.preprocess_binary_operation(node) + self.register_instruction(mips.DivNode("$t0", "$t1")) + self.register_instruction(mips.MoveFromLowNode("$t2")) + self.postprocess_binary_int_operation(node, "Int") + + @visitor.when(cil.XorNode) + def visit(self, node: cil.XorNode): + self.register_comment("XOR FUNCT") + self.preprocess_binary_operation(node) + self.register_instruction(mips.XorNode("$t2", "$t0", "$t1")) + self.postprocess_binary_int_operation(node, "Int") + + @visitor.when(cil.LessThanNode) + def visit(self, node: cil.LessThanNode): + self.register_comment("LESS FUNCT") + self.preprocess_binary_operation(node) + self.register_instruction(mips.SltNode("$t2", "$t0", "$t1")) + self.postprocess_binary_int_operation(node, "Bool") + + @visitor.when(cil.LessEqualNode) + def visit(self, node: cil.LessEqualNode): + self.register_comment("LESS EQ FUNCT") + self.preprocess_binary_operation(node) + self.register_instruction(mips.SleNode("$t2", "$t0", "$t1")) + self.postprocess_binary_int_operation(node, "Bool") + + @visitor.when(cil.EqualNode) + def visit(self, node: cil.EqualNode): + self.register_comment("EQUAL FUNCT") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + self.register_instruction(mips.SeqNode("$t2", "$t0", "$t1")) + self.postprocess_binary_int_operation(node, "Bool") + + @visitor.when(cil.EqualAddressNode) + def visit(self, node: cil.EqualAddressNode): + self.register_comment(f"{node.dest} <- EQUALADDRESS ({node.left}, {node.right})") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + self.register_instruction(mips.SeqNode("$t2", "$t0", "$t1")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t2", f"8($t0)")) + + @visitor.when(cil.EqualIntNode) + def visit(self, node: cil.EqualIntNode): + self.register_comment(f"{node.dest} <- EQUALINT ({node.left}, {node.right})") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", f"8($t0)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"8($t1)")) + self.register_instruction(mips.SeqNode("$t2", "$t0", "$t1")) + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t2", f"8($t0)")) + + @visitor.when(cil.EqualStrNode) + def visit(self, node: cil.EqualStrNode): + self.register_comment(f"{node.dest} <- EQUALSTRING ({node.left}, {node.right})") + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "8")) + self.register_instruction(mips.AddiNode("$t1", "$t1", "8")) + + self.register_empty_instruction() + # self.register_comment(f"By default we assume the strings are equals") + self.register_instruction(mips.AddiNode("$t4", "$zero", "1")) + self.register_instruction(mips.LoadWordNode("$t5", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t4", f"8($t5)")) + + self.register_empty_instruction() + self.register_instruction(mips.LabelNode("while_compare_strings_start")) + self.register_instruction(mips.LoadByteNode("$t2", "0($t0)")) + self.register_instruction(mips.LoadByteNode("$t3", "0($t1)")) + + self.register_instruction(mips.BeqNode("$t2", "$t3", "while_compare_strings_update")) + + self.register_empty_instruction() + # self.register_comment(f"The strings are no equals") + self.register_instruction(mips.LoadWordNode("$t5", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$zero", f"8($t5)")) + self.register_instruction(mips.JumpNode("while_compare_strings_end")) + + self.register_empty_instruction() + self.register_instruction(mips.LabelNode("while_compare_strings_update")) + self.register_instruction(mips.AddiNode("$t0", "$t0", "1")) + self.register_instruction(mips.AddiNode("$t1", "$t1", "1")) + self.register_instruction(mips.BeqNode("$t2", "$zero", "while_compare_strings_end")) + self.register_instruction(mips.BeqNode("$t3", "$zero", "while_compare_strings_end")) + self.register_instruction(mips.JumpNode("while_compare_strings_start")) + self.register_instruction(mips.LabelNode("while_compare_strings_end")) + + @visitor.when(cil.HaltNode) + def visit(self, node: cil.HaltNode): + self.register_comment("EXIT!") + self.register_instruction(mips.LoadInmediateNode("$v0", "10")) + self.register_instruction(mips.SystemCallNode()) + + @visitor.when(cil.ReturnNode) + def visit(self, node: cil.ReturnNode): + if node.value.isdigit(): + # self.register_comment("Loading return value in $v1") + self.register_instruction(mips.AddiNode("$v1", "$zero", f"{node.value}")) + return + offset = self.offset_of(node.value) + # self.register_comment("Loading return value in $v1") + self.register_instruction(mips.LoadWordNode("$v1", f"{offset}($sp)")) + + + def preprocess_binary_operation(self, node: cil.ArithmeticNode): + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.left)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t0", "8($t0)")) + self.register_instruction(mips.LoadWordNode("$t1", f"{self.offset_of(node.right)}($sp)")) + self.register_instruction(mips.LoadWordNode("$t1", "8($t1)")) + + def postprocess_binary_int_operation(self, node: cil.ArithmeticNode, t: str): + self.register_empty_instruction() + self.register_instruction(mips.LoadWordNode("$t0", f"{self.offset_of(node.dest)}($sp)")) + self.register_instruction(mips.StoreWordNode("$t2", "8($t0)")) + + + +class MipsFormatter1: + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(mips.ProgramNode) + def visit(self, node: mips.ProgramNode): + def is_function_label(node: mips.InstructionNode): + return isinstance(node, mips.LabelNode) and ( + node.name.startswith("function_") or node.name == "main" + ) + + dotdata = "\n\t".join([self.visit(data) for data in node.dotdata]) + + instructions = [ + (f"{self.visit(inst)}" if is_function_label(inst) else f"\t{self.visit(inst)}") \ + for inst in node.dottext + ] + + dottext = "\n\t".join(instructions) + + h1 = '################' + h1t = '# DATA SECTION #' + h2t_ = '# TEXT SECTION #' + + h1_ = '####################' + h1t_ = '# Types declaration #' + + h2 = '#########################' + h2t = '# Functions declaration #' + + dotdata_comment = f'\n\t{h1}\n\t{h1t}\n\t{h1}\n\n\t{h1_}\n\t{h1t_}\n\t{h1_}\n' + dottext_comment = f'\n\t{h1}\n\t{h2t_}\n\t{h1}\n\n\t{h2}\n\t{h2t}\n\t{h2}\n' + + return f".data\n\t{dotdata_comment}\n\t{dotdata}\n\n.text\n\t{dottext_comment}\n\t{dottext}" + + @visitor.when(mips.DataNode) + def visit(self, node: mips.DataNode): + return ( + f"{node.name}: {node.data_type} {node.value}" + if node.comment == "" + else f"{node.name}: {node.data_type} {node.value} # {node.comment}" + ) + + @visitor.when(mips.OneAddressNode) + def visit(self, node: mips.OneAddressNode): + return ( + f"{node.code} {node.dest}" + if node.comment == "" + else f"{node.code} {node.dest} # {node.comment}" + ) + + @visitor.when(mips.TwoAddressNode) + def visit(self, node: mips.TwoAddressNode): + return ( + f"{node.code} {node.dest}, {node.source}" + if node.comment == "" + else f"{node.code} {node.dest}, {node.source} # {node.comment}" + ) + + @visitor.when(mips.ThreeAddressNode) + def visit(self, node: mips.ThreeAddressNode): + return ( + f"{node.code} {node.dest}, {node.source1}, {node.source2}" + if node.comment == "" + else f"{node.code} {node.dest}, {node.source1}, {node.source2} # {node.comment}" + ) + + @visitor.when(mips.SystemCallNode) + def visit(self, node: mips.SystemCallNode): + return node.code + + @visitor.when(mips.LabelNode) + def visit(self, node: mips.LabelNode): + return ( + f"{node.name}:" if node.comment == "" else f"{node.name}: # {node.comment}" + ) + + @visitor.when(mips.CommentNode) + def visit(self, node: mips.CommentNode): + return f"# {node.comment}" + + @visitor.when(mips.EmptyInstructionNode) + def visit(self, node: mips.EmptyInstructionNode): + return "" + + @visitor.when(mips.EmptyDataNode) + def visit(self, node: mips.EmptyDataNode): + return "" diff --git a/src/utils/utils/cool_to_cil.py b/src/utils/utils/cool_to_cil.py new file mode 100644 index 000000000..be986c496 --- /dev/null +++ b/src/utils/utils/cool_to_cil.py @@ -0,0 +1,1164 @@ +# from atexit import register +# from pickle import TRUE +# from turtle import right +from .semantic import * +from . import ast_nodes_cil as cil +from . import ast_nodes as cool +from . import visitor +from typing import Optional +from .code_generation import NullNode, NullType + +def methods_declaration_order(t: Type): + method_decl = [] + all_methods = t.all_methods() + visited = set() + for method, _ in all_methods: + if method.name in visited:# or method.name == 'get_type': + continue + + meths = list(all_methods)[::-1] + method_decl.append( + [(x, y) for x, y in meths if x.name == method.name][0] + ) + visited.add(method.name) + return method_decl + +class BaseCOOLToCILVisitor: + def __init__(self, context, dict_attr, dict_method): + self.dottypes = [] + self.dotdata = [] + self.dotcode = [] + self.current_type: Optional[Type] = None + self.current_method: Optional[cil.DataNode] = None + self.current_function: Optional[cil.FunctionNode] = None + + self.context: Context = context + + self.dict_attr = dict_attr + self.dict_method = dict_method + + self.locals_dict = {} + self.param_set = set() + self.attr_set = set() + + @property + def params(self): + return self.current_function.params + + @property + def localvars(self): + return self.current_function.localvars + + @property + def instructions(self): + return self.current_function.instructions + + def register_local(self, vinfo): + local_name = (f"local_{self.current_function.name[9:]}_{vinfo}_{len(self.localvars)}") + local_name = vinfo + local_node = cil.LocalNode(local_name) + self.localvars.append(local_node) + return local_name + + def define_internal_local(self): + # vinfo = VariableInfo('internal', None) + return self.register_local(f"internal_{len(self.localvars)}") + + def register_instruction(self, instruction): + self.instructions.append(instruction) + return instruction + + def to_function_name(self, method_name, type_name): + return f'function_{method_name}_at_{type_name}' + + def register_function(self, function_name): + function_node = cil.FunctionNode(function_name, [], [], []) + self.dotcode.append(function_node) + return function_node + + def register_type(self, name, parent): + type_node = cil.TypeNode(name, parent) + self.dottypes.append(type_node) + return type_node + + def register_data(self, value): + vname = f'data_{len(self.dotdata)}' + data_node = cil.DataNode(vname, value) + self.dotdata.append(data_node) + return data_node + + def register_comment(self, comm): + self.register_instruction(cil.CommentNode(comm)) + + def register_EOL(self): + self.register_instruction(cil.EndOfLineNode()) + + def add_basic_types(self): + default_class_names = ["Object", "IO", "String", "Int", "Bool"] + for name in default_class_names: + current_type = self.context.get_type(name) + self.current_type = current_type + cil_type_node = self.register_type(current_type.name, current_type.parent.name if current_type.parent is not None else None) + + for method, ancestor in methods_declaration_order(current_type): + # if method.name == 'get_type': continue + cil_type_node.methods.append((method.name, self.to_function_name(method.name, ancestor.name))) + 'hola' + + def add_arith_methods(self): + ### ADD FUNCTION ### + self.current_function = self.register_function('add_funct') + self.register_comment("ADD FUNCTION") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.PlusNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + self.register_EOL() + + ### MINUS FUNCTION ### + self.current_function = self.register_function('minus_funct') + self.register_comment("MINUS FUNCTION") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.MinusNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + self.register_EOL() + + ### TIMES FUNCTION ### + self.current_function = self.register_function('times_funct') + self.register_comment("TIMES FUNCTION") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.StarNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + self.register_EOL() + + ### DIV FUNCTION ### + self.current_function = self.register_function('div_funct') + self.register_comment("DIV FUNCTION") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.DivNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + self.register_EOL() + + ### LESS THAN FUNCTION ### + self.current_function = self.register_function('lessthan_funct') + self.register_comment("LESS THAN FUNCTION") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.LessThanNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + self.register_EOL() + + ### LESS EQUAL FUNCTION ### + self.current_function = self.register_function('lesseq_funct') + self.register_comment("LESS EQUAL FUNCTION") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.LessEqualNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + self.register_EOL() + + ### XOR FUNCTION ### + self.current_function = self.register_function('xor_funct') + self.register_comment("XOR FUNCTION") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.XorNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + self.register_EOL() + + def add_function_equal(self): + self.current_function = self.register_function("equal_funct") + self.register_comment('EQUAL FUNCTION') + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + + result = self.define_internal_local() + constant_null = self.define_internal_local() + is_null = self.define_internal_local() + type_of_a = self.define_internal_local() + type_int = self.define_internal_local() + type_bool = self.define_internal_local() + type_string = self.define_internal_local() + type_a_equals_int = self.define_internal_local() + type_a_equals_bool = self.define_internal_local() + type_a_equals_string = self.define_internal_local() + + self.register_EOL() + + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.AllocateNullNode(constant_null)) + self.register_instruction(cil.AllocateBoolNode(is_null, "0")) + + self.register_instruction(cil.EqualAddressNode(is_null, "a", constant_null)) + self.register_instruction(cil.EqualAddressNode(is_null, "b", constant_null)) + self.register_instruction(cil.GotoIfNode(is_null, "a_is_type_object")) + + self.register_instruction(cil.TypeOfNode(type_of_a, "a")) + self.register_instruction(cil.TypeAddressNode(type_int, "Int")) + self.register_instruction(cil.TypeAddressNode(type_bool, "Bool")) + self.register_instruction(cil.TypeAddressNode(type_string, "String")) + self.register_instruction(cil.AllocateBoolNode(type_a_equals_int, "0")) + self.register_instruction(cil.AllocateBoolNode(type_a_equals_bool, "0")) + self.register_instruction(cil.AllocateBoolNode(type_a_equals_string, "0")) + + self.register_instruction(cil.EqualAddressNode(type_a_equals_int, type_of_a, type_int)) + self.register_instruction(cil.EqualAddressNode(type_a_equals_bool, type_of_a, type_bool)) + self.register_instruction(cil.EqualAddressNode(type_a_equals_string, type_of_a, type_string)) + self.register_EOL() + self.register_instruction(cil.GotoIfNode(type_a_equals_int, "a_is_type_int_or_bool")) + self.register_instruction(cil.GotoIfNode(type_a_equals_bool, "a_is_type_int_or_bool")) + self.register_instruction(cil.GotoIfNode(type_a_equals_string, "a_is_type_string")) + self.register_instruction(cil.GotoNode("a_is_type_object")) + + self.register_EOL() + self.register_instruction(cil.LabelNode("a_is_type_int_or_bool")) + self.register_instruction(cil.EqualIntNode(result, "a", "b")) + self.register_instruction(cil.GotoNode("end_of_equal")) + + self.register_EOL() + self.register_instruction(cil.LabelNode("a_is_type_string")) + self.register_instruction(cil.EqualStrNode(result, "a", "b")) + self.register_instruction(cil.GotoNode("end_of_equal")) + + self.register_EOL() + self.register_instruction(cil.LabelNode("a_is_type_object")) + self.register_instruction(cil.EqualNode(result, "a", "b")) + self.register_instruction(cil.GotoNode("end_of_equal")) + + self.register_EOL() + self.register_instruction(cil.LabelNode("end_of_equal")) + + self.register_instruction(cil.ReturnNode(result)) + + def add_function_assign(self): + self.current_function = self.register_function("assign_funct") + self.register_comment('ASSIGN FUNCTION') + self.current_function.params.append(cil.ParamNode("dest")) + self.current_function.params.append(cil.ParamNode("source")) + + null_ptr = self.define_internal_local() + is_null = self.define_internal_local() + type_source = self.define_internal_local() + type_int = self.define_internal_local() + type_bool = self.define_internal_local() + type_source_equals_int = self.define_internal_local() + type_source_equals_bool = self.define_internal_local() + self.register_EOL() + + ## null ptr + self.register_instruction(cil.AllocateNullNode(null_ptr)) + self.register_instruction(cil.AllocateBoolNode(is_null, "0")) + self.register_instruction(cil.EqualAddressNode(is_null, "source", null_ptr)) + self.register_instruction(cil.EqualAddressNode(is_null, "dest", null_ptr)) + self.register_instruction(cil.GotoIfNode(is_null, "source_is_type_object")) + + # types + self.register_instruction(cil.TypeOfNode(type_source, "source")) + self.register_instruction(cil.TypeAddressNode(type_int, "Int")) + self.register_instruction(cil.TypeAddressNode(type_bool, "Bool")) + self.register_instruction(cil.AllocateBoolNode(type_source_equals_int, "0")) + self.register_instruction(cil.AllocateBoolNode(type_source_equals_bool, "0")) + self.register_instruction(cil.EqualAddressNode(type_source_equals_int, type_source, type_int)) + self.register_instruction(cil.EqualAddressNode(type_source_equals_bool, type_source, type_bool)) + self.register_EOL() + + self.register_instruction(cil.GotoIfNode(type_source_equals_int, "source_is_type_int_or_bool")) + self.register_instruction(cil.GotoIfNode(type_source_equals_bool, "source_is_type_int_or_bool")) + self.register_instruction(cil.GotoNode("source_is_type_object")) + + self.register_EOL() + self.register_instruction(cil.LabelNode("source_is_type_int_or_bool")) + + self.register_instruction(cil.AssignIntNode("dest", "source")) + self.register_instruction(cil.GotoNode("source_end_of_equal")) + + self.register_EOL() + self.register_instruction(cil.LabelNode("source_is_type_object")) + self.register_instruction(cil.AssignNode("dest", "source")) + self.register_instruction(cil.GotoNode("source_end_of_equal")) + + self.register_EOL() + self.register_instruction(cil.LabelNode("source_end_of_equal")) + self.register_instruction(cil.ReturnNode("dest")) + self.register_EOL() + + def add_function_init(self, type_name: str): + self.current_function = self.register_function(self.to_function_name("_init_", type_name)) + self.current_function.params.append(cil.ParamNode("self")) + self.register_instruction(cil.ReturnNode("self")) + self.register_EOL() + + def add_function_abort(self): + self.current_function = self.register_function(self.to_function_name("abort", "Object")) + self.current_function.params.append(cil.ParamNode("self")) + + msg1 = self.define_internal_local() + msg2 = self.define_internal_local() + msg = self.define_internal_local() + endl = self.define_internal_local() + method_index = self.define_internal_local() + method_address = self.define_internal_local() + self.register_EOL() + + self.register_instruction(cil.AllocateStringNode(msg1, "\"Abort called from class \"")) + self.register_instruction(cil.AllocateStringNode(endl, "\"\\n\"")) + + all_methods = methods_declaration_order(self.context.get_type("String")) + i = [m.name for m, _ in all_methods].index("type_name") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, "self", method_index, "type_name", "String")) + + self.register_instruction(cil.ArgNode("self", 0, 1)) + self.register_instruction(cil.DynamicCallNode("String", method_address, msg2, 1)) + + + all_methods = methods_declaration_order(self.context.get_type("String")) + i = [m.name for m, _ in all_methods].index("concat") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, "self", method_index, "concat", "String")) + + self.register_instruction(cil.ArgNode(msg1, 0, 2)) + self.register_instruction(cil.ArgNode(msg2, 1, 2)) + self.register_instruction(cil.DynamicCallNode("String", method_address, msg, 2)) + + all_methods = methods_declaration_order(self.context.get_type("String")) + i = [m.name for m, _ in all_methods].index("concat") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, "self", method_index, "concat", "String")) + + self.register_instruction(cil.ArgNode(msg, 0, 2)) + self.register_instruction(cil.ArgNode(endl, 1, 2)) + self.register_instruction(cil.DynamicCallNode("String", method_address, msg, 2)) + + self.register_instruction(cil.PrintStringNode(msg)) + self.register_instruction(cil.HaltNode()) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_copy(self): + self.current_function = self.register_function(self.to_function_name("copy", "Object")) + self.current_function.params.append(cil.ParamNode("self")) + local_copy = self.define_internal_local() + self.register_instruction(cil.CopyNode(local_copy, "self")) + self.register_instruction(cil.ReturnNode(local_copy)) + self.register_EOL() + + def add_function_type_name(self): + self.current_function = self.register_function(self.to_function_name("type_name", "Object")) + self.current_function.params.append(cil.ParamNode("self")) + #type_name + type_name = self.define_internal_local() + self.register_instruction(cil.TypeNameNode(type_name, "self")) + self.register_instruction(cil.ReturnNode(type_name)) + self.register_EOL() + + def add_function_out_string(self): + self.current_function = self.register_function(self.to_function_name("out_string", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("x")) + self.register_instruction(cil.PrintStringNode("x")) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_out_int(self): + self.current_function = self.register_function(self.to_function_name("out_int", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("x")) + self.register_instruction(cil.PrintIntNode("x")) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_in_string(self): + self.current_function = self.register_function(self.to_function_name("in_string", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + local_str = self.define_internal_local() + self.register_instruction(cil.ReadStringNode(local_str)) + self.register_instruction(cil.ReturnNode(local_str)) + + def add_function_in_int(self): + self.current_function = self.register_function(self.to_function_name("in_int", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + local_str = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(local_str, "0")) + self.register_instruction(cil.ReadIntNode(local_str)) + self.register_instruction(cil.ReturnNode(local_str)) + self.register_EOL() + + def add_function_length(self): + self.current_function = self.register_function(self.to_function_name("length", "String")) + self.current_function.params.append(cil.ParamNode("self")) + len_local = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(len_local, "0")) + self.register_instruction(cil.LengthNode(len_local, "self")) + self.register_instruction(cil.ReturnNode(len_local)) + self.register_EOL() + + def add_function_concat(self): + self.current_function = self.register_function(self.to_function_name("concat", "String")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("s")) + new_str = self.define_internal_local() + self.register_instruction(cil.ConcatNode(new_str, "self", "s")) + self.register_instruction(cil.ReturnNode(new_str)) + self.register_EOL() + + def add_function_substr(self): + self.current_function = self.register_function(self.to_function_name("substr", "String")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("i")) + self.current_function.params.append(cil.ParamNode("l")) + substr = self.define_internal_local() + self.register_instruction(cil.SubstringNode(substr, "self", "i", "l")) + self.register_instruction(cil.ReturnNode(substr)) + self.register_EOL() + + + + def add_basic_methods(self): + # +, -, *, /, xor + self.add_arith_methods() + + self.add_function_equal() + self.add_function_assign() + + ## initializing build-in types + self.add_function_init("Object") + self.add_function_abort() + self.add_function_type_name() + self.add_function_copy() + + self.add_function_init("IO") + self.add_function_out_string() + self.add_function_out_int() + self.add_function_in_string() + self.add_function_in_int() + + self.add_function_init("String") + self.add_function_length() + self.add_function_concat() + self.add_function_substr() + + self.add_function_init("Int") + self.add_function_init("Bool") + + + def add_main_funct(self): + self.current_function = self.register_function("main") + + local_main = self.define_internal_local() + local_result = self.define_internal_local() + method_index = self.define_internal_local() + method_address = self.define_internal_local() + + self.register_instruction(cil.AllocateNode("Main", local_main)) + self.register_instruction(cil.ArgNode(local_main, 0, 1)) + self.register_instruction(cil.StaticCallNode(self.to_function_name("_init_", "Main"), local_main, 1)) + + all_methods = methods_declaration_order(self.context.get_type("Main")) + i = [m.name for m, _ in all_methods].index("main") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, local_main, method_index, "main", "Main")) + + self.register_instruction(cil.ArgNode(local_main, 0, 1)) + self.register_instruction(cil.DynamicCallNode("Main", method_address, local_result, 1)) + + self.register_instruction(cil.HaltNode()) + + def visit_arith_node(self, node: cool.BinaryNode, scope: Scope, operation_function: str, return_type_name: str = "Int"): + left, _ = self.visit(node.left, scope) + right, _ = self.visit(node.right, scope) + dest = self.define_internal_local() + # self.register_EOL() + self.register_instruction(cil.ArgNode(left, 0, 2)) + self.register_instruction(cil.ArgNode(right, 1, 2)) + self.register_instruction(cil.StaticCallNode(operation_function, dest, 2)) + return dest, self.context.get_type(return_type_name) + + +class COOLToCILVisitor(BaseCOOLToCILVisitor): + @visitor.on('node') + def visit(self, node): + pass + + # MAIN FLOW + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode, scope): + scope = node.scope + + self.add_basic_types() + + self.add_basic_methods() + + for i, class_ in enumerate(node.class_list): + self.visit(class_, scope.children[i]) + + self.add_main_funct() + + return cil.ProgramNode(self.dottypes, self.dotdata, self.dotcode) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode, scope): + scope = node.scope + self.current_type = self.context.get_type(node.name) + + type_node = self.register_type(self.current_type.name, self.current_type.parent.name) + + attrs = [data_ for data_ in node.data if isinstance(data_, cool.AttributeDecNode)] + meths = [data_ for data_ in node.data if isinstance(data_, cool.MethodDecNode)] + + for attr, _ in self.current_type.all_attributes(): + self.visit(attr, scope) + type_node.attributes.append(attr.name) + + for method, t in methods_declaration_order(self.current_type): + type_node.methods.append((method.name, self.to_function_name(method.name, t.name))) + + i_ = len([attr for attr in attrs if attr.expr is not None]) + for i, method in enumerate(meths, start=i_): + self.visit(method, scope.children[i]) + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode, scope): + scope = node.scope + self.current_method, owner_type = self.current_type.get_method(node.name, owner=True) + function_name = self.to_function_name(self.current_method.name, owner_type.name) + self.current_function = self.register_function(function_name) + 1 #forcing breakpoint + list_temp = [cil.ParamNode(item.name) for item in node.params] + self.current_function.params = [cil.ParamNode("self")] + list_temp + + + source, _ = self.visit(node.expr, scope) + + self.register_instruction(cil.ReturnNode(source)) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode, scope): + scope = node.scope + pass + + + ############### + # EXPRESSIONS # + ############### + + @visitor.when(cool.ParamNode) + def visit(self, node: cool.ParamNode, scope): + scope = node.scope + # case solved + pass + + @visitor.when(cool.WhileNode) + def visit(self, node: cool.WhileNode, scope): + scope = node.scope + node_id = hash(node) + result_addres = self.define_internal_local() + + #self.register_EOL() + self.register_comment(f"while") + + self.register_instruction(cil.AllocateNullNode(result_addres)) + self.register_instruction(cil.LabelNode(f"while_start_{node_id}")) + + conditional_source, _ = self.visit(node.cond, scope) + self.register_instruction(cil.GotoIfNode(conditional_source, f"while_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"while_end_{node_id}")) + + self.register_instruction(cil.EmptyInstructionNode()) + self.register_instruction(cil.LabelNode(f"while_body_{node_id}")) + self.visit(node.data, scope) + self.register_instruction(cil.GotoNode(f"while_start_{node_id}")) + + self.register_instruction(cil.EmptyInstructionNode()) + self.register_instruction(cil.LabelNode(f"while_end_{node_id}")) + + return result_addres, self.context.get_type("Object") + + @visitor.when(cool.ExprParNode) + def visit(self, node: cool.ExprParNode, scope): + scope = node.scope + parnode = self.visit(node.expr, scope) + return parnode + + @visitor.when(cool.BlockNode) + def visit(self, node: cool.BlockNode, scope): + scope = node.scope + source, inst_type = None, None + + for expr in node.expr: + source, inst_type = self.visit(expr, scope) + + return source, inst_type + + @visitor.when(cool.ConditionalNode) + def visit(self, node: cool.ConditionalNode, scope): + scope = node.scope + self.register_instruction(cil.CommentNode("cond")) + + node_id = hash(node) + result_address = self.define_internal_local() + conditional_address = self.define_internal_local() + + self.register_instruction(cil.AllocateBoolNode(conditional_address, "0")) + + source, _ = self.visit(node.if_expr, scope) + + self.register_instruction(cil.AssignNode(conditional_address, source)) + self.register_instruction(cil.GotoIfNode(conditional_address, f"then_{node_id}")) + self.register_instruction(cil.GotoNode(f"else_{node_id}")) + + self.register_instruction(cil.EmptyInstructionNode()) + self.register_instruction(cil.LabelNode(f"then_{node_id}")) + then_source, then_type = self.visit(node.then_expr, scope) + self.register_instruction(cil.AssignNode(result_address, then_source)) + self.register_instruction(cil.GotoNode(f"endif_{node_id}")) + + self.register_instruction(cil.EmptyInstructionNode()) + self.register_instruction(cil.LabelNode(f"else_{node_id}")) + else_source, else_type = self.visit(node.else_expr, scope) + self.register_instruction(cil.AssignNode(result_address, else_source)) + self.register_instruction(cil.GotoNode(f"endif_{node_id}")) + + self.register_instruction(cil.EmptyInstructionNode()) + self.register_instruction(cil.LabelNode(f"endif_{node_id}")) + + return result_address, then_type.join(else_type) + + @visitor.when(cool.LetNode) + def visit(self, node: cool.LetNode, scope): + scope = node.scope + # x = " ".join([f"{name}: {type_name}" for name, type_name, _ in node.declaration]) + self.register_comment("let expr") + + i = 0 + for name, type, expr in node.declaration: + self.register_local(name) + + if expr: + # self.register_EOL() + source, _ = self.visit(expr, scope.children[i]) + self.register_instruction(cil.ArgNode(name, 0, 2)) + self.register_instruction(cil.ArgNode(source, 1, 2)) + self.register_instruction(cil.StaticCallNode("assign_funct", name, 2)) + i += 1 + else: + if type == "String": + self.register_instruction(cil.AllocateStringNode(name, "\"\"")) + elif type == "Int": + self.register_instruction(cil.AllocateIntNode(name, "0")) + elif type == "Bool": + self.register_instruction(cil.AllocateBoolNode(name, "0")) + else: + self.register_instruction(cil.AllocateNullNode(name)) + + return self.visit(node.expr, scope.children[i]) + + @visitor.when(cool.CaseNode) + def visit(self, node: cool.CaseNode, scope): + scope = node.scope + + node_id = hash(node) + case_expression, _ = self.visit(node.expr, scope) + + zero_int = self.define_internal_local() + one_int = self.define_internal_local() + len_types_int = self.define_internal_local() + null_ptr = self.define_internal_local() + count_of_ancestors_int = self.define_internal_local() + step1_comparison_result_bool = self.define_internal_local() + case_expr_type_address = self.define_internal_local() + ancestor_type_address = self.define_internal_local() + ancestors_array = self.define_internal_local() + + + self.register_instruction(cil.AllocateIntNode(zero_int, "0")) + self.register_instruction(cil.AllocateIntNode(one_int, "1")) + self.register_instruction(cil.AllocateIntNode(len_types_int, str(len(node.params)))) + self.register_instruction(cil.AllocateNullNode(null_ptr)) + + self.register_instruction(cil.AllocateIntNode(count_of_ancestors_int, "0")) + self.register_instruction(cil.AllocateBoolNode(step1_comparison_result_bool, "0")) + + self.register_EOL() + + ## + # contar los ancentros de el tipo de la expresion del case + ## + self.register_instruction(cil.TypeOfNode(case_expr_type_address, case_expression)) + self.register_instruction(cil.AssignNode(ancestor_type_address, case_expr_type_address)) + + self.register_instruction(cil.LabelNode(f"while_start_{node_id}")) + self.register_instruction(cil.EqualAddressNode(step1_comparison_result_bool, ancestor_type_address, null_ptr)) + self.register_instruction(cil.GotoIfNode(step1_comparison_result_bool, f"while_end_{node_id}")) + + # self.register_comment("Increment the count of ancestors") + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 0, 2)) + self.register_instruction(cil.ArgNode(one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("add_funct", count_of_ancestors_int, 2)) + + self.register_instruction(cil.ParentNode(ancestor_type_address, ancestor_type_address)) + self.register_instruction(cil.GotoNode(f"while_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"while_end_{node_id}")) + self.register_EOL() + + ## + # arrays de ancestros + ## + self.register_instruction(cil.AssignNode(ancestor_type_address, case_expr_type_address)) + self.register_instruction(cil.ArrayNode(ancestors_array, count_of_ancestors_int)) + + iter_index_int = self.define_internal_local() + comparison_result_bool = self.define_internal_local() + + self.register_instruction(cil.AllocateIntNode(iter_index_int, "0")) + self.register_instruction(cil.AllocateBoolNode(comparison_result_bool, "0")) + self.register_instruction(cil.LabelNode(f"foreach_start_{node_id}")) + + self.register_instruction(cil.ArgNode(iter_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("lessthan_funct", comparison_result_bool, 2)) + + self.register_instruction(cil.GotoIfNode(comparison_result_bool, f"foreach_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_body_{node_id}")) + self.register_instruction(cil.SetIndexNode(ancestors_array, iter_index_int, ancestor_type_address)) + self.register_instruction(cil.ParentNode(ancestor_type_address, ancestor_type_address)) + + self.register_instruction(cil.ArgNode(iter_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("add_funct", iter_index_int, 2)) + + self.register_instruction(cil.GotoNode(f"foreach_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_end_{node_id}")) + self.register_EOL() + + ## + # por cada tipo de rama guardar el indice del ancestro que le corresponde + # sino guardar la cantidad de anccestros + ## + + types = [self.context.get_type(type_name) for _, type_name, _ in node.params] + "hola" + type_branch_array = self.define_internal_local() + nearest_ancestor_array = self.define_internal_local() + + self.register_instruction(cil.ArrayNode(type_branch_array, len_types_int)) + self.register_instruction(cil.ArrayNode(nearest_ancestor_array, len_types_int)) + + for i_int, t in enumerate(types): + x = self.define_internal_local() + i = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(i, i_int)) + self.register_instruction(cil.TypeAddressNode(x, t.name)) + self.register_instruction(cil.SetIndexNode(type_branch_array, i, x)) + self.register_instruction(cil.SetValueInIndexNode(nearest_ancestor_array, i, count_of_ancestors_int)) + + self.register_EOL() + + i_int = self.define_internal_local() + comp_i_bool = self.define_internal_local() + type_i = self.define_internal_local() + j_int = self.define_internal_local() + comp_j_bool = self.define_internal_local() + type_j = self.define_internal_local() + types_comparison_bool = self.define_internal_local() + + self.register_instruction(cil.AllocateIntNode(i_int, "0")) + self.register_instruction(cil.AllocateBoolNode(comp_i_bool, "0")) + self.register_instruction(cil.AllocateIntNode(j_int, "0")) + self.register_instruction(cil.AllocateBoolNode(comp_j_bool, "0")) + self.register_instruction(cil.AllocateBoolNode(types_comparison_bool, "0")) + + self.register_instruction(cil.LabelNode(f"foreach_type_start_{node_id}")) + + self.register_instruction(cil.ArgNode(i_int, 0, 2)) + self.register_instruction(cil.ArgNode(len_types_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("lessthan_funct", comp_i_bool, 2)) + + self.register_instruction(cil.GotoIfNode(comp_i_bool, f"foreach_type_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_type_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_type_body_{node_id}")) + self.register_instruction(cil.GetIndexNode(type_i, type_branch_array, i_int)) + + # inner foreach + self.register_instruction(cil.ArgNode(j_int, 0, 2)) + self.register_instruction(cil.ArgNode(zero_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("assign_funct", j_int, 2)) + + self.register_instruction(cil.LabelNode(f"foreach_ancestor_start_{node_id}")) + + self.register_instruction(cil.ArgNode(j_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("lessthan_funct", comp_j_bool, 2)) + + self.register_instruction(cil.GotoIfNode(comp_j_bool, f"foreach_ancestor_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_ancestor_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_ancestor_body_{node_id}")) + self.register_instruction(cil.GetIndexNode(type_j, ancestors_array, j_int)) + + self.register_instruction(cil.EqualAddressNode(types_comparison_bool, type_i, type_j)) + self.register_instruction(cil.GotoIfNode(types_comparison_bool, f"foreach_ancestor_end_{node_id}")) + + self.register_instruction(cil.ArgNode(j_int, 0, 2)) + self.register_instruction(cil.ArgNode(one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("add_funct", j_int, 2)) + self.register_instruction(cil.GotoNode(f"foreach_ancestor_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_ancestor_end_{node_id}")) + self.register_instruction(cil.SetValueInIndexNode(nearest_ancestor_array, i_int, j_int)) + + self.register_EOL + + self.register_instruction(cil.ArgNode(i_int, 0, 2)) + self.register_instruction(cil.ArgNode(one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("add_funct", i_int, 2)) + self.register_instruction(cil.GotoNode(f"foreach_type_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_type_end_{node_id}")) + + self.register_EOL() + + ### + # encontrar el menor indice del ancestro + ### + s_index_int = self.define_internal_local() + s_current_min_index_int = self.define_internal_local() + s_temp_int = self.define_internal_local() + s_current_min_int = self.define_internal_local() + s_comparison_bool = self.define_internal_local() + + self.register_instruction(cil.AllocateIntNode(s_index_int, "0")) + self.register_instruction(cil.AllocateIntNode(s_current_min_index_int, "0")) + self.register_instruction(cil.AllocateIntNode(s_temp_int, "0")) + self.register_instruction(cil.AllocateIntNode(s_current_min_int, "0")) + self.register_instruction(cil.AllocateBoolNode(s_comparison_bool, "0")) + + self.register_instruction(cil.ArgNode(s_current_min_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("assign_funct", s_current_min_int, 2)) + + self.register_instruction(cil.LabelNode(f"foreach_min_start_{node_id}")) + + self.register_instruction(cil.ArgNode(s_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(len_types_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("lessthan_funct", s_comparison_bool, 2)) + + self.register_instruction(cil.GotoIfNode(s_comparison_bool, f"foreach_min_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_min_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_min_body_{node_id}")) + self.register_instruction(cil.GetValueInIndexNode(s_temp_int, nearest_ancestor_array, s_index_int)) + + self.register_instruction(cil.ArgNode(s_temp_int, 0, 2)) + self.register_instruction(cil.ArgNode(s_current_min_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("lessthan_funct", s_comparison_bool, 2)) + + self.register_instruction(cil.GotoIfNode(s_comparison_bool, f"update_min_{node_id}")) + self.register_instruction(cil.GotoNode(f"update_min_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"update_min_{node_id}")) + + self.register_instruction(cil.ArgNode(s_current_min_int, 0, 2)) + self.register_instruction(cil.ArgNode(s_temp_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("assign_funct", s_current_min_int, 2)) + + self.register_instruction(cil.ArgNode(s_current_min_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(s_index_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("assign_funct", s_current_min_index_int, 2)) + + self.register_instruction(cil.LabelNode(f"update_min_end_{node_id}")) + self.register_instruction(cil.ArgNode(s_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("add_funct", s_index_int, 2)) + self.register_instruction(cil.GotoNode(f"foreach_min_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_min_end_{node_id}")) + + + ### + # con el indice minimo obtener rama correcta + ### + bool_array = self.define_internal_local() + self.register_instruction(cil.ArrayNode(bool_array, len_types_int)) + for i, _ in enumerate(types): + x = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(x, f"{i}")) + self.register_instruction(cil.SetValueInIndexNode(bool_array, x, zero_int)) + + self.register_EOL() + + exists_error_bool = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(exists_error_bool, "0")) + + self.register_instruction(cil.ArgNode(s_current_min_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("equal_funct", exists_error_bool, 2)) + + self.register_instruction(cil.GotoIfNode(exists_error_bool, f"error_branch_{node_id}")) + self.register_instruction(cil.SetValueInIndexNode(bool_array, s_current_min_index_int, one_int)) + + # stp 5 + s_comparison = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(s_comparison, "0")) + self.register_EOL() + self.register_EOL() + + for i_int, t in enumerate(types): + x = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(x, f"{i_int}")) + self.register_instruction(cil.GetValueInIndexNode(s_comparison, bool_array, x)) + self.register_instruction(cil.GotoIfNode(s_comparison, f"branch_{t.name}_{node_id}")) + self.register_EOL() + + resutl_address = self.define_internal_local() + for i_int, (var_name, type_name, expr) in enumerate(node.params): + self.register_instruction(cil.LabelNode(f"branch_{type_name}_{node_id}")) + var = self.register_local(var_name) + self.register_instruction(cil.ArgNode(var, 0, 2)) + self.register_instruction(cil.ArgNode(case_expression, 1, 2)) + self.register_instruction(cil.StaticCallNode("assign_funct", var, 2)) + + expr_source, _ = self.visit(expr, scope.children[i_int]) + self.register_instruction(cil.ArgNode(resutl_address, 0, 2)) + self.register_instruction(cil.ArgNode(expr_source, 1, 2)) + self.register_instruction(cil.StaticCallNode("assign_funct", resutl_address, 2)) + self.register_instruction(cil.AssignNode(resutl_address, expr_source)) + self.register_instruction(cil.GotoNode(f"branch_end_{node_id}")) + self.register_EOL() + + self.register_instruction(cil.LabelNode(f"error_branch_{node_id}")) + # self.register_comment("Insert an error call") + self.register_instruction(cil.LabelNode(f"branch_end_{node_id}")) + + x, y = resutl_address, Type.multi_join(types) + return x, y + + @visitor.when(cool.AssignNode) + def visit(self, node: cool.AssignNode, scope): + scope = node.scope + variable = scope.find_variable(node.idx) + variables = scope.find_all_variables_with_name(node.idx) + source, _ = self.visit(node.expr, scope) + + # self.register_EOL() + is_attribute = (self.current_type.contains_attribute(node.idx) and len(variables) == 1) + + if is_attribute: + attr_names = [attr.name for attr, _ in self.current_type.all_attributes()] + self.register_instruction(cil.SetAttribNode("self", variable.name, source, attr_names.index(variable.name))) + return source, variable.type + else: + self.register_instruction(cil.ArgNode(variable.name, 0, 2)) + self.register_instruction(cil.ArgNode(source, 1, 2)) + self.register_instruction(cil.StaticCallNode("assign_funct", variable.name, 2)) + + return variable.name, variable.type + + + @visitor.when(cool.IsVoidNode) + def visit(self, node: cool.IsVoidNode, scope): + scope = node.scope + + source, _ = self.visit(node.expr, scope) + null_ptr = self.define_internal_local() + result = self.define_internal_local() + + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.AllocateNullNode(null_ptr)) + + self.register_instruction(cil.ArgNode(source, 0, 2)) + self.register_instruction(cil.ArgNode(null_ptr, 1, 2)) + self.register_instruction(cil.StaticCallNode("equal_funct", result, 2)) + + return result, self.context.get_type("Bool") + + @visitor.when(cool.MethodCallNode) + def visit(self, node: cool.MethodCallNode, scope): + scope = node.scope + + obj_source, obj_type = self.visit(node.atom, scope) + if obj_type.name == "SELF_TYPE": + obj_type = self.current_type + + ancestor_call = False + if node.type is not None: + ancestor_call = True + obj_type = self.context.get_type(node.type) + + expr_srcs = [] + for expr in node.exprlist: + ep_source, _ = self.visit(expr, scope) + expr_srcs.append(ep_source) + + all_methods = methods_declaration_order(obj_type) + i = [m.name for m, _ in all_methods].index(node.idx) + method = obj_type.get_method(node.idx) + + call_dest = self.define_internal_local() + i_method = self.define_internal_local() + method_address = self.define_internal_local() + + self.register_instruction(cil.AllocateIntNode(i_method, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, obj_source, i_method, method.name, obj_type.name)) + + self.register_instruction(cil.ArgNode(obj_source, 0, len(expr_srcs) + 1)) + for index, arg_source in enumerate(expr_srcs, start=1): + self.register_instruction(cil.ArgNode(arg_source, index, len(expr_srcs) + 1)) + + if ancestor_call: + self.register_instruction(cil.StaticCallNode(self.to_function_name(method.name, obj_type.name), call_dest, len(expr_srcs) + 1)) + else: + self.register_instruction(cil.DynamicCallNode(obj_type.name, method_address, call_dest, len(expr_srcs) + 1)) + + return call_dest, method.return_type + + @visitor.when(cool.NewNode) + def visit(self, node: cool.NewNode, scope): + scope = node.scope + + local = self.define_internal_local() + self.register_instruction(cil.AllocateNode(node.type, local)) + self.register_instruction(cil.ArgNode(local, 0, 1)) + self.register_instruction(cil.StaticCallNode(self.to_function_name("_init_", node.type), local, 1)) + + return local, self.context.get_type(node.type) + + ############### + # ARITHMETICS # + ############### + + ## basic arith funct + + @visitor.when(cool.PlusNode) + def visit(self, node: cool.PlusNode, scope): + scope = node.scope + return self.visit_arith_node(node, scope, "add_funct", "Int") + + @visitor.when(cool.MinusNode) + def visit(self, node: cool.MinusNode, scope): + scope = node.scope + return self.visit_arith_node(node, scope, "minus_funct", "Int") + + @visitor.when(cool.TimesNode) + def visit(self, node: cool.TimesNode, scope): + scope = node.scope + return self.visit_arith_node(node, scope, "times_funct", "Int") + + @visitor.when(cool.DivNode) + def visit(self, node: cool.DivNode, scope): + scope = node.scope + return self.visit_arith_node(node, scope, "div_funct", "Int") + + @visitor.when(cool.LessEqualNode) + def visit(self, node: cool.LessEqualNode, scope): + scope = node.scope + return self.visit_arith_node(node, scope, "lesseq_funct", "Bool") + + @visitor.when(cool.LessNode) + def visit(self, node: cool.LessNode, scope): + scope = node.scope + return self.visit_arith_node(node, scope, "lessthan_funct", "Bool") + + @visitor.when(cool.EqualNode) + def visit(self, node: cool.EqualNode, scope): + scope = node.scope + return self.visit_arith_node(node, scope, "equal_funct", "Bool") + + ## other arith funct + + @visitor.when(cool.ComplementNode) + def visit(self, node: cool.ComplementNode, scope): + scope = node.scope + source, _ = self.visit(node.expr, scope) + local_int_0 = self.define_internal_local() + local_int_1 = self.define_internal_local() + result = self.define_internal_local() + + self.register_instruction(cil.AllocateIntNode(local_int_0, "1")) + self.register_instruction(cil.AllocateIntNode(local_int_1, str(2**32 - 1))) + self.register_instruction(cil.AllocateIntNode(result, "0")) + + self.register_instruction(cil.ArgNode(source, 0, 2)) + self.register_instruction(cil.ArgNode(local_int_1, 1, 2)) + self.register_instruction(cil.StaticCallNode("xor_funct", result, 2)) + + self.register_instruction(cil.ArgNode(result, 0, 2)) + self.register_instruction(cil.ArgNode(local_int_0, 1, 2)) + self.register_instruction(cil.StaticCallNode("add_funct", result, 2)) + return result, self.context.get_type("Int") + + @visitor.when(cool.NegationNode) + def visit(self, node: cool.NegationNode, scope): + scope = node.scope + source, _ = self.visit(node.expr, scope) + local_int = self.define_internal_local() + result = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(local_int, "1")) + self.register_instruction(cil.AllocateBoolNode(result, "0")) + + self.register_instruction(cil.ArgNode(source, 0, 2)) + self.register_instruction(cil.ArgNode(local_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("xor_funct", result, 2)) + + return result, self.context.get_type("Bool") + + ########## + # ATOMIC # + ########## + + @visitor.when(cool.VariableNode) + def visit(self, node: cool.VariableNode, scope): + scope = node.scope + variable = scope.find_variable(node.lex) + all_variables = scope.find_all_variables_with_name(node.lex) + + is_attribute = (self.current_type.contains_attribute(node.lex) and len(all_variables) == 1) + + if is_attribute: + dest = self.define_internal_local() + attr_names = [a.name for a, _ in self.current_type.all_attributes()] + self.register_instruction(cil.GetAttribNode(dest, "self", variable.name, attr_names.index(variable.name))) + return dest, variable.type + + return variable.name, variable.type + + @visitor.when(cool.StringNode) + def visit(self, node: cool.StringNode, scope): + scope = node.scope + local_str_var = self.define_internal_local() + self.register_instruction(cil.AllocateStringNode(local_str_var, node.lex)) + return local_str_var, self.context.get_type("String") + + + @visitor.when(cool.BooleanNode) + def visit(self, node: cool.BooleanNode, scope): + scope = node.scope + local_bool_var = self.define_internal_local() + self.register_instruction(cil.AllocateBoolNode(local_bool_var, ("1" if node.lex.lower() == "true" else "0"))) + return local_bool_var, self.context.get_type("Bool") + + + @visitor.when(cool.NumberNode) + def visit(self, node: cool.NumberNode, scope): + scope = node.scope + local_int = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(local_int, node.lex)) + return local_int, self.context.get_type("Int") + + @visitor.when(NullNode) + def visit(self, node: NullNode, scope): + scope = node.scope + local_null_var = self.define_internal_local() + self.register_instruction(cil.AllocateNullNode(local_null_var)) + return local_null_var, NullType + diff --git a/src/utils/utils/cooltocil.py b/src/utils/utils/cooltocil.py new file mode 100644 index 000000000..c87678501 --- /dev/null +++ b/src/utils/utils/cooltocil.py @@ -0,0 +1,1666 @@ +from atexit import register +from copy import deepcopy +from typing import Any, Dict, List, Optional, Tuple + +from .semantic import * +from . import ast_nodes_cil as cil +from . import ast_nodes as cool +from . import visitor +from typing import Optional +from .code_generation import NullNode, NullType + + +class ExtendedCoolTranslator: + + def __init__(self, context: Context): + self.current_type = None + self.current_method = None + self.context = context + self.class_declarations = {} # type: Dict[str, cool.ClassDecNode] + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode): + declarations: List[cool.ClassDecNode] = [] + + default_class_names = ["Object", "IO", "String", "Int", "Bool"] + for name in default_class_names: + t = self.context.get_type(name) + t.define_method("_init_", [], [], t) + t.methods.move_to_end("_init_", last=False) + + for declaration in node.class_list: + self.class_declarations[declaration.name] = declaration + + for declaration in node.class_list: + declarations.append(self.visit(declaration)) + + return cool.ProgramNode(declarations) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode): + self.current_type = self.context.get_type(node.name) + + ancestors = [ + self.class_declarations[owner.name] + for _, owner in self.current_type.all_attributes() + ] + + attrs = [] + visited = set() + for ancestor in ancestors: + if ancestor.id in visited: + continue + + visited.add(ancestor.id) + attrs += [ + feature + for feature in ancestor.features + if isinstance(feature, cool.AttributeDecNode) + ] + + expressions: List[cool.ExprNode] = [] + for attr in attrs: + expressions.append(self.visit(attr)) + expressions.append(cool.VariableNode("self")) + + body = cool.BlockNode(expressions) + constructor = cool.MethodDecNode( + "_init_", [], self.current_type.name, body + ) + + self.current_type.define_method("_init_", [], [], self.current_type) + self.current_type.methods.move_to_end("_init_", last=False) + + attrs = [ + feature + for feature in node.data + if isinstance(feature, cool.AttributeDecNode) + ] + methods = [ + feature + for feature in node.data + if isinstance(feature, cool.MethodDecNode) + ] + + features = attrs + [constructor] + methods + + return cool.ClassDecNode(node.name, features, node.parent) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode): + if node.expr is None: + expr = None + if node.type == "Int": + expr = cool.NumberNode("0") + elif node.type == "Bool": + expr = cool.BooleanNode("false") + elif node.type == "String": + expr = cool.StringNode('""') + else: + expr = NullNode() + return cool.AssignNode(node.name, expr) + return cool.AssignNode(node.name, deepcopy(node.expr)) + + +class ExtendedCoolTypeChecker: + def __init__(self, context: Context, errors: List[str]): + self.context: Context = context + self.errors: List[str] = errors + self.current_type: Optional[Type] = None + self.current_method: Optional[Method] = None + self.current_attribute: Optional[Attribute] = None + + @visitor.on("node") + def visit(self, node, scope): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode, scope: Scope = None): + if scope is None: + scope = Scope() + + node.scope = scope + + for elem in node.class_list: + self.visit(elem, scope.create_child()) + + return scope + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode, scope: Scope): + node.scope = scope + self.current_type = self.context.get_type(node.name) + + attrs = [ + feature + for feature in node.data + if isinstance(feature, cool.AttributeDecNode) + ] + methods = [ + feature + for feature in node.data + if isinstance(feature, cool.MethodDecNode) + ] + + for attr, attr_owner in self.current_type.all_attributes(): + if attr_owner != self.current_type: + scope.define_variable(attr.name, attr.type) + + for attr in attrs: + self.visit(attr, scope) + + for method in methods: + self.visit(method, scope.create_child()) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode, scope: Scope): + node.scope = scope + if node.name == "self": + 'error' + + try: + attr_type = ( + self.context.get_type(node._type) + if node._type != "SELF_TYPE" + else self.current_type + ) + except SemanticError: + attr_type = ErrorType() + + scope.define_variable("self", self.current_type) + + # set the current attribute for analyze the body + # and set the self.current_method variable to None + self.current_attribute = self.current_type.get_attribute(node.name) + self.current_method = None + + if node.expr is not None: + expr_type = self.visit(node.expr, scope.create_child()) + if not expr_type.conforms_to(attr_type): + line, column = node.expr_position + self.errors.append( + 'error' + ) + scope.define_variable(node.id, attr_type) + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode, scope: Scope): + node.scope = scope + self.current_method = self.current_type.get_method(node.name) + self.current_attribute = None + + # Parameters can hide the attribute declaration, that's why we are not checking if there is defined, + # instead we are checking for local declaration. Also it is checked that the static type of a parameter is + # different of SELF_TYPE. + + scope.define_variable("self", self.current_type) + + for param_name, param_type in zip( + self.current_method.param_names, self.current_method.param_types + ): + if not scope.is_local(param_name): + if param_type.name == "SELF_TYPE": + self.errors.append('error') + scope.define_variable(param_name, ErrorType()) + else: + try: + scope.define_variable( + param_name, self.context.get_type(param_type.name) + ) + except SemanticError: + scope.define_variable(param_name, ErrorType()) + else: + self.errors.append( + 'error' + ) + + try: + return_type = ( + self.context.get_type(node.type) + if node.type != "SELF_TYPE" + else self.current_type + ) + except SemanticError: + return_type = ErrorType() + + expr_type = self.visit(node.expr, scope) + + if not expr_type.conforms_to(return_type): + self.errors.append( + 'error' + ) + + @visitor.when(cool.ExprParNode) + def visit(self, node: cool.ExprParNode, scope): + scope = node.scope + parnode = self.visit(node.expr, scope) + return parnode + + @visitor.when(cool.LetNode) + def visit(self, node: cool.LetNode, scope: Scope): + node.scope = scope + for i, (_id, _type, _expr) in enumerate(node.declaration): + if _id == "self": + line, column = node.dec_names_pos[i] + self.errors.append('error') + continue + + try: + var_static_type = ( + self.context.get_type(_type) + if _type != "SELF_TYPE" + else self.current_type + ) + except SemanticError: + line, column = node.dec_types_pos[i] + self.errors.append('error') + var_static_type = ErrorType() + + scope.define_variable(_id, var_static_type) + + expr_type = ( + self.visit(_expr, scope.create_child()) if _expr is not None else None + ) + if expr_type is not None and not expr_type.conforms_to(var_static_type): + self.errors.append('error') + + return self.visit(node.expr, scope.create_child()) + + @visitor.when(cool.AssignNode) + def visit(self, node: cool.AssignNode, scope: Scope): + node.scope = scope + var_info = scope.find_variable(node.idx) + + if var_info.name == "self": + self.errors.append('error') + + expr_type = self.visit(node.expr, scope) + + if var_info is None: + self.errors.append( + 'error' + ) + else: + if not expr_type.conforms_to(var_info.type): + self.errors.append( + 'error' + ) + + return expr_type + + @visitor.when(cool.BlockNode) + def visit(self, node: cool.BlockNode, scope: Scope): + node.scope = scope + return_type = ErrorType() + for expr in node.expr: + return_type = self.visit(expr, scope) + return return_type + + @visitor.when(cool.ConditionalNode) + def visit(self, node: cool.ConditionalNode, scope: Scope): + node.scope = scope + if_type = self.visit(node.if_expr, scope) + then_type = self.visit(node.then_expr, scope) + else_type = self.visit(node.else_expr, scope) + if if_type != self.context.get_type("Bool"): + self.errors.append('error') + return then_type.join(else_type) + + @visitor.when(cool.WhileNode) + def visit(self, node: cool.WhileNode, scope: Scope): + node.scope = scope + condition = self.visit(node.cond, scope) + if condition != self.context.get_type("Bool"): + self.errors.append('error') + + self.visit(node.data, scope) + return self.context.get_type("Object") + + @visitor.when(cool.CaseNode) + def visit(self, node: cool.CaseNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + types = [] + visited = set() + for i, (identifier, type_name, expr) in enumerate(node.params): + new_scope = scope.create_child() + try: + if type_name != "SELF_TYPE": + new_scope.define_variable(identifier, self.context.get_type(type_name)) + else: + self.errors.append('error') + except SemanticError: + new_scope.define_variable(identifier, ErrorType()) + line, column = node.cases_positions[i] + self.errors.append('error') + + # Cannot be dublicate Branches types + if type_name in visited: + line, column = node.cases_positions[i] + self.errors.append('error') + + visited.add(type_name) + types.append(self.visit(expr, new_scope)) + + return Type.multi_join(types) + + @visitor.when(cool.MethodCallNode) + def visit(self, node: cool.MethodCallNode, scope: Scope): + node.scope = scope + if node.atom is None: + node.atom = cool.VariableNode("self") + obj_type = self.visit(node.atom, scope) + + if node.type is not None: + try: + ancestor_type = self.context.get_type(node.type) + except SemanticError: + ancestor_type = ErrorType() + line, column = node.type_position + self.errors.append('error') + + if not obj_type.conforms_to(ancestor_type): + line, column = node.type_position + self.errors.append('error') + else: + ancestor_type = obj_type + + try: + method = ancestor_type.get_method(node.idx) + except SemanticError: + line, column = node.id_position + self.errors.append('error') + + for arg in node.exprlist: + self.visit(arg, scope) + return ErrorType() + + args_count = len(node.exprlist) + params_count = len(method.param_names) + if args_count != params_count: + line, column = node.id_position + self.errors.append('error') + + number_of_args = min(args_count, params_count) + for i, arg in enumerate(node.exprlist[:number_of_args]): + arg_type = self.visit(arg, scope) + if not arg_type.conforms_to(method.param_types[i]): + line, column = node.exprlist_positions[i] + self.errors.append('error') + + return ( + method.return_type + if method.return_type.name != "SELF_TYPE" + else ancestor_type + ) + + @visitor.when(cool.NumberNode) + def visit(self, node: cool.NumberNode, scope: Scope): + node.scope = scope + return self.context.get_type("Int") + + @visitor.when(cool.StringNode) + def visit(self, node: cool.StringNode, scope: Scope): + node.scope = scope + return self.context.get_type("String") + + @visitor.when(cool.BooleanNode) + def visit(self, node: cool.BooleanNode, scope: Scope): + node.scope = scope + return self.context.get_type("Bool") + + @visitor.when(NullNode) + def visit(self, node: NullNode, scope: Scope): + node.scope = scope + return NullType() + + @visitor.when(cool.VariableNode) + def visit(self, node: cool.VariableNode, scope: Scope): + node.scope = scope + variable = scope.find_variable(node.lex) + if variable is None: + if self.current_attribute is not None: + name = self.current_attribute.name + else: + name = self.current_method.name + + self.errors.append('error') + return ErrorType() + return variable.type + + @visitor.when(cool.NewNode) + def visit(self, node: cool.NewNode, scope: Scope): + node.scope = scope + try: + return ( + self.context.get_type(node.type) + if node.lex != "SELF_TYPE" + else self.current_type + ) + except SemanticError as e: + line, column = node.type_position + self.errors.append('error') + return ErrorType() + + @visitor.when(cool.NegationNode) + def visit(self, node: cool.NegationNode, scope: Scope): + node.scope = scope + return self._check_unary_operation( + node, scope, "not", self.context.get_type("Bool") + ) + + @visitor.when(cool.ComplementNode) + def visit(self, node: cool.ComplementNode, scope: Scope): + node.scope = scope + return self._check_unary_operation( + node, scope, "~", self.context.get_type("Int") + ) + + @visitor.when(cool.IsVoidNode) + def visit(self, node: cool.IsVoidNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + return self.context.get_type("Bool") + + @visitor.when(cool.PlusNode) + def visit(self, node: cool.PlusNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "+", self.context.get_type("Int") + ) + + @visitor.when(cool.MinusNode) + def visit(self, node: cool.MinusNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "-", self.context.get_type("Int") + ) + + @visitor.when(cool.TimesNode) + def visit(self, node: cool.TimesNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "*", self.context.get_type("Int") + ) + + @visitor.when(cool.DivNode) + def visit(self, node: cool.DivNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "/", self.context.get_type("Int") + ) + + @visitor.when(cool.LessEqualNode) + def visit(self, node: cool.LessEqualNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "<=", self.context.get_type("Bool") + ) + + @visitor.when(cool.LessNode) + def visit(self, node: cool.LessNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "<", self.context.get_type("Bool") + ) + + @visitor.when(cool.EqualNode) + def visit(self, node: cool.EqualNode, scope: Scope): + node.scope = scope + left_type = self.visit(node.left, scope) + right_type = self.visit(node.right, scope) + + basic_types = ("Int", "String", "Bool") + if (left_type.name in basic_types or left_type.name in basic_types\ + ) and left_type.name != right_type.name: + self.errors.append('error') + return self.context.get_type("Bool") + + def _check_int_binary_operation( + self, node: cool.BinaryNode, scope: Scope, operation: str, return_type: Type + ): + left_type = self.visit(node.left, scope) + right_type = self.visit(node.right, scope) + + if left_type == right_type == self.context.get_type("Int"): + return return_type + self.errors.append('error') + return ErrorType() + + def _check_unary_operation( + self, node: cool.UnaryNode, scope: Scope, operation: str, expected_type: Type + ): + typex = self.visit(node.expr, scope) + if typex == expected_type: + return typex + self.errors.append('error') + return ErrorType() + + +class BaseCoolToCilVisitor: + def __init__(self, context: Context): + self.dottypes: List[cil.TypeNode] = [] + self.dotdata: List[cil.DataNode] = [] + self.dotcode: List[cil.FunctionNode] = [] + + self.current_type: Optional[Type] = None + self.current_method: Optional[Method] = None + self.current_function: Optional[cil.FunctionNode] = None + + self.context: Context = context + + self.locals_dict = {} + self.param_set = set() + self.attr_set = set() + + @property + def params(self) -> List[cil.ParamNode]: + return self.current_function.params + + @property + def localvars(self) -> List[cil.LocalNode]: + return self.current_function.local_vars + + @property + def instructions(self) -> List[cil.InstructionNode]: + return self.current_function.instructions + + def register_local(self, var_name: str, comment: str = "") -> str: + local_name = ( + f"local_{self.current_function.name[9:]}_{var_name}_{len(self.localvars)}" + ) + local_name = var_name + local_node = cil.LocalNode(local_name).set_comment(comment) + self.localvars.append(local_node) + return local_name + + def define_internal_local(self, comment: str = "") -> str: + return self.register_local(f"internal_{len(self.localvars)}", comment) + + def register_instruction( + self, instruction: cil.InstructionNode + ) -> cil.InstructionNode: + self.instructions.append(instruction) + return instruction + + def to_function_name(self, method_name: str, type_name: str) -> str: + return f"function_{method_name}_at_{type_name}" + + def register_function(self, function_name: str) -> cil.FunctionNode: + function_node = cil.FunctionNode(function_name, [], [], []) + self.dotcode.append(function_node) + return function_node + + def register_type(self, name: str, parent_name: Optional[str] = None) -> cil.TypeNode: + type_node = cil.TypeNode(name, parent_name) + self.dottypes.append(type_node) + return type_node + + def register_data(self, value: Any) -> cil.DataNode: + data_name = f"data_{len(self.dotdata)}" + data_node = cil.DataNode(data_name, value) + self.dotdata.append(data_node) + return data_node + + def register_comment(self, comment: str) -> cil.CommentNode: + self.register_instruction(cil.CommentNode(comment)) + + def register_empty_instruction(self): + self.register_instruction(cil.EmptyInstruction()) + + def add_function_main(self): + self.current_function = self.register_function("main") + local_main = self.define_internal_local() + local_result = self.define_internal_local() + method_index = self.define_internal_local() + method_address = self.define_internal_local() + + self.register_instruction(cil.AllocateNode("Main", local_main)) + self.register_instruction(cil.ArgNode(local_main, 0, 1)) + self.register_instruction(cil.StaticCallNode(self.to_function_name("_init_", "Main"), local_main, 1)) + self.register_empty_instruction() + + + all_methods = methods_declaration_order(self.context.get_type("Main")) + i = [m.name for m, _ in all_methods].index("main") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, local_main, method_index, "main", "Main")) + + self.register_instruction(cil.ArgNode(local_main, 0, 1)) + self.register_instruction(cil.DynamicCallNode("Main", method_address, local_result, 1)) + + ######### + self.register_empty_instruction() + self.register_instruction(cil.HaltNode()) + + def add_function_add(self): + self.current_function = self.register_function("function_add") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local("Adding result") + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.PlusNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_sub(self): + self.current_function = self.register_function("function_sub") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local("Substracting result") + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.MinusNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_mul(self): + self.current_function = self.register_function("function_mult") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local("Multiting result") + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.TimesNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_div(self): + self.current_function = self.register_function("function_div") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local("Dividing result") + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.DivNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_xor(self): + self.current_function = self.register_function("function_xor") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local("Xor result") + self.register_instruction(cil.AllocateIntNode(result, "0")) + self.register_instruction(cil.XorNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_less_than(self): + self.current_function = self.register_function("function_less_than") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local("Less than result") + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.LessNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_less_than_or_equal(self): + self.current_function = self.register_function("function_less_than_or_equal") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local("Less than or equal result") + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.LessEqualNode(result, "a", "b")) + self.register_instruction(cil.ReturnNode(result)) + + def add_function_equal(self): + self.current_function = self.register_function("function_equal") + self.current_function.params.append(cil.ParamNode("a")) + self.current_function.params.append(cil.ParamNode("b")) + result = self.define_internal_local("Equal result") + constant_null = self.define_internal_local("Null Pointer") + is_null = self.define_internal_local("One of params is null") + type_of_a = self.define_internal_local("Type of a") + type_int = self.define_internal_local("Type Int") + type_bool = self.define_internal_local("Type Bool") + type_string = self.define_internal_local("Type String") + type_a_equals_int = self.define_internal_local("Type of a equals int") + type_a_equals_bool = self.define_internal_local("Type of a equals bool") + type_a_equals_string = self.define_internal_local("Type of a equals string") + + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.AllocateNullNode(constant_null)) + self.register_instruction(cil.AllocateBoolNode(is_null, "0")) + + self.register_instruction(cil.EqualAddressNode(is_null, "a", constant_null)) + self.register_instruction(cil.EqualAddressNode(is_null, "b", constant_null)) + self.register_instruction(cil.GotoIfNode(is_null, "a_is_type_object")) + + self.register_instruction(cil.TypeOfNode(type_of_a, "a")) + self.register_instruction(cil.TypeAddressNode(type_int, "Int")) + self.register_instruction(cil.TypeAddressNode(type_bool, "Bool")) + self.register_instruction(cil.TypeAddressNode(type_string, "String")) + self.register_instruction(cil.AllocateBoolNode(type_a_equals_int, "0")) + self.register_instruction(cil.AllocateBoolNode(type_a_equals_bool, "0")) + self.register_instruction(cil.AllocateBoolNode(type_a_equals_string, "0")) + + self.register_instruction(cil.EqualAddressNode(type_a_equals_int, type_of_a, type_int)) + self.register_instruction(cil.EqualAddressNode(type_a_equals_bool, type_of_a, type_bool)) + self.register_instruction(cil.EqualAddressNode(type_a_equals_string, type_of_a, type_string)) + self.register_empty_instruction() + self.register_instruction(cil.GotoIfNode(type_a_equals_int, "a_is_type_int_or_bool")) + self.register_instruction(cil.GotoIfNode(type_a_equals_bool, "a_is_type_int_or_bool")) + self.register_instruction(cil.GotoIfNode(type_a_equals_string, "a_is_type_string")) + self.register_instruction(cil.GotoNode("a_is_type_object")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("a_is_type_int_or_bool")) + self.register_instruction(cil.EqualIntNode(result, "a", "b")) + self.register_instruction(cil.GotoNode("end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("a_is_type_string")) + self.register_instruction(cil.EqualStrNode(result, "a", "b")) + self.register_instruction(cil.GotoNode("end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("a_is_type_object")) + self.register_instruction(cil.EqualNode(result, "a", "b")) + self.register_instruction(cil.GotoNode("end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("end_of_equal")) + + self.register_instruction(cil.ReturnNode(result)) + + def add_function_assign(self): + self.current_function = self.register_function("function_assign") + self.current_function.params.append(cil.ParamNode("dest")) + self.current_function.params.append(cil.ParamNode("source")) + constant_null = self.define_internal_local("Null Pointer") + is_null = self.define_internal_local("One of params is null") + type_of_source = self.define_internal_local("Type of source") + type_int = self.define_internal_local("Type Int") + type_bool = self.define_internal_local("Type Bool") + type_source_equals_int = self.define_internal_local("Type of source equals int") + type_source_equals_bool = self.define_internal_local("Type of source equals bool") + + self.register_instruction(cil.AllocateNullNode(constant_null)) + self.register_instruction(cil.AllocateBoolNode(is_null, "0")) + self.register_instruction(cil.EqualAddressNode(is_null, "source", constant_null)) + self.register_instruction(cil.EqualAddressNode(is_null, "dest", constant_null)) + self.register_instruction(cil.GotoIfNode(is_null, "source_is_type_object")) + + self.register_instruction(cil.TypeOfNode(type_of_source, "source")) + self.register_instruction(cil.TypeAddressNode(type_int, "Int")) + self.register_instruction(cil.TypeAddressNode(type_bool, "Bool")) + self.register_instruction(cil.AllocateBoolNode(type_source_equals_int, "0")) + self.register_instruction(cil.AllocateBoolNode(type_source_equals_bool, "0")) + self.register_instruction(cil.EqualAddressNode(type_source_equals_int, type_of_source, type_int)) + self.register_instruction(cil.EqualAddressNode(type_source_equals_bool, type_of_source, type_bool)) + self.register_empty_instruction() + self.register_instruction(cil.GotoIfNode(type_source_equals_int, "source_is_type_int_or_bool")) + self.register_instruction(cil.GotoIfNode(type_source_equals_bool, "source_is_type_int_or_bool")) + self.register_instruction(cil.GotoNode("source_is_type_object")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("source_is_type_int_or_bool")) + + self.register_instruction(cil.AssignIntNode("dest", "source")) + self.register_instruction(cil.GotoNode("source_end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("source_is_type_object")) + self.register_instruction(cil.AssignNode("dest", "source")) + self.register_instruction(cil.GotoNode("source_end_of_equal")) + + self.register_empty_instruction() + self.register_instruction(cil.LabelNode("source_end_of_equal")) + + self.register_instruction(cil.ReturnNode("dest")) + + def add_function_init(self, type_name: str): + self.current_function = self.register_function(self.to_function_name("_init_", type_name)) + self.current_function.params.append(cil.ParamNode("self")) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_abort(self): + self.current_function = self.register_function(self.to_function_name("abort", "Object")) + self.current_function.params.append(cil.ParamNode("self")) + msg1 = self.define_internal_local() + msg2 = self.define_internal_local() + msg = self.define_internal_local() + endl = self.define_internal_local() + method_index = self.define_internal_local() + method_address = self.define_internal_local() + + self.register_instruction(cil.AllocateStrNode(msg1, "\"Abort called from class \"")) + self.register_instruction(cil.AllocateStrNode(endl, "\"\\n\"")) + + all_methods = methods_declaration_order(self.context.get_type("String")) + i = [m.name for m, _ in all_methods].index("type_name") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, "self", method_index, "type_name", "String")) + + self.register_instruction(cil.ArgNode("self", 0, 1)) + self.register_instruction(cil.DynamicCallNode("String", method_address, msg2, 1)) + + + all_methods = methods_declaration_order(self.context.get_type("String")) + i = [m.name for m, _ in all_methods].index("concat") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, "self", method_index, "concat", "String")) + + self.register_instruction(cil.ArgNode(msg1, 0, 2)) + self.register_instruction(cil.ArgNode(msg2, 1, 2)) + self.register_instruction(cil.DynamicCallNode("String", method_address, msg, 2)) + + all_methods = methods_declaration_order(self.context.get_type("String")) + i = [m.name for m, _ in all_methods].index("concat") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, "self", method_index, "concat", "String")) + + self.register_instruction(cil.ArgNode(msg, 0, 2)) + self.register_instruction(cil.ArgNode(endl, 1, 2)) + self.register_instruction(cil.DynamicCallNode("String", method_address, msg, 2)) + + self.register_instruction(cil.PrintStringNode(msg)) + self.register_instruction(cil.HaltNode()) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_type_name(self): + self.current_function = self.register_function(self.to_function_name("type_name", "Object")) + self.current_function.params.append(cil.ParamNode("self")) + type_name = self.define_internal_local("type_name") + self.register_instruction(cil.TypeNameNode(type_name, "self")) + self.register_instruction(cil.ReturnNode(type_name)) + + def add_function_copy(self): + self.current_function = self.register_function(self.to_function_name("copy", "Object")) + self.current_function.params.append(cil.ParamNode("self")) + local_copy = self.define_internal_local() + self.register_instruction(cil.CopyNode(local_copy, "self")) + self.register_instruction(cil.ReturnNode(local_copy)) +# + def add_function_out_string(self): + self.current_function = self.register_function(self.to_function_name("out_string", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("x")) + self.register_instruction(cil.PrintStringNode("x")) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_out_int(self): + self.current_function = self.register_function(self.to_function_name("out_int", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("x")) + self.register_instruction(cil.PrintIntNode("x")) + self.register_instruction(cil.ReturnNode("self")) + + def add_function_in_string(self): + self.current_function = self.register_function(self.to_function_name("in_string", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + local_str = self.define_internal_local() + self.register_instruction(cil.ReadStringNode(local_str)) + self.register_instruction(cil.ReturnNode(local_str)) + + def add_function_in_int(self): + self.current_function = self.register_function(self.to_function_name("in_int", "IO")) + self.current_function.params.append(cil.ParamNode("self")) + local_str = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(local_str, "0")) + self.register_instruction(cil.ReadIntNode(local_str)) + self.register_instruction(cil.ReturnNode(local_str)) + + def add_function_length(self): + self.current_function = self.register_function(self.to_function_name("length", "String")) + self.current_function.params.append(cil.ParamNode("self")) + len_local = self.define_internal_local() + self.register_instruction(cil.AllocateIntNode(len_local, "0")) + self.register_instruction(cil.LengthNode(len_local, "self")) + self.register_instruction(cil.ReturnNode(len_local)) + + def add_function_concat(self): + self.current_function = self.register_function(self.to_function_name("concat", "String")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("s")) + new_str = self.define_internal_local() + self.register_instruction(cil.ConcatNode(new_str, "self", "s")) + self.register_instruction(cil.ReturnNode(new_str)) + + def add_function_substr(self): + self.current_function = self.register_function(self.to_function_name("substr", "String")) + self.current_function.params.append(cil.ParamNode("self")) + self.current_function.params.append(cil.ParamNode("i")) + self.current_function.params.append(cil.ParamNode("l")) + substr = self.define_internal_local() + self.register_instruction(cil.SubstringNode(substr, "self", "i", "l")) + self.register_instruction(cil.ReturnNode(substr)) +# + def debug_print_type(self, source: str): + endl = self.define_internal_local() + dest = self.define_internal_local() + self.register_instruction(cil.AllocateStrNode(endl, '"\\n"')) + self.register_instruction(cil.ArgNode(source, 0, 1)) + self.register_instruction(cil.StaticCallNode("function_type_name_at_Object", dest, 1)) + self.register_instruction(cil.PrintStringNode(dest)) + self.register_instruction(cil.PrintStringNode(endl)) + + +def methods_declaration_order(t: Type) -> List[Tuple[Method, Type]]: + method_decl = [] + all_methods = t.all_methods() + visited = set() + for method, _ in all_methods: + if method.name in visited: + continue + + method_decl.append([(x, y) for x, y in all_methods[::-1] if x.name == method.name][0]) + visited.add(method.name) + return method_decl + +class CoolToCilTranslator(BaseCoolToCilVisitor): + # Notes: + # 1 - All the expression nodes are going to return a tuple [str, Type] + + @visitor.on("node") + def visit(self, node, scope): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode, scope: Scope): + scope = node.scope + default_class_names = ["Object", "IO", "String", "Int", "Bool"] + for name in default_class_names: + current_type = self.context.get_type(name) + self.current_type = current_type + cil_type_node = self.register_type(current_type.name, current_type.parent.name if current_type.parent is not None else None) + + for method, ancestor in methods_declaration_order(current_type): + cil_type_node.methods.append((method.name, self.to_function_name(method.name, ancestor.name))) + + self.add_function_add() + self.add_function_sub() + self.add_function_mul() + self.add_function_div() + self.add_function_xor() + self.add_function_less_than() + self.add_function_less_than_or_equal() + self.add_function_equal() + self.add_function_assign() + + self.add_function_init("Object") + self.add_function_abort() + self.add_function_type_name() + self.add_function_copy() + + self.add_function_init("IO") + self.add_function_out_string() + self.add_function_out_int() + self.add_function_in_string() + self.add_function_in_int() + + self.add_function_init("String") + self.add_function_length() + self.add_function_concat() + self.add_function_substr() + + self.add_function_init("Int") + self.add_function_init("Bool") + + for i, declaration in enumerate(node.declarations): + self.visit(declaration, scope.children[i]) + + self.add_function_main() + + return cil.ProgramNode(self.dottypes, self.dotdata, self.dotcode) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode, scope: Scope): + scope = node.scope + self.current_type = self.context.get_type(node.id) + + type_node = self.register_type(self.current_type.name, self.current_type.parent.name) + + attrs = [ + feature + for feature in node.features + if isinstance(feature, cool.AttributeDecNode) + ] + + methods = [ + feature + for feature in node.features + if isinstance(feature, cool.MethodDecNode) + ] + + for attr, _ in self.current_type.all_attributes(): + self.visit(attr, scope) + type_node.attributes.append(attr.name) + + for method, t in methods_declaration_order(self.current_type): + type_node.methods.append((method.name, self.to_function_name(method.name, t.name))) + + i = len([attr for attr in attrs if attr.expr is not None]) + for i, method in enumerate(methods, start=i): + self.visit(method, scope.children[i]) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode, scope: Scope): + scope = node.scope + pass + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode, scope: Scope): + scope = node.scope + self.current_method, owner_type = self.current_type.get_method( + node.id, get_owner=True + ) + function_name = self.to_function_name(self.current_method.name, owner_type.name) + self.current_function = self.register_function(function_name) + + self.current_function.params = [cil.ParamNode("self")] + [ + cil.ParamNode(param_name) for param_name, _ in node.params + ] + + source, _ = self.visit(node.body, scope) + + self.register_instruction(cil.ReturnNode(source)) + + @visitor.when(cool.LetNode) + def visit(self, node: cool.LetNode, scope: Scope): + scope = node.scope + x = " ".join([f"{name}: {type_name}" for name, type_name, _ in node.declarations]) + self.register_comment(f"Let {x}") + + i = 0 + for name, type_name, expr in node.declarations: + self.register_local(name) + + if expr: + self.register_empty_instruction() + source, _ = self.visit(expr, scope.children[i]) + self.register_instruction(cil.ArgNode(name, 0, 2)) + self.register_instruction(cil.ArgNode(source, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", name, 2)) + i += 1 + else: + if type_name == "Int": + self.register_instruction(cil.AllocateIntNode(name, "0")) + elif type_name == "Bool": + self.register_instruction(cil.AllocateBoolNode(name, "0")) + elif type_name == "String": + self.register_instruction(cil.AllocateStrNode(name, "\"\"")) + else: + self.register_instruction(cil.AllocateNullNode(name)) + source, t = self.visit(node.expr, scope.children[i]) + + return source, t + + @visitor.when(cool.AssignNode) + def visit(self, node: cool.AssignNode, scope: Scope): + scope = node.scope + variable = scope.find_variable(node.id) + variables = scope.find_all_variables_with_name(node.id) + source, _ = self.visit(node.expr, scope) + + self.register_empty_instruction() + is_attribute = ( + self.current_type.contains_attribute(node.id) and len(variables) == 1 + ) + + if is_attribute: + attr_names = [attr.name for attr, _ in self.current_type.all_attributes()] + self.register_instruction(cil.SetAttributeNode("self", variable.name, source, attr_names.index(variable.name))) + return source, variable.type + else: + self.register_instruction(cil.ArgNode(variable.name, 0, 2)) + self.register_instruction(cil.ArgNode(source, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", variable.name, 2)) + # self.register_instruction(cil.AssignNode(variable.name, source)) + return variable.name, variable.type + + @visitor.when(cool.BlockNode) + def visit(self, node: cool.BlockNode, scope: Scope): + scope = node.scope + source, inst_type = None, None + for expr in node.expressions: + source, inst_type = self.visit(expr, scope) + return source, inst_type + + @visitor.when(cool.ConditionalNode) + def visit(self, node: cool.ConditionalNode, scope: Scope): + scope = node.scope + self.register_instruction(cil.CommentNode("Conditional")) + + node_id = hash(node) + result_address = self.define_internal_local() + conditional_address = self.define_internal_local() + + self.register_instruction(cil.AllocateBoolNode(conditional_address, "0")) + + source, _ = self.visit(node.if_expr, scope) + + self.register_instruction(cil.AssignNode(conditional_address, source)) + self.register_instruction(cil.GotoIfNode(conditional_address, f"then_{node_id}")) + self.register_instruction(cil.GotoNode(f"else_{node_id}")) + + self.register_instruction(cil.EmptyInstruction()) + self.register_instruction(cil.LabelNode(f"then_{node_id}")) + then_source, then_type = self.visit(node.then_expr, scope) + self.register_instruction(cil.AssignNode(result_address, then_source)) + self.register_instruction(cil.GotoNode(f"endif_{node_id}")) + + self.register_instruction(cil.EmptyInstruction()) + self.register_instruction(cil.LabelNode(f"else_{node_id}")) + else_source, else_type = self.visit(node.else_expr, scope) + self.register_instruction(cil.AssignNode(result_address, else_source)) + self.register_instruction(cil.GotoNode(f"endif_{node_id}")) + + self.register_instruction(cil.EmptyInstruction()) + self.register_instruction(cil.LabelNode(f"endif_{node_id}")) + + return result_address, then_type.join(else_type) + + @visitor.when(cool.WhileNode) + def visit(self, node: cool.WhileNode, scope: Scope): + scope = node.scope + node_id = hash(node) + result_addres = self.define_internal_local() + self.register_empty_instruction() + self.register_comment(f"While loop") + + self.register_instruction(cil.AllocateNullNode(result_addres)) + self.register_instruction(cil.LabelNode(f"while_start_{node_id}")) + + conditional_source, _ = self.visit(node.condition, scope) + self.register_instruction(cil.GotoIfNode(conditional_source, f"while_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"while_end_{node_id}")) + + self.register_instruction(cil.EmptyInstruction()) + self.register_instruction(cil.LabelNode(f"while_body_{node_id}")) + self.visit(node.body, scope) + self.register_instruction(cil.GotoNode(f"while_start_{node_id}")) + + self.register_instruction(cil.EmptyInstruction()) + self.register_instruction(cil.LabelNode(f"while_end_{node_id}")) + + return result_addres, self.context.get_type("Object") + + @visitor.when(cool.CaseNode) + def visit(self, node: cool.CaseNode, scope: Scope): + scope = node.scope + node_id = hash(node) + swicth_expression, _ = self.visit(node.expr, scope) + + constant_zero_int = self.define_internal_local("Constant Integer 0 ") + constant_one_int = self.define_internal_local("Constant Integer 1") + constant_len_types_int = self.define_internal_local(f"Constant Integer {len(node.cases)}") + constant_null_ptr = self.define_internal_local("Null pointer") + count_of_ancestors_int = self.define_internal_local("Count of ancestors of the switch expression") + step1_comparison_result_bool = self.define_internal_local("Step 1 comparison result") + switch_expr_type_address = self.define_internal_local("Switch expression type") + ancestor_type_address = self.define_internal_local("Ancestor type") + ancestors_array = self.define_internal_local("Step 1 Array of ancestors") + + self.register_instruction(cil.AllocateIntNode(constant_zero_int, "0")) + self.register_instruction(cil.AllocateIntNode(constant_one_int, "1")) + self.register_instruction(cil.AllocateIntNode(constant_len_types_int, str(len(node.cases)))) + self.register_instruction(cil.AllocateNullNode(constant_null_ptr)) + self.register_instruction(cil.AllocateIntNode(count_of_ancestors_int, "0")) + self.register_instruction(cil.AllocateBoolNode(step1_comparison_result_bool, "0")) + self.register_empty_instruction() + + self.register_comment("Switch Case Algorithm Steps:") + self.register_comment(" 1 - Count how many ancestors has the dynamic type of the expression") + self.register_comment(" 2 - Create an array of the same size where to store the ancestors") + self.register_comment(" 3 - For each branch type, store the ancestor index that match with it, if no one match, store `count of ancestors`") + self.register_comment(" 4 - Find the minimum of the ancestors indexes") + self.register_comment(" 5 - With the minimum index, get the correct branch type") + + ############################################ + # While loop to get the count of ancestors # + ############################################ + + self.register_empty_instruction() + self.register_comment("######################################################################## #") + self.register_comment("Step 1 - Count how many ancestors has the dynamic type of the expression #") + self.register_comment("######################################################################## #") + self.register_instruction(cil.TypeOfNode(switch_expr_type_address, swicth_expression).set_comment("Get the switch expression type")) + self.register_instruction(cil.AssignNode(ancestor_type_address, switch_expr_type_address).set_comment("The first ancestor will be the type itself")) + + self.register_instruction(cil.LabelNode(f"while_start_{node_id}")) + self.register_instruction(cil.EqualAddressNode(step1_comparison_result_bool, ancestor_type_address, constant_null_ptr)) + self.register_instruction(cil.GotoIfNode(step1_comparison_result_bool, f"while_end_{node_id}")) + + self.register_comment("Increment the count of ancestors") + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", count_of_ancestors_int, 2)) + + self.register_instruction(cil.AncestorNode(ancestor_type_address, ancestor_type_address)) + self.register_instruction(cil.GotoNode(f"while_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"while_end_{node_id}")) + # ################################################# + # # End While loop to get the count of ancestors # + # ################################################# + + + # ####################################################################### + # # Foreach to create the array of ancestors and fill it with the types # + # ####################################################################### + self.register_empty_instruction() + self.register_comment("###################################################################### #") + self.register_comment("Step 2 - Create an array of the same size where to store the ancestors #") + self.register_comment("###################################################################### #") + self.register_instruction(cil.AssignNode(ancestor_type_address, switch_expr_type_address).set_comment("The first ancestor will be the type itself")) + self.register_instruction(cil.ArrayNode(ancestors_array, count_of_ancestors_int).set_comment("Create an array of ancestors")) + + step2_iter_index_int = self.define_internal_local("Step 2 iteration index") + step2_comparison_result_bool = self.define_internal_local("Step 2 comparison result") + + self.register_instruction(cil.AllocateIntNode(step2_iter_index_int, "0")) + self.register_instruction(cil.AllocateBoolNode(step2_comparison_result_bool, "0")) + self.register_instruction(cil.LabelNode(f"foreach_start_{node_id}")) + + self.register_instruction(cil.ArgNode(step2_iter_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", step2_comparison_result_bool, 2)) + + self.register_instruction(cil.GotoIfNode(step2_comparison_result_bool, f"foreach_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_body_{node_id}")) + self.register_instruction(cil.SetIndexNode(ancestors_array, step2_iter_index_int, ancestor_type_address).set_comment("Set the index of the array with the ancestor type")) + self.register_instruction(cil.AncestorNode(ancestor_type_address, ancestor_type_address).set_comment("Get the next ancestor")) + + + self.register_instruction(cil.ArgNode(step2_iter_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", step2_iter_index_int, 2)) + + self.register_instruction(cil.GotoNode(f"foreach_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_end_{node_id}")) + self.register_empty_instruction() + # ########################################################################### + # # End Foreach to create the array of ancestors and fill it with the types # + # ########################################################################### + + + self.register_comment("#################################################################################################### #") + self.register_comment("Step 3 - For each branch type, store the ancestor index that match with it (Simulating a double for) #") + self.register_comment("#################################################################################################### #") + + types = [self.context.get_type(type_name) for _, type_name, _ in node.cases] + type_branch_array = self.define_internal_local("Array to store the branch types") + nearest_ancestor_array = self.define_internal_local("Array to store the nearest ancestor index of the expression type of the i-th branch type ") + self.register_instruction(cil.ArrayNode(type_branch_array, constant_len_types_int)) + self.register_instruction(cil.ArrayNode(nearest_ancestor_array, constant_len_types_int)) + for i_int, t in enumerate(types): + x = self.define_internal_local(f"Address of the type {t.name}") + i = self.define_internal_local(f"Index of the type {t.name}") + self.register_instruction(cil.AllocateIntNode(i, i_int)) + self.register_instruction(cil.TypeAddressNode(x, t.name)) + self.register_instruction(cil.SetIndexNode(type_branch_array, i, x)) + self.register_instruction(cil.SetValueInIndexNode(nearest_ancestor_array, i, count_of_ancestors_int)) + + self.register_empty_instruction() + + i_int = self.define_internal_local("Step 3 - Iteration index of the branch types array") + comp_i_bool = self.define_internal_local("Step 3 - Comparison for the index of the branch types array") + type_i = self.define_internal_local("Step 3 - Type of the i-th branch") + j_int = self.define_internal_local("Step 3 - Index of the ancestor") + comp_j_bool = self.define_internal_local("Step 3 - Comparison for the index of the ancestor") + type_j = self.define_internal_local("Step 3 - Type of the j-th ancestor") + types_comparison_bool = self.define_internal_local("Step 3 - Comparison for the branch type nad the ancestor type") + + self.register_instruction(cil.AllocateIntNode(i_int, "0")) + self.register_instruction(cil.AllocateBoolNode(comp_i_bool, "0")) + self.register_instruction(cil.AllocateIntNode(j_int, "0")) + self.register_instruction(cil.AllocateBoolNode(comp_j_bool, "0")) + self.register_instruction(cil.AllocateBoolNode(types_comparison_bool, "0")) + + self.register_comment("############# #") + self.register_comment("Outer Foreach #") + self.register_comment("############# #") + self.register_instruction(cil.LabelNode(f"foreach_type_start_{node_id}")) + + self.register_instruction(cil.ArgNode(i_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_len_types_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", comp_i_bool, 2)) + + self.register_instruction(cil.GotoIfNode(comp_i_bool, f"foreach_type_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_type_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_type_body_{node_id}")) + self.register_instruction(cil.GetIndexNode(type_i, type_branch_array, i_int).set_comment("Get the type of the i-th branch")) + + ################# + # Inner Foreach # + ################# + self.register_empty_instruction() + self.register_comment("############# #") + self.register_comment("Inner Foreach #") + self.register_comment("############# #") + + self.register_instruction(cil.ArgNode(j_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_zero_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", j_int, 2)) + + self.register_instruction(cil.LabelNode(f"foreach_ancestor_start_{node_id}")) + + self.register_instruction(cil.ArgNode(j_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", comp_j_bool, 2)) + + self.register_instruction(cil.GotoIfNode(comp_j_bool, f"foreach_ancestor_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_ancestor_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_ancestor_body_{node_id}")) + self.register_instruction(cil.GetIndexNode(type_j, ancestors_array, j_int).set_comment("Get the j-th ancestor type")) + + self.register_instruction(cil.EqualAddressNode(types_comparison_bool, type_i, type_j).set_comment("Compare if the type of the i-th branch is equal to the j-th ancestor")) + self.register_instruction(cil.GotoIfNode(types_comparison_bool, f"foreach_ancestor_end_{node_id}").set_comment("If the types are equal, we have a match, then we can exit")) + + self.register_instruction(cil.ArgNode(j_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", j_int, 2)) + self.register_instruction(cil.GotoNode(f"foreach_ancestor_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_ancestor_end_{node_id}")) + self.register_instruction(cil.SetValueInIndexNode(nearest_ancestor_array, i_int, j_int).set_comment("Set the counter of the i-th branch equals to j")) + self.register_comment("#################### #") + self.register_comment("End of Inner Foreach #") + self.register_comment("#################### #") + self.register_empty_instruction() + # ####################### + # # End Inner Foreach 1 # + # ####################### + + self.register_instruction(cil.ArgNode(i_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", i_int, 2)) + self.register_instruction(cil.GotoNode(f"foreach_type_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_type_end_{node_id}")) + self.register_comment("################# #") + self.register_comment("End Outer Foreach #") + self.register_comment("################# #") + + self.register_empty_instruction() + self.register_comment("######################################## #") + self.register_comment("Step 4 - Find the minimum ancestor index #") + self.register_comment("######################################## #") + step4_index_int = self.define_internal_local("Step 4 - Iteration index") + step4_current_min_index_int = self.define_internal_local("Step 4 - Index of the minimum counter in the counter array") + step4_temp_int = self.define_internal_local("Step 4 - Temporary variable") + step4_current_min_int = self.define_internal_local("Step 4 - Current minimum of the counter array") + step4_comparison_bool = self.define_internal_local("Step 4 - Comparison for the minimum of the counter array") + + self.register_instruction(cil.AllocateIntNode(step4_index_int, "0")) + self.register_instruction(cil.AllocateIntNode(step4_current_min_index_int, "0")) + self.register_instruction(cil.AllocateIntNode(step4_temp_int, "0")) + self.register_instruction(cil.AllocateIntNode(step4_current_min_int, "0")) + self.register_instruction(cil.AllocateBoolNode(step4_comparison_bool, "0")) + + self.register_instruction(cil.ArgNode(step4_current_min_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", step4_current_min_int, 2)) + + self.register_instruction(cil.LabelNode(f"foreach_min_start_{node_id}")) + + self.register_instruction(cil.ArgNode(step4_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_len_types_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", step4_comparison_bool, 2)) + + self.register_instruction(cil.GotoIfNode(step4_comparison_bool, f"foreach_min_body_{node_id}")) + self.register_instruction(cil.GotoNode(f"foreach_min_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_min_body_{node_id}")) + self.register_instruction(cil.GetValueInIndexNode(step4_temp_int, nearest_ancestor_array, step4_index_int).set_comment("Get the nearest ancestor index of the i-th branch type")) + + self.register_instruction(cil.ArgNode(step4_temp_int, 0, 2)) + self.register_instruction(cil.ArgNode(step4_current_min_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_less_than", step4_comparison_bool, 2)) + + self.register_instruction(cil.GotoIfNode(step4_comparison_bool, f"update_min_{node_id}")) + self.register_instruction(cil.GotoNode(f"update_min_end_{node_id}")) + self.register_instruction(cil.LabelNode(f"update_min_{node_id}")) + + self.register_instruction(cil.ArgNode(step4_current_min_int, 0, 2)) + self.register_instruction(cil.ArgNode(step4_temp_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", step4_current_min_int, 2)) + + self.register_instruction(cil.ArgNode(step4_current_min_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(step4_index_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", step4_current_min_index_int, 2)) + + self.register_instruction(cil.LabelNode(f"update_min_end_{node_id}")) + self.register_instruction(cil.ArgNode(step4_index_int, 0, 2)) + self.register_instruction(cil.ArgNode(constant_one_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", step4_index_int, 2)) + self.register_instruction(cil.GotoNode(f"foreach_min_start_{node_id}")) + self.register_instruction(cil.LabelNode(f"foreach_min_end_{node_id}")) + + self.register_empty_instruction() + self.register_comment("################################################################# #") + self.register_comment("Step 5 - Using the minimun ancestor index find the correct branch #") + self.register_comment("################################################################# #") + bool_array = self.define_internal_local("Step 5 - Bool array") + self.register_instruction(cil.ArrayNode(bool_array, constant_len_types_int).set_comment("Create the bool array")) + for i, _ in enumerate(types): + x = self.define_internal_local(f"Step 5 - Branch {i}") + self.register_instruction(cil.AllocateIntNode(x, f"{i}")) + self.register_instruction(cil.SetValueInIndexNode(bool_array, x, constant_zero_int).set_comment("Initialize the bool array")) + + self.register_empty_instruction() + exists_error_bool = self.define_internal_local("Step 5 - Exists an error") + self.register_instruction(cil.AllocateBoolNode(exists_error_bool, "0")) + + self.register_instruction(cil.ArgNode(step4_current_min_int, 0, 2)) + self.register_instruction(cil.ArgNode(count_of_ancestors_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_equal", exists_error_bool, 2)) + + self.register_instruction(cil.GotoIfNode(exists_error_bool, f"error_branch_{node_id}")) + self.register_instruction(cil.SetValueInIndexNode(bool_array, step4_current_min_index_int, constant_one_int).set_comment("Set the bool array in the correct index to 1")) + + + step5_comparison = self.define_internal_local("Step 5 - Comparison for the correct branch result") + self.register_instruction(cil.AllocateBoolNode(step5_comparison, "0")) + self.register_empty_instruction() + for i_int, t in enumerate(types): + x = self.define_internal_local(f"Index {i_int}") + self.register_instruction(cil.AllocateIntNode(x, f"{i_int}")) + self.register_instruction(cil.GetValueInIndexNode(step5_comparison, bool_array, x).set_comment(f"Get the bool value of the branch {t.name}")) + self.register_instruction(cil.GotoIfNode(step5_comparison, f"branch_{t.name}_{node_id}").set_comment("If the bool value is 1, then we have a match")) + self.register_empty_instruction() + + resutl_address = self.define_internal_local("Result of the switch expression address") + for i_int, (var_name, type_name, expr) in enumerate(node.cases): + self.register_instruction(cil.LabelNode(f"branch_{type_name}_{node_id}")) + var = self.register_local(var_name, f"Specialiced variable for the branch {type_name}") + self.register_instruction(cil.ArgNode(var, 0, 2)) + self.register_instruction(cil.ArgNode(swicth_expression, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", var, 2)) + + expr_source, _ = self.visit(expr, scope.children[i_int]) + self.register_instruction(cil.ArgNode(resutl_address, 0, 2)) + self.register_instruction(cil.ArgNode(expr_source, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_assign", resutl_address, 2)) + self.register_instruction(cil.AssignNode(resutl_address, expr_source).set_comment("Assign the result")) + self.register_instruction(cil.GotoNode(f"branch_end_{node_id}")) + self.register_empty_instruction() + self.register_instruction(cil.LabelNode(f"error_branch_{node_id}")) + self.register_comment("Insert an error call") + self.register_instruction(cil.LabelNode(f"branch_end_{node_id}")) + + return resutl_address, Type.multi_join(types) + + @visitor.when(cool.MethodCallNode) + def visit(self, node: cool.MethodCallNode, scope: Scope): + scope = node.scope + obj_source, obj_type = self.visit(node.obj, scope) + if obj_type.name == "SELF_TYPE": + obj_type = self.current_type + + ancestor_call = False + if node.type is not None: + ancestor_call = True + obj_type = self.context.get_type(node.type) + + args_sources = [] + for arg in node.exprlist: + arg_source, _ = self.visit(arg, scope) + args_sources.append(arg_source) + + all_methods = methods_declaration_order(obj_type) + i = [m.name for m, _ in all_methods].index(node.id) + method = obj_type.get_method(node.id) + + call_dest = self.define_internal_local("Function call destination") + method_index = self.define_internal_local(f"Index of {method.name}") + method_address = self.define_internal_local(f"Address of {method.name}") + self.register_instruction(cil.AllocateIntNode(method_index, f"{i}")) + self.register_instruction(cil.GetMethodNode(method_address, obj_source, method_index, method.name, obj_type.name)) + + self.register_instruction(cil.ArgNode(obj_source, 0, len(args_sources) + 1)) + for index, arg_source in enumerate(args_sources, start=1): + self.register_instruction(cil.ArgNode(arg_source, index, len(args_sources) + 1)) + + if ancestor_call: + self.register_instruction(cil.StaticCallNode(self.to_function_name(method.name, obj_type.name), call_dest, len(args_sources) + 1)) + else: + self.register_instruction(cil.DynamicCallNode(obj_type.name, method_address, call_dest, len(args_sources) + 1)) + return call_dest, method.return_type + + @visitor.when(cool.NumberNode) + def visit(self, node: cool.NumberNode, scope: Scope): + scope = node.scope + local_int = self.define_internal_local(f"Integer {node.lex}") + self.register_instruction(cil.AllocateIntNode(local_int, node.lex)) + return local_int, self.context.get_type("Int") + + @visitor.when(cool.StringNode) + def visit(self, node: cool.StringNode, scope: Scope): + scope = node.scope + local_str_var = self.define_internal_local(f"String {node.lex}") + self.register_instruction(cil.AllocateStrNode(local_str_var, node.lex)) + return local_str_var, self.context.get_type("String") + + @visitor.when(cool.BooleanNode) + def visit(self, node: cool.BooleanNode, scope: Scope): + scope = node.scope + local_bool_var = self.define_internal_local(f"Boolean {node.lex}") + self.register_instruction(cil.AllocateBoolNode(local_bool_var, ("1" if node.lex == "true" else "0"))) + return local_bool_var, self.context.get_type("Bool") + + @visitor.when(NullNode) + def visit(self, node: NullNode, scope: Scope): + scope = node.scope + local_null_var = self.define_internal_local(f"Null") + self.register_instruction(cil.AllocateNullNode(local_null_var)) + return local_null_var, NullType + + @visitor.when(cool.VariableNode) + def visit(self, node: cool.VariableNode, scope: Scope): + scope = node.scope + variable = scope.find_variable(node.lex) + variables = scope.find_all_variables_with_name(node.lex) + + is_attribute = (self.current_type.contains_attribute(node.lex) and len(variables) == 1) + + if is_attribute: + dest = self.define_internal_local() + attr_names = [a.name for a, _ in self.current_type.all_attributes()] + self.register_instruction(cil.GetAttributeNode(dest, "self", variable.name, attr_names.index(variable.name))) + return dest, variable.type + return variable.name, variable.type + + @visitor.when(cool.NewNode) + def visit(self, node: cool.NewNode, scope: Scope): + scope = node.scope + local = self.define_internal_local(f"Store an instance of the class {node.lex}") + + self.register_instruction(cil.AllocateNode(node.lex, local).set_comment(f"Allocate the object {node.lex}")) + self.register_instruction(cil.ArgNode(local, 0, 1).set_comment("Pass the instance to the constructor")) + self.register_instruction(cil.StaticCallNode(self.to_function_name("_init_", node.lex), local, 1).set_comment("Call the constructor")) + return local, self.context.get_type(node.lex) + + @visitor.when(cool.NegationNode) + def visit(self, node: cool.NegationNode, scope: Scope): + scope = node.scope + source, _ = self.visit(node.expr, scope) + local_int = self.define_internal_local("Integer 1") + result = self.define_internal_local(f"Store the negation of {source}") + self.register_instruction(cil.AllocateIntNode(local_int, "1")) + self.register_instruction(cil.AllocateBoolNode(result, "0")) + + self.register_instruction(cil.ArgNode(source, 0, 2)) + self.register_instruction(cil.ArgNode(local_int, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_xor", result, 2)) + + return result, self.context.get_type("Bool") + + @visitor.when(cool.ComplementNode) + def visit(self, node: cool.ComplementNode, scope: Scope): + scope = node.scope + + source, _ = self.visit(node.expr, scope) + local_int_0 = self.define_internal_local("Integer 1") + local_int_1 = self.define_internal_local(f"Integer {2**32 - 1}") + result = self.define_internal_local(f"Store the complement a2 of {source}") + + + self.register_instruction(cil.AllocateIntNode(local_int_0, "1")) + self.register_instruction(cil.AllocateIntNode(local_int_1, str(2**32 - 1))) + self.register_instruction(cil.AllocateIntNode(result, "0")) + + self.register_instruction(cil.ArgNode(source, 0, 2)) + self.register_instruction(cil.ArgNode(local_int_1, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_xor", result, 2)) + + self.register_instruction(cil.ArgNode(result, 0, 2)) + self.register_instruction(cil.ArgNode(local_int_0, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_add", result, 2)) + return result, self.context.get_type("Int") + + @visitor.when(cool.IsVoidNode) + def visit(self, node: cool.IsVoidNode, scope: Scope): + scope = node.scope + + source, _ = self.visit(node.expr, scope) + null_ptr = self.define_internal_local("Null pointer") + result = self.define_internal_local(f"Store if {source} is NULL") + + self.register_instruction(cil.AllocateBoolNode(result, "0")) + self.register_instruction(cil.AllocateNullNode(null_ptr)) + + self.register_instruction(cil.ArgNode(source, 0, 2)) + self.register_instruction(cil.ArgNode(null_ptr, 1, 2)) + self.register_instruction(cil.StaticCallNode("function_equal", result, 2)) + return result, self.context.get_type("Bool") + + @visitor.when(cool.PlusNode) + def visit(self, node: cool.PlusNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_add", "Int") + + @visitor.when(cool.MinusNode) + def visit(self, node: cool.MinusNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_sub", "Int") + + @visitor.when(cool.TimesNode) + def visit(self, node: cool.TimesNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_mult", "Int") + + @visitor.when(cool.DivNode) + def visit(self, node: cool.DivNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_div", "Int") + + @visitor.when(cool.LessEqualNode) + def visit(self, node: cool.LessEqualNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_less_than_or_equal", "Bool") + + @visitor.when(cool.LessNode) + def visit(self, node: cool.LessNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_less_than", "Bool") + + @visitor.when(cool.EqualNode) + def visit(self, node: cool.EqualNode, scope: Scope): + scope = node.scope + return self.visit_arith_node(node, scope, "function_equal", "Bool") + + def visit_arith_node(self, node: cool.BinaryNode, scope: Scope, operation_function: str, return_type_name: str = "Int") -> Tuple[str, Type]: + left, _ = self.visit(node.left, scope) + right, _ = self.visit(node.right, scope) + dest = self.define_internal_local(f"Store the result of the operation {operation_function}") + self.register_empty_instruction() + self.register_instruction(cil.ArgNode(left, 0, 2)) + self.register_instruction(cil.ArgNode(right, 1, 2)) + self.register_instruction(cil.StaticCallNode(operation_function, dest, 2)) + return dest, self.context.get_type(return_type_name) diff --git a/src/utils/utils/cyclic_dependency.py b/src/utils/utils/cyclic_dependency.py new file mode 100644 index 000000000..8c059f272 --- /dev/null +++ b/src/utils/utils/cyclic_dependency.py @@ -0,0 +1,168 @@ +from .semantic import Context, SemanticError +from utils import visitor +from utils import ast_nodes as ast + +class CyclicDependency_: + def __init__(self, context: Context, errors): + self.context = context + self.dic = {item: i for i, item in enumerate(self.context.types)} + self.vertex = [] + self.adyacence_list = [[] for _ in range(len(self.dic))] + self.errors = errors + self.adding_edges() + self.is_cyclic() + + def adding_edges(self): + self.vertex = [i for i in self.dic] + for vert in self.vertex: + if vert in ['SELF_TYPE', 'Object', 'AUTO_TYPE']: + continue + parent = self.context.get_type(vert) + parent = parent.parent + try: + parent = self.dic[parent.name] + except: + print(vert) + self.adyacence_list[parent].append(self.dic[vert]) + + def is_cyclic(self): + try: + self.__is_cyclic__() + except SemanticError as e: + self.errors.append(e.text) + + def __is_cyclic__(self): + mark = [False for _ in range(len(self.vertex))] + stack = [self.dic['Object']] + dfs = 0 + + while stack: + v = stack.pop() + mark[v] = True + dfs += 1 + + for item in self.adyacence_list[v]: + if not mark[item]: + mark[item] = True + stack.append(item) + + if dfs != len(self.vertex) - 2: + raise SemanticError('Existe un ciclo en el árbol de dependencias') + + +def get_tokencolumn(str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + +def cyclicDependency(context, errors, program, program_node): + types = context.types + dependency_err = False + graph = {name: [] for name in types if name not in ["AUTO_TYPE", "SELF_TYPE"]} + class_def_list = {d.name: d for d in program_node.class_list} + + for name, typex in types.items(): + if name in ["Object", "SELF_TYPE", "AUTO_TYPE"] or typex.parent is None: + continue + graph[typex.parent.name].append(name) + + visited = set() + stack = ["Object"] + + while stack: + current_name = stack.pop() + if current_name in visited: + line, lexpos = class_def_list[current_name].parent_position + errors.append(f'({line}, {get_tokencolumn(program, lexpos)}) - SemanticError: Class "{current_name}", or an ancestor of "{current_name}", is involved in an inheritance cycle') + dependency_err = True + visited.add(current_name) + stack += graph[current_name] + + if len(visited) != len(graph): + types_names = set(x for x in context.types if x not in ["SELF_TYPE", "AUTO_TYPE"]) + exclude_type_names = types_names - visited + + # look for the class in the cycle + class_ref = max(exclude_type_names, key=lambda x: class_def_list[x].line) + line, lexpos = class_def_list[class_ref].parent_pos + errors.append(f'({line}, {get_tokencolumn(program, lexpos)}) - SemanticError: Class "{class_ref}", or an ancestor of "{class_ref}", is involved in an inheritance cycle') + dependency_err = True + + return dependency_err + + +class MethodChecker: + def __init__(self, context: Context, errors, program): + self.context: Context = context + self.current_type = None + self.errors = errors + self.program = program + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode): + for data in node.class_list: + self.visit(data) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode): + self.current_type = self.context.get_type(node.name) + + for data in node.data: + if isinstance(data, ast.MethodDecNode): + self.visit(data) + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode): + try: + attribute, owner = self.current_type.parent.get_attribute(node.name) + line, lexpos = node.type_pos + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: Attribute "{attribute.name}" already defined in "{owner.name}", attributes cannot be overridden') + except SemanticError: pass + + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode): + current_method = self.current_type.get_method(node.name) + try: + original_method, _ = self.current_type.parent.get_method( + node.name, owner=True + ) + + current_count = len(current_method.param_types) + original_count = len(original_method.param_types) + if current_count != original_count: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - SemanticError: In redefinded method "{node.name}", param type "{original_count}" is different from original param type "{current_count}"') + + counter = min(original_count, current_count) + for i in range(counter): + curr_type = current_method.param_types[i].name + original_type = original_method.param_types[i].name + if curr_type != original_type: + line, lexpos = node.p_types_pos[i] + self.errors.append(self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: In redefinded method "{node.name}", param type "{curr_type}" is different from original param type "{original_method}"')) + + current_return_type = current_method.return_type.name + original_return_type = original_method.return_type.name + if current_return_type != original_return_type: + line, lexpos = node.r_types_pos + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: In redefinded method "{node.name}", return type "{current_return_type}" is different from original return type "{original_return_type}"') + except SemanticError: + pass + diff --git a/src/utils/utils/errors.py b/src/utils/utils/errors.py new file mode 100644 index 000000000..dd06d614f --- /dev/null +++ b/src/utils/utils/errors.py @@ -0,0 +1,98 @@ +ATTRIBUTE_OVERRIDE_ERROR = '(%d, %d) - SemanticError: Attribute "%s" already defined in "%s", attributes cannot be overridden' +METHOD_OVERRIDE_PARAM_ERROR = '(%d, %d) - SemanticError: In redefinded method "%s", the number of parameters different from the original definition. Expected %d, instead of %d' +METHOD_OVERRIDE_PARAM_ERROR = '(%d, %d) - SemanticError: In redefinded method "%s", param type "%s" is different from original param type "%s"' +METHOD_OVERRIDE_RETURN_ERROR = '(%d, %d) - SemanticError: In redefinded method "%s", return type "%s" is different from original return type "%s"' + +INCOMPATIBLE_TYPES = '(%d, %d) - TypeError: Cannot convert "%s" into "%s".' +INVALID_PARAM_TYPE = ( + '(%d, %d) - TypeError: "%s" cannot be a static type of a parameter.' +) +INVALID_CASE_TYPE = ( + '(%d, %d) - TypeError: "%s" cannot be a static type of a case branch.' +) +INVALID_PARENT_TYPE = '(%d, %d) - SemanticError: Class "%s" cannot inherits from "%s"' +INVALID_ANCESTOR = '(%d, %d) - TypeError: Class "%s" has no an ancestor class "%s".' + +INVALID_EQ_COMPARISON_OPERATION = '(%d, %d) - TypeError: For operation "=" if one of the expression has static type Int, Bool or String, then the other must have the same static type' +INVALID_BINARY_OPERATION = ( + '(%d, %d) - TypeError: Operation "%s" is not defined between "%s" and "%s".' +) +INVALID_UNARY_OPERATION = ( + '(%d, %d) - TypeError: Operation "%s" is not defined for "%s".' +) + +DISPATCH_UNDEFINED_METHOD = ( + '(%d, %d) - AttributeError: Dispatch undefined method "%s" from type %s' +) +DISPATCH_WITH_WRONG_NUMBER_OF_ARGS = '(%d, %d) - SemanticError: Method "%s" of type "%s" called with wrong number of arguments. Expected %d instead of %d' + + +SELF_IS_READONLY = '(%d, %d) - SemanticError: Variable "self" is read-only.' +SELF_INVALID_ATTRIBUTE_ID = ( + '(%d, %d) - SemanticError: Cannot set "self" as attribute of a class.' +) +SELF_INVALID_PARAM_ID = ( + '(%d, %d) - SemanticError: Cannot set "self" as parameter of a method.' +) +SELF_USED_IN_LET = ( + '(%d, %d) - SemanticError: "self" cannot be bound in a "let" expression' +) +LOCAL_ALREADY_DEFINED = ( + '(%d, %d) - SemanticError: Variable "%s" is already defined in method "%s".' +) +UNDEFINED_VARIABLE = '(%d, %d) - NameError: Variable "%s" is not defined in "%s".' +INVALID_REDEFINITION_CLASS = ( + '(%d, %d) - SemanticError: Invalid redefinition of class "%s"' +) +PARENT_ALREADY_SET = '(%d, %d) - SemanticError: Parent type is already set for "%s"' +PARENT_UNDEFINED = ( + '(%d, %d) - TypeError: Parent type for class "%s" is an undefined type "%s"' +) +ATTRIBUTE_ALREADY_DEFINED = ( + '(%d, %d) - SemanticError: Attribute "%s" is already defined in "%s".' +) +METHOD_ALREADY_DEFINED = '(%d, %d) - SemanticError: Method "%s" already defined in %s' +DUPLICATE_BARNCH_IN_CASE = ( + '(%d, %d) - SemanticError: Duplicate branch "%s" in case statement' +) + +CYCLIC_DEPENDENCY = '(%d, %d) - SemanticError: Class "%s", or an ancestor of "%s", is involved in an inheritance cycle' + +UNDEFINDED_ATTRIBUTE = '(%d, %d) - SemanticError: Attribute "%s" is not defined in %s' +UNDEFINDED_METHOD = '(%d, %d) - SemanticError: Method "%s" is not defined in %s' +UNDEFINED_TYPE = '(%d, %d) - TypeError: Type "%s" is not defined' +UNDEFINED_NEW_TYPE = ( + '(%d, %d) - TypeError: Using "new" expresion with undefined type "%s"' +) +UNDEFINED_TYPE_IN_BRANCH = ( + '(%d, %d) - TypeError: Class "%s" of case branch is undefined' +) +UNDEFINED_RETURN_TYPE = ( + '(%d, %d) - TypeError: Undefined return type "%s" in method "%s", in class "%s"' +) +UNDEFINED_PARAM_TYPE = ( + '(%d, %d) - TypeError: Undefined param type "%s" in method "%s", in class "%s"' +) +UNDEFINED_ATTRIBUTE_TYPE = ( + '(%d, %d) - TypeError: Undefined type "%s" for attribute "%s" in class "%s"' +) + +INFERENCE_ERROR_ATTRIBUTE = ( + '(%d, %d) - InferenceError: Cannot infer type for attribute "%s".' +) +INFERENCE_ERROR_PARAMETER = ( + '(%d, %d) - InferenceError: Cannot infer type for parameter "%s".' +) +INFERENCE_ERROR_VARIABLE = ( + '(%d, %d) - InferenceError: Cannot infer type for variable "%s".' +) +INFERENCE_ERROR_METHOD = ( + '(%d, %d) - InferenceError: Cannot infer return type for method "%s".' +) + +DIVIDE_BY_ZERO = "(%d, %d) - ZeroDivisionError: Division by zero." +INPUT_INT_ERROR = "(%d, %d) - InputError: Expected a number." +MAIN_CLASS_NOT_FOUND = "(%d, %d) - MainClassNotFound: no Main class in program." +MAIN_METHOD_NOT_FOUND = "(%d, %d) - MainMethodNotFound: no main method in class Main." +VOID_EXPRESSION = "(%d, %d) - VoidReferenceError: Object reference not set to an instance of an object." +CASE_OF_ERROR = "(%d, %d) - CaseOfError: No branch matches wit de dynamic type of the case expression." diff --git a/src/utils/utils/formatter.py b/src/utils/utils/formatter.py new file mode 100644 index 000000000..f4609e439 --- /dev/null +++ b/src/utils/utils/formatter.py @@ -0,0 +1,262 @@ +import utils.ast_nodes as ast +import utils.visitor as visitor +from utils.semantic import Scope +from utils.code_generation import NullNode + + +class CodeBuilder: + @visitor.on('node') + def visit(self, node, tabs): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode, tabs: int = 0): + return '\n\n'.join(self.visit(child, tabs) for child in node.class_list) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode, tabs: int = 0): + parent = '' if node.parent is None else f"inherits {node.parent} " + return (f'class {node.name} {parent}{{\n' + + '\n\n'.join(self.visit(child, tabs + 1) for child in node.data) + + '\n}') + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode, tabs: int = 0): + expr = f' <- {self.visit(node.expr, 0)}' if node.expr is not None else '' + return ' ' * tabs + f'{node.name}: {node._type}{expr};' + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode, tabs: int = 0): + params = ', '.join(': '.join([param[0], param[1]]) for param in node.params) + ans = ' ' * tabs + f'{node.name} ({params}): {node.type}' + body = self.visit(node.expr, tabs + 1) + return f'{ans} {{\n{body}\n }};' + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode, tabs: int = 0): + declarations = [] + for _id, _type, _expr in node.declaration: + if _expr is not None: + declarations.append(f'{_id}: {_type} <- {self.visit(_expr)}') + else: + declarations.append(f'{_id} : {_type}') + declarations = (',\n' + ' ' * (tabs + 1)).join(declarations) + return ' ' * tabs + f'let {declarations} in\n{self.visit(node.expr, tabs + 1)}' + + @visitor.when(ast.ParamNode) + def visit(self, node: ast.ParamNode, tabs: int = 0): + return ' ' * tabs + f'({node.name}: {node.type.name})' + + @visitor.when(ast.ExprParNode) + def visit(self, node: ast.ExprParNode, tabs: int = 0): + return f"({self.visit(node.expr, tabs)})" + + @visitor.when(ast.IsVoidNode) + def visit(self, node: ast.IsVoidNode, tabs: int = 0): + return f'Isvoid({self.visit(node.expr, tabs)})' + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode, tabs: int = 0): + return ' ' * tabs + f'{node.idx} <- {self.visit(node.expr, tabs)}' + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode, tabs: int = 0): + body = ';\n'.join(self.visit(child, tabs + 1) for child in node.expr) + return ' ' * tabs + f'{{\n{body};\n' + ' ' * tabs + '}' + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode, tabs: int = 0): + ifx = self.visit(node.if_expr) + then = self.visit(node.then_expr, tabs + 1) + elsex = self.visit(node.else_expr, tabs + 1) + + return (' ' * tabs + f'if {ifx}\n' + + ' ' * tabs + f'then\n{then}\n' + + ' ' * tabs + f'else\n{elsex}\n' + + ' ' * tabs + 'fi') + + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode, tabs: int = 0): + condition = self.visit(node.cond, 0) + body = self.visit(node.data, tabs + 1) + + return ' ' * tabs + f'while {condition} loop\n {body}\n' + ' ' * tabs + 'pool' + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode, tabs: int = 0): + cases = [] + for _id, _type, _expr in node.params: + expr = self.visit(_expr, tabs + 2) + cases.append(' ' * (tabs + 1) + f'{_id} : {_type} =>\n{expr};') + expr = self.visit(node.expr) + cases = '\n'.join(cases) + + return ' ' * tabs + f'case {expr} of \n{cases}\n' + ' ' * tabs + 'esac' + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode, tabs: int = 0): + obj = f'{self.visit(node.atom, 0)}.' if node.atom is not None else '' + str_params = [self.visit(arg, 0) for arg in node.exprlist] + return ' ' * tabs + f'{obj}{node.idx}({", ".join(str_params)})' + + @visitor.when(ast.BinaryNode) + def visit(self, node: ast.BinaryNode, tabs: int = 0): + left = self.visit(node.left) if isinstance(node.left, ast.BinaryNode) else self.visit(node.left, tabs) + right = self.visit(node.right) + return f'{left} {node.operation} {right}' + + + @visitor.when(ast.ComplementNode) + def visit(self, node: ast.ComplementNode, tabs: int = 0): + return f'~ {self.visit(node.expr, tabs)}' + + @visitor.when(ast.NegationNode) + def visit(self, node: ast.NegationNode, tabs: int = 0): + return f'not {self.visit(node.expr, tabs)}' + + @visitor.when(NullNode) + def visit(self, node: NullNode, tabs): + return 'NULL' + + @visitor.when(ast.AtomicNode) + def visit(self, node: ast.AtomicNode, tabs: int = 0): + lex = node.lex + return f'{lex}' + + @visitor.when(ast.NewNode) + def visit(self, node: ast.NewNode, tabs: int = 0): + return ' ' * tabs + f'(new {node.type})' + + @visitor.when(ast.VariableNode) + def visit(self, node: ast.VariableNode, tabs: int = 0): + return ' ' * tabs + f'{node.lex}' + + +class PrintingScope: + + def printing(self, scope: Scope, tabs=0): + print(tabs * ' ', "parent: ", scope.parent) + print(tabs * ' ', "variables locales:", type(scope.local_variable), scope.local_variable) + + if scope.children: + print(tabs * ' ', f'childrens: ({len(scope.children)})') + for item in scope.children: + self.printing(item, tabs+1) + + return "end" + +class Formatter: + @visitor.on('node') + def visit(self, node, tabs): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode, tabs: int = 0): + ans = ' ' * tabs + f'\\__ProgramNode [ ... ]' + statements = '\n'.join(self.visit(child, tabs + 1) for child in node.class_list) + return f'{ans}\n{statements}' + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode, tabs: int = 0): + parent = '' if node.parent is None else f": {node.parent}" + ans = ' ' * tabs + f'\\__ClassDeclarationNode: class {node.name} {parent} {{ ... }}' + features = '\n'.join(self.visit(child, tabs + 1) for child in node.data) + return f'{ans}\n{features}' + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode, tabs: int = 0): + ans = ' ' * tabs + f'\\__AttrDeclarationNode: {node.name} : {node._type}' + return f'{ans}' + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode, tabs: int = 0): + params = ', '.join(':'.join(param) for param in node.params) if node.params is not None else '' + ans = ' ' * tabs + f'\\__FuncDeclarationNode: {node.name}({params}) : {node.type if node.type is not None else ""} -> ' + body = self.visit(node.expr, tabs + 1) + return f'{ans}\n{body}' + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode, tabs: int = 0): + declarations = [] + for _id, _type, _expr in node.declaration: + if _expr is not None: + declarations.append(' ' * tabs + f'\\__VarDeclarationNode: {_id}: {_type} <-\n{self.visit(_expr, tabs + 1)}') + else: + declarations.append(' ' * tabs + f'\\__VarDeclarationNode: {_id} : {_type}') + + declarations = '\n'.join(declarations) + ans = ' ' * tabs + f'\\__LetNode: let' + expr = self.visit(node.expr, tabs + 2) + return f'{ans}\n {declarations}\n' + ' ' * (tabs + 1) + 'in\n' + f'{expr}' + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode, tabs: int = 0): + ans = ' ' * tabs + f'\\__AssignNode: {node.idx} <- ' + expr = self.visit(node.expr, tabs + 1) + return f'{ans}\n{expr}' + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode, tabs: int = 0): + ans = ' ' * tabs + f'\\__BlockNode:' + body = '\n'.join(self.visit(child, tabs + 1) for child in node.expr) + return f'{ans}\n{body}' + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode, tabs: int = 0): + ifx = self.visit(node.if_expr, tabs + 2) + then = self.visit(node.then_expr, tabs + 2) + elsex = self.visit(node.else_expr, tabs + 2) + + return '\n'.join([ + ' ' * tabs + f'\\__IfThenElseNode: if then else fi', + ' ' * (tabs + 1) + f'\\__if \n{ifx}', + ' ' * (tabs + 1) + f'\\__then \n{then}', + ' ' * (tabs + 1) + f'\\__else \n{elsex}', + ]) + + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode, tabs: int = 0): + condition = self.visit(node.cond, tabs + 2) + body = self.visit(node.data, tabs + 2) + + return '\n'.join([ + ' ' * tabs + f'\\__WhileNode: while loop pool', + ' ' * (tabs + 1) + f'\\__while \n{condition}', + ' ' * (tabs + 1) + f'\\__loop \n{body}', + ]) + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode, tabs: int = 0): + cases = [] + for _id, _type, _expr in node.params: + expr = self.visit(_expr, tabs + 3) + cases.append(' ' * tabs + f'\\__CaseNode: {_id} : {_type} =>\n{expr}') + expr = self.visit(node.expr, tabs + 2) + cases = '\n'.join(cases) + + return '\n'.join([ + ' ' * tabs + f'\\__SwitchCaseNode: case of [ ... ] esac', + ' ' * (tabs + 1) + f'\\__case \n{expr} of', + ]) + '\n' + cases + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode, tabs: int = 0): + obj = self.visit(node.atom, tabs + 1) + ans = ' ' * tabs + f'\\__CallNode: .{node.idx}(, ..., )' + args = '\n'.join(self.visit(arg, tabs + 1) for arg in node.exprlist) + return f'{ans}\n{obj}\n{args}' + + @visitor.when(ast.BinaryNode) + def visit(self, node: ast.BinaryNode, tabs: int = 0): + ans = ' ' * tabs + f'\\__ {node.__class__.__name__} ' + left = self.visit(node.left, tabs + 1) + right = self.visit(node.right, tabs + 1) + return f'{ans}\n{left}\n{right}' + + @visitor.when(ast.AtomicNode) + def visit(self, node: ast.AtomicNode, tabs: int = 0): + return ' ' * tabs + f'\\__ {node.__class__.__name__}: {node.lex}' + + @visitor.when(ast.NewNode) + def visit(self, node: ast.NewNode, tabs: int = 0): + return ' ' * tabs + f'\\__ NewNode: new {node.lex}()' diff --git a/src/utils/utils/inference copy.py b/src/utils/utils/inference copy.py new file mode 100644 index 000000000..ea8e10d4e --- /dev/null +++ b/src/utils/utils/inference copy.py @@ -0,0 +1,562 @@ +from .semantic import Attribute, Method, Type +from .semantic import Context, Scope +from .semantic import SemanticError, ErrorType +import utils.ast_nodes as ast +import utils.visitor as visitor +from collections import deque + + +def add_ext(d, node1, node2): + try: + d[node1].append(node2) + except KeyError: + d[node1] = [node2] + if node2 not in d: + d[node2] = [] + + +class InferenceTypeChecker: + def __init__(self, context: Context, errors, program): + self.context: Context = context + self.current_type: Type = None + self.current_method: Method = None + self.errors = errors + self.extension = {} + self.dfunc = { + 'attr': self.update_attr, + 'var': self.update_var, + 'param': self.update_param, + 'ret': self.update_ret, + 'base': self.update_base, + 'join': self.update_join + } + self.dfunc_type = { + 'attr': self.get_tuple_type_attr, + 'var': self.get_tuple_type_var, + 'param': self.get_tuple_type_param, + 'ret': self.get_tuple_type_ret, + 'base': self.get_tuple_type_base, + 'join': self.get_tuple_type_join + } + self.program = program + + @visitor.on('node') + def visit(self, node, scope): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode, scope: Scope): + if scope is None: + scope = Scope() + for item in node.class_list: + self.visit(item, scope.create_child()) + + self.update() + ReplaceTypes(self.context, self.errors, self.program).visit(node, scope) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode, scope: Scope): + self.current_type = self.context.get_type(node.name) + for item in node.data: + if isinstance(item, ast.MethodDecNode): + self.visit(item, scope.create_child()) + elif isinstance(item, ast.AttributeDecNode): + self.visit(item, scope) + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode, scope: Scope): + var_type = self.context.get_type(node._type) + var_attr_info = scope.define_variable(node.name, var_type) # scope + tuple_var = 'var', var_attr_info + exp = self.visit(node.expr, scope.create_child()) if node.expr is not None else None + + if node._type == "AUTO_TYPE": + attr_type = self.context.get_type(node._type) + attr = self.current_type.attributes[node.name] + tuple_attr = 'attr', attr + if exp is not None: + add_ext(self.extension, exp, tuple_var) + add_ext(self.extension, exp, tuple_attr) + # si conocemos el tipo de uno, sabremos el tipo del otro + add_ext(self.extension, tuple_attr, tuple_var) + add_ext(self.extension, tuple_var, tuple_attr) + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode, scope: Scope): + self.current_method = self.current_type.get_method(node.name) + scope.define_variable('self', self.current_type)#define self + params_name = self.current_method.param_names + params_type = self.current_method.param_types + for i, param_name in enumerate(params_name): + param_type = params_type[i] + param_var_scope = scope.define_variable(param_name, param_type) + tuple_var = 'var', param_var_scope + + if param_type.name == "AUTO_TYPE": + tuple_param = 'param', self.current_method, i + add_ext(self.extension, tuple_var, tuple_param) + add_ext(self.extension, tuple_param, tuple_var) + body_exp = self.visit(node.expr, scope) + if self.current_method.return_type.name == "AUTO_TYPE": + tuple_ret = 'ret', self.current_method + add_ext(self.extension, body_exp, tuple_ret) + + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode, scope: Scope): + self.visit(node.cond, scope) + self.visit(node.data, scope.create_child()) + return ('base', self.context.get_type("Object")) + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode, scope: Scope): + for dec in node.declaration: + id_var, type_var, expr = dec + try: + var_info = scope.define_variable( + id_var, self.context.get_type(type_var)) + except SemanticError: + var_info = scope.define_variable(id_var, ErrorType()) + + tuple_var = 'var', var_info + expr_node = self.visit( + expr, scope.create_child()) if expr is not None else None + if var_info.type.name == "AUTO_TYPE": + if expr_node is not None: + add_ext(self.extension, expr_node, tuple_var) + if expr_node[1].name == "AUTO_TYPE": + add_ext(self.extension, tuple_var, expr_node) + else: + add_ext(self.extension, tuple_var, []) + elif expr_node is not None and expr_node == "AUTO_TYPE": + add_ext(self.extension, expr_node, tuple_var) + + exp_body = self.visit(node.expr, scope.create_child()) + return exp_body + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode, scope: Scope): + var = scope.find_variable(node.idx) + tuple_var = 'var', var + expr = self.visit(node.expr, scope.create_child()) + + if var is not None: # esta definida + if expr[0]=='join': + exp_type = self.context.get_type('AUTO_TYPE') + else: + exp_type = self.dfunc_type[expr[0]](expr) + if var.type.name == "AUTO_TYPE" and exp_type != "AUTO_TYPE": + add_ext(self.extension, expr, tuple_var) + elif var.type.name != "AUTO_TYPE" and exp_type== "AUTO_TYPE": + tuple_base = 'base', var.types + add_ext(self.extension, tuple_base, expr) + elif var.type.name == "AUTO_TYPE" and exp_type == "AUTO_TYPE": + add_ext(self.extension, tuple_var, expr) + add_ext(self.extension, expr, tuple_var) + return expr + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode, scope: Scope): + if_ = self.visit(node.if_expr,scope) + + add_ext(self.extension,('base', self.context.get_type('Bool')), if_) + + then_ = self.visit(node.then_expr,scope.create_child()) + if then_[0] == 'join': + self.extension[then_] = [] + + else_ = self.visit(node.else_expr,scope.create_child()) + if else_ is not None and else_[0] == 'join': + self.extension[else_] = [] + + tuple_join = 'join', then_, else_ + return tuple_join + # if then_[0]=='base' and else_[0] == 'base' : + # return 'base',then_[1].common_ancestor(else_[1]) + #return 'base', self.context.get_type('Object') + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode, scope: Scope): + self.visit(node.expr,scope) + for id_,type_,exp_ in node.params: + try: + var_info = scope.define_variable(id_,self.context.get_type(type_)) + self.visit(exp_,scope.create_child()) + except SemanticError: + pass + + return 'base', self.context.get_type('Object') + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode, scope: Scope): + final_exp = None + current_scope = scope.create_child() + + for expr in node.expr: + final_exp = self.visit(expr, current_scope) + return final_exp + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode, scope: Scope): + if node.atom is None: + node.atom = ast.VariableNode('self') + inst = self.visit(node.atom, scope) + type_inst = self.dfunc_type[inst[0]](inst) + if inst[0] == 'base' and node.idx in set(m.name for m, _ in type_inst.all_methods(True)): + method = type_inst.get_method(node.idx) + + counter = min(len(node.exprlist), len(method.param_types)) + for i, exp in enumerate(node.exprlist): + if i == counter: break + arg = self.visit(exp, scope) + tuple_param = 'param', method, i + param_type = method.param_types[i] + if arg is not None: + if arg[0] == 'base': + if param_type.name == 'AUTO_TYPE': + add_ext(self.extension, arg, tuple_param) + else: + if method.param_types[i].name != 'AUTO_TYPE': + add_ext(self.extension, tuple_param, arg) + else: + add_ext(self.extension, arg, tuple_param) + add_ext(self.extension, tuple_param, arg) + if method.return_type.name == 'AUTO_TYPE': + return 'ret', method + ret_type = method.return_type if method.return_type != 'SELF_TYPE' else type_inst + return 'base', ret_type + + for arg in node.exprlist: + self.visit(arg, scope) + return 'base', self.context.get_type('Object') + + @visitor.when(ast.MinusNode) + def visit(self, node: ast.MinusNode, scope: Scope): + return self.visit_op_int(node, scope) + + @visitor.when(ast.PlusNode) + def visit(self, node: ast.PlusNode, scope: Scope): + return self.visit_op_int(node, scope) + + @visitor.when(ast.DivNode) + def visit(self, node: ast.DivNode, scope: Scope): + int_type = self.context.get_type('Int') + return self.visit_op_int(node, scope) + + @visitor.when(ast.TimesNode) + def visit(self, node: ast.TimesNode, scope: Scope): + int_type = self.context.get_type('Int') + return self.visit_op_int(node, scope) + + @visitor.when(ast.LessNode) + def visit(self, node: ast.LessNode, scope: Scope): + int_type = self.context.get_type('Int') + bool_type = self.context.get_type('Bool') + return self.visit_op_bool(node, scope) + + @visitor.when(ast.LessEqualNode) + def visit(self, node: ast.LessEqualNode, scope: Scope): + return self.visit_op_bool(node, scope) + + @visitor.when(ast.EqualNode) + def visit(self, node: ast.EqualNode, scope: Scope): + self.visit(node.left, scope) + self.visit(node.right, scope) + return 'base', self.context.get_type('Bool') + + @visitor.when(ast.StringNode) + def visit(self, node: ast.StringNode, scope: Scope): + return 'base', self.context.get_type('String') + + @visitor.when(ast.NumberNode) + def visit(self, node: ast.NumberNode, scope: Scope): + return 'base', self.context.get_type('Int') + + @visitor.when(ast.BooleanNode) + def visit(self, node: ast.BooleanNode, scope: Scope): + return 'base', self.context.get_type('Bool') + + @visitor.when(ast.VariableNode) + def visit(self, node: ast.VariableNode, scope: Scope): + var_info = scope.find_variable(node.lex) + if var_info is not None: + if var_info.type.name == 'AUTO_TYPE': + return 'var', var_info + else: + return 'base', var_info.type + + @visitor.when(ast.ComplementNode) + def visit(self, node: ast.ComplementNode, scope: Scope): + self.visit(node.expr, scope) + return 'base', self.context.get_type('Int') + + @visitor.when(ast.NegationNode) + def visit(self, node: ast.NegationNode, scope: Scope): + self.visit(node.expr, scope) + return 'base', self.context.get_type('Bool') + + @visitor.when(ast.IsVoidNode) + def visit(self, node: ast.IsVoidNode, scope: Scope): + self.visit(node.expr, scope) + return 'base', self.context.get_type('Bool') + + @visitor.when(ast.NewNode) + def visit(self, node: ast.NewNode, scope: Scope): + if node.type in self.context.types: + return 'base', self.context.get_type(node.type) + return 'base', self.context.get_type('Object') + + @visitor.when(ast.ExprParNode) + def visit(self, node: ast.NewNode, scope: Scope): + return self.visit(node.expr, scope) + + def visit_op_int(self, node: ast.BinaryNode, scope: Scope): + left_op = self.visit(node.left, scope) + right_op = self.visit(node.right, scope) + + if left_op is not None and left_op[0] != 'base': + add_ext(self.extension, ('base', self.context.get_type('Int')), left_op) + + if right_op is not None and right_op[0] != 'base': + add_ext(self.extension, ('base', self.context.get_type('Int')), right_op) + + return 'base', self.context.get_type('Int') + + def visit_op_bool(self, node: ast.BinaryNode, scope: Scope): + left_op = self.visit(node.left, scope) + right_op = self.visit(node.right, scope) + + if left_op is not None and left_op[0] != 'base': + add_ext(self.extension, ('base', self.context.get_type('Int')), left_op) + + if right_op is not None and right_op[0] != 'base': + add_ext(self.extension, ('base', self.context.get_type('Int')), right_op) + + return 'base', self.context.get_type('Bool') + + def update(self): + for item in self.extension: + pass + + q = deque(e for e in self.extension if e is not None and e[0] == 'base') + visited_base = set() + while len(q) > 0: + base = q.popleft() + if base in visited_base: + continue + self.update_visit(base, visited_base) + + q = deque(j for j in self.extension if j is not None and j[0] == 'join') + visited_join = set() + while len(q) > 0: + join = q.popleft() + if join in visited_join: + continue + self.update_visit_join(join,visited_join) + + for t in self.extension: + if t not in visited_base and t not in visited_join and t is not None: + self.dfunc[t[0]](t, self.context.get_type('Object')) + + def update_visit(self, base, visited): + new_type = self.dfunc_type[base[0]](base) + q = deque([base]) + while q: + current = q.popleft() + if current not in visited and current is not None: + visited.add(current) + self.dfunc[current[0]](current, new_type) + q.extend(self.extension[current]) + + def update_visit_join(self,join,visited): + then_type = join[1][1].type if join[1][0] == 'var' else join[1][1] + else_type = join[2][1].type if join[2][0] == 'var' else join[2][1] + if join[1][0] == 'join': + then_type = self.update_visit_join(join[1],visited) + visited.add(join[1]) + if join[2][0] == 'join': + else_type = self.update_visit_join(join[2], visited) + visited.add(join[2]) + join_type = then_type.common_ancestor(else_type) + q = deque([join]) + while q: + current = q.popleft() + if current not in visited: + visited.add(current) + self.dfunc[current[0]](current,join_type) + q.extend(self.extension[current]) + return join_type + + def update_attr(self, t, new_type): + t[1].type = new_type + + def get_tuple_type_attr(self, t): + return t[1].type + + def update_var(self, t, new_type): + t[1].type = new_type + + def get_tuple_type_var(self, t): + return t[1].type + + def update_param(self, t, new_type): + method = t[1] + i_param = t[2] + method.param_types[i_param] = new_type + + def update_join(self,t,new_type): + pass + + def get_tuple_type_join(self, t): + pass + + def get_tuple_type_param(self, t): + return t[1].params_type[t[2]] + + def update_ret(self, t, new_type): + method = t[1] + method.return_type = new_type + + def get_tuple_type_ret(self, t): + return t[1].return_type + + def update_base(self, t, new_type): + pass + + def get_tuple_type_base(self, t): + return t[1] + + +class ReplaceTypes: + def __init__(self, context: Context, errors, program): + self.context: Context = context + self.current_type: Type = None + self.current_method: Method = None + self.errors = errors + self.program = program + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + + @visitor.on('node') + def visit(self, node, scope): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode, scope: Scope): + for i, c in enumerate(node.class_list): + self.visit(c, scope.children[i]) + return scope + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode, scope: Scope): + self.current_type = self.context.get_type(node.name) + i_index = 0 + for item in node.data: + if isinstance(item, ast.MethodDecNode): + self.visit(item, scope.children[i_index]) + i_index += 1 + elif isinstance(item, ast.AttributeDecNode): + if item.expr is not None: + item.index = i_index + i_index += 1 + self.visit(item, scope) + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode, scope: Scope): + attr_type = self.context.get_type(node._type) + attr_info = scope.find_variable(node.name) + if node.expr is not None: + self.visit(node.expr, scope.children[node.index]) + if attr_type.name == "AUTO_TYPE": + if attr_info.type.name == "AUTO_TYPE": + node._type = 'Object' + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - InferenceError: Cannot infer type for attribute "{node.name}".') + else: + node._type = attr_info.type.name + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode, scope: Scope): + self.current_method = self.current_type.get_method(node.name) + for i, param in enumerate(node.params): + var_info = scope.find_variable(param.name) + if var_info is not None: + if var_info.type.name == "AUTO_TYPE": + node.type = 'Object' + self.errors.append(f'({node.p_types_pos[i][0]}, {node.p_types_pos[i][0]}) - InferenceError: Cannot infer type for attribute "{var_info.name}".') + else: + node.params[i] = ast.ParamNode(param.name, var_info.type.name) + self.visit(node.expr, scope) + + if node.type == "AUTO_TYPE": + if self.current_method.return_type.name == "AUTO_TYPE": + node.type = 'Object' + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - InferenceError: Cannot infer type for attribute "{node.name}".') + else: + node.type = self.current_method.return_type.name + + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode, scope: Scope): + self.visit(node.cond, scope) + self.visit(node.data, scope.children[0]) + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode, scope: Scope): + i_child = 0 + for i, dec in enumerate(node.declaration): + id_var, type_var, expr = dec + var_info = scope.find_variable(id_var) + if expr is not None: + self.visit(expr, scope.children[i_child]) + i_child += 1 + if type_var == "AUTO_TYPE": + if var_info.type.name == "AUTO_TYPE": + node.declaration[i] = (id_var, 'Object', expr) + self.errors.append(f'({node.dec_types_pos[i][0]}, {node.dec_types_pos[i][1]}) - InferenceError: Cannot infer type for attribute "{id_var}".') + node.declaration[i] = (id_var, var_info.type.name, expr) + self.visit(node.expr, scope.children[i_child]) + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode, scope: Scope): + self.visit(node.expr, scope.children[0]) + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode, scope: Scope): + self.visit(node.atom, scope) + for expr in node.exprlist: + self.visit(expr, scope) + + @visitor.when(ast.BinaryNode) + def visit(self, node: ast.BinaryNode, scope: Scope): + self.visit(node.left, scope) + self.visit(node.right, scope) + + @visitor.when(ast.UnaryNode) + def visit(self, node: ast.UnaryNode, scope: Scope): + self.visit(node.expr, scope) + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode, scope: Scope): + current_scope = scope.children[0] + for expr in node.expr: + self.visit(expr, current_scope) + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode, scope: Scope): + self.visit(node.if_expr,scope) + self.visit(node.then_expr,scope.children[0]) + self.visit(node.else_expr,scope.children[1]) + + @visitor.when(ast.ExprParNode) + def visit(self, node: ast.ExprParNode, scope: Scope): + self.visit(node.expr, scope) + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode, scope: Scope): + self.visit(node.expr, scope) + # for item in diff --git a/src/utils/utils/inference.py b/src/utils/utils/inference.py new file mode 100644 index 000000000..94f62cd3e --- /dev/null +++ b/src/utils/utils/inference.py @@ -0,0 +1,714 @@ +from attr import attrib +from .semantic import Attribute, Method, Type +from .semantic import Context, Scope +from .semantic import SemanticError, ErrorType +import utils.ast_nodes as ast +import utils.visitor as visitor +from collections import deque + + +def add_ext(d, node1, node2): + try: + d[node1].append(node2) + except KeyError: + d[node1] = [node2] + if node2 not in d: + d[node2] = [] + + +class InferenceTypeChecker: + def __init__(self, context: Context, errors, program): + self.context: Context = context + self.current_type: Type = None + self.current_method: Method = None + self.errors = errors + self.extension = {} + self.dfunc = { + 'attr': self.update_attr, + 'var': self.update_var, + 'param': self.update_param, + 'ret': self.update_ret, + 'base': self.update_base, + 'join': self.update_join + } + self.dfunc_type = { + 'attr': self.get_tuple_type_attr, + 'var': self.get_tuple_type_var, + 'param': self.get_tuple_type_param, + 'ret': self.get_tuple_type_ret, + 'base': self.get_tuple_type_base, + 'join': self.get_tuple_type_join + } + self.program = program + + @visitor.on('node') + def visit(self, node, scope): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode, scope: Scope): + if scope is None: + scope = Scope() + + node.scope = scope + + for item in node.class_list: + self.visit(item, scope.create_child()) + + self.update() + ReplaceTypes(self.context, self.errors, self.program).visit(node, scope) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode, scope: Scope): + node.scope = scope + + self.current_type = self.context.get_type(node.name) + methods = [ + item for item in node.data + if isinstance(item, ast.MethodDecNode) + ] + attributes = [ + item for item in node.data + if isinstance(item, ast.AttributeDecNode) + ] + for att in attributes: + self.visit(att, scope) + for meth in methods: + self.visit(meth, scope.create_child()) + + # for item in node.data: + # if isinstance(item, ast.MethodDecNode): + # self.visit(item, scope.create_child()) + # elif isinstance(item, ast.AttributeDecNode): + # self.visit(item, scope) + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode, scope: Scope): + node.scope = scope + + var_type = self.context.get_type(node._type) + var_attr_info = scope.define_variable(node.name, var_type) # scope + tuple_var = 'var', var_attr_info + exp = self.visit(node.expr, scope.create_child()) if node.expr is not None else None + + if node._type == "AUTO_TYPE": + attr_type = self.context.get_type(node._type) + attr = self.current_type.attributes[node.name] + tuple_attr = 'attr', attr + if exp is not None: + add_ext(self.extension, exp, tuple_var) + add_ext(self.extension, exp, tuple_attr) + # si conocemos el tipo de uno, sabremos el tipo del otro + add_ext(self.extension, tuple_attr, tuple_var) + add_ext(self.extension, tuple_var, tuple_attr) + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode, scope: Scope): + node.scope = scope + + self.current_method = self.current_type.get_method(node.name) + scope.define_variable('self', self.current_type)#define self + params_name = self.current_method.param_names + params_type = self.current_method.param_types + for i, param_name in enumerate(params_name): + param_type = params_type[i] + param_var_scope = scope.define_variable(param_name, param_type) + tuple_var = 'var', param_var_scope + + if param_type.name == "AUTO_TYPE": + tuple_param = 'param', self.current_method, i + add_ext(self.extension, tuple_var, tuple_param) + add_ext(self.extension, tuple_param, tuple_var) + body_exp = self.visit(node.expr, scope) + + if self.current_method.return_type.name == "AUTO_TYPE": + tuple_ret = 'ret', self.current_method + add_ext(self.extension, body_exp, tuple_ret) + + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode, scope: Scope): + node.scope = scope + + self.visit(node.cond, scope) + self.visit(node.data, scope.create_child()) + return ('base', self.context.get_type("Object")) + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode, scope: Scope): + node.scope = scope + + for dec in node.declaration: + id_var, type_var, expr = dec + try: + var_info = scope.define_variable( + id_var, self.context.get_type(type_var)) + except SemanticError: + var_info = scope.define_variable(id_var, ErrorType()) + + tuple_var = 'var', var_info + expr_node = self.visit( + expr, scope.create_child()) if expr is not None else None + if var_info.type.name == "AUTO_TYPE": + if expr_node is not None: + add_ext(self.extension, expr_node, tuple_var) + if expr_node[1].name == "AUTO_TYPE": + add_ext(self.extension, tuple_var, expr_node) + else: + add_ext(self.extension, tuple_var, []) + elif expr_node is not None and expr_node == "AUTO_TYPE": + add_ext(self.extension, expr_node, tuple_var) + + exp_body = self.visit(node.expr, scope.create_child()) + return exp_body + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode, scope: Scope): + node.scope = scope + + var = scope.find_variable(node.idx) + tuple_var = 'var', var + expr = self.visit(node.expr, scope.create_child()) + + if var is not None: # esta definida + if expr[0]=='join': + exp_type = self.context.get_type('AUTO_TYPE') + else: + exp_type = self.dfunc_type[expr[0]](expr) + if var.type.name == "AUTO_TYPE" and exp_type != "AUTO_TYPE": + add_ext(self.extension, expr, tuple_var) + elif var.type.name != "AUTO_TYPE" and exp_type== "AUTO_TYPE": + tuple_base = 'base', var.types + add_ext(self.extension, tuple_base, expr) + elif var.type.name == "AUTO_TYPE" and exp_type == "AUTO_TYPE": + add_ext(self.extension, tuple_var, expr) + add_ext(self.extension, expr, tuple_var) + return expr + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode, scope: Scope): + node.scope = scope + + if_ = self.visit(node.if_expr,scope) + + add_ext(self.extension,('base', self.context.get_type('Bool')), if_) + + then_ = self.visit(node.then_expr,scope.create_child()) + if then_[0] == 'join': + self.extension[then_] = [] + + else_ = self.visit(node.else_expr,scope.create_child()) + if else_ is not None and else_[0] == 'join': + self.extension[else_] = [] + + tuple_join = 'join', then_, else_ + return tuple_join + # if then_[0]=='base' and else_[0] == 'base' : + # return 'base',then_[1].common_ancestor(else_[1]) + #return 'base', self.context.get_type('Object') + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode, scope: Scope): + node.scope = scope + + self.visit(node.expr, scope) + for id_,type_,exp_ in node.params: + try: + var_info = scope.define_variable(id_,self.context.get_type(type_)) + self.visit(exp_,scope.create_child()) + except SemanticError: + pass + + + defined_nodes = [] + not_defined_nodes = [] + case_nodes = [] + for _id, _type, _expr in node.params: + new_scope = scope.create_child() + + try: + case_type = self.context.get_type(_type) + var_info = new_scope.define_variable(_id, case_type) + # self.variables[var_info] = VariableInfoNode(var_info.type, var_info) + except SemanticError: + pass + + case_node = self.visit(_expr, new_scope) + if isinstance(case_node, ast.AtomicNode): + defined_nodes.append(case_node) + else: + not_defined_nodes.append(case_node) + case_nodes.append(case_node) + + return 'base', Type.multi_join([e[1] for e in case_nodes if e is not None]) + + # return 'base', self.context.get_type('Object') + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode, scope: Scope): + node.scope = scope + + final_exp = None + current_scope = scope.create_child() + + for expr in node.expr: + final_exp = self.visit(expr, current_scope) + return final_exp + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode, scope: Scope): + node.scope = scope + + if node.atom is None: + node.atom = ast.VariableNode('self') + inst = self.visit(node.atom, scope) + + if inst is not None: + type_inst = self.dfunc_type[inst[0]](inst) + if inst[0] == 'base' and node.idx in set(m.name for m, _ in type_inst.all_methods(True)): + method = type_inst.get_method(node.idx) + + counter = min(len(node.exprlist), len(method.param_types)) + for i, exp in enumerate(node.exprlist): + if i == counter: break + arg = self.visit(exp, scope) + tuple_param = 'param', method, i + param_type = method.param_types[i] + if arg is not None: + if arg[0] == 'base': + if param_type.name == 'AUTO_TYPE': + add_ext(self.extension, arg, tuple_param) + else: + if method.param_types[i].name != 'AUTO_TYPE': + add_ext(self.extension, tuple_param, arg) + else: + add_ext(self.extension, arg, tuple_param) + add_ext(self.extension, tuple_param, arg) + if method.return_type.name == 'AUTO_TYPE': + return 'ret', method + ret_type = method.return_type if method.return_type != 'SELF_TYPE' else type_inst + return 'base', ret_type + + for arg in node.exprlist: + self.visit(arg, scope) + return 'base', self.context.get_type('Object') + + @visitor.when(ast.MinusNode) + def visit(self, node: ast.MinusNode, scope: Scope): + node.scope = scope + + return self.visit_op_int(node, scope) + + @visitor.when(ast.PlusNode) + def visit(self, node: ast.PlusNode, scope: Scope): + node.scope = scope + + return self.visit_op_int(node, scope) + + @visitor.when(ast.DivNode) + def visit(self, node: ast.DivNode, scope: Scope): + node.scope = scope + + int_type = self.context.get_type('Int') + return self.visit_op_int(node, scope) + + @visitor.when(ast.TimesNode) + def visit(self, node: ast.TimesNode, scope: Scope): + node.scope = scope + + int_type = self.context.get_type('Int') + return self.visit_op_int(node, scope) + + @visitor.when(ast.LessNode) + def visit(self, node: ast.LessNode, scope: Scope): + node.scope = scope + + int_type = self.context.get_type('Int') + bool_type = self.context.get_type('Bool') + return self.visit_op_bool(node, scope) + + @visitor.when(ast.LessEqualNode) + def visit(self, node: ast.LessEqualNode, scope: Scope): + node.scope = scope + + return self.visit_op_bool(node, scope) + + @visitor.when(ast.EqualNode) + def visit(self, node: ast.EqualNode, scope: Scope): + node.scope = scope + + self.visit(node.left, scope) + self.visit(node.right, scope) + return 'base', self.context.get_type('Bool') + + @visitor.when(ast.StringNode) + def visit(self, node: ast.StringNode, scope: Scope): + node.scope = scope + + return 'base', self.context.get_type('String') + + @visitor.when(ast.NumberNode) + def visit(self, node: ast.NumberNode, scope: Scope): + node.scope = scope + + return 'base', self.context.get_type('Int') + + @visitor.when(ast.BooleanNode) + def visit(self, node: ast.BooleanNode, scope: Scope): + node.scope = scope + + return 'base', self.context.get_type('Bool') + + @visitor.when(ast.VariableNode) + def visit(self, node: ast.VariableNode, scope: Scope): + node.scope = scope + + var_info = scope.find_variable(node.lex) + if var_info is not None: + if var_info.type.name == 'AUTO_TYPE': + return 'var', var_info + else: + return 'base', var_info.type + + @visitor.when(ast.ComplementNode) + def visit(self, node: ast.ComplementNode, scope: Scope): + node.scope = scope + + self.visit(node.expr, scope) + return 'base', self.context.get_type('Int') + + @visitor.when(ast.NegationNode) + def visit(self, node: ast.NegationNode, scope: Scope): + node.scope = scope + + self.visit(node.expr, scope) + return 'base', self.context.get_type('Bool') + + @visitor.when(ast.IsVoidNode) + def visit(self, node: ast.IsVoidNode, scope: Scope): + node.scope = scope + + self.visit(node.expr, scope) + return 'base', self.context.get_type('Bool') + + @visitor.when(ast.NewNode) + def visit(self, node: ast.NewNode, scope: Scope): + node.scope = scope + + if node.type in self.context.types: + return 'base', self.context.get_type(node.type) + return 'base', self.context.get_type('Object') + + @visitor.when(ast.ExprParNode) + def visit(self, node: ast.ExprParNode, scope: Scope): + node.scope = scope + + return self.visit(node.expr, scope) + + def visit_op_int(self, node: ast.BinaryNode, scope: Scope): + node.scope = scope + + left_op = self.visit(node.left, scope) + right_op = self.visit(node.right, scope) + + if left_op is not None and left_op[0] != 'base': + add_ext(self.extension, ('base', self.context.get_type('Int')), left_op) + + if right_op is not None and right_op[0] != 'base': + add_ext(self.extension, ('base', self.context.get_type('Int')), right_op) + + return 'base', self.context.get_type('Int') + + def visit_op_bool(self, node: ast.BinaryNode, scope: Scope): + node.scope = scope + + left_op = self.visit(node.left, scope) + right_op = self.visit(node.right, scope) + + if left_op is not None and left_op[0] != 'base': + add_ext(self.extension, ('base', self.context.get_type('Int')), left_op) + + if right_op is not None and right_op[0] != 'base': + add_ext(self.extension, ('base', self.context.get_type('Int')), right_op) + + return 'base', self.context.get_type('Bool') + + def update(self): + for item in self.extension: + pass + + q = deque(e for e in self.extension if e is not None and e[0] == 'base') + visited_base = set() + while len(q) > 0: + base = q.popleft() + if base in visited_base: + continue + self.update_visit(base, visited_base) + + q = deque(j for j in self.extension if j is not None and j[0] == 'join') + visited_join = set() + while len(q) > 0: + join = q.popleft() + if join in visited_join: + continue + self.update_visit_join(join,visited_join) + + for t in self.extension: + if t not in visited_base and t not in visited_join and t is not None: + self.dfunc[t[0]](t, self.context.get_type('Object')) + + def update_visit(self, base, visited): + new_type = self.dfunc_type[base[0]](base) + q = deque([base]) + while q: + current = q.popleft() + if current not in visited and current is not None: + visited.add(current) + self.dfunc[current[0]](current, new_type) + q.extend(self.extension[current]) + + def update_visit_join(self,join,visited): + then_type = join[1][1].type if join[1][0] == 'var' else join[1][1] + else_type = join[2][1].type if join[2][0] == 'var' else join[2][1] + if join[1][0] == 'join': + then_type = self.update_visit_join(join[1],visited) + visited.add(join[1]) + if join[2][0] == 'join': + else_type = self.update_visit_join(join[2], visited) + visited.add(join[2]) + join_type = then_type.common_ancestor(else_type) + q = deque([join]) + while q: + current = q.popleft() + if current not in visited: + visited.add(current) + self.dfunc[current[0]](current,join_type) + q.extend(self.extension[current]) + return join_type + + def update_attr(self, t, new_type): + t[1].type = new_type + + def get_tuple_type_attr(self, t): + return t[1].type + + def update_var(self, t, new_type): + t[1].type = new_type + + def get_tuple_type_var(self, t): + return t[1].type + + def update_param(self, t, new_type): + method = t[1] + i_param = t[2] + method.param_types[i_param] = new_type + + def update_join(self,t,new_type): + pass + + def get_tuple_type_join(self, t): + pass + + def get_tuple_type_param(self, t): + return t[1].params_type[t[2]] + + def update_ret(self, t, new_type): + method = t[1] + method.return_type = new_type + + def get_tuple_type_ret(self, t): + return t[1].return_type + + def update_base(self, t, new_type): + pass + + def get_tuple_type_base(self, t): + return t[1] +class ReplaceTypes: + def __init__(self, context: Context, errors, program): + self.context: Context = context + self.current_type: Type = None + self.current_method: Method = None + self.errors = errors + self.program = program + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + + @visitor.on('node') + def visit(self, node, scope): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode, scope: Scope): + scope = node.scope + + for i, c in enumerate(node.class_list): + self.visit(c, scope.children[i]) + return scope + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode, scope: Scope): + scope = node.scope + + self.current_type = self.context.get_type(node.name) + + methods = [ + item for item in node.data + if isinstance(item, ast.MethodDecNode) + ] + attributes = [ + item for item in node.data + if isinstance(item, ast.AttributeDecNode) + ] + i_index = 0 + for att in attributes: + if att.expr is not None: + att.index = i_index + i_index += 1 + self.visit(att, scope) + for i_index, meth in enumerate(methods, start=i_index): + self.visit(meth, scope.children[i_index]) + + # i_index = 0 + # for item in node.data: + # if isinstance(item, ast.MethodDecNode): + # self.visit(item, scope.children[i_index]) + # i_index += 1 + # elif isinstance(item, ast.AttributeDecNode): + # if item.expr is not None: + # item.index = i_index + # i_index += 1 + # self.visit(item, scope) + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode, scope: Scope): + scope = node.scope + + attr_type = self.context.get_type(node._type) + attr_info = scope.find_variable(node.name) + if node.expr is not None: + self.visit(node.expr, scope.children[node.index]) + if attr_type.name == "AUTO_TYPE": + if attr_info.type.name == "AUTO_TYPE": + node._type = 'Object' + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - InferenceError: Cannot infer type for attribute "{node.name}".') + else: + node._type = attr_info.type.name + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode, scope: Scope): + scope = node.scope + + self.current_method = self.current_type.get_method(node.name) + for i, param in enumerate(node.params): + var_info = scope.find_variable(param.name) + if var_info is not None: + if var_info.type.name == "AUTO_TYPE": + node.type = 'Object' + self.errors.append(f'({node.p_types_pos[i][0]}, {node.p_types_pos[i][0]}) - InferenceError: Cannot infer type for attribute "{var_info.name}".') + else: + node.params[i] = ast.ParamNode(param.name, var_info.type.name) + self.visit(node.expr, scope) + + if node.type == "AUTO_TYPE": + if self.current_method.return_type.name == "AUTO_TYPE": + node.type = 'Object' + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - InferenceError: Cannot infer type for attribute "{node.name}".') + else: + node.type = self.current_method.return_type.name + + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode, scope: Scope): + scope = node.scope + + self.visit(node.cond, scope) + self.visit(node.data, scope.children[0]) + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode, scope: Scope): + scope = node.scope + + i_child = 0 + for i, dec in enumerate(node.declaration): + id_var, type_var, expr = dec + var_info = scope.find_variable(id_var) + if expr is not None: + self.visit(expr, scope.children[i_child]) + i_child += 1 + if type_var == "AUTO_TYPE": + if var_info.type.name == "AUTO_TYPE": + node.declaration[i] = (id_var, 'Object', expr) + self.errors.append(f'({node.dec_types_pos[i][0]}, {node.dec_types_pos[i][1]}) - InferenceError: Cannot infer type for attribute "{id_var}".') + node.declaration[i] = (id_var, var_info.type.name, expr) + self.visit(node.expr, scope.children[i_child]) + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode, scope: Scope): + scope = node.scope + + self.visit(node.expr, scope.children[0]) + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode, scope: Scope): + scope = node.scope + + self.visit(node.atom, scope) + for expr in node.exprlist: + self.visit(expr, scope) + + @visitor.when(ast.BinaryNode) + def visit(self, node: ast.BinaryNode, scope: Scope): + scope = node.scope + + self.visit(node.left, scope) + self.visit(node.right, scope) + + @visitor.when(ast.UnaryNode) + def visit(self, node: ast.UnaryNode, scope: Scope): + scope = node.scope + + self.visit(node.expr, scope) + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode, scope: Scope): + scope = node.scope + + current_scope = scope.children[0] + for expr in node.expr: + self.visit(expr, current_scope) + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode, scope: Scope): + scope = node.scope + + self.visit(node.if_expr,scope) + self.visit(node.then_expr,scope.children[0]) + self.visit(node.else_expr,scope.children[1]) + + @visitor.when(ast.ExprParNode) + def visit(self, node: ast.ExprParNode, scope: Scope): + scope = node.scope + + self.visit(node.expr, scope) + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode, scope: Scope): + scope = node.scope + + self.visit(node.expr, scope) + # for item in + + for i, (_, _, _expr) in enumerate(node.params): + self.visit(_expr, scope.children[i]) + + @visitor.when(ast.ParenthesisNode) + def visit(self, node: ast.ParenthesisNode, scope: Scope): + scope = node.scope + self.visit(node.expr, scope) + \ No newline at end of file diff --git a/src/utils/utils/instance.py b/src/utils/utils/instance.py new file mode 100644 index 000000000..f9d9ceb7c --- /dev/null +++ b/src/utils/utils/instance.py @@ -0,0 +1,396 @@ +from .semantic import Type, Context, Scope, Method, SemanticError +import utils.ast_nodes as ast +import utils.visitor as visitor + + +class ExecutionError(Exception): + @property + def text(self): + return self.args[0] + + +class ExecutionObject: + def __init__(self, type: Type, value=None): + if value: + self.value = id(self) + + self.type = type + self.value = value + self.attribute_instances = {} + + def __str__(self): + return f'{self.type.name} -> {self.value}' + + def set_attribute(self, idx, instance): + self.attribute_instances[idx] = instance + + def get_attribute(self, idx): + try: + return self.attribute_instances[idx] + except KeyError: + raise ExecutionError(f'La instancia \'{idx}\' no existe.') + + def get_method(self, name: str): + return self.type.get_method(name) + +class VoidObject(ExecutionObject): + def __init__(self): + super(VoidObject, self).__init__(None, None) + + def __eq__(self, obj): + return isinstance(obj, VoidObject) + + +# Default Methods + +def abort(obj, context): + print('Terminando programa...') + exit() + + +def copy(obj, context): + x_copy = ExecutionObject(obj.type, obj.value if obj.type.name in ('Int', 'String', 'Bool') else None) + x_copy.attribute_values = obj.attribute_values + return x_copy + + +def type_name(obj, context): + return ExecutionObject(context.get_type('String'), obj.type.name) + + +def out_string(obj, s, context): + print(s.value, end='') + return obj + + +def out_int(obj, s, context): + print(s.value, end='') + return obj + + +def in_string(obj, context): + return ExecutionObject(context.get_type('String'), str(input())) + + +def in_int(obj, context): + return ExecutionObject(context.get_type('Int'), int(input())) + + +def length(obj, context): + return ExecutionObject(context.get_type('Int'), len(obj.value)) + + +def concat(obj, s, context): + return ExecutionObject(context.get_type('String'), obj.value + s.value) + + +def substr(obj, i, l, context): + return ExecutionObject(context.get_type('String'), obj.value[i: i + l]) + + +methods = { + 'Object': (['abort', 'type_name', 'copy'], [abort, type_name, copy]), + 'IO': (['out_string', 'out_int', 'in_string', 'in_int'], [out_string, out_int, in_string, in_int]), + 'String': (['lenght', 'concat', 'substr'], [length, concat, substr]) +} + +class Execution: + def __init__(self, context: Context): + self.context = context + self.current_type: Type = None + self.current_instance: ExecutionObject = None + self.stack = [] + + @visitor.on('node') + def visit(self, node, scope): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode, scope: Scope): + if scope is None: + scope = Scope() + + for p in node.class_list: + self.visit(p, None) + + try: + main = self.context.get_type('Main') + main.get_method('main') + except SemanticError as e: + print(e.text) + exit() + + self.visit(ast.MethodCallNode('main', [], ast.NewNode('Main')), scope) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode, scope: Scope): + self.current_type = self.context.get_type(node.name) + for item in node.data: + self.visit(item, None) + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode, scope: Scope): + self.current_type.get_method(node.name).expr = node.expr + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode, scope: Scope): + + if node.expr is None: + if node._type == 'Int': + node.expr = ast.NumberNode('0') + if node._type == 'String': + node.expr = ast.StringNode('') + if node._type == 'Bool': + node.expr = ast.BooleanNode('false') + + try: + self.current_type.get_attribute(node.name).expr = node.expr + except ExecutionError as e: + print(e.text) + exit() + + # Expressions + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode, scope: Scope): + cond = self.visit(node.cond, scope).value + while cond: + self.visit(node.data, scope.create_child()) + cond = self.visit(node.cond, scope).value + return VoidObject() + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode, scope: Scope): + for id_, _, expr_ in node.declaration: + instance = VoidObject() if expr_ is None else \ + self.visit(expr_, scope.create_child()) + scope.define_variable(id_, instance.type).instance = instance + + return self.visit(node.expr, scope.create_child()) + + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode, scope: Scope): + variable_info = scope.find_variable(node.idx) + if variable_info is None: + self.current_instance.set_attribute(node.idx, self.visit(node.expr, scope)) + try: + return self.current_instance.get_attribute(node.idx) + except ExecutionError as e: + print(e.text) + exit() + + variable_info.instance = self.visit(node.expr, scope) + return variable_info.instance + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode, scope: Scope): + sc = scope.create_child() + inst = None + for expr in node.expr: + inst = self.visit(expr, sc) + return inst + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode, scope: Scope): + if self.visit(node.if_expr, scope).value: + return self.visit(node.then_expr, scope.create_child()) + return self.visit(node.else_expr, scope.create_child()) + + @visitor.when(ast.ParenthesisNode) + def visit(self, node: ast.ParenthesisNode, scope: Scope): + return self.visit(node.expr, scope) + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode, scope: Scope): + expr0 = self.visit(node.expr, scope) + if isinstance(expr0, VoidObject): + raise ExecutionError('La clausula \'Case\' no puede devolver \'Void\'.') + + types = [(pos, self.context.get_type(type_))\ + for pos, (_, type_, _) in enumerate(node.params) \ + if expr0.type.conforms_to(self.context.get_type(type_))] + + if not types: + raise ExecutionError('Ninguno de los tipos propuestos en la clausula \'Case\' coinciden con el tipo de la expresión.') + + i, type_ = types[0] + for i_, t in enumerate(types): + if t[1].conforms_to(type_): + i, type_ = i_, t[1] + + sc = scope.create_child() + name, typex, expr = node.params[i] + sc.define_variable(name, self.context.get_type(typex)).instance = expr0 + return self.visit(expr, sc) + + @visitor.when(ast.IsVoidNode) + def visit(self, node: ast.IsVoidNode, scope: Scope): + return ExecutionObject(self.context.get_type('Bool'), \ + isinstance(self.visit(node.expr, scope), VoidObject)) + + # Arithmetic and Boolean Expressions + @visitor.when(ast.PlusNode) + def visit(self, node: ast.PlusNode, scope: Scope): + left = self.visit(node.left, scope).value + right = self.visit(node.right, scope).value + if not isinstance(left, int) or not isinstance(right, int): + raise ExecutionError( + 'Los terminos de la operación \'+\' deben ser enteros (int).') + return ExecutionObject(self.context.get_type('Int'), left + right) + + @visitor.when(ast.MinusNode) + def visit(self, node: ast.MinusNode, scope: Scope): + left = self.visit(node.left, scope).value + right = self.visit(node.right, scope).value + if not isinstance(left, int) or not isinstance(right, int): + raise ExecutionError( + 'Los terminos de la operación \'-\' deben ser enteros (int).') + return ExecutionObject(self.context.get_type('Int'), left - right) + + @visitor.when(ast.TimesNode) + def visit(self, node: ast.TimesNode, scope: Scope): + left = self.visit(node.left, scope).value + right = self.visit(node.right, scope).value + if not isinstance(left, int) or not isinstance(right, int): + raise ExecutionError( + 'Los terminos de la operación \'*\' deben ser enteros (int).') + return ExecutionObject(self.context.get_type('Int'), left * right) + + @visitor.when(ast.DivNode) + def visit(self, node: ast.DivNode, scope: Scope): + left = self.visit(node.left, scope).value + right = self.visit(node.right, scope).value + if right == 0: + raise ZeroDivisionError() + if not isinstance(left, int) or not isinstance(right, int): + raise ExecutionError( + 'Los terminos de la operación \'/\' deben ser enteros (int).') + return ExecutionObject(self.context.get_type('Int'), left / right) + + @visitor.when(ast.LessNode) + def visit(self, node: ast.LessNode, scope: Scope): + left = self.visit(node.left, scope).value + right = self.visit(node.right, scope).value + if not isinstance(left, int) or not isinstance(right, int): + raise ExecutionError('Los terminos de la operación \'<\' deben ser enteros (int).') + return ExecutionObject(self.context.get_type('Bool'), left < right) + + @visitor.when(ast.LessEqualNode) + def visit(self, node: ast.LessEqualNode, scope: Scope): + left = self.visit(node.left, scope).value + right = self.visit(node.right, scope).value + + if not isinstance(left, int) or not isinstance(right, int): + raise ExecutionError( + 'Los terminos de la operación \'<=\' deben ser enteros (int).') + return ExecutionObject(self.context.get_type('Bool'), left <= right) + + @visitor.when(ast.EqualNode) + def visit(self, node: ast.EqualNode, scope: Scope): + left = self.visit(node.left, scope).value + right = self.visit(node.right, scope).value + + if type(left) != type(right): + raise ExecutionError( + 'Los terminos de la operación \'=\' deben tener el mismo tipo.') + return ExecutionObject(self.context.get_type('Bool'), left == right) + + # Unary Expressions + @visitor.when(ast.ComplementNode) + def visit(self, node: ast.ComplementNode, scope: Scope): + return ExecutionObject(self.context.get_type('Int'), ~ self.visit(node.expr).value) + + @visitor.when(ast.NegationNode) + def visit(self, node: ast.NegationNode, scope: Scope): + return ExecutionObject(self.context.get_type('Bool'), not self.visit(node.expr, scope).value) + + # Atomic Expressions + @visitor.when(ast.NumberNode) + def visit(self, node: ast.NumberNode, scope: Scope): + return ExecutionObject(self.context.get_type('Int'), int(node.lex)) + + @visitor.when(ast.StringNode) + def visit(self, node: ast.StringNode, scope: Scope): + return ExecutionObject(self.context.get_type('String'), str(node.lex[1:-1]).replace('\\n', '\n')) + + @visitor.when(ast.BooleanNode) + def visit(self, node: ast.BooleanNode, scope: Scope): + return ExecutionObject(self.context.get_type('Bool'), node.lex == 'true') + + @visitor.when(ast.VariableNode) + def visit(self, node: ast.VariableNode, scope: Scope): + if node.lex == 'i': + 'i' + variable_info = scope.find_variable(node.lex) + if variable_info is not None: + return variable_info.instance + else: + try: + return self.current_instance.get_attribute(node.lex) + except ExecutionError as e: + print(e.text) + exit() + + @visitor.when(ast.NewNode) + def visit(self, node: ast.NewNode, scope: Scope): + value = None + if node.type == 'Int': + value = 0 + elif node.type == 'String': + value = '' + elif node.type == 'Bool': + value = False + + inst = ExecutionObject(self.context.get_type(node.type), value) + self.stack.append(self.current_instance) + self.current_instance = inst + + fake_sc = Scope() + for attr, _ in inst.type.all_attributes(): + attr_instance = self.visit(attr.expr, fake_sc) if attr.expr is not None else VoidObject() + fake_sc.define_variable(attr.name, attr.type).instance = attr_instance + self.current_instance.set_attribute(attr.name, attr_instance) + self.current_instance = self.stack.pop() + return inst + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode, scope: Scope): + + if not node.atom: + node.atom = ast.NewNode(self.current_type.name) + + obj_inst = self.visit(node.atom, scope) + + if isinstance(obj_inst, VoidObject): + raise ExecutionError('El objeto referenciado no es una instancia de Objeto.') + + + if obj_inst.type.conforms_to(self.context.get_type('Object')) and node.idx in methods['Object'][0]: + args = (obj_inst,) + tuple(self.visit(arg, scope) for arg in node.exprlist) + (self.context,) + i = methods['Object'][0].index(node.idx) + return methods['Object'][1][i](*args) + + if obj_inst.type.conforms_to(self.context.get_type('IO')) and node.idx in methods['IO'][0]: + args = (obj_inst,) + tuple(self.visit(arg, scope) for arg in node.exprlist) + (self.context,) + i = methods['IO'][0].index(node.idx) + return methods['IO'][1][i](*args) + + if obj_inst.type.conforms_to(self.context.get_type('String')) and node.idx in methods['String'][0]: + args = (obj_inst,) + tuple(self.visit(arg, scope) for arg in node.exprlist) + (self.context,) + i = methods['String'][0].index(node.idx) + return methods['String'][1][i](*args) + + new_scope = Scope() + + method = obj_inst.get_method(node.idx) + new_scope.define_variable( + 'self', obj_inst.type).instance = obj_inst + for name, typex, arg in zip(method.param_names, method.param_types, node.exprlist): + new_scope.define_variable( + name, typex).instance = self.visit(arg, scope) + + self.stack.append(self.current_instance) + self.current_instance = obj_inst + output = self.visit(method.expr, new_scope) + self.current_instance = self.stack.pop() + return output diff --git a/src/utils/utils/semantic.py b/src/utils/utils/semantic.py new file mode 100644 index 000000000..88b18b54a --- /dev/null +++ b/src/utils/utils/semantic.py @@ -0,0 +1,351 @@ +import itertools as itt +from collections import OrderedDict + + +class SemanticError(Exception): + @property + def text(self): + return self.args[0] + + +class Attribute: + def __init__(self, name, typex): + self.name = name + self.type = typex + + def __str__(self): + return f"[attrib] {self.name} : {self.type.name};" + + def __repr__(self): + return str(self) + + +class Method: + def __init__(self, name, param_names, params_types, return_type): + self.name: str = name + self.param_names = param_names + self.param_types = params_types + self.return_type= return_type + + def __str__(self): + params = ", ".join( + f"{n}: {t.name}" for n, t in zip(self.param_names, self.param_types) + ) + return f"[method] {self.name}({params}): {self.return_type.name};" + + def __eq__(self, other): + return ( + other.name == self.name + and other.return_type == self.return_type + and tuple(other.param_types) == tuple(self.param_types) + ) + + +class Type: + def __init__(self, name: str): + self.name: str = name + self.attributes_dict = OrderedDict() + self.methods_dict = OrderedDict() + self.parent = None + + @property + def attributes(self): + return [x for _, x in self.attributes_dict.items()] + + @property + def methods(self): + return [x for _, x in self.methods_dict.items()] + + def set_parent(self, parent: "Type"): + if self.parent is not None: + raise SemanticError(f"Parent type is already set for {self.name}.") + self.parent = parent + + def get_attribute(self, name: str, owner: bool = False): + try: + return ( + self.attributes_dict[name] + if not owner + else (self.attributes_dict[name], self) + ) + except KeyError: + if self.parent is None: + raise SemanticError( + f'Attribute "{name}" is not defined in {self.name}.' + ) + try: + return self.parent.get_attribute(name, owner) + except SemanticError: + raise SemanticError( + f'Attribute "{name}" is not defined in {self.name}.' + ) + + def define_attribute(self, name, typex): + try: + self.get_attribute(name) + except SemanticError: + attribute = Attribute(name, typex) + self.attributes_dict[name] = attribute + return attribute + else: + raise SemanticError( + f'Attribute "{name}" is already defined in {self.name}.' + ) + + def contains_attribute(self, name: str): + return ( + name in self.attributes_dict + or self.parent is not None + and self.parent.contains_attribute(name) + ) + + def get_method(self, name: str, owner: bool = False): + try: + return ( + self.methods_dict[name] + if not owner + else (self.methods_dict[name], self) + ) + except KeyError: + if self.parent is None: + raise SemanticError(f'Method "{name}" is not defined in {self.name}.') + try: + return self.parent.get_method(name, owner) + except SemanticError: + raise SemanticError(f'Method "{name}" is not defined in {self.name}.') + + def define_method( self, name: str, param_names, param_types, return_type): + if name in self.methods_dict: + raise SemanticError(f'Method "{name}" already defined in {self.name}') + + method = Method(name, param_names, param_types, return_type) + self.methods_dict[name] = method + return method + + def contains_method(self, name): + return name in self.methods_dict or ( + self.parent is not None and self.parent.contains_method(name) + ) + + def all_attributes(self): + attributes = [] if self.parent is None else self.parent.all_attributes() + attributes += [(x, self) for x in self.attributes] + return attributes + + def all_methods(self): + methods = [] if self.parent is None else self.parent.all_methods() + methods += [(x, self) for x in self.methods] + return methods + + def conforms_to(self, other): + return ( + other.bypass() + or self == other + or self.parent is not None + and self.parent.conforms_to(other) + ) + + def join(self, other): + if isinstance(self, ErrorType): + return other + + if isinstance(other, ErrorType): + return self + + self_ancestors = set(self.get_ancestors()) + + current_type = other + while current_type is not None: + if current_type in self_ancestors: + break + current_type = current_type.parent + return current_type + + @staticmethod + def multi_join(types): + static_type = types[0] + for t in types[1:]: + static_type = static_type.join(t) + return static_type + + def bypass(self): + return False + + def get_ancestors(self) : + if self.parent is None: + return [self] + return [self] + self.parent.get_ancestors() + + def __str__(self): + output = f"type {self.name}" + parent = "" if self.parent is None else f" : {self.parent.name}" + output += parent + output += " {" + output += "\n\t" if self.attributes or self.methods else "" + output += "\n\t".join(str(x) for x in self.attributes) + output += "\n\t" if self.attributes_dict else "" + output += "\n\t".join(str(x) for x in self.methods) + output += "\n" if self.methods_dict else "" + output += "}\n" + return output + + def __repr__(self): + return str(self) + + +class ErrorType(Type): + def __init__(self): + super().__init__("Error") + + def conforms_to(self, other): + return True + + def bypass(self): + return True + + def __eq__(self, other): + return isinstance(other, Type) + + +class VoidType(Type): + def __init__(self): + Type.__init__(self, '') + + def conforms_to(self, other): + raise Exception('Invalid type: void type.') + + def bypass(self): + return True + + def __eq__(self, other): + return isinstance(other, VoidType) + + +class IntType(Type): + def __init__(self): + Type.__init__(self, 'int') + + def __eq__(self, other): + return other.name == self.name or isinstance(other, IntType) + + +class BoolType(Type): + def __init__(self): + Type.__init__(self, 'bool') + + def __eq__(self, other): + return other.name == self.name or isinstance(other, BoolType) + + +class StringType(Type): + def __init__(self, lenght): + self.lenght = lenght + Type.__init__(self, 'string') + + def __eq__(self, other): + return other.name == self.name or isinstance(other, StringType) + + +class Context: + def __init__(self): + self.types = {} + + def create_type(self, name: str): + if name in self.types: + raise SemanticError(f"Type with the same name ({name}) already in context.") + typex = self.types[name] = Type(name) + return typex + + def get_type(self, name: str): + try: + return self.types[name] + except KeyError: + raise SemanticError(f'Type "{name}" is not defined.') + + def __str__(self): + return ( + "{\n\t" + + "\n\t".join(y for x in self.types.values() for y in str(x).split("\n")) + + "\n}" + ) + + def __repr__(self): + return str(self) + + def __iter__(self): + return iter(self.types.values()) + + +class VariableInfo: + def __init__(self, name, var_type): + self.name: str = name + self.type: Type = var_type + + def __str__(self): + return self.name + ": " + self.type.name + + +class Scope: + def __init__(self, parent = None): + self.locals = {} + self.parent = parent + self.children = [] + + def create_child(self) : + child = Scope(self) + self.children.append(child) + return child + + def define_variable(self, var_name: str, var_type: Type): + info = VariableInfo(var_name, var_type) + self.locals[var_name] = info + return info + + def find_variable(self, var_name: str): + try: + return self.locals[var_name] + except KeyError: + return ( + self.parent.find_variable(var_name) if self.parent is not None else None + ) + + def find_all_variables_with_name(self, var_name: str): + vars = [] + scope = self + while scope is not None: + if var_name in scope.locals: + vars.append(scope.locals[var_name]) + + scope = scope.parent + + return vars + + def is_defined(self, var_name): + return self.find_variable(var_name) is not None + + def is_local_variable(self, var_name: str): + return var_name in self.locals + + def clear(self): + self.children = [] + + def scope_to_string(self, tab: int = 0): + s = " " * tab + "{" + for local in self.locals.values(): + s += "\n" + " " * (tab + 1) + f"{local.name}: {local.type.name}" + + s += "\n" + " " * (tab + 1) + f"children ({len(self.children)}): [\n" + + for child in self.children: + s += child.scope_to_string(tab + 2) + ",\n" + + s += "\n" + " " * (tab + 1) + f"]" + + s += "\n" + " " * tab + "}" + return s + + def __len__(self): + return len(self.locals) + + def __str__(self) : + return self.scope_to_string() diff --git a/src/utils/utils/semantic_type_checker.py b/src/utils/utils/semantic_type_checker.py new file mode 100644 index 000000000..838164122 --- /dev/null +++ b/src/utils/utils/semantic_type_checker.py @@ -0,0 +1,1588 @@ +from inspect import Attribute +from typing import Dict, List, Optional, Set, Tuple, Deque +from collections import OrderedDict, deque +from abc import ABC + +import utils.ast_nodes as cool +import utils.errors as err +import utils.visitor as visitor +from utils.semantic import Context, ErrorType, Method, Scope, SemanticError, Type, VariableInfo + + +#### Colector de tipos inicial #### + +class TypeCollector: + def __init__(self, context: Context = Context(), errors: List[str] = []): + self.errors: List[str] = errors + self.context: Context = context + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode): + self.context.create_type("AUTO_TYPE") + self_type = self.context.create_type("SELF_TYPE") + object_type = self.context.create_type("Object") + io_type = self.context.create_type("IO") + string_type = self.context.create_type("String") + int_type = self.context.create_type("Int") + bool_type = self.context.create_type("Bool") + + io_type.set_parent(object_type) + string_type.set_parent(object_type) + int_type.set_parent(object_type) + bool_type.set_parent(object_type) + + object_type.define_method("abort", [], [], object_type) + object_type.define_method("type_name", [], [], string_type) + object_type.define_method("copy", [], [], self_type) + + io_type.define_method("out_string", ["x"], [string_type], self_type) + io_type.define_method("out_int", ["x"], [int_type], self_type) + io_type.define_method("in_string", [], [], string_type) + io_type.define_method("in_int", [], [], int_type) + + string_type.define_method("length", [], [], int_type) + string_type.define_method("concat", ["s"], [string_type], string_type) + string_type.define_method( + "substr", ["i", "l"], [int_type, int_type], string_type + ) + + for declaration in node.class_list: + self.visit(declaration) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode): + try: + self.context.create_type(node.name) + except SemanticError: + self.errors.append( + err.INVALID_REDEFINITION_CLASS % (node.line, node.lexpos, node.name) + ) + + +#### colector de tipos para la herencia #### + +class TypeBuilderForInheritance: + def __init__(self, context: Context, errors: List[str]): + self.context: Context = context + self.current_type: Optional[Type] = None + self.errors: List[str] = errors + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode): + for declaration in node.class_list: + self.visit(declaration) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode): + self.current_type = self.context.get_type(node.name) + + if node.parent is not None: + if node.parent in ("Int", "String", "Bool", "SELF_TYPE"): + line, column = node.parent_position + self.errors.append(err.INVALID_PARENT_TYPE % (line, column, node.name, node.parent)) + + try: + parent_type = self.context.get_type(node.parent) + except SemanticError: + parent_type = self.context.get_type("Object") + line, column = node.parent_position + self.errors.append(err.PARENT_UNDEFINED % (line, column, node.name, node.parent)) + + try: + self.current_type.set_parent(parent_type) + except SemanticError: + self.errors.append(err.PARENT_ALREADY_SET % (node.line, node.lexpos, node.name)) + + else: + try: + self.current_type.set_parent(self.context.get_type("Object")) + except SemanticError: + if node.name not in ("Int", "String", "Bool", "IO", "Object", "SELF_TYPE",): + self.errors.append(err.PARENT_ALREADY_SET % (node.line, node.lexpos, node.name)) + + +#### chequeo de tipos para los features #### + +class TypeBuilderForFeatures: + def __init__(self, context: Context, errors: List[str]): + self.context: Context = context + self.current_type: Optional[Type] = None + self.errors: List[str] = errors + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode): + for declaration in node.class_list: + self.visit(declaration) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode): + self.current_type = self.context.get_type(node.name) + + for feature in node.data: + self.visit(feature) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode): + try: + attr_type = self.context.get_type(node._type) + except SemanticError: + attr_type = ErrorType() + line, column = node.type_position + self.errors.append( + err.UNDEFINED_ATTRIBUTE_TYPE + % (line, column, node._type, node.name, self.current_type.name) + ) + + try: + self.current_type.define_attribute(node.name, attr_type) + except SemanticError: + self.errors.append(err.ATTRIBUTE_ALREADY_DEFINED % (node.line, node.lexpos, node.name, self.current_type.name)) + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode): + param_names = [] + param_types = [] + + for i, (name, _type) in enumerate(node.params): + name, typex = name, _type + param_names.append(name) + try: + param_types.append(self.context.get_type(typex)) + except SemanticError: + param_types.append(ErrorType()) + line, column = node.p_types_pos[i] + self.errors.append( + err.UNDEFINED_PARAM_TYPE + % (line, column, typex, node.name, self.current_type.name) + ) + + try: + return_type = self.context.get_type(node.type) + except SemanticError: + return_type = ErrorType() + line, column = node.r_types_pos + self.errors.append( + err.UNDEFINED_RETURN_TYPE + % (line, column, node.type, node.name, self.current_type.name) + ) + + try: + self.current_type.define_method( + node.name, param_names, param_types, return_type + ) + except SemanticError: + self.errors.append( + err.METHOD_ALREADY_DEFINED + % (node.line, node.lexpos, node.name, self.current_type.name) + ) + + +#### override zone y orden topologico ##### + +def topological_sorting(program_node: cool.ProgramNode, context: Context, errors: List[str]) : + types = context.types + + contains_dependency_errors = False + graph: Dict[str, List[str]] = { + name: [] for name in types if name not in ("SELF_TYPE", "AUTO_TYPE") + } + declarations = {d.name: d for d in program_node.class_list} + + for name, typex in types.items(): + if name in ("Object", "SELF_TYPE", "AUTO_TYPE") or typex.parent is None: + continue + graph[typex.parent.name].append(name) + + visited = set() + stack = ["Object"] + + while stack: + current_name = stack.pop() + + if current_name in visited: + line, column = declarations[current_name].parent_position + errors.append( + err.CYCLIC_DEPENDENCY % (line, column, current_name, current_name) + ) + contains_dependency_errors = True + + visited.add(current_name) + stack += graph[current_name] + + if len(visited) != len(graph): + types_names = set( + x for x in context.types if x not in ("SELF_TYPE", "AUTO_TYPE") + ) + exclude_type_names = types_names - visited + + # Select the last declared class that belongs to the cycle + reference_class = max(exclude_type_names, key=lambda x: declarations[x].line) + line, column = declarations[reference_class].parent_position + errors.append( + err.CYCLIC_DEPENDENCY % (line, column, reference_class, reference_class) + ) + + contains_dependency_errors = True + + return contains_dependency_errors + +class OverriddenMethodChecker: + def __init__(self, context: Context, errors: List[str]): + self.context: Context = context + self.current_type: Optional[Type] = None + self.errors: List[str] = errors + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode): + for declaration in node.class_list: + self.visit(declaration) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode): + self.current_type = self.context.get_type(node.name) + + for feature in node.data: + if isinstance(feature, cool.MethodDecNode): + self.visit(feature) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode): + try: + attribute, owner = self.current_type.parent.get_attribute(node.name) + self.errors.append( + err.ATTRIBUTE_OVERRIDE_ERROR % (attribute.name, owner.name) + ) + except SemanticError: + pass + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode): + # TODO: Change the comparison overriding + current_method = self.current_type.get_method(node.name) + try: + original_method, _ = self.current_type.parent.get_method( + node.name, owner=True + ) + + current_count = len(current_method.param_types) + original_count = len(original_method.param_types) + if current_count != original_count: + line, column = node.line, node.lexpos + self.errors.append( + err.METHOD_OVERRIDE_PARAM_ERROR + % (line, column, node.name, original_count, current_count) + ) + + count = min(original_count, current_count) + for i in range(count): + current_type = current_method.param_types[i].name + original_type = original_method.param_types[i].name + if current_type != original_type: + line, column = node.p_types_pos[i] + self.errors.append( + err.METHOD_OVERRIDE_PARAM_ERROR + % (line, column, node.name, current_type, original_method) + ) + + current_return_type = current_method.return_type.name + original_return_type = original_method.return_type.name + if current_return_type != original_return_type: + line, column = node.r_types_pos + self.errors.append( + err.METHOD_OVERRIDE_RETURN_ERROR + % (line, column, node.name, current_return_type, original_return_type) + ) + except SemanticError: + pass + + +#### grafo de dependencias e inferencia de tipos #### + +class DependencyNode: + type: Type + + def update(self, _type: Type) -> None: + raise NotImplementedError() + + def __repr__(self): + return str(self) + + @property + def is_ready(self): + return True + + +class AtomNode(DependencyNode): + def __init__(self, atom_type: Type): + self.type: Type = atom_type + + def update(self, _type: Type) -> None: + pass + + def __str__(self): + return f"Atom({self.type.name})" + + +class VariableInfoNode(DependencyNode): + def __init__(self, var_type: Type, variable_info: VariableInfo): + self.type: Type = var_type + self.variable_info: VariableInfo = variable_info + + def update(self, _type): + self.type = self.variable_info.type = _type + + def __str__(self): + return f"VarInfo({self.variable_info.name}, {self.type.name})" + + +class AttributeNode(DependencyNode): + def __init__(self, attr_type: Type, attribute: Attribute): + self.type: Type = attr_type + self.attribute: Attribute = attribute + + def update(self, _type: Type) -> None: + self.type = self.attribute.type = _type + + def __str__(self): + return f"Attr({self.attribute.name}, {self.type.name})" + + +class ParameterNode(DependencyNode): + def __init__(self, param_type: Type, method: Method, index: int): + self.type: Type = param_type + self.method: Method = method + self.index: int = index + + def update(self, _type): + self.type = self.method.param_types[self.index] = _type + + def __str__(self): + return f"Param({self.method.name}, {self.index}, {self.type.name})" + + +class ReturnTypeNode(DependencyNode): + def __init__(self, ret_type: Type, method: Method): + self.type: Type = ret_type + self.method: Method = method + + def update(self, _type): + self.type = self.method.return_type = _type + + def __str__(self): + return f"Return({self.method.name}, {self.type.name})" + + +class BranchedNode(DependencyNode, ABC): + branches: List[DependencyNode] = [] + + @property + def is_ready(self) : + return all(x.type.name != "AUTO_TYPE" for x in self.branches) + + +class ConditionalNode(BranchedNode): + def __init__(self, conditional_type, then_branch, else_branch): + self.type = conditional_type + self.branches = [then_branch, else_branch] + + def update(self, _type: Type) : + self.type = _type + + def __str__(self): + return f"ConditionalNode({self.type.name})" + + +class CaseOfNode(BranchedNode): + def __init__(self, _type, branches): + self.type = _type + self.branches = branches + + def update(self, _type: Type) : + self.type = _type + + def __str__(self): + return f"CaseOfNode({self.type.name})" + + +class DependencyGraph: + def __init__(self): + self.dependencies: Dict[DependencyNode, List[DependencyNode]] = OrderedDict() + + def add_node(self, node: DependencyNode): + if node not in self.dependencies: + self.dependencies[node] = [] + + def add_edge(self, node: DependencyNode, other: DependencyNode): + try: + self.dependencies[node].append(other) + except KeyError: + self.dependencies[node] = [other] + self.add_node(other) + + def update_dependencies(self, default_type: Type = None): + queue: Deque[DependencyNode] = deque( + node for node in self.dependencies if isinstance(node, AtomNode) + ) + visited: Set[DependencyNode] = set(queue) + + while queue: + node = queue.popleft() + + if not node.is_ready: + continue + + for adj in self.dependencies[node]: + if adj not in visited: + adj.update(node.type) + visited.add(adj) + if not isinstance(adj, BranchedNode): + queue.append(adj) + + for node in self.dependencies: + if isinstance(node, BranchedNode) and node.is_ready: + node.update(Type.multi_join([x.type for x in node.branches])) + + queue = deque( + node + for node in self.dependencies + if isinstance(node, BranchedNode) and node.type.name != "AUTO_TYPE" + ) + visited.update(queue) + while queue: + node = queue.popleft() + for adj in self.dependencies[node]: + if adj not in visited: + adj.update(node.type) + visited.add(adj) + queue.append(adj) + + if default_type is not None: + for node in self.dependencies: + if node not in visited: + node.update(default_type) + + def __str__(self): + return ( + "{\n\t" + + "\n\t".join(f"{key}: {value}" for key, value in self.dependencies.items()) + + "\n}" + ) + + +class InferenceChecker: + def __init__(self, context, errors): + self.context: Context = context + self.errors: List[str] = errors + self.current_type: Optional[Type] = None + self.current_method: Optional[Method] = None + + self.variables: Dict[VariableInfo, VariableInfoNode] = {} + self.attributes = self.build_attributes_reference(context) + self.methods = self.build_methods_reference(context) + self.graph = DependencyGraph() + + @staticmethod + def build_attributes_reference( + context: Context, + ) -> Dict[Tuple[str, str], AttributeNode]: + attributes = {} + + for typex in context: + for attr in typex.attributes: + attributes[typex.name, attr.name] = AttributeNode(attr.type, attr) + + return attributes + + @staticmethod + def build_methods_reference( + context: Context, + ) -> Dict[Tuple[str, str], Tuple[List[ParameterNode], ReturnTypeNode]]: + methods = {} + + for typex in context: + for method in typex.methods: + methods[typex.name, method.name] = ( + [ + ParameterNode(t, method, i) + for i, t in enumerate(method.param_types) + ], + ReturnTypeNode(method.return_type, method), + ) + + return methods + + @visitor.on("node") + def visit(self, node, scope): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode, scope: Scope = None): + if scope is None: + scope = Scope() + + node.scope = scope + + for item in node.class_list: + self.visit(item, scope.create_child()) + + # print(self.graph, '\n') + self.graph.update_dependencies(default_type=self.context.get_type("Object")) + # print(self.graph, '\n') + InferenceTypeSubstitute(self.context, self.errors).visit(node, scope) + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode, scope: Scope): + node.scope = scope + self.current_type = self.context.get_type(node.name) + + attrs = [ + feature + for feature in node.data + if isinstance(feature, cool.AttributeDecNode) + ] + methods = [ + feature + for feature in node.data + if isinstance(feature, cool.MethodDecNode) + ] + + for attr, attr_owner in self.current_type.all_attributes(): + if attr_owner != self.current_type: + scope.define_variable(attr.name, attr.type) + + for attr in attrs: + self.visit(attr, scope) + + for method in methods: + self.visit(method, scope.create_child()) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode, scope: Scope): + node.scope = scope + if node.name == "self": + if node.expr is not None: + scope.create_child() + return + + scope.define_variable("self", self.current_type) + + # Solve the expression of the attribute + expr_node = (self.visit(node.expr, scope.create_child()) if node.expr is not None else None) + + try: + # Define attribute in the scope + var_info = scope.define_variable(node.name, self.context.get_type(node._type)) + + # Set and get the reference to the variable info node + var_info_node = self.variables[var_info] = VariableInfoNode( + self.context.get_type(node._type), var_info + ) + + if node._type == "AUTO_TYPE": + # Get the reference to the attribute node + attr_node = self.attributes[self.current_type.name, node.name] + + # If the expression node is not None then two edges are creates in the graph + if expr_node is not None: + self.graph.add_edge(expr_node, var_info_node) + self.graph.add_edge(expr_node, attr_node) + + # Finally a cycle of two nodes is created between var_info_node and attr_node + self.graph.add_edge(var_info_node, attr_node) + self.graph.add_edge(attr_node, var_info_node) + except SemanticError: + pass + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode, scope: Scope): + node.scope = scope + self.current_method = self.current_type.get_method(node.name) + + # Define 'self' as a variable in the scope + self_var = scope.define_variable("self", self.current_type) + + # Set the reference of 'self' variable info node + self.variables[self_var] = VariableInfoNode(self.current_type, self_var) + + param_names = self.current_method.param_names + param_types = self.current_method.param_types + + for i, (param_name, param_type) in enumerate(zip(param_names, param_types)): + # Define parameter as local variable in current scope + param_var_info = scope.define_variable(param_name, param_type) + + # Set the reference to the variable info node + param_var_info_node = self.variables[param_var_info] = VariableInfoNode( + param_type, param_var_info + ) + + if param_type.name == "AUTO_TYPE": + # Get the parameter node + parameter_node = self.methods[ + self.current_type.name, self.current_method.name + ][0][i] + + # Create the cycle of two nodes between param_var_info_node and parameter_node + self.graph.add_edge(param_var_info_node, parameter_node) + self.graph.add_edge(parameter_node, param_var_info_node) + + # Solve the body of the method + body_node = self.visit(node.expr, scope) + + if self.current_method.return_type.name == "AUTO_TYPE": + # Get the return type node and add an edge body_node -> return_type_node + return_type_node = self.methods[ + self.current_type.name, self.current_method.name + ][1] + self.graph.add_edge(body_node, return_type_node) + + @visitor.when(cool.LetNode) + def visit(self, node: cool.LetNode, scope: Scope): + node.scope = scope + for _id, _type, _expr in node.declaration: + try: + # Define and get the var_info + var_info = scope.define_variable(_id, self.context.get_type(_type)) + except SemanticError: + var_info = scope.define_variable(_id, ErrorType()) + var_info_node = self.variables[var_info] = VariableInfoNode( + var_info.type, var_info + ) + + expr_node = (self.visit(_expr, scope.create_child()) if _expr is not None else None) + + if var_info.type.name == "AUTO_TYPE": + # Create an edge or add an new node only if it is AutoType + if expr_node is not None: + self.graph.add_edge(expr_node, var_info_node) + if expr_node.type.name == "AUTO_TYPE": + self.graph.add_edge(var_info_node, expr_node) + else: + self.graph.add_node(var_info_node) + elif expr_node is not None and expr_node.type.name == "AUTO_TYPE": + self.graph.add_edge(var_info_node, expr_node) + + return self.visit(node.expr, scope.create_child()) + + @visitor.when(cool.AssignNode) + def visit(self, node: cool.AssignNode, scope: Scope): + node.scope = scope + var_info = scope.find_variable(node.idx) + + expr_node = self.visit(node.expr, scope) + + if var_info is not None: + if expr_node.type.name != "AUTO_TYPE" and var_info.type.name == "AUTO_TYPE": + self.graph.add_edge(expr_node, self.variables[var_info]) + elif ( + var_info.type.name != "AUTO_TYPE" and expr_node.type.name == "AUTO_TYPE" + ): + self.graph.add_edge( + AtomNode(self.context.get_type(var_info.type.name)), expr_node + ) + elif ( + var_info.type.name == "AUTO_TYPE" and expr_node.type.name == "AUTO_TYPE" + ): + # Create a cycle + self.graph.add_edge(expr_node, self.variables[var_info]) + self.graph.add_edge(self.variables[var_info], expr_node) + else: + pass + + return expr_node + + @visitor.when(cool.ExprParNode) + def visit(self, node: cool.ExprParNode, scope: Scope): + scope = node.scope + return self.visit(node.expr, scope) + + + @visitor.when(cool.BlockNode) + def visit(self, node: cool.BlockNode, scope: Scope): + node.scope = scope + result_node = None + for expr in node.expr: + result_node = self.visit(expr, scope) + return result_node + + @visitor.when(cool.ConditionalNode) + def visit(self, node: cool.ConditionalNode, scope: Scope): + node.scope = scope + if_node = self.visit(node.if_expr, scope) + + if if_node is not None and not isinstance(if_node, AtomNode): + self.graph.add_edge(AtomNode(self.context.get_type("Bool")), if_node) + + then_node = self.visit(node.then_expr, scope) + else_node = self.visit(node.else_expr, scope) + + if isinstance(then_node, AtomNode) and isinstance(else_node, AtomNode): + return AtomNode(then_node.type.join(else_node.type)) + + conditional_node = ConditionalNode( + self.context.get_type("AUTO_TYPE"), then_node, else_node + ) + + if then_node is None or else_node is None: + return conditional_node + + if isinstance(then_node, AtomNode) and not isinstance(else_node, AtomNode): + self.graph.add_edge(then_node, else_node) + elif not isinstance(then_node, AtomNode) and isinstance(else_node, AtomNode): + self.graph.add_edge(else_node, then_node) + else: + self.graph.add_edge(then_node, else_node) + self.graph.add_edge(else_node, then_node) + self.graph.add_edge(conditional_node, then_node) + self.graph.add_edge(conditional_node, else_node) + + return conditional_node + + @visitor.when(cool.WhileNode) + def visit(self, node: cool.WhileNode, scope: Scope): + node.scope = scope + self.visit(node.cond, scope) + self.visit(node.data, scope) + return AtomNode(self.context.get_type("Object")) + + @visitor.when(cool.CaseNode) + def visit(self, node: cool.CaseNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + + defined_nodes = [] + not_defined_nodes = [] + case_nodes = [] + for _id, _type, _expr in node.params: + new_scope = scope.create_child() + + try: + case_type = self.context.get_type(_type) + var_info = new_scope.define_variable(_id, case_type) + self.variables[var_info] = VariableInfoNode(var_info.type, var_info) + except SemanticError: + pass + + case_node = self.visit(_expr, new_scope) + if isinstance(case_node, AtomNode): + defined_nodes.append(case_node) + else: + not_defined_nodes.append(case_node) + case_nodes.append(case_node) + + if any(e is not None and e.type.name == "AUTO_TYPE" for e in case_nodes): + if defined_nodes: + t = Type.multi_join([x.type for x in defined_nodes]) + for x in not_defined_nodes: + self.graph.add_edge(AtomNode(t), x) + case_of_node = CaseOfNode(self.context.get_type("AUTO_TYPE"), case_nodes) + self.graph.add_node(case_of_node) + return case_of_node + return AtomNode(Type.multi_join([e.type for e in case_nodes if e is not None])) + + @visitor.when(cool.MethodCallNode) + def visit(self, node: cool.MethodCallNode, scope: Scope): + node.scope = scope + if node.atom is None: + node.atom = cool.VariableNode("self") + obj_node = self.visit(node.atom, scope) + + if isinstance(obj_node, AtomNode) and obj_node.type.contains_method(node.idx): + method, owner = obj_node.type.get_method(node.idx, owner=True) + param_nodes, return_node = self.methods[owner.name, method.name] + + count_of_args = min(len(node.exprlist), len(param_nodes)) + for i in range(count_of_args): + arg = node.exprlist[i] + arg_node = self.visit(arg, scope) + + if arg_node is None: + # Possible error + continue + + if isinstance(arg_node, AtomNode): + if param_nodes[i].type.name == "AUTO_TYPE": + self.graph.add_edge(arg_node, param_nodes[i]) + else: + continue + else: + if param_nodes[i].type.name != "AUTO_TYPE": + self.graph.add_edge(param_nodes[i], arg_node) + else: + self.graph.add_edge(param_nodes[i], arg_node) + self.graph.add_edge(arg_node, param_nodes[i]) + + if return_node.type.name == "AUTO_TYPE": + return return_node + return AtomNode(return_node.type if return_node.type.name != "SELF_TYPE" else obj_node.type) + + for arg in node.exprlist: + self.visit(arg, scope) + return AtomNode(self.context.get_type("Object")) + + @visitor.when(cool.NumberNode) + def visit(self, node: cool.NumberNode, scope: Scope): + node.scope = scope + return AtomNode(self.context.get_type("Int")) + + @visitor.when(cool.StringNode) + def visit(self, node: cool.StringNode, scope: Scope): + node.scope = scope + return AtomNode(self.context.get_type("String")) + + @visitor.when(cool.BooleanNode) + def visit(self, node: cool.BooleanNode, scope: Scope): + node.scope = scope + return AtomNode(self.context.get_type("Bool")) + + @visitor.when(cool.VariableNode) + def visit(self, node: cool.VariableNode, scope: Scope): + node.scope = scope + variable = scope.find_variable(node.lex) + + if variable is not None: + if variable.type.name == "AUTO_TYPE": + return self.variables[variable] + else: + return AtomNode(variable.type) + else: + return None + + @visitor.when(cool.NewNode) + def visit(self, node: cool.NewNode, scope: Scope): + node.scope = scope + if node.type in self.context.types: + return AtomNode(self.context.get_type(node.type)) + return AtomNode(self.context.get_type("Object")) + + @visitor.when(cool.NegationNode) + def visit(self, node: cool.NegationNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + return AtomNode(self.context.get_type("Bool")) + + @visitor.when(cool.ComplementNode) + def visit(self, node: cool.ComplementNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + return AtomNode(self.context.get_type("Int")) + + @visitor.when(cool.IsVoidNode) + def visit(self, node: cool.IsVoidNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + return AtomNode(self.context.get_type("Bool")) + + @visitor.when(cool.PlusNode) + def visit(self, node: cool.PlusNode, scope: Scope): + node.scope = scope + return self._visit_arithmetic_node( + node, scope, self.context.get_type("Int"), self.context.get_type("Int") + ) + + @visitor.when(cool.MinusNode) + def visit(self, node: cool.MinusNode, scope: Scope): + node.scope = scope + return self._visit_arithmetic_node( + node, scope, self.context.get_type("Int"), self.context.get_type("Int") + ) + + @visitor.when(cool.TimesNode) + def visit(self, node: cool.TimesNode, scope: Scope): + node.scope = scope + return self._visit_arithmetic_node( + node, scope, self.context.get_type("Int"), self.context.get_type("Int") + ) + + @visitor.when(cool.DivNode) + def visit(self, node: cool.DivNode, scope: Scope): + node.scope = scope + return self._visit_arithmetic_node( + node, scope, self.context.get_type("Int"), self.context.get_type("Int") + ) + + @visitor.when(cool.LessEqualNode) + def visit(self, node: cool.LessEqualNode, scope: Scope): + node.scope = scope + return self._visit_arithmetic_node( + node, scope, self.context.get_type("Int"), self.context.get_type("Bool") + ) + + @visitor.when(cool.LessNode) + def visit(self, node: cool.LessNode, scope: Scope): + node.scope = scope + return self._visit_arithmetic_node( + node, scope, self.context.get_type("Int"), self.context.get_type("Bool") + ) + + @visitor.when(cool.EqualNode) + def visit(self, node: cool.EqualNode, scope: Scope): + node.scope = scope + self.visit(node.left, scope) + self.visit(node.right, scope) + return AtomNode(self.context.get_type("Bool")) + + def _visit_arithmetic_node( + self, node: cool.BinaryNode, scope: Scope, member_types: Type, return_type: Type + ): + left = self.visit(node.left, scope) + right = self.visit(node.right, scope) + + if left is not None and not isinstance(left, AtomNode): + self.graph.add_edge(AtomNode(member_types), left) + + if right is not None and not isinstance(right, AtomNode): + self.graph.add_edge(AtomNode(member_types), right) + + return AtomNode(return_type) + + +class InferenceTypeSubstitute: + def __init__(self, context: Context, errors: List[str]): + self.context: Context = context + self.errors: List[str] = errors + self.current_type: Optional[Type] = None + self.current_method: Optional[Method] = None + + @visitor.on("node") + def visit(self, node, tabs): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode, scope: Scope): + scope = node.scope + for i, elem in enumerate(node.class_list): + self.visit(elem, scope.children[i]) + return scope + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode, scope: Scope): + scope = node.scope + self.current_type = self.context.get_type(node.name) + + attrs = [feature for feature in node.data if isinstance(feature, cool.AttributeDecNode)] + methods = [feature for feature in node.data if isinstance(feature, cool.MethodDecNode)] + + i = 0 + for attr in attrs: + if attr.expr is not None: + attr.index = i + i += 1 + + self.visit(attr, scope) + + # print(scope.children, len(methods), i) + for i, method in enumerate(methods, start=i): + self.visit(method, scope.children[i]) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode, scope: Scope): + scope = node.scope + try: + attr_type = self.context.get_type(node._type) + var_info = scope.find_variable(node.name) + + if node.expr is not None: + self.visit(node.expr, scope.children[node.index]) + + if attr_type == self.context.get_type("AUTO_TYPE"): + if var_info.type == self.context.get_type("AUTO_TYPE"): + self.errors.append(err.INFERENCE_ERROR_ATTRIBUTE % node.name) + node._type = var_info.type.name + except SemanticError: + pass + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode, scope: Scope): + scope = node.scope + self.current_method = self.current_type.get_method(node.name) + + try: + return_type = self.context.get_type(node.type) + except SemanticError: + return_type = None + + for i, (name, _type) in enumerate(node.params): + name, _ = name, _type + variable_info = scope.find_variable(name) + if variable_info.type == self.context.get_type("AUTO_TYPE"): + self.errors.append( + err.INFERENCE_ERROR_ATTRIBUTE + % ( + node.p_types_pos[i][0], + node.p_types_pos[i][1], + name, + ) + ) + node.params[i] = (name, variable_info.type.name) + + self.visit(node.expr, scope) + + if return_type is not None and return_type == self.context.get_type( + "AUTO_TYPE" + ): + if self.current_method.return_type == self.context.get_type("AUTO_TYPE"): + self.errors.append(err.INFERENCE_ERROR_ATTRIBUTE % node.name) + node.type = self.current_method.return_type.name + + @visitor.when(cool.LetNode) + def visit(self, node: cool.LetNode, scope: Scope): + scope = node.scope + child_index = 0 + for i, (_id, _type, _expr) in enumerate(node.declaration): + variable_info = scope.find_variable(_id) + + if _expr is not None: + self.visit(_expr, scope.children[child_index]) + child_index += 1 + + if _type == "AUTO_TYPE": + if variable_info.type == self.context.get_type("AUTO_TYPE"): + self.errors.append(err.INFERENCE_ERROR_ATTRIBUTE % _id) + node.class_list[i] = (_id, variable_info.type.name, _expr) + + self.visit(node.expr, scope.children[child_index]) + + @visitor.when(cool.AssignNode) + def visit(self, node: cool.AssignNode, scope: Scope): + scope = node.scope + self.visit(node.expr, scope) + + @visitor.when(cool.BlockNode) + def visit(self, node: cool.BlockNode, scope: Scope): + scope = node.scope + for _, expr in enumerate(node.expr): + self.visit(expr, scope) + + @visitor.when(cool.ConditionalNode) + def visit(self, node: cool.ConditionalNode, scope: Scope): + scope = node.scope + self.visit(node.if_expr, scope) + self.visit(node.then_expr, scope) + self.visit(node.else_expr, scope) + + @visitor.when(cool.WhileNode) + def visit(self, node: cool.WhileNode, scope: Scope): + scope = node.scope + self.visit(node.cond, scope) + self.visit(node.data, scope) + + @visitor.when(cool.CaseNode) + def visit(self, node: cool.CaseNode, scope: Scope): + scope = node.scope + self.visit(node.expr, scope) + for i, (_, _, _expr) in enumerate(node.params): + self.visit(_expr, scope.children[i]) + + @visitor.when(cool.MethodCallNode) + def visit(self, node: cool.MethodCallNode, scope: Scope): + scope = node.scope + self.visit(node.atom, scope) + + for arg in node.exprlist: + self.visit(arg, scope) + + @visitor.when(cool.AtomicNode) + def visit(self, node: cool.AtomicNode, scope: Scope): + scope = node.scope + # pass + + @visitor.when(cool.UnaryNode) + def visit(self, node: cool.UnaryNode, scope: Scope): + scope = node.scope + self.visit(node.expr, scope) + + @visitor.when(cool.BinaryNode) + def visit(self, node: cool.BinaryNode, scope: Scope): + scope = node.scope + self.visit(node.left, scope) + self.visit(node.right, scope) + + +#### Chequeo de tipos #### + +class TypeChecker: + def __init__(self, context: Context, errors: List[str]): + self.context: Context = context + self.errors: List[str] = errors + self.current_type: Optional[Type] = None + self.current_method: Optional[Method] = None + self.current_attribute: Optional[Attribute] = None + + @visitor.on("node") + def visit(self, node, scope): + pass + + @visitor.when(cool.ProgramNode) + def visit(self, node: cool.ProgramNode, scope: Scope = None): + if scope is None: + scope = Scope() + + node.scope = scope + + for elem in node.class_list: + self.visit(elem, scope.create_child()) + + return scope + + @visitor.when(cool.ClassDecNode) + def visit(self, node: cool.ClassDecNode, scope: Scope): + node.scope = scope + self.current_type = self.context.get_type(node.name) + + attrs = [ + feature + for feature in node.data + if isinstance(feature, cool.AttributeDecNode) + ] + methods = [ + feature + for feature in node.data + if isinstance(feature, cool.MethodDecNode) + ] + + for attr, attr_owner in self.current_type.all_attributes(): + if attr_owner != self.current_type: + scope.define_variable(attr.name, attr.type) + + for attr in attrs: + self.visit(attr, scope) + + for method in methods: + self.visit(method, scope.create_child()) + + @visitor.when(cool.AttributeDecNode) + def visit(self, node: cool.AttributeDecNode, scope: Scope): + node.scope = scope + if node.name == "self": + self.errors.append(err.SELF_INVALID_ATTRIBUTE_ID % (node.line, node.lexpos)) + + try: + attr_type = ( + self.context.get_type(node._type) + if node._type != "SELF_TYPE" + else self.current_type + ) + except SemanticError: + attr_type = ErrorType() + + scope.define_variable("self", self.current_type) + + # set the current attribute for analyze the body + # and set the self.current_method variable to None + self.current_attribute = self.current_type.get_attribute(node.name) + self.current_method = None + + if node.expr is not None: + expr_type = self.visit(node.expr, scope.create_child()) + if not expr_type.conforms_to(attr_type): + line, column = node.expr_position + self.errors.append( + err.INCOMPATIBLE_TYPES + % (line, column, expr_type.name, attr_type.name) + ) + scope.define_variable(node.name, attr_type) + + @visitor.when(cool.MethodDecNode) + def visit(self, node: cool.MethodDecNode, scope: Scope): + node.scope = scope + self.current_method = self.current_type.get_method(node.name) + self.current_attribute = None + + scope.define_variable("self", self.current_type) + + for param_name, param_type in zip( + self.current_method.param_names, self.current_method.param_types + ): + if not scope.is_local_variable(param_name): + if param_type.name == "SELF_TYPE": + self.errors.append(err.INVALID_PARAM_TYPE % "SELF_TYPE") + scope.define_variable(param_name, ErrorType()) + else: + try: + scope.define_variable( + param_name, self.context.get_type(param_type.name) + ) + except SemanticError: + scope.define_variable(param_name, ErrorType()) + else: + self.errors.append( + err.LOCAL_ALREADY_DEFINED + % (node.line, node.lexpos, param_name, self.current_method.name) + ) + + try: + return_type = ( + self.context.get_type(node.type) + if node.type != "SELF_TYPE" + else self.current_type + ) + except SemanticError: + return_type = ErrorType() + + expr_type = self.visit(node.expr, scope) + + if not expr_type.conforms_to(return_type): + self.errors.append( + err.INCOMPATIBLE_TYPES + % (node.line, node.lexpos, expr_type.name, return_type.name) + ) + + # @visitor.when(cool.LetNode) + # def visit(self, node: cool.LetNode, scope: Scope): + # node.scope = scope + # return self.visit(node.expr, scope) + + @visitor.when(cool.LetNode) + def visit(self, node: cool.LetNode, scope: Scope): + node.scope = scope + for i, (_id, _type, _expr) in enumerate(node.declaration): + if _id == "self": + line, column = node.dec_names_pos[i] + self.errors.append(err.SELF_USED_IN_LET % (line, column)) + continue + + try: + var_static_type = ( + self.context.get_type(_type) + if _type != "SELF_TYPE" + else self.current_type + ) + except SemanticError: + line, column = node.dec_types_pos[i] + self.errors.append(err.UNDEFINED_TYPE % (line, column, _type)) + var_static_type = ErrorType() + + scope.define_variable(_id, var_static_type) + + expr_type = ( + self.visit(_expr, scope.create_child()) if _expr is not None else None + ) + if expr_type is not None and not expr_type.conforms_to(var_static_type): + self.errors.append( + err.INCOMPATIBLE_TYPES + % (node.line, node.lexpos, expr_type.name, var_static_type.name) + ) + + return self.visit(node.expr, scope.create_child()) + + @visitor.when(cool.AssignNode) + def visit(self, node: cool.AssignNode, scope: Scope): + node.scope = scope + var_info = scope.find_variable(node.idx) + + if var_info.name == "self": + self.errors.append(err.SELF_IS_READONLY % (node.line, node.lexpos)) + + expr_type = self.visit(node.expr, scope) + + if var_info is None: + self.errors.append( + err.UNDEFINED_VARIABLE + % (node.line, node.lexpos, node.idx, self.current_method.name) + ) + else: + if not expr_type.conforms_to(var_info.type): + self.errors.append( + err.INCOMPATIBLE_TYPES + % (node.line, node.lexpos, expr_type.name, var_info.type.name) + ) + + return expr_type + + @visitor.when(cool.BlockNode) + def visit(self, node: cool.BlockNode, scope: Scope): + node.scope = scope + return_type = ErrorType() + for expr in node.expr: + return_type = self.visit(expr, scope) + return return_type + + @visitor.when(cool.ConditionalNode) + def visit(self, node: cool.ConditionalNode, scope: Scope): + node.scope = scope + if_type = self.visit(node.if_expr, scope) + then_type = self.visit(node.then_expr, scope) + else_type = self.visit(node.else_expr, scope) + if if_type != self.context.get_type("Bool"): + self.errors.append( + err.INCOMPATIBLE_TYPES % (node.line, node.lexpos, if_type.name, "Bool") + ) + return then_type.join(else_type) + + @visitor.when(cool.WhileNode) + def visit(self, node: cool.WhileNode, scope: Scope): + node.scope = scope + condition = self.visit(node.cond, scope) + if condition != self.context.get_type("Bool"): + self.errors.append( + err.INCOMPATIBLE_TYPES + % (node.line, node.lexpos, condition.name, "Bool") + ) + + self.visit(node.data, scope) + return self.context.get_type("Object") + + @visitor.when(cool.CaseNode) + def visit(self, node: cool.CaseNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + types = [] + visited = set() + for i, (identifier, type_name, expr) in enumerate(node.params): + new_scope = scope.create_child() + try: + if type_name != "SELF_TYPE": + new_scope.define_variable( + identifier, self.context.get_type(type_name) + ) + else: + self.errors.append(err.INVALID_CASE_TYPE % type_name) + except SemanticError: + new_scope.define_variable(identifier, ErrorType()) + line, column = node.cases_positions[i] + self.errors.append( + err.UNDEFINED_TYPE_IN_BRANCH % (line, column, type_name) + ) + + # Cannot be duplicated Branches types + if type_name in visited: + line, column = node.cases_positions[i] + self.errors.append( + err.DUPLICATE_BARNCH_IN_CASE % (line, column, type_name) + ) + + visited.add(type_name) + types.append(self.visit(expr, new_scope)) + + return Type.multi_join(types) + + @visitor.when(cool.MethodCallNode) + def visit(self, node: cool.MethodCallNode, scope: Scope): + node.scope = scope + if node.atom is None: + node.atom = cool.VariableNode("self") + obj_type = self.visit(node.atom, scope) + + if node.type is not None: + try: + ancestor_type = self.context.get_type(node.type) + except SemanticError: + ancestor_type = ErrorType() + line, column = node.type_position + self.errors.append(err.UNDEFINED_TYPE % (line, column, node.type)) + + if not obj_type.conforms_to(ancestor_type): + line, column = node.type_position + self.errors.append( + err.INVALID_ANCESTOR + % (line, column, obj_type.name, ancestor_type.name) + ) + else: + ancestor_type = obj_type + + try: + method = ancestor_type.get_method(node.idx) + except SemanticError: + line, column = node.id_position + self.errors.append( + err.DISPATCH_UNDEFINED_METHOD % (line, column, node.idx, obj_type.name) + ) + + for arg in node.exprlist: + self.visit(arg, scope) + return ErrorType() + + args_count = len(node.exprlist) + params_count = len(method.param_names) + if args_count != params_count: + line, column = node.id_position + self.errors.append( + err.DISPATCH_WITH_WRONG_NUMBER_OF_ARGS + % (line, column, method.name, obj_type.name, params_count, args_count) + ) + + number_of_args = min(args_count, params_count) + for i, arg in enumerate(node.exprlist[:number_of_args]): + arg_type = self.visit(arg, scope) + if not arg_type.conforms_to(method.param_types[i]): + line, column = node.exprlist_positions[i] + self.errors.append( + err.INCOMPATIBLE_TYPES + % ( + line, + column, + arg_type.name, + method.param_types[i].name, + ) + ) + + return ( + method.return_type + if method.return_type.name != "SELF_TYPE" + else ancestor_type + ) + + @visitor.when(cool.NumberNode) + def visit(self, node: cool.NumberNode, scope: Scope): + node.scope = scope + return self.context.get_type("Int") + + @visitor.when(cool.StringNode) + def visit(self, node: cool.StringNode, scope: Scope): + node.scope = scope + return self.context.get_type("String") + + @visitor.when(cool.BooleanNode) + def visit(self, node: cool.BooleanNode, scope: Scope): + node.scope = scope + return self.context.get_type("Bool") + + @visitor.when(cool.VariableNode) + def visit(self, node: cool.VariableNode, scope: Scope): + node.scope = scope + variable = scope.find_variable(node.lex) + if variable is None: + if self.current_attribute is not None: + name = self.current_attribute.name + else: + name = self.current_method.name + + self.errors.append( + err.UNDEFINED_VARIABLE % (node.line, node.lexpos, node.lex, name) + ) + return ErrorType() + return variable.type + + @visitor.when(cool.NewNode) + def visit(self, node: cool.NewNode, scope: Scope): + node.scope = scope + try: + return ( + self.context.get_type(node.type) + if node.type != "SELF_TYPE" + else self.current_type + ) + except SemanticError as e: + line, column = node.type_position + self.errors.append(err.UNDEFINED_NEW_TYPE % (line, column, node.type)) + return ErrorType() + + @visitor.when(cool.NegationNode) + def visit(self, node: cool.NegationNode, scope: Scope): + node.scope = scope + return self._check_unary_operation( + node, scope, "not", self.context.get_type("Bool") + ) + + @visitor.when(cool.ComplementNode) + def visit(self, node: cool.ComplementNode, scope: Scope): + node.scope = scope + return self._check_unary_operation( + node, scope, "~", self.context.get_type("Int") + ) + + @visitor.when(cool.IsVoidNode) + def visit(self, node: cool.IsVoidNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + return self.context.get_type("Bool") + + @visitor.when(cool.PlusNode) + def visit(self, node: cool.PlusNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "+", self.context.get_type("Int") + ) + + @visitor.when(cool.MinusNode) + def visit(self, node: cool.MinusNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "-", self.context.get_type("Int") + ) + + @visitor.when(cool.TimesNode) + def visit(self, node: cool.TimesNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "*", self.context.get_type("Int") + ) + + @visitor.when(cool.DivNode) + def visit(self, node: cool.DivNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "/", self.context.get_type("Int") + ) + + @visitor.when(cool.LessEqualNode) + def visit(self, node: cool.LessEqualNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "<=", self.context.get_type("Bool") + ) + + @visitor.when(cool.LessNode) + def visit(self, node: cool.LessNode, scope: Scope): + node.scope = scope + return self._check_int_binary_operation( + node, scope, "<", self.context.get_type("Bool") + ) + + @visitor.when(cool.EqualNode) + def visit(self, node: cool.EqualNode, scope: Scope): + node.scope = scope + left_type = self.visit(node.left, scope) + right_type = self.visit(node.right, scope) + + basic_types = ("Int", "String", "Bool") + if ( + left_type.name in basic_types or left_type.name in basic_types + ) and left_type.name != right_type.name: + self.errors.append( + err.INVALID_EQ_COMPARISON_OPERATION % (node.line, node.lexpos) + ) + return self.context.get_type("Bool") + + def _check_int_binary_operation( + self, node: cool.BinaryNode, scope: Scope, operation: str, return_type: Type + ): + left_type = self.visit(node.left, scope) + right_type = self.visit(node.right, scope) + + if left_type == right_type == self.context.get_type("Int"): + return return_type + self.errors.append( + err.INVALID_BINARY_OPERATION + % (node.line, node.lexpos, operation, left_type.name, right_type.name) + ) + return ErrorType() + + def _check_unary_operation( + self, node: cool.UnaryNode, scope: Scope, operation: str, expected_type: Type + ): + typex = self.visit(node.expr, scope) + if typex == expected_type: + return typex + self.errors.append( + err.INVALID_UNARY_OPERATION + % (node.line, node.lexpos, operation, typex.name) + ) + return ErrorType() diff --git a/src/utils/utils/tokens.py b/src/utils/utils/tokens.py new file mode 100644 index 000000000..249abf117 --- /dev/null +++ b/src/utils/utils/tokens.py @@ -0,0 +1,6 @@ +class Token: + def __init__(self, name, value, line, lexpos): + self.name = name + self.value = value + self.line = line + self.lexpos = lexpos \ No newline at end of file diff --git a/src/utils/utils/type_analysis.py b/src/utils/utils/type_analysis.py new file mode 100644 index 000000000..713b87709 --- /dev/null +++ b/src/utils/utils/type_analysis.py @@ -0,0 +1,1829 @@ +from signal import raise_signal +from .semantic import SemanticError +from .semantic import Type +from .semantic import VoidType, ErrorType +from .semantic import Context, Scope +import utils.ast_nodes as ast +from utils import visitor + +class TypeCollector(object): + def __init__(self, context: Context, errors, program): + self.context = context + self.errors = errors + self.program = program + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + + + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode): + self_type = self.context.create_type('SELF_TYPE') + object_type = self.context.create_type('Object') + int_type = self.context.create_type('Int') + bool_type = self.context.create_type('Bool') + str_type = self.context.create_type('String') + io_type = self.context.create_type('IO') + self.context.create_type('AUTO_TYPE') + # setting parent + io_type.set_parent(object_type) + str_type.set_parent(object_type) + int_type.set_parent(object_type) + bool_type.set_parent(object_type) + # defining methods + object_type.define_method('abort', [], [], object_type) + # object_type.define_method('get_type', [], [], str_type) + object_type.define_method('type_name', [], [], str_type) + object_type.define_method('copy', [], [], object_type) + str_type.define_method('length', [], [], int_type) + str_type.define_method('concat', ['str'], [str_type], str_type) + str_type.define_method('substr', ['pos', 'len'], [int_type, int_type], str_type) + io_type.define_method('out_string', ['i'], [str_type], io_type) + io_type.define_method('out_int', ['i'], [int_type], io_type) + io_type.define_method('in_string', [], [], str_type) + io_type.define_method('in_int', [], [], int_type) + + for item in node.class_list: + self.visit(item) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode): + try: + self.context.create_type(node.name) + except SemanticError: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - SemanticError: Invalid redefinition of class "{node.name}"') + + +class TypeBuilder: + def __init__(self, context: Context, errors, program): + self.context: Context = context + self.current_type: Type = None + self.errors = errors + self.program = program + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode): + for item in node.class_list: + self.visit(item) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode): + self.current_type = self.context.get_type(node.name) + + if node.parent is not None: + if node.parent in ['Int', 'Bool', 'String', 'SELF_TYPE']: + line, lexpos = node.parent_pos + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: Class "{node.name}" cannot inherits from "{node.parent}"') + + try: + parent_type = self.current_type.set_parent(self.context.get_type(node.parent)) + except SemanticError: + line, lexpos = node.parent_pos + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Parent type for class "{node.name}" is an undefined type "{node.parent}"') + + # try: + # self.current_type.set_parent(parent_type) + # except SemanticError: + # self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - SemanticError: Parent type is already set for "{node.name}"') + else: + # obj = self.context.get_type('Object') + # self.current_type.set_parent(obj) + + try: + self.current_type.set_parent(self.context.get_type("Object")) + except SemanticError: + if node.name not in ["Int","String","Bool","IO","Object","SELF_TYPE"]: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - SemanticError: Parent type is already set for "{node.name}"') + + # for item in node.data: + # self.visit(item) + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode): + params_name = [] + params_type = [] + for param in node.params: + name = param.name + type_ = param.type + params_name.append(name) + + try: + t = self.context.get_type(type_) + params_type.append(t) + except SemanticError as e: + self.errors.append(e.text) + params_type.append(ErrorType()) + try: + result_type = self.context.get_type(node.type) + except SemanticError as e: + result_type = ErrorType() + self.errors.append(e.text) + self.current_type.define_method(node.name, params_name, params_type, result_type) + + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode): + try: + type_ = self.context.get_type(node._type) + self.current_type.define_attribute(node.name, type_) + except SemanticError: + pass + # self.errors.append( + # f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) \ + # - SemanticError: Method "{self.name}" already defined in \ + # {self.current_type.name}') + # self.errors.append(e.text) + # self.current_type.define_attribute(node.name, ErrorType()) + + +class TypeBuilderFeature: + def __init__(self, context: Context, errors, program): + self.context = context + self.current_type = None + self.errors = errors + self.program = program + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + + @visitor.on('node') + def visit(self, node): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode): + for item in node.class_list: + self.visit(item) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode): + self.current_type = self.context.get_type(node.name) + + for data in node.data: + self.visit(data) + + self.current_type = self.context.get_type(node.name) + + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode): + line, lexpos = node.type_pos + try: + attr_type = self.context.get_type(node._type) + except SemanticError: + attr_type = ErrorType() + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Undefined type "{node._type}" for attribute "{node.name}" in class "{self.current_type.name}"') + + try: + self.current_type.define_attribute(node.name, attr_type) + except SemanticError: + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: Attribute "{node.name}" is already defined in "{self.current_type.name}".') + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode): + param_names = [] + param_types = [] + + # (name, typex) + for i, param in enumerate(node.params): + name = param.name + typex = param.type + param_names.append(name) + try: + param_types.append(self.context.get_type(typex)) + except SemanticError: + param_types.append(ErrorType()) + line, lexpos = node.p_types_pos[i] + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Undefined param type "{typex}" in method "{node.name}", in class "{self.current_type.name}"') + try: + return_type = self.context.get_type(node.type) + except SemanticError: + return_type = ErrorType() + line, lexpos = node.r_types_pos + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Undefined return type "{node.type}" in method "{node.name}", in class "{self.current_type.name}"') + try: + self.current_type.define_method(node.name, param_names, param_types, return_type) + except SemanticError: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - SemanticError: Method "{node.name}" already defined in {self.current_type.name}') + +class TypeChecker: + def __init__(self, context: Context, errors, program): + self.context = context + self.current_type = None + self.current_method = None + self.errors = errors + self.program = program + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + + @visitor.on('node') + def visit(self, node, scope): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode, scope: Scope): + if scope is None: + scope = Scope() + + node.scope = scope + + for item in node.class_list: + self.visit(item, scope.create_child()) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode, scope: Scope): + node.scope = scope + self.current_type = self.context.get_type(node.name) + + attributes = [att for att in node.data if isinstance(att, ast.AttributeDecNode)] + methods = [meth for meth in node.data if isinstance(meth, ast.MethodDecNode)] + + for attr, attr_owner in self.current_type.all_attributes(): + if attr_owner != self.current_type: + scope.define_variable(attr.name, attr.type) + + for item in attributes: + self.visit(item, scope) + + for item in methods: + self.visit(item, scope.create_child()) + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode, scope: Scope): + node.scope = scope + if node.name == 'self': + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - SemanticError: Cannot set "self" as attribute of a class.') + try: + attr_type = self.current_type if node._type == 'SELF_TYPE' else self.context.get_type(node._type) + except SemanticError: attr_type = ErrorType() + + scope.define_variable('self', self.current_type) + self.current_attribute = self.current_type.get_attribute(node.name) + self.current_method = None + + if node.expr is not None: + expr_type = self.visit(node.expr, scope.create_child()) + if expr_type is not None and not expr_type.conforms_to(attr_type): + self.errors.append(f'({node.expr_pos[0]}, {node.expr_pos[1]}) - TypeError: Cannot convert "{expr_type.name}" into "{attr_type.name}".') + scope.define_variable(node.name, attr_type) + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode, scope: Scope): + node.scope = scope + self.current_method = self.current_type.get_method(node.name) + + scope.define_variable('self', self.current_type) + + for item in node.params: + param_name, param_type = item.name, self.context.get_type(item.type) + if not scope.is_local_variable(param_name): + if param_type.name == 'SELF_TYPE': + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: "SELF_TYPE" cannot be a static type of a parameter.') + scope.define_variable(param_name, ErrorType()) + else: + scope.define_variable( + param_name, self.context.get_type(param_type.name)) + else: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - SemanticError: Variable "{param_name}" is already defined in method "{self.current_method.name}".') + + return_type = self.context.get_type(node.type) if node.type != 'SELF_TYPE' else self.current_type + + expr_type = self.visit(node.expr, scope) + + if expr_type is not None and not expr_type.conforms_to(return_type): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Cannot convert "{expr_type.name}" into "{return_type.name}".') + + # expresiones + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode, scope: Scope): + node.scope = scope + cond_type = self.visit(node.cond, scope) + cond_exp_type = self.context.get_type('Bool') + + if cond_type != cond_exp_type: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Cannot convert "{cond_type.name}" into "Bool".') + + return self.context.get_type('Object') + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode, scope: Scope): + node.scope = scope + for pos, (id_, type_, exp) in enumerate(node.declaration): + if id_ == 'self': + l, lp = node.dec_names_pos[pos] + self.errors.append(f'({l}, {lp}) - SemanticError: "self" cannot be bound in a "let" expression') + continue + try: + if type_ != "SELF_TYPE": + var_type = self.context.get_type(type_) + else: + var_type = self.current_type + + except SemanticError: + line, lexpos = node.dec_types_pos[pos] + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Type "{type_}" is not defined') + var_type = ErrorType() + scope.define_variable(id_, var_type) + + expr_type = None + if exp is not None: + expr_type = self.visit(exp, scope.create_child()) + if expr_type is not None and not expr_type.conforms_to(var_type): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Cannot convert "{expr_type.name}" into "{var_type.name}".') + + # if exp is not None: + # return_type = self.visit(exp, sc) + # if return_type != type_: + # self.errors.append(f'La declaración {id_} debería ser de tipo {type_}') + # scope.define_variable(id_, ErrorType()) + # else: + # scope.define_variable(id_, type_) + # else: + # scope.define_variable(id_, type_) + + sc = scope.create_child() + return self.visit(node.expr, sc) + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode, scope: Scope): + node.scope = scope + var_type = scope.find_variable(node.idx) + if var_type is None: + self.error.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - NameError: Variable "{self.idx}" is not defined in "{self.current_method.name}".') + else: + if var_type.name == "self": + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - SemanticError: Variable "self" is read-only.') + + type_ = self.visit(node.expr, scope.create_child()) + + if not type_.conforms_to(var_type.type): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Cannot convert "{type_.name}" into "{var_type.type.name}".') + # if type_ is not None: + # scope.define_variable(node.idx, type_) + # else: + # self.errors.append(f'El tipo asignado a {node.idx} es incorrecto') + # scope.define_variable(node.idx, ErrorType()) + return type_ + + @visitor.when(ast.ParenthesisNode) + def visit(self, node: ast.ParenthesisNode, scope: Scope): + node.scope = scope + return self.visit(node.expr, scope) + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode, scope: Scope): + node.scope = scope + type_ = ErrorType() + # sc = scope.create_child() + # if not node.expr: + # self.errors.append('Los bloques deben contener al menos una expresión.') + for expr in node.expr: + type_ = self.visit(expr, scope) + return type_ + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode, scope: Scope): + node.scope = scope + + if node.atom is None: + node.atom = ast.VariableNode('self') + + obj_type = self.visit(node.atom, scope) + + if node.type is not None: + try: + parent_type = self.context.get_type(node.type) + except SemanticError: + parent_type = ErrorType() + line, lexpos = node.type_position + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)})\ + - TypeError: Type "{node.type}" is not defined') + + if not obj_type.conforms_to(parent_type): + line, lexpos = node.type_position + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)})\ + - TypeError: Class "{obj_type.name}" has no an ancestor \ + class "{parent_type.name}".') + else: + parent_type = obj_type + + try: + method = parent_type.get_method(node.idx) + except SemanticError: + line, lexpos = node.id_position + self.errors.append( + f'({line}, {self.get_tokencolumn(self.program, lexpos)})\ + - AttributeError: Dispatch undefined method "{node.idx}"\ + from type {obj_type.name}') + for arg in node.exprlist: + self.visit(arg, scope) + return ErrorType() + + if len(node.exprlist) != len(method.param_names): + line, lexpos = node.id_position + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: Method "{method.name}" of type "{obj_type.name}" called with wrong number of arguments. Expected {len(node.exprlist)} instead of {len(method.param_names)}') + + else: + for i, arg in enumerate(node.exprlist): + arg_type = self.visit(arg, scope) + if not arg_type.conforms_to(method.param_types[i]): + line, lexpos = node.exprlist_positions[i] + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Cannot convert "{arg_type.name}" into "{method.param_types[i].name}".') + + return method.return_type if method.return_type.name != 'SELF_TYPE' else parent_type + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode, scope: Scope): + node.scope = scope + if_type = self.visit(node.if_expr, scope) + if if_type != self.context.get_type('Bool'): + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Cannot convert "{if_type.name}" into "Bool".') + + then_ = self.visit(node.then_expr, scope.create_child()) + else_ = self.visit(node.else_expr, scope.create_child()) + + return then_.join(else_) + + @visitor.when(ast.NewNode) + def visit(self, node: ast.NewNode, scope: Scope): + node.scope = scope + try: + current_type = self.current_type if node.type == 'SELF_TYPE' else self.context.get_type(node.type) + except SemanticError as e: + line, lexpos = node.type_position + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Using "new" expresion with undefined type "{node.type}"') + return ErrorType() + return current_type + + @visitor.when(ast.IsVoidNode) + def visit(self, node: ast.IsVoidNode, scope: Scope): + node.scope = scope + self.visit(node.expr, scope) + return self.context.get_type('Bool') + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode, scope: Scope): + node.scope = scope + return_type = ErrorType() + if node.expr: + return_type = self.visit(node.expr, scope) + else: + self.errors.append('La expresión del \'case\' no puede ser nula.') + t = [] + v = [] + for pos, (id_, type_, expr) in enumerate(node.params): + sc = scope.create_child() + try: + if type_ != 'SELF_TYPE': + t_ = self.context.get_type(type_) + sc.define_variable(id_, t_) + else: + line, lexpos = node.cases_positions[pos] + type_ + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: "{type_}" cannot be a static type of a case branch.') + except SemanticError: + sc.define_variable(id_, ErrorType()) + line, lexpos = node.cases_positions[pos] + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - TypeError: Class "{type_}" of case branch is undefined') + + # Cannot be dublicate Branches types + if type_ in v: + line, lexpos = node.cases_positions[pos] + self.errors.append(f'({line}, {self.get_tokencolumn(self.program, lexpos)}) - SemanticError: Duplicate branch "{type_}" in case statement') + + v.append(type_) + t.append(self.visit(expr, sc)) + + return Type.multi_join(t) + + + # variable + @visitor.when(ast.ParamNode) + def visit(self, node: ast.ParamNode, scope: Scope): + node.scope = scope + scope.define_variable(node.name, node.type) + + @visitor.when(ast.VariableNode) + def visit(self, node: ast.VariableNode, scope: Scope): + node.scope = scope + var_ = scope.find_variable(node.lex) + if var_ is None: + if self.current_attribute is not None: + name = self.current_attribute.name + else: + name = self.current_method.name + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - NameError: Variable "{node.lex}" is not defined in "{name}".') + return ErrorType() + return var_.type + + # operaciones aritmeticas + @visitor.when(ast.PlusNode) + def visit(self, node: ast.PlusNode, scope: Scope): + node.scope = scope + right = self.visit(node.right, scope) + left = self.visit(node.left, scope) + int_type = self.context.get_type('Int') + + if right.name == int_type.name and left.name == int_type.name: + return int_type + else: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "+" is not defined between "{left.name}" and "{right.name}".') + return ErrorType() + + @visitor.when(ast.MinusNode) + def visit(self, node: ast.MinusNode, scope: Scope): + node.scope = scope + right = self.visit(node.right, scope) + left = self.visit(node.left, scope) + int_type = self.context.get_type('Int') + + if right == int_type and left == int_type: + return int_type + else: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "-" is not defined between "{left.name}" and "{right.name}".') + return ErrorType() + + @visitor.when(ast.TimesNode) + def visit(self, node: ast.TimesNode, scope: Scope): + node.scope = scope + right = self.visit(node.right, scope) + left = self.visit(node.left, scope) + int_type = self.context.get_type('Int') + + if right == int_type and left == int_type: + return int_type + else: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "*" is not defined between "{left.name}" and "{right.name}".') + return ErrorType() + + @visitor.when(ast.DivNode) + def visit(self, node: ast.DivNode, scope: Scope): + node.scope = scope + right = self.visit(node.right, scope) + left = self.visit(node.left, scope) + int_type = self.context.get_type('Int') + + if right == int_type and left == int_type: + return int_type + else: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "/" is not defined between "{left.name}" and "{right.name}".') + return ErrorType() + + + # operaciones logicas + @visitor.when(ast.LessNode) + def visit(self, node: ast.LessNode, scope: Scope): + node.scope = scope + right = self.visit(node.right, scope) + left = self.visit(node.left, scope) + bool_type = self.context.get_type('Bool') + int_type = self.context.get_type('Int') + + if right == int_type and left == int_type: + return bool_type + else: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "<" is not defined between "{left.name}" and "{right.name}".') + return ErrorType() + + @visitor.when(ast.LessEqualNode) + def visit(self, node: ast.LessEqualNode, scope: Scope): + node.scope = scope + right = self.visit(node.right, scope) + left = self.visit(node.left, scope) + bool_type = self.context.get_type('Bool') + int_type = self.context.get_type('Int') + + if right == int_type and left == int_type: + return bool_type + else: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "<=" is not defined between "{left.name}" and "{right.name}".') + return ErrorType() + + @visitor.when(ast.EqualNode) + def visit(self, node: ast.EqualNode, scope: Scope): + node.scope = scope + right = self.visit(node.right, scope) + left = self.visit(node.left, scope) + + types_ = ['Int', 'Bool', 'String'] + if (right.name in types_ or left.name in types_) and right.name != left.name: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: For operation "=" if one of the expression has static type Int, Bool or String, then the other must have the same static type') + + return self.context.get_type('Bool') + + + # operaciones unarias + @visitor.when(ast.ComplementNode) + def visit(self, node: ast.ComplementNode, scope: Scope): + node.scope = scope + type_ = self.visit(node.expr, scope) + if type_ == self.context.get_type('Int'): + return type_ + else: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "~" is not defined for "{type_.name}".') + return ErrorType() + + @visitor.when(ast.NegationNode) + def visit(self, node: ast.NegationNode, scope: Scope): + node.scope = scope + type_ = self.visit(node.expr, scope) + if type_ == self.context.get_type('Bool'): + return type_ + else: + self.errors.append(f'({node.line}, {self.get_tokencolumn(self.program, node.lexpos)}) - TypeError: Operation "not" is not defined for "{type_.name}".') + return ErrorType() + + + # operaciones atomicas + @visitor.when(ast.NumberNode) + def visit(self, node: ast.NumberNode, scope: Scope): + node.scope = scope + node.lex = str(node.lex) + return self.context.get_type('Int') + + @visitor.when(ast.BooleanNode) + def visit(self, node: ast.BooleanNode, scope: Scope): + node.scope = scope + return self.context.get_type('Bool') + + @visitor.when(ast.StringNode) + def visit(self, node: ast.StringNode, scope: Scope): + node.scope = scope + return self.context.get_type('String') + + # Parenthesis + @visitor.when(ast.ExprParNode) + def visit(self, node: ast.ExprParNode, scope: Scope): + node.scope = scope + return self.visit(node.expr, scope) + +''' +class PositionateTokensInAST: + def __init__(self, tokens, program): + self.program = program + self.position = 0 + self.tokens = tokens + + def get_tokencolumn(self, str, pos): + column = 1 + temp_pos = pos + while str[temp_pos] != '\n': + if temp_pos == 0: break + temp_pos -= 1 + column += 1 + return column if column > 1 else 2 + + + def inc_position(self, value=1): + self.position += value + + def binary_op(self, node: ast.BinaryNode): + self.visit(node.left) + + token = self.tokens[self.position] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + self.inc_position() + + self.visit(node.right) + + def single_op(self, node: ast.UnaryNode): + token = self.tokens[self.position] + node.operation_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + + token = self.tokens[self.position + 1] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + + self.inc_position() + self.visit(node.expr) + + def atom(self, node: ast.Node): + token = self.tokens[self.position] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + self.inc_position() + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode): + for cl in node.class_list: + self.visit(cl) + self.inc_position() + + # there is always at least a class declaration + first_declaration = node.class_list[0] + node.set_position(first_declaration.line, first_declaration.lexpos - 1) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode): + token = self.tokens[self.position] + assert (token.value.lower() == "class"), f'Expected "class" instead of "{token.value}" in {node.name}' + + token = self.tokens[self.position + 1] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + + if node.parent is not None: + token = self.tokens[self.position + 3] + node.parent_pos = token.line, self.get_tokencolumn(self.program, token.lexpos) + + count = 3 if node.parent is None else 5 + self.inc_position(count) + + for d in node.data: + self.visit(d) + token = self.tokens[self.position] + assert (token.value == ";"), f'Expected ";" instead of "{token.value}" in {d.name} of class {node.name}' + self.inc_position() + + self.inc_position() + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode): + token = self.tokens[self.position] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + + token = self.tokens[self.position + 2] + node.type_pos = token.line, self.get_tokencolumn(self.program, token.lexpos) + + if node.expr is not None: + self.inc_position(4) + token = self.tokens[self.position] + node.expr_pos = token.line, self.get_tokencolumn(self.program, token.lexpos) + self.visit(node.expr) + token = self.tokens[self.position] + return + + self.inc_position(3) + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode): + token = self.tokens[self.position] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + self.inc_position(2) + + for i, _ in enumerate(node.params): + self.inc_position(2) + token = self.tokens[self.position] + node.p_types_pos.append((token.line, self.get_tokencolumn(self.program, token.lexpos) - 1)) + self.inc_position() + if i < len(node.params) - 1: + self.inc_position() + + self.inc_position(2) + token = self.tokens[self.position] + node.r_types_pos = token.line, self.get_tokencolumn(self.program, token.lexpos) + self.inc_position(2) + + self.visit(node.expr) + self.inc_position() + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode): + token = self.tokens[self.position] + + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + self.inc_position() + + for _, _, expr in node.declaration: + token = self.tokens[self.position] + node.dec_names_pos.append((token.line, self.get_tokencolumn(self.program, token.lexpos) - 1)) + token = self.tokens[self.position + 2] + node.dec_types_pos.append((token.line, self.get_tokencolumn(self.program, token.lexpos) - 1)) + if expr is not None: + self.inc_position(4) + token = self.tokens[self.position] + self.visit(expr) + self.inc_position() + else: + self.inc_position(4) + + self.visit(node.expr) + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode): + token = self.tokens[self.position] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + + token = self.tokens[self.position + 1] + assert token.value == "<-", f'Expected "<-" instead of "{token.value}" in assign' + + self.inc_position(2) # ends after `<-` + self.visit(node.expr) + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode): + token = self.tokens[self.position] + t = [token.value for token in self.tokens] + assert token.value == "{", f'Expected "{{" instead of "{token.value}" in block' + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + self.inc_position() + + for i, expr in enumerate(node.expr, start=1): + self.visit(expr) + token = self.tokens[self.position] + assert (token.value == ";"), f'Expected ";" instead of "{token.value}" in instruction {i} of a block' + self.inc_position() + + token = self.tokens[self.position] + assert (token.value == "}"), f'Expected "}}" instead of "{token.value}" at the end of a block' + self.inc_position() + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode): + # IF + token = self.tokens[self.position] + assert (token.value == "if"), f'Expected "if" instead of "{token.value}" in conditional' + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + self.inc_position() + self.visit(node.if_expr) + # THEN + token = self.tokens[self.position] + assert (token.value == "then"), f'Expected "then" instead of "{token.value}" in conditional' + self.inc_position() + self.visit(node.then_expr) + # ELSE + token = self.tokens[self.position] + assert (token.value == "else"), f'Expected "else" instead of "{token.value}" in conditional' + self.inc_position() + self.visit(node.else_expr) + # FI + token = self.tokens[self.position] + assert (token.value == "fi"), f'Expected "fi" instead of "{token.value}" in conditional' + self.inc_position() + + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode): + token = self.tokens[self.position] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + self.inc_position() + self.visit(node.cond) + self.inc_position() + self.visit(node.data) + self.inc_position() + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode): + token = self.tokens[self.position] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + # CASE + self.inc_position() + self.visit(node.expr) + # OF + self.inc_position() + for _, _, expr in node.params: + self.inc_position(2) + token = self.tokens[self.position] + node.cases_positions.append((token.line, self.get_tokencolumn(self.program, token.lexpos))) + self.inc_position(2) + self.visit(expr) + self.inc_position() + # ESAC + self.inc_position() + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode): + token = self.tokens[self.position] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + node.id_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + + _atom = node.atom is not None + _type = node.type is not None + + if _atom: + self.visit(node.atom) + + token = self.tokens[self.position] + assert token.value in ("@","."), f"Expected '.' or '@' instead of {token.value}" + self.inc_position() + + token = self.tokens[self.position] + node.id_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + + if _type: + token = self.tokens[self.position] + node.type_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + self.inc_position(2) + token = self.tokens[self.position] + node.id_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + + self.inc_position(2) + token = self.tokens[self.position] + if node.exprlist: + for exp in node.exprlist: + token = self.tokens[self.position] + node.exprlist_positions.append((token.line, self.get_tokencolumn(self.program, token.lexpos))) + self.visit(exp) + token = self.tokens[self.position] + assert token.value in (",", ")"), f"Expected ',' or ')' instead of {token.value}" + self.inc_position() + else: + self.inc_position() + + @visitor.when(ast.NumberNode) + def visit(self, node: ast.NumberNode): + self.atom(node) + + @visitor.when(ast.StringNode) + def visit(self, node: ast.StringNode): + self.atom(node) + + @visitor.when(ast.BooleanNode) + def visit(self, node: ast.BooleanNode): + self.atom(node) + + @visitor.when(ast.VariableNode) + def visit(self, node: ast.VariableNode): + self.atom(node) + + @visitor.when(ast.NewNode) + def visit(self, node: ast.NewNode): + token = self.tokens[self.position] + node.set_position(token.line, self.get_tokencolumn(self.program, token.lexpos) - 1) + token = self.tokens[self.position + 1] + node.type_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + self.inc_position(2) + + @visitor.when(ast.NegationNode) + def visit(self, node: ast.NegationNode): + self.single_op(node) + + @visitor.when(ast.ComplementNode) + def visit(self, node: ast.ComplementNode): + self.single_op(node) + + @visitor.when(ast.IsVoidNode) + def visit(self, node: ast.IsVoidNode): + self.single_op(node) + + @visitor.when(ast.PlusNode) + def visit(self, node: ast.PlusNode): + self.binary_op(node) + + @visitor.when(ast.MinusNode) + def visit(self, node: ast.MinusNode): + self.binary_op(node) + + @visitor.when(ast.TimesNode) + def visit(self, node: ast.TimesNode): + self.binary_op(node) + + @visitor.when(ast.DivNode) + def visit(self, node: ast.DivNode): + self.binary_op(node) + + @visitor.when(ast.LessEqualNode) + def visit(self, node: ast.LessEqualNode): + self.binary_op(node) + + @visitor.when(ast.LessNode) + def visit(self, node: ast.LessNode): + self.binary_op(node) + + @visitor.when(ast.EqualNode) + def visit(self, node: ast.EqualNode): + self.binary_op(node) + + @visitor.when(ast.ExprParNode) + def visit(self, node: ast.ExprParNode): + token = self.tokens[self.position] + assert token.value == "(", f'Expected "(" instead of "{token.value}" in parenthesis expression' + self.inc_position() + + self.visit(node.expr) + + token = self.tokens[self.position] + assert token.value == ")", f'Expected ")" instead of "{token.value}" in parenthesis expression' + self.inc_position() + + + +class PositionateTokensInAST: + def __init__(self, tokens, program): + self.program = program + self.position = 0 + self.tokens = tokens + + + def inc_position(self, value=1): + self.position += value + + def binary_op(self, node: ast.BinaryNode): + self.visit(node.left) + + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + self.inc_position() + + self.visit(node.right) + + def single_op(self, node: ast.UnaryNode): + token = self.tokens[self.position] + node.operation_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + + token = self.tokens[self.position + 1] + node.set_position(token.line, token.lexpos) + + self.inc_position() + self.visit(node.expr) + + def atom(self, node: ast.Node): + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + self.inc_position() + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode): + for cl in node.class_list: + self.visit(cl) + self.inc_position() + + # there is always at least a class declaration + first_declaration = node.class_list[0] + node.set_position(first_declaration.line, first_declaration.lexpos) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode): + token = self.tokens[self.position] + assert (token.value.lower() == "class"), f'Expected "class" instead of "{token.value}" in {node.name}' + + token = self.tokens[self.position + 1] + node.set_position(token.line, token.lexpos) + + if node.parent is not None: + token = self.tokens[self.position + 3] + node.parent_pos = token.line, self.get_tokencolumn(self.program, token.lexpos) + + count = 3 if node.parent is None else 5 + self.inc_position(count) + + for d in node.data: + self.visit(d) + token = self.tokens[self.position] + assert (token.value == ";"), f'Expected ";" instead of "{token.value}" in {d.name} of class {node.name}' + self.inc_position() + + self.inc_position() + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode): + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + + token = self.tokens[self.position + 2] + node.type_pos = token.line, self.get_tokencolumn(self.program, token.lexpos) + + if node.expr is not None: + self.inc_position(4) + token = self.tokens[self.position] + node.expr_pos = token.line, self.get_tokencolumn(self.program, token.lexpos) + self.visit(node.expr) + token = self.tokens[self.position] + return + + self.inc_position(3) + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode): + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + self.inc_position(2) + + for i, _ in enumerate(node.params): + self.inc_position(2) + token = self.tokens[self.position] + node.p_types_pos.append((token.line, token.lexpos)) + self.inc_position() + if i < len(node.params) - 1: + self.inc_position() + + self.inc_position(2) + token = self.tokens[self.position] + node.r_types_pos = token.line, self.get_tokencolumn(self.program, token.lexpos) + self.inc_position(2) + + self.visit(node.expr) + self.inc_position() + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode): + token = self.tokens[self.position] + + node.set_position(token.line, token.lexpos) + self.inc_position() + + for _, _, expr in node.declaration: + token = self.tokens[self.position] + node.dec_names_pos.append((token.line, token.lexpos)) + token = self.tokens[self.position + 2] + node.dec_types_pos.append((token.line, token.lexpos)) + if expr is not None: + self.inc_position(4) + token = self.tokens[self.position] + self.visit(expr) + self.inc_position() + else: + self.inc_position(4) + + self.visit(node.expr) + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode): + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + + token = self.tokens[self.position + 1] + assert token.value == "<-", f'Expected "<-" instead of "{token.value}" in assign' + + self.inc_position(2) # ends after `<-` + self.visit(node.expr) + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode): + token = self.tokens[self.position] + t = [token.value for token in self.tokens] + assert token.value == "{", f'Expected "{{" instead of "{token.value}" in block' + node.set_position(token.line, token.lexpos) + self.inc_position() + + for i, expr in enumerate(node.expr, start=1): + self.visit(expr) + token = self.tokens[self.position] + assert (token.value == ";"), f'Expected ";" instead of "{token.value}" in instruction {i} of a block' + self.inc_position() + + token = self.tokens[self.position] + assert (token.value == "}"), f'Expected "}}" instead of "{token.value}" at the end of a block' + self.inc_position() + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode): + # IF + token = self.tokens[self.position] + assert (token.value == "if"), f'Expected "if" instead of "{token.value}" in conditional' + node.set_position(token.line, token.lexpos) + self.inc_position() + self.visit(node.if_expr) + # THEN + token = self.tokens[self.position] + assert (token.value == "then"), f'Expected "then" instead of "{token.value}" in conditional' + self.inc_position() + self.visit(node.then_expr) + # ELSE + token = self.tokens[self.position] + assert (token.value == "else"), f'Expected "else" instead of "{token.value}" in conditional' + self.inc_position() + self.visit(node.else_expr) + # FI + token = self.tokens[self.position] + assert (token.value == "fi"), f'Expected "fi" instead of "{token.value}" in conditional' + self.inc_position() + + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode): + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + self.inc_position() + self.visit(node.cond) + self.inc_position() + self.visit(node.data) + self.inc_position() + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode): + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + # CASE + self.inc_position() + self.visit(node.expr) + # OF + self.inc_position() + for _, _, expr in node.params: + self.inc_position(2) + token = self.tokens[self.position] + node.cases_positions.append((token.line, self.get_tokencolumn(self.program, token.lexpos))) + self.inc_position(2) + self.visit(expr) + self.inc_position() + # ESAC + self.inc_position() + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode): + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + node.id_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + + _atom = node.atom is not None + _type = node.type is not None + + if _atom: + self.visit(node.atom) + + token = self.tokens[self.position] + assert token.value in ("@","."), f"Expected '.' or '@' instead of {token.value}" + self.inc_position() + + token = self.tokens[self.position] + node.id_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + + if _type: + token = self.tokens[self.position] + node.type_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + self.inc_position(2) + token = self.tokens[self.position] + node.id_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + + self.inc_position(2) + token = self.tokens[self.position] + if node.exprlist: + for exp in node.exprlist: + token = self.tokens[self.position] + node.exprlist_positions.append((token.line, self.get_tokencolumn(self.program, token.lexpos))) + self.visit(exp) + token = self.tokens[self.position] + assert token.value in (",", ")"), f"Expected ',' or ')' instead of {token.value}" + self.inc_position() + else: + self.inc_position() + + @visitor.when(ast.NumberNode) + def visit(self, node: ast.NumberNode): + self.atom(node) + + @visitor.when(ast.StringNode) + def visit(self, node: ast.StringNode): + self.atom(node) + + @visitor.when(ast.BooleanNode) + def visit(self, node: ast.BooleanNode): + self.atom(node) + + @visitor.when(ast.VariableNode) + def visit(self, node: ast.VariableNode): + self.atom(node) + + @visitor.when(ast.NewNode) + def visit(self, node: ast.NewNode): + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + token = self.tokens[self.position + 1] + node.type_position = token.line, self.get_tokencolumn(self.program, token.lexpos) + self.inc_position(2) + + @visitor.when(ast.NegationNode) + def visit(self, node: ast.NegationNode): + self.single_op(node) + + @visitor.when(ast.ComplementNode) + def visit(self, node: ast.ComplementNode): + self.single_op(node) + + @visitor.when(ast.IsVoidNode) + def visit(self, node: ast.IsVoidNode): + self.single_op(node) + + @visitor.when(ast.PlusNode) + def visit(self, node: ast.PlusNode): + self.binary_op(node) + + @visitor.when(ast.MinusNode) + def visit(self, node: ast.MinusNode): + self.binary_op(node) + + @visitor.when(ast.TimesNode) + def visit(self, node: ast.TimesNode): + self.binary_op(node) + + @visitor.when(ast.DivNode) + def visit(self, node: ast.DivNode): + self.binary_op(node) + + @visitor.when(ast.LessEqualNode) + def visit(self, node: ast.LessEqualNode): + self.binary_op(node) + + @visitor.when(ast.LessNode) + def visit(self, node: ast.LessNode): + self.binary_op(node) + + @visitor.when(ast.EqualNode) + def visit(self, node: ast.EqualNode): + self.binary_op(node) + + @visitor.when(ast.ExprParNode) + def visit(self, node: ast.ExprParNode): + token = self.tokens[self.position] + assert token.value == "(", f'Expected "(" instead of "{token.value}" in parenthesis expression' + self.inc_position() + + self.visit(node.expr) + + token = self.tokens[self.position] + assert token.value == ")", f'Expected ")" instead of "{token.value}" in parenthesis expression' + self.inc_position() + +''' + + +class PositionAssigner: + def __init__(self, tokens): + self.position = 0 + self.tokens = tokens + + self.opar = 0 + + def inc_position(self, count: int = 1): + self.position += count + + @visitor.on("node") + def visit(self, node): + pass + + @visitor.when(ast.ProgramNode) + def visit(self, node: ast.ProgramNode): + + for declaration in node.class_list: + self.visit(declaration) + self.inc_position() + + first_declaration = node.class_list[ + 0 + ] # There is always one or more declarations + node.set_position(first_declaration.line, first_declaration.lexpos) + + @visitor.when(ast.ClassDecNode) + def visit(self, node: ast.ClassDecNode): + token = self.tokens[self.position] + assert ( + token.value.lower() == "class" + ), f'{token.line, token.lexpos} Expected "class" instead of "{token.lex}" in {node.id}' + + token = self.tokens[self.position + 1] + node.set_position(token.line, token.lexpos) + + if node.parent is not None: + token = self.tokens[self.position + 3] + node.parent_position = token.line, token.lexpos + + count = 3 if node.parent is None else 5 + self.inc_position(count) + + for feature in node.data: + self.visit(feature) + + token = self.tokens[self.position] + assert ( + token.value == ";" + ), f'Expected ";" instead of "{token.lex}" in {feature.id} of class {node.id}' + + self.inc_position() # ends after `;` + + self.inc_position() # ends after `}` + + @visitor.when(ast.AttributeDecNode) + def visit(self, node: ast.AttributeDecNode): + """ + * + id : type [<- expr] + """ + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + + token = self.tokens[self.position + 2] + node.type_position = token.line, token.lexpos + + if node.expr is not None: + self.inc_position(4) # ends after `<-` + + token = self.tokens[self.position] + node.expr_position = token.line, token.lexpos + + self.visit(node.expr) + + token = self.tokens[self.position] + return + + self.inc_position(3) + + @visitor.when(ast.MethodDecNode) + def visit(self, node: ast.MethodDecNode): + """ + * + id ( [params] ) : type { expr } + """ + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + + self.inc_position(2) # ends after `(` + + for i, _ in enumerate(node.params): + # * + # id : type , + self.inc_position(2) # ends in `type` + + token = self.tokens[self.position] + node.p_types_pos.append((token.line, token.lexpos)) + + self.inc_position() # ends in `,` + + if i < len(node.params) - 1: + self.inc_position() # ends in `,` + # ends in `)` + + self.inc_position(2) # ends in `type` + token = self.tokens[self.position] + node.r_types_pos = token.line, token.lexpos + self.inc_position(2) # ends after `{` + + self.visit(node.expr) + self.inc_position() # ends after `}` + + @visitor.when(ast.LetNode) + def visit(self, node: ast.LetNode): + token = self.tokens[self.position] + + counter, token = self._skip_open_parentheses() + + node.set_position(token.line, token.lexpos) + + self.inc_position() + + for _, _, expr in node.declaration: + # * + # id : type [<- expr] , + + token = self.tokens[self.position] + node.dec_names_pos.append((token.line, token.lexpos)) + + token = self.tokens[self.position + 2] + node.dec_types_pos.append((token.line, token.lexpos)) + + if expr is not None: + self.inc_position(4) # ends after `<-` + + token = self.tokens[self.position] + self.visit(expr) + self.inc_position() # ends after `,` + else: + self.inc_position(4) # ends after `,` or `in` if last + # ends after `in` + + self.visit(node.expr) + + self._skip_closed_parentheses() + + @visitor.when(ast.AssignNode) + def visit(self, node: ast.AssignNode): + """ + * + id <- expr + """ + + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + + token = self.tokens[self.position + 1] + assert token.value == "<-", f'Expected "<-" instead of "{token.lex}" in assign' + + self.inc_position(2) # ends after `<-` + self.visit(node.expr) + + @visitor.when(ast.BlockNode) + def visit(self, node: ast.BlockNode): + """ + * + { block } + """ + self._skip_open_parentheses() + + token = self.tokens[self.position] + assert token.value == "{", f'{token.line, token.lexpos} Expected "{{" instead of "{token.lex}" in block' + + node.set_position(token.line, token.lexpos) + self.inc_position() # edns after `{` + + for i, expr in enumerate(node.expr, start=1): + # * + # expr ; + self.visit(expr) + + token = self.tokens[self.position] + assert ( + token.value == ";" + ), f'Expected ";" instead of "{token.lex}" in instruction {i} of a block' + + self.inc_position() # ends after `;` + + token = self.tokens[self.position] + assert ( + token.value == "}" + ), f'Expected "}}" instead of "{token.lex}" at the end of a block' + + self.inc_position() # ends after `}` + self._skip_closed_parentheses() + + @visitor.when(ast.ConditionalNode) + def visit(self, node: ast.ConditionalNode): + """ + * + if expr then expr else expr fi + """ + + token = self.tokens[self.position] + assert ( + token.value == "if" + ), f'Expected "if" instead of "{token.lex}" in conditional' + node.set_position(token.line, token.lexpos) + self.inc_position() # ends after `if` + self.visit(node.if_expr) + + token = self.tokens[self.position] + assert ( + token.value == "then" + ), f'Expected "then" instead of "{token.lex}" in conditional' + self.inc_position() # ends after `then` + self.visit(node.then_expr) + + token = self.tokens[self.position] + assert ( + token.value == "else" + ), f'Expected "else" instead of "{token.lex}" in conditional' + self.inc_position() # ends after `else` + self.visit(node.else_expr) + + token = self.tokens[self.position] + assert ( + token.value == "fi" + ), f'Expected "fi" instead of "{token.lex}" in conditional' + self.inc_position() # ends after `fi` + + @visitor.when(ast.WhileNode) + def visit(self, node: ast.WhileNode): + """ + * + while expr loop expr pool + """ + + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + + self.inc_position() # ends after `while` + self.visit(node.cond) + + self.inc_position() # ends after `loop` + self.visit(node.data) + + self.inc_position() # ends after `pool` + + @visitor.when(ast.CaseNode) + def visit(self, node: ast.CaseNode): + """ + * + case expr of case-list esac + """ + + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + + self.inc_position() # ends afte `case` + self.visit(node.expr) + + self.inc_position() # ends after `of` + for _, _, expr in node.params: + # * + # id : type => expr ; + self.inc_position(2) # ends in `type` + + token = self.tokens[self.position] + node.cases_positions.append((token.line, token.lexpos)) + + self.inc_position(2) # ends after `=>` + self.visit(expr) + self.inc_position() # ends after `;` + + self.inc_position() # ends afte `esac` + + @visitor.when(ast.MethodCallNode) + def visit(self, node: ast.MethodCallNode): + token = self.tokens[self.position] + + counter, token = self._skip_open_parentheses() + + node.set_position(token.line, token.lexpos) + node.id_position = token.line, token.lexpos + + obj_not_none = node.atom is not None + type_not_none = node.type is not None + + if obj_not_none: + self.visit(node.atom) + + token = self.tokens[self.position] + assert token.value in ( + ".", + "@", + ), f"{token.line, token.lexpos, counter} Expected '.' or '@' instead of {token.lex}" + + self.inc_position() # ends after `.` or `@` + token = self.tokens[self.position] + node.id_position = token.line, token.lexpos + + if type_not_none: + token = self.tokens[self.position] + node.type_position = token.line, token.lexpos + + self.inc_position(2) # ends after `.` + token = self.tokens[self.position] + node.id_position = token.line, token.lexpos + + self.inc_position(2) # ends after `(` + + token = self.tokens[self.position] + if node.exprlist: + for arg in node.exprlist: + # * + # expr , expr-list + token = self.tokens[self.position] + node.exprlist_positions.append((token.line, token.lexpos)) + + self.visit(arg) + + token = self.tokens[self.position] + # assert token.value in ( + # "," ")" + # ), f"{token.line, token.lexpos} Expected ',' or ')' instead of {token.lex}" + if token.value == ",": + self.inc_position() # ends after `,` or `)` + # ends after `)` + else: + self.inc_position() + + self._skip_closed_parentheses() # ends after `)` + + @visitor.when(ast.NumberNode) + def visit(self, node: ast.NumberNode): + self._atom_node(node) + + @visitor.when(ast.StringNode) + def visit(self, node: ast.StringNode): + self._atom_node(node) + + @visitor.when(ast.BooleanNode) + def visit(self, node: ast.BooleanNode): + self._atom_node(node) + + @visitor.when(ast.VariableNode) + def visit(self, node: ast.VariableNode): + self._atom_node(node) + + @visitor.when(ast.NewNode) + def visit(self, node: ast.NewNode): + """ + * + new type + """ + token = self.tokens[self.position] + _, token = self._skip_open_parentheses() + node.set_position(token.line, token.lexpos) + + token = self.tokens[self.position + 1] + node.type_position = token.line, token.lexpos + self.inc_position(2) # ends after `type` + + _, token = self._skip_closed_parentheses() + + @visitor.when(ast.NegationNode) + def visit(self, node: ast.NegationNode): + self._check_unary_operation(node) + + @visitor.when(ast.ComplementNode) + def visit(self, node: ast.ComplementNode): + self._check_unary_operation(node) + + @visitor.when(ast.IsVoidNode) + def visit(self, node: ast.IsVoidNode): + self._check_unary_operation(node) + + @visitor.when(ast.PlusNode) + def visit(self, node: ast.PlusNode): + self._check_binary_operation(node) + + @visitor.when(ast.MinusNode) + def visit(self, node: ast.MinusNode): + self._check_binary_operation(node) + + @visitor.when(ast.TimesNode) + def visit(self, node: ast.TimesNode): + self._check_binary_operation(node) + + @visitor.when(ast.DivNode) + def visit(self, node: ast.DivNode): + self._check_binary_operation(node) + + @visitor.when(ast.LessEqualNode) + def visit(self, node: ast.LessEqualNode): + self._check_binary_operation(node) + + @visitor.when(ast.LessNode) + def visit(self, node: ast.LessNode): + self._check_binary_operation(node) + + @visitor.when(ast.EqualNode) + def visit(self, node: ast.EqualNode): + self._check_binary_operation(node) + + def _check_binary_operation(self, node: ast.BinaryNode): + """ + expr operation expr + """ + self._skip_open_parentheses() + + self.visit(node.left) + + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + self.inc_position() # ends after `operation` + + self.visit(node.right) + self._skip_closed_parentheses() + + def _check_unary_operation(self, node: ast.UnaryNode): + """ + operation expr + """ + self._skip_open_parentheses() + token = self.tokens[self.position] + node.operation_position = token.line, token.lexpos + + token = self.tokens[self.position + 1] + node.set_position(token.line, token.lexpos) + + self.inc_position() # ends after `operation` + self.visit(node.expr) + self._skip_closed_parentheses() + + def _atom_node(self, node: ast.Node): + token = self.tokens[self.position] + node.set_position(token.line, token.lexpos) + self.inc_position() # ends after `atom` + + def _skip_open_parentheses(self): + token = self.tokens[self.position] + while token.value == "(": + self.opar += 1 + self.inc_position() + token = self.tokens[self.position] + + return self.opar, token + + def _skip_closed_parentheses(self): + token = self.tokens[self.position] + while token.value == ")": + self.opar -= 1 + self.inc_position() + token = self.tokens[self.position] + + return self.opar, token + + \ No newline at end of file diff --git a/src/utils/utils/visitor.py b/src/utils/utils/visitor.py new file mode 100644 index 000000000..c54da81c6 --- /dev/null +++ b/src/utils/utils/visitor.py @@ -0,0 +1,83 @@ +# The MIT License (MIT) +# +# Copyright (c) 2013 Curtis Schlak +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +import inspect + +__all__ = ['on', 'when'] + +def on(param_name): + def f(fn): + dispatcher = Dispatcher(param_name, fn) + return dispatcher + return f + + +def when(param_type): + def f(fn): + frame = inspect.currentframe().f_back + func_name = fn.func_name if 'func_name' in dir(fn) else fn.__name__ + dispatcher = frame.f_locals[func_name] + if not isinstance(dispatcher, Dispatcher): + dispatcher = dispatcher.dispatcher + dispatcher.add_target(param_type, fn) + + def ff(*args, **kw): + return dispatcher(*args, **kw) + + ff.dispatcher = dispatcher + return ff + + return f + + +class Dispatcher(object): + def __init__(self, param_name, fn): + frame = inspect.currentframe().f_back.f_back + self.top_level = frame.f_locals == frame.f_globals + self.param_index = self.__argspec(fn).args.index(param_name) + self.param_name = param_name + self.targets = {} + + def __call__(self, *args, **kw): + typ = args[self.param_index].__class__ + d = self.targets.get(typ) + if d is not None: + return d(*args, **kw) + else: + issub = issubclass + t = self.targets + ks = t.keys() + ans = [t[k](*args, **kw) for k in ks if issub(typ, k)] + if len(ans) == 1: + return ans.pop() + return ans + + def add_target(self, typ, target): + self.targets[typ] = target + + @staticmethod + def __argspec(fn): + # Support for Python 3 type hints requires inspect.getfullargspec + if hasattr(inspect, 'getfullargspec'): + return inspect.getfullargspec(fn) + else: + return inspect.getargspec(fn) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/codegen/arith.mips b/tests/codegen/arith.mips new file mode 100644 index 000000000..363ccd0ce --- /dev/null +++ b/tests/codegen/arith.mips @@ -0,0 +1,20943 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_A: .word 56 + type_A_inherits_from: .word type_Object + type_A_name_address: .word type_A_name_size + type_A___init__: .word function___init___at_A + type_A_abort: .word function_abort_at_Object + type_A_type_name: .word function_type_name_at_Object + type_A_copy: .word function_copy_at_Object + type_A_value: .word function_value_at_A + type_A_set_var: .word function_set_var_at_A + type_A_method1: .word function_method1_at_A + type_A_method2: .word function_method2_at_A + type_A_method3: .word function_method3_at_A + type_A_method4: .word function_method4_at_A + type_A_method5: .word function_method5_at_A + + type_B: .word 56 + type_B_inherits_from: .word type_A + type_B_name_address: .word type_B_name_size + type_B___init__: .word function___init___at_B + type_B_abort: .word function_abort_at_Object + type_B_type_name: .word function_type_name_at_Object + type_B_copy: .word function_copy_at_Object + type_B_value: .word function_value_at_A + type_B_set_var: .word function_set_var_at_A + type_B_method1: .word function_method1_at_A + type_B_method2: .word function_method2_at_A + type_B_method3: .word function_method3_at_A + type_B_method4: .word function_method4_at_A + type_B_method5: .word function_method5_at_B + + type_C: .word 60 + type_C_inherits_from: .word type_B + type_C_name_address: .word type_C_name_size + type_C___init__: .word function___init___at_C + type_C_abort: .word function_abort_at_Object + type_C_type_name: .word function_type_name_at_Object + type_C_copy: .word function_copy_at_Object + type_C_value: .word function_value_at_A + type_C_set_var: .word function_set_var_at_A + type_C_method1: .word function_method1_at_A + type_C_method2: .word function_method2_at_A + type_C_method3: .word function_method3_at_A + type_C_method4: .word function_method4_at_A + type_C_method5: .word function_method5_at_C + type_C_method6: .word function_method6_at_C + + type_D: .word 60 + type_D_inherits_from: .word type_B + type_D_name_address: .word type_D_name_size + type_D___init__: .word function___init___at_D + type_D_abort: .word function_abort_at_Object + type_D_type_name: .word function_type_name_at_Object + type_D_copy: .word function_copy_at_Object + type_D_value: .word function_value_at_A + type_D_set_var: .word function_set_var_at_A + type_D_method1: .word function_method1_at_A + type_D_method2: .word function_method2_at_A + type_D_method3: .word function_method3_at_A + type_D_method4: .word function_method4_at_A + type_D_method5: .word function_method5_at_B + type_D_method7: .word function_method7_at_D + + type_E: .word 64 + type_E_inherits_from: .word type_D + type_E_name_address: .word type_E_name_size + type_E___init__: .word function___init___at_E + type_E_abort: .word function_abort_at_Object + type_E_type_name: .word function_type_name_at_Object + type_E_copy: .word function_copy_at_Object + type_E_value: .word function_value_at_A + type_E_set_var: .word function_set_var_at_A + type_E_method1: .word function_method1_at_A + type_E_method2: .word function_method2_at_A + type_E_method3: .word function_method3_at_A + type_E_method4: .word function_method4_at_A + type_E_method5: .word function_method5_at_B + type_E_method7: .word function_method7_at_D + type_E_method6: .word function_method6_at_E + + type_A2I: .word 48 + type_A2I_inherits_from: .word type_Object + type_A2I_name_address: .word type_A2I_name_size + type_A2I___init__: .word function___init___at_A2I + type_A2I_abort: .word function_abort_at_Object + type_A2I_type_name: .word function_type_name_at_Object + type_A2I_copy: .word function_copy_at_Object + type_A2I_c2i: .word function_c2i_at_A2I + type_A2I_i2c: .word function_i2c_at_A2I + type_A2I_a2i: .word function_a2i_at_A2I + type_A2I_a2i_aux: .word function_a2i_aux_at_A2I + type_A2I_i2a: .word function_i2a_at_A2I + type_A2I_i2a_aux: .word function_i2a_aux_at_A2I + + type_Main: .word 84 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_menu: .word function_menu_at_Main + type_Main_prompt: .word function_prompt_at_Main + type_Main_get_int: .word function_get_int_at_Main + type_Main_is_even: .word function_is_even_at_Main + type_Main_class_type: .word function_class_type_at_Main + type_Main_print: .word function_print_at_Main + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_A_name_size: .word 1 + type_A_name: .asciiz "A" + + type_B_name_size: .word 1 + type_B_name: .asciiz "B" + + type_C_name_size: .word 1 + type_C_name: .asciiz "C" + + type_D_name_size: .word 1 + type_D_name: .asciiz "D" + + type_E_name_size: .word 1 + type_E_name: .asciiz "E" + + type_A2I_name_size: .word 3 + type_A2I_name: .asciiz "A2I" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_A: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE var OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8771330113226 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330113226 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330113226 + j object_set_attribute_8771330113226 + int_set_attribute_8771330113226: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330113226 + bool_set_attribute_8771330113226: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330113226 + object_set_attribute_8771330113226: + sw $t1, 8($t0) + end_set_attribute_8771330113226: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_value_at_A: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE var OF self + lw $t0, 4($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330113250 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330113250 + j object_get_attribute_8771330113250 + int_get_attribute_8771330113250: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8771330113250 + bool_get_attribute_8771330113250: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8771330113250 + object_get_attribute_8771330113250: + sw $t1, 0($sp) + end_get_attribute_8771330113250: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_set_var_at_A: + # SET ATTRIBUTE var OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8771330114332 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330114332 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330114332 + j object_set_attribute_8771330114332 + int_set_attribute_8771330114332: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330114332 + bool_set_attribute_8771330114332: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330114332 + object_set_attribute_8771330114332: + sw $t1, 8($t0) + end_set_attribute_8771330114332: + + lw $v1, 4($sp) + + jr $ra + + function_method1_at_A: + lw $v1, 4($sp) + + jr $ra + + function_method2_at_A: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num1] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [num2] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> B + li $v0, 9 + lw $a0, type_B + syscall + la $t0, type_B + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_B + jal function___init___at_B + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD set_var OF B + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_method3_at_A: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -32 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_3] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> C + li $v0, 9 + lw $a0, type_C + syscall + la $t0, type_C + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_C + jal function___init___at_C + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD set_var OF C + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 32 + + jr $ra + + function_method4_at_A: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -60 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num2] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [num1] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_2 + lw $t0, 48($sp) + sw $t0, 52($sp) + + # IF internal_1 THEN GOTO then_8771330208657 + lw $t0, 52($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330208657 + + # JUMP TO else_8771330208657 + j else_8771330208657 + + then_8771330208657: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num1] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [num2] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> D + li $v0, 9 + lw $a0, type_D + syscall + la $t0, type_D + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_D + jal function___init___at_D + lw $ra, 4($sp) + sw $v1, 44($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD set_var OF D + lw $t0, 36($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_5] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 36($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_6 + lw $t0, 32($sp) + sw $t0, 56($sp) + + # JUMP TO endif_8771330208657 + j endif_8771330208657 + + else_8771330208657: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num2] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [num1] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> D + li $v0, 9 + lw $a0, type_D + syscall + la $t0, type_D + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_D + jal function___init___at_D + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD set_var OF D + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_11] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_12 + lw $t0, 8($sp) + sw $t0, 56($sp) + + # JUMP TO endif_8771330208657 + j endif_8771330208657 + + endif_8771330208657: + + lw $v1, 56($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 60 + + jr $ra + + function_method5_at_A: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -52 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [y] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_4 + sw $zero, 32($sp) + + while_start_8771330209308: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [y] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [num] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than_or_equal + jal function_less_than_or_equal + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # IF internal_5 THEN GOTO while_body_8771330209308 + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8771330209308 + + # JUMP TO while_end_8771330209308 + j while_end_8771330209308 + + while_body_8771330209308: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [y] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [y] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [y] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8771330209308 + j while_start_8771330209308 + + while_end_8771330209308: + + # ALLOCATING -> E + li $v0, 9 + lw $a0, type_E + syscall + la $t0, type_E + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_E + jal function___init___at_E + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD set_var OF E + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_9] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 52 + + jr $ra + + function___init___at_B: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE var OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8771330117708 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330117708 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330117708 + j object_set_attribute_8771330117708 + int_set_attribute_8771330117708: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330117708 + bool_set_attribute_8771330117708: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330117708 + object_set_attribute_8771330117708: + sw $t1, 8($t0) + end_set_attribute_8771330117708: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_method5_at_B: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [num] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> E + li $v0, 9 + lw $a0, type_E + syscall + la $t0, type_E + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_E + jal function___init___at_E + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD set_var OF E + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function___init___at_C: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE var OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8771330118696 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330118696 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330118696 + j object_set_attribute_8771330118696 + int_set_attribute_8771330118696: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330118696 + bool_set_attribute_8771330118696: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330118696 + object_set_attribute_8771330118696: + sw $t1, 8($t0) + end_set_attribute_8771330118696: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_method6_at_C: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -32 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_3] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD set_var OF A + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 32 + + jr $ra + + function_method5_at_C: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [num] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [num] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> E + li $v0, 9 + lw $a0, type_E + syscall + la $t0, type_E + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_E + jal function___init___at_E + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD set_var OF E + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_3] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_D: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE var OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8771330119924 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330119924 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330119924 + j object_set_attribute_8771330119924 + int_set_attribute_8771330119924: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330119924 + bool_set_attribute_8771330119924: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330119924 + object_set_attribute_8771330119924: + sw $t1, 8($t0) + end_set_attribute_8771330119924: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_method7_at_D: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -124 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [num] + lw $t0, 136($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 120($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 116($sp) + addi $sp, $sp, 12 + + # internal_2 <- internal_4 + lw $t0, 104($sp) + sw $t0, 112($sp) + + # IF internal_2 THEN GOTO then_8771330209503 + lw $t0, 112($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330209503 + + # JUMP TO else_8771330209503 + j else_8771330209503 + + then_8771330209503: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 104($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_7] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 104($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD method7 OF D + lw $t0, 128($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 140($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 92($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_8 + lw $t0, 88($sp) + sw $t0, 116($sp) + + # JUMP TO endif_8771330209503 + j endif_8771330209503 + + else_8771330209503: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_13] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 132($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # internal_12 <- internal_14 + lw $t0, 64($sp) + sw $t0, 72($sp) + + # IF internal_12 THEN GOTO then_8771330177624 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330177624 + + # JUMP TO else_8771330177624 + j else_8771330177624 + + then_8771330177624: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # internal_11 <- internal_15 + lw $t0, 60($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8771330177624 + j endif_8771330177624 + + else_8771330177624: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 132($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # internal_17 <- internal_19 + lw $t0, 44($sp) + sw $t0, 52($sp) + + # IF internal_17 THEN GOTO then_8771330177678 + lw $t0, 52($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330177678 + + # JUMP TO else_8771330177678 + j else_8771330177678 + + then_8771330177678: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # internal_16 <- internal_20 + lw $t0, 40($sp) + sw $t0, 56($sp) + + # JUMP TO endif_8771330177678 + j endif_8771330177678 + + else_8771330177678: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_23] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 132($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_22 <- internal_24 + lw $t0, 24($sp) + sw $t0, 32($sp) + + # IF internal_22 THEN GOTO then_8771330177753 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330177753 + + # JUMP TO else_8771330177753 + j else_8771330177753 + + then_8771330177753: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_21 <- internal_25 + lw $t0, 20($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8771330177753 + j endif_8771330177753 + + else_8771330177753: + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_26] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD method7 OF D + lw $t0, 128($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 140($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_27] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_30 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_21 <- internal_28 + lw $t0, 8($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8771330177753 + j endif_8771330177753 + + endif_8771330177753: + + # internal_16 <- internal_21 + lw $t0, 36($sp) + sw $t0, 56($sp) + + # JUMP TO endif_8771330177678 + j endif_8771330177678 + + endif_8771330177678: + + # internal_11 <- internal_16 + lw $t0, 56($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8771330177624 + j endif_8771330177624 + + endif_8771330177624: + + # internal_1 <- internal_11 + lw $t0, 76($sp) + sw $t0, 116($sp) + + # JUMP TO endif_8771330209503 + j endif_8771330209503 + + endif_8771330209503: + + lw $v1, 116($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 124 + + jr $ra + + function___init___at_E: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE var OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8771330122150 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330122150 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330122150 + j object_set_attribute_8771330122150 + int_set_attribute_8771330122150: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330122150 + bool_set_attribute_8771330122150: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330122150 + object_set_attribute_8771330122150: + sw $t1, 8($t0) + end_set_attribute_8771330122150: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_method6_at_E: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD set_var OF A + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_3] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_A2I: + lw $v1, 0($sp) + + jr $ra + + function_c2i_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -216 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 48 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 216($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 212($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 200($sp) + sw $t0, 208($sp) + + # IF internal_1 THEN GOTO then_8771330177711 + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330177711 + + # JUMP TO else_8771330177711 + j else_8771330177711 + + then_8771330177711: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 196($sp) + + # internal_0 <- internal_4 + lw $t0, 196($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8771330177711 + j endif_8771330177711 + + else_8771330177711: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 188($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 49 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 184($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # internal_6 <- internal_8 + lw $t0, 180($sp) + sw $t0, 188($sp) + + # IF internal_6 THEN GOTO then_8771330178079 + lw $t0, 188($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178079 + + # JUMP TO else_8771330178079 + j else_8771330178079 + + then_8771330178079: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # internal_5 <- internal_9 + lw $t0, 176($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8771330178079 + j endif_8771330178079 + + else_8771330178079: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 50 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 176($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # internal_11 <- internal_13 + lw $t0, 160($sp) + sw $t0, 168($sp) + + # IF internal_11 THEN GOTO then_8771330178133 + lw $t0, 168($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178133 + + # JUMP TO else_8771330178133 + j else_8771330178133 + + then_8771330178133: + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 156($sp) + + # internal_10 <- internal_14 + lw $t0, 156($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8771330178133 + j endif_8771330178133 + + else_8771330178133: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 51 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 144($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 156($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 152($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_18 + lw $t0, 140($sp) + sw $t0, 148($sp) + + # IF internal_16 THEN GOTO then_8771330178187 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178187 + + # JUMP TO else_8771330178187 + j else_8771330178187 + + then_8771330178187: + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # internal_15 <- internal_19 + lw $t0, 136($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8771330178187 + j endif_8771330178187 + + else_8771330178187: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 52 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 136($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_21 <- internal_23 + lw $t0, 120($sp) + sw $t0, 128($sp) + + # IF internal_21 THEN GOTO then_8771330178241 + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178241 + + # JUMP TO else_8771330178241 + j else_8771330178241 + + then_8771330178241: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # internal_20 <- internal_24 + lw $t0, 116($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8771330178241 + j endif_8771330178241 + + else_8771330178241: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 53 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 104($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_27] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # internal_26 <- internal_28 + lw $t0, 100($sp) + sw $t0, 108($sp) + + # IF internal_26 THEN GOTO then_8771330178295 + lw $t0, 108($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178295 + + # JUMP TO else_8771330178295 + j else_8771330178295 + + then_8771330178295: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # internal_25 <- internal_29 + lw $t0, 96($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8771330178295 + j endif_8771330178295 + + else_8771330178295: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 54 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_31 <- internal_33 + lw $t0, 80($sp) + sw $t0, 88($sp) + + # IF internal_31 THEN GOTO then_8771330178865 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178865 + + # JUMP TO else_8771330178865 + j else_8771330178865 + + then_8771330178865: + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # internal_30 <- internal_34 + lw $t0, 76($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8771330178865 + j endif_8771330178865 + + else_8771330178865: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 55 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_37] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_36 <- internal_38 + lw $t0, 60($sp) + sw $t0, 68($sp) + + # IF internal_36 THEN GOTO then_8771330178919 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178919 + + # JUMP TO else_8771330178919 + j else_8771330178919 + + then_8771330178919: + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # internal_35 <- internal_39 + lw $t0, 56($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8771330178919 + j endif_8771330178919 + + else_8771330178919: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 56 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_42] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_41 <- internal_43 + lw $t0, 40($sp) + sw $t0, 48($sp) + + # IF internal_41 THEN GOTO then_8771330178973 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178973 + + # JUMP TO else_8771330178973 + j else_8771330178973 + + then_8771330178973: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # internal_40 <- internal_44 + lw $t0, 36($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8771330178973 + j endif_8771330178973 + + else_8771330178973: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 57 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # internal_46 <- internal_48 + lw $t0, 20($sp) + sw $t0, 28($sp) + + # IF internal_46 THEN GOTO then_8771330179027 + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330179027 + + # JUMP TO else_8771330179027 + j else_8771330179027 + + then_8771330179027: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # internal_45 <- internal_49 + lw $t0, 16($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8771330179027 + j endif_8771330179027 + + else_8771330179027: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF A2I + lw $t0, 220($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_52 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_45 <- internal_53 + lw $t0, 0($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8771330179027 + j endif_8771330179027 + + endif_8771330179027: + + # internal_40 <- internal_45 + lw $t0, 32($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8771330178973 + j endif_8771330178973 + + endif_8771330178973: + + # internal_35 <- internal_40 + lw $t0, 52($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8771330178919 + j endif_8771330178919 + + endif_8771330178919: + + # internal_30 <- internal_35 + lw $t0, 72($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8771330178865 + j endif_8771330178865 + + endif_8771330178865: + + # internal_25 <- internal_30 + lw $t0, 92($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8771330178295 + j endif_8771330178295 + + endif_8771330178295: + + # internal_20 <- internal_25 + lw $t0, 112($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8771330178241 + j endif_8771330178241 + + endif_8771330178241: + + # internal_15 <- internal_20 + lw $t0, 132($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8771330178187 + j endif_8771330178187 + + endif_8771330178187: + + # internal_10 <- internal_15 + lw $t0, 152($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8771330178133 + j endif_8771330178133 + + endif_8771330178133: + + # internal_5 <- internal_10 + lw $t0, 172($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8771330178079 + j endif_8771330178079 + + endif_8771330178079: + + # internal_0 <- internal_5 + lw $t0, 192($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8771330177711 + j endif_8771330177711 + + endif_8771330177711: + + lw $v1, 212($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 216 + + jr $ra + + function_i2c_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -216 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 216($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 212($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 200($sp) + sw $t0, 208($sp) + + # IF internal_1 THEN GOTO then_8771330178082 + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178082 + + # JUMP TO else_8771330178082 + j else_8771330178082 + + then_8771330178082: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 48 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 196($sp) + + # internal_0 <- internal_4 + lw $t0, 196($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8771330178082 + j endif_8771330178082 + + else_8771330178082: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 188($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # internal_6 <- internal_8 + lw $t0, 180($sp) + sw $t0, 188($sp) + + # IF internal_6 THEN GOTO then_8771330178196 + lw $t0, 188($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178196 + + # JUMP TO else_8771330178196 + j else_8771330178196 + + then_8771330178196: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 49 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 176($sp) + + # internal_5 <- internal_9 + lw $t0, 176($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8771330178196 + j endif_8771330178196 + + else_8771330178196: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 176($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # internal_11 <- internal_13 + lw $t0, 160($sp) + sw $t0, 168($sp) + + # IF internal_11 THEN GOTO then_8771330178997 + lw $t0, 168($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178997 + + # JUMP TO else_8771330178997 + j else_8771330178997 + + then_8771330178997: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 50 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 156($sp) + + # internal_10 <- internal_14 + lw $t0, 156($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8771330178997 + j endif_8771330178997 + + else_8771330178997: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 156($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 152($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_18 + lw $t0, 140($sp) + sw $t0, 148($sp) + + # IF internal_16 THEN GOTO then_8771330179054 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330179054 + + # JUMP TO else_8771330179054 + j else_8771330179054 + + then_8771330179054: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 51 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 136($sp) + + # internal_15 <- internal_19 + lw $t0, 136($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8771330179054 + j endif_8771330179054 + + else_8771330179054: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 136($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_21 <- internal_23 + lw $t0, 120($sp) + sw $t0, 128($sp) + + # IF internal_21 THEN GOTO then_8771330178579 + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178579 + + # JUMP TO else_8771330178579 + j else_8771330178579 + + then_8771330178579: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 52 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 116($sp) + + # internal_20 <- internal_24 + lw $t0, 116($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8771330178579 + j endif_8771330178579 + + else_8771330178579: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_27] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # internal_26 <- internal_28 + lw $t0, 100($sp) + sw $t0, 108($sp) + + # IF internal_26 THEN GOTO then_8771330178633 + lw $t0, 108($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178633 + + # JUMP TO else_8771330178633 + j else_8771330178633 + + then_8771330178633: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 53 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 96($sp) + + # internal_25 <- internal_29 + lw $t0, 96($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8771330178633 + j endif_8771330178633 + + else_8771330178633: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_31 <- internal_33 + lw $t0, 80($sp) + sw $t0, 88($sp) + + # IF internal_31 THEN GOTO then_8771330178687 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178687 + + # JUMP TO else_8771330178687 + j else_8771330178687 + + then_8771330178687: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 54 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 76($sp) + + # internal_30 <- internal_34 + lw $t0, 76($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8771330178687 + j endif_8771330178687 + + else_8771330178687: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_37] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_36 <- internal_38 + lw $t0, 60($sp) + sw $t0, 68($sp) + + # IF internal_36 THEN GOTO then_8771330178741 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178741 + + # JUMP TO else_8771330178741 + j else_8771330178741 + + then_8771330178741: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 55 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 56($sp) + + # internal_35 <- internal_39 + lw $t0, 56($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8771330178741 + j endif_8771330178741 + + else_8771330178741: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_42] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_41 <- internal_43 + lw $t0, 40($sp) + sw $t0, 48($sp) + + # IF internal_41 THEN GOTO then_8771330178795 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178795 + + # JUMP TO else_8771330178795 + j else_8771330178795 + + then_8771330178795: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 56 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 36($sp) + + # internal_40 <- internal_44 + lw $t0, 36($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8771330178795 + j endif_8771330178795 + + else_8771330178795: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # internal_46 <- internal_48 + lw $t0, 20($sp) + sw $t0, 28($sp) + + # IF internal_46 THEN GOTO then_8771330178804 + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178804 + + # JUMP TO else_8771330178804 + j else_8771330178804 + + then_8771330178804: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 57 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 16($sp) + + # internal_45 <- internal_49 + lw $t0, 16($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8771330178804 + j endif_8771330178804 + + else_8771330178804: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF A2I + lw $t0, 220($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_52 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 0($sp) + + # internal_45 <- internal_53 + lw $t0, 0($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8771330178804 + j endif_8771330178804 + + endif_8771330178804: + + # internal_40 <- internal_45 + lw $t0, 32($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8771330178795 + j endif_8771330178795 + + endif_8771330178795: + + # internal_35 <- internal_40 + lw $t0, 52($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8771330178741 + j endif_8771330178741 + + endif_8771330178741: + + # internal_30 <- internal_35 + lw $t0, 72($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8771330178687 + j endif_8771330178687 + + endif_8771330178687: + + # internal_25 <- internal_30 + lw $t0, 92($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8771330178633 + j endif_8771330178633 + + endif_8771330178633: + + # internal_20 <- internal_25 + lw $t0, 112($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8771330178579 + j endif_8771330178579 + + endif_8771330178579: + + # internal_15 <- internal_20 + lw $t0, 132($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8771330179054 + j endif_8771330179054 + + endif_8771330179054: + + # internal_10 <- internal_15 + lw $t0, 152($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8771330178997 + j endif_8771330178997 + + endif_8771330178997: + + # internal_5 <- internal_10 + lw $t0, 172($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8771330178196 + j endif_8771330178196 + + endif_8771330178196: + + # internal_0 <- internal_5 + lw $t0, 192($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8771330178082 + j endif_8771330178082 + + endif_8771330178082: + + lw $v1, 212($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 216 + + jr $ra + + function_a2i_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -224 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 216($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # GET METHOD length OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 208($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 212($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 220($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 200($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 224($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 208($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_6 + lw $t0, 196($sp) + sw $t0, 216($sp) + + # IF internal_1 THEN GOTO then_8771330178946 + lw $t0, 216($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178946 + + # JUMP TO else_8771330178946 + j else_8771330178946 + + then_8771330178946: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # internal_0 <- internal_7 + lw $t0, 192($sp) + sw $t0, 220($sp) + + # JUMP TO endif_8771330178946 + j endif_8771330178946 + + else_8771330178946: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 180($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 168($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 196($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 192($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 180($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 188($sp) + addi $sp, $sp, 16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 45 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 160($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 184($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 172($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 168($sp) + addi $sp, $sp, 12 + + # internal_9 <- internal_16 + lw $t0, 156($sp) + sw $t0, 184($sp) + + # IF internal_9 THEN GOTO then_8771330178594 + lw $t0, 184($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178594 + + # JUMP TO else_8771330178594 + j else_8771330178594 + + then_8771330178594: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 152($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # GET METHOD length OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 144($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_20 + lw $t0, 148($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 156($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 160($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 124($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 120($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_17] + lw $t0, 168($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 136($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 144($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # GET METHOD a2i_aux OF A2I + lw $t0, 228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 112($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_23] + lw $t0, 140($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_28 + lw $t0, 120($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_26] + lw $t0, 128($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_30] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 108($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 108($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_31 + lw $t0, 96($sp) + sw $t0, 188($sp) + + # JUMP TO endif_8771330178594 + j endif_8771330178594 + + else_8771330178594: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 72($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_34] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_35] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_38 + lw $t0, 84($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 92($sp) + addi $sp, $sp, 16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 43 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_36] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_39] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_33 <- internal_40 + lw $t0, 60($sp) + sw $t0, 88($sp) + + # IF internal_33 THEN GOTO then_8771330178702 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330178702 + + # JUMP TO else_8771330178702 + j else_8771330178702 + + then_8771330178702: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD length OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_44 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_42] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_45] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_41] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_46] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_49 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 48($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD a2i_aux OF A2I + lw $t0, 228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_52 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # internal_32 <- internal_50 + lw $t0, 20($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8771330178702 + j endif_8771330178702 + + else_8771330178702: + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD a2i_aux OF A2I + lw $t0, 228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [s] + lw $t0, 236($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_55 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_32 <- internal_53 + lw $t0, 8($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8771330178702 + j endif_8771330178702 + + endif_8771330178702: + + # internal_8 <- internal_32 + lw $t0, 92($sp) + sw $t0, 188($sp) + + # JUMP TO endif_8771330178594 + j endif_8771330178594 + + endif_8771330178594: + + # internal_0 <- internal_8 + lw $t0, 188($sp) + sw $t0, 220($sp) + + # JUMP TO endif_8771330178946 + j endif_8771330178946 + + endif_8771330178946: + + lw $v1, 220($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 224 + + jr $ra + + function_a2i_aux_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -88 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [int] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # GET METHOD length OF String + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 68($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 80($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [j] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_8 + sw $zero, 52($sp) + + while_start_8771330179723: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [j] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # IF internal_9 THEN GOTO while_body_8771330179723 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8771330179723 + + # JUMP TO while_end_8771330179723 + j while_end_8771330179723 + + while_body_8771330179723: + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [int] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD substr OF String + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 104($sp) + sw $t0, 8($sp) + + # ARGUMENT [i] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 48($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD c2i OF A2I + lw $t0, 92($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_18 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_11] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [int] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8771330179723 + j while_start_8771330179723 + + while_end_8771330179723: + + lw $v1, 84($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 88 + + jr $ra + + function_i2a_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -96 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 80($sp) + sw $t0, 88($sp) + + # IF internal_1 THEN GOTO then_8771330179750 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330179750 + + # JUMP TO else_8771330179750 + j else_8771330179750 + + then_8771330179750: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 48 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 76($sp) + + # internal_0 <- internal_4 + lw $t0, 76($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8771330179750 + j endif_8771330179750 + + else_8771330179750: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_7] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_6 <- internal_8 + lw $t0, 60($sp) + sw $t0, 68($sp) + + # IF internal_6 THEN GOTO then_8771330180214 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330180214 + + # JUMP TO else_8771330180214 + j else_8771330180214 + + then_8771330180214: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD i2a_aux OF A2I + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # internal_5 <- internal_9 + lw $t0, 56($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8771330180214 + j endif_8771330180214 + + else_8771330180214: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 45 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 44($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_13] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_16] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD i2a_aux OF A2I + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_20 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_5 <- internal_21 + lw $t0, 8($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8771330180214 + j endif_8771330180214 + + endif_8771330180214: + + # internal_0 <- internal_5 + lw $t0, 72($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8771330179750 + j endif_8771330179750 + + endif_8771330179750: + + lw $v1, 92($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 96 + + jr $ra + + function_i2a_aux_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -80 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 64($sp) + sw $t0, 72($sp) + + # IF internal_1 THEN GOTO then_8771330180193 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330180193 + + # JUMP TO else_8771330180193 + j else_8771330180193 + + then_8771330180193: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 60($sp) + + # internal_0 <- internal_4 + lw $t0, 60($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8771330180193 + j endif_8771330180193 + + else_8771330180193: + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [next] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD i2a_aux OF A2I + lw $t0, 84($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [next] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [next] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD i2c OF A2I + lw $t0, 84($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_8] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_17 + lw $t0, 8($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8771330180193 + j endif_8771330180193 + + endif_8771330180193: + + lw $v1, 76($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 80 + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 12($sp) + + # SET ATTRIBUTE char OF self + lw $t0, 16($sp) + lw $t1, 12($sp) + beq $t1, $zero, object_set_attribute_8771330103260 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330103260 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330103260 + j object_set_attribute_8771330103260 + int_set_attribute_8771330103260: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330103260 + bool_set_attribute_8771330103260: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330103260 + object_set_attribute_8771330103260: + sw $t1, 8($t0) + end_set_attribute_8771330103260: + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 8($sp) + + # SET ATTRIBUTE avar OF self + lw $t0, 16($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8771330103284 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330103284 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330103284 + j object_set_attribute_8771330103284 + int_set_attribute_8771330103284: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330103284 + bool_set_attribute_8771330103284: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330103284 + object_set_attribute_8771330103284: + sw $t1, 12($t0) + end_set_attribute_8771330103284: + + # ALLOCATING NUll INTO -> internal_2 + sw $zero, 4($sp) + + # SET ATTRIBUTE a_var OF self + lw $t0, 16($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8771330103571 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330103571 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330103571 + j object_set_attribute_8771330103571 + int_set_attribute_8771330103571: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8771330103571 + bool_set_attribute_8771330103571: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8771330103571 + object_set_attribute_8771330103571: + sw $t1, 16($t0) + end_set_attribute_8771330103571: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE flag OF self + lw $t0, 16($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8771330103592 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330103592 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330103592 + j object_set_attribute_8771330103592 + int_set_attribute_8771330103592: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8771330103592 + bool_set_attribute_8771330103592: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8771330103592 + object_set_attribute_8771330103592: + sw $t1, 20($t0) + end_set_attribute_8771330103592: + + lw $v1, 16($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_menu_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -428 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 30 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 30 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + addi $t0, $zero, 9 + sb $t0, 9($v0) + + addi $t0, $zero, 84 + sb $t0, 10($v0) + + addi $t0, $zero, 111 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 97 + sb $t0, 13($v0) + + addi $t0, $zero, 100 + sb $t0, 14($v0) + + addi $t0, $zero, 100 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 97 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 110 + sb $t0, 19($v0) + + addi $t0, $zero, 117 + sb $t0, 20($v0) + + addi $t0, $zero, 109 + sb $t0, 21($v0) + + addi $t0, $zero, 98 + sb $t0, 22($v0) + + addi $t0, $zero, 101 + sb $t0, 23($v0) + + addi $t0, $zero, 114 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 116 + sb $t0, 26($v0) + + addi $t0, $zero, 111 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + sb $zero, 29($v0) + + sw $v0, 424($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 416($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 416($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 412($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 436($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 424($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 432($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 428($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330103712 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330103712 + j object_get_attribute_8771330103712 + int_get_attribute_8771330103712: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 408($sp) + j end_get_attribute_8771330103712 + bool_get_attribute_8771330103712: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 408($sp) + j end_get_attribute_8771330103712 + object_get_attribute_8771330103712: + sw $t1, 408($sp) + end_get_attribute_8771330103712: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 400($sp) + + # GET METHOD print OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 400($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 396($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 420($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 408($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 416($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 46 + sb $t0, 8($v0) + + addi $t0, $zero, 46 + sb $t0, 9($v0) + + addi $t0, $zero, 46 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 110 + sb $t0, 12($v0) + + addi $t0, $zero, 116 + sb $t0, 13($v0) + + addi $t0, $zero, 101 + sb $t0, 14($v0) + + addi $t0, $zero, 114 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 97 + sb $t0, 17($v0) + + addi $t0, $zero, 58 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 392($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 384($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 384($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 380($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 404($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 392($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 400($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 20 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 20 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 84 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 110 + sb $t0, 12($v0) + + addi $t0, $zero, 101 + sb $t0, 13($v0) + + addi $t0, $zero, 103 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 116 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + sb $zero, 19($v0) + + sw $v0, 376($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 368($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 368($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 364($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 388($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 376($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 384($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 428($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330104152 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330104152 + j object_get_attribute_8771330104152 + int_get_attribute_8771330104152: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 360($sp) + j end_get_attribute_8771330104152 + bool_get_attribute_8771330104152: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 360($sp) + j end_get_attribute_8771330104152 + object_get_attribute_8771330104152: + sw $t1, 360($sp) + end_get_attribute_8771330104152: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 352($sp) + + # GET METHOD print OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 352($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 348($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 372($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 360($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 368($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 46 + sb $t0, 8($v0) + + addi $t0, $zero, 46 + sb $t0, 9($v0) + + addi $t0, $zero, 46 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 110 + sb $t0, 12($v0) + + addi $t0, $zero, 116 + sb $t0, 13($v0) + + addi $t0, $zero, 101 + sb $t0, 14($v0) + + addi $t0, $zero, 114 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 98 + sb $t0, 17($v0) + + addi $t0, $zero, 58 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 344($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 336($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 336($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 332($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 356($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 344($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 352($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 41 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 41 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 84 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 102 + sb $t0, 12($v0) + + addi $t0, $zero, 105 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 100 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 116 + sb $t0, 17($v0) + + addi $t0, $zero, 104 + sb $t0, 18($v0) + + addi $t0, $zero, 101 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 100 + sb $t0, 21($v0) + + addi $t0, $zero, 105 + sb $t0, 22($v0) + + addi $t0, $zero, 102 + sb $t0, 23($v0) + + addi $t0, $zero, 102 + sb $t0, 24($v0) + + addi $t0, $zero, 101 + sb $t0, 25($v0) + + addi $t0, $zero, 114 + sb $t0, 26($v0) + + addi $t0, $zero, 101 + sb $t0, 27($v0) + + addi $t0, $zero, 110 + sb $t0, 28($v0) + + addi $t0, $zero, 99 + sb $t0, 29($v0) + + addi $t0, $zero, 101 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 98 + sb $t0, 32($v0) + + addi $t0, $zero, 101 + sb $t0, 33($v0) + + addi $t0, $zero, 116 + sb $t0, 34($v0) + + addi $t0, $zero, 119 + sb $t0, 35($v0) + + addi $t0, $zero, 101 + sb $t0, 36($v0) + + addi $t0, $zero, 101 + sb $t0, 37($v0) + + addi $t0, $zero, 110 + sb $t0, 38($v0) + + addi $t0, $zero, 32 + sb $t0, 39($v0) + + sb $zero, 40($v0) + + sw $v0, 328($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 320($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 320($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 316($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_24] + lw $t0, 340($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_27 + lw $t0, 328($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 336($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 428($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330104592 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330104592 + j object_get_attribute_8771330104592 + int_get_attribute_8771330104592: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 312($sp) + j end_get_attribute_8771330104592 + bool_get_attribute_8771330104592: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 312($sp) + j end_get_attribute_8771330104592 + object_get_attribute_8771330104592: + sw $t1, 312($sp) + end_get_attribute_8771330104592: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 304($sp) + + # GET METHOD print OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 304($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 300($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_28] + lw $t0, 324($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_31 + lw $t0, 312($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 320($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 39 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 39 + sw $t0, 4($v0) + + addi $t0, $zero, 97 + sb $t0, 8($v0) + + addi $t0, $zero, 110 + sb $t0, 9($v0) + + addi $t0, $zero, 100 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 97 + sb $t0, 12($v0) + + addi $t0, $zero, 110 + sb $t0, 13($v0) + + addi $t0, $zero, 111 + sb $t0, 14($v0) + + addi $t0, $zero, 116 + sb $t0, 15($v0) + + addi $t0, $zero, 104 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 114 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 110 + sb $t0, 20($v0) + + addi $t0, $zero, 117 + sb $t0, 21($v0) + + addi $t0, $zero, 109 + sb $t0, 22($v0) + + addi $t0, $zero, 98 + sb $t0, 23($v0) + + addi $t0, $zero, 101 + sb $t0, 24($v0) + + addi $t0, $zero, 114 + sb $t0, 25($v0) + + addi $t0, $zero, 46 + sb $t0, 26($v0) + + addi $t0, $zero, 46 + sb $t0, 27($v0) + + addi $t0, $zero, 46 + sb $t0, 28($v0) + + addi $t0, $zero, 101 + sb $t0, 29($v0) + + addi $t0, $zero, 110 + sb $t0, 30($v0) + + addi $t0, $zero, 116 + sb $t0, 31($v0) + + addi $t0, $zero, 101 + sb $t0, 32($v0) + + addi $t0, $zero, 114 + sb $t0, 33($v0) + + addi $t0, $zero, 32 + sb $t0, 34($v0) + + addi $t0, $zero, 99 + sb $t0, 35($v0) + + addi $t0, $zero, 58 + sb $t0, 36($v0) + + addi $t0, $zero, 10 + sb $t0, 37($v0) + + sb $zero, 38($v0) + + sw $v0, 296($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 288($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 288($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 284($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 308($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_35 + lw $t0, 296($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 304($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 35 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 35 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 84 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 102 + sb $t0, 12($v0) + + addi $t0, $zero, 105 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 100 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 116 + sb $t0, 17($v0) + + addi $t0, $zero, 104 + sb $t0, 18($v0) + + addi $t0, $zero, 101 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 97 + sb $t0, 22($v0) + + addi $t0, $zero, 99 + sb $t0, 23($v0) + + addi $t0, $zero, 116 + sb $t0, 24($v0) + + addi $t0, $zero, 111 + sb $t0, 25($v0) + + addi $t0, $zero, 114 + sb $t0, 26($v0) + + addi $t0, $zero, 105 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 108 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 111 + sb $t0, 31($v0) + + addi $t0, $zero, 102 + sb $t0, 32($v0) + + addi $t0, $zero, 32 + sb $t0, 33($v0) + + sb $zero, 34($v0) + + sw $v0, 280($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 272($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 272($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 268($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_36] + lw $t0, 292($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_39 + lw $t0, 280($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 288($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 428($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330104772 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330104772 + j object_get_attribute_8771330104772 + int_get_attribute_8771330104772: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 264($sp) + j end_get_attribute_8771330104772 + bool_get_attribute_8771330104772: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 264($sp) + j end_get_attribute_8771330104772 + object_get_attribute_8771330104772: + sw $t1, 264($sp) + end_get_attribute_8771330104772: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 256($sp) + + # GET METHOD print OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 256($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 252($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_40] + lw $t0, 276($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_43 + lw $t0, 264($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 272($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 46 + sb $t0, 8($v0) + + addi $t0, $zero, 46 + sb $t0, 9($v0) + + addi $t0, $zero, 46 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 110 + sb $t0, 12($v0) + + addi $t0, $zero, 116 + sb $t0, 13($v0) + + addi $t0, $zero, 101 + sb $t0, 14($v0) + + addi $t0, $zero, 114 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 100 + sb $t0, 17($v0) + + addi $t0, $zero, 58 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 248($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 240($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 240($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 236($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_44] + lw $t0, 260($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_47 + lw $t0, 248($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 256($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 20 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 20 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 84 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 113 + sb $t0, 13($v0) + + addi $t0, $zero, 117 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 114 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + sb $zero, 19($v0) + + sw $v0, 232($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 224($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 224($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 220($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_48] + lw $t0, 244($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_51 + lw $t0, 232($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 240($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 428($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330105212 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330105212 + j object_get_attribute_8771330105212 + int_get_attribute_8771330105212: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 216($sp) + j end_get_attribute_8771330105212 + bool_get_attribute_8771330105212: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 216($sp) + j end_get_attribute_8771330105212 + object_get_attribute_8771330105212: + sw $t1, 216($sp) + end_get_attribute_8771330105212: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # GET METHOD print OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 208($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_52] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_55 + lw $t0, 216($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 224($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 46 + sb $t0, 8($v0) + + addi $t0, $zero, 46 + sb $t0, 9($v0) + + addi $t0, $zero, 46 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 110 + sb $t0, 12($v0) + + addi $t0, $zero, 116 + sb $t0, 13($v0) + + addi $t0, $zero, 101 + sb $t0, 14($v0) + + addi $t0, $zero, 114 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 58 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 200($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 192($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 188($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_56] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_59 + lw $t0, 200($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 208($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 18 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 18 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 84 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 99 + sb $t0, 12($v0) + + addi $t0, $zero, 117 + sb $t0, 13($v0) + + addi $t0, $zero, 98 + sb $t0, 14($v0) + + addi $t0, $zero, 101 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + sb $zero, 17($v0) + + sw $v0, 184($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 176($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 172($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_63 + lw $t0, 184($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 428($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330105652 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330105652 + j object_get_attribute_8771330105652 + int_get_attribute_8771330105652: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 168($sp) + j end_get_attribute_8771330105652 + bool_get_attribute_8771330105652: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 168($sp) + j end_get_attribute_8771330105652 + object_get_attribute_8771330105652: + sw $t1, 168($sp) + end_get_attribute_8771330105652: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # GET METHOD print OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 160($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 156($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_64] + lw $t0, 180($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_67 + lw $t0, 168($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 176($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 46 + sb $t0, 8($v0) + + addi $t0, $zero, 46 + sb $t0, 9($v0) + + addi $t0, $zero, 46 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 110 + sb $t0, 12($v0) + + addi $t0, $zero, 116 + sb $t0, 13($v0) + + addi $t0, $zero, 101 + sb $t0, 14($v0) + + addi $t0, $zero, 114 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 102 + sb $t0, 17($v0) + + addi $t0, $zero, 58 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 152($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 144($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_68] + lw $t0, 164($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_71 + lw $t0, 152($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 160($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 25 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 25 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 84 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 102 + sb $t0, 12($v0) + + addi $t0, $zero, 105 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 100 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 111 + sb $t0, 17($v0) + + addi $t0, $zero, 117 + sb $t0, 18($v0) + + addi $t0, $zero, 116 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 105 + sb $t0, 21($v0) + + addi $t0, $zero, 102 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + sb $zero, 24($v0) + + sw $v0, 136($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 128($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_72] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_75 + lw $t0, 136($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 428($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330105832 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330105832 + j object_get_attribute_8771330105832 + int_get_attribute_8771330105832: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 120($sp) + j end_get_attribute_8771330105832 + bool_get_attribute_8771330105832: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 120($sp) + j end_get_attribute_8771330105832 + object_get_attribute_8771330105832: + sw $t1, 120($sp) + end_get_attribute_8771330105832: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # GET METHOD print OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 112($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_76] + lw $t0, 132($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_79 + lw $t0, 120($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 39 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 39 + sw $t0, 4($v0) + + addi $t0, $zero, 105 + sb $t0, 8($v0) + + addi $t0, $zero, 115 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 97 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 109 + sb $t0, 13($v0) + + addi $t0, $zero, 117 + sb $t0, 14($v0) + + addi $t0, $zero, 108 + sb $t0, 15($v0) + + addi $t0, $zero, 116 + sb $t0, 16($v0) + + addi $t0, $zero, 105 + sb $t0, 17($v0) + + addi $t0, $zero, 112 + sb $t0, 18($v0) + + addi $t0, $zero, 108 + sb $t0, 19($v0) + + addi $t0, $zero, 101 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 111 + sb $t0, 22($v0) + + addi $t0, $zero, 102 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 51 + sb $t0, 25($v0) + + addi $t0, $zero, 46 + sb $t0, 26($v0) + + addi $t0, $zero, 46 + sb $t0, 27($v0) + + addi $t0, $zero, 46 + sb $t0, 28($v0) + + addi $t0, $zero, 101 + sb $t0, 29($v0) + + addi $t0, $zero, 110 + sb $t0, 30($v0) + + addi $t0, $zero, 116 + sb $t0, 31($v0) + + addi $t0, $zero, 101 + sb $t0, 32($v0) + + addi $t0, $zero, 114 + sb $t0, 33($v0) + + addi $t0, $zero, 32 + sb $t0, 34($v0) + + addi $t0, $zero, 103 + sb $t0, 35($v0) + + addi $t0, $zero, 58 + sb $t0, 36($v0) + + addi $t0, $zero, 10 + sb $t0, 37($v0) + + sb $zero, 38($v0) + + sw $v0, 104($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 96($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_80] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_83 + lw $t0, 104($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 20 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 20 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 84 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 100 + sb $t0, 12($v0) + + addi $t0, $zero, 105 + sb $t0, 13($v0) + + addi $t0, $zero, 118 + sb $t0, 14($v0) + + addi $t0, $zero, 105 + sb $t0, 15($v0) + + addi $t0, $zero, 100 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + sb $zero, 19($v0) + + sw $v0, 88($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 80($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_84] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_87 + lw $t0, 88($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 428($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330106272 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330106272 + j object_get_attribute_8771330106272 + int_get_attribute_8771330106272: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8771330106272 + bool_get_attribute_8771330106272: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8771330106272 + object_get_attribute_8771330106272: + sw $t1, 72($sp) + end_get_attribute_8771330106272: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD print OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_88] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_91 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 25 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 25 + sw $t0, 4($v0) + + addi $t0, $zero, 98 + sb $t0, 8($v0) + + addi $t0, $zero, 121 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 56 + sb $t0, 11($v0) + + addi $t0, $zero, 46 + sb $t0, 12($v0) + + addi $t0, $zero, 46 + sb $t0, 13($v0) + + addi $t0, $zero, 46 + sb $t0, 14($v0) + + addi $t0, $zero, 101 + sb $t0, 15($v0) + + addi $t0, $zero, 110 + sb $t0, 16($v0) + + addi $t0, $zero, 116 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 114 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 104 + sb $t0, 21($v0) + + addi $t0, $zero, 58 + sb $t0, 22($v0) + + addi $t0, $zero, 10 + sb $t0, 23($v0) + + sb $zero, 24($v0) + + sw $v0, 56($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_92] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_95 + lw $t0, 56($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 41 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 41 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 84 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 103 + sb $t0, 12($v0) + + addi $t0, $zero, 101 + sb $t0, 13($v0) + + addi $t0, $zero, 116 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 97 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 110 + sb $t0, 18($v0) + + addi $t0, $zero, 101 + sb $t0, 19($v0) + + addi $t0, $zero, 119 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 110 + sb $t0, 22($v0) + + addi $t0, $zero, 117 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 98 + sb $t0, 25($v0) + + addi $t0, $zero, 101 + sb $t0, 26($v0) + + addi $t0, $zero, 114 + sb $t0, 27($v0) + + addi $t0, $zero, 46 + sb $t0, 28($v0) + + addi $t0, $zero, 46 + sb $t0, 29($v0) + + addi $t0, $zero, 46 + sb $t0, 30($v0) + + addi $t0, $zero, 101 + sb $t0, 31($v0) + + addi $t0, $zero, 110 + sb $t0, 32($v0) + + addi $t0, $zero, 116 + sb $t0, 33($v0) + + addi $t0, $zero, 101 + sb $t0, 34($v0) + + addi $t0, $zero, 114 + sb $t0, 35($v0) + + addi $t0, $zero, 32 + sb $t0, 36($v0) + + addi $t0, $zero, 106 + sb $t0, 37($v0) + + addi $t0, $zero, 58 + sb $t0, 38($v0) + + addi $t0, $zero, 10 + sb $t0, 39($v0) + + sb $zero, 40($v0) + + sw $v0, 40($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 32($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_96] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_99 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 30 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 30 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 84 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 113 + sb $t0, 12($v0) + + addi $t0, $zero, 117 + sb $t0, 13($v0) + + addi $t0, $zero, 105 + sb $t0, 14($v0) + + addi $t0, $zero, 116 + sb $t0, 15($v0) + + addi $t0, $zero, 46 + sb $t0, 16($v0) + + addi $t0, $zero, 46 + sb $t0, 17($v0) + + addi $t0, $zero, 46 + sb $t0, 18($v0) + + addi $t0, $zero, 101 + sb $t0, 19($v0) + + addi $t0, $zero, 110 + sb $t0, 20($v0) + + addi $t0, $zero, 116 + sb $t0, 21($v0) + + addi $t0, $zero, 101 + sb $t0, 22($v0) + + addi $t0, $zero, 114 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 113 + sb $t0, 25($v0) + + addi $t0, $zero, 58 + sb $t0, 26($v0) + + addi $t0, $zero, 10 + sb $t0, 27($v0) + + addi $t0, $zero, 10 + sb $t0, 28($v0) + + sb $zero, 29($v0) + + sw $v0, 24($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD out_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_100] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_103 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD in_string OF Main + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 436($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_106 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 428 + + jr $ra + + function_prompt_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -44 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 40($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET METHOD out_string OF Main + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 32($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 35 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 35 + sw $t0, 4($v0) + + addi $t0, $zero, 80 + sb $t0, 8($v0) + + addi $t0, $zero, 108 + sb $t0, 9($v0) + + addi $t0, $zero, 101 + sb $t0, 10($v0) + + addi $t0, $zero, 97 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 101 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 101 + sb $t0, 15($v0) + + addi $t0, $zero, 110 + sb $t0, 16($v0) + + addi $t0, $zero, 116 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 114 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 97 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 110 + sb $t0, 23($v0) + + addi $t0, $zero, 117 + sb $t0, 24($v0) + + addi $t0, $zero, 109 + sb $t0, 25($v0) + + addi $t0, $zero, 98 + sb $t0, 26($v0) + + addi $t0, $zero, 101 + sb $t0, 27($v0) + + addi $t0, $zero, 114 + sb $t0, 28($v0) + + addi $t0, $zero, 46 + sb $t0, 29($v0) + + addi $t0, $zero, 46 + sb $t0, 30($v0) + + addi $t0, $zero, 46 + sb $t0, 31($v0) + + addi $t0, $zero, 32 + sb $t0, 32($v0) + + addi $t0, $zero, 32 + sb $t0, 33($v0) + + sb $zero, 34($v0) + + sw $v0, 24($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD out_string OF Main + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD in_string OF Main + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 44 + + jr $ra + + function_get_int_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -36 + + # ALLOCATING -> A2I + li $v0, 9 + lw $a0, type_A2I + syscall + la $t0, type_A2I + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A2I + jal function___init___at_A2I + lw $ra, 4($sp) + sw $v1, 36($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [z] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD prompt OF Main + lw $t0, 36($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 20($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 28($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [s] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD a2i OF A2I + lw $t0, 32($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [z] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [s] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 36 + + jr $ra + + function_is_even_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -104 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [num] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # internal_2 <- internal_4 + lw $t0, 84($sp) + sw $t0, 92($sp) + + # IF internal_2 THEN GOTO then_8771330181946 + lw $t0, 92($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330181946 + + # JUMP TO else_8771330181946 + j else_8771330181946 + + then_8771330181946: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_7] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD is_even OF Main + lw $t0, 108($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_8 + lw $t0, 68($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8771330181946 + j endif_8771330181946 + + else_8771330181946: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_13] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # internal_12 <- internal_14 + lw $t0, 44($sp) + sw $t0, 52($sp) + + # IF internal_12 THEN GOTO then_8771330182141 + lw $t0, 52($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330182141 + + # JUMP TO else_8771330182141 + j else_8771330182141 + + then_8771330182141: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # internal_11 <- internal_15 + lw $t0, 40($sp) + sw $t0, 56($sp) + + # JUMP TO endif_8771330182141 + j endif_8771330182141 + + else_8771330182141: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_17 <- internal_19 + lw $t0, 24($sp) + sw $t0, 32($sp) + + # IF internal_17 THEN GOTO then_8771330182452 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330182452 + + # JUMP TO else_8771330182452 + j else_8771330182452 + + then_8771330182452: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_16 <- internal_20 + lw $t0, 20($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8771330182452 + j endif_8771330182452 + + else_8771330182452: + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD is_even OF Main + lw $t0, 108($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_23 + lw $t0, 8($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8771330182452 + j endif_8771330182452 + + endif_8771330182452: + + # internal_11 <- internal_16 + lw $t0, 36($sp) + sw $t0, 56($sp) + + # JUMP TO endif_8771330182141 + j endif_8771330182141 + + endif_8771330182141: + + # internal_1 <- internal_11 + lw $t0, 56($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8771330181946 + j endif_8771330181946 + + endif_8771330181946: + + lw $v1, 96($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 104 + + jr $ra + + function_class_type_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -332 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 328($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 324($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 320($sp) + + # ALLOCATING NUll INTO -> internal_3 + sw $zero, 316($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 312($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 308($sp) + + # internal_6 <- TYPEOF var + lw $t0, 332($sp) + lw $t0, 0($t0) + sw $t0, 304($sp) + + # internal_7 <- internal_6 + lw $t0, 304($sp) + sw $t0, 300($sp) + + while_start_8771330182078: + + # internal_5 <- EQUALADDRESS (internal_7, internal_3) + lw $t0, 300($sp) + lw $t1, 316($sp) + seq $t2, $t0, $t1 + lw $t0, 308($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO while_end_8771330182078 + lw $t0, 308($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8771330182078 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 324($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 336($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 324($sp) + addi $sp, $sp, 12 + + # internal_7 <- ANCESTOR OF internal_7 + lw $t0, 300($sp) + lw $t0, 4($t0) + sw $t0, 300($sp) + + # JUMP TO while_start_8771330182078 + j while_start_8771330182078 + + while_end_8771330182078: + + # internal_7 <- internal_6 + lw $t0, 304($sp) + sw $t0, 300($sp) + + # INITIALIZE ARRAY [internal_4] + lw $t0, 312($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 296($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 292($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 288($sp) + + foreach_start_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_9] + lw $t0, 304($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 324($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # IF internal_10 THEN GOTO foreach_body_8771330182078 + lw $t0, 288($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8771330182078 + + # JUMP TO foreach_end_8771330182078 + j foreach_end_8771330182078 + + foreach_body_8771330182078: + + # ARRAY internal_8[internal_9] <- internal_7 + lw $t0, 292($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 296($sp) + add $t1, $t1, $t0 + lw $t0, 300($sp) + sw $t0, 0($t1) + + # internal_7 <- ANCESTOR OF internal_7 + lw $t0, 300($sp) + lw $t0, 4($t0) + sw $t0, 300($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_9] + lw $t0, 304($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 336($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 304($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8771330182078 + j foreach_start_8771330182078 + + foreach_end_8771330182078: + + # INITIALIZE ARRAY [internal_2] + lw $t0, 320($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 284($sp) + + # INITIALIZE ARRAY [internal_2] + lw $t0, 320($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 280($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 272($sp) + + # internal_13 <- DIRECTION OF A + la $t0, type_A + sw $t0, 276($sp) + + # ARRAY internal_11[internal_14] <- internal_13 + lw $t0, 272($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 284($sp) + add $t1, $t1, $t0 + lw $t0, 276($sp) + sw $t0, 0($t1) + + # ARRAY internal_12[internal_14] <- internal_4 + lw $t0, 272($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 280($sp) + add $t1, $t1, $t0 + lw $t0, 312($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 264($sp) + + # internal_15 <- DIRECTION OF B + la $t0, type_B + sw $t0, 268($sp) + + # ARRAY internal_11[internal_16] <- internal_15 + lw $t0, 264($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 284($sp) + add $t1, $t1, $t0 + lw $t0, 268($sp) + sw $t0, 0($t1) + + # ARRAY internal_12[internal_16] <- internal_4 + lw $t0, 264($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 280($sp) + add $t1, $t1, $t0 + lw $t0, 312($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 256($sp) + + # internal_17 <- DIRECTION OF C + la $t0, type_C + sw $t0, 260($sp) + + # ARRAY internal_11[internal_18] <- internal_17 + lw $t0, 256($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 284($sp) + add $t1, $t1, $t0 + lw $t0, 260($sp) + sw $t0, 0($t1) + + # ARRAY internal_12[internal_18] <- internal_4 + lw $t0, 256($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 280($sp) + add $t1, $t1, $t0 + lw $t0, 312($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 248($sp) + + # internal_19 <- DIRECTION OF D + la $t0, type_D + sw $t0, 252($sp) + + # ARRAY internal_11[internal_20] <- internal_19 + lw $t0, 248($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 284($sp) + add $t1, $t1, $t0 + lw $t0, 252($sp) + sw $t0, 0($t1) + + # ARRAY internal_12[internal_20] <- internal_4 + lw $t0, 248($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 280($sp) + add $t1, $t1, $t0 + lw $t0, 312($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 240($sp) + + # internal_21 <- DIRECTION OF E + la $t0, type_E + sw $t0, 244($sp) + + # ARRAY internal_11[internal_22] <- internal_21 + lw $t0, 240($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 284($sp) + add $t1, $t1, $t0 + lw $t0, 244($sp) + sw $t0, 0($t1) + + # ARRAY internal_12[internal_22] <- internal_4 + lw $t0, 240($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 280($sp) + add $t1, $t1, $t0 + lw $t0, 312($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 232($sp) + + # internal_23 <- DIRECTION OF Object + la $t0, type_Object + sw $t0, 236($sp) + + # ARRAY internal_11[internal_24] <- internal_23 + lw $t0, 232($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 284($sp) + add $t1, $t1, $t0 + lw $t0, 236($sp) + sw $t0, 0($t1) + + # ARRAY internal_12[internal_24] <- internal_4 + lw $t0, 232($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 280($sp) + add $t1, $t1, $t0 + lw $t0, 312($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 228($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 224($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 216($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 212($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 204($sp) + + foreach_type_start_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 332($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 236($sp) + addi $sp, $sp, 12 + + # IF internal_26 THEN GOTO foreach_type_body_8771330182078 + lw $t0, 224($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8771330182078 + + # JUMP TO foreach_type_end_8771330182078 + j foreach_type_end_8771330182078 + + foreach_type_body_8771330182078: + + # internal_27 <- ARRAY internal_11[internal_25] + lw $t0, 228($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 284($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 220($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_28] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 340($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 228($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_28] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 324($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 224($sp) + addi $sp, $sp, 12 + + # IF internal_29 THEN GOTO foreach_ancestor_body_8771330182078 + lw $t0, 212($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8771330182078 + + # JUMP TO foreach_ancestor_end_8771330182078 + j foreach_ancestor_end_8771330182078 + + foreach_ancestor_body_8771330182078: + + # internal_30 <- ARRAY internal_8[internal_28] + lw $t0, 216($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 296($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 208($sp) + + # internal_31 <- EQUALADDRESS (internal_27, internal_30) + lw $t0, 220($sp) + lw $t1, 208($sp) + seq $t2, $t0, $t1 + lw $t0, 204($sp) + sw $t2, 8($t0) + + # IF internal_31 THEN GOTO foreach_ancestor_end_8771330182078 + lw $t0, 204($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8771330182078 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_28] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 336($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 228($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8771330182078 + j foreach_ancestor_start_8771330182078 + + foreach_ancestor_end_8771330182078: + + # ARRAY internal_12[internal_25] <- internal_28 + lw $t0, 228($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 280($sp) + add $t1, $t1, $t0 + lw $t0, 216($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 336($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 240($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8771330182078 + j foreach_type_start_8771330182078 + + foreach_type_end_8771330182078: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 200($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 196($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 188($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_35] + lw $t0, 200($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 324($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 200($sp) + addi $sp, $sp, 12 + + foreach_min_start_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 212($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 332($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 196($sp) + addi $sp, $sp, 12 + + # IF internal_36 THEN GOTO foreach_min_body_8771330182078 + lw $t0, 184($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8771330182078 + + # JUMP TO foreach_min_end_8771330182078 + j foreach_min_end_8771330182078 + + foreach_min_body_8771330182078: + + # internal_34 <- ARRAY internal_12[internal_32] + lw $t0, 200($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 280($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 192($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_34] + lw $t0, 204($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_35] + lw $t0, 200($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 196($sp) + addi $sp, $sp, 12 + + # IF internal_36 THEN GOTO update_min_8771330182078 + lw $t0, 184($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8771330182078 + + # JUMP TO update_min_end_8771330182078 + j update_min_end_8771330182078 + + update_min_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_35] + lw $t0, 200($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_34] + lw $t0, 204($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 200($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_33] + lw $t0, 208($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 208($sp) + addi $sp, $sp, 12 + + update_min_end_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 212($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 336($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 212($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8771330182078 + j foreach_min_start_8771330182078 + + foreach_min_end_8771330182078: + + # INITIALIZE ARRAY [internal_2] + lw $t0, 320($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 180($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # ARRAY internal_37[internal_38] <- internal_0 + lw $t0, 176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 328($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 172($sp) + + # ARRAY internal_37[internal_39] <- internal_0 + lw $t0, 172($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 328($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # ARRAY internal_37[internal_40] <- internal_0 + lw $t0, 168($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 328($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 164($sp) + + # ARRAY internal_37[internal_41] <- internal_0 + lw $t0, 164($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 328($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # ARRAY internal_37[internal_42] <- internal_0 + lw $t0, 160($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 328($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 156($sp) + + # ARRAY internal_37[internal_43] <- internal_0 + lw $t0, 156($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 328($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 152($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_35] + lw $t0, 200($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 324($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 164($sp) + addi $sp, $sp, 12 + + # IF internal_44 THEN GOTO error_branch_8771330182078 + lw $t0, 152($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8771330182078 + + # ARRAY internal_37[internal_33] <- internal_1 + lw $t0, 196($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 324($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # internal_45 <- ARRAY internal_37[internal_46] + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 148($sp) + sw $t0, 8($t2) + + # IF internal_45 THEN GOTO branch_A_8771330182078 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_A_8771330182078 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 140($sp) + + # internal_45 <- ARRAY internal_37[internal_47] + lw $t0, 140($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 148($sp) + sw $t0, 8($t2) + + # IF internal_45 THEN GOTO branch_B_8771330182078 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_B_8771330182078 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # internal_45 <- ARRAY internal_37[internal_48] + lw $t0, 136($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 148($sp) + sw $t0, 8($t2) + + # IF internal_45 THEN GOTO branch_C_8771330182078 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_C_8771330182078 + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # internal_45 <- ARRAY internal_37[internal_49] + lw $t0, 132($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 148($sp) + sw $t0, 8($t2) + + # IF internal_45 THEN GOTO branch_D_8771330182078 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_D_8771330182078 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # internal_45 <- ARRAY internal_37[internal_50] + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 148($sp) + sw $t0, 8($t2) + + # IF internal_45 THEN GOTO branch_E_8771330182078 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_E_8771330182078 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # internal_45 <- ARRAY internal_37[internal_51] + lw $t0, 124($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 180($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 148($sp) + sw $t0, 8($t2) + + # IF internal_45 THEN GOTO branch_Object_8771330182078 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Object_8771330182078 + + branch_A_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a] + lw $t0, 128($sp) + sw $t0, 4($sp) + + # ARGUMENT [var] + lw $t0, 344($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 29 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 29 + sw $t0, 4($v0) + + addi $t0, $zero, 67 + sb $t0, 8($v0) + + addi $t0, $zero, 108 + sb $t0, 9($v0) + + addi $t0, $zero, 97 + sb $t0, 10($v0) + + addi $t0, $zero, 115 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 116 + sb $t0, 14($v0) + + addi $t0, $zero, 121 + sb $t0, 15($v0) + + addi $t0, $zero, 112 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 105 + sb $t0, 19($v0) + + addi $t0, $zero, 115 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 110 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 119 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 65 + sb $t0, 26($v0) + + addi $t0, $zero, 10 + sb $t0, 27($v0) + + sb $zero, 28($v0) + + sw $v0, 112($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # GET METHOD out_string OF Main + lw $t0, 336($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 104($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 100($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 348($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_54] + lw $t0, 124($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_57 + lw $t0, 112($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 120($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_52] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_55] + lw $t0, 120($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_52 <- internal_55 + lw $t0, 108($sp) + sw $t0, 120($sp) + + # JUMP TO branch_end_8771330182078 + j branch_end_8771330182078 + + branch_B_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [b] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [var] + lw $t0, 344($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 108($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 29 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 29 + sw $t0, 4($v0) + + addi $t0, $zero, 67 + sb $t0, 8($v0) + + addi $t0, $zero, 108 + sb $t0, 9($v0) + + addi $t0, $zero, 97 + sb $t0, 10($v0) + + addi $t0, $zero, 115 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 116 + sb $t0, 14($v0) + + addi $t0, $zero, 121 + sb $t0, 15($v0) + + addi $t0, $zero, 112 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 105 + sb $t0, 19($v0) + + addi $t0, $zero, 115 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 110 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 119 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 66 + sb $t0, 26($v0) + + addi $t0, $zero, 10 + sb $t0, 27($v0) + + sb $zero, 28($v0) + + sw $v0, 92($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD out_string OF Main + lw $t0, 336($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 348($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_59] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_62 + lw $t0, 92($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_52] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_52 <- internal_60 + lw $t0, 88($sp) + sw $t0, 120($sp) + + # JUMP TO branch_end_8771330182078 + j branch_end_8771330182078 + + branch_C_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [var] + lw $t0, 344($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 29 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 29 + sw $t0, 4($v0) + + addi $t0, $zero, 67 + sb $t0, 8($v0) + + addi $t0, $zero, 108 + sb $t0, 9($v0) + + addi $t0, $zero, 97 + sb $t0, 10($v0) + + addi $t0, $zero, 115 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 116 + sb $t0, 14($v0) + + addi $t0, $zero, 121 + sb $t0, 15($v0) + + addi $t0, $zero, 112 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 105 + sb $t0, 19($v0) + + addi $t0, $zero, 115 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 110 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 119 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 67 + sb $t0, 26($v0) + + addi $t0, $zero, 10 + sb $t0, 27($v0) + + sb $zero, 28($v0) + + sw $v0, 72($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD out_string OF Main + lw $t0, 336($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 348($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_64] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_67 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_52] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_65] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_52 <- internal_65 + lw $t0, 68($sp) + sw $t0, 120($sp) + + # JUMP TO branch_end_8771330182078 + j branch_end_8771330182078 + + branch_D_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [d] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [var] + lw $t0, 344($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 29 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 29 + sw $t0, 4($v0) + + addi $t0, $zero, 67 + sb $t0, 8($v0) + + addi $t0, $zero, 108 + sb $t0, 9($v0) + + addi $t0, $zero, 97 + sb $t0, 10($v0) + + addi $t0, $zero, 115 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 116 + sb $t0, 14($v0) + + addi $t0, $zero, 121 + sb $t0, 15($v0) + + addi $t0, $zero, 112 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 105 + sb $t0, 19($v0) + + addi $t0, $zero, 115 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 110 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 119 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 68 + sb $t0, 26($v0) + + addi $t0, $zero, 10 + sb $t0, 27($v0) + + sb $zero, 28($v0) + + sw $v0, 52($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET METHOD out_string OF Main + lw $t0, 336($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 44($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 348($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_69] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_72 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_52] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_70] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_52 <- internal_70 + lw $t0, 48($sp) + sw $t0, 120($sp) + + # JUMP TO branch_end_8771330182078 + j branch_end_8771330182078 + + branch_E_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [e] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [var] + lw $t0, 344($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 29 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 29 + sw $t0, 4($v0) + + addi $t0, $zero, 67 + sb $t0, 8($v0) + + addi $t0, $zero, 108 + sb $t0, 9($v0) + + addi $t0, $zero, 97 + sb $t0, 10($v0) + + addi $t0, $zero, 115 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 116 + sb $t0, 14($v0) + + addi $t0, $zero, 121 + sb $t0, 15($v0) + + addi $t0, $zero, 112 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 105 + sb $t0, 19($v0) + + addi $t0, $zero, 115 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 110 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 119 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 69 + sb $t0, 26($v0) + + addi $t0, $zero, 10 + sb $t0, 27($v0) + + sb $zero, 28($v0) + + sw $v0, 32($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD out_string OF Main + lw $t0, 336($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 348($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_74] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_77 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_52] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_75] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_52 <- internal_75 + lw $t0, 28($sp) + sw $t0, 120($sp) + + # JUMP TO branch_end_8771330182078 + j branch_end_8771330182078 + + branch_Object_8771330182078: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [o] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [var] + lw $t0, 344($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 16 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 16 + sw $t0, 4($v0) + + addi $t0, $zero, 79 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 111 + sb $t0, 11($v0) + + addi $t0, $zero, 112 + sb $t0, 12($v0) + + addi $t0, $zero, 115 + sb $t0, 13($v0) + + addi $t0, $zero, 10 + sb $t0, 14($v0) + + sb $zero, 15($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 336($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 348($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_79] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_82 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_52] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_80] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_52 <- internal_80 + lw $t0, 8($sp) + sw $t0, 120($sp) + + # JUMP TO branch_end_8771330182078 + j branch_end_8771330182078 + + error_branch_8771330182078: + + branch_end_8771330182078: + + lw $v1, 120($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 332 + + jr $ra + + function_print_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -60 + + # ALLOCATING -> A2I + li $v0, 9 + lw $a0, type_A2I + syscall + la $t0, type_A2I + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A2I + jal function___init___at_A2I + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [z] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET METHOD value OF A + lw $t0, 60($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 44($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [var] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 56($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET METHOD i2a OF A2I + lw $t0, 56($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 32($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [z] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Main + lw $t0, 64($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 64($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 60 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -1228 + + # ALLOCATING -> A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 1224($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 1232($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 1232($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 1224($sp) + beq $t1, $zero, object_set_attribute_8771330081552 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330081552 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330081552 + j object_set_attribute_8771330081552 + int_set_attribute_8771330081552: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330081552 + bool_set_attribute_8771330081552: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330081552 + object_set_attribute_8771330081552: + sw $t1, 12($t0) + end_set_attribute_8771330081552: + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 1220($sp) + + while_start_8771330182449: + + # GET ATTRIBUTE flag OF self + lw $t0, 1228($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330081633 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330081633 + j object_get_attribute_8771330081633 + int_get_attribute_8771330081633: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1216($sp) + j end_get_attribute_8771330081633 + bool_get_attribute_8771330081633: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1216($sp) + j end_get_attribute_8771330081633 + object_get_attribute_8771330081633: + sw $t1, 1216($sp) + end_get_attribute_8771330081633: + + # IF internal_2 THEN GOTO while_body_8771330182449 + lw $t0, 1216($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8771330182449 + + # JUMP TO while_end_8771330182449 + j while_end_8771330182449 + + while_body_8771330182449: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 16 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 16 + sw $t0, 4($v0) + + addi $t0, $zero, 110 + sb $t0, 8($v0) + + addi $t0, $zero, 117 + sb $t0, 9($v0) + + addi $t0, $zero, 109 + sb $t0, 10($v0) + + addi $t0, $zero, 98 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 114 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + sb $zero, 15($v0) + + sw $v0, 1212($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 1204($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1204($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1200($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 1224($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 1212($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 1220($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330081765 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330081765 + j object_get_attribute_8771330081765 + int_get_attribute_8771330081765: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1196($sp) + j end_get_attribute_8771330081765 + bool_get_attribute_8771330081765: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1196($sp) + j end_get_attribute_8771330081765 + object_get_attribute_8771330081765: + sw $t1, 1196($sp) + end_get_attribute_8771330081765: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 1188($sp) + + # GET METHOD print OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1188($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1184($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 1208($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 1196($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 1204($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 1176($sp) + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330082139 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330082139 + j object_get_attribute_8771330082139 + int_get_attribute_8771330082139: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1172($sp) + j end_get_attribute_8771330082139 + bool_get_attribute_8771330082139: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1172($sp) + j end_get_attribute_8771330082139 + object_get_attribute_8771330082139: + sw $t1, 1172($sp) + end_get_attribute_8771330082139: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 1164($sp) + + # GET METHOD value OF A + lw $t0, 1172($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1164($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1160($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 1180($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 1168($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 1176($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 1152($sp) + + # GET METHOD is_even OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1152($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1148($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 1180($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 1160($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 1168($sp) + addi $sp, $sp, 12 + + # internal_12 <- internal_17 + lw $t0, 1156($sp) + sw $t0, 1176($sp) + + # IF internal_12 THEN GOTO then_8771330182578 + lw $t0, 1176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330182578 + + # JUMP TO else_8771330182578 + j else_8771330182578 + + then_8771330182578: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 18 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 18 + sw $t0, 4($v0) + + addi $t0, $zero, 105 + sb $t0, 8($v0) + + addi $t0, $zero, 115 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 118 + sb $t0, 12($v0) + + addi $t0, $zero, 101 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 33 + sb $t0, 15($v0) + + addi $t0, $zero, 10 + sb $t0, 16($v0) + + sb $zero, 17($v0) + + sw $v0, 1144($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 1136($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1136($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1132($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 1156($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 1144($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 1152($sp) + addi $sp, $sp, 12 + + # internal_11 <- internal_21 + lw $t0, 1140($sp) + sw $t0, 1180($sp) + + # JUMP TO endif_8771330182578 + j endif_8771330182578 + + else_8771330182578: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 17 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 17 + sw $t0, 4($v0) + + addi $t0, $zero, 105 + sb $t0, 8($v0) + + addi $t0, $zero, 115 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 111 + sb $t0, 11($v0) + + addi $t0, $zero, 100 + sb $t0, 12($v0) + + addi $t0, $zero, 100 + sb $t0, 13($v0) + + addi $t0, $zero, 33 + sb $t0, 14($v0) + + addi $t0, $zero, 10 + sb $t0, 15($v0) + + sb $zero, 16($v0) + + sw $v0, 1128($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 1120($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1120($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1116($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_24] + lw $t0, 1140($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_27 + lw $t0, 1128($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 1136($sp) + addi $sp, $sp, 12 + + # internal_11 <- internal_25 + lw $t0, 1124($sp) + sw $t0, 1180($sp) + + # JUMP TO endif_8771330182578 + j endif_8771330182578 + + endif_8771330182578: + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330082413 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330082413 + j object_get_attribute_8771330082413 + int_get_attribute_8771330082413: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1112($sp) + j end_get_attribute_8771330082413 + bool_get_attribute_8771330082413: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1112($sp) + j end_get_attribute_8771330082413 + object_get_attribute_8771330082413: + sw $t1, 1112($sp) + end_get_attribute_8771330082413: + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 1104($sp) + + # GET METHOD class_type OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1104($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1100($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_28] + lw $t0, 1124($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_31 + lw $t0, 1112($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 1120($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 1092($sp) + + # GET METHOD menu OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1092($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1088($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 1236($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_34 + lw $t0, 1096($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 1104($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 1096($sp) + beq $t1, $zero, object_set_attribute_8771330082455 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330082455 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330082455 + j object_set_attribute_8771330082455 + int_set_attribute_8771330082455: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330082455 + bool_set_attribute_8771330082455: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8771330082455 + object_set_attribute_8771330082455: + sw $t1, 8($t0) + end_set_attribute_8771330082455: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 1080($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330082823 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330082823 + j object_get_attribute_8771330082823 + int_get_attribute_8771330082823: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1076($sp) + j end_get_attribute_8771330082823 + bool_get_attribute_8771330082823: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1076($sp) + j end_get_attribute_8771330082823 + object_get_attribute_8771330082823: + sw $t1, 1076($sp) + end_get_attribute_8771330082823: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 97 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 1072($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_37] + lw $t0, 1088($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_38] + lw $t0, 1084($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 1080($sp) + addi $sp, $sp, 12 + + # internal_36 <- internal_39 + lw $t0, 1068($sp) + sw $t0, 1080($sp) + + # IF internal_36 THEN GOTO then_8771330183554 + lw $t0, 1080($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330183554 + + # JUMP TO else_8771330183554 + j else_8771330183554 + + then_8771330183554: + + # ALLOCATING -> A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 1064($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_40] + lw $t0, 1072($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 1072($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 1056($sp) + + # GET METHOD get_int OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1056($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1052($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 1236($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_43 + lw $t0, 1060($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 1068($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 1044($sp) + + # GET METHOD set_var OF A + lw $t0, 1064($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1044($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1040($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_40] + lw $t0, 1076($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_41] + lw $t0, 1072($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_46 + lw $t0, 1052($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 1060($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE a_var OF self + lw $t0, 1228($sp) + lw $t1, 1048($sp) + beq $t1, $zero, object_set_attribute_8771330082910 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330082910 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330082910 + j object_set_attribute_8771330082910 + int_set_attribute_8771330082910: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8771330082910 + bool_set_attribute_8771330082910: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8771330082910 + object_set_attribute_8771330082910: + sw $t1, 16($t0) + end_set_attribute_8771330082910: + + # ALLOCATING -> B + li $v0, 9 + lw $a0, type_B + syscall + la $t0, type_B + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 1036($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 1044($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_B + jal function___init___at_B + lw $ra, 4($sp) + sw $v1, 1044($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330083624 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330083624 + j object_get_attribute_8771330083624 + int_get_attribute_8771330083624: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1032($sp) + j end_get_attribute_8771330083624 + bool_get_attribute_8771330083624: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1032($sp) + j end_get_attribute_8771330083624 + object_get_attribute_8771330083624: + sw $t1, 1032($sp) + end_get_attribute_8771330083624: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 1024($sp) + + # GET METHOD value OF A + lw $t0, 1032($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1024($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1020($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_48] + lw $t0, 1040($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_51 + lw $t0, 1028($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 1036($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE a_var OF self + lw $t0, 1228($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330083678 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330083678 + j object_get_attribute_8771330083678 + int_get_attribute_8771330083678: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1016($sp) + j end_get_attribute_8771330083678 + bool_get_attribute_8771330083678: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 1016($sp) + j end_get_attribute_8771330083678 + object_get_attribute_8771330083678: + sw $t1, 1016($sp) + end_get_attribute_8771330083678: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 1008($sp) + + # GET METHOD value OF A + lw $t0, 1016($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 1008($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 1004($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_52] + lw $t0, 1024($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_55 + lw $t0, 1012($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 1020($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 996($sp) + + # GET METHOD method2 OF B + lw $t0, 1036($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 996($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 992($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_47] + lw $t0, 1052($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_49] + lw $t0, 1044($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_53] + lw $t0, 1028($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_58 + lw $t0, 1008($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 1016($sp) + addi $sp, $sp, 16 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 1000($sp) + beq $t1, $zero, object_set_attribute_8771330083036 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330083036 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330083036 + j object_set_attribute_8771330083036 + int_set_attribute_8771330083036: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330083036 + bool_set_attribute_8771330083036: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330083036 + object_set_attribute_8771330083036: + sw $t1, 12($t0) + end_set_attribute_8771330083036: + + # internal_35 <- internal_56 + lw $t0, 1000($sp) + sw $t0, 1084($sp) + + # JUMP TO endif_8771330183554 + j endif_8771330183554 + + else_8771330183554: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 984($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330083810 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330083810 + j object_get_attribute_8771330083810 + int_get_attribute_8771330083810: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 980($sp) + j end_get_attribute_8771330083810 + bool_get_attribute_8771330083810: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 980($sp) + j end_get_attribute_8771330083810 + object_get_attribute_8771330083810: + sw $t1, 980($sp) + end_get_attribute_8771330083810: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 98 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 976($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_61] + lw $t0, 992($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_62] + lw $t0, 988($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 984($sp) + addi $sp, $sp, 12 + + # internal_60 <- internal_63 + lw $t0, 972($sp) + sw $t0, 984($sp) + + # IF internal_60 THEN GOTO then_8771330183608 + lw $t0, 984($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330183608 + + # JUMP TO else_8771330183608 + j else_8771330183608 + + then_8771330183608: + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330084157 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330084157 + j object_get_attribute_8771330084157 + int_get_attribute_8771330084157: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 968($sp) + j end_get_attribute_8771330084157 + bool_get_attribute_8771330084157: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 968($sp) + j end_get_attribute_8771330084157 + object_get_attribute_8771330084157: + sw $t1, 968($sp) + end_get_attribute_8771330084157: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 964($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 960($sp) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 956($sp) + + # ALLOCATING NUll INTO -> internal_68 + sw $zero, 952($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 948($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 944($sp) + + # internal_71 <- TYPEOF internal_64 + lw $t0, 968($sp) + lw $t0, 0($t0) + sw $t0, 940($sp) + + # internal_72 <- internal_71 + lw $t0, 940($sp) + sw $t0, 936($sp) + + while_start_8771330183605: + + # internal_70 <- EQUALADDRESS (internal_72, internal_68) + lw $t0, 936($sp) + lw $t1, 952($sp) + seq $t2, $t0, $t1 + lw $t0, 944($sp) + sw $t2, 8($t0) + + # IF internal_70 THEN GOTO while_end_8771330183605 + lw $t0, 944($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8771330183605 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_69] + lw $t0, 960($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_66] + lw $t0, 972($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 960($sp) + addi $sp, $sp, 12 + + # internal_72 <- ANCESTOR OF internal_72 + lw $t0, 936($sp) + lw $t0, 4($t0) + sw $t0, 936($sp) + + # JUMP TO while_start_8771330183605 + j while_start_8771330183605 + + while_end_8771330183605: + + # internal_72 <- internal_71 + lw $t0, 940($sp) + sw $t0, 936($sp) + + # INITIALIZE ARRAY [internal_69] + lw $t0, 948($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 932($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 928($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 924($sp) + + foreach_start_8771330183605: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_74] + lw $t0, 940($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_69] + lw $t0, 960($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 936($sp) + addi $sp, $sp, 12 + + # IF internal_75 THEN GOTO foreach_body_8771330183605 + lw $t0, 924($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8771330183605 + + # JUMP TO foreach_end_8771330183605 + j foreach_end_8771330183605 + + foreach_body_8771330183605: + + # ARRAY internal_73[internal_74] <- internal_72 + lw $t0, 928($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 932($sp) + add $t1, $t1, $t0 + lw $t0, 936($sp) + sw $t0, 0($t1) + + # internal_72 <- ANCESTOR OF internal_72 + lw $t0, 936($sp) + lw $t0, 4($t0) + sw $t0, 936($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_74] + lw $t0, 940($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_66] + lw $t0, 972($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 940($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8771330183605 + j foreach_start_8771330183605 + + foreach_end_8771330183605: + + # INITIALIZE ARRAY [internal_67] + lw $t0, 956($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 920($sp) + + # INITIALIZE ARRAY [internal_67] + lw $t0, 956($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 916($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 908($sp) + + # internal_78 <- DIRECTION OF C + la $t0, type_C + sw $t0, 912($sp) + + # ARRAY internal_76[internal_79] <- internal_78 + lw $t0, 908($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 920($sp) + add $t1, $t1, $t0 + lw $t0, 912($sp) + sw $t0, 0($t1) + + # ARRAY internal_77[internal_79] <- internal_69 + lw $t0, 908($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 916($sp) + add $t1, $t1, $t0 + lw $t0, 948($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 900($sp) + + # internal_80 <- DIRECTION OF A + la $t0, type_A + sw $t0, 904($sp) + + # ARRAY internal_76[internal_81] <- internal_80 + lw $t0, 900($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 920($sp) + add $t1, $t1, $t0 + lw $t0, 904($sp) + sw $t0, 0($t1) + + # ARRAY internal_77[internal_81] <- internal_69 + lw $t0, 900($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 916($sp) + add $t1, $t1, $t0 + lw $t0, 948($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 892($sp) + + # internal_82 <- DIRECTION OF Object + la $t0, type_Object + sw $t0, 896($sp) + + # ARRAY internal_76[internal_83] <- internal_82 + lw $t0, 892($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 920($sp) + add $t1, $t1, $t0 + lw $t0, 896($sp) + sw $t0, 0($t1) + + # ARRAY internal_77[internal_83] <- internal_69 + lw $t0, 892($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 916($sp) + add $t1, $t1, $t0 + lw $t0, 948($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 888($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 884($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 876($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 872($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 864($sp) + + foreach_type_start_8771330183605: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_84] + lw $t0, 900($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_67] + lw $t0, 968($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 896($sp) + addi $sp, $sp, 12 + + # IF internal_85 THEN GOTO foreach_type_body_8771330183605 + lw $t0, 884($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8771330183605 + + # JUMP TO foreach_type_end_8771330183605 + j foreach_type_end_8771330183605 + + foreach_type_body_8771330183605: + + # internal_86 <- ARRAY internal_76[internal_84] + lw $t0, 888($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 920($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 880($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_87] + lw $t0, 888($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_65] + lw $t0, 976($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 888($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8771330183605: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_87] + lw $t0, 888($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_69] + lw $t0, 960($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 884($sp) + addi $sp, $sp, 12 + + # IF internal_88 THEN GOTO foreach_ancestor_body_8771330183605 + lw $t0, 872($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8771330183605 + + # JUMP TO foreach_ancestor_end_8771330183605 + j foreach_ancestor_end_8771330183605 + + foreach_ancestor_body_8771330183605: + + # internal_89 <- ARRAY internal_73[internal_87] + lw $t0, 876($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 932($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 868($sp) + + # internal_90 <- EQUALADDRESS (internal_86, internal_89) + lw $t0, 880($sp) + lw $t1, 868($sp) + seq $t2, $t0, $t1 + lw $t0, 864($sp) + sw $t2, 8($t0) + + # IF internal_90 THEN GOTO foreach_ancestor_end_8771330183605 + lw $t0, 864($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8771330183605 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_87] + lw $t0, 888($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_66] + lw $t0, 972($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 888($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8771330183605 + j foreach_ancestor_start_8771330183605 + + foreach_ancestor_end_8771330183605: + + # ARRAY internal_77[internal_84] <- internal_87 + lw $t0, 888($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 916($sp) + add $t1, $t1, $t0 + lw $t0, 876($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_84] + lw $t0, 900($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_66] + lw $t0, 972($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 900($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8771330183605 + j foreach_type_start_8771330183605 + + foreach_type_end_8771330183605: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 860($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 856($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 852($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 848($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 844($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_94] + lw $t0, 860($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_69] + lw $t0, 960($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 860($sp) + addi $sp, $sp, 12 + + foreach_min_start_8771330183605: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_91] + lw $t0, 872($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_67] + lw $t0, 968($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 856($sp) + addi $sp, $sp, 12 + + # IF internal_95 THEN GOTO foreach_min_body_8771330183605 + lw $t0, 844($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8771330183605 + + # JUMP TO foreach_min_end_8771330183605 + j foreach_min_end_8771330183605 + + foreach_min_body_8771330183605: + + # internal_93 <- ARRAY internal_77[internal_91] + lw $t0, 860($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 916($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 852($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_93] + lw $t0, 864($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_94] + lw $t0, 860($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 856($sp) + addi $sp, $sp, 12 + + # IF internal_95 THEN GOTO update_min_8771330183605 + lw $t0, 844($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8771330183605 + + # JUMP TO update_min_end_8771330183605 + j update_min_end_8771330183605 + + update_min_8771330183605: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_94] + lw $t0, 860($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_93] + lw $t0, 864($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 860($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_92] + lw $t0, 868($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_91] + lw $t0, 872($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 868($sp) + addi $sp, $sp, 12 + + update_min_end_8771330183605: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_91] + lw $t0, 872($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_66] + lw $t0, 972($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 872($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8771330183605 + j foreach_min_start_8771330183605 + + foreach_min_end_8771330183605: + + # INITIALIZE ARRAY [internal_67] + lw $t0, 956($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 840($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 836($sp) + + # ARRAY internal_96[internal_97] <- internal_65 + lw $t0, 836($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 840($sp) + add $t1, $t1, $t0 + lw $t0, 964($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 832($sp) + + # ARRAY internal_96[internal_98] <- internal_65 + lw $t0, 832($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 840($sp) + add $t1, $t1, $t0 + lw $t0, 964($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 828($sp) + + # ARRAY internal_96[internal_99] <- internal_65 + lw $t0, 828($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 840($sp) + add $t1, $t1, $t0 + lw $t0, 964($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 824($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_94] + lw $t0, 860($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_69] + lw $t0, 960($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 836($sp) + addi $sp, $sp, 12 + + # IF internal_100 THEN GOTO error_branch_8771330183605 + lw $t0, 824($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8771330183605 + + # ARRAY internal_96[internal_92] <- internal_66 + lw $t0, 856($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 840($sp) + add $t1, $t1, $t0 + lw $t0, 960($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 820($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 816($sp) + + # internal_101 <- ARRAY internal_96[internal_102] + lw $t0, 816($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 840($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 820($sp) + sw $t0, 8($t2) + + # IF internal_101 THEN GOTO branch_C_8771330183605 + lw $t0, 820($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_C_8771330183605 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 812($sp) + + # internal_101 <- ARRAY internal_96[internal_103] + lw $t0, 812($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 840($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 820($sp) + sw $t0, 8($t2) + + # IF internal_101 THEN GOTO branch_A_8771330183605 + lw $t0, 820($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_A_8771330183605 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 808($sp) + + # internal_101 <- ARRAY internal_96[internal_104] + lw $t0, 808($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 840($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 820($sp) + sw $t0, 8($t2) + + # IF internal_101 THEN GOTO branch_Object_8771330183605 + lw $t0, 820($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Object_8771330183605 + + branch_C_8771330183605: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 812($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_64] + lw $t0, 980($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 812($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 792($sp) + + # GET METHOD value OF C + lw $t0, 800($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 792($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 788($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [c] + lw $t0, 808($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_109 + lw $t0, 796($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 804($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 780($sp) + + # GET METHOD method6 OF C + lw $t0, 800($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 780($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 776($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 812($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_107] + lw $t0, 808($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_112 + lw $t0, 788($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 796($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 784($sp) + beq $t1, $zero, object_set_attribute_8771330086672 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330086672 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330086672 + j object_set_attribute_8771330086672 + int_set_attribute_8771330086672: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330086672 + bool_set_attribute_8771330086672: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330086672 + object_set_attribute_8771330086672: + sw $t1, 12($t0) + end_set_attribute_8771330086672: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_105] + lw $t0, 816($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_110] + lw $t0, 796($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 816($sp) + addi $sp, $sp, 12 + + # internal_105 <- internal_110 + lw $t0, 784($sp) + sw $t0, 804($sp) + + # JUMP TO branch_end_8771330183605 + j branch_end_8771330183605 + + branch_A_8771330183605: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a] + lw $t0, 784($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_64] + lw $t0, 980($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 784($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 764($sp) + + # GET METHOD value OF A + lw $t0, 772($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 764($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 760($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [a] + lw $t0, 780($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_116 + lw $t0, 768($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 776($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 752($sp) + + # GET METHOD method3 OF A + lw $t0, 772($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 752($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 748($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a] + lw $t0, 784($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_114] + lw $t0, 780($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_119 + lw $t0, 760($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 768($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 756($sp) + beq $t1, $zero, object_set_attribute_8771330086840 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330086840 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330086840 + j object_set_attribute_8771330086840 + int_set_attribute_8771330086840: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330086840 + bool_set_attribute_8771330086840: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330086840 + object_set_attribute_8771330086840: + sw $t1, 12($t0) + end_set_attribute_8771330086840: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_105] + lw $t0, 816($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_117] + lw $t0, 768($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 816($sp) + addi $sp, $sp, 12 + + # internal_105 <- internal_117 + lw $t0, 756($sp) + sw $t0, 804($sp) + + # JUMP TO branch_end_8771330183605 + j branch_end_8771330183605 + + branch_Object_8771330183605: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [o] + lw $t0, 756($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_64] + lw $t0, 980($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 756($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 16 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 16 + sw $t0, 4($v0) + + addi $t0, $zero, 79 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 111 + sb $t0, 11($v0) + + addi $t0, $zero, 112 + sb $t0, 12($v0) + + addi $t0, $zero, 115 + sb $t0, 13($v0) + + addi $t0, $zero, 10 + sb $t0, 14($v0) + + sb $zero, 15($v0) + + sw $v0, 740($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 732($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 732($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 728($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_121] + lw $t0, 752($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_124 + lw $t0, 740($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 748($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 720($sp) + + # GET METHOD abort OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 720($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 716($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 1236($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_127 + lw $t0, 724($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 732($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 712($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_105] + lw $t0, 816($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_128] + lw $t0, 724($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 816($sp) + addi $sp, $sp, 12 + + # internal_105 <- internal_128 + lw $t0, 712($sp) + sw $t0, 804($sp) + + # JUMP TO branch_end_8771330183605 + j branch_end_8771330183605 + + error_branch_8771330183605: + + branch_end_8771330183605: + + # internal_59 <- internal_105 + lw $t0, 804($sp) + sw $t0, 988($sp) + + # JUMP TO endif_8771330183608 + j endif_8771330183608 + + else_8771330183608: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 704($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330087491 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330087491 + j object_get_attribute_8771330087491 + int_get_attribute_8771330087491: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 700($sp) + j end_get_attribute_8771330087491 + bool_get_attribute_8771330087491: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 700($sp) + j end_get_attribute_8771330087491 + object_get_attribute_8771330087491: + sw $t1, 700($sp) + end_get_attribute_8771330087491: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 99 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 696($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_131] + lw $t0, 712($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_132] + lw $t0, 708($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 704($sp) + addi $sp, $sp, 12 + + # internal_130 <- internal_133 + lw $t0, 692($sp) + sw $t0, 704($sp) + + # IF internal_130 THEN GOTO then_8771330184545 + lw $t0, 704($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330184545 + + # JUMP TO else_8771330184545 + j else_8771330184545 + + then_8771330184545: + + # ALLOCATING -> A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 688($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_134] + lw $t0, 696($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 696($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 680($sp) + + # GET METHOD get_int OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 680($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 676($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 1236($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_137 + lw $t0, 684($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 692($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 668($sp) + + # GET METHOD set_var OF A + lw $t0, 688($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 668($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 664($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_134] + lw $t0, 700($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_135] + lw $t0, 696($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_140 + lw $t0, 676($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 684($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE a_var OF self + lw $t0, 1228($sp) + lw $t1, 672($sp) + beq $t1, $zero, object_set_attribute_8771330140031 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330140031 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330140031 + j object_set_attribute_8771330140031 + int_set_attribute_8771330140031: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8771330140031 + bool_set_attribute_8771330140031: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8771330140031 + object_set_attribute_8771330140031: + sw $t1, 16($t0) + end_set_attribute_8771330140031: + + # ALLOCATING -> D + li $v0, 9 + lw $a0, type_D + syscall + la $t0, type_D + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 660($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_141] + lw $t0, 668($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_D + jal function___init___at_D + lw $ra, 4($sp) + sw $v1, 668($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330138558 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330138558 + j object_get_attribute_8771330138558 + int_get_attribute_8771330138558: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 656($sp) + j end_get_attribute_8771330138558 + bool_get_attribute_8771330138558: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 656($sp) + j end_get_attribute_8771330138558 + object_get_attribute_8771330138558: + sw $t1, 656($sp) + end_get_attribute_8771330138558: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 648($sp) + + # GET METHOD value OF A + lw $t0, 656($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 648($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 644($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_142] + lw $t0, 664($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_145 + lw $t0, 652($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 660($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE a_var OF self + lw $t0, 1228($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330138492 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330138492 + j object_get_attribute_8771330138492 + int_get_attribute_8771330138492: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 640($sp) + j end_get_attribute_8771330138492 + bool_get_attribute_8771330138492: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 640($sp) + j end_get_attribute_8771330138492 + object_get_attribute_8771330138492: + sw $t1, 640($sp) + end_get_attribute_8771330138492: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 632($sp) + + # GET METHOD value OF A + lw $t0, 640($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 632($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 628($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_146] + lw $t0, 648($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_149 + lw $t0, 636($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 644($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 620($sp) + + # GET METHOD method4 OF D + lw $t0, 660($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 620($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 616($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_141] + lw $t0, 676($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_143] + lw $t0, 668($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_147] + lw $t0, 652($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_152 + lw $t0, 632($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 640($sp) + addi $sp, $sp, 16 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 624($sp) + beq $t1, $zero, object_set_attribute_8771330140073 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330140073 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330140073 + j object_set_attribute_8771330140073 + int_set_attribute_8771330140073: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330140073 + bool_set_attribute_8771330140073: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330140073 + object_set_attribute_8771330140073: + sw $t1, 12($t0) + end_set_attribute_8771330140073: + + # internal_129 <- internal_150 + lw $t0, 624($sp) + sw $t0, 708($sp) + + # JUMP TO endif_8771330184545 + j endif_8771330184545 + + else_8771330184545: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 608($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330160794 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330160794 + j object_get_attribute_8771330160794 + int_get_attribute_8771330160794: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 604($sp) + j end_get_attribute_8771330160794 + bool_get_attribute_8771330160794: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 604($sp) + j end_get_attribute_8771330160794 + object_get_attribute_8771330160794: + sw $t1, 604($sp) + end_get_attribute_8771330160794: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 100 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 600($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_155] + lw $t0, 616($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_156] + lw $t0, 612($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 608($sp) + addi $sp, $sp, 12 + + # internal_154 <- internal_157 + lw $t0, 596($sp) + sw $t0, 608($sp) + + # IF internal_154 THEN GOTO then_8771330184653 + lw $t0, 608($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330184653 + + # JUMP TO else_8771330184653 + j else_8771330184653 + + then_8771330184653: + + # ALLOCATING -> C + li $v0, 9 + lw $a0, type_C + syscall + la $t0, type_C + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 592($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_158] + lw $t0, 600($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_C + jal function___init___at_C + lw $ra, 4($sp) + sw $v1, 600($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330161785 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330161785 + j object_get_attribute_8771330161785 + int_get_attribute_8771330161785: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 588($sp) + j end_get_attribute_8771330161785 + bool_get_attribute_8771330161785: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 588($sp) + j end_get_attribute_8771330161785 + object_get_attribute_8771330161785: + sw $t1, 588($sp) + end_get_attribute_8771330161785: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 580($sp) + + # GET METHOD value OF A + lw $t0, 588($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 580($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 576($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_159] + lw $t0, 596($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_162 + lw $t0, 584($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 592($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 568($sp) + + # GET METHOD method5 OF A + lw $t0, 592($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 568($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 564($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_158] + lw $t0, 604($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_160] + lw $t0, 596($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_method5_at_A + jal function_method5_at_A + lw $ra, 8($sp) + sw $v1, 584($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 572($sp) + beq $t1, $zero, object_set_attribute_8771330161752 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330161752 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330161752 + j object_set_attribute_8771330161752 + int_set_attribute_8771330161752: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330161752 + bool_set_attribute_8771330161752: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330161752 + object_set_attribute_8771330161752: + sw $t1, 12($t0) + end_set_attribute_8771330161752: + + # internal_153 <- internal_163 + lw $t0, 572($sp) + sw $t0, 612($sp) + + # JUMP TO endif_8771330184653 + j endif_8771330184653 + + else_8771330184653: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 556($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330178609 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330178609 + j object_get_attribute_8771330178609 + int_get_attribute_8771330178609: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 552($sp) + j end_get_attribute_8771330178609 + bool_get_attribute_8771330178609: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 552($sp) + j end_get_attribute_8771330178609 + object_get_attribute_8771330178609: + sw $t1, 552($sp) + end_get_attribute_8771330178609: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 101 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 548($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_168] + lw $t0, 564($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_169] + lw $t0, 560($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 556($sp) + addi $sp, $sp, 12 + + # internal_167 <- internal_170 + lw $t0, 544($sp) + sw $t0, 556($sp) + + # IF internal_167 THEN GOTO then_8771330184683 + lw $t0, 556($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330184683 + + # JUMP TO else_8771330184683 + j else_8771330184683 + + then_8771330184683: + + # ALLOCATING -> C + li $v0, 9 + lw $a0, type_C + syscall + la $t0, type_C + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 540($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_171] + lw $t0, 548($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_C + jal function___init___at_C + lw $ra, 4($sp) + sw $v1, 548($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330138631 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330138631 + j object_get_attribute_8771330138631 + int_get_attribute_8771330138631: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 536($sp) + j end_get_attribute_8771330138631 + bool_get_attribute_8771330138631: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 536($sp) + j end_get_attribute_8771330138631 + object_get_attribute_8771330138631: + sw $t1, 536($sp) + end_get_attribute_8771330138631: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 528($sp) + + # GET METHOD value OF A + lw $t0, 536($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 528($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 524($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_172] + lw $t0, 544($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_175 + lw $t0, 532($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 540($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 516($sp) + + # GET METHOD method5 OF B + lw $t0, 540($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 516($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 512($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_171] + lw $t0, 552($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_173] + lw $t0, 544($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_method5_at_B + jal function_method5_at_B + lw $ra, 8($sp) + sw $v1, 532($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 520($sp) + beq $t1, $zero, object_set_attribute_8771330138784 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330138784 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330138784 + j object_set_attribute_8771330138784 + int_set_attribute_8771330138784: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330138784 + bool_set_attribute_8771330138784: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330138784 + object_set_attribute_8771330138784: + sw $t1, 12($t0) + end_set_attribute_8771330138784: + + # internal_166 <- internal_176 + lw $t0, 520($sp) + sw $t0, 560($sp) + + # JUMP TO endif_8771330184683 + j endif_8771330184683 + + else_8771330184683: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 504($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330138953 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330138953 + j object_get_attribute_8771330138953 + int_get_attribute_8771330138953: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 500($sp) + j end_get_attribute_8771330138953 + bool_get_attribute_8771330138953: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 500($sp) + j end_get_attribute_8771330138953 + object_get_attribute_8771330138953: + sw $t1, 500($sp) + end_get_attribute_8771330138953: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 102 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 496($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_181] + lw $t0, 512($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_182] + lw $t0, 508($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 504($sp) + addi $sp, $sp, 12 + + # internal_180 <- internal_183 + lw $t0, 492($sp) + sw $t0, 504($sp) + + # IF internal_180 THEN GOTO then_8771330185551 + lw $t0, 504($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330185551 + + # JUMP TO else_8771330185551 + j else_8771330185551 + + then_8771330185551: + + # ALLOCATING -> C + li $v0, 9 + lw $a0, type_C + syscall + la $t0, type_C + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 488($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_184] + lw $t0, 496($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_C + jal function___init___at_C + lw $ra, 4($sp) + sw $v1, 496($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330139510 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330139510 + j object_get_attribute_8771330139510 + int_get_attribute_8771330139510: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 484($sp) + j end_get_attribute_8771330139510 + bool_get_attribute_8771330139510: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 484($sp) + j end_get_attribute_8771330139510 + object_get_attribute_8771330139510: + sw $t1, 484($sp) + end_get_attribute_8771330139510: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 476($sp) + + # GET METHOD value OF A + lw $t0, 484($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 476($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 472($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_185] + lw $t0, 492($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_188 + lw $t0, 480($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 488($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 464($sp) + + # GET METHOD method5 OF C + lw $t0, 488($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 464($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 460($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_184] + lw $t0, 500($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_186] + lw $t0, 492($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_method5_at_C + jal function_method5_at_C + lw $ra, 8($sp) + sw $v1, 480($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 468($sp) + beq $t1, $zero, object_set_attribute_8771330139483 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330139483 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330139483 + j object_set_attribute_8771330139483 + int_set_attribute_8771330139483: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330139483 + bool_set_attribute_8771330139483: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330139483 + object_set_attribute_8771330139483: + sw $t1, 12($t0) + end_set_attribute_8771330139483: + + # internal_179 <- internal_189 + lw $t0, 468($sp) + sw $t0, 508($sp) + + # JUMP TO endif_8771330185551 + j endif_8771330185551 + + else_8771330185551: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 452($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330162535 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330162535 + j object_get_attribute_8771330162535 + int_get_attribute_8771330162535: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 448($sp) + j end_get_attribute_8771330162535 + bool_get_attribute_8771330162535: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 448($sp) + j end_get_attribute_8771330162535 + object_get_attribute_8771330162535: + sw $t1, 448($sp) + end_get_attribute_8771330162535: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 103 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 444($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_194] + lw $t0, 460($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_195] + lw $t0, 456($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 452($sp) + addi $sp, $sp, 12 + + # internal_193 <- internal_196 + lw $t0, 440($sp) + sw $t0, 452($sp) + + # IF internal_193 THEN GOTO then_8771330185689 + lw $t0, 452($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330185689 + + # JUMP TO else_8771330185689 + j else_8771330185689 + + then_8771330185689: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 432($sp) + + # ALLOCATING -> D + li $v0, 9 + lw $a0, type_D + syscall + la $t0, type_D + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 428($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_199] + lw $t0, 436($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_D + jal function___init___at_D + lw $ra, 4($sp) + sw $v1, 436($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330087572 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330087572 + j object_get_attribute_8771330087572 + int_get_attribute_8771330087572: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 424($sp) + j end_get_attribute_8771330087572 + bool_get_attribute_8771330087572: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 424($sp) + j end_get_attribute_8771330087572 + object_get_attribute_8771330087572: + sw $t1, 424($sp) + end_get_attribute_8771330087572: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 416($sp) + + # GET METHOD value OF A + lw $t0, 424($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 416($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 412($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_200] + lw $t0, 432($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_203 + lw $t0, 420($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 428($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 404($sp) + + # GET METHOD method7 OF D + lw $t0, 428($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 404($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 400($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_199] + lw $t0, 440($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_201] + lw $t0, 432($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_206 + lw $t0, 412($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 420($sp) + addi $sp, $sp, 12 + + # internal_198 <- internal_204 + lw $t0, 408($sp) + sw $t0, 432($sp) + + # IF internal_198 THEN GOTO then_8771330185674 + lw $t0, 432($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330185674 + + # JUMP TO else_8771330185674 + j else_8771330185674 + + then_8771330185674: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 16 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 16 + sw $t0, 4($v0) + + addi $t0, $zero, 110 + sb $t0, 8($v0) + + addi $t0, $zero, 117 + sb $t0, 9($v0) + + addi $t0, $zero, 109 + sb $t0, 10($v0) + + addi $t0, $zero, 98 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 114 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + sb $zero, 15($v0) + + sw $v0, 396($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 388($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 388($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 384($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_207] + lw $t0, 408($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_210 + lw $t0, 396($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 404($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330087795 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330087795 + j object_get_attribute_8771330087795 + int_get_attribute_8771330087795: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 380($sp) + j end_get_attribute_8771330087795 + bool_get_attribute_8771330087795: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 380($sp) + j end_get_attribute_8771330087795 + object_get_attribute_8771330087795: + sw $t1, 380($sp) + end_get_attribute_8771330087795: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 372($sp) + + # GET METHOD print OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 372($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 368($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_211] + lw $t0, 392($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_214 + lw $t0, 380($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 388($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 28 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 28 + sw $t0, 4($v0) + + addi $t0, $zero, 105 + sb $t0, 8($v0) + + addi $t0, $zero, 115 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 100 + sb $t0, 11($v0) + + addi $t0, $zero, 105 + sb $t0, 12($v0) + + addi $t0, $zero, 118 + sb $t0, 13($v0) + + addi $t0, $zero, 105 + sb $t0, 14($v0) + + addi $t0, $zero, 115 + sb $t0, 15($v0) + + addi $t0, $zero, 105 + sb $t0, 16($v0) + + addi $t0, $zero, 98 + sb $t0, 17($v0) + + addi $t0, $zero, 108 + sb $t0, 18($v0) + + addi $t0, $zero, 101 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 98 + sb $t0, 21($v0) + + addi $t0, $zero, 121 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 51 + sb $t0, 24($v0) + + addi $t0, $zero, 46 + sb $t0, 25($v0) + + addi $t0, $zero, 10 + sb $t0, 26($v0) + + sb $zero, 27($v0) + + sw $v0, 364($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 356($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 356($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 352($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_215] + lw $t0, 376($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_218 + lw $t0, 364($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 372($sp) + addi $sp, $sp, 12 + + # internal_197 <- internal_216 + lw $t0, 360($sp) + sw $t0, 436($sp) + + # JUMP TO endif_8771330185674 + j endif_8771330185674 + + else_8771330185674: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 16 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 16 + sw $t0, 4($v0) + + addi $t0, $zero, 110 + sb $t0, 8($v0) + + addi $t0, $zero, 117 + sb $t0, 9($v0) + + addi $t0, $zero, 109 + sb $t0, 10($v0) + + addi $t0, $zero, 98 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 114 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + sb $zero, 15($v0) + + sw $v0, 348($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 340($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 340($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 336($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_219] + lw $t0, 360($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_222 + lw $t0, 348($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 356($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330088259 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330088259 + j object_get_attribute_8771330088259 + int_get_attribute_8771330088259: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 332($sp) + j end_get_attribute_8771330088259 + bool_get_attribute_8771330088259: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 332($sp) + j end_get_attribute_8771330088259 + object_get_attribute_8771330088259: + sw $t1, 332($sp) + end_get_attribute_8771330088259: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 324($sp) + + # GET METHOD print OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 324($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 320($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_223] + lw $t0, 344($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_226 + lw $t0, 332($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 340($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 32 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 32 + sw $t0, 4($v0) + + addi $t0, $zero, 105 + sb $t0, 8($v0) + + addi $t0, $zero, 115 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 110 + sb $t0, 11($v0) + + addi $t0, $zero, 111 + sb $t0, 12($v0) + + addi $t0, $zero, 116 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 100 + sb $t0, 15($v0) + + addi $t0, $zero, 105 + sb $t0, 16($v0) + + addi $t0, $zero, 118 + sb $t0, 17($v0) + + addi $t0, $zero, 105 + sb $t0, 18($v0) + + addi $t0, $zero, 115 + sb $t0, 19($v0) + + addi $t0, $zero, 105 + sb $t0, 20($v0) + + addi $t0, $zero, 98 + sb $t0, 21($v0) + + addi $t0, $zero, 108 + sb $t0, 22($v0) + + addi $t0, $zero, 101 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 98 + sb $t0, 25($v0) + + addi $t0, $zero, 121 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 51 + sb $t0, 28($v0) + + addi $t0, $zero, 46 + sb $t0, 29($v0) + + addi $t0, $zero, 10 + sb $t0, 30($v0) + + sb $zero, 31($v0) + + sw $v0, 316($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 308($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 308($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 304($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_227] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_230 + lw $t0, 316($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 324($sp) + addi $sp, $sp, 12 + + # internal_197 <- internal_228 + lw $t0, 312($sp) + sw $t0, 436($sp) + + # JUMP TO endif_8771330185674 + j endif_8771330185674 + + endif_8771330185674: + + # internal_192 <- internal_197 + lw $t0, 436($sp) + sw $t0, 456($sp) + + # JUMP TO endif_8771330185689 + j endif_8771330185689 + + else_8771330185689: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 296($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330088430 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330088430 + j object_get_attribute_8771330088430 + int_get_attribute_8771330088430: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 292($sp) + j end_get_attribute_8771330088430 + bool_get_attribute_8771330088430: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 292($sp) + j end_get_attribute_8771330088430 + object_get_attribute_8771330088430: + sw $t1, 292($sp) + end_get_attribute_8771330088430: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 104 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 288($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_233] + lw $t0, 304($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_234] + lw $t0, 300($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 296($sp) + addi $sp, $sp, 12 + + # internal_232 <- internal_235 + lw $t0, 284($sp) + sw $t0, 296($sp) + + # IF internal_232 THEN GOTO then_8771330186102 + lw $t0, 296($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330186102 + + # JUMP TO else_8771330186102 + j else_8771330186102 + + then_8771330186102: + + # ALLOCATING NUll INTO -> x + sw $zero, 280($sp) + + # ALLOCATING -> E + li $v0, 9 + lw $a0, type_E + syscall + la $t0, type_E + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 276($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_237] + lw $t0, 284($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_E + jal function___init___at_E + lw $ra, 4($sp) + sw $v1, 284($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330088114 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330088114 + j object_get_attribute_8771330088114 + int_get_attribute_8771330088114: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 272($sp) + j end_get_attribute_8771330088114 + bool_get_attribute_8771330088114: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 272($sp) + j end_get_attribute_8771330088114 + object_get_attribute_8771330088114: + sw $t1, 272($sp) + end_get_attribute_8771330088114: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 264($sp) + + # GET METHOD value OF A + lw $t0, 272($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 264($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 260($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_238] + lw $t0, 280($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_241 + lw $t0, 268($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 276($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 252($sp) + + # GET METHOD method6 OF E + lw $t0, 276($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 252($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 248($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_237] + lw $t0, 288($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_239] + lw $t0, 280($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_244 + lw $t0, 260($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 268($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [x] + lw $t0, 292($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_242] + lw $t0, 268($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 292($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330089030 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330089030 + j object_get_attribute_8771330089030 + int_get_attribute_8771330089030: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 240($sp) + j end_get_attribute_8771330089030 + bool_get_attribute_8771330089030: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 240($sp) + j end_get_attribute_8771330089030 + object_get_attribute_8771330089030: + sw $t1, 240($sp) + end_get_attribute_8771330089030: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 232($sp) + + # GET METHOD value OF A + lw $t0, 240($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 232($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 228($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_246] + lw $t0, 248($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_249 + lw $t0, 236($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 244($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 220($sp) + + # GET METHOD value OF A + lw $t0, 280($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 220($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 216($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [x] + lw $t0, 288($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_252 + lw $t0, 224($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 232($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 212($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_250] + lw $t0, 236($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_253] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 220($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_247] + lw $t0, 248($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_254] + lw $t0, 220($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 216($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [r] + lw $t0, 256($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_255] + lw $t0, 216($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 256($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 16 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 16 + sw $t0, 4($v0) + + addi $t0, $zero, 110 + sb $t0, 8($v0) + + addi $t0, $zero, 117 + sb $t0, 9($v0) + + addi $t0, $zero, 109 + sb $t0, 10($v0) + + addi $t0, $zero, 98 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 114 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + sb $zero, 15($v0) + + sw $v0, 200($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 192($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 188($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_256] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_259 + lw $t0, 200($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 208($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330089539 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330089539 + j object_get_attribute_8771330089539 + int_get_attribute_8771330089539: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 184($sp) + j end_get_attribute_8771330089539 + bool_get_attribute_8771330089539: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 184($sp) + j end_get_attribute_8771330089539 + object_get_attribute_8771330089539: + sw $t1, 184($sp) + end_get_attribute_8771330089539: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # GET METHOD print OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 176($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 172($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_260] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_263 + lw $t0, 184($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 105 + sb $t0, 8($v0) + + addi $t0, $zero, 115 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 113 + sb $t0, 12($v0) + + addi $t0, $zero, 117 + sb $t0, 13($v0) + + addi $t0, $zero, 97 + sb $t0, 14($v0) + + addi $t0, $zero, 108 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 116 + sb $t0, 17($v0) + + addi $t0, $zero, 111 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 168($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 160($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 156($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_264] + lw $t0, 180($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_267 + lw $t0, 168($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 176($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # GET METHOD print OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 148($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 144($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [x] + lw $t0, 292($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_270 + lw $t0, 156($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 164($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 37 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 37 + sw $t0, 4($v0) + + addi $t0, $zero, 116 + sb $t0, 8($v0) + + addi $t0, $zero, 105 + sb $t0, 9($v0) + + addi $t0, $zero, 109 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 56 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 119 + sb $t0, 16($v0) + + addi $t0, $zero, 105 + sb $t0, 17($v0) + + addi $t0, $zero, 116 + sb $t0, 18($v0) + + addi $t0, $zero, 104 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 97 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 114 + sb $t0, 23($v0) + + addi $t0, $zero, 101 + sb $t0, 24($v0) + + addi $t0, $zero, 109 + sb $t0, 25($v0) + + addi $t0, $zero, 97 + sb $t0, 26($v0) + + addi $t0, $zero, 105 + sb $t0, 27($v0) + + addi $t0, $zero, 110 + sb $t0, 28($v0) + + addi $t0, $zero, 100 + sb $t0, 29($v0) + + addi $t0, $zero, 101 + sb $t0, 30($v0) + + addi $t0, $zero, 114 + sb $t0, 31($v0) + + addi $t0, $zero, 32 + sb $t0, 32($v0) + + addi $t0, $zero, 111 + sb $t0, 33($v0) + + addi $t0, $zero, 102 + sb $t0, 34($v0) + + addi $t0, $zero, 32 + sb $t0, 35($v0) + + sb $zero, 36($v0) + + sw $v0, 140($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 132($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 128($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_271] + lw $t0, 152($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_274 + lw $t0, 140($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 148($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> A2I + li $v0, 9 + lw $a0, type_A2I + syscall + la $t0, type_A2I + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 120($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_276] + lw $t0, 128($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A2I + jal function___init___at_A2I + lw $ra, 4($sp) + sw $v1, 128($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a] + lw $t0, 784($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_276] + lw $t0, 132($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 784($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # GET METHOD i2a OF A2I + lw $t0, 772($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 112($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a] + lw $t0, 784($sp) + sw $t0, 4($sp) + + # ARGUMENT [r] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_279 + lw $t0, 120($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 100($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 96($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_277] + lw $t0, 128($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_282 + lw $t0, 108($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 116($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 92($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD out_string OF Main + lw $t0, 1228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 1240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_283] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_286 + lw $t0, 92($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 280($sp) + beq $t1, $zero, object_set_attribute_8771330089168 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330089168 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330089168 + j object_set_attribute_8771330089168 + int_set_attribute_8771330089168: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330089168 + bool_set_attribute_8771330089168: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330089168 + object_set_attribute_8771330089168: + sw $t1, 12($t0) + end_set_attribute_8771330089168: + + # internal_231 <- x + lw $t0, 280($sp) + sw $t0, 300($sp) + + # JUMP TO endif_8771330186102 + j endif_8771330186102 + + else_8771330186102: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330090093 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330090093 + j object_get_attribute_8771330090093 + int_get_attribute_8771330090093: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8771330090093 + bool_get_attribute_8771330090093: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8771330090093 + object_get_attribute_8771330090093: + sw $t1, 68($sp) + end_get_attribute_8771330090093: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 106 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_289] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_290] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_288 <- internal_291 + lw $t0, 60($sp) + sw $t0, 72($sp) + + # IF internal_288 THEN GOTO then_8771330186033 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330186033 + + # JUMP TO else_8771330186033 + j else_8771330186033 + + then_8771330186033: + + # ALLOCATING -> A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_292] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 64($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 56($sp) + beq $t1, $zero, object_set_attribute_8771330090578 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330090578 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330090578 + j object_set_attribute_8771330090578 + int_set_attribute_8771330090578: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330090578 + bool_set_attribute_8771330090578: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330090578 + object_set_attribute_8771330090578: + sw $t1, 12($t0) + end_set_attribute_8771330090578: + + # internal_287 <- internal_292 + lw $t0, 56($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8771330186033 + j endif_8771330186033 + + else_8771330186033: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET ATTRIBUTE char OF self + lw $t0, 1228($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330090692 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330090692 + j object_get_attribute_8771330090692 + int_get_attribute_8771330090692: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8771330090692 + bool_get_attribute_8771330090692: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8771330090692 + object_get_attribute_8771330090692: + sw $t1, 44($sp) + end_get_attribute_8771330090692: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 113 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_295] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_296] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # internal_294 <- internal_297 + lw $t0, 36($sp) + sw $t0, 48($sp) + + # IF internal_294 THEN GOTO then_8771330187379 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8771330187379 + + # JUMP TO else_8771330187379 + j else_8771330187379 + + then_8771330187379: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # SET ATTRIBUTE flag OF self + lw $t0, 1228($sp) + lw $t1, 32($sp) + beq $t1, $zero, object_set_attribute_8771330091277 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330091277 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330091277 + j object_set_attribute_8771330091277 + int_set_attribute_8771330091277: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8771330091277 + bool_set_attribute_8771330091277: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8771330091277 + object_set_attribute_8771330091277: + sw $t1, 20($t0) + end_set_attribute_8771330091277: + + # internal_293 <- internal_298 + lw $t0, 32($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8771330187379 + j endif_8771330187379 + + else_8771330187379: + + # ALLOCATING -> A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_299] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 36($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8771330091397 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8771330091397 + j object_get_attribute_8771330091397 + int_get_attribute_8771330091397: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8771330091397 + bool_get_attribute_8771330091397: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8771330091397 + object_get_attribute_8771330091397: + sw $t1, 24($sp) + end_get_attribute_8771330091397: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD value OF A + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_300] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_303 + lw $t0, 20($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 28($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD method1 OF A + lw $t0, 28($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_299] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_301] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_306 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE avar OF self + lw $t0, 1228($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8771330091325 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8771330091325 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8771330091325 + j object_set_attribute_8771330091325 + int_set_attribute_8771330091325: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330091325 + bool_set_attribute_8771330091325: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8771330091325 + object_set_attribute_8771330091325: + sw $t1, 12($t0) + end_set_attribute_8771330091325: + + # internal_293 <- internal_304 + lw $t0, 8($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8771330187379 + j endif_8771330187379 + + endif_8771330187379: + + # internal_287 <- internal_293 + lw $t0, 52($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8771330186033 + j endif_8771330186033 + + endif_8771330186033: + + # internal_231 <- internal_287 + lw $t0, 76($sp) + sw $t0, 300($sp) + + # JUMP TO endif_8771330186102 + j endif_8771330186102 + + endif_8771330186102: + + # internal_192 <- internal_231 + lw $t0, 300($sp) + sw $t0, 456($sp) + + # JUMP TO endif_8771330185689 + j endif_8771330185689 + + endif_8771330185689: + + # internal_179 <- internal_192 + lw $t0, 456($sp) + sw $t0, 508($sp) + + # JUMP TO endif_8771330185551 + j endif_8771330185551 + + endif_8771330185551: + + # internal_166 <- internal_179 + lw $t0, 508($sp) + sw $t0, 560($sp) + + # JUMP TO endif_8771330184683 + j endif_8771330184683 + + endif_8771330184683: + + # internal_153 <- internal_166 + lw $t0, 560($sp) + sw $t0, 612($sp) + + # JUMP TO endif_8771330184653 + j endif_8771330184653 + + endif_8771330184653: + + # internal_129 <- internal_153 + lw $t0, 612($sp) + sw $t0, 708($sp) + + # JUMP TO endif_8771330184545 + j endif_8771330184545 + + endif_8771330184545: + + # internal_59 <- internal_129 + lw $t0, 708($sp) + sw $t0, 988($sp) + + # JUMP TO endif_8771330183608 + j endif_8771330183608 + + endif_8771330183608: + + # internal_35 <- internal_59 + lw $t0, 988($sp) + sw $t0, 1084($sp) + + # JUMP TO endif_8771330183554 + j endif_8771330183554 + + endif_8771330183554: + + # JUMP TO while_start_8771330182449 + j while_start_8771330182449 + + while_end_8771330182449: + + lw $v1, 1220($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 1228 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/atoi.mips b/tests/codegen/atoi.mips new file mode 100644 index 000000000..1da1d906e --- /dev/null +++ b/tests/codegen/atoi.mips @@ -0,0 +1,5833 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_A2I: .word 48 + type_A2I_inherits_from: .word type_Object + type_A2I_name_address: .word type_A2I_name_size + type_A2I___init__: .word function___init___at_A2I + type_A2I_abort: .word function_abort_at_Object + type_A2I_type_name: .word function_type_name_at_Object + type_A2I_copy: .word function_copy_at_Object + type_A2I_c2i: .word function_c2i_at_A2I + type_A2I_i2c: .word function_i2c_at_A2I + type_A2I_a2i: .word function_a2i_at_A2I + type_A2I_a2i_aux: .word function_a2i_aux_at_A2I + type_A2I_i2a: .word function_i2a_at_A2I + type_A2I_i2a_aux: .word function_i2a_aux_at_A2I + + type_Main: .word 44 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_A2I_name_size: .word 3 + type_A2I_name: .asciiz "A2I" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_A2I: + lw $v1, 0($sp) + + jr $ra + + function_c2i_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -216 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 48 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 216($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 212($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 200($sp) + sw $t0, 208($sp) + + # IF internal_1 THEN GOTO then_8755602930369 + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602930369 + + # JUMP TO else_8755602930369 + j else_8755602930369 + + then_8755602930369: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 196($sp) + + # internal_0 <- internal_4 + lw $t0, 196($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8755602930369 + j endif_8755602930369 + + else_8755602930369: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 188($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 49 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 184($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # internal_6 <- internal_8 + lw $t0, 180($sp) + sw $t0, 188($sp) + + # IF internal_6 THEN GOTO then_8755602930423 + lw $t0, 188($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602930423 + + # JUMP TO else_8755602930423 + j else_8755602930423 + + then_8755602930423: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # internal_5 <- internal_9 + lw $t0, 176($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8755602930423 + j endif_8755602930423 + + else_8755602930423: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 50 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 176($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # internal_11 <- internal_13 + lw $t0, 160($sp) + sw $t0, 168($sp) + + # IF internal_11 THEN GOTO then_8755602930993 + lw $t0, 168($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602930993 + + # JUMP TO else_8755602930993 + j else_8755602930993 + + then_8755602930993: + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 156($sp) + + # internal_10 <- internal_14 + lw $t0, 156($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8755602930993 + j endif_8755602930993 + + else_8755602930993: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 51 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 144($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 156($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 152($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_18 + lw $t0, 140($sp) + sw $t0, 148($sp) + + # IF internal_16 THEN GOTO then_8755602931047 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931047 + + # JUMP TO else_8755602931047 + j else_8755602931047 + + then_8755602931047: + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # internal_15 <- internal_19 + lw $t0, 136($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8755602931047 + j endif_8755602931047 + + else_8755602931047: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 52 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 136($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_21 <- internal_23 + lw $t0, 120($sp) + sw $t0, 128($sp) + + # IF internal_21 THEN GOTO then_8755602931101 + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931101 + + # JUMP TO else_8755602931101 + j else_8755602931101 + + then_8755602931101: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # internal_20 <- internal_24 + lw $t0, 116($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8755602931101 + j endif_8755602931101 + + else_8755602931101: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 53 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 104($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_27] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # internal_26 <- internal_28 + lw $t0, 100($sp) + sw $t0, 108($sp) + + # IF internal_26 THEN GOTO then_8755602931155 + lw $t0, 108($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931155 + + # JUMP TO else_8755602931155 + j else_8755602931155 + + then_8755602931155: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # internal_25 <- internal_29 + lw $t0, 96($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8755602931155 + j endif_8755602931155 + + else_8755602931155: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 54 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_31 <- internal_33 + lw $t0, 80($sp) + sw $t0, 88($sp) + + # IF internal_31 THEN GOTO then_8755602931725 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931725 + + # JUMP TO else_8755602931725 + j else_8755602931725 + + then_8755602931725: + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # internal_30 <- internal_34 + lw $t0, 76($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8755602931725 + j endif_8755602931725 + + else_8755602931725: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 55 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_37] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_36 <- internal_38 + lw $t0, 60($sp) + sw $t0, 68($sp) + + # IF internal_36 THEN GOTO then_8755602931779 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931779 + + # JUMP TO else_8755602931779 + j else_8755602931779 + + then_8755602931779: + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # internal_35 <- internal_39 + lw $t0, 56($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8755602931779 + j endif_8755602931779 + + else_8755602931779: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 56 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_42] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_41 <- internal_43 + lw $t0, 40($sp) + sw $t0, 48($sp) + + # IF internal_41 THEN GOTO then_8755602931833 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931833 + + # JUMP TO else_8755602931833 + j else_8755602931833 + + then_8755602931833: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # internal_40 <- internal_44 + lw $t0, 36($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8755602931833 + j endif_8755602931833 + + else_8755602931833: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 57 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # internal_46 <- internal_48 + lw $t0, 20($sp) + sw $t0, 28($sp) + + # IF internal_46 THEN GOTO then_8755602931887 + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931887 + + # JUMP TO else_8755602931887 + j else_8755602931887 + + then_8755602931887: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # internal_45 <- internal_49 + lw $t0, 16($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8755602931887 + j endif_8755602931887 + + else_8755602931887: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF A2I + lw $t0, 220($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_52 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_45 <- internal_53 + lw $t0, 0($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8755602931887 + j endif_8755602931887 + + endif_8755602931887: + + # internal_40 <- internal_45 + lw $t0, 32($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8755602931833 + j endif_8755602931833 + + endif_8755602931833: + + # internal_35 <- internal_40 + lw $t0, 52($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8755602931779 + j endif_8755602931779 + + endif_8755602931779: + + # internal_30 <- internal_35 + lw $t0, 72($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8755602931725 + j endif_8755602931725 + + endif_8755602931725: + + # internal_25 <- internal_30 + lw $t0, 92($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8755602931155 + j endif_8755602931155 + + endif_8755602931155: + + # internal_20 <- internal_25 + lw $t0, 112($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8755602931101 + j endif_8755602931101 + + endif_8755602931101: + + # internal_15 <- internal_20 + lw $t0, 132($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8755602931047 + j endif_8755602931047 + + endif_8755602931047: + + # internal_10 <- internal_15 + lw $t0, 152($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8755602930993 + j endif_8755602930993 + + endif_8755602930993: + + # internal_5 <- internal_10 + lw $t0, 172($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8755602930423 + j endif_8755602930423 + + endif_8755602930423: + + # internal_0 <- internal_5 + lw $t0, 192($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8755602930369 + j endif_8755602930369 + + endif_8755602930369: + + lw $v1, 212($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 216 + + jr $ra + + function_i2c_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -216 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 216($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 212($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 200($sp) + sw $t0, 208($sp) + + # IF internal_1 THEN GOTO then_8755602930966 + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602930966 + + # JUMP TO else_8755602930966 + j else_8755602930966 + + then_8755602930966: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 48 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 196($sp) + + # internal_0 <- internal_4 + lw $t0, 196($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8755602930966 + j endif_8755602930966 + + else_8755602930966: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 188($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # internal_6 <- internal_8 + lw $t0, 180($sp) + sw $t0, 188($sp) + + # IF internal_6 THEN GOTO then_8755602931056 + lw $t0, 188($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931056 + + # JUMP TO else_8755602931056 + j else_8755602931056 + + then_8755602931056: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 49 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 176($sp) + + # internal_5 <- internal_9 + lw $t0, 176($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8755602931056 + j endif_8755602931056 + + else_8755602931056: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 176($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # internal_11 <- internal_13 + lw $t0, 160($sp) + sw $t0, 168($sp) + + # IF internal_11 THEN GOTO then_8755602931857 + lw $t0, 168($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931857 + + # JUMP TO else_8755602931857 + j else_8755602931857 + + then_8755602931857: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 50 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 156($sp) + + # internal_10 <- internal_14 + lw $t0, 156($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8755602931857 + j endif_8755602931857 + + else_8755602931857: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 156($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 152($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_18 + lw $t0, 140($sp) + sw $t0, 148($sp) + + # IF internal_16 THEN GOTO then_8755602931914 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931914 + + # JUMP TO else_8755602931914 + j else_8755602931914 + + then_8755602931914: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 51 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 136($sp) + + # internal_15 <- internal_19 + lw $t0, 136($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8755602931914 + j endif_8755602931914 + + else_8755602931914: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 136($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_21 <- internal_23 + lw $t0, 120($sp) + sw $t0, 128($sp) + + # IF internal_21 THEN GOTO then_8755602931947 + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931947 + + # JUMP TO else_8755602931947 + j else_8755602931947 + + then_8755602931947: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 52 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 116($sp) + + # internal_20 <- internal_24 + lw $t0, 116($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8755602931947 + j endif_8755602931947 + + else_8755602931947: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_27] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # internal_26 <- internal_28 + lw $t0, 100($sp) + sw $t0, 108($sp) + + # IF internal_26 THEN GOTO then_8755602932261 + lw $t0, 108($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602932261 + + # JUMP TO else_8755602932261 + j else_8755602932261 + + then_8755602932261: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 53 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 96($sp) + + # internal_25 <- internal_29 + lw $t0, 96($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8755602932261 + j endif_8755602932261 + + else_8755602932261: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_31 <- internal_33 + lw $t0, 80($sp) + sw $t0, 88($sp) + + # IF internal_31 THEN GOTO then_8755602932315 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602932315 + + # JUMP TO else_8755602932315 + j else_8755602932315 + + then_8755602932315: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 54 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 76($sp) + + # internal_30 <- internal_34 + lw $t0, 76($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8755602932315 + j endif_8755602932315 + + else_8755602932315: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_37] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_36 <- internal_38 + lw $t0, 60($sp) + sw $t0, 68($sp) + + # IF internal_36 THEN GOTO then_8755602932369 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602932369 + + # JUMP TO else_8755602932369 + j else_8755602932369 + + then_8755602932369: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 55 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 56($sp) + + # internal_35 <- internal_39 + lw $t0, 56($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8755602932369 + j endif_8755602932369 + + else_8755602932369: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_42] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_41 <- internal_43 + lw $t0, 40($sp) + sw $t0, 48($sp) + + # IF internal_41 THEN GOTO then_8755602932423 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602932423 + + # JUMP TO else_8755602932423 + j else_8755602932423 + + then_8755602932423: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 56 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 36($sp) + + # internal_40 <- internal_44 + lw $t0, 36($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8755602932423 + j endif_8755602932423 + + else_8755602932423: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # internal_46 <- internal_48 + lw $t0, 20($sp) + sw $t0, 28($sp) + + # IF internal_46 THEN GOTO then_8755602932477 + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602932477 + + # JUMP TO else_8755602932477 + j else_8755602932477 + + then_8755602932477: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 57 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 16($sp) + + # internal_45 <- internal_49 + lw $t0, 16($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8755602932477 + j endif_8755602932477 + + else_8755602932477: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF A2I + lw $t0, 220($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_52 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 0($sp) + + # internal_45 <- internal_53 + lw $t0, 0($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8755602932477 + j endif_8755602932477 + + endif_8755602932477: + + # internal_40 <- internal_45 + lw $t0, 32($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8755602932423 + j endif_8755602932423 + + endif_8755602932423: + + # internal_35 <- internal_40 + lw $t0, 52($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8755602932369 + j endif_8755602932369 + + endif_8755602932369: + + # internal_30 <- internal_35 + lw $t0, 72($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8755602932315 + j endif_8755602932315 + + endif_8755602932315: + + # internal_25 <- internal_30 + lw $t0, 92($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8755602932261 + j endif_8755602932261 + + endif_8755602932261: + + # internal_20 <- internal_25 + lw $t0, 112($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8755602931947 + j endif_8755602931947 + + endif_8755602931947: + + # internal_15 <- internal_20 + lw $t0, 132($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8755602931914 + j endif_8755602931914 + + endif_8755602931914: + + # internal_10 <- internal_15 + lw $t0, 152($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8755602931857 + j endif_8755602931857 + + endif_8755602931857: + + # internal_5 <- internal_10 + lw $t0, 172($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8755602931056 + j endif_8755602931056 + + endif_8755602931056: + + # internal_0 <- internal_5 + lw $t0, 192($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8755602930966 + j endif_8755602930966 + + endif_8755602930966: + + lw $v1, 212($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 216 + + jr $ra + + function_a2i_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -224 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 216($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # GET METHOD length OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 208($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 212($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 220($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 200($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 224($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 208($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_6 + lw $t0, 196($sp) + sw $t0, 216($sp) + + # IF internal_1 THEN GOTO then_8755602931929 + lw $t0, 216($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931929 + + # JUMP TO else_8755602931929 + j else_8755602931929 + + then_8755602931929: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # internal_0 <- internal_7 + lw $t0, 192($sp) + sw $t0, 220($sp) + + # JUMP TO endif_8755602931929 + j endif_8755602931929 + + else_8755602931929: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 180($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 168($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 196($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 192($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 180($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 188($sp) + addi $sp, $sp, 16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 45 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 160($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 184($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 172($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 168($sp) + addi $sp, $sp, 12 + + # internal_9 <- internal_16 + lw $t0, 156($sp) + sw $t0, 184($sp) + + # IF internal_9 THEN GOTO then_8755602931965 + lw $t0, 184($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602931965 + + # JUMP TO else_8755602931965 + j else_8755602931965 + + then_8755602931965: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 152($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # GET METHOD length OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 144($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_20 + lw $t0, 148($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 156($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 160($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 124($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 120($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_17] + lw $t0, 168($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 136($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 144($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # GET METHOD a2i_aux OF A2I + lw $t0, 228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 112($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_23] + lw $t0, 140($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_28 + lw $t0, 120($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_26] + lw $t0, 128($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_30] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 108($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 108($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_31 + lw $t0, 96($sp) + sw $t0, 188($sp) + + # JUMP TO endif_8755602931965 + j endif_8755602931965 + + else_8755602931965: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 72($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_34] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_35] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_38 + lw $t0, 84($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 92($sp) + addi $sp, $sp, 16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 43 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_36] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_39] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_33 <- internal_40 + lw $t0, 60($sp) + sw $t0, 88($sp) + + # IF internal_33 THEN GOTO then_8755602932294 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602932294 + + # JUMP TO else_8755602932294 + j else_8755602932294 + + then_8755602932294: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD length OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_44 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_42] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_45] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_41] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_46] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_49 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 48($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD a2i_aux OF A2I + lw $t0, 228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_52 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # internal_32 <- internal_50 + lw $t0, 20($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8755602932294 + j endif_8755602932294 + + else_8755602932294: + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD a2i_aux OF A2I + lw $t0, 228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [s] + lw $t0, 236($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_55 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_32 <- internal_53 + lw $t0, 8($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8755602932294 + j endif_8755602932294 + + endif_8755602932294: + + # internal_8 <- internal_32 + lw $t0, 92($sp) + sw $t0, 188($sp) + + # JUMP TO endif_8755602931965 + j endif_8755602931965 + + endif_8755602931965: + + # internal_0 <- internal_8 + lw $t0, 188($sp) + sw $t0, 220($sp) + + # JUMP TO endif_8755602931929 + j endif_8755602931929 + + endif_8755602931929: + + lw $v1, 220($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 224 + + jr $ra + + function_a2i_aux_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -88 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [int] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # GET METHOD length OF String + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 68($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 80($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [j] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_8 + sw $zero, 52($sp) + + while_start_8755602933354: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [j] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # IF internal_9 THEN GOTO while_body_8755602933354 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8755602933354 + + # JUMP TO while_end_8755602933354 + j while_end_8755602933354 + + while_body_8755602933354: + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [int] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD substr OF String + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 104($sp) + sw $t0, 8($sp) + + # ARGUMENT [i] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 48($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD c2i OF A2I + lw $t0, 92($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_18 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_11] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [int] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8755602933354 + j while_start_8755602933354 + + while_end_8755602933354: + + lw $v1, 84($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 88 + + jr $ra + + function_i2a_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -96 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 80($sp) + sw $t0, 88($sp) + + # IF internal_1 THEN GOTO then_8755602933462 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602933462 + + # JUMP TO else_8755602933462 + j else_8755602933462 + + then_8755602933462: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 48 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 76($sp) + + # internal_0 <- internal_4 + lw $t0, 76($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8755602933462 + j endif_8755602933462 + + else_8755602933462: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_7] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_6 <- internal_8 + lw $t0, 60($sp) + sw $t0, 68($sp) + + # IF internal_6 THEN GOTO then_8755602933589 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602933589 + + # JUMP TO else_8755602933589 + j else_8755602933589 + + then_8755602933589: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD i2a_aux OF A2I + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # internal_5 <- internal_9 + lw $t0, 56($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8755602933589 + j endif_8755602933589 + + else_8755602933589: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 45 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 44($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_13] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_16] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD i2a_aux OF A2I + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_20 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_5 <- internal_21 + lw $t0, 8($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8755602933589 + j endif_8755602933589 + + endif_8755602933589: + + # internal_0 <- internal_5 + lw $t0, 72($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8755602933462 + j endif_8755602933462 + + endif_8755602933462: + + lw $v1, 92($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 96 + + jr $ra + + function_i2a_aux_at_A2I: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -80 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 64($sp) + sw $t0, 72($sp) + + # IF internal_1 THEN GOTO then_8755602933568 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8755602933568 + + # JUMP TO else_8755602933568 + j else_8755602933568 + + then_8755602933568: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 60($sp) + + # internal_0 <- internal_4 + lw $t0, 60($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8755602933568 + j endif_8755602933568 + + else_8755602933568: + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [next] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD i2a_aux OF A2I + lw $t0, 84($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [next] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [next] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD i2c OF A2I + lw $t0, 84($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_8] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_17 + lw $t0, 8($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8755602933568 + j endif_8755602933568 + + endif_8755602933568: + + lw $v1, 76($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 80 + + jr $ra + + function___init___at_Main: + lw $v1, 0($sp) + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -104 + + # ALLOCATING -> A2I + li $v0, 9 + lw $a0, type_A2I + syscall + la $t0, type_A2I + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 96($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A2I + jal function___init___at_A2I + lw $ra, 4($sp) + sw $v1, 104($sp) + addi $sp, $sp, 8 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 15 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 15 + sw $t0, 4($v0) + + addi $t0, $zero, 54 + sb $t0, 8($v0) + + addi $t0, $zero, 55 + sb $t0, 9($v0) + + addi $t0, $zero, 56 + sb $t0, 10($v0) + + addi $t0, $zero, 57 + sb $t0, 11($v0) + + addi $t0, $zero, 56 + sb $t0, 12($v0) + + addi $t0, $zero, 55 + sb $t0, 13($v0) + + sb $zero, 14($v0) + + sw $v0, 92($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD a2i OF A2I + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 92($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> A2I + li $v0, 9 + lw $a0, type_A2I + syscall + la $t0, type_A2I + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 72($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A2I + jal function___init___at_A2I + lw $ra, 4($sp) + sw $v1, 80($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 678987 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 678987 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # GET METHOD i2a OF A2I + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 60($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_7] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 68($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [b] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD out_int OF Main + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [a] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 56($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 13 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 13 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 61 + sb $t0, 9($v0) + + addi $t0, $zero, 61 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + sb $zero, 12($v0) + + sw $v0, 40($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET METHOD out_string OF Main + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 32($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_18 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Main + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [b] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_21 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 104 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/book_list.mips b/tests/codegen/book_list.mips new file mode 100644 index 000000000..c1ba57271 --- /dev/null +++ b/tests/codegen/book_list.mips @@ -0,0 +1,5688 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Book: .word 56 + type_Book_inherits_from: .word type_IO + type_Book_name_address: .word type_Book_name_size + type_Book___init__: .word function___init___at_Book + type_Book_abort: .word function_abort_at_Object + type_Book_type_name: .word function_type_name_at_Object + type_Book_copy: .word function_copy_at_Object + type_Book_out_string: .word function_out_string_at_IO + type_Book_out_int: .word function_out_int_at_IO + type_Book_in_string: .word function_in_string_at_IO + type_Book_in_int: .word function_in_int_at_IO + type_Book_initBook: .word function_initBook_at_Book + type_Book_print: .word function_print_at_Book + + type_Article: .word 64 + type_Article_inherits_from: .word type_Book + type_Article_name_address: .word type_Article_name_size + type_Article___init__: .word function___init___at_Article + type_Article_abort: .word function_abort_at_Object + type_Article_type_name: .word function_type_name_at_Object + type_Article_copy: .word function_copy_at_Object + type_Article_out_string: .word function_out_string_at_IO + type_Article_out_int: .word function_out_int_at_IO + type_Article_in_string: .word function_in_string_at_IO + type_Article_in_int: .word function_in_int_at_IO + type_Article_initBook: .word function_initBook_at_Book + type_Article_print: .word function_print_at_Article + type_Article_initArticle: .word function_initArticle_at_Article + + type_BookList: .word 60 + type_BookList_inherits_from: .word type_IO + type_BookList_name_address: .word type_BookList_name_size + type_BookList___init__: .word function___init___at_BookList + type_BookList_abort: .word function_abort_at_Object + type_BookList_type_name: .word function_type_name_at_Object + type_BookList_copy: .word function_copy_at_Object + type_BookList_out_string: .word function_out_string_at_IO + type_BookList_out_int: .word function_out_int_at_IO + type_BookList_in_string: .word function_in_string_at_IO + type_BookList_in_int: .word function_in_int_at_IO + type_BookList_isNil: .word function_isNil_at_BookList + type_BookList_cons: .word function_cons_at_BookList + type_BookList_car: .word function_car_at_BookList + type_BookList_cdr: .word function_cdr_at_BookList + type_BookList_print_list: .word function_print_list_at_BookList + + type_Cons: .word 72 + type_Cons_inherits_from: .word type_BookList + type_Cons_name_address: .word type_Cons_name_size + type_Cons___init__: .word function___init___at_Cons + type_Cons_abort: .word function_abort_at_Object + type_Cons_type_name: .word function_type_name_at_Object + type_Cons_copy: .word function_copy_at_Object + type_Cons_out_string: .word function_out_string_at_IO + type_Cons_out_int: .word function_out_int_at_IO + type_Cons_in_string: .word function_in_string_at_IO + type_Cons_in_int: .word function_in_int_at_IO + type_Cons_isNil: .word function_isNil_at_Cons + type_Cons_cons: .word function_cons_at_BookList + type_Cons_car: .word function_car_at_Cons + type_Cons_cdr: .word function_cdr_at_Cons + type_Cons_print_list: .word function_print_list_at_Cons + type_Cons_init: .word function_init_at_Cons + + type_Nil: .word 60 + type_Nil_inherits_from: .word type_BookList + type_Nil_name_address: .word type_Nil_name_size + type_Nil___init__: .word function___init___at_Nil + type_Nil_abort: .word function_abort_at_Object + type_Nil_type_name: .word function_type_name_at_Object + type_Nil_copy: .word function_copy_at_Object + type_Nil_out_string: .word function_out_string_at_IO + type_Nil_out_int: .word function_out_int_at_IO + type_Nil_in_string: .word function_in_string_at_IO + type_Nil_in_int: .word function_in_int_at_IO + type_Nil_isNil: .word function_isNil_at_Nil + type_Nil_cons: .word function_cons_at_BookList + type_Nil_car: .word function_car_at_BookList + type_Nil_cdr: .word function_cdr_at_BookList + type_Nil_print_list: .word function_print_list_at_Nil + + type_Main: .word 32 + type_Main_inherits_from: .word type_Object + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Book_name_size: .word 4 + type_Book_name: .asciiz "Book" + + type_Article_name_size: .word 7 + type_Article_name: .asciiz "Article" + + type_BookList_name_size: .word 8 + type_BookList_name: .asciiz "BookList" + + type_Cons_name_size: .word 4 + type_Cons_name: .asciiz "Cons" + + type_Nil_name_size: .word 3 + type_Nil_name: .asciiz "Nil" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Book: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 4($sp) + + # SET ATTRIBUTE title OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8793559926649 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559926649 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559926649 + j object_set_attribute_8793559926649 + int_set_attribute_8793559926649: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559926649 + bool_set_attribute_8793559926649: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559926649 + object_set_attribute_8793559926649: + sw $t1, 8($t0) + end_set_attribute_8793559926649: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 0($sp) + + # SET ATTRIBUTE author OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8793559926673 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559926673 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559926673 + j object_set_attribute_8793559926673 + int_set_attribute_8793559926673: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559926673 + bool_set_attribute_8793559926673: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559926673 + object_set_attribute_8793559926673: + sw $t1, 12($t0) + end_set_attribute_8793559926673: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_initBook_at_Book: + # SET ATTRIBUTE title OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8793559926727 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559926727 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559926727 + j object_set_attribute_8793559926727 + int_set_attribute_8793559926727: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559926727 + bool_set_attribute_8793559926727: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559926727 + object_set_attribute_8793559926727: + sw $t1, 8($t0) + end_set_attribute_8793559926727: + + # SET ATTRIBUTE author OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8793559926739 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559926739 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559926739 + j object_set_attribute_8793559926739 + int_set_attribute_8793559926739: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559926739 + bool_set_attribute_8793559926739: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559926739 + object_set_attribute_8793559926739: + sw $t1, 12($t0) + end_set_attribute_8793559926739: + + lw $v1, 8($sp) + + jr $ra + + function_print_at_Book: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -96 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 116 + sb $t0, 8($v0) + + addi $t0, $zero, 105 + sb $t0, 9($v0) + + addi $t0, $zero, 116 + sb $t0, 10($v0) + + addi $t0, $zero, 108 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 58 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 92($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD out_string OF Book + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 92($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE title OF self + lw $t0, 96($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8793559927634 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8793559927634 + j object_get_attribute_8793559927634 + int_get_attribute_8793559927634: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8793559927634 + bool_get_attribute_8793559927634: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8793559927634 + object_get_attribute_8793559927634: + sw $t1, 76($sp) + end_get_attribute_8793559927634: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # GET METHOD out_string OF Book + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 68($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 76($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 60($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD out_string OF Book + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_5] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 97 + sb $t0, 8($v0) + + addi $t0, $zero, 117 + sb $t0, 9($v0) + + addi $t0, $zero, 116 + sb $t0, 10($v0) + + addi $t0, $zero, 104 + sb $t0, 11($v0) + + addi $t0, $zero, 111 + sb $t0, 12($v0) + + addi $t0, $zero, 114 + sb $t0, 13($v0) + + addi $t0, $zero, 58 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 44($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD out_string OF Book + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE author OF self + lw $t0, 96($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8793559928586 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8793559928586 + j object_get_attribute_8793559928586 + int_get_attribute_8793559928586: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8793559928586 + bool_get_attribute_8793559928586: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8793559928586 + object_get_attribute_8793559928586: + sw $t1, 28($sp) + end_get_attribute_8793559928586: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Book + lw $t0, 40($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_13] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Book + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_17] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 96($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 96 + + jr $ra + + function___init___at_Article: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 8($sp) + + # SET ATTRIBUTE title OF self + lw $t0, 12($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8793559928697 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559928697 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559928697 + j object_set_attribute_8793559928697 + int_set_attribute_8793559928697: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559928697 + bool_set_attribute_8793559928697: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559928697 + object_set_attribute_8793559928697: + sw $t1, 8($t0) + end_set_attribute_8793559928697: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 4($sp) + + # SET ATTRIBUTE author OF self + lw $t0, 12($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8793559928721 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559928721 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559928721 + j object_set_attribute_8793559928721 + int_set_attribute_8793559928721: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559928721 + bool_set_attribute_8793559928721: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559928721 + object_set_attribute_8793559928721: + sw $t1, 12($t0) + end_set_attribute_8793559928721: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 0($sp) + + # SET ATTRIBUTE per_title OF self + lw $t0, 12($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8793559928745 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559928745 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559928745 + j object_set_attribute_8793559928745 + int_set_attribute_8793559928745: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8793559928745 + bool_set_attribute_8793559928745: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8793559928745 + object_set_attribute_8793559928745: + sw $t1, 16($t0) + end_set_attribute_8793559928745: + + lw $v1, 12($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_initArticle_at_Article: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD initBook OF Article + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [self] + lw $t0, 40($sp) + sw $t0, 8($sp) + + # ARGUMENT [title_p] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [author_p] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + # SET ATTRIBUTE per_title OF self + lw $t0, 24($sp) + lw $t1, 12($sp) + beq $t1, $zero, object_set_attribute_8793559896607 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559896607 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559896607 + j object_set_attribute_8793559896607 + int_set_attribute_8793559896607: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8793559896607 + bool_set_attribute_8793559896607: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8793559896607 + object_set_attribute_8793559896607: + sw $t1, 16($t0) + end_set_attribute_8793559896607: + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_print_at_Article: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -60 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD print OF Book + lw $t0, 60($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_print_at_Book + jal function_print_at_Book + lw $ra, 4($sp) + sw $v1, 64($sp) + addi $sp, $sp, 8 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 22 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 22 + sw $t0, 4($v0) + + addi $t0, $zero, 112 + sb $t0, 8($v0) + + addi $t0, $zero, 101 + sb $t0, 9($v0) + + addi $t0, $zero, 114 + sb $t0, 10($v0) + + addi $t0, $zero, 105 + sb $t0, 11($v0) + + addi $t0, $zero, 111 + sb $t0, 12($v0) + + addi $t0, $zero, 100 + sb $t0, 13($v0) + + addi $t0, $zero, 105 + sb $t0, 14($v0) + + addi $t0, $zero, 99 + sb $t0, 15($v0) + + addi $t0, $zero, 97 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 58 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + sb $zero, 21($v0) + + sw $v0, 44($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD out_string OF Article + lw $t0, 60($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE per_title OF self + lw $t0, 60($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8793559896772 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8793559896772 + j object_get_attribute_8793559896772 + int_get_attribute_8793559896772: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8793559896772 + bool_get_attribute_8793559896772: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8793559896772 + object_get_attribute_8793559896772: + sw $t1, 28($sp) + end_get_attribute_8793559896772: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Article + lw $t0, 40($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Article + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_8] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 60($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 60 + + jr $ra + + function___init___at_BookList: + lw $v1, 0($sp) + + jr $ra + + function_isNil_at_BookList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF BookList + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_cons_at_BookList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # ALLOCATING -> Cons + li $v0, 9 + lw $a0, type_Cons + syscall + la $t0, type_Cons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Cons + jal function___init___at_Cons + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [new_cell] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD init OF Cons + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [new_cell] + lw $t0, 32($sp) + sw $t0, 8($sp) + + # ARGUMENT [hd] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function_car_at_BookList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF BookList + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING -> Book + li $v0, 9 + lw $a0, type_Book + syscall + la $t0, type_Book + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 8($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Book + jal function___init___at_Book + lw $ra, 4($sp) + sw $v1, 8($sp) + addi $sp, $sp, 8 + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_cdr_at_BookList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF BookList + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING -> BookList + li $v0, 9 + lw $a0, type_BookList + syscall + la $t0, type_BookList + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 8($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_BookList + jal function___init___at_BookList + lw $ra, 4($sp) + sw $v1, 8($sp) + addi $sp, $sp, 8 + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_print_list_at_BookList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD abort OF BookList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function___init___at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 4($sp) + + # SET ATTRIBUTE xcar OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8793559898893 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559898893 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559898893 + j object_set_attribute_8793559898893 + int_set_attribute_8793559898893: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559898893 + bool_set_attribute_8793559898893: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559898893 + object_set_attribute_8793559898893: + sw $t1, 8($t0) + end_set_attribute_8793559898893: + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 0($sp) + + # SET ATTRIBUTE xcdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8793559898917 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559898917 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559898917 + j object_set_attribute_8793559898917 + int_set_attribute_8793559898917: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559898917 + bool_set_attribute_8793559898917: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559898917 + object_set_attribute_8793559898917: + sw $t1, 12($t0) + end_set_attribute_8793559898917: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_isNil_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_init_at_Cons: + # SET ATTRIBUTE xcar OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8793559899001 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559899001 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559899001 + j object_set_attribute_8793559899001 + int_set_attribute_8793559899001: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559899001 + bool_set_attribute_8793559899001: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559899001 + object_set_attribute_8793559899001: + sw $t1, 8($t0) + end_set_attribute_8793559899001: + + # SET ATTRIBUTE xcdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8793559899013 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559899013 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559899013 + j object_set_attribute_8793559899013 + int_set_attribute_8793559899013: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559899013 + bool_set_attribute_8793559899013: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8793559899013 + object_set_attribute_8793559899013: + sw $t1, 12($t0) + end_set_attribute_8793559899013: + + lw $v1, 8($sp) + + jr $ra + + function_car_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE xcar OF self + lw $t0, 4($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8793559899025 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8793559899025 + j object_get_attribute_8793559899025 + int_get_attribute_8793559899025: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8793559899025 + bool_get_attribute_8793559899025: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8793559899025 + object_get_attribute_8793559899025: + sw $t1, 0($sp) + end_get_attribute_8793559899025: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_cdr_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE xcdr OF self + lw $t0, 4($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8793559899055 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8793559899055 + j object_get_attribute_8793559899055 + int_get_attribute_8793559899055: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8793559899055 + bool_get_attribute_8793559899055: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8793559899055 + object_get_attribute_8793559899055: + sw $t1, 0($sp) + end_get_attribute_8793559899055: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_print_list_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -220 + + # GET ATTRIBUTE xcar OF self + lw $t0, 220($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8793559899396 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8793559899396 + j object_get_attribute_8793559899396 + int_get_attribute_8793559899396: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 216($sp) + j end_get_attribute_8793559899396 + bool_get_attribute_8793559899396: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 216($sp) + j end_get_attribute_8793559899396 + object_get_attribute_8793559899396: + sw $t1, 216($sp) + end_get_attribute_8793559899396: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # GET METHOD print OF Book + lw $t0, 216($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 208($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 212($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 220($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 200($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 196($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # ALLOCATING NUll INTO -> internal_7 + sw $zero, 188($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 180($sp) + + # internal_10 <- TYPEOF internal_1 + lw $t0, 212($sp) + lw $t0, 0($t0) + sw $t0, 176($sp) + + # internal_11 <- internal_10 + lw $t0, 176($sp) + sw $t0, 172($sp) + + while_start_8793559942837: + + # internal_9 <- EQUALADDRESS (internal_11, internal_7) + lw $t0, 172($sp) + lw $t1, 188($sp) + seq $t2, $t0, $t1 + lw $t0, 180($sp) + sw $t2, 8($t0) + + # IF internal_9 THEN GOTO while_end_8793559942837 + lw $t0, 180($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8793559942837 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_8] + lw $t0, 196($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 208($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 196($sp) + addi $sp, $sp, 12 + + # internal_11 <- ANCESTOR OF internal_11 + lw $t0, 172($sp) + lw $t0, 4($t0) + sw $t0, 172($sp) + + # JUMP TO while_start_8793559942837 + j while_start_8793559942837 + + while_end_8793559942837: + + # internal_11 <- internal_10 + lw $t0, 176($sp) + sw $t0, 172($sp) + + # INITIALIZE ARRAY [internal_8] + lw $t0, 184($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 168($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 164($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 160($sp) + + foreach_start_8793559942837: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_13] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # IF internal_14 THEN GOTO foreach_body_8793559942837 + lw $t0, 160($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8793559942837 + + # JUMP TO foreach_end_8793559942837 + j foreach_end_8793559942837 + + foreach_body_8793559942837: + + # ARRAY internal_12[internal_13] <- internal_11 + lw $t0, 164($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 168($sp) + add $t1, $t1, $t0 + lw $t0, 172($sp) + sw $t0, 0($t1) + + # internal_11 <- ANCESTOR OF internal_11 + lw $t0, 172($sp) + lw $t0, 4($t0) + sw $t0, 172($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_13] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 208($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 176($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8793559942837 + j foreach_start_8793559942837 + + foreach_end_8793559942837: + + # INITIALIZE ARRAY [internal_6] + lw $t0, 192($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 156($sp) + + # INITIALIZE ARRAY [internal_6] + lw $t0, 192($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 152($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # internal_17 <- DIRECTION OF Book + la $t0, type_Book + sw $t0, 148($sp) + + # ARRAY internal_15[internal_18] <- internal_17 + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 156($sp) + add $t1, $t1, $t0 + lw $t0, 148($sp) + sw $t0, 0($t1) + + # ARRAY internal_16[internal_18] <- internal_8 + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 152($sp) + add $t1, $t1, $t0 + lw $t0, 184($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # internal_19 <- DIRECTION OF Article + la $t0, type_Article + sw $t0, 140($sp) + + # ARRAY internal_15[internal_20] <- internal_19 + lw $t0, 136($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 156($sp) + add $t1, $t1, $t0 + lw $t0, 140($sp) + sw $t0, 0($t1) + + # ARRAY internal_16[internal_20] <- internal_8 + lw $t0, 136($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 152($sp) + add $t1, $t1, $t0 + lw $t0, 184($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + foreach_type_start_8793559942837: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_21] + lw $t0, 144($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 204($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 140($sp) + addi $sp, $sp, 12 + + # IF internal_22 THEN GOTO foreach_type_body_8793559942837 + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8793559942837 + + # JUMP TO foreach_type_end_8793559942837 + j foreach_type_end_8793559942837 + + foreach_type_body_8793559942837: + + # internal_23 <- ARRAY internal_15[internal_21] + lw $t0, 132($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 156($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_24] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8793559942837: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_24] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # IF internal_25 THEN GOTO foreach_ancestor_body_8793559942837 + lw $t0, 116($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8793559942837 + + # JUMP TO foreach_ancestor_end_8793559942837 + j foreach_ancestor_end_8793559942837 + + foreach_ancestor_body_8793559942837: + + # internal_26 <- ARRAY internal_12[internal_24] + lw $t0, 120($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 168($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 112($sp) + + # internal_27 <- EQUALADDRESS (internal_23, internal_26) + lw $t0, 124($sp) + lw $t1, 112($sp) + seq $t2, $t0, $t1 + lw $t0, 108($sp) + sw $t2, 8($t0) + + # IF internal_27 THEN GOTO foreach_ancestor_end_8793559942837 + lw $t0, 108($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8793559942837 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_24] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 208($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8793559942837 + j foreach_ancestor_start_8793559942837 + + foreach_ancestor_end_8793559942837: + + # ARRAY internal_16[internal_21] <- internal_24 + lw $t0, 132($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 152($sp) + add $t1, $t1, $t0 + lw $t0, 120($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_21] + lw $t0, 144($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 208($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8793559942837 + j foreach_type_start_8793559942837 + + foreach_type_end_8793559942837: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 104($sp) + addi $sp, $sp, 12 + + foreach_min_start_8793559942837: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_28] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 204($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # IF internal_32 THEN GOTO foreach_min_body_8793559942837 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8793559942837 + + # JUMP TO foreach_min_end_8793559942837 + j foreach_min_end_8793559942837 + + foreach_min_body_8793559942837: + + # internal_30 <- ARRAY internal_16[internal_28] + lw $t0, 104($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 152($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 96($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_30] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_31] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # IF internal_32 THEN GOTO update_min_8793559942837 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8793559942837 + + # JUMP TO update_min_end_8793559942837 + j update_min_end_8793559942837 + + update_min_8793559942837: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_30] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 104($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_28] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + update_min_end_8793559942837: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_28] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 208($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 116($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8793559942837 + j foreach_min_start_8793559942837 + + foreach_min_end_8793559942837: + + # INITIALIZE ARRAY [internal_6] + lw $t0, 192($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 84($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # ARRAY internal_33[internal_34] <- internal_4 + lw $t0, 80($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 200($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # ARRAY internal_33[internal_35] <- internal_4 + lw $t0, 76($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 200($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # IF internal_36 THEN GOTO error_branch_8793559942837 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8793559942837 + + # ARRAY internal_33[internal_29] <- internal_5 + lw $t0, 100($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 196($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # internal_37 <- ARRAY internal_33[internal_38] + lw $t0, 64($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 68($sp) + sw $t0, 8($t2) + + # IF internal_37 THEN GOTO branch_Book_8793559942837 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Book_8793559942837 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # internal_37 <- ARRAY internal_33[internal_39] + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 68($sp) + sw $t0, 8($t2) + + # IF internal_37 THEN GOTO branch_Article_8793559942837 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Article_8793559942837 + + branch_Book_8793559942837: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [dummy] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 35 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 35 + sw $t0, 4($v0) + + addi $t0, $zero, 45 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 100 + sb $t0, 10($v0) + + addi $t0, $zero, 121 + sb $t0, 11($v0) + + addi $t0, $zero, 110 + sb $t0, 12($v0) + + addi $t0, $zero, 97 + sb $t0, 13($v0) + + addi $t0, $zero, 109 + sb $t0, 14($v0) + + addi $t0, $zero, 105 + sb $t0, 15($v0) + + addi $t0, $zero, 99 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 116 + sb $t0, 18($v0) + + addi $t0, $zero, 121 + sb $t0, 19($v0) + + addi $t0, $zero, 112 + sb $t0, 20($v0) + + addi $t0, $zero, 101 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 119 + sb $t0, 23($v0) + + addi $t0, $zero, 97 + sb $t0, 24($v0) + + addi $t0, $zero, 115 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 66 + sb $t0, 27($v0) + + addi $t0, $zero, 111 + sb $t0, 28($v0) + + addi $t0, $zero, 111 + sb $t0, 29($v0) + + addi $t0, $zero, 107 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 45 + sb $t0, 32($v0) + + addi $t0, $zero, 10 + sb $t0, 33($v0) + + sb $zero, 34($v0) + + sw $v0, 48($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD out_string OF Cons + lw $t0, 220($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_42] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_45 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_40] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_43] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # internal_40 <- internal_43 + lw $t0, 44($sp) + sw $t0, 56($sp) + + # JUMP TO branch_end_8793559942837 + j branch_end_8793559942837 + + branch_Article_8793559942837: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [dummy] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 38 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 38 + sw $t0, 4($v0) + + addi $t0, $zero, 45 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 100 + sb $t0, 10($v0) + + addi $t0, $zero, 121 + sb $t0, 11($v0) + + addi $t0, $zero, 110 + sb $t0, 12($v0) + + addi $t0, $zero, 97 + sb $t0, 13($v0) + + addi $t0, $zero, 109 + sb $t0, 14($v0) + + addi $t0, $zero, 105 + sb $t0, 15($v0) + + addi $t0, $zero, 99 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 116 + sb $t0, 18($v0) + + addi $t0, $zero, 121 + sb $t0, 19($v0) + + addi $t0, $zero, 112 + sb $t0, 20($v0) + + addi $t0, $zero, 101 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 119 + sb $t0, 23($v0) + + addi $t0, $zero, 97 + sb $t0, 24($v0) + + addi $t0, $zero, 115 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 65 + sb $t0, 27($v0) + + addi $t0, $zero, 114 + sb $t0, 28($v0) + + addi $t0, $zero, 116 + sb $t0, 29($v0) + + addi $t0, $zero, 105 + sb $t0, 30($v0) + + addi $t0, $zero, 99 + sb $t0, 31($v0) + + addi $t0, $zero, 108 + sb $t0, 32($v0) + + addi $t0, $zero, 101 + sb $t0, 33($v0) + + addi $t0, $zero, 32 + sb $t0, 34($v0) + + addi $t0, $zero, 45 + sb $t0, 35($v0) + + addi $t0, $zero, 10 + sb $t0, 36($v0) + + sb $zero, 37($v0) + + sw $v0, 28($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Cons + lw $t0, 220($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_50 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_40] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_48] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # internal_40 <- internal_48 + lw $t0, 24($sp) + sw $t0, 56($sp) + + # JUMP TO branch_end_8793559942837 + j branch_end_8793559942837 + + error_branch_8793559942837: + + branch_end_8793559942837: + + # GET ATTRIBUTE xcdr OF self + lw $t0, 220($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8793559902338 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8793559902338 + j object_get_attribute_8793559902338 + int_get_attribute_8793559902338: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8793559902338 + bool_get_attribute_8793559902338: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8793559902338 + object_get_attribute_8793559902338: + sw $t1, 12($sp) + end_get_attribute_8793559902338: + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print_list OF BookList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_54 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 220 + + jr $ra + + function___init___at_Nil: + lw $v1, 0($sp) + + jr $ra + + function_isNil_at_Nil: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_print_list_at_Nil: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 0($sp) + + # SET ATTRIBUTE books OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8793559902745 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559902745 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559902745 + j object_set_attribute_8793559902745 + int_set_attribute_8793559902745: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559902745 + bool_set_attribute_8793559902745: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559902745 + object_set_attribute_8793559902745: + sw $t1, 8($t0) + end_set_attribute_8793559902745: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -104 + + # ALLOCATING -> Book + li $v0, 9 + lw $a0, type_Book + syscall + la $t0, type_Book + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 96($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Book + jal function___init___at_Book + lw $ra, 4($sp) + sw $v1, 104($sp) + addi $sp, $sp, 8 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 53 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 53 + sw $t0, 4($v0) + + addi $t0, $zero, 67 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 109 + sb $t0, 10($v0) + + addi $t0, $zero, 112 + sb $t0, 11($v0) + + addi $t0, $zero, 105 + sb $t0, 12($v0) + + addi $t0, $zero, 108 + sb $t0, 13($v0) + + addi $t0, $zero, 101 + sb $t0, 14($v0) + + addi $t0, $zero, 114 + sb $t0, 15($v0) + + addi $t0, $zero, 115 + sb $t0, 16($v0) + + addi $t0, $zero, 44 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 80 + sb $t0, 19($v0) + + addi $t0, $zero, 114 + sb $t0, 20($v0) + + addi $t0, $zero, 105 + sb $t0, 21($v0) + + addi $t0, $zero, 110 + sb $t0, 22($v0) + + addi $t0, $zero, 99 + sb $t0, 23($v0) + + addi $t0, $zero, 105 + sb $t0, 24($v0) + + addi $t0, $zero, 112 + sb $t0, 25($v0) + + addi $t0, $zero, 108 + sb $t0, 26($v0) + + addi $t0, $zero, 101 + sb $t0, 27($v0) + + addi $t0, $zero, 115 + sb $t0, 28($v0) + + addi $t0, $zero, 44 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 84 + sb $t0, 31($v0) + + addi $t0, $zero, 101 + sb $t0, 32($v0) + + addi $t0, $zero, 99 + sb $t0, 33($v0) + + addi $t0, $zero, 104 + sb $t0, 34($v0) + + addi $t0, $zero, 110 + sb $t0, 35($v0) + + addi $t0, $zero, 105 + sb $t0, 36($v0) + + addi $t0, $zero, 113 + sb $t0, 37($v0) + + addi $t0, $zero, 117 + sb $t0, 38($v0) + + addi $t0, $zero, 101 + sb $t0, 39($v0) + + addi $t0, $zero, 115 + sb $t0, 40($v0) + + addi $t0, $zero, 44 + sb $t0, 41($v0) + + addi $t0, $zero, 32 + sb $t0, 42($v0) + + addi $t0, $zero, 97 + sb $t0, 43($v0) + + addi $t0, $zero, 110 + sb $t0, 44($v0) + + addi $t0, $zero, 100 + sb $t0, 45($v0) + + addi $t0, $zero, 32 + sb $t0, 46($v0) + + addi $t0, $zero, 84 + sb $t0, 47($v0) + + addi $t0, $zero, 111 + sb $t0, 48($v0) + + addi $t0, $zero, 111 + sb $t0, 49($v0) + + addi $t0, $zero, 108 + sb $t0, 50($v0) + + addi $t0, $zero, 115 + sb $t0, 51($v0) + + sb $zero, 52($v0) + + sw $v0, 92($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 31 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 31 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 104 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 44 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 83 + sb $t0, 13($v0) + + addi $t0, $zero, 101 + sb $t0, 14($v0) + + addi $t0, $zero, 116 + sb $t0, 15($v0) + + addi $t0, $zero, 104 + sb $t0, 16($v0) + + addi $t0, $zero, 105 + sb $t0, 17($v0) + + addi $t0, $zero, 44 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 97 + sb $t0, 20($v0) + + addi $t0, $zero, 110 + sb $t0, 21($v0) + + addi $t0, $zero, 100 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 85 + sb $t0, 24($v0) + + addi $t0, $zero, 108 + sb $t0, 25($v0) + + addi $t0, $zero, 108 + sb $t0, 26($v0) + + addi $t0, $zero, 109 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 110 + sb $t0, 29($v0) + + sb $zero, 30($v0) + + sw $v0, 88($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # GET METHOD initBook OF Book + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 80($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_1] + lw $t0, 112($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 92($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 100($sp) + addi $sp, $sp, 16 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a_book] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Article + li $v0, 9 + lw $a0, type_Article + syscall + la $t0, type_Article + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Article + jal function___init___at_Article + lw $ra, 4($sp) + sw $v1, 76($sp) + addi $sp, $sp, 8 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 28 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 28 + sw $t0, 4($v0) + + addi $t0, $zero, 84 + sb $t0, 8($v0) + + addi $t0, $zero, 104 + sb $t0, 9($v0) + + addi $t0, $zero, 101 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 84 + sb $t0, 12($v0) + + addi $t0, $zero, 111 + sb $t0, 13($v0) + + addi $t0, $zero, 112 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 49 + sb $t0, 16($v0) + + addi $t0, $zero, 48 + sb $t0, 17($v0) + + addi $t0, $zero, 48 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 67 + sb $t0, 20($v0) + + addi $t0, $zero, 68 + sb $t0, 21($v0) + + addi $t0, $zero, 95 + sb $t0, 22($v0) + + addi $t0, $zero, 82 + sb $t0, 23($v0) + + addi $t0, $zero, 79 + sb $t0, 24($v0) + + addi $t0, $zero, 77 + sb $t0, 25($v0) + + addi $t0, $zero, 115 + sb $t0, 26($v0) + + sb $zero, 27($v0) + + sw $v0, 64($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 16 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 16 + sw $t0, 4($v0) + + addi $t0, $zero, 85 + sb $t0, 8($v0) + + addi $t0, $zero, 108 + sb $t0, 9($v0) + + addi $t0, $zero, 97 + sb $t0, 10($v0) + + addi $t0, $zero, 110 + sb $t0, 11($v0) + + addi $t0, $zero, 111 + sb $t0, 12($v0) + + addi $t0, $zero, 102 + sb $t0, 13($v0) + + addi $t0, $zero, 102 + sb $t0, 14($v0) + + sb $zero, 15($v0) + + sw $v0, 60($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 20 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 20 + sw $t0, 4($v0) + + addi $t0, $zero, 80 + sb $t0, 8($v0) + + addi $t0, $zero, 67 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 77 + sb $t0, 11($v0) + + addi $t0, $zero, 97 + sb $t0, 12($v0) + + addi $t0, $zero, 103 + sb $t0, 13($v0) + + addi $t0, $zero, 97 + sb $t0, 14($v0) + + addi $t0, $zero, 122 + sb $t0, 15($v0) + + addi $t0, $zero, 105 + sb $t0, 16($v0) + + addi $t0, $zero, 110 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + sb $zero, 19($v0) + + sw $v0, 56($sp) + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD initArticle OF Article + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -20 + sw $ra, 16($sp) + + # ARGUMENT [internal_8] + lw $t0, 88($sp) + sw $t0, 12($sp) + + # ARGUMENT [internal_9] + lw $t0, 84($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 64($sp) + jalr $t0 + lw $ra, 16($sp) + sw $v1, 72($sp) + addi $sp, $sp, 20 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [an_article] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Nil + li $v0, 9 + lw $a0, type_Nil + syscall + la $t0, type_Nil + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Nil + jal function___init___at_Nil + lw $ra, 4($sp) + sw $v1, 48($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET METHOD cons OF Nil + lw $t0, 40($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 32($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_15] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [a_book] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_18 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD cons OF Cons + lw $t0, 36($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_16] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [an_article] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_21 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE books OF self + lw $t0, 104($sp) + lw $t1, 24($sp) + beq $t1, $zero, object_set_attribute_8793559903627 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8793559903627 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8793559903627 + j object_set_attribute_8793559903627 + int_set_attribute_8793559903627: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559903627 + bool_set_attribute_8793559903627: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8793559903627 + object_set_attribute_8793559903627: + sw $t1, 8($t0) + end_set_attribute_8793559903627: + + # GET ATTRIBUTE books OF self + lw $t0, 104($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8793559904290 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8793559904290 + j object_get_attribute_8793559904290 + int_get_attribute_8793559904290: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8793559904290 + bool_get_attribute_8793559904290: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8793559904290 + object_get_attribute_8793559904290: + sw $t1, 12($sp) + end_get_attribute_8793559904290: + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print_list OF BookList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 104 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/cells.mips b/tests/codegen/cells.mips new file mode 100644 index 000000000..dd426c249 --- /dev/null +++ b/tests/codegen/cells.mips @@ -0,0 +1,3875 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_CellularAutomaton: .word 76 + type_CellularAutomaton_inherits_from: .word type_IO + type_CellularAutomaton_name_address: .word type_CellularAutomaton_name_size + type_CellularAutomaton___init__: .word function___init___at_CellularAutomaton + type_CellularAutomaton_abort: .word function_abort_at_Object + type_CellularAutomaton_type_name: .word function_type_name_at_Object + type_CellularAutomaton_copy: .word function_copy_at_Object + type_CellularAutomaton_out_string: .word function_out_string_at_IO + type_CellularAutomaton_out_int: .word function_out_int_at_IO + type_CellularAutomaton_in_string: .word function_in_string_at_IO + type_CellularAutomaton_in_int: .word function_in_int_at_IO + type_CellularAutomaton_init: .word function_init_at_CellularAutomaton + type_CellularAutomaton_print: .word function_print_at_CellularAutomaton + type_CellularAutomaton_num_cells: .word function_num_cells_at_CellularAutomaton + type_CellularAutomaton_cell: .word function_cell_at_CellularAutomaton + type_CellularAutomaton_cell_left_neighbor: .word function_cell_left_neighbor_at_CellularAutomaton + type_CellularAutomaton_cell_right_neighbor: .word function_cell_right_neighbor_at_CellularAutomaton + type_CellularAutomaton_cell_at_next_evolution: .word function_cell_at_next_evolution_at_CellularAutomaton + type_CellularAutomaton_evolve: .word function_evolve_at_CellularAutomaton + + type_Main: .word 32 + type_Main_inherits_from: .word type_Object + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_CellularAutomaton_name_size: .word 17 + type_CellularAutomaton_name: .asciiz "CellularAutomaton" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 0($sp) + + # SET ATTRIBUTE population_map OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776000770223 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776000770223 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776000770223 + j object_set_attribute_8776000770223 + int_set_attribute_8776000770223: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000770223 + bool_set_attribute_8776000770223: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000770223 + object_set_attribute_8776000770223: + sw $t1, 8($t0) + end_set_attribute_8776000770223: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_init_at_CellularAutomaton: + # SET ATTRIBUTE population_map OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776000770271 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776000770271 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776000770271 + j object_set_attribute_8776000770271 + int_set_attribute_8776000770271: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000770271 + bool_set_attribute_8776000770271: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000770271 + object_set_attribute_8776000770271: + sw $t1, 8($t0) + end_set_attribute_8776000770271: + + lw $v1, 4($sp) + + jr $ra + + function_print_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -32 + + # GET ATTRIBUTE population_map OF self + lw $t0, 32($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776000771106 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776000771106 + j object_get_attribute_8776000771106 + int_get_attribute_8776000771106: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776000771106 + bool_get_attribute_8776000771106: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776000771106 + object_get_attribute_8776000771106: + sw $t1, 28($sp) + end_get_attribute_8776000771106: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 24($sp) + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD concat OF String + lw $t0, 28($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 32($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 32 + + jr $ra + + function_num_cells_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # GET ATTRIBUTE population_map OF self + lw $t0, 16($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776000771208 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776000771208 + j object_get_attribute_8776000771208 + int_get_attribute_8776000771208: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776000771208 + bool_get_attribute_8776000771208: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776000771208 + object_get_attribute_8776000771208: + sw $t1, 12($sp) + end_get_attribute_8776000771208: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD length OF String + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_cell_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # GET ATTRIBUTE population_map OF self + lw $t0, 24($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776000771286 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776000771286 + j object_get_attribute_8776000771286 + int_get_attribute_8776000771286: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8776000771286 + bool_get_attribute_8776000771286: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8776000771286 + object_get_attribute_8776000771286: + sw $t1, 16($sp) + end_get_attribute_8776000771286: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD substr OF String + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 8($sp) + + # ARGUMENT [position] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function_cell_left_neighbor_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -68 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 52($sp) + sw $t0, 60($sp) + + # IF internal_1 THEN GOTO then_8776000787300 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776000787300 + + # JUMP TO else_8776000787300 + j else_8776000787300 + + then_8776000787300: + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET METHOD num_cells OF CellularAutomaton + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 44($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 56($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_9 + lw $t0, 28($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8776000787300 + j endif_8776000787300 + + else_8776000787300: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_14 + lw $t0, 8($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8776000787300 + j endif_8776000787300 + + endif_8776000787300: + + lw $v1, 64($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 68 + + jr $ra + + function_cell_right_neighbor_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -68 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD num_cells OF CellularAutomaton + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 56($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 64($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_7 + lw $t0, 36($sp) + sw $t0, 60($sp) + + # IF internal_1 THEN GOTO then_8776000787378 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776000787378 + + # JUMP TO else_8776000787378 + j else_8776000787378 + + then_8776000787378: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_9 + lw $t0, 28($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8776000787378 + j endif_8776000787378 + + else_8776000787378: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_14 + lw $t0, 8($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8776000787378 + j endif_8776000787378 + + endif_8776000787378: + + lw $v1, 64($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 68 + + jr $ra + + function_cell_at_next_evolution_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -140 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 144($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 116($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 112($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 152($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 124($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 120($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 116($sp) + addi $sp, $sp, 12 + + # internal_3 <- internal_8 + lw $t0, 104($sp) + sw $t0, 124($sp) + + # IF internal_3 THEN GOTO then_8776000787432 + lw $t0, 124($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776000787432 + + # JUMP TO else_8776000787432 + j else_8776000787432 + + then_8776000787432: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # internal_2 <- internal_9 + lw $t0, 100($sp) + sw $t0, 128($sp) + + # JUMP TO endif_8776000787432 + j endif_8776000787432 + + else_8776000787432: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # internal_2 <- internal_10 + lw $t0, 96($sp) + sw $t0, 128($sp) + + # JUMP TO endif_8776000787432 + j endif_8776000787432 + + endif_8776000787432: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # GET METHOD cell_left_neighbor OF CellularAutomaton + lw $t0, 144($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 80($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 152($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 88($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 72($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_13] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # internal_12 <- internal_17 + lw $t0, 68($sp) + sw $t0, 88($sp) + + # IF internal_12 THEN GOTO then_8776000787999 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776000787999 + + # JUMP TO else_8776000787999 + j else_8776000787999 + + then_8776000787999: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # internal_11 <- internal_18 + lw $t0, 64($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8776000787999 + j endif_8776000787999 + + else_8776000787999: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # internal_11 <- internal_19 + lw $t0, 60($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8776000787999 + j endif_8776000787999 + + endif_8776000787999: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 140($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD cell_right_neighbor OF CellularAutomaton + lw $t0, 144($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 152($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_23] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_26] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # internal_22 <- internal_27 + lw $t0, 28($sp) + sw $t0, 48($sp) + + # IF internal_22 THEN GOTO then_8776000788044 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776000788044 + + # JUMP TO else_8776000788044 + j else_8776000788044 + + then_8776000788044: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # internal_21 <- internal_28 + lw $t0, 24($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8776000788044 + j endif_8776000788044 + + else_8776000788044: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_21 <- internal_29 + lw $t0, 20($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8776000788044 + j endif_8776000788044 + + endif_8776000788044: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_20] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_30] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_31] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_32 + lw $t0, 8($sp) + sw $t0, 132($sp) + + # IF internal_1 THEN GOTO then_8776000787990 + lw $t0, 132($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776000787990 + + # JUMP TO else_8776000787990 + j else_8776000787990 + + then_8776000787990: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 4($sp) + + # internal_0 <- internal_33 + lw $t0, 4($sp) + sw $t0, 136($sp) + + # JUMP TO endif_8776000787990 + j endif_8776000787990 + + else_8776000787990: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 46 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 0($sp) + + # internal_0 <- internal_34 + lw $t0, 0($sp) + sw $t0, 136($sp) + + # JUMP TO endif_8776000787990 + j endif_8776000787990 + + endif_8776000787990: + + lw $v1, 136($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 140 + + jr $ra + + function_evolve_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -64 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD num_cells OF CellularAutomaton + lw $t0, 64($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 40($sp) + + # ALLOCATING NUll INTO -> internal_6 + sw $zero, 36($sp) + + while_start_8776000788122: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [num] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # IF internal_7 THEN GOTO while_body_8776000788122 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8776000788122 + + # JUMP TO while_end_8776000788122 + j while_end_8776000788122 + + while_body_8776000788122: + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD cell_at_next_evolution OF CellularAutomaton + lw $t0, 64($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # GET METHOD concat OF String + lw $t0, 40($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 12($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 8($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [temp] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_13 + lw $t0, 20($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [temp] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8776000788122 + j while_start_8776000788122 + + while_end_8776000788122: + + # SET ATTRIBUTE population_map OF self + lw $t0, 64($sp) + lw $t1, 40($sp) + beq $t1, $zero, object_set_attribute_8776000744686 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776000744686 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776000744686 + j object_set_attribute_8776000744686 + int_set_attribute_8776000744686: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000744686 + bool_set_attribute_8776000744686: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000744686 + object_set_attribute_8776000744686: + sw $t1, 8($t0) + end_set_attribute_8776000744686: + + lw $v1, 64($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 64 + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 0($sp) + + # SET ATTRIBUTE cells OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776000744575 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776000744575 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776000744575 + j object_set_attribute_8776000744575 + int_set_attribute_8776000744575: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000744575 + bool_set_attribute_8776000744575: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000744575 + object_set_attribute_8776000744575: + sw $t1, 8($t0) + end_set_attribute_8776000744575: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -96 + + # ALLOCATING -> CellularAutomaton + li $v0, 9 + lw $a0, type_CellularAutomaton + syscall + la $t0, type_CellularAutomaton + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_CellularAutomaton + jal function___init___at_CellularAutomaton + lw $ra, 4($sp) + sw $v1, 100($sp) + addi $sp, $sp, 8 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 28 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 28 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 88 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + sb $zero, 27($v0) + + sw $v0, 88($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # GET METHOD init OF CellularAutomaton + lw $t0, 92($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 80($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 88($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE cells OF self + lw $t0, 96($sp) + lw $t1, 84($sp) + beq $t1, $zero, object_set_attribute_8776000745165 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776000745165 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776000745165 + j object_set_attribute_8776000745165 + int_set_attribute_8776000745165: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000745165 + bool_set_attribute_8776000745165: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776000745165 + object_set_attribute_8776000745165: + sw $t1, 8($t0) + end_set_attribute_8776000745165: + + # GET ATTRIBUTE cells OF self + lw $t0, 96($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776000745536 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776000745536 + j object_get_attribute_8776000745536 + int_get_attribute_8776000745536: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8776000745536 + bool_get_attribute_8776000745536: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8776000745536 + object_get_attribute_8776000745536: + sw $t1, 72($sp) + end_get_attribute_8776000745536: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD print OF CellularAutomaton + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 68($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 76($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 20 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 20 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [countdown] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_11 + sw $zero, 48($sp) + + while_start_8776000788167: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [countdown] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # IF internal_13 THEN GOTO while_body_8776000788167 + lw $t0, 40($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8776000788167 + + # JUMP TO while_end_8776000788167 + j while_end_8776000788167 + + while_body_8776000788167: + + # GET ATTRIBUTE cells OF self + lw $t0, 96($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776000746042 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776000746042 + j object_get_attribute_8776000746042 + int_get_attribute_8776000746042: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($sp) + j end_get_attribute_8776000746042 + bool_get_attribute_8776000746042: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($sp) + j end_get_attribute_8776000746042 + object_get_attribute_8776000746042: + sw $t1, 36($sp) + end_get_attribute_8776000746042: + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD evolve OF CellularAutomaton + lw $t0, 36($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_17 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 40($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE cells OF self + lw $t0, 96($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776000746096 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776000746096 + j object_get_attribute_8776000746096 + int_get_attribute_8776000746096: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8776000746096 + bool_get_attribute_8776000746096: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8776000746096 + object_get_attribute_8776000746096: + sw $t1, 20($sp) + end_get_attribute_8776000746096: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # GET METHOD print OF CellularAutomaton + lw $t0, 20($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 12($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 8($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_21 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [countdown] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [countdown] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_23] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8776000788167 + j while_start_8776000788167 + + while_end_8776000788167: + + lw $v1, 96($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 96 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/complex.mips b/tests/codegen/complex.mips new file mode 100644 index 000000000..5f1c3ceda --- /dev/null +++ b/tests/codegen/complex.mips @@ -0,0 +1,3211 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Main: .word 44 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_main: .word function_main_at_Main + + type_Complex: .word 68 + type_Complex_inherits_from: .word type_IO + type_Complex_name_address: .word type_Complex_name_size + type_Complex___init__: .word function___init___at_Complex + type_Complex_abort: .word function_abort_at_Object + type_Complex_type_name: .word function_type_name_at_Object + type_Complex_copy: .word function_copy_at_Object + type_Complex_out_string: .word function_out_string_at_IO + type_Complex_out_int: .word function_out_int_at_IO + type_Complex_in_string: .word function_in_string_at_IO + type_Complex_in_int: .word function_in_int_at_IO + type_Complex_init: .word function_init_at_Complex + type_Complex_print: .word function_print_at_Complex + type_Complex_reflect_0: .word function_reflect_0_at_Complex + type_Complex_reflect_X: .word function_reflect_X_at_Complex + type_Complex_reflect_Y: .word function_reflect_Y_at_Complex + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + type_Complex_name_size: .word 7 + type_Complex_name: .asciiz "Complex" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Main: + lw $v1, 0($sp) + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -108 + + # ALLOCATING -> Complex + li $v0, 9 + lw $a0, type_Complex + syscall + la $t0, type_Complex + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 100($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Complex + jal function___init___at_Complex + lw $ra, 4($sp) + sw $v1, 108($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD init OF Complex + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_1] + lw $t0, 116($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 96($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 104($sp) + addi $sp, $sp, 16 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 116($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD reflect_X OF Complex + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [c] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 68($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 76($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD reflect_Y OF Complex + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 56($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 64($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD reflect_0 OF Complex + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [c] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_17 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 52($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_18 + lw $t0, 32($sp) + sw $t0, 72($sp) + + # IF internal_8 THEN GOTO then_8792197894873 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8792197894873 + + # JUMP TO else_8792197894873 + j else_8792197894873 + + then_8792197894873: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 12 + sw $t0, 4($v0) + + addi $t0, $zero, 61 + sb $t0, 8($v0) + + addi $t0, $zero, 41 + sb $t0, 9($v0) + + addi $t0, $zero, 10 + sb $t0, 10($v0) + + sb $zero, 11($v0) + + sw $v0, 28($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Main + lw $t0, 108($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_22 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_7 <- internal_20 + lw $t0, 24($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8792197894873 + j endif_8792197894873 + + else_8792197894873: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 12 + sw $t0, 4($v0) + + addi $t0, $zero, 61 + sb $t0, 8($v0) + + addi $t0, $zero, 40 + sb $t0, 9($v0) + + addi $t0, $zero, 10 + sb $t0, 10($v0) + + sb $zero, 11($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 108($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_23] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_26 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_7 <- internal_24 + lw $t0, 8($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8792197894873 + j endif_8792197894873 + + endif_8792197894873: + + lw $v1, 76($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 108 + + jr $ra + + function___init___at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # SET ATTRIBUTE x OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8792197859265 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8792197859265 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8792197859265 + j object_set_attribute_8792197859265 + int_set_attribute_8792197859265: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792197859265 + bool_set_attribute_8792197859265: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792197859265 + object_set_attribute_8792197859265: + sw $t1, 8($t0) + end_set_attribute_8792197859265: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE y OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8792197859289 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8792197859289 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8792197859289 + j object_set_attribute_8792197859289 + int_set_attribute_8792197859289: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8792197859289 + bool_set_attribute_8792197859289: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8792197859289 + object_set_attribute_8792197859289: + sw $t1, 12($t0) + end_set_attribute_8792197859289: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_init_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # GET ATTRIBUTE x OF self + lw $t0, 24($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197859618 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197859618 + j object_get_attribute_8792197859618 + int_get_attribute_8792197859618: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8792197859618 + bool_get_attribute_8792197859618: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8792197859618 + object_get_attribute_8792197859618: + sw $t1, 12($sp) + end_get_attribute_8792197859618: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [a] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE y OF self + lw $t0, 24($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197859660 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197859660 + j object_get_attribute_8792197859660 + int_get_attribute_8792197859660: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 4($sp) + j end_get_attribute_8792197859660 + bool_get_attribute_8792197859660: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 4($sp) + j end_get_attribute_8792197859660 + object_get_attribute_8792197859660: + sw $t1, 4($sp) + end_get_attribute_8792197859660: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 16($sp) + sw $t0, 4($sp) + + # ARGUMENT [b] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_print_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -100 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # GET ATTRIBUTE y OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197859741 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197859741 + j object_get_attribute_8792197859741 + int_get_attribute_8792197859741: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 88($sp) + j end_get_attribute_8792197859741 + bool_get_attribute_8792197859741: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 88($sp) + j end_get_attribute_8792197859741 + object_get_attribute_8792197859741: + sw $t1, 88($sp) + end_get_attribute_8792197859741: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_4 + lw $t0, 80($sp) + sw $t0, 92($sp) + + # IF internal_1 THEN GOTO then_8792197876200 + lw $t0, 92($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8792197876200 + + # JUMP TO else_8792197876200 + j else_8792197876200 + + then_8792197876200: + + # GET ATTRIBUTE x OF self + lw $t0, 100($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197859828 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197859828 + j object_get_attribute_8792197859828 + int_get_attribute_8792197859828: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8792197859828 + bool_get_attribute_8792197859828: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8792197859828 + object_get_attribute_8792197859828: + sw $t1, 76($sp) + end_get_attribute_8792197859828: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # GET METHOD out_int OF Complex + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 68($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 76($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_6 + lw $t0, 72($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8792197876200 + j endif_8792197876200 + + else_8792197876200: + + # GET ATTRIBUTE x OF self + lw $t0, 100($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197860985 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197860985 + j object_get_attribute_8792197860985 + int_get_attribute_8792197860985: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 60($sp) + j end_get_attribute_8792197860985 + bool_get_attribute_8792197860985: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 60($sp) + j end_get_attribute_8792197860985 + object_get_attribute_8792197860985: + sw $t1, 60($sp) + end_get_attribute_8792197860985: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD out_int OF Complex + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 43 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 44($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD out_string OF Complex + lw $t0, 56($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE y OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197861075 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197861075 + j object_get_attribute_8792197861075 + int_get_attribute_8792197861075: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792197861075 + bool_get_attribute_8792197861075: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792197861075 + object_get_attribute_8792197861075: + sw $t1, 28($sp) + end_get_attribute_8792197861075: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_int OF Complex + lw $t0, 40($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_14] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_20 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 73 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Complex + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_24 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_22 + lw $t0, 8($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8792197876200 + j endif_8792197876200 + + endif_8792197876200: + + lw $v1, 96($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 100 + + jr $ra + + function_reflect_0_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -48 + + # GET ATTRIBUTE x OF self + lw $t0, 48($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197861482 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197861482 + j object_get_attribute_8792197861482 + int_get_attribute_8792197861482: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8792197861482 + bool_get_attribute_8792197861482: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8792197861482 + object_get_attribute_8792197861482: + sw $t1, 44($sp) + end_get_attribute_8792197861482: + + # GET ATTRIBUTE x OF self + lw $t0, 48($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197861509 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197861509 + j object_get_attribute_8792197861509 + int_get_attribute_8792197861509: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8792197861509 + bool_get_attribute_8792197861509: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8792197861509 + object_get_attribute_8792197861509: + sw $t1, 40($sp) + end_get_attribute_8792197861509: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE y OF self + lw $t0, 48($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197861608 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197861608 + j object_get_attribute_8792197861608 + int_get_attribute_8792197861608: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8792197861608 + bool_get_attribute_8792197861608: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8792197861608 + object_get_attribute_8792197861608: + sw $t1, 20($sp) + end_get_attribute_8792197861608: + + # GET ATTRIBUTE y OF self + lw $t0, 48($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197861639 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197861639 + j object_get_attribute_8792197861639 + int_get_attribute_8792197861639: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8792197861639 + bool_get_attribute_8792197861639: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8792197861639 + object_get_attribute_8792197861639: + sw $t1, 16($sp) + end_get_attribute_8792197861639: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_7] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 16($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_6] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + lw $v1, 48($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 48 + + jr $ra + + function_reflect_X_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # GET ATTRIBUTE y OF self + lw $t0, 24($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197861756 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197861756 + j object_get_attribute_8792197861756 + int_get_attribute_8792197861756: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8792197861756 + bool_get_attribute_8792197861756: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8792197861756 + object_get_attribute_8792197861756: + sw $t1, 20($sp) + end_get_attribute_8792197861756: + + # GET ATTRIBUTE y OF self + lw $t0, 24($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197861783 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197861783 + j object_get_attribute_8792197861783 + int_get_attribute_8792197861783: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8792197861783 + bool_get_attribute_8792197861783: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8792197861783 + object_get_attribute_8792197861783: + sw $t1, 16($sp) + end_get_attribute_8792197861783: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 16($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_reflect_Y_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # GET ATTRIBUTE x OF self + lw $t0, 24($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197862416 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197862416 + j object_get_attribute_8792197862416 + int_get_attribute_8792197862416: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8792197862416 + bool_get_attribute_8792197862416: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8792197862416 + object_get_attribute_8792197862416: + sw $t1, 20($sp) + end_get_attribute_8792197862416: + + # GET ATTRIBUTE x OF self + lw $t0, 24($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792197862443 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792197862443 + j object_get_attribute_8792197862443 + int_get_attribute_8792197862443: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8792197862443 + bool_get_attribute_8792197862443: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8792197862443 + object_get_attribute_8792197862443: + sw $t1, 16($sp) + end_get_attribute_8792197862443: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 16($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/fib.mips b/tests/codegen/fib.mips new file mode 100644 index 000000000..a50ffb681 --- /dev/null +++ b/tests/codegen/fib.mips @@ -0,0 +1,2054 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Main: .word 48 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_main: .word function_main_at_Main + type_Main_fib: .word function_fib_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Main: + lw $v1, 0($sp) + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -68 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 47 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 47 + sw $t0, 4($v0) + + addi $t0, $zero, 69 + sb $t0, 8($v0) + + addi $t0, $zero, 110 + sb $t0, 9($v0) + + addi $t0, $zero, 116 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 114 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 116 + sb $t0, 16($v0) + + addi $t0, $zero, 111 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 102 + sb $t0, 19($v0) + + addi $t0, $zero, 105 + sb $t0, 20($v0) + + addi $t0, $zero, 110 + sb $t0, 21($v0) + + addi $t0, $zero, 100 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 110 + sb $t0, 24($v0) + + addi $t0, $zero, 116 + sb $t0, 25($v0) + + addi $t0, $zero, 104 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 102 + sb $t0, 28($v0) + + addi $t0, $zero, 105 + sb $t0, 29($v0) + + addi $t0, $zero, 98 + sb $t0, 30($v0) + + addi $t0, $zero, 111 + sb $t0, 31($v0) + + addi $t0, $zero, 110 + sb $t0, 32($v0) + + addi $t0, $zero, 97 + sb $t0, 33($v0) + + addi $t0, $zero, 99 + sb $t0, 34($v0) + + addi $t0, $zero, 99 + sb $t0, 35($v0) + + addi $t0, $zero, 105 + sb $t0, 36($v0) + + addi $t0, $zero, 32 + sb $t0, 37($v0) + + addi $t0, $zero, 110 + sb $t0, 38($v0) + + addi $t0, $zero, 117 + sb $t0, 39($v0) + + addi $t0, $zero, 109 + sb $t0, 40($v0) + + addi $t0, $zero, 98 + sb $t0, 41($v0) + + addi $t0, $zero, 101 + sb $t0, 42($v0) + + addi $t0, $zero, 114 + sb $t0, 43($v0) + + addi $t0, $zero, 33 + sb $t0, 44($v0) + + addi $t0, $zero, 10 + sb $t0, 45($v0) + + sb $zero, 46($v0) + + sw $v0, 64($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # GET METHOD out_string OF Main + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 56($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 64($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET METHOD in_int OF Main + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 44($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 56($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET METHOD fib OF Main + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 32($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_9 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_int OF Main + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 68 + + jr $ra + + function_fib_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -56 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [b] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_6 + sw $zero, 28($sp) + + while_start_8770340693227: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_8] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # IF internal_10 THEN GOTO while_body_8770340693227 + lw $t0, 12($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8770340693227 + + # JUMP TO while_end_8770340693227 + j while_end_8770340693227 + + while_body_8770340693227: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [b] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [b] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [a] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [a] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [c] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8770340693227 + j while_start_8770340693227 + + while_end_8770340693227: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 56 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/graph.mips b/tests/codegen/graph.mips new file mode 100644 index 000000000..cf91c3528 --- /dev/null +++ b/tests/codegen/graph.mips @@ -0,0 +1,10068 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Graph: .word 44 + type_Graph_inherits_from: .word type_Object + type_Graph_name_address: .word type_Graph_name_size + type_Graph___init__: .word function___init___at_Graph + type_Graph_abort: .word function_abort_at_Object + type_Graph_type_name: .word function_type_name_at_Object + type_Graph_copy: .word function_copy_at_Object + type_Graph_add_vertice: .word function_add_vertice_at_Graph + type_Graph_print_E: .word function_print_E_at_Graph + type_Graph_print_V: .word function_print_V_at_Graph + + type_Vertice: .word 68 + type_Vertice_inherits_from: .word type_IO + type_Vertice_name_address: .word type_Vertice_name_size + type_Vertice___init__: .word function___init___at_Vertice + type_Vertice_abort: .word function_abort_at_Object + type_Vertice_type_name: .word function_type_name_at_Object + type_Vertice_copy: .word function_copy_at_Object + type_Vertice_out_string: .word function_out_string_at_IO + type_Vertice_out_int: .word function_out_int_at_IO + type_Vertice_in_string: .word function_in_string_at_IO + type_Vertice_in_int: .word function_in_int_at_IO + type_Vertice_outgoing: .word function_outgoing_at_Vertice + type_Vertice_number: .word function_number_at_Vertice + type_Vertice_init: .word function_init_at_Vertice + type_Vertice_add_out: .word function_add_out_at_Vertice + type_Vertice_print: .word function_print_at_Vertice + + type_Edge: .word 60 + type_Edge_inherits_from: .word type_IO + type_Edge_name_address: .word type_Edge_name_size + type_Edge___init__: .word function___init___at_Edge + type_Edge_abort: .word function_abort_at_Object + type_Edge_type_name: .word function_type_name_at_Object + type_Edge_copy: .word function_copy_at_Object + type_Edge_out_string: .word function_out_string_at_IO + type_Edge_out_int: .word function_out_int_at_IO + type_Edge_in_string: .word function_in_string_at_IO + type_Edge_in_int: .word function_in_int_at_IO + type_Edge_init: .word function_init_at_Edge + type_Edge_print: .word function_print_at_Edge + + type_EList: .word 68 + type_EList_inherits_from: .word type_IO + type_EList_name_address: .word type_EList_name_size + type_EList___init__: .word function___init___at_EList + type_EList_abort: .word function_abort_at_Object + type_EList_type_name: .word function_type_name_at_Object + type_EList_copy: .word function_copy_at_Object + type_EList_out_string: .word function_out_string_at_IO + type_EList_out_int: .word function_out_int_at_IO + type_EList_in_string: .word function_in_string_at_IO + type_EList_in_int: .word function_in_int_at_IO + type_EList_isNil: .word function_isNil_at_EList + type_EList_head: .word function_head_at_EList + type_EList_tail: .word function_tail_at_EList + type_EList_cons: .word function_cons_at_EList + type_EList_append: .word function_append_at_EList + type_EList_print: .word function_print_at_EList + + type_ECons: .word 76 + type_ECons_inherits_from: .word type_EList + type_ECons_name_address: .word type_ECons_name_size + type_ECons___init__: .word function___init___at_ECons + type_ECons_abort: .word function_abort_at_Object + type_ECons_type_name: .word function_type_name_at_Object + type_ECons_copy: .word function_copy_at_Object + type_ECons_out_string: .word function_out_string_at_IO + type_ECons_out_int: .word function_out_int_at_IO + type_ECons_in_string: .word function_in_string_at_IO + type_ECons_in_int: .word function_in_int_at_IO + type_ECons_isNil: .word function_isNil_at_ECons + type_ECons_head: .word function_head_at_ECons + type_ECons_tail: .word function_tail_at_ECons + type_ECons_cons: .word function_cons_at_EList + type_ECons_append: .word function_append_at_EList + type_ECons_print: .word function_print_at_ECons + type_ECons_init: .word function_init_at_ECons + + type_VList: .word 64 + type_VList_inherits_from: .word type_IO + type_VList_name_address: .word type_VList_name_size + type_VList___init__: .word function___init___at_VList + type_VList_abort: .word function_abort_at_Object + type_VList_type_name: .word function_type_name_at_Object + type_VList_copy: .word function_copy_at_Object + type_VList_out_string: .word function_out_string_at_IO + type_VList_out_int: .word function_out_int_at_IO + type_VList_in_string: .word function_in_string_at_IO + type_VList_in_int: .word function_in_int_at_IO + type_VList_isNil: .word function_isNil_at_VList + type_VList_head: .word function_head_at_VList + type_VList_tail: .word function_tail_at_VList + type_VList_cons: .word function_cons_at_VList + type_VList_print: .word function_print_at_VList + + type_VCons: .word 72 + type_VCons_inherits_from: .word type_VList + type_VCons_name_address: .word type_VCons_name_size + type_VCons___init__: .word function___init___at_VCons + type_VCons_abort: .word function_abort_at_Object + type_VCons_type_name: .word function_type_name_at_Object + type_VCons_copy: .word function_copy_at_Object + type_VCons_out_string: .word function_out_string_at_IO + type_VCons_out_int: .word function_out_int_at_IO + type_VCons_in_string: .word function_in_string_at_IO + type_VCons_in_int: .word function_in_int_at_IO + type_VCons_isNil: .word function_isNil_at_VCons + type_VCons_head: .word function_head_at_VCons + type_VCons_tail: .word function_tail_at_VCons + type_VCons_cons: .word function_cons_at_VList + type_VCons_print: .word function_print_at_VCons + type_VCons_init: .word function_init_at_VCons + + type_Parse: .word 68 + type_Parse_inherits_from: .word type_IO + type_Parse_name_address: .word type_Parse_name_size + type_Parse___init__: .word function___init___at_Parse + type_Parse_abort: .word function_abort_at_Object + type_Parse_type_name: .word function_type_name_at_Object + type_Parse_copy: .word function_copy_at_Object + type_Parse_out_string: .word function_out_string_at_IO + type_Parse_out_int: .word function_out_int_at_IO + type_Parse_in_string: .word function_in_string_at_IO + type_Parse_in_int: .word function_in_int_at_IO + type_Parse_read_input: .word function_read_input_at_Parse + type_Parse_parse_line: .word function_parse_line_at_Parse + type_Parse_c2i: .word function_c2i_at_Parse + type_Parse_a2i: .word function_a2i_at_Parse + type_Parse_a2i_aux: .word function_a2i_aux_at_Parse + + type_Main: .word 76 + type_Main_inherits_from: .word type_Parse + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_read_input: .word function_read_input_at_Parse + type_Main_parse_line: .word function_parse_line_at_Parse + type_Main_c2i: .word function_c2i_at_Parse + type_Main_a2i: .word function_a2i_at_Parse + type_Main_a2i_aux: .word function_a2i_aux_at_Parse + type_Main_main: .word function_main_at_Main + + type_BoolOp: .word 32 + type_BoolOp_inherits_from: .word type_Object + type_BoolOp_name_address: .word type_BoolOp_name_size + type_BoolOp___init__: .word function___init___at_BoolOp + type_BoolOp_abort: .word function_abort_at_Object + type_BoolOp_type_name: .word function_type_name_at_Object + type_BoolOp_copy: .word function_copy_at_Object + type_BoolOp_and: .word function_and_at_BoolOp + type_BoolOp_or: .word function_or_at_BoolOp + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Graph_name_size: .word 5 + type_Graph_name: .asciiz "Graph" + + type_Vertice_name_size: .word 7 + type_Vertice_name: .asciiz "Vertice" + + type_Edge_name_size: .word 4 + type_Edge_name: .asciiz "Edge" + + type_EList_name_size: .word 5 + type_EList_name: .asciiz "EList" + + type_ECons_name_size: .word 5 + type_ECons_name: .asciiz "ECons" + + type_VList_name_size: .word 5 + type_VList_name: .asciiz "VList" + + type_VCons_name_size: .word 5 + type_VCons_name: .asciiz "VCons" + + type_Parse_name_size: .word 5 + type_Parse_name: .asciiz "Parse" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + type_BoolOp_name_size: .word 6 + type_BoolOp_name: .asciiz "BoolOp" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Graph: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING -> VList + li $v0, 9 + lw $a0, type_VList + syscall + la $t0, type_VList + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_VList + jal function___init___at_VList + lw $ra, 4($sp) + sw $v1, 12($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE vertices OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066320222 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066320222 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066320222 + j object_set_attribute_8776066320222 + int_set_attribute_8776066320222: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066320222 + bool_set_attribute_8776066320222: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066320222 + object_set_attribute_8776066320222: + sw $t1, 8($t0) + end_set_attribute_8776066320222: + + # ALLOCATING -> EList + li $v0, 9 + lw $a0, type_EList + syscall + la $t0, type_EList + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 8($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_EList + jal function___init___at_EList + lw $ra, 4($sp) + sw $v1, 8($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE edges OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066320273 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066320273 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066320273 + j object_set_attribute_8776066320273 + int_set_attribute_8776066320273: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066320273 + bool_set_attribute_8776066320273: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066320273 + object_set_attribute_8776066320273: + sw $t1, 12($t0) + end_set_attribute_8776066320273: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_add_vertice_at_Graph: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -44 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD outgoing OF Vertice + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [v] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 48($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE edges OF self + lw $t0, 48($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066319770 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066319770 + j object_get_attribute_8776066319770 + int_get_attribute_8776066319770: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066319770 + bool_get_attribute_8776066319770: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066319770 + object_get_attribute_8776066319770: + sw $t1, 28($sp) + end_get_attribute_8776066319770: + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD append OF EList + lw $t0, 40($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE edges OF self + lw $t0, 48($sp) + lw $t1, 24($sp) + beq $t1, $zero, object_set_attribute_8776066320147 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066320147 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066320147 + j object_set_attribute_8776066320147 + int_set_attribute_8776066320147: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066320147 + bool_set_attribute_8776066320147: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066320147 + object_set_attribute_8776066320147: + sw $t1, 12($t0) + end_set_attribute_8776066320147: + + # GET ATTRIBUTE vertices OF self + lw $t0, 48($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066319674 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066319674 + j object_get_attribute_8776066319674 + int_get_attribute_8776066319674: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066319674 + bool_get_attribute_8776066319674: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066319674 + object_get_attribute_8776066319674: + sw $t1, 12($sp) + end_get_attribute_8776066319674: + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cons OF VList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_7] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [v] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE vertices OF self + lw $t0, 48($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8776066319731 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066319731 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066319731 + j object_set_attribute_8776066319731 + int_set_attribute_8776066319731: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066319731 + bool_set_attribute_8776066319731: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066319731 + object_set_attribute_8776066319731: + sw $t1, 8($t0) + end_set_attribute_8776066319731: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 44 + + jr $ra + + function_print_E_at_Graph: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # GET ATTRIBUTE edges OF self + lw $t0, 16($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066319351 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066319351 + j object_get_attribute_8776066319351 + int_get_attribute_8776066319351: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066319351 + bool_get_attribute_8776066319351: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066319351 + object_get_attribute_8776066319351: + sw $t1, 12($sp) + end_get_attribute_8776066319351: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print OF EList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_print_V_at_Graph: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # GET ATTRIBUTE vertices OF self + lw $t0, 16($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066319225 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066319225 + j object_get_attribute_8776066319225 + int_get_attribute_8776066319225: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066319225 + bool_get_attribute_8776066319225: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066319225 + object_get_attribute_8776066319225: + sw $t1, 12($sp) + end_get_attribute_8776066319225: + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print OF VList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function___init___at_Vertice: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # SET ATTRIBUTE num OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066318499 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066318499 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066318499 + j object_set_attribute_8776066318499 + int_set_attribute_8776066318499: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066318499 + bool_set_attribute_8776066318499: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066318499 + object_set_attribute_8776066318499: + sw $t1, 8($t0) + end_set_attribute_8776066318499: + + # ALLOCATING -> EList + li $v0, 9 + lw $a0, type_EList + syscall + la $t0, type_EList + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 8($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_EList + jal function___init___at_EList + lw $ra, 4($sp) + sw $v1, 8($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE out OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066318457 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066318457 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066318457 + j object_set_attribute_8776066318457 + int_set_attribute_8776066318457: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066318457 + bool_set_attribute_8776066318457: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066318457 + object_set_attribute_8776066318457: + sw $t1, 12($t0) + end_set_attribute_8776066318457: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_outgoing_at_Vertice: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE out OF self + lw $t0, 4($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066318517 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066318517 + j object_get_attribute_8776066318517 + int_get_attribute_8776066318517: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066318517 + bool_get_attribute_8776066318517: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066318517 + object_get_attribute_8776066318517: + sw $t1, 0($sp) + end_get_attribute_8776066318517: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_number_at_Vertice: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE num OF self + lw $t0, 4($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066318406 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066318406 + j object_get_attribute_8776066318406 + int_get_attribute_8776066318406: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066318406 + bool_get_attribute_8776066318406: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066318406 + object_get_attribute_8776066318406: + sw $t1, 0($sp) + end_get_attribute_8776066318406: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_init_at_Vertice: + # SET ATTRIBUTE num OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066318355 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066318355 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066318355 + j object_set_attribute_8776066318355 + int_set_attribute_8776066318355: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066318355 + bool_set_attribute_8776066318355: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066318355 + object_set_attribute_8776066318355: + sw $t1, 8($t0) + end_set_attribute_8776066318355: + + lw $v1, 4($sp) + + jr $ra + + function_add_out_at_Vertice: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # GET ATTRIBUTE out OF self + lw $t0, 20($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066322420 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066322420 + j object_get_attribute_8776066322420 + int_get_attribute_8776066322420: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066322420 + bool_get_attribute_8776066322420: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066322420 + object_get_attribute_8776066322420: + sw $t1, 12($sp) + end_get_attribute_8776066322420: + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cons OF EList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [s] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE out OF self + lw $t0, 20($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8776066322276 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066322276 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066322276 + j object_set_attribute_8776066322276 + int_set_attribute_8776066322276: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066322276 + bool_set_attribute_8776066322276: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066322276 + object_set_attribute_8776066322276: + sw $t1, 12($t0) + end_set_attribute_8776066322276: + + lw $v1, 20($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_print_at_Vertice: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -32 + + # GET ATTRIBUTE num OF self + lw $t0, 32($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066322255 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066322255 + j object_get_attribute_8776066322255 + int_get_attribute_8776066322255: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066322255 + bool_get_attribute_8776066322255: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066322255 + object_get_attribute_8776066322255: + sw $t1, 28($sp) + end_get_attribute_8776066322255: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_int OF Vertice + lw $t0, 32($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE out OF self + lw $t0, 32($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066323938 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066323938 + j object_get_attribute_8776066323938 + int_get_attribute_8776066323938: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066323938 + bool_get_attribute_8776066323938: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066323938 + object_get_attribute_8776066323938: + sw $t1, 12($sp) + end_get_attribute_8776066323938: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print OF EList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 32 + + jr $ra + + function___init___at_Edge: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # SET ATTRIBUTE from OF self + lw $t0, 12($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8776066323776 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066323776 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066323776 + j object_set_attribute_8776066323776 + int_set_attribute_8776066323776: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066323776 + bool_set_attribute_8776066323776: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066323776 + object_set_attribute_8776066323776: + sw $t1, 8($t0) + end_set_attribute_8776066323776: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # SET ATTRIBUTE to OF self + lw $t0, 12($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066323803 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066323803 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066323803 + j object_set_attribute_8776066323803 + int_set_attribute_8776066323803: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066323803 + bool_set_attribute_8776066323803: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066323803 + object_set_attribute_8776066323803: + sw $t1, 12($t0) + end_set_attribute_8776066323803: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE weight OF self + lw $t0, 12($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066323842 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066323842 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066323842 + j object_set_attribute_8776066323842 + int_set_attribute_8776066323842: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8776066323842 + bool_set_attribute_8776066323842: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8776066323842 + object_set_attribute_8776066323842: + sw $t1, 16($t0) + end_set_attribute_8776066323842: + + lw $v1, 12($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_init_at_Edge: + # SET ATTRIBUTE from OF self + lw $t0, 12($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8776066318885 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066318885 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066318885 + j object_set_attribute_8776066318885 + int_set_attribute_8776066318885: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066318885 + bool_set_attribute_8776066318885: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066318885 + object_set_attribute_8776066318885: + sw $t1, 8($t0) + end_set_attribute_8776066318885: + + # SET ATTRIBUTE to OF self + lw $t0, 12($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066318852 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066318852 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066318852 + j object_set_attribute_8776066318852 + int_set_attribute_8776066318852: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066318852 + bool_set_attribute_8776066318852: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066318852 + object_set_attribute_8776066318852: + sw $t1, 12($t0) + end_set_attribute_8776066318852: + + # SET ATTRIBUTE weight OF self + lw $t0, 12($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066318909 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066318909 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066318909 + j object_set_attribute_8776066318909 + int_set_attribute_8776066318909: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8776066318909 + bool_set_attribute_8776066318909: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8776066318909 + object_set_attribute_8776066318909: + sw $t1, 16($t0) + end_set_attribute_8776066318909: + + lw $v1, 12($sp) + + jr $ra + + function_print_at_Edge: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -96 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 11 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 11 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 40 + sb $t0, 9($v0) + + sb $zero, 10($v0) + + sw $v0, 92($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD out_string OF Edge + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 92($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE from OF self + lw $t0, 96($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066315719 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066315719 + j object_get_attribute_8776066315719 + int_get_attribute_8776066315719: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8776066315719 + bool_get_attribute_8776066315719: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8776066315719 + object_get_attribute_8776066315719: + sw $t1, 76($sp) + end_get_attribute_8776066315719: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # GET METHOD out_int OF Edge + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 68($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 76($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 44 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 60($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD out_string OF Edge + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE to OF self + lw $t0, 96($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066315638 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066315638 + j object_get_attribute_8776066315638 + int_get_attribute_8776066315638: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8776066315638 + bool_get_attribute_8776066315638: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8776066315638 + object_get_attribute_8776066315638: + sw $t1, 44($sp) + end_get_attribute_8776066315638: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD out_int OF Edge + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 41 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 28($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Edge + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE weight OF self + lw $t0, 96($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066314132 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066314132 + j object_get_attribute_8776066314132 + int_get_attribute_8776066314132: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066314132 + bool_get_attribute_8776066314132: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066314132 + object_get_attribute_8776066314132: + sw $t1, 12($sp) + end_get_attribute_8776066314132: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_int OF Edge + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 96 + + jr $ra + + function___init___at_EList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 0($sp) + + # SET ATTRIBUTE car OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066314060 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066314060 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066314060 + j object_set_attribute_8776066314060 + int_set_attribute_8776066314060: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066314060 + bool_set_attribute_8776066314060: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066314060 + object_set_attribute_8776066314060: + sw $t1, 8($t0) + end_set_attribute_8776066314060: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_isNil_at_EList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_head_at_EList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF EList + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE car OF self + lw $t0, 16($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066313322 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066313322 + j object_get_attribute_8776066313322 + int_get_attribute_8776066313322: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066313322 + bool_get_attribute_8776066313322: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066313322 + object_get_attribute_8776066313322: + sw $t1, 0($sp) + end_get_attribute_8776066313322: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_tail_at_EList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD abort OF EList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 12($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_cons_at_EList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> ECons + li $v0, 9 + lw $a0, type_ECons + syscall + la $t0, type_ECons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_ECons + jal function___init___at_ECons + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD init OF ECons + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_0] + lw $t0, 28($sp) + sw $t0, 8($sp) + + # ARGUMENT [e] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_append_at_EList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -68 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD isNil OF EList + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 56($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 64($sp) + addi $sp, $sp, 8 + + # internal_1 <- internal_2 + lw $t0, 56($sp) + sw $t0, 60($sp) + + # IF internal_1 THEN GOTO then_8776066348605 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066348605 + + # JUMP TO else_8776066348605 + j else_8776066348605 + + then_8776066348605: + + # internal_0 <- l + lw $t0, 68($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8776066348605 + j endif_8776066348605 + + else_8776066348605: + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD tail OF EList + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 52($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD append OF EList + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_5] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [l] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_10 + lw $t0, 36($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD head OF EList + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_13 + lw $t0, 20($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 28($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cons OF EList + lw $t0, 32($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_8] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_14 + lw $t0, 8($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8776066348605 + j endif_8776066348605 + + endif_8776066348605: + + lw $v1, 64($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 68 + + jr $ra + + function_print_at_EList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF EList + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function___init___at_ECons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 4($sp) + + # SET ATTRIBUTE car OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066316614 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066316614 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066316614 + j object_set_attribute_8776066316614 + int_set_attribute_8776066316614: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066316614 + bool_set_attribute_8776066316614: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066316614 + object_set_attribute_8776066316614: + sw $t1, 8($t0) + end_set_attribute_8776066316614: + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 0($sp) + + # SET ATTRIBUTE cdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066316560 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066316560 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066316560 + j object_set_attribute_8776066316560 + int_set_attribute_8776066316560: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066316560 + bool_set_attribute_8776066316560: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066316560 + object_set_attribute_8776066316560: + sw $t1, 12($t0) + end_set_attribute_8776066316560: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_isNil_at_ECons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_head_at_ECons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE car OF self + lw $t0, 4($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066316737 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066316737 + j object_get_attribute_8776066316737 + int_get_attribute_8776066316737: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066316737 + bool_get_attribute_8776066316737: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066316737 + object_get_attribute_8776066316737: + sw $t1, 0($sp) + end_get_attribute_8776066316737: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_tail_at_ECons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE cdr OF self + lw $t0, 4($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066316623 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066316623 + j object_get_attribute_8776066316623 + int_get_attribute_8776066316623: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066316623 + bool_get_attribute_8776066316623: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066316623 + object_get_attribute_8776066316623: + sw $t1, 0($sp) + end_get_attribute_8776066316623: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_init_at_ECons: + # SET ATTRIBUTE car OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066318002 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066318002 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066318002 + j object_set_attribute_8776066318002 + int_set_attribute_8776066318002: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066318002 + bool_set_attribute_8776066318002: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066318002 + object_set_attribute_8776066318002: + sw $t1, 8($t0) + end_set_attribute_8776066318002: + + # SET ATTRIBUTE cdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066317990 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066317990 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066317990 + j object_set_attribute_8776066317990 + int_set_attribute_8776066317990: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066317990 + bool_set_attribute_8776066317990: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066317990 + object_set_attribute_8776066317990: + sw $t1, 12($t0) + end_set_attribute_8776066317990: + + lw $v1, 8($sp) + + jr $ra + + function_print_at_ECons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -32 + + # GET ATTRIBUTE car OF self + lw $t0, 32($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066317855 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066317855 + j object_get_attribute_8776066317855 + int_get_attribute_8776066317855: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066317855 + bool_get_attribute_8776066317855: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066317855 + object_get_attribute_8776066317855: + sw $t1, 28($sp) + end_get_attribute_8776066317855: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD print OF Edge + lw $t0, 28($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 32($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE cdr OF self + lw $t0, 32($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066309030 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066309030 + j object_get_attribute_8776066309030 + int_get_attribute_8776066309030: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066309030 + bool_get_attribute_8776066309030: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066309030 + object_get_attribute_8776066309030: + sw $t1, 12($sp) + end_get_attribute_8776066309030: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print OF EList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 32 + + jr $ra + + function___init___at_VList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 0($sp) + + # SET ATTRIBUTE car OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066308880 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066308880 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066308880 + j object_set_attribute_8776066308880 + int_set_attribute_8776066308880: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066308880 + bool_set_attribute_8776066308880: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066308880 + object_set_attribute_8776066308880: + sw $t1, 8($t0) + end_set_attribute_8776066308880: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_isNil_at_VList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_head_at_VList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF VList + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE car OF self + lw $t0, 16($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066337732 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066337732 + j object_get_attribute_8776066337732 + int_get_attribute_8776066337732: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066337732 + bool_get_attribute_8776066337732: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066337732 + object_get_attribute_8776066337732: + sw $t1, 0($sp) + end_get_attribute_8776066337732: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_tail_at_VList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD abort OF VList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 12($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_cons_at_VList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> VCons + li $v0, 9 + lw $a0, type_VCons + syscall + la $t0, type_VCons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_VCons + jal function___init___at_VCons + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD init OF VCons + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_0] + lw $t0, 28($sp) + sw $t0, 8($sp) + + # ARGUMENT [v] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_print_at_VList: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF VList + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function___init___at_VCons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 4($sp) + + # SET ATTRIBUTE car OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066332844 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066332844 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066332844 + j object_set_attribute_8776066332844 + int_set_attribute_8776066332844: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066332844 + bool_set_attribute_8776066332844: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066332844 + object_set_attribute_8776066332844: + sw $t1, 8($t0) + end_set_attribute_8776066332844: + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 0($sp) + + # SET ATTRIBUTE cdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066332676 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066332676 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066332676 + j object_set_attribute_8776066332676 + int_set_attribute_8776066332676: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066332676 + bool_set_attribute_8776066332676: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066332676 + object_set_attribute_8776066332676: + sw $t1, 12($t0) + end_set_attribute_8776066332676: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_isNil_at_VCons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_head_at_VCons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE car OF self + lw $t0, 4($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066332630 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066332630 + j object_get_attribute_8776066332630 + int_get_attribute_8776066332630: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066332630 + bool_get_attribute_8776066332630: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066332630 + object_get_attribute_8776066332630: + sw $t1, 0($sp) + end_get_attribute_8776066332630: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_tail_at_VCons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE cdr OF self + lw $t0, 4($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066332660 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066332660 + j object_get_attribute_8776066332660 + int_get_attribute_8776066332660: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066332660 + bool_get_attribute_8776066332660: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8776066332660 + object_get_attribute_8776066332660: + sw $t1, 0($sp) + end_get_attribute_8776066332660: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_init_at_VCons: + # SET ATTRIBUTE car OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066332549 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066332549 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066332549 + j object_set_attribute_8776066332549 + int_set_attribute_8776066332549: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066332549 + bool_set_attribute_8776066332549: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066332549 + object_set_attribute_8776066332549: + sw $t1, 8($t0) + end_set_attribute_8776066332549: + + # SET ATTRIBUTE cdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066332450 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066332450 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066332450 + j object_set_attribute_8776066332450 + int_set_attribute_8776066332450: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066332450 + bool_set_attribute_8776066332450: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066332450 + object_set_attribute_8776066332450: + sw $t1, 12($t0) + end_set_attribute_8776066332450: + + lw $v1, 8($sp) + + jr $ra + + function_print_at_VCons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -32 + + # GET ATTRIBUTE car OF self + lw $t0, 32($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066329676 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066329676 + j object_get_attribute_8776066329676 + int_get_attribute_8776066329676: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066329676 + bool_get_attribute_8776066329676: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066329676 + object_get_attribute_8776066329676: + sw $t1, 28($sp) + end_get_attribute_8776066329676: + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD print OF Vertice + lw $t0, 28($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 32($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE cdr OF self + lw $t0, 32($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066329664 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066329664 + j object_get_attribute_8776066329664 + int_get_attribute_8776066329664: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066329664 + bool_get_attribute_8776066329664: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066329664 + object_get_attribute_8776066329664: + sw $t1, 12($sp) + end_get_attribute_8776066329664: + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print OF VList + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 32 + + jr $ra + + function___init___at_Parse: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING -> BoolOp + li $v0, 9 + lw $a0, type_BoolOp + syscall + la $t0, type_BoolOp + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_BoolOp + jal function___init___at_BoolOp + lw $ra, 4($sp) + sw $v1, 12($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE boolop OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066329661 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066329661 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066329661 + j object_set_attribute_8776066329661 + int_set_attribute_8776066329661: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066329661 + bool_set_attribute_8776066329661: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066329661 + object_set_attribute_8776066329661: + sw $t1, 8($t0) + end_set_attribute_8776066329661: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 0($sp) + + # SET ATTRIBUTE rest OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8776066330929 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066330929 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066330929 + j object_set_attribute_8776066330929 + int_set_attribute_8776066330929: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066330929 + bool_set_attribute_8776066330929: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066330929 + object_set_attribute_8776066330929: + sw $t1, 12($t0) + end_set_attribute_8776066330929: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_read_input_at_Parse: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -112 + + # ALLOCATING -> Graph + li $v0, 9 + lw $a0, type_Graph + syscall + la $t0, type_Graph + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 104($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Graph + jal function___init___at_Graph + lw $ra, 4($sp) + sw $v1, 112($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [g] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 120($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # GET METHOD in_string OF Parse + lw $t0, 112($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 92($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 88($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 120($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 96($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 104($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [line] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_6 + sw $zero, 84($sp) + + while_start_8776066350324: + + # GET ATTRIBUTE boolop OF self + lw $t0, 112($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066330685 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066330685 + j object_get_attribute_8776066330685 + int_get_attribute_8776066330685: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 80($sp) + j end_get_attribute_8776066330685 + bool_get_attribute_8776066330685: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 80($sp) + j end_get_attribute_8776066330685 + object_get_attribute_8776066330685: + sw $t1, 80($sp) + end_get_attribute_8776066330685: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [line] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_9] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [line] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_13] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD and OF BoolOp + lw $t0, 80($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_7] + lw $t0, 96($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_11] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_18 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 60($sp) + addi $sp, $sp, 16 + + # IF internal_16 THEN GOTO while_body_8776066350324 + lw $t0, 44($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8776066350324 + + # JUMP TO while_end_8776066350324 + j while_end_8776066350324 + + while_body_8776066350324: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD parse_line OF Parse + lw $t0, 112($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 124($sp) + sw $t0, 4($sp) + + # ARGUMENT [line] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_21 + lw $t0, 36($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD add_vertice OF Graph + lw $t0, 108($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [g] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_24 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD in_string OF Parse + lw $t0, 112($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 120($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_27 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [line] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_25] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8776066350324 + j while_start_8776066350324 + + while_end_8776066350324: + + lw $v1, 108($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 112 + + jr $ra + + function_parse_line_at_Parse: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -148 + + # ALLOCATING -> Vertice + li $v0, 9 + lw $a0, type_Vertice + syscall + la $t0, type_Vertice + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Vertice + jal function___init___at_Vertice + lw $ra, 4($sp) + sw $v1, 148($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # GET METHOD a2i OF Parse + lw $t0, 152($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 132($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 128($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 164($sp) + sw $t0, 4($sp) + + # ARGUMENT [s] + lw $t0, 160($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 140($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 148($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # GET METHOD init OF Vertice + lw $t0, 140($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 120($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 116($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 152($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 128($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 136($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [v] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 136($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 156($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_8 + sw $zero, 112($sp) + + while_start_8776066350617: + + # GET ATTRIBUTE rest OF self + lw $t0, 152($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066286764 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066286764 + j object_get_attribute_8776066286764 + int_get_attribute_8776066286764: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 108($sp) + j end_get_attribute_8776066286764 + bool_get_attribute_8776066286764: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 108($sp) + j end_get_attribute_8776066286764 + object_get_attribute_8776066286764: + sw $t1, 108($sp) + end_get_attribute_8776066286764: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # GET METHOD length OF String + lw $t0, 108($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 100($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 96($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 104($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 112($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_14] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # IF internal_16 THEN GOTO while_body_8776066350617 + lw $t0, 80($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8776066350617 + + # JUMP TO while_end_8776066350617 + j while_end_8776066350617 + + while_body_8776066350617: + + # GET ATTRIBUTE rest OF self + lw $t0, 152($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066286957 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066286957 + j object_get_attribute_8776066286957 + int_get_attribute_8776066286957: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8776066286957 + bool_get_attribute_8776066286957: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8776066286957 + object_get_attribute_8776066286957: + sw $t1, 72($sp) + end_get_attribute_8776066286957: + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD a2i OF Parse + lw $t0, 152($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 164($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_21 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [succ] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE rest OF self + lw $t0, 152($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066287068 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066287068 + j object_get_attribute_8776066287068 + int_get_attribute_8776066287068: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 52($sp) + j end_get_attribute_8776066287068 + bool_get_attribute_8776066287068: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 52($sp) + j end_get_attribute_8776066287068 + object_get_attribute_8776066287068: + sw $t1, 52($sp) + end_get_attribute_8776066287068: + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET METHOD a2i OF Parse + lw $t0, 152($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 44($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 164($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_23] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_26 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [weight] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_24] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Edge + li $v0, 9 + lw $a0, type_Edge + syscall + la $t0, type_Edge + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_27] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Edge + jal function___init___at_Edge + lw $ra, 4($sp) + sw $v1, 44($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD number OF Vertice + lw $t0, 144($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [v] + lw $t0, 152($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_30 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 40($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD init OF Edge + lw $t0, 36($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -20 + sw $ra, 16($sp) + + # ARGUMENT [internal_27] + lw $t0, 56($sp) + sw $t0, 12($sp) + + # ARGUMENT [internal_28] + lw $t0, 52($sp) + sw $t0, 8($sp) + + # ARGUMENT [succ] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [weight] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_33 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 16($sp) + sw $v1, 40($sp) + addi $sp, $sp, 20 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD add_out OF Vertice + lw $t0, 144($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [v] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_31] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_36 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8776066350617 + j while_start_8776066350617 + + while_end_8776066350617: + + lw $v1, 144($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 148 + + jr $ra + + function_c2i_at_Parse: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -216 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 48 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 216($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 212($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 200($sp) + sw $t0, 208($sp) + + # IF internal_1 THEN GOTO then_8776066350791 + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066350791 + + # JUMP TO else_8776066350791 + j else_8776066350791 + + then_8776066350791: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 196($sp) + + # internal_0 <- internal_4 + lw $t0, 196($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8776066350791 + j endif_8776066350791 + + else_8776066350791: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 188($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 49 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 184($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # internal_6 <- internal_8 + lw $t0, 180($sp) + sw $t0, 188($sp) + + # IF internal_6 THEN GOTO then_8776066351888 + lw $t0, 188($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066351888 + + # JUMP TO else_8776066351888 + j else_8776066351888 + + then_8776066351888: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # internal_5 <- internal_9 + lw $t0, 176($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8776066351888 + j endif_8776066351888 + + else_8776066351888: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 50 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 176($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # internal_11 <- internal_13 + lw $t0, 160($sp) + sw $t0, 168($sp) + + # IF internal_11 THEN GOTO then_8776066351951 + lw $t0, 168($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066351951 + + # JUMP TO else_8776066351951 + j else_8776066351951 + + then_8776066351951: + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 156($sp) + + # internal_10 <- internal_14 + lw $t0, 156($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8776066351951 + j endif_8776066351951 + + else_8776066351951: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 51 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 144($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 156($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 152($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_18 + lw $t0, 140($sp) + sw $t0, 148($sp) + + # IF internal_16 THEN GOTO then_8776066352005 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352005 + + # JUMP TO else_8776066352005 + j else_8776066352005 + + then_8776066352005: + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # internal_15 <- internal_19 + lw $t0, 136($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8776066352005 + j endif_8776066352005 + + else_8776066352005: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 52 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 136($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_21 <- internal_23 + lw $t0, 120($sp) + sw $t0, 128($sp) + + # IF internal_21 THEN GOTO then_8776066352059 + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352059 + + # JUMP TO else_8776066352059 + j else_8776066352059 + + then_8776066352059: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # internal_20 <- internal_24 + lw $t0, 116($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8776066352059 + j endif_8776066352059 + + else_8776066352059: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 53 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 104($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_27] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # internal_26 <- internal_28 + lw $t0, 100($sp) + sw $t0, 108($sp) + + # IF internal_26 THEN GOTO then_8776066352113 + lw $t0, 108($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352113 + + # JUMP TO else_8776066352113 + j else_8776066352113 + + then_8776066352113: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # internal_25 <- internal_29 + lw $t0, 96($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8776066352113 + j endif_8776066352113 + + else_8776066352113: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 54 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_31 <- internal_33 + lw $t0, 80($sp) + sw $t0, 88($sp) + + # IF internal_31 THEN GOTO then_8776066352427 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352427 + + # JUMP TO else_8776066352427 + j else_8776066352427 + + then_8776066352427: + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # internal_30 <- internal_34 + lw $t0, 76($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8776066352427 + j endif_8776066352427 + + else_8776066352427: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 55 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_37] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_36 <- internal_38 + lw $t0, 60($sp) + sw $t0, 68($sp) + + # IF internal_36 THEN GOTO then_8776066352481 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352481 + + # JUMP TO else_8776066352481 + j else_8776066352481 + + then_8776066352481: + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # internal_35 <- internal_39 + lw $t0, 56($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8776066352481 + j endif_8776066352481 + + else_8776066352481: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 56 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_42] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_41 <- internal_43 + lw $t0, 40($sp) + sw $t0, 48($sp) + + # IF internal_41 THEN GOTO then_8776066352535 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352535 + + # JUMP TO else_8776066352535 + j else_8776066352535 + + then_8776066352535: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # internal_40 <- internal_44 + lw $t0, 36($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8776066352535 + j endif_8776066352535 + + else_8776066352535: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 57 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [char] + lw $t0, 228($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # internal_46 <- internal_48 + lw $t0, 20($sp) + sw $t0, 28($sp) + + # IF internal_46 THEN GOTO then_8776066352589 + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352589 + + # JUMP TO else_8776066352589 + j else_8776066352589 + + then_8776066352589: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # internal_45 <- internal_49 + lw $t0, 16($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8776066352589 + j endif_8776066352589 + + else_8776066352589: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF Parse + lw $t0, 220($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_52 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_45 <- internal_53 + lw $t0, 0($sp) + sw $t0, 32($sp) + + # JUMP TO endif_8776066352589 + j endif_8776066352589 + + endif_8776066352589: + + # internal_40 <- internal_45 + lw $t0, 32($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8776066352535 + j endif_8776066352535 + + endif_8776066352535: + + # internal_35 <- internal_40 + lw $t0, 52($sp) + sw $t0, 72($sp) + + # JUMP TO endif_8776066352481 + j endif_8776066352481 + + endif_8776066352481: + + # internal_30 <- internal_35 + lw $t0, 72($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8776066352427 + j endif_8776066352427 + + endif_8776066352427: + + # internal_25 <- internal_30 + lw $t0, 92($sp) + sw $t0, 112($sp) + + # JUMP TO endif_8776066352113 + j endif_8776066352113 + + endif_8776066352113: + + # internal_20 <- internal_25 + lw $t0, 112($sp) + sw $t0, 132($sp) + + # JUMP TO endif_8776066352059 + j endif_8776066352059 + + endif_8776066352059: + + # internal_15 <- internal_20 + lw $t0, 132($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8776066352005 + j endif_8776066352005 + + endif_8776066352005: + + # internal_10 <- internal_15 + lw $t0, 152($sp) + sw $t0, 172($sp) + + # JUMP TO endif_8776066351951 + j endif_8776066351951 + + endif_8776066351951: + + # internal_5 <- internal_10 + lw $t0, 172($sp) + sw $t0, 192($sp) + + # JUMP TO endif_8776066351888 + j endif_8776066351888 + + endif_8776066351888: + + # internal_0 <- internal_5 + lw $t0, 192($sp) + sw $t0, 212($sp) + + # JUMP TO endif_8776066350791 + j endif_8776066350791 + + endif_8776066350791: + + lw $v1, 212($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 216 + + jr $ra + + function_a2i_at_Parse: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -224 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 216($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # GET METHOD length OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 208($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 204($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 212($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 220($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 200($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 224($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 208($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_6 + lw $t0, 196($sp) + sw $t0, 216($sp) + + # IF internal_1 THEN GOTO then_8776066352020 + lw $t0, 216($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352020 + + # JUMP TO else_8776066352020 + j else_8776066352020 + + then_8776066352020: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # internal_0 <- internal_7 + lw $t0, 192($sp) + sw $t0, 220($sp) + + # JUMP TO endif_8776066352020 + j endif_8776066352020 + + else_8776066352020: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 180($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 168($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 196($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 192($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 180($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 188($sp) + addi $sp, $sp, 16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 45 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 160($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 184($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 172($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 168($sp) + addi $sp, $sp, 12 + + # internal_9 <- internal_16 + lw $t0, 156($sp) + sw $t0, 184($sp) + + # IF internal_9 THEN GOTO then_8776066352038 + lw $t0, 184($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352038 + + # JUMP TO else_8776066352038 + j else_8776066352038 + + then_8776066352038: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 152($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # GET METHOD length OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 144($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_20 + lw $t0, 148($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 156($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 160($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 124($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 120($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_17] + lw $t0, 168($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 136($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 144($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # GET METHOD a2i_aux OF Parse + lw $t0, 228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 112($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_23] + lw $t0, 140($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_28 + lw $t0, 120($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_26] + lw $t0, 128($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_30] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 108($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 108($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_31 + lw $t0, 96($sp) + sw $t0, 188($sp) + + # JUMP TO endif_8776066352038 + j endif_8776066352038 + + else_8776066352038: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 72($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_34] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_35] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_38 + lw $t0, 84($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 92($sp) + addi $sp, $sp, 16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_36] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_39] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # internal_33 <- internal_40 + lw $t0, 60($sp) + sw $t0, 88($sp) + + # IF internal_33 THEN GOTO then_8776066352409 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352409 + + # JUMP TO else_8776066352409 + j else_8776066352409 + + then_8776066352409: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD length OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_44 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_42] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_45] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD substr OF String + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 240($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_41] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_46] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_49 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 48($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD a2i OF Parse + lw $t0, 228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_52 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # internal_32 <- internal_50 + lw $t0, 20($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8776066352409 + j endif_8776066352409 + + else_8776066352409: + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD a2i_aux OF Parse + lw $t0, 228($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [s] + lw $t0, 236($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_55 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_32 <- internal_53 + lw $t0, 8($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8776066352409 + j endif_8776066352409 + + endif_8776066352409: + + # internal_8 <- internal_32 + lw $t0, 92($sp) + sw $t0, 188($sp) + + # JUMP TO endif_8776066352038 + j endif_8776066352038 + + endif_8776066352038: + + # internal_0 <- internal_8 + lw $t0, 188($sp) + sw $t0, 220($sp) + + # JUMP TO endif_8776066352020 + j endif_8776066352020 + + endif_8776066352020: + + lw $v1, 220($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 224 + + jr $ra + + function_a2i_aux_at_Parse: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -248 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 240($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [int] + lw $t0, 256($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 252($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 256($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 228($sp) + + # GET METHOD length OF String + lw $t0, 248($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 228($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 224($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 232($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 240($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [j] + lw $t0, 248($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 244($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 248($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 216($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 232($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_8 + sw $zero, 212($sp) + + while_start_8776066352201: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [j] + lw $t0, 248($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 220($sp) + addi $sp, $sp, 12 + + # IF internal_9 THEN GOTO while_body_8776066352201 + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8776066352201 + + # JUMP TO while_end_8776066352201 + j while_end_8776066352201 + + while_body_8776066352201: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 200($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # GET METHOD substr OF String + lw $t0, 248($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 192($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 188($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 264($sp) + sw $t0, 8($sp) + + # ARGUMENT [i] + lw $t0, 236($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 216($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 204($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 212($sp) + addi $sp, $sp, 16 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 216($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 208($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 216($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 180($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 176($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 216($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 188($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 184($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_18 + lw $t0, 172($sp) + sw $t0, 180($sp) + + # IF internal_16 THEN GOTO then_8776066353674 + lw $t0, 180($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066353674 + + # JUMP TO else_8776066353674 + j else_8776066353674 + + then_8776066353674: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 180($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 176($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 156($sp) + + # GET METHOD length OF String + lw $t0, 248($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 156($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 152($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 160($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 168($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_21] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 160($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_24] + lw $t0, 160($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_25] + lw $t0, 156($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 152($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # GET METHOD substr OF String + lw $t0, 248($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 132($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 128($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 264($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_20] + lw $t0, 180($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_26] + lw $t0, 156($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_29 + lw $t0, 144($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 152($sp) + addi $sp, $sp, 16 + + # SET ATTRIBUTE rest OF self + lw $t0, 252($sp) + lw $t1, 136($sp) + beq $t1, $zero, object_set_attribute_8776066261523 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066261523 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066261523 + j object_set_attribute_8776066261523 + int_set_attribute_8776066261523: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066261523 + bool_set_attribute_8776066261523: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066261523 + object_set_attribute_8776066261523: + sw $t1, 12($t0) + end_set_attribute_8776066261523: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [j] + lw $t0, 248($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 232($sp) + addi $sp, $sp, 12 + + # internal_15 <- i + lw $t0, 220($sp) + sw $t0, 184($sp) + + # JUMP TO endif_8776066353674 + j endif_8776066353674 + + else_8776066353674: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 44 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 116($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 216($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 128($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 124($sp) + addi $sp, $sp, 12 + + # internal_31 <- internal_33 + lw $t0, 112($sp) + sw $t0, 120($sp) + + # IF internal_31 THEN GOTO then_8776066353791 + lw $t0, 120($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066353791 + + # JUMP TO else_8776066353791 + j else_8776066353791 + + then_8776066353791: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_34] + lw $t0, 120($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 116($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # GET METHOD length OF String + lw $t0, 248($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 96($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_38 + lw $t0, 100($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 108($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_36] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_39] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_40] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET METHOD substr OF String + lw $t0, 248($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 72($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 264($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_35] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_41] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_44 + lw $t0, 84($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 92($sp) + addi $sp, $sp, 16 + + # SET ATTRIBUTE rest OF self + lw $t0, 252($sp) + lw $t1, 76($sp) + beq $t1, $zero, object_set_attribute_8776066262420 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066262420 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066262420 + j object_set_attribute_8776066262420 + int_set_attribute_8776066262420: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066262420 + bool_set_attribute_8776066262420: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066262420 + object_set_attribute_8776066262420: + sw $t1, 12($t0) + end_set_attribute_8776066262420: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [j] + lw $t0, 248($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 232($sp) + addi $sp, $sp, 12 + + # internal_30 <- i + lw $t0, 220($sp) + sw $t0, 124($sp) + + # JUMP TO endif_8776066353791 + j endif_8776066353791 + + else_8776066353791: + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [int] + lw $t0, 256($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_45] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD substr OF String + lw $t0, 248($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 264($sp) + sw $t0, 8($sp) + + # ARGUMENT [i] + lw $t0, 236($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_50 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 68($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD c2i OF Parse + lw $t0, 252($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 264($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_48] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_53 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_46] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [int] + lw $t0, 256($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_54] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 256($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_55] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_56] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 232($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [j] + lw $t0, 248($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_58 <- internal_59 + lw $t0, 8($sp) + sw $t0, 12($sp) + + # IF internal_58 THEN GOTO then_8776066354270 + lw $t0, 12($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066354270 + + # JUMP TO else_8776066354270 + j else_8776066354270 + + then_8776066354270: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 4($sp) + + # SET ATTRIBUTE rest OF self + lw $t0, 252($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8776066264101 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066264101 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066264101 + j object_set_attribute_8776066264101 + int_set_attribute_8776066264101: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066264101 + bool_set_attribute_8776066264101: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066264101 + object_set_attribute_8776066264101: + sw $t1, 12($t0) + end_set_attribute_8776066264101: + + # internal_57 <- internal_60 + lw $t0, 4($sp) + sw $t0, 16($sp) + + # JUMP TO endif_8776066354270 + j endif_8776066354270 + + else_8776066354270: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 0($sp) + + # internal_57 <- internal_61 + lw $t0, 0($sp) + sw $t0, 16($sp) + + # JUMP TO endif_8776066354270 + j endif_8776066354270 + + endif_8776066354270: + + # internal_30 <- internal_57 + lw $t0, 16($sp) + sw $t0, 124($sp) + + # JUMP TO endif_8776066353791 + j endif_8776066353791 + + endif_8776066353791: + + # internal_15 <- internal_30 + lw $t0, 124($sp) + sw $t0, 184($sp) + + # JUMP TO endif_8776066353674 + j endif_8776066353674 + + endif_8776066353674: + + # JUMP TO while_start_8776066352201 + j while_start_8776066352201 + + while_end_8776066352201: + + lw $v1, 244($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 248 + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # ALLOCATING -> BoolOp + li $v0, 9 + lw $a0, type_BoolOp + syscall + la $t0, type_BoolOp + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_BoolOp + jal function___init___at_BoolOp + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE boolop OF self + lw $t0, 20($sp) + lw $t1, 16($sp) + beq $t1, $zero, object_set_attribute_8776066260905 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066260905 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066260905 + j object_set_attribute_8776066260905 + int_set_attribute_8776066260905: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066260905 + bool_set_attribute_8776066260905: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8776066260905 + object_set_attribute_8776066260905: + sw $t1, 8($t0) + end_set_attribute_8776066260905: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 12($sp) + + # SET ATTRIBUTE rest OF self + lw $t0, 20($sp) + lw $t1, 12($sp) + beq $t1, $zero, object_set_attribute_8776066264176 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066264176 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066264176 + j object_set_attribute_8776066264176 + int_set_attribute_8776066264176: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066264176 + bool_set_attribute_8776066264176: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8776066264176 + object_set_attribute_8776066264176: + sw $t1, 12($t0) + end_set_attribute_8776066264176: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD read_input OF Main + lw $t0, 20($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE g OF self + lw $t0, 20($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8776066264197 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8776066264197 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8776066264197 + j object_set_attribute_8776066264197 + int_set_attribute_8776066264197: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8776066264197 + bool_set_attribute_8776066264197: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8776066264197 + object_set_attribute_8776066264197: + sw $t1, 16($t0) + end_set_attribute_8776066264197: + + lw $v1, 20($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -32 + + # GET ATTRIBUTE g OF self + lw $t0, 32($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066264284 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066264284 + j object_get_attribute_8776066264284 + int_get_attribute_8776066264284: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066264284 + bool_get_attribute_8776066264284: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8776066264284 + object_get_attribute_8776066264284: + sw $t1, 28($sp) + end_get_attribute_8776066264284: + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD print_V OF Graph + lw $t0, 28($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 32($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE g OF self + lw $t0, 32($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8776066264598 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8776066264598 + j object_get_attribute_8776066264598 + int_get_attribute_8776066264598: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066264598 + bool_get_attribute_8776066264598: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8776066264598 + object_get_attribute_8776066264598: + sw $t1, 12($sp) + end_get_attribute_8776066264598: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print_E OF Graph + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 32 + + jr $ra + + function___init___at_BoolOp: + lw $v1, 0($sp) + + jr $ra + + function_and_at_BoolOp: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # internal_1 <- b1 + lw $t0, 16($sp) + sw $t0, 4($sp) + + # IF internal_1 THEN GOTO then_8776066352132 + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352132 + + # JUMP TO else_8776066352132 + j else_8776066352132 + + then_8776066352132: + + # internal_0 <- b2 + lw $t0, 12($sp) + sw $t0, 8($sp) + + # JUMP TO endif_8776066352132 + j endif_8776066352132 + + else_8776066352132: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- internal_2 + lw $t0, 0($sp) + sw $t0, 8($sp) + + # JUMP TO endif_8776066352132 + j endif_8776066352132 + + endif_8776066352132: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_or_at_BoolOp: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # internal_1 <- b1 + lw $t0, 16($sp) + sw $t0, 4($sp) + + # IF internal_1 THEN GOTO then_8776066352222 + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8776066352222 + + # JUMP TO else_8776066352222 + j else_8776066352222 + + then_8776066352222: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- internal_2 + lw $t0, 0($sp) + sw $t0, 8($sp) + + # JUMP TO endif_8776066352222 + j endif_8776066352222 + + else_8776066352222: + + # internal_0 <- b2 + lw $t0, 12($sp) + sw $t0, 8($sp) + + # JUMP TO endif_8776066352222 + j endif_8776066352222 + + endif_8776066352222: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/hairyscary.mips b/tests/codegen/hairyscary.mips new file mode 100644 index 000000000..12f5ba446 --- /dev/null +++ b/tests/codegen/hairyscary.mips @@ -0,0 +1,16305 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Foo: .word 68 + type_Foo_inherits_from: .word type_Bazz + type_Foo_name_address: .word type_Foo_name_size + type_Foo___init__: .word function___init___at_Foo + type_Foo_abort: .word function_abort_at_Object + type_Foo_type_name: .word function_type_name_at_Object + type_Foo_copy: .word function_copy_at_Object + type_Foo_out_string: .word function_out_string_at_IO + type_Foo_out_int: .word function_out_int_at_IO + type_Foo_in_string: .word function_in_string_at_IO + type_Foo_in_int: .word function_in_int_at_IO + type_Foo_printh: .word function_printh_at_Bazz + type_Foo_doh: .word function_doh_at_Foo + + type_Bar: .word 84 + type_Bar_inherits_from: .word type_Razz + type_Bar_name_address: .word type_Bar_name_size + type_Bar___init__: .word function___init___at_Bar + type_Bar_abort: .word function_abort_at_Object + type_Bar_type_name: .word function_type_name_at_Object + type_Bar_copy: .word function_copy_at_Object + type_Bar_out_string: .word function_out_string_at_IO + type_Bar_out_int: .word function_out_int_at_IO + type_Bar_in_string: .word function_in_string_at_IO + type_Bar_in_int: .word function_in_int_at_IO + type_Bar_printh: .word function_printh_at_Bazz + type_Bar_doh: .word function_doh_at_Foo + + type_Razz: .word 76 + type_Razz_inherits_from: .word type_Foo + type_Razz_name_address: .word type_Razz_name_size + type_Razz___init__: .word function___init___at_Razz + type_Razz_abort: .word function_abort_at_Object + type_Razz_type_name: .word function_type_name_at_Object + type_Razz_copy: .word function_copy_at_Object + type_Razz_out_string: .word function_out_string_at_IO + type_Razz_out_int: .word function_out_int_at_IO + type_Razz_in_string: .word function_in_string_at_IO + type_Razz_in_int: .word function_in_int_at_IO + type_Razz_printh: .word function_printh_at_Bazz + type_Razz_doh: .word function_doh_at_Foo + + type_Bazz: .word 60 + type_Bazz_inherits_from: .word type_IO + type_Bazz_name_address: .word type_Bazz_name_size + type_Bazz___init__: .word function___init___at_Bazz + type_Bazz_abort: .word function_abort_at_Object + type_Bazz_type_name: .word function_type_name_at_Object + type_Bazz_copy: .word function_copy_at_Object + type_Bazz_out_string: .word function_out_string_at_IO + type_Bazz_out_int: .word function_out_int_at_IO + type_Bazz_in_string: .word function_in_string_at_IO + type_Bazz_in_int: .word function_in_int_at_IO + type_Bazz_printh: .word function_printh_at_Bazz + type_Bazz_doh: .word function_doh_at_Bazz + + type_Main: .word 44 + type_Main_inherits_from: .word type_Object + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Foo_name_size: .word 3 + type_Foo_name: .asciiz "Foo" + + type_Bar_name_size: .word 3 + type_Bar_name: .asciiz "Bar" + + type_Razz_name_size: .word 4 + type_Razz_name: .asciiz "Razz" + + type_Bazz_name_size: .word 4 + type_Bazz_name: .asciiz "Bazz" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Foo: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -476 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 472($sp) + + # SET ATTRIBUTE h OF self + lw $t0, 476($sp) + lw $t1, 472($sp) + beq $t1, $zero, object_set_attribute_8732623750455 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623750455 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623750455 + j object_set_attribute_8732623750455 + int_set_attribute_8732623750455: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623750455 + bool_set_attribute_8732623750455: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623750455 + object_set_attribute_8732623750455: + sw $t1, 8($t0) + end_set_attribute_8732623750455: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 468($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 464($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 460($sp) + + # ALLOCATING NUll INTO -> internal_4 + sw $zero, 456($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 452($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 448($sp) + + # internal_7 <- TYPEOF self + lw $t0, 476($sp) + lw $t0, 0($t0) + sw $t0, 444($sp) + + # internal_8 <- internal_7 + lw $t0, 444($sp) + sw $t0, 440($sp) + + while_start_8732623830312: + + # internal_6 <- EQUALADDRESS (internal_8, internal_4) + lw $t0, 440($sp) + lw $t1, 456($sp) + seq $t2, $t0, $t1 + lw $t0, 448($sp) + sw $t2, 8($t0) + + # IF internal_6 THEN GOTO while_end_8732623830312 + lw $t0, 448($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8732623830312 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_5] + lw $t0, 464($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 476($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 464($sp) + addi $sp, $sp, 12 + + # internal_8 <- ANCESTOR OF internal_8 + lw $t0, 440($sp) + lw $t0, 4($t0) + sw $t0, 440($sp) + + # JUMP TO while_start_8732623830312 + j while_start_8732623830312 + + while_end_8732623830312: + + # internal_8 <- internal_7 + lw $t0, 444($sp) + sw $t0, 440($sp) + + # INITIALIZE ARRAY [internal_5] + lw $t0, 452($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 436($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 432($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 428($sp) + + foreach_start_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 444($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 464($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 440($sp) + addi $sp, $sp, 12 + + # IF internal_11 THEN GOTO foreach_body_8732623830312 + lw $t0, 428($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8732623830312 + + # JUMP TO foreach_end_8732623830312 + j foreach_end_8732623830312 + + foreach_body_8732623830312: + + # ARRAY internal_9[internal_10] <- internal_8 + lw $t0, 432($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 436($sp) + add $t1, $t1, $t0 + lw $t0, 440($sp) + sw $t0, 0($t1) + + # internal_8 <- ANCESTOR OF internal_8 + lw $t0, 440($sp) + lw $t0, 4($t0) + sw $t0, 440($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 444($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 476($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 444($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8732623830312 + j foreach_start_8732623830312 + + foreach_end_8732623830312: + + # INITIALIZE ARRAY [internal_3] + lw $t0, 460($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 424($sp) + + # INITIALIZE ARRAY [internal_3] + lw $t0, 460($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 420($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 412($sp) + + # internal_14 <- DIRECTION OF Bazz + la $t0, type_Bazz + sw $t0, 416($sp) + + # ARRAY internal_12[internal_15] <- internal_14 + lw $t0, 412($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 424($sp) + add $t1, $t1, $t0 + lw $t0, 416($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_15] <- internal_5 + lw $t0, 412($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 420($sp) + add $t1, $t1, $t0 + lw $t0, 452($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 404($sp) + + # internal_16 <- DIRECTION OF Razz + la $t0, type_Razz + sw $t0, 408($sp) + + # ARRAY internal_12[internal_17] <- internal_16 + lw $t0, 404($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 424($sp) + add $t1, $t1, $t0 + lw $t0, 408($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_17] <- internal_5 + lw $t0, 404($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 420($sp) + add $t1, $t1, $t0 + lw $t0, 452($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 396($sp) + + # internal_18 <- DIRECTION OF Foo + la $t0, type_Foo + sw $t0, 400($sp) + + # ARRAY internal_12[internal_19] <- internal_18 + lw $t0, 396($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 424($sp) + add $t1, $t1, $t0 + lw $t0, 400($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_19] <- internal_5 + lw $t0, 396($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 420($sp) + add $t1, $t1, $t0 + lw $t0, 452($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 388($sp) + + # internal_20 <- DIRECTION OF Bar + la $t0, type_Bar + sw $t0, 392($sp) + + # ARRAY internal_12[internal_21] <- internal_20 + lw $t0, 388($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 424($sp) + add $t1, $t1, $t0 + lw $t0, 392($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_21] <- internal_5 + lw $t0, 388($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 420($sp) + add $t1, $t1, $t0 + lw $t0, 452($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 384($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 380($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 372($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 368($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 360($sp) + + foreach_type_start_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_22] + lw $t0, 396($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 472($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 392($sp) + addi $sp, $sp, 12 + + # IF internal_23 THEN GOTO foreach_type_body_8732623830312 + lw $t0, 380($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8732623830312 + + # JUMP TO foreach_type_end_8732623830312 + j foreach_type_end_8732623830312 + + foreach_type_body_8732623830312: + + # internal_24 <- ARRAY internal_12[internal_22] + lw $t0, 384($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 424($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 376($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 384($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 480($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 384($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 384($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 464($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 380($sp) + addi $sp, $sp, 12 + + # IF internal_26 THEN GOTO foreach_ancestor_body_8732623830312 + lw $t0, 368($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8732623830312 + + # JUMP TO foreach_ancestor_end_8732623830312 + j foreach_ancestor_end_8732623830312 + + foreach_ancestor_body_8732623830312: + + # internal_27 <- ARRAY internal_9[internal_25] + lw $t0, 372($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 436($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 364($sp) + + # internal_28 <- EQUALADDRESS (internal_24, internal_27) + lw $t0, 376($sp) + lw $t1, 364($sp) + seq $t2, $t0, $t1 + lw $t0, 360($sp) + sw $t2, 8($t0) + + # IF internal_28 THEN GOTO foreach_ancestor_end_8732623830312 + lw $t0, 360($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8732623830312 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 384($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 476($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 384($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8732623830312 + j foreach_ancestor_start_8732623830312 + + foreach_ancestor_end_8732623830312: + + # ARRAY internal_13[internal_22] <- internal_25 + lw $t0, 384($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 420($sp) + add $t1, $t1, $t0 + lw $t0, 372($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_22] + lw $t0, 396($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 476($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 396($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8732623830312 + j foreach_type_start_8732623830312 + + foreach_type_end_8732623830312: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 356($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 352($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 348($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 344($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 340($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 356($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 464($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 356($sp) + addi $sp, $sp, 12 + + foreach_min_start_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 368($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 472($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 352($sp) + addi $sp, $sp, 12 + + # IF internal_33 THEN GOTO foreach_min_body_8732623830312 + lw $t0, 340($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8732623830312 + + # JUMP TO foreach_min_end_8732623830312 + j foreach_min_end_8732623830312 + + foreach_min_body_8732623830312: + + # internal_31 <- ARRAY internal_13[internal_29] + lw $t0, 356($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 420($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 348($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 360($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 356($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 352($sp) + addi $sp, $sp, 12 + + # IF internal_33 THEN GOTO update_min_8732623830312 + lw $t0, 340($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8732623830312 + + # JUMP TO update_min_end_8732623830312 + j update_min_end_8732623830312 + + update_min_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 356($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_31] + lw $t0, 360($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 356($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_30] + lw $t0, 364($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 368($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 364($sp) + addi $sp, $sp, 12 + + update_min_end_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 368($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 476($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 368($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8732623830312 + j foreach_min_start_8732623830312 + + foreach_min_end_8732623830312: + + # INITIALIZE ARRAY [internal_3] + lw $t0, 460($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 336($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 332($sp) + + # ARRAY internal_34[internal_35] <- internal_1 + lw $t0, 332($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 336($sp) + add $t1, $t1, $t0 + lw $t0, 468($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 328($sp) + + # ARRAY internal_34[internal_36] <- internal_1 + lw $t0, 328($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 336($sp) + add $t1, $t1, $t0 + lw $t0, 468($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 324($sp) + + # ARRAY internal_34[internal_37] <- internal_1 + lw $t0, 324($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 336($sp) + add $t1, $t1, $t0 + lw $t0, 468($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 320($sp) + + # ARRAY internal_34[internal_38] <- internal_1 + lw $t0, 320($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 336($sp) + add $t1, $t1, $t0 + lw $t0, 468($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 316($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 356($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 464($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 328($sp) + addi $sp, $sp, 12 + + # IF internal_39 THEN GOTO error_branch_8732623830312 + lw $t0, 316($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8732623830312 + + # ARRAY internal_34[internal_30] <- internal_2 + lw $t0, 352($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 336($sp) + add $t1, $t1, $t0 + lw $t0, 464($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 312($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 308($sp) + + # internal_40 <- ARRAY internal_34[internal_41] + lw $t0, 308($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 336($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 312($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Bazz_8732623830312 + lw $t0, 312($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bazz_8732623830312 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 304($sp) + + # internal_40 <- ARRAY internal_34[internal_42] + lw $t0, 304($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 336($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 312($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Razz_8732623830312 + lw $t0, 312($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Razz_8732623830312 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 300($sp) + + # internal_40 <- ARRAY internal_34[internal_43] + lw $t0, 300($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 336($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 312($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Foo_8732623830312 + lw $t0, 312($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Foo_8732623830312 + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 296($sp) + + # internal_40 <- ARRAY internal_34[internal_44] + lw $t0, 296($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 336($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 312($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Bar_8732623830312 + lw $t0, 312($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bar_8732623830312 + + branch_Bazz_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 300($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 488($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Foo + li $v0, 9 + lw $a0, type_Foo + syscall + la $t0, type_Foo + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 284($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 292($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Foo + jal function___init___at_Foo + lw $ra, 4($sp) + sw $v1, 292($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 304($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 296($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 304($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_47 + lw $t0, 284($sp) + sw $t0, 292($sp) + + # JUMP TO branch_end_8732623830312 + j branch_end_8732623830312 + + branch_Razz_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 300($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 488($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 276($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 284($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 284($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 304($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 288($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 304($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_49 + lw $t0, 276($sp) + sw $t0, 292($sp) + + # JUMP TO branch_end_8732623830312 + j branch_end_8732623830312 + + branch_Foo_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 300($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 488($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Razz + li $v0, 9 + lw $a0, type_Razz + syscall + la $t0, type_Razz + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 268($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 276($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Razz + jal function___init___at_Razz + lw $ra, 4($sp) + sw $v1, 276($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 304($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 280($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 304($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_51 + lw $t0, 268($sp) + sw $t0, 292($sp) + + # JUMP TO branch_end_8732623830312 + j branch_end_8732623830312 + + branch_Bar_8732623830312: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 300($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 488($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 304($sp) + sw $t0, 4($sp) + + # ARGUMENT [n] + lw $t0, 300($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 304($sp) + addi $sp, $sp, 12 + + # internal_45 <- n + lw $t0, 288($sp) + sw $t0, 292($sp) + + # JUMP TO branch_end_8732623830312 + j branch_end_8732623830312 + + error_branch_8732623830312: + + branch_end_8732623830312: + + # SET ATTRIBUTE g OF self + lw $t0, 476($sp) + lw $t1, 292($sp) + beq $t1, $zero, object_set_attribute_8732623750479 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623750479 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623750479 + j object_set_attribute_8732623750479 + int_set_attribute_8732623750479: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623750479 + bool_set_attribute_8732623750479: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623750479 + object_set_attribute_8732623750479: + sw $t1, 12($t0) + end_set_attribute_8732623750479: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 256($sp) + + # GET METHOD printh OF Foo + lw $t0, 476($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 256($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 252($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 484($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_55 + lw $t0, 260($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 268($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE i OF self + lw $t0, 476($sp) + lw $t1, 260($sp) + beq $t1, $zero, object_set_attribute_8732623753915 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623753915 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623753915 + j object_set_attribute_8732623753915 + int_set_attribute_8732623753915: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623753915 + bool_set_attribute_8732623753915: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623753915 + object_set_attribute_8732623753915: + sw $t1, 16($t0) + end_set_attribute_8732623753915: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 248($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 244($sp) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 240($sp) + + # ALLOCATING NUll INTO -> internal_59 + sw $zero, 236($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 232($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 228($sp) + + # internal_62 <- TYPEOF self + lw $t0, 476($sp) + lw $t0, 0($t0) + sw $t0, 224($sp) + + # internal_63 <- internal_62 + lw $t0, 224($sp) + sw $t0, 220($sp) + + while_start_8732623835883: + + # internal_61 <- EQUALADDRESS (internal_63, internal_59) + lw $t0, 220($sp) + lw $t1, 236($sp) + seq $t2, $t0, $t1 + lw $t0, 228($sp) + sw $t2, 8($t0) + + # IF internal_61 THEN GOTO while_end_8732623835883 + lw $t0, 228($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8732623835883 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_60] + lw $t0, 244($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 244($sp) + addi $sp, $sp, 12 + + # internal_63 <- ANCESTOR OF internal_63 + lw $t0, 220($sp) + lw $t0, 4($t0) + sw $t0, 220($sp) + + # JUMP TO while_start_8732623835883 + j while_start_8732623835883 + + while_end_8732623835883: + + # internal_63 <- internal_62 + lw $t0, 224($sp) + sw $t0, 220($sp) + + # INITIALIZE ARRAY [internal_60] + lw $t0, 232($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 216($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 212($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 208($sp) + + foreach_start_8732623835883: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_65] + lw $t0, 224($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 244($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 220($sp) + addi $sp, $sp, 12 + + # IF internal_66 THEN GOTO foreach_body_8732623835883 + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8732623835883 + + # JUMP TO foreach_end_8732623835883 + j foreach_end_8732623835883 + + foreach_body_8732623835883: + + # ARRAY internal_64[internal_65] <- internal_63 + lw $t0, 212($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 216($sp) + add $t1, $t1, $t0 + lw $t0, 220($sp) + sw $t0, 0($t1) + + # internal_63 <- ANCESTOR OF internal_63 + lw $t0, 220($sp) + lw $t0, 4($t0) + sw $t0, 220($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_65] + lw $t0, 224($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 224($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8732623835883 + j foreach_start_8732623835883 + + foreach_end_8732623835883: + + # INITIALIZE ARRAY [internal_58] + lw $t0, 240($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 204($sp) + + # INITIALIZE ARRAY [internal_58] + lw $t0, 240($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 200($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # internal_69 <- DIRECTION OF Razz + la $t0, type_Razz + sw $t0, 196($sp) + + # ARRAY internal_67[internal_70] <- internal_69 + lw $t0, 192($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 204($sp) + add $t1, $t1, $t0 + lw $t0, 196($sp) + sw $t0, 0($t1) + + # ARRAY internal_68[internal_70] <- internal_60 + lw $t0, 192($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 200($sp) + add $t1, $t1, $t0 + lw $t0, 232($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # internal_71 <- DIRECTION OF Foo + la $t0, type_Foo + sw $t0, 188($sp) + + # ARRAY internal_67[internal_72] <- internal_71 + lw $t0, 184($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 204($sp) + add $t1, $t1, $t0 + lw $t0, 188($sp) + sw $t0, 0($t1) + + # ARRAY internal_68[internal_72] <- internal_60 + lw $t0, 184($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 200($sp) + add $t1, $t1, $t0 + lw $t0, 232($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # internal_73 <- DIRECTION OF Bar + la $t0, type_Bar + sw $t0, 180($sp) + + # ARRAY internal_67[internal_74] <- internal_73 + lw $t0, 176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 204($sp) + add $t1, $t1, $t0 + lw $t0, 180($sp) + sw $t0, 0($t1) + + # ARRAY internal_68[internal_74] <- internal_60 + lw $t0, 176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 200($sp) + add $t1, $t1, $t0 + lw $t0, 232($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 172($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 156($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + foreach_type_start_8732623835883: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_75] + lw $t0, 184($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_58] + lw $t0, 252($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 180($sp) + addi $sp, $sp, 12 + + # IF internal_76 THEN GOTO foreach_type_body_8732623835883 + lw $t0, 168($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8732623835883 + + # JUMP TO foreach_type_end_8732623835883 + j foreach_type_end_8732623835883 + + foreach_type_body_8732623835883: + + # internal_77 <- ARRAY internal_67[internal_75] + lw $t0, 172($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 204($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_78] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_56] + lw $t0, 260($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8732623835883: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_78] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 244($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 168($sp) + addi $sp, $sp, 12 + + # IF internal_79 THEN GOTO foreach_ancestor_body_8732623835883 + lw $t0, 156($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8732623835883 + + # JUMP TO foreach_ancestor_end_8732623835883 + j foreach_ancestor_end_8732623835883 + + foreach_ancestor_body_8732623835883: + + # internal_80 <- ARRAY internal_64[internal_78] + lw $t0, 160($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 216($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 152($sp) + + # internal_81 <- EQUALADDRESS (internal_77, internal_80) + lw $t0, 164($sp) + lw $t1, 152($sp) + seq $t2, $t0, $t1 + lw $t0, 148($sp) + sw $t2, 8($t0) + + # IF internal_81 THEN GOTO foreach_ancestor_end_8732623835883 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8732623835883 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_78] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8732623835883 + j foreach_ancestor_start_8732623835883 + + foreach_ancestor_end_8732623835883: + + # ARRAY internal_68[internal_75] <- internal_78 + lw $t0, 172($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 200($sp) + add $t1, $t1, $t0 + lw $t0, 160($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_75] + lw $t0, 184($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 184($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8732623835883 + j foreach_type_start_8732623835883 + + foreach_type_end_8732623835883: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 140($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_85] + lw $t0, 144($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 244($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + foreach_min_start_8732623835883: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_82] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_58] + lw $t0, 252($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 140($sp) + addi $sp, $sp, 12 + + # IF internal_86 THEN GOTO foreach_min_body_8732623835883 + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8732623835883 + + # JUMP TO foreach_min_end_8732623835883 + j foreach_min_end_8732623835883 + + foreach_min_body_8732623835883: + + # internal_84 <- ARRAY internal_68[internal_82] + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 200($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 136($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_84] + lw $t0, 148($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_85] + lw $t0, 144($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 140($sp) + addi $sp, $sp, 12 + + # IF internal_86 THEN GOTO update_min_8732623835883 + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8732623835883 + + # JUMP TO update_min_end_8732623835883 + j update_min_end_8732623835883 + + update_min_8732623835883: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_85] + lw $t0, 144($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_84] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_83] + lw $t0, 152($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_82] + lw $t0, 156($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 152($sp) + addi $sp, $sp, 12 + + update_min_end_8732623835883: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_82] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 156($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8732623835883 + j foreach_min_start_8732623835883 + + foreach_min_end_8732623835883: + + # INITIALIZE ARRAY [internal_58] + lw $t0, 240($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 124($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # ARRAY internal_87[internal_88] <- internal_56 + lw $t0, 120($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 124($sp) + add $t1, $t1, $t0 + lw $t0, 248($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # ARRAY internal_87[internal_89] <- internal_56 + lw $t0, 116($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 124($sp) + add $t1, $t1, $t0 + lw $t0, 248($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # ARRAY internal_87[internal_90] <- internal_56 + lw $t0, 112($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 124($sp) + add $t1, $t1, $t0 + lw $t0, 248($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_85] + lw $t0, 144($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 244($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 120($sp) + addi $sp, $sp, 12 + + # IF internal_91 THEN GOTO error_branch_8732623835883 + lw $t0, 108($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8732623835883 + + # ARRAY internal_87[internal_83] <- internal_57 + lw $t0, 140($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 124($sp) + add $t1, $t1, $t0 + lw $t0, 244($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # internal_92 <- ARRAY internal_87[internal_93] + lw $t0, 100($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 124($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 104($sp) + sw $t0, 8($t2) + + # IF internal_92 THEN GOTO branch_Razz_8732623835883 + lw $t0, 104($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Razz_8732623835883 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # internal_92 <- ARRAY internal_87[internal_94] + lw $t0, 96($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 124($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 104($sp) + sw $t0, 8($t2) + + # IF internal_92 THEN GOTO branch_Foo_8732623835883 + lw $t0, 104($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Foo_8732623835883 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # internal_92 <- ARRAY internal_87[internal_95] + lw $t0, 92($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 124($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 104($sp) + sw $t0, 8($t2) + + # IF internal_92 THEN GOTO branch_Bar_8732623835883 + lw $t0, 104($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bar_8732623835883 + + branch_Razz_8732623835883: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 300($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 488($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_98] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 88($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_96] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_98] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # internal_96 <- internal_98 + lw $t0, 80($sp) + sw $t0, 88($sp) + + # JUMP TO branch_end_8732623835883 + j branch_end_8732623835883 + + branch_Foo_8732623835883: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 300($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 488($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Razz + li $v0, 9 + lw $a0, type_Razz + syscall + la $t0, type_Razz + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 72($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_100] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Razz + jal function___init___at_Razz + lw $ra, 4($sp) + sw $v1, 80($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_96] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_100] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # internal_96 <- internal_100 + lw $t0, 72($sp) + sw $t0, 88($sp) + + # JUMP TO branch_end_8732623835883 + j branch_end_8732623835883 + + branch_Bar_8732623835883: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 300($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 488($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_96] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [n] + lw $t0, 300($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # internal_96 <- n + lw $t0, 288($sp) + sw $t0, 88($sp) + + # JUMP TO branch_end_8732623835883 + j branch_end_8732623835883 + + error_branch_8732623835883: + + branch_end_8732623835883: + + # SET ATTRIBUTE a OF self + lw $t0, 476($sp) + lw $t1, 88($sp) + beq $t1, $zero, object_set_attribute_8732623753963 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623753963 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623753963 + j object_set_attribute_8732623753963 + int_set_attribute_8732623753963: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8732623753963 + bool_set_attribute_8732623753963: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8732623753963 + object_set_attribute_8732623753963: + sw $t1, 20($t0) + end_set_attribute_8732623753963: + + # GET ATTRIBUTE a OF self + lw $t0, 476($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623724270 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623724270 + j object_get_attribute_8732623724270 + int_get_attribute_8732623724270: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 64($sp) + j end_get_attribute_8732623724270 + bool_get_attribute_8732623724270: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 64($sp) + j end_get_attribute_8732623724270 + object_get_attribute_8732623724270: + sw $t1, 64($sp) + end_get_attribute_8732623724270: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # GET METHOD doh OF Razz + lw $t0, 64($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 56($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_102] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_105 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 68($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE g OF self + lw $t0, 476($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623725352 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623725352 + j object_get_attribute_8732623725352 + int_get_attribute_8732623725352: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8732623725352 + bool_get_attribute_8732623725352: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8732623725352 + object_get_attribute_8732623725352: + sw $t1, 48($sp) + end_get_attribute_8732623725352: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD doh OF Foo + lw $t0, 48($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_106] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_109 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 52($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_103] + lw $t0, 72($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_107] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD doh OF Foo + lw $t0, 476($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 484($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_113 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 36($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_110] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_111] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD printh OF Foo + lw $t0, 476($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 484($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_117 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_114] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_115] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE b OF self + lw $t0, 476($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8732623724195 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623724195 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623724195 + j object_set_attribute_8732623724195 + int_set_attribute_8732623724195: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8732623724195 + bool_set_attribute_8732623724195: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8732623724195 + object_set_attribute_8732623724195: + sw $t1, 24($t0) + end_set_attribute_8732623724195: + + lw $v1, 476($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 476 + + jr $ra + + function_doh_at_Foo: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # GET ATTRIBUTE h OF self + lw $t0, 20($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623725553 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623725553 + j object_get_attribute_8732623725553 + int_get_attribute_8732623725553: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8732623725553 + bool_get_attribute_8732623725553: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8732623725553 + object_get_attribute_8732623725553: + sw $t1, 12($sp) + end_get_attribute_8732623725553: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE h OF self + lw $t0, 20($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623725888 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623725888 + j object_get_attribute_8732623725888 + int_get_attribute_8732623725888: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($sp) + j end_get_attribute_8732623725888 + bool_get_attribute_8732623725888: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($sp) + j end_get_attribute_8732623725888 + object_get_attribute_8732623725888: + sw $t1, 8($sp) + end_get_attribute_8732623725888: + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 20($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE h OF self + lw $t0, 20($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8732623725858 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623725858 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623725858 + j object_set_attribute_8732623725858 + int_set_attribute_8732623725858: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623725858 + bool_set_attribute_8732623725858: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623725858 + object_set_attribute_8732623725858: + sw $t1, 8($t0) + end_set_attribute_8732623725858: + + lw $v1, 16($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function___init___at_Bar: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -748 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 744($sp) + + # SET ATTRIBUTE h OF self + lw $t0, 748($sp) + lw $t1, 744($sp) + beq $t1, $zero, object_set_attribute_8732623725933 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623725933 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623725933 + j object_set_attribute_8732623725933 + int_set_attribute_8732623725933: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623725933 + bool_set_attribute_8732623725933: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623725933 + object_set_attribute_8732623725933: + sw $t1, 8($t0) + end_set_attribute_8732623725933: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 740($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 736($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 732($sp) + + # ALLOCATING NUll INTO -> internal_4 + sw $zero, 728($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 724($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 720($sp) + + # internal_7 <- TYPEOF self + lw $t0, 748($sp) + lw $t0, 0($t0) + sw $t0, 716($sp) + + # internal_8 <- internal_7 + lw $t0, 716($sp) + sw $t0, 712($sp) + + while_start_8732623811964: + + # internal_6 <- EQUALADDRESS (internal_8, internal_4) + lw $t0, 712($sp) + lw $t1, 728($sp) + seq $t2, $t0, $t1 + lw $t0, 720($sp) + sw $t2, 8($t0) + + # IF internal_6 THEN GOTO while_end_8732623811964 + lw $t0, 720($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8732623811964 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_5] + lw $t0, 736($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 748($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 736($sp) + addi $sp, $sp, 12 + + # internal_8 <- ANCESTOR OF internal_8 + lw $t0, 712($sp) + lw $t0, 4($t0) + sw $t0, 712($sp) + + # JUMP TO while_start_8732623811964 + j while_start_8732623811964 + + while_end_8732623811964: + + # internal_8 <- internal_7 + lw $t0, 716($sp) + sw $t0, 712($sp) + + # INITIALIZE ARRAY [internal_5] + lw $t0, 724($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 708($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 704($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 700($sp) + + foreach_start_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 716($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 712($sp) + addi $sp, $sp, 12 + + # IF internal_11 THEN GOTO foreach_body_8732623811964 + lw $t0, 700($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8732623811964 + + # JUMP TO foreach_end_8732623811964 + j foreach_end_8732623811964 + + foreach_body_8732623811964: + + # ARRAY internal_9[internal_10] <- internal_8 + lw $t0, 704($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 708($sp) + add $t1, $t1, $t0 + lw $t0, 712($sp) + sw $t0, 0($t1) + + # internal_8 <- ANCESTOR OF internal_8 + lw $t0, 712($sp) + lw $t0, 4($t0) + sw $t0, 712($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 716($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 748($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 716($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8732623811964 + j foreach_start_8732623811964 + + foreach_end_8732623811964: + + # INITIALIZE ARRAY [internal_3] + lw $t0, 732($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 696($sp) + + # INITIALIZE ARRAY [internal_3] + lw $t0, 732($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 692($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 684($sp) + + # internal_14 <- DIRECTION OF Bazz + la $t0, type_Bazz + sw $t0, 688($sp) + + # ARRAY internal_12[internal_15] <- internal_14 + lw $t0, 684($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 696($sp) + add $t1, $t1, $t0 + lw $t0, 688($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_15] <- internal_5 + lw $t0, 684($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 692($sp) + add $t1, $t1, $t0 + lw $t0, 724($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 676($sp) + + # internal_16 <- DIRECTION OF Razz + la $t0, type_Razz + sw $t0, 680($sp) + + # ARRAY internal_12[internal_17] <- internal_16 + lw $t0, 676($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 696($sp) + add $t1, $t1, $t0 + lw $t0, 680($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_17] <- internal_5 + lw $t0, 676($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 692($sp) + add $t1, $t1, $t0 + lw $t0, 724($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 668($sp) + + # internal_18 <- DIRECTION OF Foo + la $t0, type_Foo + sw $t0, 672($sp) + + # ARRAY internal_12[internal_19] <- internal_18 + lw $t0, 668($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 696($sp) + add $t1, $t1, $t0 + lw $t0, 672($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_19] <- internal_5 + lw $t0, 668($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 692($sp) + add $t1, $t1, $t0 + lw $t0, 724($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 660($sp) + + # internal_20 <- DIRECTION OF Bar + la $t0, type_Bar + sw $t0, 664($sp) + + # ARRAY internal_12[internal_21] <- internal_20 + lw $t0, 660($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 696($sp) + add $t1, $t1, $t0 + lw $t0, 664($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_21] <- internal_5 + lw $t0, 660($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 692($sp) + add $t1, $t1, $t0 + lw $t0, 724($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 656($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 652($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 644($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 640($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 632($sp) + + foreach_type_start_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_22] + lw $t0, 668($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 744($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 664($sp) + addi $sp, $sp, 12 + + # IF internal_23 THEN GOTO foreach_type_body_8732623811964 + lw $t0, 652($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8732623811964 + + # JUMP TO foreach_type_end_8732623811964 + j foreach_type_end_8732623811964 + + foreach_type_body_8732623811964: + + # internal_24 <- ARRAY internal_12[internal_22] + lw $t0, 656($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 696($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 648($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 656($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 752($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 656($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 656($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 652($sp) + addi $sp, $sp, 12 + + # IF internal_26 THEN GOTO foreach_ancestor_body_8732623811964 + lw $t0, 640($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8732623811964 + + # JUMP TO foreach_ancestor_end_8732623811964 + j foreach_ancestor_end_8732623811964 + + foreach_ancestor_body_8732623811964: + + # internal_27 <- ARRAY internal_9[internal_25] + lw $t0, 644($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 708($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 636($sp) + + # internal_28 <- EQUALADDRESS (internal_24, internal_27) + lw $t0, 648($sp) + lw $t1, 636($sp) + seq $t2, $t0, $t1 + lw $t0, 632($sp) + sw $t2, 8($t0) + + # IF internal_28 THEN GOTO foreach_ancestor_end_8732623811964 + lw $t0, 632($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8732623811964 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 656($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 748($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 656($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8732623811964 + j foreach_ancestor_start_8732623811964 + + foreach_ancestor_end_8732623811964: + + # ARRAY internal_13[internal_22] <- internal_25 + lw $t0, 656($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 692($sp) + add $t1, $t1, $t0 + lw $t0, 644($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_22] + lw $t0, 668($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 748($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 668($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8732623811964 + j foreach_type_start_8732623811964 + + foreach_type_end_8732623811964: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 628($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 624($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 620($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 616($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 612($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 628($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 628($sp) + addi $sp, $sp, 12 + + foreach_min_start_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 640($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 744($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 624($sp) + addi $sp, $sp, 12 + + # IF internal_33 THEN GOTO foreach_min_body_8732623811964 + lw $t0, 612($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8732623811964 + + # JUMP TO foreach_min_end_8732623811964 + j foreach_min_end_8732623811964 + + foreach_min_body_8732623811964: + + # internal_31 <- ARRAY internal_13[internal_29] + lw $t0, 628($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 692($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 620($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 632($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 628($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 624($sp) + addi $sp, $sp, 12 + + # IF internal_33 THEN GOTO update_min_8732623811964 + lw $t0, 612($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8732623811964 + + # JUMP TO update_min_end_8732623811964 + j update_min_end_8732623811964 + + update_min_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 628($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_31] + lw $t0, 632($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 628($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_30] + lw $t0, 636($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 640($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 636($sp) + addi $sp, $sp, 12 + + update_min_end_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 640($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 748($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 640($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8732623811964 + j foreach_min_start_8732623811964 + + foreach_min_end_8732623811964: + + # INITIALIZE ARRAY [internal_3] + lw $t0, 732($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 608($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 604($sp) + + # ARRAY internal_34[internal_35] <- internal_1 + lw $t0, 604($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 608($sp) + add $t1, $t1, $t0 + lw $t0, 740($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 600($sp) + + # ARRAY internal_34[internal_36] <- internal_1 + lw $t0, 600($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 608($sp) + add $t1, $t1, $t0 + lw $t0, 740($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 596($sp) + + # ARRAY internal_34[internal_37] <- internal_1 + lw $t0, 596($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 608($sp) + add $t1, $t1, $t0 + lw $t0, 740($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 592($sp) + + # ARRAY internal_34[internal_38] <- internal_1 + lw $t0, 592($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 608($sp) + add $t1, $t1, $t0 + lw $t0, 740($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 588($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 628($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 600($sp) + addi $sp, $sp, 12 + + # IF internal_39 THEN GOTO error_branch_8732623811964 + lw $t0, 588($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8732623811964 + + # ARRAY internal_34[internal_30] <- internal_2 + lw $t0, 624($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 608($sp) + add $t1, $t1, $t0 + lw $t0, 736($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 584($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 580($sp) + + # internal_40 <- ARRAY internal_34[internal_41] + lw $t0, 580($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 608($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 584($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Bazz_8732623811964 + lw $t0, 584($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bazz_8732623811964 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 576($sp) + + # internal_40 <- ARRAY internal_34[internal_42] + lw $t0, 576($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 608($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 584($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Razz_8732623811964 + lw $t0, 584($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Razz_8732623811964 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 572($sp) + + # internal_40 <- ARRAY internal_34[internal_43] + lw $t0, 572($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 608($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 584($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Foo_8732623811964 + lw $t0, 584($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Foo_8732623811964 + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 568($sp) + + # internal_40 <- ARRAY internal_34[internal_44] + lw $t0, 568($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 608($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 584($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Bar_8732623811964 + lw $t0, 584($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bar_8732623811964 + + branch_Bazz_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 760($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 572($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Foo + li $v0, 9 + lw $a0, type_Foo + syscall + la $t0, type_Foo + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 556($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 564($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Foo + jal function___init___at_Foo + lw $ra, 4($sp) + sw $v1, 564($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 576($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 568($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 576($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_47 + lw $t0, 556($sp) + sw $t0, 564($sp) + + # JUMP TO branch_end_8732623811964 + j branch_end_8732623811964 + + branch_Razz_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 760($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 572($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 548($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 556($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 556($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 576($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 560($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 576($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_49 + lw $t0, 548($sp) + sw $t0, 564($sp) + + # JUMP TO branch_end_8732623811964 + j branch_end_8732623811964 + + branch_Foo_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 760($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 572($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Razz + li $v0, 9 + lw $a0, type_Razz + syscall + la $t0, type_Razz + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 540($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 548($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Razz + jal function___init___at_Razz + lw $ra, 4($sp) + sw $v1, 548($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 576($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 552($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 576($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_51 + lw $t0, 540($sp) + sw $t0, 564($sp) + + # JUMP TO branch_end_8732623811964 + j branch_end_8732623811964 + + branch_Bar_8732623811964: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 760($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 572($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 576($sp) + sw $t0, 4($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 576($sp) + addi $sp, $sp, 12 + + # internal_45 <- n + lw $t0, 560($sp) + sw $t0, 564($sp) + + # JUMP TO branch_end_8732623811964 + j branch_end_8732623811964 + + error_branch_8732623811964: + + branch_end_8732623811964: + + # SET ATTRIBUTE g OF self + lw $t0, 748($sp) + lw $t1, 564($sp) + beq $t1, $zero, object_set_attribute_8732623725954 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623725954 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623725954 + j object_set_attribute_8732623725954 + int_set_attribute_8732623725954: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623725954 + bool_set_attribute_8732623725954: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623725954 + object_set_attribute_8732623725954: + sw $t1, 12($t0) + end_set_attribute_8732623725954: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 528($sp) + + # GET METHOD printh OF Bar + lw $t0, 748($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 528($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 524($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 756($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_55 + lw $t0, 532($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 540($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE i OF self + lw $t0, 748($sp) + lw $t1, 532($sp) + beq $t1, $zero, object_set_attribute_8732623729131 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623729131 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623729131 + j object_set_attribute_8732623729131 + int_set_attribute_8732623729131: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623729131 + bool_set_attribute_8732623729131: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623729131 + object_set_attribute_8732623729131: + sw $t1, 16($t0) + end_set_attribute_8732623729131: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 520($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 516($sp) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 512($sp) + + # ALLOCATING NUll INTO -> internal_59 + sw $zero, 508($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 504($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 500($sp) + + # internal_62 <- TYPEOF self + lw $t0, 748($sp) + lw $t0, 0($t0) + sw $t0, 496($sp) + + # internal_63 <- internal_62 + lw $t0, 496($sp) + sw $t0, 492($sp) + + while_start_8732623816780: + + # internal_61 <- EQUALADDRESS (internal_63, internal_59) + lw $t0, 492($sp) + lw $t1, 508($sp) + seq $t2, $t0, $t1 + lw $t0, 500($sp) + sw $t2, 8($t0) + + # IF internal_61 THEN GOTO while_end_8732623816780 + lw $t0, 500($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8732623816780 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_60] + lw $t0, 516($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 528($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 516($sp) + addi $sp, $sp, 12 + + # internal_63 <- ANCESTOR OF internal_63 + lw $t0, 492($sp) + lw $t0, 4($t0) + sw $t0, 492($sp) + + # JUMP TO while_start_8732623816780 + j while_start_8732623816780 + + while_end_8732623816780: + + # internal_63 <- internal_62 + lw $t0, 496($sp) + sw $t0, 492($sp) + + # INITIALIZE ARRAY [internal_60] + lw $t0, 504($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 488($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 484($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 480($sp) + + foreach_start_8732623816780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_65] + lw $t0, 496($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 516($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 492($sp) + addi $sp, $sp, 12 + + # IF internal_66 THEN GOTO foreach_body_8732623816780 + lw $t0, 480($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8732623816780 + + # JUMP TO foreach_end_8732623816780 + j foreach_end_8732623816780 + + foreach_body_8732623816780: + + # ARRAY internal_64[internal_65] <- internal_63 + lw $t0, 484($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 488($sp) + add $t1, $t1, $t0 + lw $t0, 492($sp) + sw $t0, 0($t1) + + # internal_63 <- ANCESTOR OF internal_63 + lw $t0, 492($sp) + lw $t0, 4($t0) + sw $t0, 492($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_65] + lw $t0, 496($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 528($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 496($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8732623816780 + j foreach_start_8732623816780 + + foreach_end_8732623816780: + + # INITIALIZE ARRAY [internal_58] + lw $t0, 512($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 476($sp) + + # INITIALIZE ARRAY [internal_58] + lw $t0, 512($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 472($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 464($sp) + + # internal_69 <- DIRECTION OF Razz + la $t0, type_Razz + sw $t0, 468($sp) + + # ARRAY internal_67[internal_70] <- internal_69 + lw $t0, 464($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 476($sp) + add $t1, $t1, $t0 + lw $t0, 468($sp) + sw $t0, 0($t1) + + # ARRAY internal_68[internal_70] <- internal_60 + lw $t0, 464($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 472($sp) + add $t1, $t1, $t0 + lw $t0, 504($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 456($sp) + + # internal_71 <- DIRECTION OF Foo + la $t0, type_Foo + sw $t0, 460($sp) + + # ARRAY internal_67[internal_72] <- internal_71 + lw $t0, 456($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 476($sp) + add $t1, $t1, $t0 + lw $t0, 460($sp) + sw $t0, 0($t1) + + # ARRAY internal_68[internal_72] <- internal_60 + lw $t0, 456($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 472($sp) + add $t1, $t1, $t0 + lw $t0, 504($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 448($sp) + + # internal_73 <- DIRECTION OF Bar + la $t0, type_Bar + sw $t0, 452($sp) + + # ARRAY internal_67[internal_74] <- internal_73 + lw $t0, 448($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 476($sp) + add $t1, $t1, $t0 + lw $t0, 452($sp) + sw $t0, 0($t1) + + # ARRAY internal_68[internal_74] <- internal_60 + lw $t0, 448($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 472($sp) + add $t1, $t1, $t0 + lw $t0, 504($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 444($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 440($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 432($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 428($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 420($sp) + + foreach_type_start_8732623816780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_75] + lw $t0, 456($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_58] + lw $t0, 524($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 452($sp) + addi $sp, $sp, 12 + + # IF internal_76 THEN GOTO foreach_type_body_8732623816780 + lw $t0, 440($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8732623816780 + + # JUMP TO foreach_type_end_8732623816780 + j foreach_type_end_8732623816780 + + foreach_type_body_8732623816780: + + # internal_77 <- ARRAY internal_67[internal_75] + lw $t0, 444($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 476($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 436($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_78] + lw $t0, 444($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_56] + lw $t0, 532($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 444($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8732623816780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_78] + lw $t0, 444($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 516($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 440($sp) + addi $sp, $sp, 12 + + # IF internal_79 THEN GOTO foreach_ancestor_body_8732623816780 + lw $t0, 428($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8732623816780 + + # JUMP TO foreach_ancestor_end_8732623816780 + j foreach_ancestor_end_8732623816780 + + foreach_ancestor_body_8732623816780: + + # internal_80 <- ARRAY internal_64[internal_78] + lw $t0, 432($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 488($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 424($sp) + + # internal_81 <- EQUALADDRESS (internal_77, internal_80) + lw $t0, 436($sp) + lw $t1, 424($sp) + seq $t2, $t0, $t1 + lw $t0, 420($sp) + sw $t2, 8($t0) + + # IF internal_81 THEN GOTO foreach_ancestor_end_8732623816780 + lw $t0, 420($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8732623816780 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_78] + lw $t0, 444($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 528($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 444($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8732623816780 + j foreach_ancestor_start_8732623816780 + + foreach_ancestor_end_8732623816780: + + # ARRAY internal_68[internal_75] <- internal_78 + lw $t0, 444($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 472($sp) + add $t1, $t1, $t0 + lw $t0, 432($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_75] + lw $t0, 456($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 528($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 456($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8732623816780 + j foreach_type_start_8732623816780 + + foreach_type_end_8732623816780: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 416($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 412($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 408($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 404($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 400($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_85] + lw $t0, 416($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 516($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 416($sp) + addi $sp, $sp, 12 + + foreach_min_start_8732623816780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_82] + lw $t0, 428($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_58] + lw $t0, 524($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 412($sp) + addi $sp, $sp, 12 + + # IF internal_86 THEN GOTO foreach_min_body_8732623816780 + lw $t0, 400($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8732623816780 + + # JUMP TO foreach_min_end_8732623816780 + j foreach_min_end_8732623816780 + + foreach_min_body_8732623816780: + + # internal_84 <- ARRAY internal_68[internal_82] + lw $t0, 416($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 472($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 408($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_84] + lw $t0, 420($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_85] + lw $t0, 416($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 412($sp) + addi $sp, $sp, 12 + + # IF internal_86 THEN GOTO update_min_8732623816780 + lw $t0, 400($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8732623816780 + + # JUMP TO update_min_end_8732623816780 + j update_min_end_8732623816780 + + update_min_8732623816780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_85] + lw $t0, 416($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_84] + lw $t0, 420($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 416($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_83] + lw $t0, 424($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_82] + lw $t0, 428($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 424($sp) + addi $sp, $sp, 12 + + update_min_end_8732623816780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_82] + lw $t0, 428($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 528($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 428($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8732623816780 + j foreach_min_start_8732623816780 + + foreach_min_end_8732623816780: + + # INITIALIZE ARRAY [internal_58] + lw $t0, 512($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 396($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 392($sp) + + # ARRAY internal_87[internal_88] <- internal_56 + lw $t0, 392($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 396($sp) + add $t1, $t1, $t0 + lw $t0, 520($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 388($sp) + + # ARRAY internal_87[internal_89] <- internal_56 + lw $t0, 388($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 396($sp) + add $t1, $t1, $t0 + lw $t0, 520($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 384($sp) + + # ARRAY internal_87[internal_90] <- internal_56 + lw $t0, 384($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 396($sp) + add $t1, $t1, $t0 + lw $t0, 520($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 380($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_85] + lw $t0, 416($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 516($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 392($sp) + addi $sp, $sp, 12 + + # IF internal_91 THEN GOTO error_branch_8732623816780 + lw $t0, 380($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8732623816780 + + # ARRAY internal_87[internal_83] <- internal_57 + lw $t0, 412($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 396($sp) + add $t1, $t1, $t0 + lw $t0, 516($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 376($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 372($sp) + + # internal_92 <- ARRAY internal_87[internal_93] + lw $t0, 372($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 396($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 376($sp) + sw $t0, 8($t2) + + # IF internal_92 THEN GOTO branch_Razz_8732623816780 + lw $t0, 376($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Razz_8732623816780 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 368($sp) + + # internal_92 <- ARRAY internal_87[internal_94] + lw $t0, 368($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 396($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 376($sp) + sw $t0, 8($t2) + + # IF internal_92 THEN GOTO branch_Foo_8732623816780 + lw $t0, 376($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Foo_8732623816780 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 364($sp) + + # internal_92 <- ARRAY internal_87[internal_95] + lw $t0, 364($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 396($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 376($sp) + sw $t0, 8($t2) + + # IF internal_92 THEN GOTO branch_Bar_8732623816780 + lw $t0, 376($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bar_8732623816780 + + branch_Razz_8732623816780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 760($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 572($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 352($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_98] + lw $t0, 360($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 360($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_96] + lw $t0, 372($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_98] + lw $t0, 364($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 372($sp) + addi $sp, $sp, 12 + + # internal_96 <- internal_98 + lw $t0, 352($sp) + sw $t0, 360($sp) + + # JUMP TO branch_end_8732623816780 + j branch_end_8732623816780 + + branch_Foo_8732623816780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 760($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 572($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Razz + li $v0, 9 + lw $a0, type_Razz + syscall + la $t0, type_Razz + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 344($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_100] + lw $t0, 352($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Razz + jal function___init___at_Razz + lw $ra, 4($sp) + sw $v1, 352($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_96] + lw $t0, 372($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_100] + lw $t0, 356($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 372($sp) + addi $sp, $sp, 12 + + # internal_96 <- internal_100 + lw $t0, 344($sp) + sw $t0, 360($sp) + + # JUMP TO branch_end_8732623816780 + j branch_end_8732623816780 + + branch_Bar_8732623816780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 760($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 572($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_96] + lw $t0, 372($sp) + sw $t0, 4($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 372($sp) + addi $sp, $sp, 12 + + # internal_96 <- n + lw $t0, 560($sp) + sw $t0, 360($sp) + + # JUMP TO branch_end_8732623816780 + j branch_end_8732623816780 + + error_branch_8732623816780: + + branch_end_8732623816780: + + # SET ATTRIBUTE a OF self + lw $t0, 748($sp) + lw $t1, 360($sp) + beq $t1, $zero, object_set_attribute_8732623729704 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623729704 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623729704 + j object_set_attribute_8732623729704 + int_set_attribute_8732623729704: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8732623729704 + bool_set_attribute_8732623729704: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8732623729704 + object_set_attribute_8732623729704: + sw $t1, 20($t0) + end_set_attribute_8732623729704: + + # GET ATTRIBUTE a OF self + lw $t0, 748($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623724584 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623724584 + j object_get_attribute_8732623724584 + int_get_attribute_8732623724584: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 336($sp) + j end_get_attribute_8732623724584 + bool_get_attribute_8732623724584: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 336($sp) + j end_get_attribute_8732623724584 + object_get_attribute_8732623724584: + sw $t1, 336($sp) + end_get_attribute_8732623724584: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 328($sp) + + # GET METHOD doh OF Razz + lw $t0, 336($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 328($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 324($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_102] + lw $t0, 344($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_105 + lw $t0, 332($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 340($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE g OF self + lw $t0, 748($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623724638 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623724638 + j object_get_attribute_8732623724638 + int_get_attribute_8732623724638: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 320($sp) + j end_get_attribute_8732623724638 + bool_get_attribute_8732623724638: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 320($sp) + j end_get_attribute_8732623724638 + object_get_attribute_8732623724638: + sw $t1, 320($sp) + end_get_attribute_8732623724638: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 312($sp) + + # GET METHOD doh OF Foo + lw $t0, 320($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 312($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 308($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_106] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_109 + lw $t0, 316($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 324($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_103] + lw $t0, 344($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_107] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 316($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 296($sp) + + # GET METHOD doh OF Bar + lw $t0, 748($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 296($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 292($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 756($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_113 + lw $t0, 300($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 308($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_110] + lw $t0, 316($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_111] + lw $t0, 312($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 280($sp) + + # GET METHOD printh OF Bar + lw $t0, 748($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 280($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 276($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 756($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_117 + lw $t0, 284($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 292($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_114] + lw $t0, 300($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_115] + lw $t0, 296($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 284($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE b OF self + lw $t0, 748($sp) + lw $t1, 272($sp) + beq $t1, $zero, object_set_attribute_8732623732441 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623732441 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623732441 + j object_set_attribute_8732623732441 + int_set_attribute_8732623732441: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8732623732441 + bool_set_attribute_8732623732441: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8732623732441 + object_set_attribute_8732623732441: + sw $t1, 24($t0) + end_set_attribute_8732623732441: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 268($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 264($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 260($sp) + + # ALLOCATING NUll INTO -> internal_122 + sw $zero, 256($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 252($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 248($sp) + + # internal_125 <- TYPEOF self + lw $t0, 748($sp) + lw $t0, 0($t0) + sw $t0, 244($sp) + + # internal_126 <- internal_125 + lw $t0, 244($sp) + sw $t0, 240($sp) + + while_start_8732623821990: + + # internal_124 <- EQUALADDRESS (internal_126, internal_122) + lw $t0, 240($sp) + lw $t1, 256($sp) + seq $t2, $t0, $t1 + lw $t0, 248($sp) + sw $t2, 8($t0) + + # IF internal_124 THEN GOTO while_end_8732623821990 + lw $t0, 248($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8732623821990 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_123] + lw $t0, 264($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 276($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 264($sp) + addi $sp, $sp, 12 + + # internal_126 <- ANCESTOR OF internal_126 + lw $t0, 240($sp) + lw $t0, 4($t0) + sw $t0, 240($sp) + + # JUMP TO while_start_8732623821990 + j while_start_8732623821990 + + while_end_8732623821990: + + # internal_126 <- internal_125 + lw $t0, 244($sp) + sw $t0, 240($sp) + + # INITIALIZE ARRAY [internal_123] + lw $t0, 252($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 236($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 232($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 228($sp) + + foreach_start_8732623821990: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_128] + lw $t0, 244($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_123] + lw $t0, 264($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 240($sp) + addi $sp, $sp, 12 + + # IF internal_129 THEN GOTO foreach_body_8732623821990 + lw $t0, 228($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8732623821990 + + # JUMP TO foreach_end_8732623821990 + j foreach_end_8732623821990 + + foreach_body_8732623821990: + + # ARRAY internal_127[internal_128] <- internal_126 + lw $t0, 232($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 236($sp) + add $t1, $t1, $t0 + lw $t0, 240($sp) + sw $t0, 0($t1) + + # internal_126 <- ANCESTOR OF internal_126 + lw $t0, 240($sp) + lw $t0, 4($t0) + sw $t0, 240($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_128] + lw $t0, 244($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 276($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 244($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8732623821990 + j foreach_start_8732623821990 + + foreach_end_8732623821990: + + # INITIALIZE ARRAY [internal_121] + lw $t0, 260($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 224($sp) + + # INITIALIZE ARRAY [internal_121] + lw $t0, 260($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 220($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 212($sp) + + # internal_132 <- DIRECTION OF Razz + la $t0, type_Razz + sw $t0, 216($sp) + + # ARRAY internal_130[internal_133] <- internal_132 + lw $t0, 212($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 224($sp) + add $t1, $t1, $t0 + lw $t0, 216($sp) + sw $t0, 0($t1) + + # ARRAY internal_131[internal_133] <- internal_123 + lw $t0, 212($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 220($sp) + add $t1, $t1, $t0 + lw $t0, 252($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 204($sp) + + # internal_134 <- DIRECTION OF Bar + la $t0, type_Bar + sw $t0, 208($sp) + + # ARRAY internal_130[internal_135] <- internal_134 + lw $t0, 204($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 224($sp) + add $t1, $t1, $t0 + lw $t0, 208($sp) + sw $t0, 0($t1) + + # ARRAY internal_131[internal_135] <- internal_123 + lw $t0, 204($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 220($sp) + add $t1, $t1, $t0 + lw $t0, 252($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 200($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 196($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 188($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 176($sp) + + foreach_type_start_8732623821990: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_136] + lw $t0, 212($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_121] + lw $t0, 272($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 208($sp) + addi $sp, $sp, 12 + + # IF internal_137 THEN GOTO foreach_type_body_8732623821990 + lw $t0, 196($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8732623821990 + + # JUMP TO foreach_type_end_8732623821990 + j foreach_type_end_8732623821990 + + foreach_type_body_8732623821990: + + # internal_138 <- ARRAY internal_130[internal_136] + lw $t0, 200($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 224($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 192($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_139] + lw $t0, 200($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_119] + lw $t0, 280($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 200($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8732623821990: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_139] + lw $t0, 200($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_123] + lw $t0, 264($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 196($sp) + addi $sp, $sp, 12 + + # IF internal_140 THEN GOTO foreach_ancestor_body_8732623821990 + lw $t0, 184($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8732623821990 + + # JUMP TO foreach_ancestor_end_8732623821990 + j foreach_ancestor_end_8732623821990 + + foreach_ancestor_body_8732623821990: + + # internal_141 <- ARRAY internal_127[internal_139] + lw $t0, 188($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 236($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 180($sp) + + # internal_142 <- EQUALADDRESS (internal_138, internal_141) + lw $t0, 192($sp) + lw $t1, 180($sp) + seq $t2, $t0, $t1 + lw $t0, 176($sp) + sw $t2, 8($t0) + + # IF internal_142 THEN GOTO foreach_ancestor_end_8732623821990 + lw $t0, 176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8732623821990 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_139] + lw $t0, 200($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 276($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 200($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8732623821990 + j foreach_ancestor_start_8732623821990 + + foreach_ancestor_end_8732623821990: + + # ARRAY internal_131[internal_136] <- internal_139 + lw $t0, 200($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 220($sp) + add $t1, $t1, $t0 + lw $t0, 188($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_136] + lw $t0, 212($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 276($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 212($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8732623821990 + j foreach_type_start_8732623821990 + + foreach_type_end_8732623821990: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 172($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 164($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 156($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_146] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_123] + lw $t0, 264($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + foreach_min_start_8732623821990: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_143] + lw $t0, 184($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_121] + lw $t0, 272($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 168($sp) + addi $sp, $sp, 12 + + # IF internal_147 THEN GOTO foreach_min_body_8732623821990 + lw $t0, 156($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8732623821990 + + # JUMP TO foreach_min_end_8732623821990 + j foreach_min_end_8732623821990 + + foreach_min_body_8732623821990: + + # internal_145 <- ARRAY internal_131[internal_143] + lw $t0, 172($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 220($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 164($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_145] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_146] + lw $t0, 172($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 168($sp) + addi $sp, $sp, 12 + + # IF internal_147 THEN GOTO update_min_8732623821990 + lw $t0, 156($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8732623821990 + + # JUMP TO update_min_end_8732623821990 + j update_min_end_8732623821990 + + update_min_8732623821990: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_146] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_145] + lw $t0, 176($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_144] + lw $t0, 180($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_143] + lw $t0, 184($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 180($sp) + addi $sp, $sp, 12 + + update_min_end_8732623821990: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_143] + lw $t0, 184($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 276($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 184($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8732623821990 + j foreach_min_start_8732623821990 + + foreach_min_end_8732623821990: + + # INITIALIZE ARRAY [internal_121] + lw $t0, 260($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 152($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # ARRAY internal_148[internal_149] <- internal_119 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 152($sp) + add $t1, $t1, $t0 + lw $t0, 268($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # ARRAY internal_148[internal_150] <- internal_119 + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 152($sp) + add $t1, $t1, $t0 + lw $t0, 268($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_146] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_123] + lw $t0, 264($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 152($sp) + addi $sp, $sp, 12 + + # IF internal_151 THEN GOTO error_branch_8732623821990 + lw $t0, 140($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8732623821990 + + # ARRAY internal_148[internal_144] <- internal_120 + lw $t0, 168($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 152($sp) + add $t1, $t1, $t0 + lw $t0, 264($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # internal_152 <- ARRAY internal_148[internal_153] + lw $t0, 132($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 152($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 136($sp) + sw $t0, 8($t2) + + # IF internal_152 THEN GOTO branch_Razz_8732623821990 + lw $t0, 136($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Razz_8732623821990 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # internal_152 <- ARRAY internal_148[internal_154] + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 152($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 136($sp) + sw $t0, 8($t2) + + # IF internal_152 THEN GOTO branch_Bar_8732623821990 + lw $t0, 136($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bar_8732623821990 + + branch_Razz_8732623821990: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 760($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 572($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 116($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_157] + lw $t0, 124($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 124($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_155] + lw $t0, 136($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_157] + lw $t0, 128($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 136($sp) + addi $sp, $sp, 12 + + # internal_155 <- internal_157 + lw $t0, 116($sp) + sw $t0, 124($sp) + + # JUMP TO branch_end_8732623821990 + j branch_end_8732623821990 + + branch_Bar_8732623821990: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 760($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 572($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_155] + lw $t0, 136($sp) + sw $t0, 4($sp) + + # ARGUMENT [n] + lw $t0, 572($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 136($sp) + addi $sp, $sp, 12 + + # internal_155 <- n + lw $t0, 560($sp) + sw $t0, 124($sp) + + # JUMP TO branch_end_8732623821990 + j branch_end_8732623821990 + + error_branch_8732623821990: + + branch_end_8732623821990: + + # SET ATTRIBUTE e OF self + lw $t0, 748($sp) + lw $t1, 124($sp) + beq $t1, $zero, object_set_attribute_8732623733002 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623733002 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623733002 + j object_set_attribute_8732623733002 + int_set_attribute_8732623733002: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($t0) + j end_set_attribute_8732623733002 + bool_set_attribute_8732623733002: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($t0) + j end_set_attribute_8732623733002 + object_set_attribute_8732623733002: + sw $t1, 28($t0) + end_set_attribute_8732623733002: + + # GET ATTRIBUTE a OF self + lw $t0, 748($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623735911 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623735911 + j object_get_attribute_8732623735911 + int_get_attribute_8732623735911: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 108($sp) + j end_get_attribute_8732623735911 + bool_get_attribute_8732623735911: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 108($sp) + j end_get_attribute_8732623735911 + object_get_attribute_8732623735911: + sw $t1, 108($sp) + end_get_attribute_8732623735911: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # GET METHOD doh OF Bazz + lw $t0, 108($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 100($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 96($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_159] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_doh_at_Bazz + jal function_doh_at_Bazz + lw $ra, 4($sp) + sw $v1, 112($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE g OF self + lw $t0, 748($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623735965 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623735965 + j object_get_attribute_8732623735965 + int_get_attribute_8732623735965: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 92($sp) + j end_get_attribute_8732623735965 + bool_get_attribute_8732623735965: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 92($sp) + j end_get_attribute_8732623735965 + object_get_attribute_8732623735965: + sw $t1, 92($sp) + end_get_attribute_8732623735965: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD doh OF Foo + lw $t0, 92($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_163] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_166 + lw $t0, 88($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 96($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_160] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_164] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE e OF self + lw $t0, 748($sp) + lw $t1, 28($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623736034 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623736034 + j object_get_attribute_8732623736034 + int_get_attribute_8732623736034: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8732623736034 + bool_get_attribute_8732623736034: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8732623736034 + object_get_attribute_8732623736034: + sw $t1, 72($sp) + end_get_attribute_8732623736034: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD doh OF Bar + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_168] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_171 + lw $t0, 68($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 76($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_167] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_169] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD doh OF Bar + lw $t0, 748($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 756($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_175 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_172] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_173] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET METHOD printh OF Bar + lw $t0, 748($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 32($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 756($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_179 + lw $t0, 36($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 44($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_176] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_177] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE f OF self + lw $t0, 748($sp) + lw $t1, 24($sp) + beq $t1, $zero, object_set_attribute_8732623735821 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623735821 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623735821 + j object_set_attribute_8732623735821 + int_set_attribute_8732623735821: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($t0) + j end_set_attribute_8732623735821 + bool_set_attribute_8732623735821: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($t0) + j end_set_attribute_8732623735821 + object_set_attribute_8732623735821: + sw $t1, 32($t0) + end_set_attribute_8732623735821: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD doh OF Bar + lw $t0, 748($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 756($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_183 + lw $t0, 20($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 28($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE c OF self + lw $t0, 748($sp) + lw $t1, 20($sp) + beq $t1, $zero, object_set_attribute_8732623736718 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623736718 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623736718 + j object_set_attribute_8732623736718 + int_set_attribute_8732623736718: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($t0) + j end_set_attribute_8732623736718 + bool_set_attribute_8732623736718: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($t0) + j end_set_attribute_8732623736718 + object_set_attribute_8732623736718: + sw $t1, 36($t0) + end_set_attribute_8732623736718: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD printh OF Bar + lw $t0, 748($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 756($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_186 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE d OF self + lw $t0, 748($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8732623736766 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623736766 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623736766 + j object_set_attribute_8732623736766 + int_set_attribute_8732623736766: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($t0) + j end_set_attribute_8732623736766 + bool_set_attribute_8732623736766: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($t0) + j end_set_attribute_8732623736766 + object_set_attribute_8732623736766: + sw $t1, 40($t0) + end_set_attribute_8732623736766: + + lw $v1, 748($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 748 + + jr $ra + + function___init___at_Razz: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -724 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 720($sp) + + # SET ATTRIBUTE h OF self + lw $t0, 724($sp) + lw $t1, 720($sp) + beq $t1, $zero, object_set_attribute_8732623737363 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623737363 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623737363 + j object_set_attribute_8732623737363 + int_set_attribute_8732623737363: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623737363 + bool_set_attribute_8732623737363: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623737363 + object_set_attribute_8732623737363: + sw $t1, 8($t0) + end_set_attribute_8732623737363: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 716($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 712($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 708($sp) + + # ALLOCATING NUll INTO -> internal_4 + sw $zero, 704($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 700($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 696($sp) + + # internal_7 <- TYPEOF self + lw $t0, 724($sp) + lw $t0, 0($t0) + sw $t0, 692($sp) + + # internal_8 <- internal_7 + lw $t0, 692($sp) + sw $t0, 688($sp) + + while_start_8732623805886: + + # internal_6 <- EQUALADDRESS (internal_8, internal_4) + lw $t0, 688($sp) + lw $t1, 704($sp) + seq $t2, $t0, $t1 + lw $t0, 696($sp) + sw $t2, 8($t0) + + # IF internal_6 THEN GOTO while_end_8732623805886 + lw $t0, 696($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8732623805886 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_5] + lw $t0, 712($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 724($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 712($sp) + addi $sp, $sp, 12 + + # internal_8 <- ANCESTOR OF internal_8 + lw $t0, 688($sp) + lw $t0, 4($t0) + sw $t0, 688($sp) + + # JUMP TO while_start_8732623805886 + j while_start_8732623805886 + + while_end_8732623805886: + + # internal_8 <- internal_7 + lw $t0, 692($sp) + sw $t0, 688($sp) + + # INITIALIZE ARRAY [internal_5] + lw $t0, 700($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 684($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 680($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 676($sp) + + foreach_start_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 692($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 712($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 688($sp) + addi $sp, $sp, 12 + + # IF internal_11 THEN GOTO foreach_body_8732623805886 + lw $t0, 676($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8732623805886 + + # JUMP TO foreach_end_8732623805886 + j foreach_end_8732623805886 + + foreach_body_8732623805886: + + # ARRAY internal_9[internal_10] <- internal_8 + lw $t0, 680($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 684($sp) + add $t1, $t1, $t0 + lw $t0, 688($sp) + sw $t0, 0($t1) + + # internal_8 <- ANCESTOR OF internal_8 + lw $t0, 688($sp) + lw $t0, 4($t0) + sw $t0, 688($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 692($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 724($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 692($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8732623805886 + j foreach_start_8732623805886 + + foreach_end_8732623805886: + + # INITIALIZE ARRAY [internal_3] + lw $t0, 708($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 672($sp) + + # INITIALIZE ARRAY [internal_3] + lw $t0, 708($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 668($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 660($sp) + + # internal_14 <- DIRECTION OF Bazz + la $t0, type_Bazz + sw $t0, 664($sp) + + # ARRAY internal_12[internal_15] <- internal_14 + lw $t0, 660($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 672($sp) + add $t1, $t1, $t0 + lw $t0, 664($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_15] <- internal_5 + lw $t0, 660($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 668($sp) + add $t1, $t1, $t0 + lw $t0, 700($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 652($sp) + + # internal_16 <- DIRECTION OF Razz + la $t0, type_Razz + sw $t0, 656($sp) + + # ARRAY internal_12[internal_17] <- internal_16 + lw $t0, 652($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 672($sp) + add $t1, $t1, $t0 + lw $t0, 656($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_17] <- internal_5 + lw $t0, 652($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 668($sp) + add $t1, $t1, $t0 + lw $t0, 700($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 644($sp) + + # internal_18 <- DIRECTION OF Foo + la $t0, type_Foo + sw $t0, 648($sp) + + # ARRAY internal_12[internal_19] <- internal_18 + lw $t0, 644($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 672($sp) + add $t1, $t1, $t0 + lw $t0, 648($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_19] <- internal_5 + lw $t0, 644($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 668($sp) + add $t1, $t1, $t0 + lw $t0, 700($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 636($sp) + + # internal_20 <- DIRECTION OF Bar + la $t0, type_Bar + sw $t0, 640($sp) + + # ARRAY internal_12[internal_21] <- internal_20 + lw $t0, 636($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 672($sp) + add $t1, $t1, $t0 + lw $t0, 640($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_21] <- internal_5 + lw $t0, 636($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 668($sp) + add $t1, $t1, $t0 + lw $t0, 700($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 632($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 628($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 620($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 616($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 608($sp) + + foreach_type_start_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_22] + lw $t0, 644($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 720($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 640($sp) + addi $sp, $sp, 12 + + # IF internal_23 THEN GOTO foreach_type_body_8732623805886 + lw $t0, 628($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8732623805886 + + # JUMP TO foreach_type_end_8732623805886 + j foreach_type_end_8732623805886 + + foreach_type_body_8732623805886: + + # internal_24 <- ARRAY internal_12[internal_22] + lw $t0, 632($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 672($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 624($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 632($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 728($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 632($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 632($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 712($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 628($sp) + addi $sp, $sp, 12 + + # IF internal_26 THEN GOTO foreach_ancestor_body_8732623805886 + lw $t0, 616($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8732623805886 + + # JUMP TO foreach_ancestor_end_8732623805886 + j foreach_ancestor_end_8732623805886 + + foreach_ancestor_body_8732623805886: + + # internal_27 <- ARRAY internal_9[internal_25] + lw $t0, 620($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 684($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 612($sp) + + # internal_28 <- EQUALADDRESS (internal_24, internal_27) + lw $t0, 624($sp) + lw $t1, 612($sp) + seq $t2, $t0, $t1 + lw $t0, 608($sp) + sw $t2, 8($t0) + + # IF internal_28 THEN GOTO foreach_ancestor_end_8732623805886 + lw $t0, 608($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8732623805886 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 632($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 724($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 632($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8732623805886 + j foreach_ancestor_start_8732623805886 + + foreach_ancestor_end_8732623805886: + + # ARRAY internal_13[internal_22] <- internal_25 + lw $t0, 632($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 668($sp) + add $t1, $t1, $t0 + lw $t0, 620($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_22] + lw $t0, 644($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 724($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 644($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8732623805886 + j foreach_type_start_8732623805886 + + foreach_type_end_8732623805886: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 604($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 600($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 596($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 592($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 588($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 604($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 712($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 604($sp) + addi $sp, $sp, 12 + + foreach_min_start_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 616($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 720($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 600($sp) + addi $sp, $sp, 12 + + # IF internal_33 THEN GOTO foreach_min_body_8732623805886 + lw $t0, 588($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8732623805886 + + # JUMP TO foreach_min_end_8732623805886 + j foreach_min_end_8732623805886 + + foreach_min_body_8732623805886: + + # internal_31 <- ARRAY internal_13[internal_29] + lw $t0, 604($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 668($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 596($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 608($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 604($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 600($sp) + addi $sp, $sp, 12 + + # IF internal_33 THEN GOTO update_min_8732623805886 + lw $t0, 588($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8732623805886 + + # JUMP TO update_min_end_8732623805886 + j update_min_end_8732623805886 + + update_min_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 604($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_31] + lw $t0, 608($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 604($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_30] + lw $t0, 612($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 616($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 612($sp) + addi $sp, $sp, 12 + + update_min_end_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 616($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 724($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 616($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8732623805886 + j foreach_min_start_8732623805886 + + foreach_min_end_8732623805886: + + # INITIALIZE ARRAY [internal_3] + lw $t0, 708($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 584($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 580($sp) + + # ARRAY internal_34[internal_35] <- internal_1 + lw $t0, 580($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 584($sp) + add $t1, $t1, $t0 + lw $t0, 716($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 576($sp) + + # ARRAY internal_34[internal_36] <- internal_1 + lw $t0, 576($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 584($sp) + add $t1, $t1, $t0 + lw $t0, 716($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 572($sp) + + # ARRAY internal_34[internal_37] <- internal_1 + lw $t0, 572($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 584($sp) + add $t1, $t1, $t0 + lw $t0, 716($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 568($sp) + + # ARRAY internal_34[internal_38] <- internal_1 + lw $t0, 568($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 584($sp) + add $t1, $t1, $t0 + lw $t0, 716($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 564($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 604($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 712($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 576($sp) + addi $sp, $sp, 12 + + # IF internal_39 THEN GOTO error_branch_8732623805886 + lw $t0, 564($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8732623805886 + + # ARRAY internal_34[internal_30] <- internal_2 + lw $t0, 600($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 584($sp) + add $t1, $t1, $t0 + lw $t0, 712($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 560($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 556($sp) + + # internal_40 <- ARRAY internal_34[internal_41] + lw $t0, 556($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 584($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 560($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Bazz_8732623805886 + lw $t0, 560($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bazz_8732623805886 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 552($sp) + + # internal_40 <- ARRAY internal_34[internal_42] + lw $t0, 552($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 584($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 560($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Razz_8732623805886 + lw $t0, 560($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Razz_8732623805886 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 548($sp) + + # internal_40 <- ARRAY internal_34[internal_43] + lw $t0, 548($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 584($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 560($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Foo_8732623805886 + lw $t0, 560($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Foo_8732623805886 + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 544($sp) + + # internal_40 <- ARRAY internal_34[internal_44] + lw $t0, 544($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 584($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 560($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Bar_8732623805886 + lw $t0, 560($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bar_8732623805886 + + branch_Bazz_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 548($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Foo + li $v0, 9 + lw $a0, type_Foo + syscall + la $t0, type_Foo + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 532($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 540($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Foo + jal function___init___at_Foo + lw $ra, 4($sp) + sw $v1, 540($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 552($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 544($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 552($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_47 + lw $t0, 532($sp) + sw $t0, 540($sp) + + # JUMP TO branch_end_8732623805886 + j branch_end_8732623805886 + + branch_Razz_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 548($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 524($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 532($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 532($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 552($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 536($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 552($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_49 + lw $t0, 524($sp) + sw $t0, 540($sp) + + # JUMP TO branch_end_8732623805886 + j branch_end_8732623805886 + + branch_Foo_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 548($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Razz + li $v0, 9 + lw $a0, type_Razz + syscall + la $t0, type_Razz + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 516($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 524($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Razz + jal function___init___at_Razz + lw $ra, 4($sp) + sw $v1, 524($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 552($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 528($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 552($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_51 + lw $t0, 516($sp) + sw $t0, 540($sp) + + # JUMP TO branch_end_8732623805886 + j branch_end_8732623805886 + + branch_Bar_8732623805886: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 548($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 552($sp) + sw $t0, 4($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 552($sp) + addi $sp, $sp, 12 + + # internal_45 <- n + lw $t0, 536($sp) + sw $t0, 540($sp) + + # JUMP TO branch_end_8732623805886 + j branch_end_8732623805886 + + error_branch_8732623805886: + + branch_end_8732623805886: + + # SET ATTRIBUTE g OF self + lw $t0, 724($sp) + lw $t1, 540($sp) + beq $t1, $zero, object_set_attribute_8732623737387 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623737387 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623737387 + j object_set_attribute_8732623737387 + int_set_attribute_8732623737387: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623737387 + bool_set_attribute_8732623737387: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623737387 + object_set_attribute_8732623737387: + sw $t1, 12($t0) + end_set_attribute_8732623737387: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 504($sp) + + # GET METHOD printh OF Razz + lw $t0, 724($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 504($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 500($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 732($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_55 + lw $t0, 508($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 516($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE i OF self + lw $t0, 724($sp) + lw $t1, 508($sp) + beq $t1, $zero, object_set_attribute_8732623707799 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623707799 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623707799 + j object_set_attribute_8732623707799 + int_set_attribute_8732623707799: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623707799 + bool_set_attribute_8732623707799: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623707799 + object_set_attribute_8732623707799: + sw $t1, 16($t0) + end_set_attribute_8732623707799: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 496($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 492($sp) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 488($sp) + + # ALLOCATING NUll INTO -> internal_59 + sw $zero, 484($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 480($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 476($sp) + + # internal_62 <- TYPEOF self + lw $t0, 724($sp) + lw $t0, 0($t0) + sw $t0, 472($sp) + + # internal_63 <- internal_62 + lw $t0, 472($sp) + sw $t0, 468($sp) + + while_start_8732623777844: + + # internal_61 <- EQUALADDRESS (internal_63, internal_59) + lw $t0, 468($sp) + lw $t1, 484($sp) + seq $t2, $t0, $t1 + lw $t0, 476($sp) + sw $t2, 8($t0) + + # IF internal_61 THEN GOTO while_end_8732623777844 + lw $t0, 476($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8732623777844 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_60] + lw $t0, 492($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 504($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 492($sp) + addi $sp, $sp, 12 + + # internal_63 <- ANCESTOR OF internal_63 + lw $t0, 468($sp) + lw $t0, 4($t0) + sw $t0, 468($sp) + + # JUMP TO while_start_8732623777844 + j while_start_8732623777844 + + while_end_8732623777844: + + # internal_63 <- internal_62 + lw $t0, 472($sp) + sw $t0, 468($sp) + + # INITIALIZE ARRAY [internal_60] + lw $t0, 480($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 464($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 460($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 456($sp) + + foreach_start_8732623777844: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_65] + lw $t0, 472($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 492($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 468($sp) + addi $sp, $sp, 12 + + # IF internal_66 THEN GOTO foreach_body_8732623777844 + lw $t0, 456($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8732623777844 + + # JUMP TO foreach_end_8732623777844 + j foreach_end_8732623777844 + + foreach_body_8732623777844: + + # ARRAY internal_64[internal_65] <- internal_63 + lw $t0, 460($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 464($sp) + add $t1, $t1, $t0 + lw $t0, 468($sp) + sw $t0, 0($t1) + + # internal_63 <- ANCESTOR OF internal_63 + lw $t0, 468($sp) + lw $t0, 4($t0) + sw $t0, 468($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_65] + lw $t0, 472($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 504($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 472($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8732623777844 + j foreach_start_8732623777844 + + foreach_end_8732623777844: + + # INITIALIZE ARRAY [internal_58] + lw $t0, 488($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 452($sp) + + # INITIALIZE ARRAY [internal_58] + lw $t0, 488($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 448($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 440($sp) + + # internal_69 <- DIRECTION OF Razz + la $t0, type_Razz + sw $t0, 444($sp) + + # ARRAY internal_67[internal_70] <- internal_69 + lw $t0, 440($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 452($sp) + add $t1, $t1, $t0 + lw $t0, 444($sp) + sw $t0, 0($t1) + + # ARRAY internal_68[internal_70] <- internal_60 + lw $t0, 440($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 448($sp) + add $t1, $t1, $t0 + lw $t0, 480($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 432($sp) + + # internal_71 <- DIRECTION OF Foo + la $t0, type_Foo + sw $t0, 436($sp) + + # ARRAY internal_67[internal_72] <- internal_71 + lw $t0, 432($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 452($sp) + add $t1, $t1, $t0 + lw $t0, 436($sp) + sw $t0, 0($t1) + + # ARRAY internal_68[internal_72] <- internal_60 + lw $t0, 432($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 448($sp) + add $t1, $t1, $t0 + lw $t0, 480($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 424($sp) + + # internal_73 <- DIRECTION OF Bar + la $t0, type_Bar + sw $t0, 428($sp) + + # ARRAY internal_67[internal_74] <- internal_73 + lw $t0, 424($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 452($sp) + add $t1, $t1, $t0 + lw $t0, 428($sp) + sw $t0, 0($t1) + + # ARRAY internal_68[internal_74] <- internal_60 + lw $t0, 424($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 448($sp) + add $t1, $t1, $t0 + lw $t0, 480($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 420($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 416($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 408($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 404($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 396($sp) + + foreach_type_start_8732623777844: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_75] + lw $t0, 432($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_58] + lw $t0, 500($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 428($sp) + addi $sp, $sp, 12 + + # IF internal_76 THEN GOTO foreach_type_body_8732623777844 + lw $t0, 416($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8732623777844 + + # JUMP TO foreach_type_end_8732623777844 + j foreach_type_end_8732623777844 + + foreach_type_body_8732623777844: + + # internal_77 <- ARRAY internal_67[internal_75] + lw $t0, 420($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 452($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 412($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_78] + lw $t0, 420($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_56] + lw $t0, 508($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 420($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8732623777844: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_78] + lw $t0, 420($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 492($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 416($sp) + addi $sp, $sp, 12 + + # IF internal_79 THEN GOTO foreach_ancestor_body_8732623777844 + lw $t0, 404($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8732623777844 + + # JUMP TO foreach_ancestor_end_8732623777844 + j foreach_ancestor_end_8732623777844 + + foreach_ancestor_body_8732623777844: + + # internal_80 <- ARRAY internal_64[internal_78] + lw $t0, 408($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 464($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 400($sp) + + # internal_81 <- EQUALADDRESS (internal_77, internal_80) + lw $t0, 412($sp) + lw $t1, 400($sp) + seq $t2, $t0, $t1 + lw $t0, 396($sp) + sw $t2, 8($t0) + + # IF internal_81 THEN GOTO foreach_ancestor_end_8732623777844 + lw $t0, 396($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8732623777844 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_78] + lw $t0, 420($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 504($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 420($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8732623777844 + j foreach_ancestor_start_8732623777844 + + foreach_ancestor_end_8732623777844: + + # ARRAY internal_68[internal_75] <- internal_78 + lw $t0, 420($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 448($sp) + add $t1, $t1, $t0 + lw $t0, 408($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_75] + lw $t0, 432($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 504($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 432($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8732623777844 + j foreach_type_start_8732623777844 + + foreach_type_end_8732623777844: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 392($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 388($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 384($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 380($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 376($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_85] + lw $t0, 392($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 492($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 392($sp) + addi $sp, $sp, 12 + + foreach_min_start_8732623777844: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_82] + lw $t0, 404($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_58] + lw $t0, 500($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 388($sp) + addi $sp, $sp, 12 + + # IF internal_86 THEN GOTO foreach_min_body_8732623777844 + lw $t0, 376($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8732623777844 + + # JUMP TO foreach_min_end_8732623777844 + j foreach_min_end_8732623777844 + + foreach_min_body_8732623777844: + + # internal_84 <- ARRAY internal_68[internal_82] + lw $t0, 392($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 448($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 384($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_84] + lw $t0, 396($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_85] + lw $t0, 392($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 388($sp) + addi $sp, $sp, 12 + + # IF internal_86 THEN GOTO update_min_8732623777844 + lw $t0, 376($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8732623777844 + + # JUMP TO update_min_end_8732623777844 + j update_min_end_8732623777844 + + update_min_8732623777844: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_85] + lw $t0, 392($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_84] + lw $t0, 396($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 392($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_83] + lw $t0, 400($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_82] + lw $t0, 404($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 400($sp) + addi $sp, $sp, 12 + + update_min_end_8732623777844: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_82] + lw $t0, 404($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 504($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 404($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8732623777844 + j foreach_min_start_8732623777844 + + foreach_min_end_8732623777844: + + # INITIALIZE ARRAY [internal_58] + lw $t0, 488($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 372($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 368($sp) + + # ARRAY internal_87[internal_88] <- internal_56 + lw $t0, 368($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 372($sp) + add $t1, $t1, $t0 + lw $t0, 496($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 364($sp) + + # ARRAY internal_87[internal_89] <- internal_56 + lw $t0, 364($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 372($sp) + add $t1, $t1, $t0 + lw $t0, 496($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 360($sp) + + # ARRAY internal_87[internal_90] <- internal_56 + lw $t0, 360($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 372($sp) + add $t1, $t1, $t0 + lw $t0, 496($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 356($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_85] + lw $t0, 392($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_60] + lw $t0, 492($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 368($sp) + addi $sp, $sp, 12 + + # IF internal_91 THEN GOTO error_branch_8732623777844 + lw $t0, 356($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8732623777844 + + # ARRAY internal_87[internal_83] <- internal_57 + lw $t0, 388($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 372($sp) + add $t1, $t1, $t0 + lw $t0, 492($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 352($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 348($sp) + + # internal_92 <- ARRAY internal_87[internal_93] + lw $t0, 348($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 372($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 352($sp) + sw $t0, 8($t2) + + # IF internal_92 THEN GOTO branch_Razz_8732623777844 + lw $t0, 352($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Razz_8732623777844 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 344($sp) + + # internal_92 <- ARRAY internal_87[internal_94] + lw $t0, 344($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 372($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 352($sp) + sw $t0, 8($t2) + + # IF internal_92 THEN GOTO branch_Foo_8732623777844 + lw $t0, 352($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Foo_8732623777844 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 340($sp) + + # internal_92 <- ARRAY internal_87[internal_95] + lw $t0, 340($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 372($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 352($sp) + sw $t0, 8($t2) + + # IF internal_92 THEN GOTO branch_Bar_8732623777844 + lw $t0, 352($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bar_8732623777844 + + branch_Razz_8732623777844: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 548($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 328($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_98] + lw $t0, 336($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 336($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_96] + lw $t0, 348($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_98] + lw $t0, 340($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 348($sp) + addi $sp, $sp, 12 + + # internal_96 <- internal_98 + lw $t0, 328($sp) + sw $t0, 336($sp) + + # JUMP TO branch_end_8732623777844 + j branch_end_8732623777844 + + branch_Foo_8732623777844: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 548($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Razz + li $v0, 9 + lw $a0, type_Razz + syscall + la $t0, type_Razz + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 320($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_100] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Razz + jal function___init___at_Razz + lw $ra, 4($sp) + sw $v1, 328($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_96] + lw $t0, 348($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_100] + lw $t0, 332($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 348($sp) + addi $sp, $sp, 12 + + # internal_96 <- internal_100 + lw $t0, 320($sp) + sw $t0, 336($sp) + + # JUMP TO branch_end_8732623777844 + j branch_end_8732623777844 + + branch_Bar_8732623777844: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 548($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_96] + lw $t0, 348($sp) + sw $t0, 4($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 348($sp) + addi $sp, $sp, 12 + + # internal_96 <- n + lw $t0, 536($sp) + sw $t0, 336($sp) + + # JUMP TO branch_end_8732623777844 + j branch_end_8732623777844 + + error_branch_8732623777844: + + branch_end_8732623777844: + + # SET ATTRIBUTE a OF self + lw $t0, 724($sp) + lw $t1, 336($sp) + beq $t1, $zero, object_set_attribute_8732623707847 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623707847 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623707847 + j object_set_attribute_8732623707847 + int_set_attribute_8732623707847: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8732623707847 + bool_set_attribute_8732623707847: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8732623707847 + object_set_attribute_8732623707847: + sw $t1, 20($t0) + end_set_attribute_8732623707847: + + # GET ATTRIBUTE a OF self + lw $t0, 724($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623710666 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623710666 + j object_get_attribute_8732623710666 + int_get_attribute_8732623710666: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 312($sp) + j end_get_attribute_8732623710666 + bool_get_attribute_8732623710666: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 312($sp) + j end_get_attribute_8732623710666 + object_get_attribute_8732623710666: + sw $t1, 312($sp) + end_get_attribute_8732623710666: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 304($sp) + + # GET METHOD doh OF Razz + lw $t0, 312($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 304($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 300($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_102] + lw $t0, 320($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_105 + lw $t0, 308($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 316($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE g OF self + lw $t0, 724($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623710980 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623710980 + j object_get_attribute_8732623710980 + int_get_attribute_8732623710980: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 296($sp) + j end_get_attribute_8732623710980 + bool_get_attribute_8732623710980: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 296($sp) + j end_get_attribute_8732623710980 + object_get_attribute_8732623710980: + sw $t1, 296($sp) + end_get_attribute_8732623710980: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 288($sp) + + # GET METHOD doh OF Foo + lw $t0, 296($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 288($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 284($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_106] + lw $t0, 304($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_109 + lw $t0, 292($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 300($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_103] + lw $t0, 320($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_107] + lw $t0, 304($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 292($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 272($sp) + + # GET METHOD doh OF Razz + lw $t0, 724($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 272($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 268($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 732($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_113 + lw $t0, 276($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 284($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_110] + lw $t0, 292($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_111] + lw $t0, 288($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 276($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 256($sp) + + # GET METHOD printh OF Razz + lw $t0, 724($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 256($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 252($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 732($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_117 + lw $t0, 260($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 268($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_114] + lw $t0, 276($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_115] + lw $t0, 272($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 260($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE b OF self + lw $t0, 724($sp) + lw $t1, 248($sp) + beq $t1, $zero, object_set_attribute_8732623710591 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623710591 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623710591 + j object_set_attribute_8732623710591 + int_set_attribute_8732623710591: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8732623710591 + bool_set_attribute_8732623710591: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8732623710591 + object_set_attribute_8732623710591: + sw $t1, 24($t0) + end_set_attribute_8732623710591: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 244($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 240($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 236($sp) + + # ALLOCATING NUll INTO -> internal_122 + sw $zero, 232($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 228($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 224($sp) + + # internal_125 <- TYPEOF self + lw $t0, 724($sp) + lw $t0, 0($t0) + sw $t0, 220($sp) + + # internal_126 <- internal_125 + lw $t0, 220($sp) + sw $t0, 216($sp) + + while_start_8732623777871: + + # internal_124 <- EQUALADDRESS (internal_126, internal_122) + lw $t0, 216($sp) + lw $t1, 232($sp) + seq $t2, $t0, $t1 + lw $t0, 224($sp) + sw $t2, 8($t0) + + # IF internal_124 THEN GOTO while_end_8732623777871 + lw $t0, 224($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8732623777871 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_123] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 252($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 240($sp) + addi $sp, $sp, 12 + + # internal_126 <- ANCESTOR OF internal_126 + lw $t0, 216($sp) + lw $t0, 4($t0) + sw $t0, 216($sp) + + # JUMP TO while_start_8732623777871 + j while_start_8732623777871 + + while_end_8732623777871: + + # internal_126 <- internal_125 + lw $t0, 220($sp) + sw $t0, 216($sp) + + # INITIALIZE ARRAY [internal_123] + lw $t0, 228($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 212($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 204($sp) + + foreach_start_8732623777871: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_128] + lw $t0, 220($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_123] + lw $t0, 240($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 216($sp) + addi $sp, $sp, 12 + + # IF internal_129 THEN GOTO foreach_body_8732623777871 + lw $t0, 204($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8732623777871 + + # JUMP TO foreach_end_8732623777871 + j foreach_end_8732623777871 + + foreach_body_8732623777871: + + # ARRAY internal_127[internal_128] <- internal_126 + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 212($sp) + add $t1, $t1, $t0 + lw $t0, 216($sp) + sw $t0, 0($t1) + + # internal_126 <- ANCESTOR OF internal_126 + lw $t0, 216($sp) + lw $t0, 4($t0) + sw $t0, 216($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_128] + lw $t0, 220($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 252($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 220($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8732623777871 + j foreach_start_8732623777871 + + foreach_end_8732623777871: + + # INITIALIZE ARRAY [internal_121] + lw $t0, 236($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 200($sp) + + # INITIALIZE ARRAY [internal_121] + lw $t0, 236($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 196($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 188($sp) + + # internal_132 <- DIRECTION OF Razz + la $t0, type_Razz + sw $t0, 192($sp) + + # ARRAY internal_130[internal_133] <- internal_132 + lw $t0, 188($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 200($sp) + add $t1, $t1, $t0 + lw $t0, 192($sp) + sw $t0, 0($t1) + + # ARRAY internal_131[internal_133] <- internal_123 + lw $t0, 188($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 196($sp) + add $t1, $t1, $t0 + lw $t0, 228($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 180($sp) + + # internal_134 <- DIRECTION OF Bar + la $t0, type_Bar + sw $t0, 184($sp) + + # ARRAY internal_130[internal_135] <- internal_134 + lw $t0, 180($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 200($sp) + add $t1, $t1, $t0 + lw $t0, 184($sp) + sw $t0, 0($t1) + + # ARRAY internal_131[internal_135] <- internal_123 + lw $t0, 180($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 196($sp) + add $t1, $t1, $t0 + lw $t0, 228($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 172($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 164($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 152($sp) + + foreach_type_start_8732623777871: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_136] + lw $t0, 188($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_121] + lw $t0, 248($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 184($sp) + addi $sp, $sp, 12 + + # IF internal_137 THEN GOTO foreach_type_body_8732623777871 + lw $t0, 172($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8732623777871 + + # JUMP TO foreach_type_end_8732623777871 + j foreach_type_end_8732623777871 + + foreach_type_body_8732623777871: + + # internal_138 <- ARRAY internal_130[internal_136] + lw $t0, 176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 200($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 168($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_139] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_119] + lw $t0, 256($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 176($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8732623777871: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_139] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_123] + lw $t0, 240($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # IF internal_140 THEN GOTO foreach_ancestor_body_8732623777871 + lw $t0, 160($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8732623777871 + + # JUMP TO foreach_ancestor_end_8732623777871 + j foreach_ancestor_end_8732623777871 + + foreach_ancestor_body_8732623777871: + + # internal_141 <- ARRAY internal_127[internal_139] + lw $t0, 164($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 212($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 156($sp) + + # internal_142 <- EQUALADDRESS (internal_138, internal_141) + lw $t0, 168($sp) + lw $t1, 156($sp) + seq $t2, $t0, $t1 + lw $t0, 152($sp) + sw $t2, 8($t0) + + # IF internal_142 THEN GOTO foreach_ancestor_end_8732623777871 + lw $t0, 152($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8732623777871 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_139] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 252($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 176($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8732623777871 + j foreach_ancestor_start_8732623777871 + + foreach_ancestor_end_8732623777871: + + # ARRAY internal_131[internal_136] <- internal_139 + lw $t0, 176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 196($sp) + add $t1, $t1, $t0 + lw $t0, 164($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_136] + lw $t0, 188($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 252($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 188($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8732623777871 + j foreach_type_start_8732623777871 + + foreach_type_end_8732623777871: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 140($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_146] + lw $t0, 148($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_123] + lw $t0, 240($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 148($sp) + addi $sp, $sp, 12 + + foreach_min_start_8732623777871: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_143] + lw $t0, 160($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_121] + lw $t0, 248($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # IF internal_147 THEN GOTO foreach_min_body_8732623777871 + lw $t0, 132($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8732623777871 + + # JUMP TO foreach_min_end_8732623777871 + j foreach_min_end_8732623777871 + + foreach_min_body_8732623777871: + + # internal_145 <- ARRAY internal_131[internal_143] + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 196($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 140($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_145] + lw $t0, 152($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_146] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # IF internal_147 THEN GOTO update_min_8732623777871 + lw $t0, 132($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8732623777871 + + # JUMP TO update_min_end_8732623777871 + j update_min_end_8732623777871 + + update_min_8732623777871: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_146] + lw $t0, 148($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_145] + lw $t0, 152($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 148($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_144] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_143] + lw $t0, 160($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 156($sp) + addi $sp, $sp, 12 + + update_min_end_8732623777871: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_143] + lw $t0, 160($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_120] + lw $t0, 252($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 160($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8732623777871 + j foreach_min_start_8732623777871 + + foreach_min_end_8732623777871: + + # INITIALIZE ARRAY [internal_121] + lw $t0, 236($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 128($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # ARRAY internal_148[internal_149] <- internal_119 + lw $t0, 124($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 128($sp) + add $t1, $t1, $t0 + lw $t0, 244($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # ARRAY internal_148[internal_150] <- internal_119 + lw $t0, 120($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 128($sp) + add $t1, $t1, $t0 + lw $t0, 244($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_146] + lw $t0, 148($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_123] + lw $t0, 240($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # IF internal_151 THEN GOTO error_branch_8732623777871 + lw $t0, 116($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8732623777871 + + # ARRAY internal_148[internal_144] <- internal_120 + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 128($sp) + add $t1, $t1, $t0 + lw $t0, 240($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # internal_152 <- ARRAY internal_148[internal_153] + lw $t0, 108($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 128($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 112($sp) + sw $t0, 8($t2) + + # IF internal_152 THEN GOTO branch_Razz_8732623777871 + lw $t0, 112($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Razz_8732623777871 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # internal_152 <- ARRAY internal_148[internal_154] + lw $t0, 104($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 128($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 112($sp) + sw $t0, 8($t2) + + # IF internal_152 THEN GOTO branch_Bar_8732623777871 + lw $t0, 112($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bar_8732623777871 + + branch_Razz_8732623777871: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 548($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_157] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 100($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_155] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_157] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # internal_155 <- internal_157 + lw $t0, 92($sp) + sw $t0, 100($sp) + + # JUMP TO branch_end_8732623777871 + j branch_end_8732623777871 + + branch_Bar_8732623777871: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 736($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 548($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_155] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [n] + lw $t0, 548($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # internal_155 <- n + lw $t0, 536($sp) + sw $t0, 100($sp) + + # JUMP TO branch_end_8732623777871 + j branch_end_8732623777871 + + error_branch_8732623777871: + + branch_end_8732623777871: + + # SET ATTRIBUTE e OF self + lw $t0, 724($sp) + lw $t1, 100($sp) + beq $t1, $zero, object_set_attribute_8732623711148 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623711148 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623711148 + j object_set_attribute_8732623711148 + int_set_attribute_8732623711148: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($t0) + j end_set_attribute_8732623711148 + bool_set_attribute_8732623711148: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($t0) + j end_set_attribute_8732623711148 + object_set_attribute_8732623711148: + sw $t1, 28($t0) + end_set_attribute_8732623711148: + + # GET ATTRIBUTE a OF self + lw $t0, 724($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623714061 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623714061 + j object_get_attribute_8732623714061 + int_get_attribute_8732623714061: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 84($sp) + j end_get_attribute_8732623714061 + bool_get_attribute_8732623714061: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 84($sp) + j end_get_attribute_8732623714061 + object_get_attribute_8732623714061: + sw $t1, 84($sp) + end_get_attribute_8732623714061: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # GET METHOD doh OF Bazz + lw $t0, 84($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 76($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 72($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_159] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_doh_at_Bazz + jal function_doh_at_Bazz + lw $ra, 4($sp) + sw $v1, 88($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE g OF self + lw $t0, 724($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623714115 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623714115 + j object_get_attribute_8732623714115 + int_get_attribute_8732623714115: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8732623714115 + bool_get_attribute_8732623714115: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8732623714115 + object_get_attribute_8732623714115: + sw $t1, 68($sp) + end_get_attribute_8732623714115: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # GET METHOD doh OF Foo + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 60($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_163] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_166 + lw $t0, 64($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 72($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_160] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_164] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE e OF self + lw $t0, 724($sp) + lw $t1, 28($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623714184 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623714184 + j object_get_attribute_8732623714184 + int_get_attribute_8732623714184: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8732623714184 + bool_get_attribute_8732623714184: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8732623714184 + object_get_attribute_8732623714184: + sw $t1, 48($sp) + end_get_attribute_8732623714184: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD doh OF Bar + lw $t0, 48($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_168] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_171 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 52($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_167] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_169] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD doh OF Razz + lw $t0, 724($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 732($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_175 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 36($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_172] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_173] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD printh OF Razz + lw $t0, 724($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 732($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_179 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_176] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_177] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE f OF self + lw $t0, 724($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8732623713711 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623713711 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623713711 + j object_set_attribute_8732623713711 + int_set_attribute_8732623713711: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($t0) + j end_set_attribute_8732623713711 + bool_set_attribute_8732623713711: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($t0) + j end_set_attribute_8732623713711 + object_set_attribute_8732623713711: + sw $t1, 32($t0) + end_set_attribute_8732623713711: + + lw $v1, 724($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 724 + + jr $ra + + function___init___at_Bazz: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -224 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 220($sp) + + # SET ATTRIBUTE h OF self + lw $t0, 224($sp) + lw $t1, 220($sp) + beq $t1, $zero, object_set_attribute_8732623714633 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623714633 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623714633 + j object_set_attribute_8732623714633 + int_set_attribute_8732623714633: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623714633 + bool_set_attribute_8732623714633: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623714633 + object_set_attribute_8732623714633: + sw $t1, 8($t0) + end_set_attribute_8732623714633: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 216($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 212($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # ALLOCATING NUll INTO -> internal_4 + sw $zero, 204($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 200($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 196($sp) + + # internal_7 <- TYPEOF self + lw $t0, 224($sp) + lw $t0, 0($t0) + sw $t0, 192($sp) + + # internal_8 <- internal_7 + lw $t0, 192($sp) + sw $t0, 188($sp) + + while_start_8732623758409: + + # internal_6 <- EQUALADDRESS (internal_8, internal_4) + lw $t0, 188($sp) + lw $t1, 204($sp) + seq $t2, $t0, $t1 + lw $t0, 196($sp) + sw $t2, 8($t0) + + # IF internal_6 THEN GOTO while_end_8732623758409 + lw $t0, 196($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_end_8732623758409 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_5] + lw $t0, 212($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 212($sp) + addi $sp, $sp, 12 + + # internal_8 <- ANCESTOR OF internal_8 + lw $t0, 188($sp) + lw $t0, 4($t0) + sw $t0, 188($sp) + + # JUMP TO while_start_8732623758409 + j while_start_8732623758409 + + while_end_8732623758409: + + # internal_8 <- internal_7 + lw $t0, 192($sp) + sw $t0, 188($sp) + + # INITIALIZE ARRAY [internal_5] + lw $t0, 200($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 184($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 180($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 176($sp) + + foreach_start_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 192($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 188($sp) + addi $sp, $sp, 12 + + # IF internal_11 THEN GOTO foreach_body_8732623758409 + lw $t0, 176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_body_8732623758409 + + # JUMP TO foreach_end_8732623758409 + j foreach_end_8732623758409 + + foreach_body_8732623758409: + + # ARRAY internal_9[internal_10] <- internal_8 + lw $t0, 180($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 184($sp) + add $t1, $t1, $t0 + lw $t0, 188($sp) + sw $t0, 0($t1) + + # internal_8 <- ANCESTOR OF internal_8 + lw $t0, 188($sp) + lw $t0, 4($t0) + sw $t0, 188($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 192($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_start_8732623758409 + j foreach_start_8732623758409 + + foreach_end_8732623758409: + + # INITIALIZE ARRAY [internal_3] + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 172($sp) + + # INITIALIZE ARRAY [internal_3] + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 168($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # internal_14 <- DIRECTION OF Bazz + la $t0, type_Bazz + sw $t0, 164($sp) + + # ARRAY internal_12[internal_15] <- internal_14 + lw $t0, 160($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 172($sp) + add $t1, $t1, $t0 + lw $t0, 164($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_15] <- internal_5 + lw $t0, 160($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 168($sp) + add $t1, $t1, $t0 + lw $t0, 200($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 152($sp) + + # internal_16 <- DIRECTION OF Razz + la $t0, type_Razz + sw $t0, 156($sp) + + # ARRAY internal_12[internal_17] <- internal_16 + lw $t0, 152($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 172($sp) + add $t1, $t1, $t0 + lw $t0, 156($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_17] <- internal_5 + lw $t0, 152($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 168($sp) + add $t1, $t1, $t0 + lw $t0, 200($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # internal_18 <- DIRECTION OF Foo + la $t0, type_Foo + sw $t0, 148($sp) + + # ARRAY internal_12[internal_19] <- internal_18 + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 172($sp) + add $t1, $t1, $t0 + lw $t0, 148($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_19] <- internal_5 + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 168($sp) + add $t1, $t1, $t0 + lw $t0, 200($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # internal_20 <- DIRECTION OF Bar + la $t0, type_Bar + sw $t0, 140($sp) + + # ARRAY internal_12[internal_21] <- internal_20 + lw $t0, 136($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 172($sp) + add $t1, $t1, $t0 + lw $t0, 140($sp) + sw $t0, 0($t1) + + # ARRAY internal_13[internal_21] <- internal_5 + lw $t0, 136($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 168($sp) + add $t1, $t1, $t0 + lw $t0, 200($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + foreach_type_start_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_22] + lw $t0, 144($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 220($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 140($sp) + addi $sp, $sp, 12 + + # IF internal_23 THEN GOTO foreach_type_body_8732623758409 + lw $t0, 128($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_type_body_8732623758409 + + # JUMP TO foreach_type_end_8732623758409 + j foreach_type_end_8732623758409 + + foreach_type_body_8732623758409: + + # internal_24 <- ARRAY internal_12[internal_22] + lw $t0, 132($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 172($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + foreach_ancestor_start_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # IF internal_26 THEN GOTO foreach_ancestor_body_8732623758409 + lw $t0, 116($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_body_8732623758409 + + # JUMP TO foreach_ancestor_end_8732623758409 + j foreach_ancestor_end_8732623758409 + + foreach_ancestor_body_8732623758409: + + # internal_27 <- ARRAY internal_9[internal_25] + lw $t0, 120($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 184($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + sw $t0, 112($sp) + + # internal_28 <- EQUALADDRESS (internal_24, internal_27) + lw $t0, 124($sp) + lw $t1, 112($sp) + seq $t2, $t0, $t1 + lw $t0, 108($sp) + sw $t2, 8($t0) + + # IF internal_28 THEN GOTO foreach_ancestor_end_8732623758409 + lw $t0, 108($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_ancestor_end_8732623758409 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_ancestor_start_8732623758409 + j foreach_ancestor_start_8732623758409 + + foreach_ancestor_end_8732623758409: + + # ARRAY internal_13[internal_22] <- internal_25 + lw $t0, 132($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 168($sp) + add $t1, $t1, $t0 + lw $t0, 120($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_22] + lw $t0, 144($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_type_start_8732623758409 + j foreach_type_start_8732623758409 + + foreach_type_end_8732623758409: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 104($sp) + addi $sp, $sp, 12 + + foreach_min_start_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 220($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # IF internal_33 THEN GOTO foreach_min_body_8732623758409 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, foreach_min_body_8732623758409 + + # JUMP TO foreach_min_end_8732623758409 + j foreach_min_end_8732623758409 + + foreach_min_body_8732623758409: + + # internal_31 <- ARRAY internal_13[internal_29] + lw $t0, 104($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 168($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 96($sp) + sw $t0, 8($t2) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # IF internal_33 THEN GOTO update_min_8732623758409 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, update_min_8732623758409 + + # JUMP TO update_min_end_8732623758409 + j update_min_end_8732623758409 + + update_min_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_31] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 104($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_30] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + update_min_end_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 116($sp) + addi $sp, $sp, 12 + + # JUMP TO foreach_min_start_8732623758409 + j foreach_min_start_8732623758409 + + foreach_min_end_8732623758409: + + # INITIALIZE ARRAY [internal_3] + lw $t0, 208($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + li $v0, 9 + move $a0, $t0 + syscall + sw $v0, 84($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # ARRAY internal_34[internal_35] <- internal_1 + lw $t0, 80($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 216($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # ARRAY internal_34[internal_36] <- internal_1 + lw $t0, 76($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 216($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # ARRAY internal_34[internal_37] <- internal_1 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 216($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ARRAY internal_34[internal_38] <- internal_1 + lw $t0, 68($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 216($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_32] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 212($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # IF internal_39 THEN GOTO error_branch_8732623758409 + lw $t0, 64($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, error_branch_8732623758409 + + # ARRAY internal_34[internal_30] <- internal_2 + lw $t0, 100($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 212($sp) + lw $t0, 8($t0) + sw $t0, 0($t1) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # internal_40 <- ARRAY internal_34[internal_41] + lw $t0, 56($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 60($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Bazz_8732623758409 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bazz_8732623758409 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # internal_40 <- ARRAY internal_34[internal_42] + lw $t0, 52($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 60($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Razz_8732623758409 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Razz_8732623758409 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # internal_40 <- ARRAY internal_34[internal_43] + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 60($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Foo_8732623758409 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Foo_8732623758409 + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # internal_40 <- ARRAY internal_34[internal_44] + lw $t0, 44($sp) + lw $t0, 8($t0) + addi $t1, $zero, 4 + mult $t0, $t1 + mflo $t0 + lw $t1, 84($sp) + add $t1, $t1, $t0 + lw $t0, 0($t1) + lw $t2, 60($sp) + sw $t0, 8($t2) + + # IF internal_40 THEN GOTO branch_Bar_8732623758409 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, branch_Bar_8732623758409 + + branch_Bazz_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 236($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Foo + li $v0, 9 + lw $a0, type_Foo + syscall + la $t0, type_Foo + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Foo + jal function___init___at_Foo + lw $ra, 4($sp) + sw $v1, 40($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_47 + lw $t0, 32($sp) + sw $t0, 40($sp) + + # JUMP TO branch_end_8732623758409 + j branch_end_8732623758409 + + branch_Razz_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 236($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 32($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_49 + lw $t0, 24($sp) + sw $t0, 40($sp) + + # JUMP TO branch_end_8732623758409 + j branch_end_8732623758409 + + branch_Foo_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 236($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> Razz + li $v0, 9 + lw $a0, type_Razz + syscall + la $t0, type_Razz + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Razz + jal function___init___at_Razz + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_45 <- internal_51 + lw $t0, 16($sp) + sw $t0, 40($sp) + + # JUMP TO branch_end_8732623758409 + j branch_end_8732623758409 + + branch_Bar_8732623758409: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [n] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 236($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_45] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [n] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_45 <- n + lw $t0, 36($sp) + sw $t0, 40($sp) + + # JUMP TO branch_end_8732623758409 + j branch_end_8732623758409 + + error_branch_8732623758409: + + branch_end_8732623758409: + + # SET ATTRIBUTE g OF self + lw $t0, 224($sp) + lw $t1, 40($sp) + beq $t1, $zero, object_set_attribute_8732623714657 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623714657 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623714657 + j object_set_attribute_8732623714657 + int_set_attribute_8732623714657: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623714657 + bool_set_attribute_8732623714657: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623714657 + object_set_attribute_8732623714657: + sw $t1, 12($t0) + end_set_attribute_8732623714657: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD printh OF Bazz + lw $t0, 224($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 232($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_55 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE i OF self + lw $t0, 224($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8732623772118 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623772118 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623772118 + j object_set_attribute_8732623772118 + int_set_attribute_8732623772118: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623772118 + bool_set_attribute_8732623772118: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623772118 + object_set_attribute_8732623772118: + sw $t1, 16($t0) + end_set_attribute_8732623772118: + + lw $v1, 224($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 224 + + jr $ra + + function_printh_at_Bazz: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # GET ATTRIBUTE h OF self + lw $t0, 20($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623771917 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623771917 + j object_get_attribute_8732623771917 + int_get_attribute_8732623771917: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8732623771917 + bool_get_attribute_8732623771917: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8732623771917 + object_get_attribute_8732623771917: + sw $t1, 16($sp) + end_get_attribute_8732623771917: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD out_int OF Bazz + lw $t0, 20($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function_doh_at_Bazz: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # GET ATTRIBUTE h OF self + lw $t0, 20($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623768122 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623768122 + j object_get_attribute_8732623768122 + int_get_attribute_8732623768122: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8732623768122 + bool_get_attribute_8732623768122: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8732623768122 + object_get_attribute_8732623768122: + sw $t1, 12($sp) + end_get_attribute_8732623768122: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE h OF self + lw $t0, 20($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8732623768275 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8732623768275 + j object_get_attribute_8732623768275 + int_get_attribute_8732623768275: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($sp) + j end_get_attribute_8732623768275 + bool_get_attribute_8732623768275: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($sp) + j end_get_attribute_8732623768275 + object_get_attribute_8732623768275: + sw $t1, 8($sp) + end_get_attribute_8732623768275: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 20($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE h OF self + lw $t0, 20($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8732623768098 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623768098 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623768098 + j object_set_attribute_8732623768098 + int_set_attribute_8732623768098: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623768098 + bool_set_attribute_8732623768098: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623768098 + object_set_attribute_8732623768098: + sw $t1, 8($t0) + end_set_attribute_8732623768098: + + lw $v1, 16($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Bazz + li $v0, 9 + lw $a0, type_Bazz + syscall + la $t0, type_Bazz + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bazz + jal function___init___at_Bazz + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE a OF self + lw $t0, 16($sp) + lw $t1, 12($sp) + beq $t1, $zero, object_set_attribute_8732623768074 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623768074 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623768074 + j object_set_attribute_8732623768074 + int_set_attribute_8732623768074: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623768074 + bool_set_attribute_8732623768074: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8732623768074 + object_set_attribute_8732623768074: + sw $t1, 8($t0) + end_set_attribute_8732623768074: + + # ALLOCATING -> Foo + li $v0, 9 + lw $a0, type_Foo + syscall + la $t0, type_Foo + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 8($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Foo + jal function___init___at_Foo + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE b OF self + lw $t0, 16($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8732623768158 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623768158 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623768158 + j object_set_attribute_8732623768158 + int_set_attribute_8732623768158: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623768158 + bool_set_attribute_8732623768158: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8732623768158 + object_set_attribute_8732623768158: + sw $t1, 12($t0) + end_set_attribute_8732623768158: + + # ALLOCATING -> Razz + li $v0, 9 + lw $a0, type_Razz + syscall + la $t0, type_Razz + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Razz + jal function___init___at_Razz + lw $ra, 4($sp) + sw $v1, 12($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE c OF self + lw $t0, 16($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8732623768233 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623768233 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623768233 + j object_set_attribute_8732623768233 + int_set_attribute_8732623768233: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623768233 + bool_set_attribute_8732623768233: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8732623768233 + object_set_attribute_8732623768233: + sw $t1, 16($t0) + end_set_attribute_8732623768233: + + # ALLOCATING -> Bar + li $v0, 9 + lw $a0, type_Bar + syscall + la $t0, type_Bar + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 8($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Bar + jal function___init___at_Bar + lw $ra, 4($sp) + sw $v1, 8($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE d OF self + lw $t0, 16($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8732623766013 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8732623766013 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8732623766013 + j object_set_attribute_8732623766013 + int_set_attribute_8732623766013: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8732623766013 + bool_set_attribute_8732623766013: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8732623766013 + object_set_attribute_8732623766013: + sw $t1, 20($t0) + end_set_attribute_8732623766013: + + lw $v1, 16($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 19 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 19 + sw $t0, 4($v0) + + addi $t0, $zero, 100 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 110 + sb $t0, 11($v0) + + addi $t0, $zero, 111 + sb $t0, 12($v0) + + addi $t0, $zero, 116 + sb $t0, 13($v0) + + addi $t0, $zero, 104 + sb $t0, 14($v0) + + addi $t0, $zero, 105 + sb $t0, 15($v0) + + addi $t0, $zero, 110 + sb $t0, 16($v0) + + addi $t0, $zero, 103 + sb $t0, 17($v0) + + sb $zero, 18($v0) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/hello_world.cl b/tests/codegen/hello_world.cl index 0c818f908..ef7250dd6 100755 --- a/tests/codegen/hello_world.cl +++ b/tests/codegen/hello_world.cl @@ -1,5 +1,5 @@ class Main inherits IO { main(): IO { - out_string("Hello, World.\n") + out_string("Hello, World.\n") }; }; diff --git a/tests/codegen/hello_world.mips b/tests/codegen/hello_world.mips new file mode 100644 index 000000000..61bf33650 --- /dev/null +++ b/tests/codegen/hello_world.mips @@ -0,0 +1,1485 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Main: .word 44 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Main: + lw $v1, 0($sp) + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 23 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 23 + sw $t0, 4($v0) + + addi $t0, $zero, 72 + sb $t0, 8($v0) + + addi $t0, $zero, 101 + sb $t0, 9($v0) + + addi $t0, $zero, 108 + sb $t0, 10($v0) + + addi $t0, $zero, 108 + sb $t0, 11($v0) + + addi $t0, $zero, 111 + sb $t0, 12($v0) + + addi $t0, $zero, 44 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 87 + sb $t0, 15($v0) + + addi $t0, $zero, 111 + sb $t0, 16($v0) + + addi $t0, $zero, 114 + sb $t0, 17($v0) + + addi $t0, $zero, 108 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 46 + sb $t0, 20($v0) + + addi $t0, $zero, 10 + sb $t0, 21($v0) + + sb $zero, 22($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/io.mips b/tests/codegen/io.mips new file mode 100644 index 000000000..c285d2f84 --- /dev/null +++ b/tests/codegen/io.mips @@ -0,0 +1,2439 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_A: .word 32 + type_A_inherits_from: .word type_Object + type_A_name_address: .word type_A_name_size + type_A___init__: .word function___init___at_A + type_A_abort: .word function_abort_at_Object + type_A_type_name: .word function_type_name_at_Object + type_A_copy: .word function_copy_at_Object + type_A_out_a: .word function_out_a_at_A + + type_B: .word 36 + type_B_inherits_from: .word type_A + type_B_name_address: .word type_B_name_size + type_B___init__: .word function___init___at_B + type_B_abort: .word function_abort_at_Object + type_B_type_name: .word function_type_name_at_Object + type_B_copy: .word function_copy_at_Object + type_B_out_a: .word function_out_a_at_A + type_B_out_b: .word function_out_b_at_B + + type_C: .word 44 + type_C_inherits_from: .word type_IO + type_C_name_address: .word type_C_name_size + type_C___init__: .word function___init___at_C + type_C_abort: .word function_abort_at_Object + type_C_type_name: .word function_type_name_at_Object + type_C_copy: .word function_copy_at_Object + type_C_out_string: .word function_out_string_at_IO + type_C_out_int: .word function_out_int_at_IO + type_C_in_string: .word function_in_string_at_IO + type_C_in_int: .word function_in_int_at_IO + type_C_out_c: .word function_out_c_at_C + + type_D: .word 48 + type_D_inherits_from: .word type_C + type_D_name_address: .word type_D_name_size + type_D___init__: .word function___init___at_D + type_D_abort: .word function_abort_at_Object + type_D_type_name: .word function_type_name_at_Object + type_D_copy: .word function_copy_at_Object + type_D_out_string: .word function_out_string_at_IO + type_D_out_int: .word function_out_int_at_IO + type_D_in_string: .word function_in_string_at_IO + type_D_in_int: .word function_in_int_at_IO + type_D_out_c: .word function_out_c_at_C + type_D_out_d: .word function_out_d_at_D + + type_Main: .word 44 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_A_name_size: .word 1 + type_A_name: .asciiz "A" + + type_B_name_size: .word 1 + type_B_name: .asciiz "B" + + type_C_name_size: .word 1 + type_C_name: .asciiz "C" + + type_D_name_size: .word 1 + type_D_name: .asciiz "D" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_A: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING -> IO + li $v0, 9 + lw $a0, type_IO + syscall + la $t0, type_IO + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 8($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_IO + jal function___init___at_IO + lw $ra, 4($sp) + sw $v1, 8($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE io OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8741530118819 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8741530118819 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8741530118819 + j object_set_attribute_8741530118819 + int_set_attribute_8741530118819: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8741530118819 + bool_set_attribute_8741530118819: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8741530118819 + object_set_attribute_8741530118819: + sw $t1, 8($t0) + end_set_attribute_8741530118819: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_out_a_at_A: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # GET ATTRIBUTE io OF self + lw $t0, 20($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8741530118870 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8741530118870 + j object_get_attribute_8741530118870 + int_get_attribute_8741530118870: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8741530118870 + bool_get_attribute_8741530118870: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8741530118870 + object_get_attribute_8741530118870: + sw $t1, 16($sp) + end_get_attribute_8741530118870: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 24 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 24 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 58 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 72 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 108 + sb $t0, 13($v0) + + addi $t0, $zero, 108 + sb $t0, 14($v0) + + addi $t0, $zero, 111 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 119 + sb $t0, 17($v0) + + addi $t0, $zero, 111 + sb $t0, 18($v0) + + addi $t0, $zero, 114 + sb $t0, 19($v0) + + addi $t0, $zero, 108 + sb $t0, 20($v0) + + addi $t0, $zero, 100 + sb $t0, 21($v0) + + addi $t0, $zero, 10 + sb $t0, 22($v0) + + sb $zero, 23($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF IO + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function___init___at_B: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING -> IO + li $v0, 9 + lw $a0, type_IO + syscall + la $t0, type_IO + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 8($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_IO + jal function___init___at_IO + lw $ra, 4($sp) + sw $v1, 8($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE io OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8741530120509 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8741530120509 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8741530120509 + j object_set_attribute_8741530120509 + int_set_attribute_8741530120509: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8741530120509 + bool_set_attribute_8741530120509: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8741530120509 + object_set_attribute_8741530120509: + sw $t1, 8($t0) + end_set_attribute_8741530120509: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_out_b_at_B: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # GET ATTRIBUTE io OF self + lw $t0, 20($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8741530120560 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8741530120560 + j object_get_attribute_8741530120560 + int_get_attribute_8741530120560: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8741530120560 + bool_get_attribute_8741530120560: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8741530120560 + object_get_attribute_8741530120560: + sw $t1, 16($sp) + end_get_attribute_8741530120560: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 24 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 24 + sw $t0, 4($v0) + + addi $t0, $zero, 66 + sb $t0, 8($v0) + + addi $t0, $zero, 58 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 72 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 108 + sb $t0, 13($v0) + + addi $t0, $zero, 108 + sb $t0, 14($v0) + + addi $t0, $zero, 111 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 119 + sb $t0, 17($v0) + + addi $t0, $zero, 111 + sb $t0, 18($v0) + + addi $t0, $zero, 114 + sb $t0, 19($v0) + + addi $t0, $zero, 108 + sb $t0, 20($v0) + + addi $t0, $zero, 100 + sb $t0, 21($v0) + + addi $t0, $zero, 10 + sb $t0, 22($v0) + + sb $zero, 23($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF IO + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function___init___at_C: + lw $v1, 0($sp) + + jr $ra + + function_out_c_at_C: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 24 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 24 + sw $t0, 4($v0) + + addi $t0, $zero, 67 + sb $t0, 8($v0) + + addi $t0, $zero, 58 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 72 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 108 + sb $t0, 13($v0) + + addi $t0, $zero, 108 + sb $t0, 14($v0) + + addi $t0, $zero, 111 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 119 + sb $t0, 17($v0) + + addi $t0, $zero, 111 + sb $t0, 18($v0) + + addi $t0, $zero, 114 + sb $t0, 19($v0) + + addi $t0, $zero, 108 + sb $t0, 20($v0) + + addi $t0, $zero, 100 + sb $t0, 21($v0) + + addi $t0, $zero, 10 + sb $t0, 22($v0) + + sb $zero, 23($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF C + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function___init___at_D: + lw $v1, 0($sp) + + jr $ra + + function_out_d_at_D: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 24 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 24 + sw $t0, 4($v0) + + addi $t0, $zero, 68 + sb $t0, 8($v0) + + addi $t0, $zero, 58 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 72 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 108 + sb $t0, 13($v0) + + addi $t0, $zero, 108 + sb $t0, 14($v0) + + addi $t0, $zero, 111 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 119 + sb $t0, 17($v0) + + addi $t0, $zero, 111 + sb $t0, 18($v0) + + addi $t0, $zero, 114 + sb $t0, 19($v0) + + addi $t0, $zero, 108 + sb $t0, 20($v0) + + addi $t0, $zero, 100 + sb $t0, 21($v0) + + addi $t0, $zero, 10 + sb $t0, 22($v0) + + sb $zero, 23($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF D + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function___init___at_Main: + lw $v1, 0($sp) + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -80 + + # ALLOCATING -> A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 84($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # GET METHOD out_a OF A + lw $t0, 76($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 68($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 80($sp) + addi $sp, $sp, 8 + + # ALLOCATING -> B + li $v0, 9 + lw $a0, type_B + syscall + la $t0, type_B + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_B + jal function___init___at_B + lw $ra, 4($sp) + sw $v1, 68($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD out_b OF B + lw $t0, 60($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 56($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 64($sp) + addi $sp, $sp, 8 + + # ALLOCATING -> C + li $v0, 9 + lw $a0, type_C + syscall + la $t0, type_C + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_C + jal function___init___at_C + lw $ra, 4($sp) + sw $v1, 52($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD out_c OF C + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 40($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 48($sp) + addi $sp, $sp, 8 + + # ALLOCATING -> D + li $v0, 9 + lw $a0, type_D + syscall + la $t0, type_D + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_D + jal function___init___at_D + lw $ra, 4($sp) + sw $v1, 36($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_d OF D + lw $t0, 28($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 32($sp) + addi $sp, $sp, 8 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 15 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 15 + sw $t0, 4($v0) + + addi $t0, $zero, 68 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 110 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 46 + sb $t0, 12($v0) + + addi $t0, $zero, 10 + sb $t0, 13($v0) + + sb $zero, 14($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 80($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 80 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/life.mips b/tests/codegen/life.mips new file mode 100644 index 000000000..1fe312b66 --- /dev/null +++ b/tests/codegen/life.mips @@ -0,0 +1,18189 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Board: .word 60 + type_Board_inherits_from: .word type_IO + type_Board_name_address: .word type_Board_name_size + type_Board___init__: .word function___init___at_Board + type_Board_abort: .word function_abort_at_Object + type_Board_type_name: .word function_type_name_at_Object + type_Board_copy: .word function_copy_at_Object + type_Board_out_string: .word function_out_string_at_IO + type_Board_out_int: .word function_out_int_at_IO + type_Board_in_string: .word function_in_string_at_IO + type_Board_in_int: .word function_in_int_at_IO + type_Board_size_of_board: .word function_size_of_board_at_Board + type_Board_board_init: .word function_board_init_at_Board + + type_CellularAutomaton: .word 136 + type_CellularAutomaton_inherits_from: .word type_Board + type_CellularAutomaton_name_address: .word type_CellularAutomaton_name_size + type_CellularAutomaton___init__: .word function___init___at_CellularAutomaton + type_CellularAutomaton_abort: .word function_abort_at_Object + type_CellularAutomaton_type_name: .word function_type_name_at_Object + type_CellularAutomaton_copy: .word function_copy_at_Object + type_CellularAutomaton_out_string: .word function_out_string_at_IO + type_CellularAutomaton_out_int: .word function_out_int_at_IO + type_CellularAutomaton_in_string: .word function_in_string_at_IO + type_CellularAutomaton_in_int: .word function_in_int_at_IO + type_CellularAutomaton_size_of_board: .word function_size_of_board_at_Board + type_CellularAutomaton_board_init: .word function_board_init_at_Board + type_CellularAutomaton_init: .word function_init_at_CellularAutomaton + type_CellularAutomaton_print: .word function_print_at_CellularAutomaton + type_CellularAutomaton_num_cells: .word function_num_cells_at_CellularAutomaton + type_CellularAutomaton_cell: .word function_cell_at_CellularAutomaton + type_CellularAutomaton_north: .word function_north_at_CellularAutomaton + type_CellularAutomaton_south: .word function_south_at_CellularAutomaton + type_CellularAutomaton_east: .word function_east_at_CellularAutomaton + type_CellularAutomaton_west: .word function_west_at_CellularAutomaton + type_CellularAutomaton_northwest: .word function_northwest_at_CellularAutomaton + type_CellularAutomaton_northeast: .word function_northeast_at_CellularAutomaton + type_CellularAutomaton_southeast: .word function_southeast_at_CellularAutomaton + type_CellularAutomaton_southwest: .word function_southwest_at_CellularAutomaton + type_CellularAutomaton_neighbors: .word function_neighbors_at_CellularAutomaton + type_CellularAutomaton_cell_at_next_evolution: .word function_cell_at_next_evolution_at_CellularAutomaton + type_CellularAutomaton_evolve: .word function_evolve_at_CellularAutomaton + type_CellularAutomaton_option: .word function_option_at_CellularAutomaton + type_CellularAutomaton_prompt: .word function_prompt_at_CellularAutomaton + type_CellularAutomaton_prompt2: .word function_prompt2_at_CellularAutomaton + + type_Main: .word 144 + type_Main_inherits_from: .word type_CellularAutomaton + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_size_of_board: .word function_size_of_board_at_Board + type_Main_board_init: .word function_board_init_at_Board + type_Main_init: .word function_init_at_CellularAutomaton + type_Main_print: .word function_print_at_CellularAutomaton + type_Main_num_cells: .word function_num_cells_at_CellularAutomaton + type_Main_cell: .word function_cell_at_CellularAutomaton + type_Main_north: .word function_north_at_CellularAutomaton + type_Main_south: .word function_south_at_CellularAutomaton + type_Main_east: .word function_east_at_CellularAutomaton + type_Main_west: .word function_west_at_CellularAutomaton + type_Main_northwest: .word function_northwest_at_CellularAutomaton + type_Main_northeast: .word function_northeast_at_CellularAutomaton + type_Main_southeast: .word function_southeast_at_CellularAutomaton + type_Main_southwest: .word function_southwest_at_CellularAutomaton + type_Main_neighbors: .word function_neighbors_at_CellularAutomaton + type_Main_cell_at_next_evolution: .word function_cell_at_next_evolution_at_CellularAutomaton + type_Main_evolve: .word function_evolve_at_CellularAutomaton + type_Main_option: .word function_option_at_CellularAutomaton + type_Main_prompt: .word function_prompt_at_CellularAutomaton + type_Main_prompt2: .word function_prompt2_at_CellularAutomaton + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Board_name_size: .word 5 + type_Board_name: .asciiz "Board" + + type_CellularAutomaton_name_size: .word 17 + type_CellularAutomaton_name: .asciiz "CellularAutomaton" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Board: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 12($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8738246174989 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246174989 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246174989 + j object_set_attribute_8738246174989 + int_set_attribute_8738246174989: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246174989 + bool_set_attribute_8738246174989: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246174989 + object_set_attribute_8738246174989: + sw $t1, 8($t0) + end_set_attribute_8738246174989: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 12($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8738246175013 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246175013 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246175013 + j object_set_attribute_8738246175013 + int_set_attribute_8738246175013: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246175013 + bool_set_attribute_8738246175013: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246175013 + object_set_attribute_8738246175013: + sw $t1, 12($t0) + end_set_attribute_8738246175013: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE board_size OF self + lw $t0, 12($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8738246175037 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246175037 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246175037 + j object_set_attribute_8738246175037 + int_set_attribute_8738246175037: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246175037 + bool_set_attribute_8738246175037: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246175037 + object_set_attribute_8738246175037: + sw $t1, 16($t0) + end_set_attribute_8738246175037: + + lw $v1, 12($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_size_of_board_at_Board: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD length OF String + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [initial] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_board_init_at_Board: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -168 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 156($sp) + + # GET METHOD size_of_board OF Board + lw $t0, 172($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 156($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 152($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 184($sp) + sw $t0, 4($sp) + + # ARGUMENT [start] + lw $t0, 180($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 164($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [size] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 172($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 176($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [size] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 152($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 148($sp) + addi $sp, $sp, 12 + + # internal_5 <- internal_7 + lw $t0, 136($sp) + sw $t0, 144($sp) + + # IF internal_5 THEN GOTO then_8738246206549 + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246206549 + + # JUMP TO else_8738246206549 + j else_8738246206549 + + then_8738246206549: + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 172($sp) + lw $t1, 132($sp) + beq $t1, $zero, object_set_attribute_8738246176919 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246176919 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246176919 + j object_set_attribute_8738246176919 + int_set_attribute_8738246176919: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246176919 + bool_set_attribute_8738246176919: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246176919 + object_set_attribute_8738246176919: + sw $t1, 8($t0) + end_set_attribute_8738246176919: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 172($sp) + lw $t1, 128($sp) + beq $t1, $zero, object_set_attribute_8738246176943 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246176943 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246176943 + j object_set_attribute_8738246176943 + int_set_attribute_8738246176943: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246176943 + bool_set_attribute_8738246176943: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246176943 + object_set_attribute_8738246176943: + sw $t1, 12($t0) + end_set_attribute_8738246176943: + + # SET ATTRIBUTE board_size OF self + lw $t0, 172($sp) + lw $t1, 164($sp) + beq $t1, $zero, object_set_attribute_8738246176967 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246176967 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246176967 + j object_set_attribute_8738246176967 + int_set_attribute_8738246176967: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246176967 + bool_set_attribute_8738246176967: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246176967 + object_set_attribute_8738246176967: + sw $t1, 16($t0) + end_set_attribute_8738246176967: + + # internal_4 <- size + lw $t0, 164($sp) + sw $t0, 148($sp) + + # JUMP TO endif_8738246206549 + j endif_8738246206549 + + else_8738246206549: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # ALLOCATING INT -> 16 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 16 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [size] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 128($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 124($sp) + addi $sp, $sp, 12 + + # internal_11 <- internal_13 + lw $t0, 112($sp) + sw $t0, 120($sp) + + # IF internal_11 THEN GOTO then_8738246206639 + lw $t0, 120($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246206639 + + # JUMP TO else_8738246206639 + j else_8738246206639 + + then_8738246206639: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 172($sp) + lw $t1, 108($sp) + beq $t1, $zero, object_set_attribute_8738246177374 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246177374 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246177374 + j object_set_attribute_8738246177374 + int_set_attribute_8738246177374: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246177374 + bool_set_attribute_8738246177374: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246177374 + object_set_attribute_8738246177374: + sw $t1, 8($t0) + end_set_attribute_8738246177374: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 172($sp) + lw $t1, 104($sp) + beq $t1, $zero, object_set_attribute_8738246177398 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246177398 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246177398 + j object_set_attribute_8738246177398 + int_set_attribute_8738246177398: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246177398 + bool_set_attribute_8738246177398: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246177398 + object_set_attribute_8738246177398: + sw $t1, 12($t0) + end_set_attribute_8738246177398: + + # SET ATTRIBUTE board_size OF self + lw $t0, 172($sp) + lw $t1, 164($sp) + beq $t1, $zero, object_set_attribute_8738246177422 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246177422 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246177422 + j object_set_attribute_8738246177422 + int_set_attribute_8738246177422: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246177422 + bool_set_attribute_8738246177422: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246177422 + object_set_attribute_8738246177422: + sw $t1, 16($t0) + end_set_attribute_8738246177422: + + # internal_10 <- size + lw $t0, 164($sp) + sw $t0, 124($sp) + + # JUMP TO endif_8738246206639 + j endif_8738246206639 + + else_8738246206639: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # ALLOCATING INT -> 20 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 20 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [size] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # internal_17 <- internal_19 + lw $t0, 88($sp) + sw $t0, 96($sp) + + # IF internal_17 THEN GOTO then_8738246207501 + lw $t0, 96($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246207501 + + # JUMP TO else_8738246207501 + j else_8738246207501 + + then_8738246207501: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 172($sp) + lw $t1, 84($sp) + beq $t1, $zero, object_set_attribute_8738246176037 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246176037 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246176037 + j object_set_attribute_8738246176037 + int_set_attribute_8738246176037: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246176037 + bool_set_attribute_8738246176037: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246176037 + object_set_attribute_8738246176037: + sw $t1, 8($t0) + end_set_attribute_8738246176037: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 172($sp) + lw $t1, 80($sp) + beq $t1, $zero, object_set_attribute_8738246176061 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246176061 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246176061 + j object_set_attribute_8738246176061 + int_set_attribute_8738246176061: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246176061 + bool_set_attribute_8738246176061: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246176061 + object_set_attribute_8738246176061: + sw $t1, 12($t0) + end_set_attribute_8738246176061: + + # SET ATTRIBUTE board_size OF self + lw $t0, 172($sp) + lw $t1, 164($sp) + beq $t1, $zero, object_set_attribute_8738246176085 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246176085 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246176085 + j object_set_attribute_8738246176085 + int_set_attribute_8738246176085: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246176085 + bool_set_attribute_8738246176085: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246176085 + object_set_attribute_8738246176085: + sw $t1, 16($t0) + end_set_attribute_8738246176085: + + # internal_16 <- size + lw $t0, 164($sp) + sw $t0, 100($sp) + + # JUMP TO endif_8738246207501 + j endif_8738246207501 + + else_8738246207501: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # ALLOCATING INT -> 21 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 21 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [size] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_24] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # internal_23 <- internal_25 + lw $t0, 64($sp) + sw $t0, 72($sp) + + # IF internal_23 THEN GOTO then_8738246207591 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246207591 + + # JUMP TO else_8738246207591 + j else_8738246207591 + + then_8738246207591: + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 172($sp) + lw $t1, 60($sp) + beq $t1, $zero, object_set_attribute_8738246176232 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246176232 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246176232 + j object_set_attribute_8738246176232 + int_set_attribute_8738246176232: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246176232 + bool_set_attribute_8738246176232: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246176232 + object_set_attribute_8738246176232: + sw $t1, 8($t0) + end_set_attribute_8738246176232: + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 172($sp) + lw $t1, 56($sp) + beq $t1, $zero, object_set_attribute_8738246177802 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246177802 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246177802 + j object_set_attribute_8738246177802 + int_set_attribute_8738246177802: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246177802 + bool_set_attribute_8738246177802: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246177802 + object_set_attribute_8738246177802: + sw $t1, 12($t0) + end_set_attribute_8738246177802: + + # SET ATTRIBUTE board_size OF self + lw $t0, 172($sp) + lw $t1, 164($sp) + beq $t1, $zero, object_set_attribute_8738246177820 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246177820 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246177820 + j object_set_attribute_8738246177820 + int_set_attribute_8738246177820: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246177820 + bool_set_attribute_8738246177820: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246177820 + object_set_attribute_8738246177820: + sw $t1, 16($t0) + end_set_attribute_8738246177820: + + # internal_22 <- size + lw $t0, 164($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8738246207591 + j endif_8738246207591 + + else_8738246207591: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # ALLOCATING INT -> 25 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 25 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [size] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_30] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_29 <- internal_31 + lw $t0, 40($sp) + sw $t0, 48($sp) + + # IF internal_29 THEN GOTO then_8738246207681 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246207681 + + # JUMP TO else_8738246207681 + j else_8738246207681 + + then_8738246207681: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 172($sp) + lw $t1, 36($sp) + beq $t1, $zero, object_set_attribute_8738246177967 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246177967 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246177967 + j object_set_attribute_8738246177967 + int_set_attribute_8738246177967: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246177967 + bool_set_attribute_8738246177967: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246177967 + object_set_attribute_8738246177967: + sw $t1, 8($t0) + end_set_attribute_8738246177967: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 172($sp) + lw $t1, 32($sp) + beq $t1, $zero, object_set_attribute_8738246177991 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246177991 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246177991 + j object_set_attribute_8738246177991 + int_set_attribute_8738246177991: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246177991 + bool_set_attribute_8738246177991: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246177991 + object_set_attribute_8738246177991: + sw $t1, 12($t0) + end_set_attribute_8738246177991: + + # SET ATTRIBUTE board_size OF self + lw $t0, 172($sp) + lw $t1, 164($sp) + beq $t1, $zero, object_set_attribute_8738246178015 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246178015 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246178015 + j object_set_attribute_8738246178015 + int_set_attribute_8738246178015: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246178015 + bool_set_attribute_8738246178015: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246178015 + object_set_attribute_8738246178015: + sw $t1, 16($t0) + end_set_attribute_8738246178015: + + # internal_28 <- size + lw $t0, 164($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8738246207681 + j endif_8738246207681 + + else_8738246207681: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # ALLOCATING INT -> 28 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 28 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [size] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_36] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # internal_35 <- internal_37 + lw $t0, 16($sp) + sw $t0, 24($sp) + + # IF internal_35 THEN GOTO then_8738246208290 + lw $t0, 24($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246208290 + + # JUMP TO else_8738246208290 + j else_8738246208290 + + then_8738246208290: + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 172($sp) + lw $t1, 12($sp) + beq $t1, $zero, object_set_attribute_8738246179446 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246179446 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246179446 + j object_set_attribute_8738246179446 + int_set_attribute_8738246179446: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246179446 + bool_set_attribute_8738246179446: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246179446 + object_set_attribute_8738246179446: + sw $t1, 8($t0) + end_set_attribute_8738246179446: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 172($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8738246179470 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246179470 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246179470 + j object_set_attribute_8738246179470 + int_set_attribute_8738246179470: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246179470 + bool_set_attribute_8738246179470: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246179470 + object_set_attribute_8738246179470: + sw $t1, 12($t0) + end_set_attribute_8738246179470: + + # SET ATTRIBUTE board_size OF self + lw $t0, 172($sp) + lw $t1, 164($sp) + beq $t1, $zero, object_set_attribute_8738246179494 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246179494 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246179494 + j object_set_attribute_8738246179494 + int_set_attribute_8738246179494: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246179494 + bool_set_attribute_8738246179494: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246179494 + object_set_attribute_8738246179494: + sw $t1, 16($t0) + end_set_attribute_8738246179494: + + # internal_34 <- size + lw $t0, 164($sp) + sw $t0, 28($sp) + + # JUMP TO endif_8738246208290 + j endif_8738246208290 + + else_8738246208290: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 172($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8738246179530 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246179530 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246179530 + j object_set_attribute_8738246179530 + int_set_attribute_8738246179530: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246179530 + bool_set_attribute_8738246179530: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246179530 + object_set_attribute_8738246179530: + sw $t1, 8($t0) + end_set_attribute_8738246179530: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 172($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8738246179554 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246179554 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246179554 + j object_set_attribute_8738246179554 + int_set_attribute_8738246179554: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246179554 + bool_set_attribute_8738246179554: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246179554 + object_set_attribute_8738246179554: + sw $t1, 12($t0) + end_set_attribute_8738246179554: + + # SET ATTRIBUTE board_size OF self + lw $t0, 172($sp) + lw $t1, 164($sp) + beq $t1, $zero, object_set_attribute_8738246179575 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246179575 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246179575 + j object_set_attribute_8738246179575 + int_set_attribute_8738246179575: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246179575 + bool_set_attribute_8738246179575: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246179575 + object_set_attribute_8738246179575: + sw $t1, 16($t0) + end_set_attribute_8738246179575: + + # internal_34 <- size + lw $t0, 164($sp) + sw $t0, 28($sp) + + # JUMP TO endif_8738246208290 + j endif_8738246208290 + + endif_8738246208290: + + # internal_28 <- internal_34 + lw $t0, 28($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8738246207681 + j endif_8738246207681 + + endif_8738246207681: + + # internal_22 <- internal_28 + lw $t0, 52($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8738246207591 + j endif_8738246207591 + + endif_8738246207591: + + # internal_16 <- internal_22 + lw $t0, 76($sp) + sw $t0, 100($sp) + + # JUMP TO endif_8738246207501 + j endif_8738246207501 + + endif_8738246207501: + + # internal_10 <- internal_16 + lw $t0, 100($sp) + sw $t0, 124($sp) + + # JUMP TO endif_8738246206639 + j endif_8738246206639 + + endif_8738246206639: + + # internal_4 <- internal_10 + lw $t0, 124($sp) + sw $t0, 148($sp) + + # JUMP TO endif_8738246206549 + j endif_8738246206549 + + endif_8738246206549: + + lw $v1, 172($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 168 + + jr $ra + + function___init___at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 16($sp) + lw $t1, 12($sp) + beq $t1, $zero, object_set_attribute_8738246180151 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246180151 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246180151 + j object_set_attribute_8738246180151 + int_set_attribute_8738246180151: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246180151 + bool_set_attribute_8738246180151: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246180151 + object_set_attribute_8738246180151: + sw $t1, 8($t0) + end_set_attribute_8738246180151: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 16($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8738246180175 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246180175 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246180175 + j object_set_attribute_8738246180175 + int_set_attribute_8738246180175: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246180175 + bool_set_attribute_8738246180175: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246180175 + object_set_attribute_8738246180175: + sw $t1, 12($t0) + end_set_attribute_8738246180175: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # SET ATTRIBUTE board_size OF self + lw $t0, 16($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8738246180199 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246180199 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246180199 + j object_set_attribute_8738246180199 + int_set_attribute_8738246180199: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246180199 + bool_set_attribute_8738246180199: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246180199 + object_set_attribute_8738246180199: + sw $t1, 16($t0) + end_set_attribute_8738246180199: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 0($sp) + + # SET ATTRIBUTE population_map OF self + lw $t0, 16($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8738246180223 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246180223 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246180223 + j object_set_attribute_8738246180223 + int_set_attribute_8738246180223: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8738246180223 + bool_set_attribute_8738246180223: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8738246180223 + object_set_attribute_8738246180223: + sw $t1, 20($t0) + end_set_attribute_8738246180223: + + lw $v1, 16($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_init_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # SET ATTRIBUTE population_map OF self + lw $t0, 16($sp) + lw $t1, 12($sp) + beq $t1, $zero, object_set_attribute_8738246180271 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246180271 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246180271 + j object_set_attribute_8738246180271 + int_set_attribute_8738246180271: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8738246180271 + bool_set_attribute_8738246180271: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8738246180271 + object_set_attribute_8738246180271: + sw $t1, 20($t0) + end_set_attribute_8738246180271: + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD board_init OF CellularAutomaton + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [map] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 16($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_print_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -112 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 120($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE board_size OF self + lw $t0, 112($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246181202 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246181202 + j object_get_attribute_8738246181202 + int_get_attribute_8738246181202: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 96($sp) + j end_get_attribute_8738246181202 + bool_get_attribute_8738246181202: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 96($sp) + j end_get_attribute_8738246181202 + object_get_attribute_8738246181202: + sw $t1, 96($sp) + end_get_attribute_8738246181202: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 92($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 112($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 124($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 92($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_8 + sw $zero, 76($sp) + + while_start_8738246207633: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [num] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # IF internal_9 THEN GOTO while_body_8738246207633 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8738246207633 + + # JUMP TO while_end_8738246207633 + j while_end_8738246207633 + + while_body_8738246207633: + + # GET ATTRIBUTE population_map OF self + lw $t0, 112($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246181717 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246181717 + j object_get_attribute_8738246181717 + int_get_attribute_8738246181717: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8738246181717 + bool_get_attribute_8738246181717: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8738246181717 + object_get_attribute_8738246181717: + sw $t1, 68($sp) + end_get_attribute_8738246181717: + + # GET ATTRIBUTE columns OF self + lw $t0, 112($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246181732 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246181732 + j object_get_attribute_8738246181732 + int_get_attribute_8738246181732: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 64($sp) + j end_get_attribute_8738246181732 + bool_get_attribute_8738246181732: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 64($sp) + j end_get_attribute_8738246181732 + object_get_attribute_8738246181732: + sw $t1, 64($sp) + end_get_attribute_8738246181732: + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # GET METHOD substr OF String + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 56($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_10] + lw $t0, 84($sp) + sw $t0, 8($sp) + + # ARGUMENT [i] + lw $t0, 124($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 68($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 76($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 112($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 44($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 124($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_17 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 36($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 112($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 124($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_21 + lw $t0, 36($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 112($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246181904 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246181904 + j object_get_attribute_8738246181904 + int_get_attribute_8738246181904: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8738246181904 + bool_get_attribute_8738246181904: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8738246181904 + object_get_attribute_8738246181904: + sw $t1, 20($sp) + end_get_attribute_8738246181904: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_23] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 120($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8738246207633 + j while_start_8738246207633 + + while_end_8738246207633: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 112($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 124($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_24] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_27 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 112($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 112 + + jr $ra + + function_num_cells_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # GET ATTRIBUTE population_map OF self + lw $t0, 16($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246181232 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246181232 + j object_get_attribute_8738246181232 + int_get_attribute_8738246181232: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8738246181232 + bool_get_attribute_8738246181232: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8738246181232 + object_get_attribute_8738246181232: + sw $t1, 12($sp) + end_get_attribute_8738246181232: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD length OF String + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_cell_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -48 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET ATTRIBUTE board_size OF self + lw $t0, 52($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246182102 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246182102 + j object_get_attribute_8738246182102 + int_get_attribute_8738246182102: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($sp) + j end_get_attribute_8738246182102 + bool_get_attribute_8738246182102: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($sp) + j end_get_attribute_8738246182102 + object_get_attribute_8738246182102: + sw $t1, 36($sp) + end_get_attribute_8738246182102: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_5 + lw $t0, 24($sp) + sw $t0, 40($sp) + + # IF internal_1 THEN GOTO then_8738246208497 + lw $t0, 40($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246208497 + + # JUMP TO else_8738246208497 + j else_8738246208497 + + then_8738246208497: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 20($sp) + + # internal_0 <- internal_6 + lw $t0, 20($sp) + sw $t0, 44($sp) + + # JUMP TO endif_8738246208497 + j endif_8738246208497 + + else_8738246208497: + + # GET ATTRIBUTE population_map OF self + lw $t0, 52($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246149985 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246149985 + j object_get_attribute_8738246149985 + int_get_attribute_8738246149985: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8738246149985 + bool_get_attribute_8738246149985: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8738246149985 + object_get_attribute_8738246149985: + sw $t1, 16($sp) + end_get_attribute_8738246149985: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD substr OF String + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_7] + lw $t0, 32($sp) + sw $t0, 8($sp) + + # ARGUMENT [position] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + # internal_0 <- internal_9 + lw $t0, 8($sp) + sw $t0, 44($sp) + + # JUMP TO endif_8738246208497 + j endif_8738246208497 + + endif_8738246208497: + + lw $v1, 44($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 48 + + jr $ra + + function_north_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -48 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET ATTRIBUTE columns OF self + lw $t0, 52($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246150410 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246150410 + j object_get_attribute_8738246150410 + int_get_attribute_8738246150410: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($sp) + j end_get_attribute_8738246150410 + bool_get_attribute_8738246150410: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($sp) + j end_get_attribute_8738246150410 + object_get_attribute_8738246150410: + sw $t1, 36($sp) + end_get_attribute_8738246150410: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_3] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_5 + lw $t0, 24($sp) + sw $t0, 40($sp) + + # IF internal_1 THEN GOTO then_8738246209118 + lw $t0, 40($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246209118 + + # JUMP TO else_8738246209118 + j else_8738246209118 + + then_8738246209118: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 20($sp) + + # internal_0 <- internal_6 + lw $t0, 20($sp) + sw $t0, 44($sp) + + # JUMP TO endif_8738246209118 + j endif_8738246209118 + + else_8738246209118: + + # GET ATTRIBUTE columns OF self + lw $t0, 52($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246150563 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246150563 + j object_get_attribute_8738246150563 + int_get_attribute_8738246150563: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8738246150563 + bool_get_attribute_8738246150563: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8738246150563 + object_get_attribute_8738246150563: + sw $t1, 16($sp) + end_get_attribute_8738246150563: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 52($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_9 + lw $t0, 8($sp) + sw $t0, 44($sp) + + # JUMP TO endif_8738246209118 + j endif_8738246209118 + + endif_8738246209118: + + lw $v1, 44($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 48 + + jr $ra + + function_south_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -48 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET ATTRIBUTE board_size OF self + lw $t0, 52($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246150967 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246150967 + j object_get_attribute_8738246150967 + int_get_attribute_8738246150967: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($sp) + j end_get_attribute_8738246150967 + bool_get_attribute_8738246150967: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 36($sp) + j end_get_attribute_8738246150967 + object_get_attribute_8738246150967: + sw $t1, 36($sp) + end_get_attribute_8738246150967: + + # GET ATTRIBUTE columns OF self + lw $t0, 52($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246150994 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246150994 + j object_get_attribute_8738246150994 + int_get_attribute_8738246150994: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246150994 + bool_get_attribute_8738246150994: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246150994 + object_get_attribute_8738246150994: + sw $t1, 32($sp) + end_get_attribute_8738246150994: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_5 + lw $t0, 24($sp) + sw $t0, 40($sp) + + # IF internal_1 THEN GOTO then_8738246209184 + lw $t0, 40($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246209184 + + # JUMP TO else_8738246209184 + j else_8738246209184 + + then_8738246209184: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 20($sp) + + # internal_0 <- internal_6 + lw $t0, 20($sp) + sw $t0, 44($sp) + + # JUMP TO endif_8738246209184 + j endif_8738246209184 + + else_8738246209184: + + # GET ATTRIBUTE columns OF self + lw $t0, 52($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246151135 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246151135 + j object_get_attribute_8738246151135 + int_get_attribute_8738246151135: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8738246151135 + bool_get_attribute_8738246151135: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8738246151135 + object_get_attribute_8738246151135: + sw $t1, 16($sp) + end_get_attribute_8738246151135: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 52($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_9 + lw $t0, 8($sp) + sw $t0, 44($sp) + + # JUMP TO endif_8738246209184 + j endif_8738246209184 + + endif_8738246209184: + + lw $v1, 44($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 48 + + jr $ra + + function_east_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -68 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 72($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246151867 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246151867 + j object_get_attribute_8738246151867 + int_get_attribute_8738246151867: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8738246151867 + bool_get_attribute_8738246151867: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8738246151867 + object_get_attribute_8738246151867: + sw $t1, 48($sp) + end_get_attribute_8738246151867: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_3] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 72($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246151894 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246151894 + j object_get_attribute_8738246151894 + int_get_attribute_8738246151894: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246151894 + bool_get_attribute_8738246151894: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246151894 + object_get_attribute_8738246151894: + sw $t1, 40($sp) + end_get_attribute_8738246151894: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_5] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_7] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_10 + lw $t0, 24($sp) + sw $t0, 60($sp) + + # IF internal_1 THEN GOTO then_8738246209253 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246209253 + + # JUMP TO else_8738246209253 + j else_8738246209253 + + then_8738246209253: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 20($sp) + + # internal_0 <- internal_11 + lw $t0, 20($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8738246209253 + j endif_8738246209253 + + else_8738246209253: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_14 + lw $t0, 8($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8738246209253 + j endif_8738246209253 + + endif_8738246209253: + + lw $v1, 64($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 68 + + jr $ra + + function_west_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -72 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 56($sp) + sw $t0, 64($sp) + + # IF internal_1 THEN GOTO then_8738246209859 + lw $t0, 64($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246209859 + + # JUMP TO else_8738246209859 + j else_8738246209859 + + then_8738246209859: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 52($sp) + + # internal_0 <- internal_4 + lw $t0, 52($sp) + sw $t0, 68($sp) + + # JUMP TO endif_8738246209859 + j endif_8738246209859 + + else_8738246209859: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET ATTRIBUTE columns OF self + lw $t0, 76($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246152918 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246152918 + j object_get_attribute_8738246152918 + int_get_attribute_8738246152918: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246152918 + bool_get_attribute_8738246152918: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246152918 + object_get_attribute_8738246152918: + sw $t1, 40($sp) + end_get_attribute_8738246152918: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 76($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246152945 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246152945 + j object_get_attribute_8738246152945 + int_get_attribute_8738246152945: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246152945 + bool_get_attribute_8738246152945: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246152945 + object_get_attribute_8738246152945: + sw $t1, 32($sp) + end_get_attribute_8738246152945: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_8] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_6 <- internal_11 + lw $t0, 24($sp) + sw $t0, 44($sp) + + # IF internal_6 THEN GOTO then_8738246209958 + lw $t0, 44($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246209958 + + # JUMP TO else_8738246209958 + j else_8738246209958 + + then_8738246209958: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 20($sp) + + # internal_5 <- internal_12 + lw $t0, 20($sp) + sw $t0, 48($sp) + + # JUMP TO endif_8738246209958 + j endif_8738246209958 + + else_8738246209958: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 76($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_17 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_5 <- internal_15 + lw $t0, 8($sp) + sw $t0, 48($sp) + + # JUMP TO endif_8738246209958 + j endif_8738246209958 + + endif_8738246209958: + + # internal_0 <- internal_5 + lw $t0, 48($sp) + sw $t0, 68($sp) + + # JUMP TO endif_8738246209859 + j endif_8738246209859 + + endif_8738246209859: + + lw $v1, 68($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 72 + + jr $ra + + function_northwest_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -80 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET ATTRIBUTE columns OF self + lw $t0, 84($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246153518 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246153518 + j object_get_attribute_8738246153518 + int_get_attribute_8738246153518: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8738246153518 + bool_get_attribute_8738246153518: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8738246153518 + object_get_attribute_8738246153518: + sw $t1, 68($sp) + end_get_attribute_8738246153518: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_3] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_5 + lw $t0, 56($sp) + sw $t0, 72($sp) + + # IF internal_1 THEN GOTO then_8738246209970 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246209970 + + # JUMP TO else_8738246209970 + j else_8738246209970 + + then_8738246209970: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 52($sp) + + # internal_0 <- internal_6 + lw $t0, 52($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8738246209970 + j endif_8738246209970 + + else_8738246209970: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET ATTRIBUTE columns OF self + lw $t0, 84($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246153722 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246153722 + j object_get_attribute_8738246153722 + int_get_attribute_8738246153722: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246153722 + bool_get_attribute_8738246153722: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246153722 + object_get_attribute_8738246153722: + sw $t1, 40($sp) + end_get_attribute_8738246153722: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 84($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246154009 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246154009 + j object_get_attribute_8738246154009 + int_get_attribute_8738246154009: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246154009 + bool_get_attribute_8738246154009: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246154009 + object_get_attribute_8738246154009: + sw $t1, 32($sp) + end_get_attribute_8738246154009: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_13 + lw $t0, 24($sp) + sw $t0, 44($sp) + + # IF internal_8 THEN GOTO then_8738246210606 + lw $t0, 44($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246210606 + + # JUMP TO else_8738246210606 + j else_8738246210606 + + then_8738246210606: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 20($sp) + + # internal_7 <- internal_14 + lw $t0, 20($sp) + sw $t0, 48($sp) + + # JUMP TO endif_8738246210606 + j endif_8738246210606 + + else_8738246210606: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD north OF CellularAutomaton + lw $t0, 84($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_7 <- internal_17 + lw $t0, 8($sp) + sw $t0, 48($sp) + + # JUMP TO endif_8738246210606 + j endif_8738246210606 + + endif_8738246210606: + + # internal_0 <- internal_7 + lw $t0, 48($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8738246209970 + j endif_8738246209970 + + endif_8738246209970: + + lw $v1, 76($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 80 + + jr $ra + + function_northeast_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -96 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # GET ATTRIBUTE columns OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246154578 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246154578 + j object_get_attribute_8738246154578 + int_get_attribute_8738246154578: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 84($sp) + j end_get_attribute_8738246154578 + bool_get_attribute_8738246154578: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 84($sp) + j end_get_attribute_8738246154578 + object_get_attribute_8738246154578: + sw $t1, 84($sp) + end_get_attribute_8738246154578: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_3] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_5 + lw $t0, 72($sp) + sw $t0, 88($sp) + + # IF internal_1 THEN GOTO then_8738246210618 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246210618 + + # JUMP TO else_8738246210618 + j else_8738246210618 + + then_8738246210618: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 68($sp) + + # internal_0 <- internal_6 + lw $t0, 68($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8738246210618 + j endif_8738246210618 + + else_8738246210618: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246155084 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246155084 + j object_get_attribute_8738246155084 + int_get_attribute_8738246155084: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8738246155084 + bool_get_attribute_8738246155084: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8738246155084 + object_get_attribute_8738246155084: + sw $t1, 48($sp) + end_get_attribute_8738246155084: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246155111 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246155111 + j object_get_attribute_8738246155111 + int_get_attribute_8738246155111: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246155111 + bool_get_attribute_8738246155111: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246155111 + object_get_attribute_8738246155111: + sw $t1, 40($sp) + end_get_attribute_8738246155111: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_14] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_17 + lw $t0, 24($sp) + sw $t0, 60($sp) + + # IF internal_8 THEN GOTO then_8738246210762 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246210762 + + # JUMP TO else_8738246210762 + j else_8738246210762 + + then_8738246210762: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 20($sp) + + # internal_7 <- internal_18 + lw $t0, 20($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8738246210762 + j endif_8738246210762 + + else_8738246210762: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD north OF CellularAutomaton + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_7 <- internal_21 + lw $t0, 8($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8738246210762 + j endif_8738246210762 + + endif_8738246210762: + + # internal_0 <- internal_7 + lw $t0, 64($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8738246210618 + j endif_8738246210618 + + endif_8738246210618: + + lw $v1, 92($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 96 + + jr $ra + + function_southeast_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -96 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # GET ATTRIBUTE board_size OF self + lw $t0, 100($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246155963 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246155963 + j object_get_attribute_8738246155963 + int_get_attribute_8738246155963: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 84($sp) + j end_get_attribute_8738246155963 + bool_get_attribute_8738246155963: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 84($sp) + j end_get_attribute_8738246155963 + object_get_attribute_8738246155963: + sw $t1, 84($sp) + end_get_attribute_8738246155963: + + # GET ATTRIBUTE columns OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246155990 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246155990 + j object_get_attribute_8738246155990 + int_get_attribute_8738246155990: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 80($sp) + j end_get_attribute_8738246155990 + bool_get_attribute_8738246155990: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 80($sp) + j end_get_attribute_8738246155990 + object_get_attribute_8738246155990: + sw $t1, 80($sp) + end_get_attribute_8738246155990: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_5 + lw $t0, 72($sp) + sw $t0, 88($sp) + + # IF internal_1 THEN GOTO then_8738246210777 + lw $t0, 88($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246210777 + + # JUMP TO else_8738246210777 + j else_8738246210777 + + then_8738246210777: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 68($sp) + + # internal_0 <- internal_6 + lw $t0, 68($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8738246210777 + j endif_8738246210777 + + else_8738246210777: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246156484 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246156484 + j object_get_attribute_8738246156484 + int_get_attribute_8738246156484: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8738246156484 + bool_get_attribute_8738246156484: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 48($sp) + j end_get_attribute_8738246156484 + object_get_attribute_8738246156484: + sw $t1, 48($sp) + end_get_attribute_8738246156484: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246156511 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246156511 + j object_get_attribute_8738246156511 + int_get_attribute_8738246156511: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246156511 + bool_get_attribute_8738246156511: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246156511 + object_get_attribute_8738246156511: + sw $t1, 40($sp) + end_get_attribute_8738246156511: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_14] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_17 + lw $t0, 24($sp) + sw $t0, 60($sp) + + # IF internal_8 THEN GOTO then_8738246211178 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246211178 + + # JUMP TO else_8738246211178 + j else_8738246211178 + + then_8738246211178: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 20($sp) + + # internal_7 <- internal_18 + lw $t0, 20($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8738246211178 + j endif_8738246211178 + + else_8738246211178: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD south OF CellularAutomaton + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_7 <- internal_21 + lw $t0, 8($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8738246211178 + j endif_8738246211178 + + endif_8738246211178: + + # internal_0 <- internal_7 + lw $t0, 64($sp) + sw $t0, 92($sp) + + # JUMP TO endif_8738246210777 + j endif_8738246210777 + + endif_8738246210777: + + lw $v1, 92($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 96 + + jr $ra + + function_southwest_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -80 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET ATTRIBUTE board_size OF self + lw $t0, 84($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246157111 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246157111 + j object_get_attribute_8738246157111 + int_get_attribute_8738246157111: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8738246157111 + bool_get_attribute_8738246157111: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 68($sp) + j end_get_attribute_8738246157111 + object_get_attribute_8738246157111: + sw $t1, 68($sp) + end_get_attribute_8738246157111: + + # GET ATTRIBUTE columns OF self + lw $t0, 84($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246157138 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246157138 + j object_get_attribute_8738246157138 + int_get_attribute_8738246157138: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 64($sp) + j end_get_attribute_8738246157138 + bool_get_attribute_8738246157138: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 64($sp) + j end_get_attribute_8738246157138 + object_get_attribute_8738246157138: + sw $t1, 64($sp) + end_get_attribute_8738246157138: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_5 + lw $t0, 56($sp) + sw $t0, 72($sp) + + # IF internal_1 THEN GOTO then_8738246211193 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246211193 + + # JUMP TO else_8738246211193 + j else_8738246211193 + + then_8738246211193: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 52($sp) + + # internal_0 <- internal_6 + lw $t0, 52($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8738246211193 + j endif_8738246211193 + + else_8738246211193: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET ATTRIBUTE columns OF self + lw $t0, 84($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246157590 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246157590 + j object_get_attribute_8738246157590 + int_get_attribute_8738246157590: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246157590 + bool_get_attribute_8738246157590: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8738246157590 + object_get_attribute_8738246157590: + sw $t1, 40($sp) + end_get_attribute_8738246157590: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 48($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE columns OF self + lw $t0, 84($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246157617 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246157617 + j object_get_attribute_8738246157617 + int_get_attribute_8738246157617: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246157617 + bool_get_attribute_8738246157617: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246157617 + object_get_attribute_8738246157617: + sw $t1, 32($sp) + end_get_attribute_8738246157617: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 48($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_12] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_13 + lw $t0, 24($sp) + sw $t0, 44($sp) + + # IF internal_8 THEN GOTO then_8738246211310 + lw $t0, 44($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246211310 + + # JUMP TO else_8738246211310 + j else_8738246211310 + + then_8738246211310: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 20($sp) + + # internal_7 <- internal_14 + lw $t0, 20($sp) + sw $t0, 48($sp) + + # JUMP TO endif_8738246211310 + j endif_8738246211310 + + else_8738246211310: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD south OF CellularAutomaton + lw $t0, 84($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_7 <- internal_17 + lw $t0, 8($sp) + sw $t0, 48($sp) + + # JUMP TO endif_8738246211310 + j endif_8738246211310 + + endif_8738246211310: + + # internal_0 <- internal_7 + lw $t0, 48($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8738246211193 + j endif_8738246211193 + + endif_8738246211193: + + lw $v1, 76($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 80 + + jr $ra + + function_neighbors_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -316 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 308($sp) + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 300($sp) + + # GET METHOD north OF CellularAutomaton + lw $t0, 320($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 300($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 296($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 332($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 308($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 316($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 292($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 316($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 304($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_6 + lw $t0, 288($sp) + sw $t0, 308($sp) + + # IF internal_1 THEN GOTO then_8738246211597 + lw $t0, 308($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246211597 + + # JUMP TO else_8738246211597 + j else_8738246211597 + + then_8738246211597: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 284($sp) + + # internal_0 <- internal_7 + lw $t0, 284($sp) + sw $t0, 312($sp) + + # JUMP TO endif_8738246211597 + j endif_8738246211597 + + else_8738246211597: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 280($sp) + + # internal_0 <- internal_8 + lw $t0, 280($sp) + sw $t0, 312($sp) + + # JUMP TO endif_8738246211597 + j endif_8738246211597 + + endif_8738246211597: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 272($sp) + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 264($sp) + + # GET METHOD south OF CellularAutomaton + lw $t0, 320($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 264($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 260($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 332($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_13 + lw $t0, 272($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 280($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 256($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_11] + lw $t0, 280($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 268($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 264($sp) + addi $sp, $sp, 12 + + # internal_10 <- internal_15 + lw $t0, 252($sp) + sw $t0, 272($sp) + + # IF internal_10 THEN GOTO then_8738246211645 + lw $t0, 272($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246211645 + + # JUMP TO else_8738246211645 + j else_8738246211645 + + then_8738246211645: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 248($sp) + + # internal_9 <- internal_16 + lw $t0, 248($sp) + sw $t0, 276($sp) + + # JUMP TO endif_8738246211645 + j endif_8738246211645 + + else_8738246211645: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 244($sp) + + # internal_9 <- internal_17 + lw $t0, 244($sp) + sw $t0, 276($sp) + + # JUMP TO endif_8738246211645 + j endif_8738246211645 + + endif_8738246211645: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 324($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 288($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 252($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 232($sp) + + # ALLOCATING INT -> 16 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 16 + sw $t0, 8($v0) + sw $v0, 224($sp) + + # GET METHOD east OF CellularAutomaton + lw $t0, 320($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 224($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 220($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 332($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 232($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 240($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 216($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_21] + lw $t0, 240($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_24] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 224($sp) + addi $sp, $sp, 12 + + # internal_20 <- internal_25 + lw $t0, 212($sp) + sw $t0, 232($sp) + + # IF internal_20 THEN GOTO then_8738246211690 + lw $t0, 232($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246211690 + + # JUMP TO else_8738246211690 + j else_8738246211690 + + then_8738246211690: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # internal_19 <- internal_26 + lw $t0, 208($sp) + sw $t0, 236($sp) + + # JUMP TO endif_8738246211690 + j endif_8738246211690 + + else_8738246211690: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 204($sp) + + # internal_19 <- internal_27 + lw $t0, 204($sp) + sw $t0, 236($sp) + + # JUMP TO endif_8738246211690 + j endif_8738246211690 + + endif_8738246211690: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 252($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 248($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 212($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # ALLOCATING INT -> 17 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 17 + sw $t0, 8($v0) + sw $v0, 184($sp) + + # GET METHOD west OF CellularAutomaton + lw $t0, 320($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 184($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 180($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 332($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_33 + lw $t0, 192($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 200($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 176($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 200($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_34] + lw $t0, 188($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 184($sp) + addi $sp, $sp, 12 + + # internal_30 <- internal_35 + lw $t0, 172($sp) + sw $t0, 192($sp) + + # IF internal_30 THEN GOTO then_8738246211735 + lw $t0, 192($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246211735 + + # JUMP TO else_8738246211735 + j else_8738246211735 + + then_8738246211735: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # internal_29 <- internal_36 + lw $t0, 168($sp) + sw $t0, 196($sp) + + # JUMP TO endif_8738246211735 + j endif_8738246211735 + + else_8738246211735: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 164($sp) + + # internal_29 <- internal_37 + lw $t0, 164($sp) + sw $t0, 196($sp) + + # JUMP TO endif_8738246211735 + j endif_8738246211735 + + endif_8738246211735: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_28] + lw $t0, 212($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 208($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 152($sp) + + # ALLOCATING INT -> 19 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 19 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # GET METHOD northeast OF CellularAutomaton + lw $t0, 320($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 144($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 332($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_43 + lw $t0, 152($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 160($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 136($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_41] + lw $t0, 160($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_44] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # internal_40 <- internal_45 + lw $t0, 132($sp) + sw $t0, 152($sp) + + # IF internal_40 THEN GOTO then_8738246211780 + lw $t0, 152($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246211780 + + # JUMP TO else_8738246211780 + j else_8738246211780 + + then_8738246211780: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # internal_39 <- internal_46 + lw $t0, 128($sp) + sw $t0, 156($sp) + + # JUMP TO endif_8738246211780 + j endif_8738246211780 + + else_8738246211780: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # internal_39 <- internal_47 + lw $t0, 124($sp) + sw $t0, 156($sp) + + # JUMP TO endif_8738246211780 + j endif_8738246211780 + + endif_8738246211780: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_38] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_39] + lw $t0, 168($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # ALLOCATING INT -> 18 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 18 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # GET METHOD northwest OF CellularAutomaton + lw $t0, 320($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 104($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 100($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 332($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_53 + lw $t0, 112($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 120($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 96($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_51] + lw $t0, 120($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_54] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 104($sp) + addi $sp, $sp, 12 + + # internal_50 <- internal_55 + lw $t0, 92($sp) + sw $t0, 112($sp) + + # IF internal_50 THEN GOTO then_8738246211825 + lw $t0, 112($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246211825 + + # JUMP TO else_8738246211825 + j else_8738246211825 + + then_8738246211825: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # internal_49 <- internal_56 + lw $t0, 88($sp) + sw $t0, 116($sp) + + # JUMP TO endif_8738246211825 + j endif_8738246211825 + + else_8738246211825: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # internal_49 <- internal_57 + lw $t0, 84($sp) + sw $t0, 116($sp) + + # JUMP TO endif_8738246211825 + j endif_8738246211825 + + endif_8738246211825: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_48] + lw $t0, 132($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 128($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # ALLOCATING INT -> 20 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 20 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD southeast OF CellularAutomaton + lw $t0, 320($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 332($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_63 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_61] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_64] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # internal_60 <- internal_65 + lw $t0, 52($sp) + sw $t0, 72($sp) + + # IF internal_60 THEN GOTO then_8738246212386 + lw $t0, 72($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246212386 + + # JUMP TO else_8738246212386 + j else_8738246212386 + + then_8738246212386: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # internal_59 <- internal_66 + lw $t0, 48($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8738246212386 + j endif_8738246212386 + + else_8738246212386: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # internal_59 <- internal_67 + lw $t0, 44($sp) + sw $t0, 76($sp) + + # JUMP TO endif_8738246212386 + j endif_8738246212386 + + endif_8738246212386: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_58] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_59] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # ALLOCATING INT -> 21 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 21 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD southwest OF CellularAutomaton + lw $t0, 320($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 332($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 328($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_73 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_71] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_74] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # internal_70 <- internal_75 + lw $t0, 12($sp) + sw $t0, 32($sp) + + # IF internal_70 THEN GOTO then_8738246212431 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246212431 + + # JUMP TO else_8738246212431 + j else_8738246212431 + + then_8738246212431: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # internal_69 <- internal_76 + lw $t0, 8($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8738246212431 + j endif_8738246212431 + + else_8738246212431: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # internal_69 <- internal_77 + lw $t0, 4($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8738246212431 + j endif_8738246212431 + + endif_8738246212431: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_68] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_69] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 316 + + jr $ra + + function_cell_at_next_evolution_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -100 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # ALLOCATING INT -> 22 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 22 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD neighbors OF CellularAutomaton + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 92($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_6 + lw $t0, 72($sp) + sw $t0, 92($sp) + + # IF internal_1 THEN GOTO then_8738246212485 + lw $t0, 92($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246212485 + + # JUMP TO else_8738246212485 + j else_8738246212485 + + then_8738246212485: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 68($sp) + + # internal_0 <- internal_7 + lw $t0, 68($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8738246212485 + j endif_8738246212485 + + else_8738246212485: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING INT -> 22 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 22 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD neighbors OF CellularAutomaton + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_9 <- internal_14 + lw $t0, 40($sp) + sw $t0, 60($sp) + + # IF internal_9 THEN GOTO then_8738246212509 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246212509 + + # JUMP TO else_8738246212509 + j else_8738246212509 + + then_8738246212509: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD cell OF CellularAutomaton + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_17] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_21 + lw $t0, 12($sp) + sw $t0, 32($sp) + + # IF internal_16 THEN GOTO then_8738246212581 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246212581 + + # JUMP TO else_8738246212581 + j else_8738246212581 + + then_8738246212581: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # internal_15 <- internal_22 + lw $t0, 8($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8738246212581 + j endif_8738246212581 + + else_8738246212581: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 45 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 4($sp) + + # internal_15 <- internal_23 + lw $t0, 4($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8738246212581 + j endif_8738246212581 + + endif_8738246212581: + + # internal_8 <- internal_15 + lw $t0, 36($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8738246212509 + j endif_8738246212509 + + else_8738246212509: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 45 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 0($sp) + + # internal_8 <- internal_24 + lw $t0, 0($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8738246212509 + j endif_8738246212509 + + endif_8738246212509: + + # internal_0 <- internal_8 + lw $t0, 64($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8738246212485 + j endif_8738246212485 + + endif_8738246212485: + + lw $v1, 96($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 100 + + jr $ra + + function_evolve_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -68 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD num_cells OF CellularAutomaton + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 40($sp) + + # ALLOCATING NUll INTO -> internal_7 + sw $zero, 36($sp) + + while_start_8738246212868: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [num] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # IF internal_8 THEN GOTO while_body_8738246212868 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8738246212868 + + # JUMP TO while_end_8738246212868 + j while_end_8738246212868 + + while_body_8738246212868: + + # ALLOCATING INT -> 23 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 23 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD cell_at_next_evolution OF CellularAutomaton + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [position] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # GET METHOD concat OF String + lw $t0, 40($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 12($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 8($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [temp] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 20($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [temp] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [position] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 76($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8738246212868 + j while_start_8738246212868 + + while_end_8738246212868: + + # SET ATTRIBUTE population_map OF self + lw $t0, 68($sp) + lw $t1, 40($sp) + beq $t1, $zero, object_set_attribute_8738246164658 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246164658 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246164658 + j object_set_attribute_8738246164658 + int_set_attribute_8738246164658: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8738246164658 + bool_set_attribute_8738246164658: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8738246164658 + object_set_attribute_8738246164658: + sw $t1, 20($t0) + end_set_attribute_8738246164658: + + lw $v1, 68($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 68 + + jr $ra + + function_option_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -824 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 820($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + addi $t0, $zero, 80 + sb $t0, 9($v0) + + addi $t0, $zero, 108 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 97 + sb $t0, 12($v0) + + addi $t0, $zero, 115 + sb $t0, 13($v0) + + addi $t0, $zero, 101 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 99 + sb $t0, 16($v0) + + addi $t0, $zero, 104 + sb $t0, 17($v0) + + addi $t0, $zero, 111 + sb $t0, 18($v0) + + addi $t0, $zero, 115 + sb $t0, 19($v0) + + addi $t0, $zero, 101 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 97 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 110 + sb $t0, 24($v0) + + addi $t0, $zero, 117 + sb $t0, 25($v0) + + addi $t0, $zero, 109 + sb $t0, 26($v0) + + addi $t0, $zero, 98 + sb $t0, 27($v0) + + addi $t0, $zero, 101 + sb $t0, 28($v0) + + addi $t0, $zero, 114 + sb $t0, 29($v0) + + addi $t0, $zero, 58 + sb $t0, 30($v0) + + addi $t0, $zero, 10 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 816($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 808($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 808($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 804($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 828($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 816($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 824($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 58 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 65 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 114 + sb $t0, 15($v0) + + addi $t0, $zero, 111 + sb $t0, 16($v0) + + addi $t0, $zero, 115 + sb $t0, 17($v0) + + addi $t0, $zero, 115 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 800($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 792($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 792($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 788($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 812($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 800($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 808($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 56 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 56 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 50 + sb $t0, 9($v0) + + addi $t0, $zero, 58 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 65 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 115 + sb $t0, 14($v0) + + addi $t0, $zero, 108 + sb $t0, 15($v0) + + addi $t0, $zero, 97 + sb $t0, 16($v0) + + addi $t0, $zero, 115 + sb $t0, 17($v0) + + addi $t0, $zero, 104 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 102 + sb $t0, 20($v0) + + addi $t0, $zero, 114 + sb $t0, 21($v0) + + addi $t0, $zero, 111 + sb $t0, 22($v0) + + addi $t0, $zero, 109 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 116 + sb $t0, 25($v0) + + addi $t0, $zero, 104 + sb $t0, 26($v0) + + addi $t0, $zero, 101 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 117 + sb $t0, 29($v0) + + addi $t0, $zero, 112 + sb $t0, 30($v0) + + addi $t0, $zero, 112 + sb $t0, 31($v0) + + addi $t0, $zero, 101 + sb $t0, 32($v0) + + addi $t0, $zero, 114 + sb $t0, 33($v0) + + addi $t0, $zero, 32 + sb $t0, 34($v0) + + addi $t0, $zero, 108 + sb $t0, 35($v0) + + addi $t0, $zero, 101 + sb $t0, 36($v0) + + addi $t0, $zero, 102 + sb $t0, 37($v0) + + addi $t0, $zero, 116 + sb $t0, 38($v0) + + addi $t0, $zero, 32 + sb $t0, 39($v0) + + addi $t0, $zero, 116 + sb $t0, 40($v0) + + addi $t0, $zero, 111 + sb $t0, 41($v0) + + addi $t0, $zero, 32 + sb $t0, 42($v0) + + addi $t0, $zero, 108 + sb $t0, 43($v0) + + addi $t0, $zero, 111 + sb $t0, 44($v0) + + addi $t0, $zero, 119 + sb $t0, 45($v0) + + addi $t0, $zero, 101 + sb $t0, 46($v0) + + addi $t0, $zero, 114 + sb $t0, 47($v0) + + addi $t0, $zero, 32 + sb $t0, 48($v0) + + addi $t0, $zero, 114 + sb $t0, 49($v0) + + addi $t0, $zero, 105 + sb $t0, 50($v0) + + addi $t0, $zero, 103 + sb $t0, 51($v0) + + addi $t0, $zero, 104 + sb $t0, 52($v0) + + addi $t0, $zero, 116 + sb $t0, 53($v0) + + addi $t0, $zero, 10 + sb $t0, 54($v0) + + sb $zero, 55($v0) + + sw $v0, 784($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 776($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 776($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 772($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 796($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 784($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 792($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 56 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 56 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 51 + sb $t0, 9($v0) + + addi $t0, $zero, 58 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 65 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 115 + sb $t0, 14($v0) + + addi $t0, $zero, 108 + sb $t0, 15($v0) + + addi $t0, $zero, 97 + sb $t0, 16($v0) + + addi $t0, $zero, 115 + sb $t0, 17($v0) + + addi $t0, $zero, 104 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 102 + sb $t0, 20($v0) + + addi $t0, $zero, 114 + sb $t0, 21($v0) + + addi $t0, $zero, 111 + sb $t0, 22($v0) + + addi $t0, $zero, 109 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 116 + sb $t0, 25($v0) + + addi $t0, $zero, 104 + sb $t0, 26($v0) + + addi $t0, $zero, 101 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 117 + sb $t0, 29($v0) + + addi $t0, $zero, 112 + sb $t0, 30($v0) + + addi $t0, $zero, 112 + sb $t0, 31($v0) + + addi $t0, $zero, 101 + sb $t0, 32($v0) + + addi $t0, $zero, 114 + sb $t0, 33($v0) + + addi $t0, $zero, 32 + sb $t0, 34($v0) + + addi $t0, $zero, 114 + sb $t0, 35($v0) + + addi $t0, $zero, 105 + sb $t0, 36($v0) + + addi $t0, $zero, 103 + sb $t0, 37($v0) + + addi $t0, $zero, 104 + sb $t0, 38($v0) + + addi $t0, $zero, 116 + sb $t0, 39($v0) + + addi $t0, $zero, 32 + sb $t0, 40($v0) + + addi $t0, $zero, 116 + sb $t0, 41($v0) + + addi $t0, $zero, 111 + sb $t0, 42($v0) + + addi $t0, $zero, 32 + sb $t0, 43($v0) + + addi $t0, $zero, 108 + sb $t0, 44($v0) + + addi $t0, $zero, 111 + sb $t0, 45($v0) + + addi $t0, $zero, 119 + sb $t0, 46($v0) + + addi $t0, $zero, 101 + sb $t0, 47($v0) + + addi $t0, $zero, 114 + sb $t0, 48($v0) + + addi $t0, $zero, 32 + sb $t0, 49($v0) + + addi $t0, $zero, 108 + sb $t0, 50($v0) + + addi $t0, $zero, 101 + sb $t0, 51($v0) + + addi $t0, $zero, 102 + sb $t0, 52($v0) + + addi $t0, $zero, 116 + sb $t0, 53($v0) + + addi $t0, $zero, 10 + sb $t0, 54($v0) + + sb $zero, 55($v0) + + sw $v0, 768($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 760($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 760($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 756($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 780($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 768($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 776($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 18 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 18 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 52 + sb $t0, 9($v0) + + addi $t0, $zero, 58 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 65 + sb $t0, 12($v0) + + addi $t0, $zero, 110 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 88 + sb $t0, 15($v0) + + addi $t0, $zero, 10 + sb $t0, 16($v0) + + sb $zero, 17($v0) + + sw $v0, 752($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 744($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 744($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 740($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 764($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_20 + lw $t0, 752($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 760($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 53 + sb $t0, 9($v0) + + addi $t0, $zero, 58 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 65 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 103 + sb $t0, 14($v0) + + addi $t0, $zero, 114 + sb $t0, 15($v0) + + addi $t0, $zero, 101 + sb $t0, 16($v0) + + addi $t0, $zero, 97 + sb $t0, 17($v0) + + addi $t0, $zero, 116 + sb $t0, 18($v0) + + addi $t0, $zero, 101 + sb $t0, 19($v0) + + addi $t0, $zero, 114 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 116 + sb $t0, 22($v0) + + addi $t0, $zero, 104 + sb $t0, 23($v0) + + addi $t0, $zero, 97 + sb $t0, 24($v0) + + addi $t0, $zero, 110 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 115 + sb $t0, 27($v0) + + addi $t0, $zero, 105 + sb $t0, 28($v0) + + addi $t0, $zero, 103 + sb $t0, 29($v0) + + addi $t0, $zero, 110 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 10 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 736($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 728($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 728($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 724($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 748($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_24 + lw $t0, 736($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 744($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 30 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 30 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 54 + sb $t0, 9($v0) + + addi $t0, $zero, 58 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 65 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 108 + sb $t0, 14($v0) + + addi $t0, $zero, 101 + sb $t0, 15($v0) + + addi $t0, $zero, 115 + sb $t0, 16($v0) + + addi $t0, $zero, 115 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 116 + sb $t0, 19($v0) + + addi $t0, $zero, 104 + sb $t0, 20($v0) + + addi $t0, $zero, 97 + sb $t0, 21($v0) + + addi $t0, $zero, 110 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 115 + sb $t0, 24($v0) + + addi $t0, $zero, 105 + sb $t0, 25($v0) + + addi $t0, $zero, 103 + sb $t0, 26($v0) + + addi $t0, $zero, 110 + sb $t0, 27($v0) + + addi $t0, $zero, 10 + sb $t0, 28($v0) + + sb $zero, 29($v0) + + sw $v0, 720($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 712($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 712($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 708($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_25] + lw $t0, 732($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_28 + lw $t0, 720($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 728($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 36 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 36 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 55 + sb $t0, 9($v0) + + addi $t0, $zero, 58 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 84 + sb $t0, 12($v0) + + addi $t0, $zero, 119 + sb $t0, 13($v0) + + addi $t0, $zero, 111 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 103 + sb $t0, 16($v0) + + addi $t0, $zero, 114 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 97 + sb $t0, 19($v0) + + addi $t0, $zero, 116 + sb $t0, 20($v0) + + addi $t0, $zero, 101 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 116 + sb $t0, 24($v0) + + addi $t0, $zero, 104 + sb $t0, 25($v0) + + addi $t0, $zero, 97 + sb $t0, 26($v0) + + addi $t0, $zero, 110 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 105 + sb $t0, 30($v0) + + addi $t0, $zero, 103 + sb $t0, 31($v0) + + addi $t0, $zero, 110 + sb $t0, 32($v0) + + addi $t0, $zero, 115 + sb $t0, 33($v0) + + addi $t0, $zero, 10 + sb $t0, 34($v0) + + sb $zero, 35($v0) + + sw $v0, 704($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 696($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 696($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 692($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 716($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_32 + lw $t0, 704($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 712($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 56 + sb $t0, 9($v0) + + addi $t0, $zero, 58 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 84 + sb $t0, 12($v0) + + addi $t0, $zero, 119 + sb $t0, 13($v0) + + addi $t0, $zero, 111 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 115 + sb $t0, 18($v0) + + addi $t0, $zero, 115 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 116 + sb $t0, 21($v0) + + addi $t0, $zero, 104 + sb $t0, 22($v0) + + addi $t0, $zero, 97 + sb $t0, 23($v0) + + addi $t0, $zero, 110 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 115 + sb $t0, 26($v0) + + addi $t0, $zero, 105 + sb $t0, 27($v0) + + addi $t0, $zero, 103 + sb $t0, 28($v0) + + addi $t0, $zero, 110 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 10 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 688($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 680($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 680($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 676($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_33] + lw $t0, 700($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_36 + lw $t0, 688($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 696($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 19 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 19 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 57 + sb $t0, 9($v0) + + addi $t0, $zero, 58 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 65 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 39 + sb $t0, 14($v0) + + addi $t0, $zero, 86 + sb $t0, 15($v0) + + addi $t0, $zero, 39 + sb $t0, 16($v0) + + addi $t0, $zero, 10 + sb $t0, 17($v0) + + sb $zero, 18($v0) + + sw $v0, 672($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 664($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 664($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 660($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_37] + lw $t0, 684($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_40 + lw $t0, 672($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 680($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 29 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 29 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 48 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 105 + sb $t0, 16($v0) + + addi $t0, $zero, 110 + sb $t0, 17($v0) + + addi $t0, $zero, 118 + sb $t0, 18($v0) + + addi $t0, $zero, 101 + sb $t0, 19($v0) + + addi $t0, $zero, 114 + sb $t0, 20($v0) + + addi $t0, $zero, 115 + sb $t0, 21($v0) + + addi $t0, $zero, 101 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 39 + sb $t0, 24($v0) + + addi $t0, $zero, 86 + sb $t0, 25($v0) + + addi $t0, $zero, 39 + sb $t0, 26($v0) + + addi $t0, $zero, 10 + sb $t0, 27($v0) + + sb $zero, 28($v0) + + sw $v0, 656($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 648($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 648($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 644($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_41] + lw $t0, 668($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_44 + lw $t0, 656($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 664($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 40 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 40 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 49 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 78 + sb $t0, 13($v0) + + addi $t0, $zero, 117 + sb $t0, 14($v0) + + addi $t0, $zero, 109 + sb $t0, 15($v0) + + addi $t0, $zero, 98 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 114 + sb $t0, 18($v0) + + addi $t0, $zero, 115 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 57 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 97 + sb $t0, 23($v0) + + addi $t0, $zero, 110 + sb $t0, 24($v0) + + addi $t0, $zero, 100 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 49 + sb $t0, 27($v0) + + addi $t0, $zero, 48 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 99 + sb $t0, 30($v0) + + addi $t0, $zero, 111 + sb $t0, 31($v0) + + addi $t0, $zero, 109 + sb $t0, 32($v0) + + addi $t0, $zero, 98 + sb $t0, 33($v0) + + addi $t0, $zero, 105 + sb $t0, 34($v0) + + addi $t0, $zero, 110 + sb $t0, 35($v0) + + addi $t0, $zero, 101 + sb $t0, 36($v0) + + addi $t0, $zero, 100 + sb $t0, 37($v0) + + addi $t0, $zero, 10 + sb $t0, 38($v0) + + sb $zero, 39($v0) + + sw $v0, 640($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 632($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 632($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 628($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_45] + lw $t0, 652($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_48 + lw $t0, 640($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 648($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 26 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 26 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 50 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 102 + sb $t0, 15($v0) + + addi $t0, $zero, 117 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 108 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 103 + sb $t0, 20($v0) + + addi $t0, $zero, 114 + sb $t0, 21($v0) + + addi $t0, $zero, 105 + sb $t0, 22($v0) + + addi $t0, $zero, 100 + sb $t0, 23($v0) + + addi $t0, $zero, 10 + sb $t0, 24($v0) + + sb $zero, 25($v0) + + sw $v0, 624($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 616($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 616($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 612($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_49] + lw $t0, 636($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_52 + lw $t0, 624($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 632($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 20 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 20 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 51 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 39 + sb $t0, 15($v0) + + addi $t0, $zero, 84 + sb $t0, 16($v0) + + addi $t0, $zero, 39 + sb $t0, 17($v0) + + addi $t0, $zero, 10 + sb $t0, 18($v0) + + sb $zero, 19($v0) + + sw $v0, 608($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 600($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 600($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 596($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_53] + lw $t0, 620($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_56 + lw $t0, 608($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 616($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 25 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 25 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 52 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 112 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 117 + sb $t0, 17($v0) + + addi $t0, $zero, 115 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 39 + sb $t0, 20($v0) + + addi $t0, $zero, 43 + sb $t0, 21($v0) + + addi $t0, $zero, 39 + sb $t0, 22($v0) + + addi $t0, $zero, 10 + sb $t0, 23($v0) + + sb $zero, 24($v0) + + sw $v0, 592($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 584($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 584($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 580($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_57] + lw $t0, 604($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_60 + lw $t0, 592($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 600($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 20 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 20 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 53 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 39 + sb $t0, 15($v0) + + addi $t0, $zero, 87 + sb $t0, 16($v0) + + addi $t0, $zero, 39 + sb $t0, 17($v0) + + addi $t0, $zero, 10 + sb $t0, 18($v0) + + sb $zero, 19($v0) + + sw $v0, 576($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 568($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 568($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 564($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_61] + lw $t0, 588($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_64 + lw $t0, 576($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 584($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 54 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 39 + sb $t0, 16($v0) + + addi $t0, $zero, 77 + sb $t0, 17($v0) + + addi $t0, $zero, 39 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 560($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 552($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 552($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 548($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_65] + lw $t0, 572($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_68 + lw $t0, 560($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 568($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 55 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 39 + sb $t0, 16($v0) + + addi $t0, $zero, 69 + sb $t0, 17($v0) + + addi $t0, $zero, 39 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 544($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 536($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 536($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 532($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_69] + lw $t0, 556($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_72 + lw $t0, 544($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 552($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 20 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 20 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 56 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 39 + sb $t0, 15($v0) + + addi $t0, $zero, 51 + sb $t0, 16($v0) + + addi $t0, $zero, 39 + sb $t0, 17($v0) + + addi $t0, $zero, 10 + sb $t0, 18($v0) + + sb $zero, 19($v0) + + sw $v0, 528($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 520($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 520($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 516($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_73] + lw $t0, 540($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_76 + lw $t0, 528($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 536($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 49 + sb $t0, 9($v0) + + addi $t0, $zero, 57 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 39 + sb $t0, 16($v0) + + addi $t0, $zero, 79 + sb $t0, 17($v0) + + addi $t0, $zero, 39 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 512($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 504($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 504($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 500($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_77] + lw $t0, 524($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_80 + lw $t0, 512($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 520($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 50 + sb $t0, 9($v0) + + addi $t0, $zero, 48 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 39 + sb $t0, 16($v0) + + addi $t0, $zero, 56 + sb $t0, 17($v0) + + addi $t0, $zero, 39 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 496($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 488($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 488($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 484($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_81] + lw $t0, 508($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_84 + lw $t0, 496($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 504($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 21 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 21 + sw $t0, 4($v0) + + addi $t0, $zero, 9 + sb $t0, 8($v0) + + addi $t0, $zero, 50 + sb $t0, 9($v0) + + addi $t0, $zero, 49 + sb $t0, 10($v0) + + addi $t0, $zero, 58 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 65 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 39 + sb $t0, 16($v0) + + addi $t0, $zero, 83 + sb $t0, 17($v0) + + addi $t0, $zero, 39 + sb $t0, 18($v0) + + addi $t0, $zero, 10 + sb $t0, 19($v0) + + sb $zero, 20($v0) + + sw $v0, 480($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 472($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 472($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 468($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_85] + lw $t0, 492($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_88 + lw $t0, 480($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 488($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 24 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 24 + sw $t0, 4($v0) + + addi $t0, $zero, 89 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 117 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 99 + sb $t0, 13($v0) + + addi $t0, $zero, 104 + sb $t0, 14($v0) + + addi $t0, $zero, 111 + sb $t0, 15($v0) + + addi $t0, $zero, 105 + sb $t0, 16($v0) + + addi $t0, $zero, 99 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 61 + sb $t0, 20($v0) + + addi $t0, $zero, 62 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + sb $zero, 23($v0) + + sw $v0, 464($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 456($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 456($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 452($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_89] + lw $t0, 476($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_92 + lw $t0, 464($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 472($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 444($sp) + + # GET METHOD in_int OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 444($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 440($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 832($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_95 + lw $t0, 448($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 456($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_93] + lw $t0, 460($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 832($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 436($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 428($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 824($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 428($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 424($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 836($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_96] + lw $t0, 448($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_99 + lw $t0, 436($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 444($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 416($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 412($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_102] + lw $t0, 424($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 420($sp) + addi $sp, $sp, 12 + + # internal_101 <- internal_103 + lw $t0, 408($sp) + sw $t0, 416($sp) + + # IF internal_101 THEN GOTO then_8738246214843 + lw $t0, 416($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246214843 + + # JUMP TO else_8738246214843 + j else_8738246214843 + + then_8738246214843: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 29 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 29 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 88 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 88 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 88 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 88 + sb $t0, 18($v0) + + addi $t0, $zero, 88 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 88 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 88 + sb $t0, 24($v0) + + addi $t0, $zero, 88 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + sb $zero, 28($v0) + + sw $v0, 404($sp) + + # internal_100 <- internal_104 + lw $t0, 404($sp) + sw $t0, 420($sp) + + # JUMP TO endif_8738246214843 + j endif_8738246214843 + + else_8738246214843: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 396($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 392($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_107] + lw $t0, 404($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 400($sp) + addi $sp, $sp, 12 + + # internal_106 <- internal_108 + lw $t0, 388($sp) + sw $t0, 396($sp) + + # IF internal_106 THEN GOTO then_8738246214897 + lw $t0, 396($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246214897 + + # JUMP TO else_8738246214897 + j else_8738246214897 + + then_8738246214897: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 88 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 88 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 32 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 384($sp) + + # internal_105 <- internal_109 + lw $t0, 384($sp) + sw $t0, 400($sp) + + # JUMP TO endif_8738246214897 + j endif_8738246214897 + + else_8738246214897: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 376($sp) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 372($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_112] + lw $t0, 384($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 380($sp) + addi $sp, $sp, 12 + + # internal_111 <- internal_113 + lw $t0, 368($sp) + sw $t0, 376($sp) + + # IF internal_111 THEN GOTO then_8738246182443 + lw $t0, 376($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246182443 + + # JUMP TO else_8738246182443 + j else_8738246182443 + + then_8738246182443: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 88 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 88 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 364($sp) + + # internal_110 <- internal_114 + lw $t0, 364($sp) + sw $t0, 380($sp) + + # JUMP TO endif_8738246182443 + j endif_8738246182443 + + else_8738246182443: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 356($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 352($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_117] + lw $t0, 364($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 360($sp) + addi $sp, $sp, 12 + + # internal_116 <- internal_118 + lw $t0, 348($sp) + sw $t0, 356($sp) + + # IF internal_116 THEN GOTO then_8738246182497 + lw $t0, 356($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246182497 + + # JUMP TO else_8738246182497 + j else_8738246182497 + + then_8738246182497: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 88 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 88 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 88 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 88 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 344($sp) + + # internal_115 <- internal_119 + lw $t0, 344($sp) + sw $t0, 360($sp) + + # JUMP TO endif_8738246182497 + j endif_8738246182497 + + else_8738246182497: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 336($sp) + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 332($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_122] + lw $t0, 344($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 340($sp) + addi $sp, $sp, 12 + + # internal_121 <- internal_123 + lw $t0, 328($sp) + sw $t0, 336($sp) + + # IF internal_121 THEN GOTO then_8738246182551 + lw $t0, 336($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246182551 + + # JUMP TO else_8738246182551 + j else_8738246182551 + + then_8738246182551: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 88 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 88 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 32 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 324($sp) + + # internal_120 <- internal_124 + lw $t0, 324($sp) + sw $t0, 340($sp) + + # JUMP TO endif_8738246182551 + j endif_8738246182551 + + else_8738246182551: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 316($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 312($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_127] + lw $t0, 324($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 320($sp) + addi $sp, $sp, 12 + + # internal_126 <- internal_128 + lw $t0, 308($sp) + sw $t0, 316($sp) + + # IF internal_126 THEN GOTO then_8738246182605 + lw $t0, 316($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246182605 + + # JUMP TO else_8738246182605 + j else_8738246182605 + + then_8738246182605: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 88 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 88 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 304($sp) + + # internal_125 <- internal_129 + lw $t0, 304($sp) + sw $t0, 320($sp) + + # JUMP TO endif_8738246182605 + j endif_8738246182605 + + else_8738246182605: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 296($sp) + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 292($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_132] + lw $t0, 304($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 300($sp) + addi $sp, $sp, 12 + + # internal_131 <- internal_133 + lw $t0, 288($sp) + sw $t0, 296($sp) + + # IF internal_131 THEN GOTO then_8738246182919 + lw $t0, 296($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246182919 + + # JUMP TO else_8738246182919 + j else_8738246182919 + + then_8738246182919: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 29 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 29 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 88 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 88 + sb $t0, 17($v0) + + addi $t0, $zero, 88 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 88 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + sb $zero, 28($v0) + + sw $v0, 284($sp) + + # internal_130 <- internal_134 + lw $t0, 284($sp) + sw $t0, 300($sp) + + # JUMP TO endif_8738246182919 + j endif_8738246182919 + + else_8738246182919: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 276($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 272($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_137] + lw $t0, 284($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 280($sp) + addi $sp, $sp, 12 + + # internal_136 <- internal_138 + lw $t0, 268($sp) + sw $t0, 276($sp) + + # IF internal_136 THEN GOTO then_8738246182973 + lw $t0, 276($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246182973 + + # JUMP TO else_8738246182973 + j else_8738246182973 + + then_8738246182973: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 29 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 29 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 88 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 88 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 88 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + sb $zero, 28($v0) + + sw $v0, 264($sp) + + # internal_135 <- internal_139 + lw $t0, 264($sp) + sw $t0, 280($sp) + + # JUMP TO endif_8738246182973 + j endif_8738246182973 + + else_8738246182973: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 256($sp) + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 252($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_142] + lw $t0, 264($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 260($sp) + addi $sp, $sp, 12 + + # internal_141 <- internal_143 + lw $t0, 248($sp) + sw $t0, 256($sp) + + # IF internal_141 THEN GOTO then_8738246183027 + lw $t0, 256($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246183027 + + # JUMP TO else_8738246183027 + j else_8738246183027 + + then_8738246183027: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 24 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 24 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + sb $zero, 23($v0) + + sw $v0, 244($sp) + + # internal_140 <- internal_144 + lw $t0, 244($sp) + sw $t0, 260($sp) + + # JUMP TO endif_8738246183027 + j endif_8738246183027 + + else_8738246183027: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 236($sp) + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 232($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_147] + lw $t0, 244($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 240($sp) + addi $sp, $sp, 12 + + # internal_146 <- internal_148 + lw $t0, 228($sp) + sw $t0, 236($sp) + + # IF internal_146 THEN GOTO then_8738246183081 + lw $t0, 236($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246183081 + + # JUMP TO else_8738246183081 + j else_8738246183081 + + then_8738246183081: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 24 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 24 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 88 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + sb $zero, 23($v0) + + sw $v0, 224($sp) + + # internal_145 <- internal_149 + lw $t0, 224($sp) + sw $t0, 240($sp) + + # JUMP TO endif_8738246183081 + j endif_8738246183081 + + else_8738246183081: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 216($sp) + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 212($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_152] + lw $t0, 224($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 220($sp) + addi $sp, $sp, 12 + + # internal_151 <- internal_153 + lw $t0, 208($sp) + sw $t0, 216($sp) + + # IF internal_151 THEN GOTO then_8738246183135 + lw $t0, 216($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246183135 + + # JUMP TO else_8738246183135 + j else_8738246183135 + + then_8738246183135: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 24 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 24 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 88 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + sb $zero, 23($v0) + + sw $v0, 204($sp) + + # internal_150 <- internal_154 + lw $t0, 204($sp) + sw $t0, 220($sp) + + # JUMP TO endif_8738246183135 + j endif_8738246183135 + + else_8738246183135: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 196($sp) + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 192($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_157] + lw $t0, 204($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 200($sp) + addi $sp, $sp, 12 + + # internal_156 <- internal_158 + lw $t0, 188($sp) + sw $t0, 196($sp) + + # IF internal_156 THEN GOTO then_8738246183449 + lw $t0, 196($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246183449 + + # JUMP TO else_8738246183449 + j else_8738246183449 + + then_8738246183449: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 88 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 88 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 88 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 88 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 88 + sb $t0, 17($v0) + + addi $t0, $zero, 88 + sb $t0, 18($v0) + + addi $t0, $zero, 88 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 88 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + addi $t0, $zero, 88 + sb $t0, 23($v0) + + addi $t0, $zero, 88 + sb $t0, 24($v0) + + addi $t0, $zero, 88 + sb $t0, 25($v0) + + addi $t0, $zero, 88 + sb $t0, 26($v0) + + addi $t0, $zero, 88 + sb $t0, 27($v0) + + addi $t0, $zero, 88 + sb $t0, 28($v0) + + addi $t0, $zero, 88 + sb $t0, 29($v0) + + addi $t0, $zero, 88 + sb $t0, 30($v0) + + addi $t0, $zero, 88 + sb $t0, 31($v0) + + addi $t0, $zero, 88 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 184($sp) + + # internal_155 <- internal_159 + lw $t0, 184($sp) + sw $t0, 200($sp) + + # JUMP TO endif_8738246183449 + j endif_8738246183449 + + else_8738246183449: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 172($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_162] + lw $t0, 184($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 180($sp) + addi $sp, $sp, 12 + + # internal_161 <- internal_163 + lw $t0, 168($sp) + sw $t0, 176($sp) + + # IF internal_161 THEN GOTO then_8738246183503 + lw $t0, 176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246183503 + + # JUMP TO else_8738246183503 + j else_8738246183503 + + then_8738246183503: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 88 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 88 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 88 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 88 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 88 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 32 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 164($sp) + + # internal_160 <- internal_164 + lw $t0, 164($sp) + sw $t0, 180($sp) + + # JUMP TO endif_8738246183503 + j endif_8738246183503 + + else_8738246183503: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 156($sp) + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 152($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_167] + lw $t0, 164($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 160($sp) + addi $sp, $sp, 12 + + # internal_166 <- internal_168 + lw $t0, 148($sp) + sw $t0, 156($sp) + + # IF internal_166 THEN GOTO then_8738246183557 + lw $t0, 156($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246183557 + + # JUMP TO else_8738246183557 + j else_8738246183557 + + then_8738246183557: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 88 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 88 + sb $t0, 18($v0) + + addi $t0, $zero, 88 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 88 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 88 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 88 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 32 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 144($sp) + + # internal_165 <- internal_169 + lw $t0, 144($sp) + sw $t0, 160($sp) + + # JUMP TO endif_8738246183557 + j endif_8738246183557 + + else_8738246183557: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_172] + lw $t0, 144($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 140($sp) + addi $sp, $sp, 12 + + # internal_171 <- internal_173 + lw $t0, 128($sp) + sw $t0, 136($sp) + + # IF internal_171 THEN GOTO then_8738246183611 + lw $t0, 136($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246183611 + + # JUMP TO else_8738246183611 + j else_8738246183611 + + then_8738246183611: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 30 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 30 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 88 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 88 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 88 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 88 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + sb $zero, 29($v0) + + sw $v0, 124($sp) + + # internal_170 <- internal_174 + lw $t0, 124($sp) + sw $t0, 140($sp) + + # JUMP TO endif_8738246183611 + j endif_8738246183611 + + else_8738246183611: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 116($sp) + + # ALLOCATING INT -> 16 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 16 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_177] + lw $t0, 124($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 120($sp) + addi $sp, $sp, 12 + + # internal_176 <- internal_178 + lw $t0, 108($sp) + sw $t0, 116($sp) + + # IF internal_176 THEN GOTO then_8738246183665 + lw $t0, 116($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246183665 + + # JUMP TO else_8738246183665 + j else_8738246183665 + + then_8738246183665: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 30 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 30 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 88 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 88 + sb $t0, 28($v0) + + sb $zero, 29($v0) + + sw $v0, 104($sp) + + # internal_175 <- internal_179 + lw $t0, 104($sp) + sw $t0, 120($sp) + + # JUMP TO endif_8738246183665 + j endif_8738246183665 + + else_8738246183665: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # ALLOCATING INT -> 17 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 17 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_182] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 100($sp) + addi $sp, $sp, 12 + + # internal_181 <- internal_183 + lw $t0, 88($sp) + sw $t0, 96($sp) + + # IF internal_181 THEN GOTO then_8738246183979 + lw $t0, 96($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246183979 + + # JUMP TO else_8738246183979 + j else_8738246183979 + + then_8738246183979: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 37 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 37 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 88 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 88 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 88 + sb $t0, 20($v0) + + addi $t0, $zero, 88 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + addi $t0, $zero, 88 + sb $t0, 23($v0) + + addi $t0, $zero, 88 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 88 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 88 + sb $t0, 32($v0) + + addi $t0, $zero, 88 + sb $t0, 33($v0) + + addi $t0, $zero, 88 + sb $t0, 34($v0) + + addi $t0, $zero, 88 + sb $t0, 35($v0) + + sb $zero, 36($v0) + + sw $v0, 84($sp) + + # internal_180 <- internal_184 + lw $t0, 84($sp) + sw $t0, 100($sp) + + # JUMP TO endif_8738246183979 + j endif_8738246183979 + + else_8738246183979: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # ALLOCATING INT -> 18 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 18 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_187] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # internal_186 <- internal_188 + lw $t0, 68($sp) + sw $t0, 76($sp) + + # IF internal_186 THEN GOTO then_8738246184033 + lw $t0, 76($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246184033 + + # JUMP TO else_8738246184033 + j else_8738246184033 + + then_8738246184033: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 37 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 37 + sw $t0, 4($v0) + + addi $t0, $zero, 88 + sb $t0, 8($v0) + + addi $t0, $zero, 88 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 88 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 88 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 88 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 88 + sb $t0, 31($v0) + + addi $t0, $zero, 88 + sb $t0, 32($v0) + + addi $t0, $zero, 88 + sb $t0, 33($v0) + + addi $t0, $zero, 88 + sb $t0, 34($v0) + + addi $t0, $zero, 32 + sb $t0, 35($v0) + + sb $zero, 36($v0) + + sw $v0, 64($sp) + + # internal_185 <- internal_189 + lw $t0, 64($sp) + sw $t0, 80($sp) + + # JUMP TO endif_8738246184033 + j endif_8738246184033 + + else_8738246184033: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # ALLOCATING INT -> 19 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 19 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_192] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # internal_191 <- internal_193 + lw $t0, 48($sp) + sw $t0, 56($sp) + + # IF internal_191 THEN GOTO then_8738246184087 + lw $t0, 56($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246184087 + + # JUMP TO else_8738246184087 + j else_8738246184087 + + then_8738246184087: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 25 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 25 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 88 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 88 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 88 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 88 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + sb $zero, 24($v0) + + sw $v0, 44($sp) + + # internal_190 <- internal_194 + lw $t0, 44($sp) + sw $t0, 60($sp) + + # JUMP TO endif_8738246184087 + j endif_8738246184087 + + else_8738246184087: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING INT -> 20 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 20 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_197] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # internal_196 <- internal_198 + lw $t0, 28($sp) + sw $t0, 36($sp) + + # IF internal_196 THEN GOTO then_8738246184141 + lw $t0, 36($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246184141 + + # JUMP TO else_8738246184141 + j else_8738246184141 + + then_8738246184141: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 37 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 37 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 88 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 88 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 88 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 88 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 88 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 88 + sb $t0, 27($v0) + + addi $t0, $zero, 88 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 88 + sb $t0, 31($v0) + + addi $t0, $zero, 32 + sb $t0, 32($v0) + + addi $t0, $zero, 88 + sb $t0, 33($v0) + + addi $t0, $zero, 88 + sb $t0, 34($v0) + + addi $t0, $zero, 32 + sb $t0, 35($v0) + + sb $zero, 36($v0) + + sw $v0, 24($sp) + + # internal_195 <- internal_199 + lw $t0, 24($sp) + sw $t0, 40($sp) + + # JUMP TO endif_8738246184141 + j endif_8738246184141 + + else_8738246184141: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # ALLOCATING INT -> 21 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 21 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [num] + lw $t0, 832($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_202] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_201 <- internal_203 + lw $t0, 8($sp) + sw $t0, 16($sp) + + # IF internal_201 THEN GOTO then_8738246184461 + lw $t0, 16($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246184461 + + # JUMP TO else_8738246184461 + j else_8738246184461 + + then_8738246184461: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 37 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 37 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 88 + sb $t0, 9($v0) + + addi $t0, $zero, 88 + sb $t0, 10($v0) + + addi $t0, $zero, 88 + sb $t0, 11($v0) + + addi $t0, $zero, 88 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 88 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 88 + sb $t0, 21($v0) + + addi $t0, $zero, 88 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 88 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 88 + sb $t0, 31($v0) + + addi $t0, $zero, 88 + sb $t0, 32($v0) + + addi $t0, $zero, 88 + sb $t0, 33($v0) + + addi $t0, $zero, 88 + sb $t0, 34($v0) + + addi $t0, $zero, 32 + sb $t0, 35($v0) + + sb $zero, 36($v0) + + sw $v0, 4($sp) + + # internal_200 <- internal_204 + lw $t0, 4($sp) + sw $t0, 20($sp) + + # JUMP TO endif_8738246184461 + j endif_8738246184461 + + else_8738246184461: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 34 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 34 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 32 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 32 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 32 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 32 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 32 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 32 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + addi $t0, $zero, 32 + sb $t0, 32($v0) + + sb $zero, 33($v0) + + sw $v0, 0($sp) + + # internal_200 <- internal_205 + lw $t0, 0($sp) + sw $t0, 20($sp) + + # JUMP TO endif_8738246184461 + j endif_8738246184461 + + endif_8738246184461: + + # internal_195 <- internal_200 + lw $t0, 20($sp) + sw $t0, 40($sp) + + # JUMP TO endif_8738246184141 + j endif_8738246184141 + + endif_8738246184141: + + # internal_190 <- internal_195 + lw $t0, 40($sp) + sw $t0, 60($sp) + + # JUMP TO endif_8738246184087 + j endif_8738246184087 + + endif_8738246184087: + + # internal_185 <- internal_190 + lw $t0, 60($sp) + sw $t0, 80($sp) + + # JUMP TO endif_8738246184033 + j endif_8738246184033 + + endif_8738246184033: + + # internal_180 <- internal_185 + lw $t0, 80($sp) + sw $t0, 100($sp) + + # JUMP TO endif_8738246183979 + j endif_8738246183979 + + endif_8738246183979: + + # internal_175 <- internal_180 + lw $t0, 100($sp) + sw $t0, 120($sp) + + # JUMP TO endif_8738246183665 + j endif_8738246183665 + + endif_8738246183665: + + # internal_170 <- internal_175 + lw $t0, 120($sp) + sw $t0, 140($sp) + + # JUMP TO endif_8738246183611 + j endif_8738246183611 + + endif_8738246183611: + + # internal_165 <- internal_170 + lw $t0, 140($sp) + sw $t0, 160($sp) + + # JUMP TO endif_8738246183557 + j endif_8738246183557 + + endif_8738246183557: + + # internal_160 <- internal_165 + lw $t0, 160($sp) + sw $t0, 180($sp) + + # JUMP TO endif_8738246183503 + j endif_8738246183503 + + endif_8738246183503: + + # internal_155 <- internal_160 + lw $t0, 180($sp) + sw $t0, 200($sp) + + # JUMP TO endif_8738246183449 + j endif_8738246183449 + + endif_8738246183449: + + # internal_150 <- internal_155 + lw $t0, 200($sp) + sw $t0, 220($sp) + + # JUMP TO endif_8738246183135 + j endif_8738246183135 + + endif_8738246183135: + + # internal_145 <- internal_150 + lw $t0, 220($sp) + sw $t0, 240($sp) + + # JUMP TO endif_8738246183081 + j endif_8738246183081 + + endif_8738246183081: + + # internal_140 <- internal_145 + lw $t0, 240($sp) + sw $t0, 260($sp) + + # JUMP TO endif_8738246183027 + j endif_8738246183027 + + endif_8738246183027: + + # internal_135 <- internal_140 + lw $t0, 260($sp) + sw $t0, 280($sp) + + # JUMP TO endif_8738246182973 + j endif_8738246182973 + + endif_8738246182973: + + # internal_130 <- internal_135 + lw $t0, 280($sp) + sw $t0, 300($sp) + + # JUMP TO endif_8738246182919 + j endif_8738246182919 + + endif_8738246182919: + + # internal_125 <- internal_130 + lw $t0, 300($sp) + sw $t0, 320($sp) + + # JUMP TO endif_8738246182605 + j endif_8738246182605 + + endif_8738246182605: + + # internal_120 <- internal_125 + lw $t0, 320($sp) + sw $t0, 340($sp) + + # JUMP TO endif_8738246182551 + j endif_8738246182551 + + endif_8738246182551: + + # internal_115 <- internal_120 + lw $t0, 340($sp) + sw $t0, 360($sp) + + # JUMP TO endif_8738246182497 + j endif_8738246182497 + + endif_8738246182497: + + # internal_110 <- internal_115 + lw $t0, 360($sp) + sw $t0, 380($sp) + + # JUMP TO endif_8738246182443 + j endif_8738246182443 + + endif_8738246182443: + + # internal_105 <- internal_110 + lw $t0, 380($sp) + sw $t0, 400($sp) + + # JUMP TO endif_8738246214897 + j endif_8738246214897 + + endif_8738246214897: + + # internal_100 <- internal_105 + lw $t0, 400($sp) + sw $t0, 420($sp) + + # JUMP TO endif_8738246214843 + j endif_8738246214843 + + endif_8738246214843: + + lw $v1, 420($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 824 + + jr $ra + + function_prompt_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -88 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 84($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 63 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 63 + sw $t0, 4($v0) + + addi $t0, $zero, 87 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 117 + sb $t0, 10($v0) + + addi $t0, $zero, 108 + sb $t0, 11($v0) + + addi $t0, $zero, 100 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 121 + sb $t0, 14($v0) + + addi $t0, $zero, 111 + sb $t0, 15($v0) + + addi $t0, $zero, 117 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 108 + sb $t0, 18($v0) + + addi $t0, $zero, 105 + sb $t0, 19($v0) + + addi $t0, $zero, 107 + sb $t0, 20($v0) + + addi $t0, $zero, 101 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 116 + sb $t0, 23($v0) + + addi $t0, $zero, 111 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 111 + sb $t0, 27($v0) + + addi $t0, $zero, 110 + sb $t0, 28($v0) + + addi $t0, $zero, 116 + sb $t0, 29($v0) + + addi $t0, $zero, 105 + sb $t0, 30($v0) + + addi $t0, $zero, 110 + sb $t0, 31($v0) + + addi $t0, $zero, 117 + sb $t0, 32($v0) + + addi $t0, $zero, 101 + sb $t0, 33($v0) + + addi $t0, $zero, 32 + sb $t0, 34($v0) + + addi $t0, $zero, 119 + sb $t0, 35($v0) + + addi $t0, $zero, 105 + sb $t0, 36($v0) + + addi $t0, $zero, 116 + sb $t0, 37($v0) + + addi $t0, $zero, 104 + sb $t0, 38($v0) + + addi $t0, $zero, 32 + sb $t0, 39($v0) + + addi $t0, $zero, 116 + sb $t0, 40($v0) + + addi $t0, $zero, 104 + sb $t0, 41($v0) + + addi $t0, $zero, 101 + sb $t0, 42($v0) + + addi $t0, $zero, 32 + sb $t0, 43($v0) + + addi $t0, $zero, 110 + sb $t0, 44($v0) + + addi $t0, $zero, 101 + sb $t0, 45($v0) + + addi $t0, $zero, 120 + sb $t0, 46($v0) + + addi $t0, $zero, 116 + sb $t0, 47($v0) + + addi $t0, $zero, 32 + sb $t0, 48($v0) + + addi $t0, $zero, 103 + sb $t0, 49($v0) + + addi $t0, $zero, 101 + sb $t0, 50($v0) + + addi $t0, $zero, 110 + sb $t0, 51($v0) + + addi $t0, $zero, 101 + sb $t0, 52($v0) + + addi $t0, $zero, 114 + sb $t0, 53($v0) + + addi $t0, $zero, 97 + sb $t0, 54($v0) + + addi $t0, $zero, 116 + sb $t0, 55($v0) + + addi $t0, $zero, 105 + sb $t0, 56($v0) + + addi $t0, $zero, 111 + sb $t0, 57($v0) + + addi $t0, $zero, 110 + sb $t0, 58($v0) + + addi $t0, $zero, 63 + sb $t0, 59($v0) + + addi $t0, $zero, 32 + sb $t0, 60($v0) + + addi $t0, $zero, 10 + sb $t0, 61($v0) + + sb $zero, 62($v0) + + sw $v0, 80($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 72($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 80($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 58 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 58 + sw $t0, 4($v0) + + addi $t0, $zero, 80 + sb $t0, 8($v0) + + addi $t0, $zero, 108 + sb $t0, 9($v0) + + addi $t0, $zero, 101 + sb $t0, 10($v0) + + addi $t0, $zero, 97 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 101 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 117 + sb $t0, 15($v0) + + addi $t0, $zero, 115 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 108 + sb $t0, 19($v0) + + addi $t0, $zero, 111 + sb $t0, 20($v0) + + addi $t0, $zero, 119 + sb $t0, 21($v0) + + addi $t0, $zero, 101 + sb $t0, 22($v0) + + addi $t0, $zero, 114 + sb $t0, 23($v0) + + addi $t0, $zero, 99 + sb $t0, 24($v0) + + addi $t0, $zero, 97 + sb $t0, 25($v0) + + addi $t0, $zero, 115 + sb $t0, 26($v0) + + addi $t0, $zero, 101 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 121 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 111 + sb $t0, 31($v0) + + addi $t0, $zero, 114 + sb $t0, 32($v0) + + addi $t0, $zero, 32 + sb $t0, 33($v0) + + addi $t0, $zero, 110 + sb $t0, 34($v0) + + addi $t0, $zero, 32 + sb $t0, 35($v0) + + addi $t0, $zero, 102 + sb $t0, 36($v0) + + addi $t0, $zero, 111 + sb $t0, 37($v0) + + addi $t0, $zero, 114 + sb $t0, 38($v0) + + addi $t0, $zero, 32 + sb $t0, 39($v0) + + addi $t0, $zero, 121 + sb $t0, 40($v0) + + addi $t0, $zero, 111 + sb $t0, 41($v0) + + addi $t0, $zero, 117 + sb $t0, 42($v0) + + addi $t0, $zero, 114 + sb $t0, 43($v0) + + addi $t0, $zero, 32 + sb $t0, 44($v0) + + addi $t0, $zero, 97 + sb $t0, 45($v0) + + addi $t0, $zero, 110 + sb $t0, 46($v0) + + addi $t0, $zero, 115 + sb $t0, 47($v0) + + addi $t0, $zero, 119 + sb $t0, 48($v0) + + addi $t0, $zero, 101 + sb $t0, 49($v0) + + addi $t0, $zero, 114 + sb $t0, 50($v0) + + addi $t0, $zero, 32 + sb $t0, 51($v0) + + addi $t0, $zero, 91 + sb $t0, 52($v0) + + addi $t0, $zero, 121 + sb $t0, 53($v0) + + addi $t0, $zero, 93 + sb $t0, 54($v0) + + addi $t0, $zero, 58 + sb $t0, 55($v0) + + addi $t0, $zero, 32 + sb $t0, 56($v0) + + sb $zero, 57($v0) + + sw $v0, 64($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 56($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 64($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET METHOD in_string OF CellularAutomaton + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 44($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 56($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [ans] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 36($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 36($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 110 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [ans] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_17 <- internal_19 + lw $t0, 8($sp) + sw $t0, 16($sp) + + # IF internal_17 THEN GOTO then_8738246213810 + lw $t0, 16($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246213810 + + # JUMP TO else_8738246213810 + j else_8738246213810 + + then_8738246213810: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # internal_16 <- internal_20 + lw $t0, 4($sp) + sw $t0, 20($sp) + + # JUMP TO endif_8738246213810 + j endif_8738246213810 + + else_8738246213810: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_16 <- internal_21 + lw $t0, 0($sp) + sw $t0, 20($sp) + + # JUMP TO endif_8738246213810 + j endif_8738246213810 + + endif_8738246213810: + + lw $v1, 20($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 88 + + jr $ra + + function_prompt2_at_CellularAutomaton: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -88 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 84($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 11 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 11 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + addi $t0, $zero, 10 + sb $t0, 9($v0) + + sb $zero, 10($v0) + + sw $v0, 80($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 72($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 92($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 80($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 57 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 57 + sw $t0, 4($v0) + + addi $t0, $zero, 87 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 117 + sb $t0, 10($v0) + + addi $t0, $zero, 108 + sb $t0, 11($v0) + + addi $t0, $zero, 100 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 121 + sb $t0, 14($v0) + + addi $t0, $zero, 111 + sb $t0, 15($v0) + + addi $t0, $zero, 117 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 108 + sb $t0, 18($v0) + + addi $t0, $zero, 105 + sb $t0, 19($v0) + + addi $t0, $zero, 107 + sb $t0, 20($v0) + + addi $t0, $zero, 101 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 116 + sb $t0, 23($v0) + + addi $t0, $zero, 111 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 104 + sb $t0, 27($v0) + + addi $t0, $zero, 111 + sb $t0, 28($v0) + + addi $t0, $zero, 111 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 101 + sb $t0, 31($v0) + + addi $t0, $zero, 32 + sb $t0, 32($v0) + + addi $t0, $zero, 97 + sb $t0, 33($v0) + + addi $t0, $zero, 32 + sb $t0, 34($v0) + + addi $t0, $zero, 98 + sb $t0, 35($v0) + + addi $t0, $zero, 97 + sb $t0, 36($v0) + + addi $t0, $zero, 99 + sb $t0, 37($v0) + + addi $t0, $zero, 107 + sb $t0, 38($v0) + + addi $t0, $zero, 103 + sb $t0, 39($v0) + + addi $t0, $zero, 114 + sb $t0, 40($v0) + + addi $t0, $zero, 111 + sb $t0, 41($v0) + + addi $t0, $zero, 117 + sb $t0, 42($v0) + + addi $t0, $zero, 110 + sb $t0, 43($v0) + + addi $t0, $zero, 100 + sb $t0, 44($v0) + + addi $t0, $zero, 32 + sb $t0, 45($v0) + + addi $t0, $zero, 112 + sb $t0, 46($v0) + + addi $t0, $zero, 97 + sb $t0, 47($v0) + + addi $t0, $zero, 116 + sb $t0, 48($v0) + + addi $t0, $zero, 116 + sb $t0, 49($v0) + + addi $t0, $zero, 101 + sb $t0, 50($v0) + + addi $t0, $zero, 114 + sb $t0, 51($v0) + + addi $t0, $zero, 110 + sb $t0, 52($v0) + + addi $t0, $zero, 63 + sb $t0, 53($v0) + + addi $t0, $zero, 32 + sb $t0, 54($v0) + + addi $t0, $zero, 10 + sb $t0, 55($v0) + + sb $zero, 56($v0) + + sw $v0, 64($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 56($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 64($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 58 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 58 + sw $t0, 4($v0) + + addi $t0, $zero, 80 + sb $t0, 8($v0) + + addi $t0, $zero, 108 + sb $t0, 9($v0) + + addi $t0, $zero, 101 + sb $t0, 10($v0) + + addi $t0, $zero, 97 + sb $t0, 11($v0) + + addi $t0, $zero, 115 + sb $t0, 12($v0) + + addi $t0, $zero, 101 + sb $t0, 13($v0) + + addi $t0, $zero, 32 + sb $t0, 14($v0) + + addi $t0, $zero, 117 + sb $t0, 15($v0) + + addi $t0, $zero, 115 + sb $t0, 16($v0) + + addi $t0, $zero, 101 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 108 + sb $t0, 19($v0) + + addi $t0, $zero, 111 + sb $t0, 20($v0) + + addi $t0, $zero, 119 + sb $t0, 21($v0) + + addi $t0, $zero, 101 + sb $t0, 22($v0) + + addi $t0, $zero, 114 + sb $t0, 23($v0) + + addi $t0, $zero, 99 + sb $t0, 24($v0) + + addi $t0, $zero, 97 + sb $t0, 25($v0) + + addi $t0, $zero, 115 + sb $t0, 26($v0) + + addi $t0, $zero, 101 + sb $t0, 27($v0) + + addi $t0, $zero, 32 + sb $t0, 28($v0) + + addi $t0, $zero, 121 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 111 + sb $t0, 31($v0) + + addi $t0, $zero, 114 + sb $t0, 32($v0) + + addi $t0, $zero, 32 + sb $t0, 33($v0) + + addi $t0, $zero, 110 + sb $t0, 34($v0) + + addi $t0, $zero, 32 + sb $t0, 35($v0) + + addi $t0, $zero, 102 + sb $t0, 36($v0) + + addi $t0, $zero, 111 + sb $t0, 37($v0) + + addi $t0, $zero, 114 + sb $t0, 38($v0) + + addi $t0, $zero, 32 + sb $t0, 39($v0) + + addi $t0, $zero, 121 + sb $t0, 40($v0) + + addi $t0, $zero, 111 + sb $t0, 41($v0) + + addi $t0, $zero, 117 + sb $t0, 42($v0) + + addi $t0, $zero, 114 + sb $t0, 43($v0) + + addi $t0, $zero, 32 + sb $t0, 44($v0) + + addi $t0, $zero, 97 + sb $t0, 45($v0) + + addi $t0, $zero, 110 + sb $t0, 46($v0) + + addi $t0, $zero, 115 + sb $t0, 47($v0) + + addi $t0, $zero, 119 + sb $t0, 48($v0) + + addi $t0, $zero, 101 + sb $t0, 49($v0) + + addi $t0, $zero, 114 + sb $t0, 50($v0) + + addi $t0, $zero, 32 + sb $t0, 51($v0) + + addi $t0, $zero, 91 + sb $t0, 52($v0) + + addi $t0, $zero, 110 + sb $t0, 53($v0) + + addi $t0, $zero, 93 + sb $t0, 54($v0) + + addi $t0, $zero, 58 + sb $t0, 55($v0) + + addi $t0, $zero, 32 + sb $t0, 56($v0) + + sb $zero, 57($v0) + + sw $v0, 48($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD out_string OF CellularAutomaton + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD in_string OF CellularAutomaton + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 40($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [ans] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 121 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [ans] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_17 <- internal_19 + lw $t0, 8($sp) + sw $t0, 16($sp) + + # IF internal_17 THEN GOTO then_8738246214810 + lw $t0, 16($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246214810 + + # JUMP TO else_8738246214810 + j else_8738246214810 + + then_8738246214810: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # internal_16 <- internal_20 + lw $t0, 4($sp) + sw $t0, 20($sp) + + # JUMP TO endif_8738246214810 + j endif_8738246214810 + + else_8738246214810: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_16 <- internal_21 + lw $t0, 0($sp) + sw $t0, 20($sp) + + # JUMP TO endif_8738246214810 + j endif_8738246214810 + + endif_8738246214810: + + lw $v1, 20($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 88 + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # SET ATTRIBUTE rows OF self + lw $t0, 20($sp) + lw $t1, 16($sp) + beq $t1, $zero, object_set_attribute_8738246144549 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246144549 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246144549 + j object_set_attribute_8738246144549 + int_set_attribute_8738246144549: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246144549 + bool_set_attribute_8738246144549: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8738246144549 + object_set_attribute_8738246144549: + sw $t1, 8($t0) + end_set_attribute_8738246144549: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # SET ATTRIBUTE columns OF self + lw $t0, 20($sp) + lw $t1, 12($sp) + beq $t1, $zero, object_set_attribute_8738246144573 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246144573 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246144573 + j object_set_attribute_8738246144573 + int_set_attribute_8738246144573: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246144573 + bool_set_attribute_8738246144573: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8738246144573 + object_set_attribute_8738246144573: + sw $t1, 12($t0) + end_set_attribute_8738246144573: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # SET ATTRIBUTE board_size OF self + lw $t0, 20($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8738246144597 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246144597 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246144597 + j object_set_attribute_8738246144597 + int_set_attribute_8738246144597: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246144597 + bool_set_attribute_8738246144597: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8738246144597 + object_set_attribute_8738246144597: + sw $t1, 16($t0) + end_set_attribute_8738246144597: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 4($sp) + + # SET ATTRIBUTE population_map OF self + lw $t0, 20($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8738246144621 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246144621 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246144621 + j object_set_attribute_8738246144621 + int_set_attribute_8738246144621: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8738246144621 + bool_set_attribute_8738246144621: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8738246144621 + object_set_attribute_8738246144621: + sw $t1, 20($t0) + end_set_attribute_8738246144621: + + # ALLOCATING NUll INTO -> internal_4 + sw $zero, 0($sp) + + # SET ATTRIBUTE cells OF self + lw $t0, 20($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8738246144645 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246144645 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246144645 + j object_set_attribute_8738246144645 + int_set_attribute_8738246144645: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8738246144645 + bool_set_attribute_8738246144645: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8738246144645 + object_set_attribute_8738246144645: + sw $t1, 24($t0) + end_set_attribute_8738246144645: + + lw $v1, 20($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -164 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 9 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 9 + sw $t0, 4($v0) + + sb $zero, 8($v0) + + sw $v0, 156($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 38 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 38 + sw $t0, 4($v0) + + addi $t0, $zero, 87 + sb $t0, 8($v0) + + addi $t0, $zero, 101 + sb $t0, 9($v0) + + addi $t0, $zero, 108 + sb $t0, 10($v0) + + addi $t0, $zero, 99 + sb $t0, 11($v0) + + addi $t0, $zero, 111 + sb $t0, 12($v0) + + addi $t0, $zero, 109 + sb $t0, 13($v0) + + addi $t0, $zero, 101 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 116 + sb $t0, 16($v0) + + addi $t0, $zero, 111 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 116 + sb $t0, 19($v0) + + addi $t0, $zero, 104 + sb $t0, 20($v0) + + addi $t0, $zero, 101 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 71 + sb $t0, 23($v0) + + addi $t0, $zero, 97 + sb $t0, 24($v0) + + addi $t0, $zero, 109 + sb $t0, 25($v0) + + addi $t0, $zero, 101 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 111 + sb $t0, 28($v0) + + addi $t0, $zero, 102 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 76 + sb $t0, 31($v0) + + addi $t0, $zero, 105 + sb $t0, 32($v0) + + addi $t0, $zero, 102 + sb $t0, 33($v0) + + addi $t0, $zero, 101 + sb $t0, 34($v0) + + addi $t0, $zero, 46 + sb $t0, 35($v0) + + addi $t0, $zero, 10 + sb $t0, 36($v0) + + sb $zero, 37($v0) + + sw $v0, 152($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # GET METHOD out_string OF Main + lw $t0, 164($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 144($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 164($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 152($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 160($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 56 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 56 + sw $t0, 4($v0) + + addi $t0, $zero, 84 + sb $t0, 8($v0) + + addi $t0, $zero, 104 + sb $t0, 9($v0) + + addi $t0, $zero, 101 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 101 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 97 + sb $t0, 14($v0) + + addi $t0, $zero, 114 + sb $t0, 15($v0) + + addi $t0, $zero, 101 + sb $t0, 16($v0) + + addi $t0, $zero, 32 + sb $t0, 17($v0) + + addi $t0, $zero, 109 + sb $t0, 18($v0) + + addi $t0, $zero, 97 + sb $t0, 19($v0) + + addi $t0, $zero, 110 + sb $t0, 20($v0) + + addi $t0, $zero, 121 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 105 + sb $t0, 23($v0) + + addi $t0, $zero, 110 + sb $t0, 24($v0) + + addi $t0, $zero, 105 + sb $t0, 25($v0) + + addi $t0, $zero, 116 + sb $t0, 26($v0) + + addi $t0, $zero, 105 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 108 + sb $t0, 29($v0) + + addi $t0, $zero, 32 + sb $t0, 30($v0) + + addi $t0, $zero, 115 + sb $t0, 31($v0) + + addi $t0, $zero, 116 + sb $t0, 32($v0) + + addi $t0, $zero, 97 + sb $t0, 33($v0) + + addi $t0, $zero, 116 + sb $t0, 34($v0) + + addi $t0, $zero, 101 + sb $t0, 35($v0) + + addi $t0, $zero, 115 + sb $t0, 36($v0) + + addi $t0, $zero, 32 + sb $t0, 37($v0) + + addi $t0, $zero, 116 + sb $t0, 38($v0) + + addi $t0, $zero, 111 + sb $t0, 39($v0) + + addi $t0, $zero, 32 + sb $t0, 40($v0) + + addi $t0, $zero, 99 + sb $t0, 41($v0) + + addi $t0, $zero, 104 + sb $t0, 42($v0) + + addi $t0, $zero, 111 + sb $t0, 43($v0) + + addi $t0, $zero, 111 + sb $t0, 44($v0) + + addi $t0, $zero, 115 + sb $t0, 45($v0) + + addi $t0, $zero, 101 + sb $t0, 46($v0) + + addi $t0, $zero, 32 + sb $t0, 47($v0) + + addi $t0, $zero, 102 + sb $t0, 48($v0) + + addi $t0, $zero, 114 + sb $t0, 49($v0) + + addi $t0, $zero, 111 + sb $t0, 50($v0) + + addi $t0, $zero, 109 + sb $t0, 51($v0) + + addi $t0, $zero, 46 + sb $t0, 52($v0) + + addi $t0, $zero, 32 + sb $t0, 53($v0) + + addi $t0, $zero, 10 + sb $t0, 54($v0) + + sb $zero, 55($v0) + + sw $v0, 136($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # GET METHOD out_string OF Main + lw $t0, 164($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 128($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 176($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_9 + lw $t0, 136($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_10 + sw $zero, 120($sp) + + while_start_8738246213063: + + # ALLOCATING INT -> 27 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 27 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # GET METHOD prompt2 OF Main + lw $t0, 164($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 112($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 172($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_13 + lw $t0, 116($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 124($sp) + addi $sp, $sp, 8 + + # IF internal_11 THEN GOTO while_body_8738246213063 + lw $t0, 116($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8738246213063 + + # JUMP TO while_end_8738246213063 + j while_end_8738246213063 + + while_body_8738246213063: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [continue] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_14] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 25 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 25 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # GET METHOD option OF Main + lw $t0, 164($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 96($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 172($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_17 + lw $t0, 100($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 108($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [choice] + lw $t0, 168($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 168($sp) + addi $sp, $sp, 12 + + # ALLOCATING -> CellularAutomaton + li $v0, 9 + lw $a0, type_CellularAutomaton + syscall + la $t0, type_CellularAutomaton + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 88($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_CellularAutomaton + jal function___init___at_CellularAutomaton + lw $ra, 4($sp) + sw $v1, 96($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # GET METHOD init OF CellularAutomaton + lw $t0, 88($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 80($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [choice] + lw $t0, 168($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_21 + lw $t0, 88($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE cells OF self + lw $t0, 164($sp) + lw $t1, 84($sp) + beq $t1, $zero, object_set_attribute_8738246195240 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8738246195240 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8738246195240 + j object_set_attribute_8738246195240 + int_set_attribute_8738246195240: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8738246195240 + bool_set_attribute_8738246195240: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8738246195240 + object_set_attribute_8738246195240: + sw $t1, 24($t0) + end_set_attribute_8738246195240: + + # GET ATTRIBUTE cells OF self + lw $t0, 164($sp) + lw $t1, 24($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246208287 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246208287 + j object_get_attribute_8738246208287 + int_get_attribute_8738246208287: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8738246208287 + bool_get_attribute_8738246208287: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8738246208287 + object_get_attribute_8738246208287: + sw $t1, 72($sp) + end_get_attribute_8738246208287: + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD print OF CellularAutomaton + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 68($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 76($sp) + addi $sp, $sp, 8 + + # ALLOCATING NUll INTO -> internal_26 + sw $zero, 56($sp) + + while_start_8738246214804: + + # IF continue THEN GOTO while_body_8738246214804 + lw $t0, 160($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8738246214804 + + # JUMP TO while_end_8738246214804 + j while_end_8738246214804 + + while_body_8738246214804: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # ALLOCATING INT -> 26 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 26 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD prompt OF Main + lw $t0, 164($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 172($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_31 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 52($sp) + addi $sp, $sp, 8 + + # internal_28 <- internal_29 + lw $t0, 44($sp) + sw $t0, 48($sp) + + # IF internal_28 THEN GOTO then_8738246214876 + lw $t0, 48($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8738246214876 + + # JUMP TO else_8738246214876 + j else_8738246214876 + + then_8738246214876: + + # GET ATTRIBUTE cells OF self + lw $t0, 164($sp) + lw $t1, 24($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246206597 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246206597 + j object_get_attribute_8738246206597 + int_get_attribute_8738246206597: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246206597 + bool_get_attribute_8738246206597: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 32($sp) + j end_get_attribute_8738246206597 + object_get_attribute_8738246206597: + sw $t1, 32($sp) + end_get_attribute_8738246206597: + + # ALLOCATING INT -> 24 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 24 + sw $t0, 8($v0) + sw $v0, 24($sp) + + # GET METHOD evolve OF CellularAutomaton + lw $t0, 32($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 24($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 20($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_35 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 36($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE cells OF self + lw $t0, 164($sp) + lw $t1, 24($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8738246184539 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8738246184539 + j object_get_attribute_8738246184539 + int_get_attribute_8738246184539: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8738246184539 + bool_get_attribute_8738246184539: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8738246184539 + object_get_attribute_8738246184539: + sw $t1, 16($sp) + end_get_attribute_8738246184539: + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD print OF CellularAutomaton + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_36] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_39 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # internal_27 <- internal_37 + lw $t0, 12($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8738246214876 + j endif_8738246214876 + + else_8738246214876: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [continue] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_40] + lw $t0, 12($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 172($sp) + addi $sp, $sp, 12 + + # internal_27 <- continue + lw $t0, 160($sp) + sw $t0, 52($sp) + + # JUMP TO endif_8738246214876 + j endif_8738246214876 + + endif_8738246214876: + + # JUMP TO while_start_8738246214804 + j while_start_8738246214804 + + while_end_8738246214804: + + # JUMP TO while_start_8738246213063 + j while_start_8738246213063 + + while_end_8738246213063: + + lw $v1, 164($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 164 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 28 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 28 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/list.mips b/tests/codegen/list.mips new file mode 100644 index 000000000..fd8a2f0e6 --- /dev/null +++ b/tests/codegen/list.mips @@ -0,0 +1,3008 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_List: .word 40 + type_List_inherits_from: .word type_Object + type_List_name_address: .word type_List_name_size + type_List___init__: .word function___init___at_List + type_List_abort: .word function_abort_at_Object + type_List_type_name: .word function_type_name_at_Object + type_List_copy: .word function_copy_at_Object + type_List_isNil: .word function_isNil_at_List + type_List_head: .word function_head_at_List + type_List_tail: .word function_tail_at_List + type_List_cons: .word function_cons_at_List + + type_Cons: .word 52 + type_Cons_inherits_from: .word type_List + type_Cons_name_address: .word type_Cons_name_size + type_Cons___init__: .word function___init___at_Cons + type_Cons_abort: .word function_abort_at_Object + type_Cons_type_name: .word function_type_name_at_Object + type_Cons_copy: .word function_copy_at_Object + type_Cons_isNil: .word function_isNil_at_Cons + type_Cons_head: .word function_head_at_Cons + type_Cons_tail: .word function_tail_at_Cons + type_Cons_cons: .word function_cons_at_List + type_Cons_init: .word function_init_at_Cons + + type_Main: .word 52 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_print_list: .word function_print_list_at_Main + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_List_name_size: .word 4 + type_List_name: .asciiz "List" + + type_Cons_name_size: .word 4 + type_Cons_name: .asciiz "Cons" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_List: + lw $v1, 0($sp) + + jr $ra + + function_isNil_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_head_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF List + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_tail_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD abort OF List + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 12($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_cons_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Cons + li $v0, 9 + lw $a0, type_Cons + syscall + la $t0, type_Cons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Cons + jal function___init___at_Cons + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD init OF Cons + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_0] + lw $t0, 28($sp) + sw $t0, 8($sp) + + # ARGUMENT [i] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function___init___at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # SET ATTRIBUTE car OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8759347904618 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8759347904618 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8759347904618 + j object_set_attribute_8759347904618 + int_set_attribute_8759347904618: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347904618 + bool_set_attribute_8759347904618: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347904618 + object_set_attribute_8759347904618: + sw $t1, 8($t0) + end_set_attribute_8759347904618: + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 0($sp) + + # SET ATTRIBUTE cdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8759347904642 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8759347904642 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8759347904642 + j object_set_attribute_8759347904642 + int_set_attribute_8759347904642: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8759347904642 + bool_set_attribute_8759347904642: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8759347904642 + object_set_attribute_8759347904642: + sw $t1, 12($t0) + end_set_attribute_8759347904642: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_isNil_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_head_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE car OF self + lw $t0, 4($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8759347904696 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8759347904696 + j object_get_attribute_8759347904696 + int_get_attribute_8759347904696: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8759347904696 + bool_get_attribute_8759347904696: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8759347904696 + object_get_attribute_8759347904696: + sw $t1, 0($sp) + end_get_attribute_8759347904696: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_tail_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE cdr OF self + lw $t0, 4($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8759347904726 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8759347904726 + j object_get_attribute_8759347904726 + int_get_attribute_8759347904726: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8759347904726 + bool_get_attribute_8759347904726: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8759347904726 + object_get_attribute_8759347904726: + sw $t1, 0($sp) + end_get_attribute_8759347904726: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_init_at_Cons: + # SET ATTRIBUTE car OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8759347905814 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8759347905814 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8759347905814 + j object_set_attribute_8759347905814 + int_set_attribute_8759347905814: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347905814 + bool_set_attribute_8759347905814: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347905814 + object_set_attribute_8759347905814: + sw $t1, 8($t0) + end_set_attribute_8759347905814: + + # SET ATTRIBUTE cdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8759347905826 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8759347905826 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8759347905826 + j object_set_attribute_8759347905826 + int_set_attribute_8759347905826: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8759347905826 + bool_set_attribute_8759347905826: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8759347905826 + object_set_attribute_8759347905826: + sw $t1, 12($t0) + end_set_attribute_8759347905826: + + lw $v1, 8($sp) + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 0($sp) + + # SET ATTRIBUTE mylist OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8759347905862 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8759347905862 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8759347905862 + j object_set_attribute_8759347905862 + int_set_attribute_8759347905862: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347905862 + bool_set_attribute_8759347905862: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347905862 + object_set_attribute_8759347905862: + sw $t1, 8($t0) + end_set_attribute_8759347905862: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_print_list_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -100 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD isNil OF List + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [l] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 88($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 96($sp) + addi $sp, $sp, 8 + + # internal_1 <- internal_2 + lw $t0, 88($sp) + sw $t0, 92($sp) + + # IF internal_1 THEN GOTO then_8759347922011 + lw $t0, 92($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8759347922011 + + # JUMP TO else_8759347922011 + j else_8759347922011 + + then_8759347922011: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 76($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # GET METHOD out_string OF Main + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 68($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 76($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_6 + lw $t0, 72($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8759347922011 + j endif_8759347922011 + + else_8759347922011: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # GET METHOD head OF List + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 56($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 52($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [l] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 68($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET METHOD out_int OF Main + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 44($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 60($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 36($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD out_string OF Main + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_15] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_18 + lw $t0, 36($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD tail OF List + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [l] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_21 + lw $t0, 20($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 28($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print_list OF Main + lw $t0, 104($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 116($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_24 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_22 + lw $t0, 8($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8759347922011 + j endif_8759347922011 + + endif_8759347922011: + + lw $v1, 96($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 100 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -144 + + # ALLOCATING -> List + li $v0, 9 + lw $a0, type_List + syscall + la $t0, type_List + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 140($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_List + jal function___init___at_List + lw $ra, 4($sp) + sw $v1, 148($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # GET METHOD cons OF List + lw $t0, 140($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 128($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 152($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 148($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 136($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 144($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # GET METHOD cons OF List + lw $t0, 132($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 112($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 108($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 144($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 132($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 120($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 128($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # GET METHOD cons OF List + lw $t0, 116($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 96($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_6] + lw $t0, 128($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 116($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 104($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 112($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # GET METHOD cons OF List + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 80($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 88($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD cons OF List + lw $t0, 84($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_14] + lw $t0, 96($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_20 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE mylist OF self + lw $t0, 144($sp) + lw $t1, 68($sp) + beq $t1, $zero, object_set_attribute_8759347907404 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8759347907404 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8759347907404 + j object_set_attribute_8759347907404 + int_set_attribute_8759347907404: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347907404 + bool_set_attribute_8759347907404: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347907404 + object_set_attribute_8759347907404: + sw $t1, 8($t0) + end_set_attribute_8759347907404: + + # ALLOCATING NUll INTO -> internal_21 + sw $zero, 56($sp) + + while_start_8759347922134: + + # GET ATTRIBUTE mylist OF self + lw $t0, 144($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8759347908587 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8759347908587 + j object_get_attribute_8759347908587 + int_get_attribute_8759347908587: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 52($sp) + j end_get_attribute_8759347908587 + bool_get_attribute_8759347908587: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 52($sp) + j end_get_attribute_8759347908587 + object_get_attribute_8759347908587: + sw $t1, 52($sp) + end_get_attribute_8759347908587: + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # GET METHOD isNil OF List + lw $t0, 52($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 44($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_22] + lw $t0, 60($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 56($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_23] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_26] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # IF internal_27 THEN GOTO while_body_8759347922134 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8759347922134 + + # JUMP TO while_end_8759347922134 + j while_end_8759347922134 + + while_body_8759347922134: + + # GET ATTRIBUTE mylist OF self + lw $t0, 144($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8759347908973 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8759347908973 + j object_get_attribute_8759347908973 + int_get_attribute_8759347908973: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8759347908973 + bool_get_attribute_8759347908973: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8759347908973 + object_get_attribute_8759347908973: + sw $t1, 28($sp) + end_get_attribute_8759347908973: + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD print_list OF Main + lw $t0, 144($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_28] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_31 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE mylist OF self + lw $t0, 144($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8759347909045 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8759347909045 + j object_get_attribute_8759347909045 + int_get_attribute_8759347909045: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8759347909045 + bool_get_attribute_8759347909045: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8759347909045 + object_get_attribute_8759347909045: + sw $t1, 12($sp) + end_get_attribute_8759347909045: + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD tail OF List + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_35 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE mylist OF self + lw $t0, 144($sp) + lw $t1, 8($sp) + beq $t1, $zero, object_set_attribute_8759347909015 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8759347909015 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8759347909015 + j object_set_attribute_8759347909015 + int_set_attribute_8759347909015: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347909015 + bool_set_attribute_8759347909015: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8759347909015 + object_set_attribute_8759347909015: + sw $t1, 8($t0) + end_set_attribute_8759347909015: + + # JUMP TO while_start_8759347922134 + j while_start_8759347922134 + + while_end_8759347922134: + + lw $v1, 56($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 144 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/new_complex.mips b/tests/codegen/new_complex.mips new file mode 100644 index 000000000..5d370d351 --- /dev/null +++ b/tests/codegen/new_complex.mips @@ -0,0 +1,3924 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Main: .word 44 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_main: .word function_main_at_Main + + type_Complex: .word 80 + type_Complex_inherits_from: .word type_IO + type_Complex_name_address: .word type_Complex_name_size + type_Complex___init__: .word function___init___at_Complex + type_Complex_abort: .word function_abort_at_Object + type_Complex_type_name: .word function_type_name_at_Object + type_Complex_copy: .word function_copy_at_Object + type_Complex_out_string: .word function_out_string_at_IO + type_Complex_out_int: .word function_out_int_at_IO + type_Complex_in_string: .word function_in_string_at_IO + type_Complex_in_int: .word function_in_int_at_IO + type_Complex_init: .word function_init_at_Complex + type_Complex_print: .word function_print_at_Complex + type_Complex_reflect_0: .word function_reflect_0_at_Complex + type_Complex_reflect_X: .word function_reflect_X_at_Complex + type_Complex_reflect_Y: .word function_reflect_Y_at_Complex + type_Complex_equal: .word function_equal_at_Complex + type_Complex_x_value: .word function_x_value_at_Complex + type_Complex_y_value: .word function_y_value_at_Complex + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + type_Complex_name_size: .word 7 + type_Complex_name: .asciiz "Complex" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Main: + lw $v1, 0($sp) + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -184 + + # ALLOCATING -> Complex + li $v0, 9 + lw $a0, type_Complex + syscall + la $t0, type_Complex + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 176($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 184($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Complex + jal function___init___at_Complex + lw $ra, 4($sp) + sw $v1, 184($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 172($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # GET METHOD init OF Complex + lw $t0, 176($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 160($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 156($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_1] + lw $t0, 192($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 188($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 184($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 172($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 180($sp) + addi $sp, $sp, 16 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [c] + lw $t0, 192($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 176($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 148($sp) + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 140($sp) + + # GET METHOD reflect_X OF Complex + lw $t0, 180($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 140($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 136($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [c] + lw $t0, 188($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 144($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 152($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # GET METHOD reflect_0 OF Complex + lw $t0, 180($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 128($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 124($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [c] + lw $t0, 188($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_14 + lw $t0, 132($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 140($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_9] + lw $t0, 156($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 144($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 132($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_15 + lw $t0, 120($sp) + sw $t0, 148($sp) + + # IF internal_8 THEN GOTO then_8772793273287 + lw $t0, 148($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8772793273287 + + # JUMP TO else_8772793273287 + j else_8772793273287 + + then_8772793273287: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 12 + sw $t0, 4($v0) + + addi $t0, $zero, 61 + sb $t0, 8($v0) + + addi $t0, $zero, 41 + sb $t0, 9($v0) + + addi $t0, $zero, 10 + sb $t0, 10($v0) + + sb $zero, 11($v0) + + sw $v0, 116($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # GET METHOD out_string OF Main + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 108($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 104($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 196($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 128($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 116($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 124($sp) + addi $sp, $sp, 12 + + # internal_7 <- internal_17 + lw $t0, 112($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8772793273287 + j endif_8772793273287 + + else_8772793273287: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 12 + sw $t0, 4($v0) + + addi $t0, $zero, 61 + sb $t0, 8($v0) + + addi $t0, $zero, 40 + sb $t0, 9($v0) + + addi $t0, $zero, 10 + sb $t0, 10($v0) + + sb $zero, 11($v0) + + sw $v0, 100($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # GET METHOD out_string OF Main + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 92($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 88($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 196($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 112($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 100($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 108($sp) + addi $sp, $sp, 12 + + # internal_7 <- internal_21 + lw $t0, 96($sp) + sw $t0, 152($sp) + + # JUMP TO endif_8772793273287 + j endif_8772793273287 + + endif_8772793273287: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET METHOD reflect_X OF Complex + lw $t0, 180($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 72($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [c] + lw $t0, 188($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_28 + lw $t0, 76($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 84($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # GET METHOD reflect_Y OF Complex + lw $t0, 76($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 60($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_26] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_31 + lw $t0, 64($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 72($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 10 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 10 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD reflect_0 OF Complex + lw $t0, 180($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [c] + lw $t0, 188($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_34 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD equal OF Complex + lw $t0, 64($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_29] + lw $t0, 76($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_37 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_25 <- internal_35 + lw $t0, 40($sp) + sw $t0, 80($sp) + + # IF internal_25 THEN GOTO then_8772793274221 + lw $t0, 80($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8772793274221 + + # JUMP TO else_8772793274221 + j else_8772793274221 + + then_8772793274221: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 12 + sw $t0, 4($v0) + + addi $t0, $zero, 61 + sb $t0, 8($v0) + + addi $t0, $zero, 41 + sb $t0, 9($v0) + + addi $t0, $zero, 10 + sb $t0, 10($v0) + + sb $zero, 11($v0) + + sw $v0, 28($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Main + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 196($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_38] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_41 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_24 <- internal_39 + lw $t0, 24($sp) + sw $t0, 84($sp) + + # JUMP TO endif_8772793274221 + j endif_8772793274221 + + else_8772793274221: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 12 + sw $t0, 4($v0) + + addi $t0, $zero, 61 + sb $t0, 8($v0) + + addi $t0, $zero, 40 + sb $t0, 9($v0) + + addi $t0, $zero, 10 + sb $t0, 10($v0) + + sb $zero, 11($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 196($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_42] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_45 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_24 <- internal_43 + lw $t0, 8($sp) + sw $t0, 84($sp) + + # JUMP TO endif_8772793274221 + j endif_8772793274221 + + endif_8772793274221: + + lw $v1, 84($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 184 + + jr $ra + + function___init___at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # SET ATTRIBUTE x OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8772793259153 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8772793259153 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8772793259153 + j object_set_attribute_8772793259153 + int_set_attribute_8772793259153: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8772793259153 + bool_set_attribute_8772793259153: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8772793259153 + object_set_attribute_8772793259153: + sw $t1, 8($t0) + end_set_attribute_8772793259153: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE y OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8772793259177 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8772793259177 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8772793259177 + j object_set_attribute_8772793259177 + int_set_attribute_8772793259177: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8772793259177 + bool_set_attribute_8772793259177: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8772793259177 + object_set_attribute_8772793259177: + sw $t1, 12($t0) + end_set_attribute_8772793259177: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_init_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # GET ATTRIBUTE x OF self + lw $t0, 24($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793259246 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793259246 + j object_get_attribute_8772793259246 + int_get_attribute_8772793259246: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8772793259246 + bool_get_attribute_8772793259246: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8772793259246 + object_get_attribute_8772793259246: + sw $t1, 12($sp) + end_get_attribute_8772793259246: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [a] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE y OF self + lw $t0, 24($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793259548 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793259548 + j object_get_attribute_8772793259548 + int_get_attribute_8772793259548: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 4($sp) + j end_get_attribute_8772793259548 + bool_get_attribute_8772793259548: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 4($sp) + j end_get_attribute_8772793259548 + object_get_attribute_8772793259548: + sw $t1, 4($sp) + end_get_attribute_8772793259548: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 16($sp) + sw $t0, 4($sp) + + # ARGUMENT [b] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_print_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -100 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # GET ATTRIBUTE y OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793259629 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793259629 + j object_get_attribute_8772793259629 + int_get_attribute_8772793259629: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 88($sp) + j end_get_attribute_8772793259629 + bool_get_attribute_8772793259629: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 88($sp) + j end_get_attribute_8772793259629 + object_get_attribute_8772793259629: + sw $t1, 88($sp) + end_get_attribute_8772793259629: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_4 + lw $t0, 80($sp) + sw $t0, 92($sp) + + # IF internal_1 THEN GOTO then_8772793274344 + lw $t0, 92($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8772793274344 + + # JUMP TO else_8772793274344 + j else_8772793274344 + + then_8772793274344: + + # GET ATTRIBUTE x OF self + lw $t0, 100($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793259716 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793259716 + j object_get_attribute_8772793259716 + int_get_attribute_8772793259716: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8772793259716 + bool_get_attribute_8772793259716: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8772793259716 + object_get_attribute_8772793259716: + sw $t1, 76($sp) + end_get_attribute_8772793259716: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # GET METHOD out_int OF Complex + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 68($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 76($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_6 + lw $t0, 72($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8772793274344 + j endif_8772793274344 + + else_8772793274344: + + # GET ATTRIBUTE x OF self + lw $t0, 100($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793260873 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793260873 + j object_get_attribute_8772793260873 + int_get_attribute_8772793260873: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 60($sp) + j end_get_attribute_8772793260873 + bool_get_attribute_8772793260873: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 60($sp) + j end_get_attribute_8772793260873 + object_get_attribute_8772793260873: + sw $t1, 60($sp) + end_get_attribute_8772793260873: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD out_int OF Complex + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 72($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 60($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 68($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 43 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 44($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD out_string OF Complex + lw $t0, 56($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE y OF self + lw $t0, 100($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793260963 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793260963 + j object_get_attribute_8772793260963 + int_get_attribute_8772793260963: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8772793260963 + bool_get_attribute_8772793260963: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8772793260963 + object_get_attribute_8772793260963: + sw $t1, 28($sp) + end_get_attribute_8772793260963: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_int OF Complex + lw $t0, 40($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_14] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_17] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_20 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 73 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Complex + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_21] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_24 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_0 <- internal_22 + lw $t0, 8($sp) + sw $t0, 96($sp) + + # JUMP TO endif_8772793274344 + j endif_8772793274344 + + endif_8772793274344: + + lw $v1, 96($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 100 + + jr $ra + + function_reflect_0_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -48 + + # GET ATTRIBUTE x OF self + lw $t0, 48($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793261370 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793261370 + j object_get_attribute_8772793261370 + int_get_attribute_8772793261370: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8772793261370 + bool_get_attribute_8772793261370: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8772793261370 + object_get_attribute_8772793261370: + sw $t1, 44($sp) + end_get_attribute_8772793261370: + + # GET ATTRIBUTE x OF self + lw $t0, 48($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793261397 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793261397 + j object_get_attribute_8772793261397 + int_get_attribute_8772793261397: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8772793261397 + bool_get_attribute_8772793261397: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 40($sp) + j end_get_attribute_8772793261397 + object_get_attribute_8772793261397: + sw $t1, 40($sp) + end_get_attribute_8772793261397: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 52($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE y OF self + lw $t0, 48($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793261496 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793261496 + j object_get_attribute_8772793261496 + int_get_attribute_8772793261496: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8772793261496 + bool_get_attribute_8772793261496: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8772793261496 + object_get_attribute_8772793261496: + sw $t1, 20($sp) + end_get_attribute_8772793261496: + + # GET ATTRIBUTE y OF self + lw $t0, 48($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793261523 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793261523 + j object_get_attribute_8772793261523 + int_get_attribute_8772793261523: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8772793261523 + bool_get_attribute_8772793261523: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8772793261523 + object_get_attribute_8772793261523: + sw $t1, 16($sp) + end_get_attribute_8772793261523: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_7] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_9] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 16($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_6] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + lw $v1, 48($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 48 + + jr $ra + + function_reflect_X_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # GET ATTRIBUTE y OF self + lw $t0, 24($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793262412 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793262412 + j object_get_attribute_8772793262412 + int_get_attribute_8772793262412: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8772793262412 + bool_get_attribute_8772793262412: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8772793262412 + object_get_attribute_8772793262412: + sw $t1, 20($sp) + end_get_attribute_8772793262412: + + # GET ATTRIBUTE y OF self + lw $t0, 24($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793262439 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793262439 + j object_get_attribute_8772793262439 + int_get_attribute_8772793262439: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8772793262439 + bool_get_attribute_8772793262439: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8772793262439 + object_get_attribute_8772793262439: + sw $t1, 16($sp) + end_get_attribute_8772793262439: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 16($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_reflect_Y_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # GET ATTRIBUTE x OF self + lw $t0, 24($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793262556 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793262556 + j object_get_attribute_8772793262556 + int_get_attribute_8772793262556: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8772793262556 + bool_get_attribute_8772793262556: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($sp) + j end_get_attribute_8772793262556 + object_get_attribute_8772793262556: + sw $t1, 20($sp) + end_get_attribute_8772793262556: + + # GET ATTRIBUTE x OF self + lw $t0, 24($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793262583 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793262583 + j object_get_attribute_8772793262583 + int_get_attribute_8772793262583: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8772793262583 + bool_get_attribute_8772793262583: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($sp) + j end_get_attribute_8772793262583 + object_get_attribute_8772793262583: + sw $t1, 16($sp) + end_get_attribute_8772793262583: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 12($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 16($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 12($sp) + addi $sp, $sp, 12 + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_equal_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -68 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # GET ATTRIBUTE x OF self + lw $t0, 72($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793262731 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793262731 + j object_get_attribute_8772793262731 + int_get_attribute_8772793262731: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 56($sp) + j end_get_attribute_8772793262731 + bool_get_attribute_8772793262731: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 56($sp) + j end_get_attribute_8772793262731 + object_get_attribute_8772793262731: + sw $t1, 56($sp) + end_get_attribute_8772793262731: + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD x_value OF Complex + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [d] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 68($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_6 + lw $t0, 40($sp) + sw $t0, 60($sp) + + # IF internal_1 THEN GOTO then_8772793275561 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8772793275561 + + # JUMP TO else_8772793275561 + j else_8772793275561 + + then_8772793275561: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET ATTRIBUTE y OF self + lw $t0, 72($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793263144 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793263144 + j object_get_attribute_8772793263144 + int_get_attribute_8772793263144: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8772793263144 + bool_get_attribute_8772793263144: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8772793263144 + object_get_attribute_8772793263144: + sw $t1, 28($sp) + end_get_attribute_8772793263144: + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD y_value OF Complex + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [d] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 32($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_9] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_13 + lw $t0, 12($sp) + sw $t0, 32($sp) + + # IF internal_8 THEN GOTO then_8772793276426 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8772793276426 + + # JUMP TO else_8772793276426 + j else_8772793276426 + + then_8772793276426: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # internal_7 <- internal_14 + lw $t0, 8($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8772793276426 + j endif_8772793276426 + + else_8772793276426: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # internal_7 <- internal_15 + lw $t0, 4($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8772793276426 + j endif_8772793276426 + + endif_8772793276426: + + # internal_0 <- internal_7 + lw $t0, 36($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8772793275561 + j endif_8772793275561 + + else_8772793275561: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- internal_16 + lw $t0, 0($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8772793275561 + j endif_8772793275561 + + endif_8772793275561: + + lw $v1, 64($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 68 + + jr $ra + + function_x_value_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE x OF self + lw $t0, 4($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793263879 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793263879 + j object_get_attribute_8772793263879 + int_get_attribute_8772793263879: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8772793263879 + bool_get_attribute_8772793263879: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8772793263879 + object_get_attribute_8772793263879: + sw $t1, 0($sp) + end_get_attribute_8772793263879: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_y_value_at_Complex: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE y OF self + lw $t0, 4($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8772793263909 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8772793263909 + j object_get_attribute_8772793263909 + int_get_attribute_8772793263909: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8772793263909 + bool_get_attribute_8772793263909: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8772793263909 + object_get_attribute_8772793263909: + sw $t1, 0($sp) + end_get_attribute_8772793263909: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/palindrome.mips b/tests/codegen/palindrome.mips new file mode 100644 index 000000000..886d71aee --- /dev/null +++ b/tests/codegen/palindrome.mips @@ -0,0 +1,2748 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Main: .word 52 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_pal: .word function_pal_at_Main + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SET ATTRIBUTE i OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8766093426451 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8766093426451 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8766093426451 + j object_set_attribute_8766093426451 + int_set_attribute_8766093426451: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8766093426451 + bool_set_attribute_8766093426451: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8766093426451 + object_set_attribute_8766093426451: + sw $t1, 8($t0) + end_set_attribute_8766093426451: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_pal_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -184 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 176($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 168($sp) + + # GET METHOD length OF String + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 168($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 164($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 192($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 172($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 180($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 160($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 184($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 172($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 168($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_6 + lw $t0, 156($sp) + sw $t0, 176($sp) + + # IF internal_1 THEN GOTO then_8766093445533 + lw $t0, 176($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8766093445533 + + # JUMP TO else_8766093445533 + j else_8766093445533 + + then_8766093445533: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 152($sp) + + # internal_0 <- internal_7 + lw $t0, 152($sp) + sw $t0, 180($sp) + + # JUMP TO endif_8766093445533 + j endif_8766093445533 + + else_8766093445533: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 144($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 136($sp) + + # GET METHOD length OF String + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 136($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 132($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 192($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 140($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 148($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 128($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 152($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 140($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 136($sp) + addi $sp, $sp, 12 + + # internal_9 <- internal_14 + lw $t0, 124($sp) + sw $t0, 144($sp) + + # IF internal_9 THEN GOTO then_8766093445590 + lw $t0, 144($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8766093445590 + + # JUMP TO else_8766093445590 + j else_8766093445590 + + then_8766093445590: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # internal_8 <- internal_15 + lw $t0, 120($sp) + sw $t0, 148($sp) + + # JUMP TO endif_8766093445590 + j endif_8766093445590 + + else_8766093445590: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 108($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # GET METHOD substr OF String + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 96($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 92($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 200($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 124($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 120($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_22 + lw $t0, 108($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 116($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD length OF String + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 192($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_25 + lw $t0, 88($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 96($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 76($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_23] + lw $t0, 100($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_26] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # GET METHOD substr OF String + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 60($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 56($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 200($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_27] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_28] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_31 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 80($sp) + addi $sp, $sp, 16 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_20] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # internal_17 <- internal_32 + lw $t0, 52($sp) + sw $t0, 112($sp) + + # IF internal_17 THEN GOTO then_8766093465531 + lw $t0, 112($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8766093465531 + + # JUMP TO else_8766093465531 + j else_8766093465531 + + then_8766093465531: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD length OF String + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [s] + lw $t0, 192($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_36 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 52($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_34] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_37] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 40($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD substr OF String + lw $t0, 184($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [s] + lw $t0, 200($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_33] + lw $t0, 64($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_38] + lw $t0, 44($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_41 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 40($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD pal OF Main + lw $t0, 188($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 200($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_39] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_44 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_42 + lw $t0, 12($sp) + sw $t0, 116($sp) + + # JUMP TO endif_8766093465531 + j endif_8766093465531 + + else_8766093465531: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_16 <- internal_45 + lw $t0, 0($sp) + sw $t0, 116($sp) + + # JUMP TO endif_8766093465531 + j endif_8766093465531 + + endif_8766093465531: + + # internal_8 <- internal_16 + lw $t0, 116($sp) + sw $t0, 148($sp) + + # JUMP TO endif_8766093445590 + j endif_8766093445590 + + endif_8766093445590: + + # internal_0 <- internal_8 + lw $t0, 148($sp) + sw $t0, 180($sp) + + # JUMP TO endif_8766093445533 + j endif_8766093445533 + + endif_8766093445533: + + lw $v1, 180($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 184 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -96 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 88($sp) + + # ALLOCATING INT -> 4294967295 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4294967295 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_xor + jal function_xor + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_3] + lw $t0, 92($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE i OF self + lw $t0, 96($sp) + lw $t1, 80($sp) + beq $t1, $zero, object_set_attribute_8766093429547 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8766093429547 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8766093429547 + j object_set_attribute_8766093429547 + int_set_attribute_8766093429547: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8766093429547 + bool_set_attribute_8766093429547: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8766093429547 + object_set_attribute_8766093429547: + sw $t1, 8($t0) + end_set_attribute_8766093429547: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 24 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 24 + sw $t0, 4($v0) + + addi $t0, $zero, 101 + sb $t0, 8($v0) + + addi $t0, $zero, 110 + sb $t0, 9($v0) + + addi $t0, $zero, 116 + sb $t0, 10($v0) + + addi $t0, $zero, 101 + sb $t0, 11($v0) + + addi $t0, $zero, 114 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 97 + sb $t0, 14($v0) + + addi $t0, $zero, 32 + sb $t0, 15($v0) + + addi $t0, $zero, 115 + sb $t0, 16($v0) + + addi $t0, $zero, 116 + sb $t0, 17($v0) + + addi $t0, $zero, 114 + sb $t0, 18($v0) + + addi $t0, $zero, 105 + sb $t0, 19($v0) + + addi $t0, $zero, 110 + sb $t0, 20($v0) + + addi $t0, $zero, 103 + sb $t0, 21($v0) + + addi $t0, $zero, 10 + sb $t0, 22($v0) + + sb $zero, 23($v0) + + sw $v0, 76($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 68($sp) + + # GET METHOD out_string OF Main + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 68($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 76($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 84($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 56($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD in_string OF Main + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 104($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD pal OF Main + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # internal_9 <- internal_13 + lw $t0, 40($sp) + sw $t0, 56($sp) + + # IF internal_9 THEN GOTO then_8766093465540 + lw $t0, 56($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8766093465540 + + # JUMP TO else_8766093465540 + j else_8766093465540 + + then_8766093465540: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 31 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 31 + sw $t0, 4($v0) + + addi $t0, $zero, 116 + sb $t0, 8($v0) + + addi $t0, $zero, 104 + sb $t0, 9($v0) + + addi $t0, $zero, 97 + sb $t0, 10($v0) + + addi $t0, $zero, 116 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 119 + sb $t0, 13($v0) + + addi $t0, $zero, 97 + sb $t0, 14($v0) + + addi $t0, $zero, 115 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 97 + sb $t0, 17($v0) + + addi $t0, $zero, 32 + sb $t0, 18($v0) + + addi $t0, $zero, 112 + sb $t0, 19($v0) + + addi $t0, $zero, 97 + sb $t0, 20($v0) + + addi $t0, $zero, 108 + sb $t0, 21($v0) + + addi $t0, $zero, 105 + sb $t0, 22($v0) + + addi $t0, $zero, 110 + sb $t0, 23($v0) + + addi $t0, $zero, 100 + sb $t0, 24($v0) + + addi $t0, $zero, 114 + sb $t0, 25($v0) + + addi $t0, $zero, 111 + sb $t0, 26($v0) + + addi $t0, $zero, 109 + sb $t0, 27($v0) + + addi $t0, $zero, 101 + sb $t0, 28($v0) + + addi $t0, $zero, 10 + sb $t0, 29($v0) + + sb $zero, 30($v0) + + sw $v0, 28($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Main + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_16] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_19 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_17 + lw $t0, 24($sp) + sw $t0, 60($sp) + + # JUMP TO endif_8766093465540 + j endif_8766093465540 + + else_8766093465540: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 35 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 35 + sw $t0, 4($v0) + + addi $t0, $zero, 116 + sb $t0, 8($v0) + + addi $t0, $zero, 104 + sb $t0, 9($v0) + + addi $t0, $zero, 97 + sb $t0, 10($v0) + + addi $t0, $zero, 116 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 119 + sb $t0, 13($v0) + + addi $t0, $zero, 97 + sb $t0, 14($v0) + + addi $t0, $zero, 115 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 110 + sb $t0, 17($v0) + + addi $t0, $zero, 111 + sb $t0, 18($v0) + + addi $t0, $zero, 116 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 97 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 112 + sb $t0, 23($v0) + + addi $t0, $zero, 97 + sb $t0, 24($v0) + + addi $t0, $zero, 108 + sb $t0, 25($v0) + + addi $t0, $zero, 105 + sb $t0, 26($v0) + + addi $t0, $zero, 110 + sb $t0, 27($v0) + + addi $t0, $zero, 100 + sb $t0, 28($v0) + + addi $t0, $zero, 114 + sb $t0, 29($v0) + + addi $t0, $zero, 111 + sb $t0, 30($v0) + + addi $t0, $zero, 109 + sb $t0, 31($v0) + + addi $t0, $zero, 101 + sb $t0, 32($v0) + + addi $t0, $zero, 10 + sb $t0, 33($v0) + + sb $zero, 34($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 96($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_23 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + # internal_8 <- internal_21 + lw $t0, 8($sp) + sw $t0, 60($sp) + + # JUMP TO endif_8766093465540 + j endif_8766093465540 + + endif_8766093465540: + + lw $v1, 60($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 96 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/primes.mips b/tests/codegen/primes.mips new file mode 100644 index 000000000..101dfc4e5 --- /dev/null +++ b/tests/codegen/primes.mips @@ -0,0 +1,3272 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Main: .word 64 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -264 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 31 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 31 + sw $t0, 4($v0) + + addi $t0, $zero, 50 + sb $t0, 8($v0) + + addi $t0, $zero, 32 + sb $t0, 9($v0) + + addi $t0, $zero, 105 + sb $t0, 10($v0) + + addi $t0, $zero, 115 + sb $t0, 11($v0) + + addi $t0, $zero, 32 + sb $t0, 12($v0) + + addi $t0, $zero, 116 + sb $t0, 13($v0) + + addi $t0, $zero, 114 + sb $t0, 14($v0) + + addi $t0, $zero, 105 + sb $t0, 15($v0) + + addi $t0, $zero, 118 + sb $t0, 16($v0) + + addi $t0, $zero, 105 + sb $t0, 17($v0) + + addi $t0, $zero, 97 + sb $t0, 18($v0) + + addi $t0, $zero, 108 + sb $t0, 19($v0) + + addi $t0, $zero, 108 + sb $t0, 20($v0) + + addi $t0, $zero, 121 + sb $t0, 21($v0) + + addi $t0, $zero, 32 + sb $t0, 22($v0) + + addi $t0, $zero, 112 + sb $t0, 23($v0) + + addi $t0, $zero, 114 + sb $t0, 24($v0) + + addi $t0, $zero, 105 + sb $t0, 25($v0) + + addi $t0, $zero, 109 + sb $t0, 26($v0) + + addi $t0, $zero, 101 + sb $t0, 27($v0) + + addi $t0, $zero, 46 + sb $t0, 28($v0) + + addi $t0, $zero, 10 + sb $t0, 29($v0) + + sb $zero, 30($v0) + + sw $v0, 260($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 252($sp) + + # GET METHOD out_string OF Main + lw $t0, 264($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 252($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 248($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 276($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 272($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 260($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 268($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 244($sp) + + # SET ATTRIBUTE out OF self + lw $t0, 264($sp) + lw $t1, 244($sp) + beq $t1, $zero, object_set_attribute_8760027235292 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8760027235292 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8760027235292 + j object_set_attribute_8760027235292 + int_set_attribute_8760027235292: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8760027235292 + bool_set_attribute_8760027235292: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8760027235292 + object_set_attribute_8760027235292: + sw $t1, 8($t0) + end_set_attribute_8760027235292: + + # GET ATTRIBUTE out OF self + lw $t0, 264($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027237187 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027237187 + j object_get_attribute_8760027237187 + int_get_attribute_8760027237187: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 240($sp) + j end_get_attribute_8760027237187 + bool_get_attribute_8760027237187: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 240($sp) + j end_get_attribute_8760027237187 + object_get_attribute_8760027237187: + sw $t1, 240($sp) + end_get_attribute_8760027237187: + + # SET ATTRIBUTE testee OF self + lw $t0, 264($sp) + lw $t1, 240($sp) + beq $t1, $zero, object_set_attribute_8760027235304 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8760027235304 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8760027235304 + j object_set_attribute_8760027235304 + int_set_attribute_8760027235304: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8760027235304 + bool_set_attribute_8760027235304: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8760027235304 + object_set_attribute_8760027235304: + sw $t1, 12($t0) + end_set_attribute_8760027235304: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 236($sp) + + # SET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 236($sp) + beq $t1, $zero, object_set_attribute_8760027237199 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8760027237199 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8760027237199 + j object_set_attribute_8760027237199 + int_set_attribute_8760027237199: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8760027237199 + bool_set_attribute_8760027237199: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8760027237199 + object_set_attribute_8760027237199: + sw $t1, 16($t0) + end_set_attribute_8760027237199: + + # ALLOCATING INT -> 500 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 500 + sw $t0, 8($v0) + sw $v0, 232($sp) + + # SET ATTRIBUTE stop OF self + lw $t0, 264($sp) + lw $t1, 232($sp) + beq $t1, $zero, object_set_attribute_8760027237220 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8760027237220 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8760027237220 + j object_set_attribute_8760027237220 + int_set_attribute_8760027237220: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8760027237220 + bool_set_attribute_8760027237220: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 20($t0) + j end_set_attribute_8760027237220 + object_set_attribute_8760027237220: + sw $t1, 20($t0) + end_set_attribute_8760027237220: + + # ALLOCATING NUll INTO -> internal_8 + sw $zero, 228($sp) + + while_start_8760027228763: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 224($sp) + + # IF internal_9 THEN GOTO while_body_8760027228763 + lw $t0, 224($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8760027228763 + + # JUMP TO while_end_8760027228763 + j while_end_8760027228763 + + while_body_8760027228763: + + # GET ATTRIBUTE testee OF self + lw $t0, 264($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027237392 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027237392 + j object_get_attribute_8760027237392 + int_get_attribute_8760027237392: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 220($sp) + j end_get_attribute_8760027237392 + bool_get_attribute_8760027237392: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 220($sp) + j end_get_attribute_8760027237392 + object_get_attribute_8760027237392: + sw $t1, 220($sp) + end_get_attribute_8760027237392: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 216($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 232($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 228($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 224($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE testee OF self + lw $t0, 264($sp) + lw $t1, 212($sp) + beq $t1, $zero, object_set_attribute_8760027237358 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8760027237358 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8760027237358 + j object_set_attribute_8760027237358 + int_set_attribute_8760027237358: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8760027237358 + bool_set_attribute_8760027237358: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8760027237358 + object_set_attribute_8760027237358: + sw $t1, 12($t0) + end_set_attribute_8760027237358: + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 208($sp) + + # SET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 208($sp) + beq $t1, $zero, object_set_attribute_8760027237431 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8760027237431 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8760027237431 + j object_set_attribute_8760027237431 + int_set_attribute_8760027237431: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8760027237431 + bool_set_attribute_8760027237431: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8760027237431 + object_set_attribute_8760027237431: + sw $t1, 16($t0) + end_set_attribute_8760027237431: + + # ALLOCATING NUll INTO -> internal_14 + sw $zero, 204($sp) + + while_start_8760027230543: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 196($sp) + + # GET ATTRIBUTE testee OF self + lw $t0, 264($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027237551 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027237551 + j object_get_attribute_8760027237551 + int_get_attribute_8760027237551: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 192($sp) + j end_get_attribute_8760027237551 + bool_get_attribute_8760027237551: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 192($sp) + j end_get_attribute_8760027237551 + object_get_attribute_8760027237551: + sw $t1, 192($sp) + end_get_attribute_8760027237551: + + # GET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027237578 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027237578 + j object_get_attribute_8760027237578 + int_get_attribute_8760027237578: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 188($sp) + j end_get_attribute_8760027237578 + bool_get_attribute_8760027237578: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 188($sp) + j end_get_attribute_8760027237578 + object_get_attribute_8760027237578: + sw $t1, 188($sp) + end_get_attribute_8760027237578: + + # GET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027237590 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027237590 + j object_get_attribute_8760027237590 + int_get_attribute_8760027237590: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 184($sp) + j end_get_attribute_8760027237590 + bool_get_attribute_8760027237590: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 184($sp) + j end_get_attribute_8760027237590 + object_get_attribute_8760027237590: + sw $t1, 184($sp) + end_get_attribute_8760027237590: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_18] + lw $t0, 200($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 196($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 192($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_17] + lw $t0, 204($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_20] + lw $t0, 192($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 188($sp) + addi $sp, $sp, 12 + + # internal_16 <- internal_21 + lw $t0, 176($sp) + sw $t0, 196($sp) + + # IF internal_16 THEN GOTO then_8760027230555 + lw $t0, 196($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8760027230555 + + # JUMP TO else_8760027230555 + j else_8760027230555 + + then_8760027230555: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 172($sp) + + # internal_15 <- internal_22 + lw $t0, 172($sp) + sw $t0, 200($sp) + + # JUMP TO endif_8760027230555 + j endif_8760027230555 + + else_8760027230555: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 164($sp) + + # GET ATTRIBUTE testee OF self + lw $t0, 264($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027239051 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027239051 + j object_get_attribute_8760027239051 + int_get_attribute_8760027239051: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 160($sp) + j end_get_attribute_8760027239051 + bool_get_attribute_8760027239051: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 160($sp) + j end_get_attribute_8760027239051 + object_get_attribute_8760027239051: + sw $t1, 160($sp) + end_get_attribute_8760027239051: + + # GET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027239078 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027239078 + j object_get_attribute_8760027239078 + int_get_attribute_8760027239078: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 156($sp) + j end_get_attribute_8760027239078 + bool_get_attribute_8760027239078: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 156($sp) + j end_get_attribute_8760027239078 + object_get_attribute_8760027239078: + sw $t1, 156($sp) + end_get_attribute_8760027239078: + + # GET ATTRIBUTE testee OF self + lw $t0, 264($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027239105 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027239105 + j object_get_attribute_8760027239105 + int_get_attribute_8760027239105: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 152($sp) + j end_get_attribute_8760027239105 + bool_get_attribute_8760027239105: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 152($sp) + j end_get_attribute_8760027239105 + object_get_attribute_8760027239105: + sw $t1, 152($sp) + end_get_attribute_8760027239105: + + # GET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027239117 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027239117 + j object_get_attribute_8760027239117 + int_get_attribute_8760027239117: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 148($sp) + j end_get_attribute_8760027239117 + bool_get_attribute_8760027239117: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 148($sp) + j end_get_attribute_8760027239117 + object_get_attribute_8760027239117: + sw $t1, 148($sp) + end_get_attribute_8760027239117: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_27] + lw $t0, 164($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_28] + lw $t0, 160($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 156($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_26] + lw $t0, 168($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_29] + lw $t0, 156($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 152($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_25] + lw $t0, 172($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_30] + lw $t0, 152($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 148($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 132($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_31] + lw $t0, 148($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_32] + lw $t0, 144($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 140($sp) + addi $sp, $sp, 12 + + # internal_24 <- internal_33 + lw $t0, 128($sp) + sw $t0, 164($sp) + + # IF internal_24 THEN GOTO then_8760027230615 + lw $t0, 164($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8760027230615 + + # JUMP TO else_8760027230615 + j else_8760027230615 + + then_8760027230615: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 124($sp) + + # internal_23 <- internal_34 + lw $t0, 124($sp) + sw $t0, 168($sp) + + # JUMP TO endif_8760027230615 + j endif_8760027230615 + + else_8760027230615: + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 120($sp) + + # internal_23 <- internal_35 + lw $t0, 120($sp) + sw $t0, 168($sp) + + # JUMP TO endif_8760027230615 + j endif_8760027230615 + + endif_8760027230615: + + # internal_15 <- internal_23 + lw $t0, 168($sp) + sw $t0, 200($sp) + + # JUMP TO endif_8760027230555 + j endif_8760027230555 + + endif_8760027230555: + + # IF internal_15 THEN GOTO while_body_8760027230543 + lw $t0, 200($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8760027230543 + + # JUMP TO while_end_8760027230543 + j while_end_8760027230543 + + while_body_8760027230543: + + # GET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027239355 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027239355 + j object_get_attribute_8760027239355 + int_get_attribute_8760027239355: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 116($sp) + j end_get_attribute_8760027239355 + bool_get_attribute_8760027239355: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 116($sp) + j end_get_attribute_8760027239355 + object_get_attribute_8760027239355: + sw $t1, 116($sp) + end_get_attribute_8760027239355: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 112($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_36] + lw $t0, 128($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_37] + lw $t0, 124($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 120($sp) + addi $sp, $sp, 12 + + # SET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 108($sp) + beq $t1, $zero, object_set_attribute_8760027239325 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8760027239325 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8760027239325 + j object_set_attribute_8760027239325 + int_set_attribute_8760027239325: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8760027239325 + bool_set_attribute_8760027239325: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 16($t0) + j end_set_attribute_8760027239325 + object_set_attribute_8760027239325: + sw $t1, 16($t0) + end_set_attribute_8760027239325: + + # JUMP TO while_start_8760027230543 + j while_start_8760027230543 + + while_end_8760027230543: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 100($sp) + + # GET ATTRIBUTE testee OF self + lw $t0, 264($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027239964 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027239964 + j object_get_attribute_8760027239964 + int_get_attribute_8760027239964: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 96($sp) + j end_get_attribute_8760027239964 + bool_get_attribute_8760027239964: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 96($sp) + j end_get_attribute_8760027239964 + object_get_attribute_8760027239964: + sw $t1, 96($sp) + end_get_attribute_8760027239964: + + # GET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027239991 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027239991 + j object_get_attribute_8760027239991 + int_get_attribute_8760027239991: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 92($sp) + j end_get_attribute_8760027239991 + bool_get_attribute_8760027239991: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 92($sp) + j end_get_attribute_8760027239991 + object_get_attribute_8760027239991: + sw $t1, 92($sp) + end_get_attribute_8760027239991: + + # GET ATTRIBUTE divisor OF self + lw $t0, 264($sp) + lw $t1, 16($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027240003 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027240003 + j object_get_attribute_8760027240003 + int_get_attribute_8760027240003: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 88($sp) + j end_get_attribute_8760027240003 + bool_get_attribute_8760027240003: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 88($sp) + j end_get_attribute_8760027240003 + object_get_attribute_8760027240003: + sw $t1, 88($sp) + end_get_attribute_8760027240003: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_42] + lw $t0, 104($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_43] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 96($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_41] + lw $t0, 108($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_44] + lw $t0, 96($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 92($sp) + addi $sp, $sp, 12 + + # internal_40 <- internal_45 + lw $t0, 80($sp) + sw $t0, 100($sp) + + # IF internal_40 THEN GOTO then_8760027230621 + lw $t0, 100($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8760027230621 + + # JUMP TO else_8760027230621 + j else_8760027230621 + + then_8760027230621: + + # GET ATTRIBUTE testee OF self + lw $t0, 264($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027240108 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027240108 + j object_get_attribute_8760027240108 + int_get_attribute_8760027240108: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8760027240108 + bool_get_attribute_8760027240108: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 76($sp) + j end_get_attribute_8760027240108 + object_get_attribute_8760027240108: + sw $t1, 76($sp) + end_get_attribute_8760027240108: + + # SET ATTRIBUTE out OF self + lw $t0, 264($sp) + lw $t1, 76($sp) + beq $t1, $zero, object_set_attribute_8760027240093 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8760027240093 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8760027240093 + j object_set_attribute_8760027240093 + int_set_attribute_8760027240093: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8760027240093 + bool_set_attribute_8760027240093: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8760027240093 + object_set_attribute_8760027240093: + sw $t1, 8($t0) + end_set_attribute_8760027240093: + + # GET ATTRIBUTE out OF self + lw $t0, 264($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027240135 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027240135 + j object_get_attribute_8760027240135 + int_get_attribute_8760027240135: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8760027240135 + bool_get_attribute_8760027240135: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 72($sp) + j end_get_attribute_8760027240135 + object_get_attribute_8760027240135: + sw $t1, 72($sp) + end_get_attribute_8760027240135: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD out_int OF Main + lw $t0, 264($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 276($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_47] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_50 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 20 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 20 + sw $t0, 4($v0) + + addi $t0, $zero, 32 + sb $t0, 8($v0) + + addi $t0, $zero, 105 + sb $t0, 9($v0) + + addi $t0, $zero, 115 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 112 + sb $t0, 12($v0) + + addi $t0, $zero, 114 + sb $t0, 13($v0) + + addi $t0, $zero, 105 + sb $t0, 14($v0) + + addi $t0, $zero, 109 + sb $t0, 15($v0) + + addi $t0, $zero, 101 + sb $t0, 16($v0) + + addi $t0, $zero, 46 + sb $t0, 17($v0) + + addi $t0, $zero, 10 + sb $t0, 18($v0) + + sb $zero, 19($v0) + + sw $v0, 56($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 48($sp) + + # GET METHOD out_string OF Main + lw $t0, 264($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 276($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_51] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_54 + lw $t0, 56($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # internal_39 <- internal_52 + lw $t0, 52($sp) + sw $t0, 104($sp) + + # JUMP TO endif_8760027230621 + j endif_8760027230621 + + else_8760027230621: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # internal_39 <- internal_55 + lw $t0, 40($sp) + sw $t0, 104($sp) + + # JUMP TO endif_8760027230621 + j endif_8760027230621 + + endif_8760027230621: + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET ATTRIBUTE stop OF self + lw $t0, 264($sp) + lw $t1, 20($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027207810 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027207810 + j object_get_attribute_8760027207810 + int_get_attribute_8760027207810: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8760027207810 + bool_get_attribute_8760027207810: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8760027207810 + object_get_attribute_8760027207810: + sw $t1, 28($sp) + end_get_attribute_8760027207810: + + # GET ATTRIBUTE testee OF self + lw $t0, 264($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8760027207822 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8760027207822 + j object_get_attribute_8760027207822 + int_get_attribute_8760027207822: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8760027207822 + bool_get_attribute_8760027207822: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8760027207822 + object_get_attribute_8760027207822: + sw $t1, 24($sp) + end_get_attribute_8760027207822: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_58] + lw $t0, 40($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_59] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than_or_equal + jal function_less_than_or_equal + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # internal_57 <- internal_60 + lw $t0, 20($sp) + sw $t0, 32($sp) + + # IF internal_57 THEN GOTO then_8760027224836 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8760027224836 + + # JUMP TO else_8760027224836 + j else_8760027224836 + + then_8760027224836: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 13 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 13 + sw $t0, 4($v0) + + addi $t0, $zero, 104 + sb $t0, 8($v0) + + addi $t0, $zero, 97 + sb $t0, 9($v0) + + addi $t0, $zero, 108 + sb $t0, 10($v0) + + addi $t0, $zero, 116 + sb $t0, 11($v0) + + sb $zero, 12($v0) + + sw $v0, 16($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF String + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_61] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_64 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # internal_56 <- internal_62 + lw $t0, 12($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8760027224836 + j endif_8760027224836 + + else_8760027224836: + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 17 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 17 + sw $t0, 4($v0) + + addi $t0, $zero, 99 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 110 + sb $t0, 10($v0) + + addi $t0, $zero, 116 + sb $t0, 11($v0) + + addi $t0, $zero, 105 + sb $t0, 12($v0) + + addi $t0, $zero, 110 + sb $t0, 13($v0) + + addi $t0, $zero, 117 + sb $t0, 14($v0) + + addi $t0, $zero, 101 + sb $t0, 15($v0) + + sb $zero, 16($v0) + + sw $v0, 0($sp) + + # internal_56 <- internal_65 + lw $t0, 0($sp) + sw $t0, 36($sp) + + # JUMP TO endif_8760027224836 + j endif_8760027224836 + + endif_8760027224836: + + # JUMP TO while_start_8760027228763 + j while_start_8760027228763 + + while_end_8760027228763: + + # SET ATTRIBUTE m OF self + lw $t0, 264($sp) + lw $t1, 228($sp) + beq $t1, $zero, object_set_attribute_8760027237244 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8760027237244 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8760027237244 + j object_set_attribute_8760027237244 + int_set_attribute_8760027237244: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8760027237244 + bool_set_attribute_8760027237244: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($t0) + j end_set_attribute_8760027237244 + object_set_attribute_8760027237244: + sw $t1, 24($t0) + end_set_attribute_8760027237244: + + lw $v1, 264($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 264 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/print-cool.mips b/tests/codegen/print-cool.mips new file mode 100644 index 000000000..6265929b2 --- /dev/null +++ b/tests/codegen/print-cool.mips @@ -0,0 +1,1802 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_Main: .word 44 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Main: + lw $v1, 0($sp) + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -116 + + # ALLOCATING -> Object + li $v0, 9 + lw $a0, type_Object + syscall + la $t0, type_Object + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 112($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 120($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Object + jal function___init___at_Object + lw $ra, 4($sp) + sw $v1, 120($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 104($sp) + + # GET METHOD type_name OF Object + lw $t0, 112($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 104($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 100($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 120($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 108($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 116($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 96($sp) + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 92($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 84($sp) + + # GET METHOD substr OF String + lw $t0, 108($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_1] + lw $t0, 124($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_4] + lw $t0, 112($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 108($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 96($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 104($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 72($sp) + + # GET METHOD out_string OF Main + lw $t0, 116($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 72($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 68($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 128($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 100($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 80($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 88($sp) + addi $sp, $sp, 12 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # ALLOCATING NUll INTO -> internal_12 + sw $zero, 64($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 128($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_12] + lw $t0, 76($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_equal + jal function_equal + lw $ra, 8($sp) + sw $v1, 72($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD type_name OF Bool + lw $t0, 60($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 56($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 64($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 44($sp) + + # ALLOCATING INT -> 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 3 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # ALLOCATING INT -> 6 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 6 + sw $t0, 8($v0) + sw $v0, 32($sp) + + # GET METHOD substr OF String + lw $t0, 56($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 32($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_14] + lw $t0, 72($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_17] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_18] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_21 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 52($sp) + addi $sp, $sp, 16 + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Main + lw $t0, 76($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_9] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_19] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_24 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 12($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD out_string OF Main + lw $t0, 116($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 128($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_25] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_28 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 116 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen/sort-list.mips b/tests/codegen/sort-list.mips new file mode 100644 index 000000000..b7b5a8fd0 --- /dev/null +++ b/tests/codegen/sort-list.mips @@ -0,0 +1,4349 @@ +.data + + ################ + # DATA SECTION # + ################ + + #################### + # Types declaration # + #################### + + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_List: .word 76 + type_List_inherits_from: .word type_IO + type_List_name_address: .word type_List_name_size + type_List___init__: .word function___init___at_List + type_List_abort: .word function_abort_at_Object + type_List_type_name: .word function_type_name_at_Object + type_List_copy: .word function_copy_at_Object + type_List_out_string: .word function_out_string_at_IO + type_List_out_int: .word function_out_int_at_IO + type_List_in_string: .word function_in_string_at_IO + type_List_in_int: .word function_in_int_at_IO + type_List_isNil: .word function_isNil_at_List + type_List_cons: .word function_cons_at_List + type_List_car: .word function_car_at_List + type_List_cdr: .word function_cdr_at_List + type_List_rev: .word function_rev_at_List + type_List_sort: .word function_sort_at_List + type_List_insert: .word function_insert_at_List + type_List_rcons: .word function_rcons_at_List + type_List_print_list: .word function_print_list_at_List + + type_Cons: .word 88 + type_Cons_inherits_from: .word type_List + type_Cons_name_address: .word type_Cons_name_size + type_Cons___init__: .word function___init___at_Cons + type_Cons_abort: .word function_abort_at_Object + type_Cons_type_name: .word function_type_name_at_Object + type_Cons_copy: .word function_copy_at_Object + type_Cons_out_string: .word function_out_string_at_IO + type_Cons_out_int: .word function_out_int_at_IO + type_Cons_in_string: .word function_in_string_at_IO + type_Cons_in_int: .word function_in_int_at_IO + type_Cons_isNil: .word function_isNil_at_Cons + type_Cons_cons: .word function_cons_at_List + type_Cons_car: .word function_car_at_Cons + type_Cons_cdr: .word function_cdr_at_Cons + type_Cons_rev: .word function_rev_at_Cons + type_Cons_sort: .word function_sort_at_Cons + type_Cons_insert: .word function_insert_at_Cons + type_Cons_rcons: .word function_rcons_at_Cons + type_Cons_print_list: .word function_print_list_at_Cons + type_Cons_init: .word function_init_at_Cons + + type_Nil: .word 76 + type_Nil_inherits_from: .word type_List + type_Nil_name_address: .word type_Nil_name_size + type_Nil___init__: .word function___init___at_Nil + type_Nil_abort: .word function_abort_at_Object + type_Nil_type_name: .word function_type_name_at_Object + type_Nil_copy: .word function_copy_at_Object + type_Nil_out_string: .word function_out_string_at_IO + type_Nil_out_int: .word function_out_int_at_IO + type_Nil_in_string: .word function_in_string_at_IO + type_Nil_in_int: .word function_in_int_at_IO + type_Nil_isNil: .word function_isNil_at_Nil + type_Nil_cons: .word function_cons_at_List + type_Nil_car: .word function_car_at_List + type_Nil_cdr: .word function_cdr_at_List + type_Nil_rev: .word function_rev_at_Nil + type_Nil_sort: .word function_sort_at_Nil + type_Nil_insert: .word function_insert_at_Nil + type_Nil_rcons: .word function_rcons_at_Nil + type_Nil_print_list: .word function_print_list_at_Nil + + type_Main: .word 52 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_iota: .word function_iota_at_Main + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_List_name_size: .word 4 + type_List_name: .asciiz "List" + + type_Cons_name_size: .word 4 + type_Cons_name: .asciiz "Cons" + + type_Nil_name_size: .word 3 + type_Nil_name: .asciiz "Nil" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + + ################ + # TEXT SECTION # + ################ + + ######################### + # Functions declaration # + ######################### + + function_add: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # ADD FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + add $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # SUB FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sub $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # TIMES FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + mult $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_div: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # DIV FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + div $t0, $t1 + mflo $t2 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # XOR FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + xor $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + slt $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # LESS EQ FUNCT + lw $t0, 8($sp) + lw $t0, 8($t0) + lw $t1, 4($sp) + lw $t1, 8($t1) + sle $t2, $t0, $t1 + + lw $t0, 0($sp) + sw $t2, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -40 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 32($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # internal_2 <- EQUALADDRESS (a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 <- EQUALADDRESS (b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # IF internal_2 THEN GOTO a_is_type_object + lw $t0, 28($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_object + + # internal_3 <- TYPEOF a + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 <- DIRECTION OF String + la $t0, type_String + sw $t0, 12($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_7 <- EQUALADDRESS (internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 <- EQUALADDRESS (internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 <- EQUALADDRESS (internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_7 THEN GOTO a_is_type_int_or_bool + lw $t0, 8($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_8 THEN GOTO a_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_int_or_bool + + # IF internal_9 THEN GOTO a_is_type_string + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, a_is_type_string + + # JUMP TO a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 <- EQUALINT (a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 <- EQUALSTRING (a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # JUMP TO end_of_equal + j end_of_equal + + a_is_type_object: + + # EQUAL FUNCT + lw $t0, 44($sp) + lw $t1, 40($sp) + seq $t2, $t0, $t1 + + lw $t0, 36($sp) + sw $t2, 8($t0) + + # JUMP TO end_of_equal + j end_of_equal + + end_of_equal: + + lw $v1, 36($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -28 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 24($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # internal_1 <- EQUALADDRESS (source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 <- EQUALADDRESS (dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # IF internal_1 THEN GOTO source_is_type_object + lw $t0, 20($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_object + + # internal_2 <- TYPEOF source + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 <- DIRECTION OF Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 <- DIRECTION OF Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_5 <- EQUALADDRESS (internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 <- EQUALADDRESS (internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # IF internal_5 THEN GOTO source_is_type_int_or_bool + lw $t0, 4($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # IF internal_6 THEN GOTO source_is_type_int_or_bool + lw $t0, 0($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, source_is_type_int_or_bool + + # JUMP TO source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest <- source WHERE source IS AN INT + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) + lw $t1, 0($t0) + lw $t2, 8($t0) + sw $t1, 0($v0) + sw $a0, 4($v0) + sw $t2, 8($v0) + sw $v0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest <- source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # JUMP TO source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + lw $v1, 32($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -24 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 33 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 33 + sw $t0, 4($v0) + + addi $t0, $zero, 65 + sb $t0, 8($v0) + + addi $t0, $zero, 98 + sb $t0, 9($v0) + + addi $t0, $zero, 111 + sb $t0, 10($v0) + + addi $t0, $zero, 114 + sb $t0, 11($v0) + + addi $t0, $zero, 116 + sb $t0, 12($v0) + + addi $t0, $zero, 32 + sb $t0, 13($v0) + + addi $t0, $zero, 99 + sb $t0, 14($v0) + + addi $t0, $zero, 97 + sb $t0, 15($v0) + + addi $t0, $zero, 108 + sb $t0, 16($v0) + + addi $t0, $zero, 108 + sb $t0, 17($v0) + + addi $t0, $zero, 101 + sb $t0, 18($v0) + + addi $t0, $zero, 100 + sb $t0, 19($v0) + + addi $t0, $zero, 32 + sb $t0, 20($v0) + + addi $t0, $zero, 102 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 111 + sb $t0, 23($v0) + + addi $t0, $zero, 109 + sb $t0, 24($v0) + + addi $t0, $zero, 32 + sb $t0, 25($v0) + + addi $t0, $zero, 99 + sb $t0, 26($v0) + + addi $t0, $zero, 108 + sb $t0, 27($v0) + + addi $t0, $zero, 97 + sb $t0, 28($v0) + + addi $t0, $zero, 115 + sb $t0, 29($v0) + + addi $t0, $zero, 115 + sb $t0, 30($v0) + + addi $t0, $zero, 32 + sb $t0, 31($v0) + + sb $zero, 32($v0) + + sw $v0, 20($sp) + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 8($sp) + + # ALLOCATING INT -> 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 2 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD type_name OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 32($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_0] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD concat OF String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 24($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) + addi $sp, $sp, 12 + + lw $t0, 12($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # EXIT! + li $v0, 10 + syscall + + lw $v1, 24($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- NAME OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 8($t1) + la $t3, 4($t2) + lw $t2, 0($t2) + + addi $t2, $t2, 9 + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 + + la $t4, type_String + sw $t4, 0($v0) + sw $a0, 4($v0) + + addi $t4, $v0, 0 + addi $t4, $t4, 8 + xor $t5, $t5, $t5 + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) + sb $t6, 0($t4) + addi $t4, $t4, 1 + addi $t3, $t3, 1 + addi $t5, $t5, 1 + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- COPY OF self + lw $t0, 4($sp) + lw $t1, 0($t0) + lw $t2, 4($t0) + + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 + sw $t1, 0($v0) + sw $a0, 4($v0) + + addi $t0, $t0, 8 + addi $t3, $t3, 8 + addi $t2, $2, -8 + xor $t4, $t4, $t4 + + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) + sb $t5, 0($t3) + addi $t0, $t0, 1 + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_start + while_copy_end: + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + lw $t0, 0($sp) + addi $t0, $t0, 8 + + # PRINTING STRING: x + li $v0, 4 + move $a0, $t0 + syscall + + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # PRINTING INT: x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 + while_read_start: + lb $t1, buffer_input($t0) + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 + j while_read_start + while_read_end: + + addi $t0, $t0, 9 + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 + la $t2, type_String + sw $t2, 0($v0) + sw $a0, 4($v0) + + addi $t3, $v0, 8 + xor $t4, $t4, $t4 + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) + sb $t5, 0($t3) + addi $t3, $t3, 1 + addi $t4, $t4, 1 + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + # internal_0 <- LENGTH (self) + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t0, 0($sp) + sw $t1, 8($t0) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) + lw $t3, 4($t1) + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 + addi $t4, $t4, 9 + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 + add $t5, $zero, $v0 + addi $t5, $t5, 8 + + la $t8, type_String + sw $t8, 0($v0) + + sw $a0, 4($v0) + + xor $t6, $t6, $t6 + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str1_start + while_copy_str1_end: + + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # internal_0 <- self[i:i + l] + lw $t0, 12($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 + lw $t2, 8($sp) + lw $t2, 8($t2) + lw $t3, 4($sp) + lw $t3, 8($t3) + add $t4, $t2, $t3 + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) + + sw $a0, 4($v0) + + addi $t0, $t0, 8 + add $t0, $t0, $t2 + move $t5, $v0 + add $t5, $t5, 8 + xor $t6, $t6, $t6 + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 + add $t5, $t5, 1 + addi $t6, $t6, 1 + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) + + sw $v0, 0($sp) + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + lw $v1, 0($sp) + + jr $ra + + function___init___at_List: + lw $v1, 0($sp) + + jr $ra + + function_isNil_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF List + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_cons_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -20 + + # ALLOCATING -> Cons + li $v0, 9 + lw $a0, type_Cons + syscall + la $t0, type_Cons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Cons + jal function___init___at_Cons + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [new_cell] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_1] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 28($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 17 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 17 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD init OF Cons + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [new_cell] + lw $t0, 32($sp) + sw $t0, 8($sp) + + # ARGUMENT [hd] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_4 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 20 + + jr $ra + + function_car_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF List + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING -> Int + li $v0, 9 + lw $a0, type_Int + syscall + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 8($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Int + jal function___init___at_Int + lw $ra, 4($sp) + sw $v1, 8($sp) + addi $sp, $sp, 8 + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_cdr_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # GET METHOD abort OF List + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING -> List + li $v0, 9 + lw $a0, type_List + syscall + la $t0, type_List + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 8($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_List + jal function___init___at_List + lw $ra, 4($sp) + sw $v1, 8($sp) + addi $sp, $sp, 8 + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_rev_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cdr OF List + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_sort_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cdr OF List + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_insert_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cdr OF List + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_rcons_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 11 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 11 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD cdr OF List + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_print_list_at_List: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD abort OF List + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function___init___at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -8 + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # SET ATTRIBUTE xcar OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8792586730388 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8792586730388 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8792586730388 + j object_set_attribute_8792586730388 + int_set_attribute_8792586730388: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586730388 + bool_set_attribute_8792586730388: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586730388 + object_set_attribute_8792586730388: + sw $t1, 8($t0) + end_set_attribute_8792586730388: + + # ALLOCATING NUll INTO -> internal_1 + sw $zero, 0($sp) + + # SET ATTRIBUTE xcdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8792586730412 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8792586730412 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8792586730412 + j object_set_attribute_8792586730412 + int_set_attribute_8792586730412: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8792586730412 + bool_set_attribute_8792586730412: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8792586730412 + object_set_attribute_8792586730412: + sw $t1, 12($t0) + end_set_attribute_8792586730412: + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 8 + + jr $ra + + function_isNil_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_init_at_Cons: + # SET ATTRIBUTE xcar OF self + lw $t0, 8($sp) + lw $t1, 4($sp) + beq $t1, $zero, object_set_attribute_8792586730500 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8792586730500 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8792586730500 + j object_set_attribute_8792586730500 + int_set_attribute_8792586730500: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586730500 + bool_set_attribute_8792586730500: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586730500 + object_set_attribute_8792586730500: + sw $t1, 8($t0) + end_set_attribute_8792586730500: + + # SET ATTRIBUTE xcdr OF self + lw $t0, 8($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8792586730512 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8792586730512 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8792586730512 + j object_set_attribute_8792586730512 + int_set_attribute_8792586730512: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8792586730512 + bool_set_attribute_8792586730512: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($t0) + j end_set_attribute_8792586730512 + object_set_attribute_8792586730512: + sw $t1, 12($t0) + end_set_attribute_8792586730512: + + lw $v1, 8($sp) + + jr $ra + + function_car_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE xcar OF self + lw $t0, 4($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586730524 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586730524 + j object_get_attribute_8792586730524 + int_get_attribute_8792586730524: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8792586730524 + bool_get_attribute_8792586730524: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8792586730524 + object_get_attribute_8792586730524: + sw $t1, 0($sp) + end_get_attribute_8792586730524: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_cdr_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # GET ATTRIBUTE xcdr OF self + lw $t0, 4($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586730554 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586730554 + j object_get_attribute_8792586730554 + int_get_attribute_8792586730554: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8792586730554 + bool_get_attribute_8792586730554: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8792586730554 + object_get_attribute_8792586730554: + sw $t1, 0($sp) + end_get_attribute_8792586730554: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_rev_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -32 + + # GET ATTRIBUTE xcdr OF self + lw $t0, 32($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586730614 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586730614 + j object_get_attribute_8792586730614 + int_get_attribute_8792586730614: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792586730614 + bool_get_attribute_8792586730614: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792586730614 + object_get_attribute_8792586730614: + sw $t1, 28($sp) + end_get_attribute_8792586730614: + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD rev OF List + lw $t0, 28($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 32($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE xcar OF self + lw $t0, 32($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586730656 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586730656 + j object_get_attribute_8792586730656 + int_get_attribute_8792586730656: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8792586730656 + bool_get_attribute_8792586730656: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8792586730656 + object_get_attribute_8792586730656: + sw $t1, 12($sp) + end_get_attribute_8792586730656: + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD rcons OF List + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 32 + + jr $ra + + function_sort_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -32 + + # GET ATTRIBUTE xcdr OF self + lw $t0, 32($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586730746 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586730746 + j object_get_attribute_8792586730746 + int_get_attribute_8792586730746: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792586730746 + bool_get_attribute_8792586730746: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792586730746 + object_get_attribute_8792586730746: + sw $t1, 28($sp) + end_get_attribute_8792586730746: + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD sort OF List + lw $t0, 28($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 32($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE xcar OF self + lw $t0, 32($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586731560 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586731560 + j object_get_attribute_8792586731560 + int_get_attribute_8792586731560: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8792586731560 + bool_get_attribute_8792586731560: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8792586731560 + object_get_attribute_8792586731560: + sw $t1, 12($sp) + end_get_attribute_8792586731560: + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD insert OF List + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 32 + + jr $ra + + function_insert_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -68 + + # ALLOCATING BOOL -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 60($sp) + + # GET ATTRIBUTE xcar OF self + lw $t0, 72($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586731680 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586731680 + j object_get_attribute_8792586731680 + int_get_attribute_8792586731680: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 56($sp) + j end_get_attribute_8792586731680 + bool_get_attribute_8792586731680: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 56($sp) + j end_get_attribute_8792586731680 + object_get_attribute_8792586731680: + sw $t1, 56($sp) + end_get_attribute_8792586731680: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [i] + lw $t0, 80($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 64($sp) + addi $sp, $sp, 12 + + # internal_1 <- internal_3 + lw $t0, 52($sp) + sw $t0, 60($sp) + + # IF internal_1 THEN GOTO then_8792586773884 + lw $t0, 60($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, then_8792586773884 + + # JUMP TO else_8792586773884 + j else_8792586773884 + + then_8792586773884: + + # ALLOCATING -> Cons + li $v0, 9 + lw $a0, type_Cons + syscall + la $t0, type_Cons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Cons + jal function___init___at_Cons + lw $ra, 4($sp) + sw $v1, 56($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 17 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 17 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD init OF Cons + lw $t0, 48($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_4] + lw $t0, 64($sp) + sw $t0, 8($sp) + + # ARGUMENT [i] + lw $t0, 84($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 88($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 60($sp) + addi $sp, $sp, 16 + + # internal_0 <- internal_5 + lw $t0, 44($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8792586773884 + j endif_8792586773884 + + else_8792586773884: + + # ALLOCATING -> Cons + li $v0, 9 + lw $a0, type_Cons + syscall + la $t0, type_Cons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Cons + jal function___init___at_Cons + lw $ra, 4($sp) + sw $v1, 40($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE xcar OF self + lw $t0, 72($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586732141 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586732141 + j object_get_attribute_8792586732141 + int_get_attribute_8792586732141: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792586732141 + bool_get_attribute_8792586732141: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792586732141 + object_get_attribute_8792586732141: + sw $t1, 28($sp) + end_get_attribute_8792586732141: + + # GET ATTRIBUTE xcdr OF self + lw $t0, 72($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586732168 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586732168 + j object_get_attribute_8792586732168 + int_get_attribute_8792586732168: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8792586732168 + bool_get_attribute_8792586732168: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8792586732168 + object_get_attribute_8792586732168: + sw $t1, 24($sp) + end_get_attribute_8792586732168: + + # ALLOCATING INT -> 14 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 14 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD insert OF List + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_10] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 80($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_13 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 17 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 17 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD init OF Cons + lw $t0, 32($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_8] + lw $t0, 48($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_9] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_16 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + # internal_0 <- internal_14 + lw $t0, 8($sp) + sw $t0, 64($sp) + + # JUMP TO endif_8792586773884 + j endif_8792586773884 + + endif_8792586773884: + + lw $v1, 64($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 68 + + jr $ra + + function_rcons_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -36 + + # ALLOCATING -> Cons + li $v0, 9 + lw $a0, type_Cons + syscall + la $t0, type_Cons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Cons + jal function___init___at_Cons + lw $ra, 4($sp) + sw $v1, 40($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE xcar OF self + lw $t0, 40($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586733096 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586733096 + j object_get_attribute_8792586733096 + int_get_attribute_8792586733096: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792586733096 + bool_get_attribute_8792586733096: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 28($sp) + j end_get_attribute_8792586733096 + object_get_attribute_8792586733096: + sw $t1, 28($sp) + end_get_attribute_8792586733096: + + # GET ATTRIBUTE xcdr OF self + lw $t0, 40($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586733123 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586733123 + j object_get_attribute_8792586733123 + int_get_attribute_8792586733123: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8792586733123 + bool_get_attribute_8792586733123: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8792586733123 + object_get_attribute_8792586733123: + sw $t1, 24($sp) + end_get_attribute_8792586733123: + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD rcons OF List + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [internal_2] + lw $t0, 36($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 48($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_5 + lw $t0, 24($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 32($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 17 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 17 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD init OF Cons + lw $t0, 32($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_0] + lw $t0, 48($sp) + sw $t0, 8($sp) + + # ARGUMENT [internal_1] + lw $t0, 44($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_3] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_8 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 36 + + jr $ra + + function_print_list_at_Cons: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -48 + + # GET ATTRIBUTE xcar OF self + lw $t0, 48($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586733258 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586733258 + j object_get_attribute_8792586733258 + int_get_attribute_8792586733258: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8792586733258 + bool_get_attribute_8792586733258: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 44($sp) + j end_get_attribute_8792586733258 + object_get_attribute_8792586733258: + sw $t1, 44($sp) + end_get_attribute_8792586733258: + + # ALLOCATING INT -> 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 5 + sw $t0, 8($v0) + sw $v0, 36($sp) + + # GET METHOD out_int OF Cons + lw $t0, 48($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 36($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 32($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 44($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 52($sp) + addi $sp, $sp, 12 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 10 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 10 + sw $t0, 4($v0) + + addi $t0, $zero, 10 + sb $t0, 8($v0) + + sb $zero, 9($v0) + + sw $v0, 28($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 20($sp) + + # GET METHOD out_string OF Cons + lw $t0, 48($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_7 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) + addi $sp, $sp, 12 + + # GET ATTRIBUTE xcdr OF self + lw $t0, 48($sp) + lw $t1, 12($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586733635 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586733635 + j object_get_attribute_8792586733635 + int_get_attribute_8792586733635: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8792586733635 + bool_get_attribute_8792586733635: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 12($sp) + j end_get_attribute_8792586733635 + object_get_attribute_8792586733635: + sw $t1, 12($sp) + end_get_attribute_8792586733635: + + # ALLOCATING INT -> 16 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 16 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print_list OF List + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_8] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_11 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 48 + + jr $ra + + function___init___at_Nil: + lw $v1, 0($sp) + + jr $ra + + function_isNil_at_Nil: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_rev_at_Nil: + lw $v1, 0($sp) + + jr $ra + + function_sort_at_Nil: + lw $v1, 0($sp) + + jr $ra + + function_insert_at_Nil: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -12 + + # ALLOCATING INT -> 15 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 15 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD rcons OF Nil + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 28($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 24($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_2 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) + addi $sp, $sp, 12 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 12 + + jr $ra + + function_rcons_at_Nil: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Cons + li $v0, 9 + lw $a0, type_Cons + syscall + la $t0, type_Cons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Cons + jal function___init___at_Cons + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 17 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 17 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD init OF Cons + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_0] + lw $t0, 28($sp) + sw $t0, 8($sp) + + # ARGUMENT [i] + lw $t0, 32($sp) + sw $t0, 4($sp) + + # ARGUMENT [self] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 24($sp) + addi $sp, $sp, 16 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 16 + + jr $ra + + function_print_list_at_Nil: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING BOOL -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 0($sp) + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -4 + + # ALLOCATING NUll INTO -> internal_0 + sw $zero, 0($sp) + + # SET ATTRIBUTE l OF self + lw $t0, 4($sp) + lw $t1, 0($sp) + beq $t1, $zero, object_set_attribute_8792586749558 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8792586749558 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8792586749558 + j object_set_attribute_8792586749558 + int_set_attribute_8792586749558: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586749558 + bool_set_attribute_8792586749558: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586749558 + object_set_attribute_8792586749558: + sw $t1, 8($t0) + end_set_attribute_8792586749558: + + lw $v1, 4($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 4 + + jr $ra + + function_iota_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -52 + + # ALLOCATING -> Nil + li $v0, 9 + lw $a0, type_Nil + syscall + la $t0, type_Nil + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 56($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Nil + jal function___init___at_Nil + lw $ra, 4($sp) + sw $v1, 56($sp) + addi $sp, $sp, 8 + + # SET ATTRIBUTE l OF self + lw $t0, 56($sp) + lw $t1, 48($sp) + beq $t1, $zero, object_set_attribute_8792586749043 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8792586749043 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8792586749043 + j object_set_attribute_8792586749043 + int_set_attribute_8792586749043: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586749043 + bool_set_attribute_8792586749043: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586749043 + object_set_attribute_8792586749043: + sw $t1, 8($t0) + end_set_attribute_8792586749043: + + # ALLOCATING INT -> 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 0 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [j] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_2] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # ALLOCATING NUll INTO -> internal_3 + sw $zero, 36($sp) + + while_start_8792586775116: + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [j] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [i] + lw $t0, 64($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_less_than + jal function_less_than + lw $ra, 8($sp) + sw $v1, 44($sp) + addi $sp, $sp, 12 + + # IF internal_4 THEN GOTO while_body_8792586775116 + lw $t0, 32($sp) + lw $t0, 8($t0) + addi $t1, $zero, 1 + beq $t0, $t1, while_body_8792586775116 + + # JUMP TO while_end_8792586775116 + j while_end_8792586775116 + + while_body_8792586775116: + + # ALLOCATING -> Cons + li $v0, 9 + lw $a0, type_Cons + syscall + la $t0, type_Cons + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 28($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_5] + lw $t0, 36($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Cons + jal function___init___at_Cons + lw $ra, 4($sp) + sw $v1, 36($sp) + addi $sp, $sp, 8 + + # GET ATTRIBUTE l OF self + lw $t0, 56($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586734361 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586734361 + j object_get_attribute_8792586734361 + int_get_attribute_8792586734361: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8792586734361 + bool_get_attribute_8792586734361: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 24($sp) + j end_get_attribute_8792586734361 + object_get_attribute_8792586734361: + sw $t1, 24($sp) + end_get_attribute_8792586734361: + + # ALLOCATING INT -> 17 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 17 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD init OF Cons + lw $t0, 28($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -16 + sw $ra, 12($sp) + + # ARGUMENT [internal_5] + lw $t0, 44($sp) + sw $t0, 8($sp) + + # ARGUMENT [j] + lw $t0, 60($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_6] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_9 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 12($sp) + sw $v1, 36($sp) + addi $sp, $sp, 16 + + # SET ATTRIBUTE l OF self + lw $t0, 56($sp) + lw $t1, 20($sp) + beq $t1, $zero, object_set_attribute_8792586733758 + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_set_attribute_8792586733758 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_set_attribute_8792586733758 + j object_set_attribute_8792586733758 + int_set_attribute_8792586733758: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586733758 + bool_set_attribute_8792586733758: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 8($t0) + j end_set_attribute_8792586733758 + object_set_attribute_8792586733758: + sw $t1, 8($t0) + end_set_attribute_8792586733758: + + # ALLOCATING INT -> 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 1 + sw $t0, 8($v0) + sw $v0, 8($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [j] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 16($sp) + addi $sp, $sp, 12 + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [j] + lw $t0, 56($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_11] + lw $t0, 16($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # JUMP TO while_start_8792586775116 + j while_start_8792586775116 + + while_end_8792586775116: + + # GET ATTRIBUTE l OF self + lw $t0, 56($sp) + lw $t1, 8($t0) + lw $t2, 0($t1) + la $t3, type_Int + la $t4, type_Bool + addi $t5, $zero, 1 + seq $t6, $t2, $t3 + beq $t6, $t5, int_get_attribute_8792586749040 + seq $t6, $t2, $t4 + beq $t6, $t5, bool_get_attribute_8792586749040 + j object_get_attribute_8792586749040 + int_get_attribute_8792586749040: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t3, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8792586749040 + bool_get_attribute_8792586749040: + li $v0, 9 + addi $a0, $zero, 12 + syscall + sw $t4, 0($v0) + sw $a0, 4($v0) + lw $t5, 8($t1) + sw $t5, 8($v0) + sw $v0, 0($sp) + j end_get_attribute_8792586749040 + object_get_attribute_8792586749040: + sw $t1, 0($sp) + end_get_attribute_8792586749040: + + lw $v1, 0($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 52 + + jr $ra + + function_main_at_Main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -76 + + # ALLOCATING STRING + li $v0, 9 + addi $a0, $zero, 35 + syscall + + la $t0, type_String + sw $t0, 0($v0) + + addi $t0, $zero, 35 + sw $t0, 4($v0) + + addi $t0, $zero, 72 + sb $t0, 8($v0) + + addi $t0, $zero, 111 + sb $t0, 9($v0) + + addi $t0, $zero, 119 + sb $t0, 10($v0) + + addi $t0, $zero, 32 + sb $t0, 11($v0) + + addi $t0, $zero, 109 + sb $t0, 12($v0) + + addi $t0, $zero, 97 + sb $t0, 13($v0) + + addi $t0, $zero, 110 + sb $t0, 14($v0) + + addi $t0, $zero, 121 + sb $t0, 15($v0) + + addi $t0, $zero, 32 + sb $t0, 16($v0) + + addi $t0, $zero, 110 + sb $t0, 17($v0) + + addi $t0, $zero, 117 + sb $t0, 18($v0) + + addi $t0, $zero, 109 + sb $t0, 19($v0) + + addi $t0, $zero, 98 + sb $t0, 20($v0) + + addi $t0, $zero, 101 + sb $t0, 21($v0) + + addi $t0, $zero, 114 + sb $t0, 22($v0) + + addi $t0, $zero, 115 + sb $t0, 23($v0) + + addi $t0, $zero, 32 + sb $t0, 24($v0) + + addi $t0, $zero, 116 + sb $t0, 25($v0) + + addi $t0, $zero, 111 + sb $t0, 26($v0) + + addi $t0, $zero, 32 + sb $t0, 27($v0) + + addi $t0, $zero, 115 + sb $t0, 28($v0) + + addi $t0, $zero, 111 + sb $t0, 29($v0) + + addi $t0, $zero, 114 + sb $t0, 30($v0) + + addi $t0, $zero, 116 + sb $t0, 31($v0) + + addi $t0, $zero, 63 + sb $t0, 32($v0) + + addi $t0, $zero, 32 + sb $t0, 33($v0) + + sb $zero, 34($v0) + + sw $v0, 72($sp) + + # ALLOCATING INT -> 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 4 + sw $t0, 8($v0) + sw $v0, 64($sp) + + # GET METHOD out_string OF Main + lw $t0, 76($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 72($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 80($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 7 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 7 + sw $t0, 8($v0) + sw $v0, 52($sp) + + # GET METHOD in_int OF Main + lw $t0, 76($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 52($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 48($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [self] + lw $t0, 84($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_6 + lw $t0, 56($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 64($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 8 + sw $t0, 8($v0) + sw $v0, 40($sp) + + # GET METHOD iota OF Main + lw $t0, 76($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 40($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 36($sp) + + # FUNCTION ARG + addi $sp, $sp, -12 + sw $ra, 8($sp) + + # ARGUMENT [self] + lw $t0, 88($sp) + sw $t0, 4($sp) + + # ARGUMENT [internal_4] + lw $t0, 68($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_9 + lw $t0, 48($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 56($sp) + addi $sp, $sp, 12 + + # ALLOCATING INT -> 12 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 12 + sw $t0, 8($v0) + sw $v0, 28($sp) + + # GET METHOD rev OF List + lw $t0, 44($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 28($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 24($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_7] + lw $t0, 52($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_12 + lw $t0, 32($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 40($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 13 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 13 + sw $t0, 8($v0) + sw $v0, 16($sp) + + # GET METHOD sort OF List + lw $t0, 32($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 16($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_10] + lw $t0, 40($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_15 + lw $t0, 20($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 28($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 16 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 16 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD print_list OF List + lw $t0, 20($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_13] + lw $t0, 28($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_18 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + lw $v1, 8($sp) + + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, 76 + + jr $ra + + main: + # SPACE FOR LOCAL VARIABLES + addi $sp, $sp, -16 + + # ALLOCATING -> Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main + sw $t0, 0($v0) + sw $a0, 4($v0) + sw $v0, 12($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING STATIC FUNCTION function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) + addi $sp, $sp, 8 + + # ALLOCATING INT -> 9 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int + sw $t0, 0($v0) + sw $a0, 4($v0) + addi $t0, $zero, 9 + sw $t0, 8($v0) + sw $v0, 4($sp) + + # GET METHOD main OF Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # FUNCTION ARG + addi $sp, $sp, -8 + sw $ra, 4($sp) + + # ARGUMENT [internal_0] + lw $t0, 20($sp) + sw $t0, 0($sp) + + # CALLING DYNAMIC FUNCTION -> internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) + addi $sp, $sp, 8 + + # EXIT! + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/codegen_test.py b/tests/codegen_test.py index 48df768ff..63214afdd 100644 --- a/tests/codegen_test.py +++ b/tests/codegen_test.py @@ -1,8 +1,10 @@ import pytest import os -from utils import compare_outputs +import pathlib +from .utils import compare_outputs -tests_dir = __file__.rpartition('/')[0] + '/codegen/' +tests_dir = str(pathlib.Path(__file__).parent / 'codegen') +# tests_dir = __file__.rpartition('/')[0] + '/codegen/' tests = [(file) for file in os.listdir(tests_dir) if file.endswith('.cl')] # @pytest.mark.lexer @@ -13,5 +15,9 @@ @pytest.mark.run(order=4) @pytest.mark.parametrize("cool_file", tests) def test_codegen(compiler_path, cool_file): - compare_outputs(compiler_path, tests_dir + cool_file, tests_dir + cool_file[:-3] + '_input.txt',\ - tests_dir + cool_file[:-3] + '_output.txt') \ No newline at end of file + # compare_outputs(compiler_path, tests_dir + cool_file, tests_dir + cool_file[:-3] + '_input.txt',\ + # tests_dir + cool_file[:-3] + '_output.txt') + + compare_outputs(compiler_path, str(os.path.join(tests_dir, cool_file)), + str(os.path.join(tests_dir, cool_file[:-3] + '_input.txt')), + str(os.path.join(tests_dir, cool_file[:-3] + '_output.txt'))) \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py index 1f44eeb72..ef8d07f14 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,6 +1,18 @@ import pytest import os +import platform + +# @pytest.fixture +# def compiler_path(): +# return os.path.abspath('./coolc.sh') + @pytest.fixture def compiler_path(): - return os.path.abspath('./coolc.sh') \ No newline at end of file + extension = 'sh' if platform.system() != 'Windows' else 'py' + + if os.getcwd().endswith('src'): + return os.path.abspath(f'./coolc.{extension}') + + # For local test using the testing system of visual studio code + return os.path.abspath(os.path.join('src', f'coolc.{extension}')) \ No newline at end of file diff --git a/tests/lexer_test.py b/tests/lexer_test.py index 2a27223d3..9aaa52ee6 100644 --- a/tests/lexer_test.py +++ b/tests/lexer_test.py @@ -1,8 +1,10 @@ import pytest import os -from utils import compare_errors +import pathlib +from .utils import compare_errors -tests_dir = __file__.rpartition('/')[0] + '/lexer/' +tests_dir = str(pathlib.Path(__file__).parent / 'lexer') +# tests_dir = __file__.rpartition('/')[0] + '/lexer/' tests = [(file) for file in os.listdir(tests_dir) if file.endswith('.cl')] @pytest.mark.lexer @@ -10,4 +12,6 @@ @pytest.mark.run(order=1) @pytest.mark.parametrize("cool_file", tests) def test_lexer_errors(compiler_path, cool_file): - compare_errors(compiler_path, tests_dir + cool_file, tests_dir + cool_file[:-3] + '_error.txt') \ No newline at end of file + # compare_errors(compiler_path, tests_dir + cool_file, tests_dir + cool_file[:-3] + '_error.txt') + compare_errors(compiler_path, str(os.path.join(tests_dir, cool_file)), \ + str(os.path.join(tests_dir, cool_file[:-3] + '_error.txt'))) \ No newline at end of file diff --git a/tests/parser/assignment1.cl b/tests/parser/assignment1.cl index 75b4c5bbd..e179e4792 100644 --- a/tests/parser/assignment1.cl +++ b/tests/parser/assignment1.cl @@ -34,4 +34,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/assignment2.cl b/tests/parser/assignment2.cl index 4efb96487..06f8f96d8 100644 --- a/tests/parser/assignment2.cl +++ b/tests/parser/assignment2.cl @@ -34,4 +34,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/assignment3.cl b/tests/parser/assignment3.cl index ff633f331..e7d0d4cd8 100644 --- a/tests/parser/assignment3.cl +++ b/tests/parser/assignment3.cl @@ -34,4 +34,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/assignment3_error.txt b/tests/parser/assignment3_error.txt index a69ac3a81..be83d138b 100644 --- a/tests/parser/assignment3_error.txt +++ b/tests/parser/assignment3_error.txt @@ -1 +1 @@ -(29, 23) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(29, 23) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/attribute1.cl b/tests/parser/attribute1.cl index 063a02c02..a021193c0 100644 --- a/tests/parser/attribute1.cl +++ b/tests/parser/attribute1.cl @@ -31,4 +31,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/attribute2.cl b/tests/parser/attribute2.cl index c05211483..44e95a4dc 100644 --- a/tests/parser/attribute2.cl +++ b/tests/parser/attribute2.cl @@ -31,4 +31,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/attribute2_error.txt b/tests/parser/attribute2_error.txt index b02a52ee1..5716d8e04 100644 --- a/tests/parser/attribute2_error.txt +++ b/tests/parser/attribute2_error.txt @@ -1 +1 @@ -(19, 12) - SyntacticError: ERROR at or near "string" \ No newline at end of file +(19, 12) - SyntacticError: ERROR at or near "string" diff --git a/tests/parser/attribute3.cl b/tests/parser/attribute3.cl index d858ae47c..0cbbae605 100644 --- a/tests/parser/attribute3.cl +++ b/tests/parser/attribute3.cl @@ -31,4 +31,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/attribute3_error.txt b/tests/parser/attribute3_error.txt index 71f5bc0b7..fc45c7d9c 100644 --- a/tests/parser/attribute3_error.txt +++ b/tests/parser/attribute3_error.txt @@ -1 +1 @@ -(19, 19) - SyntacticError: ERROR at or near "<=" \ No newline at end of file +(19, 19) - SyntacticError: ERROR at or near "<=" diff --git a/tests/parser/block1.cl b/tests/parser/block1.cl index 3613d9268..18999a60c 100644 --- a/tests/parser/block1.cl +++ b/tests/parser/block1.cl @@ -84,4 +84,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/block1_error.txt b/tests/parser/block1_error.txt index c78fb0b96..f939d44f0 100644 --- a/tests/parser/block1_error.txt +++ b/tests/parser/block1_error.txt @@ -1 +1 @@ -(56, 17) - SyntacticError: ERROR at or near "}" \ No newline at end of file +(56, 17) - SyntacticError: ERROR at or near "}" diff --git a/tests/parser/block2.cl b/tests/parser/block2.cl index f485dd0b1..de16aad43 100644 --- a/tests/parser/block2.cl +++ b/tests/parser/block2.cl @@ -84,4 +84,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/block2_error.txt b/tests/parser/block2_error.txt index f85f4303c..52d391e68 100644 --- a/tests/parser/block2_error.txt +++ b/tests/parser/block2_error.txt @@ -1 +1 @@ -(49, 23) - SyntacticError: ERROR at or near ";" \ No newline at end of file +(49, 23) - SyntacticError: ERROR at or near ";" diff --git a/tests/parser/block3.cl b/tests/parser/block3.cl index ae1598c3b..9a590812d 100644 --- a/tests/parser/block3.cl +++ b/tests/parser/block3.cl @@ -84,4 +84,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/block3_error.txt b/tests/parser/block3_error.txt index cda9949a2..d0d806087 100644 --- a/tests/parser/block3_error.txt +++ b/tests/parser/block3_error.txt @@ -1 +1 @@ -(57, 13) - SyntacticError: ERROR at or near "pool" \ No newline at end of file +(57, 13) - SyntacticError: ERROR at or near "pool" diff --git a/tests/parser/block4.cl b/tests/parser/block4.cl index 8fd883d02..5d9474c72 100644 --- a/tests/parser/block4.cl +++ b/tests/parser/block4.cl @@ -85,4 +85,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/block4_error.txt b/tests/parser/block4_error.txt index ddbeb32ef..10a4ec56f 100644 --- a/tests/parser/block4_error.txt +++ b/tests/parser/block4_error.txt @@ -1 +1 @@ -(56, 26) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(56, 26) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/case1.cl b/tests/parser/case1.cl index c2f508809..8cff248e8 100644 --- a/tests/parser/case1.cl +++ b/tests/parser/case1.cl @@ -88,4 +88,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/case1_error.txt b/tests/parser/case1_error.txt index 61fca14f7..c1548c9a2 100644 --- a/tests/parser/case1_error.txt +++ b/tests/parser/case1_error.txt @@ -1 +1 @@ -(63, 9) - SyntacticError: ERROR at or near ESAC \ No newline at end of file +(63, 9) - SyntacticError: ERROR at or near ESAC diff --git a/tests/parser/case2.cl b/tests/parser/case2.cl index f9162e49f..a50d88636 100644 --- a/tests/parser/case2.cl +++ b/tests/parser/case2.cl @@ -90,4 +90,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/case2_error.txt b/tests/parser/case2_error.txt index 40b030dd9..424754b65 100644 --- a/tests/parser/case2_error.txt +++ b/tests/parser/case2_error.txt @@ -1 +1 @@ -(63, 13) - SyntacticError: ERROR at or near "y" \ No newline at end of file +(63, 13) - SyntacticError: ERROR at or near "y" diff --git a/tests/parser/case3.cl b/tests/parser/case3.cl index a7eedc18b..7fd4b1646 100644 --- a/tests/parser/case3.cl +++ b/tests/parser/case3.cl @@ -90,4 +90,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/case3_error.txt b/tests/parser/case3_error.txt index f25c5c563..4b2bf6b58 100644 --- a/tests/parser/case3_error.txt +++ b/tests/parser/case3_error.txt @@ -1 +1 @@ -(63, 16) - SyntacticError: ERROR at or near "string" \ No newline at end of file +(63, 16) - SyntacticError: ERROR at or near "string" diff --git a/tests/parser/case4.cl b/tests/parser/case4.cl index 25ca3858f..0ed5436a2 100644 --- a/tests/parser/case4.cl +++ b/tests/parser/case4.cl @@ -90,4 +90,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/case4_error.txt b/tests/parser/case4_error.txt index c5a16ddec..bc0109276 100644 --- a/tests/parser/case4_error.txt +++ b/tests/parser/case4_error.txt @@ -1 +1 @@ -(64, 13) - SyntacticError: ERROR at or near "Mazinger_Z" \ No newline at end of file +(64, 13) - SyntacticError: ERROR at or near "Mazinger_Z" diff --git a/tests/parser/case5.cl b/tests/parser/case5.cl index b36c663e1..732b8a59c 100644 --- a/tests/parser/case5.cl +++ b/tests/parser/case5.cl @@ -90,4 +90,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/case5_error.txt b/tests/parser/case5_error.txt index fc6ec0eda..e700df372 100644 --- a/tests/parser/case5_error.txt +++ b/tests/parser/case5_error.txt @@ -1 +1 @@ -(62, 20) - SyntacticError: ERROR at or near ASSIGN \ No newline at end of file +(62, 20) - SyntacticError: ERROR at or near ASSIGN diff --git a/tests/parser/case6.cl b/tests/parser/case6.cl index 66e7df2ab..cef622001 100644 --- a/tests/parser/case6.cl +++ b/tests/parser/case6.cl @@ -90,4 +90,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/class2_error.txt b/tests/parser/class2_error.txt index 59d065913..fffd542ad 100644 --- a/tests/parser/class2_error.txt +++ b/tests/parser/class2_error.txt @@ -1 +1 @@ -(16, 22) - SyntacticError: ERROR at or near "iO" \ No newline at end of file +(16, 22) - SyntacticError: ERROR at or near "iO" diff --git a/tests/parser/class3_error.txt b/tests/parser/class3_error.txt index bc2f946b2..911bf3557 100644 --- a/tests/parser/class3_error.txt +++ b/tests/parser/class3_error.txt @@ -1 +1 @@ -(25, 5) - SyntacticError: ERROR at or near "testing3" \ No newline at end of file +(25, 5) - SyntacticError: ERROR at or near "testing3" diff --git a/tests/parser/class4_error.txt b/tests/parser/class4_error.txt index 1007f033d..426f37080 100644 --- a/tests/parser/class4_error.txt +++ b/tests/parser/class4_error.txt @@ -1 +1 @@ -(25, 5) - SyntacticError: ERROR at or near "2" \ No newline at end of file +(25, 5) - SyntacticError: ERROR at or near "2" diff --git a/tests/parser/class5_error.txt b/tests/parser/class5_error.txt index 400e4d614..200232e65 100644 --- a/tests/parser/class5_error.txt +++ b/tests/parser/class5_error.txt @@ -1 +1 @@ -(11, 5) - SyntacticError: ERROR at or near "test1" \ No newline at end of file +(11, 5) - SyntacticError: ERROR at or near "test1" diff --git a/tests/parser/class6_error.txt b/tests/parser/class6_error.txt index 73574c94c..370c153be 100644 --- a/tests/parser/class6_error.txt +++ b/tests/parser/class6_error.txt @@ -1 +1 @@ -(28, 1) - SyntacticError: ERROR at or near ";" \ No newline at end of file +(28, 1) - SyntacticError: ERROR at or near ";" diff --git a/tests/parser/conditional1.cl b/tests/parser/conditional1.cl index 4d546fc44..16dbeae5c 100644 --- a/tests/parser/conditional1.cl +++ b/tests/parser/conditional1.cl @@ -66,4 +66,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/conditional1_error.txt b/tests/parser/conditional1_error.txt index ee533fd84..ce446194c 100644 --- a/tests/parser/conditional1_error.txt +++ b/tests/parser/conditional1_error.txt @@ -1 +1 @@ -(34, 13) - SyntacticError: ERROR at or near NEW \ No newline at end of file +(34, 13) - SyntacticError: ERROR at or near NEW diff --git a/tests/parser/conditional2.cl b/tests/parser/conditional2.cl index 4f10c2957..66869f35f 100644 --- a/tests/parser/conditional2.cl +++ b/tests/parser/conditional2.cl @@ -66,4 +66,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/conditional3.cl b/tests/parser/conditional3.cl index 67e991ade..2c333127b 100644 --- a/tests/parser/conditional3.cl +++ b/tests/parser/conditional3.cl @@ -66,4 +66,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/conditional3_error.txt b/tests/parser/conditional3_error.txt index ad95552b5..36d815052 100644 --- a/tests/parser/conditional3_error.txt +++ b/tests/parser/conditional3_error.txt @@ -1 +1 @@ -(38, 13) - SyntacticError: ERROR at or near "eLseif" \ No newline at end of file +(38, 13) - SyntacticError: ERROR at or near "eLseif" diff --git a/tests/parser/conditional4.cl b/tests/parser/conditional4.cl index 0792fdc85..7298e3a26 100644 --- a/tests/parser/conditional4.cl +++ b/tests/parser/conditional4.cl @@ -70,4 +70,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/conditional4_error.txt b/tests/parser/conditional4_error.txt index f5511445b..0ceb3cab7 100644 --- a/tests/parser/conditional4_error.txt +++ b/tests/parser/conditional4_error.txt @@ -1 +1 @@ -(45, 17) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(45, 17) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/conditional5.cl b/tests/parser/conditional5.cl index 0c1e1aad0..492dc7d78 100644 --- a/tests/parser/conditional5.cl +++ b/tests/parser/conditional5.cl @@ -70,4 +70,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/conditional5_error.txt b/tests/parser/conditional5_error.txt index b3214010d..ad6037bd6 100644 --- a/tests/parser/conditional5_error.txt +++ b/tests/parser/conditional5_error.txt @@ -1 +1 @@ -(45, 27) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(45, 27) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/conditional6.cl b/tests/parser/conditional6.cl index 02310404a..fef8293f7 100644 --- a/tests/parser/conditional6.cl +++ b/tests/parser/conditional6.cl @@ -70,4 +70,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/conditional6_error.txt b/tests/parser/conditional6_error.txt index 968b78ad9..57a867ae7 100644 --- a/tests/parser/conditional6_error.txt +++ b/tests/parser/conditional6_error.txt @@ -1 +1 @@ -(45, 35) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(45, 35) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/dispatch1.cl b/tests/parser/dispatch1.cl index 2ca394716..3c4972870 100644 --- a/tests/parser/dispatch1.cl +++ b/tests/parser/dispatch1.cl @@ -42,4 +42,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/dispatch2.cl b/tests/parser/dispatch2.cl index 0b57467a1..1b163d549 100644 --- a/tests/parser/dispatch2.cl +++ b/tests/parser/dispatch2.cl @@ -42,4 +42,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/dispatch2_error.txt b/tests/parser/dispatch2_error.txt index 134e266b2..152bdd1f2 100644 --- a/tests/parser/dispatch2_error.txt +++ b/tests/parser/dispatch2_error.txt @@ -1 +1 @@ -(37, 84) - SyntacticError: ERROR at or near ")" \ No newline at end of file +(37, 84) - SyntacticError: ERROR at or near ")" diff --git a/tests/parser/dispatch4.cl b/tests/parser/dispatch4.cl index d1efc469d..e4851dbe7 100644 --- a/tests/parser/dispatch4.cl +++ b/tests/parser/dispatch4.cl @@ -50,4 +50,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/dispatch4_error.txt b/tests/parser/dispatch4_error.txt index d03bb4c53..7a114cf60 100644 --- a/tests/parser/dispatch4_error.txt +++ b/tests/parser/dispatch4_error.txt @@ -1 +1 @@ -(45, 81) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(45, 81) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/dispatch5.cl b/tests/parser/dispatch5.cl index 63a5afa79..75ff16d2b 100644 --- a/tests/parser/dispatch5.cl +++ b/tests/parser/dispatch5.cl @@ -50,4 +50,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/dispatch6.cl b/tests/parser/dispatch6.cl index 0a953e2e6..c3fea10a4 100644 --- a/tests/parser/dispatch6.cl +++ b/tests/parser/dispatch6.cl @@ -54,4 +54,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/dispatch6_error.txt b/tests/parser/dispatch6_error.txt index 543f3a38c..0d6f9d6b4 100644 --- a/tests/parser/dispatch6_error.txt +++ b/tests/parser/dispatch6_error.txt @@ -1 +1 @@ -(49, 15) - SyntacticError: ERROR at or near "object" \ No newline at end of file +(49, 15) - SyntacticError: ERROR at or near "object" diff --git a/tests/parser/dispatch7.cl b/tests/parser/dispatch7.cl index 3ecac4d0f..b9c2395f6 100644 --- a/tests/parser/dispatch7.cl +++ b/tests/parser/dispatch7.cl @@ -54,4 +54,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/dispatch7_error.txt b/tests/parser/dispatch7_error.txt index 27235d118..d99ff26eb 100644 --- a/tests/parser/dispatch7_error.txt +++ b/tests/parser/dispatch7_error.txt @@ -1 +1 @@ -(49, 22) - SyntacticError: ERROR at or near "Copy" \ No newline at end of file +(49, 22) - SyntacticError: ERROR at or near "Copy" diff --git a/tests/parser/dispatch8.cl b/tests/parser/dispatch8.cl index eef0455ef..36a752401 100644 --- a/tests/parser/dispatch8.cl +++ b/tests/parser/dispatch8.cl @@ -54,4 +54,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/dispatch9.cl b/tests/parser/dispatch9.cl index 5fdef22d6..828e70cb2 100644 --- a/tests/parser/dispatch9.cl +++ b/tests/parser/dispatch9.cl @@ -58,4 +58,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/let1.cl b/tests/parser/let1.cl index 576ae383c..23e60a106 100644 --- a/tests/parser/let1.cl +++ b/tests/parser/let1.cl @@ -82,4 +82,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/let2.cl b/tests/parser/let2.cl index 4cfaef0f8..983f16ed0 100644 --- a/tests/parser/let2.cl +++ b/tests/parser/let2.cl @@ -82,4 +82,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/let2_error.txt b/tests/parser/let2_error.txt index 6fb3f8e9c..abb561870 100644 --- a/tests/parser/let2_error.txt +++ b/tests/parser/let2_error.txt @@ -1 +1 @@ -(45, 30) - SyntacticError: ERROR at or near "int" \ No newline at end of file +(45, 30) - SyntacticError: ERROR at or near "int" diff --git a/tests/parser/let3.cl b/tests/parser/let3.cl index 91e567fd8..498dbd349 100644 --- a/tests/parser/let3.cl +++ b/tests/parser/let3.cl @@ -82,4 +82,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/let3_error.txt b/tests/parser/let3_error.txt index 71fa08812..9b0187276 100644 --- a/tests/parser/let3_error.txt +++ b/tests/parser/let3_error.txt @@ -1 +1 @@ -(46, 9) - SyntacticError: ERROR at or near IN \ No newline at end of file +(46, 9) - SyntacticError: ERROR at or near IN diff --git a/tests/parser/let4.cl b/tests/parser/let4.cl index a716c332d..0a39d0acf 100644 --- a/tests/parser/let4.cl +++ b/tests/parser/let4.cl @@ -82,4 +82,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/let4_error.txt b/tests/parser/let4_error.txt index e12c7478c..84456d766 100644 --- a/tests/parser/let4_error.txt +++ b/tests/parser/let4_error.txt @@ -1 +1 @@ -(45, 32) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(45, 32) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/let5.cl b/tests/parser/let5.cl index d974cc138..5adbda4d4 100644 --- a/tests/parser/let5.cl +++ b/tests/parser/let5.cl @@ -82,4 +82,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/let6.cl b/tests/parser/let6.cl index b6e51d7e1..dd8e73c90 100644 --- a/tests/parser/let6.cl +++ b/tests/parser/let6.cl @@ -71,4 +71,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/let6_error.txt b/tests/parser/let6_error.txt index 7a77928b9..e3fec20a4 100644 --- a/tests/parser/let6_error.txt +++ b/tests/parser/let6_error.txt @@ -1 +1 @@ -(46, 18) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(46, 18) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/let7.cl b/tests/parser/let7.cl index 6fd63e6a7..694bce875 100644 --- a/tests/parser/let7.cl +++ b/tests/parser/let7.cl @@ -82,4 +82,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/let7_error.txt b/tests/parser/let7_error.txt index 654b1ce60..17ab7cd32 100644 --- a/tests/parser/let7_error.txt +++ b/tests/parser/let7_error.txt @@ -1 +1 @@ -(46, 28) - SyntacticError: ERROR at or near "{" \ No newline at end of file +(46, 28) - SyntacticError: ERROR at or near "{" diff --git a/tests/parser/loop1.cl b/tests/parser/loop1.cl index 7d0d7688f..a356f2a62 100644 --- a/tests/parser/loop1.cl +++ b/tests/parser/loop1.cl @@ -75,4 +75,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/loop2.cl b/tests/parser/loop2.cl index a9613c487..a5c4742a4 100644 --- a/tests/parser/loop2.cl +++ b/tests/parser/loop2.cl @@ -75,4 +75,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/loop3.cl b/tests/parser/loop3.cl index 860adb4d1..bfd4d90d5 100644 --- a/tests/parser/loop3.cl +++ b/tests/parser/loop3.cl @@ -75,4 +75,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/loop3_error.txt b/tests/parser/loop3_error.txt index 3da8bcde0..750ff4822 100644 --- a/tests/parser/loop3_error.txt +++ b/tests/parser/loop3_error.txt @@ -1 +1 @@ -(47, 21) - SyntacticError: ERROR at or near DARROW \ No newline at end of file +(47, 21) - SyntacticError: ERROR at or near DARROW diff --git a/tests/parser/loop4.cl b/tests/parser/loop4.cl index 0a1194e82..fceda5b70 100644 --- a/tests/parser/loop4.cl +++ b/tests/parser/loop4.cl @@ -75,4 +75,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/loop4_error.txt b/tests/parser/loop4_error.txt index c39f35fe1..eb5ca28b4 100644 --- a/tests/parser/loop4_error.txt +++ b/tests/parser/loop4_error.txt @@ -1 +1 @@ -(49, 27) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(49, 27) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/method1.cl b/tests/parser/method1.cl index fcfbbcd30..a5a63dae6 100644 --- a/tests/parser/method1.cl +++ b/tests/parser/method1.cl @@ -31,4 +31,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/method1_error.txt b/tests/parser/method1_error.txt index 0eff41999..06d6e5cb5 100644 --- a/tests/parser/method1_error.txt +++ b/tests/parser/method1_error.txt @@ -1 +1 @@ -(21, 5) - SyntacticError: ERROR at or near "Testing2" \ No newline at end of file +(21, 5) - SyntacticError: ERROR at or near "Testing2" diff --git a/tests/parser/method2.cl b/tests/parser/method2.cl index d5bdfd85c..1b8e260b2 100644 --- a/tests/parser/method2.cl +++ b/tests/parser/method2.cl @@ -31,4 +31,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/method2_error.txt b/tests/parser/method2_error.txt index 1843fb7b4..256fb6f80 100644 --- a/tests/parser/method2_error.txt +++ b/tests/parser/method2_error.txt @@ -1 +1 @@ -(21, 24) - SyntacticError: ERROR at or near "B" \ No newline at end of file +(21, 24) - SyntacticError: ERROR at or near "B" diff --git a/tests/parser/method3.cl b/tests/parser/method3.cl index 1e5c9eb53..65e169c84 100644 --- a/tests/parser/method3.cl +++ b/tests/parser/method3.cl @@ -31,4 +31,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/method3_error.txt b/tests/parser/method3_error.txt index dbecf552e..2fb93869e 100644 --- a/tests/parser/method3_error.txt +++ b/tests/parser/method3_error.txt @@ -1 +1 @@ -(21, 27) - SyntacticError: ERROR at or near "int" \ No newline at end of file +(21, 27) - SyntacticError: ERROR at or near "int" diff --git a/tests/parser/method4.cl b/tests/parser/method4.cl index 019ada276..57c72f6bb 100644 --- a/tests/parser/method4.cl +++ b/tests/parser/method4.cl @@ -31,4 +31,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/method4_error.txt b/tests/parser/method4_error.txt index 6421cee2b..fdfda1479 100644 --- a/tests/parser/method4_error.txt +++ b/tests/parser/method4_error.txt @@ -1 +1 @@ -(25, 21) - SyntacticError: ERROR at or near ")" \ No newline at end of file +(25, 21) - SyntacticError: ERROR at or near ")" diff --git a/tests/parser/method5.cl b/tests/parser/method5.cl index 13127f664..c959bc2a5 100644 --- a/tests/parser/method5.cl +++ b/tests/parser/method5.cl @@ -31,4 +31,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/method5_error.txt b/tests/parser/method5_error.txt index 9bda07041..ac11549ae 100644 --- a/tests/parser/method5_error.txt +++ b/tests/parser/method5_error.txt @@ -1 +1 @@ -(25, 17) - SyntacticError: ERROR at or near "string" \ No newline at end of file +(25, 17) - SyntacticError: ERROR at or near "string" diff --git a/tests/parser/method6.cl b/tests/parser/method6.cl index d48cd1293..eb4817796 100644 --- a/tests/parser/method6.cl +++ b/tests/parser/method6.cl @@ -30,4 +30,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/method6_error.txt b/tests/parser/method6_error.txt index e7d5de400..87b98a71f 100644 --- a/tests/parser/method6_error.txt +++ b/tests/parser/method6_error.txt @@ -1 +1 @@ -(22, 5) - SyntacticError: ERROR at or near "}" \ No newline at end of file +(22, 5) - SyntacticError: ERROR at or near "}" diff --git a/tests/parser/mixed2_error.txt b/tests/parser/mixed2_error.txt index b5613c52a..4e1088ee1 100644 --- a/tests/parser/mixed2_error.txt +++ b/tests/parser/mixed2_error.txt @@ -1 +1 @@ -(9, 7) - SyntacticError: ERROR at or near "alpha" \ No newline at end of file +(9, 7) - SyntacticError: ERROR at or near "alpha" diff --git a/tests/parser/mixed3_error.txt b/tests/parser/mixed3_error.txt index 159bdca63..05d59a4b7 100644 --- a/tests/parser/mixed3_error.txt +++ b/tests/parser/mixed3_error.txt @@ -1 +1 @@ -(21, 18) - SyntacticError: ERROR at or near ")" \ No newline at end of file +(21, 18) - SyntacticError: ERROR at or near ")" diff --git a/tests/parser/mixed5_error.txt b/tests/parser/mixed5_error.txt index 443037eca..60390218f 100644 --- a/tests/parser/mixed5_error.txt +++ b/tests/parser/mixed5_error.txt @@ -1 +1 @@ -(2, 9) - SyntacticError: ERROR at or near ASSIGN \ No newline at end of file +(2, 9) - SyntacticError: ERROR at or near ASSIGN diff --git a/tests/parser/operation1.cl b/tests/parser/operation1.cl index d38eb72d0..5bd90a737 100644 --- a/tests/parser/operation1.cl +++ b/tests/parser/operation1.cl @@ -98,4 +98,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/operation1_error.txt b/tests/parser/operation1_error.txt index b30202399..0bf86401b 100644 --- a/tests/parser/operation1_error.txt +++ b/tests/parser/operation1_error.txt @@ -1 +1 @@ -(74, 5) - SyntacticError: ERROR at or near "}" \ No newline at end of file +(74, 5) - SyntacticError: ERROR at or near "}" diff --git a/tests/parser/operation2.cl b/tests/parser/operation2.cl index 2dc628359..d18f7a040 100644 --- a/tests/parser/operation2.cl +++ b/tests/parser/operation2.cl @@ -98,4 +98,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/operation2_error.txt b/tests/parser/operation2_error.txt index 37b458f3a..c5e445cc7 100644 --- a/tests/parser/operation2_error.txt +++ b/tests/parser/operation2_error.txt @@ -1 +1 @@ -(73, 41) - SyntacticError: ERROR at or near "int" \ No newline at end of file +(73, 41) - SyntacticError: ERROR at or near "int" diff --git a/tests/parser/operation3.cl b/tests/parser/operation3.cl index 61d6cbfa8..e18398014 100644 --- a/tests/parser/operation3.cl +++ b/tests/parser/operation3.cl @@ -98,4 +98,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/operation3_error.txt b/tests/parser/operation3_error.txt index 6b266f3f3..40fd40d15 100644 --- a/tests/parser/operation3_error.txt +++ b/tests/parser/operation3_error.txt @@ -1 +1 @@ -(73, 81) - SyntacticError: ERROR at or near "Mazinger_Z" \ No newline at end of file +(73, 81) - SyntacticError: ERROR at or near "Mazinger_Z" diff --git a/tests/parser/operation4.cl b/tests/parser/operation4.cl index bae7de5b5..5ce08248c 100644 --- a/tests/parser/operation4.cl +++ b/tests/parser/operation4.cl @@ -98,4 +98,4 @@ class Alpha inherits IO { print() : Object { out_string("reached!!\n") }; -}; \ No newline at end of file +}; diff --git a/tests/parser/operation4_error.txt b/tests/parser/operation4_error.txt index e0ebb0985..5bf87721f 100644 --- a/tests/parser/operation4_error.txt +++ b/tests/parser/operation4_error.txt @@ -1 +1 @@ -(73, 35) - SyntacticError: ERROR at or near "+" \ No newline at end of file +(73, 35) - SyntacticError: ERROR at or near "+" diff --git a/tests/parser/program1_error.txt b/tests/parser/program1_error.txt index de00ac46b..fceafee78 100644 --- a/tests/parser/program1_error.txt +++ b/tests/parser/program1_error.txt @@ -1 +1 @@ -(0, 0) - SyntacticError: ERROR at or near EOF \ No newline at end of file +(0, 0) - SyntacticError: ERROR at or near EOF diff --git a/tests/parser_test.py b/tests/parser_test.py index 129c0f20a..a1991a463 100644 --- a/tests/parser_test.py +++ b/tests/parser_test.py @@ -1,8 +1,11 @@ import pytest +import pathlib import os -from utils import compare_errors +from .utils import compare_errors -tests_dir = __file__.rpartition('/')[0] + '/parser/' +tests_dir = str(pathlib.Path(__file__).parent / 'parser') +print(tests_dir) +# tests_dir = __file__.rpartition('/')[0] + '/parser/' tests = [(file) for file in os.listdir(tests_dir) if file.endswith('.cl')] @pytest.mark.parser @@ -10,4 +13,5 @@ @pytest.mark.run(order=2) @pytest.mark.parametrize("cool_file", tests) def test_parser_errors(compiler_path, cool_file): - compare_errors(compiler_path, tests_dir + cool_file, tests_dir + cool_file[:-3] + '_error.txt') \ No newline at end of file + # compare_errors(compiler_path, tests_dir + cool_file, tests_dir + cool_file[:-3] + '_error.txt') + compare_errors(compiler_path, str(os.path.join(tests_dir, cool_file)), str(os.path.join(tests_dir, cool_file[:-3] + '_error.txt'))) \ No newline at end of file diff --git a/tests/semantic/arithmetic1.mips b/tests/semantic/arithmetic1.mips new file mode 100644 index 000000000..38d056896 --- /dev/null +++ b/tests/semantic/arithmetic1.mips @@ -0,0 +1,2439 @@ +.data + type_Object: .word 24 + type_Object_inherits_from: .word 0 + type_Object_name_address: .word type_Object_name_size + type_Object___init__: .word function___init___at_Object + type_Object_abort: .word function_abort_at_Object + type_Object_type_name: .word function_type_name_at_Object + type_Object_copy: .word function_copy_at_Object + + type_IO: .word 40 + type_IO_inherits_from: .word type_Object + type_IO_name_address: .word type_IO_name_size + type_IO___init__: .word function___init___at_IO + type_IO_abort: .word function_abort_at_Object + type_IO_type_name: .word function_type_name_at_Object + type_IO_copy: .word function_copy_at_Object + type_IO_out_string: .word function_out_string_at_IO + type_IO_out_int: .word function_out_int_at_IO + type_IO_in_string: .word function_in_string_at_IO + type_IO_in_int: .word function_in_int_at_IO + + type_String: .word 36 + type_String_inherits_from: .word type_Object + type_String_name_address: .word type_String_name_size + type_String___init__: .word function___init___at_String + type_String_abort: .word function_abort_at_Object + type_String_type_name: .word function_type_name_at_Object + type_String_copy: .word function_copy_at_Object + type_String_length: .word function_length_at_String + type_String_concat: .word function_concat_at_String + type_String_substr: .word function_substr_at_String + + type_Int: .word 24 + type_Int_inherits_from: .word type_Object + type_Int_name_address: .word type_Int_name_size + type_Int___init__: .word function___init___at_Int + type_Int_abort: .word function_abort_at_Object + type_Int_type_name: .word function_type_name_at_Object + type_Int_copy: .word function_copy_at_Object + + type_Bool: .word 24 + type_Bool_inherits_from: .word type_Object + type_Bool_name_address: .word type_Bool_name_size + type_Bool___init__: .word function___init___at_Bool + type_Bool_abort: .word function_abort_at_Object + type_Bool_type_name: .word function_type_name_at_Object + type_Bool_copy: .word function_copy_at_Object + + type_A: .word 24 + type_A_inherits_from: .word type_Object + type_A_name_address: .word type_A_name_size + type_A___init__: .word function___init___at_A + type_A_abort: .word function_abort_at_Object + type_A_type_name: .word function_type_name_at_Object + type_A_copy: .word function_copy_at_Object + + type_B: .word 24 + type_B_inherits_from: .word type_A + type_B_name_address: .word type_B_name_size + type_B___init__: .word function___init___at_B + type_B_abort: .word function_abort_at_Object + type_B_type_name: .word function_type_name_at_Object + type_B_copy: .word function_copy_at_Object + + type_C: .word 24 + type_C_inherits_from: .word type_B + type_C_name_address: .word type_C_name_size + type_C___init__: .word function___init___at_C + type_C_abort: .word function_abort_at_Object + type_C_type_name: .word function_type_name_at_Object + type_C_copy: .word function_copy_at_Object + + type_Main: .word 48 + type_Main_inherits_from: .word type_IO + type_Main_name_address: .word type_Main_name_size + type_Main___init__: .word function___init___at_Main + type_Main_abort: .word function_abort_at_Object + type_Main_type_name: .word function_type_name_at_Object + type_Main_copy: .word function_copy_at_Object + type_Main_out_string: .word function_out_string_at_IO + type_Main_out_int: .word function_out_int_at_IO + type_Main_in_string: .word function_in_string_at_IO + type_Main_in_int: .word function_in_int_at_IO + type_Main_main: .word function_main_at_Main + + type_Object_name_size: .word 6 + type_Object_name: .asciiz "Object" + + type_IO_name_size: .word 2 + type_IO_name: .asciiz "IO" + + type_String_name_size: .word 6 + type_String_name: .asciiz "String" + + type_Int_name_size: .word 3 + type_Int_name: .asciiz "Int" + + type_Bool_name_size: .word 4 + type_Bool_name: .asciiz "Bool" + + type_A_name_size: .word 1 + type_A_name: .asciiz "A" + + type_B_name_size: .word 1 + type_B_name: .asciiz "B" + + type_C_name_size: .word 1 + type_C_name: .asciiz "C" + + type_Main_name_size: .word 4 + type_Main_name: .asciiz "Main" + + buffer_input: .space 1024 + debug_log: .asciiz "debug_log\n" + +.text + function_add: + # Function parameters + # $ra = 12($sp) + # a = 8($sp) + # b = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # Allocating Int 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_0 = address of allocated object Int + + # Addition operation + lw $t0, 8($sp) # Save in $t0 the left operand address + lw $t0, 8($t0) # Save in $t0 the left operand value + lw $t1, 4($sp) # Save in $t1 the right operand address + lw $t1, 8($t1) # Save in $t1 the rigth operand value + add $t2, $t0, $t1 # $t2 = $t0 + $t1 + + lw $t0, 0($sp) # $t0 = internal_0 + sw $t2, 8($t0) # Setting value in the third word of the Int object + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_sub: + # Function parameters + # $ra = 12($sp) + # a = 8($sp) + # b = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # Allocating Int 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_0 = address of allocated object Int + + # Subtraction operation + lw $t0, 8($sp) # Save in $t0 the left operand address + lw $t0, 8($t0) # Save in $t0 the left operand value + lw $t1, 4($sp) # Save in $t1 the right operand address + lw $t1, 8($t1) # Save in $t1 the rigth operand value + sub $t2, $t0, $t1 # $t2 = $t0 - $t1 + + lw $t0, 0($sp) # $t0 = internal_0 + sw $t2, 8($t0) # Setting value in the third word of the Int object + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_mult: + # Function parameters + # $ra = 12($sp) + # a = 8($sp) + # b = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # Allocating Int 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_0 = address of allocated object Int + + # Multiplication operation + lw $t0, 8($sp) # Save in $t0 the left operand address + lw $t0, 8($t0) # Save in $t0 the left operand value + lw $t1, 4($sp) # Save in $t1 the right operand address + lw $t1, 8($t1) # Save in $t1 the rigth operand value + mult $t0, $t1 # $t2 = $t0 * $t1 + mflo $t2 + + lw $t0, 0($sp) # $t0 = internal_0 + sw $t2, 8($t0) # Setting value in the third word of the Int object + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_div: + # Function parameters + # $ra = 12($sp) + # a = 8($sp) + # b = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # Allocating Int 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_0 = address of allocated object Int + + # Division operation + lw $t0, 8($sp) # Save in $t0 the left operand address + lw $t0, 8($t0) # Save in $t0 the left operand value + lw $t1, 4($sp) # Save in $t1 the right operand address + lw $t1, 8($t1) # Save in $t1 the rigth operand value + div $t0, $t1 # $t2 = $t0 / $t1 + mflo $t2 + + lw $t0, 0($sp) # $t0 = internal_0 + sw $t2, 8($t0) # Setting value in the third word of the Int object + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_xor: + # Function parameters + # $ra = 12($sp) + # a = 8($sp) + # b = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # Allocating Int 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_0 = address of allocated object Int + + # Xor operation + lw $t0, 8($sp) # Save in $t0 the left operand address + lw $t0, 8($t0) # Save in $t0 the left operand value + lw $t1, 4($sp) # Save in $t1 the right operand address + lw $t1, 8($t1) # Save in $t1 the rigth operand value + xor $t2, $t0, $t1 # $t0 = $t0 ^ $t1 + + lw $t0, 0($sp) # $t0 = internal_0 + sw $t2, 8($t0) # Setting value in the third word of the Int object + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_less_than: + # Function parameters + # $ra = 12($sp) + # a = 8($sp) + # b = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_0 = address of allocated object Int + + # Less than operation + lw $t0, 8($sp) # Save in $t0 the left operand address + lw $t0, 8($t0) # Save in $t0 the left operand value + lw $t1, 4($sp) # Save in $t1 the right operand address + lw $t1, 8($t1) # Save in $t1 the rigth operand value + slt $t2, $t0, $t1 # $t2 = $t0 < $t1 + + lw $t0, 0($sp) # $t0 = internal_0 + sw $t2, 8($t0) # Setting value in the third word of the Bool object + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_less_than_or_equal: + # Function parameters + # $ra = 12($sp) + # a = 8($sp) + # b = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_0 = address of allocated object Int + + # Less than operation + lw $t0, 8($sp) # Save in $t0 the left operand address + lw $t0, 8($t0) # Save in $t0 the left operand value + lw $t1, 4($sp) # Save in $t1 the right operand address + lw $t1, 8($t1) # Save in $t1 the rigth operand value + sle $t2, $t0, $t1 # $t2 = $t0 <= $t1 + + lw $t0, 0($sp) # $t0 = internal_0 + sw $t2, 8($t0) # Setting value in the third word of the Bool object + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_equal: + # Function parameters + # $ra = 48($sp) + # a = 44($sp) + # b = 40($sp) + + # Reserving space for local variables + addi $sp, $sp, -40 + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 36($sp) # internal_0 = address of allocated object Int + + # Allocating NUll to internal_1 + sw $zero, 32($sp) # internal_1 = 0 + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 28($sp) # internal_2 = address of allocated object Int + + # internal_2 = EqualAddress(a, internal_1) + lw $t0, 44($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # internal_2 = EqualAddress(b, internal_1) + lw $t0, 40($sp) + lw $t1, 32($sp) + seq $t2, $t0, $t1 + lw $t0, 28($sp) + sw $t2, 8($t0) + + # If internal_2 then goto a_is_type_object + lw $t0, 28($sp) # Loading the address of the condition + lw $t0, 8($t0) # Loading the value of the condition + addi $t1, $zero, 1 # Setting the value to 1 for comparison + beq $t0, $t1, a_is_type_object + + # internal_3 = typeof a that is the first word of the object + lw $t0, 44($sp) + lw $t0, 0($t0) + sw $t0, 24($sp) + + # internal_4 = direction of Int + la $t0, type_Int + sw $t0, 20($sp) + + # internal_5 = direction of Bool + la $t0, type_Bool + sw $t0, 16($sp) + + # internal_6 = direction of String + la $t0, type_String + sw $t0, 12($sp) + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 8($sp) # internal_7 = address of allocated object Int + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 4($sp) # internal_8 = address of allocated object Int + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_9 = address of allocated object Int + + # internal_7 = EqualAddress(internal_3, internal_4) + lw $t0, 24($sp) + lw $t1, 20($sp) + seq $t2, $t0, $t1 + lw $t0, 8($sp) + sw $t2, 8($t0) + + # internal_8 = EqualAddress(internal_3, internal_5) + lw $t0, 24($sp) + lw $t1, 16($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_9 = EqualAddress(internal_3, internal_6) + lw $t0, 24($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # If internal_7 then goto a_is_type_int_or_bool + lw $t0, 8($sp) # Loading the address of the condition + lw $t0, 8($t0) # Loading the value of the condition + addi $t1, $zero, 1 # Setting the value to 1 for comparison + beq $t0, $t1, a_is_type_int_or_bool + + # If internal_8 then goto a_is_type_int_or_bool + lw $t0, 4($sp) # Loading the address of the condition + lw $t0, 8($t0) # Loading the value of the condition + addi $t1, $zero, 1 # Setting the value to 1 for comparison + beq $t0, $t1, a_is_type_int_or_bool + + # If internal_9 then goto a_is_type_string + lw $t0, 0($sp) # Loading the address of the condition + lw $t0, 8($t0) # Loading the value of the condition + addi $t1, $zero, 1 # Setting the value to 1 for comparison + beq $t0, $t1, a_is_type_string + + # Jumping to a_is_type_object + j a_is_type_object + + a_is_type_int_or_bool: + + # internal_0 = EqualInt(a, b) + lw $t0, 44($sp) + lw $t0, 8($t0) + lw $t1, 40($sp) + lw $t1, 8($t1) + seq $t2, $t0, $t1 + lw $t0, 36($sp) + sw $t2, 8($t0) + + # Jumping to end_of_equal + j end_of_equal + + a_is_type_string: + + # internal_0 = EqualStr(a, b) + lw $t0, 44($sp) + lw $t1, 40($sp) + addi $t0, $t0, 8 + addi $t1, $t1, 8 + + # By default we assume the strings are equals + addi $t4, $zero, 1 + lw $t5, 36($sp) + sw $t4, 8($t5) + + while_compare_strings_start: + lb $t2, 0($t0) + lb $t3, 0($t1) + beq $t2, $t3, while_compare_strings_update + + # The strings are no equals + lw $t5, 36($sp) + sw $zero, 8($t5) + j while_compare_strings_end + + while_compare_strings_update: + addi $t0, $t0, 1 + addi $t1, $t1, 1 + beq $t2, $zero, while_compare_strings_end + beq $t3, $zero, while_compare_strings_end + j while_compare_strings_start + while_compare_strings_end: + + # Jumping to end_of_equal + j end_of_equal + + a_is_type_object: + + # Equal operation + lw $t0, 44($sp) # Save in $t0 the left operand address + lw $t1, 40($sp) # Save in $t1 the right operand address + seq $t2, $t0, $t1 # $t2 = $t0 == $t1 + + lw $t0, 36($sp) # $t0 = internal_0 + sw $t2, 8($t0) # Setting value in the third word of the Bool object + + # Jumping to end_of_equal + j end_of_equal + + end_of_equal: + + # Loading return value in $v1 + lw $v1, 36($sp) + + # Freeing space for local variables + addi $sp, $sp, 40 + + jr $ra + + function_assign: + # Function parameters + # $ra = 36($sp) + # dest = 32($sp) + # source = 28($sp) + + # Reserving space for local variables + addi $sp, $sp, -28 + + # Allocating NUll to internal_0 + sw $zero, 24($sp) # internal_0 = 0 + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 20($sp) # internal_1 = address of allocated object Int + + # internal_1 = EqualAddress(source, internal_0) + lw $t0, 28($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # internal_1 = EqualAddress(dest, internal_0) + lw $t0, 32($sp) + lw $t1, 24($sp) + seq $t2, $t0, $t1 + lw $t0, 20($sp) + sw $t2, 8($t0) + + # If internal_1 then goto source_is_type_object + lw $t0, 20($sp) # Loading the address of the condition + lw $t0, 8($t0) # Loading the value of the condition + addi $t1, $zero, 1 # Setting the value to 1 for comparison + beq $t0, $t1, source_is_type_object + + # internal_2 = typeof source that is the first word of the object + lw $t0, 28($sp) + lw $t0, 0($t0) + sw $t0, 16($sp) + + # internal_3 = direction of Int + la $t0, type_Int + sw $t0, 12($sp) + + # internal_4 = direction of Bool + la $t0, type_Bool + sw $t0, 8($sp) + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 4($sp) # internal_5 = address of allocated object Int + + # Allocating Bool 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Bool # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_6 = address of allocated object Int + + # internal_5 = EqualAddress(internal_2, internal_3) + lw $t0, 16($sp) + lw $t1, 12($sp) + seq $t2, $t0, $t1 + lw $t0, 4($sp) + sw $t2, 8($t0) + + # internal_6 = EqualAddress(internal_2, internal_4) + lw $t0, 16($sp) + lw $t1, 8($sp) + seq $t2, $t0, $t1 + lw $t0, 0($sp) + sw $t2, 8($t0) + + # If internal_5 then goto source_is_type_int_or_bool + lw $t0, 4($sp) # Loading the address of the condition + lw $t0, 8($t0) # Loading the value of the condition + addi $t1, $zero, 1 # Setting the value to 1 for comparison + beq $t0, $t1, source_is_type_int_or_bool + + # If internal_6 then goto source_is_type_int_or_bool + lw $t0, 0($sp) # Loading the address of the condition + lw $t0, 8($t0) # Loading the value of the condition + addi $t1, $zero, 1 # Setting the value to 1 for comparison + beq $t0, $t1, source_is_type_int_or_bool + + # Jumping to source_is_type_object + j source_is_type_object + + source_is_type_int_or_bool: + + # dest = source where source is an integer + li $v0, 9 + addi $a0, $zero, 12 + syscall + lw $t0, 28($sp) # Pointer to source + lw $t1, 0($t0) # $t1 = type of source + lw $t2, 8($t0) # $t2 = value of source + sw $t1, 0($v0) # Save type of dest + sw $a0, 4($v0) # Save size of dest + sw $t2, 8($v0) # Save value of dest + sw $v0, 32($sp) + + # Jumping to source_end_of_equal + j source_end_of_equal + + source_is_type_object: + + # dest = source + lw $t0, 28($sp) + sw $t0, 32($sp) + + # Jumping to source_end_of_equal + j source_end_of_equal + + source_end_of_equal: + + # Loading return value in $v1 + lw $v1, 32($sp) + + # Freeing space for local variables + addi $sp, $sp, 28 + + jr $ra + + function___init___at_Object: + # Function parameters + # $ra = 4($sp) + # self = 0($sp) + + # Loading return value in $v1 + lw $v1, 0($sp) + + jr $ra + + function_abort_at_Object: + # Function parameters + # $ra = 28($sp) + # self = 24($sp) + + # Reserving space for local variables + addi $sp, $sp, -24 + + # Allocating String + li $v0, 9 + addi $a0, $zero, 33 # $a0 = length of string + 9 for 4 bytes for the type, 4 bytes for the length of the string and 1 byte for null-terminator + syscall + + la $t0, type_String + sw $t0, 0($v0) # Setting type in the first word of the object + + addi $t0, $zero, 33 + sw $t0, 4($v0) # Setting length of the string in the second word of the object + + addi $t0, $zero, 65 + sb $t0, 8($v0) # internal_0[0] = 'A' + + addi $t0, $zero, 98 + sb $t0, 9($v0) # internal_0[1] = 'b' + + addi $t0, $zero, 111 + sb $t0, 10($v0) # internal_0[2] = 'o' + + addi $t0, $zero, 114 + sb $t0, 11($v0) # internal_0[3] = 'r' + + addi $t0, $zero, 116 + sb $t0, 12($v0) # internal_0[4] = 't' + + addi $t0, $zero, 32 + sb $t0, 13($v0) # internal_0[5] = ' ' + + addi $t0, $zero, 99 + sb $t0, 14($v0) # internal_0[6] = 'c' + + addi $t0, $zero, 97 + sb $t0, 15($v0) # internal_0[7] = 'a' + + addi $t0, $zero, 108 + sb $t0, 16($v0) # internal_0[8] = 'l' + + addi $t0, $zero, 108 + sb $t0, 17($v0) # internal_0[9] = 'l' + + addi $t0, $zero, 101 + sb $t0, 18($v0) # internal_0[10] = 'e' + + addi $t0, $zero, 100 + sb $t0, 19($v0) # internal_0[11] = 'd' + + addi $t0, $zero, 32 + sb $t0, 20($v0) # internal_0[12] = ' ' + + addi $t0, $zero, 102 + sb $t0, 21($v0) # internal_0[13] = 'f' + + addi $t0, $zero, 114 + sb $t0, 22($v0) # internal_0[14] = 'r' + + addi $t0, $zero, 111 + sb $t0, 23($v0) # internal_0[15] = 'o' + + addi $t0, $zero, 109 + sb $t0, 24($v0) # internal_0[16] = 'm' + + addi $t0, $zero, 32 + sb $t0, 25($v0) # internal_0[17] = ' ' + + addi $t0, $zero, 99 + sb $t0, 26($v0) # internal_0[18] = 'c' + + addi $t0, $zero, 108 + sb $t0, 27($v0) # internal_0[19] = 'l' + + addi $t0, $zero, 97 + sb $t0, 28($v0) # internal_0[20] = 'a' + + addi $t0, $zero, 115 + sb $t0, 29($v0) # internal_0[21] = 's' + + addi $t0, $zero, 115 + sb $t0, 30($v0) # internal_0[22] = 's' + + addi $t0, $zero, 32 + sb $t0, 31($v0) # internal_0[23] = ' ' + + sb $zero, 32($v0) # Null-terminator at the end of the string + + sw $v0, 20($sp) # internal_0 = "Abort called from class " + + # Allocating String + li $v0, 9 + addi $a0, $zero, 10 # $a0 = length of string + 9 for 4 bytes for the type, 4 bytes for the length of the string and 1 byte for null-terminator + syscall + + la $t0, type_String + sw $t0, 0($v0) # Setting type in the first word of the object + + addi $t0, $zero, 10 + sw $t0, 4($v0) # Setting length of the string in the second word of the object + + addi $t0, $zero, 10 + sb $t0, 8($v0) # internal_3[0] = '\n' + + sb $zero, 9($v0) # Null-terminator at the end of the string + + sw $v0, 8($sp) # internal_3 = "\n" + + # Allocating Int 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 2 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 4($sp) # internal_4 = address of allocated object Int + + # Get method type_name of String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument self + lw $t0, 32($sp) + sw $t0, 0($sp) # Storing self + + # Calling function internal_5 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 24($sp) # internal_1 = result of internal_5 + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 5 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 4($sp) # internal_4 = address of allocated object Int + + # Get method concat of String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_0 + lw $t0, 32($sp) + sw $t0, 4($sp) # Storing internal_0 + + # Argument internal_1 + lw $t0, 28($sp) + sw $t0, 0($sp) # Storing internal_1 + + # Calling function internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) # internal_2 = result of internal_5 + addi $sp, $sp, 12 # Freeing space for arguments + + # Allocating Int 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 5 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 4($sp) # internal_4 = address of allocated object Int + + # Get method concat of String + lw $t0, 24($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_2 + lw $t0, 24($sp) + sw $t0, 4($sp) # Storing internal_2 + + # Argument internal_3 + lw $t0, 20($sp) + sw $t0, 0($sp) # Storing internal_3 + + # Calling function internal_5 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) # internal_2 = result of internal_5 + addi $sp, $sp, 12 # Freeing space for arguments + + lw $t0, 12($sp) # $t0 = internal_2 + addi $t0, $t0, 8 # Pointer to the first character of the string + + # Printing the String internal_2 + li $v0, 4 + move $a0, $t0 + syscall + + # Exit program + li $v0, 10 + syscall + + # Loading return value in $v1 + lw $v1, 24($sp) + + # Freeing space for local variables + addi $sp, $sp, 24 + + jr $ra + + function_type_name_at_Object: + # Function parameters + # $ra = 8($sp) + # self = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # internal_0 = name of self + lw $t0, 4($sp) # $t0 = self + lw $t1, 0($t0) # $t1 = type of self + lw $t2, 8($t1) # $t2 = direction of the type name + la $t3, 4($t2) # $t3 = address of the name + lw $t2, 0($t2) # $t2 = length of the name + + addi $t2, $t2, 9 # Setting space for the type, the size and the null byte + li $v0, 9 + move $a0, $t2 + syscall + addi $t2, $t2, -9 # Restoring space for the type, the size and the null byte + + la $t4, type_String + sw $t4, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting length in the second word of the object + + addi $t4, $v0, 0 # $t4 = direction of the new string + addi $t4, $t4, 8 # Pointer to the first character of the string + xor $t5, $t5, $t5 # Initializing counter + while_copy_name_start: + beq $t5, $t2, while_copy_name_end + lb $t6, 0($t3) # Loading the character + sb $t6, 0($t4) + addi $t4, $t4, 1 # Incrementing the pointer to the new string + addi $t3, $t3, 1 # Incrementing the pointer to the string in self + addi $t5, $t5, 1 # Incrementing counter + j while_copy_name_start + while_copy_name_end: + + sb $zero, 0($t4) # Setting the null byte + + sw $v0, 0($sp) # Storing the new string in internal_0 + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_copy_at_Object: + # Function parameters + # $ra = 8($sp) + # self = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # internal_0 = copy of self + lw $t0, 4($sp) # $t0 = self + lw $t1, 0($t0) # $t1 = type of self + lw $t2, 4($t0) # $t2 = length of self in bytes + + # Allocating space for the new object + li $v0, 9 + move $a0, $t2 + syscall + move $t3, $v0 # $t3 = direction of the new object + sw $t1, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting length in the second word of the object + + # Initializing the variable of the loop + addi $t0, $t0, 8 # Pointer to the first character of the object + addi $t3, $t3, 8 # Pointer to the first character of the object + addi $t2, $2, -8 # Decrementing in 8 the length of the object + xor $t4, $t4, $t4 # Initializing counter + + # Loop copying the object + while_copy_start: + beq $t4, $t2, while_copy_end + lb $t5, 0($t0) # Loading the byte + sb $t5, 0($t3) # Storing the byte + addi $t0, $t0, 1 # Incrementing the pointer to the object + addi $t3, $t3, 1 # Incrementing the pointer to the new object + addi $t4, $t4, 1 # Incrementing counter + j while_copy_start + while_copy_end: + sw $v0, 0($sp) # Storing the new object in internal_0 + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function___init___at_IO: + # Function parameters + # $ra = 4($sp) + # self = 0($sp) + + # Loading return value in $v1 + lw $v1, 0($sp) + + jr $ra + + function_out_string_at_IO: + # Function parameters + # $ra = 8($sp) + # self = 4($sp) + # x = 0($sp) + + lw $t0, 0($sp) # $t0 = x + addi $t0, $t0, 8 # Pointer to the first character of the string + + # Printing the String x + li $v0, 4 + move $a0, $t0 + syscall + + # Loading return value in $v1 + lw $v1, 4($sp) + + jr $ra + + function_out_int_at_IO: + # Function parameters + # $ra = 8($sp) + # self = 4($sp) + # x = 0($sp) + + # Printing the Int x + li $v0, 1 + lw $a0, 0($sp) + lw $a0, 8($a0) + syscall + + # Loading return value in $v1 + lw $v1, 4($sp) + + jr $ra + + function_in_string_at_IO: + # Function parameters + # $ra = 8($sp) + # self = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + li $v0, 8 + la $a0, buffer_input + li $a1, 1024 + syscall + + xor $t0, $t0, $t0 # Initializing counter + while_read_start: + lb $t1, buffer_input($t0) # Loading the byte + addi $t2, $zero, 10 + beq $t1, $t2, while_read_end + addi $t2, $zero, 13 + beq $t1, $t2, while_read_end + addi $t0, $t0, 1 # Incrementing counter + j while_read_start + while_read_end: + + addi $t0, $t0, 9 # Adding space for the type, the size and the null byte + li $v0, 9 + move $a0, $t0 + syscall + addi $t0, $t0, -9 # Adding space for the type, the size and the null byte + la $t2, type_String + sw $t2, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting length in the second word of the object + + addi $t3, $v0, 8 # Pointer to the first character of the string + xor $t4, $t4, $t4 # Initializing counter + + while_copy_from_buffer_start: + beq $t4, $t0, while_copy_from_buffer_end + lb $t5, buffer_input($t4) # Loading the byte + sb $t5, 0($t3) # Storing the byte + addi $t3, $t3, 1 # Imcremeenting pointer + addi $t4, $t4, 1 # Incrementing counter + j while_copy_from_buffer_start + while_copy_from_buffer_end: + + sb $zero, 0($t3) # Storing the null byte + + sw $v0, 0($sp) # Storing the new object in internal_0 + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_in_int_at_IO: + # Function parameters + # $ra = 8($sp) + # self = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # Allocating Int 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_0 = address of allocated object Int + + li $v0, 5 + syscall + lw $t0, 0($sp) + sw $v0, 8($t0) + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function___init___at_String: + # Function parameters + # $ra = 4($sp) + # self = 0($sp) + + # Loading return value in $v1 + lw $v1, 0($sp) + + jr $ra + + function_length_at_String: + # Function parameters + # $ra = 8($sp) + # self = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # Allocating Int 0 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 0 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 0($sp) # internal_0 = address of allocated object Int + + # internal_0 = length of self + lw $t0, 4($sp) + lw $t1, 4($t0) + addi $t1, $t1, -9 # Subtracting 9 for the type, length, and null-terminator + lw $t0, 0($sp) + sw $t1, 8($t0) + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_concat_at_String: + # Function parameters + # $ra = 12($sp) + # self = 8($sp) + # s = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # internal_0 = self + s + lw $t0, 8($sp) + lw $t1, 4($sp) + lw $t2, 4($t0) # $t2 = length of str1 + lw $t3, 4($t1) # $t3 = length of str2 + addi $t2, $t2, -9 + addi $t3, $t3, -9 + add $t4, $t2, $t3 # $t4 = length of str1 + str2 + addi $t4, $t4, 9 # Adding the space for the type (4bytes), the length(4bytes) and the null-terminator(1byte) + + li $v0, 9 + move $a0, $t4 + syscall + addi $t4, $t4, -9 # Restoring $t4 = length of str1 + str2 + add $t5, $zero, $v0 # $t5 = address of the new string object + addi $t5, $t5, 8 # $t5 = address of the first byte of the new string + + la $t8, type_String + sw $t8, 0($v0) # Setting type in the first word of th object + + sw $a0, 4($v0) # Setting length of the string in the second word of the object + + # Copying str1 to the new string + xor $t6, $t6, $t6 # $t6 = 0 Initializing counter + while_copy_str1_start: + beq $t6, $t2, while_copy_str1_end + lb $t7, 8($t0) + sb $t7, 0($t5) + add $t0, $t0, 1 # $t0 = $t0 + 1 Incrementing the address of str1 + add $t5, $t5, 1 # $t5 = $t5 + 1 Incrementing the address of the new string + addi $t6, $t6, 1 # $t6 = $t6 + 1 Incrementing counter + j while_copy_str1_start + while_copy_str1_end: + + # Copying str2 to the new string + while_copy_str2_start: + beq $t6, $t4, while_copy_str2_end + lb $t7, 8($t1) + sb $t7, 0($t5) + add $t1, $t1, 1 # $t0 = $t0 + 1 Incrementing the address of str1 + add $t5, $t5, 1 # $t5 = $t5 + 1 Incrementing the address of the new string + addi $t6, $t6, 1 # $t6 = $t6 + 1 Incrementing counter + j while_copy_str2_start + while_copy_str2_end: + + sb $zero, 0($t5) # Setting the null-terminator + + sw $v0, 0($sp) # internal_0 = self + s + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function_substr_at_String: + # Function parameters + # $ra = 16($sp) + # self = 12($sp) + # i = 8($sp) + # l = 4($sp) + + # Reserving space for local variables + addi $sp, $sp, -4 + + # internal_0 = self[i:i + l] + lw $t0, 12($sp) # $t0 = address of the string + lw $t1, 4($t0) # $t1 = length of the string + addi $t1, $t1, -9 # $t1 = length of the string + 9 + lw $t2, 8($sp) # $t2 = start of the substring + lw $t2, 8($t2) + lw $t3, 4($sp) # $t3 = length of the substring + lw $t3, 8($t3) + add $t4, $t2, $t3 # $t4 = start of the substring + length of the substring + + bgt $t4, $t1, substring_out_of_bounds + + addi $t3, $t3, 9 + li $v0, 9 + move $a0, $t3 + syscall + addi $t3, $t3, -9 + + la $t5, type_String + sw $t5, 0($v0) # Setting type in the first word of the object + + sw $a0, 4($v0) # Setting length in the second word of the object + + addi $t0, $t0, 8 # pointing to the first byte of the string + add $t0, $t0, $t2 # pointing to the first byte of the substring + move $t5, $v0 # $t5 = address of the new string + add $t5, $t5, 8 # pointing to the first byte of the string + xor $t6, $t6, $t6 # $t6 = 0 Initializing counter + while_copy_substr_start: + beq $t6, $t3, while_copy_substr_end + lb $t7, 0($t0) + sb $t7, 0($t5) + addi $t0, $t0, 1 # $t0 = $t0 + 1 Incrementing the address of the string + add $t5, $t5, 1 # $t5 = $t5 + 1 Incrementing the address of the new string + addi $t6, $t6, 1 # $t6 = $t6 + 1 Incrementing counter + j while_copy_substr_start + while_copy_substr_end: + + sb $zero, 0($t5) # Setting the null-terminator + + sw $v0, 0($sp) # internal_0 = self[i:i + l] + j substring_not_out_of_bounds + + substring_out_of_bounds: + li $v0, 17 + addi $a0, $zero, 1 + syscall + + substring_not_out_of_bounds: + + # Loading return value in $v1 + lw $v1, 0($sp) + + # Freeing space for local variables + addi $sp, $sp, 4 + + jr $ra + + function___init___at_Int: + # Function parameters + # $ra = 4($sp) + # self = 0($sp) + + # Loading return value in $v1 + lw $v1, 0($sp) + + jr $ra + + function___init___at_Bool: + # Function parameters + # $ra = 4($sp) + # self = 0($sp) + + # Loading return value in $v1 + lw $v1, 0($sp) + + jr $ra + + function___init___at_A: + # Function parameters + # $ra = 4($sp) + # self = 0($sp) + + # Loading return value in $v1 + lw $v1, 0($sp) + + jr $ra + + function___init___at_B: + # Function parameters + # $ra = 4($sp) + # self = 0($sp) + + # Loading return value in $v1 + lw $v1, 0($sp) + + jr $ra + + function___init___at_C: + # Function parameters + # $ra = 4($sp) + # self = 0($sp) + + # Loading return value in $v1 + lw $v1, 0($sp) + + jr $ra + + function___init___at_Main: + # Function parameters + # $ra = 200($sp) + # self = 196($sp) + + # Reserving space for local variables + addi $sp, $sp, -196 + + # Allocating Int 1 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 1 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 188($sp) # internal_1 = address of allocated object Int + + # Allocating Int 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 2 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 184($sp) # internal_2 = address of allocated object Int + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_1 + lw $t0, 200($sp) + sw $t0, 4($sp) # Storing internal_1 + + # Argument internal_2 + lw $t0, 196($sp) + sw $t0, 0($sp) # Storing internal_2 + + # Calling function function_mult + jal function_mult + lw $ra, 8($sp) + sw $v1, 192($sp) # internal_3 = result of function_mult + addi $sp, $sp, 12 # Freeing space for arguments + + # Allocating Int 3 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 3 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 176($sp) # internal_4 = address of allocated object Int + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_3 + lw $t0, 192($sp) + sw $t0, 4($sp) # Storing internal_3 + + # Argument internal_4 + lw $t0, 188($sp) + sw $t0, 0($sp) # Storing internal_4 + + # Calling function function_div + jal function_div + lw $ra, 8($sp) + sw $v1, 184($sp) # internal_5 = result of function_div + addi $sp, $sp, 12 # Freeing space for arguments + + # Allocating Int 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 4 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 168($sp) # internal_6 = address of allocated object Int + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_5 + lw $t0, 184($sp) + sw $t0, 4($sp) # Storing internal_5 + + # Argument internal_6 + lw $t0, 180($sp) + sw $t0, 0($sp) # Storing internal_6 + + # Calling function function_sub + jal function_sub + lw $ra, 8($sp) + sw $v1, 176($sp) # internal_7 = result of function_sub + addi $sp, $sp, 12 # Freeing space for arguments + + # Allocating A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of th object + sw $a0, 4($v0) # Setting size in the second word of th object + sw $v0, 160($sp) # internal_8 = address of allocated object A + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_8 + lw $t0, 168($sp) + sw $t0, 0($sp) # Storing internal_8 + + # Calling function function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 168($sp) # internal_8 = result of function___init___at_A + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 2 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 152($sp) # internal_10 = address of allocated object Int + + # Get method type_name of A + lw $t0, 160($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 152($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 148($sp) + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_8 + lw $t0, 168($sp) + sw $t0, 0($sp) # Storing internal_8 + + # Calling function internal_11 + lw $t0, 156($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 164($sp) # internal_9 = result of internal_11 + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating B + li $v0, 9 + lw $a0, type_B + syscall + la $t0, type_B # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of th object + sw $a0, 4($v0) # Setting size in the second word of th object + sw $v0, 144($sp) # internal_12 = address of allocated object B + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_12 + lw $t0, 152($sp) + sw $t0, 0($sp) # Storing internal_12 + + # Calling function function___init___at_B + jal function___init___at_B + lw $ra, 4($sp) + sw $v1, 152($sp) # internal_12 = result of function___init___at_B + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 2 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 136($sp) # internal_14 = address of allocated object Int + + # Get method type_name of B + lw $t0, 144($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 136($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 132($sp) + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_12 + lw $t0, 152($sp) + sw $t0, 0($sp) # Storing internal_12 + + # Calling function internal_15 + lw $t0, 140($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 148($sp) # internal_13 = result of internal_15 + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating C + li $v0, 9 + lw $a0, type_C + syscall + la $t0, type_C # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of th object + sw $a0, 4($v0) # Setting size in the second word of th object + sw $v0, 128($sp) # internal_16 = address of allocated object C + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_16 + lw $t0, 136($sp) + sw $t0, 0($sp) # Storing internal_16 + + # Calling function function___init___at_C + jal function___init___at_C + lw $ra, 4($sp) + sw $v1, 136($sp) # internal_16 = result of function___init___at_C + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 2 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 120($sp) # internal_18 = address of allocated object Int + + # Get method type_name of C + lw $t0, 128($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 120($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 116($sp) + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_16 + lw $t0, 136($sp) + sw $t0, 0($sp) # Storing internal_16 + + # Calling function internal_19 + lw $t0, 124($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 132($sp) # internal_17 = result of internal_19 + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 5 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 108($sp) # internal_21 = address of allocated object Int + + # Get method concat of String + lw $t0, 140($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 108($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 104($sp) + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_13 + lw $t0, 152($sp) + sw $t0, 4($sp) # Storing internal_13 + + # Argument internal_17 + lw $t0, 136($sp) + sw $t0, 0($sp) # Storing internal_17 + + # Calling function internal_22 + lw $t0, 116($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 124($sp) # internal_20 = result of internal_22 + addi $sp, $sp, 12 # Freeing space for arguments + + # Allocating Int 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 5 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 96($sp) # internal_24 = address of allocated object Int + + # Get method concat of String + lw $t0, 156($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 96($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 92($sp) + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_9 + lw $t0, 168($sp) + sw $t0, 4($sp) # Storing internal_9 + + # Argument internal_20 + lw $t0, 124($sp) + sw $t0, 0($sp) # Storing internal_20 + + # Calling function internal_25 + lw $t0, 104($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 112($sp) # internal_23 = result of internal_25 + addi $sp, $sp, 12 # Freeing space for arguments + + # Allocating Int 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 4 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 84($sp) # internal_27 = address of allocated object Int + + # Get method length of String + lw $t0, 100($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 84($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 80($sp) + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_23 + lw $t0, 108($sp) + sw $t0, 0($sp) # Storing internal_23 + + # Calling function internal_28 + lw $t0, 88($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 96($sp) # internal_26 = result of internal_28 + addi $sp, $sp, 8 # Freeing space for arguments + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_7 + lw $t0, 176($sp) + sw $t0, 4($sp) # Storing internal_7 + + # Argument internal_26 + lw $t0, 100($sp) + sw $t0, 0($sp) # Storing internal_26 + + # Calling function function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 88($sp) # internal_29 = result of function_add + addi $sp, $sp, 12 # Freeing space for arguments + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument x + lw $t0, 204($sp) + sw $t0, 4($sp) # Storing x + + # Argument internal_29 + lw $t0, 88($sp) + sw $t0, 0($sp) # Storing internal_29 + + # Calling function function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 204($sp) # x = result of function_assign + addi $sp, $sp, 12 # Freeing space for arguments + + # Allocating A + li $v0, 9 + lw $a0, type_A + syscall + la $t0, type_A # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of th object + sw $a0, 4($v0) # Setting size in the second word of th object + sw $v0, 72($sp) # internal_30 = address of allocated object A + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_30 + lw $t0, 80($sp) + sw $t0, 0($sp) # Storing internal_30 + + # Calling function function___init___at_A + jal function___init___at_A + lw $ra, 4($sp) + sw $v1, 80($sp) # internal_30 = result of function___init___at_A + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 2 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 64($sp) # internal_32 = address of allocated object Int + + # Get method type_name of A + lw $t0, 72($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 64($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 60($sp) + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_30 + lw $t0, 80($sp) + sw $t0, 0($sp) # Storing internal_30 + + # Calling function internal_33 + lw $t0, 68($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 76($sp) # internal_31 = result of internal_33 + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating B + li $v0, 9 + lw $a0, type_B + syscall + la $t0, type_B # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of th object + sw $a0, 4($v0) # Setting size in the second word of th object + sw $v0, 56($sp) # internal_34 = address of allocated object B + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_34 + lw $t0, 64($sp) + sw $t0, 0($sp) # Storing internal_34 + + # Calling function function___init___at_B + jal function___init___at_B + lw $ra, 4($sp) + sw $v1, 64($sp) # internal_34 = result of function___init___at_B + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 2 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 48($sp) # internal_36 = address of allocated object Int + + # Get method type_name of B + lw $t0, 56($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 48($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 44($sp) + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_34 + lw $t0, 64($sp) + sw $t0, 0($sp) # Storing internal_34 + + # Calling function internal_37 + lw $t0, 52($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 60($sp) # internal_35 = result of internal_37 + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating C + li $v0, 9 + lw $a0, type_C + syscall + la $t0, type_C # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of th object + sw $a0, 4($v0) # Setting size in the second word of th object + sw $v0, 40($sp) # internal_38 = address of allocated object C + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_38 + lw $t0, 48($sp) + sw $t0, 0($sp) # Storing internal_38 + + # Calling function function___init___at_C + jal function___init___at_C + lw $ra, 4($sp) + sw $v1, 48($sp) # internal_38 = result of function___init___at_C + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 2 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 2 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 32($sp) # internal_40 = address of allocated object Int + + # Get method type_name of C + lw $t0, 40($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 32($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 28($sp) + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_38 + lw $t0, 48($sp) + sw $t0, 0($sp) # Storing internal_38 + + # Calling function internal_41 + lw $t0, 36($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 44($sp) # internal_39 = result of internal_41 + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 5 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 20($sp) # internal_43 = address of allocated object Int + + # Get method concat of String + lw $t0, 52($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 20($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 16($sp) + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_35 + lw $t0, 64($sp) + sw $t0, 4($sp) # Storing internal_35 + + # Argument internal_39 + lw $t0, 48($sp) + sw $t0, 0($sp) # Storing internal_39 + + # Calling function internal_44 + lw $t0, 28($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 36($sp) # internal_42 = result of internal_44 + addi $sp, $sp, 12 # Freeing space for arguments + + # Allocating Int 5 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 5 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 8($sp) # internal_46 = address of allocated object Int + + # Get method concat of String + lw $t0, 68($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 8($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 4($sp) + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument internal_31 + lw $t0, 80($sp) + sw $t0, 4($sp) # Storing internal_31 + + # Argument internal_42 + lw $t0, 36($sp) + sw $t0, 0($sp) # Storing internal_42 + + # Calling function internal_47 + lw $t0, 16($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 24($sp) # internal_45 = result of internal_47 + addi $sp, $sp, 12 # Freeing space for arguments + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument x + lw $t0, 204($sp) + sw $t0, 4($sp) # Storing x + + # Argument internal_45 + lw $t0, 24($sp) + sw $t0, 0($sp) # Storing internal_45 + + # Calling function function_add + jal function_add + lw $ra, 8($sp) + sw $v1, 12($sp) # internal_48 = result of function_add + addi $sp, $sp, 12 # Freeing space for arguments + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument x + lw $t0, 204($sp) + sw $t0, 4($sp) # Storing x + + # Argument internal_48 + lw $t0, 12($sp) + sw $t0, 0($sp) # Storing internal_48 + + # Calling function function_assign + jal function_assign + lw $ra, 8($sp) + sw $v1, 204($sp) # x = result of function_assign + addi $sp, $sp, 12 # Freeing space for arguments + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument test + # Argument x + lw $t0, 204($sp) + sw $t0, 0($sp) # Storing x + + # Calling function function_assign + jal function_assign + lw $ra, 8($sp) + # Loading return value in $v1 + lw $v1, 196($sp) + + # Freeing space for local variables + addi $sp, $sp, 196 + + jr $ra + + function_main_at_Main: + # Function parameters + # $ra = 20($sp) + # self = 16($sp) + + # Reserving space for local variables + addi $sp, $sp, -16 + + # Allocating String + li $v0, 9 + addi $a0, $zero, 21 # $a0 = length of string + 9 for 4 bytes for the type, 4 bytes for the length of the string and 1 byte for null-terminator + syscall + + la $t0, type_String + sw $t0, 0($v0) # Setting type in the first word of the object + + addi $t0, $zero, 21 + sw $t0, 4($v0) # Setting length of the string in the second word of the object + + addi $t0, $zero, 72 + sb $t0, 8($v0) # internal_0[0] = 'H' + + addi $t0, $zero, 101 + sb $t0, 9($v0) # internal_0[1] = 'e' + + addi $t0, $zero, 108 + sb $t0, 10($v0) # internal_0[2] = 'l' + + addi $t0, $zero, 108 + sb $t0, 11($v0) # internal_0[3] = 'l' + + addi $t0, $zero, 111 + sb $t0, 12($v0) # internal_0[4] = 'o' + + addi $t0, $zero, 32 + sb $t0, 13($v0) # internal_0[5] = ' ' + + addi $t0, $zero, 87 + sb $t0, 14($v0) # internal_0[6] = 'W' + + addi $t0, $zero, 111 + sb $t0, 15($v0) # internal_0[7] = 'o' + + addi $t0, $zero, 114 + sb $t0, 16($v0) # internal_0[8] = 'r' + + addi $t0, $zero, 108 + sb $t0, 17($v0) # internal_0[9] = 'l' + + addi $t0, $zero, 100 + sb $t0, 18($v0) # internal_0[10] = 'd' + + addi $t0, $zero, 33 + sb $t0, 19($v0) # internal_0[11] = '!' + + sb $zero, 20($v0) # Null-terminator at the end of the string + + sw $v0, 12($sp) # internal_0 = "Hello World!" + + # Allocating Int 4 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 4 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 4($sp) # internal_2 = address of allocated object Int + + # Get method out_string of Main + lw $t0, 16($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # Passing function arguments + addi $sp, $sp, -12 # Reserving space for arguments + sw $ra, 8($sp) # Storing return address + + # Argument self + lw $t0, 28($sp) + sw $t0, 4($sp) # Storing self + + # Argument internal_0 + lw $t0, 24($sp) + sw $t0, 0($sp) # Storing internal_0 + + # Calling function internal_3 + lw $t0, 12($sp) + jalr $t0 + lw $ra, 8($sp) + sw $v1, 20($sp) # internal_1 = result of internal_3 + addi $sp, $sp, 12 # Freeing space for arguments + + # Loading return value in $v1 + lw $v1, 8($sp) + + # Freeing space for local variables + addi $sp, $sp, 16 + + jr $ra + + main: + # Reserving space for local variables + addi $sp, $sp, -16 + + # Allocating Main + li $v0, 9 + lw $a0, type_Main + syscall + la $t0, type_Main # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of th object + sw $a0, 4($v0) # Setting size in the second word of th object + sw $v0, 12($sp) # internal_0 = address of allocated object Main + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_0 + lw $t0, 20($sp) + sw $t0, 0($sp) # Storing internal_0 + + # Calling function function___init___at_Main + jal function___init___at_Main + lw $ra, 4($sp) + sw $v1, 20($sp) # internal_0 = result of function___init___at_Main + addi $sp, $sp, 8 # Freeing space for arguments + + # Allocating Int 8 + li $v0, 9 + addi $a0, $zero, 12 + syscall + + la $t0, type_Int # $t0 = address of the type + sw $t0, 0($v0) # Setting type in the first word of the object + sw $a0, 4($v0) # Setting size in the second word of the object + addi $t0, $zero, 8 + sw $t0, 8($v0) # Setting value in the third word of the object + sw $v0, 4($sp) # internal_2 = address of allocated object Int + + # Get method main of Main + lw $t0, 12($sp) + lw $t0, 0($t0) + addi $t0, $t0, 12 + lw $t1, 4($sp) + lw $t1, 8($t1) + sll $t1, $t1, 2 + add $t0, $t0, $t1 + lw $t0, 0($t0) + sw $t0, 0($sp) + + # Passing function arguments + addi $sp, $sp, -8 # Reserving space for arguments + sw $ra, 4($sp) # Storing return address + + # Argument internal_0 + lw $t0, 20($sp) + sw $t0, 0($sp) # Storing internal_0 + + # Calling function internal_3 + lw $t0, 8($sp) + jalr $t0 + lw $ra, 4($sp) + sw $v1, 16($sp) # internal_1 = result of internal_3 + addi $sp, $sp, 8 # Freeing space for arguments + + # Exit program + li $v0, 10 + syscall + + \ No newline at end of file diff --git a/tests/semantic_test.py b/tests/semantic_test.py index cac9cd78b..c6be2b788 100644 --- a/tests/semantic_test.py +++ b/tests/semantic_test.py @@ -1,14 +1,20 @@ import pytest +import pathlib import os -from utils import compare_errors, first_error_only_line - -tests_dir = __file__.rpartition('/')[0] + '/semantic/' -tests = [(file) for file in os.listdir(tests_dir) if file.endswith('.cl')] +from .utils import compare_errors, first_error_only_line +tests_dir = str(pathlib.Path(__file__).parent / 'semantic/') +#tests_dir = __file__.rpartition('/')[0] + '/semantic/' +try: + tests = [(file) for file in os.listdir(tests_dir) if file.endswith('.cl')] +except:pass @pytest.mark.semantic @pytest.mark.error @pytest.mark.run(order=3) @pytest.mark.parametrize("cool_file", tests) def test_semantic_errors(compiler_path, cool_file): - compare_errors(compiler_path, tests_dir + cool_file, tests_dir + cool_file[:-3] + '_error.txt', \ - cmp=first_error_only_line) \ No newline at end of file + # compare_errors(compiler_path, tests_dir + cool_file, tests_dir + cool_file[:-3] + '_error.txt', \ + # cmp=first_error_only_line) + compare_errors(compiler_path, str(os.path.join(tests_dir, cool_file)),\ + str(os.path.join(tests_dir, cool_file[:-3] + '_error.txt')),\ + cmp=first_error_only_line) \ No newline at end of file diff --git a/tests/testing.py b/tests/testing.py new file mode 100644 index 000000000..58f83ba71 --- /dev/null +++ b/tests/testing.py @@ -0,0 +1,7 @@ +a = [1, 2,3] +# a = [] +for item in a : + print('hey') + break +else: + print("uwu") \ No newline at end of file diff --git a/tests/utils/utils.py b/tests/utils/utils.py index 961cf7cbc..6c404a011 100644 --- a/tests/utils/utils.py +++ b/tests/utils/utils.py @@ -1,5 +1,6 @@ import subprocess import re +import platform COMPILER_TIMEOUT = 'El compilador tarda mucho en responder.' @@ -45,7 +46,10 @@ def get_file_name(path: str): def compare_errors(compiler_path: str, cool_file_path: str, error_file_path: str, cmp=first_error, timeout=100): try: - sp = subprocess.run(['bash', compiler_path, cool_file_path], capture_output=True, timeout=timeout) + if platform.system() == 'Windows': + sp = subprocess.run(['python', compiler_path, cool_file_path], capture_output=True, timeout=timeout) + else: + sp = subprocess.run(['bash', compiler_path, cool_file_path], capture_output=True, timeout=timeout) return_code, output = sp.returncode, sp.stdout.decode() except subprocess.TimeoutExpired: assert False, COMPILER_TIMEOUT @@ -67,7 +71,10 @@ def compare_errors(compiler_path: str, cool_file_path: str, error_file_path: str (?:Loaded: .+\n)*''' def compare_outputs(compiler_path: str, cool_file_path: str, input_file_path: str, output_file_path: str, timeout=100): try: - sp = subprocess.run(['bash', compiler_path, cool_file_path], capture_output=True, timeout=timeout) + if platform.system() == 'Windows': + sp = subprocess.run(['python', compiler_path, cool_file_path], capture_output=True, timeout=timeout) + else: + sp = subprocess.run(['bash', compiler_path, cool_file_path], capture_output=True, timeout=timeout) assert sp.returncode == 0, TEST_MUST_COMPILE % get_file_name(cool_file_path) except subprocess.TimeoutExpired: assert False, COMPILER_TIMEOUT @@ -89,3 +96,4 @@ def compare_outputs(compiler_path: str, cool_file_path: str, input_file_path: st fd.close() assert output == eoutput, UNEXPECTED_OUTPUT % (spim_file, repr(output), repr(eoutput)) + 1

O_JNou_jdZnp)3cZqC^su_cEA*P=(*D@o@++6})2U| +x^c|czCgLBjmLC!SR5d?k{Lc2!>Q>&&^gMGupKNaWW>S8|UYGwuk2E(sOm#_@sFxGm;z?2YIV3N~Bkg +KBuaC!cU3$~i@?+MtqavR1YWiKnb`Ey``8m=hGvSbMVb6nCZ^4Yzf#=GbxS{ +`@*X=*tV{^K$wePww^?rT6V&_=@>5*+Rvv$Xn|!?boEP%3n*5%jr +pHA2;O;*~!=J9n$2gbt*|~jYy5R(ua$x7BBvBK-`@9m?t8}uz=r77~VrdsSE-%OR*#LnT5|r~!@(LjS +al!_|pA(KE{4!x9;R?bjgdZfFLHJ|BMT9>gTt>K-@EXF;60RV;OX^GbUBcCbPY^ytSmt{j;e&)P5`J4 +II8xvmf{mJalK|pBMmU_XoXM-w%r&qQIj=A0{q= +(dmd`0Uk1OYeLx?Z;_mK1IavnaM_%9KTCM^2}a@~MjSCBw_`P`KA)N;e9*~DK!Sk9}cM+EJ=wk`z68~Ppavpv(;S%ECO<1lgkn2dxiT{KQpRnAptCDar;VQ!N{Xwonk?T}yi2sPR7h&0 +NZ6LgXuw1ty*R?bf|9--9oq}9fp&u&n9nwCUbub~sm;Fe&?nSPP2`9en_eK-mDAPmuZ!&zsTL|Y8u9R +4_&ZdO;@_k*dtLaF%ocOX|EZ0fUFgn{v{Cfyj682{ +#hnO;|rn;Jt)H2yd76BwQu!N%(-YC*cod`Zeo}W)pv|OdpNopCOz}{C8yf2)`xmMfe%Q+X+8PSguQw> +zHbYze(DMu-uPJuA><$?L+(}GJMTCoJQiWA}rU<$aOyY;R2Ttmg{Kbx}Ol@FPG`jtg{Ly{%wS#30n!v +byad5Rs!+o5ti$IhD%I*nl@3_Ss4iD54dFt<#|g`Ie+`7cBHT!L4PpHVfwvM4A^eK8C*f_>i#&Enfncx}Y +nd1z9Yu(Gu80L{7a^44>4YBQR5TiQJH+~#x)!^oXn*5!vuD&> +&>R!2Fz|aUoDps7pqu|0~b(BEarjctNj==eK%a}hBH-t&GenPNrN-p@O%xnsQL-KK+R_}eK+kMevz6! +fgNi41uj0I|N=AT^oHmbL-I9H8d%yZ_d@r!vjlUjboJfKDGhlqJli>i;9=W +wP^V2fHF#5(i^YP&7w&*rQ467yYoYW>L5v^#R%N4ki0>v^jFVty=7ZMX7iM+k?C7jZ1hhnV+q)<-cvS +fI8?VjjyGzZfkpaKSbWU(`2uT%eY}0@_VL>Lccbt!nuZ^Fq$@Bd}G?Pb;+_PI)vDrrUO)0x +?BL>7Q=7*S9w!8Qj^9M2 +niDd|Ke#Di(K*P7XXe8$ooOmHG|M_Zsvi`U~S6$s*pNDpOZWlExFWlYb7isLXNMn!1ynH)xsawy$p|Q +7v+5;!f<Sd|y+1d7!B5v8N}x_*bNyK8#Iy#69pKQaIA)JM!0V0&WMV2 +2yFy2}=zJBMI?p@#eg+v?(Fou5ldHR-vZ=2?vc<#BmANY^=`gwkbHxH +-2^!o4p?td_2y%=ol?!W3E9iM*SrJ2uenbc~;D^qT*n|GqjciXj##?Kz8JX98%*AtqC?C7K+k9;ueu2 +147*PD7g``OrlF>l#^`g*OS{haF7&vdxILuHS1F$ThkZHd`@Shzk1pKzO +oy|R9|#|)?^tL}47GMbYa563F}~oLV(WJ0lf&!#{o})1avm8t`pGYr{bqhX?d0Oeo-}MvyYlw?&-GqE +W$GDEwmfq0@0SntNKFZE`}$8m2F(fzjytjJ){&n++G$Q>m*|Jsr@^n@yKC{^mzb`-9=O2d2i9xX_5S& +LXBxuRk6Jy#=P|vd=&jx6MTYb5_Id1yhWYKSKJB0A|KpH_LDLg$0^HCt<N|eNqu<9ae{Ju6-Rw)#b3c2s_o8L@FHD9Kl>PfRcisGB+ZSf7 +Z@06I`T_y#LU`jY0Lt){HVv`)b^CR|*$T?eon`zI>aQ!84x +osh#cr%z-|pnfKk*Wx<}y_Z2T{7(d|SNfoi1z4ZHHTD?)xQ1kJ(Gpc_({mOXdhwXP5df9v14lln_RsW +(_dv9ar=q1x`efp!Jv0qIqC}`XL$DuR7o*A^K_l9HV!|y)-$dSdP6T7__88*of{lX)MKl*Le7ayKXzP +CDe#@1UcudEys*lXd0WdV%EcIi90qjlDcnHRRL?D4~wzd!j}{ST)*{`gkT(6aI!H^mI7dVB53=R4`MF +CR@_&@{Zwf|>J!cYR^pKRTi$_pu>)pS}0e&u?0?ad^D`^1QO&UphSFyGq04#~NpCc+U6Qi^}cK447@3_@h_C2xI&;HWVCa-%U1u_?>Efpe +{%N8F(1!vn%JZL(pi;rioflXHh*!)tk=IeKhO8-8Oz9qp~EY@D(~Ah_?P&$VcoxozxnthKX-oa$xh>P +alS75+Opk)Joio6{@u@~KTqEJp#2M<`p3VYHox_j_RoI0bLTH@9*MTEeJAn!!43WAJv=VD?JuvcH3Z* +Oa`;r-;XNmN#I&Dv>ZMilzW#af>iyq7bxZ0XkFnFfjpOqY0bgED^_g(%>9`#)4jlICQ-x1`IL^8xe8; +bg_e?odQ#-$|vGT?FqxZe=>dcyazbBq}nC(fpW$dcmlP{0>EOlzb7YpC(-sOtV@(Gg{9N%_qY0_!^<9 +~mwn3a#I7h`(HhmHnZ^4x994)NbJ;=bRXD+%uR()2$@ZaCk&eN_J>zcwCQM~}G{{>C5Wi)Y7gu6nwDt +o@xICobKX>3Fbh_fB8D_}WtgUkOgxcK>rD&&3UUWW%$kPAS)p{8U?}E3Lpe2<5TIQ!c%5;)4M%jE%l& +>ihOX^9#}8UMy-fggK>+*kD2s1vCTsjqyU{Ch|5LC;LxefrpQzSF+ +T{M+ppc74>{m~)if)qd+Y#b*xw*l*C?e9Wo7LOvhTRWpFV!(?~9-6x%=rAw>)`pkS$>No#UU_T^00BW%7`ueJ>2%{N@|io +?kSid(yxm9|pzjSbME##AkE=anFX}xT~QDCpLZ={Y~wC-jmU21$n;3>Gwe&AG`=7G3y6L{EUf +;D^mvi2l*s1V~`_~n(aNIUxll8s9udf;LUR-$11EnwaI>{$yvSasbD*xos0r8)Oep~kBz_GvNjV(=F5 +&!JBrIWw8+GA7Er*%Jkyx;5C)AzrX&$7?FdLsGnR(<8x%@ZDU)TBS~$E^1q2aoQpinC^YHtXOmJBOdW +7L;$A{%+_OZ#=y7iR4RLQ@*`&V&R=x-u<@>I{Abc7!FwZ)@@^E-n95k^iv1MPTO3&e8A>kpLTq3W$%V +>yDW&VpZEOZtAFzT?Lzq{&+oZ8=A(lz-BUC!?1>`DmzysL{Bey=>uCDE{*<(8HSpQ +2x-?wJsh_C@5HgpUjE@T~9ksGMvPmkzSh1NuRpK1}g!%@nUdrnCxSx>nto&bv3$=_ +8qkemL{+iD4eT3Cz)(Fu^qv8(*}5Q1@vXC;$DRr +fK9^k*-&f7583QyJV7clVN2b_O%>OPM5{j{IsUmrY3;e5nt$gYo(R`+`95a- +XGf0*OgezhEb)xfDS>6s(keYNQ*cYh)D6Hebc%qgq6_fyV4Hu4z9jpsNm8@lN@$LlA3#`!&e;XToK~dvuH)`8HcsnoyE!fU$>%f=Z*MxM7 +2j;;)Hts}xJM2Ciidw&DW`R3t2s3s^FG7vGHk6+3{~VHAF^y&G}dI +I5iqy;Iu;bJ*RbX1HX~ek?QruPo+!C!bZf@%-3z)W6zD*{C@eCTi(Ad=Fve1(+B8g$3&$Cj#{!eGiKd +VyXA$srkJz$yz=sb-cw_qT(V@>o2zb#Iq~;7kMtZ?7_(S8l5o}A8uQELM<<;ck{8q1<;TnQ{qkexbUu +|(b8kRQRP3T1GcPB_Y#jR9AA>5gVix)2l|S>1iNeW?NuBZ3st0G~#r(1BrG+&kO)=RYDc(muF~`JpKm +5v@-xkDVcSzp&Kv6-=h(RBmonV;}^Z6|eLBD)ui20>g-yL9a7|q +v6)Pm?LvuIX!DnK}_c3pDyt68Xfax(i^{Z=sq`Q(k)kdADovHlag?MqJGoOF^lI-e0kD01ua`bjF`LUzIvh6OY>rK=e;`in@hX2i)Aac}RQA2Y +7xeCW$7Gh?EEwsq{f^5&SeJHvJdOv{Q{cfP}s(~lR##J&4$r-+$ZF-iJ_pI`VYJ!Z+inz>*9Ersk574 +vpq-9KWs7sPDb{`mG=UN^<`IJN7!4uy#^nO$NZ{pnS6%#5^O=EUU9jtPAJ^tk~EsWD?phyO70H)~9O; +rzkae&7m1TnmZ&9O4}EME*{T;{*nV`#sqBuAm0~=563_yv4LXDso4GTW@#^Rd+356HN|NzQJs>;gKa) +L%yllnw4v|jWYDMb0HgzFi$jD^3B->N1>sx$ZR#3OUzlt{74%LXNHxZZv*@si#6L|vKmZ9Aeaq)a5og +oBJ)6v96tdi$5vPXK147*yEDE*6u%Cbz-IF~VL4AdxiHg^1zvC$NJ9=+Ms>GXa|&$*g0-;NY%9g{j7U +byx0@Xf7dEpyvLV^o#YOp+tm^`2oL^Y%XjuUGV7!+3Gr;;Lup#ccYv4P082Bi+nTb7L4VoQw4SdX9?1 +yV$eId8<0r#bx%XiLi6j~j&!hA!n$(o&Swq2JlXMW8$I}H4YoUFoZv!O7@P$c&n$7>+NokpGelMLeV+ +kj?rEe7$C{zWQ(LP?Q1%OOG*ISt_!6o3{6$ZgaB%-MG!l#jl6XU{cfn!qvNVl_jV%D1-|&f;8)LmU@l +Fy%NPMSTYq+iim~E!IJ1>!QBWv!pDg)VXQA(p{nv;V-s0a>Ac}_Rco*qTniHD7K?&Gtw +tUMmL{7eS7xB(}Q>_uoP)xxL&?{Ur1wqe&J#a7=1UV*7g2cwn+=+&o;jpGu&4`~ +7)*nNZZIFqv?VToazAMTMCgrNCTJD7JKBJ*f8eQ0t+g88>mQjeCL*cf)jUJRG;fH7Rp}H +&?^MwOmhwQxWirhPj{D8?CT^&s8MmwY67uZS(v6tJl9vpMTL+c}Mf<`d3}4Y2(xG-BEaE%8NG}pLsBO +PR)X$J21!MN6npKH{0xUXF{bcott7S#M83ubL|#9K5L$Q&d!ZZojPLJ+*EVE*Zi(D)gT@UVFKXOy-FYLpg*e^#QuKf$ZgM=15I +46J9*5zG!q*a#8(&rxoI1ImAQaUQ3oN$LrrP3~p{W^YFr5-O`0z)HIz)2X_;4MsRC{hGJleh&Ot!j<4gSJmgCdGr%px>Bg5Om4KT|Uh}0l +cuxJyR;rs=E>{F``r;YoB3S`TbZkv1;7sZrROonP1jSJZYzKJ^*Jih6^@`$4FautJxRO;jxh(Q8U+q~ +&kJHP~oH=u7MMV8_{O`<}uB;*g-41)!prarl63VuBIt}!``sy;}zWOsEyA)Q{)YRnSZgh38f-Lz;7gz +ldhR~<}%y)oK8>=1r1U%D<8TDSw$m;9)`eOa*yXsjaGX{i%+v(*;6^t{Nr3B1HeAl5By}+Syq-fVS4# +F2iQO}SzM&VjtC-#M~aZUbm@H31RVc6U+wnY_SrMZw(bs&q>&qcN~+;`;h*PrPN_dWQ1kNWO#-=6LVv +J^en@tz*_GR(PSAv@vcU#)N&2lBXv43pu_(^o8>8AVqsLdillSZQ-HRp}Q15d4XM7CP +lk^OvFh>#%BAP(7A2UXS{vP}N_pREeuerCzGtRr-4dA+-sF2h9%J;RZxw}TUQsiMJEpB4}qTd2t8 +{+&(Y1eeF?f$fM2cqm}X=%SxN}5fj%uPa37XES&p-Sm(~KW9WPrhdQSnp;g?H#`+(l9D4kl_6p)+iB0 +HoRy=oy1xR(2Ljk`PKOF)}u>|Ff_V@Drx+ARj;hH<;qxYeIGH$mKwG4?l-D}nnpF8D599ZE8+J%>D8ST1)RR8#x0DfU5qV--(`}~<`;ex;{Ok47+QV;@X}rQtyzG +Y4k4eLcNX4WmbW +E|)*-fhoNo!Yku;a@NOea1+nA!)hF#Lz{=+aGgGU{WBpB+o>AeT{6Do;5M1Zafs{mbPGBSfw~*nOx^w +40EJzEUp3_=JnsYga~(xFx{J4q?(xlRrmP0{QCL)8MYZF5kgh5opEIoo!L6E?E2lk2LVVsXZR98oo(X +#Q5`NUS4%^WBaS9s`Z#T03WW#+(tP>AZpM~!Jf@2hx662K1fcp{`40&oeUF$2K#;awzH$u8Q!?Us@<* +Qmgrzq?X_|@H@uKQ0@px+C3dxgv<$luW*xkN9fm0_^O9RAe@VRDx<5zf-5`z;kbnNoJYyTPz!upGOV}&hGwd6RXZ#aT +cGkE&7vF&L_PnONEdaNP+|5}oq3sC>aH$*fJyQ(0*Ii4x{mzW-0+{%23|E=_2)|$9r-&kZ=JXBH<)x$ +;@Oz$?_|cG_AZma5LwUn*0q`FA4Zwegr5Lu~z`u<}>0RZMK_2JUPM`2`X-&?k?MWvrFD~V|tV&_;!mo +0#px8gxlYLuJUs{2e25=8(h3^l_1$>2I@GcPmuZ0S{bJWMxi)SmkXA!+j6fb;7lh-d9I{tnhGSBHY!l +YvrwJncaM3d}fqM1aO65UAj8KS$19wJ&#^fJ+a3_<%49YZvkXg1MBMDHcKndtLGtBHO@w2tT +M*Al&az~i<8w_m_N+3It2`AVGtI~FOc+a&$?lkd6L--2YcBi=C2S>&&o8vg(2ufsoIx|I>c--^60XP3 +Hjo5ih-oawgd*{U*=F^W+9?xKlP4q%9WpRGKOftFv@)16lbet|$Z@KyhzMu-CSJLb8!|C9NAf(N2PX$xggzAV2-t8#CXRtJ)C +FNr6pPHjs)<+tXLvuSjF^N_Joowa}gE^@P#p#ICD|h4s@>dOm*bXur9V(L7WXn|1LT3xZ*r%Z?ochn% +)-0^$fiy6nXOAP-Oz9QgeJBW3PK8nN5qd$LcXQ&*MgC?gc92&G}}>b>8N9rkX5vvzkC?c|23W02BF~Y +hbHcAkQ<2{mo0xT{-jl1qD@2vSixuXp6;Kt4t^XyS%8QqxxdAvu)hhaZRm?Wj)ba7)wf_1rv=&0bUbQ +yuL%Apv`=)89717(=cS7kEKOsHr@j=u1J_Tf!}j8vfEm=ORP0Jt;k~K<%w_8J0`Juv+KNccp)H7 +b&~JGp6`Has^*pVc-OpJBm*+fOPB_GxF4_u2s5Q7ORwhD`;q{O$k^BE?f>KBqwzLeZGYa +~A=$H2gl*EHW-YXqP=LN0i@oqWn6G%>VIg$djicAMMZBhqoGPbB;Fg3wv!yTk@kA{yn&kbze=LG$3lSC08Ie;bc&8;1Kkd^2xt}1cYz)UYG}up=X4z_ +1L}`7kg;H(bwIlS#YKU=fK~$ynWObbO<@KY&I7^`EO_DL}gbEd$y +Ms3DZG0k}q}n^;d&)D8DCI-?u{nvVL03HORH;m!<<iW9py@iZM`cgOS}SIcs$R +I~S*8-z8|O6ZST4}VF}!fxBGjxaiGa6Ez|jM7ucThT`6uCM9Z^2rp$A?){jlD<3ZO)Q`ZuL+e-t&|L5ze +iQD!QLn5aigN&4br#QxF*vSO$Lhx5UT)xTEMpFkuNf=!sv{Z_!&oD@M+0rI)GI0D&@LvWW}MI`z=&(W +A>BsYgTbsj4m1Pu7Z;_Ol}x2N4%%PktVh{+#uC82aw22hl?GkiB>Z;0UMWvtYz??4B;p=ACZ#eF_twi +)jFTCA7u>5RV|=HTs3~CYR2?gsf*<@q`2m^$G+`=Z*+7pc;~t4;l(K1pR;JU&$Lf;$1g_rALK+ERf-j>*X$ZOjw2ssPff%hE+H1bYF+1&>`okN?%)mw;7Ot^Kck(8MOO;ft)UM +;stY!EzucKrn%%Fw-dO15^}pLUEvSI1V?l%<$fBVQL=c!;I#DWqK?tDho_YvdrU@sF_p_RMh%@zqQZC +BY|4C@A*If@44%7`Lc(1t@mB;u->)aefF-M1w8=_c!qo&)*MclI-8#wJEYm>>afDXcjrPs=Cj{1ri2B +gbDYVxhf5MV +`C7jFcC;3@PVcX59s7wlnP2De5zPYV`7rbquomsrtcP3y?Hh#HLwYyzU2TW7s7?Afq;2B6Bpt$5PWy5 +QkIg~^0KaTApACuC9Gm%Wz&OqFhCU7sz{hdj=S?AI1115!rHwQBzXd-5`J`@DcCPUS$H5}j6upi4V~0 +rHrrWo5o6bk=Hr=0i*mXXV6pYiV?7Dxbv+MK(ZHFI3KPlUF`PBj1aUA_Nj@^#ARlh65@vDxxRqe!l!8 +bd6qT6-sCwxv0{W@V8U^T8+R8lX;n9{3s|5XL}J^Y3JQ_y2N?&jD7Ie`y5U#L66BRDM08(?>wRho*dtKvqDbeYO-(qPY+uWr_Ke-F4E^Fhjg +Y2q#L6>y6tJkf6Kt(sVZaj$8oiB339yA`~#ntchqIchp2GU`;1YOb4v(tcg0nbZ-rQInEU +1qd`xgFMvmIzPc;;0SvoK6Gea?-87|77Qha)JHVH4-rrxte0SJnzFQNWwRlt5J(}`2o;@{jdo-^10X= +}ReL)XkSU*iX3>eg3gPzA~sr`9B;+FxMn&0h!t8m>mkmE4UWDnHDSRC`YnNt`C_dy&7%sYVH;E!uUH0 +bqcEhSWg-#M&RgtEOj%`q7C11~)c=RucGgr?$-vimhri}U88n(~+FfEnmFAQJLIyD5O%(NDkwl+O{(_ +5j<3e+9hhQPBM$#t*RWK~4FypeRiQ;F!<9FmCY~4!r=~4#1aiKK)^~54|6O@y40>nUIPV{;2`gaqcuk}MRwZiU3;18#lhA_}$FGW-qV&pCHii5 +i)an4&<38(D>M!`4MhJh9%yBuQS*L?8Tu)2UL^YuQbDF3CtOlfitp&VU8)I@`szdV&r01Yk4LAqmAN` +^ZtJ5^huj5SC<_{J2yNmFrV5}!H2c|MbJFZFL5_(WXEXT(DR`CNB8AfIbpgm{F{ +F_#1KxkoGFho#Q*Mb6_YCp_bXe5Q%l1Dr703HeMUudi}KyYsxm3HiJhA)mb>J$&Y95#+~bV~&jace4W +j*NU5Z4=I*F7QU7tNvLHQ-yLqb_`X*9Gr>5|5kx3sAs(i73*U2ssnVj}^P~w2Hx@hr`TGF4!ba_A>X( +~gO`K=@u}z$3N%`G|w|*kEne*w*oVPV|zPy?970sNlZsvSV6X*Fo`9Mwe_=R&7RF0PRpJ3m2&5KTz((N?l?FNTpZ7u#p9aFojZ4`W0gX3$A70~{Wx`f*6dpMZ-Fe +|a~{vCbgv`+xN-IR@jTwYvvSxsgc>LQ#kB8%i`iW>C$1S&faMPWuc2f-q~p4 +Rv9>UjL?-|ucabY~^*SjypYug`zAM}U5VISOGExj5K3qKg^wSsVcv@PTC@3fp>({SWI{x| +RpNpeMk2dIe5`P|rwPjM-rdE{1GfB_LjpMe7dD~8J8#iH!m)uK298?AT>^x&VG09+*$bg`Xc7_7Xtr@%krg5L%BLBM|u_|t*E4EXuLe;fF_fL{&#uYrFU_{V{N8u;g2@cp`AUI~V- +kHXq`x)5c{gs99HqV^pa;iqkdtnMM?{$WBMnJVOo13teQ76|-@f +IkNKGl8E9{1w2@1^#;AzYY9K;C}`DlP>t~&Jnm7__qPS1Ms^5|1RJU1b#H|rviT|@NN2F^YVe?l@bJ*kh>*a*;LwS4GeYbhu64S +lA-a;p@4(5(Sh>!LoBEkbBV(z%{R!>~V4L;5ry2JoKFqp_85iz&jc;l`5bwy(*FEfY?Z)iW}=9_N3@% +{no248hU2Q%?QLU}cq*KfM+c!0RD{Bf}#iA_qsdzvu>B_wK6N9~2oHF*q_b^1i>dyV-dIuixp@ZK%-O4^dqhqZZSjH#o;nwcn#( +B!)P0a73hHLiJ#bKj@DM?GZ#0BG5*=`|i8(#v5@%!}XZnSH%SR4MqnK;QHV0yHAmDd&BjRHZ9u(T<P);8=z8XShcD_xgFXzDm +>DhJiwo7#R@=MY?c3xKA(tds@4>-w=+AA%mdHJ$r_PT(}++Gbs4Me%H5Z*&Ba`#IW`7&U(|Gkcy`iFl(7vBHiWJH#iSe4=85BZm%%Lx&EDBS(&ilP6D#Z@>Lk{P6v06&svAdsh +7V>#t(@c`4T7c-Jp3e%7x8Cb~X+!3rk2F_`F{!bJBXCc0eFR<0L4bEhs-0(NK +R-Xdw!59VT|3Wq9lEynxc>UTF}LsK)48*EXTP={ZSK4d$L%_F^!CQRZ9Uri`TF^a+r7H__}y`}Ut8R8 +{dL#tY}2M)i>umoz2h49t9io +Dqy5dTv{qhzEO)eS$@c%t({v+_uIYGn>(;)ouMVAWbGsc^fpQ0q(ZBEQH+gsT_4D)P?+np@S6|;wzP= +rN6@Ry*@L9PI9rP!#=Cu)`KR4stoVB@!M>Uswct1ao*IwTr;(PpJ)h*^r`q?We+yUd_`zn{(Qe5~P(* +Jh(Gmp-aUVhH;=JxH|b5L3ND#I?VTes$Wvf&xj&r118F1{j*ufsA%{I4o*&UUZ8+>Oq{apm+#^*66sv +*r=ZJ8zyoefpd4zWeSN=AJ{RPMtamc;L*LGpDgGJ@VC8U#)%r{r8{OG|jhv|NeeXo;;oH@N=achd(lY +lr<;j8@hDq!q0VbtggQ_N<;A+HEL8~ZxsA}+uprt>xS^4*M&TIVq9Y0NQ%cMz@?y0M*`&s +CpSiVyFZ^d|5!Up*+qg(p)>C=Vufi6Y=haY|@H*el7L7yxyFIRLQJ$h7r^UXK1s;Wxv+O+>k4PLl#;e$y@NukS@EsH{2P1^WLW8YhDx#gZEOO`x#_uY4M>^wt5Lw(rpAEp1tA +AgjHWtMmB*s&MJaM_6yC#2nOZy4vw%1Zgg7hfnkAsFipm)EZ +&6=No{#pL;!w)}x_St8f4<9~!0Db+$`@rWvVQ;-a!!qLjQTh>2v9E?o`i)8+j7pgpmGm2Y7=IhJF)v0 +1%?%YYZ>X;4S^o_E@4WNQQpnK@IDg6%!2woq8dLUj~0kc_((LT2=ndG3R)bUg`mPA>AB* +$~f~|DMLS(GU!t&`&CNWXQ!0+RDg#aQg#IoUEY$?>kTQFeI;dmef_G-lYW7I`1*!Q`i*MH!l-}7PG|? +zmq)&qa!9q5A)jIV$pd82`y(mu1`m_>N_nnc%5l4-^xxW$nz$nR&!0a}U0!<6J@5uQjyuPkGNRs4|LJ$JW>W+`2>S2;Qs-gN9w`Tc*1q7O7xX5nTBkp8x0Ic>T>N{c%h8WHLmK{{`j +7cYvNo29q30Y|%7S`D-7xr|jZ@F4_p}QG(k@trAC&R|@DKt0zi+S3!+=@-YJ*Euf`kAB9rj64DxB@g?h3M +s^r0_1|Lnyq$xgr`Q;b6Yx8QEGdn`QIyF$fJS9jG@z^&~jyNpkFo%?pu8}|HxZqM{dUAF4 +>+--|))9|=Eo1-6cUfQ!~PcQiMMWmm4(wGnGJ@vXV9|kYfb?VW9o$F=Zto|}<#sK+R@<7D{%M-_?eAL +N9)B!1nf~K%9TE<(=dK<8R&!`>#;Ve9{#C@ +b^mpVQb4657FifJ`7&S1LuS0bc^)UPi~kWEK8p0Ckwzs4tU6zuG61?DOrI3-BfekSt5+{C#3+kMKm8&hb%s1J<}rBTInK34T*h +mhZy7VNykWUlZk&6sTniqG!GjGvY*{fyo;iK|ik!`H@Hq)G2{7#08Dn^FZJK`i3q$|=_U+q+vM?&`m2 +{If(r)lV-%o$fbq)O{=PJ%^EL#@@$j#tk!`!~IY<53c1RfgO^S|JemQM%CQq2iF**yEDdUj(+%irT?I38R;fngrtdd(;i5-Arty|*Z7$8FL|W?zmqypz6Bo2!NdAF-~qNk +dnON=P99b`c}OD2Inxw5v(?wO%@gwO2$P-b(P7b?Bv& +9f0b3Q#mVgp`^YWx!2@jJb?{K?v}gLHj2Q#v>S+UIdQzZ#X>yQ!abmE19y~k?9u|OyIpBe%ag6cbyPN +huq#wGV^dEY?h`c=e?6b0{s7Ud1C43mX5VvO6>+cya^tZJ%b1OB*UJq@JXwt1QG4{-5+4`rof#zb>SK^rfbzHt^7xk4y3L>#z0l;PzMLyGujlwuJ%mO +{YDtbFt@aCl4!~Jp2QCv}{7KT#~5sz@lOd%+EtnS07XJ??>YI+O(n@=z4a}W8 +SMlJgUzd{!A#JMh8mpj6r*T!D-Kp$|d6;(oflkg@sWLGCx0G#a@hMmMmE!XU?42z{92ZxRgv +-=#$pZy#jj%4^8-)=E|)cr?j-R?eLw_+uK{l#Kg#)oE*t{IXO95PM +aCeHCLN#-m&hu+W|>b7#ouWy_W}h;<$|=#!VhOcI-*`Q6 +-1W%uM;7qwaB?!?=#Jpgqv0l|4fauJ)YY$ewp@TEjSS<&`MUz4zYx(ux%;)IJFNcG|MESS)h +n$dR&R$By#OJMWZ;trab#gSO#X$%9cF^TJAkIR=YmkSmwIQ!URkI9J>C#rGBx>D&9d7xd8Ptry{8uP+E2+qUQd(P3c74AoH9m +#WyktjRz(nJCKKYh(H`lI_lM278Jlai7SJoC&mzmd*I9(hDn+O)w#*REaVtXZ>^95`nfdpianq?hy?d +%j#75YirKBeaLc_Rcxmb?w3Rv-pGiZ?rAyKXfT${`~oSXr~bo5pwqI*-8%Nf%Fd=G)P8AN2~Lc0eLVg +c`(+!T#GTjrrwiILh2BCbJZ=zRJF=NU6*DEkcw36Vi +TL9%=I?n(~4PMpSkG^JaHZ5WVxM1MfNqCckWjQtIvUMYOV`3prq_+Hw(cW*C@;Ue1eTW`Ikc;NVO-w^ +hpc!-OOlS79NRl1d(ovrBSSaZzzH|eGw(Eso}V^iu6V{O_2ZGbkxcIksb`)_Dxk*B9;5agb@W5=D^a@QiaE{# +yHi$w>^P5ayDpx8|M}aJ@0X)`5P6#G5(?dhdnOiG3||zv{2r(S?H;XB_>UpqGw3a|7zM5{nXt{>3MVd?&^ +zp-PpI_IFm=}I`rr_#0WKz73bAOZPu)M(MtXnIBS+eh`?GM;; ++9Lx;dfdgyJuPTBG(|`n5Qr{jZ>Zo)bzPYEJ0pgsq&gjT5$a!aygS=Y&#+8sWvi+cAqjQTTjMD`#yfE +)gqozYp~T)N_s2i#%pVrSX1XbA^3*BKGyioF5S%A3qH7ekgoCAH(KjXN!`XhYqZureN*f4 +XZ%r`R6#rz8Q#JLyy*%>LTez>AsZ+rUb1q&9$z4X#cBS`~eC$1kjKhm#rE~2kyEXz2B*Z4QfsG1A;Lg +sjw@8q5~^E=#=XO8W1{c{a~HRxol7oIfM_gv?)U&hfK6JyQ8xXHCJU-sBBJ>SP%+4|b1wk|FzryJ>m> +fiO*hsMu5a7;LVojSTt<}Dnl_A!?^_W(zqk}~Fmo;MwSNYDEk&kwljBlAPdGxi7k>|&j4&p8F_*Eqzv +BVC`vp!^vFlNQcDZ?2f6_Q1Fw%sqLdf7bs#q31oBZ&UhMt>@a9N5xzx^MsFnq);o2{yC3hy+3) +*oH!i39D^`qjrGtG_&k0$WZ{waS^9$S)-uOz=Wp +jonewK0?Xc@3e&$ZDenD2D$pK--gPdznx-n@BFy5?R<1NTih7A)LfXRfK(neStsiTk0{N9LHA+gRw#F +U=mK*OwP0DjJkNR$a(_H}1c2F1T?HnDXDgI8f!gm@DF*Cilh-edNA4^DE3vs2rEG|2bptQ+*9_(Z>Nh +FP1-JvL#EF#I0JjY9wuu>wU)Oq76=Bv1`TIk%{UgOL!&?cB4VXn{;AKEYmEUrG9xm#E +Lr)@p`^wX2!|DQDS16&tyZO1X8@8MXSsrf>F_|GVnC*b~cnR9^n5$a^8s<84jV|SP{*V1X|NQfDuf6u#NaltZkCP5#U2Qx!NI +Ezc^hdnL!u)N?(-&-_DSdR&wI=;PW9-?pXHQxDQCnhG!=bn2`t?x*a;R_63N%?SWeyrIiKgpONH!loU&jJ|wnEBLwa^1g@bg>G +Fk{_EDQ+X&dbS_g8jXI_T6CB#{B)TmL4@8@!J!C^4Fi+G^oH%hjbU7I@5`WmuHUH(-RP8xd82hw@goO8)K#5G5iIeOI){ZU53! +t3RhB;|D*p|xNzZ#{Lob%~(m|J+_i6>N!nRdZ@SvUs99xvl%=2RHBgNIdrpzntM8}DJc?n!Vynl^ +2k@(p}e)!0|0yg1h6n?8B>?%lb6uy55r`+=`f{=X?Yj2L+B+O=}^>eXtmn7)yFPDW1gPxh_)XFtaLOI +;$rMhs5dGxCz8fjY(<2lt;gZQ5i!C-`UkZs7k)_CV=p==&(=va&Mj-zkj65~1&({Mo|ant1%lO8dH;e +`~hXx3>g3w2OXw%X+!r?7IGTw*gP+wekB`{=n~c&CSw@`LKO+*PxFfYu2n;pP89?4nFF;oSdA0OAggk(HGdZnavs78e&Qc^Y#V(-3o$*$o^&%nQnIF(=382aLItW$oO7@`Piz8c(jF{+_7%KV!(Bx<_A +6J*6xkdgviFru5U4<=1a#%5@8dsOLXdr`#_;d?Sze8w~udTeqrM&3GP%ew#5Dyx) ++&@k|oi;ylUzIUjMIz_#g^G561N#iySp-E4B;szbS3*C%+ycdoS%{{Fgm;v3gmI`1^A_pM#!y +wj}Sw$@7Y4@{Xf(L6JLT5{r)$pgH5boci*$4?$JWo+W)@dLa^JbYib0B>{h^tj1m<0ej-96!MOsrY2? +z=79Y-9IilIeyaUiBFl)z~tls-ZQ36?wdR&A%0R^a<@r|W2Q|>o-%HFw=q*D^^HrO)O}_TZ}X(M$%*6 +Qlc$e#?F~(t&HblOn~|(OI_PZ8>oTp~TbnELJo3zW{&_)pQF*a>NqLsMv^;BGS)M(wD$kKun+L{IMt98ero99A4v99@jYYc){~U@xpFtSYQ7bQIPU))v+kiX!(Sk0Q?^b +CFMxe^Ee@wa8XfR#aYer7g!6Cln_YrxaU?Q;XAz(~GUew&Jql@?v{&MR8Seb+Mzkrnt6Pl(?68lz5hy +OMFWFO9D!QO2SH_N}@|*OA<WNJC8;H8CFv#B5?e`GNqLFAq@tv%q`JgWQd3e}Qdc5M-Ag@6Jxk4 +{KBfMp0i{8uVWm-}(WO)%lUN1)Ny$phO3$)om1k9CRcF;?)n&P7duID&2V{q3M`tHwr(~yQr)S%;%d; +!8tFvpe>$2T*Jac?<0&>D~qH_{*QgTvr(sOJ%b+>AAMt^4 +yBt>fD;#x?J}>&pe;JfV{B0=)8oyl)Tiu^gLT$d0s_cbzV(gU7owm)8=Cfu!Y&8Z3(s%TdFM`lW)1L! +d7jovDMk!^F8x@@&oe2@}u(;@>B9t^V9Qf`Q`Z)`PKO~`E~j31)c>y1px(N1S4 +=hTD%XhC#gLSaf_YGHbzt*{*Ot%hvt3f&=9A4oK;D7q-2D5WU1C>^pbhg_>6)4C#eNYe+B41*LCAi-2 +f&j!g=Kx#F`b;a(Gmk(qW200}_MyZgG4YH|#TxuW_cgVvBvIv755=v7_Q%loJZKdU<6{XdsHKlcwjfa +WvZWZoUPpgkLz#3+awkB9ptf|&?tIb+&t*};GYpiuv_YBVrpNxQvu#D)8gp8Do)Qt2DTZSF_<50Te0l +o2u&O||9lAtST(33LgNEP&>7P{d9z3_)lM3u&tCY4%B(@L$SWu^Ags!~U3E$J|u^mnsbJ*;M{zct7jW +sS8aSuNHygx_UWyS2*du+~~dhDU}u!#^V^BPt^{BPqj@k(Oc2D9f;CRAo3aYBNNpN2WQ`KQkyZDl;}S +DbtdfmTAo_%cSpez;}r(4|p#BtRQ%<|NDL`34SUKKB^2JstVqzwm=km6q@0if(oMwV+)fCErn@?*21z +vJ3Nj9-bMtO)LN?ocUuebN0Lc|0i@6aWAK2mnS!LsUCHX*l}H0001>0RS5S003}la4%nWWo~3|axY|Qb98KJVl +Q+yG%jU$W#qkid{pK2Fn%YKNro)kVHpVfC_w`e4aOyLKy%5A+>sfG3Q9Ey8i*jMX}H5u5fg7lGdxab+2%YDx|&z;Gz*uL-gpWh!pK4k8_&wcjiJZF2(IoEf` +Cc!KSLNfg6x**gG{9lpq-~UD7Z}5bzgN1(#+I>;I$-DcadCQisa#U14cyHz1_dCk&e&B%z6~{eG9hLq +E9LpbYxaQvKxc|W=OE1sNOv^Uvc;V#Y)nEQ<@TAzE^7hk{zJTlLlouzp(DnC|o}}xhNngYD>qEbu^eN +>PC)HE>^G5!k8`q!F^_Jyj%do!h>wAe?5SBcaBK)TC*LTO#dW4IG^rSRFI1CT3@wA+4;m5|O#3UH^Nr +GU(A7S7s*pg@xU%NC3=Ci0eRw#Bk|M{$2;lSl4VLIMCZxViA0@qC@VQhM0kCTLz(1AQNr2p5IN&IIL8 +j`;M?d8hSwF+G4M2rsM*ptuB;}C?!msc*iTY;Ins({xiTqod!o%OE>{$I|s2{lCmpRwU^onksSU&G}U +JR^+}#wujM_4@Pj6;AE`TI<0hntlb-$d0O1o>0#~K=fkksHaXCsjAIr?`SwUolSg#D=g}KIxscgac +skN4GbOt~X3a7yh4$6$jz!G_?PSTp_1TX3(mZLtbenX$%nn1lMP3&6hAfvtC!wzux8TKB;LiWd8(dnT +HNYN_*seeWyvu+r;?Enk&VF5&8RUU6CgtzfDjYaVz5;FUSbpOz>ybj+PD8eUE{XDKcYXtVSMxY<3|MS +^wrN|k2`hfr!*;t^i?%cirjzZKS*P{|)!v0eod7-Q##V;oi+}zJYA@40xo2easqo`4m2UugNM;?{DUr +7ejRFEV6@cu+Gry8}xXP_6*y3F2^>JeXP*Y +M`CTy8(~KzjwIhK9l1Jv1Hp4QBUYIX4PzE;QQovK9{wQd39LL_$NEydiAmF=#~+>)b-Q(=rs2{T3hlJ +W`Ieg?>Tvw;#rF0BY9K&#Q4-yv8@u61zSPDxDK5&DDL*4=YEDb(VT~T`m=xl{8=O$B?+{Sj6mOhiJ*V +E<#u>%`Wn=?H+b#o`m%Hp3;5nFf +%b}UZ>ooL0_}=jJz-L8GRusXm;`mFuG_DGQuWkdb$brvV}O1Z*yLaZY~r;pCsV1nSDe5B+W#`gB+zPnt08z~{vMun`;B3G_{kg`MFYWF2Y)cpDNhnSBLiwxuF*g8lL~&F*K?HY@Eq!ssrsZnm`?06w +=|J#n!zNn-D4TZYlJjDoU{V%gAat8Rbht5_NTE;(>eN%xpx`}BqP3e>UXkWs47po;fuWrJdv@Q09&0N +#ppDuY`|6kT-<{JXtP|s;bQ;fa@Bb;&$KX=$SiiL9AC$3Qd^U- +dyqq=(Tm3Dms+VwN4fgQ_=}ZM0~OU^MNd&h1y;N|5aMSatgqw~|j^Uz5twaF$|%+us{ +L4(jQ3`>-NfOL$X-64^XQ1Kd>kAdtIS&D+0kFZ)mC&h;3w|H?%A%GE8Czu*(k*p)L>hs5_E4A%(n$VC +*k>aEg#RBL+E%-Js@qyDIfW*nL~90I1mr$s-t^ggSrjX{1u7^HD(g#R;G;^)3t>4F0C8Bv1KI;NnvOvTE9HgP`Za* +9i8O+u6wbR1htjy{?|29`E->oDMN=4 +FrfPw@a*afI&pTDvm|Cl4ALoJ{@j0iZIPz#-q^1YRqbHOrx=uo9@N3V_WQN_GL={Q?p0i{-kf4<;Hefc=sp+pAVq&`N-nQ*qWPlb7{n#e?($CX-17!D70l9#;hr@EZ&_bOj +grVka!AmOR4WK{K+zFY|d{m__Y$4RoUtd7G-&Zvg20b +o`Fi90L~#cmv-&)i{o?o1~B7ln;w~s8H|biSPsDs*SY~7H{r^gCn9I*WqXKmnTI%euQn$e5c?7nlh{W +3>ZQ>PiB0Z)M5)`|(_#)!Am2~YkxP#>@3R+PdJ-ZHAg%&9bGVb?3qP;R5F{41 +HR{^tv_}8Ho&j1d(PNWC1u1m|Gfh=ZAQmj-Oma<@}U4Y2Ny5`(QR{=1qfXiW(^3>nroSfmJ36OeY8v( +{%hLVa@iuww`H~FxM_IufTg_bX_g&AH0bD;dl82^NU@sBsgPr?h0-<$h>u~?Te4ER18)d?C^qXVe+&~ +o)8rJba-CWl9DO7iG!*ynca^G;>ESl1-hwdb}0;9`})e{1t`gHrux>rrrvt0%hGtmoohpj{T-Cji_tu +Qkz1IW%W6FoEN-qx*{BPRF~EGl&P)t|4X+w}tN`OzA=BzO2yl_zZx;!H8@;#Y6)$BQI-}<8jD{skD3J +x43)iS`MS%!==3C(;@FiXuslkmoH&YPyzqrxy^aW;$IX1T0wD>BhR%iWM +gE4dMY+H$pzsE9v1R08nb5gg~jm-+lM)K5HuP&Gq<=@k@lu24DrEW8jVRy~^uhlGaba`>r)tA~~#o`Ooxki +k!Po?)yq^JPAl(r`#C6A>B-Q@q5j +SOV9{zMQ(Vv+`=_&XMtW-?nD5xb=rnDtBi>pZdb*bSV6)2lruP9#oeB)nT)l;?~M65!w#_6klS4`lO= +=sV&@383jWWSer)J0{-tjeO;uWXl&k9G#`0uQb~kXqQ-F{{P_#y;KN1U;8Gw2mW|l8{2g-84U$){4{_ +BogW`?Qc8nRIcsIj+_(5c*9`_-G&{CNKqCkG+eGhXBOdbyVZk`0p5AYycQM2ws-3Brz4z1S<3{qJ)z} +5{~C003wS6My=$zvG6M?m2Lkyj=muT(@{!kd +r@OBvs>=_MpmOql?!GA0=3E2Cs0;iGffUjqU>y3lP1^q==2ZPue(RBeFRGi}p7Wa76GELB!mDEfHhECcs|F+xXav +X6BVK4gzwGzt!vVH7?4;jN_a&TUD1;XoSA8N3CfnNWm+Tu}hB5))thW6HyylAKsQOPE=e`OP^1uHZd) +)|-{Pv3W5XWQz@vf8gJHZN<*-;YX8n~$q%A>#`P8KY~S@~{s);;SF`&C1FkK`f%AxY*q6NQy+N6V#+E +mIDXHng#IM$R%w>qNLpAEn8!C2YQtfu@-eR9_QCCaprM1+v9b%i;sUrdOcv+_u-5#)2_N5s++vVDzO$ +X;O}K}t|psO@m+-reinPpJ#uba__tIH-n&_&$Ej5=bHlVaU>MG?R;Np>$<2;Qecwa?;qGv;FHc@T-9k?9QmK|E1c +<*!ZvlyfW(4=}GF(c?b0qvRkx-cM%=m;q2Y{{p&q!QF+KpF37IkixL(csW<{yN!zVE_0Jk1vQ%EMa2q +x(@7Ia?3l4K8+YNy5XvAv|=_%RWJ1S&YDPCqf0Tj{jmA=}4NFHRbQuCSu#;N5&!OW%!L;ft%}-6S}^M +U=uiBAIKS`XVm7L;d>f#+)hfp)<_Zuxgw;rGV(7aUbY0-84?Ic-wHw&>?I#+ZJT6ur>+(0#7GpxdB5} +cc4Gf>kaO=%;N7#d$`SFt>UQGY!yj{EAD4r?p(WXiwTrO-y|c24#K2>Q+Gg`SzG73ch<_5+G8${K1ET-}h(WE9QhUr94Z +Tu9l`>3gvB&#*EB1Ad4jXm~_T;q@h`D@hmmyLtz{D~02Skdpk%mZd3{e=06gjw$ky$Q>xwH~Zt;eH!v +F`nHXPX}dCU-reOn6!aoW12W5I})}6YG-Y$R(tJ^8!XILUuLJ#Ts>c-vLzBz>HbMI(Q-0HHvi|6B}bp +InKX3|Dca`f)M8;Y32Cv_<$ZAPD1FD2DAMc61=ND%!=2kk+*^EE_WA>QnK7AtGS#Fz{mlM=@RRb%H2@ +cVIWJRQK=CZ=61t0Msm+BXSz^1Kb3>KQU1LV)ccLXXV}S}V46pCH7Dxt&ygt%a_%rlbe4AUz>r=Y#^L +D>B+?sifrp2zNOvDjR?Dm)wn=Q4D>T!j)!l{b6lhqxpWT|(*JOq4{Z0RIrT3{+uAZ*i7YNyp5gP0VEse5@IG3*>Np}R*f*)rGmf3`D1+ +-K4DNqGW}>rMH2YzabnH_%)pu_0fV3rIDh<`cm0b!x(mL^T0cdWXcDR(aFmKf;4A@R?$ffwq0r>e +gnG6z%VZzfMo}X;`cqRu5`*cOeywq!x#gvxDv~FZ0P>=7zoK103|Oq`!?^Qm;}9K;_YWU28!ecX!ri; +V-U6(A^msE{EoKf(*8=m?N=^@FnI=uFZ8miLRlZVnaq)4`L6-3dI+svHk{ +C=U-Djl;$ZoG%b5apxcLu&@WQ5}wEbArWi7p&`Rk;079nXgBZ?Vc_srT=)}f_He8q*6cu@)7iPYMB8d +Z{BxrT5Na+!5reV0ve$aqZq!fZ;6nu}ndnIW79@7jet(5l1Eti0i^aebIO(fx$l-;NjnVG2k^b`IQse +-3yO_hMulWM?p_l|%V&$TKtaUV!Us%l?Ubp`$Z9FkAj>wci!@9|k@e0f~PD{1LNOB}yJ1NH3{&A7k{# +?O5QU8TB5Bso~_lAxrwO{ndiQc*MP12~8C9x<;4=<^}9M{HML>RwM?LL}+BnWxbsL4M_8;?rgGr$G`s +2?jtUG|+>?wW(^(j@iJX;<*htjK7ox7nl&hhM8QSQ57$N~=t5EzZVmi-rE=!$PgZ>3seJ0-GZ7sU0D= +Zivk*(W*hg12#i;j_WK3HmAh8u)}Ao*Y*yMPgUt)-utP6gG!ou%A{D-Q%U|0wVH2Wzq)|Ue+OyY*SKl +B@GkinXV^B!FIYrn*2XY1-wkW#KrUpK=qa_K{hl#?)$0uq)rvR7tiIpkWK6k +~;XKbf$eO)NYAy}Mt ++{xdbFdt@++q`|z)|wk{u)93Y6>bThHH~ESSJ7)OE!7bhNN=jR%Cs +rKa7e@Te%y`F3vE-*hmxbK&=CEoI~BK8+3lSc3nmsC|jYs>8+6)d!;N@xla4XHMAjERNJ$hZ;c<{M7r +2h9A+#~O#~3~>>TWQnwIkwZsW2XK`qM?IEBeOXOAS%E-0L^IfiS0OON;C2Dk-0eF^lVNJ&xe&JrR$+I +?RelOqCipaG}&R5Mgrq^-!Jg}+#x(J;;=BqB255Hfd%Swp@I(hiHu}Xb$xb`;I~ +5ZE0D5FYlh!Ve1T=MRpGWH+Px2Q6Or(06vKAWa?90+Yx#-Vv~hUkf3Tg7V8^0%2-;gfn!b6c-bGWGw; +TA0V~GrHmI#U@x4N>)q!JG)Wqg%~cSW3hge)J7<@JCp=Ec3`LZSoJ!RAw;uE@nQtI4Jg1T8O(!^1n{Q +EjlI-V&3T<;QplT6EN`LHx}b59*B3V~IQF`96IBU(~k>!d7ew5RGns6w6d^$Ib#=lRe;_R!?w6mM6H%fwqB(dXXX +@TW9sLX-rD?uyqB#+&&-s#LK>tS@@-LF>nO&T-gt0PjGgdFIWt$Rg3dlQLRQ&VTSoHZOvfCQLnQ{eDo +#A%8F0pz4|OM(#e8Y^HaP7nPU{xRGY +{~C@vVIFcI)=uYXI_QCre~hM0M@e9<|~vEG@e=*<0qLDb2xz9FO^3FCyUG##!|9t;lCWb{)jOW*d&A4 +h4WhKn%cap=GjKcOl2mxtj^Fu>~6Fd=4VGxq*3G +ZGab3*vi(7h}i`^9?YA}K5|~WYQC&D%Z-PUW%I|Z_&b=P%0fPCtERaFM-+?8nX6308|RACN{;FjfC&U +xTno(I>m~{9b6ha9K69(2cgDJ2`OkVTfRfo8+PtlR>#9VXw?zqdU@MWwP_i9~YoEui-j;&~G`+x)x{GMd6Kvo>*S@8C!-K8>TNuLnoQ896f +`rx+2%tzTxWvPkTmNHQcOn5Kw*f`lG{1s*i4fkhS2<8F6#rd+jJ$K*G%sblyVuQ>E5C&)jz+lC`$k- +$nOo!I-^EyYiyypHmx&{t1DllvD<@KkPSZuT=kE>K*n&~nk(^SDfwHh169|Z@akiD6|u+&ZF*~X9Sm~ +I0^AlKPr*vs$okfDJysRWh$8uJjWmfum+1E6j +X07Qtz^+M4^bN`^t9f3ejzjJrA<9$AC +X-Keq6ryPXhM|5SVXlXqKOmn5!|_;QPKE&CQwz0Yf$n4dVcjG}!ogI +KF=?;eDUkct4!p8|TgMX|E>ac`Kd=q@JfoBb?daFms#kWN)a%1`FndE=j?pxS_=N*&9_K?m~O2{01Ld +Xv2hfk+0AyHxqY-?~Kw=#D&0wJS)s}mJ9OPJgtom%g;tdtVW(q1DSdK3Ak&0wvBZ2DBNgEW{{-x?*}; +Q`33HnXS#9v8}ejl7ip!3X^-)g#h9{&AWFB~G{hwI71I%szswt&w0{Jd+j-RKrv-m5ohNB`TmoPjOg@ +bhmL-RZ9b~f-G}og*8!XNa7F#2uJS^ihsx?qqQ*6bH9Gnfg(yM1@B@Hnwx)TKR^<0V~RpTx|XjjtG^v +%qoqU?PIw%<10)S3a=;+YS`0k*qVBt$jy3E|qtIyLJC#pQhryGJh?(YXhS*P3ur6QE7qb3JP7zZ%B9@qa%bZjJ1`Ozdw8 +0-&1>yeKM^BliS3ljn&h%}IfO?umN}3^+%`O^@nkZzyOQlherybK%I#v!#6kSJ$9R6oxRx8&(Z)5JLf +61#qYGP>Krfw*;!mv5Pq8N3jBKMM*0dlO7%diSWV&&SHUFTSSz^u0baSg%Q%gMN0eEtmLa +0nYS-aF8g$xPPJt5nzeT3bgy)?`6@*{Zij{^wRR1-RXxwx^(FtHl7TFL{~K4w!7w#SVMAA;2C^6^u|W5;qT)L-RLjLms5Mp|fULZ;|kLpvC3X*T0XzOTBg#&daV41FM0ENWI&O#2R-pABt +5}GvKxyomR*)2yWzXF1}6ZBuqX{N^Ho~!E%7pCD2Rd+FBAn-J4vs^RkzF%c>A#cmdcA2Nqwac66oD!* +zq9jtbiE$>l+JryN??DN)1WTVV!T-L-gM?lwoZ+>5iV?kb`z?3;it25*72lip0h0YN`q;iqUVmx@n}M +6T#wf{qOxTb6S$sWH>yJ|NZrnH9D?Xr%szAfZCJOO37)Yt{p~+~PN0y@UDI@`pe(ya`FKM%=Ifv4P_% +M9?*dHAgb^y}+B=6f5A(B%t6ua&EKCA)ywEzG>soa#$o*7k9fvniuKcxXs)(pRHRhg*=XOwc+N_&HM4 +la4}BlJ&`hrR4SNbj*&V2^N7d8u8#wU_SgzzLdBXdfqim^?r`8zSjvOfMv{Wp#wIzu(aa}N+L9J;8to +(Nk&SZ&x|Kmb4)2jd1c!{u9(=&6Mo~iuElR3SeDlU=WGrA3xY#Kz#a9OR$!>OIbRc6UAe?npPhS^~+X +~hD(|E0BH){y!>r%OcQ@W&n)+ag7NaEZx0HO-oQiXoK7h%1xYfSsZoiG>Zin2G*{)h!}*aST4Y48Ac> +HEgZ8bUKcQY_q%WNxVifbWPLAS4|MU=0Wtunu}Ntb;r7xma`hG|CtCz4TrL#VVMC_ +?Lp5j+a@fX_N#eFMa#=5wYS8VE)FBTDI|R8+=BstFy#}k<;6-nOw-CO8#gf?R>M!vyMH%A;5E}uN?y{ +ot>UyeRKB^)0PJ(YW(6C_= +X+ZE8eF?YIT_pjsH=n^>)ceR*>Um@`UDQ1~TJ1+BP#386chRANx~WK1DNb6TckRX4S7j{kt7D+A8~Sw +Jm{&AcDUsfA5IrzJ#!V+YZQ3JmK{fyy%mzf6=L+X0aeAjlJxYlhU8WRoSxHDq$s$6nM%RdeQAr%Vq=! +Y+8B2v$dgmXE#2a5^gnLc2`EB7NCd46!!rdkVC6!BR!8QI7a9Nvl6%|RQ^f0>b;mdsE<(2W5--+Sh!p +nN3!O$A2;_z{K{87cn2jh3M7O}fH+sJ~d@WfDh(2^9io28$JZ +l@p@mzAj7&KaYAzxCv!cQN1px7t>XNubSj+R<2j06O}8siaYI-;KvQ;MQ_N|aIJ!REsz&~}6O3 +vQW7Ig1N!{ML*?JU>Lgfk!y9xR?j&BeF@>qckmDpAWhhU_l46pk#E#aB=88Ui{H;wW0u>fLLypuJhpU +Z}(h483lD`E@S8O;u-nX+!nzC_J|O(+Co^JCKw6TdNuCjQklNQuxDpXGG`94RYuQAa=k8A@tJWLentq +@kxjb4$7g2ZBl4<3M_xKE4VPj8(f%N{_V?hXvWjW(em=l#^eb|s(>!-@qa6aLgUbF2LW|sa$&6rU8D4 +!@Zv&Z$GJYP=-0BpVKk1+Sw!xQR=C(@i9h0H&&_HR%n|sI$59_(oUuZ7s +kpIM6usw#a00^X(>=xVgdQY+5ry$^{D4a8t;eT!Cgae{*P0XOo3!(#F)92LD^^#tc%Q;8LU5lE-dLcC +ikAA`++oKp{;#%Dbo#@ZU%Jn<4?SvD-2rtw0XBD}tpwP(Ti1(Fzx9&Tq%lOKr}w3uF%gxL;Dl?HAQ3I8$XHyFb|W}`UaHu(MJ6lbO?#8+=9vx?apy@#QPj~62TdAj+@m78D} +DxkLl6Vfi(zOlE391MDV&zv1n&@;qJGL@54fmQ(0!Q_3^{6ydIrz4BoYR?F{F_{o)S|I1$mft%>wnrNaMajU1!_=mPy*2Z)G2y#XasHaZ*h +og4M(P}9*-m#+O$QyAxU+AwP1Jl`b(VfkS@;bK~wmjTp>=uM3c1-i&QO!XXMei%LFE9Z^7#@*?0?gD= +z0gF5%px8j>i@z93k$@WOOS|~cX`Z*QH7$OuvCVtb?ppFq$qGy>tVWwDHO!Iy}G^Q6~6zz5V#7`flk) +HF%oxB;+(Ol%tXwhU5(yF89*_S9&3l^A^9C34jxLGziPpq-$?u9z99S0 +q%N=x>b4|sBS`H!PSQjq0;OAg&QeoH@8P-V4x%-iW5o0D7}{ypG+Jo-ph#;D;;Mbz7sWDsda*C!{VS$ +O?WykyiTThZI1eh54TZ_IE7%dHV}@Gh$y+F%1rw*>_;Kyzf>SvamE*(8X8dNd4b)5C9{JFrp*&gs1S; +b&Yu&}C2Kr^)|D;xISlnqu>?HmM*>nO5)vlX983d5E}KGC4cfjDih*gQiedya(O2qRdlGg+Qg`cGCwb=eXf_l@*l% +#x0g2iMPcGK&EKU|{{4ix(97$+%G8FT6=5%wv|i48hPyxKrm^Fe9GR%_ths6G#(xXSvI;xjh$Ir +W2%@%8Bn@#RO`6QA07b`*T$MrNHZ}Zjx +EG&BV_d%!Ey=9cMpgo&A`X_!yEFNcAbSlk8P69J#Qh2N^jV+U7uxBw1Y>CEQnH9Y|_$ppOgyVKp+)J$ +eFI7kP_TF_Ar> +L2f`CJdr>(xG_h3ty)GJgeRq-4c;nZeq>>HRbK7|Gp2Hg6k;BSRBn4TS9M$meRe@!%&s!}4JX{773W= +SO14Fu-)`lf*ypGcVY$EVJ@kJT}smOx->g($&nxkU-9o;a?0LI2$uS?X$M_fthw{BnZd%)9~j~zopZ{2>|i$cs9Sq{mjt!+pzCS}GFm3)?YCpN}9b^Dc+w*yi~0Po +gA=ZM!}nmXI62hEXGt+R=kCE#C1ycp;HjBXg~{6jq!s0x-vwrSH+5|)K<&}0+mPY3)`nWq5Z&7xH_Vd +2>_f4YZ1E#Ob{_|r1}bR&PN;7a2Cx3>2GFo;yZ3AtrFwhGqT4}b +S%=#kx*vumkCUBiq_T$ivfi+TWl3S8bZZmtEl9n%o#-Q8|RE;uw|9eP)qPAwj5Okt2YS#L6{?bU{#+b +e!4?j*{JJ@OtmquxIeU&BH1r322A)mEzff=pqbY%d$>utOv}rU;idHW8c$=HYkG_|p7R3LFdn^@I(}m1Oumzfqi7^xZC5IN*0ruC))pgrdfx-*GgLVR!C)iFhpCKGR4{Mm6d=KKtxFtq!d~J +9PV<&l3(I-F$sF0F56&fw81HS#XtRsf-`AJ_wnarhK=iEWC_qgErx$^FUF*RNt${d +l42B&Aqo4|Y?YlKR~|Vp&K+e(-jxbKEhEu(*)XC`()YzmhQAN5$m)!(B1|}Y53qJ9^HsRlZkolT`rzP +yg9%%1Azt7noUc&k7`SK~$Zges2R#4Ejs5{R#?ZK+}S-^EUFbJfdXO*W}BejG&xw+6Y;Rtw741XHz>9*kmmH8F62Fm +UE;gHfHn^Eu+$x#=e|<1g^H8|m#|=xx+60qvE^H<)Q$&{U7ovAjce_E%PDcVi5o!c>1!9gpF4 +fG6$1q~Al*CU@X7MdY(%1B?WZ{!3ad%lr7G@E3jQs5{-OHJ`@dO+W|Ae~nVPO|Vo-I)KwCL)O$2i#K&zFLe7~!_6p$Sw8zKHn`?B+-KE$EENl1~#b*a$dN9L7XgH6v5}m$!7AD+Bwo;Z$|BA=` +WCFv>cG(i?ozyS9>*9dv2m5F_9-_ViHBX)9wCW@$ClP1j!nR-(2<%ogHjUmuju$h55=5y@}#3G$& +P`{0^qH@^e&66&2O~BRe0tpodDhyJcQ1R1-!m#CCN1;%Bk)CkPZ!)bFh03OfWAZiKZ0V?q`f?pZN^q8 +yr0Ep0i$h%%Btavuf%ICVz!Lx2zv7!f$Mm9Xcy{rx>>jF25@BR3T!@8*G+4=i)+NhC~je#L2!jn4AWm +VUr!hEt?Oo%QGpFIxELUx1F>EG`HwSqa$f2A1cr_ULYX{5p!i#cOp^|- +%SaTII{Af9V`wNw7-ZIA<0)}V|Elc*9KQGJ@y;;rFX&6hQLSaLQ-rjRzek&Uv|x +~;ms_A6;sUZ=Gx93Uj=%0?RyYjs~& +J;sh4)2=oi2b3w(;RC%EagVh+0*g;%3+fmpRpFl0OxzEQ+M5QM2EI_aOCqoi@X`^iR+ +5ZZ;ts>2hX7GAX;?7Vaa*e-Wh&`PJ0GB@Eq^JxZ4rQvs2KC(~|SFzu~`h;`{s1OYB^jPr$p_f +zBmyY3~Y@LZBBIQv`akN4LNH3+%;jj9%VXYsL)`y+R*8ng|pQ!vf`|ohI +OLaeI{6(6-iZRXF1e8DDT?P4x0y`ERcigXY=j@G$hcD2KXpMT!o#zmsoPef=-_f^a%&<3Vqx=w8CLzD +tgIELFnrm(=b3>&hg78+CsDMV&VK=Sb{kw?Smxpjg;`{omQb^7@EnW6z(lM1e5zKvq`u~o!%`d%Wh)B +yL)HCO56plK2k^Sbe4zkJ~C}Y%ztR`GYKzwyS<79He>xhQYFt*u-`o9BED1xjmn@z3)>8jJ@Ptom!}v+UWfW)&L90piKjo67?<}yr_SwL7Bv#^5A_4)ni`Mb?u{ +l@v^;w#WNP(6xr-A=->@vDX +H&_4H@eLdnt{b##Blg7&fM4jOleWm}cyNPHVnGYGpfRb}`H4hfA;npZXoPuAN~Nfoo@DvH +4OrfRN&KWoyd<m=^g~TWYkMer``Py2z!zcxl0}bnPT2cibq~M;txMoI>g86&n3;5|CTEOp#wvmUZ;6gD9o*Rf +!VEAm~_}}-kc1b-Hm3oC_FWaXKlUR|}S5}hT*X1?ulgrw?6Zd(_ngKc5D4d9FmCduQy^>i}GQ`c2S?% +tTpYfX8y!kslteumK_x^0eQ}r?Hff9cbT>j=}}(LHsrgMul2NF0 +nATMo4cw4S(0g+K?p}_7jc~&nBUyH((e#NEr&EgGtFCc@|^IG*y26?YRyY3H}!9VVgHNJR6;XtiJq%U +Xb##yt$n|apqe~y=?3xw8ix~-&!@IT&n(5=<$VqB>+N_TFjX0@9{Dy%W!P!c3T{#0iKruJXbh^a!d!e +6DD8lM_FlhmR#1;+xRG8y9ajTGNT(bk!ujGP~PcnEK)MHTXx6c;nRG*x6!1G3O;1*ZM2Cs+-SVmrhd{ +d2hG9RSwQ>Yo!Wg=ZA${`|0iEl1$5#d4!kCWy6#-$Fmh +MG7N2Q?Mp$vS-WDvj299hPEGOZYJa~np1u$PRL=gy2^iZahAh(#vP +?!(Bo+2i_WLkS$?8x>=I>{FD2~nX3S5q;F4i2S#v@Iv9DobX-<-GJtkI)Jt(CWmoA-ORn2diO@zs5hTvRz;?t4%DBvncA<~GVfn{00Lu{Mv|eS@bl +oZ>I!52^5AR)&<9mv7pHhhA!<6=ODjhc?J*wL^^PgT2k-gdzbm!GBNn3H;2@syxgeycu@F%{C}k1lKP +3>xS}h(crHK{-XY_$j=S`9= +bKVW_c{vR+cf8U%osio^ga^Il2PILzihm5WW>xIatG-zj)QG&1L|0=F`zh*kt>R`f +s|$*e;mFIX-8QwsHfUCsdapGW8Rne0qkxQTbi{FMf`bnc=LK?Eqr|#e-Q6hG1{Z#Yczu-iXAmOt^TUp-Qr1vNthj`rBPh8LyaWPOPqzSpPVQi_3VQiwn*`&=7WPAib=(Wu6qbVTYrBZ=E~yK3)Wth +Xz}0glsIb6@96CgmmdP`{TQi!3&tpV=3YoL!PQvkMSLZ4XL06ySA?_Q$pu+ob)AZs|ay8)GQ@6=E4bb0%^M_L*Cy8dSRh?{4TgY|Y6r*4Na{{q +GQaN$-DYx!7WcVoU3r7tHAj?tVi}-nxh}RW-jMGD7Yd*m(@1--+t<``jYln7@|Dg10N9e+^~n?r#n~x7{=;O_uHO6@umR>zq4p?NgM+ +RTYpzDa+Nv{2V$Bmt=%21+N>$gVp^7EXnjEoIEy=T<@|11&u#bG~Ymd1_4!Si8elP|Fmw(|oB`S%gj} +~i?rIxPSu4Ix?sYl-t-bEPDt;u?u*Qu=<=?S?_7%MCVzX1^0;AL7EcPor68XFm~cnff7M(hK9hcU*VJ +NGdFQ|1*8x(PRoFDnq@wMO5VorDTH +3iRpp| +btjWaMkzpLyB+B~tE3`!pBp@Ua$T1M~OOml3@D`#$q)5FcRRS-WmuRzm{(H0U&TcPCWlY-S6)L2&!Gs +_Qoyoh=fdYIU1G3$D+T!+${Q;Qd>1b1IqTQsIdI2#|{jAeRmRBz;{%jRH(wP6qwX?TXEaYKxE;=FS*y +5U?Bi5imysU?!Cp+Wdpyb#nL>)D8e_et14?c5&FGz(`P&0i3-x1d@Yw`+AkT{XY#E06;l&12A;p(Q|> ++Nuw(-oZqDs;io+|y1Qa+A*gP2znAb>7%N*lFYmgD7ope|FYmXM2Zu$jg{6{Pn~)X&0yJwI?giLNFz`8#D^?HiXE*&8miJV@B)UFe&5V{z0UTzlJ;KjO&jgZG4hI;7c#-!+?n1(2V?} +sHgc1c!AFr%x1}bupzw;tNMvaSL@u%KFvclU5b6r(uAhC0pIPwW`tnxY@(vQE{D~m3~}M-!QO^ +9BQaEGSH!OEX^fBdP$Sj>`vu;gT2A4!M$>z!_>TkGu4;@+Yw>7uj)b#LiiJvCSY>0J3)368jBaMq*hI +gF0p87n4)-7tp9FE3e6eril}v?7V&S&7G+@ZJ$aG{whsw^kDl_RT81HEHP8e|q4-zgCqHNHZ!*qV18t@R|L6+jzR*>)iaSW7Y +pIKA=m{P7jYfC*Quv#v?f#9fYZ(nO-{|MLZ}h1*vPW;gxm$+b+Yyv>> +n9U+7}zwPmJ_k#&x4{RSYNYiP$nUs79BFKUqcMD0jt{#2PfFBnR%d1;c^+5|iP;J&tZ}RTOgGe#eyPy +q#$>oVWji=mnjY4d-n<)4C$&w|$BDCOW-+p1x}6FIxe8kiw$NcDUEf9na>452Gs-8#ib#hl0DWgzDZ# +&)L2mEz-stqws`wP(rO6GB0ch7eF5&Z7rrrRe+Av-RLgeAfc1E7#yEOuU%+58ZM3bN}E +ZickhP%YIHegCCNwnHM)6_+X$n7bQ$?ar=s*9^>a@JHM&*|G($!8mtvnv^tN(WA%^8w8&^1 +c%h2TTM`z?R)K0g*Jl%~dc&NdyzGLm1D=aFRX}camPhouq-&UssxZbBimxBu@(6e5}@$e +RE`P%rW}Nx*~Ua1b9sD1E{UNJnjws7qm?2-Qh@dg{Bz{SCA|8Zo?It&CB*0PSBb^72zXeRooZ)a#|p) +WjOrC9iT^Y2WT6mB{)FSbE5C_5i8c3Mzx;r`}}#ISntMCf>-HyqL?(h&F8mx8Iy`$Z3~URk0O8gpv$rs|4& +vXy^Sd3Wp!ZNc^Q*`Pf;t}acYc-LPfmPa<(x{c&PQUd&g}BIA1OsZE1Z{IDhALGmDX<>u9kIGDuUcpS +f<_`CdGyixv{ti-pCM0O;RX}Bcd@#a*_QnehFD(e$OyQi5+;|p=~0+XZQ1QzvmKo71Jrd +do%UGs${`$^4Uf6wE0o;5SD2&<|+3E^bKV)`_@IDxOu9942*m)aXWl{FMiubo3hl{4gM?G{Fgw`%%Qe +1-mcMs5S63We{eI;to#2G$&pweI-VC{utKA^yrby+jJb1fPIP|02s^Bd8K{|$_ICrm&xXUZBBHbNPoE +}=jZ_NVR*96MI+#-_pr51GK!%MDBw>MBC&+J=2%&FNqTebq4rr9){5ki(aUk-p-i{1LqTedOhes)Z-( +|{V_+5$O_USeL=Li8uo{_2wR{GO`G~#ncq!uuPE%GS*Iw-`Jw2`Bw>DTz}Qq@}1RdK)SBVu>~WSE}MU +tAe~aa<%->GUOH&9!(10HF8z$m#kUM%ZP#4{1SA8Fz*2C`l^cfe`-XZSVWs?$^a4#Q_U<|)02KJ%;dSQ;vZyFgdzZQJ9 +n(hpJw!&Um8ST$n|Pif@N&_CLPFVx-1eO(a|!(NhOG}OW!qZfoH^MVdVg5Qa-(W*}8Di_1=RAm_a=81 +t+UV}B#spZ?X!Qz`KuqoZBc>$ne +cD$Gb88dP|M!qvBo;I_e;6D+HceT_|Lc+AGr8i0D)1UbuyP(wHkHRn9r))zgD<079v{!^;e->WEVMGG +$TI=EI{o01IE{as+L%-XJVmg&(=ehay?{>jW(n!7yHzZuClZ|s9tplnl;|N@J~>S*1mR?bH#^%5!&zm5f_5${y`0 +MVQEh(2}@(N-||##-9W~aeAM_o%*n}$S+)rkTKJcS@!`vh*HqVFMJ1=KBoT;sQ^&ME%kTW +%m}6yIwYk0#Lj$Sw?@X-4t=yl`iZnDO6#j|-KuS@?g53su46LUGwgHe{cbCozvzCSKh>G^S?_Pg0hH`|Fw8AS;m7V08$JYLwK?$JYYe&7n-bx}Mb)PAuxdVz>gm;cy^2(|gFh)|7k +C}CaEW^V$D(dQf<2%PkV1N#0j4fBPwbfl9=&qOw730gu1qs*{*m@rIlh}VM;8f(iN +6?Or>5Urc!B~cL>`p=f{>RjL9f@39+R{fV|=gJ$T@kE&z6y5nL+rBu1733`e*atrW)H*~F!lzfX!qmI +^OI%9RkesZhz5zc;qjtz2R;VoPOGZ74SU7|m*21tY{78-75_h%xm__Jw0iy%YYb|LjI%!J;HO+@okQG +?G}$%2mM3FNwvAT6#{rs3jCH3crEN<3*)o*_8vqqTK9E_~HKZBSldRfLORF)`R4&^sH!6a`@LV38qa$>Y7R9eQPMIBGV;3ls|WSCMua-7vS8?f<}$m9OUfKe}>IWJ% +omxB-)Y@-lRq2SoIAO8+9_Ju6_;{EOluQdJ5CFeyq18kGu?QYv +urD@jt?bXL$Ps!;lO-q}La|2L7N24UnVXTLbNAHxk*TqtnVS;CX!g2Izoib+pzQE;At&{1+Mbd)Rb1; +9Urj#37>3Ub97b3AO6t2Q@${8T({)D1@5s9(SuI-@*nlsGqvwVe|+YUS +M~@;o>O#?@NEmuYoAOtZq6VTzl_p40ANEl*7lv^@D-%QATHPcm)qr5ntx-=Ru(;Ky561)U8JNsG= +Yj4h^Xa$Tem&qDWnx#J{{|#GZ;Y{@0LFL*gN&Qok>x)Ym2>q}1mo9#X2y^xr~CZ8rUfkW#-iofT4Qqv +@=WQV*HV3Mqxy>FkhFi%bb2rEW3BLQ0{M%tadIb3;mzmP1>6oE9OxCmv2J=R)D6WTYbKtik#rMJ8j3v +!hAL;VvN_O-c@T2>&sf6iG{{tBgmJS`fygkhstkk0!N%zM%8}6iw=OiY9e4MU%RbqDd9;Xi|j~O)5VY +N@``I!1O5}8D}bN2uc7$WT=H~;yIzDqBv`Tb|nS4wp9O&^P@^NB}A3_b*|M9{cD{G1 +T^@6dOO7N3MaVx?Ge`yVryaLY#*+YK}vJ;ZeTUFcj;7KKb}<^RLpn*c;vb&cb9SclC41w}y}71P3n1QSJ +zkwKr)AyH8&F+muFM3{zW6wL)3=o23)D=X`@vh{6!Un|R{4cx#T&C2X8X@6*}um#YJ=YP(<_ZbER>)p +QZ_x-`!Fw8>NLnqLiV6ms47vX4~gs-jPQ +2G(wamq;I3jFO~R87^;XN`sII(gMG_L5_z_d9R1`%Z5`tb2FjxIKOdDo#2gZ^1sykua&ssu4#C+22!I +;Mwn+j?s&x7>Yi+CB2VBM%Wg5PI)HYY!b2$3RRIw7?*tqM4Z2q%_thzL5rvydh1T?x`x$yKl&a~wVHH +)R<-^9o*9)}%b8En2QY)YAm{Q!EXLNiU|ecucQ?D*dsMrwyC>pz8V) +-sq4`BCCxM=U+oS3N*`^Ya(<2UZ{?(Q}W3mx_Vh-dRO!mf`y7pdoI4lSaO;d-D71-Z_I!}B>j4p(#08 +xOw;Rbk`mF;L)PJO?-Vps}x(z~nFxs^qq(*haEPhYQbi-9cR|;;UGwXe(Uq@f2H<`T9xM3Q-wbA+jX& +KX8JO;stp0UiwL(o9;v30V~Hh1BE3@x=Hf-S@(`Po~{s$gS2mil59fTW@EfoBL;v~Eq%k!*+ag|6~E( +z0uFno(Fc3vUvK~OSGdT+{->xO4Lt6HR)p5q(KOJOd5>9cM?f_SY!8*e;7u{QLdba-`PZ63iL+li&-wcJz +eVmlYW#g%J;p6W7Q$`TJT0HFmBpL>;Lfh@nW!0wXPaXj+$V+M|fT}C)5>tfxD-PzOKcD6|-c}rciaD8 +Wj0kz3oBfN|V-5m3WyR7dGKLa`ay2H8hFWZOuOV=(@Y3okngQDrLsNIqOgQ!in=8#8twPx)Om@{b +W#jKAq*{6txA*M2S_j?cBm5$6+4xQ1s9Ga~G~P|E??vlCW{t;doh!@6-|uFJcMP4mW#g;d?AD>(tg`X +6b}(jQCUnNVmDEkTAOEKlT!T_yNlW7NM?y&^FR& +3RDP0;*w=wlxUFlHl;>`ocq|Z?Kr`=l~^#*n!{j*=iqnp@KM0U~l=aSYccNauRWv#ieY=QIIpiwuvZ9LI%oOQ@NoqAXEXc*5L(4VP +YBXHN@-HOw9*8RStVnd(UK-Qc<2S5RtoZ^WX@ak{?&r0CVz1Gpx +ZH;WN4dwV&tv`sJi!2f>sC(w`I!Kn&y;$%Ly8OWq7|AHW`^`duaf}heXHa +~&-T^0iQ))^RGQ?)g@(tyO?fom7#U4UclBP6%u${iX5`d(uXohk~O(z?jA<7|4-{+uj24oSl4APbp*+ +ZOB(QMaF)QeLm`iV(Eka4g4q|(>pv+ifXaP20XY(%Z34YF`WT)TUFVIc9aInzQ$XyI#@b{dv6R?P +!ZFYqPNKr6$L(he(%9nI!-XP2aNTl%ChLCN>1N;}2;+aBK=mjC+q)kA@QepdDkI=` +PtGt@p;}zUy&WovHJ1l7Bq370p<(y7K4Q2o9op)Wi$XXAs5+Cx4}qsIh9gCiajKtcFveM+sYldq=ovAkM@Fp0Lj)ofv2gG&lx>sR5Nu3t +X~kQU-1I0eG2t@d`X_^fQ%TdSR3>7Yd*z?+mq(yFY9S6`n_RZ)EIqlV_^>|FDW)otIa2r)Q<3Ea3`Q% +feOv!Eovb={@jKLWT7hBD_21$#Wwgj>e&{7N##P&`*17AEobO;>=44E1u6!r72;V^XUx$Q|!k|*#2AF +@kI0jzT;JkVe_%S$pAWnkhqKS7T63qBkYRh$(a+*nRP~}r~dbCg(0-%J-{|?Rj(E?sn0R=?SsVi-U|D +{TxBjqHD?PKmBDN%d&6o^ +}S+qE1STs*wk_)H@n9{FbikE>{6=D^`>!k+i0!*K4ljU$+d#hTksa$;~asBFap +>lOoa``b)Te-T`urt`{Ypk@i8aF6-B~hMiW+!g1^~L3Oh^wN>9^7(}B>F;EGCui?=$Y*Qn{=G%6+uC{ ++A!ph0g+O1zH&%3z!xuzTkyE4BS4X-ZD~K^_`yT$RoSgkIKvgn_S5wbw*>>E)a2}&*nChcY9UDiNq%R +*PAbvqnJhI)DVfGfd$r+hDyugJizD&BA^2Zk{7>h&m}oCgPH2)o)NS7D3^7P2oq-1FeW$NMI_>n3K9m +mbCU~)B&i)}a2Kq+3IK_}qEsmdrtKZ^vlL%@|9WV*+nusGN;kjCI_$1vTqV+i2>VE6-n5l(-=gGFD!Bf&w=y9v_p#O>%oa_~bcjlX^n#c!--`C~vO(zu1r%aaq0Qu2O5 +N=dC{nsk$o;tA^*rc^maHb@^BS&w#l9(Ml84fFz6g@mFQty<~ekeY-VdlEgdo><-_j)yqZNTCqT1G|h +63#5dtb&J$KLC6j;SB*{BM=x=?-6?}P$3fgDZ&SkVo+xx7T9`FZbEqM1 +sgLET#qA{9~^lrZxgynbSTUVifdBo&@&cWyN#9I*QsN>3y@{ZRFV7ob`}n$sW!$e9V)!(&PtTq*Hm`; +cC;e=8=3$r{(M(t`XJ&}C-gOAQ-pqlERz^|}fa$CJwyUF9>l{#yQvXqN(#r2}|PV%|BZ$mBYtQeSxjW +UwqAeTylOk)#WX(uf!8qyV96&S{p1+{)Fb3zoI3CyF@;^r+7Gega4lc@lqo@Y +jRmDy7>qi*u|@AjwEz`A+JmIzGeh>;y#g*cJp!7b()R+pCrv_WQ@j?YRR9Kq$%8hBL;!=pcf(q;uKXo>2&)!&a&>j(>N;J;<7gq(QcfFEGYL729rv6>dlM_}xZ& +b3z3X8^B;l)N!3M`=uVo|Qe{Wp{?z!mRNl7cNXteNnFR?PLxkE;`wMT|fm$tqi2_rsg-5_^!bDzOcVP4yz{b|%+NYJ)+_-Vf^Fo*#gJX +Wj4W_oQDNPh+VtKlXt%ZRnNc%ujdZ==Q +p>*XxF-sb{{sw-!<;F(T1O~*wTpQl@q$!xP_d{5rD$TntIeNdGa4o;#w-JRe&xYiL^J~vKy|A9tt11D +;4VHA?3`)OTdj+2xweY`?-K*0fXescZ1Rg@-*Vf3v)eXK{V@P~r{OWqUo_6y6x^6gTtya&wpIT%lUBv +@9PLwx64ygo(Eqdil+MlU?k*gbmPN`)e_C@$~Bo@~oeW--}Jd4v~tP(bSChcV|+^Z<&>zFGcdU{CtTYG73m)j3}i!Heps@@v}706k{uT+z5J!x#*r84Vu4Go)hdu;O`CAyrOH}~R8~THZdH^Ow +;Sja)Zy~zd)tS`H#gzXNDufpbZ#$Iiyt{wMU@bkF16IGg$l-jmVj&mF7MLo)p%%LZFUbdNYU@Ky%6?c)HUlL7km4!Q@qGzrT))_u(K3>2_*xDY<8Ef`>hbUhZZq%=WLrMYq#Gx`wUyI4- +u?gXEr@)Fmb72_YwRaDURn8UI!E;(0?jCqu5*k17#>tV;@UDxx+sNMlQe0f4XM;CHWs5f5gk +Kt6tb>lU~GxBdvPqXxiVM9`U)Y^$2tgpj>&mLoaG>!6M_b4}ZjB@qWqtxii_YfB4Y#!zHXqdvI#P^ou +@g1YQ4vdnF`l^`7Sp)d}=|PqpYzwS&?Z(8gy(>DSySR24) +;DKoSsy#+~!_x3b`yZ4g*v +|m;>oSN-WeujPsQUDZS+QR39zwmZY4}id_6Ew04l%Od0gIYz>=e;x7eey*X@jPtvG#R3Jd8vWQY0Bz{ +d%B*PjwBKnXjPf=uj5XFtjbyR+k4AyUw_o7l?XA&oFTX#ZbnE8N$G4tQ192h2O!ogb>5=akqBk1F&q# +t*g+#a#xkTw~=RHpk1v>0KV}9Z&;#3DaDP>Q-^*>cA4*xmwVWJU%AIqI&}f;AxDvw9>7#Ccc@( +l*PTQdqW4~ScBX^+8=|&KGP^w2GWh)i<&hthJ*{NqH$>r3IHwsfoj~v!sbGCP~a|>5_WDn3kdDEr;uG +n_stWUY}Xj$7i&blL@h8Ay7C)nKjG59+IS5rOHbXX-m1JJr?~XyfuotUpJ{kyc`#JX#MfPzMh=i0F&m +QLrG(9y&L$;(cvbXSsxRVDV<~ho9p0jlAGw|Ft^vQk@v$JS2f2kz*6sAVWhhQ$Tu(@}zeB+ukT`nfn- +;16a7f5}wDiKB6vn(}rMZ4dtiAh0poge=_Y-+UReM=}p2k8I%c9a0))=TCFvE9u`_onPN|xh +P)@rf|S|{;bxXMi&KS~Z-W6J5BO+~4+6XoL;cH}?Yo64qXrrm{NG0Z|Be2Cng0JP{r?jE|04arbzkBf +w`+c>*pd^4$_4P*1(+?SLMM4$6?T#bK%Uo13o>Js6zM{;)LJasEvRFwDwb1^8i%_)e$M^8E<01);^LVYc)>AEizN&^v?4g!_UodWDVW(5*o*UOzw-PqlgzJeAW}=j +A#nY;EA?G;NtOLyh*SeS%7-(3|Al|g|XmNm)O4t|(58Y(d^ro`$n5NxZo{@{=?TmJd8^HpPKBZ`d*kk +hW9IApEhG}3<37E6W609yFEV$zCr4?29out<>OcI{{mPL%MJZcx^x~);wge^a%8X;UFD%AzY?W`w^5d +g=12Qyor91g~9G+eFp0bQ>|9l6jQ76y>dJeQoe9`2 +D5_TaOPuh22geg$dcuX7Q2B`O#MSoAdXS(V=kv(@UugXE;X)CQysK+h5-V?FjV;EzWQ$>~RJ#6U%wj! +O}Mr$~o*Kn%a@eG$bWrn$yT3}RMZ)W!?d*VHt6+h;PwQw#;6*I%HHRE13wYPUggTMM%qs=o%(pb4Ou{S#W|vY(niH~ltxk +gg|Vgk~wtAEhw8P-$o|qgoru=--64tyIsAp~;LoZcamD0~_&ly?cC{gtAMhrN#C-J@Kat_wv_;8~qc7 +vKs8>Asgp~vPSf=E0NMCkfmqV?ejCEq8zhi_76s@a4?#J(JmbA^k_F6HRzyy1KP`I&oZXep>30yYSDS +YR3>8zrm|M5FvfwIWSVt$x6$l&DnERiOrCX}D@afdsdYpvNN_ZIxK$FZAh7dtRgzjksqGcyXw)K2Dd9 +Bj739k*h`1&32kXb^--;z}f|#*_K;)bmjJ80yP?n5AYpx8jzfY^DSm{(=T0hX@m$UkTx+rz8CRRT+Zu +Mj4=^=evk-kl6C!-x!f=NcZ2DCeacJ+`iT0>ZUGlS8d=8RPkR&&VJ>Sqs58*x1R5~l9$`jJgqc|s;rD +kWdfkZ^f8L-g`Mh76Z`GbBb1qDX-3%`6h-%M00?6Y@_CNtM54NV@zPLo($v49SyEFeF|+$PlaiHbY9} +9SdErPRP$O9N(Olw=x`i4|x;Av44@v7rGv$kV_bj-H%+r@a=Sd%5WTy*Kw9L{h&BPRzkya{o_@K(fszK!Cz8Z65UN1ajf-xy9G#;IpGKBFV=XE;8(Bky83eK6;x+uC +2c*~W0Z-YsutIEu^idWPdMO?ef=@u3{q%5Z$RPtIXD-ffoC8D5IGnc;Z)UruEBCdA_yz6J5&49`P6lH +t!G9?bCVh=x-f(*JmL?79 +}*>G-qTlW(Zg1)*3rb{sX(-70OVDmAviDNdwU~`h$3}!azVB@=q+5|J3OtATl`DvT4rbhb~*_43IG-eY!-_-$u%BB4n8#L&-uR^HcM#m(V||Ex+bUHZ$${8v=i#pO_eGyHONViYjo6@> +ydl(Y!e0AakWV10c|uDKPLu6lZ)%?oPpb;`%Psp{(dCw1YSk@20z&XKDHK>_ul-%q9(DR`_B=SF9Iw1lkd}ow>vDG-JZi1QdFqk9{;S=TvoG^1-2Y3KOy* +xh`v@jsft~$(KJ?oM;&P9Uxd(Cy?1BJMM^t0Po4}KYI1b7qB!G|kf@A+G{m6?M|Bq7Kl!Ib>~ng)Ixg`hsfX)m7sR6x^u($Lnf62IKqc^1=s@4>Kio%W*+BzIvG-rE%IGd31w|L&(~W%*%6Ia;BJ+So(#)@K!El +jB#d7~=RfKn!&J>LvP`C78}SN0_B|=uDd)s);tJ4m>&ElWXo(6jP;F6dpl?oOwK>DDUEFzl3x4An8G +RCh>$pdEeiY8Y^io8-HtKE6=V|`!R0nqmaiAJ&f-(a>)8%ddj +eBTDW}2;}{s5PF91f;{^Hru_Q7XYi=kcla=j)B +xr;sri!|=z%Cx!hYSlKT#fOHAP=GR~12f{Y|S|hdPu|%m4Th=+ +K#BETonMkkKDZQHLcI*9AD@WM3sr-O~M%{;9so^%u$5J1=sE^}Nm`@+VNY0Gq?(>*?smuK!b>F4Bk7M +qMF89As_bsY>pRrh*XTaf^huFsUVDNsC>W=_&T2+5P#8Fa~fF~!+6}^idVh6swb05M8`Y(Qno!?qy1} +136b|2lI@ +4}o=Z9$*mg9`~K#5g7Fwm8C{m9OV3O9R0}9rw^n37f<{Xz4XY_B__Z4vYG7-H4!=<7|^c0MqVOA1-|Vad5MPslQX%h%{c-7jYJ<@7lPRIPSSJs4OWZlhr2Fd`WC5*Qa}Di<1nE +6IFZyAdI=G9yQU70v5PeRl3iQPS?~^}!8eI=|t!qTzNpD5{SBkPLCIa7Qc#-?-48X{qO`~GF +A3CXjPO^$o?pqFD-w?)DYVT%J*6oWl+3)yVX^pEk*2A@ERZNEPgdhUkFv+(;mfFz%P3n9N!GYhd=OaY +--99CEc(=)WzdypPA^cybgQ_>NtWxS;qeJk$tIjlro`C+^x +Tjl)~h-lL!uLkh$i@Vpa(Rs8)`|_%^s0@$_*)qTPn_E%-3B{b4q(Gf+^FAf4C5G+ctVWH!AB%p8<;}W +soDwTxr@;v*kZzJb!7I(l72uNMfk)w*brt2ncN+p?t4lBX>o!-T0uM;wR+^R227_Z&pHw314I7Mo%O)2_?&yVSHlkJ#`B}P&?#o%k!yCjneDp9p2E``xUG*@zS$1blcTw+SzYQtMoaJVQCh!#+T_(=$2t%UnmRKi)x4H0U<(r#e=F>&z%O0&w#_0k3- +}$`1}fWi;U3zSvRgfd{Szam}~V(Oe9gC>OiDK$4g+Eeh^#9xx;vEWW1k+usyr1IR96w}5P{)IwoCH>@ +}6%)pkP8)}WdsdOVGBg))(k#g3PBk-D7<9QEm>tvi9@d%;s<50#2PHywS;}$8>SCr%MKtJWd{+=K(&J +IGY0!E?gbv-I1KZLvKEIY#t8@!@S%KnM|_JH-hnH~>Rl&;jQ_d&Gmq5|#6c3c>gfhyT5^i<#YL1T0^Z +hEJJymSAL)At<9KAR86e=C5Q*+E3_kn1nLMs*t#eICI%IIp|*~f*d%|YlpS*isBZF-0ih`vq2=p +qGbjnM~{u%Xd(3opPEuazgXt=;7WiM{?>mtt3%V>1YLs%;U^ucsP%%6YHOb@voY6b)7hIzD+>bg +g=^);dhRSPRS(CWquv<;~wNcHK>-WgHMp%h*dk>2i>7TYQx}sa@zO8>&pxmIMis$9k=xckHdn~Jk!wzi_I*QMg-+761FXLMBDyj|C&;^wLU+Y~nwkrLqFskr$jB&GcBY +1%nZspFqh+)UXA6*t#*R@^+5DQ=$Xrnq@3)ju}%|BmA3*VZdnQQQnRLHJG>C7!$D<}-ToPbzL6U_)Vf +6OE@U#m&ukpu5%G{R+j+r%t={3IBI1ZvOBwl<&Gx+&rL_a%?w>o3}ppcPnnbBjE2)+`Nq`5>pj7Hyc6 +1=w5NNjjJ8Is^aFxN4r+s{L#b?ikq1VVif&dnwuB)R}>iNsOILecq`C+?%U%?!i?#`*2mxc<-tURnE&!DoR(XoFDlG%lwB_IT!uns+GnvH&xEG2US%$u +cexr+mH#2jkYdSIp5~4%6X=nDreeps>;dYe@B&b`0uK6ZvKs{a{f+L<@}|p%K2lLD(91`D(AYZsd8qe +VFUf+sLHu-hD!u{c0O0-d}p)!eJZZT8Oa%sdN+`xP%aOVKbfz}`~vFHnFl0}M-orOz71y+Pe;;WEFQi +0Qo{O2unrj5|8ofHJmga5eE)jVr7~xnSH^dIgZU55|K{`gpDTln_p$lkGMN8CTE&GO=YQ+Fp8w$mp3N +Q|=6^k1^S_Vj`tTWNANl=TU2~srZ>1>(9y_s@7!ByjgH2)uVU(>?!zIDe-hD(89YQpZWB$;E{+6(y#P3q2i5o2dVu=ST!X>cEc6%M#rQN=VNw ++XpVnPcjY*^s~oFq{`?+YnEY)ztLMG0fX)=i`t=DxPs3cj_*x-h~GQsJR~u#j(Nst>+=(^ttj=LoO-C*g*Cy^o$Ca3@f5;x)k^|`0X34gl+AkzR~XXx-%}-3XGp=J +<<}tTHaNOA)4S|K^dCShg|XIwc555nfk=9lViWDx((HKohzp|v3+4;h-xsw=5@%~rdXJ~dQUH>!by}v +Nz_$I8a$=nGEItXqSr4j5SB{JG|8(;@FoGc@p(q)Ks|=dNm`Ar;zgv+oj{CBy{iF92#(}i+G^j=|6V!B#e3RL;L8`53@HToj&|Cjb)Txq=aY4anLHI^|3c;B0wXOo+|59ojac6!{Iz8-ACz +r2Ls3yM{su@Yh{t!})gixkRuX=~KH(+{`6j+bPkttzniu)Z*#116pV4|PDBQp@1MRhuj!TCYWH{N(10 +>of`$(7%3HA!C82aQ^-20Fj_ztK%2W1CU>20iZ%Kmz$W=smPf7xCzoL3XNu@^ugA#8x+M;3tqg9exT|y|^q)PMp)eaeFk4KK7L(NOKbLqMv*&mfi9*IPMH3x(eLh(Cti +)r*Ej|Ce$pOhFkAF@iI~n-QvXkz#l-~m%mL@Z`sM`04-hJN+d$XuqM|{g{@JgbV%HvN!KeOrWkx^{95 +^C2vN0gFk~np4Tsv*t-5kcr@MTRYh}F;y?0paiLDir(3OW#Z>}4CjovsDwG1Z)X*zWM$yDD>JX@$XS0 +%@*8%|73qlk;q@nK96lw;)ihMqvzpOn{y_wwo`{mjATATE(QThy@x9%a}?Y25Oy@C#}xbjbVB(tKLKYe{do`_x1$D$s} +6Ny(z=oONK()$MKD8DH7LMSw}KGA2Wc7ZCPO()b)orBO17;CPgagnd%;k&i&Yk82(*zcrEX6b_T342T +Kvso^=sSwb{OL!(j8kB;{6Hr~&o=N;L&%_vHHJP4O!J9(nga)P+KX-hdhaioOUxJ$izZrC!YlVcdW58 +rDLXA=1L&HLySI%2u9-~#Nh4DS?zbMr%6=^$GB7Iub<7ZWZpWIiZRY6Z`LP;AjQGW4d>@>We&VgbsehJ(2iWTyMFVg)}tNh7Kl?HTFb +n$(R`&1(tV#7E1&SBC+ssydPas`ca^zH0S3AA{alZ}mG8L{i>vW7f|dFsbKJ;po*pi%lBIdr2S`J_aj +7o;}R$=~qdPHRf`cjz_w9VC4U>aDED3K;hS4DW{^@xFMIdGh$UJYD${NdL*>1M}FWJVqVV8E1#lZ0s| +*P#fKbr>9!Z!MFpHf%Wt};P|D$@at#=v8c8rPdK4Gqmssr-XX(3u5`15)A3PV9uiD*aS-Tl0xyhDY`s +z4v<1Np`h#&wXxIp|&p?kU)vpAf1-edK^7t_c-q!OU_h^ySwHo*zJlO}gawm9QB)_S`6l$nu|NsNE?x +>jNVhF#|B>U0{GLN&6a~{LNkE1AU`ao_jM)QPA7H%v<9lzo~N;*BOvRJOD!Pq`~~)B1{ovc_iDa8jkm +j4dtsm``ZTsD}~X!$L{xzhaBV&&v?^4@vd$lyDLURWew6v!*2RYG-UHoBdT=hMpqhiDO~veHdaA>XHz +xO1-a@+)=i)mfmE>bz?a_TaenkdC~2a0L(&{gmzrHyEXTri62X^nS7~r53D*Fcm34hAk{7Ya*N<%NJ9?Hs0GFA +fHH4b^QpA6AHd}b6mckW;G=U`$lMwbtq=f1Cw*kiUrBI1M)t2y6*xjB-7Un7BBxy&t)oMkwGYi3K5FX +a!$Yn9YwJZm2+JQ$#a0^|XgM2EJ(N@v;*FWW3f1!Y2M$YpI{hW@ONBrmjk{hBI=2c}HyL5@6{N#3AC%W`fI65RE@U?~?_Fo_E4NN}?f6X(*E1~?xJA*tH +&G0d&r(-<*sdW~Y2K?5`&QnmZQdKKE2m-^PD4L$gIQ?h>~JY59NZiYKRD_hG2}X^(o3BTzo-oa%a-Ol~4M(DOTN=1{#TMKBPfoE!!dNvC9@1 +|8rPAW>X_jfSy_7FqaF`Ydi&LtYE1P@u6swh-Foc!Gqel`$!p|5=7G#4)%F}ckgsqUJfyhSJ=q6JLAp +7O&Z_D6GZU4;s7QqX$(Vi!zm1LfUplv>7Y6yQeW0_RXB;_)*a_(%djKr}Xhikctkb{gq~KHhCU&->;W +D$5@d&GLw+U~poz6Eq;r$jUI+5Hm`snyaBoT|I6&)IBL_<> +F_%h?341W~~Q-^MPZl7jZnLAL$Chmb2=vEs)6aAnM$>sJ$ds4U)_kZRrL8VUY7*NkIz3=v~t0%~=vjw7fa +%AZf2VIID@*rgu|XV6SPl)qf_eHZoUSe;4e<&JlYyC{tONlq8G$VuY&UDXm@w6J#-6LY$?xZ4V()Anul{-sg`aZR#98){oXcSWhvgh@p1+B!%G|n$1*sW!y7o9!r@#F3pp(1Fg% +_?9}b(xG59wQ&vJiXbNC~N{&74#4&ykS!r`qPF5_@BhtF~N7Ka~j_$`O69O}n17{g&AhjTg1;n2q68V +=WUxS7LeIo!eFUJj3P_%{xJ;xLB8$sDF~n8%@&!%_}6a`+gByEr_>q0C_$hvA&w!#TW>! +*mXFIb6nJIft7$e3rvK93JK{ir1_9dzIJURu12Z?daa!uW2wUk%V&1W3cHEgK3X5*!ib#W%l($x^{Q} +JvRQ)EQB~@r(l@D8dBerg=(0sq2Wu@7|e!0=-S8}l18SGktCkSp_;EJHxM&PcEvr1+)PX)iOe8IYAe9 +s1hN$VCO|yJE`K@vZv@dp9@wAWWwV0+5o$l0+K=Wozza0jFn8h*e@0?~oLV5AMex7PWq&g%BFnn4p8> +u_a8qq(1GIuoXP*XQCyU`L#={@*n+A9R&xdL*1pmb4-wI*#NdY&fkSs7~lRR#o0)7{Pjh))N$CCx|wA +-@ssQFj(tL9V9mzp0nA1u8Uu6(HJtLdugU_4n6pB>zCcnCFrnEQ6SG{`ynD(>WO9>kYJOWx5X4Sc)Xr +9l1*-F(cZ`E)mD(Q>hL)%4W()%etS)bPMp!i1$uCltFFDhGZe^eOPuBeDX1jQ%O3b8<#ALn^R~fwPR! +l5JVK$l_v%n~RopFwe*qi_kdRVii>fgMG2R7&1G}UO?lUW-p`_Z?M|(u?|wQY}u}Qwk)#QvurMcP0K2 +zMo1Ua!uT<6j1%L-xFGxrj0@wz@EC^7&JyjmoGcp86k9&WfG&ATHGws?97x>R7fpn+d0 +eY)n`>DenZtaqRAzWpL1`wtkXA2fJK)X-~&4Zrrf=n*4Fjg +Gl~Ol;iP8^*DQ*NG-I&;?Sv^jI?McEdt-KD@w*--a3-~tO71w2te`Q1kOKm?vy3if*1 +Vr|r)o|Yqs_;Y?VL))1Rf9`%%SL7!Xw6Uq(xMDk;0la6RzPj==3;Mqp5(|H5GZOq5AXls(!Tv-~dl^0 +LK`gYd!xYVcVX1PcT`rAtDfOENB`O9ii}seRH^Tk~`$ju$BZbiJ_3(cdE&VbYLwj84o=;t}AY49K$^B +vL@u#he#h*`GVLpV+qPb;h>LE2djUU~yA17WyfIlIv-F1=K$)Sr$!MrPD}SHl!u?sn{pz$#578vcY5{*HY>sCuF*UQBh3@`p82$#o$GsytG){%gh+X#kWy0YFw-wWgTMQa6ga^PYQp*Z&TGU0LrI +H@YW5JZZdsY%Ui@=^{!!Y+L^h{^(4%7*{#eJgM~SssuUR&|?h9A!gasOa +_E~h2Edb{f?y&L|4^pIza3+B_7Xr +r;`xcZ1C-KL|)|Bvub$CPp?{j)liLXE$@og%G^D4z_c{cRo{oAgvlwshcF8#qHa2QjbHl>qTtOob4l{$2Q!Co^CoWY$<2w}+>4tVf|xm+o2}g3mz(w6+>e{L2QqVn8Xq@Ds_6$X^8jv +sj++On>G?CWUQLgi2XS+$mYGXbdT_HU&n9y7N;QAne3_fWxmn@nR$pdLp>5wr7k}ON|a{6aHiHiPxE)Hw^8(ukco7jRRny1K9_QNgT;XHEukE+9R9zNhU=V4va6L3qVcD8h;4$4Uc +>3^5L?-`%v@+MC;-$4|7nm9Jbj3dN3d6NaPNg=usb^n(nJ5<6>gwrTPNl^pwT4nR%J;1A<#i; +HL#2#FuEbT4X^j@pbXx|M8#xiofBmzboCY{1c#NuJ%{n#a~AsWp00(KltY!ex2K&#~=Jt!|MO1$^ZYr +@5(yO`|sueP5a*;{dM2~P5Yn6AN*_QfPePy_sWldq44K!a(DZ~Mds!1X#S(+Z7+9c8~T8w>sMN~&QV@ +**MF_A+#qeNy8E6@_uhB^<_8{pXv@Qo{Auf>k3GKai6@_W`k80{{M_>|y!g_~fBEb7S6+Q>$LnwG+_i +hpn{U1S&b!q$d-v@>aIm)S(BUITj~zczfAZ9Or{DkJ!!sY9{rGR6e0r|ov(LZy@~f}EksH5tp8xLqAD +S-w_|wn7G`F-~y!7kk-`bRadV!|<1(-jyK=VIc{{QLp|LqH8-MjxkL4VvI4RC7@{lV1#xfwp(zlkEa?#^a`C<(i-p|bUz0&rn#0(sOG<m%E3)bH3- +twA_QLEui*15_XfgF?S +6uE4bemt9mS+KLMFd0B-y1s2;C$t6~3P%LIv(-7~{rH~6f)Hdb-$T@5j@W(L3it{XsvcR$+zt93aRZ!e*Jj?U)MN6?YE8C*a$`zqR!$ +#YSZKD_E7ml_RE*qu>?!;&9e2A%m$9!8+;ZjSXsQPbD$6{NWUzkOS1XT(lM&4mB5-ob*jZV>YmFbCBw +55e~Ezbt?!VI_epXQbfi+_2(n1?J>EN0omZes4#kIe +m-XdT%&P-X5QE0vv7c*0$EVV2x;#+`&dFvbOYKQtR>_YV2qywTWiPsq +UWs5oOTRMLtJ7_)F-D$Xd*UurF|EL8j5jGX*pF+;o|Zj?1=5%~i@6mCO$X-Th~K+-ENfb^QBs}HIUu& +$41Yg0eM03SAhkj<^ke?P!SxtT-yd69l&dRxOXLt`)u#@BZs)~6e<~P!tL{1K`W;rHA^>+sRJQ&?xE=~VH(q9Z9{d4?D|1>| ++AL8vlrf)-^`mpK{ofpx?`4Zh2Mkfq^0EVX%@cl&%AMQ`Wfu`YU0VEvC5I&517AurHE-9@brvN{@pgoMHrx)oN7espA7m%vqdD2jx@u55u66w$C6zV$C)?S}#zGr6zaQCFM&3^q@90gJ&1u29_j+xAk;w<#;nrg(*g*yl#o}r|7XCQ0OrqBdW307mXXPc& +^`SAA>3wa|yb2W1ThyYMlg*1jF&A- +=6$##ir!eLvE?2hcnSXdXyH?*p1+Ueo*`uYQzHAt62_1nM|sOvm)rJ_dXaUq7{sG%grRpid748i&r}a +RHC$AUvfx<(nYj8{nNZ&O5fSYSx!(X*=}8dYRlleth$1NaH!+=}Qc1qWnozTwfCPW51^GhTip|)jh2t +nZc6xa3w%CL8w9#HK(=|3?o$@g>0>;n?pa<{{Yp*ts7&`ur3`!m-_5}A +3;FVy~E2+nQ{!Q8jpL(xqb(|Gk^&JA`4ko%&0aiLbbDr!2Y4?ilVe1?&#uZKn;d&6=s{!qN*u#VL7~> +zKnmfbJG)t)^WM(bH5r*{f2ObC60Q#UlvwAhD+@t#cst)E$hX{G`l6(7h>tn|-4p;rpJq&&95kd~BbR +7U~>b`&mzk1(lZ>v|PXR1exN{hZX1dyR|cX$rfKMFg9VE@P{@5a10Bn@zW5$MO+S8r}8Cl$2Q>S5gw$Urjqe3^drpdr=eyom}3LTU~#Nwa88_Na9p +frux6Bo^}?*qGyPE3@gac_U*Igp4Vr<0WS|&A2Id4qztw{bY##?xyQs?stjoURg2*-EWpYioRfcdkL^Tfy(DlI(dERs}ERIHk&C(pV$*&I7&R89fN(h|X1nq +^s9w2T&Nw$+k7k0fhmi#GUYg7QtEKA?gZ(aI&W1@k;Zs)+{w&_l3fS*O@6kiYjRZoowr@*_zu6fL$ST +fPVxDVPl)e*q{_59tD35 +>C>&Vho`C7Xjx=myx3w(wONXR;m9>!v&4eA`A{uc1#=3Q=NIMxucMv0sA!4ZI>lZ{vkOJT1*33uNy@T +{cAEvNL9~>JWGLFPpulrZ4^tr&G^-$gW#=Lr3Ug*#^9z%T?2zvFKrLLYOD)Prs*xjj0^QC0F{NzBRz% +1PNVB;XTQN1gPyH}1g3*dnFBSchLc|S8FoxZTA!a0}ARY+ip9?w5p&SlePj1yrDJaG$vkL4MG9OK|Rn +skKqSaiARCVLRBW^7=Ef3fGO+dAD^v_sp5~$~Xe*0sS+*6B$Fr0pW?5J@Y-8<-^%hY7uezC`AV8S~P-phyJdA9zJvSE^3q}s4mRlc`L!e +1ovuqX@Z7t}-jYe~`Z27q0I*(*Amz){7jPf%*+V}A=XE3fZzJ}HTaw@BTo}+o>KfnL~{7S9toL^^ihf +^ED+uWEZ&y9RInvi1)^rv!9D~h{2>c3Finf_z=+E5(+}wKeun2WL-e7Kr=cs$~5A6qW`?1_?;N~Q5PUT@{ar@aE&g1dl!qYC` +_Dcz#EF|K?hfu=&f`Hnfp{YLF>Zc>=jUmj-k-VsPM*Kx-2FrD9`4I%q0;Q +%`wQ;&$K3VZ{{HP*`)~Pmf4GjhcYpZne>UI$%HRKW9_aM@U(OP#$z0y@@S@$v)6hX@u3NEg5O;s}9D` +3h!(iFt4fM)J;+j$lp9B9jPn~^A-%b2wZ44%I`1&98Z{Y9^@PFdTFQ4p3zIsxAa(?&muX%!EGhslPdG +@xmdb05B?Ptea>HobmpEg`1p48iVI7D2IjrXJEe>~axP!y(96rb477jOZSl%iARUC>O7I2u!VLFEbhw&W7a5#cPJ%?Hj +TfO-`D6fw4c@wvnIc(tY42Sg`)^S+P;dTzUakz=Y5)LytOyw}1!x#>SbExMqoWo!awHy)-TfG=;;!x( +Wfx|N#)^WIf6pA~pZS$f>o{-wf6e{(Xwf +vQ>+qSOyuQPEJ@w=D$kR(r;rG-OCgbMx?idf(`l*y&dA0Ok`sdh3wg102{J%T?zc>7Ue*Zgvzj +uGgqtnlm|J3lUJ$XOQq1xUT@pinvnfy!PDE_JaO#_D|+5Z~2mjAxw@vh4L$Do?m&h18BBWvUR8kz3x^ +Dn7L^#`*C8+;>1X^05$Yxp7omjTXz39tED4M_!fZ!hSJ!G1Hq)uB*tfS00%argoOKM$~17|1h#hXUNz +2V^$D5x&$H9g`q~BXgG5#qy#bZHGCv42IgapI1Iu$Yz%Sv`UITTC5YK=B9tKHWa)2c_gWL-^!s9oybn5}$K7-Mx0ATA3MrVZbOqiEIJP4 +nh1-u9N(*WaUL!P2F6h1!(;syJc0B)E^$Y#Jd0^Bi=#s6hGAq#G0b(9Hk=dG-ay8w=a>DPYnKM`QoeC +9s~VBZWVKiEeC+?K)ehH!rdZ#w{67C_knZw0vGHfFyH;LL@P7T{?Bs}?f*O#q+ecr`%JOon>_90y+}; +PC+O$Yg1W0Ec8TJPP1zi(vi&e$E5zna#o`0({g$$X39&0sO+k@_!!Sz+C1>5Aer4pgG__1GMD>p8zfb +Y~gq-z}2@iycD2z3HTqOq3~7seg^v;07n)u8pZ%zRlv&&FmEZ;JJgp5uob=xtUG{f3t2sG0l20J`YXU +o0q!qimy=f5Eeu5H_Y5;)kyR;|CaI2fhJZ56~ +a4`9Pin0p7Np^8i4{8bZ8~Cjmab7V;1HHh>4$viR!&&M4)5HNYoI84o`VFjazbp*_H_CFVy4Si2GO4| +p9wWh2WoUN(HBiqUf`z~(KC|62j-9|0Z%9N~^fcv}GYz@LDQV7~?6v8{|I^#JEQ%IKL6F!V7-Lxdl~r +-e3t2B7Y7mToY>nUAwL(*PE59O1+#SUd;|o@D(4!i1+;-#8KAm}g+T0Q)$A!=Gh+KEljrS-J?fa2(X*Di$ii26|AY8z(Eo#O>g?Uw+2m*e#SOWuG!3he<--VHPY+z9Y2d=mlx8^8%~LVW=~5#S#9L<|ei>s^p<07v-aUf@;0e+H +PjkBuV;Z{N@C3jiM5&*|Ref_(6zwcg{eYLiiVMkFbv82*2Qd5aK-nv_}}pafIVIj&K&o5iaF8-j}H2IKo#rj_@On;~j#_97 +l-feGx|(%W*s_zKG)p@mw?J4dEefkMJDF5w>z1A)d!Y9N{RAIsSj?$L^ea(*42VAZGUgkmt1R=IXzI9PQn19=-$ +IhqjyRKLT@bySe0B@bA@bZunk9b?B;Q;Rg-5)h#`!bE1bYk>=7}1HqNQQKLqYsZ*ztdGqFx{QP`kx7% +4om6pQ4QnF>s7V_sm|C#LGy_-~5SCbDv{E)P@wGqB#S4usDp$Scaxis+d^5 +v^mp@$!oqnA%8M_a(T7R*{O`~YFWynH#D%{@`e&6k;b0oY$gGsJ%x-0=r~*0T7SxuAvmKYH}UL1xiH<3ES#Gc%;GDAI|em^HA&{9QhA +@f?_%(Vgah-Q^8OFCT5jIMCcSE5igHE*C)jVD^6NQ0TQ=kDh=cj^&UZ&3IAL! +e-wN;_cl>Qin%$(6bRf>OxIn(%Q-k3AduIE4IOfC4Y^1=%*kR3aAP#*u_gAd48Uw!4`b +1NPX0J+h+eWx$h#GTeVl{a$VC2QaP;oaONMPw~hQSQ5nvi4o)Lg0iYYrp?x;TwRgeeA3Git=mj>O)`6 +nKS3zTyxxu02eNqcE=1wd3~X>rgGT3^XDuiYn7+oeSHqbxBG64f32c?*V3|`P%gd`<`@G9D#5-372?T +1a+Oc@^G4YS56|Ytw|t`#mQvjk|eUZ$Uy#NOC)cWO&~9qn#dz%i^$F`R& +wy3>7@RtC1m(J3K_9iA=e*N$W8kdGWM`SCLUKv#xaE?omR;7vkIAcP9eqc&G}p*^S@C@c7s9|omWU%S +sAIUtR(l|doOwDp@+!B4?j${Zrw_@ZQDkkdFB~fzuUKOC$GQ$I_=Bedh0Fn-oEW*-35ib-lUKN2M&-! +hYpcr$BvPcCr^^or%#i!XU~#PKKX?F@YNae-j53T?6c1(Uopt1LW2CP?ll1a+-WWF+!tWfSCTa&h$Sv~p7IPe~|*9}MARAp9f%xdUk%|;LHIA-!e0a76CwPq5MG4vcSHE+A^ctle-grS76!7H_tzDhl|Ss!J-;?HK=LD|cie?f +^*sLmjTS|=#f?{$SnFHhB!@tDvNerLL@GBU8J;QHj_)i(0=S(}o@TVC5f) +oB}9-$|X5X&RX?la4Gh1F;rBB95r#jbgRib};0cC*lHq+AzA3{$&F~=%Kak-^GyGhJU&Zh{82+#hzI3yyP5+h2 +6lM%Fn#Jc{E&Q4^_VsPr-Fej*W{HR}n=K}T!DzO&^lR3vN#pL_8_5yO5qz2dMeql++3MdMH+1jrtzEZ +7n!+sx9zNV;G=v$gPveFrO?-W{>k*NmMvKv8HZeT#YW1|ge~9%ql9ot|Y~7ypsAp}}N*$rGua9@5?tt +g{R_-i%~~bA0O)kJqi+v#YqlU)~g?b_1?A_iNcpQO7rlDJ0jd!MH)=pBTS&mq=!DWVj_#5Fuue{Ac{F=GLJ= +!NOyBcI#HRZe6~?dEMIKA!}$rI8V@drlNak`kFF{1ZZkl=+Ivb5`s?@F +;Xs||FBO}5!ES-PZBEr-z%oOmTTg~3u1@J1uY;<0?b_#H>@sOKaogR!KP>i$~SdngDH+F0v*tSNM>W@ +Y6MN=5-a=UgW)9ve4YnZW5ms-`TcHoaDD@Knn-=5!U!YzHeJo-SjP+T_|SY0j3?d#wVD_H2mb!zponj +#HdSl1LqKfc;}xYy|vX=FY|=q_V?v$)LPcWi6w5>fiHsy{rwnH4c2ynSbv%ewKIH4()*e>$VZZ6x;t}^cauVtS+U{DqA@0A!?bWEZ%MM! +v5<2L_H#WBkrH)6%^8yTxNzY@W$DtTN_u*_l9`#QtXQ!^u+Db~% +3t2fB$I=;m>tTcy;Y4N7a;uJofqWi%BjX>>$cOQ$$~U(msGK75&^~H<2Jw2KP1O%W&>*?+3>EY?q!ppr@t*2Pe>ihaNY +0|7oKppqm%^&4+PoGB3n(@7L+`R()1N@Z+zAgL$8rBS`!#C7=^wFmp_%!hgc(|tDQ`#5a-hM3ts#kx+ +k71fWR_jquk9sWv95zWiB^J6q46KmX&obLW2I*mL6S*|Vqkc=XDZE9ZG#d +h*DTBWpkX^wT+RZf^d;!NCC0v4$b3r +H0{{2gMRwyC*pWY2M->^1{EDWdX#wmO}Nf95Xaf?N=iz8W?GLQIB?*dojZ3<2@4BrtEh6qPe$q~>Q6d +=3*=f;>-a2x!h)ZQG{n7eadB<0Ul(uuc=|5zuh0D6%Qn~!V|47;u_^FlyafKcckiYxTecA6N1Hcq7I> +dJb&7uc@kiRXZy)X7zhB%37|s#!{Yi#dzIN@}$(uH9n#?I%`1I-1`y?bJm{U_z`*L0l-0*W2|9bW6wV +geC_MkRx+JJW+X0zE3==Ff? +YH6_G|A36k2tc}mo8np{PovgZ~5VeACB@|zu`Wn^DVZw_KZU+VDA=x&ZjV! +vjczGL4)j&iR{2%(jh;~?n;a7jI*<|%$;5TJ^H=i|ItSu&1E_IvQEqZ4ZC*j68J+u4j(=&WN`fWad8e +DVH0e_;#gEvBsy#Z^1u;tgY5w3^UpsQ_(O(l{{%Vw@rQicOl^FAgTKFt>ukeq?gsyB*RBzVA))_4K|x +KS$LPTS%P+sAty{Me%bYl87B&q2Lmr=f_L=Cwy|A!Q*h+D6vG@!c-~*sYL~DWa>_t`)JZG`J(?I{de9-=5aEapU%!!>6*pgggWdz!y9RUqKIK0o?H!vj6`3? +?uOF@ErUGzR&~E0=&V0$k_G^k@+A|=mDZGdx<)JLDaU8X(%9S!8A1ekjVD~qSPZqH*eltb~pI5uXlFf +FT0e5?Dt|PumkAJv)>bSFD5d5&HM)qEQ1c86SZL);tvsByGb-`KT+UzXKA8R`2YIruh8YWZQHi>WnGv +78dwg0q6N4>kAP!Ybb#;RIb;OAf&Rnq@|sN`)Q9o!`K?Mr*jGd$jB976p*`zOLa~Z}Y!Ol8ZQ65~mBg +Q821)-9{pWZ@=&mx6dJeuq7SJo`hNJ^F4n2e3!!G0zc7ZnFI8kq=!NU6A?T|`C*L_5tzEo)lWLtQ87m +?qNyT_k>aaxlmP1>^@QekKCEoIRGT`y0+z<*pvTmT&WjJ`#kWE%wy-w{PH4dF~f-dUdHDbK+ +i%2irc?(FvP(M3l1W)~+_-Ur_HRk2m6I&AWVC@6jtUh>4EmAinIDMy9V3ba4c}u_8!zZ==l==PFR~kbm(`L +1}oDr_$Q`8XU`VRo{dGSPYU`{jnC32HDekYZ7tI;3H&*~pWD8Ddtc5`W&nTqMI50spaD6Lqy^t0*2=s +L*AQ=!GoXEt(up=EccQgSLk`ohnrYa!cobbZ|8u3B&Cg6{9Lpp~+Ow8pG}~S_{_q!4|2uc?+!V5q9rg +;mfg5m_w7~bn-(y_^zlm6d*oL-!S`ckv8s1OtOnH;Kkb`M(wda4cPfCk3(%e_VXjZI=rVlsKl%ZytGj +0%le`ueeL7!u^(sGRQ@MnK7^q=ub1>V35N8kj!VGqDt$^<@MpC2Rsf=1~7N3%lcL#AOf)39MO)4;X>d +j<_QjfTY<4f8?6%V9Kg1k*6gOvyvT1r2EMNu6~$M*EM;)_?d6#4zL$=&M(+CcE8E$ctpx%cLSZxpnIn +?RzJhc24g|+om!NYzym|hW9jkhEK{I7eeV{LTFKfffmGv(!7yIn!_}_&NNJ88YVLhXs$WNKZ?rsKfs@ +LLFhm0^$gJR`s=Tg!{HG0RE7>o3t&t3ucuuzI#NERM@6*Ux^dt +RZ@uvDYrU#v%|uNY}|tV#o#$T2uR_u`)ZlZd~cD}QeFA#;wuY5n^3v&6^8?*^{0N7z7eazmt6@HEY(4tX3!ZQ)M%Z`-!5Hs?Bjm-x4A*|Nj1VZ-8w4jp=i{iu+G&1R!Mefr +RV0R!mGH{Ya%3m4LY1q%c|Slv|fm``f?&{`(HLVd86)l$1nl6NK}gJ$s5A;p2}#7Wx3(fh%Mr^-9VE^ +g;Kq&Ou%WS->7()54xv4tjfD<6_TWY+8;yaA{?fr&Fg+3l=Y4EcQV#w`R+fl9EDEQBl;WQ6p;Jyg6}h +EpP!Iunm0&4YIq^f)1UMW5c(8nf?-O`)4S}XEnz_e6~+E(WbYC)3={*q-$5N7O}i5z5lRi(IT2LW5(s +Qv^1JFZQ9jAg9g#aks}4)d0i=V2{gbiKqqhm9j>%s4+3!*dXE?lTfu$=){*!QITB9X2g#XwjktO_(r2$N@1!?(IlAfG_Zud%jp3;0SwwjldpU?Hw^&zx +KfTS-H#oH`o^RpLHp7>eQ)U!A>m}3r(6dNyq^-0ROPCFd8^;p!gm#01dK(2D$FVS`7I$^d5NP2ps}#d +fh@!h5Ol;{Ht-}#vL|n*f0-kh6Ww& +d4wLpA3(3*k0Cp`zri@6+*aB8g}|Tbp4*{A2Vdsl4A}FBAATrk0DrJ=$o3&nh?UcGt=-CD6?g}@) +Y2G8*sc*73hfABqWQ|J$JZP)>905*Yf;e#3XKX{xO9v&W{EO%Q$K|zV4)_kf}7JtmE&wnIe(Xn0xJ}g +_}+yYM(3wvOB6YHDM0mLZqSi;EtMEFtg6#jqRx^vV%&G}cQX~W?o +rwLjmY1S|G@vVJ*MIu_J$*HfxKa}tfwNEh>MF8zLjlV#5edF=(p5E*a7SkGJ&2z2Jp%Hdo#x$UC<%e!pxa7iG7xc)A|P7WCslV415t9^apDqbl?uUmM>q9J;sa& +9(dqxad+Y`^MB^|4A3C`Vp(*6-|#^kyTv*II)zwU#-6^wAF`1-1nN4_d*~8)4jWp8hxzZG@1^k9>py& +iYm9ZJ1xM_$KmYvm^!D3t3;ovfU3T0DU4pLT95Dd6%lZiCwdwx_?gD@P`j=x*D)bUD2z1E(e)tdgI>a +MA9pLT8jT>pnk|jc)r46HlZn-y)yb0&f8CgGIpZRW;Dpmd)+@1LA0lz7w=a+&Mp8b&vY~C;Wj6+n3OPj^8un`l}*ZhK^}Nr +xqv7?LfBPTqm;=u}+?Ut!QVIu`9TO(pRI1S*h6xjnDT?8OdgM>{`B+6ex@kw{J{{d$#@Ef8q8;<^2mV +vEBdJF>?N~)SR@08PwWF7IG-$^u+L6?w8;+%ax8tqcL&Nhu)wEt!sUTOxejoSGxLuoLAZ3{>*;q7xqhsIX|~?Zu>Il!1xVAYwo_BZ=4@~QmvC=FBEmYF4|u1SC@(Q +UL-OUi22V|Fn>e#;aNQAb$vZuK5HWP&$XQY5AK)Q=N7Tw`~U-^W{P?v>RhO=U{4%-v0q;y+IOi^wO%j +y>1orZMK4&eAPP7jcf$Gs@ezIU^Xs2|aDCbzk}XfLqMRKxz7b?p`0IaoY(vDlP6DpSzqs#`7Dmet#gx2VlNTc`Kz=wql>qd~0?H74kz|A(r7kn+iq?El;aYWQ|w%W3QY)O;azH#sT^m<)V)Ut!CO*(?^# +&otU53NzscJFOJgVfw`gQIHIB6hCNl(7qBP1@$G~=)(lVoPBeyb>AGL7wZSG(@6^waykg?SiSbjWOnF +&fdj$^IHvuouu)mI4Q;t^eL!Alxq0mRvm{8l8uGN<&4N?2TX|Vzap^y7+*S=lncdZ4x)_@`Zoih!h-i +2Bb_B63KF7*-n;;65nHX&+U+WeD;b`x`T*Xd)|FG|ZFIoa&lv!j0M-Rq+kq$WJ>bQal5c4DTYW{H +0Q=K<+Wz_qolT(5G)JqGP0?^b6Z**WKF|Hguchr@uFqhH$ochk7Jcmwe7aN3sA$)FqQ-(+-3-PdS*tb +b+MoO%=AScXPV_tPyc31m5b|;0A=lONxk2CoUcevW8XD@ixv$=~iL&%jr)y>Uf8^McCQXW;Idf(l_%L +tYJmL4?cM<#G|Dg-u2Xqm0>uXNuPJBgYPaI^MaM8z+MrW<8qWKY1u+M=#UGNy|E4D@FUb<^7Ov(nb_& +BXET{!s_o&VwBZG9YjTOXGuKZohdjQ>3T19JYTsHo!xgF)=OqBb2H8%uAz@rGF60VnATq_2d0z?;h@h +iOmdE3{?0Q9KJE_0cx58?F0y0-ZT|gs7bSCnO}KZD?rdM9`6(oIL8KmtOibFffo_dF2(c51g8sD)uhq ++6O$x5&W0WHi93nF&PbG@_h$bw<^s4TDENY4BNd}2O`#^E`!<<=UFs(@L)lAd3(*SvXOCIK3mDdVK>(NcUn_&)0aY<-9&WtEfNOxKs0zd;Ay!xgGe8y< +F%Z_R>+;fPLue2#^8%0^ooPcmcl+p9ws7?AS3+sa%ah*#F$QbE7jeGo$318*&B?!-o$ie}8}K-MhEIP +44^2`Vj7e-bjCe=MvYgTbHS*YlX@*;s4-&rca;#GRDK6JYqh44r&W8yzqjkF~cr!FB*6t_jr*nqo#tq +ooQHh7jrx3ciqF%?@1sYjTtjW_y#sPE5uvQ7=wbEk73$<3P$$>l +cAM>tBju1J{WnP0Vy`qkRwK&#ZSo>k!hjnKVuRD>$Ag2P}@LOnD!ysQ=|L@Ua41GIuL*3KCJ_6Qk;2- +3K7$l!T-THdC$hVO1A=g8$iCh=!4ac(CVhpS~dN3Z4-*eABC+ghrVc^5Df=t?&(p9V{k-H;r$GQP)r^ +zwh#T)~U60K&wEM2-(Men7@jw6)10boyA4; +3w8l|BMy$Uy<^M?!nhXPa(_x{rd}^!cRk%-|w=~x@q0T^PlNSJ!$s`?*jgP3BP^&c9E;e=W*b-k#j*F +@TYoQ@ENgOum8AT%3nT{gs~7OF+buF)(IFJewkzc6g@orH1Nha;00<$pb0S>`$>SsIvcUOprD`>ELw6 +khtZw8Qbp@Z1zp}#P3yJsy_-@^@%DBXZ+pTU*WB;zq_NcJ&=MCcbmxkP$I)(TOeNVuy?wl{jkH*p@>^#d +VHOjB7Q%wXb(vbbRcvm_+$^Lc995ZWZVo@@P$O@8Gdx#wCisC|b$U+Ny92nHV!<+?d$06SZ^xW=zcJa +Xd@R(7t10$H$J086K19yr{n%p2VQ|Tb;dP#>b5G9*O_E`bH;4#E&2KO3WBv?{TrlA@~E4U44f|k4%j5 +4G9h?2l)2n0p-sg98e0^-~cDld>$Mi`5DsJ*w<(_NA&JKaG>_#uk-tN4jsmidy8$yY$dh}w(42#S$(q +xW-0D&VgXZ_QJhhdaXq7Yrbnh992%z>FBGLtfAWiHBGow+%)Fta$bB=dS^b(@C`Z`}V1Mw{WDk+N +of_M+^J?A6(M*_*TTvkSBLWfx~3%Pz^jkbON{u~)ad+db^wc0YTdJ;)wv?_uw2A83EkKEj@0PqL@jXW +8f57uhrHtL=IA&GvkIp?#md*nZ4@-L5#QJKP-}4sVB_BhV4#2zB&u^mPn$yyzI=NN^-MQXI1!^Bs#E8 +IIMCJjZ57zN65w&r$3+<|uJoa9npNIn{IAb3AgqbNq4wbAob0b9&@#&MD5hp5u`ll$(@0KX*}XM(*m| +yxja;rlqf&(u)rXwj^7MZI*4mZILa*w%V3w+ic6X725XMiUr@U+mtNu&Lhh^%P%W1D=4dn;Ny!~BeD{ +*lCn~=%FAN@YJau=yY?SYO9KQH0000807gYaR1KvSU7|+-0M-Hl02=@R0B~t=FJE?LZe(wAFJx(RbZl +v2FLiWjY%Xwl#eM%@+&0qi@B9@mTpoLq#gL?Fd)#e%9Hk9UlfVn4?LEM4&8`6-UVCGEA@s}r?eBb(EX +nc$?Q@@JKW*5xrO{|K8qJJGqqUW_V5gklRoUfL6GS_M;KkQG-KgS6vqBdtP2%X2qrYS=Q>?{BAr +cXY(xA7*zUOT~4mkW~Hg_wpIf8sK<4_l75_|^CsA%C%aWuR$D=^7R;;Ua+YibMF}0bNh_)b<%3c1t}I +%>i}QI^PSRSVQQzsWO;TML=rrkUZvXz++*ZkarGr;FC~PwI51EH1LkMU^xq +Jh@5o3|MWN7EKQBeb)Hl;{(67-h6Z66{7*Lj2F7w2T+}cnU|RHmS`;4^Wy4(~D1((1WZ|> +|P7+>@FVp4?J&VTUBAKP*F_c<^>3IkfDyz~Npc-Ip98YWv2Xzi04t5WMSDRlz*_FMoci$cFeY3ZF2!N +|JmbnmB;Xk93)7#T{{p{J`w0;^6R=(doJlflTH@>&Z(`Rj^o&C25+lRa3{ey1dzmC58^-K7F^vjFk%i +n%I`S&MhBdPXw`|!KnLvJmtHuyFA68|-8{+boP7G-l#S|c%j`7IheeYUpsm*K`&pZxo$zy0aSKmTj=>tDY-Jvlu?G69&C +m1%lG1C@?vNp%ea%74Z@Z3aBcS65f*?*SGJl7PzuT!ut&l{Sm2fLGIuBy3XMkvs*aq#~+H`f*-?>>*) +JAW`BQb#AjfR~3Wn^sWw8%lYasSk15MRcdLq!fzL41+t`AZ_;X(6-f>fy&!lEz-t=`E~{h)O%H=opqLX6gc34K9C84yGg1nInPs&N{h)ALM +&^VKZDq!GY*Q315}A%J~16-IPkL;q#5+J3P>zu7g@@kv=P+BXTT)w?1^VdGr2P0>T(%0yk!XnpyVQNp +!zJntjfi_js_>2XHF4;L!2nzPiApiOryb8TQo0bgGN@63^q7xD|k|e!IQv4L;RG81i_E1be<=ZH2N?M!f@~ +a!ad)zQHJT+)KKE&gZ=#W3g&wsE%BpyM04omYEfJhpOhcy&j)07nM6(6fdJGpDH)7L!G~@;_&J9K`?~ +XnM%;x^_JE*%#>sq+d{cfHcndv@WZbsP80v$Q!4#nV)4`zy^3BW-lW^-YPKtk!*JJ=>dfvl5UW!=r?= +i&bPQ-rlAfJU{jH*mTt#=#p&Qi@nQ|YPdp##9`(Fb=nh@@G9K=1I!Ikr2G2Eg_8bvB2VYLLcxNh$~l; +*}N%Emqv#u!XbY3SXS=Ug>LcwXA3}Ejl?WSF^d0{ +F%|C&l)Z>{Q*x1YKePiiN4qblfK;j^R`n!Di`iHJNY>yd_zOm@*NoOEJpiy}LSP02&!nyQ*6s_&Cc{r +)}m#BLG7nJVlN0-oL^~dNeue>&mW%X38!3vmt=rMRI%dD+yR`1CoV4yKrzG4AsTYQCws6+@2lsaFaF` +$eaG*r+YC>OP8c%ax;rJqhcEdAZ%IB7`lm&kc +HXmTc7)vl=y=3vNodq{LGlt7Ylq`4__}67cpOZ63WYk?z(HZvop`yam;aQS{g+6n8>wskZ9-!Z1AL<@ +aBY4#h5n)iaR@&3>VcOHAoXrx=$vEp7>z*z#rryyIM5Vfi5PiJrS34EY{>|yfT97p%3a0mmd%stq!w> +R=_C)>ORb+`N4d~sYf%5e2SH~Kf;_Rf1pzy$<1Dd`ddg1@9t`{JBQ2?s#1)Try58o&! +Z@{*PnmcQj8r+hYjT0L^92dlwb$aPhN?s6d*pPVv0%Z#)%Y@P#!7TY +@MY{%kJLx4h~`JHzd0-`xR#dlRQb;tZqO{|IlAL6fEIVi7+v!hraAi3rbEJ$=41Sz=5e~T9%q>^c0W3 +GjHOCXeDl+F#(8R +^!9z!G=6}6&8Xt>=BmVo|)R27QYU_dO`aF#51=ErXmKMd90RmA+P1xF>wp?Na7PA*{{UL`lETf@?qauwW?1SFJDEEkvcGO($L_+ah%r(ZmZT7QHjzh}xjxcq)z1~Z~Y$`#Ec*tw+u@o9hK_emzP8 +&t8O-MB5?eXc9lJ7%_N8;;hx(9=D?E7PaI4{QbAK+&Vf>(2hK`PA^UM7?jR`zSSEeb$0)GDvX^OL8!; +)VfFe;AWD|G9e})Dd)gwKD{ +rt#;9vOoHM&Aewk)b){qpDVpJrn^|$`LyCcnbC$t{m!jRhH-mUw|dhI{UtX)gi!=DAKicr7Hy(1y!Tk +ubsHuNIsq?4cNs56TezJ^aYq^z?wg!*wir+6h%O+HczMP8|!rn{3Pp0bJdOxfJ7FBKY9nbtYa(_Llqd +I4P!GI9}{Q7+xttS0~6!V=xys7#J0?dLIaA0PV%(ix9v0`fIPfNWE +pDN!|9BI>|OVmOf~6U6gmg|UEZV|*itmr9ce2~a0@FjIyk(O#vGG)Ud|&6zaasC%-X2B;`XeiVt=1he +d^eVQ0wQ>xH8!5zMh>}y*eX_F6}%+Xz;JX)Ra*s2oV`s0ZK!06UoQ|g|Ctto%T_EN1G360&s}GLTifO +WL2|BV1C>L2*BKSlf5`J!9CJ4Rny?3Z0=*(h|iC$&iWZ$8@r2F#ZVpxkjN +^{0>$Qc%p8Uye`|;o@+SKz;fpO`~&) +%g|4sLyK%F6}}tIjrGv3YxJ3yVrkA6cBC)y3$vD^Cr?Pt-h_n^x>PypH54a{$?EU}cP31#bgRrsS(~6 +1cv^_YHnB-LlrCH2GLa!6#cR@x&+o?9>0Ja97^5p&d1vqfz8D5(+_b?A6q7lkKQToxM-ICg>pv65GrUus0YTj>=#Ox(h~lr^&4C3NpOtl)xDmB`V%uj)Iq#Y6k2nfu87s0_p?|rs +XaA37GH^0t|V^R#Q~bn~U`?!hvd7rspv%%?*mlgknYi`)L2&Ft`9tKn?ypnOvi6%hStba);CbyOPx>( +Cv|>2v&?u2t_plDk?p~qWn(B-{a?B0s;>m#Mr!rm^C<5^dyAtrUmKT;n_(zr%j7k$caz%S4-m}19V7A +NQQ27H6(G?q_aA5v?5{vu=&W?=PLe!)K@V@M#>n$njQs(^q-NeW{BgM9{J33QF29Ps%i3jeOZFs$u+V +a6?b)DLs-l427TsW%i$N$WYX(sa~Nz6T3dm*mET8``7p2;R+v`l8~8q?3aHbB4y`8hSikFxa#wwm;um +vWc7-1kTes%~Vm@y`(GE(aSuEDm1Ct~cytlA;0nZ-sahumPZ}>2XOD~MjOARS1ysVCz#Gq?nXhzHWZC +(G=ScdL>k_zZm%L$>Vvj8f|r1)P0P(awwy-D&#D!`cEq28do(pc&W +#|#u*+vci_OcC6~T+bDQr~%OMusy0xK(DOilC1RGW7r?n`=s6yZZm5StyVkQ48Od{lS_{pquBW5Nqt6 +uYtwgRRCTt%Xqq)B@7lX}CHcWe*W%gr6un!+kw(pQa4#N{E5u?dXiRRWtf~XA!gn76@KV*Wk@91tivzd^kcE#Bj`8GN3E +DC6Wm!z?(eqadL6~qODTPRi>Z{6o@RhQ4r>ww!P%nCc06y5ONe;4%kJ?R9v7LilyNk;6f5E&G%&~W4k +S19(9!Ds~K+gi3)0j~BFve$SwZNZtK9gq$7FwK&Xg>1kHRRgycvemqx&AdRC-Bvh1q4|PacUO74z+QP +EvaW@$QU}nc#I-kp$pv^29vxt?H!qM@X9~;MF?ABn-`l=+g~J9I}A*FUn~-;#C`OR{2y{B^wya2%MwbD4ac)v}&)( +HA(T!7O?7OS^oF!I3j}RJvU@Njd-jpyVbUx-1BQh6sQ~<$F78UwEcJ1%;vjfOUXVa-c_ +9LbCTYdw%Yd%TgL+bBpc<)26Y+c0i#edg+hFet5cPF)hfX=fjrPQOB@|-eJ^=ei@^X^oJazF^fy)dO1 +ddLFTPUA^-8n&TRDKumK3qCe_!txlfZ^c@Q@D&VB66aL-Nr%5`-Uk@ +evYn6f*R)Ul^wW>TwSA&j~qA~=Ke?PWY)VBVyLTU_ZC*aRY2TEXMd&bWVA|L5#mA!^ul&f=Qyv+e9@$ +Rqpp-NQW`>c6z{iOOB4luOg-|7KadFIo4kD;gM(kGC4HYT+o +fx<}h7Pk4M48bHOuge2gk{Dt<@}xu1FVhGROA!^h}%8SL)oNiDzsu?>T?O0_#eS+VDA}#nW4~uKCpKf +7EX$qBe)t=$gPHS(69%TDx*RsJ(yhJU}6395@r$AwX0&#CUymv3DAD9wYzeG&T0*d`m5THSpWtH6o>> +eAK98^pot}7BoVvNq=DGGvXS*j2aGC{3k3EZ2;m8y+)uYy>IRBs)Y7127Y{jVPQ0+O>{mTmg|4i|=75 +?!gpH}G%H)g~Z^x=&0p(^&h*oKvDtuD8-2@5MQS&_?)ig*>TFa&FPO!6sVuwu$MHW1?PvQ|#u+lUNKK +vNZP+ttb)UO1le$`HtNjbk0PYF#HFh6PY3zSX%LRQ@f8@6W-W+#D_?1B&1U_4DjyYSWBI?60$K3H@ou +&SbQ;~yhKjEzxeSCoM7DCQ$U!XOzZS%}d{jzUBM+k8THF)Sw?^gFaR<*F0jUtjtHxzJgS6!3&jUFea^ +>O3p1HM%{aGt>Z@f*FSg&9D-hgi^0liw*`m+@aba0-M~E)ijEa!U0v8D!p9fNks$MhYZHp)}AoH&dQG +Pp9P^Ep9sPRro0GiXU9?uNaR97zjyqM^}t*{bUB-$#jT}SntvKhofeZ4GpD$wg?NZ;x)Nu4@%iJdD?S +^GgB@%i!NcT>;GXrnMgXk#6k%GHNK+-eJ$Hu3?xZJCC88KC +zhjdF{Nl{)Jvz9A6$xcY24O|sZtv0x<-qjTB0*THFch$XLXj;*F#n*9FIXA^D#OQfAg}=K8C0QMdssw +B{vBhzwmVIly=CD@zjmvQPErWhysATr4&Q55rp8t7|*8zupJ!`z_zX3*&eH~&r+Z-24gR{ly@2GXCd` +5WzQfs@fC-o}O>``H$SaU?=BmLrnRSSIjE0JLk{1=VI@4|*;VTm{m>8U@+g*<)mI?|=6SZx +Jyj0Mv?nVnBz(FK@W0h-yuJDcUJSFeV_X8AdMhzOd$jG62;QY6&J)$;5qD7LXmrefJ`?h4*N$<1npwP +O~U0`dknY#?`wxiV^MzqZ#XRLNPt3dJV(9%)<7et^;J8k_Rg?=|x@vZg`lv-HmIKzgXWPNvi;L5rVdK +c{S44_O;kKiID?aTQldjeb;#k)@cYjzK<^;qIh26KO>QDJ}M_`F{sY*BMhsYZZalVV!%|2iCALZ4;Ja +qt^uH6&K{}p#J+O_cTi`rMLdQ;9jxN6EkVXT`g%$M^UO6MLUFB#&~>v3&xDIvnW0D45T;=dEdBACI}1 +R!QEufDEJn{fh*;^&7OoNaFQV*dU;#Ou?KFv^LlsZyWOwHueXn0TP+y%6b~EYH`L@AlIb@Lo<6nl84# +2;(Zngx<-Ud6VKWu)M*)DY@ME=N+UupcUvybkk`@CV>xC?+9;TIPG)>PJmr;0#NRh3nz0SD(6eLYMn| +f27+`m@Zds@A~mP#%uqatHFf~@~kL09JWs&+jmdOBul4^gQ#vQ3O@gRKEG0y3Fk5>pW=@cW1H{&!uXbtCOK +q}9+TEE~qfOO<93{*XvME%EgZ5@T*fP$+uhk;klYoz>s;Oj%PZ<&aLRWQr7R +Fk_F9RsqP?l`C{0e#kNp(ob&hezbf+_x8ht1+&gKs>42xbqb{C)^}yk>iyqO@&P2y@SVOs7tMmD2DyxLYYzR~sxA +k%7FzO7}P&L4A&kjw=ON|vgCUnkmLqHw;=25YQ%2aTv7A2rY0ftp;iiADq+NSQ=4KxT4LT?^C9Kab_H +y#Z2%c;^ZWIQjDEN9Lu)@e|ea<;^w)@2TSB9Q|e$TBT~1E*s{hM|+OEkV-x4r~W{WKbF&NW8YZIx%WV +${TCx;tJz2=QSz)NDLKv?NljGP+coe)pICC@ujr*jZ;b@D{gT?jkQDsOQt) +q1q>DzJ!X{j~*b;!)&Om2qHgCn9RO!5u{tx9EBls*e1=r~adLxlJVOsd^?$A|wIA9k`&hhg;9!C$fOUq+|5zn-ke&&~$V`cfR6)=x+9KUSH*LWvq9 +R(m#xPPR_tGyL{+N!{r5L~2uSzC1a-T|avkjj-NV(GcFjH~9&G@b}r^s~&iOI<9;1_q&IG-#^+Nm`9? +_kXrUqPRONvw79Sur?V)l#Rhpd>Ew_uh ++u{ZlW+i$iH4!+(#-bRD~o=S+%hnVR^B_7%z;)8{^}I0w*JGz$M64&c>2I1(rmPkL~yA0R6KTG +Wj*+~z1b6-j3tvKmEiU^3zY9u+6@+2wG0Hc&RGpwqw!orekOlJ +G4*UdX~)AOh@A0Bvl=Sf1>DDu!3>#H1w@dnEnR2C!k$TPI3=coecSXt>__KVOY1s06|Ee-H<{T(u6J` +2-$l8Dus&vg|fFvffGh5D@&3x5K=NmiY1a!0IS}NU$uS6aLNu#((;WBg7Gyx4u~&9>j!o$i+F`o{BEem#7Ts(6qH}Oc+MqeeKp?Vk^B< +ovZ@-It-{QT$T=*o2e`~i-mr#wx5D$Q1n@#a8?Jhc^itt6H;{`^KsMBiZa>Oq-%NH*gxP +G)G--7JQ$Z7o=@3TWsNUc+ucN39VNwHBBWFT?)m^Lh*7`bdzH@MPpwDji(u$r{JEcj{nOT-nNbxx}~9 +XvSP|L@(M4#4TPY3JWO+Ejo1s2nNV(dNG +8>}4s@26e2M&(K0OPBCod_Dl2 +uq#!EFKp*cHPnuX99YF9EwIogXHqpH6yWp}W+o<;1iJ=}1T7gNYL6tZ}SBgzQD5_=gJw% +3#F>p{{PqtZ7UW6686aioRR3DL!Pe1<-aV5?dh-xu-TS{_1cv(i%YliEGjl;9r&N=$$WHiV91Vfen +qk$KY#38gK=bT64OWkD;RmezJ7txwt`OcTDPz|qsU4Chr?-K=FL3!RhjEI;wFr2BdGgQGdVm!Ne+mcY +5=zG$fn8KK$!PA(&+Pz%DYE7+n58f!r>ri4x`iigG_yJLRBnsldHD@KOXJHJUL3GVU9Y2ug`NLWY70* +t&VuEe!o56SmyG1t{Dx +{;T?%y?KB-Sbin(LZe!rqpos>^expY+0oguyg*x{M!%f-}!c!|d%t!b+>xdA(jG9o!kVSBhsmzJmPZx +DfES?N|kyqTAfC=H>ydSM+;ETCwWr27eXkIowy6#md-NM7Y(8)+6CqH09XHu*jGOBZBpJA +hgU<}CuFFr0 +nLRBdngm%`=HB&UpO$I6n*~`!V{8=1)lYQhNAv3o$f*01r%ms6DQ8ysgR1?7!-)kG2+>Vx$ph^AG@2) +6Q45vu0=Nw$xzMWvFr3hv$z_TVWHWtGtc)#@K?L+DVF6lK1i-7wGau$c^IT#8^-2z@}G~PIJy_{HsyM2W8?Pr7KkuipTbl}1z=--H_tXi2dlvp +Hmxku%V^RV`2_^vlX?UGlR`1Efl9!GN!=FnIj=9RTErFQe&?tMSL)xuo}N9ExX+3srd)?I?_VP^(4KGNjQ?|465LU%B4A-0I9++L+=F3($4iuIXp%n +9YL^+)&ZLAeYhKVA`51j@WN&KisIhagy~vo~!J6AlLxT1qI>xojtyCvMDk|B!#10X*EtjUVScF#EchF +iS&H@MAia?L5E$RiD$LH~Of~f6=*@0q*o}dZoO_5ze})@<+_8>;?!Jy19ob;(|t@dqBoa%t;TZsu9n^ +J}Y$Q8fS0Zw8eJ#C%JWNx`U3{S7l80Id)~Lh)dT8&`6@;_>|=&gT{4|gLS?%G!+Zn*B+2kh1%OYxU@N +2$X<{NDAdGtlL;1X44^Iv_OY{F>^*+jjU9(-v`1tgGQRMIj^f7%3U%7Uk9D4zxw{vV9fj{g>(4OgA*s +4)#snfGY?Nvv!?;{+)QfXWWOJ^hZ}+ZpOW?V2bYoq=lA|rU9;(Vb3D +O(d4sMGM#jEc*p0B@ePwDb?U5C?l7YwW`MCq|%8kZMFVW(^hlq(pG$lml6wfG3lYm9Eey$amQhS{*p{ +XmVOgb~_;xzcHx`@I$XaK*`qaGuj6f|~qG8h~rf39ULkuRo}n(Khsu6DGP|o?bLoUCpy11bW!Ehf@z +Zhx`8(vnpxvpBmy$vV`zmX<&gSK!w^Vff-mW%fKqx>Loeqodz_M_PzAx%iu7!gwqviW;dmgJp}zDz}+ +XqnK#>P7)w`L%2L@OE}5^wJ<-5Y5m++V4E7Wc#NiP+IU48h^#NA}He-a_ODBwL@i_aWJZCjGGtLm0I4 +)yKO%lPkE5-m%E{gFO?BT$N3snC}1;?#2mD`NKg*}&iSvWb(FhRJX>-3H`>waG=J?+>-DyE&I#~2e%o +xE~+*5y|Gcoh|$R8LoqdYIsmYD3p{Z>{|40^PGRs5GMNC-Gdupz!OQpH=QJmb*?mLEE796pDBb%joVcD7}NJp}NdS7<4j*bKC^3*xFtLFS<;(bw +onNllXG(E=)W2WkwQm}*w<^}<6By@?mx1A<2MwhX>PLD$@SSo+T`y3@iqw#w&_vV5g$~0CT7xAbwnN=GM|j-t#6hXsb3>3Gvp~S; +0y?r>A^QUWYm(@+ggN3kBataR69~x&24iiu!cPvYNDIO!?H%qGK=W%(mRfGyVvp2RjZ!x_C-RirFD(= +E8S*GcVyCSY($FXebE!Ba(7;s)LIuaLH)Gos*rWd_^I)}xGu`uLg~g_X{oBwl+)6FQm39|l~_zW25hK&4jT(NVjO8O;+l +M5&$YB#D)|nQuaPmvh0yDoTwb~7ssf; +f&Tk`>29G=5KYq6%S)_ZUfTVdXf*yz#u5<(}W=${6d_RUs9LJ{d7|zjU>?EQy_$l~Xosr(BQqno7n{K +j8a-;>RQFXys&DMV`BiiDxL{h^4phUwsyu3v +hqNCRl5c`oii}l0HDw$u|D@FUVC4`_JIVv8}0cX6NAemFT2W*-7o!r;cR9~t!L+=!rei)EUo3~KZp4| +B41nZ!G#-fCK)u`(C!%Dj^gJ+}Qxg&Ofw2C1OUA67!4sbz++oyWTu&16s)t)YkM~RWzjPN53CJW3-SN +CdHF>;Ei!d{K5Eh|nGMM}S%02@VDxJr0K;x5Hx)gbq7GO(vp|A|nWb#$wKDbpFwSyn{$!=e7EVR_Enl +lR*u2aarC-`EYKOSehWX{J$DBZ>=GyBS6{_AW3r)dM}%13lG)=xAr>_xGJ=hS_n4JNGVvpRg!Lq4S-c +Y&*ar>U8NcEhx4Y9ZrCiyS}>kjLdo2C8S5LIZ{S_eD|iApLQTdG9OU^@Dt6`YU^iR%4!yWKq$7xcpd +pR_$73`QImT(d$Cp3T- +8cC4{O1?yJN*TSeLgHKrD~q@Uua8(qAmo{G?KsLHhvthF~yzRq1+}X8UL)L)|!{-X?yR+(%^nROzpb~ +l9;E>XxAH$WS+Zm_r^Jci^kobId*OaZmGhwT{}Mkfl$y*+I-^XJ~NB(#eBJ-MwnN>D!XfLTw{!_cu>~ +}P(f@T3Src^{X&MwIZwlb(+$r?gUK1w_S8=#Jfpawd$%6K90ehkYEAU~KA6W4>u&{K`dcwusMFu$-w=ylwMOA@#A7bD%rBPi+H%TBhSlyt%Uu7H&GEtlk3 +@hzbnNz?4DWnd%}9ZzBfI27?5?ZoYC9Fc-=ne`62?AK(6v?DzQAbE0ZWPm?RKb}A@|`u0;`oC{Reu~j +@2hJR;1ziuDbiHdD9(!FuQVUN7p|8{Q0Yw?Gb-8)<|gKon8q@WxON^wmy**4Ghfr~ga~&Nsd7AJgeYmMQ!${h!aiCznT2cTOjIdl`L4c>P`a8!dvg{OHQB8X|Ak{rG(6hsj-sjmgo&_K`B9_P9?A2u2OpSpN +;(L6uU{6+GBX0q$ii4uG=KP?sUPdsODf#`tOTHp1WaR+?G8Z)u&3aIF>lUo^5s0$;lP;&YA1H58%%#Y +dm7Y3YRx}*Vt18CH@i~*TH#Gp~Cq7-QF?lh`0iNhyT3Af4&We;W7Mw5VrBN2U6GGdtAt(0+QzayYJrZ +|L`vCjWnH62H(*pCX4@w-=1%7c6UAaozh59sgfsOjs!yM`$7dBo+)DiO!1(nP=c;624ue>O)j;L8S8g +xp3G}{w`sqaB4+9UsqXFqvp=Yf9l+(raaC3s_uPR81A{Un16hIpMAi +~vb>5qk#~}|uTe4_6^ungsEeOV@NinG?%39wNGO4UMCb>ngZI$!DA1vjh00CcP|d| +|>V=bpTu=HRGv!5&IjZ6!tqZj*i5JB7N|HB`!Gi&;;GJ#Is$o`V&!3=UAsDm`t$FT5cux$GqJ(^ngKu +6Y!39m3=do;Z51i$`DG;H$6fx-L82Kq+V--VB}w?O?C#*)s?>0!>}>c~65+UQUB2Pf*#tS?1+Hs<7@f +p5i507>B}4s(#u;iqvDAnVXzk+c$mNIXcp)_R;36ueRvFmON`j+qNn5`0tusd3}A0{#!=dHh~CAhPtU +PNIHa1UT-~lyY=J<765v4Nf%b>E)G09C(HapyT{uPXDgkwGW;6e*(Q)q^(*4VR_i#qXfU6i{{{b{3no +zSF~wb%25ozQW?;8>FCQzU*6rtPNy2m*g?q5-sZ +Fa}8>tL1&8zlWqoHZ#yj@5tPU}7rO7m*O(;kS8t-aWK=xVQ6q{Oz0lzq?1&Pk)I{{`uS4)4?gaC&zSK +!uW7^=l$UkIud8_3*hbE(cA4~X!2aj2e)nf@WpKaL9U +-5B!VZ^7IX{vq()BxJz9PGbTyb^ZZvg7E6G80SOJ>8Tif`47jD+U(xl_>!*Q0?bX1<=>r+&&t7|Z{!( +ZqUrtr7$@#v}JcJ6S=D0ZI9so-pKHP#OSTg{TjjXCtrOq7GRpIs9(Vm$9Ci@tIo3|VCM4su0!JQ1C9cA7kib=#Fbyyw4$qdm7K!)|#K7y-f6$9?!=X1FL;R&af-C02;esFE +DV?E=<6qSwdA2S=~@2tE2<{+`sS`3x<6kUrz9vL<)uk|f+aFpoLGDhnT!C%B*yxE&pIBNtrWq!p%!tb +<8gt=^!<;Ni5Kp}P=QJ_ODF3kOhy!8&<%9y`wsqD+$UB;^eAq{yqdmP|+Ns}yz=2S7#147{A-+qW&wW2yk3d3{H(XP_PZ7me+E?p`?9+eu$XbfQEcLxk} +W5QC&}Hex35YjCLoMT*JjsgqQjor`dC-Zs@}v?d%>NgHrVW-tQgme!U!NsjN~-*3l$E97k5$UBP6s3X +%Tx_R;w0-QE%=X*+uo!ZHsHYe7O+e`$8L*~8>5h52oj%*V|55&r2rr{dDEwdl=B?6KT@fnNBrGL{4N)l0RcVdWS%KZl%ux1qe=m|{DbGz)@89qf +c6Ck%lTTT{Mh&Q?RsNVfer*sg)EG1EqkYT0>8H_TIMjL~*QJ}6cT+^UgKXe>M=bx!A$*#C~UDFICk=~ +eejsk@3Scu?;t+GU?29CmKdm +|T@5X0{-xsCpPD1!YL$rQD$%8m`u}^pxKHD~QB28B@Wk&|BV~6`h&l;NI~r;s+-U<=dg|%bcmKOrZGj +N@CM(F7%V*NbM|SV73v#g7f|18xojKwjqORp`nJdV7{Zx?sUp`7r>&IVwR-3?8~~qwzn&y&4khdmKQ= +(?+qTBIFvpir#+$sVd;my6{GhGLPJ)s@xQ?_odx70y_cwWH^B^(I9w9*!GI)S>`r*ome?_f(vJ!5N7k +4$@NH78?-lFESLwO{e49?g(QtJ(}ciMnBXu|i&;aQZZv2tvim?Qwb0szo6)Yb +;v!|1&p~EpHEpb9WrULCCkx1&OH8UKFmRJabq`O6?NYVX^0Ih9e|-C9{qSH%QvI;iQtKnM$5jG`6mU= +Uah6x}30i>qS^vdc0teHjQ~IkEAB;BLEk-FOdn@owzxK2iJ8hVtjSWo{PNtQ{g=yZlt%Fsc!v7y%ZT? +xwS3DYqr6|}Zvgf&ZEX;t7lL-sbp+o20$)*$M%>^jPWZWjkORqeIj21=#+n1*GZ5rj?U0Dl{=V!KKLX +JkmGVL2%>-lok@%}M>z&P7uZMFV@@qW~p8{@7`!h1*F7=6i2(3xm`_N6k#q|2=d=A*&?28TVE%O1>Wm +j8!uWP1F)aGj4|nOerb`aD0bM_y1G>{R1?_^8#i9Py=Kg#ce_>Bd1!7U +ZJ&uBs2_tHb9HjC!b_vkq3 +Bp|`e2efABCc|l(XEV$%6mF3Pgd1i<)fY+x)!@y+l}c#YrgNlm#&ZxiZ9rZ~Y5XzlSAknKz`+A;T?0> +TAM6DYMi;Ywj7C8V2#1G905dNsXs1Ou2-Xxs@s#<^3}sC5oM<<}iZ^%+N`Ew_%u{vok1MEa%(Xi+!fQ +2=4><>~kh^~!@GJpnk1}8~K7GqPzt-~aM3wJkF!N1{FGp_FIFA92TCML!BM&`;?XK0T`Tm^4T*M=}bX +^B_Pe`IJ-U%sQ_HZ^SXw$+iD4rYrGBz_HFBz9kFuz=$q +PBwD`%^l%co~qLaCP3VzAsFj0iI-Z=o)h{_Qj@qZ+pd_(rvH!#h3#>RFs|U-Z_Bss!tX2j6W6+Z{0Dc +P-->i{Ntfx&ZWy+We=CPPK?q+2CMR);#PwPK)u8D=%FHjGD@@>^d#&ioYdh(EbVBw6kA;RXc%jHASGB +qpj5FJ+2umA-MIluGUi4Z^81?))OkTl-8JU38x5NSbTxxpK6VQZywy*_teEg}2w&8T{vh@VHNk0j&3k +c(2n)<=Z6d+@GJ{r!;_Ci5RQ;v-h|PBuUuRvS+vjCB|`Zq-=%Xif%~D1RZDPbVVqo_@#Z3v8 +Gb$_0ZOMYGDr{ceoweP=slZo(ZF+|fb6V96Nl6j)uy_c-AJ5-k(RXsJoZ?IJ8GjR;1IKnZg2xr&q#S8 +eghNK$ysP8W}%}-u0A3a`8fSaOBrfUj$2*U29YU$7)s3OdZ@>N+r_~cv}4H+v01`uzRax+* +Ma&hiDRGDm$^owz_L-gD`ky(a~t>XspmrCXe|v2A{JbyZz#spYv&qzcuyHa3v*O*tv^*xVuOq& +S(UAC*nAFSoaoMv_cY(P>H5p!cL<4z*1-Qp+v6GcFt@pnLtrMK7V06KQcSSNAPRolUR!INYKrB-^r7O +F7D6lFXZhN>Gticqn}??w#Ib+H`ZnIT$aTopGoSm~~c0q?we3?#Va%wLY9S(qPP_d0Gn}21+H9=#Jhj +y9r*sfOfXJ-b(j5lMMhUt^tqFh+P*2CWDzJg~~}enN7V`3MQjy`7%Brxj}`YNnp~E`Eu`I_a1*WBW>BjUj(AN!2`87aO*ZUi=RDfIGv7FBbe49r*M3H +p#38pR;_nYB^6-gv0%OY!!<_JhFspQHbFR2FJCBe!OhkWmf`pT6AsVxdhM`6sVK^%y;~mcLagNc&A>X +cw&d5T(cwh=>>Tb9PAzhuQp#Q0kamE*A#IrN=r9QZ#L%XyvBdlH=)MHnr?i$PN@f03$DGl4xZ;xI5U>b`S?2%C> +fUvmki@8A#k|kCp-57-%L{szRCZuD~igUm(=J(yT~wdBo*#XNOyo3V86nrU+=&iKYX6vYMXLVR +pTEQ_Zh;zuA8O1_Lt>_K)_C_YeOO7?)0gvJ47BjAW+a^}CqYq!#uoeG!zc2K0K&)ZHC|bc+gJ7!+Bpb*==aEby4IVAQs)4sLdbp%agc +oS_UK+I*_w!{nAd0SENkS$D-o(*23Mmz^>lIMrlpRjDW4bv)F(%0Wj`(C4bn(*ZR%f=c5;6M{B7qI%z(-O0lTqTqO +Z?zrARc+p{BLA;0fmf@5lMAtDMM~2V9zL-{v1k!!5_FHzRsR)5fgD2`U`$(YA3CMLJ}{)zMhckBeoAU*pnG4>da$v8Jg7Tehb`eJc&+E@_?akN$Z8#3h1qSmCKBP|Y#MMmy +wSxe=eC6T{rQ#287*0sS1{H +J=@6;`>Q@#{%f%h<}8tdY6op21iPBWK@2isq+(eRXAUSrch{|TL7%8E(8m<>wsMBm!CD`zcG6VlhJ@il9D8s*r?diLsz&+I2jKEFzW=qo)T>k=Bt +>h%}#XY2K%_;kT-`~ZAe-qw6Qh6*La)JN@1z0HdCWH$Zm(;)in)AOv+b)YBPZ@XgN?q>N;yFZ8V5-o4L*iPW7TG7Fv*^q?!$W2c&BD@3IxSr`qfDf07*D+3=UfTs7!pM1Sq&3ssrI=jjIk@k2;>%uWSUAl|?nEElj2=E)66Z<^Zgi%b%|K~H$G;Q03{%~Rg +2;vzx9ePFbGM+h2~IiQyy79m_ +%}SgGQCS{?r^@zfFlBcyk51wZ3j@dN05D%o*7Z12KODM+e)7%mrV$To9~2sn?&>tC-?Rjinkh?u^{$Y +;_03aar3^M}}U4Hp5q-`?epv#G`-_eucGE~PF%NOthIPK3bUc7wy`HRh$pMCM_)6YMD^~ENPBhn23ms#uvQF~wyuO{%Gk&$>`|T|ut!#6*pm9krriG0aP5m? +Sf~pH#y!JR7V0IAXToBQ290PBq_&abmUf8MidKyM$%KXsl%{d1V03$5m=24GS>o*y)t_oZvBKX>QqQM +uo9fO!4rF`z*s}<}PN6b7%1-&~?59d7!k7ywGJ_)|ysB!!&?FWGlkyts#k9F=hgZO+6l8L=Sc+dRixF +{B;cLMIAlDJK2Y@NS`*X-#Yylnu5wxXJvf6efaI}@%VV3mS*jB2tnHmgDp}jKsg!8LsXQuO#Me*fZEZ +%Aa!QA^4m&low$aHv+P?sne@S9)KC%9SH{eMG>gW(am`DnXdS!*^8L}y+pova!SV68$78&LBh>lJdcj +BnFNZJ>Mo;Bnv#X!FEei;A&*;@br9smFUaA|NaUv_0~WN&gWWN +CABY-wUIc4cyNX>V>WaCzN4Yj@kWlHc_!5W6`fV~UYvr)jit(lqP#W>4$-#BTTQ%Bn6!LNXhQR7pyj27|%8FyKDxKIyU`4Wnc}WUFG<{R~Sw`<;FEHeGJAXns{N`>n$Uz5bvJ +zn-&;E6&a~#Z{WH^K@2R`x$3nrmH0MizrPz=y}dL`}*D6lhgAPued3gpM>n~x2G5H-+l4j#kcRzu@Ks +I_V)HV?-t9LFL+W=Zr5QUrIqM!B_1sR*i`B +A7(>U)2>0${m5e$x>^M#)jQJ}%}2!T$tAUJV4pF^Q~&3LCX%hCn&1Ry5M^CE**lVY>vxoog1qF7Zg{V +eB`jQ_NXGMZMWGnx2tJeja#HnL9BY~jbz&piBIpkcX8EBwYUV49ibc3Aaeea+{7u+ch*g7(Jea-LdqR +n*?$yF^m5#OWl<(hNJ!c`*@mx5k|g5{PFo4M`~vs=uZ(dooG<1)ofuPNx&Zex9=}Q0?#ic*W__84?<> +1Q%CP&fuS)uvOJfEtH3gge{i%JwX;JPG9tt +X2@a{uhq$*gHz`n^>Q=*RLRKO>&e!+)HwHxF>X#uRD4HnH9@-)>t?9s7!tGBAqx`1klOyDO;S}+;{WW +nQ%Hr(UPVvm_InvT|l|5PqgeH5_<4a7yWiafB_v&3AmV*yLP>%%2{>u?ef&OrbZxXIx(7;*8(qx^C!# +`Eo?X&BoQWx`FgV;~Wm6ESCUCpGR1*1-6_Q0Mo9Dm2MeQ7nf~pN46WdrQ(gUYgCHW_-po4x8>NC?0>2 +hCJRE(f~kR`T5mkqM;@V1a~*E!b)3P6k}2uUuIi-?mfoIJ&J;m!VIPJm7#8XnyH6)J#9E!HW);oz +lpM&;Wf+X3L5Tbmt%zz9e4jOQ_%a5}b`Jto-&poRWw%VF;ftar)k2~lC4p~qd4agE+vSi0Q8 +@adKi`(iWpKwDEbA5BADd%9lw1zD97t_#ZYnKHsTMpS8c1=)eG3!-pn^#7gm&dJ*Kw +<=lR|Di-%}waX+nXD$?$d0aO*go>{wgk9rkOFvuh^?&uLAe+VK_c&Z~mwp{8zPvg;L0JfmoWv8&;&H& +E>}h&k{gut?>{UaJk}w$Y&|ANk+z+sp@p|s7>t&_HSuwY@MxY9yA$k9g|66I>@DMs;sg}%8ijPc@WJu +KmiGbDaER~-piQC4AY@L84Y2SRZSKuIG57!{&91Ma;A#t;YcT$$KLQ45#mPY8lzrfQ$)ZA3NEOotW)00j!OWr?< +et&6I~cp{B3tn-gZ|eF_yYt58A2dOz;9Y7LX;5aDkNIFH+QYQPMT!man9S<5A202qTZHSUjtWzlM!Ux +FVHL80z_H!L}^r5)mFF%k(!gp9hZIS1J;e+w4XeGxddjmZDjunmb1+#A?L!Tu9`qxpq`e}P!6wgx$>d +#=Pj)b+WS|^pRT+u0f*;u-X+g^owENB5b+nP!;s0bu^zM>0xPA_-dQt|59C6^L^oMuFTzBH8 +d?(!cvxOJ991(MX*FW!9|Ob&;dWvQaFNY^=<~?NZG`QamQvWmgp0V(~i7UAx^F1#H?8uhz3k_!fdlyTROPv +XDg978{!1_(3s|V>NB@9Lz9f;%XS8Gq1Z0Xm<5wq^T?&^~Uf|S3YP0*8OQUM6F|gT%Uz#`N#V9rT<07 +!z1ND{#>~I`M=TaC#y!Gj4w6%|9Js{f4^%A({tFt@AOq4XMet@+BrKpJ38u3zCU??{_fk;$@>$ +uNjb$)BUsPO`eFUrz6=i@IrPWA^x(Ji#IbGvc6uA!W`Tp{j`R9X8!NM*x4le370NF79`f~rARO2uzx( +r>?*CqfV?;-Lb6x|GPskr8IxP8ef|G;Qu$5G9+WreDX;8tFDq1v=LT*ua*S7^u$@;HZQA4@gB*=M|u9 +k?*!V`}Yn`E`9>;{mb_SzxEwno7uT7t0g@?{(qU`<<6dV_HZPAAGa1b{J1A>Z(A)a{RPbM-3p_{8h~wG +)f|o$#snS|B+7i3B)`V9w}TdS_@@GnFB){3=r-Vj3azk375pw +CP^#fUD+0D7EUi_|RYab{Vq`n&tFc_&Z3IISJkb>pl$;3QDxO7wQZ_l-_OBQo69wr!^OxWUxy) +auQCNc`O?NOZL3l4%2<~@K#2c4QR|Sj^fNX|cMO#C7Q*zk60Vl(r;6;E-R&$mjifa^Jl!wtA=F?)E(6 +oV4eYtY*TCR-OG`B_A5ZQV@Q&T&EgVK_Gn5d)F~gp{gXk2709* +m|u|B0~UBe@kxC`oRDlQ>?!>`gbtmfAD2HN^#;0sh2Mw( +$w_Mp=1?dfg3p8n?djk-gBV7^al^+E03J1XBVzWvW{hrq(H_T-DED``M~;p^CHthCP-Q4%dy3szjGNY +*J#)4;B3sWwH-*F0tmjDB4CYZNJ}CI`6%D`29pXj$4<@(|}<*Oh7RLZW~tS9^t2Ck&sM9}L +uSX5#~8?M~h`;+%4Ur#RHe05GoAtz!*?HiYE<%yT1OH>J+GL1x)B&?zH{Qaav%6^)}(TzAt%zw+%dfP<###t?-!qlC;-Ab +E>OQ%70y@7A-dnh5-p4z}p@#*!qh++9mQv(j3`g;hK8QZ;j<=A{nS1ouj>nj2NedKLf4Y8+arIzO96A +Xu`ERXART@HbilZ2uocd=7Br__BD{9*0~hGRh$(eBo+`%@S?YaI3h-)#?~lt7lH7 +UrGiwWKL9Sf3ddhby91C^eFtQW(P3xUHE)Q=7Us~nN$rRSaZ*dGGUjHm=PqzManzJv9cwM?p}p3SWKE +6et7BGHHs%aPEQmGl$23ap5lYuc=$wcS%#3d120f7pOzB$=A4Dq^m8k_^zW+A1wJRd +FMeZ^60@UvSY_Td{r8!H-E9nJ-$=q8t4DIu)d$H-rurH`*#iXTZFqjsWWRSmR-lN2HPwU5pC7@_iBut ++5#Nbv#;O0J^AM3^aA}sn|j;Y0g5&94!Yw{EC*ad{MGh@p@~Hb)@2z5Sgw+w$Q!^i>xYpywl6~mL1k9 +YyX@D2?lbQcV^KZ$<6{au*osZ808V$j6R8R-pij6PsY~1To;a7zCjzZDq$Dg12q$0#tB76=(At(#>-A +;+gieJd#DRp^K&tG~1}?MtdMl_0f`f$||1xlYC8BxlRKsXRTtpb3&Q?i|?j?G+P0TK*wja;@TYq`wJC +{>}>BsO=!o|Q=o-cWfiA+$@4g@2lRDBCi^dO*h>X=zj@0laCV2=(_=x1RhH)U-+d&&!6uCj&C_gZG$C +gRGp(Zfcvn8wxjlFy|wXwY`i;aUCQPk2C1U39;so>P9I>bN})M=SeFs{ssz_hJ`W7c1~Di~f}l6 +^%~I4{Ih_wUNs#29OBrDcS*1%K^)yG)T&sH=*6H4_!mLc+4f!K!Fc#b!r6J-*s(Il{24u9QVhrNpb_Z +D|aF{c_kiRDue1!qzj)CA}knh_vK6>N3E63QIBr>rJBHG1 +ml8ekVB|YssEA6nL&f_f{(>~}^W2|{;Fbhj);4!ji_G6bLvv$^V#i2Hs3TnMNt$^J7s3`ol65TvLBV) +&ZGwixrWlCa1`n1C`ya^mIwnz$vJb?O+CaO~&uY$uDMFjlO&6l)rQodEY5DCbOaR0yuEacA^UC#>@jX +GkcQdw0S1NL8HW6n;5k@AfLqa?9xYrU@M_@9H$>Qh(3MK~!PYC{kE}mi*G{)BftvSbVtbUMaW7axiEs +p?dr;;S$#F^g=b$NAAN%svY2J6e?Jye4^r9qaY5w{skf{0nVYzoG`2=3#J)oISNb$NSLj-In%mC5reU +=s8xp#E%g_ReEp5ip;HtHlz!5TN1;$zO(dS47UU&0BaG^m;E`b~O0xIl{*@2C<@DHaP4LnEmX~dvW+! +9+kBOrBR)s#0R4xnJdqTbR5piUll3z1Z^RiNUcqm9UeVDV)kc!uXj{}zs3bxdO^rV+u<``xoDNGp$Qqxj82Q4Cyj;27IvG6}|5RLMp1?3!P(Y%s-wrvTM91j7>LWTk|mg +$g?-i`W(tuB9TtJX`LD+Usz%tIifZ##%C2sG7eM=R+BOK?!)HA=eR9MF;19V6nAf-q<)$)bE_8u0t!u +C>yoEG|}-d(zCdE9#dkhZ-(L4oA+%t0!UyVFm|kDa^XKhRqa)u&;X+2Y~%cT4)bie6j~H@u7zglK;$B +08X@m2i2-V00tnjTOmSnb8p%m>>(C=z6TF7iv@6$;z9x_!wgbLW9t7D$iHF86RvOxUB-(*c8EFV0jMw +nfDHZo3daf4q6K$**lF8h}Qb2cDTx-iFXcKE!Hkp+17;2qv%gPzwH4W7Rck%v +CkKY!6OupADPKE>nf?6o$y*Bt#V@L@7!0~plz4qbYf_FWj|h1dHilSyiWcpt~F#T1=O@3ov(E7)}pVX +pf!Ednn{<@&j{wYHkPH|h_^2At9nwR*4$AO&S2iZs$iTFWW{D;HK8^mrbHyvt`ZOj5&D#;Zau+XLls= +=Gj?y%&2DI_eo=DaVby#peq{rb^m=xm=i^Pf(i24YtvX?ZxvPVmao9uULd +!-b@$-k!(K%P%#6gqx`hn|(@F@mf$F96e+9bMM)wyRbz}#TrS*o4@S8s%<3XWQ$nq^z_tXg+CYflW;4 +;OB)Tm*EV&yh2NK6h76!H7?##JEFhBLP+g@mVU6fQ5@xD}JdPGo`y9F=3)aR_zcgL6y8weOkjOCP4?v6o7Sc|C%MNtkZgi_cx3U#^_?P +)H1<^XtG$;vG9iHQ}u!~;2=?~7DEmAQqbvJ(T*aOC&BtlyK{7Fb!9VV{0aYxu%DJnZ(L4+ev(A(n}jS +YB_Osn%N?HyJX!?cR19tcbl@r5()~(-T0dP|%0mmlgV6!x}mVZRkLA6Lr|fST;D+2qL986za{qc~q3` +b~Ky*oZZz7)PRq}da|KF5X#Jky4+wN`_FnH<&JhrIkCfU0n=MR;~pDa64gUnh}oJyMP7%nk-&EWE_Dp +D2Q5S&Ae1r#QOs!&^z|0qpvq8eHULTigmuKP1zjZdf_9309Q2vp^FG}z_kjWc^H##W?HU3p0KqzVRoh +rW{Pf}j3c8%_EpPVJ?a3%Jx7EVWJ}7ZtvymE{Y$%$Y=Df0}?rW)Md7D!W#``{# +@TK{gLUa;MymK9O&06Qx4DGyuWA!Kk-t@_}~_%cnfk6#Gr*HruWY2XsL=6*C_MEFv5QLGv)=`pFQM`F@=DhSnPl;8})(|Wk$Z!X|J% +J2sdQs32~jQB}v;?0V!e_nTdlfC4XOD# +>4X=RNdZ5nwl3lqBdP@8w{XZV#n+j?7F)CH}je^Exn^eA&(;`}(@{b37XIBPj4k8`V) +G)~)u4dya)?e&Dwhz=!bV>HuFb1y5;ed?K}yYnk>^9uET-uxIKDe&`?Z$JUH-B=~lh_MGloo@~)780wl3Hs1b-5frK_QMYN&Mv^m`>lIJfu&1%vRwXj}U5rrW*<EpSZ4^B +Yv|1yleckq`lvAP%7`Q3=hX+70tLx>2L_$E&;-g;`GpsCC{+0cXZ0pb#~+18|GRVK3{#ir@qhx41AYAb1)D`Y4)fN|;wu_ap07CD?; +rI%_5~jH#$ewig}6zD0AnqU5rp%?uW|%xp8|91wyjV$M)sz@CmV}qg{#G4L!ZN7_T$`oi<56bLFHa3B_oLj1eoSeV?$H_M*=T-QiijjbiZwiN6{KRculiPZVR{rcrJCJ8^mT;Y#qgO7K +YdQ|D`a+>3@DOM$VJUgsgr-Ysw=PTXn#b1sGlwD~imD?^ev*+Kj;d6n@mLyJ)n}7!H+kfz{|K;Y^GS@bX59HdP)h>@6aWAK2mnS!LsW3)=7|Qe0001B0RS5S003 +}la4%nWWo~3|axY|Qb98KJVlQ_yGA?C!W$e9ud=y2tFx>Nzq?1h210)zAK!l)ZP@_YTI0Ofi2|)=C1Z +IesMDId&9KYDm4Y(3W?2M*qN8P=6pLL)0y|U=Nxa;0!@53i3%^ggs9Z+*k#KWupL(Yzl#_}F8Q^LhWWF0Vm&EbpPm^2+Y5%6s(jwd-!q$VkiAahzbA7QXn5Gl+wk#<7H6`-!wP?$daq#E$S_Hafu_gb%pL>n#NW?1Lb9Wo0wQeUop{lITl%366s +3WA)%6_}e8s>lO=Xzi35Lo2Cu2aqzG|$Xo=t}DhrgL$x0#3c&)?E3gl#on36sY#58T|a_CX$cX8uij+ +i!-y;FWMtuH$A6jOm$&F$N9iSKopQ-rTUE;Rg_=ZG|>7E8soy9rzm7J@PmJ#xk`&p!i&dtKshY{uciK +|Nfu+TP63pz4w3VVASlDoeoCs+u1a05#tXEll%kxJg*m0+-kN9l6Gkc{ABNebcXRUUMmc@H;7pU*2k! +wN-98F0n!$%tqFe{am!f5TgD)6`7XpS{1e2@y=InScAA+*jO`uCIV?7^j4(Igw7OKm67UZXs;XB7uI5 +F`c9GX%0%@@>vQAZ1@mP+}pk^~zt;%8Bdt@?{+o2;i|1-oxS0aA9f+8M5#J?Z;4#c4}9kE==dTeT-eA +vYuP6}o&VqD9~`Ed**9Hk{V+G8AG7i +8nD+4GtOtIB6m(?m@2uC6w_|Yvq$)A!2*?JhJs@YARfcYvp`(-GHVfu! +uzg@&TQ)m%x=qaI}e3Fe{{ZPbdsFvJk3)%;{7lYnmXoe*8x=1}nJ9`V9{k|k9wi0e`)meqaGaK(Exp7$iwGeacE%@2 +V$^wxEx3Vb#+#gcR2-z$M3^x{)bCis;Z~+O2`I>8g@hFIx{H#(MiWKBdAQ-td)TlAL{rM4Sp4oqg4Hw +H?~HTHL;yfzoXQk`N=ifah0N15HeIdz+>%(kRUh$uI?2pesn>%atE_ybc8^q2C46;3BP4v|gkgoH`!6 +B+EV`ED1Pct|KmhL`qQd#-MbKMJZ$J!~w+W{dlWm|J(ap3#jq2n!t-5M<4rCFpV|+%R!N<4 +}k4w$IpUzH)MyW7q_$+uD_)MRw7OjUe)$F{n5IwQx-r>X)J|?x~$5`wYw#p6D#N(05@^jVfGRimN6ww +6Dkof%BE>bnDs@2tjvV5z{w?5F4|1;oYE*~<9`C1QI#4Y*O^+FPqr@-iWcR*Gb$%Smq&*tw&wpWO~Of +&CDWVS$N@0%3#JWOd{8I&;B<04D$rTqzCv!SI9fEp~zU&$mxg{M9MU!4D60f$^v0b$>OdfN95R6ify{ +qW9HPpf=>UVzVEi;W@&fubVj{8O};?L*iQOjkdIXD&c_$^X(I`Y41q4w0*V2xLb=vvZ*!2;~6yBgCtL +TY3?^7{HsC=HHJCadov9dmgGi$K~-rW{(Fl&Go3+S&-iz5lYnTr4aHQM0!{r*pbiTvb@~o@#3PZX3v2 +{=pe-9!s5KMp$re%atZ0&>N9vpTkhw+6{KyHqTx^DyjsYk^&7O@tQN-gnbWZ|#KGqz`BOXzRb^Hab5a3q9ePcmb>}ST7|*s)sZH# +_6)^E!^Slol(Rh+aJA+;6dFfPGv5Kyw`(gI5Gdj`)+d(Q%lk +`eLa+Xs;%G0HFEhpi*oYy;KuyY{XP+1tl8UCQ7s +O_$R6ltuRThOZT)d>*n5U^Xw!cE=!{e*u3#tVOQ2WTxPPyUNFUqnB|$FVNYk?Tq~b=Gj5>BoAuC*CJp +hV5@uaU0?h%z7n*wGBZvxl$NFmU(jKk=?wxBpamB>Jb<}<#yV}VX2vt5nFg`*>|ue>EZ2Jb;#p*xMT5 +VP@oo5kzYF@t<(6K?H)Z>{;`&vreg4;2`-%aqeK7^}x*&=Y>}?S1mvEtlt8sOT**%0SZl`DVCC255ZPb+ofRI^iGx2I)47QfRvxa +0ox-NWf*Rmsv4rtoL^a-xM4@5tI95TI)asq*!UnNk|Euh)MoVBne7A-%gd=WlF6SV-8I@qhU0)n*x~A +XAJPSvTpJ!(Dx`|Jxlv52kNX+8dfQls(Y~x9&Zp*-R>&VL#JzD6>&rKaq=tZ^5galoKAxALO6N`#6e( +auk=B${&G4Hrz$n}*n+_3?B}2mSX8pe9S|R30FWUcPXmyk@+3eA7P^Xq0Qm`YSn)zFe3D$Ag7P8@IWq +`DbLK!!r2{0}`eM6~N0e!CbiR>*v(M$l%8=}9>8L3?LH@8py)WnBw^efXM4TwJsU#KIud|0Z0BIN)I( +ZyGs>8C1iis?+z^^Be=K#5HVy#q2ZiA5ArsR8ZwE~&XoI&E9%Lt07rE$4P)`;wftcUl$S?<*AnkAqJgViGy=?<0rvMtG+9^ +iN_K}A3Vo5iaQ&-DR@nVSV&`YxTP_l&X!dUD=U!FIJ)lgDj-Tq0V$2*!>Bll;+nHUQn9m(&qO>moszSQVwGz;m0w4kJ+DF^G&lC_f!Bs{K#(${cZ9RY +tb87EcE3phx)108-J<~A6hI^AJZOyAXk~;OBDB?L5rOVNTMZJ6rhPy<&qC~%(~(Yy6O=h^SfNu5#-1EC(T2)%wZ_1cVLvOy(&)g-$DhCYvhBX|4o|OUc^jB(QAjMVdS +{UwNsF0HKEf*PE3aUQgWQ|mgAVZQJI06hxi|!gU~2C3J&S8E6>4q#wjN~H-fPyWtR4a+kMYnvut= +xiz{XiS9a#pT*M9P#aywWnWoN3QEU|GcQL?X^R+t#d;xy6wCv-WVzgIPuiRci4$eWlt^dE_L~up8 +Da+<>y1K|Sh3y+g&34HnFY)aGbXmx)*Ll6S_kx6L0Vy_`a{CS6YEg)`2( +$AJX}yjXgp>(Bokt_3h?G99aZ0K}34Ew~)8lTBSb{Xj2sxzf2AD3>h;=sbE=scjss;crFw0?3b%PGqD +9Qc|1*Mo@6|VDHYKxQdA(GFiBDr~#MG3FNLa+*&2CK$0`a=!@|xb2$w+IkwOAv(uE`G%XEE<#Dq?q +nNMG~xbFAj8Xy?8pL{?*_RIq)UDZtfb;aB!`Pg4xzkyi3(4}Il|v;!RTkuGgVbS)qMo{AgJh7fKzUVr +B14h+1~{!+&d8m;YJ+kUrod{JNjP`F0N!ZjH88;9Vp4nh}Hmk+TYz;>g%?hTs?SRj2Rnl50s^{C8!f` +nm{TM@iBXt&y6t0VL~h8T;$(SPKKz|2!s7023eROau>|=3{o;NKKRPhv{}osnjUq17WwU5x)?)Wj;o> +_@vAf{!^nM#g(P8hZmb55cD{=EfuO79w!pexP-`?p;%1O&0BMseja$c8hvx;i +msJK~I9pDJ&uWBGr;nS)d>WR1?H=aOk9YZ65Pewa`e(2pCf(7960FtDr1Vq+G=XMw154Y?;fG2g$+LY +k+lm@MP~H?fHAs_o?9V6ii6@p!UW}G@WpO4~+tB+ROd6F>A2gVu2x*8vEpPJS&&yNX~vGC +F1NylLQFIW!$O@G7vVq-tUPd|vf%68KJ=Z&dyXi(^vLrRJq#z45>sFF@unZ0Y1Q4ZUk!<*JXr^no6`vM? +m7YW$odhU~AOy$=aoUwwg8=S*RzMK4PF3KzryF!HF;b*|$sLoic0h)J@3d@+YA4GKjb(HmIMc+nt)@V +_A920HXjx3U0>OG4sKWb>(*@jgn2S +#b_>0Cyhii=C_hVs=OP0M2Us+yD!c6V~Hn86f8EH!o7AqJZEt1e~l34eh_sWDC=^XraNsO3TcUPV>uU +rxh)m1hj3S+U5&1TK6HDCQjB603|_3b&fI8{>dZbvm7Bb-O+jGU_A +vMC5RRG$79z9&3T(k*b95Gj4tA04^q1@MGi+%KyNv@`D-#QQP1cz@EBNZF>oz!($dY)YwWeF`lGK=u_-1Cv4W84 +XlN)2N($t@jAeqND4S@hg;44fR8fHGeO9Ajn3O`EycoDKYid_go93qpCe_J0?4gDWgNrRFDk~1mL3zS +|F3>0J6G_lr%KQVks|z%@$tvG#83?gFI~c-6fH%pDb7;X>s+mWWuq49NmYw}3=Ws2GMKI%-^DyI{vm) +I97Eo_tWV6Xl*2KV|`3g&#O_kA9U5&wy8Z=$^qJ-p>EwX$b(8t5;rIjXZ;83&NADpGtiF80X#W?*^>O^+w$CK8i?@hKoV7uWRE +OJ!R}xR-+>G1iVsoUq|qV?U@f!14T>DCd1p9E +T%3f#n|=enNUfVpy%X+UaIZ5{PeCW2YX_{=ynCwnt!V_@Y>*a32`TA07lYE(0-%FE@J-6G)mV@AAPNL +@b^yT67S7^HHGkm)8LfQVplTEul$rrJ$DE(dxjw^X+TpJ2uAVSrI4?l$n_ce8xv>qzWEN~AmoCxTY6o +4ip(SGOM*qwN|EyfKw~F%(#&g0u}ppNB;MQpQz8KR;0;a>k-n>rNR5hffnn41AI}Vif*@je00qp9OBc +mD6>L%eUvk6B+tk*quB&7fOz!5y34N#WEK$xOOO;JU{|B7Z>$G1phAnieCpyjI#)}`^5xO}`X9VcFo!b`WqY5|LbQ7VKE6|5AL{}WPgI+|JJF8 +e3^pQ^}HxbM8);4`|(kv^@*Qf#U{0%Z4gdRzb{ze`8K7y43}Qss6LJEL*Qh;S{I62VfW#zaR?&^y`+d +Bb#5h8$0$E%*g@h2hLII;pZrWqQ03=hM)DMmvHoyh$k9pOa4)bfQ&EvKTevCvUn}_zG>f!YLHPGcf-Q +D)%aHj}{?*pu#w2k+0Gcl=Kq_rbm>rfpUw;&v%n?WjOLN^2Xh0=`!2UmV0&yRck3v|3Fp7%jLOfzju+ +kuc4RfbAj0EEext_lzJb)VLF3Scx8`@HcFP-cPS0?qa|OHrqOT)6z$+MC<^GPFCaSXCa;;|G)xw#SMq +TbhLlq>%KHB>jiK6HwBHCxmIlv4P|bc5hhRMbLAT~Zi>lFzx(7Et%_q_R{08pZm +mmO$cmTs7j2Cfhd-_0RyWs`mw-vC4cLwL-?p9VUP(TV5j+A73TVsmcwhL2yW*13E4Ar|{y^i|zO!JxD +QW2(+e^ic5Nb*fyT?;)SJLgVW#Mn+&q09%;y|k)dS +{0L4^(iLYxDyxV@wmMv#vbGg#aIJBQ;comuOUw-CAi%UNmTWD5C;4$155-Z!*)ij95yJaZ>1WLRSp|9 +y~ozE$OCE+*K!)715a%G1N!CpJGhoy18Pk{F;>MrkDd|yHj(6UEd#jzkaT`U1z#$X9R4Per195^#LW4 +38c_6(asJ~}5{)65i|<;aVR)yXqhjnp*unXKL*pIPa2j#;Az1V!nrP(wFVF>SSp4e=Ge=;kOm)BmC@MzermZ(cX79znLzkNK5bY3!`jRm +1U^>3W`V&F>-|DBJ;Rt?1&-whqOZ-j&c3IsaLz-1jkD3+_(%^6Ip4DPG9Od?vTo0yCAYTB(Z|oWB(-+ +?G5F1S41?2#G97-Ym%BChNYWQUJ^hP)gIF8X(Lmi+rp%k0zIoO}1jPkx^#&QoM6%^7V=2DPmhDCL5SB +^kP%7u<_(UQ-Vm$NEo@^CTi2O2At>x0m9LfRn${P-!97opMJaArA69omgY;FS!r{wRAHr +-BA?a!3NCe3fYNq`ZYTnCGO%cIs2N7VsoPGu3K#ezazC8W0rQ^X9DWTN4N(TJcpbZ4SQIF~EXJ&x#s| +t_N?lH-)>^J*M?9B0caNLgPJM^yw`|@s-~eI5;&PMcXmq*q6WqJ$QGVc?Pe=s{gBg@tnSW;w^UJ)ia5 +^f;s!hHiwLs7~VFDCDzWE#wX)G>xk1{0zhzvo?x?m5KAl0EpHnI7KlyiVqF4eKpbg3>^yw@6Eph!AWb +cAd*;x-QLmT{xPFR+ze70|c()Yn$6F_u`l2E?c#l~1W66R{=YYq-cTzNG2-4`)hTTTN0 +!poX8NtYDK-wmHq;4D60?84{Er|`MA6Q75Uqo2UDFUIIA&`V!0x6_yZ7=67Kq_5w+4XetFAd +vX_f-$T@az=;fg2u38pO>mI6H(07?m9z2r(O#L&9*CKfp#BgeFrEkLX7($+TI)&#NAqBr{5#W;MG!*# +az){x>)HS;NmO^2_670>N6l6SOiE%z0xpT1S97Gc+_*)M2&w5A%h`)b=4-Sn~rUHFegG<#NJWNaOF^L +x0k@e>w_7jJ4fAE@}dcyZjOOkc)o7%=mDJB&DTNoDA!nOTh{KdrB_D{HU=@bAFfqoXh +P5btE6zg)Xxx|vEsD98#-iEhSSew{)@H!San6+vVI=#td`Bv$Xd}{#y3c9P@9!f5^I)`oVxTJMN +6=J|Yb>fqpv4FF0?Jmq0mMi<#N*Nfeu0xab-)fe}@$2hO4mA?X8(3SBnXcib=Y&m$TaU&+*&I4miy98WV?!Of0si)Cj_?m|WT{ia5h;q&F>E30t5UIjO;!X4xqT7`bCbzw9(Q#S&f(RTi%0UKL$fDB5?)B1no(LW)FBww3u-80su}X@1VC6|UvWy$>u* +&_LYdvMirnE6viWqEKGV0`wf)Bze6>92w#5fMc$BX@oc1|FQArz}$_2`+skh)1k)VlV(OZ?loX5N?Bs +OmthX#7~@A4d?(l9U2jp>TXBzMp}s#sVW1 +h3@c{0Eg;xO@R=z>~QLg%<9Q8-DNwyAn)Xc1Md#dCw(XGjL(l%gI)e~!|7W$=pUJe1ztXqZx4WxEJx~ +hJTTZC?pk6GbOz7w7Bo_iMk5Z0h$>LdB=isdSwpGEfSTjEDq2DpaDHgLoR3_)D*joFO4+th&h8wNtse +7Yv6g<>Qpz8LV9a&aVo%ZIk0qpmhA=2Jj)gE=p&Rr1v10OUT5aUOZ0U*#u=Tg?VO!=rxaAqTpl)a!s( +x3SG5c}XDJo~4j=XlLM45mGR@)DK6~Kd&9#rBmm=gTQf#5ER@XF07Y^RMn;~Mn|19#Zz&IQ^+CvEObA +VNsnuujUVFz2-0z2F0F9!G~O&nlt+CzkVo`V#kgBfYvf`AuO_>_+cW|OUDr}Vo~QMWONXDy0OtofQ +Xc$1C(PkblpU1YVA}~U{FvqjF-D^DKvc=7V7=LflAUbRH9y)u!tF5WM74^UAyt|20r#oSTshmmoxeaj +AyaS3~b>1!vhwRzygD|w>9)W++i_QvbFZmh9pd;{y=IG;?UL=^lV}N0d=jugad>^L1P!)yH4MB51%cE +ea7m75I+O{SonjmP)Y{T5e-C?E?DWZ(002LCe>lA;!b=htJF>R%O4Wl)~pV!XXRvNxf~V=$KM75E`Mz +Wh;cu^h@(NpxDp5|2M=SNcH%>sco-YH6CX<2VQlJ7d_6tKW-KhI#Pz2G9=-UpO0g~P +)cv7b9WZXRsrhlaT{?*XuVm-?s)7Y9NZC&5?bUSozY1`BH02P!*%DpZ?!Y@r+@$1 +rOr?XG3sEF&ISAsb8RhF7(JfWO17L8?W^$Mg?+75hNziH%T4@a$gfn`LHIN>)o3~ZT-Cu&kgb^Y}KzF@=NgoY)s~7j^p$UB&Bj%b_95EiauKO=zxUNSVr57)0ada8q`UvE +m=^>w@|E|4+dQ4?CtKI4FwupB!0wAd!J8;t&w7-u085#YlZ&Ve@nGWB&i*(c=Y$4TJSoMr0HuSJbC37 +#M2X9^2Ef=9jq_^oL9s)S+4BC(|k4rs`y5t_D(k-W<-9?yPE;>g23N;wLvKqDNm +DQ%EURhcOc>{&pc>eB%rXFeR< +@U#fS%);Anmd3==ZRm$Mqgtn2V_Aj&-JaY80v0Lnai3ZyB0i*@*WwpeEXV3_PY73cK`yB`2>zkRT)x& +pbn`@jo*4(2dEJm2ZeT1R=rfuAAN&;Ack9uPtI&!(Iln<71fVSo_T*$to9)h5h-x>?_VmK3POq6MZ<^ +L%Q}|Jrs^x93;na6695N3ZZPO9&r +}%kGdJ`5`iWuv6?d#Le?#bWTkvqgH;~$!6T^2-2315#?;b@5q34#{|}HdB=JN*kzhSj7@C#igu~_ovb +sCQS%A1zbhQs1lHpw=n^EyY-g&aLuM$(KE$;=f=44wWWf^Z)B{3LiWX6@L~{=Ww!;7#NWf#z%_Go82emr+iPb3^p%UZ;^tLk@+pSVarTJqMAks1J|dvgInm7A=O=i@DL3 +q;=6DlAhE&4G@ES}oXkqnq3h9|5y-2QsSmg7HuGX3%@?T}R-K|Y5r_W(jX2QLp~YI)^V#t6=3=eer|aD=O!N*@AEp +sJtBav2bfE{ai=Jyk=_`htX?PUt#n3KPh~!XW-uXL#qiW88cBf?nM;`uaRO6`$bHA;$xaIS}cMRnq1d +nuYn&9@aV;x7KDz}Lx=rhXjxo+~sH=43?lJ1J~$qD5tL$0(!VaX8#Mu6&a)2lE7{0xzp`D;Xy!CNYLl +PwrNfG3i}2gcJU9(xWS7-yz_-Jt3BQAHdN7Uz0gDuMeUS +fJa@*a|_--f*H4G8CtE5dxgQk(^HZ37#hby+%jP>&WxISbCa%^8lHfkTtc(kMzfkd3{9q9n7BL+)26k +y&~vj6d!(U%yZ9$M<7#<7YrA`hA^m7W7kNx(n6N?!L8TibmrO +8vR+n-HBw92@Fkde>Es631UM6J&zV}~gzt-qiFZ0iwah1QJ`e-EJfcVtQ(H_)*BB0d8xnV4+q4BVF|4 +o%vW*0eNpsx`1YPstE3P1nSI-#_Sz1Aui8FW&u1vJuBGt38ZWJH)2Nx~qCnrgQBgoBx1Gt4`6Z&hW1IC5DSKNf +@m5ao*Qz{-O`3aWn>=A>7C4CTV_@Y@Qmyw6_0NJcYY1m6Qxgwxju_qjq_}#b-<|IISbW&i{?a1_Tq6JEG- +7dnQTjj~S(7^trS=wMJUPZX4an3X~eg!B$L{q8o_4dq`4z8sQSB-t;FjG3BuQOMmIXE5-q&;%i#S2%Ru+s1$Kw +ov(rE|rqK_t)bu1As%B5y94zd7Nsftxh(gs%NSsJT)5?PhS=Fy`b(xJ}_??WJa}#e+kU2a}#yZ$Wcbm;VgcQVx*^agPnAggkWNHE||A` +%B)WCm|(gH?GV$K(cU_>bUwW87G%}OSF07BBu9Hw5;`3$t68hoE<1%Z{+-6;=W`O&Q1g8{}?r`3{vp- +_!KNP@5;i3r_<}tW8vV0-eo?ir;-4D?SzDs??9-Gunt#s}L&t8r?NlW`Q;$;Yk}$$RR|frn252GJQ|P}6nx6a&YE`();=+#uV?W*;`w<-d2- +LYEP8N;I%}>U7=wm)rHtA{NlfxkBK@Z2j!&bGD6#&60fKPgp8nRB0`r2VN(6d~G1gu&gRgnHasul>Yc +;837pFl@?8h5|(OhuS~yktJQwRz>Iv1$-eTbv`@CqI2a`??0cCb-CkKf*BX!(1f2oa#+azj+0~icx@O +CjzMZs9t-=X#6dIq}Jf4gIdNi$mo!tJ_cVm;Z$~!OaPFd#_jqexWir$agm`8jOx_C{@#JeFhBXMgPzZ +kpT>rkY{qVxQv5Tl6V~P#pcZu>CXs_3^Z@eKL?>?3I&qww0+mRIN}&A%fr{&f`SJ2%^JsJJrx7 +=K3_q_JV?1VM*Uqxcb<2hJL4LMJnooQ<)ln^Sldo{|b0JfWiy*akz#_PT9>s{%Qk9h2)ccU{{09i&r0 +4Hw6Vevo^7SCOZG{Cmm%NA3>mSiq;Yho-3LosjRoFsiN8>iLBDAfDZI8G~wW_h3o-5|yVSv7tU~ZvDY +XxXnye+0NMC6|$kBfr=yb;>Agu%=OxFD&-#PSMM`W&-!V|=eBlI +;S`T#xfmOpRe1^a(c7`Np81TtPtIjIQ?cYhrlFq#u{<+A%Bd_xL7X_t%8Yx#Kg ++(4*8{BjKAo$$mk|ChBJiuwQCm%ER>31@w(Qw#g(lj`|?$4$G>LB?-g@%ivgtg!Hs;BM`={f(3U9q8%MsK4=Ia`996m_I|PCSOBHny +>kmFLr7fA!e2xF(Q>+X1HD2;5ZOA|KHNJR-uQBwLKe#m=4 +_cGS4CNQJ6|O`EHQRC`p-H1Buw~L_K3mW(e#)6bQ##T^)zLq=@b(cs +HYFa5_k?LiE2I!N_0*G`7W7`;{S-9#R5!K=%{X`p1_|mG7~I_sK7$ET6HeYB?!_?wNTMk8lDp&w^67SF)|FGSQ|k_TcFlEH37W7gyXk%%|%8q +~Pg=S*RG-t%;u|(a*zYldb0x1b;0AqnButEW1UnPP;=WUWegZi{O{H+*VmeF|lza?4Y~ayPjnML#T6=q5L7;SoOH<0jX_M<|x$4lJO +afn*%s>d-yC8v7}wx=!z;?GAJPQwyFFQqYMn57v;a)Sn$VA~fSlH+L(vEmK`)=JpvDNtsF(+Wf?Bs~E +JV!pPK{(djpFF1|NcUPb4O8bkSNTr-VLF-oCWZ4BDuWMJ|3!GoSl7o>}oWqei@K(=w^1-~J)jk_<>dP +38QTp?$?Q7QSeESz*30*coeej&O&A6+Uw{KdAx~pQD4FI3>i-Mx<3%P>=Aks~>Bz!X)y%R+8{>f)H{b +sLYd(o*+`C)gEdvNlrX~NZMzjS-2Xq11FqDNCzH_zCpErI3r0$}(povtF4wN9Ii +L4=gfQ$YK7++m|FYT}s8I +u*l_t!hpw}VjWD1%U2L&*b26kPVj|o(g<_}=DTd1aKv +}YRfNA1daC;O=HgYX!wfA@MX-)PtA*qQqE2gHrA-Sdx4-18*8d#tD?OmLBf}u_>+YJjQb1lDxj|CaLr +PWlr2>Lks6Kb69udugo$O$Ym;6Wxl9R^8lrZh!>{#PDVomL-JH}N!_dS$JJG;N;@LeM(|dPhzffT~vT +Sxt><8h^0Olp&{VuT)!?CMPMg>@|HtGEH~|#!1yq=-qn{b)~1#W`Hk+3gKDrr^*!|V$8TDb^8RFYh9T+t5l4cg!tEWr3GEe_` +$B1e1;WxSs4-TrY)15Jq0y=CkV1iQ2P3O%$RF(@JMD*m>a*VAb`7OVr4J-;=o#l%2UP>l+2vHz@0e1O +nrL#qoVefud#L5!`zD@6X<6B($a~AN*mBbdcFA1iGn)SKp*4TXCR9|;{>{x!H=t#(($Bz&>gp?9 +PO2NQI2+WdG+RBozOH*z{%1P0H{giY@u!FO-Qy5x&s)hvWA19#6NI;WdPV<@Ofn+40Orw%oFEbh#3<| +Kc=uc4)ruFkB)!N%&#s91;!8yO|LMOMV59O5Dqn!Uf46N&AqW6!`%|u+-d{(dZ0!U0l0870pMu1)au1 +jOr|JF5@UGGCmJ+qm$Po=ziGTE+!Jw96GcnB&dPN-*)Nk96@>c34NxkY&N5kDj^@(t9o^kZk~^o#vSdA-PSdpd51|h`0^o+_ai3@!g=A{UeFv$+H< +6Lt)QaC=!k+Y%HeHeW*FsUcG=X`Myg_oMSci15f4#Y^ +UfTL=Fvern<^1t(fl#E3zR8iWD4J=D#bLin=6>yP4Rrcl(#CtvtAAWqZZzC<`Epe_tgb9^0N>JB*H)D +P779KO6-Hz}QpQZ3Bckia56aKOU@FW>^Ui=H~AOSt{$hIwKzNvs%B>mv@8Ns}r}5SY%SwK=YZ4_j-+E +pib(85?v2Ttm%mbfffi!+TYp`r^vZxt2^iy@@@?X?cNGnj-}`z^!_n#0N}F(*x6+#0PAQRzG;=r9tIxf%O)uWO^SeWk1nyQjD0jBDVZeNtS8 +IruxrpZ9tbvy7zoPid-JKa(H_x8pA6GLaYGte|8S#8+?g82$U~JU@8Flo91e>0W(XK-E%l$izMC#nZ2J%+>6y6 +L@PSWhf{+4h4j@D?a> +QMs@JRIHUT%RwNkJfWzY8lf}&}!%wDb^MR#E=?Cd`05BVq#7tmWYI6LZfPqqr!!7s8DKKsL4Dm@|TA< +)t49QBVcs;%KX=@QMKW;yxR$5$gnEV^=FgsbJxKOPYIPuOKVPNir_^oJhLHKQ*=+lw}WGkh_wV~$T&E +~6I>9e%Evv6QRy$=N5L<9ETQ}}$j2cP~o=rcy2UG&*cpJ(ZF4}Er`Q{uAy@R)cKzkdPWz<~=$%E<(y{ +?!RpZ8{W$6toul--ZBgZ{XPe9WRg^u#fN`aQm;3_7Yl$Uiv&npS$t-VmCbN?WehxSMm6!vD$P|I`j&} +71JEtvzzfu;a%PJVr=y$j@y5f+t<_?b$}|xA!*7K*Tcb7ZeL4bAH@6E5HZ(EevG!aX@19IEQNa}1MsN +%{{P}}hKK=dF0|=qW7^v_rUzn)9*B0Q;?~Jgk>v3eA~ErE3)=Ynf)JktADn+5q^9mg@aTTLj4psdbM) +7Vup#>I5N@VnTs5LEU=I2j^+T{;ymX^bAcHJnjt>r21Xz$%KZOv1oxNEXmuoC+%fl)@r(lfTAWnXT( +idgheZI^b`0Tqy$)q{p9apMtklMGd4{~(c|Sqv?So#Nk_1gV9W<7RGv2U@|t1kWh|6yxoAd?E2QsyB@ +@qLVx;(5FYT4R_~BQ%=f**MwkNm1BA5apjeT(Yg3DcG$KCqUZYVETX#E?+p6EREu^ych)R(8i4BC!O>sBOZ?g%3VFb_ZerGlfQ^btL8LK5nvQ|t> +ozBJm0F7ivf>@eDiAhGq_^MAt)*OvFt6dhZ~J$snO|B!p`3$)tD9^xMpV~_FqNVNW6LYmecP10T@9R6 +SQxqzow-HFP=D3bRUYg+1N-1*nKkhj#!exzhjNEB8JN~Q>9YP8ye<~RX4B7Vf5mY^b>ZCuMsxXu5GTp +E+BhNFK%v)Fjx9zPU38dcKW>wE0&TUm`U$nDJ+(RFI;?SbFb;I%E}5!~XXG+!9oz46Oi9y_V +Mf`c`Spom!1w|tmkvw*9ixM;?!}qJ9X_h=?N5*g#P(7U%;9mVMUEuu6WA%gj7<@bB +vUGGFwP>jhTU}i*9>R+LP{@I4Fb1L`0nv2lO~N>R1fY3~wfX9aP8z}H^i!UJ>t_n~OTI`pa4k;`Qxb3 +a1xgyYEWA%0D-h~>CNa8N@8d5-a4lQVgQO62P5*K1017Gwm&5n_L-Z6IQmY4m^ntP>E5Ps3xy|Ql0f* +KHA|zi+*V4e=Av_{SvFScF0RBTprLS%YjNmh0@Ev|7iSgq#Ges$X?>R!wvA3`}ye)$xg3&% +B1h+yQIZ{owtR#)@4XhE}ZolHwnCi@CC+;aF{GUsaSpNWSkV-p^hU#1JwnXM1Xl<==$#BmP%DxHJ(kg +8JcB3u8nbYQpUt9xIiJxi-cizC5)RW%(#fNKAlZF`iP#Q-f>nWfEWtwkyw#dy1D#(n*`(Wq6E*<#Zh# +NVhl=v!Up>A$+m#6!r97=D6ErA?Cj1}=9ru3DyIrc7rANF%lZ$*;+xZ9qny(I0(-GAPOmAi5vIcM9h> +eDj^+uEul|P9H!1PjvbSEMc6FI2fnT!EA!Rlkhj~VFz;~{H=$-A41xgee-gQ+}`x5$#$mcqET?Xj(aq +Gv0To2zq)mf$K@vPeFZIZk@pwIuSVe@UkfaJV)tdd9Vdlun!KylK}OsWkdkZV@S2({c1`fm0B( +yZx46j`?PwBDuaufTSZ={H@qCt>to;g?w43lC?qFB-lpu=QsM%$CU8vc)+Y(2B&iV|*^saVp;)>JH=% +0`{{XCzql^J?^*$vJ37c@pz+fLpkts0J>PnIhz10j*WrFa!9jB}B@sm22e_B0i=wn@c}tdNCnZJdkTq +9+NaROeYJm7wLmTxqeXvd}$xa{6IfNI0(8jYnyuku`vF$D3s5S@O|4xWjEAk9N>w8wPrr&lrC&xyB0Y +BE=SrCL3s0Mwm=8-brXadyauPNAE@boWZMI@QOBoP>v-ao=ZUB#Q+{Enc2^6%qEdh7#{?q&ubgQ=zez +Yb?pSD1Mj4{TVBN$oaXkMZ@cOW(ssotx6^wOuDXJ>&3F%9K-z&9khb&haQi#C{h@-R%I#Hd^c3m+;{RquoV +SbU%=pt{^pFW{i((#3=5OeudbsoaNgt{>Rdbo>TV1?rH=4^WTl07W!(~k;J>r8RYFh76?4;}}GQLQMl +3KhWXpFB2Hv?rq${W629RjhJcT|dkeDEKTItzo0IFpGa9Z$GORj;Y54Xg +BSD)Kso!XULP^~8O>=Z5Hg%WgG0{{+3#zr%hW?YOn!`r=HU-WFfX3NiiNS5?p!SZxG}U?Tp;N~{`|;t +a@}hj}A)Yih$)ZV%ZpL9^<9K6(k0n<#hcd$F#a)HF3>5K;%4kOU1vI^N=yJK!iY@DqJT61)?4`Q#Yce +SB?1lr#t{?%qNy?r2zULK|uj;n4LNnu6d5ec+hja^>QM+QxXZ3DIc6ohhj3Mmf +pl0DZ8XRi~Yq{DGwoeE9-w80XF!(<+gjL>ol_AVhMgF88C{Z}FWVGP#Fnk4ral_YZcV2Oi7Ts6pr|o9 +>$?8Uyy#1=GHrHDQhj0g@T1uA6S*hGSW}3-N^L%;|{YG)K)gPH#3KEUF}UbKfs7_>{-fl*b-wGT+k9sr$CyvTBX+-mXVSIb-P7uOcEAfH;AFCzXef +0r3~>)Mj%7$zvBM#|UXYNu>1c_IFd$C8xCN`4am#_?5ZOa3+fjaRuU%Srr!~ +#=p1Y_q39|M*Ta0-pS3U&LlyWo^2;b0ihjCZRB=Vo9Rpe +w@2~L)SB#ukP0*#MtgxL#xEZIP_e@U6xqh>nWtECcT!BGCY8ip#x<|a=68TaVFYwkNAjORJ$A3V`BT&hWRk8p`97nubz^e+NwFw!2gYXE-#IYl$)p9XZ~-AXP{%S1v45{z?- +%^~D(~=+r7`RSmW?rFhLx`J$$U_wyIAw%4K4#&mkuuO(1!XqrDmFw1>P2Hrvd&45Ng8%{)F4IjUR7H+ +)%E@)7Pa30$NBgn6!b!4Fm_bf=|7yHlfCEVel3xH>mH}29JnXx??nx{2RO&M*el0hUL!~_YDw8~N*b) +(*Pl22(fGT397!5Yn^*PyYrYY-NgqiPs)y{zqw+fzJMr|ns%^dC$)JbN-8PimbyXA16*%!Wl|Cz8BW! +~i|O%8j=9`8k3~5{Bhf!?^2QRTXILCu#I|++sjeC3v~$hP!bS`=YwxE;$zZ!Wb}f_E5t-7iloi572s$pu5mfBzL6x(JplA_POqx5}n5xHD#xC1{{S)n8$ogWNzA_f-D`TP1=aEb1;15f=-34L +yiI~Gx<#tQXeoZQA2l03WXAshlYvy-*F)jhO6`y6{s^+4<}AB>Q{5&j)J +%@MhUITb7a})jzUtNX8GQ%I{QwKYD;e~F>Iybgk&0c``gkhTyQ?utIzCP`QC%)&>Z+i82b|Edd-{ +$PI_1Oo7l*9J|X2t5iAXwzKjBy~GhPtikeGlE}*-m7{cvmorr!LQ1F^_L=IW#%_BFs%?!c_;y$F;gXT_QzccI`^Ss68(hwr}QgRpl-nF5iJ8~d$lWf9EwR=) +h|1q^c;v|3T-lG8u!)tu=GW +0u$(vFe`*!E?saiU#r0=%!DcXmXY`|ahcvqEBAG(&jx0edK(loMXFAApkdrIUrtQr%2Kx6oFNg4haA5 +7D}h<4CQAOYub;BCFY-f)Hh2kZuH>w!t*>4M +h`^Ok|dqh3>a>--i#ILj_>6QW&cMU_zOtq-=sg6)U9h71Hx~}fj6<;cobN9MRNqGR1=N>l`4zS^GM2V +Ff7S(r`SDx^j359CavBM#NA6W6lah&Pv7jr@9_u?p~ +?IHxl|`;ah++zxeWo{v&3?}EgC`-iGVRqD3X#h?pc7smeNPjRJja=qBtHCdP-M_yWiDPL+oF94K#lzL +LmBMs*$EX3>?aH>%LY$*Q-PSJz(BF09mz{$?DGb2J$YNb^%r8=!Zgfk=d5MNe;#KqrGf4 +u1@WgG0hD|CA-ef(=AQAW^!IhKuvziaxfV3CX*IBFku#4%Nq*ENqA67V>6wMT4J9M+5GDiMb9g9|r2M +zeLL?y;t%HV@U?YVo9-k3lT0c(I`6$RhwEGv*QXbP%l%GSlV9kA|HFCHh;tG_N(AExUu3FT``WeV-ir +LR?`xsaS&^6w8Dq8|{W&wpGT^sVZv$s`_G<~|Qko`UgbXv8BqSoN2DNUbkOZ#I}<7K9m6|SY+di3odoM9gMFT7Vix)UwP^W^u( +w1RRF$(#vdWOUUfRiy{l$=`kp3W+bvdjJ>o<9l>VEZzs5qyJ`|FoCSy6X){m9%^8#2Hp=^Nh7QOs$Fq +oE)NqfYu2_A?fM7@|3|5Dc0u%ZO^&}(p@{NlzQes*zVx7M?GM=c +!)y*;BXzWbJhX@UNv*VxMn$+ha(;~exy#I#E#P$Oc|=$FmyH{fq?X4Kn_0*i+`j~bQFA(GplRuH=4LI +~~lv{lH2ycN&VpXeq_K{%_4-??!0eQ&qXtLQ3*ZSCau&(r(ftg>tN3fYyvf@I;mI>vtMx;MPUt}NfW% +H$>><&*7v{+x|B1?Fy)Ex(tR=3DUEx-Gv4c6N<+Z(Z5% +S+a!D19iAe?8j>Bw@2s~*V%$=W%}Lxgc<7~Smoswd4;8TIV&X5riH7Pzh#AWTuIjhGM04@E0vn1hb^m +?yH;1%RIfQ|X4K9wF}_JRaarF)V#XC~ASn-W82NENgBOP1;WLrBZ_wEcq1vAUMJD>&gSK#(cXA^uhvX +BcHv7m%)*j=YdIirTUqqpzAvf+hIlfxcjlS(oS8E-XZAY3?8^lY#O`&4uP2? +pR;qsNd*BBfH_3IWF%B=%&QZGG6PzOWjNk);g9N(?9FZ$dl}6rsigbl^h4k-9|DN<}(yK{7NBTL^Ye= +sly_WRaGIz}S2)Amt8a+28i0(x&kYF@yXn35wf7eQ2Xf&(TYc_;qy&R$J(EXNK``4DuA5yE8fqz{YwE +X?-6Sb7?rjPeCT7@NVjfBmX30>|H!#_hI8*FL)5@c^ +HWz=Kax)_g{20cD-Hh0Q(c+;=w?3ylzkUt7NLIJcaWA&kV{ZNP(-j4kr8ZI$z{`-^13tW?MZJ>dRx-l +lI};kAL%}%`;hKUx;N?Wq`TKI8#RyKqTk&F9}p-j4P`UZjj%S91%KBs2cuoRvU9#$XlthwKI>dY>H4g +;VY=R9hNJnMTc)d0y#gaG>}N)MSHTas`7d*^SK$2p7}dgdhA+Y_+vso594>G0+iZvJ)iP+Oy@KR>Jk6 +#!!fPqyfZ|hD|7S=HrizSH|I+GO^=?_XL@EIlyUM~ZIZeMiO|_ay8~6Fw?Oeoz>eS6RqI?pQN@<+9_( +gS}ynWbU8r71}t=JZ%PpQP@@L`D4d??-zP2@1Xiz~hok70j|{V{wJjIXeo4-Sy- ++ugU*1tE5?u47*t$yh>3dab$NU~dxA4i;`ZeJnMbkvZR@M{f=$K_NoI%@FRW{I@+F8S2jix-1Bl*N5E +Hq)mpu6k^yOT0XadsWUy)wtMbctirJNmK=`2QDE|iuESGxy#yB9;PuP!mc-KF21UZH^we-l!KTa*!gk +Kc?#kQ9C=@)z83xCQs+x-m%WA&_Ovb}eEpO<6r>Ij*Sy%Yr|v#?e1ylIte(`t-ex;TRDBz81f6fGdvm +=1gn2mqeTh{q;tF8o0@a7Gv>iN_6ZGJ;0@cC0d(1{s76`3~5OHb*@Br-BppR3ESX{D}JhY +eV{R(;^uX}?G!gX3qc7y_AA8ZtcznX0aip8|gN-Rk41J;H}uYi_f;-D<1C${1d>!TI@;d3*~KBJy*@` +DDhYl}5%~nplZ@Hz*OMTOB2pnNoXefiK)CxWWFb>p~y+v?m)LpEVwp2e9*%HJ_4l$S? +_OzoABKzTt@9afOt-&QZawE3%##a7c`4(lG{$Xb6j@PhVgV3_mO!0X;7`Wn0%ct=^oR|E01om=VDb3> ++{vu;Y_@iU}02yp)Db#o`U(&2DzLW1gnCCQI?(Nw*jjwd%tNQS$~5oLnqCZXP?fA0nr@y^D8d^*Unpe +E$v!Vw1KgMoZV#oTL^sk;gD+K`LZ^u1od+`iYls$;yeVfkfG9`Yg{c?^@b8cL$tkP7NsLc)-#CYyUgL +Y1eqnfSzTO;Q3VYlkUUq993GTgF58bISc?JheNi%yP>4;^93d^_IzLryAgB(qK}MP~VPW;MvBDqh +6z+*mdxY8P3~aKi$ayW)>n=6EZeS@%)evhJt&u-;a2XT7~ryM**$ +#54^tfwpESkF>oSkF~Pux?d`vRYc^Ih{cJqP^q0U`!}PO}uVFjQMoc +m)$JvNQB;^nru_sH}U813k;Mr&d5(>3VO+ +1IHF@cQ(VI0lI!7vVEVVT7JH*3SQw$@nWLAD)<3t$0V&fDTKW5_{F +di)CQTeobo5`$`9G)Q_e9Mbhyz)#jU-jx9;t{IZJgC}uhj^GZn-bL~FvKHWv&mW3*;-lWNm8#3NR-xlXldAL0?O*?6cnokKjvYc^-?Y-0-Xn5fyDRBil +2Jf>(ihg6%vAs)G!%{J90G{nQI**vG(m_s}YG@I3`O=O72e9dNwYBM^-qe!!{vCW*=kU_;7^)u`$_0I +8hqP7xE$}zzQ;|15|xLtjxi|=#p{#8Fw29dx(_9V?O^JJ$zF1{Pw{quixRM>Z$oKKEV@FpqDAaR)=)g +`V|Ygyt7QlCO|U+P-*6$w|>%ep+&Rho-pM{Ag5R-|61`l7No2cLb}Bz|!d~vO>%vZ+k!ioom1w1C +z9j-F&}SERV&TKOG0lOAA98q)Z1*7kw<-Q@Bnwt8HO&89MgBP?XPl3oaX*!flxohM59cFa^So)iB%|F +6S~yxSb(Jo-uFS`GJB~znzQvnVc|W4(F6sG)XTOH)XTJieCtrr6UycLH{Z!Fpl(&7jw6(&yFJH%j&0& +1*i;sPM*x0eJBG(4TzI?P}UycRnIm^m68D2lZJ0+zhPxEgz|L)^og?|t7??(Q`TPRA>BKqmFhL3&yt{ +waGTjP{#Uw#DpU|;)P+Xssa$n;}hDJ}SN46|)oqH;ZnXOrH*Jr`Iy?1ZzD*E;suPj+!sS6uR_IO*x;v +xRRAado_NKHR_1_6YoSfWNl-j49tMQl|OZdEV?_`!Vdax`M$I7-hJXThQNYrCx-o|5Pu*R{nGnl3KniNvuyTqg(EbH) +`daw)`O1ZY&kfZwyd0g$x#i2Qqp-Gg8!(~4PiaO#3J#@h<)cLt^h0S_%C^Sxp)_J1Fp&4?(Y_^5dr;=#P}=g})#C?hWvEQx<7FUNJzn +;xsF&y1i(KbyYhLH%;BvM9Ds3M8@;GsT>d_B}yX$xXuQ2%*U&J_1I*(hN;4>g6_!Xty8bX!(^&?}Qsk +0!w3vqMKsiG +)pz0id*G8B2z9t<0#rtLf!2H)1Us{?i(sWFf;&|T<7U)jsuc{J<7it@4&C-em2gL5Mm%zo{!I~qtR(ZO$dPppW4~cQb;6q| +yCrs;jtHx5#x(uou?%~XCj@qo|6OM{G*y2KkdRXjp92UFe7**p)s;zA1+8~sjn*vd`7FnyFc3jKPa+N +$pzc@bxcPzJ5W!hR7{WjA!L$%^kN*cmu93z6hh$G{pX2Tp?*k+G<;Oye3RBM=@CzY10`&~b9#wl$X=$jd1OFraK=$ar?Rkpsw1T>BmTyT>KaTxE{t17lwHa@Ugmwx0u-1CP{H_2Q;)U4 +y2t$}75ve0!Mr?19RyoRobV>LKMh7V6aMhHM-}MS*ib&D7%RQ`HgoTWDVaRX#Wn(^~y9sfEaUcevLM; +D`e>spBDz(Z|-^QB!rjv3J>Qx=m@%XTk6#`P9^xatlH^wn6f9tYy!f2(_`?BX#^mZ&z^8tgmWxr^vS< +ovIFM)FiPP|?-NWL`;O8Mo8d#uAD|Isy-6eLvRwP>Y=d00Z$m +@GXU$+x9=74E8QV>AaQD8?8ynIW_&NV7xt4+6adf#`pcGPVB<7 +V;bIyhBh+ZrXSVHy64G?CVs1;c&Noj@{iwHOaI4@|rs;Cf)B4rSAT_`tW0*qN-Axg +~VzM4J%5cYG`zrlt?2D#g4b)56MX(du^?i-|p3q6FBxdKCX)4gG{w!dG9G-CxY4Ey|y;`?M>EZ@yhr2 +;=IeDrtcA<#3m4hd~@~lCpA+Tp`>Sv`>Pw=C*mu#JtRrjigB<9rNu*-3@a=k$RSKuAup&h2k(EN> +Y`cr;dL4|sRHz|~b^6z;T;v}$meqI12wCqGt?7nMeRRyyHCRR`t!70wjStxz +|%G0OFiS$yW0a6(BWWcZ2r&{odf5U-u;NFi~|*SIRCUI`vVHDusvbWVf$H;{gZEb!y`{TDoO`oY#kDO +`aoI2FqZ=TOaig?eqD!&5)Law(y#vwD2QO?|C+S?pkc*ZqfoEnVwRaV{+jqu-)mU9BEPzq;6ZI^z5;9 +Kjax>y;Z-k`&Ln=$|Pg;puvc`+VeJcazmO(-nIy5|!=TL;58u!@abJO;R+7)_L_@BJ0=4mUZ_%kh(JSIo~I;QpaI$alz3R-eI)ns0GDZo_Z46l;KMIZHTjPWLGtc7EXKYK3vwK=wCmUKRi4LWXn?FG~}w_6rJaOs3|OXGgA-!WL=8nS +coRk!+XuZUL;H&b`14|S9w&42@LaehJN=8%29_dLOyyUI!;PeV{pa7%~2kLe#I^+iZVq^eVbtUI +{e#!IguUq{#Fri#sOzEi1ZEiSC?xq6)W#WatO*g^%)A}cyq|K9N19?Z +gHz9EdlQg*@A$+%g;md+y?q_Re>SA>db+z5- +yEQ0izx@*BbOr8&V`N-Qw}8IVGNi0|94FaM+1;KpIW2@U$+sjL>2Rd38lKjhGFwiJFJ*V-!FrxMGaiE +(4`4&h)euh4ck!>kV?2s$5L+#4qxxAo-gls*RcWN};L0<^O+ov?nuEcb>*=#-8+eAKeKl&#ajTp*B#w +CNcX0B7pz{ID2xTRs={F?KFTcmKHWA^aYf)%LzcshDQ1RF!TAD{L^)ruLbV;@mBJV>-wHhR#8u{HzEk +m|xyci>p9Q$)&)I;|8E)Rj-t^jTjLU2u87KYs2ov6F|mb_aZ>CqT(Jc0Zm+*QoMvPgCskdN@)+Q#h*x +A#>1?Sy|vmo30Qv*qNp()JFvcH85!1yQKKX{CN{dlqej@e(L|?axw{;c_`;DJ~5t8wJX4WuIzY@2!($ +V`&MW8es;qe$~hdar~2+ed{$Y%=K>XfwWdCQB9KbG&N{>9ToA +3+8vBsGml|D>Orj*G3`Xgp7^rjK?vMf23UREw!mY^7lj9^eAEt7Wo@#V;$T7pG@=LV+0g#Ukhl +U=Zh;RuaIiDlc50s5pNM28=CJkSw{ssNY+3eg?8n+C(_`8Yu7b9$ +IRTHRFd_k5DJH8gg-lb%r1Jv_e(5#n=6_#eI4SwE8diB|$ +rY~*TdsMV?ewO!U2=6NCA)bxb!Av~jp53$>*`|evZTo?!|qw4pPan2?%8YgL2-V`M;VEi7aVckrQx{M +y`??c$9r!$-|Jh|nm*ji!rPJ)Sz##V2=}(9xQkMkx)YU+_vpxAQ=~!6xkkxxIw{wXvFeMNeZKLCTzrckBTagpF=W^214Q~j)d +gKxmYGTtG(tm;OVpmLnv(C!Y{kimBc44K&0c7y84)A!X@X +0K9_~vsd=4m3VMIYRBzvZ?i@$?H8wG`nap)pubV9?C*RmM;}^m~@=SxLxmY_nits^+`4*>P$Bep8UwJ +z!$p?1*PFy20sLvt14~J7K$EA7{b*4-G)O<^ZqS1Rp-7su8-2b5}eNQ!PCBQZ-Wpz3(tcvn>#8o>=vF +Pl()jhmB=C2ytLZIFXiaE_mlj^@Fcko~$wga~)xAk(w@+;LoLGNGq$#D!jfJv`*?7EOj_WK-rpt~KZ8 +b#(QWP@u%$BcC4m?#Qtg`)%hgoOM)_ueRhP(%?;XvoQhW&}qDX+n`U$ +^GSAC)MUbeyN;`W7l~1m^R_U_X*`D-VtheLN18UTgsT-IM%%2?6l5t3IRA7 +MdQ-h1a)wVU*9vUdEf%>~=*9RQ1`bAs4qnp6O?&C>(QPoaay~v5h`bB(-$@m@!waarVGgu{c;=w(ccu-X1oLW2@{vDoWV*{UMwovTF+WXYJdWVrr3#EUFdZSC}f@5}R_ALv6q&09GqQ&?FCuK@)Cmil +<vVZmc+d#B$_-boQb(*_&b#0B;0?=e@|9Se>*Y$quGe_^$J7YF!e4|%h+k>0tTj)X%?uQ=}egg4h#!ozc +?!ZrOSt%x?N81jUyl=h5v9m&PxB6DOl|^&-vS`22w)6I{e65`wJA*#0_|DbpUD}~6+C9crV?W_$^<3H +^e6;Pi$rE=uj$QcFzRNG*Xi)h$$5H!NaB~TdvHez2g)kJ8`>nQ`+bbs^E1S!9^YOwdHuDFSLyWrvEEc +@bDaN%?K3QNC-`3X`->y;Ka5^hf$yjx~NwLk7#kThnlq~%rXY~ef7i<3nD-jE>bPEQMQf0ZvYMoU~y@7gROWZ82?0AHq9IAFib=IC6X|FuTc6gxv%6-umW5Ja|3p|cHj$T +$l)W$o&XPosi<+ia18O(eOFbhb9hOPnxJyWp%Q709pYteX0LEJ+lL6-g+z0vd%SXPCvMi5ghS!{2v9R ++=N%AKakoOdfJ^bpH_h>IITCcg1uXr8y$8;X*X>6C-VdD-Zhtx#vWN2F+q<39L(A?~XP>~D36Azj)DD +DvVYOrqOHk6M^11CvA(yNZLcX+)4JuC?GS`()%hs$11tA`_^lNLb1XIy$V4FR*g7vtfVTjGg8Wgg}+E +3X?{q_dFq-OhTSOA!pr1WKjb&Qhi!~nihq-u{)^I5Hoyu?I=T=HH1JKFFd-(uV`Qa12S8LT{%%$K8Jdn+HPw +bpJV4mTMrfxua>B-&rC&MS6&sDR29fCt|rzyjFF{3B0g=12i{w? +niG|RBJ~2c>+P3L%sG&#q~lw8s-W%-SBP860|ls}`ia7k1?ZeTtG-ee*0b-c+B^1Ey`u?exD_Mhz?`} +lV*T=cm1slkRpGw>it|fMa{NRBxU~hSc!Wo($AG)yEmd};mZNRR7x{hxXA?7p+m{K->2+LwxLjbeQ~G +Y7kcj8BT(A|{yOiHWP_}-HHw_g&-C8=~dyJMQ;YlD)>08_-+U*@Y3-qhBhU3`S0>6OjPQUps#e0&4-X +Ujw`8~NeF-T6xq((HAPjv9hwKQTS7QarJH`n=+OZHsMO7MyHbV&P1rJajTGyc($&corU|@;l_fF7X<8IU>||q-yaRuZF_?n4SKVUkFi}&Bb$89<~NBzy+^MujjHapvvk5aY%se?DRV}z{Bur +S*;Aq0s=L|F*)LISxa~ZFPq-_HbWpvdKH(Q9xN51F4{E!{cx9lht=j1}*F@X*mWBJfmM8hXI?vsAd%3 +#UeWYg5MZP64o^-OXjvyV!vwJ{y71kS|y9?W}qGGlMa<4JG@n(T*b(-{Ap?>x}6YdX>%bD=YMiv7ND>^tJla$f?rR+R|}t>2+m +u+{+5xqitugRnE=Y3}^L5j*7Njm^dwY>aI7injdgD;GMCKow|o>mtMynDwKLrjJBPfREhb*2Ga>iRLw +%p+FFNPoYPXBC~z%pPmRId>W3T2yWI2_&S|4`vg(^ecjWUXQEC|4qpck@NuO=-Ex|7GG)Gk1*YTP`T1 +ds5;E=OcUy8m(QbMBg+8VB4%He#yA5z{%T-sEC;c`I=)g$EMT$A!dJ~o*m)o3!oUx_wl!0&c1_0;A!) +axL4${|#$_wB$BzvCL`Gd3Y9G1H|iuI<=_(y2Z?q0pO8XItA2nd;+P!smM8yh9FHx0Sk7y{^_Jd(B4!kn*W^BY7_F%Onp_9vo;>4gavWRbFcZM+hd_Au5xDTkFG?MXRT?MbdxnhopN0=T@w{K!FfxDwF|i=CMo~0=t8oWA)JkOzD&vkYEX6Rlr?IP2jp(ku +D@TSa>p#4KnSes$mO6Iv<_{32$84@|KBf8OlI+cYvJ@z}Cmc*R|8^C?LbRM+&V9wM_yX>$IM?Tsf>+j +cMA5Mqcn&By$3nzE_iG&L$wP~+Z|F&+b>7?7y$>b!v@1r>WdsOUsA#NwgBDjm-euBpdULn{=aDw1GL8 +}Ww+)NNkFpeOdpqSucf=vYF1cwPu5d2KwS|db9g5Ctzk|gg*P*W?!7X$|hUL#mTu$w<2{1cYSizAq-PS`PB5Ba1;Lt +{%gds}K(kmonuMY8X0c+MS)97Njtk5O%;KGa=F0<-+B{@!3Un-U#1RBm6PyqtA}24ZAj2A;movkXpD) +BLkuPS59FZq1^w(FUiY)pQ!bGFJ0)iRzN8ZE)Fn@1VU;aOQZGvGH**hIFliVVWkB1{B%^ap%R99K)xob~Y(_ +iZA9{)~Q9*95|Bj2P933-J<#iWA}NqcL}=aYSbzQ4z$peaIgTEa=ZdIOURVBFLd%8|4&mjN=qz$%LFu +WxF(vcNY6iCu;J^ltRDx9Lsdd^Lb>GN^#_oYqpq4U)kgXl+WQ9>f(ZX2D_wCxD0WZ<}Zirn^R8c@xxy +#{mx)_iV=GCoZ={K2G +gmRxnAA_oaLQOA*{?F*_>N5iB=P(kV|1_XyvQMo<+J!tzJ^9%Pd2VHcY4gAMn-XVUMrV8r +;D1yIh<>#*Z&T_Xh=t(lMWpxJ>MFmAhkjG0o1nW;cZ-^)3sc@QZ675fZyfyb%40#FP7h2rtr%3tg-Zh +|3Z4;($v40-XLdsxm;3+cMkc_qfj=Eqp_N!*TuRR_4o$<1^kmaR*NWL%=>8^rGBC0^isSW|Ndgg70Ww +^QnP3ntMxfYb4M#Uhqud78ug(2LvAbnbId(=E=tRk`8v`WR>^pR30YK2#n=na$#FYd!n|4drw7@utx4O!A?}n1 +31n1{&JyG%f?R_NYBhE`4WkNE7!?xonfi-#Qj*nACcCq03O4kDK}R;)$eVOejc)kJmmiW8O^ML3(T0l +a6N)UOQ$MZD3D2Zdx)aC(_G5GV>;$T+(lVJ?ULYPyf)YN;st7NSfbKGx47g-@k9B +mYL*g((fYu71D92dK2lG7+6kv9M_FJ?x)fJg0@6%`}I~KLIlvCiE^&KbQMdc=@b&VJ&$Q`uH{2t{v%n +R@(nT1WM8wizE=&6xbEcKoJ+sMwX&(7LX@*c+{kgq*Nbf^(>$8~hSC?l^I7^7R3hqMZKaA70}tlNb%*V?!phl=4gVV={Bc0)}&mn +FL_#u52DLtykclH8}WoKlzPG2DCC*{JyHIO=%m_~CAJct*5J}si%W@Qn<&+TUJQaI5L8N7dW!7{H7w(vxIZpF!GpsoBTILBgU4^1sR^3m%(M +2k~f3P&oVvFmXfFXNy%m-rGxkpFXBX8hzD^{xOs>J;Sm;LL_&(ymY15sag5B%VAJ??TVB3qmt;xJwrC +&YZK^3QCz~x2Y?_{8MOcJ`fB1tRxC<9oH+K(DFYji}TllnWo4jnsnzW#678#X@i&4DLDLQWRdodaY5M=u>Hph1;-=mIN94Z;4 +R=~-E#mcLcGt`g7|eLA$6GV6FqrQ(m{%Iis|@CU7|iz>%y_^@H*YbRaeGcPH9p?jFv_COizj7dr{>H} +u%=iuNQNT&3Hg@1+ooq)W>}-M({l1=u|tv?CN?GC8a~6CF~<_0lWWUmJM~+QM#NE!DKjl2ate~f1d?D +eGv07cycbLS7>VDcerMaVvQ#5p81Tdzte0?}ror(Oy}ZROfq_Z!Uew)~m_+ +Y8((fQ8L_ux=DR1&2yo9$mY2NhbrRRfZQPDj`i;5@#w|k22SzOfC!-G;NDJh`>3k)oZFIq~zd-WU~pH +xKQDUtYiTy$pYRkXB-LJ3MHJw4sq+p8cqcW!QOz4);rFopnY2H0q6ql^q1&^I-Ugy_0_8J{uBl4G-mH +)5BBv4J|vkyUT}sLxZzl8ZXWm9CA+My6O(vP@BVc{zEejBHbEiYKv&c6G7u{~ecr%=+9Zk4SBwdI +QEuZ6Q%yT)m7}JdB5LiEfipiO7nn6*6$4qIAEZb$&v7TwR&5}1SBYS33?)et0)!;1ht*Mk1skYp#j2Z +PJ7VJhD-MAyUS@QB4cbm}2tlbQ4cFM|j>RiDL9uejXb%jKqk?ASAQ^*_NTE?pgVb#xXZN!)nRTO_^aarKDMjf}Z_s`FZ`OXJq%YWY6iT2W-G+ +bv%fa$YVxcPWCKIw$+(Xy|gTOvof+%IAf^jC{&->wj8U)MCIQgs>YBGrM#}sg~>bzohOEiDdaxh5WO1 +j+ze|vSR~(?l4r2Ky5tOH#w&dYV!+?7=DZVr~ +SFo;UU++Oo28<|0yrZivq1VVcf|M))jmrVWLgZ|Y^4LoHB7n#nRN*E;W}E2lG^SW07>6s(V?P!Z@1%b +76CGAk!8ID*jC|pq-8*+R`(k2mwEaV;px?}&l +1PO*ZwmFT=s@$QaDe%hf)BD$VUutlFdw^MdGN8Wu;RfNK9&+XQ?=#nTKW1=0LvCjqxHrt +d&qg#I9{N8b&2@QYFgNr!eq^279R_nleBGm)PVc!Gv)CSUWqPCH>$@Lp;C|isD~Eq1>B{-Nd&ZUBXQf +{`{oCfK?ogfPn463z?d~h5^N#(>>8y5K+5PaQE62a?l`H3y=bQE2_cd@o@Kzn2UT-x`XV!MJIC#$KRS +d;`n8PH4p0BgpM0Tl1s4f}oz9YNwM?|CQ|MoKdXZJF7a4~K-TH-=uqX@OjilrVaNnG!qV1ZyApJGi<6 +0_;cIKm>SRvmST=`PqZ6q_+U4>RmfiwMZa7Jaxz<-;-C^75!#)lN=$PZ$NNcM0!e|n1Of_Aja5o5iCjkQ_BfwNE$<>s=iWH(ur4HwNWY$iKt +z4)keDEsi}F4U#MGbPD-klyA(qo$Q2v&kwYE90()j^Wv<3Aq{B5ji%B_dA +N$m^ba+$62!`WRu98DvnUTWm&A3MIL74Gs>m6-N!rk`t60;xd(6`zMQ)Q_uz}O{S0A8sZoeKEveDjG) +#sdP2*JLi-E`AHna!h(=kqurqN@SF*Fse9=f|n5@E_rBi`k5QaM+MJdP(GWhT;L4v&Zz;ue(mZBcPBH +>W%&EHhHM#uJl@K5nrQaa7dI4``d*#!>nlxyY$&lhkY!XAvtL!8sxg?)cKPRitps7gaYTRO6*a?>M(L +jW~!lm$x@mt6O{M4axW%XX_%KQd^;TOCGaj_6!vik=jB^1voK{7p3k( +9NxbBqkY%ytihH$o01ipw1GOFycTw-E))KXyp}gE=_$Ktp#}ed+p)GT#+}6_0$s1|G%Be-?^dy&&S+@ +LiBs0R6mPR8F>>Hp;n46Mkah66BVl?DhVoF{HhE+-8ea38@MPjb|4;pYp}yO?OH7?bYCrAKg|yNxvtRw_BU$wgS78(?K?vIj@QDB)9e#8JxPmyl9qOs +W=Zcx&K-JO}YOkmDJS0Rc3KD@b6WAO)Ayh)TH`1Blh2@Q;&BPryo}ypWJl(3)i!0EOp3Zk54;p63NFij}N%q|IuS#ocL9U{tMNRnEyi`dhkoL*hjFNpq$_>g +4YOMA=pH)kzftMN`hj7`2@KHSp?|>sRVZrOd*&^FrFZuAeLY>K_r2hU@$>%0)K+en*X*0J_POrHD8!T +HNh!@V+0=%946RJu$f>ZK{NNdK4}eo-%qfdpqOAjft4VOUG+4PqYXZKdi02!sI`IS<-I%V>>uY>Ws;r +Oku27y#Iv7P=H3Nsa9BCzZtWtzA* +HU$OV({n1Wweg$!5^=Yj&O%bhr2>LKYi>XicmQ1Nyk_$(4}EKF1&MNbR+hN|BgoNp$ZHPVzgh{g#ANJ +*gxHb{cBCw?`y*TSQGY2BlhS^YRKMugo{up^G<1-;i@BD1RgEazuS*=5l?&9eV31M5$PUv-@V3@d-uB +U!}I9dukO2G8Togw`#!P4h0mbq-=pt!5w{!C!!>~>0yAT&@6c;p_3hhNj2bmcBqb$@jEoFnv)R;wDk` +G?BJt2e4~eIqdP=+yj*GqpuNwR7jrpA +Qdb-dm0JDsrc=^gVYjzLi4<4<6)iG=Ty)ES-_HY3x3Cezo`a6j<)jzULnDu0i;;v|9DM5 +dIGyN=rMmSNpD2-EsYQExsxKT5^XXKZR=i>UY)!_J8o;p*^a_1&;qqq_2Kc`cgU$VG$N~z_0euuV2#F +dAKwFi))u1tUY)hap3#XxGB-(p*D-+r*Dt9_P4!h&A~%NLK^bN``Gh~+MH3xq*!+I{=H;C>)3;b$j5S +Imv`+m5BDFedf@MxcMomsy6GVM1(5ys;i0mIg7X{z;s4%-@ds;a4;7WO|3gy#K4C{qEjzMXpMYD#q$wOz^!Pq-C@5esxNfE$5Jkx(0&Ccs7WXABqC1QZg;BH=>dM& +L!@OVCAv&;2xB|06yhIB=kdi;EKp2?^q^yY8yT<11IL6wf~Uta#;>SD42?`sgEZ`t)fhpXXw_Wiz#*o +40zQB<{|=TfUmMLlo{fvm@=!98pL`l(s|4!W~t~#0hs6{`gDst7IsA^z>vYFQzTne|o}%2|Lna2R=u7 +@|`iWZv1W@eknyh!Gy1*nEb62Gfqe`{d*}EEm|Z>OH0M7Rjb5<4 +?ZYXuU;+ItXU)0ty?Fac;X2z-_4shi!EEWa9j4)TW^V@yEco(KS{BrT8g*dep~F{zhAuj?z`g1kt5=R +4?Ymbj~^GGfBv~RbNZM#`m+=#Po8AHsI06M=gxd5zW!B;>gsB7;lc&x6)4w!)IY=v;Ym#6y;6wg#5XO +dvbUlNY?9ZAVY0uNEXRs@a<+I#t`b}1i{b-$L~l<;TMFNm!Ut0LVH7@=!cU^`Gbwz5Y%P{i_%#&%1qx +qI;oqn5rwrkHP9@NDd`YJ(q@yE3HCoUO +{8XXQ)rxMV0XV)r|@wUp5m&`pz!l3{4xr^mcsvw! +dFoE_bL2oLwFKC;;Aaef>H++T`wW2HDhTZ#*-r1; +xQM&ZX%_!$&_4uxMz;a5}mCn@|Z6n-a#KSbd_qwrOR@ZMSuw4?ByDEy5Sz6XWxP2q=A_=yyLHichK;h +&`NJ1G2dL-_hCSye`>h=>v4Bf@!oNyOgVtGj>Ku02LMUBgGjL`O$P#zcgLg-0g$>D9AmcmGkNy6G`QM +w2uBN0T8kGCANTco;Rxq`Ak$MMTAfQS?y};b9}flY7HM_wHS9)ZC-v%;7QN5s?uT9(eWb9S|@)xem#g +xENiH?9~3c2&E3rFCHnB-1v+H_Fe8At!FCPFg +W8GmxSwr$$nI*dI8u!kE>2p#p_j@#!3k6yP +4misJ8B&qFe@0qzk|anUg`aZzzy>Ukjdo;P#+BjO@sqT(XsM&8h|o#p}VH}&chE7bTSI0-%1l0)G^%R +i34e@GleP923DQ==o3hCr9=-1BDohqvObtZQ8UU4^H>wV9#W8zbHyz47uMhawMbB+36nP>)|`NR +bW(1WE|!4$SzF8^&>U*2pbw6KETb_BQPvEE;%kbO2aZv=dS38fg>XNxw|wUqd6e2q9dI%3(?6#`uR2U +ba81tnlJ>4aWP@UNOkVvw+splYUbvBO*A=1j38bfI4~lj&OJGKMEGqXt-L&f$rzE0*rOxs(oc?nm)k; +Gx_X)69uY?D8YAl5kw3&><`%76-Ig2?7ZyUiCWJA5RgLy*JtQui@-f=rjQAtjne1-~iU^6W@2v6<#UD +wG7#%feXai?M{FF7(;X@lZi8b845^$;DHCkBab{H)~;PE)~{bLHg4R=v +ck(Rzs&OB8*jY9vciYuPl-oJ-q=jC!tUL>#e46)$Fjkxuf7ytef5<%b?TI;s;Uy-fB(Js`KL218~pOi +FXH##e;2DRNbw?lAGv5~XZzv6$t~2;QN3I_gF3o-)Y08b9o>_nwR}bNm)pfyxlhcNN5v}nnRrp2rvAI +y5S}{3cpA~?QfIreH-!(T@Ma1hL*XY=_}LVG358!v;a{Tg`zd@~Klguf%KynJ|6Aphj#?Ygv13PGYU# +kUoE_VD@7J#%Zcy!L>e#V;#~W|%;@7Ix4a8?1y7ubcy=V7+t^Is&YDwQ6Z|v5yC;4sd*QH-TzW~v>>& +?CTUEjQ4Yx2;lWy>2n-`KrZzZT7V-Jn^ROucUI=k4v&i^AM=O{J9b(7A2TZUO!J1>k*J +O8@470RMo18v~fW&ZMyBcjJxf%2J`P5TTfabJL)yg#j0XANa>ci7x8=5FXXIgT0up*v?*s(zkSY8o)z +K^}j>?m1Pm&i!BuGx^(G+Oa%IrGhrKmPbF^*vwx@WT(MN&oWPxpQY|TzcxW&pvx`@7}!*7Z;a+(9qC+8cprBc(5e}`S54*4` +q#x`I;U*dUPWldDZGF!?vG1d2(1VDKdBZ_~Vc7rE#>}v15n)_S9#s|~PrmlrYmE2l)2HP(-+UtvA3iLP967@N5Qby~*q@>>kG=T +fiwm}H-MWB8wkW&Zep_yCZsdv;E8j*9Dc9mfk*KzyRc3`^d=1UWoV4;(zw+SxK_Ys&3 +u74Wc|;@!fad$@21YXFeY~bVz>k$tR2_l@H?%^NABD5?=m`o2i^wQ#38JmAmZfByV=N!<|h|KP!cdw`Dt!2jKM-<5B^`KF{Ymn1WD9Y+46JofM +3&j8%_?c2w7<=C-fYz7Tz1Hf;nCnzJ}_UeyPT8>K@_MVgj_eeEd5-)BzTgAU0=$v`DC5V!mooArDb +4Ro8FEOy>H+vA=?f`G9g{NRL +&|^9KxGhoK*|9`L-xl~p0AZM?TD0t+nq}jSB3wD3m3r4%Y%Y~x)LuGg9a*x%V+^E;3MGJ7#+xWM(8%e|JF}c8b*8|<#57vDA6#8_$K$5ihssYDgED4>%`UKPkn~e+kfys^+yuWuuOD5N4}y +gz*pc6oetD-@EQ0X^+MNCFQ5`mN;!sTh#~$T`LRmFu)|Ugc~_+&km^G3ol^GN@#pcUws=+d?%fAbIjl +fEL)+3A9pLq*_zU?Dck~MghjzxO5>HVb1r47|8BH`q5e=JvkXNIAB6zqd{D1xRS4sU$Jpc_l=yWtzCX +LZ?@!~~!O^_h4kRIktb)%uJ!smFG;KKFS`t<%)v9 +&8GKD(B?`2M+8??Rhcq2cI;g1AGs@Zb*kt3wRxT^yR@<tiH5aA15^sNpHqm2iG;`auT&cJ`V1QM`iwTI|6a=XT~giz8YurwuT%Zs$I-mk82;4WGyh +XvTLF0pbxx;4rv)^iKWK`#fIr&FEsMhC3wMXeXNiULgomT5J+N79I>*_OT(C +ag3(CahWq+V}wG#47;k9vmwh2$(JfCe2J($QEQ(P@F&S~x_$G=Hdk;jR$*Oaaj_XPEq@`aAjYZz>JRM +8o87i3US`j?wCK_))b@8vL%>KkIE$PokmQn~k&|mah{HTNVzLo9BnfO+-V(`utC7lUB_Nm&@-QA(v)ENc+qPS(q +9r9k$!$7at#H8jLbVUrokn3V&+vng0o&6~G&KK?hF28}$Kr>t%vA-Y6fV{{@ZU|6NOm%WXu%Yed5<3y +21)3#iYa;c<eK||&Uxg?!vNQ;yUQ=^y$D6~mK4Kl`{w;Shwv>E8bAV&b6e)?(o+;h)K$VECB% +j8P+NDD;^|s-1ZQgMCP;QvKKie$t%?g(eqTwE*VKLFLfM|ef +C}T`J+Iaf|{D~Ks|B0`QLCZb&+#@$_+Qjr+4IMfy2&)`ZG9|9ao~|_up&f$%=>N+sh +;54*OvFrdFR{GSugd8V!$VH2j13XvLl3vNS`b0g7b|>Yrl?)_%+V?*VbS>VPt*{&&^bv14Phv$Nj;uB +eZw0}B@}WEzb8^+#m_9d)YV7^^Y$@$MI#G6w2%nO2`0s4L1pz#nBldh}?NgM8+hXIS=vEK^!qD(B3Z< +D}tAbX=)SpwK40vhXVEGttmUJJXcvfP7lHa%Bazow8@oo-#Q(Sw8W^6B7M$ety2RTCH;V^5tBwKmYu5 +Zg(IHHAV~YM&E$83bGL7QH%$mP@fMyX_K|T(RgFS9A|yjWsKEYeO^g*;g9ft>#etZN!A&!)GBI6xf~vU{Be2PZMVsUgalbuRwf^K-~oC6{r59I7~cb5(15-G{e(^j#xS4(?J4*WeIe4=?TD +1`KLz~H%Xc=;sgp70s4@oXGuotw3*vzOACA95LqkjB;^G#8e~8yt(YSxmmMvR0Q5}}#CJPD*B-IIt?^ +|!Zm1Tst-+r6<0k{KKl#$L?dU=38@E*oFkn2zus1K;qT%V~NjP?1M2KD*i*2f?RK5{k8Gi1n+`&X}C& +GR5gTdT{msHh0N+39(w2@SzKIvcGap?a`EEDzubQN?J_GXi}RhvmCQ?^0rdiO0yognkQU5ApdSX +`qmM>i!F&Y9k+6e|gt7xIjVL1j*DsJqe|G){fvN7U%gxRG^6tCuz63mzl9Cuur*#@`zWHW3ckWy+2lN +^G+>TBM@CE+*oG-=(&`}>yM^GOc)_3&T#<2&+&*D$czoBk{|B08@FIu$d1Ju))m>4;K{(LS6&;a~Lj2 +Iy&PMpa0Cu@z6Rd|Pw3zw&}QT<$W-u8ZOK3U{r!VqdF7RRF^2dn_=7hA;3dpA!wz_1& +e>+Oas7>mh>&KpS@!MQm&*a}2-A>`#&}Dw8@diYLVEzdLVJv|)8{t`CoH#J?fM1dPjoL24i4^0d0344 +ylvYyrUChbc|)onOhZaaij0koW!~DjaUHz8l;zb)wxL=}pircq +uZ>Dm8eE06%icr^lysj31q-&Ia^n3+iya;@#Y$eGS*j3E+fy!GFzcCM>k3t^nVf6V#w4=yVwEr)?^pb +qxg%`LF{MWz!#o>_Glurt^ZBwa_oKLv#B)cU-UH7=!^&6JoApfBKr~0@8->7fUfeXqTb(Z*)WrErn^IZq{122K +s@r^zJxa;d9B-gI}FW}Dj8^^!Y_pAV4q7MQc`g}jy543gYkBoF6Z(n`&Rr&D44>LdObr=A;^|^V-P51 +`S=<5g6WCpZ6|2aaVPoo$-l_&m*EdwsD3g3Q~ +zD8kH4-&i$3S6uiv3;V25(h*W^%UXp69xfHf%40^BK$ztYZJ5r5VQkg)$hx~(YtjhtwThRCH* +~9HF@&NS}{0{t44~QQ({*AaZ{>J%FYA2lYKcE49C*&8jf8Yc3N9a3|#~5=W?@XxAsrYMbpDHy-? +Gos=Gk1e{RPl{({2(9xn|%#1&*k%=Z!OCph0=yohhCs5G1pY)T=m_9XiTQlB4Vu~^2EydOzzKDJ?F+Z +kl;cEZ4?i2L&zDd&78<>-&pH8#uzV@+YeE-9zHC*?;!GcH%c0kn4Z@bI{W#&)x*PS>D4BboCTYHus4U +HYEdrQ;-@KTfi3Cdt4!!_c3gE6E#YW}Z^l$uJj+b-oa7F8718QXcwA%COy>{*PBk|9Wb}H&B{2#`Sc4 +uZcc?uF3qD2+mTQdz9MEHxMz_OtIdGbuO&0U``x!u^*n3^6<}Bwbt7O?eyZsi&O5u|Ncba0NDxS2lS6 +<*U=ZDt%fWMIR$PoLrqrd)(f%5gY{0#X=8l{bMjbY`=j(R2B0x$HjNiD_3=H%xkwjsH1b3r^FVGgDy) +~?{;j&+hqba-svDcSsHe^};0I3Mxc8yqo(JR!`mY~OAD2(r6L}tUg*FE`{Rb(Nzf;#u6TVW{ef9kVMt +;Ql5Y`z(N&m1uPj*3{LgUvIl5-P{`!G=ckb!{<`kyyf&*C{S%m-smUQZt|?K^ed6YFivkH^%tHmvc0A +F)P-wN9)PPCCFr_vz`QAE)tt_JRcqGL7rqx;zUVvh@oKBX}+m^SPKuG^UTWSF9f=HQ-0Hwnl@sKCCf; +9|N|j?Sq~^cxP^Rf#I3p0&tufPHGCddmY%&% +ju>3MCv59>^r4+TGBjR|WTc5QuW{tOi!Se(H)Fh3ryTl;R9e#5okhHJnm|B5AHyxxViBFt%GZd~U_%! +^}v1#1($#-*jdAax|CHOjz`!w%Ljf5>E|rKKrr)~rcHUBq}F@;T@RF31Du?{CQ9bwjLIVP5q)ZEpK9Z +G8cC0_!7KD=e}^I`aU^*hXXR*2w>;TX)@cS2nf(nfm$w#swJLAy3fuATQ1-pU8Lai|2I$%ujFD=GQkG +>IBxA9NIcrp@st#^CP7@h2XOb_3OVrK0`f(%x_$0F|OSqpZ;jg=;+RW@fr)(>WT@6h1y!9L0#7VA$^C +#k@D!Hk0xSm2=X}a(8tyKzCqxDyg+*dHz=&%zHnDvooI|74ZPN9`wtm={`~pbOO`B|g?za8-g~*-L%W +N<5A8pA0r>%5MB2tRrysxiK>qO6M^q;o@MBiEbFJ)3>7!4iE%G$B&OJoP^{X?f)r$S3Uj2#Ke7TKy-&P#MftB!pFR_)-t#yReLdD?u(m{UmYh6!GSl7ETyw*+(fe_IZzV;Kea}} +u;7|FFv`PN>4r_^+H;#^u=J{9PFnjiF&Uds2`WlJO1Nt1Y&JWa2)MjO6%_LsVCm9I`yD{efqcK$%uc06JJ$=4?>Zmqdqi}d`l{b3Kkufv9;5O34?;b%@kgqQKF5zZAlo6oF_ +#M-#9TVoHBdi{>j)?Vvj%$YJEAV7{8G +lp@~=l%5cA@~E|=db{|jCMy}AsJx~H#80tfII);KW#v~}xNeV^c8P1{NT)y#pSok81&a^A +doGx+ZZ%8OE=&Y%2Mg|jApe-Ti>{-}LxQq^`T3OnIa@9Zt$kIw8G&+afzxRJPjF6muK`kg|;lYQXMlv +K7F6Wnt^-k$;SeHFw#O@)5k<(p2kzj1r2EXmXqIu#(irTKb7~wIi(~ACu^+~L7Fn*s&hJ+N5Gg3`G;~sAEfU=ee<3umbW19LDqw;30W88jZJGxIS!0DMiU+=ze$rO@j5r!FyzCD-R +tG6MZO2v6+ +byigVgG>MmqNX`aJc;L#8J*qjG;<0IDO~KIN&|B_25&K<+yR|KPHFq!=LwkO=U=7Jk^`3v{0xeDBii<< +**+nSreExP!^U2ErsaMPNH=F`OYta)laO?=Cmmk3SC&$rB)o;A-@Fe@uNe^^&rUiQ%Z8R?c;Df +xY7Wz5LS$Zo1md|g8TxD!QY +B&m+Z<%4s%dpPVzR4!fGTTO}SW@HjGUjAtS!P=DosLH5D1OwA5Q(+Sv1FOD@H?z)N`7?qoSZu?d0kDm +jPMzF5Mfx?w3MuTOV{C{{hA0|mw3OXQxEM|57*FsPNL~Mw4a`z!{fu_!y_Z3$BdddQ8WDC_uu!8PPjM +K1CPKKf!73f3G5LV5NHmJ51ba58hB@5L11BEap3B}X9C{}ycpQ7|M>pa{!9A*tN-i$kMw_NK+S+=L6d +{l1Z@g>J?QJ8GeI(Fz`#)hXAI03SU7Oaz-I@(H}Lep7K8i-^&b>A=+;4V2dy6T%AkFNJ|A>$(4|40f_ +n#t29F3H6+9_8GdM4}Ab3ge^5FY|p9+2<_?6)8!MlSG1%DWPBKVu&s^H&)TioJzOX@9iZ+Y?-zrmdbh +Yr4d@Pfe~4L&uv#gNb;QA1+?Uwh~N9aVM3@d4BF5H-+&1`37ya+AQ7S_lwwvF +l+Xl|Vu}P=np&U{B5x$n6oL&fVqk>`G(3tSQh6-Y)Iy^a1bI`TgvZM2p4cD#1NuYuFZZ`QXMfKAe)pL +>v+kBTvRIbM59LL9SEi|awNo8d&FY%!uDPD1zt){hvf*Z%nG*am$PZ=*tAp;gw;gJQHTEYq(>`y1V_& +l?Y^B{}57}e(OMA|?SnRaRak*}u`<<(Cp|-$FA<6Z2Rj5uI@4;A1QxC%${ZhQ!Tg8zXpqyTT}dnGyYzj!hc?n9w3(iv7w9$mef9tgvp&$Q9%o}%7MsTM**vz0tzv&+$5=DF +!CKisK7mi=Gx!p|k00ZUM7?Mhts=*t?{Dzm^UwLW{3J=FlOyG`GFMKQyX6tN6^I^Gar%CppdSXJg?gp +ltiRN)daM~5upkn=6zmDk2G@goHq{}gT*Up{&2)usrCaCf+{f;OJLRs$7y`fuFbJb@s0uZpYlCQ`TnW7$5PCc(?szUX(x~Cr0uRzN+J(V#k_y%wcoWbO=TTPX`l +%OF^nlvr)I#-Hovv^X*)S&Y;}>C>2rk68beNMsK6FXdC(zJ%As>$R3KlCZug%MmOZ6iRf{%g>8dT6NWD^+lZ?{4AIltO=@vGr^T$xK%dYj<>NHq_HnHM`JQa7)j(%IvS03fb%t>5RTwXJPrQ +=uWr+AEk5u+&Gsj$gp+Ax7AYZhWIs7Vy3w9A2}n<(Q|RyMa=Hepvk-Eh?9KAZp~iN4AAz3@5h3-6nxy +8b^{QI!SLfCJx>g&r&TKZxfeSLgr5b~KLD>Gt4zMZURmeVPU$tw%qpEDRjoKPpYj@dt+ttOpuuE`#!K +W6wDz_E9s@ClSy~T!|$Ns$439?CpY%)*;oP8Y1L|JG9szy;%gKAL<9)?fgTeu_XOcF>xGK_e{kdbX(l +treJ8Dutjm6VdjWDRK||Azd^*fO?;?PXp0A9=oa*^3vOM7iDo>u=O2bw?96gN$!Rn=JDyGuJFOm1c)& +FrS<5u(IQ>#l>D69Ggd*g$mG0w2f|J%KNRi$!qjB`@MBPourd>s(w^saPO^pm;OY5qlcRb=7M<=6wuA +yv&n8wtoEX9?}9Hr9(v{tPeROL;R-@s4|^yb^I$^pq)5$`|AcSuGF9Gg7 +D*Rgo%Jd({h^ +jk&?a2YPg%iHR%8XU1R3G2RkpdPB3HacBL^f;ZRr|4R0H(tqw0ieQYY0H>I^ +915_Ikxss(&8q~mmF-A%{qFm#^2y1zz{w-1@8LGBrl{TRqU69{AjgIu7H2ONrk#9Uxe3N*@q$8sQ20Z +giZN)))%0-1V!KsUfHAJr#xllDyp>~yXvGOJCMsWwqlV`|MVQy&}%d^jVdfk$N6h#h0c!D%7O=GtjC& +lcDsTWsgr`L@(nfG)q|5k-5nM|-qKd$h;@W&9UVO9KQH0000807gYaR0uAl&4Vfd004>t03QGV0B~t= +FJE?LZe(wAFJx(RbZlv2FLyRHEn#wPE@gOS?7a(Il-HR*e%=`d-We`(89>oEpfMdrO{0QJnuZrlQj9j +KKzd1cSI~4jXwn9at(Xgg>17N}*HKcp+Wyek?83C^ng-jjy@=ZFPh;DSnxywtG-*N7R-;D7i1Yt`&v} +P=8Nj5w-Ti<5pa1f4d~fISoacGYb2;ZZ=X~(q&B88(NWw1~72*Y<{tWRh{xl&nJpY;@x|}~NdO=(Iv! +Ysm!`i|J*L?buYw8~;Tv`9APks8K!WEw=T(j;|g$zD?2b2Mz +vu7x=J{vj_1W|D$UzlH0?k3M_;bMpGF^WT-%Z=V0Q{N8zfr_9^=<`G=8Kf3e$KgsJy-ux%|zWhz~ +9G35^8&>*RPpk@$dsS +!T4I@Em(kB7ZpEJW*u;lqg*NdLZyv-o)so<(O)O0oVrQOB)Lx4=`8KgovpnzA#Gq~bZTUFG<6^Y-=v5(A#Qz{%_Yd%i=Fq-}#z{zaV+KX_Ybz1N5sq8#wtjU# +G=WBk_!Lt85%8bEl7uu0#VH-H;614|4(N!b@k>!Qr9NHM3hAy~5WX>-vjHcHW?n_@G^!bGX_k#Cg{xo +5f;aX-bFY&K3AkNtxqL$Z{Nusu>Fc7H}+PQ;vQCps7yos(++l*_SCTa@{Pb|G2zak?LDXI%Z>I&PJ-i +KeMu$`M0jn=NP-83Iv*Ik%oJUcC|;@RunmCxQVWzn-m!WJ6NlO k)}O+pWF8A-%qhWyAt1+f5lbg7 +dOpk9V~Z+@XjyXiTj)=W +}*AxagWA!dhc)oM4g7CMKS)AfX4&J& +YRC~ue}3x-j2F&0}P7*OC|bmMJHejy%Yb~l8p5$(nQJYDBnmD3wD`(<>^_*mgPO==Y9%)+WC;NRO@K` +)HHF!)M=V1dBzZ-XWn>Zi>J{3%Fc&Q41aq%8ZE`Qqx)^*YvLd4?h;dq?h+jje#(Y#mAa_jDZ~*YDbPx +oNR!@_mLpGJZ>&EcL`hMSIQK2|!8fAOe7-xyvVeEy5mzdEOrRCLh +LN{}SGj?x*ecBi1(9-j1Ta$B#TC?5)hZ2yL8xWzkk^TMk5`C6FiQ>H$-cZt^$yrPr<E0zo7h$iw9F^_qKwc~S5|)(5Wt*o(R2mV9*0P@ak@k0JJCyS=E6qTkg&R{9eMlQaweL-~FAXwo= +Ywq59MvuhZFW9*V)%WGF7=Wwg(h8YQglfZ)z3g~5Kh+nOp?O+FpbdOr`^WF%4l?$M*V`XT +Bs-GqsF?7T8>8qT;k@5U2MfF#Ne5w9bTDFcxNWNycH(lF4ly}n!u1Svi#6>jD;)sy(~*&M7^VT>klzQ +@_rPGB2LF*jgXki0RO)W%>~kyU966UFB3AnF+u0OTr?0%}h{u*S0Hd`Q`DEW?A315y48wwQGd*R+5Wc +-R6y3%?n%F;=xlqp9_YRz$w|P6uT4dT2nLmGM%baB6XgTUBw`C6O0<3(026!(_)9%uy?7Yi{pB=yDkk +#Kx7PXrA`~MS!iQ;Tnu~2t9TZQI%)t8q&Wm0Zd`t?OqCr@-|rWN0i@RuMTjK=mfqiA2cQ6$n?-|(|mI +O4fNQ@Tn$TfbTIS@Oiwi!@%VKo?zewTecu6z`UfCAajRK=pE=51auHEWUF4)?$Y^XY6WU`cvSdGSk?y +aWJ~~o#b6ry74A>p;oUDNBivhkxHQ-F&cwQ7hkz!D`}PZlXVoCb-0Z!m2XG8h~JqPqqVG?dU5{+MT@c +OTMoXyf1;>eG*x8!{VNu()b%5E!V|ZTy!$)6*YEG}X!ZeZim1Iaz311(_!*jW;ABdBfw(?!FUz)n&KU +IK$8;wF|H`zUU+YL$2Yif3cboBo7r)_jI?_4ENC*D+;y3F3U%MX2Ixl|Be9v@ANay%}AD;2xi1q!ywB +B*+Gs_t_|GTZ{zlxuCX!l=Q&VQDkvhUcWJ$cm1`;f!6%fa(S&}r89^>+2XUgbHr3br4vA@-{WUdKIjv +K97T$OgQVvb^wu{2p3q8`<~9>to}!+1j6jKi}N-$S=45=%M@n=FTsi`o^I*%=cbR>=E_Z!}iwsnjdvu +Ocjx#hxbW8@S?NUztxH_yY~yofq4*|pFwhwIFjb)H7ur%-P%?9SIv=bQPX>%5 +d>M3hhWZyoQZUHjglU0)odj?wKJS-!4`%|f$>4hylzTVX`lE}@mbS_*u3+*~PbYuzUHJ`dlLX|)P7?F +V5uBV8Z9cie1?^a-(7zW-YzLYtZ2(ATS-(92Hbo3=kGR_zLswT&)6l*{};AM)LwWLc7N$> +j~9kc1Ll)>e>dpa%kQ`z0xbGHMx+q+u@0mU?Uy#pk2}&yQJdX6T!ia?jW +NaCmIO%5!g_tcjXdFLmn!|YY7M{NyF?qGzkswhJi8w;w(@yXcG9wPO*GEi)n3qR&++{h=}zPQ#=^j{B9wg+{q~tjq +OF(p;hyCh>;u;uodYXH$dzey`)7zw|6|5hwDZWSEYUqr6Rp?N4&Au(*iVqxxp8OpCYy5!>mg2AZ;7nW +?ISGv%sOpIujT`Q79!0Wk_+u93Opsove*K#a5RB5K$4gRSUqVy8(r=qLn<=@G+*z#I)9O7sS%3>X?i+r*P^}v=aS(_}5Hrw(BIEF+!{}R5jzQ;k+laRMV4< +EG1(((Cezavl`oggBlg&Qy~cZjw;@YPPxRrZrCBSN|Q;{$U-_CTQ8CX`%__4}SAQBs0@q_O19-sDj4< +03?UtcL9E1q^7LkFdRp=Nh{x<^6f2t)G?>It6-t8F(>lqU#r^uP@t(oB}M?I<56V|Ccfk^YUFY^449A +?j;UNOq#xodfIKG@euNhtoH3=;X=vLeZ&1*w)Hy7P6555J%*(M^S$|`Nl;3u=mAGgBjp0ImUsn;qH`0 +ZD``F2YA~gK1p(0Xei`Q2r0$ZZZT4!Ig=#;doNKx(nL`8)1y=YfTC5zVDX&_m=TRGecKnj?b98#&$n(r!}d +Ah~Mg%46Ja5%42v~9M{>sb{k}cJ6ts^E1jXz5$W7<{?3K01x||Cci7LEe>(H$h8GUk;|k4SyU`9^n>e +@clcJkEol`$2L|pXUEjndcA2TB0pJU*kV-6`3B##_ZG9!Pu4+m_bRHlEw!jHT!ll|T&^Px`J3Z2HcQ>wh`e#k=|`9({fvS}Pfq{!q~nZ773^wy9Xv-HMv{|qBiZzCS^;&=dF>XI$++-}IeW +A>{!UFy|)%DCY=cBO@WHx#!kPJ-w7ZKS-l$eE8-L}*J~Lf+oW^bqMR)8o1pa_|+TsmnH+AcIRhLD9(Z +Hx0b$(;?d-|2poih%jH>GzA0mZG{ZnDn!@XX|z?`;f1C=)>_g-8#U@0ceo=Dx{vR)4C=B*+Tyeiz75! +)S|LI^ZAMcM`V8xufV!a1N(yBk=QxttZ;B>_m~R*IJnw={bEC2TkeTPCUH56oXGEi=ew1|{Jk)3Tb~# +0sS?Wg~Khgk?P5gF2y)S``ZCZ;m$$R%)HF;0VlzhJr{a(V0zP}N52a(saNi?``__^fy&Q`$Z2ku +Fwd8-9CT%6`&%vqGm#oU8;+U@MjcZ&l@qvC3=74zb?*sN*d-`bh%Z%x7)ykIe6}_8x~0VcSOfIaYlXw +>zWu>mV0JoM$E}-qeMHlXHF|6Y>Z5cP7C`$FD-$RPbrLXbZrOC){~+QbI1!E>A}p39xN5VLN2P#{TSv +Eh+0NmNrVY)xIabosSsDSs(J%Ucxs!%HD={7dypK-32>hL-BeS?Bl8|Z`sM+nV}C2#pF-U2wN>1?^k6 +fg_>=yfn1c|hrU?}ygPGy7M7QaM&P%$yjV1%9km|KHL%FEadKe~kq;Cfx+P7bSImA_YD9M1a+ctG+2; +ZKYp@Ycp|d|u`Gc|x9>67uvyH`3mx3>%2`i;Dc=e!+J95M>O)_ECLiV#s4x@4t6Nr +57g8)0X(i_w+yNvvZrY}o2&>=WhtD)W6G(k|5|9_fe +7x28XY_cOJ8q|Y0Xz6!pFbEsmg&(Ydi0sdOz_)_abjwf3Kkc~@{V={2k2%dbv#FM>uQs@sTk7E|E0}h +T;Y(&16X+qlH``%W%`^^lz1Hzriiqitx*jV-ji{AHHYAfb6Ujx4s-3pO2*%8ug=Si`jr?di +X9zw>7=83soMLl??m#Uo_E{Ia#!I;!1u#i2EENq^$#m*``ksH639Jh62?@!@< +6YHNG$HB<)4HeJ8Hhtb~lQ&hA&`;U7NR-`&cR6^M%W;{?yI^BMHn}LjMX48QIw~`|JK5KY(nB5W1NCX +4f1afJ)=5vGx)Ob^L-wV#5YrWEX`#pQy~@mMH+_mO)CHRReu?_lDtw30k0TxMk=jkTs-Q#G;@zLY8!S +_QRN23@eJV_wz0Owt>L)Gv(LcKW!OTzorCrffAlmLjnw(oi%`JchzJ~9VX%B<9_dq{|?gM|3=4(v4=% +6zU+tL-tOaFlQ`o5qanB(Kv4by(oOxp)II~Eybpk--wfl4#<@PQFyH>6>OMq49LU9PD#^=8@+7LZnoe +m_SYPenOyGLo)`kf+WD+uNQUP6KV8C@Kr3!Y->CT7Jl{iM>mPoQFEu-vL{*rVnuLmucj85&ypLefC%M +XmqcYccjlG=gZ>!1)Z~}DyylCHcc_U7i+gtLlQC +l?!X=dwyD&j+#rElHvNRF${T^8F-ymf4RPBYH_~Uk33bH^F>`tebMg`22}{E{Z=>2P=BMpvGPo +nSTGG@%?^@TlB+W+}~|<_wQz(6ley3+CSme~>nRC;GTYbFMD3iCX; +@qnmx&)#GhljDB5?eqFD{`?bdV&!fF%qOp^GHNrkP(w7^7AL{;HMT!oZW0($B`9~jhEBLh7E+#^EbrT +lpdlle5OEebYzG0ftU1bv!y_&wn;}nhPL$%O16U#My^-go_#VX5aC%|TjY=z&w*Sw#NKDBb~11Ad|TP +F$QtJ<(V0KdpG-|>=Oe`5%C^h>2JH->VG(C_i{Xt@LQBfg7vJoE))unYS2&|?+Q$!feK0R7u+%N>{we +?rbzNdGHg9w@P%U1mM||9bV1&-9kt6hEd|_z`rT4ZZ(IhbTRi0h{cNN48{YJ?~GefR0NO+3C;|ncM5` +%5v4+HS^YqcZF>e7Zl&B-=(KrSJN@$&~`ZAXXu+P&g%I!Z5KbTPEE_|w=JB%*|GnYEabiE<~^U%ktZ0 +9cFjRKUf#owaUv~sQ&o{z=4`yKrgO&O?OrYQjBzzutK*vsHr_!m%?!f)?>9)Jl(1y)ugA?#m&t((-FR%SnHR@*lccHBJ;@6M1upNs5&z)!s;Y!t9Pk1$#Y?I4u(; +*X<)xdd!`L54w=W_7m%q!8_+2|vHYil4qDCZu$W}EIro2s-4Pb}6lo&Zk{9J(B>J;3oT`E31MUb{6>vxRt8kC@O59N|R3+f00eG1SysUywUaqCDuG8ALt8w`6kBoht9v_dt +WVeU={@&;uVC>#hBQl77Hvl>9(k310uqj>YY%;c#YLi;~=T?+eWr?E~?xYM5jrVH7?RtvQeK;*ZS+Q! +rE@}r`wNB=1x9O`ZGnH5t+ +8g+uCbS4O1swz7XA3=NMc-9ryt33LSn+afX;k*|49o;aEk4yj8a`BlLDPbS~{Ayo=e#e>TS})!5_2Fz +sX3I}Ok0p??ZxT{+=bQ4imrLK?fBb2~ZV*QXhg*Yb==5z_dhN)H}KI<{*7dD-T+WRb;oZv-CxO~qJAo +1b$G-@^AC;I!SAwt8cVs6As(^L-om=(oFkha3tI(}@SCx<3HDOxz}Glh@QqyD3l|hK>6#$n($mJzG7q +wFCK@D}hV2y~C;Qr{TUo%joXNQZjQF_^m$;&*|!!V;rj;BC8oT+v%ZbZ9m{>*3wq@f`{3TL(I!DCY1G +K-Pl0+pNcjF(Kgbf?@rNu7-f+rl<(6P6}NT*4{RUHA`VziyUn@!jNR!wJs7Q3w$H(ix2GGCk#W>&&Yk +kts+WE(M%vJvlX}MT4sx>X@)-8>uuW#BgS>3}orv3BW7$Ky;A;hvL|1>3m=YxS?JsT>ZX=S1IvMwyA#HD?JE#@TcjA4C#-He-{gvY!?YnV&kUW`a- +^BD&p&3&ZYiBm?@&M;MM*2f(e7`gP9yV>4v`Mu0g*-wZ;Jn0pvV=PkZ;-Y0Rl8#O+9oNxKT%KRX=3xC +0@+XJ)GIxEY@zaPU($QEVOvB#?{ZL=`+AT*_Fj%7C5z|S$Dc|Pdu6))j!-NOe9A3M$FWQ)#&z;J2Xu(R!gMjXcUs^slye!v?GW*?jIsQW9F$i_TA+M%qF +O}*OZ_abK$Vy1e~gSjdB1|aB3b5@^AHzWsteT|XbF7Y%~cI|%W`0YXDx1+(47e1So3XGo;kki?(XA|$ +*j+f`Uq=oeR3!tz90ONWt~?~9IC6%-@!T$AuZ}zc6il9&tZ$L#mz0kdMt^PVd)W96`^V3K$H?S(UN`d5jwK&6?OB<}?fau?Ph0I))_)%UXul=@H&oq +QmZA*i|9j;3L%*=RD(KhdY$0`!oKHo$_u~5>P|hc>M!)CJGrH-2dK?977<0>fCwsg{$|#c`Gq$d>(FY +NGW@#y*)S)}Jrso=4f=#OjGn|2AokbZt{IGSWz1~xHx27LyFv}`;h&8bDYnLY}JDTa4)_2h;3k!XIuR +TT1`vGYBo9^N7y**`50N#3=(fMa7<0iCz5_mpopAgQaEoPRlJ8d77{B$vktano&WBAy9Q&mY?+%k@PS|P0qmMWQzWu<%J({z%LkuqXFlZfs-`1J&>h@bz?1V|jd|#j +R*WEI%k8^#nCw!X7WgL1Nagl=i3HV8zymy(_ +h{0o$%^*r{+9TsJUC&zsA$^Ll1u+_Zr^W@XZbyCP~`W!G4%f7&x{8*XY{!9yxEuK7DPn>L-I71C#W~3 +)AL@-`82-l=Hl_<9x-Si*IOgtKO{WJrDHG1-;#*_l9+Y9~r9Hx@lU$j-p9MZiBZ^0X|Nsok#<&vxAhFJsnl6 +E6}OiGU-wCeILh&@O7KLL2A(Sw(tn1%E^W6e2i_Hn#{C@Qa)=P^d>u46e7JAnov<%pyM>yy`~iO35Bs +eTbyT7K0`|G-Yj26B7@-{CGP3$M;CT`7T?xEbKt?G#R80{%&LMl259PiAJS+!&y&~<14wxWwLq7Dsc1 +;`j)8kKUC;adOkNpXDL2!n#{#kq{e5-R?x9`(32DoOSF4BA)Hiw&e`X3K&r#--Nxqjx!?OAxInMb$-+ +hv@q8Q1@vt4e-uHm^%PYW+asczi5I=Azx^tA)JTQV^Fb93N(ViDSy=uSUB#_tkMVTEe+R(6;n*mVDlkO69oEeu206Apuc^wP>rKMkN0blb|>=OhrGPrKUwLJ6ES^Y(a+~ +)421?+XOntir3Hqm1)LXA@s764K=pwr=X*tj^Qj+`?J~Np<0r%Ve++%|K})&1!b$c-Qzlb?$-ZBjUIQ +AJ5Z3)gGImhvv#CW2{vPCezK}NH;C$wxOs<2^Lz{3d-Z$r|Il&t|O8 +KMrv7>a<@fO$Mn7BR27&sH&%*m?$Kaaq-s@HjosOgKgS91(#9`1q9+Hx(a@qmhp+N|GR5pgy(tS{7ZT +pWKm4Ib!!k7%O)jZPO$y-U>m&%q)!Pt`ZwXc9W!sJeSEtZ6&YSXiiHOtbSb=Ky*>UU+>c8bWeCL$7{CEDN^34Ou@pm4FXN{JuYzdADp-fAy+|`J2lsla?L#;^%nBBAAlUCEQCJsqdzoctC%XU=3e55tu&%f)QmNc7s +mCn>wPdbc-ETtOGvH>GC+V#$I93>81|XjX<@3n&^(vE(YgMCn>vt +?J_LmpowwlMWFTF;HBaCK_SjvKhd}hd!e?>f}aZ$m7D_7-76q#kgka`vLE=pQ-~u~4GrtPGsJqoTH|= +MB^uoeohH-0hx40Bs+?0O$4DAICJY$&8XQ{}Mib`?eYm~>nsICden-gwuKo5@Uo-fIJhW-Hv3|hr^fd +ry4fMTd8S8^rIlpH#ajjStWL&XXMjz4@ql|PsGf$r^Cta2kl;!9?#yoItj^+4K4&n1$FV=g6i@tKi$W +r5I!}G|1_uRxde!ewP=^&0(Rz#y+ke7R_(4Ic%pu;2PD}OM;{$W`~Z^Gs|n0=J7h9;jv*V)5^c88Sfz +p&J^Mb(pCj(R}Uu2R(1YflPuo@KI4wEe=?{AP5k_QE$@#^va7ZGB&UdqK2Wl=ZC?W&MnsV_bQS=!8BB +^?k$^VT?zAG^sPXT69MbCJ#mzr3^;xT2pi@o@;Dn(YukR#uj-CcJ}$xj?U=wN!|a~rsn^jf=%;bP0R- +zd)Fq3QqK8!(1#hf@w_&;p#8wSffcx)0$4v{7hP`n=WC%?7%xM;5=(E`MeV*--i0S?DkHz13LosWQN} +ts26YC$URCF!Zf6tvNT;3Sa6aHF^xJdMZ6oa(6-WONV1cinO}{Kwei3Y>d3e`hbGLfVc^3X&^808y>^ +paDI;^wM;U<#~#u#*9e8XRd4#0oPwP|tTzfOy$QMB0LT~Atk_FdAV=|4k@WYD75v;OzPdMsf*j5xc+1 +6z`IAN6(~@Ez2KWp(u=IUZRVnK#&cob&h1w#;*z*q?2ck!G7dfOm4taf0b@pM)*JF{gD3COI!0K>l0N +#;1~Pk*zjcWS$u_Q8qOeqwp@)?TEn_)B90$1Ze-Sf(!&-I +b8r^h166fr7=Kw@vPauJG;`S*h2FoaWa>?i>xf6>edF2e^S(2{*3oCf;Lk6Yon+ya&g?JLOi#HSj*x_$Td8t`VVrSpc +}XW|4jT0rVxtGO9IQdEvFXXyaTG$JS}1tW6eK%{KSyfvak6_nL9Me@T6}iW=7U+5b#^3I1*K3Q^VqJ? +OpO==A@S=$x!#jyCImTfsFAoUb{n_f7~oi;d2Pu;|R;d?)PV`e`CWe^;*peqfn04_xt6|)bHe`XdKNNm1Nhj7bj$aPMvlq)hE6QxeNQx6>s8}Bt7l~ +exBGK@7J`2k9zq_%HXCrI0j6(nl6+Nj_^^Lr`BR#VKmI1*Oq(Lp*EIafzrHh?zhF2`uO`Pu({#Y5ix8 +hvGlSbZ(8dQGj2+_GWKY>D^s|m!wkgf`E!aA5plzGXx<}6A#K%>(x(vBCU@Q8_EqQ8;V=HK|4m{CpgS +>)13uYLRSWK`$`%0$Dc+T#COO6ffy%G5W$Rp>^%$RoO>6h!#bQ!O;DMLi8y1;K!W32bUwpfR{;2r6Y`{!3iIA8D2ka5y`U(1c#knOq3hJ2L%-kRGu*OAq*CaJsJDH=~^sIf@* +en+UeT68zxD7sg092&G<v8Jc`@O??cLocjG+08|enQupHo39g%eq0+;MW%Q0Hy3)Hy4+7gljE#8;VEWJ=b=cnq#k +vzcpClp>8#KlDWdIWRY!L7W68z-$5M)$ZCY7#wN_SQ+BUBU(e_@B5q643#^%%?Q}N9ohksN|-#Z&Pvb +&Br9mW=)=4xG1BtomRMdbdL^NY=`D-*7%!O1h9H#4XE9n)HDU +yUs>y6Y09^T(q_h^s|mzbUxqxgJUnh-uG_!r`Ezh6HNZuFb4kw#^9gjQox}HHZu0Q`jb{bCuwrNhOwW)w22G)DOYES?q6^o9P|bsxy#G6#(Fc2KXu{)r>4@}XQ|I))>lh-Z!x;P(9`9 +eTH_nZqLyQ|d&)d`<`|@xHguYZFdqH=D04Bc?_gRqLK56cWNr$X8Etw+_3z1RHa*mZ(i`N3+1sc#=2G2Ys;km0bl4zqP +8JPeAGMR(Dn|ym|v`^e%1k4I5$%MoY{t>n)F4>f2YZQUEZ%XGS27_(!C;mnn3k&jxU-q-NS8tZe&|Gn +e=KP4Q`3YIK<*+w9Ji#nkCM`3I4UxufsyWGELF1K7oEg3;izS#Oe1hIf{PwB+yS!5w$ztfquQi^h1A& +(a#yD->oM7Zn4nsW|MvkhUsTC#p#D~#-$&=S?QM*r{4_1ezCo}DklF;8diaZ`i#S)X!sxRl7=svG(0w +nhJfX{k?p+}4P*2hYo5gqS>SSL%a;F6GzPPP&ur+NkA+`w+Hg&H0`K +X!P+vH;DN;{VXllJVzu#?_@xtx~eD`v$p0PUGq`7{i<2pLdRmph}@W%z*+st(%PCWbZy}v59b79qDOuLn;ZU@_Ux@jBhg#PVbZA^xQlck8<}DIsG +m-ZJ;N}ecmk#6IviSrC$rU4$A9=gtT7vy4C6Q%utMNbCo4aE!h)oXHXrO_Ya`u04KPw3FT4`nb{~8@^*+}}Tb=J +~9q{#t-*mg2BjH>L{m0?_$tu4W`D3*G190hwe)MXC3ncB3=P=rsSm$Kq85xg0at;o(iZ+qg%qyQ`KR& +UOEV)Z{n&l0Ts@t+w_c|dhrCU`_3dUKYESG#sUpPhcba|ZExSwhp=PrWm1=pG +K9oDm&yT+y-S!Z!j7^C5r92<^9O_ECRzJ#>{fPP2ydCdHAGl^eQuQ*=C*B^}kD3Oe+u~#Y2Z#I8dXty +eC-5?#-|g@680jaN*GtzZ%UXY8Us`YWg~UA8zLZ$M-SRG5j6Kgh>@zq=`V8w@mJeRkL{}GV)h=9D+-h +{wj^+4P-eu761`+AB!4D%3Ycl?`+7BDI_))EfdNVARbF!ZpcKCV>aJ7IxLmaT#)_27fNOLh3f^Eb6tx)M4DKA}d(1>Sp$L0iiESX&-pLu +KFBgK(*&OP1;8fAr1Y}s&$Sm?NMWE-3l#K7g2NiUgn!CeeS)n@pAu-YP{UJ&asTXUIWs59hDKtmUCXl +3ZlK^;q<|l6gu3@8S;|a8nY%a^g?IHRbL9$W$YFl#x9j2QNmZ@Wkmi%qj84ugUPu+)pFo@ +b{$?rLB7dHW{>pv|S;T(o$9v9U*Moj_HyDxE!CS+)x=!Ir#t@i!Hd)ekA?+$$m%zquh94J8$GELkH*n +vt0*QZq_s=lx{ik4eaczN3+55oRg61-9IPdC=K=o?)TF#~^*|EI+c2{^cWxdH8Ud?sHZ}J4!o?Byrr2 +Q_q_xH%SqIcvE@a!4N;dkN>q?-!XF9a1XdaQ! +$I!-VML_dl551dC*DXptZZ4no^)uj;5$YK8*qFd@ldIS{xngv71~VMXVc2KzQaoIS)lh=<@;MsEDUO* +Ov%hRkH~$ZEPOI*eef85Pbu=OgDf59sf4<$a{D2)>mSg5)+hZ9@GtAV06&2?_e!)Y`T +Jppv~x>4_nL$8_th*lb@YvZv)y}4BVEYpGv>jd{^4CeBnGiGcWPP{2w;+E1V(!Xd120ML9F1pFK)9uJ +Tdyzmvky$Sifv|qU&h8X;AG5Xsk8`rkv9-;hWOupnT$ +RD|05`C%yZ3!X`>2d`0PrSYeSAUfDa&J%a~S&hd%l6ci{IGujl}tt@$@p}=HT?}AOj)m$zS9v;Gwp`K9a9i`2yWf*r5NYE8sg3SA +@@B-P45oCaFW7?kU54Sxjfd+R&R3Z^PFtZHVc&H{Sg78~ykj?0=&_(T?Xl=o4eW-U`@*t`8JD#h&c7X +hREhV1Q@#IK-S%Em*J>IE}oeY#Hby?sKuXlY7|h&kY6fZ62q4L|f)BK*HG;qQ2t@ZSX3-T-WQ=$HqZ*?row&+LN|U1d>5ZzSiQb +k%Ua`4-nu;pc2B#OySnviwDwEmw3&L(1%0}Bm(l6boCDmupsL;|Bi~mE#nX#Hd%HOYR>in|q!&oT^Le +akSWcA_eFgO{c8Z96222`cY^qTE3i~zny+Mn|(fkk8-!!6r=g9hp$D0_J0=oY_XfbTRS67sAzbN)^&V +PN-E^61I|1*Yq_YFKRC2%Zi7u~eIxb}v7Dt|do?iE#f%5HS80G(pv9{kQRk=wYgsye<7o9km-X8Zg;( +arIm75L74^{8v5IX^VtTq8^y^LD^^k$cEm#xoM*5G?SQjs?H8tGJecG2;O!6>V>U7f*oS7>Cn4 +-Drxow%y0cm;9oer#(88+!dP)ZYTtC5kFl+7NuuO1`j=1gh-*O3C4m0i--+=KPR*Ulv45^ +FDg=GEptfJeK0D24r}>OBgG15MeYX4o`dhL+kd<=G4fS-|^wb +6!Q}OQOoBmquc=~el@l0zw9RHo|_`!(vi?Oy0n(Lb`4DV&16pq*(;mh{q@PZW4wHI=Wvg_q!wa*df^4 +2Dcu3G%sZMg%ev-X4OqV08iLD-Fc`Er4%T0YZu973&VKM|Wjgn0Q?W0*l0@yTc +y|*U9AhC +{F#~_*M+}Ii>;A?J|D4$@W=lncziqU+IVcV;PGtQNIbrg7RO_M+O_exoOom$G|FNuv=xuPP8*5GSJOt +}u_=bfe@~0!@uz8VJbv+A;4y}`pxpl{IlhOG5HAVz0rg&3-|rC)6&Gb)@7*W&^C=IFc-~(=@|+0E{s9 +*)bgI(=)wfKRd!Fz8ng#xk;Ql!7iA(6`NR1F(+!Oo4)o2&Tp^MeJsBnp0boJxetMxQ-OdiHVh;s#A%` +M|I=R;>zn0uf1or`YUi86XnS4&zvR(q?ux?^WW+;Tp;jr;kt&d(q{<0c8`!pWAHYm1!aI#F|P>SM8eq +@Vm_blX^V&-)xIW^G=Q=yE4+@maaU?t~5z{i~5IRv=G*NsSzCiXsIGn($?nx9LYmrhml(w`8GjFqoy5m~gWpSa +Oj?*k5E^Y1ZuL4$14P%8{n|Dr&x0ly?fX)^nWL&0QEQ|l@}fP7pZzR#u)*fa&pmDKoJrSGMxwMvYo&? +C*qofRU)*ucV;_U+sw%Of(+1sNl7i=1Z~SPJ<1PCW9R2}8FXuX=rW9dl?c_xt$jSF1UW@}nF@`{UrNj +_>cNrtVlq*H{ADWT3D<85H*xeje5}_Pn`X9?IAdGCRv`CjE;%L7+EaLLeN(NMWW7I0 +jkmuR*Yk`ivn_w26EJYU6OMbz!t!Y&Mx*V)zUYY{ZL*iM)Vkn5a%|7s>yI{Sc!sfl=Jm$4=UzqQJb5<74*-joF#wR$`TK7P? +S$Rz5lM~QD=ck_alFq3+1+&i`c0hU+yvXS;r@lRA>Htw$QQk!&m8a$%Xi-*YI@!wztha`wB#=`^K;#8 +z~+>Ae#ks8V(Z({z1O1o=<_1R-=`{K%9%mn@on=goOZ}97e+(-v5Uj<&NCl9$|Yr@ChbLe^Qi6a7 +AbmuR(H{11rO{V_cY06JEFFGk)4|z3jC^{l-$Cc=)^|g?*az8ruWvAF!o!UHk#~I}B&k@~c{zdD&j54 +|2wbdoM2xlyRs?49dsu1?WXR|q$B}y*2xMpj?K&9IE+P8esf&sfz)N&8`Q;!+PH$tYk@Z%XU=(}BYr= +r_Zr2Z<9aF+n)!!BhreBPz@P-v@MaD;n>+`DMO5vP{Fq^e>;YlFEq6>{)6*M_xM77y%(U32DP<2&s(* +MJMW`H_~k0*;j}HrK86xegaNf9ITh3A83$i;`3v9)0cDTGtyv3!dM}F`;#^?Ft>D#7G)k&~~8ki2jJN +_1=SpNBVP&?lVY}ZpI9h7sxfMa{?&uU(q&xgD-US-V||^dvqA^b%|f%)1|pu&rE +12JPNF9o_atS6rrVU~Fe>-K{odZfxBx`*!^Ob#txjak)RG4t*>@`}@uHYOjI+PJ<6mfgib7QS98qk^T +QiBhIP1WZI`G3`b@HjxE)4!`!vzm0)Af%+jC}xP0q!X +ql{vygHz?Xkla^mu}e(+Ot#vy>k#;s>lY6@)qZdR*z%jqd#+tuY~C~0-)Y`ou;=-T9B4}>`V4*?w>^a +G%bCjV^yB&vejK;0!nGDZ_LCs4ZJBC)-{E9SeaV*kk}dTm$Lr&o%#N%;byt?!_u&w(FK4MS!48z!m8o +p`D!i-3kL%ro+?Pb|UuT||0hz$Pym#8lU;Rur$8Ch0I8IDQUCuP01z!Kj+>dT7-!vpd&y)Cl8NYwPZ! +>;d@Y{-CmreBS#m}_s_lPW`+hXVASy-PpbG&Q-@BQiU$8$wC_kZ=xesTM9P3?Qmv@&0Me4NNSE<08k< +YAUG59P#kWQx*zFIo5Xi|?N{a$f+J=|Y*QdZ2nS%4^V^OY~WXx9ghgMO9C1-PYLi41>~-w1;6Aai8R4 +UR*C&^!jHYgL&4%tJCC}Sk=M2o`upU3qte@Y%3|puA48=`v+W9G)kYP=zV8Ons6jt5ZS$L+g_KQ{qq&3&dA&U2qeZ3l%up}}liB +a}u&(u#abM~_U6fecrzEYN3vSC+YkI7)Z=>PF6P?lln+c8sej)3Vny +dP)BpZ~sgK;S*LLY6)=D4yO@?TrAAS>H*_e^n$}&$&|G_Qw*CgbH&X6(9+?VtUi#%#4$*a&pwB5v9>Vj>Not=+=(Vnq{;eK1 +&*ZB9Eohbpd+IYt6C2~;_!WH)?g_9_`iyx#o+-h+v3x&AKG;(w%1+7+{~wRCFE*eJ!7m$w!7I_dge_U +xX1T+>wk9KHhwM*ipJm@>v@Q4*L#|t5UECM$M^i+bHr2Ez!1vr+D9yC{-mCVU+#B0(NR1_lNZ>0%j-| +7{+6=|>)fv~?cgRxz_IUlI@2qj^zIUv;zmB@M$LlUN>z+48-Q(C#Vak^?;0f{+<1aZbQ|#EZU5?+x;^ +J`S9(kG;I0pMT^kkYjHUPT6#dG&i#wPFr%W1IYgDskm^yL@TntXMxUw-&elkT)B)i_pu_;X2UpIwx`0 +(r%@P?l?G#|4|awa*+6x}f$Tg)gCpFQ+T|!}i_FHoujw=zSqw^0pk;I+w2SF_s-M);QRaK8}NphbQjQ +;tn(3y~D)QYDepKuAd({9+qaFuOdQUa=2Q9n%vh*;;s(wZZ&Z?&!KR~a{GWg{rw`x^?p$^*7zFBTY$X +FO*~eZc$_%~9vA*8x-Aip{{lR;CFi%kJ_a5;67cv96OT_@@Ywzr;;~8MaipE3?=m7e!jOAOa1B|>sva=$a4bED3E!+Rq#R$a9Tb$uvZo~g4r=j +&squS!UNTLNq^j{(wFU9r{Yqq&1-M@me*P-lJhWDFSeg%CBj`J`b%O2ieYRvV}v9;T3KOOqMg~I4 +A&sBOjMaZ@O-SxSo(Sd93=OxFQL7R>hx0m%Li&CzYlKeV{``xw&>8}UneyE&_lV|>&rQN>-Ha~3_Zzu +PmamltVmj1+%?eraj9RIVNpA$RtlD>q}M-CZ#$$c;x-y+{>$)N{r;4`y6*ht(%YLB)*J+uke!ix0Jm% +!KZotB~A^`?iu$al%{Jo4P26^^o?%aCiooSG<09FtG7t9_VJ){fPS=YMv+Aw4wCHRcfC)b04I{{mJ!AW0_}N<{H}ao|}xulV+dNi;6n33{4Z(@SLG?QPJ2U_hX$j +*W0UNwK`G8i!)MoRJ|_B}HL@A}PhUU9X&56U^9X2_6DVrR7%zd|i +oFt*=j5AV%Ua`Ix1Xye&q#E*MdKKg+>3??|seMp1TDBqQiKD^Pz^B^Pi9XSrVAJ5b=y9(vmSP`DnDfc +{utW9=P)*c)suO$r{9U&=)OgbpKsXlQUeVe?`aevND1d)#GH~aqCR{ZaBpS#iLDzV>Y!e`Yx7Ioi=w8 +b*!*|TP`wyB^wSDma#BRQ`H)8%`;c;u*=vB#$ibR@0_!nIyf53Nluvv$DPC8%S(k3|va7|xbHakgkTZDL924f5iKFJfLypi`dXM8n7eLQ0Q}4CpD7$a6 +P=09u^msZaelFVh`>BpB=hJ36O_p*tk6X^@_-med+y{P1hg_JQCc1tJ{H58ANT-Z7c94JPVROYRN +P;cTb)4JC|tVp1$j{>FdMS)RZ4P(~{<8q;aQ+t}kcgv=YX*&yeM1<-1o#_@M%^CXPHy+-eitmStLWvw6X~kVG^q}iCWtgunl8)goPB6}EKRCYL`?rWd#pHUMZdA;#o}>LoEuI>S*z99sN5g& +*U(8zQE!7u&j!%*%YfmY**{nGOcqDW)5UYOc&N3V)vCf&As*5p!E~NLP?hhjEJ}rNM&r5J$r+xJD$t%&?OZN2eMf?Wssd9eolsT +6Zko&6UhVKFGS>_>SXGLbkVzank5^yWyzPQJeQ~G97H;gyu*GpXSTt?V)9Mg}= +fEFv|p-B88=1BxHw(vOnl4r?Yi8*RLWoK(?cAa23&ff=+t!uTRiUO2l0ASY@MeLj;vSi5&53D{lvO?4 +r^=Xpi ++GTY{>8nHWa>hDmf;iar`{*|AvoPMdhsOc$s;Rf}?8YF+^{OCuV`npR{Z$>ly$qOwm6`G^6Y|MVov`Q +d?4O!69Gf&k{#n|?^6UOo8QF(C&402*$<20rvoE +vN1=eOJ**L|05qxShN8@bPK|3YuBSm+DL+ERYIT7G +w|w==Wg&)kH}n5sEPSKc(02+)#dPgI?X*ZrTr)NWWR0BYhA&0^!&{aP2H)<^G~^d{Aali3T@K>?=MmR +M8Nw4!21+neTwVCU1AyMDs;#?$_w_%+un$7YvOuc)bpna(3dG9RATQbdjN9q4alxT=pUP=iW=9i8rHu +kCeHsB^iG%7Q}##5)ccW!IBfr}Xza6j=3dGU7Vw^9T%3bx|F-feXCY4s@-TfLz7e){fM;K&Xsm~Pe#5 +SZgO%o9Uo+G=MDT!EM%y&_m`%MmeF(C?n0cfj{DL6|VOKPjZh6l=+a^9^Iy5?3thS-($uSxSX#PEZLPi` +LES3t`p#1D;_O(wGG!3HrMKdLS0?jk_`>q*G-*)?0$7x?qu$#LcUm_<@=yZLT(e@-*W#F?v2TKL+%G4 ++v=8k2Cg;R`d;q0tW8|N_?9M{h>R8E(g0hdL8$R5$S$b^=E&HdJRi^Rs518w@3V`NzqQ5t&u4{L0A9- +`eOUfBO`ren%HJdBq~B%QY_4DY2>RAr_PizI#pxvGgKZ|~H^!Xr8mIqpOo=wcTj+o5%>Gw|_P%11^8? ++#)kNE;HR1jWW#Sn9@4kWPwyz>T=T_(0jV5oZkTC%)GiQdeo;EMf2<6@pLw|^FGkEq4`dTyk*$dz~|F +^}m&S<-g(`gaPo?$-bIk92#8p6@yhVOAeG#<>r^^9m-!SOoq;e*uer`oHVZO+xF((rBLq{iLpxP~XGG +#e)^`y~Ck1Ctw1^ZS{}X5Pum81K-$eMaMSzCSQSz281#*~jJk_cX3d<@@)T@87fR9{Ikwakq=_i_Q1N +%kGx%XEvU8^8HNn{Y>&b-p_8FF5k~K-_KsQNWP!bxKii)Ip+I0%ib^F&uiSB!uRvc_w$x5knc+yPbc$ +zsrkNi8F{t2vaFHk(lxItQ|~Lwmd%v!-`BX(!T0Yo-@k7e<0qOo-qN@`iTJt2#Lq3uJkmbeC~UUxp`vTW#P)@!I9-3nE8~6Btt=;5uiV)X+`OSSn)Y)EvY +UW}3DyKL~{yHMhyW)AQsjKPVt^}`>=RLSmmLXlJ2H%;F>AAxoO~5>GH>$#^5_5ZXN*6Y +FC**28%}AAF;RLhI)H=*rk?xiIC^f +AsUw1;^c>fOPV{|wD6Z#ri@2U!4?UM}(R2Sej-DG`{`h)sjI>hEeH41`l0AQ1J(rk|`guG(M|)NL%o@ +KmdVIwi7k|la_c4a(1^BYCPr7n`TM@~@)t_)K>1%3@i0_m=Z#a%S7SEJ8E&v$z&>ubmSo}YW$67H)s% +9vP +3`ffpS3OH9DxhZhaty|&?dPD{3ev+&k~`+2LB6VjSsGI$+LF$vQ2tO#l!2H%jHO2qCZk?O=p&CJy$c)u6f%tVowI&^Esm1q_wZvCFXFCixcWB_U=D0M%#> +YnT2wnPa0ex{hj@{cT;{$WBlx6#@76yJGR1~e`%qX5}K52Y?|pWq$#M+)j7`iZJ`UzHW+k +v?#5eS#pIPeZG3!p2F~NDUvuk{AbIlCzFXgNGH;!|5ndyIEDdV$I@=9QfJkQNzM8>xFM(t1GyI`Kv_2 +@)(1`Xps|H)D=%Vdm>tmibSt`F<&JtaVGR|?&FPE!He=q0NM($1VggLMA^D*W(I6oEhi%S$PvMEo+L>0F^a{OZK^=KSB@IPH4_l@RRJ?smfbjtNW +wfDJT0pl0^Pix)cQDbX*667r9$}d!m0p~sRUl@@N_}6~U!>-rHbMwmNd6w#Y&$D?<}=BnZ2|YE0gZY7XO0OQkonS~SB*&BD*s@F)J#Q&+qfZ-xrO3f35Q+FY~O|h= +*X5-`?o-rY6J;0edYJoydbB)wri=7V&3YDVa;#FG>&Q6OTrIbic^Fg2e6roURJ-NbhBYF@xkJXwF^-= +7jPYljm(>|RW44X$(w%{7%9`bxzKU~ZXBPF8EiYDcHXYKB7G+8%rS9%OI=~xfbGPa!X^Ep;7;~4e@ErlV_sa<9X_A?j_eckM +ciD@3dihr&;I?+v%O?ovi2`qc!QiF_rW-nn>@Hu#-DnBk0{ky4^m4-tl@!@1RNVsyMxy%C150$^?4XI +TXFU4n^-YN$<1~^yV3OJV%f9GS0md_4d6-G_fw`=?DFM$g{X#@j(CGJ!LcT-0;U3Po(W2?Y-wjSvK1; +4o?)BJn^-w;0e^3mcSEfah_;e>ry;1{Vgj`q+N?AWFEgw#eNkwd1|i38}Bsl!nK8i^1NAl_%dv}bAY+ +dJgfvdH)iAzqy4tX8)=KAPUuvZytQ24|4>Kk(8dd5*Uz#6pUC7!*4x;!FhwOH?|IfA;V=Nm2> +Wj^S6&Y9?0?FEZ9-PdqY#nO!5|KHiJd&{(EVs>4_kg}B;hvGI3_p5*2kzm(3-lbh<7aZHp-iJI$SG&w +C|6@bS{+O&{ReiVTO1m#R(eAt30!QVL)$ZfjrFmAnkNflZnpE7Ck9OaDGyScWG9p)$t#fU=Z>)atgV= +neuNQbc0es!_h;f`an_|{;y``RPO}IZ(6vx>KwEtA0s6Ax%o12L*;BF#tw)o+u!F1rw^`7({OVI9bdP +d?b$t*w3#94&#>{CU_%&GbU=$EdlT*fm7jzxFdIzNtn*PNnaKATfjJbA7r=AXZ!%6R)q-0u4>?qS2ZF +94UEL!jOI%GHzw9gk@>o-D?31gcBs1Pf?K|KFr|jK0^d;yusji^vSzb6xN2C~J6KFYY;3^!>OlCz9pVk>bR96v=Q{-x?>rirAayRl2wk>0srUojm +X~s|NXlwi%T4OY8LJp!zRmw&KyzZTD6yStjs=-(G6Z{bYq2Hb#9>6bZOB>h-+Q>cM8 +$nk+wVx(Ww248uhH>;pG{aU`%lO@oT1!^ou!uvdUl>56 +U;?(0-@XWjt@8eTVJag}OKD*7h8c&znYtwD6AG-3kJUca;X*rMlQJa!cE_42nc~Z^(nPVyc=WoYk)sN +pnk0;JcydY(jY=fra1v$?kY5UJcQwMFL_rmXS@T^3m+bKR*otp(c=rS6&erHnw<>>P{a^7+eWmngMl2 +*$6y!~4XUIm{*CheiTXZiWNQlx(~349Uwf-y+nl`&5qT|CDz71(}dosd79#KZ-C@N+m0#C1!4_+t9Q{ +=o+LW4@wEJ2q`xKDannL^_b3^kKh}ei-`Jhv9z>J$z`)v8s2nW7vj#6V^$Z79#&I1k9w(&9KLKF8up4 +1Jz%luML>`Huwh*1EzUJt{s3a;sZY|cZhTH+`3b=dne8HpAuz0(ClGcIe*4;ayi#orvW!*4GtQa5jt6D&j6~ghADcto$#L{4B70q)h`<+>Jg(|1nEM*|k$$xtN0slco6GYic)tPZnT9aQF|$ +|HIG?xaGlK<_gxV`A1AQ6o>>X5b(&O3-mT{|-fGNYJ*8C8@_vXkkq|#5opZNxUJg1RqX1d~ghKzN7H( +_#Xibv{JJv7L9aU05NUR5%t>bo?8@+){Yt1kPsiuIMO~l*Qxhx=ed-R^9;O4v>nAL`xVr)Gx>J8k +LNtO*C+L^8h_!Q0-QUOveCxz2A&<15}Ny#+y_OT7rumNSL2>#Fntib$~>e|&(&xb$Eat$9oKPV?JZ(G +r(2#I$MqCQ{{tuV0s0^0Oq)D2g>&F&3v_I^2Rsj$xd$BAXk|M=Gv;~48CyRQKaX3Er#~V(^@*Ze{}6a +76Zw0zLCB_v#}dz&I36MU@hfsq$UVioTDo)V)%dM9T^#*xhTcj)qX)Y6dGy~Jj@!o0VJ=Ot@tU#xucP +g&t07Z{mIs|$&fJC}S1@eGt@JPO`!?Cd0;cOlI-VD#r3Q|HrpNvPyz>9B_wI2~Uf16EexBhn7eHZ#i- +U0hqk%CdjRHcFh6jx)O4=NO+}gBae4B7ddWx4sk}9BWGD_1rYD0tP6feENBstZJiPOBPXwn>%+yrATy +$G7i02(#k7>&-mzI#6pb73Iqd*0uFKRzEmGxI$Ay7t~{uf6tK-?e46Z3y(TN^Dart#j&syVh6y)^s&& +A9KEv%r@ex?pY?OsvS&J52kY-(w{2j!1K?}S&FS*PLO1quj%#qevI4#gh;s) +V+Jc`+{QO^VK#c+N52+@794nhyF6>yaHhjQ8Ao&UFer9@o32Z>m;u)10t7pzQZu5c|sPO3(_Mx}a{~G +$A%l(27w>i#!LO0ItF|usix1}1|l*@W)Zo`kY!ysZ1VNbN}RAUmwOEu6@*z!eeJ=;9mZ;Y($9hv1Ul_ +$=?8FZ;UVFtf%lC4X&M&VxHI%5X?z78@SeLfV$a;Db8rHV>eB5}Legc-1d_?+sS +Uu)s|$6w&PlsE%1JkX{(sykB6!_RVZyeKQV#ftmIrK~*Hz=ZB`schlzK;r_+*E+tXIaZ2o>_6wrX(c} +HBblb1cms497;nc7$_kr0-hY67Jv}edv+Nm{{4(-Mudk^uRdGWv8>(N$`AzDZ?0k^Rw-(pmiLa$y_2s +O!GAHhuxSnddzYh3+Ax3bvf#bD~Xag@#y4JZ(EpPqjz9#V83OR1ZJgL4rLDefuh1WWT9jV3j^l+MSGY +m4xL0X!IYn{i`a#q2=%j=^w<7XV8d>*2aqpFhE3tPT*vZ1jkpq=_5U(Wf(EPwxq_{DxKoL=?Z2%nd!w +8r};Gq-1rlHWUyL06jtexHJK8qqG|8}%i}`FYL4?H#V4NW7NT^Fd(h?<{l=+EgsYos!$X?oIX(oC-Ja +H|l7=t6Rm|Dy+;c_~UCM@t6blv18QM4B|KZ?jv%pSIBi@UyxKEhqN#<^m4DblldcknpyDu%UE{H8{^p +~*pe{FRXBwejesbppIJoJDKBLXK +<*C3A$zWF4(d0@w>(`9k{O*8Z2404RlEq!!ucojB2RQ~tWdKU-OJI +SlbudjvNr}(irrX`4b6ztzv-{7g&PAvHmqOBMQ_Lf>i69 +qgqw2Km~Oz;*EN>I?mTCyZpt(6K(tbq5yvn?z>^$$@Qhw9`cNFcLj7Ypc1=a9(=M<^qyScd33s(Q4lU +Z2-rbha6KgU|-cE7OVDqLKMfVg-`MVq9@jXDYHI7T?fX%b%42#b?`OkqxT}UvnmQQhp;csieT+D&b;1 +CY6mb%Gb337WKPh!Akw-7v0DuCeYq7zo+rPb^B3U6AjX`UH&O!LdbT>(fjhwQZLlAqz9LCo(~^oG8K( +&OhJMqW_P*~G{uCqRJubKWS@jc9`(hJot14QYNzAG&lS#77VH9c(N9&9BqujD|nT8zbZsO{c`ym*!uFHMUszmqCZ(^T}DTZwTjO*3R!1Xnc|dMyrQ-ZCbp;s@YM8 +;z3s?X=5j7kRBmu09m8r2Bpm+nTlZ}34c$_vFY^u?2xYsaT1^(n12o1MDMDx$A`liQvI5^|M~FTHptu +-csM=m5rWf?Y0u2#->R4>=&u$_{(w(l7!KDn-NdoK@$L<3^8tYk$o18M{s)0}&EOv`;;c_RP_Oa>+ps +^7mCot7OF;Z)53Q%a({GPS%y-QfDBL;4R?l`;Kt5vZ4DPASQhhV8gU%e(;q^FU44+F_(79v>&LuHt{p +XS?Nny?KL +F2K@z_CYaiQP_nX#D5M(&?UYkj>gJ=v+@J%S!RGzSgh9=IlLXFZnzGyhZZ693%2 +RNPYm`=l0Q3tO0?sFAiX(d1$$e;PgO1=h?s_?i3jgN}^K)XJGm%z>TE-+dh$1zmJ +h}4lw$*a=UPi{{MT}9`*QSR!eL3494KMM&%O51Ud{AXO#Ob&f@Yj$BE-Ozn&+RKLIZiK4Uc({W9?N^c +}YB)A*Q0xDb!!dm4tLw{gHvsJ}>1}>s+oH&;qC;FBO>>4+nS8E=nv&eTZV((Pk&`H7uV|wpp!zMp5v;$lQ|TB@AV*hEu%Ip=a?fbA7@;FSI^wwC!dgP +3f=Q(#E0pu*8MTng>iz-2I~HMjKH7d_r_oPaI=e|9R)XSl+?_I;9bv>Zw2aFN +M#I{!72l4fQRD_oq{9fW4EKl)1`=#I^Y&yx0+V`6j?|SWfj^cer`#y!{h4wv5@jk +76|EA*osrJ24@iu7R`wG3Q=sWl64e&pMofVg(j;nGMJ-gZG_dN^s*TPx1p4I^F$FL@{;<*gU*8`q^)t +YD;&o*tOHL;XqcbHvwj}M1W5-dN2@)Mj-NB}y$Wy5SYWNgS^yAp)08*njzuL!(u3-K=8b0Zz>Pu`$3< +vw4wR4a6GFI*D%RCs?FK0@^D)dX>uH$w}|G(3wT+)8m&!j8DApQTyaj`*ii +PuPK4=S!UN7wNGj}-E|3KzF$=1Y#P))ouNFt)UgU2r?p><#Jm1F<23JUjMD=l<1{I&j%PPTv +U`r}-h{boi?1)BnC4ew@OMQIH=W$2p(u?4>!6`OTa%@0W^e$uSCF@p1jrZWYg9(ew(fu(4xTc+?#|3}8(QbM=~)%pRzF@~0*r_^7OuQ&ZvV>iju}QNZ +wx$N5eGza^%cV}kKYC4?x +WQ3j2jle(HyR64{#dc;9%_q-h#r>JiYWL}w7rN$8=&S~tljFJ+7oA(&0yEXjF_r%)Fu}6Xp5IVeTVq6 +g)D}D2lxAk_os*cE_MH-YWol`0p%iaoEZ-Kx@;9JfHuMtW%Hj?lZNME}r_4&M*D&)uTWV?UH7tIpuD- +jLo-fS0^NZ9dIx|o|o}~0RLm!}bwzrfo^5R>Xq3g|z5@kIOEFmLvE`uE@wVz{^5f9g|6#F+~qi5-fo;#A0?TQzmueO)98K0l>N={QJA)m#aGei!cT;+L6MYX0$x_pc(wp{`0_WI8GT6q^ +7bCw;cvU*%Y9HcH0wCg6SNvHt8uL9d{7<54xLP`FL{L8;(!m~1o#lf^7--Pd0QUleVvrd=THmP*EzuA +Axk(AV~6NdDG6JxiZe&^NCt_oIAhC0+u!1{p+${ZOFZW-U(?dr*^M4LFTEJaHTVYZ`;jk2 +9sNwF*XD5w=}oPh=peADw0f%@Y`pSxpAw!ws}ITe;wf-|Fda|SbJ2?$GT+uab1#K*i>-abdCcR4&OMu +eYJLumhDu2O~w8et6>VQE$WZ$wX8wx4e;|N{$W3_i{v~6Sp5;_{QP3?S-~&3k4G4rv%7_Ut(j=k$T7NDO)T!NBdI +K4y(3nny0-09e$_QBuTxgK4f|#`+M?OcnMCV#vYBX}(un)|jGOdMN#|$=9iKk!Yf6h|IpxGJ9)~}(Uh +t6CsDOBV5wI&(+_5Cy&D$VPhJ_Qd(DLZZ=#g@2N0$>F})b6FRn=F$k$7;riuiXUtkh(MD?sA-?mTO=i{D8ieS#` +yGD-{fc3GFcu6=PmK}$EO^6F>``O@vhaY;F+K=c+>SduBXY-=#O(X#y}CiT_sJ3gGc|%C=b^Q%9u +~)kojcp!h6iAUNwHq@q@mm72wefF#oTs(4&S!&{n?G8e6#CSDtq-RWuwNgoo|jkmOKtXh;P$KdmZ(D8uoR>zb&I{@N)L~vY!7kz +_`qRCBRp<{#v**!dv@FCVj%UsR>Q^0|t9pqp+ZflY=GRMp8M9xFcTapTzb=C9v`wVbC8b*&!45g749G +LnYi*_9p}ze)@soZj()qk0uJQWX>LK{~52$#Yehku>F4X6Fn)oiQ=V_GILwTUDlqt_cr~J0iM@Lz!f9 +(irAwLh0U+6lo8h=p*CP>KKBl%Er+Er}`}b*113%g`{`Q_2O5-7U!N;EbA}PMby7#A2%_ +ERKBdA@q)+K1;UJJD~nm$vc8t4{1Bo}<9i?LrIIUIV%QOWE|9RAhq? +w&t~5*ba$$8Y&y^Q=gyilIP306fc*pF*g%)P5Nr6Vugw0bKcv#VdiHA}O-IyJD5n!xkiM)@-o87bkG#TQiE>w9m)a-OOrmFWQ!&cW=Kc?DQhkJMZz#A +J;WxJWuPX9@rNcsgAUC&Vi3j@<!;dbR%Az(cXuEo}v%DmE +Gjtf8loor|0czh&;@z4KA)K5&YP-@$X;*;1vpCP|xIC`LJhGqTzRwYKmXEZbq_w|@$BVVNx(>h=!dz{ +RVDaWH8?Did$NI$ip!*Zr3+a5|!q}_v*z7oKrUPqzj_}D1l@~PqtNvD2+V5+DzPVP5Yt>7?;rHLWm^n +*m&h_FRg?RO9ZmZ6A=nvfLG)+``47JrOXnp1KcrR;dURGA;;r<2KOPo*9bHjfsUOET1Pazt9T+E!qcO +YqybquaQ`^3J7Ixru5uTyG0uc`BK+{pWvaQak^V=b}WAD;Hl?@gyQI}yLWEyM=VZ!2+AOewIjhkr*(r +MO$h9do$*=mB68@aHV(d1!niPD{vl*RV}mydT(U&ZKqtV20wx9r*Qhrqa`xmM1Vb;tjM)To$PTrUmZm +r^P$0quDRvKK;LOSESZ!i?l6ih!AyJsSfDF;FE;kNoPb1M%dKhcfuKALyzy{=sUMjA)c8fsdg$BWkZ% +~r&2T}W;1wQ8|)(_gHzw9fuYTH?H29#<9dcVg{O)ZMJU$%1(qgXR9Fq+{;cW`;kh9B;iudUYzN +WfuB=4<~U=QQ{4)$}B-}Q)D8^>*IgVH~#rdMbUTGab;+|ScF(#xb4E5;FfAwE5{?^ICQ$~fl5Src|Jb +k?c;l==}Giw}3W@EZVLY$EZM9BOA#h+o&2BrjfbTHJYJtyWU|_R0nxk2A21C2AYDT&n9CycoWXZSu%A +GMVN4FC$_h80?|#YJ~qZwTtT5Jr8(#)UJn$U1V5(WhAJae01wGLa;;)?Y^VnNX3E8>^>rTgGes*`#y7kq`ZSbG>(K)n8$J$Hj9Cbcg*m +|6ugMRB>=fB1BeZ?#v@i>qNvKQn)e=HO|VmNH#G4r@>sNMzpz)saKZ&?J(>HLK-uU!=XL>SxN(XgVmpG@p3yrjm!NTc?letdouXK4hcJ}^Kp>a4C_8u!0ZyAV^Ph@n0?q&~SzkNDua%J?{TtE2YM*kcmFH%Q3*dqk%aqx3M<(m+B?fWuf_IV5c{<&>GhR`=59$^bxS5E{fstVs`WU +zjL5*qU#iWB3=)ko#4;R_P=6n##kE5GgzA;CaDqcDv1w#Oz(jsM|{Q$*};%bbw`P~x~E6c54`#gbRe$ +;#hvv|7IEYc|2LhJUNari?5v>=+BJdQ$Nj)*Zt7oU3phUDZh=ozIkmI-0AsVn+OxPO0Y{!$_C}72aPM%2>3dD$I>eJ#xNW32Q +s_r&v@z&4JDT}kP$=yEj;)cMnhhS}YeWAGooFb1Zc;INen541PF32nBz@N`np3>bbrEg2*Ynjyw)ti< +uW!4Q|L^bn?W2PFKg!*Q*8iK(|KkDu4^0=?e{-1r>!|-TbpyuD*8K<_HfVk!u$$uTbby}!W{$Xw@A>hkLZUr&SNiJ^yM7PP}&T{o2LH(AR6-I4!0KJl>Of5<1e?T_Sq(#OxtUh1Q +B)f>>+V*Z52HS^n;U7&sOCDq344fq2F*y0r~;yRXh6St;0x6t!6l3%vcewRUX`s3@qrXC@SS?D*9!Lp +j_OFk){!^foiL~wa`{xHJ%JnbiqRL%)1XPp$`bWGXTS}~=ewFPl4cuZ275A?ilWkV});P=rp`K0h!`O +AsnSS%bvd^F5yElrxlZOwKB+QLmgE7}D7bzsP$oQk=y?`Ph%DmHmB{jOB)5Gw=DlO3|+-hNr=`UB4ww +)Jtsk8MjF_ph@Zj^p}iuCFMZ?6iFlR|7t+`ZDcc(qw0p_I+Ol$42Gf8#0`JJCWi0FMF@B+w6{`xrK9b +L80Cad<)=s;C?ETe)F}kPw&JWq4jzb=3KzLcQd!@gY0^Ex&(I9)_^h~@0n@Nj;52-V&#SNiv{o5_#nr +Cb76j9K3x5)uc?(|)Qxvm&|GSn&4yYMBySeIZ`sd=jFP#lC5g`1l}q!8)(a|$)Rw`4fkKMz9$}nUZy-sac9!{f`3ql5m*WElTrEn9N|CCj4WHv?HfsUr} +Fh2XCEW%EWiJI%n6^C6O_&#spNytBOUH<8s}xI`Ha<-lrM9-lIOYV%lRSI58eL9+ +hd$M>IZxs(p9-RIf`w181L!%qJ%>4C)*>OJ{@yM&~Ml}%4s6qJE@`R^ug&Ak?yaQ?%#=Sz@GV>>NC=_ +SW5F5mHR2>IWR?8(NA(uxnZm7qNWI%YLR;-#w(hOXcr4wiA_ETzMnMt)X#nzDQ& +7%oXS+nFZ$>&s827^n*k8o|T&@4bFMT;Q&d#|s-e*l={1-T%3y85aPHxMc$V$0BoA_R-un)CQfzOE<@yM86KN +or*#Z5AGwPq6rpFcLYzWWtb-akuw`g!7C$Rp3Cc}{sAdCk`ZUHD!ZK71DY2KAiS62)#pT-EMD|G5?CH +mniT7yh$PATI%i?7B}yn~ZbA^Eje!4&Jl5{ElILW&nRXe+Dt;>q}Z;|85pIDv5KMx8KZp;d7GkI*o<@D>f-uu+51+Iy?!v3=33Vrw^k=?&v2jQm@i^IZoEVB!Y^( +Mc+Vv|o7^G%l5p>U7_qw$C+@1~d&O0M-#x;gV04C;Jk|hZ( +ko4Aeo)4T;y+PW;%Bun2lT)VIS-d!R<^3OXaSzoOfRKD0C_+tHStQ35)UQcIbH4WFFMlp9C@$Nb+ecsG!Y5#H85f86R +5`L>K)D~bH2k}@Pw}0TanOh=R_Hw>IBo6Nnk5OMdI>o(AEgN^CQUu9LsY-r-D)D0({%uOWhxqO^Ny#U +9pt^`-s+o$bs4ph^Z=GM2R}C9@Y0`|=`F0-HxEkks;=!53gK^Hw;^`{$3a;pCfHl!NKPzuB(E$5HJhd +BX%BgiIU(hF7d)3gjf1BF1H!`ATHsr(kkMg#!1#g!0cF+9jc}V{v#*ES*ptElk^=W|kE_mSE)aN+*j=8mL8 +_NQn|9J)W3iaLS%Of+Gvy0xv>FT@RN}#sb<2Hj%;NNYv6)V2%SX95mi6m`qZ!a-Va+c$IpIE{8wL$7}|7pDC;jHzB8rMO1x;6t(DG=#B(s7+=r*9ndj +RA8S1^w{Cg$Vz!C8sW1&~&igNm{$r$i6O=s66@HMbi8uq_KT3$EqSg1|?Peact=5lDe2B=*{)GmiC+B +GhqJ-q?#nHSI=#GcmL1G!Uc4|rqxiWGj=ioQX=;W0lAo64F`%}+HWPVKjdANqiMi#VM8-r6wS?r`^+J +WaY`SeC?|cy|<+rZL$XU0-sR$JkDCm30Z3X)pZ767IQFZeeAACZ1ZhS@ +G_PQfgrcklCVmX^-JCn9!~lRm|hE&CI(gg6-z}@Ux2dWgf$XwcmTp*OZpP+EIpPa5HbqRy|uL~5cm1o3Ca^#i><#8DF3&!ZGX&av5Y4jB>k_-R0>6 +|c4jzw&UhB&Zh;6?*TEu@tdAkG3`vH~LPHWvkb!+7%tz>PW_r0{gcgh{L(76ZC<)khP(W{>7LCog8C& +iptF77Z&fYT5Cc!N>M1_$0D`bDsu%xK!DqV$b?-YzmYZ8}y{&}UoGr(4?`xGsTpamgcmC~*$(%h-vo8 +K;E(9=_jrN}Llcs*diYXQWI%^^_))?+&yY(e1xMeO&p8uj$fN4R>3!?@Vw3FUW9{; +^`YQGkIP8(^LA{nSoeSLS%$za}wv!-5I-MviKHzJNP@OqZ-XU=;ioYCqxytJPk>J>U}Zuj&3NVaLuYT +FQGi@i@p47HX#khfQ!xZ>rEiFq&2p#Rwu^Yro8B(#=H%d6>}N>@4GW3=Uz&)NWC9h{kb>`jKqNoq}yM#xYPE% +Mx|ykm7VMHW0suxjQFJ_=pNc;tOa16bzXpejn*cu=RG9LzD)o9`{%m%(m8k?rZV4EaS#y>8IwS#+X59KvTQhfjZNZ4FC;lp~8os(Y;pT^iS${ +TSXcjL^#czF3#pTDjEEgE+RDLp*-%0#4h05>GNZD*pRJ;o#*-nY(PX0f+jY192w0XDBQgHT69StjV^x~#<#nN#vqaEp#=l1oszxD% +#HD^ljWLq)K3eI_Q-N5m#|A@wr_75AVaUA1!4Y_fgFI!xkrYhz;j{$uQdLYD3P~WBd-|Z%TvWeE +n2_6e2sS8-7`q%@_i4)8wv=i}!jnqyP(GR$uMYWF%Ri?*o=K4*<0#<*=62F*EV}%$RunF8nbb6WVF-F +R}m~W+#!EMN5XLAnx7<52A#Md@p-W{O2?CQMB3z&D)Lg +!r=xpf%dL&aK}q~@6#P!42=G}+&OoGZ3T0&8isIg3~hmDGPaU*wi2@;%uSt(HA5pzMR6YB4K>zJt%hc +|~pmb8vYb{ur5(!&)>??+%CmvQf|DaG$mmPH~pUDPBjM@L$GWGn4j@@&tO8;D2@lo+Z(%H4JhRd> +tN+=xcs7ZiP4Yjp;aLVf%kV$5;@MPsHr4+u5zlhzS+4)tcs#qAp55$!X2P@E=-F-lXHj@Io1V?~Ka=q +64tjQn|Jj!(=-GUFHsAm3;tAEyeFUCB0KIep^dflx@}`#mGn5%c&!YU#j^UY+o*Dhm{()yV(6bx-&py +Dj8T4$1|5;Di_KegMu8or#GfyiUu>Zi8;rtp$GtOYZUfoY+Eam=I!e%5qK4n1vB3XMMmGdd^+n@(I#+ +=9LdjrW;<@+UPul9Ym&iN1e4tc43e+2Bun##8+-ru7izgN7!#ivX0ZabltvpUjwNGtQfDCgV5|q4$^g{BEK58GQbr(A#)oBrd^&s*N_z{PQB%Av)u?8<|pT1kMwELJx#< +64NthI{lN}c*sCZfM{4vT0`2yJW?-8$TrE{sFka6sUw1$@EEhH +D&*!VNh&FF6hCNdkmllta4`jbD6yK;NaVzhJVja@XZ&ZR^L$8*ndx&1>`E`%Pp^_9&W^JM945d#Qw=q +#0sGqAWXHoLx0EoToUZG1Yk`@lxq*(3~d?%ef-=utN)qHCM@)b4wfS+0KY*;unTAKL{&~2~<)rdv2UhyJU-6;F +7t8$g%tyFoJo_H7L5bWD3mf+5Sdlq2J)$I^bo=hc@H;FU0p>BQNE77M~jw?+nH^p{>b8yT`UgIF}J0dJlI1GU +z9Ks_W(8_B=fZdq&0kGx~I_{=rZuc;M=VL-lGJnxi?Z=pEwtY+B8+q!;|^iomj6F(`OR=pMgC;<~KU( +CvdSslauaEjvvDlhcKFOU{PJ1o>&-NIVnVGxg9K1HZN~=-bSLnr}fo=edmg7WB~AFZ200P72NqBzL +)S2kuZ~pF>XvT{-s`@(IijO+TX5KNkK3Ur&YU&OYJ|msZQp2|rPKU`L2}3&5TL{Weiu@GY!LWC@j$;b +7YIgU!I=ERQ7~9m{qfl~V?pdf#Q(HyL``^~OS@vwxb@MrW+`Pxi^q!*?iq&XRnM@-)nrjwn_JjNzQxW +kWJ+C@E59aqZj=y6)0(d!+TSN77#rSm?F~Bp&ww^+|pCDt>LED++flGT(RJmC|n>e$ME*Li-UfhuVd5 +xIQDKE^V)aj>!{eX*7@wZMf3Xi8jNga)6%E+UhL5V(2{JpSSH5K8}^b%b7{-?VncI2AV7y@|9_{sxfQsITE>C+dRCwm_}xEE`#uR>ufDm@#nvamNeH2VUR4n>7qVyO>KiJ1>x|HYbfaQKsgzb +x9ZHx~z+K-9T;eQu=&3uq_jKTRgYGuQAp2Dam|(->oD&d>U0;LhhH7rYkrStKJ*o_aNec@_Y9PE++-% +)$(C}Xg**6()gv{BIsFoix@xZS2@-DrLfs_nZt~q7Hcz7+&RQ0gug@?>eIxImnX82i5!gt3n +5#6I5^F@VY=9Td3}6t!~LUtn&)2|Ev5nVTUT{eQWUi-74Cm$n_;_)VACmrY#~CrkIaG?b$l4gR^UVDZ +HNaYp$>KZw9xo@SDTyt6m+lHWLmjYsNeAPS+jQxvwC}MKF*Nhl``+;+EEEtcLgi}kqiV62 +E72i$UlXtI5+AJ_X5?y5~RvK_Kf0S_dCD;mXlg(Wi^Lp9b_|hxl-X(PI288yh(odpW1hsvyo1IXw5M{jakhs3Wgp3I_=Ha<=nGqfr5 +Wr{1)WhK*Dj}W-Wx7QtY7SlShrNhp^6Ng@hyW5SNUB^N#K4MdTtrbZxXU6a0Kq5b}y%TQD5gM^`VV@R +|Doi0DUSzSj<6oU4ilf-u?JAm&M^Zb0 +VDAUQ(nbR2fdlBRI%bbo|Gr9dT|4#1$@tL^|;T*pWA!3bHs`iBke16R3;c_L`#w4jNtR2E|yuV>=13U +cuQmH(|?%6em<+o(8n(LuQ2j;Gk`ULE<1jb`|v{*$Ucxlnxjrkca+x%GY!OdRrd*iDM6DXX;26r#Wy?)*rlw#{Os&J5x^U`-q;kqn{q=*D@MP^ivL7 +9TLmk6Qy|f5MS6E#k`;w&Ls7|FczsgIYb4``Q1<~X6e?e9_B(KgMl_P;0%%E!IOxd9>Pf&Xah4Qp)?ogooBs6*ZRL*HYp@DB +Z~xZ)e`r~XPb^;7h3>zBT=zYm~)%zX^^J!*S)a?G3hlJvg?-rtLP3q9Xnvxr;NKQd-K=mNi+|$$Ozo=+uvr+1$M3)2f!=sWumA1^HXuwMn&nXAIr119>b;I*lo;Jw3=KuHCSd*l +M?iV^_6qyK;5gf%@x~)uyNEu}Q9RS@pZ7(*!k0HR9u4j?m&?q(<*Kj!hwx8Ymb|2pcsj-gcblJ*OeXL +~WczWFYhZf|y)EJu{7w=!*zJ_Am1qVV(oOVVDc8HvFRhP(F-+{#KOR$Wf-M0t+rUSk8}c>Lgw0;A+IG +Ls?+L@(M+|0+NIfJcqGfJYTb#|r|J#V+XCkw1_yl)K!*QfPmzg5L&sCG0BJ1OFm{+j_eVQesu18e +^zZPBa$8D>XM0z3=0)1S`udR2JB3RY(H0rQv5z}Ld{`&c)}j{4^+?6> +-ligy?*lv}8l`(3r%a^gjxC3sd~y(QXv;z^}C;7)bqYcaR5|A3C5Qy;$vX(>Tmqf#dDX}t6ud}t%hVe +qH(M5nF$vl}0jEyXAs_BI@Y*6S;?FpG)gpXwN&khT65d#0`qqK6XAPQ9|1g~O*ryko2@;3yFfTY~ch& +Ux<>eYi|P{eUhM{lI>^k!Y7pbi3;);_B3MJfn7&lG{S_tDO5%?&1B@)7+Bz=Z=!K#*_run-@sq`TkW< +o5<&NffT`MR3PbVFc;_y!D9%{qdq_;2VOVuks)J{3}-2jEL;XCkWzSC3Z#kr^G9l%?DSa?g?N$T-n~t +g=dx5A@V&FCFEm&8t`_mi_U;$)%J#|v&uXtMb3d=|s^ulAeT?CDLYenjKW~z0;_sB +4w*5U7^EZEX-VtKj1?SpR)unF6x6|;(>SxSqnufn_lZ&>#s&FM(N7i{SYmtlCGMH6@)i=^ao9+W@d-L +K2E+odF970a8&Z8s8_yG;5O)OLW9m!*-Z(?cc?+E@r96o5cId?;cz=6cP^ULG@xXzWUg7>81m{Y`4!9x-Id|Ds(52#v1dvb9^ +UaramHY`6X&bGh=gCF!K|HK#(-C|`vwuAo^>mPQA@UiqwX0?I`neBh-6LHPKhnV5JPr%rG0@!2Uq(ANZEy_Dy5nPI +`}beH-t{@)QFff2rLdu>{W?#ohls#IUaKK0aCESZZ@6y*-or&gxX1)da4ixm-Or>toaHS&*%Lzz(Oe> +Yt^!V~7W2Mq)3CsfKOLS&~z={JFI(0cFh9rP@))1sijt9)U9@%GJul9r?{toJYJN5g5O>y)3w??b&Pv-TM>sU@^h)*!)XCCDXSFg6`BY&uDkp+LvfH+<~U-)v0sGL@ +kr?vo}P%kh_J&QZ?6D8{m>?PRm{LikL0se8GzSonSf_T5#7eqULPVI20?bsu;8EDJUVwNAcX7C>PN_o +_lb(E)=)2VuB9)BORx!@C)KU31@qU?!2eg*;-d^UdX|5(_4J&e1C#n6!{z&g(7^Ky;E=cT~XG~4^=w> +CfjbcOrgx>440?jNtW!!A(2QrSrI^}FHXl=aW)$SoEPe!)&dV06^JkhnVbiN%p*2D`;G%qV8< +9x??mT%J;sv!F;l~Qs+8t +vm0zBxJu@U8U^rP?J1ZDvmiy2J_`m_HPUny5E&MP_V)$M-a!oz?58?B@<{u;D2ezLVcnMz>KM=Cp(t! +N%H$>dPpfivB_0BwB6*q7ftr6_+_XgCL@Q>hlfn(X_G`<9k6!{QrXF6%WTTAV^nc6c!wPV#{uV1FITQ +Mi2@$yXO?awf59!lotO|R!h=B=RTh|9ux%T_VE91xOoUyFF4bj(jgKy6a +Ns)TmTe@vtL*?To1WU?`9oCOv{ze7o+McVKFA9tQ}r(pI~)5S$@0@`D~4iWzeMe<*f+hgKV#fxySD=| +A+zDfwwGl7VvcfA!QV$&mSrxfY5dzE~{fq}dmDE$#Bwzy?q?qH(@JWqC3Nct|M8=&u +lx>)=5UgmUE4sid!qC}SWyw8^ddv9PXPp35x9HtYJTze`14VY8; +q44nA_ug+e_ +khIR`1IktR64UKfZS&+U!&oiYtnAd|-jhi1Ke&>)TC7`S|@ +ExRQRWv5EffcoecofmR!d746ko3lZr{(+#;)DHby9~ +yc}--#GI+02%SZJ9CXG>zH +{9W%EjLo6HI`)v2)u=E;Owr3{Ek!E1?>5DzIKbJ{~rgP(Hozr-3H?Xq0X|y*2yO!3TXC|xF$_^|S@*U +Sjs^zB9xf5kM@Cn;u8Yh&QNb}@8tqafvb}rj!j(YxZN87-4id!N63!n5BiJf_dpLN9?I)M3Ac{cBD#7 +Eed)i_9Vsfy;&LE76EN-=|jBqur~i^)UfL$4UCmhmXfL!*Bl#$$d@lZ=fh3;A7YeiNmG%>>e!xIH`ZC +3-)fey^o=_fxrpcGKpH^YGoDGy`KEEqH5CY|vg4bAyhaIkSa-WkHCoTD0QDoe%LM=Z|)eZL1c}Kly&j +b7N+G_tM?Meh<7ASfLIzE~}5~59P7Y?PGo{o1M`Jehc0GEaGX~Xz#tSSj4A#p2qde>ebx?i*Mq76b}; +ZD`_5MP8DPcxrp}t{PYMG4_q??@dKM=90bN|qLftJNA-@F6LVDT-^IeG7xaPsh39D{tDk73mkcIPG|r +)k)pI0q@3H-|uPhv0`%H+j0UeRzMgOVqjgxkV_oKx=rO^#Ei&1Gd^?yLKT%s4S7&TfQ8bK?i7BNWzXj +Pl8Ct4YZR#VstjaL1XAGFe|ensJEw(SX9si0X>Seg|?CRT%P8qF5}3p6{_PO|1Oy}o+ie3jDQMS0(E_ +tQ?JTR56Mrqau!<2I)}&MIQ3=M()hqPdLrZVL7H67}yD33tC{JI-1Ix>Tn}XLTX{>=1fFr=3dl45a02 +@DY|wT{@!SFi&(flzcon)rok59HWc&QtxS1ww8rn=RMGp(ny8bje6hF&TX=#SfhKdddJM^O|-TUKWUK +@tJhFnm2z@%KhYfRI|ln}etrvC`zozL_q$YjFK_>9d(`mvF#hxTF5;Ey{iz+eG|*F+{wD1G&42UDL)X +(B*cHL$uN|5%MTY82kxXN?7P16n9vZV$$dOMzK9n^%mCIiPGJHbJ_EWTfz+W%u9b>b+ANlJ!@sX%IO8 +6FPF-zLf1DomFFtzn8?afff9^THl)=`SprVt +M&aCwMUh^cHBa=u&VN3#gk8PKc(_xM*|YzK +z9!kf^!l2%=vg+(;{H&59r7i{x< +^YU&Tpe&Pj^1!`yKG{Qer_;`|>nTokNVelgS+H|b!{8VKH&X8FqwrOuhT6H?@-9w0RZK6GxxVh`su6a+Z(E#C$&yZobpJ6f{$K9O4;#J^)@<#9oBo?*PrQECY0Q%sY?D!kYF(EA9#%%b_*yt_L2Th1EbOG$UYMPx%OV72^BL+`qwfkhV&p!_A;H4plFdsLtKH`TdhrtlfXpTz5XWYiwQ;4%h1b*Pw$Hm`k0|Z4Bc>EM1W%#Sh0 +L9}5p6IKJ92U*fnFTa6@3k7s9qNd%tRuj=*N=rgOqVMXlIN}1L2v*eg|dD(v$xeho={DyqZV`mwO#&izK&^0$Bwi%x{)aGSIRsN@SQm*4zLnP;>R< +}Xt9L3JeqqSlzR2Jyj=91k}?2tZdzJ0*Vb$GR&sQMD)-AOao-N07J9BY8pI%uETWW=4axe@8_zUvL7!<>I1LuXK=oEmRu$=y%rT?$n?``t4!~KRHI9Khr@};k=7q&e# +Zot$axtzBhpZ#hqK-|-4_nY;^vlcSwC+fRzpz>)y&OuBS+(Q?XPgsKeS)$)V`2BB*OCbN)fm@X#@IDG +|9lr$Y1oX@V7RMD^O+V3iKGIAS7VwV`;4_yE1fUA=*)iQs%#ON09dE +sdhy?|&V;E730GKJ?=TzW#x@5565^DY1564xW=**+nf0bhyQnMuz$jsD7b3>rrik4F?w=QTI}iV}EwWjp ++L>mzW@iJq`!MofK2;NMdErNT%WzDYkk*7h@mfxN^!y)LlfM +H&FffK8`+*O5>_=j{`ixg_It;BNxBJ!M!mn!x=o*Lh?1y4)OPHSW&gdqZi+E=sVg3yt{+(9pBX_&M)T +j7qzu4zR{|u=Sh;K7ou +as?^(3zD2u6XMU11L2pUFE+tEhEtl3X(n-?MI+DUCAS-^`jW2wxK=?rj~ +#W>>0LU+p;y~rQri$K#d4pUQ`wn6B3B{MV@NU?)&6JMN9=b|iHBXP7}V$O`CK3zxWACEd;?9{KK +=~RYJZ#U6=@JNxS7(S04*>j5P@M5crq}bx>DUHqg71!_aNzv7lVV_ud?I89>=vF=>8c@02t(4bAvcn%!hJB +RUZrh5iJ$OG~#q65Hb&SkCNNXGOtWsSIz`DY7;BR4lht6q^D>C94^xLDKH!kmhU+49Q`1vN9UAe%|96 +Hy9_jPTErE-~MmD75*$&(6O2ikYyS%Ph)IJ^4Rh*+LT7i(afF4FI_(R3D|{poK}%!_%g-f@-?A3l@0( +_!u1&SRyzU!gK9FD>f<&Trk@$``oP_e@jVt*j##wp#L;DbAzB?+}lz0P(CMX>GnO;#u*vM9+Id;#nc) +He~6FtNwUa6_Rbn`%%J90(bwgFW{J~v8oMYJe>`Mug!XS(Nw26^QF3OJWRZEHOqmW3GsSvKQ0$ebwU> +4-_xf$&uiZ$f4+3er_{3?+);d?qqba9HbBpYI8{t~_&3HY%X<1r=7LUmVV3emzmDa{$i3a5z5Xp_L%; +6l%`<78ppSRL_fK+I=V!5mGD&ZGlV~=+<9|)kvmFVKTrKbM(mv(gWytz2(b*ucn3O4z3{q=ba$dLA+C +seLe6*+sdgy6X&R{Wfw{(xMS)53;o;eA63^(k6^zxRHp~h&pXJfScdK1frF8l<&KRHu!w%uQ~$3g#)e +G4@#K%!wGWPyX@7p$fK*p-o`*U`Mdct=Um#Z+f^X8Ie=ku-Pvsf-F>u-;#>2fFJMbRPIvH^pusK3J4E +uXwFwC^ix=TnLOY-P-TANhVXlTT)F-1B=&3(HtXwhW!Ka=W^-Y(YK`z0tR|5}?>irJYsbPT@sLwt0Tz|jdiLjy2OA*EcQl!y1d@78g}V;e}U+Xy`7(5>HDwYYm+LwhitO@L&(-|6W!ka|LGQvZZA<-iC_Tbg&CrBj0E>-P+9&til7O@o-PC+Yp?RPF(qtF7vM?b8R(*R@1DtSddy5A+PBp@C>uKxqfAY +q8#=(rhjDL2D0UC>$W#6+l+Oy)0rx2GDK3N*}aGqbF!mq0$rmFRFEz#j~tE@Z&^T8l6t4bOIeZpCWmb +WP)X@B1>1VS|$9_ca3wt{6{+XCa?sKPnq6ng+1s1J-_h6pMD_8Y+26gUj(X739souHp8_{R +ztX$Sd>E3zK*OUueJ?gU~{y8h=6XsXZSTu?J|ClB#zaC9mi6*bm@74JNH+&hTB{A90p6**VjoZ`5eK%&6oqk5lqjUs +%=SkP}Uy<^6x;F*Rz%ee`Wk(0m)cmkfqR#b9ZyCA#(x&T)fQ4q%a<;(oR{$y|peyMK@K5523mu(HQVP +Bid64C`9&I!R;HdVlpE{mPil#=@*d*ZtG>0JFGGO0J$q?N7(tO&~dk`e&mx4!zX?<(Wro2+xu!Eyn%l +R0sO6)rmT2tSr7LR?|vtx~MbQklYXD7~k_usI`L*?H@{ei4_QWpoD$C4jLvh2M?M{c8sJm7DX$9DhpJs +uWk!da`I^4)pg!+ZMZ`Lz2U-Sb%li}$g}YRAgoZ#ER(*y#9XRH~h1Km)Cb0o_%DC(;Fk|*&0w!D^C~c9-!Yv_dmJ^WzM7LH$rZu{3z$ftG*nbpZFi{2aie-)mw*rWmxOlIv+8H +RNj#ng2&MHU%sY-fHAyu*guBgBmKC?G%3J)U!Skj7kfYT<(!YEb0Mu8!}3X`_So;5o{usXcj>tA@p}E +DDNd3}7Z_=68>3h@&WKq1@5_Pn+W58Rb(Z9x*V}Z#^BVhuhx&OWBcNR36W^BVyB)mTSYGbB;c}Dw<)% +})#6S3Yu?b$p%cW<$++x`2)7qf&>Fk_*Ntak$RM)yWh4Lp;zaJ0a7rtiji>7~xUwr$&#^x7~z7U>YXn +gf|D!%~s( +ydp{E6|V>JilpkkD6t-oKn@{Zae>O85yC5e7Q`!({v}?~`I8rjS4?Z{ygr6_#f`)(#*N?=7gSzxm&z- +Ew~czj@rptET}iwG=UvdMir(Suc|qkD<5Yf;ruXxU2I3bO!~LrQc!f58R9@Hf!Q2}uob!}>x+{=^X2G=`NVyu;%H-W<1t@0pZ5WLVx3O#i7kD;vS<5z!F=Lt%;$NMe?DhO;p +g*(tG;Bk^&EYQ`7C1H`e;2Kqq%`+4b)Hce>-EF`WEY*y^|&9t(SdG=ZN3gGFi=5n)g{z)Gp#bm2@_PZ +O77R=6o|Ecz^p2@gULWxR5r-_<4|S^gUbSZR11RNY8j1DeV)~M)aYc_yV_cJSOF#fRz`}S6W +1K&JcU2sXEe7T(ytI7hS{5jr1HcCiKgnu@)<2%!>Kb^I)sBm*mPmT5GMcxeMjlrm!)139L;9Q%x +Thh(O2ftDf!SFgMXZjZn1jSC?e+4V&-&5i1-h_HP<`aUl{w|DxA%FL%Xku9c;b@dYQN0eDlrl_-6dxm +&cyd;xEGv0w7f+r(m5qaFgp3N-u4P4~iOZ`H+ifOMFy|iS#>a`>&|%e6_qt?!RLmTut=J +?h*QN)N!g?=)*q?xHq{yl5HxC42&NgK29)j-Ep^jQN&`zJ%sCmE`s_MX@8O0*1+QgC%X1MFX9mZCk)R +;{NN~ASyVsw6gzBj@=y7iK&wXCTwSr!W;WE?66~=wH=xIn)>%i3EgX +v1Q3c=ForUhR+@G_)8+@Lz)!p-UO78!7ADDLn=lQx1xi5$pv1H-TEaJ&pgW|~|Ml9|>#Ji;6ShGu*lg +?&dw2#M;rLqts7ja`lao)z#;~8Fn9q2gVvvGfPFU_4xG+*{nn>xDv_5x3K^K{P0ub8`!UG=r!PyYpab +_Tl5%m{V}w7*PiAf+;C^ZCho=lN5t4SLvFkO_6xE`#AnGqA@Orn56e#7Av9>tO!`R@Nh1X>Fwpp3_-@ +U0x=9y(a|XMsQpM_)9F?zp1%LHuLnr%O9jM9?+$@T7bbrd4Ddabm8uU_|T!Xl>>Q>N_*bCLy3T{>CoQ=$vl0O->ra^k3c0`|bBgpJLZX9tN7T{bBk7Z!M;7pZO^)jf~Lt +qR7}5cMbX`a7=rvVohy+syM=dF;-S?G@>JDLv{j=*(S%_bP23+1dp?a~I`Vs7vOyBahR1fZgwtlbQ3+ +Pq87a2imv1pdZ>w@>ba;qFFw*8PAYsML?ci0eMg+VnPp5{nx{noAQGeyEE9K!FyR7r9X6;_K0c6d@ui +5R=g`{eoyvkxY~ke5x?KPh5ieL&v^;@i~DerS=$%WbKGs?j-KQv{{7E~{Cr{gA^%>2^-pbb_0v8yKz! +s*#=7bv*iPKtIw}YADrj6YR@|8+t#V>aN4ux$N7Ga<+2+J*m+~Yl#`_OO +C^Dh1&D%A-~+YfW9mA{qF($&buywL5Xt;>{tvdm5l`r?96Q9HIOw5XwKLggspfMQ}QbjcZ33FNXmvP+0dm>x-sowhT{s2f&b|e@q;eS;r`h6xqP0p8uaV3@IA +Bhdm~+x{h}_~esXvpPjvlVhd8X}YBQaS%v&~EAE$meXbvaGD(<4CirX$BHX>vYfeQ+`t1y18^*Hxs!@ +WwfeepYiumYZuut<3maEDkni_?ENn}#ZhDjb_&(v}a*ml5A@FIE_l@ItA9AQ=eW4AM-jhN6v$A53UK*NZbLwhP)K?y8q$0?jf@HaKDIG#=q<5m2bWyaK8=QUXsD~3H1U)A~g^=VMe~N7P(yze+s7rJbdC+%uW&M!G~w_s@gACfHG;?29 +J_-H;D?fH$S(gUkVp3ar2P-wDQw`s(-%{<9*^mhe%*TKd+z0)qzYLbK(aP0!%xx>06b9R`xiX%DW4?+ +cw1za53xQ#hNh?tbX7;DMmaF10<_mn62n1m#Vle$_=OXAE?nfqinu){RzG#wQ~h~}@1)TCrTf#m@ +EmnK3hXD!hqUtcjn)n|EpV28`Ht#WohbYZe)W#;sNn`mf_4~N-EzJ+pSfya4(VLu +!Ie(s3IP*dRc@tB9SLU~3T19?|S9;;%`t?bFrtMbnuCwzf>{<0OX^XOi56d*x}8$#_y1V~4%Qo$*S3> +@}>k82HFu)dtR&g=)=S~BwMfvk$S#1Y=g&FN>lCaUN#C$Bgy(WV`_2a4CI*ffoNhaHZc&=Fv13T0 +Y8L+lu4`K%%r*Z@7v`_+e?K92XCX>E<-VV0O1mB+C>X!>c@sN9UlD%+6OajTk#(tTl&>mEUbpvc&E#_ +E0<_7J-hu-${zn{M?Wb|mktJ=Szror5qj`_ucaYB2)JpE-jJZ6${L_Uc=qj;Nx@kK-Ip@C-;&(kVyI% +jR-I5Tt>8Sru3*&O)qRLCM`HT2{C$s&FaFf#BAww+oGpFn*^Xgw$sWgqr&{+Z(;SrxxU`OKRc&t?GI< +O94XIdDJ{efDF*1(zSk9{P>p>Z$I|tUEX0>;{a0qi+dYqh4K{Ym>|@pT`cpGzGSx!~-UyET6Bt2>Z%b +*(rU@Zk$Tb7U}9sZlSbCy~-Ep-&{)nQ+hrJ>96{_f$j4772nI9CUzfe+z!wu>g%MvWBm9ZO^P31K53b +WJuorv$CG|cpZ`h!f1&>k(`qI;bkxR`&wi*1mMo6ULuR>M^nh@=Udp67MRrwbS +>PO762I((m_Y-)9>dSZ=dY{u0y5Nwvk_x848n4{YW158Qmc+}nMWRrI-0dT`Q#y83Pp(JXWNox8?UI +S0JUdZtO^iYu>-TL62_JW3NQNr;cWLti+pkyO?_3v74OXAS*7XI(mJ +8GWV}m)T}fzb?$a+m=XqdhWQ_b|Hd2u*~@Qq^5`Nw_UU^pJZKlkL^D6b@BIYCFpDM4{RFVF2?$v)A1a +0clD6WPW!&!nO%Qt!KY<+)8FoboL|*s&T4DD4ewWU{jH#7!I|jE^BycX{KlW3d+xcl1sptty{i+S^#% +X@!BhNs;kQ1#Wj3X|_ij-Rz3iQR!>0we*5;hbzx1QqSVRiP8rR=`%X`M&jV0qG<9yG`xYB4TDZvwITm +lfp$2ErX`jXGhYpviPacRO1IZhGt823~@DP@U)*7<;xoY1dZYlSU_9y)Q9t8-Yvg +Px*vcIp4H_a<;rRqy}!xdX_6nur^@F}Na%;u^V(1GoSJ;*Ms)00WG|FwP7DrZw7zT8ibT$XrOR54lC9 +g)NGjg{FySNoI+OiD^Y;g`d>6* +Gvq;7J&lQG`oQde+W&Ekl~II5PY+~PPU5r19VRw1H2dU|&BS9=DaT|Ch)YP3tM1wH|#r!KWy&iYj^bt +zl(@8ws@zPSkZ45wO?K>vG4cmFn|o4+^d>feHN@u#+@YfOVZNm74Fy+RGQ(et3LZz5nbO)1pbqIF=CZ +8V)N$x`4e*U>qJmUjCo$j3Iy9hB?rr(y&L-If}syd^0J=RJ_l){xFX(#1k;+|q+2sil@Hd`Z`7K7RI7lUR7m*U_}mG=mLU+M?;V)gawq%WX7mD}Wo +B-xWMKWZDl$L_d|zXQd;twqOe&v}yJYQ_E#bpOf&bg#zS&821R7yr?Gi}cZS)PfE8y +}_O7k;jQmd{0Te*mIgMw5MpP+mJxg$udbQ>YOEYhuU+M(9Y72~shNOT#TgMOStZzr(FIUf_*HyYsc7@b+8co+G=o>`3Hc8#(bZwH +l$?4i8b+yp2;z;-iLRt?I`J;88KpTaypH&m}ieRX(mt3Cfsl7?S0HTI*A_;NrOKUyagzSZD{S}V^At4 +g+Et6XLCP=iOBJ(vcPOJi(`R35{bsBPBPDe-hEz;Lv$ay*4?cp~;_qOo6HFK}>3P8Kv*&lJc`J&x?(Q +ZCNsLjrMsV!H)Ry4eN$;Vd*=~6>~0QqD6!Ah6!aR+*+J(`;5qxWlX`4fM75BE6<7_pn^M$mVWw!*l^x +~Qu^eXr(o;s@^0BXr=tk-5`8g}M`PPaI(f_Y&qF=I6{Sv~Ti?j$yh4{> +>%#HM&M*iKPjv)=+^f|0XYeCzrn4BCY8MW7v +ld^5-7(+t}^l{P~bBho+%niz`%t$)-7RW2%6m{w-* +bjAhST5Px?6NVgOQNu`o6kbH+s_NFs{#)aPRC*m8^W#B>qjh##_|;7ObCe`96*7clV$k&}R^V^!*sHJ +^h9f-7lOzN21SA>3g16!2No65-_$k*?SPmk3PFy3q0D3?v+M{#CTD6HFLk-O}Gc5J7MnAW%usr?#JAB +cNOm4&^>^;x0l_!GIto)-}r&fgWQV#tc-rAvt7RsxE95J595Ua(Ef^`otF79q-_1C?L@Fwx_yj}eTHW6MN56`1t2=qlmX&5z7M@rESaPQ0W1hyW%lFO2u-{=v!6|I+sglA-^ldk!W;|4ZLdW;zmkk822>XA8mmmRP#}4rIX~i}oTzgW(>N-d +oH5^Sb-PJ=flAz>6sF5WsBEKeP+qs|sYyZxE&@h=5IXH?n}wr0el=y7(J|xSs} +QfGWW01cAey2-TZym}rl^-IHM{`K5Hgmr6hKXPjhU(ZslUW)H7 +NAbN?__JZYPdy9MhrS1*8A0vpb0hy*xL-%N0CZdE;^v2Lc`j~hbhF8BMNkj8o0Yrqvary-C+QkIw%?- +_-Gyh)m-t^@*I7NA|*Sxpry(k@{#<2Hw>9b_;_gfYV_jwp^B~HC% +m@a1NG*LM^H$pbkB-@i*=u==_&cF*bZY!ALzg7H*kDFkKQAT`vc!4y5}ZIWLtli@I*Xv_@i}u>DnRR% +HWkT{d9$Kt#yULlJ82o?>F2F4D;2HH8Ie)jMeqKO4p{aGNAi@0KdqtwS4^)DJ5%SUnXm|@IBv8HTPY@ +=?+J+T}Ag@X3x=vi#g9CaMP>QpHSIX{M+qpK9rW3x|eS6l}EFnt`UFNXV9+ufvJhE@U@tge6E4bqd>m +474dvQn(6v>I)@oOSXW4&I|PQR7l`*)U7ufPb%lBX{`*544z8NtI1g+HO>0H$&ldHrTGw`+CSi!LCLuXpT6_ku;kfdNp~ySr`t68J<~EC);)uLHTU$xu;};9PpHW5BAP}>6D|8~@OwUej~|e>r+S)akR?O8r@{C#8{(P|X^2 +&Yk8t%@g#N0C&!it)MXzjVbzn42yFcV%0i=B@oc%#}5a`AO#sSiOw`m{JS|YoHgO0AFYw|)Mt&>0 +h0;&*#m1C}XwA_{hb;h)mtm&|7geeT_Z-3zT!S7f}IyoIM0M5PL-$^L$UXd_ +3usmT1)GJ!P!5(A}4U?`#qjB|wJei^H#X|jQOT!ZN&kOv4yoUq)1(BZ*wE%xo(|IcO;(1DGU9@sI&Ht +!!Qx=U2%40W#R|LP|K6Q6FlpVc3U-M|atpR@1xu#+fAIPtPt&73kgZc5<=GRh_phjIEY=3H(_DAEiL! +5NK5Ybj#{RS)i8o{py@=4PW3w^}=AhL#jQ!cB6vpng#iWPK^0KjC4{9Nl%w9eV@@cGGL!uMK~_VYb*M +IWOl5SRoctOb2emtH +1;P+53-Hk|)wQEmq>^RJA@y0Z=X6)@vMHDr+&lkBqub}y+e$uQtwHmMI?hS&o2b{7EV0`lZk>+h$)`o +p&VGs59#c}SB{{H$dIw_KU>Pu(t5@t(Yme1bBj~dH+!NI$P(~kSG-zA*VcDlXa*ETPw-|sfxMW23KAn +R}B<>X!BKtDH%?`G#f9!~t-@&aice-}CZcGsA@D&Bp`1a@6193EB5@H78BZ$R_TM>67 +RwI6gcoXrS0UUcFjzFA%I1|x?xEOI2;%3Bh#Dj>{h`R=J+=y6=_&A~oaSmb};z-00!~n$2p&Z{wJcU? +~s2Yg=5l0}#A|@ebA=(g^Ar>R9LwpnQC}KS#8N|^au{&ZI;%LM~#0LR^Np9&rcaX~bH@9}#aNwm|!fBOUE+LtGK+E)PK-far;M9qYwN_O|>XD7yU(zF7u6w)b@Rf&Otcr(^Sgm!}E8oV$Q;T#X_eNf&kk=shL +0*sC7kQ(CtG9FB3VFbGcl}<-TObcp$aM;yxZOQ{N!#7y%R=4~d4WQI*>-pPK91ZId9fn=668W>J#ta{ +r3$`P;lE5F-=W~;3SP0@-QFK6J@P)t{dT$Qhaqnx?6u3?-s +6ya3HvGhr|fc1-{ZU7`=8=n?)EN4eh>0;MS7}tx#zzDd2eB_*E#Pc()+r*JPUb$L=R6pBIPwq?KJqTei^|>m;}Ya;MgGd&`%h(mS*h?}qX@sT+`WGJz2R=3Fy!|(6TY&4Q}$2F_O0v> +l>L*k{wHGm9grs{r|PYSbYVW=Y3YWvY(TT#nx@Zox?64Oz_Vp;%Q9M>4#~+GdaKQqFEpgtaxKCI!p#; +WIoY63HOk@U8#8RlgNZvIB6G9NGGZ8@#bC8rjA=IEo@df$8#7IYbjF30W<+B$VGMEruT`nDRX*2}T2YxSx^C37>7G~J=so93UnEsT7sR~Yw*q5Z(3eASx4B<>tv +U5S8vD)-DW11#2Pj5+QvJ`3-Q>N43LR#Kn6>!g^1=Lr#v*P0B0tKaylypOeJ}=v*Ny{|}fhH|G*P3Tx +X-lDXL4Oy04Bu7VXyZ2T>lS~LVp-0U-&`ovpV4B=152bEt>$cfnjyzvvT1VkW|2=rmgX;#qV(5fl3e6 +>O;So)uDP%|qtSTs(rp@x!Ioz+v0_RYA5BuGPM;p*UaoSjaOX`2OzXd>*I54rB`LW%CZmSdA*+$riWH +}jxKCyJl=252bn}stqc`a@4e5VnRHeUW%h|Pj6qa)f?@s&Q#W$_Lg(iItG!3K4Xfs03vB+T2WPmr3Pa +)Ua3dLwqDvis;UT3%nKL +%*UKXRxMOjAoYvY9eVqqO$c?tBVw@r3t=69$~TQ3sDiBqKy!ZB`vE^8MG!UH^SXVpOY7_4Tfjk3}3pko(teRD;nyX$pOdAMGKJ(|%MT;<~Kdhg`rf}YKwx*2rUcRf55s8;x +OO`kGvu3V&&Lk%FFU)RQ%>h!TDtg$`?g9?7yi70KLgygJXR_AY6UM=@H +Gnltb#wM;Ja1se2;>Q`xMd6#C=%~v63{BODx0ye*;N6vjHJdxt8&8{YtdtrWveONZ%Is=Uoj7UJ#7W- +2~!uJb^XWI2QcCv9cfc*U-=XzD2i{%l*FQn1ZN2%rOzM=27?X!@Zh*-dCY~p19SWr)*WE6Z2KJ#oe8r +9SQGeRA@(vw9Eqt@2^@D-ak;=dZW$Nh(3tEC~N5=>xjA(+hDkU=tl1k{qdykLFhglc?9w(?qjLTpY +%8XT=kc^{HgxtpU~C(yUqV^KkQ4FJ@)t$Pd-(&e8tMApINoKc+IoVt^LRIFO*a5}`PS||Z@*Kq_ucp2|6t$#$^!=veR%kzkE@Ox{p8s3Pft{zJoVY>&%ZcR^X1vE +&VBvO`PvKLUaY(H-R1f#-(S7cjy1#9shsX{t=N;z7#$NkDK0)?a^jS!)27duIV)-Q9B +%*S<^NaM|Nn{}P;&nL-NUU1l$?L6zxn6v0bTR`ck-+JQ#X-ke-?h2%-h4CaHY)OCH;Rp%b0I>{&(~1% +(v1-avT0t9^m6afgdWcN`c1|SgnxPD&!3cIXUPqk4cz7jHV2d5RpJkdK1OqY4D%8r2w~JEBq%omB%EE +lkYgF+-OQ?+|WNPEKJeg*M7+3sY9$syoT6-cpb43@g}0@VUB)?0f@nf!w_|dafpeC(-D&p=OU&crXyw +{W+R#rZHNVkcElpYwTSB#;crFUfw&v760sVw2C*LTI$|Rt`3Uom82pj@d`CEP9bzX-SgZ)Y6tNt!60sVw9129V9+_YW7rJNVSp)@rSpebWS +&+p-`=q<82TFUcb&st@<{6sH5HiJS%hr!$@fE?_IT(=#&vdSa9H(t+`CxxSP0aICTm56|T0M&$4<3Re +-I(~ZYVeY*RL1!iLY4J4JNL(lF>Bj66zg1nIVqESg7#-TjlM6-4j#XeWXtKyW4R|TJljQ|rza2WV8i^L4IE`|69^$Gq)LM%D(zm>?<3gR@u-S-UkJb@nbz&@dn>qO*> +z*3=bKc0YmKI9{mOk&R=obu`HIYb^vl}GUr>}L@Dj$;3TSc*tKL3hMr#A-ypV<<-~Myy5D9Y=S>TEs> +~zfZBBMa)9fL+KeI2lRPaD9MN4)E?r=StzT;v~+DC$zd+pWH5VPLC?R|&j1%*ver9v$=}q^c8PZgJDt +a0>1V^QH1L%Tl0_^pM%DwkhBx@XB|KW!t?+*~vzB{`!~S;ov^D0k7GY&=EQ`78p&Z=pH{@@IN5il%*G +xD4u)nQe2rg-?mj7q+L-no9HG{PrrPcpRpSxHf7fq%9uk{O<1@v->4EbC6r|~(%FtHxp%4)IjlMd4SC +eqY&cvjZS<*|~mfklK}c)yv!`rI_RE?Jw&D?JR5BikL}yQeT6T=lG`W|2qmwUL%eDmkh^oXz+CK$5~5oV( +`B4Jt#d+tqTbQ)G~F-&8tMaCDf@icXxkZp~~&dyB}`EhZdU@;h6`9yu_dHmGxZC&Z`!7K|Jtjdf&}yM+3J0 +)cfI+$IU;TpC73GenT>!=&3W^K6HFutM@a81l~W;Lp6R*@5WOLX2u>obQTQgw|ZciI_k}Bi#rFc(tWz +(*Os4t_;}xzR~H{z+k0mWHG;15*Jr11I<{Xw``q^Jb3bl1&g-|#j_;qG`uaP6_IqY^%38iSE~wRt_d0 +D|_4>@$Hcf0X;>}49)+V2``)<44p!;%FS+%|M{GL$i>EUrhp8t5(W1mOH*6Dk^_T?DA(H~fTy|l*GVR +mKfSG!%y{xZbxv+ro`pXmO8ezM6J@^C=cZxcQH5Bqx1k9`xFRrZtVYPd+)WA;xBrVrJ;xZyk6a7YGQDkcYgh) +-K=))BhM{)@cu7eymxkE*YIb_7wzAAa&P`Ci}bhO@t>z}3D#@d?U~F&Gc|#0N3I;<^OD+V{$QVBq2}s +`eO}s7pV`6W(_usZUxqAbHzj)Cr<*U0pZX|WZRq!2!P-Amm9{QVlLs5h^FI3Owf1|z{Pw)1jUjGQaDK +J@-c)dN8yxTHW@?uCq)372I(B_} +Etl-dnohi}#-zXIvtgZuo7O*|{)p>uN$Syt#LDUeU7WI*vU)f8_4v-#oQZJz;!&R;yRPy0zxHUgz6g% +L?l|Zug5nMl5~%&{0*=&r`C#+}wNNl4lkqKn+U&^Sj69{L*IUthH_T*h$8oewq`f4xd?)Gxn9P@$Ve} +#=PO|n23(=Bpj_?P|~jMOz}wFOMOJ!;@#5vsuP!IRQ~J2o8zRP${*46vi7!|TzaFTZkJaFZ(ZuBMUx-g`svV!Zzt#EvE?@i+10q9Z<1<%{M#lRi|G+oiNWa{GNF;Gu!X|N_TWrNI}+1L*{>Z` +1Rl3H>T62d3D#5?SH<0a>fs3n%I{bXT7l9_x3L7;a3O58vn7sd%vz9e!T6}=QRsI9&xhOjI+-bZ}@m! +*(Z~F2P|x8?Ne0ths`f=#^5`XUwayanY%DBRp?MFtP41MEDV~?DN)-4ZzxaQu%Pb~{SD%iC5Qe +lF}+B$sB@$!|^bF*`o)V*~1%TYI8&P~mqGHm5X^|Skbll0B#6G@H{Ca-V6L`JK|<`R;16@ +2!i*`|F1eFZC*WYVY9RquK-peHAsQ=K0^cY~OtE*ep69ntpr9zCoTxCYAs2+l8|UFR!+KaOzvuaI>zacxSC75WKlvYH!`uA+)*4Ow`wC8;k34zcn;zN@v(CT1BKgv9`74iJ-txfIK^|i +!Uyfw&CHQ@PeX7s+2QNhK-ZgO8TU&Cs93N|16ukS7`~#D!t4?LsHkR$m9Cc*pTQjS&TW;9!4{{*-fiW +xg#aUzUx>G;@rHQUZCj=P{<|H?~wq-b?`a`MPYR*3O&G$nq^jQsSKUjCH-Mr5aJQK<)j9`lI3y@;;E?0(w7b{bHjnsn?t4$X&_423=VKEZzYhQI) +KlKZPA65JZ~weUyKDR2L%BbyyYAx`QQfwKx}{&{Hx3wc=E8!KL6<-GNtRd1ERj{eA&Kv;F#a%k132<7WLZY!r1R_^;l>AqV}f~N4?H$eddE~l78{6a|y4Q)MYPk9 +KYIDHGS31Ss&Ssojz0%X-fNY*0Bfn48L-_UABJ8hn>HA_aA#UB>enx;^iCX7Cf5f-G9@dZ#M9S?S9KY +cxd#@`|>Y_Z~0`*>%8!~$I50>1>9N +aopRS2AG$DLReJROFaM)$ZJS|9qdV{UZFZ3se)~v^wkL>p+gjr7{|oVM=OwAz1xV@+p^~~|l;qQKw&c^vEcpZ!NxlK4lJC8HCEw1UNxofvl +v;N2QMK&aTh+1~?MLXqtsbsietiikeNrO2$Tr0OdgP|kz!9D2{e2P=(BYePVh%pJ{h|7CE +m-+Jnu@0>sxmah@fLyE%YD6xtZ>#5AtT*#RF4k@ZAQx+SG|0vJonYkRy{$0hVy#j*ahV%(pCT)elCg!|q9*rHjcyFKxc}L{M$ODjAc#26+wgAmp{k#d{;?@Oid)52haF;yslHV&oH%mmnAG+DnngA}>Qe33)kk@m#V3`DEmk$VJyxg?uLRYUHz!*C3yRycW555?qh`QRK(k +^7ln0>;M{2t`Z%>_t;+`_e1W9yc+A57jg~CTObcZ?u}fBT#Y;txeszN|I!k93d&m{HzRM2+>ZPnp^v- +`@>1k}$jgzp6>^NvA9*G6c7mh-_9DN?J0Pz`-ci^Od4RCrRqP*x{g8JS_Cnr8*b8}AVK3y}guRe=7xq +CODC~n=BkY4bNZ1E?50QW5J%xRc_Y(O>-dp4!c^{E~mvaxL-{oEU9j=V^49FUd>9*y}IJPz| +OI1V7Ikb5r1{3Gv-ydJq8=kQb6ss+O4O6eiy(W7yuJq_pJ(@~y|BTWO&1R2;W2*Tz;>5)N3ER4sBbNW`Y0C6Eh8?KVV5057s^| +O&@U^*9K{<3gwgB~o#^>})6Fdcf(;Q7*{elF@6(VrFN^AQU%9r>8fMVM|I=AVa?iSgKw+c5p}u^e(_d ++3pyP%j((<+2#*ye9QY=O7mnULQiC%p(XvyU=;)Ncp}ejjgvBFR#ByWAkxQ@_k4;laG_{d(zo#pYz=a +J{veuUXPK%X89(__fZ)v{t2=?i|NOZIGN`Gk0vva8(I7@a(awxmN15HyvYs|i!VXeH$jdl7x!IeCQp> +*W~Lu0$8TY?;8SJ)78d_hIsPn`-e}oBt$);hlVrXCc!V52t&dbL>|w+8DA6*vFfPK&V?0p~kJeY3zj3 +mh#y7*IybLV;v*q}*S$x922A03^a{SpWJ#q4VW;T<@$@a@&5iB4Wn=TkbDa0*%q~v8i0L~yZC9>*K1=6BIbVGB!UVb8vRJxf +jj@@j+gB?pQU$_T+ipTd{2_wg_W%?m?X!a$LuiU4m;Rbyw3WQ%JS_@ml^FXcqYrYliL(>8@3PUdMA@2 +pV3wOY_we&T`CQ<&+@XS&!+ +Rf}Hm!QF43X>%pAqGhn$TA?N)`q+Bk%e{kya{=q3XvG82`2ODdD&U(Ugm#8RL-mabfm}@(TVm8S}e+I +Yq&+A#FY;V_kmR>fM=Sc>2sz!{P7!jw<92eEBezqOTn?`JyfgjIe2R1>Vvcya;^ +cP2(=|;_Cr?+LOFB$$@$z&{bm@OAZsnDQ<>^dk4vZa~CC1|)C)Xbyf4p3tB7SFoXmYD>2E3j*uTK`Y^ +rm8YMch&TJRQ^A>=5sgFWxT4yTy|z%QMiwcphn$^Lb}H`aAMFU9LX{ML){p87Jr8HC*>{<>9)gf3n=K +^KfHbxRqT8#>?UInk;Gt*Prc@UtZ4c?KH|IUA*UU*PkZWBd#B*D5pd@eC|J14v+hv?o$7)to~1R^B?D +u9&Wc;ZvMy1<-z?=a*>-@{LyayqvY#6_aC7s?-_D_^jHq=`iTnp6h%2ky5!Hw>@(AiN4wMmE2||jity +dn!P0g$9qrG@i{d%4u!~OdTt7_3U%T@?zvCke4F=9CeSz=Ly9?taLRA=e<^FYJN53VE<%-b9D;myjnR7b}nJ74te~l#2ywVjfS}* +p6~B{wqelMA!%UJ0gFIdBF;li+U;M{lsIvDwK=bLiTKcdVjeXMPf$F^?T5J$lgz|aFYZdeGB`DX6_!a9E%1|!mZN<6-v2LLP<^MolgP8hcqgI}Vb&{sMBbZbhtX2}b!d$i+GZv92N<<&OyaDAvJ5qg;$5# +kv=G!_tgGpSyaMH7TrAc};A3=Bh4Lqm*C78V@_OV8 +kvAe=k6f(N5$k%?zFhtQa#RaO8)OMTp2)Wedmq +6(0kk@M%Wi{$GizmL_+<0sBj}`pf45jq*5z&x0D}^zeBOXZ|=h%JqT2H$PAAxB2{8rfe@h-!)%uAM+Lcj+plmF8n? +F`EvUC{MdZC-^#`}f^9Ni$hfEe9J&7G;M=4kJ$zo+B-b +B4FXXI0oSWqGG-3bY^lx?R56oC!O)}4B?IT;}HWt3cjhp54hBvxClYakGRU`DdZ-X6p8r+Cttwof3_T-Xg}`PRabY{> +!B5|+vXnkhxxV8t!{ysQX7V{xk1&4Z*Q1 +R8vHBQ>^C`oCy(cJE_S#a-uMNZJMl{<@A)f3`?d9FS-5|U`-<`Ss|+juSbdJU-yZTc)0=mip)S()4a3#`=b8Vc*BO>h?On^?B{z9%hl#fpGDvDHfevq{^G>*L*{ +E6yZ&;$u3xrxc9-+fRZse9!y*>$o_Re^TQcbZhojPO7iq*5`Yj5s-eL>azdT +sirlJ{qy8?=!@C*OSka*j5=V?xO)bB=bzppUPNH_p(WeW1SG@84>)zxV39yY`*Y+K(p$U-I0MtKAp*; +jZ>CJ*4fkAi<;l!TH+HX1{r1)`1*t>iRF{`FM@eejWGjzd8oZ)lPiiM(<bHvOma@AF8m_N9_Pm-%}S)t=h-^P#A#DcZ;9zICm|>&e=zuiYCmGff+(j{a@ux6`$Yj#SOP^m +HQHAxyi!uj)N*d5*TEe0})?@94EX&hOpcF*in=+BM?EU*9rlXH5HjwswA!)_=!^?*~Lr)s8M4{?q;cG +HJ7OGY8XWbaY0U&W+Q3dg(L8JgdPnbjZMT@g0|VgVn0fG(_eWOgH8ja`S8v&A8(OuL-P=q}Lq{84tav +h3zt;VLiEq&CKWFek*)8qzQVPK3g;1VxgZnFlplSd8V{11J&bqCKL3=Y(u)nmaEA%8%!EQfgvrAefk3 +H@eC9D4hG0GjHYyr-lWl+!DBk;&|SZb3k?Gm{@9liGAy|{puvOb8ARC10=lYfJV|2D62+puE}P}&DLb;P +3hSN%N_Z0mTRWLreUAlNXtz(XmT?&X0dlUJq8lGlZkV`u0bq*3t%cs#UOSkxlopmFEAU@Y&>LMBOu(I +97u%*Y6VRJn6vLds7HP2FKd<|RS%BYMw4Nrrgyfr*>Li+j5hxH35`C(207|GD9>sclxj2$GMENVQ@5i3ct%-l*o$%gIq;K-4;YW>}I|DB5*10p +G5f;u(wB*vS?O5kpjr8+7$=P__of|PVe#Ef3Qw`Y$z11)`f5fm*y(MR$IbA#_JWZTy7w8&_iBZ$z=wz +(=9_XuWh5~wbqwY>fMXtnouN-!ZQ~8X<-reMG1u#05NF&stfyQ(g0rX8QcE9s)*;aO~Hy?Ay>shisz7G9aF ++jQ=)yo-v*%iOrXN^omv32p^E-txXGHm`_f$fmTffm?g08=vM1R=Jino64cz$^NK??8c{Gbr7d7xbfi +Ww|hx(XW*$g8ZfI!HI3hl9_-+shHJ4}(t3rlDSf|XDpHvsySZ+q__vO3q%`Eh(u)^QdR8q9sawk7;>C +*{N%_4O0H3O>v`bIbU5s8XkqU>y;o`1yb$=JC;J2#C%4cZ^ed;d$0Q`ck(sqQ?i(XKbFD$LQ*n;TPUP +MRg>ew0;^@Ydk;67gG7YuF}mY$Yq+*u^iZ!YDJRWIuW4wa+uyGf8^nnT*QC}zP~;KF?&Y`U%sqPaMXm +}%Hdm-YvKPzuN3tOvgoTe|q|0>3-4`0FnAh2K5c?;dqQ@Vf*49!L_^ER9d}s1srKg1gLcINPt17)FAB +IuA*+;mz`CC#pIX-NQ%?*(DHG*gZt&@vU#{QT350sc8n(x%~VqIStbj)9H_4-jCQ0F&eQS(S<|$J&v| +Ivf_xk>d7k4Nbfo~Lg$9U0xldWI?|%*@ha7FUY2E0mVuDhmdyUnyw*m-H4=J;uB&x=`^;df6H;hHBA^7tgDzf_VKK-a@u;5m7U)*(?Z(?B+@8Q +BmL=69hQT%X{1uL8GI5GP%WbD_%JT?_8RnC+|F>SVf|5YMHMCQOS4euum8$C!=pjN6N7)U>jPK)3-ck +G$cCJZ@bM^?JE8kFOD3KzmmIPGNlrsf&enGnS=^>rMqe(S>&f^NTh$9Asfs_7vw)5U-Z`b+_$~5{UCf +LUu#E_7~|oL7lnl4qb3Xyp&tvX>(m$g6twXy&KPMrbYhCJjkkUrS2w4y3T=YL!A+P-u>e~shHOfcPI9Ixt!w +!(otp;17A1lN;p4A5)=OFAi?n4Yg9F8~&{Eu*{F9V@ogkay;L6M&FFTkE(ILoY^LSA$RuFGef@~#Sb4 +anNpIOTx~xf)RnSgYU;e}qEWL{t$B+~#r>cWA-H*zCd(>qy_mdtpN6&zso!P_LzS6;s +_x~s5u+Bn%Lf6V(IC*Ek8A#l4mG1t**8hZ6lln`n!>JtflK3;G`{Gq@)D^=E1 +1W&0TGzue=S$?BVX*^j;rZPnql*D=UfC97{v8;yjpyhKZvG0hrmqU?_8)vo*pQXVD#H{5R54XIeB|U9jt?J$pA^V>F_4(o(TH&aEf+50<&iR)Q?7>s!bOC)iP= +ricJgZH@`pj?Vwt`F}*+3ir2U8o{$DWfHF4o=ZuG}rIdO^}FYq9pfc$L>-F!=&bA3C+~&IMyEAucOI# +iDMq*Z34@ivkgKYHG!GKj4&j(OmSB5;b&fWOMrAVEcC1m-L5 +vN7q%+-&9@?@`EH%Q+^kH3kg%Z`cDA=^j(Y#=X_jxjEi!gaW5@9mwH`ZB$4ZImapMR$Ej+p3oUR=DZ$ +_w-2Gb6akO-e4y6fA +Utu^yk~3V-Lj9h)IYUh>su^BW^|9jaZHN9pX*Idj@dqg*XCn0^&?W6XIgTRfwAr%MlMERwM2j%yA=PG +2-KhCd4_2afl-kLl6THH-~b3AMq4oJ)&wL`bQjr7>k&Mn1yIVT!vVTxDN46#G{Dyh-45)f5h&HVThv< +6A?2I7a=~4xE^sE;@gM^5l%~aqu?oFv)kK4B8h!YhXO1ytFE|WgL0Zg(K#uDoFND+MRNT>Y(4rw4r$pb(T&|PZZd|3Nfn}U(+%=hWhafFnlL_2%oA=`B^nI +#ow+&ZfvJr#ne%Kh%*G2bo>@jydT##sf>~q_8Arddo?FPB$m^=aT&s&smeaD7>5OUPr;7N-5LyeMm{V +C1lhuq*HRR+jWQ8=%Y)G3$CQH+77WfwfKBh&-&5B5jVd~>}ElV_5Sj91=8KQFYOg5;Qo$stGG3lhci| +cguopo>|S6Ce?wAu_gbOJQON+YJfNUDc(Z~JL+Myo9vREUYz*cm219hN@6AkAQ=RTi{p%mvO`#>*1Ye +9CjGEqjJ3AFKlJRktr3p|7tfi49?Dqtt#mY +irsaeI`5)1{*X%>0HBgP8WH>R^T1J#%8rfG|aN+je38v5k%@$~m0mf}R(gOS@_qI;O0EB6^BoV7mZtR +YVpZKXR{D{V^Dp4!GmFjH?a(rKhwWD=FQ^m`9AU&0Zl^l4_JiM0%}(QCR~*GlPcxvsrTnOxU4QO1n;f +ouQ8Y_!q+3lre7-NWVE4zuW&u$`Z5prt|IS>$~Nx9ZDKlk==ultkubWEd<~x>d2W%qQpBptqrRjc27f +4RQrN75hEaz?1LCZIeDZgV)Ely!JV($bb15viW@Ii~R{X{-EYm#%TvT=tz+wy<&=QOW*B~H2)0=Y2r| +6{%5AcXt=7s^!2~v_^a<{suYI@9{;8VcYkl~S)D88xyU$zxyXD +FwF{Ww%?ArGtMlpWMt*8p*@=!*oUcmBN4d@N4$qa!s?x|9H~=KRKHJur!x9|Ka0*Z@T}dkN +@rULUH{6yqZWVPq*R1R=856EGt|Vg#1<97~*Bzz+ma7+M5)0kJuTOf&T+r&Ti2(6aLcM9Ce6${-*y3# +J9o!iOqGJJCjSB>o-5ptbg4jFSB1$yx=_h&{+*hK0EL1ozwG6Kdbqs_68w?AK{wyqTinL--D0haSg-u +ob#W+5a29_P^)y(f8z?Oguf@xSeWUN)?&iUa_T28;#_=%ym+fV}|CfCB(O1dIdJv?Zhf&<<# +)=ub!yU@c%VAYDvT0$2%H6{I4II}lP0n9>pMrUBKR2&o0E1L0NMdd0X3bWPXG ++)PTxttC>3hQ1pO;l$8AQ&O +eiSVF?Vy)>4Fe?bbEM95s=C6j15rAlRSP!7^XsWzVO2~bPalj+`2wImwwaqw3S_s^w(DN}j*tEX`cn} +z8@^h=_9dg!I9*>ta>bXCC|j=^vV7_Lf{vK}O)A7DWWtuK0szL>N}0(++tvKP>v4*620sj4!eydXZm` +E*UkMX3TYB^&Id`c|@=IF_2}9%g!}U;*75Dov%c(0DRbb{p7Vby-!lkj9@X+4JdMOBW?w0U^HuhQnq4 +eF&d!5U>~0SMe~_H>m83IYuu5`%Cqz;zu~vJW9)>mgwwIj-W@^uI!=hVHu2^0-@bJPRl7(Wd;lfUh_E +J8>p59KLK`xc98WXAz9!ayc~*}$^m_#-lsfG>u0J||1@nkmsR1b={t#fsSNN%sZOO^L-%B=lQhrLdI# +<3Sz3OnQowVBEQWA&YYBN8u;?EweyJ8w_dMMjELEy`p6+P^c7K6}3+?O$8eg3h4%ee=pjQA`0a*GXw1 +3Li5waezejVM*;#*0*9_zt+y4OxEN!dV1D~*b6v@n>YNMRdk_Q_4dBAR3PtsKNyLr3U>>(rw%3t?3edn) +Es(+hqVSmM=rUKHZy5iCJE|d?=*Za^eLEmp5)Hly7o|Oj)xkWNtR375_Rv#whCXN3vO?RqPa+vPjcTt +M|2<`Y_PFRH3P;pq)K2K^hjR~(~ywNln`LVf`Kq)+KP$$F_0&<66N6Oezvf@ +-RlqN=H;^)yu~K1us0=`c%sKO$f4(u;wdK6!V{t4WZ>R}8Fn0N*1r7B%jdX@IqwWRSX?Z+>wYOc|CQzsS +tfc?~uw0&f#N`It#x}>O5eu8^`&@cL#&M?$Te!oKh0KEJ1NX0}S_)pglsr3m63HtO6VW?n!D1`s<6TXkUr+mJBL$ON +kt({Z=c9?56r{BvJ*K;wM2pN|DO^s60be&{ksCpISh_UeF%=C9rdbsOhI4gS$>6v3{rmus2-qYJ1T5Q>Db764)L3 +FTmf3(WA7N#Oi@xZ=PQ}Vnc6g9~fu!q4C#A>b~4R36`LpL4O}i!@DSH`bkhv;kpVqn6}dp3EHPYRT)A +r9d%Mzf0}Lx7qE!t8?YYGK0spqQx)J2;B<|Ox;I?^!z6b7E&?0?JY}#%%z)9uB$5JHIYJ^|LcdpXpG1 +~>UTL8lEs@8;y>T>6N3B#c2EqrP6)6$VKG1JQNu(=a^*D)y0VYn6$W|(!D3N1;C9yP}dR1dAwciCvH% +TIK;IBSTf_e?ty?BZjrIG|{XXsxhOQaa&HPawnfCUCf7oa9XV*O({;9)3Nk}0w4Y$;$l$SdYcq#Cd!T +O#LZI&viFCsI|!B#{Q->ID*9uP=L)FW~j98gMU!Q)H1?JFKzLaO#{q%NT4b3rl#J_y*bL}LAm{SjJ@P;c!LxkB6bQi)x+)yrV$NW*yy^5OZNs^}?+jgLx;B%%X +%y3XT%YL90m@-&Q-==$RdK)PnQ6^v`>`p!l`x<+;YTz}2T>AIp?xL)l>tU`GBOjV4VXWZtB&BK&(P$)jd3n6R>~{EPCnY5%Heazm9wD~wc{{*8a96#N(x4N01zj!hA@RQ@%%@dAee}MR7;A$X0fiCd;e9G +%j96NT5aW;jZhW~zY+{|F|{KXCGYoP4-2zmYqbtBc!$hgV*qtySg6B!vNK1P0%%d^4#Cgl+RO_0+A{5 +;CT=RErl=Kt8S6CZJhKUnzZY5bf+{0_&;6US)Mz>TKw=7}5Uf&EV9Ed9%Ft~hq{*zYt9%5P7d8v`D0W +<&VEz1~04zTf&|Cm;(M)IRE(olD#O#Gm0bQhw`+A#LN1od6$CQ*)_rzP4^~IQPJKZn=gm*a2oD%wT)f?N)`6!$YJCWe@fYTe!HgE~QQ!c097Y@BRm7B +$G!STlVjnLBrd-iiZEF!|}r(f0Pqei{ak!k-$KQpLd{xc;HFyatc4*c(&noqBhboJKcRIxOeZ~q<{bZ +BrGh9j2SbAL_|c8n3x!5yD3wqkeM@QlG(FolLsGskUWw;fn;W8l6mvyk(`_yVzF3Q|FLAr67q81Sh9W +581mL5qsU{Kkr1{`#d!5=xu*bg0K_)! +NL{i%b@J?C@!w*|X&9ufHZgU +8*6U{o)`OE?i*s;>wjP(b? +!Q=tQ6jJC|KuR2I$R5WVh(1)-ZjG$i#`YS+x1L(gF`UgP&6zE@a(f8orGc +?1Xqu7V;jS2eD|1`j0#-Z^i4lU@<1^q>!{{ra04f>~D^vOLWk#vGK8$^mpe`vNN$O)+V4KPA>w4Fm7g +U!S-sQ%aiE_H`URlB3iP*v{#&5G5A;6pdSSKeL#Nz=xaeg3G^3${?nlUD(LSA{j)Cm?ng2|T%Dq#A|o +Or_}2DuA;GYLP|9;fN#EBY|$H +qsEj~xrakB^EN8yS&2fO_cNyGIbpW8!rYu@O<@qClUfYv6$X{k6%?M8?L)ieo~TfKJH+2l5bl^$61Ro +JjQ{{Mgu-v9ZbB+T9xfa`5nf+PfC8sH(NS(M+^b%F~fJ7ULC?qfn-zq6~rtBt>;1$~r(wLJ6XH!BWJ_ +Nh~8gbqX_cW?+V4u4ty1rf7B|yHS?XRWd8GOv+1S*7tw!n!Ru{aZ!)w`JexPTF5JZR(B>x$IO3Zb7K#1pS1WcURt +5+{Rpm~4Fh>KJ7p%Zw3n|c2=6DJA?eVX@2_w3R$yhqrC_?QId^29(v#MSaarIDkfqOR}UvrAZHNzE{NY&gk* +1%QxH*9erkhO3L`CTgLS0+GPZPj84JT<6_Q?pAwBjZW(h~r>=VJkB($@m9H(3{9y&tUvhbmTT-GEBFC +_Zgo!$*7V)?A-i6BjkwYqt{LvL$%!Ca +PZ4)UzP6o)d}c3zN?+YNfZD%M~b*Uin=6d5X;EZoBO^k&oo3-`Jdcl;@383Nt4tC9|THjY}pdmCxoYB +WpOPU_TeTpOmD7o}3|%w@*L)w6bQ+8fER;wTjVbRLaWAM6U3{3onR#@THet61l<$)#b_>&NnJKSJ=IK +xAOMeZ;RaE(7^-B!Gi~tLx&D2-+ue8^4)jeDL?*jROALHPMlDF{qtDOme1e7=fBS9pNVsSfPesTOUhN^!SDh814BbY@y?F`T|j_;K;OZEem#0zgW +7Jt;DG~!28Lel*Yn!T_D-6+@+nvIcOE~a&!2+&hlGZP;D6nC{J|k1142Ujh6wulaKpV)efxUuz**E&Q6jJ +y*IDgt-8|@{IR?k$g%^RI^&vcmEma(%YuC@7MZ*dhCf^rpdKcx)UbsMx4v6>fgWraOPpr;lqciy1KfV&+ +okR4t@CHhXNLLADf;opACGg?Oy?ghH4%>h{u!Y=UJ2>Z!H{KBVAw#x*f*gMPP2MHwY5e^ +c{{1xevkhN=F8EKLJV_jeg#L$zhYx}tqXYk2Z@ooZw{9htIdRS`Y#989JYIkObeNid= +dLg$V1Qoyx=+b3VI+5V8>_3{oWr +eV;_MEzbOD*A-z^y$;jbqxIse)jdv9r$IJvXK3J>;!fIeYx{9q8saoqCa5%g9etth&PC?XBx8i6P-Lw +bpN|VVcVNa6K940r=Na;F0ULmY*;_mg=L_D=*Gs$^!O)?~(@KXTL|)&rBuz{0Oql8%rjpVJ*{umd5_`9;P9gas2I|hX! +fSph4O*eA0EVG2dSyx)wAr|8-l~{%gc#-fj&)`+K4PY->fxhhTG(4oM4WKs;zmw}2mh^2NnbTU+%@0zc>X +D~Ass-j8#XWxx-=h%IymG$7}ZwBR?yTA7z&AL1=?2DFz7M$xAHQM8_Ea54>6reWLa8Fc*UH)rK+zF|7 +ESSI1pp4A*9XnX7U;V-2Aj~+dG5M&`c>=n3y4cH|u@cr=jnAgB>B32=`p>1ChPFt9U7xPC`<$^KfU>d +yb`CsglR%J!e$_K|&VP-Tfofb`trpC}?bMB_k_SXs;v^mC5HOFWRKl^*3|BR;yxPc2>U;=K~18_^3z{ +hLzW5i$32>pMha2&nNG*mGS8y7MSYzwew&|p$&Sgq1f3>qF7Ps=lyhWleEf9eE50~&nNXibhW{MFX=A +3g&y40!~))oLZX-A>4hWY@~1Jv;gJ*I%jj`83+ObR=zC%rvkqyudWLReOd{GR_%CYiEt4lAK6-DqBxa +Opl_+n1)A~h9ykHLZ$)DJIDC@-q!sO@Ut!m{b#*i23j6@9D<&+p+nMwa~s}$fp#q$N!3ilR;EG +NGt&T{B<uLIY=d<+c%4piLG@Q1o_Pjx3&t)nNYg8Kk$$C`uU=*#$^w5ANatw~olen+_TEyQsl;5|jAa +jntt8TsZ*7)q~>^;B=dxQ<-=jRI=wEESNOt6JbdC#$0Yx{S*nsW@;^W&;Ld$o4+AK-`VV`F0>2db#35 +V;p}nH4Km(A>Fmn`vl|j`n1N2A{Ms|19j8X=ugIwAHQxpNfl%ce3xKpr9a1Nl78I*-VJbxw*MCd-iNv +xpJkj>rX%ZRQMg_LaosP+=vbERmg>qk77Q6277+TGKWr|;`v7D+-7^0ImT+$o{QNQI>Ntg+qRyZ>->0{OmxdFx6tjk-%gJ|{y07T^wadzQ%?yznBN00Xh1ALoRD;24g(tCPoa +m1g&1S^V=?qzIq;vPJ!Nyx8MlJ ++*rEYOxN2u~l29f`S4{N=l;s{rl6k*IrAUTMI0}0o%}a&>*`vE$GlGd2RUCx7OZA+y0^F`0U9s5TES} +qiOS#)9B+jHqprwC-$;iNG8|d(+1#1w +9!_a%gXxIwYBQTG|Z^)4#JJ8ZfWAcCg3_Lp5^&gzfwrj}A$vN=w!w>%koOj-Nr|7V0NyFg5gK6Hpc|s +0|8FFn$(gD1{FV}oAH^3J502_flc-uQ-ws!7;`LlA4>u<0v=s)X{aq;5C@54^x*U)?5#1=XP+O)cboC?RYFZt(y0Ru*C+_>=x%puMPKXelvx`g#+{03ZDb +DlG2j0UWv#E5>(!)37N +mtTHa&;b5m-H`1=(2$mvMw2E@61r7ZRwnR+*Wfum12^md{s+G!H--Kn*M=Ry24EAoE_^U!|BbJ+%-`Q +%&vG~I-o3j)@zi{}o-KZitIdBTU(qpN1RjxuBA;3@q7h7B9Y<#L +G_=ytosdEhnkseygly&NMKF!o*i+j7NI_c+`7jmY1S|G@vVJr?0R>^KL02EGUl`hz(UISyq-i%-7|IF`Yph5b@*60Ag;e$AKi+KWc3bD48HGP2} +vXMCi>N?PS=n{Ai8!Exg{O8X17WlRL4ML5sxB`KjeR_5FAFfraf$=s(BrWpe)29xZasQ`YYw8~ +g@2$eJ8v2493)0%}m81=x9v^YJt7;@7VK$hlN|GC_Wi{0HArmqUkcVf*iY|6BN7@BsD-eFuKn0qbMg1 +;j4!Yu7*7Pc*OpfCj`)YXF*2nAmnsE!%ZS{q~zewGZXX~SGJFDBS>b9r44OF+0>UNR3CC}Ce+m`>gqf^eK;r^ +bkYVV@7lPhAqkNfM~PkPN4@f{Tv@Abg88piVH+&7G4etdd*`mLPr$FR@GZP>W&3^_L*t>3Jtxb~+_L~ +{=k#qRUe*svCin!@$35Z&`O(Y_xAmi91!);?XjbQ#HWyP0g$P4H)&bDm&-`wjc0@7OPW#QC|2bK3_v2 +gd&};QdYgINvxr?U1KVhP6=C`NpVgx$hq%dglkC$lYT6@7o#wYWCr!JZ6)&o-Xe-k?ZGb&i@t#^+wdWP+!5CIM!l6I8Idi<5|^u1L3EaELoEF)KgC-0RwU;%pVXR;nxw1;H#0#B2U3Sd`6q +xaHd{}8V~B7Skp#*2W#@Ev2`>)<^Vhg&F1;S19ETNpZnK)Oetes8ONTi8|q3Z-`TCLe`=j14`<77g__tf`{DfHmPw&*XG +iGdz5XXcl7``>v=Q#(HLiuv>BXD?c`=mBl*6&SE?0$!kDeI2zXr&{kroeArq&_~pmP}^9l)|V +Dc@${#cWC{#IA8XIlzP-oyt_6G7fFb{#%Ogd-3$-GwX<}_$>Lb?0QC~rALe#j_@fS{=D8{-`qmN_XY$ +<=_WGhyzNPF(N=aOKHnC~M$2i?E|9$@=kX{M+fqF#k{RlB;jy-uw!z$Q>1L9MVLJ*JrlXj&hQ+O1aqV +OtM9^iVeY{|97!0P_OO?Z6ZG9`NFL!-urz$wW~n!1{Ehy1rhfu?f_f9#iXNi&P9~LLYhDd$@n{Q%n1o +^E22Xa(-={MO(WApE{};?cL=TH5SzBmNABWwbrO_>|FOp&OMCwL=aWzyLOu>0a$YU(8w3vU0{#g +5&``g1J#@wRyBO}GSD{9l3nVIzHqmPRD9WY5>Ablm|1Ku2K_=w&%K1f@ZMu~d?q&}MFPoxe1%As!$eL~bm{xfdex +M6y|em>~P&(EK6-+lMJ78Vvp4?g&ySO+dDDiUiKa_$43V+;PvdmF(I@0g5+Yw~gLv2L}S{|y;3>3)I&*E;rW;z;~&K@*W +Ynj;nm`~uDc7VrXo8$J^_ckI~lgm +QK@3Ss{%SFTJm8jVSE&J8&O!?bDBC?q6=Zoc_uflaRa$@&nEgWgDgf%_6SY}jB_JadJ!X~O@(|14d)^ +Z{HCYx0Qs@Hwb0+E;?b;GvxINJy{d9u5%L1B +K{tHz-o1M*=Qy?)ALFpE5&pk595M%9zkWTfUAtDS6~i}T%}Lf2&vR@sKE{#p7rF#`WeyJ8lXXd8fR3T +Yf%T`&n>Wk*1kZQuX8O-&4HSL`z7KM)tgM9o9bsOqP(14==iBhVCVuDHVP75jw>I19z=FtnpBDdni{8 +=y>}vmaxA{E9)4iX+at{But7{V{$HTz3_OU)juUofnqse4C$v*0Pv)TMli^bBy?>HQeqkN4SHk(cS&c +|F-T3Q-sFc`KwolYT78N(oFw&{J^^HERRxpODhS%2Yc)U*B_haF;W41IO+9OU+oJ@-LHa(=z$pt#g#c +|MMXP9ukt`HZwF__CC5JaZ=Gr|)rEbHi&b@?!-t7-PZKEpkXqdwwUwq+TGsQKu?b}~GYdTm*z?=>IgPah96xF#Sd`#_b1)tjw1+Yu1Q-5ci0nt_E2`U%Yei+M +Sgm?_W5jIp+qkFM@v@7lhwJO%C@D$XJTDK7Sk?uHP&8i8<6iGR64ErTn3L@b%DB$nv(^ZWBC(pN1?y+ +hw8+OKueRf3D5DiT1oyj`LrX=WpM>UF2%=ejNC1=Bt +zs#|Jk@kG}Y2e0nzzfuhKoep%){}59=GlndyLazyaV}bZS4Wf|ccru1m3F#3rmNa};&&gVtD@8SiKji +`$!k7%^MLq<=dN{9@IC=NIRH;x>#X4I1Neq#u3e;rg?YRap19UUJyIv0w|235q)t3-t*a6dnU^(PH#d +D&Zsv^au|d}j4GYqxXHS_iH8XqK*q}T9HgQOJkS=$2TK3em=`*s^#|F($&kc$kcUkv{wA|eEtox?V*Y +O3ibH@hFnUy^{cS=TjR$A_mtjsC1X5`MefA)|mGqOgf{)Yi# +Y^kdtM%*PYQy@8^Z3l%^eJ;@WzL?je&=6irO%whqohwwoRv8@b9(x;^xWp1+T9cK_*A@%X;S*!^y#|k +_&YWzEjKQE?u-Z1X9elzWJXQF+mglx-Jdo+H$6xfdS;N&wnvEwZGkBww3#@tEmZQ2zqA=W{%CDB16u& +=f0N0#R96~Y8de%!sxM70O)bqREiNr7HI!DCR+rY6)|WPxDrJ6Uy0Wk`eOY2zYFSQML0NH`p{%m3x~# +UWzO1oKG5eWy<}kC~oM=up=a>u3#b$%K(p+t>HP@RP&5Fg(qO*iq^p-?RswKx#U@5j3ER~jOORc5e(r +8i2{mOOaVdeVr#PZbgobrP5;&MZIWqEaZZFzlpV>ug~Rc8&e>aB^^RBMj4z*=lISSzj7)>>=5wb80n_ +*LjC!YcF?i5008ITZyJ#TAB%%8KfW+KT#$#tOyeXVcljYN98xNW)##6(H +>KIdlrHN7bGA@5c7R=aU%ahA97+W5rD=g=es(nOdL~o2WCK{8Csm2Urjxo{EWHetUmi=akY!lHQna!ht5}jXEX +%sGMr#vu)0g?_&m0YAo`y45W0|kX%-Ia)Z60&Cu!8BY^-E{hh(iaA&MD*_q+Ya~3*FoK|O*v&LEHY;ZO?eO>;pU{|;+)|KqaaOJrQT_rB +7tIAd5s&h5Cnq0nae|NAu+#Tyqc4xTr+=cEEx7A(cu5s778{AE9rQTx`z6O6oup!(KYe+U^81f8-h7y +C-P-Unw)EOEKO$J}1zcJVt&XP}Nspql8OIX@f#u{UtvBB76^fmdj)Wccg$t>+WmUIbAxr!xR$I^wx`L +k5RS)$1-%{-Q63CppHWmw1ZYby0+$py32Vp(DtEUiM8l$E7a!xCyJYbx_K`l!Vac-;T1qTd*6$kDZD_VHYjtpWxT@26tj{Io*7Bd0{vIEoz +xN2R0MQR}F8G&&TgpHt@ybLyRm&QxcPv%p#GG&n1r)y`UHy|dA&xcpo?SC~uhN_3^Va$E(jVwb^H>8f +_sy6RnxF2(KV*15yndUv8b)t%!ma2LA`?n-yHyVhOrZgj&*cTy6Cul6(O3}FVnA<>X($T1Wcih24{X{ +a{T8tM&=2F2)S)EUE!diF%A?1c*00~y%+R2yrJ^~Oe{V)8TTOne=`PGZiL%-jyM@&|n++wO}iN-C_(<0|HI4fDBs +02=@R0B~t=FJE?LZe(wAFJx(RbZlv2FLyRHE@gOS-f#!70w&(XW_X+yTWxKt)}@QBT5Gi=0fdA=7S^x`0aQRx?{Gl^LKc?X?>Xn0nFP +?j@9*y)A2Rno`*xnQJ?A{v|L_XIEC_-H{tQD9ss;WpU-;kuwZUJX;j8)xpCoR*y4vL1di9h!PcCrIFM +0ZjlE=)vN4{~3BtY;h}gygs+ +LD+*G;&HQc;K$CV!X!lA;{?HqKSIxwB4P5rFNlM;{IY1F=;O-pC9lG;;U=LFUsjleKjTZON!Xp#dy-A +UZ0JDg_mKDhuqHj_1i@zh@#L|}?`g=Gk7I?oqA|R1MZ +WPrJ`?}{{#Vf~R;-7okA3b9PPY4l1!?}^MCarO<+9_lO%P;eJq#c!XK#>$Ts)|NVOAWhJulFqEVDBm{8W%7#deO{x^n+ciSxfk>nnJF1LGOL%_^o%T7-Qb+rtD +Q6%yD?RoB2ASZkRFuTacDQ+$HLI{ljpJPj#>$-4*7FD*++fB$8)s&R6&r~mWo{mLlWf+p6pt-SNq6`W58ldGE8eNCaid`mu+>k2JPZtSRl4l +W-Zz`RC_B9bvX3o5VkS^6V5WIy~yxpUX;z}!@q!;Tn%W=!ZvGv>(ASTMgc*buYmGxJ?-X3+I6#fFWU? +Aru}L#=HG^u;#gpOFuH*_0WeP1D!x*uy?haR0j^?4K-^EuBfp&En +1^`u6Nh>T`-J$L(?-2zw3*VA!3!a6q1XjT(gqo&pZf`3r_21KRZH8mJgfR7n+`t?`0dj?2#-lTL7=m% +3gLvnkhXh&5)+gsNb@M!_d?R5KyyV^RQE)2gf2b&C*Je5pc%*O`;v4jFD<^w?UU>wkNw8^Nf~*^8orC +sX*3mLO +uUj7JGYuBgIX{>Xs`9bx9J&$9S7y1werY~uvfBXKH4)@9BIDH_RFlxa2x|_D61m{*v?sTgnc +$s51M4Q7q>XptIp1F!rq>6AX0HPHKuOJpGkG9$46H*D-N~Gq}XMaItw@sb(3K@{sdJ=vySF_)lPeL>V +tfr%Axn6mjI1r$N!Z`2=1045d>H9CgJLE_Rj2P!}0oloc4AY_pVMFvc$Ie*dYXohI592t2|2zElXUz0 +!I+?*b$7jxM3*JCd{8_KhB?$7@E|X3t1I2l!waRfXcKAsG!X66tZ|pC`5$~NA*5J8^4E4tVw$mvSshY +g`5vqc8)fp5K|#!I65F>hv$7E9&kv-pP&ad?FRgFoP_wAvj**X!*LixXDHNZICfFxQ(>Yv!;aQwBW4I +W{JgExU6>27?-x85ti^Us;#uzDS+-M_?S^C3z6eBalR||i!!d#vX+dPrhZnh>7kLeeh^wA@-zJBwYwk +2bsb(w)#6p$3DFU-#RBf24`J4q;jBTf%* +|@EcN&flTXAYBFZ8ClLlFFIV|KH4S0{Eabq!#ORlNQ$S}99+2X$D7blyo01qTsS5p71|495wKVX5Ec0 +mN-L*j~d?zn^zy8vYdGk1Rv~^Pvp`2a|(8S+F;M(oRh+XvgVmj*Jw409<}~Nkf23VF4pabN5H6<hJTXj#9Px-u8SuwPp#@IW5UaxM1jk389(XCjO+%W%B4mpX7WAFBb|0Cq3LUkC9~x;8JeVQ{}ZfP_? +L$DqtL9atG`-v7|zAC=bH1Ww-p$lYSqL|ZXz$joB3YlJdNVtcgT_osCm3}uhexF^~S$Krj_GJ!3~3?z +HaU&^c_yq&Mp4#+4~r%=V)wO^z}G4j54tjot5kzUHUdqa!T#Hv2nWM6FT255}90jSu_%baM(&D^LB#_ +VcCTqJu6X1~~va%wXBve=z_jWSrQO2+uFd3=(r*2h7@$iTOege{by*oxi3k(h{(o^vir>sGZBf`HawU +m=3{3v9+>^{x?t>xxy^2%c$UJCS?r(hHaztx0W+!|p*2oklN4MjuS3CY{CVb61T}2KQ8S94mT-D$0Y3 +pocgvn)6Y-n}e}(U4$61s!6l+$P{c%tTGqF0Kb-lGYG8$N}dPM${LW-DMSVbh}86%!0!M)oCeS^AAn( +TS`UvCdN-$wkms8TggiS2M3Lu;c-&3jf^f7Bh@eoMo1<7mle+Z;v1+@l)>_1>9f0ArU&Fr5Zg+=@Z3q +O3zR(!?d(Q67iPQT_Y&Uj!Mqlc3AFsMGjuUjqdj!TlKgR@9gj@n{&i%WwoxDdNlC>yM*R6%{swcyX7h +Yub7))zuz8UFt@RkP}tlG68I%+PMHNwTG&-NztZD$a!RIFTP-H0SztqTT~=B6rQX>O8|BpY?ItEuEW- +3x}-NuyekM>ZU{K(E<0VgYNg14W%!K?zh)98{JR +%D~SR7U#lpC;;NHh`Y6W?VOY#tQ6Tc9*9IL+R0dvw7YVZjq=>)eC^=*$eg`#HUjHJ3DLNvl~JouR)geLa~K5I(GRe|fhK=quVhriP%$Km8bLkqvBe)s`U8BO3#-{ +S<{E*I6yp;xdHsH+r!%^$M3fnM%Ldhi#F$gcIO&4!m<1W6!N7*~AyLoYMrjvc;`1hLH&z5rp_X!e=wq +A}f<#X!&-nr=$~IMKee688H3Oaz=d^Tk&h07JZS8fFI&DyM9|P-@~?#7VHbcEQB@klFGDfzQ#r$$ZcI +0ap=kqdf~;=a%08ii^eJbchnh1AnyBmxvtqB-Zwac$9qutRAez_Y{kP4acRh +teL`XzWsv<|sfEQDr2S!(AT$aCkuAS=6i!gM3~4Op*-3en&mjN^@p>NGrv2+`j>iF_3vnN(Y7bByX~> +4IgPdanBea58wJ~tq9&(J@B^GrPL^id?W`2%}A{*&~}3M7tDohqVtjZEqY?HYrWD}R_g%%O +$h%dAtGRrSzUd0ZGEIoXe^Za!7hZ)gdMcj3X(Ur3tMS29M8A#ND!iomPpN8Vr8`|;0H*)1!@QJHAq0i +W3R;ke;;uTzVrN=|9YwwW?74;*Uj3mujbG1uH(-yBhQj+=}9eyJy@aa+O%LyjPZ8Ty6=-24L=V1R&SG +C2TM*|A=grNqQA_NVVa@jj%dkn?~=WEe5b7Dl}th@Zl96{v-JeLYd^h_Q%@ZH0~qnjSb~ +YuI|x72!$VsJlLJjX4B@*VRXa8Y)6#!OS@K?mhu-Ih2B798V{<6nrp9627spa#BC>1Ez@Nr}ym7Bdz% +l)R3~zS>2&X+5qi-Okz&>I7-K>k&MEfN|tC}}(gh?=obTkj;*?min;h5hE(2*MWSUdJ&w2x^R&XLuVHqt7{uI`fgns+p0%}ofz>EB?)Oqq#><7Fz} +s@;Hz!2|NtA^cKte%%jlHm8@MV4Z<-iZu|+DTEJ6jkdaCfV4kKAz|bR);?(xu0X#>QNCB~`Rc +pKh#s7x5XsIMDWyMlkfY}kN>ND%yIkPizfZu^t%2MCLIk`w$24sgLBnP;fIRvHC>$$!m8wk!$AKRB}{ +rL?r!;4@Jl%Ge&e^t-;(<9?21q6-Xm$|<{tV-z*vJs7{i$+!F1kSc!v3ic;&QaWYr&nDc=QWzJ&&}B9 +P09wbYQ0$1oY@3`i&cVvs7*y;M)hB+^F*Ajb{$%@gsWyMnq|?`1>pWxrioU{seO0@?9i*QqaGkCv`@5 +0NUl#^0+~Rlz-=LI;s^|Nwz<|{L4wi;2~EXF!mX+Lds=Zi4mpL&$6i5@(EDjKA(wV{EHa9DNtGHQ7&v +z+IeiryFx4>Jz!`5xD=CiZfYweWJq_xMLi3-6g5)YzLw!YuXJOYykz#LDJfEfgyY!xCe63CHRb82IufUoEf%)njR&#}tud +6hpKhHOI^Hl~2W6as200crvQYBAyrk{z=Hhk%a)eh)=;uj|Z${@Aj1BUXj-QFsOsyk$?If@l08x#N_q +cE*)Vn+Ti5E|+zoeq+&1a!3+oSKXo{xw_4uf1<1&YSTvJa54{}tN;|oP_AoC*aC=4@2?%ZNZKAmL}H` +x#TU308tu9nIoJv#VAnnv8eN$1jZh!XL}UtJLL##;8#O9Gg|yKwTJU}(+U`LRSO_IqtDd4gJ~TEda%f +UpSuVB}uxc-XSd1*LAC_pVHt8&O2Ud{53Nlzh1}hkP+>V%kM*Sta!7fw}a#YcxZ6_5QP$kYQYv01KN| +$8h2tTxGxmFPHe)xR@G0f+9h5?o4ctZuFy}^PuuUe!5oFcq0F(2V|h#xhM{)+a%wc4B^u?>HAa1_KBll&YdYLCumr&q?#MXz|-=U(x{gB=snQb;h>m3TLsl%dB(Wym>oEybF_JPLv`0JvPrDL2YYpnoTh2NrLknUl1UYAxf#{<*igkiXjElif!dJj7-b)3=@Wwz1H&U!oA+?l8KBz$!p^N15pL-h#JPv +ffY@Bq1vH0Nb|fbPEI?on#1orW@()j~hQ3rUB$T}v6qqo+}~kg8uRRnmk2qW2mNAfeHW;2xfXO9^>Sg +bxzBgb7cLO*qmF?d>#NMcR$GLKbyWnp4jF0_Got)s8da(LBzsAM>)t@DSuAF4K$ng0q}l!t%0Hgon=g +*kJ^gSqLnTAXMP$1V+f}IYUYEvGv(IwMVe+Ytmv6^zk6rxi{kG3c!l4AlUSQKn?O2sfD$BBYPTh=yno +~^f(T3`G{3zq*aAJHXBG62}<=yuR!R8z2s+2(5S3#GPHbyhz5fHmSRY=5kFFmCJbWL{$f{C00kpYHKG +6rEdZ{>y4YcY#AdO|BJ0m%m}Kg173$dfZda?-Si2gZi; +IB;2_S$ExN64=Six%T$;W@Q|b5$H` +_r&T>X+{-Mr^4#WW?QWZ`RB<4Wrze%>Bn9G(jj~ZIyUZo008tHP8^gf13*|c(pVB^YM0**27(k(YJ;* +a33cQDbgzOXHw;_=EtliI!``H=uvo>#Cw^dTV9zKy-+Wd1*Oq1H(R%mTWbQE#g7#M}CAuy8I&+W3gDc +Xrf>O@`1sg8m)G>Xs*P$#_y%4uC5+ToRZU_Vu(DF|S>zU>8RHYFJ|1KDGpikUr|A&0CxfK9&#TBnvRA +ow+Ac7)uwUZT20y(Pf^w21O@2Itqf4#XFefA_(Di7GrC+TRDn7VNeGv|#!WtuqBTAMCLN=o#N_OH-jY +q=$%bE$VI2<3->h9JoZ`CHvUdJxrg0sqpX&AE-J0Km%Fo~Bp#=dkiO2>3y!vdVy~zijk +q<4FPt9D=_VZy88X#$5{&8$GRv)%ApekR>DNY4tI`>|-9-i~bhC6O!>6QvG&iIslc|@V71oS;Es&nTE +f(8bMEsJ^)W?fPc)rg`?4{F%k1xD${g(Bym_I(E?~j%$?C%JU%$RxLbU^K2*?+r(T6#_6X4E1*5&}*( +^NRj2vqI!1)28Mo;z$FAIBtouuPGK#XGfDH<{?1#Y0hsAj78l32y?G0wP(<=Z$`5X(0r59MlESg4)uh +xq4i6G)@00g4!m&7HB>$F`#UIvNA>QJF-h2=^oM?(7cC*VaHOHD`oa@gh$8Kl>ra5=OGDz1@!_+owH9 +(YCsoGg4pu57ZaeO*;E|GrO_YAxKVOHD~d<1Gi`o^h09o)UU6oedapIcq3*@*Y4^UB{6!kc5}bj+OO+ +NYk#@W(Ob`jI2`*hi}!{OM77^_$B_8t^G%YllqRuG;)dTdwt~!!blF(R?f!h`f^}Q1dH4^2%dOU$mzW +B<@@cliy$)3$Au~zJG*CjhNA=Yv2WjpWv7?9$U)bl3As-BMve4)vSuwUK4w(ddB; +5*#3t@zfIi0VJSX)kZPm#n1b{bL+)RO$WgX#a6aELRES4g|90-1P565PAaIgehd8G8(dI=E;b;o=Mbh +zMr%P4?@|!B1%>Vl!>_Y?nXUk*L@K^CaKJ_wJ?TVjSB}uOtCudnY@6=xoORHA2HYQsLay0qjD?cUK|% +C?Ux8lKgxIbqe|VH1e~iw0AVY#55Vv%+WA!W*Vc$V0+9^w`a(H)6>^$pIXIlv1Lomc-95-^>?ILhL-A +n}9@k{vhg)uzX;mDTWVF-Yp&m6JMZ*EwV`5AQd_cqvsSg3J#mjbMQ6E2!8%Rz0g4gmM-r1Lwvku~NdQ +Mukq&|dwf1IU>=ubS^AcHsK)b>H1ArY}iI_$T;+U`C*NE12C +SfLsn5c0&)*z+W9-U-~sMWY3^C@n%^vM$>ry=WH{?zK4vXvb1x{a8d4O1}pBk*~z7kEIEEn>IE+LdkA +5qLl1oh|>4;qGXYF(9nw?l7moXINq!Q>0!11VN$yGZ$^}to1P3$#gctMzez5#-T?vG+*p=_W}$&&HOX +;!1}CQl4rU)vtC4N*voJCD)lLD=f$D>=WuSGawqzK=!U#3*YY1221KW1?L-alaYSU&-i{vFG6DHsDIc>|3-yJ;cpe!uOLBlRyHNtCF9pc~Vftd$5|0VY5< +Abi6nXZ3pnIpPS{R{+*vXf`|;;Nl+xTOUR)^q!5~5kb)ZZnViIgtZm7>9*{qLxc}Tpn4mh?psU{n2pS +=?@(k)g(7GlC5AY&EwHA<*)r(Qg`Zhj-*8W%-#-!0kZ2KV8?8r^xWX6;eALeS34*uvgU +I`Q!*Q$%HnVjKRKu5K{6qZQcT*M3fNK@mhd@Bh8=FiVG|xBWAxtP=DF~~uDLR{Zp^9c0I|~y`_KuI(y +urC?-rxc!+CE-#2Hd{*o2IFc$95^`Z90YipR>t~WP`vfp@{>;XAor)`aXYQbdx5}YOHYUN?YD*HB2_6em3=lQz?5 +;rz()6!E>@?RhU!xsxXFQwNn4+8Azz4#-$?Qwl?F**LM!j5j#3GvyvVt=(LnXO<))w64sW_on-L6dKC +VX+ty`YR%T>>zQ0E>%(0sP1$p$U;2X4Y?Rl#G^W*Gv9W&4pAl!9)AIx$s=j+y0L4uaI@>8GwYy`GK|a +7L%}g04G=pB$en^SH0+~my4QKA+88oABQZO{2+mHZU(nk%?K6R0J{d$WlYTEiNhj^3DrZ8pe)R8mP3w +j@whrTzyyLQAo@C+Y;0B%0oqTFGzt1Qv}+v)A&(~{o4p{jha8_>jaELjJp$i)6!?5>01&ZrhLQ}w-HO +!@BrLuWnN!0HOg_}^HJSsTLVZO0I3AfG2&H+x1cV~1Hh3DHMJ*g@;>hLjH?eaRnGQI|VOL%IO74V7s> +RLdYF%_Qs^O~N`v?8IUe4ShcN~-J&Y5MlNv;du74r49YqJ4_#8q?C#7NVjiA2&Kk&RK_PXr;>#(uSHz +|#HzCfd!Hm$)ZZV$dgaMhdg?!D;NmrV;=*>rK?1rbX9@tNsT{Wp3)#r;hMt9SZM4V{El93#x1R7&aU< +n<}m$WRi0+6P4!M+ +evC7Q%quTkHlBIT*C?nO*Mam#;Oni_2!%8AgK^z)zngLc)CDtt^x9PTZiBMGC7Kimotc9EHh~@PViz3 +k(q^?y>YS-lFo>6`(Wo{SCcVJWDWMzWUtlX)F)0At~aFQ}u?Xm=3^q_o&Ql^KssN3z~zhLoIClkVmk@ +DLc^Ti6pI_mcP@N&x4sxN`)xWGd7+ivxn3+nbban*MT`h2J;@Dr#+N;dQ&H9SR`q=x$_S +G-s;1YohFQK$ucd>gdVN6+;D2FUcVCUI4JA3YO8=@j~|kDeaMnF2XQT@+V+o3g+vu|2v4B6^uDi4_*8 +)`N=9wYaM+Ju?j;D}92NQ)a@4yR_dtN*acWmq=EskMEtiSas!z6^nREtOAFPDzFNickA;FokinnCP6p +)>GwjGvmav?TO^DAbu5b=vh>w6(aw#sBt)__Q5LZxi8s~AyOzO;CzuW@&5BPg4U^JMz;6ke&m+(1eR>r+tw{dU +@XW6oCdBa{sIaV=?TLTn_0fcI#7k*0!ecrNw>-fZAN4G85m^EG~54oz(#wiyRH&o +_zT8gc$(%u-I4r^tmXkk3eJ>dWZJhB8BlRV~t@W4M8l#=D{XChH#E-(_-S<3Ju5C|HP5}#YUD+Q;^)@35Yi2Py7`6c2pSTkn +MLq);bH>$1E}mN6!Z`nuQwCehT%(z~JqF1NPN0nN`@ZzrhM#b2RiWtt^FLi1Ptp6glWAH5{IQB2$L;# +o7Pla)fL+od2ZNu~!&@6!p9TT=ZtGd=l0W!okbgTeMpb;0e!b88|yYs)09IK-#3~Gr9hHG)JGS1_1{r +g=CZV8WK6jKi`kUA%p<^0{s2n2bbdS9(@SN&|v_O(^eDA_dYL*LZ=PKzTgz +}E4f^~Nb4L^#W=M`4dTa9KSNrXUSjN`9woakl={(0GB;y8+@XA%D@n;TYQ5$bwR23#>5z0n?d-cKzB& +~-(y}@?6s#siO;;aDyt}quepO=bIt!l*Ei-|ZHIN8Yu)d8Wz*;*$1IF~^Ug>{}rVpU>n2p4@@jZFeSR +Rm;x5XozIp(%S%$IzjLOU#&3%Vo)<6_1EKW2|scDxns?6Pb9=s^Gz;zM3j`|WGQabsGfG!$_oFrgd+G +o6OEH+FAhozwc8!MZJyXGKqDUjL=Ii}bE!li>7)M%Cg3w`U*lvJ2{SHdEjlxu}67hz2>7QVIj@Hlvi1 +0uV16jven2>wFC`o@%3AJ)g0pnL7*g=v&a3kyOdk>(P|ZTnm_F11zF`;D_{W>oQ1|O3#6QFhH4^GBB( +|)n{!cRLTQu{`7mqqifH8fpCF1rQR+Z+XB0xQ1VGkn@FfF8N`7=yy3VD^HZMffg?YxM3akvp|m!9hr& +iPV74aM0&V}mdA)RwrV_hVv~MkUhsgUQiAaOA_frHRbZ@%mPKpZC5AVbCrSq~GHsqM6pklAO64r_Zu5;i;17jj+dged4fejMGMW2H_JhrE7yPoO|PQNJV@!E7qT +7h;s-(jHN2~ +`7;CwY$nUJ|cD6%37RUA7@S^+#fBg6}O+98-CacFR%2@SSyfV<(q}-}~eI6&0_{b7?)$?IH+=uP4)O+ +9&ev#y$QTOtw3GmRDK=?Kuz7fOowB2zrLk}AsMU;?6bOmXI*d||*HM3q2av!oN{ZXzXapVvPZ0pewTD +v5;z>3-8&|By+5S?$x&~blO$5Cq^!GlavaG)Ts{tZc&=2b760tvtXU!c=~6M-ZtW(hs +T~$`g?iqm^i|I%D?mytN&?y&kJfMSv9(B($ck20|BCMd0`syCxk1;#Kq~t!w#Bw +f#%H>fZH9;Ipwb7soCsYOE7H&`AxQmo9TY1P$uWd_8NNvVdDBt#0c7=ZrVYU9brbOxmp*&sHJ19K2^B +%h{>qWJ9X&-_P;o_=jkL)efdg_jM(zD8rE3L45f@PU3m$Eg6SxN4BtX|4;j*;R~bGa`}KK!Y`;NghVY!PT__K +QrqCyi+S$od;ElVhkVJ<9z|)@Dj()8OD#O`9nH0uf4pZ6L@_5rkS{O4a{++m~}5j)=hF`^Ebh?DG^cQ1w`x@kJ +;y3WLrcaIGh^X4E%vTAP1JW=MM+jwXi4~^!bIXpCkhvxH83J)#jq3%5xVx~;@71TC~L2rqg7(u91(d(C_1doNCadavVMC^Aam|4EEuo7wg*+2+qGF;(N%na7mu!@l8GwPJhWbLjhxrkvO +v}sJ_mC&H#y7Fl#&Befzj=pPf~!!6yID&?QOj}co!A=lO_ZQ*zJSWG%WOGGGZeZfO}oh>L~OMUN8lZz +6pxM|9q6PHbUqZYh6>X3c;oup4shahZRjp3Kxrm=Wk8^q`TNPD8 +wn|Z+(dfEm!)h0gw3xOZjcqS8i_qsMNn7T@!$zLyv<6C5Ni|lGC>5F-~fF;X5fZ#am*g`Z{DU6E+GZgHp8J(*vvh=7V^XgDe+6JQ5(L4L;R(OJC~l6 +O`gyn_|ueM!rZMC!3qHYs+%!%p_$MKQp;6O?bJyCUxYmA|-V9`dLSikfd%hH+*9Y +XI?@pKYChC>j`BoImzcV2>YSy}^;FdLs<$*}Vi7CW6rmA_%p$bTt4hdxj@(N;kHOZ!9-Z}?@^qK)?Ug3w#l8-#6Fh=DufH)o1@8NjtP7?_iKPd!80+o7~SNoqfsP^*6H+x6&s1Qbxqp;!l;B|g}4c!C +@0+8q=wufxqmnTb=w&L7urLVD`bj|f~W#`Vol$LyrQh$Da*aWk>3s0$f7cXL=r;&km34DGcb(zr12N;`7Ysqa+HQfY{j;PRydnh+qqWyBaWC(MpS);%a1Lo?dXGh~t +8sy-jce;AEzOX{54(5`6^1OjJ8{n$hZdzld*?xL3KiOXtkH0+dyUKLW7IqmZ{$%1BXzX4lWemYRaXCQ +G-I9mKQIu_16Q0QUoNl8p@)XaEWFl4eEw!PnnP-v`y%83=3i=;LKEWw1=YKQGg5rP8J6Pj-vi8f?kmW +hd2zXAc%>N+Z9sngUJixQ(RB}bzU7wON)x(A8k->DhlEyczYw#bn<|IiUCfnZrCd4o;r^&{Y(7b4rP2^IZm3)x_4qlGFS`Sy8m$kUeE)qTaCNg2WuDWo^2m)8dG9b(Tq9=Do`IPTF0%w5O>yVW&Txt^yhu6R8Q0`Y&$v +bzlQYevj22hsh%052t80-Xb34>|dpdNeG|A#M@AhVH37mzF#pR?0cFCc;uc|>DSZcF*%^N6<-D@ce{~ +4$N9&=fgp=vl)5shZW!s_)Q)fNl7LR9y|M@qHDhAM#Sz7PuDo#GA_+jMjAQJWlEW(Q1H6Av{5nhPJqn +Mr@H6ED=LM&rRIBmCLr1A8+C=XA?^L6OsjlGS;XR?30v`I?hdpeXq22IK?Z;|2Y2y@^|%3G7jv4HA9Y +>m?F)9f%^B;G)UAd#>=YJl)9e@U`9?Jt8`na}%?`N=ES#0AaUx5w;&u{PvJK+-enQmew|t*AN!66)@d +8*M7hVtqf`{!Q)}qnz8D;)uHCJan{WLL!DX;{s@3fFmESKlp4?@^_{VTQ? +)632wXe{jyS(dv84;x=uZnED&84lyITA6{neCa^BX#4W=!ALVPhtmZ)8uc&nT<9S7+J-|)tvwhW(mjn +hr1TFd(F}dI9y1I*6Bx3U8%;! +eVSg|?okS||F20T7mK~CXx$2asWTr+t|CpL11g6W3@!mHp1JzvAW*2NE +O%2wdt)_EPmUd~5t9#`b!*gJzT4JyGiyQD=jgEW*HZ~p-b1f1gHzm^JN7u0k53*5EW?zdj<9NXnos#mu2+r>*4^Z6&v~+zD+;KbeVS5s725YEvmsrS#hi)K!Wz5C|S4zV2<9w_yNYBcRau7DyCOUucL*j5R1U|qE!_+(QE(O@{ht +ONP1@_(@q?4`hr8|x2oUS`gy1Xba(+`HBq{VodK3XEBzluRUlWVc={T3OT5aX&#hj>8Hdzo2MB>{#j2^m&#fy)ZjM|^OP9iY!hZ9&MYt2O +YP~*Rtn%AeaaW&B3q}!#t9`SX#EW>b%465_Fb4n)0))8IV$*M669)jN>y${JM%OOk$ueog)@HOJn#SPN8z+`ov=gu=BwE8$AYhjTI&mAP85fu&Ji`}GU0O_mgt%ZaY7w>OI+q*5%j +dioF}p?Y8PLP4iPr)JP~t>NHF&}MfAy?(K^0z`ZdP?!6)KJ{He39@Q6UGi_1JB_7M&af6djlVtF&Y>= +esu1?~~y*A5*I;=7P!^+`|o_w>QN7yxu^zCLhKV4yS%yMeQ@A8xjQW3~}>eT(gKX#Hhou1^o9RTEHLi>dC^R*dOwR +_*0KBM8q~6$G_jlnkDr}r_?T3d~Ao(Ut;+-e^H^Oqt$2LAs03IM(*$y)!)Mg*vV~4w#nv+wsy%ZDk;F +4nbkvW@~b{`lP`Odmo@V{HG-=m_pDc0OQsvWHfy)z)?w +sgiuMMqK5~5-a@2d>tO@n0t3!ftg_Q}v7lG9xV(VAz&NTs%LM06PtgSEk?)%FR=zE>dtHs~k><;6@r&bkJ?>+}Mxkl7-?eMOz+$QFE1}IF`XkU=LuxQ%Y@p4@pe)0&sT=GumEUYD<=Y9kKD;Nh!mqrJ|g3=TePYp=75 +}DIGcv2Cb8R-wI%}(e+_%2v+^dcRpc6TdR(T$ +f4z%|?eB7=H(I2vlAg{EvyS+6I+K5_%A+Ai6g%Ao9>Y#aH@1<}@ZVe3h1V@F +$in==`(P*BXNPk6@N9*@Lr@+b8vM1vUuU3Ie>q|gBG&hXKPUk|ya>Fs;tv&qr-nam_|q9^X)8_15W-W +q4bJ7fRu{hxsOj?R&mwSX{lw;krP&6D70o%9MG$d3FJIUU +g4smmoz`bX!msYoC0DB?j&B8o@%d<^gJc^qR9mz^s> +Ib^q*uDI=@76Zz-eUfB%fYmDvGG7pTB}uh^-S@ISmQWZdQIY;AMNHYCKYEcV_{-m*e5xa$i=WbO$hWz +eJ`IhVuf-H2h|AMQ2Dp4C)H1%^}ODdOG$mz<}BL3o +kEOZ*O<7Hq2%wIw6omdSHx>PK`70n+@FUE=GFCy2tQ%RLd?@S6Ll=`x47TsDpJIi+7TeQK;zVx&2yyg +Zu=+Vf5Vkj!D)}Rb8E%ylHhKS|pEh^oyK}jXWwAa`e-a;7Aqsc~-&!sIGcbxi5q-8Us^=`v4T9d4^n(n>dU2(Be9jtSmShr +?qvFcs@#5NY6Nbo(aN%Brdc5yL-E4#dP^(evS`T#=t(VQM`ix7b!v#%M0$i)-;+FJXZjR0g#=39HRnM +6NSH#|dHD$Ky{b7DO_D5!@Xs7mfm`Fz$(THeYi2jmE_u>*dw>WAmoMl?H!(3z@Bs?U=9Jmj4RHy2NEIK68=CSlc?|)SHfm1hfQ+8gqkA2`G!g$*~f5L +p66!bzeNS+($6__128n@rOScTMWZXuo!YA8;}xOHJ+0BU5LB0Y_Vo(pM$1-C$+|=LAr#wVkk=@u2Q72R>0SdyQ7py`@&6!?d1zT^^ay`(A1C)9ihXjD+Ovm|WDQ8b})--HodGV48MotlBVoFk~M<+W0!Wx$?H1K +-%~cfxx#u)`1r<_(FNRPN1IaDDVPDr%hy*4%m=Br%gRQduXGM)9}YCA4D~3UOM?u9y<=L0~gJ +n<)q@sA#*}X)`H(-FV&kXOJ?e6WyhChxW#<*l0hdI$*y*dciDm(;Y(TQ1POkY?fUyX)Wfp?(Ai>Ms}0 +Lg^iE(M%%uV%jjk%4eNb&+QYkf(Lfs{;&UJl(@i7~@JcR1$*5aza3|g^q>n>3w4dzSRgy}#Y3|WRkAV +?y=GUuSzyl|cOCDsapQPHNOA{D%mDH=l30HQunK_JObi8VF?OIZ)$Fua +4$I#uOyW+sIC0=!0hM~;CN4N5r)b0^X%ES1u1^RedN`~Rsvy3bxJaW-VkfBsy+%Gr`95hr<4j7Fg5UUh@bb$&^?hkXMWTxNOCQvb%e47~7joU2<&D)qT+rQ +r(1;~{s3(cpI3$~s!B@k;ff&1&6Qq@?a9!|~D*?1@HZ5q_LSnGB*v@IJf5m9=v42AA3yhe*t2%h!|CP +IJJD?=}D>mpx(??TvJEJzWv*O3_m(yWD6&y$X5@O_Piba@l#3R$r9SjXU+-Fc$siQdA1z!7IWiS3Av( +shxV?f6`knD%!{WO*U)yKEg%NfL(iMdrUNkoq4~TZKq3GXh;t(Mfnr+!K}XhEH@;@JBR^mz6a&>Eu@6 +4NBI{`>A07o9Pv^too%ySjJma7DqBqFvPD#~h+s@N`znGl)3h6)desSdCf2?1uaGltUcA7S_l^c4=3J +Q_^s$rPx{H7&Z+#!4Kw^?XVggk69U#dxLXsXpW4j;b2=KdhcUlDhNo+SH9H8qW^nuzN+j{WdHfoq7!1 +0d|0vxKn&SSMePsX@yy)a=^crNSv_Z%^9Wx`0(pHuN|ndc$PJ& +SkzIve)pkE^>H!)SjP~PtIacyPJ*lGL4<~v9OZj +RTootO?~wObtG^@%W{DT`vq$HGh>^Uj&7#FgFxE>hw8dMFrelxqFR`)8EARm{@fOH)iooTzru~i*<;t +-bEeJj6@Nd&d4UW<4)M><;9(v&2x&3%3)c3b73yL+IJFeE`wA~>@v~ES$5kOZiv#C}?(gJ(k2*qhL74 +}CZmr^d!_ca?;I;lc0bf+3uKfn>Z(Cxd=@v>m;Le%xE^4ejZ${4F5v@;8!qIt3k>G6hh*hH{w$sDTdD +tdjaO%H6P|h#*RGbjYuTH{F&!|V?R-oue~r?M#PSg)8-!diU?$0POC}^*cJ34{<7#!ub|q#uQ0@44n{1VG +f*tI;{}Z?`vB9vLhG7Lt>7uBY&1xCB^J;XW67TIvF=M7g;k(YN~8oV2B@7yBZ;=G+*0Yzm<^D*!d*Ef +<8fb6X$o02`d6UBa5f%kXvz0ST6-oL%g)m+#X(Pt9GcPMVHd+o@m$waN!5GIdd(98ezq`k-J}$nP1LdiZt8Q6i&66Bp%9CiBeBe8E2Ow3mvQ#%)kDGE6BSInL_sP1raL9?#!WjP1bm*cBU^f>aoRHaW9irqvC<2b2?S#SsLKi{x`F(H +$X(4A$b%JfSC@p7Nv5EGbrN@57s$GNwzR`%dHZKB~`^=mro>zmIaelfMBOhus-laqX?b$c&2Rr7$IUm +4YYquoKq$!`Ur3Z+l8P{%wa!&i-trS6JDN}``bv!07^n^Mw-0jzH@wTOE{ +N$`v7?(Wow0j`0EgW}@-MeuI%u)8~ZGNuAbddBAMXvGPzLG^(oUaQ%|YAcLq68I;95y +h~up+2==yX?n1Mq)=%w`kaIhkU)8S%NX86e+XnHfHN-Y^1vi`}kp;4X>!7XBTqp{r9`hx!iHLOx^ph_!`BWsgPeGogaPP5W^@loY~3Vr?M1n$9ZJ<2jwct;5$Ou@Uts=9U +~wXjueCn>=EW{I|B#r(E|h&+ijx0O55U<#sI_e%7sVm5-hIRmrU`Qm>4$5Tior&;LevT_(qlH0p +NkBPi83as-m#iEYB32Be;|i>%NfE0vBU^uZ_#BUnQ~FmsqmiM-XiMVL6Jh8+ipJ$6@oTXsv%{U)0VPr +b{pfZ^yz;RDKL_$x{PYR)R7dV?^kqzkgy;$07ai1$O&JQmmVkpY)npMlr_yse(Bb|>04SWX>@k_0m(a +t}vw|ZYykwIjBAM+4)?m4xBh@0UqITIRx~Kzhgq+2%%RUOMwAXwQ_fz|GtEk)h7<#Ci(8wlV9~tW?HN +O|xOX}yX9Yng(kGW#!;+fc4$oSQ5IGS1Q>gty@>c#?YY`T%f3ge+;mwDW +NPA{9X+Y}SomL83#IP|7--$IueFg@{TkqH1;yTa&|^sjFDu4H8F=z3Kyg4%ROCzCbf*>1f56Fse-OUZ +PM+Db?$SdNIC~YvDFZu6pH8wR5C$b4?~+u#q)m_{#tSZ&w{(qz9o=n|>cwt=|p5COseLKLOCQx+PA}b +_b_cVlU_6&oun;dDvHcWSpt6BPan3(Sa_qiBvJNiNqCFbmFX4G%NAIwIu}d+&NQ;!}Pxyv58>oWfnsA +7A^5cy~Zu^ve3k#Yy;g9(CaQ??QC6)V|~8vhdEZ(p#Sp<*^fzSsH)hPVICJ3xT`~=6Hw(gmYeyE9X9q +D&4&iDY_c6M@@vut;+39_0g)A?mDfHas)sHH3)1uiI=tORN0xX;0{>u8jvP$B)D5P`FR`K-FUP>c^IN +dXPjD9$D@vM9yyr6?I^jUnxb*~V$tEoh$Ss~v^%&j!kbe}Nth-q_yFD8iZIjkkZx}1G4@l~E0}ZEL>F +bUIEeRnk_==8z81bvm1>qib+#x}ka}OJE2qZIAc@$cGx`ynGt!Php4@)^j_qb(C=#kn_yA8QQSEDl0X +n^K3^r46b2SS!O#jXwJiIV6x$n}&tGO3OMUqQ96qQOahc)k(6MQqY~v@p7865ZWg9xjwQ;$9ND?Qtea +?36j2)cZ`cw;WiAS7^qpMQX`uRuhEC?fVDT#UNu2yz<-kBgP`iVJ}w{E^3Y3G_^xp@F#u^f0hKR2{lZ +RGtY}vmf@G*x{qI$y6nn&`eK!_4X>xK#p~(olm@yUxHhv+pWwz1HZEZIt^J~8Idl?VW)h017*}|Fi+^3`2$9A}LQ@`B;J9;snkIidi^D%90WI +lRs!v=-E^d1Csx^Ix@B-@;EW9EJ33{f=~6!_el-Po1 +%Oym{wdNX@=6P+TMdXFEpQ7LH`_|L%i*18-A^J*)Crju%WOMc$EdAJ;TG=sWI^a-z!Gi6-25w!bh%gK +lcbuugFJMycWOiL#qi>*$c>E}4g8YdH!0)%#_qa6h5^5phWE3;yS5sz6Wgfo`7hsy$bzv5pYo5xu?r| +>r=tkH3Q@e;nTNOc;(p&p9|)XY5d9X}k4Nao4Xa^k7_YG!-ox$PJ-*bJ>38_LW*>++T=|M~hb#REd~(wQ9nqKXG +8^GdF4Az69#S>nv9!|HM^}X7D6buev0u{X8Q(!riMk^Hh+Zh77VKi%wQ&=;Mo@VO@ZrqQKt#g{RSi=h +F~7VTZK?xFuC73Od;TnwGDu6E5b>zRZ_o%>76|TDP|umWiN`V=e|#c(Zu;aC^s#_AbdlCZ-;M0mK{R` +)>$0MegB)_4+>M1&Hle-4_y+f2n*hRn3M|RptNDRJ+$A6GA-z#le;CnhqEkki*1n3X>9(zkX${M`*6? +vx`cu%#f*E+l1^Zs6!rBuE5xKcaF`ZBtujq-3hJt(S8=IAH +V*%SsOBeF5n!h1tJ~r$1-U9YhrpruKnt*BLsp2bW#}sFE(YE%)EB(f!`ZOSy5WYc{0%tn(@;x_yw1Uz +c8MwFjH9$T@0A1E>5!qMzMTn9$ufKIP$K>N1wbA_(;eT@_%m%#B2RO1=#EH>x|rK@ez6Ysl_oH?;rFP +W2ae{_U~HyAZFBE^F?C#qZdTv<|=kM^n5Lb)H*xr|Bpw*uBHVRNH=@wwpPw;`j}*+PseynD6(~01F62 +C*CvJXFOXT77w;ve^OS3-o%iV0q2R~(P@l2b#EN!!Ta`tvtJDc~z1%3y|^ql)GO|JjJv-q_gB5*&~`(=vn +==5z2fjrHU0Xs-2cS&#NipOKCmqJ6Nm$viJcJL>w}cWeuKZHppcA~AdN&%!ii#D3&hAlnwRkIZtlwQL +;iL>-|{kY^Y$O1FLNZfAc0DM{|MP&D+@`RC5!IXQkQd4VyR0|vhhXzE +bj;TrQJ>?9)1%8Z(*Lqh6#qCqarA~9i~Yv$3+F`QLLq|#DEon;}pfCT!+@!Hg9lT26j&};v-&^I%YHK +N?p^HcI@(P<(mTO741qNIaFXO%^4A(8{v|1>MGh11lx9m^}a?kwjbY+Fde#xT?S51NAOT4RkR0e4g*IOt5?m)fSm +FF+s6lpMsZho4*Cxt;-JsaOEHw^TQ9`EVG7i{!Fp%CfNG=*k0HFJryfEu&HLrYv^{ZVg@9QGx`{XTlH +P+mZb$VapQ2i<2zP!B|3Z*4Ty~vWFkLS4p^<2pvEV*AG~kr%+EF5-1B5kBi28Tu_(GPpo_gh8T9+rt0 +SgBj%-i*EL`0jjYu&;0dU)5(JvY}YoE@6^Uu@m;4aeZeh%MyJisgUj+yk&-PGvysTf6PCx8ulA<;a<> +_{@@boF^{W9hzvuZzj)?3{&2L4%RphZ{W86yuB}s)34QG5V|(@Wu0DeDUvQ(Y8-Um$-v3;WY_ +oh>u!Gg;F#ZMA{lH1QKkcMwsrUGboV;HX#4hA5la +Nakui&`KE2ro49EPLJ@1xT-2NaZ8llg`{XZSX1q@>~Uu%dN*(z6ON1F4w4*CG0`-16@LTlcRUGO&j^{ +6>H$I$Aihj4q=|JZstS>8uLO0!Skr{2^p22Rn-zlmL9GaB|s23~Ep1iHiWUVyCb(CZpHEV>R#Oqaw7$ +0gVCKvOT8gnE+Rbb_Bz|5*D#7x04sVQid#_#RjHrP^2*uFtiK(CoqyxJG9m#SZ+5cOboE9cq`(Lnkgs +t_y+M|D_W@-iLO&@F>hDU@vyyhS&u%fg2G?Kre#ps2AG|$J5k{HzK|GAL_;T(2FyY>kK+9{r9Q((X(2 +-aJExs$I#)@hgVSJK`Y+Ovf#?jTv!|J%vUpdcjoBYXlKq!uCsyFy-`!>KQ3;f7NdGC7*eUt{vG*--Q +CDgIXSm34b3i3QR7ORmNJT}%&}3vr2OJV_X=y76gHi|+%qW%@6llSbvU1DqYGs$*ZQr%KR$HK^XqISh +nORY*^`p_E8={%N|MxlP{Du*+diULZ-}nD{_Xoduo^yN7InTMD-+7+nKDx)E(CxJ5x<$I$l}FNQR?fB +7u57hbz3tT3u535G9N`Hv*V^07>r@guQv9ZfQ+1aI(Wf%ds%~{foZijSg3y(Zvm9~yTS9(vzaw;g&?2 +ecG-$7hkP7EKb+6NeH$}<$4?0p-8LBE{|D)p=(~dujE7Bf}r`-+fnq7SF(r2^J>~8hMq_yqVJN1Z?A< +9!GIy9E%@wd2J-B~&2T35a4uY8@>65$+1KZEEehJFl{XVP3%mef}F`-Y7>Jdq~%K~I>;{WnjL$$i-4= +YHS4dpo1U>$7(aYB2Hpo}80SsrAlr6X?s8^NIey+&uPDRrN2r_9u5?Kf4oIxkxnc*ir0wKWa2EPlG8&a}p0ZiEwZmgc<7@JdS`li`)GA}aR +ZJglsnDOCEy^aK84Jt4p&oI$|*!a>dd#0gyG%?TS#ce9crzceORQSpmyb9CF=m+-|1aYx$uo&f4@L`ybQJwqRW+V-GMuB@+J*=VSKge=^9cugDBFo9~Ap(-4f6 +L@dpps(fhVTYgRCJl|2)Duf1OqJ&XmJY*jprM++ml|Hrnrn7{K}S5IbmEA|WWYU^M)f>a8r?|(hBysg +&|Td$OWLn7$1+%xOS(&Aaih?ut$g)1=bNF5bY`QbIAf`fO>2byJxX~*q*&oOlqR!Ky_a$@rl3YvLDBE_;TuI>Ra10*=$I# +I;p@HQlh2K5LbrnMWmLs=HqlD#QyoL&Q%};+$PfHg8hmcOaeh#_BEFnqxq7-`HNQEIs@q0#d4r2kk}h +GR*}ae7@BBWWWh+Nd(;+`NBqMMVhB8w0Y|S%(*PPLHQI2{cyGL?+?tmS<<8&Jo%V;5qQ%YYX3~I|ws_ +NavOIsjxC#0C%4g6kA3tet_6l_l5b%ZpFn%yX~LmBS3_?b8rcqDR;76n7OmdlaPlxx%>sr}(2{FGG2qREzq(B{g1PkRE`~mzQR;z^;1?quBt*S)?cgmZu6z}HQU@DSQ8H# +);=sY-1McnZ4E)ru_S&Ox-K9DDdEbT+8X?vh5|P%DiuGeMWn4Ez!@&A0=P{8i3>Kg1iGdR#2@Q9xLdg ++7a43NX+p}n9yN^13nC640cH6+vMdmfmOdYOLL*~klZc?rJu5_Sr7tnHre+(75xUJGtz_HIQA&|C${z;v;Nd~8eO{0S5B*$g{_Z6ugzbK629$S +NAfj0m!eCOae9C6L4-**BBDLiQqIY9raU+PKu>A2Ze{6hp?Eb}pb-Nr@DajN8xiExvc=D*kaz*XF2GwzS^;Hu6i{W0o_NX`r|T%7AW=ZfCyHNLKIV{i$}wj4EmT0!HWK}WEg08J +L}Sw1Y9n2LB%Eu<-BmTA%e_P2;Av-FB42A5P$?gc*H6dNRgsAw +YN02>FnJ6GC=E$EbpI3Mj7BUSnO7UafkBdJ(N)C-e#hkcTK4mNEiIaNiZ_ehrcKPR&mKkdsn +8LVEqG~VMB}Cur9)?)>j>JE_gZ!{NJXY=g+E)SDBFHU1N1eWRddwdcDnmpY`;ijL`=(2EFSC?YrD11tW$T=?|J_F6aPKOe}Ck^XZi0L{@cDYZRTvBQ`=bZ1)g2cG +&NLKlNC$Nzp)fA1AzHJ)rq}gy_@ +;Zi6QeU5xvezX)ZbflrDHC7$|=*y~wnOZ~)oBM)+thYhd$3(v0_b<8G|xK_70$MYK+)b|Kn!N)2SR|Y +}{Z&LUOVyc_|1L;Om57Rbfn>jvB=fX +OR*ubopL4x_r;`_OH32ukB$?jOXdm^`1X_&zkVdg-K+nyH)%gav9-a1f{GuSC&AIfd#cO9);4_7nt&g +hdYuu#wUpw8g1?!8I@;LSKq9}qb9mBIK4KYX9h-SO4JA%vsyd}w#0+!hL;2S6qsuLNx2@mQIF{iq#^G +(mtcZhEPd;$F6M{kK{B+UcK-D9rn-H6sNP#{tUTklD!lTHzw0u0;5OPb9N-Sz3Ro +Nd$A|b8@1BReT~PT$nt)ou&a~M+VrbdcI#Lu+dm~<#)mpof+G}PlwbwVX7S+3N%o(j_xxcZv+iPcIuC +wY2v-{l)cY{gYmzI*kbxY7?KdmHujG1BL4z)3LXWd-g3P1M|v)f+oK8^XfE6D2BncX=7ryrsoTS#Wc( +(S->0-^FVy^vMhp+==;(19F99$jgpnTPj6`|A2tzY!`kGfw}2$*EuIw5fHrVG&jgFj)02Ljy4x=*n<^ +I=x!i+^SshS5(TxW>WT;Mw?&H>OW%jbr1 +d)m>}=9bUnY(L|R!y=`;v;dAHsOj-f7l21C6t32C`aA~9!5sviPlwWWNoZl26zHKDHxS7d&Yx%d1o##}wVnzI7CJr6t$U{f`=A8`pyod~US#*Z +`?_4*eZyQUaHkQ<>jeTCNwK3*)Egr2}+$~uo-*mRR&D9Of#q9_!Pr+VRkFu?tK1)5w% +M<0eNtSyWm3xw?nBu-kaleoIJ@GZma-Ns)Tv@`|KF7+umu2Pfbse?i<5)*^+^>+KS6*Kxl(i@?3M5*2 +Mj%Gzae*W#_X{LRxr-yAO0BR+Qz`^vRh9`PTPYUET*WSs9A&;h7ArFalA>e^#G#l3Qm&*d^J?)|t`s= +kW~mqjPPtZk37q(%=$Cnw{43{{a-7(vv=!t3NvRh&U6Z1`AaFXvt2`}m>dB +M`1x{xYl??)KCA>=D?R=~fIPJhHMFOXzs7j8&xzf5>0w)!BidEpG5KkGuv_qL)($WqsbnyZwJ$6d8z| +#m1Tk2J2r?917C3ed9yx(z?Qe8z6csb$61kSHrYZ5p~%P6}9zJc&<0^daVGXh^s_-27WP54HEZza4&; +IvRzRtUVFaEHJf3C|aJ6XA0OzL{{F!0D{Gk|ywG!jlEA5S}3LR>J!Vyq)j}fzwvL5+HCr;q6YrXTnbk +Jeu%kfpaCChXtNMc%#5cQ?~M&z*7j{DsWQat!xpvmGDghCsp3cdV$X+yh7kPggXVknDE5{C$+}Pe1Vq +}o-ObS!p#D&Av{Ik8wkHr;F}0H3Vbu+y#)R=;d+5@CH!2OC=0?{%lMR*E7+r1VnIh+54NU;|8zIMCUY +MTF;x$n?}W`ZVG{wH7Gd+Gu$c>+xO=$GMq!f!n +6~ZZ+@OQ6?RNlK=TOYiM>Hof;+5fU89<;gl(UwZ=I^Cpoy@Ida;kwSMHh|*)qshPyuB(6QXktm_q +Au;w$>P_X7~yJ6W|7{oK(y--zlxZcQkMO&WR{ITqBRr$8p=p7l=JDqzx25T%PtVh(Hqw8rCWdl~;L$L +@SBp2kdv>=zb0eGlD1F$%E(=7`!a2M(4yFvpg3%v?9tkYc`5aPO0?5M%c^_AS}amA5DmqECP$sMnk6RNv8MDMb3tye%JToZss6B_LrP8)Evzyy< +k#G4uRAQ#YG||?_F}>!V!vehP@-L;kU9#1@){?K3mHL)&7tMiwJ5Vpt;{~{R8R+f3hGUswn|0cQD93W +sk~5ZvbY*NVOAfm|N643pSEIM8eukGCJbJ_HdzI(6@=qJCfM9_p{zAqIZ%SBQakDF>cJ`)zAZHi`Q~?!8 +s+F;&xm>6HU_Sh=)PT~-Ab1V4jmUcT9_cxAxNQU-iJ-dV~TtihER?$BhwHwzi?$M5j2qm%B?Bx*KsiJ +A>QGT#uH+5@1Xl3Ge`z6EoHUqaths_LdRJ1nmTGYoUHREdwE^g$u_xnx5Ni= +fjkoET1-8*L$1W0DuebU)PBy$$6>Nm7sX+;#LdY?puQF6krf+ucMhmT;^MnL?)p{wBo-E;a(*9!!AC$ +1FoA{g=Pf0-vD%nv>qZc^OiP$AvQOw<)lA9yytL>YLW1zsqEQ5 +&l$YhC9xbdfvTfyO1w$pqStzLQi=K7UJbv1SAc8xggi_8M}y5M@Z*Ti{a&ISar?j_hMMH+&h(&A)4@c +4Cu}0qQC~zx+(22(WIEwSm61_`j!-=5q9N#TciRlv+`{c2(LGB$@bd*e%#qiGT|-rHF0o%t|MU4sza6 +Sg+d1#7X#-ft=mh4f^HH4&*LKCLDWIDyX3`&?d68*oglPrD5WV|ZRFd6G)VYi4$x{%e9L<9jK?TWCig +S0;|%bGsEy{7NII|C0AJrGzJ)Hp+Co|fG$HU)LI|At0U-!(sXDcMe!%qI=J@O+68x?)$4~c6)8xKSEl +;zAdOWEa?uo=o<@p|7Y3~QlQKNj*NMhbsdHiax(m2@S;9}lyOEGUB*>1%ZMD-)AEI3P4AJ1@JKt!b%e +uZ53ly*;V6cs=Ox9gUbH-*b}Pig07Uy<%pdZHS_sdf_S4mDMtIBiP((PWtRBRbT4A=CZFrDeL~x|Hem +(?q%t^O2&i`VAq`ZRQf)w54yU_86*q>-b7PxFR)4Nc@woI5_V1Pipy*hTRBL#kobUbWK#$GfpOrNUc# +xwtLl(4vFsH(#3Q_q8p`2(%c?B1touIdRBM%k`?q>63jEaeohE-Z&RZ-(>WA$_Gb41AJ(ts&UBNfHdBQbO?rz*Y#n-(ebr_f8KBY-<&-fe@QY +Rh2Jw*H=eHQZ#)i?0-94Nn$R9gD7AgXf1P)u!a>YNc|Nc1YT@I=Da&&juvYH&Q_c*Kt-&?IJ^N`49tk{dw>jP+6Hv#)@z^&D0d4T{8Bc=A-DbuNBh53=n_7`j?O<` +K6z7JY>bCL$lwfCU2W64lGi_c*OA&6Tfe!1BDd2%=*g}rXd~7q5T4*tDVMJXpNmVh>(V$j6hE62VPB4 +a`AoM!zq@`mvA1SjoXd<|~t?oLSS+0~uC{d21p8X?Dz=Jun!_CFX}hLe3h# +xsKGZu=8NCwmz|^r|!w8((gy>P8R)9G!`wF)4@YvB~h#em+1cHyP;0U2r3jxaJTd-s|=&lYgK*6Cc+N +)W&^2CFsp}v31f7`XiR>${}-mRRmx{MYs5a$dnVhclZ +rObFZoN<`1lZPBdL`)YW?X`9Y3hVT#8p;&f!?j;hq~6gMf#2B8!phh)r0FD)bwtVd`E9(us0gzY7w(l +Xx?h%>fUyG`YHouiq5X}dj0KM`OW=e-CKNXy3<;s>4d6oONym(dQ5DJy93R|+KR&1hfWAvxWdK()Su* +iV3FJJCxj|tSDf+?VjPg7EM4m@a{smBcAy5jHr@TB&HZ<4UEq)h={BHqfu_nY;z*#JWDl~lZdT`-);S +F+bW3qgnqOO5)A_WD^L|{WM&}B~Je}(uzTeblHt3DcaCD4saZTaRqne@KycQ%rP3_}%e+4!?K$7MG&F +~&XnslG1{j80({Cj&H>aEpXBR+)$-uD3A+uVy%lHm?B7&h)yqtb^9Vk=4O?uX9cw5m2k6>Yz%QAuzD2 +j*tDKcYpG1vCGuEI&Hx+GeP(LQk+RbaZ{inGnOqdRkZ^g0Va)y_!vxD|%-$CtW?(+g4+X&lQ?VYxvAR +A5N6898U%=PhCf#2?K;C9f7Z!ed=V6bx$;7YJc{=mpK+iv$P;+(cezjH9?ipDIw5q +CB1JDS9hgrdEkf~#xT|9HAv&E!CzWX+7hmD-9WK?y8mg}4J)Mn~rX;w9%w2y!Kb77{L(*KH0b-)Xy-S +Vyc$i=!eFAjJa&Zs>ZD}Bd0U_Q+btBqV|_-=DzJ@t{<*1GVLO}wNVND+{kZWi +YSLd9dn8!xT9G +dk!Z-JN0%(X(CZ?)>alFH29~>Z7~!_8_Ud^HX7~Z13 +(fU2<@#Ns?2}6LjF5L(VK5CICy09cqFRqF9%IsI3IqwQr#(I%9ZYX!3_isl1&c{z>}w?!BEN%fIh2kH5|Rk!f9eO8n~aequL`0-k+B$X +alcr=IX3+5E%>Bo99Evm|wfs#lmG`IIC%k_`7tlJR7yyO8867~Kl#3cmT&+zkIKkF{B7eBt-WV7!gz8 +lAEBeaEzoCIm|No?I6lAf;JsSWaUH@u!jy3dr8 +n@E9C@mE&+mmL^n?^fZ=WD0wQRYKHr=WJEC(4>Pg;W}z=eLKHV`UpuP>Z>GkRJs +KrHiUwen&acL(EE&sA=kFsH!}zP{dCwq{%t2JKU8gv^eb5S;vJZ{g$7K-`U08joSTMm^KJK+gwZ2A!k +q8BI<5V8R!~J-{S(%H4hLnuQ{|Uv6!FMr&&O`xV?+693w44!{$&|cVn|;8-HqTM$8AEVT@evhN5l#5csr=g23TYx?sox*}UiMOXoGfKnxK+=wa=zbs}&mh&6S~=l-4&Agpn64 +jG_c}w>y{;I3Z@4FH`ws*Hx3_WKA_oQ#9ST|77wai>)?-{9Pb$)ROKSL2cOadGSf +nAHFW*7*f8-J?Y9Ngti0vmPh6)Rk8?8F8shlv4CwHh%a$~zlF5T?iUnKY^WHroR(%dL3_F;t)9*L(SX;Gu!L%^ZQ0cLN%Mm2ZNi#5$5tSEhEHHt*_g +*6ZZ91J!t-O&!Zu15avFpV52qd>* +HwdyoXb%%WpzcCSNl+#F>Z+vuoqoYWpj>0O&RbGxf$01$j7-S+Mtm@!oBV%3Zdb^GfXI#DB=a$i@>V8 +9NfqJ{Rv|o^WH&>Ggn^P`Q0fzxC@bUG0lQq6lO*7QFb#$8Ubf&v+D?cXr4HK~>VWHBhsjEL?s3bjUZR +vWQq54n6o!h{S@gmD~mS+RE7+|fNsxjw|IH5SeT(?-q50QHO)pW_Eg-)R{GoSpcQ8VKNX|zago(i+aN +;x7=6L-VOT07cS7x<-{v8jnj=(fk*!(UMza}T$k_F!6tVhqSYNjE4HZT`*fJq^u)X8&d`S?VFZ33G`S +GX6(|Z;9io)UEo)!j4gnNXh5g?=YKvy4#M9Nrn_LwrVQs3Dy^sT1y6ho-fXPB6MpOWjWQuk+S>soP1+D(Om$9hgW<-A +>e1B*H3{Utrv*M)l~YDX!YuS5sVtaV<*uy@OwZQR+>Dm}mC?iC;(2Q@P&jpnP7^mCmP2-vgOPw_dovG +`l~gYXZAl=@fRO60w1AlhNvn^C+jfUS1)1K>7You=Ycz5hdA|h9rK}aku+#Sj5W%&6ALNPw&JdT!ORC +dfs4d;6f;92j+&K(P$>W$J6~^zWZpT2;h|atj+z6`y+8DM`20F{%0{(B6QKR%{?HC1XM{S%qtW4=bZh +@mQ0!?C|st4PPE!mn}yc!f^m!etnM+JifN(tlgY4gk2Q77-7vXINGr-$s92=e#d8Bzxq3{v#&vi7pw@ +fU0M*k8aMFyxujkU&S%Z~tviKJgF3}KcP5hd^7mSn|;pl^|J75I)RYsq(){a1?%dNFzVrVN6OIP_hKk +&>FFiCZ05Dl|3^*L%Zfmgzl67($9=jF?lv0J$!ONU}F)_A~++k1s}lJAFHtN>1HyzzajyW^;UPcti+R6_xX&2KhXt9j;y>>?bXz&5Vv2j=XD9{mT9(y4p+nV(u3{?*;w(WRi%(Ug{uhMFcr<=vd=;Twx++ko +f$2g)~cahso4n-VTGW~V_VZHM_NwU^=#9~XWH&oL122 +pQFkBNxDP-Ufk=)42A+W1DWuTc-OV0ds5X{pBy+vy_a4F~gH=Zm|#ux{@6l+0H}twRcDlY4i#XHj={z +*^UW}1O+=|#Uq4kaGn6RXU_g@GJ6j(6$ycnF +-*u&Ye3Po~CvSs=x0d^V(!M=-&rYY2vQU0@8f)}3Sf(p0ri!^^0?i#wRV)1ax#CcjqWFB$cP=?-x4i5 +lkk8z^npOHL{~>``_d(Nke%l_BxwoaX>$@3`%Ig_JXc0OI&DC=gZLtR_zd;c#oG%+Iwv7x74WXdow9J<|-K%cpCnM%CA!n-Y65Tl|MEw{VUmg2peU`P1>b>UNvdnyGWELZsJ|68n +x>(E(e_jbFIJUZ_0Yj;ZMRLnLChDpjSKRi8R$9S0u~i>_?&;Q<|-(zspFiFEc0>pU6EEG7Nt?Ldz??^ +6Vbjb-ha!@_qh2gzGH2jP5Inv?hLn+7?6^-l>dSPp-SWxJTs@I>RKVzZ|WSzN9HS_cu!63DE`9>Ny*B +esmkDGV=t@CSf(ficUT82+fi1XyCih$D`;L0NUiJn}gQeXmRgRqegK3lGKsAMk+TIdM`seq$R1DXDvlz1Wz&ibNv9=GhZW1Y373=v>8C*!02?x4Dl^+*tx+<)d2UNPh(YS-Yu92qjl`wf`FTauN4Eh^96(1Lw6uM?%G5vcv((9vWiffHkt*1Y+(noJqbq!YT_C};UwO +CeyCwq~m5%M5DwSssCCm!h~ewypyYazhvhm8(I^^00d{V+fNl_8IRWxB)OnzYWWOPOqVX}(VHS8rPLc +N#U!hS!@+2hXlK%e5lU1%$1Wq+&_&L;^uS<}?xvU@q&V3Y$(}fqCp(lPdCA${Ltiiq4bN$$l-j_wz)< +q|>kVL}>0|lJx4TuES*70_}*XdswtV-3qOQRJ1qK;$08w>a>E8ps#oyPAwe}1 +yqc`(t1=Z0$fL}GZ^lCoW8{BE74nKVN7Afc~t-gQtr`=SQ@!E*&#hpRjVlR4`nQQkejMc!Ys%k$C5z$ClK +yrF8#`3qCFQOG){$Q!nYY1#|;74+f~?(hfmi9cBIhAA2RjAr;cVWXlp(H@#-um~={F_40N`GG4}Wa9( +F%VxgVPq|>NAFWOLF&UP(NpHOiWj~YOCcR^=D@JL}_q|P8?AX!KzqTE8pY)-8?|stEqt&(@@;>Pu5r! +&W&1ie}Gk%}+%uC%T{r7pQ&wbK=6DIF{(!;*wBRs!P`t24~_1-5<6C~gJr2WKw(v^ze1s6(hSGX40Ih +Fg2NJ7hawaW{oKU~@Mh0@>UUUZ>!e6!XGo#Z8%9#KHouJ`?`pWN@X^6RAe$33fZHIJSym42O$PZ(a_< +?XnA*D4q4029jGoi@ez1SV2~u2qLIOZj4wcRDoOT6dj}E7fdNX3gSE3beZSc%m=Tg*kAcP)K|6{pN_w +DjES-fi3jUAlqSA(!63X?F6Tp#rK`yNSfCN_E^YUs#VjC8?IX@Dk7b}K6BpLO^q_}gBR$U)WKV5{XY0 +f{=3z{Mf3TSHd_vwq(4PjH;)v~N|4D|HI!D#Y~s*8EO>l0@hn#U?{1`G$r|k}|3@T?(_Ejw~ +vP`CSGAj}N-_O77ELBuHpR`!=r&C$J%NCN;KW-5I+$Co6N9Q;%|ZsjINt`Plb>kJE)5;zH`mZCwRb#! +cuHstf+=M(VpfrD +5=VoNz6GKLy)6#WilfzG9hyF!&Vn~#jRc~GPDOGw8(@g>d7w3RqPa{bdICLso%m&a-Z*^{FK`z3(}Mg +Cp#S2zn_2EQ%*-e@Z2upCJCREuwKGN_bAfuy_I +cOE_G@$r8?$(0aLmDH2{GVT6R|69oKH!lM#4O1MqJfrAAcE8%1bXGr)P2^|uymGE8(pOdgj!s8OQOW0 +$GfI}oqme3|)zJ%)~d{Dv{B-|z8Aqkr${8GZR5=IOau&;y(5?&*rO~M-_ERfJ4;R*@wknmv%|0v;W67 +G}mn1pQ-Mo4}Rk#M|(*GX6);R*@wmGEH+pONqeS$^8nP4e-qEcfH_7rOsZn(vkHb_tylz9L~`r*M~g_ +NS7fJSfUm6+u=BI=Q(^zi_^#c%dj34_pND#ONxgB(sjk*Cb&c{@|U>X0zC2HjJgnxHR)fHkR3##hZrN>{^z=(%Cd-=C-BG#fq7 +e6(UAEGvY19AH{3r{=-=ahqFLs8k>nfUq6~FgM9`lPq~CER*MLo#Z25+SAJ$7ok?so{>Ww+{Fsm`Cww +kp4nQN`68yT5TS{jZkI@E&xe#Y?u +FbX7vT!ot_fl}jXwFy$8R2Yx63$0EBh5yZz(&Bf2-Gg;+@qS1=S`C@KXbd}R54E@ +)u23HI;A`y;&Qk9@I4)LX36p?^|}a7mvHV;Tm4tmkIsBc^5#QJlg7WUa*%%sevCqYq0w>i5?&~|`g7bMUQj +xHX=?PY`UlH%8PDm@x4W+58~YE$N3}NpAB=B|H$De1F`~N^{!0Wr{`nE|KokD=y`=(tc50@}+-aeWFwm#XO$Ee4n~=sd1t+y{mqK- +V)gh7V?%@%Bkmj`-qz_8IMN)AE`eV#+1+bpW7)H8vTxTO1v)N^(2A!w~P7ML_LAs%X3jnF5O;}e9G_F +rr_{C++CT>LJA4~=qJ7bU9E@96Ifco~V-CPpj=%!QnSk&kW;Zd1z5T53d?{EK+ +xCt<}oF(1=Qvr(FZrMdn`Vb(%Aq&Y&GBcwS}nzx=6<{r|VBh5Xvh^0AN8aJE~<``*Cljc6s+|(}2u^K +&T?yJQw&Hbgh@w70ym{KO;)|!WpFv*g}M)S|U;r;!|$J`5)E|C~Km=i2Gb3=Np0o(Yu+~fMxi-hKK7Mi^bc@2 +XOk?7f`#}%P%Ybu7(ZSmGPOgc=F}nm3+=5{)}Fm14`&l6n0*_-waGnzML0Jc9pOBl7b{2tziii%C`)vp +vtgWTD+#A+9Z1dVzUbp0k9EGwlwi=3sIya+M*mnXV#EFVj`b3*O`?Eu=EY$}P?Fma~0fsVleC%dpJcV +s1pd6c^Da+C-D+5iNvYPPB*)g{LrVX0Fp!nxD(*OfD^y82GZ-Ra)jXfnWCgV!MyUESE54l@xQ!nJx)) +okWMiQyB6`e#o8qJ~}`DfWU4+`rwezu<-7Nh{zs2dqrK=J36LMY~OzU%;{RXtbF;cx2;&YYBl@6{unR%OYr_(>~`^=6(j7={Z)1GccG6pK7YDj`R5yct-2$KS7gE~o*zjz7O&`PWec{;Pk#lz;l`g+E`DuiLNAvds5|=3krNj(m5v; +g|P$pNchWE32w+|7}g}I`{gzJMP?Y*WLGQ{N26xZTkKF4?OtL!;fr!^s&dcJn`gHPygYMe|qN6|M8ct +&p!A33opL(^0w`-y!zT-Uw@;%VaLv0Z|>gHxOd-M``>=&K-0lP?;if!d+#6l;OK|PKKl5R=1)KS`|%T +>f1$K|={b4otFK$X`S!c-e`q`1e&+0t=YBe`{+9=YOLzFcYC!m(&j0^({QvR+`O@zHEBH^}gF}7VLqC +`Ue9ZTDGSd~TdLQ#0oy>Q3GH>W)zN?e@?oQ@=I+^K;R$udroy>Ghf!4(JcF@z{9b+u;GuM1itE^U69L#x!6@y1hgCd>u8I+`hJ=S70DwsIIO?K_?|uWLMO{cf!z +=>^T((k4Un!NqeL*p`xY&p%|iBym+x*A5`veEOR(6qEBC3uEk5=W#VCWfvKZM4bLx<3$qUX%qm=BFL6 +0dm#~+NpDcHsiY{3DYWvAHxQIQ-#d7U9IoFw6WVDo)mXsO`i;cEiS8?8AJB3>)=;am`+4GIg5@U(OUT +n0N+w)w`+=WHjN^*8F8OXf=1!~MKHs(6uF&|-Qm4SjD-pOC7JvZN2P+GDCAq1I018A*m0tc)}^ISm2Q +YHOttiLW!HLb5^@euUQik{4pg~mLPraEXW;EDFy7j{%n<1H?G>GHzjMVg<^?qznT)5n>WIrG7me3zrB +Fz+JbjJt#Rm-Ya6dui#V-Dh{P+nOhL5uMyl?0@9()oK|NU%IrNv7u}*LY4v2PKLn6lUGvgEG;QAF3v5 +^FS3_jl&_9*U1WEnSPPxTypnvov82H0(7rX&Go0_OcI+FB;PICNF65~gA$JkA$5QSd{cb$`;!f=EAb5u-JaJad1)DCFv|%T=tE_ay!ouPa_Tr^OwZ +NU~V@G|Z*x<3Sw4`{6z1XSw?}*1l;moo`PiV(wYag{jjM%0Z?WV%Z9c<}zhTDpLLODJX6u=%Xxn +dK9WpueopxtOX@nKQT4$NJYr>r;+AztT?^{L}I$+PN>Si};;y=T*VikI_{|Nt-=u^01Vy%V+4Ip~hU9 +3#vt(Vz}7&&Q +Zc18dp*vce^fBKv|O*)Pw}FD!G;Up6**xFdfd`xOsO&Ley3S>4Nb#s|hB&v +=_Y75+1U|Hj9x>*mM0jq*#<83LFgxf?T#3Ux&G4Pkxr4Xkf+chqG8xhnqvR60OD_@Va22onQbm~ +Sk_TcCaIzN|gDw{`>86zEjlcfL2z~}jxbs+&P1Z5I3s+*&$bU!tgv1iA2#1|YM$ikC*vv6H6)(!J9&E +K6@F_w&GedA{W>cae3m@bm(jA6`}AIXffu+BwU8%z7P_Gyl8x~#sJL)SM<)PY&311Pt?Gdk))qyhB=` +7t0rh8Z2{Ih4lOx0t`&Cesr$9K6rp1^(}3{dBLh?)71gP+9KHfijOlek@4$01xkdqx3Awi8nupMIrxD +qay1gFShfRf9w>-uE%??#s?~=NgetB0B#>mk!1}S**gUF5p^;-ob{g3vo*50qs@??TQV3^@xGvyqfa? +#WjA>$<}P>-Nk4Yr>+yc8h3Of9`X0o3jxu<|&>c%LSsh^#fiKMR3B%iwPhA-m)!efwvR+HqP1mBmOk* +tk?_KBfDe(3v-lV?^7&9!C#pX|Ev9q#SZ1OY~tIK4f1VtH;QhZ%6y{OBxP?wQMs?RYaf?0p(i>!bC3# +@#NcI@3e=h>pKLY(LuVrF^ctmkdJ2Wa%xqizJV-m?Ia +x89?AI<$UP$LoENx1ZGY4Q72Gi)!uJ9NA>34|jy+geHZ6PmvTi`j1%j$FZY&w~A6UczLuH6hFgTqouo +VDC_HtMqBHRwsslotLwo;7|^164?3vtvX+MAXmp-+G4^+t51nW|`YpUD%V?xAdKB6*@5}HauhGaW?05 +}`NeX3g$xpI4-Gl7H-d2=zQ-D?<(WmFjK79uAD(fTF=Y5svbF0vg$@uSrc__>Wwe;}1)g5&!9Ca&<^| +~85n+?4s8x@3aSru1myT<`y~;tt>iW=+!E*PfqD~(dKbZZrgy(Pq*dSCttp^h8!N5eIv9!cM=-; +oPzN7lWj*hWdfsz%_tMVclDy#z2-lq%o+DoQ5ucKD-TheiQ6WjXuF}ivNIvSw4PDleM!%o0pO-ga%xU +PTpD|-Y+2G_`{0Hj_{JWxOjQx3fOZGDM$X*|M1N5xNECbqnch;knk1jdh{8Af~bB|ceJz`P+&A-<~z;4ZR6BI#(EvX7$N;{gn7)n=s&gam +#FtU;V0;@Prax1i?YTXq_szLM3cy6NcIJFzZB)!^_-`b<~+JUKNgs*!?=oZ6SSh9>+T583Cq?6>sT<& +yLu2GL%>JCQ6dIir*^{o$Fjd8vbg*R)XnZJu48_h9dlJU8{$02hUEXqh9sY5Lv-J>4p% +{ALl9`lanljkv9(=5=Y?A_CJyYdI|93=Z&5FO>@FLuV_Uyvmwf(x-d@0epSPF!`agQ!K2GO*ti4V*#q +LZOOKTfe)^k{5z)U-BAZF(}7tdjuF_I_u +{XArM9s=K#(ZcprVpHxTj-ozQaZD+cu|pE#t__$(*d*rA0bEr*u%3 +(@XO0-qZYj{9v0^lJ6?APcAI7Uz@vx{66JBopvd^%x|H8maE8FIBB`lKC5I-VZJ?mac(KQiRjFvtrwS +rg3V#SlbrB|#JcNd;VWNc9r^W>yYzhf7j@K6?)IDV^GkX9uJN~(Gp@DRw0-SjnKtnWz*0VkUFDZ;x8K~st>ONX=NZKgmotN>_G-WEk}@BTE+ +CG2jZZSOz06r!vRr;wm_5@nLyOPNs20tzFDY5d**w!>&zr+6x|z;W{AYmH)!YXv;6h&c*i5T!jww5X2 +k+leMj|(Ge~Zq?P(hXy7CVvu_x-H)TnE)e#@^+)i8hRwLvXwlHD}gx2ZdbUsivFQI|16BU`M_9EMRuA +*tyNOl;_zUR0oi9ii$l?WpGJnKmUv}vwfj!(IR_kHVP5do(&0@;VinY5S1ghXm;^3FbM6B>}(|^H@h5 +@UB!7s!BXs`&8%p0NzZjSU8QyuwbNeiWP{001VzpNmRTs*>7|8E6nW81d!A@Nss1*5?o#_j_8z~CVp! +!C72ev}(Nvs2(@|KQUgAPJzXDxft{wuHi|o#e2%3CrC3t#+ZgNo>*m_-Vk;~5Jk!hx8x}HqDU@C}jKD +GTVpPpgXV)`nP0lv&7|Dy0%a^M`q%&QFhkeBL(y%2goD&OnurDfdoH||H&ZH)Asem41M#e|#EF~_)uL +QJz{5gvxJLMjXMd7pr4%trXz(z6f^uQABkPX8H57f%3N(a~!OcCoWWl^m&VF(DLQgX?Ou-CDU=UquFEYgq)p&C>?n_YhFw&ST;VT&T7f8?>3$twO35E%qebnJX_~|ScRt$r=uwY-GV +J$>jJRsFFq8H?iYPs=-=-bef|6S_w(=P=N@Wvq2Q$Y9S(76xN;Xvm;^b!V37$V(5ecUdSVF?-}-3Vz%auPk{OZEe#{TOLBNpre1XUi}%r2R|@=Sce3 +%eafA{Srne4;epWPBIduGOgXD{|cGrH4?6s?v>KLO41?yl60cvVQGF;re}+c?|8zncDkHvIq9hgALfnv)(AayI`g_^*8;F8K&|<0YSedD8w{o=YDN74DZly!b +zx?tkXMR39pneLBejXThyO92IX+9?5VF?>0te0@BgqtPYB;iI0Yb10?m?L3uz=d;yxzavcLaT&n5~fI)Bw>P +t(GuzLqMf*#-0!X+9!hql8 +-}+$>>@gboSwC7dszRYIeLdI|r#=3Vg5s7mIKi9x3;z{>kKk?YsbiY~SH>X>@Cv|p@fv&S*!O_Li~>&roGkGiz{e% +N1@L{m3BZp4Mh;-?wJ06y1-Mhj9q|B*MM`_zm9ZzK9EOOuVp90sKJX#{j<_jJ}rAGnl +>^i}VwmG*s{^2XN};jIDql8{mDH3;t{d+<|us>~{hFmn2 +75n;A0~&PLqGYb9f`*pWtO9F`h*0STvv=Q=4SiF9y7Ql%QDyc=c%H1%Ac@zJzxc?6(1yC5!Ys0hf+J` +e9!V`1dg)@5cduGgk002XHsuM&ONrxhW`9;Q4?{Q$#w;0e6f8ewmJ+KWs?F+ynUjRIVG1(rEMyA9AV326o%4VZ_C*$UwKfWJ!@bT$D7nUS_WI;IC4VitLK0B$e~KLoc*oM4+ +-#1&xy&+u*r%{0Kdc%KHI1DK2V8Q>1UTkviL?gVVd`vP!+t0xQIZUS621!;hN1>mkJvhD$Xf%kjZD}a +Gkk%kn&n=*m-Mmqw0Ia8!(7hp@KEO)?1r(#@zpDln1HbIl1%_jU4T%Cov1pHJ0>aG>`0f18^ZUvk%4S +9i|S%5cB6ZDG!w@ec>2_BO;!5-NH-wgOE-eU+GF`cm`Gg1G5I{=@bDd@Za7&1%XVSrE05@DYPOr9=4*-n21#ts60#3d~(6<5}xJCGH0({Jg@&LXC@M@Q^9}gJ26mxCheF0}K73r +J>_ypdQuzwnG(lYexsQ+fbhu5MH0lpb9rc%)93%Iyage5qu3hN5^$pNH$XjT9x*!Ol>KLLNjy8-s>x9 +A&d1m98s|5_u;v>tFptte}P6W5^~!G9XyvUMV^a=`8D1kKj~4@;cjmi2-T!G3juju9~X4$+ng#%&P&o +)Pe}yHF2d9}O6Gx9F1zzJd27>>B|m--EISZUuZx;`;%oZxr|}z+)Q)uL$1$JLD@Cc?V2-2xSeNpx?vj +3xEdzj(u3vlYGD}4~z8I1AhM~>MHyY9QK&7&jxJATLXK73~S`|zzNbNEyR-=z&TF}d@kUoCuKhdxbP3 +?f8akK@GRaY;O78u_!GuT;PU~G;?-k}I0m@yFQ5Z_KVZsMF?JA~^sKNq13vMrh^rpZ@f_+f>?;7LJdZ +pB&jE~j0pWp11ODa(InDw;`+}%rF92q|DEMXrjIBrgf&adM&(@2wdjasi28{Qx-vrp+h`a+Q`2Jq>pT +Lg*ChimTuLN}OljAAj`%yOVvjs5b9fSuS4_Nq)=pTvzpO^RxfVl@m{mBRH-h{lvJ_4|+Nzf#C`9b6t_ +Ok%zzl$;jPH^;L@Ev$E;L*dPZXW}@?+Dr&>^A}S`~Y(r;0b^~ejwV>Il#3?1zrW%_ZVqB)^YeH-T?F! +CjnzW5^3lQ*!(f-E9?n=|FNh`1hYOtc-UtHe$tHok^BJ8{#5iia{=$cYX!a$@TE@$O_I|gIh$F?J3*3 +hA)Fw|ePpAa5S%3K3En8}3En2{3EnGlf-gv%;30_#KhhStD +tq)Hb4r8CRRc23LqEXLDxcy78FSZeLGCjb*7`^lBL!z?8V;D#rE`+`xLRSea$88H(kR1=}XveyM%q?C +G3w}!d~gZp7y!gVXwa%^BOSkxKswvx)JSE*I|yn7h}1;!(9I`#_GThbHWz55AHBG?S(m_!(4t8{sTJ9 +%^&NyZZFMj{Y1xZ@QDv)&Ww!qt0 +qoe2uU$FIz@t<-q>^`?;AfllA!dT0K|5-IuLs)t^LQb+;J_YfJ}2CZV1 +JIxpnneT^uW(*L0_1QPILeJ_aE3TEKYO!pHTe5jQCa6ePBN&4R(~ia|h0R0#h5g^YpJhw{HKr{cS{p% +;#s!&wz(>MW7FJ;A?w(UH;(y1IR)F@kf8;&ue;qE%pT3$^29Gs7TxX1Msn)*rh-Bhx&mIvEa?#%g5BoyIH{<&WNBf^= +}=V=qpOkX1(;mpp()vs>$ub7A`5a;vyW=G9;Qu;3*is~`Sh@Ga?Af#5D6l2}32?#9nYT<+)fX42t +7?b7F>m$)wpxAsjTdJVz3q1p{ne^^>h$TYjMw7Zu>OpTQzL@nROT;V_A{^MCrG{q!6)KT8t0S#(oDiL +c<^ABn3%|tl9Jej2@{yfWMUZ^8Ju_1r%z|sU3VS3{`%|LjW^!NR^?A-ixw?nH{Em-Te4&cD=jVM{m06 +cE7_y2iR@3ePGHZkN@bOcENuPF>1<<(i9Jx7#$H`>HT!c#2D^XFLiX||2itw;RMzzP%`D+{m0h_*Wg~ +a1Y~n7JjoGKN@$aZ?{@W@`KdiE;M^!fc6P1Fc=>MKx|O~7;)}d5d+oK?*tlT5B2Ynu?%n^2m^ +w$lE64>my^$>yok*>d$3wn@Ek)cOv{92>%C!-+}N45&j6me~j>dNB9X&yhwe?x1w)uqbh42FrJ_+HkLHI0$2d&mZgkO&E>k$4Sg#Qb|Hz52Wgg +@aE9+Qu3G-U@S8ykWVJ_O;>|FmKfqZ)fK^%{hqkMOr5{Cx=j62c$$3D3H-Y}OlXb^zPJ647kOvID63t +t^A7kvA}Pq=Tu`Z)fT)4>I+x=a~9zBU2B4;uGG8@M96)hVTm!z8vB2K=>^P|2)FKj_`XB9&z4v4B<~8 +e5*J7m7p*c6beD%x1jI@DC`1-PeGwIQf1$cRN42_Rn~Tk%1+;smSs) +%?tMv3qrb#9<$8A?642~Z-aL5#|t7%eZMuyp(nLcr%$-H1#!qB0EJ-BhF_VOc+G;2L}q4XYR}}@=-vy44;K{T2 +M#a}nnK}0KQl99V&;N=J!7Kb4i5>^!;l3CKhZ>i(=!*u_UsuW+<6+~2O5#c3@`l!QN4QhoH~JfNaP*{ +7%6>b!}#*C38U^A`lbZyZ2>bVPSo36a%?u@dxz#T;O2=v4PyvEm;| +vnOT;sxC=bMedraO{-i8(rX|aqHMxJEDCvRRFHaa|V}gD(!>Q>3$ijSGL>G9yBX=plhQ{7=t8cQ4#cYrv&rkeVBCm^;BGoyq!lToBxYq!L`CXwH(fO*X +>_o^zDEWe(Hj#V;A4i5GtoD5XV_mgIz2VxLT6EbK;Mjtm|+=nbth*Z`e03l>FQ3-Ec3! +AtCO>;)~{|iR7`BfM56wmGoM@C#oOgvu7XYMG@twVd5Siln=xYspO37vPw~z@o+`hF)f8ITrqXow!de +U4djBeRRU_sU=;y5OtL(bZ#GIiV@ZNjxWe+^?0DI`6huEW!KFYRi*}~@v&p-b>pAWwB$}4=X@VEM>*a +MhvY{gt**REacop;{hbA#ibeZoHb>@#-!_;Kd(c-YC4C)u~(e9h+uKm70m`{}2j*j=Yp_AJZ?fAr~RM +-0F~cNGRYw95^780eN`pt}qCMA1H&#i82SWs>vKiFP<;qljEIPf3ep7)96?XN;6S2(S+ +rkIm_i4I1P3RgeGM2K>)#iy2+|K`#Glx=*U&+UBSs_+Mfwr{6^V)QiHQRedH(w1p)-{O25=)=ZD4FXZ +NmA>_fp%WIv+pepAPoNiTxqcn~=l37=N~({S}WUg3!(94V1C|cRc^dCNZU#j{HZ(#l;a*=_QqoLxO{Y +(X;TYTIo6ly21fH1s5C8IR4Li{3YG6U+JItO2Z>nf8!&MJTeF4&Z}R4{q^Txef8BB7<)cDb?Vd!z)!y +a{`;@7E2!(X$B!Q&^As)VkO&3w;XlJaDr*{;dkh&eWDp?ns{5}D8$EB{yoqD+0FQ +nD{rB(0I$C|>jW^UUzW74Lc&fhl-g~q`rGE0sCo0z8D!C&MD#qE56h&!4UOzo_=+MIr4GpU&O`0^CiE +<*5k={&*bWmETTtnnbxF*6vq9Xms?~)};Mz^=OpJj}zYx}k7j{(0ApbaJyjjOJ@Y6ztd>Eh|%w{M@ie +fxG5=~K6D+s4y<;=~E{^Upt5o0^)`g9i_Ce-s9D1hPMlFpoU@?6WIhe);8t2~X^Vev89Cwlfrqol0|XD$j${{W|k<=zsg|xAT;bkt!3pVA#HWyP+TX*tc(=;lVfGd}E$NBRZiv +Y>pKb6=tFv@Pi|KLw7i5_wL<>et4+*FYw{~d3)DcVCeI+`uaKER~^2sA@rX*bxPC?8TpTnj=ljoWVuwB4l`c8J`p7;bn|B=QZB{4Yh$ojbRiY=+#vthUCr4HK@TeZ_wEm1xbriSE=p@h#n4XWCcQF1e{zLLi_OmcnDwMzeTG>3kNm4 +Y5@sk*tems2@B+C)HY^Tw963Yo(F=P-FBpBk5qUr{^iui1`||*X&gCKFBi|1 +T_{q^mX5BcaBwj~@6WW6@|V*hy`zrcCe8TW|)UUd`p(>I4!SIEn&nh!9R-fMs=rcCyhAjboZnZg}( +`s?U{hwDG63-`^Iw2@Jab5wENM?=qM9C>;H2?~VMcuH_ +RCp>r08#R3NWL2a@H{n*KMQ@V=p$xiZ$Vpy&i3daQK&pa$L@MpzPEzKJr5`=Rzi6BloM5ms6h}B6u~--zCUuZC6FQ3TiB7UATQOvHmXk*g%I9YS7zQYYM}JfdE`9Fh= +yTVKfK7`2FyNo9O}bGrG~X1~E*bhYzRzpdu3et&Pig4}VL{z<6VF2U(xf +L0(l1rHWytV%WT3l$<#HQ@xDMPl_{Dc@k~)*@-c3+!CIC?1h#8jvYJR059xBU!fb?pxt7@_G9nKYp|R +6DtsGb%hYIjT`{c7=_q9rI!TFQ2-W8o)h5kJ?J9XA@01zI-DKLZZZc^|cbPS|za03y++c9W7_FTcqc- +~0-W&N>dh($gx;R1;bfXW@ZFz!?cgM&0Uoay7Z_nr=Zz_h3iec?U#h|)?K7*mi!LY!=FdGab?v&}n6~ +oZ(k~8EkgMoof>gb9w+U*Q4|JV$C7;yx1<;s<^di81{F0#|jle+Ze_uqe)@|P23+q64m^AyFPy6~D}@ +H_g9O)4DQMV4fAk@@MdGB+(wo=fQ}vlPSAieai^n5Y;Sp)tnaD#F_z=vP@V@~?883zny!ep*UON(`R* +;ILRYxB8RUWP9!%vQ;r`QVd3)6$3WO>T`kGq{SJrGA}(&UQi7Ais2c>@RZ8Yl%(#4P;63HSB&x6&*AM +q^jrDw)Tz@A&;WfiX3Pj;2*ptsmfwFrC*N#aC_D4I$y?K+Ws{@NYh3!g%)zk8!SKAwQU1uTGBY`Vfnj +0{_0RX|T=Jvwzq>sbk3Yk6^}ll-dg!5EX=!QiLo51-4&>zI7z}Rtx)e`1qEn$cR=Dx`4qq_FK%bv=^f +_eI8UH{(yzkMY2YirKt5%uVi&$pn%$bsvl@-KL7mm7k!oVi2&8dezD~2$3rnd2C_G$L)+1u21%8fVPC +<6uzkmbvl3w}8>GgHQl86$alc}B0l`syoVcZh|;VS#RZ1Gb7-h|$dI4ajv77`6&1;Y4?ZY;`t*@!pM6$ddg&#ZJ9n<3hx{I +T!GJHoPgoq}Fkrx*B8T`w*4QztyL?&<{io#pWmy+ujI2P6fj(oC7G~cM`IpSUVq#)u-hco7Q;;8(^*N +gNw_CSvU5VI*(1*(u7elo13GQ=S^41B=T#y4{K +1B$#DRdW|kB>%Is7H`T@)|J`yaP*^q40k@z#cWU{=>0dwjyPyq8>z_!_x~PL9YB*xa&3OvUHbmOS60MT_=p*RFkz9O825M>d(r67^=8M_9w1lPV|Zul8%h)Hw)*xj4E>5buYLRWk-CSu= +<}OzzG*P9KhzCXKMaP%#6-F8zWa=9EnBwC(9d48=RAgP^Z@(A>%^wW53x3SfDWJ&To)Uxw4c}OE +G*0##U9&pY&{V>%AR8X*Q{A1KA+F +{K)>H_&SS52pQ_ciJ+3}-g3`WSUz_d;^gZg^zcKL}@elT2^)a94=o?39f#2w?%BhJZQd3inZB<=2{ta +7$d|Nq0570|^f}FquY_dBZ;xX5SNALrGu6X%{5$xvG^`t#Wzgt$_GVGRZXag5Agf2{L_P8yiE=* +Fo-)CH5R0n$OMr4d3?~^tyX}u?T)X5Spxw~# +&VSYSiyJp?{EyHcq~Glq-7$< +iwyBFJ%z}afb3VBEJlLQY*}`^$#nP_v>59vg_lxL<7S%5!|LVVUZT?jk7F+YQ{X2NWYw*GL0e!>1B2lyj=CwolJ$=<^UTi=BbJjdo^Yq4XRQ<%PnV!qO}8~Tymy5zhzd3W0)-nVrN_8E-Gy2{acj +S;GqSNPTcyu!3I`1#EL_$N=+;J$||@^iZ~S)I#UwWp3)k$Rub_jH~ +L$rpJ}M&5FTz$6%Mz#X9*-H1R$u5B(&M4uNllyn4mEjtY?oS} +96)o>G|d-A*!-S6mvxDw*%O=d5I4C8{j&Z)2Ks&U%GMqUSGuS%4u{BtS>Ju{L+CvZ>Ve~3O~j2`#Yl*wlJ6wO}~HO`H9--iMJiGiU7|Fda9s;Pld52h +w>*Ju9iV4&|wzs<;FWuVtaj|X|AM@6rbK4HJz=G0wwef+rQ`)Ly=P8{LxciVWDBeAtFr<X#X8r7-dd>!kZPS$DTNRP^KKMNdxj2A0m&jPS3QhB +ab0{I|^-$!I9uvKdX-!r;JsX=<{e!N_Czh2D4Q`k}qx&>k@S-!?tg^tIQy(@4wL7^a-d>mp +S$IWiFkd&os;FlTC7HU>JGSbsy9D<*zmM-{xoNAu+$Z&*JXgu}_!k8C7ien;r|jx?H6p$LTe?#zppz^ +=HkRmH6_@FUQjxA|8hhn^)WW2BCw!z#j1)gZ{1Wi3>UrP99yd7S{d~V^5ecA#M8f>8b3)bI(0z>>hR( +--rE27T6DDk+t1Dr(eGPOb&g!S9Kyp9#gsodu4U4k58e_K~0xECcjc$4A#;^dtsJ0@M7nj-g4yo&*bo +TdoRf2m<#f_D5oFGhxPw@{j2Qy@$vEB#Ky*&x+}fu}l$+&@g)RXtVFw1KT69GGJ@SRvy$(oJ&bb8K$zFsWB2?>?Y^GR8G~5z0$p(J$(4^cj)m@ +qkrU)M+9EbUsJyv>=&@_Ru1hwBKD}h>WuE^lX|VCnx7x?1irFysnN{V__+qL9s5l!7a63MPG1B4aQ6} +50d|4&poP7_Zeuf{^R2hudd^e79);2Wyu7@`!otFMn{&fwXc#tZnA~#9E%Lwv4;b2P-Ou)i_#AR$?FI +KGu359D&=bfN>NAY}!~RU0Hf;pgqb85f$L7#mc>M9lO^+G9;Ij<&z}9$)m+7exw=0Il4Olz4erOHLU6 +a5cWn^R++rYi5wyp@j*lTcOlPfAJRy1&Jvp(yntugjL933_We)ZK?Wyz8yrdEt?q~>IMikG>zS)X;R| +3#L-Yh!S9&-Nvu0U4vmLH%jNh7I;U!OLAch`&BHQ0xr04?dTbl_7tJbT4Ll0`-&29emg1y33sC*QM-R +t>av?$+1<9YJB&Wd8zO0y1%;{JkJxDp})VC&ZZi;9X)sg3$&`SRt@uUN6 +7hTSPCDLJgy81>34ub9{MGk@}Wy*&#G3bvG%mKuIq9|oUQr}w(gr=PZM+cxT~XZ0FYDt{-?Lvmx})u% +Z~pZ$URpkg(?Ui7WG)CPM#pGBsL;cPr(bqZTH;HN;&M11AOt4MZ8C>N32P# +OTJOEc&51qIY$qr1OD~v*U$91v0>~()s8}0Ke@BXCyCvO+sPZqohByTW7g>Nwa7}{mqm*fnRt+UMChx +*OXMXq7BAmcX5#*dgM%?QVArvK>KBaNq9@1w1J;)^Ud`zu2dgT~ev(5ym2B2OVfl~jVe64oc=_IbmpmKay<^9Y8s{={nv`_CPN%1_Gd*=o`FNN^tf@%+j?=YN`0)Q<4B^hSB3y}i8&-d)~uZ*|G(l50wvmbNU7F6~j8P +&&LcyL3kB{L+=B8%uYUR+d(mo-Vz{*VNb27wzMR9m}~!K~zCO@yg<|;*G^yi+2^57grWn6;~HWltk%O +;`BPb^-2TvTIqVV$$Gundc^|0W|>}ft6sNUuUw_qKB8Cm_^$C?rz=G08d17RoUezkw=cmr&^O$d?#uQ +~_RaSd_*VMLd>egReY3I2ip;r?`gwtupJhJU +tyzQ4e~(qHD^=-=w!d-#QZ|K~pIIw7VQDsq8QF +YOgqSHkl?={}*yiL9AV6->R+r#YPK<{vGx_7pBzPGmM<&W{l`2QdO2T)4`1QY-O00;m^MMG4y{uZzcD +F6V!rvLyP0001RX>c!Jc4cm4Z*nhWX>)XJX<{#TXk}$=E^vA6eQS5yIFjgh{|a_{a!DmJW4qIj^%-Z^ +Nt|xq&BMn|x@X4mFq8z@j3ttXq^u~r``>Rp01zNSN_M*E&OLW{x?_m~3P7Pys22*`-p<1vZ=6k%^y6ou% +G+Hm#O%A-tE_BAvul0`K61D7+ZjORFLoEvgK@T@^yiMOq=Ob0NG}C(n=HoF9kP=gN!IiTC{Nn|Eg?&) +&a#dv=a5q1@KA$mU)YO&8Uo5K-hM^E@jmfSMsxC*-ttd)Bb`%Z07fD$`H;+G$MUE37%Z{@-H15@Hze=}B+82n09LD^cO|NbUPg$SAG)Kk9eKMUfR-TS$1Y&<+&^h5-K+y$hl!jpwjr23uRyRVef(O9ggf+Z#iV0hqVE7O9sCF%c73 +LQ^F7xT=Z(NM-2x`6^#&DofI7<_`|Ac3#9+^Z39^Ge9i-P6Iu8eHxvf9lt#J3$*0txxXc501+UCYQP~ +-4q#}RRM&z3DZY(2hxcjafae{;FXLI_Zwe)$UX|j&@!J@F+xqqREINPxl3(fd64HFr$LKaL0^dMOnoY +9GA0YD5tnz9A2VQ5VtXBL7<%81q9?-~4WM3TYUv8cL6$%qVSHAbisJR8b=bwyWSOvC@&Yu4Qzndf%48 +lUdm$3-^9UrDR@{Kp4d;?XVo%AB${4JE=QDaf$-tgC&-*Hac!w$?b4Vpn>DcznfG9>g5!ZHVjjy)S(> +|Po(H4#%Ug7uo*iYOi>fdq+9jx7S<3xqH<#($}cFx7O7(b8L{vxu{|^ +2Zfz+>8=W0Pg+kE20{k^7eBa*+{{8gN>HO)%-*+w_4Yqdh>uvh$;Rqc=ad8XXn>hw|a}Hy3~ZP<%))AHqbbqAy@yJ9*`*@%Mo01m9l#{oBh&-~RW9^GAchh +w@PnJ{sSSSgz99!@9(Us(IPdWwQa?{`(PM#0kjJCnV;P00*2pjYl(q8 +WrNco>iJ_mJ9T_++7C32?-gK6_iTGK|N*lBg_p@pxVsi@eS%+*eF%NJ-=htqw6fYfpUt2)I8-kTrf6A`S#my>F;wY0H_@;lG%iWl!TQRj|6Y3ipq{ +Cz2Nlt)O)i3;~>-^=mV`sCG0^5f;~NER1KpWoHgK^<#oLO{SSUkpB76al}aG;Xa&K{Bvo^9_;5am>YtT(f49M3#8eAujG(v{udYbxck +>$TZE)|RN~)2{?aj<<`g++hkEe4Qf?;&el@)*uEpg*#l8&n-qz7w=4BFavPlJIa9krU>>5<%Ka^p~ki +!_UO?lX4=g;(}Cilv?rhMAoaFK)lm}HC6LuCT^V+uN=6Bz2BChly)G5P)unjx&RJ$%r;VJNHv23RMp= +c2|TE(KrQ+-{W!SSL-)$!<3+ySn$vknO@?gKch(MY6|A(kJq0l7>lbhMWVOBLdi54O% +Iy9Wus3Z3R*nUKVHr!m{l9K(VPHTQ}$$==3qDmX?I{1O&CB>=*t3*U6WujZhYawTWLY4m4KTzXV^VHY +;4-LSehig-^owjYH`Xt&9_VK=~B45NxU4|EgHI7owVbQ-aX`F4Zyk!`>YA_tY +WsXCx2+SM$}qQAzog^(5pC56(0gk4CC;{_C{U3cXsf~h}G%932kGtkThYSz+RfqNs*CXmOVwTCqAI1c +{78uJ&E@BSlL=bh-&r{&dTrgtMuBF0WO-6Buvqei*9>8%b-qLhdxsauvDtl92xT)*p9cgL;8vJkG@Qa +T6;1~rD!M&-2_#p#u#BCKr;3KhNDG%xi$Dr1Vm4ZTi~iDw?7YsH=t*%mhw#nVa@s(q+I8{Glay5s^E@ +bRFz37o<>L~)CTofSwXR||}g03j7&kqDol!7GPBi=w&kN4_%SlN`hihqG*n7P2-kkOd;HWMD$N1~yQ# +*MMjlL0Y~IiE;^N6DtVdq$H<>hnj~}Da&ARv9ou%L63EH-!*eca`uoOQ4OoC5_e>kM~>O<(SgQ=B!v( +yyurx-P&8D<*|b?A^;?($Fn{)T(QE*poFoR|Sq{?w|03aWE`GClMG4n+?Ieq4@|q^%L_{tR3EdWm5-Q33S}<*ef`rTQSFb+ALm6v{&AcLW3l^6LOt={&v> +6myoZhPcbj7ijFP=PgI=LAosiwWk$gMpmzOlY?fH%Do<-UlYX~f6&a#ElIJ!az=nA~ +Q>3s?qA79Y242_QF^v)IDn{=tYpLSu|{3P7-d4rm7L!R;KZ84I&>HcA9lvl&f18pBJ{<4{Y-hB%3jE)StP-Gippy^&MKb`(jXohS&fALG7m4gZ{%#N57&eCS +#aE?t*I8b`=APm(%5nuZ!?J%7<+EIjlW79HTQ-2U+eOKeU;QICTjLkw^Cl?!&65{J7H9S7iNvx$}DMwcLgGZ3!Y%3=l9gpNuW0LbolC2(KpiP-CU1%I{n+W_ +cAGndsmAoY^2u-8k0*M!~r~FM+PX=tC8YwfS{p3;8Q1o{I5xEFY#kJ2EnK*n_+(#k^{9Q=nlq)k@88p +uuW~!V9&@VOgG@x7J0x58|2-_@*>MB+_H*tSaT$(y^Lo!UG-F5Y3xf{VKY`&aZi@Pm6yK2cvMc$^SoftaKa*n0~83r4Q&!R~X&1YlTr}^~BLLFt9w=` +@eZLz4oi_6Wss5V?~!dQQAvSn-aHCNuy%c^U#gTyIrcSdz3R56Hp2b4>O8C6TNZQ8T%voz4i3srFH@m +H4x|EQwPxyo{HCT>9z$kG{*VHw|wx+~Z=?24itaY5mi(!&6dt(oj}KFb&7N`$HNW+-S=e&y +-iYckxn{H>}VHAO$x5rY!4k97k+i+^>Tz4l%JmLF|M*=1sXR9SD*+E +X>m^Rl#;(?0b9%Ew$X!*mN_q5R9-4RS6;bDDhk}237l5gug98vT(%aCci@CIb^*Omk!7Z7IBE;^Zgo)cYEP0V;i>vE;{W1 +ypEB +3;IWII<6ya$u;!Gt6+JDd@)$oi-Gc3^up{hvk3r>G8Sa)Gf*M~`^`&8~6=G`Mq8?wqoca3Cv4(Yh{tX +-#O;MX!DPD4h1WqV=(dckvarwNp!;t$>Ld<$Y?p)45ace$LHLZFFdTWq@`s2X|HDWhd^W#pAQ>m2`{{ +HXwngFJU>2R;n^B@(`A4C69g4Z&Crpm=stwl>zETh`c0N3c!rebVXYfuPv`iCW*02ue>G3lJefYOiFX +x9svV*UvdN@Y*{0y2AV8w+NHQ+-v@9EY}Vx9avW6#I?A;fGQ(RX6-SUY`)A1_R(P1y90t{W#1Lq=Rb$ +oj#F$zvKDcYfc{s+{7%0h2hd!Xl2++d<}ejdP6ZF_~3Mn4PpV0*hOAt1<}M=EFgkA+p(9lwVhMs5Z{o7 +m$AF+^Z`3RSwBIVvX!uU6w7wK1%bV%GHJM*)H#skxYKv<2bUm<*$a;Apn`dJDX9F-a`iUPVdTgmT}47me +S193r%JNyQuGb=L|Rn>A$P;QS)#R-~i8`VXE7zyz(c#XYnqri1l<>kTS$5&8rF~TEJkMmU?KPJxlH~| +Sml#loS?a7_1{Pg3-Rr1Ab1{MCz(Loh>$rNA;b&pZ7cr2IRr)BAzW>z_gwzUyg87z~B4{w&}fb2X7z~ +>i~g;AcwZ +jqrp7OQ1CGw9g?rpqsSIu%8Xz3gu)o;21arCKjOzM_BaU6$|JYey1KtQ|M!9;*=6BjMFe%$s_YaJ#=X +`0)EBD1NL0f&-EUr1w0cN3bx32E0J3BJX%#Gsgk2ZOrnJ2d?+7-*>71_!&CKms*xc9X3#8+6$fi5g=iYV=09+8~*qaEd(Dw+6=aq9*R{|EKnq%6&uR$wWvtT4Swcz%tlpyX$TIgYmIX1H +E<6;4ph(5*fp<>>U|_ogZzCq)PE{Vua37`7q-=%LPF1)=2IUyK6?L +IflsbX-kJa&yJXM1wU>YmqyTT>tg?a7+}~v0;}pbhc1nmWguFk4g}Eqpj~Zf^=h!yY*`Ppp$_{LXT#n +lhlA7huxLlyCb3Sfy3*-(Y4@%6{ToNAX{aWZ7=+vzR;z*@IGajPBE8NJM^mc6wA<}g(4i0A#qdFu42m +|DGRJ@}@=Gpj50{8MpMGvH$J$HKJe@=f)mg__!i_q-ldo+_c?%eT1wn_fq+(g`Z$(_&z&W}FB`Vr|{B +qa;fT1QrM!uM`Iw2h+m=T?3Zk#}FV2AQ=d);Mu$Owj-xQTK@AoVW=iCIN9n~mb}4TU1hR5B)v(HJVC) +PjerL93`D)*H3pLGWH=3p@y&iYwTzZUxA&ud-V)TYX~#%YYL~3*p5jRYX#fb_j%v3R43oSc0)m*n<*} +RV<%$gqT_uKFh4Q;gzJ4F@^J+34U%kSpW~B@+#PZ1=^uq2K{ZslXRzIVuENEFVZp0D2br*3^1!pje1g +AdL_#na{7Yhv9f}-V^w0Aq|6q@Sjg>Dj>S=oyDf{g!u*|a{D{ggB%8v@1x|q;qZVNKDn^eON?wOY)PmYzXsI%uqm+nqo5*ZFHY{Mwv=zqwI3I3_&!ivK$Gg3{z1(h +9#1WXX5eq-~II6lPCN8VR>E6XFUMVGcOE75PQ-^JOf6h#@8Ny>0N>JNk+&oR^)T@;ovJ47BIdM<^7IR +6Lmj6Er2nT#E9-M%JbOlLN5epaeO_`CV`yhp(i(b%o|js@hrliZ13q)Z|{eJ_rJW|&wDRlu3i7ym$(7 +(NHHDcQ4sjq<3_uU3P)w*qV2eGpbl4uvZPT8gEiYeKD858k6y=0ty?YlY`l%D2e>OJVqdYNn*-K>U~} +hB>wApPrn~&Tc6jypKzyW>-CtPHpjc>FOGz-a4{mub>$=p(yN|e2 +<=P@U-zLGhWOLDL*K%aCgqvcr}zX$QcW{lkuw+JS=q27S1YLxOEH0x^2LsL(%&ssDt|&{S@)$5Cp +%iCLvp$IxZmSng6x*oTCg37SzltOV%8a2Z88hRPX=HKgmpw~_CTDW11iC{V2* +ju1B;d4~ly<4%Xy}sJZ2%zE?S;ENGTk;sGRe{P3X7Orwa1W5CZi~aw^fOW?>h(xpSAm*#W_UY?bvDeQ +3^04<}xI+PT6HGbv-2y`#?HaZ$r>srpf1_cN>vk(Tcav?JQp9_mP!;J|txjp^xm(7)xxTyrcqlMXR9X}>ydx-mGUy)C$la +FwhHl*!jJ0mw=3^{;+-E2UE&6*o6roN}+{4V&gXs+{sV9@`{pKrEhc{*-1igR0(VnEu<**^azj8}LuuOdy-KO*!#VH?>BL6w75B*@%b8DQz!cHJye6+9M(ON-#TTX?CCm0yiZqhhW-V +4M_bz-CExJ)Xpg%)GM=82V{yp0tSZBwujBMeP?j~$X@&*eJruM45FJ-R9gox5w+mlJ2sKYIS|w=&px| +*JMR^U%+$6%RrZlO63@LU-bf^bbgX5HfdRhjlH7IX{c3b1GJF4SgDLAZDwuN%25k#`Be|cw`5S(_rPw1gzp{WT=e8_)Oc&mR%=BXN4;X7v6Lg7W1kQLfMmy`0|K$hZUM9D +B)W(v)k1y8^tre)k?p_9h$C*a;A%5RX3&39E>lZK<~_pZ?j~=!PT&#V_@&+12Qwn(3S1|-MuHfwnk5P +i8YvleVH|?f-L`Ve8PAZbQWJU)~+ +R!G!ha=Ha(Hq?FZJq>QXWcMMf^sylbKhi;VU)4GMlQexaTC`mJ%2few-+;y0vA?~n{RNkYC5bn6)rPW +;IS}qKWubyLwy>4h*=&ix_NFq=L#RWW;ZB}rb-SB+6^v2U!V*7fU^qq2n24UKQn_lYM +BZf8(AZINk6s>bL`d}d$o1K2-*?xrb!+Z-nqc-!^db&S5R(RUENt3>JJ!PjUNE&JP&l)HR=za%>P0TO +v?7D@YruzpqPuUt^^Os_l#dR=t7NM1M1Uyuzm9>>-J;ah(wTs8+z+#7aw^cjXF=uq)gLg*IApN*UHV? +k)<>#BfgX~8O?gr`_~5tlc_%Lm2f71t}PE^;SrWaO15;^_F%2KPX@~VING;5H^)P+@jd&-`4~WO#^ie +n5FRkb&qtu1)ot=;zUxXQq +QVQw1O@^+Q_ZNZ>LO~a1fQ^^v%{9OK# +e2+uu_?`(2(r(5N^&yk&NOgJG^0&MT?eShGU*<5BLC^=p^3}t=+;6O6@3WHOs2><;Op!5BG>? +-sio!5odEa0RGM3}W*`)3M-uC!HS;|*{muk=~>5drLa4<5%x|3Et9cKXA7@(XrA?2#+FamdloyxdInY +sk(-_6lUI9AEZjRPF69^UmxRcD0%#z(2X{utFCbcAaC@u@XOr|x-d>Rw@p8^u}Q|ESbmj!FHYN2Hv`q +eyn=tZNz|CLglwOnR +MdYk1V?;|_)EAH(kjj1|R(2v2nYd_&SHE;K(Y?A*nq!+dpVX+#W{ZlsB3mW6v?*p4jnVO!q7Y@Cr4vd +qX5>l2^j|Wm3uSPm0oMYc8aPHL7J?!(q%W_DLB*^~j{@$9-wyF$ZY|o1rEZe%S45%O*armAi>QM>Lry +sZ0@Zakp)@MB9wLoiG8r4N@K#@RBA=KJ8)pU1gYxAKY1TBj%9vxFOD3gkEtH9d-If8xWM^fWjAkpfs~ +949J>AeMhyC-Bb516XVV)m9Dr)8ADMrE|I=Uj3=1j8nN1grP_|l!7I{zD2%8KL)U0QVw^s%W_Hg-0c1 +|eJKA(S(!db3n09CEfYvi~%a0m+$RAWUc_Zq>{WO{A(aUCCeMg(Fg+B*7bY`P^`4+svpIS!G_@R`4pP +TnAqASgKHWQC9G2XP3qvwRvLQ(CL5vymRvA;)&sqYAXMQ`^JW*QjBIL$W+8<**@$b2c8 +8VgpOs_~(h&Q(%>BU|-S5rl;F)sU)7tg6(?ptKEWQ&-D&fNBQO+=N-sMu6T7%hy1F$2s86&52wV17JR +yeV0A+~DMTeJM3mr9g1Sh&N8a9ndGl;n2m)TizO#2p$qF~5R?HnX`aoyKfw}PZ)>T!I1ywmz_T! +AC!r^6U;n~a`wfE{-p)=EkTO=bxmN~Kg*PoC@!)`YLpPkx_XUJCMRT!!#LkaYd|Fo;vIF+DLHFC+$nhAW)#9UCSU?bt99aN-b%Q`n#dmT3B@Sa0n(L0QQo%?}8(?jpl#_R&KtQ5i2VS4H2!Okcng}xr{-^KqhH+fu}I~5z#5S;+)Nw9Oe +%SxT{f_j<>w`qG+Yej`HwX1dAdZ9UD&m!Y$?WEbQl8#*47NhP=Vr>DalV3|*t*y54Dv$xGc<7kCKDvR +nH&p6(iV1FQ>Cnn6pn|bp+mdb)G>B9l22O(zGpBbf-KkfhswNGM%?QMVyq_1loOF>IF^+Vanv!7>4Vw +oN?HD1cW}%Im$o&fH4A}gz>xhM9Z&0* +Zb;K8w!ZzkGS}7e>}R{*)nd>-WmXgov6aDWxEXl?yyNXa(7V+PLHG4dp+31`2hOW_448RQxWeL5}t%= +z~j@B?(4o+)hdJM9g%ErsD{E0klC@V}5U+s>G?G*JeT`A8$u%&Mda0x}~brZpi%sjB21e6k@i0Nodf- +(X$gYLh}`GHCQTH$BjTK1A@XpS|1cQNtO%3#Bz$m`nEb85r!~GvL|Yu#Kkf(@9LeCpF`fUT=>C<<)c9 +qe3%&j!ka(Az!0z%h|#!tnT2>cJv24)QjSC83T9gzBI>~VLMu6!_RrWS9u&f9-DIY2`~dm)yPtlbdj< +2c>s+t|q!Brdo9CrFp~0WeKm8E>@MJ@{-}M0ofB@*OAhF>3&TbA8E!eX=fP_z6rA7%4WP`RAX@UzmZn +n3)#=KcP|4$EHmM-ERMT`WcQ?V;?T_TMic$CsWhL(|Ox>F$GWv7{e!(>83+ +(FYA{kHAB&M=`98^_1M__9Tz&OT_V6uAV7&j?;KGrXq}eK^1p?A=Js9CxN~7t&lbIC*^Jl3mn`6tOlEi)57`N +k74CP6rVJOzGT0w_-}i~5_e1WclDMz&y%%Z6VOJP?v)_CB{|p`9-`(52N8f+^C+Yi>^?m;XyHj_?=51 +_p-@P1489K2L +9shw{}!$f@^yB-po%0z9!zZ?mIW#D&%8&Rj4_A&o(m0lwqm+Q&`T;GLlrDbw3eI6 +=c^iY-+3+XyKW3x&vN_bIs4K%)*|%<s4iWK;;><<0yJyMom1*%0N{qcL;9nCpsFYE8$U=-F#-GP#o6? +PAmaM*y+;CqD4>&wUW>sLrfH)1VYSqm?XX779NM^~&?Q!o6~<;Hfa-Vf@-rp#eYXCpCMkPaGjveU%s4 +O9rV8Ajr$6v8BZ&u}N5j~0?jYl3b-&ia#74T!iNMuh`v?_ffu?i*}nWJGI?1&g)WBANH(g^{8XwnMeQ +mV&`FXmvF7=FLb{6;#$tBy3&YTdSXj6IV^Z8WJ#)HP-liV~6YK-MhY<1XsERG-!;Wu{m=Ee3 +RC`5hE(&~>r-lhhyQF3j|s|Ni=HMHgKsRIP+_*Ra^1AL;XgDMqORbt+b|L%*i=r+NJkZW8M44ECCq7b +s$vLdoBxcl_KiPUFf_E6TDBK3FWvr4yoZMg@=Myw0GJTj^* +QR`_^=bI{gnzDFR6mC&vWDcP>6TN*H^Kn1d$fbkqrhw0Mm94Bo{EGm(lCce-!%$H>Db8UhMdA@6aWAK2mnS!LsZJAE#WN`003A)001EX003}la4%nWWo~3|axZ9fZEQ7cX<{#5X=q_|Wq56DE^v +A6TWfRVwz2)LU%|}AOeQCnFCJYt@Xpjvm|il9=c1SAdxql>DjM)!h5>+ymVoY=}Fq$l?cCojOMT*IkIa}^p +r74*!#Sj)^q=$WU9;ba*&IV_YVKZ(Zfegb#=BsER>*vn5!G^NHbKlQ=MOFg<@U@V^yLn+mTTo=l*P`X +-AIY+O`*LngM_ylgQ#|m7G9s~yGAS9X4%7i47ct#I{JwYBAnLH*=VmTRctRC_rC^Ms{B+bB?WN6-lif +K;h!=5nIzK0!H?fhlcBUS};=rGtI2c84ZzHn==|B({q|;#aK|Q5_&R1EVFAcBg8V#XwC +?+%p#T%VwrDH%?Po~B9{3ParEe!uN}-nOl}sM$<0C<)W%pw_+&|HIar>Vjj@c;pv-KH8DqrJJ6pzbBR +qCDdrL+;Tb7zh$f1WoA#vvY0q#-gCk*2ZkraL9g6mn0qiaw;1MxVQvx2DaLXjMtUMdcy3|I3 +6|V0y_{glEi5^~lG|v>DOz$H8#%>BZek-Zbgbqj4O*HFwjc)!8zcoeSXc)OafPT=Z7t_!*;G-iYW^n{_-qmNNps?Zd9x+(H?A= +HIf7mTS_QDRC;j^ZT?ed~dGpNps9j5zDPWJz$(HTCsk!;rF+ThMqa3P(ahns&tHOUp{N-QRg(qoKg +Q~eOE8kvx|Ca;f;J0+In>H=>fyHo1IU)r*C)9Ai)6^Y-OB`a?sT5-60)vp*^lbdN2sHLZ`4NO8oIotl$ +rcOrHp=LkfrVx)7R@PzHD?K( +rMw616Ny*HlWHc#RV6#B7ISXv=NH%A|R`N%gVrUMzETP0Mv3khVEH`LmIrYj78d*+RshNVzOhHaI=k8 +XrMQKxD<}?o?;@A|89@ldVZyr+G6q*&6lc{-PLMtazb9;*CWNL1sB_~sJi)vnw=E6K+6fR{{*5-n2E- +btS*<4tg3$nQ&cvUHkb!z3A)Qa*R-=w)EO;Z`ze8tmQS4P5i11V_(DKoR)%RHgP#kfP~mi%F(8I@0`u +Pns6z;vP11s(hqJ@HnFnVl+$h+}fBiXQtbHtw{t6q_bWl2Q|6RYnT4SPN%k>M*BlN&e_V#VtLvW2dxZ +SLB5}G1$1PvlM%HyLhu0w%<7U^ft*p6-KmeN0H^wb8BSZDzJ#2e-bMDdw&{>7{;ac0#wp446#E_+#nRh*NUcYv{!?9>QC84aR!e`F>KyC-DZ#EC&K%(9V{& +&NbgDVGZx80$6-;2!v`^Yn8-N}x~77FW4OJcBXW@mb}-rVu!f>s@3Y4dJu7Q@44C8froJCtn3!dBp^s +?^%AH-l)cz|m+@E!L;eA0==p5&W;$RCEucav_T@O7Cyw`jPeD1BN|w)Zbf2fpUn47QI|-&AQh1Qg++Z +=kK_*copnV5@EbW57e@fTbWg +YCl<1k`U2g@#sfh)#dbkrCJ_tK47izs7)vMz}f_=IRs<$`Fwx#1VNNcyiII4fY3&z>%bbWkr$aOJ%v; +GQum)x13L-6@!AgvzbUM=X++x@W8){4I2_ku>1LvE&H*V)WQwUE2=&+jk&mWQYF^5||Sl^*TrnSn=mC +YPV|*AwRxnQ+kQsrD8E%xufDa3jwr4HR`;*oN&W-5IvW0XX*S??toV%iJ!5*Upr3fbSLgtswXC!NN|qs*Mqa^NqM)@`eIlYP-6UP(#n`WE%#OR_k6 +SKKC;B!R4!3+F0Z#tM%%;yXBWMQ;|!ZVA)MAKE1q>Y2MlCtBbQgUR_7@M5T#98C5uFO +BINT1{DD{NR|QVZ~mA`BcwsMMI9sAiyGL37jwiVE +hN&>M2YLb>%%4Nn7P>d-o7*}Sn+5?3ztcI4FMy@e(t>9;b55tr(nlgqdV+~o>qNPo!f}Smg6l9-(<_= +NET@Tc!N&s3@MfKqx%;cUjlh2iz+(#E5vVIH-D>?AtzOs@Bq%nv<8C5tatmFt1j=`3$bPiD0DG2bLx(DR`ZZ5 +F(_%_5UXJ&0aqiq>ITzRH?X3C%Y#f(hx`uVxtK{P&5-PO$aI +4KN>9Kh5%^*NJD@$0HgsR4UlMnM1yc>5C{$V)4-nwjx=zjAx9c4{D$_^2773O*k}X|h}dYzw-(Ezg>N +lfC+9K&}tWNWZ6^Pb$=6m23@8dSO%6?OP}o|;oh1JDGNgSLu# +Y6VDIgM#IwTi~G~Ktq6r01Y8Egg$6Q73js3$seI;GzZ17Q3ML1h=igBv_mC^i7{kj(#S9(qjt5JC1q5 +B^}L}9#A+9n8pEiwPg2<3kaq%I1a%Scq9ZRl*n~6CYk`+w5EFn^P>VoI=fO10x}<_CXbGq#KubU^K&t +~XUC2QjPz6sHlTZvHb@)lzg2Lsl@j%gl+(iCBwhd5e(b6_lL5m=<4m~@xcZxMfRLtF$D#8U-D{}75L( +rHi478z23)-Qg%#@j*LeqCuC`lTDCSa)?#dm$85m*5#EJQ`cu%tCr8qf|E4zaEV1q-3-%kgC;z?`s-E +1kSnl{V%IflmHie>!uV7tU(^4}P+hHsb}~^SSeW-u&-NmvtT-U;WdwVKo0+^5Bn5ZUJ%>PzAfQ1IfD&d*QG=E)kc_d$qA*=JnpPeZ}v_8xZe|;+0fQ|{@VUG7NN$5T +RJ(Z4#$fekg;fRNbFcqmIj{;`#%{3p%$Pnz+eG~<^g6NhO8Qs} +(|LZ=D8B0+fJe7(54Uy6-0+~R*d$c*7H5A~wO<<*f~VRHHX)uS}&(Jkb^l%M@ydiFQ>j9p!weL9`JJU +xGP@%j(H`^{%B{`lLQPv{=6S@OPj{K?liu7cR*T{0X4;EocjWbEyIJ4M1ZdTNzHT`3px3y(drmYRhRv7#lXCYP@lG0AtRL#7D0qLHukV!Q +AMPP#(_xe@SM8JXBOKLwb5{w`+PAE))m_@t1AHwfa4G)#VLb>;Aq^lgwl8NTO6P}|NVpG~Pjn)5wtEm +~Z;&TZl0BbnJFa36wk-vFEqf+B2_vHGiMHcz>?3P!*l#&*L(ZF9h4K$S+0bp)V$%o(-lBdO1Vyl;?&6 +8|_p;+_b?H0Xxific4%NM#>UZ7`d^7a#7sKsz@~C7kCVLmq`oB1xtHN|*Z0MbauhdO!E#53vj#A-3!{ +l`Te?9HqAdfHcm9bm5G1A!S(cqD$?gg=NSX~88ZinIi;?=A7@86%l_s`dxH?QWd>%M|1uYQ3u>dHc0B +}fH!q+jOK!41=ReWBbO*5k9*R1GrQpXzdn9d2u)x9|NvUe6ftqn=j!a3nyUTw{CS;Uai)b~aHMDP4!R +{(AtMg*?LBtXBhf{4w`L$`*C&5!TAy%2N( +2KibBZ>cg1H{$#19gUK;F$@BB`8=R5SWU$mGRv&4fhdPq=$azA8LS)iI(TQl4hJfkCZZWb}V8@lZ_j@K_1;px4&moW&LH1Zu?5uChx+w-Qgpl<1fs{ +ue6NnohiBdc@d_RTsWWf>T>})@1F(MjA_t)7R4hb9v)kVIt}OK0IMAt#n_r7N^jH$cCc%h9=WJDt5Ns +gn&s_vyshn@is-Ley-%X@@vC?Y?fpr3xu?no{8QFZ_`}AXBgTBEv7dwPCocy$YzyNHq3dU&=tzJ1Zbe +zR2c7L9apC|4j^91hpDFtAC430ZaSgX{>T!*P9zGYg`r;SQNZH4#(X?F7eP)h>@6aWAK2mnS!LsW`35 +j_qc003cr001Na003}la4%nWWo~3|axZ9fZEQ7cX<{#5X>M?JbaQlaWnpbDaCz-LX>S|HlHc_!Iurtt +G08~sEm&Sy2lpB4*g`Dt!$Q^)!(o$}XgD*OL&tmj{`*!{AJf-Rv=U<%yN^H|v8TJby1MJG9xlp!#ir9 +mQ#U1_PFb=l^0H>ptjg1-=2P)~$mYpSQYCpdWKEXD`J7MFq~>LmR$E&Ogi$2LczVOLd0vjIbjW5X~Hv@uqo3tnQd*!XE`Q4DLXhAgV$B>BK=IA8{%|7PYNK%*Gzzop0V)=r#AQ!NTrs6EgSbfD=QSuSNF1H+1i5%>Z!Bl_aS;g!A1#H)9Obh4z +9--bF5I}r@5FHSggDrEpkAY~8SKu_g9t}`K0FZ=p^)6ec{0Q*A<~4#0663$jnP$DWy&;?R-t+(n9J1^ +tN|X6io$V~2R!v#v%c$l6uXpja+1=gU8`1w>(Z5IZ?$car?VWCWr`wKn+mUWN)@ +{eS?L@bo=(bbccBvGPV`NAcWpfsn95=fi&Tfd9@i}a=LeFq;7aEbi)b$yT40c_DL%|eMeuO?c%@BkLlkdYI;FUFU6Oar+8Sw +2sn;n(Cn!6Vo+e!mkeZFf3Vel`IRqE@9@Y0dRuV{!hjt$iv=(F9BdyRt@`=wHxNq$aq4@$o_LIs1;JL +-sR9`m)oh-V@VSa^IGgEiARfWINJ^I9W?Ka1{7OA%30XENUxAs%=OBz&1X8W4$x^v$vg-A+fyZXD>Q +iOuGR*S;Lfi>;L?&alybyN}1lS7vBtWV0ed5d+pClyM~9&?R?h_2yw|;HiQ1pbcGa-|bGhmnuEkh47!ss +^+Zk=dBoPHc5RT+B0Y`V`DFEubTZszQS}QR%gH;N8lP{^FEFogbxVrN%!#~(i7!v5OS5+=&ZmXTz +C~FUqvMHl)pnA+Q&Dx2oeiy=?wv7(WzFUElp-=2?`_$Y1gARl}IcEc|E3$ +XuJj;YXIF>LlqIK}|&oHhU7X)LRm&>0MFpN0C*^&h4Ct&tqkSFFEBO@F({>%CK*{{4R@~q+mmX~^=+w +5Ih_S@a|N=1T+~`l2++@ +faFk?GdA}Zja!@*EbRCtmGQUaYyfW4$ZFur6R6LK>Iq@4pJ$TfS| +6hs{~54`1GKlh|7^G0u_2NgOaQRnLx&^+mrIHrN1~0}{qB-=7m5U6jgQ{4k9oNQcz*+LPLi7<)S|cLz +hLZnb`Pw+N}r>kXr~gLf!Y~5avTmPP@Fh53On?ZHuagP>lSRVkLovo+CE8Q; +dXIm(y{&l%vsG7e*ax#qcua1t2W9&qg3JGIDGR2u|#_eGL9Vc+nM&@iC6X0akQ{{F2L$5**BFNWjQsqKPii((!frvW%?XlL6GIidlSt +dw!zGgc^wyPnTVK|xy2We;AJhx9IKs^FaD7KvC?Ih&_lvwv9C`rvxhitUx#R&7TGYFFMjU=`eI48RE#=7yE?&N{}j;i$DNh4-^lB+$}+o>d}hXWn{=arFyWUfqfKA5#}#~ +-l44B6s_dFWMcs}l6Mw&Y +!^&}3no|)VMH9r~|9OOm?_PTkVJbC{1&=LRk*)Sue$kk-V_6L3dMA8x#v1N0c9k4Q*jBZhBJ-;w|Igx +rBr1=f@&yx=b*$xN`{DpMTOFl%wY=?(iZ3tU}kL?wk%2FIR*UWbmv?&{gAuZH-Xc3sJ?*9ZG9t^p*mW +S}ILkK*mBWET0XDo`#yz&&hI)c7_v0~F^sk_}1lqS1(m@KC#DLs0Fk4}yz6Q32kDWRtG +hDdVLbIjy#c^ekAtT(m5WoX?JW9WBtm7q5~efMDE|Hi^i=ipS7U$Y*V&R}?ev?MWCTU7FAvtV3=;j2!rv`HG +`TD-!Y|QK8(HIe0KK=`9^}W5j>t4Z}caOT+7=uwr~_*{i4q=QYU!Q)RpxR^`-K +B+z{(RdamVwo2({{ba(+5Tlfm$rf^GW_-ehX3G`0=9SxRE72Eh=MWSd48A5I4aS>ao!vDjEvg(%CVtxwG +hG8*_HP3Bpu!noFvGdrm2TCGiip`aOpYV|N-@M9dq39aM +^toC<&u9y>|4gTb_`d@gF(uyT$}fAYDLx>XPDB(|w+NGPlVg!!ntCP({k$?pmZC8N}#2}}NalYo{CDW +JN%cdfpt6waGfm~+t&?S~Qh=TrvF{*B+09QK6V6s*Ttvz$)-gG3c1Na=QpFzbn2Z65_+jP(|K`>))*- +IDUlDm`}5`}+0n$KCxq%pAyJf!Tc11dS)P$dDf(r}@txD}+qn{|FV`(yJe<%O@JJshw|}7?j9^qfBwl +youWV6cikX^GTY3V$LOBBsRJ$h3c4k8J79bv#dQ@t-|huK;u2p@=BCO)#&sM<)LS{QI+i=-^3Bd-)}i +u4J>ckiYvdgZ5x+_F_F9o$#u^Q_+h>0r#>@~4A&coJP>23Q!xwH_a(eqtuQRE@{~*WRj*uHR~-2Ko`@ +2FA>-797#oRLhDAnHe9Ncb{4*9jsE!&QecS172c +|ec+R^&G@*OM*tx<=O&*a!;_M@TbNPzInG<@Bp&g>{Zg*aB!-pf8BJZ_$(#Q;m_(0F+R&!v+yejD&*4 +`{t~7LcF3IxuFOdA>mYj3TUYsg+R&EdrI9T^$x1_We%D$ne#~GZ~~CXk-f#j1~OwYy$zcf-B3(rWgIUlm$Q2&Ei#nVRc^)9qK1qMNG2K+)3Bh5N2Hs#O}R!>5)UB5 +edd0wGRhcV}F+Q=P;A6YE5hM}m$PlTk59J!xU4`sPRtQg{^ghFy +gvbdGeblL1st=?kqbZ9vDyGEM-2_2vMdS7cmVl!7HwjE4a`DZIN&$c26a>WDnhmiK_qu>Tv49W$(sPL +iv0&ctY?8BSLNh^qenmxM#Cuo|Wsmm67lx|bHhYLK*`J~H1duF;6U>GqEiRhA(hec`)nPW#qY3Fb7FLk;O*tV}TVlsDM#p!Zs9m%rZM`8)DD6h5>!EyvcQt +I@mFIUB&Eg@++7Ew|ob0uyLL#84AlBhMT*vc51W2Li&5JGfZ#gE4cQ-_F4}@`quYrUH)>O4tS?f!)^9ips +$NylUbPT_)jhf3AQ@Z?UBa83O0FA*kStIr}-m${B&>{NOYNGV`y5g)h`i4+WQ8gG! +06S$SxRsd%Zpqfm^W=q!)%lNHo@vm3=Zou9prX+mLY=H5pZO&nm)f^PeHkEeKp*@6j3dTH?GMRC#n-P +Df+*K`WF;u1P)(A-i2TSdPscxb!%Y+{Gp8^#zZoz$MSg_i@>k`3QW(-bgARe5lg)Lo4Yk%nam-o)7eo +xOJ&fHvRtsg0hA+oC-Yc-F`z;+{qdF~grzN>4#Dr$l)`eB*`ZU3m2B?6dolgTLQ1%Vmf9(LoRn)DI1+ +cIw}4G^MaKT1%Mn@B+0ZBbxybTMy{IC2D@7}I;4<*Sn<#wg6+EsBzlU5#O`>6i1#s{^(}Cv#`Grq|w! +>4#I<6Horm(C={6c9`+C(4OwM(4OuGph1VDwgW)Z!2V%bKe8rR~t0WtQG7~3IKjVY~5OP_fy>sZibS9S8P?~XpjZG +`WVYqI&UGS8&GsnaY{&^$>{)(g=o*4}ccGDSkm&(9Q!`;En +NDsnnzgwFjaaPX#14~Ly!j6%P^&qk2G59nfKb)=+zr*Sz@xvcyL3EqV+I(>Bv^IJy^QLNu +cs+^v`VH6(acgLVj;ac1ii^|uF2O2~F>hk<3NGa)D(SA6cwL;RKNIp))?~CdP%4U`u_e7aj!M`vL+W9 +P;S%PeN*vUPN}0nzf=9Z3uFj0ebb_|l`Ieg~wL*FR$)FzI!B8(hz}9g9^h4{oC=Lol!*~S|F2}`So1NY7Q&n|ThroUY{I4Si)m^ +r4L-XJH1xHLLLn5ZipxVL%*NfJ9QDtJ-J{*=~k+p8#IubQi^Bc4SY_mj~?FfTK3t^bF*1fps!alj~G~ +E~w^;jHln^+*D)N!_{z*^)x+6)9?J+x1P6`d+?0!Dl*BjmfXg2qgF)6)O9W>uW$8_-@?z4}|AtGpw&O +fW*Iy4Z0HbzMoiOKS;EuN@$&OJ9k`npE?X$w5N~OMUOc)C3l3X=Eu?nRNJfwA=zYhjr@5y36KR)zYVM +-_-L9n2X8*K}xsbfI!h8MFXs);JWfY=k6DDmFDzFgs1U-A5fgiRDotVyWynO;ssni_cpA&7HB&Qf%gO +&9*NELrc>mb0khs4TwqVhZ$0M&N|`v4T#S9vRE0M5x)K^zUve ++~jz8PIK=oG%nD(dH{5)C)`u||}Cjk=Z_Ai@t3s3$Tg$YjI?ux!D*+J54&I>%GV$Zx=W5I-<1~rzV1Q +BwsatU^_7$%UO^HNZV?lr$3s*6j2xV^tV5M})lLWXVuFoA;l&P9a@A|?-Hth$%*Z6pX!8@}w;J*Nzo8 +9=&-9dwiIk}_mhi%kL{9IZcmydtJnJ3PL8B@Tw(A#^Z;@Y)cdWk{8jADQlk4lhBWX#kcif4^!oLoiKSs5)?k+?x2EBt{ +SIBQX|-(@+W@O&;!$1U?2cIia<2kTk8PHm`x`b)j?lcZz9)XZZHv`s?N*zgu&8i9zPuD@ILgMgmDYr09P0`@i;Ll1Fop5wLe!DVaqz9! +9WzlKYS%<+mLXn>M1!xL&3y-rsZqO>srN%gu1b-9HE9xZ(d0pjwEQWP7iu4N|$*FL|=KJiZaJ{R;d*88`?LkR~I>ac2 +lp)!lGv1gu%~-)`Bovl)=y~iZ%cje1nX+d29IEwn;6E)S4}n+9W6u6C$)+HeAK4KQss@cR=ip|)~a`ZEU;2uW3k#%($@1oZ*8z&Zw#qKOm`&px|oK> +NWX99WYz>Z#YP_)nt}Ht*H|#?SgaXxm6|bl~>PYyL)lz>l8f0jAKiJ`c>=W#jt5onOt7lI(3SC~Y4)q +2I9FO_sTi??XKAuY28k6$i8jy6ecUIhU67w(YcU6{Ks=*dqk%CWq+Hm#i+eRT9H@m#sX;!^sD~;zqp% +(*Fq}GjGH+9-D+6talk}W(U(9KvQQF65^k@fPe8|;uYvJ +=v%`=|66gzetdwpT8j0X>iRh(u9UKVZ|8!5+`S`=DF|M$g1(V1$oPm(7>u3uFSEdBD2miq1GDYx9fJ0C_AQ3D0s&7ZV(i6^h|pHQz* +?%vHBKY0Jk!%BiMfBJkZwjoq)Ezr_oga=TfA)#LhqNo22P)h>@6aWAK2mnS!LsT^m;B8MG008hT0RSQ +Z003}la4%nWWo~3|axZ9fZEQ7cX<{#5bZ={AZfSaDaxQRr?Ol6w+cviUKc51nXKJ~TR43i-BU^jNiS2 +1-lQi2nceB^^_|haKv8G6sAnmAazWY4~-~%MVmqfi{aypGH0SCZ&{LaAv2#h>;O0KU*fggDE`kGkNnd +|vPzhSN&`1D%*-6y7XXEDol`Xq2H!!_x(ZTZyGZT9HV2x-i$+3@;~I;QIlne{Ougrz4Q(HVh%!lH(2+ +tl!Z8jFgV^!I@F$hA)b;d0gacgQ?IC&X^kx(%1`LW)9~Zj&*w#@efO3+7xNi~V!l4Ui2p3A;L({4qnkq +Kr4fdufi1JZXTC@EX;k5-i`TDS;@9u^*KtwbvuIT20zN-_6!8Q9B1inoUi96;qes>##eH&oM0(%!$#) +0O9uatSA1K~{w!GG7P}@Z5QJYcaud;|AJu+;aG2T%=e(MkF_1v4^Ks!R(nx>J9i3RGzOZxgPh0nT2i8 +~T3wEnQ1F()y6#H)No7_~=3Bk(*J1E3ikk3A_X*M#MeRAcp-61zxdvs7nrVt44xgq-= +^&I54978$B&R&3{=_x$uNz>pa|aEX!{Ly8`0yb^jLSq&d+S;#XsDEt84=7FM!XOtOgaLawH(X8zV0El +J`v>lWTtzJdPi?u2h8cKuWs*kZ_I#~VM9c29HfzHt{0JsYo_Z7>QGO7NT}|SchnDNoCDY|OSdEGKzW& +QAtlNTeMZl1eGJsj0Y);vgS7o~H}Fu?85Fs^%8md?!uR|SQ}^|EMQz0NrOsYJH$$O^svrb!!03Hyrpd +^P1jLZFNr3=Rp_kI%KCg8!j0JR%5*iq7D6~++Q(6xH-A_QFgevJ{%ODdSkjG)er2qe+#B>QThXgFpZB +W}#VQ~ol#B+o3gcIOQ0xfk+r0S4+3e@f>sI4zq1wp;@KztrAF}J8~N=9-&0R#tu2MkC_4F!M?HZSMUk +A8+CjKf1nXFeK{G|V(>d8K~`G(ahFAJDtJI*_%>*8!xGR)^$2I1qqU(S&YHs3~j2y=B|cVA5)}2Z{;Z +(M?2-3lEw^zF_}t*PV%qAe^b?0G*`IFnpUzE%YR@<$g!w8B))4J(ezok6`SdnhzkaJ(KYNQhST$bcXe +`t3J_CpP@va=y2xFdWQ#}ih7Xnv#9w@F(hcykuNJLI-X!k-vrYe>Ybq%n1>)^v7hM2wAym59R&_|=ON +=6p%(DfBkv!dpP!!+*W+w9BBw=ebih{PA^<1yF{xoq0XCpCI8Z(M6TF^B8Q7nWEey#^@Xj`K!OMVkdw +{{(KQsakDlC-b2S@9Or_?P>Q5&qEAwBc{ylY4QW4*Eg{>Gq&89mXd$GNy5$2A~UOKwLBhCd)r*427VI>hg?%ekn^{#>B2tbrx +0k7=3d1p?Wj`O*+=?0nP|!7{m-lt~YRi&7NfpcnCSy`t@jGyLZqP=-r=MJS_Mt{`~1vq7l>vPWF0-A5 +XtOJS0CJNnC|L;A?=M0|1ju+r6aNF_e08c#h=`lnmE?4G_PyhsIcz@gCrYCvJewV@5%%d6m|8}OV@u*!Gm$|^q;RyjXCRVmf^ +>6yAp%A{eM^#??3)bCyL{yy(x)${YS@ZWR%_X+=^mH_b)6?o035vixqH{Ud+^-WasZxOA(Mc@3rDXqU +pHNTB$eH(rAT~k`$MK!;VXnh}j^FvcwKSVW8B3dWWH_w~WdLGq$5z%@PeRJBB)@fApETVN5eRJNF)_J +T=hY>M>XjfTC!)IaWs@oF+d0heVa +6C(w#oKIh70_K>%c_p-t}&of*eKy7LRwy^Ve^OO8g)QH(uhP()|oO^FO*B2)X2YeMe-#8gONRr>wEie +f~vycjWjO;?#o!@;LhCMfA&;0x}L#!Oy7(!1qd=?WG0+LH7W9G4Ds- +r+z+tadP(l3}@h%+L|d>5p^DCJW>f1lwL4@Vx(a8oq!r))kf#q~(J^PJBGSV@NmPXueVkI2;zn!-1Th +A}Oogp10yGn`1b%|!TkBSOQG<*_hXo{I^w8+?|S?Rz{eJ|Mp;%@r8hLq#a0Ag1Puq3@9spV(A~PN5R< +a$q8XWA-7sjck&4{eI%YoYvu)5w&|QP$%faL9Rkal`S6j&IKO6ODeHQP6r +b>%~9i8BoG8p6NO$;TeDfc&hw7UAEf%MCQa7a~B?KkkBKC=|wWN#uHy;NF5y$1)}FeauzKYrHNr0h54 +=rB|}PM+r80k0uhL%-+-oQ(ISeLcKLf5N>Rc_N+fU{cBeCJM4-5UbDgl@26%?q8e9UI&K +FI|UrN{}6u<$1=Nbb>3G`>_eu^AUFJnt_{zhR;mdLuv3rfR@&aQ9ioL!^KyoNAgWPMa*SQOOoxdHXKZ +3UFl!cUUnAuo7pjA6o=iOda7Z6%RpsPW=ceJ(hM870B_Ofd)~QEVeCPBsI(nIDNsr0IG4JOeF=p}=(r +h;X4RLl0#BC2-i{PTb;iYlEhxrVMFCdv8E1z<5&P342s1n9FB~UU^d#6kkzi47@r51a*2zBg)|QUvyp +&x~6)^S6H&HK`J4+e5C>=MY+DJLdNJ>Pv{su8i$qI0c1Fwo^m`KAX1TFDyEhnNtCk8xL1@{x>d0je@g +0yUZ-hIjGvCQB9mXhFW^({8?rUj?leU!GL_3j3Rf%W^y8y^e^Werc2y@5Sf4&ieqK`Q^?P|RkdzfDLV +S4v_fm}W3N7gpj0yNI8Y>AKpoy?U`6*1EVKIxb`|r}FwHhK!)i0{rK+f?;X=PCi=aaPP7sfy$?tJOQ? +95L>73+WDo`-OOf`wBc2#e51i5N(x$#WQdy8&1!Kn +(q)pV;zM=6}*djKxEe0|88#(45v1);j+7kh!DWXI(nAw(rdq +Bx6Rhf +#raIF$bWF1u;_Cd+gy0+r^zCTQUf2ZeWNm4Mw&;9=OV}6m*M!lPOiO^@$hSBhM*-BcGb0x#LXK4On(B +7UPL(+=CH>i{OZsF|902h89$^*l&%(LfmC5(`-_wg-1Be?b_mbwwTV3m2`lIKLeY}i2NF03cRg^alJ% +wBzw!b({0O47B`d`;+p-CB7vs;2ziiQJm)+DmzUd!0h3mtE_}-kM8IYyEuh?ACDE*il5p+7gV@oYhyE +{iuaP61y8&S^KZ2<+Upfe#7aviE6ccfTnB2pRTukn>iDtgzh3|OP@mEf6PV%$s(BXn)W>D9s_I$Xo#I +mtp!yucp@^Q}S*n3Rl^fCkN^VID@M!$GokOyMGK;dCXdSfN-HS7}rCqvH7a^gH6ks&7%CN^}&obyP92 +nL82(xmyWLriJ#N;h6AG7;o-XHI_nVlcqu?O<>WV}5U&ap& +}h3}72JC@D~bWWgi0=1n$F-R`y4-2TZAA3l(me8-aO&2itb5$zkqMHbvaJ%&G+W#UV%sA_zd(~vw5{0t@2#pM}LF?>4~chUT_ +9h7OdV>n(ShpzHv^1)5u55}%P@Nlcy;0A2MaZ3qCf`NvPCuNZ9{p;ay@to+Y*obDk&^xgq$MB!*>tStUeNoUHTjo;mRG +M*Dbd!!;kH)*F7D9*I7OT3e%3*@PeB<(T4qtC7yax3F;AxQVAf%tf#|(j8-7F{3S5YFut|t5hPN +;^LI<&7TLO5kF>0Q|$UwB=M_R2bsUUJx4^iAosJ@2$8;@xEx%-DLy%`gt7H(AF>mXz1_1)*c*(8oKV|2f?9|5Kqm;(mB +}D_}e0uHVc*jZ=(!(rjKie;ey5UEeT0P?{+dKk#<1T62bOIC2~J^Ei73~8eL$r6HcWIOuE2iSq^o9$$ +A2l+CW^g-Dx|5lca;i@k!+-geBeM7u7jPshj)^Yi{zp6Gvq>+11sVt&gU%UEQ&OYALaFVbxB!#4fDr! +m4FC)P+@R39A-`<4i=bTwpb5KfoC*7~h=gY*NdcZh+Hq-#!O!n>d;+<+k~GakOTm)?{)CV_UN4<&_fuS$1Ug?Q%zKb8Y6e%ns&)fz)`FqA29)Oh4O +?&h%R`{q0Y$i+)yT*=ytnmP~0w+*2f&{16*ufluAw#-=--qF+J_H<++*ny;5Tyt8ThrA5^x@pmEt+a> +Y4B>u7->XP_tPU0^D&guYSDL3Ua?v{+HLx=~15 +RF*fIAPg=OSAN83AdZ#(vD!$X8(DbS9vgRLEB2UISBzM8K2Fv_v-^2KTIr8||BHy3&7jk1+XHmeTvIFi54!9oS(Z|S6ey +kn8aVNRzl3!9}xXvB*d~uw}2mtUq-UjIf4&#lY1!X8jh +w4RkDw^Xb<>|z>Sh{6d3)1RQ`{E~sy5s#%4K_Hm=-hS}ttBnb9m9xE16|E{`1YK86JD%80Lb9P!rW`q +w>8tAFtt%*{Ox(Og}5gBifo}QMxLaxkRRFUxxhfYS{aZH_zj~O(;>OQtKKG@w=BlJ3^j%Tz)uY2JV$B +8*Sopo4!sZK#~L#quPMW$?DY}FOXkpleRUbibI +pjn0!QfYTs2-sqEhEv}WMV=BP1!a?Me@kT70Ioj1^EB40XyBi@4Ay4Mo{MvoTX(VZBK>NaV7ZXhzaRr +v06>m%oye&gQJ+!_7WDDjU4`G%4yoI0{oyTn5u+!y50ST?Y;xxtuvlYUzU;p +2@hi%T$oZjk-VF}g$JKcil@elDPG3G9K|;b|KElj4E;TT$rVlj1Lt?%;jBt5!m-?>ZfS09frlwFmDRh +M_BmUg0ahdOa;y7wJVI)oQW?)HUBS$A4a%6f()y(nQ|mz-_izAeI}9hASQ2Jqa=jXGuvxF&G)Ut2P+$ +8*TmhdybESs)hRd$<7Txb2)mNxN6OK3lH!Hoqhyz}%S +DgP=)zL@UkuK&#{{T_L(-%_Fzhu#xI6bv^g;2y5Abw`Qi6P<}23PiVUv8O9`ClaZEUy+JGk1UV*MiL>H>mP0VvH|d<4=0vyHnk_44^DsfV#(<=X=vEe^_Osq2Er$#$i$XXXw$H4L-0JdFFl`ASLAs)Fv +es^`?2jHN}p3X*6fLpXM7eEf2H@_jio=ov`pDmsTu=`-x>t_%;y>e)Nbgk;9{7aP{9o9uCuEP-9meTT +-gfRQGO!*(o(_=(%sXPT?tA*dqL3+(HYN`L0~aI2xD5piKG7Vq7AUM4n>qb&hJPF)QjEtD}&trhQV=O +R?67EiQW!n~K%ZcO351L*NrL6XMMM)BVg$42%X$$yE6jw5`N?mku|`qFC6wgUHTbtR{c3ywlUDP +Bc%sdM8{0Bono#MD>rgy+Y0i8)O}?o~$Z$Qx9H@mVQ%8|aF}Q|0+{@eHB|qxwk)l1mH_bzwLrLRs%1a +JGf9TK!g*vk-S{Z9v9y>MU*LLH?h&(di +Sz_c1T?79uLV?@i|$lcDm(~a(o!zHJ1LnNA0mGdb8&F8vP`gYecM+&wxTt2wQ!>u)c+eUbl#<)p@+{? +XPx|s#mMdb`8zd{s`t!6ioTxrxLocy9DZhqd=4&cLQ7>aRk!n?o40U2mu+r})fajk!!UATO>?Qh10Os +aQcRa$(}s^gV%v1#qPwR)yG6d1;pA&yq!wI#(M7TO3@s5T`p0B7s0PT6NVV+uvyhIdt!id_Ao>b9u#E +_+aMM;odAF09!><0jp1EUp^fwop`M9(P@b$P^5#@VByaiz@iQ@xF#juepP`?Y?%PRK()?Z|HA1Dv7vW +#-w&|XeSl3KFVbiLd9?A>{1lfs&yA?bz@zs6Z5XyR5m&1O&#Yk!&SDo+4nB-DcN<1Pkz_079g$n8gA6 +pZt(MS@!7`Due7RNzxebt3k$y#6%G9SLR0Pb#iv^LRl}~e!#B-<;!TVAm9(JwP!dK+bmGhjS)bpLoid}}8|2I*sFgW=htP>`dypE;Ivo8Uc~pNUM2>!oM;GW3U(@1U`o +)c;Jq>C;MpmERwHDsR58ADQHlYGYZ=x8a)$zzAz(QLiwxkPb@RiUS9#0)yqUcD32EE%S)oOJ%H5K-DQ +$W&Mpz6x1hXr9~INU&M2BHRr$CA=W*6QF#W@3i`9yLLaM=pVBmm}}6aJ#UuOjT*!WYO9F(LFX-TIP`dI+c#ImGH;v7q!B>1C* +;F_~hTS$}t69{;%XM?9#%EIcm!PGsCh(`>?E=#BWho +aQ9;cpPC3DrbZp3QBD+@6^h(_!{}n>(>)8n8ld&YWcJ7@)opTb`4i#UHW2?`pW>jPsGKRvqs6cV^MEz2v3BTIpec&M4OCj9V>U7=kW>=4=y% +^8skiMc4Fbp_?|%1wXsOj2(sWtbO7k=Yu`ZRiz!pXomF1~_k0BSg!U!c}sHDhL&eK9zu32G%U`ZHuQ* +zU=zg2lv@Jl=j0;@OY0pOn_%T!VD%p#IW*dl8gSXl~r9q{{%mlj^T(^pz6y_FI%MlKXX$aH}~_UKM=JrM<-8zzpPk$*RJp?lRzo;hwLxY9~ncAPTYUGxW!G +3W79cMS-!K!aN+@g)xM0xm~IJr7$J4*@|mA6Xtz|BCna{@0h@&Ry6*Frhj*-E-=`o64Daq+68vTGOP5 +aer&Oqq`pZDC3)I{neYl#J%D!wvrDDd2Bfl36JrR0$e|;L=u`Fbmy?qte9UIE37D0tiX0XkK{8fduPi +J!U{@TE3U!B3Ha3CR60W(V#KbFM;I3u@CO1&lvJs&&B=f`N?CA7o@~N-}xWvS!W3_Cu9E{a?Vq(-RTO +lE`zS*EhWdfIkkN*pf>KNXDArdc^?t&SfgOW~3qCi}NL5$AM7&Xg@LUZDg3f4SZF)0kzl!9fY=?=KbS +jii9|7Mb|xYBzJKfh%~^fdhBJr_Qm031NMDKL2FxiD-|@F~$8p)$Eo|D_89mbNsO$&5$oecTnyq)W;J +_{c$Wp4WaAb_G=!w$`Izb7)D;z6R-hIzuB<2*nXNq*hT%(m^KLo=Q}Rq;N|sucsJ-CkJaBaXNDxw3!K~}8H+* +BzzYH5Nrb8i&rOe})n@WSN$^x~Zn@q`D#Gzm)hqK0-7kKRvi~^Qr+_)U4#HZ5208t)d*T&itJ}H$J*F +v(wVUW0^Lfqi-;tTd!&>V+?G>&pjHWC~LgnZzH=ID|wFMNx_rBc)^7EFheb9{UazfWq8xx2iA=@i_BN +BX1bX&xT#RsyRnW0EQt?MD@~!jgBYG^EU8Z7y&~C5_8H7~bPVBe$k$M70=uqo>iNm(M9h>y<JG=ll%#LNzfhITw=%lpbyl_wU^jKWl5~yWqh=+R?N+74un^MC8yY^f1}+$eI{)WJ>}SgCeT +m(wmbbV)vz%)h8uWSda}<-76-m06#|H=J8Ez)j{tfp3TxBLHyZ-;|So0;0H*BySn +xqa@4-bbX!`UY@-xq5F8jv&$$UWq{9t|Ba*&0YAoxy?vg!7dAJ`VNB@;O>`mGpC_^;<8eMw!xRL5^f^2`%Q +j0+~R+XM^!KvTnI3PvFXn(;k7f`s%xXF(Dd4|*6`(xLqMzr+L+8v(cf?-~vN4|aUa&*8P(IW0mh~bcF +TIUZBZ|>;Vuy%VBz59g4u0Vq_O=I_w8-?L`meVyV5T;K|T5A}>6X?XY5Dyf34YGI)O3UbtNZrPP%gOAo;sC#~#lZ2}|0bI@d=)E507wo_IX7t@!hlG~G)_HEn7%nK-^l9T-J|Z|{X!HPW0BM +?3C8jTr2x~}%Q4C3D=s#=*#%-@fTbBDg8UvCty8u1UBVfHlcY}Ld_rrVMM++H7ZCm7H+14uGlPf_meD +5l)DP6u+;wz7+vp1beXt +$y$yP)h>@6aWAK2mnS!LsVNb113O7000O^0RSNY003}la4%nWWo~3|axZ9fZEQ7cX<{#9Z*FsRVQzGD +E^v9xeff7AIg;k@{wp}1owdDVxp;__Se))zl_lHimXERJy1Hs>lbJ~}OUXSd7j2)5&l;He%=eBn<$UccpV!q!$&D9B!GY#!lSWCwHJ{hWouRY2Kh3hxFXH=yx +}5{n_b4cHuIW<^>OKADS&vHe8qQR;g}3b1dEjRUNq8GaNq7(@MO55N_8PL@%a6T=tXGrSy}o#b%Hud( +dhx++lmzK*elQr0hmOk6DoC%)+bWuJy`)^vm6)G$dDYq?%)-PEpP6=iFH!ub$xWCQ2dYq*MZTk*cQvN +rTZy`igXBrkn}@xouwtM{X@DQ2@KcP;=YRc|r<&#@KTnEh{o}i5ogN$FgGHJ>oFyg6EX>u9yyqoG45q +SgnV}9Bh6&l+ffi|676*B_R`VfFlN}5MQ6-TuX-4A7?1`y1yxS-RP)cXjKUZ}x)8ZgZ7dvWhOTXy7PU +{BJMQ;(sq0-2_2)$rmI}fP4r&#GFYC888X_=tL#9OQC9wZJ;`E|mey0_LOJFhu36?ug+MvCt+KZp`lP +jH~7r<@&up0Qd*3s1>PnKjd26mIK#l85o)z>m{hS-68m>@5#cQ|*%nR?BttbRFGptD;rc&FE**a#bA6 +)x^09g=ITyYt^mkBDD~n{Q1fDk?+)gU50s~jQYXa%dQ?$`@f_1-qSaiZ!da58s>U9X$s}#rdkg+S?Y& +*)mvRCD}CKo{^HqI#vZ^zp02}UrRxmi+-P~H#&)Q5%@3DlJ2={ucf{E{UnZ$u;d)R0?VCS4bk^0THGA +DHeTI(E41QPx+E#s43oye^{^e=l72dP_i8Zkm(|XppM#ar)wfwC@3{{79Go_>gTH@Ivh~8OeW>(E~HN +9qBHuf;~WzAjhqLte2`i;NA&Wx-%r=;P;MKk3;)!xesG|9Z)v;r=Nq+G`y&lh1$Q+peYq=8#ti{~4^4O=%k1;)*&O`&!S%-9$Z< ++`z*I@By`bRYl!S*CVHFs*viI`p=|o(pFaOcWMvH>=_)&*7%maA6_R3B-yH%w9N_w +_SNlC_6NqXxZ@+?b}FfH@#Dr9q`2Vk53q6JYaj~S+X2V+~?sD!h_!7#$>J^h!bdiFfapZ$?`904LrWg +p%~T~%WxqqW+;sRnI@*jamHKediLZ7O)y(>3(MIFyTrjF&wi0m)7$&yo>TeFA6I}Rzj!W_VpvPqcWpT2Rc-#Y{dG$>d;qcml_pMIa^+$XR+!@-GR61 +&7Ky&MuFRU)=?EbbIIUsjoLL@R_T04@!VD3DYsf3^F6~NdR6^+*GP}TgiTf41@-57XP$cjJ1w_McuYmn@ZE_WGN +7H-cxgPCC}L0lSUC6sXX4PU2SQ5eA=dqG(8BtEVhoII;JfTL$w7=(_TePcBkUFZE<_`wWa&Ip1Ew>gZ +twes|WPU9xpFQH&v+JTZV~$e=vA4*i++8l*UR4bEOX9rZ;%b1GG_#>N4{-tKOgr(y5iAZJ<{-(DUM@Q +v71I-oe7~AHu@$?_pu|4`E^S$5}Xharjj%9ByIZ@Zl_Um$&^Eja2t*?OBq#%=P6e%3FVed%IG#Bxz?N +63?wq)AC-0fYk1K3+D~F%g-^#2C8&#qgr-`wzjo*Fi(T~zq3(Y#rBr#ok+9f)otFSX^^I0;r8nGNMY( +`_3>bMr~QcPc)qT*w@w2m8>=V?LcN>Wl*L|YSD6#l!K(Ifdv)15?nW)UnpvdTdSCUL=0TNpU4{q9&*^ +ae{qi%4^Keewdh>Vk;fHbjAnk1`SLAMyuov|e+N_&*SOUGTrxqPur}l1FI@FMb*JYGJPI*u52zrgjxp +N2}(EG2Lv%8%At!5)jZ~soKp=#JJ=C5e);qC0))hH|OSB9bfYun_ikfcyeQw_XoM`$=!m4;;3n$X&&o +h-CzT{}3~V@vk+(NtZeSIX=e!8)7b-tOOm?rnVgXv$W1G*v51vnsp#z0W?^debiJ+w3XvWNi6X=}VqE +!uUFl_R45KKh>gKM^|z!%Mj87Eag9_-8S&L$W%4?)}VV=plyL +x!(S4`L!vSJ+x#jS+wAO^a4jjb;0_ya7kgXIwJu9mdQVN@*%{%W$+brwUorAuAq|>Zd)nVMy@-ce>%M +{md)hr%Egqo!U%`f)fe##u|CcQ2iThx^#9VLmO%>@T-RU!uZCPXw59RMnSmP%CNF +BgJ;Bxx-S-L*3HB0}KRtUv;6LF68#>^#R90k~X7mXHoCv->SgwMlQ$)T(?W;e^3uQ3cM{aRSm|pM`b=pN-Gza+*8lbBkrryjQI2ag_3-L{i_N +#+d~OXHU+A{gg(p_NK@Atpa*oN>XNxp-X3jfVxEvMX1H)_r{+Ng!K$kH!iqO91{zg4w8g(&}4i}2Uy%01a^Vr3nlJ>Nm&d +sQ@dH&OM+PKvdcU6*0Fn<$|aO(lkYqg~8At|!xYEMTMO`7ZxSFxw7<>P17fahveh`jjgM>`0zFyGVPhnOWV3-@S_a;GDIpQ- +TjXrF$})lOwU#eOZBFLRwyxQ8fC{i{0ndN-X8itMJ?qjPGLQ0z1753>EfQh;zzV}80ve-*(pOUunZs` +c92C&FMKJ}i`ryGI3sXitxV=w=VWo*oB#)FoWc!#zD&L}47{`)0}_T9(-!by}q9-Z9iReh-D-IX!@6F +UzaJ9{g|*ezXUFxCcMpgP-id>zt~+6#E3e+K1okbVXuB{#oA;2D+?2gR@Pmg +dpxeZ^r*Vv=p{`h?GDf+g6WM(xv6et>9U3AUp-gb$6i#J+mYHi2(#ypck!w@+S8r&p4F>5U)e*FM`|l +_x0@*5v!Yj?{T_-czwaO56DwJl`zVS%OJU;eF;+?X0CSV1_3Yh8)oe2VZcl&Tnz3iG(5WeV4Av(0qGY +R!4YGaa^C3OXLx2BT+C;$ixN-M;H$V^ABklJf_HLt;;P$&=gUO)&qq +Slx&cl^w1FUZ!5a3b+8mekHp%YAW_ME2DfL8`URGTc-(ZH7GL-Vr@{duvkGjTLp|NU0~-QwbC +vr+vllc=a-Od9Y(0X|oNmZ}c%)z+=$xdDEvfXsJGt<957tYJ(WM2khKEMl4{cR`1Q4d`VHYAC~C8MeL +9e{(O?;DlM?#cD^HmYEv7HZ7+jZjc{a=G_4h~hcZ< +usAW|JKGB3$1$N5_TFAdP5Hm$V)(cYEnP8cig%%VF@RR4Zk{}wd5o;XaF%B~tZUDZVmGqm^B^DlW#bp +N6L0c^g}@A0(gPt7mji)d}Im(|}5u5P=YFdAR~KB<4VG|@WJ9+Fal(9<`LE5Zh-lps8*fDN^NpCimxp +}xGO3G3f)>feIK$gut?Bv^xPqo5W{{qu+Fr=iHN8l9zz@~f9M%&INF5<~)eu_`SA*BH +4`ZZ%$r9+S5(SY|2Qdrw6XV${mI6DVeHQat6w9^ZbC2Kth|b +%0i09-n@aCSifTa-v=#Vc1vVur{kaLzuNESDrY3FGDfRD<1iNowKLNH0y~0n++CtSoUsgW_MNnqIpQ; +}QTU#7$iW2>JSYDIW&@(_S`h}{dYz$Kid)2}kTHX6H_A)l1EzGu|Ej+y2sEH+M&svzFRUTcS-XTCwt)ME|_3ezp{4w$N*`TD>as(ER>X{ +cdUQ^CDcw%7m19|M+bSxo9B`UF8y2uLo4ERX@M4e;SHx8P?if|M{cD+yi4YMEeJr#rl_=#WzuSJ5Q@R +^`GCRcZ{hkYmt}ruLghTuar}#-}uoxg0xbwyO%ZWQwwWo?;W)FTWG(esScrSylPzZuahMBpnmCdq}pW +H=V8*#d0ZXeMSA?otUAg9;Pc0e$ENVB+P!o+N!5Yax1L{=)y?kS)8+_G`>ze~d5=A@8vX0D=c0V(XK8 +GgZ-5Ud-z?cwxPm;OWVhLewwbSV3M`kbAP*>6yV#;=4SGn~+6m*Ll?%4B)lSRI5&uX8VB1R~#vU)C*$qt2nn&i)WajFc_vu}IXx +(c0vQUCS4_f*-;MReCts3xi`&x)U||J%~oi%8kB{OL1&$g7#8%);(=>hUkeeEed}>@Q`%-+$Tu>KSnM +xZ2iKhVWcfk`>yu-mzJ0q6)3$tKtXkk7|$K{#en2WJS}Am-|t4k=}-xuk!%8_WF5*7Zt^CaZB>7F7kP +^*;k}&Ntz-T)t%gYM;kT4vqwR+j0z`Vjd}KH72ch0B~r+ij+h-*z0^vQX2DZm=|}bNi>hZ&pFOJ-#c$ +r>bo4@v^gs9BC=u3gyfwq2@6I<@=T&u~atI!+Y8o1`r?t#igI4;hq4{fM{yH>&jm=+^$B$Gebf(ZQ1* +i={yW6XeV%n|PO_i`+?X=+HBmbd_QMRp_#b|E+(xKh9swxs`9912}YxmDO*ksx_Ssr!NxAg}E3x$5?q +1HfOzuVyM-IL0sK6&1I(uTC2=n~nEB31QIs=e-$=gp65N8J9pTW{Jw>nMEts|mH@XB||<@1~xL>3OPF +7|*$yDr-jkJdV^(Ry#P_lT#wmR>Mz~wKs;a4jals6-fXZJqlK}`P$onz$=5w3uh9qEYeNv-9LU_@AuW +BNcQ(83c{}|(dHOU2qo~jr1tTL+#HNa|XOaoH|_`3qi%emURfXp2BS%M)xw5OgX@jVLFH!&Yl!~~yN2&#B}D* +H8UHV4bwi|F1hQop1zucz?C*fc>NQI#A9OKsc4(g)Qq>NH9MnUuu?c}4H)V>oN>h2A>WsSuj1GWyl4u +2Go(P`^uDJxi=_qt<5sx5n=OR^`i?w^UZ%O<29^t53CF^v(-ak-kY@r#1Rs^AfR#wqHDQHPo&i$D_&N +^PWEE>)##sd+NW#{>jT;@9gu(_q|W&uisTvlks>odfreC;Kh7?cY5~f{N34UUDt4MZ0Z`;bq!8>s+xD +NFV1=w?|(R$_WtAZ`^%Hd^Y`z1Z%;n{wJLYmAL?Rtxsfi{A52yG3q|*?_v!7)#YOMp?DF#LWA9b(hx5 +xfy*KaQ|FvmyI5bTjHcg)OdZ+I{f48g27oquZEftV%@y% +N{y$?Ml=A6t^KAvtPD28I=)JR0=T-{Y#k!Iv#3)Pevw$Ydbdr}K_(r*R(^5nz0?r786r&_cxPd>hX*ETdY4Sm-%G{tb9y}CU3@c#Ur +s_S*{q=GplJsKT@hnF=E<6(z~^VcVrpFf`U-k)_9?sS{NjgAMX`>d|}=yXf}ezyB3+IY3C4W^p*cc}i +PmDP06=%E@~Eu>apPBk1HnPTmXQ6m0${`$@Cazmp7(@|6IWz$@vaPDFQQ>>jWr)_gP%b|DeY*Flf_gS +f1tCa&(-As^y;_U35()>?vS{gH1r_Br*C^pXCg63!hm7O+o<5cymwgQ*u7pJv?93LK|u6h;>G)tEsPf +pJ&&UqS)P-i<022T6pm;_@;x}5~DX_e$2Gz+F+p`8UIi-jF?V7g-tkignGaOUh>X9kRpCOuR3Ra5qO% +l!GNE`54_a`y2|+ePKCstxp6v$$9;c3jM~gT1W(@z$IA-%XlVf9RCAS><(yDBpOxCuea~oV(6=8n=)cqNnFM%#_0VutY#^bt4tSoaeN7E6`-8sOO`Z5r<~P(5IO{_1+X@Z`eFI%&HT1LEoDYI +=-)zcGmYG`7n_Bu3I_rRSyu7V`GzH^p&(FX&=#!v<4!yD25uT*WGyyeONjD3@<>=U;Hkx|sgpjf4cff>>7%rMBN% +k?I_HVhw{o%PE%)We|>$jkR1eyZi_O&K=p0BOo;t(yR`G0g=-f<}cGpGJ%7GaW^w{x<9$jzOk2x%VVP +6G(XJdl_rF4@4M5t%4j$=&TDib6i()40xJENr8biQ|@Ju7ARoC7cX`7aWkrSb5v9%)1J0v?&fHEk-56 +Hii~D>pjBMPp{YeNG@VM^+bAh>U?&p$A!g)QBCDfbV9}^fUA~Q~Bm5#QvnCHDhERq?s>sSLzCW$rrTq +_`@NCS;An4Lr6zGlq)CO8O5^z(%J30g+S!QKOV+E`AQV!y9K?rA$hL{d!#;M`KLZQG}8k9aN#Trl@B! +=03u^CJDGD~wKd5_rZm{9Ol(rg+Ll&9ID5%{TVQk^PA%Dj~^b5j_!)4z}vK(|jnF&Gv7%wWU*skdB)M +!D4<35X0j?-4j(kuf$ydumPb5C}5HAP*tq{t-dh*n-+NwkQ#)#a6j2z89a68!?Kx0U4c&|>l9AF&?hFHmem-B)6SAI2dcGJ-Z8<*{Pc-~v^djW9KfpH2TJ#S>s(t +%I(Mrz<~BLWvh>z;1Dan`T!f3lqUd)iKI-fei|nvVb{U2)Wvuba+H@K_S{%Enx(yyJye_GWY%0lItPd +R|#QV?|OdfTQ|X9WV=`r6r*vC3Hg&fdK?& +_ko+Q&)YtP3S~*9`6%dw19^oY{+onObMOy|bXR4!Ayg!YT!f +*x(I@fNzTXPx`vxCuL+aGs@$|T#%@F=_K<&CN_lwwA@(-jA=jHu8MkD{!~Z@@S2QjDDW+nr<}u3_HU)!)6_zey$llZy)tG*;D!|Bom)&f5KuvlcV$wY?Hh+qCC0oqBWfk=^s5k?$MN56!YM#1{OG +S6B1D3_y%Crr8_XFk`#_CW_}u!$0X{8lb_B*vAC`XVDk^NyGRe!nSgZne&Dx2URB*zoA(n-jwUgebWE +J_Jxd=V|-{9)N@{n21bF-|6&57swM2T&)@U>G}HE+7tlaLXB{xDlc504x=>=ytQzM$yI`%)X^7yQo%0 +&$OX#cvUb|`#%OiA3!S&0*+5I_;HF&IFM|C*N=NuI932N<7=8Vdk3t!l4QGNPb!qr{}R&dy#j5-7&*3 +zG#2C+IL3~_GTpF_wx0yV!;t}hb6)zcjBMW0~J`XLly*U=VU1m{rlgQLQAG*-oahN5hkSp(8Fi +}T6Y(55(#4${LNnwWz7A~|HBB3vKaleZcg@quzEs-yct3HqAZHaklud$MiV)xj=_7$<* +VOX{jB@#<0TWnGDSB<&Q-~W(;w>2XknpbfK}zU(j~K^z1E;HKsUtc*{$JnJaJALQ<~9PN0u)+uJZ +!23u@}jSSve`UJnJI#(0NXV_xC?FiM(thZusjS?jmS;O`_v6!2lzmuyq2JD?&NfDiRCs$G&_`G9rnF; +nTTzdK{ol9)k@w8NztH{5408z4!Mn^h!)8$1NxHrDE&#cL814EkgF1*Fw&fK1OXOFZ|zjx_(s5i +I<>G^tQ(xhJOYJR+b?CU$V|aA4wvK0zI4mP1C%)4WMQxE*2m36XUojZ;QSTi&-(b^uSSD^f)?l@&faB +wT027G0!d;AqgLaK%JAY;4t$ZIm)fGVKyL10~yPvlb^F_ASwXPED?`K!?cb3c(q-D5N*EvohJT&`>$2 +LJMP!U*AG^{DEVOz?!iRCb#$oPD*PWSQ&TO63^=@w%e#EucbrzAq$nYrM!vbz5^@y_qxN;5_Wq#47tL +O;f)SJbfz_rS$*KtQIz>M64sQU-(gMATCA}}ssq-a%6X2R&hWU~Ri?A58#>4~y1$g~(q&LmT2+pi(Bf +^V&3iEHP{=BdMO&rs>kNHh2M(+p?zw~IhR`+Kt_m&Hb_ms$)A7jBIhTZv+5A}+e_*358+B;oyXKm_l7 +_}=gPV6QXK17o2SHiN8^m$;JI)&iD5zm(3_KIo@XDeY&7Os)^Ce`Zua*lK1}`vd1Anr?j{pwU&mOQJNyySbTp`Xw5*X$d#V?9m|&_!a +)M(ZUZzH)$r04xmXu5;xeRedwq?1d-Dq82 +#2)6DsIqhRiIGJ={jO{zHs}k?enT*f8??_#MT2r`R}uJbT@2lR^T`IxxA*#f1MTLeF!6Ifby#;35VaM +pHk^%`&2HALV9wOeN@i01ZHIVam37WpkUrmHA*3ecm|8rr17xSJO(rZSx00bLt9Qa;Z=7$i%{2&r8j2@u2nK44SY+p%$n|(+)&Xzd_ymP8CUg-bg9L8 +~0VJx=P5M<7}f+iz@bVN+Xg1`!wfa8u$!U$#hWeagl1GvtVT>vExi0|hZWe>ac?>X9J`t*GuDwzs6R&8WUeNQ8a+cDpV8MWFU5IKA^3*3n^k8G?tGyXp|=2NI2FQX015uy +n#jb*j_gm)c!8w>HhZGa$@&eStA{QJ&GLpC>3#-^bkginvdvLEzY+z_&1{0Eyc)YM_jsNfGB#?09NXx +C?Sh#wP-cM$#>c)*y{>+XX=E2W$+lX`UpQVcihnTPV!r%It)285p{~Ts%^#=F01dpGED+adsK0Nxs +dwHA*{oE0Tv5Ov!8xGYx9ybD8FM=2qGH!x05qR(4KO<;$7)J$g3l}+L9$Xfja(d*lFx0S(k@cJxkUbg +?B;R|Xc~%9cvjWaKP$N@%IuVR6HoL=*lY +c;9o~lVn&b-r=%zHDxKL1!-%%M8g1|n3^Eln$k}#G5g~CO4#A7IwJw!-ZK}{V~Y?NdSP>`>4;(s6!o` +<@QEz}&SsfF@^@+=f$S6Js86!Gm_s0C1gg<1j?TBsFJ3qo;>MZ#|oPnd@m28>Ucg&fK^#C}pE+KcBt4 +gK;9ZD>X~AM)hmIw;Yx+-QPwfG{*0V@o`2M7)hhn1x9KUK_jpctX^T#;3t4=vh>c$hDPv< +FsK}F{vh!0(VIU6?U-Yjnnt?+1AzOrQy?17j9~2O%od3q9-r9~*toLD>i6Kv67bf3;{|ox65K-^XD%} +O41aUAOH*}Wj$?PEQK99+BllNhH}X7j%s9IHIvfQShD7BPF1sOTdCmy&u+dl|V2Kzt&rCWb?L9TP5GZ +tLn;3Y(f;fZgGBsVtax<@9RYK3l65)DoX&&lZ(8l&ovFDkGys;wLR}VD7wE(Z|p1^TcU|PGVn&LJLvC +l@dVs0;|W-ia8rB5~ihg2E?KXNz@MG*=jVmGf4X+T4j01yrMCYD1rS$gim_4_Cr8io&}S( +v)afG)GT*n`}Bj`UeWsJ)UzvO3CdZp>CWTK!v#7vTd1Pd9=-*;+B~X0A0oU89Q2hv0<&y`L-+A6}GUB +>BjKO1YQavbkgX=enUfgz%C0mG?V9>b|yKEtV7%+L1#4;YN@PPm%y!On!G^F7#^uz0>-0X +}Cq*u-goh7+3$g3saEOnv4*Ao+|LPV(Uf0yNATdKaMKK6e=W_nCY}!_LjFXxLdh@ek60bn@ +~t-(#YQ~z77|9-`=Q7DmLw(~hmyp^{FWpp0f(3d%2S2+%3kH}P +(ct)g;J(33F7(yVNuN`PGb~m1Y(>7)y;MWd>Z#^n`1O(be0)>L|P9Ay63Ng>vsX62_RGEiOltyp~Zks +(W1bG!AC$4@e7h#`}8Ho@n)*|Lc&tmvon}^MiZ#{}f2)uh49!cn|3l{HQLK>>e)T%GwIbPzyGUto;Fd +;oK1DAz)VW{Q14}qz_ZKkG@fX!UMFbf>7Z2FcLj(Cc{qD={nuKwtNnHorht>F3#gH9ZF7&L;|$d8fjr +=VtPOyS4#cu?Mi2Gh(KbLD;U5&7_PX`itM^B(&{goT_F@xE-;qIXoEWtU6-|^t7)B3eku-zxbeWPAZ1B|i5!A1NS;H|(K1jyK*}<%_0$+>FMJWd3^ +#O1KO}gL2^UZsv5?Y4B5<=B{sl)F@Xn5cs`ZnXN#a(npA$y#`pK2CNRGK}9Ikq#lqIjLp0%!)QWK6O0 +;vJ;4Sjw4B)r~aq3;xCh0ROfEmDOQ;RspK3P^CdEKC~pK9taz1AODM?UOEnW!kCt+nA&2DU +eaA}bHZjNYixa92Kl5P8_%;Ko3(^*!STBNyojV{<3m+}4NsL`(5lAq{YpM_6SS#B3v_J3Q>6U{QN0VM +DhNr-|Hz`;1SMI~U@2QZ2+Pg4jPHdw}>X2LMn~jq-i2duRn57NZU)gomr-Zj8P^B +Zb1k!aAvUzI*!YfP^26fI}-}f*A5^T>)l>RRCp*0f@dZ$F~);N8oU4;s#o$%$1^!WxnjGIdTvD+eTry +F@P+$@0$-vfuk}X@g9=Y6>y<2|_+$cRK7f_MTr>q5n65HP +kO?^*G&PVs6ndXGD6*x!Z=A(J8CmT3nDxfa;Vg`5&{ETOY57%>GT{3s}IHIS5zcl1V-~(#a;fxL} +KGChS6)3sg5j40y4K@SwzE4ki~10jC17K%fcRAfqbTgcYFDJRFx3+5h0i>*tb5- +r;M^CM({lr9q-r3Z;4!79EvZ`;5!_fo-O4u5|$OY5kxl1(t5Q%00I#$Tu5A6Z`m7ryA;PPxQe{wfB{+ ++Pu82cNAV;?O_ubrBV2o0k_ltl>uZ;+n#B$)Q3zD-h9V~BAxOIv%Zi7WuxdmK%+SKnU>y>QyC$Q38cD +q2O6tAo}TZZ5!%nC~- +teJQt)Knr@A_8nQd*wwLZ&5rT;zei0UU};%MtlWl%PTMAi0dI$!-3&L28%1G$BdzSfM}X7mQkE{CBIB +zG+-4fABDn?7D9w938#E82m?2&S7GMUjt23bm2Klt*Hs>hh?79wN)#GOMZ^Z(OxFbhTSL6azDm=p?o- +NG2sGaDiUtxWR~@TCW#w%?bfDt`V3@?$U3s9a&vY1tU)_ro7hK9--EUS%8gw8r(V`%8(4- +v(ELIIq0q2w1BEsZ$pgVVrB?~v*m5FU-pwn;!2xI~5N7}@${G$Z2ZjxV9J4%kEq>Ej!b`X4*(L@kbyA +-X78AoxBFr~p26q4u&yVWQu~_fa5j`K^#S!Qn|!_*27U`UnhtG()5G_QPGuoK5xV>q*htY?Rd0Jpy=R +j@|lnTusLf_<%tDSQ^xts7XXaMExr`CBIJLutrJBUL`TgqcA6^&o2jggb0@uextj1Ra|asso2X_X20h +lIH^#a9N^)2HcHvs0>knXDGR`Dn}X)~6DhEx(YA)Gb-Y=I77{w^fIDUh!;!m(Re`Z&;%#;f7ZLa|W3X +)F1)&O#*wSLeh#Oba$UH+vZDf5C1`LT$r(pjXA)>Qj*vtn0Eh8yohKPRn)iEW$c ++O3-We8fB|jAdhxK>aUnAx#@$naEbp@v=rLh-R)~8I4fS`_}9=qd)qpM|xOC^0e`o0oLYeukFVuNB7` +l=%*plmte?nHdTZUJ8Sh=o%}q6PB?K9XUF3~q^D)<6VoFN>cF^mWp0V_= +&okqkPAOuev%3cyBXiqW4o+1`+G!8r(0XPcWg48Q&0nf&IUcg{_vOADFl6WqZ(FdGvvK`^YlXz|(X8B +J6tBLFm&)xp&6trQ9y4J~cunVsLYNxINM6+xl8YUQDn&pBN^GTMK{pp$zU~#<-UST +k($(~m;+BxLjfhd)q&Sae{D0B{_0b_> +3w6w9wc;b1RbrzL`Xqq&9f{8i{ea*zy4FJie<21_j@6a_?&2ztE*eC=#j#Bwq8sql1sf^&QbgP-!6$@ +MrtWi__(t}j&`G11!FufI9=9EP$`Axtr(_UCN;R!fnLW{9t}|NXdCAJ;1cY#qn%$?pK}OSZ +h`n2!d+d^syV=>tz;-!5KNfGXuky?xU^wkeh@tDbTf=F89Fl8>l8Wz*AZ~>=O{GD-(w%RD{egvMV*1p07A$IFb&LY8jVVAl*xkP%`rnZFdhhjxA +R~9Bx?1H76SmvH8?-#|nCfH*64#6hKZL84?%|pd$@lgF`%eAuzNvn-G+YX9po%V4Q~4NNF_>C6ZiY9A +WAkaWDvDTp?Tg{4Hb;-p87EBF65nW%fRr4!yk0!oYeJ$xQOK?d4!NRuBS0O4Wx=>H$F%wgS$&P4qn-IS1eu@oA+*eB1sP@ku3xyAeo +Hu=_z)T+&Xqe32E`a}x3WQoCyYK&Hjh1@mNmQ7v)2mXDi1iS?!@A>xWirnr11F+^1n)#D$ZZw~e7E;E)tT8;Nl4PAt9kB!t +7)*ZDp@3gI5!)EpqR;s?KNUfrv#l`X#D&yR`XJ8nA%o%e`nC-a%^VB(t`FQcc=c +vcZ@T=C4oq)22&sH=qV?GVh~P%tg0M@qDc +?5S$|=N}b;B;&v`qULF7em*0b-;Kz1{xSgEp +OZPbDKwK&f#rLJr{RL;F(kaGdRq3UcxxxMp4$Y%-Yg)3Ar27{;Y~ +LoJ-UR1)Kos(i2)#Y0~#pbJA&A7%;w>6Qb7@(AK(PCf+JN~ViwJ=#$(vb0bJLxxq!{Oz-Y-?(U4$9Ss +Y^mTi;iJ05kf$0(#E3i>M>?UGT-RgwDEPTt*w>DT0(8fU$(m9AG{;L$s+zcytnszM7ocg@DaEz#E#RB +ShAOPdX;3*9^miVKWy{`qNwoEk7Pix4lOrIB(7jm<_U-ZE7m`jUo9Lf<;Yc_6vfok=E76y>6aM^bE8D +7a<YdeS=t5^eEs2XWAR89Nb5RzuIyYdc*C4o!Cq8G9_JhsS$J +yCS(jQRf{5xz4=#$h)++zZO|w>ehL{bN(>nj7&nq0_NfqbE;VKZCj618Y27@VhTG^hbmjuH#ttWpDQ= +NW21jPI?pC8$I1xtxn;nx+rOG5|Oyo!aXB{Y|et7_5Q#2=13iD$jk%0>&gUPrBL49Y7p>HJ|aSNf}yo +Bd&M}|5WVP`R6ovX0C4TG;yp+tJpF{4B<5E>}oY#s_Yoy`yf$(gfpPRL?@x3WafTGF&qE2-E!#Rw?Q7MwDe?nMk4POp588P4}5s3LPS0^V&#HzOFz8`> +d*F`=hNV@A-G2??j05y-KzgRl(es}vz4_$r0R2);_;GlH&C915<)RfSm%?YbxJwaA4DM3kQa~mT!jV~=Szo(9A_U*1paM;(7QFKvE +VL-@QlQ!(mRBQCvAksw2zcg1a7H7<8zMzvK;}b%#kJNsW8}3~QHX{dO@}_dLE{m)d4Uv%h?#kTlwel! +I?7wg>tNAdOFBD-4^!(KRg==qK7bvkDZ?&O-ar`%0@oE3f8ZjaL_6w-CU9L +sIqXn$Z;<$c#(5ECDo7j`OvspM3fB!2Y6cI~(XEI~-%ss4wFNQB{C;#S7P-Y}C8iW&D2SD)KadESs1I +Z!o|1>^%G~&X;G7#z^ddJNW!y1zsFP!Z@eZ1W;Us#a^p1x!q(am +P-5>xEYWI>{&E~2n;s2Dtiu!J5Cl@mbD63JIa{e}V@8n6Dhdc|OBlb+JUL?6tP5;DBs2p=zx@I(AjZ& +om3c5>RN{o+Av+y@Vs0(eh|lHQ-gMLX`ex84$o9%t@{=r6LJ$~&>EsHG1ZqcUGhelzp9lyv>%gKVJr9 +R8g$lj^Vki(dP6VIh5maPYdW4{qg%N|V-EexNH)Jq%M5S-F9kvXd1a)CM|jC|Y*a@ +ca0JzuM#+NG6iFJHk@U>}yR?MG?B#TMOIN7#0b7*4m)J%Un5&1W!OHuvQXkvv@#tgR!IC +0F#&f!GBSdo^-h|b}JC$QphVj@sm98!ha;&+yS4oFR~ot)5uUv37qiqEGEn>m2(i^oHT%^bi{0~;}H< +^W>&8Olj|1Qs(XWP})b8Z1ueJ7TbyV~2!U(P{jVKNT2mglm&`Q%R9Fa>lZRc*gn+Cyu!$F=KsFEGsur +B6xls*{Ex`l> +asurCkL_fm1R(QyGgl@_2)&p#9i^o8SjV^*S!oM>r#aFHSIQc2Un2umaI8QF@-IK8s#VX7~^F@duvRW +#{BBgKR2pm6ncP!xfJ+irifk53j5s`mo-L=B;wWc&{&i)Z#tAMi(l%KL2;_ +=8T7S!m>kpRw|P}=+VC4w#%(I{yYJtatGoR3@tHMM0-P#fTi@m&8-Ep{v=+s&Z~CH;D?ysx1lW=vO|!QlpqR36<3#E-MgO*CP7CH~ +R*yrjI&`-vcCjAfqzWZgkP)+y(?&2Lc)<@-;OVX++k{^t_!uKxJ19EafGMHKZb73&hy{VjLOxM}XT6H +s2;rb14poZVbQOAm;~rXQk+^Q6ndwuCwa4gpDNeqPf|Q(h>`CaX3+7b{RnNuSkRieOX@9(5Qc_0pTmW +ZXD9IdL%kTY-0T&s`xUX5tb40LcovsnWT3w8Wl$b#E$SjVq%Z_C=bEn)`nvMb6IKD-Pao)H-G)LlX@zy6kA!m^_d +`xi8+!-_2Jf=EA{z+-=%eh3;H##PSq^vL51roud$tW?JV3`jL2M7t5;>?CrvSZ;ezvb8LpndYSTO7le +;#g?RU^@OWi%lsE2+0G9ygtKb9iaW)J7ZLDgw->g+q!yf;JQ?OA`UbX_9&Q;;0DkwR@LnL7-1iM}y;QWDuAli19%8n9RYG4NoJ7^iPaG=BOn)oGJe(}s)o#JxUt +vIwrw%lzP@U{o1yz(R0NT#mfqzY3YBFfeu;BmBDdytKtz3mJL3OQ?nY9c4=HVg5BxIlEq$e6=BKKg*+ +xZ@8Hj`7y{9UpmM({d-jo@$il&hD_0_8mWVaRi6;j@>MJDDjTItZ1gzT`Vd&23%BvM(JrJdS~%YJdR= +1_l|GBc~Gsp&R9(e#XBB+tnMxq8yj2~xywWsP?P-jt64biIztIzivuYSXBBs)Dx4@ildH!us +61k;px7NdgI-Il#0*Fq(BQr{xjgL~X|A-h5qtOrTi@X6v7k$vuC31Zk1?ov}5VdEb$|(ZhSO=OM6hk` +@e`*}yL{H3pX!zQ{-&Haq;yU}Rr@;m2HYf8k3Q7C5XLV3GSG0%%4yUu>zN0p2)6nAWF?2lybzmySHm5 +Ps>%6Y{t=j*TL_WsoS&#FxSu3yo=diCnGsYZcV53Ij=4evE4qLi2z{U;CM3EJ2(!%#&_8@dsdJ!w6 +Df_>N0O#yq^(2a@b)3(1Pm$O!z2==O_du3qLegm7L-RYo}!7*S)e&A&~YGIK5)W{F*PL2G)^R$(p$&6 +C4R(|FtmV&kNJEbsefgyKFvP5nYal) +CpD^@n;Z;GhA1+9>50m|=@4l%ss<>4Sw)13F8B8gSSG^reRyG;Ui-*Lp4~$fSXMP(FQlrZ&d6u~DA2O`>#xrqJ$kgs!bNmf3+v|F-c@grX1%NDy_;T? +^b&6!=2|HEi>L_K`O|0rWeWW5@v0~`-+uGW?d|Q0+tG_OTYfW`PLIENtK6pQKW{G{|Ej8etiQzaST*I +xUY_?(y~4Xl^ZW<31yuXLr=RmMYyN)rZ7rn7k3V`*9tOSJRhabD?xyFLS*8TpE3z=`MR~8(?+AvfUp- +~AvM{f3iY`hvWzh>%6RMJ`vW;rfwEf%1D&r?SyYs`1zNGNf{MEEwk^f&%O9KQH0000807gYaRI#hQpW +j3P0K&-u03!eZ0B~t=FJE?LZe(wAFKBdaY&C3YVlQZPZEQ7gVRCb2axQRr?R{&L+cvW3cmE1TQ+uu1m +E>1;lg#n>9^0|Az8gQvo_$o!am{ihNW&e9)RNT5N-F>Tq8kt5NrIH-kv&nlJQ4{sfJURy-Dq^ri+mZK +oz2(Px*%s~QLjm-qFHj4lu4eAqIH%`^BFlylZq5^THc!jh*h$hoL!M@mKT#U`6A$ +KlIr4YNve37#$`E*t`f4jB-`@dJzk*Nt_b~wFeakbS(2^RRaq4zUYf6}{E}qJPoyv_(bD96ouo5T@IF +n{N0aloB%GZ~7DZgqnfj0?S +yeZ%jH`=fdP2Tb-ZBU!p8acGR6D9NiYQ?i0?-8;N@@7|2eBYZrZ<wU%6x!y3WC)moQ>r?Legvf{oC4a-a_o~V$c9aLQ4Xpgbm3>TB6fYIjPli&c)3c+5&QM**| +P{222j}_)8u@DU$9momI(fm#o6TDe+mVkJw4B7+h1pX +np_Zi>g{3J$SI$Y$ls0le}0wc=X+O-#z#O<$r`oW#?wzkB%I?EK-gdt%brN;;2@H3l(R +km`i~e!+eZm3OQID_Q~Yg)~FopZkc-`INz6xQ$j5g^VRtsucdZh!;?g6``D`ijxfJoO0d4HIV+Cx3?? +lOE^79UyhQ2l0Weq@|a?n?jB$E42&!1It6$#AHW#m{q-@kwP*SD|Uot(Y?`1} +X>qOFy0zdnEX-CbNOz6Bw_*$asZ85jBNY(}Oz-P`h_mO6&>bvA`s?>Rw*r&6{=0hPM#w%*(g$s|Z6V~}32ql3S +r4po6;5h3kNU&^?Aq%3iW0cRM;VLi7EmuGY|z|*G +H@oOsZl4j;Rql;s~3MvyMR+q-Rj(GnC%VL-SA}{hZ1s;k_jiMPwf+MXiVvwrSG&*<937JhISf{`!wM8 +6FDf2(440=lCMdVZ$MZR8KXfPymYFqwDefRVMF$^6=MVzp$h6r(v@!*)Vb5ay^l~CSAvT44iyuJV`&_ +L~nIZJRjBd+Qsi_cTS-bYKS)X*}?^dd_0MM)7vCqMzEGj#X_$wW0>YxQ^`jd32jR&#U^EhM?~TA)=$C +NzyTp>Y*Pt6c(U4PUwWOy7x4izE^kiqdoETAMV~sQC587)mayHVYN*dblPjPnS_%* +?E$Pso$2A5=KYF`Oow`NO2uKrz9h?I?@LHq)|I1ZeaT-xesVmneCdms~ywCGqiz!`O+#e$2nm1;n-B_o~KD7T4GKr$XPGt4J= +sX-vAv&~{Zjm8_$c*0seK926MQi>d?a=&kr5`wGIlGtDmA_gf==}Me!ff>Wl*;7~Ppl-O44WAX2gls} +VRx7|TzI!@2CzQF8Khv#u@Yz#^;*au;3d-=wa;;rlh;OhYUG+e#Ds!;VVv#PcQ5gJcONF=UXqJ>9UmV +k|j?5`F&&F4Ak-(!d$aI0j1Bo<=VQj`Kk4v^y&v1uYGy4KwGtDDY0cU^d^%vp-@#}1aH)jEhcE!9CZNT +N@z>F)+HhU;w1)MWZf|i`rgV7^ed3N~K0oxyM#BNHD>M>PVP+7oR%tRtyf91P9{@XtP3u*R*230ELm> +2^(Uz{xFEe(#tm@ub?$V8RqkY{ODR~$Rvp%dqc?x7+d5~~AsNX8g^OJta;i_j8Q7dzy#aWBLQ;NUJW} +d?AjZ*YwzJxJ5hrwPcg}=|Iz+_#8`75O`DoL+Eo^qA1->OU)Bzi0b6Qy$po$gizxnh#7V8QBJu%1+Eq +uN`ldr<|oF2h-$tp`~R$vU>VXI&H&SMQkMR?DH3;b(%ZPREZvOEJrOi;K%1iUIsx&5hK@3YVe{sGSLh +>Hz46WdTEbih`ii0jCC+EshmFHYvnyd1L#wEICw~07+-?c~rLwTIvuVQ=y=wEbZrC4iBABRSI!p$1Sn +(0Sr@;4c*gt2m^bl?zSy>mwQVMk8+-PomTbR2577sjZ9N%@X)*KFknM5H9Es-ti;b$PX|CUgU`5@=<1 +yp`A;MREsSoJi*&oXfGuVjr^zB)#>FMwI1if!#%YQ|8X8=4=&qvQStRnEcmA +S%{_{kMit^C&m-K^0UIfdg$lS~tLS>w-G7ecI;rJ2k4vC_S2FwL3MaN;-X}msRi7q$)40-} +euk|`E~f)n9WT?oL>0oj-hp#_YCWG`X89&1vjv%1Di3_jZF-PVR(O>svoROI$6zZPQ|%>zLzr=yr^#$ +h_vogL1wTJCu6Lw$jWNPs4pm$E-{C|A6yKCe?9rU+_~ixFvy$q58NGV{T2U4_euZ`}UPz;}V*F#mqO4 +*_p;%!;^(K=%u%)QB4Zh*B&eXb#%cA{zuREPn?o(sSnpZh;hMaM%t7eopvFzfRpJv`CJ&;yA4h9<(H#da!{k*JXvLZ +vs5CV`MW>VTo?&g60H>Nff=AGiS1SLS`dYPd32M0nwl`GUjm+7qb*5GN02$w2fZ8e+$C{ZM*=>OB%C1 +mhQdl=><4$BydIt$GC<$kSVYe6N|!}e*`$Dy~=X-NS?wW%z58QsQx(7zzMX7k~I2WZXV9=G~7nCXXL{3 +x`%>9DUF;taUn)c}we1!dyDY1Ck%h1CW7I<)fmR#NcjXCUrIoy5TV0l{Yg*}A(WWlGOUlw0njSPUh{d +HOSvg_u`XEG7DUcz@U(jO20@sEFu*O@rTz!y|W7WNDDl2N$9K}5?VsM4lM1QD5WpMQ{6bprN-p@D0fGbaT$xnOA}`zXFakZ+4 +C`sfiEH_N+sHs#-y(koGll1m%ZrP*m+0B-tnSUFZ0NYR2Baq`R>7?xNvc!QOq$H`XhVd)V6(K>7>#X@ +Ms3tgXyE&#RU)(-`+p-cSC+ER&~;B44j~p*&qLvmfw**&wu{G-$rB`|RpUJ!;omah%FZycWOA7T^$zm +f$DX(4H(%b2W4s0!Eo+J}dpv(fHA4oi}B*jXV>^aqGZgr5*^YFY&x|X4rVOCLexo*7Mxr7<@QUYig{c +*9}k(qL&wBdWo2!GT01RdCBCS@*-cSGv@DdftvtdZXN;gAex$1JU)2r2Urosx*93OHRAL!;E|lj9 +_?8pbiFWaA@=%r<8f42u~E#Tm~mu3Scmx3%Cvklz!et9&eUT{!#kCD25gZ)o?!8mU8#}X%qlG1k3lm| +7Mr)CQGu+X^ZIEZ~8TJ)>XeDcMBz_p%s;Oq=0qo_(SN)89S;{!YjiQsS +#p+wK3hxUpSrdlXMIk)vb$>uqXkDY)XDWg7R#>@Ng$4#N0)F3j9DJ +zq8l7uhxaZFenw3~XosErqS*a%pccH&5x&kJBo3 +=D9Y3zDwjx&pI4F{2O|JGcu*EO{B#ML1Vby{lDjc6L^#c}2;QE;-6Vkknz5;&%xL^gTb5c}clzqZ#*P7(jMk=FqXNNTbS1H@L_GiZj0b(&(J7`YWZB{<1P!mz5(7L#x9nM~(hnUcC_*CNos+oj}C +-np+!X6hn1eR0+jN4c>#u(=^|JNRhxbpMq{o)dbFh3c`+l@OZ?1zvm#zuSiiOvl+=IZVYm{LiCOcJ$? +tDL+9YcNuGaj8oyMI(bgIHLKRwyy77#=Sh<@}&VE~3QHBNnB16ra#tqy&UA~4E#2Iqa{8L(DuB}r_kb +KH#RNabjwkdPEVB$#@y~x+u>@6~`?-MHGS5tTuLvgGJYoFFJ;1>kk?ePlSG%2R*G%o0~IW3q`4Wi1iZ +RAEHloZffL6=AwtykDX@|1t@#LFP^knkwVf4dGO0txm)eE&?!`p)DRaDG{ +SGQI(Csy4d#AxVE7Jb-09#Pf~;QpCp{{%$Qp-nHrR-5q)N-0BCRcs&dTN-~MTed(Q@Scn;NE?3ON^u{ +uiaPPRSFvLso>d$ntQ&Kn@U`Dt3J8qWlWk&BnB9-rq&K*X-j~-1Pxh2E{Zdi*iIoBjt2} +&E$Do>N?mad&_mM`IM*@tcPloIDRNZ_yEynY`&JBHs*xUNo4R{3g}!Lo;7Chl<@nkVE^1hOoVZr^L1fH`K1^b6-~v^*v2oq&C$o!I&HGPeVoFY2dYDDL(5B&YUeZ@xnALLF}b +>lXPF^a*8L+SLnBm<$w3aqKL9>TY^%w=cZyo5U<#aTij5To@v{O*0I~%Oq33~w-R*(fg1@^0N=1%Ure +3E{}o1{s&mzvDlEfYMPa;d*H6_6RzHNBR$sNFb6tBz8#h^N~zyMOCCf$%G6xcXe$86Sn(WzQv(8p-PQe +-|Z)DfRe+N=Ps=hft%mB)%#)%B+iHjv2`-IfLS|j+CaI!5hf3-yELzX*rgYJs`jY!h;**>q(?(fCXc}#IZpf3>|UpH4K`oh$JL +iq`qBrh*L{2%S#}@hjtgVQMWI#iJNB;C+RHBq1-#}=kpBP={gMhJG4sm|0Fq3L9N01g1JM(TjEc78%P +P$ast5o_=roLAh< +UJ~g=hFlnf4goO?O<@XpOG2Wm-Y*ouNNH{N_>Tp=&^>zVr3t02xGr*gOd)s9dWNCh2a-c}1odLJr7(qRcJsz+e6KX4Eo`C +`IBkgT~QN{0Y%{^=*CgRC12b7I_+4(uYzN4rq;Ba@^L{Wri>3rdisMYXPoIAi>fMc&p*&X*A9>;arQK ++hgrJ$m$jKE#__kH%{6CiHciF-8xWW=2(m54ukdgYmB89D4WSw(b$17b|H%$iNa-6>oh|~ +G(3m7OLZHQPL0YlGd`JS`i!$JMj3sTmeyT^=8m~YXZQYecF%Cw7)=+D@%g$MFY;;(p|Z+>BkY=n1*eU +i#j$Z(xZ7PZI(HOFdR)be5C*E;`8Kb6?{%Q92ZNo5N#)Z!H%Pa0R`;Rh^L~U@2f$;eFfZg%>2VNqAUy +b(Q(~!&*bYeO8@OUn|Cs015PSd=A_Gzk2O=bz46b$P7<)KhfZGk9)luYdy4iKQ+5#?G2sdEg*tyd_&d +7rKWgu2|;&;+9yQANT>7-!Y)7j4mS{a$uf9}aKloxOC3YNHl1HX%IhhUO#a27abls{(hLf9dEf>@&a{ +5=ShZft6NiQ;3o1LCF?EFGC>D-Nc^=fcNy+Sd1tF1x)9#X-`6zFz9}YlG*Cn@?7FqDI#;7)Cf_H0~L> +ivkib+!p$2`+bIc?JP-V?kehV-oyTKTT{p!G{Eb78-mvB?M4tLT!IkiWAU6$-?#9CA2q#TTlh3BD!AEoxYTsl`wJf>lC|{YVt&M?@fD=d~%u2~Ns! +8U6L-_4r%n;EVxwF5>AWq~1inmu|t$l;8ii@&?o}fltQg6rGf3MSo>kOnJy9=E)2pNib)e8l*#q!Gm- +{#1a-9h^4rRt5HM;&Yg`}Z)3RY1<^lJ42JLR6~>Lis7++Xk6P&npMQG!=FPZVuLw+Sw8@Lha^eJmX&8 +>RoT(Fmz871FxuVgEh%!21O;UZRnvcIVB^B|JH}^E~78Zuk2{#02WGb)z@u+IL4ql!SQ;w&L|*4a+LTeV#{8P;%nnfz+I1c;z}t7$R&xbdrc2=-YD1~s}FiXKDI(AeE^il%12Nlq{4OlIRxQBz0#e1!?R>@D!a>D +^6)vhUsI}93=9B1y~FAcI3X#$0a^dfEAFC0HIX^cS7-`7D2P&}uUF>&bb +2x2*Jr79S%mWWILS~U9ZMqI@kq?*QTqu^qh`+7qZzT>rI_#IR2n4kJt3swa3ij^@7q!mZ +n@|(-cTD&fDjw7$0>*XfxBEMX{fpJB-7}ztsDCxR>rIXu(wZnOW6o(nM+0m-k03vK4)M9ZWp%h>|EVJ +QSKmm8KyF~mbD=d|pQQBLVTaKiR0-rPTBcAvGO;Y$-73<|&Usi+XV*n=-Thl?n)@V!`g; +47FMFOLx#W^@zOKepnqO|mjE8uP@7gDPTe5d_HA9T)8qk8X0C7&O-!H&1e0XeI!=BS6j?1JV%lwKA0g +T%kZN#44!x7=liJiL`;r=%pryRV(5>bRpz^?9=&Y;I$hO6&O*J~H!BUJYYtBeeEKC&2cXNy&%q{YP%V +~KJJ3_@6<5zlAj63qD8Emxv^u;4Wux}8fx*t_wuY*)LOtN?^t06U1(G)5P3wOL>)BS>OU!tJOr-8#w# +JYC}$jw~M>@OVyR$WBakC>XK=P`Iw7+p+%ViWJ*uTEstXqb23gP9adnLN;>|kD8;EHV0tFBiEsV2j)t +AIFV2q13xkH^6F9$MbKqF+&QVCN;e7ip&ps4}po)oAF(lY)NS1*al2qsN5$>6f*q_IqRNz +=d?yFdm{qiT`6BX(-rLq=#)Ld0{&JcBDGxZ3kKlG>9+4^ke8|{t~p~yJZ=nbjWSaS5sG|5_aKKQsL9y ++DT6|siVCjEdb#M`*IH1kc1j~$zz4NDyDHqlFlX>si2bvB#>=j$YO2g^XTcSAkRk8(=;i80G}}@rKfO0AJeWqi_X)0dP$eX#th-Oi8D-aH>0i7r4* +wlRmQrZ`yp}XA-_-Dt~-=5v*;+KF2r=5iJoU0K!%Uq6mqYqsIdkJ~HsC8#>+exr5Wtl@ +gkx4E~%xI1V`w#0z2QMOJ~@P~uIm-!~MKrk7@!*9Fe#fcMbM5btl$vZ{5#q)TET#8B*kd`verZ%;D)G-%fQT=jw +3df8x@~pld+zb^n89^m8!0l%j>9v^S0{9VIl|cg1^-PGt`1`4%o#JxKT3pzFd6A?u4+c+7u^&Dx`f!`n@sROOlX{w*^zeXy;lE2r5sAUm4AZ;&6E4r+;3?@XW$h6d~R0z!2|&%nI&R2YcD@D%Kzf-30l+ZUY%+OIerUTL9XC-jE~E^lS9{zTCT6f=8(iqn2myr80cYjw2y?3$_qc*a8ng`!^ZnyPIlB%uff^}WI+uz>R58hg6?8Ohr5=&tEwXG32ax)%rm^uu!Z(+YNU-K0(XQgL{8o6ec_YQEh|3!zL(bpY5 +@-01mKX>^1!r1J(N^-J_loikMUKI(?>a66_+^emWj9 +E!TUKz>0ohbv$x9~c}1o3>TO*7drioD%-wrK=JufQ8g0kg%%Px@jlzkBe=JvbOG?}s(_M@-yI#;gf$R +U_xAT?QuwT`|VXxVC(z51n)F>8W6h)l+ETVtQliAIP9k&z@rvrMO2zmqIKN|3&!ErZW_rZgG2R<;04T +g-d&Xl}n53STGtNpntgBbH9#|+yp%0FPq8!<2ZF)J3$a#CjZtB6G>i9CaCM7mPPZH+deCXNB-;{5%8Tr!V{CGxIbd$juG0#g9+9n0+I5-YGsd4z?K>0I +37}(=~{>215h%s@h&46v-HKbEf>$B-)R=?>%8F*Z@KhmiC>%7a+)|-o>{XR$=j5IzcjZwUrM*L$wjnm +{O%vu(iYaJ$uHndz-A(O;P+S9@zgya#HAO`4Jg`wF>5*KtgJjWvnN}`kK6`p&s=g}qEZt`MQQX2MRN% +3B@n*5pV6=FSr*(mgg9kgCTGvBXkU5cw$Hq$uK(MA+351wvYEgcy2iC11&C +JA@}Wm;%qHi4(Xb#Nga>-K2cri&e#*f7Mrm!n2iSf4;rmBfxCqp#><$^*^W^1biK@eDDw4cM@Tp(cG- +6)I3M%Pu45u;O83oxW#KiWF%ob|2yp*ghNG$JNK)9vQ{@-022e*I1B@6m;u*!x#W#2d*=O01 +gC3SZuM=J*C~f0p7;d#dR_V-sgA*k&>aYw?96Y0$v-RV6|vNBw1w5)fATsyhVXxt^7qvh4%FV)0cI?m +|CM=Byp!$j)77<_z%_#S^tT^whla|l#cu?3O$78dDOV{SNYiB=Dm_NhbrFyE`IWMBiZXECFGvR0ATj- +zxQfh6Uc^@b@a)<5FcG~^c+^kU +!$#v^3K5q^`^wR^h0+qXI(b`w_y<1+Eq-@?mBe?3uWu1D_F`XlW9jbea)zjK%41>?em+w;_C5(u0eM< +5#tx7n4=*A=&KahorNNA!U+l)lo>s+;K33m`L^y#~?6(lvn$6?y9g +Fdv(8#eAV=(pYGe|+TFapZsv=kw<11~v2SZZp)lFs_M${U4YL%Yx?S-u*!BCEP*{kH=l`-+_d4K}u?C +-2a$?9tD!Tpj^5_c|%Gmiu~e*=OMwy&ezcw@{EYZEu$~Q8E)?_2>5wG%Su-?J|6-ue=cdv!70SYzFZN +in_@(NS2V&p_EO{d?B5|U$cn^FRs@$uiFgi|4gSl_38O$~exno!#lXh$ErptEPi~xPO{s^KDDhs%`>Evy2AJggs*I1%s7VKsaFiUk6H$67c +pVp~bUE+Utq|BW&CpS?Z`7%w{GjiO(n>hk@XQ~YY_Y$Cs<9Z7R-!Z%M9Jl@AAc#W{9VF+O8vvvvnP?(MSnlua@iS#duC915z~3n1UI_l!&I=C{7 +o7kyIB;(=aFFrIuHj8ZUK2&RL+;9Mb<)WCD8JfdKoQK`qEtQbH@=eEX+w46xt`_5zd3Mm60;ODfjVE| +n1lUckk0%5*39jH;h1vWgyQ5A!tz^kbf{Ugm2qzdUqSd#pWV^J!In8hv|o&zcAh;feLas{e;$+C5+Wu +brTO+7QC@8_?${CTKVphrlT8wmnvgpk0~2D&kH2r5~i1|e2H +R#gp!Pwh-W~eFk3SM2L#}B^Nl;LtYRBghxy8{zYVT`WOcXRA4q +}c4NSuqOI$T9^fZ>}3UjfrgJQt!%Sr11ByOJ(7?myR`AHuBKcYLj7OP +_u4|kJu{4YzG=Ynmq0jkU)YCx)*MZT*jZP#?o%HM$+?x#( +HU|<#AGWd^WqdvPx+`S_O{AQ~*tP45*>u2=n{cVmB{H{C&dY=|&1MLIPqb&Vi1U)EYLn>#0m!0FWU#g +3@%)H|%cP7Hg3_`~;XcL1sgBQUw>?tzt# +n;fr`Z?7P42BuaSsUth!e;;|X*wF@d~BG0s&Pi^(uaawG^W&f4Wb9#$!Wn>UmOwiAeaOUZqSHf +ta{IUw!OXd>p}~81|9K{ +^TSwLx|F8O|o$k{q;Ep_;owW(`uPXYL3)em>vv(Z{K;=WxdIi2aZYd(kz(@u3 +=_6MhPc5XlhGX+xO@gU4nV`xgTOxC~%$IIMwlv^d+Qf6?wwq2wAA4I4NX;3o<>M#K9hwankw`zm2&w% +W>jmU*&a>y)lp;27h!-fC%{Vd>Q7G`gb*ZZ-NbUJ0D4a|dTdnev`LjWe4LGe!X0(-Lz7?KpaKV)M=Q! +naSVM2aL`ToDrVzyfSktQ5_UyoN5 +7lc=$Cjo4xs=qKljbYch(Cq3A|%gRc>6>mX*EkAWUzgy@r(v*oWN7&$y+|Z04ye_lC1WXv1-p1b+l}3 +RW9vaB_ukpmA1DV@UG878=ddr&#&38!kVgv(&V1@wVU-a$MxAJI(2$%hoo}X6R!iH2G8G5RN->NO!A6Fk1`tWe;KAE +Aq#qi!cO}r^_V^<67m!n8b369>Ba>_-{h;ImX(Lz&?^4)3+X$~QP&j;yf?8~F@y<;ONG~iXQb=(*MT8+NcuZdv+|{8%CAj#|Kj6ZKB4#{ehUEhG<%~PD&#^JL0S%fLX6 +$#SqYivR=O%1kT;TN)%kZA6My5T6&{<|^c*))ShX}O+pnYJZ15^jx2J36< +&0dY5K@1&cc__BPQPkGuKQ^@Dk}W!Q)8PHswGP{h5PjA8z)jj7R(J#*RDCs +VyNhQ?&-UuV)085o;m(MIp4yWX2l*uJA@C84imF6CI+vz7XYivv-<7ewdE28^ba3BkyZ*DkOx~d`S9| +aQ8~{;do-bdWX~D`(Vl;kcP}CBG{bndMg|>YW9*KneZgo@lBsC0T+?|gP<>dZ-Z@}515IQZ +UTu1war(kWu93*{aHPz#NOELP9}9z~#!a^&vpZGtmX!ioI4E0iWhw{-xJ-&+m5!BC&mGGHi6dFCwZLe +FVDvVzSg?aE+xs$3Q?>$%wED=ymaC!M?FAzOU+ZDL9SZ@aSVmqb$s$RiG^= +*UA?#Xhep#-R2LG{KStW!rtAz%3^a)a)j)WY7aeNT9EQI1E+0wldzHJ;y=G|df9W)A&NO5*B8YxqwVlu}fel|?fK-95J~~P|?yoC#-n%*vkvP;s5EaBO1+f;CLZ7Z2)D?IK +-*H{udrPzFjy=0&ul8KTEU2XmMQAi6i3ydB<8_MKj(SDD7CpG%duPFe52U`SXD<*Yn$$NBcigJ$fd69 +CwsvZKVmf$p{>P`fV97Xsc{;z1QXJ=)aSLN9mga +HL5##DT}WYRXZ^47%1BIext*9bMxa3K{WP=oy0>;o+rT(fFXf4#PgkYrX37psN+1m{Jo$?qHcgUhrTB +Y0|C3`IvN@uW!D!3IY<_n`-`_urwUbXd(npND^)G;SF@ +vvE7UEeRq2)CaNTL*q`C?xO{G&Cod#zHXHRq64-7^xRx|#_mY?!+Zd+w!9kLZQ3VO(oCoMXL<&w-rA8 +2F;Qa)CbtgG?^JQMAS+t@C46wN3BaHC_z^9I#XQHnJ=%`w~uq@6p2c|qKWU(|{&QbveD{g(2=46302P +-~MSZ_z(D;Gh?YB`AhE?gotw?w+kpTbz5MM-rZ{b6O=Z}fy#r;;;FjLP7c&gM-lFyM?Qm$r8c%;z@A=5yU7~9_-FhkKgB>~pPL++7Fey{fyaDig7ABA}#$~)nre8HmsIQBBiFj*EQBtF +sMZfXmA+))MAm2Q2Z=1B>-ADGG^sIX{Ly=LV0xBVeCHP{Sg7htW0yYsA(8rfU509b@`K6G= +N)zWL#^cwlA#0@p81mnS)jsWj)4@IC +omWW`%C0|$>-1#xheo*FbE%_eCeb7S9?05)eXJru46ZR_p%rD;#Y{i@l~GB@;ua0;TFU+lNE$E<`B}D +#UV5^sWUdAVAL}FE+@j9jLXlO+%?h|T41}z8B>B-`pg4OA2Z@*ck4lzaU=*!-QD{_3v>Jz;Dqu0q$r!H!&8b+RkJ4qCp +z8b!QfmT2M95XD#LQ(rQfMT*lFuOS1n +mrmJLpYpBP$m$Yd6>pRD*^*E9OzxA +prw-+RyUf8kM1A4_^^N;F`;O?)`(C!}1G2!a=`z1CRE;8-+aGP(o&aKMn7{sE2G32NR7H)f8bFPnir# +DsN-u^;9NtssN;q0!_`q*|dm!TG(Mu8!gJjS_ICM7YA9gRx6=S49-nuSTSmOE=>3P9WSS($=voH}cUpXmiurmGp2*+REdxMYRfwd2%7)pk9v5iHE!6KLe=hP?e7c@)==J4U=l!*z6%eWw}do!VR&X#Plnp#v3_$v|%OJg5TE`5Las)S>(Kct-~M+Hg;%>wOpFIJlE>K>yV8=55@a>28<^=84xR*(o$o@q2hX+j+%FTC1Tq +{A8q2?=;%m_brhwZHJngTb*MXSKSS`fPc(4KId=djZV@&+pDt7rWAr)TjTJg(?Om;*uH{o+mE_28d;# +rdE4I4P63{uM9;G=gfEZFD9@scd;@0Ul9CF~f{nhsiemnM&DB5jAJ_=~X&%?O@=-NF;hZxBN(&@z5HK +P6Tq-*dx~!w1O5Q7QcGH~p7B1SBYg&DAcWkG7IbAV%X#4Ssj{bI)r9)QN7BAdBBy)YLM>|o3TWkC9L- +=$t@do%y|Hf{#I=`_SQQ}&TDE2A@^w7||@WtCZ)L;@zEz&gj#+v68AglF1BQd>n_35$Yp<7kv8{LZ?> +v+dwk}$W}nfH9;nvO;2==N(&DDq7|OF}dR33#1B+MZg}MNb0ml&_aR)Yh-Xtm(k^Xn81_Oa(g_3IJU_ +_U=6!5Hw7xra-QI_VErwl=&UQezPImqzxfd4R2aSH*r0mcF`3Fqf;D&{yKP@{r$u|zfeU!x8cB$+nAO +QT7AsDcENj>1+z&v@m4zYiFA>=%w{S3x9(}zLlGD+^U^$TeII`pDn! +yTGdk-XW$yeGr3Yd-z*rXbp1rAhX7?$?AUp!=7Kn(oVJ5c^)9(SUTjKx3Y6cM2gUK0VSffv=>yr|{_- +^w~gJ*JN1Y(=~}xcP;LkZ_F?ki1yBh%f1~iW8B^~5Dcbq!)LmC?urDxFZr}BGg1!DIywkUwNBHm%dWquN`ybvA<1jajD#k2!j6 +;bqylYQUmw9WJt}N>Hj0ziaPAfvOI=k3t6(~hYGbzRh7>%ZZ_OY6kJIXlW+)GaOO^5T{Z;(?tdHc5*2 +Skau8FsM`@4+ru(l90Z??qA@S3O|c2^M?CT;ZlkMRyq#?Mu18G?;=~k?W1~?1S;x#bz5#3$0m9-c(VX +mbn~OJ?Puw{Rh#DHSE*X1tdlRD!N-_#RljmtkykfZ|u2`8HAZvY6}QRro08W5u;Bd>P-CVV$AL{((Ar +?{7rae$^@ml9PTP-22m9}wSOK}5qea~rYm#D9=1g!werF8_@=k1wAbiV_vR*K>f4hal`6N{r>fnU-Yh +hwW2X}!*6z)m0hw)eIR)B{DKHlS&hK4*X(R%qB!*6WuNG^IB;j=UYGYvrP%YtlK=>_L5YXcbX-X4h6@PbK`#nBCc4UBl;T>QhT9MYG=v3WtwUwb@lq3{aJ;>s}}~(c0I!E;Pij +WG%d?-Jp0$WtUmqi2TIWp9I<(q$4v5qGJhV#X|+hVs|!%k==UG+dvix+9oo2B?R(Oe;aS#%5Z`K5$Uf +d$H%pdrMW%V07g(45eu=-s>MnC;nvoCQ<^ho?MPbYqh4K4q04MTU3yf)+tSC=JJj3@7vEwMss52*&46 ++$inUfdzwY3JKhxV*UzOZ_TpSSEmK<(u!&nR)Qv64c-;Ezwl<1k1ioo59C{tT#@UFGQ&(Fehvg^pvE% +;#&m3X;VI@(Tp=J$v}0co+bsl&fVKuLP9(;oG=vQ8OqNm2{InDxU5Ke#BXJxt&zM{%iu6E%Q{Tb +K;DqV6EpCqmMsi6G2IA2qiITf|)-)(i71el-y3(b4-!F%?gr8aJF1=|?$`^WZOF-({Tp* +CTSHfACOM{N@EnRit|V7tgr^q&0!e3r$%~@V%L@((8z7w=9xFsYO3{@;|Hi>YLhuAN#*+GGtq65CL-* +nP6Q@Epj;W8dYH`=Tr~#oc4e|r6F^2Nw($i@G$y6RIX)WB9)lu@s!Eo$xo1VwP!BRYMDwaNs^5@OBhd +?nz)Am9cDpx;?Q;`#!_#8b?j@tuFh58ce0Z21TBi}9I_=G54@p6r91}nT)@`R(6_^G(5X~+@%BgXaOu +*9V2OPP$twiwggt48g>q40VN~`imc{-r7>%}q+aT{jJ8^geJDt0I5>xwutm$P1l_Mp64G&XN5jh +-gm9i|oAduvzY)|K|E%JRSwA-i@C+}&z;;@5fyfr>l|Z6oTs_)goP0|MNJX1M{e^G!A*UnrE+8)oJ(8 +b^<;dYyQ>Jos$PnB49&AASfJSo`*TKvpcC6y&@^I`<1wQ3c_)84%u6Pv5{pNWd!CgF1AiM +!bYw;pEuq<2Hx1@XKz()Nq*E=*X0P`kQGUviKZ0-6ao|CABTE8Z2@uC%E;yn=gyS}Pkh{05bEVKKBg< +g`QE=wWNkYUv`Tkkhi=%4-RJ<(BFWbFfc!TnR9x6I*qWHsk1Y`sM8H=~=FjJpzWiZpcRcz$h(1;MDuR +Jf-l@G>(bjvW$~%Zo*eXUpSTc*w$uwS5%Exqv;P;x-M-huX!5n2_p+5yN@L9y=Km#J?a-w1n$~UwE_) +cTGHb@b~Hm-CV0SW0&wB~jtdXN1c`Ka%qX$0<~GzG9>&{oDVOf3t>)i>yeBWyzZIVw0<+`#R%YjIFia +JJ_tru)Y?KOC#Ejlt;LZdazW&`yqIHIl{%kX@$;kiSC_felE`%KAT?PHKUN2nLmwN5Fu=HjgZOHvXhE%NET!IP(La}*~3}tUxI(C4oTN9 +#oG>o(D67E<6AWH0;gzgHH=J{w74+QyKyL503i{K_an(IDWEY@AtENGR=I5$%Y3I=z(-p0yMb=I;EpR +(sFvF%aXKq7u}tBUsimCd$Ie%B50w(qYQqul$R*rGaj*Pm{TOI{CVZh}$XS+-^?O#5PI*K73K!Lk=@O +`GM@HA~v+YG_Zvgbnd~&#{EP+MQflRLv7+n&?qu&~qkI|Z!z&6?$8kIf?AZ!Gez +vdFu@%--d%e=TC}wertj3#Yp#o)jc$zTT6hc@V9(X_8e(BmHK$FpHzo!2v!O-))$9i-uj3MUp;>)a$`^ffEMeP5sL*_>$k7gJS%QqsxjO+ +s3SBQ*lC_WBc#lAy;Va};@_;7WU9SJ3b1VGYN%J#(7*NOjdkhbxrNBlCR7gr$_U_jV}{;1*Gyu^MQAJ&vvtvOx!1#{2GrtHk}!;A|`3Xn+t7 +c)}QYek|mnmTZ7+5z4g8{w(Wa0)pi-fF5UttlHPyatqO9KQH0000807gYaRETrg;k +pn20FONY03rYY0B~t=FJE?LZe(wAFKBdaY&C3YVlQ)La%o{~X?kUHE^v9xJ8N^>Hn!jWD^Pk8QCnG#- +KLw$mUnU!_iks>O{aElvlDx0h=e566v+~#Y;|Y<`#lE$Nq~eX*}F5l@=%t@gY(9D0MI;7S0o7LWl`oV +2nb(gXc$$nzneZ@;SP=7qI!5)jC*ktVBK;Oy +Xqa1-qLP6@=3oZa*!16rJN91u8hfA90Y@V|$rXf=ggdRK&(?k?BDQX1klt-5_TQRsdBC|A&8BN|6Mb2 +j+2iy`FV0i~PX$W-0HavM4(SkOZ;GGv75dce<`imZ1OPMqFK;wHrJ0d|@@JcH%WGv_-Uh-}=fQgWzPJ +-Xdv|u%tR~ZYDLqVp*^TxlWJn>s>56RcWyYU9o^NTyrH6DiM48&SxJZ8T4#e)G`$pEffZ`eljfh}mbc +^aYvvis%TJidAb*9lywaD4;Uw{X3N>pQsq4A+~R;wJI-#WsU0yvgC6!8N~mJOTVCfd2&Wp8)<7z<=_3 +UwkLP#R+h6@&>N&;i7N>jgt_r2ri&8qRagL#^h`w>|ao{$*AfnQC&F~pjc@Q1^R))=ldoW=zVsRhxT%MNM5hyr${HkB(P1n~h +-M2~u%9W~Lh|>p_`$HSsA;}=Tg5F-n#TiN0`02y- +nG|2}6_05iZwT7tC0%7_Bl2=lz&k6#v4y8g_RIPfIK2m7h}fJgi&dq=4)qBXP*^{)qU +WRGzt%$S+k^(D$x$nur**CvTeu${EJaFSmxpv}RlPr2|dL50JoEeG_HnBNC!ASyHYbzZH_5aXR~rg~b +>A2u$Y11V2HxyKU(d1VPM`&ZKeDbGlWHDv8)54B-%WYr1V>+MT$#G9AifS)!S&Ad`I2JdZT$ugU4{uq +}Y4vpxK^L&?CsO$pa|OVqBXx7k3i4{d~vWydtjKrX+&GqfxkW@yg_+@{1($c_h(7p(BZY}nSfgH3R`i +UEiOU7?NVtosyj;_PK;81cZ1rSF}24x6+oowX>rRcP^c`1nGcdE^E0m+TRR`*J$D9S)7T12tem{HpSR +!NU>JPNTqVDtf@SQcccphyiwK=X;%a;ElG%h@p-lg5{jX{14{yBrBmF#gc34G5qIYkp}kT$zuAqG+`t +1r$5#3d5~s>&x@Vk1R*&k`a48C{VQ0?|S~6j0vqIcJek;2lUr6Php7*olO+5EN;{t^t +lXG<1y(VM}2`Rgx&k>RT7CCEx_2_J+VGDA5H%XH>}lfTgzAB->2F7#>XSP~Wd(J{vc9#(%y3=|ioa{0 +@fFg1|fwBm}t%7HRUz?4psSVJ0F}5Q>TbrWN?*BP5R)yheVzxVRv)GOihrA2O&RK^wX{mfyC3H~d!6j +jpQ^(i(xb##Ev62j__6;(V4yn~U@8;;;Ox^W*H|{8-&MmQM%68cE}ECb|(xSG)+6qG=oybRniPsH>3` +l_jGQB9;I8Ngh3Y;fb;v!^mOcRy@BPK-}X +G=O`1rI?lme>t)o}k5p6)UJzxnPB<7K{N|@UVo+T`Is<2~B{ZKbo7$96EeWAqRCl1fsmx*cZP!%}oq_zn463;#merRLCN;Jbl3YHDgP<<{*fFcUOh8yE_P<4@;J~kVP2ZWT +^q2Pek)bj>Nh{jRRCPexMs6@2ijaq*oOUWw$y|ofGm&FtXrlC|i^onl>71=1%zTr+9Y}uEaxB#knCYq +^y)&!v##o`Np5+erd;b^J7B`F?o7d_>^fgULuCN10bA}W^=(mt{;04piDDD8=ZMk +{PnI8xa_XYNZ~A+*q=bc2Cn5qNXtA_W#yP$!;Q~BeZX}Jh($aBj5Qv)Xn`vd7Baa~L0+PJz(1 +O$;tZVx9FWfE5LBue$3Z8o*y-5rsM3y|Ed{L7HI^?cn#k}RZy<_6WJSLfwh0;(W8z;UQ@Gp;DirA3Fq +4e*38-o1{qm0O7LOszipu3OiycJ|eGRQF98cYsa> +FHdxWf2z?0zowOs!!g94LW0>FkoyKhKr{g*_HDr!wP +vJQoZxL46kPM@u^Vq?tVB_Nh~5S-gC1A3eBC}PQQOfJWZF-ELqetcmGu(z>$3z!M{89Q;=&`B5ME11( +9Ize!0HO8Wd(xXx^IVzQ49F;<-o*F)D5=4_wGFVuoJVXjaeoO<>MdZooAV;TfR7vqP8=BSD% +fYJW=mx`0b`^&bcU@dKV#C$#vmfWo+xJ3{^F}l*kdMRb%3QNv;(01KOpL`!q?R&IWq2HWjfZqgS9Y@3 +-K*vxT62cUMB;mg6Vd>$<%7H@6{#mkSw4$fGF1>A@^+a00M%R7bQ+tGI${dxTppog^ydJ9g;(fsXCk-MwyE?A>I5Rs{dHo5|VbP10iN1Ci$=2SNp9Uzl&iCitowbs$`0Vc$-u$wt-9@Mg`MyVE +sjK%>b49h`h&BDI|88y4cw(1lU)dE?oo>t2j62aJ@Tf;+t(_MJ%+ibB=wq?4K693morVQ{Lahhc=B}= +oa)LKgcowJ$f( +-{C{2cnt`gi=^@-0{ohB|QKs~8Pyx!y<@rolxlrxHU@KWe*eqb^#kF&U`{Lm@@74kUSrp8ac<<9tLUi +}lBJ~7UtcTfMCM47hXxy7ygsM};2w6}(ZqSt +<$S|g92xn$s(bXX7DDB7h>qhna&u@67niT>b8N0XZgcLn!7ua_pP^Oe$4xCE;(T8pG^D>tQL=NL&Xd%vUXvT(TMaa{n(f=ZdYy5%rC<{m##ZBrmspg*g%ZA +?g(H|pbTZvGC*^~d)gC*&=ZcZf@s2cpbmip09nIqV)(Qqy-rtSbn~)qW1A%{w3iNA&0$aqpfS`n-#T@ +7rJnh2CtPqyBw$cV7Bhc1L?7FpGIpTyyav%0d-Z9-oAxA*s%~=ZhEGYg+k={DP89A) +ehsE=^P_sndD25&?m<0)nB!zH%rTmWOXM7CX4EqFk80Ksm!;Lf!rA!D2)tyJPc?2daPGF@OT=e0J%l7hgUlG&3d_R(K?s3;$jD>Mpy +e7R#!-dm*Ab=ft5Ip<+Of^dN34p7#-F!Q$cA~g^Ts>(H*|GRd(h}P6MP<6GaaG1)|$3QbR@)UJlqzre +*DcwD#dQ-}jkYiMMM$b+Lms5WC#e+kt*t95##KCyh7HTK~HV?$*U#>=?zB`6HNSSZo^L= +;>LI9B;8(zY4bEbD`_%3Obstl`;DHWfEa2{LD&tYfZbeaCIL7|Ibve+w1w`7viF+=zG-oE?r6Fj%5-h +uT}fH^oUP%hjw(-+o3r%pc!a-dPMRBNxwQedLfREE{x@ys#WXt9^6TIuJ_zC{DGAO{hD}Z&h-|A(Sg4 +{Yq7sp6o2G}Dsplbri%oR==OGL5>w~cAVv~{8RLg=TNad*-K+6mV61C}YTMM;!@ZaKyt=cY*}60VgFA +L}QF1BGWqsTw(T8I9-y-RrG}p(GxS2lCehEm(uK&Qa?Aqu^Z(t ++UmpAjWp!_9Nt7x!fD*#@?874{%of!bASX&YlPEEv?}mJB#}v9S(<%%||u+)bzs1H}yV${!A`^`Q_s; +US|JUKpw~cC=jw1+FZ +f>*MhDZU0i9#{$P_et9AvsEvASf>oBoUu+!wKTt~p1QY-O00;m^MMG55c +!Jc4cm4Z*nhabZu-kY-wUIUvzS5WiMY}X>MtBUtcb8c{Pkd3V<*S!0vrT@htwpUw9KKQ#&Zsb#$BH?^ +VQO0!ef`kSMm=oQY75Y+f;}#k5tXk9*wZlp>aTY)LlTnN%u!&;k(O$B?f-o?IA!D5yTi5$EnT-2yjIO +9KQH0000807gYaR2drQfu;cf0QCa^03!eZ0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8Ga%p8RUt(c%WiD`e +g;Psw+%OQn>sJh$i%p${^io*ZLk|sv(vU-LAqd$X?TTt8Gb1N!O8}?-V=6eOLc{6OhtDtwL@hwVg0+O;UM4(|MARe8_8gDH&A!2!{>gK@sOLd)b8-e=0_BqEEbFJH3w2nfLbv^MruzGBAR1ejKCH({KkO`My +o662({U-AHBngDV-bW25VecwT4w~ajj_6@6ZLlZH?AQAIL-nYv8^^Dw3}X5^=d4HA?XTGw`y^*1HXI_>aHY__D*R&5TnQpJ8_yAOHXWaA|NaUv_0~WN&gWXmo9CHEd~OFJE+WX=N{Pc`k5yy;aL@+b|Hk>nj#MQK%ra*8n=CMS +JYYw;&*BX%#O@lLAR4&fj;bhegRw`an^hEY9w5W;ujgXHOty+lStvlt8D>x&Z3nt?mQL@w@)N*PI^8n`#e&|iUP)7Xgg@J(T@>Lc<2T)f-e!a7SPL@x +2M0F7oK%O@%0kZNm!;sIO+#YZJ39dZ;*+>C=*l&2I-Jau0;#zU8`)yXk2Z}vs-t;Qz|44>Xty!1XW{< +!oHqZ}JMhb^6}@7CZt8Y2MYA!5Ken0Bf->G&PPv)tAu6tjXLmXhTDF9(zyI~V*5g`-&C=q6^`7I37Pi +S6C4$_6^Fij~Q0N>t3Ai-~ec6l#xmf6113o3qQ_^VIM}RwaQLrgC#~5m_i-j-)Xe_5(epgPSC*iDF%; +nntYJ@>LDNhYCJzpJnoc!Jc4cm4Z*nhabZu-kY-w +UIW@&76WpZ;bUtei%X>?y-E^v7R08mQ<1QY-O00;m^MMG48umljo0RRA(0{{Rv0001RX>c!Jc4cm4Z* +nhabZu-kY-wUIW@&76WpZ;bVQg?{VPa);X=7n*VRUqIX<~JBWpgfYd3933irX*{z56Q$U*do)#?t7$nWrc9F$`c#Kk*dF7_h?_A_E>%a1)bR)-`nYVv`NN +hRNGDbYz@mis({N^jf1?sYgt7&9%WfYFTJ$-TfXriqw6!Ef+=6Q4a>0qj{pa(#iHy0TN|d{veU$0cDJ +13}dv&1cHM;#GDqmJ&MSjNK)PUQ<3S9>sEp@UI-984wOc03HXc*t?-WoWcf@H4u@~S)8PPG7?N=Pse# +{=YYB8CgfNU4l`Y?M5ORxC%IkR}`Ofye9LzKDJW{Gf4?L65{DmUtLbom)R6Y$O&(~(q+nBg1*0bk-Tn +xyz>^|&esJ_i+Tf>_AxEB*!hbh5V>*PKvb-!8WFIGOf@r*}e`$r7H7jM)zax{qSw06x`V)Sl}sS>&VT +1G?h9G=L7_3)}w^BzIN_6uiMsx#$YxmEd-G4d}wl{J)K)Cryc!_-i<2_9a*n`(Q9Qek?-HC)h5q%HJ4 +P*+`BcgR@o8&Nr=YFpnGct7O9J=~t?e+1q{?o_~Dq-F_sxHm!sl{s%vvnAIpxZ*ERO9KQH0000807gY +aR3d=;#FYR503HDV03-ka0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;5+cFc7`-6&gAj!;Ith>?XaWNhg=|(A+W}tiWQ +_fJD%e)RW1-S1V);HYQG@lYrf~@9nNuq?IaI6s0xR6+{seMX4%e{9dcPMu?i{DNDqY&_c;6tEGrl0#P +myDxPc4O9^APalPjnJkN`Bt~I+7xv>i9-K^P%bB~$j`~J233o&Z8T%HwxoW&WhG~oH=&BgDZ*Ehd@ES +C)ViV2B|Wxx}rQkJN=ESx;hQ5#jqbSgjr&Fd?UBxhEAPr9;S1zK9dQkyK(2P57Ui)#*tCe$}G +t9v48L9`6OrvoucC0rc8vD(Y@nA-X*A3h5JE@or5)WHbdOK@D&s%)2tK8r?fR0X$Mx*iYOH))z-8Md@ +I!aY76Z1XjhY*_GDA{39f^@O(7F#)~s$5cp+|@HkhZe3&Vr2d9e0uU1Jp++C8$d|TQf*Np2ZLo6 +eBti@9lD~aX=L@uLO<_yB1AJr)!mb&D0AZQy-*%Qxepwc-V2{)t{GgG=k2jMV#r@RHDR*?#AyBzkQMQ +nwvhZ)kcnJ3_GCMPaQlX38#g1bGf3zME+hmV5wPR4CDLYdaR83zwjFkLcQ+c8`s9Z;>O%y%FBaIb~lRjXYzs?`MHAAZfS$iKI@!HJ%*lTTG~&%8P7<3q$srViiY +9Xi)SYN#5+=B@&o9`?o>^jHhX6ZX=~zbH`yiCbUW9yr0(BqXM?mtrO5ruA>6Jw54k*(Jt)d9Abdf_<#vfTkvG&Tdw!GWZ +q_8d8WO`gM!>*@mF?*`|2TL=NLQeOD5W>yz#8kuh|4 +>T<1QY-O00;m^MMG4Q(PW@(0{{R!4gdfo0001RX>c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bY-w(EE +^vA6R^4jbFciM`Q=AFP90-1ZKrTj?LSgKt-EK;7Rr|QnYD=CZx6MZ1eMhn#|HR1>D7#v2B1@mX^M7&2X3(0iV`J_<^yP+Yo{(B57=6PM7>j-=A;ZzhEC_-m=f= +R5$Y~>VibeH$wg`ZJjIl4m$+8;+tDaDTu^M>+nbLq-D-!6D*BJ;4nUJXgF1O9uoHjq^IcP2n(mveZe= +-KOC4a6Q;{HAgT1oyt#f*X?q_A-u8qBjf7***6=b-UtB`8z{x5-Ax$Jp{mv%J+6Hrh5km!zOYQlqge* +c~poer)I#-lTdxuxx~$6uN+y4bpuLx>j6MyHHJ7tc4N7=xBQXKfvt+ +tZryss=zhCW=%{yFBmNdXL{5OX&%PeDFz{7Lbb+KQ_obC!xI3SBWjy;k*#}o^hhQW6Q<+aDZ46Jj}1CO%2iO2?TWnYtJv>BBU~$83q^dn^_lGFY;}oLy!^Y7P4_| +fWka1=u(y8(G+g3E%%H0SZZFX!tqb!rYra^+3NB?A@B}(N?rK3w43JKYkD&r@TMNs_fqP>6;FRK8@on +5QuJtUInIcNGg0nMu%3(^3(sej_<3Zyb)3@+j|RuYAwiX!kf?0lN7%{UO$*lS=D`u>gyaZ|*CFGi!A{W5Y$YN +dd!eguDeXe%qIeT}we*yP@s!AS+)=JlGbKndN7DnxKCR;XmK{Sc3U$M-16BsrgV>}InW3sQ*M?Gh?WMKH#{m{f*`4<66!La_a|=6*LR#OeCa<_Vo>&|M6wd0 +JS4?bAqoL7Qw8h3&xy3vG2aU2mG$;OsN(v|QT`=es`9;BD0tZZT +!34{Y#$@gp}nJRN@r66_?_Ul|5_`b=jyMR|-8Gs%U`8=C&;LL1!CRw)OnrDD+6qvJ2l}NSdFw+v!UFF +opu^|8L?7gF$rGQZ6^uA$aX7j^nhlN^gfJ3s8T=dmu`1$sj!|nu^A^Le +#T{3}v~s`)JsbfevvC7W#mscprgrZQaj$C(ntadbq=$ix?V!($0n*u~K3maRk1;wj+F=s86m4^-1x@1|;L=k2k{02g2QE^~=XR}NKpgVtWa5)K^8hB2!L1;^3?}Jf3 +dlfkEhDUaHM?oCW5w*xE +k(MD)V`w3%E{W>{&V?lq%P|H~2VWrZzNK}?4s@$3bv0K@A5klT<6dkQhGhn!)Jf%`NWmq$J^*mEEFLR +$%sU@B6AAf}W@{q|+VYjip2(#4t957%!5zKq +L`}WFHUm7homuU}QVy6=Wi8f}8`OlTbWS6~=Zi<1^Uy9FHby{Q_^YYK4woW@qEr^b$Q~N7E|EaER=P~t<~f`%;Cu<^Z*abX^L0wwcBIST +6@9Brir^csrPkx-j5j{>t*mJtRpzBMz{zlhVbbURAr^5-2qbp(se*qs<=@e6#Q9%S~qRxcF6O~AaD7@ +JfQ(6`0tvHwgTvZ%vL%T0i${8TPsF?Ali|6&;#yrd|Z}E?|-BF(p^L8&_^0*mDD}9(YsKey5B1~)ou&BiIE*~ +&@(+Dj!%8LIM**PNhN=Z(<&Y5wvJF~cm)o4P1mG}m-Y`T*Jch{v0lgwCi+_1Q2}#VUjFL!RH>EvEs`! +y^zuFSPquq>!bZaNe=z+=U~19vB!#1OX?qjR*%K1>Ijtcag_3R_wQThGk63qpPBktq8e1 +@6NWpXZXd96MDcN@2nzw58q(s4;zBITrM@11Pf&vBGC@0{Ata+CHXg$8#)648Dcz>=a*_rKo^_6xh1C +FETBQh9eU00x8k1hD96H2R+Bl7~$5C|JoX2{t;3{~U{D@b&!b`O(oO=fTGfmppjB(K=UWr>AS7H^p)u +X31%d+&s+kz20Q$sZgrm>h#-h|McSHB3NbeNTl#LVOnHqz?NB|1EEzARlNiBS@7|@n6q$0_LO9wMI5u +!r9pv4kAw=KYL+BCjevNj0tSFQW+4ZVo(Jy$Rq-I^Iw(|dn`XN}q=DY>fB`863A%-8h!c`9JRVM+=+DhDU7{y}2;utt^9$bxn5HSpHbaMn?Yi1XTT0{Bd +D1hIn7L~CI6ibB`pSeVqM~xsp3lvD*C^)Vw{2sXrSQ-U+D*{b(jVwH9zDGyXqoaCa=J+t_5A7uQz6Jb +JqCzELOSa?Dg2zVG6mS4I`q*IrNz2l!F%D&Xa}tc%czSZEc)64wj8JCjKJg$$k>pBwkRP_EV8*4=FzOE(@)*^e|4y(k=5a7nBzz#)AZ+!#xCr!Z#$eJU)!ri? +Ehik^8Wc1QhQuQp7Y{OYs1#SSanm^0mS}`G#lzYY} +JjIDe(nXpVo{12tN9At$e$72{bG!6tf6SIX{f{|x<7>vl5RXVD%wshnJ}7(`Ug1xQ7+kT>jHk?FV^V& +neWuyh2}Ji^0myRw0DqD_zqRKNlS6->q$dI>oGd2@C1m;Cu}DE_n<7ZXzxMsa8`qY`QvIW5+5n(5j`jyUpY8C4~l1gwTA?cT` +N42x@DgJw~$%Tc|*eVrZK?7y467&V3>`=rOarWY^;@Jp%;nvDmI3(=_-^W*R+ALk^STIGb-B-D71}~L ++;3Fx#^&7SgJGHH+JyA_&#uma!BO6NINf%f%&mMNq=`r?+2_#2W!AO^>Bu4R2R*UGi=H_SpG>wYvo7s +%M3W22S}E|dWa0BSxOI2ZPy1DQJT_JKx3X3N}ShOJfQDA#GkT38`H!5AX%ygGm#oOj79!#$RagJLJqC +I)F=^O(Tdd~DB4!l2s{Q-)Ztz*^_s1Ql*+-HVd(==l{`!y9TzmE@jgGy!_6(1hvzL8DQEJpl0||KWSB +PUL4<_K+X4A*P`GBe`f(UZC?(SM%s)P`*B&YIBV_S@?GbLo@s1u@$l?caQVvDBHNw#HLsPCZ+E6wK+r +y%xc0z}T88c`e8w8;}`l$y)bE +ZpE$0a>aPr0H%!#}L-gSgZ-4+ian;FiY~7TlU#1TV-LPoPs;yz?Lk$#SGKRbefWwrJ>XMavgSTeFKIB +G3QbX?)H&M+pTq=bYpE%1cu;1F|cdnFlU)*h^R3B5>`4?6^3A^4-}zPQAHaU0#e4)wZkA31PYd|RxX$ +Xl7bX&czDa5S?a86*RYr=XA-~x5_D1A2cTO!i#rO~fPu}SODlLKT#=7NH^Q=tCD{o~tOM=Xcnh|Q9cC +anXKSv+XQxvvvwdU>=AA6EhVvCGT)m5U%p6s=m#iC*!jZcaO1558Jc;%xK^;#+z0VzF?rLi%sHkD?+; +-xr8YY=L{xwRs+}n$obxEPMtIg$turqlZPATXH(oxbvK|#bFDce9B4oq@Ka}WkL%b|GF&0{L42wn3l9 +KM=G+Qi-%stc68U|9jd&QtT%U0|(&e5D7h4K;|)CQl8^(sd^;ZQz+h8p1-b^F$+Hw_Slku+mHt_&Wkb +2yepf2oTy#?M!C^w!+bJi10Rl?&5M?0=k@~v18|?E5wrLoaq@c)pdzGTh;Ls7yP +LZ(lwcqZygXCl>yz6Ad3`?@LsZr-C#w9nXAC%in2=^2n~TuOd-`hp)#bx!Q?wr)Ll-gfkgs&lQV6q$n +(z1eFX>KEYgTOGY2%R-S|Uuh&GuUY;;5S8kpq+F&1SWi?rk~x0A;3r5j4`d}KX`pyWjy}WzrT_LK%wMSp5sHSw=ep2oF@oI5 +;Tc3vIT>deFe&?BJXlO2?kM{OW}E_NdgD4K;4~>bzXMK6T4~LPY(Hh^Nw$`&=`r8BUad4oM0&1x&Lq<=vz3-yhZ{#^X_L +?ac5DI+__jKHUuANp*8AfoFnVzj!BHRGh6j64p +EGTt&plrY)%m(bJDI4+@nVW+_i!q4(u{JJ2ncI4d(qUj^k%8-&4l2z+^__{@=e%5 +Ea;4Y{_ElTw2z5tm#3O6B0|-{Y}#CvI>6eDzNP_AeKPx$kRgwWTcj-ZhDJ`g?H)rW`+paO0i|;|FMNkNpECOo%v6LvRojHy%@52z0V^+*z8D?#z@7h*){hNpB$7U2g_ur;9ZxKzJhRmKXv;XAy(+ +T}szsS>?2LR0t@%p_`mqrN3paUR1>ie&G@e_-6oNm_Jxb29|1%6Y&PDTfy9oiJ`pyPS02xZro|ojz(x +_Prfdo(t1a43&&rXqYMYFM2j&v%hg9i1K=6Z>@uT3<2%dI;yZ&eiv~_FV67BE-&XM5cWyL^A2cmROib +W#O5k+qw0buXV%|BdzM~IUx2XXObuo0f!@`oG%m%h*zbILGKr0W)X9o9)>70jLaKXIbAVMcRpb*G>(w +XSJGbwvV{y%3~@+ytql}W4FyM~lz0TQ?nYEei*eGgR!Tf{mxv8G7v5Yn5^L)!`T`t$IT#L!k7xy42A9 +ds7Rzf|aY^Nd_o+x4R1tT`T_7Eu2HcMm6Mvz$&W!$K-z*Nx6?2&VSVy*xP1JP@6d5v_8<>(*5^{6aP@ +;tayg#pW=xSgilrIbl=7dnd@c;MY`aK%W!q7P?2n4zr*Cm=OMuo`Hc=Ol_1&?dJ>}*s)wJB}tl6VAn& +NgDstNEum72_P7NxFJtyuBn9+Xwq)sQ6_C|%bCP0K9+)7D02VVm*5-g6RNT-c3(R&6S<*&`6}&v9P`` +9a%Bij1A|b04x&~0LJyfqe=38c$ui}j9<^{iivYzYZ0vlwO2|56?1Ykqz)Zd0xDSrjpblzf)!ZWKEFK +Z~qHeE!_j8?eMTD|A2XlKB@%-9NLw*y*o{9wC*nNwNzOBD!JASuF)38t!dNQ2mI=VexXq@c +Y%44nrOn}HxzKwrEYq}^_8~2GVV0%zBVM{VJ15*88B{CwVbXayQPRk4cnqJfT`-Xxy?k#d(&HO^HguU +4fw}d>CtPDiO^0QmAmEp9iC7j6|R72xvI}T6|52T7*wx)$?TWH(yBOWpDn#LirKu$Y}bse`sB4$m5!Q +X?!ucUBWR|5TNU9(iH5?pY}IBhId6LSL-|F!CE)_UH4R&FUbUhvT8@I>$=d0|o&BO2LJB6Wd1l*v3zt +bNRn@k8tqn1*FxQfd$-E``h0I&6lak-$5B+}iVwkP#a1*eg>MAf@J!g3iHp5u-7pKn=_QKoNXj=y|6oxb!F76kYGN( +Xy*NSlv>S4x3{Gk3V)nxMHh1Z2Ql^JMl}NK0hlpmcH(kIM)@3d9oerDu{@>bNS4 +)}>(Nz8J5lW7qpbqueC|5g^Wl7Kmba;K!Ki>bShInLanbVBz;LD~yenbcJ@uO*T-fy(4f~0(Hm<~2<% +dvr=Tz{X<%6~g-Xc1YU!VO4YkY+l-!_jy}SqhXmYyh$#kRM>$fR=aWsZVIgQbR+BGN{BQo+s<`lrjXJ +=39NX8xIV2rwgnJYyrQH_mfdWs@)s@Q~|;@DNV~sfIeeH7GTrwOHx@iv9ylhTi(pMwFmx{ +Fo_sDAb4&D&otzF%Ctx%lbg?;kEtFdnU1D;)*a#CsjFwk7$!`ma8Gc>m*f|M+lmIS(#-F>KWw8US-WV +PrZn_c~%1cupP73+Q~#L$MO@y4*J{gQr`(d;j*`#rqFGUR+w_*$Dr2@vmRrzW*M{hhA#CUv0O~ZMu*g)M>+5fzJt$;yuFX93xW-@+W9_V} +#MA;%`5cn^YE>^3_G359@W)s`8?1zdb-lqZnX$>|qu{c+Q3p8;$A7wMke?Q3Y*iBpEmr;?;5)e$*C}+Z!s_Z3Lvg1-J}Tp57h;-=IGwjP}Xql+}EpORef@wun1xKG!%j&D}$HG)};?P3{F4;6@+v +>SgXrs@=lqTNv@9hGluV~&j5EsZ`5;HfKfGw0~W*WGmLS{TW7A$$0Ph6)3|!%g5fhKE|=ad*1T&x6rx +a}%r{bz9CM|F)|2JFYslOe4xVT3sWJyQttL||1i{~ +<;JpcmP=}W0OTxa@tbe7aS(NdUkz=c$*-&^wOlid9F7a1Qvo{WM+sC{_nKZ~lBe5*)PUub0&N-OUHvt +hL8;u@{C1EY1wVqxOvgz;A`p)h)Gp40&|CV|xYp5zIRhGAEk8+++oK`F&Pk9tDw}t +lXm^y1XaZIAYdbyZbWu7tC1jw!9VDeDVOJPSLIPvh1=C)09coqAW11FjM&?$s~V*L4Jx%FzxIFW_3uC +ODs-OJ=&;TvQ@=$GP?SBefRX~?E3DTr`LD?v4RKo^!i%e9E06`z|vd&tD7zr>I(nfOs8{{EpT4Mu&QB +Lmq%L@RZekBZd>9VSLc0RH9r|$gBxB&=u1W}HCpan!8M~Y5pR8Q^SpkTbUJa{<9B$6L+~@I(*<5#b*O +dp6J#+O1B;su4p>8M0fQm2WQ+zkJ}Nrh;lDuxX}bS;Or>OjY?0jB|PXbyh +sh*;b4;C_8&?({)~r9=H?^T$=D`nJSCadUDx;`8U~H*p)|_vLae%$l_tXKxYc|)264VtPp&8M=jzu-p +z~M1PH&E1UQZvc_CYWXz66^#6HXk~3Fx|9>1T&jgmv(USHml#ImisoBuJYa|JpEO{^Uyrb?8@)^B_St +RB+eI%i+2X>zead<_nVpf>E{J#lLY<-%zOujoO{IPS{c{6SUTvj`^IBlMeg7IFrE8v`QX`?A{`B^!)U +(dNB$f52O%n%v)FL1)ODYb1;c%QWr8*y}EHM!6a2xI&czfn@G1NU@kOIAXpuk&^gQT`i03jc&yGxkJS +hsN_{ZKQZ<>0Spf!wGr&QV`u|+uDpfa4_m#44r_;leJ$n9FRgCQFF2)dZJRwlZ(9}*R`gsA>=z+PZXJ +)>JFn)xR^E%G(cCLPs*l)KRV4uytz6p+l(dmoP(NV8TDP%~>>m~rPu&ijkM;k5f9i1vg-RP1<@1sU1F +zT?@;>@B=Z==0qzps_C-S9qzKjW#f@o1c@KJ2`H%?e1>xwd(U{!P}NSB^%bUnf^*C(j-|o?okG&-f2F +_t(4G_3nOrb*-*a2`6ZIz~R889Gew(}6xK;!RVoQeuc8(t`J^VE=V=?8X +({Z7jD@98<07hzJ5aJ_A>LT#X1`pN;zq0Cle_kAeRobvgS-?+ZF;l +>>WPD8amj=dYoE8+<2R`IQ_K!#)XIy^e}>x1<6MQ-xw3PhaERNt^#K3?z61aODgXcgaA|N +aUv_0~WN&gWXmo9CHEd~OFJ@_MbY*gLFL!8ZbY*jJVPj=3aCw!KO>f&U42JLe6@-eSHsTrEbwCe8;O$ +y0Jq*YKL$T>qoh%uW+>ibGQMTMhPCH;a7?DUmd`XGvtm&byyU~vp>l$P~80$eCol&F5dfpe%$_MGB(F +KfJHm1c|Nsm@2$5@Q9$XFL}F*tPact`b4 +48W%b2Mdqh34t=)gMB@eUg~t!D0VSQ!(pKd +pJs?}`=;p#L)OF@iby0R$L(D`OKE51w#)3D$Q3vTK<(BVJ!t&2UpiFUl9(MeYILI#g&;{*CxW5&@IQ& +d}mK7S5y=YtH?70>_VS}uopnS7gD_u#In``*Q5;Lk(U6pPpRU!Wp^bg#Jw{hC|SD%1-tvh{NbD~&VxH +^6~&vpT~=sXymI@0JF!h18NliFL;j`ZlJo`h$JmaNnFF?`7D44nc=AMpPw=cJNz-D`LgN2Hz=W{Evd^ +FB*du`x7$;Q^mT)8mgfZIS+yG@QBeJr1y}RXbYEXCaCvP}&1wQM5WeRrrs=^IY&`W +M>Y*T5XrTw8hf+dzchq3aq)Arv?VD`WTJW@)`Tk~SIOi*m2&z>sq7Ps&!ihR)$R5x~SbN$7S%jErA^N +U~olhl!vJ|)I8Cx9H-Wi-QCPWgp_*5Hec9RLXQ{0ke44@b}?Swp_ZOMb)J4ylDxHr#6*Y`N$0*ah|o$ +;*PpbcByo43@!3RMM}Bu@~x!2Y)sXG +Oczm>dIYUL=%C4tptCw(P8yw7tW03VLtLam9T}5S8I$a0@WoSue=`>SX_DuJ|MW5*z#~}tQ4Eg_x(Kg +5xbU8Q5jhnCLldx+XMdrbOZTsMap6Pu3s6e~1QY-O00;m^MMG3lj1ehR0ssKB1^@sn0001RX>c!Jc4c +m4Z*nhabZu-kY-wUIbaG{7VPs)&bY*gLFK1TScv(qhfIewi)P^O^IfRTKx#m)YP +z#>Qj3os(OwmGnUXC{QOy~ojrc$xa$hS2uSqQhrDE%sEv%USk4Ix@DL)b0I +m%aqVF^kDNhQi04ncft~*y)G{IH|)28IqYJ0$|ZVxW&*hAqHzKTJypy?oqR{|MB=lM=Z)Oz`DAgRil& +x-O+p}>il(f06}*`2BAC*uVj}Zf+Zi>K#K9TH3N&wVL(LOsMb=h@km*m!g^#Ep1b;1st?kDf{DP6cCg +bbDZwystOZOOhR95DM`-_-Sp$S#k9@3Z~iH8teD73D~pNalE(F7*okJZAyseaZ?=9;}~cc3=_QS51pa +J}vCeAnuJFAfA?7Wm(Nih*m}90rgz=d%&q#Fok2RdsOEkHz?$LEiYy +2#=|ws?bHkhB=z{I>ZgLIcbUCa`&)`X7J-c4UW@Her~iz^XC1t<{w +Z?0|XQR000O8MnywZfN80hL;?T+@CEsJgq+2HyI1op6`yU;^JAuSY^V6^r)Q6o!6lCxP#|9eNaqqXxv_psGrwVsdn- +poi!ZA}A3QFp$xSQH?e)>seX*%{S&EQaq4DtVAj8l6F>Woarbl=NtYa*WjhY@n11yByj)n#J9ZuuCfzDyrf+2c?foKj$ZI^xmGjcA1nk +ZlZVJEfyKKgPRq4l3l*)=3NNqgUP0JE;o8AEaB@Q^Sjvc4ERIS`q%J(I>!)nwj60VzXr)DsuEuCO*YH9 +xo%#Bbe2DByhN@6aWAK2mnS!LsVtkYfMuG000OM001oj003}la4%nWWo~3|axZ9fZE +Q7cX<{#Qa%E*=b!lv5WpZ;bUtei%X>?y-E^v9BR@-jdMi71HR}2&ckqntYZ!ZEIz;%qaK;r_5o0p=HR +^&+BX1S~GE+xA~|GhJ_qN}wX@)MP`k1*7+~i-Y#VJ#ZTC>>-3~q4 +2p_dA1II;=9OYdNKiUH#vh1rIuIbmvxrI?7v`ml6Yu5z96?&Ku!V2EB#FqStpD*FY)$&UQ0JkYHhx-ZxLfwQ2J%L +yuXdBV*R3U^no2?3%52_0Johxy(VX(O}v2xA6qNd6bVCh+aN*%cueH(+`TNN9R!k$jio>FXxzA2*f!Y +m-taif!vzvV6c&1M1j_z)Xv5amY3t<@ta6C7-@uL4VkQvsB9bd(oTkXqsR8}){s(iFT5q|a2M3Xgv_+ +9OZ)YwrJWq;C5MX$R(oA`z9u_nsbppB`>Duzh4|M}i`t1r@5OyOucU7?_mkXHujzcm%`4(cHxV-*#+D +P%(PFZ6dNT2)zMFpxT@DKxg2QyT*q#_e{1++6{4v +fP~ptNPfy6fUdXHZlGMr%hK)gD|jr1Ro!Q~|T6w$>z0>M$i)hU;pQlCo?zn`N2kb-ms-yu0f)Z;JC&< +u*7&N?fP!OWO3K4kY;{BNRktZFFQS3oS;TubZe%=nzWWsm8=LrY^@`{x_;1B3JPDKUtPh7|<98+cD?R +d)ejj+Fsp}7?yBx@$sbmJ}g#T6HpaDkbNo`K(zXL(npicpLDF`Hi(y++SnYJv*-#|1P&dCl{C$&`Ya> +y6LI^qEXgYZ5>7xHbks*&|TFyVukPOXDnHc)7g!n5x77_e(7-wRRrsWVy-vnYRxrP5Jl}_gZmq+?X +bjytcCF@m(#&Nsy2C`D3%-of`$~^2T^k7x^L_qwPtI^u>C +5BKX-VLy8@LuRRCi+=l{n0>4B*RNlvYq5&8`OfI==w+kxi?Iou6T8`6OO#R!2IOx|7SwSj$bOyf+YHGqy#>jR&}PB5>Y41581w;yibK_PxkuQ;?a{8>gFs91~AzKXBZnoM+?q& +osh*BS@pa$DDLC1yTmFmUyJssjE)GaZF&`sZdL@>p}&C}=wD-#XOasSAD1|74MN`dJ!ZI?_+ZG`>{7a +9EQ3`Ee!Rpn=_TAHHy8VN#J-n%?$4@HKerz4LQg+Fz~5!tJeQpB}y^&0dBXZ#BF;cRX!I%WyhJCOhvV +{{>J>0|XQR000O8MnywZK0avt@(ut1wGg+JG@{{^K3 +gJ)t=ty3??t^(O`+un566fP=GN@D;><29ic;0u@Y-m(#SLYy>=>GQ;mGaan88m=}Pke^K*|& +|6*#eRlSMU9AP}6>P(sx1!OEH-bspCl+kC7Bz!?q5|!-R(g`(f9+RtS%fm7=QP3$GXc0pA+n +*gZqwtp>nGv27!ORl}C5*>Gb30l*{vMwQ@i;rj>(frSJJ0Ho*%q9>p@dqE7aIeV#UkW?kL@m#;)TX_E +K8G{eLov|?>`b7YnW}Jv_GG))`Itl>~ga}s8?HLFIo+v7qwxL4wFApWbS6_c}%XJ=<+#kB^#Sc +tJzvB}I*H5$DZprxA5gVzjfbptBN3>b}Rgn$LKa3Pjp{j!$k_I3=cEUlF}Fb>qyMsOnl4q-a$Ud?#3q +UAF(M#Jql1~jQsa6ENjuB7p|1#mja5T7gmz1B7piPG +{`Dlr;NUo$jB&i@RV(r+_;y=KkQEv~_&$27$=pk|u~r)6v9Jbcz5|a79%HSl1^O@I_xxLjdCMiZJLCe +qPb0xp0f!@JD63!%c#@A15;SJqS*~TZaKvW#Du8XN*`|fnvM#F@Smjj}fby=50V3D}{{$$o=8dfOOaZ +*c3J7BXc)W-}LjIC)&)M}&mcWhF=%9HmR12(Ed<8OIa|2$wW_J(?1T3pN2_zV9?FND#=)E?LQ~N;Sdv +U!n=#ximRQ#-DJ-!}2)bpR<$4{dXduZ)+YENWxf>Xoe3bue8PuP?kV1ah5$KVCJy>b~-Jd2<<0^)kjM +t^>&*+cy;(cKx)G~U_66yVy!hH)8+|zkJNCf1sJ5c+-$8{i^a31QB6;+-F^iY?ucD*!>8`?_X5sZ%+aE=^y6BjpB#j9$|3PnwpCi +9zXvCHN5F7RuhND$WE8|qh?AjXQv?u%8M=h8EV?2Q43c66Lquf+L(4)OGm1Z`cYD>c9i(#oHXC1%t)A +@IBjE?VA;r)GKqTa!OGw;45jajhCQEmqRZ~#O<;yQnuc_zH!EvY90n516g1tt1HTwrzKhcTocK|eb%^ +qh5>x)&JmN`6jWlvUebo9uw_SrIT#74ar#|`;4t+D7RZ|SZr(f(|(es#z7 +svuc!A}y8lyxxr$V4F(&s~TG7`j$ApkaFEV%tL1UqOLn$db^ixOOp`#20E@`G6|u%_ +dQPPF?xN$!s6&a{k3as%&Y51T7S4e7ZiHDYbXri|0PGD?z7jPSiht=gVkETZ1_UP=Kpb{@sfFQzRwrp +xnnQGFT2|mjDML=85~(2tCJrnB_i6`{+wQX`C=1Aexc$9LOLdri+T;}r#XjA_T!>cJs>@58&?$VbqOQ +4qs^EET4s&Ikm+lT4HU(!W<$FNk+7ub!%wvh +K%Wf1n4eUpbnxUGltc=LH@Og)}JF_e3+OaVLn`wRQu*8xv-5Y`?pD0{nVK^u@@TG>C!rj8Ww&+@>+3dKX~ +pPd5EJ;ltV)5$Avq~Euo@1hx0$KP{p3*kGv0Gm-(q#W}u3;4HPf%udFo?E{_zk}Cobze!|DPy3%Q`-3 +p@FBe0?SQ#6I|}P>S1poCAi8zLO5ynuSH++?_zjTj=%MWx|sKJA$-8 +JtrEfnXIk3LWz>qvch2w>C|aSjkWY?Cl)qaI`&25G4RpVu`dqt1dYs}IC1Sb8v=O?s*M^ar9ThJFyb +reta@_~Mxl3)mrcUt;9A>Xnk%pU$$08q?THU?T2v^_F^| +FEF!t1qy1+Av+9Ig_-M(1e;H}h>E+R_N0qQO*GJ)K#0qoiKtbH3tW8jyH*$f_}HPEE6-;X_n_qcD)l5 +2o#cM3QCMrtWJq2rZAqlJy}k?Kzdy!X`-rkb) +NFO8SGeOu(P_2|7G!_TF3nF +p22U)68;I{4t@H>a^U#KYbn@;U;QGz$V&U^zDfWB6-1OUF}ik7;QKRzOuBh=>leYK(4nl+TFgs +yGQh51cX$n&&hpWG`q>&FFMC>q0ftjtu4lIsuxO757?uMmH+I6578WvGeV&<>hk847vRrP>bE)j_H@k +`lgyi+N8Yi~`Y`3kdX_u3JP&Ehr3R&D~%_9ne`6sg)0rAInqLw`;g8g6qJ@%ASEU>=4mQ=tX9S$|XWS +}A{_X4G3zhZ-I`Gb-BsY|z*)K3x6z{@0*w78ONNlet@(kobe`3ml-*%_Y#|YwII>@4s#DDp_7G`UU<; +ut@JA%h`mB{F6}-&s=vRDC@drg}aybpr;+gQ@D1323$Y2J(ZB_scUJc_ne>^uGcNK9a)OhqMNH291?o +Pvv^sN-U=6Cb7$-XL_y$Y5)d70NB*dSE=%uAuw!p;U4pyFdcVUoH*Av}J?A=TV9<&Jg84XzdDDEqV{% +B@!@ih1-umFCc-|utQEG!xbfZQU5PBIm77kqI+p&tI2@wF&c|d+%B07dQkj9rbk6*TRNu`b-wR6W19F +e~-?8S{2CS(u`*G$Jr@0duSb2ozb3ELz=V7(A@2pJO$aDD6Rmi4YvMPY#<2I6jzfTnCZ=4?Htnk6!FlE!j{gRAIe~twY88 +ZCr=hC0Yr@#@G2X=l4U0kkVDh(dKI=X@nfS^Jpbc`2U<(`UwEg4)!r*N;4_YUhB6*m$w$y0;c;Ed%P8 +0#O~-UMnc>sP&`bRnly@*Tl}{x4i5wbkz@znx-t+^ +Bzt~XOW}&Qv(>X9H{9blY%4}r%(D3JiM3=KsBO-eK?p4I@zK0*4nSL7hJ~8DZv3&6*e+q;fePS20uTrLRT(9|H`GD8 +eO-oA#wK@;={PZO#SwoBVOr~cpndnns7 +^O{h{&WNSYBi&m_g-S-rU8E8lezA85cm4M#5VJ;9e-^)OI+o3(8&HT360G~ns=z)t|HqTDv-2IHokpVe$sIrDYm8QR8BH9h{guwj-$SJ`6Xh`hM +U8Ur53t$U}EqVv&Crq5aMdKyoBjp6xLot|Q^}7f8nSasq2IY=>(dS=<_{q)JyQp#6#oNIO9KQH0000807gYaR8Rz`vHu +4E0No-004M+e0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo2S@X>4R=a&s?aZ*4AcdCeMKZ`(HT-M@lW5J +X-Tq07sFU@4F$=~iq>iq;)Aq=vyrbi!4ZJdsM`VLyIHij+u-l%2e60vgxkeev#iU-Gi9R%o$UHoU3HV +u9#tUDX`nTUHefCyVxbf^zym8Li3$H6_ieoGc2;NsS9OnM`=SIi4VRmV#PV6$QyS0J9X|W}4(>!|`oF +F7bLz%ex7A%E+3d4|4OOuB-YOp*{3*!|$sS9i=~b2?mHsu%}g#=J2UNRH9=P(?L;j;68x%Mh+68_GGNDX$(i2h7BobOSA?x`Mmms1!)ej&ud2K$$a|des@|v%&{j^C=#KF7YW1$6MNaA%{tJ +32$cmI4i*rs}b;3G2L4)0i+{_Bh7&_&={*^Kw+Zs^>#3R@(7N88iSj3DJ%LI{@m;odnv6reXV5|N&aS +4Id6(I+|Cg4LQ5&*GDE5#rqy#;S#={K@r@pS4EWrPFTsuNIXHbD=#Xo$mvE)n>lG(<+?7LGTd9S2Sdg +efCne%`5%>IY9t*t;6srES5fi^Z_HuB$bv`6e##>Ndv`_ZZz{CJt!%U4o(x@yn+V(G=k_A1KOtERC +7SsH#CrC2{-~;xQ@nvwKjTHo2`iDZS9g8rSXN1X%F!sYy`cX+1mlx@4e(8F}K0ZH_rk)bcyBtZH&1#k +D2jfUry46NH5oV?lO0@Lz+=(D5wdCTJ|U+cNg2Gb#8TI;bW=)~g=Hwzo?HS9^IiG*DP%(*zy1Uuut)E +tzVvsvgJ|R{`ysEEPS$6rI?1+oB+oTe+jm!eLyQ+f7NQR#^uGCyyWHx+DD~fDu~`xR(-H909`qQ0h$V +x<0w2HEWsfeo9Gbn4&vby}si?k_@s=W)SUWZfgZnRaY2{CBm+HGi7!>l?`Ym$jIgc@96i2ssxWUYb&? +~Z7%kt^dYjMzjJOfa0KAZn>pZuLviUwVR-TU)!>3IDal1900qaI!fO;ANAOpE|9(ESrhfb(VvL6(8N{ +*t%CySW=T^LiD680>-0qn8kJn*n5PTP%XbsY}a($HY>o$GDC#j-z+LD;d|uw&| +wm{78D_)f>NjCBgDso%;2^PYt4io`v}ryORTRkC=2+o;@x+KH_<&`712EDNj$T@>}Z)Jthz@E?wF}N( +A2ErW;L;^IAdWd`|tIpppZIp%0xGL(v%G&`QZbusrYWGEmsx6nIP@cn-n+KJ!~p^-s?-dm5ryWp3vn* +EcBY7{_oUhTh+#=aN?&;%i5RTfhgasb$;j7H&VKVS9|s4){U$MBRc@Bo7;kBAMzeZuQ-5g!ys~+fO;h +|l7p15T2WBKs8$>Vc?>{MsE*EN;*9Mr*1{#7Jf7604QJ&!^DZie(?MM)2NEZGwBl(gT12~I)TtXVY$K +`5+53-f{5zNTRj4YRSQk;0?TQIm;---9zvZfyvSjK+Q#!q9W%6|M{+l{VMI{Dxds~v*;-D<~oKRY=Ts +_IEd$*X{OLf-LX-js8$FjzEqnCL*d2R3aiqxQm->DVqi0;_uK<43}352JD{;gyRwVvt-4u+qs9MGwdv +?a$3{2FjO9fWb+_?r&U(m|Iy(%7|SxbMPin5 +EM*amSzG7>Ayk1`?@54g!_wAk{%G;Uwdb?QjN(n}zCM+274BexEI +_uFo%IJxhB}NCyIJsn@(XV6J{f=7k6szF{17rDFR8LrUH&=v;QY|2HlVwKAD^e62xM^6i^S&wU==E$atQGsZME9oxHZotC+{GjE0&#vDe?WbQp_4S#-p_T}>8YPOjD@$o|HZ)jf=AC4I8q`DSf*B +H>9b>+KC-(l}DDia@}C<=Q>U#ht5wqVu|+J~Yj`e&d0_zLtPG=cURiuPF~|Gb4ww7)~|6Ca=h^qn$8V +kymA%Dkj0GDLO+ehWg5iQr)uW)))NVKQ~&P2JV-)$E`b~*XU?!zY=%)as_sRj;wVdUOPJn!Me#>HwE*(9&idJ3 +9QSco@uzCdShrxwK>t(GD`ofXc^ZJYFEDn7G{>ixXB)xLA{SN-rxeQ2nHAAmFS}oR==WnHEDk`aVfun +VSPWYh^?PhOeg;WP)h>@6aWAK2mnS!LsU(z(1%hA001O1001fg003}la4%nWWo~3|axZ9fZEQ7cX<{# +Qa%E*=b!lv5WpZ;bWpr|7WiD`e?Hk)}+&1=ozJiruM3c(eG><{YK;zg816#*P9bgN`6=;bwqpd~~M9# +#s-TeC=-XxNuG#V$}m#vW2vUKh@9v;ferrMw+S#H_3AxVPrOCreY*zBs;@tN+_MpmYhqS*Kx8VWmYvY&7U+YMxI#0_BEN!)RTrNj +I^rv8jRno$FY9)h$&Hz+Gk0=#z1mYxG&PGqzspg>KE+;4N>9^p*04PHAu2$dC|V#RN1y5S2$%=vsXW6 +Glo}5LssOeMhg%f$ZqPqAYt%Fc>mj%hnMp&Vf=C)%xAM%MwVzr*yUYA$lGmRWTXi%3$h_4?zDERZm6_}aK-^>tP20ZW^#CBmXs*Sh>JKJcndJ_hiX2CoLb!GxNEik1TGUTR?Z@}+L41RHSk|Z +y4mLwr1#WE5mj5ss6Al7`@E-$j1px&j?mcisO6O>#WtK47;CFZx3h^vD&%0Wg=5vc$zU +*G1oFcCNn;t(Q7l*ssg3C-5>3y(fn<99K3`1D>1R`MqMaPVTa2@3+VK;zdDE5p{S0Nlr +(fT3V(TH5H&ilr0<#8lYnix^gzEtLggq8$)$ARysv>$5*i!P2|%O>8jKgw0dRh)j4{gy;N8E5s?C4?@G$qH`U{go6bK9;D^J~Xz +z2X7ns$-W>FY*p7dw#?OP-j$Xlwn!nC+H@e!MzllwTZb87b@#y?^6dT*j6k?swe;fYSw+f#nf=3?>nR +g$l*c-(q5!uTv#*RCCO?#`K~pneIFsWrHC2Agu>UKzP{kv?zfNN0j_w8AhNG?}!21XZgpfDnh4N0yM` +eNNK;BJM!VWhUQxuKviwKpYxeKmRO+x9VyucSSNr5FJ85+2FJF=lm2;2z@@~HF9Own*JEWUMd3T=+)q2-8Z$wIYXls +?_1JA^Bey#n$Hizz8F$sBtd#2j3mhbtd`L#1!)0U!OM?twdyw3d@>^;!giM#bsJ9A`#Sph8c)xjOucs +idHhuMKJ*ds@6S|XI)zx4!3!0Nx*C(ux8k{{!s%CWSDE`l`=CTt8oL)67JWxdNLCdb9hV6aG63ukk)C +%1C=^M~)?X;ccpTPqO6<1NrTC!R%;A(CU8#Z3_-Kk}faCNN^pUDExP^vK5*1^?X3M90h*cmy<9iU@6X +wt$R{g!o3Hsdd7O3&A5@W+Et%DHne?6Od2TUjLO@(KBoqkKg-{X6|?`&PT>TcKlPV^<3f#vmgRl3!)% +xSKdHLKn}7I}J|LG{{G*b-i6j;xou9@*HzkKes}e{uKg?d5qe)}1Nk24-xEIoDI&_JOoqyt7odeV^Sb +^vQk$oG{Q#1JEb%40J52epf=}P`m4~Vqx>94sS`fV{e+pbpLJZD^obne)Sh+r{k=ltvh55i|RMFhQZs +lhT(t98d{vl63&|xQxalg*hA2N{Q2_cF8T2O{axVYcGck3pT+g+!%u(bH<~ji$OvV>kS51P{%_K>+xU +)hv-4CssxkDzfWnJJyIHcuEB|%}_T{|m=)ePpSAlQO)0K83%$f>l^jafp#<{SHi?M6Ux9AG+v-0bvpAP72j(J4g%pPupmox>Y+I@tcoD>MtOx19I46vJJ(A(bi9xfthJoE)-Zh +v|CJ&Xqn#gWE}_k|*%)fR1a+47&e0rJn-+pU~h1dVyY|PzE^q9=)DN7HN;IEVZD8JS6H2kKdi0@d!UVJ2%`Ry)o( +tf51Y`IFi@L_YqowIZkPW)C61X^9-tHyufe$eGuJXmah2@u{{8f#Uq +Q#%;$5BJ2;vV4CFxEAa+D{mo(A@6tj5MRNI<{{@HxpkYz3=7y6@sSU!TyT}dCt1caQ^Hk2s7lSF}(r9Jdvgz3^Amh3gZN)nUWU!iY@{n0FNp`lwzz=?JNkg;NHsP>Hx7{yauXCo(vc$4W`2+vT%@u2b_&E2iRq3{nne6UN#>*b>;s#TNaC2sbIjvWsjvbYlK43HH!<{!HLb5n@##;orDs9fXBd +2fW&T5}IMzc5y}!Nm7SA-bt{Ha3VjwQ(Kz7{@kAzb^1?6({udy^EdRe|BKIy8X?kncE;9(Y9DUi7~kx +T95k;iQA6IiK6*Qv^Whi9vs!2=;_LZAiHQsl_mh+>$>lGuD38sdJS{wq+lw`gMO{5Mc2%zsi@0BPfJ_ +C-1=mD^mA^j`*Fsga&qeLfRxn-2B$Vze(a*h$exKUM2Y?)-4h|ktX;dH9ehuyg!)(#b-pdN; +;7UP4DbTz!>BGkuZdSxSw9ei$1CM_`S@8YwY^J}Z{aO4W1H_x}FB +(GUFBImp{{m1;0|XQR000O8MnywZu^G3384dsdt~mezF8}}laA|NaUv_0~WN&gWXmo9CHEd~OFLZKcW +ny({Y-D9}b1!9da%E*-YVR*L_!v0 +ic|^GJ~hpM?=BuB0D_e4xt24@$;4t`*j?-{z#s_Tm1&bRvMMXWo9(u&>a4gU^_r3V^Cpj2T`~BXEh}2 +>B61Dyvy@S?W)=M6q%KLr8KInPnq)mGS7K^G>+GSOhNIh(^K6;3IeE?+YM+;wBUY-c}{d-S8hKlWX?5CZN8g+#tgo#YN08lM|(os +s#F4qVqD@Z9yi~1Sv{_5>6(+u0bYR?9>#X0b&RgNzznvl!I-unox31Yx)+r|CLq+Kum%lm`qj`=q!#` +P2E&1j!Cw`wIp=O%e<*sEdQR9G<(Q+Ru*&86j@THEY7oERaM!6{t<7FYa;mra(Ztm5wUI0LI=;5)6h3`f$l<)m%4jp7GZq-7QH?6 +byj_38ULS!M;ePF#bfOhCFO&#w`|f?QV(o7D6!uGk&>yoEOv0~t44aHBBzJ-qqnAGcr6{s^P5XTfYTQ +C2As0j!`NoynJBKzSO>BESYTlALl*z&INmy9W5MT>b`XpUIU-*$NCSE3!I{L(cNmTv+a$Y#T84ep;@nW`E1AYg=WKwKEQHK3=$p#EtCXp8`$fA(12!=}qjto%^v^L<%3OvT9>mi9gP28Z#R+ewQTj15- +n42P8l6fT1XuvR0tE~)4abPr)5oVB1BbOm@;jKN3fpgN+21}S{D6#dd99?>){ASQ(hS&Mbn2@(VHvsO +x1O%;P6QuLG|r(4Q_2(e{Vy$fxGKxu+xYR2o2tjcJf{hL*xt*q)nY8QWJ#j512ev{=OD!gu;D7rL9LI +~jCFZFo|#=_1iUn@)I3v>%ZK(47?NSd1V97v_`@8Z;uH(L?hAJ&x9x~@9V030K5^bN3mIJHzREIvo%4 +fw9uWMJ#ytOrm%MAEFn;3!oV9n5-QKv%CPK%u@O2-U1AXnuZu-luEG6}l6ptHoIg+m?5te%y)D1>>g5 +J(B7tt<#v-xQfA#U!DJacKzwknwMu> +3G()A{d4_rX=a{2lAkUOc$=4*5rcAyeFJ^PCj#(cK1_K=fa0^fz^y86!9@m(XnbQy$eJ?8;h(MTIpuNc26`0XBb{|M`?wlPQF63KYnw;wCtiLe;>`zC)6drpX&I>_aE%y~FFl%rvG%mtjyCi`s}|IC)YOh} +GEEy}yR&wPZ>i-O{T<_$AkK9W;058m_=VEuGP*|S2#>JR;gnqfyo7Co-D`F65)j)Wi9@i2S%Jk@CRgF +3^602>$!%!Y_c9+b6`VY1_SmyP&2Vs)0FO*k}=s`YoR4Iht*aHyDB8g?iL%%gLcsmP-im>*7uk|~3T$ +Lh`a{^THS6B^qp6r8(-qY^|BHo7VHHbgN+?}Y!yO-ajpV$0iYO~a+ysZzbFM}vP9LG)Xh6=C(zR+yzU +8mG2|yuYnGK?F@!NR!oE>8}t~Y+XX)C9z;9O^W0c{zE)IzleNNG3SAYfBQ*_e!9|VU|Mh1u*-j$a;`H +HU8h(eL;CHC6vGRjow#AvcFc9oX1d*%2v(c^6!Re56Xy{`7W#Ins+q +NCX4*M)`Auk81o`IaW^r|Wlbm1ZC_(_Qk#8wxIB#9URN^a~aUFBdpNo`Qv9)WD;EbcX6SDn*ar_4So{XxA-h1EKpucJ3shl6tEG0rlOjr!h9X>3MT@4_;63lO8G0^!lm>gTuhtYTK_F8FQUOgzkroz&E +Nt-|8B1_3Ht(2VH&oUS>a?#swAYq-j9&njP_PlrlUv#IvI$%RIdsr2zr#QvvU*K<`U?Z0;}(XhwasQ< +fi~et>$G>V2*ShSNWXa#V#t;V8kG4|mRry{G}^$(WOz(P|IgQJj&)Fmt1l-osS*jV`>QX7HS`jeH)qM +jW>72zu*LhnHxa@}lEmz*Ma+hY^N_Iz6ih+=^8@1aHTakz>d2Fdn~$JKL1)d=!OHAWd{PcfqEFYb)6BAW}8BK5vo*v;)imT)iFM +I1o0>iwg{Mr#}Z0PAV}xx^=k$>Hd|m~=Zl>HIbft`Yg*9+&$2^=+V6`8u;C3~z!@Gx4=s3?!Qh@Jp~5 +!jnmg&2_bAr(sG+*fAl3_!Y7u>i2Dj8+!X?A1zRjW4r~cj_R>dkjZ3z{r@%2+sZY-6Pyl#b8a{fn5Il +&K)+7<$vKVGz)9J==*MhBH-)pEacVYymVLkj|#Q%hYqtpow%)KyC87UoDoxmA{45?yV*aSs^X($Kd7_ +R0<8q6OZlt6hclkQz|7RMMA~FkL-myu1W%pagcOiI;JE=gvA&5Fo04)g@@luyZG6sOV8^J#d4iLx*dt +?;$x_fH`2$(*4>|xR@C0P#<{-9q+WQJNo_E;2D=a`2!SCNdhKscZ(Dk%sKdP*O~T*3=|RC +;gvvACbvtHWO1)OfASKaIaa7ozwYO@Lc6TlfM_EQ)-m}8cmr6v$>ze@o3OcnJ*Vz<+eq#U`SK1VieiP +hU{Uj{gkbo_tzIz$rk1)W?g}n=|gl)F+OfG6)0A37%h2G;d#Q0uX}YiO*peN?tSn|rD;ROpD0Lz)2eILd<9NHHdtHe=X{@Nd+6LfXyAcelQl|Lhq)Let-1Tf-YGdJ|c)U0I~P3)_6mfp`O( +d}!=-GJl-en^CUBFQ*qw9*Z)$cS3e@M^(u)!uCrvVZtlZ6wcT^|g+PJKcXNU9kLn(vX?&)Kdau2h08#JMN@4xRIrqZ83hdk +do76^tteLpLw2iS15dO!TG3EvMm>T>bL;?d6%g0y!neULxuV2ZQ%jv&_-~As`k7fqO;8qw<#ffeTwZo +~2G0Zl`!>Aby+_tuj24nFcfRazRc-SJN1n22(jOe1pLW4|;JWbsZ>@vVgP!GA)42nV^!2#y$C0Q$kv} +Z&&pSE7*h(ltbh}5$0t2%jxOqi$6^V@2B`=9=R0T+QL*{a1aOvYSYpCwVeY@kNGqhL^X1DY@nD1L+!Vm`sr{h9-QL|)&MLdi3Ny6u-2}LQ1< +qM7ih&;+w6}Q^UH98%l9c332LD#UW-cINJdRu#`3kH?=G4IL94DWUEYJMF?gt-&ZIw~r3WOG$f58veT +q}?-vb%L{f5S3b478QAhCrfW(7p~-rwQ@^+T@~#=`@_M256C}^vzyDd7P=PKboBNebNLq&(K;5?u{^^ +CkfxqwM;YZr%Kv|^lcV-6#p&OkFqTSmfj@zi5j=)#7@C!Hbg?V`|q7;9!%o@6aWAK2mnS!LsZ*#YK5K#0037O001li003}la4% +nWWo~3|axZ9fZEQ7cX<{#Qa%E+AVQgzbYEXCaCyyG-;dii41V`t!MZrq>5^dBW3Ut`uD +4+iYl}7OI$VQ5XDf*sS@JCT(yZwJK2q{;JJ;OyvH*8UB=RFgex&GxVfYeaEhUew&O2Tm8seNY%YgwQ!;#4Y&z(CA6hDGJWt<%Kc2By%RfM!U5NRfPO3rn4_1z~tA4KSjM9CFy{o!}ek65d +Fa#X7c`owI5Vi4w;;kjTEeS8Kf$5SM5+>3Y*mL0gM>@WjHOMK6Fg}1MgAm_HoF%C?Xal{jN-7;3F??W +{Y!Y~YiZLU+;Y_i?$@tbj9Fa5m#;w(AQ*JCA`)C-wx&?Wlu@9Uu +eHL(=g$vEjF_1$0>Br>;Ac*$Yvm`F%y=r^vs~!Hxa^xM{csd^4|j!-b|w^)$|zymd{)PA*Pm&=mh +Ev5kYwo>;KopyG6z_%6H8l9u+XpT~=aoIOoapnQLUgToaUi>oap5qVLcDdb<*v0l6mCJl6+rzh<=znsCzd`J}Kk^uRIen(OL?a0rajdF|Z;Cr#!yPP7X)iLzi{p +l3@vD=Ix-PY@ihjUKkY2P2uD*RH<=upLVT_lq!oTZ1%UO)Aapmsc$X~=y~7=naKCtX7+fCRI(>=3=yQ*?PjNurxnZkM#nJ$68Df68c99!dezI)l*Ll5RZo|FBp1dAuWTWUl4kZjGXe&PR5&qLl5l4 +r@w?owRKz~?w9n>MjK-P_>*zT_kT$vEAAW}3EG>YvqKX0;x>F9NYJcFt>g64j_GB2FH5JH^NJfo%#Xw +tPLo;74%RO89yZx6)Bj)SW?0P2}fJC>mrg~D?YxPb#FR^iR!pbL27)CbG}XeAWj+fC +L@P7$ETsxM3c!VLu#b)WVIz8Lme0SGxVtehdHO$dFIrhHNrT-Mv2qJ=`mdOP_^zrXh5DTv;2r}AHy>Y +DwEVB(o-;8ZfCJ{PcefYQB6K|dl^Zkr{avL*qfbdZIujlFVMTzDa{@|#bMbznawcZFq@54PxpGBoU`> +x$NoNhpie&B>$2ibiujjgOlrjM(0Tsq&GqWfw>RW|NSvX6FG9-USt2&C?ny6D=pN=V8qMJzqh(Ima#G +T2#i_MO{KpG*GFBO53jZ>&|KG4SM;nd7x$ZDh0?m0xir^BDzIm?6C70d@6aWAK2mnS!LsTIx+Cmox001-{001Ze003}la4%nW +Wo~3|axZ9fZEQ7cX<{#Qa%E+AVQgzb2T54h~M +&@r^$#E2@lhV&0{WDM&sP`R!HOPHXcXts|id2L~V@6VVdNECL%YR3Ei@MM?;p6$Zg7_NzAqk_D4jno^ +EJHL!b_{=W`mzAlEUu^3N_#KfaqxXa0!bc=q}I1c$T9Uvg>kc4BraFi~;uuu#GX*=KdaXBZH2mm4XoW&7 +O)u^85h=L?Fwdq^j*-n+f*ng}&z1ztrzNpu$S +BVlI7*yvcPh|XG|93wt56wEwFcXK?JDq^C6H)Rg+xIrV~{&8Hd5*}L~BAIr*gVxHQj)mQcYntfiecEp +X33#WErP1|A$Q~9_=ARZz6As$k$^HDpW +efZS~u;A8|Gk)#4cQYIN-8e3BV%&u#|kweOXVe(B{#8EO3D(^zgqAdctjA{E`iBY-U;Go +mdK(HpA=?H@~O6zL~<@pAf4jgI8hjN#%9P>C>N+Ow;Dv$g>;Y=yb4S1!}{;�IFd54FBm%`k6dc>|9 +Rk5+25g0f8J{(zv0LJU^p}y>fumTk|gSMU0=13X#c&-s*GzDsMqES3f?P(bPOVGwU{$Pn+cc}n*#d=)veg%ZsSBj@@ +;5i04IXNM+Io*hD{9DYI@oirE>U8t+;1CR)5pnWR_=!8K)a2Hzp0R|aNi$TregNK7y&}E2R2-qe{0Wl +W=c|N`P@b2Z?^S>waPjAj=lgsxnPbb}S>=DBa>p39<+LratvG&M{I*vCWC +M{RxtX;skD{3A)p49d+21vLc>^7@mC&$PLClgPndIaJ!LcGWtb7dTEh4lXv{vHnT1W1P?22W~!}I7E4@0=T-{*pD^|V{RGexQM6b@=@hD&|junXF3fF|l-)N2Qg^Z4V{NC^;T*aBr +_1}HOhx*Ea7y=CIwRt90aji@>g1%wN2M(QN9rvX8fTEA~;Q6x7>dY2eA(umCf(^cgS)V~-M(XbLqUit +GD)^=?ec^6jGiCFiIbYJpJVH52%ba>fMZac&9zxLZ7sdBvfS$!p5@P?^HXa>*fxlJ)nHc~ +9ZWBQ<+6m994pFsz{sMY((vDfjQd1k8bgE)OrVSQ^}-8Y!zAGBsaVB;4i&eLu30_2}xC>vHw#*TC&st +Scm7$fpIjFNCr$E5`9L(Jy*IBZsZ)rm2ZPYlcIY8jCG@_~zFnwkjWUxQ=t#NtFbf7?lXMoNaK_kBLnZ +tyf)jWgOLPq~&Ok05(VHPV1VKSrg!1z42c8*k$|IL)rAmixDVmzx%dp*|bghe$=NyE3KZ-QnpB(-E1yD-^1QY-O00;m^MMG3&if^g+0RRAn1poji0001RX>c!Jc4cm4Z*nhabZu-k +Y-wUIbaG{7cVTR6WpZ;bWN&RQaCwzf$!^;)5WVXwc$5G_A5g#tLskl-4HY8%q9M)`_O=6++UDh)N{Lbd@I?752;bO4($qW1J0aN-MqlvBLwXfZqGwQsbOVYqE`15S#HiL5hc +Szl))JaWdTIf!R#r*4NuvFIOwug<@epSu*~DXzSpszawN+@a28A6Jt-yV@-GQ@wTex3&k_xJA;SEf{7 +Xny~e5)Xhzo&L%d{z`~*6BKXjH7g$5bFr8OESTDWd25Z2RFCv^Nzp9Htl7`R4F0R3jO{wGnb99E+d>X +seH?8EbO4?L58nzl74WZwI|ek7O#7??n8_Y-#CLsh?Z>}w#KrhIqY}aCGnv4r@uhsGXZaM%89lIzqAB +vI@%gt@&K1`a|bEue;%CgPqN>iE*pVod0lp8Dtb@8kmQNrxh`*dG2AgBl`Y!)_kyFd1m%F8Q4n}jk4zu%`u +SsydIZl%9;krYUQ-`)v;)@r3s6e~1QY-O00;m^MMG59&&NaS1ONcX5dZ)w0001RX>c!Jc4cm4Z*nhab +Zu-kY-wUIbaG{7cVTR6WpZ;bWpr|7WiD`e-B@jJ+cpsXu3y2bU!+bE>UN*9dO(*rMSvwKG7sBeWCA0d +Z6eeQNXm^d^uOPd@={>HHX(pz^6t6k9^R3Rm#WNJk}PXeD@YP1@~TvZ@mpQW+Cb8Lk60!)LW{D +9SY3#;%pj4%fZ|en-jXoVQc6e-n&=kfN@buRI~A$%+>ioiUWqDBHc(`xinX|JU9?f6SS4m#K?@wWbGK +ZB8;XBih<*_%qt-w@c#-He}27r6MhZiH=!STo|nOrt-#FY3g +D+&NaP*NB;-&S8amIb<_o9%!efu&)0;>9QR{u%lQOrjnBlHl>}CR=>&y>hr0-ehRC28unf%7(9Wo;!; +>)tQhO|~%Y~W!oJZ9`QtF}@U<~S3Y-%6O)MXez_+HfW4y9K4k_x(@kT`;o-R&ixST1&2WGE-0~&}}ji +nhGm>FT>wxQgg&`H`CftS_t#zrfPbKI5918bLJsBFx$nSYiQ{U(m0EOUuGwkYleKnZ#_ +4rU?776Pw&W+7b$40qt;zN7=BNNOUYNvH*j +zK2tT=yK0|9y12Tx3wP|YU9NSB**4TbvDX6kEZH4UM&;t^;ip2g|fu=U#ff#M6dW!(*&U4Q&UFGCWz^qaAp6m#Q|5nog|_oQKF@yipT;D+$ob=nM1#V +$X;Z#|U)8r#r02Lq-YN>W +CHzL1+&fG%{UB+r#NVWb7G@2EAi{fWs2EG>R6n4VN|T)l3R)8Vv|S+{Spb$dUiZW-u-z!X5^s=W!W3@ +{6D+AnvVEU(n!P7~Wu5OM4J!T;5&;Qa7>+Jc72NPmc2>|wPppwN8b$+2BQ`C +Ya~o*@2NUzE!V7d~{0tt8wwJ=9$_LwaLhQt91tZC7 +CXo|oPXo +A)T=62GlPc$Fk+DQ@%_J3SvO$QFmvM4nc~;0+@neId*- +2(FX~~#<9mn{*uDAdN6`PfIAG%E>+p=R>W5mtMnyO~=xP6)M9R<_&VltUzY(rSC@c2s0nTl>E1U`I2z +(hqJi=5dv_>l~F%FRpjjtP(hVsfQvp0b&mcSnu}YO2;zLqrv43~8NBsY*GY&dC(40Zyh7*q92c6!}mT +dRDCe0s?Dnv^`09&UKQ^6cd{{5a#TQuVN0c=mnZ)JbW!Pbw**C~5)OF=e +GDzkxIO8q#YaWg&e6OYrm=H{=i_#*6V55@o6uYJZi_GAC}tKAvXtz=i%QKR4F0^(y##PThAIKfag +<<`ph|RZvmCMuHu7T_Qx0U>tn3yj7tMl`Fo46+J5A1fW~V^1y7oPT$f|>A3_+QpW`8@u@_MVG>~)*nO +@drXa2xkP$DCmF&q*7(b5chg1aYqhv`WB6`|OJ#7!nQt{Dl@DR@-M^q}>-p+UI}er1K2>XX?Cky=v)v +kaUY>&lFAkGtOwE-Y3m1jSbvKiIFN@&4_FYX&(vCTeMa1`2Y08RdFl6ZqRgtE~3qe;7W&btSKRPT?JK4 +8zsNH*F&jStbM7GEF9S(h#o*a!(bfZ%`bx+E@1oxV2Xi2jv)=j)qpb^su9$HLAAW6)ng+Ld>b?6sGm1pFonv$ +0Y5lV1F;BxV_oV%5@DQ~T9ku$3G?@Ct4Y0bSYY?$A_yZiI);&C~@h*S?yVXy{k`RV<_@*msj$viqEl= +&W*VZwX%I&nlO5Qp<_(~+zg@V=d%F>FAjv7)OPtpVmefRWoJF~ZyW9<{6!9x` +!o&@&~KKXM$n(HZ?3La7{hp(Ey)i*PtGJZMEZ`KOE-jXwPzX81z9uT6hbrOIh7|;UuHeMJ=N(BvY`7B +AU3aN1DohJ@+$-!*@zA=u^1hyq$#E%@?quTtt_fi_3F&}z8U}-)UH)N!r%MeG{_?;h0di&%2X`}f +-Ma3}Xu`*jcYOaGZwqLM23ftMU!^|XoIg9NHnpZ=~QHO+q$DPm~|9R%nKf8ts=6?SvidL|lv1Wh~c8- +ILzNzQ1Fp5`?7QZiSIynL2G=&&{X?og=M_8SqE5pAgn62lg)0FMc)d|@P|Il8z~P!q}248GP!w(A(Ca951zDM<@pKvpRDAM~;~>`qO=r8%&qw{JH16!87_WMWAJng-@x8fZU|Re +ig3;l#*SoDBHdKf;O+RDwO!GqSshE;d7AaFe!ge@q;1Plo{e^pFz`6BxFPi)fP)h>@6aWAK2mnS!LsS +!AZ4k%;000FE001fg003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E+AVQgz92cuor^wb`t-=En7Z;(siG(_DAQ)0#yj{@rYRO+9}) +0CLBMEuLWsG7J>d&gZKhgE{Up>5w8E4BzQBXfrGYtY{qRtOzN0Rn)eJUg*H~FdB@7h{D6hU +Bx+;*`P-{o#^69@YmE9Oa%9|{P#u{V17}_x_z@xWg5CvLn;(O$r8K>F2_1SUD9wOAN3f}@4zz)KDSfX +_bMIK+T|U}eUfu(DEvky`==*oTImZL@y?qY(F7U|FFYBkt2HA`Z5;$oMTtxcbeY}T@IbCyZ@6aWAK2mnS!LsW%$x~Loh002<~000~S003}la4%nWWo~3|axZCQZecH9UukY> +bYEXCaCvo+!A^uQ5QgtOMYAVOHlB<(54w8Ti!Wfzq?7?h%9NC{(YLpu6xv~6LagDIPtxQi&aw@Xb#0|XQR000O8MnywZWia+LAp-yaE)4(x +82|tPaA|NaUv_0~WN&gWX=H9;FJo_HWn(UIdF@xtZ__Xozvr(o?IDSlMIA^SDisOX4g(1!VB*kDm7Bb +@MvfENj-Vj^cb-4mq-nab3z{Z!h#UKT{@!~(xrMAsl4g|z!pgdmnt;fv91@a)TPde2;0bB`dVTrf^_7 +&B47`F7%hc{mLQoi+dRsHG-WmPU)EsSntTn3ysW=0Y`{5~XEAz=W>s2l@QFpd062U$+K3eJvNV|OhJoI6y6Bc)Fyk#oif=_k#mE}V)X0xVicxDB}=L!XF869u0K&}7x$qT +(2W#iH5w&k(#rd7pR`en6T(5bpDik`s0XO{eDB4@qW8E_3Bw^!e9p(9xHh^LnS>IAru@pnCwD#d20IQ +Uw8z +2IHASFxhXqOU}&QyyJBDSK$;XIm+9M@BUGo+{&8UO$QaA|NaUv_0~WN&gWX=H9;FJo_QaA9;Va +Cu$Mu?oUK3OZCT10QlPyX-H3VT@AEC|*I7KK^XezFGZ +zfiki=`n^Sb#u6oWy-P!TR3xh+ErEV%pF|;QDq8?E!;cBSY(i%pgx5FsmI@Y)3KYNZ(6+F>(HGKgb^{ +_Z4i_EEs|_@a5r`F@YF)oSnh=DQYj% +_L*$Yrh0|XQR000O8MnywZpUUp%uL}SG`!N6j7ytkOaA|NaUv_0~WN&gWX=H9;FJo_VWiD`e)f(Gw+c +@^!U%|;d$UdvI%v~ku&!ayGVO38OIlINWsCXuJ%^+ul9GJsP8VGRu_KB+_ZttnO +yf1_6TVL3G$VWw(FM(DM?cTGU_n+q#N+6Yyh}3prJT&WNBH7fTMfn^8vhG~|nOU@VD2?7Lv4WWfdS7(W11U^kEOA&?9P1t7u&$;GZ{&q2-XaVPBAEwiy8m +l7J7jeaYE5#CC~f-Q+_N!=hBqv83a_cQ(~0`9?N4D0Tfi@L#W3QK%nPUB0Qc}50ml^#OM%*7F1vvOTE +6F(^hha#V7m@5P8dLN^^D1L}Ya7$AfWGqGY3}~LhoU$xWBXX~q;$kL(lqZ>FM`YGpjEL`>B0)Ys^eJbFTcy260}lrdo;5Pj(g;Bm!#uK}v%|ozIl#hb&rUw_W)#R#9dm={Q7)Q-^O*4J=TzeeyFI4J&16ysv2}m`TV@nllSAz(w2Hg8 +7huY1me*3Bf(fi(maH~E +N`P_ZDN9mq2k3f_ehV)EYT~{34vF{jN`7B^Q=2tQ;?f|DkYv21(LxSY7U7zgvL?qK$Wd +o^l}JpJ!L*E&EsPi}q?tuG3u~&p^4!^#U7@cSZ<}=Vnx`T&(}ohM&;%pKH+2ouo9LJv}U^z5=BYMSGQR&i+dqkW=g50zHFCrSsuD9x3jAlt-D==1(Zfyd>mu` +;Y`V7E1=4hnutHyLVT&928y+I4GXQ$!H;diC4$;q+y7il29O^ND9sD-(`Xv!G?GNGq25=n5lUwg?N(4 +}zD}Si%F`W8|LS`&cjOQGlnn1>?xQUhbJcDz-`2#54c0l)ZG;F +JypvuoU4fQsGrA7r+FW{^#0z~OmoIX{F5B_A*GDT4FV9`HkD=eZU2VmkA6MEZGl~#8BUnBqaDS_S6EW +X=Fw<7U)e4+@1J@ZxyZ>cc%e+rLuyJ5PJ1;q)_UKpz9+o-f8dLE`yHPkyQ#?safu7Gn!@y0`#qgr +777WmS`Ec0>NC|sK^N2DCGZ!earRhb8rV;qJupv5Id0zl?2G`lb6+Q(#;Acsv*cV=Mi`Y}jlJ#%>s>?Tal0q(_dXzK=j#Ix-Ex&aEWz6W`T +x8b&*g!jikuE@0~&9TN5DY?uFt6-J$l%5ADSF8V8$8PxNs6Agh`8;%mDcjNhWCQv&(asr(T0RyK5apg +e;FaNvn{DufBxv#}d{LE8E?<_^3y~lS>yTIK0?I+V`AkS*Q`F|$Y_y46_9r?v~?e4Pp9^9o}->QabnN +W`^abr|DtQwaaTLF8Ao55iIlhq0vkQY*fFAUr39o3}SAiM(LD3Hm;p7G3{@%6&2b1?krbnF^{O}(VYY +TX<)da2QrvnhuH>+dOJcSdQt8*Qh{Att}t=t+&@n#pdWsi$cAg@Lm?>`T;eu$+&rxDzDhzPhGpc!xP3 +Tkp$xLuJ?&7OVy*(h5$sq7n6c6o~uw9}v6lTHpRcqo#z8fs3~FgAD$hSnV`K>% +IPBzR~P2w@fNUF){Ie`}Fea&4o90{H5lm()PX<$@#nMo6FyCeyyR&(x=w8MN{!CGhBmf8yajmfbxEgQ +TVvOM&QLRr@r+z+P1Bo3w63t@a{{hu>7+7hUN;Dj*WAmO|1j>pr~pTEdHPYgMYGE)=`R|{dw4r{=Y)? +?`o=V(sI06%Ud*Dj_jr6eP!Wxn3{=lsBtKWmkx=0Qe#Ay>I|sZbW$tiHXPnrPN$C98fH&fQ&SaZJKETGa~`160TGs^S1YDv$9iJnCTBpm5s`|2hU`CV5r_{UWV^AnU +Q+5QtyRF2z|Lqqa}6uQ)ujc&vBKc986LshSzvLMQDfx9n$Y$}SIfHJy8A?OF!d#~^pm{{~$(8JDpI+d +xpKL6OE&AALIQ+8r|eN;bFzcDA~<>fK7F3Gf8V7kAmz^+9977Jqw7LyS8RB475jvZ9#$ri~T@|BBB;e +enV!*)qiIdSRWow#r7x5Z$aB&eNTMTFNIKSNNV`VO{C`2mj(6FHoP`d8H!NGgh1Gws%O?k*)T)fd +&0ca3F<%$16{qgbU!^sHmJq1jF%dh&yRUCEoOA?DkL2>n~9FUXZJcAfZ@a(=SgjF33*zH1C@oHAWc=J +o;R$U9j8oxcHNYrWkfTySh6%zvpZdO3MAjG)}2y8G{6gcw11w{j +*#YgaAzwX96Vp5NbTU>$SsivgwEr8VaCtb2Drxpe*1e3CGh42VX^TTHBp>3%WsJpRmQ>SXP>|F1+#%f +@y{RE^CL?+RC)$kjVfSQao;_6F=Izo}Ec+vI}u6W*snyNJ<(}n1sCDiPc7OcVbiv$r8{;b_~MnTxq~~ +D)*+L^HLP53-+i2QZ0{G?{+G2YZ$(=0w-dTu5aW`FCJu +e=sZ-8;|?|iVf|)H6gCpI-SiM!N+%2>^@OJ3C>pJ~X8sT+!8VD$PKm}PwKMB7n#e;OnoJ8^T1s{XRn& +xIPJ-Yv?sPm=@+pRU+pyXo?1Rus+^L-XdBiDvHU`9fZ-?tAhusH-Mfl5e^fDeMc7oAw_UQvU9?u +DC*~JyM(T|H32f+Q+IE_H)3^PG}d07i_N*@x%F>H)vIMt+=;eD}MKOXqC!ZoO-jfws?3g68zOpT>(Sa +{dO*$f6p%M*}hft>Hh#wO9KQH0000807gYaRMNzP*uf+K0Qsu`02}}S0B~t=FJE?LZe(wAFKJ|MVJ~T +9Zee6$bYU)Vd6j)z&n3B%)qDSnl6YuFf+2mkN8$ki;wpxRqtU#z!k0W0({vwoH!w%&{CAw&YkyU1b+- +^Dl`Mz%m$@Pw8IEv9IRD9~Km51PKYzMEf4@HM*8b-&KmHH<<@2!bzyI^6Kdv9vPxi~2pZcFa{qp0F-~ +aqCKF=TQpHKV6zWL_6@BY{N>F3Ws{_x#*pZ?{iZ(aQB>#whGzxjFm^!ZP}{Jcs3=bKOa-?#tnr?vj!+ +rRnrPhZ{V-}R57T(5tj#D7NQ1af7vfxMV}A9B5jTqDSd$rNMZ}d;3A2HNTG7{Ax5UyWbD}Ch>TvkKbY0y;ON_K>A^cf-jdjNpj&&~!uJvy4fGPvK;>s_6JA&IW3lPj1 +k6HTj;8_Bb{k(R099}ycA5Oue_H=r=0CO9G+b%W^qgmJlNTA4w9fP=*7du)*YEEh3e(SI?sf`&fqpan +%<^u%&;#gl-e}ZPbB;fuREv1GkFxNbkCwh}A +=^KFC0hXCT)PvHs?(4sF19u~L6L<x$tP^(Z-|3qn*2hyOX<%yEk1qT-db_4a{#~e +gpFxnBQnGIv=g3(rwu +%!M%*o}ow;xt>eKk +FKLBD~{%_!ahLh^%&%vDed2EBZs9KT>l=?6k21f0 +@F?@keqCX|uEfb*{&8gCBo}ZhQz{2ox7|IiG`Dx-^Bc8<~K9HnfcA +kZ)Sco^P8F9%=~8NH?uNiR{qTVW>$vG{IbVb*kde(`DF*P6y}#5$WkJAncu?v7Us9G@)w?8b|4EokcA +z{!VY9%2ePmOSq5Ku@Rixrm%&$NQ(p#OnN59RQ(q=aaTatYUOU@AM>+N`B|v^EL46LIFzo9_6ciat>Z|ua->-~(ySb5R*p0)N1Bx*&B~Ex}N1#9;g|DJ=D-FMRW(ht&)(ofRQ(ieQZ8NK^W` +X>D@{UQA+{U!aI`$6~*!haC{gYX}O{~-Ja;XerfLHG~Ce-QqI@E?T#Ap8g6KM4O(_>aPW6#k>|ABF!Y +{72zG3ja~~kHUWx{-f|8h5so0N8vvT|4H~y!haI}lklH}|0Mh;;XeugN%&8~e-i$a@SlYLB>X4gKMDU +?_|L+B7XGvFpN0P{{Ab}m3;$X8&%%Ee{5!|3&yO!haF|i|}8B|04Vs;lBv~Mfk55+vn +<}FZRC%=|}0OuQ%V^%a@|Q;Hip7=A+7dRGE(|^HF6!s?0}~`Dij9P3EJ?d^DMlCiBr`KAOx&6aJg<-- +Q1r{5Rph3I9#_Z^C~Q{!REd;opRR6aG#3H{suee-r*q_~%y@{<_B3`nCJ>YyZMuuf4&q#yOzc{UZG;{ +q}X=WPLJOpG?*#ll94DeKJ{}Ox7op^~q#?GFhKY)+dwo$z**pS)WYSCzJKbWPLJOpG?*#ll94DeKJ{} +Ox7op^~q#?GFhKY)+dwo$z**pS)WYSCzJKbWPLJOpG?*#ll94DeKJ{}Ox7op^~q#?GFhKY)+dwo$z** +pS)WYSCzJKbWPLJOpX{|hmHbto*MrMAZg~h!30?_72~i2OA@LBh-nQs3s{W$sFH8wt|70j(e$D+uSbB +|H2=h{cQ-W85%44cLc!TvJWF-_q%G<0Dp((+X(3LQhFctdJU)(}isvk?`AtC1`sE)0uf1*g2B3)Anig +d}$^(shvb@~ghzXK%+%EPHVoXW$gJeK%+%EPHVoXW$iJiN-oiwT~x?R4F;Z?g$b30?_e3~t%G*@UEotc0S3s)VKlQ$kn5P{LHgQi90 +zjw+9+@`x&rs4|TzkC^z$zLQ=w=|z)XG>OH%iy|$0(V`bEdeQQ$izX%L%oUxvqBB=?=8Dc-(U~hcb46 +#a=*$(JIbGK7s`BXii|%Azx=O68#JWnXtHgR%LeaaZ#Cp>|F(s(Px=O51{S%c~SBZ^FfT>G+53wKj&} +Uy=+Iy(3t4n(im4~{tx4N|VPz`!q+OL+zy?W9+mrWQ)AE_%Qxf4x&HLy=O2FgZhUV)|NK=Y&A0#c@BY<){ty2~iw030=6}2Nj0)@WsV} +<<6*oVLkj& +VESma<$2+>UWO;C74~l~v9$ZU@{_+KWmut!?wb?HRWRZqK+qaC^q>f!i}~58Pb!={#_I#tlVttY{8Js +9TUk4!|84cL2b^08wS`xJJ_j1DUI-!vJ|Qd4bIJZ4pI)k&D=31eq&^PZ8rL7bfFrhzu}7RFOp$Au6fH +ju2I1Q6-2fv8WQJIPnxGNHDPk6C@~w-U(AIb>0cMrOX?ZrcSE76L4q74Qt}020jCKmeO6|mWt{O+?jD +_;LcJQ4BVMu&zL33u|nF#unDtqidI|T#s +1+urk03fRzE_v;xQD0Y*;DfHlstP%9-fkCPszhm^6V*jcuJl +BAdrBUjl4noJ!&CC?DR~?f;Ms%s@O?b{J{||y_{b+y!1wX&`}hbhBXb$SW# +n7J$?@#ucsMzpog5D*XN!i&u$q1_m*?D<%TFdRaJiVvwLs=W6|VCyL_UK7%m-#Zz{3lXFOqN(b`}Dhg +}}~2fV1$cQ;`bDmB}4sj?r)|N@z4`!Em4vFBxIt+LNz68_0Zg%fv1D;G8gVE(Kfr0BaxE+6P#BJuGRx +&ro9KVeJE3`v7Yn*xCnJ`@q&dz}g44_5s#Du(c1c_JNN93O4}q*%$#KZMYkgam$;OEkdm#d%Y1}Z)C4 +G!t0If^+tHTk-gpsuQ#&S8{zdv_Ie|{-pF2Wgx4F{>y7YwBP()*B1cx_2t|&p$Pr#|WUn_uza#5+EWl +kDH`G2B#$AA$pN5Dt!Xlp$7AtU9#tmmURz^~B%gVQ`xFvhNvEr7EZ;4}gV&hvj+_JH#;3G%&kz<3X8U +uvu9QlN&*npco>ezsrPk)IGxcPvb2uC}zqaERBM|QL$9PP-CcEo{6(HOS@w=r%5ZuY+;{O`#AcQoMUw +IO!k?u@$wcW2xkxI5$Sz}*=))}7cHcL#2E;v<~+*co>RZaMC1c#s2=Bgl!#8RWv`3UXtzf!vuqKxSKo +C}S_lM4k{VudZ=Iuzc8BoDeJ@CKj>oL|%6y)}6@fPQrTYF6M5Zd5UL~&RT4s##Gy(;sFFBTNeEREhbjr7O5#u@Ayi2msw +9Lei9?lyP$hAwk`SsS4pkCDmBgV+La35BR7nU`5{D`Yp-SRVB_UKv9I7OQDv3jtgis}MsFDz>Bo0*)L +Y2g!N +nDsl3>Gv-grUB=IzyZb!`hscui|JkZ{n{?gcX4(y+i7uOx<*#IDZdBUp1JDuY=!Ph6Tmg0;ZE4j$ydW +ZaTpK-oDPbCZq91LVo%!=>@gf?-?5_$85H|HOEs#PHh3__dEE+%oYkp|QpRnISqd)>wna8pk^ZjWrHz +3>s^!u?CGb)>wna8oT8Nx7=7`4H|1~s0|uxgMST;wZXVyzm0dx?S0%VYpg+Ijm@LMf$D4?J5;l?YIdk +*zb2E91Usu{hiZ0K%?{P$5^Vsobud{jVP`1wIvBN +xe-a^26xlighlW|KvuDj!0?#@=T;{{abD7qtD?u{?fAd|+k0~^*kF760`yRiiEN~s%P8*0^Ak$VT39g +&WxuCwXw2;Vv@GQ!KNvm$p`k;-l<&Jsa)(jFTBlPJUe)!bS-`^7oN+-leS<`7C)ER4Z0R@daZdLlEt%ww +7TswI3{%kkZ2k*$|$K%xhoBh}u +=}R{+0yh=``M?CeFLB+O49A@fWWFUFk-ISN0^A&P->?ujr_)G8Cd}P%ZQjnm;h)^>h}>{ +QZr+K%;fUPEGJzv<^CtQYxA*QWlMZ$|-x7*^vmzt-e-bk#sq&qfDF@4cWL5G3_znl)JIx1$dO9zeasJ +qRC$ERUWGJ#;?0yAZu9I*b$w~9beesgtZa+BVEQ1xz50KhFoXhI+ +CR0k41NZ7uMbPpi71%z6cYN_-N*0QGk17mU0y=J@ +q2#xip|%{72&s>ty5P5=RDyVcSX`73-qA~{&F_rTq!K)QatE#9muV8q2tRnMZQo|j_!;qx^uTYU)Zj5O)~W +G!qYY00dRQZxm%_i@S9{)8}M6_q(kU~Ny?=ad^n@Z^l?`4!9io +Wc@_qYx>F>JeXNNqyeD?$HjT^l3J8YEi)`WiS#*i;JjdvQOq#%xygXo5=3m=J$qCeB)i&v5tK0^mxet ++BuCo#hFC9Ol3MB90G(%o#oozA#qor3ebTghBJFS&Lrsf%ZU+^ys;p4VKvmE^_qo@=*~y?DI6-Ael6S +!j1F`HN?V=}EL?x&wYGU|0_LrGjDMn>b7C>TR +WLO^frIcZL;Fns4<$+&{8I}ir(a+_9U&0fd0ti +k{vh}R@JGQPfjem-N8pz)&8-OhQSe9L7dx{e@Jorrg8f15#z%T39!ur0%U&RK+ZUuh@eyOTh75JsBV +pZU;g1-X4_!X-He--={_$5wR75K$(Uk&)1;BUa+1b+j5@n_cAI^V6_x8c6>(Y0l`uT*a=!+oWE1DiEY +HftPqYj!JgGsw*Zr$KJwH!g$Rq_krh@OQ!Afxip>4*cThuMYeY53UaUUGR6{?}EPrzm$or4*cRbF8Ga +0z7VeM6#R&@mc&_W0>8 +uyYXZM~IdtL6p-bYjHGy9XUKa3c#mfSIEqPhMuQe|V__gR|0l!wgEa2C&mj(P<_p*RrzKFUIcduLU-@ +q?%#JYiB;>UFZ|1J1$;Fl7bbpyZD&@AjDEh(Z|_@Ln}el^}!{Q3*IAD?!V-y?379Z+{84*J!XbARs(x +riTcS!a=*w_7PN!hVA6NjhvwI@y%meSDF&6rtlwz7p?a7jw5==mT_)D?dt@#O{53fmf>9KEA*!`-dMj +PZAG)`7*D_2m2fMlHV`LLG=I2mwD;F-ko@GxAMi_^G0E}Bu_t3E;HEg+I)~i_k0RP3Q)C7y1C +5OI1d}eT&@p_)EJL{6`;l%T+d`;yP8XQ*j;kTRdKQ?lud(fL?{(KsTXx&=t=FeF^f1gCXXig8}K*5-+4*Xs4ci``WzXN|4{2lna;P1fS1%C(rF8Dj}55YfxUkk?u@DIU1fPV=70sKSo58xkye*pgw` +~&!h;2*$01^)zosc;(;_^05Xz&{251pX=bC-6_fKY@P={t5h3@K4~E?`Mw%{7djJ;9p|L7VM#v?u}Es +=ZAc_d)&B=eA@hds>zfB&3X2Jc3Xu$L1(^D>)>aW-=8?qOD2FvmGo|vUP0&e2=xxTmEU*#zRT}X*(g~ +8yN}-w`8}#EB_Y5gBVf1k`*(??R3l?w%gesjSD%XK^1SOL2!&srD|0f0b~~B=yC3szpvwof-yivIQp@ +?fAK=D)<%8OIks0Ltk$@Kl!40AR&Ih~yU!Sy(oI+$spEjwmK&rxJ`I7uiBx+{fhcx7m@74=FfF6aOK+ +i%ipjV+c&`szabj344UqZhRo%iK-ANVDWH7DRtf6?|3UtAej8 +d{yuzDapA4e-r!-_$604H{frAzX5*}{0;b<;BUa+1b+kmCiqWEhvg;LM@n_(bW_=0383bnl&LB7ga7K|Q>}L`CSzt +el*v|s{S;T%8*v}&Nv%r29v7ZI@vxxmfUCnL=&zzX^T=eiQr#JYDc~T))fpJFeg5`W@GodYIB7pDyz +0kWUx+bl@3+XFxtfeXJ)@Z@2thAR*Z*zppgpQ(2WlC7c|wTgHhJ0;__jo{iVt4xyj`|fv5usH%~fHF`((u=S7M8)!}dl)N@`gr-(aju&05@n}cmUiWFPt~wh&{-g-z#E1qFxHA;d+>id(Id+1M<@FBUxPzJ8&1Wf376yGgo@~Ex +VPxg-r-&pzA-YC>YScz!O#F2;NONPgGUTD>$$6zVoW!yvnJeSH)vcxlrvPL=4D1-p5Bbrvn}Xl3aH+ ++`LIv$0n>ZAn6zv(%ZF^{UIa_6dgFSGN*sx@E4Mbxe4tI=zN?q^{4GRaKvs=;X>@127MVgH#JLV1$uo +?Ob38!34`zBxx2#ccnrEK1KvSjU0#-7D7v`1WI0{P>eUL=O#s}XTJo-AnQAhSc(PkjhJ~AJD$;dwk)B +p$g&d7blZ)PGkYBfxzqtK*qBL#cLORCt1sEA97*NZA1dHdx8Zv+fM_#Gpu$-raC+fhfw$eRzNd{g~?e +i6lE(5P}m!}Of@GcYLGfNy~^0abF`ukvZCzT%VscCr)h*G)u +giYnn!l5d1Uu1Dz=E*{R1RaOP}kklfFRHyxz$V4Hhd$*4GzX4I4NVm8%gR=GRaI*Z<>Z +KwE)F8u$d%i|513*F$hUO*&42UwohjXUp)$p8~E-XlD{#A9@CQJ;7iXwg4nbbR?Q0r-bHE{SC5=}fM +U1vbG9jU&%6;z`f(%z-IIp2TS*K2_*ltQy_zSQ*sbZnne(Z9%wQPkIxsM>bl@oU)cHV?@NV_ +y83R%_u?YnOO$UIgiZURvc(+~$0tWO_(A_Bxq&vAU?n$EM0r+scm1^Sah}{QKI3M3-((*)kI~uew;tP3DQO3GU +AWj%BM(>qp9ez!W1;~9{Rl#cSo?&ap#pWQ7d +@NNSBVn~SGQMtd{CIbxv@^JQ(T>7-kAkKQ(tyCK#`)#-K41Rp9L-y?-LO%oI4o-VjTs>`;f!8~ar>Z<$3= +cxt#*ASd_Ao&_@%s52T)I?!OuFC{!d$UpkhEv+FrFCPb>F$*R&ORa2B50RV94=Qe7s;PCVZ#d<`_M$N +Z=l6PtLWFzJ>z6 +{|it{0|XQR000O8MnywZ92|gCAp-yaSqA_B9RL6TaA|NaUv_0~WN&gWX=H9;FKKRca$#;~WpgfYd3{v +DZrd;nz56SO6c}vOG2-qPG~H#`E&~P(y#;}z#7rVUmOM#bTVNkQQc@B-=;}jaiR9zsBk9>}mVK9hP=f +#^odU5wQ9?XFg!4lIRaF%gJfE1ab}y8iLw^tG0@Un9ICzBwpGh6e#>%7AL +WKgq%z&?Dhww93=9u3F-bGPmGtwfHU2m+1oum?ccCe-c|JF+?FIj#NND0qFuQ1D6402hakLViqZa7KK +Kg}}uuF1YBVEzKa7P(dU&Qi*zxY>ByIaFVN81bv#tMX)9+*sz4GSqW~~pGXb +iCz1q|Yc7j`uVU}j8+jRrq~$d(0!w&Y(e-11m)tdQhQyRr7QlW5dJ#(RO^Yp;;7CAqorc5`9v|WJ1N> +zyqNt5$U(YhR>a0$LbtFBuL0nj+Q&hPK_NWS()|+rvf=n+~(!i}?UWYs8D!Kc?IajFj5o}RJO@kuTfc +u(?y!E-dB)5@qEjO@QO>ge&&Agrl@k1Npr5^BN*bmmy05pLaOhK-t+}BG+yhO#KE7A8PVBSQ%BSt=wj__~ia7PtY@wY?2(wLG!dsYm`d^Nb#*Hsx=M!FwBRqRW7;O!2 +(iF|Y(-R|={Q8OZp*};;Lv6Pk%EAk&bGm5~-Ly})+Zl52j8T_0{fZuKCpB{4w~Vlb1APV^;}|d+&!4h +1j5KN6_`0olkQpZ^*^t0f{TQu;MQlcIc#z{4sEU7$!h=r@C=*C@zJnK}c^Xs;J7U&#*h=A%Hdvfcv`k +6FfTVqB&?Q#-6Qq`K84YhY_au!sQ+a~Lb%L1(X(o>+-ou-w1$t|Wq2VgV%fwNP95cl5=~kqMKHIbucl +3$+Z)H0?N!?!Sit1g;O1$ItrlGy9p!tCPJKR^1`^TKq`I}Giai;pi$Eh^5;&x?;&uvJhu)-zV;;sO9r +O9KQH0000807gYaRCJnn{`Hyw0B{}y0384T0B~t=FJE?LZe(wAFKJ|MVJ~%bb2K(&VRT_GaCxk~>2n> +|kth1ye+9dHW-L$JZq#yb-RmBAPt~oeh>m#kzD&;xN4Whwv{qUqB}abCJHmg$9D?TgGm+sj^AvGV0*?*A`;XU +!X{makdy;_{U%f4l6}msh|1*77wkzqITZzg@QGjW<@l{SPZ%TD|-SFD+lQ{5yZQ?A;ZsezffEm)9&j{ +qpJ;-*{=o>Q{gK&YD+#P+Rt+?|kQ#x87K_Y|U@qbi`#VR=xSgTWgm6Un|~T^ZjN2`p%mxU;h5G|FL?- +8>_$bo$vhZ-~R2tJ8!LC_S1!bywLWWw(l?dZuH&negE0N1NHAv{X0_sj@7>_>fcrM??nB(rv6=5|4!AvGxhI=`ggAWU8 +sMT`g;unGzS9Bfr|jYepGgqk0r=0~Xc5 +o&&fnjfL&N2vJ`YJP;8AED+)_=F$-k0cbDp!pHCsb55aCWM+0X+o?C6-}sWLZS&ZO{i;v=0~LY5ovxz +T0bJKACcxqto0*)!jJ#NDyqlA1iDzACA;XVljuwf>B +{LQ>Ob)L%+!_KfUD@pbIeM?e3f8Ul=&)+qY>iP +SQqs&M%sA@}4O*J9YgoY+)%UIQxv05rZqAg>h`J8AzC)zS5njeYgN22+WXnrJ`ABpBiq +WO_%y-T#-C0g$it#^smyV?_e{6rE0O$aq1(u7zODwh+^P{f$QP=#aYkt%>Z5vJWu5^94_rL-0+^uduQY*ya?YrE6HAl@12um?;O5&U +Xr~i-@72mUXJe#NU|5=dlx0yJBaUH6673mye!F(6k{!Z|oSA<5wMq$EG#biUv+OP{&WMySw6sL*!0(001ecDm4Zy3p39(EKa3b5m# +oU1;Z~(8i_Ewz<&GUZHJsp)E+M`B7?ql$sx<=0~adQEGmanjfX+N2&QyYJQZOAEo9;srgZAew3OYrRG +P_=BMKO>xi!T614eg_$|L-6w~(G5RC@bf&;iJ#JIh?drC2tvqdfJR{C +6hcmyh;HN*c{#2415ITUXAB}Qs1?5?I>d67=te9N#B!bJMl6wEpx+-Qy0)%CM|j31A$CcrE42V`VpV-y +f&{D6#XY?KW##t+EI#zxr?Vf=uMY{lpr;)@@Uk*ye`fau}}WMnHw`w(0FfQ)R#XdfbrACQr)7^8r=;s +<18D~6vH@RN*e#qhHNev*-`7=Bj4PcpJ5;uuuHPcpJq!_O-CNk-O03WF;6Nk-O041+58Nk-O04udNAN +k-O05Q8fCNygAb5`!xENygAb6oUl(93;BoX99i>6W#DL0YAw)nn+`ifS+V^OvEuru&cRAbU*DsAggHt +kU`?D<_Bao6Js?KZ#6$4tC<+9nRu%ycQQduyY4~FThZGzxoe)OACjk9Gfb^{rhZ7CYRxdU=9zkXC(*q +v{g7;F&DheKXX@?UME9zCo6Jegv-ZPHL^rIhdByyQOhU~w@-~^Dx>wKJWNhl5pC4`~x>=R#epR~d12N +KLiI>=8se3uyCbLsFa;ig4WFqQbPPfkx-A{oJnMcN?)V-m&P1C>b75nxO(T!r)ArG3ush7uxWPVLdHA +tb^#0L{w4N_<}nO_rQ4N}jskJl0%noS%_jb^9t5@^1q#$2SHhaZx$O^vZly-t5j^D6Z`{7{CD0uyZwG +Ox`aZy>to;m72whTtRe!%Q$QD7^Z9L`K#G^@7 +6d*hl1tnc!Yfct!t+OoIvX1qJv?hS&uAg3@cabyM|7=eA;NyQI*6_{EkxMwRu|DVS3`vTZuJmdYg&k~->vmT*Zd3-_ +Pe!_=$fA)!hW~>j#N4?m8ErFLK9955l+0-M|2}6gcEOVBf60j!il$b5Z%ZL;lx|Jh;HPBaN?~!L^pCm +IPum#q8m9OoOtU1(T$uCPQ2Ambi+@C6K@?Ry5T3ni60&!y5T3niMNgu-S89P#9JqcZup6C;;qv}H~d6 +6@zzj5u&>_PISHGh6v +GpxS!|+{`4sV%$FfVce|bF+G7b3qWf?y(Y;=LOtuSwx{o&z9a|T&im}lSR0Q7UzihMvak|@N6-}HjM4 +aySW}+MIK%DM2SuYc(3p1}BuMrunB_Y5w|0R(_9!g!m=UKqb2GIX8R6ys$^u^+}C))L(h +gX&u%Gv6Z2w?FJ4x*x+Idez@Rk<19uO}X-d4$E?%sA3AI5#9UaAkj@lHKKce945M{tVVS2V;Z4}?nQ| +1{qZ`{$x29nrnGlLUtW}?5=AG-hfMwh9kTf*3Kf;mSh81T3;R%lt29SUAzFku7VCW3!ZMq>vb5Z%v>y9bHx<$AZD=w7aO +4-wtV^{%u;F=AbxUM9Mi>!*W6_j3Joi0GdGpAHk<^Z(N;MECsv^eWLk|3AG(bkF}!uM^$#|I-^p_x%5 +Kgy^3CpN>-I!<)Y|4(V2AS(9hB+)(pKb3w=jM&)SwM56fT1Rxut9GJ8|2v2d{qH0?^uL +Sf(Eo0tL;rh-4*l;XI`n@%(V_nvhz|YVNOb7`CZa?CHxnKDzlG?~e;GfC%@N%gbvbvB5?!yvG3s*e9w +)k9Gh)=`+&xKjy%NW$%ei}+=z1lNQI~V~EYbB!9HTDh?s=l?)gne+&fNi`>yu@k;WE43*`iLnR1M{9K5@Dsb=d$c;&iJ#IRsx7fUg#GkATJP&dPS{D`BYS5GVPX`*+#`Eu3Sn +aGq3@BsGleiQcF*_7-kC#(G4{>($ljS#hcR}{_sHIvgNHFnWA2f?Go>*xN@MPky-N*05r4l&_RgF{j1 +hXjNA@l={6yIO9@)Fh@Dl;|dt~p-QN$Rr_IqUSOt3x1ImCNp@61WW7=<(U$ljU4nHUEU?~%PT#}DI%j +z-2fdU&6FpoWfG$2fL)pS+)ju4{>L*5_q3{orbP!iE$k8K6yC}9m|PP +Cv>0u8&f9~BW81->~C)L5Yd|ZWPfv`hltbMC;OWlJw$}&KG|Orp@|Wpxli`jL}+3}Xzr8!H4&N^5t{p +Ce@%oYMug@**+~Pj=EoXktWY?vtG~5tVnk@}lbt +jXnivt9`(!6ggeFFW=04d;6QPL_p}9|X(i{$q5u3SBcGARVV#H?dlbtj*MlouP?vtG~hX!L*7u_d2X{ +w82L}l)ioitII7}Z7h$xfQ;q8M?S`(!6gbx{Qong{EMuK8I(Z03RAD@tFazO=qb#Z)a-5S4k*MRYBv3 +gR&jdWf#&R6!)>!Fr-=IaLsYd9ab_T22*2Umk2Gx|UM~ahC^uL^pCm#O1*@q8m9O*79Hn(G5QlWqGiR +=!Tz&uRPd8bi+?XRvzply5T2cDi012-S899ln4DpH~d5#<-uX18-5~!^57`Z4L=b(d2pQQhM$O)r_at2-Fsu75&t94?awX{-TP#pkrYt)^w +~wC`&iUxBnwn&e0G`W;Qt`e!T%wmga5-s2mh}S9sIvabnyQg(ZT=gL>--a&NF|Ia&#?)m>Yt%f-B_<1+cb(f-wIonu4 +mBnW#d35HGRK-+GR7~8bVj414OdO}u&^0O*b0(oun0Fb^uu|$iP1QEj*euXZm8wC@*h;X(ZBMI-7uc7 +lAIhmzMY!={uR^>)zV1^L3r) +8#6Lhady5UtVHovKuzG4;q?X`;eJ5}>{s-|I?=|)#G4asVCJ#A`*>Bwd_cy$~`esp5jqZ8wV)q(BSSP +E>9#xh_BHP!%jRAV`?V;U=fo!3|i?2^I^ck8ALUEQ4Ptee8Cx(OfGZNoPc4z8!R8JiBR)HCyUG94zWX +Qp+WIaOBAY@atBoT)cVgSm!w1M3Yl=7x6b>J8Hl&xB3tx#>)YpvR+AM<1OcIiau7qf^H;X1dSikoc)f +>er^ZQN1t{H?4{4rEO?ude^n-zmuBnVA`hVZfZ7IX`m&ZnhjGLYAK|l)|@mlf5&v|P2uW3Iy3a>%s64 +@drVV}6fW+gGdJ|}dYMm6AKx_6TA7-<{4~B>6!C-U}h?qwykMmL~pWtsWG&vF|?^^w3!-1o0>+NsWG&vF| +?^Mw5c()sWG%^X2xtX7^yL|sWG%^LpSbBjiF5&=IGx8jK`Yh=DUmuOpOUljR{Ok!)Fsg%-XbE-+8B>xx!Y`n8xhej5Ml-L&hp(<_thqGn_V7Av0DXGyA=)rWb_FxL=uRNRgTLxtYn +CXQmr&RyR^L{ctnW#vx11%rIH!EH&C;+9qVF8IS2Ln;8p~W#%^xyUpv< +^~nQ;d*V}UZWS!=ZEcQuUVXte2XZy3wb2()fAjOA#s<)GzvsXMe9Q_?V|q+v`+!yHU%7*o=SwE!E&lr +)SfX_$abqoNhFQ8B_X&7~T~kTlHxt6>aD!x)lAq9;?sltVSl9<5=FM8g<~hA|Qi<2p2q>(DT6LBqHO4 +Kpbl#w}=={a3?G%7&Sg4KpblW>Pjxg1eC$nVRHsBiF88!?+F&<2p3V#BG#DUM5M}D78V#&E(F_R3+(PWEM>apYF+` +YYjvQ$&6y|VwVd95{(UQVks!-I-yUeu;Ma{HgHZE3SI*1ji*2uz?#}%n|u?kZdSKz4jqp{78Mu}70M~ +N2QC2nw97=`A4Js2+IjON|@z(zGBbkrI0}u}S|$)1VrOtVa{u)UQp`&Jq{;Jet_8e{EW9i%rwS0sU*k +i7FyN6Kfw$UM0*l=dSAYtTaXCWg>Vx_-JB?FvDA9b{2kpg)qeGCWjtPt|csyn0r*gNCQj`YpgCY`>6S +9bYQfR$^zoI`jA$V_QjQ-FFrrOm&}KWuwV@zws^ +cIdwvV`pU7=*?H3_`Pg3PRKT!IAWu;7F#8Tv)Mhtk^f2O;iw?T~rX7dygE+{w)(<4MNirA +P7xlGzd*-G>EvSv?JL!nx!@fjbj*uwuN70whfL%ZzSJisaussf%%juu!A&v +Y)3Nc9VL2J2a#=q8<~5bf~P$R_*bPJ7wSo;`Ytn42QtV=3S@|p49GAen9_Y$7|DTf)A!Qob8L-O)oiy +M$u_MvQN5sQ8B{IJJWK2w6D!`t-dd2DgjtZ7DuN)XXtz5^?EFuRYvD+?X>ww;J~8*!Ig)*&Rj9-SK^) +06)l5vXHb_iN!I6w|Cgu_rM>4;vS>D&$4DW09rjXh~V)kE{WQJO6)17{TnyF23Bs;Fq{wgt=Q(L54wT +brzHQTkeW~XW0a-tp>+grEes)u@;8PrX^izC@zSzWEiM!)Lz4uX2sFuHCkS{zC5y@I;sS3R}kviz!>+ +*(k#PDS0iK6SH|3Q|+a8 +`a)S^|CW_wRvK%PnX8L}Mr1t6Mr2x{J`H;Fuk1w<4V+6wX8>CCm$=2Jdn0-jT;ZXhNdY%yuHlsYItFl +{xSau +*`oMudD$F(Tx1nh_zNGmHrNoMlAF=NuzKKIa(`^0~l>kk0@kLOvH65%Qt#(~V5X=Q1NgK7))1`3x~4< +TK2OkPq9MOvvXdBSJpc7!mTh&WMoD4Mv1~Mi>$D8D+#Qz>Q3>e}WOgezuyKU_Z6EZrH77!v-fB)-`CD +RCHj|RY8v9Ez6mXTN+O>;J@J)OgBzIjwZS1ufTJ +$Aw=sapdZnEa&wth_oOWRa!f6*)Akh_g9|PWs^35>0=nl-c9U!{TDrX}5j^ri4+Jmz$tR*<>!gq}2$P +utk;IIqs=pnani94YNIgZgxUD?fJfi1qWhY>GcR#4d33KN}5>)W=nm79WR3N7S;<0rgfN +m$v#iYwM7jp+;T~Ft4Z0In +;bxk>ZP`=+OhYNc990Txhu8uL{`Ta3ZAUL462N-~VbFGUJFOQGax5IJ{G5~=v-{E}ng;F_u&)ck)a6N +DHoD-eauQC9M++e^<oL4hzQieqGx`ZL(fXnVS|Uu{SjULH+y`9|rfzgFV(<4s1B0m>U5wZ(e$c~U>P8PE_Ld*CF +_^lso)LS|4>}o4-Pp*8z3T@B2~#&VGh(m%K|h138-0w}859Av}_FcJbBX2edENbv +b8BbLvR;PZ7xET1F6=MhFMpCiHNF-9z(Bf;khMl7Er!RMQdSUzKaIW@wDKel|v=5lI;4S&4I#cts92p +j&`@>y&uN7(S2V=ImXK98{BH|1T91U`?j;kTDT7uZKmjj-XjVf+G36Q)Mk@Y^e)i;Cbg8-9B$bWss}X +2WkUhAzY=Z-foMy&Jly2tKpnx7R}#6~SjV{Pu?Eq9XXrhTmQiU5Fjs2pfJ|Wl&TEpV{!+tD=jl;4>S3 +TX<7c1)tgQ+Y6(Ms^Bx*XM1OKQ5Ae<`)sd`E~kC%=X#zuXQBBXSU +Ba16v?hI5o=l*%p!%$mUIrvVFF9OBYDwO^vdBw%1D+NbXIIvVE?#yx1pL;!dsZT@c_X8~&OVAbR>vjk +4i4U44TBZGERk+3=eNFOCEOjn<4LfYLXHGJkFhCkSUxwv=P@ +?L=45~H^gzg8f6NxMVfl<3x2ML~Vw!#cjs!lBvBhjyJ~zPUF}9fI2v$(!g3oL*O+#Ks5`1QhX?pTHlH +fC2Omk|{kp!RFRW@ge9ZB$+U1igpHz;z!XLglMf8IbG#hDsoSJ|AR42oRvnO)^YZu2e#pV>Yya-nx2_ +{{cskvqK$!DqJ5i(Knn2tKoYUgT!)LhzaG^CFjf7lO}hpBK5`yAXV4`@Gl{--6F6ar+!Z<+%;k`N#petQRbQ3?UF;WsUU9Z3j~4ZppEyb#6QV{G{CHROe;;vQqeZx3b^r4S$ ++e$y^EC`F)od@UnLa*nTK1VbNhX9WJ%cn2f+g7Hp9P>V9&#RxuRyqgi!qKwlzQQAV{(w2>vBJ4Z9l@a +mP+ZYjFy`2&9)jJpwU%itN@zs32ePC)yOIu%Din!`KCk`?qK5>W<@rlEXh)=x2i1@^-jEGOX#)$YtvKXbU>@H)gnj!!=!4ncCB~ueTA +w?W;f+r-ZN~R`wLW*$U1W!oRl}t_WgtW)BN?V#-nwB|^B!pf8_LR1YycChE37%n9@ijcdL;!1oXINEy6wfdb$C}_7Ru$jIGfafDCU}Nb#V7I%vxfnmo|9epFzPc>{ZVHW24$>9XG7>ET)RTNHd;V!)i-5{G2z3g5sUk98zmjJlZtv-2+#&uF^X*8x_CM9^ +w{E!~bAh%>ov$R_rM2fUuKpaxrO +#np_8i7Fp2N8OIgBfw!?q$*54;WdK3ElM4A7D{yq`io6z4UO8qDF_lZE?g#JEJ?mwZwPsIEt +^!JH^s|oXcwdZ_a{W;&4KIi+g=X_t|Ip3E*=lhE1d|%o6`|N?MQUnAiF6*CTJsZ>z?)JT)A#;4Lw8t| +`QQ1FvP5%XmVUoRCQQJSsUabfcPN-*a@j9>I2o>7Td&2za3AF4F>|Y^ds2?d?J+crue2V;$UC)KU;a{ +KW)tC^>742n#wp51ani{b`egT;H?90@KUai2r5qS&H-0>DGvytMf-J9E`MO(e< +8@|G4}o&QaFmy_RvL%+t)wgt#57)3znuqlp}#nH`Vjd-<#~@i=f~H@0N1#iM_wvy85}`&rZdkypS04C +l~zLsrX}0O_v4u!*i{$j;;vV-Q+z&A(+8?1QEHL7-giD%PQh`H+dsa2%hvRo)m?|m?wqj$^Rs}>D%Q< +Vy=!Wl`TE5?yT1kuASeaAv;(3dUSF`m$)mldzUZ*+B%C6-oy3@3txwoyVr!1%9izue0oBj{1gev6sX@|1 +$$M5AYiof=^F}qMp!O@35_s7|vu%dJ75ET1cSQLISlG5~#J1K&^!YYAqyCYbk+R3klR(NTAk20_J|2unkd&;QG5S10XW^Vg6W>|E19l$3y$Qc$ZDqhDYBZGV-Bo1lK;{-neM;yS +4{Wc`4-dlA>lBd%@986f}pI@3Lm +-aE;Fw-vu&x({FRlnNJNs@Es7y8#*uu)apd;|SoTGLPY)veuxrz!zH?@NE5J8v}l-eX*SZ&)hF|FyPg +YXG3JX!2pTZSC;>V5p09jGJvDc!wi%yp1@I$$G!Y*=BS4wc?P}2bk7Es6;iVNu}H}NlIfNSI3f`|Ue} +p07D%klSSYcejloEQ5o2CCLW@=8a}~y_@;QZh{zMk@Jc=z=m+z}G=I3O^Vwrrd##lp+MPa%8n+o$G&c +tG+d>=v87Sm +CZC@NQX^~$Q=2xaLB#cl)Hodl&krc>!Ms(R?7>BwQYZ#j%C`Zy=pu!mDHekA+;33of{EnFJXLrnWKe; +PR_mjKIbU(Kfru&&)W4fQ#b*5t_Y-7N)HBeuSHBf!BSI0novscAHeYBr`f%v*TL0aCQ6b>zON^vo>B|ZMM_*A082YM0z|Yqd0(P!Y2)Ox6g@Bo_D+Ih;sSs%WDuqDnS1SZ +s|As=K^=~Q!^7)lQAfLAs0{OhH5Xff@BN^oLjzS=xcNGHp{8}N9&uiAOWc0nz0j{bukk?q!n10YpFnC=Dp4$~Ly8RzI;u)k)y=l^e*?)m>)rhEQV=q%0`& +mqLQ=RYfQzIg08Mx_ZWGLEXTBIlm}tjIX6_A1jo|5@Mi#p5+`zIePQ&KHjh#wbol==+vAz|HHtTbA&wtjp!tWi3eM3bIyN2c@TbQ< +~O_<$krKXKln8L^W(T{%2h_~iHRzMYiLQD)gg+e?&-~WdjjG5tN<|YV7(uG!`y;s+f%&Qw{Zua={Wky +h%ae0uD5XcZCD2TW`%m}I>E?;4!0^}+qD2KRwjS*A`T)xgo4af~f>Oe*qNr8+qf)woKF-9P=%j1k-D} +Q-{kpjphBiPGdzDWquMvn*AG6MMwu44r98Ej_+@)_)41o9c|WCZdV>|zA+8SG{R@)_)51o9c|Wd!mWT ++ayPGq`~f$Y*dPBaqMFCPpBi!Oe_7K7(5rfqVx02nmIJwlX5*vyBlUpY4nY`Rrgs$Y&=bLO#0~5%Ss1 +h>*`7MudEP>wR+jmiPjOun`Ku@8iJ;!S8282>t*gLhuI}5rXe$L1 +q^;>q#CDu_ZTMjY4r{$>Sk5;Wg_;pycWC5Zi9ke8`b7tB2TVo907~gy}rQ*4i{53L7|j^>~QQv}ryRi +c3=-53z2V=0l;lE#>hL8)nmdC=}PEJRV|;Y?=>+;(nCJLu`r{@z&~s&ul8q1)HI`5#{j^+sL}*b6xP6 +jbq*Nxi0w3R?)ON3dQ9okB8VQnpQ`lxb@`m&~ZjApHso-lZ;qCr-IL?8L@m$1)t9{V)>j3KC>w|t&T! +*rOD%=0Y)sJQ^Ds;j95Nrg3oMHO{=3&++Ol{hz+D^brgzgOCArghi+OOh2p-F$3yIzn^s4mxTxgu5c} +k&)sZ6!KC?4!S{*r(;4?3lrqxj>E-iUH#8%q0Itm+zEd_H$9ZX20~SjhuQF(9!ib`0S>d_H$9Xb2?88u!*6;hIT8do%!c3ePzoEl5Fi_V(?iLTg +aFy_n;uGzB>2pR-}F#&B*AAk{HBMJBMCmU;Ws^$97*t*4ZrE3Dp^*zdv*9;Al)^?K_{@gi +^iXmn!Dlx7riYRv!37;=7qqZ0XaTo>_#z`Fsop5XFxW1dPC$-i;xG-STjthcN3ws*mSE@RZevHXe=E0t%bXqz3)6KZENmG|VQ!TS3+vMrIITW=iA-o=1y$fE-u&cYMv +R)5h#G!#V=W^AkTZ;gK&~+o0lCSDH>lrGmt}|eP1`rrq17Q(Ae$ITfE;0@24s{GzcrreRAcj2cBbnjB +N>qMjCf-^)7{QU4rDhY1rYVuynJVR_N)S%LoL&g@uT4K~H!w3X_kmhQ +MaOBK!Ru+UKXHM{_5ssWWv4If?{sfB`;mDa2rx}6ZPYyEz`3!7j1oFAaN{Mjf%q5m7qJ}e<`xt?IE+1 +nA^0}=38ssy0krBveaF7wm=Q>XqL=9)IvuQwG-pqCWYbfZSxjxAVc7 ++khXH1O%@)_UA2;@Vp>q60EZDxX{jUH<=)cz_IJ=SI>Sa(qBKXbE#5ig(FUY=R#u{PVwvk}JtX4mug; +2gm0&P$90K$vg1`C)c<4_O%my1~sJ +o_ +Ra~)e)9DQi^o?|2d!kUO<56#{&M(RL#2II&>b3N-D4m>p1v%7@j4$bw7J6=A`4Hp>k@@a1AWTXT_yZ# +a>kme3vPf>c?+;NH#FQ4Yly^KUac%4Hkq`8xI6eYOLoviUF!fozmtwOS-xqCY!kk3Ar9C9YjeG`m8KK +pqsLF%NrpJj?_+~xuG4CHf|C5IGB^Dxgj?Dm?6d1fJr(mcT{21;_9r+95dGNpNn*98>iHqY`b!Rd$Qd +FC~;EzR?64{!jYIjBYr`3$SEK|bRw9~^*aqGcpGpi6uOLs;T$MRSrJDIBh7PO`EfpES3YT~lO~=GO8) +205jD4W#vc +4X|9(|0}gM@t>>wP#M9h*cBF9Ber`Q081heZ`!+KI`RwC`0BNYXqwLP2|KHqE{!(P4=8iJ2aq@odBu_ +sirRGlYB*W?Zxzns6$W6_i;j!TW{v6lTh>m}AT<0PB{mpUhf#~)(H^>~tLHs$+G>J}sb643Z!eRWmt8 +CPfx0<`g`i35VbE7ODq_5`2c%C9+GB?TkhAh_HB#!{S{pKcluZ?8ZeET*=5NzqPYkoKD0ebn(@8u;NiLUwmY;4iTZ+<@;b>zF|5AZ^b9)9!vYSaagLyVL_c*#Td +Yrdbi>$pgD{xHuHB*Eqn4=@7xs09?cu=yiwuW^~`{4xGgq{QZrvsR(Bd;U0EF=WQ(PjNg5<=ykA*vUh +JZ2lCxawzehKc~h9`J89x3)R^3=hfICp9{R*Kt=Za1>Qa(Yc_v@Z7-^_=P&TOfaKZyzSJR4D+J+HRJ$au|qGPwvQGY^m=o1bLsg6i%0Ni{Z|L5W)QCv$Y2S#l&l${#XaC +v+mwe`}f?tEkP~Xc@JM&1Ob0wZY8+daSt`VMw>FoLdwot=!JjbvvRBWOF=eVGw70t!&>0~t#*RXaTWd!o+T+ayP)472WA)k$m2>EPcM960|Balz$7D +gbS&OSyUpU$m}Kt7$@7=e5`w=)9ybTN0tg{@u37=e7cjxz%Jbe&)X@}WdpB$|*+b)8}a^65Iw2;|dsh +7ri8>ntOXPZ!T%aq$GD@*>fAWU7m2u(*Gsi)XO7+O_KVdEtmzFpLg(^4LUqD!G=D-0)P^fZ)Jqd)>zPZ6u1YxyrZm^Gmuv&8`D;vUU +TtwrL41Y}_4Iu38BCIxZf{g*fYBL9UrGjtIrhxEur7t +g0_#>-MPNM&s|swr!V-aPR9H=5n-o?T*cOGQ0_#&)Ca|pvYY1$c!g7IaR~VWwe0y2T0c{xm)V`Oo0P_ +3O#uEyI{QlHGt}w{&Pp5ko2KoKz@=k?8et&MipfJeq&$~Jm2KoK@km4Eok-zZg%V!h@`Tcq1iozhjfA +3H{3n0IL-=yRoKz{$eOY;-*`}1+lGsy4Hdr$oNi2lSv!vB6i!^UWaA%y2lB>y~w@SKrUSSX%TlOcrgo +S{@$EdHhvYzX1abPXu1D&D6idzgsl&MOSU`(~tHVG!QT=5-2#@MaGxp9ei7u?JTa*-$ZuxrW`#k1&GjP+gZ$=(jw%fDYo1g +xiXgw44T_%;!--P_W8CUv(p8GG%4XcGC67t)ubUtnq->!5%7V~ +dh=|l|q&GjhR#*x5=6^3fEU44weyBQg01l3BYiXsE?@wS=0 +gV1oGfAhT~uQRJm10!1L&VxWx#)2m@wd7!m!4G_Xxu}1KuHw+8FTuV5Ghr-BQ(;dv7pOU+$g3NPW5Y1 +tb1)5wzgYYbb&i97YXA(1Jsvp$J-V;4`d>y>T}qVsG5Th}aviXQWloFRZo-`h_BP!J)lS#4b3r7mC;g +hxS4dyWr4XC}I~J+6xi8a84T|UOdiaBLuMv=ddy2<>TBnM!bBSv&M**&!4FD&LLht&QW8;%g4ECjClD +tCyfy=ALpVm;^pHUG)BC9oO{NImydJK81eFPt{Ec@jNrz%!$%nOB642apZnF5UP^!7f0+?|94879x=_ +2;5TOgTYYl5+r^{-M(1qHyh6r6aSBw#?1swMbYhtI%(-aW~J}Ti5>~u%^84+2qb&QD0RaQ4d7`STFA* +fuv%xZuL1J}Vi1PRt2o^rJomHAPK0w1o?bqFd~kDOx!m8%C?K8Qp(XNwW6)mt|+g37z~BaEQHhmL4F1 +WW2kmI5LX&c$K`k%-f*(1=7dcV1@%mEUw~z#&M0uRF^KA`zX6Z-_)}=7}SYL=Ce{QQ$Lwgcl4H_e^`7emER%)S^3hGO=`P%jj-7m9MBSbez{cC5bK%Q{wH?nPbUFGs0Rpv^dHg+c>CCI&(mX9 +J;;vw_gd*+6LLY#?-WHV~RR8%XqZHkfGbY%tN?*Mo#Zf9eHx}oWIHqWRVnr>%fkGi4hc3#?X!hX7)4JtZ6PPboTqy}V=5%e@~XM>9K_S5ZG8Oea~ +f`?=G)9t(%qYLD8JDX>mzMpQNU_=zd+$02t@TWW22%{V1bO(FWIEz2s!8;^$gj5wbA$meickr@?u8`9 +mym+B65-NI7Hhqnf$kPka$rH~KLxl+i7=Uge|!*i|_^5HpG3i+_>RSNm=Y%GO*cs7G<6JagSEev#o +@s#j!rTtNxu$<=?zU3U_4T*QS59u&M$>}Ep?oXIe3X6JS;U|h6CE>$rUPpmYjf>M9u84v_f=|T7FAs! +9xHq3%WPCwHf5LsmTJw{b{>lJ@6$YKUEbz+nn*8J?zR1PBzN%i|arEir(V873`iGYm5ojRPPJPEyyl( +J?cd<+Zp?Q~{@U(q=LBAB|GWylP!nil{PlO5%F3bW}@j&R`@PhC*FkTSu{(e8>Liw&f8REil=_g^E{K +>*}Ut}(YLJ_YoXqmAaq0q&#MeIfxX`Dq9isfbPBD@I2BGaRMp(qsV%zE>QVyQ8*48>}*K{*8S5}J-Ji +>Q;hil(D)K?OP)7mLq=(O>+_8|qj3uZZPn>jHkke4<#Fc0Muv&hFYd5|;EUqYF_R;moK=I1@X}lfs{P +vTi*yr)>12h<;b)dy{iH5`qTGx)W$@V?R^KAj;i +z^4;s%3@n6WsQKUs8zjDKQo_e5+3ynDU)L5E75z}a8`1pc>P +=8- ERjLF&nJ&}qL*^@lQY_{{AXnPfR8v}9GHD>M1fhYDF*OiEWd_0plLqo~t{TXTIMEPtr!@n4 +!PX6g%eD+VkUtF!KafEU3`3AZ4Gc$+MGXu~kVg#+PmoCs3{%97XqGF8oLROYa%TDBB^O%0c+rKHFJ5+ +`<%<_yX!wH6YH0X^-0Ev@E@#9`?fwpS|xWPWNc^mZkeSnwGKq?>Bza6@xE`y_p9Vxge +0yKHgdSD72vhtlW~RM+GhoLHF#YCUJG9T1p{6SRw=-1!K(_u-Bin0GUB!1bpv^6z4;0QURtXa(7@L#1 +XnT-Io$f{$UAA#=M*0hpf(@RE650bVe#@Qg;* +cC`XB3`-%n;Yb0v+EoEwDz7U5m%A!^f{g8p8u4<`K!~>}1hZvT#7K +UYJ6Tg$}%8l`?^NFcvfiyH@j)X%jd1-FELUG#E!jGD32b=+c)_+aCuDRr@squxbhrR!t#ZJgXFd>7#(M#S`L^ygR&=K$3NpMxF@eCrt9v_{Fanz_ek{0e +RIIS;LT3ebH%qUKA@9}jYZt1&kv^Y!v5eVL^4M~)7 +Y#!X>9txr`3fN0R5_p0PMH>)-j?xtvFJMA9paKd(=2mj30L~qC1>8QWZb$VMI5yaiki4yq*!=_r;M?{ +CFcHy5Wo?HSpujjOa!%j)dCueSM7Rs^_#?5q#dph~;xd@OcL#md_Qz=Ut3gK34>v_b_7lToHWU$B5-~ +Mez9mBbLt#j3mSr-Y`jWA+a7YWvlF=AO43D!+8Vp$gn*4<>pvQD^e{p%Pp(>)QcTYm>5me0a<>+fR3@>#fU{XL9 +WJ`2~ae?23X&%$-<-^hsNvvA$|H#1`SEL^w#K1M8`h3iKBUmarkEL^w#9gJ8$3)iiG7bBL>!gcH4!-( +axaNYX%F=F{FT(|xMj95Mk*R8*w5zA-cy7eDs#PV6VZv96Yv3wS;TR)pz>$)Yvb?ax7YhAZQxNiMya; +@u@2-mHjO|Es_65+b_v&prtTOwSyem1$*bxXuC*?u;;RmL{Gdd*mWS8|TGuiWuH_-Nf!4K5gtvHz&6@QV6X7i$VzXww#YA|EhuExHZ!v+l`0XJ +!Yo-OPBSDW2u~{?M3a3dbSjT3~Tr2EIf^}@x%(cRfB=m?SXs#7@B*AAkYvx*EM-qHyvu3Upb|lZ|+ou +@t+IagQ1D@Hp6-S_w7Z|`T?B^J;3`Y*{<3kMi_~*wwlaRyvm}QR?-nRp+$(i6iyQ1c*VMh|YXIIo*HS +9=&_iVn*Rl|-XbevsLbJegT2_0uw)Lb>}NJ7WiR+_7Z(*!xXZx6GrG*=Bf5_J49+e&jIup(vd7Pa@}#xk*u~M9ro>Ewy5U5 +UPpqq9cGJa?(20VeVb>RAaC#@)BVhOh3Q_NzhZg?>qzF +4Yq9-RV!{M9a~Wz{YfyW5@{5-EiXZnbvxe8K^lIi_*R)Oiotn23)@Hw(?2euPZwQojk?Z=xLFw;J(njBarnjLRB!U!5VZ +8^#a8aiz`#t0fZZ8^>e8aiz`!3Y{UZ8^yZ7PBp<7(qj)EzEAw?0Cx=M$ph{%UMRy&}qv#M$ph{3(H6} +JKl1E5p2P>3^0P8w_7eUf@a5CXj__zX2)ADGa}?O$cT{75F|Twz4W=PDyYKGzr#@?oVHJ&Cv +6U_{7ggb^X1QAUJ(#uyRu8D~VuXMzzSpGii9e8?fpusNLSTgwRK)3=Th$fvKJ5y+>ngAvH5uagnTr>~ +0<$fvKH5y+>nhY`q!?m%`3f6Ey*`NMudEJGa}@(hY=y4y^IL?>|;d8XVGiEqb0rs$GuVr{s0d~2>u`=Lh${J2 +*Dp>Lu5JIH`vPv8pR#B!U%4Hq#F$#f}0?R)nCIE$8;N+LqsF8Ax3aTIO&~3a8nxH>*Wx%8#}4qgZt2W6oT +V9bfvaKa1r=P^*w0U*K>^#T$D?NAP&JrxszRlptHl=-kXfzzQ;qOj6e#_i=8WUG6MPZsxQTToO=fdLFa?{8 +~ml{b}(~wDx|bz~-UH18rx}5K=>BAf;6B^ +E{5>dPnA^v;3QYy(u3usV_dOnDn}}Wl^8@M`%%AIQDbPQld2ACSXs39R?GAbdG_M_D1nm_2SQF7CV15 +%z0aXrs8>T~G-_Gx51nn-5v-YANz|6RM4=w^9H{qZJ_^)&qp$ +=FY3JdHH;EV}ubH&P#02P_8k%mU)en{LL-w6rpOPx$80`n3$V*@j&rL^Y|DeaQ`ORG@yoKW|AE#9N+) +u1}~r}<(M62X(PNiyNlf=RCF}2@GQZx{TYg4I0TNzQC^C0WWRZkmk88%%xz=CiR1cn=XhyFRCD$s8+A +lA`HFCd!0{Mjrxj7n*^R6_h-%JlWLFze&Dkw%QW4c`?o!V{KBE^If#cD|GDTE#riZzMsOIc3<|v|?&0 +*GSL^bEuvqeh8{9%npRCB(EXJaB951!kIYR+uqd5Wke_n3AF?AzD{Mj)R(yg@)zbM_`n4pGhK3DzA%H +RpG;JBz61{8{x39FI|+!H8-kQfFO<;Htz?#RJHvL-7q0^O71HCgx>!q!87d-OUjkL^ZXWiDIB;51V@&*l+Gr&mbbTgW~`=w?Ds5 +A&}1`yK*QEn%&PbMQzahUgiO6gJw3cX~6OQ*?u+vC=r@H%nNlxL_FB>zzP1@QJy6@!r$DgMu7RVi=}` +={LP~rDQbv~6)$WkOqy2?D9-Wo#V8KJ!q&@t!$JP}eXPAW$v?A}$A+W)GgtU~P`fmHolQ56^3RPc1dg +GajX2Uj+r_(m9O<7u!iyBn^y|$F4)xFP=Q)Q{{WHC6#c=w5W-B{}ID0=c$SyEW-p}sk4K@zm&-U}o!n +ym|V`mtFV>qnd1IJ@4e-94bH}|k3g){ff3En8;$o<@L{!*N{pF7T03Cv(w9IHa9-0UIs4D8!=*7#CH +bXgB@sJ?k#J>%umyujNul+!hbc*BF^^v#Xz9OE#3vz_NQj?&K!D2^hcJEr~`Holv9-NqsMnO>4YioDc +JZx17|Z=Vg&YW{}o1reH&v0^XKR$MnvFfGb0Ebo!ZC<=Fgb=Quq +gS+qgq8fA)BU9MC1cxyHRxR{)kNGF>xA_cNl)-y8`7-N%d$bX~0@i9jFAOJuM%onr*^>A(g?FrQA0Gl +KbaQoRTB>Eua9FrQBKF@p7|pEVO1tme=pBd~Xq6O8D>%rXr{YH>Rwmf^@*&7Hr&h-ElZQuAxokKv$o@ +Bqz$S4YAsar_b^*q$C|8Hl{ni8G9NuFYR#l|f!OZ{EfT!lS$U8G#qfxu_I*rI~%qH{_LOjOCU7LmpF#ywYsX5F_xicJYiuUTK#7q7-?h+5OCGY4)CH1XgFO`fDQZr@jZfloM=Qkp5|&WF1BNr^&StsYw5vB>yWF>7SEq-H`s_tNt8<^uj5gKS=*HPq +7{#{nI?l+Kcp0^V~W{uqs?q&tO&Hz+8&-PxA(I2kD>YhBF^v~Q{)+(fb=6VJgL3os|RdfiF2 +;0chOp)Z7JHhfnl4tG|%LhrGxeNR~Nb<~G;1M9nGdIj$36eZ>S6FwDrfyfSBVDZZA5c_N5mfSJ^Qe=l_CeAVf!B4UwL3U`igEbi0q1i4rv&at3cJeevc1 +SPL;+EX5BaC3;sl{7lhd2bBid%B~SPIAv&2Bx&2;7Hl%u$gY+QsHiWQWwwL*A0hW)|6@*@Fidf%~AGd +}N1a2iTY*JEStdDY8Q(awKuILxv>I+(p(ZBy +qGuCXzVg{5>*>!}eMvak_bBLK0_wJ-c@ziL;M4_ekPs_YO%M9V}@G$B%UsNgVAGB8fA9gyn-Ij&>H2# +F@XqI*KHYDoIa~#QDpyqbvqwaU8_!8PYg^Io`)EkGRqHBAYAZalTp0i#qZ+->hXNK_2HXC)e|)28o=% +oE+wz12Q>(IjusFNaf5=bT9%bO|q9@jt`d^BEYY_!hq+@D=QZDK9~4n5BEmT@K;vyP;fvVV|j|iK-4p +y-*2yBK%e0#GgR__cIC5c48;OE$xuZ==Na-6{cKYI!9+YYz>q!}??`?ke6jEID-4;aZ-&bHFNQv+FiD +2^X{cCTXoJuPQvf8g9$m)QGAghBK(ybR93Gz9lf31)1ml-0TUmQ`tM(Fd4qZ-m3N*oFDIIe#Ud7RKt +#r`44;gtS0Ce3LLK^|u`1bLj*5ae-ALy*U=&qo-7Jhpv)lc8KlQ9*^^f`Y`nQ3eE&&xeBy_^I)5i~-N +Thm#EWkNs*b1Ab%=X@{60c=wP8jA+|KW(~q)U!7pUzvC+kU5VZaUv)Cz-|H9%UMgXTmFhgi!Je2tUlPoe$85fjq +2CDT3~1S6)POJf?t!5D~=+6%`5N1rjD0<(^93(;GKTO{so-LuUP@$Fn-M{g94wgS)8ci`MT#J`z0vj` +P#ets<^LfF3djQ5oZ&VsW4V#z8C) +)VVlF{lTh$_^VKx;)cQBg+i0BX^J=6#Q46vz)&Ed0fxlTA9gVmwHidDO?=hE4GejYs!2%$9R^ax7<@d#1z;UFF%4mW>!UX2i?A77qV@4}|YLF! +$xfYiGnuM6svu_^lUf_@j|HK0cbc@5~NAg_!1sZ>B}7?9UR{RbhhVf_bl0jWP&2#7_A4cV8&>Rs57eR +);=L2SvsysDpqysoJcVq4}Q^#@}C@d&Xs`|_H87vyza|3S#>x_%1sx}hP+YeWwo@*2@kL0+T!DadP7K +jr21aGidt5Rm$=Qb5co?9d*rQ}4nK%|Sdeawb +%|Xm4?9?2jMwkjnF)9P}u#=&NfYf*80#e^q2uOVw;WoxfV4D@TP)PGvY>UPMV0{`3fo;`T1ZM@@}`x +*4hoh(%MCUOJ1WD%?*!!c0JFgpitcbx~O3AT`25Kx%}gfOv$7a6i=uQGMee9wDL|#??jrje~fED8MmZ +Fe-427mR?3^Mcg~69K6aLSEWIMzM^8)Cf}nsS#!ZQX_=9)qX@G+!_58%&qnaP%>jY0@TbHj{rq8W&uZ +}$SmL}n=uPG!boNTN8yZFZxLfM>n%!W%z9fB%cK4-xjd?O!76qu-Kfdsk#(acmPh>u#qy|hqb8R}^<8 +p#ryPz@uM_D~H&+Cw!AVGs3FkeA-XqqfFu; +!#{0kQ@I^iPs#1L8obz!D;^@|YIf?G*p90|h$MqZgd*q=KqmJ2nqg1`9RkSYK3_d0_xa3~hS=vTHaFx +xpWlUY9Zt5-5E~ +?v_L!|QYJ1F98MQrTtBl$nv*4q)$836$J~5kKRQH%oFUot2FM#qM2k|E(BV%^9DDN>lTcm3o#J)f-ws +-muW&%>*)ew;SF33x}2}txfNPQO!tzMrCkylVp;mEdGPLatm%V{Au3hF7jFsi3uX!Yt>$c0fo1w*S>3 +1p5Oq@IGIy`rB=1*D#89Y-r#$I%KozZBFuE>lRylZSykl~I6FIG*|`%&)a(507Kq4%C}?WVjrtckwvP +{pEG#ev0(hb>)8IIJa9_)KfJ9siz>dQT#LPZa`EPhpk~@Kd?S-VN|mxyas +K&`*T|Qcq!)UDQv-0#Z*wURU)~RRO7|q&uUYstHIvC1x3$zFcJQuCVFLMfUCro4#CR@6@!-MfUCrZ@K +a|>3%8*^17-Zk-fX7A;?SVd@izgO6PNty&KU_#ouqC^SQ|0jq0bW-*2Jwc_6K#dP-VF^^~-V>M3az)l +-m{)_IY=(>gD*cUtE~_D<+Lxw=by;gEYL6hTiWkrvdGiPD1VDX|aHPl>dkeoE{^^ixm-J()yWP){b27 +SxkTqy_b43gyIQ-4|&=J()yWP){b27Sxj|%v*m~(fYf}mfwZ6p!qJO1+_CKTA)SKQsN?LLwslpf7^O@9*(!m|EF^FiKxS8kf+_k*ikYbSS;+|Gd0mlZ42B65InnQwiP6)I*>PgVm0`JE_~d;% +)oitNi(H(K>)rI%oyl3CAZ*?>3yNr{l_75%1Y!2Ryw#tm*3v$)--7*vduFa?rWPy&UJwDR9}TgRD7%mk)d0)1CT{ +*X6sFty>6TMgW&R`}k$gUbSrTKbraHEU_f^D8!n5;D0zX1!sE3&83}>xV8k +=v=S=q>`U2DahklRg$us)@VtVZv{eLsPj?Y(PO@ZuUBm=UQkp_@$jO0KzFj4^7$Vdr<4$%~-8lGOeo) +MvSn;1c#fVG<$iGXZjBnHyQh`yxWkv!{v%5=~ApE2DZgr2?mlpyji|BGi=$L=A^kOSZeXCVb5z5Px1eLRYM|4!p{wJpU +irN3nbYCs|_e}Rn`vazX@%|U4d-47g)4h0q%ye^Fyr_Cb{+?9#~k4F=?9ohMr<0-I{Om9mVC=T#|d +#drdhrbS1wP}e|vfwIjw!)2Ra*Zzj--bVi|)4e17cTD$Y`adw;uWSF2>E2TRC#HM1<=?)`fVa{wFx@Y +1-($Kr(Epj~esTMIrhD7`eWrVb_yNqHXHl};^37GEv;gIRxB1TO2zHrQRuZ0z+`%Q +C|>0UJxrhC7!#&oZ*b*6j%dw-RDy`{cDstmkf|B(mc1^Zu^?!EXQGu^MZ|HO1JSaP(>(7QnYmFZrv%b +D&4`wOOf!M@0JFW8ru?gjfY)4gC{VY(OWt4#NTeU0f}uq&AEH=e&_y0=cRGu>}GS2EpCtW`|+6Kgfoy +#aoM=%^idlj)xSzhb)Q|65G={C}J2p8so@?)m=?(>?#+WxD78ubJ-o{~M-z{{NQgp8vmNy4U}oGTrMx +Zwt!EPk^5>-A{o3m+5{2(6+aX{RH@*Om8s(;uaGiZZQGk784+DF#+Nh6CiFe0pb=DAZ{@M;uaGiZZQG +k784+DF#+Nh6CiFe0V*vfK&8b5sI-^>l@=4A(qaNsT1{xw +ao?1kuR$lZ+r5*?yW4L?heJGJ@30{OI`XGF+nfDs{|ON};$y^um;mK +SV@?nEk7xLk0UKjG=XHibnd +)Y?peSalvz?I&o?*729A>JU*@BXlsZL%2P_Hu8$&(t9ys1uJ(^081)qR^$>SBv#i$Y4AOP%UsZwkj!r}##n5~ot9y4d_71U%Kn^BiYVr@Gku;YjLK7teEBol@q4yFB +%C!QG3D2=212%msIOg6D#}Ji&9pU7p~%;?2*G +wBv6?(6Yq~pC3>6mjFogAE%tN_O_Bc{o$q-?~#6->dyjrjr8MGe-^-7q#vhd`-t<0k8}M^4BjFAc(y+ +iHaw?9gTa7rwQQAfD0Zui?*nyZF^~9GSuX2+7LTajXW@wJ@dv}U%J^zoSC$6qnLs~Gpk5xR*UI)qfpL +ijoXB^pj6dVqm3vwJU6c8bK@pZua&$?0^ +^*-a{Q85@-IoH-I4$gk}Oa!(BGtx^@?6#x-^_l(Jp0WYAk4G +h%oJgs{bmmKvDmZU%rs%1{bmjk=GkxNFkznkW{wc%*>C13VV?bFjuGbBZ{|2*p8aM{5GLoLG%&BFfq6 +VF`O`yPS>=t_>^Z``@tQqPm^WUt7YOslYxW{x-gwPkBFr1F+2H3k%?^L?XzQV#A!e^ogFHjbeodI?NV +D^Vd5$!Dl`zkdX0H+EInwL`VV)z+E)wQB((HA@JV%;cBFuB7+2uYq^oc3)#>o1}$Vm-+r`^4SoC3LN@g6M+@1|w;wHJL*IV1kPUtN(Ly%#?MDmQ(6=8gWJBM6w2%#b`_V#H +`}U)StoH3k3t8>kj~24pw;wHJwcIqNbzrgzY!XdilW1Z-6L)1vpq`b_HCArwOy-Tp+*!iB@t8YDm^U7 +C=Lz%1W9|ZB9-rqf66W!F?h;`hpL<`s-@-gT&s`zR|ox;w<=|GlV$5`}ZY6oE6`l +C&bzC?JOaI9>LSzEfC`T?9X@H!+U$n9sVfN)-#>|zPnDXao+oGkr20scsoak^We8<34wV2gooU@@7r^ +PIOl!aUrI8#?zv*EUHuMy&m{&t=a82ut4&glQKOo*Fi-(4canf@*RjWhkb{e-|kHwl4(ZV> +_l-6jN6?B!SdBxj;OUpY+)4x9>1ZH|dh%?jMr-V2&{h9!0rM +E8#$-Kr*6Xxvn_BA2SPH*230z2&{#M$ZH4MLoq-qAFKNb8^P5Qz|KeaDEi(mU!94%Z(aJRnGFsu|AI? +@kcnjPvd)A@CvcJDjH9k>}&c`zIPR9C-h-7|k-3+@$1z1uh@RX+9swgGD~z +S9-U~N?9)n{9Zu4&y&FK1)>_c_`vB_nLL2xfdx1>f#()7YLJ(KdKJewyRv{PpSN<;lz)C@p6dnL*UF7 +a5y=Bw5y}1*iQMQEfpIBP*^eTy;V3G(F)1o(k3z(Lx61gdjnSYS$b(}!;5UD_%H#&C9LVREQQ-HY!0( +AqOmCGHvR;6vWg>ZB2BL3eV4TZT^0^E|Q%V!47uYD4;(||CHtf~w?XGtCyFA^)L_m0}OcJ(iWxXme(N +uu}-~LiE)eAUsWu#%MOgdhb1?m;@7nE{tg3#82YE})!l@7r?%BSgn6g7)xCsyr +|s2!gn6g8)%}Edr?=Gugn6g!)hWWf)As5?!o1V=>NH{AX?yh$Vcuzb^)O+c>bH7?Fz?j8dXzBl)V+F) +Fz?j8dYmxt)V7-?RS?j-+q0?Zs>>8R__z$+wTEkzWp8&CfAYSFfgA7HhSA>() +;!5fU;f(l=V8WfolRAf$dBJR4=fBYXafN?RVa}o(yL;Rp9pmid!34=h{Gj+dzM}Uk##qS)g7Xs26D8_ +GL$^7ucY;a(@y9u5CquYf)Qa5?L=3`;)FrYzVuJg4j=VWxZs-y$#$Be{H6FnD}sdS0?W>b(R(zl`Tul +daW=_6u9RVMG5Er*ebKKUMh$aMRLa+MVT~UBpo1%8nH3!$|6~>mF78Yi6N2q7Q3=QKjg&Um5GTuN>a(wBo#_UR~G0;8u~rSgTQ^it}M`Bsi +bse(ti^p?iqHj9~c)a=Yzxs>?;?Du1tlZTVgvTIav_ea+<0_l(jGR@4=Y1%k(C>$u1wa;0{zG$Ilp9)v|AQS`(|?E5oM{IcLPdj +w5>i;J@3FUv#^`6$iwy!7JJxU!V(YLM_B4%`w251c7QPJVeY`*+hFYQH$Ju=nt2aBNDaz8Y?`pb!wwN +vde~vYDi1qC*wDj{5>|WIF~S-TJ5E^ZVJG@n3LiJ=nhVrgSS0?Q{Or?E?fqo1F3-~awp&E)$9Bh@z4el^tx1m(X +qwSBi_UqMwaj64-RLjs~R0sTM`>SSDFED=FDht<>8;n|p9-~^mP}P;m`JfK)st(wr4){kM*m!M!5{Bz +Z|K0uo4A%?vSH36})$&EDsFsnEX!~;(Trcq4fS=ca17#x>ny3l*Q9$vDS{c-j+W$vLY=^(Q&^@e`1Ju +d|B2Eg?@i=foiBl^K6Q|NayD~As#eow_Y*Mk1#H}=R+{%S62}oi|8jJR&fqtY`E)X`b!?vYdaBL|r)7 +jF9=h{Gwv?~+i+?Db7w7N3!Hh5PiHvnB(;P>PS&z6mt7;GsOkgiNPvJHerZ6zmkTgeHeE0gW3jF<>*B +~P?nnQ&yg9WJGMnK)_LN-hxA%Ok!y_k5nP$iuD@7JJw=!V(W#AT0H;MZ%1ST_?P +9FyDSp3G?muj4-+r$N^X>PBFyDUP^s&Hv*c4)8V*?=@+sZe8?REw`s+Y +_8p_K}=mC0zjGP%&(R&La78<;l(>ueTSpYp5~?aKq}PCk@x66b*pXiku1p-*x-y|Cb! +B3HEw}d&y?Rxkzf}~Ab-M~gOuDi_J=?pJ=5Lhj4yX3tdYCXw70HcF6?mn+3Y?&-p%sL!0wH>+tvrpNgRn9f55x{?^2y8Q0E@ii34@+Q=KGG=KAQW9q%Fir?WnBGg((GE`UxLalWyH^6lu1x6 +jqiMI}f6zlD971fgqW}ReW9;m$(6F(uqk?(H^aE$vY0gh%rBfxR%=LEQ&(BBf^wn2YKfZGH8f&jMx`g +;Q0?&lu}a9f{$B*0Pip9pXq{gMDj&VMGrG4huLI2!({4NFVV#(W6zjx9AH+nY`yeJF*9S2Xi9U#lc<+dqh?kCtiFo6Pn26Vnh>3XDh?s~MjfjbO%ZQkWSB!{>c)y64h?k +3qiFmV!n26Vkh>3Woh?s~MiinALn~0c*SBZ#;c#nvfh?j_niFkvEn26Vhh>3W2$T6|EFWli||65OVh9 +-*RbtIxV-bEsc<3%K*INm}cisKa|qB!0^B8ubXBcix`6R=M4#u2d_uNx7&r6}H&IV%!><&~4J%nc_o6 +qo&op{0~PQe3tp4&tUAaS+$+h=aIeM;t5z1BQ!rG!f!f9kB#g>WC${Pe&}lWjbOBZqgA;aE*>wf;)7? +5?r7omf-drO@z2QM^wSRIiiZZL0fyt>SzwEgl1lQ8R}^Ig8)d=A5=dg7o|xV5BcVZdPp`$)I+8@q8`%B5%p?KiL5mxveuNyT2m +rxO^K{EC9>9($XZh(YfXu)H6^mvl*n3BB5O^FtTiRF)|ALvQz9EpiEK0_veA^tMpGgiO^IwYC9=_!$V +O8l8%>F9G$pdpl*mR?A{$MKY&0dZ(UizWQzBbUiEK3`velHxR#PHdO^IwZC9>6&$W~J#TTO{pk-bgd4yWbcdZH$AwwlD*Y7%FwNStOMCC={wMTs;6MTs;6MTs;6MTs;6MTs;rb52*Lh>&KWh>&KW +h>&KWh>&I=gKB1=$c$#7$c$#7$c!dZWJVJyGNXwUnbAaw%xEG-W;BtMwM?Waj3!bPMiVItqlpxS(L{> +EXd*>nG?Ah(nn-SjO{9p6CQ`&j6D#7Pi4}3t#EQ6RVntjuu_7)SL|J}8fTA#(SWy^FtSF2oRuo1PD+; +5D6@}5nio$4OMPW3tqA;3RQ5a34D2ygi6h@OM3ZqFBh0!F6!e|mjVKj-NFq%YB7)_!mj3!YOMk8NW?a +CB!(IkqvXc9$SG>IZE8u?mvZBj*7G^wI1npDvhO{(aMCRKDrBj2y=$`nb_$lE$ynW7DvRM7@as%V2IR +kT5qD%zk)6>ZQMMH@8oJ>afPkp+!WWIsA(t)dMYt7wB>wsfL6;v+=yOi>QKBsA(5g#FnXNv0R}y&UJn#9R>}z3k@1#6l4vy}ahc#6l4vz0Bss#6nRbO`#}}rcjhfQz%NLDHJ8r6p9jQ3Pp)Dg +`z~7LQx`3p(v52P?ShhDoUg&6(!P?iV|r`MTs<}qC}cfQ6f#LD3PXAlt@!5N~9?jCDN3N5@||Bi8Q66 +M4D1jB2B3%k)~9XNK+|Fq^T4o(o~8PX(~mDG?k)6no3b3O{FN2rc#thQz=TMsT3vBREiR5Dn*Gjm7+w +NN>L(Br6`f6Qj|zDRFp_FRFp_FRFp_FRFp_FRFp_FRFp_FluBf8bGXwP`MW175~mp|5~mp|5~mp|5~m +p|mo3duQ6kMyQ6kMyQ6kMyQzC0kiL5mxveuNyT2mrxO^K{EC9+oTM4DQYBWq2LtTj2Z*5t@qxf5w>}P-_$g)EY$rwMJ1utx*(EYZL|48btxMMo~bmQ4~;X6a~~8MFF)&Q9!Lx6i{mv1=Jcv0ku|9K&@3 +2P-_(h)LKOWwN_C;tyL6IYZV35T15f1R#8B$RTNNb6$R8=naz;;Tt9?;x|lE1aO$7h~O|45vgG+B2>dvM +68CXh+qv<5z!i^BEmIHMZ{}9PVXg1oyQQeVRIv9!$w8WhC76)4G(FfnxRqMq*2|ZQQf3b-K0_7q*2|Z +QQf3b-K0_7q*2|ZQQf3b-K0_7q*2|ZRo$dj?bE7mf$41dWLO8KOqS{tRIwVt< +CX5wSl*;E33tA#z0Q&k#By_GgG45&JU)k7$v|5F{chW{46I6*Gj1h>98FL`205fg++}hDZ@nF+-?`7l +|y=CddrYA~rX|MQl{Wi$sS?ZAc^443Xw0S){p17HMvhMXH;`s++{Bo5ZS{#HyRbs++{Bo5ZS{#HyRbs +++{Bo5ZS{#HxK_)lFh;gOMTD!wwXy4wR@4l&B7rs1B5<4wR@4lz0xrKL-O5NfGs7k|ONGBt_hZNs7P^ +lN6C3CMiNcOwvR(5Q0BUQbd24qzL~oNfG~Hk|F@aBt-;>Ns15O6+951SitA2uoiKinZiet1ZYY6hdaiBa9esBU6ZH!%S>>1{%H`a2 +@sBUS%1s{a|)|BUK?M)g0d`kz((&#L}sRsXZ9|5?@WR`oxtZZHsLV$ZayXIj-Wt?HRp^-QaJrd2)DdY +(x?hjPj0^!NrXm7OOhrVRn2HEBF%=POVk#oo#8gDIiK&QilUO8jbsvF<6Pp_$CpK!XDXtlUPGU$^ +GZd>6snsPs+$z5n-r>>6snsPs+$z5n-r>>6snsPs+$z5eM;3$N_B&Qco92LsX9= +pI#8)PP^mglsX9=pI#B635dRzuL?rb>N<>mGq(mh3LP|tZFQh~y^+HNSQZJ-LB&}2fc_AetsTWcrl6o +N}BB>WrB9eL`B_b(8N=#COl$fLlDKSYaRcY`-N<>93a70w}0!Ku}N)yC0FL30zxbJTF5XPs`f=h>f6hN$Xt3E;z|PoocW?YfT&VTfE(k405`-b0 +d9m10d9OP0d9CR0^I241h~O12*{P5Bh17-FSVXmTF-}C&ugvcjn?y4={dqn)N@3asOJbSQO^-uqMjqP +L_J4jiF%H}67?K$CF(iCO4M^imAL1n*7Hj1`B3Y5t@XUodfqBMM>vUkj%X6~9Kj^&IbuoFbA*zp=Lq; +v&k^sTo+I2tJx8>MdX8WZ_q^14UTHlaYCW&Do;O<0+i=eVpGd3AT+W1LA-`Hw2C~|grTp^G_V<$e^#W +hNs@q6p`Dp@QtLn-`KAo;id@HyaMBm~iY@nV<%GLzFrqx8T$PU&-@@ +rpRnfNML6Uk4dc4Z3Hw!hBQub0U$J2l&rAlH-j- +JY+wp7^9*vppG6z5b{Cdi$%L{zyub$#42K0mp0dp(I#76d!wT@>&j1foSdKmBnj>MIN?5SnOeoge4w! +ov_rymIyN*woI7yup5MB9=1YQ?qN3xD?IELVWo%NCam(XJA@5A>@H!ohutHr@v!@ZwI24Mk43)y9unr +;ZPPFyDU92=ndtoG{;hF9`GP_mVK*ey<4g?f056-+pfh^X>NyVV?c2?3L8LL5uK+ee7w=y&@GaSZ+L0 +3nW_-%SzX*!f|V5Xa3Aea~w!vwXLQ5Lo6hA77li`b@0)jQk>SSLST;-9bX6uQ##k6S4S ++Z&#*zL#%p3ta?MNdPA&wL#%p3ta?MDdPAamL!x>^(i`*MHgc!GsnR`6b+ANrutasRM0KzvVC+P7Etw +OxD^r~+kxN^Xs+3LxlulKWrh#^+DoF#Ur6yJB8Ca5=R3&Dr5;Ika890?SMx~@tDJehr-Ib}#k>8H%%2 +Z~Uzz7?a8G-FdV^n6Czz7?4qBVgnh*785zy_$X>J)2LKH9+8T6K!Gfw8qJd#$?duqubGI?>9nq<3ZN6 +l+x`Tb0RHWpbuYv6;%}Oy#ruhIUt`@;Osy!c3hBGnMaIfbW^g_e|YnWGd@3b(0~#U*DCf+lx#}3{9?X +$#a$axyt=q-IC|32juF;JXbg7x#}Ug>LI!6A$ed9%GFsuS3M+GJtS8>Bv(D8P(7qjJ)}@Qq)@lyh3Y4 +T>L-QjCxz-Kg}Nm#RBtI%Zz)u7DFSOmsdBkgxm>DTE(6EQGQi^AR&S@jq|!Z7b&pbYk5YAyQgx3q;2x +#w9;NCYrRpA~>K>))9+m1ImFgaq>K>Kq9+m1ImFgaq>K>Kq9+m1ImFgaq>K>Kq9`bW=P18!-ao5&HvT7|DJ>EF<|3NXAI<1CldR{(uyWh+tS7eO8M;*WUG$za+>F*{;7~$c@>qpEBeI +ZP(8ja-+8E=M1@F+x52$xpCX|cMQ3K+w}{E+{o?vdxqT5?fM6X+}Q2(>myUcX@o_WCVDu-8`%!Ct>(2=@9HhG4JXGX#76D?_l?9~gqY{>YGTgmVV95nej_H38wAK^+jz8PowXXHai7E!)M +$`e}WJDbhPDa!L;bcS|5Kcza0pVmsZG^X*e!)+7mj03vWT_!CLtOhUkGC`SuYScp=gj?kavB*vYa^&9 +Us7$n^zkJ%3mVFo#1AWO9<&k8c|RksDC9OJDut%iMvb^%(#8n2t?hZaw&w_;j=*bsSG)fRje$NUNC+) +$jM&lm5IqOMqtTtS1i6QdP8=o3Im_C!+At=YQ7723v9-o^h$Ps +2^|5btB|H;du=@4OOUhI#_6vKa`u`$q%lNnX| +%x2fW1yWC&<}r{OUA8&R*lgX9#lk8XsfG*=zmTZh}fchX``^`n2aTL9o};C4y@F;2nZsuM^~R2u6*M6 +6dikm^`L2#KvHJXqF(@YiSQb&R!cUF9?FYPEHf#>@|KtV~8!n_!5mFHVNZP{DaP38>eYBuu&KtdPtD7 +*J$nuL9o{Wat9ewYGW+#-9B)9={D~KV=VJsg^nGvLhM&~aa2}Fyb7bcfnP|y3LAT$%L>MC~)?Mz2MrZTz4Zl}AUdQ$ +Xgx09pv>t%uGZodUd_3}WyT8>=cHe(yOrPyYH_HAE)?$@JBg1uekPJghadzfr!9?6F0GR)fMf$dc;!+ +&iaAVi)AeotOUZS%nPD6azbDoMm5VCd3FLzjW}l~z8t%mVc?5$@~C#I@C~OcJpS5Uk9_Ezhp1~#bu9>BYjwv6F}iWNosX?ouawhdTy5tX`EkEYTuP6tJYw( +Z%3@J(xE-wdalcHkIBu$jr^)#HY4ZDR*=vF#K+gzrmR*0ohag;>o!@_rFdS1}&lBVfy#D4cK^D+Uf^b +aPy_X`y!(2xEVe%mTT3#1kh3>(NPCeIQwnW~K +?k*w5VPLpaxtPSLuA6YXgB2|;ke(q{dUBY2>G)E&3QF$~+bc3usI! +ntVbmh^dIf7u6b7U_l%cD!=Mv#_A=gC(fEsxGW>O*aA)Y$aXbaB!l4=XkY!^f?%*k@(0`o +9bG2~8Lu|4ULX&{wb0G07jF^@;QQFvXv!*p!!@SQdvH0ZI!{dZqrP +I2*~L68-lR6xVp@L27}zA4Fv9sj_z@fV32z>4!AKox<~GxdG@$XzlcktqkFX6Aj{S0KG8`CJX>Wj#C; ++Q?v1Wpp<@Crj*cGCQ2;rvMi0nFxIj8u-Axee@sPY5S4cOnJ|&OCCDPGjvIjC=Y!fn#gV{RjC^_ +Zq=+$tSCenk*wyQfzPf~lU;0OMlm+Wb9&;5tuftAVSfqi5v8xLZ2n;~*}Vj-Ia&1gZ2Yw-B@4wJ924W +W-v#%EN)#?gedYaM5)1f(VbBrlS|Mj^nE7=p}82aMyJ6=J8W~3{l9@OY(ADH{HB;)J^}rE$$9~-(~Be +h$&5zN8!Ti=oJ|O_fppuXqCmq)Xjy%w9mrT)Xk-Xw0huj>gY8;4W9U#901o-*A{4Bgj8CiH~cJ^^&4_ ++B-0vwLmLug(;9t4r&^@b8tpPVCwuouF|kcD$F4>qx1!dF>)&h#l=CyWke<_y8>-xW+ +m@KxbjxV;vu$jS()g%D*ZBai0;Jo#G!H0;0VNuC$K%Adfq(<0+c4aH(~CkPZX5)jB>%&%(9V@j>!=+- +n_A)7~8yTgTJ1=fKU@@uABE!Cr@H!-u=A<0E8cTy7m7<7U9auH7c9;C}1)C{4w<;5t4+6DMxCj*rpYj +?cG@kJC(yG+g5oWH996+Prp;I}MASq)7m&xW*?A5Cn@Ir-cMLv(|3VvWlcx;~D-dSZszSX=KeBpCV%- +ZPs{(Hq^+QwYEZ=RV2|!8Mv9AqrWz#+PUthdf;43pB|h6W3(#9fF*})=yBEk&SE2M^@ +zH8egJG02#T)muNeNoLu9}G)*BZ*Z49i0?5m?xp0EK52?A1$A$`~QHZcbgw9SQUbc{m~ZG4A@3SqRh2Q>Bwq>b;;x`oyl|aX-KYF=jXoENCam)X3mL*qwp2m%=%KP3qM`*;sQAj9Jofx4O*Z5$xRdD(>)4=oVpY_>6Vi +6DMCsw+dxZDaZdLAcI2{g@zJ4?J{|AS{oI=cWmRtq$)d2(~(Wh9LOY;w5efX4}R2(}clV$6gQwYaJ(7 +@!s!vahsqDe?`VZbZqSf%^V1UZOoAGAq2KDL$*Q)Y-8pDL9ojyB8GQubC$S^YnyAY$Qckg+c>>Q5b|^ +_-hV=v#h=m4oOot=c#1HX<;;D8d=>0#!r(>ch;oRWZ7#mKO4!iD$TEnXZC>BApD=7)zIjEEv)cM@A~= +F)8y9K1NAPU(`aYVu5k2d$hlIhOuJ1ojSn6T?n{cR0G%w=P=f))(WdzVRE)#(eKwIZI7y+~miVGD8ps +nwrNgV;S^}RF)r=Dd_UM39wbd^>RM9?;_^<{zr5wwj3hH!yrA5EslGt9Xq!muV?r{){aE*CBk29LUak +=z$Sw2h?`1YuQLzC{q;G}uoY2?WtLR%pUS3~ghDER7i2#tJtB?sWY+`GxU}cGGR}dOP18{a~sddE(p(UJSV3>cy9eD&8djaZ7%Wd1>w2Pr9;#ZBzI +XqMpG)nbel^@7=z7T(}n_Zy3M7dv=|~#xABIyHVD*he8a!!j5gWLBLbr>&C>LOK;7ojX|ft3b(1|rEC +lK{m*#jRTl^U<*txgWKSoOlLUrpWsM`qDP4?1qhfv*Q|2~3XwUe~UAXGQmPowXJ>Tc5JG53sig?u;nf +;w0D@4OTB@maz=3G+DZ=@6~ss8oSy-DH|}B8b*a-q1phXx;h@O=gJJO%Btk4#B#~VH!sS>n4Y3*+p`g +(P7$Zc+ob}`wK+dCgQJPv%_?lLLhE(gjQWI5Vv%j79a%TCP!$0jyT-pD0d8wc8nYbak$BGI=LYZH#y3 +G1%n;ujyZ!(P7vV`hnvjw1=s>{xXCf18{%*iy1Z5(4mUYLJ08U0CMSraUL0LKp<{&X_e +d^k+}8K{AV!PEKvuMxXCP02a&kRY1(=r61TZ5Mg%rHL+2cX;x?CF(XkJ)xb-u{9mL|+&(OgGvAE5pH` +Fx*<2IM~(dv(A-1-?BEJWib=jjN9Xx!vHSrpN@$$8=&qH&Y+B!wXwH@UzNY<7XpKM2N6F45i`!MMrAY +Xrf~F4M^Z!MMpKT9y!un_T9Bf}35TO-&WpFCqvx`I@YVAlzi0rfdY^*3Y_D`@7wIhd-mU^-M6}Dy`s% +?oF=JgoNnc<}y?V&5AnUt<%dLJ1o$QoiNXl*O;(9`UV!frDLDx6O;` +~}fNyj86&({1;oF>_r|kzqe3PfNTR@0!@`RRRg!m>;Y0v0|_~w~c2=Pr`lA4DQ-{ckPI0*4=-Z)FsDP +nvbMg~QY?-N}|DG=oQw2vll#P~k#r=1mIe495e5sMMz`?Q~|h9KXkY3`b{+NUGro(S@NI&zL6XR}X-$ +S?@`rF^du8TVJNB071S_7wP1HAm8W- +oi`BV`*ew>O$7NiS6G4fqI@gUbOb{%ZheJFfLPr63T>_siu?36%}HJ;ZsjD+JP5_D-{h{rXe*~^n}k^ +0r}@6oN(9_K&94vy%dE^jAq>v6aE%~mnf2SN1i_gW`C+ik(lSBtrRBW@!Izfb5Cps2J5CTLz?Iwg34> +v7pCSm(^k6qZaHiGQ1Yylu<#u4rTD?P%^QBLZX*j%q+s%FSiwL-_uRbFP>dDRh2MEKeb#t135=Vrabh +a!Ja{Kh+B|&&U@$no%Fxt!K1YrWCo24Z}Zl7Lp^I@}BCkTSgUU4&Evsc`B_|naDWNPvLX%cwvHHngx- +xh8L+aGQE>wa0=dq1|@QU30$-=_9wKl$n>U;OVczS`O_?)r>;-eh)r%+LS$pWFY8`u~jk|4jP-O#A;d +{eRm2KePTn^Zq{zY6drp+7(g5B5GMgO^c{)5j8HN)ZAvwJ)aj#nir-+80y +%5^7&U?Mv9O)V_q;mr(l>YF|R_OQ?MbwJ)XirPRKZ+Lto(sC_B5FQxXS)V`G3ms0x-wa-xd47JZt`wY +7Vwa-xd47JZt`wX?uQu{2m&rU>%aKRFTVI6Uwrk4U;X@leSeJp|2bp-)fYed(U1PmU;H;vO9KQH0000807gYaRE;NBSl|Hw0A2(D0 +3QGV0B~t=FJE?LZe(wAFKu&YaA9L>FJE72ZfSI1UoLQYos&^-(=ZUn-~B00*-KId5AlR5^#MTz2m#gB +JxmBSPIBqII(Fo9*Y(@u*iI=!f5-<>ZP(3n>0?Hu;5d-0le*7U$P4`@jm4YD7Mb&%W?#m5E +*=Y5*uvs1)POUp;MJ`PyITJ}gz^aEolWN5PJNX##Heu<-gkk)9vMVDuvuivlUy#2IU-CQkKx9bmIzhn +g%J8s|!W+QcHzPDxz?fW#K!@fT{1XaZs5Ggl^$rr9+SooPjFtuUN>wM +ud5z1kt>T02Oq;u_j(9|3y0Dz#^gMCxQ@-x;&hf$5bAfi{h+=daU6e*e$xf)$!~W>Z3#Y5A>w+6np|q +e6jWUUpgG`#luag;XbFn@@6aWAK2mnS!LsSNmZN?S=000yK0018V003}la4%nWWo~3|axZOjXK-O-YcF4RWp +ZFJ*XRWpH$9Z*FrgaCwbW%TB{E5WMFrR^^gPr5}LA1relPC=!KhW#TolaO}#D +mi|3!I}cMpA_vFu%+8K?H?3mM!HYhy_M`c1@!+M=^|V{wR6x&SvAAOnp-pUIEI896;7D^|nRLkE)JcU +9lAP4<>nepmZgAJcT9r|Z#jz*DfYtJ8ek*fYyzB^_TUY)%(opdr2wrpc9joO>=X +r3JCBU7$JTAa7YdXiZtfjntNv*U)Nfc;)->G%8Ep%SZshkQlZ$jIP3 +J`rD!Fx`LLekY_TLesmFK`+ap?`%xQ$beOF&lO9KQH0000807gYaREhtqJOBp(0LT{r02%-Q0B~t=FJE?LZe(wAFKu&YaA9 +L>FJ*XiE^v9JSbJ~VHW2^cpW^0XgOoa&>;!3T#Knd_h7MbhV#(H_C=}YJZEdpTic}h>>puJLNQojX*> +O7|51YF8{qBzBBba8hI9-gOkn`iGoq3+Ea4AXnRK{54j7cuzmH93bv1iRXYMqYmH`r!tb8H5bU?;g=pHS-SAmyQq*;T)xOs-r=)J!fUc6Un^L_tD{L!i0dAck&AD^6H> +@-EytlgDys#lTg<6eXXq9t=>b<*EttFl>)7kK>nd~uo8LRSj4H2ES+*slVP|lDtdAj3l3z03WBGtToppXge;IP;lIdX$;`Pd@)Sg|=DAmf8N-zbKiCyOlgTU0FS@u|d)eeKEQvZ_=8c^(x#Tqq<&UR?` +bHLY3jbL06edNSNcb4bB|P8AWtR3TDkua(`#G#QF3(VS25On5GbmE^@x~~-3ADHZbFzSSk@MqAB~EE7 +CH7!6FVgAgMrM(U{EZS;E>h{6<(!lH*+WXTBUj5eGKbN#A+!Oft}Djy~*Ig%!`LwRHd%!D3~wg<@ti= +d%K_&<1f%=XJ$)dt3pq8N1N*$`XL-0!LU`8)hL~}DsrvLQB8Vmf?pbfAQjZ%(6nLo1YJjBZ7Nk_P{|! +v`Ey^}svUpq$|gjVmF-sWZ#c5C(;37tLM;K^RC8d%q8tKs+pb_S{uF+8Tg9jTXTKXDMpsO_5wpGOHJm +V{zU=`2U>Z|~kk4H&o-a9eRMZ9hLxKHBZuBTXsYKjpO@vM(&?{jmy&D5oDFEw2Vu8C3tqZ^3RY|R&Wc&`oyHGzTugYhSStZxAXK-@5%fkL(v`a#7PgGuiP!? +NKtD{r(955m3j4N#2wN=)DN|;q(DB$JWtJb;#PddT#8?~V8%yPo61E&pXfG9MCBY;OH?dY#FuBl_sV +@Vwb82}R@cEEePt)HJ0!#~bMa9GhM3*!~GORR_5v<844Ie15F?|Gh;bEVq8433TnJ|crUU?+oyD0Or+ +FtmOMObguEeD73X#idQR{gWkP};oIOPv-+A;WLNQz04OOttkw?` +o?W*rA`w=?kXtq6El;k;LUt$sL;WKQiZP;9NV!^6W-`Y3vbxT89;|qNMJ@o6CxNVdOYsznt5RS~Y`2V +yU70zb2`3Vn8bcCs$#{&z~PGRFXUT5UyEp^tGCNkO%d80EZL9M~5?lbJ>@VHsc7%M(J2rLn?>DZ;>s{ +!Mj=i3gcrGi$}G%f?|Q0(6@G*Wsri*Hxita7MlP|(b)_Wa=F5(_Quad%gKw^$lJR`-{OB-`M+CGC!j) +ivee9@6!Mx!kPXDu?4h4;x8$X>`%cXO8RIlbU^xKZeMBAXph=ys)P(Uw!nj<*v1D|20;TsOq(@_=orE +CQ37T82Bp&J?rH?-D!Viu)Yl1LEYbHGN_}4$o>ydO9KQH0000807gYaRBcnb-Qyep0IP-o03QGV0B~t +=FJE?LZe(wAFKu&YaA9L>FJ@tEY+_+!Yc6nk?LBLA8^@8~`76e7`3%q?43M%!u?$`DX|qB}3?JvXbiU +;RSdbe6yU6ZBB$LX2zwVy*WAPBB#FYe960tiyJ>5M$J>4@sgGQrq5>F*1$J +s(F#IQAZa;#f@ZACO&fbPVeSfI?P82(pMGq=CO#gTYN!(*KS#~3QV~SvmaS=r_Fv46~AWJx05G!2cqt +DI`rxy8O{m*xG3@hNVu41C~11sltgJ66%sVTvS#8_(^N0;GfA>$(us@PvV~IbS%q;nVriLXWff<`M8H +A+v{5K64^)+Rph8iV4{3GRY)s?FbUL3hMH$dKtL|9xI82gJGHPf8h9~T)1~}8CO-&1R=LsWA +-$AicDEIl#nm0BF%13-vfiJoa7G-2s?i|e`;GL%Cj=7YT51s(KYz~H+)jr`s$<8WvO7Ns3tK#-?U0L8D=S&=7=SVZXr-!b=*VRg1b +NYHrzTEv(duXR{<50h|Sq%ZrV?HQwq=S(aMpUA#Brd3Q1(QOX; +WP#vFr7ie$A5}0|8RN^M0N4|;rn;M?e*amL(>T_E{^w)qWz1D{a>S>;VbdKtqR`mpX=8<8yi=@o*zf2 +Z{Hpto$g;96Hx;|d=s6Ppc*T+EwoahlnWs)|0!RJ~~74{Vf&}cPI%Y^+8syOv{voVabEU#duN3VwK=5#)((k +&cAj9W4>ISG;xzaW&?8Z`0$WYlJxoA(bii}DuHNum+Kk;j?9$D6s~wQf3G-7k=|lHJ@WJ-xYM4|hq%H +aXxX8|L7MfgJ$b4j_D#ckIfVHLo@ZIL(GRdURFdR5J!ds2)lP>_R${?w?a#521RRt2~Dx4U^)CSAJjJ +frT|jFZ2W(B)p48Y&1t(AS4Xmgp@9mgzeFEvvcbi1#(zv#%}W}A`QeL+HAS3DE)1MMA~M(#HwcvD)>|H7jL)Ot2TStGCe|$mJCD_rr$xE<^8Tf3u +wUc<7|=+(~67?s8?B$qD+$8c=#j&kdA>zDvdeWc|g<{O|Jt`l-!>BOsaU$;MCsOh~B-APTpU<-M@;iF +OQD^3R;ccUjB5xfA|M6FI>XgzY)Uj7-U$NA89uA%VW))et9C%|53j@>T>jrf$^> +6CtLZa-IA>NN<#|*Z^<+5i6FT&-oM5BY|p@MM;D)X^?C8%VI1-(MA>;O3W2c=-enR`^`rtOiQAL?;&zT}9Hp=?d$ +YKRr)&)7H=3mPhCMxjS6lc>PULs-M?`qj0o0>r*17?wq`J$+6o;QvFln=7n2u9)5Y&8x@DOq)MGDjEU +va(znT3STp2|U2mq3UT!@-9s>G3X4?Qp69 +-$p9b&wc$Q3qXG;$fWyQy%tzSYxTe9buTHjhS(1r&lEjwZIhBkZG>M1c78OAEUH+hp`9uXhE!1SRr=v +5{f3{`BA!bPrO2(5st{7`x0+ksk7bz1k#g5P4AO38|g4+O(l(FW!ILpfwYV1G_xwh9)i+rqkeRbICFe +#{Qsi)<9hVc_RdtP7hSR5uhCte-|Gf{K~L2foiOssyL>(wp&u%%Y7LQ=g^EgqCOwF0@ec^&R)odl3SgAusN=*z%7dZ8MXGgSiueyOQ{jLpvEfC6{s7%16!JnCeR#qsv2pcnrQ* +P<@)n&%fJCz$NhhU|2f(}QXq;*p7J@G>qId@7Wd&U9o{KKDp*M~9`5ilUedaRKdv1kshK)Ur)gEvS_O +)gw-l$9G5L%-IG(3T46SW%ZtiSv^*WYN1iy^;2Qb*{cF8!?e=wbQyKmEjmaZhDF}?h8qr)pM1L$#z0! +sh^<2-SN|2{BZOB%BvYYGiPZ#kfU0Xn(6iMX?ARQmI#%ZMVi=g3P)Z=d2qG*kp`&C5Q3;q4oD?Bw* +mPvMiBwiFQ*~US0wAte--6@*UOiQWJM1buAoahkQt%F=J_yla=@C`pU$!KhD+w(bu+Bi=GtiOaj021%5xAqbURI-sR5l2WQpJ% +yCt*89Ut#)B0T#(Q!9&-OgiIz4Vv`R`X?b8C6v63O&{eD-!l&*Upwa0*sANsUVuU{$W)U0lMa1Ii~)p +AJjJQ=5)FZcWJZQsEubQkhqUSyk$=1BfWgQ9^V^m0|-LL%m<{#MUH&Zi6Sy|Ub1iLkcbdto5e`Y$zq#)gSWsX`bD?chW>l2PZxKAw`1w<{(rg>)yIb~qW>f#S=6C}6Rm=|rFqB!kCb +x~Pr7PL*b&uNhj%2j5~+AYbo^xD#h)iXFy@G1KtcTyw;h8G#!H7BKvR{vn&?Wy-xMpm|;t;5dO>Nilo +?UzE}&jz+`%bme_xfG1+}7=5y&KpC__Ak{+xfEa;s54}Po@>n%nZ37t=3$lf=YJk}(A@~?In6!A4r#4 +yTL^yi5;2GZ=vB1~tl+V3w;T4WRPjC->HcKZ@FxOt?ptB(T64OB*grzd})>vFQL=AJ03`9cHoK{oXSc +^PvVBzKp`)adnEQmL&yBMk8qirUVTbUTB6x|?bHCMFob +p~pKgh3F_(_V}=;I+Yzfes8|MKqyOU|;hsv{}xVV4%XN3}~1MWod>OTD5Tmew;$w17w?La0#nghe;KC68rvpw(TMlrnnB7D)xwSde`rr1zf19n7s* +C5ADmCJ3|_Qw4mh_3FRxh7FHtW3<)2N3m#ywbE&}qU~x779!B%uA)t>a +B@_6rwUxG)GOzPjV8*=0ZWjpa3X*a_}^nKIVkQpVj*XUCJJ1~Xc4V3a?D=?n6^17mng0A)Od;k56hq4 +hhbj`Vi`RDKPpuWb~>Q%KG2LC>E8aPE*+&jDC_(2A!3oIM`Jldp0RSw;DHTqeGq)qNo*P4tUsq1|$B6 +j)GCOrJ(Us|!l^R`I%`ZM((H4 +%7Pu6a8~YuBP|n&qQ03C3NS}E2Wx~Y)OvPb!1Ujv2gGGrcsg8B$6xnIJGe;miTsXn~#SmpI7-98|RBFt}7wCtK||!Nim8I!YP{d +G1I>2o}qu3AP)ojjgD+RZxGDM$0S6i^K2Lmx6?w*3n_x=7@Cmmw}A3ej4TZdR9?zEr*&2Ki)0#ugTll +9{&GXN#WHj3p5QQ?#ns)Ov{!c!tY>lya)Mp)WEv-{y*GW=Dsi4Rd~+tOcxZh_NolDy;zn16xBtdA_W~ +HvYy5TEuw_0gAikPzccjZ{l}FkHaA&mXgjQ_}MaxkG0HUq4zO%-~Gczpo!R2~|VUm2JYpJJD^(|aT +Y7W@{vF_u^NoxgU-4HSq6^DkR9)9eRqs4r&|BI*EmUroG7TXQv_TF3q;UeBm&BLTP%dYzHqG=JP7=_vQY@b(ox0!S(?=ZvP>ry3gqqn`C@T+8`!nNaQP +NB!(5BPmd7G;^>`Q@FqQ$Zz_&x-`rwNPzY~IYc4Gh>lYnvUYJmSyBCl;9Y1SD}`LPX*0iA5(4};Lut6 +VDDK6iwV0t1XKe+tA8_N$$Mjg6b;u5DSi)`zZ5LHOuZwwle7|L@DE#FG+cmmYoLE`4^7tuOH3um6gNOibaQ{Obw-ALuQ+Bbm2gWZ2<(#``RP$QTd6_dw>~JR< +Uex9A4~Zwtff9rY7yf5~GqoL5QTJa=t}^KEUKjkOsO{o4x^0vWpFp<~-#9uz9XS7r>iiiD3JXUPx~q) +A1cR42iBwuCBuW_%${0JauI(4oud`I=q5KYA}S!yghHL(?>ifj-Zv5@P$0!=e7D`+}4XcayHi@KA+p+u{> +H&4512DQ7Tnoy^Tz4mTM6OZHH;fZ5RPa9J5o6Ju$x4v=p?ndTc+_3!qzeDPTO)GL$;szQIe!$D7!cib +kss9=3gWQ(SP@L5v11hFOx5oasK&5)zs~Vnl7ieGGW1vnm%^rxX9$4achaE%C#^3%P?BQsI9_ATH_0$ +I|DWN;5OsMg6YXxR7k??_lrbtzi>*`@Th?$j~ANj%QS#&XIVg6v8d4uM05(Vm-ikvVf_^IU)QR5X{Hd +}ZdQWePJcO?2$cE~_vO)H(t;y0;2K;dueb%3k!%XM9}f4}PeOk`Bzm!xX!g3lTW08(cHZeyJaOw+IPJm&rbHzV*t%v#)Lz}5)FoLMWSEAa{-&0t$izJ=`Ro +*(CiIzHtoCg!ORiy|Qj`crk3uwBSmk{>a|N~7!*FR=sEh#Xvq=3@m|Z5|P+ABDc0BM8Z|;UE_Ts!xOU +R+t(JNTHZ5_>hTFX^3nJmm>vU0W5%^2t5dok$m+oUYx+XO)b9B=L#-gwP0;mt$cvFWZ|~gNp^nYVqoS(i!#w+lMhxPQg5R_N&OKgWSEZSF +#=|7Mb$Nk-ahxM?%>7$DHZvqL0{0wXpi`#V?IellZU*aW4#rCuo{&xHLQH;t0}+Bg9zB}JiAC<1*GxP +I`6STM8vg}8%CsMTh(C$(9238WY$UY>kJ{pqMY^`2WH)5`Z@lX^?AuJ_;c$@Nn9d5)+1?v*b>R)ZzXc +eD7bCgqJiljWi^F5?CAzCPg-o(TUxJ8 +P~?3bVWOc;ZEX;pD&wd>LL!#Ey4rG4{LPXEANE(&*^;p{O5H3zvJnAF}B=;?T&}w9==yoyK +}_eoFbhfbAocwNmJy$uRUMyg%&1ue!-!7bc2vm@FdRXnQS_sic0`h-vj6*#{#2#bRgAvfg2YdgEvVKV*db*2<`@r|9u>GeRL!;e$_ +M%j(}3~HW#jO)wQ?N@E6RMRM}ogqWWEkFr9S77zG4Uf7}fSelY>!idY&ije`blT!)uDx4MtpW@FE4X| +Sjzr5(njz?d(O9(%-_%m81_s +Y8Vs_;)2-w^EOnbip-iikhaQu-03z8p`qvLSQIy5gB#QjjxQr=v3_V`4*c{kOuU8R|3tJ+>=M0EJ?>N +$O0pD@lT5ZSiONo)Y^|mM%O09?=zJ$~k{+^4;INKx%%3q}TTyl78oDyGI7GFq%D5?wlM@}^OOzSr0c6 +Ptcx~+_8#1S2Y5IOe3{|T6o#jq=B&@jW|SH-q^VSCAsh@#e1c@+9hApF#C0}Jd}AHObZ!#m=MAOG+u& +u_s~d@zlO**U`ZZqs=tV&DX#@Uj!B&19vL6;Ad$As}mkW{Yu7~W^LS(&{>tWli +$F|V(Up~Nu&;P2;&I04qZsXHi5gzw$T`P4XWM#khbr|z1@fFRfD^(4TgK#3CVPy1z!MYxdF(X*p=Yct +4)htSl5}W*x{?;~^B(~hsGb=Gjx4JJ`aUdpe7oIX3!`XCF4sG{m8u?3`P7i~TGA>AT*7(qUHmFv=dfA +c}4t4YfQoUC#PJi0TP$~;3*o}@~?USw?>d@lgb3%ZX-TzM~aaAF&veb3Rf8c?e6NPC+NGbH!BhtO(mia2Uxq2G!1vzvt7W@i3S9rJMt2M9`Pgf +G|0Nty6r!o;m&#zHMg!q!L7X?QTgUWSxsnkwbwb0zrw+1Jc5vjFSzOJyElKT|t~6_qgu1S}ufD<5eS +F=;TiIHz0N%hrT5t2?=&-#2^)t}(cveY*19SrK!@ynJqYzL0mnq>zultdLKZ3Hb?8foFf~x?Sl=&>NDau3KBU8)v8KF8gL=!&SU`35UDYwpkyv>!bbIg0 +hB&xDbM(6HH&v^rD=X;!VyvHnS?K10i#dD%-PG2L*jplZy3<$|4|iu?1?0bAkS*AFux0Uy168c9y;!I +7*4@VbVckAlchC6c`dxXDX0=_Z?`5^`yuA>)?sQNwp2)O#k)K{-7Blxd#gBaleg(KDVo*)L$aglb~g^Ko~LDd310;o)Vwe?9Im1yy85Yo2m@2L=aiiM1JhzE&Hkbw5aCga%oVv_+Oxm5{Qk-~m +1}@K0V(696MZ$5XO-iu$HB)dIPKs(hjE2q~NB9-|UF>*=xgXZIIFmZ(S> +h^u*=mE}m?SZwjm^G|-hhHhgEmN_>k!^C5B9z+&%~WO6@D(|Fb<+j3S>!FL9$sFH<4Z&3vj2EkPRH!w +JpbOk!t9N;_hp$*wD%O1;px?{)4WGxc!Jc4cm4Z*nhiVPk7yXK8L{FJE7 +2ZfSI1UoLQYO^?fJ#4rp+_x=hovuPoOGW#z2m_=deCPO!+7&lQGgB=A~F68g)IuDOG;vUIYx<|MUHb8 +G3LaJRf4xDXq4A?;&J7kanL6Cg_>a%#7Oq*mLu`&D78!W_WpfIlnjOb> +Wy96UpM8E?}G}SRtO1Ur!7z`N^RmbSTEUP%G6ld8oBE-xNh_uzn&IxKof`!chidt*ceHG|g;(1}O-Av +MO>-TtJB48=eagEAFNr*%tA;@6aWAK2mnS!LsT0oI%9|q007`D001KZ003}la4%nWWo~3|axZXUV{2h&X>MmPUu|J-d2DHJb$Bj +tdF@*JbKAxd{+)lt6`rJE3PGe^wl#55S&?i_Wy!Vdv>8={IRZ!WD!hV+B_`wlz2Dv)9tYC0+~&t}5}5 +$@_V)Jq?SeANv!Y^Q7RMs2WR{jAsc+5eG_0~LZf|7mw?Z`E%BrZts=ZpZBzL?>Wx6Ow^CC-FwaRh9%( +JsgkNqUW%427hD0r0>9=qU)h~C$EEIf9ZlOR0yn7T0~$enHdptGIwj$mxEEnv@mVauo|Rc5 +SjbCJdic)n1Xx7^CrD%pf{I0}lqWLealB%)6|}@7;zAtz(rJx!+kg#D6N<9*+54p|S(btU&+}Lcx?tx +rt?xZ{x0K4BeYx_t^n1cbm(r-RBc}+&({g_XgK{lji!L&kh2$(}5v5C6eIi<=LB~tG_9MPfsW6Gk6~SeDZEz +5lr?s6P%u39=#73ij{pst>zVnB(#lBF7E0a;KT33QvN20=XkuftPo`#V>1=f*VxKqzVF|FlUd(Md6RE^L0+~lTES&024UcDc2=8vArStlk@0$RGislbPJI!mlo2F+Awx)PM0I{Rb2>h9zKQrxFZ +A7^6WhZ7SAtu+>A>tnd-;H5nwGLCvfA&BcqW28X5Bd0`}9YPY8>b>k}A@npiK~Wk~Sgyhl~1A6eXqX& +C*(=S;=SeF@zxd3br|qtYCZE(dpzLEb-j={`AdbTm>0bRnt$#0KcNsu(sP^xDoJH#)^wmGMqiOP1 +v#bpe3=4m5hqDQ3=?5w@{2Q@0tUvNv$&`UIxnxtCW8QUMFYXU*5gq_iFeGu4eiz^HfK3DM|5mO)HdGv +GzCoNGPI&;qnjk{8j|JkEfxflPpfQ#KO{1BaD}I$%ra&K%E1)P|3Ny90n)R=~%hA7x?bLjXU_l5M$^K +s$Tei*3#!@9vJDNAuCT3WpX{B*+y#DgbL61{pP+a%2jl7b^c?*R5L5GrebBw&^ebcH{ac?b*wlO3<14;{@t$C|Fcy=&!*8jT)dYI4aZplB200EX +G*0i*iI@VT_ksey7jo6o1EhXUR+^hD=K|bYlQ-96#u=gbv^tD +8zcJF*r6N9rkTf}k}GJ)dE!X-}^=$vI$vV{LTE0`(S=&J=w1=3fQvD-AeL!XWOMo9}ct-uKFeMe56s% +igq{;OpiDQePYj8w>CSyq(ycpNvYN*{dCQUlB0d2CT5`E}bYt-3sZ|L-{D{L=713WE_JLa +_;_wunj|lS0SzX>@p1nn8As8Sk-C*vE(^Q5`?XDc$ZLHMN-Xpc(DQ-RkqX!L@i+-sekuJ0etp-@ap{R +<#F)l?Bep>p&HicmJNTXW$TTLeE1WGXAx^R=E*GLhY*iys~Hx&I+wHKpY^faZq8#0lrqL4G1ix)1bx{ +QXEI^~umZRz4h+{#=lD7()wpBob2D~$TgU{brO8t)5=5FF!DPla25ebf(%-D~4S(Na_N4cO^2M*UgkC +wD!8CLD3f!!Mo3W7KW$FKPe(tlg>d&xA42Oxy=&`&N@yc+6!@-oZBD)n3sleIGQdv_?fv^e8wph_lbq +W7OD3G;KCesLo7`$c$S<=+hW)PNSQH^e4P+S)wNlbcOC!q_2N3mSHY``4}tO@6ppL2%L`y29n(++GpZ&{Fh@t|jz4|sbd#TfQC@tR +eY+G6CyHvwLF#U|1wix(Jl27Bo8B+;SXQo$!;TbZ5E%@1RDpI@R}Cg>aoWZ)n5CjI8GFMyl#u)*m$4c +-x}bt{p#fBpIre>jm_CP)&Ya`n&{5v`#mGV3i)TQ~Ul%&Y^({`8ub2_Art2&COg%WU2Rr>^8izJJ93# +41x<95|A&OMxJes|hEQ%EvzxZ%|K1TXXBSPRR{iz3rQNqy;ED%q8g(T^qTu_&ta!R$p0$A+PA{}&E5C +kFOJBk&B%D+p|azl6m*Dea4I3|Mc_^K%rC=9x!$n+LzBFfa&T~^#u7MRP0nm*T+;igBuDmJpZXz()Yr ++1}q6Xj;rKLkr^6cUwgjG!uGCQv`3!mI=l>}MB&{~eTeR%3iMFvd1th!aY5rQdYwmQlWfw +QMduuCyQbJQeZ?10BRD-=9h(E>yeNfD>JIIq&eMCZK_Iz3(OY6*pU2l)L%K#{fx{GHA?|ZVhC$||>_w +VZAOrw0pOtAHC@C>M*Qitsx{IwXor*Q7ZWXkfAdT=UT# +9HLkwbyfv@mVuXD))(r?-;4$bfDep3QT`N4=)B?N_!Tu`}7)nN0Wm>C_qf>`FjC%dOr0XU}ZlK+`=W# +DwH=3&;KO?f0r%_~Cl8_59{9HB9QQpx=?(16%W0p!bdwCV_sM;(r&+cOs%B|N1r|Io +ZMsNb?d~}?54OmvL-tMSuy6X}cox;WI;~_P{-I^*o{fiTXlv@>|Gsy_!Q8}O6j`0Sj*`O}kG;Wd5)8N +D$bW5L<@<3_2O)=f;oxG%KOBho2|I|Xja$%rHC7==Khpw?c0;LY=64zsV@hUNjn +zm1{*Hb7Zs!)Yv&uSj~v>~>0s_ru1YONGeKHx$h!1CqNV%3W&HUm5=zNZ09F$+%8~yCb?ykA0C;qzMj +=)Qw+TG=NWm`6e&vq^((j8}G-5A#2~<$H9XFuh_IpoqnZ0;GSc7Gb;?3?6now%ZBj&k?JyuVN;cj38qttDC;x+VgXNDC@ab0y +xc9#axVI)?-`1m1aDMXY==hi5&C$g#=Vuom{)umI;g-KQF@_XB*>UgMOQN +Q+i6fdwYI*gTs;qO$D=3VBD}WzroR!V(-%lZmjZ#ha%CaDfBb^@U$2secbzqN*2lHMvHU88G`f^LAhjiDgnJHu5Q{n^dq; +k20D`XkF!XWm@huOKDnQO};e~)e~E%Z$=E+T}sxntwCrbjBC~X6B9MsN$3}A#cH4cs-KObNj-3!f=2w +VwVSUWZZQB2jWv3msa~ycF|0crdtdjs-wYQS+xiMPN3QJ}y@g(X7vmm%$?r*So2Qj$+ehXg$j!FK^nE ++OVzc&GLu$I+64P%a?4|lGMMjxhB6rNIyk#}*jlZ3P=%;F1_P^gM(BnKo7Hc0W} +Cp`gM>;yQ|SQA@1O9WG8i#eYbvz%dy)SC8V>urE2T)4`1QY-O +00;m^MMG4bbTJw*2LJ#X5dZ)q0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{FJEnSb8KvBZgqGraCx0qTXWk +s7Jk>SILkaN*~oD0*iNch?d*2ytTo#v&c?GZvWA98P{Nu7SpZC=X7b;A4giXzFKuTz_J{;?Qf=URZ@0AqX( +pvq_aX-DdXi)vg;|XTls#n!TA6x~{?V{TbN8HxhNpj +g6CL4z|r45)lw=u1;*HFHUWIJu&q`>S?1ZqNQShGILBcp<7H;#uY&f +HB_paDzAgm%6cbw4y5|r=_`X)ctzn8drpwvc3jQ(&OL33a(e3U{ffh!|4B!PU)MsAG +94d|pHU(8%GM_!mHJI=a4$;-sB1)!kk`U8R_p*UPVhSUu5waD}wo(b7ej({X=tfR>0U~u+eOK!WleDN +cV7hEHuR=iB;B52gtU(wNY@RwR^Btm5