Вы находитесь на странице: 1из 364

##################>### #############4###k

##########m
##########V
##W
##X
##Y
##Z
##[
##\
##]
##^
##_
##`
##a
##b
##c
##d
##e
##f
##g
##h
##i
##j
##p
##q
##r
##s
##t
##u
##v
##########
##8###9###:###;###<##################i###j###k###l###m###n#########W###

#q`
########################bjbjqPqP##################
##z###:###:##-
######&#################################################################
######
##
######
######n#######n#######n######################B######B######B##8###B#####E##l
################RJ#####N##"###N######N######2O######
##r#####$#####################################################
h###g###########################n#############################O## ##
################################
######
######N##############2O###########>######>######>########+##
##R
##N##:###n#######2O####################>#######################################
###################################>######>#####n#####L###"###n###########
##########################################################2O######FJ##
###,~#########B######=#######B##N###########f##L#####0############:#####
#####[1##
################################################################################
#####################n##############"#########>########################
#########################################################################
###############U>##j########################################################
#####################################################D###B############
###############B###########################
######
######
######
######
######
############
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
#################################################################################
#INSTITUTO POLITCNICO NACIONAL#Escuela Superior de Ingeniera Mecnica y
Elctrica.#EL MICROCONTROLADOR PIC16F84 Y SU APLICACION EN LAS COMUNICACIONESTESIS
PARA OBTENER EL GRADO DEINGENIERO EN COMUNICACIONES Y ELECTRONICAP R E S E N T A N
ALVARADO CORONA RAFAELBOLAOS RODRGUEZ BEATRIZ ANGELICAURZUA OSORIO DAGOBERTO
DIRECTOR DE TESISDR. PRIMITIVO REYES LOPEZMxico, DF.
Mayo del 2004
INSTITUTO POLITCNICO NACIONALESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA
UNIDAD PROFESIONAL ADOLFO LPEZ MATEOSREPORTE TCNICOQUE PARA OBTENER EL TITULO
DEPOR LA OPCIN DE TITULACINDEBERA(N) DESARROLLAR#INGENIERO EN COMUNICACIONES Y
ELECTRONICASEMINARIO DE TITULACINC. ALVARADO CORONA RAFAELC. BOLAOS RODRGUEZ
BEATRIZ ANGELICAC. URZUA OSORIO DAGOBERTO##EL MICROCONTROLADOR PIC16F84 Y SU
APLICACION EN LAS COMUNICACIONESOBJETIVO: Mostrar el marco terico sobre el
amplio campo de aplicacin de este microcontrolador y destacar sus posibilidades de
uso en las Comunicaciones. INTRODUCCIN JUSTIFICACIN
CONCEPTOS BASICOS Y FUNDAMENTOS GENERALESLOS MICROCONTROLADORES Y EL PIC 16F84.
PROGRAMADORESDESARROLLO DE CIRCUITOS REFERENCIAS BIBLIOGRAFICAS
INTRODUCCIN AL MICROCONTROLADORQu es un microcontrolador?Un microcontrolador es
un dispositivo electrnico capaz de llevar a cabo procesos lgicos. Estos procesos
o acciones son programados en lenguaje ensamblador por el usuario, y son
introducidos en este a travs de un programador. A lo largo de esta tesis veremos
todos los reglas y trucos de este lenguaje complicado por su sencillez.Un poco de
historiaInicialmente cuando no existan los microprocesadores las personas se
ingeniaban en disear sus circuitos electrnicos y los resultados estaban
expresados en diseos que implicaban muchos componentes electrnicos y clculos
matemticos. Un circuito lgico bsico requera de muchos elementos electrnicos
basados en transistores, resistencias, etc, lo cual desembocaba en circuitos con
muchos ajustes y fallos; pero en el ao 1971 apareci el primer microprocesador el
cual origin un cambio decisivo en las tcnicas de diseo de la mayora de los
equipos. Al principio se crea que el manejo de un microprocesador era para
aquellas personas con un coeficiente intelectual muy alto; por lo contrario con la
aparicin de este circuito integrado todo sera mucho ms fcil de entender y los
diseos electrnicos serian mucho ms pequeos y simplificados. Entre los
microprocesadores mas conocidos tenemos el popular Z-80 y el 8085. Los diseadores
de equipos electrnicos ahora tenan equipos que podan realizar mayor cantidad de
tareas en menos tiempo y su tamao se redujo considerablemente; sin embargo,
despus de cierto tiempo aparece una nueva tecnologa llamada microcontrolador que
simplifica aun mas el diseo electrnico.
Diferencias entre microprocesador y microcontroladorSi has tenido la oportunidad de
realizar un diseo con un microprocesador pudiste observar que dependiendo del
circuito se requeran algunos circuitos integrados adicionales adems del
microprocesador como por ejemplo: memorias RAM para almacenar los datos
temporalmente y memorias ROM para almacenar el programa que se encargara del
proceso del equipo, un circuito integrado para los puertos de entrada y salida y
finalmente un decodificador de direcciones.#INCLUDEPICTURE "../PIC2/Introduccin
%20al%20Microcontrolador%201_archivos/image001.png" \* MERGEFORMAT \d ###Figura 1.
Estructura de un sistema abierto basado en un microprocesador. La disponibilidad de
los buses en el exterior permite que se configure a la medida de la aplicacin.Un
microcontrolador es un solo circuito integrado que contiene todos los elementos
electrnicos que se utilizaban para hacer funcionar un sistema basado con un
microprocesador; es decir; contiene en un solo integrado la Unidad de Proceso, la
memoria RAM, memoria ROM, puertos de entrada, salidas y otros perifricos, con la
consiguiente reduccin de espacio.El microcontrolador es en definitiva un circuito
integrado que incluye todos los componentes de un computador. Debido a su reducido
tamao es posible montar el controlador en el propio dispositivo al que gobierna.
En este caso el controlador recibe el nombre de controlador empotrado (embedded
controller).#INCLUDEPICTURE "../PIC2/Introduccin%20al%20Microcontrolador
%201_archivos/image003.png" \* MERGEFORMAT \d ###Figura 2. El microcontrolador es
un sistema cerrado. Todas las partes del procesador estn contenidas en su interior
y slo salen al exterior las lneas que gobiernan los perifricos.Ventajas de un
microcontrolador frente a un microprocesadorEstas ventajas son reconocidas
inmediatamente para aquellas personas que han trabajado con los microprocesadores y
despus pasaron a trabajar con los microcontroladores. Estas son las diferencias
ms importantes:Por ejemplo la configuracin mnima bsica de un microprocesador
estaba constituida por un Micro de 40 Pines, Una memoria RAM de 28 Pines, una
memoria ROM de 28 Pines y un decodificador de direcciones de 18 pines; pero un
microcontrolador incluye todo estos elementos en un solo Circuito Integrado por lo
que implica una gran ventaja en varios factores: En el circuito impreso por su
amplia simplificacin de circuitera, el costo para un sistema basado en
microcontrolador es mucho menor y, lo mejor de todo, el tiempo de desarrollo de su
proyecto electrnico se disminuye considerablemente.Los microcontroladores hoy da
Los microcontroladores estn conquistando el mundo. Estn presentes en nuestro
trabajo, en nuestra casa y en nuestra vida, en general. Se pueden encontrar
controlando el funcionamiento de los ratones y teclados de los computadores, en los
telfonos, en los hornos microondas y los televisores de nuestro hogar. Pero la
invasin acaba de comenzar y el nacimiento del siglo XXI ser testigo de la
conquista masiva de estos diminutos computadores, que gobernarn la mayor parte de
los aparatos que fabricaremos y usamos los humanos.Cada vez existen ms productos
que incorporan un microcontrolador con el fin de aumentar sustancialmente sus
prestaciones, reducir su tamao y coste, mejorar su fiabilidad y disminuir el
consumo.Algunos fabricantes de microcontroladores superan el milln de unidades de
un modelo determinado producidas en una semana. Este dato puede dar una idea de la
masiva utilizacin de estos componentes.Los microcontroladores estn siendo
empleados en multitud de sistemas presentes en nuestra vida diaria, como pueden ser
juguetes, horno microondas, frigorficos, televisores, computadoras, impresoras,
mdems, el sistema de arranque de nuestro coche, etc. Y otras aplicaciones con las
que seguramente no estaremos tan familiarizados como instrumentacin electrnica,
control de sistemas en una nave espacial, etc. Una aplicacin tpica podra emplear
varios microcontroladores para controlar pequeas partes del sistema. Estos
pequeos controladores podran comunicarse entre ellos y con un procesador
central, probablemente ms potente, para compartir la informacin y coordinar sus
acciones, como, de hecho, ocurre ya habitualmente en cualquier PC.
Objetivo.El objetivo del presente trabajo es proporcionar un panorama amplio para
conocer estos dispositivos y en particular del PIC16F84 que por sus relevantes
caractersticas, bajo costo y facilidad de programacin nos brinda la oportunidad
de crear un sinfn de aplicaciones cuyo nico lmite es la imaginacin. Adems se
pretende dar un enfoque prctico, mostrando sus aplicaciones en diferentes reas y
particularmente en el rea de Comunicaciones, donde se mostrar el uso del
microcontrolador PIC16F84 para la modulacin por ancho de pulso (PWM).Cabe hacer la
aclaracin que el PIC16F84 requiere de algunos mnimos componentes externos
dependiendo de la aplicacin que se pretenda darle. Como ejemplo podemos mencionar
el uso de un cristal de cuarzo y capacitores o resistencias dependiendo del tipo de
oscilador que se elija para hacerlo operar.En cuanto a las condiciones actuales se
mencionan tambin algunos otros microcontroladores de otras empresas como los COP
de NATIONAL, AVRs de ATMEL, la serie 8031 de INTEL, etc. Para as comprarlos con
el PIC16F84 de MICROCHIP y darnos cuenta de las superiores cualidades y
caractersticas con respecto a sus competidores mas cercanos. Se cree conveniente
que para que se pueda conocer ms a fondo este dispositivo y trabajar con l
primero debemos definir que es y para que sirve un microcontrolador, sus
caractersticas generales, un amplio panorama de aplicaciones y mencionar el caso
particular del PIC16F84 con los bloques que lo integran basndose en la familia
16X84 para as saber que es la memoria de datos, la memoria de programas, el perro
guardin, el registro STATUS, etc, se aborda tambin el tema del diseo del
conjunto de instrucciones y estos temas son presentados en el capitulo II. En el
capitulo III y habiendo descrito los recursos con que cuenta el PIC16F84 en el
capitulo I, son presentadas las 35 instrucciones del set RISC de esta familia,
dando algunos ejemplo de uso en ciertos casos. Se hablar tambin de cmo programar
estos dispositivos y varios modelos de programadores existentes, as mismo se
hablar del software empleado en su programacin y de otros paquetes extras que
facilitan el trabajo.En el capitulo IV se dan ejemplos de prcticos sobre circuitos
reales de diferentes ramas de la ingeniera y uno de sus mltiples usos en el rea
de las Comunicaciones que es la modulacin por ancho de pulso o PWM.En el capitulo
V se presentan las conclusiones derivadas del anlisis del microcontrolador
PIC16F84 y sus aplicaciones en el rea de las Comunicaciones, se incluyen hojas de
especificaciones y costos de estos microcontroladores.
Planteamiento del Problema. Debido a los grandes avances tecnolgicos, nosotros
como ingenieros tenemos una gran participacin en el desarrollo de nuevas
tecnologas, esta es una razn por la cual estamos proponiendo que una solucin de
bajo costo, la cual sera el uso del microcontrolador, cabe sealar que este se
debe seleccionar de acuerdo a la aplicacin que vallamos a desarrollar ya que se
puede utilizar en un sin fin de aplicaciones, esto es de vital importancia pues
existen microcontroladores de mucha capacidad y de poca capacidad por lo tanto,
algunos son muy econmicos y otros son un poco mas caro.Como fue mencionado
anteriormente existen otros modelos de microcontroladores diferentes al PIC16F84,
tal es el caso por ejemplo de los COP de NATIONAL o los AVRs de ATMEL que poseen
algunos recursos similares al PIC16F84 de microchip, pero que por su alto costo y
dificultad de programacin, as como el tipo de tecnologa empleada en su
construccin, hacen decidirse por una opcin ms econmica y con mejores
prestaciones como lo es el PIC16F84.
** INDICE **INTRODUCCION######CAPITULO 1.- CONCEPTOS BASICOS Y FUNDAMENTOS
GENERALES#01##1.1.- LA COMPUTADORA#02##1.2.- EL PROCESADOR#04##1.3.- LAS
INSTRUCCIONES#07##1.4.- DESARROLLO DE LA COMPUTACION#09##1.5.- CLASIFICACION DE LAS
COMPUTADORAS#13#####CAPITULO 2.- LOS MICROCONTROLADORES Y EL PIC 16F84.#15##2.1.-
DEFINICIONES Y APLICACIONES DE LOS MICROCONTROLADORES.#15##2.2.- MICROCONTROLADORES
MAS COMUNES.#17##2.3.- COMPETIDORES DIRECTOS DEL PIC Y SUS PRINCIPALES
RECURSOS.#18##2.4.- DESCRIPCION DE LOS PINES.#19##2.5.- DESCRIPCION
INTERNA.#23##2.6.- TIPOS DE ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES.#35##2.7.-
CONSIDERACIONES MAS COMUNES PARA EL DISEO DE LA ARQUITECTURA DEL CONJUNTO
DE INSTRUCCIONES.#36##2.8.- CLASIFICACION DE ISAs CON REGISTRO DE PROPOSITO
GENERAL.#39##2.9.- REDUCED INSTRUCTION SET COMPUTER (RISC).#40##2.10.-
CONSIDERACIONES PARA EL DISEO DEL CONJUNTO DE INSTRUCCIONES RISC.#43##2.11.-
DISEO DEL CONJUNTO DE INSTRUCCIONES#44#####CAPITULO 3.-
PROGRAMADORES#57#####CAPITULO 4.- DESARROLLO DE CIRCUITOS#70##4.1.- DESARROLLO DE
UN DETECTOR DE RUIDO DE ALTA FRECUENCIA DE BAJO COSTO BASADO EN EL
MICROCONTROLADOR PIC16F84#70##4.2.- DESARROLLO DE UN CIRCUITO PARA PWM#77##4.3.-
PROYECTOS CON EL PIC16F84#82#####BIBLIOGRAFIA#96##CAPITULO I.- CONCEPTOS BASICOS Y
FUNDAMENTOS GENERALES Introduccin.En el campo de la electrnica existen diversos
dispositivos programables, tal es el caso de los microcontroladores que estn
ocupando un lugar de privilegio dentro de la industria electrnica. En particular
los microcontroladores de la empresa Microchip, en los cuales se puede implementar
fcilmente una gran variedad de programas con un set reducido de instrucciones, y
estos dispositivos son conocidos como PIC.Fundamentos de los procesadores.A travs
de la historia de la humanidad, los clculos principalmente se han realizado con
nuestro cerebro. Conforme la civilizacin ha avanzado se han desarrollado
herramientas de clculo que han ayudado a el cmputo manual. En un principio se
usaron los dedos, piedras y se tallaron maderas para realizar conteos.
Posteriormente apareci el baco y la regla de clculo. A medida que el tamao y
complejidad de los clculos aumentaban, aparecieron dos limitantes en cuanto al
clculo manual:La velocidad con que un humano realiza los clculos.La
vulnerabilidad a cometer errores, por causa de distraccin, fatiga, etc., factores
que no afectan a las mquinas. En consecuencia aparecieron las primeras mquinas de
clculo automtico.
Tanto el clculo humano o artificial, contienen los siguientes componentes: Un
Procesador capaz de interpretar y ejecutar programas.Una memoria para almacenar
los programas y datos a procesar.Mecanismos de entrada y salida para transferir
informacin entre la computadora y el exterior.##
## # 1.1 LA COMPUTADORA Las computadoras actuales an siguen la filosofa
y conceptos que introdujo John von Neumann, tales como el uso de una Memoria, que
consiste en un lugar donde se guardan ordenadamente las instrucciones que sern
realizadas por la mquina, as como los datos y resultados. De esta forma se tena
la posibilidad de alterar el programa de instrucciones, es por esto que se
denominan mquinas de programa almacenado. Von Neumann tambin introdujo el uso del
sistema binario. La mquina programada de von Neumann se compone de bloques
electrnicos digitales, que reciben, guardan y procesan informacin binaria,
comunicndose entre ellos por lneas digitales, conocidas como buses.### La
Unidad de Control y el Camino de Datos conforman la Unidad de Procesamiento
Central, tambin llamado Procesador, la cual se encarga de recibir ordenadamente
las instrucciones desde la Memoria Principal para interpretarlas y generar las
seales de control, que se aplican sobre los componentes del sistema para llevar a
cabo las instrucciones. El Generador de pulsos de reloj, se encarga de
sincronizar las operaciones que se llevan a cabo en los componentes que intervienen
en el manejo de los datos. La frecuencia del generador depende del diseo y
tecnologa de la computadora y determina la velocidad de procesamiento del mismo.
La Memoria Principal almacena, tanto los datos como el conjunto ordenado de
instrucciones que al ser ejecutadas, proporcionan los resultados esperados. Al
conjunto ordenado de instrucciones se conoce como Programa. La mquina tiene la
capacidad de romper la secuencia ordenada segn los resultados parciales que se van
obteniendo. La encargada de adaptar el formato de la informacin entre la
mquina y los perifricos es la Unidad de Entrada y salida.1.2 EL PROCESADOR
Un procesador de propsito general es un autmata de estados finitos que
ejecuta instrucciones almacenadas en una memoria. El estado del sistema esta
definido por los valores almacenados en las localidades de memoria junto con los
valores almacenados en ciertos registros del procesador. La evolucin de las
computadoras se basa en los procesadores, que han llegado a ser mucho ms poderosos
y han desplazado ampliamente el uso de supercomputadoras en las empresas e
industria.Los procesadores tambin conocidos como CPU son usados en estaciones de
trabajo, servidores y dispositivos perifricos como impresoras y controladores de
disco. Tambin son usados en muchas aplicaciones, incluyendo control y monitoreo de
funciones. Funciones que realizaLa funcin primaria del procesador es ejecutar
secuencias de instrucciones o programas, almacenados en una memoria principal.El
procesador transfiere las instrucciones y los datos de entrada, de la memoria
principal a sus registros. Ejecuta las instrucciones en la secuencia almacenada,
excepto cuando sta es alterada por una instruccin de salto. Transfiere los datos
de salida de sus registros a la memoria principal.El manejo eficiente del flujo de
instrucciones y datos es una tarea bsica que debe desarrollar el procesador.
Elementos que lo integranEl procesador consta de los siguientes elementos:Camino de
datos (datapath).Unidad de control.##Camino de datos o datapathSe encarga del
procesamiento de los datos, el camino de datos esta compuesto por unidades
funcionales y de almacenamiento que ejecutan ciertas operaciones lgicas y
aritmticas contenidas en las instrucciones. El datapath esta estructurado de la
siguiente forma:Archivo de registros, almacena temporalmente los operandos.Unidades
funcionales, las cuales pueden ser ALUs (que ejecutan la suma, resta y operaciones
lgicas), desplazadores (shifters) o multiplicadores.Multiplexores, los cuales
guan a los datos a travs del datapath. La implementacin de un datapath se
crea en base a una tecnologa de hardware especfica, la cul es la que dicta la
duracin del ciclo de reloj, y esta determinado por los circuitos ms lentos que
operan durante un periodo de ciclo de reloj, por lo que es el procesador quien lo
determina. Adems de que ocupa la mayor parte de los transistores y del rea del
procesador.Unidad de Control Se encarga de interpretar, coordinar, y realizar la
transferencia de datos entre la unidad aritmtico-lgica, memoria y dispositivos de
entrada y salida. Analiza e interpreta los bits de los campos que componen a una
instruccin, posteriormente genera las seales de control adecuadas para
especificar al Camino de datos la operacin que debe realizar, los operandos de
entrada y el lugar donde debe guardar el resultado. Adems determina la direccin
de la siguiente instruccin a ejecutar.Existen dos mtodos para el diseo de la
unidad de control: Control cableado y microprogramado.Control cableado. Se basa en
un circuito lgico secuencial o mquina de estado finito, que genera secuencias
especficas de seales de control en respuesta a instrucciones externas. Su
objetivo es minimizar el nmero de componentes usados y maximizar la velocidad de
operacin. Una vez construida la unidad de control, la nica manera de implementar
cambios es rediseando totalmente la unidad, es por esta caracterstica que se
conoce como Cableado o Hardwired.Microprogramacin. Se construye en torno a una
unidad de almacenamiento llamada memoria de control, todas las seales de control
se almacenan en un formato similar a un programa. La memoria de control almacena un
conjunto de microprogramas diseadas para implementar o emular el funcionamiento de
un conjunto de instrucciones en particular. Cada instruccin origina la bsqueda
del microprograma correspondiente. La extraccin de la informacin contenida en los
microprogramas es muy similar a la bsqueda y ejecucin de un programa almacenado
en memoria principal. Este tipo de control es ms sistemtico al organizar las
seales de control en palabras con formato (microinstrucciones), los cambios en el
diseo se pueden realizar fcilmente al alterar el contenido de la memoria de
control. El inconveniente es que son muy costosas y tienden a ser lentas ya que se
debe emplear tiempo extra en la bsqueda de la microinstruccin dentro de la
memoria de control. ####1.3 LAS INSTRUCCIONES Dependiendo de la estructura
de la computadora, se tiene un tamao de bits en el que se trabajan las
instrucciones. Este tamao se conoce como palabra y suele ser de 8, 16, 32 64
bits. Las instrucciones como los datos pueden ser de una o varias palabras. Una
instruccin especifica sus parmetros por medio de campos, los cuales suelen ser:
Cdigo de operacin (codifica el tipo de operacin lgica o aritmtica que
realizar la instruccin), Operando fuente y destino, entre otros. # #Tanto las
unidades de control cableadas como microprogramadas son estructuradas como
instrucciones o microinstrucciones pipelines como una manera de incrementar la
ejecucin. El Pipeline es un mtodo de bajo costo para aumentar el rendimiento del
procesador al descomponer su operacin en una secuencia de pasos relativamente
independientes. Los procesadores actuales usan el pipeline para incrementar su
porcentaje efectivo de instrucciones ejecutadas.Etapas para la ejecucin de una
instruccin Las instrucciones pueden descomponerse por ejemplo en cinco etapas
bsicas, que son. 1 Etapa. Bsqueda de instruccinSe localiza el cdigo binario
de la instruccin en la Memoria Principal. El contador de Programa (PC), se encarga
de depositar en el bus de direcciones la direccin de la instruccin a ejecutar.
Una vez decodificada la direccin en la memoria, se lee la posicin correspondiente
y su contenido se transfiere por el bus de datos e instrucciones a la Unidad de
Control.2 Etapa. Bsqueda del registro/Decodificacin de la instruccinLa unidad
de control interpreta el cdigo binario de la instruccin que se ha recibido de la
Memoria principal y accede al archivo de registros para leerlos.3 Etapa.
EjecucinLa unidad de control genera las seales precisas para que el datapath
realice la operacin correspondiente a la instruccin actual.4 Etapa. Acceso a
memoriaEs realizada nicamente por instrucciones de carga, almacenamiento, saltos y
bifurcaciones. El acceso a la memoria esta determinada por el tipo de instruccin.
5 Etapa. Post-escritura (escritura del resultado) El resultado obtenido en la
etapa de ejecucin de la instruccin se guarda en el registro destino.1.4
DESARROLLO DE LA COMPUTACIN El desarrollo de la tecnologa, en especial la
relacionada con la electrnica, ha afectado fuertemente la evolucin de la
organizacin de las computadoras, por lo que se identifican cuatro etapas:1 Etapa.
Es la poca inicial o nacimiento de la computadora, y esta marcada por la
estructura propuesta por Von Neumann.##La mayor actividad se realiza en la Unidad
de Control y la Memoria Principal. La unidad de control enva a la memoria la
direccin de la instruccin, recibe su cdigo, lo interpreta y en fase de
ejecucin, selecciona la operacin en la ALU, busca los operandos y almacena los
resultados. Es un ir y venir de datos e instrucciones entre la memoria y la unidad
de control. As tambin las entradas y salidas que proporcionan y reciben datos.La
tecnologa usada en la implementacin de esta estructura consisti en vlvulas de
vaco. La velocidad de respuesta entre ambos bloques era similar, ya que ambos
estaban construidos
con dichos dispositivos. En la programacin de las computadoras se usaba el
lenguaje mquina binario.2 EtapaEs la poca de los circuitos de pequea y mediana
escala de integracin (SSI y MSI), estos son usados en la construccin del
procesador, pero no en la Memoria, la cual se implementaba con tecnologas como
ncleos de ferrita, cuyos tiempos de acceso eran muy elevados, esto propicio una
diferencia considerable entre las tecnologas utilizadas para la construccin de
esos dispositivos.La velocidad de la memoria principal es 10 veces ms lenta que la
unidad de control, lo que origina largos periodos de inactividad del procesador en
la etapa de acceso a Memoria.Como medida para compensar la diferencia de
velocidades surgen las computadoras CISC. La unidad de control, la integra una
memoria de control. Por lo que el rendimiento quedaba a expensas de la velocidad de
la memoria de control, que al ser pequea y estar construida con semiconductores,
era mucho ms elevada que la memoria principal.## 3 EtapaEl aumento de la
densidad de integracin permiti construir memorias ms rpidas, las cuales se
incorporaron en la memoria principal, tratando de equilibrar su velocidad con la
del procesador. En est etapa aparece la memoria cach, la cul se intercala entre
la memoria principal y unidad de control, esta contiene la informacin ms
utilizada por el procesador. La memoria cach alcanza velocidades de 5 a 10 veces
ms que la memoria principal, su capacidad es pequea pero su efectividad consiste
en que contenga las instrucciones ms solicitadas por el procesador.##Las
computadoras de memoria cach, al momento de decodificar instrucciones complejas,
hacen que el procesador se tarde ms en realizar la operacin que en acceder a la
memoria, es por esto que el inters en las computadoras CISC ha ido disminuyendo.4
Etapa Se han realizado modificaciones en cuanto al diseo en la organizacin de
las computadoras, con mira al mejoramiento de la velocidad del procesador y el
equilibrio con la memoria cach, algunas de estas modificaciones son las
siguientes:Eliminacin del microcdigo. Las instrucciones se vuelven sencillas, por
lo que desaparece la memoria de control.Reduccin del tiempo de ciclo de mquina.
Como consecuencia de la simplificacin de las instrucciones.Interpretacin directa
por el hardware de las instrucciones y ejecucin de las mismas en un ciclo de
mquina.Ampliacin de la cach para contener datos e instrucciones. Los
procesadores actuales dan gran importancia a la memoria cach, la cual est
dedicada exclusivamente a contener instrucciones y los datos ms usados. Se han
establecido jerarquas entre distintos tamaos de cach, existiendo varios niveles
con distintas velocidades y capacidades. Tambin con estos criterios se realza
el uso de las computadoras de conjunto de instrucciones RISC.##1.5 CLASIFICACIN
DE LAS COMPUTADORAS Por el tipo y categoras de computadoras que se han
fabricado suelen clasificarse en cinco generaciones, las cules tienen
aproximadamente una duracin de una dcada y que se caracterizan por un conjunto
de parmetros, los cuales podemos visualizarlos en la siguiente tabla.
CARACTERS-TICAS#G E N E R A C I O N E
S###Primera#Segunda#Tercera#Cuarta#Quinta##D u r a c i n#1950-1960#1960-
1970#1970-1980#1980-1990#1990-2000##T e c n o l o g a#Vlvulas
electrnicas#Transistores#CI SSI-MMI#CI LSI#CI VLSI##F a b r i c a n t e#IBM-
UNIVAC#BURROUGHSNCR, CDC#DIGITAL#APPLE#DEC-INTEL##M q u i n a#IBM 701#CDC
6600#PDP-8PDP-11#FujitsuM382Cray X-MP#Alpha21164P6##S i s t e m aO p e r a t i v
o#Muy rudimentario#Monitor deencadenamiento. Muy primarios#Estructurados bajo
multiprogramacin y multiproceso#SO de tiempo compartido#Multiprocesamiento##T i p
o d eM e m o r a#Tubos de William.Tambores y cintas magnticas#Ncleos de
Ferrita#Memorias en CIYMemorias Cach#MemoriasVirtuales#Cach a varios niveles##L e
n g u a j e#Mquina#FORTRAMCOBOLALGOLPL1#BASICPASCAL#Alto Nivel.FORTRANextendido
#Lenguaje naturalC##A p o r t a c i o n e sH a r d w a r e#Registros
Indexados#Canales#Conexin de losCI en placas decircuito impreso#Procesador.Memoria
Integrada#CI de alta escala deintegracin##A p o r t a c i o n e sS o f t w a r
e#Mejoras en ensambladores y macro-ensambladores#Fuerte impulso deFORTAN#Gran
avance en los sistemas operativos#Extensin de lenguajes de alto nivel#Intento de
sustituirpor hardware##P r o d u c t o#Computadora#Computadoracomercial#Mini
computadora#Micro computadora#Multiprocesador###
CAPITULO 2.- LOS MICROCONTROLADORES Y EL PIC 16F84 Introduccin.Como fue mencionado
anteriormente existen otros modelos de microcontroladores diferentes al PIC16F84,
tal es el caso por ejemplo de los COP de NATIONAL o los AVRs de ATMEL que poseen
algunos recursos similares al PIC16F84 de microchip, pero que por su alto costo y
dificultad de programacin, as como el tipo de tecnologa empleada en su
construccin, hacen decidirse por una opcin ms econmica y con mejores
prestaciones como lo es el PIC16F84. A continuacin se definir el concepto de
microcontrolador, sus aplicaciones en la vida cotidiana y en la industria y se
presentaran los competidores ms directos y conocidos del PIC16F84, para as
mostrar sus caractersticas principales, sus recursos, su tecnologa empleada, etc.
Se presentaran tambin todos los recursos, caractersticas y tecnologa del PIC de
la empresa MICROCHIP.2.1.- Definicin y aplicaciones de los microcontroladores.El
microcontrolador es un circuito integrado o chip que incluye es su interior las
tres unidades funcionales de una computadora: # HYPERLINK
"http://es.wikipedia.org/wiki/CPU" \o "CPU" #CPU#, memoria y unidades de E/S, es
decir, se trata de un computador monopastilla, aunque de limitadas prestaciones y
que normalmente se dedica a resolver una tarea especfica. Es ms pequeo que una
caja de cerillos y, en ocasiones, cuesta menos, por lo que suele ir incrustado en
el dispositivo que controla. Un microcontrolador es un # HYPERLINK
"http://es.wikipedia.org/wiki/Microprocesador" \o "Microprocesador"
#microprocesador# optimizado para ser utilizado para controlar equipos
electrnicos. Los microcontroladores representan la inmensa mayora de los chips de
computadoras vendidos, sobre un 50% son controladores "simples" y otro son #
HYPERLINK "http://es.wikipedia.org/wiki/DSP" \o "DSP" #DSPs# ms especializados. En
el hogar pueden existir en los electrodomsticos entre una y dos docenas de
microcontroladores. Pueden encontrarse en casi cualquier dispositivo elctrico como
lavadoras, horno de microondas, telfonos, etc.Un microcontrolador difiere de una #
HYPERLINK "http://es.wikipedia.org/wiki/CPU" \o "CPU" #CPU# normal, debido a que es
ms fcil convertirla en un ordenador en funcionamiento, con un mnimo de #
HYPERLINK "http://es.wikipedia.org/w/wiki.phtml?title=Microchip&action=edit" \o
"Microchip" #chips# externos de apoyo. La idea es que el chip se coloque en el
dispositivo, enganchado a la fuente de energa y de informacin que necesite. Un
microprocesador tradicional permite hacer esto, ya que espera que todas estas
tareas sean manejadas por otros chips. Por ejemplo, un microcontrolador tpico
tendr un generador de reloj integrado y una pequea cantidad de memoria #
HYPERLINK "http://es.wikipedia.org/wiki/RAM" \o "RAM" #RAM# y # HYPERLINK
"http://es.wikipedia.org/wiki/ROM" \o "ROM" #ROM# /# HYPERLINK
"http://es.wikipedia.org/wiki/EPROM" \o "EPROM" #EPROM#/ # HYPERLINK
"http://es.wikipedia.org/wiki/EEPROM" \o "EEPROM" #EEPROM#, significando que para
hacerlo funcionar, todo lo que se necesita son unos pocos programas de control y un
cristal de sincronizacin. Los microcontroladores disponen generalmente tambin de
una gran variedad de dispositivos de # HYPERLINK
"http://es.wikipedia.org/w/wiki.phtml?title=Entrada/salida&action=edit" \o
"Entrada/salida" #entrada / salida#, como convertidores de # HYPERLINK
"http://es.wikipedia.org/wiki/Anal%F3gico" \o "Analgico" #analgico# a # HYPERLINK
"http://es.wikipedia.org/wiki/Digital" \o "Digital" #digital#, temporizadores, #
HYPERLINK "http://es.wikipedia.org/w/wiki.phtml?title=UART&action=edit" \o "UART"
#UARTs# y buses de interfaz serie especializados, como # HYPERLINK
"http://es.wikipedia.org/w/wiki.phtml?title=I2C&action=edit" \o "I2C" #I2C #y #
HYPERLINK "http://es.wikipedia.org/w/wiki.phtml?title=CAN&action=edit" \o "CAN"
#CAN#. Frecuentemente, estos dispositivos integrados pueden ser controlados por
instrucciones de procesadores especializados. Los modernos microcontroladores
frecuentemente incluyen un lenguaje de programacin integrado, como el # HYPERLINK
"http://es.wikipedia.org/w/wiki.phtml?title=Lenguaje_de_programaci
%F3n_BASIC_programming_language&action=edit" \o "Lenguaje de programacin BASIC
programming language" #BASIC#, ENSAMBLADOR, NIPLE, etc, que se utilizan bastante
con este propsito. Los microcontroladores negocian la velocidad y la flexibilidad
para facilitar su uso. Debido a que se utiliza bastante sitio en el chip para
incluir funcionalidad, como los dispositivo de E/S ( entrada / salida) o la memoria
que incluye el microcontrolador, se ha de prescindir de cualquier otra circuitera.
2.2.- Microcontroladores ms comunes.Los microcontroladores ms comunes en uso son:
AVRHitachi H8HoltekHT8Intel8-bit 8XC42 MCS51 8xC251 16-bit MCS96 MXS296 National
Semiconductor COP8 Microchip 12-bit instruction PIC 14-bit instruction PIC PIC16F84
16-bit instruction PIC Motorola 8-bit 68HC05 68HC08 68HC11 16 Bit#Atmel 68HC12
68HC16 32-bit 683xx NEC 78K ST ST 62 ST 7 Texas Instruments TMS370 Zilog Z8 Z86E02
Genrico##Algunas arquitecturas de microcontrolador estn disponibles por tal
cantidad de vendedores y en tantas variedades, que podran tener su propia
categora. Entre ellos encontramos, principalmente, las variantes de 8051 y Z80.
2.3.- Competidores directos del PIC y sus principales recursos.Ahora se mostrarn 3
competidores directos del PIC de la gama media que ofrecen recursos similares a los
del PIC pero a un costo mayor, con muchas ms instrucciones, de mayores
dimensiones, etc. Particularmente se presentarn primero y en el orden siguiente el
microcontrolador de ATMEL AT90S2313 (AVR ) con sus principales caractersticas,
despus seguir el Motorola 68HC11 y por ltimo el 8051 de INTEL, se notar como es
que estos microcontroladores requieren tarjetas para desarrollo demasiado costosas
y en precio superar al PIC16F84 de MICROCHIP, presentando similares recursos y
caractersticas y en algunos casos inferiores con respecto al PIC.AT90S2313 (AVR )
Es un microcontrolador de 8 bits con un encapsulado de 20 pines. Parte de estos
pines tienen una funcin especfica y no pueden ser reconfigurados (VCC, GND,RESET,
XTAL1 y XTAL2). Otros, tienen un modo de trabajo totalmente configurable por
programa y depender de la aplicacin en la que se aplique.#
2.4.- Descripcin de los pines # INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-1.gif" \* MERGEFORMATINET ###
Pin 1 (RESET): (Entrada).#Reinicia la ejecucin de instrucciones del
microcontrolador#cuando est a 0 lgico. Un 1 lgico no afecta al funcionamiento
del microcontrolador.#Como mnimo este terminal debe estar a 0 dos ciclos de
mquina para que se procese el RESET.Pines 20,10 (VCC, GND): (Alimentacin). #Vcc
debe estar comprendido entre 2,7 y 6V. Usualmente la alimentacin esta en 5V
estabilizadosPines 4,5 (XTAL1,XTAL2): #(Entradas de reloj). Entre estas lneas se
conecta el cristal#de cuarzo con la frecuencia de resonancia adecuada para la
generacin del reloj interno, o por el terminal XTAL1 se introduce la seal de
reloj del sistema.# INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-2.gif" \* MERGEFORMATINET #####
INCLUDEPICTURE "http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-3.gif" \*
MERGEFORMATINET ###### INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/XLineatransparente.gif" \* MERGEFORMATINET
##### INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/XLineatransparente.gif" \* MERGEFORMATINET
#####Pin 2 PD0 (RX). (Bidireccional).#Este terminal puede funcionar como entrada o
salida digital asociado al BIT 0 del puerto D, adems puede tener la funcin
especial de recepcin de datos serie para la UART.#Pin 3 PD1 (TX). (Bidireccional).
#Este terminal puede funcionar como entrada o salida digital asociado al BIT 1 del
puerto D, tambin puede tener la funcin especial de transmisin de datos serie
desde la UART.Pin 6 PD2 (INT0). (Bidireccional). #Este terminal puede funcionar
como entrada o salida digital asociado al BIT 2 del puerto D, adems puede usarse
para la generacin externa de interrupcin.#
Pin 7 PD3 (INT1). (Bidireccional).#Este terminal puede funcionar como entrada o
salida digital asociado al BIT 3 del puerto D, adems puede usarse para la atender
interrupciones externas.#Pin 8 PD4 (T0). (Bidireccional).#Este terminal puede
funcionar como entrada o salida digital asociado al BIT 4 del puerto D, adems
puede usarse como entrada de reloj para el temporizador/contador 0.#Pin 9 PD5 (T1).
(Bidireccional). Este terminal puede funcionar como entrada o salida digital
asociado al BIT 5 del puerto D, adems puede usarse como entrada de reloj para el
temporizador/contador 1.#Pin 11 PD6 (ICP). (Bidireccional).Este terminal puede
funcionar como entrada o salida digital asociado al BIT 6 del puerto D, adems
puede usarse como entrada de captura de cuenta del temporizador/contador 0.#
Pin 12 PB0 (AIN0). (Bidireccional). Este terminal puede funcionar como entrada o
salida digital asociado al BIT 0 del puerto B, adems puede usarse como una de las
dos entradas analgicas del comparador analgico integrado.#Pin 13 PB1 (AIN1).
(Bidireccional).#Este terminal puede funcionar como entrada o salida digital
asociado al BIT 1 del puerto B, adems puede usarse como una de las dos entradas
analgicas del comparador analgico integrado.#Pin 14 PB2. (Bidireccional).#Este
terminal puede funcionar como entrada o salida digital asociado al BIT 2 del puerto
B.#Pin 15 PB3 (OC1). (Bidireccional).#Este terminal puede funcionar como entrada o
salida digital asociado al BIT 3 del puerto B, adems puede usarse como salida del
temporizador/contador 1.#Pin 16 PB4. (Bidireccional).Este terminal puede funcionar
como entrada o salida digital asociado al BIT 4 del puerto B.#Pines 16,17,18 /
PB5,6,7 (MOSI,MISO,SCK). (Bidireccionales). #Estos terminales pueden funcionar como
entradas o salidas digitales asociadas a los bits 5,6,7 del puerto B, adems pueden
usarse como terminales para la comunicacin serie sncrona para la programacin de
la memoria flash interna.2.5.- Descripcin interna.#En la siguiente figura muestra
el diagrama en bloques de la arquitectura interna del AT90S2313 AVR (RISC)#
INCLUDEPICTURE "http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-4.gif" \*
MERGEFORMATINET ###Detalles de los bloques del diagrama:Un banco de 32 registros de
8 bits de propsitos generales, sobre los que se realizan la totalidad de las
operaciones de clculo.Una ALU de 8 bits para el clculo aritmtico y lgico con
los datos almacenados en el banco de registros de propsitos generales.Una RAM de
128x8 bits, para almacenamiento de datosUna EEPROM interna de 128x8, para el
almacenamiento de datos que deban mantenerse, aun cuando no este con alimentacin
del microcontrolador.Una memoria Flash EPROM de 1Kx16 bits para el almacenamiento
de las instrucciones del programa. Esta memoria dispone de un bus dedicado,
distinto del de datos, por el que transitan las instrucciones hacia el
decodificador de instrucciones,encargado de su ejecucin.Un puerto serie asncrono
o UARTUn puerto serie sncrono SPIUn contador /temporizador de 8 bitsUn contador
/temporizador de 16 bits con funciones de PWM, generacin de salida, control, etc.
Un WATCHDOG o perro guardin que vigila el correcto funcionamiento del#programa.Un
comparador analgico15 lneas de entrada/salidaUna unidad de generacin de
interrupcionesEn la siguiente figura se muestra el mapa de memoria de programa y
datos.# INCLUDEPICTURE "http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-
5.gif" \* MERGEFORMATINET ###Como podemos observar, el microcontrolador utiliza una
arquitectura HARVARD, donde la memoria de datos y programa tienen buses
independientes.La memoria de programa presenta 1k direcciones de 16 bits. Cada
instruccin. A pesar de los diferentes modos de direccionamiento que presente,
ocupa 16 bits, por lo que cada direccin de la memoria de programa contiene
aproximadamente una instruccin.#La memoria de datos se divide en tres regiones. La
inferior, que ocupa las primeras 32 direcciones, esta ocupada por el banco de
registros de propsitos generales (direcciones $00-$1F); La regin central, cubre
64 direcciones en donde se ubican los registros asociados a los diferentes puertos
de entrada/salida del microcontrolador, UART, comparador analgico, PUERTO B,
PUERTO D, etc direcciones $20-$5F). La regin ms alta, ocupa 128 posiciones y est
asociada a la memoria SRAM (direcciones $60-$DF).Registros de propsitos generales#
INCLUDEPICTURE "http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-7.gif" \*
MERGEFORMATINET ###Todas las instrucciones que operan con los contenidos de los
registros tienen acceso al conjunto del banco, salvo las instrucciones que cargan
datos de forma inmediata como SBCI, SUBI, CPI, ANDI, ORI y LDI que slo acceden a
la segunda mitad de los registros (R16..R31) Como ya se dijo con anterioridad, cada
registro est tambin mapeado en memoria, as el registro r31 ocupa la direccin
$1F del espacio de memoria de datos, etc. Los ltimos 6 registros del banco, r26-
r31, pueden tener funciones alternativas como apoyo a los modos de
direccionamiento, en ese caso, se agrupan por pares para constituir los registros
X,Y,Z de 16 bits cada uno. ##
La memoria de datos SRAM.#La siguiente figura muestra cmo esta organizada la
memoria datos# INCLUDEPICTURE "http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-
6.gif" \* MERGEFORMATINET ####Muchas instrucciones utilizan el nombre del registro
(R0..R31) en lugar de la direccin que ocupa este en el espacio de direccionamiento
de datos.#De forma parecida ocurre con los registros de I/O. Las instrucciones de
entrada y salida permiten reasignar un nmero a cada uno de ellos, de forma que el
primer registro de este tipo que encontramos se numera como 0 (direccin $20), el
siguiente, 1 (direccin $21) y as sucesivamente.Modos de direccionamiento de
datos y programas El AVR AT90S2313 permite 5 modos de direccionamiento de datos:
Directo Indirecto Indirecto con predecremento Indirecto con postincremento
Indirecto con desplazamiento InmediatoMODO DE REGISTRO DIRECTO# INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-9.gif" \* MERGEFORMATINET ###La
instruccin contiene un campo de 5 bits que permite especificar cualquier registro
de los 32 registros existentes en el mapa de registrosEl operando es contenido en
registro d (Rd).
MODO DE REGISTRO DIRECTO (2 REGISTROS)# INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-10.gif" \* MERGEFORMATINET ###
La instruccin contiene la direccin del operando fuente (Rr) y del destino (Rd)
(ambos operandos son registros del mapa de registros).Los Operandos son contenidos
en los registros r (Rr) y d (Rd). #El resultado se guarda en registro d (Rd).MODO
DE REGISTRO E/S DIRECTO# INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-12.gif" \* MERGEFORMATINET ###
En este caso, la instruccin contiene la direccin de 6 bits del registro de E/S. N
es el registro que acta como fuente o destino de la informacinMODO DE
DIRECCIONAMIENTO DIRECTO# INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-13.gif" \* MERGEFORMATINET ###
#La instruccin viene acompaada de una palabra de 16 bits que contiene la
direccin de memoria (SRAM, E/S, FILE REGISTER), adems de un campo Rd/Rr que
contiene el registro que ser fuente o destino de la informacin.MODO DE
DIRECCIONAMIENTO INDIRECTO CON DESPLAZAMIENTO # INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-14.gif" \* MERGEFORMATINET ###
La instruccin contiene el desplazamiento que se sumar al registro Y o Z para
formar la direccin donde se encuentra el operando.
MODO DE DIRECCIONAMIENTO INDIRECTO # INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-15.gif" \* MERGEFORMATINET ###
La direccin del operando se encuentra en el registro X, Y o Z especificado en el
cdigo de operacin de la instruccin.MODO DE DIRECCIONAMIENTO INDIRECTO CON
PREDECREMENTO# INCLUDEPICTURE "http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-
16.gif" \* MERGEFORMATINET ###Es igual al modo anterior, con la diferencia que en
este caso, el registro X,Y,Z previamente se decrementa en una unidad.
MODO DE DIRECCIONAMIENTO INDIRECTO CON POSTINCREMENTO# INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-17.gif" \* MERGEFORMATINET ###
Igual que el modo indirecto, pero al final el contenido del registro X, Y o Z se
incrementa en una unidad.MODO DE DIRECCIONAMIENTO DE CONSTANTES EN MEMORIA DE
PROGRAMA (instruccin LPM)# INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-18.gif" \* MERGEFORMATINET ###
Es comn que los programas contengan valores constantes, estas constantes se
almacenan junto con las instrucciones, en la memoria de programa. #Debido a que
este microcontrolador presenta una arquitectura Harvard, en donde los buses de
datos y programa estn separados, el acceso a estas constantes parece una tarea
imposible. No obstante, existe un puente entre el bus de datos de la memoria de
programa y el bus de datos de la memoria de datos, que de forma controlada, slo
utiliza la instruccin LPM. #Se recuerda que la memoria de programa tiene un tamao
de 1Kx16 bits, mientras que los buses de datos usan un tamao de 8 bits. En estas
condiciones, el acceso a un byte de la memoria de programa requiere que, en primer
lugar, se especifique la direccin del dato en los 15 bits ms significativos del
registro Z. El BIT 0 de dicho registro se utiliza para seleccionar el byte alto o
bajo de la constante. #La ejecucin de LPM vuelca el dato en el registro R0.MODO
DE DIRECCIONAMIENTO DE PROGRAMA INDIRECTO (IJUMP,ICALL)# INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-19.gif" \* MERGEFORMATINET ###
Estas instrucciones permiten que la ejecucin del programa salte a la posicin de
la memoria de programa indicada por el contenido del registro Z.#
MODO DE DIRECCIONAMIENTO RELATIVO DE PROGRAMA (RJMP ,RCALL)# INCLUDEPICTURE
"http://www.dinastiasoft.com.ar/Imagenes/Notas/2313-20.gif" \* MERGEFORMATINET ###
La instruccin contiene un desplazamiento K que se suma al contenido del PC para
encontrar la siguiente instruccin a ejecutar. Esto es, la ejecucin del programa
continua en la direccin PC+k+1 los valores validos de k van desde -2048 a 2047.El
diseo del conjunto de instrucciones conocido tambin como Instruction Set
Architecture (ISA) es la parte del procesador que es visible al programador o al
diseador de compiladores. El ISA es la interfaz entre el software y el hardware.
Para dar rdenes al hardware de la computadora es necesario hablarle en su
lenguaje. Las palabras de la mquina se denominan instrucciones y vocabulario se
denomina al repertorio de instrucciones o conjunto de instrucciones. Es este
captulo se desarrollar el diseo de la arquitectura del conjunto de instrucciones
del procesador, buscando implementar un lenguaje que haga fcil la construccin del
hardware, tambin se desarrollaran los caminos de datos adecuados, para ejecutar
las instrucciones.2.6 TIPOS DE ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES Con
respecto a la cantidad de instrucciones que soporta un procesador, stos se pueden
clasificar en dos tipos:CISC (complex instruction set computer) Computadoras con un
conjunto de instrucciones complejo.RISC (reduced instruction set computer)
Computadoras con un conjunto de instrucciones reducido.Conjunto de Instrucciones
CISC Es el tipo ms antiguo y comn, su caracterstica ms esencial es la
microprogramacin. Tienen una gran cantidad de instrucciones y por tanto son muy
rpidos procesando cdigo complejo. Las instrucciones compuestas son decodificadas
internamente y ejecutadas con una serie de microinstrucciones almacenadas en una
ROM interna. Para esto se requieren de varios ciclos de reloj. Los procesadores
CISC ms populares son los de la familia 80x86 de Intel.Conjunto de Instrucciones
RISC Lo tienen procesadores con un conjunto de instrucciones sencillas;
permiten una ejecucin ms rpida de las instrucciones. El cdigo complejo puede
descomponerse en instrucciones ms elementales, evitando as retardos de la memoria
principal, haciendo uso de numerosos registros y memoria cach. El diseo en
hardware de este tipo de procesadores es ms sencillo en comparacin a los CISC.
Otro de los objetivos del RISC es lograr que cada instruccin se realice en un solo
ciclo de reloj. La ventaja que ofrece el procesador es la rapidez, pero para
alcanzarla es conveniente que las instrucciones sean simples. La tendencia actual
es que los procesadores contengan pocas instrucciones y que stas sean sencillas
para ejecutarlas en un ciclo de reloj. Los tipos de instrucciones en general se
pueden clasificar de la siguiente forma:Instrucciones de transferencia. Mueven la
informacin entre las localidades de Memoria Principal y los registros del
procesadorInstrucciones aritmticas y lgicas. Son las encargadas de efectuar
bsicamente la suma y resta, as como, realizar operaciones AND, OR y XOR.
Instrucciones de salto. Rompen la ejecucin ordenada de las instrucciones que
componen un programa. Con la mayora de las instrucciones, el contador de programa
se incrementa para apuntar a la siguiente instruccin que hay en la secuencia del
programa. Sin embargo, las instrucciones de salto cargan en el PC valores
aleatorios que modifican el flujo ordenado de las instrucciones de un programa.
Existen instrucciones de salto que son condicionales, es decir, para que se altere
el PC es necesario que se cumpla alguna condicin, en caso contrario contina el
flujo ordenado de las instrucciones.2.7 CONSIDERACIONES MS COMUNES PARA EL DISEO
DE LA ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES Al disear la arquitectura del
conjunto de instrucciones de un procesador se debe tomar en cuenta, el nmero de
instrucciones a manejar, el nmero de operandos que tendrn las instrucciones, los
tipos y tamaos de stos, etc. A continuacin se mencionan algunas caractersticas
que hacen la diferencia entre las arquitecturas de conjunto de instrucciones:
Operandos almacenados en la CPU. Se refiere a que algunas ISA guardan los operandos
en localidades internas del CPU.Nmero de operandos por instruccin. Es el nmero
de operandos que son nombrados en una instruccin.Localidad del operando. El
operando puede encontrarse o localizarse en la memoria o estar guardado
internamente en la CPU.Instrucciones. Las instrucciones que formaran parte del
conjunto de instrucciones.Tipo y tamao de los operandos. se definen y se
especifica el tipo y tamao de los operandos. De las caractersticas arriba
mencionadas, el almacenamiento interno en la CPU es lo que hace la diferencia
primordial entre los procesadores. Tipos de ISA con respecto a la forma de
almacenamiento de los datos.Existen tres tipos de ISA que son las ms comunes y son
los siguientes:Acumulador Se utiliza un registro llamado acumulador, ya que
todas las operaciones se acumulan en ste. Por ejemplo.
Instruccin Operacin add A acc - acc +
mem[A] La instruccin 1 realiza una suma de un dato en memoria y el
acumulador (acc), el resultado se almacena en el acumulador. Pila - Los
operandos se encuentran en el tope de la pila. As todas las operaciones se
realizan en el tope de la pila. Por ejemplo.Instruccin Operacinadd
top - top + next Se realiza una suma con los operandos que se
encuentran en el tope de la pila y el resultado se almacena en el tope.Registros de
Propsito General (GPR) Los operandos que son mencionados explcitamente, son
almacenados en cada uno de los registros o en localidades de memoria. Por ejemplo.
Instruccin Operacin1 add A B A = A + B2 add A B C A = B + C
La instruccin 1 realiza la suma del registro A y B, el
resultado es almacenado en en registro A. La instruccin 2 hace la suma del
registro B y C , el resultado se almacena en A. Diferencias entre
los Tipos de Arquitecturas de Conjunto de Instrucciones AcumuladorVentajas: Maneja
instrucciones cortas.Desventajas: El acumulador es slo un lugar de almacenamiento
temporal por lo tanto el trfico en la memoria es mayor para este mtodo.Pila
Ventajas: Es un modelo simple para evaluar expresiones e instrucciones cortas.
Desventajas: Una pila no puede ser accedida aleatoriamente, esto hace difcil la
generacin de cdigo eficiente. La pila es accedida por una misma operacin varias
veces y llega a generar cuellos de botella.Registros de Propsito GeneralVentajas:
Permite que la generacin de cdigo se realice fcilmente. Los datos pueden
permanecer almacenados en los registros durante largos periodos de tiempo.
Desventajas: Todos los operandos deben ser nombrados y las instrucciones son
grandes. Las primeras CPUs tenan las caractersticas de los dos primeros tipos
arriba mencionados, pero en los ltimos 15 aos todas las CPUs construidas son
procesadores de Registros de Propsito General. La razon principal es que los
registros son ms rpidos que la memoria, los datos pueden ser guardados
internamente en la CPU y sto se refleja en la rapidez con la que un programa
corre. Otra razn es que los registros son ms fciles de usar por el compilador.
2.8.- CLASIFICACIN DE ISAs CON REGISTRO DE PROPSITO GENERAL Existen dos
caractersticas principales del conjunto de instrucciones que dividen a las
arquitecturas GPR, y stas son:S una instruccin aritmtica-lgica tiene dos o
tres operandos ADD R3, R1, R2 # R3 <-R1 + R2# or #
ADD R1, R2 # R1 <- R1 + R2### Los operandos pueden ser direcciones de memoria
en instrucciones aritmtico-lgicas, y stas son las formas en que se pueden
presentar:Registro - Registro ADD R3, R1, R2 (R3 <- R1 + R2)Registro -
Memoria ADD R1, A (R1 <- R1 + A) Memoria - Memoria ADD C,
A, B (C <- A + B) 2.9.- REDUCED INSTRUCTION SET COMPUTER (RISC)
Como se mencion anteriormente los CPUs modernos son del tipo GPR (Registro de
Propsito General). Como ejemplos de estos CPUs son la IBM 360, DEC VAX, Intel
80x86 y Motorola 68xxx, sin embargo, estos CPUs fueron claramente mejores que los
CPUs anteriores basados en pila y acumulador, ya que fueron mitigando
inconvenientes en algunas reas, pero presentaban los problemas que se mencionan a
continuacin:Las instrucciones varianban en longitud de 1 byte a 6-8 bytes. Esto
causa problemas con la prebsqueda y pipelining de las instrucciones.Las
instrucciones aritmtico-lgicas pueden tener operandos que son localidades de
memoria. Porque el nmero de ciclos tomados para acceder a memoria vara. Esto no
es bueno para los diseadores de compiladores, pipelining y mltiples emisiones.
Muchas instrucciones aritmtico-lgicas tenan slo 2 operandos, donde uno de los
operandos tambin es el destino. Esto significa que el operando es destruido
durante la operacin o se almacena antes en otro lugar. A principios de los
80s se introdujo la idea del RISC surgiendo del proyecto SPARC iniciado en
Berkeley y el proyecto MIPS en Stanford. RISC significa Computadora de Conjunto
Reducido de Instrucciones. El ISA es compuesto de instrucciones donde todas tienen
exactamente el mismo tamao, usualmente de 32 bits. Por lo que puede realizar
satisfactoriamente la prebsqueda y el pipelined. Todas las instrucciones
aritmtico-lgicas tienen 3 operandos los cules slo son registros. Los accesos a
memoria solo se realizan a travs de instrucciones explcitas de Carga /
Almacenamiento. Por
ejemplo el cdigo ensamblador de A = B + C sera:LOAD R1, A
LOAD R2, B ADD R3,
R1, R2 STORE C, R3 A pesar de que se realizan cuatro instrucciones,
podemos reutilizar los valores contenidos en los registros.
Conjuntos de Instrucciones Reducido La arquitectura de conjunto de
instrucciones reducido, trabaja con instrucciones de una misma longitud, y el
nmero de bits usados en el cdigo de operacin es reducido. Por lo que menos
instrucciones pueden ser realizadas. Las instrucciones que son eliminadas de
este tipo de conjunto de instrucciones, son las operaciones menos importantes como
cadenas y BCD (binary-coded decimal). En efecto, ahora que los accesos a la memoria
son restringidos, no hay muchos tipos de instrucciones MOV o ADD. Por lo que la
arquitectura anterior es llamada CISC (Complete Instruction Set Computer). Las
arquitecturas RISC tambin son conocidas como arquitecturas de LOAD/STORE. El
nmero de registros en esta arquitectura usualmente es de 32 o ms registros. El
primer CPU RISC fue el MIPS 2000, que tiene 32 GPRs contrariamente a los 16 de la
arquitectura 68xxx y 8 en la arquitectura 80x86. La nica desventaja del RISC es el
tamao de su cdigo. Usualmente se necesitan ms instrucciones y hay una prdida en
instrucciones cortas (POP, PUSH). Sin embargo, aun se siguen desarrollando
CPUs CISC, Intel sigue invirtiendo tiempo y dinero en la manufactura del Pentium II
y el Pentium III, esto ocurre, porque as permite mantener la compatibilidad. La
IBM PC compatible es la computadora ms comn en el mundo. Intel quiere una CPU
que pueda correr todas las aplicaciones que estn en manos de ms de 100 millones
de usuarios. Por otro lado Motorola construyo la serie 68xxx la cual es usada
en la Macintosh para hacer la transicin y conjuntamente IBM y Apple construyeron
el Power PC (PPC) un CPU RISC, el cual es instalado en la nueva Power Macs. 2.10.-
CONSIDERACIONES PARA EL DISEO DEL CONJUNTO DE INSTRUCCIONES RISC. Es necesario
tener algunas consideraciones en el diseo del hardware, que tambin influyen en la
arquitectura del conjunto de instrucciones, y son:La simplicidad favorece la
regularidadMs pequeo es ms rpidoUn buen diseo demanda compromisosHacer que el
caso comn sea rpidoLa simplicidad favorece la regularidadEsto se refiere a lograr
que el hardware que obedece al conjunto de instrucciones sea sencillo, al
considerar que las instrucciones son de una misma longitud y que sus formatos sean
sencillos. Ya que cuando se tienen instrucciones de diferentes longitudes y muchos
formatos diferentes, el hardware sea complica. Ms pequeo es ms rpido Se
refiere al tamao y complejidad del hardware, ya que entre mas pequeo y sencillo
es ms rpido.Un buen diseo demanda compromisos Existen problemas cuando una
instruccin necesita campos mayores que los estipulados. Por lo que se presenta un
conflicto entre el propsito de que todas las instrucciones tengan la misma
longitud y de que todas las instrucciones tengan un formato sencillo. Si el inters
o compromiso es que las instrucciones tengan una misma longitud, entonces ser
necesario manejar distintos tipos de formatos para diferentes tipos de
instrucciones.Hacer que el caso comn sea rpido Una forma de evitar los
accesos a memoria es tener diferentes instrucciones aritmticas, es comn que las
operaciones aritmticas contengan operadores constantes o de direccionamiento
inmediato, permitiendo que estas instrucciones sean mucho ms rpidas que s se
cargasen de memoria.2.11.- DISEO DEL CONJUNTO DE INSTRUCCIONES En esta
seccin se define la arquitectura del conjunto de instrucciones del procesador que
se desarrollar en este trabajo de tesis. Se determino que la arquitectura del
conjunto de instrucciones ser de carga almacenamiento o RISC, por las
caractersticas que posee este tipo de arquitectura. El conjunto de instrucciones
contendr operaciones bsicas, el tamao de palabra o ser de 16 bits. Conjunto de
Instrucciones El conjunto de instrucciones consta de 14 instrucciones, las
cuales se subdividen de la siguiente manera:Instrucciones Aritmtico-Lgicas. add,
sub, and, or, srl, sll.Instrucciones de Acceso a Memoria. ld y st.Instrucciones de
Toma de Decisin. bc, bz.Instrucciones de Salto. jInstrucciones de Control. clr_c,
set_c, load_p Formatos El tamao de las instrucciones es de 16 bits y se
manejan 4 tipos de formatos a los que obedecen las instrucciones, y estos son los
siguientes:Instrucciones Aritmticas-Lgicas: Este tipo de instrucciones se
componen de cuatro campos, los cuales representan el cdigo de operacin (op), y
tres campos correspondientes a los registros operandos y destino (rf1, rf2 y rd),
respectivamente. Cada operando campo es representado por 4 bits, como se muestra en
el siguiente esquema. #Instrucciones de Acceso a memoria: El formato de
instrucciones cuenta con tres campos, que representan el cdigo de operacin (op),
un campo para denotar el registro y 8 bits para representar la direccin. A
continuacin se muestra el esquema de este formato.#Instrucciones Toma de
decisiones: El formato cuenta con tres campos, cdigo de operacin (op), el
desplazamiento representado por 8 bits y bits no utilizados, este formato lo
podemos ver a continuacin. ##Instrucciones de Salto: En el formato se tiene un
campo de 4 bits correspondiente al cdigo de operacin y el campo de direccin
representado por 12 bits, como lo vemos a continuacin. Modos de Direccionamiento
Para este procesador se tienen 3 modos de direccionamiento, que son los siguientes:
Direccionamiento de registro. El operando es un registro##Direccionamiento de
pgina. La direccin efectiva se forma de la concatenacin del registro de pgina y
el campo de direccin de la instruccin, donde los bits ms significativos son
ocupados por el registro de pgina y los restantes por el campo de direccin de la
instruccin.##########Direccionamiento relativo al PC. La direccin se compone al
sumar el contador de programa, ms el desplazamiento.##Instruccionesadd Suma con
acarreo Sintaxis add rd, rf1, rf2 Suma el contenido de los
registros rf1, rf2 y la bandera de acarreo, el resultado es guardado en rd.sub
Resta con acarreo Sintaxis sub rd, rf1, rf2 Resta
el contenido de los registros rf1, rf2 y la bandera de acarreo, guarda el resultado
en rd.and Realiza la operacin lgica AND Sintaxis and rd,
rf1, rf2 Efecta la operacin lgica AND entre los registros rf1 y rf2,
depositando el resultado en rd.or Realiza la operacin lgica OR
Sintaxis or rd, rf1, rf2 Realiza la operacin lgica OR entre los
registros rf1 y rf2, guarda el resultado en rd.srl Realiza corrimiento lgico a
la derecha Sintaxis srl rd, rf1, rf2 Corrimiento lgico a la
derecha, a rf1 se le aplica el nmero de corrimientos contenido en rf2, guarda el
resultado en rd. sll Realiza corrimiento lgico a la izquierda Sintaxis
sll rd, rf1, rf2 Corrimiento lgico a la izquierda, a rf1 se le aplica el
nmero de corrimientos contenido en rf2, el resultado se coloca en rd. ld Cargar
palabra Sintaxis ld rd, dir El registro
rd es cargado con el contenido de la direccin de memoria compuesta por el
contenido del registro que almacena el nmero de pgina y la direccin estipulada
en dir. st Almacenar palabra. Sintaxis st
rd, dir Almacenar palabra, el contenido del registro rd es transferido a la
direccin de memoria compuesta por el nmero de pgina y la direccin dir. bc
Saltar si la bandera de acarro esta habilitada. Sintaxis bc desplazamiento
Si la bandera de acarreo es 1, el PC se desplaza en el nmero de localidades
denotado por desplazamiento. Si la bandera de acarreo es 0 entonces continua con la
siguiente instruccin. bz Saltar si la bandera de cero esta habilitada
Sintaxis bz desplazamiento Si la bandera de cero es 1, el PC se desplaza
en el nmero de localidades denotado por desplazamiento. Si la bandera de acarreo
es 0 entonces continua con la siguiente instruccin. j Salto incondicional
Sintaxis j dir Salta a la direccin de memoria dir.
clr_c Limpiar bandera de acarreo. Sintaxis clr_c La bandera de
acarreo es puesta a cero. set_c Establece bandera de acarreo. Sintaxis
set_c La bandera de acarreo es puesta a uno.load_p Cargar pgina
Sintaxis load_p pagina El registro de pgina es cargado para
usarlo con posteriores direccionamientos.Elementos necesarios para la
implementacin del conjunto de instrucciones. El diseo de la implementacin del
datapath o camino de datos de un procesador esta determinado en gran parte por la
arquitectura del conjunto de instrucciones que se tenga, por lo que es importante
agrupar las instrucciones y analizar que elementos electrnicos se necesitan para
que stas se lleven a cabo, una vez realizado esto es importante identificar
elementos que son comunes en los diferentes tipos instrucciones que se tiene.
Posteriormente, se determinara el tipo de camino de datos a implementar, basndose
en la frecuencia de reloj y el nmero de instrucciones por ciclo (CPI), que se
requiera.A continuacin analizaremos los elementos que se necesitan para que las
instrucciones del ISA propuesto se lleven acabo. As tambin realizaremos la
implementacin de cada uno de los elementos en el lenguaje de descripcin en
Hardware Verilog. Bsqueda de instruccionesEl primer elemento necesario es un
elemento o dispositivo que almacene las instrucciones de un programa, para lo cual
se hace uso de una unidad de memoria que almacene y proporcione las instrucciones
en base a una direccin dada. Tambin se necesita un elemento que contenga la
direccin de la instruccin, conocido como contador de programa (PC), para poder
ejecutar el programa almacenado en la memoria es necesario leer cada una de las
instrucciones del programa, por lo que es necesario un elemento que realice el
incremento necesario de la direccin de memoria, esto puede hacerse a travs de un
sumador que incremente la direccin actual en un determinado nmero de localidades
para ir a la siguiente instruccin. El datapath necesario para realizar lo
anteriormente dicho se ilustra a continuacin.# #El PC es de 12 bits con lo que se
podrn direccionar hasta 212 localidades de memoria. A continuacin se muestra el
diagrama y cdigo en verilog.######La memoria de instrucciones tiene un tamao de
212 localidades de 16 bits cada una. En seguida vemos segmento del cdigo de una
memoria de instrucciones y su diagrama.##El sumador es de 14 bits y su cdigo y
representacin grfica se ilustra enseguida.
##Instrucciones Aritmtico-LgicasLas instrucciones que se encuentran dentro de
esta agrupacin son: la suma (add), resta (sub), la operacin and (and), or (or),
corrimiento a la derecha (srl), y corrimiento a la izquierda (sll). Para ejecutar
las instrucciones se necesita primeramente obtener los datos a procesar del banco
de registros e introducirlos a una unidad lgica aritmtica, para que realice la
operacin. El datapath correspondiente se representa de la siguiente manera.##Banco
de registros El ISA propuesto realiza las operaciones a travs del uso de
registros, por lo que es necesario contar con un banco de registros. El banco de
registros, permite leer o escribir un dato especificando el nmero de registro.
Considerando el formato de las instrucciones aritmtico-lgicas, se requieren de
tres operandos de registros, dos para leer los datos del banco de registros y uno
para escribir el resultado en un registro. Por lo que es necesario que el banco de
registros cuente con dos entradas para indicar los registros a leer y dos salidas
para leer el dato contenido en los registros respectivos. Para escribir un dato es
necesario tener una seal que indique cuando se realizar una escritura, as como
una entrada para indicar el registro a escribir y otra para proporcionar el dato.
El banco de registros cuenta con 16 registros de 16 bits, ya que es el nmero de
registros que permite al procesador realizar de forma eficientemente los programas
que se propongan, cada registro tiene un ancho de 16 bits, puesto que el tamao de
los datos estipulados en el diseo de la arquitectura fue de 16 bits. Las entradas
para leer o escribir registro deben ser de 4 bits para poder direccionar los
registros del cero al quince (16 registro). Las salidas y la entrada para el dato a
escribir son de 16 bits. Esto se representa en el diagrama que se muestra
enseguida, as como parte del cdigo de implementacin en Verilog.###Unidad
aritmtico-logica (ALU)Realiza operaciones de suma, resta, and, or, corrimientos a
la derecha e izquierda. La ALU es de 16 bits y realiza las operaciones para nmeros
sin signo. Tiene dos entradas para los datos a procesar y 3 salidas, una para el
resultado y dos para seales de acarreo y cero. A continuacin se muestra el
diagrama e implementacin en Verilog de la ALU.##Instrucciones de acceso a memoria
Las instrucciones de acceso a memoria son: carga (ld) y almacenamiento (st) de
dato. Almacenar o cargar un dato de memoria, implica leer o escribir en un registro
del banco de registro y escribir o leer un dato en una localidad de la memoria de
datos. Para direccionar la memoria se hace uso de la paginacin, para lo cual es
necesario un registro de pagina, que es de 4 bits. La direccin de la memoria esta
compuesta en los primeros 4 bits por la pgina y enseguida por la direccin
estipulada en la direccin. A continuacin se ilustra el datapath correspondiente a
este tipo de instrucciones.##La memoria de datos puede direccionar hasta 212
localidades, cada localidad tiene un ancho de 16 bits, un segmento de cdigo y el
diagrama de sta, podemos verlo enseguida.## El registro de pgina, contiene el
nmero de pgina en el que se direccionar, este registro es de 4 bits que se
concatena con la direccin representada en la instruccin. El cdigo y diagrama se
ilustran enseguida.
#### Instrucciones de Toma de decisiones y SaltoLa instrucciones de toma de
decisiones y salto, son: saltar si la seal de acarreo esta activa (bc), saltar si
la seal de cero esta activa (bz) y saltar a cierta direccin (j). Para ejecutar
estas instrucciones se necesita modificar el datapath de la bsqueda de
instrucciones, ya que es all donde se almacena la direccin de la siguiente
instruccin, por lo que se agregara un multiplexor para decidir que direccin ser
la siguiente: si la estipulada en el salto condicional, la secuencia normal del
programa o ser otra direccin, la decisin sobre que direccin se ejecutar, la
proporciona el control del procesador.Instrucciones de Control Las instrucciones de
limpiar seal de acarreo (clr_c), establecer bandera de acarreo (set_c), cargar
pgina (load_p), no necesitan un hardware especial, ya que stas pueden ser
ejecutadas por lneas de control.Una vez que ya conocemos los caminos de datos o
datapath necesarios para realizar las instrucciones, podemos combinarlos en un
slo datapath y realizar el control necesario para que las instrucciones se lleven
a cabo. Para realizar el datapath del conjunto de instrucciones, es necesario
determinar el tipo de datapath mas adecuado para la implementacin. Esto lo veremos
en el captulo cuatro. En el siguiente captulo hablaremos de las
herramientas que se utilizaran para el diseo, simulacin e implementacin del
camino de datos o datapath.CAPITULO 3.- PROGRAMADORESEn este capitulo se tratarn
los programadores existentes.NOPPP, the "No-Parts" PIC ProgrammerNOPPP es un
sencillo programador para los microcontroladores PIC16C84, PIC16F83 y PIC16F84.
Se conecta al puerto paralelo del PC. Un extenso artculo con los planos y
descripcin fu publicado en # HYPERLINK "http://www.gernsback.com" \t "_blank"
#Electronics Now# Magazine, Septiembre de 1998.El NOPPP es inusualmente simple y
utiliza componentes fcilmente localizables.Probablemente ya tendrs todos los
componentes necesarios. Aqu tienes el circuito (modificado ligeramente respecto al
diseo original para mayor fiabilidad):# INCLUDEPICTURE
"http://www.covingtoninnovations.com/noppp/noppp-x.gif" \* MERGEFORMATINET ###En el
PIC, la patilla MCLR se pone a +5V para el funcionamiento normal (no se usa
aqu), a +12V para grabacin, y a 0V para resetear. Realmente los +12V no "queman
una EPROM" -- el voltaje superior es meramente una seal para activar el circuito
interno de programacin de la memoria flash. Debe ser mayor de 12.0 volts. La
salida D0 del PC controla esta seal. No hay peligro para el chip si se aplica esta
seal en un momento inadecuado.El PIC se comunica mediante protocolo serie sncrono
de dos lneas (mas masa).El Pin B6 es la seal de strobel; los pulsos en este pin
le indican al PIC cuando debe recibir o transmitir cada bit de datos. El Pin B7 se
utiliza como entrada y salida. Cuando el PIC est recibiendo datos desde el PC, la
seal SLCTIN es mantenida a nivel bajo y por lo tanto D2 no conduce por lo que D1
y R1 no se utilizan en este momento y el PIC recibe los datos mediante la seal
AUTOFD.Cuando el PIC est enviando datos, las seales SLCTIN y AUTOFD estn a nivel
alto, D1 no conduce y D2 y R1 proporcionan la polarizacin (pull-up). La
resistencia R2 mas la resistencia interna de la lnea AUTOFD (dentro del puerto del
PC normalmente 4.7k, auque a veces mucho menos en los nuevos puertos paralelos
CMOS) proporcionan algo de Pull-up adiciona. El PC lee la informacin atravs de la
lnea BUSY, que es 0.6V mayor que la salida del PIC debido al diodo D2. El puerto
paralelo del Pc tiene (o debera tener) entradas CMOS o Schmitt y no debera
necesitar verdaderos niveles lgicos TTL.R2 y R3 ayudan a reducir las
interferencias aislando la capacidad de entrada del PIC, de modo que circule menos
corriente durante transiciones bruscas.El PIC tiene entradas del tipo Schmitt, que
no impiden la reduccin del tiempo de subida (rise tiem). R4 proteje la base de Q1
El circuito original publicado en Electronics Now es suficientemente fiable. Sin
embargo, revisando una revista me encontre un circuito con algunas modificaciones,
me tome la molestia de armarlo y con la novedad de que funciona perfectamente y
aqui te lo muestro. Novedades del circuito, usa diodos 1n4148, transistores bc548 y
se omiten algunas resistencias .Para alimentar el circuito se requieren dos fuentes
de alimentacion reguladas una de 5 volts y una de 12 volts.# INCLUDEPICTURE
"http://www.romalo.250x.com/especiales/noppp/powersply.gif" \* MERGEFORMATINET ###
El software original para este programador esta desarrollado en c y funciona
perfectamente bajo una ventana de ms-dos, pero eso no es todo tambien hay una
version adaptada del noppp para windows que de igual manera ya la he probado y
funciona muy bien y aqui te las presento un mano a mano.# INCLUDEPICTURE
"http://www.romalo.250x.com/especiales/noppp/noppp_ms_dos.jpg" \* MERGEFORMATINET
#### INCLUDEPICTURE "http://www.romalo.250x.com/especiales/noppp/noppp_win.jpg" \*
MERGEFORMATINET ###El circuito. Este programador, basado en el Ludipipo,
est adaptado a la programacin de PICs, es simple y barato (2 euros), pero permite
programar a travs del puerto serie de cualquier PC de sobremesa (en los porttiles
da problemas) una cantidad nada despreciable de PICs distintos, y todo ello
utilizando software de programacin estndar, como ICPROG 1.4.Se ha probado con
xito a programar los siguientes PICs:16F627, 16F628.16C84, 16F83, 16F84.16F873,
16F874, 16F876, 16F877.18F242, 18F252, 18F258, 18F442, 18F452, 18F458. Y,
al menos en teora (no los he probado) debera funcionar correctamente con los
siguientes:16C62, 16C63, 16C64, 16C65, 16C66, 16C67.16C71, 16C72, 16C73, 16C74,
16C75, 16C76, 16C77, 16C715.16C620, 16C621, 16C622, 16C623, 16C624, 16C625.16F870,
16F871, 16F872.16C923, 16C924. Teniendo en cuenta el costo en tiempo y
dinero que requiere la construccin de este programador, no se puede pedir ms.
Sin entrar en detalles sobre el funcionamiento del circuito, decir slo
que se basa en principios muy parecidos a los del JDM2, pero con ciertos retoques
en la temporizacin y la estabilidad de las seales. En este caso, se utiliza como
alimentacin de +5V el condensador C2, que se carga mediante D2, D3 y D4 en los
momentos en que las seales DTR, RTS y TXD del puerto serie son negativas, y su
tensin queda estabilizada mediante D7. D5 fija la tensin de programacin en 12V y
D6 limita la tensin de la seal CLOCK a 5V.# HYPERLINK
"http://213.97.130.124/progs/pipo2/imggr/sch.GIF" \t "_top" ## INCLUDEPICTURE
"http://213.97.130.124/progs/pipo2/img/sch.GIF" \* MERGEFORMATINET ######Figura
3.1##Realizacin prctica. El diseo final aparece en la figura 3.2. El
trazado se ha hecho sobre un grid de una dcima de pulgada para que se pueda
construir sobre una placa board. La construccin de este circuito es bastante
simple, as que slo queda aclarar que el conector CON1 es de los que se utilizan
para fabricar cables serie, y se debe montar de forma que la placa encaje entre sus
dos filas de patitas, quedando cinco patitas en la cara de cobre y 4 en la cara de
componentes (ver figuras 3 y 4).# INCLUDEPICTURE
"http://213.97.130.124/progs/pipo2/img/compues.GIF" \* MERGEFORMATINET #####Figura
3.2### INCLUDEPICTURE "http://213.97.130.124/progs/pipo2/img/foto2.JPG" \*
MERGEFORMATINET #####Figura 3.3### INCLUDEPICTURE
"http://213.97.130.124/progs/pipo2/img/foto1.JPG" \* MERGEFORMATINET #####Figura
3.4## Para conectar el programador al PC har falta tambin un cable serie
transparente (cableado pin a pin) que tenga cableados al menos los pines que se
indican en la figura 3.5. Este cable se puede fabricar o comprarlo ya hecho (es el
tipo de cable que se utiliza para conectar un modem al PC).# INCLUDEPICTURE
"http://213.97.130.124/progs/pipo2/img/cserie.GIF" \* MERGEFORMATINET #####Figura
3.5## Utilizacin. Lo primero que hay que tener claro a la hora de
utilizar este programador es el orden en que se deben hacer las cosas para no
estropear ni el programador, ni el PIC, ni el puerto serie del PC. Siempre que
queramos insertar o extraer un PIC del zcalo hay que desconectar el programador
del puerto serie, ya que, al extraer la alimentacin del puerto serie, mientras
est conectado estar alimentado. Por tanto, el proceso a seguir consta de los
siguientes pasos:Con el programador desconectado insertar el PIC en el zcalo en la
posicin correcta (figura 6).Conectar el programador al cable que viene del puerto
serie del PC.Llevar a cabo las operaciones de grabacin o lectura necesarias.
Desconectar el programador del cable que viene del puerto serie del PC.Extraer el
PIC del zcalo.# INCLUDEPICTURE
"http://213.97.130.124/progs/pipo2/img/picpos.GIF" \* MERGEFORMATINET #####Figura
3.6## Como software de grabacin recomiendo ICPROG 1.05A, que ha sido
probado y funciona perfectamente con este programador. Se puede bajar de #
HYPERLINK "http://www.ic-prog.com/index1.htm" #su website#. Una vez instalado, en
el men SETTINGS OPTIONS, en la seccin LANGUAGE elegimos ESPAOL. A
continuacin, en el men AJUSTES escogemos TIPO HARDWARE (se puede hacer
directamente pulsando F3) y aparece la ventana de la figura 3.7. Todas las opciones
deben quedar como en la figura 3.7, salvo el puerto, en el que habr que marcar el
que hayamos utilizado, pulsando OK para finalizar.# INCLUDEPICTURE
"http://213.97.130.124/progs/pipo2/img/icprog.GIF" \* MERGEFORMATINET #####Figura
3.7## Existe una prestacin en este software que permite ver la posicin en
la que habra que insertar el PIC en el zcalo, pero slo es vlida para el JDM
original, as que no hagis caso de ella. Slo queda seleccionar el modelo de PIC
que
vamos a grabar o leer, y llevar a cabo las acciones deseadas. El programa trabaja
igual con ficheros .BIN .HEX. Para grabar un PIC, abrimos el fichero mediante el
men ARCHIVO y seleccionamos PROGRAMAR TODO en el men COMANDO (o pulsamos F5).
Para leer un PIC, seleccionamos LEER TODO en el men COMANDO (o pulsamos F8) y
luego podemos salvarlo a un fichero mediante el men ARCHIVO. En la pgina de
ICPROG hay instrucciones sobre el programa.PROGRAMADOR TIPO IN-CIRCUIT JDM
Presentamos ahora, el popular programador in-circuit, llamado JDM; que es
compatible con el popular programa para programar pics de la webb llamado #
HYPERLINK "http://www.geocities.com/un-2000/Icprog.zip" #IC-PROG#, este puede
programar el nuevo y economico procesador tipo pic 16F628 y ahora se esta usando
mucho, parece que rapidamente desplazara a su antecesor; PIC16F84A. Se dise sobre
un circuito impreso de 2x4 cm. con el programa tango.pcb, lo usaremos en nuestras
practicas del curso de procesadores y sera herramienta de desarrollo para el grupo
Mekatrun en la Universidad Nacional de Colombia. Apartir de aca, no usaremos mas el
popular programa Pony Prog por considerar JDM mucho mejor, sin embargo es
compatible con el programador in-circuit de pony-prog, ademas es mas pequeo
funciona mejor y hace un mejor uso de la energia del puerto serial de tu PC.Estas
son vistas del programador JDM tipo in-circuit tiene cinco pines que se insertan en
tu protoboard para programar cualquier PIC debes cablear los pines
VPP,VCC,GND,RB7,RB6. y !...............listo..................! # INCLUDEPICTURE
"http://www.geocities.com/un-2000/Jdm7.jpg" \* MERGEFORMATINET ### #
INCLUDEPICTURE "http://www.geocities.com/un-2000/Jdm6.jpg" \* MERGEFORMATINET ###
Para que el programa IC-PROG lo pueda detectar, se debe configurar el hardware asi
como muestra el grafico siguiente (invierte Vcc).#Se debe construir un cable para
el puerto serial, de la forma que muestra la figura siguiente; note que la
resistencia de 2.2K se ha instalado sobre el mismo conector; esto permite ahorrar
un hilo y poder usar un popular y economico cable telefonico de cuatro hilos, con
su respectivos conectores tipo RJ-11 para circuito impreso y cable.# INCLUDEPICTURE
"http://www.geocities.com/un-2000/JDM4.gif" \* MERGEFORMATINET ###Este es el diseo
electronico; en el se realizo una modificacion en algunas componentes del diseo
original, para mejorar su desempeo. los diodos 1N4148 se remplazaron por diodos
tipo shottky que presentan una caida de tension directa menor y se le puede robar
mas energa al puerto serial de su P.C.# INCLUDEPICTURE
"http://www.geocities.com/un-2000/JDM3.gif" \* MERGEFORMATINET ###
Dos transistores son 2N2222, Zener de 5.1/0.5W Zener de 8.2/0.5W Condensador de
100uF/16v y otro de 100uF/6.3v Resistencia de 10k y de 2.2k , 1/8W. Cuatro
diodos tipo shottky de pequea seal El circuito impreso presenta este aspecto y
asi como indica el grafico debe cablearse en el protoboard, te sirve para muchos
pics tipo flash o inclusive los que no lo son, si se cablean los cinco pines;
RB7,RB6,Vcc,Gnd,Vpp.# INCLUDEPICTURE "http://www.geocities.com/un-2000/JDM1.jpg" \*
MERGEFORMATINET ###Las uniones de superficie conectan pistas por el lado de las
soldaduras, las puedes obtener de unidades de diskette malas. o circuitos de
desecho que tengan componentes de montaje superficial.CAPITULO 4.- DESARROLLO DE
CIRCUITOSEn este capitulo abordaremos el tema del desarrollo de varios circuitos
prcticos basados en el uso del microcontrolador PIC16F84.4.1.- DESARROLLO DE UN
DETECTOR DE RUIDO DE ALTA FRECUENCIA DE BAJO COSTE BASADO EN EL MICROCONTROLADOR
PIC16F84.RUIDO DE ALTA FRECUENCIA.Seal no deseada presente en la onda de tensin
del terminal de alimentacin.Las frecuencias a las que afecta son superiores a la
del armnico 50 de la seal fundamental (2500 o 3000 Hz).CAUSAS:ASDs, PWMs,
convertidores y conmutadores de seal .Otros.EFECTOS:Errores de comunicacin y
control.Problemas con equipos sensibles: ordenadores, sensores, etc.OBJETIVO:
Disear y construir un detector de ruido de alta frecuencia que permita:Medir y
detectar una presencia de ruido de al menos el 40% de la seal fundamental.
Seleccionar el nivel de ruido mximo para realizar la deteccin.Seleccionar la
banda de frecuencias en la que se mide y detecta el ruido.DECISIONES:Seleccin de
las bandas de estudio:Filtro de capacidades conmutadas.Seleccin del umbral de
deteccin:Tensin de referencia ajustable. Presentacin de medida y modo de
trabajo:Pantalla de cristal lquido.##PARA EL HARDWARE USAREMOS:FILTRO MF10.-Filtro
de capacidades conmutadas de frecuencia de corte proporcional a la frecuencia de
reloj.Permite configuracin paso alto.Mximo 4 orden.Frecuencia mxima de corte
20kHz para una frecuencia mxima de reloj de 1MHz.Banda de trabajo mnima hasta
200kHz.Bajo precio.SELECCIN Y GENERACIN DE FRECUENCIAS.Seleccin mediante un
interruptor binario triple.Desestimacin del microcontrolador como generador.
Circuito oscilador con cristal e inversor.Subfrecuencias con contador y
multiplexor.Nota: Buffer de aislamiento.
CIRCUITO DE FRECUENCIA.-#FILTRADO.-Eliminamos las componentes de baja frecuencia:
configuracin paso alto.Su frecuencia de corte es proporcional a la frecuencia
seleccionada.Se disea con ganancia unidad para mantener el mayor ancho de banda
posible.Mximo orden (4) mediante dos etapas en cascada, para mayor pendiente de
cada.Butterworth para banda de paso mximamente plana.
UMBRAL.-Generacin mediante un divisor con un potencimetro variable.Seleccin de
precisin mediante un interruptor de dos posiciones:Rango hasta 20%.Rango hasta
50%.CONEXIONADO DEL MICROCONTROLADOR-#
PLACAS DE CIRCUITO IMPRESO.-##SOFTWARE.-EL PROGRAMA:Limitado a 1k de memoria.
Tareas:Controlar y leer el ADC.Leer la seleccin de frecuencia.Permitir y atender
la interrupcin.Tratar los datos.Controlar el LCD y mostrar los datos.
EL CIRCUITO Y UN EJEMPLO DE DETECCIN.-#LINEAS FUTURAS DE ACCION.-Bajar los lmites
de deteccin y eliminar el error para porcentajes de ruido menores del 8%:
Amplificacin antes de la conversin.Ganancia mayor de filtrado (menor ancho).
Adaptar para terminales trifsicos.Comunicacin con el PC.Mejorar prestaciones:
Filtro ms potente (LTC1068, LMF100).Microcontrolador ms avanzado (PIC16F87,...).
4.2.- DESARROLLO DE UN CIRCUITO PARA PWMEn esta seccin hablaremos sobre PWM y sus
antecedentes bsicos para una mejor comprensin.Con PAM, las muestras de una seal
mensaje son utilizadas para modular la amplitud de un tren de pulsos. El resultado
es una seal consistente en pulsos de ancho constante regularmente espaciados,
cuyas amplitudes varan en proporcin a la seal mensaje. (Figura 1(a)).Otro tipo
de modulacin de pulsos es la modulacin por tiempo de pulsos (PTM). Con PTM, las
muestras de la seal mensaje son utilizadas para variar un parmetro de la
sincronizacin de los pulsos (un parmetro directamente relacionado con el tiempo,
tal como la duracin o la posicin de los pulsos).Un parmetro de tiempo que puede
variarse es la duracin o ancho del pulso. Con PWM (o PDM) las muestras de la seal
mensaje son utilizadas para modular el ancho o duracin del pulso. El resultado es
la seal consistente de pulsos de amplitud constante cuyo ancho varia en proporcin
a la seal mensaje (ver Figura 1(b)). PWM tambin es llamada modulacin por
duracin de pulsos: PDM.# INCLUDEPICTURE
"http://atenea.unicauca.edu.co/~vflorez/labsistel/flash1/figura1.jpg" \*
MERGEFORMATINET ###La posicin de los pulsos es otro parmetro de tiempo que puede
ser utilizado en PTM. Con PPM, las muestras de la seal mensaje se utilizan para
modular las posiciones de pulsos de ancho y amplitud constantes (ver Figura 1(c)).
PWM y PPM estn estrechamente relacionadas. Las seales PPM son usualmente
generadas a partir de seales PWM como lo muestra la Figura 1(b) y (c).La seales
PTM tienen algunas caractersticas en comn con seales PAM. Ambas requieren que la
tasa de muestreo sea ms grande que la tasa Nyquist. Aunque los espectros de
seales PTM son complejos, estos contienen el espectro de la seal mensaje origina,
tal como las seales PAM.Sin embargo, hay importantes diferencias entre seales PTM
y seales PAM. La informacin en las seales PTM es llevada en el sincronismo de
los pulsos (en las posiciones de los flancos de los pulsos), en lugar de las
amplitudes como en PAM. Cuando el ancho de banda de canal es grande, los flancos de
los pulsos son casi verticales. Como resultado de esto, las seales PTM son menos
sensitivas al ruido que las seales PAM. Reduciendo el ancho de banda del canal se
incrementa el tiempo de subida (Tr) de los pulsos y el ruido tiene efecto en la
precisin del sincronismo de los pulsos.PWM se utiliza a menudo donde se requiere
un control remoto proporcional a una posicin. El valor promedio de seales PWM
varia directamente con la seal mensaje y puede, por ejemplo, ser usado para
controlar la velocidad de un motor.Debido a que los pulsos en seales PPM pueden
ser muy estrechos, y por lo tanto se requiere muy baja potencia para transmitirlos,
la transmisin PPM puede ser muy eficiente. PPM es frecuentemente utilizada en
sistemas pticos de comunicacin.La Figura 2 muestra la forma de generar seales
PWM y PPT. La Figura 2 (b) muestra las formas de onda en el generador PWM/PPM.La
seal mensaje es comparada con una seal rampa (seal de muestreo) para producir la
salida PWM. Si el nivel de voltaje de la seal mensaje es mayor que el de la seal
rampa, la salida del comparador es alta (TTL, 5V). Si la seal mensaje es menor que
la seal rampa, la salida del comparador es baja (TTL, 0V). La salida del
comparador es por tanto una seal PWM, puesto que el ancho de los pulsos depende
del nivel de la seal mensaje.La seal PWM es aplicada a un circuito generador de
pulsos, el cual general un pulso de ancho y amplitud fijos con cada flanco de cada
de los pulsos de la seal PWM. La salida del generador de pulsos es por tanto la
seal PPM, puesto que la posicin de los pulsos con respecto a una seal de reloj
(una seal cuadrada de igual frecuencia que la seal rampa) depende del nivel de la
seal mensaje.# INCLUDEPICTURE
"http://atenea.unicauca.edu.co/~vflorez/labsistel/flash1/figura2.jpg" \*
MERGEFORMATINET ###Tanto PWM como PPM pueden ser demoduladas directamente
utilizando un filtro pasabajo, como se muestra en la Figura 3 (a). Sin embargo, el
filtro es incapaz de detectar el sincronismo de los pulsos y por lo tanto promedia
la seal con ruido incluido, para demodularla. Por lo tanto, antes del filtrar se
suele utilizar un limitador que reconstruye los pulsos; as la demodulacin es ms
eficaz (ver Figura 3(b)).Las seales PPM demoduladas slo por filtrado pasabajo,
pueden producir una seal reconstruida de muy baja amplitud, si los pulsos son muy
estrechos.Por tanto, se suele recuperar el sincronismo antes del filtrado, como se
ve en la Figura 3(c). El biestable (FLIP-FLOP) entrega una seal PWM la cual es
demodulada segn se dijo anteriormente.# INCLUDEPICTURE
"http://atenea.unicauca.edu.co/~vflorez/labsistel/flash1/figura3.jpg" \*
MERGEFORMATINET ###
La Figura 4, finalmente muestra las seales en un receptor PPM.# INCLUDEPICTURE
"http://atenea.unicauca.edu.co/~vflorez/labsistel/flash1/figura4.jpg" \*
MERGEFORMATINET ###4.3.- PROYECTOS CON EL PIC 16F84Si bien el clsico de todos los
tiempos es el PONG, el TETRIS es clsico, pero es contemporneo al mismo tiempo.
Hoy da se lo puede encontrar en versiones 3D para potentes PC's, versiones para
Macintosh, reducidas versiones para Palm Pilots e incluso en sistemas del tipo
GameBoy. Todo un pionero de la multiplataforma.# INCLUDEPICTURE
"http://www.pablin.com.ar/electron/circuito/mc/tetris/tetris.jpg" \*
MERGEFORMATINET ###El juego funciona en un PIC16F84 a 12MHz, generando el vdeo en
tiempo real con slo dos resistencias. La nica diferencia electrnica, comparado
con el PONG, es que PONG puede correr en un C PIC16C84, pero TETRIS requiere mas
memoria RAM (68 bytes, adicionales a los disponibles) por lo que slo funciona en
un C PIC16F84. EL circuito electrnico en si es el mismo, por lo que puede
emplearse la misma placa que para el PONG. El joystick 2 no actual en este juego.El
juego es muy simple. Es posible desplazar el bloque hacia los costados usando para
ello las teclas IZQUIERDA y DERECHA, puede hacer caer el bloque bruscamente
presionando la tecla ABAJO. Presionando el botn FUEGO har rotar el bloque. Los
bloques estn cayendo todo el tiempo, primero parece lento, pero, mientras pasa el
tiempo de juego, la velocidad de cada de los bloques se acelera. Y la msica se
acelera al ritmo de los bloques, SI!!!, escucho bien, hay msica en el juego !,
pero no espere gran cosa, porque no hay tanto tiempo de CPU para dedicar al sonido.
Un amigo, Carl Henrik Grunditz, me ha ayudado mucho con el audio del juego.
Actualmente l est pensando hacer el juego "Boulder Dash" con la misma electrnica
del tetris y el pong. La msica es una vieja meloda Rusa llamada "Karaboschka",
que es una de las que sonaban en el tetris del gameboy.El puntaje es mostrado en el
ngulo inferior derecho de la pantalla, y el prximo bloque que vendr se ve en el
ngulo superior izquierdo. Slo es posible obtener 999 puntos, luego de ello el
juego termina. Es posible que hayan algunos "bugs" en el sistema, pero los iremos
corrigiendo al tiempo.list p=16F84,r=hexw equ 0f equ 1pcl
equ 0x02status equ 0x03porta equ 0x05portb equ
0x06indf equ 0x00fsr equ 0x04eedata equ 0x08
eeadr equ 0x09eecon1 equ 0x08rd equ 0rp0 equ
5startspeed equ 0x18movespeed equ 0x06up1b equ 3down1b
equ 2left1b equ 5right1b equ 4fire1b equ
1up2b equ 7down2b equ 6left2b equ 2right2b
equ 3fire2b equ 1up1p equ portbdown1p equ portb
left1p equ portbright1p equ portbfire1p equ portb
up2p equ portbdown2p equ portbleft2p equ portaright2p
equ portafire2p equ portacounter0 equ 0x0Ccounter1 equ
0x0Dcounter2 equ 0x0Ecounter3 equ 0x0Fnextblocktyp equ 0x10
blockx equ 0x11blocky equ 0x12blocktyp equ 0x13line
equ 0x14x equ 0x15y equ 0x16delaycnt equ 0x17angle
equ 0x18blockstuff equ 0x19fallcnt equ 0x1Apoints equ
0x1Brandom equ 0x1E stuff equ 0x1Fm_freq equ 0x20
m_cnt equ 0x21m_songcnt equ 0x22 buffer equ 0x24currbl
equ 0x44x0 equ 0x4Cy0 equ 0x4Dmovecnt equ
0x4Eremline equ 0x4Fhsfall equ 0rotate equ 1
goleft equ 2goright equ 3drop equ 4rotat
equ 5gameover equ 5delay MACRO LOCAL label movwf
delaycntlabel decfsz delaycnt goto label ENDM
dnop MACRO LOCAL labellabel goto label+1 ENDM
org 0x000 goto inittetris;------------ This table contains the 3 note
lengthes for the 5 speeds --------getlength addwf pcl retlw 0x0B
retlw 0x16 retlw 0x1D retlw 0x09 retlw 0x12 retlw
0x19 retlw 0x07 retlw 0x0D retlw 0x11 retlw 0x04
retlw 0x08 retlw 0x0C retlw 0x02 retlw 0x04 retlw
0x06;------------------------ set bit in the gamefield
----------------------------setbit call getbit ;get bitbyte and bitmask
20 cycles iorwf indf ;set bit return
;----------------------- clear bit in the gamefield ---------------------------
clrbit call getbit ;get bitbyte and bitmask 21 cycles
xorlw 0xff ;invert bitmask andwf indf ;clear bit
return;-------------------- point at byte, and return bitmask
-----------------------getbit movlw buffer ;15 cycles btfsc x,3
movlw buffer+1 clrc rlf y addwf y,w movwf
fsr ;fsr = 2*y + x<Contador de 4 dgitos con PICQuizs una de
las aplicaciones mas usual para un micro controlador sea la elaboracin de un
contador de turnos o de personas atendidas. En este caso decidimos disear un
circuito que requiera la menor cantidad posible de componentes y que cumpla con las
prestaciones tpicas de estas aplicaciones.# INCLUDEPICTURE
"http://www.pablin.com.ar/electron/circuito/mc/contador/circuito.gif" \*
MERGEFORMATINET ###Como se ve en el diagrama el circuito est estructurado
alrededor del PICmicro el cual en su interior lleva la cuenta de las pulsaciones
sobre el pulsador 'I' y, a su vez, genera los dgitos a ser mostrados sobre los
displays de 7 segmentos de LED's.Para reducir la cantidad de circuitos integrados
a slo uno hemos optado por generar los dgitos por soft dentro del mismo micro,
evitando as tener que recurrir a decodificadores de BCD, que si bien no
representan costo alguno para adquirirlos, el hecho de colocarlos en el circuito
impreso implica mayor tamao, mayor cantidad de pistas y perforaciones.El
funcionamiento es por dems simple. Los cuatro dgitos del display se encuentran en
paralelo. Esto significa que el segmento A del primero est cableado junto con el
del segundo, el tercero y el cuarto. Y lo mismo sucede con los dems segmentos.
Para que no se encienda sobre los cuatro dgitos el mismo nmero se multiplexa el
encendido por medio de los cuatro transistores. Para que el display se ilumine no
solo tiene que haber un uno lgico en el segmento a encender, sino que tambin se
requiere que el transistor este en conduccin para lograr la masa. De esta forma,
conmutando los transistores secuencialmente y a velocidad suficiente se logra hacer
parecer al ojo humano que los cuatro displays estn iluminados simultneamente,
cuando en realidad slo uno se ilumina por vez. Por ejemplo, para hacer aparecer en
los displays la secuencia 1 2 3 4 habra que hacer la siguiente rutina:Generar el
dgito 1 Encender el primer display Generar el dgito 2 Encender el segundo display
Generar el dgito 3 Encender el tercer display Generar el dgito 4 Encender el
cuarto display Repetir la secuencia a velocidad suficiente. Esto es el concepto
bsico. Para entender mejor el sistema ser necesario consultar el archivo en
assembler que contiene el cdigo fuente del programa a cargar en el micro, que lo
puede obtener del link de mas abajo.Para evitar que la velocidad del micro haga
avanzar el conteo a mas de una unidad por pulsacin se ha implementado un retardo
de 100mS luego de la pulsacin del interruptor marcado como 'I'. Si se quiere hacer
avanzar el conteo hasta una posicin no es necesario presionar y soltar el pulsador
repetitivamente, bastar con mantenerlo presionado y el conteo avanzar
rpidamente. Para volver la cuenta a cero basta con resetear el micro, presionando
la tecla marcada como 'R'.Si bien nosotros empleamos un cristal de 4MHz para el
generador de reloj, tambin se puede emplear una red RC, porque en este proyecto no
se requiere gran precisin de clock. Los transistores pueden ser reemplazados sin
problema por cualquiera de uso general como el BC548 o similar.Los displays
utilizados son de LED's con ctodo comn. Se pueden emplear displays pequeos y
medianos sin problema. Para el uso de displays grandes deber emplear algn driver
de corriente como el ULN2803A o similar. La alimentacin puede ser tanto 5 como 6
voltios. No se requiere que est estabilizada y se puede emplear un adaptador
universal, siempre que sea de calidad aceptable. La corriente requerida es de
300mA. ;Contador de 4 digitos.indo equ 00h ;registro de
indireccionpc equ 02h ;contador de programastatus equ 03h
;registro de estadofsr equ 04h ;registro de seleccionptoa
equ 05h ;puerto aptob equ 06h ;puerto brota
equ 0fh ;variable para desplazamiento de displaytrisa equ 85h
;configuracion puerto atrisb equ 86h ;configuracion puerto bdig1
equ 10h ;acumulador milesdig2 equ 11h
;acumulador centenasdig3 equ 12h ;acumulador decenasdig4 equ
13h ;acumulador unidadesloops equ 1dh ;variables
usadas en retardosloops2 equ 1ehz equ 02h ;flag de cero
ram equ 05h ;bit de seleccion de pagina de memoriac equ
00h ;flag de acarreow equ 00h ;bit de destino a
variable de trabajoreset org 00 goto inicio org 05h
retardo ;subrutina de retardo movwf loops
;la variable de trabajo contiene la cant.top2 movlw d'110' ;de ms a
demorar movwf loops2top nop nop nop nop
nop nop decfsz loops2 ;controla si termina 1mS goto
top decfsz loops ;controla si termina el retardo completo
goto top2 retlw 0s1000 ;rutina de incremento
x 1000 clrf dig2 ;pone a cero las centenas incf dig1
;incrementa el contador de miles movf dig1, w ;carga en work
el conteo de los miles xorlw 0ah ;si work era
10, entonces quedara en cero btfsc status, z ;si es cero, el flag z
queda alto clrf dig1 ;inicializa los miles return
s100 ;rutina de incremento x 100 clrf dig3
;pone a cero las decenas incf dig2 ;incrementa el contador de
centenas movf dig2, w ;carga en work el conteo de las centenas
xorlw 0ah ;si work era 10, entonces quedara en cero btfsc
status, z ;si es cero, el flag z queda alto call s1000
;incrementa los miles returns10 ;rutina de
incremento x 10 clrf dig4 ;pone a cero las unidades
incf dig3 ;incrementa el contador de decenas movf dig3, w
;carga en work el conteo de las decenas xorlw 0ah ;si work era
10, entonces quedara en cero btfsc status, z ;si es cero, el flag z
queda alto call s100 ;incrementa las centenas return
subir ;rutina de incremento incf dig4
;incrementa el contador de unidades movf dig4, w ;carga en work
el conteo de las unidades xorlw 0ah ;si work era 10, entonces
quedara en cero btfsc status, z ;si es cero, el flag z queda alto
call s10 ;incrementa las decenas movlw d'250'
;retardo de 100ms call retardo returntabla
;genera los numeros sobre el display addwf pc ;agrega al
cont. programa el valor de work retlw b'00111111' ;genera el 0
retlw b'00011000' ;genera el 1 retlw b'01110110' ;genera el 2
retlw b'01111100' ;genera el 3 retlw b'01011001' ;genera el 4
retlw b'01101101' ;genera el 5 retlw b'01101111' ;genera el 6
retlw b'00111000' ;genera el 7 retlw b'01111111' ;genera el 8
retlw b'01111101' ;genera el 9inicio ;programa
principal bsf status, ram ;selecciona el banco de memoria alto
movlw b'00010000' ;configura el puerto a movwf trisa ;bit
4 entrada, demas bits salidas. movlw 00h ;configura el puerto
b movwf trisb ;como salidas bcf status, ram
;selecciona el banco de memoria bajo clrf dig1 ;inicializa
acumuladores clrf dig2 clrf dig3 clrf dig4
movlw 00 ;envia ceros a los transistores para apagar movwf
ptoa ;todos los displaysempe btfss ptoa, 4 ;chequea el
pulsador call subir ;llama la rutina de incremento movlw
08h ;iniciar un 1 en el registro de rotacion movwf rota
movlw dig1 ;con el registro selector (fsr) se apunta
movwf fsr ;al primer dato que se va a mostrardisp movlw 00h
;colocar en cero el dato del display movwf ptob ;para apagarlos
movf rota, w ;pasa rotacion del 1 a la variable work movwf ptoa
;enciende el transistor (display) movf indo, w ;lee el dato del
registro apuntado por fsr call tabla ;genera el digito de 7
segmentos movwf ptob ;envia el digito al puerto b movlw
03h ;retardo de 3ms para visualizacion call retardo
btfsc rota, 0 ;controla si terminaron las cuatro rotaciones goto
empe ;si termino, vuelve desde el comienzo bcf status, c
;carry en cero para no afectar las rotaciones rrf rota
;desplaza el 1 que enciende los displays incf fsr ;incrementa
el puntero. Apunta el proximo goto disp ;digito a mostrar
end#####PAGE ##PAGE #11#Unidad de Procesamiento CentralMemoriaPrincipalEntrada
Salida(b)(a)Figura 1-1. Componentes principales (a) Cmputo humano (b) Cmputo
de una mquina.Figura 1-2. Arquitectura Von Neumann.Figura 1-3. Componentes del
procesador. Figura 1-4. Unidad de control (a) Cableado (hardwired) (b)
Microprogramado.(b)(a)CdigoOPOperando 1Operando 2ResultadoFigura 1-5. Campos de
una instruccin.Figura 1-6. Arquitectura simplificada propuesta por Von Neumann.
Figura 1-7. Arquitectura de una computadora CISC.Figura 1-8. Arquitectura que
utiliza memoria cach.Figura 1-9. Arquitectura bsica de computadoras RISC.Tabla
1-1. Caractersticas principales de las computadoras es las distintas
generaciones.Tabla 2-1. Instruccin aritmtica-lgica15 12 11
8 7 4 3 0 op rf1 rf2
rd op registro direccin15 12 11 8 7
0 op xxxx desplazamiento15 12 11 8 7
0 op d i r e c c i n15 12 11
015 12 11 8 7 4 3 0 op
rf1 rf2 rd R e g i s t r oFigura 2-1. Modo de
direccionamiento de registro op registro direccin15
12 11 8 7 0Memoria R e g. P a g.11
8 7 0Figura 2-2. Modo de direccionamiento de
pgina op xxxx desplazamiento15 12 11 8
7 0 P C+MemoriaFigura 2-3. Modo
de direccionamiento relativo al PCPCMemroirade InstruccionesAddIncremento
InstruccinFigura 2-4. Datapath para la bsqueda de instruccin.DireccionPCPC_E
clk_PCDireccion_PCresetmodule PC(clk_PC, reset, direccion, PC_E, direccion_PC);
input clk_PC, PC_E, reset;input [11:0] direccion;output [11:0] direccion_PC;reg
[11:0] direccion_PC;always @(posedge clk_PC)begin if(reset) direccion_PC =
12'b000000000000; else if (PC_E) direccion_PC = direccion;endendmoduleFigura 2-
5. Cdigo Verilog y Diagrama del Contador de programa PC.module Memo_Instr (pc,
rst, instruccion);input [11:0] pc ;input rst;output [15:0] instruccion ;reg [15:0]
instruccion ;always @(pc) begin if (rst) instruccion = 16'b0; else begin
case (pc) 12'b000000000000 : instruccion = 16'b0111000000001100 ;
12'b000000000001 : instruccion = 16'b1100001100100000 ; 12'b000000000010 :
instruccion = 16'b1110010001010001 ; . . . endcase endendendmodule
MemoriaDe InstruccionespcrstInstruccionFigura 2-6. Cdigo Verilog y Diagrama de
la Memoria de Instrucciones.module sumador_PC(dir_PC, PC_incrementado);parameter
INC=1'b1;input [11:0] dir_PC;output [11:0] PC_incrementado;assign PC_incrementado
= dir_PC + INC ; endmoduleSumadorPCINCdir_PCPCincrementadoFigura 2-7. Cdigo
Verilog y Diagrama del Sumador.Banco deRegistrosEscRegReg1EscDatoALUescribirReg2
ResultadooperacionFigura 2-8. Diagrama del datapath de Instrucciones aritmtico-
lgicas.module Registros (clk, rst, we, wr, r1, r2, wd, d1, d2);input clk,
rst;...output [15:0] d1;...reg [15:0] ram [15:0];always @(posedge clk or posedge
rst) begin if (rst) begin ram[0] <= 5; ram[1] <= 1;
....... ram[14] <= 14; ram[15] <= 15; endend assign d1 =
ram[r1]; assign d2 = ram[r2];endmoduleBanco deRegistroswrd1r1r2wdd2weFigura 2-9.
Cdigo Verilog y diagrama del Banco de registros.module ALU(ctrl_ALU, A, B,
c_en, c_sal, cero, R);input [2:0] ctrl_ALU;input [15:0] A, B;input c_en;
output c_sal, cero;output [15:0] R;reg [15:0] Raux, R;........always
@( ctrl_ALU or A or B or c_en) begin case (ctrl_ALU) suma: begin
{c_sal,R} = A + B + c_en; cero = (R == 1'b0) ? 1'b1: 1'b0; end
resta: begin {c_sal,Raux} = A - B - c_en; if (c_sal == 1) R=(~Raux)+1;
else R=Raux; cero = (R == 1'b0) ? 1'b1: 1'b0; end op_and:
begin R = A & B; c_sal = 1'b0; cero = 1'b0; end ....... endcase
end endmoduleALUABRc_salc_enctrl_ALU c_enFigura 2-
10. Cdigo Verilog y Diagrama de la ALUBanco deRegistrosEscRegReg1EscDatoescribir
Reg2DatoDireccionMemoria de datosPginaFigura 2-11. Diagrama del datapath para
ejecutar instrucciones de toma de decisiones.module
Memo_Datos(clk, rst_memo, esc_memo, dir, dato_e, dato_s);input [15:0] dato_e;....
output [15:0] dato_s;reg [15:0] ram[31:0];always @(posedge clk or posedge rst_memo)
begin if (rst_memo) begin ram [0] <= 1; ram [1] <= 2; ram [2]
<= 3; .... ram[30] <= 31; ram[31] <= 31; end else if
(esc_memo) ram [dir] <= dato_e; endassign dato_s = ram[dir];endmoduleMemoriade
Datosdato_erst_memodato_sdirclkesc_memoFigura 2-12. Cdigo Verilog y diagrama de la
memoria de datos.module Pagina (pag_E,, pag, s_Pag);input pag_E;input [3:0] pag;
output [3:0] s_Pag;assign s_Pag = pag_E ? pag : 0;endmodulePaginapag_Es_PagFigura
2-13. Cdigo Verilog y diagrama del registro de pgina.# EMBED PBrush #### EMBED
Unknown #### EMBED Unknown ###
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
##################!###"###%###[###\###]###`###################### ##
##Z ##] ##^ ##_ ##q ## ## ## ##
##pppbpbM####################(#h####h#&P#CJ##OJ##QJ##^J##aJ##mH
#sH
####h####h#&P#5#OJ##QJ##^J####h####h#&P#5#OJ##PJ##QJ##^J####h####h#&P#OJ##PJ##
QJ##^J###"#h####h#&P#5#OJ##PJ##QJ##\#^J###
#h####h#&P#CJ##OJ##QJ##^J##aJ###<#j#####h####h#&P#CJ##OJ##QJ##U##^J##aJ##mH##nH##
sH
#tH
#u###7#j#####h####h#&P#5#CJ##OJ##QJ##U##^J##aJ##mH##nH##u####h####h#&P#5#CJ##OJ
##QJ##^J##aJ############!#######$###
%###Z###[###\###^###_###`###########################################
## ## ##C

############################################################################
#############################################################################
#############################################################################
############################################################################
###############################################$#a$######$#a$#######-
##S##########################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
#########C ##Z ##[ ##\ ##] ##^ ##_ ##q ## ## ## ## ##
## ## ## ## ## ## ## ##'
##P
##Q
##a
##b
##
############################################################################
#############################################################################
#############################################################################
#########################################################################
###$#If####gd<I######$#a$#gd<I############}
#gd<I######$#a$##########$#a$### ## ## ##
##5###N###R############7
##?
##
##
##
##
##p[pI;0I###################h#&P#5#OJ##QJ##^J####h6##h#&P#5#OJ##QJ##^J##
##h6##h#&P#5#CJ##OJ##QJ##^J##aJ##)#h####h#&P#B*#CJ##OJ##QJ##^J##aJ##ph####
#h####h#&P#CJ##OJ##QJ##^J##aJ#####h####h#&P#5#CJ##OJ##QJ##^J##aJ##'#h####h#&P#5
#CJ##OJ##PJ##QJ##^J##aJ####h####h#&P#5#OJ##PJ##QJ##^J##2#h####h#&P#5#B*#CJ##OJ
##QJ##\#]#^J##aJ##ph#######h####h#&P#5#CJ(#OJ##QJ##^J##aJ(#8#h####h#&P#5#6#>
*#B*#CJ##OJ##QJ##\#]#^J##aJ##ph#####
##
##
##
##
##
######5###O###P###Q###R###v#################################################
#############################################################################
########################################################################$#a$#g
d<I######$#a$#Q##kd#####$##$#If#####F##0####"##############################
########
t########6#####################################4#######4###
#l#a### ###$#If####gd<I########$#If####gd<I#
###$#If####gd<I############7
##8
##L
##a
##
##
##
##
##
##
########:##;
#################p###q###r################################################
############################################################################
#############################################################################
#############################################################################
############################
###$##dh###a$#gd<I##########gd<I#######^#gd<I####
&##F$#gd<I#####gd<I###
##
##
##
##
##
##
##
#####;##############q######u###v############|
kXkG=G####################h<I#OJ##QJ##^J###!
#j#####h####h#&P#OJ##QJ##U##^J##$#h####h#&P#5#B*#OJ##QJ##^J##ph#####!
#h####h#&P#B*#OJ##QJ##^J##ph#### #h####h#&P#OJ##QJ##^J##mH
#sH
####h####h#&P#5#OJ##QJ##^J##mH
#sH
#&#h####h#&P#5#>*#OJ##QJ##^J##mH
#sH
####h####h#&P#OJ##QJ##^J#####h#&P#CJ##OJ##QJ##^J##aJ###
#h####h#&P#CJ##OJ##QJ##^J##aJ#####h6##h#&P#5#CJ##OJ##QJ##^J##aJ####h6##h#&P#5
#OJ##QJ##^J####r#########u##################.###/######V###W#########k##
#l########################### ##
############################################################################
#############################################################################
#############################################################################
############################################################################
########################
###$##dh###a$#gd<I##
###$##dh###a$#gd<I########################.###/###0##################
######U###yl[lF2###########&#h####h#&P#6#OJ##QJ##^J##h##mH
#sH
##)#h####h#&P#5#6#OJ##QJ##^J##h##mH
#sH
#!
#jh####h####h#&P#OJ##QJ##U##^J####h####h#&P#OJ##QJ##^J#####h<I#OJ##QJ##^J###,#h#
###h#&P#B*#OJ##QJ##^J##h##mH
#ph####sH
##/#h####h#&P#6#B*#OJ##QJ##^J##h##mH
#ph####sH
#2#h####h#&P#5#6#B*#OJ##QJ##^J##h##mH
#ph####sH
##!#h####h#&P#B*#OJ##QJ##^J##ph####!#j#####h####h#&P#OJ##QJ##U##^J##!
#j####h####h#&P#OJ##QJ##U##^J####U###V###W###X#########k##################
###V###Z###)!##4!##s$##t$##$##.##.##.##31##weTJ<J###hw
###h#&P#5#OJ##QJ##^J####h#&P#OJ##QJ##^J###!
#h@`Z##h#&P#B*#OJ##QJ##^J##ph######h@`Z##h#&P#5#OJ##QJ##^J##mH
#sH
# #h####h#&P#OJ##QJ##^J##mH
#sH
##&#h####h#&P#5#OJ##QJ##^J##h##mH
#sH
####h####h#&P#OJ##QJ##^J##h##mH
#sH
#$#h####h#&P#5#B*#OJ##QJ##^J##ph#####!
#h####h#&P#B*#OJ##QJ##^J##ph######h####h#&P#OJ##QJ##^J#####h####h#&P#5#OJ##QJ##
^J##$#h####h#&P#6#B*#OJ##QJ##^J##ph##### ##!##!## ###!
###s$##~$##$##&##&##'##'##Z+##\+## -##
-##-##-
##.##.##.##31##41##2###3##################################################
#############################################################################
#############################################################################
############################################################################
###################
###$##dh###a$#gd<I######$##7##dh###`7#a$#gd<I######dh###gd<I##
###$##dh###a$#gd<I###31##41##2##2##2##2##2##2###3###3###3###3###3###3###3##P
3##T3##i3##m3##3##3##3##3##p^o^L;;;####
#h#^H##h#&P#CJ##OJ##QJ##^J##aJ#####h#^H##h#&P#5#CJ##OJ##QJ##^J##aJ## #h
#[##h#&P#CJ##OJ##QJ##^J##aJ#####h #[##h#&P#5#CJ##OJ##QJ##^J##aJ####h
#[##h#&P#5#OJ##QJ##^J####h#&P#5#CJ #OJ##QJ##^J##aJ ###hDH##h#&P#5#CJ
#OJ##QJ##^J##aJ # #h=y##h#&P#CJ #OJ##QJ##^J##aJ
####h#&P#OJ##QJ##^J#####h#&P#B*#OJ##QJ##^J##ph####!
#h#k##h#&P#B*#OJ##QJ##^J##ph####*#h####h#&P#5#B*#OJ##QJ##\#]#^J##ph######3###3
###3###3###3###3###3##########################################################
####<###########################S##kd####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a####S##kdQ####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I####3##P3##S3##T3##i3##l3##m3#############################
#################################<###########################S##kd#####$##$#If###
##F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a####S##kdu####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I###m3##3##3##3##3##3##3#############################
#################################<###########################S##kd+####$##$#If###
##F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a####S##kd####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I###3##3##3##3##3##3##3#############################
#################################<###########################S##kdO####$##$#If###
##F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a####S##kd####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I###3##3##3##3##3##3##+4##/4##j4##k4##l4##p4##4##4##4
##4##4##4##4##4###5###5###5##!
5##[5##\5##`5##5##5##5###6###6###6##A6##B6##C6##E6##G6##
n############################### #h###h#&P#OJ##QJ##^J##mH #sH
####h#&P#OJ##QJ##^J##mH #sH ##"#h#&P#CJ##OJ##QJ##^J##aJ##mH #sH
##(#h###h#&P#CJ##OJ##QJ##^J##aJ##mH #sH
####h#&P#CJ##OJ##QJ##^J##aJ#####h###h#&P#5#CJ##OJ##QJ##^J##aJ## #h
#[##h#&P#CJ##OJ##QJ##^J##aJ#####h#&P#OJ##QJ##^J### #h#^H##h#&P#CJ##OJ##QJ##^J##aJ##
%3##3##3##3##+4##.4##/4###################################################
###########<###########################S##kds ###$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a####S##kd####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I###/4##l4##o4##p4##4##4##4#############################
#################################<###########################S##kd
###$##$#If#####F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a####S##kd#
###$##$#If#####F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I###4##4##4##4##4###5###5#############################
#################################<###########################S##kd####$##$#If###
##F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a####S##kd)####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I####5###5## 5##!
5##\5##_5##`5##############################################################<##
#########################S##kd
###$##$#If#####F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a####S##kdM
###$##$#If#####F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I###`5##5##5##5##5###6###6#############################
################################################################################
###################################################################################
######################################$##dh####$#If####a$#gd<I##S##kdq
###$##$#If#####F##0##X "## #################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I####6###6##C6##F6##G6##6##6#############################
#########<###################################################S##kd####$##$#If###
##F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I##S##kd ####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a#####G6##6##6##6##6##6##6##6##6##6##6##6###7###7##O7##7##7##7##
7##7##7##7##7##7##7##7##7##7##
tttteS#############################hDH##h#&P#5#CJ##OJ##QJ##^J##aJ####h#&
P#5#CJ##OJ##QJ##^J##aJ## #hlC###h#&P#CJ##OJ##QJ##^J##aJ###
#hDH##h#&P#CJ##OJ##QJ##^J##aJ#####hlC###h#&P#5#CJ##OJ##QJ##^J##aJ## #h
#[##h#&P#CJ##OJ##QJ##^J##aJ###
#h###h#&P#CJ##OJ##QJ##^J##aJ#####h#&P#CJ##OJ##QJ##^J##aJ#####h###h#&P#OJ##QJ##^
J#####h#&P#OJ##QJ##^J### #h
#[##h#&P#CJ##OJ##QJ##^J##aJ###6##6##6##6##6##6##6#########################
#############<###################################################S##kd####$##$#
If#####F##0##X "## ##################N#################
t########6#########################################4#######4###
#l#a#######$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I##S##kd-####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a#####6##6##6##6########################################################
###################################################################################
###################################################################################
#####################################################$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I##S##kdQ####$##$#If#####F##0##X "##
##################N#################
t########6#########################################4#######4###
#l#a#####6##6##6##6##############x############i##############################
###################################################################################
##########################################################$##dh####$#If####a$#gd<I
#
###dh####$#If####gd<I##z##kd####$##$#If#####F############################0##
X "## ##N#
t####0###############################################6###########
######4#######4###
#l#a#####6##6###7###7##############x############i##############################
###################################################################################
##########################################################$##dh####$#If####a$#gd<I
#
###dh####$#If####gd<I##z##kdP####$##$#If#####F############################0##
X "## ##N#
t####0###############################################6###########
######4#######4###
#l#a######7###7##Y7##7##7##############x############x############i#############
###################################################################################
##########################################################$##dh####$#If####a$#gd<I
#
###dh####$#If####gd<I##z##kd####$##$#If#####F############################0##
X "## ##N#
t####0###############################################6###########
######4#######4###
#l#a#####7##7##7##7##############x############i##############################
###################################################################################
##########################################################$##dh####$#If####a$#gd<I
#
###dh####$#If####gd<I##z##kd*####$##$#If#####F############################0##
X "## ##N#
t####0###############################################6###########
######4#######4###
#l#a#####7##7##7##7##############x############i##############################
###################################################################################
##########################################################$##dh####$#If####a$#gd<I
#
###dh####$#If####gd<I##z##kd####$##$#If#####F############################0##
X "## ##N#
t####0###############################################6###########
######4#######4###
#l#a#####7##7##7##7##############x############i##############################
###################################################################################
##########################################################$##dh####$#If####a$#gd<I
#
###dh####$#If####gd<I##z##kd#####$##$#If#####F############################0##
X "## ##N#
t####0###############################################6###########
######4#######4###
#l#a#####7##7##7##7##############v############g##############################
###################################################################################
######################################################$##dh####$#If####a$#gd<I#
###dh####$#If####gd<I##|
##kdq####$##$#If#####F###############################0##X "##
##N#
t####0###############################################6###########
######4#######4###
#l#a#####7##7##/8##08##18##?
8##@8##9##9##############w############h############h############]############N##
##########N############h#################################$##7##dh###`7#a$#gd#k##
###$##dh###a$#gd#k######$##7##dh###`7#a$#gd#k##
###$##dh###a$#gd?###|
##kd####$##$#If#####F############################P##0##X "##
##N#
t####0###############################################6###########
######4#######4###
#l#a#####7###8##.8##/8##08##18##?
8##9##9##9###:###:##U;##V;##v;##pu\D)D)########4#h#k##hp##5#6#9#B*#OJ
##QJ##\#]#^J##aJ##ph#####.#h#k#5#6#9#B*#OJ##QJ##\#]#^J##aJ##ph#####0#h#k##
hp##5#6#>*#B*#OJ##QJ##\#]#^J##ph#####!
#h#k##h#k#B*#OJ##QJ##^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####*#h#k##hp
##6#>*#B*#OJ##QJ##]#^J##ph#####!
#h#k##hY&#B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph####/#h]T##h#k#6#>*#B*#
CJ##OJ##QJ##^J##aJ##ph####/#h]T##hp##6#>*#B*#CJ##OJ##QJ##^J##aJ##ph######9##9#
##:###:##w;##x;##;##;##+<##<##<##<##<##;=##<=##v=##=###>##################
#############################################################################
############################################################################
###############################################$#
&##F######7##dh###@&#^##`7#a$#gd<I######$#
&##F
#####7##dh###@&#^##`7#a$#gd<I#####$##7##dh###@&#`7#a$#gd#k######$##7##dh##
#`7#a$#gd#k##
###$##dh###a$#gd#k######$##7##dh###`7#a$#gd#k###v;##w;##<##<##<##<##<##<#
#;=###>###>##:>##<>##>>##?>##C>##X>##?##?##T@##`@###A###A##
A###A##
A##hhhTTTTh#######################################'#h#k##hp##5#B*
#OJ##QJ##\#^J##ph####5#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph####u##)#hj#
#hp##B*#OJ##QJ##^J##mH
#ph####sH
#.#hj##hp##5#6#9#B*#OJ##QJ##^J##aJ##ph#####(#h#k##hp##9#B*#OJ##QJ##^J##aJ#
#ph#####"#hj#9#B*#OJ##QJ##^J##aJ##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####.#h#k##hp##6#9#B*#OJ##QJ##]#^J##aJ##ph######>
###>###>###>###>##:>##>>##A>##B>##C>##Y>##Z>##6@##7@## A##
A##
A##
A###A###A###A###A###A###A###A##################################################
############################################################################
#############################################################################
############################################################################
#############
###$##dh###@&#a$#gd6######$#
###$##7##dh###@&#`7#a$#gd#k#####$##7##dh###@&#`7#a$#gd#k###
A###A###A###A##WA##vA##wA##xA##A##A##B##B##C##C##rD##zD##]E##mE##oE##E##lH##
mH##nH##oH##H##J##J###K##~p_LL#############$#h#k##hp##5#B*#OJ##Q
J##^J##ph#####!
#h#k##hY&#B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph######hY&#B*#OJ##QJ##^J##
ph####'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph#
###5#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph####u##!
#h#k##hp##B*#OJ##QJ##^J##ph####=#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph###
#sH
#tH
#u#####A###A###A###A##zB##{B##C##C##D##D##oE##E##E##F##F##rG##sG##lH##nH##o
H##H########################################################################
############################################################################
#############################################################################
#################################
###$##dh###@&#a$#gd9X#####$#
######7##dh###@&#`7#a$#gdY&######$##7##dh###`7#a$#gd#k#
###$##dh###@&#a$#gdY&#####$##7##dh###@&#`7#a$#gd#k###H##H###I###I##.J##/J##J
##J##J##J##J##J##J##
K###K###K###K##"K###K##$K##AK##################################################
############################################################################
#############################################################################
####################################################$##7##dh###`7#a$#gdY&####
#$########7##dh###@&#`7#a$#gd#k######$#
&##F
###########7##dh###@&#^##`7#a$#gd<I#####$##7##dh###@&#`7#a$#gd#k####K##
K##!
K##"K###K##$K##AK##L##L##N##N##N##BQ##CQ##SQ##UQ##R###S###S##$S##cS##vS##V##
xdPdd9d-
#h#k##hp##5#6#B*#OJ##QJ##\#]#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph##
##'#h#k##hp##6#B*#OJ##QJ##]#^J##ph######hY&#>*#B*#OJ##QJ##^J##ph#######hY&#B*
#OJ##QJ##^J##ph####$#h#k##hp##>*#B*#OJ##QJ##^J##ph#######h#k##hp##B*#CJ##^J##ph
####!
#h#k##hp##B*#OJ##QJ##^J##ph####5#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph###
#u##5#j#####h#k##hY&#B*#OJ##QJ##U##^J##mH##nH##ph####u####AK##BK##IL##JL##L###M#
#\M##N##N##N##N##O##O##P##P##BQ##CQ###S###S##V##V##V##V##V##V#######
#############################################################################
############################################################################
#############################################################################
###############################################################
###$##dh###@&#a$#gd<D######$#
&##F###dh###@&#a$#gdY&#####$##7##dh###@&#`7#a$#gd#k###V##V##V##V##V##V##
W##W##<X##BX##X##X##X##X##DY##pY##Z##Z##Z##gSE>##################
############
#h<D##h<D####h<D#B*#CJ##^J##aJ##ph####'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####5#
j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph####u##5#j#####h#k##h<D#B*#OJ##QJ##U
##^J##mH##nH##ph####u##'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h#k##h<D#B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####;#j#####h#k##hp##5#B*#OJ##QJ##U##\#^J##mH##nH#
#ph####u####V##V###X###X##X##X##X##Z##Z##Z##Z##Z##@[##A[##e[##f[##\##\#
##]###]##]##]##]###########################################################
############################################################################
#############################################################################
########################################################################7##dh
###^##`7#gd#k#####gd<D######dh###gd<D#####$##7##dh###@&#`7#a$#gd<D#####$##
7##dh###@&#`7#a$#gd#k###Z##Z##@[##d[##e[##\###]###]##]##]##]##]##Y^##Z^##u
^##v^###_###_##K_##L_##_##_##_##`##`###a###a##%a##&a##'a###d##
d##d##d##g##

q]############'#h#k##hp##6#B*#OJ##QJ##]#^J##ph##
##5#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph####u##5#j#####h#k##h<D#B*#OJ##Q
J##U##^J##mH##nH##ph####u##$#h#k##hp##5#B*#OJ##QJ##^J##ph#######h#k##hp##B*#CJ
##^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#CJ##^J##aJ##ph#####"]##]##Y^##Z^##v^##w^###_###_##L_##M_##_##_##
_##_##_##`##`##`##`##
%a##(a##)a##b##b############################################################
############################################################################
#############################################################################
###########################################################################dh#
##gd<D######$##7##dh###`7#a$#gd#k#####$##7##dh###@&#`7#a$#gd#k#########7##
dh###^##`7#gd#k###b###d###d##
d###d##e##e##Af##Bf##g##g##g##g##g##g##i##i##i##i##i##i##j##j##j##
j##k#######################################################################
############################################################################
#############################################################################
#############################################################################
###################$#
###)###7##dh###`7#a$#gd#f######$##7##dh###`7#a$#gd#k###g##g##g##g##g##
g##h##h##i##i##i##i##j##j##n##n##n##n###o###o##|aP?
###########################!#h#f##hp##B*#OJ##QJ##^J##ph####!#h?
###hp##B*#CJ##^J##aJ##ph####5#j#####h#k##h#f#B*#OJ##QJ##U##^J##mH##nH##ph####u##
'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####!#h#k##hp##B*#OJ##QJ##^J##ph####!
#h#f#5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####5#j#####h
#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph####u##;#j#####h#k##h#f#5#B*#OJ##QJ##U##\#
^J##mH##nH##ph####u####k##k##Ll##Ml##l##l###m##$m##`m##am##n##n##n##n##n##
n###o###o##3p##4p##bp##cp##ep#################################################
############################################################################
#############################################################################
##############################################################################
###################$##7##dh###`7#a$#gd#k######dh###gd#f#####$#
&##F###dh###a$#gd#f######$##7##dh###`7#a$#gd#k####o##3p##cp##ep##op##pp##p##p
##p##p##p##p##
%q##&q##9q##:q##yq##zq##q##q##jUjU9U###############7#h##h
#5#B*#CJ##OJ##QJ##\#^J##aJ##mH #ph####sH #)#hL5##h
#B*#CJ##OJ##QJ##^J##aJ##ph####/#h##h
#5#B*#CJ##OJ##QJ##\#^J##aJ##ph####/#hL5##h
#5#B*#CJ##OJ##QJ##\#^J##aJ##ph####!#h#k##h#B*#OJ##QJ##^J##ph######h
#B*#CJ##^J##aJ##ph####!#hL5##h#B*#CJ##^J##aJ##ph######h
#B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####+#h#f##hp##5#9#B*#OJ##QJ##^J##aJ##ph######ep##
vp##p##p##p##p##p##p##p##########################p############]###########
#]############N############N############N################################$##dh####$
#If####a$#gd?######$##7##dh####$#If####`7#a$#gd?
###v##kdS####$##$#If#####F##4##############################0##Z#."########
#############################0###########################################
#t"########################################4###
#F#a###f4#
###dh####$#If####gd?##
##dh####$#If####gd?####p##p##p##p##p###q##############-
####################################################kd#####$##$#If#####F##4##
###############################Z#
#:#&#."
##########################################################################
####################################0######################################
######t"########################################################
################################4###
#F#a###f4#####$##dh####$#If####a$#gd?#####q###q###q##
%q##&q######################################'####################kd####$##$#If
#####F##4################################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
############$##dh####$#If####a$#gd?
####&q##:q##Pq##]q##iq##qq##yq#################################################
#################################################################################
###################################################################################
###################################################################################
###################################################################################
#########################################################################$##dh####$
#If####a$#gd?
####yq##zq##q##q##q##6############'############'############'###################
###$##dh####$#If####a$#gd?
####kd####$##$#If#####F##4################################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
##########q##q##q##q##q#################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
#################################################################################$#
#dh####$#If####a$#gd?####q##q##q##q##q##q##q###r###r###r##
%r##7r##Rr##Sr##r##r##r##r##r##r##r##$$vdL4L/#hL5##h
#5#B*#CJ##OJ##QJ##\#^J##aJ##ph####/#h##h
#5#B*#CJ##OJ##QJ##\#^J##aJ##ph######h?##B*#CJ##OJ##QJ##^J##aJ##ph######h
#B*#CJ##OJ##QJ##^J##aJ##ph####7#h##h#5#B*#CJ##OJ##QJ##\#^J##aJ##mH
#ph####sH #7#hL5##h#5#B*#CJ##OJ##QJ##\#^J##aJ##mH #ph####sH #!
#h#k##h#B*#OJ##QJ##^J##ph####)#hL5##h#B*#CJ##OJ##QJ##^J##aJ##ph####1#hL5##h
#B*#CJ##OJ##QJ##^J##aJ##mH #ph####sH

###q##q##q##q##q##8############)############)############)####################
######$##dh####$#If####a$#gd?
####kd####$##$#If#####F##4##############################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
##########q##q##q##q##q###r###r###r######################################
###############################################################################
###################################################################################
###################################################################################
###################################################################################
#################################################################################$#
#dh####$#If####a$#gd?#####r###r##
%r##7r##Hr##8############)############)############)##########################$##dh
####$#If####a$#gd?
####kd####$##$#If#####F##4##############################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
##########Hr##Sr##qr##r##r##r##r#########################################
#################################################################################
###################################################################################
###################################################################################
###################################################################################
#################################################################################$#
#dh####$#If####a$#gd?
####r##r##r##r###s##8############)############)############)###################
#######$##dh####$#If####a$#gd?
####kd####$##$#If#####F##4##############################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
##########r###s##Xs##Ys##zs##{s##s##s##s##s##s##s###t###t##@t##At##Pt##Qt#
#ut##vt##t##t##t##t##t##t##t##t##t##~e~P~################)#
h#5#B*#CJ##OJ##QJ##\#^J##aJ##ph####1#hL5##h#B*#CJ##OJ##QJ##^J##aJ##mH
#ph####sH #/#h##h#5#B*#CJ##OJ##QJ##\#^J##aJ##ph####/#hL5##h
#5#B*#CJ##OJ##QJ##\#^J##aJ##ph####!#h#k##h#B*#OJ##QJ##^J##ph######h
#B*#CJ##OJ##QJ##^J##aJ##ph####)#hL5##h#B*#CJ##OJ##QJ##^J##aJ##ph####1#hL5##h
#B*#CJ##OJ##QJ##^J##aJ##mH
#ph####sH
####s###s##0s##?
s##As##Ps##Ys##cs##zs#########################################################
################################################################################
###################################################################################
###################################################################################
###################################################################################
##################$##7##dh####$#If####`7#a$#gd?######$##dh####$#If####a$#gd?
####zs##{s##s##s##s##8############)############)############)###################
#######$##dh####$#If####a$#gd?
####kd####$##$#If#####F##4##############################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
##########s##s##s##s##s##s##s##s##s##s##s##s#######################
############################################################################
#################################################################################
###################################################################################
###################################################################################
###########################################$##7##dh####$#If####`7#a$#gd?
######$##dh####$#If####a$#gd?
####s##s###t###t##)t##8############)############)############)###################
#######$##dh####$#If####a$#gd?
####kdm####$##$#If#####F##4##############################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
##########)t##1t##At##Qt##bt##nt##vt##t##t##t##############################
#############################################################################
###################################################################################
###################################################################################
###################################################################################
#################################################################################$#
#dh####$#If####a$#gd?###

t##t##t##t##t##8############)############)############)#######################
###$##dh####$#If####a$#gd?
####kdO####$##$#If#####F##4##############################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
##########t##t###u##
u##su##tu##u##u##u##u##u##u##u##u##u##u##u###v###v###v##,v##-v##
{veR<###########*#h?###hp##5#6#>*#B*#OJ##QJ##^J##ph#####$#h?
##5#6#>*#B*#OJ##QJ##^J##ph#####!#h#k##hp##B*#OJ##QJ##^J##ph#### #h]T#5#
#hB#5###h]T##hp##5###h## #j#####h#k##hp##U##mH##nH##u###/#hL5##h
#5#B*#CJ##OJ##QJ##\#^J##aJ##ph####!#h#k##h#B*#OJ##QJ##^J##ph######h
#B*#CJ##OJ##QJ##^J##aJ##ph####)#hL5##h#B*#CJ##OJ##QJ##^J##aJ##ph######h?
##B*#CJ##OJ##QJ##^J##aJ##ph######t##
u###u##:u##_u##tu##u#########################################################
##################################################################################
###################################################################################
###################################################################################
###################################################################################
################################################################$##dh####$#If####a$
#gd?
####u##u##u##u##u##8############)############)############)###################
#######$##dh####$#If####a$#gd?
####kd1####$##$#If#####F##4##############################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
##########u##u##u##u##u#################################################
###################################################################################
###################################################################################
###################################################################################
###################################################################################
#################################################################################$#
#dh####$#If####a$#gd?####u##u###v###v##8############-
###################################$##7##dh###`7#a$#gd#k##
###$##dh###a$#gd?
####kd#####$##$#If#####F##4##############################Z#
#:#&#."###################################################################
###########################################0###############################
#############t"#################################################
#######################################4###
#F#a###f4#p
###########v##-v##.v##uy##vy##wy##y##y##{##{###~###~##H##I## ##
##@##A##B##i###########################################################
#############################################################################
############################################################################
#######################################################################$##dh####
#####[$#\$#a$#gdB##
###$##dh###a$#gdB##
###$##dh###a$#gd]T######$##7##dh###`7#a$#gd#k##
###$##dh###a$#gd?####-
v##.v##w##w##ty##uy##vy##wy##}y##y##4z##5z##lz##mz##pz##qz##{##{##{##{###|
###|## |##!|##|##|
##.}##/}##pqq\qFqq\qqq#+#h#k##hp##0J##5#B*#OJ##QJ##\#^J##ph####(#
h#k##hp##0J##>*#B*#OJ##QJ##^J##ph#####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph####
#*#hB##hp##5#B*#OJ##QJ##\#]#^J##ph#####$#hB#5#B*#OJ##QJ##\#]#^J##ph#####
!#h#k##h]T#B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####!#h#k##h?##B*#OJ##QJ##^J##ph######h?
##B*#OJ##QJ##^J##ph######/}##3}##4}###~###~##@~##A~##x~##y~##|~##}~##~##~##>##?
##D##E##################2##3##6##7##9##:##u##v##{##|
##~######################!
##"##:##;##########################=##>##C##D##t##u###
# # # ##
#########h]T#B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####(#h#k
##hp##0J##>*#B*#OJ##QJ##^J##ph####E####### ###### ##!##$##
%#################A##B##I##i######kWF##############
#################!
#hB##hB#B*#OJ##QJ##^J##ph####'#hB##hp##5#6#B*#OJ##QJ##^J##ph####*#hB##hp
##5#B*#OJ##QJ##\#]#^J##ph#####$#hB#5#B*#OJ##QJ##\#]#^J##ph#####0#h#k##hp#
#5#6#>*#B*#OJ##QJ##\#]#^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####(#h#k
##hp##0J##>*#B*#OJ##QJ##^J##ph#####+#h#k##hp##0J##>*#B*#H*#OJ##QJ##^J##ph######
################H######
####################################
#############################################################################
##############################################################################
############$#
&##F######7##dh####$#If####^##`7#a$#gd<I######$#
&##F######7##dh####$#If####^##`7#a$#gd<I######$#
&##F######7##dh####$#If####^##`7#a$#gd<I######$#
&##F######7##dh####$#If####^##`7#a$#gd<I#####$##dh####$#If####a$#gdB#####
####################.##/##F##G##P##Q##h##i##r##s##y##z#####
#################################

####### ###### ## ## ## ## ## ### ### ##


##########hB#B*#OJ##QJ##^J##ph####)#hB##hB#B*#OJ##QJ##^J##mH #ph####sH
###h#k##hB#mH #sH ####hB#B*#OJ##QJ##^J##mH #ph####sH
#)#h#k##hB#B*#OJ##QJ##^J##mH #ph####sH #!
#hB##hB#B*#OJ##QJ##^J##ph####!#h#k##hB#B*#OJ##QJ##^J##ph#####4#####
#####/##G##Q##i##s##z####################

############################################################################
#############################################################################
#############################################################################
###################################$##dh##########$#If####[$#\$#a$#gdB######$#
&##F######7##dh####$#If####^##`7#a$#gd<I######$#
&##F######7##dh####$#If####^##`7#a$#gd<I### #####################

###########################################################################
##############################################################################
###################################################################################
#########$#
&##F
#####7##dh####$#If####^##`7#a$#gd<I######$#
&##F #####7##dh####$#If####^##`7#a$#gd<I######$#
&##F######7##dh####$#If####^##`7#a$#gd<I######$#
&##F######7##dh####$#If####^##`7#a$#gd<I#########
######################6##9########0####
1##~####oVB444##h#RP#B*#OJ##QJ##^J##ph####'#h#k##hp##5#B*#OJ##Q
J##\#^J##ph####0#h#k##hp##5#6#>*#B*#OJ##QJ##\#]#^J##ph#####*#hB##hp##5#B
*#OJ##QJ##\#]#^J##ph#####$#hB#5#B*#OJ##QJ##\#]#^J##ph#####!
#h#k##hB#B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph######h]T#B*#OJ##QJ##^J##ph######hB#B*#OJ##QJ##^J##
ph####)#hB##hB#B*#OJ##QJ##^J##mH #ph####sH #
#h#k##hB####################8##9##############|
############q############b############S############S############|
############S###########################################$##7##dh###`7#a$#gd#k###
###$##7##dh###`7#a$#gd]T##
###$##dh###a$#gd]T##
###$##dh###a$#gdB#x##kd####$##$#If#####F############################0####"
######################################
t####0###############################################6###############
######################4#######4###
#l#a#####9#############
##+######;#############################################################
#########################t#####################################################
##############################################$##7##dh#########[$#\
$#`7#a$#gdB######$##dh#########[$#\$#a$#gdB######$##7##dh#########[$#\
$#^7#a$#gdB######$##dh#########[$#\$#a$#gd#RP######$##7##dh#########[$#\
$#^7#a$#gd#RP######$##7##dh###`7#a$#gd#k######$##7##dh#########[$#\
$#`7#a$#gd#k##
####
# #####
##

########*##+##,######################:##;##r######
##q`R################################hp##B*#OJ##QJ##^J##ph###
#!#h#RP#5#B*#OJ##QJ##\#^J##ph####!
#h#k##hB#B*#OJ##QJ##^J##ph####*#j####h#k##hB#B*#OJ##QJ##U##^J##ph#####*#j###
##h#k##hp##B*#OJ##QJ##U##^J##ph#####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph######hB
#5#B*#OJ##QJ##^J##ph#######hB#B*#OJ##QJ##^J##ph######h#RP#B*#OJ##QJ##^J##ph####
!
#h#k##hp##B*#OJ##QJ##^J##ph######;###########$##>##############L#
###########################################################################
################################################r############################
############M##kd^###$##$#If#####T###0######(##################################
#########6#################################3#######4#######a###T#
#####$##7##dh####$#If####`7#a$#gd#k######$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh#########[$#\$#`7#a$#gd#RP##
########P#############$##;##=##>############{##|
##}##~###### ############H##I##pZ#################
####*#jV###h#k##hp##B*#OJ##QJ##U##^J##ph#####*#jO###h#k##hp##B*#OJ##QJ##U##^J
##ph#####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#RP#5#B*#OJ##QJ##\#^J##ph######h.##B*#OJ##QJ##^J##ph######h#RP#B*#OJ##QJ##^J##
ph####!#h#k##hp##B*#OJ##QJ##^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h#k##h#RP#B*#OJ##QJ##^J##ph######I##J##K##L##M##################
##########[##\##]############ ##B##C##
## ###############

zzlzz[zz###!
#h.##5#B*#OJ##QJ##\#^J##ph######h.##B*#OJ##QJ##^J##ph######h#RP#B*#OJ##QJ##^J##
ph####!
#h#RP#5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####*#j`###h
#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####*#j#_#
##h#k##hp##B*#OJ##QJ##U##^J##ph#################\##]#######C###
###########################################################################
################################################o#############################
##############$##7##dh#########[$#\$#`7#a$#gd#RP######$##7##dh#########[$#\
$#^7#a$#gd#RP######$##7##dh#########[$#\
$#`7#a$#gd#k##M##kd#b###$##$#If#####T###0######(##############################
#############6#################################3#######4#######a##
#T###
########r######F##H##n##o##+##P##
##+######F##d##e#####################################################
#############################################################################
############################################################################
############################################$####dh#########[$#\
$#^#a$#gd#RP######$##dh#########[$#\$#a$#gd#RP######$##7##dh#########[$#\
$#^7#a$#gd#RP######$##7##dh#########[$#\
$#`7#a$#gd#k#############q##r##s########E##F##G##I##l##m##o
##*##+##,##O##P##
##
#####*##+##############E##F##G##c##e#####\#############
###############q##
################################################!
#h.##5#B*#OJ##QJ##\#^J##ph######hp##B*#OJ##QJ##^J##ph####!
#h#RP#5#B*#OJ##QJ##\#^J##ph######h#RP#B*#OJ##QJ##^J##ph####'#h#k##hp##5#B*#OJ#
#QJ##\#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph#####4e##\############q########}####3##
#########,##############################################################
############################################################################
#############################################################################
#####################$#
&##F###dh###a$#gd#RP######$##dh#########[$#\
$#a$#gd.#######$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh#########[$#\
$#^7#a$#gd#RP######$##dh#########[$#\
$#a$#gd#RP###q##r######################y##z##=#############
###6##7##w##x##y##z############u##v#### ##  i
[#####hp##B*#OJ##QJ##^J##ph####*#j\x###h#k##h#RP#B*#OJ##QJ##U##^J##ph#
######h#RP#B*#OJ##QJ##^J##ph####!#h#k##h#RP#B*#OJ##QJ##^J##ph####!
#hp##5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####*#jjb###h
#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph########
######;##=######y##z##v##r##s#####################################
############################################################################
###################################u##########################$##dh#########[$#
\$#a$#gdB######$##7##dh#########[$#\
$#`7#a$#gd#RP######$##7##dh#########[$#\
$#`7#a$#gdB######$##7##dh#########[$#\
$#`7#a$#gd#RP######$##dh#########[$#\$#a$#gd#RP######$##7##dh#########[$#\
$#`7#a$#gd#k#####$#
&##F###dh###a$#gd#RP##
##' ##( ##z ##{ ## # ## ### ### ##q ##r ##s ## # # # # # # # # # # ## ##O
##P################6##7##[##\####################K##L#
#########ms########j#####h.##U##mH##
nH##u###*#j###h#k##h.##B*#OJ##QJ##U##^J##ph#####*#j#####h#k##hp##B*#OJ##QJ##U
##^J##ph#####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h#k##hB#B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph######hB#B*#OJ##QJ##^J##
ph####!
#h#k##hp##B*#OJ##QJ##^J##ph#####,############E##########,##k##t
####################################################################
#############################################################################
############################################################################
###################################################$#
&##F######7##dh###^##`7#a$#gd<I######$##7##dh###`7#a$#gd#k######$##dh#####
####[$#\$#a$#gd.#######$##7##dh#########[$#\
$#`7#a$#gd#k###############A##B##C##D######3##2########
##########+##########\##]##^##_########## i 

[##########hp##B*#OJ##QJ##^J##ph####*#j###h#k##hp##B*#OJ##QJ##U##^J##ph#######h
.##5#B*#OJ##QJ##^J##ph#######h.##B*#OJ##QJ##^J##ph####*#j###h#k##hp##B*#OJ##
QJ##U##^J##ph#####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h.##5#B*#OJ##QJ##\#^J##ph#####"##`############E####0##1#######
##########;########O####6##9##^##
###########################################################################
#############################################################################
#############################################################################
#############################################################################
##$##dh#########[$#\$#a$#gd.#######$##7##dh#########[$#\
$#`7#a$#gd#k###################D##E##F####################
###0##1##_##e##h##n###############################7####
~~##8#h####*#jy###h#k##hp##B*#OJ##QJ
##U##^J##ph#######h.##B*#OJ##QJ##^J##ph####*#j/###h#k##hp##B*#OJ##QJ##U##^J##ph
#####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h.##5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####!
#h#k##h.##B*#OJ##QJ##^J##ph#####(8##9##:###################N##O##P#
############

##4##7##9##:##]##^##_######4##t########=##q##r##s######
zd###########*#j*###h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h.##5#B*#OJ##QJ##\#^J##ph####*#j###h#k##hp##B*#OJ##QJ##U##^J##ph#####'#h#k#
#hp##5#B*#OJ##QJ##\#^J##ph######h.##B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####*#j5#
##h#k##hp##B*#OJ##QJ##U##^J##ph####%
##;##=##r####P##R##S##T######Z##\######################}###
##N#####################################################################
#############################################################################
############################################################################
#############################################################################
#############$##dh#########[$#\$#a$#gd.#######$##7##dh#########[$#\
$#`7#a$#gd#k#########R##T##U################J##K##\######
######
################
###############k##l##############zdzzzzzz
#*#j*###h#k##hp##B*#OJ##QJ##U##^J##ph#######h.##B*#OJ##QJ##^J##ph####*#j###h
#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h.##5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####*#j##
##h#k##hp##B*#OJ##QJ##U##^J##ph####'######y##z##{##|
############M##N##O################]##^########
zhS###############################################)#h#k##hp##B*#OJ##QJ##^
J##mH
#ph####sH
###h.##B*#OJ##QJ##^J##mH
#ph####sH
#*#j5###h#k##hp##B*#OJ##QJ##U##^J##ph#####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph##
##!
#h.##5#B*#OJ##QJ##\#^J##ph######h.##B*#OJ##QJ##^J##ph####*#j###h#k##hp##B*#
OJ##QJ##U##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#######
####################E##F################################
#############################################################################
##############################################################################
##########################$#######7##dh###`7#a$#gd#k#####$#
&##F##
#########7##dh###^##`7#a$#gd<I######7##dh###`7#gd#k######$##7##dh###`7#
a$#gd#k#####$##7##dh###7$#8$#H$#`7#a$#gd#k######$##7##dh###`7#a$#gd.###
###$##dh###a$#gd.###################E##F##J######
##'#############ir_r_rLrLr9#########################
%#h#k##hp##B*#CJ##^J##mH
#ph####sH
#$#h#k##hp##>*#B*#OJ##QJ##^J##ph#####$#h#k##hp##5#B*#OJ##QJ##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#CJ##^J##aJ##ph####)#h.##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
# #h#k##hp##CJ##OJ##QJ##^J##aJ###)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#/#h#k##hp##6#B*#OJ##QJ##]#^J##mH
#ph####sH
########

##(##)########################c##d######t####################
#############################################################################
############################################################################
####################################################$#
&##F######7##dh###^##`7#a$#gd<I##
###$##dh###a$#gd<######$##7##dh###`7#a$#gd#k#########7##dh###^##`7#gd#k##
####$##7##dh###`7#a$#gd#k#####$#
&##F######7##dh###^##`7#a$#gd<I###############c##d######

##u####)##6########,#########5##t#########D##h##=##
r]rH#####)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#)#h<#5#B*#OJ##QJ##\#^J##mH
#ph####sH
#/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####+#h<##hp##6#9#B*#OJ##QJ##^J##aJ##ph####"#h<
#9#B*#OJ##QJ##^J##aJ##ph#####(#h#k##hp##9#B*#OJ##QJ##^J##aJ##ph#####t##u###
#####-
##.############u##v######F##G######=##B##################
#############################################################################
#############################################################################
############################################################################
##################
###$##dh###a$#gd<#####$#
&##F######7##dh###^##`7#a$#gd<I#####$#
&##F######7##dh###^##`7#a$#gd<I######$##7##dh###`7#a$#gd#k###=##B####
############J##N################F##a######o######
##oooooX####################################################,#h#k
##hp##>*#B*#OJ##QJ##^J##mH
#ph####sH
##)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#)#h#k##hp##B*#OJ##QJ##^J##mH #ph####sH
#'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####!#h#k##hp##B*#OJ##QJ##^J##ph####-
#h#k##hp##5#6#B*#OJ##QJ##\#]#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph##
##,#h#k##hp##B*#OJ##QJ##\#^J##mH
#ph####sH
##########I##J########D##J########
#########E##F##a################################################
#############################################################################
############################################################################
#############################################################################
#############$##7##dh###7$#8$#H$#`7#a$#gd#k#####$#
&##F######7##dh###^##`7#a$#gd<I######$##7##dh###`7#a$#gd#k#####^##o##
##########v##{##|
############^################H########################
############################################################################
#############################################################################
#############################################################################
#########################################################$##7##dh###`7#a$#gd<
##
###$##dh###a$#gd<######$##7##dh###`7#a$#gd#k#############v##|
##############^##j############G##H##J##K######
rdVE#########!
#h#k##h<#B*#OJ##QJ##^J##ph######h<#B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##
ph####!#h<#5#B*#OJ##QJ##\#^J##ph####)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#$#h#k##hp##>*#B*#OJ##QJ##^J##ph#####,#h#k##hp##>*#B*#OJ##QJ##^J##mH
#ph####sH
##!
#h#k##hp##B*#OJ##QJ##^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####/#h#k##hp
##5#B*#OJ##QJ##\#^J##mH
#ph####sH
###H##I##J##K#################################################
###################################################]#########################
########################i##kd###$##$#If#####T#########F##################
##########################~###################H
#6##########
##########
##########
##########
#########3#######4#######a##T######$##7##dh####$#If####`7#a$#gd#k#####$#
&##F######7##dh###^##`7#a$#gd<I######$##7##dh###`7#a$#gd#k##
##########=##?
##B##m##s######u########l##x##j##u^K=K################
##############h<#B*#OJ##QJ##^J##ph####$#h#k##hp##6#B*#OJ##QJ##^J##ph#####-
#h#k##hp##5#6#B*#OJ##QJ##\#]#^J##ph####)#h<##hp##B*#OJ##QJ##^J##mH
#ph####sH #/#h<##h<#5#B*#OJ##QJ##\#^J##mH #ph####sH
#/#h<##hp##5#B*#OJ##QJ##\#^J##mH #ph####sH #!
#h#k##hp##B*#OJ##QJ##^J##ph####=#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph###
#sH
#tH
#u##)#h#k##hp##B*#OJ##QJ##^J##mH #ph####sH
#####}##~#################:##;##<##=##m##n#####
##########################################################################
############################################################################
##############################################################################
####$#
&##F######7##dh###^##`7#a$#gd<I##
###$##dh###a$#gd<#####$#
&##F#####@######7##dh###^##`7#a$#gd<I######$##7##dh###`7#a$#gd#k#####$#
&##F######7##dh###^##`7#a$#gd<I#########i##j###########3##R##
b##c####################!
##"########################################################################
############################################################################
#############################################################################
#####################################################################$##7##dh#
##`7#a$#gd#k######$##7##dh###`7#a$#gd#k#####$#
&##F######7##dh###^##`7#a$#gd<I###j######
##<##########h#############:##-##1##|
gVB.B###'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J
##ph####!#h<#5#B*#OJ##QJ##\#^J##ph####)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#)#h#k##hp##B*#OJ##QJ##^J##mH #ph####sH #!
#h#k##hp##B*#OJ##QJ##^J##ph####+#h#k##hp##6#CJ##OJ##QJ##^J##aJ##mH
sH
4#h#k##hp##5#6#CJ##OJ##QJ##\#]#^J##aJ##mH
sH
#.#h#k##hp##5#CJ##OJ##QJ##\#^J##aJ##mH
sH
#(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
#1##2##U##################%##`##y##z##{#######
##p^pK1K####2#h#k##hp##5#>*#B*#OJ##QJ##\#^J##mH
#ph####sH
##$#h#k##hp##>*#B*#OJ##QJ##^J##ph#######h#k##hp##>*#CJ##OJ##QJ##^J##aJ##
#h#k##hp##CJ##OJ##QJ##^J##aJ###)#h<#5#B*#OJ##QJ##\#^J##mH
#ph####sH
#/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#-
#h#k##hp##5#6#B*#OJ##QJ##\#]#^J##ph####'#h#k##hp##6#B*#OJ##QJ##]#^J##ph##
##!
#h#k##hp##B*#OJ##QJ##^J##ph######"################u##v######
######
%##&##_##`##z##{########################################################
#############################################################################
############################################################################
#######################################$#
&##F######7##dh###^##`7#a$#gd<I######$##7##dh###`7#a$#gd#k##
###$##dh###a$#gd#L#####$##7##dh###7$#8$#H$#`7#a$#gd#k######$##7##dh###`7#a$#g
d#k###{######### #################>##?
################g##h##########################################
#############################################################################
############################################################################
###############################################################################
##########################
###$##dh###a$#gd<######$##7##dh###`7#a$#gd#k##
###$##dh###a$#gd<######$##7##dh###`7#a$#gd#k###
#######################?
##1##5######t_D_,###################.#h#k##hp##5#CJ##OJ##QJ##\#^J#
#aJ##mH
sH
#4#h#k##hp##5#6#CJ##OJ##QJ##\#]#^J##aJ##mH
sH
#(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
#!
#h<#5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####)#h#k##h
<#B*#OJ##QJ##^J##mH
#ph####sH
###hp##B*#OJ##QJ##^J##mH
#ph####sH
#,#h#k##hp##>*#B*#OJ##QJ##^J##mH
#ph####sH
##$#h#k##hp##>*#B*#OJ##QJ##^J##ph#####)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
##
####g##v######################*##1##K##T#######@##A#
#f##I##J##M##n########"#####jjjL###;#j#####h#k##hp#
#5#B*#OJ##QJ##U##\#^J##mH##nH##ph####u##5#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##
nH##ph####u##$#h#k##hp##6#B*#OJ##QJ##^J##ph#####.#h#k##hp##5#CJ##OJ##QJ##\#^
J##aJ##mH
sH
#)#h#k##hp##B*#OJ##QJ##^J##mH #ph####sH
#'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
#!
#h#k##hp##B*#OJ##QJ##^J##ph######h###########I##J##K##T##U######
@##B##C##D##I##K##L##M##### ##!
##"######################################################################
#############################################################################
############################################################################
########################################################################
###$##dh###a$#gd<######$##7##dh###`7#a$#gd#k#####$#
&##F######7##dh###^##`7#a$#gd<I######;##########U##V##r######
################ \B##################################
####2#h#k##hp##5#B*#OJ##QJ##\#^J##mH##nH##ph####u###I#j#####h#k##hp##5#6#B*
#OJ##QJ##U##\#]#^J##mH##nH##ph####sH
#tH
#u##5#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph####u##-
#h#k##hp##5#6#B*#OJ##QJ##\#]#^J##ph####(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
#'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####$#h#k##hp##6#B*#OJ##QJ##^J##ph###########
####U##V####################################
#############################################################################
#############################################################################
############################################################################
##########################################$#
&##F######7##dh###^##`7#a$#gd<I######$##7##dh###`7#a$#gd#k##
###$##dh###a$#gd<######$##7##dh###`7#a$#gd#k##################
#############2##3##4##8##9##:##kkIk###################
############################C#j#####h#k##hp##5#B*#OJ##QJ##U##\#^J##mH##nH##ph##
##sH
#tH
#u##'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####-
#h#k##hp##5#6#B*#OJ##QJ##\#]#^J##ph####=#j#####h#k##h<#B*#OJ##QJ##U##^J##m
H##nH##ph####sH
#tH
#u##5#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph####u##!
#h#k##hp##B*#OJ##QJ##^J##ph####;#j#####h#k##hp##5#B*#OJ##QJ##U##\#^J##mH##nH#
#ph####u######3##5##6##7##8##:##H##I##########=##>#######
###U##V##############################################################
#############################################################################
############################################################################
##############################################################################
########$##7##dh###`7#a$#gd#k######$##7##dh###`7#a$#gd#k#####$#
&##F######7##dh###^##`7#a$#gd<I###:##H##L##P##b##j##r##########
#######################udO7O7O7O7O#.#h#k##hp##6#CJ#
#OJ##QJ##]#^J##aJ##mH
sH
#(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
# #h#k##hp##CJ##OJ##QJ##^J##aJ###'#h#k##h<#5#B*#OJ##QJ##\#^J##ph####!
#hp##5#B*#OJ##QJ##\#^J##ph####$#h#k##hp##6#B*#OJ##QJ##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####*#h#k##hp
##5#>*#B*#OJ##QJ##\#^J##ph#####.#h#k##hp##5#CJ##OJ##QJ##\#^J##aJ##mH
sH
####"##*##<##=##>##c##f##h##k##|
##########################*##-##vvvv`O>v
#h#k##hp##CJ##OJ##QJ##^J##aJ###!
#h#k##h<#B*#OJ##QJ##^J##ph####*#h#k##hp##5#>*#B*#OJ##QJ##\#^J##ph#####.#h#k
##hp##6#CJ##OJ##QJ##]#^J##aJ##mH
sH
#(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
#'#h#k##h<#5#B*#OJ##QJ##\#^J##ph####!
#hp##5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####$#h#k##hp##6#B*#OJ##QJ##^J##ph#####-
##0##3##Q##S##U##X###################################
:##B##J##\##]##tcR
t############################## #h#k##hp##CJ##OJ##QJ##^J##aJ###!
#h#k##h<#B*#OJ##QJ##^J##ph####!
#hp##5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####$#h#k##hp
##6#B*#OJ##QJ##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#h#k##hp##5#>*#B*#OJ##QJ##\#^J##ph#####.#h#k
##hp##6#CJ##OJ##QJ##]#^J##aJ##mH
sH
#(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
#######]##^######7###8##############################################
###########################################################################
#############################################################################
#############################################################################
#############################################################################
#########$##7##dh###`7#a$#gd<######$##7##dh###`7#a$#gd#k######$##7##dh###`
7#a$#gd#k###]##^##_########################$###6###7###8###9###^###a##
########################################r_rNr_rN##!
#hp##5#B*#OJ##QJ##\#^J##ph####$#h#k##hp##6#B*#OJ##QJ##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#h#k##hp##5#>*#B*#OJ##QJ##\#^J##ph#####'#h#k
##hp##5#B*#OJ##QJ##\#^J##ph####.#h#k##hp##6#CJ##OJ##QJ##]#^J##aJ##mH
sH
#(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
#
#h#k##hp##CJ##OJ##QJ##^J##aJ###'#h#k##h<#5#B*#OJ##QJ##\#^J##ph##############
######################################D###F##########################
##########t`O#############################!
#h<#5#B*#OJ##QJ##\#^J##ph####'#h#k##h<#5#B*#OJ##QJ##\#^J##ph####!
#hp##5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####$#h#k##hp
##6#B*#OJ##QJ##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#h#k##hp##5#>*#B*#OJ##QJ##\#^J##ph#####.#h#k
##hp##6#CJ##OJ##QJ##]#^J##aJ##mH
sH
#(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
#######
###############V###d########################################.###2###
n[nJ6####'#h#k##h<#5#B*#OJ##QJ##\#^J##ph####!
#hp##5#B*#OJ##QJ##\#^J##ph####$#h#k##hp##6#B*#OJ##QJ##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#h#k##hp##5#>*#B*#OJ##QJ##\#^J##ph#####'#h#k
##hp##5#B*#OJ##QJ##\#^J##ph####.#h#k##hp##5#CJ##OJ##QJ##\#^J##aJ##mH
sH
#.#h#k##hp##6#CJ##OJ##QJ##]#^J##aJ##mH
sH
#(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
#"#h<#CJ##OJ##QJ##^J##aJ##mH
sH
#2###6###7###t#####################
###########!###"#######D###H###J###K###L###
m\H5##$#h<#5#>*#B*#OJ##QJ##\#^J##ph#####'#h#k##h<#5#B*#OJ##QJ##\#^J#
#ph####!#hp##5#B*#OJ##QJ##\#^J##ph####$#h#k##hp##6#B*#OJ##QJ##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#h#k##hp##5#>*#B*#OJ##QJ##\#^J##ph#####'#h#k
##hp##5#B*#OJ##QJ##\#^J##ph####.#h#k##hp##6#CJ##OJ##QJ##]#^J##aJ##mH
sH
#.#h#k##hp##5#CJ##OJ##QJ##\#^J##aJ##mH
sH
#(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH
sH
####"#######J###K#####################$###%###p###q#################
## ##w
##x
##y
##z
############################################################################
#############################################################################
#############################################################################
#############################################################################
###$##dh###a$#gd<######$##7##dh###`7#a$#gd#k######$##7##dh###`7#a$#gd#k###L
###Q###x################################################s
^G^/#####/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#,#h#k##hp##6#B*#OJ##QJ##^J##mH
#ph####sH
##)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#2#h#k##hp##5#>*#B*#OJ##QJ##\#^J##mH
#ph####sH
##'#h#k##h<#5#B*#OJ##QJ##\#^J##ph####!
#hp##5#B*#OJ##QJ##\#^J##ph####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####$#h#k##hp
##6#B*#OJ##QJ##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#h#k##hp##5#>*#B*#OJ##QJ##\#^J##ph#########
############
%###+###Q###Y###`###o###p###q########################hS>###########
###################)#h<#5#B*#OJ##QJ##\#^J##mH
#ph####sH
#)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#,#h#k##hp##6#B*#OJ##QJ##^J##mH
#ph####sH
##*#h#k##hp##5#>*#B*#OJ##QJ##\#^J##ph#####'#h#k##hp##5#B*#OJ##QJ##\#^J##ph#
###!#h#k##hp##B*#OJ##QJ##^J##ph####/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#/#h#k##h<#5#B*#OJ##QJ##\#^J##mH
#ph####sH
#)#hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#######x
##y
##z
##
######0#########
##
##################

###^###_###c###d###bC####################=#j#####h#k##hp##B*#OJ##
QJ##U##^J##mH##nH##ph####sH
#tH
#u##@#j#####h#k##h<#B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###/#h#k##hp##B*#H*#OJ##QJ##\#^J##mH
#ph####sH
#@#j#####h#k##hp##B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###)#h5#5#B*#OJ##QJ##\#^J##mH
#ph####sH
#/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#,#h#k##hp##B*#OJ##QJ##\#^J##mH
#ph####sH
##z
##
##
######################
##^###e###f#####################################################################
############################################################################
#############################################################################
#############################################################################
##################################$#
####q####7##dh###`7#a$#gd#k######$##7##dh###`7#a$#gd#k##
###$##dh###a$#gd<###d###e###i########################################
%###o###p###q###_KK*@#j#####h#k##hp##B*#OJ##QJ##U##\#^J##mH##nH##ph####s
H
#tH
#u###&#h<#B*#OJ##QJ##\#^J##mH
#ph####sH
##@#j#####h#k##h<#B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###=#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph####sH
#tH
#u##/#h#k##hp##B*#H*#OJ##QJ##\#^J##mH
#ph####sH
#/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#,#h#k##hp##B*#OJ##QJ##\#^J##mH
#ph####sH
##1#h#k##hp##B*#OJ##QJ##^J##mH
#nH
#ph####sH
#tH
#######################o###r###s###t###u###v###w###y###z#########a###b###`###b###
c###d###e###g###h###|
###}#########################################################################
############################################################################
#############################################################################
#############################################################################
#########################
###$##dh###a$#gd5######$##7##dh###`7#a$#gd#k###q###w###x###y###z###########
######################6###9###Z###]###############`###a###d###e###
cK#####################/#h#k##hp##>*#B*#OJ##QJ##\#^J##mH
#ph####sH
#@#j#####h#k##hp##B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###/#h#k##hp##6#B*#OJ##QJ##\#^J##mH
#ph####sH
#/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#&#h5#B*#OJ##QJ##\#^J##mH
#ph####sH
##@#j#####h#k##h<#B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###,#h#k##hp##B*#OJ##QJ##\#^J##mH
#ph####sH
##e###f###|
###############################"#######)###G########################
###uuTuT@##############&#h##B*#OJ##QJ##\#^J##mH
#ph####sH
##@#j#####h#k##h##B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###@#j#####h#k##hp##B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#,#h#k##hp##B*#OJ##QJ##\#^J##mH
#ph####sH
##/#h#k##hp##>*#B*#OJ##QJ##\#^J##mH
#ph####sH
#C#j#####h#k##h<#>*#B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u####}###\###]##################################### ###!###"###$###
%###&###'###(###)###H###I#################################################
#############################################################################
############################################################################
#############################################################################
#############################################################################
######$##7##dh###`7#a$#gd#k#######################################1#
##3###4###5###6###7###8###:###;###<#########################################
############################################################################
#############################################################################
############################################################################
#########################################################################
###$##dh###a$#gd#######$##7##dh###`7#a$#gd#k###
###################.###B###1###2###8###9###?
###O###i###k###############v^<#####################C#j#####h#k##hp#
#5#B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u##/#h#k##hp##B*#H*#OJ##QJ##\#^J##mH
#ph####sH
#@#j#####h#k##h##B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###@#j#####h#k##hp##B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#,#h#k##hp##B*#OJ##QJ##\#^J##mH
#ph####sH
##/#h#k##hp##6#B*#OJ##QJ##\#^J##mH
#ph####sH
#########################################################
#######|
###}###~####################################################################
############################################################################
#############################################################################
#############################################################################
################
###$##dh###a$#gd#######$##7##dh###`7#a$#gd#######$##7##dh###`7#a$#gd#k###
############
##################################k###m###yyXC+##/#h#k##hp##6#B
*#OJ##QJ##\#^J##mH
#ph####sH
#)#h##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#@#j#####h#k##h##B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###@#j#####h#k##hp##B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u###&#h##B*#OJ##QJ##\#^J##mH
#ph####sH
##,#h#k##hp##B*#OJ##QJ##\#^J##mH
#ph####sH
##/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#C#j#####h#k##h##5#B*#OJ##QJ##U##\#^J##mH##nH##ph####sH
#tH
#u####m###############}###~################### ##
##"##"##"##"##"##"##"##"##"##
mUA################'#h#k##hp##5#B*#OJ##QJ##\#^J##ph####/#h###hp##5#B*#CJ##
OJ##QJ##\#^J##aJ##ph####)#hz###5#B*#CJ##OJ##QJ##\#^J##aJ##ph####!
#h##5#B*#OJ##QJ##\#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#)#h##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#/#h#k##hp##6#B*#OJ##QJ##\#^J##mH
#ph####sH
#,#h#k##hp##B*#OJ##QJ##\#^J##mH
#ph####sH
#####l ##m ##!##"##"##"##"##"##"##"##########D$##E$##2%##
%##L'##M'##&)##')#############################################################
############################################################################
#############################################################################
#############################################$##7##dh#########[$#\
$#`7#a$#gdz########$##dh#########[$#\$#a$#gd#######$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh###`7#a$#gd#k###"##"##"#####################$##
#$###$##$$##D$##E$##2%##3%##%##%##%##%##
%##L'##M'##&)##')##~+##+##,##,##,##

v `Kvvvv#)#h#k##hp##B*#O
J##QJ##^J##mH
#ph####sH
#*#jD###h#k##hp##B*#OJ##QJ##U##^J##ph#######hz###B*#OJ##QJ##^J##ph####
%#h#k##hp##0J##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####!#hz####hz###B*#OJ##QJ##^J##ph####!
#hz####hp##B*#OJ##QJ##^J##ph####!
#h#k##hz###B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph######')##~+##+##,##,##
#.##p.##q.##.##.##/##/##0##0##0##0##0##92##r2##s2##2###################
#############################################################################
############################################################################
##############################################################################
############gdz####
###$##dh###a$#gdz########$##7##dh#########[$#\
$#`7#a$#gdz########$##7##dh###`7#a$#gd#k######$##7##dh#########[$#\
$#`7#a$#gd#k###,##,##q.##r.##.##.##.##.##.##.##/##/##/##/##]0##^0##_0
##a0##0##0##mTmxgQQ;QQ###################*#jP###h#k##hp##B*#OJ##QJ##U##^
J##ph#####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#k##hz###B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph######hz###B*#OJ##QJ##^J##
ph####0#ji4###h#k##hp##5#B*#OJ##QJ##U##\#^J##ph#####'#h#k##hp##5#B*#OJ##QJ##
\#^J##ph####0#j#####h#k##hp##5#B*#OJ##QJ##U##\#^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####'#h#k##hp##6#B*#OJ##QJ##]#^J##ph######0##0##
0##0##0##0##0##0##q2##r2##s2##2##2##2##2##2##2##2##2##~iTiTiB#
#######################################hz###B*#OJ##QJ##^J##mH #ph####sH
#)#hz####hz###B*#OJ##QJ##^J##mH #ph####sH
#)#hz####hp##B*#OJ##QJ##^J##mH #ph####sH #!
#h#k##hz###B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph######hz###B*#OJ##QJ##^J##
ph####
#hz####hz####!#hz###5#B*#OJ##QJ##\#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####*#jn#
##h#k##hp##B*#OJ##QJ##U##^J##ph#####2##2##2##2##2##P3##z3##3##3##3###4##
4##4##4##6##G7#############################################################
############################################################################
################################################################################
###################################################################################
#######################$##7##dh##########$#####&P#$#/#If####[$#\
$#`7#a$#gd5######$##7##dh#########[$#\
$#`7#a$#gd#k###2##2##y3##z3##3##3##3##3##3##3###4##
4##/4##04##4##4##6##6##6##6##B7##C7##D7##F7##H7##O7##R7##T7##X7##Z7##p7##q7##
7##7##\9##~m###################################
#########!
#h5#6#B*#OJ##QJ##]#^J##ph####'#h#k##h5#6#B*#OJ##QJ##]#^J##ph####*#j###h
#k##h5#B*#OJ##QJ##U##^J##ph#####!
#h#k##h5#B*#OJ##QJ##^J##ph####*#j#####h#k##h5#B*#OJ##QJ##U##^J##ph#######hz##
#B*#OJ##QJ##^J##ph####!#h#k##hp##B*#OJ##QJ##^J##ph####!
#hz####hp##B*#OJ##QJ##^J##ph#####"G7##H7##S7##T7##Y7##Z7##p7####################
######R############C############8############8###################
###$##dh###a$#gdz########$##7##dh###`7#a$#gd#k#E##kdo;###$##$#If##########'##
#################
6P#########6###############################3#######4#######a
#######$##7##dh##########$#####&P#$#/#If####[$#\
$#`7#a$#gd5#E##kd#;###$##$#If##########'###################
6P#########6###############################3#######4#######a
#####p7##q7##\9##9##9##9##9##9##9##9#####################################
#########################U####################################################
##########<##kde###$##$#If#####T################################
#6#####################3#######4#######a###T###<##kdwe###$##$#If#####T#
###############################
#6#####################3#######4#######a###T######$##7##dh##########
$#If####[$#\$#`7#a$#gd#k######$##7##dh#########[$#\$#`7#a$#gd#k##
\9##]9##9##9##9##9##9##9##9##9##9##9##9##9##9###:##
:##!:##":##$:##+:##-:##.:##2:##3:##:##:##
q[############
####################################*#j!f###h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#k##h]\#B*#OJ##QJ##^J##ph######h]\#B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##
ph####!
#hz###6#B*#OJ##QJ##]#^J##ph####'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####*#j;###h
#k##h]\#B*#OJ##QJ##U##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####9##9
###:##$:##/:##0:##2:##:##################################################Y####
#################################################################################
#######:##kd#####$##$#If#####T##############################X##6###########
##########3#######4#######a###T###:##kd####$##$#If#####T###############
###############X##6#####################3#######4#######a###T######$##
7##dh##########$#If####[$#\$#`7#a$#gd#k######$##7##dh#########[$#\
$#`7#a$#gd#k###:##:##:##:##:##:##M;##O;##;##;##;##;###<## <##!
<##"<##$<##+<##-<##.<###>###>##>##>##>##>##>###?##1?##M?##g?##h?##i?##j?##?
##?##q[q###*#j###h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#k##hz###B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph######hz###B*#OJ##QJ##^J##
ph####!#hz###6#B*#OJ##QJ##]#^J##ph####'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####*#jY##
##h#k##hp##B*#OJ##QJ##U##^J##ph#####:##:##:##:##:##;##;###<##############
############o############`############J############J#############################
#########################$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh###`7#a$#gd#k##:##kdW###$##$#If#####T########
#####################X##6#####################3#######4#######a###T##
####$##7##dh##########$#If####[$#\
$#`7#a$#gd#k##:##kd####$##$#If#####T########
#####################X##6#####################3#######4#######a###T##
###<##$<##/<##0<##2<##E<###>##########################o############Y############J
############Y###########################################################$##7##dh##
#`7#a$#gd#k######$##7##dh#########[$#\
$#`7#a$#gd#k##:##kdT###$##$#If#####T########!
######################X##6#####################3#######4#######a###T#
#####$##7##dh##########$#If####[$#\
$#`7#a$#gd#k##:##kd####$##$#If#####T########!
######################X##6#####################3#######4#######a###T#
####>###>##>##>###?##M?##h?##i?##?##?##?
############################################################################
################################################################################
#######################################################:##kd###$##$#If#####T####
####*#####################X##6#####################3#######4#######a#
##T######$##7##dh##########$#If####[$#\$#`7#a$#gd#k#####$#
&##F###dh#########[$#\$#a$#gdz########$##dh#########[$#\$#a$#gdz####
?##?##?##?##?##?##?
##d@##e@##@##@##@##@##A##A##A##A##"B###B##yB##zB##{B##|
B##~B##B##B##B##@E##`E##}}gT########################
%#h#k##hp##0J##B*#OJ##QJ##^J##ph####*#j###h#k##hp##B*#OJ##QJ##U##^J##ph######
#hz###B*#OJ##QJ##^J##ph####%#h#k##hp##0J##B*#OJ##QJ##^J##ph####!
#hz###6#B*#OJ##QJ##]#^J##ph####'#h#k##hp##6#B*#OJ##QJ##]#^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####*#j#
##h#k##hp##B*#OJ##QJ##U##^J##ph#####?##?##?
##"B##}B##~B##B##################################################J############
#######################################################:##kd###$##$#If#####T###
#####n######################X##6#####################3#######4#######a
###T######$##7##dh##########$#If####[$#\
$#`7#a$#gd#k######$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh###`7#a$#gd#k##:##kdH###$##$#If#####T########*##
###################X##6#####################3#######4#######a###T####
B##B##B##>E##?
E##@E##aE##bE##H##H##I##I##[J##J##########################################
#############################################################################
###############w##########################################$##7##dh#########[$#
\$#`7#a$#gd#U######$##dh#########[$#\$#a$#gd#U######$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh###`7#a$#gd#k##:##kd####$##$#If#####T########n###
###################X##6#####################3#######4#######a###T###
`E##aE##bE##hE##mE##nE##sE##E##E##0F##1F##8F##9F##H##H##H##eI##fI##I##I##I#
#tcQ@########################!
#h#U##h#U#B*#OJ##QJ##^J##ph####"#hp##0J##5#B*#OJ##QJ##^J##ph#####!
#h#U##hp##B*#OJ##QJ##^J##ph####(#h#U##hp##0J##B*#OJ##QJ##\#^J##ph#####1#j#####
h#U##hp##0J##5#B*#OJ##QJ##U##^J##ph####(#h#U##h#U#0J##5#B*#OJ##QJ##^J##ph####
#"#h#U#0J##5#B*#OJ##QJ##^J##ph#####(#h#U##hp##0J##5#B*#OJ##QJ##^J##ph#####!
#h#k##h#U#B*#OJ##QJ##^J##ph######hp##0J##B*#OJ##QJ##^J##ph######I##I##I##I##
I##I###J###J##WJ##XJ##YJ##ZJ##[J##J##J##J##J##4L##5L##6L##L##L##L##L##L#
#M##M##M###N###N## N##
N###N##t ^########################*#j
##h#U##hp##B*#OJ##QJ##U##^J##ph#####*#j.5

##h#U##hp##B*#OJ##QJ##U##^J##ph#######j#####h#U#U##mH##nH##u###(#h#U##hp##0J##
5#B*#OJ##QJ##^J##ph#####*#j ###h#U##hp##B*#OJ##QJ##U##^J##ph#####*#jb###h#U##
hp##B*#OJ##QJ##U##^J##ph#####!
#h#U##hp##B*#OJ##QJ##^J##ph####*#j#####h#U##hp##B*#OJ##QJ##U##^J##ph####
J##J##5L##L##M###N##*N##=N##PN##N##N##N##O##

P##P##P##P##P##P#########################################################
#############################################################################
############################################################################
#############################################$##dh#########[$#\$#a$#gd#U#####$#
&##F######7##dh###^##`7#a$#gd<I######$##7##dh#########[$#\
$#`7#a$#gd#U######$##7##dh#########[$#\$#`7#a$#gd#k####N##
N##)N##*N##;N##=N##NN##PN##}N##N##N##N##N##N##O##O##O###P###P###P###P##P##
P##P##P##P##}l[G#############'#h#k##h#U#5#B*#OJ##QJ##\#
^J##ph####!#hp##5#B*#OJ##QJ##\#^J##ph####!
#h#U#5#B*#OJ##QJ##\#^J##ph######h#U#B*#OJ##QJ##^J##ph####*#j
##h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#k##hp##B*#OJ##QJ##^J##ph####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#U##hp##B*#OJ##QJ##^J##ph####(#h#U##hp##0J##5#B*#OJ##QJ##^J##ph#####"#h#U#0
J##5#B*#OJ##QJ##^J##ph#####P##uQ##vQ##Q##Q###R###R##RR##SR##R##R##R##R##R#
#R##R###S##
S##
S###S###S###S###S##=S#########################################################
#############################################################################
############################################################################
############################################################################$#
#7##dh###`7#a$#gd#k######$##7##dh###`7#a$#gd#k##
###$##dh###a$#gd#U######$##7##dh###`7#a$#gd#k###P##uQ##vQ##|
Q###R##SR##R##R##R##R##R##R##R###S###S##
S##|iM;**#####!#h#k##hp##B*#OJ##QJ##^J##ph######h#U#B*#OJ##QJ##^J##mH
#ph####sH
#6#h#k##hp##6#9#B*#OJ##QJ##]#^J##aJ##mH
ph####sH
#$#h#k##hp##<#B*#OJ##QJ##^J##ph#####,#h#k##hp##<#B*#OJ##QJ##^J##mH
#ph####sH
## #h#k##hp##CJ##OJ##QJ##^J##aJ###)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#(#h#U#6#9#B*#OJ##QJ##]#^J##aJ##ph#####.#h#k##hp##6#9#B*#OJ##QJ##]#^J##aJ#
#ph#####1#h#U##hp##5#6#9#B*#OJ##QJ##]#^J##aJ##ph######
S##S###S###S###S###S###S###S##=S##>S##S##S##S##S##S##+T##,T##-
T##/T##yygTy=Ty############################,#h#k##hp##<#B*#OJ##QJ##^J##
mH
#ph####sH
##$#h#k##hp##<#B*#OJ##QJ##^J##ph#######h#U#B*#OJ##QJ##^J##mH
#ph####sH
#!#h#k##hp##B*#OJ##QJ##^J##ph####)#h#k##h#U#B*#OJ##QJ##^J##mH
#ph####sH
###hp##B*#OJ##QJ##^J##mH
#ph####sH
#)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#.#h#k##hp##6#9#B*#OJ##QJ##]#^J##aJ##ph#####$#h#k##h#U#<#B*#OJ##QJ##^J##ph#
######hp##B*#OJ##QJ##^J##ph######=S##~S##S##S##S##S##S##S##S##S##S##,T##-
T##.T##/T##pT##qT##T##T##T##T##T##T###U##3U##UU##U########################
############################################################################
#############################################################################
#############################################################################
#####################################################################$##7##dh
###`7#a$#gd#k######$##7##dh###`7#a$#gd#k###/T##pT##qT##T##T##T##U##U##U#
#U##U##U##U##V##V##V###W##W## n]O]A.]###$#h#k##h#U#<#B*#OJ##QJ#
#^J##ph#######hp##B*#OJ##QJ##^J##ph######h#U#B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####5#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph###
#u##$#h#k##hp##<#B*#OJ##QJ##^J##ph#####,#h#k##hp##<#B*#OJ##QJ##^J##mH

#ph####sH
##)#h#k##h#U#B*#OJ##QJ##^J##mH
#ph####sH
###hp##B*#OJ##QJ##^J##mH
#ph####sH
#)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
#
#h#k##hp##CJ##OJ##QJ##^J##aJ###U##U##U##U##U##U##U##U##U##U##U##U##U
##U##U##U##U##U##U##5V##VV##gV###########################################
#############################################################################
############################################################################
###################################################################$#
&##F###dh###a$#gd#U#####$#
&##F###dh#########[$#\$#a$#gd#U######$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh###`7#a$#gd#k###gV##V##V##V##V##V##V###W###W##
EW##xW##W##W##W##W##W##W##W##W##
X###X########################################################################
############################################################################
#############################################################################
###############################$#
&##F########>####dh###^#`a$#gd<I######$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh###`7#a$#gd#k#####$#
&##F###dh###a$#gd#U###W##W##W##W##W##W##W##
X##X##'X##Y##Y##Y##Y##Y##2Z##3Z##4Z##WZ##XZ##YZ##ZZ##nt
fS8###5#j#####h#k##h#U#B*#OJ##QJ##U##^J##mH##nH##ph####u##$#h#k##h#U#
<#B*#OJ##QJ##^J##ph#######hp##B*#OJ##QJ##^J##ph####5#j#####h#k##hp##B*#OJ##QJ##
U##^J##mH##nH##ph####u####h#U#B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####$#h#k##hp##<#B*#OJ##QJ##^J##ph#####,#h#k##hp#
#<#B*#OJ##QJ##^J##mH
#ph####sH
##)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
###h#U#B*#OJ##QJ##^J##mH
#ph####sH
####X##
X###X###X###X###X###X###X###X###X###X###X###X###X###X##
%X##&X##'X##oX##X###Y##QY##Y##Y##Y##Y######################################
############################################################################
#############################################################################
############################################################################
################################################$#
&##F ##dh###a$#gd#U######$##7##dh#########[$#\
$#`7#a$#gd#k###Y##Y##Y###Z##!Z##2Z##3Z##4Z##5Z##WZ##YZ##ZZ##xZ##yZ##|
Z##}Z##~Z##Z##Z##Z##Z##Z##Z##Z##########################################
#############################################################################
############################################################################
#############################################################################
########################$##7##dh###`7#a$#gd#k#####$#
&##F!##dh###a$#gd#U######$##7##dh#########[$#\
$#`7#a$#gd#k###ZZ##[Z##yZ##{Z##Z##Z##Z##Z##Z##]
[##^[##[##[##[##[##[##[##
]###]###]##2]##
p^PBP##############################hvk#CJ##OJ##QJ##^J##aJ#####h892#C
J##OJ##QJ##^J##aJ#####h892#B*#OJ##QJ##^J##mH
#ph####sH
#$#h#k##hp##<#B*#OJ##QJ##^J##ph#####5#j#####h#k##h892#B*#OJ##QJ##U##^J##mH##nH#
#ph####u####h892#B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####5#j#####h#k##hp##B*#OJ##QJ##U##^J##mH##nH##ph###
#u##)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
###h#U#B*#OJ##QJ##^J##mH
#ph####sH
###Z##Z##Z##Z##Z##Z##Z##Z##Z##Z##Z##Z##Z###[##5[##[[##\[##]
[##[##[##[##[##[##[##[##[##[##########################################
#############################################################################
############################################################################
#############################################################################
####################################################$#
&##F"##dh###a$#gd892######$##7##dh###`7#a$#gd#k###[##[##[##[##[##[##[##[
##[##[##[###\##6\##`\##\##\##\##\###]###]###]## ]##
]
##3]##4]##]#################################################################
#############################################################################
############################################################################
#############################################################################
#########
###$##dh###a$#gd892#####$#
&##F###dh###a$#gd892######$##7##dh###`7#a$#gd#k###2]##3]##:]##;]##<]##C]##]##^
##^##^##_##_##_##Oa##Pa##a##a##a##a##a##a##4c##5c##6c##Od##Pd##Qd##f##
f##f##{h##|h##}h##h##h##||f|
X####h>h#B*#OJ##QJ##^J##ph####*#j
<
##h#k##h>h#B*#OJ##QJ##U##^J##ph#####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph#####!
#h#k##h>h#B*#OJ##QJ##^J##ph######hp##B*#OJ##QJ##^J##ph####!
#h#k##hp##B*#OJ##QJ##^J##ph####)#h>h#5#B*#OJ##QJ##\#^J##mH
#ph####sH
#/#h#k##hp##5#B*#OJ##QJ##\#^J##mH
#ph####sH
#
#h892##hp##CJ##OJ##QJ##^J##aJ##"]##]##^##^##_##_##Oa##a##a##5c##6c##Pd##Qd
##f##f##g##g##|
h##}h##h##h##j##j##Dl##l##################################################
############################################################################
#############################################################################
############################################################################
############################
###$##dh###a$#gd>h######$##7##dh###`7#a$#gd>h######$##7##dh###`7#a$#gd#k###
h##h##j##j##j##Dl##El##l##l##l##l##l##l##Nn##On##Pn##n##n##o##o##o##
o###p###p###p###p###p###p##Zp##[p##p##p##p##p##i###
######################################*#j^###h#k##h>h#B*#OJ##QJ##U##^J##ph#####*
#j
##h#k##h>h#B*#OJ##QJ##U##^J##ph#######h>h#B*#OJ##QJ##^J##ph####*#j
##h#k##h>h#B*#OJ##QJ##U##^J##ph#####*#j#####h#k##hp##B*#OJ##QJ##U##^J##ph######
#hp##B*#OJ##QJ##^J##ph####!#h#k##hp##B*#OJ##QJ##^J##ph####!
#h#k##h>h#B*#OJ##QJ##^J##ph#####!
l##l##On##Pn##n##n##o##o###p###p##Yp##Zp##p##p##p##p##p##p##.r##r##r#
#mt##nt######################################################################
############################################################################
#############################################################################
##############################################################$##7##dh#######
##[$#\$#`7#a$#gd#k##
###$##dh###a$#gd>h##
###$##dh###a$#gd>h######$##7##dh###`7#a$#gd#k###p##p##p##p##p##p##p##p#
#p##p##p##p##p##p##.r##/r##r##r##r##r##r##tg]gLgL;Lg###########
###!#jj###h#k##hp##OJ##QJ##U##^J##!
#j#####h#k##hp##OJ##QJ##U##^J####h>h#OJ##QJ##^J#####h#k##hp##OJ##QJ##^J###,#h
#k##hp##<#B*#OJ##QJ##^J##mH
#ph####sH
##)#h#k##hp##B*#OJ##QJ##^J##mH
#ph####sH
###h#;#OJ##QJ##^J##aJ#####h#k##hp##OJ##QJ##^J##aJ#####h:#T#OJ##QJ##^J##aJ###!
#h#k##hp##B*#OJ##QJ##^J##ph####$#h#k##hp##<#B*#OJ##QJ##^J##ph#####'#h#k##hp#
#5#B*#OJ##QJ##\#^J##ph######r##r##lt##mt##nt##w##w##w##x##x##x##Cy##cy##
y##y##{##{##{##@|##R|##|##|
######3##L##N##k##l##m##
t aP###########!
#h#k##hp##B*#OJ##QJ##^J##ph####$#h#k##hp##<#B*#OJ##QJ##^J##ph#####
#h#k##hp##OJ##QJ##^J##mH #sH ##"#h:#T#CJ##OJ##QJ##^J##aJ##mH #sH
##(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH #sH ##
#h#k##hp##CJ##OJ##QJ##^J##aJ###(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH #sH

####h#k##h:#T#OJ##QJ##^J#####hp##OJ##QJ##^J#####h#k##hp##OJ##QJ##^J#####h:#T#OJ
##QJ##^J###nt##w##w##x##x###y###y###y###y##1y##2y##Cy##Sy##cy##ry##y##y##y##
y##y##y##y##y##y##y##y#################################################
############################################################################
#############################################################################
############################################################################
####################################$##7##dh###`7#a$#gd#k######$##7##dh######
###[$#\
$#`7#a$#gd#k###y##y###z###z##(z##6z##Bz##Pz##^z##mz##{z##z##z##z##z##z##z
##z###{###{##-{##.
{##@{##R{##d{##v{##{##{##{##################################################
############################################################################
#############################################################################
############################################################################
################################################################$##7##dh###`7
#a$#gd#k###{##{##{##{##{##{## |###|##/|##@|##R|##b|##s|##|##|##|##|
##|##|##|##|##|
###}###}##"}##1}##=}##J}##Y}##################################################
#############################################################################
#############################################################################
############################################################################
###############################################################$##7##dh###`7#
a$#gd#k###Y}##Z}##g}##u}##}##}##}##}##}##}##}##}##}##}##}###~###~##W~##
X~##l~##y~##~##~##~##~##~##~##~##~######################################
############################################################################
#############################################################################
############################################################################
############################################################################$#
#7##dh###`7#a$#gd#k###~##~##~########"##/##0##############)
##*##a#################
##1##8##@##L#############################################################
############################################################################
#############################################################################
############################################################################
#####################################################$##7##dh###`7#a$#gd#k###
L##j##k##l##m########$##%##!##"#########

#####:##O##l#############################################################
############################################################################
#############################################################################
###################################$#
&##F######7##dh#########[$#\$#^##`7#a$#gd<I######$##dh#########[$#\
$#a$#gd:#T######$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh###`7#a$#gd#k###m########## ##!
##"#####$##%##!##"############ ########
######d##e######x##y##z##I####w#######G##D##Y##*##
{{ff#####(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH #sH
##(#h#k##hp##CJ##OJ##QJ##^J##aJ##mH #sH ##
#h#k##hp##CJ##OJ##QJ##^J##aJ#####h#k##h:#T#OJ##QJ##^J#####hp##OJ##QJ##^J###!
#j2###h#k##hp##OJ##QJ##U##^J##!
#j#####h#k##hp##OJ##QJ##U##^J####h#k##hp##OJ##QJ##^J#####h:#T#OJ##QJ##^J#####h:
#T##hp##5#OJ##QJ##^J###'l################
######d##e######y##z############6##m###########################
#############################################################################
#############################################################################
############################################################################
##############$##7##dh###`7#a$#gd#k######$##7##dh#########[$#\
$#`7#a$#gd#k#####$#
&##F######7##dh#########[$#\$#^##`7#a$#gd<I###m####P##
##B##z#########J###########B################I##z####
######T################################################################
#############################################################################
#############################################################################
############################################################################
#################################################$##7##dh###`7#a$#gd##k###T###
#
######&##o#############R######'##`##o######)##r######7
##F##G################################################################
############################################################################
#############################################################################
#############################################################################
#######################################################$##7##dh###`7#a$#gd#k
#####G######
########R######)##k############B###########A##n########
"##O#######################################################################
############################################################################
#############################################################################
#############################################################################
##########################################$##7##dh###`7#a$#gd#k###O##P###
######D##{######'##<##Q##f###########[#########S#########
R####
#######################################################################
##########################################################################
##########################################################################
##########################################################################
7##$#######################################################dh###`7#a$#gd#
k######^##v####
##X############*##+##,##-
##/##0##2##3##5##6##8##9##B##########################################
#############################################################################
############################################################################
############################################################################
####&`#$#gd#RP##########$##7##dh###`7#a$#gd#k######$##7##dh#########[$#\
$#`7#a$#gd#k######$##7##dh###`7#a$#gd#k###*##,##-
##.##0##1##3##4##6##7##9##:##@##A##B##D##E##K##L##N##O##P##R##
S##s##t##u###############################!##"##-
##L##M##X##jjRRCwCwCwC######h#RP#CJ##OJ##QJ##^J#####h#
RP#5#CJ##OJ##QJ##\#^J#####h#RP#OJ##QJ##^J##aJ#####h#RP#CJ##OJ##QJ##^J#####h#RP#CJ
##OJ##QJ##^J#####h#&P#0J##mH##nH##u####h#RP##
#h#RP#0J#####j#####h#RP#0J##U####h<I####j#####h<I#U####h#k##hp##OJ##QJ##^J###!
#h#k##hp##B*#OJ##QJ##^J##ph#####.B##C##D##P##Q##R##S##l##t##u##}####
####################!
##"##L####################################################################
#############################################################################
############################################################################
##########################################################################$#a$
#gdp#######$#a$#gd6######gdp######gdp###########&`#$#gd#RP##########h#]h#g
##########A##B#
d6####L##M######################(#####
#u##v##################################################################
############################################################################
#############################################################################
#############################################################################
#######################
###$#
##C#"#a$#gdp#######$#a$#gdp######gdp#######$#a$#gd<D#######X########
############
############(#####
##A##B##M##u##v################?
##@##k##l###########################]##^##p##t##}#######
###########L##M#################
###h#RP#CJ##mH #sH ####h#RP#mH #sH ##
#h#RP#CJ#####h#RP#CJ##aJ##mH
#sH
####h#RP#:#OJ##QJ##^J####h#RP#:#CJ##OJ##QJ##^J####h#RP#5#CJ##OJ##QJ##\#^J#####h
#RP####h#RP#CJ##OJ##QJ##^J##A####?
##@##k##l################]##^################L##M######
########################################################################
#############################################################################
#############################################################################
############################################################################
#################################################gdp#######$#a$#gdp##########
####D##E########################A##B##############
#####################################################################
#############################################################################
############################################################################
#############################################################################
########################################################$#a$#gdp######gdp####
##########D##E##########################
%##)##2##@##A##B####################################
########## ##!
##X##Y##c##d##i##j##o##p##w##x##########
#########################################h#RP#mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
##
#h#RP#5#\####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##mH #sH ##
#h#RP#CJ###
#h#RP#CJ#####h#RP#mH #sH ####h#RP#7######################## ##!
##X##Y##c##d##e##g##i##j##o##p##w##x########################
#############################################################################
#############################################################################
############################################################################
##############################################################################
############################gdp###########$#a$#gdp###################6##
7##P##V############0########0##1##C##N##j#############
#############################################################################
############################################################################
#############################################################################
#############################################################################
############################$#a$#gdp######

##7$#8$#H$#gdp############0########0#########################
##########K##L##y###### `
iTTTH #######h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP#\#mH #sH #*#h#RP#CJ##OJ##QJ##^J##aJ##mH #nH
#sH #tH
##*#h#RP#CJ##OJ##QJ##^J##aJ##mH
#nH
#sH
#tH
##0#hp###h#RP#CJ##OJ##QJ##^J##aJ##mH #nH
#sH #tH
##*#h#RP#CJ##OJ##QJ##^J##aJ##mH #nH
#sH #tH
####h#RP#CJ##aJ##mH
#sH
####h#RP##*#h#RP#CJ##OJ##QJ##^J##aJ##mH #nH
#sH #tH
##*#h#RP#CJ##OJ##QJ##^J##aJ##mH
#nH
#sH
#tH
###########U############## ######## ###
## ############## #
###########################################################################
############################################################################
#############################################################################
#############################################################################
#################$#a$#gdp######gdp###########$#a$#gdp##

##7$#8$#H$#gdp####################K##L##x##y################
####################################################################
#############################################################################
#############################################################################
############################################################################
#######################################$#a$#gdp##

##7$#8$#H$#gdp#######$#a$#gdp##########gdp#############################
######.##/##d##e##y##z###########################
vc#########
#############|######
%#h#RP#CJ##OJ##QJ##\#^J##aJ##mH
#sH
#*#h#RP#CJ##OJ##QJ##^J##aJ##mH
#nH
#sH
#tH
##*#h#RP#CJ##OJ##QJ##^J##aJ##mH #nH
#sH #tH
####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP#mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP## #h#RP#\###h#RP#\#mH
#sH
#%#h#RP#CJ##OJ##QJ##\#^J##aJ##mH
#sH
##%############
######################!
##.##/##d##e##f##o##y##z##################################
#############################################################################
############################################################################
#############################################################################
#############################################################################
#####$#a$#gdp######gdp###########$#a$#gdp#####################
#########>##V##Z##l##p###############F##J##c##|
###########################################################################
#############################################################################
#############################################################################
############################################################################
######################### ##7$#8$#H$#gdp#######$#a$#gdp######gdp########|
##########################################
####################################################################
############################################################################
#############################################################################
#############################################################################
############################$#a$#gdp#######$#a$#####gdp#######$#a$#gdp##

##7$#8$#H$#gdp####################################
6##v############>#####\##v########U################
{f{^^^######h#RP#mH
#sH
##(#hp###h#RP#CJ##OJ##QJ##^J##aJ##nH
#tH
##0#hp###h#RP#CJ##OJ##QJ##^J##aJ##mH #nH
#sH #tH
##*#h#RP#CJ##OJ##QJ##^J##aJ##mH #nH
#sH #tH
##*#h#RP#CJ##OJ##QJ##^J##aJ##mH
#nH
#sH
#tH
####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP####h#RP#CJ##aJ#####h#RP#CJ##OJ##QJ##\#^J##aJ###$##########6##v#
###########=##>##U##h##{#################9##n##############
############################################################################
#############################################################################
#############################################################################
#############################################################################
#############

##7$#8$#H$#gdp#######$#a$#gdp##########gdp#########K##]##m##x########
#################################################
#############################################################################
#############################################################################
############################################################################
##############################################################################
##$#a$#gdp##########gdp#######$#a$#
##7$#8$#H$#gdp#####################################
########### ##!##&##'##,##-
##7##8##J##K##R##S##:##z########Y##b##c##d##w##x##########
p##h#RP#CJ##OJ##QJ##\#^J##aJ##*#h#RP#CJ##OJ
##QJ##^J##aJ##mH #nH
#sH #tH
##0#hp###h#RP#CJ##OJ##QJ##^J##aJ##mH #nH
#sH #tH
##*#h#RP#CJ##OJ##QJ##^J##aJ##mH
#nH
#sH
#tH
####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP#mH
#sH
####h#RP#,###################### ##!##&##'##,##-
##7##8##9##J##K##R##S####:##z######################################
#############################################################################
############################################################################
#############################################################################
#######################################################################

##7$#8$#H$#gdp#######$#a$#gdp######gdp##############3##4##J##K##u####
#########:##?
##Y##c##d##e##m##q##w##x#####################################
#############################################################################
#############################################################################
############################################################################
##############################################################################$
#a$#gdp######gdp######

##7$#8$#H$#gdp#############################_##i##j##k##r
##s##y##z######=##}##################################
tld###h#RP#CJ0#aJ0####j#
##h#RP#U####jK>
###h#RP#CJ##U##V##aJ####j####h#U#U####jbK>
###h#RP#CJ##U##V##aJ####j#####h#RP#U####h#RP#CJ##OJ##QJ##^J##aJ###*#h#RP#CJ##OJ##QJ
##^J##aJ##mH #nH
#sH #tH
##*#h#RP#CJ##OJ##QJ##^J##aJ##mH
#nH
#sH
#tH
####h#RP#mH
#sH
####h#RP#CJ##aJ##mH
#sH
####h#RP####h#RP#CJ##aJ##mH
#sH
#'####################
########)##=##>##^##_##i##j##k##r##s##y##z####################
#############################################################################
#############################################################################
############################################################################
##############################################################################
######

##7$#8$#H$#gdp#######$#a$#gdp######gdp##########=##}###################
#########################################################################
#############################################################################
#################################################################################
###################################################################################
################################################################################$##
7##dh###`7#a$#gd#k#####gdp###########$#a$#gdp#########################
###########################################################################
###################################################################################
###################################################################################
###################################################################################
#######################################h#k##hp##OJ##QJ##^J#####h#RP#CJ0#aJ0####h#
RP####j#####h#RP#U####jA
##h#RP#U####jK>
###h#RP#CJ##U##V##aJ####6#&P##1h#:p#RP##/ =!#"###$#%######
#F#
9##SL3U######JFIF#####,#,###C####
###
########!####'#))'#&%,1?5,.;/%&6J7;ACFGF*4MRLDR?EFC#C#
### ## C-&-
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC#####/##"###################
################
##################}########!1A##Qa#"q#2##B#R$3br
#####
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
############################
##################w#######!1##AQ#aq#"2##B #3R#br
#$4
%####&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
#
########?#(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(##h####q#Z# #M##q##m>#xV#XNDi^g
#R#!:"W '|#,Unmz+##^##]T~l{U|
##s6?
mQ#(0$u##O'^\##o#h#BGu##Q#o#[C<DbQ}
(#O#[#=*J6n9Ntn#;w\~z\\Ck#s,p-
$#T{$c#+#X#BIJ
(za7!8#
##\:*gB<r
#X#5jx}>Ve$m zds@#E#U[R/ommUfP@#n"mgx0T#QA
#I#,T##[#q@##JZ_#K"|p# Xd##jO##x
F[wB#L#g14#QLhig"#Y =m5++e*2DR?
#@#hZ#^y{&qg#sY##<G'5Qr# #(#Pe('#{.c#A4r!
#@#QEEuuog#x#o~%y*, n##Gm}kvHb#H@#feE,#G$)A
###y#W?#}{S[hIX#AkVL,a#,##
##Ky..eHK;P:ji fq
)c/1###+#;##fO/>#XY[qZYR4##P#TrC#M#m+m;#\#SQ\jv6
W#US4#fE`#H*FA#)h#(#(#(#(#(#(#(#(#(#(#(#(#(#(#
|
'm
m2##[##U02#uT###s`{WXjvZ\Y]C</^7###[o3lnqW)Mp
# Jo#YqW#D'##>taU->Vk##%#r#|
#j##mCT+,i(){:l-xsPW#bR# r?#[#<#d}d#[Np\-
#;I s#wCGMt#[0vK#G
d`#{3W1^EoC#{M2O$&b{#[<
#s@#O#9bNf,Y#0N=u;!m.MR#m#3,e#IM#j##|a##m
QCs=i
06HZy0
#=(#tO#i#\Pe#F#<6G`#=k1I{Iw{yY7###T>&<###m4gh_#2b##
G^#NG#u#h##zmxno>3O#]J.#b T9##o
|JN{{lDY,#P##X6z?RfeM\####3i?#?72xSV<
##GNo_d
L.#Kb6#(}##KG#O#q"NGp}|.4yuaqy"#w#T_#V9<####l,re[#
#zD####,H]x8Rz
##Z#)2## =q zu#y/#\ZZZhz{],#e;~L#<To-
-.8M]#]:#~[MgDY#[G g#J+{# #
P:`F##xua/eeY&1BI+T#)Ayf#L1'f###Og^)|t#o'#'
##}<[|^B#C#
#+^xJ5yE`z#g#VI:KxY#l#\&mc_#c\u#I### +
v#4vKugGlR#;Fy<###t$$#,b
Az#Z
X#3####>k7#Iov9aT5_Ox#3kkuC"C##Bslx
ig
x;###g|#kZ#M#pA<n z##t#1##)ebF# u#?##|
##7]RA=1I##ROs_ R####]#|=$cx##
F__
v#+Ox#)[ki#z,v#am#zsZhu#
#5x#(
V[XA1<F#T#R/#cGm#R##K#Ko2#!n#K##6{9
W70G#;_e#M:or##!#Gk%j0###aH6 </M#w_D#
###':O}t{k$x###3^f#s67s#FL9#=+^
%.#a\#t~#?#-#^w,%+G\#]#*O#Y4pgyIJ~(Yoo <#!

N==(#~#Kwkz..#+##9#q+#|HzH#<
 #
(
(
(
(
(
(
(
(
(#'###c<#>(#b=6;Ns>~@##Q@##Q@##Q@#5m*Yk=J.
-QGB#~##<%!
W eI E#r#wfVK=\3 ######]-
WZ68P#wt[_#i#i[AsI9$$km"i!e
l#=}G')k#EIB$qAEq#J~X#0{#3h
#7zV)u(#0G@%^i B,+)
#88$t5E#q/##n-###G##;uy#.J{69RIWn
U}Fy#+##d$:OE#q'##w q4@cix#oe (##^
T2#
#Fu
H# ###r##h#PtP#1o<1i{=zgYb0p#6#z -BX
%##==W#^ , ,, !?w#v P#/iB,k(e6q)\
#jz7
pzU##^[ud#Ea(# 4 ##^#'#r9#mHY#/#qRK##
(#eNv##D8###x#|+#uk|Eq\s#M]#]
#:dk*o}FuM_YX,5T.~ #3]##Rm64Al4#b#lR1n[hI

%(iH,rI#jQ@###ec#v#OzpMGR"g9#^E#ax$#mbFV#W
#7K4o
"#$cZE#p##9qq$.#v,#T 2o
=13Ok#7%mwap##Ou4P#/</ei7 :|TT #<c=##0t/
#I8wF##?:4#*#)#)#)#)#)#)#)#)#)#)#
9n#
v=#6}J#4 l#####w1q3G##fv
##=+Qcwi#g3#DT|
G##'nN#`3N2#T#sX_58cx7ls###e4[@R=v3P#E#P#E#P#E#
P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E
#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#Y)m#[#i7gFj#ogt#u7 k
%l
###\1#{WAn Q
#+j
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
#Wh$##X^=FI 0 qO#2#H]t#p#+z>#.#h#+~
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
#\#Ys~#O#6#kG##x%vx?F_r#@#Y#]#W##
#(#(#(#(#*i$q{vq#W/}#~N/#
S4^N[!1[#
s&
8####
o#h7S$6,0TEBO@#y5@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@#
#Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@#s##oo{v#t#|Km
}#5#ik##E^Z#k-7y##U#(#(#(#+'~&7#\li3DsG`? #xN-
t]#.{
r#M;#uiv>c1+6#<#)w:EYVY#>s'#i9#nm#
MUe9c:#=+!K;hE-
# ;#] I]wP0i-
S#"2#,K2M$1<##e##jZ(##~#h'lB62bF
v<O';+87&#m#;|`#g$fn/6x8##.`####7#
=yK72j#9MrJu#G/k##=pbm"oC[##QE##QE##QE##QE##QE##QE##QE###QC<
#Hy `#rB?N#h
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
$M{##`#k+CQ7###_-oXD#rY#]#?
h#E#P#E#P#\<Q}#k##G#yfGn#~tVa%FA<
F##zQ
y;4#{r%C#p:{.xk#3uxW
$y[#Q@##Q@##Q@##Q@##Q@##|;h2H{#_`:w5G#~)#~Yo#z##^.|
#^J),eE.=}qZ#,/!,dd

S#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P
#E#P#E#P#E#P#\F6\#0F ##M\6#W#7u (?AV+5i
Fh#(##^#d5#"5;UG E#VJ7.'%?c&^~N2#o##GP
%[ZHa-9#1zh
(
(
(
(
(
e###)P##(#4W?##C#
###X2>('Lo##P#}5s:4#j:S#yn
+6*
\P#gE#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E
#P#E#P#E#P#E#P#\s##5#y_W#_
2~####u#E##QER5H4]*##X{#1r|-
c^ <#7~F]#Gt}>#c#,##9cz1On|
QF#f1TC#
v #QE##QE##QE##QE##QE##QE##QE##W !
*C;,:(##$#P##py$U#wJ[.#;g#*{#pA#P#xXd2:##A),`##$
0#w\`# d
##+#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#
(#(#(#7"k~nW o##1##h#]p.#b5##Z2#;j#z#-
##AO#&tP>RI3|t5x^>txA5w9+#~##i#[H%H*
\#J##P##`##)#)#)#)#)#)#)#)#)
8i.$d\#,F9
wKR"+x#GLJ##$,P#bowW#VgG>dd##8##h#(#(#(#
(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#+d^#]B
w# w#|P?N?
# mx #RRF1#@*5ht-#R;xm=#x##$
#)#S#Ep<<vV00+[e#H#yzc>
(
(
(
(
(
(
(
(
(
~ Z\Yx*I,@#9m#P#@###OQ:#F2O\_mB;j#I ##<$|
#]##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE
##QE##QE##OI##~$|)b#@#p\G##xKmbP"Hl##N*q}
+oa./._d#'#
#FyZZJFH@X#^@#?#s@##@####
(
(
(
(
(
(
(
(
(
(
(8#:feXE#}:77A##>]+PUm[t7#}V##2#d#\o
jxBo[C#l#[R=C3##vtQE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##QE##Q
E##QE##QE##QE##QE##QE##W?##-o#I #3c,
{=[#/H^Xj#c#VG#}##]ur#>#u_
##n##mNi#`I## tZ[Em###(##';#m4P#tH##
#w##QE##QE##QE##QE##QE##QE##QE##QE##QE##QA
E##QE##R.:Yctfc*q~Cz( #A###ex[^#o[2#?7/Zf?-
D|27|==+A###A@##Q@##Q@##Q@##Q@##Q@##Q@##P#9##h#(#(#]
[;X###$###E&#u-##Tos#~f_(#.#z#E3#q#`#Z7##T-ylfGB\|
#4 6*F#$3#@=(#J*6\M#a###,mD?
F##*w7##h####*##]AbzmJ7Of##.<X#lu
( #M:8%&A#P
#G#(#(#(##FqxKK
# ; r~X}#]
##9=oc$'U#VSVv#Ft{i#mfpH#c#)%QB'##xz#5 E;>#(
7_#k6#2}h#?#x#N
[j7##^}C)h##
(# # #M~mn#m\t)#j#\dS+8&Is#
vFUSzNE#FA gE#r*Yom_#)
(#
O\#?Y#p#e#a23dw,#3WCE#s#N##|
S#b#B#zl##}~^#k75Q@#!z/##S)UI?
0wG#gv4P####>##h*xcO.
Y#]m##]xcUAM##X##)O#jd>#9U0o0#52t#*H#`#J(#i|)|
d$###
;#85MFx#)c*Jp##[E#rxOYBI3#IPvX3;#3h##P{"
Qs+YT+##`#V?Z[n%#U#z1&:d#<{#kE#p1IO#Gt]?
NG5##yQB
NPt^+9+O###w#Eim_L]o##-
X4Qt#5v:#4p#`Yg
#5|0o.uKMC\ml#Xc&1###WWs#'[{;mbEiW#h(c>'",*U|RG
4ry~W|BQ&?#/|(#{KV##k#a#
T~#K[uuMT#[P#Bx}V)DIP##r1#R?gk@#x
#1xJq}z+#
G.#{D#9
###@#:%# g:?#tGz(##?

#s#lr}yS##tQ#mkZP#-']] 5#azG{R#}VPN #}tP##>
#YR,
jpMGs" !RF'!<
h#G#G ~#tAez#]u##]&= U#O)q1B 0#S|
d#@###8BA#$GOFq9<R#Kquy#RQF#I###s#=qu/##R?
9 Naq ]]q##Z#'ny<P#1g-;^7My`f(N#UONk^#y##Qr#
.99
##/#z%Q#Is z #V
# $y^E
Qr\?
$tt'
@# - )##1
xP 1d!
<#
b9t##@##='T##OF7P{+I#1;fBrT@##Q@##Q@##Q@##Q@#r>>?
GD#kG7|'#(#(#(#(#(#(#(#(#(#(#(#(#(#(#+q
fJK/c #'o]6Xh9Q^7#YXd0=A##K#k0)<aA#~#\cz#{a#OlB#
p##r1k#(#(#(#(#(#(#(#(#(#(#\M##O3l
%.{#2Mp#0^<M"{&06#Q* Z1{@f'
6#s'4>+M]#E#-QE##QE##QE##QE##QE##QE##QE##QE##W##OIor|}r
37#v@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@#G5##3
8!]<Nq,#vG]{>7Eq#C$#d#pAEs##5Y2,v!w
'#:q'4#QE##QE##QE##QE##QE##QE##QE##QE##QE##Sf8"yfu(*$#>(#\ZZkJ?
iV7#s#z88#wm1]##~<p:###Kd##qI2}M@##Q@##Q@##Q@##
Q@##Q@##Q@##Q@##Q@#y '##)w#D/A~##,\u#r#h#(#(#(#(#(#(#(
#(#(#(#(#(#(#(##Vovu].F8
##;r1#Z+/#$>!F*9##2nu#.}?
TvmON13s+#(#(#(#(#(#(#(#(#*b##$BT?
5_#s#wK:HQf#O#
#B#i]F#@7v#3Z# ###y^py9>#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#
P#\o#x]=$##o:(
(
(
(
(
(
(
(
(
(
(
(
(
(
(</<c##O##h
OJHedC`#O5[Wm}6#:#9##r
i###j#<'i#w#(#(#(#(#(#(#(#+#F3G]\ml##s#Lv+
}<B,v^or1?::#4XlU3##yqK!
O&(#(#(#(#(#(#(#(#(#(#GV'h##o>#i##(#(#
(#(#(#(#(#(#(#(#(#(#(#(#(###A?#Z2}##/#wz{
##2#d#@#X[#]ZJ*GSEM\7n!u[-2c#-
#'qOr2y#dWs@##Q@##Q@##Q@##Q@##Q@##Q@#y?
#I0Im3B8#3#g###C#\#V###g##
Tz2#fyTI
T ^b[8Oz#
#(#(#(#(#(#(#(#(#(#+&uObC.3e:q?
w6q/M#wyZ#'(##(#(#(#(#(#(#(#(#(#(#(#(#(#(#
(#65#!o&
gp#
RcNw#S>"^;#JSow##C]#r#6&XA%~$
###
#uV~LM
#wV#
#(#(#(#(#)$"F#2##ZZ<c]x[O#a#gTG1DqZ#?c?
.#"@T9##,A#C4(4#,Sd0F#A##(#(#(#(#(#(#(#(#(#
*Y#9:(
(#GS(#
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(8}gOm#4vK##K9#.8.;`]~ us#tx0>a]
V# +n?{-B[*FyvC
#Y>#>H#Jg#8j#(#(#(o#x.nl Go2##^+
#EQ&yO AsU#/#:K<y#zj#(#(#(#(#(#(#(#(#
n__
(#(#(#+(-#Cmc9;v|W2d=&6
@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@#|
&S6##LT0#p8 v~3J-RBF#nn#$'#28"##VkiRh#
I\#o0 #[Y##:#{k_#jfCmI|Vh#gzFw[]6l
!G'#q^#&#<5xoKdcw"#{ey\,N?
#5/##Q29#Ap{[#
%#2k>w3b; l@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@#qc VCt0
ykoP#]E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#
E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#\?Y#j
+) # #U:(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
%xQ(ya9Zi>'%
1iLA/@#U#Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@#
#Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@
##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q@##Q
@##Q@##Q@##Q@##Q@##Q@##Q@##w
dv#8#
g|
P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E
#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#E#P#F#I###@F#4m#[
###JFIF#####,#,###C########### #
#
##
############# $.'
",###(7),01444#'9=82<.342######################################
##################}########!1A##Qa#"q#2##B#R$3br
#####
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
######?
#xKF###`zQIF###`zQF##G#G#G#G#E#E#E#E#E#E#E#E#E&FFF6 mo
#}Fz6 miiiihhhhhhhh}(}(}(}(##J0}(##J0})0}
(#(((((((((((((((x)h(((((((((
((((((((((#J0=(###J0=(##J6J6J6J6J6666666666
Mmo#}Fz6 mo#}FFFFITq0$1TRE#QE#QE#QE#QE#QE
#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#TW##l8
;N+-
,##@## #(((((((((((((((((((((((
(((((((("B ,l$mnO##-#QE#QE#QE#QH#I
0$u#p23KE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#Q
E#QE#QE#k:H#IqSAKE#QE#QE#QEfxU.o#h#g#3K=]ogKFx$<T5##N
ly$##w^se=/X}ZY d#3}uMbF#7qI5####8)G###Q-
#~'o\zR#@[#L_)###\#<;ccn?J####lyg#H?
e#vi# }#zi#f:SO#p7##zSe!
$O_#h#gD}W~u#C#I#A#A`#y{}?_qJ#4%#f'8#L##S###~!
^yt#F+#1#"H09
g \#j' ,Dw

>%#lW,OQ##?>'h# /
! ##y##'i*>[yp;##7J(#98M6?
cm.#_CNoX5 G,
#A#v#D7'(#?#^#< #
fs#c ##v#<}#t fT#= #>$
%Ci.6#+#I###*w,O#g#y8#N#J1#LZ#g_$##
#8#M~#)#o$##S?`s~xc;?=?d>###,I#Q/6f_9
!|
>?#K#v#)####{#"# ##>##s#`#CPNn##?b|
B[n9###!###Y#&##s#o#GKT#Fe$i?`
]q#7c7#OQ###C ##KqO#?$#
;#[*)"~"B,#>XyE}ts#)W#?`1T%9 gg4#XZ b<
G,=#q#####y~!- ###}jE#f7
i####8?#=#s!
q##9o##^MO#<#0W0@#<gR#x##kliW#c>##cOm#2p
5(gJ|kH:y#~V#
r25H#a)##+j#xA8#<:#<xD?#<I6j0|
#F#n3#>#z7#[hmzywIp#?
x#k#u7mpOa#] q_17# p82#=
()#3OZ*##GqVAQE#QE#QE#QEG4#\##28?ex[F|
#c*tk#p"i #RZx/JV$a?"P*lbn+i#zt*#8a
Om#Li#Ce eveO`#hhR
#6#GYA;#/VwX#i#x#[#EPm##*3i`O#
6 O#B##
_QglW'#t#i##?#3#J#mLs
#'##x#+#i#8,n^Jw.gZ/RaD#>SB
#6#X6vphM'OF#_+v0\-#g#~P.-#p#XYk#sc)$m
'##6vvhqR##@E tAH4 r-!YAAY)8f)#L|
n8#b
# #[A ,
@ 3 Z
ajG_+#ig9l#4:9t.###@1#o\B=3#t#55-
#rgDbez|#t?*##i5E#9ZYl``|noA>86;#
'>#>P#pw.X0 #8iA}#`lw#
6yA>X>o#c@6p7!H9#Zt[K=###(}#Z#a#e#4-
%+D#gj3xNO)M.#e}6cXYnkhz#`#.?#b#.#a#h
SglK#o#X`Jlc0#mvqzU[|#Er#C[@-
d#)X=FCYZPS#b#c[ #L##o[ #

Cid` ##
Ci'd#E74it:UX##+7m##d.#ieA<!Q#953d{# ##xcBlH5)0
##1{'&#> G#*'$#m####w##or#75{U#w###oi|'
#UYlQ#H#x*p}S^>->TY##Ol+Agd#&FW
#d V###?
M 54 [;'#I?WZ#o0F6y4#M?tRs}D#?
+#V###aIM(
]%PPF1#k#M#2m#Fm|*##coIuq>
O#^B7MO#Dq#&*8#TGF XI<#3Ny#[C&
#T#x###s#MVo#$#`##+##M#K+mX|B/#r:H#L#;
)O#Z((((`#\]#NE#QE#Q@#
[km:JsS##$#M<
#E#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE###AE#QEr##})#'nl.%^V4
d###T<.##25_#_m#wvQE#QE#Uscloh ;sE#QE#iC#
#G#~xKKEIS##oZu+i&=wWa>lB@#
9#G^#J(((((SNhutQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE
#QE#QE#QEP#O#*?#j##wc|#*N)3=#EL#% # _ m `#
.##~49#8 F##jk#p?kycwU.vOSO((((+$l~"
#NkMDC|f#QE#QE#QE#QE#W!
r>E(((((((((((((((((*[l7#/Q\
|#y>#gTq}C#?<V?5+#h##DSL!$H5me
p#0\#?V<~p'#2?$`U#)NzRx0#@6?h'#?A#0+((((+
#I#a]#db\e#*zt((((n#O#2>3((((((((((
((((((((#}#23t>aWb8#Q\e)Bc=+s##u+D#eP#c
l##'S$v#Do9#|qG#^Gn=|yK2})##vGI5^%-
m7#r#&&(((((#*#CYS#n85TW# Y;QE#QE#QE#QE#QEr0p:9

>QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QEr~3G`Bt2WYE###"
#=~jo
####q#z"GN#l#
f#{l{Lut
aGOjX#X###Qxv.#J|'&##X'*#s[5k#jW##O)vc#hkh7P#$r23
QkRb"] eOSh(((+> 9U]#Rp~#I'$
E#QE#QE#QE#QE#
##sZ(((((((((((((((((ei{ t;r@@@
2 31
=<#JAX>(<Dzy##nFnk#C4#o*V#RC
.
%##S<,##qI.m#'#o#7#}\{x<# s##Nj&X!
H#q0UX##r%X#de#8#z
^%(Li&k-B[o#r(:###,Z#S-m##q((((?
#J####rke^O((((QK3#Q$
#k)qpKi&hR&zpH)
sq#xW5p)'}b((((((((((((((((+2##6#
2I=hz#.dbypc#W@Y#{Aj###%-#p+G##^#{#cy#xH/
R###OB#vG_#kQ+2 `<34s##A5ov
##k/v] ZUN6H'x[c#h#]h_ZpXO&K[z6###
~tV9
{.k|Ge&##CT/4Y#VV_-#RGj#4m#x!H#,#A 9#tMm=WS yvmB#j
(((K##;#9w4T2:d3N((((h4[}3lW#pExZT#=;#*
-&TI_YC4l>5Qg+
+qs]LITi9#ma3`(1#g]5#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#
QE#QE#TR\#$KO-:#p <T##x#V#7i#OC=8^b4@-#/U|
KKr]r0#fx#|#\+L#U#~2$6K5k~"tGW#m
#Ar,;F@J}>m"dB9vc2Dd%#p#z|9-O1BUu}Au]N#&@#
U$l###o#E;ds#O#jc#yP>y##4s'Mdr6J#QWM9
%Us#222
R)L#RL)goI#.;WA#t4QE#QE#QE#W#-
#FP26QU#O###<KRQE#QE#QE#QEAygojQ,+#+7M
;=bF#.'#Z[o###~p##l!Fwo_dx$#@1=+t#UCmk#e#
Uz
E#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#V>-{}H[#QE#W
{#2bR#zc5ecy##h#@###O#
,#xu#/#q}bqenO#x^{#/zv[##XZE)B##S;1}#
c{#
/#Up{#JW#1y{w8#O###:t$u<n##

= #2#p#=c#:
#v.#n#T0sL/o $ c'#J[y
#Y$&#&Bc`M###E#8#m#4O4.#bU#F#G-#QE#QE#QYa[-
7#6I+#F#eE!#uZ#J#<;A z%#QE#QE#QE#QE#W
%dO#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#Us@ih(<<#'+
#m#'`!oAE#_:k2zMe\Om#[yL#*|
w#mO#TPpA1#dye2;nbIH'#$@#brN}##B##
u&K

#MG:oUe#]OJ5#Aeo#;bU;#ZEOq
#a 88<W#= # iQ YyRF2 # : h # . c Z L , q _ ^ a Y # # a G # U V | ?
}@#:c<#hP9##V#Mb{$x`#
##r E7##Uv;sTV[=}^-
_O4"#@N#J3;##n##R##QE#QE#U]CNl##Om#F#0#kr+
F#Ab}sV*J(((((Kl#\d#5E#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#Q
E#QE!!A$#s^kb7wm O#9:rn\Vv;xE`#\gEyLTzl#
# Jte_8 ~~x$ #<a0#0 #\p)b8Q3 _
5O#jw###sR#OV#u"`#g__.$lCM# * v?#RkV
B#Es3]z#hC#:}B^(gF#y:*ic{m/OvX^#@Z##0)
%t #h# m"2##c
#X###N*E9# CkKO 9 #g#d#g?a-b{f###U^ysndi?##y?-A;
fYbyY 8*Ho1 O&I!$F[QE#QE#Q\G##AMv##j#g
IG#>((((~ `i.Fv
uC(aZ((((((((((((((() '|=g4#8<#
OD#kvHZ#Ee#<#.8 8 /#+#^],#2!
##zt#hZJ##>a+dT#J#+ AzF+##ypZX_\R
[ >#l4 #-
2$n
;|1M:##b#ca[ le~#=U}#"`j:!k#V;#z5#.#,)~T#YbU-
Dg#X#nO}{`Emm=##qA#Y}#sX#dD2B3
#X_zh5/$G_6'?ZVw7m#_#as_#` j#"x#I##?
Aym#0"98?k # r # 2 # N y ##_#<O/?F"1
# O#E5
b#9z7nV#d<9((+S#Nc#]#1#}M
%IE#QE#QE#QE#QE#x#AC+#Z#S(((((((((((((((
F|#O 4WM##`ZLn,5c:El0#{qYsDx&r~J]K i#
$#3m#/ZS#SNi
#jkX)#gsy?jKJ#km##~+#jY^?.V
8''k}
Z z#K##X2p`###Jv#xCYW##Y$#t>#P#Psx#ym)"#)
$
#Z#M$(S9#Y,Y#d[bq #`:qX>#tm{#A>#]=s;:F$#Z=9N
##"r@#sV/h#;8#r\xE*#,?
nbG#F`ZQbL#$##O5x##$##wrxO^;##q#`?
L9#hu#to#
$ze?|*IE#QE#QE#QE#QE#x
#vE#QE#Q\'###x )|#w
E#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE2Q \z 0 y F Y m ## j 5
4m#JeL#QY-I#W#J#gV#w57OX=#+>cb)#I
}:}m>Z[F#++.j3TWk=M6 ,
K5llk[x2##:1hy#?ibihwW##IU#
+#(#D#Kggoal^*z#hmQ#5f.B'k[n<a\8+##Qgr#
C\#G#@##NOc[:#&22# # \\DW:Cyh)|?,##`3#3
X##n.-w#k#o<#?h[\#TLHy=+gC/##t!oOC&I#s-
#lVf#T,Ot#JDQe#E#QE#xA`3*#vNq9
%#QE#QE#QE#QE#W+Y7+#R}#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#??
#2#[~g#L[> h#v"#KiG'##OoP[#F2=*#$#]>hxe
l /##Sn#'\~#[, l# l5\M#k#X#Z`#H=#gh%#4&pOiQE#QE#|
,=
B#SbB*6kC##s]_|
\6##VLA8#'5z\xD##OGt[,E*N;Uk##P=Fzw#W)@1I0K$m
Z[iws,t c[7#)#sJb#~##\+#V#%y}+(#L+IZ4QE#QEp~*##
9*
##BO#8IE#QE#QE#QE#QE#x#O],)QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE
#QE#QE#kpi/t# l=A5U+-lc8oW#|
#
# # #qJMCPS#dWC##k#y#UEq _###
#XY~"$##"
V#PJH#h#Ocp#$<?.d #3 1]E#QE#QE#W;*U[D\#a8k#3
70F=+##\gn5^#|;b#tNj!*Z
#v@#W1#@#)IdgxIg5Ag >4s6Z~g<s#
##LW!',#G5^'O*#G8##-5;-?rG/H%7[cF#
#^E#QE#W#W:# gwTL[2)GZ(((*{#\}&Kwm#1mYr;POx
<B h#b>gYU/-O%
-zb##
@ ~#fVVV

&##(((((((((((((((#Q\gr0#nFr+SG5 ^i#
Kw###/##x;J;I4##\##e&#y<@"p#QP!R
#FKImmd8Yd#ZVE,O*t##E###AZ##{Kd$v
8$#j&@#*j((( i"V.Qj_#JY'#VV#wrEtv}#3-
##h#_"#
!m#ib~v#vT#>##~u#o#mt
LO###h#^z#WPD#1$TP\3T2##(M#EQf
FJ#(#jJ((((zlM#%]+2$>;
#@Oi^|#=rl* 6$#[,_#r;}*Y<0m#D###c#:#|
'9(((((((((((((((#]q?
##\RK#u&#iB#vcvk6#$#k_#]'d#xc#b(#;A k>#|
#W#>#8,#@IE#QE#QE#QE#Q####Z:?$##]####c7
1k[Q/#hy,GjR#5##|#v&Y#Ff3##FI[~7mDPO%2)#qw
c_j# fXyE']w5{S#+9###Wx@xv#eS[QE#
%##/8#3'####JyAP
s8u#%#QE#QE#QE#QE#W-
pExk$DX#Z(((((((((((((((#
b.q#0KY\EiV##OGq[aI#LHu<#Eb#09
'###j>"h`Wb3^;&B`\)Uo#Hd+u#((((+:#5mI]H
^##"
^tzfIO,$_ Q#>dx4~v''gY###V#}2#F{kwv|
#/A#eO&*R ###S^j6>#Y$QH957
%VskVZ}$#E#VVY`###
x3r\##yZ$)B1QO(((("
r3Q=!
#qKE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#k6#_d !
##r]F2;u EEqInC#:1#G#Kwo##~\o##~?
G##[(,Q~w###VV#LbQPaT(<1KE#QE#QE#QE#QE#T.
f#K##HmxmVx#$d#_Km k<s\g{#F?:xN8V?f`3#y
I|]###8_N+)yH# ~ucOtsW< 3]K}U\#<#j - o6#
{E#QEp,#x@A<#Q|1QS
((((O#t#}#d#_#RQE#QE#QE#QE#QE#QE#QE#QE#QE#R##-#QE#QE#QE#QE#QEr#
B #s##W]2#H^3_Ac##Fs #[Qn[uy/*!#`d8E##]
$nz###t&##Oz$FS5vtQE#QE#QE#QE#QE#W1##6
27^ChaR?*##kk###\##6#&h#n8\?
 _pI,3;sY#.4#Uya#
t\@###^ #wzVc#B#3H#U#,0W%5(#5CP4brt#T_ t1
&H
L?
##@e$
#fwTm###QS ((((##+*
:`#m##RQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QH2#t^9
#Xgqq_Z]# `##2z
[,0G#q?GW.XKK##,##y?_+ .T$(9
:#
#`N#CR-~mP9-,""#Z(((((C>If#fe9> Ao#C
_b)>|:#q7GLw?jf!##t;Gxu##x##h#lq}nQzk/vFp
#Njy.6 F#:#
#@=++k>#
%E_ZqvW#c##v#);4#E#QE#QE#QE#QE#g#9k#89*^j(((
(((((((((((dcG\eTMo#
D)$wK/p o##lvb}9Z[#m###3Ny#HbBNO#<##1<##?
K\{#]sEcx eT"q+#=h((((()#R# 5]2I
%&38+k#]A#]#]4uK#6#<BT#@#_j61#2gr.#"b###U'X/V
#9R]\jsjr]eNz'b~[#vs]}#x?
#Bc")c##E#Ve#t1]E#EO#Lpc###)##NE>((+#x
g2b##LTQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE2Ww#UIFRx
PeD#
xbbO##K#r+=#gdv=8=ZH/
$FV#Z'N<##ze#,k+l##.\J=
#Zn)##ME#QE#QE#QE#QE#QE#QE#x)##$G#>+z##G^p#*
]
cc
c {`Wv }y?39/GG?|G\AMBRdKsmx=
Z]#1@8]####u#(sgwm}=#}####EUU|#<?
2##7Ufk#Qy#v!]^#k##xbnE#QE#QEs#<P|
4dB?:}#;QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QEE-
04k,#m@OSYYo4#f"q#qPZ###bByQ
%$e=*#*p#Fv#Jh^#-###
9#=(((((((x"DFtT#J=##;#rJQA#W7:#9W< ###MN
fMgQ#%#-m#H
^M4xM#mRZ:#s{+#F6t^5{dDrE<##_h0\^IW'cp*R58
##:#QOF`z#\-+U?
pT$#*(*U@'#Zu#QE###[##5o^uJQUQo>/<a[&Jc#4x^
#n^"ya]'#D

UfG>7D##J(((((((((((((|\"#>rzUH."Ko
q^GJ##### &ya"Gw#m?ZI,##p#Z###a
zh(((((((j_i#V6 2 |Ia54Ye#GnkZE_#j#[#PqWj<'|
CGtp#9o;Z#q|Tp#=+6#UPz6m:#N##xH6yk#F#N?7ZC C


#u=kR#C#f###2 H#'j)0sHE>(###~#h9
o
F?
6t <#R{}@##'#j}[m>G%'#WWkym{#m2Jjz((l!ij#}
)\/./Z #iLNyN#
,Zlt#uo#[F#E##U=#:er$(
###kIy^%u.
*J(((((((((((((FuE#zbWoA.G#0>+*7[#Ja#z
!faJ9##Io#(B3o#[Eem]yYd9#J#O"A(
(((((((V.-# #Uq[0#U#5##u+#m'#A\vmO#Z"#&0@##?
lUNqdp#<#>#<>"
h#1]c#xl##S#####MtMgWkEB##1O^E#VKE7UBCd#1W#N
D#n#}:)#esCP0 #b#f#tE|9e
Z.owbs#E#QE#QE#x#GihKY[Pgw#FU((((((((((
(((+)u"
9##jCPw###i####3##9#Wc##c'#W#KU-L<ye#Yo#-
T\#~WY$u#,|9cBh((((((((#7V
yd?#K 6r1 Y\c$#5M^##X#3(U
zc]x3JhQtz#hhjd#####2S!#O##I$vz
##<K/7zy$}'`S&Nzc<_
z#;m-y#$zV#QE#QE#QEs~:##KC!jz~,Co% g#i#M-
##=0k(((((((((((((g2F##LA+gz-#$#x}?
##4###?+d-
P##8^#v/E^##6+#V#Y##{o/d~#E#QE#QE#QE#QE#QE#QE#QE#QE#x###
f@z#HYtrTUv##ax
4mn#}#-$.\##+VYYjY.:1 r##9p #<#S Ri<-
m0]sp~###2#:mwOa{:#J7/o+in0E#f#
#=MkE#QE#Q\###s#C89#O#V<# (# ((((((((((((
Rjji&.eB #]/I>#P8?
c##.7I#jeFC[ua###"X#3 l[#`i#
^#=s^#BfcXzD?h
W#\f#$q[#6PL$T$$#QE#QE#QE#QE#QE#QE#QE#QE#W#q#\#^r##9#o
%#y^Up^"e##?Ye#!#z~zzVHd+6l&p?
#q*2IRriW>(Ze}#6,#}r+s9m+T%##Jo!#
%+umX#r3#k.ok 9 Fl#k##0##QE#QE#W?Us## #AS@`#tcfW#
~!##K}Aa%LH7#yk\U#!`#
iQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#WxW]#U8#X{d'PV#+#
yWVpY34P#Ig5XnV8#tc=Zs:a#I##-Uq4M/Sdo#~#:
;g[mo"M\c9<E#QE#QE#QE#QE#QE#QE#QE#QE#xi|MLD?
GXd~S-
#>!! #5^/\
j *E
#&Dl"9U'###ZSqoc#L$###{#[Wv33#yyE#QE#QE#QE#QE#]Dc92|
b.#1~HE|Y9<^;bVsxonq>\*#h#P
kQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#W]#k6
,!;##l!WE|##9*#9+#oxKCO#k4\`#v#{p?*-
#K#_5{#cF#mZ#hKwK####Mgk(((((((((('o7o#(2Xv
c6#sY#sy#~U5Q# m#n9^?#TTeps^(<a
>5{##=4O]Ds#H#Ph:mqks#ylv>((<^|+#p|^#Mn=#P^L
rr0H#=p#F#@>>y[9 v[_qv((((((((((
0#Gz<Cj
((#fW$`?!*#pf>#<s[1hM#8e#^[#/-1BF@!
'X>fGAU((((((((((h## jLo#(\1 #`!
A'B)0N?/U*y##uz'#fI=F(^(?##cX Ks#0>[#kO
ZjZm*rN*u#V5hH
((+#?*j#g #]_]cu ?,)^#=#D5&/<##?#Q$Bj
t#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QUHI" _X>51e}dM#y##D
A*8\H##&N:
1= R#%TNk;#Urc
.d$KrN#udhVA####E#QE#QE#QE#QE#QE#QE#QE#QE#QE#QQ.###:oom<c\#:=
;###1T{ v2
#y#h!JiQA8#=+
O#x~#Z)5#WS:#rE{{#\###0*#v<W]#kfW##3Z ((:w&
#ZX0#Vt5##]:#+kT1## pr5[PK[#kiYT i i 1
|94?c[s#H_?W[\kk;.X"
%`#NA##(((((((((((#+K/#.#LYN##W# 2|
#+5[b9qHk+#]}n]BrZ]aB/Kt#Ve#I9\#t3S$C###Tx#
9#ZE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#|B<8hP*{{h
=\##ldB'iF#2

/

#
<
# ### >}7
)#XF" k[ _
Nm
#c#<#9##O
Psvkpd2D#F1w#QE#QE#W#xFP^[;s#qVj#F`#z O l
%ax<+[Itn1j!V4d#1R
Fp?]</I#fl#Nk'[#U9#%U~(((((((((((I|
AwxVcc3:6O#:2hD3ne #Vt#=I#.gb N n p }En #i N l
[Zv#qV#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#Q\o##:Ymg4*#g_ o#
] |#8 +:#
yHccqBE#W#G#B.&##@+#JJ
1Z~#5#}qjI2#&#Z(((|Z #i#>kgNhU{#kq S
=F+A#v#vd#W2#h]
%9(<#Kk;"6@9#E9POqKE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#x2x{NhU
#o#O6Yj+
#
g#nm#aRi2_0Fd ku#[^bhR"&s"pN#J<#Ek##1" ]WKU(G
#E^###JZ(((((((((((AEcO,o
#<Uy]*HLA3##>#~2Z#vf
:
)9z+7 tmbM>+#'~#'6#Ha|#G}{
b?0#Ak((h##A,/#+l[#
+k>-1 #\s^6[p#n+W1#`x:'_
B^k%xvr-w IQ|t})h((((((((((K #)cWBb
%a}#N###t#m%E###+$#G##>%Pv

#k5#hz#:x}x_xz+(((((((((((cE#2#I\W#s@
~_?Wn:
Zr!Nv#jzQE#V-iz#E#!$#F|Q[7#/w#A4#,
#]#QE#QE#V'#S#a CVRon>FGSO#^Fm)#t#-
^Iqr#2#2k#r####R\2####M{#~#ilX#Es|
ZxIX#fvXN##G#_#'#{x\<n7+#qv-<A]^ygxsWYi#)##?
((((((((((+~'##;DNX8#+u(ld0@IE##'?
jQ#f# Oh#, bNpz+&X##zEouZ#
#cxqH/X tQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QEp4#KI=w## 1
c=iW:(k6z%
#$##_#]#QCBFz#Vi:#gIX#pXOlQE#QE#QEcx}+W4|#b##!
8#^AwK$ETg#5xko#ipN6#q#yp$D"R
c,>bG@:v# #A<60##O=3zVn/<gi#\9f'</#qheo#H#
{aN+GF<aup \#IlSQObA}#?SM#Bru]]#QE#QE#QE#QE#QE#QE#QE#QE#
#;F{Jn f
;03O\?|Wx#bV\t=^####|Nx:q0?/#;H#y??j#F#4Fe
#9#?kt#H##x(#cP#*1#y#w7 qmQGo
2I$q"<.0XQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QEp9$^#|wc##4 E#U#Y5
, PHV##]GjJ#)3>#<@V2##?
4F*Ev#P##nk
vQE#QE#QX)#f# hE#WL~UvoOA$k(${W#Cd#nP3rnp[v##9|
f#(H8%Ga#cnq?#9f{Mfk1:|;?=qKD#x\#|X-
IcY#`!B)QE#QE#QE#QE#QE#QE#QE#QE#x #9] m'F@-
$=#5>2A#Kz]3W#*]&f#W#}1 9o5nl#^ WG[S}
%J+yOr<UB~)pj%N#Q#apByvQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#W#
##
G j) ze![KYMnpGY4#ZO#)]hU?
YZ###l#U#V:ZU7e_J(((##xj#1#Sc###+B#t;H^HQ{W#]*I
d#:# #/|Jh0#v9{Ia.#"F*>aVt^}#V##"by#z.e4m^rss!$c##H
pwsd}#@u<A##
%)j##:#V#2%C((((((((MF3\U##e`>r~+x|
GCeXU#nPy#k5-bY$A'#UDWm##?u?#cfWr*3:H/
+6^EiB_76\kr((((((((((((|
ko# ) zockk,
#wHR|;j@$x# #/"9##-
4=29pvJ((Q91V4#Fb#+h\3#"h##6KDqZ-.
#8\###'8#W|
8&e\ 8 .##/#Z V#X];h~&Qf  Is#o#4w,((((((
(m/&#lkGnBQs<KEwf.ns#/'Z{#<: Q<crbPW##<###x-z{#$
$P`z5s#}#^-6)<5]G"lw@zuKk[o#isCo
~l.3##UVIOu#}#,1#|#1~g#3
((((((((((((#9Mu#}:WgE1Zu#R#J##c^Wq#F;#BB
VF#3SR5H:|
t##r##h_At#44#Q#M#E#QEBvr<bv###W:#Lt/#U
a#}[z#k>##U"7_#J T$,#A #e
jS8[#H#Qcn#`2Muro#(+52RX{u #P#Nk
mgN+4##Ra]k*#)^?>)#C##=9'
#((((((()XEaR7
%~$#[Tt7:qmZ+o#H#;##.[#_M# qb#
u##6{+4/|98#*OSnv#
+'O##V#c#kv((((((((((((i##.Rz};sE1
Zu#QEq2R%FK#A#!Gk#obEm=PG9@
kk*5\Bp9 (I#\G5ZGi|Gm,#FQ }
[:p7k#vByx.Oeo#}:l#F[#x.[% {#| .
#b
B"#4#9}q#'#OGu+dBg#ov1##zT}QZqm#A#E #R
Ezg\jCu12@F##C#]/#Yn # +2`z q ( ( ( ( ( ( ( @ # <
@A## #OXP#,###Xnz`TZz ###LPb/#ZV'?6s6L <p#&
]wVFQ p>Zf+eTQ##vb[#E
##Z##+G_1#9"G#ttQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#W#7A
#!lui
#g#~QLnE#Q\5F# XgYG!'CV
$n
Em4u#5E#QE#QEex#?
4#:#<+N*#hwa#Pxskrd:Cr'e+P#5#}cWB@n99Wsj>#
>####S}pwM1mg4!'A j(((((((]C,##@&##|#r#
%#k?SEo#Gaudhy~/##aTMB7~Z9U#W=*#&dry #+##SC
m16Y#>###rjO#
F;8T##E=3r#IdWwl&r#ZQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE
#QE# #Cj{
O#,)d#epG?S^E1zu#QEq&"xU[za#N9~#[3LN0H#"]
5r#DrWyE#QE#QEex#I#=)|;#*#wjQEf#.4##Dp#zg/#Y$F2SJ<
&##HP}y;mx7|0y#%##Z#3 1
^T#K#

c.Nk!m#GXV#hCp}kn##(((((((SP`gg#
#v=##q^Jm3#^M#|4
qT#x=B#w#j52hInQG;'\]5 =#  1

$ ]jsK"M#mkb[-#
{##3^#>`+$K###2j##LG#VV$.##3m] q-
#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#W#
hX*##g](7ZUN(?eo|HFm.I5#~T
<#
#tg ##vQE#QE#QY>&8
I#G/###<ZQE#v3+\ n:|
#~#5#C`01#####W6Nfv? \#-
]C<AoAKYA###5"Juu=#NE:((((((5"=F^ +KQ-
dP#+r0F##s\gZ#6D2Gh#Y#0W8{^##G0#8Wiey#}<DDTVH
c_[|7J0q:#e##b+e
X###
#T*###RE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#x##9]7ZUN(##_#xx!
fhJ##V?d#%{{xR"-v#N

((+#F"+FJG<##~ #QE#Y#{l #####>6;T>:


V #T=kM*#t#o# #r8'#xtq?%
##^[YtC>`vY#q+v(((((d
EE2#\qq\H+y7E##3V#v2#r`NS&nh##4~A#v##2O#
u#[wtQ#W:w*A*n1(#2>Z{;T!E#\t- h#XP#df-
:@mN!E#@k##-
#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE####``O]E1zu#QEqZ|sm>|)|
#<gx#  U #{Qkw {vB^q##8
)) & 


#
##<'nS[tQE#UMUK#K@# ###'rg/#aMo#x ##5oD#
#l*=Eycg$#a#+Fg]o#*
x$p:#w?n#Poae!OU#,s&I#`E>(((((/L[b###uQ#bB 5hC
#+>#_LQekkPR/%#'=j
#S{#k_#hx#}2Kl##;X####n#YMZ0r;####>sa#
v,,~lj-
U#c_s#*L#ZQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#Q\7Wf#vk###
E#Q\#<M{6#l<w#3#}L#3CC:z_x^%F#[/9
((+/j_cK#~####  S[#QE#S]##`}?O-#
Zt][i###E]#8BNa#z##^'*X#?
;#&x}k_bwhL=_1 ZBLdmN5E@.]<_Q5r(((()"n
5%#k^#WP#^#9tqtR0O\#T^u#JA#?Z
4C#|g;s
#8G96YP#Ac#5w
u*#`Fs##E:!-lr4#-|3#0Z3\F#=Kmqa|
FVdnL{$:.7t}JL#"#@#[#=N#5y#4E#X#)_((((((((
(((((x oy1cu^(BBI#IO[i$#d##q##(|c#'l%#R!
2((+?]Um#7O%Au <#uk^((h### #7Km#S\'l
L#^iKp1)#</#g
$dzo#(-#(###UI?]x#T):^E#QE#QE#QE#QE#@0##i5 i/d#|
Ku#]Ml#ve$^XX#C#o##V_WA#rI#XxhVH#7#7gQ#5;###;g
Z#T>'## wL1##) O<c+#=.&
M##8^**##Z
=ZZD $I[mo!
#>TQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#Q\G###n#?
J7ZUN+gf.##{7##k##3#b=#};\oK _
K# 5
%r#j0#(#TQE#QEq_#le_2##`#<(@e_Az4-a6nwNB:Uoa<+=Y
,r8t###z((l#c3+#z}+#0#4g##z~#h##C[#s\GPB!M
##O~+/I#nh6#N#Jo#$8##0|

}N.
k_tO}i^C#6Hy #T$#
#pzRE#QE#QE#QT,u{}B#5mr`njg#i>K}2##15[E%>9q]#
\VlDK#6 `?#gK#%"|##4;iI#)B#$`W;#&saw4Qa

###
9r7rO$t|.#<?p7#X#NgG4#yecXIz )# &
J((((((((((((((n5}#'=LnzS{cm[5+,M
XW+'8 # #R Y0k=m*#LWYa'SK;I#I#b((J;?

ou?##u=:K#v ;#S#L?A>V?#j#n-`#<>[
#]Nc6m5hV2}:7U#Jzf#,_io55#QE#Q\h#px_&5QX%|
#yP#@F1^#H&PB#9x79#kxPc#RA\o\#?
#u{#~NwtDe#.=#x+##j~<#pJ$#:U#T###((+?
Nnn#ma9W%(##dT##8+c5|#uSY]:[OJ#2##g&u##~#]<w#U-
##c#J;k##k qr[#JWVY8bA#f.FBu##i|<:#>`$m x U|
3l###8tKy-=UYNY\#[tQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#Q\75#*J
9 ?*zS(i #5o#>#U#6`Z(((##S*<#Y61+Z((|
EOHiKuX9;#*tN^D&2J##H#q\t##v"3u# r###21`{#"F,
{|j]KQmr[s0#bmiVi~Xepr2xk#GQK#7##ER1j#(+##XC)|
(G/hZD#tlw#*?##H8I#=Ao#h@#8O##1ozI&#c_+'m##?
UK`2N##|Jb<].8>X##18~`p##9 eH9#@#U22{|
IH0*>E#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QEPb%d].u(9
R#u#Q##^+#zS((((k##M|3d
((+hke{8YNAAW
d[TZ3*q##xN76v0Gr#]#n9u|NF]*7#[H#~l###O#?
2K{K#7#"##Uv"#>ON%f8 kR0'!#^^ moh-ur{|
t$t#+/ktU@p#zm#Y?#>s%1'9z-g3n
}3V?##&NjX-A4#`As#n >1#h8#<#V&?
#op'@>#=M##cU|Q{sxWD##U}Er}*
P35 ##(3#38UG#T|I1j##jzD-@v
>vs$Me##wq[tQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QEq1`#uaiW:(
(((*{#\[Uo##j|((O#L[eF pOJ[Z#9#\+&jf|
#_2x`1l#
H###8;#
I0\ JdQ#?#u8VC`?V_12"#[,, R#-
#^#E/##L{saxa"S)/Y#-
_3;Y#HB{,;~~
#T5G4r#bSRq
/#zAkixRm#n##<#S#3#{`Pj>#RkvdY<wjI#C J2j
quUo#Ve##Ar:)o|>\Y/o4 rT+c?{9Mn<#X
0#:s^[X##X0#R=#/\a ?ouos lmrZ>
(((((((((((((((#mSCx> #zUN((((
#m&7O%#>#s',X?w+f(((#dxn#n3#*m#D#s
-6#Ot###jPh###
YM+v sHgpW%###C#?VkXdQ#m{]rR-1 @;tH$iM,#Z
:KH#$#z}+#k###9##0 #0^
gx Vv$5#Z'c5,Pa3L*o#Mp
#EE:|
w5Yl#dSrqXV~#ja\j2##:et#odPcnGSs#2aex## #
h<#
pO#Jb(%Gf##~U^,_'#Ypz##/`y$##5'#U~ARG5b##^#7# ~-
=#1jQT##H#>[w(((((((((((((((|y]
OKL=M9zRE#QE#QE#QE#QES#5#'#wF<'? (((|M#
X#Ia#%Cw#yQ##>9q^#HA$;yl##|
e$4rI&##_YX2r\x#Bqu#Y7,y#7)rlm$#]ObtJ/:{
6>)i_
v9xSY\f##x/<3]>laOf-X#@A?t>#]D#o'5#0j#?m\##[#G~+KO'
#pM(##t:#>,!B#81=#CHO#M '|
<$###=O&u_ivMN###X##tn[V#=MTl7#c88'j?
##zdC4I#g#?`Iyy$^WrUkE.5#I%PA ?xCNwZamQ?.|!
q&C$###^sCw}evQ fEG#?%2
h((((((((((((((('A0###t#-
#QE#QE#QE#QE#U#g###]#A5G/Nv#[QE#QE#QE#### A\G?y=e^3l:k>?
#_O##2PNGa]-$,#6#<:'<f~#yv9S&0#?R>K1$|
9#jM#jQ(oNIkZs}, #|#z/#qWyK#|,hU#>##]?
#V#h##?fh#.M2Y#1^@q# e|<:1FP}#s g L1O+k#d
Nn#;}5I#y=yn&sz NWDpra{f9%#
C(#V#a#Gfe>Dm*#T#nJc#>#e o#/p#=#X~U/d#L##|.<[
_#
K
%#C#"#1^:#1KE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#K??
N ?
N+#(Zz((((_#F##`#?#QE#QE#QE# \w
W "M1#?w=
g[H###r#9z#k$DU
][6#/`##
NEm#0xD{/@
I@G#988?#@*^;srJ
##c#T_;H#>W@#m v#zqJ#38q9 M#pG8ti2##%p?
N#3#?#($##~_/om.og#T}##GM$#`z#?J%o ct
P
####v!#sNqZHmuO#tx8#VZC}Mj#m#Twzvp#$c
1H(((((((((((((((+j####WuE04KE#QE#QE#QE#V
lo~RB#Kt>sM8no"I$<j:l+-
Frz).FXeHI###R
# [tQE#QE#QE#S_o+j!
T#,c#Zj`#l#WZ7<It>#R3$8Y{# ##Cu
Upq o:<6~##)F#p .~W
#c#E>]H#Z`#@ dP#>N#s#O60 <g#w#"\#ycBIsz_|?
n|1iqy#76G9 fn4o#=q#:{#i0I/p##W,4a7#_VO#
##L 4}#\m6K#t\
%:#J7^c_^##((((((((((((((((<zm##JS
O^QE#QE#QE#QYWVcm
9 yo.5M#\Czbe(#c1 KK
w-{,cgC#,#$_-p6=#v#/##E"
dwq7SiMrE#WI#<nFY3#(((5x-
##]##MAS\##zS##C_ K'Jdsxd#-VxQ*He8#bHU"$;ax
6B6##3Z|]W#0T#x5w*~#+#WQ'9mx#[lq#@M#k"#u###Lm8#
##'o #wmY3rZ#M"6o>2_\#W##tU)#o#T5]# =#IU>mdw#u
AcC#~a#x#H_GK4GO^{'uXW#+&#o
##oazl=)&flu*q\N&cA#:Cv9
((((((((((((((((##.#p7u4#O^QE#QE#Q

E#QERH.EP<H zeFVJ;~>%%D9Uaq
6LE#I#aGAgx>HF#`Gkv((()"##U#=r>!
a/.4/j##=1\##^"*rd#O##R#7#j*V#'s2+[#}i5{QQ.#
m>T]oAqT#sX#H#d#Y #o$n=;Ogu=#wH#\r###c#[z?#N-
#p+?$##3:p#6bOa#W_YIqh%C#u=?##uD#@--#`m
(0"####CMly*#
wp18#9#(
R

SE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#OTO[;sq8#,`^# i wV_fh
#l Tg=zRE#QE#QE#QE#QETu7##{|z (
(((]oMM#R
sq[U[Zh#A$l#q >hAo#sWJ#dN#\`:
2#rT#]At7##9X/#8##?a#( M#h#+P/##y##R>K:pyP#[
%uA#sz#f<Q#B#sM#,
#WuL#"hd
NP#B###j,mc fa#[NFKxR%fB
dQE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#QE#Q\O#;##jr#-#QE#Q
E#QE#QE#Um@#n75|#-o#tTQE#QE#QE#QE#UhgD#y#m+Arx#~p)#9
@'#

Вам также может понравиться