Skip to content

Instantly share code, notes, and snippets.

@eblancoh
Created September 24, 2018 10:50
Show Gist options
  • Save eblancoh/a4b7862addf380d90410f34958d24979 to your computer and use it in GitHub Desktop.
Save eblancoh/a4b7862addf380d90410f34958d24979 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Clasificación de secuencias con Redes Neuronales Recurrentes "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_____\n",
"## Descripción del problema"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Nos enrentamos ante un problema clasificación de sentimientos sobre **reseñas de películas en IMDB**. Cada reseña es una secuencia variable de palabras y a cada secuencia se le ha asignado un valor positivo o negativo.\n",
"\n",
"El dataset está compuesto con 50,000 reseñas de películas positivas y negativas, en función de si a los usuarios les ha parecido buenas o malas \n",
"\n",
"Los datos fueron recogidos por investigadores de la universidad de Stanford con la intención de realizar esta clasificación. La metodología y resultados está disponible en la siguiente [publicación](http://ai.stanford.edu/~amaas/papers/wvSent_acl2011.pdf)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Word Embedding\n",
"\n",
"Word embedding es el nombre de un conjunto de lenguajes de modelado y técnicas de aprendizaje en procesamiento del lenguaje natural (NLP) en donde las palabras o frases del vocabulario son vinculadas a vectores en el espacio real. Conceptualmente implica el encaje matemático de un espacio con una dimensión por palabra a un espacio vectorial continuo con menos dimensiones.\n",
"\n",
"El Word y Phrase embeddings, utilizados de forma subyacente como forma de representación, han demostrado aumentar el rendimiento de tareas en el procesamiento del lenguaje natural, así como en el análisis sintáctico y análisis de sentimientos.\n",
"\n",
"Esta técnica supone una mejora sustancial frente a los esquemas tradicionales de encoding de palabras, que eran usados para representar cada palabra como un vector con respecto a todo un vocabulario. Cuando el vocabulario es vasto, una única palabra por lo general se identificaba con un vector que contenía un gran número de elementos nulos. Sin embargo, en un embedding, las palabras se representan por vectores donde cada vector representa la proyección de una palabra en un espacio vectorial. \n",
"\n",
"La posición de una palabra en ese espacio vectorial está basada no sólo en las características de la palabra, sino también enlas palabras que la rodean. \n",
"Hay dos ejemplos muy populares de aprendizaje de Word Embedding:\n",
"\n",
"* Word2Vec.\n",
"* GloVe."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"___\n",
"La clasificación de secuencias es un problema de modelado predictivo en el que se tiene una secuencia de entradas sobre el espacio o el tiempo y la tarea es predecir una categoría para la secuencia.\n",
"\n",
"Lo que hace que abarcar este problema no sea inmediato es que las secuencias pueden variar en longitud, estar compuestas de un vocabulario muy grande de símbolos de entrada y pueden requerir que el modelo aprenda el contexto a largo plazo o las relaciones entre símbolos en la secuencia de entrada."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"## 1. Carga del dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comencemos importando las clases y funciones requeridas para este modelo e inicializando el generador de números aleatorios a un valor constante para asegurar que podamos reproducir fácilmente los resultados."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"%matplotlib inline\n",
"import time\n",
"import numpy as np\n",
"\n",
"from keras.preprocessing import sequence\n",
"from keras.models import Model, Sequential\n",
"from keras.layers import Dense, Dropout, Embedding, LSTM, Input, merge, BatchNormalization\n",
"from keras.datasets import imdb\n",
"from keras.callbacks import ModelCheckpoint\n",
"\n",
"import os\n",
"from keras.preprocessing.text import Tokenizer\n",
"\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"np.random.seed(2018)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Nos vamos a quedar con este límite de palabras que definimos a continuación."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"max_len = 500\n",
"max_features = 5000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definimos un *base_path*."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"base_path = os.getcwd()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos acceder al dataset de las reseñar en el siguiente [enlace](http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz):"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definimos el conjunto de datos de entrenamiento y testeo descargados. Como vemos, están separados en distintos directorios dependiendo de la naturaleza positiva o negativa de la reseña."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_train = []\n",
"y_train = []\n",
"\n",
"path = os.path.join(base_path, 'data/aclImdb/train/pos/')\n",
"X_train.extend([open(path + f).read() for f in os.listdir(path) if f.endswith('.txt')])\n",
"y_train.extend([1 for _ in range(12500)])\n",
"\n",
"path = os.path.join(base_path, 'data/aclImdb/train/neg/')\n",
"X_train.extend([open(path + f).read() for f in os.listdir(path) if f.endswith('.txt')])\n",
"y_train.extend([0 for _ in range(12500)])\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_test = []\n",
"y_test = []\n",
"\n",
"path = os.path.join(base_path, 'data/aclImdb/test/pos/')\n",
"X_test.extend([open(path + f).read() for f in os.listdir(path) if f.endswith('.txt')])\n",
"y_test.extend([1 for _ in range(12500)])\n",
"\n",
"path = os.path.join(base_path, 'data/aclImdb/test/neg/')\n",
"X_test.extend([open(path + f).read() for f in os.listdir(path) if f.endswith('.txt')])\n",
"y_test.extend([0 for _ in range(12500)])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ejemplo de reseña:\n",
"This movie just pulls you so deeply into the two main characters. I popped it into my laptop without even reading the cover (let alone reviews) and was intrigued for two solid hours. Two lost ships from two different worlds collide. The sexual tension that brews between a secretary and a criminal is almost palpable even without hardly any physical contact. Toward the end I couldn't decide which I wanted more: Our hero and heroine to pull off their caper or simply consummate their passion. RML could've done without a curious subplot and a traditional 100 minutes would have been plenty. I'm nitpicking though. After a series of Netflix, Blockbuster and local library duds this movie restored my faith in great film making.\n",
"------------------------------------------------------\n",
"Esta reseña está etiquetada como:\n",
"1\n"
]
}
],
"source": [
"print('Ejemplo de reseña:')\n",
"print(X_train[0])\n",
"print('------------------------------------------------------')\n",
"print('Esta reseña está etiquetada como:')\n",
"print(y_train[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"## 2. Procesado del dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hacemos un [Tokenizing](https://keras.io/preprocessing/text/) de las palabras del train y test dataset. \n",
"\n",
"Anteriormente hemos definido un límite de max_features de 5,000. Esto quiere decir que nos quedamos con las 5,000 palabras más comunes y el resto las dejamos a 0.\n",
"\n",
"Para poder realizar esta tarea hacemos uso de las funciones `Tokenizer()` y `fit_on_texts()`."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"imdbTokenizer = Tokenizer(num_words = max_features)\n",
"\n",
"imdbTokenizer.fit_on_texts(X_train)\n",
"imdbTokenizer.fit_on_texts(X_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos analizar cuántas veces aparece cada palabra en nuestro dataset de la siguiente forma: "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"OrderedDict([('this', 150941),\n",
" ('movie', 87050),\n",
" ('just', 35154),\n",
" ('pulls', 373),\n",
" ('you', 60308),\n",
" ('so', 40845),\n",
" ('deeply', 599),\n",
" ('into', 17846),\n",
" ('the', 666757),\n",
" ('two', 13520),\n",
" ('main', 4608),\n",
" ('characters', 14243),\n",
" ('i', 154887),\n",
" ('popped', 87),\n",
" ('it', 156801),\n",
" ('my', 24885),\n",
" ('laptop', 29),\n",
" ('without', 6436),\n",
" ('even', 24864),\n",
" ('reading', 1332),\n",
" ('cover', 1178),\n",
" ('let', 3377),\n",
" ('alone', 1962),\n",
" ('reviews', 1441),\n",
" ('and', 324337),\n",
" ('was', 95585),\n",
" ('intrigued', 215),\n",
" ('for', 87450),\n",
" ('solid', 950),\n",
" ('hours', 1946),\n",
" ('lost', 2920),\n",
" ('ships', 163),\n",
" ('from', 40481),\n",
" ('different', 4660),\n",
" ('worlds', 240),\n",
" ('collide', 33),\n",
" ('sexual', 1342),\n",
" ('tension', 1049),\n",
" ('that', 136986),\n",
" ('brews', 7),\n",
" ('between', 6580),\n",
" ('a', 322800),\n",
" ('secretary', 229),\n",
" ('criminal', 584),\n",
" ('is', 211041),\n",
" ('almost', 6253),\n",
" ('palpable', 61),\n",
" ('hardly', 1134),\n",
" ('any', 15043),\n",
" ('physical', 619),\n",
" ('contact', 320),\n",
" ('toward', 515),\n",
" ('end', 11099),\n",
" (\"couldn't\", 3014),\n",
" ('decide', 971),\n",
" ('which', 23385),\n",
" ('wanted', 2715),\n",
" ('more', 28000),\n",
" ('our', 5009),\n",
" ('hero', 1970),\n",
" ('heroine', 515),\n",
" ('to', 268079),\n",
" ('pull', 726),\n",
" ('off', 12021),\n",
" ('their', 22736),\n",
" ('caper', 103),\n",
" ('or', 35746),\n",
" ('simply', 3858),\n",
" ('consummate', 47),\n",
" ('passion', 650),\n",
" ('rml', 1),\n",
" (\"could've\", 339),\n",
" ('done', 6149),\n",
" ('curious', 481),\n",
" ('subplot', 256),\n",
" ('traditional', 457),\n",
" ('100', 918),\n",
" ('minutes', 5864),\n",
" ('would', 24232),\n",
" ('have', 55186),\n",
" ('been', 18348),\n",
" ('plenty', 1219),\n",
" (\"i'm\", 9343),\n",
" ('nitpicking', 16),\n",
" ('though', 8744),\n",
" ('after', 14970),\n",
" ('series', 6500),\n",
" ('of', 289379),\n",
" ('netflix', 111),\n",
" ('blockbuster', 358),\n",
" ('local', 1743),\n",
" ('library', 257),\n",
" ('duds', 29),\n",
" ('restored', 152),\n",
" ('faith', 542),\n",
" ('in', 186690),\n",
" ('great', 18121),\n",
" ('film', 77678),\n",
" ('making', 5755),\n",
" (\"it's\", 33476),\n",
" ('colorful', 280),\n",
" ('slasher', 896),\n",
" (\"that's\", 6718),\n",
" ('about', 34152),\n",
" ('br', 201951),\n",
" ('has', 33036),\n",
" ('mystery', 1524),\n",
" ('element', 694),\n",
" ('scream', 498),\n",
" ('made', 16134),\n",
" ('popular', 1058),\n",
" ('movies', 15256),\n",
" ('but', 83495),\n",
" ('never', 12963),\n",
" ('care', 2732),\n",
" ('such', 10002),\n",
" ('things', 7318),\n",
" ('figuring', 52),\n",
" ('out', 34155),\n",
" (\"who's\", 1362),\n",
" ('bad', 18393),\n",
" ('guy', 6169),\n",
" ('not', 60697),\n",
" ('interesting', 6171),\n",
" ('considering', 1070),\n",
" ('clues', 250),\n",
" ('are', 58363),\n",
" ('all', 46881),\n",
" ('misleading', 151),\n",
" ('anyway', 2243),\n",
" ('death', 3899),\n",
" ('scenes', 10468),\n",
" ('were', 21206),\n",
" ('inventive', 209),\n",
" ('gorey', 2),\n",
" ('bringing', 464),\n",
" ('back', 9654),\n",
" ('memories', 574),\n",
" (\"80's\", 901),\n",
" ('horror', 7193),\n",
" ('like', 40153),\n",
" ('friday', 403),\n",
" ('13th', 183),\n",
" ('another', 8570),\n",
" ('nice', 3851),\n",
" ('thing', 9121),\n",
" ('hard', 5263),\n",
" ('pinpoint', 22),\n",
" ('surviving', 172),\n",
" ('girl', 5240),\n",
" ('unlike', 1136),\n",
" ('ikwydls', 2),\n",
" ('where', 12527),\n",
" ('obvious', 2056),\n",
" ('people', 17828),\n",
" ('who', 40624),\n",
" (\"don't\", 16849),\n",
" (\"won't\", 2423),\n",
" ('as', 91730),\n",
" ('simple', 2065),\n",
" ('truly', 3467),\n",
" ('enjoyed', 2415),\n",
" ('plan', 823),\n",
" ('watch', 13941),\n",
" ('again', 7865),\n",
" ('while', 10361),\n",
" ('waiting', 1090),\n",
" ('same', 8089),\n",
" ('mb', 7),\n",
" ('always', 6324),\n",
" ('satisfying', 403),\n",
" ('when', 28042),\n",
" ('detective', 815),\n",
" ('wraps', 49),\n",
" ('up', 26345),\n",
" ('case', 2997),\n",
" ('brought', 1462),\n",
" ('book', 4705),\n",
" ('climax', 797),\n",
" ('gives', 3070),\n",
" ('me', 21402),\n",
" ('greater', 364),\n",
" ('pleasure', 630),\n",
" ('see', 22981),\n",
" ('smug', 91),\n",
" ('grin', 80),\n",
" ('wiped', 78),\n",
" ('face', 3227),\n",
" ('abigail', 33),\n",
" ('mitchell', 253),\n",
" ('she', 24213),\n",
" ('realises', 79),\n",
" ('her', 34771),\n",
" ('victim', 776),\n",
" ('left', 4186),\n",
" ('deathbed', 35),\n",
" ('testimony', 45),\n",
" ('leaves', 1347),\n",
" ('no', 25241),\n",
" ('doubt', 1520),\n",
" ('guilt', 271),\n",
" ('very', 27716),\n",
" ('please', 2065),\n",
" ('understand', 3302),\n",
" ('admire', 257),\n",
" ('ruth', 195),\n",
" (\"gordon's\", 32),\n",
" ('performance', 5568),\n",
" ('character', 13315),\n",
" ('really', 23086),\n",
" ('irritates', 36),\n",
" ('selfish', 207),\n",
" ('demanding', 139),\n",
" ('gets', 6233),\n",
" ('own', 6589),\n",
" ('way', 15631),\n",
" ('by', 44464),\n",
" ('putting', 722),\n",
" ('on', 68015),\n",
" ('simpering', 17),\n",
" (\"'little\", 19),\n",
" (\"girl'\", 39),\n",
" ('act', 2462),\n",
" ('embarrassing', 446),\n",
" ('woman', 5045),\n",
" ('age', 2042),\n",
" ('worse', 2937),\n",
" ('now', 9224),\n",
" ('set', 4792),\n",
" ('herself', 1501),\n",
" ('judge', 617),\n",
" ('jury', 116),\n",
" ('executioner', 15),\n",
" ('against', 2792),\n",
" ('dead', 3631),\n",
" (\"niece's\", 7),\n",
" ('husband', 1869),\n",
" ('columbo', 307),\n",
" ('getting', 3302),\n",
" ('too', 15356),\n",
" ('close', 2464),\n",
" ('tries', 2428),\n",
" ('unnerve', 5),\n",
" ('him', 17561),\n",
" ('manipulating', 39),\n",
" ('an', 42932),\n",
" ('cuff', 18),\n",
" ('speech', 457),\n",
" ('audience', 4220),\n",
" ('high', 4315),\n",
" ('class', 1711),\n",
" ('ladies', 456),\n",
" ('he', 52543),\n",
" ('turns', 2415),\n",
" ('tables', 80),\n",
" ('perfectly', 1291),\n",
" ('delivering', 227),\n",
" ('warm', 422),\n",
" ('humane', 53),\n",
" ('realities', 107),\n",
" ('police', 2118),\n",
" ('work', 8536),\n",
" ('nothing', 8341),\n",
" ('can', 21970),\n",
" ('distract', 99),\n",
" ('pursuit', 163),\n",
" ('justice', 762),\n",
" (\"abby's\", 7),\n",
" ('final', 2670),\n",
" ('appeal', 833),\n",
" ('his', 57541),\n",
" ('good', 29654),\n",
" ('nature', 1289),\n",
" ('rejected', 141),\n",
" ('because', 17711),\n",
" ('much', 19309),\n",
" ('self', 2273),\n",
" ('respect', 969),\n",
" ('do', 18187),\n",
" ('job', 4449),\n",
" ('well', 21232),\n",
" ('here', 10586),\n",
" ('one', 53034),\n",
" ('situation', 1379),\n",
" (\"can't\", 7038),\n",
" ('squirm', 55),\n",
" ('ms', 683),\n",
" ('love', 12896),\n",
" ('game', 2697),\n",
" ('make', 15878),\n",
" ('literally', 931),\n",
" ('jump', 544),\n",
" ('your', 11483),\n",
" ('seat', 506),\n",
" ('playing', 3198),\n",
" ('screen', 5014),\n",
" ('jumps', 290),\n",
" ('flashes', 136),\n",
" ('get', 18335),\n",
" ('hit', 2095),\n",
" ('its', 16004),\n",
" ('realistic', 1505),\n",
" ('at', 46784),\n",
" ('time', 25031),\n",
" ('remember', 3319),\n",
" ('there', 31297),\n",
" ('sound', 2824),\n",
" ('effects', 4515),\n",
" ('audio', 255),\n",
" ('amazing', 2517),\n",
" ('lot', 8054),\n",
" ('weapons', 369),\n",
" ('spells', 58),\n",
" ('cast', 7400),\n",
" ('choose', 471),\n",
" ('stronger', 232),\n",
" ('stone', 556),\n",
" ('knock', 240),\n",
" ('enemies', 203),\n",
" ('recover', 104),\n",
" ('mana', 1),\n",
" ('blast', 161),\n",
" ('foes', 28),\n",
" ('with', 87350),\n",
" ('magic', 827),\n",
" ('best', 12585),\n",
" ('part', 7864),\n",
" ('whole', 6118),\n",
" ('jumpy', 44),\n",
" ('afraid', 643),\n",
" ('what', 30583),\n",
" ('might', 5749),\n",
" ('lurk', 18),\n",
" ('around', 7148),\n",
" ('next', 3500),\n",
" ('corner', 271),\n",
" ('behind', 2404),\n",
" ('if', 33951),\n",
" ('want', 7287),\n",
" ('full', 3537),\n",
" ('experience', 2196),\n",
" ('try', 3582),\n",
" ('head', 3099),\n",
" ('phones', 82),\n",
" ('excellent', 4098),\n",
" ('interpretation', 319),\n",
" ('jim', 883),\n",
" (\"thompson's\", 30),\n",
" ('novel', 1809),\n",
" ('neo', 173),\n",
" ('noir', 723),\n",
" ('thriller', 1723),\n",
" ('requisite', 64),\n",
" ('elements', 1509),\n",
" ('deranged', 164),\n",
" ('ex', 923),\n",
" ('boxer', 121),\n",
" ('turned', 1863),\n",
" ('drifter', 67),\n",
" ('alcoholic', 165),\n",
" ('widow', 190),\n",
" ('sinister', 314),\n",
" ('desires', 154),\n",
" ('cop', 1243),\n",
" ('small', 3176),\n",
" ('crook', 77),\n",
" ('kidnap', 107),\n",
" ('plot', 12921),\n",
" ('destined', 117),\n",
" ('doom', 178),\n",
" ('yet', 5467),\n",
" ('crosses', 105),\n",
" ('cliche', 176),\n",
" ('country', 1819),\n",
" ('remains', 863),\n",
" ('fresh', 752),\n",
" ('intriguing', 615),\n",
" ('performances', 3494),\n",
" ('superb', 1300),\n",
" ('particularly', 2087),\n",
" ('bruce', 763),\n",
" (\"dern's\", 4),\n",
" ('role', 6280),\n",
" ('wicked', 248),\n",
" ('sleazeball', 8),\n",
" ('uncle', 559),\n",
" ('bud', 141),\n",
" ('tense', 311),\n",
" ('uncertainty', 52),\n",
" (\"film's\", 1948),\n",
" ('movement', 406),\n",
" ('intentional', 124),\n",
" ('adds', 706),\n",
" ('grim', 279),\n",
" ('proceedings', 219),\n",
" ('highly', 2278),\n",
" ('recommended', 997),\n",
" ('three', 4679),\n",
" ('scumbags', 18),\n",
" ('deserts', 42),\n",
" ('wasting', 291),\n",
" ('lives', 2684),\n",
" ('greed', 167),\n",
" ('drugs', 734),\n",
" ('ego', 228),\n",
" ('attitudes', 183),\n",
" ('style', 3181),\n",
" ('makes', 8308),\n",
" ('wonder', 2088),\n",
" ('reality', 1986),\n",
" ('imagination', 679),\n",
" ('takes', 4264),\n",
" ('over', 12193),\n",
" ('these', 10719),\n",
" ('folks', 733),\n",
" ('scum', 64),\n",
" ('earth', 1691),\n",
" ('still', 10852),\n",
" ('found', 5159),\n",
" ('myself', 2297),\n",
" ('pitying', 20),\n",
" ('them', 16003),\n",
" ('they', 41920),\n",
" ('stood', 257),\n",
" ('chance', 2107),\n",
" ('tears', 615),\n",
" ('eyes', 2388),\n",
" ('john', 4150),\n",
" ('roberts', 362),\n",
" ('knew', 1825),\n",
" ('how', 17587),\n",
" (\"viewers'\", 23),\n",
" ('hearts', 282),\n",
" ('directing', 1218),\n",
" ('wonderful', 3216),\n",
" ('picture', 2898),\n",
" ('life', 12735),\n",
" ('viewed', 450),\n",
" ('through', 9689),\n",
" ('mind', 3943),\n",
" ('heart', 2521),\n",
" ('paulie', 113),\n",
" ('we', 19259),\n",
" ('discover', 558),\n",
" ('help', 3687),\n",
" ('sensitive', 357),\n",
" ('talented', 1140),\n",
" ('directors', 1221),\n",
" ('creatures', 484),\n",
" ('stop', 2275),\n",
" ('happy', 1831),\n",
" ('thousands', 316),\n",
" ('films', 13709),\n",
" ('saw', 6333),\n",
" ('touched', 330),\n",
" ('ugly', 702),\n",
" ('duckling', 58),\n",
" ('second', 3825),\n",
" ('upside', 124),\n",
" ('down', 7397),\n",
" ('original', 6301),\n",
" ('1932', 78),\n",
" ('version', 4105),\n",
" ('preston', 116),\n",
" ('foster', 259),\n",
" (\"there's\", 6130),\n",
" ('remake', 1116),\n",
" ('worthy', 772),\n",
" ('than', 19328),\n",
" ('1959', 123),\n",
" ('impossible', 953),\n",
" ('find', 8210),\n",
" ('anywhere', 616),\n",
" ('strongly', 445),\n",
" ('suspect', 609),\n",
" ('mickey', 355),\n",
" ('rooney', 133),\n",
" ('had', 22060),\n",
" ('something', 10097),\n",
" ('could', 15212),\n",
" ('mere', 339),\n",
" ('ever', 12015),\n",
" ('masterfully', 104),\n",
" ('brilliant', 2409),\n",
" ('script', 5895),\n",
" ('thought', 6930),\n",
" ('provoking', 367),\n",
" ('improvement', 159),\n",
" ('upon', 1800),\n",
" ('many', 13442),\n",
" ('years', 8736),\n",
" ('last', 5689),\n",
" ('several', 2857),\n",
" ('viewings', 172),\n",
" ('1970', 154),\n",
" ('read', 3786),\n",
" ('article', 91),\n",
" ('recounting', 22),\n",
" ('visit', 503),\n",
" (\"he'd\", 342),\n",
" ('row', 293),\n",
" ('apparently', 1807),\n",
" ('drastically', 62),\n",
" ('eliminated', 69),\n",
" ('whatever', 1397),\n",
" ('sense', 4593),\n",
" ('personal', 1274),\n",
" ('identification', 40),\n",
" ('felt', 2873),\n",
" ('similar', 1632),\n",
" ('circumstances', 438),\n",
" ('short', 3832),\n",
" (\"didn't\", 8723),\n",
" ('other', 18097),\n",
" ('extent', 325),\n",
" ('extreme', 708),\n",
" ('disillusionment', 23),\n",
" ('quality', 2606),\n",
" ('inmates', 102),\n",
" ('themselves', 2325),\n",
" ('emphasized', 37),\n",
" ('language', 1063),\n",
" ('explicitly', 44),\n",
" ('quote', 289),\n",
" ('problems', 1769),\n",
" ('capital', 150),\n",
" ('punishment', 201),\n",
" ('course', 4890),\n",
" ('evenly', 20),\n",
" ('impartially', 3),\n",
" ('applied', 108),\n",
" ('innocent', 833),\n",
" ('far', 5991),\n",
" ('carelessly', 22),\n",
" ('thus', 808),\n",
" ('unnecessarily', 79),\n",
" ('sent', 769),\n",
" ('meet', 1319),\n",
" ('particular', 1391),\n",
" ('fate', 504),\n",
" ('problem', 2804),\n",
" ('swiftly', 22),\n",
" ('enough', 6886),\n",
" ('matter', 2446),\n",
" ('publicly', 45),\n",
" ('bible', 273),\n",
" ('special', 4219),\n",
" ('point', 6164),\n",
" ('cases', 296),\n",
" ('important', 1884),\n",
" ('purposes', 176),\n",
" ('deterrent', 7),\n",
" ('being', 13110),\n",
" ('ineffectually', 2),\n",
" ('obscured', 21),\n",
" ('minus', 154),\n",
" ('only', 23228),\n",
" ('public', 1080),\n",
" ('viewing', 1511),\n",
" ('also', 17974),\n",
" ('direct', 739),\n",
" ('participation', 50),\n",
" ('those', 9389),\n",
" ('claim', 406),\n",
" ('prove', 536),\n",
" ('statistically', 3),\n",
" ('effective', 971),\n",
" ('addition', 644),\n",
" ('having', 4927),\n",
" ('reliability', 3),\n",
" ('data', 73),\n",
" ('little', 12406),\n",
" ('objectively', 32),\n",
" ('disprovable', 1),\n",
" ('bars', 140),\n",
" ('due', 1783),\n",
" ('lacking', 555),\n",
" ('however', 6957),\n",
" ('fact', 6899),\n",
" ('robert', 2006),\n",
" ('duvall', 107),\n",
" ('apostle', 8),\n",
" ('punished', 67),\n",
" ('crime', 1491),\n",
" ('hope', 2909),\n",
" ('leniency', 2),\n",
" ('be', 53360),\n",
" ('based', 2856),\n",
" ('temporary', 61),\n",
" ('insanity', 154),\n",
" ('defense', 188),\n",
" ('serve', 349),\n",
" ('acceptable', 272),\n",
" ('excuse', 802),\n",
" ('kind', 5543),\n",
" ('various', 1217),\n",
" ('questions', 961),\n",
" ('concerning', 236),\n",
" ('motives', 213),\n",
" ('recounted', 7),\n",
" ('answers', 334),\n",
" ('speculate', 27),\n",
" ('decidedly', 114),\n",
" ('religious', 625),\n",
" ('know', 12481),\n",
" ('exactly', 1964),\n",
" ('become', 2939),\n",
" ('professing', 8),\n",
" ('christian', 698),\n",
" ('whenever', 524),\n",
" ('possible', 1964),\n",
" ('emphasize', 85),\n",
" ('anybody', 595),\n",
" ('should', 9627),\n",
" ('aware', 540),\n",
" ('category', 393),\n",
" ('tends', 189),\n",
" ('most', 17369),\n",
" ('vehemently', 10),\n",
" ('blood', 2222),\n",
" ('comes', 4751),\n",
" ('extracting', 12),\n",
" ('eye', 1597),\n",
" ('bone', 259),\n",
" ('contention', 21),\n",
" ('per', 277),\n",
" ('se', 93),\n",
" ('scripturally', 1),\n",
" ('speaking', 801),\n",
" ('perhaps', 3291),\n",
" ('shall', 263),\n",
" ('spared', 64),\n",
" ('ultimate', 485),\n",
" ('hands', 1303),\n",
" ('lord', 585),\n",
" ('himself', 4182),\n",
" ('result', 1260),\n",
" ('sacrifice', 222),\n",
" ('cross', 661),\n",
" ('spirit', 968),\n",
" ('attitude', 501),\n",
" ('christians', 158),\n",
" ('enthusiasm', 169),\n",
" ('contrary', 235),\n",
" ('everybody', 805),\n",
" ('saved', 508),\n",
" ('ezekiel', 3),\n",
" ('18', 299),\n",
" ('32', 43),\n",
" ('ii', 716),\n",
" ('peter', 1485),\n",
" ('3', 3804),\n",
" ('9', 1537),\n",
" ('seem', 4225),\n",
" ('go', 9945),\n",
" ('vindictively', 4),\n",
" ('reasons', 1191),\n",
" ('condemn', 47),\n",
" ('either', 3669),\n",
" ('side', 2540),\n",
" ('superlatively', 3),\n",
" ('burning', 256),\n",
" ('issue', 588),\n",
" ('cannot', 2101),\n",
" ('appear', 1213),\n",
" ('sufficiently', 51),\n",
" ('appreciate', 1024),\n",
" ('dynamically', 6),\n",
" ('elusively', 2),\n",
" ('soft', 605),\n",
" ('sides', 374),\n",
" ('inherently', 48),\n",
" ('incompatible', 11),\n",
" ('render', 57),\n",
" ('mentally', 320),\n",
" ('least', 6104),\n",
" ('strictly', 233),\n",
" ('human', 3197),\n",
" ('reckoning', 10),\n",
" ('regardless', 309),\n",
" ('harrowingly', 5),\n",
" ('ungraspable', 2),\n",
" ('miraculously', 78),\n",
" ('dynamic', 200),\n",
" ('blending', 59),\n",
" ('water', 1204),\n",
" ('oil', 268),\n",
" ('surely', 779),\n",
" ('anything', 5756),\n",
" ('fanatically', 6),\n",
" ('characteristically', 13),\n",
" ('equation', 40),\n",
" ('falls', 1606),\n",
" ('inadequately', 6),\n",
" ('unacceptably', 1),\n",
" ('entire', 2858),\n",
" ('judicial', 15),\n",
" ('truth', 1372),\n",
" ('indeed', 1393),\n",
" (\"i've\", 6629),\n",
" ('seen', 13367),\n",
" ('curdling', 10),\n",
" ('thirst', 84),\n",
" ('come', 6277),\n",
" ('contradictorily', 2),\n",
" ('occasions', 157),\n",
" ('categorically', 2),\n",
" ('anti', 1043),\n",
" ('penalty', 89),\n",
" ('advocates', 13),\n",
" ('confronted', 113),\n",
" ('rationally', 10),\n",
" ('balanced', 125),\n",
" ('ways', 1581),\n",
" ('although', 5010),\n",
" ('died', 1066),\n",
" ('thereby', 95),\n",
" ('going', 8177),\n",
" ('order', 1916),\n",
" ('receive', 234),\n",
" ('absolution', 11),\n",
" ('must', 6444),\n",
" ('repeat', 298),\n",
" ('term', 366),\n",
" ('reach', 491),\n",
" ('repent', 14),\n",
" ('luke', 350),\n",
" ('13', 546),\n",
" ('5', 2815),\n",
" ('then', 16007),\n",
" (\"lord's\", 28),\n",
" ('command', 183),\n",
" ('forgive', 258),\n",
" (\"one's\", 512),\n",
" ('despise', 91),\n",
" ('persecute', 3),\n",
" ('cause', 989),\n",
" ('provocation', 27),\n",
" ('prevailing', 21),\n",
" ('difficulties', 138),\n",
" ('sentimentality', 103),\n",
" ('popularly', 5),\n",
" ('misinterpreted', 15),\n",
" ('obscuringly', 1),\n",
" ('simplifies', 3),\n",
" ('real', 9360),\n",
" ('meaning', 977),\n",
" ('forgiveness', 89),\n",
" ('does', 11608),\n",
" ('itself', 3226),\n",
" ('mean', 3318),\n",
" ('unconditionally', 8),\n",
" ('excusing', 7),\n",
" ('forgiven', 125),\n",
" ('clearly', 1749),\n",
" ('sober', 77),\n",
" ('view', 1933),\n",
" ('perspective', 479),\n",
" (\"god's\", 180),\n",
" ('actually', 8465),\n",
" ('amounts', 200),\n",
" ('fervent', 14),\n",
" ('wish', 1920),\n",
" ('will', 18087),\n",
" ('ultimately', 976),\n",
" ('succeed', 305),\n",
" ('finding', 741),\n",
" ('seeing', 4168),\n",
" ('light', 1882),\n",
" ('granted', 395),\n",
" ('mercy', 130),\n",
" ('opposite', 572),\n",
" ('say', 10756),\n",
" ('jonah', 21),\n",
" ('resented', 4),\n",
" ('god', 2262),\n",
" ('told', 2136),\n",
" ('preaching', 92),\n",
" ('nineveh', 1),\n",
" ('repentance', 16),\n",
" ('desired', 183),\n",
" ('destroyed', 380),\n",
" ('righteously', 9),\n",
" ('cold', 1079),\n",
" ('bloodedly', 2),\n",
" ('unto', 35),\n",
" ('save', 2080),\n",
" ('undoubtedly', 208),\n",
" ('better', 11424),\n",
" ('envy', 82),\n",
" ('may', 6584),\n",
" ('genuine', 529),\n",
" ('benefit', 217),\n",
" ('nancy', 281),\n",
" ('drew', 351),\n",
" ('books', 928),\n",
" ('bright', 541),\n",
" ('catch', 852),\n",
" ('younger', 1018),\n",
" ('year', 4307),\n",
" ('old', 8592),\n",
" (\"doesn't\", 8838),\n",
" ('school', 3489),\n",
" ('sixteen', 56),\n",
" ('naturally', 542),\n",
" ('smart', 858),\n",
" ('10th', 34),\n",
" ('grade', 916),\n",
" ('cute', 1134),\n",
" ('clean', 479),\n",
" ('appropriate', 412),\n",
" ('everyone', 4276),\n",
" ('funny', 8739),\n",
" ('times', 6346),\n",
" ('emma', 256),\n",
" ('did', 12588),\n",
" ('articulate', 62),\n",
" ('liked', 2943),\n",
" ('awkwardness', 42),\n",
" ('ned', 206),\n",
" ('each', 5211),\n",
" ('obviously', 2328),\n",
" ('serious', 2042),\n",
" ('relationship', 1924),\n",
" ('pg', 309),\n",
" ('throughly', 38),\n",
" ('enjoy', 3580),\n",
" ('sex', 3404),\n",
" ('profanity', 150),\n",
" ('first', 17567),\n",
" ('touch', 919),\n",
" ('mr', 2857),\n",
" ('sica', 22),\n",
" ('expect', 2355),\n",
" ('broke', 282),\n",
" ('expectations', 773),\n",
" ('storyline', 1559),\n",
" ('complex', 854),\n",
" ('shows', 4696),\n",
" ('us', 7365),\n",
" ('boy', 2981),\n",
" ('orphan', 76),\n",
" ('connection', 543),\n",
" ('community', 568),\n",
" ('poor', 3838),\n",
" ('together', 4444),\n",
" ('built', 472),\n",
" ('hood', 316),\n",
" ('metal', 353),\n",
" ('plate', 95),\n",
" ('houses', 188),\n",
" ('city', 2297),\n",
" ('fine', 2542),\n",
" ('day', 5165),\n",
" ('resource', 15),\n",
" ('rich', 1195),\n",
" ('nobles', 13),\n",
" ('man', 11033),\n",
" ('interested', 1293),\n",
" ('buying', 361),\n",
" ('place', 4708),\n",
" ('title', 2997),\n",
" ('hints', 179),\n",
" ('miracle', 156),\n",
" ('taking', 1888),\n",
" ('dove', 94),\n",
" ('mother', 2998),\n",
" ('protect', 312),\n",
" ('friends', 3604),\n",
" ('masterpiece', 1291),\n",
" ('natural', 840),\n",
" ('comedy', 6515),\n",
" ('shown', 2030),\n",
" ('behavior', 537),\n",
" ('money', 4489),\n",
" ('property', 166),\n",
" ('talk', 1722),\n",
" ('play', 4496),\n",
" ('moments', 3264),\n",
" ('included', 535),\n",
" ('beginning', 2772),\n",
" ('spot', 721),\n",
" ('sun', 383),\n",
" ('shining', 216),\n",
" ('according', 558),\n",
" ('m', 556),\n",
" ('lover', 724),\n",
" (\"you've\", 1438),\n",
" ('probably', 5622),\n",
" ('heard', 2218),\n",
" ('bit', 5963),\n",
" ('new', 8068),\n",
" ('disney', 1116),\n",
" ('dub', 121),\n",
" (\"miyazaki's\", 66),\n",
" ('classic', 3551),\n",
" ('laputa', 59),\n",
" ('castle', 518),\n",
" ('sky', 429),\n",
" ('during', 4311),\n",
" ('late', 2373),\n",
" ('summer', 723),\n",
" ('1998', 136),\n",
" ('released', 2000),\n",
" (\"kiki's\", 9),\n",
" ('delivery', 338),\n",
" ('service', 424),\n",
" ('video', 3427),\n",
" ('preview', 212),\n",
" ('saying', 1951),\n",
" ('1999', 222),\n",
" ('past', 2422),\n",
" ('finally', 3002),\n",
" ('completed', 156),\n",
" ('since', 5740),\n",
" ('word', 1863),\n",
" ('spanish', 536),\n",
" ('use', 3573),\n",
" ('throughout', 2667),\n",
" ('world', 7205),\n",
" ('renowned', 72),\n",
" ('composer', 173),\n",
" ('joe', 1193),\n",
" ('hisaishi', 12),\n",
" ('scored', 110),\n",
" ('originally', 546),\n",
" ('went', 3008),\n",
" ('rescore', 4),\n",
" ('music', 6443),\n",
" ('arrangements', 42),\n",
" ('came', 3306),\n",
" ('before', 8511),\n",
" ('neighbor', 231),\n",
" ('totoro', 26),\n",
" ('nausicaa', 27),\n",
" ('valley', 230),\n",
" ('wind', 568),\n",
" ('began', 630),\n",
" ('studio', 947),\n",
" ('ghibli', 33),\n",
" ('long', 6864),\n",
" ('string', 283),\n",
" ('hits', 544),\n",
" ('opinion', 1861),\n",
" ('think', 14336),\n",
" ('powerful', 1234),\n",
" ('lesson', 490),\n",
" ('tuckered', 1),\n",
" ('inside', 1274),\n",
" ('hour', 2344),\n",
" ('four', 1866),\n",
" ('minute', 1548),\n",
" ('gem', 718),\n",
" ('ages', 463),\n",
" ('urge', 195),\n",
" ('unfamiliar', 101),\n",
" (\"sky's\", 4),\n",
" ('story', 22958),\n",
" ('begins', 1450),\n",
" ('right', 6513),\n",
" ('start', 3407),\n",
" ('storytelling', 327),\n",
" ('flawless', 237),\n",
" ('crafted', 336),\n",
" ('true', 4494),\n",
" ('vision', 578),\n",
" ('believe', 4987),\n",
" ('fantastic', 1516),\n",
" ('sheeta', 29),\n",
" ('helluva', 20),\n",
" ('held', 735),\n",
" ('captive', 86),\n",
" ('government', 845),\n",
" ('airship', 3),\n",
" ('holds', 609),\n",
" ('key', 817),\n",
" ('civilization', 168),\n",
" ('sacred', 63),\n",
" ('pendant', 8),\n",
" ('sought', 107),\n",
" ('namely', 197),\n",
" ('military', 864),\n",
" ('air', 1327),\n",
" ('pirate', 117),\n",
" ('group', 2248),\n",
" ('dola', 13),\n",
" ('gang', 939),\n",
" ('pazu', 25),\n",
" ('later', 4265),\n",
" ('befriend', 34),\n",
" ('soon', 2345),\n",
" ('pirates', 117),\n",
" ('attack', 818),\n",
" ('ship', 757),\n",
" ('escapes', 310),\n",
" ('raid', 83),\n",
" ('few', 7954),\n",
" ('thousand', 301),\n",
" ('feet', 512),\n",
" ('fall', 1548),\n",
" ...])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"imdbTokenizer.word_counts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Las 20 palabras más usadas en el dataset son (haciendo uso de `imdbTokenizer.word_index.items()`):"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"18 but\n",
"13 was\n",
"3 a\n",
"4 of\n",
"12 that\n",
"8 in\n",
"14 as\n",
"11 this\n",
"9 it\n",
"7 br\n",
"1 the\n",
"5 to\n",
"2 and\n",
"10 i\n",
"6 is\n",
"15 for\n",
"17 movie\n",
"19 film\n",
"16 with\n"
]
}
],
"source": [
"for word, value in imdbTokenizer.word_index.items():\n",
" if value < 20:\n",
" print(value, word)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Creamos un diccionario de palabras que equipare la variedad de palabras en las reseñas con la tokenización del vocabulario."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"intToWord = {}\n",
"for word, value in imdbTokenizer.word_index.items():\n",
" intToWord[value] = word"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Añadimos un símbolo para el primer valor de nuestro diccionario equiparable a un elemento vacío."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"intToWord[0] = \"NA\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos echarle un breve vistazo al diccionario."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{0: 'NA',\n",
" 1: 'the',\n",
" 2: 'and',\n",
" 3: 'a',\n",
" 4: 'of',\n",
" 5: 'to',\n",
" 6: 'is',\n",
" 7: 'br',\n",
" 8: 'in',\n",
" 9: 'it',\n",
" 10: 'i',\n",
" 11: 'this',\n",
" 12: 'that',\n",
" 13: 'was',\n",
" 14: 'as',\n",
" 15: 'for',\n",
" 16: 'with',\n",
" 17: 'movie',\n",
" 18: 'but',\n",
" 19: 'film',\n",
" 20: 'on',\n",
" 21: 'not',\n",
" 22: 'you',\n",
" 23: 'are',\n",
" 24: 'his',\n",
" 25: 'have',\n",
" 26: 'be',\n",
" 27: 'one',\n",
" 28: 'he',\n",
" 29: 'all',\n",
" 30: 'at',\n",
" 31: 'by',\n",
" 32: 'an',\n",
" 33: 'they',\n",
" 34: 'so',\n",
" 35: 'who',\n",
" 36: 'from',\n",
" 37: 'like',\n",
" 38: 'or',\n",
" 39: 'just',\n",
" 40: 'her',\n",
" 41: 'out',\n",
" 42: 'about',\n",
" 43: 'if',\n",
" 44: \"it's\",\n",
" 45: 'has',\n",
" 46: 'there',\n",
" 47: 'some',\n",
" 48: 'what',\n",
" 49: 'good',\n",
" 50: 'when',\n",
" 51: 'more',\n",
" 52: 'very',\n",
" 53: 'up',\n",
" 54: 'no',\n",
" 55: 'time',\n",
" 56: 'my',\n",
" 57: 'even',\n",
" 58: 'would',\n",
" 59: 'she',\n",
" 60: 'which',\n",
" 61: 'only',\n",
" 62: 'really',\n",
" 63: 'see',\n",
" 64: 'story',\n",
" 65: 'their',\n",
" 66: 'had',\n",
" 67: 'can',\n",
" 68: 'me',\n",
" 69: 'well',\n",
" 70: 'were',\n",
" 71: 'than',\n",
" 72: 'much',\n",
" 73: 'we',\n",
" 74: 'bad',\n",
" 75: 'been',\n",
" 76: 'get',\n",
" 77: 'do',\n",
" 78: 'great',\n",
" 79: 'other',\n",
" 80: 'will',\n",
" 81: 'also',\n",
" 82: 'into',\n",
" 83: 'people',\n",
" 84: 'because',\n",
" 85: 'how',\n",
" 86: 'first',\n",
" 87: 'him',\n",
" 88: 'most',\n",
" 89: \"don't\",\n",
" 90: 'made',\n",
" 91: 'then',\n",
" 92: 'its',\n",
" 93: 'them',\n",
" 94: 'make',\n",
" 95: 'way',\n",
" 96: 'too',\n",
" 97: 'movies',\n",
" 98: 'could',\n",
" 99: 'any',\n",
" 100: 'after',\n",
" 101: 'think',\n",
" 102: 'characters',\n",
" 103: 'watch',\n",
" 104: 'films',\n",
" 105: 'two',\n",
" 106: 'many',\n",
" 107: 'seen',\n",
" 108: 'character',\n",
" 109: 'being',\n",
" 110: 'never',\n",
" 111: 'plot',\n",
" 112: 'love',\n",
" 113: 'acting',\n",
" 114: 'life',\n",
" 115: 'did',\n",
" 116: 'best',\n",
" 117: 'where',\n",
" 118: 'know',\n",
" 119: 'show',\n",
" 120: 'little',\n",
" 121: 'over',\n",
" 122: 'off',\n",
" 123: 'ever',\n",
" 124: 'does',\n",
" 125: 'your',\n",
" 126: 'better',\n",
" 127: 'end',\n",
" 128: 'man',\n",
" 129: 'scene',\n",
" 130: 'still',\n",
" 131: 'say',\n",
" 132: 'these',\n",
" 133: 'here',\n",
" 134: 'scenes',\n",
" 135: 'why',\n",
" 136: 'while',\n",
" 137: 'something',\n",
" 138: 'such',\n",
" 139: 'go',\n",
" 140: 'through',\n",
" 141: 'back',\n",
" 142: 'should',\n",
" 143: 'those',\n",
" 144: 'real',\n",
" 145: \"i'm\",\n",
" 146: 'now',\n",
" 147: 'watching',\n",
" 148: 'thing',\n",
" 149: \"doesn't\",\n",
" 150: 'actors',\n",
" 151: 'though',\n",
" 152: 'funny',\n",
" 153: 'years',\n",
" 154: \"didn't\",\n",
" 155: 'old',\n",
" 156: 'another',\n",
" 157: '10',\n",
" 158: 'work',\n",
" 159: 'before',\n",
" 160: 'actually',\n",
" 161: 'nothing',\n",
" 162: 'makes',\n",
" 163: 'look',\n",
" 164: 'director',\n",
" 165: 'find',\n",
" 166: 'going',\n",
" 167: 'same',\n",
" 168: 'new',\n",
" 169: 'lot',\n",
" 170: 'every',\n",
" 171: 'few',\n",
" 172: 'again',\n",
" 173: 'part',\n",
" 174: 'cast',\n",
" 175: 'down',\n",
" 176: 'us',\n",
" 177: 'things',\n",
" 178: 'want',\n",
" 179: 'quite',\n",
" 180: 'pretty',\n",
" 181: 'world',\n",
" 182: 'horror',\n",
" 183: 'around',\n",
" 184: 'seems',\n",
" 185: \"can't\",\n",
" 186: 'young',\n",
" 187: 'take',\n",
" 188: 'however',\n",
" 189: 'got',\n",
" 190: 'thought',\n",
" 191: 'big',\n",
" 192: 'fact',\n",
" 193: 'enough',\n",
" 194: 'long',\n",
" 195: 'both',\n",
" 196: \"that's\",\n",
" 197: 'give',\n",
" 198: \"i've\",\n",
" 199: 'own',\n",
" 200: 'may',\n",
" 201: 'between',\n",
" 202: 'comedy',\n",
" 203: 'right',\n",
" 204: 'series',\n",
" 205: 'action',\n",
" 206: 'must',\n",
" 207: 'music',\n",
" 208: 'without',\n",
" 209: 'times',\n",
" 210: 'saw',\n",
" 211: 'always',\n",
" 212: 'original',\n",
" 213: \"isn't\",\n",
" 214: 'role',\n",
" 215: 'come',\n",
" 216: 'almost',\n",
" 217: 'gets',\n",
" 218: 'interesting',\n",
" 219: 'guy',\n",
" 220: 'point',\n",
" 221: 'done',\n",
" 222: \"there's\",\n",
" 223: 'whole',\n",
" 224: 'least',\n",
" 225: 'far',\n",
" 226: 'bit',\n",
" 227: 'script',\n",
" 228: 'minutes',\n",
" 229: 'feel',\n",
" 230: '2',\n",
" 231: 'anything',\n",
" 232: 'making',\n",
" 233: 'might',\n",
" 234: 'since',\n",
" 235: 'am',\n",
" 236: 'family',\n",
" 237: \"he's\",\n",
" 238: 'last',\n",
" 239: 'probably',\n",
" 240: 'tv',\n",
" 241: 'performance',\n",
" 242: 'kind',\n",
" 243: 'away',\n",
" 244: 'yet',\n",
" 245: 'fun',\n",
" 246: 'worst',\n",
" 247: 'sure',\n",
" 248: 'rather',\n",
" 249: 'hard',\n",
" 250: 'girl',\n",
" 251: 'anyone',\n",
" 252: 'each',\n",
" 253: 'played',\n",
" 254: 'day',\n",
" 255: 'found',\n",
" 256: 'looking',\n",
" 257: 'woman',\n",
" 258: 'screen',\n",
" 259: 'although',\n",
" 260: 'our',\n",
" 261: 'especially',\n",
" 262: 'believe',\n",
" 263: 'having',\n",
" 264: 'trying',\n",
" 265: 'course',\n",
" 266: 'dvd',\n",
" 267: 'everything',\n",
" 268: 'set',\n",
" 269: 'goes',\n",
" 270: 'comes',\n",
" 271: 'put',\n",
" 272: 'ending',\n",
" 273: 'maybe',\n",
" 274: 'place',\n",
" 275: 'book',\n",
" 276: 'shows',\n",
" 277: 'three',\n",
" 278: 'worth',\n",
" 279: 'different',\n",
" 280: 'main',\n",
" 281: 'once',\n",
" 282: 'sense',\n",
" 283: 'american',\n",
" 284: 'reason',\n",
" 285: 'looks',\n",
" 286: 'effects',\n",
" 287: 'watched',\n",
" 288: 'play',\n",
" 289: 'true',\n",
" 290: 'money',\n",
" 291: 'actor',\n",
" 292: \"wasn't\",\n",
" 293: 'job',\n",
" 294: 'together',\n",
" 295: 'war',\n",
" 296: 'someone',\n",
" 297: 'plays',\n",
" 298: 'instead',\n",
" 299: 'high',\n",
" 300: 'during',\n",
" 301: 'year',\n",
" 302: 'said',\n",
" 303: 'half',\n",
" 304: 'everyone',\n",
" 305: 'later',\n",
" 306: 'takes',\n",
" 307: '1',\n",
" 308: 'seem',\n",
" 309: 'audience',\n",
" 310: 'special',\n",
" 311: 'beautiful',\n",
" 312: 'left',\n",
" 313: 'himself',\n",
" 314: 'seeing',\n",
" 315: 'john',\n",
" 316: 'night',\n",
" 317: 'black',\n",
" 318: 'version',\n",
" 319: 'shot',\n",
" 320: 'excellent',\n",
" 321: 'idea',\n",
" 322: 'house',\n",
" 323: 'mind',\n",
" 324: 'star',\n",
" 325: 'wife',\n",
" 326: 'fan',\n",
" 327: 'death',\n",
" 328: 'used',\n",
" 329: 'else',\n",
" 330: 'simply',\n",
" 331: 'nice',\n",
" 332: 'budget',\n",
" 333: 'poor',\n",
" 334: 'short',\n",
" 335: 'completely',\n",
" 336: 'second',\n",
" 337: \"you're\",\n",
" 338: '3',\n",
" 339: 'read',\n",
" 340: 'along',\n",
" 341: 'less',\n",
" 342: 'top',\n",
" 343: 'help',\n",
" 344: 'home',\n",
" 345: 'men',\n",
" 346: 'either',\n",
" 347: 'line',\n",
" 348: 'boring',\n",
" 349: 'dead',\n",
" 350: 'friends',\n",
" 351: 'kids',\n",
" 352: 'try',\n",
" 353: 'production',\n",
" 354: 'enjoy',\n",
" 355: 'camera',\n",
" 356: 'use',\n",
" 357: 'wrong',\n",
" 358: 'given',\n",
" 359: 'low',\n",
" 360: 'classic',\n",
" 361: 'father',\n",
" 362: 'need',\n",
" 363: 'full',\n",
" 364: 'stupid',\n",
" 365: 'next',\n",
" 366: 'until',\n",
" 367: 'performances',\n",
" 368: 'school',\n",
" 369: 'hollywood',\n",
" 370: 'rest',\n",
" 371: 'truly',\n",
" 372: 'awful',\n",
" 373: 'video',\n",
" 374: 'couple',\n",
" 375: 'start',\n",
" 376: 'sex',\n",
" 377: 'recommend',\n",
" 378: 'women',\n",
" 379: 'let',\n",
" 380: 'tell',\n",
" 381: 'terrible',\n",
" 382: 'remember',\n",
" 383: 'mean',\n",
" 384: 'came',\n",
" 385: 'understand',\n",
" 386: 'getting',\n",
" 387: 'perhaps',\n",
" 388: 'moments',\n",
" 389: 'name',\n",
" 390: 'keep',\n",
" 391: 'face',\n",
" 392: 'itself',\n",
" 393: 'wonderful',\n",
" 394: 'playing',\n",
" 395: 'human',\n",
" 396: 'style',\n",
" 397: 'small',\n",
" 398: 'episode',\n",
" 399: 'perfect',\n",
" 400: 'others',\n",
" 401: 'person',\n",
" 402: 'doing',\n",
" 403: 'often',\n",
" 404: 'early',\n",
" 405: 'stars',\n",
" 406: 'definitely',\n",
" 407: 'written',\n",
" 408: 'head',\n",
" 409: 'lines',\n",
" 410: 'dialogue',\n",
" 411: 'gives',\n",
" 412: 'piece',\n",
" 413: \"couldn't\",\n",
" 414: 'went',\n",
" 415: 'finally',\n",
" 416: 'mother',\n",
" 417: 'case',\n",
" 418: 'title',\n",
" 419: 'absolutely',\n",
" 420: 'boy',\n",
" 421: 'live',\n",
" 422: 'yes',\n",
" 423: 'laugh',\n",
" 424: 'certainly',\n",
" 425: 'liked',\n",
" 426: 'become',\n",
" 427: 'worse',\n",
" 428: 'entertaining',\n",
" 429: 'oh',\n",
" 430: 'sort',\n",
" 431: 'loved',\n",
" 432: 'lost',\n",
" 433: 'hope',\n",
" 434: 'called',\n",
" 435: 'picture',\n",
" 436: 'felt',\n",
" 437: 'overall',\n",
" 438: 'entire',\n",
" 439: 'several',\n",
" 440: 'mr',\n",
" 441: 'based',\n",
" 442: 'supposed',\n",
" 443: 'cinema',\n",
" 444: 'friend',\n",
" 445: 'guys',\n",
" 446: 'sound',\n",
" 447: '5',\n",
" 448: 'problem',\n",
" 449: 'drama',\n",
" 450: 'against',\n",
" 451: 'waste',\n",
" 452: 'white',\n",
" 453: 'beginning',\n",
" 454: '4',\n",
" 455: 'fans',\n",
" 456: 'totally',\n",
" 457: 'dark',\n",
" 458: 'care',\n",
" 459: 'direction',\n",
" 460: 'humor',\n",
" 461: 'wanted',\n",
" 462: \"she's\",\n",
" 463: 'seemed',\n",
" 464: 'game',\n",
" 465: 'under',\n",
" 466: 'children',\n",
" 467: 'despite',\n",
" 468: 'lives',\n",
" 469: 'lead',\n",
" 470: 'guess',\n",
" 471: 'example',\n",
" 472: 'already',\n",
" 473: 'final',\n",
" 474: 'throughout',\n",
" 475: \"you'll\",\n",
" 476: 'evil',\n",
" 477: 'turn',\n",
" 478: 'becomes',\n",
" 479: 'unfortunately',\n",
" 480: 'able',\n",
" 481: 'quality',\n",
" 482: \"i'd\",\n",
" 483: 'days',\n",
" 484: 'history',\n",
" 485: 'fine',\n",
" 486: 'side',\n",
" 487: 'wants',\n",
" 488: 'heart',\n",
" 489: 'horrible',\n",
" 490: 'writing',\n",
" 491: 'amazing',\n",
" 492: 'b',\n",
" 493: 'flick',\n",
" 494: 'killer',\n",
" 495: 'run',\n",
" 496: 'son',\n",
" 497: '\\x96',\n",
" 498: 'michael',\n",
" 499: 'works',\n",
" 500: 'close',\n",
" 501: \"they're\",\n",
" 502: 'act',\n",
" 503: 'art',\n",
" 504: 'matter',\n",
" 505: 'kill',\n",
" 506: 'etc',\n",
" 507: 'tries',\n",
" 508: \"won't\",\n",
" 509: 'past',\n",
" 510: 'town',\n",
" 511: 'enjoyed',\n",
" 512: 'turns',\n",
" 513: 'brilliant',\n",
" 514: 'gave',\n",
" 515: 'behind',\n",
" 516: 'parts',\n",
" 517: 'stuff',\n",
" 518: 'genre',\n",
" 519: 'eyes',\n",
" 520: 'car',\n",
" 521: 'favorite',\n",
" 522: 'directed',\n",
" 523: 'late',\n",
" 524: 'hand',\n",
" 525: 'expect',\n",
" 526: 'soon',\n",
" 527: 'hour',\n",
" 528: 'obviously',\n",
" 529: 'themselves',\n",
" 530: 'sometimes',\n",
" 531: 'killed',\n",
" 532: 'actress',\n",
" 533: 'thinking',\n",
" 534: 'child',\n",
" 535: 'girls',\n",
" 536: 'viewer',\n",
" 537: 'starts',\n",
" 538: 'myself',\n",
" 539: 'city',\n",
" 540: 'decent',\n",
" 541: 'highly',\n",
" 542: 'stop',\n",
" 543: 'type',\n",
" 544: 'self',\n",
" 545: 'god',\n",
" 546: 'says',\n",
" 547: 'group',\n",
" 548: 'anyway',\n",
" 549: 'voice',\n",
" 550: 'took',\n",
" 551: 'known',\n",
" 552: 'blood',\n",
" 553: 'kid',\n",
" 554: 'heard',\n",
" 555: 'happens',\n",
" 556: 'except',\n",
" 557: 'fight',\n",
" 558: 'feeling',\n",
" 559: 'experience',\n",
" 560: 'coming',\n",
" 561: 'slow',\n",
" 562: 'daughter',\n",
" 563: 'writer',\n",
" 564: 'stories',\n",
" 565: 'moment',\n",
" 566: 'told',\n",
" 567: 'leave',\n",
" 568: 'extremely',\n",
" 569: 'score',\n",
" 570: 'violence',\n",
" 571: 'police',\n",
" 572: 'involved',\n",
" 573: 'strong',\n",
" 574: 'chance',\n",
" 575: 'lack',\n",
" 576: 'cannot',\n",
" 577: 'hit',\n",
" 578: 'hilarious',\n",
" 579: 'roles',\n",
" 580: 's',\n",
" 581: 'wonder',\n",
" 582: 'happen',\n",
" 583: 'particularly',\n",
" 584: 'ok',\n",
" 585: 'including',\n",
" 586: 'save',\n",
" 587: 'living',\n",
" 588: 'looked',\n",
" 589: \"wouldn't\",\n",
" 590: 'crap',\n",
" 591: 'simple',\n",
" 592: 'please',\n",
" 593: 'cool',\n",
" 594: 'murder',\n",
" 595: 'obvious',\n",
" 596: 'happened',\n",
" 597: 'complete',\n",
" 598: 'cut',\n",
" 599: 'age',\n",
" 600: 'serious',\n",
" 601: 'gore',\n",
" 602: 'attempt',\n",
" 603: 'hell',\n",
" 604: 'ago',\n",
" 605: 'song',\n",
" 606: 'shown',\n",
" 607: 'taken',\n",
" 608: 'english',\n",
" 609: 'james',\n",
" 610: 'robert',\n",
" 611: 'david',\n",
" 612: 'seriously',\n",
" 613: 'released',\n",
" 614: 'reality',\n",
" 615: 'opening',\n",
" 616: 'jokes',\n",
" 617: 'interest',\n",
" 618: 'across',\n",
" 619: 'none',\n",
" 620: 'hero',\n",
" 621: 'exactly',\n",
" 622: 'possible',\n",
" 623: 'today',\n",
" 624: 'alone',\n",
" 625: 'sad',\n",
" 626: 'brother',\n",
" 627: 'number',\n",
" 628: 'saying',\n",
" 629: 'career',\n",
" 630: \"film's\",\n",
" 631: 'hours',\n",
" 632: 'usually',\n",
" 633: 'cinematography',\n",
" 634: 'talent',\n",
" 635: 'view',\n",
" 636: 'yourself',\n",
" 637: 'running',\n",
" 638: 'annoying',\n",
" 639: 'relationship',\n",
" 640: 'documentary',\n",
" 641: 'wish',\n",
" 642: 'order',\n",
" 643: 'huge',\n",
" 644: 'whose',\n",
" 645: 'shots',\n",
" 646: 'ridiculous',\n",
" 647: 'taking',\n",
" 648: 'important',\n",
" 649: 'light',\n",
" 650: 'body',\n",
" 651: 'middle',\n",
" 652: 'level',\n",
" 653: 'ends',\n",
" 654: 'call',\n",
" 655: 'female',\n",
" 656: 'started',\n",
" 657: \"i'll\",\n",
" 658: 'husband',\n",
" 659: 'four',\n",
" 660: 'power',\n",
" 661: 'turned',\n",
" 662: 'word',\n",
" 663: 'major',\n",
" 664: 'opinion',\n",
" 665: 'change',\n",
" 666: 'mostly',\n",
" 667: 'usual',\n",
" 668: 'scary',\n",
" 669: 'silly',\n",
" 670: 'rating',\n",
" 671: 'beyond',\n",
" 672: 'somewhat',\n",
" 673: 'happy',\n",
" 674: 'ones',\n",
" 675: 'words',\n",
" 676: 'room',\n",
" 677: 'knew',\n",
" 678: 'knows',\n",
" 679: 'country',\n",
" 680: 'disappointed',\n",
" 681: 'talking',\n",
" 682: 'novel',\n",
" 683: 'apparently',\n",
" 684: 'non',\n",
" 685: 'strange',\n",
" 686: 'upon',\n",
" 687: 'attention',\n",
" 688: 'finds',\n",
" 689: 'single',\n",
" 690: 'basically',\n",
" 691: 'cheap',\n",
" 692: 'modern',\n",
" 693: 'due',\n",
" 694: 'jack',\n",
" 695: 'musical',\n",
" 696: 'television',\n",
" 697: 'problems',\n",
" 698: 'miss',\n",
" 699: 'episodes',\n",
" 700: 'clearly',\n",
" 701: 'local',\n",
" 702: '7',\n",
" 703: 'british',\n",
" 704: 'thriller',\n",
" 705: 'talk',\n",
" 706: 'events',\n",
" 707: 'sequence',\n",
" 708: 'five',\n",
" 709: \"aren't\",\n",
" 710: 'class',\n",
" 711: 'french',\n",
" 712: 'moving',\n",
" 713: 'ten',\n",
" 714: 'fast',\n",
" 715: 'earth',\n",
" 716: 'review',\n",
" 717: 'tells',\n",
" 718: 'predictable',\n",
" 719: 'songs',\n",
" 720: 'team',\n",
" 721: 'comic',\n",
" 722: 'straight',\n",
" 723: 'whether',\n",
" 724: '8',\n",
" 725: 'die',\n",
" 726: 'add',\n",
" 727: 'dialog',\n",
" 728: 'entertainment',\n",
" 729: 'above',\n",
" 730: 'sets',\n",
" 731: 'future',\n",
" 732: 'enjoyable',\n",
" 733: 'appears',\n",
" 734: 'near',\n",
" 735: 'space',\n",
" 736: 'easily',\n",
" 737: 'hate',\n",
" 738: 'soundtrack',\n",
" 739: 'bring',\n",
" 740: 'giving',\n",
" 741: 'lots',\n",
" 742: 'similar',\n",
" 743: 'romantic',\n",
" 744: 'george',\n",
" 745: 'supporting',\n",
" 746: 'release',\n",
" 747: 'mention',\n",
" 748: 'filmed',\n",
" 749: 'within',\n",
" 750: 'message',\n",
" 751: 'sequel',\n",
" 752: 'clear',\n",
" 753: 'falls',\n",
" 754: \"haven't\",\n",
" 755: 'needs',\n",
" 756: 'dull',\n",
" 757: 'suspense',\n",
" 758: 'eye',\n",
" 759: 'bunch',\n",
" 760: 'surprised',\n",
" 761: 'showing',\n",
" 762: 'sorry',\n",
" 763: 'tried',\n",
" 764: 'certain',\n",
" 765: 'working',\n",
" 766: 'easy',\n",
" 767: 'ways',\n",
" 768: 'theme',\n",
" 769: 'theater',\n",
" 770: 'among',\n",
" 771: 'named',\n",
" 772: \"what's\",\n",
" 773: 'storyline',\n",
" 774: 'monster',\n",
" 775: 'king',\n",
" 776: 'stay',\n",
" 777: 'effort',\n",
" 778: 'minute',\n",
" 779: 'fall',\n",
" 780: 'stand',\n",
" 781: 'gone',\n",
" 782: 'rock',\n",
" 783: 'using',\n",
" 784: '9',\n",
" 785: 'feature',\n",
" 786: 'buy',\n",
" 787: 'comments',\n",
" 788: \"'\",\n",
" 789: 'typical',\n",
" 790: 't',\n",
" 791: 'sister',\n",
" 792: 'editing',\n",
" 793: 'avoid',\n",
" 794: 'tale',\n",
" 795: 'mystery',\n",
" 796: 'deal',\n",
" 797: 'dr',\n",
" 798: 'doubt',\n",
" 799: 'fantastic',\n",
" 800: 'nearly',\n",
" 801: 'kept',\n",
" 802: 'feels',\n",
" 803: 'subject',\n",
" 804: 'okay',\n",
" 805: 'viewing',\n",
" 806: 'elements',\n",
" 807: 'oscar',\n",
" 808: 'check',\n",
" 809: 'realistic',\n",
" 810: 'points',\n",
" 811: 'greatest',\n",
" 812: 'means',\n",
" 813: 'herself',\n",
" 814: 'parents',\n",
" 815: 'famous',\n",
" 816: 'imagine',\n",
" 817: 'rent',\n",
" 818: 'viewers',\n",
" 819: 'crime',\n",
" 820: 'richard',\n",
" 821: 'form',\n",
" 822: 'peter',\n",
" 823: 'actual',\n",
" 824: 'lady',\n",
" 825: 'general',\n",
" 826: 'dog',\n",
" 827: 'follow',\n",
" 828: 'believable',\n",
" 829: 'period',\n",
" 830: 'red',\n",
" 831: 'brought',\n",
" 832: 'move',\n",
" 833: 'material',\n",
" 834: 'forget',\n",
" 835: 'somehow',\n",
" 836: 'begins',\n",
" 837: 're',\n",
" 838: 'reviews',\n",
" 839: 'animation',\n",
" 840: 'paul',\n",
" 841: \"you've\",\n",
" 842: 'leads',\n",
" 843: 'weak',\n",
" 844: 'figure',\n",
" 845: 'surprise',\n",
" 846: 'hear',\n",
" 847: 'sit',\n",
" 848: 'average',\n",
" 849: 'open',\n",
" 850: 'sequences',\n",
" 851: 'atmosphere',\n",
" 852: 'killing',\n",
" 853: 'eventually',\n",
" 854: 'learn',\n",
" 855: 'tom',\n",
" 856: 'premise',\n",
" 857: 'wait',\n",
" 858: '20',\n",
" 859: 'sci',\n",
" 860: 'deep',\n",
" 861: 'fi',\n",
" 862: 'expected',\n",
" 863: 'whatever',\n",
" 864: 'indeed',\n",
" 865: 'particular',\n",
" 866: 'note',\n",
" 867: 'poorly',\n",
" 868: 'lame',\n",
" 869: 'imdb',\n",
" 870: 'dance',\n",
" 871: 'situation',\n",
" 872: 'shame',\n",
" 873: 'third',\n",
" 874: 'box',\n",
" 875: 'york',\n",
" 876: 'truth',\n",
" 877: 'decided',\n",
" 878: 'free',\n",
" 879: 'hot',\n",
" 880: \"who's\",\n",
" 881: 'difficult',\n",
" 882: 'needed',\n",
" 883: 'season',\n",
" 884: 'acted',\n",
" 885: 'leaves',\n",
" 886: 'unless',\n",
" 887: 'emotional',\n",
" 888: 'romance',\n",
" 889: 'possibly',\n",
" 890: 'sexual',\n",
" 891: 'gay',\n",
" 892: 'boys',\n",
" 893: 'footage',\n",
" 894: 'write',\n",
" 895: 'western',\n",
" 896: 'credits',\n",
" 897: 'forced',\n",
" 898: 'reading',\n",
" 899: 'memorable',\n",
" 900: 'became',\n",
" 901: 'doctor',\n",
" 902: 'otherwise',\n",
" 903: 'air',\n",
" 904: 'begin',\n",
" 905: 'de',\n",
" 906: 'crew',\n",
" 907: 'question',\n",
" 908: 'meet',\n",
" 909: 'society',\n",
" 910: 'male',\n",
" 911: \"let's\",\n",
" 912: 'meets',\n",
" 913: 'plus',\n",
" 914: 'cheesy',\n",
" 915: 'hands',\n",
" 916: 'superb',\n",
" 917: 'screenplay',\n",
" 918: 'interested',\n",
" 919: 'beauty',\n",
" 920: 'features',\n",
" 921: 'street',\n",
" 922: 'perfectly',\n",
" 923: 'masterpiece',\n",
" 924: 'whom',\n",
" 925: 'laughs',\n",
" 926: 'nature',\n",
" 927: 'stage',\n",
" 928: 'effect',\n",
" 929: 'forward',\n",
" 930: 'comment',\n",
" 931: 'nor',\n",
" 932: 'sounds',\n",
" 933: 'e',\n",
" 934: 'badly',\n",
" 935: 'previous',\n",
" 936: 'japanese',\n",
" 937: 'weird',\n",
" 938: 'island',\n",
" 939: 'personal',\n",
" 940: 'inside',\n",
" 941: 'quickly',\n",
" 942: 'total',\n",
" 943: 'keeps',\n",
" 944: 'towards',\n",
" 945: 'result',\n",
" 946: 'america',\n",
" 947: 'crazy',\n",
" 948: 'battle',\n",
" 949: 'worked',\n",
" 950: 'setting',\n",
" 951: 'incredibly',\n",
" 952: 'background',\n",
" 953: 'earlier',\n",
" 954: 'mess',\n",
" 955: 'cop',\n",
" 956: 'writers',\n",
" 957: 'fire',\n",
" 958: 'copy',\n",
" 959: 'realize',\n",
" 960: 'unique',\n",
" 961: 'dumb',\n",
" 962: 'powerful',\n",
" 963: 'mark',\n",
" 964: 'lee',\n",
" 965: 'business',\n",
" 966: 'rate',\n",
" 967: 'dramatic',\n",
" 968: 'older',\n",
" 969: 'pay',\n",
" 970: 'following',\n",
" 971: 'directors',\n",
" 972: 'joke',\n",
" 973: 'girlfriend',\n",
" 974: 'plenty',\n",
" 975: 'directing',\n",
" 976: 'various',\n",
" 977: 'creepy',\n",
" 978: 'baby',\n",
" 979: 'appear',\n",
" 980: 'development',\n",
" 981: 'brings',\n",
" 982: 'front',\n",
" 983: 'dream',\n",
" 984: 'ask',\n",
" 985: 'water',\n",
" 986: 'rich',\n",
" 987: 'admit',\n",
" 988: 'bill',\n",
" 989: 'apart',\n",
" 990: 'joe',\n",
" 991: 'political',\n",
" 992: 'fairly',\n",
" 993: 'reasons',\n",
" 994: 'leading',\n",
" 995: 'portrayed',\n",
" 996: 'spent',\n",
" 997: 'telling',\n",
" 998: 'cover',\n",
" 999: 'outside',\n",
" ...}"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"intToWord"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Con nuestro diccionario construido, podemos tranformar las reseñas a secuencias de enteros."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"This movie just pulls you so deeply into the two main characters. I popped it into my laptop without even reading the cover (let alone reviews) and was intrigued for two solid hours. Two lost ships from two different worlds collide. The sexual tension that brews between a secretary and a criminal is almost palpable even without hardly any physical contact. Toward the end I couldn't decide which I wanted more: Our hero and heroine to pull off their caper or simply consummate their passion. RML could've done without a curious subplot and a traditional 100 minutes would have been plenty. I'm nitpicking though. After a series of Netflix, Blockbuster and local library duds this movie restored my faith in great film making.\n",
"[11, 17, 39, 2595, 22, 34, 1751, 82, 1, 105, 280, 102, 10, 9, 82, 56, 208, 57, 898, 1, 998, 379, 624, 838, 2, 13, 3994, 15, 105, 1192, 631, 105, 432, 4940, 36, 105, 279, 3639, 1, 890, 1089, 12, 201, 3, 3804, 2, 3, 1785, 6, 216, 57, 208, 1031, 99, 1713, 2917, 1987, 1, 127, 10, 413, 1166, 60, 10, 461, 51, 260, 620, 2, 1988, 5, 1491, 122, 65, 38, 330, 65, 1652, 2806, 221, 208, 3, 2119, 3451, 2, 3, 2206, 1231, 228, 58, 25, 75, 974, 145, 151, 100, 3, 204, 4, 2681, 2, 701, 3437, 11, 17, 56, 1909, 8, 78, 19, 232]\n"
]
}
],
"source": [
"print(X_train[0])\n",
" \n",
"X_train = imdbTokenizer.texts_to_sequences(X_train)\n",
"X_test = imdbTokenizer.texts_to_sequences(X_test)\n",
"\n",
"print(X_train[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A continuación, debemos **truncar o rellenar** las secuencias de entrada para que tengan todas la misma longitud para tanto para el ajuste como para el testeo. \n",
"\n",
"Para ello hacemos uso de la función de Keras `sequence.pad_sequences()`."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"25000 reseñas de entrenamiento\n",
"25000 reseñas de testeo\n",
"Hacemos un padding de las secuencias, obteniendo las siguientes dimensiones:\n",
"X_train shape: (25000, 500)\n",
"X_test shape: (25000, 500)\n"
]
}
],
"source": [
"print(len(X_train), 'reseñas de entrenamiento')\n",
"print(len(X_test), 'reseñas de testeo')\n",
"\n",
"print(\"Hacemos un padding de las secuencias, obteniendo las siguientes dimensiones:\")\n",
"X_train = sequence.pad_sequences(X_train, maxlen = max_len)\n",
"X_test = sequence.pad_sequences(X_test, maxlen=max_len)\n",
"print('X_train shape:', X_train.shape)\n",
"print('X_test shape:', X_test.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Las etiquetas de nuestro dataset quedan de la siguiente manera:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"y_train = np.array(y_train)\n",
"y_test = np.array(y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos mostrar a continuación cómo que codifica en enteros una secuencia de palabras pertenecientes a una reseña:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x: [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11\n",
" 17 39 2595 22 34 1751 82 1 105 280 102 10 9 82 56\n",
" 208 57 898 1 998 379 624 838 2 13 3994 15 105 1192 631\n",
" 105 432 4940 36 105 279 3639 1 890 1089 12 201 3 3804 2\n",
" 3 1785 6 216 57 208 1031 99 1713 2917 1987 1 127 10 413\n",
" 1166 60 10 461 51 260 620 2 1988 5 1491 122 65 38 330\n",
" 65 1652 2806 221 208 3 2119 3451 2 3 2206 1231 228 58 25\n",
" 75 974 145 151 100 3 204 4 2681 2 701 3437 11 17 56\n",
" 1909 8 78 19 232]\n",
"y: 1\n"
]
}
],
"source": [
"print(\"x:\", X_train[0]) \n",
"print(\"y:\", y_train[0]) "
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Distribución de las labels para el training set: (array([0, 1]), array([12500, 12500]))\n",
"max x word: 4999 ; min x word 0\n",
"Distribución de las labels para el test set: (array([0, 1]), array([12500, 12500]))\n",
"max x word test: 4999 ; min x word 0\n"
]
}
],
"source": [
"# Comprobamos que las dimensionalidades son las esperadas\n",
"print(\"Distribución de las labels para el training set:\", np.unique(y_train, return_counts=True))\n",
"print(\"max x word:\", np.max(X_train), \"; min x word\", np.min(X_train))\n",
"print(\"Distribución de las labels para el test set:\", np.unique(y_test, return_counts=True))\n",
"print(\"max x word test:\", np.max(X_test), \"; min x word\", np.min(X_test))"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Palabras más usadas: \n",
"[ 1 2 3 ..., 4996 4997 4998]\n",
"[319465 156520 154919 ..., 70 90 84]\n"
]
}
],
"source": [
"print(\"Palabras más usadas: \")\n",
"print(np.unique(X_train, return_counts=True)[0][1:-1])\n",
"print(np.unique(X_train, return_counts=True)[1][1:-1])\n",
"# as expected zero is the highly used word for words not in index"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nSEREYvP/AY7JOHhDu9WbAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(np.unique(X_train, return_counts=True)[0][1:-1], np.unique(X_train, return_counts=True)[1][1:-1])\n",
"plt.xlim(1, 100)\n",
"plt.xlabel('Encoded word')\n",
"plt.ylabel('# appearances')\n",
"plt.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"## 3. Definición, compilación, ajuste y evaluación del modelo con Keras."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definimos la red neuronal recurrente de manera secuencial con Keras. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"El modelo secuencial de Keras `model = Sequential()` nos permite hacer un stacking de capas muy rápido y sencillo, sin preocuparnos por las dimensionalidades de los pesos y bias tal y como ocurría anteriormente.\n",
"\n",
"Las capas se añaden a través del método `.add()`.\n",
"\n",
"Los modelos necesitan conocer la dimensionalidad del input que deben esperar. Por esta razón, en el modelo secuencial se debe especificar el tamaño del dato con el que se va a alimentar la red en la primera capa (y sólo en la primera capa). El resto de capas hacen inferencia automática de los tamaños.\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definimos los hiperparámetros del modelo:\n",
"* **épocas** de entrenamiento\n",
"* **número** de neuronas de **Embedding**\n",
"* **número** de neuronas **LSTM**\n",
"* tamaño del **batch**"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"epochs = 6\n",
"embedding_neurons = 128\n",
"lstm_neurons = 64\n",
"batch_size = 32"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"### Modelo con Embedding + LSTM"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definimos una **Red Neuronal Recurrente LSTM**:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hacemos un Input a la red neuronal con `Input`. Funciona como PlaceHolder de input."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true,
"scrolled": false
},
"outputs": [],
"source": [
"sequence = Input(shape=(max_len,), dtype='int32')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Keras Embedding Layer\n",
"\n",
"Keras ofrece la posibilidad de hacer uso de una capa de [Embedding](https://keras.io/layers/embeddings/#embedding) que puede ser usada en redes neuronales dedicadas al procesado de lenguaje natural.\n",
"\n",
"Esta capa requiere que los datos estén procesados como enteros, de tal manera que cada palabra quede representada como un único entero. Para preparar los datos de texto, se puede hacer uso del recurso [Tokenizer API](https://keras.io/preprocessing/text/#tokenizer), que también viene incluído en Keras.\n",
"\n",
"La capa de Embedding se suele inicializar con pesos aleatorios y su misión será la de aprender el `encaje` de todas las palabras del training dataset.\n",
"\n",
"Este tipo de capas se pueden usar de múltiples maneras, como por ejemplo:\n",
"\n",
"- Puede usarse en solitario sólo para aprender el Word Embedding de un diccionario, de tal forma que se pueda almacenar y restablecer en cualquier otro modelo.\n",
"- Se puede incorporar como parte de un modelo de Deep Learning como un componente más.\n",
"- Se puede también usar para cargar un modelo ya entrenado de Word Embedding a un algoritmo de aprendizaje profundo propio.\n",
"\n",
"La Embedding Layer se debe usar especificando tres argumentos:\n",
"\n",
"* **input_dim**: se refiere al tamaño del vocabulario que estamos manejando.\n",
"* **output_dim**: este es el tamaño del espacio vectorial en el que se encajarán las palabras. Este parámetro define la dimensión del vector de salida de la capa para cada palabra. Se suelen elegir valores elevados que dependerán del dataset que se maneje y del problema que estemos afrontando.\n",
"* **input_length**: se refiere a la longitud de la secuencia de input a la capa de Embedding."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"embedded = Embedding(input_dim = max_features, output_dim = embedding_neurons, input_length = max_len)(sequence)\n",
"\n",
"# Normalizamos los Embeddings haciendo uso de BatchNormalization\n",
"bnorm = BatchNormalization()(embedded)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definimos la capa LSTM."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /home/eblancoh/anaconda3/envs/universe/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py:1190: calling reduce_sum (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"keep_dims is deprecated, use keepdims instead\n"
]
}
],
"source": [
"lstm = LSTM(units=lstm_neurons)(bnorm)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definimos una capa de output con una única neurona con una función de activación `sigmoid`."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"output = Dense(units = 1, activation = 'sigmoid')(lstm)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos definir el modelo con la arquitectura elegida y mostrar un resumen del mismo:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input_1 (InputLayer) (None, 500) 0 \n",
"_________________________________________________________________\n",
"embedding_1 (Embedding) (None, 500, 128) 640000 \n",
"_________________________________________________________________\n",
"batch_normalization_1 (Batch (None, 500, 128) 512 \n",
"_________________________________________________________________\n",
"lstm_1 (LSTM) (None, 64) 49408 \n",
"_________________________________________________________________\n",
"dense_1 (Dense) (None, 1) 65 \n",
"=================================================================\n",
"Total params: 689,985\n",
"Trainable params: 689,729\n",
"Non-trainable params: 256\n",
"_________________________________________________________________\n",
"None\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/eblancoh/anaconda3/envs/universe/lib/python3.5/site-packages/ipykernel_launcher.py:1: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=Tensor(\"in..., outputs=Tensor(\"de...)`\n",
" \"\"\"Entry point for launching an IPython kernel.\n"
]
}
],
"source": [
"model = Model(input=sequence, output=output)\n",
"\n",
"print(model.summary())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compilamos y entrenamos el modelo:"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"filepath=\"checkpoints/weights.best.keras.lstm.1.hdf5\"\n",
"\n",
"checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, save_best_only=True, mode='min')\n",
"\n",
"callbacks_list = [checkpoint]"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Comenzando entrenamiento...\n",
"Train on 25000 samples, validate on 25000 samples\n",
"Epoch 1/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.3510 - acc: 0.8476Epoch 00000: loss improved from inf to 0.35090, saving model to checkpoints/weights.best.keras.lstm.1.hdf5\n",
"25000/25000 [==============================] - 1550s - loss: 0.3509 - acc: 0.8476 - val_loss: 0.2803 - val_acc: 0.8849\n",
"Epoch 2/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.1869 - acc: 0.9295Epoch 00001: loss improved from 0.35090 to 0.18684, saving model to checkpoints/weights.best.keras.lstm.1.hdf5\n",
"25000/25000 [==============================] - 1527s - loss: 0.1868 - acc: 0.9296 - val_loss: 0.2999 - val_acc: 0.8782\n",
"Epoch 3/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.1035 - acc: 0.9615Epoch 00002: loss improved from 0.18684 to 0.10351, saving model to checkpoints/weights.best.keras.lstm.1.hdf5\n",
"25000/25000 [==============================] - 1469s - loss: 0.1035 - acc: 0.9615 - val_loss: 0.3566 - val_acc: 0.8705\n",
"Epoch 4/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.0553 - acc: 0.9808Epoch 00003: loss improved from 0.10351 to 0.05527, saving model to checkpoints/weights.best.keras.lstm.1.hdf5\n",
"25000/25000 [==============================] - 1405s - loss: 0.0553 - acc: 0.9808 - val_loss: 0.4268 - val_acc: 0.8659\n",
"Epoch 5/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.0354 - acc: 0.9880Epoch 00004: loss improved from 0.05527 to 0.03540, saving model to checkpoints/weights.best.keras.lstm.1.hdf5\n",
"25000/25000 [==============================] - 1397s - loss: 0.0354 - acc: 0.9880 - val_loss: 0.4827 - val_acc: 0.8690\n",
"Epoch 6/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.0241 - acc: 0.9927Epoch 00005: loss improved from 0.03540 to 0.02409, saving model to checkpoints/weights.best.keras.lstm.1.hdf5\n",
"25000/25000 [==============================] - 1412s - loss: 0.0241 - acc: 0.9927 - val_loss: 0.5593 - val_acc: 0.8711\n",
"El tiempo medio de entrenamiento por epoch es: 1460.9496663411458\n"
]
}
],
"source": [
"model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])\n",
"\n",
"print('Comenzando entrenamiento...')\n",
"start_time = time.time()\n",
"\n",
"history = model.fit(x=X_train, y=y_train,\n",
" batch_size=batch_size,\n",
" epochs=epochs,\n",
" validation_data=[X_test, y_test], \n",
" verbose=1,\n",
" callbacks = callbacks_list)\n",
"\n",
"end_time = time.time()\n",
"average_time_per_epoch = (end_time - start_time) / epochs\n",
"print(\"El tiempo medio de entrenamiento por epoch es:\", average_time_per_epoch)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____\n",
"### Accediendo al histórico del entrenamiento con Keras"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dict_keys(['acc', 'loss', 'val_loss', 'val_acc'])\n"
]
}
],
"source": [
"print(history.history.keys())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Accedemos a la evolución del histórico del entrenamiento para su visualización."
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['loss'])\n",
"plt.plot(history.history['val_loss'])\n",
"plt.title('model loss')\n",
"plt.ylabel('loss')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['acc'])\n",
"plt.plot(history.history['val_acc'])\n",
"plt.title('model accuracy')\n",
"plt.ylabel('acc')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"### Modelo con Embedding + Bidirectional RNN"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Una [Bi-directional RNN](https://es.coursera.org/lecture/nlp-sequence-models/bidirectional-rnn-fyXnn) es una red en la que el gradiente se propaga tanto hacia adelante como hacia atrás en la secuecencia. Resulta tremendamente útil porque tenemos en cuenta no sólo lo que viene detrás de nuestro input, sino también lo que viene inmediatamente delante del mismo, por lo que el aprendizaje mejora con respecto a LSTM.\n",
"\n",
"Lo siguiente está basado en este [tutorial de Keras](https://github.com/fchollet/keras/blob/master/examples/imdb_bidirectional_lstm.py)."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/eblancoh/anaconda3/envs/universe/lib/python3.5/site-packages/ipykernel_launcher.py:11: UserWarning: Update your `LSTM` call to the Keras 2 API: `LSTM(dropout=0.4, recurrent_dropout=0.4, units=64)`\n",
" # This is added back by InteractiveShellApp.init_path()\n",
"/home/eblancoh/anaconda3/envs/universe/lib/python3.5/site-packages/ipykernel_launcher.py:13: UserWarning: Update your `LSTM` call to the Keras 2 API: `LSTM(go_backwards=True, recurrent_dropout=0.4, dropout=0.4, units=64)`\n",
" del sys.path[0]\n",
"/home/eblancoh/anaconda3/envs/universe/lib/python3.5/site-packages/ipykernel_launcher.py:16: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n",
" app.launch_new_instance()\n",
"/home/eblancoh/anaconda3/envs/universe/lib/python3.5/site-packages/keras/legacy/layers.py:460: UserWarning: The `Merge` layer is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n",
" name=name)\n"
]
}
],
"source": [
"# Definimos una secuencia de input a nuestro modelothis is the placeholder tensor for the input sequences\n",
"sequence = Input(shape=(max_len,), dtype='int32')\n",
"\n",
"# Volvemos a meter por medio una capa de Embedding\n",
"embedded = Embedding(input_dim = max_features, output_dim = embedding_neurons, input_length = max_len)(sequence)\n",
"\n",
"# Normalizamos los Embeddings haciendo uso de BatchNormalization\n",
"bnorm = BatchNormalization()(embedded)\n",
"\n",
"# Aplicamos una capa LSTM forward\n",
"forwards = LSTM(units=lstm_neurons, dropout_W=0.4, dropout_U=0.4)(bnorm)\n",
"# Aplicamos una capa LSTM backwards\n",
"backwards = LSTM(units=lstm_neurons, dropout_W=0.4, dropout_U=0.4, go_backwards=True)(bnorm)\n",
"\n",
"# Concatenamos haciendo uso de la función merge() el resultado de forwards y backwards\n",
"merged = merge([forwards, backwards], mode='concat', concat_axis=-1)\n",
"\n",
"# Aplicamos Dropout para la regularización de la red neuronal\n",
"after_dp = Dropout(rate=0.5)(merged)\n",
"\n",
"# Definimos una capa de output con activación `sigmoid` \n",
"output = Dense(units=1, activation='sigmoid')(after_dp)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definimos el modelo con la arquitectura indicada."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/eblancoh/anaconda3/envs/universe/lib/python3.5/site-packages/ipykernel_launcher.py:1: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=Tensor(\"in..., outputs=Tensor(\"de...)`\n",
" \"\"\"Entry point for launching an IPython kernel.\n"
]
}
],
"source": [
"model_brnn = Model(input=sequence, output=output)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mostramos un resumen del `summary` del modelo."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"____________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"====================================================================================================\n",
"input_2 (InputLayer) (None, 500) 0 \n",
"____________________________________________________________________________________________________\n",
"embedding_2 (Embedding) (None, 500, 128) 640000 input_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"batch_normalization_2 (BatchNorm (None, 500, 128) 512 embedding_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"lstm_2 (LSTM) (None, 64) 49408 batch_normalization_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"lstm_3 (LSTM) (None, 64) 49408 batch_normalization_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"merge_1 (Merge) (None, 128) 0 lstm_2[0][0] \n",
" lstm_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_1 (Dropout) (None, 128) 0 merge_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_2 (Dense) (None, 1) 129 dropout_1[0][0] \n",
"====================================================================================================\n",
"Total params: 739,457\n",
"Trainable params: 739,201\n",
"Non-trainable params: 256\n",
"____________________________________________________________________________________________________\n",
"None\n"
]
}
],
"source": [
"print(model_brnn.summary())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compilamos y entrenamos el modelo:"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"filepath=\"checkpoints/weights.best.keras.brnn.hdf5\"\n",
"\n",
"checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, save_best_only=True, mode='min')\n",
"\n",
"callbacks_list = [checkpoint]"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Comenzando el entrenamiento...\n",
"Train on 25000 samples, validate on 25000 samples\n",
"Epoch 1/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.4955 - acc: 0.7475Epoch 00000: loss improved from inf to 0.49545, saving model to checkpoints/weights.best.keras.brnn.hdf5\n",
"25000/25000 [==============================] - 1802s - loss: 0.4954 - acc: 0.7476 - val_loss: 0.3215 - val_acc: 0.8698\n",
"Epoch 2/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.2686 - acc: 0.8940Epoch 00001: loss improved from 0.49545 to 0.26860, saving model to checkpoints/weights.best.keras.brnn.hdf5\n",
"25000/25000 [==============================] - 1941s - loss: 0.2686 - acc: 0.8940 - val_loss: 0.3120 - val_acc: 0.8790\n",
"Epoch 3/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.1952 - acc: 0.9263Epoch 00002: loss improved from 0.26860 to 0.19513, saving model to checkpoints/weights.best.keras.brnn.hdf5\n",
"25000/25000 [==============================] - 1893s - loss: 0.1951 - acc: 0.9264 - val_loss: 0.3508 - val_acc: 0.8760\n",
"Epoch 4/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.1524 - acc: 0.9443Epoch 00003: loss improved from 0.19513 to 0.15234, saving model to checkpoints/weights.best.keras.brnn.hdf5\n",
"25000/25000 [==============================] - 1935s - loss: 0.1523 - acc: 0.9443 - val_loss: 0.3737 - val_acc: 0.8774\n",
"Epoch 5/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.1242 - acc: 0.9558Epoch 00004: loss improved from 0.15234 to 0.12423, saving model to checkpoints/weights.best.keras.brnn.hdf5\n",
"25000/25000 [==============================] - 1754s - loss: 0.1242 - acc: 0.9558 - val_loss: 0.4140 - val_acc: 0.8710\n",
"Epoch 6/6\n",
"24992/25000 [============================>.] - ETA: 0s - loss: 0.1025 - acc: 0.9637Epoch 00005: loss improved from 0.12423 to 0.10249, saving model to checkpoints/weights.best.keras.brnn.hdf5\n",
"25000/25000 [==============================] - 1627s - loss: 0.1025 - acc: 0.9637 - val_loss: 0.4747 - val_acc: 0.8682\n",
"El tiempo medio de entrenamiento por epoch es: 1826.3123924334843\n"
]
}
],
"source": [
"model_brnn.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])\n",
"\n",
"print('Comenzando el entrenamiento...')\n",
"start_time = time.time()\n",
"\n",
"history_brnn = model_brnn.fit(x=X_train, y=y_train,\n",
" batch_size=batch_size,\n",
" epochs=epochs,\n",
" validation_data=[X_test, y_test], \n",
" verbose=1,\n",
" callbacks = callbacks_list)\n",
"\n",
"end_time = time.time()\n",
"average_time_per_epoch = (end_time - start_time) / epochs\n",
"print(\"El tiempo medio de entrenamiento por epoch es:\", average_time_per_epoch)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"### Comparación de clasificación con Regresión Logística "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Los resultados obtenidos anteriormente se pueden comparar con una regresión logística sencilla. El siguiente apartado se basa en el siguiente [Jupyter Notebook](https://github.com/rasbt/python-machine-learning-book/blob/master/code/ch08/ch08.ipynb).\n",
"\n",
"Los vectores **tf-idf** se utilizan a menudo como un factor de ponderación en la recuperación de información y la minería de texto. El valor **tf-idf** aumenta proporcionalmente al número de veces que una palabra aparece en el documento, pero es compensada por la frecuencia de la palabra en la colección de documentos, lo que permite manejar el hecho de que algunas palabras son generalmente más comunes que otras."
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/eblancoh/anaconda3/envs/universe/lib/python3.5/site-packages/keras/preprocessing/text.py:90: UserWarning: The `nb_words` argument in `Tokenizer` has been renamed `num_words`.\n",
" warnings.warn('The `nb_words` argument in `Tokenizer` '\n"
]
}
],
"source": [
"tfidfTokenizer = Tokenizer(num_words=max_features)\n",
"tfidfTokenizer.fit_on_sequences(X_train.tolist())\n",
"\n",
"X_train_tfidf = np.asarray(tfidfTokenizer.sequences_to_matrix(X_train.tolist(), mode=\"tfidf\"))\n",
"X_test_tfidf = np.asarray(tfidfTokenizer.sequences_to_matrix(X_test.tolist(), mode=\"tfidf\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comprobamos la matriz **td-idf** generada."
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 5.0780096 1.66394589 1.85347782 ..., 0. 0. 0. ]\n",
" [ 5.06068274 2.05416196 1.49063954 ..., 0. 0. 0. ]\n",
" [ 4.90973423 2.14727243 1.69497946 ..., 0. 0. 0. ]\n",
" ..., \n",
" [ 5.00188026 2.30286883 1.49063954 ..., 0. 0. 0. ]\n",
" [ 5.07419454 2.05416196 1.20263859 ..., 0. 0. 0. ]\n",
" [ 5.06262837 2.05416196 0.71029773 ..., 0. 0. 0. ]]\n",
"(25000, 10000) (25000, 10000)\n"
]
}
],
"source": [
"print(X_train_tfidf)\n",
"print(X_train_tfidf.shape, X_test_tfidf.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Con `sklearn.linear_model` importamos `LogisticRegression`."
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[LibLinear]"
]
},
{
"data": {
"text/plain": [
"LogisticRegression(C=0.001, class_weight=None, dual=False, fit_intercept=True,\n",
" intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
" penalty='l2', random_state=0, solver='liblinear', tol=0.0001,\n",
" verbose=1, warm_start=False)"
]
},
"execution_count": 125,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"\n",
"model_tfidf_reg = LogisticRegression(random_state=0, C=0.001, penalty='l2', verbose=1)\n",
"model_tfidf_reg.fit(X_train_tfidf, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calculamos la accuracy del modelo con `accuracy_score`"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"train acc: 0.9424\n",
"test acc: 0.88992\n"
]
}
],
"source": [
"from sklearn.metrics import accuracy_score\n",
"\n",
"print(\"train acc:\", accuracy_score(y_test, model_tfidf_reg.predict(X_train_tfidf)))\n",
"print(\"test acc:\", accuracy_score(y_test, model_tfidf_reg.predict(X_test_tfidf)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La accuracy de este método es sorprendentemente buena, también comparando el tiempo de entrenamiento.\n",
"\n",
"Los métodos en los que no se incluyen arquitecturas profundas no funcionan mal tampoco, siempre y cuando el volumen de datos y la complejidad de la regresión logística no sea muy elevada. En este ejemplo teneos que clasificar entre dos clases con 25,000 elementos de entrenamiento. Si contáramos con millones de reseñas y un mayor número de labels, la red neuronal batiría sin dudarlo a la regresión logística."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Resulta curioso poder visualizar el comportamiento de nuestro modelo a nivel de pesos de la capa de Embedding."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos acceder a los pesos de la siguiente manera:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'output_dim': 128, 'trainable': True, 'embeddings_regularizer': None, 'batch_input_shape': (None, 500), 'activity_regularizer': None, 'name': 'embedding_2', 'input_dim': 5000, 'input_length': 500, 'embeddings_constraint': None, 'mask_zero': False, 'embeddings_initializer': {'class_name': 'RandomUniform', 'config': {'seed': None, 'minval': -0.05, 'maxval': 0.05}}, 'dtype': 'int32'}\n",
"(5000, 128)\n"
]
}
],
"source": [
"print(model_brnn.layers[1].get_config())\n",
"\n",
"embmatrix = model_brnn.layers[1].get_weights()[0]\n",
"\n",
"print(embmatrix.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**T-distributed Stochastic Neighbor Embedding (t-SNE)** es un algoritmo de Machine Learning para la visualización desarrollado por Laurens van der Maaten y Geoffrey Hinton. Es una técnica de reducción de dimensionalidad no lineal adecuada para incorporar datos de alta dimensión para visualización en un espacio de baja dimensión de dos o tres dimensiones. Esta técnica normalmente suele usarse como recurso para visualizar las caracterśiticas aprendidas por las redes neuronales profundas."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(5000, 2)"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.manifold import TSNE\n",
"\n",
"# Nos quedamos con las 5000 palabras más habituales\n",
"topnwords = 5000\n",
"\n",
"# Aplicamos la transformación al subset de los pesos de la matriz de la capa de Embedding\n",
"toptsne = TSNE(n_components=2, random_state=0)\n",
"tsneXY = toptsne.fit_transform(embmatrix[:topnwords, :]) \n",
"tsneXY.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Una vez obtenida la transformación en 2 componentes de los pesos de la capa de Embedding, podemos plotear "
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\nKJat26Orq4uBgQE9evR47NjSUoHaLdqr3K+01+xpaNSoEf3792f69OlER0fTqlUr6TP1Fp24tmEW\n/2yYhrqeITVadYXCfAa92xoXFxfCw8OxtbUlKSmJKVOm0KlTJ77++mvOnDkDlA0xe3p6EhQUAR4m\nkQAAIABJREFUhKurKyYmJty9e5fz589jZWVVIswMxZ7s+Ph44D89ZIUU4KNb/4Wx8/9OpMW9SAD+\n+ecfBg0aBPwnzbZ3715cXV1xcHDAx8eHrKysZ75W1ZH09HSWLy82qA4dOlSiWKwq5lTIkqkiLCyM\nGzduPPfxK0JVykK+CMnJimi9FxYWMnLkSKysrOjcuTO5ubnPrL0sEFQ3hFH8HCjEyf9a2J2jUzsI\ng1jwSlC6gcaD3EfsP3+7TAMN5RQG5fSF0lKBTV3f+2+MknfJ1EiXsLAwvL29geKcyaSkJPz8/Fi6\ndCkpKSkcP36c3bt3Y21tja+vL9u2bcPNzQ0LCwu8vb2ZNm0aZmZmbN26FQ8PD1xcXEg9tQf95u48\nulmcLqFl3BiZhjb5hYVcvHiR8+fPM336dMaPH09hYSEpKSmMHz9eamLg5+fH6NGjsbe3Jzc3lzZt\n2nDr1i0pl9PW1hZbW1upWCg8PJwff/wROzs7rKys2L59O/CfHvLsoV3JCh9P0dm9yAADHU3aOVrx\n4K/iFJLc3FxycnIkaTYbGxsCAgLYt28fp0+fxsnJiSVLllTmf/FLR9mAfdlzqjKKq6pAsSqdJS/C\nEVMRw1tVE6rn0V4WCKoTIn1CIKhmpKens379esaOHVsl85dWTtFu2JJ7e5axaGci71oY8ttvvzFy\n5EjMzMyIiYmhdevWUscsBcpSgYP6OD9zKtGlS5fYvHkzK1euxNnZWVKq+PXXX/nyyy/p3bu3tO9n\nn33GZ599xtKr9Th/8L9ukOo1aoGaOvZjvuPkAh/c3NyIjY1l8eLFkr63sbGxtH+/fv3o169fiXUo\ny1GtXLmyxGeqwszwOD3k7uTn52NpaUlmZiaurq5YWVlJ0mw9e/bk7NmzUk7xo0ePcHV1feK1epWY\nOnUqly9fxt7eHk1NTfT19fH29iYpKQlHR0fWrVuHTCZj//79TJ48mYKCApydnQkJCUFbWxszMzPp\n/y06OprJkyfz1ltvcenSJQwMDCgqKsLQ0BB9fX3q16+PlZWV5ME8cOAA9+7dw8zMjKKiIi5duoSv\nry+pqamMGTOGkydP0rNnT4YMGcLo0aMl72VQUFCJPO9npSplIataclKV1nv75iZ8vecCEzfFUVv+\ngLqmjUo0obp8+fJzaS8LBNUJ4SkWCKoZVeFlU6Z0WoN2/WbovtOa6KAR9O3bFycnJwwNDZk8eTIh\nISG0bduWtLS0EmOUpQKfx4Nlbm6OjY0NaiqUKpRVWACioqLw8fFhShdL6th1KPGZbgNLZvZ3R01N\nDXt7+zJjXwTKKSle3xxBv059QkNDadu2LR4eHhw8eJDLly9jbm5Op06dJCmss2fP8uOPP77w9VYl\nCxcupGnTpsTFxfH1118TGxtLUFAQZ8+e5cqVKxw9epS8vDz8/PzYtGkTiYmJFBQUEBIS8tg59fX1\nmT59Or/99hsPHjwgJyeHY8eOce3aNZKTkxk1ahT16tXD09OT//u//2P69OnUrFmT8PBwnJycyM7O\n5s8//+T//u//JPWQU6dOERERwYgRI17gFaq+KEdAp3SxJCImVYoq3crI426eXIoqqaurk56eXu5c\npbWX4+PjiYyMlKIyAkF1Q3iKBYJqhrKXrVOnTgDs2rULmUzGzJkzGTBgAHK5nM8//7zM9tIEBwcT\nEhKCg4MD4eHhgOpioJqt+2L1/gi2jXfB09OTQYMGSZ49BQEBAdLr0lKBFfVgKXeBrC1/wEP5f6Fa\nVUoVqujdqgE5WVZ8+B3IAOMa2jRsUFs6/svQ7y3dzCc1PZcsXXPmf7WIDWt/wsbGhkmTJuHo6IiL\niwuffPIJly5d4p133iEnJ4e///77uTXNqzOtW7eWmowoHloMDAwwNzeXznvo0KEsW7aMCRMmlDtP\nTk4OAwcO5OrVq7Rt25aYmBipw9vNmzfR1dUlKSmJGjVqcPLkSYyNjUtEAZT/RhTqIQoyMjLIzMzE\nwMCgsk//lUWVHr9cLuejwf2Zr5NHamoqzs7O1KpVCz09PcaNG8fatWvR0NDg5MmTLF++nOjoaNzd\n3UtoL3/11Vcv6YwEgscjPMWCF0ZwcDAtWrSgVq1aLFy48KnG+vn5lQnhv64oe9lcXFyIi4sjPj6e\nffv2MWXKFG7evMnWrVtVbi/N8uXL+f333yWDGFTnDT7Yu4wboeNwcHCgX79+5RYtQbFUYJs2bViw\nYMFTSQWWzmW+lZHHrYy8MrnM5eHi4kJERHHaRNa5w+hqqvPXwu4s/cCBtwx1VI4pXVRXVagyHtRN\nW3D39i1cXV2pV68eOjo6eHh4YGJiQlhYGIMGDcLW1hYXFxepIcjjWLFiBWvWrKmqU6gUlBs/XEnL\nlv5vVTV5KN2mWBnlfPa9CdeJvZaO+6IDPCwolJpVlJ5TQ0MDuVyOlZUVkyZN4uOPPyYxMbFEx0B9\nfX3ptUI9ROGx/3/2zjssqnN72/eAI6A0FStRwUSlFwFFFMQSsSIqltjAGjWW6BdiSTREcxIjaPyp\nUdRjPTZi74lRIYglAgGxiygWNIgiIFXA+f4g7AxNUem+93Wd62T27Nn73cN29nrXu9bzxMbGioC4\nAMU1y9buNpWwsDCmT5/On3/+yf/93/+Rnp7OL7/8Qtu2bbGwsODrr7/m9OnT6OnpER0dDeRqL+vq\n6kraywJBZUNkigXlxqpVqzh27JhkXyt4PcHBwXzyySeoqqrSsGFDOnXqREhISLHblS1VJ06cyO3b\nt3F1dWXo0KFER0dLy9Ruo6YSlGlAbEIKWee30UDxDA01VT77bBqffvrpK8sP3lYqsLisk89vN0qU\nZV62bBkjRoxgyZIl9O7dGx0dndd+pqD+b1lRVPCgYWBFc68DUiB28+ZN6b0uXboUks56HRMnTny3\nQZYxytlyWU0NXqSnMmfvJYY3K3pSYmRkRExMjJQxV3Z3y6tnz2xkge+aLWRm56BdUwNkqsz7aR3T\nhvYkPj6eZ8+e5Ttm69atiY+P5+7du9SrV4+srCyAIidGknqIlxcAERERUq2sIJeCq0p5jbQ5ob9g\naZmb7c3MzERdXZ2aNWty+/ZtZDIZ8+fPR01NDblczsOHDyXzmYLaywJBZUNkigXlgnKA9tNPPzFl\nyhQgNwM8bdo0HBwcaNGihZQNVigUTJkyBRMTE3r37s3jx48rcvjlQlFZtuKyaa/KsuXh5+cnWSKn\npqZKgVhAQAB7Vi/i+NR2zP3obyZ1NyfqSgQhISGsW7eOO3fulPalAYUDx7wHbN72VylVAOjr63P+\n/HkuXLhA69atsbW1BcDZ2ZnDhw9Lx125cqXkUjd16lSuX79epgExFJayyk6KI3bdRNJO/iwpa5w4\ncUJS1rhw4QIJCQm4ublJ2eLIyEhevnyJgYFBvjrNjz76iLi4OLy9vfH19QWKt57etWsXZmZmWFpa\nlnvdpvKkR1VDGzV9E6L9PmXRt/OK3F9dXZ2NGzcyaNAgqa48L/D/5ptvmD59OqMG9CBHIZOOqW5g\nzZPT2/nms5HEx8fTuHHjfNndmjVrsnv3bo4cOcLq1auxsrLCyMiIiRMnEhoamk9FJU89xMLCAhMT\nE/z8/Mrqq6myFLWqlHEvkmdRYcxdvYeLFy9ibW1NRkYGcrlcUmwpaSmUQFDZEJliQbng5+fHr7/+\nSkBAQL4ABuDRo0cEBwdz/fp1XF1dcXd3Z9++fdy4cYNLly4RFxeHiYmJZIBQHSkuy+b6gSn+/v54\neHiQkJBAUFAQPj4+ZGdns2bNmkLbi+P48eMcPHhQCqoyMjK4d+8ex48fJzIyUpqMJCUlERUVVSb1\nre9qbBAWFsaUKVNQKBTo6uqyYcOG0h7iW1OUmU/2s4fM9drIVPcuRSprNG3aFGtra/bv38+pU6cY\nNWoUERER9OvXj3379jF69Gj+/PNPDAwMaNiwYb7zFWc9vWDBAn777Tf09fVf2QBVFhSc9NR3zc3A\nyoDDSm5ueZMcgK5duxIeHl7oWI6Ojty8eRPD2UfyubjVd/0SVFRQUVFlW7+6TJo0CTU1tXxlJVZW\nVty+fbvQMQtSvHqIII+8FRzvg1dITM/Nur/MTOOlvBbex24R/3dsse58AkFVpFSCYplM1gP4P0AV\n+K9CoXizglHBe42bm5vULBMXFwdAUFCQVB7QpEkTunTp8pqjVG2Ky7JtNbZnWDsLLC0tkclkLF68\nmEaNGtG/f3/OnTtXaLtyI1sTXQ3SXuQeU6FQsGfPHlq3zi+TplAoWLFiBS4uLvm2l4V6w7u6QDo6\nOkrGGZUNN2t9Qu8msOPP++QoFKggo06jD5g+uBtAkcoad+/elWqku3TpwtOnT0lKSmLIkCEsWLCA\n0aNHs3PnzkINlK+ynu7QoQOenp4MHjyYAQMGlNPV51IWbm4Fj5md/Jj4Az8iV4FpJ+uybt26tz62\noGS4Wevj89sNKSjWMLThefgxotdMwrthM+zt7St4hAJB6fHOQbFMJlMFfgY+Bh4AITKZ7KBCobj6\n6k8K3geUg7S/kzI4Glm4GUy5YUa5LCBvKe594FVZNp9FvQtlgWUyGT4+Pvm2F6WA8CztBUcjH+Hi\n4sKKFStYsWIFMpmM8PBwrK2tcXFxYfXq1XTp0gW5XM7NmzfR1y87jVXIr4Hq5dK6Wpje7A+PZU9Y\nLDn/3L8vUZCaLWN/eCxu1vpFLifXqFH451cmk9G+fXtu3bpFfHw8+/fv5+uvv863z6usp/38/Pjz\nzz85cuQIVlZWREREUK9evTK44sK866SnJMeU19Xnwwk/C/fQckb590lWQ07Dwd/m/jcQ+M8qgLIr\nY0EL6PJ0bExNTWXw4ME8ePCAnJwc5s2bh56eXrF62MOGDSMgIICsrCzWrl3LnDlzuHXrFl5eXlI5\nj4+PD7/88guZmZn079+fb7/9ttyuR1C+lEZNcVvglkKhuK1QKF4AO4F+pXBcQRWnoNpA9ksFC49c\n5a+7z177WScnJ3bu3ElOTg6PHj0q85rQiqYk9qqvo+hGNlgZcIt58+aRlZWFhYUFZmZmzJuXW+c5\nbtw4TExMaNOmDWZmZnz66adlWv9XXV0gX9VEWBxOTk6SKkhgYCB6enpoa2sjk8no378/M2fOxNjY\nuFBQ+yrr6ejoaNq1a8eCBQvQ09Pj/v37pXmZr6QsHNfKw8VN8HpK4/epvPj1119p0qQJFy9e5PLl\ny/To0eOVethNmzbl3LlzODo6SipH58+fZ/78+UBu6VlUVBQXLlwgIiKCsLAwgoKCKuryBGVMaZRP\n6APKv7wPgHYFd5LJZBOACQDNmjUrhdMKKjtFBQoZWTkcu/wIl4bFfOgf+vfvz6lTpzA3N6dVq1ZS\nV3p1pTSybEUpIHwwaQPxWaChocGaNWsKva+iosL333/P999/n2+7jo5OPo1iwaspTrqquO2Qm00b\nPXo0FhYW1KpVi82bN0vvDRkyBDs7OzZt2lTkZ7dt28akSZP47rvvyMrKYujQoVhaWuLl5UVUVBQK\nhYKuXbtiaWn5Ttf1ppSF41pZubi5ublx//59MjIymD59OmPHjmXs2LGEhoYik8kYM2YMM2bMKPXz\nVkXKYhWgrDA3N+eLL75g1qxZ9OnTR5pEFqeHnafYY25uTkpKClpaWmhpaaGurk5iYiLHjx/n+PHj\nWFtbA7lZ76ioKGFAUk0pjaC4qDXuQq3xCoViLbAWwNbW9vWt84IqT8GA4INJuY1R2R92YuU/S24F\nH/p5y2wymSxfQ051pzRKC8qiplNQMoqTrsr77pXv8zxlDYADBw4UeTxbW9tCCiPKS9LFWU/v3bv3\nbS/hvWPDhg3UrVuX9PR07OzssLGxITY2VvrblHejYmWmspc+FeylWLDxELIHEcyZM0cyGCoO5bIm\n5VK+vDInhULBnDlz+PTTT8v0GgSVg9IIih8ATZVefwA8LIXjCqo4Ikh7M941I1aVsjnVDfHdVz2W\nL1/Ovn37ALh//z4vXrzg9u3bTJ06ld69e782mHrfKKuM/btSsJfi7v0HfJeUwo+DO/PFF5r4+fkV\nq4ddElxcXJg3bx7Dhw9HU1OT2NhY5HI5DRo0KKtLElQgpREUhwAtZTKZIRALDAWGlcJxBVUcESiU\nL5U9m1OdEd995Uc5m1g74QY5IUcJO3eOWrVq4ezsTGZmJhcvXuS3337j559/5pdffmHDhg3ExMTQ\np0+fQuVE48aNY+bMmZiYmFTQFQmgcJleVnwMd3ZtZPhmVUz067B69WqSkpIYNGiQ1Gj3JkY43bt3\n59q1a7Rv3x4ATU1Ntm7dKoLiaoqsJCYArz2ITNYLWEauJNsGhULxn1ftb2trqwgNDX3n8woqPwWX\ntUSgIBAIypuC2cS0qPOkXTrOVv+9GGk8x8rKiq1bt9K9e3e0tbWJiIjA09OTiIiIYoNiQeWgoJZ1\nHjLgjpI+tuD9RiaThSkUCtvX7VcqOsUKheIocLQ0jiWoXlTWJTeBQPD+UDCbmKe1O7yXI7062mBv\nb09sbCzOzs68fPkSgB9++EHaPzs7Gw8PD8LDw2nVqhVbtmyhV69e+Pr6Ymtry/r16/nxxx9p0qQJ\nLVu2RE1N7b3qiahIRJmeoDQRjnYCgUAgqNYUbPrN09qVAbuUsonTp08v8vM3btxg/fr1dOjQgTFj\nxrBq1ap/j/3wIQsXLuSvv/5CS0uLLl26lLvqx/vMu5bpiZUAgTKloVMsKAcSExOlH+LAwED69OlT\nwSMSCASCqsGb6uzuD4+lw6JTGM4+wsDVZ9Fr1IQOHToAMGLECIKDg6V9L1y4QKdOnahbty5yuTyf\n06Cg7BFa1oLSRATFVQTloFggEAgEJcfLpTUactV824rLJhY0HYpLziAxLZv94bHSPspum6XRl1PV\niYmJwdjYmPHjx2Nqakr37t1JT08nIiICe3t7LCws6N+/P8+evd646XUsXLgQIyMjPv74Yz755BN8\nfX0xkMWTs38uWkfn0ODPFXQyqAVQ7PnDwsKwtLSkffv2/Pzzz+88JkH1QQTFVYTZs2cTHR2NlZUV\nXl5epKSk4O7ujpGREcOHD5d+mBcsWICdnR1mZmZMmDBB2u7s7MysWbNo27YtrVq14vTp0xV5OQKB\nQFBuvEk2sSjToezkx8xfm6sBvWPHDjp27Ci917ZtW/744w+ePXtGdnY2e/bsKdNrqaxERUXx2Wef\nceXKFXR1ddmzZw+jRo3ixx9/JDIyEnNz83e2Rw4NDWXPnj2Eh4ezd+9e8hr2iztPcdtHjx7N8uXL\nOXfu3LtdtKDaIYLiKsKiRYv48MMPiYiIwMfHh/DwcJYtW8bVq1e5ffs2Z86cAWDKlCmEhIRw+fJl\n0tPTOXz4sHSM7OxsLly4wLJly4R3u0AgeK8oqcV4US6E8npNuXP+KBYWFiQkJDBp0iTpPX19febO\nnUu7du3o1q0bJiYm6OjolNl1VBYKlpg0aNIUKysrAGxsbIiOjiYxMVHSBPbw8Hhne+Tg4GD69euH\nhoYGWlpa9O3bl9TU1CLPk5SUVKLtI0eOfKcxCaoXotGukpMnaXb3bgwJT1LZHx6LLrnZiQ8++AAA\nKysrYmJi6NixIwEBASxevJi0tDQSEhIwNTWlb9++AAwYMADI/cGKiYmpoCsSCASC0kNTU1NywiwN\ninQnHLcafV0NzszuIm0PDAyU/nvYsGFMmDCB7Oxs+vfvX+2NPwpK3MUlZ/A0Q8H+8FjcrPVRVVUt\nVUfAvOfgtd+vUJtMrP85z9ugUCjylb8IBMqITHElRrm2DSA75yVz9l4iOCo+nx2lqqoq2dnZZGRk\nMHnyZHbv3s2lS5cYP348GRkZ0n55n8nbXyCoLHh6erJ79+5yO19ERARHjwoVSUFh3qT+OA9vb2+s\nrKwwMzPD0NAQNze3sh5mhVJUiYlCocDntxvSax0dHerUqSOV6r2pk1weys9BtQ9MeHzlLLN+CWPH\nmZscOXKE2rVrF3me4s6vq6uLjo6O1Cy5bdu2t/oOBNUTkSmuxCj/8MhqavDyRTrpWTnsDLmPQRH7\n5wXAenp6pKSksHv3btzd3ctvwAJBBaBQKFAoFKiolHyOHxERQWhoKL169SrxZ7Kzs6lRQ/xkljeL\nFy9GXV2dadOmMWPGDC5evMipU6c4efIkGzduBOCrr77i8OHDaGhocODAARo2bMjdu3cZM2YM8fHx\n1K9fn40bN9KsWbPXnu9t3Al9fX1L52KrCEWVmBS1ffPmzUycOJG0tDRatGgh/b3eBOXnoFrjVmh8\n1JbbayczaXcjere1RUdHp9jzFLd948aNjBkzhlq1auHi4vLGYxJUX0SmuBKj/AOjqqGNmr4JD9dP\nJuqQX5H76+rqMn78eMzNzXFzc8POzq68hioQvBFbtmzBwsICS0tLqaYvKCgIBwcHWrRoIWWNU1JS\n6Nq1K23atMHc3JwDBw4A/3a7T548mTZt2nD//n0mTZqEra0tpqamfPPNN9K5QkJCcHBwwNLSkrZt\n25KUlMT8+fPx9/fHysoKf39/UlNTGTNmDHZ2dlhbW0vn2bRpE4MGDaJv377Vfkm8suLk5CRl+0JD\nQ0lJSSErK4vg4GAcHR1JTU3F3t6eixcv4uTkxLp164Dc/opRo0YRGRnJ8OHDmTZtWonPWdL64/eV\nglJ2NXQa0mTsKmn7F198IWXPz58/T2RkJPv376dOnTpvfK6CgbZ22wHoj1+Djuscbty4gY2NTbHn\nKW67jY0NFy9e5Ny5c3h7ewuNYoFEqdg8vynC5rlkdFh0qkinnoK1bQJBVeLKlSsMGDCAM2fOoKen\nR0JCAjNnziQ1NRV/f3+uX7+Oq6srt27dIjs7m7S0NLS1tXny5An29vZERUVx9+5dWrRowdmzZ7G3\ntwcgISGBunXrkpOTQ9euXVm+fDlGRkYYGRnh7++PnZ0dycnJ1KpVi61btxIaGiq5js2dOxcTExMe\nP37MunXruH37NgsXLiQ0NJTjx49LrwtmKbdu3YqmpibTp08vlKkUlA5ZWVm0bt2aixcv0r9/f0xN\nTRk6dCjz5s1j+fLlWFtbk5GRgUwmw9/fn99//53//ve/6Onp8ejRI+RyOVlZWTRu3JgnT55U9OVU\nCwrWFENuiUlZ6AMXfA7GH/Qh6+k9aiiymTdjEnPmzCnV8wmqJyW1eRaZ4krM29S2CQSVnVOnTuHu\n7o6enh4AdevWBcDNzQ0VFRVMTEyIi4sDcksj5s6di4WFBd26dSM2NlZ6r3nz5lJADPDLL7/Qpk0b\nrK2tuXLlClevXuXGjRs0btxYWjXR1tYusgTi+PHjfPPNN3z11VfUqFGD+vXrs3btWlq1aoWuri51\n69YtMksJFJupFLw9ysoGzktOU7teYzZu3IiDgwOOjo4EBAQQHR2NsbExcrlcapx6Vb+EaK4qPcrT\nMKPgc7C+qxcfTljF9t/OiYBYUOqIArlKzNvUtgkEDg4OnD17tqKHkY+87vGHienIrtzApqFqoX2U\nm0fzVrC2bdtGfHw8YWFhyOVyDAwMpNr52rVrS/vfuXMHX19fQkJCqFOnDp6enmRkZJS401yhUDB0\n6FBUVVVZsGABAPPmzSM6Oppnz57x/Plz1NTUaNOmDaGhoZw+fZrly5cDULNmTclh0sbGht9///0t\nvyUBFM5Cxiamk6JhyMIffmTH/zZjbm7OzJkzsbGxeeXf1sHBgZ07dzJy5Ei2bduWT1tY8O64WeuX\ny7NIPAcF5YkIiis55fXDI6g+VMaAWDnIyWxgwoF937Nl+HhGdTYjISGh2M8mJSXRoEED5HI5AQEB\n3L17t8j9kpOTqV27Njo6OsTFxXHs2DGcnZ0xMjLi4cOHhISEYGdnx/PnzyWN0+fPn0vBenTND1mx\n7SA9Pu4KQHh4OJCbXdTS0pKylBYWFvmylAByuZxvv/0WTU1Nzp8/T3JycqHxBQYG4uvrm083vCgM\nDAyIiYkhJiaGs2fPMmzYsNd/wdWMopQNVJsYE39mJ+3bt6d27dqoq6tLmfriWL58OWPGjMHHx0dq\ntBNUTcRzUFBeiKBYIKhm5Om2Pnr0iCFDhpCcnEx2djarV69+bSBRFhQMcmrWb462/WAmftKXJQ21\nsba2Lvazw4cPp2/fvtja2mJlZYWRkVGR+1laWmJtbY2pqSktWrSgQ4cOueeqWRN/f3+mTp1Keno6\nGhoanDhxgs6dOzN7/kL8ezqh1c4dbYehPDnky+6Nq/jg5FHMWrXgwYMHDBo0iKioKHx9fdmwYcNr\ns5RDhw59beBbEmJiYti+fft7GRQXpWygYWBFc68D0urAzZs3pfeUNYrd3d0lxR0DAwNOnTpVxqMV\nCATVCdFoJxBUM/KC4iVLlpCRkcFXX31FTk4OaWlpaGlplft4DGcfoahfGRlwZ1Hv8h6ORFGNrMkX\n9pFx9SQt9Gozbtw4Pv/8c06ePEmPHj1ITEykdu3atGrViokTJ5Kens6WLVuIjo5m0KBB2NjYSAFx\nYGAgv/76K59//jl6enq0adOG27dvc/jwYby9vbl37x63b9/m3r17fP7555Iygp2dHSEhIdjb23Pt\n2jUMDQ3x8PBgxowZ5f79VBSiwVggqJwsX76c1atX06ZNmyqn71zSRjuRKRYIqgHKNbvpWTnsD4/F\nzs6OMWPGkJWVhZubm2TBWt4UdAhT3l6RFJWR1G7bH522/bmsFKx37dqVrKws6fXNmzcJCwvD09OT\n8PBwsrOzadOmDTY2NhgYGNCnTx8yMjIYP348p06d4qOPPmLIkCH5znP9+nUCAgJ4/vw5rVu3ZtKk\nScjlckJCQoBcW/eSlFtUR7xcWhepbCAajAWCimXVqlUcO3YMQ0PDih5KmSHUJwSCKo6y45MCUChg\nzt5LJGh9SFBQEPr6+owcOZItW7ZUyPgqq4pKcUF5SYL106dP079/f2rVqoW2tjaurq753r9+/TqG\nhoa0bNkSmUzGiBEj8r3fu3dv1NTU0NPTo0GDBpKihqB8lQ0EAkHJmDhxIrdv38bV1RVnxoZcAAAg\nAElEQVQdHZ18hjVmZmZSL4SxsTHjx4/H1NSU7t27k55etNFLZUUExQJBFaeoxqT0rBwW7gyiQYMG\njB8/nrFjx/LXX39VyPgqa5DzNsF6nlTYgkNX2Xgmhv3hscXu+yplhKJs2gX/IswzBILKhZ+fH02a\nNCEgIOCV5VxRUVF89tlnXLlyBV1dXfbs2VOOo3x3RPmEQFDFKc5y9d7lEKys/oNcLkdTU7PCMsVQ\nObvH31TqSVlFQ62pKXFHlzHLP5T01BQOHTrEp59+Ku1rZGTEnTt3iI6O5sMPP2THjh1vNLY8dQyB\nQCCoShgaGkqlejY2NsTExFTsgN4QERQLBFWcgjW7zWbmWiS3cuzDmSNLK2pYVYI3CdaVM/JqjT6i\ntpEjt9d9xqQ9jRhQQNVDXV2dtWvX0rt3b/T09OjYseMbWclaWFhQo0YNLC0t8fT0fK8a7QSVFyEZ\n+P6h3K/yd1IGRyMfUaNGDV6+fCntk6cdD4VXwapa+YQIigWCKo5oTCofCmbkdRyGoOMwBBmwoQgV\njR49enD9+vVC2729vfO9LipYlsvlnDx58p3GKxCUFe+zZOD7REGN+eyXChYeuUrvOtr8/VeuHv5f\nf/3FnTt3KnKYpYqoKRYIqjiVtWa3uvEujXkCQUWzZcsWLCwssLS0ZOTIkRw6dIh27dphbW1Nt27d\npGZPb29vxowZg7OzMy1atJCcGwHq168PwOzZszl9+jRWVlb89NNPFXI9grKnqH6VjKwczitakpCQ\ngJWVFatXr6ZVq1YVNMLSR+gUCwSVhJiYGPr06VMoczh//nycnJzo1q1bBY1MAIWzJpCbkRcTEEFl\n58qVKwwYMIAzZ86gp6dHQkICMpkMXV1dZDIZ//3vf7l27RpLlizB29ub48eP55MM/Pvvv5HL5dLx\nSurQKKiaxMTE0KNHD2LVmpP58DryBoZomn9MUvA2ctISqd/nC/ZP6cjnn38umSJt3LiR1q1bs2nT\nJg4ePEhaWhrR0dH079+fxYsXs379ei5fvixNotatW8e1a9dYurR8SvxKqlMsMsUCQSVnwYIFIiCu\nBFSWjHxiYiKrVq0C4OHDh5KDm0BQHKdOncLd3R09PT0A6taty4MHD3BxccHc3BwfHx+uXLki7S8k\nAwW3bt3iw86DaDxmJdlPH5B6NZCGwxdTp/NYMsP2YGRkRFBQEOHh4SxYsIC5c+dKn42IiMDf359L\nly7h7+/P/fv3GTp0KAcPHpQ03zdu3Mjo0aMr6vKKRQTFAkElIicnp5DGo6enJ7t35zbPGRgYMHfu\nXNq3b4+trS1//fUXLi4ufPjhh/j5+VXw6N8MZ2dn8laMDAwMePLkSQWP6PVUBqkw5aC4SZMm0r0h\nqHqU9X2fJyHofeAyW87dzSchOHXqVKZMmcKlS5dYs2bNK5ulhGTg+4ehoSHeHj2pVVOOXK8Z6s0t\nkclkaDVugXZ2IklJSQwaNAgzMzNmzJiRb1LVtWtXdHR0UFdXx8TEhLt371K7dm26dOnC4cOHuX79\nOllZWZibm1fgFRaNCIoFgkpESTQemzZtyrlz53B0dJQC5vPnzzN//vwKGLGgvJk9ezbR0dFYWVlJ\nDyWATZs24ebmRt++fTE0NGTlypUsXboUa2tr7O3tSUhIACA6OpoePXpgY2ODo6Njkc2AgrInJyfn\n9Tu9A8qmPmrNLfk7IoAvt55hf3gsCQkJJCUloa+fO6nbvHnzGx1bSAZWT/ImUR1/PEXs89yJ0A8D\nzKmlJkdFVY6+rgazehpTWy5j3rx5dO7cmcuXL3Po0KESTarGjRvHpk2bKm2WGERQLBBUKkqi8Zjn\nnmZubk67du3Q0tKifv36qKurk5iYWJ7DBWDx4sVSM86MGTPo0qULACdPnmTEiBEcP36c9u3b06ZN\nGwYNGkRKSkq5j7E6sWjRIj788EMiIiLw8fHJ997ly5fZvn07Fy5c4KuvvqJWrVqEh4fTvn17Sad6\nwoQJrFixgrCwMHx9fZk8eXJFXEaV5nX3/I4dOzA3N8fMzIxZs2ZJn9PU1GT+/Pm0a9eOc+fOSdvT\n09Pp0aMH69atK7UxKjdJ1azfHJ32Q4jZ4sXwXk7MnDkTb29vBg0ahKOjo1RWUVKUJQNLq9Fu+fLl\nGBsbU6dOHRYtWgTkNv0pO6cJyg7lSRRAds5L5uy9BEAv88asGmHDmdld6G7aCCDfpGrTpk0lOke7\ndu24f/8+27dv55NPPin9iygFhCSbQFCBKGtA1lUkkan412GtOI3HvFm4iopKvhm5iopKhSxzOjk5\nsWTJEqZNm0ZoaCiZmZlkZWURHByMubk53333HSdOnKB27dr8+OOPLF26VGS1y4jOnTujpaWFlpYW\nOjo69O3bF8idQEVGRpKSksLZs2cZNGiQ9JnMzMyKGm6V5VX3fMuWLZk1axZhYWHUqVOH7t27s3//\nftzc3EhNTcXMzIwFCxZIx0pJSWHo0KGMGjWKUaNGldoYC0oIapp3RdO8KzJg0z8Sgv369Sv0uYqS\nDFy1ahXHjh3D0NCwVI8rKBnFOaP6/HaDlkXs/+WXX+Lh4cHSpUulSWFJGDx4MBEREdSpU+cdR1w2\niExxNScmJgYjIyPGjRuHmZkZw4cP58SJE3To0IGWLVty4cIFWrZsSXx8PAAvX77ko48+qhL1nVUd\n5Zm5AohLziAuOeOV1sGVERsbG8LCwnj+/Dlqamq0b9+e0NBQTp8+jYaGBlevXqVDhw5YWVmxefNm\n7t69W9FDrpIoL23efpJa5H1ScJKkPIHKzs7m5cuX6OrqEhERIf3v2rVr5XYN1YVX3fO6uro4OztT\nv359atSowfDhwwkKCgJyJ7oDBw7Md6x+/foxevToUg2IoWpJCE6cOJHbt2/j6urKTz/9xJQpUwrt\n4+zszIwZM3BycsLY2JiQkBAGDBhAy5Yt+frrrytg1NUL5UlUDZ2GNBm7Stq+adMmqaHXwMCAy5cv\n0759e27evMmZM2dYuHChtKrp6enJypUrpWMdPnwYZ2dn6XVwcDDjx48v+wt6S0RQ/B5w69Ytpk+f\nTmRkJNevX2f79u0EBwfj6+vL999/z4gRI9i2bRsAJ06cwNLS8o2X0wRvTlEzc4VCgc9vNypoRCUn\nL0AznH0E5yWnqV2vMRs3bsTBwQFHR0cCAgKIjo7G0NCQjz/+WArArl69yvr16yt6+FUO5QmUrKYG\nL9JTmbP3Esev/P1Gx9HW1sbQ0JBdu3YBuffbxYsXy2LI1Y6S3vPNmjUr9hjq6uqoqqrSq1cvqdSp\nQ4cOHDt2jILyqMqNqMpERERw9OjR147Xy6U1GnLVfNsqq6mPn58fTZo0ISAg4JUZxJo1axIUFMTE\niRPp168fP//8M5cvX2bTpk08ffq0HEdc/SjrSVRiYiKtWrVCQ0ODrl27lsoxywIRFL8HGBoaYm5u\njoqKCqampnTt2hWZTIa5uTkxMTGMGTNGqjfcsGFDpS2Ar24UXN7Mm53nbf/iiy/w9vbON0uPiYmR\nJiwFZ+TK75UlBTPcsYnpPNIwZOEPP+Lk5ISjoyN+fn5YWVlhb2/PmTNnuHXrFgBpaWncvHmzzMdY\n3VCeQKlqaKOmb0K036fMnT3rNZ8szLZt21i/fj2WlpaYmppy4MCB0h5uteNN7/k//viDJ0+ekJOT\nw44dO+jUqZN0LIVCweHDh9HV1QVyJRfr1atX4trukgbFlUVCsDRR7qcwNTWlcePGqKmp0aJFC+7f\nv1/Bo6valPUkSldXl5s3b0oT8sqKqCmuhryqTrWoJdWmTZvSsGFDTp06xZ9//illjQVlSxNdDamp\noeD2ykxRGW7VJsbEn9lJ+/btqV27Nurq6jg6OlK/fn02bdrEJ598ItWufvfdd9XKAak8KDiBqu/q\nBYAMuPxPfainpyeenp7SPspNmsrvGRoa8uuvv5blcKsdb3LPN27cmB9++IHOnTujUCjo1asXlpaW\nGBsbk5mZSZs2bYiIiJBK1pYsWcJvv/1GcnIygYGBjB07li+++AKAXbt2MXnyZBITE1m/fj3t2rVj\n/vz5pKenExwczJw5cxgyZEix43az1q+0QbDyc6qJrgZpL16vxlHZ+imqE3n3ifLfxMuldaW9f8oK\nERRXMwq6bsUlZxD/T53qq27ucePGMWLECEaOHImqqmqx+wlKDy+X1kU6pFXG5U1lCgZoABoGVjT3\nOkDt2rUB8mWDu3TpQkhISKHPBAYGSv9dlMqG4F+UJ1D3lrrTbOZuabug7HnTe37YsGEMGzZMeh0T\nE8ONGzc4e/Ys9vb2GBgYALB7927GjRtHeHg42dnZtGnTJt85srOzuXDhAkePHuXbb7/lxIkTLFiw\ngNDQ0HyrRFWNgs+p2MR0nqW94Gjkowoe2ftNZZ5ElReifKKa8bZ1qq6urqSkpIjSiXKkqi5vvq72\nrLhayOLYtGlTkY01kCthJaha9aHVkdKot2zevDn29vb5tgUHB9O3b180NDTQ0tKS1ELyGDBgAFC8\nPGNVpejnFKwMuFVBIxIIchGZ4mrG6+pUlfUE87pIAS5evIilpSVGRkblNlZB1ZyZe7m0ZvbuCDKU\nnmkiQCs9Fi9ejLq6OtOmTWPGjBlcvHiRU6dOEflnMCvW5OrYZv+5nYzYcBb9rk37AweoVasWFhYW\n3Lx5E7lcTnJyMhYWFkRFRSGXyyv4iqoeMTEx9OzZk44dO3L27Fnk2nqodZpJyrN4En5fzcu0JFRr\nqvPFsp9JSkrC0tKS27dvo6KiQlpaGq1bt+anPaf5YVcwV/f8hCw1gZfJcVy/fh0jIyOePHnCvHnz\n+P3336lfvz4LFy4schx5JQLVzVWuqMz7B5M2EJ+Vv9RHWR5OeWXJ2dk5n6KB8nsCwbsgMsXVjLfJ\naCxatIiBAwfyww8/lNWwBFWIPBk/Dw8PLCwscHd3Jy0tDQMDAxYsWIDv1CH01rqLblosj7b8P+I3\nT0XnzDI6GdSSjrF161YcHBwwMzPjwoULAFy4cAEHBwesra1xcHDgxo1/Vy/u379Pjx49aN26Nd9+\n+22hMY0cOTJfQ9jw4cM5ePBgGX4LFYeTkxOnT58GIDQ0lBs3bvDrr7+iiLvOdxMHocjKYPXMody5\neRUnJyfWrVuHlpYWzs7OHDlyBICdO3cycOBAERC/A8rukq2aNqSn5l1ST66iXrdPsf18Ld7f/cDe\nld+io6ODpaUlf/zxBwCHDh3CyLYj8w5d5+ouH+p2+5S6A+bxUl2HQSPHSsePjo5m69atZGZmkpGR\nQUpKivT3exXVwU2uKsnFCd4vRFBczXibZdbZs2dz9+5dOnbsWNbDE1QRbty4wYQJE4iMjERbW5tV\nq3I1K9XV1QkODmbJ7Mm8DFzJ8R1rSH10m+4d2+YLZlNTUzl79iyrVq1izJgxABgZGREUFER4eDgL\nFixg7ty50v4XLlxg27ZtREREsGvXrkLlF+PGjWPjxo1ArpPS2bNn6dWrV1l/DRVCQQ1cd3d3dHR0\nOH36NI6OjtSsWZM+ffpI++Ytqyt/R5XZRrWqUNBdUo9kMmOvoXdhFak7Z7J96TwePcqtgR0yZAj+\n/v5A7oTkYV1rUlNTyIy9TvyBRcTt+oas50+JvvtAOr6rqyv29va4urpiaWnJgAEDsLW1RUdH55Xj\n6ty5M1evXsXKyko6Z1VDlAMJKiuifKKaITpIBZBbi/smdsoFFUv0GjWhQ4cOAIwYMUKytM3rdE9K\nSiIxMVGSmvLw8MjnkpZn4enk5ERycjKJiYk8f/4cDw8PoqKikMlkZGVlSft//PHH1KtXD8itowwO\nDsbW1lZ6v1OnTnz22Wc8fvyYvXv3MnDgQGrUqD4/X3nf/9UjG8i8EYRKRjLOzs7UrVuXixcvEh8f\nz6VLl/D29kYulyOTyQgMDMTHx4d79+5x/PhxvvnmGyIiInB2dubFixeYmZmV+bh79erF9u3b0dXV\nle65mJgY+vTpU6QTWmXmde6ScXFxkvFJQVxdXZkzZw4JCQmEhYWhMnQ0ZGWiolabJqNXSPvJ/vl/\nd3d3GjXKtcvNk15MS0vDycmJ//f//h+QvyRAT09PmvzUrVu3yMbVqoR4TgkqK9XnqSKQqIp1qoKK\noyjFksS07HyKJTJZ7uM8r9P+deTtr/x63rx5dO7cmX379hETE5OvJrCo/QsycuRItm3bxs6dO9mw\nYUOJr6+yk/f9J967TurNszQauYzUc/5EXNjDuLFjSUxM5Pjx43To0IHz589LJg/+/v44ODjw0Ucf\nSVbafn5+fPvtt/l0ccuSkujlVgVKotqjbHwyaNAgFAoFkZGRWFpaoqmpSdu2bZk+fTp9+vThYl1N\nYhNVqaHTkNTrwdQ26ohCoUA3o7C6woQJE7h69SoZGRl4eHgUUqCorojnlKAyIsonBIIqyOLFi6Xs\n7YwZMyTv+ZMnTzJixAgAvvrqKywtLbG3tycuLg6A+Ph4Bg4ciJ2dHXZ2dpw5cwaf327wKGALT44u\n4+/ts/l72yyykx8zf+1eAHbs2FGotEZHR4c6depIta//+9//8gViecu6wcHB6OjooKOjQ1JSEvr6\nuQ9B5YZPgN9//52EhATS09PZv3+/lKVWxtPTk2XLlgFgamr69l9eJSOvEz/zwVVqfWSPilyNGs0s\neJnzkubNm6OhoYFcLqdTp0706NGDnJwcsrOzOXLkCHZ2duzatUuy0t64cSMpKSmSMcS78rr7zMDA\noFpYwpdUtedVxidDhgxh69atDBkyRCoPqNf3C1Iij/NwwxT+3jAZ4xeFVYC2b99OREQE169fZ86c\nOWVzgQKBoESITLFAUAVxcnJiyZIlTJs2jdDQUDIzM8nKyiI4OBhHR0e2bduGvb09//nPf/jyyy9Z\nt24dX3/9NdOnT2fGjBl07NiRe/fu4eLiQkY/XwCynz6g4Sc/8OLJXf7eMpM7545gYbGOli1bMmnS\nJFasWJFvDJs3b2bixImkpaXRokULqZ4VoE6dOjg4OJCcnCxldb/88ks8PDxYunSpFFzl0bFjR0aO\nHMmtW7cYNmxYvtKJPBo2bIixsTFubm6l/XVWKP8auPxr86thYIW2rSs1a9YEYMWKFbi7u3Py5Eme\nPHnCqVOnsLOzY+TIkYwfP56PP/6YHTt2sHv3bg4cOMD//ve/Uhnb6+6z4ODgUjlPRVMSd8k8ijM+\ncXd3L2TV7PNbTWoOXlCoPKDgpFAgEFQORFAsEFRBCjZjtWnThtDQUE6fPs3y5csLNWP9/vvvAJw4\ncYKrV69Kx0lOTqaphoJngMaHdshqyFHV0AIVFVr3HE3oD/+6ZRXUSbWysuL8+fOFxlacPFL79u3z\nGRzkyVAVdGJTRrkuOi0tjaioKKleuTqwPzwWGbnhsNoHJiT89jM67QeheJnDi5gwIH+G3tnZmbFj\nx+Lts5yn9dtgOPsIL17CicAgRo4cyblz59izZw83b94sFdfA191n1UWxpizcJUV5gEBQ9RDlEwJB\nFWJ/eCwdFp2i1bzjPJXpMGPhTzg4OODo6EhAQADR0dEYGxtLzViQX+P05cuXnDt3joiICCIiIoiN\njWW2qzU1VFRA9V/5LhkyJnRsXiHXWBQnTpzAyMiIqVOnvrY7vyrh89sNKT+s1rgVGh+15eHGqcTv\n+562doWVCFRVVTFp58z5P06S3tjyn8/K0Og6lfN/XaJWrVqMHDmS69evv9O4SnqfVRfeVzWETZs2\n8fDhQ+l1ceUwBw8eZNGiReU5NIGgQhBBsUBQRchrBopNTEcByBobs3nNSlSbmODo6Iifnx9WVlZF\nNqnl0b1793z2sBEREbhZ69PNuAE6GnJkQPPmBnxg0ILupo3K/qJKSLdu3bh37x6ff/55RQ+lVCm4\nbK/ddgD649dQf8BXpD6+j42NDZs2beLBgwekpaUBkGQ9CgAVubr0OZUPzGkwcimRkZFERkbi6ur6\n1mMqjfusqlFV3SXflYJBcXG4uroye/bschiRQFCxiKBYIKgiFGwGUvvAlOyUBI491qJhw4aoq6vj\n6Oj4ymMsX76c0NBQLCwsMDExwc/PDwCjxtpM6fIRdxb15szsLmiri8qq8kB5eV6hUPDk2AoebpzK\nk//NYODAgZISwbJly6SguCg3sFdtL8jrnNFK4z6rirhZ63Nmdhfp30BVDIhjYmIwNjZm/PjxmJqa\n0r17d9LT04mIiMDe3h4LCwv69+/Ps2fP2L17N6GhoQwfPhwrKyvS03PvnxUrVtCmTRvMzc2lFQdl\nK3ZPT0+mTZuGg4MDLVq0YPfu3UDuKtTkyZMxNTWlT58+9OrVS3pPIKgqiCefoNzIzs6uVtqy5U3B\noEfDwIrmXgeIy42V8tXrKtfiuru74+7uDuTqnRYl+K9spwqUq8ZsaejaBgYGUrNmTRwcHEpxZGWP\nh3ktpnp4UrOZOZmx16nZoAWqqjXQ05CTkZEB5E5kHj58SOfOndHT06OJyzzuAs+CtpB+6wJyvebk\npD6jmX4T4uPjmThxIvfu3QNyg+kOHTrg7e3Nw4cPiYmJQU9Pj+3btxc7pje5z5TrzPPuOWX7eEH5\nExUVxY4dO1i3bh2DBw9mz549LF68mBUrVtCpUyfmz5/Pt99+y7Jly1i5ciW+vr75Glv19PT466+/\nWLVqFb6+vvz3v/8tdI5Hjx4RHBzM9evXcXV1xd3dnb179xITE8OlS5d4/PgxxsbGknGPQFBVEJli\nwSsZM2YMenp6qKmpMW7cOMzMzHB3d8fGxgYNDQ1q1arFiRMnSEhIwM3NDQsLC+zt7YmMjARyg60J\nEybQvXt3Ro0aRU5ODl5eXtjZ2WFhYcGaNWsq+AqrDsIatXgCAwM5e/ZsRQ/jjelu2oishAcY2vdE\nf/RyTPp/xo4jAdy5eZU//viDyMhIpk2bRpMmTQgICCAgIAAvl9YosjJQa9KaJmNWot7UlIxLv+Pl\n0lpSFwkJCWHPnj2MGzdOOldYWBgHDhx4ZUAM4j6r6hR04ouOji5ktBMUFFTs5wcMGCB9tmBzbR5u\nbm6oqKhgYmIiyT0GBwczaNAgVFRUaNSoEZ07dy7FqxIoT/i9vLwwNTXFy8urAkdUPRFpO8Er8fT0\nZMCAAfTt25fp06ezdu1aGjduTNOmTUlLS8PDw4NJkybRo0cPrK2t2b9/P6dOnWLUqFGS81NYWBjB\nwcFoaGiwdu1adHR0CAkJITMzkw4dOtC9e3cMDQ0r+EorP14urfMZDED1aQbKzs7Gw8OD8PBwWrVq\nxZYtW7h27RozZ84kJSUFPT09Nm3aROPGjVm+fDl+fn7UqFEDExMTFi1ahJ+fH6qqqmzdupUVK1ZU\n6uX9gs5p9Rt/QOSq3KVpPz8/Fozty/zsbB49esTVq1exsLDI93k3a31qyGvykU0nHiVl0OhDE5ql\n38LNWp8JRaiLPH/+HMitC9XQeH1gW53vs+rI65z4EhMT3+h4ampq0meLK7XJ2weQZOgKytEJShfl\nSf+aNWuIj4/P93cQlA4iUyx4JU5OTujq6lKzZk3Mzc1RUVEhIyMDT09PZDIZkydP5v79+wQHBzNy\n5EgAunTpwtOnT0lKSgLyP4yPHz/Oli1bsLKyol27djx9+pSoqKgKu76qRHVuBrpx4wYTJkwgMjIS\nbW1tfv75Z6ZOncru3bsJCwtjzJgxfPXVVwAsWrSI8PBwIiMj8fPzw8DAgIkTJzJjxgwiIiIqfUCs\n3MQWl5xBYpYK+8NjuXPnDr6+vpw8eZLIyEh69+4tlVCkpKQwa9Ys6ThqNeWcndOVO4t6858Blujr\n5D4ci1IX0dLSAkruRlid77PqRlH3U9w/Tnx5vMpoR0tLS5o0vSsdO3Zkz549vHz5kri4uGKlGQVv\nh6amJpD7PE1NTaVdu3ZFlsIJ3g2RKRYUiXL2oXbiLV4qJQHS09Np1ChXmaBRo0ZkZWUVmSUoyhpY\noVCwYsUKXFxcyvYCqinVVfu0adOmkovdiBEj+P7777l8+TIff/wxADk5OTRu3BgACwsLhg8fjpub\nW5Uz8niVc9qqnvWoXbs2Ojo6xMXFcezYMckKW11dnaysrNceP09dJG9ZNSIiQlpKfxOq631W3XjV\n/aT89yvOaMfT05OJEyeioaHBuXPn3mksAwcO5OTJk5iZmdGqVSvatWtXreQTKwsHDx5EU1NTWokV\nlC4iKBYUIi/7kPdj++R5JjkvFewPjy32Qenk5MS2bduYN28egYGB6Onpoa2tXWg/FxcXVq9eTZcu\nXZDL5dy8eRN9ff0SZ7EEZUNiYiLbt29n8uTJBAYG4uvry+HDhwvtN27cOGbOnImJick7nzNv4nX3\nbgzxzzPz3V9aWlqYmpoW+aA+cuQIQUFBHDx4kIULF3LlypV3Hsu7EhMTQ48ePWjXrt0rS0DutRyB\nqmZdXsTd5ulvP/MyM4WclATu/x2PpWUX4uLi0NPTQ6FQkJOTw+3bt4Fc045Dhw7RuXNnfvnlFzIy\nMrCzswOgX79+0jiWL1/OZ599hoWFBdnZ2Tg5OUkKI4Lqx5s48RVltDNw4EAGDhwovVauIba1tZWy\nvcoGOwXd+PIaLFVUVPD19UVTU5OnT5/Stm1bzM3N3/bSBIIKQQTFgkJ4H7xSOPsAUvZBQ0ODZ8+e\nAfD48WNq1KiBt7c3o0ePxsLCglq1arF58+Yijz1u3DhiYmJo06YNCoWC+vXrs3///rK+JMFrSExM\nZNWqVUyePPmV+xXVif42FJx4vUh8zOfLf4FpgzmyYwf29vasW7eOc+fO0b59e7Kysrh58ybGxsbc\nv3+fzp0707FjR7Zv305KSgpaWlokJyeXytg0NTXzqXcUJCYmhrNnzzJs2LB822/cuMH69evp0KED\nY8aM4eeff2bfvn0cOHCA+vXr4+/vzzSfTWh0m8KTI0up2+1T1JuZk3h6K9khvwBDMDIyomXLlqxb\nt46goCAmT57MggUL6NatG7q6uqxcuZJhw4YRGBiYz6r72rVrQMnVRQTVg7Jw4u77XSYAACAASURB\nVHsX+vTpQ2JiIi9evGDevHnSiqLg7VBesU3PynllYkpQOoigWJCP/eGxJKbnX6atoa2HvE5jKfsw\nYcIEnj59CsCpU6eYPn06devW5cCBA4WOV/BhrKKiwvfff8/3339fNhcgeCtmz55NdHQ0VlZWyOVy\nateujbu7O5cvX8bGxoatW7cik8lwdnaWJJw0NTWZPn06hw8fRkNDgwMHDtCwYUOio6MZPnw4OTk5\n9OzZk6VLl5KSksKjR48YMmQIycnJ3Pw7Ce2uE1FvagaAvF5TnkYcZ3ivFfRwsGbq1Km4uLgwbdo0\nkpKSyM7O5vPPP6dVq1aMGDGCpKQkFAoFM2bMQFdXl759++Lu7s6BAwfKvNEuJiaG7du3U8u4U74G\nJ71GTV5fAqJZl7ScDF5mpKLeLDeLVs/qYzj1k3T8PBtrJycnkpOTCzVKFWXV/fz5c6l2WPD+UNma\nIkUdcelRMHGgUMCcvZcqeFTVHxEUC/Lh89uNfK/jDy4m894lctKTebjak/UtFzF79mwGDx7M+vXr\nadasGbt27aqg0QpKi0WLFnH58mUiIiIIDAykX79+XLlyhSZNcgO9M2fO0LFjx3yfSU1Nxd7env/8\n5z98+eWXrFu3jq+//prp06czffp0Pvnkk3xL99u3b8fFxYWvvvoKgy8P8jIrE/hnyXfcagBkwJ5F\nvQGwsrIqUjoqODi40LZWrVpJMoClhUKh4Msvv+TYsWPIZDK+/vprhgwZwuzZs7l05SonejpRy7QL\n2nZuuQ1zadklKgHZFnSNMetkyMjN6I1waM26c0oW2wWc4gq+zmumK4mSRGloQAsqL3n3Wt7krImu\nBl4uratcNvF1qzPFsWzZMiZMmECtWrXKYFQVS1H14ulZOYWe0YLSRahPCPJRsEatvuuXfDDlfzT3\nOoB/YARjx46lXr16nDx5kqioKE6ePEndunUraLSCsqJt27Z88MEHqKioYGVlVaReac2aNenTpw+Q\nX9P03LlzDBo0CCBfiYGdnR0bN27E29sb3Yy/UVEr/CCrTFq4e/fuJSIigosXL3LixAm8vLx49OgR\nixYtQk3fhEaey9G2+7fRLzv5MfPX7gVgxz8lIPHx8VJQnJWVxZUrVxjuZIxR80Zs6a3NmdldiPvr\nd0kNAJDKH4KDg9HR0SnUrFSUVbfg/aU6OPG9LcpOj9WNgs/iZjN3S9vfZgIhKBkiKBbko7igpE4t\n+Xv1Y/s+sD88lg6LTmE4+wgDV58lOeNfTVJl/cvi9ErlcrmUxXyVpmkeTk5OBAUFoa+vz7NjS3lx\nLSDf+xW57Kv8XeTV7gUHB/PJJ5+gqqpKw4YN6dSpEyEhIQBkZL8sdAx5vabcOX8UCwsLEhISJEm5\nWbNmYWlpiZWVlaQ1unnzZry8vLCwsCAiIoL58+dLx6lTpw4ODg5MnDiR9evXFzpPcVbdxZGTk1PI\n9nfdunXY2dlhaWnJwIEDSUtLIykpCQMDA16+zL22tLQ0mjZtSlZWFtHR0fTo0QMbGxscHR0l+1+B\noDRJSUmha9euks10XkleamoqvXv3xtLSEjMzM/z9/fM5PVZHoxBholMxiPKJasry5ctZvXo1bdq0\nYdu2bSX+XHE1at/0NS2LYQoqiIL1ao8zZPwd/4z94bHovuOx7e3t2bNnD0OGDGHnzp3S9rt376Kv\nr8/48eNJTU3l5IXLJOhqVPiyb3G1ex/FPae45nn1GkXkE2QyLIZ4cWZ2F2lTcSUgVlZWRaoBQK4i\nwA8//JBvm3L3f3HNdMVRlO3vgAEDGD9+PABff/0169evZ+rUqVhaWvLHH3/QuXNnDh06hIuLC3K5\nnAkTJuDn50fLli35888/mTx5MqdOnSrxGASCkqCurs6+ffvQ1tbmyZMn2Nvb4+rqyq+//kqTJk04\ncuQIAElJSejo6LB06VICAgLQ09Or4JGXPpWtXvx9QQTF1ZRVq1Zx7NixN3aKqy41aoJXU7BeTVVD\nm5r6xgzr2RHTpno0bNjwrY+9bNkyRowYwZIlS+jdu7e0/B8YGIiPjw9yuRxNTU22bNlSKZwMi6vd\ni1Jpir+/Px4eHiQkJBAUFISPjw+xsbE0rg0v5ar5PieTySrFA6ugw1mDJk3z2f7GxMRw+fJlvv76\naxITE0lJSZF0w4cMGYK/vz+dO3dm586dTJ48mZSUFM6ePSuVxABkZmZWyLUJqjcKhYK5c+cSFBSE\niooKsbGxxMXFYW5uzhdffMGsWbPo06dPpTboKS3Es7hiEEFxNWDp0qVs2LAByJU8u379Ordv38bV\n1ZUxY8YwY8aMNzqeEO6v/hSsVwOo7+qFDAj5p9EtD+X6VeXucuW6Nnd3d9zd3QHQ19fn/PnzyGQy\ndu7cia2tLQAeHh54eHiU4lWUDkV9FwAZ+jZYNE7B0tISmUzG4sWLadSoEfXq1aORbm1u+89E1soZ\nzHrTvLkBK387887/bt61e79g1jsuOYOnGf9qjKuqqpKeno6npyf79+/H0tKSTZs2Sed1dXVlzpw5\nJCQkEBYWRpcuXUhNTUVXV1fULgtKlaLkxhIv/k58fDxhYWHI5XIMDAzIyMigVatWhIWFcfToUebM\nmUP37t3zlRxVV8SzuPwRQXEVJywsjI0bN/Lnn3+iUCho164dW7du5ddff622y0qCd6cs9U3DwsKY\nMmUKCoUCXV1dacJWWSn4XeQ1tOjXqYXPbB98fHzy7S+Xyzl58mS5jrGklNTh7Pnz5zRu3JisrCy2\nbduGvn7ue5qamrRt25bp06fTp08fVFVV0dbWxtDQkF27djFo0CAUCgWRkZFYWlqW67UJqg/FlSw5\nZNylQYMGyOVyAgICuHv3LgAPHz6kbt26jBgxAk1NTclAJM+mWjznBKWFCIqrOMHBwfTv319yhBsw\nYIDkcS8QFEdZ1qs5Ojpy8eLFdz5OeVGdaveKy3oX3L5w4ULatWtH8+bNMTc35/nz59J7Q4YMYdCg\nQfmy1tu2bWPSpEl89913ZGVlMXToUBEUC96a4kqWLqlboBq8GFtbW6ysrDAyMgLg0qVLeHl5oaKi\nglwuZ/XqXAnHCRMm0LNnTxo3bkxAQECh8wgEb4pMoVCU+0ltbW0VoaGh5X7e6oLyshOXj2LXRM4v\na5cBMG/ePOrXr8/SpUsJDQ0VM2hBsSjfR+97vVp1+S46LDpV5AqAvq5GvgZAgaAiMZx9hKIiDxlw\np0D5lkBQGshksjCFQmH7uv1EpriKUXDZKVOvFQcPLMPfcwp9LBuzb98+/ve//7F06dIKHqmgsiPq\n1f6luO8iOzubGjWqzs9kdcp6C6ovlc2eWiDIQ+gUVzEKLjupNfqIWqZdGT3gY9q1a8e4ceOwtrau\nwBEKBJWPonRODQwMePLkCQChoaE4OzsDudbkEyZMoHv37owaNYqcnBy8vLyws7PDwsKCNWvWVOCV\nvBo3a31+GGCOvq4GMnIzxD8MMBeTH0GlwsulNRpy1XzbxORNUBmoOikQAVB0zaB22/7otO3PZaVl\np6IcyASC95WidE5nzZpV7P5hYWEEBwejoaHB2rVr0dHRISQkhMzMTDp06ED37t1LTU4uJiaGHj16\n0LFjR86fP4+lpSWjR4/mm2++4fHjx2zbtg1TU1OmTp3KpUuXyM7Oxtvbm379+hV5PLECIKjsCLkx\nQWVFBMVVDLHsJBC8OW+qc+rq6oqGRu6/qePHjxMZGcnu3bmqFElJSURFRZWqxvKtW7fYtWsXa9eu\nxc7Oju3btxMcHMzBgwf5/vvvMTExoUuXLmzYsIHExETatm1Lt27dpAZbgaCqISZvgsqICIqrGKJm\nUCAoOcoNdPVH/kRmzXuSzmmNGjUkS+OMjIx8n1MONhUKBStWrJAMLsoCQ0NDzP+xzzM1NaVr167I\nZDLMzc2JiYnhwYMHHDx4EF9fX2m89+7dw9jYuMzGVF1ITU1l8ODBPHjwgJycHObNm8eNGzc4dOgQ\n6enpODg4sGbNGuLj4+nZsydhYWFcvHgRKysr7t69S7Nmzfjwww+5dOkStWrVqujLEQgEZYgIiqsY\nYtlJICgZyk2p2c+fEqehxW+KVrgNGM1fQYcwMDAgLCyMnj17smfPnmKP4+LiwurVq+ny/9k787Aa\n0/+Pv06bIkqyVKIYa/tGtAiDYUIo6yBmzBjrMAzGbpjJNmMbzFhqZoSGiK9lLJGUUOmUrA1zMBiT\nJSqVlvP7o1/PtJIlLe7Xdc11zXnOcz/PfT9H53zu+/583u9OnVBXV+fq1asYGRm91iptYde5DOV/\n+ZUqKipUq1ZN+v+srCxUVVUJDAykRQsx+X1Zikud6dKli2T+MHToUPbt20fPnj1JT0/nyZMnnDx5\nEnt7e06ePImzszP16tUTAbFA8A4gguJKiNh2EgheTP6i1MxEBf+G+IJMxmp1DUKCtpCWlsbHH3/M\nt99+S9u2bUu8zieffIJCocDW1halUkndunUJCgp65X4V5zqX+CRdcp0rjm7durF69WpWr16NTCYj\nJiZGFNQ+h/yTjtqZKdw+cAi9fKkzgYGBLFmyhKdPn/Lw4UPMzMzo2bMn7du3Jzw8nNDQUL7++mv+\n+OMPlErlO2ErLBAIRFAsEAiqKPmLUrWa2KHVxA7I1ULNs56+evVqkXbz5s0r8FpFRYVvv/2Wb7/9\n9o30q7Suc/mZPXs2X3zxBZaWliiVSkxMTNi3b98b6U9Vo/Ck46G6PjqDlpNR866UOvPjjz8SFRWF\nsbEx8+bNk9JnXFxcOHnyJDdu3KB3794sXrwYmUyGu7t7eQ5JICiWoKAgmjdvTuvWrQHw8/Oja9eu\nGBoalnPPKi9Ckk0gEFRJSio+Le+i1MIKMmo69TH8eK103M/PD09PTwBMTEyIj49HS0uLn376ifPn\nzxMfHy8C4udQeNKRlfyADNSIVDNnypQpnDt3DgB9fX1SUlKkAkoAV1dXtmzZQrNmzVBRUUFPT48D\nBw7g5OT01sdR0UhKSmLt2rUAhISEiInCWyI7O7vE94KCgrh48aL02s/Pjzt37ryNblVZRFAsEAiq\nJBVVC7WiButVhcKTjsxEBXd/nUzkD5+waNEiZs2axahRo7CwsMDDwwMHBwfpXBMTEyA3OAZwdnZG\nV1eX2rVrv7X+V1TyB8WCN4NCoaBly5YMHz4cS0tLPD09efr0KSYmJixYsABnZ2d27NjBtWvX+OCD\nD7Czs8PFxYXLly9z6tQp9u7dy9SpU7G2tmbx4sVERUUxZMgQrK2t2b9/P3369JHudeTIEfr27VuO\no60cCJtngUBQZamI9s2Ft/chN1gXJhtvBmF1XTYMHDiQPXv20KJFC9TV1alRowb6+vrEx8djZ2fH\nli1bkMlkREdHM3nyZFJSUtDX18fPz4+nT5/i5eUlrdInJCQwcOBAoqOjy3lU5YtCocDU1JSwsDCc\nnJwYOXIkrVu3Zs2aNYwZM4avvvoKgM6dO7N+/XqaNWvGmTNnmDFjBseOHcPb2xt3d3dpZ8nNzY1l\ny5Zhb2+PUqmkVatWnDx5krp16zJ48GAGDRpEz549y3PI5YaweRYIBO88FbEoVSjIlC1CtrJs8PHx\nIT4+HrlcTkhICL179+bChQsYGhri5OREeHg4bdu2Zfz48ezZs4e6desSEBDAzJkz2bx5Mzo6Osjl\ncqytrfH19cXb27u8h1QhMDY2ltJzPvroI1atWgXAgAEDAEhJSeHUqVN4eXlJbTIyMl54XZlMxtCh\nQ9myZQsjRowgIiKCX3/9tQxGULUQQbFAIBC8ZSpisF5VKKtJR/v27Tl16hQKhQJvb29CQkLeQG8r\nL23atKFhw4YAWFtbo1Ao0NXVJT4+ni5dugC5+bAGBgZAroqLr68v33//PQEBAZw9e7bc+l6eFJZj\nTM/MKfC+TCYD/tNKz8nJQVdXF7lc/tL3GjFiBD179kRTUxMvLy/U1ETI9yLEExIIBAJBlaIsJh2n\nTp16o9erLOQFcTduKHh4P5WgmNvogqSlDaCqqkpWVhZKpRIzMzMiIiKKXKdfv37Mnz+fTp06YWdn\nR506dd7iKCoGxcox/nMbH7+9TPfuxbZt23B2diYmJkZqU6tWLUxNTdmxYwdeXl4olUri4uKwsrKi\nZs2aJCcnS+cWfm1oaIihoSELFy7kyJEjb2+glRhRaCcQCAQCwQvQ1tYGcgNAPT09ANq2bcu3336L\npaUlVlZW1K9fn3379uHm5oaenh61atXCzMyMPXv24O3tzeeff07Hjh1p0qQJJ06cYOTIkbRq1apA\nKsHhw4dp164dtra2eHl5kZKSUh7DBf4L4m4npSHT0OJZWiozdp0nLCGx2PNbtGhBYmKiFBRnZmZy\n4cIFADQ1NenWrRuff/45I0aMeO593dzcKK7uyM/Pj3Hjxr3mqMqP4uQY1esYs2LdBiwtLXn48CGf\nf/55kXb+/v5s2rQJKysr6d8T5OZ5L126FBsbG65du4a3tzejR4/G2tqatLTcvPohQ4ZgbGwsybYJ\nno9YKRYIBAKBoJQYGxuza9cuIDd4+/7777l8+TKZmZk4Ozvz008/oa2tzapVq3j27BmBgYFMnTqV\nNm3a8OjRI44dO8bevXvp2bMn4eHhbNy4EQcHB+RyOQ0bNmThwoUcPXqUGjVqsHjxYr7//nvJfe9t\nkz+IU9WqRTWj1lxb/xk+1bRws36vyPkaGhrs3LmTCRMm8PjxY7Kysvjiiy8wMzMDcgO0Xbt20bVr\n1xLv+TwJsspOYWUUAGQytDqOJs7nQ+mQQqEocIqpqSl//PFHkaZOTk4FJNmaNm1Kv379CpwTFhbG\nqFGjXq/j7xAiKBYIBAKB4BXIWz3W19dn5cqVDBw4kJ9++onGjRvj4+ODqqqqVIyWmpqKp6cnMpkM\nCwsL6tevj4WFBQBmZmYoFAr+/vtvLl68KBVePXv2jHbt2pXb+AoHcXV7TQVyDXD25Qvi1qxZA8CS\nJUvQ1NQkNDSUSZMmERsby6hRowgODsbX1xelUklmZiZWVlZ8+OGHLF68GMh9jpMnT+bQoUMsX768\nwD19fX357rvvMDAwoHnz5gXSNiobhrpaxSqjlJUco52dHTVq1CjyTAUlI9InBAKBoAIgl8s5cOBA\neXdDkI+gmNs4+RzDdPp+0jKzCYq5XeCY79l7oFaNuLg4AgICGDhwIJDrUBgYGEhUVBS1a9fm5s2b\n6OjoSAGdiopKgeBORUVFysnt0qULcrkcuVzOxYsX2bRpU7mMHV5eU9vV1ZWTJ08CEBUVRUpKCpmZ\nmYSFhREdHc2OHTsIDQ1FLpcTGRkp2aWnpqZibm7OmTNncHZ2lq539+5d5s6dS3h4OEeOHCmwKloZ\nKaydrqZTn6ajfyozZZTo6GhCQ0Mr9UTibSOCYoFAIHjDZGVlvXQbERRXLPLn0yoBpRKm7ohl6s5Y\n6Vh6vdYkJacyevIMHj9+jJGREe3bt8fIyIjVq1ezZcuWIoVTz8PR0ZHw8HD+/PNPAJ4+fVqsFfnb\nojQGOPknCZOCn3Ay4izJyclUq1aNdu3aERUVxcmTJxk9ejQDBw6kZcuWqKmpMWTIEEJDQ4HcPO3C\n2/4AZ86cwc3Njbp166KhoSHJlFU2vL292blzJx42RnzX1wIjXS1k5Gpnl4U+ufgueXVE+oRAIBC8\nJN988w3+/v4YGxujr6+PnZ0d+/bto3379oSHh9OrVy+GDRvG6NGjuXnzJgArVqzAycmJs2fP8sUX\nX5CWloaWlha+vr6YmpoyZ84c0tLSCAsLY8aMGZU2AKgqFFcUlZlT0OxKo25jarUbQETwz9SvX5/J\nkyezatUqvL292bZtG35+fhgaGjJ79mz09fVfeM+6devi5+fHoEGDJC3ahQsX0rx58zc3sJfgRfJ2\nhdUU7iZnkqxWm0nf/ED79u2xtLTk+PHjXLt2jUaNGpVo1qGpqYmqqmqx7+VJlFUVXlYZRalUolQq\nUVEp/RqmXC4nKiqKHj16lLpNVlaWkGxDONpVGBQKBe7u7sTHx5d3VwQCwXOIiorik08+ISIigqys\nLGxtbfnss8/Yt28frVu3lqxwBw8ezJgxY3B2dubmzZt069aNS5cu8eTJE6pXr46amhpHjx5l3bp1\nBAYG4ufnR1RUlJSfKShfTKfvp7S/jjLgr3w5tu8KxbkHJoX5kxYfzP6d/lhYWODg4ICdnR1r167F\n0dGR6OhoateuTbdu3Rg/fjy9e/dGW1u7gMpGnjObkZERjo6OnDt3jlq1atGpUyesrKwq/N/Ir7/+\nyrJly5DJZFhaWqKqqkqtWrWIiorin3/+YcmSJXh6epKSkkLv3r159OgRmZmZLFy4kN69e6NQKOje\nvTsdO3YkIiKCoKAgfHx8iIyMJC0tDU9PT+bPnw9AZGQkEydOJDU1lWrVqnHkyBEsLCxIS0vDyMiI\nGTNm4O7uzvjx4zl//jxZWVnMmzeP3r174+fnx/79+0lPTyc1NRV/f38GDBjAkydPyMrKYt26dbi4\nuJTz03wzCEe7d4jCM7zSzvjEzFAgKB35BfeJP0CbNh3R0srNq8xvm5p/dffo0aMFciCfPHlCcnIy\njx8/Zvjw4SQkJCCTycjMzHx7AxGUmpKKoko6912kODWFag3NeBzxO+3ataNGjRpoamri4uKCgYEB\n3333HR07dkSpVNKjRw969+793OsbGBgwb9482rVrh4GBAba2thVeneLChQssWrSI8PBw9PX1efjw\nIZMnT+bu3buEhYVx+fJlevXqhaenJ5qamuzevZtatWpx//59HB0d6dWrFwBXrlzB19dXmmQvWrQI\nPT09srOz6dy5M3FxcbRs2ZIBAwYQEBCAg4ODNOFesGBBgQn2119/TadOndi8eTNJSUm0adOG999/\nH4CIiAji4uLQ09Nj+fLldOvWjZkzZ5Kdnc3Tp0/L5yGWIyIiqkBkZ2czatQoTp06hZGREXv27OHK\nlSuMHj2ap0+f0rRpUzZv3kzt2rVxc3MrsFV7/vx59PT0iImJwdbWlpkzZzJy5EiuX79O9erV+fnn\nn7G0tGTevHncuXMHhUKBvr4+W7duLe9hCwQVmsJbxE/SnhF8OYmgmNtFtkHzXKgg14kqIiJCCp7z\nGD9+PB07dmT37t0oFArc3NzKfAyCl6c4u2h1FRnIIDP7vzXkt20hXZF2FYubOGiZWNN+0WHpbyF/\nTvTgwYMZPHhwkesU1mLO7xY4YsSIF+oaVySOHTuGp6enlC6Tp2nt4eGBiooKrVu35t69e0BuasTX\nX39NaGgoKioq3L59W3qvcePGODo6Stf9/fff+fnnn8nKyuLu3btcvHgRmUyGgYEBDg4OQK7RR3Ec\nPnyYvXv3smzZMgDS09OltK4uXbpIfXRwcGDkyJFkZmbi4eGBtbX1m348FR5RaFeBSEhIYOzYsVy4\ncAFdXV0CAwMZNmwYixcvJi4uDgsLC2nLBCApKYkTJ07w5ZdfArlfPkePHmX58uXMnTsXGxsb4uLi\n+Pbbbxk2bJjULjo6mj179oiAWCAoBYVzS6s1bE3y1TMs3neelJQU9u/fX2y7rl27FtjmzbNpzSvI\nglwzgjwKu1EJypfiiqKWelmx1NOqzAulyopXKQB9HqUpxHtXyCs4nLcnnl8jbhAUc7vA+/kVIPLS\nVv39/UlMTCQ6Ohq5XE79+vVJT08HCk6w//rrL5YtW0ZwcDBxcXF8+OGHpKeno1QqS5VznaeGkqdq\ncvPmTVq1alXkPq6uroSGhmJkZMTQoUP59ddfX/2BVFJEUFyO5K/a7bfuFPUMjaWZmZ2dHdeuXSMp\nKYkOHToAMHz4cKlaFyhSiOPl5SUVK4SFhTF06FAAOnXqxIMHD3j8+DEAvXr1KrJ6JRBUFJKSkqQt\nw4pA4S3iagbN0XqvDVErPqFv377Y29ujo6NTpN2qVauIiorC0tKS1q1bs379egC++uorZsyYgZOT\nU4Gt4I4dO3Lx4kWsra0JCAgo20GVA3mavoVZv379c398Q0JCcHd3L6tuPRcPGyPCp3fiL58PCZ/e\nSSqSKnzsbZO3q2hmZkbXrl1JS0vj2rVrfPDBB9jZ2eHi4sLly5eBXOWDyZMn07FjR6ZNm0Zqaioj\nR47EwcEBGxsbyR3tVXhbagoVnfxKJdUaW/GP/DhfbQknKOY2Dx8+LLHd48ePqVevHurq6hw/fpwb\nN24Ue96TJ0+oUaMGOjo63Lt3j4MHDwLQsmVL7ty5Q2RkJADJyclkZWUVmWB369aN1atXS8F4SWoo\nN27coF69eowaNYqPP/6Yc+fOvdLzqMyI9IlyojgP9AfpSmlLVlVVlaSkpOdeI/8Mr/Dr4goo82aU\nhdsJBBWJvKB4zJgx5d0VoPgt4lpt+mLm/glBExxxdXXlyy+/LOIapa+vX2xw265duwJbyt988w2Q\nu82a9+P2LjF69Ojy7kKlIyEhgW3btrFhwwb69+9PYGAgvr6+rF+/nmbNmnHmzBnGjBnDsWPHgP92\nEVVVVUvML33V34WXVVOoiuTfTdKo2xiddgNQ/DqVIVvV8OpWcqHakCFD6NmzJ/b29lhbW9OyZcti\nz7OyssLGxgYzMzOaNGkimbtoaGgQEBDA+PHjJTWbo0eP0rFjR3x8fLC2tmbGjBnMnj2bL774AktL\nS5RKJSYmJuzbt6/IfUJCQli6dCnq6upoa2u/kyvFIiguJ4qT+1EqlSw9dEX6gtHR0aF27dqcPHkS\nFxcXfvvtN2nV+EW4urri7+/P7NmzCQkJQV9fv8R8I4GgIjF9+nSuXbuGtbU1zZo1Y8SIEZK0kLe3\nNz179ixW07SsKC639PHhH1HN/Bdbv2yGDx+Ora3tW+tPRSXPzWzChAmSm9mxY8ckNzOAmTNnsm/f\nPrS0tNizZw/169dn3rx5aGtrM2XKFP78809Gjx5NYmIiqqqq7NixA8jNOfX09CQ+Ph47Ozu2bNlS\n5aS6XgZTU9MCu4oKhYJTp07h5eUlnZMn6QYFdxFLyi/N204XvDyFd5O0O4PeJwAAIABJREFULTqj\nbdEZGeBXjCpJXg61vr4+ERERxV6zcM54/lSr/Dg4OHD69OkixwtPsH/66aci53h7e+Pt7S29Hj58\nOMOHDy/2Pu8KIiguJ4r1QC/m+C+//CIV2jVp0kT6cXkR8+bNY8SIEVhaWlK9enV++eWX1+6zQPA2\n8PHxIT4+Hrlczu7duwkICKBHjx48e/aM4OBg1q1b91b7U5xW64rftrzzq2OFcXV1Zfny5UyYMIGo\nqCgyMjIkNzMXFxf8/f1xdHRk0aJFfPXVV2zYsIFZs2YVuMaQIUOYPn06ffr0IT09nZycHG7dukVM\nTIxkl+zk5ER4eHgB57OqTn71Ez3lYzKU/+Xxqqqqcu/ePXR1daW89cIU3kUMDAykRYt3L++3rHjb\n9s2CskMExeVE4T8iNZ36GH68VvojmjJlivRecbPA/NW5UHQWqaenV2yu2Lx5816904V40cpQzZo1\ni+gqBgcHs2bNGnbv3g3AkSNHWLduHbt27Xpj/RJUHbp3786ECRPIyMjgjz/+wNXVtVzy4cUW8Yux\ns7MjOjpacjOztbWV3MxWrVqFhoaGlBtsZ2fHkSNHCrRPTk7m9u3b9OnTB8g1dMijTZs2NGzYEABr\na2sUCsU7ExQXl2qX+CS9gPpJrVq1MDU1ZceOHXh5eaFUKomLi8PKyqrI9fLyS1evXo1MJiMmJgYb\nG5u3OqaqRnG7Se9qwWFlRxTalRNVoWr3eT73Li4uLFq0iKioKOLi4jhx4gRxcXF06tSJS5cukZiY\nCICvr2+lktsRlA2Fi06fpOdWyWtqauLm5sahQ4cICAhg4MCB5dxTQWHyPrvmsw/zQKYjuZm5uLhI\nbmatWrVCXV1dSnlQVVUtooTwPCOp/JX7xbWtyjwv1S4//v7+bNq0CSsrK8zMzEosoJs9ezaZmZlY\nWlpibm7O7Nmzy6zv7wqi4LDqIFaKy4kX2WdWBl60MlScrqKlpSVDhw5ly5YtjBgxgoiICH799Vcp\nJ644DUtB1abwSti/6TL+SXwkrYQNHDiQjRs3EhUVVWJenaB8KPzZyQxa8ctPa5i1eBUuLi5MnjwZ\nOzu7UuX/1qpVi4YNGxIUFISHhwcZGRkV3qjhbVA4pS5vVzHveP5dxT/++KNI+8J/M1paWsXmlwpe\nD7GbVDUQK8XlSEWQ9nkVSrMypKWlVayuIuSKsW/ZsoVt27bh5eWFmpoaCoVC6Ca/oxReCVPVqoWG\nUSsGd3dm6tSpdO3aldDQUN5//300NDTKsaeCwhTVcDYjK+UhB/+tSf369SU3sxcRFhZGq1atqFev\nHitWrEBbW5vatWuzcePGYs9/HcWK9u3bv/CcFStWlLmbl1wu58CBA9LrvXv34uPjU+S8kvJSRb6q\nQPDmkT1vy6qssLe3V0ZFRb31+wpen8IrQ0lh/qSeP8qsxavQy0zkyy+/REtLCxcXFy5cuEC9evV4\n+vQpV65cYenSpUycOJETJ07Qq1cvnj59ynvvvcfZs2fp0qULly5dwtTUlOHDhzNp0qRyHqngbWE6\nfT/FfQvJgL+KqdwWVBze1GfXsmVLDh48iKmpKadPn2batGmcOHGixPO1tbWLuKC9SUxMTIiKipJc\nyUpDdna2pPBQGvz8/ApY8ZZE4e9cyE21E9vzAkHpkclk0Uql0v5F54mVYsFLUdLKUGD8Q9asWYOx\nsTFz587l119/xdHRkcePH9OoUSPMzc0lwfFly5ZJ26qRkZFoaWnh4+ODi4sLcrlcBMTvGGIlrPLy\nKp/dd999R82aNdHU1MTAwID333+fK1eu0KNHDxYvXoynpyfh4eFYW1sTFxfHiBEjsLCwwNLSksDA\nQOk6M2fOxMrKCkdHR8katzTkmYiEhITg5uaGp6cnLVu2ZMiQISiVSlatWsWdO3fo2LEjHTt2BHJl\nzNq1a4etrS1eXl5SQG5iYsKCBQtwdnZmx44dJRpo7NixA3Nzc6ysrHB1deXZs2fMmTOHgIAAyazF\nz8+PcePGAblSWRMmTKB9+/ZM7udCz1o3MNLVAmUO6SE/k7p1Ihtnf0aPHj3YuXNnqccuEAiejwiK\nBS9F4fw2LRNrGk/dw+0rcXh6enLt2jUmT56Mnp4eX3/9NY0aNeLmzZukpqZKbZycnFi7di2mpqYk\nJSWhpiZS299lqkLR6bvKy3520dHRrFu3Dk9PT+7fv4+enh5z5sxBVVWVoKAgpk2bxuzZs9HR0UEu\nl+Pv74+Ojg7nz5+XCnUBUlNTcXR0JDY2FldXVzZs2PBK/Y+JiWHFihVcvHiR69evEx4ezoQJEzA0\nNOT48eMcP36c+/fvs3DhQo4ePcq5c+ewt7fn+++/l66hqalJWFgYAwcO5NNPP2X16tVER0ezbNky\nyYBmwYIFHDp0iNjYWPbu3YuGhgYLFixgwIAByOXyIu6kAHfv3iUsLIx9+/ax66elhE/vxDKHDGz1\nMlEkXGLjxo0latwKBIJXQ0QjgpeiJD1GGXD1XsHtzPHjxzN58mR69epFSEiIJAe3Y8cOGjZsiLm5\nOY6Ojhw9evQt9FxQUakKRafvKqX97PJ0di8f3Y66kQ0HDgdT75tvsLe3L1FbF+Do0aNs375del27\ndm2AF8q7FSa/zm9aZjZBMbfRpXRSb6dPn+bixYuSi9izZ89o166d9H5eQJuSklKigYaTkxPe3t70\n79+fvn37PreveXh4eKCiokLr1q2llfCwsDC8vLxQUVGhQYMG0kq2QCB4M4igWFCAO3fuMGHChBK3\n5KZ2a8FXWyN4EHuMmrb/5QxqNLJkz+5v+XXIKIZ1NOfhw4c8fvwYI6PcH8f85iG///47TZs2BXJd\ndy5fvoyxsXEBr3bBu4Wo3K68vOizC4q5zdSdsWRmK1EqIV2lOnoDlpJR8x7Htm4lMTERmUxGTk4O\nkBt05qFUKotVrniRvFvh++fPyVUqYcau8wxplFwqqTelUkmXLl3Ytm1bsdfPM8bIyckp0UBj/fr1\nnDlzhv3792Ntbf3ciUAe+fuWV/tTHjVAAsG7hEifEEhkZWVhaGj43Bw1Dxsjprg1JDnmQIHjGnUb\nU8uxP6MH9cTKyorJkyczb948vLy8cHFxKVCwsmLFCim/TktLi+7du2NpaYmamhpWVlb88MMPZTZG\nQeVg9uzZrFy5Uno9c+ZMVq5cydSpUzE3N8fCwoKAgAAgNzc0b9UQYNy4cUK6rQIx/38XyMzODeaq\nGZuRejmMzOwcjqWbIJPJSEtLQ01NjdjYWABCQ0Oltl27di1QiPbo0aOXvn9xOr9pmdlsj7xVYpua\nNWtKk3RHR0fCw8P5888/AXj69ClXr14t0ia/gQbkBrB5Y7p27Rpt27ZlwYIF6Ovrc+vWrQL3KC3O\nzs4EBgaSk5PDvXv3ipg4CQSC10OsFFdRUlNT6d+/P3///TfZ2dnMnj2bJk2aMHHiRFJTU6lWrRrB\nwcEEBgayf/9+0tPTSU1NZfPmzbi7uxMfH4+fnx+7d+8mIyODv/76i8GDBzN37lyO/baCrKS73PEd\nj5aJDbU7jgRy/d5rWnQmNl/Vee/evYv0bfXq1cX2OTg4uGwehqDS8fHHH9O3b18mTpxITk4O27dv\nZ8mSJezbt4/Y2Fju37+Pg4MDrq6u5d1VwQt49DRT+v9qDd5Ds6EZf/84nL8BY8MGLF26FHd3d2bO\nnMmPP/6IoaGhdP6sWbMYO3Ys5ubmqKqqMnfu3FKnH+RRuA4ij/spGZiU0ObTTz+le/fuGBgYcPz4\ncfz8/Bg0aJCUDrFw4UKaN29epJ2/vz+ff/45CxcuJDMzk4EDB2JlZcXUqVNJSEhAqVTSuXNnrKys\naNSoET4+PlhbWzNjxoxSjaVfv34EBwdjbm5O8+bNadu2LTo6OqVq+7ZQKBTSb4hAUNkQQXEV5Y8/\n/sDQ0JD9+/cD8PjxY2xsbAgICMDBwYEnT55IdrkRERHExcWhp6eHQqEocJ2zZ88SHx9P9erVcXBw\n4MMPP8THx4e9IWeo5100uBWKAYI3gYmJCXXq1CEmJoZ79+5hY2NDWFgYgwYNQlVVlfr169OhQwci\nIyOpVatWeXf3hbxsoDBnzhxcXV15//33y7hnb5863cdTp/t4ABT/P4H+559/ij1XW1u7QOpVHvnl\n2Dw9PfH09CzxfoXrIBpNzt0Ja2rZln3T/wtG869Ijx8/nvHjx0uvO3XqRGRkZJFrF/6+NDU1LdZA\nozgbez09vSLX9Pb2BooabuSNV0VFhWXLlqGtrc2DBw9o06YNFhYWRa5dWcnKyhKF14JyRfzrq6JY\nWFgwZcoUpk2bhru7O7q6uhgYGODg4ABQIJDo0qULenp6xV6nS5cu1KlTB4C+ffsSFhaGh4cH+trV\n0FJXrTRe70uWLEFTU5MJEyYwadIkYmNjOXbsGMHBwfj6+lKzZk1CQkL4999/GTduHB07dkRDQ4O9\ne/eyd+9e1NTU6Nq1K8uWLSvvobwUZa3n+ibJXwxlqKtFu8598fPz459//mHkyJEcPny42HZqampS\nPiogmcRUZhYsWFDeXXhj6Gqpk5SWWezx4njTK40Jq4ajM2gZmera0rGK/F31Itzd3UlKSuLZs2fM\nnj2bBg0alHeXipCdnc2oUaM4deoURkZG7Nmzhzt37jB27FgSExOpXr06GzZsoGXLlnh7e6Onp0dM\nTAy2trYsX768vLsveIcROcVVjDy3uW6bE6g79AcyahoxY8YMdu/eXaLVal6hSHEUbpP3upamWqXy\nend1deXkyZMAREVFkZKSQmZmJmFhYbi4uLBo0SIuXbrEv//+y4kTJwgICODo0aPs3r2bCxcuEBcX\nx6xZs8p5FFWXvGKo20lpKIHbSWnse9KQnXv2ERkZSbdu3XB1dSUgIIDs7GwSExMJDQ2lTZs2NG7c\nmIsXL5KRkcHjx48rbBpOVlYWw4cPx9LSEk9PT54+fUp0dDQdOnTAzs6Obt26cffuXSB3xTAvt9/E\nxIS5c+dia2uLhYWFpH2bmJhIly5dsLW15bPPPqNx48bcv3+/3MZXEvN6maGuUvB7RF1FxrxeZm/8\nXsUVylXXUGX2h60rzXfViwgJCUEul3Px4kVpZbmikZCQwNixY7lw4QK6uroEBgaWKFcHcPXqVY4e\nPSoCYkG5I1aKqxD5q6yzkh9wT6smh5TN8eg7gtNHA7lz5w6RkZE4ODiQnJwspU88jyNHjvDw4UO0\ntLQICgpi8+bNUoFIRVcMCIq5zcTpc7gTdYjqunXJuHuVRYsWER8fT7du3YiKiiI4OJhr166hVCpZ\nvnw59+7dQ01NDblcTo0aNXj48CHu7u54enqyd+9e/v77byC3WDBPoqkyoFQq+eqrrzh48CAymYxZ\ns2YxYMAABgwYwPDhw+nRoweQG4z17NkTDw8Ppk+fTkhICBkZGYwdO5bPPvuszPpXXDFUeo4K2fVb\n07+jGaqqqvTp04eIiAisrKyQyWQsWbJEWiXr378/lpaWNGvWDBsbmzLr5+tw5coVNm3ahJOTEyNH\njuTHH39k9+7d7Nmzh7p16xIQEMDMmTPZvHlzkbb6+vqcO3eOtWvXsmzZMjZu3Mj8+fPp1KkTM2bM\n4I8//uDnn38uh1G9mFeR3CtupXHLli38/PPPPHv2jPfee4/ffvuN6tWrF1lp/Prrrxk0aBCJiYm0\nadMGpVJJD0sDhnWqOmkGFR1TU1Osra2BXMk8hUJRolwdgJeX10u5AQoEZYUIiqsQ+QOLzEQF/4b4\ngkzGanUNQoK2oFQqGT9+PGlpaWhpaZVKH9jZ2ZmhQ4fy559/MnjwYOztc10SnZycMDc3p3v37ixd\nurRMx/UqBMXcZtKPu7h7LhgD75WQk8Pfaz5i75FQdHR0sLGx4fjx4ygUCmQyGcuWLeOHH37gp59+\nQl9fn6SkJJydnRk/fjzBwcGMHTuW2rVrc+7cOW7evEm3bt24dOlSeQ+z1OzatQu5XF6kSG3gwIEE\nBATQo0cPnj17RnBwMOvWrWPTpk3o6OgQGRlJRkYGTk5OdO3aFVNT0zLpX3HFUEplDg8VF/j441yj\nBJlMxtKlS4v997ZkyRKWLFlSJn17UxgbG0sTqY8++ohvv/2W+Ph4unTpAuQGggYGBsW2zSsus7Oz\nk/JTw8LC2L17NwAffPCBpOFbEXnZCXRCQgLbtm1jw4YN9O/fn8DAQPr27cuoUaOA3AK8TZs2SXm/\neSuNqqqqTJgwAWdnZ+bMmcP+/fsr7GShKpE/9UlP+ZgM5X8BrqqqKvfu3StRrg6ev1spELxNRFBc\nhcgfWGg1sUOriR2Qa6yRF8yePn26QBtvb+8CW3AmJiYFcvnq1atXoAAlj61bt77Bnr95lh66wuO/\nzlO9eTtU1DUBUK9nSvSZU5g1b4K1tTWjRo3C3NxcWhWuUaMGGRkZHDx4kHbt2knb8T169CAlJYVb\nt25Jqx9PnjwhOTmZmjVrlucwS01JRWrdu3dnwoQJZGRk8Mcff+Dq6oqWlhaHDx8mLi5O2sJ//Pgx\nCQkJZRYUFy6Genb/Jok751PXwoVmzZqVyT3LmsKBQnpmbt6ziYkJP/zwAzVr1sTMzKxUrmR5mrX5\ntXSrkmZt4WdVz9C4yEpjfHw8s2bNIikpiZSUFLp16ya1z7/SGBoaKk0cPvzwwwo9WagKFNaBvvck\nncQn6QTF3JYmQvnl6ry8vFAqlcTFxWFlZVWeXRcIiiByiqsQJSk/vEuKEHk51f8FWP/lMqpq1yE7\nIxU9PT1q166NpqYm9vb2aGhoYGNjg7e3N7GxsdJqXkZGBu7u7lhaWvLo0SPWrVuHXC5HLpdz+/bt\nChsQ5z0D0+n7JfeukgIoTU1N3NzcOHToEAEBAQwcOBDIDbhWr14tjfevv/6ia9euZdbnwnbBGvqN\neG+8H2tXrSize5YlhXOk7z1JJ/Gf2/j47QVyV+4dHR1JTEyUguLMzEwuXLhQ6ns4Ozvz+++/A3D4\n8OFX0vCtCBT3rB6kKwmKuQ38NxHw9vZmzZo1nD9/nrlz5xYoqCy80lhS/YTg9VEoFJibm0uvi0t9\nUiqVLD10pcAxf39/Nm3ahJWVFWZmZuzZs+et9FcgeBlEUFyFKBxYwOtVWef9CFUW8v+4Qq5RwNOE\nCHIyM8jJeEpm4l80/uBTmjZtSnR0NFevXpVUN/z8/Pj1119p06YNu3btwsXFBZlMxtmzZ4mLi6N/\n//4kJSVJ9yqNI1V5UDjAyHPvqtbQrNgiNYCBAwfi6+vLyZMnpdW3bt26sW7dOjIzc1UDrl69Smpq\napn128PG6LUKN7Ozs198UiG2bNlCmzZtsLa25rPPPiM7OxttbW1mzpyJlZUVjo6Okr3ujRs36Ny5\nM5aWlnTu3JmbN28CBQviIFftA2DJwUv8vX81dzaO4d+d87m/fwWq2nVYsW4Dd+7cISoqim3btiGT\nyRg/fjxWVlZYW1tz6tSpUvd/7ty5HD58GFtbWw4ePIiBgUGFnag9j9IGVcnJyRgYGJCZmYm/v3+J\n13N1dZXeP3jwYKWdLFQWCqc+qenUx/DjtdLxKVOmMG/ePEmuLjY2losXLzJnzhwg97v3eZJ6AsHb\nRATFVYj8gUXK+aPUVUmVAgsTE5NiK9P37t2Lj49POfT2zVP4x7Vag/eo0dKFu34TSAz6jhqNzHFr\nUZcpU6awbt062rdvX2K1fs+ePdm9ezfW1tacPHmSVatWERUVhaWlJa1bt2b9+vVva1gvRUnuXScz\nm2BpaYmVlRWdOnUqUKTWtWtXQkNDef/999HQ0ADgk08+oXXr1tja2mJubs5nn332XCvdl6VwQPrj\njz9yattKwqd34i+fDxnV4CbBm32KPTcvANbW1mbOnDm0bdu2VCkI+bl06RIBAQGEh4cjl8tRVVXF\n39+f1NRUHB0diY2NxdXVlQ0bNgC5LnnDhg0jLi6OIUOGMGHChOde/8+zwWQ9vofBx2uo88EEMv+9\nTu3Oo9DqOBpDQ0PGjBmDXC5n0qRJWFtbExsby4ULF6Sc2fyBgkKhkBwh7e3tJRczHR0dDh06xLlz\n5+jfvz/16tUrYA38NsibBNy5c0fqr5+fH+PGjSv1NUoy1yh8/JtvvqFt27Z06dKFli1blni9uXPn\nEhoaiq2tLYcPH6ZRo0al7ovg5bh+/TqJv37B4zOB/Lt7Efd+n8Ptn0fx6PhmaYdy27ZtWFhYYG5u\nzrRp0wD4/fffmTx5MgArV66kSZMmQK7zn7Ozc/kMRiAAZOWRl2Zvb6+Miop66/d9l3Bzc2PZsmVS\nLrGJiQlRUVEF7JarGqbT91PSv2YjXS2M/9qHfTNDpkyZ8lb79TYp6RnIgL/yOQ2WJ5cuXeKrr75i\n165dqKurM2bMGNq2bcs333wjWel2796dmTNnUqdOnSLnOjo6MmzYMGQyGQEBAfTv3/+l+7BmzRq+\n/fZb6tWrB0BaWhqDBg3iu+++Iz09Xbr2kSNH2LhxI/r6+ty9exd1dXUyMzMxMDDg/v37eHt7S+ok\n8J8utKFTP57pGKNtmVtE9+/uRdRo1YHmjl24vX4k4eHhGBkZcebMGWbOnFmqotfCJCQk0L9/f3Jy\nctDQ0GDt2rWSDvnbojgdbD8/P6Kiokq9y1Qw3ek/jHS1CJ/e6Y30U/DmyNORDgwMZODAgQybtpgl\nWw9xP9QfgxGrkKmqc2fDaNZt30cPKyMcHR2Jjo6mdu3adO3alQkTJuDo6EjPnj2JjIzE09OTGzdu\nEBQUxNGjR7l8+TLfffddeQ9TUMWQyWTRSqXS/kXniZXiCoiHhwd2dnaYmZlJldPFbesmJydjamoq\nbXE/efIEExMTduzYQVRUFEOGDMHa2pq0tNwfnNWrVxfROs2/quPt7c2ECRNo3749TZo0kbaFc3Jy\nGDNmDGZmZri7u9OjR48CW8YVhZJyp/N+XFsaVHzns9elouaV589z/nDaOsJP50oDWltbExwczF9/\n/UWTJk04ffo0Dx484MqVKzg5OREcHEx0dHSBc69fvw7k5pr269fvlfrw/eErtPugr5QzfeXKFebN\nm4e6urqUj5q/qK0weefkNw5RKpU8e/YMANvGuqirFvx61VBTkVKZiiuce1maNWtGTEwMsbGxktRi\neVE4zzSP/fv3065dO+7fv09iYiL9+vXDwcEBBwcHwsPDgTef9iUoexITE+nduzdbtmxh0sCueNk1\nRK+5HarVatBQXwcL89a0rJlBZGQkbm5u1K1bFzU1NYYMGUJoaCgNGjQgJSWF5ORkbt26xeDBgwkN\nDeXkyZO4uLiU9/AE7zCvFRTLZLKlMpnsskwmi5PJZLtlMpnum+rYu8zmzZuJjo4mKiqKVatW8eDB\ng2K3dWvWrImbm5tk5bx9+3b69euHl5cX9vb2+Pv7I5fLJT3iPK3Tzz//vERntrt37xIWFsa+ffuY\nPn06kFsUpFAoOH/+PBs3bnzpreq3xYt+XOfNm1elV4mhYgYYhfOck9KeIWvegXm++wsEpAMGDOD3\n338nMDCQPn36IJPJUCqVDB8+vEjwCrlFgqXVNi3ch/R6rflf0G78gmMBePjwITdu3Cixffv27dm+\nfTuQWzCUt8VrYmJCdHQ0AHv27JEmqMP7fIBRUhyGtaqRk/qIzFvxDGnbqELrer9pdu/ejY+PDwcO\nHEBfX5+JEycyadIkIiMjCQwM5JNPPgFeP59cUPbkn1D2W3cKVc0aGBsbSxMb28a18Wpjyl8+HxI+\nvROGtWuQlZX1XIWUdu3a4evrS4sWLXBxceHkyZNERERUKv13QdXjdSXZjgAzlEpllkwmWwzMAKa9\nfrfeLQrb2xr/tY9Lp3NduW7dukVCQgIaGhq4u7sDuRJFR44cAXJzP5csWYKHhwe+vr5SDmRxFKd1\nWhgPDw9UVFRo3bq1VGQUFhaGl5cXKioqNGjQgI4dO76xsb9JXsUkoKpREZ9B4TxnzcZWJO76hkWB\np/Gw6cfDhw9JTk6mb9++LFq0iMaNG7N48WIAOnfuTO/evZk0aRL16tWTzm3cuPFr9UFDvxE6Lh8x\ndmg/vtevjrq6Oj/++GOJ7VetWsXIkSNZunQpdevWxdfXF4BRo0bRu3dv2rRpQ+fOnSUVhH79+hEc\nHEzolgnYNm9ORgcnulg3eak+V2aOHz9OVFQUhw8flizljx49ysWLF6Vz8ssaVnQjoHeZ4iTXHqTl\n8PH8taz5aoSUV14cbdu2ZeLEidy/f5/atWuzbds2SVva1dWVOXPmMGfOHEk3XktLCx0dnbcyLoGg\nOF4rKFYqlYfzvTwNiBLSl6TwF861uDPEnDyEb8AeBrR/Dzc3N9LT00vc1nVyckKhUHDixAmys7OL\n3cLMozRbtvkLdfJm+ZVJD1X8uFa8Z1C4YEpDvxG6LkOJ3TAVy73zpYC0cePGtG7dmosXL0rKGK1b\nt2bhwoV07dqVnJycAue+Th8AarRyRbuVK3H5cq3z58d6enpKucImJiYcO3asyDXq169fQPs7LxdS\nRUWFZcuWoa2tzYMHD2jTpg0WFrmOagqFQjo/f+FcZSH/JD5P8s+6kBRwkyZNuH79OlevXpXqGnJy\ncoiIiCiVk6ag4lCSOsjq0Fvs37ePLl268NFHHxXb1sDAgO+++46OHTvmOgv26EHv3r0BcHFx4dat\nW7i6uqKqqoqxsfFzCygFgrfBmzTvGAkEvMHrvRMU/sLJyXgK1WqwKvQmVnpZRcw2imPYsGEMGjSI\n2bNnS8fyrJjfBM7Ozvzyyy8MHz6cxMREQkJCGDx48Bu5tqDqU9iYA3ID0ubtuhUppNq3b1+R9nl2\n1IUpXOD1sn3IO15WuLu7k5SUxLNnz5g9e7ak9lGZKTyJz5P8m+RYMHOucePGLFu2jD59+rBjxw7M\nzMzo2rUra9asYerUqUCurGGeQYeg4vI8yTVdXV0iIyOLtMn/dzx48OBify+aNm1aYMHl8OHDRc4R\nCN42L8wplslkR2UyWXwx//XOd85MIAsoUTxSJpN9KpPJomQyWVTHTNhnAAAgAElEQVRiYuKb6X0V\noPAXjpapHcqcHCK//5jZs2fj6Oj4wmsMGTKER48eMWjQIOmYt7c3o0ePLlBo96r069ePhg0bStJc\nbdu2FVtcglJTEfKcy6MPISEhyOVyLl68WMA1sjJTkuTfT6HXi5zbokUL/P398fLy4tq1a5VG1rC8\neRXN7bKkohbvCgRlwWtLsslksuHAaKCzUql8Wpo2QpLtP96EHNHOnTvZs2cPv/3225vunkRKSkqB\nreDw8PAqsfJVlUlKSmLr1q2MGTOGkJAQli1bVuxK7NugcN58eeQ5V4Q+VHYqg+Tf22T27NlSESHA\nzJkzqVevHn///TcHDx5EJpMxa9YsBgwYUORvcNy4cdjb2+Pt7Y2JiQkjR47k8OHDjBs3TnKWrAgU\n3h2A3AmlKIYUVCZKK8n2WukTMpnsA3IL6zqUNiAWFGRqtxbFfuGUdgVr/PjxHDx4kAMHDpRVF4Gq\nuRVc1UlKSmLt2rWMGTOmvLtSIfKcK0IfKjvlkYZSkfn444/p27cvEydOJCcnh+3bt7NkyRL27dtH\nbGws9+/fx8HBAVdX1xdeS1NTk7CwsLfQ65ejIhbvCgRlxevmFK8BqgFH/r8I7LRSqRz92r16h3jd\nL5zVq1eXZfckKlsxkACmT5/OtWvXsLa2Rl1dnRo1auDp6Ul8fDx2dnZs2bIFmUxGdHQ0kydPJiUl\nBX19ffz8/DAwMMDNzY22bdty/PhxkpKS2LRpk9AQfcd53Ul8VcPExIQ6deoQExPDvXv3sLGxISws\njEGDBqGqqkr9+vXp0KEDkZGRkgpHSRSXN19REBNKwbvC66pPvPemOvIuI75wBGWBj48P8fHxyOVy\nQkJC6N27NxcuXMDQ0BAnJyfCw8Np27Yt48ePZ8+ePdStW5eAgABmzpzJ5s2bAcjKyuLs2bMcOHCA\n+fPnv5LzmqDqIFYNc8mfiqNR15HZS9dQIztFSoEojvxGLwDp6ekF3s+T8xMIBOXHm1SfEAgEFZg2\nbdrQsGFDAKytrVEoFOjq6hIfH0+XLrl2xNnZ2RgYGEht8mtb55cSE7y7vOuT+MI5tulGdhzZ7Ett\nLVW2bt1Keno6P/30E8OHD+fhw4eEhoaydOlSMjMzuXjxIhkZGaSnpxMcHCyZwAgEgoqBCIoFgipE\n/hUsPeVjnqT/p0edX4M6T6taqVRiZmZWokvhm7AjFgiqEoUVOGSq6mg0skBNRxdVVVX69OlDREQE\nVlZWyGQylixZItVg9O/fH0tLS5o1a4aNjU15DUEgEJSACIoFgipC4RWsf9Nl/JP4iKCY25Tkv96i\nRQsSExOJiIigXbt2ZGZmcvXqVczMzN5exwWCSkRhGU2lMoeMO1fAYToAMpmMpUuXsnTp0iJtlyxZ\nwpIlS4ocF7swAkHFQATFAkEVofAKlqpWLTSMWjG4uzNmxvrUr1+/SBsNDQ127tzJhAkTePz4MVlZ\nWXzxxRciKBYISiC/Asez+zdJ3DkfrebtaNxElNgIBJWd19YpfhWETrFA8OYRGrICwevTvn17Tp06\nhUKh4NSpU0Xc2IRub8XjRZ+ZQFBaneIXOtoJBILKgXCeEghen1OnTgG5KQ1bt24t8r6HjRHf9bXA\nSFcLGblGSyIgLl9e9JkJBKVFpE8IBFUEoSErELw+2trapKSk4OHhQU5ODhYWFrRo0YL58+czYsQI\nHj58yL///kt0dDTNmjV7rXuFhISgoaFB+/bt31Dv303yPrPp06dz6dIlrK2tGT58OJMmTSrvrgkq\nGWKlWCCoIogVLIHgzREUFISrqyv/+9//uHz5MuvXr2fixIls3LgRZ2dnSd7wdQgJCZFWOQWvj4+P\nDy4uLsjlchEQC14JERQLBFUIDxsjwqd34i+fDwmf3qnSBsQeHh7Y2dlhZmbGzz//DOSuBs2cORMr\nKyscHR25d+8eycnJmJqakpmZCcCTJ08wMTGRXgsEJbFkyRJWrVoFwKRJk+jUqROQq9X90UcfMXDg\nQJ49eyY5Q+7du5eJEyeydetWHjx4wNChQ2nZsiVDhgwhrzYnODgYGxsbLCwsGDlyJBkZGUCu8939\n+/cBiIqKws3NDYVCwfr16/nhhx+wtrbm5MmT5fAUBAJBfkRQLBAIKhybN28mOjqaqKgoVq1axYMH\nD0hNTcXR0ZHY2FhcXV3ZsGEDNWvWxM3Njf379wOwfft2+vXrh7q6ejmPQFDRcXV1lQLRQyGniEy4\ng8nUPWRkZlGzsYV0no+PD02bNuXGjRucOXOGatWqERkZiZeXFxcvXuT69euEh4eTnp6Ot7c3AQEB\nnD9/nqysLNatW1fi/U1MTBg9ejSTJk1CLpcLC/WXJCjmNk4+xzCdvp+0zGyCYm6Xd5cEVQARFAsE\nggpFXvCrpaVF7dq1uX79OtOnT0cmkzFjxgw+/fRTbG1tiYuLw9bWlk8++QRfX18SEhKYPHkyI0aM\nKO8hCCoBdnZ2REdHsy3sCjeSniGr35yMfxJQ5uRw6IEuz7KVpKSkSOdfv36dJk2a0K9fPxo2bMjd\nu3dRUVGR3CGvXLmCqakpzZs3B2D48OGEhoaW1/CqNHkKILeT0lACSiXM2HWe6NtpJCcnl3f3BJUY\nERQLBIIKQd7Kj9EHn6K4ex+/4POkp6dja2tLz549qV69OvHx8aSlpSGXy6levTo6OjrUqFEDhULB\n/PnzqVOnDubm5uU9FEEFJf/qotvyk9SoY8DMxatRN2xJtYZmpN88D0ol2TpGpGbJUFVVpXv37jx4\n8ICAgADMzc355JNPSE9PZ9iwYUBBd8iSUFNTIycnB4D09PS3MtaqTGFNdoC0zGx2KlRRU1PDysqK\nH374oZx6J6jMiKBYIBCUO/lXflS0dMhKT2XMlBl8sXA1UVFRxMTEkJaWhoWFBceOHePWrVsA0irx\nRx99xPbt2xk3blw5j0RQUSm8ung7KY27WqbcPPE71YzN0TQ2IznmIFrN2iKTycjOUbJ7927CwsLQ\n0NBgxowZXLhwgY0bN9KmTRv09PQKXL9ly5YoFAr+/PNPAH777Tc6dOgA5KZKREdHAxAYGCi1qVmz\npljZfAUKuwo2mrwTgH+SMwkODiY2NlYU2gleCREUCwSCcif/yk9Ny65oGLbicXwIP343iwYNGrBy\n5UqqVavG+fPnGTVqlFRI169fPw4ePEjdunVRKpWMGjWqPIchqKAoFAoGd3cusrqY+vdlslMeUM2w\nJSlxR5CpqaPZMNfNUU1FBkCdOnVwcnLC3NycqVOnlngPTU1NfH198fLywsLCAhUVFUaPHg3A3Llz\nmThxIi4uLqiqqkptevbsye7du0Wh3UsiNNkFZYVwtBMIBOWOyfT90v9nJT9AVasmMjUNnl6NoH1O\nPBERESgUCrKzs3F0dMTT05N58+YBMH78ePz9/bG2tubYsWPlNAJBRUahUNDcoQOGH68t9n0tdVWu\nLO4jrTgKh7qKjXAVFLwspXW0E+YdAoHgjZOYmIi7uzvPnj1j1apVL6ysV5XJyP7/CXpmooJ/Q3xB\nJkNFRY1Z/9tKUFAQFhYWmJiY4ODgUKDtP//8w5MnT/jxxx/LbDyCyo+aTMn9/d/z7N511GsbUsd9\nMv/umEeLXmNomhrP5axn3PEdj45BE1b4/iKCqwpM3mez9NAV7iSlYairxdRuLcRnJnhtRFAsEAhK\nRKFQ4O7uTnx8fKnbZGVlERwcTMuWLfnll19K1SZbqUSZk41MRRWtJnZoNbGT3rO3t8fe3p6FCxcW\n27Zt27a0bNmSVq1albqPgnePtMRbNOoxEVmDltw/sILkcwdQkckY2q4xU4Z8jvaOX0i5d728uyko\nJR42RiIIFrxxRE6xQCAogkKhoGXLlnz55Zf8+eefeHp68vTpU6Kjo+nQoQN2dnZ069aNu3fvAuDm\n5sbXX39Nhw4dWLlyJV999RUHDhzA2tqatLQ0tm3bhoWFBebm5kybNk26j7a2NnPmzOGB/xQy7lzm\n73UjeXTiF+7+9iV3f/kCndRbdOvWjaZNm7J+/XoAUlJS6Ny5M7a2tujo6LBmzRomTpyIQqGgVatW\njBo1CjMzM7p27UpaWm5Bzp9//sn777+PlZUVtra2XLt2DYClS5fi4OCApaUlc+fOfctPWfA2MTY2\nZuXEgRjpaqFt1hGVfy/TpG4N3FrUK++uCQSCCoIIigWCSkR+Zyxtbe0yvdeVK1cYNGgQJiYmyOVy\nmjZtSteuXfnss89o1KgRI0eOZObMmRw5coQLFy6QlJTEiRMn+PLLL1mwYAEDBgxALpfz6NEjpk2b\nxrFjx5DL5URGRhIUFATkahKbm5vz296j1Da1BECtVl0Mhi6nRiNzHv+xkp07d3L69GnmzJkD5BY0\n7d69m3PnznHt2jXU1NSoU6cOAAkJCYwdO5YLFy6gq6srVfoPGTKEsWPHEhsby6lTpzAwMODw4cMk\nJCRw9uxZ5HI50dHRQle2CpFffq3fulOkZ+ZIjo9bRzni2rwe+trVyrubAoGgAiHSJwQCQbEYGxtj\nb2/PlStXWLlyJXv37iU0NJQpU6bw8OFDrly5QsOGDfH19aVBgwYMGDCg2OtERkbi5uZG3bp1gdwA\nNTQ0FA8PD1RVVenXr59UkT9wjYzq77XBSFcL9w+cybijT82aNalZsyaampokJSVRo0YNvv76a0JD\nQ1FRUeH27dvcu3cPAFNTU6ytrYFccwaFQkFycjK3b9+mT58+QG5QDXD48GEOHz6MjY0NkLsCnZCQ\ngKura9k9VMFboXAh1r0n6ST+cxsfv71M9+7Ftm3bcHZ25n//+5/URl1dnczMTOGGKBC8w4igWCCo\noHh4eHDr1i3S09OZOHEin376aZneLyjmtlS4oqd8THpmrtmAsbEx5ubmHD9+nPfee4/mzZvj4OBA\n9erVGTFiBDY2NjRq1IgaNWoUe93nKdxoampKAbGHjRENdDSJmv8h+vr6+PndJOrBfyt5KioqZGVl\n4e/vT2JiItHR0airq2NiYiIZIlSr9t/5qqqqpKWllXh/pVLJjBkz+Oyzz17uQQkqPMWZO6jXMWbF\nug1s/X4WzZo14/PPPy8QFH/66adYWlpia2uLv7//2+6yQCCoAIj0CYGggrJ582aio6OJiopi1apV\nPHjwoMzuVdjYIG9lzW3aZtIzc9i2bRuOjo48fvyYR48eMWLECH777TeWL1+Ol5cXMpmsxGu3bduW\nEydOcP/+fbKzs9m2bZtkavAq/B97dx4WZbk+cPw77EMKqJhH0BRXkm0QFwJR1NxSEc2looQ6ZGaL\n6dHUjMI1t2Me7ChpAenRk4qJu/ZzBXchENFUJMeDkooZxB7L/P7gMIfVFRiE+3NdXhfMvO8z9wsI\nzzzv/dx3eno6zz77LIaGhhw+fJjr16/f93gzMzNatWqlTdnIy8sjOzubQYMGERISom3le/PmTe7c\nufPYcYm6o3xzBwPzFlj5r0bZdyLx8fFs3boVU1NTjhw5QrduxVWaFi9ezM8//ywTYiEaMJkUC1FH\nBQUF4eTkhKurK8nJySQmJtbYa1W1spaaEEnqrZucjL3ABx98QM+ePUlOTmbIkCEkJiaycuVK/Pz8\n7jt2y5Yt+eKLL+jbt692o9uIESMeO1YfHx+io6Pp1q0bGzZswNbW9oHnrF+/nqCgIBwdHXFzc+PW\nrVsMHDiQ1157jRdeeAEHBwdGjx4t3cXqCWnuIIR4HNK8Q4g6pCSFISn+NNknNrJ24zbGuXXA09OT\nwMBA/Pz8iI6OxtLSkkaNGmlXOZ+UzczdlP5NUJB+mzvhc3h29Ofc2RJI0/ZOPJtznY4dO7J+/XpM\nTU35/vvvWbFiBadOnaqWGISoLtLcQQhRmjTvEOIpU/oPeVFeNgUGSgL3XiX11s0an3haWSi5We6W\nM/zvtrMCiF80tMxzx44dk7bKok6S5g5CiMch6RNC1BGlUxiUNi5oiopI+vpdAj//DFdX1xp97emD\nOqM01Nd+bmDeokxL3PK3nV1cXIiPj+f111+v0bhE1dLS0li1qvh7dOTIEYYNG1brMdR0WcAnUVJ+\n7dqioRyf2U8mxEKIB5KVYiHqiNKbgxQGhrQYO6f4Y+DIf1dp1Wq19pjqSp2A/62szdl5gd+z88s8\npzTUZ/qgzmUei4mJqbbXFo+nZFI8adKkhz6nsLBQW+1D1G9ubm6cOHHikc6JiIigU6dOdOnSpYai\nEqJuk5ViIeoIXW8O8na2JvazgawYp8LaQokCsLZQSh5mHTVz5kySkpJQqVRMnz6dzMxMRo8eja2t\nLT4+PtpSdG3btmXu3Ln06tWLLVu2EBcXh6urK46OjowcOZLff/8dKO5KWLLX4+7du7Rt2xaA7Oxs\nxo4di6OjI+PGjaNnz56U3hMye/Zs7YbQknrRQvcedUIMxZPiixcv1kA0QjwdZFIsRB1RPoUBKl+l\nrWly2/npsGjRItq3b09cXBxLly4lNjaWFStWcPHiRX755ReOHz+uPdbExIRjx47xyiuvMH78eBYv\nXkx8fDwODg7MmTPnvq+zatUqmjRpQnx8PAEBAWXuEmRlZeHq6sq5c+fo3bs3a9eurbHrFY+mUaNG\nFdJq3n//fcLCwoDiN1VdunTB0dGRadOmceLECXbs2MH06dNRqVTaVuhCNCQyKRYNVkk+ZEpKCqNH\nj9Y+/uqrr+Lo6MiXX35Zq/F4O1vzxSgHWaUVj6VHjx60atUKPT09VCpVmVSbkm6D6enppKWlaetE\n+/r6PrC1dclkGsDe3h5HR0ftc0ZGRtpJV0kHQVH33bt3j23btnHhwgXi4+P59NNPcXNzw8vLi6VL\nl2rbugvR0EhOsWjwrKysCA8PB+DWrVucOHHigQ0haoq3s7VMgsV9lZTtu35dzb27WUTE3sSCit38\nCgoKtJ9X1W2wNAMDA4qKirsYlnQIhPt3JDQ0NNQ2bin/mqLuMjMzw8TEBH9/f4YOHaqTTZqi9pTk\nl6vVak6cOMFrr70GFG/QDQsL0949ELJSLARqtRp7e3sABg4cyJ07d1CpVERFRZGUlMTgwYNxcXHB\nw8ODS5cu6Tha0ZCV7jyoMFLyZ04Ws344z7HE1Ic639zcnCZNmhAVFQUUNzUpWTVu27atNjWi5E0i\nQK9evdi8eTMAFy9e5Pz589V5SaKaRMTexH3RIWxm7sZ90SEKizRl3ujA/97sGBgYcObMGV5++WUi\nIiIYPHiwrsIWtaAkv1ytVrNx40YdR1O3yUqxEKXs2LGDYcOGERcXB0D//v0JDg6mY8eOnD59mkmT\nJnHo0CEdRykaqtJl+/SVZhhbdyEp+B0WGSvxVHV4qDG+++47Jk6cSHZ2Nu3atSM0NBSAadOmMXbs\nWNavX0+/fv20x0+aNAlfX18cHR1xdnbG0dERc3Pz6r848djKNyu5mZZDXkERlzKMuXjxInl5eeTm\n5nLw4EF69epFZmYm2dnZvPTSS7i6utKhQ/HPTuPGjaWrYz1U0uhp5syZ/Pzzz6hUKnx9fenZs6f2\n//LRo0eZPHkyAAqFgsjISBo3bqzLsHVCOtqJBqvkF4VarWbYsGEkJCSU+TgzM5PmzZvTufP/Nrrl\n5eXx888/6zBq0ZCV7zxYQgFcK9dcpboUFhaSn5+PiYkJSUlJ9O/fnytXrmBkZFQjrycenfuiQxWa\n7/znyzG8MGcX7vf2sX37djp27IiRkRFeXl4MGjSIESNGkJubi0ajYdq0afj6+nL8+HHefvttjI2N\nCQ8Pl7zieqLkb92RI0dYtmwZu3btqnDM8OHDmTlzJu7u7mRmZmJiYoKBQf1ZN5WOdkJUoiQfMyUt\nh5z8QiJib6JqUvmxRUVFWFhYaFeNhdC1qjoP1mTZvuzsbPr27Ut+fj4ajYbVq1fLhLiOSSn3M1GY\n8wd6Jo1IScthyZIlLFmypMI5Z86cqfCYu7u7lGRroNzd3Zk6dSo+Pj6MGjWKVq1a6ToknZCcYtFg\nlM7H1AAaDcz64Tw/XrhV6fFmZmbY2NiwZcsWoHjD0blz52oxYiHK0kXZvsaNGxMdHc25c+eIj49n\nyJAhNfZa4vGUflNUkPEbt9ZPw6zHqFqrcS7qntI55iULQPczc+ZMvvnmG3JycnB1dW2w+2dkUiwa\njNL5mCVy8gv5OvKXKs/ZsGED3377LU5OTtjZ2bF9+/aaDlOIKknZPlGZ0m+WDBo3w3rCGlq4etd6\njXNRN1S1ABRzM6fKnPGkpCQcHByYMWMG3bp1a7CTYkmfEA1G+VuMz00t3mF/T2HOtYQEoHgHfsJ/\nPwawsbFh3759tRekEA8gZftEeSU/DyWpYVYWSqYP6iw/Jw1UVQtA4WpDTA0McHJyws/PjylTpmif\nX7FiBYcPH0ZfX58uXbo02DtCMikWDYYu8jGFEKI2yJslUaKqBaBbGflcO3iw0nNWrlxZ43E9DSR9\nQjQYdaWNshBCCFFTqlrokQWgB5NJsWgwJB9TCFEdwsLCeP/99ys8HhwczLp163QQkRD/IwtAj0/S\nJ0SDIrcYRV2wcOFCPvnkE12HIarZxIkTdR2CEJJj/gRkpVgIIWrZwoULdR1Cg6dWq7G1tcXf3x97\ne3t8fHw4cOAA7u7udOzYkTNnznDmzBnc3NxwdnbGzc2Ny5cvVxhn9+7dvPDCC9y9e5fAwECWLVsG\ngKenJzNmzKBHjx506tRJ21o7OzubsWPH4ujoyLhx4+jZsyfSzEpUN29na47P7Me1RUM5PrOfTIgf\nkqwUCyFEDfL29iY5OZnc3FwmT57ML7/8Qk5ODiqVCjs7OzZs2KDrEBusq1evsmXLFtasWUP37t3Z\nuHEjx44dY8eOHSxcuJB169YRGRmJgYEBBw4c4JNPPmHr1q3a87dt28by5cvZs2cPTZpU7AJUUFDA\nmTNn2LNnD3PmzOHAgQOsWrWKJk2aEB8fT0JCAiqVqjYvWQhxHzIpFkKIGhQSEkLTpk3Jycmhe/fu\nHD16lK+++ko6JepA6Y6WTTXpPGvVGgcHBwDs7Ozo378/CoUCBwcH1Go16enp+Pr6kpiYiEKhID8/\nXzvW4cOHiY6O5scff8TMzKzS1xs1ahQALi4uqNVqAI4dO8bkyZMBsLe3x9HRsQavWAjxKCR9Qggh\nqlnpblJOY6dg06kLrq6uJCcnk5iYqOvwGqTyDQ1u/5HLb7kabacvPT09jI2NtR8XFBQQEBBA3759\nSUhIYOfOneTm5mrHa9euHRkZGVy5cqXK1ywZT19fn4KCAqC4M6YQom6SSbEQQlSj0pOvnP/Ek3op\nGqNRC5kTtgdnZ+cyEytReypraKDRaFi6v2KecIn09HSsrYtzMcPCwso816ZNG3744QfGjx/PhQsX\nHjqOXr16sXnzZgAuXrzI+fPnH/pcIUTNkkmxEEJUo9KTr6K8bPRMniEPQ+as/z9OnToFgKGhYZlb\n8aLmlW9o8KDHAT7++GNmzZqFu7s7hYWFFZ7v3LkzGzZsYMyYMSQlJT1UHJMmTSI1NRVHR0cWL16M\no6Mj5ubmD3cRQogapdDFrZxu3bppZLetEKI+spm5m5LfqpqCfO78MJ/CzN8wbGpN978YEBgYyN69\ne9mxYwddu3aVjXa1xH3RoUo7WlpbKDk+s1+txVFYWEh+fj4mJiYkJSXRv39/rly5gpGRUa3FIERD\no1AoYjQaTbcHHScb7YQQohqVbieuMDCkxdg5QPHk68h/J1+enp4sXrxYZzE2RNMHdWbWD+fLpFDo\noqFBdnY2ffv2JT8/H41Gw+rVq2VCLEQdIekTQghRjaSbVN3k7WyNz3MZNE7/5Yk6WjZq1AgornNs\nb2//yHE0btyY6Ohozp07R3x8PEOGDHnkMeqitm3bcvfu3RoZW61Ws3HjxjKP+fv7c/HixfueFxER\n8cBjhChNJsVCCFGNpJ143VVw8wK+7fOkocFTprJJ8TfffEOXLl3ue55MisWjkkmxEEJUM+kmVbu8\nvb1xcXHBzs6ONWvWALBv3z66du2Kk5MT/fv3R61WExwczJdffolKpSIqKgo/Pz/Cw8O145SsAmdm\nZtK/f3+6du2Kg4MD27dvv+/re3h4lKk77e7uTnx8fA1cad1Q2de7xMN0CgS4d+8e3t7eODo64urq\nyt69e7G1tWXw4MEolUosLCxwcnJi586dDB06lL1799K0aVOWLl0KFKcgldR4btSoEbNnz8bJyQlX\nV1du377NiRMn2LFjB9OnT0elUpXZCBkYGKitJhIWFkZKSkotfNXE00ByioUQQjzVyjdIGTFiBG+/\n/TaRkZHY2Nhw7949mjZtysSJE2nUqBHTpk0D4Ntvv610PBMTE7Zt24aZmRl3797F1dUVLy8vFApF\npcf7+/sTFhbGihUruHLlCnl5efW6KUf5r/fLL79c5vkHdQqMiIjg888/x9nZmYiICA4dOsT777/P\n5cuXadasGQcOHODbb7+lVatWTJo0ieDgYDZt2kTTpk0xNDQsEwdAVlYWrq6uLFiwgI8//pi1a9fy\n6aef4uXlxbBhwxg9enSV1xIWFoa9vT1WVlY188USTxVZKRZCCPHUuV+DlDVr1tC7d29sbGwAaNq0\n6SONrdFo+OSTT3B0dOTFF1/k5s2b3L59u8rjx4wZw65du8jPzyckJAQ/P78nubQ6LygoSLsqW1lD\nGhsbGxwcHNDT06u0UyAUd/Z74403AOjXrx+///47rVq1Yvjw4UydOhVTU1MOHDiAjY0NrVu3BsDX\n15fIyEjt63h4eABgZGTEkiVLUKlU/Pvf/9aWPtywYQMbN24ss4IMxSvLSqWS8PBwoqOj8fHxQaVS\nkZNTdXk+0TDIpFgI8VSoyY084unyoAYpTk5OVa7qlmZgYEBRURFQPBH+888/geLJVGpqKjExMcTF\nxdGiRYv7Nl0xNTVlwIABbN++nc2bN/Paa69Vz4XWEaXfgNhPWM6m7Xs4efIk586dq7QhTUknP6i8\nUyAUf71/vHBLO+5vWX+Sk1/IzJkz+eabb8jLyyMmJobs7A2EB3kAACAASURBVOyHinHw4MHExcXx\n97//XVv3uaCggE6dOnHu3Dl69+7N2rVrAZg2bRrjxo1j9OjRdOvWjQ0bNhAXF4dSqXzir5V4usmk\nWAghHiAoKIjnn38eHx8fXYcieHCDlLy8PI4ePcrkyZNZtmwZ9+7dA4orP2RkZGjHadu2LTExMQBs\n375d21AlPT2dZ599FkNDQw4fPsz169cfGJO/vz8ffvgh3bt3f+SV6bqsfHvsO7/9TnKWgh8v/86l\nS5e0q7KPqtXzXQn4e7D2jY3G6Bl+u/0r05d8jYODA1DcSvv69eukpaWRkZHB+vXr6dOnT4Wx9PX1\nCQ0NJTAwkOvXr2tTLPT09OjUqRMALi4u2lVqIaoik2IhRJ1zv408WVlZDB06FCcnJ+zt7dm0aRMA\nBw8exNnZGQcHB9566y3y8vKqLZ5Vq1axZ88eabRRR5TuQqe0cUFTVERKyPtc2fMNrq6uNG/enDVr\n1rB582aWL1/OuHHjABg+fDjbtm3TbrR7++23OXr0KD169OD06dM888wzAPj4+BAdHa1dRbS1tX1g\nTC4uLpiZmfHmm2/WzEXrSPn22EobFwoLCvF5yYOAgABcXV0fa9w7Hb3IunmFlJD3+f3IdzTp+1cM\nm7Xmn8sXYWJiwubNm7G3t2fdunUEBgYSExPDjh07+OmXVNwXHeLUL7+RV1BEROxN9PT0iIyMxNra\nmpUrV2o31RkZGbFs2TKcnZ1JTU3VrlILURXpaCeEqHNKNkaVbOQ5evQoLi4uREdHc/ToUfbt26e9\nFZqeno6xsTEdO3bk4MGDdOrUifHjx9O1a1c++uijJ45l4sSJhISE0LlzZ1555RWSkpI4f/48BQUF\nBAYGMmLECF566SUWLVqEo6Mjzs7OjBw5ks8++4yAgADatGmDv7//E8ch/ud+3eleKjzJunXraN26\nNc2bN8fFxYUXX3yRiRMnkp2dTfv27QkJCaFJkybVGlNKSgqenp5cunQJPb36s95UukNjaQrg2qKh\n1TZuQfpt7oTPwfqvq6oct2TVumSS/p/lo+k8YxtTXJvw1iAXDAwMWLFiBWq1mhUrVtCoUSMyMzMB\nCA8PZ9euXdqqEyVKcpj79u372Nci6r6H7WhXf/7nCiGeavfbOFV6I4+DgwMHDhxgxowZREVFYW5u\nzuXLl7GxsdHeKi2/IedJBAcHY2VlxeHDh8nKyqJfv36cPXuWw4cPM336dLKysujduzdRUVH88ccf\nGBgYcPz4caB4M1HJZiBRfapqkDKqdR7ff/89sbGx/PDDD5w9exaA8ePHs3jxYuLj43FwcGDOnDnV\nGs+6devo2bMnCxYsqFcTYiju0Pgoj9fkuOVXrQFy8gtZGvYDKpUKZ2dntm7dyuTJkx86Dj8/PyZO\nnCgb7QQgk2IhRB3woI1TpTfydOrUiZiYGBwcHJg1axZz586ltu54/fjjjyxatAiVSoWnpye5ubn8\n5z//wcPDg8jISI4dO8bQoUPJzMwkOzsbtVpN587Sya66VdUgRT/1MiNHjsTU1BQzMzO8vLzIysoi\nLS1Nm4tanW+YSowfP57k5GTGjBlTrePWBTXVobH8uAbmLWg/8ev7jptS7u7Ac1OLa0wXtO9NQkIC\nsbGxREVFaauOlKwSA4wePbrCKjHAyy+/zOXLl2WjnQCkTrEQog6438apn8tt5ElJSaFp06a8/vrr\nNGrUiLCwMD7++GPUajVXr16lQ4cOVW7IeRQRsTdZuv8yKWk53ErPZU/8r2g0GrZu3Vphovvnn38S\nHR1Nu3btGDBgAHfv3mXt2rW4uLg8UQyiat7O1ng7W2u/T1M2xUFCIj2sjHQdWr1S0nim5P+ClYWS\n6YM6P3FDmscZ18pCWWnazJOuWgtRQibFQohalZyczPjx47l16xZ6enpMmDCBlLQO2ueVNi5kxO4l\nJeR9UptaV9jIc/78eaZPn46enh6GhoasXr0aExMTQkNDGTNmDAUFBXTv3p2JEyc+dozlcxcLijTM\n230RJyc3Vq5cycqVK1EoFMTGxuLs7IyRkRGtW7dm8+bNBAQEkJqayrRp07RNIkTNKP99yrPsxPbt\nK9j05nu8ZN+CnTt38s4779CkSROioqLw8PColjdMDU3JGxBdjzt9UOcy32+onlVrIUrIRjshRK36\n9ddf+fXXX+natSsZGRm4uLjwzNCZ/G7cosKx1hZKjs/sV+sxlt/IdWP1W7T0/RLr5k1wuhHBiRMn\n0Gg0tG3bll27dgEQEBDAwYMHOXHiBCkpKVhbWxMTE0PXrl1rPf6GorINd+knNpH782E8nJ+nVatW\ndOnSpcxGu3bt2hEaGlrtG+1E7Sh9B6e6Vq1F/fewG+1kUiyE0KkRI0bgPPgVNqU0qbAC9MUoB538\nwaupHfeietWV75NarWbw4MH06tWLU6dO4eTkxJtvvsnnn3/OnTt3tKX8PvroI3JyclAqlYSGhtK5\nc2c8PDxYuXIlKpUKAHd3d1avXl2v20QLUduk+oQQos5Tq9XExsYy1WdopRundLUCVFM77kX1qkvf\np6tXrzJ58mTi4+O5dOkSGzdu5NixYyxbtoyFCxdia2tLZGQksbGxzJ07l08++QQobvpRsgHsypUr\n5OXlyYRYCB2RnGIhhE5kZmby8ssvs2LFCszMzPB2Nqszt0Eld/HpUJe+TzY2NtpObHZ2dvTv3x+F\nQoGDgwNqtZr09HR8fX1JTExEoVBou+eNGTOGefPmsXTpUkJCQvDz86v12IUQxWRSLJ5qWVlZjB07\nlhs3blBYWEhAQAAdOnRg6tSpZGZmYmlpSVhYGC1btiQpKYn33nuP1NRUTE1NWbt2Lba2tvj5+WFm\nZkZ0dDS3bt1iyZIljB49WteXVq+UzwOc0q8dawPewcfHh1GjRuk6vApqase9qF66/D6V/pluqkkn\nT/O/8mJ6enoYGxtrPy4oKCAgIIC+ffuybds21Go1np6eAJiamjJgwAC2b9/O5s2bkdRCIXRHJsXi\nqbZv3z6srKzYvXs3UNzdbMiQIWzfvp3mzZuzadMmZs+eTUhICBMmTCA4OJiOHTuyatUqevXqxd27\nd4HizV/Hjh3j0qVLeHl5yaS4GpWvEHDj92z+6u9Pb/u2TJ06VcfRVa2mdtyL6qWL71P5n+nbf+SS\n+kcuEbE3q4wlPT0da+vi58rXy/X392f48OF4eHjQtGnTGo1dCFE1mRSLp5qDgwPTpk1jxowZDBs2\njCZNmpCQkMCAAQMAKCwspGXLlmRmZnLixAltcf3MzMwyDSG8vb3R09OjS5cu3L59WyfXUl+V70KV\nd/Mif5w/yKFUG+3mooULF/LSSy/pKkQhHkllndU0Gg1L91+uclL88ccf4+vry/Lly+nXr2xFFRcX\nF8zMzHjzzTdrLGYhxIPJpFjo3Lp161i2bBkKhQJHR0fmz5/PW2+9RWpqKs2bNyc0NJTnnnsOPz8/\nlEolx6LPkZikpsngDym6chT9IgUnTpzg+PHjDBgwAGtra5RKJXl5eXTs2JHQ0FCKiopQKpXk5uZi\naWlJ7969+eWXXygqKuKHH37QtuItKioiKyuLu3fvYmlpqeOvTP1QvguVSSs72szYhQKIk0oO4ilU\n/mfawLwFVn9dpX289Epw27ZtSUhIAIo30pWYN2/e/8ZLSaGoqIiBAwfWYNRCiAeR6hNCpy5cuMCC\nBQs4dOgQ586d4x//+Afvv/8+48ePJz4+Hh8fHz788EPt8Qm/pJA/KACzvn/l9ta50KEXjV5dTsrd\ndF5++WWioqJQq9UsWLCAn376CWdnZ2bOnImRkRFZWVlMmjSJqKgobt26xR9//IGenh7t2rXj2LFj\nABw4cAA9PT2ZEFejulQhQIjqUJ0/0+vWraNnz54sWLAAPT35kyyELsn/QKETEbE3cV90iN4frSTL\nqhvHkvMAaNq0KSdPnuS1114D4I033tBOWAFuW9iRW1CEYfO26D9jAUWFqEOmcP36Nf75z38ydOhQ\nTExM8PLyQqlUMmfOHOLi4rh06RJOTk7s2bMHlUrFyZMntWkSHTt25OjRowCEhIRgYCA3UKrT9EGd\nURrql3lMKjmIp1l1/kyPHz+e5ORkbWqXEEJ35K+/qHWlN6loNBoy8gqZ9cN5gErz8RQKhfbjtDwN\npv99TKFviLKdC8p2Ltzd/SWLPp+IsbExgwcP5t///neZMeLi4lAqlezbtw+AHTt2sGbNGgC2bNnC\nkCFDOHToEKdPnyYrK6uGrrxhkkoOor6Rn2kh6ieZFItaV3qTikkbJ1K3LSCz+wiW7r9M7zZK3Nzc\n+P7773njjTfYsGEDvXr10p7b5Bkj8ioZ09SoeNXG1dWV9957j6tXr9KhQweys7O5ceMGtra2XLt2\njaSkJNq3b19h0uzv78/rr7/OG2+8gb6+fiWvIJ6EVHIQ9Y38TAtR/0j6hKh1pTepGDVvg/kL47i9\ncSZnl/+VqVOnEhQURGhoKI6Ojqxfv55//OMf2uNHqKwqvW1pb20OQPPmzQkLC+PVV1/F0dERV1dX\nLl26hImJCWvWrGHo0KH06tWLNm3alBnDy8uLzMxM2f0thBBCNFAKjaayzvE1q1u3bhopUN5wuS86\nxM1yu7ehuLXv8Zn9KjmjrPKNIKrjtmV0dDRTpkwhKirqicYRQgghRN2iUChiNBpNtwcdJyvFotZV\ntknFWJNP3u4FODk5YW9vz6ZNmzh79ixubm44OTnRo0cPMjIyKCws5PjGFfy5dQaN98xifJNEvJ2t\nOXLkCJ6enowePRpbW1t8fHwoecMXExNDnz59cHFxYdCgQfz6668ABAUF0aVLF/7yl7/Qp08fvvji\ni1r/WgghdCctLY1Vq1YBxWXRpGmPEA2brBQLnSi/2tvL4Cr3Lp9l7dq1QHH3J2dnZzZt2kT37t35\n448/MDU1JSQkhDt37vDpp5+Sl5eHu7s7W7Zs4fr164wYMYILFy5gZWWFu7s7S5cupWfPnvTp06dM\nh7v9+/cTEhKClZUV165dw9jYmLS0NCwsLHT8VRFC1Ca1Ws2wYcO0dYSFEPXTw64Uy0Y7oRPld2//\nX74xN/fsp+l/O9NZWFjQsmVLunfvDoCZmRkAP/74I/Hx8YSHhwPFk+fExESMjIzo0aMHrVq1AkCl\nUqFWq7GwsKi0wx2Ao6MjPj4+eHt74+3tXavXL4TQvZkzZ5KUlIRKpaJjx478/PPPJCQkEBYWRkRE\nBIWFhSQkJPC3v/2NP//8k/Xr12NsbMyePXto2rQpSUlJvPfee6SmpmJqasratWuxtbVly5YtzJkz\nB319fczNzYmMjNT1pQohHoJMioVOlC7LBnDP0BLzV/9OXuNfmTVrFgMHDixTiq2ERqNh5cqVDBo0\nqMzjR44cwdjYWPu5vr4+BQUFaDQa7OzsOHnyZIWxdu/eTWRkJDt27GDevHlcuHBBahQL0YAsWrSI\nhIQE4uLitKvGJRISEoiNjSU3N5cOHTqwePFiYmNjmTJlCuvWreOjjz5iwoQJBAcH07FjR06fPs2k\nSZM4dOgQc+fOZf/+/VhbW5OWlqbDKxRCPArJKRY6UbosG0BBxm/kYcBZA3umTZvGqVOnSElJ4ezZ\nswBkZGRQUFDAoEGDWL16Nfn5+UBx29T71RXu3Lkzqamp2klxfn4+Fy5coKioiOTkZPr27cuSJUtI\nS0sjMzOzBq9YCFFXlDQP6rX4EL/czSIi9maFY/r27Uvjxo1p3rw55ubmDB8+HAAHBwfUajWZmZmc\nOHGCMWPGoFKpeOedd7T7Fdzd3fHz82Pt2rUUFhZWGLsuaNSoUaWPBwcHs27dOgD8/Py0d+WEaAhk\nWUzoREq56hP5qWruHAnlV4WCBc81Y/Xq1Wg0Gj744ANycnJQKpUcOHAAf39/1Go1Xbt2RaPR0Lx5\ncyIiIqp8HSMjI8LDw/nwww9JT0+noKCAjz76iE6dOvH666+Tnp6ORqNhypQpklMsRANQ/i5VQWER\ns344zxTXsv//S9950tPT036up6dHQUEBRUVFWFhYEBcXV+E1goODOX36NLt370alUhEXF0ezZs1q\n8Kqqz8SJE3UdghA6I5NioRNWFsoyZdlKOtOVL8t26tSpCucuXLiQhQsXlnnM09MTT09P7edfffWV\n9mOVSlVpTl/p9tFCiIah9F0qhZGSoj9zyMkv5OvIXx5pHDMzM2xsbNiyZQtjxoxBo9EQHx+Pk5MT\nSUlJ9OzZk549e7Jz506Sk5NrfVK8ZMkSTExM+PDDD5kyZQrnzp3j0KFDHDx4kNDQUABmz57Nrl27\nUCqVbN++nRYtWhAYGEijRo2YNm1amfFiYmKYOnUqmZmZWFpaEhYWpt2fIUR9IekTQicqK8umNNRn\n+qDOOopICNEQlL5Lpa80w9i6CynfTuLS9lWPPNaGDRv49ttvcXJyws7Oju3btwMwffp0HBwcsLe3\np3fv3jg5OVVb/A+rd+/e2rrr0dHRZGZmkp+fz7Fjx/Dw8CArKwtXV1fOnTtH7969tZV/KpOfn88H\nH3xAeHg4MTExvPXWW8yePbu2LkWIWiMrxUInylefqK4mHEIIcT/l71I195oOlG0e5Ofnh5+fn/YY\ntVqt/bj0czY2Nuzbt6/Ca/zwww/VH/gjcnFxISYmhoyMDIyNjenatSvR0dFERUURFBSEkZGRdmOh\ni4sL//d//1flWJcvX66yio8Q9YlMioXOeDtbyyRYiEeUlpbGxo0bmTRpkq5DeSpNH9S5TE4x1K+7\nVKVrwN9TmDNl3pe4ubnh6OjI4cOHSUpK4vnnn8fQ0FBb4aekWk9V7lfFR4j6RNInhBDiKVK6C5t4\ndN7O1nwxygFrCyUKileIvxjlUC/eoJdsIryZloMGULR8nu++/gp9qy54eHgQHByMSqWqtNzl/VRV\nxUeI+kZWioUQQscCAgKwtLRk8uTJQPEGqBYtWpCXl8fmzZvJy8tj5MiRzJkzp0zDiQEDBrB06VId\nR//0qa93qcqXujRuZUf6yc3svdOYz1u0wMTEBA8Pj0cet6oqPnZ2dtUZvhA6J22eRYOQlZXF2LFj\nuXHjBoWFhQQEBHD58mV27txJTk4Obm5ufP311ygUCjw9PXF2diYmJobU1FTWrVvHF198wfnz5xk3\nbhzz588H4F//+hdBQUH8+eef9OzZk1WrVqGvr/+ASERNCQoKYvXq1XTt2pUNGzY89HkrVqxgwoQJ\nmJqa1mB096dWqxk1ahQ//fQTRUVFdOzYkYULF3Lw4EG+/vprNBoNXl5efPzxxzz33HNlWhP7+fkx\nbNgwRo8erbP4Rd1gM3M3lf1FVwDXFg2t7XCEqDMets2zpE+IBmHfvn1YWVlx7tw5EhISGDx4MO+/\n/z5nz54lISGBnJwcdu3apT3eyMiIyMhIJk6cyIgRI/jnP/+pbf/622+/8fPPP7Np0yaOHz9OXFwc\n+vr6jzQRE9Vv1apV7Nmz55G/DytWrCA7O7uGono4bdu2pVmzZsTGxvLjjz/i7OzM2bNntR937dqV\nS5cukZiYqNM4Rd1mZaF8pMeFEGXJpFg0CA4ODhw4cIAZM2YQFRWFubk5hw8fpmfPnjg4OHDo0KEy\nOXJeXl7a8+zs7GjZsiXGxsa0a9eO5ORkDh48SExMDN27d0elUnHw4EF++eXR6pyK6jNx4kR++eUX\nvLy8WLx4MW5ubjg7O+Pm5sbly5eB4h3z06ZNw8HBAUdHR1auXElQUBApKSn07duXvn37Vls8ERER\nXLx4Ufu5p6cn0dHRqNVqbG1t8ff3x97enj4vjcTOfykmrbpw9FQMH8z8nGnTpmFubo5Go2HWrFkU\nFBQQERHB1atXMTQ0ZPDgwVy9epU33nhDO35kZCRubm60a9dOOpA1YFLqUognIznFol4rvRO7+Rtf\nkmf0H2bNmsXAgQP55z//SXR0NK1btyYwMJDc3FzteaW7V5XvbFVQUIBGo8HX15cvvvii1q9JVBQc\nHMy+ffs4fPgwRkZG/O1vf8PAwIADBw7wySefsHXrVtasWcO1a9eIjY3FwMCAe/fu0bRpU5YvX87h\nw4extLSstngiIiIYNmwYXbp0qfDc1atX2bJlCy+9+zmvDeuHwY1MWvgsIfvKCU7s/hJTEyPGjx+P\nSqUiICBA2yb40KFDzJkzh7179zJgwAD+8Y9/aMf89ddfOXbsGJcuXcLLy0tSKRooKXUpxJORSbGo\nt0q3cy3I+I3bysbs13TCe9Sb/BS5EwBLS0syMzMJDw9/pIlE//79GTFiBFOmTOHZZ5/l3r17ZGRk\n0KZNm5q6HPGQ0tPT8fX1JTExEYVCQX5+PgAHDhxg4sSJGBgU/9pr2rRpped7e3uTnJxMbm4ukydP\nZsKECTRq1IjJkydX6P51/fp13nrrLVJTU2nevDmhoaHcuHGDHTt2cPToUebPn8/WrVu5m5nHiL8t\nI/XnMxRpYOeZRHanWqDftBWFWWncWjeVoj+z0aBBr2lrrl27xt69eykoKODy5csMHjyYvLw8hgwZ\nQqdOnXB3d6d3794MGTJEG7Oenh5dunTh9u3btfOFFnVSfd1EKERtkPQJUW+V3omdn6rm13VTSVoz\niZXLl/Lpp5/y9ttv4+DggLe3N927d3+ksbt06cL8+fMZOHAgjo6ODBgwgF9//bUmLqNGvfTSS6Sl\npd33mM8++4wDBw481vhHjhzRNgioCRGxN3FfdAibmbu5lZ7LnvhfCQgIoG/fviQkJLBz507tHQCN\nRvNQpahCQkKIiYkhOjqaoKAgfvvttyq7f73//vuMHz+e+Ph4fHx8+PDDD3Fzc8PLy4ulS5cSFxfH\n+T9M+CU1i4ycPJ59+VP0GjVlwfx53EzLoSDtFnpGSlr6fknzUbMh/0+KzFpSVFTEmTNnCA8Pp127\nduzbt48pU6ZoJ/IbN24kISFBW3mi9N0MXWyeFkKI+kBWikW9Vbqdq7KdC8p2LkDxTuxu3brRrVs3\nbSWJ0o4cOaL92NPTE09Pz0qfGzduHOPGjavusGuFRqNBo9GwZ8+eBx47d+7cWojo0ZW+EwBQUKRh\n3u6LNPvPLYYPL14pCwsL0x4/cOBAgoOD8fT0LJM+0bhxYzIyMrTpE0FBQWzbtg2A5ORkEhMTq+z+\ndfLkSW33sjfeeIOPP/64QpxL91+mSKPBtJMbAAoDI/5Mu42+QkFh5m8UpN/m5tp3KEi7BYB5k2Yk\nJibSo0cPfv/9d65duwYU350YOXIkU6ZMoVmzZtr4hRBCVA9ZKRb1VkPfib18+XLs7e2xt7dnxYoV\nqNVqnn/+eSZNmkTXrl1JTk6mbdu23L17F4B58+Zha2vLgAEDePXVV1m2bBlQXPKrZPNW27Zt+fzz\nz+natSsODg5cunQJgDNnzlS6ua0mla/JCpCbX0h256HMmjULd3d3bT4ugL+/P8899xyOjo44OTmx\nceNGACZMmIBHvwGYt1fxl9e+YHnYVj5ZvZVz587h7OxMbm7uQ3f/qmwluuTNmULfUPuYpqiQQo0G\nBdDIcQDWb3+N9YQ1GDV/juWL5vPHH38QExPD6tWr6dSpEwB2dnbMnj2bPn364OTkxNSpUx//iydE\nAxMYGKj9nSZEVWSlWNRb9b2d6/3ExMQQGhrK6dOn0Wg09OzZkz59+nD58mVCQ0MrdESLjo5m69at\nxMbGUlBQQNeuXXFxcal0bEtLS3766SdWrVrFsmXL+Oabb7C1tSUyMrLC5raaVPpOAECrd0MAyMCc\na1euaB+fN28eAAYGBixfvpzly5eXOa91r1E0vtMRg/xCshNPUWCgJHDvVVJv3eTUqVP3jcHNzY3v\nv/+eN954gw0bNtCrVy8A7eozFL8JK0msMTBvwV98lvDrd1OwtlDy0gd/Y9O2HVBYQJs2bZm1Zj3D\nHFvSYtkyli1bpk3TKOHr64uvr2+Zx0qvhgNkZmbeN2YhhBCVk5ViUW/V53auD3Ls2DFGjhzJM888\nQ6NGjRg1ahRRUVG0adMGV1fXSo8fMWIESqWSxo0bM3z48CrHHjVqFFCcRqBWq4HizW1jxozB3t6e\nKVOm1EoL2Oq6E1B6xVlp44KmqIikr98l8PPPKv1alRYUFERoaCiOjo6sX79eWxHilVdeYenSpTg7\nO/N6F2P0yq0gKxTFb9q+mjudd0b0ofG+T0n/14eE/+OzKlehhRCPZsGCBXTu3JkXX3xRe/cqLi4O\nV1dXHB0dGTlyJL///jsASUlJDB48GBcXFzw8PLR3wbZs2YK9vT1OTk707t1bZ9ciaoesFIt6rSHt\nxC5dfo6EK3S3MqxwzDPPPFPpuY+yOatkU1fpNIKSzW3btm1DrVaXycOuKdV1J6D0irPCwJAWY+cU\nfwwc+W8XsNKrr6NHj9ZWKmnbti2HDh2qMKa7u3uZOsUtW+/Vfm+es/oLKw//pP25XLhwIQsXLixz\nfvlcdiHEo4mJieH777+vcPdr/PjxrFy5kj59+vDZZ58xZ84cbVfL4OBgOnbsyOnTp5k0aRKHDh1i\n7ty57N+/H2tr6wduShZPP1kpFqIeKNl0djMtBw2Qa9mJHdu3s+nEVbKysti2bRseHh5Vnt+rVy9t\npYbMzEx27979SK+fnp6OtXXFzW01qbruBNRG7rm3szXHZ/bj2qKhHJ/Zr8G8URNCV6Kiohg5ciSm\npqaYmZnh5eVFVlYWaWlp9OnTByhOR4qMjCQzM5MTJ04wZswYVCoV77zzjraakLu7O35+fqxdu7bM\nHgVRP8lKsRD1QPlNZ8Z/6YCpXX/eHDWAdpbP4O/vT5MmTao8v3v37nh5eeHk5ESbNm3o1q0b5ubm\nD/36H3/8Mb6+vixfvpx+/fo90bU8iuq4E9CQc8+FqE/K3i1LpIeV0UOdV1RUhIWFBXFxcRWeCw4O\n5vTp0+zevRuVSkVcXBzNmjWr7tBFHaHQRU3Lbt26aaKjo2v9dYWor2xm7qay/8kK4Np/UwAeJDMz\nk0aNGpGdnU3v3r1Zs2YNXbt2rdY466rSf0ylC5gQRxHl9gAAGVRJREFUT5/yJRrzbl3l970r+C7i\n/3jJvgVdu3blnXfeYf369Xz11Vd4eHgQGBhIeno6X375JW5ubkyZMoUxY8ag0WiIj4/HycmJpKQk\n2rdvD4CzszOhoaGoVCpdXqp4DAqFIkaj0XR70HGyUixEPWBloeRmuWoMJY8/rAkTJnDx4kVyc3Px\n9fVtMBNiaFi550LUR5XdLVN29sDPqy8ezs9r08e+++47Jk6cSHZ2Nu3atSM0NBSADRs28O677zJ/\n/nzy8/N55ZVXcHJyYvr06SQmJqLRaOjfvz9OTk46uT5RO2SlWIh6oPwqCRSnADSUahvVJSIigk6d\nOtGlSxddhyKEeATVcbdM1F8Pu1IsG+2EqAcacvm56hQREVGmaoQQ4unQ0Js1ieohK8VCiHpt3rx5\nbNiwgdatW2NpaYmLiwsjR47kvffeIzU1FVNTU9auXcu9e/cYNmwY5ubmmJubs3XrVnbv3k1wcDAG\nBgZ06dKF77//XteXI4SohNwtE/cjOcVCiAavqk59VdUk9fLyYtiwYdo6xIsWLeLatWsYGxtLjVIh\n6rCSia9smBVPQibFQoh6q3SnPoDhw4eTm5urrUlaIi8vr9LzHR0d8fHxwdvbG29v71qJWQjxeGTD\nrHhSMikWQtQr5Tv79bAyLvP8/WqSlrd7924iIyPZsWMH8+bN48KFCxgYyK9NIYSoj2SjnRCi3qjQ\n2a9ZR7bv3MnmU0naTn2mpqbY2NiwZcsWoLjF9blz5wBo3LgxGRkZQPHkOTk5mb59+7JkyRLS0tLK\ntHsWQghRv8ikWIiniLQZvb8KtUpbdsKkfQ98h3syatQobae+DRs28O233+Lk5ISdnR3bt28H4JVX\nXmHp0qU4OzuTmJjI66+/joODA87OzkyZMgULCwtdXZoQQogaJtUnhKhDvL29SU5OJjc3l8mTJzNh\nwgQaNWrE1KlT2b9/P3//+99RKpVMnTqVzMxMLC0tCQsLo2XLlroOvU6orFZp0Z856BspufBZ3wbX\nqU8IIUQtV59QKBTTgKVAc41Gc7c6xhSiIQoJCaFp06bk5OTQvXt3Xn75ZbKysrC3t2fu3Lnk5+fT\np08ftm/fTvPmzdm0aROzZ88mJCRE16HXCZV19vtt31eQdoOuEQYNrlOfEEKIh/fEk2KFQtEaGAD8\n58nDEaJhCwoKYtu2bQAkJyeTmJiIvr4+L7/8MgCXL18mISGBAQMGAMXpFLJK/D/TB3WuUKv0uZdn\nSq1SIYQQD1QdK8VfAh8D26thLCEanJJqCUnxp8k+sZW1G7cxzq0Dnp6e5ObmYmJigr6+PlC8KczO\nzo6TJ0/qOOqaU1hYqL3eRyW1SoUQQjyuJ5oUKxQKL+CmRqM5p1AoqikkIRqO0l2YivKyKTBQErj3\nKqm3bnLq1KkKx3fu3JnU1FROnjzJCy+8QH5+PleuXMHOzk4H0UNAQACWlpZMnjwZgNmzZ9OiRQvy\n8vLYvHkzeXl5jBw5kjlz5gCV50wDFfKmd+3axY4dOzAwMGDgwIEsW7bsoWOSWqV1Q9u2bYmOjsbS\n0lLXoQghxEN5YPUJhUJxQKFQJFTybwQwG/jsYV5IoVBMUCgU0QqFIjo1NfVJ4xaiXihdLUFp44Km\nqIikr98l8PPPcHV1rXC8kZER4eHhzJgxAycnJ1QqFSdOnKjtsLX++te/8t133wHFJcy+//57WrRo\nQWJiImfOnCEuLo6YmBgiIyOB4pzpmJgYoqOjCQoK4rfffgPQ5k2fPn2aLl26sG3bNi5cuEB8fDyf\nfvqpzq5PCCFEw/HAlWKNRvNiZY8rFAoHwAYoWSVuBfykUCh6aDSaW5WMswZYA8XVJ54kaCHqi5RS\nm8IUBoa0GFu8oqoAjiwaClChNq5KpdJOMnWtbdu2NGvWjNjYWG7fvo2zszNnz57lxx9/xNnZGSiO\nPzExkd69e1eaM92sWbMyedNmZmaYmJjg7+/P0KFDGTZsmM6uTzycrKwsxo4dy40bNygsLCQgIACA\nlStXsnPnTvLz89myZQu2trZkZWXxwQcfcP78eQoKCggMDGTEiBE6vgIhhHiC9AmNRnMeeLbkc4VC\noQa6SfUJIR5eZdUSSh6vy0p3jTNq7krA0q94pjCTt956i4MHDzJr1izeeeedMuccOXKEAwcOcPLk\nSUxNTbU500CZvGkDAwPOnDnDwYMH+f777/nqq684dOhQrV+jeHj79u3DysqK3bt3A5Cens6MGTOw\ntLTkp59+YtWqVSxbtoxvvvmGBQsW0K9fP0JCQkhLS6NHjx68+OKLPPPMMzq+CiFEQyfNO4TQoemD\nOqM0LLupTGmoz/RBnXUU0YNV6Bpn7cL/7d/P0eOnGDRoEIMGDSIkJES7wn3z5k3u3LlDeno6TZo0\nwdTUlEuXLlWaMw3FK8vp6em89NJLrFix4qHaMQvdcnBw4MCBA8yYMYOoqCjMzc0BGDVqFAAuLi6o\n1WoAfvzxRxYtWoRKpdK+MfrPf6R4kRBC96qlTjGARqNpW11jCdFQPI3VEsp3jVPoG2L0nAMG5hbo\n6+szcOBAfv75Z1544QWgeBPdv/71LwYPHkxwcDCOjo507ty50pxpgIyMDEaMGEFubi4ajYYvv/yy\nVq5LPJrSdwusLJTMDd2J4kYcs2bNYuDAgQAYGxsDoK+vT0FBAVBcQWXr1q107lx33/gJIRqmapsU\nCyEez9NWLSGlXLqHRlNEXspl6D5T+9jkyZO1FSlK27t3b6Vjls6bbtmyJWfOnKmmaEVNKF01BeB6\n8g3mp2eyeGxfpk1rRFhYWJXnDho0iJUrV7Jy5UoUCgWxsbHa/HMhhNAlSZ8QQjyS0vnOf979Dylf\nv41JGyfatOugw6hEbSp/tyA/Vc21byfjM7QPCxYsuG/FkICAAPLz83F0dMTe3l67KU8IIXRNodHU\nfiGIbt26aaKjo2v9dYUQT678KiEU50FL17j6Lzg4GFNTUz6/2IzK/nIogGv/rZoihBB1hUKhiNFo\nNN0edJykTwghHsnTmActnlxBQQETJ04E4OtFh57KqilCCHE/slIshBANSGU1hTt06MDUqVPJzMzE\n0tKSsLAwWrZsiaenJ25ubhw/fhwvLy8yMjJo1KgRHfq/yt++2U/K3n9SlJ2OwtAYq2EfsXzCS+Rf\nPcGcOXPQ19fH3Ny8ztTUFkI0XLJSLIQQooLKagoPGTKE7du307x5czZt2sTs2bMJCQkBIC0tjaNH\njwIQGBgIFN8t+OxsCM+PmszvBs1o/IcazdkwvFe/jcP4uezfvx9ra2vS0tJ0co1CCPE4ZFIshBB1\nUFhYGAMHDsTKyqpax3VwcGDatGnMmDGDYcOG0aRJExISEhgwYAAAhYWFtGzZUnv8uHHjKoyRmZlJ\n4vkYOv+5HPP/PpaXlweAu7s7fn5+jB07VlunWAghngYyKRZCiDooLCwMe3v7apkU36+m8IABA7Cz\ns+PkyZOVnltZp7mioiIsLCwqbawSHBzM6dOn2b17NyqViri4OJo1a/bE1yCEEDVNSrIJIUQtWb58\nOfb29tjb27NixQrUajX29vba55ctW0ZgYCDh4eFER0fj4+ODSqUiJ6fipraHVb4D4fXkG8zf/wuN\n7Poybdo0Tp8+TWpqqnZSnJ+fz4ULF+47ppmZGTY2NmzZsgUobshx7tw5AJKSkujZsydz587F0tKS\n5OTkx45dCCFqk6wUCyFELYiJiSE0NJTTp0+j0Wjo2bMnffr0qfTY0aNH89VXX7Fs2TK6dXvg3pD7\nqrSm8JZQfL7Tp4t1E1avXo2BgQEffvgh6enpFBQU8NFHH2FnZ3ffcTds2MC7777L/Pnzyc/P55VX\nXsHJyYnp06eTmJiIRqOhf//+ODk5PVH8QghRW2RSLIQQteDYsWOMHDlSm44watQooqKiavx1y3cg\nVLZzQdnOBQVwtlRN4cqqRBw5cqTM5yUb7QBsbGzYt29fhXN++OGHJ4pXCCF0RSbFQghRQ0rn8pJw\nhe5WhmWeT0tLo6ioSPt5bm5utcdgZaGUmsJCCPEQJKdYCCFqQPlc3lzLTuzYvp1NJ66SlZXFtm3b\nGDJkCHfu3OG3334jLy+PXbt2ac9v3LgxGRkZTxzH9EGdURrql3lMaajP9EGdn3hsIYSoT2SlWAgh\nakD5XF7jv3TA1K4/b44aQDvLZ/D396d79+589tln9OzZExsbG2xtbbXH+/n5MXHiRJRKJSdPnkSp\nfLyVXelAKIQQD0c62gkhRA2wmbmbyn67KoBrpXJ5hRBC1KyH7Wgn6RNCCFEDqsrZlVxeIYSom2RS\nLIQQNUByeYUQ4ukiOcVCCFEDJJdXCCGeLjIpFkKIGuLtbN2gJ8Genp4PbECycOFCPvnkk1qMSggh\nKifpE0II8V8RERFcvHhR12E0KAsXLtR1CEIIAcikWAghACgoKJBJ8WNSq9XY2tri6+uLo6Mjo0eP\nJjs7u8wx//73v3FwcMDe3p4ZM2YAMHPmTHJyclCpVPj4+OgidCGE0JJJsRCi3qhqcjZ37ly6d++O\nvb09EyZMoKQUpaenJ5988gl9+vRh8eLF7Nixg+nTp6NSqUhKStLx1TxdLl++zIQJE4iPj8fMzIxV\nq1Zpn0tJSWHGjBkcOnSIuLg4zp49S0REBIsWLUKpVBIXF8eGDRt0GL0QQsikWAhRz1Q2OXv//fc5\ne/YsCQkJ5OTklOkcl5aWxtGjR5k9ezZeXl4sXbqUuLg42rdvr8OrePq0bt0ad3d3AF5//XWOHTum\nfe7s2bN4enrSvHlzDAwM8PHxITIyUlehCiFEpWSjnRCiXik/OQsKCsLGxoYlS5aQnZ3NvXv3sLOz\nY/jw4QCMGzdOl+E+tSJib2orazTVpJObX1TmeYVCof1YF02ihBDiUclKsRDiqRYRexP3RYewmbmb\nl1efqHRyNmnSJMLDwzl//jxvv/02ubm52uefeeaZ2g75qRcRe5NZP5znZloOGuD2H7mk3rrJorAd\nQHH+cK9evbTH9+zZk6NHj3L37l2SkpL48MMPSUhIwM7Ojry8PP744w+SkpIYPHgwLi4ueHh4cOnS\nJQoLC2nXrh0ajYa0tDT09PS0K8weHh5cvXpVF5cvhKinZFIshHhqPcrkzNLSkszMTMLDw6scr3Hj\nxmRkZNRG6E+1pfsvk5NfWOYxw2atWbF6LY6Ojty7d493331X+1zLli354osv6Nu3L0OGDCEnJ4cl\nS5Zw4cIF2rdvj62tLe7u7qxcuZKYmBiWLVvGpEmT0NfXp1OnTly8eJFjx47h4uJCVFQUeXl53Lhx\ngw4dOtT2pWulpaWVyZsWQjz9JH1CCPHUut/kbOPyT+nYsSPvvvsuv//+Ow4ODrRt25bu3btXOd4r\nr7zC22+/TVBQEOHh4ZJXXIWUtJyKDyoUKPtOJH7RUO1DR44c0X782muv8dprr6FWqxkwYAAqlQqA\nN998k/z8fBYsWMCYMWO0x+fl5QHFK8KRkZFcu3aNWbNmsXbtWvr06XPf72NtKJkUT5o0SadxCCGq\nj0yKhRBPrYednM2fP5/58+dXOLT0pA3A3d1dSrI9BCsLJTcr+dpbWSgrPb58/nGe5n/tr/X19bl9\n+zYWFhbExcVVONfDw4Pg4GBSUlKYO3cuS5cu5ciRI/Tu3bv6LugxzJw5k6SkJFQqFc7OzowcORIv\nLy9GjhxJkyZNCAkJ4dtvv+XatWvMnz+f5cuXExISAoC/vz8fffSRTuMXQlQk6RNCiKdWVZOwqh4X\n1WP6oM4oDf83sTUwb0H7iV8zfVDnCsdWluJy+49cImJvao8xMzPDxsaGLVu2AMUb886dOwcU5yOf\nOHECPT09TExMUKlUfP3113h4eNTsRT7AokWLaN++PXFxcQwaNIioqCgAbt78//buN7bqq47j+Ocb\nwHpLuzYGRSmNEkBia21625R/tuqmMrUgLSVBo7FRwgNQt0QwzD3kAVuaaB+IIdSGGHYTA+naJkPL\n0PqACjSWFdzGxjIW/6xgBIquGP7Y9fjgtk2B27Uz9J7fj/N+PeL+euF+LjkhH87vnPMbnPiPVW9v\nr2pqanTmzBkdPHhQfX19On36tFpbWzUwMOAzPoAMKMUAYuv9lDM8OBsrirS3oUxFhQmZpKLChPY2\nlGV8pHWmJS7OOTUfu3DXtVQqpba2NpWXl6u0tFRdXV2SpJycHBUXF2vVqlWS0jPHw8PDKisrm50v\nN43xjZ2ffbZHb139jzoHBlVTU6MTJ07o/PnzKikp0cKFC3X58mWdOnVKa9asUW9vr+rr6zV//nzl\n5eWpoaFhokQDiA6WTwCIrfESNn5rflFhQrvWrchYzvBgbawomtHf871LXOYWLNSi7/1i4vrOnTsn\nftbd3Z3xz5hcIMfXJvswPus9XvJH3h3VU8+/rL0NZbp+/bq6u7tVW1uroaEhHT58WHl5ecrPz+dI\nOiAmKMUAYm2m5Qx+vN/1x1E2edbbPpDQ6J2buvnfd9V87IJWr16tlpYW9fT06Nq1a2psbFRjY6Mk\nqba2Vk1NTdq9e7ecc+ro6NChQ4d8fhUAGbB8AgAwa+5d4iJJiXlzYrnEZfKs95zEI8opKtGltu16\npWOfampqNDIyomXLlimZTGpoaGhi3XMymVRTU5Oqq6u1cuVKbd26VRUVFb6+BoApmI/bOlVVVa6/\nvz/rnwsAyL7Jp0/EeYnL2md6Ms56FxUm9Mfdj3pIBGAmzOyMc65quvexfAIAMKseliUuu9atuGtN\nsRTfWW8A96MUAwAwA2zsBB5ulGIAAGboYZn1BnA/NtoBCEJnZydPqwMATIlSDCAIlGIAwHvh9AkA\nsbVnzx6lUikVFxdrwYIFqqysVH19vXbs2KErV64oNzdXra2tGhoaUl1dnQoKClRQUKD29nYtXbrU\nd3wAQBZw+gSAh1p/f7/a29s1MDCgkZERJZNJVVZWatu2bdq/f7+WL1+uvr4+bd++XT09PdqwYYPq\n6uomHqgAAMBklGIAsTH5vFu98htVV39BiUT6yWjr16/XrVu3dPLkSW3evHni99y+fdtXXABAjFCK\nAcRC58DgXWfEvnPzjn7/+r/UOTA4cRrA6OioCgsLdfbsWZ9RAQAxxEY7ALHQfOzCXQ9NyFlcouE3\n+vTsCy/rxo0bOnr0qHJzc7VkyRIdOXJEkuSc07lz5yRJ+fn5Gh4e9pIdABB9lGIAsXDpnsfr5nzs\nk0osq1Z/y1Y1NDSoqqpKBQUFSqVSamtrU3l5uUpLS9XV1SVJ2rJli5qbm1VRUaGLFy/6+AoAgAjj\n9AkAsbD2mR4N3lOMR+/cVPFHPqTjP1yl2tpaHThwQMlk0lNCAEAUzfT0CWaKAcTCrnUrlJg3565r\n/35xny4d/IGSyaQ2bdpEIQYA/N/YaAcgFsY3042fPrGoMKGWQ8/xyF0AwANBKQYQGxsriijBAIBZ\nwfIJAAAABI9SDAAAgOBRigEAABA8SjEAAACCRykGAABA8CjFAAAACB6lGAAAAMGjFAMAACB4lGIA\nAAAEj1IMAACA4FGKAQAAEDxKMQAAAIJHKQYAAEDwKMUAAAAIHqUYAAAAwaMUAwAAIHiUYgAAAASP\nUgwAAIDgUYoBAAAQPEoxAAAAgkcpBgAAQPAoxQAAAAgepRgAAADBoxQDAAAgeJRiAAAABI9SDAAA\ngOCZcy77H2p2RdJfs/7B8bBA0lXfIRB5jBNMhzGCmWCcYDoPwxj5uHPuw9O9yUspxtTMrN85V+U7\nB6KNcYLpMEYwE4wTTCekMcLyCQAAAASPUgwAAIDgUYqj54DvAIgFxgmmwxjBTDBOMJ1gxghrigEA\nABA8ZooBAAAQPEpxhJnZTjNzZrbAdxZEj5k1m9nrZvZnM+sws0LfmRANZva4mV0wszfNbLfvPIgW\nMys2sz+Y2Wtm9qqZPeE7E6LJzOaY2YCZveA7SzZQiiPKzIolfUnS33xnQWQdl/Rp59xnJL0h6SnP\neRABZjZH0j5JX5FUIukbZlbiNxUiZkTSj5xzn5K0StIOxgim8ISk13yHyBZKcXT9TNKPJbHoGxk5\n5150zo2MvTwtabHPPIiMaklvOufecs7dkfRrSV/3nAkR4py77Jx7aezXw0qXniK/qRA1ZrZY0tck\n/dJ3lmyhFEeQmW2QNOicO+c7C2Lju5J+6zsEIqFI0t8nvX5bFB5Mwcw+IalCUp/fJIigFqUn50Z9\nB8mWub4DhMrMfifpoxl+9LSkn0j6cnYTIYrea5w457rG3vO00rdDU9nMhsiyDNe444T7mFmepHZJ\nTzrn3vGdB9FhZnWS/umcO2Nmn/edJ1soxZ44576Y6bqZlUlaIumcmUnpW+IvmVm1c+4fWYyICJhq\nnIwzs+9IqpP0mON8RaS9Lal40uvFki55yoKIMrN5ShfilHPued95EDlrJW0ws69K+qCkR8zsOefc\ntzznmlWcUxxxZvYXSVXOuau+syBazOxxST+V9Dnn3BXfeRANZjZX6Y2Xj0kalPQnSd90zr3qNRgi\nw9IzLr+SNOSce9J3HkTb2EzxTudcne8ss401xUB8/VxSvqTjZnbWzPb7DgT/xjZffl/SMaU3UB2m\nEOMeayV9W9KjY/92nB2bEQSCxkwxAAAAgsdMMQAAAIJHKQYAAEDwKMUAAAAIHqUYAAAAwaMUAwAA\nIHiUYgAAAASPUgwAAIDgUYoBAAAQvP8B5RmyK9taGNkAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 864x864 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Queremos plotear sólo las 250 primeras palabras más usadas.\n",
"displaytopnwords = 250\n",
"\n",
"fig, ax = plt.subplots()\n",
"ax.scatter(tsneXY[:displaytopnwords, 0], tsneXY[:displaytopnwords, 1])\n",
"\n",
"for i in range(displaytopnwords):\n",
" ax.annotate(intToWord[i], (tsneXY[i, 0], tsneXY[i, 1]))\n",
"\n",
"fig.set_size_inches(12, 12)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Resulta complicado visualizar grupos de palabras que decanten la naturaleza de una reseña como positiva o negativa. A pesar de ello, parece que nuestro modelo es capaz de aprender los sentimientos de una reseña."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.5"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment